Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MProc / M9 / Архитектура часть 4..doc
Скачиваний:
18
Добавлен:
16.04.2013
Размер:
430.08 Кб
Скачать

4.4.5.5. Окончания инструкций для управления alat

Чтобы помочь компилятору управлять выделением и освобождением элементов ALATсуществует по два варианта проверок предварительных загрузок и проверок загрузок: варианты с очисткой (chk.a.clr, ld.c.clr, ld.c.clr.acq, ldf.c.clr, ldfp.c.clr) и варианты без очистки (chk.a.nc, ld.c.nc, ldf.c.nc, ldfp.c.nc).

Варианты с очисткой используются тогда, когда компилятор знает, что элемент ALATне будет использоваться снова и хочет явно удалить элемент. Это позволяет указать программе, когда элементы не нужны, тем самым, снижая вероятность того, что будет выдавлен полезный вход из-за того, что все входы распределены в текущий момент времени.

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

Варианты без очистки для обоих типов проверок спекуляции по данным действуют как подсказки для процессора, что существующий элемент должен обслуживаться в ALATили, что новый элемент должен быть выделен, если вALATнет совпадающего элемента. Такие варианты могут использоваться в циклах для проверки предварительных загрузок, которые полагались компилятором независящими от цикла и удалялись им из цикла. Такое поведение гарантирует, что если проверка загрузки неудачна на одной итерации, то необязательно, что проверка загрузки будет неудачной на всех последующих итерациях. Всякий раз, когда новый элемент вставляется вALATили когда содержимое элемента изменяется, информация, записываемая вALAT, использует только информацию из проверки загрузки, но не использует никакой информации оставшейся от предыдущего элемента. Вариант без очисткиchk.a, chk.a.nc,не выделяет элементы, а окончание ‘nc’ действует как подсказка процессору, что элемент не должен очищаться.

В таблицах 4.16 и 4.17 собраны состояния и инструкции связанные со спекуляцией по данным.

Табл.4.16. Состояния, связанные со спекуляцией по данным.

Структура

Функция

ALAT

Таблица адресов предварительной загрузки (Advancedloadaddrestable)

Табл.4.17. Инструкции, связанные со спекуляцией по данным.

Мнемоника

Действие

ld.a, ldf.a, ldfp.a

Предварительные загрузки GRиFR

st, st.rel, st.spill, stf, stf.spill

Сохранение GRиFR

cmpxchg, fetchadd, xchg

Семафоры GR

ld.c.clr, ld.c.clr.acq, ldf.c.clr, ldfp.c.clr

Проверки загрузки GRиFR, с очисткой при попадании вALAT

ld.c.nc, ldf.c.nc, ldfp.c.nc,

Проверки загрузки GRиFR, выделяемые заново при промахах вALAT

ld.sa, ldf.sa, ldfp.sa

Спекулятивные предварительные загрузки GRиFR

chk.a.clr, chk.a.nc

Проверки предварительных загрузок GRиFR

invala

Аннулирование всех элементов ALAT

invala.e

Аннулирование отдельных элементов ALATдляGRилиFR

Соседние файлы в папке M9