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

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 был согласован.