Целые без знака используют так же для представления адресов.
Числа с ПТ имеют один знаковый бит, 8 битов порядка и 23 бита мантиссы. При работе с ними необходимо предусмотреть несколько исключительных ситуаций
+0: s=0; p=0..0; M=0..0;
-0: s=1; p=0..0; M=0..0;
-: s=0; p=1..1; M=0..0;
+: s=1; p=1..1; M=0..0;
NAN: s=X; p=1..1; M=X..X( кроме 0,,0).
6. Виртуальная память
Виртуальная память и организация защиты памяти.
Концепция виртуальной памяти.
Общепринятая в настоящее время концепция виртуальной памяти появилась достаточно давно. Она позволила решить целый ряд актуальных вопросов организации вычислений.
Прежде всего, к числу таких вопросов относится обеспечение надежного функционирования мультипрограммных систем. В любой момент времени компьютер выполняет множество процессов или задач, каждая из которых располагает своим адресным пространством. Было бы слишком накладно отдавать всю физическую память какой-то одной задаче, тем более, что многие задачи реально используют только небольшую часть своего адресного пространства. процессор виртуальная память архитектура
Поэтому необходим механизм разделения небольшой физической памяти между различными задачами. Виртуальная память является одним из способов реализации такой возможности.
Она делит физическую память на блоки и распределяет их между различными задачами. При этом она предусматривает также некоторую схему защиты, которая ограничивает задачу теми блоками, которые ей принадлежат.
Большинство типов виртуальной памяти сокращают также время начального запуска программы на процессоре, поскольку не весь программный код и данные требуются ей в физической памяти, чтобы начать выполнение.
Другой вопрос, тесно связанный с реализацией концепции виртуальной памяти, касается организации вычислений на компьютере задач очень большого объема. Если программа становилась слишком большой для физической памяти, часть ее необходимо было хранить во внешней памяти (на диске) и задача приспособить ее для решения на компьютере ложилась на программиста. Программисты делили программы на части и затем определяли те из них, которые можно было бы выполнять независимо, организуя оверлейные структуры, которые загружались в основную память и выгружались из нее под управлением программы пользователя. Программист должен был следить за тем, чтобы программа не обращалась вне отведенного ей пространства физической памяти. Виртуальная память освободила программистов от этого бремени. Она автоматически управляет двумя уровнями иерархии памяти: основной памятью и внешней (дисковой) памятью.
Кроме того, виртуальная память упрощает также загрузку программ, обеспечивая механизм автоматического перемещения программ, позволяющий выполнять одну и ту же программу в произвольном месте физической памяти.
Системы виртуальной памяти можно разделить на два класса: системы с фиксированным размером блоков, называемых страницами, и системы с переменным размером блоков, называемых сегментами.
Ниже рассмотрен первый тип организации виртуальной памяти.
7. Регистровая модель процессора
Регистровая модель процессора состоит из
1 PC- 32-x разрядный счетчик команд; C его помощью устройство выборки команд считывает слова, начиная с адреса на 1 большего значения записанного в PC.
2 BVA- 32-разрядный регистр в него записывается адрес плохой страницы. Т.е. когда идет обращение к какой то странице памяти не находящейся в оперативной памяти происходит запись адреса этой страницы в BFA, а затем с помощью этого адреса происходит загрузка страници в ОП.
3 Flags - 8-разрядный регистр регистр флажков. Если происходит одно из событий, которые могут отражаться в этом регистре, то происходит установка того или иного флажка.
Z- признак нулевого результата
C- признак переноса из старшего разряда
S- знак результата
O- признак переполнения
I- флаг прерывания
T- флаг ловушки
U- флаг пользователь/супервизор
PL- флаг уровня привелегий
4 TLBP- 32-разрядный регистр указатель на таблицу переадресации
5 TINT - 32-разрядный регистр указатель на таблицу векторов прерываний
6 8 - 32-разрядных регистров общего назначения
8. Система команд процессора и сопроцессора
|
№ |
Name |
Содержание |
Функция |
Флаги |
Код |
|||||||
|
Z |
C |
S |
O |
I |
T |
U |
||||||
|
Обращение к памяти по чтению и записи |
||||||||||||
|
RDB |
Чтение байта |
R0<= <R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
000000 |
||
|
RDHW |
Чтение полуслова |
R0<= <R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
000001 |
||
|
RDW |
Чтение слова |
R0<= <R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
000010 |
||
|
WRB |
Запись байта |
<R0>=> <R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
000011 |
||
|
WRHW |
Запись полуслова |
<R0>= ><R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
000100 |
||
|
WRW |
Запись слова |
<R0>=> <R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
000101 |
||
|
IN |
Чтение из порта |
R0<=порт<R1> |
- |
- |
- |
- |
- |
- |
- |
000110 |
||
|
OUT |
Запись в порт |
R0=>порт<R1> |
- |
- |
- |
- |
- |
- |
- |
000111 |
||
|
MOV |
Обмен RG<>RG |
<R0><=<R1> |
- |
- |
- |
- |
- |
- |
- |
001000 |
||
|
MOVI |
Занос в регистр значения |
<R0><= R2 |
- |
- |
- |
- |
- |
- |
- |
001001 |
||
|
Арифметические операции с ФТ |
||||||||||||
|
ADD |
Сложение |
<R0><= <R1>+<R2> |
+ |
+ |
+ |
+ |
- |
- |
- |
001100 |
||
|
SUB |
Вычитание |
<R0><= <R1>-<R2> |
+ |
+ |
+ |
+ |
- |
- |
- |
001101 |
||
|
MUL |
Умножение |
<R0><= <R1>*<R2> |
+ |
+ |
+ |
+ |
- |
- |
- |
001110 |
||
|
DIV |
Деление |
<R0><= <R1>/<R2> |
+ |
+ |
+ |
+ |
- |
- |
- |
001111 |
||
|
ADDI |
Сложение с неп оп. |
<R0><= <R1>+R2 |
+ |
+ |
+ |
+ |
- |
- |
- |
010000 |
||
|
SUBI |
Выч. с неп оп. |
<R0><= <R1>-R2 |
+ |
+ |
+ |
+ |
- |
- |
- |
010001 |
||
|
MULI |
Умн/ с неп оп. |
<R0><= <R1>*R2 |
+ |
+ |
+ |
+ |
- |
- |
- |
010010 |
||
|
DIVI |
Деление с неп оп. |
<R0><= <R1>/R2 |
+ |
+ |
+ |
+ |
- |
- |
- |
010011 |
||
|
Логические оперции с ФТ |
||||||||||||
|
AND |
«И» |
<R0><= <R1>&<R2> |
+ |
- |
+ |
- |
- |
- |
- |
010100 |
||
|
OR |
«ИЛИ» |
<R0><= <R1>v<R2> |
+ |
- |
+ |
- |
- |
- |
- |
010101 |
||
|
XOR |
Искл «ИЛИ» |
<R0><= <R1>+<R2> |
+ |
- |
+ |
- |
- |
- |
- |
010110 |
||
|
NOT |
«НЕ» |
<R0><= ~<R1> |
+ |
- |
+ |
- |
- |
- |
- |
010111 |
||
|
RCL |
Циклический сдвиг влево |
- |
+ |
- |
+ |
- |
- |
- |
011000 |
|||
|
RCR |
Циклический сдвиг вправо |
- |
+ |
- |
+ |
- |
- |
- |
011001 |
|||
|
Команды переходов и прерываний |
||||||||||||
|
CLI |
Очистить флаг разрешения прерываний |
0 |
011010 |
|||||||||
|
INT |
Вызов прерывания |
<R7><=PC <R6><=flags |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
011100 |
||
|
IRET |
Возврат из прерывания |
<PC><=R7 flags<=R6 |
- |
- |
- |
- |
- |
- |
- |
011101 |
||
|
CALL |
Вызов подпрограммы |
<R7><=PC PC<=<R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
011110 |
||
|
RET |
Возврат из подпрограммы |
<PC><=R7 |
- |
- |
- |
- |
- |
- |
- |
011111 |
||
|
JMP |
Безусловный переход |
PC<=<R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
100000 |
||
|
JZ |
Переход по нулю |
PC<=<R1>+R2 |
+ |
- |
- |
- |
- |
- |
- |
100001 |
||
|
JNZ |
Переход не по нулю |
PC<=<R1>+R2 |
+ |
- |
- |
- |
- |
- |
- |
100010 |
||
|
JO |
Переход по переполнению |
PC<=<R1>+R2 |
- |
- |
- |
+ |
- |
- |
- |
100011 |
||
|
JNO |
Переход по не переполнению |
PC<=<R1>+R2 |
- |
- |
- |
+ |
- |
- |
- |
100100 |
||
|
JC |
Переход по переносу |
PC<=<R1>+R2 |
- |
+ |
- |
- |
- |
- |
- |
100101 |
||
|
JNC |
Переход не по переносу |
PC<=<R1>+R2 |
- |
+ |
- |
- |
- |
- |
- |
100110 |
||
|
JS |
Переход переход по меньше нуля |
PC<=<R1>+R2 |
- |
- |
+ |
- |
- |
- |
- |
100111 |
||
|
JNS |
Переход переход по не меньше нуля |
PC<=<R1>+R2 |
- |
- |
+ |
- |
- |
- |
- |
101000 |
||
|
Специальные операции |
||||||||||||
|
RFL |
Чтение флагов |
R1<=Flags |
- |
- |
- |
- |
- |
- |
- |
101001 |
||
|
WFL |
Запись флагов |
<R1>=>Flags |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
101010 |
||
|
RTLBR |
Чтение TLBP |
R1<=TLB |
- |
- |
- |
- |
- |
- |
- |
101011 |
||
|
WTLBR |
Запись TLBP |
<R1>=>TLB |
- |
- |
- |
- |
- |
- |
- |
101100 |
||
|
RISR |
Чтение TINT |
R1<=TINT |
- |
- |
- |
- |
- |
- |
- |
101101 |
||
|
WISR |
Запись TINT |
<R1>=>TINT |
- |
- |
- |
- |
- |
- |
- |
101110 |
||
|
RBVA |
Чтение BVA |
<R0><=BVA |
- |
- |
- |
- |
- |
- |
- |
110011 |
||
|
RFE |
Возврат в пользователя |
- |
- |
- |
- |
- |
- |
0 |
101111 |
|||
|
SCALL |
Переход в супервизора |
- |
- |
- |
- |
- |
- |
1 |
110000 |
|||
|
HALT |
Ожидание прерывания |
- |
- |
- |
- |
1 |
- |
- |
110001 |
|||
|
NOP |
Нет операции |
PC<=<PC>+1 |
- |
- |
- |
- |
- |
- |
- |
110010 |
||
|
Арифметические операции с ПТ |
||||||||||||
|
FADD |
Сложение |
<F0><= <F1>+<F2> |
+ |
+ |
+ |
+ |
- |
- |
- |
111000 |
||
|
FSUB |
Вычитание |
<F0><= <F1>-<F2> |
+ |
+ |
+ |
+ |
- |
- |
- |
111001 |
||
|
FMUL |
Умножение |
<F0><= <F1>*<F2> |
+ |
+ |
+ |
+ |
- |
- |
- |
111010 |
||
|
FDIV |
Деление |
<F0><= <F1>/<F2> |
+ |
+ |
+ |
+ |
- |
- |
- |
111011 |
||
|
FMOV |
Обмен RG<>RG |
F0<=<F1> |
- |
- |
- |
- |
- |
- |
- |
111100 |
||
|
FRDW |
Чтение |
<F0><= <R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
111101 |
||
|
FWRW |
Запись |
<F0><= <R1>+R2 |
- |
- |
- |
- |
- |
- |
- |
111110 |
||
|
MFC |
Преобр ПТ-ФТ |
<R0><= <F1> |
+ |
+ |
+ |
+ |
- |
- |
- |
111111 |
||
|
MCF |
Преобр ФТ-ПТ |
<R0>=> <F1> |
+ |
- |
+ |
+ |
- |
- |
- |
111111 |
1. Обращение к памяти по чтению и записи.
С помощью этих команд можно заносить данные и регистров в память и читать их оттуда.
2. Арифметические и логические операции с ФТ
Позволяют производить известные операции с числами с ФТ, которые хранятся в регистрах или с непосредственными операндами
3. Специальные операции.
Позволяют работать с системными регистрами, заносить туда информацию и считывать ее оттуда. Команды с 40 по 46 возможны только в режиме супервизора. В пользовательском режиме они недоступны.
4. Арифметические операции с ПТ
Известные операции аналогичные с ФТ, плюс операции сдвигов влево и вправо.
9. Структура внешних выводов процессора
Процессор имеет совмещенную шину адреса и данных (AD). Сигнал ALE используется для фиксации адреса на внешнем регистре-защелке. Пара сигналов HLD и HLDA используется для реализации механизма захвата шины. Сигнал INT является сигналом запроса прерывания. Сигнал NMI - запрос немаскируемого прерывания.
Линии RD(чтение), WR(запись), IN(ввод), OUT(вывод), задают выполняемую на шине операцию.
Сигналы CC0, CC1, Wait используются для взаимодействия с сопроцессором. Линии CC0, CC1 служат для синхронизации работы с мат сопроцессором.
|
СС0 |
СС1 |
||
|
0 |
0 |
Нет операции |
|
|
0 |
1 |
Очистка очереди |
|
|
1 |
0 |
Запись команды в буфер |
|
|
1 |
1 |
Выборка команды |
На контакт WAIT поступает сигнал об окончании вычислений.
По шине FFLAGS в ЦП передаются флаги от сопроцессора.
Контакт READY служит для приема сигналов готовности от медленных внешних устройств.
Общее число выводов процессора составляет 65, поэтому процессор размещается в стандартном 68 выводном корпусе. Оставшиеся ножки подаются на «Земля» или «Питание»
10. Структура внешних выводов сопроцессора
В сопроцессоре на вывод FPBUSY подается единичный сигнал указывающий на то, что сопроцессор занят. По линии FPINT выдается сигнал прерывания в случае ошибки. Назначение остальных выводов такое же как и у ЦП.
11. Структурная схема сопроцессора
12. Алгоритм функционирования сопроцессора
Выводы
Был разработан однокристальный RISC процессор общего назначения.
Для него были разработаны:
1. Регистровая модель процессора
2. Регистровая модель сопроцессора
3. Система команд
В процессе разработки мы ознакомились с такими понятиями как:
- виртуальная память,
- форматы данных,
- форматы команд,
Сопроцессор (назначение и организация функционирования)
Так же была разработана программа моделирующая работу процессора и показывающая особенности доступа и обработки данных в обоих возможных режимах (пользователь / супервизор).