作者bernachom (Terry)
看板Grad-ProbAsk
標題[理工] 計組-WAW危障
時間Mon Jun 15 00:18:00 2009
請教一下...WAW只會發生在MIPS和PENTIUM的超管線裡嗎?
有一個一小段程式是
lw $s0,12($$1)
add $s4,$s0,$s2
addi $s2,$s0,4
sw $s4,12($s1)
add $s2,$s3,$s1
我的問題是,I2和I4會有WAW嗎??
我不太清楚,在什麼樣的情況下才會有..
或是有MIPS的例子可以看嗎?
謝謝幫忙
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.224.202.245
1F:推 nowar100:我記得課本上的只會有RAW 06/15 01:32
2F:→ king007:WAW不算hazard 血兩次有差嗎= =?? 06/15 07:09
3F:→ poga:variable-length pipeline就會有差 06/15 07:24
4F:推 whisp1222:會有 但是一般是不會發生的 因為一般指令都是按順序發動 06/15 21:58
5F:→ bernachom:請教一下,那以這題來說,是有WAW?但是不會發生? 06/15 22:00
6F:→ bernachom:所以就當作沒有危障? 可以這樣說嗎? 謝謝 06/15 22:00
7F:推 whisp1222:抱歉 說到一半斷線 英文似乎叫做out-order issue 06/15 22:05
8F:→ whisp1222:一般來說答題不用考慮WAW 除非題目要求回答 WAW hazard 06/15 22:06
9F:→ bernachom:這題沒有要求要答WAW,可是我看書上 06/15 22:09
10F:推 whisp1222:我說的是WAR 搞亂了 >"< 06/15 22:09
11F:→ bernachom:寫,I2和I4有危障,使用forwarding可以解決 06/15 22:09
12F:→ bernachom:我覺得怪的是,WAW也不能用forwarding解決吧? 06/15 22:10
13F:→ bernachom:還是說,I2和I4根本不是WAW只是一般的危障呢? 06/15 22:11
14F:→ whisp1222:因為I2還沒把結果算出來前 SW就要取出值 看好喔 是SW 06/15 22:11
15F:→ bernachom:因為WAW的發生情況我還不是搞得很清楚,麻煩前輩幫忙了 06/15 22:12
16F:→ whisp1222:I2要把結果放到$S4 但是I4要從$S4取值 06/15 22:12
17F:→ whisp1222:這提I2 I4應該不是WAW (write after write)但I2是write 06/15 22:13
18F:→ whisp1222: I4是read 所以不是WAW 06/15 22:14
19F:→ bernachom:那,像這種程式,用看的看得出來嗎?還是就當做一般的危 06/15 22:17
20F:→ bernachom:障? 反正MIPS也不會出現?除非有特別說的話? 06/15 22:18
21F:→ bernachom:我是說I2和I4...謝謝您 06/15 22:20
22F:推 whisp1222:其實用看方法就是最左邊的register都一樣就是WAW 但是因 06/15 22:22
23F:→ whisp1222:為這題I4是SW所以不是WAW 06/15 22:22
24F:→ whisp1222:我記得沒說的話RAW WAW我都會寫耶 但是WAR一般不會發生 06/15 22:23
25F:→ whisp1222:所以WAR我都是題目要求我才會寫 06/15 22:24
26F:→ bernachom:請教一下,是除了sw而已嗎?有其它的指令也不會發生嗎? 06/15 22:24
27F:→ bernachom:如果I4改成add 或sub之類的,就會發生了嗎?謝謝 06/15 22:25
28F:推 whisp1222:恩恩 I4改成add就會有WAW hazard 06/15 22:27
29F:→ bernachom:我大概知道了..不好意思再請教一下 06/15 22:28
30F:→ whisp1222:SW特別是因為他最左邊那個其實是要被讀取的regis 06/15 22:28
31F:→ bernachom:那是只有sw而已嗎?分支指令是不是也不會?? 06/15 22:28
32F:→ bernachom:這些指令如果同樣在WAR也不會發生這樣子對嗎?謝謝您 06/15 22:29
33F:推 whisp1222:我熊熊有點不太確定耶@@ 有請高手解惑 06/15 22:31
34F:→ bernachom:嗯嗯,謝謝您的幫忙. 06/15 22:33
35F:推 whisp1222:WAW應該不會 因為他只有讀取 WAR還是有可能 因為有可能 06/15 22:35
36F:→ whisp1222:其他指令尚未寫入前branch指令就去讀取了 06/15 22:35
37F:→ bernachom:請教一下,那是說WAR只有sw才不會發生,其它都有可能? 06/15 22:39
38F:→ bernachom:WAW的話,sw和branch都不會發生? 06/15 22:39
39F:推 whisp1222:這我就不知道了 我都記相對位置而不是記case 06/15 22:40
40F:→ bernachom:謝謝您,我原本也是記位置,可是這題...好像就不太管用 06/15 22:42
41F:→ bernachom:所以想說看有沒有特別的CASE可以記...謝謝前輩幫忙^^ 06/15 22:42
42F:推 whisp1222:喔喔 原來你也記位置 白記了XD 這提是因為SW的關係啦 06/15 22:46
43F:→ whisp1222:別想太多 06/15 22:46
44F:→ bernachom:嗯嗯,這樣我清楚了,只是想說還有沒有其它的指令 06/15 22:54
45F:→ bernachom:也不會發生. 06/15 22:54
46F:→ bernachom:謝謝您熱心幫忙^^ 06/15 22:54
47F:→ bernachom:搞懂了,謝謝^^ 06/15 23:06
48F:→ uminchu185:我認為針對I2與I4的WAW hazard, 是指$4寫入後, 才能寫 06/17 11:04
49F:→ uminchu185:入memory, 如果I4比I2先執行的話, memory最後內容會是 06/17 11:06
50F:→ uminchu185:錯的 06/17 11:06