例如,有图2.19(a)这样一个简单的指令序列,由于存在R3寄存器的数据相关,第二条指令必须等第一条指令执行完后才能开始执行,后续的指令也是这样。如果执行一条指令需要两个机器周期,那么,每两条指令之间都要浪费一个周期。 图2.19 指令流调整技术 ADD R1, R2, R3 ;(R1)+(R2)→R3
ADD R1, R2, R3 图2.19(b)是通过优化编译器调整后的指令序列。在两条乘法指令中用R0寄存器代替原来的R3寄存器,消除了两条乘法指令与两条加法指令之间的数据相关,并且重新调整指令序列。调整后的指令序列比原指令序列的执行速度快一倍。
|