[理工] [計組] Hazard疑問

看板Grad-ProbAsk作者 (考研不是人)時間1年前 (2022/09/21 19:59), 編輯推噓14(14070)
留言84則, 5人參與, 1年前最新討論串1/1
如圖 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

09/21 21:27, 1年前 , 1F

09/21 21:30, 1年前 , 2F
嗨嗨第一次解題,有點緊張
09/21 21:30, 2F

09/21 21:30, 1年前 , 3F
我拿這個圖作為解釋好了,第一個add跟or不會發生da
09/21 21:30, 3F

09/21 21:30, 1年前 , 4F
ta hazard的原因是因為,WB會在clock的前半部完成
09/21 21:30, 4F

09/21 21:30, 1年前 , 5F
,ID則是在clock的後半部
09/21 21:30, 5F

09/21 21:31, 1年前 , 6F
clock前寫後讀?所以沒hazard
09/21 21:31, 6F

09/21 21:32, 1年前 , 7F
他那個diagram的畫法 圖是中間有填色意思就是這個吧
09/21 21:32, 7F

09/21 21:34, 1年前 , 8F
所以按照你的時序圖,$2在stage4的前半段有已經被
09/21 21:34, 8F

09/21 21:34, 1年前 , 9F
寫入$2中,下一個指令會在clock的下半段抓到$2=10
09/21 21:34, 9F

09/21 21:34, 1年前 , 10F
正確的資料
09/21 21:34, 10F

09/21 21:38, 1年前 , 11F
Sorry更正,stage5,不是stage4
09/21 21:38, 11F

09/21 23:38, 1年前 , 12F
不好意思,我問過很多人,都說什麼前半後半。但是我不
09/21 23:38, 12F

09/21 23:38, 1年前 , 13F
能理解前半後半指什麼東西。希望能更詳細的解釋,謝謝
09/21 23:38, 13F

09/21 23:38, 1年前 , 14F
09/21 23:38, 14F

09/21 23:53, 1年前 , 15F
WB那個stage不是只是要寫入的資料ready以及regWrite為
09/21 23:53, 15F

09/21 23:53, 1年前 , 16F
1而已嗎?要怎麼寫入資料
09/21 23:53, 16F

09/22 01:53, 1年前 , 17F
clock被往上拉就是前半 像下掉就是後半 這部分張凡有
09/22 01:53, 17F

09/22 01:53, 1年前 , 18F
說過 學校應該也有教
09/22 01:53, 18F

09/22 01:54, 1年前 , 19F
T大說的我認為很清楚了
09/22 01:54, 19F

09/22 02:13, 1年前 , 20F
同時讀寫同一地址時,讀出來的值會是正要被寫入的值,
09/22 02:13, 20F

09/22 02:13, 1年前 , 21F
但實際上暫存器還沒被寫入。這樣對嗎?但是我不知道課
09/22 02:13, 21F

09/22 02:13, 1年前 , 22F
本哪邊有這樣說過
09/22 02:13, 22F

09/22 02:20, 1年前 , 23F
先寫入後才被讀出來的
09/22 02:20, 23F

09/22 02:20, 1年前 , 24F
Clock上半週期 寫入registers
09/22 02:20, 24F

09/22 02:20, 1年前 , 25F
下半週期 才被較晚進去的指令讀到 所以沒有hazard
09/22 02:20, 25F

09/22 02:31, 1年前 , 26F
但是要怎麼寫入,如果regWrite這個控制訊號跟著pipeli
09/22 02:31, 26F

09/22 02:31, 1年前 , 27F
ne跑,到WB這個stage他才是1不是嗎?下個週期才能寫入
09/22 02:31, 27F

09/22 02:31, 1年前 , 28F
才對啊
09/22 02:31, 28F

09/22 23:19, 1年前 , 29F
regWrite為1且現在為positive edge時register裡的值就會
09/22 23:19, 29F

09/22 23:19, 1年前 , 30F
(ideally)馬上被更新為input的值,當到negative egde時r
09/22 23:19, 30F

09/22 23:19, 1年前 , 31F
egister裡的值就會被keep住,所以後半部讀出來的值才會
09/22 23:19, 31F

09/22 23:19, 1年前 , 32F
是新寫入的值,更詳細的可以去看一下數位邏設的內容
09/22 23:19, 32F

09/23 01:36, 1年前 , 33F
樓上這樣說就不合理了,regWrite在posedge後才變成1,
09/23 01:36, 33F

09/23 01:36, 1年前 , 34F
register何德何能讀到這個1把資料寫進去
09/23 01:36, 34F

09/23 10:44, 1年前 , 35F
什麼意思?posEdge後變1不就可以把data寫入了嗎,而且re
09/23 10:44, 35F

09/23 10:44, 1年前 , 36F
gWrite是register的control signal又不用讀
09/23 10:44, 36F

09/23 12:25, 1年前 , 37F
register是posedge時regWrite為1才能把資料寫入。
09/23 12:25, 37F

09/23 12:35, 1年前 , 38F
實際上register還沒被寫入,但是讀的出來,這是一種fo
09/23 12:35, 38F

09/23 12:35, 1年前 , 39F
rward
09/23 12:35, 39F

09/23 14:43, 1年前 , 40F

09/23 14:45, 1年前 , 41F
它沒有用到forward path所以並非forwarding
09/23 14:45, 41F

09/23 14:47, 1年前 , 42F
然後我能解釋的範圍就到這裡了,身為可悲跨考仔聽
09/23 14:47, 42F

09/23 14:47, 1年前 , 43F
到的東西都來自於講義跟張凡的嘴巴,如果還是有什
09/23 14:47, 43F

09/23 14:47, 1年前 , 44F
麼不懂的地方,感覺可以問一下學校的老師會比較好
09/23 14:47, 44F

09/23 14:47, 1年前 , 45F
一點(有錯誤再勞煩大神更正)
09/23 14:47, 45F

09/23 14:48, 1年前 , 46F
其實你們說的我都知道,但是我的問題都不在此
09/23 14:48, 46F

09/23 14:55, 1年前 , 47F

09/23 14:55, 1年前 , 48F

09/23 14:57, 1年前 , 49F
不合理啊,既然暫存器是依照正緣觸發當下的RegWrite來
09/23 14:57, 49F

09/23 14:57, 1年前 , 50F
決定要不要寫入,那他就不應該寫入不是嗎
09/23 14:57, 50F

09/23 18:58, 1年前 , 51F
WB stage的regw 信號是不用過pipeline register的我
09/23 18:58, 51F

09/23 18:58, 1年前 , 52F
看圖長那樣
09/23 18:58, 52F

09/23 19:04, 1年前 , 53F
Memtoreg那根線 直接抵達regfile不用等下個cycle
09/23 19:04, 53F

09/23 20:45, 1年前 , 54F
沒有吧 我看都有跟著跑啊
09/23 20:45, 54F

09/23 21:10, 1年前 , 55F

09/23 21:20, 1年前 , 56F
目的位置跟資料寫入都沒擋阿
09/23 21:20, 56F

09/23 21:22, 1年前 , 57F
09/23 21:22, 57F

09/23 23:12, 1年前 , 58F
不是都跟著跑到WB stage嗎
09/23 23:12, 58F

09/23 23:35, 1年前 , 59F
阿跑到wb就代表寫入了 你看我畫的紅線 是沒有東西擋
09/23 23:35, 59F

09/23 23:35, 1年前 , 60F
著他的訊號的 他咻一下直接寫入regfile
09/23 23:35, 60F

09/23 23:36, 1年前 , 61F
阿reg後半cycle才讀 就讀得到
09/23 23:36, 61F

09/23 23:37, 1年前 , 62F
我看你上面的留言好像是說 wb要等下個週期才寫來不及
09/23 23:37, 62F

09/23 23:37, 1年前 , 63F
09/23 23:37, 63F

09/23 23:38, 1年前 , 64F
Wb沒有下個週期才寫 一過mem/wb 就直接衝回id stage
09/23 23:38, 64F

09/23 23:38, 1年前 , 65F
了而這是在一個週期內完成
09/23 23:38, 65F

09/23 23:49, 1年前 , 66F

09/23 23:49, 1年前 , 67F
這張圖比較好有control signal
09/23 23:49, 67F

09/24 00:07, 1年前 , 68F
啊暫存器不是正緣觸發寫入嗎?你訊號在正緣後衝過來有
09/24 00:07, 68F

09/24 00:07, 1年前 , 69F
甚麼用
09/24 00:07, 69F

09/24 00:11, 1年前 , 70F
如果先不管正緣 我上面那樣說你可以接受嗎
09/24 00:11, 70F

09/24 00:24, 1年前 , 71F
正緣一到pipeline暫存器就打開讓訊號出去了 也就寫入
09/24 00:24, 71F

09/24 00:24, 1年前 , 72F
了 你那張圖好像是畫正緣過後才寫入的意思嗎
09/24 00:24, 72F

09/24 00:25, 1年前 , 73F
我記得張凡是說正緣區間 而不是後哦
09/24 00:25, 73F

09/24 00:27, 1年前 , 74F
而且就算正緣後衝過來 也是可以寫入的吧 至少比讀(
09/24 00:27, 74F

09/24 00:27, 1年前 , 75F
下緣)在先了
09/24 00:27, 75F

09/24 00:40, 1年前 , 76F
暫存器可以在正緣後寫入,那不叫正緣觸發寫入了吧。se
09/24 00:40, 76F

09/24 00:40, 1年前 , 77F
tup time都不用顧嗎?
09/24 00:40, 77F

09/24 00:45, 1年前 , 78F
正緣後寫入不是你說的嗎
09/24 00:45, 78F

09/24 00:46, 1年前 , 79F
反正張凡是說沿著邊邊 這樣
09/24 00:46, 79F

09/24 00:49, 1年前 , 80F
你那張畫的很精美的圖不是就是正緣後寫入嗎 我是看那
09/24 00:49, 80F

09/24 00:49, 1年前 , 81F
張圖說的
09/24 00:49, 81F

09/24 00:51, 1年前 , 82F
我想說的是 不管是那種 一定比下緣先吧
09/24 00:51, 82F

09/24 00:51, 1年前 , 83F
比下緣先就不會有hazard了
09/24 00:51, 83F

09/24 01:15, 1年前 , 84F
0-1write 1-0讀這樣
09/24 01:15, 84F
文章代碼(AID): #1ZAlo6Hh (Grad-ProbAsk)