门|门CS 2008 |问题77

延迟分支有助于控制危险的处理 下面的代码将在流水线上运行 带有一个分支延迟插槽的处理器:

null
I1: ADD R2R7+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
喜欢就支持一下吧
点赞12 分享