專利名稱:數(shù)據(jù)處理器中的分支目標(biāo)緩存器尋址的制作方法
技術(shù)領(lǐng)域:
本公開總體上涉及數(shù)據(jù)處理器,更具體地涉及數(shù)據(jù)處理器對分支指令的執(zhí)行。
背景技術(shù):
在數(shù)據(jù)處理系統(tǒng)內(nèi)部,分支目標(biāo)緩存器(BTB)通常用于預(yù)測分支的結(jié)果和該分支的所采取的目標(biāo)地址以改善性能。隨著數(shù)據(jù)處理系統(tǒng)內(nèi)部的流水線階數(shù)目的增加,為了提高命中率并且減少分支誤預(yù)測性能損失,分支目標(biāo)緩存器(BTB)的尺寸典型地也隨之增大。但是,增大BTB的尺寸導(dǎo)致管芯尺寸、存取時(shí)間、以及BTB及其運(yùn)行所需的功率的增加。
通過舉例圖解本發(fā)明,但是本發(fā)明不受附圖限制。在附圖中,相同的附圖標(biāo)記指示 類似的元件。出于簡潔清楚的目的圖解附圖中的元件,但是這些元件不一定必須按照尺寸來繪出。圖I以方框圖的形式示出了根據(jù)本發(fā)明的一個(gè)方面的具有分支目標(biāo)緩存器(BTB)的數(shù)據(jù)處理系統(tǒng);圖2以方框圖的形式示出了根據(jù)本發(fā)明的一個(gè)方面的圖I中的數(shù)據(jù)處理系統(tǒng)的中央處理單元(CPU)的一部分;圖3以方框圖的形式示出了根據(jù)本發(fā)明的一個(gè)方面的圖I中的BTB的一部分;圖4以圖表的形式示出了根據(jù)本發(fā)明的一個(gè)方面的圖3中的BTB的標(biāo)簽和目標(biāo)的實(shí)施例;圖5至圖8以圖表的形式示出了根據(jù)本發(fā)明的各個(gè)方面的圖3中的BTB中的條目;圖9以方框圖的形式示出了根據(jù)本發(fā)明的一個(gè)方面的圖3中的BTB的相同頁面指示符生成器的實(shí)施例;圖10以流程圖的形式示出了根據(jù)本發(fā)明的一個(gè)方面的用于生成分支目標(biāo)地址的方法;圖11和圖12以流程圖的形式示出了根據(jù)本發(fā)明的一個(gè)方面的用于在BTB中分配的方法;圖13以圖表的形式示出了根據(jù)本發(fā)明的一個(gè)方面的圖3中的BTB的標(biāo)簽和目標(biāo)的實(shí)施例;圖14以方框圖的形式示出了根據(jù)本發(fā)明的一個(gè)方面的圖3中的分支目標(biāo)生成器的實(shí)施例;圖15以方框圖的形式示出了根據(jù)本發(fā)明的一個(gè)方面的圖3中的BTB的相同頁面指示符生成器的實(shí)施例。
具體實(shí)施例
如上所述,隨著BTB尺寸的增大,面積要求增多,功率需求增大,并且存取時(shí)間增長。因此,在一個(gè)實(shí)施例中,在保持性能的同時(shí)減小BTB的尺寸。在一個(gè)實(shí)施例中,實(shí)現(xiàn)一組相關(guān)聯(lián)的多路BTB,其中,BTB的不同路可以存儲標(biāo)簽尺寸和目標(biāo)地址尺寸的不同組合。在一個(gè)實(shí)施例中,標(biāo)簽尺寸基于存儲器的頁面邊界,從而,對于跨過頁面邊界的分支指令,在BTB中存儲完整標(biāo)簽,而對于在相同頁面內(nèi)的分支指令,在BTB中存儲短標(biāo)簽(相對完整標(biāo)簽,其需要較少位)。在一個(gè)實(shí)施例中,對于存儲短標(biāo)簽的那些BTB條目,使用額外的頁面地址緩存器(例如,頁面地址內(nèi)容可尋址存儲器(CAM))來存儲用于這些較短標(biāo)簽的頁面地址。對于存儲短標(biāo)簽的每一個(gè)條目,還存儲對應(yīng)的選擇值,并且使用該對應(yīng)的選擇值來選擇頁面地址CAM的適當(dāng)條目。此外,基于分支目標(biāo)是否跨過頁面邊界,可以在BTB內(nèi)的每個(gè)條目的目標(biāo)地址部分中存儲完整目標(biāo)地址或者短目標(biāo)地址。如在此所使用的,術(shù)語“總線”用來指多個(gè)信號或?qū)w,該多個(gè)信號或?qū)w可以用來傳輸一種或多種類型的信息,諸如,數(shù)據(jù)、地址、控制或狀態(tài)??梢躁P(guān)于單個(gè)導(dǎo)體、多個(gè)導(dǎo)體、單向?qū)w或雙向?qū)w來示出或描述在此所討論的導(dǎo)體。然而, 不同的實(shí)施例可能會改變導(dǎo)體的實(shí)現(xiàn)方式。例如,可以使用單獨(dú)的單向?qū)w而非雙向?qū)w,反之亦然。而且,可以使用逐次地或者按照時(shí)分復(fù)用的方式傳輸多個(gè)信號的單個(gè)導(dǎo)體來取代多個(gè)導(dǎo)體。同樣地,也可以將攜帶多個(gè)信號的單個(gè)導(dǎo)體分離成攜帶這些多個(gè)信號的多個(gè)子集的各種不同導(dǎo)體。因此,存在多個(gè)用于傳輸信號的選項(xiàng)。當(dāng)涉及致使信號、狀態(tài)位、或類似的裝置分別進(jìn)入其邏輯真狀態(tài)或者邏輯假狀態(tài)時(shí),使用術(shù)語“斷言(assert)”或“置位”和“否定”(或“無效”或“清除”)。如果邏輯真狀態(tài)是邏輯電平1,那么邏輯假狀態(tài)是邏輯電平O。并且,如果邏輯真狀態(tài)是邏輯電平0,那么邏輯假狀態(tài)是邏輯電平I。在此所描述的每個(gè)信號可以被指定為正邏輯或負(fù)邏輯。在負(fù)邏輯信號的情況下,該信號是低有效的,其中邏輯真狀態(tài)對應(yīng)于邏輯電平O。在正邏輯信號的情況下,該信號是高有效的,其中邏輯正狀態(tài)對應(yīng)于邏輯電平I。注意,在此所描述的任何信號均可被指定為負(fù)邏輯信號或者正邏輯信號。圖I以方框圖的形式示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的數(shù)據(jù)處理系統(tǒng)10。數(shù)據(jù)處理系統(tǒng)10包括處理器12、系統(tǒng)總線14、存儲器16、以及多個(gè)外圍設(shè)備,該多個(gè)外圍設(shè)備諸如是外圍設(shè)備18、外圍設(shè)備20,以及,在某些實(shí)施例中,是如圖I中的點(diǎn)所示的將外圍設(shè)備18與外圍設(shè)備20分開的其他外圍設(shè)備。存儲器16是通過雙向?qū)w耦合至系統(tǒng)總線14的系統(tǒng)存儲器,該雙向?qū)w在一種形式中具有多個(gè)導(dǎo)體。在所示出的形式中,外圍設(shè)備18和外圍設(shè)備20中的每一個(gè)都通過多個(gè)雙向?qū)w耦合至系統(tǒng)總線14,處理器12也同樣如此。處理器12包括經(jīng)由具有多個(gè)導(dǎo)體的雙向總線耦合至系統(tǒng)總線14的總線接口單元(BIU) 22。BIU22經(jīng)由雙向?qū)w耦合至內(nèi)部總線24。內(nèi)部總線24是多導(dǎo)體通信總線。指令緩存26、分支目標(biāo)緩存器(BTB) 28、中央處理單元(CPU) 30、以及存儲管理單元(MMU) 32均經(jīng)由各自的雙向?qū)w耦合至內(nèi)部總線24。CPU30是用于實(shí)現(xiàn)數(shù)據(jù)處理操作的處理器。CPU30內(nèi)部存在程序計(jì)數(shù)器31,該程序計(jì)數(shù)器31是用于保存計(jì)數(shù)值的諸如寄存器的存儲設(shè)備。指令緩存26、BTB28、CPU30、以及MMU32中的每一個(gè)均經(jīng)由各自的輸入/輸出(I/O)端口或端子耦合至內(nèi)部總線24。在替代實(shí)施例中,系統(tǒng)總線14可以實(shí)現(xiàn)為交叉開關(guān)或者互聯(lián)結(jié)構(gòu)。在操作中,處理器12通過執(zhí)行多個(gè)數(shù)據(jù)處理指令來實(shí)現(xiàn)多種數(shù)據(jù)處理功能。指令緩存26是用于CPU30可能需要的常用信息的臨時(shí)數(shù)據(jù)存儲。CPU30所需的不在緩存26內(nèi)部的信息被存儲在存儲器16中。MMU32控制CPU30和指令緩存26和存儲器16之間的信息交互。例如,MMU32在虛擬地址(例如,在CPU30內(nèi)部所使用的)和物理地址(例如,如指令緩存26和存儲器16所使用的)之間進(jìn)行轉(zhuǎn)換。BIU22可以是處理器12和系統(tǒng)總線14之間的幾個(gè)接口單元中的一個(gè)接口單元。BIU22協(xié)調(diào)與包括CPU30的分支指令執(zhí)行的指令執(zhí)行相關(guān)的信息流。經(jīng)由BIU22在CPU30和系統(tǒng)總線14之間交換源自分支指令執(zhí)行的數(shù)據(jù)和控制信息。BTB28是用于存儲多個(gè)條目的緩存器。每個(gè)條目存儲對應(yīng)于分支指令的指令地址、分支指令的對應(yīng)分支目標(biāo)地址、對應(yīng)的狀態(tài)信息、以及對應(yīng)的分支預(yù)測信息。在每個(gè)條目中可以存儲較少的信息或附加的信息。CPU30生成提供給CPU30內(nèi)部的指令流水線并且經(jīng)由內(nèi)部總線24發(fā)送至BTB28的指令地址。BTB28包含可以由CPU30生成的指令地址的子集。響應(yīng)于接收來自CPU30在BTB28中命中的指令地址,BTB28將分支目標(biāo)地址和相關(guān)聯(lián)的狀態(tài)信息提供給CPU30。注意,如下面將要詳細(xì)描述的,BTB28所提供的分支目標(biāo)地址是推測性的,因此可能導(dǎo)致誤預(yù)測。圖2示出了圖I中的CPU30的與指令的執(zhí)行和BTB28的使用相關(guān)的更加詳細(xì)的部分。CPU30包括控制與接口單元52、指令取回單元40、指令解碼單元46、(多個(gè))執(zhí)行單元48、以及注冊文件50??刂婆c接口單元52包括地址生成電路54、相同頁面狀態(tài)計(jì)數(shù)器55、以及相同頁面閥值57,并且雙向地耦合至指令取回單元42、指令解碼單元46、(多個(gè))執(zhí)行單元48、以及注冊文件50中的每一個(gè)。地址生成電路54將指令地址100提供給總線24并且從總線24接收BTB目標(biāo)地址、相同頁面指示符、以及BTB預(yù)測信息。地址生成電路54也可以與總線24進(jìn)行其它數(shù)據(jù)/控制信息的通信。指令取回單元40包括指令緩存器44和指令寄存器42。指令緩存器44具有連接至指令寄存器42的輸入的輸出。指令緩存器雙向地耦合至指令解碼單元46。(多個(gè))執(zhí)行單元包括分支執(zhí)行單元49,并且可能包括一個(gè)或多個(gè)額外的執(zhí)行單元,如CPU30內(nèi)部所需的。在該部分CPU30的所示出的形式中,控制與接口單元52控制指令取回單元40以實(shí)現(xiàn)從指令緩存26或存儲器16取回指令。指令解碼單元46針對一個(gè)或多個(gè)執(zhí)行單元48進(jìn)行指令解碼。注冊文件50用于支持(多個(gè))執(zhí)行單元48??刂婆c接口單元52的內(nèi)部存在地址生成電路54。地址生成電路54發(fā)送指令地址至BTB28,并且,作為響應(yīng),可以接收BTB目標(biāo)地址、相同頁面指示符和BTB預(yù)測信息。如果BTB目標(biāo)地址不存在并且在指令緩存26內(nèi)部有效,則CPU30使用該BTB目標(biāo)地址以從指令緩存26或存儲器16獲得該目標(biāo)地址處的指令。圖3示出了根據(jù)一個(gè)實(shí)施例的BTB28的進(jìn)一步的細(xì)節(jié)。BTB28從CPU30接收指令地址100,其中指令地址100包括頁面地址部分、標(biāo)簽部分和索引部分。在所示出的實(shí)施例中,頁面地址部分包括指令地址100的20個(gè)最高位,標(biāo)簽部分包括接下來的4個(gè)最高位,索引部分包括接下來的6個(gè)最高位。在一個(gè)實(shí)施例中,指令地址100包括總共32個(gè)位,其中2個(gè)最低位不被BTB28使用。BTB28包括BTB陣列106、BTB控制電路102、用于路線0_5的比較器108、用于路線6和7的比較器116、頁面地址內(nèi)容可尋址存儲器(CAM) 104、匹配指示符選擇110、與門112和114、分支目標(biāo)生成器119、以及分支目標(biāo)地址選擇器124。在 所示實(shí)施例中,BTB28是多路組相關(guān)聯(lián)的BTB,其中,BTB陣列106包括8個(gè)路線(路線O至路線7)以及64個(gè)組(組O至組63)。由此,BTB28的一個(gè)條目是指一個(gè)組和一個(gè)路線的交集,使得,例如BTB28的每個(gè)路線包括64個(gè)條目。注意,BTB28可以包括任何數(shù)目的路線和任何數(shù)目的組,或者備選地,可以是直接映射的BTB。此外,注意,路線O至路線7中的每一個(gè)可以被分別稱為wO至w7。BTB陣列106接收指令地址100并且雙向地耦合至BTB控制電路102。BTB控制電路102還接收來自CPU30的分支執(zhí)行單元49的信息(諸如,例如,分支指令地址,分支目標(biāo)地址,和分支狀態(tài)),并且還雙向地耦合至頁面地址CAM104。BTB陣列106將w0標(biāo)簽至w5標(biāo)簽提供給比較器108,將wOsel至w5sel提供給匹配指示符選擇110,并且將w6標(biāo)簽至w7標(biāo)簽提供給比較器116。比較器108還接收指令地址100的標(biāo)簽部分(也稱為短標(biāo)簽地址),并且將《O標(biāo)簽匹配提供給與門112的第一輸入,將《5標(biāo)簽匹配提供給與門114的第一輸入。匹配指示符選擇110接收來自頁面地址CAM104的頁面地址匹配指示符,并且將w0頁面匹配提供給與門112的第二輸入,將《5頁面匹配提供給與門114的第二輸入。與門112在其輸出處提供命中路線O信號,與門114在其輸出處提供命中路線5信號。BTB28還包括如與門112和114之間的3個(gè)點(diǎn)所示的額外的與門,其中,每個(gè)與門在第一輸入處接收來自比較器108的路線標(biāo)簽匹配信號,在第二輸入處接收來自匹配指示符選擇110的路線頁面匹配信號,并且在輸出處提供對應(yīng)的路線命中信號。因此,在所示的實(shí)施例中,存在4個(gè)額外的與門以提供命中路線I信號至命中路線4信號。比較器116接 收指令地址100的完整標(biāo)簽地址(對應(yīng)于指令地址100的標(biāo)簽部分和頁面地址部分)并且提供命中路線6信號和命中路線7信號。注意,比較器108和116中的每一個(gè)還接收來自BTB陣列106的狀態(tài)位。例如,比較器108和116中的每一個(gè)可以使用有效位來批準(zhǔn)(qualify)匹配。級聯(lián)目標(biāo)地址(TA) 118是存儲器電路,其接收指令地址100的頁面地址部分和來自BTB106的wO TA并且保存與w0 TA級聯(lián)的頁面地址。級聯(lián)目標(biāo)地址(TA) 120是存儲器電路,其接收指令地址100的頁面地址部分和來自BTB106的w3 TA并且保存與w3 TA級聯(lián)的頁面地址。wl TA和《2 TA中的每一個(gè)也被提供給級聯(lián)目標(biāo)地址存儲器電路,使得指令地址100的指令的頁面地址部分可以被級聯(lián)至WlTA和w2 TA中的每一個(gè)。用于w0 TA至w3 TA中的每一個(gè)以及w6TA的級聯(lián)地址被提供給分支目標(biāo)地址選擇器124。w4 TA、w5 TA、w7 TA中的每一個(gè)都被提供給分支目標(biāo)地址選擇器124。分支目標(biāo)地址選擇器124還接收命中路線信號(命中路線O至命中路線7)中的每一個(gè),并且輸出分支目標(biāo)地址。BTB陣列106還提供相同頁面指示符和預(yù)測指示符。來自分支目標(biāo)地址選擇器124的分支目標(biāo)地址以及來自BTB陣列106的相同頁面指示符和預(yù)測指示符中的每一個(gè)均可經(jīng)由總線24被提供給控制與接口單元52 (例如,提供給地址生成電路54)。分支目標(biāo)生成器119接收w0 TA至w7 TA中的每一個(gè),將目標(biāo)地址提供給分支目標(biāo)地址選擇器124,并且包括級聯(lián)TAl 18、級聯(lián)TA120、以及級聯(lián)TA122。參照圖2和圖3,BTB28接收來自CPU30的指令地址100并且確定指令地址100是否在BTB28內(nèi)導(dǎo)致命中。返回至CPU30的指令地址100的BTB預(yù)測信息可以包括(基于命中路線信號(命中路線O至命中路線7)的)命中指示和預(yù)測信息。而且,來自分支目標(biāo)地址選擇器124的分支目標(biāo)地址作為BTB目標(biāo)地址被提供給CPU30。在一個(gè)實(shí)施例中,指令地址由指令取回單元40從指令緩存26或存儲器16中(個(gè)別地或者一次兩個(gè)或多個(gè)成組地)取回。指令取回單元40所取回的每個(gè)指令被放入指令緩存器44中并且作為指令地址100被提供給BTB28,以確定BTB28是否指示該指令地址對應(yīng)于分支指令。例如,如果指令地址100在BTB28中導(dǎo)致不命中,則認(rèn)為該指令地址100不是分支指令,繼續(xù)指令地址100的處理直至CPU30的指令流水線(并且不命中的指示經(jīng)由BTB預(yù)測信息被提供給CPU)。然而,如果指令地址100在BTB28中導(dǎo)致命中,則認(rèn)為該指令地址100是分支指令,并且使用BTB預(yù)測信息來確定是否應(yīng)該采取該分支指令。例如,如果指令地址100在BTB28中命中并且從BTB28接收的BTB預(yù)測信息指示所采取的分支,那么控制與接口單元52可將(從BTB28接收的)BTB目標(biāo)地址提供給指令取回單元40,使得取回可以推測性地在該分支目標(biāo)地址處開始。最終,指令地址100到達(dá)指令寄存器42并且前行通過CPU30的指令流水線。也就是,指令地址100從指令寄存器42被提供給指令解碼單元46進(jìn)行解碼,然后被提供給(多個(gè))執(zhí)行單元48進(jìn)行執(zhí)行(如果需要,可以訪問注冊文件50)。如果指令地址100作為分支指令被解碼,則其由分支執(zhí)行單元49解析。當(dāng)指令地址100被解析,則可以知道BTB28是否正確地預(yù)測了所采取的指令地址100的分支指令。如果正確地預(yù)測了分支,則執(zhí)行從當(dāng)前位置繼續(xù)。如果分支被誤預(yù)測,則CPU30可以處理該誤預(yù)測,按照需要沖刷(flush)流水線,并且將執(zhí)行返回至誤預(yù)測發(fā)生的點(diǎn)(例如,返回至指令地址100并且取回下一個(gè)順序指令)。因此,當(dāng)在BTB28中發(fā)生命中但是分支沒有被正確地預(yù)測為是被采取還是不被采取時(shí),或者,如果BTB28正確地預(yù)測分支被采取但是沒有正確地預(yù)測目標(biāo)地址,則可能會出現(xiàn)誤預(yù)測。而且,如果指令地址100在BTB28中命中但卻沒有成為分支指令,也可能會出現(xiàn)誤 預(yù)測。例如,可以由指令解碼單元46確定指令地址100實(shí)際上不是分支指令,這也導(dǎo)致需要由CPU30處理的誤預(yù)測。此外,對于每一個(gè)指令地址100,可以按照需要分配或者更新BTB28。例如,當(dāng)指令在BTB28中導(dǎo)致不命中并且該指令由指令解碼單元46解碼為采取的分支指令時(shí),可以為該分支指令分配一個(gè)新的條目至BTB28中。并且,如果在BTB28中命中的分支導(dǎo)致了誤預(yù)測,則其在BTB28中的對應(yīng)的條目被適當(dāng)?shù)馗?。下面,參照圖4至圖12更加詳細(xì)地描述BTB28的操作。參照圖3,BTB陣列106中的路線O至路線7中的每一個(gè)包括多個(gè)條目。在所示的實(shí)施例中,這些條目中的每一個(gè)條目包括存儲標(biāo)簽地址的標(biāo)簽字段、存儲狀態(tài)信息的狀態(tài)字段、存儲目標(biāo)地址的TA字段、以及存儲預(yù)測信息的預(yù)測字段。但是,如將要參照圖4至8以及圖13描述地,每個(gè)路線中的條目根據(jù)該路線而不同。例如,參照圖4,可以將每個(gè)路線配置為存儲不同長度的標(biāo)簽和目標(biāo)地址(TA)。例如,路線O至路線3的每一個(gè)路線中的條目存儲短標(biāo)簽地址和短TA。路線4和路線5的每一個(gè)路線中的條目存儲短標(biāo)簽地址和完整TA。路線6中的條目存儲完整標(biāo)簽地址和短TA,路線7中的條目存儲完整標(biāo)簽地址和完整TA。在一個(gè)實(shí)施例中,假定頁面尺寸為4K,那么完整標(biāo)簽地址可以是24位的值而短標(biāo)簽地址是僅4位的值。該4位的值可以實(shí)現(xiàn)至特定頁面的索引。因此,在一個(gè)實(shí)施例中,完整標(biāo)簽地址是不需要任何更多的位來完成尋址的地址,而短標(biāo)簽地址需要額外的位來完成完整標(biāo)簽地址。而且,存儲短標(biāo)簽地址的每個(gè)條目也包括選擇字段。該選擇字段用于提供標(biāo)簽地址的剩余上部位(upper bit)。例如,在當(dāng)前示例中,該選擇字段用于提供對應(yīng)于頁面地址的標(biāo)簽地址的剩余上部20個(gè)位。在一個(gè)實(shí)施例中,用于存儲在路線O至路線5內(nèi)的短標(biāo)簽的頁面地址被存儲在頁面地址CAM104中。頁面地址CAM104可以具有任何數(shù)目的條目,并且在一個(gè)實(shí)施例中,包括8個(gè)條目。在當(dāng)前示例中,假定頁面尺寸是4K,則CAM104中的每一個(gè)條目存儲20位的頁面地址。在一個(gè)實(shí)施例中,CAM104執(zhí)行指令地址100的頁面地址部分之間的匹配并且為其條目中的每一個(gè)條目提供一個(gè)頁面地址匹配指示符,如圖3所示。因此,該選擇字段可以是用于從8個(gè)頁面地址匹配指示符中選擇合適的頁面地址匹配指示符的3位的值。該選擇字段的大小由此取決于頁面地址CAM104內(nèi)的條目的數(shù)目。對于存儲完整標(biāo)簽地址的那些條目,由于不需要額外的地址位來完成地址標(biāo)簽,所以不需要選擇字段。仍然參照圖4,路線O至3以及路線6中的條目均存儲短TA,而路線4、路線5和路線7中的條目均存儲完整目標(biāo)地址。在一個(gè)實(shí)施例中,每個(gè)短TA可以是僅10位,而完整TA可以是30位。因此,在一個(gè)實(shí)施例中,完整TA是不需要任何更多的位來完成所期望數(shù)據(jù)的尋址的地址,而短TA需要額外的位來完成完整TA。在一個(gè)實(shí)施例中,當(dāng)提供了來自路線O至路線3或者來自路線6中的任何一個(gè)的TA時(shí),它首先級聯(lián)至指令地址100的頁面地址部分以提供完整TA。也就是,如圖3所示,《O TA至《3 TA以及w6 TA在被提供給分支目標(biāo)地址選擇器之前均被級聯(lián)至頁面地址部分。但是,由于w4 TA、w5TA、以及w7 TA是完整TA,所以它們被直接提供給分支目標(biāo)地址選擇器124。如將要更加詳細(xì)描述地,分支目標(biāo)地址選擇器124基于指示符命中路線O至命中路線7選擇所接收的完整TA中的一個(gè)完整TA以提供作為分支目標(biāo)地址。
圖5以圖表的形式示出了其條目存儲短標(biāo)簽和短TA的路線的示例性條目150的更加詳細(xì)的視圖。例如,條目150可以是用于路線O至3中的條目的格式。條目150包括4位標(biāo)簽地址、3位選擇字段、狀態(tài)字段、10位TA字段、以及預(yù)測字段。在一個(gè)示例中,狀態(tài)字段包括諸如指令類型字段、有效字段、和最近最少使用(LRU)字段(例如,在分配至BTB28的期間被使用)之類的各種字段。注意,這些LRU字段可以獨(dú)立于BTB陣列106存儲,并且每個(gè)LRU字段可以對應(yīng)于整個(gè)組。預(yù)測字段可以包括預(yù)測信息,諸如,對應(yīng)于標(biāo)簽地址的分支是被預(yù)測為被采取還是不被采取。圖6以圖表的形式示出了其條目存儲短標(biāo)簽和完整TA的路線的示例性條目152的更加詳細(xì)的視圖。例如,條目152可以是用于路線4和5中的條目的格式。條目152包括4位標(biāo)簽地址、3位選擇字段、狀態(tài)字段、30位TA字段、以及預(yù)測字段。在一個(gè)示例中,狀態(tài)字段包括諸如指令類型字段、有效字段、LRU字段(例如,在分配至BTB28的期間被使用)、和相同頁面指示符字段之類的各種字段。在一個(gè)實(shí)施例中,相同頁面指示符是指示完整TA是否與分支地址位于相同頁面上的單個(gè)位字段。預(yù)測字段可以包括預(yù)測信息,諸如,對應(yīng)于標(biāo)簽地址的分支是被預(yù)測為被采取還是不被采取。圖7以圖表的形式示出了其條目存儲完整標(biāo)簽和短TA的路線的示例性條目154的更加詳細(xì)的視圖。例如,條目154可以是用于路線6中的條目的格式。條目154包括24位標(biāo)簽地址、狀態(tài)字段、10位TA字段、以及預(yù)測字段。在一個(gè)示例中,狀態(tài)字段包括諸如指令類型字段、有效字段、和LRU字段(例如,在分配至BTB28的期間被使用)之類的各種字段。預(yù)測字段可以包括預(yù)測信息,諸如,對應(yīng)于標(biāo)簽地址的分支是被預(yù)測為被采取還是不被采取。圖8以圖表的形式示出了其條目存儲完整標(biāo)簽和完整TA的路線的示例性條目156的更加詳細(xì)的視圖。例如,條目156可以是用于路線7中的條目的格式。條目156包括24位標(biāo)簽地址、狀態(tài)字段、30位TA字段、以及預(yù)測字段。在一個(gè)示例中,狀態(tài)字段包括諸如指令類型字段、有效字段、LRU字段(例如,在分配至BTB28的期間被使用)、和相同頁面指示符字段之類的各種字段。在一個(gè)實(shí)施例中,相同頁面指示符是指示完整TA是否與分支地址位于相同頁面上的單個(gè)位字段。預(yù)測字段可以包括預(yù)測信息,諸如,對應(yīng)于標(biāo)簽地址的分支是被預(yù)測為被采取還是不被采取。注意,對于圖5至圖8中的各個(gè)示例性條目中的每一個(gè),用于每個(gè)字段的位的數(shù)目可以根據(jù)應(yīng)用有所變化,并且可以存在比示出的多或者少的字段。此外,每個(gè)條目的格式可以不同于所示出的格式。注意,在備選實(shí)施例中,短標(biāo)簽可以是地址的任何部分,在此,可以使用諸如CAM的單獨(dú)的存儲器單元來存儲完整標(biāo)簽地址的剩余最高有效部分。也就是說,它不需要取決于頁面或者頁面尺寸。在這種情況下,可以適當(dāng)?shù)厥褂萌魏纬叽绲腃AM,并且可以適當(dāng)?shù)厥褂萌魏纬叽绲倪x擇字段。而且,在備選實(shí)施例中,可以使用任何類型的頁面地址緩存器來取代頁面緩存器CAM104。另外,注意,圖4所示出的路線O至路線7的組織僅僅是一個(gè)示例。也就是說,在備選實(shí)施例中,對于每個(gè)路線可以使用短標(biāo)簽/完整標(biāo)簽和短TA/完整TA的任何組合,而并不局限于圖4的特定示例。例如,在一個(gè)備選實(shí)施例中,每個(gè)路線可以為所有條目存儲完整TA。在另一個(gè)示例中,可以僅有一個(gè)路線存儲完整標(biāo)簽地址,而剩余的路線存儲具有選擇位的短標(biāo)簽。例如,下面將參照圖13描述一個(gè)備選實(shí)施例。因此,圖5至 8以及圖13中示出的條目中的每一個(gè)僅僅是基于根據(jù)圖4的示例建立的BTB的例子而已。圖9示出了相同頁面指示符生成器158,該相同頁面指示符生成器158例如可以在BTB28內(nèi)部使用以生成相同頁面指示符。相同頁面指示符生成器158從路線4、5和7中的每一個(gè)的狀態(tài)字段接收相同頁面指示(例如,w4相同頁面指示符,w5相同頁面指示符,和w7相同頁面指示符),并且還從路線O至3以及路線6中的每一個(gè)接收命中指示符(例如,命中路線O至命中路線3以及命中路線6)?;诿新肪€O至命中路線7 (其指示哪個(gè)路線(如果有的話)導(dǎo)致針對指令地址100的命中),相同頁面指示符生成器158生成相同頁面指示符,該相同頁面指示符指示分支目標(biāo)地址選擇器124提供的分支目標(biāo)地址是否與指令地址100位于相同頁面上。注意,由于路線O至3以及路線6中的每一個(gè)均存儲短TA,所以認(rèn)為這些路線的任何一個(gè)中命中均發(fā)生在與指令地址100相同的頁面上。但是,由于路線4、5和7存儲完整TA,所以不知道TA是否位于相同頁面上。因此,路線4、5和7中的條目中的每一個(gè)還存儲相同頁面指示符,以提供這樣的信息。相同頁面指示符生成器158提供的相同頁面指示符使得可以做出如下判定,即,對于分支TA是否需要MMU32進(jìn)行地址轉(zhuǎn)換。也就是說,如果如同相同頁面指示符所指示的那樣位于相同頁面上,則可以旁路MMU32。但是,如果不是位于相同頁面上,則MMU32需要提供地址轉(zhuǎn)換。圖10以流程圖的形式示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于通過BTB28生成分支目標(biāo)地址的方法200。方法200開始于方框202,在此,接收到指令地址(其可以對應(yīng)于圖3中的指令地址100)。然后,流程行進(jìn)至方框204,在此,指令地址的索引部分被用來從組O至組63中選擇一個(gè)組。例如,參照圖3,BTB陣列106接收選擇組O至組63中的一個(gè)組的指令地址100的索引部分。因此,路線標(biāo)簽(《O標(biāo)簽至《7標(biāo)簽)和選擇字段(wOsel至w5sel)對應(yīng)于存儲在所選擇的組中的路線標(biāo)簽和選擇字段。類似地,路線TA (wOTA至w7TA)對應(yīng)于存儲在所選擇的組中路線TA。對于路線O至路線5,方法200繼續(xù)至方框206,在此,指令地址100的標(biāo)簽部分被用來確定所選擇的組中的路線標(biāo)簽匹配(例如,w0標(biāo)簽匹配至《5標(biāo)簽匹配)。參照圖3,用于路線O至5的比較器108從BTB陣列106接收所選擇的組的w0標(biāo)簽至《5標(biāo)簽中的每一個(gè),并且把它們均與指令地址100的標(biāo)簽部分進(jìn)行比較。比較器108由此輸出《O標(biāo)簽匹配至w5標(biāo)簽匹配,指示對于路線O至5中的每一個(gè)是否發(fā)生了與指令地址100的標(biāo)簽部分的匹配。(注意,w0標(biāo)簽匹配至《5標(biāo)簽匹配也可以被稱為路線標(biāo)簽匹配信號或短路線標(biāo)簽匹配信號。)注意,比較器108使用所選擇的組的有效位來批準(zhǔn)匹配,使得《O標(biāo)簽匹配信號至w5標(biāo)簽匹配信號中的每一個(gè)僅被斷言以指示,如果匹配的來自所選擇的組的對應(yīng)標(biāo)簽是來自于有效條目(如條目的狀態(tài)位所指示的)則發(fā)生了匹配。然后,方法200繼續(xù)至方框208,在此,指令地址100的頁面地址部分與頁面地址CAM104的條目進(jìn)行比較以生成頁面地址匹配指示符。參照圖3,頁面地址CAM104接收指令地址100的頁面地址部分,并且針對CAM104中的每一個(gè)條目輸出一個(gè)頁面地址匹配指示符,以指示該條目是否與指令地址100的頁面地址部分匹配。方法200繼續(xù)至方框210,在此,基于所選擇的組的選擇字段(例如,wOsel至w5sel)根據(jù)頁面地址匹配指示符生成路線頁面匹配(例如,w0頁面匹配至w5頁面匹配)。參照圖3,對于路線O至5中的每一個(gè),對應(yīng)的選擇字段被用來選擇頁面地址CAM104提供的頁面地址匹配指示符,并且匹配指示符選擇110提供所選擇的頁面地址匹配指示符作為路線頁面匹配。例如,對于路線0,匹配指示符選擇110使用wOsel的3位值從頁面地址匹配指示符選擇8個(gè)頁面地址匹配指示符中的一個(gè),并且提供該選擇的頁面地址匹配指示符 作為w0頁面匹配。因此,在一個(gè)實(shí)施例中,頁面地址CAM104可以還包括用于生成由匹配指示符選擇110使用的頁面地址匹配指示符的比較器?;蛘?,匹配指示符選擇110可以包括比較器,從而,頁面地址CAM104將頁面地址提供給匹配指示符選擇110,并且匹配指示符選擇110接收指令地址100的頁面地址部分并執(zhí)行比較以生成頁面地址匹配指示符。因此,在該實(shí)施例中,可以使用選擇字段從頁面地址CAM104選擇合適的頁面地址,利用該頁面地址CAM104執(zhí)行用于生成對應(yīng)的路線頁面匹配的頁面地址比較。在方框210之后,方法200繼續(xù)至方框212,在此,路線標(biāo)簽匹配和路線頁面匹配被用來生成命中路線信號(命中路線O至命中路線5)。(注意,命中路線O至命中路線5也可以被稱為短命中路線信號。)參照圖3,諸如與門112和114的與門接收路線標(biāo)簽匹配信號和對應(yīng)的路線標(biāo)簽匹配信號的每一個(gè)以生成對應(yīng)的路線命中信號。例如,對于路線0,與門112接收w0標(biāo)簽匹配和w0頁面匹配,并且在其輸出處提供命中路線O。因此,只有當(dāng)w0標(biāo)簽匹配被斷言(指示所選擇的組的w0標(biāo)簽是有效的且與訪問地址100的標(biāo)簽部分匹配)并且w0頁面匹配被斷言(指示如由wOsel所選擇的頁面地址CAM104中的所選擇的頁面地址與指令地址100的頁面地址部分匹配)時(shí),斷言命中路線O以指示路線O的命中。按照這種方式,對于路線O至5中的每一個(gè),進(jìn)行短標(biāo)簽的比較并且進(jìn)行與(由所選擇的組的選擇字段選擇的)適當(dāng)選擇的頁面地址的比較以生成命中路線信號。因此,方法200可以針對存儲短標(biāo)簽地址的那些路線執(zhí)行方框206、208、210和212的方法。注意,用于生成短命中路線信號的與門也可以被稱為邏輯電路,并且,在備選實(shí)施例中,可以使用不同的邏輯電路來生成短命中路線信號。再次參照方框204,對于路線6和7,流程行進(jìn)至方框214,在此,指令地址100的頁面地址和標(biāo)簽部分被用作指令地址100的完整標(biāo)簽地址,以確定在所選擇的組內(nèi)的路線命中。參照圖3,用于路線6和7的比較器116接收針對所選擇的組的路線6和7的完整地址標(biāo)簽(w6標(biāo)簽和w7標(biāo)簽),并且接收指令地址100的頁面地址和標(biāo)簽部分作為指令地址100的完整標(biāo)簽地址。方法200行進(jìn)至方框216,在此,基于路線命中信號生成命中路線信號(命中路線6和命中路線7)。例如,比較器116分別將w6標(biāo)簽和w7標(biāo)簽中的每一個(gè)與指令地址100的完整標(biāo)簽地址部分進(jìn)行比較,并且分別生成命中路線6和命中路線7。例如,在一個(gè)實(shí)施例中,如果w6標(biāo)簽與指令地址100的完整標(biāo)簽地址部分匹配,則命中路線6被斷言。注意,比較器116還使用所選擇的組的有效位來批準(zhǔn)匹配,使得命中路線6和命中路線7中的每一個(gè)僅被斷言以指示,如果匹配的來自所選擇的組的對應(yīng)標(biāo)簽是來自于有效條目(如由條目的狀態(tài)位所指示的),則發(fā)生了匹配。因此,對于存儲完整標(biāo)簽地址的那些路線,方法200可以執(zhí)行方框214和216的方法。注意,命中路線6和命中路線7也可以被稱為完整命中路線/[目號。在方框212或方框216之后,方法200繼續(xù)至方框218,在此,對于路線O至3以及路線6 (它們存儲短TA),指令地址100的頁面地址部分與所選擇的組的對應(yīng)目標(biāo)地址(例如,《O TA至《3 TA和w6TA)級聯(lián)以生成路線分支目標(biāo)。例如,路線分支目標(biāo)可以對應(yīng)于級聯(lián)存儲器電路(諸如,級聯(lián)存儲器電路118、120和122)的輸出,該級聯(lián)存儲器電路將指令地址100的頁面地址部分與對應(yīng)的路線TA級聯(lián)。然后,將級聯(lián)存儲器電路的輸出提供給分支 目標(biāo)地址選擇器124。仍然參照方框218,對于路線4、5和7 (它們存儲完整TA),提供來自所選擇的組的TA作為路線分支目標(biāo)。因此,由于來自這些路線的TA是完整TA,它們可以被直接提供給分支目標(biāo)地址選擇器124。然后,方法200繼續(xù)至方框220,在此,使用路線命中信號(命中路線O至命中路線7)來選擇路線分支目標(biāo)作為分支目標(biāo)地址。例如,分支目標(biāo)地址選擇器124基于斷言了哪一個(gè)命中路線信號被斷言來選擇用于對應(yīng)路線的分支目標(biāo)地址。分支目標(biāo)地址選擇器24所選擇的分支目標(biāo)地址由此可以作為BTB目標(biāo)地址被提供給CPU30的控制與接口單元52。方法200繼續(xù)至方框222,在此,可以將(對應(yīng)于導(dǎo)致命中的所選擇的組的路線的)預(yù)測信息和相同頁面指示符提供給CPU30的控制與接口單元52作為預(yù)測信息和相同頁面指示符。注意,在一個(gè)實(shí)施例中,如果所選擇的組的路線都不導(dǎo)致命中,則該不命中信息可以通過單獨(dú)命中/不命中指示符的方式或者通過預(yù)測信息的方式被提供給CPU30。圖11和圖12以流程圖的形式示出了根據(jù)本發(fā)明的一個(gè)方面的用于BTB28中的分配的方法250。方法250開始于方框252,在此,接收有效指令進(jìn)行解碼。例如,參照圖2,指令寄存器42中的有效指令由指令取回單元40提供給指令解碼單元46。方法250繼續(xù)至方框254,在此,為指令計(jì)算順序指令地址。方法行進(jìn)至判決方塊256,在此,確定順序指令地址是否使指令流跨過頁面邊界。(例如,這可以由控制與接口單元52執(zhí)行或者在指令解碼單元46內(nèi)執(zhí)行。)如果是,流程行進(jìn)至方框258,在此,重置相同頁面計(jì)數(shù)器。例如,參照圖2,該相同頁面計(jì)數(shù)器可以是相同頁面狀態(tài)計(jì)數(shù)器55,并且,在方框258中,可以將計(jì)數(shù)器55重置為第一預(yù)定值,例如,零。在方框258之后,或者如果在判決方塊256中頁面邊界沒有被跨過,方法250行進(jìn)至判決方塊260,在此,確定有效指令是否是分支指令。例如,作為解碼指令的結(jié)果,指令解碼單元46可以確定該指令是否實(shí)際上是分支指令。如果不是,方法250返回至方框252,在此,指令解碼單元46接收下一個(gè)有效指令。如果確定為是分支指令,方法250行進(jìn)至方框262,在此,或者計(jì)算或者取回分支指令的分支目標(biāo)地址。例如,這可以作為由分支執(zhí)行單元49執(zhí)行的分支解析的一部分來完成。然后,方法250行進(jìn)至判決方塊264,在此,確定該分支是否被誤預(yù)測。例如,該分支可能在其實(shí)際上不被采取的時(shí)候被(諸如來自BTB28的預(yù)測信息)誤預(yù)測為被采取,反之亦然。如果該分支沒有被誤預(yù)測,分支指令的處理繼續(xù)通過流水線,并且方法250返回至方框252,在此,指令解碼單元46接收下一個(gè)有效指令。如果在判定方塊264處確定分支被誤預(yù)測,方法250進(jìn)行至判定方塊266,在此,確定該分支指令是否被BTB28預(yù)測為分支指令。如果是,方法250進(jìn)行至方框268,在此,按照需要更新BTB28。例如,如果指令在BTB28中導(dǎo)致命中,則該指令被預(yù)測為分支指令。然而,盡管該分支指令導(dǎo)致命中,提供有來自BTB28的命中的預(yù)測信息導(dǎo)致分支誤預(yù)測。因此,可能需要更新對應(yīng)于被誤預(yù)測的分支指令的BTB28的條目。如果在判定方塊266處分支指令沒有被預(yù)測為分支指令(由于,例如,在BTB28中沒有被命中),方法250行進(jìn)至判定方塊270。在此時(shí),由于當(dāng)前有效指令實(shí)際上是分支指令但是在BTB28中沒有被命中,所以可以為該分支指令分配BTB28中的新的條目,如下面將要參照方法250的剩余部分描述的。參照判定方塊270,如果相同頁面計(jì)數(shù)器不大于零,方法250行進(jìn)至方框272,在此,將相同頁面計(jì)數(shù)器設(shè)置為I。注意,如果下一個(gè)順序指令地址至當(dāng)前地址導(dǎo)致跨過頁面邊界,則在方框258中將該相同頁面計(jì)數(shù)器(例如,圖2中的計(jì)數(shù)器55)設(shè)置為O。因此,由 于跨過頁面邊界,完整標(biāo)簽地址應(yīng)該被分配至BTB28中。從方框272開始,方法250行進(jìn)至方框278,在此,由于在所示實(shí)施例中僅路線6和7被配置為存儲完整標(biāo)簽地址,所以選擇路線6或路線7以針對當(dāng)前分支地址進(jìn)行分配。當(dāng)條目被分配至路線6或路線7的選擇路線中時(shí),在該條目中存儲完整標(biāo)簽地址。然后,可以基于分支目標(biāo)地址,確定選擇路線6或路線7中的哪個(gè)路線,如下面將要參照圖12中的方法250的部分描述的。再次參照判定方塊270,如果相同頁面計(jì)數(shù)器大于0,方法250行進(jìn)至判定方塊290,在此,確定當(dāng)前頁面地址(例如,當(dāng)前分支指令的頁面地址)是否已經(jīng)在頁面地址CAM104中。例如,控制與接口單元52可以與BTB28的BTB控制電路102通信,以確定當(dāng)前頁面地址是否在頁面地址CAM104中。如果是,方法250行進(jìn)至方塊296,在此,可以選擇路線O至5中的一個(gè)路線用于分配,并且可以將頁面地址CAM104中的現(xiàn)有條目用于該分配。也就是說,當(dāng)一個(gè)條目被分配至路線O至5的所選擇的路線中時(shí),可以在該條目中存儲當(dāng)前分支指令地址的標(biāo)簽部分,并且可以設(shè)置該條目的選擇值以選擇頁面地址CAM104中的現(xiàn)有條目。然后,可以基于分支目標(biāo)地址,進(jìn)一步地確定選擇路線O至5中的哪個(gè)路線,如下面將要參照圖12中的方法250的部分描述的。再次參照判定方塊290,如果當(dāng)前頁面地址不在頁面地址CAM104中,方法250行進(jìn)至判定方塊292,在此,確定是否滿足相同頁面的閥值。例如,在一個(gè)實(shí)施例中,可以使用位于CPU30的控制與接口單元52中的相同頁面閥值57來確定是否分配頁面地址CAM104中的新的條目。在一個(gè)實(shí)施例中,不分配頁面地址CAM104中的新的條目,直至在存儲器的相同頁面上出現(xiàn)了一定數(shù)量的分支指令。例如,在一個(gè)實(shí)施例中,僅當(dāng)在存儲器的特定頁面(其頁面地址還未存在于頁面地址CAM104中)上第三次出現(xiàn)分支指令時(shí)才分配新的條目。因此,參照判定方塊292,如果對于當(dāng)前頁面地址沒有滿足相同頁面閥值,方法250行進(jìn)至方框298,在此,相同頁面計(jì)數(shù)器55遞增。因此,當(dāng)隨后的分支指令發(fā)生在相同頁面上時(shí)(由此從方框254行進(jìn)至判定方塊256,至判定方塊260,至方框262,并且再次向下繼續(xù)至判定方塊292),可以再次遞增相同頁面計(jì)數(shù)器55,直至分支指令滿足相同頁面閥值。注意,一旦分支指令跨過頁面邊界,相同頁面計(jì)數(shù)器55被重置為零(在方框258中)。在方框298之后,方法250繼續(xù)至方框278,在此,可以選擇路線6或7用于針對當(dāng)前分支指令進(jìn)行分配。也就是說,由于沒有滿足相同頁面的閥值,所以沒有分配頁面地址CAM104中的新的條目,并且由此在分配時(shí)需要將完整標(biāo)簽地址存儲至BTB28。在當(dāng)前示例中,僅路線6和7允許存儲完整目標(biāo)地址。然后,可以基于分支目標(biāo)地址,進(jìn)一步地確定選擇路線6和7中的哪個(gè)路線,如下面將參照圖12的方法250的部分詳細(xì)描述的。再次參照判定方塊292,如果滿足了相同頁面的閥值(S卩,在存儲器的相同頁面內(nèi)出現(xiàn)了足夠的分支指令),方法250行進(jìn)至方框294,在此,可以分配頁面地址CAM中的一個(gè)條目用于存儲當(dāng)前分支指令的頁面地址??梢允褂萌魏螀f(xié)議來確定分配頁面地址CAM104中的哪個(gè)條目,諸如,最近最少使用(LRU),偽LRU (PLRU),循環(huán)法,等等。然后,方法250繼續(xù)至方框295,在此,可以選擇路線O至5中的一個(gè)路線用于分配,并且可以將頁面地址CAM104中的現(xiàn)有條目用于該分配。也就是說,當(dāng)條目被分配至BTB陣列106中的路線O至5的所選擇的路線中時(shí),可以在該條目中存儲當(dāng)前分支指令地址的標(biāo)簽部分,并且可以設(shè)定該條目的選擇值以選擇頁面地址CAM104中的最新分配的條目。然后,可以基于分支目標(biāo)地址,進(jìn)一步地確定選擇路線O至5中的哪個(gè)路線,如下面將參照圖12中的方法250的部分描述的。 方法250繼續(xù)至圖12中的點(diǎn)A。在方框278、295和296的每一個(gè)之后,方法250經(jīng)由點(diǎn)A繼續(xù)至位于圖12中的方框280。在方框280中,將(例如在方框262中確定的)當(dāng)前分支指令的分支目標(biāo)地址的頁面地址與當(dāng)前分支指令地址的頁面地址進(jìn)行比較。方法250繼續(xù)至判定方塊282,在此,確定分支目標(biāo)地址的頁面地址是否與分支指令地址的頁面地址匹配。如果是,方法250繼續(xù)至方框288,在此,如果選擇路線6或7用于分配(例如,當(dāng)方法250從方框278進(jìn)入點(diǎn)A),那么路線6被選擇用于分配,并且,如果選擇路線O至5用于分配(例如,當(dāng)方法250從方框295或296進(jìn)入點(diǎn)A),那么路線O至3中的一個(gè)被選擇用于分配。也就是說,如果在判定方塊282處頁面地址匹配,那么分支目標(biāo)位于與分支指令相同的存儲器頁面上。在這種情況下,可以選擇BTB28的一個(gè)路線用于分配,其允許存儲短TA,并且,在當(dāng)前示例中,路線O至3和路線6中的條目存儲短TA,如上面所述的。注意,BTB控制電路102可以使用任何方法來選擇路線O至3中的一個(gè)用于分配,諸如,LRU, PLRU,循環(huán)法,等等。在分配路線6或路線O至3的一個(gè)路線中的條目時(shí),BTB控制電路102可以使用從CPU30的分支執(zhí)行單元49接收的信息(例如,分支地址,分支TA,分支狀態(tài))將必要的信息存儲到所選擇的路線的條目中。此外,BTB控制電路102可以使用分支目標(biāo)地址的索引部分來選擇要存儲新的BTB條目的所選擇的路線的組。再次參照判定方塊282,如果分支目標(biāo)地址的頁面地址與分支指令不匹配,那么方法250行進(jìn)至方框284,在此,再次重置相同頁面計(jì)數(shù)器55。然后,方法行進(jìn)至方框286,在此,如果選擇路線6或7用于分配(例如,當(dāng)方法250從方框278進(jìn)入點(diǎn)A時(shí)),那么路線7被選擇用于分配,并且,如果選擇路線O至5用于分配(例如,當(dāng)方法250從方框295或296進(jìn)入點(diǎn)A時(shí)),那么路線4或5中的一個(gè)被選擇用于分配。也就是說,如果在判定方塊282處頁面地址不匹配,那么分支目標(biāo)沒有位于與分支指令相同的存儲器頁面上。在這種情況下,選擇BTB28的一個(gè)路線用于分配,其允許存儲完整TA,并且,在當(dāng)前示例中,路線4、5和6中的條目均存儲完整TA,如上面所述的。注意,BTB控制電路102可以使用任何方法來選擇路線4或5中的一個(gè)用于分配,例如,LRU,PLRU,循環(huán)法,等等。當(dāng)分配路線7或者路線4或5的一個(gè)路線中的條目時(shí),BTB控制電路102可以使用從CPU30的分支執(zhí)行單元49接收的信息(例如,分支地址,分支TA,分支狀態(tài))將必要的信息存儲至所選擇的路線的條目中。此外,BTB控制電路102可以使用分支目標(biāo)地址的索引部分來選擇要存儲新的BTB條目的所選擇的路線的組。在方框288和286之后,方法250結(jié)束。圖13示出了可以如何組織BTB28中的路線O至7的另一個(gè)示例。例如,參照圖13,用于每個(gè)路線的標(biāo)簽條目可以與圖4中的相同,其中上述關(guān)于圖4所提供的描述在此也適用。也就是說,路線O至路線5的每一個(gè)路線中的條目存儲短標(biāo)簽地址以及該短標(biāo)簽地址的對應(yīng)的選擇位,并且路線6和7的每一個(gè)路線中的條目存儲完整標(biāo)簽地址。因此,如上所述,使用選擇字段來提供標(biāo)簽地址的剩余上部位,例如,通過選擇由頁面地址CAM104提供的適當(dāng)?shù)捻撁娴刂菲ヅ渲甘痉H欢?,不同于圖4的實(shí)施例,圖13的實(shí)施例指示了每個(gè)路線中的每個(gè)條目存儲短TA以及該短TA的對應(yīng)的選擇字段。在這個(gè)示例中,可以使用TA 頁面地址緩存器(如圖14中所示)來存儲TA的上部位,并且可以使用每個(gè)條目的選擇字段來選擇TA的剩余上部位。在上面提供的假定頁面尺寸為4K字節(jié)的示例中,短TA是10位,并且正在生成的完整TA是30位。選擇字段包括足夠的位來從TA頁面地址緩存器選擇適當(dāng)?shù)臈l目以完成完整的TA。例如,如下面將要描述的,用于短TA的選擇字段也可以是3位。圖14示出了根據(jù)圖13的示例的分支目標(biāo)生成器401,其中,圖14中的分支目標(biāo)生成器401可以被用于替代圖I中的分支目標(biāo)生成器119。分支目標(biāo)生成器401從BTB陣列106的所選擇的組接收w0 TA至w7 TA中的每一個(gè)。在這個(gè)示例中,w4 TA, w5 TA,和w7TA中的每一個(gè)也可以是短目標(biāo)地址,如同wO TA至w3 TA和w6 TA。分支目標(biāo)生成器401還從所選擇的組接收wO TAsel至w7 TAsel中的每一個(gè)。分支目標(biāo)生成器401包括TA頁面地址緩存器410和針對每一個(gè)路線的多路器(包括針對《O的多路器(MUX)400和針對《7的多路器(MUX) 402)。TA頁面地址緩存器410包括7個(gè)條目,每個(gè)條目均存儲20位的TA頁面地址(對應(yīng)于完整TA的剩余上部的20位)。每個(gè)MUX (諸如MUX400和MUX402)接收當(dāng)前頁面地址(指令地址100的頁面地址部分)和TA頁面地址緩存器410的7個(gè)條目中的每一個(gè),并且每個(gè)MUX基于其對應(yīng)的選擇信號(wO TAsel至w7 TAsel中的一個(gè))輸出所選擇的TA頁面地址。因此,在所示的TA頁面地址緩存器410包括7個(gè)條目的實(shí)施例中,每個(gè)TA選擇字段包括3位,其中,值“000”可選擇圖2中的指令地址100的當(dāng)前頁面地址部分,值“001-111”選擇緩存器410的7個(gè)條目中的一個(gè)條目。例如,參照對應(yīng)于wO的MUX400,針對wO TAsel的值“000”導(dǎo)致當(dāng)前頁面地址由MUX400輸出,值“001”導(dǎo)致緩存器410的第一條目由MUX400輸出,值“010”導(dǎo)致緩存器410的第二條目由MUX400輸出,等等。然后,在每個(gè)MUX的輸出處提供級聯(lián)電路(諸如,級聯(lián)電路404和406),以生成要提供給分支目標(biāo)地址選擇器124的完整TA,如上所述。例如,級聯(lián)電路404將MUX400提供的TA頁面地址與wO TA (其是短TA)級聯(lián)。類似地,MUX402使用w7 TAsel選擇要提供至級聯(lián)電路406以與w7 TA級聯(lián)的適當(dāng)?shù)腡A頁面地址。!圖15示出了相同頁面指示符生成器408,其可以用于圖13和14的示例,取代圖9的相同頁面指示符生成器158,以生成相同頁面指示符。相同頁面指示符生成器408接收針對每個(gè)路線的指示符(包括指示符411和412),其指示目標(biāo)地址是否如同當(dāng)前頁面地址那樣位于相同頁面上。也就是說,如果對應(yīng)的選擇信號等于“000” (其指示當(dāng)前頁面地址被分支目標(biāo)生成器401選擇用于與短TA的級聯(lián)),則指示符(諸如指示符411和412)中的每一個(gè)被斷言。使用命中信號(命中路線O至命中路線7)選擇由相同頁面指示符生成器408接收的適當(dāng)?shù)闹甘痉?,以提供該指示符作為相同頁面指示符。注意,如果對?yīng)的TAsel信號根本不是“000”,那么認(rèn)為(從TA頁面地址緩存器410選擇的)頁面地址沒有像當(dāng)前頁面地址那樣(像當(dāng)前分支指令那樣)位于相同頁面上。因此,注意,可以相應(yīng)地修改上述方法10至12,使其既用于生成分支目標(biāo)地址,又用于分配,以適應(yīng)上述參照圖13至15描述的短TA及其對應(yīng)的選擇字段。而且,注意,在備選實(shí)施例中,僅路線的一個(gè)子集就可存儲短TA及其對應(yīng)的選擇字段,而剩余路線可以存儲完整TA。至此,應(yīng)該理解,已經(jīng)提供了具有改善的存儲效率的BTB。在一個(gè)實(shí)施例中,可以使用BTB的不同路線來存儲不同尺寸的標(biāo)簽地址以及不同尺寸的TA。例如,可以使用BTB的某些路線的條目來存儲短標(biāo)簽地址,并且可以使用BTB的其它路線的條目來存儲完整標(biāo)簽地址。類似地,可以使用BTB的某些路線的條目來存儲短TA,并且可以使用BTB的其它路線的條目來存儲完整TA。對于任何特定的路線,可以將條目配置為存儲短/完整標(biāo)簽地址和短/完整TA的任何組合。此外,可以存儲用于存儲短標(biāo)簽地址的那些條目以及額外的選擇 字段,以指示短標(biāo)簽地址的剩余地址位。例如,短標(biāo)簽地址的剩余地址位可以對應(yīng)于短標(biāo)簽地址的頁面地址,并且可以存儲在頁面地址緩存器中,其中,選擇字段被用于從頁面地址緩存器選擇適當(dāng)?shù)仨撁娴刂?。按照這種方式,可以減小用于BTB的存儲空間。類似地,用于存儲短TA的那些條目也可以包括用于提供來自TA頁面地址緩存器的短TA的剩余地址位的對應(yīng)的選擇字段。由于實(shí)現(xiàn)本發(fā)明的裝置在極大程度上是由本領(lǐng)域技術(shù)人員熟知的電子部件和電路組成的,為了理解和評價(jià)本發(fā)明的潛在概念并且為了不模糊或者偏離本發(fā)明的教導(dǎo),不會按照比如上所述認(rèn)為必要的程度更詳細(xì)的程度來解釋電路細(xì)節(jié)。適用時(shí)上述實(shí)施例中的某些實(shí)施例可以使用多種不同的信息處理系統(tǒng)來實(shí)現(xiàn)。例如,盡管圖I及其討論描述了一個(gè)示例性信息處理架構(gòu),但是給出該信息處理架構(gòu)僅為了在討論本發(fā)明的不同方面時(shí)提供有用的參照。當(dāng)然,為了討論的目的,簡化了對該架構(gòu)的描述,其僅是可根據(jù)本發(fā)明使用的多種不同類型的架構(gòu)中的一種。本領(lǐng)域技術(shù)人員可以理解,邏輯方框之間的邊界僅僅是說明性的,并且備選的實(shí)施例可以合并邏輯方框或電路元件或者對各種邏輯方框或電路元件進(jìn)行功能的分解。因此,應(yīng)該理解,在此所描述的架構(gòu)僅僅是示例性的,并且,實(shí)際上,也可以實(shí)現(xiàn)許多其它能實(shí)現(xiàn)相同功能的架構(gòu)。從抽象但卻明確的意義上來說,任何實(shí)現(xiàn)相同功能的部件的布置都有效地“關(guān)聯(lián)”,使得可以實(shí)現(xiàn)所期望的功能。因此,此處被組合起來實(shí)現(xiàn)某個(gè)特定功能的任何兩個(gè)部件可以被看作是彼此“相互關(guān)聯(lián)的”,使得可以實(shí)現(xiàn)所期望的功能,而與架構(gòu)或中間部件無關(guān)。同樣地,如此關(guān)聯(lián)的任何兩個(gè)部件也可以被看作是彼此“操作性地連接”或者“操作性地耦合”以實(shí)現(xiàn)所希望的功能。而且,例如,在一個(gè)實(shí)施例中,數(shù)據(jù)處理系統(tǒng)10的所示出的元件是位于單個(gè)集成電路上或者位于相同器件內(nèi)的電路??蛇x地,數(shù)據(jù)處理系統(tǒng)10可以包括任何數(shù)量的相互連接的單獨(dú)集成電路或單獨(dú)器件。例如,存儲器16可以與處理器12位于相同的集成電路上,或者位于單獨(dú)的集成電路上,或者位于與數(shù)據(jù)處理器系統(tǒng)10的其它元件分離開的另一外圍設(shè)備或從屬設(shè)備內(nèi)。外圍設(shè)備18和20也可以位于單獨(dú)的集成電路或設(shè)備上。此外,本領(lǐng)域技術(shù)人員將認(rèn)識到,上述操作的功能之間的邊界僅僅是說明性的。多個(gè)操作的功能可以被組合到一個(gè)單獨(dú)的操作中,和/或一個(gè)單獨(dú)的操作的功能可以被分配到額外的操作中。而且,備選實(shí)施例可包括特定操作的多個(gè)實(shí)例,并且在多種其它實(shí)施例中,操作的順序可以被改變。例如,此處描述的軟件的全部或部分可以是數(shù)據(jù)處理系統(tǒng)10的從諸如存儲器16的計(jì)算機(jī)可讀介質(zhì)或在其它計(jì)算機(jī)系統(tǒng)上的其它介質(zhì)接收的元件。這種計(jì)算機(jī)可讀介質(zhì)可以永久地、可移除地或者遠(yuǎn)程地耦合至諸如數(shù)據(jù)處理系統(tǒng)10的信息處理系統(tǒng)。計(jì)算機(jī)可讀介質(zhì)可以包括,例如但不限于,任何數(shù)量的下述介質(zhì)包括磁盤和磁帶存儲介質(zhì)的磁存儲介質(zhì);諸如壓縮磁盤介質(zhì)(例如,CD-ROM,CD-R等)和數(shù)字視頻盤存儲介質(zhì)的光存儲介質(zhì);包括諸如FLASH存儲器、EEPR0M、EPR0M、R0M的基于半導(dǎo)體的存儲器單元的非易失性存儲器存儲介質(zhì);鐵磁數(shù)字存儲器;MRAM ;包括寄存器、緩存器或緩存、主存儲器、RAM等的易失性存儲介質(zhì);以及包括計(jì)算機(jī)網(wǎng)絡(luò)、點(diǎn)到點(diǎn)通信設(shè)備、和載波傳輸介質(zhì)的數(shù)據(jù)傳輸介質(zhì),僅以這些為例。在一個(gè)實(shí)施例中,數(shù)據(jù)處理系統(tǒng)10是諸如個(gè)人計(jì)算機(jī)系統(tǒng)的計(jì)算機(jī)系統(tǒng)。其它實(shí) 施例可以包括不同類型的計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)系統(tǒng)是可以被設(shè)計(jì)成給一個(gè)或多個(gè)用戶提供獨(dú)立計(jì)算功率的信息處理系統(tǒng)。計(jì)算機(jī)系統(tǒng)可以呈多種形式,包括但不限于,大型計(jì)算機(jī)、微型計(jì)算機(jī)、服務(wù)器、工作站、個(gè)人計(jì)算機(jī)、筆記本、個(gè)人數(shù)字助理、電子游戲機(jī)、汽車或其它嵌入系統(tǒng)、移動電話、以及各種其它無線設(shè)備。典型的計(jì)算機(jī)系統(tǒng)包括至少一個(gè)處理單元、相關(guān)聯(lián)的存儲器和多個(gè)輸入/輸出(I/o)設(shè)備。計(jì)算機(jī)系統(tǒng)根據(jù)程序處理信息并且經(jīng)由I/O設(shè)備產(chǎn)生作為結(jié)果的輸出信息。程序是一列諸如特定應(yīng)用程序和/或操作系統(tǒng)的指令。計(jì)算機(jī)程序典型地內(nèi)部地存儲在計(jì)算機(jī)可讀存儲器介質(zhì)上,或者經(jīng)由計(jì)算機(jī)可讀傳輸介質(zhì)傳輸至計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)進(jìn)程典型地包括執(zhí)行(運(yùn)行)程序或程序的部分、當(dāng)前程序值和狀態(tài)信息、以及操作系統(tǒng)用來管理進(jìn)程的執(zhí)行的資源。父進(jìn)程可以產(chǎn)生其它子進(jìn)程以幫助執(zhí)行父進(jìn)程的整體功能。由于父進(jìn)程明確地產(chǎn)生子進(jìn)程以執(zhí)行父進(jìn)程的整體功能的一部分,所以由子進(jìn)程(以及孫子進(jìn)程等)執(zhí)行的功能有時(shí)候也被描述為由父進(jìn)程執(zhí)行。盡管此處參照特定實(shí)施例來描述本發(fā)明,但是在不脫離下述權(quán)利要求所述的本發(fā)明的范圍的情況下可以做出各種修改和變型。例如,可以基于系統(tǒng)要求修改地址字段中使用的位的數(shù)目。相應(yīng)地,說明書和附圖應(yīng)該被視為是說明性的而非限制性的,并且所有這樣的修改都應(yīng)該意圖包括在本發(fā)明的范圍內(nèi)。在此關(guān)于特定實(shí)施例描述的益處、優(yōu)點(diǎn)或問題的解決方案都不應(yīng)該被解釋為是任何權(quán)利要求或所有權(quán)利要求的關(guān)鍵的、必須的或者本質(zhì)的特征或元件。如在此所使用的,術(shù)語“耦合”不意圖局限于直接耦合或者機(jī)械耦合。此外,如在此所使用的,術(shù)語“一個(gè)”被限定為一個(gè)或者多于一個(gè)。而且,權(quán)利要求中的諸如“至少一個(gè)”和“一個(gè)或多個(gè)”之類的引導(dǎo)短語的使用不應(yīng)該被理解為是暗示由不定冠詞引導(dǎo)的另一個(gè)保護(hù)元件將包含這樣引導(dǎo)的保護(hù)元件的任何特定權(quán)利要求限制為僅包括這種元件的發(fā)明,即使相同的權(quán)利要求包括“一個(gè)或多個(gè)”或“至少一個(gè)”的引導(dǎo)短語以及不定冠詞。這對于定冠詞的使用也是成立的。除非另外指出,諸如“第一”和“第二”之類的術(shù)語被使用以任意地對這種術(shù)語所描述的元件進(jìn)行區(qū)別。因此,這些術(shù)語沒有必要意圖指示這些元件的時(shí)間順序或其它的優(yōu)先性。下面包括本發(fā)明的各種實(shí)施例。項(xiàng)目I包括具有分支目標(biāo)緩存器(BTB)的數(shù)據(jù)處理器,該分支目標(biāo)緩存器(BTB)包括按路線分組的多個(gè)BTB條目,其中,這些路線的一個(gè)路線中的BTB條目包括短標(biāo)簽地址,這些路線的另一個(gè)路線中的BTB條目包括完整標(biāo)簽地址。項(xiàng)目2包括項(xiàng)目I的處理器,并且進(jìn)一步包括這些路線的一個(gè)路線中的BTB條目包括短標(biāo)簽地址,這些路線的另一個(gè)路線中的BTB條目包括完整標(biāo)簽地址。項(xiàng)目3包括項(xiàng)目I的處理器,并且進(jìn)一步包括控制與接口單元,該控制與接口單元被配置為記錄分配在BTB中的位于相同頁面上的多個(gè)分支指令條目;保持相同頁面狀態(tài)計(jì)數(shù)器以指示位于相同頁面上的先前接收的分支指令的數(shù)目;其中,當(dāng)分支指令條目的數(shù)目達(dá)到閥值數(shù)目時(shí),如果在頁面地址緩存器中還沒有條目,那么BTB在頁面地址緩存器中分配條目。項(xiàng)目4包括項(xiàng)目I的處理器,并且進(jìn)一步包括頁面地址緩存器,該頁面地址緩存器包括與短標(biāo)簽地址相關(guān)的用于多個(gè)先前接收的分支指令的頁面地址部分的條目;其中,包括短標(biāo)簽地址的BTB中的條目進(jìn)一步包括用于選擇頁面地址緩存器中的多個(gè)條目中的一個(gè)條目的選擇字段。項(xiàng)目5包括項(xiàng)目I的處理器,并且進(jìn)一步包括存儲短目標(biāo)地址的BTB條目;包括用于分支指令的多個(gè)先前接收的目標(biāo)地址的頁面地址部分的條目的頁面目標(biāo)地址緩存器;并且BTB條目包括用于選擇頁面目標(biāo)地址緩存器中的多個(gè)條目中的一個(gè)條目的目標(biāo)選擇字段。項(xiàng)目6包括項(xiàng)目2的處理器,其中,BTB被配置為針對短目標(biāo)地址,將具有相同頁面地址的當(dāng)前分支指令的頁面地址部分級聯(lián)至所選擇的短目標(biāo)地址,以確定該指令的分支目標(biāo)地址。項(xiàng)目7包括項(xiàng)目5的處理器,其中,BTB被配置為將當(dāng)前分支指令的頁面地址部分或者將來自具有相同頁面地址的頁面目標(biāo)地址緩存器的先前接收的頁面地址部分與所選擇的短目標(biāo)地址級聯(lián),以確定當(dāng)前分支指令的分支目標(biāo)地址。項(xiàng)目8包括具有組相關(guān)聯(lián)分支目標(biāo)緩存器(BTB)陣列的數(shù)據(jù)處理器,該組相關(guān)聯(lián)分支目標(biāo)緩存器(BTB)陣列包括按路線分組的BTB條目的組,其中,這些路線的第一路線的組中的BTB條目包括短標(biāo)簽地址字段,這些路線的第二路線的組中的BTB條目包括完整標(biāo)簽地址字段。項(xiàng)目9包括項(xiàng)目8的處理器,并且進(jìn)一步包括控制與接口單元,該控制與接口單元被配置為保持相同頁面狀態(tài)計(jì)數(shù)器以指示位于相同頁面上的多個(gè)分支指令;以及,頁面地址緩存器,該頁面地址緩存器包括用于位于相同頁面上的分支指令的頁面地址條目。項(xiàng)目10包括項(xiàng)目8的處理器,其中,為短標(biāo)簽地址字段分配的位的數(shù)目是由以下數(shù)目組成的組中的一個(gè)小于為完整標(biāo)簽地址字段分配的位的數(shù)目,并且基于存儲器管理單元(MMU)的頁面地址。項(xiàng)目11包括項(xiàng)目8的處理器,并且進(jìn)一步包括第一比較器,該第一比較器被配置為接收來自輸入指令的短標(biāo)簽地址以及來自包括短標(biāo)簽地址字段的那些路線中 的所選擇的組的短標(biāo)簽地址,該第一比較器還被配置為輸出指示來自輸入指令的短標(biāo)簽地址是否等于來自包括短標(biāo)簽地址字段的那些路線中的所選擇的組的短標(biāo)簽中的一個(gè)短標(biāo)簽的短路線標(biāo)簽匹配信號。項(xiàng)目12包括項(xiàng)目11的處理器,并且進(jìn)一步包括頁面地址緩存器,該頁面地址緩存器被配置為存儲包括來自先前接收的指令地址的頁面地址的條目;匹配指示符選擇單元,該匹配指示符選擇單元被配置為接收來自頁面地址緩存器的條目以及來自包括短標(biāo)簽地址字段的那些路線中的所選擇的組的選擇字段;并且,其中,那些路線的第一路線的組中的BTB條目包括指示針對所選擇的組的頁面地址緩存器中的條目的選擇字段。項(xiàng)目13包括項(xiàng)目12的處理器,并且進(jìn)一步包括第二比較器,該第二比較器被配置為接收來自輸入指令的完整標(biāo)簽地址以及來自包括完整標(biāo)簽地址字段的那些路線中的所選擇的組的完整標(biāo)簽地址,該第二比較器還被配置為輸出指示來自輸入指令的完整標(biāo)簽地址是否等于來自包括完整標(biāo)簽地址字段的那些路線中的所選擇的組的完整標(biāo)簽地址中的一個(gè)完整標(biāo)簽地址的長命中路線信號。項(xiàng)目14包括項(xiàng)目12的處理器,并且進(jìn)一步包括邏輯電路,該邏輯電路被配置為接收來自第一比較器的短路線標(biāo)簽匹配信號和來自匹配指示符選擇單元的路線頁面匹配信號,該邏輯電路還被配置為輸出指示輸入指令地址的頁面地址是否已經(jīng)存在于頁面地址緩存器中的短命中路線信號。
項(xiàng)目15包括在具有分支目標(biāo)緩存器(BTB)的處理器中的方法,該分支目標(biāo)緩存器(BTB)包括按路線分組的BTB條目的組,其中,該方法包括接收分支指令地址;并且使用該指令地址的索引部分來選擇多個(gè)組中的一個(gè)組,其中,第一批多個(gè)路線的組中的BTB條目包括短標(biāo)簽地址部分,第二批多個(gè)路線的組中的BTB條目包括完整標(biāo)簽地址部分。項(xiàng)目16包括項(xiàng)目15的方法,并且進(jìn)一步包括針對第一批多個(gè)路線,確定所選擇的組中的短標(biāo)簽地址部分是否與分支指令地址的標(biāo)簽部分匹配;通過比較指令地址的頁面地址部分和頁面地址緩存器中的條目,生成頁面地址匹配指示符,其中,頁面地址緩存器中的條目包括來自先前接收的指令地址的頁面地址;以及,基于所選擇的組的選擇字段根據(jù)頁面地址匹配指示符生成路線頁面匹配。項(xiàng)目17包括項(xiàng)目16的方法,并且進(jìn)一步包括針對第一批路線,基于路線標(biāo)簽匹配和路線頁面匹配生成命中路線信號;以及,通過將指令地址的頁面地址部分級聯(lián)至所選擇的組的目標(biāo)地址,生成路線分支目標(biāo)地址。項(xiàng)目18包括項(xiàng)目16的方法,并且進(jìn)一步包括記錄位于相同頁面上的在BTB中分配的多個(gè)分支指令條目;并且當(dāng)分支指令條目的數(shù)目達(dá)到閥值數(shù)目時(shí),如果在頁面地址緩存器中不存在條目,則在頁面地址緩存器中分配條目。項(xiàng)目19包括項(xiàng)目18的方法,并且進(jìn)一步包括針對第二批多個(gè)路線,通過確定指令地址的標(biāo)簽部分和頁面地址部分是否等于所選擇的組的完整標(biāo)簽地址部分,生成針對所選擇的組的命中路線信號;以及,提供所選擇的組的目標(biāo)地址作為路線分支目標(biāo)地址。項(xiàng)目20包括項(xiàng)目19的方法,并且進(jìn)一步包括將具有路線分支目標(biāo)地址的預(yù)測信息和相同頁面指示符提供給處理器。
權(quán)利要求
1.一種數(shù)據(jù)處理器,包括 分支目標(biāo)緩存器BTB,包括按路線分組的多個(gè)BTB條目,其中,所述多個(gè)路線的一個(gè)路線中的BTB條目包括短標(biāo)簽地址,并且所述多個(gè)路線的另一個(gè)路線中的BTB條目包括完整標(biāo)簽地址。
2.根據(jù)權(quán)利要求I的處理器,進(jìn)一步包括 所述多個(gè)路線的一個(gè)路線中的BTB條目包括短目標(biāo)地址,并且所述多個(gè)路線的另一個(gè)路線中的BTB條目包括完整目標(biāo)地址。
3.根據(jù)權(quán)利要求I的處理器,進(jìn)一步包括 控制與接口單元,所述控制與接口單元被配置為 跟蹤在所述BTB中分配的位于相同頁面上的分支指令條目的數(shù)目; 保持相同頁面狀態(tài)計(jì)數(shù)器以指示位于相同頁面上的先前接收的分支指令的數(shù)目; 其中,當(dāng)分支指令條目的數(shù)目達(dá)到閥值數(shù)目時(shí),如果條目還不在頁面地址緩存器中,則所述BTB在所述頁面地址緩存器中分配條目。
4.根據(jù)權(quán)利要求I的處理器,進(jìn)一步包括 頁面地址緩存器,包括用于與所述短標(biāo)簽地址相關(guān)的多個(gè)先前接收的分支指令的頁面地址部分的條目; 其中,包括所述短標(biāo)簽地址的所述BTB中的條目進(jìn)一步包括用于選擇頁面地址緩存器中的多個(gè)條目中的一個(gè)條目的選擇字段。
5.根據(jù)權(quán)利要求I的處理器,進(jìn)一步包括 所述BTB條目包括短目標(biāo)地址; 頁面目標(biāo)地址緩存器,包括用于分支指令的多個(gè)先前接收的目標(biāo)地址的頁面地址部分的條目;以及 所述BTB條目包括用于選擇所述頁面目標(biāo)地址緩存器中的多個(gè)條目中的一個(gè)條目的目標(biāo)選擇字段。
6.根據(jù)權(quán)利要求2的處理器,其中 所述BTB被配置為 針對所述短目標(biāo)地址,將具有相同頁面地址的當(dāng)前分支指令的頁面地址部分與所選擇的短目標(biāo)地址級聯(lián),以確定用于所述指令的分支目標(biāo)地址。
7.根據(jù)權(quán)利要求5的處理器,其中所述BTB被配置為 將從所述頁面目標(biāo)地址緩存器先前接收的具有相同頁面地址的頁面地址部分或當(dāng)前分支指令的頁面地址部分與選擇的短目標(biāo)地址級聯(lián),以確定用于所述當(dāng)前分支指令的分支目標(biāo)地址。
8.一種數(shù)據(jù)處理器,包括 組相關(guān)聯(lián)分支目標(biāo)緩存器BTB陣列,包括按路線分組的多個(gè)BTB條目組,其中,所述多個(gè)路線的第一路線的各組中的BTB條目包括短標(biāo)簽地址字段,所述多個(gè)路線的第二路線的各組中的BTB條目包括完整標(biāo)簽地址字段。
9.根據(jù)權(quán)利要求8的處理器,進(jìn)一步包括 控制與接口單元,所述控制與接口單元被配置為 保持相同頁面狀態(tài)計(jì)數(shù)器以指示位于相同頁面上的分支指令的數(shù)目;以及頁面地址緩存器,包括用于所述位于相同頁面上的多個(gè)分支指令的頁面地址條目。
10.根據(jù)權(quán)利要求8的處理器,其中,為所述短標(biāo)簽地址字段分配的位的數(shù)目是由以下數(shù)目組成的組中的一個(gè)小于為所述完整標(biāo)簽地址字段分配的位的數(shù)目,以及基于存儲器管理單元MMU的頁面地址。
11.根據(jù)權(quán)利要求8的處理器,進(jìn)一步包括 第一比較器,被配置為接收來自輸入指令的短標(biāo)簽地址以及來自包括所述短標(biāo)簽地址字段的多個(gè)路線中的所選擇的組的短標(biāo)簽地址,所述第一比較器還被配置為輸出短路線標(biāo)簽匹配信號,所述短路線標(biāo)簽匹配信號指示來自輸入指 令的短標(biāo)簽地址是否等于來自所述包括所述短標(biāo)簽地址字段的多個(gè)路線中的所選擇的組的短標(biāo)簽中的一個(gè)短標(biāo)簽。
12.根據(jù)權(quán)利要求11的處理器,所述處理器進(jìn)一步包括 頁面地址緩存器,被配置為存儲包括來自先前接收的指令地址的頁面地址的條目; 匹配指示符選擇單元,被配置為接收來自所述頁面地址緩存器的條目以及來自包括所述短標(biāo)簽地址字段的多個(gè)路線中的所選擇的組的選擇字段;以及 其中,所述多個(gè)路線的第一路線的各組中的BTB條目包括指示針對所選擇的組的頁面地址緩存器中的條目的選擇字段。
13.根據(jù)權(quán)利要求12的處理器,進(jìn)一步包括 第二比較器,被配置為接收來自所述輸入指令的完整標(biāo)簽地址以及來自包括所述完整標(biāo)簽地址字段的多個(gè)路線中的所選擇的組的完整標(biāo)簽地址,所述第二比較器還被配置為輸出長命中路線信號,所述長命中路線信號指示來自所述輸入指令的完整標(biāo)簽地址是否等于來自包括所述完整標(biāo)簽地址字段的所述多個(gè)路線中的所選擇的組的完整標(biāo)簽地址中的一個(gè)完整標(biāo)簽地址。
14.根據(jù)權(quán)利要求12的處理器,進(jìn)一步包括 邏輯電路,被配置為接收來自所述第一比較器的短路線標(biāo)簽匹配信號和來自所述匹配指示符選擇單元的路線頁面匹配信號,所述邏輯電路還被配置為輸出短命中路線信號,所述短命中路線信號指示所述輸入指令地址的所述頁面地址是否已經(jīng)存在于所述頁面地址緩存器中。
15.一種具有分支目標(biāo)緩存器BTB的處理器中的方法,該分支目標(biāo)緩存器BTB包括按路線分組的多個(gè)BTB條目組,其中,該方法包括 接收分支指令地址;以及 使用所述指令地址的索引部分來選擇多個(gè)組中的一個(gè)組,其中,第一批多個(gè)路線的各組中的BTB條目包括短標(biāo)簽地址部分,第二批多個(gè)路線的各組中的BTB條目包括完整標(biāo)簽地址部分。
16.根據(jù)權(quán)利要求15的方法,進(jìn)一步包括 針對所述第一批多個(gè)路線, 確定所選擇的組中的所述短標(biāo)簽地址部分是否與所述分支指令地址的標(biāo)簽部分匹配; 通過比較所述指令地址的頁面地址部分和頁面地址緩存器中的條目,生成頁面地址匹配指示符,其中,所述頁面地址緩存器中的所述條目包括來自先前接收的指令地址的頁面地址;以及基于所選擇的組的選擇字段根據(jù)頁面地址匹配指示符生成路線頁面匹配。
17.根據(jù)權(quán)利要求16的方法,進(jìn)一步包括 針對所述第一批多個(gè)路線, 基于路線標(biāo)簽匹配和路線頁面匹配生成命中路線信號;以及 通過將所述指令地址的頁面地址部分與所選擇的組的目標(biāo)地址級聯(lián),生成路線分支目標(biāo)地址。
18.根據(jù)權(quán)利要求16的方法,進(jìn)一步包括 跟蹤在所述BTB中分配的位于相同頁面上的分支指令條目的數(shù)目;以及當(dāng)分支指令條目的數(shù)目達(dá)到閥值數(shù)目時(shí),如果條目還沒有在頁面地址緩存器中,則在頁面地址緩存器中分配條目。
19.根據(jù)權(quán)利要求18的方法,進(jìn)一步包括 針對所述第二批多個(gè)路線, 通過確定所述指令地址的標(biāo)簽部分和頁面地址部分是否等于所選擇的組的所述完整標(biāo)簽地址部分,生成針對所選擇的組的命中路線信號;以及提供所選擇的組的目標(biāo)地址作為路線分支目標(biāo)地址。
20.根據(jù)權(quán)利要求19的方法,進(jìn)一步包括 將具有所述路線分支目標(biāo)地址的預(yù)測信息和相同頁面指示符提供給所述處理器。
全文摘要
本發(fā)明涉及一種數(shù)據(jù)處理器,包括具有按路線分組的多個(gè)BTB條目的分支目標(biāo)緩存器(BTB)。多個(gè)路線的一個(gè)路線中的BTB條目包括短標(biāo)簽地址,而多個(gè)路線的另一個(gè)路線中的BTB條目包括完整標(biāo)簽地址。
文檔編號G06F9/38GK102841777SQ20121020108
公開日2012年12月26日 申請日期2012年6月15日 優(yōu)先權(quán)日2011年6月17日
發(fā)明者T·M·特蘭, E·J·吉斯克, M·B·席茲勒 申請人:飛思卡爾半導(dǎo)體公司