PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
Grad-ProbAsk
[理工] 计组 branch stall的位置
楼主:
sate1128
(小夯夯)
2016-12-26 11:00:23
我最近在做题目的时候有个疑问
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)这样接也蛮诡异
请问各位哪种才是对的?
如果是下面那种该怎么解释?
作者:
ken52011219
(呱)
2016-12-27 21:20:00
讯号传递 来达到 stall 的功能
作者:
Transfat
(Transfat)
2016-12-27 21:20:00
我大概了解你们的说法了。因为预测错误,所以要在branch的ID阶段执行flush和把control signal设为0,所以下一个指令add(PC+4)的IF需要在第九个cycle才可以执行。
作者:
ken52011219
(呱)
2016-12-27 21:19:00
flush 与 stall 的差别最主要是一个直接洗掉某个指令 而 Stall只是借由延迟instruction 和避免
作者:
yupog2003
(屁股)
2016-12-27 21:08:00
那么stall cycle似乎就只要列出data hazard就好?但是在算总cycle数的时候还是要把预测错误浪费的cycle算进去?flush跟stall我也常常搞混,他们共同点就是会浪费cycle但是发生data hazard的时候是要"暂停"pipeline,所以是stall,而branch prediction错误是要"洗掉"之前的指令所以是flush,这样直接硬分不知道有没有错误?
作者:
ken52011219
(呱)
2016-12-27 21:07:00
没错,当预测成功时就会继续执行跳至的address 不用flush
作者:
yupog2003
(屁股)
2016-12-27 21:04:00
要在bne的ID之后才会知道,如果预测错误的话就要像K大这样把真正的branch target的IF放在bne的ID之后如果预测正确的话是不是可以直接画在bne的IF之后就好?也就是当作什么问题都没有直接执行下去
作者:
ken52011219
(呱)
2016-12-27 21:03:00
上面有点小错,是在8 cycle时就将signal 设为0
作者:
yupog2003
(屁股)
2016-12-27 21:03:00
我也来确认一下自己的观念,因为真正的branch target
作者:
ken52011219
(呱)
2016-12-27 20:50:00
http://i.imgur.com/Iezmxcz.jpg
因为习惯性直接省略一些instruction来节省空间 但实际上当第8 cycle 的时候,ID判定需要flush并将PC改成原address+4 ,第九cycle时 ID将control signal 设0 ,而IF 则会执行 原address+4 并不会与ID的flush冲突到Trans大 的问题是没有把flush算进总 cycle中且这题flush并非为stall 故不用写入 stall cycle中(依稀记得去年九月张凡说的)
作者:
Transfat
(Transfat)
2016-12-27 19:56:00
ken大你的那张图,为什么第五个add的IF不是从第八个cycle开始呢?为什么从第九个cycle才IF啊还有最后一个add也是为什么从cycle14不是cycle13呀而且你说的p.534那题呀,如果stall cycle是c4,c7,c8,c13那么total number of cycles不是等于5-1+8+1+2+1=16 吗为什么后面又多加了两个1变成18啊阿我再回一篇好了
作者:
PTTleader
(PTT领导)
2016-12-26 13:02:00
有下面那种的题目吗
作者:
newpuma
(还很新)
2016-12-26 13:10:00
第一种stall是为了解决1,2指令相依,有第二种的题目吗?
作者:
ken52011219
(呱)
2016-12-26 13:17:00
你这么想吧 detect unit 是在ID侦测的 ,当侦测到 if判断式为true 时 会执行stall那它所谓的stall 在实际面向该怎么执行停止 control signal 往下一个stage 传递 停止 PC +4传达到 Instruction memoryID 就会在下一个cycle时,持续执行ID 的指令 这样就很明显了第二个ID才是实际上的stall 所以你第二个才是对的但 stall功能自己要知道 为了方便检查 写2次ID 会比较好
作者: aa06697 (todo se andarà)
2016-12-26 14:01:00
第一个例子举的怪怪的感觉@@ 猜错是flush不是stall 另外不管是flush还是stall都是透过pipeline register操作 不是你要stall就“马上”stall 是下个cycle才算是stall
作者:
newpuma
(还很新)
2016-12-26 14:24:00
我以为原po是在问branch指令跟前一个指令的相依解决stall+forwarding耶 哈
作者:
k2shouai
(coding....)
2016-12-26 19:51:00
要改13没错,旧文有这题
作者:
ken52011219
(呱)
2016-12-26 20:00:00
http://i.imgur.com/uyueATI.jpg
继续阅读
[理工] 104 台联大 计结
Transfat
[计系]中央 102 cache
xuite11
[理工] 104台大电机OS 第八题
Transfat
[理工] 105交大资联 资结算法
gy5204301
[理工] 计系 process state、TLB、memory
newpuma
[理工] 中央100年 线性代数
NPUE
[理工] 计组 pipeline OS 排程
newpuma
[理工] 101 102 成大 OS
moooner
[理工] 105台大资工DS
Transfat
[理工] 104 台大资工OS
Transfat
Links
booklink
Contact Us: admin [ a t ] ucptt.com