TWI386850B - 用於主動式分支目標位址快取記憶體管理之方法以及裝置 - Google Patents

用於主動式分支目標位址快取記憶體管理之方法以及裝置 Download PDF

Info

Publication number
TWI386850B
TWI386850B TW096123816A TW96123816A TWI386850B TW I386850 B TWI386850 B TW I386850B TW 096123816 A TW096123816 A TW 096123816A TW 96123816 A TW96123816 A TW 96123816A TW I386850 B TWI386850 B TW I386850B
Authority
TW
Taiwan
Prior art keywords
btac
item
branch
instruction
entry
Prior art date
Application number
TW096123816A
Other languages
English (en)
Other versions
TW200816046A (en
Inventor
Bohuslav Rychlik
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of TW200816046A publication Critical patent/TW200816046A/zh
Application granted granted Critical
Publication of TWI386850B publication Critical patent/TWI386850B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Description

用於主動式分支目標位址快取記憶體管理之方法以及裝置
本發明大體而言係關於處理器之領域,且詳言之,本發明關於一種藉由主動管理分支目標位址快取記憶體之內容而改良分支預測之方法。
微處理器在多種應用中執行計算任務。改良的處理器效能幾乎始終為所要的,以允許經由軟體改變之較快操作及/或增加的功能性。在許多嵌入應用(諸如,攜帶型電子設備)中,省電亦為處理器設計及建構中之一目標。
許多現代處理器採用一管線式架構,其中連續指令(每一者具有多個執行步驟)在執行過程中重迭。對於改良之效能而言,該等指令應經由管線連續流動。引起指令在管線中停止之任何情形可不利地影響效能。若指令被自管線清除且隨後經重取,則效能及功率消耗皆受損害。
許多程式包括條件分支指令,其實際分支行為直至指令在管線深處被評估時方知曉。為了避免將由等待分支指令之實際評估而引起的停止,現代處理器可採用一些形式的分支預測,藉以在管線中早早地預測條件分支指令之分支行為。基於預測的分支評估,處理器推測性地提取(預取)及執行自預測位址之指令,該位址為分支目標位址(若預測選取該分支)或分支指令後之下一連續位址(若預測未選取該位址)。條件分支指令是否被選取或未被選取被稱作判定分支之方向。可在預測時間時及在實際分支決議時間時進行判定分支之方向。當判定實際分支行為時,若誤預測了該分支,則必須自管線清除推測性地提取之指令,且必須自正確的下一位址提取新指令。回應於錯誤分支預測之預取指令可不利地影響處理器效能及功率消耗。因此,改良分支預測之準確性為一重要的處理器設計目標。
分支預測之一已知形式包括將分支預測劃分為兩個預測器:一初始分支目標位址快取記憶體(BTAC)及一分支歷史表(BHT)。亦已知為分支目標緩衝器(BTB)之BTAC由一指令提取位址索引且含有對應於該指令提取位址之下一提取位址(亦被稱作分支目標)。在一分支指令已穿過處理器管線且其分支已經選取後,將項添加至一習知BTAC。若該習知BTAC係滿的,則當正添加下一項時,使用標準快取記憶體替換演算法(諸如,循環或最近最少使用法)自BTAC習知地移除項。
一般而言,BTAC常常體現為高度關聯性快取記憶體設計且在提取管線中被早早地存取。若提取位址匹配一BTAC項(BTAC命中),則在下一循環中提取對應的下一提取位址或目標位址。目標位址之此匹配及隨後提取被稱作隱式選取分支預測。若不存在匹配(BTAC未命中),則在下一循環中提取下一連續增加的位址。此無匹配情形亦被稱作隱式未選取預測。
一般而言,結合一較準確的個別分支方向預測器(諸如,亦已知為模式歷史表(PHT)之分支歷史表(BHT))利用BTAC。相比習知BTAC,在管線中稍晚地存取習知BHT。同樣,可潛在地存在額外資訊以便進行較佳預測。習知BHT可含有一組飽和預測式方向計數器以產生對於個別分支指令之較準確的選取/未選取決策。舉例而言,每一飽和預測式方向計數器可包含一個2位元計數器,其假定四個狀態中之一者,每一者指派有一加權預測值,諸如:11-強預測選取10-弱預測選取01-弱預測未選取00-強預測未選取
一般而言,BHT習知地由儲存於一分支歷史暫存器(BHR)中之位元索引。習知BHT之輸出為引起提取分支指令之目標位址或下一循環中之下一連續位址之選取或未選取決策。當BHT變為已知時,BHT通常以分支輸出結果資訊加以更新。
藉由利用習知BHT,處理器可置換由BTAC作出之較早的隱式預測。舉例而言,BTAC可命中(隱式地預測一選取分支),但該BHT可以一未選取預測置換BTAC隱式預測。相反,在BTAC未命中後,BHT可以一選取預測置換BTAC未命中,假定在處理器管線中此點處之目標位址現在為已知的。
置換BHT之BTAC預測導致由清除處理器管線引起之無用循環。當類似的分支指令隨後由管線處理時,置換BHT之BTAC預測可重複地發生。舉例而言,若BTAC隱式地預測由一正發現於BTAC中之匹配之選取,則自目標位址(選取分支)之指令開始被提取至處理器管線中。若BHT隨後藉由決定不應選取該分支而置換BTAC預測,則必須自管線清除在提取目標位址之後的所有指令。在此習知的分支預測技術後,對於隨後提取之相同分支指令而言,此循環潛在地自身重複。關於相同條件分支指令之隨後提取的重複分支預測矛盾之此問題在本文中被稱作多次清除循環問題。在習知方法中,對於條件分支指令而言,多次清除循環問題可持續存在直至BTAC被更新為止。因此,應認識到,需要主動管理BTAC及減小多次清除循環問題之發生機率之裝置及方法。
根據一或多個實施例,揭示一種分支目標位址快取記憶體(BTAC)及一種分支預測器電路。該BTAC經組態以儲存一BTAC項。該分支預測器電路經組態以儲存狀態資訊。該分支預測器電路利用狀態資訊來預測分支指令之方向,且回應於分支指令之實際決議,基於儲存的狀態資訊而管理BTAC項。藉由基於用以預測分支指令之方向的狀態資訊而管理BTAC項,有利地減少了誤預測及在BTAC查找與分支預測器電路之間的矛盾之可能性。
一實施例係關於一種多平臺分支預測系統。該多平臺分支預測系統包括一BTAC及一分支預測器電路。該BTAC經組態以儲存一BTAC項。該分支預測器電路經組態以儲存狀態資訊。該分支預測器電路利用狀態資訊來預測分支指令之方向,且回應於分支指令之實際決議,基於儲存的狀態資訊而管理BTAC項。
另一實施例係關於一種管理一分支目標存取快取記憶體(BTAC)之方法。接收實際上已經決議的條件分支指令之分支方向。回應於接收的分支方向,評估分支預測器電路之狀態資訊。根據分支預測器電路之狀態資訊,管理與條件分支指令相關聯的BTAC中之項。
另一實施例係關於一種降低管線之多次清除循環之機率之方法。在此方法中,隱式地預測一條件分支指令之第一方向。同樣,基於狀態資訊,預測該條件分支指令之第二方向。利用狀態資訊管理與該條件分支指令相關聯之BTAC項。
應瞭解,熟習此項技術者將不難自以下實施方式瞭解本發明之其它實施例,在實施方式中藉由說明展示並描述了本發明之各種實施例。如將認識到,本發明可以有其他及不同實施例且其若干細節在各種其他態樣中可以有各種修改,該等實施例及修改均不脫離本發明。因此,本質上應認為圖式及實施方式均為說明性的而非限制性的。
圖1描繪一處理器100之功能方塊圖。處理器100根據控制邏輯114執行指令執行管線112中之指令。在一些實施例中,管線112可為具有多個平行管線的超標量(superscalar)設計。管線112包括組織於管線平臺中之各種暫存器或鎖存器116A-D及一或多個執行單元(諸如,算術邏輯單元(ALU)118)。通用暫存器(GPR)檔案120提供包含記憶體階層之頂部的暫存器。
自資料快取記憶體(D快取記憶體)140存取資料,其中記憶體位址轉譯及准許由主轉譯後備緩衝器(TLB)142管理。在各種實施例中,ITLB 124可包含TLB 142之部分的複本。或者,可整合ITLB 124及TLB 142。類似地,在處理器100之各種實施例中,可整合或統一I快取記憶體122與D快取記憶體140。在一記憶體介面146之控制下,I快取記憶體122及/或D快取記憶體140之未命中導致對一主(晶片外)記憶體144之存取。
處理器100可包括一輸入/輸出(I/O)介面148,其控制對各種外圍設備150之存取。熟習此項技術者將認識到,處理器100之眾多變化係可能的。舉例而言,處理器100可包括用於I快取記憶體122及D快取記憶體140中之任一者或兩者之一第二級(L2)快取記憶體。此外,可自一特定實施例省去處理器100中描繪之功能方塊中之一或多個。
處理器100包括一多平臺分支預測系統143。多平臺分支預測系統143包括一BTAC 141(第一平臺)及一分支預測器電路126(第二平臺)。BTAC 141經組態以儲存一或多個項,其中每一項含有一對應於一提取位址之分支目標位址。指令預取單元128自一指令記憶體(I快取記憶體或I$)122提取指令,其中記憶體位址轉譯及准許由指令側轉譯後備緩衝器(ITLB)124管理。多平臺分支預測系統143判定在BTAC 141中一提取位址是否命中、藉由利用分支預測器電路126中之儲存的預測模式預測一分支指令之方向,及基於分支預測器電路126中之儲存的預測模式之狀態更新BTAC 141。將結合圖2之討論更詳細地描述多平臺分支預測系統143以及指令預取單元128及管線112之操作。
圖2為圖1之分支預測器系統143之功能方塊圖。管線112及指令預取單元128各包括一或多個處理平臺。分支預測器電路126可包括一分支歷史暫存器203、分支歷史表(BHT)207及分支表更新及預測邏輯電路205。將結合圖3及圖4描述分支表更新及預測邏輯電路205之BTAC管理部分之例示性實施例。
在操作中,穿過路徑219在BTAC 141中查找一提取位址,以判定其是否對應於一先前已由管線112處理之選取分支指令。指令預取單元128穿過路徑221自指令快取記憶體122推測性地預取指令,其開始於自BTAC 141返回之分支目標位址(對於隱式預測為"選取"之分支)或開始於下一連續位址(對於隱式預測為"未選取"之分支)。在任一情況下,將預取的指令沿著路徑223載入至指令預取單元128內。
當條件分支指令由指令預取單元128或管線112之平臺處理時,判定關於條件分支指令之額外資訊,諸如,在穿過路徑223自I快取記憶體122擷取之預解碼位元中載運的資訊。在路徑121上調用利用儲存的預測模式及此額外資訊之分支預測器電路126,以便以比BTAC查找高的置信度級別預測條件分支指令之方向。
分支表更新及預測邏輯電路205利用分支指令位址、分支歷史暫存器(BHR)203及分支歷史表(BHT)207來預測條件分支指令之方向。對於一條件分支指令而言,BHR 203充當移位暫存器。舉例而言,若實際上選取了一條件分支指令,則將"1"移位至BHR 203內。若實際上未選取條件分支指令,則將"0"移位至BHR 203內,從而導致將一特定分支指令之歷史分支方向儲存於BHR 203上。在一實施例中,BHR 203包括一用於由管線112在一時間週期內處理之每一分支指令的具體暫存器。在另一實施例中,BHR 203可具有含有最近處理的條件分支指令之歷史分支方向的全域範疇。BHT 207可包括用於一特定分支指令的兩位元計數器,如在上文先前技術段落中所描述。應認識到,用於預測分支方向之各種已知技術可利用BHR 203及BHT 207。亦應認識到,此等已知的預測性技術利用BHR 203及BHT 207之各種建構。亦應認識到,此揭示內容涵蓋利用建構對BHR或BHT之替代的其他預測技術。
基於BHR 203及BHT 207,在圖2中說明之實例中,分支方向預測器電路126預測到與BTAC 141隱式預測矛盾之分支方向。結果,在"Taken Path1 "(條件分支指令之平臺位置)上方之所有指令將自指令預取單元128清除。在無矛盾之情況下,指令預取單元128將繼續預取自分支目標位址開始之指令。
當條件分支指令經由管線112之平臺進行時,條件分支指令達到條件實際上經決議之一平臺。若分支之實際決議與分支預測器電路126之預測不同,則該條件分支指令上方之所有指令自管線112及指令預取單元128清除。在管線之實際分支決議平臺處,將條件分支之實際方向在路徑213上發送至分支預測器電路126。
分支表更新及預測邏輯電路205經組態以利用實際分支方向(除了分支指令位址之外)、BHT 207中之項的狀態及(視情況)BHR 203之內容以更新BHT 207之內容。另外,分支表更新及預測邏輯電路205經組態以視實際分支方向及BHT 207之狀態或分支方向預測器中之任何其他狀態而定管理BTAC 141中之項,此有利地允許BTAC 141中之項回應於分支預測器電路126及儲存用於分支預測之狀態資訊的其他分支預測器電路之任一分支預測技術建構。
圖3為一BTAC管理電路300之第一例示性實施例之功能方塊圖。BTAC管理電路300可為包括於分支表更新及預測邏輯電路205中以在BHT 207已經更新後管理BTAC 141之一合適電路。在作為實際決議之結果而經更新後,至BTAC管理電路300之輸入為對應於條件分支指令之兩位元計數器值之最高有效位元。BTAC管理電路300之輸出信號305為輸入之反相信號。如下所述,BTAC 141解譯輸出信號305以判定是否管理一對應於條件分支指令之項。
舉例而言,若對應於條件分支指令之經更新的兩位元計數器具有值00(強預測未選取),則將根據下文描述之各種替代例管理BTAC 141中的此條件分支指令之項。類似地,若經更新的兩位元計數器具有值01(弱預測未選取),則將管理BTAC 141中的此條件分支指令之項。若經更新的兩位元計數器具有值10(弱預測選取)或值11(強預測選取),則將不修改BTAC 141中的項。
圖4為一BTAC管理信號電路400之第二例示性實施例之功能方塊圖。BTAC管理電路400可為用於在BHT 207已經更新前管理BTAC 141的分支表更新及預測邏輯電路205之BTAC管理部分之一部分的合適電路。BTAC管理電路400為一邏輯電路,其包括用以產生一管理信號425以管理一對應於實際上經決議的一條件分支指令之項的AND("及")閘405A-405B及一OR("或")閘415。在由實際方向引起之更新前,BTAC管理電路400回應於分支之實際方向及BHT 207之當前狀態而操作。BTAC管理電路400具有輸入端A'(經反相的實際分支方向)、B'(經反相的兩位元計數器之最高有效位元)及C'(經反相的兩位元計數器之最低高有效位元)。在此實施例中,如下所述,BTAC 141將解譯輸出信號425以管理一對應於條件分支指令之項。雖然BTAC管理電路300及400已描述為視BHT 207之建構而定,但其亦可視BHR之一選定建構而定。此外,應認識到,此揭示內容涵蓋由BHT之各種建構驅動或者由各種分支預測性建構而建構之其他BTAC管理電路。此外,如圖3及圖4中所示之BTAC管理電路可經與分支表更新及預測邏輯電路205整合或與分支表更新及預測邏輯電路205分離。
項之管理的類型可包括各種替代例。管理之類型包括立即移除BTAC、在下一添加之分支指令上標記移除之BTAC項、在一延長的時間週期內固定或維持該BTAC項及其類似操作。應認識到,本揭示內容涵蓋作為與條件分支指令相關聯的BTAC項之管理之替代的不與條件分支指令相關聯的BTAC項之管理。
BTAC 141採用以指示BTAC 141中的項之替換次序的次序組織項之最近最少使用替換策略。已知的偽最近最少使用電路可適合於維持項之替換次序。同樣,BTAC管理電路300之輸出信號可導致修改對應於BTAC 141中之條件分支指令之項的位置。舉例而言,可以替換次序增大或以替換次序減小該項。或者,藉由調整BTAC 141中之位置以指示其為最近使用的,可維持該項,以便延長其在BTAC 141中之壽命。
或者,在另一實施例中,BTAC 141可使用一修改的循環策略。在習知循環策略中,一暫存器指向一待在下次添加一條件分支時替換之項且在替換該項後連續步進至下一連續項,從而以一合理方式循環穿過該等項。然而,在修改的循環策略中,採用一指標指向對應於實際上經決議的條件分支指令之項。舉例而言,可藉由調整指標現在指向此項而標記用於移除的對應於條件分支指令之項。在如此進行的過程中,在下一次將一條件分支指令及其對應目標位址添加至BTAC 141時,替換此項。因此,待被移除之下一項將為最近判定以移除之項。雖然由本文中提供之BTAC 141採用之替換策略為例示性的,但本發明技術亦可適用於在BTAC中通常使用之其他替換策略。
圖5為說明管理一BTAC之方法之流程圖500。在方塊510處,接收實際上已經決議的條件分支指令之分支方向。舉例而言,圖2之路徑213將分支預測器電路126說明為自管線112接收分支方向。在方塊520處,回應於接收實際分支方向,評估分支預測器電路之狀態。在方塊530處,根據分支預測器電路之狀態,管理與條件分支指令相關聯的BTAC中之項。
方塊530A-530D為如方塊530中所示的BTAC中之項之各種類型的管理之替代例示性實施例。可單一或組合地使用此等例示性實施例。在方塊530A處,移除待被管理的BTAC中之項,從而自該BTAC有利地移除待被預測為"未選取"之最後一個條件分支指令。在方塊530B中,在一延長的時間週期內,將待被管理的BTAC中之項維持於該BTAC中,從而有利地延長BTAC中的待被預測為"選取"之最後一個條件分支指令之壽命。
方塊530C展示待被管理之BTAC中之項使其位置以經調整用於採用最近最少使用替換策略之BTAC之替換次序。在一實施例中,BTAC中之項使其位置以使不大可能被替換之項在待添加的下一BTAC項上的方式修改之替換次序,從而有利地延長BTAC中的待被預測為"選取"之最後一個條件分支指令之壽命。在另一實施例中,BTAC中之項使其位置以使很大可能被替換之項在待添加的下一BTAC項上的方式修改之替換次序。
方塊530D展示下一替換暫存器經調整用於採用一經修改的循環替換策略之BTAC。在一實施例中,下一替換暫存器之內容經修改以指向BTAC中待被管理之項。因此,當待將下一條件分支指令添加至BTAC時,該被指向的項由添加的項替換,從而自該BTAC有利地移除待被預測為"未選取"之最後一個條件分支指令。在另一實施例中,下一替換暫存器之內容經修改以指向在項經管理後的BTAC中之下一項。以此方式,當待將下一條件分支指令添加至BTAC時,項經管理後的BTAC中之下一項由添加的項替換,從而有利地延長BTAC中的經管理之項之壽命。應認識到,本揭示內容可利用用於管理BTAC之其他管理技術。
圖6為說明降低一管線之多次清除循環的機率之方法600之流程圖。在方塊610處,隱式地預測一條件分支指令之第一方向。舉例而言,若對於條件分支指令而言,在一BTAC中存在一命中,則接著預取BTAC中之對應分支目標位址。因此,分支方向經隱式預測為"選取"。在方塊620處,隨後基於諸如儲存於分支預測電路126中之狀態資訊的狀態資訊而預測條件分支指令之第二方向。繼續先前實例,一分支預測器電路預測條件分支指令應為"未選取",因此,與BTAC之隱式預測矛盾。在方塊630處,利用儲存於(例如)分支預測電路126中之狀態資訊管理與條件分支指令相關聯的BTAC項。上文結合圖5之討論描述了不同類型之BTAC管理。或者,在方塊630處,歸因於在分支預測器電路與獨立於儲存於分支預測器電路中之任一狀態的BTAC查找之間的矛盾,管理與條件分支指令相關聯之BTAC項。
結合本文中所揭示之實施例所描述的各種說明性邏輯區塊、模組、電路、元件及/或組件可藉由經設計用於執行本文所描述之功能的一通用處理器、一數位信號處理器(DSP)、一特殊應用積體電路(ASIC)、一場可程式閘陣列(FPGA)或其他可程式邏輯組件、離散閘或電晶體邏輯、離散硬體組件或其之任何組合來實施或執行。通用處理器可為微處理器,但在替代例中,該處理器可為任一習知處理器、控制器、微控制器或狀態機。亦可將一處理器建構為計算組件之一組合,例如,一DSP與一微處理器之一組合,複數個微處理器、一或多個微處理器結合一DSP核心或任何其他此組態。
結合本文中所揭示之實施例所描述的方法或演算法可直接體現於硬體中、由一處理器執行之一軟體模組中或該兩個之一組合中。軟體模組可駐留於RAM記憶體、快閃記憶體、ROM記憶體、EPROM記憶體、EEPROM記憶體、暫存器、硬碟、可移除式碟、CD-ROM或此項技術中已知的任一其它形式之儲存媒體中。一儲存媒體可耦接至處理器,使得該處理器可自該儲存媒體讀取資訊,及可將資訊寫入至該儲存媒體。在替代例中,儲存媒體可整合至處理器。
儘管本發明經揭示於實施例之上下文中,但應認識到,熟習此項技術者可使用與上文討論及下文隨附之申請專利範圍相一致的各種各樣實施例。
100...處理器
112...管線
114...控制邏輯
116A...暫存器或鎖存器
116B...暫存器或鎖存器
116C...暫存器或鎖存器
116D...暫存器或鎖存器
118...算術邏輯單元
120...通用暫存器(GPR)檔案
121...路徑
122...I快取記憶體
124...指令側轉譯後備緩衝器
126...分支預測器電路/分支預測電路
128...指令預取單元
140...D快取記憶體
141...分支目標位址快取記憶體(BTAC)
142...主轉譯後備緩衝器(TLB)
143...多平臺分支預測系統
144...主(晶片外)記憶體
146...記憶體介面
148...輸入/輸出(I/O)介面
150...外圍設備
203...分支歷史暫存器
205...分支表更新及預測邏輯電路
207...分支歷史表(BHT)
213...路徑
219...路徑
221...路徑
223...路徑
300...BTAC管理電路
305...輸出信號
400...BTAC管理信號電路/BTAC管理電路
405A...AND閘
405B...AND閘
405C...AND閘
415...OR閘
425...輸出信號
A'...輸入端
B'...輸入端
C'...輸入端
Taken Path1 ......Taken Path4+n ...條件分支指令之平臺位置
圖1為一處理器之功能方塊圖。
圖2為圖1之分支預測器系統之功能方塊圖。
圖3為一BTAC管理信號電路之第一例示性實施例之功能方塊圖。
圖4為一BTAC管理信號電路之第二例示性實施例之功能方塊圖。
圖5為說明管理一BTAC之方法之流程圖。
圖6為說明降低一管線之多次清除循環的機率之方法之流程圖。
112...管線
121...路徑
122...I快取記憶體
126...分支預測器電路/分支預測電路
128...指令預取單元
141...分支目標位址快取記憶體(BTAC)
203...分支歷史暫存器
205...分支表更新及預測邏輯電路
207...分支歷史表(BHT)
213...路徑
219...路徑
221...路徑
223...路徑

Claims (41)

  1. 一種多平臺分支預測系統,其包含:一分支目標位址快取記憶體(BTAC),其經組態以儲存一BTAC項;一分支預測器,其包含:一分支歷史表(BHT),其用以儲存與一分支指令相關聯之一項;及一邏輯電路,其經組態以:基於該BTAC項預測與該分支指令相關聯之一第一方向,其中該第一方向用於推測性地在一指令預取單元預取一隨後之指令;使用該BHT中之該項之一狀態以預測該分支指令之一第二方向,其中回應於與該第一方向衝突之該第二方向,該隨後之指令自該指令預取單元被清除且另一指令基於該第二方向而在該指令預取單元被預取;回應於該分支指令之實際決議而修改該BHT中之該項之該狀態;及使用經修改之該BHT之該狀態以管理該BTAC項。
  2. 如請求項1之系統,其中該邏輯電路進一步經組態以判定是否回應於經修改之該BHT項之該狀態而管理該BTAC項。
  3. 如請求項2之系統,其中回應於指示一分支未選取預測 之經修改之該BHT項之該狀態而管理該BTAC項,且其中回應於指示一分支選取預測之經修改之該BHT項之該狀態而不修改該BTAC項。
  4. 如請求項3之系統,其中該邏輯電路經組態以回應於判定經修改之該BHT項之該狀態指示該分支未選取預測而立即移除該BTAC項。
  5. 如請求項3之系統,其中當另一BTAC項經指示為一最近使用之BTAC項,該邏輯電路經組態以回應於指示該分支選取預測之經修改之該BHT項之該狀態而指示該BTAC項為該最近使用之BTAC項。
  6. 如請求項1之系統,其中在該分支指令進入一指令執行管線之前自該指令預取單元清除該隨後之指令,且在該分支指令進入該指令執行管線之前預取另一指令。
  7. 如請求項1之系統,其中該BTAC及該分支預測器係安置於一處理器中。
  8. 一種方法,其包含:使用一分支歷史表(BHT)中之一項之一狀態以預測一分支指令之一方向;回應於該分支指令之實際決議而修改該BHT中之該項之該狀態;及使用經修改之該BHT中之該項之該狀態以判定是否管理一分支目標位址快取記憶體(BTAC)項。
  9. 如請求項8之方法,其中回應於指示一分支未選取預測之經修改之該BHT項之該狀態而判定管理該BTAC項,且 其中回應於指示一分支選取預測之經修改之該BHT項之該狀態而判定不修改該BTAC項。
  10. 如請求項9之方法,其進一步包含回應於判定經修改之該BHT項之該狀態指示該分支未選取預測,立即移除該BTAC項。
  11. 如請求項9之方法,其進一步包含當另一BTAC項經指示為一最近使用之BTAC項,回應於指示該分支選取預測之經修改之該BHT項之該狀態,指示該BTAC項為該最近使用之BTAC項。
  12. 如請求項8之方法,其中基於該BTAC項而判定與該分支指令相關聯之一第一預測方向,其中該第一預測方向係用於在一指令預取單元推測性地預取一隨後之指令,且進一步包含回應於使用與該第一預測方向衝突之該BHT項之該狀態而預測之該方向,自該指令預取單元清除該隨後之指令且基於使用該BHT項之該狀態而預取之該方向在該指令預取單元預取另一指令。
  13. 如請求項12之方法,其中在該分支指令進入一指令執行管線之前自該指令預取單元清除該隨後之指令,且在該分支指令進入該指令執行管線之前預取另一指令。
  14. 如請求項8之方法,其中使用該分支歷史表(BHT)中之該項之該狀態、修改該BHT中之該項之該狀態、及使用經修改之該BHT項之該狀態以判定是否管理由一處理器執行之該分支目標位址快取記憶體(BTAC)。
  15. 一種多平臺分支預測系統,其包含: 用以儲存待由一指令提取位址索引之一第一項且包括一下一提取位址之構件;用以儲存與一分支指令相關聯之一第二項之構件,該第二項包括一預測式方向計數器;用以使用該第二項之一狀態以預測該分支指令之一方向之構件;用以回應於該分支指令之實際決議而修改該第二項之該狀態之構件;及用以使用經修改之該第二項之該狀態以管理該第一項之構件。
  16. 如請求項15之系統,其進一步包含用以判定是否回應於經修改之該第二項之該狀態而管理該第一項。
  17. 如請求項16之系統,其中回應於指示一分支未選取預測之經修改之該第二項之該狀態而管理該第一項,且其中回應於指示一分支選取預測之經修改之該第二項之該狀態而不修改該第一項。
  18. 如請求項17之系統,其中該用以使用經修改之該第二項之該狀態以管理該第一項之構件經組態以回應於判定經修改之該第二項之該狀態指示該分支未選取預測而立即移除該第一項。
  19. 如請求項17之系統,其中該第一項係一分支目標位址快取記憶體(BTAC)之一項且其中該第二項係一分支歷史表(BHT)之一項。
  20. 如請求項19之系統,其中當另一BTAC項經指示為一最 近使用之BTAC項,該用以使用經修改之該第二項之該狀態以管理該第一項之構件經組態以回應於指示該分支選取預測之經修改之該第二項之該狀態而指示該第一項為該最近使用之BTAC項。
  21. 如請求項15之系統,其中一第一預測方向係基於該第一項而與該分支指令相關聯,其中該第一預測方向係用以在一指令預取單元推測性地預取一隨後之指令,且其中回應於使用與該第一預測方向衝突之該第二項之該狀態而預測之該方向,自該指令預取單元清除該隨後之指令且基於使用該第二項之該狀態而預取之該方向在該指令預取單元預取另一指令。
  22. 一種用以降低一管線之一多次清除循環之一機率之方法,該方法包含:隱式地預測一條件分支指令之一第一方向;基於狀態資訊,預測該條件分支指令之一第二方向;判定該第一方向及該第二方向之間的一衝突;回應於判定該第一方向與該第二方向之間的該衝突,管理與該條件分支指令相關聯的一分支目標位址快取記憶體(BTAC)項。
  23. 如請求項22之方法,其中經由該BTAC項而隱式地預測該第一方向且該狀態資訊包含儲存於一分支歷史表(BHT)中之一項之一狀態,該BHT項與該條件分支指令相關聯。
  24. 如請求項23之方法,其中回應於該第一方向及該第二方 向之間的該衝突而使用該狀態資訊管理該BTAC項。
  25. 如請求項23之方法,回應於該第一方向及該第二方向之間的該衝突而管理該BTAC項且不受該BHT項之該狀態之影響。
  26. 如請求項22之方法,其中回應於該第一方向及該第二方向之間的該衝突而管理該BTAC項包含自該BTAC移除該BTAC項。
  27. 如請求項22之方法,其中回應於該第一方向及該第二方向之間的該衝突而管理該BTAC項包含在一延長的時間週期內將該BTAC項維持於該BTAC中。
  28. 如請求項22之方法,其進一步包含以一替換次序維持儲存於該BTAC中的一或多個項,且其中回應於該第一方向及該第二方向之間的該衝突而管理該BTAC項包含以該替換次序修改該BTAC項之一位置。
  29. 如請求項28之方法,其中修改該BTAC項之該位置包含修改一替換指標以指向該BTAC項。
  30. 一種用以降低一管線之一多次清除循環之一機率之系統,該系統包含:一分支目標位址快取記憶體(BTAC),其可經存取以隱式地預測一條件分支指令之一第一方向;一分支歷史表(BHT),其可經存取以基於狀態資訊而預測該條件分支指令之一第二方向;及一邏輯電路,其經組態以:判定該第一方向與該第二方向之間的一衝突;及 回應於判定該第一方向與該第二方向之間的該衝突,管理與該條件分支指令相關聯的一BTAC。
  31. 如請求項30之系統,其中該狀態資訊包含儲存於該分支歷史表(BHT)中之一項之一狀態,該BHT項與該條件分支指令相關聯。
  32. 如請求項31之系統,其中回應於該第一方向及該第二方向之間的該衝突而使用該狀態資訊管理該BTAC項。
  33. 如請求項31之系統,其中回應於該第一方向及該第二方向之間的該衝突而管理該BTAC項且不受該BHT項之該狀態之影響。
  34. 如請求項30之系統,其中回應於該第一方向及該第二方向之間的該衝突而管理該BTAC項包含自該BTAC移除該BTAC項。
  35. 如請求項30之系統,其中回應於該第一方向及該第二方向之間的該衝突而管理該BTAC項包含在一延長的時間週期內將該BTAC項維持於該BTAC中。
  36. 如請求項30之系統,其中以一替換次序維持儲存於該BTAC中的一或多個項,且其中回應於該第一方向及該第二方向之間的該衝突而管理該BTAC項包含以該替換次序修改該BTAC項之一位置。
  37. 如請求項36之系統,其中修改該BTAC項之該位置包含修改一替換指標以指向該BTAC項。
  38. 一種用以降低一管線之一多次清除循環之一機率之系統,該系統包含: 用以儲存待由一指令提取位址索引之一第一項且包括一下一提取位址之構件,其中用以儲存該第一項之該構件可經存取以隱式地預測一條件分支指令之一第一方向;用以儲存與該條件分支指令相關聯之一第二項之構件,該第二項包括一預測式方向計數器,其中用以儲存該第二項之該構件可經存取以基於狀態資訊而預測該條件分支指令之一第二方向;及用以判定該第一方向及該第二方向之間的一衝突且回應於判定該第一方向及該第二方向之間的該衝突而管理該第一項之構件。
  39. 如請求項38之系統,其中用以儲存該第二項之該構件包含一分支目標位址快取記憶體(BTAC)且其中該第二項包含一BHT項。
  40. 如請求項39之系統,其中回應於該第一方向及該第二方向之間的該衝突而使用儲存於該BHT項中之狀態資訊管理該第一項。
  41. 如請求項39之系統,其中由於該第一方向及該第二方向之間的該衝突而管理該第一項且不受該BHT項之該狀態之影響。
TW096123816A 2006-06-29 2007-06-29 用於主動式分支目標位址快取記憶體管理之方法以及裝置 TWI386850B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/427,349 US8935517B2 (en) 2006-06-29 2006-06-29 System and method for selectively managing a branch target address cache of a multiple-stage predictor

Publications (2)

Publication Number Publication Date
TW200816046A TW200816046A (en) 2008-04-01
TWI386850B true TWI386850B (zh) 2013-02-21

Family

ID=38846531

Family Applications (1)

Application Number Title Priority Date Filing Date
TW096123816A TWI386850B (zh) 2006-06-29 2007-06-29 用於主動式分支目標位址快取記憶體管理之方法以及裝置

Country Status (12)

Country Link
US (2) US8935517B2 (zh)
EP (2) EP2434393B1 (zh)
JP (4) JP5558814B2 (zh)
KR (1) KR101074621B1 (zh)
CN (1) CN101479700B (zh)
BR (1) BRPI0713434A2 (zh)
CA (1) CA2654231A1 (zh)
ES (1) ES2386478T3 (zh)
MX (1) MX2008016116A (zh)
RU (1) RU2421783C2 (zh)
TW (1) TWI386850B (zh)
WO (1) WO2008003019A2 (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3798998B2 (ja) * 2002-06-28 2006-07-19 富士通株式会社 分岐予測装置および分岐予測方法
US8935517B2 (en) * 2006-06-29 2015-01-13 Qualcomm Incorporated System and method for selectively managing a branch target address cache of a multiple-stage predictor
JP5145809B2 (ja) * 2007-07-31 2013-02-20 日本電気株式会社 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム
US20110236729A1 (en) 2008-12-05 2011-09-29 Roustaei Alex Hr Hydrogen cells or microcells with a hydrogen generator
FR2956869B1 (fr) 2010-03-01 2014-05-16 Alex Hr Roustaei Systeme de production de film flexible a haute capacite destine a des cellules photovoltaiques et oled par deposition cyclique des couches
JP2011209774A (ja) * 2010-03-26 2011-10-20 Fujitsu Ltd 分岐予測方法及びその方法を実行する分岐予測回路
US8375565B2 (en) 2010-05-28 2013-02-19 Western Digital (Fremont), Llc Method for providing an electronic lapping guide corresponding to a near-field transducer of an energy assisted magnetic recording transducer
US8351307B1 (en) 2010-06-04 2013-01-08 Western Digital (Fremont), Llc Trailing edge optimized near field transducer having non-rectangular pin cross section
US8320219B1 (en) 2010-06-15 2012-11-27 Western Digital (Fremont), Llc Trailing edge optimized near field transducer
JP5656074B2 (ja) * 2011-02-21 2015-01-21 日本電気株式会社 分岐予測装置、プロセッサ及び分岐予測方法
US9201654B2 (en) * 2011-06-28 2015-12-01 International Business Machines Corporation Processor and data processing method incorporating an instruction pipeline with conditional branch direction prediction for fast access to branch target instructions
US8749790B1 (en) 2011-12-08 2014-06-10 Western Digital (Fremont), Llc Structure and method to measure waveguide power absorption by surface plasmon element
WO2013101121A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Managed instruction cache prefetching
US9430241B2 (en) 2012-06-15 2016-08-30 International Business Machines Corporation Semi-exclusive second-level branch target buffer
US9280351B2 (en) 2012-06-15 2016-03-08 International Business Machines Corporation Second-level branch target buffer bulk transfer filtering
US9298465B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Asynchronous lookahead hierarchical branch prediction
US20140006752A1 (en) * 2012-06-27 2014-01-02 Qualcomm Incorporated Qualifying Software Branch-Target Hints with Hardware-Based Predictions
US10042776B2 (en) * 2012-11-20 2018-08-07 Arm Limited Prefetching based upon return addresses
US9441938B1 (en) 2013-10-08 2016-09-13 Western Digital (Fremont), Llc Test structures for measuring near field transducer disc length
JP6393590B2 (ja) * 2013-11-22 2018-09-19 株式会社半導体エネルギー研究所 半導体装置
US9563430B2 (en) 2014-03-19 2017-02-07 International Business Machines Corporation Dynamic thread sharing in branch prediction structures
US10353819B2 (en) * 2016-06-24 2019-07-16 Qualcomm Incorporated Next line prefetchers employing initial high prefetch prediction confidence states for throttling next line prefetches in a processor-based system
US20170371669A1 (en) * 2016-06-24 2017-12-28 Qualcomm Incorporated Branch target predictor
GB2553582B (en) * 2016-09-13 2020-07-08 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry
US10613869B2 (en) * 2018-03-29 2020-04-07 Arm Limited Branch target address provision
US20210149676A1 (en) * 2019-11-14 2021-05-20 Higon Austin R&D Center Corporation Branch Prediction Method, Branch Prediction Unit and Processor Core

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030041280A1 (en) * 1997-06-09 2003-02-27 Cacheflow, Inc. Network object cache engine
US6601161B2 (en) * 1998-12-30 2003-07-29 Intel Corporation Method and system for branch target prediction using path information
US20040186985A1 (en) * 2003-03-21 2004-09-23 Analog Devices, Inc. Method and apparatus for branch prediction based on branch targets
TWI253588B (en) * 2003-02-16 2006-04-21 Faraday Tech Corp Pipelined architecture with separate pre-fetch and instruction fetch stages

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2018A (en) * 1841-03-26 Joseph francis
US4018A (en) * 1845-05-01 Closing and opening the- entrances to beehives
JP2560889B2 (ja) * 1990-05-22 1996-12-04 日本電気株式会社 マイクロプロセッサ
TW345637B (en) 1994-02-04 1998-11-21 Motorola Inc Data processor with branch target address cache and method of operation a data processor has a BTAC storing a number of recently encountered fetch address-target address pairs.
JP3494484B2 (ja) * 1994-10-12 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
JP3765111B2 (ja) 1995-08-29 2006-04-12 株式会社日立製作所 分岐登録命令を有するプロセッサ
JPH10105401A (ja) * 1996-09-30 1998-04-24 Fujitsu Ltd プロセッサの分岐命令予測装置
US5890008A (en) * 1997-06-25 1999-03-30 Sun Microsystems, Inc. Method for dynamically reconfiguring a processor
US5964870A (en) * 1997-09-22 1999-10-12 Intel Corporation Method and apparatus for using function context to improve branch
US6263427B1 (en) * 1998-09-04 2001-07-17 Rise Technology Company Branch prediction mechanism
US6553488B2 (en) * 1998-09-08 2003-04-22 Intel Corporation Method and apparatus for branch prediction using first and second level branch prediction tables
US6357016B1 (en) 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6732260B1 (en) * 2000-03-06 2004-05-04 Intel Corporation Presbyopic branch target prefetch method and apparatus
US7000096B1 (en) * 2000-08-03 2006-02-14 International Business Machines Corporation Branch prediction circuits and methods and systems using the same
US7200740B2 (en) 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
WO2003003195A1 (en) * 2001-06-29 2003-01-09 Koninklijke Philips Electronics N.V. Method, apparatus and compiler for predicting indirect branch target addresses
US7082520B2 (en) * 2002-05-09 2006-07-25 International Business Machines Corporation Branch prediction utilizing both a branch target buffer and a multiple target table
US7831817B2 (en) * 2003-04-15 2010-11-09 Arm Limited Two-level branch prediction apparatus
KR100528479B1 (ko) * 2003-09-24 2005-11-15 삼성전자주식회사 전력 소모를 감소시키기 위한 분기 예측기 및 구현방법
JP4213181B2 (ja) * 2004-04-21 2009-01-21 富士通株式会社 分岐予測装置、その方法、及びプロセサ
US7437543B2 (en) * 2005-04-19 2008-10-14 International Business Machines Corporation Reducing the fetch time of target instructions of a predicted taken branch instruction
US8935517B2 (en) * 2006-06-29 2015-01-13 Qualcomm Incorporated System and method for selectively managing a branch target address cache of a multiple-stage predictor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030041280A1 (en) * 1997-06-09 2003-02-27 Cacheflow, Inc. Network object cache engine
US6601161B2 (en) * 1998-12-30 2003-07-29 Intel Corporation Method and system for branch target prediction using path information
TWI253588B (en) * 2003-02-16 2006-04-21 Faraday Tech Corp Pipelined architecture with separate pre-fetch and instruction fetch stages
US20040186985A1 (en) * 2003-03-21 2004-09-23 Analog Devices, Inc. Method and apparatus for branch prediction based on branch targets

Also Published As

Publication number Publication date
TW200816046A (en) 2008-04-01
JP5558814B2 (ja) 2014-07-23
KR20090031751A (ko) 2009-03-27
US20080005543A1 (en) 2008-01-03
EP2434393A1 (en) 2012-03-28
CA2654231A1 (en) 2008-01-03
ES2386478T3 (es) 2012-08-21
WO2008003019A3 (en) 2008-05-02
JP2017107578A (ja) 2017-06-15
JP2015144001A (ja) 2015-08-06
EP2035921A2 (en) 2009-03-18
US20120042155A1 (en) 2012-02-16
JP2013229038A (ja) 2013-11-07
KR101074621B1 (ko) 2011-10-17
US8935517B2 (en) 2015-01-13
CN101479700B (zh) 2015-06-03
CN101479700A (zh) 2009-07-08
JP2009543223A (ja) 2009-12-03
RU2009102809A (ru) 2010-08-10
US8782383B2 (en) 2014-07-15
WO2008003019A2 (en) 2008-01-03
EP2035921B1 (en) 2012-06-06
BRPI0713434A2 (pt) 2012-03-13
MX2008016116A (es) 2009-01-20
RU2421783C2 (ru) 2011-06-20
EP2434393B1 (en) 2017-12-20

Similar Documents

Publication Publication Date Title
TWI386850B (zh) 用於主動式分支目標位址快取記憶體管理之方法以及裝置
EP1851620B1 (en) Suppressing update of a branch history register by loop-ending branches
US7487340B2 (en) Local and global branch prediction information storage
JP5734945B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
TWI499975B (zh) 具有遲滯現象下一個提取預測器之訓練
US20070288733A1 (en) Early Conditional Branch Resolution
KR20070118135A (ko) 인덱스당 2개 이상의 분기 타겟 어드레스를 저장하는 분기타겟 어드레스 캐시
US11099850B2 (en) Branch prediction circuitry comprising a return address prediction structure and a branch target buffer structure
CA2659310C (en) Methods and apparatus for reducing lookups in a branch target address cache
US6738897B1 (en) Incorporating local branch history when predicting multiple conditional branch outcomes

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees