Внутренняя архитектура микропроцессора Intel 486. Формат данных и команд. Регистры общего назначения. Программная модель устройства FPU, регистр флагов. Разработка структуры и микропрограммы микропроцессора, управляющего автомата с жесткой логикой.
Аннотация к работе
В ходе выполнение курсового проекта было выполнено проектирование работы микропроцессора на основе команд из системы команд процессора Intel 486. В курсовом проекте была разработана структура микропроцессора, его функциональная микропрограмма.
Введение
Микропроцессор - процессор (устройство, отвечающее за выполнение арифметических, логических операций и операций управления, записанных в машинном коде), реализованный в виде одной микросхемы или комплекта из нескольких специализированных микросхем (в отличие от реализации процессора в виде электрической схемы на элементной базе общего назначения или в виде программной модели). Первые микропроцессоры появились в 1970-х годах и применялись в электронных калькуляторах, в них использовалась двоично-десятичная арифметика 4-битных слов. Вскоре их стали встраивать и в другие устройства, например терминалы, принтеры и различную автоматику. Доступные 8-битные микропроцессоры с 16-битной адресацией позволили в середине 1970-х годов создать первые бытовые микрокомпьютеры.
Долгое время центральные процессоры создавались из отдельных микросхем малой и средней интеграции, содержащих от нескольких единиц до нескольких сотен транзисторов. Несмотря на скромное начало, непрерывное увеличение сложности микропроцессоров привело к почти полному устареванию других форм компьютеров. В настоящее время один или несколько микропроцессоров используются в качестве вычислительного элемента во всем, от мельчайших встраиваемых систем и мобильных устройств до огромных мейнфреймов и суперкомпьютеров.
В данном курсовом проекте необходимо разработать микропроцессор, способный выполнять заданные команды (IMUL r16, r/m16 (MOD = 00); FDIV ST(i), ST; JNA rel8) из базовой системы команд микропроцессора Intel 486. Так же для реализации данного проекта выданы необходимые данные для расчета оперативной памяти (V = 4ГБ; ширина выборки 16 бит), для разработки устройства управления (автомат Мура, RS-триггер), микропрограммного устройства управления (вертикальный метод организации операционной части, естественная адресация).
1. Исследовательская часть
1.1 Микропроцессор i486
Intel486 (также известный как i486, Intel 80486 или просто 486-ой) - 32-битный скалярный x86-совместимый микропроцессор четвертого поколения, построенный на гибридном CISC-RISC-ядре и выпущенный фирмой Intel 10 апреля 1989 года. Этот микропроцессор является усовершенствованной версией микропроцессора 80386. Впервые он был продемонстрирован на выставке Comdex Fall, осенью 1989 года. Это был первый микропроцессор со встроенным математическим сопроцессором (FPU). Применялся преимущественно в настольных ПК, в высокопроизводительных рабочих станциях, в серверах и портативных ПК (ноутбуки и лаптопы).
Микропроцессор Intel 486 представляет собой высокопроизводительное устройство, имеющее полную 32-разрядную архитектуру, включая 32-разрядные регистры и шины. Наиболее часто команды выполняются этим микропроцессором за один цикл, что обеспечивает быстродействие, сравнимое с процессорами архитектуры RISC. Микропроцессор i486 использует один источник питания с напряжением 5 В. Типовые значения потребляемой мощности составляют 3…4 Вт в зависимости от тактовой частоты (25…50 МГЦ).
Микропроцессор i486 содержит на одном кристалле, кроме собственно центрального процессора, также блок обработки данных с плавающей запятой (FPU - Floating Point Unit), устройство управления, диспетчер памяти (MMU - Memory Manager Unit), блок предварительной выборки команд и данных, интерфейс магистрали, кэш-память.
Центральный процессор, в свою очередь, включает в себя арифметико-логическое устройство (АЛУ, или ALU - Arithmetical-Logical Unit), восемь 32-разрядных регистров общего назначения (РОН), многоразрядный сдвигатель (Shifter), используемый не только при отработке команд сдвига, но и при выполнении операций умножения и деления. Блок FPU имеет собственные регистры данных и управления; он работает параллельно с центральным процессором.
Устройство управления включает дешифратор команд, поступающих из блока предварительной выборки (очереди команд), и блок микропрограммного управления, содержащий ПЗУ микрокоманд. В процессе выполнения каждой команды микропроцессора его устройство управления формирует соответствующие последовательности микрокоманд, поступающие на все блоки микропроцессора.
Диспетчер памяти, состоящий из блока сегментации и блока страничной адресации, осуществляет формирование физического адреса ячейки памяти. Диспетчер обеспечивает два режима работы микропроцессора: режим реальных адресов (реальный режим) и режим защищенных виртуальных адресов (виртуальный режим). В реальном режиме i486 работает как очень быстрый процессор 8086. При этом реализуется расширенный набор команд и допускается увеличение разрядности операндов и адресов до 32. В защищенном режиме могут одновременно выполняться несколько задач (программ). Задачи при этом изолированы и защищены одна от другой.
Интерфейс магистрали реализует протоколы обмена микропроцессора с памятью, контроллерами ввода-вывода, другими активными устройствами. Обмен осуществляется с помощью 32-разрядной двунаправленной шины данных, 32-разрядной шины адреса и 32-разрядной шины управления, причем разрядность шины данных может переключаться непосредственно в ходе работы; могут использоваться один, два или все четыре байта.
В состав процессора i486 входят девять внутренних функциональных устройств, которые работают параллельно. Подробная внутренняя архитектура процессора приведена на Рис. 1. Сравнительно автономными внутренними устройствами процессора i486 являются: - устройство шинного интерфейса или просто шинный интерфейс;
- внутренняя кэш-память;
- устройство опережающей выборки (предвыборки) команд;
- двухступенчатый дешифратор команд;
- устройство управления;
- целочисленное устройство;
- устройство с плавающей точкой;
- устройство сегментации;
- устройство страничного преобразования адреса.
Сигналы внешней 32-битной шины процессора подаются во внутренние устройства через шинный интерфейс. На внутренней стороне шинный интерфейс и кэш-память передают адреса по 32-битной двунаправленной шине. Данные передаются из кэш-памяти в шинный интерфейс по 32-битной шине данных. Тесно связанные кэш-память и устройство предвыборки одновременно воспринимают выбранные с опережением команды из шинного интерфейса по разделенной 32-битной шине данных, которую кэш-память использует также для получения операндов. Находящиеся в кэш-памяти команды доступны устройству предвыборки, которое имеет 32-байтную очередь команд, ожидающих выполнения.
Рис. 1 - Внутренняя архитектура i486
Когда внутренние запросы данных или команд можно удовлетворить из кэш-памяти, сравнительно медленные циклы внешней шины процессора не выполняются. Шинный интерфейс привлекается, если операция требует обращения к шине процессора.
Формирование адреса производят устройства сегментации страничного преобразования. Логические адреса преобразуются устройством сегментации в линейные адреса, которые передаются в устройство страничного преобразования и кэш-память по 32-битной шине линейного адреса. Устройство страничного преобразования превращает линейные адреса в физические, которые направляются в кэш-память по 20-битной шине.
1.3 Формат данных
В своей работе процессор может оперировать разнообразными данными, которые в зависимости от режима работы и применяемых команд могут быть представлены в нескольких различных формах (форматах).
Различные форматы данных отличаются длиной (количеством бит, отводимых для числа) и назначением отдельных битов или групп битов. В современных процессорах, которые поддерживают несколько наборов команд, соответственно, поддерживается и несколько наборов различных форматов. В курсовом проекте применяются базовые форматы, которые используются стандартными командами при операциях с числами в регистрах и памяти. Формат данных представлен на рис. 2.
Рис. 2 - Форматы данных
Целые числа могут занимать байт, слово или двойное слово. Они могут быть знаковыми и беззнаковыми. В знаковых целых самый старший бит байта, слова или двойного слова, занимаемого числом, отводится для индикации знака числа. Таким образом, возможный диапазон представляемых значений для знаковых целых составляет: от -128 до 127 для байтовых величин, от -231 до 231-1 для двойных слов. Беззнаковые целые могут принимать значения: от 0 до 255 для байтовых величин, от 0 до 232-1 для двойных слов.
В FPU вещественные числа двойной точности кодируются с помощью трех полей: знак, порядок и мантисса.
Для индикации знака отводится один самый старший бит числа, 1 соответствует отрицательным числам, 0 - положительным. В следующих (более младших) битах располагается поле порядка, оно занимает 11 или бит в зависимости от формата.
Для поля порядка не предусмотрено отдельного бита знака, здесь применяется т.н. смещение порядка, оно заключается в прибавлении к реальному значению порядка некоторой константы и последующему кодированию уже этой суммы. Таким образом, все кодируемые значения положительны. С учетом применяемых в различных форматах констант (1023 для длинных вещественных) в поле порядка могут кодироваться следующие значения для порядка: от -1022 до 1023 для длинных вещественных.
Поле мантиссы занимает самые младшие биты. Для длинных вещественных самый старший бит мантиссы подразумевается равным единице для нормализованных величин и опускается. Таким образом, в форматах длинных вещественных поле мантиссы содержит только дробную часть числа.
1.4 Формат команд
При разработке системы команд процессоров 80386 и i486 пришлось решить следующие основные вопросы: - обеспечить совместимость по объектному коду с предшествующими процессорами, но вместе с этим ввести в команды 32-битные операнды и адреса;
- расширить диапазон использования регистров общего назначения в адресных вычислениях, в частности, привлечь для этого регистры ЕАХ, ЕСХ и EDX, 16-битные аналоги которых АХ, СХ к DX для адресации не применялись;
- по возможности ввести новые команды, которые упрощают решение часто встречающихся программных задач, например манипуляций двоичными цепочками, двойного сдвига и др.
0бщий формат команды процессора i486 приведен на Рис. 3. Команды состоят из необязательных префиксов, одного или двух байт главного кода операции, спецификатора адреса, представленного байтами mod r/m и sib, смещения в команде (displacement) и непосредственных данных. Английские аббревиатуры означают следующее: Base - база, MODE - режим, Register/Memory - регистр/память, Scale - масштаб, Index - индекс. Из всех полей команды обязательными являются только один или два байта кода операции.
Префикс - это байт со специальным кодированием, который модифицирует операцию одной находящейся за ним команды.
Рис. 3 - Общий формат команд
Во многих командах процессора байты MODR/M и SIB следуют за байтом (байтами) кода операции. Эти байты содержат следующую информацию: 1.тип индексации или номер регистра, используемого в команде;
2.используемый регистр или дополнительную информацию о коде операции;
3.информацию о базе, индексе и масштабе.
Байт MODR/M состоит из трех информационных полей: 1.поле mod содержит два наиболее значимых бита (7 и 6 биты) и в комбинации с полем r/m определяет 32 возможных типа адресации (8 регистровых и 24 индексных);
2.поле reg содержит следующие за полем mod три бита (5, 4 и 3 биты) и определяет либо номер регистра, либо три дополнительных бита кода операции;
3.поле r/m содержит три последних значащих бита байта MODR/M (2, 1 и 0 биты) и может определять номер регистра, в котором находится операнд, или представлять совместно с полем mod 32 возможных типа адресации.
32-битные базовые и масштабируемые индексные формы адресации требуют наличия SIB байта. Определенная кодировка MODR/M байта сигнализирует о присутствии SIB байта. Байт SIB состоит из следующих полей: 1.поле ss, занимающее два наиболее значимых бита (7 и 6 биты), определяет масштабный множитель;
2.поле index, занимающее следующие три бита за полем ss (5, 4, и 3 биты), определяет номер индексного регистра;
3.поле base, занимающее оставшиеся три бита (2, 1 и 0 биты), определяет номер базового регистра.
На рис. 4 показаны форматы MODR/M и SIB байтов.
Рис. 4 - Формат байтов MODR/M и SIB
Устройство FPU имеет пять форматов команд, представленных на Рис. 5. Во всех форматах минимальная длина команды составляет два.
Команды с форматами, показанными на Рис. 5 (а,б), выполняют обращение к памяти, поэтому поля mod (режим) и r/m (регистр/память) во втором байте, а также байт sib (масштаб, индекс, база) имеют тот же смысл, что и в командах целочисленного устройства. Эти поля определяют, как формируется эффективный адрес ЕА памяти.
Команды с форматом, показанном на Рис. 5 (б), выполняют арифметические операции и операции сравнения. Поле формата памяти MF определяет тип операнда, находящегося в памяти. Оно имеет следующее кодирование: 00 - вещественное число одинарной точности (32 бита), 01 - короткое целое двоичное число (32 бита), 10 - вещественное число двойной точности (64 бита), И - целое слово (16 бит) или упакованное десятичное число (80 бит).
Во всех остальных форматах поле mod содержит комбинацию 11В. В командах целочисленного устройства эта комбинация задает режим регистровой адресации, который не относится к устройству FPU. Именно такие команды целочисленное устройство «пропускает», не производя никаких действий.
Рис. 5 - Формат команды для блока FPU
1.5 Регистры общего назначения (РОНЫ)
Основные функциональные регистры приведены на следующем рисунке:
Рис. 6 - РОНЫ
Регистры общего назначения (РОН) EAX, EBX, ECX, EDX 32-разрядные, причем каждый из них может использоваться либо как единое целое, либо только своей младшей 16-разрядной частью (AX, BX, CX, DX). В свою очередь, эти 16-разрядные части допускают независимое использование своих младших (LOW) и старших (HIGH) половин, то есть фактически 8-разрядных регистров (AH и AL, BH и BL и т.д.).
1.6 Программная модель устройства FPU
Основу программной модели устройства FPU, показанной на Рис. 9, образует регистровый стек из восьми 80-битных регистров данных R0 - R7, называемых также численными или арифметическими регистрами. В этих регистрах хранятся числа, представленные в форме с плавающей точкой в расширенном вещественном формате (ранее этот формат назывался временным вещественным форматом). Такой формат является единственным внутренним форматом чисел в устройстве FPU. В любой момент времени трехбитное поле TOP в слове состояния SW определяет регистр, являющийся текущей вершиной стека и обозначаемый ST(0) или просто ST. Все команды устройства FPU рассчитаны на такую относительную адресацию и даже на языке ассемблера нельзя работать с физическими регистрами R0 - R7.
Рис. 7 - Программная модель устройства FPU
Операция загрузки или включения в стек (PUSH) осуществляет декремент поля ТОР и загружает адресуемые данные в новую вершину стека, что приводит к автоматической перенумерации регистров. В операции сохранения и извлечения из стека (POP) в получатель, например в память, передается содержимое текущей вершины стека, а затем производится инкремент поля ТОР. Таким образом, в стандартных стековых операциях поле ТОР выполняет функции традиционного указателя стека SP (Stack Pointer).
С каждым регистром стека ассоциируется двухбитный тэг (признак), совокупность которых образует слово тэгов TW (Tag Word). Тэг регистра R0 находится в младших битах этого слова, а тэг регистра R7 в старших битах. Тэг в общем виде показывает, что содержится в соответствующем регистре и помогает устройству FPU в выполнении команд.
1.7 Регистр флагов FPU микропроцессор архитектура команда регистр
16-битное слово состояния отражает общее состояние устройства FPU (Рис. 7). В слове состояния SW младшие 6 бит отведены для регистрации особых случаев. Флажки особых случаев обозначаются так: РЕ (Precision Error) - ошибка точности, UE (Underflow Error) - ошибка антипереполнения, ОЕ (Overflow Error) - ошибка переполнения, ZE (divide-by-Zero Error) - ошибка деления на нуль
DE (Denormalized operand Error) - ошибка ненормализованного операнда, IE (Invalide operation Error) - ошибка недействительной операции.
Рис. 8 - Слово состояния сопроцессора (регистр флагов FPU)
При обнаружении любого из незамаскированных особых случаев устройство FPU устанавливает в состояние 1 соответствующий флажок и формирует активный выходной сигнал, сообщая об особом случае (прерывание 16). Процедура обработки особого случая считывает слово состояния для определения конкретной причины особого случая.
Бит нарушения стека SF предназначен для того, чтобы фиксировать ошибки в работе регистрового стека. Устройство FPU устанавливает его в состояние 1, если команда вызывает переполнение стека (включение в уже заполненный стек) или антипереполнение стека (извлечение из пустого стека).
Бит 8 суммарной ошибки ES (Error Summary) устанавливается в состояние 1 при возникновении любого особого случая и участвует в формировании выходного сигнала FERR#.
Биты кода условия СЗ - СО фиксируют особенности результатов команд сравнения, проверки и анализа. Биты СЗ - СО, в основном, применяются для условных переходов.
2. Разработка структуры и микропрограммы микропроцессора
2.1 Выборка и дешифрация команд
В соответствии с вариантом задания, требуется произвести выборку следующих команд: - IMUL r16, r/m16 (mod = 00)
- FDIV ST(i), ST
-JNA rel8
1. IMUL r16, r/m16
Команда IMUL производит знаковое умножение. В некоторых формах команды применяются неявные регистровые операнды. В данном случае первый операнд располагается в РОН, а второй операнд - в ячейке памяти, адрес которой хранится в РОН. Команда IMUL сбрасывает флажки OF и CF в 0 при форме r16, r/m16 тогда, когда результат точно помещается в r16. Если не перемещается, то старшая часть произведения перемещается в DX, OF и CF устанавливаются в 1. Флажки SF, ZF, AF и PF не определены. Код операции AF. Структура команды представлена на рисунке 9.
КОП MOD R/M
D W MOD REG/OPCODE R/M
101011 1 1 00 3 бита 3 бита
Рис. 9 - Структура команды IMUL r16, r/m16
Старшие 6 бит инициализируют код команды, бит D определяет направление передачи данных (D = 1 - из регистра/памяти в регистр). Бит W определяет размер операнда (W = 1 - полный размер).
Поле MOD в комбинации с полем r/m определяет 32 возможных типа адресации (8 регистровых и 24 индексных). При MOD = 00 (по условию) вычисляется адрес вида DS:[r/m]. Поле r/m описывает используемый регистр. Поле REG содержит адрес регистра-операнда из РОН.
2. FDIV ST(i), ST
Команда деления производит деление вершины стека ST на другой операнд и возвращают частное в получатель. Флажки C0, C2, C3 не определены, C1 = 1 показывает, что произошло округление вверх или если IE и SF = 1, то C1 различает переполнение (C1=1) и антипереполнение (C1 = 0). Численные особые случаи P, U, Z, D, I, IS. Код операции DC F8 i (i - номер регистра в регистровом стеке FPU). Структура команды представлена на рисунке 10.
FPU R P КОП КОП ST(i)
10101 1 1 0 11 111 3 бита
Рис. 10 - Структура команды FDIV ST(i), ST
Старшие 5 бит инициализируют устройство FPU. Бит R указывает на направление операции. Если R = 1, то это значит, что результат возвращается в другой (не в вершину) регистр стека. Бит P = 1 указывает на то, что данные извлекаются из стека. КОП (3,4,5,8 биты) инициализируют команду FDIV. ST(i) указывает на элемент стека, в котором содержится операнд.
Стоит отметить, что элемент стека отсчитывается от TOP.
3. JNA rel8
Условный переход JNA проверяет флажки CF и ZF на равенство 1. Флажки устанавливает предыдущая команда.
Если проверяемое условие истинно, то производится переход к ячейке, задаваемой операндом. Кодирование наиболее эффективно, когда назначение перехода находится в текущем сегменте кода и в пределах от -128 до 127 байт от первого байта следующей команды.
КОП Относительный адрес перехода
01110110 8 бит
Рис. 11 - Структура команды JNA rel8
КОП содержит код команды, а поле с относительным адресом перехода содержит число (rel8), которое будет прибавляться (вычитаться) к счетчику команд.
Команды из памяти выбираются по счетчику команд и записывается в регистр команд. В счетчике хранится адрес текущей команды. После выполнения текущей команды, значение счетчика увеличивается и выборка производится снова. В регистре команд производится дешифрация команд.
2.2 Разработка структурной схемы
На основе анализа форматов заданных команд и данных была разработана структурная схема микропроцессора, которая включает в себя следующие элементы: 1. Оперативная память объемом 4ГБ. Регистр адреса ОП имеет разрядность 31 бит, а регистр информации ОП - 16 бит. Ширина выборки - 16 бит. Разрядность общей шины - 32 бита.
2. Регистры общего назначения с организацией 8?16. Разрядность регистра адреса РОН - 3 бита, а регистра информации - 16 бит.
3. Стековая память в FPU с организацией 8?80. Разрядность регистра адреса стековой памяти 3 бита, а регистра информации - 80 бит.
4. Регистр флагов сопроцессора (РГSW) - отображает состояния флагов при выполнении команд в формате с плавающей точкой. Разрядность регистра - 16 бит.
5. Счетчик команд (СЧК) - хранит адрес следующей команды. Разрядность равна 31 биту.
6. Регистр команд (РГК) - хранит текущую команду. Разрядность равна 16 битам.
Блок АЛУ для операций команды IMUL (блоки 26-72) содержит следующие элементы: 1. Рг1_У и Рг2_У - 16 разрядные выходные регистры АЛУ, хранят множимое и множитель соответственно.
2. Рг2’_У - временный шестнадцатиразрядный регистр, используется для хранения сдвинутого значения множителя в процессе умножения.
4. СМ_У - 16-разрядный сумматор, используется для сложения суммы частичных произведений с очередным отрицательным или положительным множимым в ходе алгоритма умножения.
7. ТЗН - триггер, сохраняющий знак множителя. Введен для того, чтобы произвести нужный тип коррекции произведения после умножения (знак в Рг2_У будет утерян).
Блок АЛУ для операций команды FDIV (блоки 74-161): 1. Рг1, Рг2 - восьмидесяти разрядные входные регистры АЛУ, получают делимое и делитель из стека FPU.
2. РГА_АСТ, РГБ_АСТ, СМ_АСТ, РГСМ_АСТ - трехразрядный сумматор с входными регистрами и выходным регистром для вычисления смещения вершины относительно TOP (ST(i)).
3. Рг1_П, Рг2_П - 15 разрядные регистры для хранения порядков операндов.
5. Сч_П - 15 разрядный счетчик, хранит вычисленное значение порядков, служит для возможного инкремента порядка при денормализации.
6. М2 - комбинационная схема вычисления знака ответа. При том, что знак при делении восстанавливается, этот элемент введен для простановки знака при «критических» случаях деления, например, 0/0 или ?/?.
7. Рг2_М, Рг1_М - 65 разрядные регистры для хранения мантисс операндов. В старший бит записывается знак операнда.
8. ТЗН_М - триггер, который хранит знак делимого, полученного из Рг1_М. Сохраняет знак для выполнения коррекции после деления, так как знаковый разряд Рг1_М сдвинется в процессе деления.
9. Рг1’_М - 65 разрядный регистр, «удлиняющий» делимое. До начала деления равен 0. В процессе деления в нем получается частное.
10. Рг3_М - 65 разрядный регистр, хранящий сдвинутое значение Рг1’_М.
11. РГА_М, РГБ_М, СМ_М, РГСМ_М - 65 разрядный сумматор с входными и выходным регистрами. На нем осуществляется сложение/вычитание в процессе деления.
12. РГРЕЗ_ПЗ - 80 разрядный сдвиговый регистр, содержащий подсчитанное частное. Служит для возможной денормализации мантиссы.
13. СЧТ_М - 65 разрядный счетчик итераций при делении.
Блок АЛУ для выполнения команды JNA (блоки 14-17): 1. РГА_СЧК, РГБ_СЧК, СМ_СЧК, РГСМ_СЧК - 31 разрядный сумматор с входными и выходным регистрами для вычисления нового адреса команды. РГА_СЧК принимает значение текущей команды из СЧК, РГБ_СЧК - смещение, указанное в команде.
2. КСХ - комбинационная схема для анализа флагов.
Расчет организации ОП: Ширина выборки = 16 бит - разрядность РГИОП
N = 31 - разрядность РГАОП.
Структурная схема микропроцессора представлена в Приложении 1.
2.3 Разработка микропрограммы
Программа в ЭВМ реализуется по средствам последовательного выполнения команд. Она состоит из следующих основных этапов: - выборка и дешифрация команд;
- выборка операндов;
- выполнение операции;
- запись результата;
- формирование адреса следующей команды.
1. Блоки 1-8: выборка команды.
2. Блоки 9-12, 18-25: дешифрация команды.
3. Блоки 12-16: реализация команды JNA.
4. Блоки 26-72: реализация команды IMUL: - Блоки 26-31: выбор первого операнда.
- Блоки 33-40: выборка второго операнда из ОП.
- Блок 41: подготовка перед умножением.
- Блоки 42-51: выполнение алгоритма умножения в дополнительном коде.
- Блоки 52-57: коррекция произведения.
- Блоки 58-65: внализ произведения и вывод старшей части ответа в регистр DX.
- Блоки 66-72: вывод младшей (всей) части произведения.
5. Блок 73: инкремент счетчика команд.
6. Блоки 74 - 161: выполнение команды FDIV: - Блоки 74-76: вычисление операнда ST(i).
- Блоки 77-82: выборка первого операнда.
- Блоки 83-91: выборка второго операнда.
- Блок 92: загрузка операндов в регистры АЛУ.
- Блоки 93-108: анализ особых случаев при делении.
- Блоки 109-115: проверка условия ДМ<ДТ и коррекция в противном случае.
- Блоки 116-119, 150: вычитание порядков и проверка переполнения.
- Блоки 120-122: подготовка АЛУ для деления.
- Блоки 123-135: выполнение алгоритма деления в дополнительном коде.
- Блоки 136-145: коррекция частного.
- Блоки 146-148: денормализация мантиссы.
- Блоки 149-153: запись в регистр результата особого ответа в случае возникновения.
Функциональная микропрограмма микропроцессора представлена в Приложении 2.
3. Разработка управляющего автомата с жесткой логикой
3.1 Синтез запоминающей части управляющего автомата
Синтез управляющего автомата реализуется с помощью автомата Мура и RS-триггеров.
Рис. 12 - Структурная схема автомата Мура
В автомате Мура (рис. 12) операторные вершины алгоритма ставятся в соответствие с состояниями автомата. Отметка состояний осуществляется следующим образом: начальная и конечная вершины отмечаются одинаково; каждая операторная вершина отмечается единственным символом. Зная количество состояний, можно определить количество запоминающих элементов (триггеров):
По отмеченным состояниям в микропрограмме составляется таблица переходов автомата, которая служит исходными данными для синтеза логических схем. Таблица переходов определяется следующими множествами: - множеством состояний автомата
- множеством входных сигналов
- множеством выходных сигналов
- функциями возбуждения.
Закон функционирования автомата Мура:
Микропрограмма, помеченная состояниями автомата Мура, представлена в Приложении 2.
При кодировании состояний, могут возникнуть гонки. Для того, чтобы это избежать, воспользуемся методом соседнего кодирования.
Таблица переходов RS-триггера представлена в таблице 3. Таблица состояний на карте Карно приведена в таблице 4.
Вывод
В ходе выполнение курсового проекта было выполнено проектирование работы микропроцессора на основе команд из системы команд процессора Intel 486.
Рассматривались следующие команды: 1. IMUL r16, r/m16
2. FDIV ST(i), ST
3. JNA rel8
В курсовом проекте была разработана структура микропроцессора, его функциональная микропрограмма. На основе автомата Мура и RS-триггеров был разработан управляющий автомат с жесткой логикой. Построена принципиальная электрическая схема (на основе микросхем серии КР1533 и элемента серии К531).
Также был спроектирован автомат с программируемой логикой и построена его функциональная схема.
Разработка микропроцессора успешно завершена, благодаря оценке оптимальности принятого решения на каждом шаге проектирования.