Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пос Орг ЭВМ для Вер.ЕС.doc
Скачиваний:
36
Добавлен:
19.09.2019
Размер:
2.93 Mб
Скачать
      1. Регистровые структуры процессоров amd64 (Intel64)

В процессорах x86-64 (AMD64), Intel64 архитектур (рис. 3.6) существующие в х86 регистры общего назначения (GPR) расширены с 32 до 64 бит (RAX, RBX, RCX, RDX, RBP, RSP, RSI, RDI) и к ним добавлены еще 8 новых 64-разрядных регистров (R8–R15). Также 8 новых 128-ми битных регистров (XMM8–XMM15) добавлено в блок SSE, что обеспечивает поддержку SSE2.

0

Рис. 3.6. Регистровые структуры процессоров AMD64 (Intel64)

В блоке FPU используются существующие в х87 регистры данных ST0–ST7 (80-разрядные) и 64-разрядные мультимедийные регистры ММ0–ММ7, объединенные в общее пространство с регистрами ST.

Регистр указателя команд (RIP) и регистр флагов (RFLAGS) также расширены до 64 разрядов.

      1. Регистровые структуры процессоров ia-64

В состав регистровых файлов IA-64 (рис.3.7) входят: 128 регистров общего назначения GPR (64-разрядных); 128 регистров с плавающей запятой FR (82-разрядных); 128 прикладных регистров (в основном 64-разрядных) AR; 64 одноразрядных регистров предикатов PR; 8 регистров переходов BR (64-разрядных); не менее 4-х регистров идентификатора процесса CPUID; счетчик команд IP; регистр маркера текущего окна CFM стека регистров и др.

Рис. 3.7. Регистровые структуры процессоров IA-64

64-разрядные регистры GPR0–GPR127 применяются не только для целочисленных операций IA-64; GPR8–GPR31 в режиме IA-32 используются также под целочисленные регистры и регистры селекторов и дескрипторов сегментов IA-32. GPR0–GPR31 называются статическими регистрами (GPR0 всегда содержит 0), а GPR32–GPR127 – стекируемыми регистрами. Статические регистры «видны» всем программам. Стекируемые регистры становятся доступными в программной единице через окно стека регистров, включающее локальные и выходные регистры, число которых задается командой alloc.

82-разрядные регистры с плавающей запятой FR0–FR127 также подразделяются на статические (FR0–FR31, причем всегда FR0 = 0.0, FR1 = 1.0) и вращаемые (FR32–FR127). FR8–FR31 в режиме IA-32 содержат числа с плавающей запятой и мультимедийные регистры. Вращение регистров является в некотором роде частным случаем переименования регистров, применяемого в современных суперскалярных процессорах с внеочередным выполнением команд. В отличие от них (переименование регистров осуществляется аппаратно) вращение регистров в IA-64 управляется программно.

Прикладные регистры AR0–AR127специализированные. Ряд AR-регистров является фактически регистрами IA-32. AR0–AR7 называются регистрами ядра. Запись в них привилегированна, но они доступны на чтение в любом приложении и используются для передачи приложению сообщений от операционной системы. AR16 (RSC) – регистр конфигурации стека регистров, используемый для управления работой стека регистров IA-64. AR40 (FPSR) – регистр состояния для команд с плавающей запятой IA-64.

Регистры предикатов PR0–PR63 являются одноразрядными, в них помещаются результаты выполнения команд сравнения. Обычно эти команды устанавливают сразу два соседних регистра PR в состояния «1» – истина, «0» – ложь или наоборот в зависимости от значения условия. Такая избыточность обеспечивает дополнительную гибкость.

64-разрядные регистры переходов BR0–BR7 применяются для указания адреса перехода в соответствующих командах перехода (если адрес перехода не кодируется в команде явно).

В регистрах CPUID 0 и CPUID 1 находится информация о производителе, в регистре CPUID 2 – серийный номер процессора, а в регистре CPUID 3 задается тип процессора (семейство, модель, версия архитектуры и т. п.) и число CPUID-регистров. Разряды регистра CPUID4 указывают на поддержку конкретных особенностей IA-64, которые реализованы в данном процессоре.