[理工] 计组 pipeline stall 相关问题

楼主: q1qip123 (wtlee)   2018-01-01 19:06:39
想请问
若发生load_use data hazard的,则load的下个指令add必须停在ID ,再下个cycle来才能在EX正确运算
http://i.imgur.com/ZgnPHbj.jpg
那发生branch跟前面指slti资料相依时,为什么是停在ID而不是IF
http://i.imgur.com/88Bx8kd.jpg
(图表分别在张凡课本(上)553跟534)
作者: PunchShadow (PunchShadow)   2018-01-01 20:59:00
要IF完才会知道有没有Data Hazard吧
楼主: q1qip123 (wtlee)   2018-01-01 21:02:00
停在if代表解玛完了啊
作者: PunchShadow (PunchShadow)   2018-01-01 21:02:00
所以所有Stall都会停在ID(如果我没记错的话)对呀,所以要IF后在Hazard Unit里面再去设定Stall然后Hazard Control Unit我记得是在ID Stage里
楼主: q1qip123 (wtlee)   2018-01-01 21:15:00
但是这样不就不能重新从if拿到正确的指令了吗?
作者: PunchShadow (PunchShadow)   2018-01-01 21:19:00
不用重新拿指令,它只是在等资料而已
楼主: q1qip123 (wtlee)   2018-01-01 21:19:00
啊啊 我错了 我重新想一次
作者: PunchShadow (PunchShadow)   2018-01-01 21:20:00
除非是碰到Control Hazard才要Flush掉IF的指令
作者: olen0622 (hong)   2018-01-01 21:22:00
重看管线图 beq可以再ID stage判断完 IF连指令都还不知道吧
楼主: q1qip123 (wtlee)   2018-01-01 21:40:00
因为课本没画branch资料相依的图,只有文字叙述而已那这样其实我也可以把hazard detection移到ex stage只是比较浪费这样?
作者: PunchShadow (PunchShadow)   2018-01-01 21:58:00
不行,因为branch在ID就已经判断出下个指令若在EX才进行Hazard讯号线的处理已经太迟
楼主: q1qip123 (wtlee)   2018-01-01 22:14:00
本来是想说连判断也改到EX,不过这样branch发生就又要flush,好像不会更好我了解了 感谢!!!新年快乐XD
作者: moneylon (bencool)   2018-01-04 23:20:00
小弟想顺便请问一下 上面那张图的第4小题 src1 src2 是怎么判断的呢

Links booklink

Contact Us: admin [ a t ] ucptt.com