Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЭВУ 2 семестр / Презентации ЭВУ в пдф / метода моховикова

.pdf
Скачиваний:
39
Добавлен:
31.05.2015
Размер:
4.4 Mб
Скачать

тью поддерживает механизмы сегментации и страничной трансляции адре-

сов.

Расширения х86-64 и ЕМ64Т в первую очередь предназначены для ра-

дикального увеличения объема адресуемой памяти: 64-битные регистры по-

зволяют адресовать до 264 байт. Это число и является пределом объема вир-

туальной памяти 64-битного процессора, но пока используют только млад-

шие 48 бит адреса.

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

ширяется при сохранении всех команд предшествующих процессоров х86. С

расширением системы команд расширяется и набор архитектурных регист-

ров (ММХ, ХММ, новые общие 64-битные регистры).

Процессоры могут работать в различных режимах, определяющих воз-

можности адресации памяти и защиты: в реальном (16-разрядном) режиме процессора 8086, в режиме виртуального процессора 8086 (V86), в защищен-

ном 32-разрядном (и защищенном 16-разрядном) режиме. Режим работы процессора задается операционной системой с учетом режима работы при-

ложений (задач). У процессоров с 64-битным расширением появляются но-

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

мы используются только в 64-битных ОС, а полностью их преимущества доступны только 64-битным приложениям.

4.2. Регистры процессора

4.2.1. Общие понятия

Регистр – последовательное логическое устройство, используемое для хранения n-разрядных двоичных слов (чисел) и выполнения преобразований над ними. Регистр представляет собой упорядоченную последовательность

31

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

щью которого обеспечивается выполнение некоторых операций над словами.

Фактически любое цифровое устройство можно представить в виде совокуп-

ности регистров, соединенных друг с другом при помощи комбинационных цифровых устройств. Основой построения регистров являются D-триггеры,

RS-триггеры (рис. 8).

Рис. 8. Регистр с точки зрения триггеров

Регистр процессора – сверхбыстрая память внутри процессора (рис. 9),

предназначенная, прежде всего, для хранения промежуточных результатов вычисления (регистр общего назначения/регистр данных) или содержащая данные, необходимые для работы процессора – смещения базовых таблиц,

уровни доступа и т. д. (специальные регистры).

32

Рис. 9. Иерархия памяти

Из рис. 9 видно, что доступ к значениям, хранящимся в регистрах, как правило, в несколько раз быстрее, чем доступ к ячейкам оперативной памяти

(даже если кэш-память содержит нужные данные), но объем оперативной памяти намного превосходит суммарный объем регистров.

Операции в регистрах:

прием слова в регистр;

передача слова из регистра;

поразрядные логические операции;

сдвиг слова влево или вправо на заданное число разрядов;

преобразование последовательного кода слова в параллельный и обратно;

установка регистра в начальное состояние (сброс).

Регистры классифицируются по следующим видам: а) накопительные

(регистры памяти, хранения); б) сдвигающие.

В свою очередь сдвигающие регистры делятся:

по способу ввода-вывода информации:

параллельные – запись и считывание информации проис-

ходит одновременно на все входы и со всех выходов;

последовательные – запись и считывание информации происходит в первый триггер, а та информация, которая была в

33

этом триггере, перезаписывается в следующий – то же самое происходит и с остальными триггерами;

комбинированные;

по направлению передачи информации:

однонаправленные;

реверсивные;

по основанию системы счисления:

двоичные;

троичные;

десятичные.

4.2.2.Типы регистров

Регистром называется функциональный узел, осуществляющий прием,

хранение и передачу информации. Регистры состоят из группы триггеров,

обычно D. По типу приема и выдачи информации различают 3 типа регист-

ров:

С последовательным приемом и выдачей информации – сдви-

говые регистры.

С параллельным приемом и выдачей информации – параллель-

ные регистры.

С параллельно-последовательным приемом и выдачей инфор-

мации.

Сдвиговые регистры представляют собой последовательно соединенную цепочку триггеров. Основной режим работы – сдвиг разрядов кода от одного триггера к другому на каждый импульс тактового сигнала.

4.2.3. Параллельно-последовательный: ввод – параллельно, вывод –

последовательно

Параллельные регистры

34

В параллельных (статических) регистрах схемы разрядов не обменива-

ются данными между собой. Общими для разрядов обычно являются цепи тактирования, сброса/установки, разрешения выхода или приема, т. е. цепи управления. Пример схемы статического регистра, построенного на тригге-

рах типа D с прямыми динамическими входами, имеющего входы сброса и выходы с третьим состоянием, управляемые сигналом EZ, дан на рис. 8.

Сдвигающие (последовательные) регистры

Последовательные (сдвигающие) регистры представляют собой цепочку разрядных схем, связанных цепями переноса. В однотактных регистрах со сдвигом на один разряд вправо слово сдвигается при поступлении синхро-

сигнала. Вход и выход последовательные (DSR – Data Serial Right).

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

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

ширяет спектр типов триггеров, пригодных для этих схем. Многотактные сдвигающие регистры управляются несколькими синхронными последова-

тельностями. Из их числа наиболее известны двухтактные с основным и до-

полнительным регистрами, построенными на простых одноступенчатых триггерах, управляемых уровнем. По такту С1 содержимое основного реги-

стра переписывается в дополнительный, а по такту С2 возвращается в основ-

ной, но уже в соседние разряды, что соответствует сдвигу слова. По затратам оборудования и быстродействию этот вариант близок к однотактному реги-

стру с двухступенчатыми триггерами.

4.2.4. Назначение регистров

35

По назначению регистры процессора (рис. 10) делятся:

на аккумуляторные – используются для хранения промежуточ-

ных результатов арифметических и логических операций и инструкций ввода-вывода;

флаговые – хранят признаки результатов арифметических и ло-

гических операций;

общего назначения – хранят операнды арифметических и логи-

ческих выражений, индексы и адреса;

индексные – хранят индексы исходных и целевых элементов массива;

указательные – хранят указатели на специальные области па-

мяти (указатель текущей операции, указатель базы, указатель стека);

сегментные – хранят адреса и селекторы сегментов памяти;

управляющие – хранят информацию, управляющую состояни-

ем процессора, а также адреса системных таблиц.

Рис. 10. Основные регистры процессора

На рис. 10 приведены 16-разрядные регистры. 32-разрядные регистры

(те, которые можно было расширить до этой разрядности) имеют впереди бу-

кву «E», (от англ. extended – расширенный), например, EAX, EIP, EFLAGS и

36

т. д.; 64-разрядные регистры (те, которые можно было расширить до этой разрядности) имеют впереди букву «R» (от англ. relative – соответственный),

например, RAX, RIP, RFLAGS и т. д.

4.2.5. Троичные регистры

Троичные регистры строятся на троичных триггерах. Как и троичные триггеры, троичные регистры могут быть в разных троичных системах коди-

рования троичных данных (троичных разрядов): трехуровневая однопровод-

ная, двухуровневая двухразрядная двухпроводная, двухуровневая трехраз-

рядная одноединичная трехпроводная, двухуровневая трехразрядная однону-

левая трехпроводная и др. Троичные трехразрядные одноединичные N-

разрядные регистры данных описаны в [5].

На рис. 10 справа приведена схема девятиразрядного параллельного ста-

тического стробируемого троичного регистра данных на трех 3-разрядных параллельных статических стробируемых троичных регистрах данных в 3-

битной одноединичной системе троичных логических элементов (линии с обозначением «3В» – трехпроводные), имеющего емкость в показательной позиционной троичной системе счисления 39 = 19 683 чисел (кодов).

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

Регистры, указывающие на сегменты: CS, DS, SS, ES, FS, GS, называют-

ся сегментными регистрами. В реальном режиме работы процессора сег-

ментные регистры содержат адрес начала 64Kb сегмента, смещенный вправо на 4 бита. В защищенном режиме работы процессора сегментные регистры содержат селектор сегмента памяти, выделенного ОС.

CS – указатель на кодовый сегмент. Связка CS:IP (CS:EIP/CS:RIP – в

защищенном/64-битном режиме) указывает на адрес в памяти следующей команды (рис. 11).

37

Рис. 11. Регистр-указатель инструкций

IP (англ. Instruction Pointer) – 16-битный (младшая часть EIP) ре-

гистр, содержащий адрес-смещение следующей команды, подле-

жащей исполнению, относительно кодового сегмента CS в процес-

сорах семейства x86. Регистр IP связан с CS в виде CS:IP, где CS

является текущим кодовым сегментом, а IP – текущим смещением относительно этого сегмента. Регистр IP является 16-разрядным регистром-указателем. Кроме него, в состав регистров этого типа входят SP (англ. Stack Pointer – указатель стека) и BP (англ. Base Pointer – базовый указатель).

EIP – 32-битный аналог (младшая часть RIP), более полно его работу можно описать следующим образом: начиная с процессора

80386, была введена 32-разрядная версия регистра-указателя – EIP. В

данном случае IP является младшей частью этого регистра (первые 16

разрядов). Принцип работы EIP в целом схож с работой регистра IP.

Основная разница состоит в том, что в защищенном режиме, в отличие от реального режима, регистр CS является селектором (селектор указы-

вает не на сам сегмент в памяти, а на его дескриптор сегмента в табли-

це дескрипторов).

RIP – 64-битный аналог, на основе которого в 64-разрядных процессорах введен новый метод адресации RIP-relative.

Принцип работы

Например, в регистре сегмента кода CS содержится шестнадцатеричное значение 2CB50H, в регистре IP хранится смещение 123H.

38

Адрес следующей инструкции, подлежащей исполнению, вычисляется путем суммирования адреса в CS (сегменте кода) со смещением в регистре

IP: 2CB50H + 123H = 2CC73H. Таким образом, адрес следующей инструкции для исполнения равен 2CC73H. При выполнении текущей инструкции про-

цессор автоматически изменяет значение в регистре IP, в результате чего ре-

гистровая пара CS:IP всегда указывает на следующую подлежащую исполне-

нию инструкцию.

Регистры данных служат для хранения промежуточных вычислений (их также называют регистрами общего назначения (РОН)):

RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, R8–R15 – 64-

битные;

EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI, R8D–R15D – 32-

битные (extended AX);

AX, CX, DX, BX, SP, BP, SI, DI, R8W–R15W – 16-битные;

AH, AL, CH, CL, DH, DL, BH, BL, SPL, BPL, SIL, DIL, R8B–

R15B – 8-битные (половинки 16-битных регистров), например, AH – high AX – старшая половинка 8 бит, AL – low AX – младшая половинка

8 бит.

Индексные регистры предназначены для хранения индексов при работе с массивами. SI (Source Index) содержит индекс источника, а DI (Destination

Index) – индекс приемника, хотя их можно использовать и как регистры об-

щего назначения. Применяются в строковых операциях.

Регистры-указатели используются для работы со стеком. В частности, BP (Base Pointer) позволяет работать с переменными в стеке. Его также мож-

но использовать в других целях. SP (Stack Pointer) указывает на вершину сте-

ка. Он используется командами, которые работают со стеком.

Сегментные регистры: CS (Code Segment), DS (Data Segment), SS

(Stack Segment) и ES (Enhanced Segment) предназначены для обеспечения сегментной адресации. Код находится в сегменте кода, данные – в сегменте данных, стек – в сегменте стека и есть еще дополнительный сегмент данных.

39

Реальный физический адрес получается путем сдвига содержимого сегмент-

ного регистра на 4 бита влево и прибавления к нему смещения (относитель-

ного адреса внутри сегмента). Применяются для обращения сегменту памяти.

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

Значение некоторых флагов в регистре флагов (рис.12) можно изменять напрямую, с помощью специальных инструкций (например, CLD для сброса флага направления), Но нет инструкций, которые позволяют обратиться

(проверить или изменить) к регистру флагов как к обычному регистру. Одна-

ко можно сохранять регистр флагов в стек или регистр (R)(E)AX и восста-

навливать регистр флагов из них с помощью инструкций LAHF (загрузить в ah (аккумуляторный регистр) значения регистра флагов – от англ. load flags in register ah), SAHF (сохранение в аккумуляторный регистр значения реги-

стра флагов – save flags in register ah), PUSHF, PUSHFD, POPF и POPFD (ис-

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

стояния битов регистра флагов см. в Прил. 1.

Флаги состояния позволяют одной и той же арифметической инструк-

ции выдавать результат трех различных типов:

беззнаковый если результат считать беззнаковым числом, то флаг CF

показывает условие переполнения (перенос или заем);

двоично-десятично кодированный (BCD) целое число для BCD-

результата перенос/заем показывает флаг AF;

знаковый для знакового результата (в дополнительном коде) перенос или заем показывает флаг OF.

Флаг SF отражает знак знакового результата, флаг ZF отражает и без-

знаковый, и знаковый нулевой результат.

Вдлинной целочисленной арифметике флаг CF используется совместно

синструкциями сложения с переносом (ADC) и вычитания с заемом (SBB)

для распространения переноса или заема из одного вычисляемого разряда

длинного числа в другой.

40