[理工] 計組p459

看板Grad-ProbAsk作者 (lovepipi)時間6年前 (2017/10/19 22:14), 6年前編輯推噓4(405)
留言9則, 3人參與, 6年前最新討論串1/1
我想問為什麼load use data hazard 不是只要載入指令後接一個指令,指令所要讀取之 來源暫存器正好等於載入指令的目的暫存器,才要暫停管線嗎? 那為何lw or 那邊要暫停呢? 不是只要下個指令之來源跟上個載入指令的目的一樣才要? 而且程式碼也沒寫說下下個指令之來源跟上個載入指令的目的一樣才要? 我好苦惱 請各位神人幫我解答 https://i.imgur.com/yp8je8g.jpg
是因為Reg的關係嗎 Or指令會用到舊的存在reg的資料所以才要stall嗎 所以or跟lw不是load use data hazard 可是 還是要stall才能解決是嗎 我這樣解釋有誤嗎 那or和lw是屬於哪種hazard 一般的data hazard嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 115.82.3.29 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1508422470.A.D21.html ※ 編輯: lovepipi (115.82.3.29), 10/19/2017 22:21:39

10/19 22:47, 6年前 , 1F
lw跟or是有RAW關係,可是這例子沒有為了or而stall吧
10/19 22:47, 1F

10/19 22:48, 6年前 , 2F
是因為lw跟and的RAW關係而stall
10/19 22:48, 2F

10/19 23:02, 6年前 , 3F
stall一次會同時暫停IF跟ID區塊
10/19 23:02, 3F
有啊 下面的圖 or那行有stall啊 他畫雲的部分都有stall 那他是為了什麼而stall 我知道你說的lw和and的關係而stall 但是lw 和or 是因為raw而stall嗎? 他是不是也可以用前饋的方式不一定要用stall解決lw和or之問題? ※ 編輯: lovepipi (115.82.3.29), 10/19/2017 23:04:43 ※ 編輯: lovepipi (115.82.3.29), 10/19/2017 23:05:24 ※ 編輯: lovepipi (115.82.3.29), 10/19/2017 23:09:49 ※ 編輯: lovepipi (115.82.3.29), 10/19/2017 23:15:25

10/20 01:18, 6年前 , 4F
or會stall 是因為前面指令已經stall了
10/20 01:18, 4F

10/20 01:19, 6年前 , 5F
stall完才可以forward
10/20 01:19, 5F
喔喔謝謝你 我懂了 所以是一次stall 2個管線這樣子嗎?因此or 那邊才要stall? ※ 編輯: lovepipi (117.19.145.169), 10/20/2017 07:28:09

10/20 09:11, 6年前 , 6F
其實就是前面的stall後面也會跟著stall 因為pipeline中上
10/20 09:11, 6F

10/20 09:11, 6年前 , 7F
下兩個指令都會相隔一個clock
10/20 09:11, 7F
我懂了 謝謝你誒 所以是暫停if id 所以and or那兩行才會長那樣 而他們下面的其他指 令也都隔一個clock這樣嗎? ※ 編輯: lovepipi (115.82.212.114), 10/20/2017 09:30:14 ※ 編輯: lovepipi (115.82.212.114), 10/20/2017 09:36:49

10/20 13:25, 6年前 , 8F
是暫停clock4的時候
10/20 13:25, 8F

10/20 13:25, 6年前 , 9F
10/20 13:25, 9F
感謝以上回答我的各種神人! ※ 編輯: lovepipi (49.217.82.11), 10/20/2017 18:24:51
文章代碼(AID): #1PwBD6qX (Grad-ProbAsk)