
- •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.1.8.1. Регистры ядра (kr0-7 –ar0-7)
Kernel Registers. Восемь видимых пользователю 64-битных регистров обеспечивающих передачу информации от операционной системы в приложение. Эти регистры могут быть прочитаны на любом уровне привилегий, но запись возможна только на привилегированном уровне. Кроме того, если выполняется набор инструкцияIA-32, тоKR0-KR2 используются для хранения дополнительных регистров состоянияIA-32. Детализацию регистров при вызове кодаIA-32, см. в разделе 10.1 «Переключение набора инструкций» во втором томе.
3.1.8.2. Регистр конфигурации стека регистров (rsc–ar16)
Register Stack Configuration Register. Регистр конфигурации – это 64-битный регистр, используемый для управления работой механизма стека регистров (Register Stack Engine – RSE). Детальнее см. главу 6 «Механизм стека регистров» во втором томе. ФорматRSCпредставлен на рис.3.3, а описание полей входящих в его состав дано в табл.3.4. Инструкции, которые модифицируютRSC, не могут изменить поле уровня привилегий так, чтобы он стал более привилегированным, чем текущий выполняемый процесс.
63 |
30 |
29 |
15 |
14 |
5 |
4 |
3 |
2 |
1 |
0 |
reserv |
loadrs |
reserv |
bl |
pr |
mode | |||||
34 |
14 |
11 |
1 |
2 |
3 |
Рис.3.3. Формат RSC.
Таблица 3.4. Описание полей RSC
Поле |
Биты |
Описание | |||
mode |
1:0 |
Режим RSE – задает, насколько агрессивно RSE сохраняет и восстанавливает окна регистров. Задает активность и интенсивность установок. | |||
Набор битов |
Режим RSE |
Бит0: активность загрузки |
Бит1: активность запоминания | ||
0 0 |
Ленивое слежение |
Запрещена |
Запрещена | ||
1 0 |
Интенсивная загрузка |
Разрешена |
Запрещена | ||
0 1 |
Интенсивное запоминание |
Запрещена |
Разрешена | ||
1 1 |
Активность |
Разрешена |
Разрешена | ||
pr |
2:3 |
Уровень привилегий RSE. Загрузки и восстановления, выдаваемые RSE, делаются на этом уровне привилегий | |||
bl |
4 |
Режим упорядочивания (endian). Загрузки и восстановления, выдаваемые RSE, использует его для упорядочивания байт (0: по убыванию; 1: по возрастанию) | |||
|
14:5 |
Зарезервировано | |||
loadrs |
29:15 |
Дистанция загрузки RSE до точки разрыва. Значение используется в инструкции loadrs для синхронизации RSE и точки разрыва | |||
|
63:30 |
Зарезервировано |
3.1.8.3. Указатель вспомогательной памяти rse(bsp–ar17)
RSE Backing Store Pointer. Является 64-битным только читаемым регистром (рис.3.4). Он содержит адрес места в памяти, где находится место хранения дляGR32 в текущем стековом окне. См. раздел 6.1. «ОбзорRSEи внешней памяти» во втором томе.
63 |
3 |
2 |
0 |
Указатель |
0 | ||
61 |
3 |
Рис.3.4. Формат регистра BSP.
3.1.8.4. Указатель вспомогательной памяти для сохранений памяти (BSPSTORE–AR18)
Backing Store Pointer for Memory Stores. Является 64 битным регистром (рис.3.5). Он содержит адрес места в памяти, кудаRSEбудет сливать следующее значение. См. раздел 6.1. «ОбзорRSEи внешней памяти» во втором томе.
63 |
3 |
2 |
0 |
Указатель |
ignore | ||
61 |
3 |
Рис.3.5. Формат регистра BSPSTORE.
3.1.8.5. Сборный регистр NaTдляRSE(RNAT–AR19)
RSE NaT Collection Register. Является 64 битным регистром (рис.3.6), который используетсяRSEдля временного храненияNaTбитов, когда он освобождает основные регистры. Бит 63 всегда читается как 0 и игнорируется при записи. См. раздел 6.1. «ОбзорRSEи внешней памяти» во втором томе.
63 |
0 |
ign |
RSE NaT Collection |
1 |
63 |
Рис.3.6. Формат регистра RNAT
3.1.8.6. Регистр значения сравнения и обмена (CCV–AR32)
Compare and Exchange Value Register. Является 64 битным регистром, содержащим значение сравнения, которое используется как третий исходный операнд вItaniumинструкцииcmpxchg.
3.1.8.7. Сборный регистр NaTпользователя (UNAT–AR36)
User NaT Collection Register. Является 64 битным регистром, используемым для временного храненияNaTбитов при сохранении и восстановлении основных регистров с помощью инструкцийld8.fillиst8.spill.
3.1.8.8. Регистр состояния с плавающей точкой (FPSR–AR40)
Floating-point Status Register. Этот регистр управляет ловушками, режимами округления, точностью, флагами и другими управляющими битами для инструкцийItaniumс плавающей точкой. РегистрFPSRне управляет и не отражает состояние инструкцийIA-32 с плавающей точкой. Детальнее см. раздел «Регистр состояния с плавающей точкой».
3.1.8.9. Счетчик интервала времени (ITC–AR44)
Interval Time Counter. Это 64-битный регистр, который подсчитывает количество «тиков» частоты процессора. Приложения могут прямо считыватьITCдля вычислений связанных со временем и для измерения производительности. Системные программы могут закрыть не привилегированный доступ к подсчету интервала времени. В случае такого закрытия, чтениеITCс уровнем привилегий ниже, чем был у закрывшей программы, вызовет ошибку «Привилегированный регистр». РегистрITCможет быть изменен только при большем уровне привилегий. Имеющийся вIA-32 регистрTSC(TimeStampCounter), является эквивалентомITC. РегистрITCможет быть прямо прочитан с помощьюIA-32 инструкции rdtsc (read time stamp counter). Системные программы могут закрытьITCдля непривилегированногоIA-32 доступа. В этом случае,IA-32 чтениеITCс уровнем привилегий ниже, чем был у закрывшей программы, вызоветIA-32 ошибкуGP(GeneralProtection).