[理工] 计组pipeline branch predict

楼主: eecheng87 (EEcheng)   2019-05-26 12:37:18
想问一题出现在白算盘4.15的题目
https://i.imgur.com/M8CMz7h.jpg
题目大概是在问如果用不同的predict方法,会造成几个额外的cycle
而可以在ex知道branch的结果
提供的答案是
https://i.imgur.com/KCzqNSA.jpg
需要额外3个,但我觉得是两个
下面用always not taken猜法
branch. F D E M W
猜not taken. F D E M W
下个指令 F D E M W
此刻知道 F D E M W
branch结果
所以清掉前两个
cycle的东西
但是答案说是三个,想请问为神么
编辑: 上面cycle图因为手机排版,我想表达的是每条指令都差一个cycle
作者: b10007034 (Warren)   2019-05-26 20:24:00
我想你的想法跟pg.320搞混了,这边算是比较tricky的地方,pg.320可以用这样的方法为什么前面提到的不行?你可以仔细观察一下,文字(pg.318)提到flush的话,是一次flush哪些stage?还有pg.304 Figure4.51他的branch AND gate画在哪?能回答这两个问题的话,你的疑问就不在了。
楼主: eecheng87 (EEcheng)   2019-05-26 22:14:00
@b10007034 那个and gate是在m,可是这题不是说在ex就知道了?318说的flush要冲掉三个state,这是指还没把检查branch提前的情况吧,因为原版的在ex做完才知道至于你问的第一个问题我还是不太懂,方便解释一下吗,感谢你
作者: b10007034 (Warren)   2019-05-27 11:38:00
tricky的地方就是课本没把block diagram画出来branchand gate在哪里,加上课本只有提到两种方法改良前后,所以我认为这边的branch outcome指的是addr及zero的结果另外你的想法cost要为2个cycle的话,只要and gate在EX
楼主: eecheng87 (EEcheng)   2019-05-27 14:03:00
嗯嗯,感谢你

Links booklink

Contact Us: admin [ a t ] ucptt.com