Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Грешнов А. М. Лаб.раб. 4.docx
Скачиваний:
8
Добавлен:
01.05.2025
Размер:
61 Кб
Скачать
☆

Сегментная организация памяти

В защищенном режиме для формирования линейного адреса используется две компоненты:

  1. 16-тиразрядный селектор для определения базового адреса сегмента, который содержится в дескрипторе.

  2. 16 или 32-хразрядный эффективный адрес, который зависит от режима работы и способа адресации.

Для получения линейного адреса базовый адрес сегмента, содержащийся в дескрипторе, суммируется с эффективным адресом.

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

Страничная организация памяти

Страничный диспетчер памяти, имеющийся в микропроцессоре, обеспечивает следующую возможность:

  1. представляет пользователю возможность работать с большим адресным пространством;

  2. обеспечивает защиту ОС и программное обеспечение пользователя;

  3. реализует быструю трансляцию адресов.

Линейное адресное пространство памяти объемом 4 Гб при страничной организации разбито на 220 страниц объемом по 4 кб каждая страница. Фиксированный размер всех страниц позволяет загружать любую требуемую виртуальную страницу в нужную физическую страницу.

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

При страничной организации сегмент разбивается на отдельные разделы, число которых может достигнуть до 210.

В свою очередь каждый раздел может содержать до 210 страниц объемом по 4 кб каждая. Начальные (базовые) адреса страниц каждого раздела хранятся в соответствующей таблице страниц, содержащейся в памяти. Обращение к этой таблице производится с помощью каталога, в котором содержатся начальные адреса таблиц страниц для всех разделов. Таким образом, страницы могут быть рассеяны по разным частям памяти, а их размещение в памяти определяется содержимым каталогов разделов и таблиц страниц.

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

TABLE – указывает относительный адрес таблицы страниц выбираемого раздела в каталоге.

PAGE – задает относительный адрес требуемой страницы данного раздела.

BYTE – содержит относительный  адрес выбираемого на странице байта.

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

Указатели входа в раздел и в страницу имеют одинаковый формат.

Каждый указатель содержит информацию, определяющую порядок использования страниц. Старшие 20 разрядов занимает базовый адрес. Остальные разряды имеют следующий смысл.

Р – бит присутствия. Если Р=1, то разрешается использование таблицы страниц, если Р=0, то такое использование запрещается. При Р=0 попытка обращения к соответствующему разделу или странице вызывает прерывание из-за отсутствия нужной страницы в оперативной памяти. После загрузки нужной страницы в память, бит Р устанавливается в «1» и в этом случае обращение к данной странице становится возможной. Это нужно для того, чтобы ОС знала, где находится страница.

R/W  - бит чтения/записи.

U/S  -  бит пользователь/супервизор.

Эти два бита определяют право доступа к соответствующей странице или разделу для программ пользователя. Программа пользователя обычно имеет самый низкий уровень привилегий равный 3. Если осуществляется запрос с уровнем привилегий равным 3, то при значении U/S = 0  программе пользователя запрещается доступ к разделу или странице.

При U/S = 1 обращение разрешается, но при этом учитывается значение  бита R/W.

Если R/W  = 0, то программе пользователя разрешается только чтение раздела или страницы.

Если R/W = 1,  то разрешается как чтение, так и запись. Если осуществляются запросы с большим уровнем привилегий (0, 1 и 2), то допускается запись и чтение разделов и страниц при любых значениях ‘1’ и ‘2’ разрядов.

Такие уровни привилегий имеет ОС.

А  - бит доступа. Этот бит автоматически устанавливается в «1» микропроцессором при обращении к данному разделу или странице для записи или чтения.

D – бит «мусора». В указателе кадра страницы этот бит устанавливают в «1» при записи на данную страницу. Для указателей таблиц страниц значение бита D является неопределенной.

Биты D и A используются ОС, поддерживающей виртуальную память, для определения в ОЗУ тех разделов и страниц, которые подлежат удалению из ОЗУ, поскольку к ним долгое время не было обращения. Проверку и сброс этих разрядов выполняет ОС.

Содержимое CR3 (регистр управления) задает старшие 20 разрядов базового адреса для входа в каталог раздела. Для получения физического адреса строки каталога разделов к этим 20 разрядам добавляется 10-тиразрядное поле TABLE линейного адреса и 2 нулевых младших разрядов. По полученному таким образом адресу обращаются к каталогу разделов, откуда выбирают указатели входа в таблицу страниц. Этот указатель содержит 20-разрядный базовый адрес таблицы страниц. К этим 20 разрядам добавляется поле PAGE и 2 нулевых младших разряда. В результате получается адрес строки таблицы страниц. В этой строке находится указатель входа в страницу, содержащий 20-разрядный базовый адрес страницы. Добавление к этому базовому адресу 12-тиразрядного поля BYTE дает физический адрес байта.

Существенное сокращение времени преобразования адресов в микропроцессоре достигается путем внутренней ассоциативной памяти, которая называется «буфером ассоциативной трансляции» и обозначается TLB.

TLB представляет собой память с ассоциативной выборкой, которая содержит 20-тиразрядные базовые адреса 32-х страниц, то есть, старшие 20 разрядов физического адреса страницы. Каждый из базовых адресов имеет свой признак (тег). В качестве тега используются старшие 20 разрядов линейного адреса, то есть поля  TABLE и  PAGE. Формирование физического адреса с использованием TLB производится следующим образом.

При поступлении в блок управления страницами линейного адреса его старшие 20 разрядов сравниваются с тегами физических адресов, хранящихся в TLB. Если обнаруживается совпадение этих разрядов с каким-либо из тегов, то из TLB выбирается соответствующий этому тегу базовый адрес. Страничный диспетчер формирует 32-хразрядный физический адрес, в котором выбранный из  TLB базовый адрес задает 20 старших разрядов, а поле  BYTE линейного адреса – 12 младших разрядов.

Случай, когда базовый адрес страницы находится в TLB, называется КЭШ-попаданием. При этом не требуется обращаться к ОЗУ для выборки указателя входа в таблицу страниц и в саму страницу.

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

Помимо тега для каждого базового адреса страницы в TLB хранится дополнительная информация, позволяющая определить, какую страницу можно заменить на вновь вводимую. Поскольку TLB хранит адреса только 32 страниц объема 4 кб каждая, то микропроцессор может непосредственно формировать физические адреса для 128 кб памяти (4 х 32). При этом по статистике вероятность КЭШ попадания равна 0,98 и, следовательно, только 2% обращений вызывают КЭШ промах и требуют двухступенчатого преобразования адресов.

Источник:http://www.kailib.ru/arhitevm?start=27