Скачиваний:
63
Добавлен:
03.06.2014
Размер:
332.22 Кб
Скачать

Выбор форматов данных

Форматы данных в соответствии с заданием:

  1. 8-разрядные числа со знаком (байт).

7

6

5

1

0

знак

Принимаемые значения: -128…+127

  1. 8-разрядное число без знака (байт).

7

6

5

1

0

Принимаемые значения: 0…255

  1. 16-разрядное число со знаком (полуслово).

15

14

13

1

0

знак

Принимаемые значения: -32768…+32767

  1. 16-разрядное число без знака (полуслово).

15

14

13

1

0

Принимаемые значения: 0…65535

  1. 64-разрядное число со знаком (двойное слово).

63

62

61

1

0

знак

Принимаемые значения: -9223372036854775808…+9223372036854775807

  1. 64-разрядное число без знака (двойное слово).

63

62

61

1

0

Принимаемые значения: 0…18446744073709551615

  1. 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,англ.) – «не число», специальное значение, определенное для чисел с плавающей точкой. Это значение показывает, что результат операции не может быть представлен в числовой форме, в соответствии с правилами записи чисел с плавающей точкой. Это значение может быть получено, если:

  1. Выполняется арифметическая операция, где хотя бы один аргумент равен бесконечности;

  2. Выполняется деление на нуль;

  3. Выполняется операция сравнения с бесконечностью.

Определение модели памяти и структуры регистровой памяти

Определение модели памяти

Для традиционной архитектуры модель памяти должна удовлетворять требованиям, предъявляемым многопользовательской многозадачной ОС типа UNIX. В связи с этим, на рис.4 представлена модель памяти.

Рис.4

По заданию мы располагаем 1024 мегабайтами основной памяти. Придерживаясь наиболее распространенных ситуаций, предлагается разделять имеющуюся память на следующие блоки:

  1. Память размером 512 Мбайт доступна в пользовательском режиме. Страницы этой памяти являются кэшируемыми и перемещаемыми.

  2. Полностью память (1024 Мбайт) доступна в режиме ядра. В этом же режиме она подразделяется на следующие блоки:

    1. 512 Мбайт – пользовательская память.

    2. 512 Мбайт – системная память:

      1. 0й сегмент – используется кэш, но не используется переадресация через буфер TLB, т.е. обращение идет к первым 128 Мбайт физической памяти;

      2. 1й сегмент – не используется ни кэш, ни TLB– обращение идет к первым 128 Мбайт физической памяти;

      3. 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 – действительный операнд.