Проектирование процессора электронной вычислительной машины

Разработка функциональной схемы операционного устройства. Составление программы реализации элементарных функций для процессора, выбор и обоснование способов адресации. Разработка микропрограммы командного цикла процессора и проектирование кэш-памяти.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 01.02.2013
Размер файла 725,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

1. Техническое задание

процессор адресация кэш память

Разработать процессор ЭВМ со следующими характеристиками:

§ быстродействие для словных операций с ФЗ2,9 млн. оп./с;

§ параметры ЗУ:

- ширина выборки из памяти32 байт;

- объем ОЗУ128 мегабайт;

- время доступа к ОЗУ (наносекунд)330 нс;

§ разрядность данных:

- с ФЗ8, 32 бит;

- с ПЗ32 бит;

§ средства обработки прерываний:

- число источников16

- из них внутренние5

- глубина максимальной вложенности6

Разработать программу реализации элементарных функций для проектируемого процессора.

Процессор должен работать со следующими форматами данных: байт, двойное слово, слово с ПЗ. Система адресации должна включать не менее 5 видов. Элементная база для проектирования: секционированные микропроцессорные комплекты и ТТЛ - серии.

Идивидуальное задание - разработать функциональные схемы следующих устройств:

- операционное устройство;

- кэш-память

2. Разработка архитектуры процессора

2.1 Выбор и обоснование форматов данных

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

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

На рисунке 2.1 представлены используемые форматы данных.

Рисунок 2.1 - Форматы данных

Для чисел с плавающей запятой выбран формат, представленный на рисунке 2.1 д. Под знак отводится старший разряд, под порядок 8 разрядов с 30 по 23, остальные 23 разряда под мантиссу. Таким образом, диапазон представления чисел от до (). Для упрощения процесса сравнения и выравнивания порядка будут использоваться характеристика (смещённый порядок), т.е. применяется специальный дополнительный код с инверсным кодированием знаковой цифры. Это приводит к смещению всех порядков на числовой прямой, а т.к. они оказываются целыми положительными числами, то их алгебраическое сложение выполняется без предварительного анализа знака, что даёт выигрыш, как в быстродействии, так и в аппаратурных затратах.

2.2 Выбор и обоснование способов адресации

Вопрос о том, каким образом в адресном поле команды может быть указано местоположение операндов, считается одним из центральных при разработке структуры процессора. В техническом задании указано, что процессор должен иметь не менее пяти видов адресации. Для создания более гибкой системы команд было принято решение расширить количество видов адресации до 8. Разработанные виды адресации перечислены в таблице 2.1.

Таблица 2.1 - Виды адресации данных

Обозначение

Пример

Описание

Название

data

1984

OP=1984

Непосредственная

Reg

EAX

OP=EAX

Регистровая прямая

[Reg]

[EAX]

EA=EAX

Регистровая косвенная

offset

1984

EA=1984

Относительная прямая

offset[Reg]

14[ESI]

EA=14+ESI

Прямая индексная

offset[Reg-]

14[ESI-]

EA=14+ ESI

ESI:= ESI -1

Прямая индексная автодекрементная

offset[+Reg]

14[+ESI]

ESI:= ESI +1

EA= 14 + ESI

Прямая индексная автоинкрементная

[Reg][Reg]

[EBX][ESI]

EA=EBX+ESI

Базово-индексная

*OP - операнд

**EA - эффективный адрес

***offset - смещение

****data - данные

*****Reg - регистр

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

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

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

При косвенной индексной адресации эффективный адрес вычисляется как сумма адреса некоторой ячейки памяти и смещения. Базовый адрес и индекс задаётся в регистрах. Данный способ адресации необходим для обработки массивов. Косвенная индексная автоинкрементная и автодекрементная адресации введены так же для облегчения обработки массивов и организации работы со стеком.

При базово - индексной адресации в адресной части команды указано смещение операнда относительно содержимого базового регистра, который содержит полноразрядный адрес. В качестве базового регистра выступает регистр EBX или EBP. Базово - индексную адресацию можно использовать для доступа к элементам массива, положение которого в памяти в процессе вычислений может меняться. В этом случае в базовый регистр заносится начальный адрес массива, а адрес элемента массива указывается в виде смещения относительно начального адреса массива. Так же данный вид адресации можно использовать для доступа к двумерным массивам.

2.3 Выбор и обоснование форматов команд

В общем случае команда содержит следующие данные:

- подлежащая выполнению операция;

- адреса исходных данных;

- адрес по которому помещается результат.

От выбора форматов команд зависит быстродействие процессора, количество памяти, требуемое программой, сложность аппаратуры извлечения и декодирования команд. В разрабатываемом процессоре длина команды кратна слову (16 бит), что упрощает аппаратуру выборки команд, это было достигнуто путём принятия следующих решений:

- не смотря на то, что для безадресных команд достаточно 1 байта, было принято решение сделать длину данного типа команд 2 байта. А так, как безадресные команды - это в основном команды управления, которые используются, не так часто, то расходы на память, будут окупать расходы на обеспечение распаковки команд;

- во всех форматах, непосредственный операнд размером в байт будет занимать слово (младший байт равен нулю, а старший содержит операнд размером 1 байт), а так как работа с байтами не так часта, то особых проигрышей по занимаемой памяти не будет. К тому же для работы с байтовыми массивами, в систему команд введены специальные команды для работы со строками. Все безадресные команды занимают один байт, под код операции (КОП) отведено 5 бит. Формат безадресных команд приведён на рисунке 2.2.

-

15

14

10

9

8

7

6

5

4

3

2

1

0

1

КОП

x

x

1

1

1

1

1

x

x

x

Рисунок 2.2 - Формат безадресных команд

Двухадресные команды включают следующие поля:

- поле формата команды - биты 15;

- КОП - код операции;

- D - направление пересылки результата: 0 - слева на право, 1 - справа на лево;

- G - разрядность данных: 0 - 8 бита, 1 - 32 бит;

- BA1, ВА2 - вид адресации, кодирование видов адресации приведено в таблице 2.2;

- R1 - номер регистра;

- следующие байты могут содержать (могут отсутствовать):

§ 8 - восьми битные данные;

§ 32 - 32 битные данные.

Формат двухадресных команд представлен на рисунке 2.4.

15

14

10

9

8

7

6

5

3

2

0

0

КОП

D

G

BA1

R2

R1

BA2

8/32(младшее слово)

32(старшее слово)

Рисунок 2.4 - Формат двухадресных команд

В двухадресных командах один из операндов всегда регистр. В таблице 2.2, приведены возможные виды адресации.

Выделяется 4 вида пересылки данных:

- регистр - регистр;

- регистр - память;

- регистр - непосредственный операнд;

- память - непосредственный операнд.

Таблица 2.2 - Кодирование видов адресации для двухадресных команд

BA1

BA2

Описание

00

xxx

R1 R2 (р - р)

01

xxx

R1 [R2] (р - п, регистровая косвенная)

10

000

R1 Addr (р - п, относительная прямая)

10

001

R1 [ESI] + offset (р - п, индексная прямая)

10

010

R1 [EDI] + offset (р - п, индексная прямая)

10

011

R1 [EBX][ESI] (р - п, базово - индексная)

10

100

R1 [EBX][EDI] (р - п, базово - индексная)

10

101

R1 [EBP][ESI] (р - п, базово - индексная)

10

110

R1 [EBP][EDI] (р - п, базово - индексная)

10

111

R1 [ESI-] + offset (р - п, прямая индексная автодекрементная)

11

000

R1 [EDI-] + offset (р - п, прямая индексная автодекрементная)

11

001

R1 [+ESI] + offset (р - п, прямая индексная автоинкрементная)

11

010

R1 [+EDI] + offset (р - п, прямая индексная автоинкрементная)

11

011

R1 операнд (р - но)

11

100

[R1] операнд (п - но)

11

101

не используется

11

110

не используется

11

111

не используется

*xxx - номер регистра

**Addr - адрес операнда

***offset - смещение

**** р - регистр; п - память; но - непосредственный операнд

Одноадресные команды включают следующие поля:

- поле формата команды - биты 15 и 9;

- КОП - код операции;

- G - разрядность данных: 0 - 8 бита, 1 - 32 бит;

- BA1, ВА2 - вид адресации, кодирование видов адресации приведено в таблице 2.3;

- R - номер регистра, либо не используется (при относительной прямой адресации);

- следующие байты могут содержать (могут отсутствовать):

§ 8 - восьми битные данные;

§ 32 - 32 битные данные.

Формат одноадресных команд представлен на рисунке 2.3.

15

14

13

10

9

8

7

6

5

3

2

0

1

КОП

0

G

BA1

BA2

R

8/32(младшее слово)

32(старшее слово)

Рисунок 2.3 - Формат одноадресных команд

Используемые виды адресации приведены в таблице 2.3.

Таблица 2.3 - Кодирование видов адресации для одноадресных команд

BA1

BA2

Описание

00

-

R (регистровая прямая)

01

-

[R] (регистровая косвенная)

10

000

Addr (относительная прямая)

10

001

[ESI] + offset (прямая индексная)

10

010

[EDI] + offset (прямая индексная)

10

011

[EBX][ESI] (базово-индексная)

10

100

[EBX][EDI] (базово-индексная)

10

101

[EBP][ESI] (базово-индексная)

10

110

[EBP][EDI] (базово-индексная)

10

111

[ESI-] + offset (прямая индексная автодекрементная)

11

000

[EDI-] + offset (прямая индексная автодекрементная)

11

001

[+ESI] + offset (прямая индексная автоинкрементная)

11

010

[+EDI] + offset (прямая индексная автоинкрементная)

11

011

не используется

11

100

не используется

11

101

не используется

11

110

не используется

11

111

не используется

*прочерк обозначает безразличное значение поля

**Addr - адрес операнда

***offset - смещение

Команды перехода имеют следующие поля:

- поле формата команды - биты 15, 9;

- КОП - код операции;

- G - разрядность данных: 0 - 8 бита, 1 - 32 бит;

- BA1, ВА2 - вид адресации, кодирование видов адресации приведено в таблице 2.4;

- R - номер регистра;

- следующие байты могут содержать (могут отсутствовать):

§ 8 - восьми битные данные;

§ 32 - 32 битные данные.

Формат команд перехода представлен на рисунке 2.5.

15

14

13

12

11

10

9

8

7

6

5

3

2

0

1

КОП

1

G

BA1

BA2

R

8/32(младшее слово)

32(старшее слово)

Рисунок 2.5 - Формат команд перехода

Используемые виды адресации приведены в таблице 2.4.

Таблица 2.4 - Кодирование видов адресации для команд перехода

BA1

BA2

Описание

00

-

R (регистровая прямая)

01

-

[R] (регистровая косвенная)

10

000

Addr (относительная прямая)

10

001

[ESI] + offset (прямая индексная)

10

010

[EDI] + offset (прямая индексная)

10

011

[EBX][ESI] (базово-индексная)

10

100

[EBX][EDI] (базово-индексная)

10

101

[EBP][ESI] (базово-индексная)

10

110

[EBP][EDI] (базово-индексная)

10

111

не используется

11

011

непосредственный операнд

11

xxx

не используется

*прочерк обозначает безразличное значение поля

**xxx - все возможные комбинации кроме 011

***Addr - адрес операнда

****offset - смещение

Команды сопроцессора имеют следующие поля:

- поле формата команды - биты 15, 14;

- КОП - код операции;

- биты 7 - 3 не используются;

- номер регистра сопроцессора;

- следующие байты могут содержать (могут отсутствовать) 32 битные данные

Формат команд сопроцессора представлен на рисунке 2.6.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

0

1

КОП

x

x

1

1

1

1

0

R

32(младшее слово)

32(старшее слово)

Рисунок 2.6 - Формат команд сопроцессора

2.4 Разработка системы команд процессора

Система команд процессора определяет областью её применения, требованиями к стоимости, производительности и точности вычислений. Разрабатываемый процессор ориентирован на широкий класс алгоритмов, и должен содержать команды для обработки различных типов данных: чисел как с фиксированной запятой, так и с плавающей.

В таблице 2.5 приведён список безадресных команд.

Таблица 2.5 - Список безадресных команд

Код

Мнемоника

Описание

00000

CLC

сброс флага переноса

00001

CLZ

сброс флага нуля

00010

CLS

сброс флага знака

00011

CLO

сброс флага переполнения

00100

CLD

сброс флага направления

00101

CLI

сброс флага прерывания

00110

STC

установка флага переноса

00111

STZ

установка флага нуля

01000

STS

установка флага знака

01001

STO

установка флага переполнения

01010

STD

установка флага направления

01011

STI

установка флага прерывания

01100

NOP

нет операции

01101

RET

возврат из подпрограммы

01110

RETF

дальний возврат из подпрограммы

01111

IRET

возврат из пользовательского прерывания

10000

WAIT

ожидание выполнения операции в сопроцессоре

10001

LAXF

загрузка регистра флагов в младшее слово регистра EAX

10010

SAXF

загрузка в регистр флагов из младшего слова регистра EAX

10011

HLT

останов

10100

RRM

загрузка регистра маски в EAX

10101

LRM

загрузка в регистр маски значения из EAX

10110

MOVS

пересылка ECX слов из DS:ESI в ES:EDI

10111

CMPS

сравнение строк длиной ECX

11000

LODS

чтение байта из строки

11001

STOS

запись байта в строку

11010

DS:

установка префикса DS

11011

SS:

установка префикса SS

11100

ES:

установка префикса ES

В таблице 2.6 приведён список одноадресных команд.

Таблица 2.6 - Список одноадресных команд

Код

Мнемоника

Описание

00000

NOT

инверсия

00001

NEG

смена знака

00010

INC

инкремент

00011

DEC

декремент

00100

POP

запись в стек

00101

PUSH

извлечение из стека

00110

MUL

умножение

00111

IMUL

умножение с учётом знака

01000

DIV

деление

01001

IDIV

деление с учётом знака

01010

LGDT

загрузка GDTR

01011

SGDT

сохранение GDTR

01100

LIDT

загрузка IDTR

01101

SIDT

сохранение IDTR

01110

LCS

загрузка CS

01111

LDS

загрузка DS

10000

LSS

загрузка SS

10001

LES

загрузка ES

10010

SCS

сохранение CS

10011

SDS

сохранение DS

10100

SSS

сохранение SS

10101

SES

сохранение ES

В таблице 2.7 приведён список двухадресных команд.

Таблица 2.7 - Список двухадресных команд

Код

Мнемоника

Описание

00000

MOV

пересылка

00001

CMP

сравнение

00010

ADD

сложение

00011

ADC

сложение с переносом

00100

SUB

вычитание

00101

SBB

вычитание с учётом переноса

00110

TEST

проверка бит

00111

AND

конъюнкция

01000

OR

дизъюнкция

01001

XOR

исключающее или

01010

MUL

умножение

01011

IMUL

умножение с учётом знака

01100

DIV

деление

01101

IDIV

деление с учётом знака

01110

SHL

логический сдвиг влево

01111

SHR

логический сдвиг вправо

10000

SAR

арифметический сдвиг вправо

10001

ROL

циклический сдвиг влево

10010

ROR

циклический сдвиг вправо

10011

IN

Чтение из порта

10100

OUT

Запись в порт

В таблице 2.8 приведён список команд сопроцессора.

Таблица 2.8 - Список команд сопроцессора

Код

Мнемоника

Действие

Описание

00000

FADD st(i)

st(i) st(i) + st(0)

Сложение вещественных чисел

00001

FADD src

st(0) st(0) + m32

Сложение вещественных чисел

00010

FSUB st(i)

st(i) st(i) - st(0)

Вычитание вещественных чисел

00011

FSUB src

st(0) st(0) - m32

Вычитание вещественных чисел

00100

FMUL st(i)

st(0) st(i) x st(0)

Умножение вещественных чисел

00101

FDIV st(i)

st(0) st(0) / st(i)

Деление вещественных чисел

00110

FMULP st(i)

st(i) st(i) x st(0)

Умножение вещественных чисел

00111

FDIVP st(i)

st(i) st(0) / st(i)

Деление вещественных чисел

01000

FSQRT

st(0) SQRT(st(0))

Вычисление квадратного корня

01001

FABS

st(0) ABS (st(0))

Нахождение абсолютного значения

01010

FCHS

st(0) - st(0)

Изменение знака

01011

FLDZ st(i)

st(i) 0.0

Загрузка нуля

01100

FLD src

st(0) m32

Загрузка вещественного числа из памяти

Код

Мнемоника

Действие

Описание

01101

FST m32

m32 st(0)

Запись вещественного числа в память

01110

FSTP m32

m32 st(0)

Запись вещественного числа в память и выталкивание из стека

01111

FCMP m32

st(0) ? m32

Сравнение вещественных чисел

10000

FCMP st(i)

st(0) ? st(i)

Сравнение вещественных чисел

10001

FSTFL

PSW <- FPU FLAG

Запись флагов сопроцессора в младшие 4 бита слова состояния процессора

10010

FILD src

st(0) m32

Загрузка целого числа из памяти

10011

FIST

m32 st(0)

Запись целого числа в память

10100

FISTP

m32 st(0)

Запись целого числа в память и выталкивание из стека

10101

FMOV st(i)

st(0) st(i)

запись в вершину стека

10110

FNEG

st(i) -st(i)

смена знака

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

В таблице 2.9 приведён список команд для передачи управления.

Таблица 2.9 - Список команд передачи управления

Код

Мнемоника

Описание

00000

JC

переход если CF=1

00001

JNC

переход если CF=0

00010

JS

переход если SF=1

00011

JNS

переход если SF=0

00100

JZ

переход если ZF=1

00101

JNZ

переход если ZF=0

00110

JO

переход если SF=1

00111

JNO

переход если SF=0

01000

JGE/JNL

переход если SF=OF

01001

JNGE/JL

переход если SF<>OF

01010

JG/JNLE

переход если (SF=OF)&ZF=0

01011

JNG/JLE

переход если (SF<>OF)vZF=1

01100

JA/JNBE

переход если CF=1vZF=1

01101

JNA/JBE

переход если CF=0&ZF=0

01110

JMP

безусловный переход

01111

JMPF

безусловный дальний переход

10000

CALL

вызов процедуры

10001

CALLF

дальний вызов процедуры

Таблица 2.9 - Продолжение

Код

Мнемоника

Описание

10010

LOOP

переход если CX<>0

2.5 Выбор и обоснование архитектуры процессора

Согласно техническому заданию разрабатываемый процессор является 32 разрядным, поэтому РОН должны быть так же 32 разрядными. Все РОН могут участвовать в арифметических и логических операциях, помимо этого они имеют специальное назначение:

- EAX - аккумулятор;

- ECX - счетчик. Является счетчиком при организации циклов и работе со строками;

- EDX - данные;

- EBX - базовый регистр. Используется в качестве базового регистра при базово-индексной адресации;

- ESP - указатель стека;

- EBP - указатель базы;

- ESI - индекс источника. Используется в качестве индексного регистра при индексной и базово-индексной;

- EDI - индекс приемника. Индексный регистр приемника при строковых операциях и индекс при автодекрементной адресации;

В структуру процессора так же входят следующие регистры:

- сегментные регистры;

- слово состояния процессора;

- RGDT - регистр, содержащий базовый адрес глобальной таблицы дескрипторов сегментов и размер данной таблицы (структура данного регистра будет разработана далее);

- RIDT - регистр, содержащий базовый адрес таблицы прерываний (структура данного регистра будет разработана далее);

- теневые регистры сегментов CS, DS, SS, ES (структура данных регистров будет разработана далее);

- регистры аппаратуры прерывания;

На рисунке 2.7 приведена структура РОН, их коды, регистры сегментов, указатель команд.

32

16

15

8

7

0

EAX

Аккумулятор 000

AH 100

AL 000

ECX

Счётчик 001

CH 101

CL 001

EDX

Данные 010

DH 110

DL 010

EBX

База 011

BH 111

BL 011

ESP

Указатель стека 100

EBP

Указатель базы 101

ESI

Индекс источника 110

EDI

Индекс приёмника 111

EIP

Указатель команд

CS

Сегментный регистр кода

DS

Сегментный регистр данных

SS

Сегментный регистр стека

ES

Сегментный регистр данных

Рисунок 2.7 - Регистровые структуры

На рисунке 2.8 представлена структура слова состояния процессора.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

U/S

M

x

x

x

x

x

x

x

IF

DF

OF

ZF

SF

CF

Рисунок 2.8 - Слово состояния процессора

Слово состояния процессора имеет следующую структуру:

- CF - флаг переноса;

- SF - флаг знака;

- ZF - флаг нулевого результата;

- OF - флаг переполнения;

- DF - флаг направления в строковых командах: 0 - строки просматриваются от начала к концу, 1 - от конца к началу;

- IF - флаг запрещения прерываний: 0 - процессор перестаёт реагировать на прерывания;

- M - 0 - реальный режим/1 - защищённый режим;

- U/S - режим работы процессора: 00 - пользовательский, 11 - системный.

3. Разработка структурной схемы процессора

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

,

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

гдесреднее количество тактов УУ необходимое для выполнения команды без учета количества тактов на выборку из памяти самой команды и операнда задержки на АЛУ при вычислении операции и помещение результата в память;

задержка в УУ;

среднее количество обращений к ОЗУ при выполнении команды;

время доступа к ОЗУ;

количество тактов, необходимых на выполнение команды в АЛУ;

-задержка в АЛУ.

Для расчёта параметра для разрабатываемого ПР примем следующие значения параметров: . Таким образом , что в четыре раза больше необходимого значения, следовательно классическая структура ПР не подходит. Введение в структуру очереди команд и кэш-памяти, по-прежнему не даст необходимого быстродействия. Следовательно, необходимо ввести конвейерное выполнение команд. Конвейер будет иметь четыре ступени.

Структурная схема ПР приведена в приложении А.

3.1 Разработка структуры операционной части процессора

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

В качестве прототипа была выбрана микропроцессорная секция IDT49C402 фирмы Integrated Device Technology. В отличии от Am2901 в IDT49C402 регистровый файл и регистр расширения RgQ имеют по одному дополнительному порту ввода, связанному с шиной D. Это даёт возможность совмещения выполнения микрооперации в АЛУ и приём данных от внешнего источника. IDT49C402 реализует подмножество микроопераций Am2901 при сохранении их кодировки, когда . Значение не изменяет кодировку полей инструкции и задаёт новые дополнительные функции управления внутренними трактами данных и приёмником. Взяв данную МПС за прототип, в неё внесены следующие изменения:

- разрядность МПС 32 бита;

- количество регистров 16;

- возможность работать с операндами разрядностью 8 и 32 бита;

- возможность записи в регистровый файл как двойных слов, так и операндов размером один байт, причём можно записывать как старший так и младший байт.

Структурная схема операционной части приведена на рисунке 3.1.

Выбор разрядности операндов осуществляется с помощью сигналов и соответственно для входа A и B, если разрядность выбрана один байт, то для выбора старшего или младшего байта в слове используются сигналы и . Разработанное операционное устройство будет изготовлено на заказ.

Рисунок 3.1 - Структурная схема операционного устройства

3.2 Разработка ТЗ на сопроцессор

Операции над числами в формате с ПЗ имеют существенные отличия от аналогичных операций целочисленной арифметики, поэтому их обычно реализуют с помощью самостоятельного операционного устройства. Как и целочисленное ОУ, операционное устройство для чисел в формате ПЗ как минимум должно обеспечивать выполнение четырёх арифметических действий: сложения, вычитания, умножения, деления.

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

СоПР предназначен для обработки чисел с ПЗ и работает независимо от основного ПР. При выборке команда поступает как в ПР, так и в СоПР. Если выбранная команда является командой СоПР, то СоПР выдает сигнал ожидания для ПР. Когда обработка в СоПР закончена он снимает этот сигнал и ПР продолжает свою работу.

Для СоПР имеется своя система команд, которая приведена в разделе 2.4.

СоПР имеет восемь 32-разрядных регистров FR0-FR7, в которых хранятся операнды и результаты выполнения операций над числами с ПЗ. В СоПР входит УУ, которое при необходимости считывает операнды из ОК, а также обращается к ОП.

3.3 Разработка структуры ОЗУ

В соответсвии с техническим заданием объем ОЗУ равен 128 Мбайт, ширина выборки из памяти 32 байта. Для адресации каждой ячейки памяти необходимо 27 разрядов адреса. ОЗУ делится на 8 модулей по 16Мбайта. Адрес разделён на два поля: первое ФА[26:3] выбирает строку, а второе ФА[2:0] выбирает один из 8 модулей. У каждого модуля имеется 32-разрядный регистр данных RgDIO с выходами на три состояния. За одно обращение к памяти выбирается строка 256 бит. Время обращения к ОЗУ не должно превышать 300 нс.

Структура ОЗУ предствлена на рисунке хх.

Рисунок хх - Структура ОЗУ

3.4 Разработка УУ

Устройство управления (УУ) является управляющим звеном всех блоков процессора.

Для достижения заданного быстродействия командный цикл процессора был разделён на 4 ступени:

- выборка декодирование команды;

- вычисление эффективного адреса и формирование физического адреса операнда;

- выборка операндов;

- выполнение команды в АЛУ и запись результата.

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

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

К аппаратуре первой ступени можно отнести:

- управляющее устройство первой ступени (УУ1);

- очередь команд (ОК);

- дешифратор команд;

- набор регистров для хранения промежуточных и исполнительных данных.

Управляющие сигналы для первой ступени конвейера:

- y0 - запись в RgK;

- y1 - запись в EIP;

- y2 - сброс ОК;

- y3 - запуск ОК;

- y4 - чтение из ОК;

- y5 - запись в CTAok;

- y6 - установка триггера ;

- y7 - сброс ;

- y8 - запись в RgD2, RgBuf31, RgBuf41;

- y9..y17 - управление АП.

Вторая ступень состоит из:

- управляющего устройства второй ступени (УУ2);

- часть ОУ, отвечающая за вычисление исполнительного адрес в зависимости от признаков адресации;

- блок формирования физического адреса (БФФА), организующий вычисление физического адреса по исполнительному адресу и защиту памяти;

- набор регистров для хранения промежуточных и исполнительных данных.

Управляющие сигналы для второй ступени конвейера:

- y18..y37 - управление ОУ;

- y38..y47 - управление БФФА;

- y48 - установка триггера ;

- y49 - сброс ;

- y50 - запись в RgD1;

- y51 - запись в RgD3, RgBuf42.

Третья ступень состоит из:

- управляющего устройства третьей ступени (УУ3);

- набора регистров для хранения промежуточных и исполнительных данных.

Управляющие сигналы третьей ступени конвейера:

- y52..y56 - управление кэш-памятью;

- y57 - установка триггера ;

- y58 - сброс ;

- y59 - запись в RgD4.

Четвертая ступени состоит из:

- устройство управления четвертой ступенью (УУ4);

- операционное устройство (ОУ), выполняющее арифметико-логические операции;

- набор регистров для хранения промежуточных и исполнительных данных.

Управляющие сигналы для четвёртой ступени конвейера:

- y18..y37 - управление ОУ;

- y52..y56 - управление кэш-памятью;

- y60 - установка триггера ;

- y61 - сброс ;

Так как на третьей ступени происходит обращение только к кэш-памяти, то выгоднее для данной ступени управляющий автомат построить на жёсткой логике. Для первой, второй и четвёртой ступеней конвейера УУ строится на основе программируемой логики.

УУ с программируемой логикой имеет классическую структуру и включает блок управления последовательностью микрокоманд (БУПМ) на основе КР1804ВУ4, ПЗУ микропрограмм, регистр микрокоманд RgMK, мультиплексор и инвертор кода условий. Структура УУ представлена на рисунке х.х

Рисунок х.х - Структура УУ с программируемой логикой

Форматы регистров RgD2, RgD3, RgD4 приведены на рисунках x.x-x.x соответственно.

12

11

10

9

8

7

переход

смещение

регистр

база

индекс

автодекр.

6

5

4

3

2

1

0

автоинкр.

регистр базы

регистр индекса

Рисунок х.х - Формат регистра RgD2

Регистр RgD2 необходим для хранения информации, которая будет использована на второй ступени конвейера для вычисления эффективного адреса и формирования ФА.

0

0-выборка из памяти не производиться/1-выборка из памяти

Рисунок х.х - Формат RgD3

Регистр RgD3 необходим для хранения информации о необходимости выборки операндов из памяти, данная информация используется на третьей ступени конвейера.

n

.

.

.

.

.

.

.

.

1

0

начальный адрес ПМП

запись результата в память

Рисунок х.х - Формат RgD4

Регистр RgD4 необходим для хранения информации о необходимости записи результата в ОЗУ, а также содержит начальный адрес подмикропрограммы, разрядность данного поля будет известна только после разработки ПМП. Данные из данного регистра используются на четвёртой ступени конвейера.

3.5 Разработка кэш-памяти

Время доступа к ОЗУ по техническому заданию составляет 330 нс. Оно не позволяет достигнуть заданного быстродействия ПР. Поэтому в структуру ПР была введена кэш-память.

Рекомендуемый объем кэш-памяти 1/1000 от объема ОЗУ, что составит 128 Кбайт. Однако такой объём кэш-памяти первого уровня слишком большой, поэтому принято решение, что объём кэш-памяти будет 16 Кбайт, кэш-память совместно используется как для данных так и для кода.

Способ распределения для кэш-памяти выбран частично-ассоциативный, так как у него наиболее лучшие показатели:

- меньшее число промахов, по сравнению с прямым распределением;

- высокое быстродействие.

Кэш память строится из 4 модулей, которые образуют группу строк. Для выбора группы строк используется метод прямого распределения, а для выбора строки в группе - метод полностью ассоциативного распределения. Емкость строки - восемь 32-разрядных слов.

При ЧАР адрес разбивается на три части:

- тег - 15 разрядов;

- индекс группы - 7 разрядов;

- номер 32-разрядоного слова в строке - 3 разряда.

Однако по ТЗ необходимо предусмотреть работу с 8-ми разрядными данными, для чего вводится четвёртое поле, которое выбирает один из 4-х байтов 32-х разрядного слова. Обращение к массиву тегов и СОЗУ данных кэш-памяти происходит параллельно, поэтому, если требуемая строка присутствует в кэш-памяти, данные сразу же выдаются на ШД.

Стратегия обновления ОЗУ - флаговая обратная запись.

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

В целях повышения производительности кэш-память имеет два адресных порта. Кэш-память через порт А происходит чтение данных, пополнение очереди команд и запись данных из ОЗУ в случае промаха. Через порт B происходит запись результатов и запись данных из ОЗУ в случае промаха.

Структурная схема кэш-памяти приведена в приложении В. ГСА работы контроллера кэш-памяти приведена в приложении Г.

Управляющие сигналы для кэш-памяти:

- запись/чтение в порт А;

- запись в порт В;

3.6 Разработка блока формирования физического адреса

Так как в разрабатываемом ПР предполагается два режима: реальный и защищённый, то необходимо разработать две схемы формирования физического адреса. Разработаем схему для формирования ФА для реального режима. В реальном режиме программисту доступна вся физическая память размером 128М. Физическое адресное пространство разбивается на сегменты, количество которых составляет , размер каждого сегмента . Логический адрес состоит из 8 разрядного номера сегмента и 19 разрядного смещения. Физический адрес получается конкатенацией номера сегмента и смещения. Сегментный регистр выбирается автоматически в зависимости от типа информации.

Схема преобразования ЛА в ФА приведена на рисунке 3.2.

Рисунок 3.2 - Схема преобразования ЛА в ФА в реальном режиме

В защищённом режиме БФФА должен содержать:

- четыре 16-разрядных сегментных регистра CS, DS, ES, SS;

- четыре 64-разрядных регистра дескрипторов сегментов (теневые регистры сегментных регистров);

- два регистра ошибок: SR0 и SR1;

- 40-разрядный регистр RgGDT, в котором хранится 27-разрядный базовый адрес таблицы дескрипторов GDT и размер GDT;

- сумматоры и буферные элементы для формирования ФА;

- мультиплексор, для возможности формирования на выходе как ФА операндов, так и ФА дескриптора в памяти и ФА для реального режима.

В защищённом режиме программисту доступно 128 Мбайт. Разобьем всю память на сегменты, максимальный размер сегмента 1 Мбайт. Для того, чтобы адресовать все 128 Мбайт физической памяти достаточно 128 дескрипторов. Так как 128 дескрипторов не слишком много было принято решение увеличить их количество вдвое.

На рисунке 3.3 представлен формат логического адреса для защищённого режима.

15

9

8

1

0

31

20

19

0

номер сегмента

RPL

смещение в сегменте

Рисунок 3.3 - формат ЛА

На рисунке поле RPL - запрашиваемый уровень привилегий.

Формат регистра RgGDT приведён на рисунке 3.4.

39

32

31

27

26

0

предел (8 бит)

база (27 бит)

Рисунок 3.4 - формат регистра RgGDT

Регистр RgGDT - имеет размер 8 байт. Биты с 27 по 31 зарезервированы на будущее для того, чтобы при расширении объёма физической памяти, по прежнему оставалась возможность размещать таблицу GDT в любой области памяти.

На рисунке 3.5 приведён формат дескриптора сегмента.

63

56

55

54

53

52

51

47

46

20

19

0

DPL

C/D

ED

R/W

База

Предел

Рисунок 3.5 - Формат дескриптора сегмента

На рисунке 3.5 введены следующие обозначения:

- DPL - уровень привилегий сегмента;

- C/D - сегмент кода (1), сегмент данных (0);

- ED - направление расширения сегмента данных (ED=1 - сегмент стека);

- R/W - запрет чтения из сегмента кода или запрет записи в сегмент данных (R/W=0);

- База - 27 разрядный базовый адрес сегмента;

- Предел - предел сегмента.

На рисунке 3.6 приведены форматы регистров ошибок: SR0 в котором сохраняется часть логического адреса (смещение в сегменте) и SR1, в котором сохраняется номер ошибки, номер базы сегмента, режим работы ПР.

31

27

26

19

18

17

16

15

9

8

0

SR0

смещение в сегменте

SR1

Error

U/S

номер базы

Рисунок 3.6 - Формат регистров ошибок SR0, SR1

Структурная схема БФФА приведена на рисунке 3.7.

Рисунок 3.7 - Структурная схема БФФА

Управляющие сигналы:

- запись в регистр RgGDT;

- управление мультиплексором;

- выбор одного из сегментных регистров;

- запись в выбранный сегментный регистр;

- чтение сегментного регистра;

- чтение/запись регистра SR0;

- чтение/запись регистра SR0;

3.7 Разработка системы защиты памяти

Обеспечение защиты памяти осуществляется при загрузке сегментных регистров новыми значениями и при формировании ФА в защищённом режиме.

Необходимо выполнить следующие проверки:

- защита по типу сегмента (пользовательский или системный: в системном режиме разрешается доступ к любому типу сегмента, а в пользовательском - только к пользовательским сегментам);

- проверка поля индекса селектора на допустимость по размеру доступа к таблице GDT:

где - поле предела таблицы дескрипторов;

- поле индекса селектора из адреса команды.

- для сегментных регистров данных (DS, ES) тип дескриптора должен разрешать выполнение/считывание из сегмента, т.е. не допускать только выполняемые сегменты, когда данные в виде констант размещаются в сегменте кода CS:

где - значение бит, описывающих тип сегмента в дескрипторе (рисунок 3.5);

- сигнал сегментной ошибки при обращении к сегменту данных.

- для селектора регистра SS в сегменте должны быть разрешены операции считывания и записи:

где - сигнал сегментной ошибки при обращении к сегменту стека.

- сегмент CS должен быть обязательно исполняемым:

где - сигнал сегментной ошибки при обращении к сегменту кода;

- признак того, что загрузка селектора будет выполняться в регистр сегмента кода CS.

- контроль атрибутов защиты сегмента кода: запрет записи в сегмент кода, запрет считывания из сегмента кода.

где - код состояния ПР при выполнении цикла шины считывания данных из памяти.

- контроль атрибутов сегментов данных по записи (кроме сегмента стека):

- контроль сегмента по размеру:

для сегментов кода и данных (ED=0)

для сегментов кода и данных (ED=1)

3.8 Разработка системы прерывания

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

Схема аппаратуры прерываний приведена на рисунке 3.8. Она построена на основе БИС БВПП К1804ВН1, которая представляет собой восьми разрядную микропрограммируемую схему векторного приоритетного прерывания. По техническому задания необходимо обрабатывать запросы от 16 источников, из которых 11 внутренних, а 5 внешних. Таким образом, для реализации поставленной задачи следует построить схему каскадного включения двух БИС БВПП К1804ВН1 с последовательным переносом. Для чего нужен управляемый шифратор К1804ВР3, который формирует старший разряд регистра состояния SA3 и разрешает запись с шины SA2-SA0 в одну из выбранных БИС БВПП. Так же в состав АП входит 3-х разрядный реверсивный счетчик вложенности прерываний CT и логическая схема позволяющая ограничить вложенность аппаратных прерываний до 6. ПКП должен быть настроен в ходе выполнения программы инициализации на режим фиксированных приоритетов.

Регистр IDTR содержит базовый адрес таблицы прерываний, таким образом, формирование адреса дескриптора в таблицы прерываний происходит автоматически. Адрес подаётся на магистраль адреса.

На каждый дескриптор в таблице IDT отведено по 4 байта.

Рисунок 3.8 - Схема аппаратуры прерываний

Управляющие сигналы:

- сброс счётчика;

- запись в RIDT;

- инкремент счётчика;

- декремент счётчика.

3.9 Разработка очереди команд

ОК представляет собой буфер FIFO, в который выбираются команды из памяти перед выполнением. Ширина выборки по ТЗ составляет 32 байта, а для безостановочной работы ОК необходим объём в 2 раза превышающий ширину выборки, поэтому ОК состоит из 16 32-х разрядных слов или 64 байт. Структурная схема ОК приведена на рисунке 3.9.

Рисунок 3.9 - Структурная схема очереди команд

4. Разработка микропрограммы командного цикла процессора

4.1 Разработка ГСА командного цикла процессора

При включении питания или аппаратного сброса работа ПР начинается с процедуры инициализации устройств. В ходе инициализации выполняются следующие действия: ПР переводится в реальный режим, на УУ ступеней подаются сигналы сброса, очищаются регистры (РОН, сегментные регистры и некоторые другие вспомогательные регистры), установка ЕIP и CS в исходное состояние, очистка битов достоверности кэш-памяти, PSW устанавливается в 0000h, счетчик вложенности прерываний обнуляется, происходит сброс всех ступеней конвейера, заполняется ОК.

ГСА КЦ ПР приведена в приложении Б.

Производится запуск первой ступени. Если в ОК есть команды то команда считывается в регистр RgK. В зависимости от длины команды увеличиваются внутренние счетчики, а также указатель команд, данные, если они есть в регистр RgD. Далее в зависимости от вида адресации и типа команды происходит её дешифрация. В конце анализируются сигналы останова и аппаратного прерывания и КЦ ПР завершается или продолжается. В очереди команд есть свое УУ, которое инициирует пополнение очереди команд. Пополнение ОК происходит параллельно выборке команды и практически не влияет на быстродействие.

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

На третьей ступени, анализируется признак чтения операнда, и если чтение производить не надо, то ступень находится в состоянии ожидания. В противном случае данные считываются из кэш-памяти.

На четвертой ступени осуществляется непосредственное выполнение команд. Начальный адрес подмикропрограммы (ПМП) находится в регистре RgD4. Осуществляется переход на ПМП выполнения определенной операции. УУ4 может запускать все остальные УУ, кроме УУ2, специальными сигналами. После выполнения ПМП происходит запись результата, если это необходимо.

4.2 Разработка подпрограммы вычисления элементарной функции

В данном курсовом проекте необходимо разработать подпрограмму для вычисления элементарной функции:

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

Вычисления заканчиваются, когда достигнута необходимая точность.

Исходные данные:

- x - адрес области памяти, в которой находится переменная x;

- y - адрес результата;

- e - точность;

- const1 - константа 1.0

Функция сбрасывает флаг CF, если вычисления успешны, и устанавливает его в противном случае.

func proc

fld FR1, x

fld FR2, e

fld FR3, x

fld FR4, const1

fld FR5, const1

fld FR6, const1

fld FR7, x

@@1:

fmov FR1

fmulp FR3

fld const1

fadd FR4

fmov FR4

fadd FR5

fmov FR3

fdiv FR5

fsub FR6

jo err

fld const1

fadd FR4

fmov FR4

fadd FR5

fmov FR1

fmulp FR3

fmov FR3

fdiv FR5

fsub FR7

jo err

fasb

fcmp FR2

jbe @@2

fneg FR3

jmp @@1

@@2:

fmov FR6

fdiv FR7

clc

fst y

ret

err:

stc

ret

func endp

;x

;точность

;хранит x^n

;счётчик для факториала

;факторал

;регистр для ряда COS, FR6:=1

;регистр для радя SIN, FR7:=x

;FR0:=FR3

;FR3:=FR3*FR0

;FR0:=1

;FR4:=FR4+1

;FR0:=FR4

;FR5:=FR5+FR0

;FR0:=FR3

;FR0:=FR0/FR5 (x^n/факториал)

;FR6:=FR6-FR0 (ряд косинуса)

;если переполнение

;загрузка константы 1, FR0:=1

;FR4:=FR4+FR0, инкр. сч. факториала

;FR0:=FR4

;FR5:=FR5+FR0, нов. занч. факториала

;FR0:=FR3

;FR3:=FR3*FR0

;FR0:=FR3 (FR0:=x^n)

;FR0:=FR0/FR5 (x^n/факториал)

;FR7:=FR7-FR0 (ряд синуса)

;если переполнение

;FR0:=ABS(FR0)

;FR0?FR2 проверка точности

;если точность достигнута

;FR3:=-FR3

;FR0:=FR6

;FR0:=FR0/FR6 (вычисление ctg(x))

;сброс флага переноса

;y:=FR0

;установка флага переноса

Размещено на Allbest.ru


Подобные документы

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

    курсовая работа [2,8 M], добавлен 15.05.2014

  • Рассмотрение принципа работы процессора и его практической реализации с использованием языка описания аппаратуры Verilog. Проектирование системы команд процессора. Выбор размера массива постоянной памяти. Подключение счетчика инструкций и файла регистра.

    курсовая работа [1,2 M], добавлен 26.05.2022

  • Разработка структурной схемы процессора; синтез микропрограммного и управляющего автомата с жесткой логикой. Функциональная организация процессора: программные модели, форматы данных и команд. Организация оперативной памяти. Проектирование блока операций.

    учебное пособие [1,1 M], добавлен 09.04.2013

  • Функциональная и структурная организация ЭВМ. Разработка функциональных микропрограмм заданных команд. Их объединение и привязка к структуре операционного автомата процессора. Разработка управляющего автомата процессора с программируемой логикой.

    дипломная работа [4,0 M], добавлен 25.03.2012

  • Разработка устройства, реализующего набор команд из числа операций с плавающей точкой семейства процессора i486. Структура сопроцессора FPU. Принцип выполнения операций, разработка блок-схемы, построение структурной схемы основных блоков процессора.

    курсовая работа [734,9 K], добавлен 27.10.2010

  • Характеристики элементов вычислительной машины для выполнения офисных операций. Выбор процессора, расчет его мощности на 60 GFLOPS. Выбор материнской платы, системы охлаждения для процессора, физической и оперативной памяти для хранения информации.

    контрольная работа [43,6 K], добавлен 11.11.2015

  • Разработка модели процессора, выполняющего набор машинных команд. Структурная схема процессора (операционного и управляющего автоматов), анализ принципа работы. Содержательный алгоритм микропрограммы, синтез управляющего автомата на основе жесткой логики.

    курсовая работа [871,9 K], добавлен 16.09.2010

  • Разработка устройства управления процессора для выполнения команд сложения, вычитания и поразрядного логического "или", с использованием способов адресации операндов: регистр-регистр, регистр - непосредственно операнд, регистр - прямая адресация памяти.

    курсовая работа [72,8 K], добавлен 21.11.2011

  • История развития центрального процессора. Основные проблемы создания многоядерных процессоров. Проектирование микропроцессорной системы на базе процессора Intel 8080. Разработка принципиальной схемы и блок-схемы алгоритма работы микропроцессорной системы.

    курсовая работа [467,6 K], добавлен 11.05.2014

  • Базовая структура процессора. Хранение признаков перехода и состояний. Применение буферного регистра. Алгоритм выполнения команды условного перехода. Увеличение быстродействия процессора. Выполнение микроопераций и вычисление логических условий.

    курсовая работа [777,7 K], добавлен 31.01.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.