- •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. Буфер трансляции адресов (tlb)
Термин «Буфер трансляции адресов» является смысловым переводом термина «TranslationLookasideBuffers», буквальным переводом которого является «Буфер преломления взгляда трансляции». Поскольку, по смыслуTLBэто таблица, то здесь и во всем документе, мы будем использовать понятие «ТаблицаTLB».
Как показано на рис. 4.3, процессор содержит две таблицы TLB:TLBинструкций (ITLB) иTLBданных (DTLB). КаждаяTLBобслуживает соответствующие запросы трансляции при обращениях к памяти инструкций и данных (включаяIA-32). Кроме того,TLBданных обслуживает запросы трансляции дляRSEиVHPTобходчика. Далее, таблицыTLBделятся на две подсекции: регистры трансляции (TR–TranslationRegister) и кэш трансляции (TC–TranslationCache).
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Рис. 4.3. Организация TLB
В оставшейся части этого документа, термин TLBотносится к объединению структур кэша трансляции и регистров трансляции для инструкций и данных.
Таблица TLBявляется локальным ресурсом процессора, инсталляция трансляции или сброс локального процессора не затрагиваетTLBдругих процессоров. Глобальный сбросTLBобеспечивает сброс трансляций для всех процессоров микропроцессорной системы, внутри когерентных доменов.
4.1.1.1. Регистры трансляции (tr)
Секция регистров трансляции (TR)TLB, является полностью ассоциативным массивом, заданным для хранения трансляций, которые прямо управляются программным обеспечением. Программа может явно вставлять трансляцию вTR, с помощью указания номера слота регистра. Трансляция удаляется изTR, с помощью указания виртуального адреса, размера страницы и идентификатора региона. Регистры трансляции позволяют операционной системе «вставлять» (topin) вTLBкритические трансляции виртуальной памяти. Примеры включают пространства ввода/вывода, области ядерной памяти, буфера окон, таблицы страниц, коды чувствительных прерываний и т.п. Поскольку выборки инструкций для обработчиков прерываний выполняются с использованием виртуальной адресации, то диапазоны виртуальных адресов, содержащие программную трансляцию, пропускающую подпрограммы и критические последовательности прерываний, должны быть вставлены, либо, в противном случае, будут вызваны дополнительные ошибкиTLB. Другие виртуальные отображения могут быть вставлены по соображениям эффективности.
Элементы помещаются в специальные TR-слоты, с помощью инструкцииitr(InsertTranslationRegister– вставить регистр трансляции). Если трансляция вставлена, то процессор не будет заменять трансляцию для освобождения места для других трансляций. Локальные трансляции могут удаляться программно, запуском инструкцииptr(PurgeTranslationRegister– сбросить регистр трансляции).
Вставки и сбросы 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 и продолжать их вверх.
