1
下面的代码在5级流水线数据路径上运行。我很难知道我对流水线工作原理的理解是否正确。在下面的尝试中,我试图通过在不恰当的地方插入“气泡”来解决没有数据转发单元的数据路径中的数据危险。我的第一个问题是,我的流水线逻辑是否正确?MIPS流水线逻辑解决数据隐患
我的第二个问题是假设数据路径中有一个转发单元,从MEM-> EX和WB-> EX,那么这将如何改变我的逻辑与第一个问题?
add t0, s1, s2
add t1, t0, s3
sub t2, t0, t1
xor t3, t2, a0
lw t4, 0(t7)
slt t5, t4, t3
这是我的问题1尝试:
add t0, s1, s2 //IF add1 instruction
nop //ID add1 instruction
nop //EX add1 instruction
add t1, t0, s1 //MEM add1 instruction, IF add2 instruction
nop //WB add1 instruction, ID add2 instruction
nop //EX add2 instruction
nop //MEM add2 instruction
nop //WB add2 instruction
sub t2, t0, t1 //IF sub instruction
nop //ID sub instruction
nop //EX sub instruction
nop //MEM sub instruction
xor t3, t2, a0 //WB sub instruction, IF xor instruction
lw t4, 0(t7) //ID xor instruction, IF lw instruction
nop //EX xor instruction, ID lw instruction
nop //MEM xor instruction, EX lw instruction
nop //WB xor instruction, MEM lw instruction
slt t5, t4, t3 //WB lw instruction, IF slt instruction
这是来自滑铁卢大学的CS 251吗? –
不,它不是...... – AnchovyLegend
如果您可以张贴一些电路图像,这将有所帮助,因为有不同的数据转发设置。你也可以在管道上错开你的指示,看看没有数据转发的危险,没有数据转发 –