Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 437стр.doc
Скачиваний:
48
Добавлен:
15.06.2014
Размер:
9.54 Mб
Скачать

1011X j|I 2 - все параллельно

I0&I J |12 ~ сперва 10, затем параллельно \ и 12

1

2 — сперва параллельно 10и Il7 затем и 12

10 & \ &I 2 - все последовательно

Слюй 4)

Printed with FinePrint- purchase atwww.fineprint.com

-б*

Основная идея - компилятор должен переупорядочивать команды , проверять нет т взаимозависимостей , проверять доступность функциональных блоков и т.п. вместо аппаратуры .

Плюсы - экономия транзисторов на кристалле , компиляция производится только один раз, оптимизация программы может производится сколь угодно долго .

Дополнительные новшества : Предикация Спекулятивная загрузка

Слайд 41

ft -в\

Предикация

Обработка условных переходов - основная проблема .

В обычных ВЧ все поступившие в ЦП команды выполняются . В архитектуре с предикацией - команды содержат условия , выполнять команду или нет.

Плюс - исчезает множество условных переходов . Пример : if(Rl==0)R2=R3 ;

CMPR1,O BNEL1 MOVR2,R3 LL :

CMOVZR2,R3,R1 CMQ/Z - проверяет равен пл третий регистр О

Слайд 42

Printed with FinePrint- purchase atwww.fineprint.com

-б*

Если CMOVZ - проверяет равен /м третий регистр О, то СМСММ - не равен т третий регистр 0. Тогда весь код then else может быть заменён на последовательность операторов :

if (R-l ==0){

CMPR1.0

CMOVZ R2.R3.R1

R2 = R3;

BNE L1

CMOVZ R4,R5.R1

R4 = R5;

MOV R2.R3

CMOVN R6.R7.R1

} else {

MOV R4.R5

CMOVN R8.R9.R1

R6 = R7;

BR L2

R8 = R9:

L1: MOVR6,R7

}

MOV R8.R9

L2:

(a)

(b)

(c)

Единственное требование , условие должно быть известно к моменту когда результат необходимо помещать в вьк . регистры (т.е. к концу конвейера ).

Сяюд

ft -в\

В R -64 вое команды предикатны !64 однобитных предикатных регистра предназначены для установления условий .

if (R1 == R2)

CMPR1

,R2

CMPEQ R1

,R2,P4

R3 = R4 +

R5;

BNEL1

<P4> ADD

R3,R4,R5

else

MOVR3

.R4

<P5> SUB

R6.R4.R5

R6 = R4 -

R5

ADD R3,

R5

BR L2

L1: MOVR6

.R4

SUB R6,

R5

L2:

(b)

CMPEQ сравнивает два регистра и уст -ет F4 в 1 либо 0f a парный регистр F5 в противоположное значение .

Команды с предикацией могут перемещаться в конвейер без задержек и проверок . Проверка условий - в конце^

^

Printed with FinePrint- purchase atwww.fineprint.com

-б*

Спекулятивная загрузка - загрузка операнда из памяти до того как он может понадобиться .

Компилятор перемещает LOAD на более ранние позиции , относительно других команд .

Компилятор вставляет CHECK в тем месте , где ем/ нужно получить значение очередного регистра . Если LOAD уже сработала , то CHECK = NOP , иначе следующая команда простаивает и ждёт окончания LOAD.

Если LOAD слишком рано загружает данные - то она останавливается и «сообщает » что её регистр недействителен . Если регистр используется другой командой уже после загрузки , то происходит исключение .

Слайд

ft -в\

Достоинства EREC :