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

4.4.10. Эффекты атрибутов памяти в предварительных и проверяемых загрузках

Поведение ALATпредварительных и проверяемых загрузок зависит от атрибута памяти страницы, к которой обращается загрузка. Окончания предварительных и проверяемых загрузок не являются подсказками.

Все спекулятивные страницы имеют идентичное поведение относительно ALAT. Продвинутые загрузки для спекулятивных страниц, всегда выделяют элементALATдля регистра, размера и адреса кортежа (tuple), заданного предварительной загрузкой. Спекулятивные предварительные загрузки выделяют элементALAT, если спекулятивная загрузка успешна (т.е. нет задержанного исключения); если спекулятивная предварительная загрузка приводит к задержанному исключению, то любой соответствующий элементALATудаляется и не выделяется никакого новогоALATэлемента. Проверки загрузок с окончаниями очистки (ld.c.clr, ld.c.clr.acq, ldf.c.clr), приALATпопадании– удаляют соответствующий элементALATпри попадании, а приALATпромахе – не меняют состояниеALAT. Проверки загрузок с окончаниями «без очистки» (ld.c.nc, ldf.c.nc) выделяют элементALATпри промахеALAT. ПриALATпопадании,ALATне изменяется, если обнаружено точное соответствиеALAT(регистр, адрес и размер); новыйALATэлемент с регистром, адресом и размером, указанными проверкой загрузки без очистки, может быть выделен, если обнаружено частичное соответствиеALAT(соответствие в регистре).

Предварительные загрузки (спекулятивный и не спекулятивный варианты) для не спекулятивных страниц, всегда удаляют любой соответствующий элемент ALAT. Проверки загрузок для не спекулятивных страниц, при промахахALAT, никогда не выделяют элементALAT, даже в случае проверки загрузки без очистки. ПопаданияALATпри проверках загрузки для не спекулятивных страниц (которые могут происходить, если предшествующая предварительная загрузка обращалась к этой странице через спекулятивный атрибут памяти) приводят к неопределенному поведению. Поэтому, при изменении существующей страницы из спекулятивного в не спекулятивное (или наоборот), программное обеспечение должно гарантировать, что аннулируются элементыALATсоответствующие этой странице.

Страницы с ограниченной спекулятивностью ведут себя, как не спекулятивные страницы по отношению к спекулятивным предварительным загрузкам, и ведут себя, как спекулятивные страницы по отношению ко всем другим предварительным и/или проверочным загрузкам.

Табл. 4.16 описывает поведение предварительных и проверочных загрузок для различных спекулятивных атрибутов памяти.

Табл. 4.16. ALATповедение в безошибочных предварительных/проверочных загрузках

Атрибуты памяти

Реакция

ld.sa

Реакция ld.a

Реакция ld.c.clr, ld.c.clr.acq, ldf.c.clr

Реакция

ld.c.nc, ldf.c.nc

Не NaT

NaT

ALATпопадание

ALATпромах

ALATпопадание

ALATпромах

Спекулятивная

Выделяет

Удаляет

Выделяет

Удаляет

nop

Не меняетA

Выделяет

Не спекулятивная

Нет

Удаляет

Удаляет

Не определен

nop

Не определен

Не должен выделять

Ограниченная спекулятивность

Нет

Удаляет

Удаляет

Удаляет

nop

Не меняетA

Выделяет

  1. Может выделить новый элемент ALAT, если размер и/или адрес отличается от соответствующихld.aилиld.sa, чей элементALATбыл согласован.