專利名稱:用于積極主動分支目標(biāo)地址高速緩沖存儲器管理的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體來說涉及處理器的領(lǐng)域,且具體來說,本發(fā)明涉及一種通過積極主動地 管理分支目標(biāo)地址高速緩沖存儲器的內(nèi)容而改進(jìn)分支預(yù)測的方法。
背景技術(shù):
微處理器在多種應(yīng)用中執(zhí)行計(jì)算任務(wù)。改進(jìn)的處理器性能幾乎始終為所要的,以允 許經(jīng)由軟件改變的較快操作和/或增加的功能性。在許多嵌入應(yīng)用(例如,便攜式電子裝 置)中,省電也為處理器設(shè)計(jì)和實(shí)施方案中的目標(biāo)。
許多現(xiàn)代處理器采用管線式架構(gòu),其中連續(xù)指令(每一者具有多個執(zhí)行步驟)在執(zhí) 行中重疊。對于改進(jìn)的性能來說,所述指令應(yīng)經(jīng)由管線連續(xù)流動。引起指令在管線中停 止的任何情形可不利地影響性能。如果指令被從管線沖洗且隨后經(jīng)重取,則性能和功率 消耗兩者均受損害。
多數(shù)程序包括條件分支指令,其實(shí)際分支行為直至指令在管線深處被評估時(shí)才知 曉。為了避免將由等待分支指令的實(shí)標(biāo)評估而引起的停止,現(xiàn)代處理器可采用一些形式 的分支預(yù)測,藉此在管線中早早地預(yù)測條件分支指令的分支行為?;陬A(yù)測的分支評估, 處理器推測性地提取(預(yù)取)和執(zhí)行來自預(yù)測地址的指令,所述地址為分支目標(biāo)地址(如 果預(yù)測將選取所述分支)或分支指令之后的下一連續(xù)地址(如果預(yù)測將不選取所述地 址)。條件分支指令是否被選取或未被選取被稱作確定分支的方向??稍陬A(yù)測時(shí)間時(shí)和 在實(shí)際分支分解時(shí)間時(shí)進(jìn)行確定分支的方向。當(dāng)確定實(shí)際分支行為時(shí),如果誤預(yù)測了所 述分支,則必須從管線沖洗推測性地提取的指令,且必須從正確的下一地址提取新指令。 響應(yīng)于錯誤分支預(yù)測的預(yù)取指令可不利地影響處理器性能和功率消耗。因此,改進(jìn)分支 預(yù)測的準(zhǔn)確性為重要的處理器設(shè)計(jì)目標(biāo)。
分支預(yù)測的一個已知形式包括將分支預(yù)測劃分為兩個預(yù)測器初始分支目標(biāo)地址高
速緩沖存儲器(BTAC)和分支歷史表(BHT)。還已知為分支目標(biāo)緩沖器(BTB)的BTAC 由指令提取地址編索引且含有對應(yīng)于所述指令提取地址的下一提取地址(還被稱作分支 目標(biāo))。在分支指令已穿過處理器管線且其分支已經(jīng)被選取之后,將條目添加到常規(guī)
4BTAC。如果所述常規(guī)BTAC為滿的,則當(dāng)正添加下一條目時(shí),使用標(biāo)準(zhǔn)高速緩沖存儲 器替換算法(例如,循環(huán)或最近最少使用法)從BTAC常規(guī)地移除條目。
一般來說,BTAC常常體現(xiàn)為高度關(guān)聯(lián)性高速緩沖存儲器設(shè)計(jì)且在提取管線中被早 早地存取。如果提取地址匹配BTAC條目(BTAC命中),則在下一循環(huán)中提取對應(yīng)的下 一提取地址或目標(biāo)地址。目標(biāo)地址的此匹配和隨后提取被稱作隱式選取分支預(yù)測。如果 不存在匹配(BTAC未命中),則在下一循環(huán)中提取下一連續(xù)增加的地址。此無匹配情形 還被稱作隱式未選取預(yù)測。
一般來說,結(jié)合較準(zhǔn)確的個別分支方向預(yù)測器(例如,還已知為模式歷史表(PHT) 的分支歷史表(BHT))利用BTAC。與常規(guī)BTAC相比,在管線中稍晚地存取常規(guī)BHT。 同樣,可潛在地存在額外信息以便進(jìn)行較佳預(yù)測。常規(guī)BHT可含有一組飽和預(yù)測式方 向計(jì)數(shù)器以產(chǎn)生對于個別分支指令的較準(zhǔn)確的選取/未選取決策。舉例來說,每一飽和預(yù) 測式方向計(jì)數(shù)器可包含2-位計(jì)數(shù)器,其假定四個狀態(tài)中的一者,每一者指派有加權(quán)預(yù)測 值,例如
11-強(qiáng)預(yù)測選取
10-弱預(yù)測選取
01-弱預(yù)測未選取
00-強(qiáng)預(yù)測未選取
一般來說,BHT常規(guī)地由存儲于分支歷史寄存器(BHR)中的位編索引。常規(guī)BHT 的輸出為導(dǎo)致提取分支指令的目標(biāo)地址或下一循環(huán)中的下一連續(xù)地址的選取或未選取 決策。當(dāng)BHT變?yōu)榧褐獣r(shí),BHT通常以分支結(jié)果信息加以更新。
通過利用常規(guī)BHT,處理器可超越(override)由BTAC作出的較早的隱式預(yù)測。 舉例來說,BTAC可命中(隱式地預(yù)測選取分支),但所述BHT可以未選取預(yù)測超越BTAC 隱式預(yù)測。相反,在BTAC未命中之后,BHT可以選取預(yù)測超越BTAC未命中,假定在 處理器管線中此點(diǎn)處的目標(biāo)地址現(xiàn)在為已知的。
超越BHT的BTAC預(yù)測導(dǎo)致由沖洗處理器管線引起的浪費(fèi)的循環(huán)。當(dāng)類似的分支 指令隨后由管線處理時(shí),超越BHT的BTAC預(yù)測可重復(fù)地發(fā)生。舉例來說,如果BTAC 隱式地預(yù)測由正發(fā)現(xiàn)于BTAC中的匹配進(jìn)行的選取,則來自目標(biāo)地址(選取分支)的指 令開始被提取到處理器管線中。如果BHT隨后通過決定不應(yīng)選取所述分支而超越BTAC 預(yù)測,則必須從管線沖洗在提取目標(biāo)地址之后的所有指令。在此常規(guī)的分支預(yù)測技術(shù)中, 對于隨后提取的相同分支指令來說,此循環(huán)潛在地自身重復(fù)。關(guān)于相同條件分支指令的 隨后提取的重復(fù)分支預(yù)測矛盾的此問題在本文中被稱作多沖洗循環(huán)(multiple flushcycle)問題。在常規(guī)方法中,對于條件分支指令來說,多沖洗循環(huán)問題可持續(xù)存在直到 BTAC被更新為止。因此,認(rèn)識到,需要積極主動性地管理BTAC和減小多沖洗循環(huán)問 題的發(fā)生機(jī)率的設(shè)備和方法。
發(fā)明內(nèi)容
根據(jù)一個或一個以上實(shí)施例,揭示一種分支目標(biāo)地址高速緩沖存儲器(BTAC)和 一種分支預(yù)測器電路。所述BTAC經(jīng)配置以存儲BTAC條目。所述分支預(yù)測器電路經(jīng)配 置以存儲狀態(tài)信息。所述分支預(yù)測器電路利用狀態(tài)信息來預(yù)測分支指令的方向,且響應(yīng) 于分支指令的實(shí)際分解,基于存儲的狀態(tài)信息而管理BTAC條目。通過基于用以預(yù)測分 支指令的方向的狀態(tài)信息而管理BTAC條目,有利地減少了誤預(yù)測和在BTAC査找與分 支預(yù)測器電路之間的矛盾的可能性。
一個實(shí)施例涉及一種多級分支預(yù)測系統(tǒng)。所述多級分支預(yù)測系統(tǒng)包括BTAC和分支 預(yù)測器電路。所述BTAC經(jīng)配置以存儲BTAC條目。所述分支預(yù)測器電路經(jīng)配置以存儲 狀態(tài)信息。所述分支預(yù)測器電路利用狀態(tài)信息來預(yù)測分支指令的方向,且響應(yīng)于分支指 令的實(shí)際分解,基于存儲的狀態(tài)信息而管理BTAC條目。
另一實(shí)施例涉及一種管理分支目標(biāo)存取高速緩沖存儲器(BTAC)的方法。接收實(shí) 際上已經(jīng)分解的條件分支指令的分支方向。響應(yīng)于接收的分支方向,評估分支預(yù)測器電 路的狀態(tài)信息。根據(jù)分支預(yù)測器電路的狀態(tài)信息,管理與條件分支指令相關(guān)聯(lián)的BTAC 中的條目。
另一實(shí)施例涉及一種降低管線的多沖洗循環(huán)的機(jī)率的方法。在此方法中,隱式地預(yù) 測條件分支指令的第一方向。同樣,基于狀態(tài)信息,預(yù)測所述條件分支指令的第二方向。 利用狀態(tài)信息管理與所述條件分支指令相關(guān)聯(lián)的BTAC條目。
應(yīng)了解,所屬領(lǐng)域的技術(shù)人員將易于從以下實(shí)施方式了解本發(fā)明的其它實(shí)施例,在
實(shí)施方式中通過說明展小并描述了本發(fā)明的各禾中實(shí)施例。女n將認(rèn)識至[J,本發(fā)明可以有其 它和不同實(shí)施例且其若干細(xì)節(jié)在各種其它方面中可以有修改,全部都不脫離本發(fā)明。因 此,本質(zhì)上應(yīng)認(rèn)為圖式和實(shí)施方式均為說明性的而非限制性的。
圖i為處理器的功能框圖。
圖2為圖1的分支預(yù)測器系統(tǒng)的功能框圖。
6圖3為BTAC管理信號電路的第一示范性實(shí)施例的功能框圖。 圖4為BTAC管理信號電路的第二示范性實(shí)施例的功能框圖。 圖5為說明管理BTAC的方法的流程圖。 圖6為說明降低管線的多沖洗循環(huán)的機(jī)率的方法的流程圖。
具體實(shí)施例方式
圖l描繪處理器100的功能框圖。處理器100根據(jù)控制邏輯114執(zhí)行指令執(zhí)行管線 112中的指令。在一些實(shí)施例中,管線112可為具有多個平行管線的超標(biāo)量(superscalar) 設(shè)計(jì)。管線112包括組織于管線級中的各種寄存器或鎖存器116A-D和一個或一個以上 執(zhí)行單元(例如,算術(shù)邏輯單元(ALU) 118)。通用寄存器(GPR)堆120提供包含存 儲器層級的頂部的寄存器。
從數(shù)據(jù)高速緩沖存儲器(D高速緩沖存儲器)140存取數(shù)據(jù),其中存儲器地址轉(zhuǎn)譯 和準(zhǔn)許由主轉(zhuǎn)譯后備緩沖器(TLB) 142管理。在各種實(shí)施例中,ITLB 124可包含TLB 142的部分的副本?;蛘撸杉蒊TLB 124和TLB 142。類似地,在處理器100的各種 實(shí)施例中,可集成或統(tǒng)一I高速緩沖存儲器122與D高速緩沖存儲器140。在存儲器接 口 146的控制下,I高速緩沖存儲器122和/或D高速緩沖存儲器140的未命中導(dǎo)致對主 (晶片外)存儲器144的存取。
處理器100可包括輸入/輸出(1/0)接口 148,從而控制對各種外圍裝置150的存取。 所屬領(lǐng)域的技術(shù)人員將認(rèn)識到,處理器100的眾多變化是可能的。舉例來說,處理器100 可包括用于I高速緩沖存儲器122和D高速緩沖存儲器140中的任一者或兩者的第二級 (L2)高速緩沖存儲器。此外,可從特定實(shí)施例省去處理器100中描繪的功能塊中的一 者或一者以上。
處理器100包括多級分支預(yù)測系統(tǒng)143。多級分支預(yù)測系統(tǒng)143包括BTAC 141 (第 一級)和分支預(yù)測器電路126 (第二級)。BTAC 141經(jīng)配置以存儲一個或一個以上條目, 其中每一條目含有對應(yīng)于提取地址的分支目標(biāo)地址。指令預(yù)取單元128從指令存儲器(I 高速緩沖存儲器或1$) 122提取指令,其中存儲器地址轉(zhuǎn)譯和準(zhǔn)許由指令側(cè)轉(zhuǎn)譯后備緩 沖器(ITLB) 124管理。多級分支預(yù)測系統(tǒng)143確定在BTAC Ml中一提取地址是否命 中、通過利用分支預(yù)測器電路126中的存儲的預(yù)測模式預(yù)測一分支指令的方向,和基于 分支預(yù)測器電路126中的存儲的預(yù)測模式的狀態(tài)更新BTAC 141。將結(jié)合圖2的討論更 詳細(xì)地描述多級分支預(yù)測系統(tǒng)143以及指令預(yù)取單元128和管線112的操作。圖2為圖1的分支預(yù)測器系統(tǒng)143的功能框圖。管線112和指令預(yù)取單元128各包 括一個或一個以上處理級。分支預(yù)測器電路126可包括分支歷史寄存器203、分支歷史 表(BHT) 207和分支表更新和預(yù)測邏輯電路205。將結(jié)合圖3和圖4描述分支表更新 和預(yù)測邏輯電路205的BTAC管理部分的示范性實(shí)施例。
在操作中,經(jīng)由路徑219在BTAC 141中査找一提取地址,以確定其是否對應(yīng)于先 前已由管線112處理的選取分支指令。指令預(yù)取單元12S經(jīng)由路徑221從指令高速緩沖 存儲器122推測性地預(yù)取指令,對于隱式預(yù)測為"選取"的分支,其開始于從BTAC 141 返回的分支目標(biāo)地址,或?qū)τ陔[式預(yù)測為"未選取"的分支,其開始于下一連續(xù)地址。 在任一情況下,將預(yù)取的指令沿著路徑223加載到指令預(yù)取單元128內(nèi)。
當(dāng)條件分支指令由指令預(yù)取單元128或管線112級處理時(shí),確定關(guān)于條件分支指令 的額外信息,例如,在經(jīng)由路徑223從I高速緩沖存儲器122檢索的預(yù)解碼位中攜載的 信息。在路徑121上調(diào)用利用存儲的預(yù)測模式和此額外信息的分支預(yù)測器電路126,以 便以比BTAC查找高的置信度級別預(yù)測條件分支指令的方向。
分支表更新和預(yù)測邏輯電路205利用分支指令地址、分支歷史寄存器(BHR) 203 和分支歷史表(BHT)207來預(yù)測條件分支指令的方向。對于條件分支指令來說,BHR 203 充當(dāng)移位寄存器。舉例來說,如果實(shí)際上選取了條件分支指令,則將"1"移位至BHR203 內(nèi)。如果實(shí)際上未選取條件分支指令,則將"0"移位至BHR 203內(nèi),從而導(dǎo)致將特定 分支指令的歷史分支方向存儲于BHR 203上。在一實(shí)施例中,BHR 203包括用于由管線 112在一時(shí)間周期內(nèi)處理的每一分支指令的特定寄存器。在另一實(shí)施例中,BHR 203可 具有含有最近處理的條件分支指令的歷史分支方向的全局范圍。BHT207可包括用于特 定分支指令的兩位計(jì)數(shù)器,如在上文背景技術(shù)部分中所描述。應(yīng)認(rèn)識到,用于預(yù)測分支 方向的各種已知技術(shù)可利用BHR 203和BHT207。還應(yīng)認(rèn)識到,這些已知的預(yù)測性技術(shù) 利用BHR 203和BHT207的各種實(shí)施方案。還應(yīng)認(rèn)識到,本發(fā)明涵蓋利用實(shí)施BHR或 BHT的替代例的其它預(yù)測技術(shù)。
基于BHR 203和BHT207,在圖2中說明的實(shí)例中,分支方向預(yù)測器電路126預(yù)測 到與BTAC 141隱式預(yù)測矛盾的分支方向。結(jié)果,在"選取路徑! (Taken Path。"(條件 分支指令的級位置)上方的所有指令將從指令預(yù)取單元128沖洗。在無矛盾的情況下, 指令預(yù)取單元128將繼續(xù)預(yù)取從分支目標(biāo)地址開始的指令。
當(dāng)條件分支指令前進(jìn)經(jīng)過管線112的級時(shí),條件分支指令到達(dá)一其中條件實(shí)際上經(jīng) 分解的級。如果分支的實(shí)際分解與分支預(yù)測器電路126的預(yù)測不同,則所述條件分支指 令上方的所有指令被從管線112和指令預(yù)取單元128兩者沖洗掉。在管線的實(shí)際分支分解級處,經(jīng)由路徑213將條件分支的實(shí)際方向發(fā)送到分支預(yù)測器電路126。
分支表更新和預(yù)測邏輯電路205經(jīng)配置以除了分支指令地址之外還利用實(shí)際分支方 向、BHT207中的條目的狀態(tài)和(視情況)BHR 203的內(nèi)容來更新BHT207的內(nèi)容。另 夕卜,分支表更新和預(yù)測邏輯電路205經(jīng)配置以視實(shí)際分支方向和BHT207的狀態(tài)或分支 方向預(yù)測器中的任何其它狀態(tài)而定來管理BTAC 141中的條目,從而有利地允許BTAC 141中的條目響應(yīng)于分支預(yù)測器電路126和存儲用于分支預(yù)測的狀態(tài)信息的其它分支預(yù) 測器電路的任一分支預(yù)測技術(shù)實(shí)施。
圖3為BTAC管理電路300的第一示范性實(shí)施例的功能框圖。BTAC管理電路300 可為包括于分支表更新和預(yù)測邏輯電路205中以在BHT 207已經(jīng)更新之后管理BTAC 141的合適電路。在作為實(shí)際分解的結(jié)果而經(jīng)更新后,到BTAC管理電路300的輸入為 對應(yīng)于條件分支指令的兩位計(jì)數(shù)器值的最高有效位。BTAC管理電路300的輸出信號305 為輸入的反轉(zhuǎn)信號。如下文所述,BTAC 141解譯輸出信號305以確定是否管理對應(yīng)于 條件分支指令的條目。
舉例來說,如果對應(yīng)于條件分支指令的經(jīng)更新的兩位計(jì)數(shù)器具有值OO (強(qiáng)預(yù)測未選 取),則將根據(jù)下文描述的各種替代例管理BTAC 141中的此條件分支指令的條目。類似 地,如果經(jīng)更新的兩位計(jì)數(shù)器具有值Ol (弱預(yù)測未選取),則將管理BTAC 141中的此 條件分支指令的條目。如果經(jīng)更新的兩位計(jì)數(shù)器具有值10 (弱預(yù)測選取)或值11 (強(qiáng) 預(yù)測選取),則將不修改BTAC 141中的條目。
圖4為BTAC管理信號電路400的第二示范性實(shí)施例的功能框圖。BTAC管理電路 400可為用于在BHT 207已經(jīng)更新之前管理BTAC 141的分支表更新和預(yù)測邏輯電路205 的BTAC管理部分的一部分的合適電路。BTAC管理電路400為邏輯電路,其包括用以 產(chǎn)生管理信號425以管理對應(yīng)于實(shí)際上經(jīng)分解的條件分支指令的條目的AND門 405A-405B和OR門415。在由實(shí)際方向引起的更新之前,BTAC管理電路400響應(yīng)于 分支的實(shí)際方向和BHT 207的當(dāng)前狀態(tài)而操作。BTAC管理電路400具有輸入A'(經(jīng)反 轉(zhuǎn)的實(shí)際分支方向)、B'(經(jīng)反轉(zhuǎn)的兩位計(jì)數(shù)器的最高有效位)和C'(經(jīng)反轉(zhuǎn)的兩位計(jì) 數(shù)器的最低高有效位)。在此實(shí)施例中,如下所述,BTAC 141將解譯輸出信號425以管 理對應(yīng)于條件分支指令的條目。雖然BTAC管理電路300和400己描述為視BHT 207 的實(shí)施方案而定,但其還可視BHR的選定實(shí)施方案而定。此外,應(yīng)認(rèn)識到,本發(fā)明涵 蓋由BHT的各種實(shí)施方案驅(qū)動或者由各種分支預(yù)測性實(shí)施方案而實(shí)施的其它BTAC管 理電路。此外,如圖3和圖4中所示的BTAC管理電路可與分支表更新和預(yù)測邏輯電路 205集成或與分支表更新和預(yù)測邏輯電路205分離。
9條目的管理的類型可包括各種替代例。管理的類型包括立即移除BTAC、在下一添 加的分支指令上標(biāo)記移除的BTAC條目、在延長的時(shí)間周期內(nèi)釘扎或維持所述BTAC條 目和其類似操作。應(yīng)認(rèn)識到,本發(fā)明涵蓋作為與條件分支指令相關(guān)聯(lián)的BTAC條目的管 理的替代例的不與條件分支指令相關(guān)聯(lián)的BTAC條目的管理。
BTAC 141采用以指示BTAC 141中的條目的替換次序的次序組織條目的最近最少 使用替換策略。己知的偽最近最少使用的電路可適合于維持條目的替換次序。因而, BTAC管理電路300的輸出信號可導(dǎo)致修改對應(yīng)于BTAC 141中的條件分支指令的條目 的位置。舉例來說,可以替換次序增大或以替換次序減小所述條目?;蛘?,通過調(diào)整 BTAC 141中的位置以指示其為最近使用的,可維持所述條目,以便延長其在BTAC141 中的壽命。
或者,在另一實(shí)施例中,BTAC 141可采用修改的循環(huán)策略。在常規(guī)循環(huán)策略中, 寄存器指向待在下次添加條件分支時(shí)替換的條目且在替換所述條目之后連續(xù)步進(jìn)到下 一連續(xù)條目,從而以一合理方式循環(huán)穿過所述條目。然而,在修改的循環(huán)策略中,采用 一指針指向?qū)?yīng)于實(shí)際上經(jīng)分解的條件分支指令的條目。舉例來說,可通過調(diào)整指針現(xiàn) 在指向此條目而標(biāo)記用于移除的對應(yīng)于條件分支指令的條目。在如此進(jìn)行的過程中,在 下一次將條件分支指令和其對應(yīng)目標(biāo)地址添加到BTAC 141時(shí),替換此條目。因此,待 被移除的下一條目將為最近確定以待移除的條目。雖然由本文中提供的BTAC 141采用 的替換策略為示范性的,但本發(fā)明技術(shù)還可適用于在BTAC中通常使用的其它替換策略。
圖5為說明管理BTAC的方法的流程圖500。在框510處,接收實(shí)際上已經(jīng)分解的 條件分支指令的分支方向。舉例來說,圖2的路徑213將分支預(yù)測器電路126說明為從 管線112接收分支方向。在框520處,響應(yīng)于接收實(shí)際分支方向,評估分支預(yù)測器電路 的狀態(tài)。在框530處,根據(jù)分支預(yù)測器電路的狀態(tài),管理與條件分支指令相關(guān)聯(lián)的BTAC 中的條目。
框530A-530D為如框530中所示的BTAC中的條目的各種類型的管理的替代示范性 實(shí)施例。可單一或組合地采用這些示范性實(shí)施例。在框530A處,移除待被管理的BTAC 中的條目,從而從所述BTAC有利地移除待被預(yù)測為"未選取"的最后一個條件分支指 令。在框530B中,在延長的時(shí)間周期內(nèi),將待被管理的BTAC中的條目維持于所述BTAC 中,從而有利地延長BTAC中的待被預(yù)測為"選取"的最后一個條件分支指令的壽命。
框530C展示待被管理的BTAC中的條目使其位置以經(jīng)調(diào)整用于采用最近最少使用 替換策略的BTAC的替換次序。在一實(shí)施例中,BTAC中的條目使其位置以使不大可能 被替換的條目在待添加的下一 BTAC條目上的方式修改的替換次序,從而有利地延長BTAC中的待被預(yù)測為"選取"的最后一個條件分支指令的壽命。在另一實(shí)施例中,BTAC 中的條目使其位置以使很大可能被替換的條目在待添加的下一 BTAC條目上的方式修改 的替換次序。
框530D展示下一替換寄存器經(jīng)調(diào)整用于采用經(jīng)修改的循環(huán)替換策略的BTAC。在 一個實(shí)施例中,下一替換寄存器的內(nèi)容經(jīng)修改以指向BTAC中待管理的條目。因此,當(dāng) 下一條件分支指令將被添加到BTAC時(shí),所述被指向的條目由添加的條目替換,從而從 所述BTAC有利地移除將被預(yù)測為"未選取"的最后一個條件分支指令。在另一實(shí)施例 中,下一替換寄存器的內(nèi)容經(jīng)修改以指向待管理的條目之后的BTAC中的下一條目。以 此方式,當(dāng)下一條件分支指令將被添加到BTAC時(shí),所述待管理?xiàng)l目之后的BTAC中的 下一條目由添加的條目替換,從而有利地延長BTAC中的經(jīng)管理的條目的壽命。應(yīng)認(rèn)識 到,本發(fā)明可利用用于管理BTAC的其它管理技術(shù)。
圖6為說明降低管線的多沖洗循環(huán)的機(jī)率的方法600的流程圖。在框610處,隱式 地預(yù)測條件分支指令的第一方向。舉例來說,如果對于條件分支指令來說,在BTAC中 存在命中,則接著預(yù)取BTAC中的對應(yīng)分支目標(biāo)地址。因此,分支方向被隱式預(yù)測為"選 取"。在框620處,隨后基于例如存儲于分支預(yù)測電路126中的狀態(tài)信息等狀態(tài)信息而 預(yù)測條件分支指令的第二方向。繼續(xù)先前實(shí)例,分支預(yù)測器電路預(yù)測條件分支指令應(yīng)為 "未選取",因此,與BTAC的隱式預(yù)測矛盾。在框630處,利用存儲于(例如)分支預(yù) 測電路126中的狀態(tài)信息來管理與條件分支指令相關(guān)聯(lián)的BTAC條目。上文結(jié)合圖5的 討論描述了不同類型的BTAC管理。或者,在框630處,歸因于在分支預(yù)測器電路與獨(dú) 立于存儲于分支預(yù)測器電路中的任一狀態(tài)的BTAC查找之間的矛盾來管理與條件分支指 令相關(guān)聯(lián)的BTAC條目。
結(jié)合本文中所揭示的實(shí)施例所描述的各種說明性邏輯塊、模塊、電路、元件和/或組 件可用通用處理器、數(shù)字信號處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場可編程門陣 列(FPGA)或其它可編程邏輯組件、離散門或晶體管邏輯、離散硬件組件或其經(jīng)設(shè)計(jì) 以執(zhí)行本文所描述的功能的任何組合來實(shí)施或執(zhí)行。通用處理器可為微處理器,但在替 代例中,所述處理器可為任一常規(guī)處理器、控制器、微控制器或狀態(tài)機(jī)。還可將處理器 實(shí)施為計(jì)算組件的組合,例如,DSP與微處理器的組合,多個微處理器的組合、 一個或 一個以上微處理器與DSP核心的聯(lián)合或任何其它所述配置。
結(jié)合本文中所揭示的實(shí)施例所描述的方法或算法可直接體現(xiàn)于硬件中、由處理器執(zhí) 行的軟件模塊中或所述兩者的組合中。軟件模塊可駐留于RAM存儲器、快閃存儲器、 ROM存儲器、EPROM存儲器、EEPROM存儲器、寄存器、硬盤、可裝卸式盤、CD-ROM
11或此項(xiàng)技術(shù)中已知的任一其它形式的存儲媒體中。存儲媒體可耦合到處理器,使得所述處理器可從所述存儲媒體讀取信息且可將信息寫入到所述存儲媒體。在替代例中,存儲媒體可與處理器成一體。
盡管在實(shí)施例的上下文中揭示了本發(fā)明,但將認(rèn)識到,所屬領(lǐng)域的技術(shù)人員可采用與上文討論和所附的權(quán)利要求書相一致的各種各樣的實(shí)施方案。
權(quán)利要求
1. 一種多級分支預(yù)測系統(tǒng),其包含分支目標(biāo)地址高速緩沖存儲器(BTAC),其經(jīng)配置以存儲BTAC條目;以及分支預(yù)測器電路,其經(jīng)配置以存儲狀態(tài)信息,所述分支預(yù)測器電路經(jīng)配置以利用預(yù)測分支指令的方向的所述狀態(tài)信息,所述分支預(yù)測器電路經(jīng)配置以響應(yīng)于所述分支指令的實(shí)際分解而基于所述狀態(tài)信息來管理所述BTAC條目。
2. 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述分支預(yù)測器電路經(jīng)配置以從所述BTAC移除 所述BTAC條目。
3. 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述分支預(yù)測器電路經(jīng)配置以在延長的時(shí)間周期 內(nèi)將所述BTAC條目維持于所述BTAC中。
4. 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述BTAC經(jīng)配置而以替換次序維持所存儲的一 個或一個以上條目,且其中所述分支預(yù)測器電路經(jīng)配置而以所述替換次序修改所述 BTAC條目的位置。
5. 根據(jù)權(quán)利要求4所述的系統(tǒng),其中所述分支預(yù)測器電路經(jīng)配置以將所述BTAC條目 在所述替換次序中的位置修改為高于其當(dāng)前位置,以增加所述BTAC條目的替換的 可能性。
6. 根據(jù)權(quán)利要求l所述的系統(tǒng),其進(jìn)一步包含替換指針,其中所述BTAC采用經(jīng)修改的循環(huán)替換策略,且其中所述分支預(yù)測器 電路經(jīng)配置以修改所述替換指針以指向所述BTAC條目。
7. 根據(jù)權(quán)利要求l所述的系統(tǒng),其安置于處理器中。
8. —種管理分支目標(biāo)存取高速緩沖存儲器(BTAC)的方法,其包含接收實(shí)際上已經(jīng)分解的條件分支指令的分支方向;響應(yīng)于所述所接收的分支方向,評估分支預(yù)測器電路的狀態(tài)信息;以及 根據(jù)所述分支預(yù)測器電路的所述狀態(tài)信息,管理所述BTAC中與所述條件分支指令相關(guān)聯(lián)的條目。
9. 根據(jù)權(quán)利要求8所述的方法,其中管理所述BTAC中的所述條目包含從所述BTAC移除所述條目。
10. 根據(jù)權(quán)利要求S所述的方法,其中管理所述BTAC中的所述條目包含在延長的時(shí)間周期內(nèi)將所述BTAC條目維持于所述BTAC中。
11. 根據(jù)權(quán)利要求8所述的方法,其進(jìn)一步包含維持以替換次序存儲于所述BTAC中的條目,其中管理所述BTAC中的所述條目 包含以所述替換次序修改所述BTAC條目的位置。
12. 根據(jù)權(quán)利要求11所述的方法,其中修改所述BTAC條目的所述位置包含修改替換 指針以指向所述BTAC條目。
13. —種用于降低管線的多沖洗循環(huán)的機(jī)率的方法,其包含隱式地預(yù)測條件分支指令的第一方向; 基于狀態(tài)信息,預(yù)測所述條件分支指令的第二方向;響應(yīng)于所述第一方向與所述第二方向之間的矛盾,管理與所述條件分支指令相關(guān) 聯(lián)的分支目標(biāo)地址高速緩沖存儲器(BTAC)條目。
14. 根據(jù)權(quán)利要求13所述的方法,利用狀態(tài)信息管理所述BTAC包含從所述BTAC移除所述BTAC條目。
15. 根據(jù)權(quán)利要求13所述的方法,利用狀態(tài)信息管理所述BTAC包含在延長的時(shí)間周期內(nèi)將所述BTAC條目維持于所述BTAC中。
16. 根據(jù)權(quán)利要求13所述的方法,其進(jìn)一步包含維持以替換次序存儲于所述BTAC中的一個或一個以上條目,其中利用狀態(tài)信息 管理所述BTAC包含以所述替換次序修改所述BTAC條目的位置。
17. 根據(jù)權(quán)利要求16所述的方法,其中修改所述BTAC條目的所述位置包含修改替換 指針以指向所述BTAC條目。
全文摘要
本發(fā)明揭示一種包括分支目標(biāo)地址高速緩沖存儲器(BTAC)和分支預(yù)測器電路的多級分支預(yù)測系統(tǒng)。所述BTAC經(jīng)配置以存儲BTAC條目。所述分支預(yù)測器電路經(jīng)配置以存儲狀態(tài)信息。所述分支預(yù)測器電路利用所述狀態(tài)信息來預(yù)測分支指令的方向,且響應(yīng)于所述分支指令的實(shí)際分解,基于所述所存儲的狀態(tài)信息來管理所述BTAC條目。
文檔編號G06F9/38GK101479700SQ200780023873
公開日2009年7月8日 申請日期2007年6月28日 優(yōu)先權(quán)日2006年6月29日
發(fā)明者博胡斯拉夫·里赫列克 申請人:高通股份有限公司