- •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.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) и любые другие явные предварительные выборки для не кэшируемых страниц, подавляются. Ни какие транзакции не инициализируются. Это позволяет программа запускать предварительную выборку инструкций, даже если программа не уверена, что память является кэшируемой.