- •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.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, от всех процессоров, которые возможно использовали его, а затем перезаписать регистр региона новым предпочтительным размером страницы.
