- •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.4. Указатель вспомогательной памяти для сохранений памяти (bspstore – ar18)
- •3.1.8.5. Сборный регистр NaT для rse (rnat – ar19)
- •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.11. Регистр счетчика цикла (lc – ar65)
Loop Counter Register. LC – это 64-битный регистр используемый в счетных циклах. Значение LC уменьшается при переходах типа счетный цикл.
3.1.8.12. Регистр счетчика эпилога (ec – ar66)
Epilog Counter Register. EC – это 6-битный регистр используемый для подсчета финальных стадий (эпилогов) в модульно- планируемых циклах. См. раздел 4.5.1 «Поддержка модульно планируемых циклов». На рис.3.8. показана схема регистра EC.
63 |
6 |
5 |
0 |
ignore |
Счетчик эпилогов |
||
58 |
6 |
||
Рис.3.5. Формат регистра счетчика эпилогов.
3.1.9. Регистры данных мониторинга производительности (pmd)
Performance Monitor Data Registers. Набор регистров данных мониторинга производительности может быть конфигурирован привилегированной программой так, чтобы стать доступным на всех уровнях привилегий. Данные мониторинга производительности могут быть получены прямо внутри приложения. Операционной системе разрешается защитить созданную пользователем конфигурацию мониторинга производительности. При чтении, защищенные счетчики производительности возвращают ноль, несмотря на текущий уровень привилегий. Мониторы производительности могут быть записаны только при большем уровне привилегий. Детальнее см. часть 7 «Отладка и мониторинг производительности» во втором томе. Мониторы производительности могут использоваться для сбора информации о производительности при выполнении любого набора инструкций и Itanium, и IA-32.
3.1.10 Маска пользователя (um)
User Mask. Маска пользователя – это доступное для всех прикладных программ подмножество регистра состояния процессора (Processor Status Register). Маска пользователя управляет выравниванием доступной памяти, байтовым упорядочиванием и пользовательской конфигурацией мониторов производительности. Здесь также записывается модификация состояний регистров с плавающей точкой. На рис. 3.9 показан формат маски пользователя, а в табл. 3.6 описаны поля маски пользователя. Детальнее о PSR можно посмотреть в разделе 3.3.2 «Регистр Состояния Процессора (PSR)» во втором томе.
5 |
4 |
3 |
2 |
1 |
0 |
mfh |
mfl |
ac |
up |
be |
reserv |
1 |
1 |
1 |
1 |
1 |
1 |
Рис.3.9. Формат маски пользователя
Табл.3.6. Описание полей маски пользователя.
Поле |
Бит |
Описание |
reserv |
0 |
Резервировано |
be |
1 |
Возможность доступа к памяти по возрастанию (управляет загрузкой и восстановлением, но не доступом RSE памяти) 0: обращения делается по убыванию 1: обращения делается по возрастанию Этот бит игнорируется при доступе к памяти данных типа IA-32. Ссылки данных IA-32 всегда выполняются по убыванию. |
up |
2 |
Доступ пользователя к мониторингу производительности (включая IA-32) 0: мониторинг производительности не доступен пользователю 1: мониторинг производительности доступен пользователю |
ac |
3 |
Проверка выравнивания для обращений к памяти данных (включая IA-32) 0: не выравненность обращений к памяти данных может вызвать ошибку «Ссылка на не выровненные данные» 1: все, не выровненные обращения к данным памяти, вызывают ошибку «Ссылка на не выровненные данные» |
mfl |
4 |
Запись младших (f2…f31) регистров с плавающей точкой. Этот бит устанавливается в 1, если завершена Itanium инструкция, которая использует регистр f2…f31 в качестве приемника. Этот бит замещается и просто очищается при явной записи маски пользователя. Об условиях, при которых этот бит устанавливается инструкциями IA-32, см. раздел 3.3.2 второго тома. |
mfh |
5 |
Запись старших (f32…f127) регистров с плавающей точкой. Этот бит устанавливается в 1, если Itanium инструкция, которая использует регистр f32…f127 в качестве приемника, завершена. Этот бит замещается и просто очищается при явной записи маски пользователя. Об условиях, при которых этот бит устанавливается инструкциями IA-32, см. раздел 3.3.2 второго тома. |
