Проектирование процессора электронной вычислительной машины
Разработка функциональной схемы операционного устройства. Составление программы реализации элементарных функций для процессора, выбор и обоснование способов адресации. Разработка микропрограммы командного цикла процессора и проектирование кэш-памяти.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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 Разработка блока формирования фи...
Подобные документы
Разработка структурной схемы вычислительного устройства, выбор системы команд и определение форматов. Разработка алгоритма командного цикла, выполнения арифметических и логических операций. Проектирование операционного автомата, устройств управления.
курсовая работа [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Разработка схемы базы данных для хранения журнала событий холодильника. Передача содержимого журнала в компьютер, подсоединенный к специальному гнезду на корпусе холодильника. Концептуальное и логическое проектирование программы встроенного процессора.
курсовая работа [1,9 M], добавлен 20.11.2020Разработка управляющего автомата процессора с жесткой логикой в САПР Quartus II. Построение схемы функциональной микропрограммы команды "Исключающее ИЛИ" в размеченном виде. Унитарное кодирование состояний автомата. Запись функций переходов и выходов.
курсовая работа [671,3 K], добавлен 04.11.2014Принцип работы процессора (одномагистральная структура). Временные диаграммы, описывающие выполнение микроопераций для каждой команды. Структурная схема управляющего автомата на основе памяти с одним полем адреса. Описание процессора на языке Active VHDL.
курсовая работа [621,0 K], добавлен 24.09.2010Выполнение операции умножения над числами с фиксированной точкой со сдвигом суммы частичных произведений вправо. Разработка структуры центрального процессора при выполнении двухадресной команды со следующими способами адресации: прямая и регистровая.
курсовая работа [459,5 K], добавлен 25.03.2012Описание архитектуры внешних выводов кристалла процессора. Рассмотрение форматов данных для целых чисел со знаком и без знака. Выбор модели памяти и структуры регистровой памяти. Использование кэш прямого отображения. Арифметические и логические команды.
курсовая работа [890,5 K], добавлен 05.06.2015Математический процессор для вычисления элементарных функций. Расчет разрядности представления данных и числа итераций. Разработка алгоритмов вычисления функции в математическом пакете. Обоснование достаточности аппаратных средств, программных ресурсов.
курсовая работа [615,9 K], добавлен 19.12.2010Принцип работы процессора, способы его охлаждения, кодовые названия. Шины процессора, разрядность и кэш–память. Технологии расширения и поток команд процессора. Процессорные вентиляторы и их характеристика. Алгоритм и способы разгона процессора.
реферат [38,0 K], добавлен 21.02.2009Управление взаимодействием всех устройств ЭВМ. История создания и развития производства процессора. Структура центрального процессора. Регистры общего назначения. Обозначения популярных моделей процессоров Intel и AMD. Команды центрального процессора.
реферат [111,2 K], добавлен 25.02.2015Ознакомление с языком ассемблера процессора Neuro Matrix NM 6403, его возможности, особенности работы, содержание операций в регистрах, архитектура. Разработка программы для заполнения блока памяти, компилирование и отладка файла, фиксирование его адреса.
лабораторная работа [48,2 K], добавлен 18.10.2012Разработка программы на языке Ассемблер для определения типа центрального процессора и его производительности. Основные этапы определения любого существующего Intel-совместимого процессора. Тактовая частота процессора, алгоритм и листинг программы.
курсовая работа [47,6 K], добавлен 26.07.2014