- •«Санкт-Петербургский государственный электротехнический университет «лэти» имени в.И. Ульянова (Ленина)»
- •1.3. Исходные данные для курсового проектирования
- •2.2. Разработка архитектуры цп
- •2.2.1. Уточнение структуры системы
- •2.2.2. Разработка архитектуры внешних выводов
- •2.2.3. Выбор форматов данных
- •2.2.4. Определение модели памяти и структуры регистровой памяти
- •2.2.5. Выбор форматов команд
- •Прямая адресация регистра
- •2.2.7. Внутренняя организация
- •Структурная схема процессора.
- •2.2.8. Основные алгоритмы функционирования
- •2.2.9. Алгоритмы выполнения отдельных операций
- •2.2.10. Алгоритмы выполнения основных операций на шине
2.2.5. Выбор форматов команд
Команды имеют несколько форматов. В соответствии с техническим заданием, команды должны иметь максимум 3 операнда.
Рис. 8. Форматы команд.
В каждом цикле работы, процессор считывает из памяти команд 64-х разрядную команду, т.к. разрядность шины команд - 64 бита.
В старших 7 битах хранится код операции (КОП) - всего 128 возможных команд.
Поля ПА и ПАР указывают способ адресации операндов для соответствующих им полей:
Одноразрядное поле ПАР1, ПАР2, ПАР3 - для соответствующих полей с номерами регистров Р:
ПАР = 0 – прямая адресация регистра;
ПАР = 1 – косвенная адресация регистра;
Двухразрядное поле ПА1, ПА2, ПА3 - для соответствующих полей А или О:
ПА = 00 – прямая адресация регистра;
ПА = 01 – косвенная регистровая адресация;
ПА = 10 – прямая адресация ячейки памяти;
ПА = 11 — относительная адресация ячейки памяти;
Поля ИР1, ИР2, ИР3 служат для указания индексного регистра, к значению в котором прибавляется операнд в относительной адресации. Индексный регистр при разных значениях ИР это:
ИР = 0 - ПС;
ИР = 1 - соответствующий индексный регистр.
Поля, содержащие данные по которым можно найти операнды:
А — может содержать адрес ячейки памяти или номер регистра (при косвенно й регистровой адресации).
Р, Р1, Р2 и Р3 — может содержать номер регистра.
О, О1, О2 и О3 — может содержать адрес ячейки памяти или номер регистра.
Операнды извлекаются по значениям этих полей в соответствии с указанным в ПА или ПАР способом адресации.
Используемые способы адресации:
Прямая адресация регистра
Номер регистра, в котором хранится операнд.
Исполнительный адрес AИСП=A.
Косвенная регистровая адресация
Номер регистра, в котором хранится адрес той ячейки памяти где хранится операнд.
Исполнительный адрес равен содержимому регистра.
Косвенная адресация регистра
Номер регистра, в котором хранится номер того регистра где хранится операнд.
Исполнительный адрес равен содержимому регистра.
Прямая адресация ячейки памяти
Адрес ячейки памяти, в которой хранится операнд.
Исполнительный адрес AИСП=A.
Относительная адресация
Исполнительный адрес ячейки памяти формируется следующим образом:
AИСП=A+X, где
A – базовый адрес, хранится в индексном регистре (его номер указан в ИР);
X – относительный адрес (индекс), указывающий положение данного, относительно базового адреса A, в адресном поле команды.
2.2.6. Разработка системы команд
Система команд в таблице ниже.
Таблица 6 Система команд
N |
Мнемоника |
Тип |
Название |
Содержание |
Флажок |
Код |
Номер формата | ||||
|
|
|
|
|
C |
Z |
S |
|
| ||
1 |
RDMB |
Память |
Чтение байта из памяти в регистр |
Р <— A |
— |
— |
— |
— |
2 |
|
|
2 |
RDMW |
Память |
Чтение слова из памяти в регистр |
Р <— A |
— |
— |
— |
— |
2 |
|
|
3 |
WRMB |
Память |
Запись байта из регистра в память |
A <- Р |
— |
— |
— |
— |
2 |
|
|
4 |
WRMW |
Память |
Запись слова из регистра в память |
A <- Р |
— |
— |
— |
— |
2 |
|
|
5 |
ADD |
Арифм |
Сложение |
Р1 <– Р1 + Р2 Р1 <— Р2 + Р3 |
+ |
+ |
+ |
— |
1 |
|
|
6 |
SUB |
Арифм |
Вычитание |
Р1 <– Р1 - Р2 Р1 <— Р2 - Р3 |
+ |
+ |
+ |
— |
1 |
|
|
7 |
MUL |
Арифм |
Умножение |
Р1 <– Р1 * Р2 Р1 <— Р2 * Р3 |
+ |
+ |
+ |
— |
1 |
|
|
8 |
DIV |
Арифм |
Деление |
Р1 <– Р1 / Р2 Р1 <— Р2 / Р3 |
+ |
+ |
+ |
— |
1 |
|
|
9 |
INC |
Арифм |
Инкремент |
Р1++ (Р1 = Р1 + 1) |
|
|
|
|
1 |
|
|
10 |
DEC |
Арифм |
Декремент |
Р1-- (Р1 = Р1 - 1) |
|
|
|
|
1 |
|
|
11 |
EQ |
Арифм |
Равно |
Р1 <— Р2 == Р3 |
— |
+ |
— |
— |
1 |
|
|
12 |
NEQ |
Арифм |
Не равно |
Р1 <— Р2 != Р3 |
— |
+ |
— |
— |
1 |
|
|
13 |
B |
Арифм |
Больше |
Р1 <— Р2 > Р3 |
+ |
— |
— |
— |
1 |
|
|
14 |
L |
Арифм |
Меньше |
Р1 <— Р2 < Р3 |
+ |
— |
— |
— |
1 |
|
|
15 |
BEQ |
Арифм |
Больше или равно |
Р1 <— Р2 >= Р3 |
+ |
— |
+ |
— |
1 |
|
|
16 |
LEQ |
Арифм |
Меньше или равно |
Р1 <— Р2 <= Р3 |
+ |
— |
+ |
— |
1 |
|
|
17 |
AND |
Лог |
И |
Р1 <— Р2 & Р3 |
— |
— |
— |
— |
1 |
|
|
18 |
OR |
Лог |
ИЛИ |
Р1 <— Р2 | Р3 |
— |
— |
— |
— |
1 |
|
|
19 |
XOR |
Лог |
Исключающее ИЛИ |
Р1 <— Р2 ^ Р3 |
— |
— |
— |
— |
1 |
|
|
20 |
LSH |
Лог |
Сдвиг влево |
Р1 <— Р2 << Р3 |
+ |
— |
— |
— |
1 |
|
|
21 |
RSH |
Лог |
Сдвиг вправо |
Р1 <— Р2 >> Р3 |
+ |
— |
— |
— |
1 |
|
|
22 |
CALL |
Функ |
Вызов подпрограммы |
ПС <- A |
— |
— |
— |
— |
2 |
|
|
23 |
MOV |
Память |
Запись в регистр содержимого регистра |
Р1 <– Р2 |
— |
— |
— |
— |
1 |
|
|
24 |
IN |
ВВ |
Чтение из порта |
Р <- PortN |
— |
— |
— |
— |
|
|
|
25 |
OUT |
ВВ |
Вывод в порт |
PortN <- Р |
— |
— |
— |
— |
|
|
|
26 |
RET |
Функ |
Вернуться |
ПС <- R31 |
— |
— |
— |
— |
3 |
|
|
27 |
NOP |
Нет |
Подождать |
|
— |
— |
— |
— |
3 |
|
|
28 |
JMP |
Переход |
Безусловный переход |
ПС <- A |
— |
— |
— |
— |
2 |
|
|
29 |
JA |
Переход |
(Б/з) Переход, если больше |
ПС <- A |
+ |
+ |
— |
— |
|
|
|
30 |
JB |
Переход |
(Б/з) Переход, если меньше |
ПС <- A |
+ |
— |
— |
— |
|
|
|
31 |
JAE |
Переход |
(Б/з) Переход, если больше или равно |
ПС <- A |
+ |
— |
— |
— |
|
|
|
32 |
JBE |
Переход |
(Б/з) Переход, если меньше или равно |
ПС <- A |
+ |
+ |
— |
— |
|
|
|
33 |
JE |
Переход |
Переход, если равно |
ПС <- A |
— |
+ |
— |
— |
|
|
|
34 |
JNE |
Переход |
Переход, если не равно |
ПС <- A |
— |
+ |
— |
— |
|
|
|
35 |
JL |
Переход |
Переход, если больше |
ПС <- A |
— |
— |
+ |
— |
|
|
|
36 |
JGE |
Переход |
Переход, если меньше |
ПС <- A |
— |
— |
+ |
— |
|
|
|
37 |
JLE |
Переход |
Переход, если больше или равно |
ПС <- A |
— |
+ |
+ |
— |
|
|
|
38 |
JG |
Переход |
Переход, если меньше или равно |
ПС <- A |
— |
+ |
+ |
— |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Система команд включает следующие команды (через тире обозначен тип в таблице):
1) обращения к памяти по чтению и записи - Память;
2) целочисленные арифметические для чисел со знаком и без знака (сложение, вычитание, умножение, деление, сравнение) - Арифм;
3) логические (поразрядное “И”, “ИЛИ” и “Исключающее ИЛИ”) - Лог;
4) сдвигов на произвольное число тактов - Лог;
6) условных и безусловных переходов - Переход;
7) работы с подпрограммами - Прогр;
8) загрузки в регистры непосредственных операндов;
9) ввода-вывода - ВВ;
10) управления вычислительным процессом.
Код операции равен номеру (N) в двоичной форме.