Re: [理工] 计组 branch stall的位置

楼主: Transfat (Transfat)   2016-12-27 20:49:39
※ 引述《sate1128 (小夯夯)》之铭言:
: 我最近在做题目的时候有个疑问
: Branch在ID判断时
: 要和前面的R-type空一格 lw空两格
: 但是详细来看的话空的那个stall应该放在哪?
: 我举一个例子:
: add后接bne 接下来bne predict 错误
: 我的想法是branch的stall接在它的IF之后
: http://i.imgur.com/Lsm84Xw.jpg
: 如此一来bne的ID有在add的EX后 拿到正确的值
: 之后的add(correct)的IF也接在bne的ID后 也很合理
: 但是有些题目好像把stall放在branch的ID后
: http://i.imgur.com/IV611EN.jpg
: 这样add的EX的结果没办法给bne做判断啊?
: 难道bne在stall还可以拿add的结果做运算?
: 但是这样就没有stall吧(暂停)
: 后面的add(correct)这样接也蛮诡异
: 请问各位哪种才是对的?
: 如果是下面那种该怎么解释?
想问最后Ken大你画的那张图,为什么第五个指令add 是从第九个cycle开始IF, 不是从第
18个cycle呀?同理还有最后一个指令add 为什么是从cycle14 , 不是从cycle 13呢?
另外如果像答案(第(2)小题)所说的stall cycle 是 c4,c7,c8,c13, 那么total number of cycles 不
应该是(5-1)+8+1+2+1+1=16 吗?为什么后面还要+两个1 呢?
以上疑问
作者: yupog2003 (屁股)   2016-12-27 21:22:00
lw $t0 16($t1) sw $t0 12($t2)他还说凭良心讲这些细节都要加进课本的话会变厚2倍XD今天刚好看2015年tkb对这段有印象
作者: ken52011219 (呱)   2016-12-27 21:22:00
听你这么说我记忆好像都回来了XD,感谢讲解
作者: yupog2003 (屁股)   2016-12-27 21:18:00
张凡说一共有四条forwarding path,圣经本只介绍其中两条,也就是EX/MEM~EX、MEM/WB~EX这两条另外还有K大说的这个情况EX/MEM~ID,还有一个是还有MEM/WB~MEM,这是用在这个情况的:
作者: ken52011219 (呱)   2016-12-27 21:08:00
怎么办XD我回在原文了那这边我来澄清一下我蛮久以前的问题若将 branch 移到 ID ,forwarding 到底可不可以使用http://i.imgur.com/gcT3EHs.jpg依照图片所示我认为是不行,但实际上 add +beq 产生的data hazard 是可以借由 forwarding 去解决的 (张凡课本)目前只能假设有更复杂的图是圣经本没有画到,但可以借由forwarding解决类似问题

Links booklink

Contact Us: admin [ a t ] ucptt.com