- •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.4.3. Атрибуты кэшируемости и когерентности
Страница может быть либо кэшируемая (cacheable), либо не кэшируемая (uncacheable). Если страница помечена как кэшируемая, то процессор разрешает разместить локальную копию соответствующей физической памяти во всех уровнях иерархии процессорной памяти и кэша. Размещение может быть изменено путем указания в инструкциях обращающихся к памяти, подсказок управления кэшем.
Страница, которую кэшировали, является когерентной с памятью, т.е. процессор и система памяти гарантируют, что для каждого процессора здесь есть непротиворечивый образ памяти. Процессоры, поддерживающие когерентность мультипроцессорного кэша, основываются на физических адресах между всеми процессорами в когерентном домене (сильно связанные (tightly coupled) микропроцессоры). Когерентность поддерживается в присутствии виртуальных псевдонимов, хотя, чтобы избежать любой возможной деградации эффективности, программе рекомендуется использовать псевдонимы обособленно, на расстоянии кратном 1М.
Для кода типа Itanium, процессоры не требуются для обслуживания когерентности между кэшами данных и инструкций локального процессора; т.е. локально инициируемые сохранения типа Itanium, не могут наблюдаться с помощью локального кэша инструкций. Но, процессоры требуются в случае кода типа IA-32, для обслуживания когерентности между кэшами данных и инструкций локального процессора. Также, не требуются кэши инструкций для когерентности мультипроцессорного набора инструкций типа Itanium, порожденного обращениями к памяти. Но, кэши инструкций требуются для когерентности мультипроцессорного набора инструкций типа IA-32, порожденного обращениями к памяти. Процессор должен гарантировать, что транзакции от других агентов ввода/вывода (таких как DMA), являются физически когерентными с кэшем инструкций и данных.
Для не кэшируемых обращений, процессор обеспечивает не когерентные механизмы; система памяти должна убедиться, что содержимое образа памяти видимо каждому процессору. См. раздел 4.4.5 «Атрибут объединения» для описания когерентности для атрибута объединенной памяти.
4.4.4. Атрибут политики записи кэша.
Кэшируемым страницам с отложенной записью (write back) нужно только модифицировать процессорную копию расположения физической памяти; записанным данным нужно только быть переданными в систему памяти при изменении места процессорной копии, либо запускается инструкция fc (flush cache – смыть кэш), чтобы смыть виртуальную адресацию. Запись строки кэша в память может быть отложена, если без ошибки выполнилась, указывающая на эту строку инструкция – сохранения, семафорная (успешная либо нет), ld.bias, принудительное сохранение RSE или lfetch с подсказкой .excl. Эти события допускают отложенную запись. Синхронизирующая инструкция fc, запрещает последующую отложенную запись (после того как строка будет смыта).
Как описано в разделе первого тома 4.4.5.3.2 «Аннулирование элементов ALAT», платформо видимое удаление строк кэша из кэшей процессоров (например, откладывание записи строк кэша или платформо видимые замены) вызывает аннулирование соответствующих элементов ALAT.
