Современные высокопроизводительные компьютеры
Например, в последовательности кода: if p1 { S1; }; if p2 { S2; } S1 является зависимым по управлению от p1, а S2 зависит по управлению от p2 и не зависит от p1. Имеются два ограничения, связанные с зависимостями по управлению:
Команда, которая зависит по управлению от условного перехода, не может быть в результате перемещения поставлена перед командой условного перехода так, что ее выполнение более не управлялось бы этим условным переходом. Например, мы не можем взять команду из части \"then\" оператора if и поставить ее перед оператором if.
Команда, которая не является зависимой по управлению от команды условного перехода, не может быть поставлена после команды условного перехода так, что ее выполнение станет управляться этим условным переходом. Например, мы не можем взять оператор, стоящий перед оператором if и перенести его в часть \"then\" условного оператора. Следующий пример иллюстрирует эти два ограничения: ADD R1,R2,R3 BEQZ R12,skipnext SUB R4,R5,R6 skipnext: OR R7,R1,R9 MULT R13,R1,R4 В этой последовательности команд имеются следующие зависимости по управлению (предполагается, что переходы не задерживаются). Команда SUB зависит по управлению от команды BEQZ, поскольку изменение порядка следования этих команд изменит и результат вычислений. Если поставить команду SUB перед командой условного перехода, результат команды MULT не будет тем же самым, что и в случае, когда условный переход является выполняемым. Аналогично, команда ADD не может быть поставлена после команды условного перехода, поскольку это приведет к изменению результата команды MULT, когда переход является выполняемым. Команда OR не является зависимой по управлению от условного перехода, поскольку она выполняется независимо от того, является ли переход выполняемым или нет. Поскольку команда OR не зависит по данным от предшествующих команд и не зависит по управлению от команды условного перехода, она может быть поставлена перед командой условного перехода, что не приведет к изменению значения, вычисляемого этой последовательностью команд.
|