Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / doc92 / Веселов.doc
Скачиваний:
22
Добавлен:
03.08.2013
Размер:
260.61 Кб
Скачать
  1. Основная память

Обращение к основной памяти производится через системную шину и контроллер ОП. Контроллер ОП включает в себя входные и выходные буферы для данных и адреса, а также логические схемы управления ОП, т.е. формирование установленных временных диаграмм. Также в контроллер входит аппаратная реализация контроля по коду Хемминга: логические схемы и счетчик числа ошибок. Адресное пространство основной памяти отделено от адресного пространства ввода-вывода. В адресном пространстве основной памяти находится оперативная и постоянная память.

Сегментно-страничная организация памяти предполагает разделение адресного пространства программы на сегменты (кода, данных, стека) с независимой адресацией на программном уровне и отображение такого адресного пространства на несегментированное адресное пространство. Страничная организация «накладывается» на сегментную и подразумевает разделение линейного (несегментированного) адресного пространства на страницы – блоки по 4 Кбайт. Сегментация позволяет изолировать программы друг от друга и реализовывать виртуальную память, когда пользователю предоставляется возможность использовать значительно больший объем памяти, чем имеющаяся физическая память. Это реализуется путем свопинга (подкачки) сегментов: выгрузка неактивного сегмента и загрузка активного (используемого в текущий момент). Страничная организация позволяет загружать в ОП сегмент по страницам, а не грузить его целиком. Таким образом при отсутствии необходимой страницы в ОП устройство управления ОП инициирует сигнал страничного сбоя, по которому ОС должна передать страницу из ВЗУ в ОП, т.е. произвести подкачку страницы.

Для реализации сегментно-страничной организации памяти необходимы структуры данных, содержащие информацию о сегментах и страницах. Такой структурой данных для сегментов являются дескрипторы сегментов, содержащие базовый адрес сегмента, размер сегмента, тип, уровень привилегий (доступ), бит присутствия сегмента в физической памяти и дополнительная информация о сегменте.

63 52

51 32

31 0

Доп. информация

Права доступа

Предел

Базовый адрес

Рис. 4 Формат дескриптора сегмента

Дескриптор страницы содержит адрес страницы (20 старших бит), бит присутствия, управления доступом на уровне страниц, а также дополнительную информацию о странице.

31 20

19 0

Доп. информация

Права доступа

Адрес страницы

Рис. 5 Формат дескриптора страницы

Для каждой задачи необходимо хранить дескрипторы сегментов и страниц. Они хранятся в соответствующих таблицах. Дескрипторы сегментов и страниц необходимо хранить в ОП, т.к. загрузка всех дескрипторов для текущей задачи во внутренние регистры процессора невозможна из-за значительного объема информации. Для уменьшения обращений к ОП, для текущей задачи в регистрах процессора («теневых») хранятся дескрипторы используемых сегментов, которые используются для сегментации, т.е. для получения линейных адресов.

Получение линейного адреса заключается в сложении базового адреса сегмента, который берется из его дескриптора, с 32-разрядным смещением в сегменте. При этом проверяются права доступа и граница сегмента.

Получение физического адреса происходит в процессе страничного преобразования: старшие 20 бит 32-битного линейного адреса (номер виртуальной таблицы) заменяются другим 20-битным значением – номером физической страницы. Для этого привлекается находящаяся в памяти таблица страниц. Младшие 12 бит линейного адреса, определяющие смещение в странице, остаются неизменными. Процесс получения физического адреса целесообразно разбить на два этапа, т.к. при одноэтапном преобразовании и 32-разрадном дескрипторе страницы для каждой задачи потребуется 4 Мбайт (32 х 220 дескрипторов) памяти под страничную таблицу. Вместо этого для каждой задачи создается корневая таблица, адресующая (через дескрипторы страниц) 1024 подчиненных таблиц, содержащих по 1024 дескриптора страниц. Если создавать все подчиненные таблицы, то получим для каждой задачи те же 4 Мбайт плюс еще 4 Кбайт для корневой таблицы, но, т.к. некоторые линейные адреса никогда не будут сформированы после сегментации (эту информацию дают дескрипторные таблицы сегментов) для них не надо создавать подчиненных страничных таблиц. Поэтому объем памяти, занимаемый подчиненными таблицами гораздо меньше 4 Мбайт. Однако корневая таблица всегда должна строится полностью, а некоторые ее дескрипторы указывают на то, что подчиненной таблицы нет.

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

В процессе страничного преобразования выполняется два обращения к ОП. Для уменьшения числа обращений к ОП, применяется кэш-буфер TLB, который содержит 32 физических адреса страниц, которые недавно использовались. При наличии в TLB нужного адреса страницы обращений к ОП не требуется.

TLB представляет собой 32-элементную четырехблочную ассоциативную по множеству память. Структура TLB схожа со структурой кэша команд и данных, разрабатываемой в второй части проекта. Однако здесь кэш хранит старшие 20 бит физического адреса страницы, а тэг и разряды, выбирающие множество, содержаться в 20 старших битах линейного адреса: [12-14] – выбор множества, [15-31] – тэг.

После сегментации, которая происходит без обращений к ОП в случае, если не меняются сегменты, линейный адрес поступает в TLB. Если обращение к странице уже было (недавно), то он сразу же преобразуется в физический адрес. Если нужного линейного адреса нет в TLB (не было обращений), то устройство страничного преобразования формирует запрос на загрузку в TLB правильного физического адреса из таблицы страниц. При смене сегментов или модификации страничных таблиц необходимо очищать TLB (сброс битов достоверности).

Допускается отключать страничное преобразование, это необходимо, например, для построения страничных таблиц.

Соседние файлы в папке doc92