作者sitos (麥子)
看板Grad-ProbAsk
標題Re: [理工] [計組] WAR
時間Tue Jul 19 13:46:13 2011
※ 引述《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)