TW202416125A - 提供用於儲存主幹分支元資料及葉分支元資料的擴展分支目標緩衝(btb)項目 - Google Patents

提供用於儲存主幹分支元資料及葉分支元資料的擴展分支目標緩衝(btb)項目 Download PDF

Info

Publication number
TW202416125A
TW202416125A TW112116935A TW112116935A TW202416125A TW 202416125 A TW202416125 A TW 202416125A TW 112116935 A TW112116935 A TW 112116935A TW 112116935 A TW112116935 A TW 112116935A TW 202416125 A TW202416125 A TW 202416125A
Authority
TW
Taiwan
Prior art keywords
branch
btb
entry
metadata
extended
Prior art date
Application number
TW112116935A
Other languages
English (en)
Inventor
塞倫希 傑恩
拉米穆罕默德 阿勒謝赫
達倫尤金 史翠
麥可史考特 麥歐寧
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 TW202416125A publication Critical patent/TW202416125A/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/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

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

本文揭示了提供用於儲存主幹分支元資料及葉分支元資料的擴展分支目標緩衝(BTB)項目。在一個態樣中,處理器包含包括BTB的BTB電路,該BTB包含複數個擴展BTB項目。BTB電路經配置以將第一分支指令的主幹分支元資料儲存在複數個擴展BTB項目的擴展BTB項目中,其中該擴展BTB項目對應於含有第一分支指令的位址的第一對齊記憶體區塊。該BTB電路亦經配置以將第二分支指令的葉分支元資料與該主幹分支元資料相關聯地儲存於該擴展BTB項目中,其中該第二分支指令的位址在第二對齊記憶體區塊內的該第一分支指令的目標位址之後。

Description

提供用於儲存主幹分支元資料及葉分支元資料的擴展分支目標緩衝(BTB)項目
本案之技術係關於處理用於在微處理器(「處理器」)中執行的指令且,特定言之,係關於處理器中的分支指令的分支預測。
習知處理器可採用被稱為指令排序緩衝的處理技術,由此被執行的電腦指令的傳輸量可藉由將每一指令的處理劃分為一系列步驟來增加,該等指令隨後在由多個階段組成的執行排序緩衝之內執行。若執行排序緩衝中的所有階段能夠如指令在該執行排序緩衝中所排序地、並行且順序地處理指令,則可達成最佳的處理器效能。然而,可出現被稱為結構危險的情況,由此下一指令無法在不導致錯誤計算結果的情況下得以執行。例如,控制危險可作為執行分支指令的結果發生,分支指令可基於當執行分支指令時評估的結果重定向指令執行的路徑。當遇到分支指令時,處理器可能需要暫停提取額外的指令,直至已執行分支指令為止,如此可導致降低處理器效能及增加功耗。
一種用於最大化處理器效能的方法涉及利用分支預測以推理性預測將由分支指令採用的路徑(基於例如先前執行的分支指令的結果),並且後續指令的提取基於分支預測。當分支指令到達指令排序緩衝的執行階段並且得以執行時,分支指令的所得目標位址是藉由將其與當提取分支指令時的先前預測的目標位址相比較來驗證。若預測目標位址與實際目標位址匹配(亦即,分支預測正確),則指令執行可無延遲的進行,因為目標位址處的後續指令將已完全經提取且將在指令排序緩衝中存在。
習知分支預測機制可包括分支預測器電路及分支目標緩衝器(branch target buffer; BTB)。分支預測器電路負責藉由例如預測是否將採用分支指令(在條件分支預測器的情況下)及/或藉由預測分支指令的目標位址(在間接分支預測器的情況下)來預測分支行為。BTB為包括BTB項目的快取記憶體,各BTB項目儲存在經對齊位址(例如,經對齊的快取記憶體列)處開始的特定記憶體區塊之內的分支指令的分支元資料。作為非限制性實例,分支元資料可包括指示分支指令相對於經對齊位址的位置的分支偏移、分支指令的類型(例如,條件分支、撥叫分支、重定向分支等等),及分支指令的目標位址。
在提取指令的程序期間,處理器使用指令的提取位址以存取BTB及分支預測器電路兩者。用於BTB中的指令的分支元資料(若有)與來自分支預測器電路的輸出結合以產生提取束,該提取束指定開始提取位址、待提取的指令數目,及下一提取位址。若待提取的指令中的預測獲取的分支指令在與該分支指令不同的對齊的記憶體區塊中具有目標位址,則處理器將需要消耗另一處理器週期來執行對BTB的額外存取,以擷取不同對齊的記憶體區塊中的任何分支指令的元資料。該對BTB的額外存取將消耗額外的處理器資源並且不利地影響處理器效能。確切而言,提取束在預測獲取的分支指令處終止,無論分支預測器是否具有用以在相同處理器週期期間執行額外分支預測的可用能力。結果,前端指令排序緩衝傳輸量可能受到限制。
本文揭示的態樣包括提供用於儲存主幹分支元資料及葉分支元資料的擴展分支目標緩衝(BTB)項目。如本文所使用,「主幹分支元資料」代表在對應於BTB中的擴展BTB項目的第一對齊記憶體區塊內的第一分支指令(亦即,「主幹分支指令」)的分支元資料,而「葉分支元資料」代表在包含主幹分支指令的目標位址的第二對齊記憶體區塊內的第二分支指令(亦即,「葉分支指令」)的分支元資料,其中第二分支指令的位址在主幹分支指令的目標位址之後。在本文揭示的態樣中,處理器包含提供BTB的BTB電路,該BTB包括複數個擴展BTB項目。藉由在單個擴展BTB項目中儲存主幹分支元資料及對應的葉分支元資料,BTB電路使得能夠在其中預測待採用主幹分支指令的情況下更有效地使用分支預測硬體。例如,在一些態樣中,當主幹分支指令經預測為由分支預測器電路採用時,葉分支元資料可由BTB電路從主幹分支指令的擴展BTB項目中擷取,並且由分支預測器電路用以在相同處理器週期內產生葉分支指令的分支預測。
一些態樣可提供BTB電路,該BTB電路提供硬體高效的擴展BTB項目,該等BTB項目包含複數個分支項目,每一分支項目可經分配以儲存主幹分支元資料或葉分支元資料中的任一者。該等態樣中的擴展BTB項目以習知方式儲存主幹分支元資料,並且若擴展BTB項目包含的分支項目多於對應於擴展BTB項目的對齊記憶體區塊內的主幹分支指令的數目,則亦可將葉分支元資料儲存在未使用的分支項目中。因此,例如,若擴展的BTB項目包含四(4)個分支項目,但是對應的對齊記憶體區塊僅含有兩(2)個主幹分支指令,則剩餘的兩(2)個未使用的分支項目可經分配以儲存葉分支元資料。當用於葉分支指令的葉分支元資料經儲存在擴展BTB項目的分支項目中時,用於相應主幹分支指令的主幹元資料經更新以儲存分支項目的索引作為葉分支索引。
一些此類態樣可提供用於儲存主幹分支元資料的分支項目在擴展BTB項目內經「從左至右」地分配,而用於儲存葉分支元資料的分支項目在擴展的BTB項目中經「從右至左」地分配。此舉可藉由BTB電路分配具有最低索引的可用分支項目以儲存主幹分支元資料,並且分配具有最高索引的可用分支項目以儲存葉分支元資料來完成。例如,若擴展的BTB項目包含索引為1到4的四(4)個分支項目,並且索引為1的第一分支項目已經分配,則BTB電路接下來可分配索引為2的分支項目以儲存主幹分支元資料,同時BTB電路接下來可分配索引為4的分支項目以儲存葉分支元資料。
根據一些態樣,若主幹分支元資料需要被儲存,但是擴展BTB內的所有分支項目先前已經分配,則BTB電路可重新分配儲存葉分支元資料的分支項目以儲存主幹分支元資料(亦即,主幹分支元資料優先於葉分支元資料進行分配)。類似地,若需要儲存葉分支元資料,但是擴展BTB內的所有分支項目先前已經分配,則BTB電路可重新分配儲存預先存在的葉分支元資料的分支項目(但並非儲存主幹分支元資料者)以儲存葉分支元資料。若以此方式重新分配分支項目並且覆寫預先存在的葉分支元資料,則更新與擴展BTB項目內的預先存在的葉分支元資料相關聯的任何主幹分支元資料,以清除主幹分支元資料的葉分支索引。在一些態樣中,優點計數器可與擴展BTB項目的分支項目的每一者相關聯。BTB電路可在每次存取相應的分支項目時遞增優點計數器,並且隨後可使用優點計數器來選擇適當的分支項目,以在擴展的BTB項目被完全佔用的情況下重新分配。例如,可選擇與具有最低值的優點計數器相關聯的分支項目來重新分配,或者可選擇在一或多個分支項目中的分支項目來重新分配,該一或多個分支項目各自與具有低於優點閥值的值的優點計數器相關聯。
一些態樣可提供更高效能的擴展BTB項目,該等BTB項目包含複數個分支項目,各分支項目經配置以儲存一或多個葉分支指令的主幹分支元資料和葉分支元資料兩者。在該等態樣中,若預測採用主幹分支指令,則可儲存且存取每一主幹分支指令的所有葉分支元資料。然而,該等態樣需要比上文論述的硬體高效變體更大的BTB。
在此方面,在一個示例性態樣中,揭示了一種用於提供儲存主幹分支元資料和葉分支元資料的擴展BTB項目的處理器。該處理器包含指令處理電路和BTB電路,該指令處理電路經配置以處理包含指令排序緩衝中的複數個指令的指令串流,且該BTB電路包含包括複數個擴展BTB項目的BTB。BTB電路經配置以將複數個指令中的第一分支指令的主幹分支元資料儲存在複數個擴展BTB項目的擴展BTB項目中,其中擴展BTB項目對應於含有第一分支指令的位址的第一對齊記憶體區塊。該BTB電路進一步經配置以將該複數個指令中的第二分支指令的葉分支元資料與該主幹分支元資料相關聯地儲存於該擴展BTB項目中,其中該第二分支指令的位址在第二對齊記憶體區塊內的該第一分支指令的目標位址之後。
在另一示例性態樣中,揭示了一種用於提供儲存主幹分支元資料和葉分支元資料的擴展BTB項目的方法。該方法包含由處理器的BTB電路將指令串流中的複數個指令中的第一分支指令的主幹分支元資料儲存在BTB的複數個擴展BTB項目中的擴展BTB項目中,其中該擴展BTB項目對應於包含第一分支指令的位址的第一對齊記憶體區塊。該方法進一步包含由BTB電路將複數個指令中的第二分支指令的葉分支元資料與主幹分支元資料相關聯地儲存在擴展BTB項目中,其中第二分支指令的位址在第二對齊記憶體區塊內的第一分支指令的目標位址之後。
在另一示例性態樣中,揭示了一種用於提供儲存主幹分支元資料和葉分支元資料的擴展BTB項目的非暫時性電腦可讀媒體。該非暫時性電腦可讀媒體儲存電腦可執行指令,當執行該等指令時,使處理器將指令串流中的複數個指令中的第一分支指令的主幹分支元資料儲存在BTB的複數個擴展BTB項目中的擴展BTB項目中,其中該擴展BTB項目對應於含有該第一分支指令的位址的第一對齊記憶體區塊。該電腦可執行指令進一步使該處理器將該複數個指令中的第二分支指令的葉分支元資料與該主幹分支元資料相關聯地儲存在該擴展BTB項目中,其中該第二分支指令的位址在第二對齊記憶體區塊內的該第一分支指令的目標位址之後。
在閱讀以下結合附圖對較佳態樣的詳細描述後,本領域技藝人士將理解本案的範疇並實現其附加態樣。
本文揭示的態樣包括提供用於儲存主幹分支元資料及葉分支元資料的擴展分支目標緩衝(BTB)項目。如本文所使用,「主幹分支元資料」代表在對應於BTB中的擴展BTB項目的第一對齊記憶體區塊內的第一分支指令(亦即,「主幹分支指令」)的分支元資料,而「葉分支元資料」代表在包含主幹分支指令的目標位址的第二對準記憶體區塊內的第二分支指令(亦即,「葉分支指令」)的分支元資料,其中第二分支指令的位址在主幹分支指令的目標位址之後。在本文揭示的態樣中,處理器包含提供BTB的BTB電路,該BTB包括複數個擴展BTB項目。藉由在單個擴展BTB項目中提供主幹分支元資料及對應的葉分支元資料,BTB電路使得能夠在其中預測待採用主幹分支指令的情況下更有效地使用分支預測硬體。例如,在一些態樣中,當主幹分支指令經預測為由分支預測器電路採用時,葉分支元資料可由BTB電路從主幹分支指令的擴展BTB項目中擷取,並且由分支預測器電路用以在相同處理器週期內產生葉分支指令的分支預測。
一些態樣可提供BTB電路,該BTB電路提供硬體高效的擴展BTB項目,該等BTB項目包含複數個分支項目,每一分支項目可經分配以儲存主幹分支元資料或葉分支元資料中的任一者。該等態樣中的擴展BTB項目以習知方式儲存主幹分支元資料,並且若擴展BTB項目包含的分支項目多於對應於擴展BTB項目的對齊記憶體區塊內的主幹分支指令的數目,則亦可將葉分支元資料儲存在未使用的分支項目中。因此,例如,若擴展的BTB項目包含四(4)個分支項目,但是對應的對齊記憶體區塊僅含有兩(2)個主幹分支指令,則剩餘的兩(2)個未使用的分支項目可經分配以儲存葉分支元資料。當用於葉分支指令的葉分支元資料經儲存在擴展BTB項目的分支項目中時,用於相應主幹分支指令的主幹元資料經更新以儲存分支項目的索引作為葉分支索引。
一些此類態樣可提供用於儲存主幹分支元資料的分支項目在擴展BTB項目內經「從左至右」地分配,而用於儲存葉分支元資料的分支項目在擴展的BTB項目中經「從右至左」地分配。此舉可藉由BTB電路分配具有最低索引的可用分支項目以儲存主幹分支元資料,並且分配具有最高索引的可用分支項目以儲存葉分支元資料來完成。例如,若擴展的BTB項目包含索引為1到4的四(4)個分支項目,並且索引為1的第一分支項目已經分配,則BTB電路接下來可分配索引為2的分支項目以儲存主幹分支元資料,同時BTB電路接下來可分配索引為4的分支項目以儲存葉分支元資料。
根據一些態樣,若主幹分支元資料需要被儲存,但是擴展BTB內的所有分支項目先前已經分配,則BTB電路可重新分配儲存葉分支元資料的分支項目以儲存主幹分支元資料(亦即,主幹分支元資料優先於葉分支元資料進行分配)。類似地,若需要儲存葉分支元資料,但是擴展BTB內的所有分支項目先前已經分配,則BTB電路可重新分配儲存預先存在的葉分支元資料的分支項目(但並非儲存主幹分支元資料者)以儲存葉分支元資料。若以此方式覆寫預先存在的葉分支元資料,則更新與擴展BTB項目內的預先存在的葉分支元資料相關聯的任何主幹分支元資料,以清除主幹分支元資料的葉分支索引。在一些態樣中,優點計數器可與擴展BTB項目的分支項目的每一者相關聯。BTB電路可在每次存取相應的分支項目時遞增優點計數器,並且隨後可使用優點計數器來選擇適當的分支項目,以在擴展的BTB項目被完全佔用的情況下重新分配。例如,可選擇與具有最低值的優點計數器相關聯的分支項目來重新分配,或者可選擇在一或多個分支項目中的分支項目來重新分配,該一或多個分支項目各自與具有低於優點閥值的值的優點計數器相關聯。
一些態樣可提供更高效能的擴展BTB項目,該等BTB項目包含複數個分支項目,各分支項目經配置以儲存一或多個葉分支指令的主幹分支元資料和葉分支元資料兩者。在該等態樣中,若預測採用主幹分支指令,則可儲存且存取每一主幹分支指令的所有葉分支元資料。然而,該等態樣需要比上文論述的硬體高效變體更大的BTB。
在此方面,第1圖為包括處理器102的示例性基於處理器的系統100的示圖。處理器102亦可被稱為「處理器核心」或「中央處理單元(central processing unit; CPU)核心」,且可為有序或無序處理器(out-of-order processor; OoP),及/或可為由基於處理器的系統100提供的複數個處理器102中的一者。在第1圖的實例中,處理器102包括一個指令處理電路104,該電路包括一或多個指令排序緩衝I O-I N,用於處理由提取電路110從指令記憶體(第1圖中標記為「INSTR.memory」)108提取的指令106以供執行。作為非限制性實例,指令記憶體108可經提供在基於處理器的系統100中的系統記憶體中或作為系統記憶體的一部分。處理器102中亦可提供指令快取記憶體(第1圖中標記為「INSTR.CACHE」)112,以快取從指令記憶體108提取的指令106來減少提取電路110中的潛時。
第1圖之實例中的提取電路110經配置以在經提取的指令106F到達待執行的執行電路(第1圖中標記為「EXEC.CIRCUIT」)114之前,將指令106作為經提取的指令106.F提供至指令處理電路104中的一或多個指令排序緩衝I O-I N中以進行預處理。跨指令處理電路104的不同處理電路或階段提供指令排序緩衝I O-I N,以在一系列步驟中預處理和處理經提取的指令106F,該一系列步驟可同時執行以在由執行電路114執行經提取的指令106F之前增加傳輸量。
繼續參看第1圖,指令處理電路104包括解碼電路118,該解碼電路118經配置以將由提取電路110提取的經提取指令106F解碼為經解碼指令106D,以決定所需的指令類型和動作。編碼在經解碼指令106D中的所需指令類型和動作亦可用於決定經解碼指令106D應置放在何指令排序緩衝I O-I N中。在該實例中,經解碼指令106D經置放在指令排序緩衝I O-I N的一或多個中,並且接下來經提供給指令處理電路104中的重命名電路120。重新命名電路120經配置以決定經解碼指令106D中的任一暫存器名稱是否應被重新命名,以解耦將防止並行或無序處理的任何暫存器依賴性。
第1圖中處理器102中的指令處理電路104亦包括暫存器存取電路(第1圖中標記為「RACC.circuit」)122。暫存器存取電路122經配置以基於映射至經解碼指令106D的源暫存器運算元的暫存器映射表(register mapping table; RMT)(未圖示)中的邏輯暫存器的映射項目來存取實體暫存器檔案(physical register file; PRE)(未圖示)中的實體暫存器,以從執行電路114中的執行指令106E擷取產生的值。暫存器存取電路122亦經配置以提供從執行的指令106E擷取到的產生值作為待執行的經解碼指令106D的源暫存器運算元。
此外,在指令處理電路104中,在指令排序緩衝I O-I N中提供了排程器電路(第1圖中標記為「SCHED.CCIRCuit」)124,並該排程器電路經配置以將經解碼指令106D儲存在保留項目中,直至經解碼指令106D的所有源暫存器運算元可用。排程器電路124向執行電路114發出準備執行的經解碼指令106D。在指令處理電路104中亦提供寫入電路126,以將從執行的指令106E產生的值寫回或提交至記憶體(諸如PRF)、快取記憶體或系統記憶體。
繼續參看第1圖,指令處理電路104亦包括分支預測器電路128。分支預測器電路128經配置以推理性地預測所提取的分支指令的結果,該分支指令控制與指令控制流路徑中的經獲取路徑或未經獲取路徑相對應的指令是否經提取至指令排序緩衝I O-I N中以供執行。例如,經提取的分支指令可為分支指令130,該分支指令包括待由指令處理電路104解析以決定應當採用何指令控制流路徑的條件。以此方式,在指令處理電路104可繼續處理經提取的指令106F之前,在該實例中的分支指令130的結果不必在執行中由執行電路114解析。分支預測器電路128進行的預測可作為分支預測132提供給提取電路110,以用於決定作為經提取的指令106F的待提取的下一指令106。
第1圖的指令處理電路104亦提供了BTB電路134以快取額外的元資料,以便在決定下一提取位址時與分支預測器電路128結合使用。BTB電路134包括BTB 136,BTB 136包含複數個項目,每一項目對應於從中提取指令的對齊的記憶體區塊,並且每一項目儲存與彼對齊的記憶體區塊內的分支指令相關的分支元資料。作為非限制性實例,分支元資料可包括指示分支指令相對於經對齊記憶體區塊的位址的位置的分支偏移、分支指令的類型(例如,條件分支、撥叫分支、重定向分支等等),及分支指令的目標位址。在提取指令的程序期間,處理器102使用指令的提取位址以存取BTB電路134及分支預測器電路128兩者並且產生提取束(未圖示)。應理解,雖然BTB電路134和BTB 136在第1圖中經圖示為單個元件,但一些態樣可提供作為獨立元件實現的BTB電路134及BTB 136。此外,應理解,雖然分支預測器電路128和BTB電路134在第1圖中經圖示為獨立的元件,但在一些態樣中,BTB電路134可經整合至分支預測器電路128中。
如上所述,當預測獲取的分支指令的目標位址在與該分支指令不同的對齊記憶體區塊中時,處理器102將需要消耗另一處理器週期來執行對BTB136的附加存取,以擷取不同經對齊記憶體區塊內的任何分支指令的元資料,如此將對處理器效能產生負面影響。結果,提取束可在預測獲取的分支指令處終止,即使分支預測器具有用以在相同處理器週期期間執行額外分支預測的可用能力。
在此方面,第1圖中的BTB 136提供了擴展BTB項目138(0)-138(E),用於儲存主幹分支元資料(對應於擴展BTB項目的第一對齊記憶體區塊內第一分支指令的分支元資料)和葉分支元資料(包含第一分支指令的目標位址的第二對齊記憶體區塊內的第二分支指令的分支元資料,其中第二分支指令的位址在主幹分支指令的目標位址之後)。為了說明第1圖中的BTB電路134和用於儲存主幹分支元資料及葉分支元資料的擴展BTB項目138(0)-138(E)的示例性功能,提供了第2圖。如第2圖中所示,正在執行(例如,由第1圖的指令處理電路104執行)包含複數個指令202(0)-202(X)的指令串流200。複數個指令202(0)-202(X)包括指令202(0)和分支指令202(1),該兩個指令皆從對齊記憶體區塊204(0)中提取。複數個指令202(0)-202(X)亦包括目標指令202(2)(即位於分支指令202(1)的目標位址的指令)和分支指令202,該兩個指令皆從對齊記憶體區塊204(1)中提取。第2圖中亦圖示了第1圖中的BTB電路134、第1圖的BTB 136以及第1圖的擴展BTB項目138(0)-138(E)。為了說明之目的,假設第2圖的對齊記憶體區塊204(0)對應於擴展BTB項目138(0)。
在複數個指令202(0)-202(X)的第一次執行期間,遇到並執行指令202(0)及分支指令202(1)。在執行分支指令202(1)之後,BTB電路134在擴展BTB項目138(0)中儲存分支指令202(1)的主幹分支元資料206,該擴展BTB項目對應於從其中提取分支指令202(1)的對齊記憶體區塊204(0)。隨後,當在指令串流200中遇到並執行目標指令202(2)時,第1圖的指令處理電路104標記或以其他方式跟蹤從對齊記憶體區塊204(1)中提取的指令作為潛在的葉指令候選。當執行分支指令202(X)時,BTB電路134在擴展BTB項目138(0)中與主幹分支元資料206相關聯地儲存分支指令202(X)的葉分支元資料208。擴展BTB項目138(0)-138(E)的示例性實施將在下文關於第3圖和第4圖進行更詳細的論述。
在指令串流200的稍後執行期間,當遇到分支指令202(1)時,第1圖的分支預測器電路128可預測分支指令202的獲取。BTB電路134隨後將擴展BTB項目138(0)識別為含有對應於分支指令202(1)的主幹分支元資料206,並且擷取對應於分支指令202(X)的葉分支元資料208。使用葉分支元資料208,分支預測器電路128隨後能夠在同一處理器週期內預測分支指令202(X)的目標。
為了說明根據一些態樣的示例性硬體高效的擴展BTB項目,提供了第3圖。第3圖圖示擴展BTB項目300,該擴展BTB項目在某些態樣對應於第1圖和第2圖的擴展BTB項目的138(0)-138(E)中的每一者。在第3圖的實例中,擴展BTB項目300包括標記302,該標記302識別擴展BTB項目的300,並且可基於對應的對齊記憶體區塊(諸如第2圖的對齊記憶體區塊204(0)和204(1))的位址產生。擴展BTB項目300進一步包含複數個分支項目304(0)-304(B)。分支項目304(0)-304(B)中的每一者對應於分支指令(即,主幹分支指令或葉分支指令),並且可藉由索引來識別。
複數個分支項目304(0)-304(B)各自儲存對應分支指令的分支元資料(即,主幹分支元資料或葉分支元資料)。如第3圖中所示,元資料可包括分支偏移306(0)-306(B),該分支偏移指示每一對應的分支指令相對於對齊記憶體區塊的位址的偏移;分支類型308(0)-308(B),該分支類型指示每一對應分支指令的類型;目標位址(第3圖中標記為「TARGET ADDR」)310(0)-310(B),該目標位址指示每一對應分支指令的目標位址;以及對於儲存主幹分支元資料的分支項目304(0)-304(B),葉分支索引312(0)-312(B),該葉分支索引各自指示與主幹分支元資料相關聯地儲存葉分支元資料的分支項目304(0)-304(B)的索引。應理解,分支項目304(0)-304(B)儲存的元資料在某些態樣中對應於第2圖的主幹分支元資料206和葉分支元資料208。
第3圖的分支項目304(0)-304(B)經配置以按習知方式儲存主幹分支元資料,並且亦經配置以在擴展BTB項目300包含的分支項目304(0)-304(B)多於對應於擴展BTB項目300的對齊記憶體區塊內的主幹分支指令的數目的情況下,將葉分支元資料儲存在未使用的分支項目中。當用於葉分支指令的葉分支元資料經儲存在擴展BTB項目300的分支項目304(0)-304(B)的分支項目中時,用於相應主幹分支指令的主幹元資料的葉分支索引312(0)-312(B)經更新以儲存分支項目的索引。
在一些態樣中,第1圖和第2圖的BTB電路134可經配置以分配分支項目304(0)-304(B),用於在擴展BTB項目300內「從左至右」儲存主幹分支元資料,並進一步分配分支項目304(0)-304(B),用於在擴展BTB項目300內「從右至左」儲存葉分支元資料。因此,對於主幹分支元資料,BTB電路134可分配具有最低索引的分支項目304(0)-304(B)中的可用一者;而對於葉分支元資料,BTB電路134可分配具有最高索引的分支項目304(0)-304(B)中的可用一者。例如,在第3圖的實例中,BTB電路134可分配分支項目304(0)以儲存主幹分支元資料,並且可分配分支項目的304(B)以儲存葉分支元資料。
一些態樣可提供,若主幹分支元資料需要被儲存,但是所有分支項目304(0)-304(B)先前已經分配,則BTB電路134可重新分配儲存葉分支元資料的分支項目304(0)-304(B)中的一者以儲存主幹分支元資料(即,主幹分支元資料優先於葉分支元資料進行分配)。類似地,若需要儲存葉分支元資料,但是所有分支項目304(0)-304(B)先前已經分配,則BTB電路134可重新分配儲存預先存在的葉分支元資料的分支項目304(0)-304(B)(但並非儲存主幹分支元資料者)中的一者以儲存葉分支元資料。擴展BTB項目300內與覆寫的預先存在的葉分支元資料相關聯的任何主幹分支元資料經更新,以清除主幹分支元資料的葉分支索引312(0)-312(B)。
根據一些態樣,複數個優點計數器314(0)-314(B)可與擴展BTB項目300的分支項目304(0)-304(B)中的每一者相關聯,以使得能夠更智慧地選擇分支項目304(0)-304(B)進行重新分配。在一些態樣中,BTB電路134可在每次存取對應的分支項目304(0)-304(B)時遞增優點計數器314(0)-314(B)中的每一者,並且隨後可使用優點計數器314(0)-314(B)以在擴展BTB項目300經完全佔用的情況下選擇分支項目304(0)-304(B)中最合適的一者來重新分配。例如,可選擇與具有最低值的對應優點計數器314(0)-314(B)相關聯的分支項目304(0)-304(B)的分支項目來重新分配,或者可選擇在一或多個分支項目中的分支項目304(0)-304(B)的一分支項目來重新分配,該一或多個分支項目各自與具有低於優點閥值的值的對應優點計數器314(0)-314(B)相關聯。在一些態樣中,優點計數器314(0)-314(B)和優點閥值316可經併入至擴展BTB項目300中,或者可經儲存於單獨的資料結構(未圖示)中,該資料結構為BTB電路134的元件或者在BTB電路的外部。
第4圖圖示示例性高效能擴展BTB項目,該BTB項目在某些態樣中對應於第1圖和第2圖的擴展BTB項目的138(0)-138(E)中的每一者。如第4圖中所示,擴展BTB項目400包括識別擴展BTB項目的標籤402,並且標籤402可基於諸如第2圖的對齊記憶體區塊204(0)和204(1)的對應對齊記憶體區塊的位址來產生。擴展BTB項目400包括複數個分支項目404(0)-404(B),每一分支項目對應於主幹分支指令。分支項目404(0)-404(B)儲存對應主幹分支指令的主幹分支元資料。主幹分支元資料(其對應於第2圖的主幹分支元資料206)可包括主幹分支偏移406(0)-406(B),該主幹分支偏移指示每一對應的主幹分支指令與對齊記憶體區塊的位址的偏移;主幹分支類型408(0)-408(B),該主幹分支類型指示每一對應的主幹分支指令的類型;以及主幹目標位址(第4圖中標記為「TRUNK TARGET ADDR」)410(0)-410(B),該主幹目標位址指示每一對應主幹分支指令的目標位址。
另外地,分支項目404(0)-404(B)中的每一者亦儲存對應於主幹分支指令的葉分支指令的一組或多組葉分支元資料。葉分支元資料(其對應於第2圖的葉分支元資料208)可包括葉分支偏移412(0,0)-412(0,L), 412(B,0)-412(B,L),該葉分支偏移指示每一對應的葉分支指令與從中提取葉分支指令的對齊記憶體區塊的位址的偏移;葉分支類型414(0,0)-414(0,L), 414(B,0)-414(B,L),該葉分支類型指示每一對應的葉分支指令的類型;以及葉目標位址(第4圖中標記為「LEAF TARGET ADDR」)416(0,0)-416(0,L), 416(B,0)-416(B,L),該葉目標位址指示每一對應葉分支指令的目標位址。
第5圖提供圖示由第1圖的BTB電路134及分支預測器電路128執行的示例性操作的流程圖500,用於提供儲存主幹分支元資料和葉分支元資料的擴展BTB項目。為了清楚起見,在描述第5圖時參考了第1圖及第2圖的元件。第5圖中的操作開始於處理器的BTB電路(例如,第1圖的處理器102的BTB電路134)將指令串流200中的複數個指令202(0)-202(X)中的第一分支指令(例如,第2圖的分支指令202(1))的主幹分支元資料206儲存在BTB(諸如第1圖的BTB 136)的複數個擴展BTB項目138(0)-138(E)中的擴展BTB項目(例如,第1圖及第2圖的擴展BTB項目138(0))中,其中該擴展BTB項目138(0)對應於含有該第一分支指令202(1)的位址的第一對齊記憶體區塊(例如,第2圖的第一對齊記憶體區塊204(0))(方塊502)。BTB電路134亦將該複數個指令202(0)-202(X)中的第二分支指令(諸如第2圖的分支指令202(X))的葉分支元資料(例如,第2圖的葉分支元資料208)與該主幹分支元資料206相關聯地儲存在該擴展BTB項目138(0)中,其中該第二分支指令202(X)的位址在第二對齊記憶體區塊(例如,第2圖的對齊記憶體區塊204(1))內的該第一分支指令202(1)的目標位址之後(方塊504)。
在一些態樣中,第1圖的分支預測器電路128預測第一分支指令202(1)被採用(方塊506)。BTB電路134識別包含對應於第一分支指令202(1)的主幹分支元資料206的擴展BTB項目138(0)(方塊508)。接下來,BTB電路134從擴展BTB項目138(0)中擷取與第二分支指令202(X)相對應的葉分支元資料208(方塊510)。分支預測器電路128隨後基於葉分支元資料208並且在相同處理器週期內預測第二分支指令202(X)的目標(方塊512)。
為了說明根據一些態樣的用於在第3圖的硬體高效的擴展BTB項目300中分配分支項目的示例性操作,第6A圖至第6C圖提供了流程圖600。在描述第6A圖至第6C圖時參考了第1圖至第3圖中的元件。應理解,在某些態樣中,當第6A圖至第6C圖中所示的一些操作不適用於該等態樣時,可省略此類操作。在第6A圖中,一些態樣中的操作開始於BTB電路134分配具有最低索引的可用分支項目(例如,第3圖的分支項目304(0))作為第一分支項目304(0)(方塊602)。該等態樣中的操作可隨後在第6A圖的方塊604處繼續。
一些態樣可提供,BTB電路134重新分配與具有最低值的優點計數器(例如,第3圖的優點計數器314(0))相關聯的分支項目(例如第3圖的分支項目304(0)),作為第一分支項目304(0)(方塊606)。該等態樣中的操作可隨後在第6A圖的方塊604處繼續。根據一些態樣,BTB電路134可將一或多個分支項目中的一分支項目(例如,第3圖的分支項目304(0))重新分配為第一分支項目,該一或多個分支項目各自與具有低於優點閥值(例如,第3圖的優值閥值316)的值的優點計數器(例如,第3圖的優點計數器314(0))相關聯(方塊608)。該等態樣中的操作可隨後在第6A圖的方塊604處繼續。
在一些態樣中,BTB電路134可決定擴展BTB項目300內無分支項目可用於分配(方塊610)。BTB電路134將第一分支項目(例如,第3圖的分支項目304(B))識別為儲存葉分支元資料的分支項目,該葉分支元資料諸如第2圖的葉分支元資料208(方塊612)。接下來,BTB電路134更新擴展BTB項目300內的任何主幹分支元資料206,該元資料含有作為葉分支索引(例如,第3圖的葉分支索引312(0))的第一分支項目304(B)的索引,以清除葉分支索引312(0)(方塊614)。隨後,BTB電路134重新分配第一分支項目304(B)以儲存主幹分支元資料,諸如第2圖的主幹分支元資料206(方塊616)。然後,該等態樣中的操作在第6A圖的方塊604處繼續。
繼續參看第6A圖,BTB電路134將主幹分支元資料206儲存在擴展BTB項目300的第一分支項目(亦即,第3圖的分支項目304(0)或分支項目304(B))中(方塊604)。一些態樣中的操作可在第6B圖的方塊618處繼續。
現在參看第6B圖,在一些態樣中,BTB電路134可將具有最高索引的可用分支項目(例如,第3圖的分支項目304(B))分配為第二分支項目304(B)(方塊618)。該等態樣中的操作可在第6C圖的方塊620處繼續。在一些態樣中,BTB電路134可重新分配與具有最低值的優點計數器(例如,第3圖的優點計數器314(B))相關聯的分支項目(例如,第3圖的分支項目304(B)),作為第二分支項目304(B)(方塊622)。該等態樣中的操作可在第6C圖的方塊620處繼續。一些態樣可提供,BTB電路134將一或多個分支項目中的一分支項目(例如,第3圖的分支項目304(B))重新分配為第二分支項目,該一或多個分支項目各自與具有低於優點閥值(例如,第3圖的優點閥值316)的值的優點計數器(例如,第3圖的優點計數器314(B))相關聯。該等態樣中的操作可在第6C圖的方塊620處繼續。
在一些態樣中,BTB電路134可決定擴展BTB項目300內無分支項目可用於分配(方塊626)。BTB電路134將第二分支項目304(B)識別為儲存預先存在的葉分支元資料208的分支項目(方塊628)。接下來,BTB電路134更新擴展BTB項目300內的任何主幹分支元資料206,該元資料含有作為葉分支索引(例如,第3圖的葉分支索引312(0))的第二分支項目304(B)的索引,以清除葉分支索引312(0)(方塊630)。隨後,BTB電路134重新分配第二分支項目304(B)以儲存葉分支元資料208(方塊632)。然後,操作在第6C圖的方塊620處繼續。
現在轉至第6C圖,BTB電路134將葉分支元資料208儲存在擴展BTB項目300的第二分支項目304(B)中(方塊620)。BTB電路134更新第一分支項目304(0)以儲存第二分支項目304(B)的索引作為葉分支索引312(0)(方塊634)。
第7圖提供流程圖700以圖示根據一些態樣的用於在第4圖的高效能擴展BTB項目400中分配分支項目的示例性操作。為了清楚起見,在描述圖7時參考了第1圖、第2圖和第4圖中的元件。在第7圖中,操作開始於BTB電路134將主幹分支元資料(諸如第2圖的主幹分支元資料206)儲存在擴展BTB項目(例如第4圖的擴展BTB項目)的第一分支項目(例如,第4圖的分支項目404(0))中(方塊702)。BTB電路134亦在擴展BTB項目400的第一分支項目404(0)中儲存葉分支元資料,諸如第2圖的葉分支元資料208(方塊704)。
第8圖為示例性基於處理器的系統800的方塊圖,該系統包括包含指令處理電路804的處理器802(例如,微處理器),該指令處理電路包含BTB電路(第8圖中標記為「BTBC」)806,該BTB電路在功能上對應於第1圖中的BTB電路134。作為實例,指令處理電路804可為第1圖的處理器102中的指令處理電路104。作為實例,基於處理器的系統800可為第1圖中的基於處理器的系統100。基於處理器的系統800可為包括在電子板卡中的一或多個電路,諸如印刷電路板(printed circuit board; PCB)、伺服器、個人電腦、桌上型電腦、膝上型電腦、個人數位助理(personal digital assistant; PDA)、計算板、行動設備或任何其他設備;並且基於處理器的系統400可表示例如伺服器或使用者的電腦。
在此實例中,處理器802表示一或多個通用處理電路,諸如微處理器、中央處理單元等等。處理裝置802經配置以執行指令中的處理邏輯,用於進行本文論述的操作及步驟。在該實例中,處理器802包括指令快取記憶體808,用於指令處理電路804可存取的指令的臨時快速存取的記憶體儲存。從記憶體(諸如透過系統匯流排812從系統記憶體810)提取或預提取的指令經儲存於指令快取記憶體808中。指令處理電路804經配置以處理提取至指令快取記憶體808中的指令並處理指令以供執行。
處理器802及系統記憶體810經耦合至系統匯流排812,並且可內耦合包括在基於處理器的系統800中的週邊設備。眾所周知,處理器802藉由透過系統匯流排812交換位址、控制及資料資訊來與該等其他設備通信。例如,處理器802可將匯流排交易請求傳送至作為從設備的實例的系統記憶體810中的記憶體控制器814。儘管第8圖中未示出,但可提供多個系統匯流排812,其中每一系統匯流排構成不同的結構。在該實例中,記憶體控制器814經配置以向系統記憶體810中的記憶體陣列816提供記憶體存取請求。記憶體陣列816包括用於儲存資料的儲存位元格陣列。作為非限制性實例,系統記憶體810可為唯讀記憶體(read-only memory; ROM)、快閃記憶體、動態隨機存取記憶體(dynamic random access memory; DRAM),諸如同步DRAM (SDRAM)等,以及靜態記憶體(例如,快閃記憶體、靜態隨機存取記憶體(static random access memory; SRAM)等)。
其他設備可經連接至系統匯流排812。如第8圖中所示,作為實例,該等設備可包括系統記憶體810、一或多個輸入設備818、一或多個輸出設備820、數據機822及一或多個顯示控制器824。輸入設備818可包括任何類型的輸入設備,包括但不限於輸入鍵、開關、語音處理器等。輸出設備820可包括任何類型的輸出設備,包括但不限於音訊、視訊、其他視覺指示器等。數據機822可為經配置以允許與網路826交換資料的任何設備。網路826可為任何類型的網路,包括但不限於有線或無線網路、專用或公用網路、區域網路(local area network; LAN)、無線區域網路(wireless local area network; WLAN)、廣域網路(wide area network; WAN)、BLUETOOTH™網路及網際網路。數據機822可經配置以支援所需任何類型的通訊協定。處理器802亦可經配置以透過系統匯流排812存取顯示控制器824以控制發送至一或多個顯示器828的資訊。顯示器828可包括任何類型的顯示器,包括但不限於陰極射線管(cathode ray tube; CRT)、液晶顯示器(liquid crystal display; LCD)、電漿顯示器等。
第8圖中的基於處理器的系統800可包括一組指令830,該組指令將由處理器802針對根據指令所需的任何應用程式執行。作為非暫時性電腦可讀媒體832的實例,指令830可儲存在系統記憶體810、處理器802及/或指令快取記憶體808中。指令830亦可在其執行期間完全或至少部分地駐存在系統記憶體810內及/或處理器802內。指令830進一步可經由數據機822在網路826上發送或接收,以使得網路826包括電腦可讀取媒體832。
雖然電腦可讀取媒體832在示例性態樣中經圖示為單個媒體,但術語「電腦可讀取媒體」應視為包括儲存一或多組指令的單個媒體或多個媒體(例如,集中式或分佈式資料庫,及/或相關聯的快取記憶體及伺服器)。術語「電腦可讀取媒體」亦應理解為包括能夠儲存、編碼或攜帶一組指令的任何媒體,該組指令供處理設備執行並且使得處理設備進行本文揭示的態樣的方法的任何一或多者。術語「電腦可讀取媒體」應相應地視為包括但不限於,固態記憶體、光學媒體及磁性媒體。
本文揭示的態樣包括各種步驟。本文所揭示的態樣的步驟可由硬體元件形成,或者可實施在機器可執行指令中,該等機器可執行指令可用以使程式化有指令的通用或專用處理器執行該等步驟。或者,該等步驟可藉由硬體及軟體的組合來執行。
本文揭示的態樣可作為電腦程式產品或軟體提供,該電腦程式產品或軟體可包括其上儲存有指令的機器可讀取媒體(或電腦可讀取媒體),該等指令可用於對電腦系統(或其他電子設備)進行程式化以執行根據本文揭示的態樣的程序。機器可讀取媒體包括用於以機器(例如,電腦)可讀取的形式儲存或傳輸資訊的任何機制。例如,機器可讀取媒體包括:機器可讀取儲存媒體(例如,ROM、隨機存取記憶體(random access memory; RAM)、磁碟儲存媒體、光學儲存媒體、快閃記憶體設備等),及類似者。
除非特定地另有說明並且從上述討論中顯而易見,否則應理解,在整個描述中,使用諸如「處理」、「計算」、「決定」、「顯示」等術語的論述代表電腦系統或類似的電子計算設備的動作或製程,該電腦系統或類似的電子計算設備操作且轉換在電腦系統的暫存器中的表示為物理(電子)量的資料及記憶體,並將其轉換為在電腦系統記憶體或暫存器或其他此類資訊儲存、傳輸或顯示設備中類似地表示為實體量的其他資料。
在本文提供的演算法及顯示器與任何特定電腦或其他裝置沒有固有的相關性。各種系統可與根據本文的教示的程式一起使用,或者構造更專門的裝置來執行所需方法步驟可證明是方便的。用於各種該等系統的所需結構將出現在以上描述中。此外,本文描述的態樣沒有參照任何特定的程式設計語言進行描述。應當理解,可使用多種程式設計語言來實施如本文所描述的態樣的教示。
本領域技藝人士將進一步理解,結合本文揭示的態樣描述的各種說明性邏輯區塊、模組、電路及演算法可實現為電子硬體、儲存在記憶體或另一電腦可讀取媒體中並由處理器或其他處理設備執行的指令,或該兩者的組合。作為實例,本文描述的分佈式天線系統的元件可用於任何電路、硬體元件、積體電路(integrated circuit; IC)或IC晶片中。本文揭示的記憶體可為任何類型和大小的記憶體,並且可經配置以儲存所需的任何類型的資訊。為了清楚地說明此可互換性,各種說明性元件、方塊、模組、電路及步驟已在上文中通常根據其功能性進行了描述。如何實現此功能性取決於特定應用、設計選擇及/或施加在整體系統上的設計約束。本領域技藝人士可針對每個特定應用以不同的方式實施所描述的功能,但是此類實施決策不應被解釋為導致偏離本發明態樣的範疇。
結合本文揭示的態樣描述的各種說明性邏輯區塊、模組及電路可用處理器、數位信號處理器(Digital Signal Processor; DSP)、特殊應用積體電路(Application Specific Integrated Circuit; ASIC)、現場可程式化閘陣列(Field Programmable Gate Array; FPGA)或其他可程式化邏輯設備、離散閘門或電晶體邏輯、離散的硬體元件或經設計用於執行本文所述功能的上述各者的任何組合來實施或執行。此外,控制器可為處理器。處理器可為微處理器,但在替代方案中,處理器可為任何習知處理器、控制器、微控制器或狀態機。處理器亦可實施為計算設備的組合(例如,DSP和微處理器的組合、複數個微處理器、一或多個微處理器與DSP核心的結合,或任何其他此類配置)。
本文揭示的態樣可實施在硬體及儲存在硬體中的指令中,並且可駐存在例如RAM、快閃記憶體、ROM、電可程式化ROM (Electrically Programmable ROM; EPROM)、電可抹除可程式化ROM (Electrically Erasable Programmable ROM; EEPROM)、暫存器、硬碟、可移除磁碟、緊密光碟-唯讀記憶體(CD-ROM)或本領域已知的任何其他形式的電腦可讀取媒體中。示例性儲存媒體經耦合至處理器,以使得處理器可從儲存媒體讀取資訊並且將資訊寫入儲存媒體。或者,儲存媒體可整合至處理器。處理器及儲存媒體可駐存於特殊應用積體電路(ASIC)中。ASIC可駐存於遠端站中。或者,處理器和儲存媒體可作為離散元件駐存在遠端站、基地台或伺服器中。
亦應注意,本文中任何示例性態樣中描述的操作步驟經描述以提供實例和論述。所述的操作可以除了所示順序之外的許多不同順序來執行。此外,在單個操作步驟中描述的操作實際上可在多個不同步驟中執行。另外,可組合示例性態樣中論述的一或多個操作步驟。本領域技藝人士亦將理解,可使用多種技術和技藝中的任一者來表示資訊及信號。例如,在整個上文描述中可作為參考的資料、指令、命令、資訊、信號、位元、符號及碼片可由電壓、電流、電磁波、磁場或粒子、光場或粒子,或上述各者任意組合來表示。
除非另有明確說明,否則本文所闡述的任何方法均不意欲解釋為要求其步驟以特定順序執行。因此,若方法請求項實際上並未敘述其步驟所遵循的順序,或者在申請專利範圍或描述中沒有另外特定說明該等步驟將被限制為特定順序,則絕不意欲推斷任何特定的順序。
將對本領域技藝人士顯而易見的是,在不脫離本發明的精神或範疇的情況下,可進行各種修改及變化。由於本領域技藝人士可想到結合本發明的精神和實質的所揭示態樣的修改、組合、子組合和變化,因此本發明應被解釋為包括在所附申請專利範圍及其等效物的範圍內的所有內容。
100:基於處理器的系統 102:處理器 104:指令處理電路 106:指令 106D:經解碼指令 106E:執行的指令 106F:經提取的指令 108:指令記憶體 110:提取電路 112:指令快取記憶體 114:執行電路 118:解碼電路 120:重命名電路 122:暫存器存取電路 124:排程器電路 126:寫入電路 128:分支預測器電路 130:分支指令 132:分支預測 134:BTB電路 136:BTB 138(0):擴展BTB項目 138(E):擴展BTB項目 200:指令串流 202(0):指令 202(1):指令 202(2):指令 202(X):指令 204(0):對齊記憶體區塊 204(1):對齊記憶體區塊 206:主幹分支元資料 208:葉分支元資料 300:擴展BTB項目 302:標記 304(0):分支項目 304(B):分支項目 306(0):分支偏移 306(B):分支偏移 308(0):分支類型 308(B):分支類型 310(0):目標位址 310(B):目標位址 312(0):葉分支索引 312(B):葉分支索引 314(0):優點計數器 314(B):優點計數器 316:優點閥值 400:擴展BTB項目 402:標籤 404(0):分支項目 404(B):分支項目 406(0):主幹分支偏移 406(B):主幹分支偏移 408(0):主幹分支類型 408(B):主幹分支類型 410(0):主幹目標位址 410(B):主幹目標位址 412(0,0):葉分支偏移 412(0,L):葉分支偏移 412(B,0):葉分支偏移 412(B,L):葉分支偏移 414(0,0):葉分支類型 414(0,L):葉分支類型 414(B,0):葉分支類型 414(B,L):葉分支類型 416(0,0):葉目標位址 416(0,L):葉目標位址 416(B,0):葉目標位址 416(B,L):葉目標位址 500:流程圖 502:操作 504:操作 506:操作 508:操作 510:操作 512:操作 600:流程圖 602:操作 604:操作 606:操作 608:操作 610:操作 612:操作 614:操作 616:操作 618:操作 620:操作 622:操作 624:操作 626:操作 628:操作 630:操作 632:操作 634:操作 700:流程圖 702:操作 704:操作 800:基於處理器的系統 802:處理器 804:指令處理電路 806:BTB電路 808:指令快取記憶體 810:系統記憶體 812:系統匯流排 814:記憶體控制器 816:記憶體陣列 818:輸入設備 820:輸出設備 822:數據機 824:顯示控制器 826:網路 828:顯示器 830:指令 832:電腦可讀取媒體 I 0:指令排序緩衝 I N:指令排序緩衝
併入且形成本說明一部分的附圖圖示了本案的若干態樣,並且與描述一起用於解釋本案的原理。
第1圖為示例性基於處理器的系統的示圖,該系統包括具有指令處理電路的處理器,該指令處理電路包括分支目標緩衝(BTB)電路,該電路提供用於儲存主幹分支元資料和葉分支元資料的擴展BTB項目;
第2圖更詳細地圖示第1圖的BTB電路及擴展BTB項目的示例性功能;
第3圖圖示根據一些態樣的,示例性硬體高效的擴展BTB項目;
第4圖圖示根據一些態樣的,示例性高效能的擴展BTB項目;
第5圖為圖示由第1圖的BTB電路及分支預測器電路執行的示例性操作的流程圖,用於提供儲存主幹分支元資料和葉分支元資料的擴展BTB項目;
第6A圖至第6C圖為圖示根據一些態樣的用於在第3圖的硬體高效的擴展BTB項目中分配分支項目的示例性操作的流程圖;
第7圖為圖示根據一些態樣的用於在第4圖的高效能擴展BTB項目中分配分支項目的示例性操作的流程圖;以及
第8圖為示例性基於處理器的系統的方塊圖,該系統包括具有指令處理電路(諸如第1圖的指令處理電路)的處理器,該指令處理電路包括用於提供儲存主幹分支元資料和葉分支元資料的擴展BTB項目的BTB電路。
國內寄存資訊(請依寄存機構、日期、號碼順序註記) 無 國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記) 無
100:基於處理器的系統
102:處理器
104:指令處理電路
106:指令
106D:經解碼指令
106E:執行的指令
106F:經提取的指令
108:指令記憶體
110:提取電路
112:指令快取記憶體
114:執行電路
118:解碼電路
120:重命名電路
122:暫存器存取電路
124:排程器電路
126:寫入電路
128:分支預測器電路
130:分支指令
132:分支預測
134:BTB電路
136:BTB
138(0):擴展BTB項目
138(E):擴展BTB項目

Claims (20)

  1. 一種處理器,包含: 一指令處理電路,該指令處理電路經配置以處理包含一指令排序緩衝中的複數個指令的一指令串流;以及 一分支目標緩衝(BTB)電路,該BTB電路包含包括複數個擴展BTB項目的一BTB,該BTB電路經配置以: 將該複數個指令中的一第一分支指令的主幹分支元資料儲存在該複數個擴展BTB項目的一擴展BTB項目中,其中該擴展BTB項目對應於含有該第一分支指令的一位址的一第一對齊記憶體區塊;以及 將該複數個指令中的一第二分支指令的葉分支元資料與該主幹分支元資料相關聯地儲存於該擴展BTB項目中,其中該第二分支指令的一位址在一第二對齊記憶體區塊內的該第一分支指令的一目標位址之後。
  2. 如請求項1所述之處理器,其中: 該處理器進一步包含一分支預測器電路; 該分支預測器電路經配置以預測該第一分支指令被採用; 該BTB電路進一步經配置以: 識別包含對應於該第一分支指令的該主幹分支元資料的該擴展BTB項目;以及 從該擴展BTB項目中擷取與該第二分支指令相對應的該葉分支元資料;以及 該分支預測器電路進一步經配置以基於該葉分支元資料並且在一相同處理器週期內預測該第二分支指令的一目標。
  3. 如請求項1所述之處理器,其中: 該複數個擴展BTB項目中的每一擴展BTB項目包含複數個分支項目,每一分支項目經配置以儲存包含主幹分支元資料或葉分支元資料中的任一者的元資料; 該BTB電路經配置以: 藉由經配置以將該主幹分支元資料儲存於該擴展BTB項目的一第一分支項目中來儲存該主幹分支元資料;以及 藉由經配置以將該葉分支元資料儲存於該擴展BTB項目的一第二分支項目中來儲存該葉分支元資料;以及 該BTB電路進一步經配置以更新該第一分支項目以儲存該第二分支項目的一索引作為一葉分支索引。
  4. 如請求項3所述之處理器,其中該BTB電路進一步經配置以: 將具有一最低索引的一可用分支項目分配為該第一分支項目;以及 將具有一最高索引的一可用分支項目分配為該第二分支項目。
  5. 如請求項3所述之處理器,其中該BTB電路進一步經配置以: 決定該擴展BTB項目內無分支項目可用於分配; 將該第一分支項目識別為儲存葉分支元資料的一分支項目; 更新該擴展BTB項目內的任何主幹分支元資料,該主幹分支元資料含有作為一葉分支索引的該第一分支項目的該索引,以清除該葉分支索引;以及 重新分配該第一分支項目以儲存該主幹分支元資料。
  6. 如請求項3所述之處理器,其中該BTB電路進一步經配置以: 決定該擴展BTB項目內無分支項目可用於分配; 將該第二分支項目識別為儲存預先存在的葉分支元資料的一分支項目; 更新該擴展BTB項目內的任何主幹分支元資料,該主幹分支元資料含有作為一葉分支索引的該第二分支項目的該索引,以清除該葉分支索引;以及 重新分配該第二分支項目以儲存該葉分支元資料。
  7. 如請求項3所述之處理器,其中: 該複數個分支項目的每一分支項目與複數個優點計數器的一對應優點計數器相關聯;以及 該BTB電路經進一步配置以重新分配與具有一最低值的一優點計數器相關聯的一分支項目,作為該第一分支項目或該第二分支項目中的一者。
  8. 如請求項3所述之處理器,其中: 該複數個分支項目的每一分支項目與複數個優點計數器的一對應優點計數器相關聯;以及 該BTB電路經進一步經配置以將一或多個分支項目中的一分支項目重新分配為該第一分支項目或該第二分支項目中的一者,該一或多個分支項目各自與具有低於一優點閥值的一值的一優點計數器相關聯。
  9. 如請求項1所述之處理器,其中: 該複數個擴展BTB項目中的每一擴展BTB項目包含複數個分支項目,每一分支項目經配置以儲存主幹分支元資料及一或多個葉分支元資料兩者;以及 該BTB電路經配置以: 藉由經配置以將該主幹分支元資料儲存於該擴展BTB項目的一第一分支項目中來儲存該主幹分支元資料;以及 藉由經配置以將該葉分支元資料儲存於該擴展BTB項目的該第一分支項目中來儲存該葉分支元資料。
  10. 一種方法,包含以下步驟: 由一處理器的一分支目標緩衝(BTB)電路將一指令串流中的複數個指令中的一第一分支指令的主幹分支元資料儲存在一BTB的複數個擴展BTB項目中的一擴展BTB項目中,其中該擴展BTB項目對應於包含該第一分支指令的一位址的一第一對齊記憶體區塊;以及 藉由該BTB電路,將該複數個指令中的一第二分支指令的葉分支元資料與該主幹分支元資料相關聯地儲存於該擴展BTB項目中,其中該第二分支指令的一位址在一第二對齊記憶體區塊內的該第一分支指令的一目標位址之後。
  11. 如請求項10所述之方法,進一步包含以下步驟: 藉由該處理器的一分支預測器電路,預測該第一分支指令被採用; 藉由該BTB電路,識別含有與該第一分支指令相對應的該主幹分支元資料的該擴展BTB項目; 藉由該BTB電路,從該擴展BTB項目擷取與該第二分支指令相對應的該葉分支元資料;以及 藉由該分支預測器電路,基於該葉分支元資料並且在一相同處理器週期內預測該第二分支指令的一目標。
  12. 如請求項10所述之方法,其中: 該複數個擴展BTB項目中的每一擴展BTB項目包含複數個分支項目,每一分支項目經配置以儲存包含主幹分支元資料或葉分支元資料中的任一者的元資料; 儲存該主幹分支元資料之步驟包含以下步驟:在該擴展BTB項目的一第一分支項目中儲存該主幹分支元資料; 儲存該葉分支元資料之步驟包含以下步驟:在該擴展BTB項目的一第二分支項目中儲存該葉分支元資料;以及 該方法進一步包含以下步驟:藉由該BTB電路更新該第一分支項目以儲存該第二分支項目的一索引作為一葉分支索引。
  13. 如請求項12所述之方法,進一步包含以下步驟: 將具有一最低索引的一可用分支項目分配為該第一分支項目;以及 將具有一最高索引的一可用分支項目分配為該第二分支項目。
  14. 如請求項12所述之方法,進一步包含以下步驟: 決定該擴展BTB項目內無分支項目可用於分配; 將該第一分支項目識別為儲存葉分支元資料的一分支項目; 更新該擴展BTB項目內的任何主幹分支元資料,該主幹分支元資料含有作為一葉分支索引的該第一分支項目的該索引,以清除該葉分支索引;以及 重新分配該第一分支項目以儲存該主幹分支元資料。
  15. 如請求項12所述之方法,進一步包含以下步驟: 決定該擴展BTB項目內無分支項目可用於分配; 將該第二分支項目識別為儲存預先存在的葉分支元資料的一分支項目; 更新該擴展BTB項目內的任何主幹分支元資料,該主幹分支元資料含有作為一葉分支索引的該第二分支項目的該索引,以清除該葉分支索引;以及 重新分配該第二分支項目以儲存該葉分支元資料。
  16. 如請求項15所述之方法,其中: 該複數個分支項目的每一分支項目與複數個優點計數器的一對應優點計數器相關聯;以及 該方法進一步包含以下步驟:重新分配與具有一最低值的一優點計數器相關聯的一分支項目,作為該第一分支項目或該第二分支項目中的一者。
  17. 如請求項15所述之方法,其中: 該複數個分支項目的每一分支項目與複數個優點計數器的一對應優點計數器相關聯;以及 該方法進一步包含以下步驟:將一或多個分支項目中的一分支項目重新分配為該第一分支項目或該第二分支項目中的一者,該一或多個分支項目各自與具有低於一優點閥值的一值的一優點計數器相關聯。
  18. 如請求項10所述之方法,其中: 該複數個擴展BTB項目中的每一擴展BTB項目包含複數個分支項目,每一分支項目經配置以儲存主幹分支元資料及一或多個葉分支元資料兩者; 儲存該主幹分支元資料之步驟包含以下步驟:在該擴展BTB項目的一第一分支項目中儲存該主幹分支元資料;以及 儲存該葉分支元資料之步驟包含以下步驟:將該葉分支元資料儲存於該擴展BTB項目的該第一分支項目中。
  19. 一種非暫時性電腦可讀取媒體,具有儲存於其上的電腦可執行指令,當該等指令執行時,使得一處理器: 將一指令串流中的複數個指令中的一第一分支指令的主幹分支元資料儲存在一BTB的複數個擴展BTB項目中的一擴展分支目標緩衝(BTB)項目中,其中該擴展BTB項目對應於包含該第一分支指令的一位址的一第一對齊記憶體區塊;以及 將該複數個指令中的一第二分支指令的葉分支元資料與該主幹分支元資料相關聯地儲存於該擴展BTB項目中,其中該第二分支指令的一位址在一第二對齊記憶體區塊內的該第一分支指令的一目標位址之後。
  20. 如請求項19所述之非暫時性電腦可讀取媒體,其中該等電腦可執行指令進一步使得該處理器: 預測該第一分支指令被採用; 識別包含對應於該第一分支指令的該主幹分支元資料的該擴展BTB項目; 從該擴展BTB項目中擷取與該第二分支指令相對應的該葉分支元資料;以及 基於該葉分支元資料並且在一相同處理器週期內,預測該第二分支指令的一目標。
TW112116935A 2022-06-24 2023-05-08 提供用於儲存主幹分支元資料及葉分支元資料的擴展分支目標緩衝(btb)項目 TW202416125A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/808,916 2022-06-24
US17/808,916 US11915002B2 (en) 2022-06-24 2022-06-24 Providing extended branch target buffer (BTB) entries for storing trunk branch metadata and leaf branch metadata

Publications (1)

Publication Number Publication Date
TW202416125A true TW202416125A (zh) 2024-04-16

Family

ID=86710830

Family Applications (1)

Application Number Title Priority Date Filing Date
TW112116935A TW202416125A (zh) 2022-06-24 2023-05-08 提供用於儲存主幹分支元資料及葉分支元資料的擴展分支目標緩衝(btb)項目

Country Status (3)

Country Link
US (1) US11915002B2 (zh)
TW (1) TW202416125A (zh)
WO (1) WO2023249729A1 (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6247097B1 (en) 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
US20060218385A1 (en) * 2005-03-23 2006-09-28 Smith Rodney W Branch target address cache storing two or more branch target addresses per index
US10592248B2 (en) * 2016-08-30 2020-03-17 Advanced Micro Devices, Inc. Branch target buffer compression
US20190369999A1 (en) * 2018-06-04 2019-12-05 Advanced Micro Devices, Inc. Storing incidental branch predictions to reduce latency of misprediction recovery
WO2021108007A1 (en) 2020-05-30 2021-06-03 Futurewei Technologies, Inc. Apparatus and method for dual branch prediction
US20210373896A1 (en) * 2020-06-01 2021-12-02 Advanced Micro Devices, Inc. Merged branch target buffer entries

Also Published As

Publication number Publication date
US20230418615A1 (en) 2023-12-28
US11915002B2 (en) 2024-02-27
WO2023249729A1 (en) 2023-12-28

Similar Documents

Publication Publication Date Title
CN108780398B (zh) 在基于处理器系统中基于负载路径历史使用地址预测表以提供负载地址预测
US11023243B2 (en) Latency-based instruction reservation station clustering in a scheduler circuit in a processor
JP6375379B2 (ja) キャッシュ占有決定および命令スケジューリングのための方法および装置
JP2018523242A (ja) 命令オペランドのための狭い生成値をアウトオブオーダプロセッサ内のレジスタマップ内に直接記憶すること
US10108548B2 (en) Processors and methods for cache sparing stores
US11068273B2 (en) Swapping and restoring context-specific branch predictor states on context switches in a processor
US10437590B2 (en) Inter-cluster communication of live-in register values
US11726787B2 (en) Reusing fetched, flushed instructions after an instruction pipeline flush in response to a hazard in a processor to reduce instruction re-fetching
JP2022545848A (ja) 投機的データ要求が非投機的になるまでの、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新の延期
TW202416125A (zh) 提供用於儲存主幹分支元資料及葉分支元資料的擴展分支目標緩衝(btb)項目
US11392410B2 (en) Operand pool instruction reservation clustering in a scheduler circuit in a processor
US10896041B1 (en) Enabling early execution of move-immediate instructions having variable immediate value sizes in processor-based devices
CN111752610A (zh) 异构存储器中的性能管理单元(pmu)辅助层级选择
US11789740B2 (en) Performing branch predictor training using probabilistic counter updates in a processor
US11928474B2 (en) Selectively updating branch predictors for loops executed from loop buffers in a processor
US11036512B2 (en) Systems and methods for processing instructions having wide immediate operands
TW202420078A (zh) 用於在處理器中的獲取迴路中的預測控制指令的多個例項的分支資訊佇列項目的重用
WO2021141697A1 (en) Reach matrix scheduler circuit for scheduling of instructions to be executed in a processor