1.1 Структура микропроцессора-прототипа
Гипотетический микропроцессор, разрабатываемый в данном курсовом проекте, основан на архитектуре микропроцессора 80386. Он содержит: регистры общего назначения, сегментные регистры, микропрограммное устройство управления, устройство управления и синхронизации, 32-разрядное арифметико-логическое устройство, регистры указателей, индексные регистры, регистр команд, регистр флагов, устройство сегментации, устройство страничного преобразования.
Общая структурная схема микропроцессора приведена на рисунке 1.1.
Рисунок 1.1 – Общая структурная схема микропроцессора 80386.
Пояснение к схеме:
БАД – буфер адреса данных (используется для передачи и считывания данных из оперативной памяти);
СФА – сумматор физического адреса (блок формирования физического адреса из сегмента и смещения);
РФ – регистр флагов;
АЛУ – арифметико-логическое устройство;
БК – очередь (буфер) команд;
РК – регистр команд;
УУиС – устройство управления и синхронизации;
МУУ – микропрограммное устройство управления;
РО – регистр обмена;
EAX, EBX, ECX, EDX – регистры общего назначения;
ESP, EBP – регистры указателей;
ESI, EDI – индексные регистры;
BR1, BR2 – буферные регистры операндов АЛУ;
CS, DS, SS, ES, FS, GS – сегментные регистры;
EIP – регистр адреса команды.
К регистрам общего назначения относятся:
ЕAX – аккумулятор, в основном участвует в арифметических операциях и предназначен для хранения одного из операндов или результата операции. Возможно обращение к первому(AL) или второму(AH) байтам или к обоим вместе(AX);
EBX – регистр базы. В основном в нем хранится начальный адрес обрабатываемого массива данных. Возможно обращение к первому(BL) или второму(BH) байтам или к обоим вместе(BX);
ECX – используется как счетчик при организации циклов. Возможно обращение к первому(CL) или второму(CH) байтам или к обоим вместе(CX);
EDX – регистр данных. В командах умножения и деления сохраняет старшую половину 64-разрядных операндов, а в командах ввода-вывода содержит адрес внешних устройств. Возможно обращение к первому(DL) или второму(DH) байтам или к обоим вместе(DX).
Все регистры общего назначения 32-разрядные.
Регистры указателей ESP и EBP используются для работы со стековым сегментом: ESP – содержит адрес вершины стека, EBP – хранит адрес начального элемента массива данных в стековом сегменте. Эти регистры 32-разрядные. Возможно обращение к младшим 2-м байтам: SP – для регистра ESP и BP – для регистра EBP.
Регистры индексов используются для доступа к элементам массива: ESI – регистр индекса источника, хранит смещение адреса для чтения, EDI – регистр индекса приемника, хранит смещение адреса для записи. Эти регистры также 32-разрядные. Возможно обращение к младшим 2-м байтам: SI – для регистра ESI и DI – для регистра EDI.
Сегментные регистры индексируют глобальную дескрипторную таблицу, в записях которой хранятся базовые адреса сегментов. Используется четыре 16-разрядных сегментных регистра для адресации логических частей программы: CS – регистр сегмента команд, косвенно (через глобальную дескрипторную таблицу) адресует сегмент памяти, в котором хранится выполняемая программа; DS – регистр сегмента данных, косвенно адресует сегмент памяти, содержащий обрабатываемые данные; SS – регистр сегмента стека, косвенно адресует сегмент памяти, называемый сегментом, данные в котором хранятся по принципу LIFO; ES – косвенно адресует регистр дополнительного сегмента, в котором может храниться информация.
Регистр адреса команды EIP – хранит 32-разрядный адрес очередной команды, которая должна извлекаться из сегмента команд памяти.
Регистр команд предназначен для хранения кода операции текущей команды. При необходимости из него считывается непосредственное значение операнда или его адрес в памяти.
РO – регистр, который используется для обмена между устройством сегментации и внутренней шиной процессора.
БА – буферный регистр адреса, БД – буферный регистр данных. Используются для обмена с памятью.
Регистры BR1 и BR2 используются для временного хранения операндов арифметико-логических операций.
Регистр флагов содержит 13 признаков (флагов), характеризующих состояние микропроцессора. Шесть флагов устанавливается в соответствии с результатом выполненной в АЛУ операцией.
VM - обеспечивает режим виртуального 8086 внутри режима виртуальной адресации. При VM = 1 МП будет переключен в режим виртуального 8086, при этом управление перезагрузкой сегментов будет осуществляться подобно 8086, но с исключением 13 недействительных привилегированных команд. VM может быть установлен в режиме виртуальной адресации командой IRET (если уровень приоритета = 0) и задача переключается на более низший уровень.
RF - признак используется совместно с отладочными регистрами контрольных точек (прерываний) или пошагового режима. С его помощью проверяется ход выполнения команд в отладочном режиме (процесс отладки). Если установлен RF (=1), то это позволяет игнорировать ошибки, возникающие при отладке до следующей команды. RF автоматически сбрасывается в 0 при успешном выполнении команды.
NT - признак гнездования задач используется только в режиме виртуальной адресации. NT=1 указывает, что текущая задача является вложенной по отношению к другой задаче. Этот бит устанавливается и сбрасывается при вызове других задач. NT проверяется командой IRET для определения внутри заданного или внешнего по отношению к данной задаче возврата. Команды POPF и IRET будут устанавливать NT в соответствии с тем, что хранится в стеке для любого уровня привилегированности.
IOPL - признак используется только в режиме виртуальной адресации. IOPL указывает максимальную величину текущего приоритета, обеспечивающую выполнение команд без реакции на ошибку.
OF – флаг переполнения, устанавливается в 1, если в результате выполнения операций происходит переполнение разрядной сетки (если перенос из (n-2)-го разряда в(n-1) не совпадает с переносом из (n-1)-го разряда в несуществующий n-ый).
DF – флаг направления передачи, определяет способ изменения адресов источников/приемников кода в командах работы со строками данных. Если DF равен 0, то адреса наращиваются, 1 – уменьшаются.
IF - флаг разрешения прерывания, сброшенный в состояние 0, запрещает обработку запроса на прерывание, а в 1 разрешает ее.
TF - флаг пошагового режима, в 1 - задает специальный режим покомандного выполнения, в котором после обработки каждой команды генерируется программное прерывание.
SF – флаг знака, устанавливается равным старшему (n-1)-му разряду кода результата. При выполнении операций над числами со знаком он соответствует знаку результата, если результат >= 0, будет сброшен в 0, если результат < 0 - будет установлен в 1.
ZF – флаг нулевого результата, принимает единичное значение, если все разряды результата нулевые; если хотя бы один разряд результата отличен от 0, ZF сбрасывается в 0.
CF – флаг переноса, устанавливается в 1, если в результате выполнения операции возник перенос из (n-1)-го разряда результата в несуществующий старший n-й разряд или потребовался заем несуществующего n-го разряда.
PF – флаг паритета, дополняет код результата до нечетного, т.е. устанавливается в 1, если количество единиц в коде результата четно.
AF – флаг вспомогательного переноса, устанавливается в 1, если при выполнении операции произошел перенос из 3 в 4 разряд результата или выполнился заем из 3 в 4 разряд. Используется для десятичной коррекции результата.
Арифметико-логическое устройство предназначено для выполнения арифметических, логических и сдвиговых операций над 8-, 16- и 32-разрядными кодами. Операнды поступают в АЛУ из регистров общего назначения и/или памяти. Результат операции возвращается в регистр общего назначения или в память.
Устройство сегментации преобразует эффективный адрес в линейный, который поступает на вход устройства страничного преобразования. Устройство страничного преобразования формирует из линейного адреса физический.
Микрокомандное устройство управления: формирует сигналы управления работой устройства обработки.
Шина адреса состоит из 32 сигнальных линий, несущих адреса ячеек памяти и портов ввода/вывода. По каждой линии можно передать два возможных значения (0 или 1). Стандартный PC может использовать 2^32 физических адресов.
Системная шина (шина данных). Шина данных совместно с шиной адреса используется для передачи данных внутри PC. Единица передачи 1 байт. Шина данных состоит из 16 информационных линий, каждая передает одну двоичную цифру.
- Введение
- 1 Анализ структуры микропроцессора прототипа и алгоритмов выполнения заданного подмножества команд
- 1.1 Структура микропроцессора-прототипа
- 1.2 Адресация основной памяти
- 1.3 Анализ способов адресации операндов и алгоритмов выполнения заданного подмножества команд
- 2 Постановка задач проекта
- 2.1 Требования к структуре и интерфейсу гипотетического микропроцессора
- 2.2 Требования к структуре и интерфейсу алу микропроцессора
- 2.3 Требования к структуре микро эвм
- 3 Разработка алу микропроцессора
- 3.1 Разработка оа для отдельных операций алу
- 3.1.1 Разработка оа для операции сложения add
- 3.1.2 Разработка оа для операции умножения по алгоритму с младших разрядов множителя со сдвигом частичных сумм вправо mul(a)
- 3.1.3 Разработка оа для операции декремента dec
- 3.2 Разработка общего оа алу
- 3.3 Разработка микропрограмм выполнения операций в алу
- 3.3.1 Арифметическая операция сложения add
- 3.3.2 Арифметическая операция беззнакового умножения mul по алгоритму с младших разрядов множителя со сдвигом частичных сумм вправо
- 4.2 Система команд микропроцессора
- 4.2.1 Команда add al,imm8
- 4.2.2 Команда mul r8
- 5.2 Организация шин микро-эвм
- 5.3 Организация озу
- 5.4 Микропрограмма работы микро-эвм
- 6 Разработка программы эмуляции работы микро-эвм
- 6.1 Постановка задачи
- 6.2 Алгоритм работы программы эмуляции
- 6.3 Список процедур и функций
- 6.4 Анализ результатов тестирования программы
- Перечень ссылок
- Приложение а техническое задание на разработку микроэвм
- Приложение б техническое задание на программу-эмулятор
- Приложение в руководство пользователя