作者oldelette (oldelette)
看板Grad-ProbAsk
标题[理工]计组 Data Hazard
时间Wed Nov 14 11:04:08 2018
请问这题的hazard
为什麽(D&O) (O&B)要使用Hazard detection unit
不是load 指令才会使用吗
还有解答最下面那行
它说不能Forward 任何资料到ID stage
是它少拉了哪条线? 看不太出来
https://imgur.com/eiEIJ3l
https://imgur.com/PIsR1Oo
感谢大家了
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.239.41.247
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Grad-ProbAsk/M.1542164650.A.242.html
※ 编辑: oldelette (36.239.41.247), 11/14/2018 11:07:06
1F:推 TEPLUN: R tpye接beq也要hazard detection unit侦测做stall 因为be 11/14 12:37
2F:→ TEPLUN: q在第二阶段决定要不要跳 等前面ori算出来 beq也用错的暂 11/14 12:37
3F:→ TEPLUN: 存器比较出结果了 但是那个结果没办法forward到Id阶段给be 11/14 12:37
4F:→ TEPLUN: q 也就是说即使stall了 下一cycle ori跑到mem beq在Id仍然 11/14 12:37
5F:→ TEPLUN: 无法取得ori运算的结果(如果有forwarding 他要画一条从Ex 11/14 12:37
6F:→ TEPLUN: /Mem到ID阶段那个给beq用的比较器的datapath) 11/14 12:37
7F:推 TEPLUN: D&O为什麽要 等高手解答... 11/14 12:38
9F:→ seika555: 我版本的解答长这样耶 是因爲mem前写後读吗 11/14 14:58
10F:推 y2j60537: PIPELINE侦测到LO和OB两个HARZARD并STALL後,应该就侦测 11/14 15:28
11F:→ y2j60537: 不到LB的吧,指令间隔已经大於2了,正确解答应该是哪个? 11/14 15:28
12F:推 skyHuan: 如果侦测hazard的是硬体不是compiler插nop,在ID解码後才 11/14 16:23
13F:→ skyHuan: 会stall,这时候之後的指令已经进来了hazard detection 11/14 16:23
14F:→ skyHuan: 还是会判断有hazard 11/14 16:23
15F:推 skyHuan: 但stall是把control的9个bit清成0,指令的32个bit还是在 11/14 16:26
16F:→ skyHuan: ,而forward unit是看指令的32个bit判断要不要forwarding 11/14 16:26
17F:→ skyHuan: 的,应该还是会forwarding只是control都是0所以forwardin 11/14 16:26
18F:→ skyHuan: g不影响(? 11/14 16:26
19F:→ skyHuan: 不太确定是不是这样因为解答也没写有forwarding >< 11/14 16:26
21F:→ y2j60537: 我的理解是beq在ID时lw已经在WB了所以侦测不到,我还是 11/14 17:54
22F:→ y2j60537: 不理解lw跟beq会被侦测到的原因,请大神帮忙纠正 11/14 17:54
23F:→ oldelette: 所以说答案错吗 没有DO跟LB 图的解答来自张凡题库书 11/14 19:15
24F:推 seika555: 借问一下 他remark所说的那句话是因为他已经是改良版的b 11/14 20:58
25F:→ seika555: ranch因此需在ID阶段算出branch target addr. 所以hazar 11/14 20:58
26F:→ seika555: d-detect-unit才直接做nop而不是用forwarding来解决吗 11/14 20:58
27F:推 nannnnn: 会不会是因为原本有hazard只是刚好被另外一组load use解 11/15 19:00
28F:→ nannnnn: 决掉了才这样写 11/15 19:00