- •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. Адресация и защита
Эта глава описывает ресурсы операционной системы для трансляции 64-битных виртуальных адресов в физические адреса, 32-битную виртуальную адресацию, виртуальное совмещение имен (aliasing), физическую адресацию, упорядочивание памяти и свойства физической памяти. Состав регистров необходимых для поддержки управления виртуальной памятью описан в главе 3, а глава 5 обеспечивает полную информацию об ошибках виртуальной памяти.
Примечание. Если не отмечено иное, то в этой главе, термин «прерывание» относится к прерыванию типа IVA (см. раздел 5.1 «Описание прерываний»).
Следующие ключевые свойства поддерживаются моделью виртуальной памяти.
Виртуальные регионы (Virtual Regions) определены для поддержки моделей современных операционных систем типа MAS (Multiple Address Space – множество адресных пространств), которые размещают каждый процесс в пределах уникального адресного пространства. Идентификаторы регионов, уникально отмечают отображения виртуального адреса для данного процесса.
Механизмы защиты доменов (Protection Domain) поддерживают модель единого адресного пространства (SAS – Single Address Space), где процессы выполняются одновременно в одном и том же адресном пространстве.
Структуры буфера трансляции адресов (TLB – Translation Lookaside Buffer) определены для поддержания высокопроизводительных систем страничного обмена виртуальной памяти. Программное обеспечение заполняет TLB, а обработчики защиты применяются для политик задержки трансляции и алгоритмов защиты для операционной системы.
Таблица виртуальных хэш страниц (VHPT – Virtual Hash Page Table), разработана для увеличения эффективности TLB. Таблица VHPT является расширением таблицы TLB, которая постоянно находится в памяти и может автоматически просматриваться процессором. Формат таблицы страниц операционной системы не диктуется жестко. Однако VHPT была разработана для того, чтобы собрать в единый узел две общие структуры трансляции: таблицу линейных виртуальных страниц и таблицу хэшированных страниц. Доступность VHPT и размер VHPT полностью находятся под программным управлением.
Разряженная (Sparse) 64-битная виртуальная адресация поддерживается для обеспечения больших массивов трансляции (включая множественность уровней иерархии, подобно иерархии кэшей), эффективной трансляции без поддержки обработки, множественности размеров страниц, закрепленных трансляций, а также для обеспечения механизмов совместного использования ресурсов таблиц страниц и TLB.
4.1. Виртуальная адресация
Очевидно, что для прикладных программ типа Itanium, виртуальная модель адресации основана на 64-битном плоском линейном виртуальном адресном пространстве. 64-битные общие регистры используются как указатели в этом адресном пространстве. 32-битные виртуальные линейные адреса IA-32 расширяются нулями в 64-битном виртуальном адресном пространстве.
Как показано на рис. 4.1, 64-битное виртуальное адресное пространство разделено на восемь виртуальных регионов по 261 байт каждый. Регион выбирается верхними тремя битами виртуального адреса. Каждый виртуальный регион связан с регистром региона, который задает 24-битный идентификатор региона (уникальный номер адресного пространства). Восемь из 224 виртуальных адресных пространств, являются параллельно доступными через 8 регистров регионов. Идентификатор региона может рассматриваться в качестве старших адресных битов 85-битного глобального адресного пространства для модели единого адресного пространства, либо как уникальный идентификатор для модели множественного адресного пространства.
-
Виртуальный адрес
63
0
3
8 виртуальных регионов
1
0
261 байтов на регион
от 4K to 256M страниц
224 виртуальных адресных пространств
Рис. 4.1. Виртуальные адресные пространства.
С помощью назначения последовательных идентификаторов регионов, регионы могут быть объединены в большие 62-х, 63-х или 64-х битные пространства. Например, операционная система может создать 62-битный регион для данных личного процесса, 62-битный регион для ввода/вывода, а также 63-битный регион для глобальных общих данных. Заданные по умолчанию размеры страниц и политики трансляции, могут назначаться для каждого виртуального региона.
На рис. 4.2 показан процесс отображения виртуального адреса в физический адрес. Каждый виртуальный адрес состоит из трех полей: номера виртуального региона, номера виртуальной страницы и смещения в странице. Из старших трех битов выбирается номер виртуального региона (VRN – Virtual Region Number). Младшие значащие биты формируют смещение в странице. Остальные биты содержат номер виртуальной страницы (VPN – Virtual Page Number). Биты VRN не включены в поле VPN. Биты смещения проходят через процесс трансляции без изменения. Точное количество битов занимаемых смещением и VPN изменяется в зависимости от размера страницы используемого в виртуальном отображении.
При обращении к памяти (любом обращении, кроме вставки или сброса), биты VRN выбирают один из восьми регистров региона, который содержит идентификатор региона (RID – Region Identifier), далее в TLB ищется элемент трансляции с соответствующими значениями VPN и RID. Значение VRN может дополнительно использоваться для поиска соответствующей трансляции при обращении к памяти (любом обращении, кроме вставки или сброса – см. разделе 4.1.1.4). Если соответствующий элемент трансляции найден, то физический номер страницы (PPN – Physical Page Number) элемента, соединенный с битами смещения в странице, формирует физический адрес. Соответствующие трансляции квалифицируются, постранично гранулированными проверками прав доступа уровня привилегий и необязательными проверками защиты домена, путем верификации ключа трансляции, содержащегося в наборе ключей защиты и предоставляющего разрешения чтения, записи и выполнения.
Если требуемая трансляция не является резидентной в TLB, то процессор может произвольно искать VHPT структуру в памяти для требуемой трансляции и устанавливать элемент в TLB. Если требуемый вход не обнаружен в TLB и/или VHPT, то процессор вызывает ошибку «Промах TLB» для запроса того, чтобы операционная система поддержала трансляцию. После того, как операционная система установила трансляцию в TLB и/или VHPT, инструкция, на которой была вызвана ошибка, может быть перезапущена и выполнение продолжено.
Виртуальная адресация допускается для обращений инструкций при PSR.it=1, для обращений данных при PSR.dt=1, а для доступа к стеку регистров при PSR.rt=1.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Рис. 4.2. Схема трансляции виртуальных адресов при обращениях.

ash
4