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

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

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

Табл.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