[理工] [計組] Data hazard

看板Grad-ProbAsk作者 (陽光蜥蜴)時間11年前 (2012/11/08 18:14), 編輯推噓3(3015)
留言18則, 3人參與, 最新討論串1/2 (看更多)
lw $5,16($4) sw $5,16($3) 想請問一下 這樣lw 跟 sw 有RAW data hazard 如果在有forwarding的情況下 要怎麼加入nop處理 張凡課本上寫 lw $5,16($4) nop sw $5,16($3) 可是sw的$5的內容不是應該在ID就決定了 lw IF ID EX ME WB nop IF ID EX ME WB sw IF ID EX ME WB lw中 $5 內容不是也要等到 ME 之後才會決定 為什麼不是插兩個nop 而是只插一個? 雖然這樣就沒有用到forwarding -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.171.59

11/08 18:26, , 1F
forwarding是在ID讀到錯誤的值要送到EX之前
11/08 18:26, 1F

11/08 18:27, , 2F
把正確的值傳到EX讓整個結果是正確的
11/08 18:27, 2F

11/08 18:27, , 3F
而不是送到ID喔
11/08 18:27, 3F

11/08 18:28, , 4F
lw的ME OK之後 馬上forward給sw的EX
11/08 18:28, 4F

11/08 18:32, , 5F
所以是說 forward入ex後更新$5的值
11/08 18:32, 5F

11/08 18:33, , 6F
一路傳過去使得最後sw的ME 存入的$5的值是正確的?
11/08 18:33, 6F

11/08 18:39, , 7F
也不算更新 forwarding unit會判斷有沒有data haz的發生
11/08 18:39, 7F

11/08 18:40, , 8F
來決定讓ALU前的那兩個多工器要讓誰通過
11/08 18:40, 8F

11/08 18:54, , 9F
可是lw ME 跑出來的$5的值 為什麼要傳進去sw的ALU?
11/08 18:54, 9F

11/08 18:55, , 10F
sw的 ALU不是在算他所要儲存的記憶體位址?
11/08 18:55, 10F

11/08 19:18, , 11F
要邊看圖,考慮lw在ME,nop在EX,sw在ID時,此時lw已算完
11/08 19:18, 11F

11/08 19:20, , 12F
$5,此時sw抓錯值,沒差,反正已經被測出有lw-use,下個
11/08 19:20, 12F

11/08 19:22, , 13F
下個Clock一來,sw到EX,而MUX前有lw算的新資料,和sw抓
11/08 19:22, 13F

11/08 19:24, , 14F
錯的舊資料,MUX會讓lw的資料過,就好了
11/08 19:24, 14F

11/08 20:16, , 15F
大概知道你的問題了 基本上把他當一個BUG就好XD
11/08 20:16, 15F

11/08 20:17, , 16F
forward pipeline的datapath有省略一些東西
11/08 20:17, 16F

11/08 20:18, , 17F
像是SE也藏起來了 也沒有特別畫出你說的情形的處理方式
11/08 20:18, 17F

11/08 20:32, , 18F
XDD 感謝大家的回答
11/08 20:32, 18F
文章代碼(AID): #1GcuOKzN (Grad-ProbAsk)
文章代碼(AID): #1GcuOKzN (Grad-ProbAsk)