- •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.4.10. Эффекты атрибутов памяти в предварительных и проверяемых загрузках
Поведение ALATпредварительных и проверяемых загрузок зависит от атрибута памяти страницы, к которой обращается загрузка. Окончания предварительных и проверяемых загрузок не являются подсказками.
Все спекулятивные страницы имеют идентичное поведение относительно ALAT. Продвинутые загрузки для спекулятивных страниц, всегда выделяют элементALATдля регистра, размера и адреса кортежа (tuple), заданного предварительной загрузкой. Спекулятивные предварительные загрузки выделяют элементALAT, если спекулятивная загрузка успешна (т.е. нет задержанного исключения); если спекулятивная предварительная загрузка приводит к задержанному исключению, то любой соответствующий элементALATудаляется и не выделяется никакого новогоALATэлемента. Проверки загрузок с окончаниями очистки (ld.c.clr, ld.c.clr.acq, ldf.c.clr), приALATпопадании– удаляют соответствующий элементALATпри попадании, а приALATпромахе – не меняют состояниеALAT. Проверки загрузок с окончаниями «без очистки» (ld.c.nc, ldf.c.nc) выделяют элементALATпри промахеALAT. ПриALATпопадании,ALATне изменяется, если обнаружено точное соответствиеALAT(регистр, адрес и размер); новыйALATэлемент с регистром, адресом и размером, указанными проверкой загрузки без очистки, может быть выделен, если обнаружено частичное соответствиеALAT(соответствие в регистре).
Предварительные загрузки (спекулятивный и не спекулятивный варианты) для не спекулятивных страниц, всегда удаляют любой соответствующий элемент ALAT. Проверки загрузок для не спекулятивных страниц, при промахахALAT, никогда не выделяют элементALAT, даже в случае проверки загрузки без очистки. ПопаданияALATпри проверках загрузки для не спекулятивных страниц (которые могут происходить, если предшествующая предварительная загрузка обращалась к этой странице через спекулятивный атрибут памяти) приводят к неопределенному поведению. Поэтому, при изменении существующей страницы из спекулятивного в не спекулятивное (или наоборот), программное обеспечение должно гарантировать, что аннулируются элементыALATсоответствующие этой странице.
Страницы с ограниченной спекулятивностью ведут себя, как не спекулятивные страницы по отношению к спекулятивным предварительным загрузкам, и ведут себя, как спекулятивные страницы по отношению ко всем другим предварительным и/или проверочным загрузкам.
Табл. 4.16 описывает поведение предварительных и проверочных загрузок для различных спекулятивных атрибутов памяти.
Табл. 4.16. ALATповедение в безошибочных предварительных/проверочных загрузках
|
Атрибуты памяти |
Реакция ld.sa |
Реакция ld.a |
Реакция ld.c.clr, ld.c.clr.acq, ldf.c.clr |
Реакция ld.c.nc, ldf.c.nc | |||
|
Не NaT |
NaT |
ALATпопадание |
ALATпромах |
ALATпопадание |
ALATпромах | ||
|
Спекулятивная |
Выделяет |
Удаляет |
Выделяет |
Удаляет |
nop |
Не меняетA |
Выделяет |
|
Не спекулятивная |
Нет |
Удаляет |
Удаляет |
Не определен |
nop |
Не определен |
Не должен выделять |
|
Ограниченная спекулятивность |
Нет |
Удаляет |
Удаляет |
Удаляет |
nop |
Не меняетA |
Выделяет |
Может выделить новый элемент ALAT, если размер и/или адрес отличается от соответствующихld.aилиld.sa, чей элементALATбыл согласован.
