什么是分支預(yù)測(cè)
在超標(biāo)量的流水線架構(gòu)上,我們得知,CPU 在運(yùn)行指令的時(shí)候,會(huì)在一個(gè)時(shí)鐘上做多個(gè)操作,也就是涉及到調(diào)用前后相關(guān)的指令,比如我們?cè)谝粋€(gè)簡(jiǎn)單的判斷語(yǔ)句中。
if(n > 0)
{
n = 5;
}
else
{
n = -5;
}
在執(zhí)行 if 語(yǔ)句的時(shí)候,一定會(huì)對(duì)判斷語(yǔ)句執(zhí)行結(jié)果后的下一條語(yǔ)句進(jìn)行取址和譯碼,那么在還沒(méi)有判斷結(jié)果之前應(yīng)該對(duì)哪一個(gè)語(yǔ)句進(jìn)行取址呢?這就是分支預(yù)測(cè)要解決的問(wèn)題。
簡(jiǎn)單說(shuō),分支預(yù)測(cè)就像我們鐵路分叉口上的操作員,操作員在沒(méi)有看到火車上面的轉(zhuǎn)向旗幟的情況下,到底應(yīng)該往哪邊搬動(dòng)扳手呢?
對(duì)于 CPU 來(lái)說(shuō),他做不到鐵路系統(tǒng)中的提前通信告知,因此他只能根據(jù)歷史來(lái)進(jìn)行推測(cè),提前做選擇,如果選擇錯(cuò)了,咱就讓列車停下,倒回來(lái),重新開(kāi)。
因此,分支預(yù)測(cè)會(huì)出現(xiàn)預(yù)測(cè)失敗的情況,而失敗后的回滾操作非常占用時(shí)間,所以我們需要避免分支預(yù)測(cè)失敗概率過(guò)大,或者說(shuō)是把具有分支預(yù)測(cè)失敗情況的判斷放到循環(huán)內(nèi)部,讓失敗回滾多次循環(huán)。
-
處理器
+關(guān)注
關(guān)注
68文章
19899瀏覽量
235434 -
mcu
+關(guān)注
關(guān)注
146文章
17985瀏覽量
367352 -
cpu
+關(guān)注
關(guān)注
68文章
11083瀏覽量
217190 -
預(yù)測(cè)
+關(guān)注
關(guān)注
0文章
39瀏覽量
12504
發(fā)布評(píng)論請(qǐng)先 登錄
CPU分支預(yù)測(cè)對(duì)程序的影響
Git命令之本地分支與遠(yuǎn)程分支關(guān)聯(lián)和解除

如何統(tǒng)計(jì)蜂鳥(niǎo)E203的分支預(yù)測(cè)率?
嵌入式處理器動(dòng)態(tài)分支預(yù)測(cè)機(jī)制研究與設(shè)計(jì)
git merge后,原分支的內(nèi)容沒(méi)有出現(xiàn)在新的master分支中。
優(yōu)化技巧:提前if判斷幫助CPU分支預(yù)測(cè)
安騰處理器中多級(jí)分支預(yù)測(cè)機(jī)制
什么是CPU分枝預(yù)測(cè)和推測(cè)執(zhí)行技術(shù)?
Git分支,為何以及如何使用分支
EE-373:調(diào)整ADSP-BF70xBlackfin?處理器的動(dòng)態(tài)分支預(yù)測(cè)器

CPU分支預(yù)測(cè)對(duì)程序的影響
應(yīng)對(duì)分支預(yù)測(cè)有哪些優(yōu)化措施
如何幫助提高CPU分支跳轉(zhuǎn)的正確率

評(píng)論