3.2. Регистровые структуры центрального процессора

К оглавлению1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 
34 35 36 37 38 39 40 41 42 43 44 45 

Набор регистров и их структуры рассмотрим на примере процессоров с интеловской архитектурой. Можно выделить следующие группы регистров:

1. Основные функциональные регистры:

- регистры общего назначения (РОНы);

- указатель команд;

- регистр флагов;

- регистры сегментов.

2. Регистры процессора обработки чисел с плавающей точкой (FPU):

- регистры данных;

- регистр тегов;

- регистр состояния;

- регистр указателей команд и данных FPU;

- регистр управления FPU.

3. Системные регистры:

- регистры управления микропроцессора;

- регистры системных адресов.

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

Все 16-разрядные регистры микропроцессоров 8086, 80186, 80286 вхо­дят в состав набора 32-разрядных регистров. Регистры первых двух групп используются при выполнении прикладных программ, третьей группы _ системных, четвертой — при отладке и тестировании.

3.2.1. Основные функциональные регистры

Содержимое этих регистров определяется текущей задачей, т.е. в эти ре­гистры автоматически загружается новое значение при переключении задач.

Регистры общего назначения

Восемь 32-разрядных регистров предназначены для хранения данных и адресов. Они поддерживают работу с данными разрядностью 1, 8, 16,32 и 64 бита, битовыми полями длиной от 1 до 32 бит и адресами размером 16 и 32 бита. Младшие 16 разрядов этих регистров (рис. 3.3) доступны отдельно при использовании соответствующего имени, например регистр ЕАХ (имя АХ для 16 разрядов).

Рис. 3.3. Структура регистра общего назначения ЕАХ

При операциях с байтами можно отдельно обращаться к младшему бай­ту (разряды 0 - 7) и старшему байту (8-15) по именам AL и АН. Доступ к отдельным байтам обеспечивает дополнительную гибкость при операциях с данными.

Регистры сегментов и дескрипторы сегментов

Шесть 16-разрядных сегментных регистров (CS, SS, DS, ES, FS, GS) со­держат значения селекторов сегментов, указывающих на текущие адресуе­мые сегменты памяти. С каждым из них связан программно-недоступный ре­гистр дескриптора сегмента (рис. 3.4).

В защищенном режиме каждый сегмент может иметь размер от 1 байта до 4 Гбайт, в режиме реальных адресов максимальный размер сегмента со­ставляет 64 Кбайта.

Селектор в CS обеспечивает обращение к текущему сегменту команд, селектор в SS — к текущему сегменту стека, селекторы в DS, ES, FS, GS — к текущим сегментам данных. Каждый регистр дескриптора содержит 32-разрядный размер сегмента и другие необходимые атрибуты.

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

Регистры сегментов                 Регистры дескрипторов

Рис. 3.4. Регистры сегментов и соответствующие регистры дескрипторов

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

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

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

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

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

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

 

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

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

Рис. 3.6. Регистры блока FPU

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

Тег определяет, является ли регистр пустым (незаполненным) - код 11 или в него введено конечное число — 00 (достоверное значение), или нуль -01, неопределенное значение (бесконечность) — 10 (нет числа и неподдер­живаемый формат). Слово тегов позволяет оптимизировать функционирова­ние FPU посредством идентификации пустых и непустых регистров данных, проверить содержимое регистра без сложного декодирования хранящихся в нем данных.

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

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

Эти регистры доступны только в защищенном режиме для программ.

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

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

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

Микропроцессор i486, например, имеет одиннадцать регистров отладки и тестирования (все они 32-разрядные). Из них б программно-доступных ре­гистров (DRO — DR3, DR6, DR7) поддерживают процесс отладки программ. Пять программно-доступных регистров (TR3 — TR7) поддерживают тести­рование внутренних блоков: TR3 — TR5 используются для проверки кэш­памяти; TR6, TR7 — для тестирования механизма быстрого формирования адресов страниц.

Набор регистров и их структуры рассмотрим на примере процессоров с интеловской архитектурой. Можно выделить следующие группы регистров:

1. Основные функциональные регистры:

- регистры общего назначения (РОНы);

- указатель команд;

- регистр флагов;

- регистры сегментов.

2. Регистры процессора обработки чисел с плавающей точкой (FPU):

- регистры данных;

- регистр тегов;

- регистр состояния;

- регистр указателей команд и данных FPU;

- регистр управления FPU.

3. Системные регистры:

- регистры управления микропроцессора;

- регистры системных адресов.

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

Все 16-разрядные регистры микропроцессоров 8086, 80186, 80286 вхо­дят в состав набора 32-разрядных регистров. Регистры первых двух групп используются при выполнении прикладных программ, третьей группы _ системных, четвертой — при отладке и тестировании.

3.2.1. Основные функциональные регистры

Содержимое этих регистров определяется текущей задачей, т.е. в эти ре­гистры автоматически загружается новое значение при переключении задач.

Регистры общего назначения

Восемь 32-разрядных регистров предназначены для хранения данных и адресов. Они поддерживают работу с данными разрядностью 1, 8, 16,32 и 64 бита, битовыми полями длиной от 1 до 32 бит и адресами размером 16 и 32 бита. Младшие 16 разрядов этих регистров (рис. 3.3) доступны отдельно при использовании соответствующего имени, например регистр ЕАХ (имя АХ для 16 разрядов).

Рис. 3.3. Структура регистра общего назначения ЕАХ

При операциях с байтами можно отдельно обращаться к младшему бай­ту (разряды 0 - 7) и старшему байту (8-15) по именам AL и АН. Доступ к отдельным байтам обеспечивает дополнительную гибкость при операциях с данными.

Регистры сегментов и дескрипторы сегментов

Шесть 16-разрядных сегментных регистров (CS, SS, DS, ES, FS, GS) со­держат значения селекторов сегментов, указывающих на текущие адресуе­мые сегменты памяти. С каждым из них связан программно-недоступный ре­гистр дескриптора сегмента (рис. 3.4).

В защищенном режиме каждый сегмент может иметь размер от 1 байта до 4 Гбайт, в режиме реальных адресов максимальный размер сегмента со­ставляет 64 Кбайта.

Селектор в CS обеспечивает обращение к текущему сегменту команд, селектор в SS — к текущему сегменту стека, селекторы в DS, ES, FS, GS — к текущим сегментам данных. Каждый регистр дескриптора содержит 32-разрядный размер сегмента и другие необходимые атрибуты.

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

Регистры сегментов                 Регистры дескрипторов

Рис. 3.4. Регистры сегментов и соответствующие регистры дескрипторов

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

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

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

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

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

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

 

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

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

Рис. 3.6. Регистры блока FPU

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

Тег определяет, является ли регистр пустым (незаполненным) - код 11 или в него введено конечное число — 00 (достоверное значение), или нуль -01, неопределенное значение (бесконечность) — 10 (нет числа и неподдер­живаемый формат). Слово тегов позволяет оптимизировать функционирова­ние FPU посредством идентификации пустых и непустых регистров данных, проверить содержимое регистра без сложного декодирования хранящихся в нем данных.

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

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

Эти регистры доступны только в защищенном режиме для программ.

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

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

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

Микропроцессор i486, например, имеет одиннадцать регистров отладки и тестирования (все они 32-разрядные). Из них б программно-доступных ре­гистров (DRO — DR3, DR6, DR7) поддерживают процесс отладки программ. Пять программно-доступных регистров (TR3 — TR7) поддерживают тести­рование внутренних блоков: TR3 — TR5 используются для проверки кэш­памяти; TR6, TR7 — для тестирования механизма быстрого формирования адресов страниц.