[理工] 計組 101 台聯大電機 Pipeline 懲罰

看板Grad-ProbAsk作者時間8年前 (2017/12/05 18:30), 8年前編輯推噓2(206)
留言8則, 2人參與, 8年前最新討論串1/1
想請教一下各位大大 題目如圖 https://i.imgur.com/o076BeK.png
紅框答案的部分 我的理解是說 程式在 compiler得時候 compiler會先看一下指令 安排順序 再進pipeline 如圖 : https://i.imgur.com/JEGtoWy.png
當 Branch 預期跳的時候 Complier 會在 Branch 指令後面插目的的指令 所以當 Branch 真的跳則不會有懲罰 這部分我沒有問題 但是 Jump 指令 Compiler看到的時候 應該是會排 Jump 目的的指令吧? 我覺得應該是不會有懲罰的問題 同樣都是在ID2解碼才知道指令 人家Branch都可以排 跳躍目的 的指令了 為啥Jump這個必跳的指令後面一定要跟著 下一個指令 而不是 跳躍目的 的指令呢? 還是我整體的觀念有誤呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.243.93.151 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1512469844.A.B12.html ※ 編輯: jerry900287 (111.243.93.151), 12/05/2017 18:33:12 ※ 編輯: jerry900287 (111.243.93.151), 12/05/2017 18:34:49 ※ 編輯: jerry900287 (111.243.93.151), 12/05/2017 18:35:37

12/05 22:48, 8年前 , 1F
答案錯的
12/05 22:48, 1F

12/05 22:48, 8年前 , 2F
unconditional branch 在predict taken是不會損失的
12/05 22:48, 2F

12/05 22:48, 8年前 , 3F
張帆上課有說
12/05 22:48, 3F
所以大大的意思是 Jump 的 Predict taken 那攔是 0 Predict not take 那攔是 3 嗎? ※ 編輯: jerry900287 (111.243.93.151), 12/05/2017 23:42:04

12/06 00:30, 8年前 , 4F
我上課時是聽他說 jump一律不能猜 所以都是損失3 cycles
12/06 00:30, 4F

12/06 00:31, 8年前 , 5F
然後我也沒有記錄到答案是錯的部分 3/3應該是對的
12/06 00:31, 5F

12/06 00:31, 8年前 , 6F
有錯麻煩指正@@
12/06 00:31, 6F

12/06 00:36, 8年前 , 7F
我發現我應該是錯的了 答案是0/3沒錯 因為jump是一定跳
12/06 00:36, 7F

12/06 00:37, 8年前 , 8F
所以如果猜taken,則無損失。若猜not taken,必損失3
12/06 00:37, 8F
OK!!! 這樣感覺就通了 感謝尼們 ※ 編輯: jerry900287 (61.230.79.66), 12/06/2017 13:02:51
文章代碼(AID): #1Q9dLKiI (Grad-ProbAsk)