- •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.8. Поиск трансляции
Общая последовательность поиска и VHPTпоказана на рис. 4.16. При неудачномTLBпоиске, если обходчикVHPTзапрещен для региона обращения, то вызывается ошибка «Альтернативный промахTLBинструкций/данных». Если обходчикVHPTразрешен для региона обращения, то следует обращение кVHPTдля локализации промахнувшейся трансляции. См. раздел 4.1.7 «СредаVHPT». Если дополнительные промахиTLBпроисходят в процессе обращений обходчикаVHPT, то вызывается ошибка «ТрансляцияVHPT». Если обходчикVHPTне находит требуемую трансляцию вVHPTили поиск завершается аварийно, то вызывается ошибка «ПромахTLBинструкций/данных». В противном случае элемент загружается вITCилиDTC. Если же упомянутые условия ошибки не обнаружены, то процессор может загрузить элемент вITCилиDTC, даже если порядок выполнения программы не требует трансляции.
Вставки обходчика VHPTвTC, следуют тем же самым правилам очистки перед выполнением, которым подчиняются программные вставки (см. табл. 4.1 «Поведение сброса инструкцийTLB»). Вставки обходчикаVHPTвDTC, ведут себя подобноitc.d; вставки обходчикаVHPTвITC, ведут себя подобноitc.i. Если обращение инструкции приводит в результате к обходуVHPT, который отсутствует в данныхTLB, то вставкаDTCдля трансляции дляVHPT, действует подобноitc.d. Вставки обходчикаVHPTв элементы, которые существуют в регистрахTR, не разрешены. Установлено, что обходчикVHPTможет искать любой виртуальный адрес, но если адрес отображаетсяTR, то он не вставляется вTC. Программное обеспечение не должно создавать накладывающиеся трансляции вVHPT, которые являются большими, чем текущие существующиеTRтрансляции. Вставка обходчикаVHPTможет привести к аварийному завершению «Машинная проверка», если существует наложение междуTRи вставляемым элементомVHPT.
После того как загружен элемент трансляции, проверяются дополнительные ошибки TLB; они включаются в приоритетном порядке: «Страница не представлена», «УпотреблениеNaT-страницы», «Промах ключа», «Разрешение ключа», «Права доступа», «Бит доступа» и «Бит мусора». Табл. 4.9 описывает ошибки связанные с обходчикомVHPTиTLB.
При неудачном поиске TLB/VHPT, процессор загружает регистры прерывания и трансляцию по умолчанию, как это описано в разделе 8.1 «Описания вектора прерывания» при описании параметров ошибки трансляции. Если операционная система принимает значения по умолчанию, то только часть физического адреса элементаTLB, нужна для вставкиTLB.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| ||||||||||||||||
|
|
|
Virtual Address |
|
| |||||||||||||
|
|
|
|
| ||||||||||||||
|
|
|
|
|
|
| ||||||||||||
|
Unimplemented Data Address fault |
no |
implemented VA? |
|
| |||||||||||||
|
|
|
| |||||||||||||||
|
|
|
|
yes |
| |||||||||||||
|
|
| ||||||||||||||||
|
Data Nested TLB fault |
|
Search TLB |
|
| |||||||||||||
|
|
0 |
|
| ||||||||||||||
|
|
PSR.ic |
|
not found |
| |||||||||||||
|
Alternate Data TLB Miss fault |
|
|
| ||||||||||||||
|
|
Data VHPT Walker Enabled |
|
| ||||||||||||||
|
|
|
| |||||||||||||||
|
|
|
| |||||||||||||||
|
Data Nested TLB fault |
0 |
yes |
|
| |||||||||||||
|
|
|
|
| ||||||||||||||
|
|
PSR.ic |
VHPTwalker |
|
|
| ||||||||||||
|
VHPTData |
|
TLB Miss |
|
|
| ||||||||||||
|
fault |
|
|
|
|
| ||||||||||||
|
|
Search VHPT |
|
| ||||||||||||||
|
Data Nested TLB fault |
|
|
| ||||||||||||||
|
PSR.ic |
|
|
| ||||||||||||||
|
|
failed search: tag mismatch or walker abort |
found |
| ||||||||||||||
|
Data TLB Miss fault |
|
|
| ||||||||||||||
|
|
|
| |||||||||||||||
|
|
|
| |||||||||||||||
|
Faults: Page Not Present NaT Page Consumption Key Miss Key Permission Access Rights Dirty Bit Access Bit Debug Unaligned Data Reference |
|
|
|
| |||||||||||||
|
TC Insert |
|
| |||||||||||||||
|
|
| ||||||||||||||||
|
|
|
|
| ||||||||||||||
|
fault checks |
|
| |||||||||||||||
|
|
| ||||||||||||||||
|
|
no fault |
| |||||||||||||||
|
|
|
|
| ||||||||||||||
|
Access Memory |
|
| |||||||||||||||
|
|
| ||||||||||||||||
|
Unsupported Data Reference |
|
|
| ||||||||||||||
|
|
|
| |||||||||||||||
|
Data TLB VHPT Search |
| ||||||||||||||||
|
|
|
|
|
|
| ||||||||||||
Рис. 4.16. Поиск TLB/VHPT
Табл. 4.9. Ошибки поиска TLBиVHPT
|
Ошибка |
Описание |
|
Инструкции/данные VHPT |
Вызывается, если есть дополнительный промах TLB, когда обходчикVHPTпытается обратиться кVHPT. Обычно используется для создания отображения листа таблицы для конфигурации таблицы линейных страниц. |
|
Альтернативный промах TLBинструкций/данных |
Вызывается, когда обходчик VHPTне разрешен, а обращение к инструкциям или данным приводит к промахуTLB. Например, обходчикVHPTможет быть запрещен в данном виртуальном регионе, так что могут быть использованы алгоритмы трансляции, зависимые от регионов. |
|
Промах TLBинструкций/данных |
Вызывается, если обходчик VHPTразрешен, но:
По сути, обработчики промахов TLBинструкций/данных, являются программными обходчикамиVHPT. |
|
Вложенные данные TLB |
Вызывается, если произошла одна из ошибок «Промах TLBданных», «Альтернативный промахTLBданных», «Трансляция данныхVHPT» иPSR.ic=0 и нет летящего состояния (например, ошибка в обработчике промахаTLB). Ошибка вложенных данныхTLBразрешает программному обеспечению для того, чтобы избежать накладных расходов для потенциальных ошибок промахаTLBданных. |
|
Не представлена страница инструкций/данных |
Вызывается, если Р-бит вызываемой трансляции равен 0. |
|
Употребление NaTстраницы инструкций/данных |
Не спекулятивная загрузка, сохранение, принудительная RSEзагрузка, сохранение, выполнение, либо семафорная операция обращается к странице, которая помечена в физической памяти атрибутомNaTPage. Детальнее см. раздел 4.4.8 «Атрибут не вещь (NaTPage)». |
|
Промах ключа инструкций/данных |
Ключ разрешения обращающейся трансляции не представлен в наборе регистров допустимых ключей защиты. |
|
Разрешение ключа инструкций/данных |
Требуемая трансляция отклонена по разрешению чтения, записи или выполнения, с помощью соответствующих регистров ключей защиты. |
|
Права доступа инструкций/данных |
Отклонено, постранично гранулированное чтение, запись выполнение и обращения привилегированного уровня. |
|
Бит мусора данных |
При сохранении или семафорной операции бит мусора обращающейся трансляции, равен 0. |
|
Бит доступа инструкций/данных |
Бит доступа обращающейся трансляции, равен 0. |


