Материал: А. Д. Чередов, А. Н. Мальчуков

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
Регистры сегментов Регистры дескрипторов 15 0

CS
SS DS ES FS GS

Рис. 3.3. Регистры сегментов и соответствующие регистры дескрипторов
Когда в регистр сегмента загружается новое значение селектора, содержимое соответствующего регистра дескриптора автоматически корректируется. В реальном режиме базовый адрес сегмента получается путем сдвига значения селектора на 4 разряда влево (20 разрядов), мак- симальный размер и атрибуты сегмента в реальном режиме имеют фик- сированные значения.

Указатель команд


Указатель команд (рис. 3.4) представляет собой 32-разрядный ре- гистр с именем EIP, содержимое которого используется в качестве сме- щения при определении адреса следующей выполняемой команды. Смещение задается относительно базового адреса сегмента команд CS. Младшие 16 бит (0–15) содержат 16-разрядный указатель команд с име- нем IP, который используется при 16-разрядной адресации.
31 15 0

EIP

Рис. 3.4. Структура регистра указателя команд

Указатель команд непосредственно программисту недоступен. Его содержимое изменяется при выполнении команд передачи управления и прерываний.

Регистр флагов


Регистр флагов является 32-разрядным, имеет имя EFLAGS. Его разряды содержат признаки результата выполнения команды, управля- ют обработкой прерываний, последовательностью вызываемых задач, вводом/выводом и рядом других процедур.

Регистры процессора обработки чисел с плавающей точкой


Набор регистров, входящих в блок FPU, изображен на рис. 3.5.

При работе FPU 80-разрядные регистры ST0–ST7 образуют коль- цевой стек, в котором хранятся числа с плавающей точкой, представ- ленные в формате с расширенной точностью.

Регистры данных Регистр тегов


Знак

Порядок

Мантисса

79 78 64 63 0 1 0

ST0







MM0




Тег(0)

ST1







MM1

Тег(1)

ST2







MM2

Тег(2)

ST3







MM3

Тег(3)

ST4







MM4

Тег(4)

ST5







MM5

Тег(5)

ST6







MM6

Тег(6)

ST7







MM7

Тег(7)




15 0




47 0

Регистр управления




Указатель команд

Регистр состояния




Указатель данных

Рис. 3.5. Регистры блока FPU
Регистр тегов FPU содержит 16-разрядное слово, включающее во- семь двухбитовых тегов. Каждый тег (признак) характеризует содержи- мое одного из регистров данных.

Тег определяет, является ли регистр пустым (незаполненным) – код 11, или в него введено конечное число – 00 (достоверное значение), или нуль 01, неопределенное значение (бесконечность) 10 (нет числа

и неподдерживаемый формат). Слово тегов позволяет оптимизировать функционирование FPU посредством идентификации пустых и непу- стых регистров данных, проверить содержимое регистра без сложного декодирования хранящихся в нем данных.

Регистры ММХ-технологии


При реализации ММХ-команд регистры данных FPU используются как 64-разрядные регистры ММ0–ММ7 (см. рис. 3.5), где могут хра- ниться несколько целочисленных операндов (восемь 8-разрядных, че- тыре 16-разрядных, два 32-разрядных или один 64-разрядный), над ко- торыми одновременно выполняется поступившая в процессор команда.
Векторные регистры SSE расширений

Потоковые команды расширений SSE используют восемь 128- разрядных регистров ХММ0–ХММ7, в которых могут храниться не- сколько вещественных или целочисленных операндов.

Системные регистры


Системные регистры управляют функционированием микропро- цессора в целом и режимами работы отдельных внутренних блоков: процессора с плавающей точкой, кэш-памятью, диспетчера памяти. Эти регистры доступны только в защищенном режиме для программ.

Набор системных регистров включает регистры управления, реги- стры системных адресов и сегментов.

Регистры управления 32-разрядные, служат для фиксации общего состояния процессора. Эти регистры вместе с регистрами системных адресов хранят информацию о состоянии процессора, которое затраги- вает все задачи.

Регистры отладки и тестирования


Набор программно-доступных регистров поддерживает отладку программ и тестирования внутренних блоков процессора. Встроенный алгоритм самотестирования (BIST) осуществляет поиск ошибки в мик- рокоде и в больших логических матрицах
, а также тестирование кэш- памяти команд и данных, буферов ассоциативной трансляции (TLB) и устройств постоянной памяти. Внутренние счетчики контролируют ра- боту процессора и проводят подсчет событий. Введена новая функция – мониторинг термического состояния системной платы.

Переименование регистров


В современных процессорах используются блоки регистров заме- щения (регистровые файлы) для целочисленных, вещественных и век- торных данных. Для любого указанного в команде логического регистра (программно можно обращаться в х86 только к 8-ми регистрам общего назначения GPR, 8-ми регистрам с плавающей точкой ST или 8-ми ММХ / ХММ-регистрам) выделяется один из физических регистров со- ответствующего блока регистров замещения, содержащего, например, 128 регистров. Эта процедура (переименование регистров) позволяет увеличить количество используемых регистров процессора, а также позволяет выполнять команды, в которых задействованы одни и те же ло- гические регистры, одновременно или с изменением их последовательно- сти.

      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.

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

Регистр указателя команд (RIP) и регистр флагов (RFLAGS) также расширены до 64 разрядов.
Источник: https://files.student-it.ru/previewfile/151041