- •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.8. Атрибут «не вещь» (NaTPage)
Атрибут NaTPage предотвращает не спекулятивные обращения к странице и гарантирует, что спекулятивные обращения к странице всегда откладывают ошибку «Употребление страницы NaT данных». Однако, как описано в разделе 4.4.6 «Спекулятивные атрибуты», процессор может запустить обращения к памяти для NaTPage. В результате все NaTPage должны будут вернуться с помощью правильной физической страницы.
Спекулятивные и спекулятивные предварительные загрузки в страницы отмеченные как NaTPage, вызывают индикатор отложенного исключения (NaT или NaTVal) для записи в приемный регистр загрузки, а обращение к памяти аварийно прерывается. Однако, выполняются все другие эффекты инструкций загрузки, такие как пост-инкремент. Выборки инструкций, загрузки, сохранения и семафоры (включая IA-32), но исключая спекулятивные Itanium загрузки и страницы отмеченные как NaTPage, вызывают ошибку «Употребление страницы NaT».
4.4.9. Эффекты атрибутов памяти в инструкциях обращения к памяти
Атрибуты памяти влияют на следующие Itanium инструкции.
ldfe, stfe: Не является обязательной аппаратная поддержка для 10-байтовых обращений к странице, не являющейся кэшируемой страницей с политикой отложенной записи, ни NaTPage страницей. В реализациях процессора, которые не поддерживают такие обращения, при попытке не поддерживаемого обращения, вызывается ошибка «Обращение к не поддерживаемым данным».
Для расширенных загрузок с плавающей точкой, ошибка возникает только в следующих разновидностях инструкций: ldfe, ldfe.a, ldfe.c.nc, ldfe.c.clr. Разновидности спекулятивного управления инструкции ldfe, у которых адресуемые страницы не являются кэшируемыми с политикой отложенной записи, всегда откладывают ошибку. За деталями обратитесь к разделу 5.5.5 «Откладывание ошибок спекулятивных загрузок».
cmpxchg и xchg: Эти инструкции поддерживаются только для кэшируемых страниц с политикой отложенной записи. Обращения cmpxchg и xchg к NaTPage вызывают ошибку «Употребление страницы NaT данных». Обращения cmpxchg и xchg к страницам с другими атрибутами памяти вызывают ошибку «Обращение к не поддерживаемым данным».
fetchadd: Инструкция fetchadd может быть выполнена успешно только если обращается к кэшируемой странице с политикой отложенной записи, либо – к UCE странице. Обращения fetchadd к NaTPage вызывают ошибку «Употребление страницы NaT данных». Обращения к страницам с другими атрибутами памяти вызывают ошибку «Обращение к не поддерживаемым данным». При обращении к кэшируемой странице с политикой отложенной записи, операция атомарной выборки и сложения обеспечивается в соответствии с протоколом когерентности процессорного кэша. Для высоко конкурирующих семафоров, транзакции строк кэша требующиеся для гарантий атомарности, могут ограничить эффективность. В таких случаях семафорный механизм выборки и сложения может улучшить эффективность. Атрибут UCE позволяет процессору «экспортировать» операцию fetchadd в платформу, как атом «выборки и сложения», если это поддерживается процессором и платформой. Эффекты экспортированной операции fetchadd являются платформо зависимыми. Если экспорт инструкций fetchadd не поддерживается процессором, то инструкция fetchadd для UCE страницы, вызовет ошибку «Обращение к не поддерживаемым данным».
Инструкции сливания кэша (fc) всегда должны быть ретранслированы на другие процессоры, не зависимо от атрибутов памяти в локальном процессоре. Это допустимо использовать для некэшируемой памяти для любого правильного адреса, который используется как адресат fc. Это поведение требуется для разрешения пересылок от одного атрибута памяти к другому, и в случае различных атрибутов памяти ассоциируется с адресом в другом процессоре.
Инструкции предварительные выборки (lfetch) и любые другие явные предварительные выборки для не кэшируемых страниц, подавляются. Ни какие транзакции не инициализируются. Это позволяет программа запускать предварительную выборку инструкций, даже если программа не уверена, что память является кэшируемой.
