一種改進(jìn)型PAp分支預(yù)測(cè)方法【專利摘要】一種改進(jìn)型PAp分支預(yù)測(cè)方法,包括降低預(yù)測(cè)器訓(xùn)練時(shí)間方法和提高分支預(yù)測(cè)準(zhǔn)確率方法,降低預(yù)測(cè)器訓(xùn)練時(shí)間方法包括:使用一種新的有限狀態(tài)機(jī)來表示跳轉(zhuǎn)指令的跳轉(zhuǎn)方向;改進(jìn)第一次訓(xùn)練時(shí)跳轉(zhuǎn)方向訓(xùn)練方法;以及改進(jìn)PT表計(jì)數(shù)器計(jì)數(shù)規(guī)則;提高分支預(yù)測(cè)準(zhǔn)確率方法包括:在取指級(jí)當(dāng)遇到不跳轉(zhuǎn)的跳轉(zhuǎn)指令時(shí),同一個(gè)取指包中多取一套預(yù)測(cè)信息;跳轉(zhuǎn)出錯(cuò)后對(duì)PT表計(jì)數(shù)器正確復(fù)位,本發(fā)明可降低預(yù)測(cè)訓(xùn)練時(shí)間,提高預(yù)測(cè)效率并提高預(yù)測(cè)準(zhǔn)確率,從而提高處理器性能?!緦@f明】一種改進(jìn)型PAp分支預(yù)測(cè)方法
技術(shù)領(lǐng)域:
[0001]本發(fā)明涉及電子
技術(shù)領(lǐng)域:
,特別涉及一種改進(jìn)型PAp分支預(yù)測(cè)方法。【
背景技術(shù):
】[0002]現(xiàn)代處理器中,流水線技術(shù)被廣泛應(yīng)用,但對(duì)于跳轉(zhuǎn)指令,其在流水線技術(shù)中應(yīng)用存在問題。對(duì)于不進(jìn)行分支預(yù)測(cè)的處理器,當(dāng)遇到跳轉(zhuǎn)指令時(shí),流水線要被清空,從跳轉(zhuǎn)目標(biāo)地址重新執(zhí)行。另一種對(duì)待跳轉(zhuǎn)指令的方法是在編譯階段在跳轉(zhuǎn)指令后面加入泡沫等空指令,這樣的目的是等跳轉(zhuǎn)指令解碼出跳轉(zhuǎn)目標(biāo)地址后再執(zhí)行接下來的指令。這些做法都大大地浪費(fèi)了執(zhí)行周期,嚴(yán)重降低了處理器的執(zhí)行效率。對(duì)于更深級(jí)數(shù)流水線來說,跳轉(zhuǎn)損失更加巨大??梢钥闯?,分支預(yù)測(cè)技術(shù)對(duì)于處理器性能的提升意義重大。分支預(yù)測(cè)技術(shù)已經(jīng)是提高處理器性能的關(guān)鍵技術(shù)。[0003]根據(jù)預(yù)測(cè)完成階段的不同,分支預(yù)測(cè)技術(shù)分為靜態(tài)分支預(yù)測(cè)與動(dòng)態(tài)分支預(yù)測(cè)。靜態(tài)分支預(yù)測(cè)是在編譯階段完成的,主要方法是延遲跳轉(zhuǎn)。動(dòng)態(tài)分支預(yù)測(cè)是在硬件中完成,主要方式是雙峰預(yù)測(cè)與兩級(jí)自適應(yīng)預(yù)測(cè)。對(duì)于靜態(tài)分支預(yù)測(cè),其硬件結(jié)構(gòu)簡(jiǎn)單,不需額外增加預(yù)測(cè)邏輯,但對(duì)編譯器要求較高,并且通常編譯出的代碼量較大。動(dòng)態(tài)分支預(yù)測(cè)增加了額外的硬件開銷,但是預(yù)測(cè)準(zhǔn)確率較高,且對(duì)編譯器要求較低,軟件可移植性較強(qiáng)。動(dòng)態(tài)分支預(yù)測(cè)以其預(yù)測(cè)準(zhǔn)確性的優(yōu)勢(shì)越來越受到重視。[0004]動(dòng)態(tài)分支預(yù)測(cè)中常用到的方法包括雙峰預(yù)測(cè)與兩級(jí)自適應(yīng)預(yù)測(cè)。雙峰預(yù)測(cè)的核心部分是BTB表,表中存儲(chǔ)著跳轉(zhuǎn)指令的跳轉(zhuǎn)指令地址BIA(BranchInstruct1nAddress),跳轉(zhuǎn)目標(biāo)地址BTA(BranchTargetAddress)和分支歷史信息BHI(BranchHistoryInformat1n)等信息,通過索弓|BTB表來查找跳轉(zhuǎn)指令的跳轉(zhuǎn)信息,根據(jù)查出的信息進(jìn)行預(yù)測(cè)。雙峰預(yù)測(cè)的優(yōu)勢(shì)在于硬件結(jié)構(gòu)簡(jiǎn)單,但是準(zhǔn)確率較低。[0005]為了克服雙峰預(yù)測(cè)準(zhǔn)確率較低的問題,兩級(jí)自適應(yīng)預(yù)測(cè)應(yīng)運(yùn)而生。兩級(jí)自適應(yīng)預(yù)測(cè)是在雙峰預(yù)測(cè)的基礎(chǔ)上,為每個(gè)BTB表項(xiàng)增加一個(gè)分支歷史模式表(branchhistorypatterntable),通過歷史信息來預(yù)測(cè)當(dāng)前指令的跳轉(zhuǎn)情況,準(zhǔn)確率大大提高。兩級(jí)自適應(yīng)預(yù)測(cè)中比較有代表性的是PAp、GaS、GShare等預(yù)測(cè)器。兩級(jí)自適應(yīng)預(yù)測(cè)以較小的硬件代價(jià)換取了預(yù)測(cè)準(zhǔn)確率的大大提高。本發(fā)明采用PAp預(yù)測(cè)器進(jìn)行改進(jìn),PAp預(yù)測(cè)器為每個(gè)模式表PT(patterntable)維護(hù)一個(gè)計(jì)數(shù)器,每個(gè)計(jì)數(shù)值對(duì)應(yīng)一個(gè)跳轉(zhuǎn)方向,通過計(jì)數(shù)值不同來預(yù)測(cè)跳轉(zhuǎn)指令的不同跳轉(zhuǎn)方向。PAp預(yù)測(cè)器存在的一個(gè)問題是其訓(xùn)練時(shí)間較長,即對(duì)PT表計(jì)數(shù)器的每個(gè)計(jì)數(shù)值都要做相應(yīng)的預(yù)測(cè)方向訓(xùn)練,采用原有有限狀態(tài)機(jī)每個(gè)計(jì)數(shù)值需要兩次訓(xùn)練才能做正確預(yù)測(cè)。對(duì)于較大型的程序,PAp預(yù)測(cè)器在預(yù)測(cè)準(zhǔn)確率上有明顯優(yōu)勢(shì),但是對(duì)于中小型程序,由于訓(xùn)練時(shí)間較長,在訓(xùn)練過程中的預(yù)測(cè)準(zhǔn)確率較低。【
發(fā)明內(nèi)容】[0006]為了克服上述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的目的在于提供一種改進(jìn)型PAp分支預(yù)測(cè)方法,可降低預(yù)測(cè)器訓(xùn)練時(shí)間,提高分支預(yù)測(cè)準(zhǔn)確率。[0007]為了實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是:[0008]—種改進(jìn)型PAp分支預(yù)測(cè)方法,包括降低預(yù)測(cè)器訓(xùn)練時(shí)間方法和提高分支預(yù)測(cè)準(zhǔn)確率方法,其特征在于:[0009]所述降低預(yù)測(cè)器訓(xùn)練時(shí)間方法包括:使用一種新的有限狀態(tài)機(jī)來表示跳轉(zhuǎn)指令的跳轉(zhuǎn)方向;改進(jìn)第一次訓(xùn)練時(shí)跳轉(zhuǎn)方向訓(xùn)練方法;以及改進(jìn)PT表計(jì)數(shù)器計(jì)數(shù)規(guī)則;[0010]所述提高分支預(yù)測(cè)準(zhǔn)確率方法包括:在取指級(jí)當(dāng)遇到不跳轉(zhuǎn)的跳轉(zhuǎn)指令時(shí),同一個(gè)取指包中多取一套預(yù)測(cè)信息;跳轉(zhuǎn)出錯(cuò)后對(duì)PT表計(jì)數(shù)器正確復(fù)位。[0011]所述新的有限狀態(tài)機(jī)由00,10,11三個(gè)狀態(tài)組成,00代表跳轉(zhuǎn)方向?yàn)椴惶D(zhuǎn),10與11代表跳轉(zhuǎn)方向?yàn)樘D(zhuǎn),狀態(tài)機(jī)的初始狀態(tài)為00,穩(wěn)定狀態(tài)為00或11,當(dāng)?shù)谝淮斡龅教D(zhuǎn)指令時(shí),狀態(tài)由00變?yōu)?0,跳轉(zhuǎn)指令的PT表計(jì)數(shù)器中的某項(xiàng)只需一次訓(xùn)練,第二次該項(xiàng)就可以正確預(yù)測(cè)。[0012]所述改進(jìn)第一次訓(xùn)練時(shí)跳轉(zhuǎn)方向訓(xùn)練方法是指,對(duì)于某一跳轉(zhuǎn)指令,第一次訓(xùn)練時(shí),其對(duì)應(yīng)的PT表計(jì)數(shù)器0000項(xiàng)對(duì)應(yīng)其跳轉(zhuǎn)方向,此時(shí)所述0000項(xiàng)中的BHI值被更改,與此同時(shí),所述PT表計(jì)數(shù)器其他計(jì)數(shù)項(xiàng)的BHI值也做同樣的更改。[0013]所述改進(jìn)PT表計(jì)數(shù)器計(jì)數(shù)規(guī)則是指,訓(xùn)練時(shí),當(dāng)遇到某條跳轉(zhuǎn)指令的跳轉(zhuǎn)方向?yàn)椴惶D(zhuǎn)時(shí),該跳轉(zhuǎn)指令對(duì)應(yīng)的PT表計(jì)數(shù)器計(jì)數(shù)值清零,該跳轉(zhuǎn)指令的歷史跳轉(zhuǎn)信息訓(xùn)練結(jié)束。[0014]所述同一個(gè)取指包中多取一套預(yù)測(cè)信息是指,預(yù)測(cè)時(shí),對(duì)取指包中的指令進(jìn)行遍歷BTB表,當(dāng)遍歷到跳轉(zhuǎn)指令時(shí),取得表項(xiàng)中的跳轉(zhuǎn)信息進(jìn)行預(yù)測(cè),如果所述跳轉(zhuǎn)指令的跳轉(zhuǎn)方向?yàn)椴惶D(zhuǎn),則繼續(xù)遍歷所述取指包,如果所述取指包中有另一條跳轉(zhuǎn)指令,則將該所述另一條跳轉(zhuǎn)指令的跳轉(zhuǎn)信息同時(shí)取出,與第一條跳轉(zhuǎn)指令信息一同做跳轉(zhuǎn)預(yù)測(cè)。[0015]所述跳轉(zhuǎn)出錯(cuò)后對(duì)PT表計(jì)數(shù)器正確復(fù)位是指,當(dāng)執(zhí)行級(jí)執(zhí)行跳轉(zhuǎn)指令時(shí),如果發(fā)現(xiàn)預(yù)測(cè)發(fā)生錯(cuò)誤,則清空流水線,從正確的位置重新執(zhí)行,并對(duì)預(yù)測(cè)錯(cuò)的跳轉(zhuǎn)指令對(duì)應(yīng)的PT表計(jì)數(shù)器清零,同時(shí)將其他跳轉(zhuǎn)指令PT表計(jì)數(shù)器恢復(fù)到正確的計(jì)數(shù)值。[0016]與現(xiàn)有技術(shù)相比,本發(fā)明可有效降低預(yù)測(cè)器訓(xùn)練時(shí)間,提高預(yù)測(cè)效率并提高分支預(yù)測(cè)準(zhǔn)確率,進(jìn)而提高處理器性能?!靖綀D說明】[0017]圖1是PAp預(yù)測(cè)方法示意圖。[0018]圖2是本發(fā)明實(shí)施例雙發(fā)射超標(biāo)量架構(gòu)與六發(fā)射超長指令字架構(gòu)混合處理器的流水線不意圖O[0019]圖3是本發(fā)明實(shí)施例中PAp預(yù)測(cè)方法的具體流程示意圖。[0020]圖4是傳統(tǒng)預(yù)測(cè)方法有限狀態(tài)機(jī)示意圖。[0021]圖5是改進(jìn)型有限狀態(tài)機(jī)示意圖。[0022]圖6是本發(fā)明PT表計(jì)數(shù)信息示意圖。[0023]圖7是本發(fā)明取指包中兩條跳轉(zhuǎn)指令的跳轉(zhuǎn)信息示意圖。[0024]圖8是本發(fā)明PT表計(jì)數(shù)值正確復(fù)位方法示意圖?!揪唧w實(shí)施方式】[0025]下面結(jié)合說明書附圖對(duì)本發(fā)明實(shí)施例的【具體實(shí)施方式】做進(jìn)一步的描述。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋發(fā)明,而不能解釋為對(duì)本發(fā)明的限制。[0026]圖1是本發(fā)明PAp預(yù)測(cè)方法示意圖,包括降低預(yù)測(cè)器訓(xùn)練時(shí)間方法和提高分支預(yù)測(cè)準(zhǔn)確率方法,降低預(yù)測(cè)器訓(xùn)練時(shí)間方法包括:使用一種新的有限狀態(tài)機(jī)來表示跳轉(zhuǎn)指令的跳轉(zhuǎn)方向;改進(jìn)第一次訓(xùn)練時(shí)跳轉(zhuǎn)方向訓(xùn)練方法;以及改進(jìn)PT表計(jì)數(shù)器計(jì)數(shù)規(guī)則;提高分支預(yù)測(cè)準(zhǔn)確率方法包括:在取指級(jí)當(dāng)遇到不跳轉(zhuǎn)的跳轉(zhuǎn)指令時(shí),同一個(gè)取指包中多取一套預(yù)測(cè)信息;跳轉(zhuǎn)出錯(cuò)后對(duì)PT表計(jì)數(shù)器正確復(fù)位。[0027]為了能對(duì)本發(fā)明的實(shí)施例有更清楚的認(rèn)識(shí),本發(fā)明提出的改進(jìn)型PAp分支預(yù)測(cè)方法是在一款兼容ARM指令集的雙發(fā)射超標(biāo)量架構(gòu)與六發(fā)射超長指令字架構(gòu)混合處理器上實(shí)施的,所以下面對(duì)本發(fā)明實(shí)施例提出的雙發(fā)射超標(biāo)量架構(gòu)與六發(fā)射超長指令字架構(gòu)混合處理器的流水線進(jìn)行簡(jiǎn)單介紹。如圖2所示,是實(shí)施例雙發(fā)射超標(biāo)量架構(gòu)與六發(fā)射超長指令字架構(gòu)混合處理器的流水線示意圖,流水線設(shè)計(jì)為十級(jí)流水線結(jié)構(gòu),主要分為Fetch_PG、Fetch_PS、Fetch_WT、Fetch_IR、Fetch_EXP、Dispatch、Decode、Exel、Exe2、Exe3。在該處理器上,指令是以包的形式存在并逐級(jí)傳遞的,包括取指包、擴(kuò)展包、分發(fā)包。取指包是指令獲取單元從程序存儲(chǔ)器中讀取的256位數(shù)據(jù)包,包含16位與32位指令;擴(kuò)展包在Fetch_EXP級(jí)生成,將16位指令與32位指令統(tǒng)一擴(kuò)展成32位,每6條指令形成一個(gè)擴(kuò)展包,即192位;分發(fā)包在Dispatch級(jí)生成,根據(jù)分發(fā)策略,將并行執(zhí)行的指令裝載在一個(gè)分發(fā)包中。[0028]圖3是本發(fā)明實(shí)施例PAp預(yù)測(cè)方法的具體流程示意圖,可以看到,PAp預(yù)測(cè)器由BTB表和分支歷史信息PT表兩部分組成。BTB表存儲(chǔ)跳轉(zhuǎn)指令的跳轉(zhuǎn)信息,包括跳轉(zhuǎn)指令的跳轉(zhuǎn)指令地址BIA(BranchInstruct1nAddress),跳轉(zhuǎn)目標(biāo)地址BTA(BranchTargetAddress)和分支歷史信息BHI(BranchHistoryInformat1n)等。PT表由一個(gè)計(jì)數(shù)器組成,每個(gè)計(jì)數(shù)值對(duì)應(yīng)一個(gè)跳轉(zhuǎn)方向信息,其中跳轉(zhuǎn)方向信息由有限狀態(tài)機(jī)狀態(tài)表示。傳統(tǒng)的有限狀態(tài)機(jī)如圖4所示,由00,01,11,10四個(gè)狀態(tài)組成,其中00與01表示跳轉(zhuǎn)方向?yàn)椴惶D(zhuǎn),11與10表示跳轉(zhuǎn)方向?yàn)樘D(zhuǎn)。狀態(tài)機(jī)的初始狀態(tài)為00。對(duì)于每個(gè)狀態(tài)機(jī)所對(duì)應(yīng)的跳轉(zhuǎn)指令,當(dāng)其連續(xù)兩次跳轉(zhuǎn)方向?yàn)樘D(zhuǎn)時(shí),第三次遇到才能正確預(yù)測(cè)出它的跳轉(zhuǎn)方向。對(duì)于PAp預(yù)測(cè)方法,每個(gè)PT表計(jì)數(shù)值對(duì)應(yīng)一種跳轉(zhuǎn)歷史狀態(tài),如果PT表計(jì)數(shù)器為3位,S卩O?7計(jì)數(shù),每個(gè)狀態(tài)訓(xùn)練兩次,則訓(xùn)練次數(shù)為16,訓(xùn)練時(shí)間較長。[0029]本發(fā)明提出的第一種降低預(yù)測(cè)訓(xùn)練時(shí)間的方法是改進(jìn)有限狀態(tài)機(jī),如圖5所示,是改進(jìn)后的新型有限狀態(tài)機(jī)示意圖。新型有限狀態(tài)機(jī)由00,10,11三個(gè)狀態(tài)組成,00表示跳轉(zhuǎn)方向?yàn)椴惶D(zhuǎn),10與11表示跳轉(zhuǎn)方向?yàn)樘D(zhuǎn),狀態(tài)機(jī)初始狀態(tài)為00,訓(xùn)練后的穩(wěn)定狀態(tài)為00或11。當(dāng)?shù)谝淮斡龅教D(zhuǎn)指令時(shí),狀態(tài)由00變?yōu)?0,第二次遇到此跳轉(zhuǎn)指令時(shí)即可做出跳轉(zhuǎn)預(yù)測(cè),由兩次訓(xùn)練變?yōu)橐挥?xùn)練,訓(xùn)練時(shí)間減半。[0030]本發(fā)明提出的第二種降低預(yù)測(cè)訓(xùn)練時(shí)間的方法是對(duì)PT表每個(gè)計(jì)數(shù)項(xiàng)對(duì)應(yīng)跳轉(zhuǎn)方向的訓(xùn)練方法做出改進(jìn)。如圖6所示,是本發(fā)明PT表計(jì)數(shù)信息示意圖。當(dāng)?shù)谝淮斡龅教D(zhuǎn)指令時(shí),計(jì)數(shù)值為0000項(xiàng)對(duì)應(yīng)此次跳轉(zhuǎn)情況,傳統(tǒng)方法是訓(xùn)練對(duì)該項(xiàng)的狀態(tài)機(jī)狀態(tài)進(jìn)行更改,其他計(jì)數(shù)值對(duì)應(yīng)的狀態(tài)機(jī)狀態(tài)不變。本發(fā)明改進(jìn)此訓(xùn)練方法,當(dāng)?shù)谝淮斡龅教D(zhuǎn)指令時(shí),不僅對(duì)0000項(xiàng)做狀態(tài)機(jī)狀態(tài)的更改,對(duì)其他計(jì)數(shù)項(xiàng)對(duì)應(yīng)的狀態(tài)機(jī)狀態(tài)做同0000項(xiàng)一樣的更改。這樣做的原因在于,對(duì)于for(i=0;i〈10;i++)這樣的循環(huán),前面多次跳轉(zhuǎn)指令的跳轉(zhuǎn)方向都是跳轉(zhuǎn),最后一次跳轉(zhuǎn)指令的跳轉(zhuǎn)方向?yàn)椴惶D(zhuǎn),同時(shí)訓(xùn)練每個(gè)計(jì)數(shù)項(xiàng)的狀態(tài)機(jī)使得所有跳轉(zhuǎn)方向?yàn)樘D(zhuǎn)的跳轉(zhuǎn)指令只需要一次訓(xùn)練即可。對(duì)于改進(jìn)后的訓(xùn)練方法,只需兩次訓(xùn)練即可對(duì)跳轉(zhuǎn)指令進(jìn)行完整的預(yù)測(cè)。[0031]本發(fā)明提出的第三種降低預(yù)測(cè)訓(xùn)練時(shí)間的方法是改進(jìn)PT表計(jì)數(shù)器的計(jì)數(shù)方法。訓(xùn)練時(shí),每當(dāng)遇到同一條跳轉(zhuǎn)指令,PT表計(jì)數(shù)器計(jì)數(shù)值加一并將該次跳轉(zhuǎn)方向存入計(jì)數(shù)值對(duì)應(yīng)項(xiàng),當(dāng)某條跳轉(zhuǎn)指令的跳轉(zhuǎn)方向?yàn)椴惶D(zhuǎn)時(shí),PT表計(jì)數(shù)器計(jì)數(shù)歸零,重新累加計(jì)數(shù)。圖6中,PT表計(jì)數(shù)器每當(dāng)遇到跳轉(zhuǎn)指令時(shí)加一,計(jì)數(shù)值為1001時(shí)對(duì)應(yīng)的跳轉(zhuǎn)方向?yàn)椴惶D(zhuǎn),則計(jì)數(shù)值歸零,1001后面計(jì)數(shù)項(xiàng)無效。這樣改進(jìn)的意義在于,對(duì)于for(i=0;i〈10;i++)這樣的循環(huán),只需記錄10次跳轉(zhuǎn)狀態(tài),沒有必要記錄第10次之后的跳轉(zhuǎn)狀態(tài)。[0032]本發(fā)明提出的一種提高預(yù)測(cè)準(zhǔn)確率的方法是取指包取兩套跳轉(zhuǎn)預(yù)測(cè)信息。如圖7所示,是取指包中取得兩套預(yù)測(cè)信息示意圖。在Fetch_PG級(jí),指令以取指包形式存在,遍歷取指包中每條指令并索引BTB表項(xiàng),如果發(fā)現(xiàn)跳轉(zhuǎn)指令,則取出跳轉(zhuǎn)信息進(jìn)行預(yù)測(cè)。當(dāng)發(fā)現(xiàn)的跳轉(zhuǎn)指令跳轉(zhuǎn)方向?yàn)椴惶鴷r(shí),取指包中跳轉(zhuǎn)指令后面的指令仍會(huì)執(zhí)行,如果只取這一條跳轉(zhuǎn)指令的跳轉(zhuǎn)信息,此取指包中其他跳轉(zhuǎn)指令無法預(yù)測(cè)。所以,當(dāng)?shù)谝粭l跳轉(zhuǎn)指令BI的跳轉(zhuǎn)方向?yàn)椴惶D(zhuǎn)時(shí),繼續(xù)遍歷取指包,如果遍歷到第二條跳轉(zhuǎn)指令B2,則BI與B2跳轉(zhuǎn)信息同時(shí)取出進(jìn)行預(yù)測(cè)。[0033]本發(fā)明提出的另一種提高預(yù)測(cè)準(zhǔn)確率的方法是跳轉(zhuǎn)出錯(cuò)后PT表計(jì)數(shù)器計(jì)數(shù)值的正確復(fù)位。當(dāng)一條跳轉(zhuǎn)指令按照預(yù)測(cè)信息進(jìn)行執(zhí)行后,如果此預(yù)測(cè)是錯(cuò)誤的,那么它后面執(zhí)行的指令本不該執(zhí)行,在預(yù)測(cè)錯(cuò)誤被發(fā)現(xiàn)之前,會(huì)按照錯(cuò)誤的預(yù)測(cè)執(zhí)行多條指令,這些指令當(dāng)中可能存在其他跳轉(zhuǎn)指令,而這些跳轉(zhuǎn)指令本不該執(zhí)行,也即它們的PT表計(jì)數(shù)器本不該改變。為解決這種錯(cuò)誤的計(jì)數(shù),本發(fā)明提出跳轉(zhuǎn)出錯(cuò)后PT表計(jì)數(shù)值正確復(fù)位方法。圖8是PT表計(jì)數(shù)值正確復(fù)位方法示意圖,取兩套PT表計(jì)數(shù)器計(jì)數(shù)值,一套是預(yù)測(cè)階段計(jì)數(shù)值,另一套是實(shí)際執(zhí)行的計(jì)數(shù)值,實(shí)際執(zhí)行的計(jì)數(shù)值代表跳轉(zhuǎn)指令真正執(zhí)行所對(duì)應(yīng)的計(jì)數(shù)值,預(yù)測(cè)階段的計(jì)數(shù)值則是為預(yù)測(cè)而設(shè)計(jì)的計(jì)數(shù)值,當(dāng)預(yù)測(cè)出錯(cuò)時(shí),實(shí)際執(zhí)行的計(jì)數(shù)值是正確的計(jì)數(shù)值,此時(shí)需將錯(cuò)誤計(jì)數(shù)值恢復(fù)到實(shí)際執(zhí)行計(jì)數(shù)值即可。[0034]以上,僅為本發(fā)明的較佳實(shí)施例,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本
技術(shù)領(lǐng)域:
的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求所界定的保護(hù)范圍為準(zhǔn)。【主權(quán)項(xiàng)】1.一種改進(jìn)型PAp分支預(yù)測(cè)方法,包括降低預(yù)測(cè)器訓(xùn)練時(shí)間方法和提高分支預(yù)測(cè)準(zhǔn)確率方法,其特征在于:所述降低預(yù)測(cè)器訓(xùn)練時(shí)間方法包括:使用一種新的有限狀態(tài)機(jī)來表示跳轉(zhuǎn)指令的跳轉(zhuǎn)方向;改進(jìn)第一次訓(xùn)練時(shí)跳轉(zhuǎn)方向訓(xùn)練方法;以及改進(jìn)PT表計(jì)數(shù)器計(jì)數(shù)規(guī)則;所述提高分支預(yù)測(cè)準(zhǔn)確率方法包括:在取指級(jí)當(dāng)遇到不跳轉(zhuǎn)的跳轉(zhuǎn)指令時(shí),同一個(gè)取指包中多取一套預(yù)測(cè)信息;跳轉(zhuǎn)出錯(cuò)后對(duì)PT表計(jì)數(shù)器正確復(fù)位。2.根據(jù)權(quán)利要求1所述改進(jìn)型PAp分支預(yù)測(cè)方法,其特征在于,所述新的有限狀態(tài)機(jī)由OO,10,11三個(gè)狀態(tài)組成,00代表跳轉(zhuǎn)方向?yàn)椴惶D(zhuǎn),10與11代表跳轉(zhuǎn)方向?yàn)樘D(zhuǎn),狀態(tài)機(jī)的初始狀態(tài)為00,穩(wěn)定狀態(tài)為00或11,當(dāng)?shù)谝淮斡龅教D(zhuǎn)指令時(shí),狀態(tài)由00變?yōu)?0。3.根據(jù)權(quán)利要求1所述改進(jìn)型PAp分支預(yù)測(cè)方法,其特征在于,所述改進(jìn)第一次訓(xùn)練時(shí)跳轉(zhuǎn)方向訓(xùn)練方法是指,對(duì)于某一跳轉(zhuǎn)指令,第一次訓(xùn)練時(shí),其對(duì)應(yīng)的PT表計(jì)數(shù)器0000項(xiàng)對(duì)應(yīng)其跳轉(zhuǎn)方向,此時(shí)所述0000項(xiàng)中的BHI值被更改,與此同時(shí),所述PT表計(jì)數(shù)器其他計(jì)數(shù)項(xiàng)的BHI值也做同樣的更改。4.根據(jù)權(quán)利要求1所述改進(jìn)型PAp分支預(yù)測(cè)方法,其特征在于,所述改進(jìn)PT表計(jì)數(shù)器計(jì)數(shù)規(guī)則是指,訓(xùn)練時(shí),當(dāng)遇到某條跳轉(zhuǎn)指令的跳轉(zhuǎn)方向?yàn)椴惶D(zhuǎn)時(shí),該跳轉(zhuǎn)指令對(duì)應(yīng)的PT表計(jì)數(shù)器計(jì)數(shù)值清零,該跳轉(zhuǎn)指令的歷史跳轉(zhuǎn)信息訓(xùn)練結(jié)束。5.根據(jù)權(quán)利要求1所述改進(jìn)型PAp分支預(yù)測(cè)方法,其特征在于,所述同一個(gè)取指包中多取一套預(yù)測(cè)信息是指,預(yù)測(cè)時(shí),對(duì)取指包中的指令進(jìn)行遍歷BTB表,當(dāng)遍歷到跳轉(zhuǎn)指令時(shí),取得表項(xiàng)中的跳轉(zhuǎn)信息進(jìn)行預(yù)測(cè),如果所述跳轉(zhuǎn)指令的跳轉(zhuǎn)方向?yàn)椴惶D(zhuǎn),則繼續(xù)遍歷所述取指包,如果所述取指包中有另一條跳轉(zhuǎn)指令,則將該所述另一條跳轉(zhuǎn)指令的跳轉(zhuǎn)信息同時(shí)取出,與第一條跳轉(zhuǎn)指令信息一同做跳轉(zhuǎn)預(yù)測(cè)。6.根據(jù)權(quán)利要求1所述改進(jìn)型PAp分支預(yù)測(cè)方法,其特征在于,所述跳轉(zhuǎn)出錯(cuò)后對(duì)PT表計(jì)數(shù)器正確復(fù)位是指,當(dāng)執(zhí)行級(jí)執(zhí)行跳轉(zhuǎn)指令時(shí),如果發(fā)現(xiàn)預(yù)測(cè)發(fā)生錯(cuò)誤,則清空流水線,從正確的位置重新執(zhí)行,并對(duì)預(yù)測(cè)錯(cuò)的跳轉(zhuǎn)指令對(duì)應(yīng)的PT表計(jì)數(shù)器清零,同時(shí)將其他跳轉(zhuǎn)指令PT表計(jì)數(shù)器恢復(fù)到正確的計(jì)數(shù)值。7.根據(jù)權(quán)利要求1所述改進(jìn)型PAp分支預(yù)測(cè)方法,其特征在于,所述復(fù)位方法為:取兩套PT表計(jì)數(shù)器計(jì)數(shù)值,一套是預(yù)測(cè)階段計(jì)數(shù)值,另一套是實(shí)際執(zhí)行的計(jì)數(shù)值,實(shí)際執(zhí)行的計(jì)數(shù)值代表跳轉(zhuǎn)指令真正執(zhí)行所對(duì)應(yīng)的計(jì)數(shù)值,預(yù)測(cè)階段的計(jì)數(shù)值則是為預(yù)測(cè)而設(shè)計(jì)的計(jì)數(shù)值,當(dāng)預(yù)測(cè)出錯(cuò)時(shí),實(shí)際執(zhí)行的計(jì)數(shù)值是正確的計(jì)數(shù)值,此時(shí)將錯(cuò)誤計(jì)數(shù)值恢復(fù)到實(shí)際執(zhí)行計(jì)數(shù)值?!疚臋n編號(hào)】G06F9/38GK105867884SQ201610177103【公開日】2016年8月17日【申請(qǐng)日】2016年3月24日【發(fā)明人】何虎,付家為,麻軍平,王旭,馬千里【申請(qǐng)人】清華大學(xué)