Лекция 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; просмотров: 143;