Re: [理工] [計組] stall
以下是我元智同學親自去問張凡的說法
(2)b 答案是4 7 8 13
張凡表示:用加的 秒殺
畫圖也可以
先找 那些指令會停
求法 = 第幾個指令 + 2 + 在此指令前stall和flush過的總和
中間的2是因為 data hazard 只會在ID停
所以每個指令開始 到要開始停的cycle為 第幾號指令 +2
2就是IF ID兩個stage
以本題來說
會停的有
2. add $s0,$t0,$t1
4. bne $s0,$s1,$10
7. bne $s2,$s3,10
先看
2. add $s0,$t0,$t1 是第二條指令
2 + 2 + 0 (在這個指令前沒停過) = 4 → C4
再來看到
4. bne $s0,$s1,$10 是第四個指令
4 + 2 + 1 (前面add停過一個) = 7
然後因為bne前一個指令為lw 兩者也存在data dependency
所以bne要停一個 7已經停過了 再停一個 8 所以8也要停
然後看到
7. bne $s2,$s3,10 是第七個指令
7 + 2 + 1 (add停的) + 2 (bne停的) + 1 (前面一個bne猜錯 要flush 所以停一個)
= 13
flush跟當下那個bne停不停沒關聯 只跟後面的有關
只要算 "在此指令之前有停多少"
大概是這樣
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.193.186.95
推
12/04 09:46, , 1F
12/04 09:46, 1F
推
12/04 19:02, , 2F
12/04 19:02, 2F
討論串 (同標題文章)
完整討論串 (本文為第 4 之 4 篇):
理工
1
9