專利名稱:滑動窗口、基于區(qū)塊的分支目標地址高速緩沖存儲器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體上涉及處理器領(lǐng)域,且具體來說,涉及具有滑動窗口組織的基于區(qū)塊的分支目標地址高速緩沖存儲器。
背景技術(shù):
微處理器在很多應(yīng)用中執(zhí)行計算任務(wù)。改進處理器性能是永恒的設(shè)計目標,通過經(jīng)由增強的軟件來實現(xiàn)更快的操作和/或增加的功能性,來推動產(chǎn)品改進。在許多嵌入式應(yīng)用中,例如便攜式電子裝置,節(jié)省功率并減少芯片大小在處理器設(shè)計和建構(gòu)中也是重要的目標。大多數(shù)現(xiàn)代處理器采用管線化架構(gòu),其中連續(xù)指令(其每一者具有多個執(zhí)行步驟)在執(zhí)行中是重疊的。這種開發(fā)連續(xù)指令流中的指令之間的并行度的能力對改進的處理器性能作出顯著貢獻。在理想條件下且在于一個循環(huán)中完成每一管級的處理器中,在填充管線的短暫初始過程之后,指令可在每一循環(huán)完成執(zhí)行。實際上從沒實現(xiàn)此類理想條件,這歸因于多種因素,其中包含指令之間的數(shù)據(jù)相依性(數(shù)據(jù)冒險)、例如分支的控制相依性(控制冒險)、處理器資源分配沖突(結(jié)構(gòu)冒險)、中斷、高速緩沖存儲器未命中等。處理器設(shè)計的主要目標是避免這些冒險,且保持管線“充滿”。所有現(xiàn)實的程序都包含分支指令,其可包括無條件或條件分支指令。分支指令的實際分支行為常常是未知的,直到指令被評估為在管線深處。這產(chǎn)生使管線停止的控制冒險,因為處理器不知道在分支指令后獲取哪些指令,且將直到分支指令評估之后才知道。大多數(shù)現(xiàn)代處理器采用各種形式的分支預(yù)測,借此在管線中較早地預(yù)測條件分支指令的分支行為和分支目標地址,且處理器基于分支預(yù)測以推測方式獲取并執(zhí)行指令,因此保持管線充滿。如果預(yù)測是正確的,那么性能得以最大化,且功率消耗得以最小化。當實際評估分支指令時,如果分支被錯誤預(yù)測,那么必須從管線中清洗以推測方式獲取的指令,且從正確的分支目標地址獲取新的指令。經(jīng)錯誤預(yù)測的分支不利地影響處理器性能和功率消耗。分支預(yù)測存在兩個組成部分條件評估和分支目標地址。條件評估(當然,僅與條件分支指令相關(guān))是二進制決策分支被采取(導(dǎo)致執(zhí)行跳到不同的代碼序列),或不被采取(在此情況下,處理器執(zhí)行緊接在條件分支指令之后的下一順序指令)。分支目標地址(BTA)是控制針對評估為采取的無條件分支指令或條件分支指令而分支到的地址。某些共同分支指令將BTA包含在指令操作碼中,或包含借其可容易地計算BTA的偏移。對于其它分支指令,不計算BTA,直到其處于管線深處,且因此必須被預(yù)測。
一種已知的BTA預(yù)測技術(shù)利用分支目標地址高速緩沖存儲器(BTAC)?,F(xiàn)有技術(shù)中已知的BTAC是由分支指令地址(BIA)標引的完全聯(lián)合的高速緩沖存儲器,其中每一數(shù)據(jù)位置(或高速緩沖存儲器“線”)含有單個BTA。當分支指令在管線中評估為被采取且其實際BTA經(jīng)計算時,(例如,在寫回管級期間)將BIA和BTA寫入到BTAC。當獲取新的指令時,與指令高速緩沖存儲器(或1-高速緩沖存儲器)并行地存取BTAC。如果指令地址在BTAC中命中,那么處理器知道所述指令是分支指令(這是在解碼從1-高速緩沖存儲器獲取的指令之前),且提供經(jīng)預(yù)測的BTA,其為分支指令的先前執(zhí)行的實際BTA。如果分支預(yù)測電路預(yù)測分支將被采取,那么指令獲取開始于經(jīng)預(yù)測的BTA。如果分支被預(yù)測為不被采取,那么指令獲取順序地繼續(xù)下去。應(yīng)注意,術(shù)語BTAC也用于此項技術(shù)中以表示將飽和計數(shù)器與BIA相關(guān)聯(lián)的高速緩沖存儲器,因此僅提供條件評估預(yù)測(即,采取或不采取)。這不是本文所使用的此術(shù)語的含義。高性能處理器可一次從1-高速緩沖存儲器獲取一個以上指令。舉例來說,可包括例如四個指令的整個高速緩沖存儲器線可被獲取到指令獲取緩沖器中,所述指令獲取緩沖器順序地將所述指令饋送到管線中。轉(zhuǎn)讓給本申請案的受讓人并以引用的方式并入本文的第11/089,072號專利申請案揭示了 BTAC在每一高速緩沖存儲器線中存儲兩個或兩個以上BTA,且標引分支預(yù)測偏移表(BPOT)以確定哪一 BTA被采取為BTAC命中的經(jīng)預(yù)測的BTA。BPOT避免了成本較高的具有多個讀取端口的BTAC硬件結(jié)構(gòu),所述多個讀取端口原本是并行地存取多個BTA所必需的。轉(zhuǎn)讓給本申請案的受讓人并以引用的方式并入本文的第_號專利申請案“基于區(qū)塊的分支目標地址高速緩沖存儲器”揭示了基于區(qū)塊的BTAC存儲多個條目,每一條目與一指令區(qū)塊相關(guān)聯(lián),其中所述區(qū)塊中的指令中的一者或一者以上是已評估為被采取的分支指令。所述BTAC條目包含相關(guān)聯(lián)的區(qū)塊內(nèi)的哪個指令是經(jīng)采取的分支指令的指示符,以及經(jīng)采取的分支的BTA。BTAC條目由區(qū)塊中的所有指令共同的地址位標引(即,通過截斷選擇區(qū)塊內(nèi)的指令的較低階地址位)。因此區(qū)塊大小和相對的區(qū)塊邊界兩者都是固定的。在每一區(qū)塊僅包含一個經(jīng)采取的分支指令的情況下,基于區(qū)塊的BTAC運作良好。當區(qū)塊內(nèi)的兩個或兩個以上分支指令評估為被采取時,必須作出決策以存儲一個分支指令的BTA而不存儲另一分支指令的BTA,從而在另一分支評估為被采取時導(dǎo)致性能和功率降級。每一 BTAC條目中可存儲多個BTA ;然而,在指令區(qū)塊不包含與BTAC條目中的BTA存儲位置一樣多的經(jīng)采取的分支指令的正常情況下,這浪費了寶貴的硅區(qū)域。
發(fā)明內(nèi)容
根據(jù)本文所揭示的一個或一個以上實施例,滑動窗口、基于區(qū)塊的BTAC包括多個條目,每一條目與含有至少一個已被評估為經(jīng)采取的分支指令的指令的區(qū)塊相關(guān)聯(lián),且由所述區(qū)塊中的第一指令的地址標引。區(qū)塊大小是固定的(且對應(yīng)于指令獲取群組的大小),但區(qū)塊邊界不是固定的,且指令區(qū)塊可重疊。因此分支指令可包含在由BTAC條目表示的兩個或兩個以上指令區(qū)塊中。在某些情況下,這允許所述滑動窗口、基于區(qū)塊的BTAC通過界定新區(qū)塊并創(chuàng)建相關(guān)聯(lián)的BTAC條目而存儲處于單個指令區(qū)塊中的兩個或兩個以上經(jīng)采取的分支指令的BTA,通過增加每一 BTAC條目的BTA存儲容量而不會浪費存儲器。
一個實施例涉及一種在處理器中預(yù)測分支指令的方法。將與包含至少一個已被評估為經(jīng)采取的分支指令的兩個或兩個以上指令的區(qū)塊相關(guān)聯(lián)的條目存儲在分支目標地址高速緩沖存儲器(BTAC)中,BTAC條目具有與所述區(qū)塊中的第一指令的地址相關(guān)聯(lián)的標簽。在獲取指令時,存取BTAC以確定一個或一個以上區(qū)塊中的指令是否為條件分支指令。另一實施例涉及一種處理器。所述處理器包含存儲多個條目的分支目標地址高速緩沖存儲器(BTAC),每一條目與含有至少一個已被評估為經(jīng)采取的分支指令的兩個或兩個以上指令的區(qū)塊相關(guān)聯(lián),且所述BTAC條目具有與所述區(qū)塊中的第一指令的地址相關(guān)聯(lián)的標簽。所述處理器還包含指令執(zhí)行管線,其經(jīng)操作以在獲取指令群組時使用指令地址來標引 BTAC。
圖1是處理器的一個實施例的功能方框圖。圖2是分支目標地址高速緩沖存儲器和伴隨電路的一個實施例的功能方框圖。
具體實施例方式圖1描繪處理器10的功能方框圖。處理器10根據(jù)控制邏輯11執(zhí)行指令執(zhí)行管線12中的指令。在某些實施例中,管線12可為具有多個并行管線的超標量設(shè)計。管線12包含組織成管級的各種寄存器或鎖存器16,以及一個或一個以上算術(shù)邏輯單元(ALU) 18。通用寄存器(GPR)堆20提供構(gòu)成存儲器層級的頂部的寄存器。管線12使用由指令側(cè)翻譯后備緩沖器(ITLB) 24管理的存儲器地址翻譯和許可來從指令高速緩沖存儲器(1-高速緩沖存儲器)22獲取指令。管線12并行地將指令地址提供到滑動窗口、基于區(qū)塊的分支目標地址高速緩沖存儲器(BTAC) 25。如果指令地址在BTAC25中命中,那么滑動窗口、基于區(qū)塊的BTAC25將分支目標地址(BTA)提供到1-高速緩沖存儲器22,以立即開始從經(jīng)預(yù)測的BTA獲取指令。下文更全面地描述滑動窗口、基于區(qū)塊的BTAC25的結(jié)構(gòu)和操作。使用由主翻譯后備緩沖器(TLB) 28管理的存儲器地址翻譯和許可來從數(shù)據(jù)高速緩沖存儲器(D-高速緩沖存儲器)26存取數(shù)據(jù)。在各種實施例中,ITLB可包括TLB的一部分的副本。或者,ITLB和TLB可集成。類似地,在處理器10的各種實施例中,1-高速緩沖存儲器22和D-高速緩沖存儲器26可集成或統(tǒng)一。1-高速緩沖存儲器22和/或D-高速緩沖存儲器26中的未命中導(dǎo)致在存儲器接口 30的控制下存取主(芯片外)存儲器32。處理器10可包含輸入/輸出(I/O)接口 34,從而控制對各種外圍裝置36、38的存取。所屬領(lǐng)域的技術(shù)人員將認識到,處理器10的許多變化形式都是可能的。舉例來說,處理器10可包含用于I和D高速緩沖存儲器22、26中任一者或兩者的二級(L2)高速緩沖存儲器。另外,可從特定實施例中省略處理器10中描繪的功能區(qū)塊中的一者或一者以上。分支指令在大多數(shù)代碼中都是共同的。根據(jù)某些估計,可能五個指令中便有一個指令是分支。因此,早期分支檢測、分支評估預(yù)測(針對條件分支指令)以及從經(jīng)預(yù)測的BTA中獲取指令對于處理器性能來說可為關(guān)鍵的。大多數(shù)現(xiàn)代處理器包含在每一高速緩沖存儲器線中存儲多個指令的1-高速緩沖存儲器22。從“獲取群組”中的I高速緩沖存儲器獲取指令。獲取群組可包括高速緩沖存儲器線的一部分、整個高速緩沖存儲器線,或一個以上高速緩沖存儲器線。作為一個實例,假定處理器的獲取群組匹配其四個指令的1-高速緩沖存儲器22線的大小,但此實例僅是說明性的且沒有限制。如果一個以上指令地址在BTAC中命中,那么存取共同已知的BTAC來并行地搜索所有四個指令地址將需要四個地址比較輸入端口、四個BTA輸出端口,以及一個多路復(fù)用器和控制邏輯來選擇BTA。根據(jù)一個或一個以上實施例,滑動窗口、基于區(qū)塊的BTAC25包括多個條目,每一條目存儲與指令區(qū)塊中的經(jīng)采取的分支指令相關(guān)聯(lián)的分支信息。所述指令區(qū)塊對應(yīng)于獲取群組,且BTAC條目包含與區(qū)塊中的第一指令的地址相關(guān)聯(lián)的標簽。所述標簽還用于從1-高速緩沖存儲器獲取所述獲取群組。在某些實施例中,所述標簽可為獲取群組中的第一指令。如本文中所使用,術(shù)語“指令區(qū)塊”和“獲取群組”是同義的。每一 BTAC條目指示以下事實區(qū)塊中的至少一個指令是已評估為被采取的分支指令(由BTAC25中的命中指示),且包含區(qū)塊中的哪個指令是經(jīng)采取的分支的指示符以及其BTA。圖2描繪滑動窗口、基于區(qū)塊的BTAC25、I_高速緩沖存儲器22、管線12和分支預(yù)測邏輯電路15(其可例如包括控制邏輯11的一部分)的功能方框圖。在此實例中,指令A(yù)-L駐存在1-高速緩沖存儲器22中的三條線中。為解釋清晰起見,此實例中的處理器獲取群組為高速緩沖存儲器線,但這不是對本發(fā)明的限制。代碼段的指令和對應(yīng)區(qū)塊200A-200C列示在電路圖的左側(cè)。應(yīng)注意,雖然按次序標記區(qū)塊,但不應(yīng)解釋為以區(qū)塊被標記的次序來獲取它們。更可能的是,由于示范性代碼段的分支性質(zhì),獲取區(qū)塊的次序?qū)閰^(qū)塊200A、接下來是區(qū)塊200C,且然后是區(qū)塊200B。圖2的滑動窗口、基于區(qū)塊的BTAC25中的每一條目包括三個組成部分標簽字段,其包括相關(guān)聯(lián)的指令區(qū)塊中的第一指令(其也是用于存取1-高速緩沖存儲器的指令)的地址;分支指示符,其描繪區(qū)塊內(nèi)的哪個指令是經(jīng)采取的分支;以及當分支指令最后評估為被采取時,所述分支指令的實際BTA。在圖2的實例中,獲取并執(zhí)行包括指令A(yù)、B、C和D的1-高速緩沖存儲器的第一線(或獲取群組)。其中,指令B和C都是分支指令。指令B經(jīng)執(zhí)行,被評估為經(jīng)采取,且計算分支目標地址BTAb。針對指令區(qū)塊AB⑶創(chuàng)建BTAC條目。BTAC條目(圖2中所描繪的第一條目)具有與指令A(yù)的地址相關(guān)聯(lián)的標簽、區(qū)塊中的第二指令是經(jīng)采取的分支的指示符(地址01)以及BTAb。在另一實施例中,分支指示符可包括哪個指令是經(jīng)采取的分支的經(jīng)解碼指示,例如0100。在此實例中,指令B導(dǎo)致到達代碼的另一段中的程序的分支(其細節(jié)與本論述無關(guān))。在完成執(zhí)行時,另一代碼分支返回到指令C,其在執(zhí)行時評估為被采取且具有目標BTAC。在通常已知的具有固定指令區(qū)塊邊界的基于區(qū)塊的BTAC中,BTAc必須取代BTAC條目中的BTAb,或者保留BTAb且丟棄BTA。,因為指令C將固定地與區(qū)塊200A相關(guān)聯(lián)。然而,通過利用滑動窗口、基于區(qū)塊的BTAC25的流動的指令區(qū)塊邊界,界定了新的指令區(qū)塊,其對應(yīng)于在從程序返回到指令C時從1-高速緩沖存儲器獲取的獲取群組。新的區(qū)塊包括指令C、D、E和F,且因此部分與指令區(qū)塊AB⑶重疊。在滑動窗口、基于區(qū)塊的BTAC25中創(chuàng)建對應(yīng)的BTAC條目。新BTAC條目(圖2中所描繪的第二條目)的標簽與區(qū)塊中的第一指令(也是用于存取1-高速緩沖存儲器的指令)——指令C的地址相關(guān)聯(lián)。分支指示符具有值00 (區(qū)塊中的第一指令的地址),其指示指令C是區(qū)塊CDEF中的經(jīng)采取的分支指令。最終,與區(qū)塊⑶EF相關(guān)聯(lián)的BTAC條目包含BTA。(分支指令C的目標地址)。以此方式,滑動窗口、基于區(qū)塊的BTAC25可存儲用于區(qū)塊ABCD中的經(jīng)采取的分支指令兩者的BTA,而不需要每一 BTAC條目包含用于兩個或兩個以上BTA的存儲空間。此外,滑動窗口、基于區(qū)塊的BTAC25中的第二條目將分支指令C的行為聯(lián)系到在其從1-高速緩沖存儲器獲取之前采取的代碼路徑。也就是說,因為當所述代碼在從程序返回時被分支到指令C時,分支指令C被評估為經(jīng)采取,所以從所述程序到指令C的下一返回將可能也被評估為經(jīng)采取。相反,當順序地執(zhí)行指令C時(即,如果分支指令B被評估為未采取,且不執(zhí)行介入的程序),其可被評估為未采取。第三BTAC條目對應(yīng)于包括1、J、K和L的指令區(qū)塊,從而對應(yīng)于以指令I(lǐng)開始的獲取群組。第三BTAC條目的標簽與區(qū)塊中的第一指令的地址相關(guān)聯(lián),所述地址是在獲取所述獲取群組IJKL的過程中存取1-高速緩沖存儲器所用的地址。在此群組中,指令J和L是分支指令。在此實例中,指令J被評估為經(jīng)采取,分支指示符尋址區(qū)塊中的第二指令,且指令J的BTAj存儲在BTAC條目中。當然,圖2中所描繪的區(qū)塊組織和BTAC條目僅是代表性的,且本發(fā)明不限于此實施方案。具體來說,獲取群組不需要與1-高速緩沖存儲器線的大小對準。一般來說,獲取群組可在1-高速緩沖存儲器線內(nèi)的任何地方開始,例如在分支指令分支到目標的情況下,所述獲取群組可在1-高速緩沖存儲器線中的任何地方開始。對應(yīng)的滑動窗口、基于區(qū)塊的BTAC25條目的標簽將與獲取群組中的第一指令的地址相關(guān)聯(lián)。因此,當再次從1-高速緩沖存儲器獲取同一獲取群組時,對滑動窗口、基于區(qū)塊的BTAC25的同時存取將檢索指示指令區(qū)塊內(nèi)先前被評估為經(jīng)采取的分支指令的條目。管線12中的解碼/獲取邏輯13經(jīng)配置以產(chǎn)生用于從1-高速緩沖存儲器22獲取下一指令獲取群組的指令地址。在操作中,指令地址同時比較于滑動窗口、基于區(qū)塊的BTAC25的標簽字段。如果指令地址匹配BTAC25中的標簽,那么將命中指示和對應(yīng)的分支指示符提供到解碼/獲取邏輯13,以指示區(qū)塊中的哪個指令是經(jīng)采取的分支指令。還將指示符提供到分支預(yù)測邏輯15。同時,將對應(yīng)條目的BTA提供到1-高速緩沖存儲器22,以允許立即以推測方式從BTA獲取指令,以在所述分支被預(yù)測為經(jīng)采取的情況下保持管線充滿。在解碼邏輯13中解碼指令。當檢測到分支指令時(無論獲取群組地址在滑動窗口、基于區(qū)塊的BTAC25中是否命中),將獲取群組信息保留在管線12中。此信息可例如包括從分支指令地址(BIA)到獲取群組中的第一指令的地址的負偏移。針對分支指令被評估為經(jīng)采取的可能性而保留此信息,從而允許將其BTA存儲在新BTAC條目中,所述新BTAC條目具有獲取群組中的第一指令的地址(即,存取1-高速緩沖存儲器所用的地址)作為標簽。在管線12中的執(zhí)行級的邏輯14中評估條件分支指令。EXE邏輯14額外計算并提供評估為被采取的無條件分支指令和條件分支指令兩者的BTA。如果經(jīng)預(yù)測分支評估是不正確的且/或經(jīng)高速緩沖存儲的BTA不匹配計算出的BTA,那么管線12必須執(zhí)行錯誤預(yù)測分支恢復(fù),其可包含從管線中清洗推測性指令、重新分配存儲以及計算資源等。由EXE邏輯14將實際的分支評估提供到分支預(yù)測邏輯15,以更新關(guān)于實際的分支行為的預(yù)測邏輯。分支預(yù)測邏輯15更新其預(yù)測表(例如,分支歷史寄存器、分支預(yù)測表、飽和計數(shù)器等),且額外更新滑動窗口、基于區(qū)塊的BTAC25。對于現(xiàn)有的BTAC條目,這可包括如果計算出不同的實際BTA便更新經(jīng)高速緩沖存儲的BTA,或可包括如果對應(yīng)區(qū)塊中的不同分支指令評估為被采取且作出取代現(xiàn)有的經(jīng)高速緩沖存儲的BTA的決策,便更新分支指示符和BTA兩者。如果分支指令評估為被采取且獲取群組信息指示群組獲取地址對于滑動窗口、基于區(qū)塊的BTAC25中的任何標簽是唯一的,那么分支預(yù)測邏輯15便創(chuàng)建新的BTAC條目。新的BTAC條目對應(yīng)于以其中獲取所述分支指令的獲取群組的第一指令開始的指令區(qū)塊,且因此新BTAC條目的標簽與第一指令的地址相關(guān)聯(lián)。以此方式,分支指令可包含于在滑動窗口、基于區(qū)塊的BTAC25中具有對應(yīng)條目的兩個或兩個以上指令區(qū)塊中。此特征的一個顯著優(yōu)點在于第一區(qū)塊中的第一分支指令的BTA可存儲在第一 BTAC條目中,且處于第一區(qū)塊中但由于單獨存取1-高速緩沖存儲器而同樣是第二獲取群組的一部分的第二分支指令的BTA可存儲在第二 BTAC條目(界定第二指令區(qū)塊)中。因此,滑動窗口、基于區(qū)塊的BTAC25可存儲兩個BTA,通過在每一 BTAC條目中提供用于多個BTA的存儲器而不會浪費寶貴的硅區(qū)域。如本文所使用,一般來說,分支指令可指代條件或無條件分支指令。如本文所使用,“經(jīng)采取的分支”、“經(jīng)采取的分支指令”或“已被評估為經(jīng)采取的分支指令”指代已被評估為將順序的指令執(zhí)行流轉(zhuǎn)向到非順序的地址(即,與不被采取相反的被采取)的無條件分支指令或條件分支指令。雖然已在本文相對于本發(fā)明的特定特征、方面和實施例描述了本發(fā)明,但將明白,在本發(fā)明的廣義范圍內(nèi),許多變化形式、修改和其它實施例都是可能的,且因此所有變化形式、修改和實施例將被視為處于本發(fā)明的范圍內(nèi)。因此,本發(fā)明實施例在所有方面被解釋為說明性的,而不是限制性的,且希望處于所附權(quán)利要求書的含義和等效范圍內(nèi)的所有修改都包含在其中。
權(quán)利要求
1.一種預(yù)測包含在指令高速緩沖存儲器1-cache的指令線中的分支指令的方法,其包括 僅當將有一分支指令評估為被采取時,才將第一分支目標地址高速緩沖存儲器BTAC條目存儲在所述BTAC中,其中所述分支指令和第二分支指令位于第一指令區(qū)塊中,所述第一指令區(qū)塊存儲在所述1-cache的線中; 僅當將所述第二分支指令評估為被采取時,才將第二 BTAC條目存儲在所述BTAC中,其中具有所述第二分支指令的第二指令區(qū)塊存儲在所述1-cache的一個或多個線中且與所述第一指令區(qū)塊重疊; 其中所述第一 BTAC條目包括第一標簽字段,所述第一標簽字段具有所述第一指令區(qū)塊中的第一指令的全指令地址,且所述第二 BTAC條目包括第二標簽字段,所述第二標簽字段具有存儲于所述1-cache線中的任意全指令地址的所述第二指令區(qū)塊的全指令地址; 從始于所述第二指令區(qū)塊的所述全指令地址的所述1-cache中獲取指令群組,將所述全指令地址與BTAC條目的標簽字段進行比較以確定與所述第二標簽字段的匹配;以及一旦確定與所述第二標簽字段的匹配,就使用所述第二 BTAC條目中的指示符以確定所述第二指令區(qū)塊中的哪一個指令是所述第二經(jīng)采取的分支指令;并且,從存儲在所述第二 BTAC條目中的所述分支目標地址中獲取指令。
2.根據(jù)權(quán)利要求1所述的方法,其進一步包括一旦獲取指令區(qū)塊,就存取所述BTAC以確定對應(yīng)的指令區(qū)塊中的指令是否是經(jīng)采取的指令。
3.—種在處理器中預(yù)測分支指令的方法,其包括 在分支目標地址高速緩沖存儲器BTAC中存儲第一 BTAC條目和第二 BTAC,所述第一BTAC條目與具有兩個或更多個指令的第一區(qū)塊相關(guān)聯(lián),所述第一區(qū)塊具有存儲在指令高速緩沖存儲器1-cache的線中的第一和第二經(jīng)采取分支指令,所述第二 BTAC條目與具有兩個或更多個指令的第二區(qū)塊相關(guān)聯(lián),所述第二區(qū)塊與所述第一區(qū)塊重疊且包括所述第二經(jīng)采取分支指令,每一 BTAC條目都具有標簽字段,所述標簽字段包括對應(yīng)區(qū)塊中的始于1-cache線中的任意全指令地址的第一指令的全指令地址; 一旦獲取指令群組,就存取所述BTAC以確定對應(yīng)的指令區(qū)塊中的指令是否是經(jīng)采取的指令;以及 其中每一 BTAC條目包括一個指示符,用于指示相關(guān)聯(lián)指令群組中的哪一個指令是經(jīng)采取的指令,且其中每一 BTAC條目包括相關(guān)聯(lián)指令群組中經(jīng)采取的分支指令的分支目標地址BTA。
4.根據(jù)權(quán)利要求3所述的方法,其進一步包括 確定與所述第二 BTAC條目相關(guān)聯(lián)的分支目標地址BTA不同于存儲在現(xiàn)有的第二 BTAC條目的BTA ; 更新現(xiàn)有的第二 BTAC條目。
5.根據(jù)權(quán)利要求3所述的方法,其進一步包括 確定在所述獲取的指令群組中檢測的分支指令不是經(jīng)采取的分支指令;以及一旦確定所述分支指令被評估為經(jīng)采取,就在所述BTAC中存儲新的條目,其中所述BTAC中的新條目基于當所述分支指令被檢測時保存的獲取群組信息。
6.根據(jù)權(quán)利要求5所述的方法,其中所述獲取群組信息包括從所述分支指令地址到所述獲取的指令群組中的所述第一指令的所述地址的負偏移。
全文摘要
一種滑動窗口、基于區(qū)塊的分支目標地址高速緩沖存儲器(BTAC)包括多個條目,每一條目與含有至少一個已被評估為經(jīng)采取的分支指令的指令區(qū)塊相關(guān)聯(lián),且具有與所述區(qū)塊中的第一指令的地址相關(guān)聯(lián)的標簽。所述區(qū)塊每一者對應(yīng)于從例如I-高速緩沖存儲器等存儲器獲取的指令群組。在分支指令包含在兩個或兩個以上獲取群組中處,其也包含在與BTAC條目相關(guān)聯(lián)的兩個或兩個以上指令區(qū)塊中。所述滑動窗口、基于區(qū)塊的BTAC通過存儲與不同的指令區(qū)塊(其每一者含有所述經(jīng)采取的分支指令中的至少一者)相關(guān)聯(lián)的BTAC條目而允許存儲處于同一指令區(qū)塊中的兩個或兩個以上經(jīng)采取的分支指令的分支目標地址(BTA),而不需要在每一BTAC條目中提供多個BTA存儲空間。
文檔編號G06F9/38GK103019652SQ20121047353
公開日2013年4月3日 申請日期2007年5月31日 優(yōu)先權(quán)日2006年6月5日
發(fā)明者羅德尼·韋恩·史密斯, 詹姆斯·諾里斯·迪芬德費爾, 布萊恩·邁克爾·斯坦普爾, 托馬斯·安德魯·薩托里烏斯 申請人:高通股份有限公司