|
|
GGL
銀驢友〔中級〕
. 積分: 751
. 文章: 534
. 收花: 2477 支
. 送花: 550 支
. 比例: 0.22
. 在線: 12459 小時
. 瀏覽: 466800 頁
. 註冊: 6874 天
. 失蹤: 2 天
. TW |
|
|
|
|
|
|
#1 : 2011-11-13 06:49 AM
只看本作者
|
送花
(3)
送出中...
|
|
|
我在解Computer Architecture中pipeline的data hazard題目,有一題指令如下:
I1: LD R1, A
I2: LD R2, B
I3: ADD R2, R2, R1
I4: LD R3, C
I5: MUL R3, R2, R3
I6: ST R3, D
I7: ADDI R1, R1, #1
I8: ST R1, A
I9: STOP
5 stages pipeline: IF → ID → EX → ME → WB
要找出所有的data hazard。
解答如下:
I3 w/ I1: RAW – R1
I3 w/ I2: RAW – R2
I3 w/ I2: WAW – R2
I5 w/ I4: RAW – R3
I5 w/ I4: WAW – R3
I5 w/ I2: RAW – R2
I5 w/ I3: RAW – R2
I6 w/ I5: RAW – R3
I6 w/ I4: RAW – R3
I7 w/ I1: RAW – R1
I7 w/ I1: WAW – R1
I7 w/ I3: WAR – R1
I8 w/ I1: RAW – R1
I8 w/ I7: RAW – R1
紅色部份是我的疑問,不知道是不是我的理解有錯,I8在執行的時候,I1不是早就執行完畢,怎麼還會有Read after write hazard的發生?
我的理解是,要發生RAW,不是應該在距離5個指令內(或5 stages)才有可能發生,以這個為例子,I1在第5個cycle time已經跑完,I8是在第8個cycle time才開始執行,彼此應該不會有hazard的發生吧?
不知道是否有人可以幫我解答,感激不盡
[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
|
|