看板 Grad-ProbAsk 關於我們 聯絡資訊
晚安 各位 張凡上完 forwarding unit 時有補充 課本在下圖忘記補了 2-1 MUX (P-479) 補上了應該是這下圖這樣? 張凡說直接補 但這樣設計跑以下的 code: #1 add t0, s5, s6 #2 lw t0, 0(s2) ====== 當 #1 在 MEM stage,#2 在 EX stage === ALUrc 設1 lw此時的 rt -> t0, rs -> s2 因為 #1 的 rd 是 t0 且和 EX stage 的 rt 相同 -> 故 forwarding unit 啟動 ALU 最後卻挑了 #1 的 t0 讀進去,原本的 immediate 被忽略掉 0.0 而導致資料不正確 想確認一下我的想法有沒有疏漏的地方? ----- rt------------| 0 | ----- | |-------| 0 | sign extend---| 1 | | | ----- --->| 1 |-------------(ALU) | | | | ALUrc | ->| 2 | | | |___| _________________ | | ^ | | | | |____| Forwarding unit | | | |_________________| | | | |___ MEM/WB rd |_____ EX/MEM rd -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.132.251.85 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1470231756.A.030.html
ken52011219: 其實我看不太懂意思 但我覺得你誤會 forwarding unit 08/04 11:11
ken52011219: 是會造成 datahazard的原因@@? 08/04 11:11
ken52011219: 會造成forwading unit啟動的原因 主要是 當 add在ex 08/04 11:43
ken52011219: 執行s5+s6時 lw 已經需要t0在add運算完後的值 08/04 11:43
ken52011219: 此時forwarding 啟動 並在 add MEM STAGE 時 提前將s 08/04 11:45
ken52011219: 5+s6的值拉回來 08/04 11:45
問題就是出在這裡,ALU原本是要算 lw 的 memory address 的 故 ALUsrc 選擇了位移量要和 s2 做運算,可是 forwarding 啟動後 卻會選擇前面一個 stage 的 s5+s6(也就是t0) 餵給 ALU 這樣最後會變成 s2 + s5 + s6 當成 memory address 餵給 MEM (其實只要s2而已) ※ 編輯: kyuudonut (220.132.251.85), 08/04/2016 12:12:39
ken52011219: 只要 ALU 下方input 的前面的多工器Mux 接在01的pin 08/04 12:44
哪一個 MUX 接誰的 01 pin @@
ken52011219: 即可, 而 我有點忘記張凡那本怎麼畫整個PIPELINE 08/04 12:44
ken52011219: 但 FORWARDING 的圖中 前面那個多工器的 OUTPUT 08/04 12:46
ken52011219: 又再接一顆多工器判定是否是要傳到MEM'S WRITE DATA 08/04 12:47
這一行是指 Rs,Rt 挑一個的那個 MUX 嗎?
ken52011219: GOOGLE FORWARDING UNIT的圖片第二張 就是我再講的 08/04 12:49
※ 編輯: kyuudonut (220.132.251.85), 08/04/2016 13:43:04
ken52011219: 等我個 08/04 14:01
ken52011219: http://i.imgur.com/q46e7an.jpg 鉛筆路徑就是這次 08/04 14:27
ken52011219: 所用到的 08/04 14:27
ken52011219: 黃色和鉛筆的使用差別 在於instruction 隔一行還是 08/04 14:28
ken52011219: 兩行吧 我想 08/04 14:28
這我清楚 我問題主要是產生於 張凡說 原圖少了一顆 ALUrc 的 MUX 只是張凡這段是用口述 我以為是把 ALUrc 接在 forwarding 的 MUX 前面,就如同我原文畫的那張圖 只是這樣會出問題(如同前述) 但原來只要把 ALUrc 接在 forwarding 的 MUX 後面就解決了阿... (你畫的那張圖)
ken52011219: 其實在第四章開頭就有說到 這是抽象化設計 會將系統 08/04 14:34
ken52011219: 底層的細節暫時隱藏 所以我們看到的東西都是簡化過 08/04 14:34
ken52011219: 的 08/04 14:34
另外黃色那條 我其實沒有想到 memory 的 write data 耶 畢竟我舉的例是 lw 阿XD 不過我倒是沒想過 forwarding 的這條線要怎麼拉 (tkb張凡也沒講) 感謝! ※ 編輯: kyuudonut (220.132.251.85), 08/04/2016 15:07:26
ken52011219: 誒靠 哈哈 想成SW了 抱歉抱歉睡昏去了 08/04 15:16