В универсальном 32-разрядном микропроцессоре выделяют следующие группы регистров:
Первые две группы регистров используются прикладными программами, последние две группы -
Рассмотрим каждую из этих групп подробнее.
В состав регистров этой группы входят:
Состав и структура регистров общего назначения представлены на рис. 2.1.
Блок состоит из восьми 32-разрядных регистров. К каждому из них можно обращаться как к одному двойному слову (32 разряда).
Отметим, что понятие "слово" в данной архитектуре не идентично разрядности микропроцессора. Исторически сложилось так, что под словом понимается единица информации длиной 2 байта, или 16 двоичных разрядов. К младшим 16 разрядам регистров общего назначения можно обращаться так же, как и в 16-разрядном микропроцессоре (AX, BX…AX, BX, CX, DX допускают обращение отдельно к своему старшему и младшему байту. Тем самым регистры позволяют на программном уровне работать либо с восемью 32-разрядными, либо с восемью 16-разрядными, либо с восемью 8-разрядными регистрами.
(рис 2.1) Регистры общего назначенияВсе эти регистры используются для хранения промежуточных результатов вычислений и составных частей адреса при различных режимах адресации операндов, расположенных в памяти.
Кроме того, ряд регистров этого блока имеют свое, присущее только им назначение:
EAX/AX/AL - регистр-аккумулятор, используется для сокращения длины команды при работе с непосредственными операндами;AX/AL - приемник (источник) данных в командах ввода (вывода) данных из (в) внешнего устройства;DX - определяет адрес ВУ в командах ввода (вывода) данных;ECX - используется в качестве счетчика циклов в BP, SP - используются при работе со стеком;ESI , EDI ( DI, SI ) - определяют положение строк в памяти в командах обработки строк.Регистр указателя команд и регистр флагов имеют длину 32 разряда.
Младшее слово каждого из этих регистров (разряды 0-15) функционально соответствует аналогичным разрядам в 16-разрядном микропроцессоре (рис. 2.2).
(рис 2.2) Регистр указателя команд и регистр флаговРегистр указателя команд хранит смещение адреса команд относительно начала сегмента кода (сегмента команд).
Регистр флагов 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 - флаг ТF = 1 после выполнения каждой команды возникает прерывание, используемое отладчиками;);NТ - бит вложенной задачи (показывает, что данная задача была вызвана из другой программы, аналогично подпрограмме, и возврат из этой задачи должен проводиться по механизму переключения задач);IOPL - 2-разрядное поле уровня привилегий ввода/вывода (определяет VM - режим виртуального микропроцессора i8086 (при работе микропроцессора в защищенном режиме установка VM = 1 вызывает переключение в режим виртуального микропроцессора i8086; в этом случае микропроцессор функционирует как быстрый МП i8086, но реализует механизмы VM может быть установлен только в защищенном режиме).Блок сегментных регистров состоит из шести 16-разрядных регистров, которые указывают на различные сегменты, расположенные в памяти компьютера:
CS ( Code Segment ) - сегмент кода программы;DS ( Data Segment ) - сегмент данных;SS ( Stack Segment ) - сегмент стека;ES, FS, GS - дополнительные сегменты данных.При работе микропроцессора в реальном режиме в сегментном регистре содержатся старшие 16 разрядов 20-разрядного базового адреса сегмента. Физический адрес начала сегмента получается умножением этой величины на 16:
$$A_{\mbox{баз сегм}}=\mbox{(сегментный регистр)}*16$$Получающийся 20-разрядный адрес позволяет адресовать память емкостью 220 байт = 1 Мбайт. При этом сегменты имеют постоянную длину 216 байт. Разработчики первых персональных компьютеров полагали, что оперативная память, большая чем 1 Мбайт, никогда не потребуется пользователю, поэтому вся архитектура строилась исходя именно из этого положения.
При переходе к 32-разрядной архитектуре стало необходимым обеспечить возможность адресации памяти емкостью до 232 байт. Кроме того, введение защищенного режима работы микропроцессора потребовало хранения большого количества дополнительной информации о сегменте: его длине, которая стала переменной, уровне привилегий, его типе и т. д. Простое увеличение разрядности сегментных регистров до 32 бит не обеспечило бы возможности хранения всей этой информации. Поэтому все данные о сегменте стали размещаться в специальных структурах - дескрипторах (описателях) сегментов, которые хранятся в таблицах дескрипторов, расположенных в памяти, а
Регистры процессора с плавающей точкой
К этой группе регистров относятся (рис. 2.3):
(рис 2.3) Структура регистров процессора с плавающей точкойБлок регистров данных. Доступен либо как стек (его вершина TOP определена в регистре состояний ), либо как набор пронумерованных регистров.
Старший разряд 80-разрядного регистра данных кодирует знак
где $$П$$ - истинный порядок числа, а величина $$\Delta$$ определяется следующим образом: $$\Delta= |-Пмакс|$$ При этом самый большой по модулю отрицательный истинный порядок преобразуется в нулевой смещенный, а все остальные истинные порядки преобразуются в положительные. Тем самым упрощаются операции обработки чисел с плавающей точкой.
В последнем поле регистра данных записывается
Количество разрядов, отводимых под поле порядка и поле .
Данный блок может также использоваться для хранения двоичнодесятичных чисел. Они представляются в упакованной форме и содержат 18 тетрад, каждая из которых соответствует одному десятичному разряду.
Для представления знака такого числа используется старший разряд старшего байта (бит 79), в остальных разрядах этого байта устанавливаются нули.
Микропроцессор может обрабатывать числа следующих типов (табл. 2.1):
| Тип | Размер, байт | Диапазон | Обработка |
|---|---|---|---|
| Целые без знака | 1 2 4 |
0...255 0...65535 0...4,3*109 |
|
| Целые со знаком | 1 2 4 |
-128...+127 -32768...+32767 2,1*109...+2,1*109 |
|
| 8 | 9,1*1018...+9*1018 | ||
| С плавающей точкой | 4 (1+8+23) |
±3,37*1035 | |
| 8 (1+11+52) | ±1,67*10308 308 | ||
| 10 (1+15+64) | ±1,1*104932 | ||
| Двоично- десятичные числа | 1 распакованный 1 упакованный 10 упакованных |
0…9 0…99 0..9…9(18 цифр) |
Помимо этого микропроцессор может обрабатывать символьные данные, данные типа "строка" и типа"указатель".
Регистр тегов. Определяет содержимое регистра данных с целью оптимизации обработки:
Операции с плавающей точкой требуют довольно много времени.
Использование тегов позволяет в определенных случаях сократить время выполнения команды. Например, если известно, что один из сомножителей равен нулю, то произведению можно присвоить нулевое значение без выполнения каких-либо действий.
Регистр состояния содержит указатель вершины блока данных, работающего в режиме стека ( TOP ), признаки результата и ошибок, возникающих при выполнении операции в
Регистр управления управляет округлением (к ближайшему значению, вниз, вверх, к нулю), точностью (длина
Указатели команд и данных содержат адрес команды, вызвавшей ошибку, и адрес использованного операнда. Эти регистры имеют 48-разрядный формат: 16 разрядов содержат селектор соответствующего сегмента, а остальные 32 разряда - смещение в нем.
Системные регистры управляют функционированием микропроцессора в целом и режимами работы отдельных его блоков. Эти регистры доступны только в защищенном режиме для программ, имеющих максимальный
CR0...CR4 );CR0 содержит биты, определяющие режим работы процессора:
PE - разрешение защиты: установка PE = 1 переводит микропроцессор в PG - включение страничной адресации памяти (при PG = 1 страничный механизм включен);CD, NW - управление режимами работы внутренней кэш-памяти ( CD = 1 - запрещение заполнения кэш-памяти; NW = 1 - запрет сквозной записи).Ряд бит ( , EM, TS, NE ) управляют режимами работы
Регистр CR1 был зарезервирован для последующего развития. Однако начиная с МП Pentium в микропроцессорах появился CR1 так и остался зарезервированным.
Регистр CR2 содержит линейный адрес, который вызвал страничную ошибку, например, отсутствие страницы в оперативной памяти или недостаточный
В регистре CR3 находится базовый адрес каталога и PWT, управляющие работой кэш-памяти при страничной адресации (при загрузка содержимого страницы в кэш-память запрещена; при PWT = 1 реализуется режим сквозной записи, а при PWT = 0 - обратной записи).
Регистр CR4 содержит биты, обеспечивающие расширение функциональных возможностей микропроцессора, начиная с Pentium. В частности, он содержит следующие управляющие разряды:
VME , PVI - управляют работой виртуальных прерываний;PAE - обеспечивает расширение физического адреса до 36 разрядов (при PAE = 1 ); PGE - определяет некоторые страницы (часто используемые или используемые несколькими процессорами) как глобальные (при PGE = 1 );PSE - расширяет размер адресуемых страниц до 4 Мбайт (при PSE = 1 ), при Регистры системных адресов и системных сегментов представлены на рис. 2.4.
(рис 2.4) Структура регистров системных адресов и системных сегментовВ их число входят GDTR - регистр глобальной таблицы дескрипторов и IDTR - регистр таблицы дескрипторов прерываний. В этих регистрах определяются базовый адрес и размер соответствующей таблицы. К
К этой группе относятся также LDTR - регистр локальной таблицы дескрипторов и TR - регистр задач. Регистры LTDR и TR представляют собой селекторы, которые указывают на положение дескрипторов, описывающих соответственно сегмент, содержащий локальную таблицу дескрипторов, и сегмент состояния задачи (Task State
Использование этих регистров в дальнейшем будет рассмотрено более подробно.
32-разрядные регистры отладки ( DR0...DR7 ) имеют следующее назначение:
DR0...DR3 - содержат линейные адреса 4 контрольных точек останова при отладке;DR4 и DR5 зарезервированы;DR6 - DR7 - DR4 и DR5 не используются.Регистры тестирования ( TR3...TR7 ) используются при тестировании кэш-памяти и буфера ассоциативной трансляции адресов страниц ( TLB ).
По мере развития архитектуры микропроцессора их количество расширилось и дополнилось новым содержанием. В частности, с помощью регистра TR12 можно запретить предсказание и трассировку ветвлений, параллельное выполнение инструкций и выполнить некоторые другие действия.
Краткие итоги. В лекции рассмотрены назначение и состав регистровой структуры универсального микропроцессора, во многом определяющие архитектурные особенности микропроцессора.
В универсальном 32-разрядном микропроцессоре выделяют следующие группы регистров:
Первые две группы регистров используются прикладными программами, последние две группы -
Рассмотрим каждую из этих групп подробнее.
В состав регистров этой группы входят:
Состав и структура регистров общего назначения представлены на рис. 2.1.
Блок состоит из восьми 32-разрядных регистров. К каждому из них можно обращаться как к одному двойному слову (32 разряда).
Отметим, что понятие "слово" в данной архитектуре не идентично разрядности микропроцессора. Исторически сложилось так, что под словом понимается единица информации длиной 2 байта, или 16 двоичных разрядов. К младшим 16 разрядам регистров общего назначения можно обращаться так же, как и в 16-разрядном микропроцессоре (AX, BX…AX, BX, CX, DX допускают обращение отдельно к своему старшему и младшему байту. Тем самым регистры позволяют на программном уровне работать либо с восемью 32-разрядными, либо с восемью 16-разрядными, либо с восемью 8-разрядными регистрами.
(рис 2.1) Регистры общего назначенияВсе эти регистры используются для хранения промежуточных результатов вычислений и составных частей адреса при различных режимах адресации операндов, расположенных в памяти.
Кроме того, ряд регистров этого блока имеют свое, присущее только им назначение:
EAX/AX/AL - регистр-аккумулятор, используется для сокращения длины команды при работе с непосредственными операндами;AX/AL - приемник (источник) данных в командах ввода (вывода) данных из (в) внешнего устройства;DX - определяет адрес ВУ в командах ввода (вывода) данных;ECX - используется в качестве счетчика циклов в BP, SP - используются при работе со стеком;ESI , EDI ( DI, SI ) - определяют положение строк в памяти в командах обработки строк.Регистр указателя команд и регистр флагов имеют длину 32 разряда.
Младшее слово каждого из этих регистров (разряды 0-15) функционально соответствует аналогичным разрядам в 16-разрядном микропроцессоре (рис. 2.2).
(рис 2.2) Регистр указателя команд и регистр флаговРегистр указателя команд хранит смещение адреса команд относительно начала сегмента кода (сегмента команд).
Регистр флагов 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 - флаг ТF = 1 после выполнения каждой команды возникает прерывание, используемое отладчиками;);NТ - бит вложенной задачи (показывает, что данная задача была вызвана из другой программы, аналогично подпрограмме, и возврат из этой задачи должен проводиться по механизму переключения задач);IOPL - 2-разрядное поле уровня привилегий ввода/вывода (определяет VM - режим виртуального микропроцессора i8086 (при работе микропроцессора в защищенном режиме установка VM = 1 вызывает переключение в режим виртуального микропроцессора i8086; в этом случае микропроцессор функционирует как быстрый МП i8086, но реализует механизмы VM может быть установлен только в защищенном режиме).Блок сегментных регистров состоит из шести 16-разрядных регистров, которые указывают на различные сегменты, расположенные в памяти компьютера:
CS ( Code Segment ) - сегмент кода программы;DS ( Data Segment ) - сегмент данных;SS ( Stack Segment ) - сегмент стека;ES, FS, GS - дополнительные сегменты данных.При работе микропроцессора в реальном режиме в сегментном регистре содержатся старшие 16 разрядов 20-разрядного базового адреса сегмента. Физический адрес начала сегмента получается умножением этой величины на 16:
$$A_{\mbox{баз сегм}}=\mbox{(сегментный регистр)}*16$$Получающийся 20-разрядный адрес позволяет адресовать память емкостью 220 байт = 1 Мбайт. При этом сегменты имеют постоянную длину 216 байт. Разработчики первых персональных компьютеров полагали, что оперативная память, большая чем 1 Мбайт, никогда не потребуется пользователю, поэтому вся архитектура строилась исходя именно из этого положения.
При переходе к 32-разрядной архитектуре стало необходимым обеспечить возможность адресации памяти емкостью до 232 байт. Кроме того, введение защищенного режима работы микропроцессора потребовало хранения большого количества дополнительной информации о сегменте: его длине, которая стала переменной, уровне привилегий, его типе и т. д. Простое увеличение разрядности сегментных регистров до 32 бит не обеспечило бы возможности хранения всей этой информации. Поэтому все данные о сегменте стали размещаться в специальных структурах - дескрипторах (описателях) сегментов, которые хранятся в таблицах дескрипторов, расположенных в памяти, а
Регистры процессора с плавающей точкой
К этой группе регистров относятся (рис. 2.3):
(рис 2.3) Структура регистров процессора с плавающей точкойБлок регистров данных. Доступен либо как стек (его вершина TOP определена в регистре состояний ), либо как набор пронумерованных регистров.
Старший разряд 80-разрядного регистра данных кодирует знак
где $$П$$ - истинный порядок числа, а величина $$\Delta$$ определяется следующим образом: $$\Delta= |-Пмакс|$$ При этом самый большой по модулю отрицательный истинный порядок преобразуется в нулевой смещенный, а все остальные истинные порядки преобразуются в положительные. Тем самым упрощаются операции обработки чисел с плавающей точкой.
В последнем поле регистра данных записывается
Количество разрядов, отводимых под поле порядка и поле .
Данный блок может также использоваться для хранения двоичнодесятичных чисел. Они представляются в упакованной форме и содержат 18 тетрад, каждая из которых соответствует одному десятичному разряду.
Для представления знака такого числа используется старший разряд старшего байта (бит 79), в остальных разрядах этого байта устанавливаются нули.
Микропроцессор может обрабатывать числа следующих типов (табл. 2.1):
| Тип | Размер, байт | Диапазон | Обработка |
|---|---|---|---|
| Целые без знака | 1 2 4 |
0...255 0...65535 0...4,3*109 |
|
| Целые со знаком | 1 2 4 |
-128...+127 -32768...+32767 2,1*109...+2,1*109 |
|
| 8 | 9,1*1018...+9*1018 | ||
| С плавающей точкой | 4 (1+8+23) |
±3,37*1035 | |
| 8 (1+11+52) | ±1,67*10308 308 | ||
| 10 (1+15+64) | ±1,1*104932 | ||
| Двоично- десятичные числа | 1 распакованный 1 упакованный 10 упакованных |
0…9 0…99 0..9…9(18 цифр) |
Помимо этого микропроцессор может обрабатывать символьные данные, данные типа "строка" и типа"указатель".
Регистр тегов. Определяет содержимое регистра данных с целью оптимизации обработки:
Операции с плавающей точкой требуют довольно много времени.
Использование тегов позволяет в определенных случаях сократить время выполнения команды. Например, если известно, что один из сомножителей равен нулю, то произведению можно присвоить нулевое значение без выполнения каких-либо действий.
Регистр состояния содержит указатель вершины блока данных, работающего в режиме стека ( TOP ), признаки результата и ошибок, возникающих при выполнении операции в
Регистр управления управляет округлением (к ближайшему значению, вниз, вверх, к нулю), точностью (длина
Указатели команд и данных содержат адрес команды, вызвавшей ошибку, и адрес использованного операнда. Эти регистры имеют 48-разрядный формат: 16 разрядов содержат селектор соответствующего сегмента, а остальные 32 разряда - смещение в нем.
Системные регистры управляют функционированием микропроцессора в целом и режимами работы отдельных его блоков. Эти регистры доступны только в защищенном режиме для программ, имеющих максимальный
CR0...CR4 );CR0 содержит биты, определяющие режим работы процессора:
PE - разрешение защиты: установка PE = 1 переводит микропроцессор в PG - включение страничной адресации памяти (при PG = 1 страничный механизм включен);CD, NW - управление режимами работы внутренней кэш-памяти ( CD = 1 - запрещение заполнения кэш-памяти; NW = 1 - запрет сквозной записи).Ряд бит ( , EM, TS, NE ) управляют режимами работы
Регистр CR1 был зарезервирован для последующего развития. Однако начиная с МП Pentium в микропроцессорах появился CR1 так и остался зарезервированным.
Регистр CR2 содержит линейный адрес, который вызвал страничную ошибку, например, отсутствие страницы в оперативной памяти или недостаточный
В регистре CR3 находится базовый адрес каталога и PWT, управляющие работой кэш-памяти при страничной адресации (при загрузка содержимого страницы в кэш-память запрещена; при PWT = 1 реализуется режим сквозной записи, а при PWT = 0 - обратной записи).
Регистр CR4 содержит биты, обеспечивающие расширение функциональных возможностей микропроцессора, начиная с Pentium. В частности, он содержит следующие управляющие разряды:
VME , PVI - управляют работой виртуальных прерываний;PAE - обеспечивает расширение физического адреса до 36 разрядов (при PAE = 1 ); PGE - определяет некоторые страницы (часто используемые или используемые несколькими процессорами) как глобальные (при PGE = 1 );PSE - расширяет размер адресуемых страниц до 4 Мбайт (при PSE = 1 ), при Регистры системных адресов и системных сегментов представлены на рис. 2.4.
(рис 2.4) Структура регистров системных адресов и системных сегментовВ их число входят GDTR - регистр глобальной таблицы дескрипторов и IDTR - регистр таблицы дескрипторов прерываний. В этих регистрах определяются базовый адрес и размер соответствующей таблицы. К
К этой группе относятся также LDTR - регистр локальной таблицы дескрипторов и TR - регистр задач. Регистры LTDR и TR представляют собой селекторы, которые указывают на положение дескрипторов, описывающих соответственно сегмент, содержащий локальную таблицу дескрипторов, и сегмент состояния задачи (Task State
Использование этих регистров в дальнейшем будет рассмотрено более подробно.
32-разрядные регистры отладки ( DR0...DR7 ) имеют следующее назначение:
DR0...DR3 - содержат линейные адреса 4 контрольных точек останова при отладке;DR4 и DR5 зарезервированы;DR6 - DR7 - DR4 и DR5 не используются.Регистры тестирования ( TR3...TR7 ) используются при тестировании кэш-памяти и буфера ассоциативной трансляции адресов страниц ( TLB ).
По мере развития архитектуры микропроцессора их количество расширилось и дополнилось новым содержанием. В частности, с помощью регистра TR12 можно запретить предсказание и трассировку ветвлений, параллельное выполнение инструкций и выполнить некоторые другие действия.
Краткие итоги. В лекции рассмотрены назначение и состав регистровой структуры универсального микропроцессора, во многом определяющие архитектурные особенности микропроцессора.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.