- •4. Адресация и защита
- •4.1. Виртуальная адресация
- •4.1.1. Буфер трансляции адресов (tlb)
- •4.1.1.1. Регистры трансляции (tr)
- •4.1.1.2. Кэш трансляции (tc)
- •4.1.1.3. Объединенные буфера трансляции адресов
- •4.1.1.4. Сбрасывающее поведение вставок и сбросов tlb
- •4.1.1.5. Формат вставки трансляции
- •4.1.1.6. Права доступа к странице
- •4.1.1.7. Размеры страниц
- •4.1.2. Регистры регионов (rr)
- •4.1.3. Ключи защиты
- •4.1.4. Инструкции трансляции
- •4.1.5. Таблица виртуальных хэш страниц (vhpt)
- •4.1.5.1. Конфигурация vhpt
- •4.1.5.2. Поиск vhpt
- •4.1.5.3. Короткий формат базирования региона vhpt
- •4.1.5.4. Длинный формат vhpt
- •4.1.6. Хэширование vhpt
- •4.1.6.1 Индекс короткого формата vhpt базирования региона
- •4.1.6.2. Длинно форматный vhpt хэш
- •4.1.7. Среда vhpt
- •4.1.8. Поиск трансляции
- •4.1.10. Виртуальное совмещение (aliasing)
- •4.2. Физическая адресация
- •4.3. Не реализованные адресные биты
- •4.3.1. Не реализованные физические адресные биты
- •4.3.2. Не реализованные виртуальные адресные биты
- •4.3.3 Поведение инструкций с не реализованными адресами
- •4.4. Атрибуты памяти
- •4.4.1. Атрибуты памяти виртуальной адресации
- •4.4.2. Атрибуты памяти физической адресации
- •4.4.3. Атрибуты кэшируемости и когерентности
- •4.4.4. Атрибут политики записи кэша.
- •4.4.5. Атрибут объединения
- •4.4.6. Атрибуты спекулятивности
- •4.4.7. Атрибуты последовательности и упорядочивание
- •4.4.8. Атрибут «не вещь» (NaTPage)
- •4.4.9. Эффекты атрибутов памяти в инструкциях обращения к памяти
- •4.4.10. Эффекты атрибутов памяти в предварительных и проверяемых загрузках
- •4.4.11. Передача атрибутов памяти
- •4.4.11.1. Передача атрибутов памяти виртуальной адресации
- •4.4.11.2. Передача атрибутов физической адресации – отключение предвыборок/спекуляций и удаление кэшируемости
- •4.5. Выравнивание элементов памяти и атомистичность
4.1.1.5. Формат вставки трансляции
Рис. 4.5 показывает взаимодействие регистров для вставки элементов в TLB. Вставки TLB выполняются с помощью инструкций itc.d, itc.i (Insert Translation Cache – вставить кэш трансляции) и itr.d, itr.i (Insert Translation Registers – вставить регистры трансляции). Первое 64-битовое поле, содержащее физический адрес, атрибуты и разрешения, задается операндом регистра общего назначения. Дополнительная информация о ключе защиты и размере страницы задается регистром прерывания вставки TLB (ITIR – Interruption TLB Insert Register). Регистр прерывания адреса ошибки (IFA – Interruption Faulting Address) задает виртуальный адрес для TLB вставок инструкций и данных. Регистры ITIR и IFA описаны в разделе 3.3.3 «Регистры управления». Старшие три бита IFA (VRN биты {63:61}) выбирают регистр виртуального региона, который задает поле RID для элемента TLB. Поле RID выбранного региона отмечается для трансляции, поскольку оно вставляется в TLB. Если используются зарезервированные поля или зарезервированные коды, то на инструкции вставки вызывается ошибка «Зарезервированный регистр/поле».
Программа должна запустить операцию сериализации инструкций, чтобы гарантировать, что установки в ITLB являются наблюдаемыми для зависимых выборок инструкций и операцию сериализации данных, чтобы гарантировать, что установки в DTLB являются наблюдаемыми для зависимых обращений к памяти данных.
|
63 |
|
|
|
53 |
52 |
51 |
50 |
49 |
|
|
|
|
32 |
31 |
|
|
12 |
11 |
9 |
8 |
7 |
6 |
5 |
4 |
2 |
1 |
0 |
||||
GR[r] |
ig |
ed |
rv |
ppn |
ar |
pl |
d |
a |
ma |
rv |
p |
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
ITIR |
rv |
key |
ps |
rv |
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
IFA |
vpn |
ig |
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
RR[vrn] |
rv |
rid |
ig |
rv |
ig |
|||||||||||||||||||||||||||
Рис.4.5. Формат вставки трансляции
Таблица 4.2 описывает все поля интерфейса трансляции.
Табл. 4.2. Поля интерфейса трансляции
Поле TLB |
Исходное поле |
Описание |
rv |
GR[r]{1,51:50}, ITIR{1:0,63:32}, RR[vrn]{1,63:32} |
Зарезервировано |
p |
GR[r]{0} |
Present bit – бит существования. Если – 1, то обращения, использующие эту трансляцию, вызывают ошибку «Не существующая страница инструкций или данных». Большинство других полей игнорируется процессором, детали см. на рис. 4.6. Этот бит обычно используется процессором для указания того, что отображаемая физическая страница не находится в физической памяти. Бит существования не является битом правильности. Для каждого TLB элемента, процессор поддерживает дополнительный скрытый бит правильности, который показывает, является ли элемент допустимым. |
ma |
GR[r]{4:2} |
Memory Attribute – атрибуты памяти. Описывает атрибуты кэшируемости, когерентности, политики записи и спекулятивности для отображаемой физической страницы. Детальнее см. раздел 4.4 «Атрибуты памяти» |
a |
GR[r]{5} |
Accessed bit – бит доступа. Если – 0 и PSR.da=0, то обращения к данным для страницы, вызывают ошибку «Бит доступа к данным». Если – 0 и PSR.ia=0, то обращения к инструкциям для страницы, вызывают ошибку «Бит доступа к инструкциям». Если – 0, то обращения IA-32 для страницы, вызывают ошибку «Бит доступа к данным». Этот бит может включить вызов ошибки на обращении для целей трассировки или отладки. Процессор не меняет бит доступа при обращении. |
d |
GR[r]{6} |
Dirty bit – бит мусора. Если – 0 и PSR.da=0, то обращения сохранения, либо семафоры типа Itanium, для страницы, вызывают ошибку «Бит мусора данных». Если – 0, то IA-32 обращения сохранения, либо семафоры, для страницы, вызывают ошибку «Бит мусора данных». Процессор не обновляет бит мусора при обращениях записи. |
pl |
GR[r]{8:7} |
Privilege Level – уровень привилегий. Задает уровень привилегий или расширение уровня для страницы. Подробности см. в разделе 4.1.1.6 «Права доступа к странице». |
ar |
GR[r]{11:9} |
Access Rights – права доступа. Управляет привилегиями и разрешениями чтения, записи и выполнения страницы. Подробности см. в разделе 4.1.1.6 «Права доступа к странице». |
ppn |
GR[r]{49:12} |
Physical Page Number – номер физической страницы. Наиболее значимые биты отображаемого физического адреса. В зависимости от размера страницы используемого при отображении, некоторые из наименее существенных битов PPN игнорируются. |
ed |
GR[r]{52} |
Exception Deferral – отложенное исключение. Для спекулятивной загрузки, которая приводит к исключению, бит TLB.ed страницы инструкций спекулятивной загрузки, является одним из условий, которое определяет, должно ли быть отложено исключение. Подробнее см. раздел 5.5.5 «Откладывание ошибок спекулятивной загрузки». Этот бит игнорируется в данных TLB для обращений к памяти данных и для обращений к памяти IA-32. |
ig |
GR[r]{63:53}, IFA{11:0}, RR[vrn]{0,7:2} |
Доступно. Программа может использовать эти поля для параметров, задаваемых операционной системой. Эти биты игнорируются процессором при вставке в TLB. |
ps |
ITIR{7:2} |
Page Size – размер страницы. Размер страницы отображения. Для размеров страниц больших 4К байт, биты младших разрядов PPN и VPN – игнорируются. |
key |
ITIR{31:8} |
Protection Key – ключ защиты. Уникально отмечает трансляцию для защищаемого домена. Если ключ трансляции не найден в регистрах ключей защиты (PKR – Protection Key Registers), то обращение отклоняется и вызывается ошибка «Промах ключа данных или инструкций». Детальнее см. раздел 4.1.3 «Ключи защиты». |
vpn |
IFA{63:12} |
Virtual Page Number – номер виртуальной страницы. В зависимости от размера страницы трансляции, в процессе трансляции игнорируются некоторые наименее существенные биты заданного VPN. Регистр региона выбирается с помощью VPN{63:61} (VRN). |
rid |
RR[VRN].rid |
Virtual Region Identifier – идентификатор виртуального региона. При вставках TLB, идентификатор региона, выбранный с помощью VPN{63:61} (VRN), используется как дополнительные биты соответствия для последующих обращений и сбросов (очень похоже на биты vpn). |
На рис. 4.6 описан формат для «не существующих» трансляций (Р-бит равен 0).
|
63 |
|
|
|
|
|
|
|
|
|
|
|
|
32 |
31 |
|
|
12 |
11 |
|
8 |
7 |
|
|
|
2 |
1 |
0 |
||||
GR[r] |
ig |
0 |
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
ITIR |
ig |
ps |
rv |
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
IFA |
vpn |
ig |
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
RR[vrn] |
rv |
rid |
ig |
rv |
ig |
|||||||||||||||||||||||||||
Рис.4.6. Формат вставки трансляции типа «не существующей» (Not Present)
