[理工] 计组 data与control hazard问题(白算盘)

楼主: g1990822 (什么东西?!)   2018-05-20 18:34:59
最近两天在写白算盘的题目,遇到了几题问题
因为在网络上找到的解答和我的想法不太一样,
不确定是不是解答有误还是我的观念错误,希望版友可以帮忙指正
第一题:(来自白算盘第五版4.9题)题目给三个指令:
指令1: or r1,r2,r3
指令2: or r2,r1,r4
指令3: or r1,r1,r2
其中4.9.5题:Add nop instructions to this code to eliminate hazards
if there is ALU-ALU forwarding only
( no forwarding from MEM to EX stage)
我在网络上找到的解答:
or r1,r2,r3
or r2,r1,r4
or r1,r1,r2
也就是解答似乎认为没有任何的Data hazard,所以没有插入任何nop
而我的问题是,在有ALU-ALU forwarding的情况下,指令1,2的data hazard(r1)
和指令2,3的data hazard(r2)可以被解决,应该没有问题
但是指令1,3也有data hazard(r1)不是吗?而此data hazard只能够用
forwarding from MEM to EX stage解决吧?(因为相隔一个指令)
但是题目说""no ""forwarding from MEM to EX stage
因此不是应该要在中间插入一个nop,
让第三个指令在第一个指令于WB stage时才能ID吗?
像是: 指令1 IF ID EX MEM WB
指令2 IF ID EX MEM WB
nop IF ID EX MEM WB
指令3 IF ID EX MEM WB
这样的形式,才能让指令3读到正确的r1的值,但是这样的话,
指令2的r2又只能借由forwarding from MEM to EX stage给指令三...
我想到的是要:再插入一个nop变成:
C1 C2 C3 C4 C5 C6 C7 C8 C9
指令1 IF ID EX MEM WB
指令2 IF ID EX MEM WB
nop IF ID EX MEM WB
nop IF ID EX MEM WB
指令3 IF ID EX MEM WB
这样一来指令3可以在C6时读到指令1,2已经写入的r1与r2的正确值
但是不知道这样想法对不对..
第二题:(来自白算盘第五版4.15题)
In this exercise,assume that the breakdown of dynamic instructions into
various instruction categories is as follows:
R-Type BEQ JMP LW SW
40% 25% 5% 25% 5%
Also , assume the following btanch predictor accuracies:
Always-Taken Always-Not-Taken 2-Bit
45% 55% 85%
其中4.15.1小题: Stall cycles due to mispredicted branches increase the CPI
What is the extra CPI due to mispredicted branches with the
always-taken predictor?Assume that branch outcomes are
determinid in the EX stage,that there are no hazards,and
no delay slots are used.
网络上解答: 3*(1-0.45)*0.25=0.41
我的问题是为什么是"3"*(1-0.45)*0.25
而不是:"2"*(1-0.45)*0.25呢?
因为题目说是在EX stage决定要不要branch,
所以若猜错的penalty不是应该是两个CLK而已吗?
以上两个问题再麻烦大大们帮解答,谢谢了!
作者: TWkobe (中华柯比)   2018-05-20 19:17:00
mem/wb 前馈至id/ex不用多1cycle只要最迟到ex stage在进行alu前得到正确资料就好不用非得在id stage就马上读到正确资料但若没有前馈 指令1后方插入2个nop是对的指令1后方插入2个nop是对的对 插入两个nop后指令1在上升沿写 指令2下降延读至于指令3前方已有两个nop就不会有data hazard至于2不清楚 应该是他算上原本的cpi 1指令2不是要读指令1结果 raw阿喔喔没看到 如果是fowarding only就可以了至于他说只能从mem到id就不确定 应该是指令2后插1个就好少打id/ex 就是ex stage
作者: SIGNAL2017 (信号2017)   2018-05-20 20:00:00
请问第一个问题他的解答为何没有插NOP呀? 他不是说不能用MEM/WB接forwarding到EX吗? 那这样只能用NOP解决吧?
作者: TWkobe (中华柯比)   2018-05-20 21:16:00
我的意思可能让你误会 我猜这题原本意思是没有"从mem/wb register forwaring回id stage"所以他的意思是无法从write back stage回给id stage脑子错乱说错是回给"ex stage"所以当指令1,2连续时 此时forwarding可以自ex/mem reg回给ex stage但如果1,2,3连续 此时ex/mem to ex stage不够用但只看指令2,3是仍足够用 ex/mem reg 回ex stage所以问题是出在指令1还要nop避开需要mem/wb reg 回ex有错还请大大纠正我画了一次图还有用code detect应该插入2个不过刚查了一下 有外国学校答案是1个我没考虑周详真抱歉qq而且cc6写回也来不及 指令3已经ex stage我说是只插一个nop刚查到亚大老师答案给两个nop 理由一样http://dns2.asia.edu.tw/~rikki/coa106/cod5-ch04-05_sol.pdf
作者: SIGNAL2017 (信号2017)   2018-05-20 23:45:00
我突然看到23有hazard,那13应该会无hazard了我记得所有hazard都可以用两个nop去解决,且不用前馈所以应该有很多种答案吧?不过我想说的是原文中的解答应该是对的(?) 12和23都可以用前馈解决13因为23前馈解决所以13会没有hazard,所以答案才给都没nop的答案(我的想法)更正:不是所有hazard我的意思是data和control hazard我在张凡的课本上有写到MEM HAZARD的情况其中要EX无HAZARD好像是因为EX是最新的资料(23指令)会盖掉13的HAZARD我是个新手而已,可以讨论看看xdhttps://i.imgur.com/oh9G0dG.jpg 像是这题的13好像就没hazard,原因是因23有hazard,不知道跟你举的那例子是否相同?阿对..不一样 你这题12的hazard和23的hazard不同,所以不能用这个看靠..所以我的观念是错的,我还以为只要23有13就一定没不用管是怎样的情况你可以拍那题给我看看吗,我想去问别人恩恩 可能要下周六才能知道了(我问补习班老师)

Links booklink

Contact Us: admin [ a t ] ucptt.com