最近读到pipeline有些疑问
希望板上的大大能帮小弟解答
1.) load-use data hazard
在白算盘上看到的forwarding hardware 可分成以下四种情况
1a. EX/MEM.RegisterRd = ID/EX.RegisterRs
1b. EX/MEM.RegisterRd = ID/EX.RegisterRt
2a. MEM/WB.RegisterRd = ID/EX.RegisterRs
2b. MEM/WB.RegisterRd = ID/EX.RegisterRt
想请问load-use的情况使用stall+forwarding来解决的话
其中forwarding 可否归类于上述四种
还是白算盘上的forwarding hardware并没有写出这种情形的实作
2.)题目如下
http://i.imgur.com/uERHSsL.jpg
小弟有参考到前面讨论的文章
请参考这篇#1KCePaVb (Grad-ProbAsk)
也更正了a,b小题的答案
但做到这题的“分支是否发生在ID阶段决定”和解答以及先前参考文章算得不同,看了许
久仍不确定哪里错
以下是我做出来的答案
http://i.imgur.com/iEKKZdN.jpg
有想过是不是在ID阶段决定的前提是拿到正确的$s1
但如果等到C6的EX再从C5前馈过来亦可正常执行beq指令?
麻烦板上大大帮忙解惑
感激不尽