- •3. Исполнительная среда.
- •3.1. Состав прикладных регистров
- •3.1.1 Резервируемые и игнорируемые регистры и поля
- •3.1.2. Основные регистры.
- •3.1.3. Регистры с плавающей точкой
- •3.1.4. Предикатные регистры
- •3.1.5. Регистры переходов
- •3.1.6. Указатель инструкций.
- •3.1.7. Маркер текущего окна
- •3.1.8. Прикладные регистры
- •3.1.8.1. Регистры ядра (kr0-7 –ar0-7)
- •3.1.8.2. Регистр конфигурации стека регистров (rsc–ar16)
- •3.1.8.3. Указатель вспомогательной памяти rse(bsp–ar17)
- •3.1.8.10. Предыдущее функциональное состояние (pfs–ar64)
- •3.1.8.11. Регистр счетчика цикла (lc–ar65)
- •3.1.8.12. Регистр счетчика эпилога (ec–ar66)
- •3.1.9. Регистры данных мониторинга производительности (pmd)
- •3.1.10 Маска пользователя (um)
- •3.1.11. Регистры идентификации процессора
- •3.2. Память
- •3.2.1. Модель адресации прикладной памяти
- •3.2.2. Адресация блоков и выравнивание
- •3.2.3. Упорядочивание байтов
- •3.3. Обзор кодирования инструкций
- •3.4. Рассмотрение последовательности инструкций
- •3.4.1. Специальные случаи зависимости raw
- •3.4.2. Специальные случаи зависимости waw
- •3.4.3. Специальные случаи зависимости war
- •3.4.4. Поведение процессора при нарушениях зависимости
- •3.5. Неопределенное поведение
3.3. Обзор кодирования инструкций
Каждая инструкция классифицируется в один из шести типов; каждый тип инструкции может выполняться на одном или нескольких типах исполнительных устройств. В табл.3.9 дан список типов инструкций и типы исполнительных устройств, на которых они выполняется.
Табл.3.9. Взаимосвязь между типом инструкции и типом исполнительного модуля.
|
Тип инструкции |
Описание |
Тип исполнительного устройства |
|
A |
Целочисленная, АЛУ |
I-unit или M-unit |
|
I |
Целочисленная, не АЛУ |
I-unit |
|
M |
Память |
M-unit |
|
F |
С плавающей точкой |
F-unit |
|
B |
Ветвление (Branch) |
B-unit |
|
L+X |
Расширенная (extended) |
I-unit или B-unit |
Инструкции объединяются по три в 128-битные, выровненные контейнеры называемые связками(bundle). Каждая связка содержит три 41-битныхслота(slot) и 5-битное поле шаблона. Формат связки изображен на рис.3.15.
|
127 |
87 |
86 |
46 |
45 |
5 |
4 |
0 |
|
слот инструкции 2 |
слот инструкции 1 |
слот инструкции 0 |
шаблон | ||||
|
41 |
41 |
41 |
5 | ||||
Рис.3.15. Формат связки.
В процессе выполнения, архитектурные остановки (stops-стопы) в программе показывают, что одна или несколько инструкций перед стопом могут иметь определенные типы ресурсных зависимостей с одной или несколькими инструкциями после стопа. В табл. 3.10, стоп показан в виде двойной линии справа от слота, после которого делается стоп. Например, шаблон 00 не имеет стопов, а шаблон 03 имеет стоп после первого слота и перед вторым слотом.
Дополнительно, для локализации стопов, поле шаблона задает схему слотов инструкций для типов исполнительных устройств. Не все возможные схемы инструкций для устройств являются допустимыми. Табл.3.10 показывает заданные комбинации. Три правых колонки соответствуют трем слотам инструкций в связке. В каждой колонке написан тип исполнительного устройства управляющего этим слотом инструкции.
Табл.3.10. Код поля шаблона и схема слотов инструкций.
|
Шаблон |
Слот 0 |
Слот 1 |
Слот 2 |
|
00 |
M-unit |
I-unit |
I-unit |
|
01 |
M-unit |
I-unit |
I-unit |
|
02 |
M-unit |
I-unit |
I-unit |
|
03 |
M-unit |
I-unit |
I-unit |
|
04 |
M-unit |
L-unit |
X-unit a |
|
05 |
M-unit |
L-unit |
X-unit a |
|
06 |
|
|
|
|
07 |
|
|
|
|
08 |
M-unit |
M-unit |
I-unit |
|
09 |
M-unit |
M-unit |
I-unit |
|
0A |
M-unit |
M-unit |
I-unit |
|
0B |
M-unit |
M-unit |
I-unit |
|
0C |
M-unit |
F-unit |
I-unit |
|
0D |
M-unit |
F-unit |
I-unit |
|
0E |
M-unit |
M-unit |
F-unit |
|
0F |
M-unit |
M-unit |
F-unit |
|
10 |
M-unit |
I-unit |
B-unit |
|
11 |
M-unit |
I-unit |
B-unit |
|
12 |
M-unit |
B-unit |
B-unit |
|
13 |
M-unit |
B-unit |
B-unit |
|
14 |
|
|
|
|
15 |
|
|
|
|
16 |
B-unit |
B-unit |
B-unit |
|
17 |
B-unit |
B-unit |
B-unit |
|
18 |
M-unit |
M-unit |
B-unit |
|
19 |
M-unit |
M-unit |
B-unit |
|
1A |
|
|
|
|
1B |
|
|
|
|
1C |
M-unit |
F-unit |
B-unit |
|
1D |
M-unit |
F-unit |
B-unit |
|
1E |
|
|
|
|
1F |
|
|
|
a. Шаблон MLX формально называется MLI, а для совместимости X-слот может содержать код break.i или nop.i в дополнение к любой X-инструкции.
Расширенные инструкции, использующиеся для длинных целочисленных инструкций и инструкций дальних переходов, занимают два слота инструкций. В зависимости от основного кода операции, расширенные инструкции выполняются в устройстве B(длинныеbranch/call) или в устройствеI(все другиеL+Xинструкции).
