TWI503744B - 用於封裝迴圈中多個反覆之裝置、處理器及方法 - Google Patents

用於封裝迴圈中多個反覆之裝置、處理器及方法 Download PDF

Info

Publication number
TWI503744B
TWI503744B TW102121212A TW102121212A TWI503744B TW I503744 B TWI503744 B TW I503744B TW 102121212 A TW102121212 A TW 102121212A TW 102121212 A TW102121212 A TW 102121212A TW I503744 B TWI503744 B TW I503744B
Authority
TW
Taiwan
Prior art keywords
loop
loop buffer
buffer
micro
written
Prior art date
Application number
TW102121212A
Other languages
English (en)
Other versions
TW201411486A (zh
Inventor
Conrado Blasco-Allue
Ian D Kountanis
Original Assignee
Apple 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 Apple Inc filed Critical Apple Inc
Publication of TW201411486A publication Critical patent/TW201411486A/zh
Application granted granted Critical
Publication of TWI503744B publication Critical patent/TWI503744B/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
    • 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop 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/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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/3816Instruction alignment, e.g. cache line crossing
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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
    • 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/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Description

用於封裝迴圈中多個反覆之裝置、處理器及方法
本發明大體上係關於處理器,且詳言之係關於用於在迴圈緩衝器中封裝迴圈之多個反覆的方法及機制。
現代處理器系統傾向於以管線式方式結構化為多個級。典型管線通常包括用於提取指令、對指令進行解碼、映射指令、執行指令及接著將結果寫入至另一單元(諸如暫存器)的單獨單元。微處理器之指令提取單元負責將持續的指令串流提供至處理器管線的下一級。通常,提取單元利用指令快取記憶體以便使管線其餘部分保持連續地供應有指令。在執行其所需功能的同時,提取單元及指令快取記憶體傾向於消耗大量功率。現代微處理器之目標為儘可能多得減少功率消耗,對於在電池供電的行動器件中利用之微處理器尤其如此。
在許多軟體應用程式中,相同的軟體步驟可能重複許多次以執行特定功能或任務。在此等情形下,即使正連續地執行指令之相同迴圈,提取單元亦將繼續提取指令及消耗功率。若可在迴圈緩衝器中偵測及快取迴圈,則在該迴圈執行的同時,可將提取單元關機以減少功率消耗。然而,在正使用迴圈緩衝器時,此情況可為在處理器管線中最大化指令輸送量之挑戰。此可導致處理器以小於全效率而操作。
揭示用於最大化自一迴圈緩衝器的每循環指令輸送量的裝置、 處理器及方法。為最大化每循環指令輸送量,該迴圈緩衝器可與一迴圈之多個反覆封裝在一起。在一實施例中,一處理器管線之前端可包括一提取單元、迴圈緩衝器及一迴圈緩衝器控制單元。該迴圈緩衝器控制單元可監視及追蹤迴圈候選項,且判定應在該迴圈緩衝器中快取哪些迴圈候選項。
在一實施例中,當一迴圈候選項符合用於快取之準則時,該迴圈緩衝器控制單元可向該提取單元發回需要將該迴圈之開始寫入至該迴圈緩衝器之第一槽的信號。在該提取單元中,可識別並標記該迴圈候選項之反向已採取分支(backwards taken branch)。接著,可將下一指令識別並標記為該迴圈之該開始。當該提取單元自該迴圈緩衝器控制單元接收到應在該迴圈緩衝器中快取該迴圈候選項之該信號時,該提取單元可在該反向已採取分支之後假性停頓。接著,在下一時脈循環中,該提取單元可將識別為該迴圈之該開始的該指令輸出至該迴圈緩衝器的該第一槽中。又,在正寫入至該迴圈緩衝器的該迴圈之最後反覆之結束處,當遇到該反向已採取分支時,該提取單元可在該反向已採取分支被寫入至該迴圈緩衝器之後假性停頓。
在一實施例中,當一迴圈反覆之該反向已採取分支被寫入至該迴圈緩衝器時,可判定該迴圈緩衝器是否至少半滿。若該迴圈緩衝器未半滿,則可將該迴圈之另一反覆寫入至該迴圈緩衝器。若該迴圈緩衝器半滿,則可終止寫入至該迴圈緩衝器。在完成寫入至該迴圈緩衝器之後,該迴圈之該(等)反覆可自該迴圈緩衝器分派至該處理器管線之下一級。
鑒於以下對本文中所呈現之方法的詳細描述,對於一般熟習此項技術者而言,此等及其他特徵以及優勢將變得顯而易見。
10‧‧‧積體電路(IC)
12‧‧‧處理器複合體
14‧‧‧中央處理單元/中央處理器
16‧‧‧中央處理單元/中央處理器
18‧‧‧二階(L2)快取記憶體
20‧‧‧匯流排介面單元(BIU)
22‧‧‧記憶體控制器
24‧‧‧記憶體實體介面電路(PHY)
26‧‧‧記憶體實體介面電路(PHY)
30‧‧‧核心
32‧‧‧提取及解碼(FED)單元
33‧‧‧一階(L1)指令快取記憶體
34‧‧‧對準器
35‧‧‧迴圈緩衝器
36‧‧‧映射及分派單元
38‧‧‧重新排序緩衝器(ROB)
40‧‧‧記憶體管理單元(MMU)
42‧‧‧核心介面單元(CIF)
44‧‧‧執行單元
46‧‧‧負載儲存單元(LSU)
48‧‧‧L1資料快取記憶體
50‧‧‧儲存佇列
52‧‧‧負載佇列
60‧‧‧提取前端
62‧‧‧迴圈緩衝器
64‧‧‧迴圈緩衝器控制單元
66‧‧‧分支追蹤表
68‧‧‧多工器
70A‧‧‧解碼器
70B‧‧‧解碼器
70C‧‧‧解碼器
70D‧‧‧解碼器
70E‧‧‧解碼器
70F‧‧‧解碼器
80‧‧‧提取前端
82A‧‧‧解碼器
82B‧‧‧解碼器
82C‧‧‧解碼器
82D‧‧‧解碼器
82E‧‧‧解碼器
82F‧‧‧解碼器
84‧‧‧迴圈緩衝器
86‧‧‧迴圈緩衝器控制單元
88‧‧‧分支追蹤表
90‧‧‧多工器
100‧‧‧對準器
102‧‧‧指令佇列
103‧‧‧反覆邊界
104‧‧‧指令縱橫式矩陣
110‧‧‧迴圈緩衝器
112‧‧‧中間點
120‧‧‧方法
140‧‧‧系統
142‧‧‧外部記憶體
144‧‧‧周邊裝置
146‧‧‧電源供應器
150‧‧‧桌上型電腦
160‧‧‧膝上型電腦
170‧‧‧平板電腦
180‧‧‧蜂巢式電話
190‧‧‧電腦可讀媒體
藉由結合隨附圖式參照以下描述,可更好地理解該等方法及機 制的以上及另外優勢,其中:圖1說明積體電路之一部分的一實施例。
圖2為說明處理器核心的一實施例之方塊圖。
圖3為說明處理器管線之前端的一實施例之方塊圖。
圖4說明提取及解碼單元內之迴圈緩衝器的另一實施例之方塊圖。
圖5為對準器之一實施例。
圖6說明在迴圈緩衝器中快取之迴圈的一實施例。
圖7說明在迴圈緩衝器中快取之迴圈的多個反覆之一實施例。
圖8說明在迴圈緩衝器中快取之迴圈的多個反覆之另一實施例。
圖9為說明用於追蹤迴圈候選項之方法的一實施例的一般化流程圖。
圖10為系統的一實施例之方塊圖。
圖11為電腦可讀媒體的一實施例之方塊圖。
在以下描述中,闡述眾多特定細節以提供本文中所呈現之方法及機制的全面理解。然而,一般技術者應認識到,無需此等特定細節亦可實踐各種實施例。在一些情況下,未詳細展示眾所熟知的結構、組件、信號、電腦程式指令及技術以避免混淆本文中所描述的方法。應瞭解,為說明之簡單及清楚起見,該等圖式中所示之元件未必係按比例繪製。舉例而言,相對於其他元件,一些元件的大小可能經誇大。
本說明書包括對「一實施例」的參考。不同上下文中出現的片語「在一實施例中」未必係指相同實施例。可與本發明一致之任何合適方式來組合特定特徵、結構或特性。此外,如貫穿本申請案所使用,詞「可」係在允許意義(亦即,意謂有可能)而非強制意義(亦即, 意謂必須)上使用。類似地,詞「包括」意謂包括但不限於。
術語。以下段落為本發明中(包括附加申請專利範圍)所見之術語提供定義及/或上下文:「包含」。此術語為開放式術語。於附加申請專利範圍中使用時,此術語並不排除額外結構或步驟。考慮敍述為「一種處理器,其包含一迴圈緩衝器控制單元……」之請求項。此請求項並不排除處理器包括額外的組件(例如,快取記憶體、提取單元、執行單元)。
「經組態以」。可將各種單元、電路或其他組件描述或主張為「經組態以」執行一或多個任務。在該等上下文中,「經組態以」用以藉由指示單元/電路/組件包括在操作期間執行該一或多個任務之結構(例如,電路)而暗示結構。因而,即使當所指定之單元/電路/組件並非同時操作(例如,並未同時在作用中)時,仍可稱單元/電路/組件經組態以執行任務。與「經組態以……」語言一起使用的單元/電路/組件包括硬體,例如,電路、儲存可執行以實施操作之程式指令的記憶體等。敍述一單元/電路/組件「經組態以」執行一或多個任務對於彼單元/電路/組件而言並不明確地意欲援引35 U.S.C.§ 112第六段。另外,「經組態以」可包括由軟體及/或韌體(例如,FPGA或執行軟體之通用處理器)操縱以便以能夠執行相關任務之方式操作的一般結構(例如,一般電路)。「經組態以」亦可包括調適製造過程(例如,半導體製造設備)以製造適於實施或執行一或多個任務的器件(例如,積體電路)。
「基於」。如本文中所使用,此術語用以描述影響判定之一或多個因素。此術語並不排除可影響判定之額外因素。亦即,一判定可僅僅基於彼等因素或至少部分地基於彼等因素。考慮片語「基於B來判定A」。雖然B可為影響A之判定之一因素,但此片語並不排除A之判定亦基於C。在其他情況下,可僅僅基於B來判定A。
現參照圖1,展示說明積體電路(IC)之一部分的一實施例之方塊圖。在所說明的實施例中,IC 10包括處理器複合體12、記憶體控制器22及記憶體實體介面電路(PHY)24及26。應注意,IC 10亦可包括圖1中未展示的許多其他組件。在各種實施例中,IC 10亦可被稱作系統單晶片(SoC)、特殊應用積體電路(ASIC)或其他裝置。
處理器複合體12可包括中央處理單元(CPU)14及16、二階(L2)快取記憶體18及匯流排介面單元(BIU)20。在其他實施例中,處理器複合體12可包括其他數目個CPU。CPU 14及16亦可被稱作處理器或核心。應注意,處理器複合體12可包括圖1中未展示的其他組件。
CPU 14及16可包括用以執行指令集架構中所定義之指令的電路。特定而言,包含指令的一或多個程式可由CPU 14及16執行。可在各種實施例中實施任何指令集架構。舉例而言,在一實施例中,可實施ARMTM 指令集架構(ISA)。ARM指令集可包括16位元(或稱Thumb)及32位元指令。其他例示性ISA可包括PowerPCTM 指令集、MIPSTM 指令集、SPARCTM 指令集、x86指令集(亦被稱作IA-32)、1A-64指令集等。
在一實施例中,由CPU 14及16執行的每一指令可與程式計數器(PC)值相關聯。又,可在一些用於讀取及寫入之指令中指定一或多個架構暫存器。此等架構暫存器可由暫存器重新命名單元映射至實際實體暫存器。此外,一些指令(例如,ARM Thumb指令)可斷裂成指令操作(或微操作)序列,且序列中之每一指令操作可由唯一的微操作(或uop)編號指代。
CPU 14及16中之每一者亦可包括一階(L1)快取記憶體(未展示),且每一L1快取記憶體可耦合至L2快取記憶體18。其他實施例可包括額外階之快取記憶體(例如,三階(L3)快取記憶體)。在一實施例中,L2快取記憶體18可經組態以快取指令及資料以供由CPU 14及16進行 低潛時存取。L2快取記憶體18可包含任何能力及組態(例如,直接映射式、集合關聯式)。L2快取記憶體18可經由BIU 20耦合至記憶體控制器22。BIU 20亦可包括各種其他邏輯結構以將CPU 14及16以及L2快取記憶體18耦合至各種其他器件及區塊。
記憶體控制器22可包括任何數目個記憶體埠,且可包括經組態以介接至記憶體之電路。舉例而言,記憶體控制器22可經組態以介接至動態隨機存取記憶體(DRAM),諸如,同步DRAM(SDRAM)、雙資料速率(DDR)SDRAM、DDR2 SDRAM、Rambus DRAM(RDRAM)等。記憶體控制器22亦可耦合至記憶體實體介面電路(PHY)24及26。記憶體PHY 24及26表示可耦合至記憶體控制器22之任何數目個記憶體PHY。記憶體PHY 24及26可經組態以介接至記憶體器件(未展示)。
應注意,其他實施例可包括組件之其他組合,包括圖1中所展示之組件之子集或超集及/或其他組件。雖然圖1可展示給定組件之一例項,但其他實施例可包括給定組件的兩個或兩個以上例項。類似地,貫穿此詳細描述,即使僅展示一例項,但可包括給定組件之兩個或兩個以上例項,及/或即使展示多個例項,但可使用包括僅一例項的實施例。
現轉向圖2,展示處理器核心之一實施例。核心30為處理器核心之一實例,且核心30可在諸如圖1之處理器複合體12的處理器複合體內利用。在一實施例中,圖1之CPU 14及16中之每一者可包括核心30的組件及功能。核心30可包括提取及解碼(FED)單元32、映射及分派單元36、記憶體管理單元(MMU)40、核心介面單元(CIF)42、執行單元44,及負載儲存單元(LSU)46。應注意,核心30可包括圖2中未展示的其他組件及介面。
FED單元32可包括經組態以讀取來自記憶體的指令且將該等指令置放於一階(L1)指令快取記憶體33中之電路。L1指令快取記憶體33可 為用於儲存待由核心30執行之指令的快取記憶體。L1指令快取記憶體33可具有任何能力及構造(例如,直接映射式、集合關聯式、全關聯式等)。此外,L1指令快取記憶體33可具有任何快取行大小。FED單元32亦可包括經組態以預測分支指令及沿著預測出之路徑進行提取的分支預測硬體。亦可重定向FED單元32(例如,經由錯誤預測、異常、中斷、清除等)。
在一實施例中,FED單元32可經組態以在多個步驟中將指令解碼為指令操作。另外,FED單元32亦可經組態以對多個指令進行並行解碼。更特定而言,指令可自L1指令快取記憶體33拉取出且被解碼為經預解碼之指令,且對準器34可經組態以將經預解碼之指令遞送至迴圈緩衝器35的適當單工通道及/或解碼單元(未展示)。解碼單元可經組態以執行剩餘解碼來將經預解碼之指令轉換成指令操作。
一般而言,指令操作可為包括於執行單元44及LSU 46中的硬體能夠執行之操作。每一指令可轉譯成一或多個指令操作,當執行該等指令操作時,其導致根據指令集架構針對彼指令而定義的操作之執行。應注意,術語「指令操作」及「微操作」貫穿本發明可互換地使用。在其他實施例中,包括於FED單元32內之功能可分裂成兩個或兩個以上單獨單元,諸如,提取單元、解碼單元及/或其他單元。
在各種ISA中,一些指令可解碼成單一微操作。FED單元32可經組態以識別指令類型、源運算元等,且每一經解碼之指令操作可包含指令以及一些解碼資訊。在每一指令轉譯成單一微操作的其他實施例中,每一微操作可簡單地為對應指令或對應指令之部分(例如,指令之操作碼欄位)。在一些實施例中,FED單元32可包括用於產生指令之微操作的電路及/或微碼的任何組合。舉例而言,可在硬體中處置相對簡單的微操作產生(例如,每指令一或兩個微操作),而可在微碼中處置更廣泛的微操作產生(例如,一指令三個以上微操作)。
經解碼之微操作可提供至映射/分派單元36。映射/分派單元36可經組態以將微操作及架構暫存器映射至核心30之實體暫存器。映射/分派單元36可實施暫存器重新命名以將來自微操作之源暫存器位址映射至識別經重新命名之源暫存器的源運算元編號。映射/分派單元36亦可經組態以將微操作分派至執行單元44及LAU 46內之保留站(未展示)。
在一實施例中,映射/分派單元36可包括重新排序緩衝器(ROB)38。在其他實施例中,ROB 38可位於其他位置。在被分派之前,可將微操作寫入至ROB 38。ROB 38可經組態以保持微操作直至其可按次序提交。每一微操作可指派有對應於ROB 38中之特定項的ROB索引(RNUM)。RNUM可用於追蹤核心30中正在進行之操作。映射/分派單元36亦可包括圖2中未展示的其他組件(例如,映射器陣列、分派單元、分派緩衝器)。此外,在其他實施例中,包括於映射/分派單元36內之功能可分裂成兩個或兩個以上單獨單元,諸如,映射單元、分派單元及/或其他單元。
執行單元44可包括任何數目及類型之執行單元(例如,整數、浮點、向量)。執行單元44中之每一者亦可包括一或多個保留站(未展示)。CIF 42可耦合至LSU 46、FED單元32、MMU 40及L2快取記憶體(未展示)。CIF 42可經組態以管理核心30與L2快取記憶體之間的介面。MMU 40可經組態以執行位址轉譯及記憶體管理功能。
LSU 46可包括L1資料快取記憶體48、儲存佇列50及負載佇列52。負載及儲存操作可自映射/分派單元36分派至LSU 46內之保留站。存儲佇列50可儲存對應於儲存操作的資料,且負載佇列52可儲存與負載操作相關聯的資料。LSU 46亦可經由CIF 42耦合至L2快取記憶體。應注意,LSU 46亦可包括圖2中未展示的其他組件(例如,保留站、暫存器檔案、預取單元、轉譯後備緩衝器)。
應理解,圖2中所說明的功能分佈並非可用於處理器核心的唯一可能微架構。其他處理器核心可包括其他組件、省略所展示之組件中之一或多者及/或包括在該等組件當中的不同功能配置。
現參照圖3,展示處理器管線之前端的一實施例之方塊圖。在一實施例中,圖3中所展示的前端邏輯可位於提取及解碼單元(諸如(圖2之)FED單元32)內。應理解,圖3中所說明的功能分佈為在處理器管線中實施迴圈緩衝器的唯一可能結構。用於實施迴圈緩衝器的其他合適之邏輯分佈係可能且被涵蓋。
提取前端60可經組態以提取指令並對指令進行預解碼,且接著將經預解碼之微操作輸送至迴圈緩衝器62及解碼器70A至70F(經由多工器68)。在一實施例中,提取前端60可經組態以每循環輸出六個經預解碼之微操作。在其他實施例中,提取前端60可經組態以每循環輸出其他數目個經預解碼之微操作。
迴圈緩衝器62、多工器68及解碼器70A至70F可具有用於處理及/或儲存每循環六個微操作之六個單工通道(lane)。每一單工通道可包括一有效位元以指示該單工通道是否含有有效微操作。應注意,迴圈緩衝器62、多工器68及解碼器70A至70F之「單工通道」亦可被稱作「槽(slot)」或「項」。在其他實施例中,迴圈緩衝器62、多工器68及解碼器70A至70F可包括六個以上或六個以下之單工通道,且提取前端60可經組態以儘可能多地輸出管線的下一級可容納之每循環微操作。
提取前端60可自指令快取記憶體(未展示)抓取原始指令資料、在資料中偵測指令邊界、在指令快取緩衝器(未展示)及/或對準器(未展示)中緩衝指令、將指令擴展成具有多達六個微操作之集合及針對此等微操作產生適當的有效負載。每一集合之多達六個微操作可被稱作「解碼群組」。在其他實施例中,解碼群組可包括其他數目個微操作。 解碼群組可在每一時脈循環中被遞送至迴圈緩衝器62及多工器68之單工通道。如本文中所使用,「單工通道」可被定義為包括經組態以在每一時脈循環中處理及/或儲存微操作之邏輯的路徑。
提取前端60可將指令擴展成微操作且將此等微操作饋入至迴圈緩衝器62及多工器68。在一實施例中,由提取前端60提取且被解碼成經預解碼之微操作的指令可係基於ARM ISA。每一經預解碼之微操作可包括指令操作碼位元、指令預解碼位元及微操作編號。指令操作碼位元指定待執行之操作。預解碼位元指示指令映射至的微操作之數目。微操作編號表示應產生多微操作指令序列中的哪個微操作。在其他實施例中,可利用其他ISA,且可以多種方式對指令進行解碼及格式化。
當處理器未處於迴圈緩衝器模式時,則由提取前端60產生之經預解碼之微操作可經由多工器68輸送至解碼器70A至70F。來自迴圈緩衝器控制單元64的選擇信號可耦合至多工器68以判定哪條路徑經由多工器68而耦合至解碼器70A至70F之輸入。當處理器處於迴圈緩衝器模式時,經預解碼之微操作可自迴圈緩衝器62讀出且輸送至解碼器70A至70F。可對經預解碼之微操作進行解碼,且接著將其自解碼器70A至70F之輸出輸送至處理器管線的下一級。在一實施例中,處理器管線的下一級可為映射/分派單元,諸如,圖2之映射/分派單元36。
迴圈緩衝器控制單元64可經組態以在所提取及經預解碼之指令內識別迴圈。一旦迴圈已以某種程度的確定性被識別出,則迴圈緩衝器控制單元64可使得迴圈在迴圈緩衝器62中快取,可將提取前端60關機,且接著可自迴圈緩衝器62饋入處理器管線之其餘部分。迴圈之多個反覆可在迴圈緩衝器62中快取,且可重複地沿著管線分派此等經快取之反覆。當將迴圈之反覆寫入至迴圈緩衝器62時,迴圈緩衝器控制單元64可利用寫入指標以判定哪列正被寫入至迴圈緩衝器62。類似 地,當自迴圈緩衝器62讀取時,可利用讀取指標以指向正自其讀取之當前列。
為識別用於快取之迴圈,首先可在所提取之指令中偵測反向已採取分支。「反向已採取分支」可被定義為分支至指令序列中之先前指令的已採取分支。反向已採取分支去往之指令可被認為係迴圈之開始。在一實施例中,僅某些類型之迴圈可被認為係用於緩衝之候選項。舉例而言,在一實施例中,對於被認為係用作緩衝之迴圈候選項,迴圈之所有反覆應恆定不變。
迴圈緩衝器控制單元64可監視指令串流以發現形成符合迴圈緩衝之準則的迴圈之指令。迴圈緩衝器控制單元64可擷取關於給定迴圈候選項之所有資訊。對於某一時間段,可在多個反覆之上追蹤迴圈候選項以確保迴圈候選項保持不變。舉例而言,可在第一反覆上記錄自迴圈之開始至迴圈內之一或多個指令的距離,且在後續反覆上監視該等距離以判定此等距離是否保持相同。
在一些實施例中,即使迴圈候選項恆定不變且符合以上所列之其他準則,迴圈候選項之其他特徵亦可能使其喪失在迴圈緩衝器62中被快取之資格。舉例而言,若迴圈候選項之大小太大而不能適配於迴圈緩衝器62,則該迴圈候選項可能喪失資格。又,迴圈內之已採取分支可存在最大可允許數目,其等於分支追蹤表66之大小。若已採取分支的數目超過此數目,則可排除該迴圈而不考慮將其作為用於在迴圈緩衝器62中快取之候選項。在一實施例中,分支追蹤表66可包括用於迴圈內之已採取分支的八個項。在其他實施例中,分支追蹤表66可具有用於迴圈內之已採取分支的八個以上或八個以下項。
在一實施例中,一旦已偵測到相同的反向已採取分支一次以上,則可由迴圈緩衝器控制單元64起始狀態機以擷取用於彼迴圈之資訊。舉例而言,迴圈緩衝器控制單元64可利用分支追蹤表66以追蹤迴 圈候選項之已採取分支。分支追蹤表66可追蹤自迴圈之開始至每一已採取分支的距離。
若迴圈之每一反覆執行而使得自迴圈之開始至每一分支存在相同數目個微操作,則可認為迴圈候選項恆定不變。在判定迴圈候選項恆定不變且應進行快取之前,可針對一定數目個反覆而追蹤至表66中的每一分支之距離。經分配用於追蹤迴圈候選項之不變性的時間量可係基於迴圈反覆之數目及/或所遇到的分支之數目。
現轉向圖4,展示提取及解碼單元內之迴圈緩衝器之另一實施例。在一實施例中,迴圈緩衝器84可在處理器管線中位於解碼器82A至82F之下游,如圖4中所展示。此與位於處理器管線中的解碼器70A至70F上游的(圖3之)迴圈緩衝器62形成對比。在一實施例中,迴圈緩衝器84可組織成列及行(或單工通道)。在一實施例中,迴圈緩衝器84可具有16列及6行。在其他實施例中,迴圈緩衝器84可包括其他數目個列及行。
提取前端80可提取指令,並將所提取之指令預解碼成經預解碼之微操作。接著,經預解碼之微操作可輸送至解碼器82A至82F。在一實施例中,提取前端80可經組態以每循環產生六個經預解碼之微操作,並將該等微操作輸送至解碼器82A至82F的六個單工通道。解碼器82A至82F可將經預解碼之微操作解碼為經解碼之微操作。接著,解碼器82A至82F可將經解碼之微操作經由多工器90輸送至處理器管線的下一級。又,當已識別出迴圈候選項且其已符合用於快取至迴圈緩衝器84之準則時,解碼器82A至82F可將微操作輸送至迴圈緩衝器84。多工器90之輸出可耦合至處理器管線的下一級。在一實施例中,處理器管線的下一級可為映射/分派單元。
迴圈緩衝器84、迴圈緩衝器控制單元86及分支追蹤表88可經組態以執行類似於與圖3中所展示的處理器前端相關之彼等所描述的功 能。圖4中之一關鍵差異為迴圈緩衝器84可儲存經解碼之微操作,而相對地,圖3中之迴圈緩衝器62儲存經預解碼之微操作。因此,迴圈緩衝器84可比迴圈緩衝器62大小較大以容納較大量之資料,此係由於經解碼之微操作通常比經預解碼之微操作具有更多資訊。應注意,除圖3及圖4中所展示的兩個位置之外,迴圈緩衝器84亦可位於處理器管線內的其他位置。舉例而言,迴圈緩衝器84可位於提取前端內,或替代地,迴圈緩衝器84可位於映射/分派單元內。取決於迴圈緩衝器在管線中所處之位置,儲存於迴圈緩衝器中的迴圈之內容可基於已在管線中之彼點處執行之指令處理量而改變。
在一實施例中,在迴圈候選項之初始反覆時,迴圈緩衝器控制單元86可將自迴圈之開始至迴圈之每一已採取分支之距離填入分支追蹤表88。在迴圈之後續反覆時,控制單元86可判定每一分支距迴圈之開始的距離是否與表88中所儲存之對應距離相同。在迴圈候選項已對於某一數目個反覆而恆定不變之後,接著可在迴圈緩衝器84中快取該迴圈候選項且將其自迴圈緩衝器84饋入管線之其餘部分。當迴圈正自迴圈緩衝器84分派至處理器管線之其餘部分時,可切斷提取前端80及解碼器82A至82F之電源。
現參照圖5,展示對準器之一實施例。對準器100可為提取單元之部分,且對準器100可包括指令佇列102及指令縱橫式矩陣(instruction crossbar)104。可在指令快取記憶體(未展示)中之指令資料內偵測指令邊界,且接著可將該等指令輸送至指令佇列102。指令佇列102可具有任何能力及構造。對準器100可經組態以使解碼單元保持供應有每一時脈循環適當數目個經預解碼之指令,其中該適當數目係基於處理器架構。舉例而言,在一實施例中,可存在六個解碼器,且因此對準器100可經組態以每時脈循環產生多達六個經預解碼之微操作且將該等微操作輸送至六個解碼器。在其他實施例中,對準器 100可經組態以每時脈循環產生其他數目個經預解碼之微操作。
每一時脈循環中,對準器100可察看(look at)對應於指令序列中之接下來六個微操作的指令佇列102中之指令。對準器100可經由指令縱橫式矩陣104而將此等指令指派至適當的解碼器槽。對準器100亦可經組態以識別迴圈反覆之邊界(例如,反覆邊界103)。舉例而言,當迴圈候選項符合用於快取之準則時,則可識別出最近反覆之反向已採取分支(BTB)、指令C。
在圖5所展示之實例中,指令佇列102中所展示的指令包括指令A、B、C(BTB)、D、E及F。由於指令D接著BTB,由此可將D標記為迴圈之開始。每一指令可裂化為一或多個微操作,且當指令填充入指令快取記憶體時,可對指令映射至的微操作之編號進行預解碼。當判定應在迴圈緩衝器(未展示)中快取迴圈時,迴圈緩衝器控制單元(未展示)可將信號發送至對準器100以在迴圈之BTB之後停頓。
如圖5中所展示,對準器100可在時脈循環「N」中將僅將三個微操作寫入至解碼器槽。此等三個微操作為A、B及C(BTB)。在此實例中,指令A、B及C中之每一者為單一微操作指令。如可見於時脈循環「N」中,由於BTB(指令C)被指派至槽2,因此槽3至5為空。對準器100在BTB被指派至解碼器槽之後停頓,且接著對於時脈循環「N」,不填充剩餘的槽。在下一時脈循環時,對準器100將迴圈之開始指派至槽0。指令D為迴圈之開始,且在此實例中,指令D為三微操作指令,因此在時脈循環「N+1」中,對應之三個微操作(D-0、D-1及D-2)被指派至解碼器槽0至2。在時脈循環「N+1」中,對應於指令E之兩個微操作佔據槽3及4,且對應於指令F之微操作可被指派至槽5。
在時脈循環「N」及「N+1」中所展示之微操作可輸送至解碼器單元及迴圈緩衝器兩者。在迴圈正被寫入至迴圈緩衝器時,可繼續將迴圈饋入管線的下一級(例如,解碼器)。在將迴圈之一或多個反覆寫 入至迴圈緩衝器之後,接著可由迴圈緩衝器饋入管線之後端,且可切斷前端之電源。
對準器100亦可以類似方式在寫入至迴圈緩衝器的迴圈之最後反覆之結束處停頓。BTB被指派至之任何槽將為寫入至迴圈緩衝器中的彼列內之最後槽。舉例而言,若在將最終迴圈反覆寫入至迴圈緩衝器之最後時脈循環中將BTB寫入至槽1,則可將剩餘的槽(槽2至5)留空。以此方式,當自以位於迴圈緩衝器的第一列的槽0中之迴圈的第一反覆之第一微操作為開始的迴圈緩衝器中讀提取迴圈時,下一時脈循環上可存在正常交遞。
現參照圖6,展示封裝於迴圈緩衝器中的迴圈之單一反覆之一實施例。在此實例中,迴圈可為七微操作迴圈,其中每一微操作在迴圈緩衝器110中被標記為「迴圈1」。應注意,此僅為迴圈之一實例,且其他迴圈可包括其他數目個微操作。亦應注意,迴圈緩衝器110可位於處理器管線內的各種位置中之任何者,其中位置之兩個實例展示於圖3及圖4中。雖然迴圈緩衝器110展示為包括六個單工通道(標記為0至5),但應注意,其他迴圈緩衝器可具有其他數目個單工通道。亦應注意,迴圈緩衝器110之「單工通道」亦可被稱作「槽」或「行」。
迴圈1之前六個微操作可寫入至迴圈緩衝器110之第一列。對應於反向已採取分支的最後微操作可填充迴圈緩衝器110之第二列之第一項。對於此迴圈,將花費兩個循環來將迴圈分派至處理器管線之下一級,且微操作之每循環平均輸出將為3.5(兩時脈循環中有七個微操作)。此遠小於每循環六個微操作的最大可能每循環微操作輸送量。為改良每循環微操作輸送量,可將迴圈之一個以上反覆寫入至迴圈緩衝器110,下文將更詳細描述該情況。
在其他實施例中,迴圈緩衝器110可包括除六之外的其他數目個單工通道。舉例而言,在另一實施例中,迴圈緩衝器110可具有八個 單工通道。在此實施例中,當自迴圈緩衝器110分派此九微操作迴圈時,具有九個微操作之迴圈將具有低效的每循環微操作輸送量。在此實例中,每兩個時脈循環分派九個微操作,每循環指令將平均為4.5。對於此實施例,此將遠低於八個微操作的最大可能每循環微操作輸送量。
在各種實施例中,不同格式之指令可儲存於迴圈緩衝器110中。所利用之不同格式可包括指令、指令操作、經預解碼之微操作、經解碼之微操作、微操作、操作或其他格式。術語「每循環指令」、「每循環指令操作」及「每循環微操作」可用於大體上描述輸送量,且應理解,此等術語可係關於多種指令格式中之任一者。
現轉向圖7,展示封裝於迴圈緩衝器中的迴圈之多個反覆之一實施例。在一實施例中,迴圈可為七個微操作長。對於迴圈之每一微操作,寫入至迴圈緩衝器110的迴圈之第一反覆標記為「迴圈1」,且展示於迴圈緩衝器110內之第一列及第二列之單工通道0中。標記為「迴圈2」的迴圈之第二反覆可在迴圈之第一反覆結束處啟動而寫入至迴圈緩衝器110。「迴圈2」之第一微操作可置放於與「迴圈1」之最後微操作同列之鄰近項中。此外,迴圈的第二反覆之前五個微操作可寫入至迴圈緩衝器110之第二列的單工通道1至5,且第二反覆之最終兩個微操作可寫入至迴圈緩衝器110之第三列。可針對寫入至迴圈緩衝器110的迴圈之接下來的五個反覆繼續此型樣。寫入至迴圈緩衝器110之每一迴圈反覆與其他迴圈反覆相同。換言之,每一迴圈反覆含有與寫入至迴圈緩衝器110之其他迴圈反覆完全相同的微操作,且無法與任何其他迴圈反覆相區別。
如圖7中所展示,迴圈緩衝器110具有16列之項,且中間點112在第八列之後。在一實施例中,在迴圈之反覆正寫入至迴圈緩衝器110時,當迴圈之最後微操作(亦即,反向已採取分支)已寫入至迴圈緩衝 器110時,則迴圈緩衝器控制單元可進行檢查以查看是否已達到中間點112。若已達到中間點112,則停止將迴圈之更多反覆寫入至迴圈緩衝器110。若未達到中間點112,則可將迴圈之另一反覆寫入至迴圈緩衝器110。
在圖7中所展示之實例中,當處理器處於迴圈緩衝器模式時,自迴圈緩衝器110的平均每循環微操作輸出將為約每循環5.4個微操作輸送量(9個循環中有49個微操作)。相比於針對圖6中所展示之實例的3.5個微操作之平均每循環微操作輸送量,此係一改良。
現參照圖8,展示將迴圈之多個反覆寫入至迴圈緩衝器的另一實施例。在此實施例中,類似於圖7中所展示的實例,可將迴圈之多個反覆寫入至迴圈緩衝器110。然而,在此實施例中,當達到迴圈反覆之結束時,可檢查單獨條件。可檢查之條件可為迴圈反覆之最終微操作是否被寫入至迴圈緩衝器110之最終單工通道(亦即,單工通道5)。若符合此條件,則可停止將迴圈之反覆寫入至迴圈緩衝器110。若不符合此條件,則可判定是否已達到中間點112。如已達到中間點112,則可停止寫入至迴圈緩衝器110。若未達到中間點112,則可將迴圈之另一反覆寫入至迴圈緩衝器110。
基於此等條件,可將七微操作迴圈之六個反覆寫入至迴圈緩衝器110。在迴圈之第六反覆已寫入至迴圈之後,將第六反覆之最後微操作寫入至第七列之單工通道5。因此,自迴圈緩衝器110的每循環微操作輸出將得以最大化,且因此無需將更多反覆寫入至迴圈緩衝器110。即使尚未達到中間點112,仍可停止寫入。
應注意,在其他實施例中,在將反覆寫入至迴圈緩衝器之前,可判定待寫入至迴圈緩衝器的反覆之數目。舉例而言,偵測迴圈及監視指令可包括對包括於迴圈之反覆中的指令或微操作之數目進行計數。另外,可獲知或判定迴圈緩衝器中的可用空間。基於迴圈反覆及 可用緩衝儲存器之大小,可計算多少反覆被寫入至迴圈緩衝器。在各種實施例中,可選擇待寫入的反覆之數目以使得達成自緩衝器的最大指令輸送量。在其他實施例中,關於將迴圈之多少反覆寫入至緩衝器可設置額外限制。舉例而言,可寫入不超過緩衝器之給定部分(例如,一半)。眾多此等替代方案係可能的且被涵蓋。
當處理器處於迴圈緩衝器模式時,利用此等條件可達成自迴圈緩衝器110的高的每循環微操作輸送量。在其他實施例中,可針對迴圈之其他大小利用此等條件。舉例而言,具有九個微操作之大小的迴圈將導致兩個反覆被寫入至迴圈緩衝器110。將填充迴圈緩衝器110之前三列,且接著將不再將九微操作迴圈之反覆寫入至迴圈緩衝器110。此將達成每循環六個微操作的最大可能輸送量。
在其他實施例中,可利用其他條件以判定是否將迴圈之另一反覆寫入至迴圈緩衝器110。舉例而言,在另一實施例中,若反覆之最後微操作寫入至一列之兩個最右槽中之任一者,則可終止寫入至迴圈緩衝器110。在再一實施例中,可在將迴圈反覆寫入至迴圈緩衝器110之後計算輸送量,且接著可將輸送量與臨限值比較。若輸送量高於臨限值,則可終止寫入至迴圈緩衝器110。若輸送量低於臨限值,則可將另一迴圈反覆寫入至迴圈緩衝器110。在再一實施例中,可以任何合適之方式獨立或組合地使用此等及其他條件。
現參照圖9,展示用於在迴圈緩衝器中封裝迴圈之多個反覆的方法120之一實施例。出於論述目的,此實施例中之步驟以循序次序展示。應注意,在以下所描述方法之各種實施例中,可同時地、以不同於所展示之次序執行所描述元素中之一或多者,或可將其完全省略。按需要,亦可執行其他額外元素。
在一實施例中,可在指令串流中偵測迴圈候選項(區塊122)。接著,迴圈緩衝器控制單元可判定迴圈候選項符合用於迴圈緩衝之準則 (區塊124)。迴圈緩衝器控制單元可接著針對該迴圈候選項起始迴圈緩衝器模式(區塊126)。當起始迴圈緩衝器模式時,可標記迴圈終止分支微操作以使得可將其識別為迴圈之結束。迴圈終止分支可被定義為排除次常式呼叫的直接反向已採取分支。又,迴圈之第一微操作(其為在迴圈終止分支之後的下一微操作)可標記為迴圈開始。提取單元之對準器可在迴圈終止分支之後停頓,以使得迴圈中的第一微操作被寫入至迴圈緩衝器的第一列之槽0(區塊128)。
接下來,可將迴圈之單一反覆寫入至迴圈緩衝器(區塊130)。在正將迴圈之反覆寫入至迴圈緩衝器,因此可在反覆之結束處偵測迴圈終止分支(區塊132)。回應於偵測到迴圈終止分支,迴圈緩衝器控制單元可進行檢查以查看迴圈緩衝器是否已寫滿(條件區塊134)。在一實施例中,迴圈緩衝器控制單元可監視至迴圈緩衝器之寫入指標且查看寫入指標是否已經過迴圈緩衝器之中間點。
若迴圈緩衝器小於半滿(條件區塊134),則可將迴圈之另一反覆寫入至迴圈緩衝器(區塊130)。對於此反覆,可將迴圈之第一微操作(亦即,迴圈開始)寫入至迴圈之先前反覆的迴圈終止分支之後的下一鄰近槽,若迴圈終止分支位於不同於列之最右槽的任何槽,則該下一鄰近槽可為迴圈緩衝器的相同列。此與迴圈之第一反覆寫入至迴圈緩衝器之方式形成對比。對於第一反覆,對準器可在迴圈終止分支之後自先前反覆停頓,使得第一反覆之第一微操作寫入至迴圈緩衝器的第一列之第一(或最左)槽。
若迴圈緩衝器大於半滿(條件區塊134),則迴圈緩衝器控制單元可向前端發出信號以中斷將迴圈之更多反覆寫入至迴圈緩衝器(區塊136)。對於迴圈之最後反覆,提取單元之對準器可在分派迴圈終止分支之後停住。以此方式,當處理器進入迴圈緩衝器模式時,對自迴圈緩衝器分派出微操作可存在正常交遞。另外,當處理器進入迴圈緩衝 器模式時,可清除指令佇列中之微操作及在處理器管線之前端中的上游較遠處的指令。在區塊136之後,迴圈緩衝器可將迴圈之一或多個反覆分派至處理器管線的下一級(區塊138)。在正自迴圈緩衝器分派出迴圈時,可將處理器之前端關機。
在一實施例中,可儲存已寫入至迴圈緩衝器之列之數目。迴圈緩衝器控制單元可使用所儲存的有效列之數目以判定何時不再有待自迴圈緩衝器讀取之有效列。舉例而言,當將微操作之列分派至處理器管線之下一級時,讀取指標可逐步通過迴圈緩衝器之列,且當如由所儲存之有效列的數目所指示的迴圈緩衝器中不再有有效列時,讀取指標可重設回至迴圈緩衝器之頂部。
在區塊138之後,方法120可在迴圈終止時結束。在迴圈終止之後,可重新打開前端,且提取單元可將指令供應至處理器管線之其餘部分。
接下來參照圖10,展示系統140之一實施例的方塊圖。如所展示,系統140可表示桌上型電腦150、膝上型電腦160、平板電腦170、蜂巢式電話180或其他者之晶片、電路、組件等。在所說明之實施例中,系統140包括耦合至外部記憶體142的(圖1之)IC 10之至少一例項。
IC 10耦合至一或多個周邊裝置144及外部記憶體142。亦提供電源供應器146,其將供應電壓供應至IC 10以及將一或多個供應電壓供應至記憶體142及/或周邊裝置144。在各種實施例中,電源供應器146可表示電池(例如,智慧型手機、膝上型電腦或平板電腦中之可再充電電池)。在一些實施例中,可包括IC 10之一個以上例項(且亦可包括一個以上之外部記憶體142)。
記憶體142可為任何類型之記憶體,諸如,動態隨機存取記憶體(DRAM)、同步DRAM(SDRAM)、雙資料速率(DDR、DDR2、DDR3 等)SDRAM(包括諸如mDDR3等之SDRAM的行動版本及/或諸如LPDDR2等之SDRAM的低功率版本)、RAMBUS DRAM(RDRAM)、靜態RAM(SRAM)等。一或多個記憶體器件可耦合至電路板上以形成記憶體模組,諸如,單列直插式記憶體模組(SIMM)、雙列直插式記憶體模組(DIMM)等。
取決於系統140之類型,周邊裝置144可包括任何所要電路。舉例而言,在一實施例中,周邊裝置144可包括用於各種類型之無線通信(諸如,wifi、藍芽、蜂巢式、全球定位系統等)的器件。周邊裝置144亦可包括額外儲存器,包括RAM儲存器、固態儲存器,或磁碟儲存器。周邊裝置144可包括使用者介面器件(諸如,顯示螢幕,包括觸控式顯示螢幕或多點觸控顯示螢幕)、鍵盤或其他輸入器件、麥克風、揚聲器等。
現轉向圖11,展示電腦可讀媒體190之方塊圖的一實施例,該電腦可讀媒體包括表示包括於(圖1之)IC 10中之電路的一或多個資料結構。一般而言,電腦可讀媒體190可包括諸如磁性媒體或光學媒體之任何非暫時性儲存媒體,例如,磁碟、CD-ROM或DVD-ROM、揮發性或非揮發性記憶體媒體,諸如,RAM(例如,SDRAM、RDRAM、SRAM等)、ROM等,以及可經由傳輸媒體或信號(諸如,電信號、電磁信號或數位信號)存取、經由通信媒體(諸如,網路及/或無線鏈路)輸送之媒體。
一般而言,電腦可讀媒體190上的電路之資料結構可由程式讀取,且直接或間接地用於製造包含電路之硬體。舉例而言,用諸如Verilog或VHDL之高階設計語言(HDL),資料結構可包括硬體功能之一或多個行為層級描述或暫存器轉移層級(RTL)描述。描述可由可合成該描述以產生一或多個包含來自合成庫之閘清單的接線對照表的合成工具讀取。接線對照表包含亦表示包含電路之硬體的功能的閘之集 合。可接著置放及佈線接線對照表以產生描述待應用於遮罩之幾何形狀的一或多個資料集。遮罩可接著在各種半導體製造步驟中使用以產生對應於該電路之一或多個半導體電路。或者,按需要,電腦可讀媒體230上的資料結構可為接線對照表(具有或無合成庫)或資料集。在又一替代方案中,資料結構可包含自其衍生之示意程式或接線對照表或資料集之輸出。
雖然電腦可讀媒體190包括IC 10之表示,但其他實施例可包括IC 10(例如,迴圈緩衝器、迴圈緩衝器控制單元、對準器)之任何部分或部分的組合之表示。
應強調,以上所描述的實施例僅為實施之非限制性實例。對於熟習此項技術者而言,一旦已完全瞭解上述揭示內容,眾多改變及修改將變得顯而易見。希望將以下申請專利範圍解釋為涵蓋所有此等改變及修改。
100‧‧‧對準器
102‧‧‧指令佇列
103‧‧‧反覆邊界
104‧‧‧指令縱橫式矩陣

Claims (19)

  1. 一種用於封裝一迴圈之多個反覆的裝置,其包含:一迴圈緩衝器,其包含複數個列,該等列之每一者包含複數個項(entry);及一迴圈緩衝器控制單元,該迴圈緩衝器控制單元耦合至該迴圈緩衝器,其中該迴圈緩衝器控制單元經組態以:在一指令串流中偵測一迴圈;及回應於判定一給定反覆中之一反向已採取分支未寫入至該迴圈緩衝器中之一列之一最右項,且該迴圈緩衝器未至少半滿,而使得該迴圈之一個或多個額外反覆被寫入至該迴圈緩衝器。
  2. 如請求項1之裝置,其中該迴圈緩衝器控制單元進一步經組態以:回應於判定該迴圈緩衝器至少半滿,防止將該迴圈之額外反覆寫入至該迴圈緩衝器。
  3. 如請求項1之裝置,其中該迴圈緩衝器控制單元經組態以基於指向該迴圈緩衝器之一寫入指標的一位置而判定該迴圈緩衝器是否半滿。
  4. 如請求項2之裝置,其中該迴圈緩衝器控制單元進一步經組態以回應於判定來自該給定反覆之一反向已採取分支寫入至該迴圈緩衝器中之一列之一最右項而防止將該迴圈之額外反覆寫入至該迴圈緩衝器。
  5. 如請求項1之裝置,其中當該裝置處於迴圈緩衝器模式時,寫入至該迴圈緩衝器的該迴圈之反覆的一數目係基於最大化自該迴圈緩衝器的每循環指令操作輸送量而判定。
  6. 如請求項1之裝置,該裝置進一步包含一對準器,該對準器經組 態以將該迴圈之一第一反覆之一第一指令操作寫入至該迴圈緩衝器的一第一列中的一第一槽。
  7. 如請求項1之裝置,其中該迴圈緩衝器經組態以回應於該裝置進入迴圈緩衝器模式而分派該迴圈之該兩個或兩個以上反覆之指令操作。
  8. 一種用於封裝一迴圈之多個反覆的處理器,其包含:一提取單元,其經組態以在一指令串流識別並標記一迴圈之一開始及一結束一迴圈緩衝器,其包含複數個列,該等列之每一者包含複數個項;及一迴圈緩衝器控制單元,該迴圈緩衝器控制單元耦合至該迴圈緩衝器,其中該迴圈緩衝器控制單元經組態以在該指令串流中偵測一迴圈;其中該迴圈緩衝器經組態以:儲存該迴圈之多個反覆,其中該迴圈緩衝器之一列之一第一項經選擇以儲存該迴圈之一開始;將該迴圈之一結束儲存於該迴圈緩衝器之一給定列之一項中;在偵測該迴圈之該結速後停頓,使得該給定列之一個或多個項保持未填滿;及回應於該處理器進入一迴圈緩衝器模式而分派該迴圈之該多個反覆之指令。
  9. 如請求項8之處理器,其中該迴圈之該多個反覆中之每一反覆相同。
  10. 如請求項8之處理器,其中該提取單元包含經組態以識別迴圈反覆邊界之一對準器。
  11. 如請求項10之處理器,其中該對準器進一步經組態以回應於該處理器進入迴圈緩衝器模式而在偵測到該迴圈之一先前反覆之一反向已採取分支之後引起一停頓。
  12. 如請求項8之處理器,其中該迴圈之該結束對應至一反向已採取分支。
  13. 如請求項12之處理器,其中該對準器進一步經組態以:在一第一時脈循環中,將該迴圈之一第一反覆之一反向已採取分支指派至一第一槽;及在該第一時脈循環中,將該迴圈之一第二反覆之一第一指令操作指派至一第二槽,其中該第二槽鄰近於該第一槽。
  14. 一種用於封裝一迴圈之多個反覆的方法,其包含:在一指令串流中偵測一迴圈候選項;判定該迴圈候選項符合用於在一迴圈緩衝器中緩衝之準則;將該迴圈候選項之一第一反覆寫入至該迴圈緩衝器;回應於判定一給定反覆中之一反向已採取分支未寫入至該迴圈緩衝器中之一列之一最右項,且該迴圈緩衝器未至少半滿,而將該迴圈之一個或多個額外反覆寫入至該迴圈緩衝器;同時分派該迴圈緩衝器之一給定列之所有項。
  15. 如請求項14之方法,該方法進一步包含回應於判定該迴圈緩衝器係至少半滿或一給定反覆之一反向已採取分支被寫入至該迴圈緩衝器中的一列之一最右項,而防止該迴圈之額外反覆被寫入至該迴圈緩衝器。
  16. 如請求項15之方法,該方法進一步包含回應於自該迴圈緩衝器分派出該迴圈候選項之該等指令而將一提取單元關機。
  17. 如請求項16之方法,其進一步包含儲存等於儲存於該迴圈緩衝器中之有效列的一數目之一第一值。
  18. 如請求項17之方法,其中自該迴圈緩衝器分派該迴圈候選項之該等指令包含:使一讀取指標逐步通過該迴圈緩衝器之等於該第一值的數個列。
  19. 如請求項18之方法,其進一步包含回應於該讀取指標逐步通過該迴圈緩衝器之等於該第一值的數個列而將該讀取指標重設至該迴圈緩衝器的一第一列。
TW102121212A 2012-06-15 2013-06-14 用於封裝迴圈中多個反覆之裝置、處理器及方法 TWI503744B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/524,478 US9753733B2 (en) 2012-06-15 2012-06-15 Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer

Publications (2)

Publication Number Publication Date
TW201411486A TW201411486A (zh) 2014-03-16
TWI503744B true TWI503744B (zh) 2015-10-11

Family

ID=48607066

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102121212A TWI503744B (zh) 2012-06-15 2013-06-14 用於封裝迴圈中多個反覆之裝置、處理器及方法

Country Status (8)

Country Link
US (1) US9753733B2 (zh)
EP (1) EP2674857B1 (zh)
JP (1) JP5748800B2 (zh)
KR (1) KR101496009B1 (zh)
CN (1) CN103513964B (zh)
BR (1) BR102013015262A2 (zh)
TW (1) TWI503744B (zh)
WO (1) WO2013188123A2 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
US9710276B2 (en) * 2012-11-09 2017-07-18 Advanced Micro Devices, Inc. Execution of instruction loops using an instruction buffer
US9459871B2 (en) * 2012-12-31 2016-10-04 Intel Corporation System of improved loop detection and execution
US9632791B2 (en) 2014-01-21 2017-04-25 Apple Inc. Cache for patterns of instructions with multiple forward control transfers
US9471322B2 (en) * 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
US9524011B2 (en) 2014-04-11 2016-12-20 Apple Inc. Instruction loop buffer with tiered power savings
CN104317572B (zh) * 2014-09-30 2017-05-24 南京大学 一种实时系统的循环边界内向分析方法
CN104461933B (zh) * 2014-11-07 2017-10-03 珠海全志科技股份有限公司 内存管理方法及其装置
US9830152B2 (en) * 2015-12-22 2017-11-28 Qualcomm Incorporated Selective storing of previously decoded instructions of frequently-called instruction sequences in an instruction sequence buffer to be executed by a processor
JP2018005488A (ja) * 2016-06-30 2018-01-11 富士通株式会社 演算処理装置及び演算処理装置の制御方法
TWI666930B (zh) * 2016-07-12 2019-07-21 聯發科技股份有限公司 一種使用環形緩衝器和競賽模式環形緩衝器訪問控制方案的視訊處理系統
US10348329B2 (en) * 2017-02-13 2019-07-09 Qualcomm Incorporated Low density parity check (LDPC) circular buffer rate matching
CN108897700A (zh) * 2018-06-26 2018-11-27 青岛海信宽带多媒体技术有限公司 一种环形缓存器的数据处理方法、装置及机顶盒
US10915322B2 (en) * 2018-09-18 2021-02-09 Advanced Micro Devices, Inc. Using loop exit prediction to accelerate or suppress loop mode of a processor
CN111414199B (zh) * 2020-04-03 2022-11-08 中国人民解放军国防科技大学 一种指令融合的实现方法及装置
US20240028339A1 (en) * 2022-07-25 2024-01-25 Apple Inc. Using a Next Fetch Predictor Circuit with Short Branches and Return Fetch Groups

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5493566A (en) * 1992-12-15 1996-02-20 Telefonaktiebolaget L M. Ericsson Flow control system for packet switches
US20020178350A1 (en) * 2001-05-24 2002-11-28 Samsung Electronics Co., Ltd. Loop instruction processing using loop buffer in a data processing device
US20040193858A1 (en) * 2003-03-24 2004-09-30 Infineon Technologies North America Corp. Zero-overhead loop operation in microprocessor having instruction buffer
US20060242394A1 (en) * 2005-04-26 2006-10-26 Kabushiki Kaisha Toshiba Processor and processor instruction buffer operating method
US20070113059A1 (en) * 2005-11-14 2007-05-17 Texas Instruments Incorporated Loop detection and capture in the intstruction queue
US20090217017A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation Method, system and computer program product for minimizing branch prediction latency
US20110107071A1 (en) * 2009-11-04 2011-05-05 Jacob Yaakov Jeffrey Allan Alon System and method for using a branch mis-prediction buffer
TW201202975A (en) * 2010-04-07 2012-01-16 Apple Inc Real-time or near real-time streaming

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63314644A (ja) 1987-06-17 1988-12-22 Nec Corp デ−タ処理装置
DE69129872T2 (de) 1990-03-27 1999-03-04 Philips Electronics Nv Datenverarbeitungssystem mit einem leistungsverbessernden Befehlscachespeicher
JP3032031B2 (ja) 1991-04-05 2000-04-10 株式会社東芝 ループ最適化方法及び装置
JP3032030B2 (ja) 1991-04-05 2000-04-10 株式会社東芝 ループ最適化方法及び装置
EP0612070B1 (en) * 1993-02-16 1998-05-27 SANYO ELECTRIC Co., Ltd. Multi-disk player
JPH0991136A (ja) 1995-09-25 1997-04-04 Toshiba Corp 信号処理装置
JPH10124315A (ja) 1996-10-18 1998-05-15 Hitachi Ltd 分岐処理方法およびそのための情報処理装置
US5951679A (en) 1996-10-31 1999-09-14 Texas Instruments Incorporated Microprocessor circuits, systems, and methods for issuing successive iterations of a short backward branch loop in a single cycle
US5893142A (en) 1996-11-14 1999-04-06 Motorola Inc. Data processing system having a cache and method therefor
US6076159A (en) 1997-09-12 2000-06-13 Siemens Aktiengesellschaft Execution of a loop instructing in a loop pipeline after detection of a first occurrence of the loop instruction in an integer pipeline
US6125440A (en) 1998-05-21 2000-09-26 Tellabs Operations, Inc. Storing executing instruction sequence for re-execution upon backward branch to reduce power consuming memory fetch
US6269440B1 (en) * 1999-02-05 2001-07-31 Agere Systems Guardian Corp. Accelerating vector processing using plural sequencers to process multiple loop iterations simultaneously
JP2000298587A (ja) 1999-03-08 2000-10-24 Texas Instr Inc <Ti> 命令反復中に指定先にブランチする装置を持つ処理装置
EP1050804A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Execution of instruction loops
US6598155B1 (en) 2000-01-31 2003-07-22 Intel Corporation Method and apparatus for loop buffering digital signal processing instructions
EP1107110B1 (en) 1999-11-30 2006-04-19 Texas Instruments Incorporated Instruction loop buffer
US6963965B1 (en) 1999-11-30 2005-11-08 Texas Instruments Incorporated Instruction-programmable processor with instruction loop cache
US7302557B1 (en) * 1999-12-27 2007-11-27 Impact Technologies, Inc. Method and apparatus for modulo scheduled loop execution in a processor architecture
US6578138B1 (en) * 1999-12-30 2003-06-10 Intel Corporation System and method for unrolling loops in a trace cache
US6757817B1 (en) 2000-05-19 2004-06-29 Intel Corporation Apparatus having a cache and a loop buffer
US6671799B1 (en) 2000-08-31 2003-12-30 Stmicroelectronics, Inc. System and method for dynamically sizing hardware loops and executing nested loops in a digital signal processor
US6898693B1 (en) * 2000-11-02 2005-05-24 Intel Corporation Hardware loops
US6748523B1 (en) 2000-11-02 2004-06-08 Intel Corporation Hardware loops
KR100464406B1 (ko) * 2002-02-08 2005-01-03 삼성전자주식회사 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
JP2004038601A (ja) 2002-07-04 2004-02-05 Matsushita Electric Ind Co Ltd キャッシュメモリ装置
CN1717654A (zh) 2002-11-28 2006-01-04 皇家飞利浦电子股份有限公司 数据处理器的循环控制电路
US20040123075A1 (en) 2002-12-19 2004-06-24 Yoav Almog Extended loop prediction techniques
US7130963B2 (en) 2003-07-16 2006-10-31 International Business Machines Corp. System and method for instruction memory storage and processing based on backwards branch control information
US7752426B2 (en) 2004-08-30 2010-07-06 Texas Instruments Incorporated Processes, circuits, devices, and systems for branch prediction and other processor improvements
US7330964B2 (en) * 2005-11-14 2008-02-12 Texas Instruments Incorporated Microprocessor with independent SIMD loop buffer
US7873820B2 (en) 2005-11-15 2011-01-18 Mips Technologies, Inc. Processor utilizing a loop buffer to reduce power consumption
TW200723094A (en) 2005-12-01 2007-06-16 Ind Tech Res Inst Dynamic branch prediction system and method
US9052910B2 (en) 2007-10-25 2015-06-09 International Business Machines Corporation Efficiency of short loop instruction fetch
TWI362001B (en) 2008-07-16 2012-04-11 Faraday Tech Corp Recovery apparatus for solving branch mis-prediction and method and central processing unit thereof
JP2010066892A (ja) 2008-09-09 2010-03-25 Renesas Technology Corp データプロセッサ及びデータ処理システム
US8446186B2 (en) 2010-06-07 2013-05-21 Silicon Laboratories Inc. Time-shared latency locked loop circuit for driving a buffer circuit
US20120079303A1 (en) 2010-09-24 2012-03-29 Madduri Venkateswara R Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit
US20120185714A1 (en) 2011-12-15 2012-07-19 Jaewoong Chung Method, apparatus, and system for energy efficiency and energy conservation including code recirculation techniques
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5493566A (en) * 1992-12-15 1996-02-20 Telefonaktiebolaget L M. Ericsson Flow control system for packet switches
US20020178350A1 (en) * 2001-05-24 2002-11-28 Samsung Electronics Co., Ltd. Loop instruction processing using loop buffer in a data processing device
US20040193858A1 (en) * 2003-03-24 2004-09-30 Infineon Technologies North America Corp. Zero-overhead loop operation in microprocessor having instruction buffer
US20060242394A1 (en) * 2005-04-26 2006-10-26 Kabushiki Kaisha Toshiba Processor and processor instruction buffer operating method
US20070113059A1 (en) * 2005-11-14 2007-05-17 Texas Instruments Incorporated Loop detection and capture in the intstruction queue
US20090217017A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation Method, system and computer program product for minimizing branch prediction latency
US20110107071A1 (en) * 2009-11-04 2011-05-05 Jacob Yaakov Jeffrey Allan Alon System and method for using a branch mis-prediction buffer
TW201202975A (en) * 2010-04-07 2012-01-16 Apple Inc Real-time or near real-time streaming

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Marcela Zuluaga等5人,Introducing Control-Flow Inclusion to Support Pipelining in Custom Instruction Set Extensions,IEEE,2009 *

Also Published As

Publication number Publication date
KR101496009B1 (ko) 2015-02-25
WO2013188123A2 (en) 2013-12-19
TW201411486A (zh) 2014-03-16
KR20130141396A (ko) 2013-12-26
US9753733B2 (en) 2017-09-05
CN103513964B (zh) 2015-12-02
EP2674857B1 (en) 2019-07-24
US20130339699A1 (en) 2013-12-19
EP2674857A1 (en) 2013-12-18
JP5748800B2 (ja) 2015-07-15
JP2014002736A (ja) 2014-01-09
BR102013015262A2 (pt) 2015-07-14
WO2013188123A3 (en) 2014-02-13
CN103513964A (zh) 2014-01-15

Similar Documents

Publication Publication Date Title
TWI503744B (zh) 用於封裝迴圈中多個反覆之裝置、處理器及方法
US9557999B2 (en) Loop buffer learning
US9471322B2 (en) Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
KR101594090B1 (ko) 공유 메모리에 대한 액세스들의 동기화를 완화하기 위한 프로세서들, 방법들 및 시스템들
TWI494852B (zh) 維持與處理器內之屏障相關之指令的次序之方法及處理器
US9710268B2 (en) Reducing latency for pointer chasing loads
US9710276B2 (en) Execution of instruction loops using an instruction buffer
US9201658B2 (en) Branch predictor for wide issue, arbitrarily aligned fetch that can cross cache line boundaries
US9354886B2 (en) Maintaining the integrity of an execution return address stack
US9052910B2 (en) Efficiency of short loop instruction fetch
KR101806279B1 (ko) 명령어 순서 강제 명령어들의 쌍들, 프로세서들, 방법들, 및 시스템들
CN113448626B (zh) 推测分支模式更新方法和微处理器
CN116302106A (zh) 用于促进分支预测单元的改善的带宽的设备、方法和系统
US9720840B2 (en) Way lookahead