2012-10-24 74 views
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 
+0

这是来自滑铁卢大学的CS 251吗? –

+0

不,它不是...... – AnchovyLegend

+0

如果您可以张贴一些电路图像,这将有所帮助,因为有不同的数据转发设置。你也可以在管道上错开你的指示,看看没有数据转发的危险,没有数据转发 –

回答

-1

看看这里所示的管线图:https://www.student.cs.uwaterloo.ca/~cs251/S12/a4.pdf和您的指示映射到同样交错的管道,这将帮助您可视化数据危害。

此外,确切的数据转发实施将取决于您的作业上的问题设计,这将影响您需要的数量。