亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

雙重分支目標(biāo)緩沖器和分支目標(biāo)處理系統(tǒng)及處理方法

文檔序號:6367921閱讀:296來源:國知局
專利名稱:雙重分支目標(biāo)緩沖器和分支目標(biāo)處理系統(tǒng)及處理方法
技術(shù)領(lǐng)域
本發(fā)明涉及具有分支預(yù)測單元的處理器,特別是涉及ー種分支預(yù)測單元內(nèi)的分支目標(biāo)緩沖器(Branch target buffer, BTB)。
背景技術(shù)
現(xiàn)有的計(jì)算器通常為流水線體系結(jié)構(gòu),“流水線”(或也稱作“推測執(zhí)行”)是ー個(gè)術(shù)語,通常指其中使用一系列功能步驟或處理階段來處理指令序列的操作方法,每個(gè)處理階段通常在單個(gè)時(shí)鐘周期內(nèi)完成。每個(gè)處理階段通常在單個(gè)時(shí)鐘周期內(nèi)完成它的一個(gè)或多個(gè)構(gòu)成操作。與在開始下一指令之前將每條指令處理完成的非流水線處理器不同,流水線處理器在流水線的不同處理階段同時(shí)處理幾條指令。流水線階段可以由設(shè)計(jì)者任意指定,但通常包括指令獲取(fetch )、指令譯碼(Decode )、指令執(zhí)行(Execute )、執(zhí)行解析階段。指令獲取階段從指令當(dāng)前被存儲的任何所在(例如,主系統(tǒng)存儲器或者指令隊(duì)伍)檢索指令。一旦獲取,指令被傳遞到譯碼器階段,其通常確定指令地址和/或指令操作數(shù)。指令從譯碼器階段傳遞到執(zhí)行由指令指示的ー個(gè)或多個(gè)操作的執(zhí)行階段。執(zhí)行解析階段通常涉及將通過執(zhí)行指令生成的結(jié)果(例如,結(jié)果數(shù)據(jù))回寫(write-back)到一個(gè)或多個(gè)寄存器或存儲器以備以后使用。流水線提供了毫無疑問的性能收益,只要待處理的指令序列保持高度線性或者可預(yù)測。不幸的是,大多數(shù)指令序列包含眾多的能夠引入非順序執(zhí)行路徑的指令。所謂的“分支指令”(包括,例如,跳轉(zhuǎn),返回和條件分支指令)在流水線處理器中產(chǎn)生了顯著的性能損害,除非實(shí)現(xiàn)分支預(yù)測的有效形式。在未預(yù)測到(或錯誤預(yù)測)的分支指令引起偏離處理器內(nèi)當(dāng)前流水線中的指令序列時(shí)出現(xiàn)性能損害。如果發(fā)生這種情況,則當(dāng)前流水指令序列就必須被扔掉或“清除”,而新的指令序列必須加載到流水線中。流水線清除浪費(fèi)了眾多時(shí)鐘周期并且通常使處理器的執(zhí)行變慢。分支目標(biāo)緩沖器預(yù)測的成敗影響著中央處理器(CPU)的速度,越來越被重視。分支目標(biāo)緩沖器用來預(yù)測分支命令的下ー個(gè)命令的地址的。它在CPU中的回路構(gòu)成如圖I所
/Jn ο現(xiàn)有分支目標(biāo)緩沖器構(gòu)成以及預(yù)測方法如下PC為Program Counter,它為命令所在的地址,它被分為Tag和Index ;BTB為現(xiàn)有分支目標(biāo)緩沖器,它包含了分支命令的地址的Tag和分支命令所目標(biāo)地址(Target Address);它的動作包括下一個(gè)地址的預(yù)測,和得到地址之后的BTB的更新。詳細(xì)動作是當(dāng)分支命令到來時(shí),開始預(yù)測,在BTB中,用PC的index從對應(yīng)的Index中取出BTB的Tag,并與PC的tag進(jìn)行比較,生成miss/hit信號,如果2個(gè)tag相同,信號為hit,如果2個(gè)tag不相同,信號為miss。這將作為BTB下方的選擇器的控制信號。另外從對應(yīng)的Index中取出Target Address,投入BTB下方的選擇器,待被選擇。
上述BTB存在的問題為不同的命令有在相同的index里登陸的可能,這樣將導(dǎo)致分支目標(biāo)緩沖器無法正確的預(yù)測。有文獻(xiàn)(J. K. F. Lee and A. J. Smith, "Branch prediction strategies andbranch target buffer design," IEEE Comput. Mag. pp. 6-22, Jan. 1984)公開了如圖2所示的BTB結(jié)構(gòu),這種方法雖然能緩解BTB的錯誤,但是仍存在大量的錯誤。不同的命令有在相同的index里登陸的可能,這樣將導(dǎo)致分支目標(biāo)緩沖器無法正確的預(yù)測。另一文獻(xiàn)(Y.Ishii , T. Sawada, K. Kuroyanagi, M. Inaba, K. Hiraki,Bimode Cascading: Ada ptive Rehashing for ITTAGE Indirect Branch Predictor , 2nd
JILP Workshop on Computer Architecture Competitions (JWAC-2),2011)公開了如圖 3所示的BTB結(jié)構(gòu),這個(gè)方法是利用不同長的Globe History Register (GHR)和PC (ProgramCounter)來生成index,從而檢索對因的地址來作為下ー個(gè)命令的地址。

發(fā)明內(nèi)容
本發(fā)明主要解決的技術(shù)問題是提供一種雙重分支目標(biāo)緩沖器,能夠減少預(yù)測錯誤,有效加快中央處理器(CPU)的速度。為解決上述技術(shù)問題,本發(fā)明采用的一個(gè)技術(shù)方案是提供一種雙重分支目標(biāo)緩沖器,包括第一分支目標(biāo)緩沖器和第二分支目錄緩沖器,所述第一分支目標(biāo)緩沖器包括多路組相連接結(jié)構(gòu)的第一指令緩存單元,所述第一指令緩存單元用于臨時(shí)存儲預(yù)取的指令,每路組包括第一存儲器和第二存儲器,所述第一存儲器用于存儲地址標(biāo)簽位,所述第二存儲器用于存儲所述地址標(biāo)簽位所對應(yīng)的有條件分支命令目標(biāo)地址;所述第二分支目標(biāo)緩沖器包括多路組相連接結(jié)構(gòu)的第二指令緩存單元,所述第二指令緩存單元用于臨時(shí)存儲預(yù)取指令,每個(gè)路組包括第三存儲器和第四存儲器,所述第三存儲器存儲指令地址,所述第四存儲器存儲指令地址所對應(yīng)的無條件分支命令目標(biāo)地址。本發(fā)明同時(shí)提供一種分支目標(biāo)處理系統(tǒng),包括CPU整數(shù)単元、雙重分支目標(biāo)緩沖器、分支目標(biāo)預(yù)測単元、加法器、比較器和選擇器;
所述CPU整數(shù)単元,采用流水線結(jié)構(gòu),包括指令提取單元和位于所述指令提取單元后續(xù)的指令執(zhí)行單元,所述指令提取單元將提取的指令地址分別傳輸給雙重分支目標(biāo)緩沖器、加法器和分支目標(biāo)預(yù)測単元,所述指令執(zhí)行單元的后續(xù)單元將執(zhí)行結(jié)果地址分別傳輸給雙重分支目標(biāo)緩沖器和分支目標(biāo)預(yù)測単元;
所述分支目標(biāo)預(yù)測単元,對分支條件成立與否進(jìn)行預(yù)測,并將結(jié)果傳輸給選擇器;
所述加法器,將所述執(zhí)行指令地址進(jìn)行處理,得到順序的下一條指令地址,并將結(jié)果傳輸給選擇器;
所述雙重分支目標(biāo)緩沖器,包括第一分支目標(biāo)緩沖器和第二分支目錄緩沖器,所述第一分支目標(biāo)緩沖器包括多路組相連接結(jié)構(gòu)的第一指令緩存單元,所述第一指令緩存單元用于臨時(shí)存儲預(yù)取的指令,每路組包括第一存儲器和第二存儲器,所述第一存儲器用于存儲地址標(biāo)簽位,所述第二存儲器用于存儲所述地址標(biāo)簽位所對應(yīng)的有條件分支命令目標(biāo)地址;所述第二分支目標(biāo)緩沖器包括多路組相連接結(jié)構(gòu)的第二指令緩存單元,所述第二指令緩存單元用于臨時(shí)存儲預(yù)取指令,每個(gè)路組包括第三存儲器和第四存儲器,所述第三存儲器存儲指令地址,所述第四存儲器存儲指令地址所對應(yīng)的無條件分支命令目標(biāo)地址;
指令地址包括索引位和標(biāo)簽位,所述指令地址的索引位取出對應(yīng)第一分支目標(biāo)緩沖器中的標(biāo)簽位傳輸給比較器,與指令地址的標(biāo)簽位相比較,將結(jié)果傳輸給選擇器,同時(shí)將所述第一分支目標(biāo)緩沖器中的標(biāo)簽位對應(yīng)的目標(biāo)地址傳輸給選擇器;同時(shí)檢索所述第三存儲器,如果存在相同的指令地址,則取出與指令地址相對應(yīng)的目標(biāo)地址傳輸給選擇器;
所述選擇器,對上述輸入的數(shù)據(jù)進(jìn)行選擇,將待執(zhí)行的下一條指令傳輸給所述CPU整數(shù)單元。本發(fā)明還提供一種分支目標(biāo)處理方法,具體步驟包括
(100)提供一種分支目標(biāo)處理系統(tǒng),包括CPU的整數(shù)単元、雙重分支目標(biāo)緩沖器、分支目標(biāo)預(yù)測単元、加法器、比較器和選擇器;所述CPU的整數(shù)単元,采用流水線結(jié)構(gòu),至少包括指令提取單元和位于所述指令提取單元后續(xù)的指令執(zhí)行單元;所述雙重分支目標(biāo)緩沖器,包括第一分支目標(biāo)緩沖器和第二分支目錄緩沖器,所述第一分支目標(biāo)緩沖器包括多路組 相連接結(jié)構(gòu)的第一指令緩存單元,所述第一指令緩存單元用于臨時(shí)存儲預(yù)取的指令,每路組包括第一存儲器和第二存儲器,所述第一存儲器用于存儲地址標(biāo)簽位,所述第二存儲器用于存儲所述地址標(biāo)簽位所對應(yīng)的有條件分支命令目標(biāo)地址;所述第二分支目標(biāo)緩沖器包括多路組相連接結(jié)構(gòu)的第二指令緩存單元,所述第二指令緩存單元用于臨時(shí)存儲預(yù)取指令,每個(gè)路組包括第三存儲器和第四存儲器,所述第三存儲器存儲指令地址,所述第四存儲器存儲指令地址所對應(yīng)的無條件分支命令目標(biāo)地址;
(200)、所述指令提取單元提取指令地址分別傳輸給雙重分支目標(biāo)緩沖器、加法器和分支目標(biāo)預(yù)測單元,
(300)、所述分支目標(biāo)預(yù)測単元,對分支條件成立與否進(jìn)行預(yù)測,并將預(yù)測結(jié)果傳輸給選擇器;所述加法器,將所述執(zhí)行指令地址進(jìn)行處理,得到順序的下一條指令地址,并將計(jì)算結(jié)果傳輸給選擇器;
(400)、指令地址包括索引位和標(biāo)簽位,所述指令地址的索引位取出對應(yīng)第一分支目標(biāo)緩沖器中的標(biāo)簽位傳輸給比較器,與指令地址的標(biāo)簽位相比較,將比較結(jié)果傳輸給選擇器,同時(shí)將所述第一分支目標(biāo)緩沖器中的標(biāo)簽位對應(yīng)的目標(biāo)地址傳輸給選擇器;同時(shí)檢索所述第三存儲器,如果存在相同的指令地址,則取出與指令地址相對應(yīng)的目標(biāo)地址傳輸給選擇器;
(500)、如果預(yù)測結(jié)果為成立,同時(shí)比較結(jié)果為相同,選擇器選擇所述第一分支目標(biāo)緩沖器中的目標(biāo)地址傳輸給所述CPU的整數(shù)単元;如果檢測結(jié)果為成立,而比較結(jié)果為不同,選擇器選擇所述第二分支目標(biāo)緩沖器中的目標(biāo)地址傳輸給所述CPU的整數(shù)単元;如果預(yù)測結(jié)果為不成立,選擇器則選擇加法器的計(jì)算結(jié)果傳輸給所述CPU的整數(shù)単元。在本發(fā)明一個(gè)較佳實(shí)施例中,還包括步驟(600 )、分支命令執(zhí)行完畢后,進(jìn)行更新如果分支命令是無條件分支命令的話,檢索第二分支目標(biāo)緩沖器,如果有相同指令地址存在就不用登陸,如果沒有相同的存在,尋找空處,將指令地址登陸到第三存儲器中,下ー個(gè)命令的地址登陸到第四存儲器中;如果命令是有條件分支命令而且預(yù)測結(jié)果為成立的情況下,將在第一支目標(biāo)緩沖器的對應(yīng)的索引位內(nèi)登陸標(biāo)簽位和目標(biāo)地址。在本發(fā)明ー個(gè)較佳實(shí)施例中,所述第二分支目標(biāo)緩存器的第四存儲單元為CAM構(gòu)造,以先進(jìn)先出的原則進(jìn)行覆蓋。 本發(fā)明的有益效果是本發(fā)明雙重分支目標(biāo)緩沖器,有兩個(gè)分支目標(biāo)緩沖器,減少不同的命令在相同的index里登陸的可能,提高分支目標(biāo)緩沖器正確的預(yù)測精度,有效加快中央處理器(CPU)的速度。


圖I是現(xiàn)有技術(shù)中ー種分支目標(biāo)緩存器的結(jié)構(gòu)示意 圖2是現(xiàn)有技術(shù)中又一種分支目標(biāo)緩存器的結(jié)構(gòu)示意 圖3是現(xiàn)有技術(shù)中再一種分支目標(biāo)緩存器的結(jié)構(gòu)示意 圖4是本發(fā)明分支目標(biāo)處理系統(tǒng)的結(jié)構(gòu)示意 圖5是本發(fā)明分支目標(biāo)預(yù)測錯誤比率 圖6是本發(fā)明雙重目標(biāo)緩存器的提速效果示意圖。
具體實(shí)施例方式下面結(jié)合附圖對本發(fā)明的較佳實(shí)施例進(jìn)行詳細(xì)闡述,以使本發(fā)明的優(yōu)點(diǎn)和特征能更易于被本領(lǐng)域技術(shù)人員理解,從而對本發(fā)明的保護(hù)范圍做出更為清楚明確的界定。請參閱圖I,本發(fā)明實(shí)施例包括
一種分支目標(biāo)處理系統(tǒng),包括CPU的整數(shù)単元(未標(biāo)注)、雙重分支目標(biāo)緩沖器(未標(biāo)注)、比較器5、加法器(adder) 6、分支目標(biāo)預(yù)測単元(PHT) 7和選擇器8 ;
所述CPU的整數(shù)単元,采用流水線結(jié)構(gòu),依次包括指令提取(fetch)単元21、指令譯碼(decode)單兀22、指令執(zhí)行(execute)單兀23、存儲器訪問(memory access)單兀24和寫ACwrite back)単元25,所述指令提取單元21將從指令存儲器I中提取的指令地址(PC)分別傳輸給雙重分支目標(biāo)緩沖器、加法器6和分支目標(biāo)預(yù)測単元7,所述指令執(zhí)行單元23的后續(xù)單元存儲器訪問單元24將執(zhí)行結(jié)果地址分別傳輸給雙重分支目標(biāo)緩沖器和分支目標(biāo)預(yù)測單元7 ;
所述分支目標(biāo)預(yù)測単元7,對分支條件成立與否進(jìn)行預(yù)測,并將預(yù)算結(jié)果taken/nottaken傳輸給選擇器8 ;
所述加法器6,將所述執(zhí)行指令地址進(jìn)行處理,得到順序的下一條指令地址,并將結(jié)果傳輸給選擇器,以一條指令32bit為例,順序的下一條指令PC+4 ;
所述雙重分支目標(biāo)緩沖器,包括第一分支目標(biāo)緩沖器和第二分支目錄緩沖器,所述第一分支目標(biāo)緩沖器包括第一指令緩存單元41,用于臨時(shí)存儲預(yù)取的指令,采用多路組相連接結(jié)構(gòu),每個(gè)路包括第一存儲器和第二存儲器,所述第一存儲器存儲地址標(biāo)簽位(tag),所述第二存儲器存儲所述標(biāo)志位相對應(yīng)的有條件分支命令目標(biāo)地址(target address);所述第二分支目標(biāo)緩沖器包括第二指令緩存單元42,用于臨時(shí)存儲預(yù)取指令,采用多路組相連接結(jié)構(gòu),每個(gè)路包括第三存儲器和第四存儲器,所述第三存儲器存儲指令地址(PC),所述第四存儲器存儲指令地址相對應(yīng)的無條件分支命令目標(biāo)地址(target address);
指令地址包括索引位(index)和標(biāo)簽位(tag),所述指令地址的索引位取出對應(yīng)第一分支目標(biāo)緩沖器中的標(biāo)簽位傳輸給比較器5,與指令地址的標(biāo)簽位相比較,將比較結(jié)果傳輸給選擇器,同時(shí)將所述第一分支目標(biāo)緩沖器中的標(biāo)簽位對應(yīng)的目標(biāo)地址傳輸給選擇器8 ;同時(shí)檢索所述第三存儲器,存在相同的指令地址,則取出與指令地址相對應(yīng)的目標(biāo)地址傳輸給選擇器8 ;
所述選擇器8,將上述結(jié)果進(jìn)行選擇,將待執(zhí)行的下一條指令(next PC )傳輸給指令存儲器I和存儲器訪問單元24。當(dāng)分支命令到來時(shí),開始預(yù)測
I.在CBTB中,用PC的index從對應(yīng)的Index中取出BTB的Tag,并與PC的tag進(jìn)行比較,生成miss/hit信號,如果2個(gè)tag相同,信號為hit,如果2個(gè)tag不相同,信號為miss。這將作為CBTB下方的選擇器的控制信號。另外從對應(yīng)的Index中取出Target Address,投入CBTB下方的選擇器,待被選擇。2.在NBTB中,檢索相同的PC,如果存在取出對應(yīng)的Target Address,投入CBTB下方的選擇器,待被選擇。同時(shí)利用加法器(Adder)將Address加上4,投入CBTB下方的選擇器,待被選擇。
最后如果PHT的控制信號是Taken吋,
如果miss/hit是Hit,選擇CBTB,生成的Target Address作為下一個(gè)命令的地址。如果檢索到相同的PC,選擇NBTB,生成的Target Address作為下ー個(gè)命令的地址。如果都沒有,則等待命令執(zhí)行完畢。如果PHT的控制信號是Not Taken時(shí),則選擇加法器(Adder)的結(jié)果 當(dāng)分支命令執(zhí)行完畢后,開始登陸(更新)
這時(shí)候由于結(jié)果都出來了所以利用計(jì)算結(jié)果登陸即可。關(guān)于NBTB
如果命令是non-conditional分支命令的話,檢索NBTB,如果有相同命令存在就不用登陸,如果沒有相同的存在,尋找空處,將地址等陸到PC里,下ー個(gè)命令的地址等陸到Target Address Μ°另外因?yàn)镹BTB為CAM構(gòu)造,所以存在變滿的情況,所以我們給CAM —個(gè)Checkpoint,實(shí)現(xiàn)CAM的FIFO (First In First Out)機(jī)能。也就是說當(dāng)滿了的時(shí)候,新的non-conditional分支命令將覆蓋掉最先被登陸NBTB的index中。關(guān)于CBTB
如果命令是conditional分支命令而且結(jié)果是PHT為Taken的情況下,將在CBTB的對應(yīng)的 index 內(nèi)登陸 Tag 和 Target Address。分支命令分為無條件(non-conditional)分支命令和有條件(conditional)分支命令。分支命令出錯主要分成以下幾種情況
I、不一樣的non-conditional分支命令連續(xù)Aceess相同的BTB entry時(shí)會出錯;
2>non-conditional分支命令后為conditional分支命令Taken的話,連續(xù)Aceess相同的BTB entry時(shí)會出錯;
3>non-conditional 分支命令后為 conditional 分支命令 NotTaken 的話,連續(xù) Aceess 相同的BTB entry時(shí)不會出錯;
4、conditional分支命令Taken后為的non-conditional分支命令后為話,連續(xù)Aceess相同的BTB entry時(shí)會出錯;
5、conditional分支命令NotTaken后為的non-conditional分支命令后為話,連續(xù)Aceess相同的BTB entry時(shí)不會出錯;以上為所有Parten 3/5都會出錯。圖5為各種情況的在相關(guān)程序中所有錯誤中的比率
CB_CB _Miss為conditional分支命令后為conditional分支命令,出錯的比率; CB_NB _Miss為conditional分支命令后為non-conditional分支命令,出錯的比
率;
NB_CB _Miss為non_conditional分支命令后為conditional分支命令,出錯的比
率;
NB_NB _Miss為non_conditional分支命令后為non-conditional分支命令,出錯的比率;
我們發(fā)現(xiàn)預(yù)測的失敗與無條件命令的關(guān)系比較強(qiáng),無條件跳轉(zhuǎn)總是要執(zhí)行的,所以總是要使用BTB表,有條件跳轉(zhuǎn)不一定執(zhí)行,當(dāng)判斷條件不成立(not taken),就不需要使用BTB表。而且,non-conditional的種類不是十分很多。因而使用non-conditional分支命令用和conditional分支命令用的新的雙重分支目標(biāo)緩沖器的方案,可有效提高預(yù)測正確率且不會帶來較高的硬件成本。第一分支目標(biāo)緩沖器是利用了原來的BTB,用于conditional分支命令的預(yù)測的機(jī)構(gòu)(第一分支目標(biāo)緩沖器為SRAM構(gòu)成),第二分支目標(biāo)緩沖器是追加的用于non-conditional分支命令的預(yù)測(CAM)。第二分支目標(biāo)緩沖器里放的是non-conditional分支命令的地址(PC)和目標(biāo)地址(Target Address),更新和預(yù)測是通過檢索PC來實(shí)現(xiàn)的。圖6表示了提案的效果。128entry的時(shí)候得到了 4%的提速,256entry的時(shí)候達(dá)到5%的提速。以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種雙重分支目標(biāo)緩沖器,其特征在于,包括第一分支目標(biāo)緩沖器和第二分支目錄緩沖器,所述第一分支目標(biāo)緩沖器包括多路組相連接結(jié)構(gòu)的第一指令緩存單元,所述第一指令緩存單元用于臨時(shí)存儲預(yù)取的指令,每路組包括第一存儲器和第二存儲器,所述第一存儲器用于存儲地址標(biāo)簽位,所述第二存儲器用于存儲所述地址標(biāo)簽位所對應(yīng)的有條件分支命令目標(biāo)地址;所述第二分支目標(biāo)緩沖器包括多路組相連接結(jié)構(gòu)的第二指令緩存單元,所述第二指令緩存單元用于臨時(shí)存儲預(yù)取指令,每個(gè)路組包括第三存儲器和第四存儲器,所述第三存儲器存儲指令地址,所述第四存儲器存儲指令地址所對應(yīng)的無條件分支命令目標(biāo)地址。
2.一種分支目標(biāo)處理系統(tǒng),其特征在于,包括CPU整數(shù)単元、雙重分支目標(biāo)緩沖器、分支目標(biāo)預(yù)測単元、加法器、比較器和選擇器; 所述CPU整數(shù)単元,采用流水線結(jié)構(gòu),包括指令提取單元和位于所述指令提取單元后續(xù)的指令執(zhí)行單元,所述指令提取單元將提取的指令地址分別傳輸給雙重分支目標(biāo)緩沖器、加法器和分支目標(biāo)預(yù)測単元,所述指令執(zhí)行單元的后續(xù)單元將執(zhí)行結(jié)果地址分別傳輸給雙重分支目標(biāo)緩沖器和分支目標(biāo)預(yù)測単元; 所述分支目標(biāo)預(yù)測単元,對分支條件成立與否進(jìn)行預(yù)測,并將結(jié)果傳輸給選擇器; 所述加法器,將所述執(zhí)行指令地址進(jìn)行處理,得到順序的下一條指令地址,并將結(jié)果傳輸給選擇器; 所述雙重分支目標(biāo)緩沖器,包括第一分支目標(biāo)緩沖器和第二分支目錄緩沖器,所述第一分支目標(biāo)緩沖器包括多路組相連接結(jié)構(gòu)的第一指令緩存單元,所述第一指令緩存單元用于臨時(shí)存儲預(yù)取的指令,每路組包括第一存儲器和第二存儲器,所述第一存儲器用于存儲地址標(biāo)簽位,所述第二存儲器用于存儲所述地址標(biāo)簽位所對應(yīng)的有條件分支命令目標(biāo)地址;所述第二分支目標(biāo)緩沖器包括多路組相連接結(jié)構(gòu)的第二指令緩存單元,所述第二指令緩存單元用于臨時(shí)存儲預(yù)取指令,每個(gè)路組包括第三存儲器和第四存儲器,所述第三存儲器存儲指令地址,所述第四存儲器存儲指令地址所對應(yīng)的無條件分支命令目標(biāo)地址; 指令地址包括索引位和標(biāo)簽位,所述指令地址的索引位取出對應(yīng)第一分支目標(biāo)緩沖器中的標(biāo)簽位傳輸給比較器,與指令地址的標(biāo)簽位相比較,將結(jié)果傳輸給選擇器,同時(shí)將所述第一分支目標(biāo)緩沖器中的標(biāo)簽位對應(yīng)的目標(biāo)地址傳輸給選擇器;同時(shí)檢索所述第三存儲器,如果存在相同的指令地址,則取出與指令地址相對應(yīng)的目標(biāo)地址傳輸給選擇器; 所述選擇器,對上述輸入的數(shù)據(jù)進(jìn)行選擇,將待執(zhí)行的下一條指令傳輸給所述CPU整數(shù)單元。
3.一種分支目標(biāo)處理方法,其特征在干, (100)提供一種分支目標(biāo)處理系統(tǒng),包括CPU的整數(shù)単元、雙重分支目標(biāo)緩沖器、分支目標(biāo)預(yù)測単元、加法器、比較器和選擇器;所述CPU的整數(shù)単元,采用流水線結(jié)構(gòu),至少包括指令提取單元和位于所述指令提取單元后續(xù)的指令執(zhí)行單元;所述雙重分支目標(biāo)緩沖器,包括第一分支目標(biāo)緩沖器和第二分支目錄緩沖器,所述第一分支目標(biāo)緩沖器包括多路組相連接結(jié)構(gòu)的第一指令緩存單元,所述第一指令緩存單元用于臨時(shí)存儲預(yù)取的指令,每路組包括第一存儲器和第二存儲器,所述第一存儲器用于存儲地址標(biāo)簽位,所述第二存儲器用于存儲所述地址標(biāo)簽位所對應(yīng)的有條件分支命令目標(biāo)地址;所述第二分支目標(biāo)緩沖器包括多路組相連接結(jié)構(gòu)的第二指令緩存單元,所述第二指令緩存單元用于臨時(shí)存儲預(yù)取指令,每個(gè)路組包括第三存儲器和第四存儲器,所述第三存儲器存儲指令地址,所述第四存儲器存儲指令地址所對應(yīng)的無條件分支命令目標(biāo)地址; (200)、所述指令提取單元提取指令地址分別傳輸給雙重分支目標(biāo)緩沖器、加法器和分支目標(biāo)預(yù)測單元, (300)、所述分支目標(biāo)預(yù)測単元,對分支條件成立與否進(jìn)行預(yù)測,并將預(yù)測結(jié)果傳輸給選擇器;所述加法器,將所述執(zhí)行指令地址進(jìn)行處理,得到順序的下一條指令地址,并將計(jì)算結(jié)果傳輸給選擇器; (400)、指令地址包括索引位和標(biāo)簽位,所述指令地址 的索引位取出對應(yīng)第一分支目標(biāo)緩沖器中的標(biāo)簽位傳輸給比較器,與指令地址的標(biāo)簽位相比較,將比較結(jié)果傳輸給選擇器,同時(shí)將所述第一分支目標(biāo)緩沖器中的標(biāo)簽位對應(yīng)的目標(biāo)地址傳輸給選擇器;同時(shí)檢索所述第三存儲器,如果存在相同的指令地址,則取出與指令地址相對應(yīng)的目標(biāo)地址傳輸給選擇 器; (500)、如果預(yù)測結(jié)果為成立,同時(shí)比較結(jié)果為相同,選擇器選擇所述第一分支目標(biāo)緩沖器中的目標(biāo)地址傳輸給所述CPU的整數(shù)単元;如果檢測結(jié)果為成立,而比較結(jié)果為不同,選擇器選擇所述第二分支目標(biāo)緩沖器中的目標(biāo)地址傳輸給所述CPU的整數(shù)単元;如果預(yù)測結(jié)果為不成立,選擇器則選擇加法器的計(jì)算結(jié)果傳輸給所述CPU的整數(shù)単元。
4.根據(jù)權(quán)利要求3所述的ー種分支目標(biāo)處理方法,其特征在于,還包括步驟(600)、分支命令執(zhí)行完畢后,進(jìn)行更新如果分支命令是無條件分支命令的話,檢索第二分支目標(biāo)緩沖器,如果有相同指令地址存在就不用登陸,如果沒有相同的存在,尋找空處,將指令地址登陸到第三存儲器中,下ー個(gè)命令的地址登陸到第四存儲器中;如果命令是有條件分支命令而且預(yù)測結(jié)果為成立的情況下,將在第一支目標(biāo)緩沖器的對應(yīng)的索引位內(nèi)登陸標(biāo)簽位和目標(biāo)地址。
5.根據(jù)權(quán)利要求4所述的雙重分支目標(biāo)緩沖器,其特征在干,所述第二分支目標(biāo)緩存器的第四存儲單元為CAM構(gòu)造,以先進(jìn)先出的原則進(jìn)行覆蓋。
全文摘要
本發(fā)明公開了一種雙重分支目標(biāo)緩沖器,包括第一分支目標(biāo)緩沖器和第二分支目錄緩沖器,所述第一分支目標(biāo)緩沖器包括多路組相連接結(jié)構(gòu)的第一指令緩存單元,所述第一指令緩存單元用于臨時(shí)存儲預(yù)取的指令,每路組包括第一存儲器和第二存儲器;所述第二分支目標(biāo)緩沖器包括多路組相連接結(jié)構(gòu)的第二指令緩存單元,所述第二指令緩存單元用于臨時(shí)存儲預(yù)取指令,每個(gè)路組包括第三存儲器和第四存儲器。本發(fā)明雙重分支目標(biāo)緩沖器,有兩個(gè)分支目標(biāo)緩沖器,減少不同的命令在相同的index里登陸的可能,提高分支目標(biāo)緩沖器正確的預(yù)測精度,有效加快中央處理器的速度。
文檔編號G06F9/38GK102662640SQ201210105659
公開日2012年9月12日 申請日期2012年4月12日 優(yōu)先權(quán)日2012年4月12日
發(fā)明者孟林 申請人:蘇州睿云智芯微電子有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1