[理工] 計組 - 101台聯大電機 Data Hazard
101台聯大電機第六題
請恕我手邊沒有圖檔...
我只摘錄我有問題的部分
Instruction C1 C2 C3 C4 C5 C6 C7 C8 C9
Sll IF ID EX MEM WB
Add IF ID EX MEM WB
LW IF ID EX MEM WB
ADD IF ID ID EX MEM WB
SUB IF IF ID EX MEM
以上的指令中 LW 和後面的ADD會發生DATA HAZARD
請問在第五個和第六個Cycle的 Stall Register (Hazard Detection Unit)的值為何?
張凡的解答上面是 C5是0 C6是1
我的疑問:
在Lw 指令一進到 EX Stage時,就會去偵測 Load-Use Hazard
所以此時便可以發現到
Ex.MemRead = 1 && ID/Ex.RegisterRD == IF/ID.RegisterRT (假設是RT)
因此下個Stage需要強制塞一個NOP
那不是就應該在C5的時候把Stall設成1
這樣C5結束時寫到 ID/EX Pipeline Register上面的 WB/MEM/EX 就會全部都是0
因此C6時就可以成功執行NOP
想請教高手們我這樣的思考邏輯哪邊有誤?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.57.26
推
11/11 23:37, , 1F
11/11 23:37, 1F
→
11/11 23:40, , 2F
11/11 23:40, 2F
推
11/11 23:42, , 3F
11/11 23:42, 3F
→
11/11 23:47, , 4F
11/11 23:47, 4F
推
11/11 23:51, , 5F
11/11 23:51, 5F
推
11/11 23:54, , 6F
11/11 23:54, 6F
→
11/11 23:55, , 7F
11/11 23:55, 7F
推
11/12 00:01, , 8F
11/12 00:01, 8F
→
11/12 00:03, , 9F
11/12 00:03, 9F
推
11/12 00:03, , 10F
11/12 00:03, 10F
→
11/12 00:04, , 11F
11/12 00:04, 11F
→
11/12 00:04, , 12F
11/12 00:04, 12F
推
11/12 00:10, , 13F
11/12 00:10, 13F
→
11/12 00:10, , 14F
11/12 00:10, 14F
→
11/12 00:11, , 15F
11/12 00:11, 15F
→
11/12 00:52, , 16F
11/12 00:52, 16F