Адресация и многозадачность: Страничный механизм

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

 

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

Страничный механизм может быть задействован только в защищенном режиме (а также и в режиме V86) работы процессора. Включение/выключение страничного механизма производится установкой/сбросом бита CR0.PG.

Страничный механизм и текущий объем поддерживаемой физической памяти не оказывают влияния на формирование линейного адреса, который всегда остается 32-разрядным. Однако страничный механизм позволяет для каждой задачи задать свой протокол отображения линейного адреса на физический. Это свойство используется при выполнении задач в режиме V86 для отображения урезанного линейного адресного пространства задач процессора 8086 на старшие области физической памяти.

Поскольку размер страниц 4 Кб существенно ограничивал возможности программистов, в процессоры начиная с Pentium было введено расширение, позволяющее наряду со стандартными 4 Кб страницами использовать большие страницы размером 4 Мб. При этом только незначительно изменилась интерпретация входного линейного адреса и был введен дополнительный формат элементов каталога страниц (рис. 2.4.).

 

Процесс формирования физического адреса при работе со страничным механизмом в режимах 4Кб и 4Мб страниц и 32-разрядного физического адреса и в режиме PSE-36

Рис. 2.4. Процесс формирования физического адреса при работе со страничным механизмом в режимах 4Кб и 4Мб страниц и 32-разрядного физического адреса и в режиме PSE-36

Расширение физического адреса (PAE)

В процессорах начиная с Pentium Pro возможна реализация специального механизма расширения физического адреса (управляется битом CR4.PAE). При этом процессор может адресовать физическую память объемом до 236 байт (64 Гб). Для поддержки работы данного расширения некоторые изменения вводятся и в механизм страничных преобразований. Заметим, что изменения касаются только страничного механизма, формирование линейного адреса происходит обычным образом независимо от текущего значения CR4.PAE и линейный адрес всегда остается 32-битным. Но поскольку для каждой задачи может быть задан свой протокол отображения линейного адреса на физический, в многозадачной среде становится возможным использование физической памяти объемом больше, чем общий объем линейного адресного пространства, доступного каждой конкретной задаче (232 байт).

Когда расширение физического адреса включено (CR4.PAE = 1) страничный механизм поддерживает страницы размером 4 Кб и 2 Мб, а в иерархию таблиц страничных преобразований вводится еще одна таблица — таблица указателей на каталоги страниц (рис. 2.5.).

 

Процесс формирования физического адреса при работе со страничным механизмом в режимах 4Кб и 2Мб страниц и 36-разрядного физического адреса

Рис. 2.5. Процесс формирования физического адреса при работе со страничным механизмом в режимах 4Кб и 2Мб страниц и 36-разрядного физического адреса

 

36-битное расширение размера страниц (PSE-36)

Еще одно расширение страничного механизма может вводится в процессоры поддерживающие 36-разрядную адресацию физической памяти (Pentium Pro …). PSE‑36 (36-bit Page Size Extension) — 36-битное расширение размера страниц. Это расширение не является управляемым, т.е. не может включаться/выключаться специальными битами в управляющих регистрах, оно либо поддерживается процессором, либо нет (определяется командой CPUID).

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

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

 

Таблица 2.2. Размерность физического адреса в различных режимах работы процессора: Pentium Pro …

CR0.PG

CR4.PAE

CR4.PSE

Поле PS в элементе каталога страниц

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

Размер физического адреса с PSE-36 / без PSE-36

0

x

x

x

Страничный механизм отключен

1

0

0

x

4 Кб

32-битный / 32-битный

1

0

1

0

4 Кб

32-битный / 32-битный

1

0

1

1

4 Мб

36-битный / 32-битный

1

1

x

0

4 Кб

36-битный / 36-битный

 

Работа страничного механизма при поддержке PSE-36 изображена на рис. 2.4. (значения разрядности адреса для PSE-36 приведены в скобках).