看板 Grad-ProbAsk 關於我們 聯絡資訊
如圖 https://imgur.com/a/GLLfY15 有問題的是I1與I4,就是WB跟ID stage重疊那一塊 課本說明是沒有Hazard的問題,講什麼前半後半 我看的不是很明白 底下是我的理解 考慮以下指令 add $2, $2, $2 nop nop add $2, $2, $2 https://imgur.com/RiYc5hZ 這是我認為的時序圖 IF/ID、ID/EXE等是pipeline register存的值 明明I4在ID階段時I1的WB還沒被執行 卻說他不會有hazard產生 這是為什麼啊? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.228.244.247 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1663761542.A.46B.html
takanano0528: https://i.imgur.com/COfru66.jpg 09/21 21:27
takanano0528: 嗨嗨第一次解題,有點緊張 09/21 21:30
takanano0528: 我拿這個圖作為解釋好了,第一個add跟or不會發生da 09/21 21:30
takanano0528: ta hazard的原因是因為,WB會在clock的前半部完成 09/21 21:30
takanano0528: ,ID則是在clock的後半部 09/21 21:30
ping990579: clock前寫後讀?所以沒hazard 09/21 21:31
ping990579: 他那個diagram的畫法 圖是中間有填色意思就是這個吧 09/21 21:32
takanano0528: 所以按照你的時序圖,$2在stage4的前半段有已經被 09/21 21:34
takanano0528: 寫入$2中,下一個指令會在clock的下半段抓到$2=10 09/21 21:34
takanano0528: 正確的資料 09/21 21:34
takanano0528: Sorry更正,stage5,不是stage4 09/21 21:38
Max112358: 不好意思,我問過很多人,都說什麼前半後半。但是我不 09/21 23:38
Max112358: 能理解前半後半指什麼東西。希望能更詳細的解釋,謝謝 09/21 23:38
Max112358: 你 09/21 23:38
Max112358: WB那個stage不是只是要寫入的資料ready以及regWrite為 09/21 23:53
Max112358: 1而已嗎?要怎麼寫入資料 09/21 23:53
jemmy9211: clock被往上拉就是前半 像下掉就是後半 這部分張凡有 09/22 01:53
jemmy9211: 說過 學校應該也有教 09/22 01:53
jemmy9211: T大說的我認為很清楚了 09/22 01:54
Max112358: 同時讀寫同一地址時,讀出來的值會是正要被寫入的值, 09/22 02:13
Max112358: 但實際上暫存器還沒被寫入。這樣對嗎?但是我不知道課 09/22 02:13
Max112358: 本哪邊有這樣說過 09/22 02:13
jemmy9211: 先寫入後才被讀出來的 09/22 02:20
jemmy9211: Clock上半週期 寫入registers 09/22 02:20
jemmy9211: 下半週期 才被較晚進去的指令讀到 所以沒有hazard 09/22 02:20
Max112358: 但是要怎麼寫入,如果regWrite這個控制訊號跟著pipeli 09/22 02:31
Max112358: ne跑,到WB這個stage他才是1不是嗎?下個週期才能寫入 09/22 02:31
Max112358: 才對啊 09/22 02:31
oxtin15: regWrite為1且現在為positive edge時register裡的值就會 09/22 23:19
oxtin15: (ideally)馬上被更新為input的值,當到negative egde時r 09/22 23:19
oxtin15: egister裡的值就會被keep住,所以後半部讀出來的值才會 09/22 23:19
oxtin15: 是新寫入的值,更詳細的可以去看一下數位邏設的內容 09/22 23:19
Max112358: 樓上這樣說就不合理了,regWrite在posedge後才變成1, 09/23 01:36
Max112358: register何德何能讀到這個1把資料寫進去 09/23 01:36
oxtin15: 什麼意思?posEdge後變1不就可以把data寫入了嗎,而且re 09/23 10:44
oxtin15: gWrite是register的control signal又不用讀 09/23 10:44
Max112358: register是posedge時regWrite為1才能把資料寫入。 09/23 12:25
Max112358: 實際上register還沒被寫入,但是讀的出來,這是一種fo 09/23 12:35
Max112358: rward 09/23 12:35
takanano0528: https://i.imgur.com/bpGgdg6.jpg 09/23 14:43
takanano0528: 它沒有用到forward path所以並非forwarding 09/23 14:45
takanano0528: 然後我能解釋的範圍就到這裡了,身為可悲跨考仔聽 09/23 14:47
takanano0528: 到的東西都來自於講義跟張凡的嘴巴,如果還是有什 09/23 14:47
takanano0528: 麼不懂的地方,感覺可以問一下學校的老師會比較好 09/23 14:47
takanano0528: 一點(有錯誤再勞煩大神更正) 09/23 14:47
Max112358: 其實你們說的我都知道,但是我的問題都不在此 09/23 14:48
Max112358: https://i.imgur.com/T2194f3.jpg 09/23 14:55
Max112358: https://i.imgur.com/XGjBUWg.jpg 09/23 14:55
Max112358: 不合理啊,既然暫存器是依照正緣觸發當下的RegWrite來 09/23 14:57
Max112358: 決定要不要寫入,那他就不應該寫入不是嗎 09/23 14:57
ping990579: WB stage的regw 信號是不用過pipeline register的我 09/23 18:58
ping990579: 看圖長那樣 09/23 18:58
ping990579: Memtoreg那根線 直接抵達regfile不用等下個cycle 09/23 19:04
Max112358: 沒有吧 我看都有跟著跑啊 09/23 20:45
ping990579: 目的位置跟資料寫入都沒擋阿 09/23 21:20
ping990579: 上面圖死掉https://i.imgur.com/SIylTL6.jpg 09/23 21:22
Max112358: 不是都跟著跑到WB stage嗎 09/23 23:12
ping990579: 阿跑到wb就代表寫入了 你看我畫的紅線 是沒有東西擋 09/23 23:35
ping990579: 著他的訊號的 他咻一下直接寫入regfile 09/23 23:35
ping990579: 阿reg後半cycle才讀 就讀得到 09/23 23:36
ping990579: 我看你上面的留言好像是說 wb要等下個週期才寫來不及 09/23 23:37
ping990579: 嘛 09/23 23:37
ping990579: Wb沒有下個週期才寫 一過mem/wb 就直接衝回id stage 09/23 23:38
ping990579: 了而這是在一個週期內完成 09/23 23:38
ping990579: https://i.imgur.com/VrUArFv.jpg 09/23 23:49
ping990579: 這張圖比較好有control signal 09/23 23:49
Max112358: 啊暫存器不是正緣觸發寫入嗎?你訊號在正緣後衝過來有 09/24 00:07
Max112358: 甚麼用 09/24 00:07
ping990579: 如果先不管正緣 我上面那樣說你可以接受嗎 09/24 00:11
ping990579: 正緣一到pipeline暫存器就打開讓訊號出去了 也就寫入 09/24 00:24
ping990579: 了 你那張圖好像是畫正緣過後才寫入的意思嗎 09/24 00:24
ping990579: 我記得張凡是說正緣區間 而不是後哦 09/24 00:25
ping990579: 而且就算正緣後衝過來 也是可以寫入的吧 至少比讀( 09/24 00:27
ping990579: 下緣)在先了 09/24 00:27
Max112358: 暫存器可以在正緣後寫入,那不叫正緣觸發寫入了吧。se 09/24 00:40
Max112358: tup time都不用顧嗎? 09/24 00:40
ping990579: 正緣後寫入不是你說的嗎 09/24 00:45
ping990579: 反正張凡是說沿著邊邊 這樣 09/24 00:46
ping990579: 你那張畫的很精美的圖不是就是正緣後寫入嗎 我是看那 09/24 00:49
ping990579: 張圖說的 09/24 00:49
ping990579: 我想說的是 不管是那種 一定比下緣先吧 09/24 00:51
ping990579: 比下緣先就不會有hazard了 09/24 00:51
ping990579: 0-1write 1-0讀這樣 09/24 01:15