- •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. Адресация и защита
Эта глава описывает ресурсы операционной системы для трансляции 64-битных виртуальных адресов в физические адреса, 32-битную виртуальную адресацию, виртуальное совмещение имен (aliasing), физическую адресацию, упорядочивание памяти и свойства физической памяти. Состав регистров необходимых для поддержки управления виртуальной памятью описан в главе 3, а глава 5 обеспечивает полную информацию об ошибках виртуальной памяти.
Примечание. Если не отмечено иное, то в этой главе, термин «прерывание» относится к прерыванию типаIVA(см. раздел 5.1 «Описание прерываний»).
Следующие ключевые свойства поддерживаются моделью виртуальной памяти.
Виртуальные регионы (VirtualRegions) определены для поддержки моделей современных операционных систем типаMAS(MultipleAddressSpace– множество адресных пространств), которые размещают каждый процесс в пределах уникального адресного пространства. Идентификаторы регионов, уникально отмечают отображения виртуального адреса для данного процесса.
Механизмы защиты доменов (ProtectionDomain) поддерживают модель единого адресного пространства (SAS–SingleAddressSpace), где процессы выполняются одновременно в одном и том же адресном пространстве.
Структуры буфера трансляции адресов (TLB– Translation Lookaside Buffer) определены для поддержания высокопроизводительных систем страничного обмена виртуальной памяти. Программное обеспечение заполняетTLB, а обработчики защиты применяются для политик задержки трансляции и алгоритмов защиты для операционной системы.
Таблица виртуальных хэш страниц (VHPT–VirtualHashPageTable), разработана для увеличения эффективности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 байтов на регион
от 4Kto256Mстраниц
224 виртуальных адресных пространств
Рис. 4.1. Виртуальные адресные пространства.
С помощью назначения последовательных идентификаторов регионов, регионы могут быть объединены в большие 62-х, 63-х или 64-х битные пространства. Например, операционная система может создать 62-битный регион для данных личного процесса, 62-битный регион для ввода/вывода, а также 63-битный регион для глобальных общих данных. Заданные по умолчанию размеры страниц и политики трансляции, могут назначаться для каждого виртуального региона.
На рис. 4.2 показан процесс отображения виртуального адреса в физический адрес. Каждый виртуальный адрес состоит из трех полей: номера виртуального региона, номера виртуальной страницы и смещения в странице. Из старших трех битов выбирается номер виртуального региона (VRN–VirtualRegionNumber). Младшие значащие биты формируют смещение в странице. Остальные биты содержат номер виртуальной страницы (VPN–VirtualPageNumber). БитыVRNне включены в полеVPN. Биты смещения проходят через процесс трансляции без изменения. Точное количество битов занимаемых смещением иVPNизменяется в зависимости от размера страницы используемого в виртуальном отображении.
При обращении к памяти (любом обращении, кроме вставки или сброса), биты VRNвыбирают один из восьми регистров региона, который содержит идентификатор региона (RID–RegionIdentifier), далее вTLBищется элемент трансляции с соответствующими значениямиVPNиRID. ЗначениеVRNможет дополнительно использоваться для поиска соответствующей трансляции при обращении к памяти (любом обращении, кроме вставки или сброса – см. разделе 4.1.1.4). Если соответствующий элемент трансляции найден, то физический номер страницы (PPN–PhysicalPageNumber) элемента, соединенный с битами смещения в странице, формирует физический адрес. Соответствующие трансляции квалифицируются, постранично гранулированными проверками прав доступа уровня привилегий и необязательными проверками защиты домена, путем верификации ключа трансляции, содержащегося в наборе ключей защиты и предоставляющего разрешения чтения, записи и выполнения.
Если требуемая трансляция не является резидентной в TLB, то процессор может произвольно искатьVHPTструктуру в памяти для требуемой трансляции и устанавливать элемент вTLB. Если требуемый вход не обнаружен вTLBи/илиVHPT, то процессор вызывает ошибку «ПромахTLB» для запроса того, чтобы операционная система поддержала трансляцию. После того, как операционная система установила трансляцию вTLBи/илиVHPT, инструкция, на которой была вызвана ошибка, может быть перезапущена и выполнение продолжено.
Виртуальная адресация допускается для обращений инструкций при PSR.it=1, для обращений данных приPSR.dt=1, а для доступа к стеку регистров приPSR.rt=1.
|
Рис. 4.2. Схема трансляции виртуальных адресов при обращениях.