Смекни!
smekni.com

Проектирование процессора ЭВМ с архитектурой IA-32 (стр. 3 из 9)

n(РАОП) = log2 (E / L) = log2 (223/ 23) = 20 [бит].

где E – емкость оперативной памяти (8Мб);

L – длина слова (8 байт).

3) Регистр чтения и регистр записи.

Оба регистра будут иметь одинаковую разрядность, равную длине слова ОП- L.

n(РгЧт/РгЗп)=64 [бит]

4) Слово состояния процессора.

В качестве слова состояния процессора будет выступать регистр CR0, разрядность которого, согласно IA-32, 32 бита.

n(ССП)=32 [бит].

5) Рабочие программно недоступные регистры.

Рабочими регистрами будут регистры, находящиеся в блоках обработки данных. Так, например, для выполнения команды XCHG необходим регистр для промежуточного хранения переменной Temp.Этот регистр будет 32х разрядным.

Также программно недоступным будет регистр буфера РгБ, необходимый для уменьшения количества обращений к ОП. Его разрядность вычисляется по формуле L-1 (длина слово ОП минус 1 байт)

Таким образом, n (РгБ)=56[бит].

Так же нужны регистры для хранения операндов, для промежуточных вычислений, сдвигов (32 разряда), для обработки знаков, характеристик и мантисс(1, 15 и 64 разряда соответственно).

Для обращения к отдельным битам регистра флагов EFLAGS, системного регистра CR0 необходимs отдельныt регистрs по 32 разряда.

Аналогично для 16 разрядных регистров TR, SR, CR нужны 16 разрядные регистры.

Для работы с РОНами необходимы регистры, которые обращались бы с частью этих регистров(EAX->AX->AL и AH), то есть 32, 16 и 8 разряда

2.4 Регистровая модель

2.4.1 Структура ССП

Словом состояния программы является регистр CR0.

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

ССП имеет следующий формат:

PG CD NW AM WP NE ET TS EM MP PE
31 30 29 28 19 18 17 16 15 6 5 4 3 2 1 0

Регистр CR0 содержит флаги, которые управляют или показывают условия, относящиеся к системе в целом, а не к отдельной задаче. Младшие 16 бит (биты с 0 по 15) этого регистра называются словом состояния машины (MachineStatusWord - MSW) для совместимости с МП 80286.

PE - разрешение защиты (ProtectionEnable, 286+). Когда PE=1 процессор находится в защищенном режиме. Если бит сброшен, то процессор находится либо в режиме реального адреса, либо в режиме системного управления (тип режима определяется аппаратно: в режиме системного управления активен сигнал SMIACT#).

MP - наличие сопроцессора (MathPresent, 286+). Влияет на выполнение команды WAIT/FWAIT, которая используется для взаимодействия с сопроцессором(0).

EM - эмуляция сопроцессора (Emulation, 286+). Показывает, нужно ли эмулировать функции сопроцессора. Установка бита EM часто возникает в случае отсутствия сопроцессора в системе. Когда EM=1, любая команда для сопроцессора, команда MMX или SSE/SSE2 вызывает особый случай(0).

TS - задача переключена (TaskSwitched, 286+). Процессор устанавливает этот бит при каждом переключении задач. Он также проверяет этот бит, когда интерпретирует команды сопроцессора, так как состояние последнего требуется сохранять только в случае запроса сопроцессора новой задачей. Бит TS может быть очищен загрузкой в регистр CR0, а также специальной командой CLTS(0).

ET - тип расширения (Extension Type, 386, 486). Показывает тип сопроцессора: 80287 (ET=0), 80387 или встроенный FPUi486DX (ET=1). В новых моделях бит зарезервирован и всегда содержит 1.

NE - ошибка сопроцессора (NumericError, 486+). Когда NE=1, процессору разрешается пользоваться внутренним ("родным") механизмом сигнализации ошибок с плавающей точкой. Когда NE=0, процессор эмулирует сигнализацию ошибок с плавающей точкой как у внешних сопроцессоров (80287, 80387), выставляя сигнал FERR#, который должен обрабатываться внешним контроллером прерываний(0).

WP - защита от записи (WriteProtect, 486+). Защита от записи страниц с пометкой "read-only" при обращениях с уровня супервизора.

AM - маска выравнивания (AlignmentMask, 486+). Если CR0.AM=1 и EFLAGS.AC=1 и CR0.PE=1 и CPL=3, то производится контроль выравнивания. Т.е. при обращениях к памяти двойное слово обязательно должно начинаться с адреса, кратного 4, а 16-битное слово - с адреса, кратного 2, иначе генерируется нарушение контроля выравнивания (исключение #17).

NW - несквозная запись (Not Write-through, 486+). Используется для управления кэшированием(0).

CD - запрещение кэш-памяти (CacheDisable, 486+). Используется для управления кэшированием(1).

PG - страничная трансляция (Paging, 386+). Определяет, использует ли микропроцессор таблицы страниц для трансляции линейных адресов в физические. Страничная трансляция используется только в защищенном режиме, и попытка выставить этот бит в реальном режиме приводит к нарушению общей защиты (исключение #13)(0).

2.4.2 StatusRegister

Показывает текущее состояние x87FPU.

15 14 1311 10 9 8 7 6 5 4 3 2 1 0
B C3 TOP C2 C1 C0 ES SF PE OE UE ZE DE IE

B - FPU занят

TOP - вершина стека

Флаги исключений

- точность

- переполнение

- деление на 0 ( не используется)

- денормализованный операнд

- неправильная операция

SF – ошибка стека( не используется)

ES – статус ошибки(не используется)

C3 C2 C1 C0- флаги состояния (с3,с2,с1 – не используются)

2.4.3 ControlRegister.

Содержит маски исключений и контролирует точность и методы округления.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
X RC PC PM OM UM ZM DM IM

X – контроль бесконечности

RC – контроль округления

PC - контроль точности

Маски исключений

- точность

- Underflow

- переполнение

- деление на 0(нет)

- денормализованный операнд

- неверная операция

2.4.4 TAG Register

Регистр отражает содержимое регистров стека FPU.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
TAG(7) TAG(6) TAG(5) TAG(4) TAG(3) TAG(2) TAG(1) TAG(0)

TAG значения

00 — используемый

01 — 0

10 — NaN, неподдерживаемый формат, бесконечность или денормализованный

11 — пустой

Регистры, предусмотренные архитектурой IA-32:

1) восемь 32-разрядных регистров общего назначения (РОН): EAX,

EBX, ECX, EDX, ESI, EDI, EBP, ESP;

2) шесть 16-разрядных сегментных регистров CS, SS, DS, ES, FS,

GS;

3) 32-разрядный указатель команд EIP;

4) 32-разрядный регистр флагов EFLAGS;

5) восемь 80-разрядных регистров данных R0-R7 для чисел с плавающей точкой, организованных в виде кольцевого стека;

6) 16-разрядные регистры блока с плавающей точкой: регистр тэгов

TW, регистры управления FPCR и состояния FPSR;

7) 32-разрядный системный регистр CR0.

2.4.5 Регистры БОД

БОД БФТ содержит 16 – 32-х разрядных регистров, 8 из них РОНы, 6 – сегментные и 2 рабочих регистра – РгЛОП (регистр, куда извлекается левый операнд из памяти) и РгП ( регистр для правого операнда). Для упрощения понимания алгоритма сложения чисел с ПТ (команда FIADD) внесём синонимы рабочих регистров БФТ. Р1р ( порядок числа из ST) , РСМр (порядок числа из памяти)- это РгП.


Таблица 2.3 – Регистры БФТ

Обозначение Адрес Регистра Комментарий
РОН[1] 0000 EAX
РОН[2] 0001 EDX
РОН[3] 0010 ECX
РОН[4] 0011 EBX
РОН[5] 0100 EBP
РОН[6] 0101 ESP
РОН[7] 0110 ESI
РОН[8] 0111 EDI
Seg[1] 1000 CS
Seg[2] 1001 SS
Seg[3] 1010 DS
Seg[4] 1011 ES
Seg[5] 1100 FS
Seg[6] 1101 CS
РгЛОП 1110 Рабочий
РгП 1111 Рабочий

БОД БПТ содержит 16 – 64-х разрядных регистров. Все они являются рабочими.

Таблица 2.4 – Регистры БПТ

Обозначение Комментарий
Р1з Рабочий
Р1м Рабочий
РСМз Рабочий
РСМм Рабочий
СчТ Рабочий
РПТ[5..16] Рабочий

Также в регистровую модель входят EFLAGS, CCП(CR0), EIP(CчАК), с разрядностью по 32 бита.

Дополнительно к регистровой памяти относятся РгК, буферный регистр РгБ, РгЧтОП, РгЗпОП. Отдельно размёщены стековые регистры ST, также TR, SR, TR.

2.5 Виды адресации

В архитектуре IA-32 определен большой и гибкий набор режимов адресации, используемых для доступа к отдельным элементам и областям памяти. Как минимум один операнд из двух, которые используются в команде, должен находиться в регистре. Регистр задается в поле Reg/OPcodeбайта ModR/M. В таблице 2.9 приведены значения байта ModR/M для 32-х битного режима. В таблице 2.10 приведены значения байта ModR/M для 16-и битного режима. Если второй операнд тоже содержится в регистре, этот регистр задается в поле R/M того же байта. Если же второй операнд находиться за пределами регистра, он может быть непосредственно задан в команде, такой вид адресации называется непосредственным, или же храниться в памяти. В таблице 2.7 показано, как задается второй операнд для 32-х разрядного режима. Такие типы адресации, как косвенная регистровая и регистровая определяются 2-х битовым полем ModR/M. В базовой индексной адресации применяется байт SIB. Коды коэффициентов масштабирования 1, 2, 4 и 8 соответствуют кодам 00, 01, 10, 11. В этом байте задаются базовый и индексный регистры. Аналогичное описание для 16-и битного режима приведено в таблице 2.8.

Непосредственная адресация (immediate). Операнд содержится прямо в команде. Это 8-разрядное, 16-разрядное или 32-разрядное число, длина которого определяется соответствующим битом в коде операции.

Прямая адресация (direct). Адрес операнда в памяти определяется заданным в команде смещением.

Регистровая адресация (register). Операнд содержится в одном из восьми регистров общего назначения, заданном в команде.