Проектирование процессора ЭВМ с архитектурой IA-32

Автор работы: Пользователь скрыл имя, 17 Мая 2013 в 00:00, курсовая работа

Краткое описание

В ходе выполнение данного курсового проекта был разработан процессор с архитектурой Intel-32. Данный процессор выполняет 2 команды, согласно индивидуальному варианту задания: ADD Reg8, Reg8; FCMOVB ST(0), ST(i). К данному курсовому проекту прилагается пояснительная записка, содержащая подробное описание работы процессора, три электрические схемы: структурная, функциональная и принципиальная.
В качестве базовой архитектуры была выбрана архитектура P6, разработанная компанией Intel и лежащая в основе микропроцессоров Pentium Pro, Pentium II, Pentium III, Celeron и Xeon.

Содержание

Введение 5
1 Задание на курсовой проект 6
1.1 Общие аспекты проектирования процессора 6
1.2 Исходные данные 9
2 Архитектура процессора 12
2.1 Формат машинных команд IA-32 12
2.2 Форматы данных 18
2.3 Расчет и выбор разрядности основных узлов процессора 25
2.4 Регистровая модель 26
2.5 Виды адресации 39
3 Структурная организация процессора 41
3.1 Общая структура процессора 41
3.2 Выбор и обоснование элементной базы 43
3.3 Блок обработки данных 44
3.3.1 Блок с фиксированной точкой 44
3.3.2 Блок с плавающей точкой 49
3.4 Управляющий автомат с микропрограммным управлением 49
3.5 Регистровая память 53
3.6 Оперативная память 55
3.7 Блок интерфейса 56
4 Содержательные схемы алгоритмов работы процессора 57
4.1 Общий алгоритм цикла работы процессора 57
4.2 Выборка команд 57
4.3 Формирование исполнительного адреса и выборка операндов 59
4.4 Обработка прерываний 62
4.5 Выполнение двух операций из индивидуального задания 64

5 Микропрограммное управление 67
5.1 Формат микрокоманды 67
5.2 Микропрограмма выполнения операции с плавающей точкой 69
Заключение 72

Прикрепленные файлы: 1 файл

ПЗ Кузьмин.docx

— 2.76 Мб (Скачать документ)

Физически операнды располагаются  в кольцевом регистровом стеке  FPU;

в) Способы используемой адресации.

При работе с памятью используется косвенно-регистровая 32-битная  адресация, указанная в задании к курсовому проекту;

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

Команда условного переноса проверяет значения флагов в регистре EFLAGS на предмет их соответствия условию, заданному командой. Если условие CF = 1 выполняется, производится копирование значения операнда-источника в операнд-назначение. Операндом-источником всегда является элемент регистрового стека ST(i), а операндом-назначением вершина регистрового стека ST(0).

Флаги C0, C2, C3 регистра SW после выполнения команды неопределены, флаг C1 устанавливается равным 0 в случае возникновения стековой ошибки #IS.

Особые ситуации защищенного режима:

- #NM, если CR0.EM = 1 или CR0.TS = 1.

Особые ситуации режима реальной адресации:

- #NM, если CR0.EM = 1 или CR0.TS = 1.

Особые ситуации режима V86:

- #NM, если CR0.EM = 1 или CR0.TS = 1.

 

2 Архитектура процессора

2.1 Формат машинных команд IA-32

Машинная команда представляет собой закодированное по определенным правилам указание процессору на выполнение некоторой операции. Правила кодирования команд называются форматом команд. Команды процессоров архитектуры IA-32 считаются сложными. Максимальная длина машинной команды IA-32 составляет 15 байт. Реальная команда может содержать гораздо меньшее количество полей, вплоть до одного — только код операции. Приведенный на рис. 3.1 формат машинной команды является наиболее полным. Прямого соответствия между структурой команды ассемблера и соответствующей машинной командой нет. Большинство команд ассемблера имеют несколько возможных вариантов сочетания операндов.

Рисунок 1 - Формат машинной команды

Машинная команда всегда однозначна по отношению к производимым ею действиям на уровне аппаратуры. Логически любая команда языка ассемблера содержит несколько элементов:

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

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

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

Эти же элементы имеет и  машинная команда, но в закодированном виде. Перевод команд ассемблера в  соответствующие машинные команды  осуществляет специальная программа  — ассемблер, которую можно также назвать транслятором (компилятором) ассемблера.

Префиксы (поле префиксов) — необязательные однобайтные элементы машинной команды. Назначение префиксов — изменить действия, выполняемые командой. Процессор распознает префиксы по их значениям. Машинная команда может иметь до четырех префиксов одновременно. В памяти префиксы предшествуют команде. Порядок их следования при этом может быть любым.

Далее перечислены типы префиксов, которые может использовать прикладная программа:

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

- префикс повторения используется с цепочечными командами (командами обработки строк). Этот префикс «зацикливает» команду для обработки всех элементов цепочки. Система команд поддерживает два типа префиксов: безусловные, заставляющие цепочечную команду повторяться некоторое количество раз, условные, которые при зацикливании проверяют некоторые флаги, и в результате проверки возможен досрочный выход из цикла;

- префикс блокировки шины инициирует выдачу процессором сигнала LOCK# (значение 0F0h) для блокировки системной шины. Используется в многопроцессорных конфигурациях для обеспечения монопольного владения системной шиной. Сигнал LOCK# может формироваться лишь с определенной номенклатурой команд процессора, работающих в цикле «чтение-модификация-запись»;

- префикс размера адреса (значение 67h) уточняет разрядность адреса: 16 или 32 бита. Каждой команде, в которой используется адресный операнд, ставится в соответствие разрядность адреса этого операнда. Если разрядность адреса для данной команды составляет 16 битов, это означает, что команда содержит 16-разрядное смещение и оно соответствует 16-разрядному смещению адресного операнда относительно начала некоторого сегмента (см. рис. 3.1). Если разрядность адреса составляет 32 бита, это означает, что команда содержит 32-разрядное смещение, оно соответствует 32-разрядному смещению адресного операнда относительно начала сегмента и по его значению формируется 32-разрядное смещение в сегменте (см. рис. 3.1). С помощью префикса разрядности адреса можно изменить действующее по умолчанию значение разрядности адреса. Это изменение будет касаться только той команды, которой предшествует префикс;

- префикс размера операнда (значение 66h) аналогичен префиксу размера адреса, но указывает на разрядность операндов (32 или 16 битов), с которыми работает команда.

Код операции — обязательный элемент, описывающий операцию, выполняемую командой. Код операции может занимать от одного до трех байт. Для некоторых машинных команд часть битов кода операции может находиться в байте mod r/m.

Многим командам соответствует  несколько кодов операций, каждый из которых определяет нюансы выполнения операции. Отметим, что поле кода операции не имеет однозначной структуры. В зависимости от конкретных команд, не обязательно разных с точки зрения языка ассемблера, оно может иметь в своем составе от одного до трех элементов. Один из этих трех элементов является непосредственно кодом операции или ее частью, остальные уточняют детали операции. Такое строение поля кода операции усложняет, в частности, процесс дизассемблирования. Для определения размера и границ очередной команды необходимо полностью проанализировать ее поле кода операции.

 

Таблица 1 - Назначение дополнительных битов поля кода операции

Поле

Количество

Назначение

d

1

Определяет направление  передачи данных: 0 — передача данных из регистра reg в память (или регистр), адресуемую полем т/т; 1 — передача данных из памяти (или регистра), адресуемой нолем r/m, в регистр reg. При наличии байта sib адрес операнда в памяти формируется с учетом содержимого этого байта

s

1

Задает необходимость  расширения 8-разрядного непосредственного операнда до 16 или 32 бита. Старшие биты при этом заполняются значением старшего (знакового) бита исходного 8-разрядного операнда

w

1

Определяет размер данных, которыми оперирует команда: байт, слово, двойное слово: 0 — 8 битов; 1 — 16 битов  для 16-разрядного размера операндов  или 32 бита для 32-разрядного размера  операндов

reg

3

Определяет регистр, используемый в команде. Значение поля зависит от ноля w, в том числе если поле w отсутствует


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

Байт режима адресации mod r/m, иногда называемый постбайтом, несет информацию об операндах и режиме адресации. Операнды могут находиться в памяти, а также в одном или двух регистрах. Архитектура IA-32 не допускает, чтобы оба операнда команды находились в памяти. Если операнд находится в памяти, то байт mod r/m определяет компоненты (смещение, базовый и индексный регистры), используемые для вычисления его эффективного адреса.

Байт mod r/m состоит из трех полей:

- поле mod (два бита) определяет способ адресации и количество байтов, занимаемых в команде адресом операнда (поле смещения в команде). Поле mod используется совместно с полем r/m, которое определяет способ модификации адреса операнда полем смещения в команде. Поле mod в комбинации с полем r/m образует 32 возможных значения, обозначающих один из восьми регистров и 24 режима адресации. К примеру, если mod = 00, то поле смещения в команде отсутствует и адрес операнда определяется содержимым базового и/или индексного регистра. Какие именно регистры потребуются для вычисления эффективного адреса, определяется значением этого байта. Если mod = 01, то поле смещения в команде присутствует, занимает один байт и модифицируется содержимым базового и/или индексного регистра. Если mod = 10, то поле смещения в команде присутствует, занимает два или четыре байта (в зависимости от значения, действующего по умолчанию или определяемого префиксом размера адреса) и модифицируется содержимым базового и/или индексного регистра. Если mod = 11, то операндов в памяти нет — они находятся в регистрах. Это же значение байта mod используется в случае, когда команда работает с непосредственным операндом;

- поле reg (3 бита) определяет либо регистр, находящийся в команде на месте второго операнда, либо возможное расширение кода операции (давая в совокупности размер поля КОП в 11 битов).

- поле r/m используется совместно с полем mod и определяет либо регистр, находящийся в команде на месте первого операнда (если mod = 11), либо базовые и индексные регистры, применяемые для вычисления эффективного адреса (совместно с полем смещения в команде).

 

 

Таблица 2 - Значения кодов в поле reg (поле w присутствует в команде)

Поле reg

w = 0

w = 1

000

AL

AX/EAX

001

CL

CX/ECX

010

DL

DX/EDX

011

BL

BX/EBX

100

AH

SP/ESP

101

CH

BP/EBP

110

DH

SI/ESI

111

BH

DI/EDI


 

Таблица З - Значения кодов в поле reg (поле w отсутствует)

Поле reg

16-рфзрядные операции

32-разрядные операции

000

AX

EAX

001

CX

ECX

010

DX

EDX

011

BX

EBX

100

SP

ESP

101

BP

EBP

110

SI

ESI

111

DI

EDI


 

Байт масштаба, индекса  и базы (Scale-Index-Base — sib) используется для расширения возможностей адресации операндов. На наличие байта sib в машинной команде указывает сочетание одного из значений 01 или 10 поля mod и значения поля r/m = 100.

Байт sib состоит из трех элементов:

- в поле масштаба (ss) размещается масштабный множитель для индексного компонента index, занимающего следующие три бита байта sib. В поле ss может содержаться значение 1, 2, 4 или 8. При вычислении эффективного адреса на это значение будет умножаться содержимое индексного регистра;

- поле index позволяет хранить номер индексного регистра, содержимое которого применяется для вычисления эффективного адреса операнда;

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

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

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

Поле непосредственного  операнда — необязательное поле, представляющее собой 8-, 16- или 32-разрядный непосредственный операнд. Наличие этого поля, конечно, отражается на значении байта mod r/m.

 

2.2 Форматы данных

Информация о работе Проектирование процессора ЭВМ с архитектурой IA-32