- •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.3.3 Поведение инструкций с не реализованными адресами
Использование не реализованного адреса влияет на выполнение инструкции следующим образом:
Не спекулятивные обращения к памяти (не спекулятивные загрузки, сохранения и семафоры), следующие обращения без доступа: fc, tpa, lfetch.fault иprobe.fault, а также обязательныеRSEоперации, для нереализованных адресов приводят к ошибке «Не реализованный адрес данных».
Проверяются виртуальные адреса, используемые операциями сброса/вставки инструкций и данных, и если базовый адрес (регистр r3 при сбросе,IFAпри вставке) указывает на не реализованный виртуальный адрес, то вызывается ошибка «Не реализованный адрес данных». Размер страницы вставки или сброса игнорируется.
Спекулятивные загрузки для нереализованных адресов, всегда возвращают в приемный регистр бит NaT.
Безошибочная инструкция probe, для нереализованного адреса возвращает ноль в приемный регистр.
Инструкция tak, для нереализованного адреса возвращает единицу в приемный регистр.
Безошибочная инструкция lfetch, для нереализованного адреса, безмолвно игнорируется.
Активные RSEоперации для нереализованных адресов не дают ошибки.
Переход (принятый или пропущенный), rfi,либо выборка инструкций для нереализованного виртуального адреса приводит к ловушке «Не реализованный адрес инструкции» на переходе,rfi,либо последней выполненной инструкции.
Когда операции ptc.gилиptc.gaпомещают виртуальный адрес на шину, тогда виртуальный адрес расширяется знаком до полного 64-битного формата. Если приходptc.g илиptc.gaпредставляет базу виртуального адреса, которая указывает на не реализованный виртуальный адрес, то верхние (не реализованные) биты виртуального адреса теряются, а сброс выполняется с усеченным адресом.
4.4. Атрибуты памяти
Если разрешена виртуальная адресация, то с помощью TLBзадаются атрибуты памяти, которые определяют спекулятивность, кэшируемость и политики записи виртуального отображения физической страницы. Если разрешена физическая адресация, то атрибуты памяти поддерживаются так, как это описано в разделе 4.4.2 «Атрибуты памяти физической адресации».
4.4.1. Атрибуты памяти виртуальной адресации
Для обращений к виртуальной памяти, поле атрибутов памяти каждой виртуальной трансляции, описывает свойства физической памяти так, как это показано в табл. 4.10.
Табл. 4.10. Коды атрибутов памяти виртуальной адресации
Атрибут |
Мнемоника |
ma |
Кэшируемость |
Политика записи |
Спекулятивность |
КогерентностьA по отношению |
Обратная запись |
WB |
000 |
Да |
WB |
Не последовательная и спекулятивная |
WB, WBL |
Объединенная запись |
WC |
110 |
Нет |
Объединение |
Не МР когерентностьB | |
Не кэшируемо |
UC |
100 |
Нет |
Не объединение |
Последовательная и не спекулятивная |
UC,UCE |
Экспортная не кэшируемость |
UCE |
101 |
Нет | |||
РезервированоC |
|
001 |
|
|
|
|
Резервировано |
|
010 |
|
|
|
|
Резервировано |
|
011 |
|
|
|
|
NaTPage |
NaTPage |
111 |
Да |
нет |
Спекулятивная |
нет |
Столбец когерентности относится к мультипроцессорной (MP–multiprocessor) когерентности в нормальной, свободной от побочных эффектов памяти. Правила зависимости данных, заданные в разделе первого тома 4.4.7 «Упорядочение обращений к памяти», гарантируют однопроцессорную (uni-processor) когерентность для атрибутов памяти, перечисленных в каждой строке.
WCне являетсяMPкогерентной для любых операций с атрибутами памяти, но является однопроцессорно когерентной для операций с самим собой.
Этот атрибут памяти зарезервирован для использования программным обеспечением.
Атрибут UCEидентиченUC, за исключением выполнения инструкцииfetchadd. АтрибутUCEразрешает экспортирование инструкцииfetchaddза пределы процессора. Поддержка дляUCEявляется модельно зависимой: детальнее см. раздел 4.4.9 «Эффекты атрибутов памяти в инструкциях обращения к памяти».
Инструкции TLBвставки (itc, itr), которые пытаются вставить атрибуты зарезервированной памяти вTLB, вызывают ошибки «Зарезервированный регистр/поле». Работа внешней системы является не определенной, если программа вставляет атрибуты памяти, поддерживаемые процессором, но не поддерживаемые внешней системой.
Если программное обеспечение изменяет атрибуты памяти для страницы, то оно должно следовать требованиям перемещения атрибутов в разделе 4.4.11 «Требования перемещения атрибутов».
Рекомендуется, чтобы модели процессоров сообщали об аварийном выходе «Машинная проверка», если обнаружены следующие переименования атрибутов памяти:
Кэш попадание на не кэшируемой странице, не являющееся адресатом локальной или удаленной инструкции fc(см. раздел 4.4.9 «Эффекты атрибутов памяти в инструкциях обращения к памяти»).