專(zhuān)利名稱(chēng):實(shí)現(xiàn)混合預(yù)取的方法及相應(yīng)的裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及現(xiàn)代微處理器訪存性能優(yōu)化方法,尤其涉及一種實(shí)現(xiàn)混合預(yù)取的方法及相應(yīng)的裝置。
背景技術(shù):
隨著處理器與存儲(chǔ)器之間性能差距的不斷擴(kuò)大,訪存延遲逐漸成為制約處理器性能的關(guān)鍵因素。數(shù)據(jù)預(yù)取技術(shù)在處理器訪問(wèn)數(shù)據(jù)之前預(yù)測(cè)其訪存地址并提前發(fā)出訪存請(qǐng)求,以隱藏訪存延遲。數(shù)據(jù)預(yù)取技術(shù)主要可分為軟件預(yù)取技術(shù)和硬件預(yù)取技術(shù)。其中,硬件預(yù)取技術(shù)通過(guò)捕獲程序運(yùn)行過(guò)程中可重復(fù)的訪存模式(Memory Access Pattern)來(lái)預(yù)測(cè)后續(xù)的訪存地址并自動(dòng)發(fā)起預(yù)取請(qǐng)求。所有緩存失效地址按時(shí)間順序組成全局失效地址流(Miss Address Stream)。因程序行為的復(fù)雜性,全局失效地址流的規(guī)律性較差,通常的做法是對(duì)其進(jìn)行局部化(Localization),即按照某種屬性將其劃分成局部失效地址流,并在每個(gè)局部失效地址流中捕獲跨距(Stride)、地址相關(guān)(Address Correlation)、差值相關(guān)(Delta Correlation)等可重復(fù)訪存模式,以預(yù)測(cè)后續(xù)的訪存地址并發(fā)出預(yù)取請(qǐng)求。常見(jiàn)的局部化策略主要有兩種。PC (Program Counter)局部化策略將訪存指令PC相同的所有失效地址劃分為一個(gè)局部失效地址流,從而可以利用一條訪存指令產(chǎn)生的不同訪存地址之間的訪存規(guī)律。存儲(chǔ)區(qū)域(Memory Region)局部化策略將物理地址空間劃分為大小相同的存儲(chǔ)區(qū)域并將屬于同一存儲(chǔ)區(qū)域的所有失效地址劃分為一個(gè)局部失效地址流,從而可以利用不同訪存指令對(duì)同一存儲(chǔ)區(qū)域的訪問(wèn)規(guī)律。
但是,一種局部化策略只能利用程序運(yùn)行過(guò)程中的某一種訪存規(guī)律,而程序運(yùn)行過(guò)程中往往同時(shí)存在多種不同的訪存規(guī)律,單一的局部化策略并不能充分利用這些訪存規(guī)律,這限制了數(shù)據(jù)預(yù)取的范圍。因此,如何以較低的開(kāi)銷(xiāo)結(jié)合利用多種訪存規(guī)律以預(yù)取更多有用數(shù)據(jù)是提高預(yù)取性能的關(guān)鍵。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是提出一種實(shí)現(xiàn)混合預(yù)取的方法及相應(yīng)的裝置,能夠同時(shí)利用程序運(yùn)行過(guò)程中的多種訪存規(guī)律來(lái)預(yù)取更多有用數(shù)據(jù),以提高預(yù)取的性能。本發(fā)明所采用的技術(shù)方案為一種實(shí)現(xiàn)混合預(yù)取的方法,包括本發(fā)明使用全局歷史緩沖器按時(shí)間順序保存所有失效地址,使用索引表按照數(shù)據(jù)預(yù)取方法的局部化策略劃分局部失效地址流,并使用指針將屬于同一局部失效地址流的失效地址鏈接起來(lái)。本發(fā)明在保持全局歷史緩沖器中保存的失效地址不變的基礎(chǔ)上,通過(guò)多個(gè)索引表和多組指針來(lái)同時(shí)實(shí)現(xiàn)多種數(shù)據(jù)預(yù)取方法。每增加一種數(shù)據(jù)預(yù)取方法(比如預(yù)取方法I、預(yù)取方法2、…、預(yù)取方法N),只需要增加一個(gè)索引表和一組指針。在將新的失效地址存入全局歷史緩沖器時(shí),本發(fā)明逐個(gè)更新索引表中的指針,以將新的失效地址鏈接到按照每個(gè)預(yù)取方法的局部化策略劃分的局部失效地址流中。在查找可重復(fù)的訪存模式并產(chǎn)生預(yù)取請(qǐng)求時(shí),本發(fā)明按照某種順序(比如從預(yù)取方法I到預(yù)取方法N)逐個(gè)查找各預(yù)取方法的局部失效地址流。為減少查找的時(shí)間和能耗開(kāi)銷(xiāo),本發(fā)明在某種預(yù)取方法下找到可重復(fù)的訪存模式時(shí),即停止查找并產(chǎn)生預(yù)取請(qǐng)求,不再查找其余預(yù)取方法的局部失效地址流。同時(shí),本發(fā)明還提供了一種實(shí)現(xiàn)混合預(yù)取的預(yù)取器裝置,包括 多個(gè)索引表(Index Table),用于按照不同的局部化策略將全局失效地址流劃分成局部失效地址流,以實(shí)現(xiàn)多種不同的數(shù)據(jù)預(yù)取方法。每個(gè)索引表使用一種局部化策略劃分全局失效地址流,與一種數(shù)據(jù)預(yù)取方法相對(duì)應(yīng),含有全相聯(lián)或組相聯(lián)結(jié)構(gòu)的多個(gè)表項(xiàng),每個(gè)表項(xiàng)保存一個(gè)局部失效地址流的歷史訪存信息,并將該局部化策略的關(guān)鍵字作為標(biāo)簽位進(jìn)行索引查找,每一表項(xiàng)包含如下各個(gè)域有效位,用于標(biāo)識(shí)該表項(xiàng)是否保存有效信息;標(biāo)簽域,用于在索引表所對(duì)應(yīng)的數(shù)據(jù)預(yù)取方法中標(biāo)識(shí)不同的局部失效地址流;指針域,用于在索引表所對(duì)應(yīng)的數(shù)據(jù)預(yù)取方法中指向全局歷史緩沖器中屬于該局部失效地址流的失效地址鏈。進(jìn)一步地,該裝置還包括包含多組指針的全局歷史緩沖器(Global History Buffer, GHB),用于按時(shí)間順序保存所有的緩存失效地址,并使用多組指針按照不同的局部化策略將屬于同一局部失效地址流的所有地址鏈接起來(lái)。其中,每一組指針對(duì)應(yīng)一種數(shù)據(jù)預(yù)取方法,按照該數(shù)據(jù)預(yù)取方法的局部化策略,將屬于同一局部失效地址流的所有失效地址鏈接起來(lái),以在查找可重復(fù)訪存模式時(shí),順著指針讀出局部失效地址流的所有失效地址。本發(fā)明的有益效果是本發(fā)明能夠以較低的存儲(chǔ)開(kāi)銷(xiāo)和能耗開(kāi)銷(xiāo)同時(shí)實(shí)現(xiàn)多種數(shù)據(jù)預(yù)取方法,從而結(jié)合利用程序運(yùn)行過(guò)程中的多種訪存規(guī)律預(yù)取更多有用數(shù)據(jù)以提高預(yù)取的性能。
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)一步說(shuō)明。圖I是本發(fā)明的實(shí)現(xiàn)混合預(yù)取的預(yù)取器裝置實(shí)施例的內(nèi)部結(jié)構(gòu)圖。
具體實(shí)施例方式現(xiàn)在結(jié)合附圖和優(yōu)選實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。這些附圖均為簡(jiǎn)化的示意圖,僅以示意方式說(shuō)明本發(fā)明的基本結(jié)構(gòu),因此其僅顯示與本發(fā)明有關(guān)的構(gòu)成。如圖I所示,是本發(fā)明的實(shí)現(xiàn)混合預(yù)取的預(yù)取器裝置實(shí)施例的內(nèi)部結(jié)構(gòu)圖,包括對(duì)應(yīng)多種數(shù)據(jù)預(yù)取方法的多個(gè)索引表,其中對(duì)應(yīng)多種數(shù)據(jù)預(yù)取方法的多個(gè)索引表(比如索引表I、索引表2、···、索引表N),用于按照不同的局部化策略將全局失效地址流劃分成局部失效地址流,以實(shí)現(xiàn)多種不同的數(shù)據(jù)預(yù)取方法(比如預(yù)取方法I、預(yù)取方法2、…、預(yù)取方法N)。每個(gè)索引表使用一種局部化策略劃分全局失效地址流,與一種數(shù)據(jù)預(yù)取方法相對(duì)應(yīng),含有全相聯(lián)或組相聯(lián)結(jié)構(gòu)的多個(gè)表項(xiàng),每個(gè)表項(xiàng)保存一個(gè)局部失效地址流的歷史訪存信息,并將該局部化策略的關(guān)鍵字作為標(biāo)簽位進(jìn)行索引查找,每一表項(xiàng)包含如下3個(gè)域有效位(V),用于標(biāo)識(shí)該表項(xiàng)是否保存有效信息;標(biāo)簽域(比如Tagl、Tag2、…、TagN),用于在索引表所對(duì)應(yīng)的數(shù)據(jù)預(yù)取方法中標(biāo)識(shí)不同的局部失效地址流;指針域(比如Ptrl、Ptr2、…、PtrN),用于在索引表所對(duì)應(yīng)的數(shù)據(jù)預(yù)取方法中指向全局歷史緩沖器中屬于該局部失效地址流的失效地址鏈。上述預(yù)取器裝置實(shí)施例還包括包含多組指針的全局歷史緩沖器(GHB),其中包含多組指針的全局歷史緩沖器,用于按時(shí)間順序保存所有的緩存失效地址,并 使用多組指針按照不同的局部化策略將屬于同一局部失效地址流的所有地址鏈接起來(lái)。其中,每一組指針對(duì)應(yīng)一種數(shù)據(jù)預(yù)取方法,按照該數(shù)據(jù)預(yù)取方法的局部化策略,將屬于同一局部失效地址流的所有失效地址鏈接起來(lái),以在查找可重復(fù)訪存模式時(shí),順著指針讀出局部失效地址流的所有失效地址。每個(gè)全局歷史緩沖器表項(xiàng)包含如下多個(gè)域失效地址域(MissAddr),用于保存緩存失效地址;多個(gè)指針域(比如Ptrl、Ptr2、…、PtrN),用于按照所對(duì)應(yīng)的數(shù)據(jù)預(yù)取方法的局部化策略將屬于同一局部失效地址流的所有失效地址鏈接起來(lái)。在上述預(yù)取器裝置實(shí)施例中,在將新的失效地址存入全局歷史緩沖器時(shí),本發(fā)明逐個(gè)更新索引表中的指針(比如Ptrl、Ptr2、…、PtrN),以將新的失效地址鏈接到按照每個(gè)預(yù)取方法的局部化策略劃分的局部失效地址流中。在查找可重復(fù)的訪存模式并產(chǎn)生預(yù)取請(qǐng)求時(shí),本發(fā)明按照某種順序(比如從預(yù)取方法I到預(yù)取方法N)逐個(gè)查找各預(yù)取方法的局部失效地址流。在查找某種預(yù)取方法的某個(gè)局部失效地址流時(shí),本發(fā)明順著該預(yù)取方法的指針域(比如Ptrl、Ptr2、…、PtrN)逐個(gè)讀出屬于該局部失效地址流的所有失效地址,并嘗試捕捉跨距(Stride)、地址相關(guān)(AddressCorrelation)、差值相關(guān)(Delta Correlation)等可重復(fù)訪存模式。為減少查找的時(shí)間和能耗開(kāi)銷(xiāo),本發(fā)明在某種預(yù)取方法下找到可重復(fù)的訪存模式時(shí),即停止查找并產(chǎn)生預(yù)取請(qǐng)求,不再查找其余預(yù)取方法的局部失效地址流。以上說(shuō)明書(shū)中描述的只是本發(fā)明的具體實(shí)施方式
,各種舉例說(shuō)明不對(duì)本發(fā)明的實(shí)質(zhì)內(nèi)容構(gòu)成限制,所屬技術(shù)領(lǐng)域的普通技術(shù)人員在閱讀了說(shuō)明書(shū)后可以對(duì)以前所述的具體實(shí)施方式
做修改或變形,而不背離發(fā)明的實(shí)質(zhì)和范圍。
權(quán)利要求
1.一種實(shí)現(xiàn)混合預(yù)取的方法,其特征在于使用全局歷史緩沖器按時(shí)間順序保存一份失效地址歷史信息,并使用多個(gè)索引表和全局歷史緩沖器中的多組指針實(shí)現(xiàn)多種數(shù)據(jù)預(yù)取方法。
2.如權(quán)利要求I所述的實(shí)現(xiàn)混合預(yù)取的方法,其特征在于使用索引表按照數(shù)據(jù)預(yù)取方法的局部化策略劃分局部失效地址流,并使用指針將屬于同一局部失效地址流的失效地址鏈接起來(lái)。
3.如權(quán)利要求I所述的實(shí)現(xiàn)混合預(yù)取的方法,其特征在于每增加一種數(shù)據(jù)預(yù)取方法,需要增加一個(gè)索引表和一組指針;在將新的失效地址存入全局歷史緩沖器時(shí),逐個(gè)更新索引表中的指針,以將新的失效地址鏈接到按照每個(gè)預(yù)取方法的局部化策略劃分的局部失效地址流中。
4.如權(quán)利要求I所述的實(shí)現(xiàn)混合預(yù)取的方法,其特征在于在查找可重復(fù)的訪存模式并產(chǎn)生預(yù)取請(qǐng)求時(shí),按照順序逐個(gè)查找各預(yù)取方法的局部失效地址流。
5.如權(quán)利要求I所述的實(shí)現(xiàn)混合預(yù)取的方法,其特征在于在某種預(yù)取方法下找到可重復(fù)的訪存模式時(shí),即停止查找并產(chǎn)生預(yù)取請(qǐng)求,不再查找其余預(yù)取方法的局部失效地址流。
6.一種實(shí)現(xiàn)混合預(yù)取的預(yù)取器裝置,其特征在于多個(gè)索引表,用于按照不同的局部化策略將全局失效地址流劃分成局部失效地址流,以實(shí)現(xiàn)多種不同的數(shù)據(jù)預(yù)取方法;每個(gè)索引表使用一種局部化策略劃分全局失效地址流,與一種數(shù)據(jù)預(yù)取方法相對(duì)應(yīng),含有全相聯(lián)或組相聯(lián)結(jié)構(gòu)的多個(gè)表項(xiàng),每個(gè)表項(xiàng)保存一個(gè)局部失效地址流的歷史訪存信息,并將該局部化策略的關(guān)鍵字作為標(biāo)簽位進(jìn)行索引查找,每一表項(xiàng)包含如下各個(gè)域 有效位,用于標(biāo)識(shí)該表項(xiàng)是否保存有效信息; 標(biāo)簽域,用于在索引表所對(duì)應(yīng)的數(shù)據(jù)預(yù)取方法中標(biāo)識(shí)不同的局部失效地址流; 指針域,用于在索引表所對(duì)應(yīng)的數(shù)據(jù)預(yù)取方法中指向全局歷史緩沖器中屬于該局部失效地址流的失效地址鏈。
7.如權(quán)利要求6所述的實(shí)現(xiàn)混合預(yù)取的預(yù)取器裝置,其特征在于還包含多組指針的全局歷史緩沖器,用于按時(shí)間順序保存所有的緩存失效地址,并使用多組指針按照不同的局部化策略將屬于同一局部失效地址流的所有地址鏈接起來(lái)。
8.如權(quán)利要求7所述的實(shí)現(xiàn)混合預(yù)取的預(yù)取器裝置,其特征在于每一組指針對(duì)應(yīng)一種數(shù)據(jù)預(yù)取方法,按照該數(shù)據(jù)預(yù)取方法的局部化策略,將屬于同一局部失效地址流的所有失效地址鏈接起來(lái),以在查找可重復(fù)訪存模式時(shí),順著指針讀出局部失效地址流的所有失效地址。
全文摘要
本發(fā)明涉及一種在處理器中實(shí)現(xiàn)混合預(yù)取的方法及相應(yīng)的裝置,使用全局歷史緩沖器按時(shí)間順序保存一份失效地址歷史信息,并使用多個(gè)索引表和全局歷史緩沖器中的多組指針實(shí)現(xiàn)多種數(shù)據(jù)預(yù)取方法。在查找可重復(fù)的訪存模式并產(chǎn)生預(yù)取請(qǐng)求時(shí),本發(fā)明按照某種順序逐個(gè)使用各預(yù)取方法查找相應(yīng)的局部失效地址流。為減少查找的時(shí)間和能耗開(kāi)銷(xiāo),本發(fā)明在某種預(yù)取方法下找到可重復(fù)的訪存模式時(shí),即停止查找并產(chǎn)生預(yù)取請(qǐng)求,不再查找其余預(yù)取方法的局部失效地址流。本發(fā)明能夠以較低的存儲(chǔ)開(kāi)銷(xiāo)和能耗開(kāi)銷(xiāo)同時(shí)實(shí)現(xiàn)多種數(shù)據(jù)預(yù)取方法,從而結(jié)合利用程序運(yùn)行過(guò)程中的多種訪存規(guī)律提高預(yù)取的性能。
文檔編號(hào)G06F12/08GK102662862SQ20121007758
公開(kāi)日2012年9月12日 申請(qǐng)日期2012年3月22日 優(yōu)先權(quán)日2012年3月22日
發(fā)明者佟冬, 黨向磊, 易江芳, 王克義, 王簫音, 程旭, 陸俊林 申請(qǐng)人:北京北大眾志微系統(tǒng)科技有限責(zé)任公司