- •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.9. 32-Битная виртуальная адресация
- •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(InsertTranslationCache– вставить кэш трансляции) иitr.d, itr.i(InsertTranslationRegisters– вставить регистры трансляции). Первое 64-битовое поле, содержащее физический адрес, атрибуты и разрешения, задается операндом регистра общего назначения. Дополнительная информация о ключе защиты и размере страницы задается регистром прерывания вставкиTLB(ITIR–InterruptionTLBInsertRegister). Регистр прерывания адреса ошибки (IFA–InterruptionFaultingAddress) задает виртуальный адрес для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} |
Presentbit– бит существования. Если – 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} |
Dirtybit– бит мусора. Если – 0 иPSR.da=0, то обращения сохранения, либо семафоры типаItanium, для страницы, вызывают ошибку «Бит мусора данных». Если – 0, тоIA-32 обращения сохранения, либо семафоры, для страницы, вызывают ошибку «Бит мусора данных». Процессор не обновляет бит мусора при обращениях записи. |
pl |
GR[r]{8:7} |
PrivilegeLevel– уровень привилегий. Задает уровень привилегий или расширение уровня для страницы. Подробности см. в разделе 4.1.1.6 «Права доступа к странице». |
ar |
GR[r]{11:9} |
AccessRights– права доступа. Управляет привилегиями и разрешениями чтения, записи и выполнения страницы. Подробности см. в разделе 4.1.1.6 «Права доступа к странице». |
ppn |
GR[r]{49:12} |
PhysicalPageNumber– номер физической страницы. Наиболее значимые биты отображаемого физического адреса. В зависимости от размера страницы используемого при отображении, некоторые из наименее существенных битовPPNигнорируются. |
ed |
GR[r]{52} |
ExceptionDeferral– отложенное исключение. Для спекулятивной загрузки, которая приводит к исключению, бит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} |
PageSize– размер страницы. Размер страницы отображения. Для размеров страниц больших 4К байт, биты младших разрядовPPNиVPN– игнорируются. |
key |
ITIR{31:8} |
Protection Key – ключ защиты. Уникально отмечает трансляцию для защищаемого домена. Если ключ трансляции не найден в регистрах ключей защиты (PKR–ProtectionKeyRegisters), то обращение отклоняется и вызывается ошибка «Промах ключа данных или инструкций». Детальнее см. раздел 4.1.3 «Ключи защиты». |
vpn |
IFA{63:12} |
VirtualPageNumber– номер виртуальной страницы. В зависимости от размера страницы трансляции, в процессе трансляции игнорируются некоторые наименее существенные биты заданногоVPN. Регистр региона выбирается с помощьюVPN{63:61} (VRN). |
rid |
RR[VRN].rid |
VirtualRegionIdentifier– идентификатор виртуального региона. При вставках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. Формат вставки трансляции типа «не существующей» (NotPresent)