專利名稱:Tlb相關(guān)分支預(yù)測(cè)器及其使用方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例涉及高性能處理器,尤其涉及使用翻譯后備緩沖器輸入和動(dòng)態(tài)長(zhǎng)度全局分支歷史的指令分支預(yù)測(cè)器。
背景隨著分支指令發(fā)出速率和指令流水線深度的增加,準(zhǔn)確的分支預(yù)測(cè)對(duì)實(shí)現(xiàn)超標(biāo)量無(wú)序處理器的潛在性能變得愈發(fā)重要。某些現(xiàn)有技術(shù)的分支預(yù)測(cè)器要么被實(shí)現(xiàn)為無(wú)全局歷史的分支預(yù)測(cè)器,要么被實(shí)現(xiàn)為帶有全局歷史的兩級(jí)分支預(yù)測(cè)器。
在某些分支預(yù)測(cè)器中,全局歷史由m個(gè)最近分支組成,并且在其中每一位都記錄了是否采取分支的m位全局移位寄存器中實(shí)現(xiàn)。不幸的是,現(xiàn)有的全局移位寄存器只記錄固定長(zhǎng)度的全局歷史。然而,最近的研究則已指出,通過(guò)使用不同長(zhǎng)度的全局歷史,可能使來(lái)自不同程序的不同指令體驗(yàn)到更好的預(yù)測(cè)準(zhǔn)確性。
圖1是本領(lǐng)域內(nèi)已知的一種分支預(yù)測(cè)器的電路框圖。在圖1中,m位歷史移位寄存器110包括在位m處的一位移位輸入以及在位1處的一位移位輸出,其中該一位移位輸入接收是否采取特定指令的分支的指示。例如,值“1”用于指示采取分支,而“0”用于指示不采取該分支。歷史移位寄存器110用于存儲(chǔ)固定長(zhǎng)度(即,m位長(zhǎng)度)的全局分支預(yù)測(cè)歷史,移出最高有效位值,即第一位的值,并將輸出要存儲(chǔ)的整個(gè)m位全局分支預(yù)測(cè)歷史值。
在圖1中,歷史移位寄存器110耦合至異或(EXCLUSIVE-OR)門120,并且歷史移位寄存器110將存儲(chǔ)在歷史移位寄存器110中的m位全局分支預(yù)測(cè)歷史的值輸出至異或門120的第一輸入。異或門120還耦合到將m位分支地址輸出至異或門120第二輸入的分支地址寄存器130。如果從分支地址寄存器130輸入的m位分支地址與從歷史移位寄存器110輸入的m位全局歷史匹配,則異或門120將m位全局歷史輸出至模式歷史表140。應(yīng)該注意,從分支地址寄存器130輸入的m位分支地址在被輸出之前可以被移位、擴(kuò)展或截除,以匹配從歷史移位寄存器110輸出的位數(shù)。結(jié)果是,即使全局分支預(yù)測(cè)歷史值的長(zhǎng)度有所改變,從分支地址寄存器130輸出的m位分支地址位串的位數(shù)仍然總是與從歷史移位寄存器110輸入的全局分支預(yù)測(cè)值中的位相匹配。
在圖1中,模式歷史表140由2m個(gè)條目組成,其中表格內(nèi)的每一條目都包含“局部歷史”。局部歷史信息通常被存儲(chǔ)在2位飽和分支預(yù)測(cè)器中。從異或門120輸出的m位全局歷史用于從模式歷史表140中選則一個(gè)條目,該條目隨后用于執(zhí)行預(yù)測(cè)。通過(guò)這一設(shè)計(jì),使用堅(jiān)固的預(yù)測(cè)條目來(lái)存儲(chǔ)其中不同的分支指令彼此相關(guān)的有效歷史信息。
在圖1中,2位分支預(yù)測(cè)器維護(hù)一個(gè)2位計(jì)數(shù)器。它在被引用時(shí)將基于其自己的內(nèi)容輸出分支預(yù)測(cè)。例如,如果“10”是分配給一個(gè)分支的預(yù)測(cè)器2位內(nèi)容(即,模式歷史表?xiàng)l目),則對(duì)該分支預(yù)測(cè)“采取”。在稍后的某一時(shí)刻,該內(nèi)容在真實(shí)方向已知之后被更新。例如,若該分支“被采取”,則“10”被更新為“11”,而若該分支“未被采取”,則被更新為“01”。一般而言,當(dāng)2位計(jì)數(shù)器值大于或等于其最大值的一半,即22-1=2時(shí),則預(yù)測(cè)該分支未被采取。相反,如果2位計(jì)數(shù)器值小于2,則預(yù)測(cè)該分支未被采取。換言之,如果該2位計(jì)數(shù)器包含“10”(即,2)或“11”(即,3),則預(yù)測(cè)該分支被采取,但如果2位計(jì)數(shù)器包含“00”(即,0)或“01”(即,1),則預(yù)測(cè)該分支未被采取。
局部歷史意味著分支的輸出將取決于其自己的歷史,而全局歷史則意味著分支的輸出取決于其他分支歷史。在以下的短碼示例中,如果第一分支輸出“采取”,則第二分支也輸出“采取”。而后,一獨(dú)立的2位分支預(yù)測(cè)器(對(duì)應(yīng)于分支d==0,采取帶有全局歷史的模式歷史條目)將用于保持這一帶有該全局歷史和2級(jí)分支預(yù)測(cè)方案的信息。
If(d==0)//如果d=0d=1; //則設(shè)置d=1If(d==1)//如果d=1…… //則繼續(xù)d=1的條件指令不幸的是,因?yàn)閳D1中的全局歷史寄存器110在所有情況下都只記錄固定長(zhǎng)度的全局歷史,所以基于固定長(zhǎng)度全局歷史的分支預(yù)測(cè)的準(zhǔn)確性并不足夠好。例如,基于固定長(zhǎng)度全局歷史的分支預(yù)測(cè)并不總能準(zhǔn)確地區(qū)分與當(dāng)前分支指令相關(guān)的先前的分支指令。類似地,不僅是使用固定長(zhǎng)度的全局歷史無(wú)法總是準(zhǔn)確地預(yù)測(cè)不相關(guān)的其他分支指令,而且相關(guān)在某些情況下存在并且在它們應(yīng)該存在的其它情況下卻不存在。例如,在以下代碼示例中,如果存儲(chǔ)器操作數(shù)是X,則Y會(huì)由于數(shù)據(jù)局部性而具有相鄰值。分支預(yù)測(cè)器可以執(zhí)行上述操作。然而這種關(guān)系將隨著數(shù)據(jù)局部性的喪失而遭到破壞。
If(d==0)//如果d=0d=X; //則設(shè)置d=XIf(d==Y(jié))//如果d=Y(jié)……//則繼續(xù)d=Y(jié)的條件指令此種情況示出了全局相關(guān)有時(shí)不僅依賴于全局歷史或分支地址,還依賴于數(shù)據(jù)局部性。如以上示例所示,當(dāng)在第二條指令中d被設(shè)置成與X相等,且在第三指令中d被判定為不等于Y時(shí),會(huì)發(fā)生數(shù)據(jù)局部性喪失。結(jié)果,可能不執(zhí)行d=Y(jié)的條件指令。這也同樣會(huì)損害全局歷史。因此,期望一種能避免上述不足的分支預(yù)測(cè)器。
附圖簡(jiǎn)述圖1是本領(lǐng)域內(nèi)已知的分支預(yù)測(cè)器的電路框圖。
圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的用于處理器的翻譯后備緩沖器相關(guān)分支預(yù)測(cè)器的電路框圖。
圖3是根據(jù)本發(fā)明一個(gè)實(shí)施例的方法的流程圖。
圖4是包括根據(jù)本發(fā)明一個(gè)實(shí)施例使用的一個(gè)或多個(gè)處理器和存儲(chǔ)器的計(jì)算機(jī)系統(tǒng)的框圖。
詳細(xì)描述本發(fā)明的實(shí)施例涉及一種用于翻譯后備緩沖器相關(guān)的分支預(yù)測(cè)的裝置和方法,包括但不限于,帶有或不帶有動(dòng)態(tài)長(zhǎng)度分支歷史的全局歷史翻譯后備緩沖相關(guān)的分支預(yù)測(cè)器和/或兩級(jí)翻譯后備緩沖器相關(guān)的分支預(yù)測(cè)器。例如,根據(jù)本發(fā)明的一個(gè)實(shí)施例,處理器可以包括相關(guān)的分支預(yù)測(cè)器,該分支預(yù)測(cè)器帶有從翻譯后備緩沖器到全局分支歷史移位寄存器的輸入線。指示翻譯后備緩沖器中何時(shí)發(fā)生未命中的輸入線可用于將全局分支歷史移位寄存器清零。因?yàn)榇鎯?chǔ)在全局分支歷史移位寄存器內(nèi)的全局分支歷史可以通過(guò)數(shù)據(jù)局部來(lái)訓(xùn)練訓(xùn)練,所以在翻譯后備緩沖器未命中時(shí)將全局分支歷史移位寄存器清零有助于避免由翻譯后備緩沖器未命中數(shù)據(jù)引起的非數(shù)據(jù)局部化所導(dǎo)致的全局分支歷史的破壞。
圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的用于處理器的翻譯后備緩沖器相關(guān)分支預(yù)測(cè)器的電路框圖。在圖2中,處理器200可以包括m位歷史移位寄存器210,該歷史移位寄存器210可以包括第一一位移位輸入(類似于圖1中的一位移位輸入)、第二一位移位輸入和一位移位輸出(類似于圖1中的一位移位輸出),其中第一一位移位輸入接收關(guān)于特定指令的分支是否被采取的指示。歷史移位寄存器210可用于存儲(chǔ)針對(duì)一執(zhí)行指令的動(dòng)態(tài)長(zhǎng)度全局分支歷史。歷史移位寄存器210可用于存儲(chǔ)用于執(zhí)行指令的動(dòng)態(tài)長(zhǎng)度全局分支歷史。一般而言,可以使用值為“1”的最高有效位來(lái)標(biāo)識(shí)有效歷史長(zhǎng)度,例如,若最高有效的“1”在m位移位寄存器的第5位上,則全局歷史可以被確定為長(zhǎng)m-5位。結(jié)果,最高有效位的“1”并不指示分支是否出現(xiàn)。根據(jù)本發(fā)明的一個(gè)實(shí)施例,“1”值可用作指示分支被采取的允許信號(hào),而“0”可用作指示分支未被采取的非允許信號(hào)。歷史移位寄存器210可用于存儲(chǔ)最大長(zhǎng)度為m-1位的動(dòng)態(tài)長(zhǎng)度全局分支預(yù)測(cè)歷史,并且輸出最高有效位的值,即m-1位的值。因此,串“0000…01”可以指示長(zhǎng)度為零的全局歷史,這可以指示最近從歷史移位寄存器210中轉(zhuǎn)儲(chǔ)清除了的全局歷史。類似地,根據(jù)本發(fā)明的一個(gè)實(shí)施例,認(rèn)為串“0000…00”無(wú)意義,因?yàn)樗梢灾甘静淮嬖诘娜謿v史長(zhǎng)度,而認(rèn)為串“1X…Y”(其中X和Y可以均等于“0”或“1”)包含寄存器能夠包含的最長(zhǎng)可能全局歷史長(zhǎng)度,即m-1位的長(zhǎng)度。
在圖2中,歷史移位寄存器210可以耦合至異或門220,并且歷史移位寄存器210可以將存儲(chǔ)在歷史移位寄存器210中的m位全局分支預(yù)測(cè)歷史值輸出至異或門220的第一輸入。異或門220還可耦合到將m位分支地址輸出至異或門220第二輸入的分支地址寄存器230。如果從分支地址寄存器230輸入的m位分支地址與從歷史移位寄存器210輸入的m位全局歷史匹配,則異或門220可將m位全局歷史輸出至模式歷史表240。應(yīng)該注意,來(lái)自分支地址寄存器230的m位分支地址在被輸出之前可被移位、擴(kuò)展或截除,以與歷史移位寄存器210的輸出位數(shù)相匹配。結(jié)果,即使全局分支預(yù)測(cè)歷史值的長(zhǎng)度有所改變,從分支地址寄存器230輸出的m位分支地址位串的位數(shù)仍然一般總是與從歷史移位寄存器210輸入的全局分支預(yù)測(cè)值中的位相匹配。
在圖2中,模式歷史表240可以由2m個(gè)條目組成,其中表內(nèi)的每一條目都可包含一“局部歷史”。局部歷史信息通常被存儲(chǔ)在2位飽和分支預(yù)測(cè)器中。從異或門220輸出的m位全局歷史可用于從模式歷史表240中選則一個(gè)條目,該條目可用于執(zhí)行預(yù)測(cè)。通過(guò)這一設(shè)計(jì),可使用堅(jiān)固的預(yù)測(cè)條目來(lái)存儲(chǔ)在其中不同的分支指令彼此相關(guān)的有效歷史信息。
一般而言,在圖2中,歷史移位寄存器210可以如圖1所示的那樣移位,但有兩點(diǎn)例外,即,當(dāng)全局分支歷史要被轉(zhuǎn)儲(chǔ)清除時(shí)以及當(dāng)全局歷史串的值等于“1XYZ…,”時(shí),其中X、Y和Z可以均等于“0”或“1”。首先,在圖2中,如果歷史移位寄存器210要被轉(zhuǎn)儲(chǔ)清除,則歷史移位寄存器210中的全局分支歷史串可被清零并設(shè)置為等于“0000…01”。其次,當(dāng)歷史移位寄存器210包含m-1位長(zhǎng)的全局分支歷史時(shí),即意味著“1”可以被存儲(chǔ)在歷史移位寄存器210的最高有效位(即,位1)中,存儲(chǔ)在位1中的“1”值可以被保持,并且可以將位2中的位值移出。
歷史移位寄存器210還可以耦合至例如三態(tài)緩沖器的鎖存存儲(chǔ)器250,該鎖存存儲(chǔ)器可以從翻譯后備緩沖器(“TLB”)(未示出)接收指示TLB中是否存在未命中的信號(hào),并且該鎖存存儲(chǔ)器250還接收并存儲(chǔ)m位的輸入清零值。m位的輸入清零值可以包括除最右位數(shù)可能是“1”以外的全“0”值,例如,在m=16的情況下,16位的輸入清零值可以等于“0000000000000001”。當(dāng)發(fā)生TLB未命中時(shí),指示TLB未命中發(fā)生的允許信號(hào)就可由TLB未命中線260上的TLB(未示出)發(fā)出。當(dāng)指示TLB未命中發(fā)生的允許信號(hào)抵達(dá)鎖存存儲(chǔ)器250時(shí),存儲(chǔ)在鎖存存儲(chǔ)器250內(nèi)的m位輸入清零值就被讀入歷史移位寄存器210。結(jié)果,歷史移位寄存器210可被“清零”,以使當(dāng)前存儲(chǔ)在歷史移位寄存器210內(nèi)的m位值可被來(lái)自鎖存存儲(chǔ)器250的例如“0000000000000001”的m位值蓋寫。
在圖2中,反饋電路270可以耦合至歷史移位寄存器210中的位1位置和位2位置。反饋電路270可以包括與歷史移位寄存器210相耦合以接收輸出的最高有效位并與或(OR)門290相耦合的與(AND)門280,或門290可以與歷史移位寄存器210中的位1位置和位2位置相耦合。反饋電路270可用于保持歷史移位寄存器210中m-1位位置內(nèi)的最高有效位的1值。更具體地,與門280的第一輸入281可以耦合至歷史移位寄存器210的輸出。與門280的第二輸入可以接收“1”值,該值可以與歷史移位寄存器210的輸出值進(jìn)行與運(yùn)算,從而獲得經(jīng)由輸出287從與門280輸出至或門290第一輸入291的與值。或門290的第二輸入293可以耦合至歷史移位寄存器210中的位2位置并接收來(lái)自該位置的值。或門290的輸出297可以耦合至歷史移位寄存器210中的位1位置并將或值輸出至該位置。因?yàn)榕c門280的第二輸入283具有一組“1”輸入,所以只存在兩種可能的輸入組合,即(0,1)和(1,1)。無(wú)論如何,與門280的可能輸出值都只有兩種。即,若歷史移位寄存器210中m-1位位置的輸出值也是“1”,則可從與門280輸出“1”,而若歷史移位寄存器210中m-1位位置的輸出值是“0”,則可從與門280輸出“0”。類似地,雖然或門290也僅有相同的兩個(gè)可能輸出值(即,“0”或“1”),但是因?yàn)榛蜷T290的第一輸入291和第二輸入293都不限于單一值,所以所得結(jié)果可以來(lái)自于四個(gè)可能輸入組合,即(0,0)、(0,1)、(1,0)和(1,1)。如可從表1中的邏輯或表中所見(jiàn)的,“1”可以作為四個(gè)可能輸入值組合中的三個(gè)的結(jié)果輸出。因此,因?yàn)榕c門280在歷史移位寄存器210中的位1值為“1”時(shí)總是輸出“1”,所以就可以看到,反饋電路270將保持位1位置內(nèi)的“1”值,直到歷史移位寄存器210被TLB未命中清零。
表1
本發(fā)明的實(shí)施例可以在無(wú)序處理器中實(shí)現(xiàn),在該處理器中,取指/解碼單元可以從例如指令高速緩存等存儲(chǔ)位置中取出諸如宏指令等指令,并且對(duì)這些指令進(jìn)行解碼。對(duì)于復(fù)雜指令集計(jì)算機(jī)(CISC)架構(gòu)來(lái)說(shuō),取指/解碼單元可以將復(fù)雜指令解碼成一個(gè)或多個(gè)微指令/操作。一般而言,這些微指令定義了裝載-存儲(chǔ)型架構(gòu),以使涉及存儲(chǔ)器操作的微指令可對(duì)諸如精簡(jiǎn)指令集計(jì)算機(jī)(RISC)或超長(zhǎng)指令字(VLIW)架構(gòu)等其他架構(gòu)實(shí)現(xiàn)。
在典型的RISC架構(gòu)中,并不將指令解碼成微指令。因?yàn)楸景l(fā)明可以對(duì)RISC架構(gòu)以及CISC架構(gòu)實(shí)現(xiàn),所以除非另有規(guī)定,否則就無(wú)需在指令和微指令/操作之間做出區(qū)分,并且簡(jiǎn)稱之為指令。
圖3是根據(jù)本發(fā)明一個(gè)實(shí)施例的方法的流程圖。在圖3中,可使用來(lái)自TLB的輸入從例如模式歷史表240中選擇一預(yù)測(cè)條目(310),并基于所選的預(yù)測(cè)條目和TLB輸入動(dòng)態(tài)地預(yù)測(cè)一分支是否被采取(320)。本方法可以接收關(guān)于該分支是否被實(shí)際采取的信息(330),并基于該分支是否被實(shí)際采取來(lái)更新預(yù)測(cè)條目,例如在模式歷史表240中更新(340)?;诜种欠癖粚?shí)際采取可更新例如歷史移位寄存器210內(nèi)指示分支是否被實(shí)際采取的全局歷史值以及模式歷史表240;并可取出下一個(gè)分支指令(360)。一般而言,該方法只有在處理器關(guān)閉或沒(méi)有額外的指令處理要執(zhí)行時(shí)才終止。
在本發(fā)明的未明確示出的一個(gè)替換實(shí)施例中,如果額外的分支指令不是立即可用,則圖3中的方法可以終止并等待更多的分支指令。
雖然圖3中的方法可能蘊(yùn)含了執(zhí)行本方法的特定順序,但本發(fā)明的實(shí)施例不應(yīng)被限制在這一順序上。實(shí)際上,可以構(gòu)想其中能夠以任何順序執(zhí)行本方法的部分或所有元素的本發(fā)明的實(shí)施例,包括但不限于在例如無(wú)序(″OOO″)處理器中全部或部分地并行執(zhí)行。類似地,雖然為便于說(shuō)明,將圖3中的方法簡(jiǎn)化成每次僅反映一個(gè)分支,但是也可構(gòu)想其中可同時(shí)處理多個(gè)分支的本發(fā)明的實(shí)施例,而這些實(shí)施例當(dāng)然地受到任何現(xiàn)有數(shù)據(jù)依賴性的限制。
以下簡(jiǎn)化的偽代碼部分示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的TLB相關(guān)全局歷史分支預(yù)測(cè)器的實(shí)現(xiàn)的操作。
check_and_initialize_predictor(argc,argv,&inTrace,&aPredictor);while(!inTrace->EndOfTrace()){aPredictor->SelectPredictionEntry(inTrace->GetAddress(),inTrace->TLBMissOrNot());//這里為TLB信息bool pr-taken=aPredictor->prediction(inTrace->ForwardBranchOrNot());//允許靜態(tài)預(yù)測(cè)aPredictor->UpdatePredictor(inTrace->TakenOrNot(),pr_taken);//在知道分支的真實(shí)目標(biāo)之后更新模式歷史表和移位全局寄存器inTrace->read_trace();//讀取該模擬中的下一分支指令
}aPredictor->Show AccuracyQ;例如,在以上的偽代碼中,可以看到預(yù)測(cè)器在指令執(zhí)行期間操作以預(yù)測(cè)該指令中每個(gè)分支的結(jié)果并在得知實(shí)際目標(biāo)之后更新這些預(yù)測(cè)。雖然上述偽代碼示例可能暗示了串行執(zhí)行,但它只是說(shuō)明了總體概念,并且可以構(gòu)想其中各分支的并行和/或無(wú)序執(zhí)行可以當(dāng)然地依據(jù)任何互相約束的數(shù)據(jù)依賴性而發(fā)生的可選實(shí)施例。
圖4是根據(jù)本發(fā)明一個(gè)實(shí)施例使用的可包括一個(gè)或多個(gè)處理器和存儲(chǔ)器的計(jì)算機(jī)系統(tǒng)的框圖。在圖4中,計(jì)算機(jī)系統(tǒng)400可以包括耦合至存儲(chǔ)器總線420的一個(gè)或多個(gè)處理器410(1)至410(n),存儲(chǔ)器總線420可以耦合至系統(tǒng)邏輯430。一個(gè)或多個(gè)處理器410(1)至410(n)中的每一個(gè)都可以是N位處理器,并且可以包括解碼器(未示出)以及一個(gè)或多個(gè)N位寄存器(未示出)。系統(tǒng)邏輯430可以通過(guò)總線450耦合至系統(tǒng)存儲(chǔ)器440,并且還可以通過(guò)外圍總線460耦合至非易失性存儲(chǔ)器470以及一個(gè)或多個(gè)外圍設(shè)備480(1)至480(m)。外圍總線460可以表示例如符合1998年12月18日公布的PCI Special Interest Group(SIG)的PCI Local BusSpecification(PCI局部總線規(guī)范)修訂版2.2的一條或多條外圍部件互連(PCI)總線;工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線;符合1992年公布的BCPR Services Inc的EISA Specification(EISA規(guī)范)3.12版,1992的擴(kuò)展ISA(EISA)總線;符合1998年9月23日公布的USB Specification(USB規(guī)范)1.1版的通用串行總線(USB);以及類似的外圍總線。非易失性存儲(chǔ)器470可以是諸如只讀存儲(chǔ)器(ROM)或閃存等靜態(tài)存儲(chǔ)器設(shè)備。外圍設(shè)備480(1)至480(m)可以包括例如鍵盤;鼠標(biāo)或其他定點(diǎn)設(shè)備;諸如硬盤驅(qū)動(dòng)器、緊致盤(CD)驅(qū)動(dòng)器、光盤和數(shù)字視頻盤(DVD)驅(qū)動(dòng)器等大容量存儲(chǔ)設(shè)備;顯示器等等。
雖然已詳細(xì)公開(kāi)了本發(fā)明,但是應(yīng)該理解,在此也可以做出各種改變、替換和更改。此外,雖然描述了控制某些功能的軟件和硬件,但是這些功能可以如本領(lǐng)域內(nèi)公知的那樣使用軟件、硬件或軟件和硬件的組合來(lái)實(shí)現(xiàn)。同樣,在所附權(quán)利要求中,術(shù)語(yǔ)“指令”可包括RISC架構(gòu)中的指令或CISC架構(gòu)中的指令,以及在其他計(jì)算機(jī)架構(gòu)中使用的指令。本領(lǐng)域普通技術(shù)人員能在不背離由所附權(quán)利要求書(shū)定義的本發(fā)明的精神和范圍的前提下容易地確定并做出其他示例。
權(quán)利要求
1.一種分支預(yù)測(cè)器,包括分支預(yù)測(cè)電路,它使用來(lái)自翻譯后備緩沖器的輸入來(lái)預(yù)測(cè)處理器中的執(zhí)行指令內(nèi)的分支結(jié)果。
2.如權(quán)利要求1所述的分支預(yù)測(cè)器,其特征在于,所述分支預(yù)測(cè)電路包括模式歷史表;以及耦合至所述模式歷史表和所述翻譯后備緩沖器的歷史移位寄存器,所述歷史移位寄存器在接收到來(lái)自所述翻譯后備緩沖器的未命中信號(hào)時(shí)將其自身清零。
3.如權(quán)利要求2所述的分支預(yù)測(cè)器,其特征在于,所述分支預(yù)測(cè)電路還包括耦合至所述歷史移位寄存器的存儲(chǔ)器,所述存儲(chǔ)器在接收到來(lái)自所述翻譯后備緩沖器的未命中信號(hào)時(shí)將一復(fù)位值傳遞到所述歷史移位寄存器。
4.如權(quán)利要求3所述的分支預(yù)測(cè)器,其特征在于,所述存儲(chǔ)器包括三態(tài)緩沖器。
5.如權(quán)利要求3所述的分支預(yù)測(cè)器,其特征在于,所述分支預(yù)測(cè)電路還包括耦合至所述歷史移位寄存器的反饋環(huán),所述反饋環(huán)保持所述歷史移位寄存器內(nèi)最高有效位的值。
6.如權(quán)利要求5所述的分支預(yù)測(cè)器,其特征在于,所述反饋環(huán)將所述最高有效位的值保持為1。
7.如權(quán)利要求5所述的分支預(yù)測(cè)器,其特征在于,在所述歷史移位寄存器內(nèi)最高有效1值所在位的位置確定了存儲(chǔ)在所述歷史移位寄存器內(nèi)的全局分支歷史的長(zhǎng)度。
8.如權(quán)利要求7所述的分支預(yù)測(cè)器,其特征在于,存儲(chǔ)在所述歷史移位寄存器內(nèi)的所述全局分支歷史的長(zhǎng)度由所述最高有效1值所在位的位置定義。
9.如權(quán)利要求5所述的分支預(yù)測(cè)器,其特征在于,所述反饋環(huán)包括耦合至所述歷史移位寄存器的與門,所述與門接收所述歷史移位寄存器的輸出位值和允許信號(hào);以及耦合至所述與門和所述歷史移位寄存器的或門,所述或門接收來(lái)自所述與門的第一輸入值以及來(lái)自所述歷史移位寄存器的第二輸入值,并且將一新的位值輸出至所述歷史移位寄存器。
10.如權(quán)利要求2所述的分支預(yù)測(cè)器,其特征在于,所述歷史移位寄存器含有動(dòng)態(tài)長(zhǎng)度的全局分支歷史。
11.如權(quán)利要求2所述的分支預(yù)測(cè)器,其特征在于,所述歷史移位寄存器包括m位,并且經(jīng)由異或門將一m位模式歷史值輸出至所述模式歷史表。
12.如權(quán)利要求11所述的分支預(yù)測(cè)器,其特征在于,所述異或門接收所述m位模式歷史值以及一m位分支地址值,并將一m位模式歷史值輸出至所述模式歷史表。
13.一種分支預(yù)測(cè)器,包括包括m位全局分支歷史的分支預(yù)測(cè)電路;耦合至翻譯后備緩沖器和所述分支預(yù)測(cè)電路的存儲(chǔ)器,所述存儲(chǔ)器在接收到所述翻譯后備緩沖器中的未命中的指示時(shí)復(fù)位所述分支預(yù)測(cè)電路;以及耦合至所述分支預(yù)測(cè)電路的反饋環(huán),所述反饋環(huán)在所述全局分支歷史的長(zhǎng)度等于m-1時(shí)保持所述分支預(yù)測(cè)電路內(nèi)最高有效位的值。
14.如權(quán)利要求13所述的分支預(yù)測(cè)器,其特征在于,所述分支預(yù)測(cè)電路包括模式歷史表;以及耦合至所述模式歷史表和所述翻譯后備緩沖器的歷史移位寄存器,所述歷史移位寄存器在接收到來(lái)自所述翻譯后備緩沖器的未命中指示時(shí)將其自身清零;為所述歷史移位寄存器中指示的每個(gè)分支存儲(chǔ)地址的分支地址存儲(chǔ)器。
15.如權(quán)利要求14所述的分支預(yù)測(cè)器,其特征在于,所述存儲(chǔ)器耦合至所述歷史移位寄存器。
16.如權(quán)利要求13所述的分支預(yù)測(cè)器,其特征在于,所述存儲(chǔ)器包括三態(tài)緩沖器。
17.如權(quán)利要求13所述的分支預(yù)測(cè)器,其特征在于,所述反饋環(huán)包括耦合至所述歷史移位寄存器的與門,所述與門接收所述歷史移位寄存器的輸出位值和允許信號(hào);以及耦合至所述與門和所述歷史移位寄存器的或門,所述或門接收來(lái)自所述與門的第一輸入值以及來(lái)自所述歷史移位寄存器的第二輸入值,并且將一新的位值輸出至所述歷史移位寄存器。
18.一種處理器,包括翻譯后備緩沖器;包括m位全局分支歷史的分支預(yù)測(cè)電路;耦合至所述翻譯后備緩沖器和所述分支預(yù)測(cè)電路的存儲(chǔ)器,所述存儲(chǔ)器在接收到所述翻譯后備緩沖器中的未命中的指示時(shí)復(fù)位所述分支預(yù)測(cè)電路;以及耦合至所述分支預(yù)測(cè)電路的反饋環(huán),所述反饋環(huán)在所述全局分支歷史的長(zhǎng)度等于m-1時(shí)保持所述分支預(yù)測(cè)電路內(nèi)最高有效位的值。
19.如權(quán)利要求18所述的處理器,其特征在于,所述分支預(yù)測(cè)電路包括模式歷史表;耦合至所述模式歷史表和所述翻譯后備緩沖器的歷史移位寄存器,所述歷史移位寄存器在接收到來(lái)自所述翻譯后備緩沖器的未命中指示時(shí)將其自身清零;以及為所述歷史移位寄存器中指示的每個(gè)分支存儲(chǔ)地址的分支地址存儲(chǔ)器。
20.如權(quán)利要求19所述的處理器,其特征在于,所述存儲(chǔ)器耦合至所述歷史移位寄存器。
21.如權(quán)利要求18所述的處理器,其特征在于,所述存儲(chǔ)器包括三態(tài)緩沖器。
22.如權(quán)利要求18所述的處理器,其特征在于,所述反饋環(huán)包括耦合至所述歷史移位寄存器的與門,所述與門接收所述歷史移位寄存器的輸出位值和允許信號(hào);以及耦合至所述與門和所述歷史移位寄存器的或門,所述或門接收來(lái)自所述與門的第一輸入值以及來(lái)自所述歷史移位寄存器的第二輸入值,并且將一新的位值輸出至所述歷史移位寄存器。
23.一種計(jì)算系統(tǒng),包括存儲(chǔ)器;耦合至所述存儲(chǔ)器的處理器,所述處理器包括翻譯后備緩沖器;包括m位全局分支歷史的分支預(yù)測(cè)電路;耦合至所述翻譯后備緩沖器和所述分支預(yù)測(cè)電路的存儲(chǔ)器,所述存儲(chǔ)器在接收到所述翻譯后備緩沖器中的未命中的指示時(shí)復(fù)位所述分支預(yù)測(cè)電路;以及耦合至所述分支預(yù)測(cè)電路的反饋環(huán),所述反饋環(huán)在所述全局分支歷史的長(zhǎng)度等于m-1時(shí)保持所述分支預(yù)測(cè)電路內(nèi)最高有效位的值。
24.如權(quán)利要求23所述的計(jì)算系統(tǒng),其特征在于,所述分支預(yù)測(cè)電路包括模式歷史表;耦合至所述模式歷史表和所述翻譯后備緩沖器的歷史移位寄存器,所述歷史移位寄存器在接收到來(lái)自所述翻譯后備緩沖器的未命中指示將其自身清零;為所述歷史移位寄存器中指示的每個(gè)分支存儲(chǔ)地址的分支地址存儲(chǔ)器。
25.如權(quán)利要求24所述的計(jì)算系統(tǒng),其特征在于,所述存儲(chǔ)器耦合至所述歷史移位寄存器。
26.一種方法,包括使用來(lái)自一翻譯后備緩沖器的輸入來(lái)預(yù)測(cè)處理器內(nèi)的多條執(zhí)行指令的分支結(jié)果。
27.如權(quán)利要求26所述的方法,其特征在于,使用來(lái)自翻譯后備緩沖器的輸入來(lái)預(yù)測(cè)處理器內(nèi)額多條執(zhí)行指令的分支結(jié)果包括預(yù)測(cè)所述多條執(zhí)行指令的每一條的分支結(jié)果;保持所預(yù)測(cè)的所述多條執(zhí)行指令的每一條的分支結(jié)果;以及在接收到關(guān)于在與所述多條執(zhí)行指令之一相關(guān)聯(lián)的數(shù)據(jù)的翻譯后備緩沖器中發(fā)生未命中的指示時(shí)將所述全局分支歷史清零。
28.如權(quán)利要求27所述的方法,其特征在于,在接收到關(guān)于在翻譯后備緩沖器中發(fā)生未命中的指示時(shí)將所述全局分支歷史清零包括用一預(yù)定的清零值代替所述全局分支歷史。
29.一種其上存儲(chǔ)有用于執(zhí)行一種方法的可執(zhí)行指令的機(jī)器可讀介質(zhì),所述方法包括使用來(lái)自翻譯后備緩沖器的輸入來(lái)預(yù)測(cè)處理器內(nèi)的多條執(zhí)行指令的分支結(jié)果。
30.如權(quán)利要求29所述的機(jī)器可讀介質(zhì),其特征在于,使用來(lái)自翻譯后備緩沖器的輸入來(lái)預(yù)測(cè)處理器內(nèi)的多條執(zhí)行指令的分支結(jié)果包括預(yù)測(cè)所述多條執(zhí)行指令的每一條的分支結(jié)果;保持所預(yù)測(cè)的所述多條執(zhí)行指令的每一條的分支結(jié)果;以及在接收到關(guān)于在與所述多條執(zhí)行指令之一相關(guān)聯(lián)的數(shù)據(jù)的翻譯后備緩沖器中發(fā)生未命中的指示時(shí)將所述全局分支歷史清零。
31.如權(quán)利要求30所述的機(jī)器可讀介質(zhì),其特征在于,在接收到關(guān)于在所述翻譯后備緩沖器中發(fā)生未命中的指示時(shí)將所述全局分支歷史清零包括用一預(yù)定的清零值代替所述全局分支歷史。
32.一種方法,包括使用來(lái)自翻譯后備緩沖器的輸入選擇一預(yù)測(cè)條目;基于所述預(yù)測(cè)條目和所述輸入預(yù)測(cè)一分支是否會(huì)被采?。唤邮贞P(guān)于所述分支是否已被實(shí)際采取的信息;用關(guān)于所述分支是否已被實(shí)際采取的信息更新所述預(yù)測(cè)條目;更新全局歷史值以指示所述分支是否已被實(shí)際采?。灰约叭〕鱿乱粋€(gè)分支指令。
33.如權(quán)利要求32所述的方法,其特征在于,使用來(lái)自翻譯后備緩沖器的輸入來(lái)選擇預(yù)測(cè)條目包括使用來(lái)自所述翻譯后備緩沖器的輸入從模式歷史表中選擇一預(yù)測(cè)條目。
34.如權(quán)利要求32所述的方法,其特征在于,更新所述預(yù)測(cè)條目包括更新模式歷史表中的所述預(yù)測(cè)條目。
35.如權(quán)利要求32所述的方法,其特征在于,更新全局歷史值以指示所述分支是否已被實(shí)際采取包括更新全局移位寄存器內(nèi)的所述全局歷史值以指示所述分支是否已被實(shí)際采取。
36.一種其上存儲(chǔ)有用于執(zhí)行一種方法的可執(zhí)行指令的機(jī)器可讀介質(zhì),所述方法包括使用來(lái)自翻譯后備緩沖器的輸入來(lái)選擇一預(yù)測(cè)條目;基于所述預(yù)測(cè)條目和所述輸入預(yù)測(cè)一分支是否會(huì)被采??;接收關(guān)于所述分支是否已被實(shí)際采取的信息;用關(guān)于所述分支是否已被實(shí)際采取的信息更新所述預(yù)測(cè)條目;更新全局歷史值以指示所述分支是否已被實(shí)際采??;以及取出下一個(gè)分支指令。
37.如權(quán)利要求36所述的機(jī)器可讀介質(zhì),其特征在于,使用來(lái)自翻譯后備緩沖器的輸入來(lái)選擇預(yù)測(cè)條目包括使用來(lái)自所述翻譯后備緩沖器的輸入從模式歷史表中選擇一預(yù)測(cè)條目;更新全局歷史值以指示所述分支是否已被實(shí)際采??;以及取出下一條分支指令。
38.如權(quán)利要求36所述的機(jī)器可讀介質(zhì),其特征在于,更新所述預(yù)測(cè)條目包括更新所述模式歷史表中的預(yù)測(cè)條目。
39.如權(quán)利要求36所述的機(jī)器可讀介質(zhì),其特征在于,更新全局歷史值以指示所述分支是否已被實(shí)際采取包括更新全局移位寄存器內(nèi)的所述全局歷史值以指示所述分支是否已被實(shí)際采取。
全文摘要
本發(fā)明的實(shí)施例涉及能夠在超標(biāo)量以及其他允許分支的處理器中進(jìn)行有效的分支預(yù)測(cè)的裝置和方法。根據(jù)本發(fā)明的一個(gè)實(shí)施例,一種分支預(yù)測(cè)器可以包括使用來(lái)自翻譯后備緩沖器的輸入來(lái)預(yù)測(cè)處理器中的執(zhí)行指令內(nèi)的分支結(jié)果的分支預(yù)測(cè)電路。
文檔編號(hào)G06F9/00GK1961285SQ200480043209
公開(kāi)日2007年5月9日 申請(qǐng)日期2004年6月2日 優(yōu)先權(quán)日2004年6月2日
發(fā)明者C·賴 申請(qǐng)人:英特爾公司