- •Санкт-петербургский государственный электротехнический университет "лэти" имени в.И. Ульянова (ленина)
- •Архитектура внешних выводов
- •Выбор форматов данных
- •Определение модели памяти и структуры регистровой памяти
- •5.1. Модель памяти
- •5.2. Виртуальная память Страничное преобразование
- •Свопинг
- •5.3. Структура регистровой памяти
- •Форматы команд
- •6.1. Способы адресации
- •6.2. Форматы команд
- •Система команд
- •Внутренняя организация
- •8.1. Структурно-функциональная схема процессора
- •9. Основные алгоритмы функционирования
- •9.1 Чтение команды из озу
- •9.2 Декодирование команды
- •9.3 Обработка регистровой команды (rg-rg)
- •9.4 Обработка команды типа регистр – память (rg-озу)
- •9.5 Обработка условного ввода / вывода (в/в)
- •9.6 Обработка безусловных переходов (б/п)
- •9.7 Обработка условных переходов (у/п)
- •9.8 Обработка прерываний
- •10. Алгоритмы выполнения отдельных операций
- •10.1. Выборка команды
- •10.2. Арифметические и логические операции
- •10.3. Передача управления
- •11. Основные операции на шине
- •11.1 Чтение слова из зу и запись слова в зу .
- •11.2 Обработка прерывания.
- •11.3 Обработка захвата шины.
- •13. Вывод
- •14. Список использованной литературы.
5.3. Структура регистровой памяти
Согласно заданию регистровая память должна удовлетворять следующим требованиям:
количество – 16;
универсальные;
разрядность – 32.
Предполагается следующая структура регистров:
Z (zero) - признак нулевого результата; C (carriage) - признак переноса из старшего разряда; S (sign) - знак результата; O (overflow) - признак переполнения результата; I (interrupt) - разрешения прерывания; T (trace) - пошаговый режим; U (user) - флаг супервизор- пользователь; PE (precision exception) – потеря точности NE (normalization exception) – денормализация ZE (zero exception) – деление на 0 IE (integer exception) – действительный операнд |
R0..15 – пользовательские регистры, содержимое доступно для изменений
Регистр флагов – системный регистр, который указывает признаки результатов арифметических или логических операций.
SP – системный регистр, хранящий указатель на вершину стека
TINT – системный регистр, хранящий указатель на таблицу прерываний.
PC – системный регистр, хранящий счетчик команд.
Форматы команд
6.1. Способы адресации
Согласно заданию необходимо предусмотреть следующие способы адресации:
Непосредственная
Относительная
База, Индекс – адреса регистров, в которых адреса базы и индекса.
Косвенная
6.2. Форматы команд
Согласно заданию команды имеют максимальную адресность равную 2, т.е. операции имеют вид:
О1:=O1 (операция) O2
(операция) O1
(операция)
Также команды можно разделить на:
арифметические
логические
пересылки
A – указывает, какая адресность используется для второго операнда:
00 – непосредственная
11 – относительная
10 – косвенная
01 – зарезервировано
переходов
управления
Система команд
Таблица 1.
№ |
MC |
Содержание |
Функция |
Флаги |
Код | ||||||
Z |
C |
S |
O |
I |
T |
U | |||||
7.1. Обращение пересылки | |||||||||||
1 |
RDB |
Чтение байта |
R1<=<R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
000000 |
2 |
RDHW |
Чтение полуслова |
R1<=<R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
000001 |
3 |
RDW |
Чтение слова |
R1<=<R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
000010 |
4 |
WRB |
Запись байта |
<R1>=><R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
000011 |
5 |
WRHW |
Запись полуслова |
<R1>=><R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
000100 |
6 |
WRW |
Запись слова |
<R1>=><R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
000101 |
7 |
IN |
Чтение из порта |
R2<=порт<R1> |
- |
- |
- |
- |
- |
- |
- |
000110 |
8 |
OUT |
Запись в порт |
R2=>порт<R1> |
- |
- |
- |
- |
- |
- |
- |
000111 |
9 |
MOV |
Обмен RG<>RG |
<R2><=<R1> |
- |
- |
- |
- |
- |
- |
- |
001000 |
10 |
MOVI |
Занос в регистр значения |
<R1><= R2 |
- |
- |
- |
- |
- |
- |
- |
001001 |
7.2. Арифметические операции с ФТ | |||||||||||
11 |
ADD |
Сложение |
<R1><=<R1>+<R2> |
+ |
+ |
+ |
+ |
- |
- |
- |
001100 |
12 |
SUB |
Вычитание |
<R1><=<R1>-<R2> |
+ |
+ |
+ |
+ |
- |
- |
- |
001101 |
13 |
MUL |
Умножение |
<R1><=<R1>*<R2> |
+ |
+ |
+ |
+ |
- |
- |
- |
001110 |
14 |
DIV |
Деление |
<R1><=<R1>/<R2> |
+ |
+ |
+ |
+ |
- |
- |
- |
001111 |
15 |
ADDI |
Сложение с неп оп. |
<R1><=<R1>+R2 |
+ |
+ |
+ |
+ |
- |
- |
- |
010000 |
16 |
SUBI |
Выч. с неп оп. |
<R1><=<R1>-R2 |
+ |
+ |
+ |
+ |
- |
- |
- |
010001 |
17 |
MULI |
Умн/ с неп оп. |
<R1><=<R1>*R2 |
+ |
+ |
+ |
+ |
- |
- |
- |
010010 |
18 |
DIVI |
Деление с неп оп. |
<R1><=<R1>/R2 |
+ |
+ |
+ |
+ |
- |
- |
- |
010011 |
7.3. Логические оперции с ФТ | |||||||||||
19 |
AND |
«И» |
<R1><=<R1>&<R2> |
+ |
- |
+ |
- |
- |
- |
- |
010100 |
20 |
OR |
«ИЛИ» |
<R1><=<R1>v<R2> |
+ |
- |
+ |
- |
- |
- |
- |
010101 |
21 |
XOR |
Искл «ИЛИ» |
<R1><=<R1>+<R2> |
+ |
- |
+ |
- |
- |
- |
- |
010110 |
22 |
NOT |
«НЕ» |
<R1><=~<R1> |
+ |
- |
+ |
- |
- |
- |
- |
010111 |
23 |
RCL |
Циклический сдвиг влево |
|
- |
+ |
- |
+ |
- |
- |
- |
011000 |
24 |
RCR |
Циклический сдвиг вправо |
|
- |
+ |
- |
+ |
- |
- |
- |
011001 |
7.4. Команды переходов и прерываний | |||||||||||
25 |
CLI |
Очистить флаг разрешения прерываний |
|
- |
- |
- |
- |
0 |
- |
- |
011010 |
26 |
INT |
Вызов прерывания |
<SP><=PC <R15><=flags |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
011100 |
27 |
IRET |
Возврат из прерывания |
<PC><=SP flags<=R15 |
- |
- |
- |
- |
- |
- |
- |
011101 |
28 |
CALL |
Вызов подпрограммы |
<SP><=PC PC<=<R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
011110 |
29 |
RET |
Возврат из подпрограммы |
<PC><=SP |
- |
- |
- |
- |
- |
- |
- |
011111 |
30 |
JMP |
Безусловный переход |
PC<=<R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
100000 |
31 |
JZ |
Переход по нулю |
PC<=<R1>+R2 |
+ |
- |
- |
- |
- |
- |
- |
100001 |
32 |
JNZ |
Переход не по нулю |
PC<=<R1>+R2 |
+ |
- |
- |
- |
- |
- |
- |
100010 |
33 |
JO |
Переход по переполнению |
PC<=<R1>+R2 |
- |
- |
- |
+ |
- |
- |
- |
100011 |
34 |
JNO |
Переход по не переполнению |
PC<=<R1>+R2 |
- |
- |
- |
+ |
- |
- |
- |
100100 |
35 |
JC |
Переход по переносу |
PC<=<R1>+R2 |
- |
+ |
- |
- |
- |
- |
- |
100101 |
36 |
JNC |
Переход не по переносу |
PC<=<R1>+R2 |
- |
+ |
- |
- |
- |
- |
- |
100110 |
37 |
JS |
Переход переход по < 0 |
PC<=<R1>+R2 |
- |
- |
+ |
- |
- |
- |
- |
100111 |
38 |
JNS |
Переход переход по >= 0 |
PC<=<R1>+R2 |
- |
- |
+ |
- |
- |
- |
- |
101000 |
7.5. Операции управления | |||||||||||
39 |
RFL |
Чтение флагов |
R1<=Flags |
- |
- |
- |
- |
- |
- |
- |
101001 |
40 |
WFL |
Запись флагов |
<R1>=>Flags |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
101010 |
41 |
RTLBR |
Чтение TLBP |
R1<=TLB |
- |
- |
- |
- |
- |
- |
- |
101011 |
42 |
WTLBR |
Запись TLBP |
<R1>=>TLB |
- |
- |
- |
- |
- |
- |
- |
101100 |
43 |
RISR |
Чтение TINT |
R1<=TINT |
- |
- |
- |
- |
- |
- |
- |
101101 |
44 |
WISR |
Запись TINT |
<R1>=>TINT |
- |
- |
- |
- |
- |
- |
- |
101110 |
45 |
RBVA |
Чтение BVA |
<R0><=BVA |
- |
- |
- |
- |
- |
- |
- |
110011 |
46 |
RFE |
Возврат в пользователя |
|
- |
- |
- |
- |
- |
- |
0 |
101111 |
47 |
SCALL |
Переход в супервизора |
|
- |
- |
- |
- |
- |
- |
1 |
110000 |
48 |
HALT |
Ожидание прерывания |
|
- |
- |
- |
- |
1 |
- |
- |
110001 |
49 |
NOP |
Нет операции |
PC<=<PC>+1 |
- |
- |
- |
- |
- |
- |
- |
110010 |
7.6. Арифметические операции с ПТ | |||||||||||
50 |
FADD |
Сложение |
<F0><=<F1>+<F2> |
+ |
+ |
+ |
+ |
- |
- |
- |
111000 |
51 |
FSUB |
Вычитание |
<F0><=<F1>-<F2> |
+ |
+ |
+ |
+ |
- |
- |
- |
111001 |
52 |
FMUL |
Умножение |
<F0><=<F1>*<F2> |
+ |
+ |
+ |
+ |
- |
- |
- |
111010 |
53 |
FDIV |
Деление |
<F0><=<F1>/<F2> |
+ |
+ |
+ |
+ |
- |
- |
- |
111011 |
54 |
FMOV |
Обмен RG<>RG |
F0<=<F1> |
- |
- |
- |
- |
- |
- |
- |
111100 |
55 |
FRDW |
Чтение |
<F0><=<R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
111101 |
56 |
FWRW |
Запись |
<F0><=<R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
111110 |
57 |
MFC |
Преобр ПТ-ФТ |
<R0><=<F1> |
+ |
+ |
+ |
+ |
- |
- |
- |
111111 |
58 |
MCF |
Преобр ФТ-ПТ |
<R0>=><F1> |
+ |
- |
+ |
+ |
- |
- |
- |
111111 |