延迟分支有助于控制危险的处理 下面的代码将在流水线上运行 带有一个分支延迟插槽的处理器:
null
I1: ADD R2←R7+R8 I2 : SUB R4← R5-R6 I3 : ADD R1← R2+R3 I4 : STORE Memory [R4]←[R1] BRANCH to Label if R1== 0
指令I1、I2、I3或I4中的哪一条可以合法占用延迟槽 没有任何其他程序修改? (A) I1 (B) I2 (C) I3 (D) I4 答复: (D) 说明: 信息技术 不能是l1或l3 ,因为他们直接或间接地参与了分支决策。 现在我们可以在分支决策语句之后使用l2和l4,I2和I4的顺序很重要,因为在I2中,我们在寄存器R4中获得最终值,在指令中,我们将R1的内容保存在内存中,其地址存储在寄存器中。
因此,如果我们将I2设为分支后的指令,那么第一个循环中的值本身,即存储在内存位置(其地址存储在R4中)中的值将是错误的,因为它实际上应该首先由R5-R6更新。 所以I4是正确的。
所以(D)是正确的选择。 这个问题的小测验
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END