[理工] 計組 - 101台聯大電機 Data Hazard

看板Grad-ProbAsk作者 (逆宇)時間13年前 (2012/11/11 23:26), 編輯推噓7(709)
留言16則, 2人參與, 最新討論串1/1
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
題目有說是cycle的beginning喔
11/11 23:37, 1F

11/11 23:40, , 2F
B大的意思是等C5的值運算完 所以C6 Beginning才看到1嗎?
11/11 23:40, 2F

11/11 23:42, , 3F
C5設1之後 還是會先擋在pipeline register
11/11 23:42, 3F

11/11 23:47, , 4F
啊? B大這句話的意思我反而看不太懂了 能再解釋一下嗎?
11/11 23:47, 4F

11/11 23:51, , 5F
應該說C5設1後 會把0灌進pipeline register
11/11 23:51, 5F

11/11 23:54, , 6F
我認為題目關鍵在那個from beginning啦XD
11/11 23:54, 6F

11/11 23:55, , 7F
題目有附註 : 所有的Reg 寫入都在Clock的末段
11/11 23:55, 7F

11/12 00:01, , 8F
你忽略我上面那個好了 反正我認為C5一開始當然設0
11/12 00:01, 8F

11/12 00:03, , 9F
那反過來問 為什麼C6時會是1阿XD
11/12 00:03, 9F

11/12 00:03, , 10F
即使你說STALL有改成1 那也都是過一段延遲時間的事
11/12 00:03, 10F

11/12 00:04, , 11F
我以為一進到C6時 ID/EX的Control全部都已經是0了
11/12 00:04, 11F

11/12 00:04, , 12F
喔喔 這樣解釋我比較可以接受為什麼C5不是1了 感謝
11/12 00:04, 12F

11/12 00:10, , 13F
C6=1就想成C5的延續 一樣也是要過一段延遲時間
11/12 00:10, 13F

11/12 00:10, , 14F
才能判斷出是否有load-use 沒有的話才會真正的再改回0
11/12 00:10, 14F

11/12 00:11, , 15F
不知道我這樣的解釋你能不能接受啊XD
11/12 00:11, 15F

11/12 00:52, , 16F
感謝高手高手高高手B大XDD
11/12 00:52, 16F
文章代碼(AID): #1GdyE82c (Grad-ProbAsk)