2: BEQ EXIT 如果(R3)=(R4)则转移到NEXT MOVE R1,R2;插入指令,不能有数据相关,不能改变条件吗 4 ADd R4. R5 N: NEXT: MOVE R4, A 2、指令取消技术 原因:采用指令延时技术,在许多情况下找不到可以用来调整的指令 分为三种情况: (1)向后转移(循环程序) 实现方法:循环体的第一条指令经调整后安排在两个位置,第一个位置是在 循环体的前面,第二个位置安排在循环体的后面, 如果转移成功,则执行循环体后面的指令,然后返回到循环体开始;否则, 则取消循环体后面的指令,继续执行后面的指令 ·例子: LoOP:ⅩXX YYY L00P: ZZZ ZZZ COMP Rl, R2, LOOP COMP Rl, R2, LOOP W XXX (a)调整前的程序 (b)调整后的程序 指令取消技术(向后转移) 效果:能够使指令流水线在绝大多数情况下不断流, 由于绝大多数情况下,转移是成功的 (2)向前转移( IF THEN) 实现方法:如果转移不成功执行下条指令,否则取消下条指令 例子: RRR “IF”部分的程序代码 COMP RI, R2. THRU TT T “THEN”部分的程序代码 UUU THRU: VV V 效果:成功与不成功的概率通常各为50%, (3)隐含转移技术 应用场合:用于 IF THEN结构,且THEN部分只有一条指令 实现方法:把IF的条件取反,2-8 2: BEQ EXIT ;如果(R3)=(R4)则转移到 NEXT 3: MOVE R1, R2 ;插入指令,不能有数据相关,不能改变条件吗 4: ADD R4, R5 ……… N: NEXT: MOVE R4, A 2、指令取消技术 原因:采用指令延时技术,在许多情况下找不到可以用来调整的指令 分为三种情况: (1)向后转移(循环程序) • 实现方法:循环体的第一条指令经调整后安排在两个位置,第一个位置是在 循环体的前面,第二个位置安排在循环体的后面, 如果转移成功,则执行循环体后面的指令,然后返回到循环体开始;否则, 则取消循环体后面的指令,继续执行后面的指令 • 例子: LOOP: X X X Y Y Y …… Z Z Z COMP R1, R2, LOOP W W W (a) 调整前的程序 X X X LOOP: Y Y Y …… Z Z Z COMP R1, R2, LOOP X X X W W W (b) 调整后的程序 指令取消技术(向后转移) • 效果:能够使指令流水线在绝大多数情况下不断流, 由于绝大多数情况下,转移是成功的, (2)向前转移(IF THEN ) • 实现方法:如果转移不成功执行下条指令,否则取消下条指令。 • 例子: R R R …… “IF”部分的程序代码 S S S COMP R1, R2, THRU T T T …… “THEN”部分的程序代码 U U U THRU: V V V • 效果:成功与不成功的概率通常各为 50%, (3)隐含转移技术 • 应用场合:用于 IF THEN 结构,且 THEN 部分只有一条指令 • 实现方法:把 IF 的条件取反