以下是一段指令序列: 1 addi R1,20 (R1)←20 2 1w R2,R0,12 (R2)←M(12+(RO)) 3 add R3,R1,R2 (R3)←(R1)+(R2) 以上指令序

admin2019-12-10  15

问题 以下是一段指令序列:
1    addi    R1,20       (R1)←20
2     1w    R2,R0,12    (R2)←M(12+(RO))
3    add    R3,R1,R2    (R3)←(R1)+(R2)
以上指令序列中,假定采用“取指、译码/取数、执行、访存、写回”这种五段流水线方式,那么在采用“转发”技术时,需要在第3条指令之前至少加入(    )条空操作(nop)指令,才能使这段程序不发生数据冒险。

选项 A、0
B、1
C、2
D、3

答案B

解析 通过观察这三条指令发现,第一、二条指令与第三条指令存在写后读的数据冒险,也就是说有可能在第一、二条指令执行结束后还没来得及将最终的结果存入寄存器R1和R2中,第三条指令就开始直接读取寄存器R1和R2中的内容。于是为了防止出现数据冒险,在执行第三条指令之前至少应加入一条空操作来保证取R1和R2中内容的滞后性。
转载请注明原文地址:https://kaotiyun.com/show/263i777K
0

相关试题推荐
最新回复(0)