
- •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.2. Длинно форматный vhpTхэш
Длинно форматный VHPT– это одна большая непрерывная хэш таблица, которая располагается в регионе определенномPTA.base. Как указано на рис. 4.15, обходчикVHPTиспользует виртуальный адрес, предпочтительный размер страницы для региона и полеPTA.sizeдля вычисления хэш индекса в длинном форматеVHPT. ПолеPTA.base{63:15} задает базовый адрес и регионVHPTдлинного формата. ПолеPTA.sizeотражает размер хэш таблицы и обычно устанавливается в значение существенно меньшее, чем 264; точное значение основывается на требованиях эффективности операционной системы.
Mask = (1 << PTA.size) - 1; HPN = VA{IMPL_VA_MSB:0} u>> RR[VA{63:61}].ps; Hash_Index = tlb_vhpt_hash_long(HPN,RR[VA{63:61}].rid); // model-specific hash function VHPT_Offset = Hash_Index << 5; VHPT_Addr = (PTA.base{63:61} << 61) | (((PTA.base{60:15} & ~Mask{60:15}) | (VHPT_Offset{60:15} & Mask{60:15})) << 15) | VHPT_Offset{14:0}; |
Рис. 4.15. Хэш-функция длинного формата VHPT
Длинно форматная хэш функция (tlb_vhpt_hash-long) и функция генерации тега длинного формата, являются зависимыми от реализации. Однако, во всех моделях процессоров функции хэша и тега должны исключить номер виртуального региона (биты виртуального адреса {63:61}) из вычислений хэша и тега. Это гарантирует, что уникальный 85-битный глобальный виртуальный адрес хэшируется в тот же самыйVHPTхэш адрес, независимо от региона адрес которого отображается. Все реализации процессоров гарантируют, что старший бит тега (битti) является нулевым для всех допустимых тегов. Хэш индекс и тег, вместе должны уникально идентифицировать трансляцию. Процессор должен гарантировать, что индексы в хэшированной таблице, предпочтительный размер таблицы страниц региона и тег, заданный в индексированном элементе, могут быт использованы в обратной хэш функции, для уникального восстановления идентификатора региона и виртуального адреса, использованных для генерации индекса и тега. Это должно быть возможно для всех поддерживаемых размеров страницы, реализаций виртуальных адресов и допустимых значений идентификаторов регионов. Хэш функция обратима, если использовать хэш результат и производит все исходные биты кроме одного в результате обратной хэш функции. Самая простая хэш функция и обратная хэш функция – это просто побитовая операцияXOR(исключающее ИЛИ). Чтобы гарантировать уникальность, программа должна следовать таким правилам:
Программа должна использовать только один предпочтительный размер страниц для каждого уникального идентификатора региона в любой данный момент времени, в противном случае, работа процессора не определена.
Все теги для трансляций в данном регионе, должны быть созданы с предпочтительным размером страниц, назначенным для региона, в противном случае, работа процессора не определена.
Программа не позволяет иметь страницы в VHPT, которые меньше чем предпочтительный размер страниц для региона, в противном случае, работа процессора не определена. Программа может задать страницу с размером страницы большим, чем предпочтительный размер страниц вVHPT, но значения тегов для элементов представляющих эти размеры страниц, должны быть сгенерированы с использованием предпочтительного размера страниц, назначенного для региона.
Для повторного использования идентификатора региона с различающимся предпочтительным размером страницы, программа должна сначала убедиться, что VHPTне содержит доступных для вставки трансляций для этогоrid, сбросить все трансляции для этогоrid, от всех процессоров, которые возможно использовали его, а затем перезаписать регистр региона новым предпочтительным размером страницы.