- •Министерство образования рф
- •Курсовая работа
- •Содержание.
- •1. Задание на проектирование
- •2. Введение
- •3. Форматы команд и типы данных
- •4. Типы команд
- •5. Форматы данных
- •5.1 Целые числа
- •5.2 Числа в формате с плавающей точкой (пт)
- •6. Формат команд
- •7. Структурная схема разрабатываемой системы
- •8. Регистровая модель процессора
- •9. Система команд процессора
- •7. Организация памяти
- •1 Гбайт 0.5 Гбайт 0.5 Гбайт 2 Гбайт
- •2 Гбайт
- •10. Структура внешних выводов процессора
- •11. Внутренняя организация центрального процессора
- •12. Структурная схема процессора
- •13. Алгоритм функционирования процессора
- •14. Временные диаграммы процесса считывания на шине
- •Заключение
8. Регистровая модель процессора
Регистры общего назначения (РОН). Системные регистры
TINT |
TLB |
BVA |
PC |
RF |
31……………0 |
RG1 |
RG2 |
… |
RG63 |
31……………0 |
Регистр флагов
R |
I |
T |
O |
C |
S |
Z |
D |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Регистры плавающего процессора:
регистр статуса (SR)
15…11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
xxx |
B |
Z |
S |
O |
I |
DE |
PE |
UE |
OE |
ZE |
IE |
регистр управления(CR).
15…11 |
8 |
7,6 |
5 |
4 |
3 |
2 |
1 |
0 |
xxx |
IC |
RC |
PM |
UM |
OM |
ZM |
DM |
IM |
регистровая модель центрального процессора состоит из:
64 32-разрядных регистров общего назначения;
32-разрядного регистра, содержащего адрес таблицы векторов прерываний (TINT);
32-разрядного регистра, содержащего адрес буфера TLB (TLB);
32-разрядного регистра, содержащего адрес “плохой” страницы (BVA), т.е. страницы, не содержащейся в оперативной памяти в момент обращения к ней;
32-разрядного счетчика команд (PC);
8-разрядного регистра флажков. В этом регистре разряды имеют следующее предназначение:
Z - признак нулевого результата
C - признак переноса из старшего разряда
S - знак результата
O - признак переполнения
I - флаг прерывания
T - флаг ловушки (пошаговый режим)
R - режим супервизор/пользователь
D - флаг что 32/64 битный формат данных (для некоторых операций не влияет)
регистр статуса (SR)
B – busy-бит показывает свободен или занят плавающий процессор
Z – флаг нуля;
S – флаг знака;
O – флаг переполнения;
I – флаг разрешения прерываний;
DE – ненормализованный результат;
PE – потеря точности;
UE – антипереполнение;
OE – переполнение;
ZE – деление на ноль;
IE – недействительная операция.
регистра управления(CR).
IC – тип арифметики:
аффинная (существуют положительная и отрицательная бесконечности);
проективная (существует только одна бесконечность, которая не имеет знака)
PM – маска особого случая при неточном результате;
UM – маска антипереполнения;
OM – маска переполнения;
ZM – маска деления на нуль;
DM – маска ненормализованного результата;
IM – маска недействительной операции.
9. Система команд процессора
Таблица 5. Система команд центрального процессора
№ |
Name |
Содержание |
Функция |
Флаги |
Код |
| ||||||||||||
Z |
C |
S |
O |
I |
T |
R |
D |
| ||||||||||
Обращение к памяти по чтению и записи |
| |||||||||||||||||
1 |
LDH |
Чтение полуслова старшей части слова |
R0<= <R1>+DIS |
- |
- |
- |
- |
- |
- |
- |
|
000000 |
| |||||
|
LDL |
Чтение полуслова младшей части слова |
R0<= <R1>+DIS |
- |
- |
- |
- |
- |
- |
- |
|
000001 |
| |||||
|
LD32 |
Чтение слова |
R0<= <RG1>+DIS |
- |
- |
- |
- |
- |
- |
- |
|
000010 |
| |||||
|
LD64 |
Чтение двойного слова |
R0<= <RG1>+DIS |
- |
- |
- |
- |
- |
- |
- |
|
000011 |
| |||||
|
WRHW |
Запись полуслова старшей части слова |
<R0>=> <R1>+DIS |
- |
- |
- |
- |
- |
- |
- |
|
000100 |
| |||||
|
WRHW |
Запись полуслова младшей части слова |
<R0>=> <R1>+DIS |
- |
- |
- |
- |
- |
- |
- |
|
000101 |
| |||||
|
WRW |
Запись слова |
<R0>=><R1>+DIS |
- |
- |
- |
- |
- |
- |
- |
|
000110 |
| |||||
|
WRDW |
Запись двойного слова |
<R0>=> <R1>+DIS |
- |
- |
- |
- |
- |
- |
- |
|
000111 |
| |||||
|
IN |
Чтение из порта |
<R0><=порт<R1> |
- |
- |
- |
- |
- |
- |
- |
|
001000 |
| |||||
|
OUT |
Запись в порт |
<R1>=>порт <R2> |
- |
- |
- |
- |
- |
- |
- |
|
001001 |
| |||||
|
XCHG |
Обмен RG<>RG |
<R0><R1> |
- |
- |
- |
- |
- |
- |
- |
|
001010 |
| |||||
|
MOV |
Занос в регистр значения |
<R0><= R1 |
- |
- |
- |
- |
- |
- |
- |
|
001011 |
| |||||
Арифметические операции с ФТ |
| |||||||||||||||||
|
ADD |
Сложение |
<R0><= <R0>+<R1> |
+ |
+ |
+ |
+ |
- |
- |
- |
|
001100 | ||||||
|
SUB |
Вычитание |
<R0><= <R0>-<R1> |
+ |
+ |
+ |
+ |
- |
- |
- |
|
001101 | ||||||
|
MULT |
Умножение |
<R0><= <R0>*<R1> |
+ |
+ |
+ |
+ |
- |
- |
- |
|
001110 | ||||||
|
DIV |
Деление |
<R0><= <R0>/<R1> |
+ |
+ |
+ |
+ |
- |
- |
- |
|
001111 | ||||||
|
ADDU |
Сложение |
<R0><= <R0>+<R1> |
+ |
+ |
+ |
+ |
- |
- |
- |
|
010000 | ||||||
|
SUBU |
Вычитание |
<R0><= <R0>-<R1> |
+ |
+ |
+ |
+ |
- |
- |
- |
|
010001 | ||||||
|
MULTU |
Умножение |
<R0><= <R0>*<R1> |
+ |
+ |
+ |
+ |
- |
- |
- |
|
010010 | ||||||
|
DIVU |
Деление |
<R0><= <R0>/<R1> |
+ |
+ |
+ |
+ |
- |
- |
- |
|
010011 | ||||||
Логические операции с ФТ |
| |||||||||||||||||
21 |
AND |
«И» |
<R0><= <R0>&<R1> |
+ |
- |
+ |
- |
- |
- |
- |
|
010100 | ||||||
22 |
OR |
«ИЛИ» |
<R0><= <R0>v<R1> |
+ |
- |
+ |
- |
- |
- |
- |
|
010101 | ||||||
23 |
XOR |
Искл. «ИЛИ» |
<R0><= <R0>+<R1> |
+ |
- |
+ |
- |
- |
- |
- |
|
010110 | ||||||
24 |
NOT |
«НЕ» |
<R0><= ~<R1> |
+ |
- |
+ |
- |
- |
- |
- |
|
010111 | ||||||
25 |
RCL |
Циклический сдвиг влево |
<R0> << R1 |
- |
+ |
- |
+ |
- |
- |
- |
|
011000 | ||||||
26 |
RCR |
Циклический сдвиг вправо |
<R0> >> R1 |
- |
+ |
- |
+ |
- |
- |
- |
|
011001 | ||||||
Команды переходов и прерываний |
| |||||||||||||||||
27 |
CLI |
Очистить флаг разрешения прерываний |
|
- |
- |
- |
- |
+ |
- |
- |
- |
011010 | ||||||
28 |
STI |
Установить флаг разрешения прерываний |
|
- |
- |
- |
- |
+ |
- |
- |
- |
011011 | ||||||
29 |
INT |
Вызов прерывания |
R31<=PC R30<=flags |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
|
011100 | ||||||
30 |
IRET |
Возврат из прерывания |
PC<=R31 flags<=R30 |
- |
- |
- |
- |
- |
- |
- |
|
111101 | ||||||
31 |
CALL |
Вызов подпрограммы |
R31<=PC PC<=<R0>+R1 |
- |
- |
- |
- |
- |
- |
- |
|
111110 | ||||||
32 |
RET |
Возврат из подпрограммы |
PC<=R0
|
- |
- |
- |
- |
- |
- |
- |
|
111111 | ||||||
33 |
JMP |
Безусловный переход |
PC<=<R0>+ R1 |
- |
- |
- |
- |
- |
- |
- |
|
100000 | ||||||
34 |
JZ |
Переход по нулю |
PC<=<R0>+ R1 |
+ |
- |
- |
- |
- |
- |
- |
|
100000 | ||||||
35 |
JNZ |
Переход не по нулю |
PC<=<R0>+ R1 |
+ |
- |
- |
- |
- |
- |
- |
|
100001 | ||||||
36 |
JO |
Переход по переполнению |
PC<=<R0>+ R1 |
- |
- |
- |
+ |
- |
- |
- |
|
100010 | ||||||
37 |
JNO |
Переход по не переполнению |
PC<=<R0>+ R1 |
- |
- |
- |
+ |
- |
- |
- |
|
100011 | ||||||
38 |
JC |
Переход по переносу |
PC<=<R0>+ R1 |
- |
+ |
- |
- |
- |
- |
- |
|
100100 | ||||||
39 |
JNC |
Переход не по переносу |
PC<=<R0>+ R1 |
- |
+ |
- |
- |
- |
- |
- |
|
100101 | ||||||
40 |
JS |
Переход по, меньше нуля |
PC<=<R0>+ R1 |
- |
- |
+ |
- |
- |
- |
- |
|
100110 | ||||||
41 |
JNS |
Переход по, не меньше нуля |
PC<=<R0>+ R1 |
- |
- |
+ |
- |
- |
- |
- |
|
100111 | ||||||
Специальные операции |
| |||||||||||||||||
42 |
RF |
Чтение флагов |
<R0><=Flags |
- |
- |
- |
- |
- |
- |
- |
|
101000 | ||||||
43 |
WF |
Запись флагов |
<R0>=>Flags |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
|
101001 | ||||||
44 |
RFFS |
Чтение флагов статуса плавающего процессора |
<R0><=Flags |
- |
- |
- |
- |
- |
- |
- |
|
111111 | ||||||
45 |
RFFС |
Чтение управляющих флагов плавающего процессора |
<R0><=Flags |
- |
- |
- |
- |
- |
- |
- |
|
111110 | ||||||
46 |
WFFС |
Запись управляющих флагов плавающего процессора |
<R0>=>Flags |
- |
- |
- |
- |
- |
- |
- |
|
111101 | ||||||
47 |
WTLB |
Запись TLBP |
<R0>=>TLB |
- |
- |
- |
- |
- |
- |
- |
|
101011 | ||||||
48 |
RTLB |
Чтение TLBP |
<R0><=TLB |
- |
- |
- |
- |
- |
- |
- |
|
111100 | ||||||
49 |
RINT |
Чтение TINT |
<R0><=TINT |
- |
- |
- |
- |
- |
- |
- |
|
101100 | ||||||
50 |
WINT |
Запись TINT |
<R0>=>TINT |
- |
- |
- |
- |
- |
- |
- |
|
101101 | ||||||
51 |
RBVA |
Чтение BVA |
<R0><=BVA |
- |
- |
- |
- |
- |
- |
- |
|
101110 | ||||||
52 |
USER |
Возврат в пользователя |
|
- |
- |
- |
- |
- |
- |
+ |
|
101111 | ||||||
53 |
ROOT |
Переход в супервизора |
|
- |
- |
- |
- |
- |
- |
+ |
|
110000 | ||||||
54 |
HALT |
Ожидание прерывания |
|
- |
- |
- |
- |
- |
- |
- |
|
110001 | ||||||
55 |
NOP |
Нет операции |
PC<=PC+1 |
- |
- |
- |
- |
- |
- |
- |
|
110010 | ||||||
Арифметические операции с ПТ |
| |||||||||||||||||
56 |
ADDF |
Сложение |
<R0><= <R0>+<R1> |
+ |
+ |
+ |
+ |
- |
- |
- |
|
110011 | ||||||
57 |
SUBF |
Вычитание |
<R0><= <R0>-<R1> |
+ |
+ |
+ |
+ |
- |
- |
- |
|
110100 | ||||||
58 |
MULTF |
Умножение |
<R0><= <R0>*<R1> |
+ |
+ |
+ |
+ |
- |
- |
- |
|
110101 | ||||||
59 |
DIVF |
Деление |
<R0><= <R0>/<R1> |
+ |
+ |
+ |
+ |
- |
- |
- |
|
110110 | ||||||
60 |
ITOF |
Преобр. ПТ-ФТ |
<R0><= <R1> |
+ |
+ |
+ |
+ |
- |
- |
- |
|
110111 | ||||||
61 |
FTOI |
Преобр. ФТ-ПТ |
<R0>=> <R1> |
+ |
- |
+ |
+ |
- |
- |
- |
|
111000 |
1. Обращение к памяти по чтению и записи
С помощью этих команд можно заносить данные и регистров в память и читать их оттуда.
2. Арифметические и логические операции с ФТ
Позволяют производить известные операции с числами с ФТ, которые хранятся в регистрах или с непосредственными операндами
3. Команды переходов и прерываний
Можно переходить в любое место программы, вызывать подпрограммы
4. Специальные операции
Позволяют работать с системными регистрами, заносить туда информацию и считывать ее оттуда. Команды WFL,RTLBR,WTLBR, RINT, WINT, RBVA, WFF доступны только в режиме супервизора (системном). В пользовательском режиме они недоступны.
5. Арифметические операции с ПТ
Известные операции аналогичные с ФТ.