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

3.4.1. Специальные случаи зависимости raw

Есть четыре разрешенных специальных случая зависимости RAWпо регистрам в пределах группы инструкций. Это такие специальные случаи: инструкцияalloc, инструкции проверки загрузки, инструкции затрагивающие ветвления и инструкцииid8.fillиst8.spill.

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

Примечание. Некоторые инструкции имеютRAWилиWAWзависимости от ресурсов не похожие на то какallocвлияет наCFM, и таким образом, не позволеные в той же самой группе инструкций послеalloc:flusrs, loadrs, пересылки изAR[BSPSTORE], пересылки изAR[RNAT],br.cexit, br.ctop, br.wtop, br.call, brl.call, br.ia, br.ret, clrrrb, cover, rfi.См. главу 5 «Ресурсы и семантики зависимости» в третьем томе. Также заметим, чтоallocтребуется для первой инструкции в группе инструкций.

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

Переход может читать регистры переходов и может неявно читать предикатные регистры, прикладные регистры LC,ECиPFS, а такжеCFM. Кроме регистровLC,ECи предикатных регистров, запись в любой из этих регистров с помощью инструкции не являющейся переходом, будет видна для последующего перехода в той же самой группе инструкций. Запись в предикатные регистры с помощью любой инструкции, не являющейся инструкцией с плавающей точкой, будет видна для последующего перехода в той же самой группе инструкций. Регистровая зависимостьRAWне разрешена в той же самой группе инструкций дляLCиEC. ДинамическиеRAWзависимости, где предикат пишется инструкцией с плавающей точкой, а читается переходом, тоже не разрешены в той же самой группе инструкций. С точки зрения регистровой зависимости, переходыbr.cond, br.call, brl.cond, brl.call, br.retи br.iaработают как другие инструкции, то есть, если их квалификационный предикат есть 0, то они не рассматриваются считывателями или записывателями других ресурсов. Переходыbr.cloop, br.cexit, br.ctop, br.wexit иbr.wtopявляются исключениями из этого правила - они всегда читают и пишут свои ресурсы не зависимо от значения своего квалификационного предиката. Косвенный переходbrpсчитается считывателем указанного регистраBR.

Инструкции id8.fillиst8.spill неявно обращаются к прикладному региструUNAT(коллекцииNaTпользователя). Для этих инструкций ограничение на динамические регистровые зависимости типаRAWпо отношению кUNATприменяется на уровне битов. Эти инструкции могут появляться в той же самой группе инструкций, если они не обращаются к одному и тому же битуUNAT. ЗависимостиUNATтипаRAWмежду инструкциямиid8.fillилиst8.spillи инструкциямиmov ar= илиmov =arобращающимися кUNATне должны происходить в пределах одной и той же группы инструкций.

Для целей ресурсных зависимостей CFMобрабатывается как отдельный ресурс.

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