作者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