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

2.8. Переходы

Кроме устранения переходов с помощью предикатов есть несколько механизмов для уменьшения доли ошибочных предсказаний переходов и стоимости оставшихся ошибочных предсказаний переходов. Эти механизмы обеспечивают способы, которыми компилятор передает процессору информацию об условиях перехода.

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

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

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

2.9. Ротация регистров

Модульное планирование цикла аналогично тому, как в аппаратном конвейере функциональное устройство начинает следующую итерацию с начала цикла до того, как закончится предыдущая итерация. Итерация раздроблена на стадии подобные стадиям, выполняемым на конвейере. Модульное планирование позволяет компилятору выполнить итерацию цикла скорее параллельно, чем последовательно. Параллельное выполнение множества итераций традиционно требует разворачивания циклов и программного переименования регистров. Продвинутая архитектура (например, Itanium) допускает переименование регистров обеспечивающих каждую итерацию своим собственным набором регистров, тем самым, устраняя потребность в разворачивании. Такой тип переименования регистров называется ротацией регистров (registerrotation). В результате программный конвейер может применяться для сокращения издержек для более широкой разновидности циклов, как для маленьких, так и для больших.

Аппаратная организация циклов

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

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

Например, для организации счетного циклаодиночной инструкции, в процессорахTMS320C5xприменяется специальный счетчик повторений (регистрRC–RepeatCounter), как только он загружен, очередная инструкция циклически повторяется с инкрементированиемRCдо тех пор, покаRC>0. Похожий механизм применяется и в других МП, но некоторые МП позволяют организоватьусловный циклодиночной инструкции, например в МПix86 циклическое повторение выполняется на инструкции имеющей специальный префикс повторения (REP), но здесь, префикс может указывать еще на дополнительное условие прекращения цикла. Таким условием может быть равенство (префиксREPE) либо не равенство (префиксREPNE) нулю очередного операнда выбранного этой инструкцией из памяти.

Для организации счетного повторения блока инструкций, в процессорахTMS320C5xиспользуются регистры начала (RSA–RepeatStartAddress) и конца (REA–RepeatEndAddress) блока инструкций. В эти регистры записываются адреса первой и последней инструкций в блоке повторения. На каждом шаге значение программного счетчикаPCсравнивается сREA: еслиPCстало большеREA, тоRSAпереписывается вPC, аRCдекрементируется. Похожие механизмы применяются и в других МП.

Средства условного повторения блока инструкцийвстречаются значительно реже, рассмотрим их на примере МПADSP-21xx. Здесь применяется специальное устройство «цикловой компаратор» (LoopComparator), который имеет свой отдельный стек, кроме того, свой отдельный стек имеет и программный счетчикPC. При входе в цикл адрес первой инструкции цикла заносится на вершину стекаPC, а адрес последней инструкции цикла и условие выхода заносятся на вершину стека циклового компаратора. Каждый такт, компаратор сравнивает адрес следующей инструкции с адресом последней инструкции цикла (значением на вершине стека компаратора), если достигнут конец тела цикла, то без дополнительных тактов совершается условный переход на начало цикла (значение на вершине стекаPC). Наличие стеков компаратора иPC, позволяет легко формировать вложенные циклы.

7