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

2.8. Переходы

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

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

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

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

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

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

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

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

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

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

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

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

7