为什么ILP体系结构中的名称依赖(WaR,WaW)存在问题?

时间:2018-04-03 18:54:50

标签: parallel-processing dependencies isa vliw superscalar

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

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

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

关于输出依赖性,或写后写:

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

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

所以,我的问题是:为什么Write-after-Read有问题?是因为在指令解码期间,可能会将不同的地址加载到$ t1?

0 个答案:

没有答案