看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《privatewind (傷神客)》之銘言: : ※ 引述《mqazz1 (無法顯示)》之銘言: : : 1 add $s1, $2, $3 : : 2 sw $s2, 0($1) : : 3 lw $1, 4($2) : : 4 add $2, $2, $1 : : 請問為什麼WAR dependence有(2,4)? : : sw不是store word嗎 這樣會read到$s2嗎? : : 謝謝 有點久遠,不是很確定是否正確,但這題目裡面如果把 s 都拿掉 ($s1 -> $1, $s2 -> $2),是不是就能夠理解了? 1 add $1, $2, $3 2 sw $2, 0($1) 3 lw $1, 4($2) 4 add $2, $2, $1 store instruction 把 $2 的 value 寫到 0($1) 這個位置, 所以 $2 是被 read ,接下來在 add $2 會被 write , 所以 (2, 4) 之間有 WAR dependency 。 : (2,4)真的有WAR嗎?XD : 先講一下我認為的WAR是什麼意思: : WAR是指write after read,以字面上來說,這並不會有什麼問題, #1 : 但是套到multiple issue時,因為指令順序可能打亂,就會造成原本 一般來講 dependency 是不需要考慮 pipeline 跟 multiple issue 的。 所謂的 dependency 是 program 的特性,只和程式本身有關, 跟所採用的硬體架構無關,所以根本不用去想指令 out-of-order 執行的狀況。 : 的WAR變成RAW,以致出錯,所以WAR是指尚未打亂前的型式,請勿搞混了! #2 : 如上所示 原本的 1, 2, 3, 4的順序變成 1, 4, 2, 3 : 1 add $s1, $2, $3 : 4 add $2, $2, $1 : 2 sw $s2, 0($1) : 3 lw $1, 4($2) : 但是這樣我也看不出哪裡有WAR耶XD : 我怎麼覺得是答案錯了… : #1 最常見的RAW(read after write),會因為pipeline特性,而必須stall或forwarding : #2 請不要以WAR的指令順序去想為何有hazard,很明顯地,WAR是用來描敘打亂前的型式 dependency 和 hazard 是兩個相關,但不一樣的概念。 所謂的 dependency 是在程式裡面兩個指令間的關係,通常是指, 若是這兩個指令交換執行的順序就有可能造成錯誤的情況。 而 hazard 則是當特定的程式在特定的硬體上執行,造成無法同時的情況。 而程式有 dependency 的時候可能會產生上述的 hazard 導致要用 stall 來解。 但有 dependency 不一定會有 hazard ,例如兩個指令相離很遠, 兩者之間仍然有 dependency ,但不會在硬體執行上造成 hazard 。 沒有 dependency 也可能會有 hazard ,例如兩個指令要用同一個 functional unit , 就算兩者沒有 dependency ,但如果處理器只有一個該類型的 functional unit , 還是會造成 hazard 。 雖然很多題目把兩個概念混在一起講,也不會解錯。 但這兩者實際上是不一樣的。 -- 活著的目的是為主活 然後為主死 死亡的目的是為主死 然後為主活 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.31.132
privatewind:也是可以把multiple issue 用成concurent去理解 07/19 14:24
privatewind:concurrent 就是軟體術語了 只是對計組來講 還是用 07/19 14:24
privatewind:multiple issue這類來說 會明較明顯 就看是要從哪個面 07/19 14:25
privatewind:向去解釋了 07/19 14:25
privatewind:不過我也同意hazard 與dependancy分開來看 會比較好XD 07/19 14:26
privatewind:簡言之data hazard != data dependancy 07/19 14:32
privatewind:話說原po找了哪位老師呀 0.0" 07/19 14:33
sitos:找了哪位老師? 07/19 14:53
privatewind:你不是上112研所? XD 07/19 14:58
privatewind:@.@ 那我只好叫你聲學長囉XD 07/19 15:10
sitos:T_T 07/19 15:22
mqazz1:謝囉 sor 的確是我把題目打錯 $s是$ 多打了s.. 07/19 18:57
※ 編輯: sitos 來自: 122.116.24.61 (07/21 14:10)
sneak: concurrent https://daxiv.com 09/11 14:27