Современные высокопроизводительные компьютеры


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


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

Методика планирования компилятора для устранения конфликтов по данным

Многие типы приостановок конвейера могут происходить достаточно часто. Например, для оператора А = B + С компилятор скорее всего сгенерирует следующую последовательность команд (рис.5.10):

LW R1,ВIFIDEX MEMWB

LW R2,С IFIDEXMEMWB

ADD R3,R1,R2 IFIDstallEXMEMWB

SW A,R3 IF stallIDEXMEMWB

Рис. 5.10. Конвейерное выполнение оператора А = В + С

Очевидно, выполнение команды ADD должно быть приостановлено до тех пор, пока не станет доступным поступающий из памяти операнд C. Дополнительной задержки выполнения команды SW не произойдет в случае применения цепей обхода для пересылки результата операции АЛУ непосредственно в регистр данных памяти для последующей записи.

Для данного простого примера компилятор никак не может улучшить ситуацию, однако в ряде более общих случаев он может реорганизовать последовательность команд так, чтобы избежать приостановок конвейера. Эта техника, называемая планированием загрузки конвейера (pipeline scheduling) или планированием потока команд (instruction scheduling), использовалась начиная с 60-х годов и стала особой областью интереса в 80-х годах, когда конвейерные машины стали более распространенными.

Пусть, например, имеется последовательность операторов: a = b + c; d = e - f;

Как сгенерировать код, не вызывающий остановок конвейера? Предполагается, что задержка загрузки из памяти составляет один такт. Ответ очевиден (рис. 5.11):

Неоптимизированная
последовательность команд
Оптимизированная
последовательность команд

LW Rb,bLW Rb,b

LW Rc,cLW Rc,c

ADD Ra,Rb,RcLW Re,e

SW a,RaADD Ra,Rb,Rc

LW Re,eLW Rf,f

LW Rf,fSW a,Ra

SUB Rd,Re,RfSUB Rd,Re,Rf

SW d,RdSW d,Rd

<


- Начало -  - Назад -  - Вперед -



Книжный магазин