- •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.7. Среда vhpt
Процессорный обходчик VHPT, может быть произвольно конфигурирован, чтобы искать VHPT трансляцию после неудачного TLB поиска инструкции или данных. Обходчик VHPT разрешен для различных типов обращений при следующих условиях:
Для данных и обращений без доступа (включая IA-32): PTA.ve=1, и RR[VA{63:61}].ve=1, и PSR.dt=1.
Для выборок инструкций (включая IA-32): PTA.ve=1, и RR[VA{63:61}].ve=1, и PSR.dt=1, и PSR.it=1, и PSR.ic=1.
Для обращений RSE: PTA.ve=1, и RR[VA{63:61}].ve=1, и PSR.dt=1, и PSR.rt=1.
Если обходчик не разрешен и делается попытка обращения к VHPT, то вызывается ошибка «Альтернативный промах TLB инструкций/данных». В остальной части этого раздела предполагается, что VHPT является разрешенной.
Регистры регионов должны поддерживать все реализованные размеры страниц, поэтому программа может использовать IHA, thash и ttag для управления VHPT. Инструкции thash и ttag определены для работы со всеми размерами страниц, поддерживаемыми кэшем трансляции, не зависимо от размеров страниц, поддерживаемых обходчиком VHPT. Программа должна гарантировать, что PTA инициализирован и сериализован до запуска ttag и thash, до разрешения обходчика VHPT или запуска обращения, которое может вызвать обходчик VHPT. Минимальный размер VHPT составляет 32К-байта (PTA.size=15), и операционная система должна гарантировать, что VHPT выровнена на естественную границу структуры, в противном случае, работа процессора не определена. Например, 64К-байтная таблица должна быть выронена на 64К-байтную границу.
Обращения обходчика VHPT к VHPT, выполняются на уровне привилегий 0, не зависимо от состояния PSR.cpl. Упорядочивание байтов VHPT определяется состоянием DCR.be. Если DCR.be=1, то обращения обходчика VHPT выполняются используя формат памяти по возрастанию, в противном случае, обращения обходчика VHPT выполняются по убыванию. Обращение VHPT длинного формата, согласуется с регистрами контрольных точек данных, как 32-байтовое обращение.
Таблица VHPT является доступной для процессора, только если VHPT отображается виртуально в областях памяти доступных для кэширования. Обходчик может обратиться к VHPT спекулятивно, т.е. могут делаться ссылки, которые не требуются в порядке выполнения программы. Любые VHPT или TLB ошибки, которые встречаются при поиске обходчиком VHPT, не сигнализируются до тех пор, пока ошибочная трансляция не потребуется в порядке выполнения программы. Если VHPT отображается в области не кэшируемой памяти, то не будет обращений к VHPT и все TLB промахи дадут в результате ошибку «Промах TLB инструкций/данных».
Обходчик VHPT аварийно прервет поиск и выставит ошибку «Промах TLB инструкций/данных», если делается попытка установить трансляции, которые имеют зарезервированные биты или коды, либо если трансляция отображающая VHPT, сделала одну из следующих ошибок: «Не представленная страница данных», «Потребление страницы NaT данных», «Промах ключа данных», «Разрешение ключа данных», «Бит доступа к данным», «Отладка данных». В любое время, по определяемым реализацией соображениям, обходчик VHPT может аварийно прервать поиск и выставить ошибку «Промах TLB инструкций/данных».
Процессорный обходчик VHPT требуется для чтения и вставки элементов VHPT из памяти атомарно (8-байтовый атом чтения и вставки для короткого формата, и 32-байтовый атом чтения и вставки для длинного формата). Некоторые реализованные стратегии для достижения этой атомарности делают следующее:
Если обходчик выполняет чтение VHPT с многократными кэш обращениями, которые не сделаны как атомарный модуль, и если модификация части элемента, который устанавливается, сделана между этими множественными чтениями, то обходчик должен аварийно прервать вставку и выставить ошибку «Промах TLB инструкций/данных».
Если обходчик выполняет чтение VHPT и вставку элемента в TLB как отдельные действия, а не как атомарный модуль, и если модификация части элемента, который устанавливается, сделана между чтением и вставкой, то обходчик должен либо аварийно прервать вставку и выставить ошибку «Промах TLB инструкций/данных», либо игнорировать модификацию и полностью восстановить старый элемент.
Если диапазон сбрасываемых адресов в операции сброса TLB (ptc.l, ptc.e, локальных или удаленных ptc.g или ptc.ga, ptr.i или ptc.d) накладывается на виртуальный адрес, который обходчик пытается вставить, то обходчик должен либо аварийно прервать вставку и выставить ошибку «Промах TLB инструкций/данных», либо отложить операцию сброса до тех пор, пока либо обходчик завершит вставку, либо аварийно прервет обход.
Механизм RSE может вызвать ошибку VHPT только на принудительной операции сливания/заливания RSE, как это определено для успешного выполнения инструкций alloc, loadrs, br.ret, rfi. Активные RSE операции могут генерировать спекулятивные обходы VHPT, если случившиеся ошибки не сообщены.
Ошибка «Промах TLB данных», произошедшая во время обхода VHPT, разрешена, но если PSR.ic=1, то она преобразуется в ошибку «Трансляции VHPT», как это определено в следующем разделе.
