Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПиП МПС(Ассемблер Левицкий экт 4) / MProc / M9 / Системная архитектура часть 4..doc
Скачиваний:
70
Добавлен:
16.04.2013
Размер:
751.1 Кб
Скачать

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инструкций программа должна создать условия для чтения структур памяти.