Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПиП МПС(Ассемблер Левицкий экт 4) / MProc / M9 / Системная архитектура часть 4..doc
Скачиваний:
57
Добавлен:
16.04.2013
Размер:
751.1 Кб
Скачать

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