看板 Grad-ProbAsk 關於我們 聯絡資訊
想請教一下各位大大 題目如圖 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
howard31622: 答案錯的 12/05 22:48
howard31622: unconditional branch 在predict taken是不會損失的 12/05 22:48
howard31622: 張帆上課有說 12/05 22:48
所以大大的意思是 Jump 的 Predict taken 那攔是 0 Predict not take 那攔是 3 嗎? ※ 編輯: jerry900287 (111.243.93.151), 12/05/2017 23:42:04
ms718293: 我上課時是聽他說 jump一律不能猜 所以都是損失3 cycles 12/06 00:30
ms718293: 然後我也沒有記錄到答案是錯的部分 3/3應該是對的 12/06 00:31
ms718293: 有錯麻煩指正@@ 12/06 00:31
ms718293: 我發現我應該是錯的了 答案是0/3沒錯 因為jump是一定跳 12/06 00:36
ms718293: 所以如果猜taken,則無損失。若猜not taken,必損失3 12/06 00:37
OK!!! 這樣感覺就通了 感謝尼們 ※ 編輯: jerry900287 (61.230.79.66), 12/06/2017 13:02:51