TWI520060B - 用於追蹤迴圈候選者之裝置及方法及處理器 - Google Patents

用於追蹤迴圈候選者之裝置及方法及處理器 Download PDF

Info

Publication number
TWI520060B
TWI520060B TW102121215A TW102121215A TWI520060B TW I520060 B TWI520060 B TW I520060B TW 102121215 A TW102121215 A TW 102121215A TW 102121215 A TW102121215 A TW 102121215A TW I520060 B TWI520060 B TW I520060B
Authority
TW
Taiwan
Prior art keywords
loop
branch
candidate
buffer
tracking
Prior art date
Application number
TW102121215A
Other languages
English (en)
Other versions
TW201411487A (zh
Inventor
阿呂 孔拉多 巴拉斯科
伊恩D 康坦妮絲
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 TW201411487A publication Critical patent/TW201411487A/zh
Application granted granted Critical
Publication of TWI520060B publication Critical patent/TWI520060B/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
    • 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
    • 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
    • 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

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)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)

Description

用於追蹤迴圈候選者之裝置及方法及處理器
本發明大體上係關於處理器,且詳言之,係關於用於識別及學習指令串流內之迴圈之特性的方法及機制。
現代處理器大體上以管線方式而結構化為多個級。典型管線常常包括用於提取指令、解碼指令、映射指令、執行指令及接著將結果寫入至另一單元(諸如,暫存器)之單獨單元。微處理器之指令提取單元負責將一恆定指令串流提供至處理器管線之下一級。通常,提取單元利用指令快取記憶體以便保持連續地對管線之其餘部分供應指令。提取單元及指令快取記憶體在執行其所需功能時傾向於消耗顯著量之功率。現代微處理器之目標係儘可能地減少功率消耗(尤其對於電池供電型器件中所利用之微處理器而言)。
在許多軟體應用中,可重複相同之軟體步驟許多次以執行特定功能或任務。在此等情形中,即使正連續地執行相同之指令迴圈,提取單元仍將繼續提取指令並消耗功率。若可在迴圈緩衝器中偵測並快取迴圈,則可在迴圈執行時將提取單元關機以減少功率消耗。然而,在迴圈包括多個分支時,難以偵測並學習程式碼內之指令迴圈。在於迴圈緩衝器中快取迴圈之前準確地判定迴圈是否不變亦具有挑戰性。
揭示用於偵測並追蹤一指令串流內之迴圈的裝置、處理器及方 法。一處理器管線可包括一迴圈緩衝器及一迴圈緩衝器控制單元。該迴圈緩衝器控制單元可偵測該指令串流中之迴圈終止分支。在一實施例中,當該迴圈緩衝器控制單元偵測到一迴圈終止分支時,該控制單元可鎖存該迴圈終止分支之指令位址,可設定一迴圈偵測旗標,且可啟動一迴圈反覆計數器及一微操作計數器。
在下一次偵測到該相同迴圈終止分支時,該控制單元可比較該微操作計數器之值與該迴圈緩衝器之大小。若該微操作計數器之該值大於該迴圈緩衝器之該大小,則此迴圈候選者不能夠被儲存於該迴圈緩衝器中,且因此將終止迴圈追蹤。若該微操作計數器小於該迴圈緩衝器之該大小,則可在該迴圈之多個反覆內追蹤該迴圈之內容。對於該迴圈之每一反覆,若該迴圈之該等內容在該反覆期間保持相同,則可遞增該迴圈反覆計數器且迴圈追蹤可繼續。
在一實施例中,可在該迴圈之每一反覆期間追蹤該迴圈之已採取分支。可在該迴圈之第一反覆期間將自該迴圈之開始至每一已採取分支之距離儲存於一分支追蹤表中,且在該迴圈之後續反覆期間,可比較在偵測到一分支時的該微操作計數器之該值與儲存於該分支追蹤表中之對應值。若自該迴圈之該開始至該迴圈之該等分支的該等距離不變,則迴圈追蹤可繼續。當該迴圈反覆計數器之該值超過一預定臨限值時,可在該迴圈緩衝器中快取該迴圈。可自該迴圈緩衝器讀取該迴圈且可將該提取單元關機直至該迴圈終止為止。
鑒於對本文中所呈現之方法之以下詳細描述,此等及其他特徵及優點對於一般熟習此項技術者而言將變得顯而易見。
10‧‧‧積體電路(IC)
12‧‧‧處理器複合體
14‧‧‧中央處理單元(CPU)
16‧‧‧中央處理單元(CPU)
18‧‧‧層2(L2)快取記憶體
20‧‧‧匯流排介面單元(BIU)
22‧‧‧記憶體控制器
24‧‧‧記憶體實體介面電路(PHY)
26‧‧‧記憶體實體介面電路(PHY)
30‧‧‧核心
32‧‧‧提取及解碼(FED)單元
34‧‧‧層1(L1)指令快取記憶體
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‧‧‧指令
104‧‧‧指令
106‧‧‧分支
108‧‧‧指令
110‧‧‧分支指令
112‧‧‧指令
114‧‧‧指令
116‧‧‧分支
120‧‧‧表
130‧‧‧分支追蹤表
140‧‧‧迴圈緩衝器控制單元
142‧‧‧比較器
144‧‧‧鎖存器
146‧‧‧偵測啟動旗標
148‧‧‧微操作計數器
150‧‧‧反覆計數器
152‧‧‧比較器
154‧‧‧比較器
156‧‧‧臨限值
160‧‧‧OR閘
162‧‧‧OR閘
170‧‧‧方法
210‧‧‧系統
212‧‧‧外部記憶體
214‧‧‧周邊設備
216‧‧‧電源供應器
220‧‧‧桌上型電腦
230‧‧‧膝上型電腦
240‧‧‧平板電腦
250‧‧‧行動電話
260‧‧‧電腦可讀媒體
可藉由結合隨附圖式參考以下描述來更好地理解方法及機制之上述及其他優點,其中:圖1說明積體電路之一部分之一實施例。
圖2為說明處理器核心之一實施例之方塊圖。
圖3為說明處理器管線之前端之一實施例的方塊圖。
圖4說明提取及解碼單元內之迴圈緩衝器之另一實施例的方塊圖。
圖5為樣本迴圈之一實施例。
圖6說明迴圈緩衝器控制單元之一實施例。
圖7為說明用於追蹤迴圈候選者之方法之一實施例的一般化流程圖。
圖8為系統之一實施例之方塊圖。
圖9為電腦可讀媒體之一實施例之方塊圖。
在以下描述中,闡述眾多特定細節以提供對本文中所呈現之方法及機制之透徹理解。然而,一般熟習此項技術者應認識到,可在無此等特定細節的情況下實踐各種實施例。在一些例子中,未詳細展示熟知之結構、組件、信號、電腦程式指令及技術以避免混淆本文中所描述之方法。應瞭解,為說明之簡單及清晰起見,該等圖中所展示之元件未必按比例繪製。舉例而言,該等元件中之一些元件之尺寸可能相對於其他元件而被誇示。
此說明書包括對「一實施例」之參考。片語「在一實施例中」在不同上下文中之出現未必指代同一實施例。可以與本發明一致之任何合適方式來組合特定特徵、結構或特性。此外,如貫穿此說明書所使用,詞「可」係以准許意義(亦即,意謂具有……之潛力)而非強制意義(亦即,意謂必須)來使用。類似地,詞「包括」意謂包括但不限於。
術語。以下段落提供可見於本發明中(包括附加之申請專利範圍)之術語之定義及/或上下文: 「包含」。此術語為開放式術語。如附加申請專利範圍中所使用,此術語並不排除額外結構或步驟。考慮敍述如下之技術方案:「一種包含一迴圈緩衝器控制單元之處理器……」。此技術方案並不排除處理器包括額外組件(例如,快取記憶體、提取單元、執行單元)。
「經組態以」。可將各種單元、電路或其他組件描述或主張為「經組態以」執行一或多個任務。在此等上下文中,「經組態以」用以藉由指示單元/電路/組件包括在操作期間執行該一或多個任務之結構(例如,電路)來暗示結構。因而,甚至在單元/電路/組件並非同時可操作(例如,並未同時接通)時,所指定之單元/電路/組件仍可據稱經組態以執行任務。與「經組態以……」語言一起使用的單元/電路/組件包括硬體,例如,電路、儲存可執行以實施操作之程式指令的記憶體,等等。敍述一單元/電路/組件「經組態以」執行一或多個任務並非明確地意欲針對彼單元/電路/組件援引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、層2(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)、IA-64指令集等。
在一實施例中,由CPU 14及16執行之每一指令可與一PC值相關聯。又,可在一些指令內指定一或多個架構暫存器以用於讀取及寫入。可藉由暫存器重新命名單元將此等架構暫存器映射至實際實體暫存器。此外,可將一些指令(例如,ARM Thumb指令)分解成一序列指令操作(或微操作),且可藉由唯一微操作(micro-op或uop)號碼來引用該序列之每一指令操作。
CPU 14及16中之每一者亦可包括層1(L1)快取記憶體(未圖示),且每一L1快取記憶體可耦接至L2快取記憶體18。其他實施例可包括額外層級之快取記憶體(例如,層3(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為處理器核心之一實例,且可在處理器複合體(諸如,圖1之處理器複合體12)內利用核心30。在一實施例中,圖1之CPU 14及16中之每一者可包括核心30之組件及功能性。核心30可包括提取及解碼(FED)單元32、映射及分派單元36、記憶體管理單元(MMU)40、核心介面單元(CIF)42、執行單元44及負載儲存單元(LSU)46。應注意,核心30可包括圖2中未展示之其他組件及介面。
FED單元32可包括經組態以自記憶體讀取指令並將指令置放於層1(L1)指令快取記憶體34中的電路。L1指令快取記憶體34可為用於儲存待由核心30執行之指令的快取記憶體。L1指令快取記憶體34可具有任何容量及構造(例如,直接映射型、設定關聯型、完全關聯型等)。此外,L1指令快取記憶體34可具有任何快取行大小。FED單元32亦可包括經組態以預測分支指令及沿所預測之路徑進行提取的分支預測硬 體。亦可將FED單元32重新導向(例如,經由誤預測、例外、中斷、清空等)。
FED單元32可經組態以將指令解碼成指令操作。另外,FED單元32亦可經組態以並行地解碼多個指令。大體上,指令操作可為執行單元44及LSU 46中所包括之硬體能夠執行的操作。每一指令可轉譯至一或多個指令操作,該一或多個指令操作在執行時導致根據指令集架構來執行針對彼指令所定義之操作。應注意,可貫穿本發明而互換地使用術語「指令操作」與「微操作」。在其他實施例中,可將FED單元32內所包括之功能性分裂成兩個或兩個以上單獨單元(諸如,提取單元、解碼單元及/或其他單元)。
在各種ISA中,可將一些指令解碼成單一微操作。FED單元32可經組態以識別指令、來源運算元等之類型,且每一經解碼指令操作可包含指令以及解碼資訊中之一些資訊。在每一指令轉譯至一單一微操作之其他實施例中,每一微操作可簡單地為對應指令或其一部分(例如,指令之一或多個作業碼欄位)。在一些實施例中,FED單元32可包括用於產生用於指令之微操作的電路及/或微碼之任何組合。舉例而言,可在硬體中處置相對簡單之微操作產生(例如,每一指令一個或兩個微操作),同時可在微碼中處置更廣泛微操作產生(例如,用於一指令之三個以上微操作)。
可將經解碼微操作提供至映射/分派單元36。映射/分派單元36可經組態以將微操作及架構暫存器映射至核心30之實體暫存器。映射/分派單元36可實施暫存器重新命名以將來源暫存器位址自微操作映射至識別經重新命名之來源暫存器的來源運算元號碼。映射/分派單元36亦可經組態以將微操作分派至執行單元44及LSU 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中所展示之前端邏輯可位於提取及解碼單元(諸如,FED單元32(圖2))內。應理解,圖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提取並經解碼成經預解碼微操作的指令可基於ARM ISA。每一經預解碼微操作可包括指令作業碼位元、指令預解碼位元及一微操作號碼。該等指令作業碼位元指定待執行之操作。該等預解碼位元指示指令映射至之微操作的數目。該微操作號碼表示應產生多微操作指令序列中之哪一微操作。在其他實施例中,可利用其他ISA,且可以多種方式來解碼及格式化該等指令。
當處理器並非處於迴圈緩衝器模式時,接著可經由多工器68將自提取前端60輸出之微操作輸送至解碼器70A-70F。可將來自迴圈緩衝器控制單元64之選擇信號耦接至多工器68以判定哪一路徑經由多工器68耦接至解碼器70A-70F之輸入。當處理器處於迴圈緩衝器模式 時,可自迴圈緩衝器62讀取微操作並將該等微操作輸送至解碼器70A-70F。可將微操作自解碼器70A-70F之輸出輸送至處理器管線之下一級。在一實施例中,處理器管線之下一級可為映射/分派單元(諸如,圖2之映射/分派單元36)。
迴圈緩衝器控制單元64可經組態以識別經提取及經預解碼指令內之迴圈。一旦已以某種程度之確定性識別迴圈,接著便可在迴圈緩衝器62中快取該迴圈,可將提取前端60關機,且接著可自迴圈緩衝器62向處理器管線之其餘部分饋送。在一實施例中,可在迴圈緩衝器62中快取迴圈之一反覆,且可沿著管線重複地分派此經快取之反覆。在另一實施例中,可在迴圈緩衝器62中快取迴圈之多個反覆。
為識別用於快取之迴圈,首先可在所提取之指令當中偵測反向採取分支。可將「反向採取分支」定義為分支至指令序列中之先前指令的已採取分支。可將反向採取分支轉向之指令視為迴圈之開始。在一實施例中,僅可將某些類型之迴圈視為用於緩衝之候選者。舉例而言,在一實施例中,對於待考慮用於緩衝之迴圈候選者,迴圈之所有反覆必須不變。換言之,迴圈候選者關於每一反覆執行相同指令序列。此外,可排除在迴圈之指令序列中具有間接已採取分支(例如,BX-分支交換、BLX-具有連結交換之分支)的迴圈以不予考慮用於緩衝。再另外,僅可准許每一迴圈一個反向採取分支。迴圈中之其餘分支應為向前分支。在其他實施例中,雖然可強制執行之唯一準則可為迴圈之不變性,但可考慮所有類型之迴圈,使得所有類型之迴圈可為迴圈候選者。舉例而言,在迴圈候選者中可允許一個以上反向採取分支(諸如,在巢套迴圈中)。
迴圈緩衝器控制單元64可監視指令串流以查找形成滿足用於迴圈緩衝之準則之迴圈的指令。迴圈緩衝器控制單元64可俘獲一給定迴圈候選者看起來像什麼的所有資訊。對於某一時間週期,可在多個反 覆內追蹤迴圈候選者以確保迴圈候選者保持相同。舉例而言,可在第一反覆上記錄自迴圈之開始至迴圈內之一或多個指令的距離且可在後續反覆上監視該等距離以判定此等距離是否保持相同。
在一些實施例中,即使迴圈候選者不變且滿足上文所列出之其他準則,迴圈候選者之其他特性仍可取消其在迴圈緩衝器62中經快取之資格。舉例而言,若迴圈候選者之大小太大以致不適於迴圈緩衝器62,則可取消該迴圈候選者之資格。又,在迴圈內可能存在最大可允許數目個已採取分支,其等於分支追蹤表66之大小。若已採取分支之數目超過此數目,則可排除該迴圈以不予考慮為用於在迴圈緩衝器62中快取之候選者。在一實施例中,分支追蹤表66可包括用於迴圈內之已採取分支的八個項。在其他實施例中,分支追蹤表66可具有用於迴圈內之已採取分支之八個以上或八個以下項。一旦已取消迴圈候選者在迴圈緩衝器62中經快取之資格,便可記錄此經取消資格之迴圈候選者之反向採取分支的指令位址。因此,若再次偵測到此反向採取分支,則迴圈追蹤邏輯可忽略此分支且僅在偵測到新的反向採取分支時重新啟動。
在一實施例中,一旦偵測到同一反向採取分支一次以上,接著便可由迴圈緩衝器控制單元64啟動用以俘獲彼迴圈之資訊的狀態機。舉例而言,迴圈緩衝器控制單元64可利用分支追蹤表66來追蹤迴圈候選者之已採取分支。分支追蹤表66可保持追蹤自迴圈之開始至每一已採取分支的距離。在一實施例中,可以微操作來量測距離。在另一實施例中,可以指令來量測距離。在其他實施例中,可使用其他量度及/或兩個或兩個以上量度之組合來量測距離。量測自迴圈之開始至每一已採取分支的距離為一種判定遍歷基礎程式碼(underlying code)之路徑未改變的方式。
若執行迴圈之每一反覆使得自迴圈之開始至每一分支存在相同 數目個微操作,則可將迴圈候選者視為不變。可在判定迴圈候選者不變且應進行快取之前在某一數目個反覆內追蹤表66中至每一分支之距離。經分配用於追蹤迴圈候選者之不變性的時間量可基於迴圈反覆之數目及/或所遇到之分支之數目。
在一實施例中,僅迴圈候選者內可允許之已採取分支可為具有相同目標之條件分支。在此實施例中,可能不支援間接分支,此係由於間接分支可在迴圈之不同反覆上具有不同目標。以下情形係可能的:間接分支可在兩個單獨反覆上採取遍歷程式碼之兩個不同路徑,但迴圈仍可被迴圈緩衝器控制單元64視為不變。可發生此情形,此係因為:即使迴圈在兩個單獨反覆上採取兩個不同路徑,距離仍有可能相同。此情形將導致迴圈不變的誤判定。為防止此等誤判,可不支援間接分支。因此,在此實施例中,迴圈緩衝器控制單元64可僅允許迴圈候選者內在每一迴圈反覆上具有相同目標之分支。
在另一實施例中,可支援間接分支且該等間接分支在迴圈候選者內可為可允許的。在此實施例中,分支追蹤表66亦可包括指示每一已採取分支之目標的資訊,以確保迴圈不變。在迴圈候選者之每一反覆期間,可比較迴圈中之每一分支的目標與儲存於表66中之值以確保目標未改變。在其他實施例中,可將額外資訊包括於分支追蹤表66中以確保迴圈內容不變。
在一實施例中,解碼器70A-70F可偵測分支並用信號將此發出至迴圈緩衝器控制單元64。在另一實施例中,提取前端60可偵測分支並將偵測之指示輸送至單元64。或者,在另一實施例中,單元64可獨立於解碼器70A-70F或提取前端60而監視指令串流以查找分支並偵測分支。單元64可包括計數自迴圈之開始起的微操作之數目的微操作計數器(未圖示)。在迴圈之第一反覆上,每當在迴圈中偵測到分支時,單元64可將微操作計數器之值寫入至分支追蹤表66。亦可在每次偵測到 分支時遞增至表66之指標,以移至表66中之下一項。在迴圈之後續反覆上,每當偵測到分支時,可比較微操作計數器之值與表66中之對應項中的值。表66之每一項可包括表示針對各別分支的自迴圈之開始起的微操作之數目的值。每一項亦可包括指示項對應於迴圈中之已採取分支的有效位元。在其他實施例中,表66之每一項可包括其他資訊,諸如分支識別符或標記、分支之目標及/或其他資訊。
在一實施例中,在偵測到經誤預測之分支的任何時間,接著可將一重設信號輸送至迴圈緩衝器控制單元64。又,在存在自重新導向提取前端60之後端用信號發出之事件的任何時間,迴圈緩衝器控制單元64可清空並重新啟動候選者偵測邏輯。此等情況通常將導致程式擺脫正由單元64追蹤之任何程式碼串流。
在某一預定時間週期之後,單元64可判定應在迴圈緩衝器62中快取迴圈候選者。該預定時間週期之長度可基於多種因素中之一或多者。舉例而言,在一實施例中,可藉由迴圈之某一數目個反覆來量測該預定時間週期。若在迴圈不變時反覆的數目高於一臨限值,則可在迴圈緩衝器62中快取迴圈。或者,該時間週期可基於已偵測到的已採取分支之數目。舉例而言,若迴圈候選者包括8個已採取分支,則可使用40個此等分支之計數來指示已發生特定數目個反覆(在此實例中為5個)。在一實施例中,該預定時間週期可基於為分支預測器提供足夠時間以預測迴圈之結束。追蹤此等反覆之眾多方式係可能的且係期望的。
現轉向圖4,展示提取及解碼單元內之迴圈緩衝器之另一實施例。在一實施例中,迴圈緩衝器84可位於處理器管線中之解碼器82A-82F的下游,如圖4中所展示。此情形與在處理器管線中位於解碼器70A-70F之前的迴圈緩衝器62(圖3)形成對比。提取前端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,展示樣本迴圈之一實施例。應注意,圖5中所展示之迴圈100之程式碼係用於說明性目的。可藉由其他數目個指令及分支以不同方式來將其他迴圈結構化。
迴圈100可在指令位址0001處藉由指令102開始。指令102繼之以指令104,且此等指令可為ISA中所定義之任何類型之非分支指令。分支106可在指令104之後,且分支106可為分支至指令位址0025之向前分支。
如表120中所展示,指令102及104以及分支106可各自斷裂成單一微操作。此情形純粹用於說明性目的,且程式或迴圈內之指令可對應於任何數目個微操作,且表120中所展示之實例僅用於說明性目的。應注意,展示每一指令之微操作的表120並非由處理器管線利用或儲存之表,而是出於此論述之目的而展示於圖5中。
分支106為迴圈100中遇到的第一向前分支,且可在分支追蹤表130中鍵入自迴圈100之開始起的微操作之數目。因此,基於兩個指令(每一指令僅具有一微操作),儲存於分支追蹤表130中之第一值可為2。分支106可跳至指令位址0025,指令位址0025對應於指令108。指令108可為任何類型之非分支指令。接著,在指令108之後,可執行另一向前分支(在此狀況下為分支指令110)。如表120中可見,指令108斷裂成三個微操作。因此,對於自迴圈之開始至分支110的微操作之數目,寫入至分支追蹤表130之第二項的值可為6。
分支110可跳至指令位址0077處之指令112。指令112可繼之以指令114且接著繼之以分支116。分支116為反向採取分支,使得其分支回至指令序列中之先前位址。指令112斷裂成兩個微操作且指令114斷裂成4個微操作,如表120中所展示。因此,自迴圈之開始至分支116 的以微操作計之距離為13,且可將此值儲存於分支追蹤表130之第三項中。
當第一次偵測到分支116時,此情形可觸發迴圈緩衝器控制單元內之狀態機開始追蹤作為迴圈緩衝器候選者之迴圈100。迴圈緩衝器控制單元可判定迴圈100中之微操作的數目及迴圈100中之分支的數目。若兩個此等值小於迴圈硬體所支援之臨限值,則可在迴圈100之下一反覆上填入分支追蹤表130。或者,可在偵測到分支116之後在迴圈100之第一反覆上填入分支追蹤表130。若迴圈100不滿足迴圈硬體針對迴圈候選者所需的所有準則,則可放棄迴圈追蹤。若迴圈100滿足所有準則,則,在迴圈100之後續反覆上,每當遇到分支時,可讀出表130中之對應值並比較該值與距迴圈之開始的以微操作計之距離。
應注意,對於其他迴圈,表130可取決於迴圈中之分支的數目而包括其他數目個有效項。亦應注意,在其他實施例中,可以除微操作之外的其他值來量測儲存於分支追蹤表130中之距離。舉例而言,在另一實施例中,可以指令來量測儲存於表130中之距離。此外,在其他實施例中,分支追蹤表130可在每一項中包括其他欄位之資訊。舉例而言,可存在針對每一項之一有效位元以指示該項是否對應於迴圈候選者中之分支且含有有效距離。在圖5中所展示的針對表130及迴圈100之實例中,僅前三個項將具有設定至「1」之有效位元且其他項中之其餘有效位元可經設定至「0」。此外,在其他實施例中,可將分支目標位址儲存於每一項中。
現轉向圖6,展示迴圈緩衝器控制單元140之一實施例之方塊圖。單元140可包括比較器142,比較器142可比較當前反向採取分支(BTB)指令之BTB指令位址與來自鎖存器144之指令位址。鎖存器144可保持最近遇到之BTB指令位址,且可比較此BTB指令位址與當前 BTB指令位址。鎖存器144及比較器142可接收指示已偵測到反向採取分支(BTB)之信號。鎖存器144及比較器142亦可接收所偵測到之BTB之指令位址。鎖存器144可儲存最近的反向採取分支(BTB)之位址的指令。接著,在下次偵測到BTB時,可比較BTB之指令位址與儲存於鎖存器144中之先前BTB的指令位址。或者,在另一實施例中,鎖存器144可為暫存器或其他記憶體單元。比較器142提供已在指令串流中偵測到迴圈之指示。
在一實施例中,比較器142可具有兩個輸出,第一輸出指示相等且第二輸出指示不相等。指示相等之第一輸出可耦接至偵測啟動旗標146、或閘(OR閘)160及反覆計數器150。來自比較器142之相等輸出可為一或多個時脈循環之脈衝,其指示已偵測到BTB且已在一列中看見BTB至少兩次。來自比較器142之相等輸出可遞增反覆計數器150,且反覆計數器150可提供對在指令串流中偵測到之迴圈反覆之數目的計數。對於此實施例,若在一列中遇到同一BTB兩次且中間無其他BTB,則此情形指示遇到迴圈候選者。因此,可啟動迴圈追蹤電路以學習關於迴圈候選者之更多內容。
來自比較器142之指示不相等的第二輸出可耦接至OR閘162。OR閘162之輸出可經耦接以重設偵測啟動旗標146。在當前所偵測到之BTB不同於先前所偵測到之BTB時,來自比較器142之第二輸出可為高。此情形指示對於此實施例而言,先前BTB並非迴圈候選者之部分。儘管圖6中未展示,但來自比較器142之第二輸出亦可耦接至其他位置以指示已重設迴圈偵測。
微操作計數器148可經組態以保持追蹤自迴圈候選者之開始起所偵測到之微操作的數目。一或多個信號可耦接至微操作計數器148,該一或多個信號指示已偵測到之微操作的數目。至微操作計數器148之此等輸入可指示已提取及/或解碼之微操作的數目。在一實施例 中,信號可來自提取單元。在一實施例中,若提取單元每一時脈輸出六個經解碼微操作,則耦接至微操作計數器148之高輸入可造成微操作計數器148將其計數遞增6。在另一實施例中,此等信號可自解碼器單元耦接至微操作計數器148。
微操作計數器148亦可包括用於判定至對應於一分支之特定微操作的微操作之數目的其他邏輯。當遇到一分支時,微操作計數器148亦可接收指示微操作所位於之單工通道的輸入。接著,微操作計數器148可判定最近循環之微操作中有多少個微操作在分支微操作之前。以此方式,微操作計數器148可產生自迴圈之開始至對應於所偵測到之分支的特定分支微操作的微操作之數目的準確計數。若偵測到BTB(表明迴圈之結束),若自處理器之後端用信號發出誤預測或清空,或若比較器152用信號發出在分支距離上偵測到不相等,則可重設微操作計數器148。
反覆計數器150可經組態以保持追蹤已提取及/或解碼之迴圈之反覆的數目。若自處理器之後端用信號發出誤預測或清空或若至迴圈之分支中之一者的距離不同於分支追蹤表(未圖示)中之所儲存值,則可重設反覆計數器150。此情形可藉由比較器152來指示,在所偵測到之分支之當前微操作計數器值不等於儲存於分支追蹤表(BTT)中之對應值的情況下,比較器152可產生指示不相等之信號。比較器152可接收一分支偵測信號及來自BTT的針對迴圈之當前分支之值。比較器152可比較BTT值與當前微操作計數器值且輸出此比較之結果。若比較產生不相等,則可重設迴圈偵測邏輯。
在一實施例中,比較器154可經組態以比較反覆計數器150之輸出與臨限值156。當反覆計數器150匹配或超過臨限值156時,比較器154可輸出起始用於處理器之迴圈緩衝器模式的信號。在此實施例中,可在起始迴圈緩衝器模式之前在多個反覆內追蹤迴圈候選者,且 可藉由臨限值156來指示追蹤所需之反覆的數目。在各種實施例中,臨限值156為一可程式化值。在一實施例中,該臨限值之值可基於處理器之分支預測機制偵測迴圈之結束所需的循環之時間或數目。在一些實施例中,當處理器處於迴圈緩衝器模式時,可將分支預測機制關機。
在另一實施例中,可計數分支之數目,且當分支之數目達到臨限值時,接著可起始迴圈緩衝器模式。舉例而言,若迴圈具有五個分支,且分支臨限值為40,則迴圈候選者將需要八次反覆以達到分支臨限值。在其他實施例中,可利用判定在起始迴圈緩衝器模式之前追蹤迴圈候選者達多久的其他方式。舉例而言,在另一實施例中,若達到分支之某一數目或反覆之某一數目,則處理器可進入迴圈緩衝器模式。
儘管將單元140展示為接收各種信號(諸如,所偵測到之BTB、所偵測到之微操作之數目及所偵測到之分支),但在另一實施例中,單元140可藉由監視遍歷處理器管線之微操作而在內部產生此等信號。亦應理解,圖6中所說明之功能性的分佈並非用於在處理器管線內實施迴圈緩衝器控制單元之邏輯之唯一可能的分佈。其他實施例可包括其他組件及邏輯且具有此等組件及邏輯之任何合適分佈。此外,可用可取決於實施例而以不同方式加以組態的一或多個類似組件來替換該等個別組件中之每一者。舉例而言,在圖6中所展示之實施例中,在迴圈候選者內僅允許一反向採取分支。然而,在其他實施例中,迴圈候選者可包括一個以上反向採取分支,且可相應地修改迴圈緩衝器控制單元之邏輯。
現參看圖7,展示一種用於追蹤迴圈候選者之方法之一實施例。出於論述之目的,以順序次序展示此實施例中之步驟。應注意,在下文所描述之方法之各種實施例中,可同時地、以不同於所展示之次序 的次序執行所描述元素中之一或多者,或可將其完全省略。在需要時,亦可執行其他額外元素。
在一實施例中,可在處理器管線中偵測迴圈終止分支(區塊172)。在各種實施例中,可將迴圈終止分支定義為排除次常式呼叫之直接反向採取分支。在各種實施例中,可在提取級中、在解碼器級中或在處理器管線之另一級中偵測迴圈終止分支。可標記迴圈終止分支微操作,使得可將其識別為一可能的迴圈緩衝器候選者之結束。
回應於偵測到迴圈終止分支,可將迴圈終止分支之指令位址鎖存於迴圈緩衝器控制單元中,可設定偵測啟動旗標,可啟動反覆計數器,且可啟動微操作計數器(區塊174)。可利用反覆計數器來保持追蹤迴圈之反覆的數目。又,在一些實施例中,可啟動分支計數器以保持追蹤在迴圈候選者之所有反覆中偵測到的分支之數目。可利用反覆計數器之值及/或分支計數器之值來判定何時將起始迴圈緩衝器模式。當起始迴圈緩衝器模式時,可在迴圈緩衝器中快取迴圈候選者且可將提取前端關機。可利用微操作計數器來判定在迴圈候選者內所偵測到的至每一分支之距離(以微操作之數目計)。
應注意,在一實施例中,由微操作計數器維持之計數可包括作為提取及解碼級之部分產生的空槽。在此實施例中,可出於此論述之目的而假定提取單元經組態以每一循環輸出六個微操作。對於一些時脈循環,提取單元可出於多種原因而不產生全部六個微操作輸出。因此,發送至解碼器單元之一列微操作可不包括一列全部有效微操作。微操作計數器可考慮此情形且即使每一列不含有六個有效微操作,仍針對該列而計數6。舉例而言,迴圈可包括六列微操作,且迴圈終止分支可為所產生之微操作之第六循環的最後一列的最後的槽。微操作計數器可計數迴圈在六個循環內具有36個微操作(即使該等列中之一或多者含有6個以下有效微操作亦如此)。舉例而言,一中間列可僅含 有兩個有效微操作,且該列之剩餘四個槽可為空的。因此,迴圈將包括32個有效微操作,但迴圈計數器將計數彼迴圈包括36個微操作。大體而言,在此實施例中,微操作計數器可保持追蹤在迴圈緩衝器中將需要多少個槽以儲存迴圈候選者(即使此等槽中之一些槽不含有有效微操作亦如此)。
在設定計數器及任何額外追蹤邏輯之後,可執行並追蹤迴圈候選者(區塊176)。在一實施例中,追蹤迴圈候選者可包括偵測迴圈候選者中之分支且將自迴圈之開始至每一所偵測到之分支的距離填入分支追蹤表(區塊178)。接下來,可在迴圈候選者結束時偵測迴圈終止分支(區塊180)。若迴圈終止分支為先前所偵測到的同一分支(條件區塊182),則可遞增反覆計數器(區塊186)。
若迴圈終止分支並非先前所偵測到的同一分支(條件區塊182),則可停止對迴圈候選者之追蹤且可重設計數器、鎖存器、偵測啟動旗標及分支追蹤表(區塊184)。又,若在迴圈中偵測到任何經排除之指令,則可終止對迴圈候選者之追蹤。在區塊184之後,方法170可重設並等待偵測迴圈終止分支(區塊172)。
在區塊186之後,可比較微操作計數器與迴圈緩衝器之大小(條件區塊188)以判定迴圈候選者是否可適應迴圈緩衝器。或者,在另一實施例中,可重新排序方法170之此等步驟。舉例而言,若判定在偵測迴圈終止分支(區塊180)之前微操作計數器超過迴圈緩衝器之大小(條件區塊188),則可取消迴圈偵測。
若微操作計數器小於迴圈緩衝器之大小(條件區塊188),則迴圈候選者可適應迴圈緩衝器,且因此可檢查下一條件:迴圈候選者中之分支的數目是否小於分支追蹤表(BTT)之大小(條件區塊190)。若微操作計數器大於迴圈緩衝器之大小(條件區塊188),則迴圈候選者太大以致不能適應迴圈緩衝器且可終止追蹤。方法170可返回至區塊184且 可重設計數器、鎖存器、偵測啟動旗標及分支追蹤表。
若迴圈候選者中之分支的數目小於BTT之大小(條件區塊190),則迴圈候選者仍在考慮中,且可重新啟動微操作計數器(區塊192)。接著,可執行並追蹤迴圈之另一反覆(區塊194)。追蹤迴圈之反覆可包括監視已採取分支及自迴圈之開始至每一已採取分支之微操作的數目。可比較自迴圈之開始至每一已採取分支的距離與儲存於分支追蹤表中之值。
當迴圈之一反覆完成時,應偵測迴圈終止分支,且可判定該迴圈終止分支是否為同一迴圈終止分支(條件區塊196)。或者,若未偵測到迴圈終止分支,則可藉由監視微操作計數器及分支追蹤表中之最後項且判定應已偵測到迴圈終止分支而終止迴圈追蹤。若偵測到迴圈終止分支且該迴圈終止分支為同一迴圈終止分支(條件區塊196),則可判定針對迴圈之此反覆迴圈內容是否不變(條件區塊198)。
或者,在一些情況下,可在條件區塊196之前檢查條件區塊198。舉例而言,若迴圈之分支中之一者並非處於距迴圈之開始的距離與儲存於分支追蹤表中之值相同的距離處,則可判定在偵測迴圈終止分支之前迴圈內容已改變。在此狀況下,可在偵測到同一迴圈終止分支之前終止對迴圈之追蹤。
若針對迴圈之此反覆迴圈內容不變(條件分支198),則此情形指示正執行同一迴圈,且接著可遞增反覆計數器(區塊200)。接著,可判定反覆計數器是否高於臨限值以判定是否已追蹤迴圈達足夠長時間以致迴圈經緩衝(條件區塊202)。或者,在另一實施例中,可比較分支計數器與一臨限值以判定處理器是否應進入迴圈緩衝器模式。
若反覆計數器低於臨限值(條件區塊202),則方法170可重新啟動微操作計數器(區塊192)。若反覆計數器高於臨限值(條件區塊202),則處理器可進入迴圈緩衝器模式且可在迴圈緩衝器中快取迴圈(區塊 204)。在區塊204之後,方法170可結束。此時,可切斷處理器之前端且可自迴圈緩衝器分派微操作。當迴圈終止時,處理器可輸送一信號以退出迴圈緩衝器模式且可重新接通處理器之前端。此時,可重新啟動方法170,且迴圈緩衝器控制單元可返回至監視指令串流以查找迴圈終止分支(區塊172)。
接下來參看圖8,展示系統210之一實施例之方塊圖。如所展示,系統210可表示桌上型電腦220、膝上型電腦230、平板電腦240、行動電話250或其他物件之晶片、電路、組件等。在所說明之實施例中,系統210包括耦接至外部記憶體212之IC 10(圖1)之至少一例項。
IC 10耦接至一或多個周邊設備214及外部記憶體212。亦提供電源供應器216,其將供應電壓供應至IC 10以及將一或多個供應電壓供應至記憶體212及/或周邊設備214。在各種實施例中,電源供應器216可表示電池(例如,智慧型電話、膝上型電腦或平板電腦中之可再充電電池)。在一些實施例中,可包括IC 10之一個以上例項(且亦可包括一個以上外部記憶體212)。
記憶體212可為任何類型之記憶體,諸如動態隨機存取記憶體(DRAM)、同步DRAM(SDRAM)、雙資料速率(DDR、DDR2、DDR3等)SDRAM(包括SDRAM之行動版本,諸如mDDR3等;及/或SDRAM之低功率版本,諸如LPDDR2等)、RAMBUS DRAM(RDRAM)、靜態RAM(SRAM)等。一或多個記憶體器件可耦接至電路板上以形成記憶體模組(諸如,單列直插式記憶體模組(SIMM)、雙列直插式記憶體模組(DIMM)等)。
周邊設備214可取決於系統210之類型而包括任何所要電路。舉例而言,在一實施例中,周邊設備214可包括用於各種類型之無線通信的器件,諸如wifi、藍芽、蜂巢式、全球定位系統等。周邊設備214亦可包括額外儲存器,包括RAM儲存器、固態儲存器或磁碟儲存 器。周邊設備214可包括使用者介面器件(諸如,顯示螢幕,包括觸控式顯示螢幕或多點觸控顯示螢幕)、鍵盤或其他輸入器件、麥克風、揚聲器等。
現轉向圖9,展示電腦可讀媒體260之一實施例之方塊圖,電腦可讀媒體260包括表示IC 10(圖1)中所包括之電路的一或多個資料結構。大體而言,電腦可讀媒體260可包括:任何非暫時性儲存媒體,諸如磁性或光學媒體(例如,磁碟、CD-ROM或DVD-ROM);揮發性或非揮發性記憶體媒體,諸如RAM(例如,SDRAM、RDRAM、SRAM等)、ROM等;以及可經由傳輸媒體或經由諸如網路及/或無線鏈路之通信媒體輸送之信號(諸如,電信號、電磁信號或數位信號)存取的媒體。
大體上,電腦可讀媒體260上之電路的資料結構可藉由程式來讀取且直接或間接地用以製造包含該電路之硬體。舉例而言,該(等)資料結構可包括以諸如Verilog或VHDL之高階設計語言(HDL)進行的對硬體功能性之一或多個行為級描述或暫存器傳送級(RTL)描述。該(等)描述可藉由一合成工具來讀取,該合成工具可合成該描述以自合成程式庫產生包含閘極清單之一或多個接線對照表。該(等)接線對照表包含一閘極集合,該等閘極亦表示包含該電路之硬體的功能性。可接著置放並投送該(等)接線對照表以產生描述待應用於遮罩之幾何形狀的一或多個資料集。可接著在各種半導體製造步驟中使用該等遮罩以產生對應於該電路之一或多個半導體電路。或者,在需要時,電腦可讀媒體260上之資料結構可為接線對照表(具有或不具有合成程式庫)或資料集。在又一替代例中,資料結構可包含示意性程式之輸出或自其導出之接線對照表或資料集。
雖然電腦可讀媒體260包括IC 10之表示,但其他實施例可包括IC 10之任何部分或部分之組合的表示(例如,迴圈緩衝器、迴圈緩衝器 控制單元)。
應強調,上文所描述之實施例僅為實施之非限制性實例。對於熟習此項技術者而言,一旦完全瞭解上述揭示內容,無數變化及修改便將變得顯而易見。意欲將以下申請專利範圍解譯為涵蓋所有此等變化及修改。
60‧‧‧提取前端
62‧‧‧迴圈緩衝器
64‧‧‧迴圈緩衝器控制單元
66‧‧‧分支追蹤表
68‧‧‧多工器
70A‧‧‧解碼器
70B‧‧‧解碼器
70C‧‧‧解碼器
70D‧‧‧解碼器
70E‧‧‧解碼器
70F‧‧‧解碼器

Claims (20)

  1. 一種用於追蹤迴圈候選者之裝置,其包含:一迴圈緩衝器,其經組態以儲存指令操作,其中回應於偵測到該裝置處於一迴圈緩衝器模式而自該迴圈緩衝器分派指令操作;及一迴圈緩衝器控制單元,其耦接至該迴圈緩衝器,其中該迴圈緩衝器控制單元經組態以:偵測一第一迴圈終止分支,該第一迴圈終止分支包含針對一迴圈候選者之一開始的一指令之一反向採取分支;當該第一迴圈終止分支先前並未被取消資格時,追蹤該迴圈候選者,藉此該迴圈緩衝器控制單元經組態以:儲存該第一迴圈終止分支之一識別;追蹤自該迴圈候選者之一開始至該迴圈候選者內之每一採取分支所執行之指令的一數目;回應於偵測自該迴圈候選者之該開始至該等採取分支之每一者所執行之指令的一數目針對該迴圈候選者之反覆的至少一給定數目是不變的而起始該迴圈緩衝器模式;及回應於偵測自該迴圈候選者之該開始至該等採取分支之每一者所執行之指令的一數目不是不變的而:終止該迴圈候選者之追蹤;及儲存該迴圈終止分支被取消資格之一指示。
  2. 如請求項1之裝置,其進一步包含一提取單元及一指令快取記憶體,其中該裝置經組態以回應於該迴圈緩衝器模式經起始而將該提取單元及該指令快取記憶體中之至少一者關機。
  3. 如請求項1之裝置,其中當該裝置處於該迴圈緩衝器模式時,將 指令操作自該迴圈緩衝器分派至一解碼單元。
  4. 如請求項1之裝置,其中當追蹤該迴圈候選者時,該迴圈緩衝器控制單元經進一步組態以回應於偵測到不是該第一迴圈終止分支的一第二迴圈終止分支而終止該迴圈候選者之追蹤。
  5. 如請求項1之裝置,其中反覆之該給定數目對應於大於一臨限值之一反覆數目。
  6. 如請求項5之裝置,其中該臨限值係基於一分支預測器預測迴圈候選者之一結束所需的一時間量。
  7. 如請求項1之裝置,其進一步包含一分支追蹤表,其中該分支追蹤表包含針對該迴圈候選者之每一已採取分支的一項,且其中每一項包括一值,該值對應於自該迴圈候選者之該開始至該各別已採取分支的一距離。
  8. 一種處理器,其包含:一迴圈緩衝器;及一迴圈緩衝器控制單元,其耦接至該迴圈緩衝器;其中該迴圈緩衝器控制單元經組態以:偵測一第一迴圈終止分支,該第一迴圈終止分支包含針對一迴圈候選者之一開始的一指令之一反向採取分支;當該第一迴圈終止分支先前並未被取消資格時,追蹤該迴圈候選者,藉此該迴圈緩衝器控制單元經組態以:儲存該第一迴圈終止分支之一識別;追蹤自該迴圈候選者之一開始至該迴圈候選者內之每一採取分支所執行之指令的一數目;回應於偵測自該迴圈候選者之該開始至該等採取分支之每一者所執行之指令的一數目針對該迴圈候選者之反覆的至少一給定數目是不變的而起始該迴圈緩衝器模式;及 回應於偵測自該迴圈候選者之該開始至該等採取分支之每一者所執行之指令的一數目不是不變的而:終止該迴圈候選者之追蹤;及儲存該迴圈終止分支被取消資格之一指示。
  9. 如請求項8之處理器,其中所追蹤之該一或多個指令係一或多個已採取分支。
  10. 如請求項8之處理器,其中該迴圈候選者之該開始經識別為在該反向採取分支之後的一指令。
  11. 如請求項8之處理器,其中在一迴圈候選者中僅允許一反向採取分支。
  12. 如請求項8之處理器,其進一步包含一映射及分派單元,其中當該迴圈候選者儲存於該迴圈緩衝器中時,指令操作係自該迴圈緩衝器而分派至該映射及分派單元。
  13. 如請求項9之處理器,其中該迴圈緩衝器控制單元經進一步組態以回應於偵測到自該迴圈候選者之該開始至任何已採取分支的一距離在該迴圈候選者之任何後續反覆上改變而終止對該迴圈候選者之監視及追蹤。
  14. 如請求項8之處理器,其中該迴圈緩衝器控制單元經進一步組態以回應於偵測到該迴圈候選者不能夠適應該迴圈緩衝器而終止對該迴圈候選者之監視及追蹤。
  15. 一種用於追蹤迴圈候選者之方法,其包含:偵測一第一迴圈終止分支,該第一迴圈終止分支包含針對一迴圈候選者之一開始的一指令之一反向採取分支;當該第一迴圈終止分支先前並未被取消資格時,起始該迴圈候選者之追蹤,其中該追蹤包含:儲存該第一迴圈終止分支之一識別; 追蹤自該迴圈候選者之一開始至該迴圈候選者內之每一採取分支所執行之指令的一數目;回應於偵測自該迴圈候選者之該開始至該等採取分支之每一者所執行之指令的一數目針對該迴圈候選者之反覆的至少一給定數目是不變的而起始該迴圈緩衝器模式;及回應於偵測自該迴圈候選者之該開始至該等採取分支之每一者所執行之指令的一數目不是不變的而:終止該迴圈候選者之追蹤;及儲存該迴圈終止分支被取消資格之一指示。
  16. 如請求項15之方法,其中該追蹤進一步包含回應於偵測到不是該第一迴圈終止分支的一第二迴圈終止分支,終止該迴圈候選者之追蹤。
  17. 如請求項15之方法,其進一步包含回應於進入該迴圈緩衝器模式而將一提取單元關機。
  18. 如請求項15之方法,其進一步包含回應於進入該迴圈緩衝器模式而將該迴圈候選者自該迴圈緩衝器分派至一處理器管線之一下一級。
  19. 如請求項18之方法,其中該處理器管線之該下一級為一解碼單元。
  20. 如請求項18之方法,其中該處理器管線之該下一級為一映射及分派單元。
TW102121215A 2012-06-15 2013-06-14 用於追蹤迴圈候選者之裝置及方法及處理器 TWI520060B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/524,508 US9557999B2 (en) 2012-06-15 2012-06-15 Loop buffer learning

Publications (2)

Publication Number Publication Date
TW201411487A TW201411487A (zh) 2014-03-16
TWI520060B true TWI520060B (zh) 2016-02-01

Family

ID=48670377

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102121215A TWI520060B (zh) 2012-06-15 2013-06-14 用於追蹤迴圈候選者之裝置及方法及處理器

Country Status (8)

Country Link
US (1) US9557999B2 (zh)
EP (1) EP2674858B1 (zh)
JP (1) JP5799465B2 (zh)
KR (1) KR101497214B1 (zh)
CN (1) CN103593167B (zh)
BR (1) BR102013015049B1 (zh)
TW (1) TWI520060B (zh)
WO (1) WO2013188122A2 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9753733B2 (en) 2012-06-15 2017-09-05 Apple Inc. Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer
US9459871B2 (en) * 2012-12-31 2016-10-04 Intel Corporation System of improved loop detection and execution
JP2016526220A (ja) 2013-05-24 2016-09-01 コーヒレント・ロジックス・インコーポレーテッド プログラム可能な最適化を有するメモリネットワークプロセッサ
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
CN104298488B (zh) * 2014-09-29 2018-02-23 上海兆芯集成电路有限公司 循环预测器指导的循环缓冲器
US20160179549A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Instruction and Logic for Loop Stream Detection
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
GB2548602B (en) 2016-03-23 2019-10-23 Advanced Risc Mach Ltd Program loop control
GB2548603B (en) * 2016-03-23 2018-09-26 Advanced Risc Mach Ltd Program loop control
US10223118B2 (en) 2016-03-24 2019-03-05 Qualcomm Incorporated Providing references to previously decoded instructions of recently-provided instructions to be executed by a processor
JP2018005488A (ja) 2016-06-30 2018-01-11 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10318433B2 (en) * 2016-12-20 2019-06-11 Texas Instruments Incorporated Streaming engine with multi dimensional circular addressing selectable at each dimension
CN108256735B (zh) * 2017-12-14 2020-12-25 中国平安财产保险股份有限公司 查勘派工的处理方法及终端设备
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
US11269642B2 (en) 2019-09-20 2022-03-08 Microsoft Technology Licensing, Llc Dynamic hammock branch training for branch hammock detection in an instruction stream executing in a processor
CN112579169B (zh) * 2019-09-27 2024-04-09 阿里巴巴集团控股有限公司 处理器追踪流的生成方法及装置
US11928474B2 (en) * 2022-06-03 2024-03-12 Microsoft Technology Licensing, Llc Selectively updating branch predictors for loops executed from loop buffers in a processor

Family Cites Families (45)

* 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
JP3032030B2 (ja) 1991-04-05 2000-04-10 株式会社東芝 ループ最適化方法及び装置
JP3032031B2 (ja) 1991-04-05 2000-04-10 株式会社東芝 ループ最適化方法及び装置
MX9306994A (es) 1992-12-15 1994-06-30 Ericsson Telefon Ab L M Sistema de control de flujo para interruptores de paquete.
JPH0991136A (ja) 1995-09-25 1997-04-04 Toshiba Corp 信号処理装置
JPH10124315A (ja) 1996-10-18 1998-05-15 Hitachi Ltd 分岐処理方法およびそのための情報処理装置
DE69718278T2 (de) 1996-10-31 2003-08-21 Texas Instruments Inc Methode und System zur Einzel-Zyklus-Ausführung aufeinanderfolgender Iterationen einer Befehlsschleife
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
US6963965B1 (en) 1999-11-30 2005-11-08 Texas Instruments Incorporated Instruction-programmable processor with instruction loop cache
JP2001195302A (ja) 1999-11-30 2001-07-19 Texas Instr Inc <Ti> 命令ループ・バッファ
US7302557B1 (en) 1999-12-27 2007-11-27 Impact Technologies, Inc. Method and apparatus for modulo scheduled loop execution in a processor architecture
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
US6748523B1 (en) 2000-11-02 2004-06-08 Intel Corporation Hardware loops
US6898693B1 (en) 2000-11-02 2005-05-24 Intel Corporation Hardware loops
US6950929B2 (en) 2001-05-24 2005-09-27 Samsung Electronics Co., Ltd. Loop instruction processing using loop buffer in a data processing device having a coprocessor
JP2004038601A (ja) 2002-07-04 2004-02-05 Matsushita Electric Ind Co Ltd キャッシュメモリ装置
WO2004049154A2 (en) * 2002-11-28 2004-06-10 Koninklijke Philips Electronics N.V. A loop control circuit for a data processor
US20040123075A1 (en) * 2002-12-19 2004-06-24 Yoav Almog Extended loop prediction techniques
US7159103B2 (en) 2003-03-24 2007-01-02 Infineon Technologies Ag Zero-overhead loop operation in microprocessor having instruction buffer
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
JP2006309337A (ja) 2005-04-26 2006-11-09 Toshiba Corp プロセッサ及びプロセッサの命令バッファ動作方法
US7475231B2 (en) * 2005-11-14 2009-01-06 Texas Instruments Incorporated Loop detection and capture in the instruction queue
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
US20090217017A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation Method, system and computer program product for minimizing branch prediction latency
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 データプロセッサ及びデータ処理システム
US9952869B2 (en) * 2009-11-04 2018-04-24 Ceva D.S.P. Ltd. System and method for using a branch mis-prediction buffer
TWI451279B (zh) 2010-04-07 2014-09-01 Apple Inc 即時或接近即時串流傳輸之內容存取控制
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
US9753733B2 (en) 2012-06-15 2017-09-05 Apple Inc. Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold

Also Published As

Publication number Publication date
JP5799465B2 (ja) 2015-10-28
US20130339700A1 (en) 2013-12-19
KR101497214B1 (ko) 2015-02-27
CN103593167B (zh) 2017-02-22
BR102013015049B1 (pt) 2021-03-02
US9557999B2 (en) 2017-01-31
BR102013015049A2 (pt) 2015-06-23
CN103593167A (zh) 2014-02-19
JP2014013565A (ja) 2014-01-23
KR20130141394A (ko) 2013-12-26
EP2674858A2 (en) 2013-12-18
WO2013188122A3 (en) 2014-02-13
EP2674858B1 (en) 2019-10-30
EP2674858A3 (en) 2014-04-30
WO2013188122A2 (en) 2013-12-19
TW201411487A (zh) 2014-03-16

Similar Documents

Publication Publication Date Title
TWI520060B (zh) 用於追蹤迴圈候選者之裝置及方法及處理器
US9471322B2 (en) Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
US9753733B2 (en) Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer
US9891923B2 (en) Loop predictor-directed loop buffer
US9026769B1 (en) Detecting and reissuing of loop instructions in reorder structure
TWI574205B (zh) 減少在處理器上的電源耗損之方法及設備及電腦系統
TWI564707B (zh) 用於控制電流之設備、方法及系統
KR20130124221A (ko) 로드―저장 의존성 예측기 내용 관리
US20120079255A1 (en) Indirect branch prediction based on branch target buffer hysteresis
US9354886B2 (en) Maintaining the integrity of an execution return address stack
US20140344558A1 (en) Next fetch predictor return address stack
US20140095835A1 (en) Performing predecode-time optimized instructions in conjunction with predecode time optimized instruction sequence caching
US9626185B2 (en) IT instruction pre-decode
US10747539B1 (en) Scan-on-fill next fetch target prediction
US9367317B2 (en) Loop streaming detector for standard and complex instruction types
US9489204B2 (en) Method and apparatus for precalculating a direct branch partial target address during a misprediction correction process