Организация виртуальной памяти Pentium4, страница 3

Каталог содержит 1024 32-битовых дескриптора (указателей  разделов)  и  является  системной  таблицей страниц первого уровня. Адрес дескриптора каталога образуется путем присоединения (конкатенации)  к  старшим  20  разрядам  базового  адреса  из  регистра  CR3  10-разрядного  поля Table линейного адреса,  дополненного  двумя  нулевыми  младшими  разрядами.

 Выбранный  дескриптор  каталога  содержит старшие 20 разрядов базового  адреса  раздела (таблицы  страниц второго уровня). Разделы, как и каталоги, считаются выровненными по границам страниц. Далее, используя базовый  адрес  раздела, с помощью 10-разрядного  поля линейного адреса Page выбирается дескриптор, содержащий базовый адрес страницы с физическим операндом.

Каждый раздел занимает одну страницу и содержит  1024  дескриптора. Так как в каталоге размещаются 1024 раздела,  общее  число адресуемых страниц с физическими операндами может составлять  1М. С их помощью  покрывается полное пространство  памяти процессора в 4 Гбайта.

32-разрядный  адрес  искомого  операнда  образуется  путем  конкатенации старших 20  разрядов базового адреса страницы из  выбранного  дескриптора раздела  (таблицы страниц) и 12-разрядного  поля  Byte линейного адреса.

При установленном бите PG регистра CR0 страничное управление разрешено, и блок управления страницами получает 32-битный линейный адрес от блока сегментации.

Для вычисления физического адреса искомого операнда производится чтение строки из страничного каталога, из нее выбирается строка с базовым адресом страницы раздела и затем определяется базовый адрес страницы с физическим операндом. Если на этом пути встречается строка со сброшенным битом Р (присутствия) вырабатывается исключение 14, обработчик которого должен принять меры по загрузке затребованной страницы. Для идентификации причины отказа в стек помещается 16-битный код ошибки (Рис.).