Opcode | Immediate |
00001100 |
|
15 8 | 7 0 |
4)Выполняется побитовая операция – логическое ИЛИ. Каждый бит результата команды OR устанавливается в 0, если оба соответствующие биты первого и второго операнда равны 0, в противном случае устанавливается 1 Флаги результата: OF и CF остаются пустыми(0); SF, ZF, PF устанавливаются в зависимости от результата 5)Исключения: #GP - если адрес операнда в памяти вне пределов сегментных регистров CS, DS, ES, FS, или GS . #SS - если адрес операнда в памяти вне предела сегментного регистра SS. в)
XCHG
Mem
32,
Reg
32 Код операции 87h. 1) Команды кодируется с использованием 3х полей – Opcode( 1 байт), ModR/M( 1 байт), Disp( 1 или 2 байта). Соответственно команда имеет размер 3 или 4 байта. 2) Команда работает с 2 байтовыми типами данных. В операции принимает участие операнд, хранящийся в памяти и любой регистр общего назначения. Операндом – приёмником является операнд в памяти. 3) Формат команды : регистр – память Способ адресации: базовая с 16 разрядным исполнительным адресом. Исполнительный адрес получается путём сложения базового регистра ( BP-поле R/M=110 или BX- поле R/M=111) и смещения (поле Disp – 8 (Mod=01) или 16 (Mod=10) разрядов) Кодирование. Disp = 8 бит Opcode | ModR/M | Disp |
Mod | Reg/Opcode | R/M |
10000111 | 01 | reg | 11x |
|
23 16 | 15 14 | 13 11 | 10 8 | 7 0 |
Disp = 16 бит Opcode | ModR/M | Disp |
Mod | Reg/Opcode | R/M |
10000111 | 10 | reg | 11x |
|
31 24 | 23 22 | 21 19 | 18 16 | 15 0 |
4) Выполняется обмен содержимым между 2х байтным регистром и 2х байтным операндом в памяти. Если в операции используется операнд из памяти, то автоматически запускается процессорный протокол блокировки на время всей операции обмена. Флагов для данной операции нет. 5)Исключения: #GP – операнд в не перезаписываемом сегменте. Эффективный адрес операнда вне пределов сегментных регистров CS, DS, ES, FS, или GS. Регистр DS, ES, FS, или GS содержит нулевой сегментный селектор. #SS – эффективный адрес операнда вне предела сегментного регистра SS. #PF(fault-code) – ошибка страничного режима. #AC - флаг контроля за выравниванием. Если AC=1 и AM=1, то исключение #17 из-за нарушения выравнивания в 3м кольце защиты разрешено. г)
FIADD
m
16
int
Код операции DB/0h, 1) Команды кодируется с использованием 3х полей – Opcode( 1 байт), ModR/M( 1 байт), Disp( 1 или 2 байта). Соответственно команда имеет размер 3 или 4 байта. Для всех команд с ПТ Opcode начинается с 11011, затем выбирается формат памяти MF(11, так как операция выполняется с целочисленным данными), OPA – вторая часть кода операции, Mod, OPB – третья часть кода операции, R/M и Disp( 1 или 2 байта). 2)Команда складывает содержимое памяти (2 байтовое целое число) с содержимым регистра ST(0)( 80 бит). FPU выполняет все вычисления в 80-битном расширенном формате. Операндом – приёмником всегда является регистр FPU. 3) Формат команды : регистр – память Способ адресации: базовая с 16 разрядным исполнительным адресом. Исполнительный адрес получается путём сложения базового регистра ( BP-поле R/M=110 или BX- поле R/M=111) и смещения (поле Disp – 8 (Mod=01) или 16 (Mod=10) разрядов) Кодирование.Disp = 8 бит Opcode | ModR/M | Disp |
| MF | OPA | Mod | OPB | R/M |
11011 | 11 | 0 | 01 | 000 | 11x |
|
23 19 | 18 17 | 16 | 15 14 | 13 11 | 10 8 | 7 0 |
Disp = 16 бит Opcode | ModR/M | Disp |
| MF | OPA | Mod | OPB | R/M |
11011 | 11 | 0 | 10 | 000 | 11x |
|
31 27 | 26 25 | 24 | 23 22 | 21 19 | 18 16 | 15 0 |
4) Производится сложение операнда из памяти и регистра с сохранением в регистре результата. Команда FIADD преобразует целочисленный операнд к формату с ПТ с двойной точностью перед выполнением сложения. Если сумма двух операндов с противоположными знаками равна 0, результат принимает значение +0. Исключение при округлении в режиме -∞, в этом случае результат -0. Когда операндом является целое число равное 0, то оно трактуется как +0. Таблица2.1 - Результаты команды FIADD. | DEST |
-∞ | −F | −0 | +0 | +F | +∞ | NaN |
S R C | −I | -∞ | −F | SRC | SRC | ±F or ±0 | +∞ | NaN |
+0 | -∞ | DEST | ±0 | +0 | DEST | +∞ | NaN |
+I | -∞ | ±F or ±0 | SRC | SRC | +F | +∞ | NaN |
Кроме обычных чисел формат IEEE предусматривает несколько специальных случаев, которые могут получаться в результате математических операций и над которыми также можно выполнять некоторые операции: · положительный ноль: все биты числа сброшены в ноль; · отрицательный ноль: знаковый бит — 1, все остальные биты — нули; · положительная бесконечность: знаковый бит — 0, все биты мантиссы — 0, все биты экспоненты — 1; · отрицательная бесконечность: знаковый бит — 1, все биты мантиссы — 0, все биты экспоненты — 1; · денормализованные числа: все биты экспоненты — 0 (используются для работы с очень маленькими числами — до 10-16445 для расширенной точности); · неопределенность: знаковый бит — 1, первый бит мантиссы (первые два для 80-битных чисел) — 1, а остальные — 0, все биты экспоненты — 1; · не-число типа SNAN (сигнальное): все биты экспоненты — 1, первый бит мантиссы — 0 (для 80-битных чисел первые два бита мантиссы — 10), а среди остальных бит есть единицы; · не-число типа QNAN (тихое): все биты экспоненты — 1, первый бит мантиссы (первые два для 80-битных чисел) — 1, среди остальных бит есть единицы. Неопределенность — один из вариантов QNAN; · неподдерживаемое число: все остальные ситуации. Флаги результата: РЕ — флаг неточного результата — результат не может быть представлен точно UE — флаг антипереполнения — результат слишком маленький. ОЕ — флаг переполнения — результат слишком большой. DE — флаг денормализованного операнда — выполнена операция над денормализованным числом. IE — флаг недопустимой операции — произошла ошибка стека (SF = 1) или выполнена недопустимая операция. C1 устанавливается в 0, если стек оказался пуст; устанавливается, если результат был округлён; во всех остальных случаях пуст. C0, C2, C3 не определены. 5)Исключения: #IS стек пуст. #IA операнд является signalling Not a Number (порядок 111...111, мантисса 1,0ххх...ххх (ненулевая)) или его формат не поддерживается. Операнды являются бесконечностями с разными знаками. #D - денормализованный операнд. #U - результат слишком мал для заданного формата. #O – результат слишком велик для заданного формата. #P - значение не может быть точно представлено в заданном формате. 2.2 Форматы данных Таблица 2.2 - Типы данных FPU Тип данных | Бит | Количество значащих цифр | Пределы |
Целое слово | 16 | 4 | -32768 — 32767 |
Расширенное вещественное | 80 | 19 | 3.37*10-4932 —1.18*104932 |
а) Числа с фиксированной точкой Числа с фиксированной точкой рассматриваются как целые числа со знаком и без знака (Рис.2.1). Все биты числа с фиксированной точкой без знака используются для представления абсолютной величины числа.. При сложении двух чисел с ФТ без знака считается, что более короткое число дополнено старшими нулями. В числах с фиксированной точкой со знаком самый левый бит используется для представления знака, за которым следует поле целого числа. Положительные числа представляются в прямом двоичном коде со знаковым битом, равным 0. Отрицательные числа представляются в дополнительном коде со знаковым битом, равным 1. В некоторых операциях для получения результата используется представление числа в обратном коде. Обратный код числа получается инвертированием каждого бита этого числа. Рис. 2.1. Представление чисел с фиксированной точкой. б) Числа с плавающей точкой. Вещественный формат IEEE, используемый в проектируемом процессоре: · расширенное вещественное: бит 79 — знак мантиссы, биты 78 – 64 — 15-битная экспонента + 16 383, биты 63 – 0 — 64-битная мантисса с первой цифрой (то есть бит 63 равен 1) (Рис. 2.2). Рис. 2.2. Представление чисел с плавающей точкой (расширенный формат) Формат начинаются со знакового бита для всего числа; 0 указывает на положительное число, 1 — на отрицательное. Затем следует смещенная экспонента. В конце идут мантиссы по 23, 52 и 63 бита соответственно. Нормализованная мантисса начинается с 1, за которой следует 1 остаток мантиссы. 1 бит перед мантиссой сохраняется. Следовательно, стандарт определяет мантиссу следующим образом. Она состоит из явного бита, который всегда равен 1, и явной двоичной точки, за которыми идут 63 произвольных бита. Если все 63 бита мантиссы равны 0, то мантисса имеет значение 1,0. Если все биты мантиссы равны 1, то числовое значение мантиссы немного меньше, чем 2,0. Значащая часть числа (s) всех нормализованных чисел лежит в диапазоне 1 < s < 2. 2.3 Расчет и выбор разрядности основных узлов процессора 1) Регистр команд предназначен для хранения команд и его длина определяется максимальным форматом команды из заданного в техническом задании набора команд: n(РгК) = 32 [бит]. 2.3.2. Регистр адреса команд: Длина счетчика адреса команд СчАК, определяется емкостью ОП в полусловах: n(СчАК) = log2 E = log2 223 = 23 [бит]. 2) Регистр адреса ОП. Данный регистр должен обеспечивать возможность содержания всех адреса, по которым идет обращение к оперативной памяти. Длину данного регистра можно рассчитать по следующей формуле: 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. Он содержит системные флаги управления, которые контролируют режим работы статусом процессора. ССП имеет следующий формат: P G | C D | N W |
| A M |
| W P |
| N E | E T | T S | E M | M P | P E |
31 | 30 | 29 | 28 19 | 18 | 17 | 16 | 15 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Регистр CR0 содержит флаги, которые управляют или показывают условия, относящиеся к системе в целом, а не к отдельной задаче. Младшие 16 бит (биты с 0 по 15) этого регистра называются словом состояния машины (Machine Status Word - MSW) для совместимости с МП 80286. PE - разрешение защиты (Protection Enable, 286+). Когда PE=1 процессор находится в защищенном режиме. Если бит сброшен, то процессор находится либо в режиме реального адреса, либо в режиме системного управления (тип режима определяется аппаратно: в режиме системного управления активен сигнал SMIACT#). MP - наличие сопроцессора (Math Present, 286+). Влияет на выполнение команды WAIT/FWAIT, которая используется для взаимодействия с сопроцессором(0). EM - эмуляция сопроцессора (Emulation, 286+). Показывает, нужно ли эмулировать функции сопроцессора. Установка бита EM часто возникает в случае отсутствия сопроцессора в системе. Когда EM=1, любая команда для сопроцессора, команда MMX или SSE/SSE2 вызывает особый случай(0). TS - задача переключена (Task Switched, 286+). Процессор устанавливает этот бит при каждом переключении задач. Он также проверяет этот бит, когда интерпретирует команды сопроцессора, так как состояние последнего требуется сохранять только в случае запроса сопроцессора новой задачей. Бит TS может быть очищен загрузкой в регистр CR0, а также специальной командой CLTS(0). ET - тип расширения (Extension Type, 386, 486). Показывает тип сопроцессора: 80287 (ET=0), 80387 или встроенный FPU i486DX (ET=1). В новых моделях бит зарезервирован и всегда содержит 1. NE - ошибка сопроцессора (Numeric Error, 486+). Когда NE=1, процессору разрешается пользоваться внутренним ("родным") механизмом сигнализации ошибок с плавающей точкой. Когда NE=0, процессор эмулирует сигнализацию ошибок с плавающей точкой как у внешних сопроцессоров (80287, 80387), выставляя сигнал FERR#, который должен обрабатываться внешним контроллером прерываний(0). WP - защита от записи (Write Protect, 486+). Защита от записи страниц с пометкой "read-only" при обращениях с уровня супервизора. AM - маска выравнивания (Alignment Mask, 486+). Если CR0.AM=1 и EFLAGS.AC=1 и CR0.PE=1 и CPL=3, то производится контроль выравнивания. Т.е. при обращениях к памяти двойное слово обязательно должно начинаться с адреса, кратного 4, а 16-битное слово - с адреса, кратного 2, иначе генерируется нарушение контроля выравнивания (исключение #17). NW - несквозная запись (Not Write-through, 486+). Используется для управления кэшированием(0). CD - запрещение кэш-памяти (Cache Disable, 486+). Используется для управления кэшированием(1). PG - страничная трансляция (Paging, 386+). Определяет, использует ли микропроцессор таблицы страниц для трансляции линейных адресов в физические. Страничная трансляция используется только в защищенном режиме, и попытка выставить этот бит в реальном режиме приводит к нарушению общей защиты (исключение #13)(0). 2.4.2
Status
Register Показывает текущее состояние x87FPU. 15 | 14 | 13 11 | 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
Control
Register
. Содержит маски исключений и контролирует точность и методы округления. 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). Операнд содержится в одном из восьми регистров общего назначения, заданном в команде.
Косвенная регистровая адресация (
register indirect). Адрес операнда в памяти содержится в одном из восьми регистров общего назначения, заданном в команде.
Базовая
индексная
(base with index). В команде задаются два из восьми регистров общего назначения и коэффициент масштабирования – 1,2,4 или 8. Регистры используются как базовый и индексный, а исполнительный адрес вычисляется следующим образом: содержимое индексного регистра умножается на коэффициент масштабирования, а к результату прибавляется содержимое базового регистра.
Таблица 2.5 – Режимы адресации, выбираемые байтами ModR/M SIB(32) Байты ModR/M |
Адресация |
Поле Mod B7 b6 | Поле R/M b2 b1 b0 |
0 0 | Reg | Косвенная регистровая, EA=[Reg] |
1 1 | Reg | Регистровая, EA=Reg |
Исключения |
0 0 | 1 0 1 | Прямая, EA=Disp32 |
0 0 | 1 0 0 | Базовая индексная(применяется байт SIB), EA=[Base]+[Index]×Scale. |
Таблица 2.6 – Режимы адресации, выбираемые байтами ModR/M SIB(16) Быйты ModR/M |
Адресация |
Поле Mod b7 b6 | Поле R/M b2 b1 b0 |
0 0 | Reg | Косвенная регистровая, EA=[Reg] |
1 1 | Reg | Регистровая, EA=Reg |
Исключения |
0 0 | 1 1 0 | Прямая, EA=Disp16 |
3 Структурная организация процессора 3.1 Общая структура процессора Структурная схема процессора представлена на Рис.3.1. В состав процессора входят: блок микропрограммного управления (БМУ), арифметико-логическое устройство(АЛУ), которое может разделяться на операционный блок с фиксированной точкой и операционный блок с плавающей точкой. Обмен между блоками и также связь между процессором и ОП осуществляется через блок интерфейса (БИНТ). Управляющие сигналы передаются из БМУ в АЛУ (БФТ и/или БПТ) и ОП по шине управления (ШУ). Осведомительные сигналы (ОС) из БФТ, БПТ и ОП поступают в БМУ по шине ШОС. Рис.3.1.Структурная схема процессора 3.2 Выбор и обоснование элементной базы Для проектирования МП на архитектуре IA-32 был выбран микропроцессорный комплект серии 1804. Сильными сторонами этого комплекта являются микропрограммируемость и возможность разрядного расширения . Высокая производительность реализуется за счёт применения ТТЛШ-технологии. Разнообразие схем, ориентированных на применение в различных устройствах, обеспечивает большую архитектурную гибкость при разработке вычислительной аппаратуры. Блоки обработки данных построены на схемах К1804ВС2, дополнены схемами ускоренного переноса К1804ВР1. БМУ построен на схеме К1804ВУ4 . Регистровая память организована на 4х разрядных схемах К1804ИР1 и на 8 разрядных схемах К1804ИР2. 3.3 Блоки обработки данных 3.3.1 Блок с фиксированной точки БФТ построен на 8 микропроцессорных секциях К1804ВС2, так как их разрядность 4 бита. Они дополнены 3 схемами ускоренного переноса К1804ВР1., которые уменьшают время вычислений при переносе разряда из одной МПС в другую. В данной МПС находится РЗУ, содержащее 16 четырёх разрядных регистра. 8 из них будут использоваться как РОНы. МПС содержит доступные снаружи буферы DY и DB. Корпус имеет 48 выводов. АЛУ выполняет 16 простых операций (7 арифметических, 7 логических, константа 0 и константа 1), а также 9 специальных функций, среди которых есть и многотактные операции (умножение, деление). Источники операндов задаются сочетанием сигналов на управляющих входах, и I0. Это могут быть РА, РВ, DA, DB, PQ в следующих сочетаниях: РА — РВ PA —DB, PA-PQ (EA = 0), DA — РВ, DA - DB, DA —PQ (= 1). В случаях РА — PQ и DA — PQ возможны варианты обмена по шине DB, работающей на выдачу ( = 0) либо выключенной ( = 1). БФТ связан с ОП, БМУ через шины данных DA, DB, DY, шину МК. На выходе МПс вырабатываются флаги результата: перенос С, переполнение V, знак N, признак нуля Z. БФТ применяется для выполнения операций над числами с фиксированной точкой. Рис.3.2. Структурная схема МПС К1804ВС2 Особенность сдвигателей заключается в том, что на них реализуются не только логические, но и арифметические сдвиги. Арифметические сдвиги не затрагивают знаковый разряд. В РЗУ МПС К1804ВС2 можно записывать (по адресу В) либо результат АЛУ (сдвинутый или несдвинутый), либо данные с шины DY. Выделение знакового разряда при арифметических сдвигах, особенности выполнения специальных функций приводят к тому, что МПС должна работать по-разному, в зависимости от того, в какой позиции она находится — старшей, средней или младшей. При создании многоразрядной схемы МПС программируется по занимаемой позиции. Для этого предназначены специальные выводы БИС: LSS и WRITE/MSS. Линия LSS — это вход задания младшей позиции: LSS = 0 — младшая МПС, LSS=1—средняя или старшая МПС. Двунаправленная линия WRITE/MSS имеет два значения: в младшей МПС (при LSS = 0) это выход WRITE для управления входом (разрешение записи в РЗУ) всех секций; при LSS=1 эта линия становится входом выбора старшей МПС (MSS=0) или средней МПС (MSS = 1). Кроме рассмотренных выше управляющих входов, имеются входы (разрешение выдачи результата АЛУ па шину DY) и (разрешение записи в PQ). Выход признака нуля Z в некоторых специальных функциях используется как дополнительный управляющий вход. Так как выходы АЛУ N (знак) и OVR (переполнение) используются только в старшей МПС, а выходы и для формирования ускоренного переноса — только в средних и младшей МПС, то эти четыре сигнала мультиплексируются в две линии /N и /OVR в зависимости от позиции МПС. Всего для управления секцией К1804ВС2 требуется 22 разряда микрокоманды (не считая управления переносом и сдвигами). Таблица 3.1 - Стандартные функции, реализуемые МПС. Сигналы на входах выбора функции |
Функция АЛУ F |
I4 | I3 | I2 | I1 |
0 | 0 | 0 | 0 | Специальные функции при IO=0 |
0 | 0 | 0 | 0 | 1111 при IO=1 |
0 | 0 | 0 | 1 | S-R-1+CO |
0 | 0 | 1 | 0 | R-S-1+CO |
0 | 0 | 1 | 1 | R+S+CO |
0 | 1 | 0 | 0 | S+CO |
0 | 1 | 0 | 1 | S+CO |
0 | 1 | 1 | 0 | R+CO |
0 | 1 | 1 | 1 | R+CO |
1 | 0 | 0 | 0 | 0000 |
1 | 0 | 0 | 1 | Ri^Si |
1 | 0 | 1 | 0 | Ri+Si |
1 | 0 | 1 | 1 | Ri+Si |
1 | 1 | 0 | 0 | Ri+Si |
1 | 1 | 0 | 1 | RiVSi |
1 | 1 | 1 | 0 | Ri^Si |
1 | 1 | 1 | 1 | RiVSi |
Таблица 3.2 - Специальные функции, реализуемые МПС. Входы | Функция | Функция АЛУ F
| Функция Сд. F | Состояние выводов | Функции Сд. Q и Рг. Q | Состояние выводов |
I8 | I7 | I6 | I5 | PF3 | PF0 | PQ3 | PQ0 | W |
Ст. МПС | Др. МПС |
0 | 0 | 0 | 0 | Умножение без знака | S+C0, если Z=0, R+S+C0, если Z=1 | Лог. F/2→Y | X | Вход | F0 | Лог. Q/2→Q | Вход | Q0 | 0 |
0 | 0 | 1 | 0 | Умножение в дополнительном коде | S+C0, если Z=0, R+S+C0, если Z=1 | Лог. F/2→Y | X | Вход | F0 | Лог. Q/2→Q | Вход | Q0 | 0 |
0 | 1 | 0 | 0 | Прибавление к числу единицы или двойки | S+1+C0 | F→Y | Вход | Вход | Четность | Хранение | X | X | 0 |
0 | 1 | 0 | 1 | Преобразование числа в дополнительный код | S+C0, если Z=0, S+C0, если Z=1 | F→Y | Вход | Вход | Четность | Хранение | X | X | 0 |
0 | 1 | 1 | 0 | Умножение в дополнительном коде (последний цикл) | S+C0, если Z=0, S–R–1–C0, если Z=1 | Лог. F/2→Y | Х | Вход | F0 | Лог. Q/2→Q | Вход | Q0 | 0 |
1 | 0 | 0 | 0 | Нормализация слова одной длины | S+C0 | F→Y | F3 | F3 | X | Лог. 2Q→Q | Q3 | Вход | 0 |
1 | 0 | 1 | 0 | Нормализация слова двойной длины | S+C0 | Лог. 2 F→Y | R3+F3 | F3 | Вход | Лог. 2Q→Q | Q3 | Вход | 0 |
1 | 1 | 0 | 0 | Деление в дополнительном коде | S+R+C0, если Z=0, S–R–1+C0, если Z=1 | F Лог. 2 F→Y | R3+F3 | F3 | Вход | Лог. 2Q→Q | Q3 | Вход | 0 |
1 | 1 | 1 | 0 | Деление в дополнительном коде, коррекция | S+R+C0, если Z=0, S–R–1+C0, если Z=1 | F→Y | F3 | F3 | X | Лог. 2Q→Q | Q3 | Вход | 0 |
3.3.1 Блок с плавающей точкой БПТ выполняет операции над числами с плавающей точкой, выполняет их приведение для последующей обработки. БПТ построен на 16 МПС (К1804ВС2). Регистры РЗУ используются как рабочие. Всего РЗУ состоит из 16ти 64 разрядных регистров. Через мультиплексор из ST , а потом через шину DB, на БОД подаются 64 разряда мантиссы. Для определения вершины стека используется регистр SR. Через шину DY идёт обратная запись в стек 64 разрядов мантиссы. Через шину DA поступают данных из других источников данных. Схема ФУП используется для проверки условий перехода. Построение БОД для плавающей точки и схема соединения аналогична БФТ. Рис.3.3. Структурная схема БПТ 3.4 Управляющий автомат (УА) 3.4.1 УА с жесткой логикой. Управляющий автомат с жесткой логикой представляет собой конечный автомат, формирующий выходные сигналы управления в зависимости от текущего состояния и значений осведомительных входных сигналов. Составим управляющий автомат с жесткой логикой для выполнения команды SUB вычитания чисел в формате с фиксированной точкой. Составляем отмеченную ГСА: В условной вершине записываем элемент из множества логический условий X. В операторные вершины записываем операторы (микрооперации) y1 и y2 соответственно из множества микроопераций Y. Начальную и конечную вершины отмечаем символом a1, оставшиеся операторные вершины обозначаем а2 и а3.Находим пути перехода между операторными вершинами. ГСА автомата имеет условную вершину: x - CR0 и 2 операторные вершины: a1 – Mem16 :=Mem16 - Reg[0..15], a2 – Mem32 :=Mem32 - Reg[0..31] Рис. 3.4. ГСА алгоритма Рис. 3.5. Граф автомата Мура Так как имеется три состояния, то количество триггеров равно 2. (N=]log2n[) Построение управляющего автомата будем осуществлять на D – триггере.Таблица 3.3 - Структурная таблица. ai | Код ai | ai+1 | Код ai+1 | x | y | Сигналы возбуждения D1 D2 |
Q1 Q2 | Q1 Q2 |
a0 | 0 0 | a1 | 0 1 | x |
| 0 1 |
a0 | 0 0 | a2 | 1 0 | x |
| 1 0 |
a1 | 0 1 | a0 | 0 0 | 1 | y1 | 0 0 |
a2 | 1 0 | a0 | 0 0 | 1 | y2 | 0 0 |
Функции переходов и выходов D1 = !Q1!Q2 x D2 = !Q1!Q2!x y1 = !Q1Q2 y2 = Q1!Q2 Рис. 3.6. Автомат Мура 3.4.2 УА с микропрограммным управлением БМУ построен на МПС К1804ВУ4, выполняющей функции управления последовательностью микрокоманд (УМП). Основная функция схемы УМП заключается в формировании последовательности адресов микрокоманд, хранящихся в микропрограммной памяти, под воздействием внешних управляющих сигналов. Рассматриваемая схема УПМ имеет следующие архитектурные особенности: 12-разрядная размерность всех внутренних элементов УПМ, обеспечивающая возможность адресации до 4096 слов; четыре источника адреса (внутренний регистр адреса/счетчика, счетчик микрокоманд, адресная шина и стек глубиной пять); 16 инструкций управления, большинство из которых являются условными; выходные сигналы отпирания одного из трех внешних устройств, подключенных к адресной шине (позволяют выполнять функции дешифратора); внутренний регистр адреса (может выполнять функции и регистра и счетчика циклов); трехстабильные выходы. Все внутренние регистры построены на триггерах, срабатывающих по положительному фронту тактового сигнала, что упрощает временную синхронизацию. Устройство управления включает в себя мультиплексор с четырьмя входами, используемый для выбора в качестве источника адреса следующей микрокоманды, регистр/счетчик, вход прямого адреса, счетчик микрокоманд СМК, стек. Регистр/счетчик РгА/Сч состоит из 12 триггеров D-типа, доступ к которым осуществляется во время одного и того же такта. При выдаче сигнала разрешения загрузки (поступления на вход RLD сигнала низкого уровня) новые данные загружаются в РгА/Сч во время действия переднего фронта тактового импульса. Выход может быть подключен к мультиплексору и использован в качестве источника адреса следующей микрокоманды. В свою очередь, вход прямого адреса устройства является источником данных, загружаемых в РгА/Сч. Счетчик микрокоманд состоит из 12-разрядного устройства приращения, инкрементора Инкр и 12-разрядного регистра. Счетчик микрокоманд может использоваться одним из двух способов. Когда сигнал разрешения ввода данных в устройство приращения, подаваемый на вход СО, имеет высокий уровень, в РгСМК во время следующего такта загружается передаваемый на выход адрес, увеличенный на 1 Таким образом обеспечивается последовательное выполнение микрокоманд. Когда сигнал на входе СО имеет низкий уровень, содержимое устройства приращения остается прежним и во время следующего такта СМК перезагружается тем же самым адресом, находящимся на выходе У .Следовательно, одна и та же микрокоманда может выполняться любое количество раз. Другим источником адреса является вход прямого адреса. Этот источник используется для выполнения переходов в микропрограмме. Четвертым источником адреса, передаваемого на вход мультиплексора МС, является стек объемом 5 слов Рис. 3.7.Структурная схема МПС К1804ВУ4 В блок микропрограммного управления входят схема управления последовательностью МК (УПМ), микропрограммная память (МП), регистр микрокоманд (РгМК), блок фиксации логических условий (БФЛУ), мультиплексор кода условий (МКУ), регистр команды (РгК), логические схемы. ПНА – формирует начальный адрес микропрограммы выполняемой операции. Реализуется на ПЗУ или ПЛМ. УПМ схема управления последовательностью микрокоманд – формирует последовательность адресов микрокоманд, находящихся в МП. Построена на микросхеме К1804ВУ4. МП – микропрограммная память представляет собой быстродействующее ПЗУ. РгМК – регистр микрокоманд. РгК – регистр команд построен на 6 микросхемах К1804ИР1. БФЛУ – блок фиксации логических условий. МКУ – мультиплексор кода условий – производит выбор анализируемого условия. Выбор следующего адреса определяется инструкцией УПМ и значением логических условий, к которым относятся флажки Z, N, V, C операционных блоков, значение триггера перехода ТП, сигнал занятости ОП Z(ОП) . Выбор анализируемого условия выполняется МКУ. Рис. 3.8.Блок микропрограммного управления 3.5 Регистровая память Согласно регистровой модели и архитектуре регистровая память должна включать следующие регистры ССП ( СR0), EFLAGS, EIP – 32 разрядные, SR, TR, CR – 15 разрядные, ST() – 80 разрядные. РОНы реализованы внутри МПС, поэтому их описание не приводится. Также к регистровой памяти относятся регистры РгК, РгБ, РАОП, РгЗпОП, РгЧтОП. 32х разрядный регистр ССП(CR0) и регистр флагов EFLAGS, предусмотренные архитектурой IA-32, построены на 4 микросхемах К1804ИР2. Счётчик команд EIP( 32 разряда) построен на четырёх микросхемах К1804ИР2. Счетчик адреса команд, входящий в EIP, представляет собой 23-разрядный регистр. Status Register, TAG Register и Control Register также построены на 2 микросхемах К1804ИР2 каждый. Регистр буфера представляет собой 56-разрядный регистр, который используется для предвыборки команды, с целью уменьшения количества обращений в ОП. Построен на 7 микросхемах К1804ИР2. Регистры с плавающей точкой представляют собой 8 80-разрядных регистров, которые используются для хранения чисел с ПТ. Выполнены на 20 микросхемах К1804ИР2. Регистр данных состоит из 32-разрядного регистра и служит для хранения операнда, извлеченного из ОП. Построен на 4 микросхемах К1804ИР2. Описание К1804ИР2. Микросхема К1804ИР2 – 8 разрядный параллельный регистр, предназначеннвй для применения в центральных процессорах. Таблица 3.4 – Назначение выводов К1804ИР2. Вывод | Обозначение | Тип вывода | Функциональное назначение выводов |
1 | R | Вход | Обнуление регистра |
2 | DY0 | Выход | Данные, 0-й разряд |
3 | D0 | Вход | Данные, 0-й разряд |
4 | D1 | Вход | Данные, 1-й разряд |
5 | DY1 | Выход | Данные, 1-й разряд |
6 | DY2 | Выход | Данные, 2-й разряд |
7 | D2 | Вход | Данные, 2-й разряд |
8 | D3 | Вход | Данные, 3-й разряд |
9 | DY3 | Выход | Данные, 3-й разряд |
10 | C | Вход | Тактовый сигнал |
11 | GND | - | Общий |
12 | DY4 | Выход | Данные, 4-й разряд |
13 | D4 | Вход | Данные, 4-й разряд |
14 | D5 | Вход | Данные, 5-й разряд |
15 | DY5 | Выход | Данные, 5-й разряд |
16 | DY6 | Выход | Данные, 6-й разряд |
17 | D6 | Вход | Данные, 6-й разряд |
18 | D7 | Вход | Данные, 7-й разряд |
19 | DY7 | Выход | Данные, 7-й разряд |
20 | EZDY | Вход | Разрешение выходов данных |
21 | EWR | Вход | Разрешение записи |
22 | Uoc | - | Напряжение питания |
3.6 Оперативная память Слово оперативной памяти составляет 8 байт.. Сама оперативная память рассматривается как черный ящик. Слово выбирается или записывается за одно обращение к памяти при помощи мультиплексоров и демультиплексоров. В состав ОП входят запоминающее устройство( РгЗпОП и РгЧтОП), регистр адреса. Чтение и запись в ОП инициируются сигналами ЧтОП и ЗпОп соответственно. 20 разрядный РгАОП, который хранит адрес команды, которая выполняется в текущий момент, построен на 5 микросхемах К1804ИР1. РгЧтОП и РгЗпОП построены на восьми 8 разрядных микросхемах К1804ИР2. 3.7 Блок интерфейса.
БИНТ служит для связи блоков процессора. Он состоит из мультиплексоров, лдемультиплексоров и логических схем согласующих передачу данных и управляющих сигналов. Посредством БИНТ предоставляется возможность подачи на РгК необходимых разрядов из РгЧтОП или РгБ, осуществляется считывание необходимых байтов из РгК для обработки в БОД, выбор шин входных и выходных данных для БОД, запись в РгЗпОП слово, согласование работы РГЗпОП и ОП. Также посредством БИНТ происходит выборка адресов регистров в БОД. Для пересылки данных из БПТ в БФТ и обратно также используется БИНТ. Управление БИНТ осуществляется подачей управляющих сигналов из БМУ. Для управления записью в регистры используются соответствующие линии. Выбор подаваемых данных на шины данных МПС также осуществляется посредством БИНТ. ( выбор источников для шин DA и DB)/
4 Содержательные схемы алгоритмов работы процессора 4.1 Общий алгоритм цикла работы процессора Для начала цикла работы процессора необходимо единичное значение условия ПУСК, то есть нужно включить процессор. Затем происходит выборка команды из ОП , её декодирование и анализируется, досчитана ли команды до конца. Если нет, то необходимо досчитать команду. В результате могут возникнуть особые случаи ( например, команды с полученным кодом нет), тогда дальнейшее управление передаётся на обработчик прерываний и после него цикл работы процессора повторяется. Если этап извлечения закончился удачно, то после анализа кода операции выполняется соответствующая команде микроподпрограмма. Если необходимо, то формируется исполнительный адрес операндов в памяти ( при возникновении особых случаев управление также передаётся обработчику прерываний), непосредственно само извлечение операндов, выполнение операции и запись результатов ( либо в регистр, либо в ОП). На этапе выполнения команды также может возникнуть прерывание. После этого цикл работы процессора повторяется, пока не возникнет нулевой сигнал ПУСК. Рис. 4.1. Цикл работы процессора 4.2 Выборка команд Перед началом выборки команды анализируется триггер перехода (ТП). Это позволяет определить, нужно ли обращаться к ОП или можно досчитать недостающую часть команды из регистра буфера (РгБ). При естественном порядке следования команд ТП принимает значение 0,в противном же случае он равен 1 ( например, при обработке прерываний происходит переход) и необходимо обращаться к ОП для считывания следующей команды. В зависимости от последних байтов СчАК, выбирается соответствующий начальный байт считывания из слова ОП. В случае, когда команда начинается с 5, 6 или 7 (нумерация с 0) байта, может возникнуть ситуация, что нужно будет досчитать команду с нового слова ОП, тогда в работу вступают алгоритмы 1, 2 и 3, где производится анализ по уже считанным байтам, что это за команда, её длина и определяется, нужно ли переходить на новое слово ОП. В зависимости от того, сколько байтов занимает команда ( блок условия определения количества байтов в команде), СчАК увеличивается на соответствующее значение. Буфер позволяет значительно сократить количество обращений к ОП, так как в нём хранится конечная часть слова ОП, где находятся недостающие байты следующей команды. Алгоритмы 1, 2 и 3 необходимы при ситуации, когда в регистр команд РГК загружено 3, 4 и 5 байтов команды соответственно и может оказаться , что нужно досчитать ещё 1, 2 или 3 байта. Рис. 4.2. Выборка команды (первая стадия) Рис. 4.3. Выборка команды (досчитывание 1 и 2) Рис. 4.4. Выборка команды (досчитывание 3) Рис. 4.5. Определение количества считываемых байтов
Порядок действий для каждой команды отличается, поэтому после декодирования происходит разветвление алгоритма. Необходимо заметить, что отличия не только в самой обработке данных, но и в алгоритмах их формирования, извлечения и записи результатов. Рис. 4.6. Декодирование и определение последовательности действий для четырёх команд задания4.3 Формирование исполнительного адреса и выборка операндов При формировании ИА анализируется поле R/M, где указывается со значением какого из регистров будет складываться смещение, а также режим работы процессора (CR0(0)). В зависимости от этого значения, режим может оказаться реальным или защищённым, и соответственно алгоритм формирования ИА будет отличаться. При недопустимых значения поля R/M или выхода ИА за пределы ОП, вырабатываются сигналы прерывания и вызывается обработчик прерываний. ИА формируется в специальном регистре адреса данных РгАД. Затем из него извлекаются необходимые биты для обращения к соответствующему слову ОП. Рис. 4.8. Формирование исполнительного адресаРис. 4.9. Выборка операндов (ВО1) Рис. 4.10. Выборка операндов (ВО3) Рис. 4.11. Выборка операндов (ВО4) Рис. 4.12. Выборка непосредственного операнда из РгК Рис. 4.13. Выборка операнда из РОН (2 байта) Рис. 4.14. Выборка операнда из РОН (4 байта)4.4 Обработка прерываний При обработке прерываний сначала происходит сохранение сегментных регистров, затем РОНов и наконец регистра ССП, СчАК и регистра флагов EFLAGS в стек. Рис. 4.7. Обработка прерываний 4.5 Выполнение четырех операций из индивидуального задания Выполнение команд с фиксированной точкой не представляет особого труда, так как операции в них реализуются в МПС моего варианта (вычитание и логическое ИЛИ). Соответственно алгоритмы также не очень сложны. Команда обмена данными между регистром и памятью тоже реализуется в небольшом алгоритме. При написании алгоритмов учитывалось, что процессор может работать в разных режимах, поэтому анализировался регистр ССП. Формирование признаков результата происходит на аппаратном уровне. Это не требует записи флагов на уровне микропрограммирования и не отражается на алгоритмах выполнения операций. Составление же алгоритма для чисел с плавающей точкой потребовало более глубокого понимания и осмысления. Мантисса и знаки обрабатываются в БПТ (РСМм, Р1м, РСМз, Р1з), порядок же обрабатывается в БФТ (для однообразия и внесения смысловой нагрузки для упрощения понимания алгоритма создадим соответствие Р1р, РСМр – это порядки в БФТ. Рр1 это РгП, РСМр - это РгЛОП ( операнд из памяти). Изначально в РСМр целое число со знаком. Первым шагом является приведение целого числа к формату числа с ПТ: определение знака числа (находится ли в доп. коде и нужно ли преобразовывать в прямой, так как мантисса хранится в прямом коде), нахождение мантиссы порядка (сдвиг числа влево в подсчётом количества совершённых сдвигов). Затем реализуется сам алгоритм сложения с учётом возможных особых случаев ( переполнение, антипереполнение порядка, потеря точности). Кратко алгоритм можно описать так: 1. Производится выравнивание порядков чисел. Порядок меньшего (по модулю) числа принимается равным порядку большего числа, а мантисса меньшего числа сдвигается вправо на число S-ичных разрядов, равное разности порядков чисел. 2. Производится сложение мантисс, в результате чего получается мантисса суммы. 3. Порядок результата принимается равным порядку большего числа. 4. Полученная сумма нормализуется. При сравнении порядков возможны пять случаев: 1) px-py>m (m— число разрядов мантиссы). В качестве результата суммирования сразу же может быть взято первое слагаемое, так как при выравнивании порядков все разряды мантиссы второго слагаемого принимают нулевое значение; 2) px-py>m. В качестве результата суммирования может быть взято второе слагаемое; 3) .px-py=0. Можно приступить к суммированию мантисс; 4) px-px=k1 (k1<m) Мантисса второго слагаемого сдвигается на разрядов вправо, затем производится суммирование мантисс; 5) py-px=k2 (k2<m) Перед выполнением суммирования мантисс производится cдвиг на разрядов вправо мантиссы первого слагаемого. За порядок результата при выполнении суммирования принимается больший из порядков операндов. Рис. 4.15. Выполнение команды КОМ1 Рис. 4.16. Запись результата КОМ1 Рис. 4.17. Выполнение команды КОМ2 Рис. 4.18. Выполнение команды КОМ3 Рис. 4.19. Запись результата КОМ3 Рис. 4.20. Довыборка операндов (ВО4) Рис. 4.21. Выполнение команды КОМ4 (начало) Рис. 4.22. Выполнение команды КОМ4 (окончание) Рис. 4.23. Запись результата КОМ45 Микропрограммное управление 5.1 Формат микрокоманды Таблица 5.1 –Формат микрокоманды. Зона | Поле | Количество разрядов | Значение по умолчанию |
БФТ | MUXA MUXB ИСТ УВП АЛУ СДВ РЕЗ А В | 2 2 3 2 4 3 3 4 4 | 0 0 0 0 6 C 0 0 0 |
БПТ | ИСТ УВП АЛУ СДВ РЕЗ А В | 3 2 4 3 3 4 4 | 0 0 6 C 0 0 0 |
БМУ | УСА ФУ И АП УСЛ RLD БУ ВБ | 4 1 1 12 3 1 1 1 | E 1 0 0 0 1 0 1 |
БИНТ | БФТ | MUXDAФТ MUXDBФТ DMXDYФТ DMXDBФТ | 2 3 2 1 | 0 0 0 0 |
| | | | |
| БПТ | MUXDAПТ DMXDYПТ MUXDBПТ | 1 2 1 | 0 0 0 |
ОП | MUXЗП DMXОП MUXБЧ MUXСА | 3 1 1 1 1 1 1 1 | 0 0 0 0 0 0 0 0 |
Рг | СчАК РгАД РгБ РгК |
ОП | R/W РАОП РгЧтОП РгЗпОП CS | 1 1 1 1 1 | 0 0 0 0 0 |
CONST |
| 64 | 0 |
Таблица 5.1 (продолжение) 5.1.1 Зона БФТ. Зона состоит из семи полей. Для адресных входов, в зависимости от того, откуда адреса A и B, разрешены не все возможные адреса. Таким образом, на вход А и B старшим битом всегда должен подаваться 0, если разрешён адресный вход из РгК. Так как в БФТ у меня находится только 2 рабочих регистра - 15 и 16 (оставшиеся отведены под сегментные регистры), то при адресации из РгМК на старшие адресные входы должны подаваться три единицы. Распределение адресов и соответствующих им регистров приведено в разделе 2 (2.4.5 Регистры БОД) . Поля MUXA и MUXB управляют выбором адреса РЗУ, возможными значениями которого являются адрес регистра из БМУ, регистр из РгК (поле reg или поле r/m). “+” указывает на значение полей по умолчанию.
Таблица 5.2 – Поле MUXA.. MUXA | Источник |
00 01 10 11 | Адрес из БМУ РгК(10:12) РгК(13:15) - |
Таблица 5.3 - Поле MUXB. MUXB | Источник |
00 01 10 11 | Адрес из БМУ РгК(10:12) РгК(13:15) - |
ИСТ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
EA OEB I0 | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
Операнд R | РгA | РгA | РгA | РгA | DA | DA | DA | DA |
Операнд S | РгB | РгQ | DB | РгQ | РгB | РгQ | DB | РгQ |
Таблица 5.4 - Поле ИСТ.Таблица 5.5 - Поле УВП. УВП | Значение переноса |
00 01 01 11 | 0 1 C C |
Таблица 5.6 - Поле АЛУ. АЛУ | Операция АЛУ |
0 | 0 | 0 | 0 | Специальные функции при IO=0 |
0 | 0 | 0 | 0 | 1111 при IO=1 |
0 | 0 | 0 | 1 | S-R-1+CO |
0 | 0 | 1 | 0 | R-S-1+CO |
0 | 0 | 1 | 1 | R+S+CO |
0 | 1 | 0 | 0 | S+CO |
0 | 1 | 0 | 1 | S+CO |
0 | 1 | 1 | 0 | R+CO |
0 | 1 | 1 | 1 | R+CO |
1 | 0 | 0 | 0 | 0000 |
1 | 0 | 0 | 1 | Ri^Si |
1 | 0 | 1 | 0 | Ri Si |
1 | 0 | 1 | 1 | Ri Si |
1 | 1 | 0 | 0 | Ri^Si |
1 | 1 | 0 | 1 | RiVSi |
1 | 1 | 1 | 0 | Ri^Si |
1 | 1 | 1 | 1 | RiVSi |
Таблица 5.7 - Поле СДВ. СДВ | Операция АЛУ |
0 | 0 | 0 | 0 | АС ALU вправо |
0 | 0 | 0 | 1 | ЛС ALU вправо |
0 | 0 | 1 | 0 | АС ALU, ЛС RGQ вправо |
0 | 0 | 1 | 1 | ЛС ALU, ЛС РгQ вправо |
0 | 1 | 0 | 0 | без сдвига |
0 | 1 | 0 | 1 | ЛС РгQ вправо |
0 | 1 | 1 | 0 | РгQ:=ALU |
0 | 1 | 1 | 1 | РгQ:=ALU |
1 | 0 | 0 | 0 | AC ALU влево |
1 | 0 | 0 | 1 | ЛС ALU влево |
1 | 0 | 1 | 0 | AС ALU, ЛС РгQ влево |
1 | 0 | 1 | 1 | ЛС ALU, ЛС РГQ влево |
1 | 1 | 0 | 0 | без сдвига |
1 | 1 | 0 | 1 | ЛС РгQ влево |
1 | 1 | 1 | 0 | расширение знака |
1 | 1 | 1 | 1 | без сдвига |
Таблица 5.7 (продолжение)Таблица 5.8 - Поле РЕЗ. РЕЗ | OEY WE IEN | Передача информации |
0 1 2 3 4 5 6 7 | 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 | Y, РЗУ = СДВ; РгQ =АЛУ Y, РЗУ = СДВ Y = СДВ; РгQ = АЛУ Y = СДВ РЗУ = Y; РгQ = АЛУ РЗУ = Y РгQ = АЛУ Нет записи |
5.1.2 Зона БПТ. Большинство полей в БПТ повторяют поля БФТ: ИСТ, УВП, АЛУ, СДВ, РЕЗ, А и В. Только для БПТ адрес считывается только из РгМК, в отличие от БФТ и в БПТ располагаются только рабочие регистры. На адресные входы A и B может подаваться любая четырёх битная комбинация, так как все регистры в БПТ рабочие, а стек вынесен за пределы БПТ. Таблица 5.9 – Значение полей А/В. Значение | Регистр |
0000 | Р1з |
0001 | Р1м |
0010 | РСМз |
0011 | РСМм |
0100 | СчТ |
0101 | РПТ1 |
0110 | РПТ2 |
0111 | РПТ3 |
1000 | РПТ4 |
10001 | РПТ5 |
1010 | РПТ6 |
1011 | РПТ7 |
1100 | РПТ8 |
1101 | РПТ9 |
1110 | РПТ10 |
1111 | РПТ11 |
5.1.3 Зона БМУ. Поле УСА ( управление следующим адресом) принимает значение E по умолчанию, что соответствует последовательному выполнению команд. Для условного перехода в него записывается значение 3. Поле П разрешает безусловный переход по адресу, записанному в АП. Поле УСЛ отвечает за выбор условия перехода. ФУ - фиксация флагов. И - инверсия условия. RLD – разрешение записи в Cч/РгА. ВБ - выбор секции, для которой анализируются условия. 0 – для БФТ, 1 - для БПТ. АП – адрес перехода. Адрес перехода размещён в отдельном поле, а не с поле CONST, так как поле CONST может использоваться для записи какой-либо константы и одновременно нужно организовать переход по адресу. Поэтому эти поля разделены. УСЛ | Переход |
|
000 | Переход по паритету | PF0 = 1 |
001 | При равенству 0 | Z =1 |
010 | При отрицат. знак | N = 1 |
011 | При переполнении | V = 1 |
100 | При переносе | C = 1 |
101 | Если меньше | N + V = 1 |
110 | Если меньше или равно | Z v (N + V ) = 1 |
111 | Если меньше или равно без знака | C v Z = 1 |
Таблица 5.10 - Поле УСЛ. 5.1.4 Зона БИНТ. Поле БФТ БИНТ Источником данных для шины DA БФТ могут быть поле CONST из РгМк, операнд из РгЧтОП, передаваемый через мультиплексор MUXРежЧ, а также выход БПТ через DMXDYПТ. Таблица 5.11 – MUXDAФТ. MUXDAФТ | Источник |
00 | CONST из РгМК |
01 | MUXРежЧ |
10 | DMXDYПТ |
Источником данных для шины DB БФТ может быть непосредственный операнд из РгК(8:15), СчАК( для инкремента), смещение из РГК(16:23) или РгК(16:31) и порядок из БПТ через MUXSTPor.Таблица 5.12 – MUXDBФТ. MUXDBФТ | Источник |
000 | РгК(8:15) |
001 | СчАК |
010 | РгК(16:23) |
011 | РгК(16:31) |
100 | MUXSTPor |
Выходом БФТ могут быть шина DA БПТ через MUXDAПТ, РгАД, СчАК или РГЗпОП через MUXЗП Таблица 5.13 – DMXDYФТ. DMXDYФТ | Направление |
00 | MUXDAПТ |
01 | РгАД |
10 | СчАК |
11 | MUXЗП |
Выходом шины DB может быть либо РгЗпОП через MUXЗП, либо разряд порядка мантиссы для стекового регистра через DMXSTPor Таблица 5.14 – DMXDBФТ. DMUXDBФТ | Направление |
0 | MUXЗП |
1 | DMXSTPor |
Поле БПТ БИНТ Источником данных для шины DA БПТ могут быть поле CONST из РгМк, и выход Y БПТ через DMXDYФТ.Таблица 5.15 – MUXDAПТ. MUXDAПТ | Источник |
0 | CONST из РгМК |
1 | DMXDYФТ |
Выходами шины DY БПТ могут быть входная шина DA БФТ через MUXDAФТ, разряды стека, где хранится мантисса ( через DMXSTMan) и разряды стека, где хранится знак ( через DMXSTZn) Таблица 5.16 – DMXDYПТ. DMXDYПТ | Направление |
00 | MUXDAФТ |
01 | DMXSTMan |
10 | DMXSTZn |
Входаvи шины DB могут быть либо мантисса через MUXSTMan или знак через MUXSTZn. Таблица 5.17 – MUXDBПТ. MUXDBПТ | Направление |
0 | MUXSTMan |
1 | MUXSTZn |
Поле ОП БИНТ Входами мультиплексора записи MUXЗП могут быть выходы шины DB, DY,СчАК ( при сохранении при прерывании) и ССП( CR0) по той же причине. Таблица 5.18 – MUXЗП. MUXЗП | Источник |
000 | DMXDBФТ |
001 | DMXDYФТ |
010 | СчАК |
011 | ССП (CR0) |
100 | EFLAGS |
Таблица 5.18 (продолжение)Запись в РгК может вестись либо напрямую из РгЧтОП, либо через РгБ. Для выбора необходимых байтов используется MUXЧ после которого и идёт запись в РгК. Иначе же ведётся запись из РгБ через соответствующие мультиплексоры. Таблица 5.19 – DMXОП. DMXОП | Направление |
0 | РгБ |
1 | MUXЧ |
Входом записи РгК могут быть РгБ через MUXБ или РгЧтОП через MUXЧ. Выбор источника осуществляется в MUXБЧ Таблица 5.20 – MUXБЧ. MUXБЧ | Источник |
0 | MUXБ |
1 | MUXЧ |
Мультиплексор MUXСА выбирает, откуда будет произволиться запись в РАОП – из СчАК или РгАД. Таблица 5.21 – MUXСА. MUXСА | Источник |
0 | СчАК |
1 | РгАД |
Также в поле БИНТ есть поле Рг. В нём определяется в какие из регистров возможна запись. Это регистры СчАК, РгК, РгАД, РгБ. 5.1.5 Зона ОП Поле используется для управления записи или считывания данных из ОП. Сигнал CS определяет выбрана ли ОП или нет. Сигналы R/W задают соответственно чтение из ОП в РгЧтОП или запись в РгЗпОП соответственно. Также зона разрешает запись. Таблица 5.22 – Зона ОП CS | R/W | Режим работы ОП |
0 | 0 | нет доступа |
0 | 1 | нет доступа |
1 | 0 | ОП := РгЗпОП |
1 | 1 | РгЧтОП := ОП |
5.1.6 Зона
CONST Зона используется для определения константы, например для операций сравнения в условиях или для выделения битов по маске. 5.2 Микропрограмма операции обработки чисел в формате с плавающей точкой Микропрограмма команды FIADD. Адрес | Содержание МК | Зона | Поле | Значение | Примечание |
00
| Если РСМм(63)=0, то переход | БПТ БМУ | В ИСТ АЛУ УВП РЕЗ УСЛ УСА АП | 4 0 4 0 0 2 3 2 | РСМм РгА, РгВ S+C0 0 Без записи N=1 Усл. Пер. Адрес п-да. |
01
| РСМм=LLS(РСМм, 1) РСМр=РСМр+1 | БФТ БПТ БМУ | В УВП АЛУ В СДВ БУ АП | 16 1 5 4 9 1 0 | РСМр С0=1 S+C0 РСМм ЛС влево Безусл.п-д Адрес перехода |
02
| РСМр=403Eh-РСМр | БФТ CONST | В АЛУ ИСТ УВП | 16 2 4 1 403Eh | РСМр R-S-1+C0 DA C0=1 |
03
| РСМр=РСМр-Р1р | БФТ | А В АЛУ УВП | 15 16 1 1 | Р1р РСМр S-R-1+C0 C0=1 |
04
| СчТ=РСМр | БФТ БПТ БИНТ | А В ИСТ РЕЗ MUXDAПТ DMXDYФТ | 16 5 5 1 1 0 | РСМр СчТ DA РЗУ С вых. ФТ На БПТ |
05
| Если N=1, то переход | БМУ | УСЛ УСА АП | 2 3 11 | N=1 Усл. пер. Адрес пер. |
06
| Если РСМр>3FFFh, то переход | БФТ БМУ CONST | В АЛУ ИСТ РЕЗ УВП УСЛ И УСА АП
| 16 1 4 6 1 5 1 3 1Е 3FFFh | РСМр S-R-1+C0 DA Без записи С0=1 Z v (N+V) Инверсия Усл. пер. Адрес пер. |
07
| Если РСМр=0, то переход | БФТ БМУ CONST | В АЛУ ИСТ РЕЗ УВП УСЛ УСА АП | 16 1 4 6 1 1 3 13 0 | РСМр S-R-1+C0 DA Без записи С0=1 Z=1 Усл. пер. Адрес пер. |
08
| Если РСМр>0, то переход | БФТ БМУ CONST | В АЛУ ИСТ РЕЗ УВП УСЛ И УСА АП | 16 1 4 6 1 6 1 3 0D 0 | РСМр S-R-1+C0 DA Без записи С0=1 Z v (N+V) Инверсия УсАдрес Адрес пер. |
09
| Если СчТ<>0, то переход | БПТ БМУ CONST | В АЛУ ИСТ РЕЗ УВП УСЛ И УСА АП | 5 1 4 6 1 1 1 3 0В 0 | СчТ S-R-1+C0 DA Без записи С0=1 Равны Инверсия Усл. пер. Адрес пер. |
0A
| РСМр=Р1р | БФТ БМУ
| А В БУ АП | 15 16 1 13 | Р1р РСМр Безусл. пер. Адрес пер. |
0B
| РСМм=ARS(РСМм,1) | БПТ | В СДВ | 4 0 | РСМм АС вправо |
0C
| СчТ=СчТ+1 | БПТ БМУ
| В АЛУ УВП БУ АП | 5 4 1 1 09 | СчТ S+C0 С0=1 Безусл. пер. Адрес перехода |
0D
| Если СчТ<>0, то переход | БПТ БМУ CONST | В АЛУ ИСТ РЕЗ УВП УСЛ И УСА АП | 5 1 4 6 1 1 1 3 0F 0 | СчТ S-R-1+C0 DA Без записи С0=1 Равны Инверсия Усл. пер. Адрес пер. |
0E
| РСМр=РСМр+Р1р | БФТ БМУ
| А В АЛУ УВП БУ АП | 15 16 3 0 1 13 | Р1р РСМр R+S+C0 0 Безусл. пер. Адрес пер. |
0F
| Р1м=ARS(Р1м, 1) | БПТ
| В СДВ | 2 0 | Р1р АС вправо |
10
| СчТ=СчТ-1 | БПТ БМУ CONST | В АЛУ ИСТ УВП БУ АП | 5 1 4 1 1 0D 1 | СчТ S-R-1+C0 DA C0=1 Безусл. пер. Адрес пер. |
11
| Если РСМр<FFFFB000h, то переход | БФТ БМУ CONST | В АЛУ ИСТ РЕЗ УСЛ УСА АП
| 16 1 4 6 5 3 07 FFFFB000h | РСМр S-R-1+C0 DA Без записи Есл.меньше Усл. пер. Адрес пер. |
12
| РСМм=РСМм+Р1м РСМр=РСМр+Р1р | БФТ БПТ БМУ | А В АЛУ А В АЛУ УВП БУ АП | 15 16 3 2 4 3 0 1 1E | Р1р РСМр R+S+C0 Р1р РСМм R+S+C0 С0=0 безусл. пер Адрес пер. |
13
| Если РСМз<>Р1з, то переход | БПТ БМУ
| А В АЛУ УВП УСЛ И УСА АП | 1 3 1 1 1 1 3 15 | Р1з РСМз S-R-1+C0 C0=1 Z=1 Инверсия Усл. пер. Адрес пер. |
14
| РСМм=РСМм+Р1м | БПТ БМУ
| А В АЛУ УВП БУ АП | 2 4 3 0 1 1С | Р1м РСМм S+R+1 C0=0 Безусл.пер. Адрес пер. |
15
| Если РСМз=0, то переход | БПТ БМУ CONST | В АЛУ ИСТ РЕЗ УВП УСЛ УСА АП | 3 1 4 6 1 1 3 19 0 | РСМз S-R-1+C0 DA Без щаписи С0=1 Равны Усл. пер. Адрес пер. |
16
| Если Р1м<>РСМм, то переход | БПТ БМУ
| А В АЛУ УВП УСЛ УСА АП | 2 4 1 1 5 3 1С | Р1р РСМр S-R-1+C0 C0=1 Есл.меньше Усл.пер. Адрес пер. |
17
| РСМз=1 | БПТ CONST | В ИСТ РЕЗ | 3 4 1 1 | РСМз DA РЗУ |
18
| РСМм=!РСМм+1 | БПТ БМУ | В АЛУ УВП БУ АП | 4 5 1 1 1С | РСМм !S+C0 C0=1 Безусл.пер. Адрес.пер. |
19
| Если РСМм<Р1м, то переход | БПТ БМУ | А В АЛУ УВП УСЛ УСА АП | 4 2 1 1 5 3 1С | Р1м РСМм S-R-1+C0 С0=1 Есл.меньше Усл. пер. Адрес пер. |
1A
| РСМз=1 | БПТ CONST | В ИСТ РЕЗ | 3 4 1 1 | РСМз DA РЗУ |
1B
| РСМм=!РСМм+1 | БПТ БМУ
| В АЛУ УВП БУ АП | 4 5 1 1 1С | РСМм !S+C0 С0=1 Безусл.пер. Адрес пер. |
1C
| Если V=1, то переход | БМУ
| УСЛ УСА АП | 3 3 22 | V=1 Усл.пер. Адрес пер. |
1D
| Если РСМ(63)=0, то переход | БМУ
| УСЛ И УСА АП | 2 1 3 1F | N=1 Инверсия Усл.пер. Адрес пер. |
1E
| END |
|
|
|
|
1F
| РСМм=ALS(РСМм, 1) РСМр=РСМр-1 | БФТ БПТ CONST | В АЛУ ИСТ УВП В СДВ | 16 1 4 1 4 8 1 | РСМр S-R-1+C0 DA C0=1 РСМр АС влево |
20
| Если N=0, то переход | БМУ
| УСЛ И УСА АП | 2 1 3 1D | N=1 Инверсия Усл. пер. Адрес пер. |
21
| Вызов обработчика прерываний антипереполнения |
|
|
|
|
22
| РСМм=ARS(РСМм,1) РСМр=РСМр+1 | БФТ БПТ | В АЛУ УВП В СДВ | 16 4 1 4 0 | РСМр S+C0 С0=1 РСМм АС вправо |
23
| Если РСМр(15)=0, то переход | БМУ | УСЛ И УСА АП | 2 1 3 1E | N=1 Инверсия Усл. пер. Адрес пер. |
24
| Обработка прерываний переполнения порядка |
|
|
|
|
Заключение В ходе выполнения курсового проекта были приобретены навыки проектирования операционного и управляющего автоматов процессора ЭВМ. Результатом проектирования стал разработанный 32-разрядный секционированный микропроцессор с архитектурой IA-32, построенный в базисе МПС К1804ВС2 способный выполнять четыре команды: SUB, OR, XCHG и FIADD. Также были приобретены навыки составления технической документации и выполнения чертежей по нормам ЕСКД. На мой взгляд, одним из достоинств данного курсового проекта является то, что микропроцессор изучался и проектировался полностью, а не какой-либо его отдельный блок. Тем самым были определены и поняты связи и взаимодействие его компонентов, неотделимость их друг от друга. Особенно важными для этого оказались последние стадии проекта, где разрабатывались алгоритмы цикла работы процессора и 3 схемы из технического задания.
Литература 1. Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 1: Basic Architecture, 470 p. 253665.pdf 2. Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2A: Instruction Set Reference, A-M, 758 p. 253666.pdf 3. Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2B: Instruction Set Reference, N-Z, 618 p. 253667.pdf 4. Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3A: System Programming Guide, Part 1, 646 p. 253668.pdf 5. ГОСТ 2.105-95. Единая система конструкторской документации. Общие требования к текстовым документам.
6.Хамахер К., Вранешич З., Заки С. Организация ЭВМ. – 5-е изд.- С-Пб.: Издательская группа BHV, 2003. - 848 с. - ISBN 5-8046-0162-8.
1. Реферат Лекции по Экологии 2
2. Курсовая Основные этапы губернской реформы XVII века
3. Статья Концепции природы и чувственности от сюнь-цзы до чжу си
4. Реферат Компьютерное оборудованиеhard
5. Реферат на тему Ulysses By Alfred Lord Tennyson Essay Research
6. Реферат на тему Andrew Jackson Essay Research Paper The CrucibleMany
7. Отчет по практике Отчет по практике в турфирме ООО Гарант
8. Реферат Функції модифікатора
9. Реферат Расчеты с персоналом по оплате труда в ОАО СмаЗ
10. Контрольная работа Функции социологии 2