- •197376, Санкт-Петербург, ул. Проф. Попова, 5.
- •Содержание
- •1.3 Исходные данные для проектирования
- •1.4 Результаты проектирования
- •1.5.1 Уточнение структуры системы
- •1.5.2 Выбор форматов данных
- •1.5.3 Определение модели памяти и структуры регистровой памяти
- •1.5.7 Основные алгоритмы функционирования
- •Алгоритмы выполнения отдельных операций
- •1.5.9Разработка алгоритмов выполнения основных операций на шине
- •2.2 Определение модели памяти и структуры регистровой памяти
- •2.3 Определение структуры внешних выводов
- •2.4 Система команд
- •2.5 Внутренняя организация
- •2.6 Структурно-функциональная схема процессора
- •2.7 Основные алгоритмы функционирования и алгоритмы выполнения отдельных операций
- •2.8 Алгоритмы выполнения операций на шине
2.2 Определение модели памяти и структуры регистровой памяти
Процессор содержит две группы регистров – пользовательские и системные, системные регистры доступны только при работе в режиме ядра.
Организация пользовательской регистровой памяти ЦП с использованием внешнего сопроцессора представлена на рисунке 4, где R0…R63 пользовательские регистры - шестьдесят четыре 32-разрядных универсальных регистров используемых в качестве адресных и в качестве целочисленных (РОН).
Рисунок 4
Регистр флажков содержит пять флажков, которые используются следующим образом:
Z – признак нулевого результата;
С – признак переноса из старшего разряда;
S – знак результата;
O – признак переполнения результата;
I – разрешение прерывания.
Системные регистры:
1) RC – регистр команд;
2) PC – программный счетчик;
3) F – регистр флажков;
4) PCI – сохранение содержимого программного счетчика при прерывании;
5) FI – сохранение флажков при прерывании.
2.3 Определение структуры внешних выводов
Рисунок 5
Сигнал/Шина |
Описание |
A |
32 разрядная шина адреса |
D |
32 разрядная шина данных |
HLD |
Запрос на захват шины |
HLDA |
Подтверждение захвата шины |
INT |
Запрос на прерывание |
INTA |
Подтверждение прерывания от процессора |
RD |
Выполняемая на шине операция – чтение |
WR |
Выполняемая на шине операция – запись |
IN |
Выполняемая на шине операция – ввод |
OUT |
Выполняемая на шине операция – вывод |
FRAME |
Организации режима пакетного обмена между ОЗУ и внутренними КЭШами. Появление данного сигнала на шине означает начало транзакции, а снятие – указывает на то, что следующий цикл передачи данных на шине является последним. |
CLC |
Синхронизация |
WAIT |
Взаимодействие с внешним математическим сопроцессором |
READY |
Сигнал готовности, служит для приёма сигнала готовности от внешних медленных устройств |
RESET |
Аппаратный сброс процессора |
FPINT |
Сигнал прерывания при ошибочной ситуации (например, при попытке делить на 0) |
FBUSY |
Сигнал – сопроцессор занят |
2.4 Система команд
Разработка системы команд
<AR0> - содержимое регистра по адресу AR0
N |
Мнемоника |
Название |
Формат команды |
Содержание |
Флажки |
Код | |||||
Z |
C |
S |
O |
I |
| ||||||
Обращения к памяти по чтению и записи | |||||||||||
1 |
RDM |
Чтение полуслова из памяти |
3 |
<Address><=<AR0> |
|
|
|
|
|
000001 | |
2 |
WDM |
Запись полуслова в память |
3 |
<AR0><=<Address> |
|
|
|
|
|
000010 | |
3 |
RFW |
Чтение слова из памяти |
3 |
<Address><=<AR0> |
|
|
|
|
|
000011 | |
4 |
WFW |
Запись слова в память |
3 |
<AR0><=<Address> |
|
|
|
|
|
000100 | |
5 |
MOV |
Запись регистр- регистр |
1 |
<AR0><=<AR1> |
|
|
|
|
|
000101 | |
Арифметические операции | |||||||||||
6 |
ADD |
Сложение |
1 |
<AR0><= <AR0>+<AR1>
|
+ |
+ |
+ |
+ |
|
000110 | |
7 |
SUB |
Вычитание |
1 |
<AR0><= <AR0>-<AR1>
|
+ |
+ |
+ |
+ |
|
000111 | |
8 |
MUX |
Умножение |
1 |
<AR0><= <AR0>*<AR1>
|
+ |
+ |
+ |
+ |
|
001000 | |
9 |
DIV |
Деление |
1 |
<AR0><= <AR0>/<AR1>
|
+ |
|
+ |
|
|
001001 | |
Команды сравнения | |||||||||||
10 |
MORE |
Больше |
1 |
<AR0><= <AR0>><AR1>
|
|
+ |
|
|
|
001010 | |
11 |
LESS |
Меньше |
1 |
<AR0><= <AR0><<AR1>
|
|
+ |
|
|
|
001011 | |
12 |
MEQ |
Больше или равно |
1 |
<AR0><= <AR0>=<AR1>
|
+ |
+ |
|
|
|
001100 | |
13 |
LEQ |
Меньше или равно |
1 |
<AR0><= <AR0><=<AR1>
|
+ |
+ |
|
|
|
001101 | |
14 |
EQ |
Равно |
1 |
<AR0><= <AR0>==<AR1>
|
+ |
|
|
|
|
001110 | |
15 |
NEQ |
Не равно |
1 |
<AR0><= <AR0>!=<AR1>
|
+ |
|
|
|
|
001111 | |
Логические операции | |||||||||||
21 |
AND |
«И» |
1 |
<AR0><= <AR0>&<AR1> |
+ |
|
|
|
|
010101 | |
22 |
OR |
«ИЛИ» |
1 |
<AR0><= <AR0>v<AR1> |
+ |
|
|
|
|
010110 | |
23 |
XOR |
Исключающее «ИЛИ» |
1 |
<AR0><= <AR0>xor<AR1> |
+ |
|
|
|
|
010111 | |
24 |
NOT |
«НЕ» |
1 |
<AR0><= ~<AR1> |
+ |
|
|
|
|
011000 | |
Сдвиги | |||||||||||
25 |
RCL |
Сдвиг влево |
5 |
<AR0> <=<<<AR1> |
|
|
|
|
|
011001 | |
26 |
RCR |
Сдвиг вправо |
5 |
<AR0> <= >> <AR1> |
|
|
|
|
|
011010 | |
Условные и безусловные переходы | |||||||||||
27 |
JMP |
Безусловный переход |
2 |
<AR0><=<AR0>+AR1+DISP |
|
|
|
|
|
011011 | |
28 |
JZ |
Переход по нулю |
2 |
<AR0><=<AR0>+AR1+DISP |
+ |
|
|
|
|
011100 | |
29 |
JO |
Переход по переполнению |
2 |
<AR0><=<AR0>+AR1+DISP |
|
|
|
+ |
|
011101 | |
30 |
JC |
Переход по переносу |
2 |
<AR0><=<AR0>+AR1+DISP |
|
+ |
|
|
|
011110 | |
31 |
JS |
Переход по условию меньше нуля |
2 |
<AR0><=<AR0>+AR1+DISP |
|
|
+ |
|
|
011111 | |
Команды работы с подпрограммой | |||||||||||
32 |
CALL |
Вызов подпрограммы |
2 |
<AR0><=<AR1>+DISP
|
|
|
|
|
|
100000 | |
33 |
RET |
Возврат из подпрограммы |
2 |
PC<=AR0 |
|
|
|
|
|
100001 | |
Прерывания | |||||||||||
34 |
SETI |
Установить флаг разрешения прерывания |
4 |
|
|
|
|
|
+ |
100010 | |
35 |
RESI |
Сбросить флаг разрешения прерывания |
4 |
|
|
|
|
|
+ |
100011 | |
36 |
CINT |
Вызов прерывания |
6 |
|
+ |
+ |
+ |
+ |
|
100100 | |
37 |
RINT |
Возврат из прерывания |
4 |
|
+ |
+ |
+ |
+ |
|
100101 | |
Команды ввода-вывода | |||||||||||
38 |
IN |
Чтение из порта |
3 |
<Address><=<AR0> |
|
|
|
|
|
100110 | |
39 |
OUT |
Запись в порт |
3 |
<AR0><=<Address> |
|
|
|
|
|
100111 |