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

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

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

評(píng)論