- •Содержание
- •Задание
- •Разработка архитектуры внешних выводов
- •Выбор форматов данных
- •Определение модели памяти и структуры регистровой памяти
- •Выбор форматов команд
- •Разработка системы команд
- •Внутренняя организация
- •Структурно-функциональная схема процессора
- •Основные алгоритмы функционирования
- •Алгоритмы выполнения отдельных операций
- •Разработка алгоритмов выполнения основных операций на шине
- •Список использованной литературы
Выбор форматов данных
Форматы данных в соответствии с заданием:
8-разрядные числа со знаком (байт).
7 |
6 |
5 |
… |
1 |
0 |
знак |
|
|
|
|
|
Принимаемые значения: -128…+127
8-разрядное число без знака (байт).
7 |
6 |
5 |
… |
1 |
0 |
|
|
|
|
|
|
Принимаемые значения: 0…255
16-разрядное число со знаком (полуслово).
15 |
14 |
13 |
… |
1 |
0 |
знак |
|
|
|
|
|
Принимаемые значения: -32768…+32767
16-разрядное число без знака (полуслово).
15 |
14 |
13 |
… |
1 |
0 |
|
|
|
|
|
|
Принимаемые значения: 0…65535
64-разрядное число со знаком (двойное слово).
63 |
62 |
61 |
… |
1 |
0 |
знак |
|
|
|
|
|
Принимаемые значения: -9223372036854775808…+9223372036854775807
64-разрядное число без знака (двойное слово).
63 |
62 |
61 |
… |
1 |
0 |
|
|
|
|
|
|
Принимаемые значения: 0…18446744073709551615
64-разрядное число в формате с плавающей точкой (Число с плавающей точкой двойной точности).
63 |
62 |
61 |
… |
53 |
52 |
51 |
50 |
… |
1 |
0 | |
знак |
экспонента |
мантисса |
Целые числа представляют собой числа со знаком и без знака. Целые числа со знаком представляются в дополнительных кодах. Целые числа без знака также используются для представления адресов.
Для представления чисел с плавающей точкой учитываются требования стандарта ANSI/IEEEStandart754:
|
Знак |
Экспонента |
Мантисса |
+0 |
0 |
0…0 |
0…0 |
-0 |
1 |
0…0 |
0…0 |
+∞ |
0 |
1…1 |
0…0 |
-∞ |
1 |
1…1 |
0…0 |
NaN |
X |
1…1 |
1X…X (кроме 0…0) |
X– обозначает, что бит может принимать любое значение (0 или 1).
NaN(notanumber,англ.) – «не число», специальное значение, определенное для чисел с плавающей точкой. Это значение показывает, что результат операции не может быть представлен в числовой форме, в соответствии с правилами записи чисел с плавающей точкой. Это значение может быть получено, если:
Выполняется арифметическая операция, где хотя бы один аргумент равен бесконечности;
Выполняется деление на нуль;
Выполняется операция сравнения с бесконечностью.
Определение модели памяти и структуры регистровой памяти
Определение модели памяти
Для традиционной архитектуры модель памяти должна удовлетворять требованиям, предъявляемым многопользовательской многозадачной ОС типа UNIX. В связи с этим, на рис.4 представлена модель памяти.
Рис.4
По заданию мы располагаем 1024 мегабайтами основной памяти. Придерживаясь наиболее распространенных ситуаций, предлагается разделять имеющуюся память на следующие блоки:
Память размером 512 Мбайт доступна в пользовательском режиме. Страницы этой памяти являются кэшируемыми и перемещаемыми.
Полностью память (1024 Мбайт) доступна в режиме ядра. В этом же режиме она подразделяется на следующие блоки:
512 Мбайт – пользовательская память.
512 Мбайт – системная память:
0й сегмент – используется кэш, но не используется переадресация через буфер TLB, т.е. обращение идет к первым 128 Мбайт физической памяти;
1й сегмент – не используется ни кэш, ни TLB– обращение идет к первым 128 Мбайт физической памяти;
2й сегмент – используется и кэширование и переадресация.
Подобная модель памяти позволяет работать с ячейками памяти как с портами (сегмент 1), либо обращаться к памяти по абсолютным адресам при работе со структурами данных ядра. Сегмент 2 можно использовать для работы с загружаемыми модулями.
Виртуальная память
Виртуальная память имеет страничную организацию, принятую во многих современных операционных системах. В общем виде, схема страничной организации описывается следующим образом: линейный адрес разбивается на несколько частей. Старшая часть адреса содержит в себе номер элемента в корневой таблице. Этот элемент содержит адрес таблицы следующего уровня. Следующая часть линейного адреса содержит номер элемента уже в этой таблице и так далее, до последней таблицы, которая содержит номер физической страницы. А самая младшая часть адреса уже является номером байта в этой физической странице.
16-разрядный линейный адрес разбивается на три части. Старшие 5 разрядов адреса определяют номер одного из 512 элементов в каталоге страниц. Этот элемент содержит физический адрес таблицы страниц. Следующие 5 разрядов линейного адреса определяют номер элемента таблицы. Элемент, в свою очередь, содержит физический адрес страницы виртуальной памяти. Младшие 6 разрядов линейного адреса определяют точный физический номер адресуемой ячейки памяти внутри этой страницы.
Для ускорения страничного преобразования в процессоре имеется специальная кэш-память, называемая TLB (Translation Lookaside Buffer). В ней хранятся наиболее часто используемые элементы каталога и таблиц страниц. Конечно, переключение процессов и даже потоков приводит к тому, что данные внутри этого буфера становятся неактуальными, т. е. недействительными. Это влечет за собой дополнительные потери производительности при переключении.
Свопинг
Не используемые в конкретный момент страницы памяти могут быть вытеснены на диск в так называемый файл подкачки. В соответствующем элементе таблицы страниц эта страница помечается как отсутствующая, и при попытке обращения к ней возникает исключительная ситуация - "сбой" страницы. Обрабатывая ее, операционная система находит страницу на диске и переписывает ее в память, соответствующим образом подстраивая элемент таблицы страниц. После этого попытка выполнить команду, вызвавшую исключение, повторяется.
Важнейшее понятие при организации свопинга – рабочее множество процесса (working set). В соответствии с принципом локальности процесс не использует всю память одновременно. Состав и количество страниц, с которыми процесс работает, меняется на протяжении его жизни. Страницы, с которыми процесс работает в течение фиксированного интервала времени, есть его рабочее множество на этом интервале. Переход от одного рабочего множества к другому осуществляется не равномерно, а скачками. Это вызвано семантикой процесса: переходами от обработки одного массива к обработке другого, от подпрограммы к подпрограмме, от цикла к циклу и т. д. Не нужно, чтобы в оперативной памяти размещались все страницы процесса, однако необходимо, чтобы в ней помещалось его рабочее множество. В противном случае возникает режим интенсивной подкачки, называемый трешингом (trashing.) В таком режиме затраты системы на переписывание страниц с диска в память и обратно значительно превышают время, выделяемое на полезную деятельность. Фактически система перестает заниматься чем-либо, кроме перемещения головок жесткого диска.
На рис.5 изображен механизм свопинга.
Рис.5
Структура регистровой памяти
По заданию используются функционально-ориентированные регистры. Схема организации регистровой памяти ЦП и сопроцессора представлена на рис.6.
Рис.6
Функционально-ориентированные регистры ЦП представляют собой:
RD0…RD3 – регистры для чтения/записи данных как со знаком, так и без знака. Доступ к этим регистрам может быть осуществлен как целиком – ко всем 64 битам, так и отдельно к каждым 32 битам, к каждым 16 и 8 битам. Эти регистры также подходят для хранения чисел с плавающей точкой;
RA0,RA1 – регистры для хранения адресов. Доступ осуществляется как целиком ко всем 64 битам, так и отдельно к каждым 32 и 16 битам. Эти регистры также можно использовать для хранения целых чисел и чисел с фиксированной запятой, но без знака.Регистр RA1 может быть использованв качестве регистра базы при относительной адресации;
RSPTR – регистр указателя стека;
RI – регистр индексов.
Системные регистры ЦП:
PC – регистр счетчика команд;
TINT– регистр указателя на таблицу векторов прерывания;
SP– регистр указателя на вершину стека.
Регистр флагов ЦП:
Z – признак нулевого результата;
C– признак переноса из старшего разряда;
S – знак результата;
O – признак переполнения результата;
I – разрешение прерывания;
T – пошаговый режим;
U – режим супервизор-пользователь.
Функционально-ориентированные регистры сопроцессора:
RD0…RD5 – регистры чтения/записи данных – чисел с плавающей точкой.
RA0,RA1 – регистры для хранения адресов.
Регистр флагов сопроцессора:
PE – потеря значимости;
NE – денормализация;
ZE – деление на 0;
IE – действительный операнд.