Скачиваний:
70
Добавлен:
16.04.2013
Размер:
260.1 Кб
Скачать

5.4.3.3. Переходы while-циклов

На рис.5.2. показана блок-схема переходов while-циклов.

Есть несколько отличий в работе переходов while-циклов по сравнению с переходами счетных циклов. Переходуwhile-цикла не нуженLC, вместо этого поведение определяет предикат перехода. В течение фаз ядра и эпилога, предикат перехода равен единице и нулю, соответственно. В течение фазы пролога, предикат перехода может быть либо 0, либо 1, в зависимости от схемы используемой для программыwhile-цикла. Кроме того, после ротациир16всегда устанавливается в ноль. Причины этих различий связаны с сущностьюwhile-циклов и будут объяснены подробнее на примере в разделе далее.

wtop, wexit

PR[qp]?

==0 (prolog/epilog)

(специальные неразворачива-

(пролог, ядро)

==1

>1

EC?

==0

емые циклы)

(prolog/epilog)

(epilog)

==1

EC=EC

EC --

EC --

EC = EC

PR[63]=0

PR[63]=0

PR[63]=0

PR[63]=0

RRB --

RRB --

RRB --

RRB=RRB

wtop: переход

wtop: проскок

wexit :проскок

wexit :переход

Рис. 5.2. Поток выполнения инструкций wtopиwexit.

5.4.4. Краткий обзор терминологии

В предыдущих разделах представлены следующие термины:

Интервал инициализации (ИИ) – Initiation Interval (II). Количество тактов между началами последовательных исходных итераций в программном конвейерном цикле.

Пролог – Prolog. Первая фаза программного конвейерного цикла, в которой конвейер заполняется.

Ядро – Kernel. Вторая фаза программного конвейерного цикла, в которой конвейер полон.

Эпилог – Epilog. Третья фаза программного конвейерного цикла, в которой конвейер опустошается.

Исходная итерация – Source Iteration. Итерация первоначального исходного кода цикла.

Ядерная итерация – Kernel Iteration. Итерация цикла, осуществляемого программным конвейером.

Переменная индукции – Induction Variable. Значение, которое инкрементируется или декрементируется в каждой итерации один раз и на одно и то же значение.