
- •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.6. Хэширование vhpt
Для программного обеспечения, процессор обеспечивает два метода определения адреса элемента VHPT: инструкцияthash(TranslationHash– хэш трансляции) и регистрIHA(InterruptionHashAddress– хэш адрес прерывания) описанный в разделе 3.3.5.9. Виртуальный адрес элементаVHPTпомещается в регистрIHAпри активизации трансляцииVHPTили ошибкиTLB. В длинном формате,IHAможет быть использован как стартовый адрес для сканирования дополнительных конфликтных цепочек (ассоциативностей) определенных операционной системой, либо для выполнения программного поиска. Инструкцияthashиспользуется для генерации адреса элементаVHPTвне обработчиков прерываний и обеспечивает точно такую же хэш-функцию, которая используется при вычисленииIHA.
Инструкция thashпроизводит адрес элементаVHPTдля данного виртуального адреса и идентификатор региона, в зависимости от установки битаPTA.vf. ЕслиPTA.vf=0, то инструкцияthashвозвращает индекс короткого формата базирования региона, как описано в разделе 4.1.6.1 «Индекс короткого форматаVHPTбазирования региона». ЕслиPTA.vf=1, то инструкцияthashвозвращает хэш длинного формата , как описано в разделе 4.1.6.2 «Хэш длинного форматаVHPT». Инструкцияttagполезна только для хэширования длинного формата, она генерирует уникальный 64-битныйti/tagидентификатор, который будет проверен процессорнымVHPTобходчиком при просмотре данного виртуального адреса и идентификатора региона. Программное обеспечение должно использовать инструкциюttagи либо инструкцию thash, либо регистрIHA, при формировании тегов трансляции и хэш адресов для длинного форматаVHPT. Эти ресурсы включают в себя, задаваемые реализацией, функциональные возможности хэширования длинного формата и улучшают эффективность.
4.1.6.1 Индекс короткого формата vhpTбазирования региона
В коротком формате базирования региона, таблица линейных страниц для каждого региона находится непосредственно в упомянутом регионе. В результате, VHPTкороткого формата состоит из отдельных по-регионных таблиц страниц, которые закрепляются в каждой области с помощьюPTA.base{60:15}. Для регионов, в которыхVHPTразрешена, операционная система требуется для обслуживания по-регионных таблиц линейных страниц. Как определено на рис. 4.14, ОбходчикVHPTиспользует виртуальный адрес, предпочтительный размер страницы для региона и полеPTA.sizeдля вычисления линейного индекса в коротком форматеVHPT.
Mask = (1 << PTA.size) - 1; VHPT_Offset = (VA{IMPL_VA_MSB:0} u>> RR[VA{63:61}].ps) << 3; VHPT_Addr = (VA{63:61} << 61) | (((PTA.base{60:15} & ~Mask{60:15}) | (VHPT_Offset{60:15} & Mask{60:15})) << 15) | VHPT_Offset{14:0}; |
Рис. 4.14. Функция индекса короткого форматаVHPTбазирования региона
Поле размера короткого формата VHPT(PTA.size) задает размер отображаемого виртуального адресного пространства. В коротком формате, максимальный архитектурный размер таблицы составляет 252байт на регион. Для отображения полного региона 261байт, при использовании 4К-байтных страниц, требуется 2(61-12)=249страниц. ЭлементVHPTкороткого формата занимает 8 байт = 23байт. В результате, максимальный размер таблицы составляет 2(61-12+3)=252байт на регион. Если короткий формат используется для отображения адресного пространства меньшего чем 261, то может быть использована меньшая таблица короткого формата (PTA.size< 52). Отображение адресного пространства 2n, с помощью 4К-байтных страниц, требует, как минимум,PTA.size=(n-9).
В коротком формате инструкция thashвозвращает индекс короткого форматаVHPTбазирования региона заданный на рис. 4.14. Инструкцияttagне используется с коротким форматом. Ошибки промахаTLBи трансляцииVHPTзаписывают регистрIHAиндекс короткого форматаVHPTбазирования региона заданный на рис. 4.14.