- •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.3. Ключи защиты
Ключи защиты обеспечивают метод разрешения ограничений путем маркировки каждой виртуальной страницы уникальным идентификатором защиты домена. Регистры ключей защиты (PKR–ProtectionKeyRegisters) представляют кэш регистра всех ключей защиты требуемых процессом. Операционная система ответственна за управление и политики замены кэша ключа защиты. Прежде чем обращение к памяти (включаяIA-32) будет разрешено, процессор сравнивает значение ключа трансляции со всеми ключами, содержащимися в регистрахPKR. Если соответствующий ключ не найден, то процессор вызывает ошибку «Промах ключа». Если соответствующий ключ найден, то доступ к странице квалифицируется дополнительными проверками защиты чтения, записи или выполнения, указанными в соответствующем регистре ключа защиты. Если эти проверки не успешны, то вызывается ошибка «Разрешение ключа». При получении ошибок «Промах ключа» и «Разрешение ключа», программа может осуществить желательную политику защиты для защищенного домена. Рис. 4.8 и табл. 4.6 описывают формат регистра ключа защиты и поля регистра ключа защиты.
|
63 |
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
31 |
|
|
|
|
|
|
|
8 |
7 |
|
4 |
3 |
2 |
1 |
0 |
|
rv |
key |
rv |
xd |
rd |
wd |
v | ||||||||||||||||||||||||
|
32 |
8 |
4 |
1 |
1 |
1 |
1 | ||||||||||||||||||||||||
Рис. 4.8. Формат регистра ключа защиты
Табл. 4.6. Поля регистра ключа защиты
|
Поле |
Биты |
Описание |
|
v |
0 |
Valid– правильный. Если – 1, то элемент регистра защиты – правильный и проверен процессором при выполнении процессором проверок защиты. Если – 0, то элемент игнорируется. |
|
wd |
1 |
Write Disable – запрет записи. Если – 1, то разрешение защиты отклоняется для трансляций в защищаемом домене. |
|
rd |
2 |
ReadDisable– запрет чтения. Если – 1, то разрешение чтения отклоняется для трансляций в защищаемом домене. |
|
xd |
3 |
ExecuteDisable– запрет выполнения. Если – 1, то разрешение выполнения отклоняется для трансляций в защищаемом домене. |
|
key |
31:8 |
Protection Key – ключ защиты. Уникальные метки трансляции для данного защищаемого домена. |
|
rv |
7:4,63:32 |
Зарезервировано |
Модели процессоров имеют не менее 16 регистров ключей защиты и не менее 18 битов в поле ключа защиты. В некоторых моделях процессоров реализованы дополнительные регистры ключей защиты и дополнительные биты поля ключа защиты. Не реализованные регистры и биты являются зарезервированными. Регистры ключей имеют реализованных битов ключа не меньше, чем имеется в поле ridрегистров регионов. Дополнительные реализованные биты должны быть непрерывны, и начинаться с бита 18. Для дальнейшей информации относительно количеств регистров ключей защиты и битов ключей защиты, реализованных в конкретной модели процессораItanium, посмотрите документацию, специфицирующую процессор.
Программа должна запустить операцию сериализации инструкций, чтобы гарантировать, что записи в регистры ключей защиты являются наблюдаемыми для выборок зависимых инструкций и запустить операцию сериализации данных для обращений к зависимым данным памяти.
Процессор гарантирует уникальность ключей защиты, сверяя новые допустимые ключи защиты со всеми регистрами ключей защиты в течение инструкций записи в PKR. Если допустимый соответствующий ключ найден в каком-то регистреPKR, то процессор аннулирует соответствующийPKRрегистр, путем установкиPKR.vв 0, перед выполнением записи в новыйPKRрегистр. Если аннулируется какой-то соответствующийPKR, то его другие поля остаются неизменными.
Ошибки Промаха и Разрешения ключа, вызываются только тогда, когда разрешены трансляции памяти (для обращения к данным – PSR.dt=1, для обращения к инструкциям –PSR.it=1, для обращения к стеку регистров–PSR.rt=1), и разрешена проверка ключа защиты (PSR.pk=1).
Ключи защиты TLBданных могут быть получены с помощью инструкцииtak(TranslationAccessKey– ключ доступа трансляции). Значения ключейTLBинструкций не могут быть прямо прочитаны. Для получения значений ключейTLBинструкций программа должна создать условия для чтения структур памяти.
