
- •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.11. Регистры идентификации процессора
Processor Identification Registers. Информация, идентифицирующая процессор на уровне приложения доступна в файле регистров называемомCPUID. Этот файл делится на фиксированную область (регистры от 0 до 4) и изменяемую область (регистры с 5 и далее). ПолеCPUID[3].numberпоказывает максимальный номер 8-байтного регистра содержащего информацию, специфицирующую процессор.
Регистры CPUIDявляются не привилегированными и доступны косвенно, с помощью инструкцииmov. Все регистры, следующие за регистром указанным в полеCPUID[3].number, являются резервированными, и обращение к ним вызывает ошибку «Резервированный регистр/поле». Запись запрещена и не существует инструкций для такого действия.
Информация о поставщике находится в CPUIDрегистрах 0 и 1, она задает имя поставщика в кодеASCIIдля реализованного процессора (рис.3.10). Все байты после конца строки и до 16-го байта содержат нули. ПервыеASCII-символы размещаются в регистре с меньшим номером и в байтах с меньшим номером.
|
64 |
|
|
|
|
|
|
0 |
CPUID[0] |
|
|
|
|
|
|
|
Байт 0 |
|
|
|
|
|
|
|
|
|
CPUID[1] |
Байт 15 |
|
|
|
|
|
|
|
|
|
|
|
64 |
|
|
|
Рис.3.10. CPUIDрегистры 0 и 1 – информация о поставщике.
Регистр CPUID[2] – это игнорируемый регистр (чтение из него возвращает 0).
Регистр CPUID[3] содержит несколько полей показывающих информацию о версии семейства для реализованного процессора. Рис. 3.11 и табл.3.7 задают описание всех полей.
63 |
40 |
39 |
32 |
31 |
24 |
23 |
16 |
15 |
8 |
7 |
0 |
reserv |
archrev |
family |
model |
revision |
number | ||||||
24 |
8 |
8 |
8 |
8 |
8 |
Рис.3.11. CPUIDрегистр 3 – информация о версии.
Табл.3.7. Описание полей CPUIDрегистра 3.
Поле |
Биты |
Описание |
number |
7:0 |
Индекс наибольшего реализованного CPUID регистра (на 1 меньше, чем количество реализованных CPUID регистров). Это значение должно быть не меньше 4. |
revision |
15:8 |
Номер версии процессора. 8-битное число, которое описывает версию (revision) или модификацию (stepping) реализованного процессора, но не модель процессора. |
model |
23:16 |
Номер модели процессора. Уникальное 8-битное число представляющее модель процессора, но не семейство процессора. |
family |
31:24 |
Номер семейства процессора. Уникальное 8-битное число показывающее семейство процессора. |
archrev |
39:32 |
Версия архитектуры. 8-битное число, которое описывает номер версии архитектуры, в которой реализован процессор. |
reserv |
63:40 |
Зарезервировано |
Регистр CPUID[4] обеспечивает основную информацию прикладного уровня о свойствах процессора. Как показано на рис.3.12 это обеспечивается установкой флагов в битах, чтобы показать, что конкретное свойство поддерживается в этой модели процессора. Если бит в 1, то свойство поддерживается, если же бит в 0, то свойство не поддерживается. Описание свойств битов текущей архитектуры дано в табл. 3.8. Если новые свойства будут добавлены (или удалены) модель свойств процессора, то будут добавлены, изменены или удалены описания битов соответствующих этим свойствам.
63 |
1 |
0 |
reserv |
lb | |
63 |
1 |
Рис.3.12. CPUIDрегистр 4 – биты основных свойств/способностей.
Табл.3.8. Поля CPUIDрегистра 4.
Поле |
Биты |
Описание |
lb |
0 |
Процессор реализует инструкции длинных переходов (brl). |
reserv |
63:1 |
Зарезервировано |