→ aggress5566: 第四題是拿Critical path往回推 你最慢就是在Fetch01/19 19:49
→ aggress5566: data memory時signal memwrite要送到 至於題目給你501/19 19:49
→ aggress5566: 5ps應該就是要嚇你重算一遍critical path?01/19 19:49
推 PunchShadow: 4. critical path 是2200ps 減去I-Mem所Fetch前的時01/19 19:55
→ PunchShadow: 間和需要MemWrite的D-Mem的時間,中間可以產生訊號01/19 19:56
→ PunchShadow: 的間隔就是720ps01/19 19:56
→ PunchShadow: 6. 只要把SW移到BEQ下即可01/19 20:02
P大,我知道sw往下移動到beq即可,但是這樣一來beq不就更靠近lw了,這樣不就變相加
劇data hazard了?我感覺對效能沒有改善
※ 編輯: danny0108 (42.73.242.59), 01/19/2018 20:04:46
→ aggress5566: 然後 from before塞的是你不管branch predict執行與01/19 20:05
→ aggress5566: 否都不用flush 所以週期一樣是有可能01/19 20:05
推 PunchShadow: 是的確實就像你說的,需要動用到hazard control,然01/19 22:20
→ PunchShadow: 後圖上也沒有畫,所以我猜這題應該只是想問看看from01/19 22:20
→ PunchShadow: before的運作,而且即便是把BEQ移上去,如果用hazar01/19 22:20
→ PunchShadow: d control是不會stall的01/19 22:20
P大,我…不懂耶,為什麼這樣就不會stall…
※ 編輯: danny0108 (114.137.47.107), 01/20/2018 08:03:55
推 sarsman: 我覺得你最後的管線圖是對的,add的資料要等到EX/ME才能01/20 08:45
→ sarsman: 傳01/20 08:45
→ sarsman: 打錯xd ME/WB01/20 08:47
→ sarsman: 問號的部分應該繼續填ID EX ME WB就好 01/20 08:49
推 PunchShadow: 抱歉可能沒解釋清楚,最多也只會stall一個clock,而 01/20 09:21
→ PunchShadow: 我會說不會stall有兩個原因,首先是白皮書對load use 01/20 09:21
→ PunchShadow: hazard的偵測碼中,只考慮到後一個指令是否有hazard 01/20 09:21
→ PunchShadow: (不過也可能是那時候的branch還沒移到ID所以沒寫上 01/20 09:21
→ PunchShadow: 去),再者,雖然課本沒這條forwarding資料線,不過b 01/20 09:21
→ PunchShadow: ranch是在ID階段的最後面對兩個registers做比較,所 01/20 09:21
→ PunchShadow: 以我推測可能可以將MEM讀出來的值回傳到ID Stage的 01/20 09:21
→ PunchShadow: 後半段(當然這課本上也沒寫....)01/20 09:21
→ PunchShadow: 上述如果有想法錯誤歡迎大家幫忙指正謝謝!01/20 09:23
→ PunchShadow: 然後我覺得以這題來說應該不用考慮那麼多,因為他付 01/20 09:25
→ PunchShadow: 的圖連forwarding都沒有,應該只是存粹考from before 01/20 09:25
→ PunchShadow: 而已(我猜啦哈哈 01/20 09:25
推 sarsman: 說起來題目好像也沒說branch在ID跳吧,MEM跳就不用stall了 01/20 09:43
→ sarsman: 不過就如P大所說這題應該不用太在意這部分 01/20 09:44
→ PunchShadow: 1 cycle branch delay就是移到了ID Stage了吧 01/20 09:52
→ sarsman: 欸對耶 沒注意到那行01/20 09:53
感謝P大詳盡的答覆,還有s大!
※ 編輯: danny0108 (114.137.244.226), 01/20/2018 12:33:50