Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мпс с 1 по 294.doc
Скачиваний:
13
Добавлен:
16.04.2019
Размер:
6.2 Mб
Скачать

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

Страничная организация памяти реализуется процессором только в защищенном режиме, если в регистре управления CR3 установлено значение бита PG = 1. Размер страниц может составлять 4 Кбайт или 4 Мбайт при использовании 32-разрядных адре­сов и 4 Кбайт или 2 Мбайт при использовании расширенных 36-разрядных адресов. В отличие от сегментов, которые могут иметь различные размеры (от 1 байта до 4 Гбайт), размеры страниц строго фиксированы.

Если размер страниц составляет 4 Кбайт, то сегмент разбивается на отдельные разделы, число которых может достигать 210 = 1024. Каждый раздел может содержать до 210 = 1024 страниц по 4 Кбайт. Если размер страниц составляет 4 Мбайт или 2 Мбайт, то сегмент разби­вается только на отдельные страницы, число которых может составлять 1024 или 2048.

Начальные (базовые) адреса страниц и разделов содержатся в специальных таблицах (каталогах), которые хранятся в основной памяти. Кроме базовых адресов в этих таблицах содержатся также атрибуты соответствующих разделов и страниц, определяющие прави­ла доступа к ним и указывающие текущее состояние их содержимого. Совокупность этих параметров, характеризующих страницы и разделы (каталоги), представляется в виде 32-или 64-разрядных указателей страниц, разделов и каталогов (см. рис. 2.45,2.47).

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

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

PSE в регистре CR4 (см. рис. 2.7) - разрешает при значении PSE = 1 использование страниц расширенного размера (4 или 2 Мбайт), при PSE = 0 используются только страни­цы стандартного размера (4 Кбайт);

РАЕ в регистре CR4 (см. рис. 2.7) - задает разрядность формируемого физического адреса: стандартная (32 разряда) при РАЕ = 0 или расширенная (36 разрядов) при РАЕ = 1;

PS в указателе раздела или страницы (см. рис. 2.45,2.47) - указывает размер исполь­зуемых страниц аналогично биту PSE.

Совместное действие этих битов при установленном значении бита PG = 1 определяет разрядность формируемого физического адреса и размер используемых страниц (табл. 2.59).

Линейный адрес при страничной организации рассматривается как совокупность трех полей (рис. 2.44). Поле Directory (разряды А31-22 линейного адреса) указывает относи­тельный адрес таблицы страниц, выбираемой в каталоге раздела. Поле Table (разряды А21-12 линейного адреса) задает относительный адрес требуемой страницы раздела. Поле Offset (разряды А11-0 линейного адреса) содержит относительный адрес выбираемого на странице байта.

Формирование 32-разрядного физического адреса выбираемого байта при использова­нии страничной адресации с размером страниц 4 Кбайт осуществляется путем последова­тельного обращения к каталогу разделов и таблице страниц (рис. 2.44, а). Каталог разде­лов занимает одну страницу памяти, где для каждого из 1024 возможных разделов содержатся 32-разрядные указатели входа в таблицу страниц этого раздела. Каждая из таблиц страниц также занимает одну страницу, где для каждой из 1024 страниц раздела даются 32-разрядные указатели входа в нее.

Выбор раздела определяется содержимым поля Directory линейного адреса, которое указывает относительный адрес А11 -2 указателя таблицы страниц, хранящегося в катало­ге разделов. Содержимое регистра управления CR3 задает базовый адрес (значение 20 старших разрядов А31-12) каталога разделов, ячейки памяти, содержащей указатель вхо­да в таблицу страниц раздела. Этот указатель задает базовый адрес (разряды А31-12) таблицы страниц выбранного раздела. Поле Table линейного адреса содержит разряды А11-А2 адреса ячейки (относительный адрес в таблице страниц), в которой хранится ука­затель страницы. Указатель задает базовый адрес (разряды А31-12) страницы, на кото­рой размещается выбираемый байт, относительный адрес которого (разряды А11-0) со­держится в поле Offset линейного адреса. Таким образом, при страничной организации па­мяти 32-разрядный (физический) адрес формируется как сумма базового адреса, задава­емого указателем страницы, и относительного адреса, содержащегося в поле Offset.

Если в регистре управления CR4 установлено значение бита PSE = 1, то обеспечивается работа со страницами расширенного размера 4 Мбайт. При этом линейный адрес содержит два поля: Directory и Offset, и для формирования 32-разрядного физического адреса исполь­зуется только одна таблица - каталог страниц (рис. 2.44, б). Процедура формирования адре­са в этом случае аналогична рассмотренной выше для страниц размером 4 Кбайт.

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

Бит присутствия Р разрешает при установленном значении Р = 1 использование со­ответствующего раздела или страницы. Если же Р = 0 (раздел или страница отсутствует), то попытка обращения к ним вызовет исключение типа #PF («отсутствие доступа к странице»). Отметим, что при Р = 0 остальные биты указателя могут служить для представления какой-либо информации, используемой операционной системой.

Бит чтения-записи R/W, бит пользователя- супервизора U/S определяют права до­ступа к соответствующим разделу или странице для программ пользователя, имеющих ми­нимальные привилегии (уровень PL = 3). Если осуществляется запрос с уровнем привилегий RPL = 3 (программы пользователя), то при значении U/S = 0 ему запрещается доступ к соответствующему разделу или странице. Если U/S = 1, то при значении R/W = О разрешается только чтение раздела или страницы, а при R/W = 1 и чтение, и запись. При запросах с большими привилегиями (системные программные уровни 0,1,2) допускается запись и чтение разделов и страниц при любых значениях U/S, R/W.

Биты PWT и PCD указателя используются для управления работой кэш-памяти при страничной адресации.

Бит обратной записи страниц PWT определяет метод обновления содержимого кэш­-памяти. При PWT = 1 для текущей страницы обновление реализуется методом сквозной записи, при PWT = 0 - методом обратной записи.

Бит запрещения кэширования страницы PCD запрещает при PCD = 1 загрузку содер­жимого данной страницы во внутреннюю кэш-память. При PCD = 0 такая загрузка разрешена.

Бит PWT и PCD определяют значения сигналов на внешних выходах PWT, PCD процес­сора. Бит PCD вместе с входным сигналом KEN управляет работой внутренней кэш-памяти.

Бит доступа А автоматически устанавливается процессором в состояние А = 1 при обращении к данному разделу или странице для записи или чтения информации.

Бит модификации D в указателе страницы устанавливается в состояние 0=1 при записи на данную страницу. В указателях таблиц данный бит не используется (устанавли­вается в «О»).

Биты А и D используются операционной системой, поддерживающей виртуальную па­мять, для определения в оперативной памяти разделов и страниц, содержание которых подлежит замене из внешней памяти. Проверку и сброс этих битов выполняет опера­ционная система.

Бит размера страниц PS при установленном значении бита PSE = 1 указывает, раз­ мер используемых страниц: 4 Кбайт при PS = 0, 4 Мбайт при PS = 1

Бит глобальности G программно устанавливается в состояние «1», чтобы отметить разделы или страницы, часто используемые при решении данной задачи. Базовые адреса этих разделов или страниц, загруженные во внутреннюю буферную память TLB, сохраня­ются при ее очистке. Подробнее работа TLB рассмотрена ниже.

Биты 9-11 указателей (AVL на рис. 2.45) зарезервированы для операционной системы (ОС), которая может использовать их для своих потребностей. Например, в этих битах может размещаться информация о времени последнего обращения к данному разделу или странице. Эта информация используется ОС для определения разделов и страниц, подле­жащих замене из внешней памяти.

Если процессор работает в режиме формирования расширенных 36-разрядных адре­сов (в регистре CR4 установлено значение бита РАЕ = 1), то процедура формирования физического адреса несколько усложняется (см. рис. 2.46). В этом случае вводится допол­нительная таблица каталогов, с помощью которой адресуется каталог разделов (при ис­пользовании стандартных страниц 4 Кбайт, рис. 2.46, а) или каталог страниц (при исполь­зовании расширенных страниц 2 Мбайт, рис. 2.46, б). Для обращения к таблице каталогов в линейном адресе выделяется 2-разрядное поле Directory Pointer. В основном процедура трансляции производится также, как описано выше для формирования 32-разрядных ад­ресов. Отличия состоят в том, что выполняется дополнительный этап трансляции с обра­щением к таблице каталогов.

Форматы указателей каталогов, разделов и страниц, используемых при расширенной адресации, показаны на рис. 2.47. Указатели содержат 64 бита (часть из них резервирова­на), назначение которых аналогично соответствующим битам указателей при стандартной 32-разрядной адресации (см. рис. 2.45). Указатели имеют поля, в которых хранятся стар­шие разряды 36-разрядных базовых адресов каталогов, разделов и страниц. С помощью страничной трансляции (рис. 2.46) формируется 36-разрядный физический адрес команды или операнда.

Отметим, что расширенная разрядность адреса реализуется только при использова­нии страничной адресации, когда установлены значения битов PG = РАЕ = 1.

Как указано выше, страничная организация памяти требует дополнительных затрат вре-ме ни для преобразования (трансляции) линейного адреса в физический. Эти затраты бу­дут весьма значительными, если в каждом цикле производить обращение к оперативной памяти для выбора указателей таблиц и страниц. Существенное сокращение времени преобразования адресов достигается путем использования специализированной внутренней кэш-памяти, которая называется буфером ассоциативной трансляции TLB (translation look-aside buffer).

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

Можно предохранить от аннулирования в TLB базовые адреса страниц, задав для них в указателе страницы (см. рис. 2.45, б, в, 2.47, в, г) значение бита глобальности G = 1. Если в регистре CR4 (см. рис. 2.7) установлен, бит разрешения глобальности PGE - 1, то базо­вые адреса этих страниц в TLB не будут аннулироваться при переключении задач или перезагрузке содержимого CR3. Таким образом, можно избежать потерь времени на транс­ляцию базового адреса для страниц, используемых в процессе выполнения различных задач (например, для страниц, содержащих ядро операционной системы).