Лекция 6 Регистровая структура универсального микропроцессора
Цель лекции: рассмотреть состав, назначение и особенности использования различных групп регистров, входящих в состав универсального микропроцессора.
Состав, структура и назначение регистров микропроцессора являются важной чертой его архитектуры и во многом определяют его функциональные возможности.
В универсальном 32-разрядном микропроцессоре выделяют следующие группы регистров:
- основные функциональные регистры;
- регистры процессора с плавающей точкой;
- системные регистры;
- регистры отладки и тестирования.
Первые две группы регистров используются прикладными программами, последние две группы - системными программами, имеющими наивысший уровень привилегий.
Основные функциональные регистры изображены на рисунке 6.1
В состав регистров этой группы входят:
- регистры общего назначения;
- регистр указателя команд;
- регистр флагов;
- сегментные регистры.
Рисунок 6.1
Блок состоит из восьми 32-разрядных регистров. К каждому из них можно обращаться как к одному двойному слову (32 разряда).
К младшим 16 разрядам регистров общего назначения можно обращаться так же, как и в 16- разрядном микропроцессоре (АХ, BX...SP).
Регистры общего назначения изображены на рисунке 6.2.
Рисунок 6.2 – Регисты общего назначения
Четыре 16-разрядных регистра АХ, ВХ, СХ, DX допускают обращение отдельно к своему старшему и младшему байту. Тем самым регистры позволяют на программном уровне работать либо с восемью 32-разрядными, либо с восемью 16-разрядными, либо с восемью 8-разрядными регистрами.
|
|
Регистры общего назначения используются для хранения промежуточных результатов вычислений и составных частей адреса при различных режимах адресации операндов, расположенных в памяти.
Кроме того, ряд регистров этого блока имеют свое, присущее только им назначение:
- EAX/AX/AL - регистр-аккумулятор, используется для сокращения длины команды при работе с непосредственными операндами;
- AX/AL - приемник (источник) данных в командах ввода (вывода) данных из (в) внешнего устройства;
- DX - определяет адрес ВУ в командах ввода (вывода) данных;
- ЕСХ - используется в качестве счетчика циклов в командах циклов;
- BP, SP - используются при работе со стеком;
- ESI, EDI ( DI, SI ) - определяют положение строк в памяти в командах обработки строк.
Регистр указателя команд и регистр флагов имеют длину 32 разряда.
Младшее слово каждого из этих регистров (разряды 0-15) функционально соответствует аналогичным разрядам в 16-разрядном микропроцессоре, изображенном на рисунке 6.3.
Рисунок 6.3 – Регистр указателя команд и регистр флагов
|
|
Регистр указателя команд EIP хранит смещение адреса команд относительно начала сегмента кода (сегмента команд).
Регистр флагов EFLAGS содержит признаки результата выполненной команды, а также разряды, управляющие работой микропроцессора: обработкой маскированных прерываний, последовательностью вызываемых задач, вводом-выводом и рядом других действий. Из этих флагов рассмотрим только наиболее значимые и интересные с точки зрения дальнейшего изучения работы микропроцессора.
К битам состояния регистра флагов относятся:
- ZF - признак нуля результата ( ZF = 1, если все разряды результата равны 0);
- SF - знак результата ( SF = 1, если старший разряд результата равен 1, то есть если результат отрицательный);
- OF - признак переполнения (OF = 1, если при выполнении арифметических операций над числами со знаком происходит переполнение разрядной сетки);
- CF - флаг переноса ( CF = 1, если выполнение операции
- сложения приводит к переносу за пределы разрядной сетки), устанавливается также в некоторых других операциях;
- PF - признак четности (дополняет до нечетного числа единиц младший байт результата);
- AF - флаг полупереноса (используется при операциях над двоичнодесятичными числами);
|
|
- DF - устанавливается пользователем и определяет порядок обработки строк символов в соответствующих командах: декремент (при DF = 1 ) или инкремент (при DF = 0 ) содержимого индексных регистров ESI, EDI ( SI, DI ) после обработки одного символа.
В состав флагов управления входят:
- IF - флаг прерываний (при IF = 1 разрешается обработка
- маскированных аппаратных прерываний);
- TF - флаг ловушки, или трассировки (при TF = 1 после выполнения каждой команды возникает прерывание, используемое отладчиками;);
- NT - бит вложенной задачи (показывает, что данная задача была вызвана из другой программы, аналогично подпрограмме, и возврат из этой задачи должен проводиться по механизму переключения задач);
- IOPL - 2-разрядное поле уровня привилегий ввода/вывода (определяет уровень привилегий программ, которым разрешено выполнение операции ввода-вывода);
- VM - режим виртуального микропроцессора i8086 (при работе микропроцессора в защищенном режиме установка VM = 1 вызывает переключение в режим виртуального микропроцессора i8086; в этом случае микропроцессор функционирует как быстрый МП i8086, но реализует механизмы защиты памяти, страничной адресации и ряд других дополнительных возможностей; бит VM может быть установлен только в защищенном режиме).
|
|
Блок сегментных регистров состоит из шести 16-разрядных регистров, которые указывают на различные сегменты, расположенные в памяти компьютера:
- CS ( Code Segment) - сегмент кода программы;
- DS(Data Segmen t )- сегмент данных;
- SS (Stack Segment)- сегмент стека;
- ЕS, FS, GS - дополнительные сегменты данных.
При работе микропроцессора в реальном режиме в сегментном регистре содержатся старшие 16 разрядов 20-разрядного базового адреса сегмента. Физический адрес начала сегмента получается умножением этой величины на 16:
Абаз.сегм=(сегментный регистр)*16
Получающийся 20-разрядный адрес позволяет адресовать память емкостью 220 байт = 1 Мбайт. При этом сегменты имеют постоянную длину 2 байт. Разработчики первых персональных компьютеров полагали, что оперативная память, большая чем 1 Мбайт, никогда не потребуется пользователю, поэтому вся архитектура строилась исходя именно из этого положения.
При переходе к 32-разрядной архитектуре стало необходимым обеспечить возможность адресации памяти емкостью до 2 байт. Кроме того, введение защищенного режима работы микропроцессора потребовало хранения большого количества дополнительной информации о сегменте: его длине, которая стала переменной, уровне привилегий, его типе и т. д. Простое увеличение разрядности сегментных регистров до 32 бит не обеспечило бы возможности хранения всей этой информации. Поэтому все данные о сегменте стали размещаться в специальных структурах - дескрипторах (описателях) сегментов, которые хранятся в таблицах дескрипторов, расположенных в памяти, а сегментные регистры, сохранив свою первоначальную длину в 16 разрядов, содержат так называемый селектор (указатель), который используется для того, чтобы найти нужный дескриптор в этих таблицах.
К этой группе регистров относятся (рисунок 6.3):
- регистры данных;
- регистры тегов;
- регистр состояния;
- указатели команд и данных FPU;
- регистр управления FPU.
Рисунок 6.3 – Структура регистров процессора с плавающей точкой
Блок регистров данных. Доступен либо как стек (его вершина ТОР определена в регистре состояний FPU ), либо как набор пронумерованных регистров.
Старший разряд 80-разрядного регистра данных кодирует знак мантиссы хранящегося в нем числа с плавающей точкой. Следующее поле отведено под кодирование порядка. Порядок представлен в виде так называемого машинного, или смещенного, порядка (Псм) без знака:
Псм= П +Δ,
где П - истинный порядок числа,
Δ определяется следующим образом:
Δ = |-Пмакс|
При этом самый большой по модулю отрицательный истинный порядок преобразуется в нулевой смещенный, а все остальные истинные порядки преобразуются в положительные. Тем самым упрощаются операции обработки чисел с плавающей точкой.
В последнем поле регистра данных записывается мантисса числа.
Количество разрядов, отводимых под поле порядка и поле мантиссы, определяется регистром управления FPU.
Данный блок может также использоваться для хранения двоичнодесятичных чисел. Они представляются в упакованной форме и содержат 18 тетрад, каждая из которых соответствует одному десятичному разряду.
Регистр тегов. Определяет содержимое регистра данных с целью оптимизации обработки:
- 00 - достоверное значение;
- 01 - нуль (нулевое значение);
- 10 - не-числа (например, бесконечность);
- 11 - пусто (содержание регистров не определено).
Операции с плавающей точкой требуют довольно много времени.
Использование тегов позволяет в определенных случаях сократить время выполнения команды. Например, если известно, что один из сомножителей равен нулю, то произведению можно присвоить нулевое значение без выполнения каких-либо действий.
Регистр состояния содержит указатель вершины блока данных, работающего в режиме стека ( ТОР ), признаки результата и ошибок, возникающих при выполнении операции в FPU, а также флаг переполнения и антипереполнения стека регистров данных.
Регистр управления управляет округлением (к ближайшему значению, вниз, вверх, к нулю), точностью (длина мантиссы 24, 53 или 64 бита), а также содержит маску признаков ошибок, фиксируемых в регистре состояния.
Указатели команд и данных содержат адрес команды, вызвавшей ошибку, и адрес использованного операнда. Эти регистры имеют 48- разрядный формат: 16 разрядов содержат селектор соответствующего сегмента, а остальные 32 разряда - смещение в нем.
Системные регистры
Системные регистры управляют функционированием микропроцессора в целом и режимами работы отдельных его блоков. Эти регистры доступны только в защищенном режиме для программ, имеющих максимальный уровень привилегий. Они включают в свой состав две группы регистров:
- регистры управления ( CR0 . . . CR4 );
- регистры системных адресов и системных сегментов.
Регистр управления CR0 содержит биты, определяющие режим работы процессора:
- РЕ - разрешение защиты: установка РЕ = 1 переводит микропроцессор в защищенный режим;
- PG - включение страничной адресации памяти (при PG = 1 страничный механизм включен);
- CD, NW - управление режимами работы внутренней кэш-памяти (CD = 1 - запрещение заполнения кэш-памяти; NW = 1 - запрет сквозной записи).
Ряд бит ( МР, ЕМ, TS, NE ) управляют режимами работы FPU.
Регистр CR1 был зарезервирован для последующего развития. Однако начиная с МП Pentium в микропроцессорах появился регистр управления CR4, а регистр CR1 таки остался зарезервированным.
Регистр CR2 содержит линейный адрес, который вызвал страничную ошибку, например, отсутствие страницы в оперативной памяти или недостаточный уровень привилегий.
В регистре CR3 находится базовый адрес каталога таблицы страниц (старшие 20 разрядов), а также биты PCD и PWT, управляющие работой кэш-памяти при страничной адресации (при PCD = 1 загрузка
содержимого страницы в кэш-память запрещена; при PWT = 1 реализуется режим сквозной записи, а при PWT = 0 – обратной записи).
Регистр CR4 содержит биты, обеспечивающие расширение функциональных возможностей микропроцессора, начиная с Pentium. В частности, он содержит следующие управляющие разряды:
- VME, PVI - управляют работой виртуальных прерываний;
- РАЕ - обеспечивает расширение физического адреса до 36 разрядов (при РАЕ = 1 ); PGE - определяет некоторые страницы (часто используемые или используемые несколькими процессорами) как глобальные (при PGE = 1);
- PSE - расширяет размер адресуемых страниц до 4 Мбайт (при PSE = 1 ), при PSE = 0 сохраняет размер страницы 4 Кбайт.
Регистры системных адресов и системных сегментов представлены на рисунке 6.4
Рисунок 6.4 - Структура регистров системных адресов и системных сегментов
В их число входят GDTR - регистр глобальной таблицы дескрипторов и IDTR - регистр таблицы дескрипторов прерываний. В этих регистрах определяются базовый адрес и размер соответствующей таблицы.
К этой группе относятся также LDTR - регистр локальной таблицы дескрипторов и TR - регистр задач. Регистры LTDR и TR представляют собой селекторы, которые указывают на положение дескрипторов, описывающих соответственно сегмент, содержащий локальную таблицу дескрипторов, и сегмент состояния задачи (Task State Segment - TSS).
Регистры отладки и тестирования
- 32-разрядные регистры отладки ( DR0 . . . DR7 ) имеют следующее назначение:
- DR0 . . . DR3 - содержат линейные адреса 4 контрольных точек останова при отладке;
- DR4 и DR5 зарезервированы;
- DR6 - регистр состояния: показывает текущее состояние МП при останове в этих точках;
- DR7 - регистр управления: задает условия останова в контрольных точках.
Регистры DR4 и DR5 не используются.
Регистры тестирования ( TR3...TR7 ) используются при тестировании кэш-памяти и буфера ассоциативной трансляции адресов страниц ( TLB ).
По мере развития архитектуры микропроцессора их количество расширилось и дополнилось новым содержанием. В частности, с помощью регистра TR12 можно запретить предсказание и трассировку ветвлений, параллельное выполнение инструкций и выполнить некоторые другие действия.
Контрольные вопросы:
1. Назначение и состав регистровой структуры универсального микропроцессора
2. Архитектурные особенности микропроцессора.
Дата добавления: 2019-09-13; просмотров: 805; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!