2459
.pdfРис. 23. Трансляция адреса в режиме 32-битных виртуальных и физических адресов с использованием 4-мегобайтных страниц
91
Как видно на рис. 23, для поддержки больших страниц просто не используется таблица страниц (PT), а базовый адрес страницы берется непосредственно из PDE таблицы каталога страниц. Смещение при этом 22-битное.
Чтобы отличать PDE, адресующие 4-мегабайтные страницы, от PDE, адресующих таблицы страниц,
используется |
флаг |
PS. Если |
|
|
|
, |
то PDE |
адресует |
||||||||||||||||
непосредственно большую |
страницу, |
а |
если |
|
|
– то |
||||||||||||||||||
|
|
|
= 1 |
|
|
|
|
= 0 |
|
|
|
|||||||||||||
таблицу страниц. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
Кроме |
того, если |
|
|
|
, |
меняется |
трактовка |
||||||||||||||||
некоторых битов в PDE, как |
показано на рис. 24. |
|
|
|
|
|
||||||||||||||||||
|
|
|
= 1 |
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
|
|
|
8 |
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
Адрес стр. |
|
|
Адрес стр. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
0 |
|
|
|
|
AVL |
G |
|
D |
A |
|
|
|
|
P |
|
||||||||
|
(Биты 31...22) |
|
(Биты 39...32) |
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Старшие 18 бит 40-битного базового |
|
PS=1 в режиме |
|
||
|
4 МБ страниц |
|
адреса страницы (выравнивание на 4 МБ) |
|
|
|
|
Рис. 24. Формат PDE в 32-битном режиме для 4-мегобайтных страниц
Дополнительные флаги G, D и PAT трактуются аналогично флагам PTE. Кроме того, в режиме больших страниц физическая адресация расширена до 40 бит, что позволяет использовать ОЗУ объемом более 4 ГБ.
92
4.2.3. 32-битный режим с расширенной физической адресацией (режим PAE – Physical Address Extension)
При включенной поддержке 4-мегабайтных страниц процессор может адресовать более 4 ГБ ОЗУ (40-битная адресация обеспечивает 1 ТБ адресного пространства), но диапазон адресов старше 4 ГБ может использоваться только для размещения данных 4-мегабайтных страниц. Такие страницы используются только для отображения некоторой части ВАП ядра, объем размещенных там данных ограничен и мало зависит от числа запущенных процессов. При этом большая часть ВАП процессов, в том числе вся пользовательская часть ВАП, отображается с использованием 4-килобайтных страниц, и объем размещенных там данных растет с ростом числа запущенных процессов. Следовательно, нужно обеспечить расширение адресного пространства ОЗУ для страниц любого размера.
Упрощенная структурная схема подсистемы трансляции адресов в режиме расширения физического адресного пространства до 2 Байт показана на рис. 25.
В режиме PAE виртуальный адрес делится на 4 части. Младшие 12 бит по-прежнему задают смещение внутри 4- килобайтной страницы. Номер страницы и номер каталога страниц теперь 9-битные, т.е. таблица страниц (PT) и таблица каталога страниц (PDT) теперь содержат по 512 записей вместо 1024, но сами записи теперь 64-битные вместо 32-битных. Следовательно, размеры таблиц не изменились – одна таблица занимает 4 КБ (ровно один страничный кадр).
93
|
32-х битный виртуальный адрес |
||
2 бита |
номер каталога (9 бит) |
номер страницы (9 бит) |
смещение в странице (12 бит) |
CR3 |
PDPT – Page Directory Pointer Table |
|
|
адрес |
|
|
|
|
|
|
|
|
адрес |
|
|
|
адрес |
|
|
|
адрес |
|
|
|
PDT – Page Directory Table |
|
|
|
адрес |
|
|
|
адрес |
|
|
|
адрес |
|
|
|
адрес |
|
|
|
адрес |
|
|
|
адрес |
|
|
|
адрес |
|
|
|
адрес |
|
|
|
адрес |
|
|
|
|
PT – Page Table |
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
адрес |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
адрес |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
адрес |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
адрес |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
адрес |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
tag |
|
|
|
адрес |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
физический |
||
|
|
|
|
адрес |
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
адрес |
|
|
|
|
|
|
|
|
|
|
|
адрес (52 бита) |
||||||
|
|
|
|
адрес |
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TLB – Translation
Lookaside Buffer
Физический адрес, флаги режимов кэширования и контроля доступа
Рис. 25. Трансляция адреса в режиме 32-битного ВАП с использованием PAE и 4-килобайтных страниц
94
Дополнительно вводится таблица указателей на каталог страниц (PDPT), содержащая 4 элемента. Формат записи таблицы указателей на каталог страниц (PDPE) показан на рис. 26.
Рис. 26. Формат PDPE в 32-битном режиме PAE
Поле AVL и флаги PCD, PWT и P в записи PDPE имеют то же назначение, что и ранее.
Формат записи таблицы каталога страниц (PDE) в режиме PAE для 4-килобайтных страниц показан на рис. 27.
|
32 |
|
|
|
20 |
3 |
|
|
|
Адрес PT |
AVL |
A |
P |
0 |
(Биты 31...12) |
0 |
Адрес PT |
32 |
(Биты 51...32) |
1220
Рис. 27. Формат PDE в 32-битном режиме PAE
95
Поле AVL и флаги PS, A, PCD, PWT, U/S, R/W и P в
записи PDE имеют то же назначение, что и ранее. В режиме 4-килобайтных страниц = 0.
Формат записи таблицы страниц (PTE) в режиме PAE показан на рис. 28.
Рис. 28. Формат PTE в 32-битном режиме PAE
Поле AVL и флаги G, PAT, D, A, PCD, PWT, U/S, R/W и P в записи PTE имеют то же назначение, что и ранее.
В режиме PAE также возможна поддержка больших страниц размером 2 МБ, при этом не используется таблица страниц (PT), а базовый адрес страницы берется непосредственно из PDE таблицы каталога страниц. Смещение при этом 21-битное.
Чтобы отличать PDE, адресующие 2-мегабайтные страницы, от PDE, адресующих таблицы страниц, как и
ранее, используется флаг PS. Если |
, то PDE адресует |
|||
непосредственно большую |
страницу, |
=а 1если |
= 0 |
– то |
таблицу страниц. |
|
|
|
|
Кроме того, если |
, |
меняется |
трактовка |
|
некоторых битов в PDE, как |
показано на рис. 29. |
|
|
|
= 1 |
|
|
|
96
Рис. 29. Формат PDE в 32-битном режиме с поддержкой
PAE для 2-мегобайтных страниц
Поле AVL и флаги PAT, G, PS, D, A, PCD, PWT, U/S, R/W и P в записи PDE имеют то же назначение, что и ранее. В режиме 2-мегабайтных страниц = 1. Новый флаг NX (No Execute) запрещает исполнение кода из данной страницы.
4.2.4. 64-битный режим
Упрощенная структурная |
схема |
подсистемы |
трансляции адресов в 64-битном |
режиме |
показана на |
рис. 30. |
|
|
97
Рис. 30. Трансляция адреса в режиме 64-битном режиме с использованием 4-килобайтных страниц
98
Отметим, что хотя архитектура x86-64 считается 64битной, в виртуальном адресе используется только 48 бит, таким образом, размерность ВАП составляет 2 , что позволяет адресовать до 256 ТБ. Физические адреса 52битные, что позволяет адресовать до 4 ПБ (петабайт) оперативной памяти.
Виртуальный адрес разделяется на 5 частей. Младшие 12 бит определяют смещение в 4-килобайтной странице. Оставшиеся 36 используемых бит виртуального адреса разделяются на 4 поля по 9 бит. Каждое поле трактуется как индекс в таблице трансляции соответствующего уровня.
В регистр CR3 заносится адрес таблицы трансляции верхнего уровня (PML4T). Формат записи таблицы PML4T показан на рис. 31. Аналогичный формат имеет и запись в таблице указателей на каталоги страниц (таблице PDPT).
Рис. 31. Формат PML4E и PDPE в 64-битном режиме
Поле AVL и флаги NX, A, PCD, PWT, U/S, R/W и P в
записи PML4E имеют то же назначение, что и ранее. Новое 11-битное поле AVL2 не используется процессором и может произвольно использоваться операционной системой, как и поле AVL.
99
Формат записи таблицы каталогов страниц в 64битном режиме показан на рис. 32.
Рис. 32. Формат PDE в 64-битном режиме
Назначение всех полей и флагов уже было описано. В режиме 4-килобайтных страниц = 0.
Формат записи таблицы страниц в 64-битном режиме показан на рис. 33.
Рис. 33. Формат PTE в 64-битном режиме
Назначение всех полей и флагов уже было описано. В 64-битном режиме возможна поддержка больших
страниц размером 2 МБ, при этом не используется таблица страниц (PT), а базовый адрес страницы берется
100