Процессор архитектуры IA-32


Утв.        



Т.контр                              



Н.контр.


Провер.    Мосин С.Г.                     




ВлГУ.230101.24.4.00 ПЗ


Введение

  1. Задание на курсовой проект………………………………………………... 5
    1. Общие аспекты проектирования процессора……………………. 5
    2. Исходные данные………………………………………………….. 6
  2. Архитектура процессора….………..……...…………..………………….. 7
  3. Форматы команд…………………….……………………………… 7
  4. Форматы данных…………….………………………………..……... 14
  5. Расчет и выбор разрядности основных узлов процессора……… 16
  6. Регистровая модель………….……………………………………... 17
  7. Виды адресации………………………………………………………. 22
  8. Структурная организация процессора……………..………………… 25
  9. Общая структура процессора………………………………………... 25
  10. Выбор и обоснование элементной базы……………..…………….. 25
  11. Блоки обработки данных……………………………………….…… 26
  12. Управляющий автомат………………………………..…………….. 30

3.4.1 УА с жесткой  логикой……………….…………………….. 30

3.4.2 УА с микропрограммным управлением………………….. 33

  1. Регистровая память (РП)………………….……………………….. 36
  2. Оперативная память (ОП)…………………….…………………… 38
  3. Блок интерфейсов (БИНТ)………………………..………………… 38
  4. Содержательные схемы алгоритмов работы процессора….……………. 39
  5. Общий алгоритм цикла работы процессора………………………... 39
  6. Выборка команд………………………………..……………………. 41
  7. Формирование исполнительного адреса и выборка

операндов……………….…………………………..……………………. 47

 

  1. Обработка прерываний………………………………………………. 54
  2. Выполнение четырех операций из индивидуального задания……. 55
  3. Микропрограммное управление………….………..…………………. 64
    1. Формат микрокоманды………………………………………………. 64

5.1.1 Зона БФТ…………..…………….………………………. 65

5.1.2 Зона БПТ……………..………...……………………………. 68

5.1.3 Зона БМУ……………………….…………………………… 69

5.1.4 Зона БИНТ…………………….…………………………….. 70

5.1.5 Зона ОП……………………..….……………………………... 74

5.1.6 Зона CONST…………………………………………………… 74

    1. Микропрограмма операции обработки чисел в формате с

плавающей точкой…………………………………..…………………... 74

Заключение…………………………………………………………………... 80

Литература……………………………………………………………………. 81

 

Введение

Интенсивное развитие микроэлектроники и повышения  степени интеграции открыли новое  направление в ВТ - создание микропроцессоров и микрокомпьютеров. Появились вычислительные системы с малым уровнем потребления энергии и универсальными возможностями, которые позволяют решать задачи управления объектами различной физической природы. На основе их применения снижаются затраты на автоматизацию основных технических и вспомогательных процессов. В результате будет решена задача комплексной автоматизации производства во всех отраслях. Это позволит увеличить производительность труда, уменьшить себестоимость выпускаемой продукции и значительно сократить ручные операции в промышленности. Однако для широкого развития работ в данном направлении необходимо готовить значительное число инженеров - системотехников, умеющих создавать и применять микропроцессоры и микрокомпьютеры. Кроме того, следует выпускать и много инженеров - математиков, разрабатывающих соответствующее программное обеспечение. Для их обучения  необходимо иметь учебные пособия, посвященные аппаратным и программным средствам современной вычислительной техники.

Цель курсового  проекта состоит в приобретении практических навыков в проектировании операционного и управляющего автоматов  процессора ЭВМ в соответствии с  заданными в техническом задании  архитектурными особенностями, а также  в разработке технической документации, представленной пояснительной запиской и чертежами, выполненными в соответствии с ЕСКД.

 

1 Задание на КП

1.1 Аспекты разработки процессора

Объектом курсового  проектирования является процессор  цифровой ЭВМ широкого назначения. Проектируемый процессор должен реализовывать заданную совокупность машинных команд, соответствующих вычислительным системам с архитектурой IA-32. Процесс  разработки процессора включает следующие  основные шаги:

1) ознакомление  с системой заданных машинных  команд и архитектурой IA-32,

2) синтез структуры  операционных автоматов блоков  обработки данных в базисе  микропроцессорных секций (МПС) или  программируемых логических интегральных  схем (ПЛИС),

3) синтез управляющих  автоматов с жесткой и микропрограммируемой логикой,

4) разработка  математического обеспечения в  виде алгоритмов реализации цикла работы процессора и выполнения заданного набора команд,

5) формирование  микрокоманды и составление микропрограммы  выполнения операции из заданного  набора над числами с плавающей  точкой,

6) разработка  электрических схем (структурной,  функциональной и принципиальной) и оформление пояснительной записки.

 

1.2 Исходные данные для проектирования

Набор команд: 18, 57, C2, E2.

Таблица 1. 1 - Команды процессора

Номер команды

Код операции

Операция

Описание

Операции над целыми числами (арифметические)

18

29h

Sub Mem16, Reg16

Sub Mem32, Reg32

Mem16 – Reg16->Mem16

Mem32 – Reg32->Mem32

Операции над целыми числами (логические и сдвиги)

57

0Ch

OR AL, im8

Al or im8->AL

Операции пересылки

C2

87h

XCHG Mem32, Reg32

Mem32->Tmp

Reg32->Mem32

Tmp->Reg32

Операции над числами с плавающей  точкой

E2

DB/0h

FIADD m16int

m16int+ST(0)->ST(0)


 

Таблица 1.2 - Параметры процессора и оперативной памяти

Ёмкость оперативной памяти, Мб

8

Длина слова оперативной памяти, байт

8

Базис реализации процессора

МПС К1804 ВС2

Способ адресации

Базовая EA (0:15)


 

 

 

 

 

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

2.1 Форматы команд

а) Sub Mem16, Reg16 и Sub Mem32, Reg32

Код операции 29h.

1) Команды кодируется  с использованием 3х полей –  Opcode( 1 байт), ModR/M( 1 байт), Disp( 1 или 2 байта). Команда имеет размер 3 или 4 байта.

2) Команда работает  с знаковыми и беззнаковыми  целыми числами. В операции принимает участие операнд( 2 или 4 байта), хранящийся в памяти и любой регистр общего назначения(2 или 4 байта). Операндом – приёмником является операнд в памяти.

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

00101001

01

reg

11x

 

23    16

15    14

13       11

10   8

7             0


Disp = 16 бит

Opcode

ModR/M

Disp

Mod

Reg/Opcode

 R/M

00101001

10

        reg

  11x

 

31   24

23       22

 21            19

 18 16

15                              0


 

4) Выполняется  операция вычитания из регистра  основного назначения операнда, хранящегося в памяти и запись  результата в память. Операнды  могут быть 16 и 32 разрядными.

Флаги результата:

OF - флаг переполнения (Overflow Flag). Флаг установлен, если операция привела к переносу (займу) в знаковый (самый старший) бит результата, но не привела к переносу (займу) из самого старшего бита, или наоборот. Для операций над числами со знаком сигнализирует о переполнении.

SF - флаг знака (Sign Flag). Установлен, если установлен старший бит результата, иначе он сброшен. Для 8-, 16- и 32-разрядных операций этот флаг отражает состояние 7, 15 и 31 бита соответственно. Для знаковых чисел старший бит отражает знак числа: 0 - неотрицательное, 1 - отрицательное.

ZF - флаг нуля (Zero Flag). Установлен, если все биты результата равны нулю, иначе сброшен.

PF - флаг четности (Parity Flag). Установлен, если младшие восемь бит операнда содержат четное число единиц (проверка на четность) иначе сброшен. На этот флаг влияют только младшие восемь бит независимо от длины операнда.

CF - флаг переноса (Carry Flag). Установлен, если операция привела к переносу из старшего бита при сложении или к займу для старшего бита при вычитании, иначе сброшен. Для 8-, 16-, 32-разрядных операций этот бит устанавливается при переносе из битов 7, 15 и 31 соответственно. Для беззнаковых операций флаг сигнализирует о переполнении.

5)Исключения.

 #GP – операнд в не перезаписываемом сегменте.

Эффективный адрес  операнда вне пределов сегментных регистров CS, DS, ES, FS, или GS.

Регистр  DS, ES, FS, или GS содержит нулевой сегментный селектор.

#SS – эффективный  адрес операнда вне предела  сегментного регистра SS.

#PF(fault-code) – ошибка страничного режима.

#AC - флаг контроля за выравниванием. Если AC=1 и AM=1, то исключение #17 из-за нарушения выравнивания в 3м кольце защиты разрешено.

б) OR AL, im8

Код операции OСh

1) Команды кодируется  с использованием 2х полей –  Opcode ( 1байт)  и Immediate(1 байт)Соответственно команда имеет размер 2 байта.

2) Команда работает  с любым типом данных. В операции  принимает участие непосредственный  операнд ( 1 байт) и младший байт  регистра EAX- AL( 1 байт) . Операндом – приёмником является AL.

3) Формат команды : регистр - непосредственный операнд

Способ адресации: непосредственная.

Кодирование.

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  Mem32,Reg32

Код операции 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  m16int

Код операции 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) Рабочие программно недоступные регистры.

Процессор архитектуры IA-32