專利名稱:分支轉(zhuǎn)移預(yù)測(cè)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于微處理器體系結(jié)構(gòu)領(lǐng)域,特別涉及一種微處理器的分支轉(zhuǎn)移預(yù)測(cè)方法。
1993年Scott McFarling提出G-share方案(全稱為Global History withIndex Sharing),這是一種經(jīng)典的全局歷史記錄表預(yù)測(cè)方法。該方法被后來的諸多CPU所采用,成為用單預(yù)測(cè)器預(yù)測(cè)分支的經(jīng)典方案。
在93年之后,很多體系結(jié)構(gòu)方面的專家著重于研究多個(gè)預(yù)測(cè)器共同完成對(duì)程序中分支的預(yù)測(cè),但在實(shí)際應(yīng)用中沒有取得重大的突破。
在現(xiàn)有的處理器中,處理分支預(yù)測(cè)多采用雙值預(yù)測(cè)法,G-share方法和混合預(yù)測(cè)器。
MIPS的R4000中采用暫停取指,直到分支結(jié)果產(chǎn)生的方法來處理分支,這種方法明顯會(huì)帶來流水線效率降低。
MIPS的R10000中采用的是在分支結(jié)果產(chǎn)生之前,按預(yù)測(cè)的地址取址。這種方法在預(yù)測(cè)正確時(shí),并不增加延遲,但當(dāng)猜測(cè)錯(cuò)誤時(shí),取消已經(jīng)取進(jìn)的指令并重新取指,從而引起流水線的斷流,增加了很大的延遲。
Alpha的21064、21164采用的是兩位的雙值預(yù)測(cè)器,Sun的UltraSparcIII采用的是標(biāo)準(zhǔn)G-share預(yù)測(cè)器(G-share Predictor);Alpha的21264采用的是混合預(yù)測(cè)器。
但是上述方法主要有如下缺點(diǎn)有待改進(jìn)一、雙值預(yù)測(cè)器由于其命中率較低,不適用于多重循環(huán)。
二、G-share方法的全局歷史記錄表中的高位,也就是離當(dāng)前預(yù)測(cè)的分支相對(duì)而言較遠(yuǎn)的分支結(jié)果,往往對(duì)當(dāng)前分支的方向指示并不是很強(qiáng),因此正確率不高。
三、混合預(yù)測(cè)器過于復(fù)雜,而且控制邏輯非常龐大。
本發(fā)明一種分支轉(zhuǎn)移預(yù)測(cè)方法,包含下列步驟a)當(dāng)系統(tǒng)遇到分支轉(zhuǎn)移指令時(shí),從程序計(jì)數(shù)器PC中獲取當(dāng)前指令的計(jì)數(shù)值,并從全局歷史記錄表中獲取歷史記錄;b)利用操作系統(tǒng)對(duì)系統(tǒng)空間和用戶空間的嚴(yán)格控制,使用程序計(jì)數(shù)器PC和前述步驟a)中獲得的歷史記錄拼接成新的全局記錄;c)前述步驟中得到的新的全局記錄取代傳統(tǒng)全局歷史預(yù)測(cè)方法中的全局歷史記錄,協(xié)同程序計(jì)數(shù)器PC進(jìn)行分支預(yù)測(cè)。
利用PC中的含有重要信息的位,取代原有全局歷史記錄中的高位,再與原有的全局歷史記錄的剩余位拼接形成新的全局記錄。
具體實(shí)施例方式
請(qǐng)結(jié)合參閱圖2,本發(fā)明一種分支轉(zhuǎn)移預(yù)測(cè)方法,包含下列步驟a)當(dāng)系統(tǒng)遇到分支轉(zhuǎn)移指令時(shí),從程序計(jì)數(shù)器PC中獲取當(dāng)前指令的計(jì)數(shù)值,并從全局歷史記錄表中獲取歷史記錄;b)利用操作系統(tǒng)對(duì)系統(tǒng)空間和用戶空間的嚴(yán)格控制,使用程序計(jì)數(shù)器PC和前述步驟a)中獲得的歷史記錄拼接成新的全局記錄;c)前述步驟中得到的新的全局記錄取代傳統(tǒng)全局歷史預(yù)測(cè)方法中的全局歷史記錄,協(xié)同程序計(jì)數(shù)器PC進(jìn)行分支預(yù)測(cè)。
利用PC中的含有重要信息的位(如圖2中的PC 31),取代原有全局歷史記錄中的高位,再與原有的全局歷史記錄的剩余位拼接形成新的全局記錄。
G-share方法用分支指令的地址作為區(qū)分不同分支的重要標(biāo)志,將n位地址的高m位與歷史記錄的m位異或,然后再拼成新的n位地址去查尋分支模式表。在圖中,程序計(jì)數(shù)器的內(nèi)容是指等待預(yù)測(cè)的分支指令的PC地址,全局歷史記錄中記錄的是最近發(fā)生的分支結(jié)果。由于PC本身的最低兩位始終為零,因此選取程序計(jì)數(shù)器PC的n位(不包括低兩位無意義的0),用其中m位與全局歷史記錄的m位相異或,在拼接上余下的(n-m)位,形成n位分支模式表索引,對(duì)分支模式表進(jìn)行查找,決定分支轉(zhuǎn)移方向。
本發(fā)明提出了一種全局分支預(yù)測(cè)方法,吸收了經(jīng)典全局表預(yù)測(cè)器G-share方法的思想,超越了傳統(tǒng)G-share方法。不再只使用全局歷史記錄和低位PC地址進(jìn)行預(yù)測(cè),而是通過對(duì)程序運(yùn)行中所處狀態(tài)空間的分析,在預(yù)測(cè)中加入程序所處狀態(tài)的信息,再配以全局歷史記錄和低位PC地址進(jìn)行預(yù)測(cè)。
當(dāng)系統(tǒng)遇到分支轉(zhuǎn)移指令時(shí),從程序計(jì)數(shù)器PC中獲取當(dāng)前指令的計(jì)數(shù)值,并從全局歷史記錄表中獲取歷史記錄。
首先利用操作系統(tǒng)對(duì)系統(tǒng)空間和用戶空間的嚴(yán)格控制,使用程序計(jì)數(shù)器PC和在全局歷史記錄表中獲得的歷史記錄拼接成新的全局記錄。
前述步驟中得到的新的全局記錄取代傳統(tǒng)全局歷史預(yù)測(cè)方法中的全局歷史記錄,協(xié)同程序計(jì)數(shù)器PC進(jìn)行分支預(yù)測(cè)。
其中,新的全局記錄的形成方法是,利用PC中的某些含有重要信息的位,如圖2中的PC 31,取代原有全局歷史記錄中的高位,再與原有的全局歷史記錄的剩余位拼接形成新的全局記錄。
由于在預(yù)測(cè)時(shí)加入了程序所處狀態(tài)空間的有效信息,因此使用本發(fā)明的分支預(yù)測(cè)方法獲得的預(yù)測(cè)成功率比標(biāo)準(zhǔn)G-share方法有明顯的提高。
有關(guān)本發(fā)明的詳細(xì)原理,下面舉一具體實(shí)例,并配合圖2進(jìn)行說明。
圖2是本發(fā)明的分支預(yù)測(cè)器的示意圖。
針對(duì)本發(fā)明所應(yīng)用的龍芯處理器和Linux(Unix)操作系統(tǒng),可以通過引入PC地址的最高位PC 31來實(shí)現(xiàn)前述方法。在圖2中,程序計(jì)數(shù)器的內(nèi)容是指等待預(yù)測(cè)的分支指令的PC地址,全局歷史記錄中記錄的是最近發(fā)生的分支結(jié)果。選取程序計(jì)數(shù)器PC的n位(不包括低兩位無意義的0),用其中m位與全局歷史記錄的m-1位加上PC的最高位PC 31所組成的新m位結(jié)果相異或,形成n位分支模式表索引,對(duì)分支模式表進(jìn)行查找,決定分支方向。
因?yàn)樵谶@種操作系統(tǒng)中,PC 31是一個(gè)很重要的標(biāo)志,標(biāo)志著一個(gè)程序究竟是運(yùn)行在用戶空間中還是在系統(tǒng)空間中,因此在大多數(shù)情況下,他所包含的信息要遠(yuǎn)比離當(dāng)前分支指令較遠(yuǎn)的全局分支結(jié)果(即全局歷史記錄的高位)更有方向性,對(duì)預(yù)測(cè)更有好處,因此引入PC 31對(duì)系統(tǒng)的性能會(huì)有很大的提高。而在真實(shí)的系統(tǒng)中,由于程序在用戶空間和系統(tǒng)空間之間的切換是很頻繁的,因此作用就更加明顯了。實(shí)踐結(jié)果也證明了這一點(diǎn)。在實(shí)際系統(tǒng)中,本發(fā)明的預(yù)測(cè)準(zhǔn)確率比G-share方法有明顯的上升。
在其他操作系統(tǒng)中,在PC地址中也可以找到相應(yīng)的標(biāo)記程序空間的信息位,利用上述思想進(jìn)行預(yù)測(cè),同樣可以提高系統(tǒng)的預(yù)測(cè)準(zhǔn)確率。
由前述方法可知,本發(fā)明的優(yōu)點(diǎn)在于不需要增加任何額外的邏輯就可以獲得很好的性能提升,同時(shí)可以比正常G-share方法少需要至少一位全局歷史記錄。
權(quán)利要求
1.一種分支轉(zhuǎn)移預(yù)測(cè)方法,包含下列步驟a)當(dāng)系統(tǒng)遇到分支轉(zhuǎn)移指令時(shí),從程序計(jì)數(shù)器PC中獲取當(dāng)前指令的計(jì)數(shù)值,并從全局歷史記錄表中獲取歷史記錄;b)利用操作系統(tǒng)對(duì)系統(tǒng)空間和用戶空間的嚴(yán)格控制,使用程序計(jì)數(shù)器PC和前述步驟a)中獲得的歷史記錄拼接成新的全局記錄;c)前述步驟中得到的新的全局記錄取代傳統(tǒng)全局歷史預(yù)測(cè)方法中的全局歷史記錄,協(xié)同程序計(jì)數(shù)器PC進(jìn)行分支預(yù)測(cè)。
2.根據(jù)權(quán)利要求1所述的分支轉(zhuǎn)移預(yù)測(cè)方法,其特征在于,利用PC中的含有重要信息的位,取代原有全局歷史記錄中的高位,再與原有的全局歷史記錄的剩余位拼接形成新的全局記錄。
全文摘要
一種分支轉(zhuǎn)移預(yù)測(cè)方法,屬于微處理器體系結(jié)構(gòu)領(lǐng)域;一種分支轉(zhuǎn)移預(yù)測(cè)方法,包含下列步驟a)當(dāng)系統(tǒng)遇到分支轉(zhuǎn)移指令時(shí),從程序計(jì)數(shù)器PC中獲取當(dāng)前指令的計(jì)數(shù)值,并從全局歷史記錄表中獲取歷史記錄;b)利用操作系統(tǒng)對(duì)系統(tǒng)空間和用戶空間的嚴(yán)格控制,使用程序計(jì)數(shù)器PC和前述步驟a)中獲得的歷史記錄拼接成新的全局記錄;c)前述步驟中得到的新的全局記錄取代傳統(tǒng)全局歷史預(yù)測(cè)方法中的全局歷史記錄,協(xié)同程序計(jì)數(shù)器PC進(jìn)行分支預(yù)測(cè)。
文檔編號(hào)G06F9/42GK1447231SQ0210778
公開日2003年10月8日 申請(qǐng)日期2002年3月22日 優(yōu)先權(quán)日2002年3月22日
發(fā)明者馮雷 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所