Адресация и многозадачность: Элементы каталогов и таблиц страничных преобразований

Печать
Программирование - Архитектура и система команд микропроцессоров x86

 

Три типа каталогов и таблиц страничных преобразований поддерживается процессором в различных режимах работы страничного механизма. В режиме 32-битного физического адреса и в режиме PSE-36: каталог страниц и таблица страниц (форматы элементов см. на рис. 2.17., 2.18., 2.19.). В режиме 36-битного физического адреса: таблица указателей на каталог страниц (рис. 2.20.), каталог страниц (рис. 2.21., 2.22.) и таблица страниц (рис. 2.23.). Формат элементов каталога страниц зависит также от размера применяемых страниц.

В процессорах Intel386, Intel486 возможно применение только страниц размером 4 Кб, в Pentium введена поддержка страниц 4 Мб, расширение физического адреса до 36 бит и, соответственно, поддержка в этом режиме страниц 4 Кб и 2 Мб введены в процессоре Pentium Pro, режим PSE-36 также появился в процессорах начиная с Pentium Pro.

Еще одно расширение, которое может вводится в процессоры начиная с Pentium Pro — таблица атрибутов страницы (Page Attribute Table). Для поддержки этого расширения в формат элементов таблицы и каталога страниц, которые описывают страницы, введен специальный бит (PAT-атрибут). Этот атрибут используется процессором вместе с битами PCD и PWT для определения по специальной внутренней программируемой PAT-таблице режима кэширования соответствующей страницы. Таким образом, для процессоров с поддержкой PAT несколько изменяется назначение битов PCD и PWT в элементах каталога и таблицы страниц. В процессорах, которые не поддерживают PAT (проверяется командой CPUID) бит PAT-атрибута считается зарезервированным и должен быть нулевым.

 

Формат элементов каталога страниц для 4Кб страниц в режиме 32-битного физического адреса

Рис. 2.17. Формат элементов каталога страниц для 4Кб страниц в режиме 32-битного физического адреса

 

Формат элементов таблицы страниц для 4Кб страниц в режиме 32-битного физического адреса

Рис. 2.18. Формат элементов таблицы страниц для 4Кб страниц в режиме 32-битного физического адреса

 

Формат элементов каталога страниц для 4Мб страниц в режиме 32-битного физического адреса и для PSE-36

Рис. 2.19. Формат элементов каталога страниц для 4Мб страниц в режиме 32-битного физического адреса и для PSE-36

 

Формат элементов таблицы указателей на каталог страниц в режиме 36-битного физического адреса

Рис. 2.20. Формат элементов таблицы указателей на каталог страниц в режиме 36-битного физического адреса

 

Формат элементов каталога страниц для 4Кб страниц в режиме 36-битного физического адреса

Рис. 2.21. Формат элементов каталога страниц для 4Кб страниц в режиме 36-битного физического адреса

 

Формат элементов таблицы страниц для 4Кб страниц в режиме 36-битного физического адреса

Рис. 2.22. Формат элементов таблицы страниц для 4Кб страниц в режиме 36-битного физического адреса

 

Формат элементов каталога страниц для 2Мб страниц в режиме 36-битного физического адреса

Рис. 2.23. Формат элементов каталога страниц для 2Мб страниц в режиме 36-битного физического адреса

 

A (Доступ)

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

 

AVAIL (Резерв ОС)

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

 

D (Модификация)

Процессор устанавливает этот бит элемента таблицы или каталога страниц при записи в соответствующую страницу. Устанавливается только бит элемента, описывающего страницу, т.е. в каталоге страниц в 4 Кб режиме этот бит не используется.

 

G (Глобальная страница: Pentium Pro …)

Установка этого бита помечает соответствующую страницу как глобальную. Глобальные страницы при загрузке в TLB (Translation Lookaside Buffer) остаются там до тех пор, пока не будут объявлены недействительными программным путем (с помощью команды INVLPG). В отличие от них, обычные страницы выгружаются из TLB всякий раз, когда изменяется содержимое регистра CR3. Это может происходить либо при переключении задач, либо при применении команды MOV CR. Такая поддержка глобальных страниц функционирует только при CR4.PGE = 1, если же CR4.PGE = 0, то установки бита G игнорируются. Операционная система может использовать глобальные страницы для хранения компонентов своего ядра, которые функционируют на самом привилегированном уровне и постоянно находятся в памяти после загрузки ОС.

 

P (Присутствие)

Указывает, находится ли данная страница или таблица в физической памяти. Если P = 1 — страница в памяти. Если P = 0, то при обращении к такой странице генерируется особая ситуация #PF (Страничная ошибка). Для элементов с P = 0 все остальные поля не анализируются и могут быть использованы программой для своих нужд.

 

PA2 (Базовый адрес страницы: Pentium Pro …)

В процессорах, которые поддерживают расширение физического адреса PSE-36 (распознается командой CPUID), формат элемента каталога страниц для 4Мб страниц расширен. Расширение это таково, что оказывается незадействованным всеми программами, написанными для процессоров без поддержки PSE-36. Для тех же процессоров, в которых PSE-36 реализовано, оказывается возможно использование 64 Гбайт физической памяти (36-битный физический адрес) со страницами 4Мб. Достигается это за счет увеличения разрядности базового адреса страницы. Старшие четыре бита базового адреса помещаются в ранее зарезервированные биты элемента каталога страниц для 4Мб страниц — в поле PA2. Старший разряд адреса соответствует старшему биту поля и.т.д.

 

Page Base Address (Базовый адрес страницы)

Задает начальный физический адрес страницы. Разрядность этого поля зависит от размера страниц и разрядности физического адреса. Так для 4 Кб страниц, которые всегда локализованы в 4 Кбайтных границах, 12 младших бит адреса всегда нулевые, а старшие биты помещаются в поле Page Base Address, в режиме 32-разрядного адреса это 20 бит, в режиме 36-битного адреса — 24 бита. Аналогично, для 4 Мб страниц всегда нулевые младшие 22 бита, а в поле Page Base Address помещаются старшие 10 бит адреса. Для поддержки 36-битного физического адреса в 4 Мб страницах в режиме PSE-36 в элемент каталога таблиц введено дополнительное поле PA2, которое содержит старшие четыре бита базового адреса.

 

Page Directory Base Address (Базовый адрес каталога страниц: Pentium Pro …)

Содержит старшие 24 бита начального физического адреса каталога страниц в режиме расширенного 36-битного физического адреса (CR4.PAE = 1). Каталоги локализованы в 4-Кбайтных границах и 12 младших бит адреса всегда нулевые.

 

Page-Table Base Address (Базовый адрес таблицы страниц)

Содержит старшие 20/24 бита начального физического адреса таблицы страниц. Таблицы страниц локализованы в 4-Кбайтных границах, поэтому 12 младших бит адреса всегда нулевые.

 

PAT (PAT-атрибут страницы: Pentium Pro …)

Этот бит поддерживается процессорами с расширенной архитектурой PAT (таблица атрибутов страниц). Определение поддержки PAT-расширения производится командой CPUID. PAT (Page Attribute Table) — это специальное средство, расширяющее возможности процессора по управлению режимами кэширования страниц. В обычном режиме кэширование страниц задается битами PCD и PWT в таблицах страничных преобразований, в процессорах с поддержкой PAT для каждой страницы в описывающем ее элементе каталога или таблицы страниц биты PCD, PWT и новый бит PAT задают указатель на элемент специальной внутренней программируемой таблицы PAT, который (элемент) и задает режим кэширования. Программирование таблицы PAT осуществляется путем записи в специальный регистр модели с адресом 277h. В процессорах, где поддержки PAT нет, соответствующий бит элементов каталога и таблицы страниц считается зарезервированным и должен быть нулевым. Подробнее о PAT-расширении смотрите в техническом руководстве фирмы Intel ( Intel® 64 and IA-32 Architectures Software Developer's Manual. Volume 3A: System Programming Guide, Part 1).

 

PCD (Запрещение кэширования страниц: Intel486 …)

Бит используется для управления КЭШ. Программы могут управлять кэшированием как отдельных страниц, так и таблиц страниц посредством этого бита. PCD = 1 запрещает кэширование страницы или таблицы страниц. Действие данного бита распространяется только на соответствующие страницы и при условии, что кэширование разрешено (CR0.CD = 0). В процессорах с поддержкой PAT действие данного бита по умолчанию остается прежним, но может быть несколько изменено программированием таблицы PAT. Подробнее о PAT-расширении смотрите в техническом руководстве фирмы Intel ( Intel® 64 and IA-32 Architectures Software Developer's Manual. Volume 3A: System Programming Guide, Part 1).

 

PS (Размер страницы: Pentium …)

Бит 7 младшего байта элемента каталога страниц указывает на размер страниц (страницы), описываемых данным элементом. В режиме 32-битного адреса и PSE-36: 0 — 4 Кб, 1 — 4 Мб. В режиме 36-битного адреса: 0 — 4 Кб, 1 — 2 Мб. В зависимости от значения этого флага и текущего режима физического адреса существенно изменяется формат и назначение других полей элемента каталога страниц. Использование страниц размером 4 Мб в режиме 32-битного адреса и 2 Мб в режиме 36-битного адреса разрешено только когда установлен флаг CR4.PSE = 1.

 

PWT (Сквозная запись: Intel486 …)

Бит используется для управления КЭШ. Программы могут управлять кэшированием как отдельных страниц, так и таблиц страниц посредством этого бита. При PWT = 1, для текущей страницы обновление реализуется методом сквозной записи, при PWT = 0 — методом обратной записи. Действие данного бита распространяется только на соответствующие страницы и при условии, что кэширование разрешено и CR0.NW = 0. В процессорах с поддержкой PAT действие данного бита по умолчанию остается прежним, но может быть несколько изменено программированием таблицы PAT. Подробнее о PAT-расширении смотрите в техническом руководстве фирмы Intel (Intel® 64 and IA-32 Architectures Software Developer's Manual. Volume 3A: System Programming Guide, Part 1).

 

U/S (Пользователь/Супервизор)

Используется механизмом защиты. Задает тип страницы 1 — пользовательская, 0 — страница супервизора. Страницы супервизора защищаются механизмом защиты от доступа к ним из программ, выполняющихся на уровне привилегий 3 (пользовательский уровень). При комбинации установок Пользователь/Супервизор в каталоге и таблице страниц приоритетной считается установка Супервизора, т.е. страница считается страницей супервизора, если в соответствующем элементе таблицы или каталога U/S = 0.

 

W/R (Чтение/Запись)

Используется механизмом защиты для разрешения/запрещения записи в пользовательские страницы. 0 — запись запрещена (разрешено только чтение), 1 — запись разрешена. При комбинации установок Чтение/Запись в каталоге и таблице страниц приоритетной считается установка запрета записи, т.е. страница считается защищенной от записи, если в соответствующем элементе таблицы или каталога R/W = 0. В обычном режиме для программ супервизора доступны для чтения и записи все страницы независимо от установок защиты. Однако в процессорах начиная с Intel486 существует специальный режим, который включается установкой бита CR0.WP = 1. В этом режиме защищенные от записи страницы пользователя не доступны для записи программами супервизора.