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

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

Страничная организация памяти реализуется процессором только в защищенном режиме, если в регистре управления 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] линейного адреса) указывает относительный адрес таблицы страниц (PageTable), выбираемой в каталоге станиц (PageDirectory). ПолеTable(разрядыA[21:12] линейного адреса) задает относительный адрес требуемой страницы раздела. ПолеOffset(разрядыA[11:0] линейного адреса) содержит относительный адрес выбираемого на странице байта.

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

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

31

22

21

12

11

0

Directory

Table

Offset

10

10

12

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

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

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

Физический

Элемент

Элемент

адрес

каталога (PDE)

таблицы (PTE)

Начало

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

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

страницы

20

CR3 (PDPTE)

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

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

31

22

21

0

Directory

Offset

10

22

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

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

Элемент

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

каталога (PDE)

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

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

20

CR3 (PDPTE)

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

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

Содержимое регистра управления CR3 (PageDirectoryPointerTableEntry) задает базовый адрес каталога страниц (рис.$.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(PageWriteThrough) определяет метод обновления содержимого кэш-памяти. При PWT=1 для текущей страницы обновление реализуется методом сквозной записи, приPWT=0 – методом обратной записи (см. разд. 1.5).

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

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

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

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

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

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

Бит глобальности 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) зарезервированы для операционной системы (ОС), которая может использовать их для своих потребностей. Например, в этих битах может размещаться информация о времени последнего обращения к данному разделу или странице. Эта информация используется ОС для определения разделов и страниц, подлежащих замене из внешней памяти.