[理工] [計組] forwarding unit
晚安 各位
張凡上完 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
→
08/04 11:11, , 1F
08/04 11:11, 1F
→
08/04 11:11, , 2F
08/04 11:11, 2F
推
08/04 11:43, , 3F
08/04 11:43, 3F
→
08/04 11:43, , 4F
08/04 11:43, 4F
→
08/04 11:45, , 5F
08/04 11:45, 5F
→
08/04 11:45, , 6F
08/04 11:45, 6F
問題就是出在這裡,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
→
08/04 12:44, , 7F
08/04 12:44, 7F
哪一個 MUX 接誰的 01 pin @@
→
08/04 12:44, , 8F
08/04 12:44, 8F
→
08/04 12:46, , 9F
08/04 12:46, 9F
→
08/04 12:47, , 10F
08/04 12:47, 10F
這一行是指 Rs,Rt 挑一個的那個 MUX 嗎?
推
08/04 12:49, , 11F
08/04 12:49, 11F
※ 編輯: kyuudonut (220.132.251.85), 08/04/2016 13:43:04
推
08/04 14:01, , 12F
08/04 14:01, 12F
推
08/04 14:27, , 13F
08/04 14:27, 13F

→
08/04 14:27, , 14F
08/04 14:27, 14F
→
08/04 14:28, , 15F
08/04 14:28, 15F
→
08/04 14:28, , 16F
08/04 14:28, 16F
這我清楚
我問題主要是產生於 張凡說 原圖少了一顆 ALUrc 的 MUX
只是張凡這段是用口述
我以為是把 ALUrc 接在 forwarding 的 MUX 前面,就如同我原文畫的那張圖
只是這樣會出問題(如同前述)
但原來只要把 ALUrc 接在 forwarding 的 MUX 後面就解決了阿... (你畫的那張圖)
→
08/04 14:34, , 17F
08/04 14:34, 17F
→
08/04 14:34, , 18F
08/04 14:34, 18F
→
08/04 14:34, , 19F
08/04 14:34, 19F
另外黃色那條 我其實沒有想到 memory 的 write data 耶
畢竟我舉的例是 lw 阿XD
不過我倒是沒想過 forwarding 的這條線要怎麼拉 (tkb張凡也沒講)
感謝!
※ 編輯: kyuudonut (220.132.251.85), 08/04/2016 15:07:26
→
08/04 15:16, , 20F
08/04 15:16, 20F