2

假设以下两条指令同时执行:

addi $t0, $t1, 4
addi $t1, $t2, 4

这是一种反依赖,或读后写。假设它们同时执行,在第二条指令写回之前,第一条指令是否仍会读取正确的值$t1

至于输出依赖,或 Write-after-Write:

addi $t0, $t1, 4
addi $t0, $t2, 4

我明白为什么这是有问题的,我无法想象谁会“赢”,如果有的话。我的意思是我们说的是指令级并行性,所以理论上我想在第二条指令可以写入之前会有一个 NOP$t0吗?在这种情况下,如果另一条指令想要在第二条指令再次写入之前从 $t0 读取,当然还有“丢失”周期,我只会看到问题。

所以真的,我的问题是:为什么读后写有问题?是不是因为在指令解码过程中,不同的地址可能会被加载到 $t1 中?

4

0 回答 0