- •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.1. Регистры трансляции (tr)
Секция регистров трансляции (TR) TLB, является полностью ассоциативным массивом, заданным для хранения трансляций, которые прямо управляются программным обеспечением. Программа может явно вставлять трансляцию в TR, с помощью указания номера слота регистра. Трансляция удаляется из TR, с помощью указания виртуального адреса, размера страницы и идентификатора региона. Регистры трансляции позволяют операционной системе «вставлять» (to pin) в TLB критические трансляции виртуальной памяти. Примеры включают пространства ввода/вывода, области ядерной памяти, буфера окон, таблицы страниц, коды чувствительных прерываний и т.п. Поскольку выборки инструкций для обработчиков прерываний выполняются с использованием виртуальной адресации, то диапазоны виртуальных адресов, содержащие программную трансляцию, пропускающую подпрограммы и критические последовательности прерываний, должны быть вставлены, либо, в противном случае, будут вызваны дополнительные ошибки TLB. Другие виртуальные отображения могут быть вставлены по соображениям эффективности.
Элементы помещаются в специальные TR-слоты, с помощью инструкции itr (Insert Translation Register – вставить регистр трансляции). Если трансляция вставлена, то процессор не будет заменять трансляцию для освобождения места для других трансляций. Локальные трансляции могут удаляться программно, запуском инструкции ptr (Purge Translation Register – сбросить регистр трансляции).
Вставки и сбросы TR могут явиться причиной удаления других TR и/или TC элементов (за деталями обратитесь к разделу 4.1.1.4). Перед вставкой элемента TR, программное обеспечение должно гарантировать, что для любых TR (включая записываемый TR) нет наложений трансляций, в противном случае, может быть вызван аварийный выход «Машинная проверка», либо процессор может продемонстрировать другое не определенное поведение. Элементы регистров трансляции могут быть удалены процессором из-за аппаратных или программных ошибок (errors). При обнаружении ошибок процессор может удалить элементы TR, а через аварийный выход «Машинная проверка» вызывается уведомление.
Имеется, по крайней мере, 8 инструкций и 8 TR-слотов данных, реализованных на всех моделях процессора. Дальнейшую информацию о количестве регистров трансляции реализованных в Itanium-процессоре следует посмотреть в документации специфицирующей процессор. Регистры трансляции поддерживают все реализованные размеры страниц и должны быть реализованы в одноуровневом, полностью ассоциативном массиве. Любой слот регистра может быть использован для указания отображения любого виртуального адреса. Регистры трансляции не доступны для прямого чтения.
В некоторых моделях процессора, регистры трансляции физически реализованы как подсекция массива кэша трансляции. TR-слоты, содержащие действительные (valid) значения, игнорируются процессором при вставке в TC. Однако, недействительные (invalid) TR-слоты (не использованные слоты) могут быть использованы процессором как TC элементы. В результате, программные вставки в предварительно недействительные элементы TR, могут сделать в том же слоте элемент TC недействительным.
Кроме того, реализация может расположить плавающую границу между TR и TC элементами в одной и той же структуре, где любой элемент выше границы рассматривается как TC, а любой элемент ниже границы рассматривается как TR. Для максимизации TC ресурсов, программа должна распределить начало непрерывных регистров трансляции со слота 0 и продолжать их вверх.
