[理工] 计组forwarding

楼主: leoone (里欧一代)   2017-09-22 12:19:20
各位大大安安
计组有几个小问题想请教一下
假设
1. add t1,s1,s2
2. add t2,t1,s0
以上两个指令有data hazard,再有forwarding情况下,第一个指令会在ALU计算完,到下
个cycle,经过EXE/MEM Pipeline register后回馈到EXE再经过forwarding unit来控制MU
X给出正确的t1,计算出第二个指令正确的t2
那在这个正确的t1尚未回馈到EXE,在同一个cycle下,是否也会先做一次错误的t1,s0的A
LU相加呢?
那这样整个execution time不就被拉长了吗?
作者: sarsman (DeNT15T♠)   2017-09-22 12:42:00
不会,因为clock time是根据执行时间最久的stage来设定就算t1还没算出来,第二行指令也会被卡在DE/EX之间,等到下个clock来了才会跟t1一起输入EX做运算我想法是那一阶段的九个控制信号都被flush成0了,故为NOP*第6 cycle时的EXE
作者: ken52011219 (呱)   2017-09-22 14:51:00
你要重考@@?
作者: sarsman (DeNT15T♠)   2017-09-22 14:55:00
的确资料一样会流进ALU,只是因控制信号都变0而无影响不过这个题目的情况是stall了一个cycle,才有这种状况吧lw紧接add、add紧接beq才需要stall还有lw紧接beq,要stall两个cycle
作者: ken52011219 (呱)   2017-09-22 15:06:00
有题目吗
楼主: leoone (里欧一代)   2017-09-22 15:08:00
作者: sarsman (DeNT15T♠)   2017-09-22 15:08:00
楼主: leoone (里欧一代)   2017-09-22 15:09:00
作者: sarsman (DeNT15T♠)   2017-09-22 15:09:00
作者: ken52011219 (呱)   2017-09-22 15:23:00
我太久没碰可能有点生疏所以会讲错 QQ当第4 Cycle 时 lw & add 到达 ID & EXE 时位于ID 的“ hazard Detection”侦测到会data hazard因此此时Stall指令执行(flush all signal=xx)此时已经于 4th cycle 末 ~ 5 cycle 初,因此就只考虑 5th Cycle 被 stall (EXE signal=XX)而到了 6th Cycle 则借由forwarding signal就恢复原样了讲错 (ID Signal = XX)简单来看,被Stall的stage 是第一个ID ,其Signal是被暂停的,而第二个ID 才是正常执行,不知道是不是L大对这个地方有疑虑@@?想稍微更正一下 forwarding 可能会被误会的说法应该说 hazard detection 侦测到 data hazard的条件已经消失了,故signal 由1改0 而不是靠着forwardingsignal 才恢复正常
楼主: leoone (里欧一代)   2017-09-22 16:00:00
咦 k大说的data hazard 应该是第3跟4的instruction吧XD那应该是stall是在5被hazard dection才对?
作者: ken52011219 (呱)   2017-09-22 16:07:00
我怎么记得 Hazard dection 条件式是IF & ID @@这样不会拖到 lw 进 alu 时才被dection到detection XD
楼主: leoone (里欧一代)   2017-09-22 16:12:00
算是在ID跟EXE 侦测的 EXE的lw跟ID的instruction做hazarddetection IF的时候 还不知道哪个reg啦XDD
作者: ken52011219 (呱)   2017-09-22 16:21:00
ID/IF pipeline register & ID/EXE pipeline regist还没进 EXE stage 刚刚稍微查了一下4th cycle(lw: ID stage) 侦测到Data hazardadd: IF stage5th cycle ,stall ID stage(signal=xx)让lw先跑6th cycle hazard Detection没侦测到Data hazard因此接收IF/ID pipeline register的暂存值(含signal)执行add 在 ID stage中未完成的工作
楼主: leoone (里欧一代)   2017-09-22 16:52:00
K大我想问另一个问题! hazard detection跟forwarding unit都是在pipeline register拉出所需的值吗? 而不是在stage的线路上?
作者: ken52011219 (呱)   2017-09-22 16:55:00
对,它们都是从pipeline reg. 独自拉出的值
楼主: leoone (里欧一代)   2017-09-22 17:14:00
囧 到现在才知道 看图一直以为是“顺便”从stage拉一条线到unit上的...

Links booklink

Contact Us: admin [ a t ] ucptt.com