Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MProc / M6 / Страничная организация памяти.doc
Скачиваний:
44
Добавлен:
16.04.2013
Размер:
197 Кб
Скачать
☆

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

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

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

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

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

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

  • Бит PSE в регистре CR4 – разрешает (при значении PSE=1) использование страниц расширенного размера (4MB или 2MB). При PSE=0 используются только страницы стандартного размера (4KB).

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

  • Бит PS в указателе раздела или страницы (см. рис. $.3, $.5) – указывает размер используемых страниц аналогично биту PSE.

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

Таблица $.1.

Размер страниц и разрядность физического адреса при страничной адресации памяти.

CR0.PG

CR4.РАЕ

CR4.PSE

PDE.PS

Размер страницы

Физический адрес

0

X

X

X

---

32 разряда

1

0

0

X

4КB

32 разряда

1

0

1

0

4КB

32 разряда

1

0

1

1

4МB

32 разряда*

1

1

X

0

4КB

36 разрядов

1

1

X

1

2МB

36 разрядов

* При включенном механизме PSE-36, эта комбинация битов управления обеспечивает 36 разрядную адресацию (см. раздел ??).

Линейный адрес при страничной организации рассматривается как совокупность трех полей (рис.$.1a). Поле Directory (разряды A[31:22] линейного адреса) указывает относительный адрес таблицы страниц (Page Table), выбираемой в каталоге станиц (Page Directory). Поле Table (разряды A[21:12] линейного адреса) задает относительный адрес требуемой страницы раздела. Поле Offset (разряды A[11:0] линейного адреса) содержит относительный адрес выбираемого на странице байта.

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

Линейный адрес

31

22

21

12

11

0

Directory

Table

Offset

10

10

12

Каталог страниц (Page Directory)

Таблица страниц (Page Table)

4К-байтная страница

Физический

Элемент

Элемент

адрес

каталога (PDE)

таблицы (PTE)

Начало

Начало каталога

Начало таблицы

страницы

20

CR3 (PDPTE)

Рис. $.1а. Формирование 32-разрядного физического адреса при страничной организации памяти для 4KB страниц.

Линейный адрес

31

22

21

0

Directory

Offset

10

22

Каталог страниц (Page Directory)

4M-байтная страница

Элемент

Физический адрес

каталога (PDE)

Начало каталога

Начало страницы

20

CR3 (PDPTE)

Рис. $.1б. Формирование 32-разрядного физического адреса при страничной организации памяти для 4MB страниц.

Каждая из таблиц также занимает одну страницу. В каждой таблице содержится 1024 элемента таблицы страниц (Page Table Entry). Каждый 32-разрядный элемент указывает начало соответствующей страницы.

Содержимое регистра управления CR3 (Page Directory Pointer Table Entry) задает базовый адрес каталога страниц (рис.$.2а).

31

12

11

0

a)

Базовый адрес каталога страниц

Резервировано

31

5

4

0

б)

Адрес таблицы указателей каталогов страниц

Резерв.

Рис. $.2. Структура содержимого регистра CR3: (а) при 32-битной адресации, и (б) при 36-битной адресации.

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

31

12

11

9

8

7

6

5

4

3

2

1

0

а)

Базовый адрес таблицы страниц

Avail

G

P S

0

A

P C D

P W T

U / S

R / W

P

31

12

11

9

8

7

6

5

4

3

2

1

0

б)

Базовый адрес страницы

Avail

G

P A T

D

A

P C D

P W T

U / S

R / W

P

31

22

21

13

12

11

9

8

7

6

5

4

3

2

1

0

в)

Базовый адрес страницы

Резервировано

P A T

Avail

G

1

0

A

P C D

P W T

U / S

R / W

P

Рис. $.3. Формат элементов каталога страниц PDE (а) и таблицы страниц PTE (б) для 4KB страниц, а также элементов каталога страниц PDE для 4MB страниц (в) при 32-разрядном адресе

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

Бит присутствия P (Present) разрешает при установленном значении P=1 использование соответствующего раздела или страницы. Если же P=0 (раздел или страница отсутствует), то попытка обращения к ним вызовет исключение типа #PF (“отсутствие доступа к странице”), обработчик которого и должен загрузить таблицу из внешней памяти. Отметим, что при P=0, все остальные биты указателя могут служить для представления какой-либо информации, используемой операционной системой (не зависимо от формата на рис.$.3). Например, для схемы доступа к образу страницы во внешней памяти.

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

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

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

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

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

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

Бит размера страниц PS (Page Size) при установленном значении бита PSE=1 указывает размер используемых страниц: 4KB при PS=0, 4MB при PS=1 (если PSE=0, то используются страницы по 4KB при любом значении PS).

Бит PAT (обозначаемый также PATi) совместно с битами PCD и PWT задает индекс в таблице атрибутов страниц (Page Attribute Table), который, в свою очередь, задает тип кэширования страницы (см. раздел ??).

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

Линейный адрес

31

30

29

21

20

12

11

0

Directory pointer

Directory

Table

Offset

2

9

9

12

Таблица

Каталог

Таблица

4К-байтная

каталогов

страниц

страниц

страница

Физический

Элемент

Элемент

Элемент

адрес

табл. кат.

каталога

таблицы

Начало таблицы

Начало каталога

Начало таблицы

Начало страницы

27

CR3 (PDPTE)

Рис. $.4а. Формирование 36-разрядного физического адреса при страничной организации памяти для 4KB страниц.

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