什么是分支預(yù)測
在超標(biāo)量的流水線架構(gòu)上,我們得知,CPU 在運行指令的時候,會在一個時鐘上做多個操作,也就是涉及到調(diào)用前后相關(guān)的指令,比如我們在一個簡單的判斷語句中。
if(n > 0)
{
n = 5
}
else
{
n = -5
}
在執(zhí)行 if 語句的時候,一定會對判斷語句執(zhí)行結(jié)果后的下一條語句進行取址和譯碼,那么在還沒有判斷結(jié)果之前應(yīng)該對哪一個語句進行取址呢?這就是分支預(yù)測要解決的問題。
簡單說,分支預(yù)測就像我們鐵路分叉口上的操作員,操作員在沒有看到火車上面的轉(zhuǎn)向旗幟的情況下,到底應(yīng)該往哪邊搬動扳手呢?
對于 CPU 來說,他做不到鐵路系統(tǒng)中的提前通信告知,因此他只能根據(jù)歷史來進行推測,提前做選擇,如果選擇錯了,咱就讓列車停下,倒回來,重新開。
因此,分支預(yù)測會出現(xiàn)預(yù)測失敗的情況,而失敗后的回滾操作非常占用時間,所以我們需要避免分支預(yù)測失敗概率過大,或者說是把具有分支預(yù)測失敗情況的判斷放到循環(huán)內(nèi)部,讓失敗回滾多次循環(huán)。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
相關(guān)推薦
分支預(yù)測的英文名字是“Branch Prediction”,如果大家在Google上搜索這個關(guān)鍵字,可以看到關(guān)于分支預(yù)測的很多內(nèi)容。不過,要搞清楚分
發(fā)表于 09-23 14:11
?1134次閱讀
在實際的工作生活中,往往需要將本地的分支和遠程分支關(guān)聯(lián),這樣我們就可以使用git pull命令來更新拉取最新的代碼,并使用git push命令將自己本地的修改推送到遠程倉庫。但是如果此時你本地關(guān)聯(lián)
發(fā)表于 12-15 09:27
?3269次閱讀
嵌入式處理器動態(tài)分支預(yù)測機制研究與設(shè)計針對嵌入式處理器的特定應(yīng)用環(huán)境,通過對傳統(tǒng)神經(jīng)網(wǎng)絡(luò)算法的改進,結(jié)合定制的分支目標(biāo)緩沖,提出一種復(fù)合式動態(tài)分支預(yù)
發(fā)表于 10-06 09:53
子vi 是條件結(jié)構(gòu)。如何在程序中,顯示可選擇的條件分支,子vi怎么樣設(shè)置連線端
發(fā)表于 10-18 10:33
我新建了一個rico分支,現(xiàn)在想把rico分支的內(nèi)容合并到master分支,但是合并之后,我在rico分鐘中新建的文件夾,并沒有出現(xiàn)在master中,這是為什么呢??rico
發(fā)表于 03-12 00:48
摘要: 在stackoverflow上有一個非常有名的問題:為什么處理有序數(shù)組要比非有序數(shù)組快?,可見分支預(yù)測對代碼運行效率有非常大的影響。要提高代碼執(zhí)行效率,一個重要的原則就是盡量避免CPU把
發(fā)表于 06-13 16:27
分支預(yù)測技術(shù)可消除分支指令之后損失的周期,防止流水線斷流。高比率的分支預(yù)測精確度是高性能微處理器性能的保證。本文詳細分析了安騰處理器(Ita
發(fā)表于 08-21 12:11
?12次下載
什么是分枝預(yù)測和推測執(zhí)行技術(shù)?
分枝預(yù)測(branch prediction)和推測執(zhí)行(speculation execution)是CPU動態(tài)執(zhí)行技術(shù)中的主要內(nèi)容,
發(fā)表于 02-04 10:47
?829次閱讀
file.txt 之間的三個方塊展示每個分支所在的位置(或者說每個分支中的最后一次提交的位置)。由于 myBranch 剛創(chuàng)建,提交狀態(tài)與 master 分支及其對應(yīng)的記為 remo
發(fā)表于 06-11 11:08
?4028次閱讀
你真的對電纜分支箱安裝都非常的了解了么?在安裝之前要準(zhǔn)備什么、安裝要注意什么、安裝好之后又該如何驗收等等,筆者特別提醒大家電纜分支箱安裝好了才可以確保后期的穩(wěn)定使用,下面就由生產(chǎn)廠家紅蘇電器為大家詳細介紹電纜分支箱安裝知識。
發(fā)表于 12-24 16:43
?3852次閱讀
EE-373:調(diào)整ADSP-BF70xBlackfin?處理器的動態(tài)分支預(yù)測器
發(fā)表于 05-26 13:34
?7次下載
CPU會有一個提前預(yù)測機制,比如前面的執(zhí)行結(jié)果都是true,那么下一次在判斷if的時候,就會默認認為是true來處理,讓下面的幾條指令提前進入預(yù)裝。
當(dāng)然,這個判斷不會影響實際的結(jié)果輸出,這個判斷只是為了讓CPU并行執(zhí)行代碼。
發(fā)表于 09-20 11:40
?593次閱讀
應(yīng)對分支預(yù)測有哪些優(yōu)化措施 下面再來看一下分支預(yù)測,這也是 ChatGPT 給出的一個簡易答案 // 不利于流水線的循環(huán)結(jié)構(gòu) for (int i = 0 ; i if (condit
發(fā)表于 11-29 17:32
?490次閱讀
我們還是先看一個例子: 看上面的兩個函數(shù),它們都是calloc一個全零數(shù)組x(這里不能直接用數(shù)組賦值,否則編譯器會足夠聰明進行自動的優(yōu)化),遍歷x中的每個數(shù),如果等于0,執(zhí)行分支A,否則執(zhí)行分支B
發(fā)表于 12-13 11:25
?733次閱讀
據(jù)了解,Pathfinder技術(shù)利用了現(xiàn)代CPU的分支預(yù)測機制,通過操控分支預(yù)測器的關(guān)鍵部分,實現(xiàn)對程序控制流歷史記錄的重構(gòu),并發(fā)動高精度的
發(fā)表于 05-11 14:46
?428次閱讀
評論