- •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.6. Хэширование vhpt
Для программного обеспечения, процессор обеспечивает два метода определения адреса элемента VHPT: инструкция thash (Translation Hash – хэш трансляции) и регистр IHA (Interruption Hash Address – хэш адрес прерывания) описанный в разделе 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.
