- •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.6. Права доступа к странице
Постранично гранулированные средства управления доступом используют 4 уровня привилегий. Уровень привилегий 0 является наиболее привилегированным и имеет доступ ко всем привилегированным командам, а уровень привилегий 3 является наименее привилегированным. Доступ (включая IA-32) к странице задается полями TLB.ar и TLB.pl, а также уровнем привилегий доступа так, как это определено в табл. 4.3. Заливания и сливания RSE получают свой уровень привилегий из RSC.pl, все другие обращения (включая IA-32) получают свой уровень привилегий из PSR.cpl. В ячейках имеются значки: «–» обозначает нет доступа, «R» - доступно для чтения, «W» - доступно для записи, «X» - доступно для выполнения, а «P» - повышает PSR.cpl до уровня привилегий «n» при выполнении инструкции epc (Enter Privileged Code – войти в привилегированный код).
Табл. 4.3. Права доступа к странице
TLB.ar |
TLB.pl |
Уровень привилегийA |
Описание |
|||
3 |
2 |
1 |
0 |
|||
0 |
3 |
R |
R |
R |
R |
Только чтение |
2 |
–– |
R |
R |
R |
||
1 |
–– |
–– |
R |
R |
||
0 |
–– |
–– |
–– |
R |
||
1 |
3 |
RX |
RX |
RX |
RX |
Чтение, выполнение |
2 |
–– |
RX |
RX |
RX |
||
1 |
–– |
–– |
RX |
RX |
||
0 |
–– |
–– |
–– |
RX |
||
2 |
3 |
RW |
RW |
RW |
RW |
Чтение, запись |
2 |
–– |
RW |
RW |
RW |
||
1 |
–– |
–– |
RW |
RW |
||
0 |
–– |
–– |
–– |
RW |
||
3 |
3 |
RWX |
RWX |
RWX |
RWX |
Чтение, запись, выполнение |
2 |
–– |
RWX |
RWX |
RWX |
||
1 |
–– |
–– |
RWX |
RWX |
||
0 |
–– |
–– |
–– |
RWX |
||
4 |
3 |
R |
RW |
RW |
RW |
Только чтение / Чтение, запись |
2 |
–– |
R |
RW |
RW |
||
1 |
–– |
–– |
R |
RW |
||
0 |
–– |
–– |
–– |
RW |
||
5 |
3 |
RX |
RX |
RX |
RWX |
Чтение, выполнение / Чтение, запись, выполнение |
2 |
–– |
RX |
RX |
RWX |
||
1 |
–– |
–– |
RX |
RWX |
||
0 |
–– |
–– |
–– |
RWX |
||
6 |
3 |
RWX |
RW |
RW |
RW |
Чтение, запись, выполнение / Чтение, запись |
2 |
–– |
RWX |
RW |
RW |
||
1 |
–– |
|
RWX |
RW |
||
0 |
–– |
|
|
RW |
||
7 |
3 |
X |
X |
X |
RX |
Выполнение, повышениеB / Чтение, выполнение |
2 |
XP2 |
X |
X |
RX |
||
1 |
XP1 |
XP1 |
X |
RX |
||
0 |
XP0 |
XP0 |
XP0 |
RX |
||
Для заполнений и сливаний RSE – это RSC.pl, а для всех остальных обращений – это PSR.cpl.
Пользователь может выполнять только те страницы, для которых задан уровень привилегий равный 3.
Программа может проверить полномочия уровня страницы с помощью инструкции probe, которая проверяет доступность для данной виртуальной страницы, путем верификации уровня привилегий, полномочия чтения и записи уровня страницы, а также полномочия чтения и записи ключа защиты.
Страницы, предназначенные только для выполнения (TLB.ar=7), могут быть использованы для повышения уровня привилегий при входе в операционную систему. Код уровня пользователя для перехода на повышенную страницу (управляемую операционной системой), обычно выполняет инструкцию epc (Enter Privileged Code). Если epc успешно повысила уровень, то следующая группа инструкций выполняется на том уровне привилегий, который был задан повышенной страницей. Переход типа возврата из процедуры (br.ret) может понизить текущий уровень привилегий.
