📜  门|门CS 2008 |第 77 题

📅  最后修改于: 2021-09-24 06:30:50             🧑  作者: Mango

延迟分支有助于处理控制危害
以下代码是在流水线上运行
具有一个分支延迟槽的处理器:

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中哪一条指令可以合法占用延迟槽
没有任何其他程序修改?
(一) I1
(B) I2
(C) I3
(四) I4答案: (D)
解释:不能是 l1 或 l3 ,因为它们直接或间接地参与了分支决策。
现在我们可以在分支决策语句之后同时拥有 l2 和 l4 并且 I2 和 I4 的顺序很重要,因为在 I2 中,我们正在寄存器 R4 中获取最终值,而在指令中,我们将 R1 的内容保存在内存中,其地址存储在登记。

因此,如果我们将 I2 设为分支后的指令,那么第一个循环中的值本身即存储在地址存储在 R4 中的内存位置中的值将是错误的,因为它实际上应该首先由 R5-R6 更新。所以I4是正确的。

所以(D)是正确的选项。
这个问题的测验