TW202307655A - 利用基於解碼分支指令的預測快取條目的反向失效的處理器分支預測電路及相關方法 - Google Patents

利用基於解碼分支指令的預測快取條目的反向失效的處理器分支預測電路及相關方法 Download PDF

Info

Publication number
TW202307655A
TW202307655A TW111106200A TW111106200A TW202307655A TW 202307655 A TW202307655 A TW 202307655A TW 111106200 A TW111106200 A TW 111106200A TW 111106200 A TW111106200 A TW 111106200A TW 202307655 A TW202307655 A TW 202307655A
Authority
TW
Taiwan
Prior art keywords
instruction
branch instruction
branch
execution information
circuit
Prior art date
Application number
TW111106200A
Other languages
English (en)
Inventor
達倫E 史翠
拉米穆罕默德 阿勒謝赫
麥可S 麥歐寧
理查W 杜恩
羅伯特道格拉斯 克蘭西
Original Assignee
美商微軟技術授權有限責任公司
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 美商微軟技術授權有限責任公司 filed Critical 美商微軟技術授權有限責任公司
Publication of TW202307655A publication Critical patent/TW202307655A/zh

Links

Images

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 or 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 or 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

一種利用基於解碼分支指令的預測快取條目的反向失效的處理器分支預測電路。亦揭示了相關方法。先前執行的分支指令的執行資訊從預測快取條目獲得並且與指令解碼電路中產生的解碼資訊進行比較。回應於執行資訊與分支指令的解碼資訊的不匹配而更新在預測快取條目中儲存的分支指令的執行資訊。當指令區塊在指令快取記憶體中失效時,現有的分支預測電路使指令區塊的預測快取條目失效。因此,可不必要地丟棄有效分支指令執行資訊。回應於執行資訊與分支指令的解碼資訊的不匹配而更新預測快取條目維持執行資訊用於更準確的分支預測及更少的閒置處理器循環。

Description

利用基於解碼分支指令的預測快取條目的反向失效的處理器分支預測電路及相關方法
本揭示的技術係關於擷取用於在處理器中執行的指令,並且更特定言之係關於維持用於預測應當擷取哪些指令的分支預測資訊。
電腦處理器執行軟體應用及由以特定次序執行的許多獨立指令組成的其他程式。在執行程式的排序緩衝處理器中,每個指令在一系列硬體單元中的順序階段中執行。處理器排序緩衝可以在系統時鐘的第一循環中開始在第一排序緩衝階段中執行第一指令,並且在系統時鐘的第二循環中開始在第一排序緩衝階段中執行第二指令,同時第一指令在第二排序緩衝階段中。在具有N個處理階段的處理器中,由於第一指令在最後階段中,故N-1個指令在排序緩衝中的不同階段處。
程式的順序指令經常在順序記憶體位置中儲存。分支指令有條件地或無條件地決定程式將繼續順序指令流還是分支到在非順序記憶體位置中儲存的目標指令。可能直到執行分支指令在排序緩衝的最後階段中完成才決定目標指令的位置。在分支到非順序記憶體位置的事件中,在排序緩衝中的分支指令之後的所有部分完成的順序指令不應當完成並且因此從處理器清除。隨後,由於從非順序記憶體位置擷取目的地指令,處理器的至少N-1個循環閒置。
為了避免在分支指令的事件中閒置處理循環,可在處理器中包括分支預測。在一個形式中,分支預測在預測快取記憶體中創建條目並且每個條目包括關於先前已經執行的分支指令的資訊,諸如彼等分支指令的目標。分支預測將待擷取的指令的記憶體位址及關於在預測快取記憶體中儲存的彼等指令的資訊載入擷取佇列。若預測快取記憶體含有具有關於分支指令的資訊的條目,則處理器中的指令擷取電路可避免快取錯誤的下一指令。以此方式,分支預測可以避免閒置處理器循環。然而,與處理器中的其他快取記憶體一樣,預測快取記憶體不具有無限容量來儲存關於程式中的所有分支指令的條目,並且存在用於使現有條目失效以使得可以添加其他條目的各種方法。
本文揭示的示例性態樣包括一種利用基於解碼分支指令的預測快取條目的反向失效的處理器分支預測電路。亦揭示了使預測快取條目反向失效的相關方法。為了增加指令擷取準確性並且減少閒置處理器循環,分支預測電路基於在預測快取條目中儲存的分支指令的執行資訊來預測在先前執行的分支指令之後的目標指令的目標指令位址。在示例性態樣中,從預測快取條目獲得分支指令的執行資訊並且將其提供到指令擷取電路。指令擷取電路擷取分支指令並且指令解碼電路產生分支指令的解碼資訊。處理器分支預測電路基於儲存的執行資訊與在指令解碼電路中產生的解碼資訊的不匹配來更新預測快取條目。在一實例中,藉由指令擷取電路將分支指令的執行資訊提供到指令解碼電路,並且指令解碼電路將執行資訊與產生的解碼資訊進行比較。
更新預測快取記憶體可包括使預測快取條目失效。當指令區塊在指令快取記憶體中失效時,現有的分支預測電路使對應於指令區塊的預測快取條目失效。因此,可能不必要地丟棄繼續有效的分支指令執行資訊。如本文揭示,回應於執行資訊與分支指令的解碼資訊的不匹配而使預測快取條目失效維持執行資訊用於更準確的分支預測及更少的閒置處理器循環。
在示例性態樣中,揭示了一種包含分支預測電路的經配置為執行指令的處理器。分支預測電路經配置為產生分支指令的記憶體位址,基於記憶體位址從預測快取記憶體中的第一條目獲得分支指令的執行資訊,並且將分支指令的執行資訊儲存在擷取佇列中。處理器亦包含經配置基於在擷取佇列中儲存的記憶體位址而擷取分支指令的指令擷取電路。處理器進一步包含經配置為產生分支指令的解碼資訊的指令解碼電路。分支預測電路進一步經配置為基於分支指令的解碼資訊來更新預測快取記憶體中的第一條目。
在另一示例性態樣中,揭示了一種包含經配置為執行指令的處理器電路的積體電路。處理器電路包含分支預測電路,該分支預測電路經配置為產生分支指令的記憶體位址,基於記憶體位址從預測快取記憶體中的第一條目獲得分支指令的執行資訊,並且將分支指令的執行資訊儲存在擷取佇列中。處理器亦包含經配置基於在擷取佇列中儲存的記憶體位址而擷取分支指令的指令擷取電路。處理器進一步包含經配置為產生分支指令的解碼資訊的指令解碼電路。分支預測電路進一步經配置為基於分支指令的解碼資訊來更新預測快取記憶體中的第一條目。
在另一示例性態樣中,揭示了一種在處理器電路中的方法。方法包含產生分支指令的記憶體位址,基於記憶體位址從預測快取記憶體中的第一條目獲得分支指令的執行資訊,並且將分支指令的執行資訊儲存在擷取佇列中。方法進一步包括基於在擷取佇列中儲存的分支指令的執行資訊來擷取分支指令,產生分支指令的解碼資訊,並且基於分支指令的解碼資訊來更新預測快取記憶體中的第一條目。
本文揭示的示例性態樣包括一種利用基於解碼分支指令的預測快取條目的反向失效的處理器分支預測電路。亦揭示了使預測快取條目反向失效的相關方法。為了增加指令擷取準確性並且減少閒置處理器循環,分支預測電路基於在預測快取條目中儲存的分支指令的執行資訊來預測在先前執行的分支指令之後的目標指令的目標指令位址。在示例性態樣中,從預測快取條目獲得分支指令的執行資訊並且將其提供到指令擷取電路。指令擷取電路擷取分支指令並且指令解碼電路產生分支指令的解碼資訊。處理器分支預測電路基於儲存的執行資訊與在指令解碼電路中產生的解碼資訊的不匹配來更新預測快取條目。在一實例中,藉由指令擷取電路將分支指令的執行資訊提供到指令解碼電路,並且指令解碼電路將執行資訊與產生的解碼資訊進行比較。
更新預測快取記憶體可包括使預測快取條目失效。當指令區塊在指令快取記憶體中失效時,現有的分支預測電路使對應於指令區塊的預測快取條目失效。因此,可以不必要地丟棄繼續有效的分支指令執行資訊。如本文揭示,回應於執行資訊與分支指令的解碼資訊的不匹配而使預測快取條目失效維持執行資訊用於更準確的分支預測及更少的閒置處理器循環。
第1圖係示出包括處理器電路102的積體電路100的方塊圖,該處理器電路執行應用或其他軟體程式的指令。處理器電路102可係中央處理單元(central processing unit; CPU)、圖形處理單元(graphics processing unit; GPU)、數位信號處理器(digital signal processor; DSP)、特殊應用處理器、控制器、加速器等。處理器電路102具有排序緩衝架構,其中每個指令藉由指令擷取電路104從記憶體擷取並且在執行電路106中產生結果之前的階段中執行。處理器電路102包括分支預測電路108,該分支預測電路嘗試預測將在應用或程式中執行的指令流,因此彼等指令可以準備好用於處理器電路102執行並且可以避免閒置循環。閒置循環係在處理器中浪費的時間或浪費的循環,其中較少或沒有發生指令處理。
首先呈現對包括分支預測電路108的處理器電路102的操作的論述以提供用於描述包括下文的分支預測電路108的處理器電路102的示例性態樣的觀點。分支預測電路108具有關於當前在執行電路106中執行的指令的資訊,並且決定待擷取的順序指令的區塊的起始記憶體位址,並且將記憶體位址傳遞到指令擷取電路104。當分支預測電路108不正確地預測分支指令110的目標指令時,閒置循環可以在處理器電路102中發生。目標指令係在分支指令110之後執行的下一指令。在處理器電路102的上下文中的分支指令110係可藉由將流導向目標位址處的目標指令來改變指令流的指令,該目標位址不在分支指令110之後的下一順序記憶體位址處。在一些情況下,分支指令110的目標指令可在分支指令110之後的下一順序記憶體位置中。分支指令可無條件地分支到非順序目標指令或可僅當滿足或不滿足條件時分支到非順序目標指令。因此,決定分支指令的目標指令包括決定是否滿足可包括多個因素的條件。決定分支指令的目標指令亦取決於決定目標位址,該目標位址可取決於位址的計算結果。當分支指令110藉由執行電路106執行時,評估分支條件並且決定分支指令110的實際目標指令位址。若分支預測電路108不正確地預測目標指令,則必須清除在處理器電路102中的分支指令110之後的所有指令並且必須擷取實際目標指令。在此情況下,處理器電路102在等待目標指令時閒置。
執行電路106產生分支指令110的執行資訊112。在執行分支指令之後產生的執行資訊112由分支預測電路108用於預測下一次的目標指令將為何,並且在隨後的時間,分支指令在處理器電路102中執行。因此,分支指令的第一次執行的執行資訊112變成分支指令的下一次執行的預測資訊114。
執行資訊112在預測快取記憶體118中的條目116中儲存。執行資訊112特定於特定記憶體位址處的分支指令。條目116包括用於順序指令區塊中的所有分支指令的執行資訊112。因此,條目116對應於順序指令區塊並且用由順序指令區塊的部分虛擬位址創建的位址標記(未在第1圖中圖示)識別。換言之,位址標記可由順序指令區塊的二進制虛擬起始位址的一些位元創建,或由識別順序指令區塊的另一虛擬位址創建。
在本文揭示的示例性態樣中,將在對應於順序指令區塊的條目116中的執行資訊112提供到具有指令的順序區塊的記憶體位址資訊的指令擷取電路104。指令擷取電路104擷取在包括分支指令110的指令的順序區塊中的指令。指令擷取電路104隨後將分支指令110及分支指令110的執行資訊112提供到指令解碼電路120。指令解碼電路120解碼分支指令110並且產生解碼資訊122。解碼分支指令110包括決定及分支指令110的指令類型,並且識別分支指令110的欄位。解碼亦包括識別此種欄位中的資訊,諸如運算元、暫存器或位址。
指令解碼電路120將分支指令110的解碼資訊122與分支指令110的執行資訊112進行比較。若在指令解碼電路120中產生的解碼資訊122與分支指令110的執行資訊112之間存在不匹配,則執行資訊112不可以可靠地用於提供關於分支指令的資訊,諸如目標指令。指令解碼電路120通知分支預測電路108不匹配,並且分支預測電路108更新包括分支指令的執行資訊112的條目116。在實例中,更新可包括更新條目116以指示執行資訊112不再有效(例如,使執行資訊112失效)。更新條目116亦可包括更新執行資訊112以指示僅執行資訊112的一部分無效。更新條目116可包括指示整個條目116無效。更新執行資訊112可包括改變執行資訊。在示例性態樣中,分支處理電路108基於在指令解碼電路120中產生的分支指令的解碼資訊112來更新在預測快取記憶體118中儲存的執行資訊112。
繼續參考第1圖,更詳細描述執行包括順序指令區塊的程式的處理器電路102的操作,該等順序指令包括分支指令110。在此上下文中,程式指執行任務的任何指令集,例如,該任務可包括應用、常式、子常式、及腳本。當分支預測電路108產生待執行的指令的位址時,可到達分支指令110作為順序指令區塊中的下一指令、作為先前分支指令的目標、或藉由另一方法或演算法來執行。然而,藉由一些方法,在執行程式期間,分支預測電路108到達分支指令110的記憶體位址。在此方面,分支預測電路108產生分支指令110的記憶體位址,作為待擷取的指令的位址。分支預測電路108接下來決定預測快取記憶體118是否包括條目116,該條目包括分支指令110的執行資訊112。例如,分支預測電路108由包括分支指令110的順序指令區塊的部分虛擬位址產生位址標記(未在第1圖中圖示),並且搜尋預測快取記憶體118的具有對應位址標記的條目116。
若分支指令110先前已經在執行電路106中執行並且尚未失效,則基於位址標記發找到包括執行資訊112的條目116。以此方式,分支預測電路108基於分支指令110的記憶體位址而從預測快取記憶體118中的條目116獲得分支指令110的執行資訊112。在其中執行資訊112已經失效的一個實例中,具有位址標記的條目116可在預測快取記憶體118中找到,但可能不含有分支指令110的有效執行資訊112。
若分支指令110先前尚未在執行電路106中執行,則分支預測電路108決定條目116不存在於預測快取記憶體118中或條目116不包括分支指令110的執行資訊112。在缺乏分支指令110的執行資訊112時,分支預測電路108可決定分支指令110的目標指令的目標位址係在分支指令110之後的下一順序記憶體位址。
分支預測電路108將分支指令110的記憶體位址資訊儲存在擷取佇列124中。指令擷取電路104從擷取佇列124獲得記憶體位址資訊及分支指令110的執行資訊112(若有)。指令擷取電路104發佈記憶體位址處的分支指令110的讀取指令。包括分支指令110的順序指令區塊可在指令快取記憶體126中或在指令記憶體128中找到。若包括分支指令110的順序指令區塊最初未在指令快取記憶體126中找到,則隨著將順序指令區塊從指令記憶體128讀取到指令擷取電路104中,可將順序指令區塊儲存到指令快取記憶體126中。以此方式,指令擷取電路104基於在擷取佇列124中儲存的記憶體位址來擷取分支指令110。
除了分支指令110之外,指令擷取電路104將分支指令110的執行資訊112提供到指令解碼電路120。可藉由與分支指令110所採取者不同的路徑將執行資訊112傳遞到指令解碼電路120。指令解碼電路120解碼分支指令110並且產生分支指令110的解碼資訊122(例如,基於解碼)。指令解碼電路120將分支指令110的執行資訊112與分支指令110的解碼資訊122進行比較。基於比較,指令解碼電路120決定執行資訊112是否匹配分支指令110的解碼資訊122。
在執行資訊112匹配分支指令110的解碼資訊122的情況下,對處理器電路102而言預測快取記憶體118中的執行資訊112看來係正確的。因此,分支預測電路108維持預測快取記憶體118的第一條目116中的執行資訊112。在執行資訊112不匹配解碼資訊122的情況下,指令解碼電路120通知分支預測電路108不匹配。在一個實例中,指令解碼電路120產生不匹配指示130,指示解碼資訊122不匹配分支指令110的執行資訊112。作為實例,不匹配指示130可係在指令解碼電路120與分支預測電路108之間的信號線(未圖示)上的電壓位準。
分支預測電路108接收不匹配指示130。分支預測電路108回應於不匹配指示130而更新預測快取記憶體118中的條目116,其中更新條目116包括指示分支指令110的執行資訊112無效或不正確。在一個實例中,僅將分支指令110的執行資訊112指示為在條目116中無效。在一個實例中,僅將執行資訊112的僅一部分指示為無效。在另一實例中,更新第一條目116可包括從條目116刪除執行資訊112。在另一實例中,更新條目116可包括在條目116中重設執行資訊112有效的指示。在另一實例中,將條目116指示為無效,其使其中儲存的所有執行資訊112失效。在此實例中,更新第一條目116可包括從預測快取記憶體118中刪除條目116或以其他方式指示條目116無效,使得在預測快取記憶體118中不存在針對順序指令的對應區塊中的任何分支指令(110或其他)執行資訊112。
如第1圖所示,處理器電路102包括額外階段132,該等額外階段在指令解碼電路120與執行電路106之間包括重命名電路132A、暫存器存取(RACC)電路132B、及排程器電路132C。藉由寫入電路134將在執行電路106中產生的結果寫入記憶體。分支指令110在到達執行106之前經由階段132處理,其中執行分支指令110並且產生執行資訊112。在執行電路106第一次執行分支指令110時(例如,自從處理器電路102供電或重設以來的第一次),分支預測電路108未找到在預測快取記憶體118中儲存的分支指令110的執行資訊112。在此情況下,分支預測電路108決定分支指令110的目標指令係在分支指令110之後的下一順序位址,並且不將執行資訊112提供到指令解碼電路120。當分支指令110的執行資訊112最初由執行電路106產生時,執行資訊112可包括不同目標位址,該目標位址非分支指令110之後的下一順序位址。執行電路106將分支指令110的執行資訊112提供到分支預測電路108並且分支預測電路108將分支指令110的執行資訊112儲存在預測快取記憶體118中的條目116中。
在後續執行分支指令110時(例如,歸因於程式迴圈),分支預測電路108找到條目116中的執行資訊112,並且基於產生的執行資訊112來決定分支指令110的目標指令的記憶體位址。在此情況下,解碼資訊122可匹配在第一次執行時產生的執行資訊112,其儲存在預測快取記憶體118中,並且執行資訊112在預測快取記憶體118中維持。
出於各種原因,諸如影響迴圈條件的改變、自修改軟體、同位誤差等,解碼資訊122可能不匹配執行資訊112。作為實例,解碼資訊122可包括與執行資訊110不同的目標指令。在此情況下,指令解碼電路120通知分支預測電路108不匹配。通知分支預測電路108不匹配可包括例如更新條目116以指示分支指令110的執行資訊112無效。
第2圖係示出對應於第1圖中的預測快取記憶體118的預測快取記憶體200的方塊圖。預測快取記憶體200包括條目202,該等條目可係第1圖中的條目116。條目202的每一者對應於開始於虛擬記憶體位址的順序指令區塊。基於虛擬記憶體位址的部分的位址標記204識別條目202的每一者。條目202可包括順序指令區塊中的一或多個分支指令的執行資訊206。執行資訊206(其可係第1圖中的執行資訊112)包括亦在第1圖的解碼資訊122中產生的分支指令的特徵。在第2圖中的實例中,執行資訊206包括分支指令110的指令類型208的識別符、分支指令的指令大小210、及指示分支指令110與順序指令區塊的開始虛擬記憶體位址的位址偏移的指令偏移212。第2圖中的執行資訊206亦包括分支指令110的目標位址214及預測快取記憶體118中的條目116的條目大小216。因此,第1圖中的指令解碼電路120回應於在分支指令的執行資訊中的第一指令類型208與分支指令110的解碼資訊中的第二指令類型之間的不匹配來產生不匹配指示130。或者,第1圖中的指令解碼電路120回應於在執行資訊中的第一指令大小210與解碼資訊122中的第二指令大小之間的不匹配來產生不匹配指示130。不匹配指示130亦可指示在指令偏移212與解碼資訊122中的指令偏移之間的不匹配或在目標位址214與解碼資訊122中的目標位址之間的不匹配。分支預測電路108可使用條目大小216來管理預測快取記憶體118中的條目116的更新。執行資訊206可包括在本文中未具體提及但當解碼分支指令110時可藉由指令解碼電路120產生的其他欄位。不匹配指示130可歸因於關於執行資訊112的上文實例的任一者或未具體提及的任何其他欄位的不匹配。
第3A圖至第3C圖係示出執行分支指令110並且基於分支指令110的解碼資訊122來更新預測快取記憶體118的條目116中的執行資訊112的第1圖中的處理器的方法300的流程圖。參考如第1圖中標記的特徵描述方法300。方法300包括產生分支指令110的記憶體位址(方塊302)並且決定預測快取記憶體118是否包括第一條目116,該第一條目包括分支指令110的執行資訊112(方塊304)。方法300進一步包括,當預測快取記憶體118包括第一條目116時,該第一條目包括分支指令110的執行資訊112,基於記憶體位址來從預測快取記憶體118中的第一條目116獲得分支指令110的執行資訊112(方塊306)。方法300包括將分支指令110的執行資訊112儲存在擷取佇列124中(方塊308)並且基於擷取佇列124中的分支指令110的執行資訊112來擷取分支指令110(方塊310)。第3A圖中的方法300進一步包括將分支指令110的執行資訊112提供到指令解碼電路120(方塊312)並且產生分支指令110的解碼資訊122(方塊314)。
第3B圖中示出的方法300包括將分支指令110的執行資訊112與分支指令110的解碼資訊122進行比較(方塊316)並且決定分支指令110的執行資訊112是否匹配分支指令110的解碼資訊122(方塊318)。方法300進一步包括,當分支指令110的執行資訊112匹配分支指令110的解碼資訊122時,將執行資訊112維持在預測快取記憶體118中的第一條目116中(方塊320)。方法300進一步包括,當分支指令110的執行資訊112不匹配解碼資訊122時,產生不匹配指示130,指示分支指令110的執行資訊112不匹配分支指令110的解碼資訊122(方塊322)。第3B圖中的方法300進一步包括接收分支預測電路108中的不匹配指示130(方塊324)並且回應於不匹配指示130來基於分支指令110的解碼資訊122更新預測快取記憶體118中的第一條目116(方塊326)。
返回參考第3A圖中的方塊304,當預測快取記憶體118不包括第一條目116時,該第一條目包括分支指令110的執行資訊112,第3C圖中示出的方法300包括決定分支指令110的第一目標指令的第一目標位址係在分支指令110之後的下一順序位址(方塊328)。方法300進一步包括產生包括分支指令110的第二目標指令的第二目標位址的分支指令的執行資訊112(方塊330)。第3C圖中的方法300亦包括將分支指令110的執行資訊112儲存在預測快取記憶體118中的第一條目116中(方塊332)。
第4圖係包括現有處理器電路402的積體電路400的方塊圖。與第1圖中的積體電路100相對地呈現處理器電路402的特徵以闡明上文揭示的示例性態樣。處理器電路402包括預測快取記憶體404,該預測快取記憶體404包括各自對應於順序指令區塊的條目406。處理器亦包括從指令擷取電路412接收失效指示410的分支預測電路408。失效指示410指示在處理器電路402的指令快取記憶體414中的指令區塊失效。失效指示410亦使對應於在指令快取記憶體414中失效的指令區塊的條目406的一者失效。因此,每次順序指令的對應區塊在指令快取記憶體414中失效時可刪除在預測快取記憶體404中儲存的執行資訊416。在其中將相同指令區塊讀回指令快取記憶體414中並且指令區塊中的分支指令自從使預測快取記憶體404失效以來第一次執行的每個時機,不存在可用於預測快取記憶體404中的分支預測電路408的對應執行資訊416。藉由分支預測電路408預測而不受益於執行資訊416的目標指令更可能係不正確,從而導致處理器電路402在擷取正確目標指令時閒置若干循環。處理器電路402的其他特徵可對應於處理器102的特徵並且在本文中不進一步論述。
分支指令可係指令區塊中的所有指令的僅小部分,並且不維持關於執行的非分支指令的資訊。此外,與分支指令本身在指令快取記憶體414中佔用相比,分支指令的執行資訊416佔用預測快取記憶體404中的更少空間。因此,儲存執行資訊416所需的儲存量相對較小。在第1圖中的處理器電路102中,甚至當指令快取記憶體126中的對應指令區塊失效時,執行資訊112在預測快取記憶體118中的條目116中維持。藉由保留的執行資訊112提供的益處抵消了預測快取記憶體118中需要的儲存量犧牲。如上文論述,在反向失效的預測快取記憶體118中的條目116亦可在其他情況下或根據需要使用本文未揭示的演算法失效或清除,諸如,例如,為最近執行的分支指令留出空間。
第5圖係包括處理器502(例如,微處理器)的示例性的基於處理器的系統500的方塊圖,該處理器包括指令處理電路504。基於處理器的系統500可係在電子板卡中包括的一或多個電路,諸如印刷電路板(printed circuit board; PCB)、伺服器、個人電腦、桌上型電腦、膝上型電腦、個人數位助理(personal digital assistant; PDA)、計算平板、行動裝置、或任何其他裝置,並且可表示例如伺服器、或使用者的電腦。在此實例中,基於處理器的系統500包括處理器502。處理器502表示一或多個通用處理電路,諸如微處理器、中央處理單元、或類似者。更特定地,處理器502可係EDGE指令集微處理器、或實施指令集的其他處理器,該指令集支援顯式消費者命名用於通訊從執行生產者指令獲得的產生值。處理器502經配置為執行指令中的處理邏輯,用於執行本文論述的操作及步驟。在此實例中,處理器502包括指令快取記憶體506,用於可藉由指令處理電路504存取的指令的暫時、快速存取記憶體儲存。從記憶體(諸如從系統匯流排510上的主記憶體508)擷取或預擷取的指令在指令快取記憶體506中儲存。資料可儲存在耦合到系統匯流排510的快取記憶體512中,用於由處理器502的低時延存取。指令處理電路504經配置為處理擷取到指令快取記憶體506中的指令並且處理用於執行的指令。
處理器502及主記憶體508耦合到系統匯流排510並且可以使在基於處理器的系統500中包括的周邊裝置相互耦合。如所熟知,處理器502藉由在系統匯流排510上交換位址、控制、及資料資訊來與此等其他裝置通訊。例如,處理器502可以將匯流排交易請求通訊到主記憶體508中的記憶體控制器514,作為從裝置的實例。儘管未在第5圖中示出,但可以提供多個系統匯流排510,其中每個系統匯流排構成不同結構。在此實例中,記憶體控制器514經配置為將記憶體存取請求提供到主記憶體508中的記憶體陣列516。記憶體陣列516由用於儲存資料的儲存位元單元的陣列構成。主記憶體508可係唯讀記憶體(read-only memory; ROM)、快閃記憶體、動態隨機存取記憶體(dynamic random-access memory; DRAM)、諸如同步DRAM(SDRAM)等,及靜態記憶體(例如,快閃記憶體、靜態隨機存取記憶體(static random-access memory; SRAM)等),作為非限制性實例。
其他裝置可以連接到系統匯流排510。如第5圖中示出,此等裝置可以包括主記憶體508、一或多個輸入裝置518、一或多個輸出裝置520、數據機522、及一或多個顯示控制器524,作為實例。輸入裝置518可以包括任何類型的輸入裝置,包括但不限於輸入鍵、交換器、語音處理器等。輸出裝置520可以包括任何類型的輸出裝置,包括但不限於音訊、視訊、其他視覺指示燈等。數據機522可以係經配置為允許將資料交換到網路526及從網路526交換資料的任何裝置。網路526可以係任何類型的網路,包括但不限於有線或無線網路、私人或公眾網絡、區域網路(local area network; LAN)、無線區域網路(wireless local area network; WLAN)、廣域網路(wide area network; WAN)、BLUETOOTH™網路、及網際網路。數據機522可以經配置為支援期望的任何類型的通訊協定。處理器502亦可經配置為存取在系統匯流排510上的顯示器控制器524以控制發送到一或多個顯示器528的資訊。顯示器528可以包括任何類型的顯示器,包括但不限於陰極射線管(cathode ray tube; CRT)、液晶顯示器(liquid crystal display; LCD)、電漿顯示器等。
第5圖中的基於處理器的系統500可包括將由處理器502執行的指令530的集合,用於根據指令所期望的任何應用。指令530可在主記憶體508、處理器502、及/或指令快取記憶體506中作為非暫時性電腦可讀取媒體532的實例儲存。指令530亦可在其執行期間完全或至少部分駐留在主記憶體508內及/或處理器502內。指令530可進一步經由數據機522在網路526上發送或接收,使得網路526包括電腦可讀取媒體532。
儘管電腦可讀取媒體532在示例性實施例中圖示為單個媒體,但術語「電腦可讀取媒體」應當被認為包括儲存一或多個指令集的單個媒體或多個媒體(例如,集中式或分散式資料庫,及/或相關聯的快取記憶體及伺服器)。術語「電腦可讀取媒體」亦應當被認為包括能夠儲存、編碼、或攜帶指令集用於由處理裝置執行並且導致處理裝置執行本文揭示的實施例的任何一或多個方法論的任何媒體。術語「電腦可讀取媒體」由此應當被認為包括但不限於固態記憶體、光學媒體、及磁性媒體。
在基於處理器的系統500中的處理器502可包括分支預測電路,該分支預測電路基於與分支指令的解碼資訊進行比較而使在預測快取記憶體中儲存的分支指令的執行資訊反向失效,如第1圖中示出。
本文揭示的實施例包括各個步驟。本文揭示的實施例的步驟可藉由硬體部件形成或可體現在機器可執行指令中,該等指令可用於導致用指令程式設計通用或專用處理器以執行步驟。或者,步驟可由硬體及軟體的組合執行。
本文揭示的實施例可作為電腦程式產品、或作為軟體提供,該電腦程式產品、或軟體可包括其上儲存有指令的機器可讀取媒體(或電腦可讀取媒體),該等指令可用於程式設計電腦系統(或其他電子裝置)以根據本文揭示的實施例執行過程。機器可讀取媒體包括用於儲存或發送呈可藉由機器(例如,電腦)讀取的形式的資訊的任何機制。例如,機器可讀取媒體包括:機器可讀取儲存媒體(例如,ROM、隨機存取記憶體(random access memory; 「RAM」)、磁碟儲存媒體、光學儲存媒體、快閃記憶體裝置等);以及類似者。
除非另外具體聲明並且如從先前論述中顯而易見,將瞭解,在整個描述中,利用術語諸如「處理」、「計算」、「決定」、「顯示」、或類似者的論述指將表示為電腦系統的暫存器內的實體(電子)量的資料及記憶體操控及轉換為類似地表示為電腦系統的記憶體或暫存器或其他此種資訊儲存、傳輸、或顯示裝置內的實體量的其他資料的電腦系統或類似電子計算裝置的動作及過程。
本文所呈現的演算法及顯示器並非固有地關於任何特定電腦或其他設備。各種系統可根據本文的教示與程式一起使用,或可證實構造更專用的設備來執行需要的方法步驟係方便的。各種此等系統所需的結構將從上文的描述中顯而易見。此外,本文描述的實施例未參考任何特定程式設計語言描述。將瞭解,各種程式設計語言可用於實施如本文描述的實施例的教示。
熟習此項技術者將進一步瞭解到,結合本文揭示的實施例描述的各種說明性的邏輯區塊、模組、電路、及演算法可實施為電子硬體、在記憶體中或在另一電腦可讀取媒體中儲存並且由處理器或其他處理裝置執行的指令、或兩者的組合。作為實例,本文描述的分散式天線系統的部件可在任何電路、硬體部件、積體電路(IC)、或IC晶片中採用。本文揭示的記憶體可係任何類型及大小的記憶體並且可經配置為儲存期望的任何類型的資訊。為了清楚地說明此可互換性,上文已經通常關於其功能來描述各個說明性的部件、區塊、模組、電路、及步驟。如何實施此種功能性取決於特定應用、設計選擇、及/或對整個系統賦予的設計限制。熟習此項技術者可針對每個特定應用以各種方式實施所描述的功能,但此種實施方式決策不應當解釋為導致脫離本實施例的範疇。
結合本文揭示的實施例描述的各種說明性的邏輯區塊、模組、及電路可利用處理器、數位信號處理器(Digital Signal Processor; DSP)、特殊應用積體電路(Application Specific Integrated Circuit; ASIC)、現場可程式設計閘陣列(Field Programmable Gate Array; FPGA)、或其他可程式設計邏輯裝置、個別閘極或電晶體邏輯、個別硬體部件、或經設計為執行本文描述的功能的其任何組合來實施或執行。此外,控制器可係處理器。處理器可係微處理器,但在替代方案中,處理器可係任何習知處理器、控制器、微控制器、或狀態機。處理器亦可實施為計算裝置的組合(例如,DSP與微處理器的組合、複數個微處理器、一或多個微處理器與DSP核心結合、或任何其他此種配置)。
本文揭示的實施例可體現在硬體及在硬體中儲存的指令中,並且例如可駐留在RAM、快閃記憶體、ROM、電子可程式設計ROM (EPROM)、電子可抹除可程式設計ROM (EEPROM)、暫存器、硬碟、可移除光碟、CD-ROM、或在本領域中已知的任何其他形式的電腦可讀取媒體中。示例性儲存媒體耦合到處理器,使得處理器可以從儲存媒體讀取資訊並且將資訊寫入儲存媒體。在替代方案中,儲存媒體可與處理器一體。處理器及儲存媒體可駐留在ASIC中。ASIC可駐留在遠端站中。在替代方案中,處理器及儲存媒體可作為離散部件駐留在遠端站、基地台、或伺服器中。
亦注意到,描述在本文的示例性實施例的任一者中描述的操作步驟以提供實例及論述。所描述的操作可以不同於所示出序列的數個不同序列執行。此外,在單個操作步驟中描述的操作可實際上在多個不同步驟中執行。此外,可組合在示例性實施例中論述的一或多個操作步驟。熟習此項技術者亦將理解,資訊及訊號可使用各種技藝和技術的任一者來表示。例如,在整個上文描述中可係參考的資料、指令、命令、資訊、信號、位元、符號、及晶片可由電壓、電流、電磁波、磁場或粒子、光場或粒子、或其任何組合來表示。
除非另外明確表述,否則決不意欲將本文闡述的任何方法解釋為要求以具體次序執行其步驟。由此,在方法請求項不實際上記載其步驟所遵循的次序、或在申請專利範圍或描述中沒有另外具體聲明步驟限於具體次序的情況下,決不意欲推斷任何特定次序。
熟習此項技術者將顯而易見,可以進行各種修改及變化,而不脫離本發明的精神或範疇。由於整合本發明的精神及實質的所揭示實施例的修改、組合、子組合及變化可為熟習此項技術者明白,本發明應當被解釋為包括在所附申請專利範圍的範疇內的任何內容及等效物。
100:積體電路 102:處理器電路 104:指令擷取電路 106:執行電路 108:分支預測電路 110:分支指令 112:執行資訊 114:預測資訊 116:條目 118:預測快取記憶體 120:指令解碼電路 122:解碼資訊 124:擷取佇列 126:指令快取記憶體 128:指令記憶體 130:不匹配指示 132:額外階段 132A:重命名電路 132B:暫存器存取(RACC)電路 132C:排程器電路 134:寫入電路 200:預測快取記憶體 202:條目 204:位址標記 206:執行資訊 208:指令類型 210:指令大小 212:指令偏移 214:目標位址 216:條目大小 300:方法 302:方塊 304:方塊 306:方塊 308:方塊 310:方塊 312:方塊 314:方塊 316:方塊 318:方塊 320:方塊 322:方塊 324:方塊 326:方塊 328:方塊 330:方塊 332:方塊 400:積體電路 402:處理器電路 404:預測快取記憶體 406:條目 408:分支預測電路 410:失效指示 412:指令擷取電路 414:指令快取記憶體 416:執行資訊 500:基於處理器的系統 502:處理器 504:指令處理電路 506:指令快取記憶體 508:主記憶體 510:系統匯流排 512:快取記憶體 514:記憶體控制器 516:記憶體陣列 518:輸入裝置 520:輸出裝置 522:數據機 524:顯示控制器 526:網路 530:指令 532:非暫時性電腦可讀取媒體
整合在本說明書中並且形成本說明書的一部分的附圖圖式示出了本揭示的若干態樣,並且連同描述一起用於解釋本揭示的原理。
第1圖係示出包括處理器電路的積體電路的方塊圖,該處理器電路包括基於分支指令的解碼資訊來更新在預測快取記憶體中儲存的分支指令的執行資訊的分支預測電路;
第2圖係示出包括各自對應於指令區塊的條目的預測快取記憶體的方塊圖;
第3A圖至第3C圖係示出第1圖中的處理器電路的方法的流程圖,該處理器電路執行分支指令並且基於分支指令的解碼資訊來更新在處理器快取條目中儲存的分支指令的執行資訊;
第4圖係包括分支預測電路的處理器電路的方塊圖,該分支預測電路回應於指令區塊在指令快取記憶體中失效而使對應於指令區塊的預測快取條目失效;以及
第5圖係包括耦合到系統匯流排的複數個裝置的示例性基於處理器的系統的方塊圖,其中處理器包括基於分支指令的解碼資訊來更新在預測快取記憶體中儲存的分支指令的執行資訊的分支預測電路,如在第1圖所示的處理器中。
國內寄存資訊(請依寄存機構、日期、號碼順序註記) 無 國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記) 無
100:積體電路
102:處理器電路
104:指令擷取電路
106:執行電路
108:分支預測電路
110:分支指令
112:執行資訊
114:預測資訊
116:條目
118:預測快取記憶體
120:指令解碼電路
122:解碼資訊
124:擷取佇列
126:指令快取記憶體
128:指令記憶體
130:不匹配指示
132:額外階段
132A:重命名電路
132B:暫存器存取(RACC)電路
132C:排程器電路
134:寫入電路

Claims (20)

  1. 一種經配置為執行指令的處理器電路,該處理器電路包含: 一分支預測電路,經配置為: 產生一分支指令的一記憶體位址; 基於該記憶體位址從一預測快取記憶體中的一第一條目獲得該分支指令的執行資訊;以及 將該分支指令的該執行資訊儲存在一擷取佇列中; 一指令擷取電路,經配置為基於在該擷取佇列中儲存的該記憶體位址來擷取該分支指令;以及 一指令解碼電路,經配置為產生該分支指令的解碼資訊; 其中該分支預測電路進一步經配置為基於該分支指令的該解碼資訊來更新該預測快取記憶體中的該第一條目。
  2. 如請求項1所述的處理器電路,其中該分支預測電路進一步經配置為: 決定該預測快取記憶體中的該第一條目不包含該分支指令的該執行資訊;以及 決定該分支指令的一第一目標指令的一第一目標位址係在該分支指令之後的一下一順序位址。
  3. 如請求項2所述的處理器電路,進一步包含經配置為產生該分支指令的該執行資訊的一執行電路,其中該分支指令的該執行資訊包含該分支指令的一第二目標指令的一第二目標位址。
  4. 如請求項3所述的處理器電路,其中該分支預測電路進一步經配置為將該分支指令的該執行資訊儲存在該預測快取記憶體中的該第一條目中。
  5. 如請求項1所述的處理器電路,其中: 該分支預測電路進一步經配置為決定該預測快取記憶體中的該第一條目包含該分支指令的該執行資訊;以及 該指令擷取電路進一步經配置為將該分支指令的該執行資訊提供到該指令解碼電路。
  6. 如請求項5所述的處理器電路,其中該指令解碼電路進一步經配置為: 將該分支指令的該執行資訊與該分支指令的該解碼資訊進行比較;以及 產生一不匹配指示,指示該分支指令的該解碼資訊不匹配該分支指令的該執行資訊。
  7. 如請求項6所述的處理器電路,該指令解碼電路進一步經配置為回應於在該分支指令的該執行資訊中的一第一指令類型與該分支指令的該解碼資訊中的一第二指令類型之間的一不匹配而產生該不匹配指示。
  8. 如請求項6所述的處理器電路,該指令解碼電路進一步經配置為回應於在該分支指令的該執行資訊中的一第一大小與該分支指令的該解碼資訊中的一第二大小之間的一不匹配而產生該不匹配指示。
  9. 如請求項6所述的處理器電路,該分支預測電路進一步經配置為回應於指示該分支指令的該解碼資訊不匹配該分支指令的該執行資訊的該不匹配指示來更新該第一條目,其中更新該第一條目包含指示該分支指令的該執行資訊無效。
  10. 如請求項9所述的處理器電路,其中更新該第一條目包含指示該第一條目無效。
  11. 如請求項1所述的處理器電路,其中: 該預測快取記憶體中的該第一條目包含在包括該分支指令的指令的一區塊中的分支指令的該執行資訊;以及 該分支預測電路進一步經配置為回應於指令的該區塊對應於在一指令快取記憶體中失效的該第一條目,維持該預測快取記憶體中的該第一條目以指示該分支指令的該執行資訊有效。
  12. 一種包含經配置為執行指令的一處理器電路的積體電路,該處理器電路包含: 一分支預測電路,經配置為: 產生一分支指令的一記憶體位址; 基於該記憶體位址從一預測快取記憶體中的一第一條目獲得該分支指令的執行資訊;以及 將該分支指令的該執行資訊儲存在一擷取佇列中: 一指令擷取電路,經配置為基於在該擷取佇列中儲存的該記憶體位址來擷取該分支指令;以及 一指令解碼電路,經配置為產生該分支指令的解碼資訊; 其中該分支預測電路進一步經配置為基於該分支指令的該解碼資訊來更新該預測快取記憶體中的該第一條目。
  13. 一種在一處理器電路中的方法,該方法包含以下步驟: 產生一分支指令的一記憶體位址; 基於該記憶體位址從一預測快取記憶體中的一第一條目獲得該分支指令的執行資訊; 將該分支指令的該執行資訊儲存在一擷取佇列中; 基於在該擷取佇列中儲存的該分支指令的該執行資訊來擷取該分支指令; 產生該分支指令的解碼資訊;以及 基於該分支指令的該解碼資訊來更新該預測快取記憶體中的該第一條目。
  14. 如請求項13所述的方法,進一步包含以下步驟: 決定該預測快取記憶體中的該第一條目包含該分支指令的該執行資訊;以及 將該分支指令的該執行資訊提供到一指令解碼電路。
  15. 如請求項14所述的方法,進一步包含以下步驟: 將該分支指令的該執行資訊與該分支指令的該解碼資訊進行比較;以及 產生一不匹配指示,指示該分支指令的該解碼資訊不匹配該分支指令的該執行資訊。
  16. 如請求項15所述的方法,進一步包含以下步驟: 更新該預測快取記憶體中的該第一條目以指示該第一條目中的該執行資訊回應於該不匹配指示而無效。
  17. 如請求項16所述的方法,進一步包含以下步驟:回應於在該分支指令的該執行資訊中的一第一指令類型與該分支指令的該解碼資訊中的一第二指令類型之間的一不匹配而產生該不匹配指示。
  18. 如請求項16所述的方法,進一步包含以下步驟:回應於在該分支指令的該執行資訊中的該分支指令的一第一大小與該解碼資訊中的該分支指令的一第二大小之間的一不匹配而產生該不匹配指示。
  19. 如請求項16所述的方法,進一步包含以下步驟:回應於該不匹配指示來更新該第一條目,其中更新該第一條目包含指示該第一條目無效。
  20. 如請求項14所述的方法,進一步包含以下步驟: 回應於指令的一區塊在一指令快取記憶體中失效,維持該預測快取記憶體中的該第一條目以指示該第一條目中的該執行資訊有效; 其中該預測快取記憶體中的該第一條目包含指令的該區塊中的分支指令的該執行資訊。
TW111106200A 2021-03-04 2022-02-21 利用基於解碼分支指令的預測快取條目的反向失效的處理器分支預測電路及相關方法 TW202307655A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/192,583 US11487545B2 (en) 2021-03-04 2021-03-04 Processor branch prediction circuit employing back-invalidation of prediction cache entries based on decoded branch instructions and related methods
US17/192,583 2021-03-04

Publications (1)

Publication Number Publication Date
TW202307655A true TW202307655A (zh) 2023-02-16

Family

ID=80684045

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111106200A TW202307655A (zh) 2021-03-04 2022-02-21 利用基於解碼分支指令的預測快取條目的反向失效的處理器分支預測電路及相關方法

Country Status (5)

Country Link
US (1) US11487545B2 (zh)
EP (1) EP4302184A1 (zh)
KR (1) KR20230150358A (zh)
TW (1) TW202307655A (zh)
WO (1) WO2022187012A1 (zh)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6393038A (ja) 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US6427192B1 (en) * 1998-09-21 2002-07-30 Advanced Micro Devices, Inc. Method and apparatus for caching victimized branch predictions
US6550004B1 (en) * 1999-11-05 2003-04-15 Ip-First, Llc Hybrid branch predictor with improved selector table update mechanism
US7783871B2 (en) * 2003-06-30 2010-08-24 Intel Corporation Method to remove stale branch predictions for an instruction prior to execution within a microprocessor
CN100339825C (zh) 2004-02-03 2007-09-26 智慧第一公司 将多余的分支目标地址高速缓存项目无效化的装置及方法
US20120311308A1 (en) * 2011-06-01 2012-12-06 Polychronis Xekalakis Branch Predictor with Jump Ahead Logic to Jump Over Portions of Program Code Lacking Branches

Also Published As

Publication number Publication date
US11487545B2 (en) 2022-11-01
EP4302184A1 (en) 2024-01-10
WO2022187012A1 (en) 2022-09-09
KR20230150358A (ko) 2023-10-30
US20220283819A1 (en) 2022-09-08

Similar Documents

Publication Publication Date Title
JP2003005956A (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
US9830152B2 (en) Selective storing of previously decoded instructions of frequently-called instruction sequences in an instruction sequence buffer to be executed by a processor
US11068273B2 (en) Swapping and restoring context-specific branch predictor states on context switches in a processor
CN115993992A (zh) 提前取出分支目标缓冲器
CN104603747B (zh) 响应于分支预测表调换指令而调换分支方向历史及相关的系统和方法
TW202307652A (zh) 用於最佳化迴圈緩衝效能之採用處理器中的迴圈特性預測的迴圈緩衝
JP2022545848A (ja) 投機的データ要求が非投機的になるまでの、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新の延期
CN106557304B (zh) 用于预测子程序返回指令的目标的取指单元
EP3924814A1 (en) Reach-based explicit dataflow processors, and related computer-readable media and methods
US11698789B2 (en) Restoring speculative history used for making speculative predictions for instructions processed in a processor employing control independence techniques
TW202307655A (zh) 利用基於解碼分支指令的預測快取條目的反向失效的處理器分支預測電路及相關方法
US11789740B2 (en) Performing branch predictor training using probabilistic counter updates in a processor
US11915002B2 (en) Providing extended branch target buffer (BTB) entries for storing trunk branch metadata and leaf branch metadata
US20240201999A1 (en) Accelerating fetch target queue (ftq) processing in a processor
US11928474B2 (en) Selectively updating branch predictors for loops executed from loop buffers in a processor
US11995443B2 (en) Reuse of branch information queue entries for multiple instances of predicted control instructions in captured loops in a processor
TW202429274A (zh) 在處理器中執行無儲存指令快取命中預測
CN114761924A (zh) 基于对废弃寄存器编码指令的处理来废弃存储在处理器中的寄存器中的值
KR20210109014A (ko) 명령어 밀접 결합된 메모리 및 명령어 캐시 액세스 예측