作者privatewind (傷神客)
看板Grad-ProbAsk
標題Re: [理工] [計組] WAR
時間Tue Jul 19 13:26:44 2011
※ 引述《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嗎?
: 謝謝
(2,4)真的有WAR嗎?XD
先講一下我認為的WAR是什麼意思:
WAR是指write after read,以字面上來說,這並不會有什麼問題, #1
但是套到multiple issue時,因為指令順序可能打亂,就會造成原本
的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是用來描敘打亂前的型式
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.38.163.226
推 mqazz1:請問這樣如果題目說要找hazard 就只需考慮RAW的情況嗎? 07/19 19:41
→ privatewind:應該說 RAW會造成data hazard 07/19 23:03
推 da0910cc:原來WAR不會有hazard 我還想說1 4的$2明明沒hazard 囧 07/20 17:02