- •Федеральное агентство по образованию
- •1.3. Исходные данные для курсового проектирования
- •1.4. Средства реализации модели
- •1.5. Результаты проектирования
- •2. Разработка архитектуры цп
- •2.1. Уточнение структуры системы
- •2.2. Архитектура внешних выводов
- •2.3. Выбор форматов данных
- •2.4. Определение модели памяти и структуры регистровой памяти
- •2.5. Выбор форматов команд
- •2.6. Разработка системы команд
- •2.7.Внутренняя организация
- •2.8. Основные алгоритмы функционирования
- •2.9. Алгоритмы выполнения отдельных операций.
- •2.10. Алгоритмы выполнения операций на шине.
- •3. Программный симулятор процессора
- •3.1. Руководство оператора
2.5. Выбор форматов команд
В соответствии с вариантом задания было выбрано четыре формата команд. Размер каждой команды равен 32 бита, что удобно при размещении команд в основной памяти и регистрах команд.
Команды для работы с памятью.
Данный формат используется в командах записи в ОП и чтения из нее. В поле RG0 хранится 3-разрядный номер регистра, содержащий в зависимости от кода операции либо адрес для сохранения значения ячейки ОП по адресуAddrв регистре, либо записи значения изRG0 в ячейку ОП с адресомAddr.
Код
операции RG0
Addr
32 27 26 24 23 8 7 0
2) Команды для арифметических операций с непосредственной адресацией 8-разрядных операндов.
Данный формат команд включает трехразрядное поле с номером регистра (RG1), сохраняющего результат операции, и два восьмиразрядных константных операндаOP1 иOP2.
Код
операции RG1 OP1 OP2
32 27 26 24 23 16 15 9 8 0
3) Команды для арифметических операций с прямой адресацией операндов.
Данный формат используется для арифметических операций с операндами, хранящимися в регистрах RG3 иRG4. Результат записывается в регистрRG2.
Код
операции
RG2
RG3
RG4
32 27 26 24 23 21 20 18 17 0
4) Команды условных переходов.
Команды данного формата имеют только два поля: код операции и смещение (DISP). При выполнении данных команд к счетчику командPCприбавляется значение поляDISP. Таким образом, данная команда реализует косвенную адресацию относительно базы – значения в регистреPC.
Код
операции DISP
32 27 26 11 10 0
Все пустые поля в форматах команд зарезервированы (не используются).
2.6. Разработка системы команд
Результаты проектирования приведены в таблице.
Таблица 6
Система команд
N |
Мне-мони-ка |
Название |
Содержание |
Флаги |
Формат команды |
Код | |||||||||
|
|
|
|
| |||||||||||
C |
O |
S |
Z |
T |
I | ||||||||||
Обращение к памяти по чтению и записи | |||||||||||||||
0 |
RDBC |
Чтение байта ОП по константному адресу |
RG0<=ram(Addr) |
|
|
|
|
|
|
1 |
000000 | ||||
1 |
RDHC |
Чтение полуслова ОП по константному адресу |
RG0<=ram(Addr) |
|
|
|
|
|
|
1 |
000001 | ||||
2 |
WRBHC |
Запись байта в ОП (старшая часть регистра) по константному адресу |
RG0=>ram(Addr) |
|
|
|
|
|
|
1 |
000010 | ||||
3 |
WRBLC |
Запись байта в ОП (младшая часть регистра) по константному адресу |
RG0=>ram(Addr) |
|
|
|
|
|
|
1 |
000011 | ||||
4 |
WRHC |
Запись полуслова в ОП по константному адресу |
RG0=>ram(Addr) |
|
|
|
|
|
|
1 |
000100 | ||||
53 |
RDBR |
Чтение байта ОП по адресу из регистра |
RG2 <= ram(RG3) |
|
|
|
|
|
|
3 |
110101 | ||||
54 |
RDHR |
Чтение полуслова ОП по адресу из регистра |
RG2 <= ram(RG3) |
|
|
|
|
|
|
3 |
110110 | ||||
55 |
WRBHR |
Запись байта в ОП (старшая часть регистра) по адресу из регистра |
RG2 => ram(RG3) |
|
|
|
|
|
|
3 |
110101 | ||||
56 |
WRBLR |
Запись байта в ОП (младшая часть регистра) по адресу из регистра |
RG2 => ram(RG3) |
|
|
|
|
|
|
3 |
111000 | ||||
57 |
WRHR |
Запись полуслова в ОП по адресу из регистра |
RG2 => ram(RG3) |
|
|
|
|
|
|
3 |
111001 | ||||
5 |
MOV |
Запись регистр/регистр |
RG2<=RG3 |
|
|
|
|
|
|
3 |
000101 | ||||
6 |
MOVC |
Запись регистр/константа |
RG1<=OP1.OP2 |
|
|
|
|
|
|
1 |
000110 | ||||
7 |
IN |
Чтение из порта |
RG0<=Addr |
|
|
|
|
|
|
1 |
001000 | ||||
8 |
OUT |
Запись в порт |
RG0=>Addr |
|
|
|
|
|
|
1 |
001001 | ||||
Арифметические операции без знака | |||||||||||||||
9 |
ADDR |
Сложение рг/рг |
RG2<=RG3+RG4 |
+ |
+ |
+ |
+ |
|
|
3 |
001010 | ||||
10 |
SUBR |
Вычитание рг/рг |
RG2<=RG3-RG4 |
+ |
+ |
+ |
+ |
|
|
3 |
001011 | ||||
11 |
MULR |
Умножение рг/рг |
RG2<=RG3*RG4 |
+ |
+ |
+ |
+ |
|
|
3 |
001100 | ||||
12 |
DIVR |
Деление рг/рг |
RG2<=RG3/RG4 |
+ |
+ |
+ |
+ |
|
|
3 |
001101 | ||||
13 |
ADDC |
Сложение const/const |
RG1<=OP1+OP2 |
|
|
+ |
+ |
|
|
2 |
001101 | ||||
14 |
SUBC |
Вычитание const/const |
RG1<=OP1-OP2 |
|
|
+ |
+ |
|
|
2 |
001110 | ||||
15 |
MULC |
Умножение const/const |
RG1<=OP1*OP2 |
|
|
+ |
+ |
|
|
2 |
001111 | ||||
16 |
DIVC |
Деление const/const |
RG1<=OP1/OP2 |
|
|
+ |
+ |
|
|
2 |
010000 | ||||
Арифметические операции со знаком | |||||||||||||||
17 |
ADDSR |
Сложение рг/рг |
RG2<=RG3+RG4 |
+ |
+ |
+ |
+ |
|
|
3 |
001110 | ||||
18 |
SUBSR |
Вычитание рг/рг |
RG2<=RG3-RG4 |
+ |
+ |
+ |
+ |
|
|
3 |
001111 | ||||
19 |
MULSR |
Умножение рг/рг |
RG2<=RG3*RG4 |
+ |
+ |
+ |
+ |
|
|
3 |
010000 | ||||
20 |
DIVSR |
Деление рг/рг |
RG2<=RG3/RG4 |
+ |
+ |
+ |
+ |
|
|
3 |
010001 | ||||
21 |
ADDSC |
Сложение const/const |
RG1<=OP1+OP2 |
|
|
+ |
+ |
|
|
2 |
010101 | ||||
22 |
SUBSC |
Вычитание const/const |
RG1<=OP1-OP2 |
|
|
+ |
+ |
|
|
2 |
010110 | ||||
23 |
MULSC |
Умножение const/const |
RG1<=OP1*OP2 |
|
|
+ |
+ |
|
|
2 |
010111 | ||||
24 |
DIVSC |
Деление const/const |
RG1<=OP1/OP2 |
|
|
+ |
+ |
|
|
2 |
011000 | ||||
Логические операции | |||||||||||||||
25 |
ANDR |
Логическое умножение рг/рг |
RG2<=RG3 & RG4 |
|
|
|
+ |
|
|
3 |
010010 | ||||
26 |
ORR |
Логическое сложение рг/рг |
RG2<=RG3 | RG4 |
|
|
|
+ |
|
|
3 |
010011 | ||||
27 |
XORR |
Исключающее ИЛИ рг/рг |
RG2<=XOR(RG3,RG4) |
|
|
|
+ |
|
|
3 |
010100 | ||||
28 |
NOTR |
Инверсия рг |
RG2<=~RG3 |
|
|
|
+ |
|
|
3 |
010101 | ||||
29 |
RLCR |
Циклический сдвиг влево рг |
RG2<=RG3<<1 |
|
|
|
|
|
|
3 |
010110 | ||||
30 |
RRCR |
Циклический сдвиг вправо рг |
RG2<=RG3>>1 |
|
|
|
|
|
|
3 |
010111 | ||||
31 |
ANDC |
Логическое умножение const/const |
RG1 <= OP1 & OP2 |
|
|
|
|
|
|
2 |
011111 | ||||
32 |
ORC |
Логическое сложение const/const |
RG1 <= OP1 v OP2 |
|
|
|
|
|
|
2 |
100000 | ||||
33 |
XORC |
Исключающее ИЛИ const/const |
RG1 <= XOR(OP1, OP2) |
|
|
|
|
|
|
2 |
100001 | ||||
34 |
NOTC |
Инверсия const |
|
|
|
|
|
|
|
2 |
100010 | ||||
Команды переходов | |||||||||||||||
37 |
CALL |
Вызов подпрограммы |
R7<=PC PC<=PC+DISP |
|
|
|
|
|
|
4 |
011000 | ||||
38 |
RET |
Возврат из подпрограммы |
PC<=R7 |
|
|
|
|
|
|
4 |
011001 | ||||
39 |
JMP |
Безусловный переход |
PC<=PC+DISP |
|
|
|
|
|
|
4 |
011010 | ||||
40 |
JZ |
Переход по нулю |
PC<=PC+DISP |
|
|
|
+ |
|
|
4 |
011011 | ||||
41 |
JNZ |
Переход не по нулю |
PC<=PC+DISP |
|
|
|
+ |
|
|
4 |
011100 | ||||
42 |
JO |
Переход по переполнению |
PC<=PC+DISP |
|
+ |
|
|
|
|
4 |
011101 | ||||
43 |
JNO |
Переход по не переполнению |
PC<=PC+DISP |
|
+ |
|
|
|
|
4 |
011110 | ||||
44 |
JC |
Переход по переносу |
PC<=PC+DISP |
+ |
|
|
|
|
|
4 |
011111 | ||||
45 |
JNC |
Переход не по переносу |
PC<=PC+DISP |
+ |
|
|
|
|
|
4 |
100000 | ||||
46 |
JS |
Переход по меньше нуля |
PC<=PC+DISP |
|
|
+ |
|
|
|
4 |
100001 | ||||
47 |
JNS |
Переход по не меньше нуля |
PC<=PC+DISP |
|
|
+ |
|
|
|
4 |
100010 | ||||
Прерывания | |||||||||||||||
48 |
RI |
Сбросить флаг разрешения прерывания |
I <= 0 |
|
|
|
|
|
+ |
4 |
100011 | ||||
49 |
SI |
Установить флаг разрешения прерывания |
I <= 1 |
|
|
|
|
|
+ |
4 |
100100 | ||||
50 |
INT |
Вызов прерывания |
PCI<=PC FI<=F |
+ |
+ |
+ |
+ |
+ |
|
4 |
100101 | ||||
51 |
IRET |
Возврат из прерывания |
PC<=PCI F<=FI |
+ |
+ |
+ |
+ |
+ |
|
4 |
100110 | ||||
Специальные операции | |||||||||||||||
52 |
NOP |
Нет операции |
|
|
|
|
|
|
|
4 |
101001 |