Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MProc / M9 / Системная архитектура часть 4..doc
Скачиваний:
45
Добавлен:
16.04.2013
Размер:
751 Кб
Скачать

4.1.3. Ключи защиты

Ключи защиты обеспечивают метод разрешения ограничений путем маркировки каждой виртуальной страницы уникальным идентификатором защиты домена. Регистры ключей защиты (PKR – Protection Key Registers) представляют кэш регистра всех ключей защиты требуемых процессом. Операционная система ответственна за управление и политики замены кэша ключа защиты. Прежде чем обращение к памяти (включая 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

Read Disable – запрет чтения. Если – 1, то разрешение чтения отклоняется для трансляций в защищаемом домене.

xd

3

Execute Disable – запрет выполнения. Если – 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 (Translation Access Key – ключ доступа трансляции). Значения ключей TLB инструкций не могут быть прямо прочитаны. Для получения значений ключей TLB инструкций программа должна создать условия для чтения структур памяти.