- •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.1.3. Объединенные буфера трансляции адресов
Некоторые модели процессоров могут сливать ITCиDTCв объединенный кэш трансляции. Минимальное количество объединенных элементов равно 2 (1 для инструкций и 1 для данных). Процессоры могут обслуживать обращения к памяти для выборки инструкций с элементамиTC, первоначально установленными вDTCи обслуживать обращения к памяти данных с трансляциями, первоначально установленными вITC. Для гарантии непротиворечивости операции при разных реализациях процессоров, программному обеспечению рекомендуется не устанавливать различные трансляции вITCилиDTCдля одного и того же виртуального региона и виртуального адреса. ВставкиITCмогут удалять элементыDTC. ВставкиDTCмогут удалять элементыITC. СбросыTCудаляют элементыITCиDTC.
Регистры трансляции инструкций и данных не могут быть объединены. Элементы DTRне могут быть использованы обращениями инструкций, а элементыITRне могут быть использованы обращениями данных. Вставки и сбросыITRне удаляют элементыDTR. Вставки и сбросыDTRне удаляют элементыITR.
4.1.1.4. Сбрасывающее поведение вставок и сбросов tlb
Трансляции, содержащиеся в кэшах трансляции (TC) и регистрах трансляции (TR), поддерживаются в непротиворечивом состоянии с помощью того, что гарантируется, что вставкиTLBудалят существующие перекрытия элементов до того, как будут установлены новыеTRилиTC. Аналогично, сбросыTLB, которые частично или полностью перекрываются с существующими трансляциями, могут удалить все перекрывающиеся элементы. В этом контексте термин«перекрытие» (overlap)означает, что есть две трансляции с одним и тем же идентификатором региона (но не обязательно идентичными номерами виртуальных регионов), и с частично или полностью накладывающимися диапазонами виртуальных адресов (определяемыми виртуальным адресом и размером страницы). Примеры: две 4К-байтных страницы с одним и тем же виртуальным адресом, либо 8К-байтная страница с виртуальным адресом 0х2000 и 4К-байтная страница с виртуальным адресом 0х3000.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Рис. 4.4. Схема поиска виртуального адреса для вставок и сбросов
Как описано в разделе 4.1, каждый TLBможет содержать полеVRN, а биты виртуального адреса {63:61} могут использоваться как часть соответствия для обращений к памяти (обращений не являющихся вставками или сбросами). Такое связывание трансляции сVRNподразумевает, что поиск данного виртуального адреса (пара: идентификатор региона/VRN) либо в кэше трансляции, либо в регистрах трансляции, может привести к промахуTLB, если обращение к памяти делается через различныеVRN(даже если идентификаторы региона в двух регистрах региона являются идентичными). Некоторые модели процессоров могут также пропускать вTLBполеVRN, вызываяTLBпоиск при обращениях к памяти для поиска элемента не зависимого от битовVRN. Однако всем моделям процессора требуется, в процессе операций сброса и вставки кэша трансляции, сбросить все возможные трансляции, соответствующие идентификатору региона и виртуальному адресу, не зависимо от заданногоVRN.
Процессор может перестараться в сбросе (overpurge) элементов кэша трансляции, т.е. он может произвести сброс большего диапазона виртуальных адресов, чем требует перекрытие. Так как размеры станицы равны 2 в степени “size” и выровнены при этом на границу 2 в той же самой степени, то сброшенные элементы могут быть либо надмножеством тождественных, либо подмножеством указанного диапазона сброса.
Табл. 4.1 определяет поведение сброса различных инструкций вставки и сброса TLB.
Табл. 4.1. Поведение сброса инструкций TLB
|
Инструкции TLB |
Кэш трансляции |
Регистры трансляции | ||
|
инструкций |
данных |
инструкций |
данных | |
|
itc.i |
Нужно сброситьA |
Можно сброситьB |
Машинная проверкаC |
Не нужно сбросаD |
|
itr.i |
Нужно сбросить |
Можно сбросить |
Машинная проверка |
Не нужно сброса |
|
itc.d |
Можно сбросить |
Нужно сбросить |
Не нужно сброса |
Машинная проверка |
|
itr.d |
Можно сбросить |
Нужно сбросить |
Не нужно сброса |
Машинная проверка |
|
ptc.l |
Нужно сбросить |
Нужно сбросить |
Машинная проверка |
Машинная проверка |
|
ptc.g, ptc.ga (локальные)E |
Нужно сбросить |
Нужно сбросить |
Машинная проверка |
Машинная проверка |
|
ptc.g, ptc.ga (удаленные)E |
Нужно сбросить |
Нужно сбросить |
Не нужно сброса Не нужно машинной проверкиF |
Не нужно сброса Не нужно машинной проверки |
|
ptc.e |
Нужно сбросить |
Нужно сбросить |
Не нужно сброса |
Не нужно сброса |
|
ptr.i |
Нужно сбросить |
Можно сбросить |
Нужно сбросить |
Не нужно сброса |
|
ptr.d |
Можно сбросить |
Нужно сбросить |
Не нужно сброса |
Нужно сбросить |
Нужно сбросить: требуется, чтобы все частично или полностью перекрывающиеся трансляции были удалены до операции вставки или сброса.
Можно сбросить: показывает, что процессор может удалить частично или полностью перекрывающиеся трансляции до операции вставки или сброса. Однако, программное обеспечение не должно полагаться на сброс.
Машинная проверка: показывает, что процессор вызовет аварийный выход «Машинная проверка», если сделана попытка вставки или сброса частично или полностью перекрывающейся трансляции. Аварийный выход «Машинная проверка» не может возникнуть синхронно со своей операцией вставки или сброса TLB, но гарантированно возникнет не позднее операции сериализации последующей инструкции.
Не нужно сброса: процессор не удалит (или не проверит) частично или полностью перекрывающиеся трансляции до операции вставки или сброса. Программное обеспечение не должно полагаться на сброс.
ptc.g, ptc.ga: две формы глобальныхTLBсбросов, существуют в разновидностях: локальная и удаленная. Локальная форма показывает, чтоptc.gили ptc.gaбыли инициализированы на локальном процессоре. Удаленная форма показывает, что это является входнымTLBсигналом выключения для удаленного процессора.
Не нужно машинной проверки: Удаленные операции ptc.gили ptc.ga, не должны привести к сбросу локальных регистров трансляции. Удаленные операцииptc.gили ptc.ga, не должны привести к машинной проверке локального процессора.






ash


