TW201423584A - 提取寬度預測器 - Google Patents
提取寬度預測器 Download PDFInfo
- Publication number
- TW201423584A TW201423584A TW102132631A TW102132631A TW201423584A TW 201423584 A TW201423584 A TW 201423584A TW 102132631 A TW102132631 A TW 102132631A TW 102132631 A TW102132631 A TW 102132631A TW 201423584 A TW201423584 A TW 201423584A
- Authority
- TW
- Taiwan
- Prior art keywords
- extraction
- instruction
- width
- instructions
- extracted
- Prior art date
Links
- 238000012546 transfer Methods 0.000 claims abstract description 34
- 238000000034 method Methods 0.000 claims abstract description 24
- 230000004044 response Effects 0.000 claims abstract description 12
- 238000000605 extraction Methods 0.000 claims description 302
- 238000012549 training Methods 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 19
- 239000000284 extract Substances 0.000 claims description 10
- 239000000463 material Substances 0.000 description 24
- 230000006870 function Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 11
- 238000013519 translation Methods 0.000 description 5
- 230000014616 translation Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000008407 joint function Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0886—Variable-length word access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本發明揭示用於預測指令提取寬度之各種技術。在一實施例中,一處理器中之一提取預測單元經組態以產生指定待在一後續提取中自一指令快取記憶體擷取的位元之一數目的一提取寬度。回應於一當前提取請求,該提取預測單元亦可產生包括該提取寬度之一提取預測。可自該指令快取記憶體提取對應於該提取寬度的位元之一數目。該提取寬度可對應於一所預測之採納控制轉移指令的一位置。此提取寬度預測可導致指令快取記憶體存取中之電力節約。
Description
本發明大體上係關於電腦處理器,且更特定而言,係關於自指令快取記憶體之指令提取。
現代處理器通常包括指令快取記憶體以加速提取程式指令。可將指令資料預提取至指令快取記憶體中以避免自記憶體或自階層式快取記憶體實施中之較大快取記憶體擷取指令資料中所涉及的延遲。處理器可不按程式次序地執行指令,且經常每循環執行一個以上之指令。因此,處理器可每一循環提取對應於多個指令的資料。舉例而言,在一些實施中,可對應於儲存於一或多個指令快取線中之指令資料的「提取群組」包括32位元組(256位元)之指令資料,其對應於十六個16位元之指令或八個32位元之指令。
經常地,處理器實際上將不會使用提取群組中之所有指令。舉例而言,若提取群組中存在控制轉移指令,則可不執行該提取群組中位於該控制轉移指令之後的指令。分支、調用、傳回等為控制轉移指令的實例。此外,在所執行之程式指令的許多序列中相對較高地流行採納分支。
本發明係關於一種經組態以預測用於自一處理器指令快取記憶體提取的指令提取寬度的處理單元。在一些實施例中,基於一所預測
之採納控制轉移指令的位置,該處理單元可預測該指令提取寬度。該指令快取記憶體可經組態以回應於接收包括一提取寬度之一指令提取請求,輸出指令之一群組。指令之該群組可具有對應於該提取寬度的位元之一數目。位元之該數目可小於該指令快取記憶體經組態以回應於一給定指令提取請求而提供之位元的一最大數目。舉例而言,在一些實施例中,該指令快取記憶體與其他處理元件之間的一介面或匯流排可具有一特定寬度,且其可經組態以每時脈循環轉移至多位元之一最大數目。
在一特定實施例中,一下一提取預測器可為經組態以回應於在一第一處理器循環中接收一提取請求而預測一下一提取位址及一下一提取寬度的一單一循環預測器。該下一提取預測器可在緊接著後續於該第一時脈循環之一第二處理器循環期間,提供該所預測之下一提取位址及下一提取寬度。在一特定實施例中,該指令快取記憶體可經組態以回應於一給定提取請求,輸出至多32位元組之指令資料。回應於該所預測之下一提取寬度,該指令快取記憶體可自由該下一提取位址所指示的一位置,輸出小於32位元組之指令資料。以此方式,作為彼讀取之一結果,超出該提取寬度之指令將不可用於該處理器。在某些情況下,此方法可減少處理器電力消耗。
100‧‧‧處理器
120‧‧‧指令快取記憶體
122a-122x‧‧‧快取線
130‧‧‧提取預測單元
140‧‧‧32位元組之匯流排
200‧‧‧前端管線
210‧‧‧位址選擇器
212‧‧‧增量器
230‧‧‧下一提取預測器
232‧‧‧下一提取表
234‧‧‧控制邏輯
236‧‧‧位址及寬度預測
240‧‧‧解碼單元
248‧‧‧旁路
250‧‧‧分支預測器
252‧‧‧分支預測資料
260‧‧‧指令處理單元
302‧‧‧程式計數器(PC)
304‧‧‧訓練控制信號
306‧‧‧雜湊輸出識別符(ID)
308‧‧‧下一提取程式計數器(PC)位址
310‧‧‧下一提取寬度
320‧‧‧雜湊函數處理元件
330‧‧‧更新邏輯
342a-342g‧‧‧輸入項
350‧‧‧狀態欄位
352‧‧‧欄位/雜湊輸出ID
354‧‧‧欄位/所預測之提取程式計數器(PC)
358‧‧‧欄位/所預測之提取寬度
400‧‧‧方法
460‧‧‧方法
圖1為說明處理器之指令快取記憶體及提取預測單元的一實施例之方塊圖;圖2為說明處理器管線之前端的一實施例之方塊圖;圖3為說明下一提取預測器之一實施例的方塊圖;圖4a至圖4b為說明圖2之前端管線之操作的各種例示性實施例的流程圖;及圖5a及圖5b為說明例示性指令資料的圖解。
本說明書包括對「一實施例」、「實施例」、「一實施」或「實施」的參考。此等片語之出現未必指代相同實施例或實施。可以與本發明一致之任何合適方式來組合特定特徵、結構或特性。
參看圖1,展示說明處理器100之一部分的一例示性實施例之一般化方塊圖。處理器100包括指令快取記憶體120及提取預測單元130。提取預測單元130可預測待自指令快取記憶體120提取的提取請求位址。在一些實施例中,提取預測單元130亦可預測待自指令快取記憶體120提取的提取寬度。
指令快取記憶體120包括快取線122a至122x,該等快取線中之每一者可包括指令資料之位元組的數目。快取線之大小可對應於自另一快取記憶體(例如,L2快取記憶體)或記憶體至指令快取記憶體120的每一轉移最小資料量。指令提取單元(未展示)或一些其他處理元件可將具有提取位址之提取請求發送至指令快取記憶體120。若指令快取記憶體120含有對應於提取位址之指令資料,則指令快取記憶體120可提取指令資料且將其提供給諸如解碼單元之另一處理元件。若指令快取記憶體120不含有對應於提取請求位址之指令資料,則處理器100可經組態以自快取記憶體或記憶體將該指令資料載入至指令快取記憶體120。
如本文中所使用,術語「處理元件」及/或「處理單元」可指代各種元件或元件之組合。處理元件包括(例如)個別處理器核心之部分或電路、整個處理器核心及個別處理器。
在此實施例中,將指令快取記憶體120說明為關聯式快取記憶體,且其可包括數個如圖1中所展示之快取通道。在各種實施例中,指令快取記憶體120可為2通道快取記憶體、8通道快取記憶體或任何其他適當之數目的快取記憶體。每一通道可包括數個快取線(例如,
圖1中之第一通道至少包括快取線122a、122b及122m)。替代性地,指令快取記憶體120可為直接映射快取記憶體。在一實施例中,每一快取線包括64位元組之指令資料、標記及旗標資料。旗標資料可指示快取線是否載入有有效資料。標記可包括快取線中之指令資料的位址的部分。在所說明之實施例中,指令快取記憶體120經由32位元組之匯流排140而耦接至處理器管線。在此實施例中,指令快取記憶體120經組態以回應於給定之指令提取請求,提供最大32位元組之指令資料。換言之,在此實施例中,對於任何提取請求,指令快取記憶體120經組態以輸出至多32位元組之指令資料。然而,對於一些提取請求,指令快取記憶體120可輸出小於32位元組之指令資料(亦即,小於提取群組之最大大小或小於指令快取記憶體120經組態以回應於給定之提取請求而提供之最大大小),如以下將進一步詳細描述。可自單一快取線或自多個快取線提供給定提取請求之指令資料。舉例而言,對於特定提取請求,可自快取線122a提供32位元組之指令資料。作為另一實例,可自線122a提供8位元組之指令資料,且可自線122b提供24位元組之指令資料,以便提供32位元組之指令資料。
提取預測單元130耦接至指令快取記憶體120,且可經組態以將所預測之提取請求資訊及所預測之提取寬度資訊提供給指令快取記憶體120。基於來自提取預測單元130之預測,指令快取記憶體120可讀取及/或輸出小於32位元組之指令資料(亦即,小於給定提取請求可用的最大量之指令資料)。
如本文中所使用,術語「基於」用以描述影響判定之一或多個因素。此術語並不排除可影響判定之額外因素。亦即,判定可僅僅基於彼等因素或至少部分地基於彼等因素。考慮片語「基於B來判定A」。雖然在此狀況下,B為影響A之判定的因素,但此片語並不排除A之判定亦基於C。在其他情況下,可僅僅基於B來判定A。
另外,本文中之術語「經組態以」用以藉由指示單元/電路/組件包括在操作期間執行某一或某些任務之結構(例如,電路)而暗示結構。因而,即使當單元/電路/組件並非同時可操作(例如,並未同時在作用中)時,仍可稱所指定之單元/電路/組件經組態以執行任務。與「經組態以」之語言一起使用的單元/電路/組件包括硬體一一例如,電路、儲存可執行以實施操作之程式指令的記憶體等。敍述單元/電路/組件「經組態以」執行一或多個任務明確地意欲不針對彼單元/電路/組件援引35 U.S.C.§ 112第六段。
經常地,處理器實際上將不會使用提取群組(亦即,回應於提取請求所提供的指令之群組)中之所有指令。舉例而言,若提取群組中存在採納分支,則可不執行該提取群組中位於該分支之後的指令。此外,在所執行之程式指令的許多序列中相對較高地流行採納分支。因此,隨著提取群組之寬度增長,採納分支將導致提取群組中之未使用指令的可能性亦增長。
在許多狀況下,相對較寬之靜態(亦即,不變)提取寬度可浪費電力,此係因為此情況使得自最終未由處理器使用(執行)之指令快取記憶體讀取指令。另一方面,藉由未提取足夠指令,相對較窄之靜態提取寬度可降級處理器效能。舉例而言,若指令資料在平均每十個指令之後包括採納分支,且處理器自指令快取記憶體每提取群組靜態地提取二十個指令,則可稱浪費了用於讀取提取群組之電力的大約一半(平均)。相反地,較小之靜態提取群組(例如,五個指令)可將不充分之指令資料供應給處理器。因此,在本文中所揭示之實施例中,提取預測單元130可經組態以動態地產生所預測之提取寬度。換言之,基於所預測之提取寬度,指令快取記憶體120可提供指令資料之位元組的數目。提取寬度預測稱為係「動態的」,此係因為可自一提取寬度預測變化至下一提取寬度預測。
舉例而言,考慮如下情形:指令快取線122n之資料部分含有三十二個16位元之指令。如上文所論述,線122n之標記部分可含有位址的一部分,且旗標可指示線122n中之資料是否有效。在圖1之實例中,線122n中之指令的位址的範圍為自基本位址A+0至位址A+63,每一位址對應於一位元組之指令資料。
在所說明之實例情形中,對應於所預測之提取請求的所預測之提取位址位於A+4處。換言之,提取預測單元130已預測對位址A+4的指令提取(亦即,以駐留於A+4與A+5處的16位元之指令開始)。在此實例中,對應於所預測之提取寬度的所預測之採納分支位於A+20處。換言之,提取預測單元130已預測位於A+20處之指令為採納分支。在描述各種實施例時,分支用作控制轉移指令的一非限制性實例。另外,術語「分支預測資訊」及「分支預測器」指代用於除了分支之外的各種控制轉移指令之預測資訊及預測器。
對於給定程式或程式之部分,流程通常以順序方式繼續進行。考慮指令之以下群組:1d mem1→r1;add r1,r2→r3;st r3→mem2。在此例示性序列中,順序地自載入指令至添加指令至儲存指令繼續進行執行及完成。此順序定序可被視為程式流程預設。在此實例中,此等指令皆不影響待執行及完成之下一指令的選擇(超出預設行為)。
相反地,藉由某些作業碼的指令之執行及完成潛在地影響待執行及完成之下一指令的選擇。此等指令在本文中被稱作「控制傳轉移指令」。控制轉移指令可包括(但不限制)分支、跳躍、調用、傳回等。此等類型之指令可使得待執行及完成的下一指令之預設行為改變。控制轉移指令可用於(例如)執行指令迴圈。
亦可存在許多不同類型之控制轉移指令。舉例而言,控制轉移指令可條件性地操作(亦即,基於某一條件是真還是假,設定程式計數器)或無條件地操作。類似地,某些控制轉移指令可指定直接目標
位址;其他控制轉移指令可指定間接目標位址。應注意,控制轉移指令之執行及完成可影響處理器狀態,而非下一指令的位置(例如,可存在執行算術操作之後分支的指令)。
若狀況為上文所給定之實例中的預測係正確的,則僅自A+4至A+21的18位元組之指令資料可由處理器100在相對較近之未來使用。所請求之指令經預測為於位址A+4處開始,且所預測的A+20處之採納分支意謂將在另一提取群組內之位址處繼續指令提取。因此,將不會在當前指令流程中立即使用來自快取線122n的位於32位元組之提取群組的A+4至A+21部分之前及之後的指令。出於此原因,基於來自提取預測單元130的所預測之提取寬度,指令快取記憶體經組態以僅讀取對應於位址A+4至A+21處之指令的指令資料,以便節約電力。
如本文中所使用,術語「提取寬度」指示來自指令快取記憶體120的指令資料之量(例如,位元或位元組之數目)。在一些實施例中,提取寬度值可為待提取之位元/位元組之數目的編碼(例如,提取寬度值可為可用於指示是否自指令快取記憶體提取8位元組、16位元組、24位元組或32位元組的兩位元值)。在另一實施例中,提取寬度值之每一位元可指示是否應提取一或多個快取線的特定部分(例如,位元1指示是否提取第一部分,位元2指示是否提取第二部分等等)。在其他實施例中,提取寬度值可直接指定待提取之指令的數目(例如,可直接編碼8位元組、16位元組、24位元組或32位元組的值)。
在一些實施例中,單獨的值可用於指定快取線內開始給定提取處的位置。在一些實施中,此值可被稱作「提取位置」。在上文之實例中,提取位置可在快取線內經指定為位移4,同時對應之提取寬度為18位元組。在一些實施中,提取寬度可包括寬度值與提取位置兩者,但如本文中所使用,提取寬度至少指定寬度值的指示(且未必指定提取位置)。
如上文所提到,術語「提取寬度」在本發明中用於意謂指示待自指令快取記憶體120提取的指令資料之量的值。在由預測硬體指定提取位置的一些實施例中,提取寬度可指示為快取線內之結束位置,亦即「提取末端」。換言之,提取位置可指定快取線內之開始位置,且提取寬度可指定相同快取線內或另一快取線內之結束位置。在此實施中,藉由相對於提取位置隱含地指定寬度,提取寬度值指示待自快取記憶體提取的指令之數目。以另一方式陳述,提取寬度可明顯地抑或隱含地指定待自指令快取記憶體120提取的指令之數目。在上文之實例中,提取寬度可在快取線內經指定為指示位移21的提取末端。
如以下將描述,在一些情況下,可使用提取寬度的概念以提取所預測之提取位址與所預測之採納控制轉移指令之間的指令。接下來描述之圖2描繪使用提取寬度概念的例示性處理器管線。在一些實施例中,使用提取寬度可導致處理器效能提高及/或電力消耗減少。
參看圖2,展示說明處理器100之前端管線200的一實施例之一般化方塊圖。此配置僅僅係例示性的。本文中所揭示之實施例可與處理器100內之電路的眾多不同配置一起使用。
在所展示之實施例中,管線200為用於處理管線的多級管線。處理器「管線」的概念係較好地理解的,且其指代將處理器對指令執行之「工作」分割成多級的概念。在一實施例中,指令解碼、指令調度、指令執行及指令收回可為不同管線級的實例。許多不同的管線架構係可能的。各種管線級在一或多個處理器時脈循環期間對指令執行此等步驟,接著將指令傳遞至其他級上以用於另外處理。
指令快取記憶體120可儲存在處理器100上執行之用於軟體應用程式(使用者應用程式、作業系統等)的指令。自指令快取記憶體120提取(亦即,擷取)由位址選擇器210所輸送之程式計數器(PC)位址所指示的一或多個指令。若不存在指令快取未中(亦即,所請求之指令當
前位於指令快取記憶體120中),則每時脈循環可自指令快取記憶體120提取多個指令。
在某些實施例中,處理器100可實施位址轉譯方案,其允許一或多個虛擬位址空間可見於執行之軟體。虛擬位址空間內之記憶體存取可轉譯為對應於可用於處理器100的實際實體記憶體之實體位址空間。在利用位址轉譯之處理器100的實施例中,使用實體位址位元而非虛擬位址位元,可部分地或完全地定址指令快取記憶體120。舉例而言,指令快取記憶體120可使用用於快取索引的虛擬位址位元,及用於快取標記的實體位址位元。當執行快取記憶體存取時,為了避免執行全記憶體轉譯的成本,處理器100可在轉譯後援緩衝器(TLB)(圖1中未展示)中儲存最近使用及/或頻繁地使用之虛擬至實體位址轉譯之集合。
在所展示之實施例中,供應至指令快取記憶體120的當前提取位址係來自位址選擇器210。在此特定實施中,選擇器210接收三個不同輸入(取決於所使用之預測邏輯的分類,其他數目個輸入係可能的)。由增量器212供應至選擇器210的一輸入,該增量器供應下一順序PC位址(亦即,下一PC假設不存在採納控制轉移指令)。由下一提取預測器230及分支預測器250供應其他輸入至選擇器210。如可自圖2中之管線級的描繪所看到,下一提取預測230經組態以在由分支預測250產生預測之前產生位址及寬度預測236。
在一實施例中,基於相對較快於由分支預測250作出之給定分支指令之對應預測的給定控制轉移指令的預測,下一提取預測器230可產生非順序PC位址。在一些實施例中,下一提取預測器230可對應於圖1之提取預測單元。在一實施例中,下一提取預測器230包括下一提取表232及控制邏輯234。在一些實施例中,下一提取預測器230基於PC位址存取分支預測資訊。下一提取表232中之命中可提供下一PC位
址及下一提取寬度236以用於自指令快取記憶體120提取指令。在一實施例中,控制邏輯234以雜湊函數組合用於提取指令及/或其他值之PC位址中的一或多個部分。在某些實施例中,此雜湊函數可係相對較快互斥或(XOR)聯合(或組合)函數,且此雜湊函數之輸出可用於索引至下一提取表232中。在一實施例中,下一提取預測器230為單一循環預測器,意謂預測器230在給定時脈循環開始處產生預測236,接收輸入,且接著在彼時脈循環末端處產生預測,使得預測236在緊接著之後續時脈循環中可用於管線200內之其他單元。
在一實施例中,分支預測器250亦接收用於自指令快取記憶體120提取指令之PC位址中的至少一部分。使用此及其他資訊,預測器250亦可執行由預測器230所預測之控制轉移指令的方向及目標的預測。在許多實施例中,預測器250之預測可比由預測器230所產生之預測相對較慢(且因此更準確)。舉例而言,分支預測器250亦可以單獨雜湊函數將所接收之PC位址的至少一部分與其自身之另一部分或與諸如歷史資訊之其他值組合。可執行各種雜湊函數以判定至一或多個型樣歷史表(PHT)、分支目標緩衝器(BTB)及/或用於提供分支預測資料252的其他表的索引。分支預測資料252可包括分支方向及分支目標位址。分支預測器250可利用多個時脈循環以判定控制轉移指令之條件的結果,以及判定分支目標位址。
分支預測器250可因此提供比下一提取預測器230較高預測準確性之分支預測資料252。然而,出於效能原因,可能需要獲得較快之預測。因此,下一提取預測器230可用於提供快速、初始之分支預測及提取寬度。在所說明之實施例中,下一提取預測器230經由位址選擇器210將所預測之下一位址及寬度236提供給指令快取記憶體120。在其他實施例中,下一提取預測器230可經由其他通信路徑將所預測之提取位址及提取寬度資訊236提供給指令快取記憶體120。分支預測
器250可執行並行、較慢之分支預測及/或寬度預測,該預測可確認或可不確認預測236。
由下一提取預測器230所產生之預測資料可沿著處理器100之管線儲存及分級,亦即,使得可用於各種管線級。經分級之預測資料可與由分支預測器250在稍後管線級處所產生之預測資料或與自控制轉移指令之執行及完成所產生的完成資料比較。當下一提取預測器230產生並不匹配由分支預測器250在稍後之時間所產生之預測資料252的分支預測資料時,可藉由分支預測器250所產生之預測資料252更新或訓練下一提取預測器230(例如,在圖2之訓練級期間)。可在相關指令之收回或完成處類似地訓練下一提取預測器230。如本文中所使用,訓練下一提取預測器230可包括基於由分支預測器250所產生之分支預測資料252,寫入或更新該下一提取預測器230中所儲存之參數。應注意,在一些實施例中,訓練級可先於管線級N;圖2中之管線級的定序意欲為例示性之一實施例,且並不意欲排斥其他實施。
在一實施例中,解碼單元240可解碼多個所提取之指令的作業碼。替代性地,指令可被分成微指令或微操作。如本文中所使用,術語「指令」及「微操作」係可互換的,此係因為本發明可與利用任一實施之架構一起使用。解碼單元240可將具有額外經解碼之資訊的指令發送至處理器100中之其他組件,以用於在稍後之管線級中指令處理。
此等稍後之管線級一般由指令處理單元260表示。舉例而言,解碼單元240可分配調度佇列中之輸入項。暫存器重新命名、指令排程、執行算術運算及/或執行記憶體存取及按次序收回僅為稍後之指令處理步驟的一些實例。在一實施例中,解碼單元240可將資料轉遞至稍後之管線級,同時旁路其他管線級。舉例而言,為了藉由提取寬度資訊訓練下一提取預測器230,解碼單元240可解碼控制轉移指令及
將經解碼之指令資訊轉遞至下一提取預測器230及/或分支預測器250以用於在管線之訓練級期間使用。此組態在圖2中展示為旁路248。
現轉向圖3,展示下一提取預測器230之一實施例的一般化方塊圖。在所說明之實施例中,下一提取預測器230包括控制邏輯234及下一提取表232,其可如上文參考圖2針對經類似編號之元件所描述地經組態。如所展示,下一提取預測器230接收當前提取PC 302。在一實施例中,所接收之當前提取PC 302可包括用於自識別當前控制轉移指令之指令快取記憶體120提取指令的充分數目個位元之位址。在一實施中,可自位址選擇器210供應當前提取PC 302。
在一些實施例中,當前提取PC 302用於存取下一提取表232,以便預測下一提取PC及/或下一提取寬度。在一實施例中,可至少由雜湊函數320之輸出索引下一提取表232。下一提取表232儲存對應於控制轉移指令,且可用於產生分支預測資料的資訊。在一實施例中,分支預測資料可包括分支方向及分支目標位址,諸如所預測之下一提取PC位址。分支預測資料亦可包括提取寬度,其指示待自指令快取記憶體120提取的指令資料之量(例如,多少位元或位元組)。下一提取表232可儲存條件性控制轉移指令及無條件控制轉移指令兩者的資訊。另外,下一提取表232可儲存直接控制轉移指令及間接控制轉移指令的資訊。一般而言,下一提取表可儲存任何類型之控制轉移指令的預測資料。在一實施例中,下一提取表232可儲存未基於所預測之採納分支預測的提取群組的所預測之提取寬度,以及基於所預測之採納分支預測的提取群組的所預測之提取寬度。換言之,下一提取表232可儲存對應於下一提取預測器230並未預測採納分支之情形中之順序提取群組的所預測之提取寬度。在此實施例中,下一提取預測器230可將自指令快取記憶體120所提取之每一提取群組分配給下一提取表232中之輸入項,或可將自包括所預測之採納控制轉移指令的指令
快取記憶體120所提取之每一提取群組分配給一輸入項。
條件分支指令執行採納指令串流中之哪個路徑的判定。若分支指令判定未滿足條件,則將該分支指令視為未採納,且執行程式次序中之下一順序指令。然而,若分支指令判定滿足條件,則將該分支指令視為已採納。對於已採納之分支指令,執行並非程式次序中之下一順序指令,而是位於所計算之分支目標位址處的指令。控制轉移指令的「方向」指代是否採納該控制轉移指令。舉例而言,預測條件分支的方向涉及預測是否採納該分支。將無條件分支指令視為總是採納條件分支指令。不存在條件以進行測試,且指令的執行以不同於順序次序之序列發生。因此,無條件分支之方向的預測將總是正確的(無例外情況),此係由於總是採納該等分支。然而,對於條件分支,該分支之方向的預測可係或可不係正確的。因此,可錯誤預測某些條件分支的方向。當執行及收回條件分支指令時(亦即,未以推測式方式執行),明確地判定該分支的方向(亦即,是否採納該分支),且該分支的方向可用於更新一或多個分支預測器(例如,單元230及250)。
對於直接分支指令,可由相對於程式計數器(PC)值之位移指定分支目標位址,該位移可儲存於分支指令自身中。對於間接分支指令,可由暫存器或記憶體中之值指定分支目標位址,其中可在分支指令中識別暫存器或記憶體位置。另外,指定分支目標位址之暫存器或記憶體位置可載入有不同值。應注意,上文之相關於分支的論述同等效力地適用於各種其他控制轉移指令。本文中所揭示之技術的應用可應用於任何合適類型之控制轉移指令,其包括基於條件性轉移之彼等指令、基於無條件轉移之彼等指令、具有直接指定之轉移位址的彼等指令、具有間接指定之轉移位址的彼等指令等。
在一實施例中,下一提取表232具有多個輸入項342a至342g。輸入項342a至342g中之每一者可包括若干欄位,至少諸如欄位350至
358。在一實施例中,欄位350儲存狀態資訊,諸如輸入項之有效性的指示(例如,有效位元)。欄位352儲存雜湊輸出識別符(ID)。此識別符值可為由雜湊函數320在較早之時間所產生的值,且其用於判定輸入項是否在下一提取表232中產生「命中」。在一實施例中,欄位352可儲存經雜湊之提取PC位址的額外位元。在其他實施例中,雜湊輸出ID係充分的以用於提供對下一提取表232之快速且獨特的查找。
在所展示之實施例中,表232中之欄位354儲存對應控制轉移指令的所預測之下一提取PC。另一方面,欄位358儲存對應於所預測之下一提取PC之提取的所預測之下一提取寬度值。在一實施例中,下一提取寬度358指示對應於所預測之下一提取PC的提取群組內的所預測之採納控制轉移指令的位置。在一些實施例中,下一提取寬度358亦可包括對應於所預測之下一提取PC的提取群組內之對應於提取位置的資訊(亦即,指定提取之第一指令的資訊)。一般而言,下一提取寬度358可包括指示對應於所預測之下一提取PC之提取群組的所預測之可使用部分的資訊。
在一實施例中,由雜湊函數320藉由所接收之當前提取PC 302而對其位元執行雜湊。在一實例中,可由雜湊函數處理元件320內之互斥或(XOR)聯合函數將當前提取PC 302之位移部分與當前提取PC 302之上部位元組合。在其他實例中,位移部分可與不同於當前提取PC 302之上部位元中之每一者的位元組合。另外,可使用非連續位元及其他聯合邏輯。可使用其他值(未展示),諸如歷史資訊、計數值等等。眾多此等替代方案係可能且被涵蓋。然而,在各種實施例中,在單一時脈循環之後,可預期由下一提取預測器230產生分支預測資料。換言之,若在第一時脈循環期間接收到提取請求,則下一提取預測器230可經組態以在緊接著後續於該第一時脈循環之第二時脈循環期間產生分支預測資料。(此上下文中之片語「緊接著後續」意謂第
一時脈循環與第二時脈循環之間不存在其他時脈循環。)如本文中所使用,術語「時脈循環」可指代處理器時脈之循環。資訊可在處理器時脈之上升邊緣抑或下降邊緣或該兩者上之管線200的元件之間閂鎖。因此,雜湊函數320之功能性可係關於快速且有效率之雜湊計算。在一些實施例中,下一提取預測器230可預測當前提取請求之提取寬度。在一些實施例中,下一提取預測器230可預測後續提取請求之提取寬度。
在一實施例中,雜湊函數320之輸出(除了別的以外)可用於索引至下一提取表232中。可對雜湊函數320之輸出與儲存於輸入項342a至342g之欄位352中的雜湊輸出ID執行比較。若發現匹配且輸入項係有效的,則可自下一提取表232讀取儲存於欄位354及358中的對應下一提取PC及下一提取寬度。狀態欄位350可指示輸入項是否有效,且雜湊輸出ID 352可用於識別可與欄位354及358中所儲存之資料一起分組的對應控制轉移指令(亦即,其可用於在控制轉移指令之後續發生時識別輸入項)。所有此等資料可經分級且發送至稍後之管線級,以由分支預測器250中之控制邏輯使用。舉例而言,在一實施例中,可將對應於下一提取PC及下一提取寬度的所預測之提取程式計數器354及所預測之提取寬度358提供給位址選擇210。分支預測器250可驗證所接收之資料是否同意其在稍後之時間產生的分支預測資料。除了將資料發送至分支預測器250之外,將自下一提取表232讀取的下一提取PC及下一提取寬度發送至位址選擇器210,且潛在地繼續發送至指令快取記憶體120。
在一實施例中,下一提取預測器230亦可自分支預測器250接收資訊。可在分支預測器250驗證來自下一提取預測器230之分支預測資料是否匹配由分支預測器250所產生的分支預測資料之後接收此資訊。對於給定之控制轉移指令,下一提取預測器230可接收訓練控制
信號304、雜湊輸出ID 306、下一提取PC位址308及下一提取寬度310。可將自分支預測器250所接收的此資料發送至更新邏輯330。更新邏輯330可判定何時將資料寫入至下一提取表232及修改輸入項342a至342g之哪個輸入項中。
訓練控制信號304可為來自分支預測器250,以修改下一提取表232中之特定輸入項的指示。雜湊輸出ID 306可用於索引至下一提取表232中及識別輸入項342a至342g之給定輸入項。下一提取PC 308可用於覆寫儲存於所識別之輸入項的欄位354中的PC值。類似地,下一提取寬度可用於覆寫儲存於所識別之輸入項的欄位358中的指示。基於由下一提取單元230及分支預測單元250所產生之分支預測資料之間的失配,及/或基於由下一提取單元230所產生之分支預測資料與控制轉移指令之實際方向之間的失配,可發生訓練。發送至下一提取預測器230的訓練控制信號304或其他指示符可識別覆寫所識別之輸入項中的哪些欄位。在一些狀況下,可更新下一提取PC與提取寬度兩者。在其他狀況下,更新此等兩值中之一者,而不修改該兩值中之另一者。
在一些實施例中,基於控制轉移指令之完成或收回,完成單元或一些其他處理元件可訓練下一提取預測器230。可使用類似於上文參考由分支預測單元250訓練下一提取預測器230所描述之彼等信號的信號執行此訓練。
藉由預測提取寬度,圖3之下一提取預測器230可促進減少處理器中之電力消耗。電力消耗之提取指令可對應於自指令快取記憶體所提取的位元數目,亦即,提取較多位元需要較多電力。因此,預測提取寬度可允許指令快取記憶體120提取小於最大提取群組大小的位元數目,因此相比於總是提取最大提取群組大小而減少電力消耗。
現參看圖4a,展示例示性方法400的流程圖。流程開始於區塊410
處。在區塊410處,將下一提取表232中之提取位址分配給一輸入項。在一實施例中,更新邏輯330分配該輸入項。該輸入項包括提取寬度。在一實施例中,此分配發生於處理器管線之訓練級期間,諸如圖2之訓練級。諸如圖3之輸入項342g的輸入項可經分配有提取位址,且其可包括下一提取PC及下一提取寬度欄位。基於後續於對該輸入項所分配之提取位址之提取請求的提取請求,資訊可儲存於此等欄位中。流程繼續進行至區塊435。
在區塊435處,回應於提取請求,提供該提取寬度。在一實施例中,下一提取預測器230提供該提取寬度。提取寬度可對應於當前提取請求的所預測之寬度或後續提取請求的所預測之寬度。若提取寬度對應於後續提取,則其可對應於所預測之下一提取請求,其中處理器經組態以在緊接著該提取請求之處理器循環中提取所預測之下一提取請求。流程結束於區塊435處。圖4a中所展示之方法可與本文中所揭示之電腦系統、器件或組件中之任一者以及其他器件結合使用。在各種實施例中,所展示之方法元素中之一些可以不同於所展示之次序同時地執行,或可被省略。如需要,亦可執行額外之方法元素。在一些實施例中,方法400之步驟410及435可執行為單獨方法一一用於分配輸入項之一方法(步驟410)及用於使用輸入項之獨特方法(步驟435)。因此,可無需步驟410而執行步驟435,且可無需步驟435而執行步驟410。
現參看圖4b,展示例示性方法460的流程圖。流程開始於區塊465處。在區塊465處,判定所預測之提取寬度不匹配於所要之提取寬度。在一實施例中,分支預測器250作出此判定。當下一提取預測器230錯誤預測控制轉移指令時,可發生此情形。舉例而言,考慮如下情形:下一提取預測器230預測提取群組中之採納分支,且預測對應於直至該採納分支且包括該採納分支之指令的提取寬度。若未採納該
分支(亦即,預測不正確),則提取寬度小於所要之提取寬度,此係因為未採納該分支,且應提取該分支之後的指令。在此情況下,分支預測器250判定所預測之提取寬度小於所要之提取寬度。流程繼續進行至區塊470。
在區塊470處,修改提取預測單元中之輸入項的提取寬度(例如,在一實施例中,更新邏輯330修改下一提取單元230中之輸入項)。此修改可包括用對應於提取群組之最大大小的較寬之提取寬度替換該提取寬度或將該提取寬度替換為另一所預測之採納分支的位置。流程結束於區塊470處。
在其他實施例中,處理器100之各種元件可執行圖4a至圖4b之所描述的功能。圖4a至圖4b之方法可允許自指令快取記憶體動態、有效率地預測提取寬度,從而導致經由並不預測對處理器效能具有較小犧牲至無犧牲之提取寬度的提取預測單元之實施而節約電力。
現轉向圖5a,展示三個提取群組A至C。在圖5a之實例中,每一提取群組包括可儲存於一或多個指令快取線中的32位元組之指令資料。在圖5之實例中,每一指令包括16位元,因此每一提取群組包括16個指令。在一實施例中,提取寬度指示提取群組之特定末端位元組(在一些實施例中,亦可由所預測之提取寬度指示提取位置,但在圖5a之例示性實施例中,下一提取位址指示提取位置,而非提取寬度指示提取位置)。換言之,可不提取該提取位置之前,及在由提取群組所指示之特定末端位元組處的指令之後的指令。在其他實施例中,提取寬度可指定快取線及/或提取群組內之其他粒度,諸如特定位元、位元組或提取群組之較大部分。舉例而言,提取寬度欄位可使用3位元以指示提取群組或快取線之八個較大區域中之一者。在一實施例中,提取寬度欄位之粒度對應於指令快取組的大小。在此上下文中,指令快取組指代判定一次可自指令快取線讀取最小數目之位元的硬體
組態。舉例而言,每一指令快取組可保持16位元之指令資料,或任何其他適當數目個位元。
提取群組A包括至提取群組B中之位址B+0處之指令的分支。類似地,提取群組B包括至提取群組C中之位址C+4處之指令的分支,且提取群組C包括至提取群組D(未展示)的分支。
出於此實例之目的,假設將圖5a之實例中的所有控制轉移指令預測為已採納,且係經正確地預測。另外假設對於對應於提取群組A至C之位址,諸如圖2之下一提取預測器230的提取預測器包括具有所預測之下一提取位址及下一提取寬度的輸入項。
在一實例中,在第一處理器循環中,對提取群組A中之位址(例如,位址A+2)的提取請求到達下一提取預測器230及指令快取記憶體120。基於位址A+2之至少一部分,提取預測器230可索引至下一提取表232中,以預測下一提取PC為位址B+0,且下一提取末端為位元組12(此係因為提取群組B中之採納分支位於提取群組B之位元組11及12處)。
在第二處理器循環中(例如,緊接著第一處理器循環的循環),所預測之下一提取位址(B+0)及提取末端(12)到達指令快取記憶體120及下一提取預測器230。在第二處理器循環中,例如,基於來自下一提取預測器230的指示應使用所預測之下一提取位址,而非使用增量器212或分支預測器250之輸出的信號,位址選擇器210傳遞來自下一提取預測器230的提取位址及提取寬度236。基於提取寬度,僅自指令快取記憶體120讀取提取群組B之位元組B+0至B+12。相比於讀取整個提取群組B,此情況節省電力,此係因為未讀取位元組B+13至B+31。在同一循環中,下一提取預測器230使用位址B+0的至少一部分而索引至下一提取表232中,及預測下一提取位址將為位址C+4,且預測提取末端9(此係因為提取群組C中之採納分支位於該提取群組之位元組8
及位元組9處)。
在第三處理器循環中(例如,緊接著第二處理器循環的循環),所預測之下一提取位址(C+4)及提取末端(9)到達指令快取記憶體120及下一提取預測器230。基於提取寬度,僅自指令快取記憶體120讀取提取群組C之位元組C+4至C+9(提取6位元組之提取寬度)。在同一循環中,下一提取預測器230索引至下一提取表232中,及預測下一提取位址將為位址D,且預測提取末端。在一種情況下,若提取群組D中不存在所預測之採納分支,則下一提取預測器230可預測32之提取寬度,或較一般而言,對應於提取群組之末端的提取寬度。
應注意,在提取預測單元僅預測下一提取群組或快取線(且並非該群組或快取線內之位址)之其他實施例中,對應於提取位置(除了提取末端之外)的資訊可經包括為所預測之提取寬度的部分。在各種實施例中,除了本文中所描述的所預測之提取寬度之外,可使用快取線或提取群組的所預測之可使用部分的各種編碼、定義、指示等等。
現考慮如下情形:下一提取預測器230並不含有對應於提取群組A至C中任一者中之位址的有效輸入項。在此實例情形中,需要在處理彼等提取群組中之指令期間,分配下一提取預測器230中之輸入項。一旦分配該等輸入項,如上文所描述,可繼續進行後續提取請求的提取PC預測及提取寬度預測。
在此例示性情形之第一處理器循環中,對提取群組A中之位址(例如,A+2)的請求到達下一提取預測器230及指令快取記憶體120。在此情況下,下一提取預測器230中存在未中,此係因為無有效輸入項對應於所請求之位址。在一實施例中,下一提取預測器230預測下一位址為順序地接著提取群組A的指令快取位址(例如,圖5a之實施例中的A+32)。
在稍後之處理器循環中,來自提取群組A之指令可達到解碼級
(例如,管線200之解碼單元240)。在此點上,可解碼至提取群組B+0的分支指令。在一實施例中,分支預測器250預測是否採納分支指令。
在又一稍後之處理器循環中(例如,圖2之訓練級),分支預測器250傳訊至更新邏輯330以分配對應於提取群組A之一或多個位址的下一提取表232中之輸入項。在此管線級處,相關於預測下一提取PC之資訊係可用的(例如,若經預測為採納,則經解碼之分支至B+0),但需要關於提取寬度之另外資訊(例如,關於自群組B提取多少指令的資訊)。在一實施例中,將來自解碼單元240之資訊旁路或轉遞至管線的訓練級,以便判定所預測之下一提取寬度。換言之,將來自提取群組B的經解碼之指令資訊(諸如,至提取群組C之分支指令的位置)自解碼級轉遞至分支預測器訓練級。在其他實施例中,其他組態可滿足時序約束,同時將指令資訊提供至管線的訓練級及元件。更新邏輯330可儲存對應於下一提取表232中之提取群組A中的一或多個位址的輸入項之欄位354中的位址B+0,及欄位358中的提取末端12。在此點上,下一提取預測器230可視為經訓練的。換言之,回應於對提取群組A中之位址的後續提取請求,下一提取預測器可提供所預測之下一提取PC(B+0)及下一提取寬度(12)。
可類似地分配下一提取表232中對應於提取群組B及C中之一或多個位址的輸入項。
應注意,在各種實施例中,可使用索引及/或標記(例如,基於程式計數器302的一部分所產生的,諸如藉由雜湊函數320)存取及分配下一提取表232中的輸入項。可使用用於分配下一提取表232中之輸入項的各種方法,且在一些情況下,可移位下一提取表232中之其他輸入項。舉例而言,在下一提取表232為關聯式表的一實施例中,可使用最近極少使用之演算法以移位較舊的輸入項。在下一提取表232並
非關聯式表的一實施例中,新的輸入項可總是移位先前之輸入項。
最後,考慮如下情形:錯誤預測控制轉移指令。舉例而言,考慮如下情形:實際上未採納所預測之採納分支。在此情況下,所預測之提取寬度比所要之提取寬度窄。以另一方式陳述,由於未採納分支,因此將需要提取該分支之後的指令。因此,當錯誤預測分支時,分支預測器250可重新訓練下一提取預測器230。重新訓練下一提取預測器230可包括類似步驟以分配下一提取表232中之輸入項,除了輸入項係經修改而非分配的以外(例如,藉由包括將致使在對給定位址之後續提取請求時提取較大數目之指令的提取寬度)。
在一實施例中,當發生提取不足時,而非發生過度提取時,分支預測器250可重新訓練下一提取預測器230。當提取寬度過小時,會發生提取不足,且未提取足夠指令(例如,如上文所論述,當實際上未採納所預測之採納分支時)。當提取寬度過大時,會發生過度提取,且提取未使用指令(例如,實際上採納了提取群組中所預測之未採納分支)。
舉例而言,考慮如下情形:提取群組包括在採納與未採納之間交替的兩個分支指令(亦即採納第一分支,接著第二分支,接著第一分支等)。在此狀況下,若在過度提取與提取不足兩者時重新訓練下一提取預測器230,則每一其他循環將替代性地發生過度提取與提取不足。當過度提取時,此情形將導致電力浪費,且當提取不足時,導致未充分提取指令。因此,針對提取不足而非過度提取而重新訓練下一提取預測器230保持較大的下一提取寬度,且最小化提取不足。在其他實施例中,當發生過度提取及/或提取不足之各種組合時,可重新訓練下一提取預測器230。
現轉向圖5b,展示兩個提取群組A及提取群組B。應注意,在諸如圖5a之實例的一些實施例中,僅當下一提取預測器230預測下一提
取位址時,下一提取預測器230可預測提取寬度。換言之,在此等實施例中,當未作出提取預測且位址選擇器210傳遞來自增量器212的遞增之PC時,可不能預測提取寬度,且可提取最大大小之提取群組。相反地,在圖5b之實施例中,即使當所預測之下一提取位址順序地接著第一提取位址時(亦即,即使當提取群組並不包括所預測之採納分支時),下一提取預測器230分配下一提取表232中之輸入項。此實施例可需要較大之下一提取表232,在某些情況下,該下一提取表可使得實現單一循環之提取預測係較困難的。然而,在一些實施例中,以此方式分配輸入項可係較佳的,以便最小化所浪費之提取電力。舉例而言,假設已針對提取群組A及B訓練提取預測單元。因此,當來自提取群組A之提取位址到達下一提取預測器230時,下一提取預測器230預測下一提取PC將為位址A+32,且預測提取末端為位元組12。在下一循環中,所預測之下一提取位址A+32連同所預測之提取寬度12一起到達指令快取記憶體120;因此,僅自指令快取記憶體120讀取提取群組B之位元組A+32至A+43。
對於圖5b之實施例的訓練及重新訓練可如上文參考圖5a之實施例所描述地繼續進行,其中不同之處在於即使當未預測到分支時,可發生提取寬度之訓練。圖5a及圖5b之實例說明例示性指令資料,及當提取相對較寬之指令提取群組時,此指令資料之提取寬度預測可如何導致電力節約(亦即,減少之電力消耗)。
***
雖然上文已描述具體實施例,但即使在僅關於特定特徵來描述單一實施例的情況下,此等實施例仍並不意欲限制本發明之範疇。除非另外陳述,否則本發明中所提供之特徵的實例意欲為說明性的而非為限制性的。上文之描述意欲涵蓋如將為受益於本發明之熟習此項技術者所顯而易見的此等替代、修改及等效物。
本發明之範疇包括本文中所揭示之特徵中的任一特徵或組合(明顯地抑或隱含地),或其之任何一般化,而不管其是否減輕本文中所處理之問題中的任一者或所有者。因此,可在本申請案(或主張其優先權之申請案)的審查期間對任何此特徵之組合制定新的申請專利範圍。詳言之,參考隨附申請專利範圍,來自附屬請求項之特徵可與獨立請求項之特徵組合,且來自各別獨立請求項之特徵可以任何適當之方式組合而非僅僅以隨附申請專利範圍中所列舉之特定組合的形式。
100‧‧‧處理器
120‧‧‧指令快取記憶體
122a-122x‧‧‧快取線
130‧‧‧提取預測單元
140‧‧‧32位元組之匯流排
Claims (15)
- 一種裝置,其包含:一指令快取記憶體,其經組態以回應於接收包括一提取寬度之一指令提取請求,輸出指令之一群組,其中指令之該群組具有對應於該提取寬度的位元之一數目。
- 如請求項1之裝置,其進一步包含:一提取預測單元,其經組態以產生該提取寬度;其中該提取預測單元經組態以回應於對該指令快取記憶體的一先前提取請求,針對由該指令快取記憶體所接收之該指令提取請求而產生一提取預測,其中該提取預測包括該提取寬度。
- 如請求項2之裝置,其中該提取預測單元經組態以在接收該先前提取請求之後,在一下一時脈循環之一結束之前產生該提取預測。
- 如請求項1之裝置,其中該提取寬度指示一所預測之採納控制轉移指令的一位置。
- 如請求項1之裝置,其中位元之該數目小於該指令快取記憶體經組態以回應於一給定提取請求而提供之位元的一最大數目。
- 一種方法,其包含:由一處理元件將一提取位址分配給一指令提取預測單元中之一輸入項,其中該經分配之輸入項儲存指定回應於一提取請求,待自一指令快取記憶體提取的指令之一數目的一提取寬度。
- 如請求項6之方法,其中該經分配之輸入項進一步儲存一所預測之提取位址。
- 如請求項6之方法,其進一步包含回應於接收對該提取位址之一 提取請求,自該經分配之輸入項讀取該提取寬度。
- 如請求項8之方法,其進一步包含基於該提取寬度,經由至該指令快取記憶體之一介面提取位元之一數目,其中位元之該數目小於該介面之寬度之位元的一數目。
- 如請求項6之方法,其進一步包含:自一處理器管線中之一解碼級將經解碼之指令資訊轉遞至該處理器管線中之一訓練級;及基於該經解碼之指令資訊,判定該提取寬度。
- 一種裝置,其包含:一指令快取記憶體,其經組態以輸出具有至多位元之一最大數目的指令之一群組,其中該指令快取記憶體經組態以回應於一特定指令提取請求,輸出具有小於位元之該最大數目的指令之一對應群組。
- 如請求項11之裝置,其中指令之該對應群組包括一第一指令、一第二指令及該第一指令與該第二指令之間的一或多個指令。
- 如請求項12之裝置,其中該第一指令與一所預測之提取位址相關聯,且該第二指令為一所預測之採納控制轉移指令。
- 如請求項11之裝置,其中該裝置經組態以藉由存取與指令之該群組相關聯的一或多個指令快取組而不存取不與指令之該群組相關聯的一或多個指令快取組,提取指令之該對應群組。
- 如請求項11之裝置,其中指令之該對應群組具有對應於包括於該特定提取請求中之一提取寬度的位元之一數目。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/609,236 US9367471B2 (en) | 2012-09-10 | 2012-09-10 | Fetch width predictor |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201423584A true TW201423584A (zh) | 2014-06-16 |
Family
ID=49261749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102132631A TW201423584A (zh) | 2012-09-10 | 2013-09-10 | 提取寬度預測器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9367471B2 (zh) |
TW (1) | TW201423584A (zh) |
WO (1) | WO2014039962A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9785442B2 (en) | 2014-12-24 | 2017-10-10 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10061583B2 (en) | 2014-12-24 | 2018-08-28 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10061589B2 (en) | 2014-12-24 | 2018-08-28 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10303525B2 (en) | 2014-12-24 | 2019-05-28 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10387156B2 (en) | 2014-12-24 | 2019-08-20 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10387158B2 (en) | 2014-12-24 | 2019-08-20 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10942744B2 (en) | 2014-12-24 | 2021-03-09 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
TWI770009B (zh) * | 2016-04-02 | 2022-07-11 | 美商英特爾股份有限公司 | 原子式儲存至寬於原生支援資料寬度之記憶體資料的處理器、方法、系統與指令 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9411735B2 (en) * | 2014-04-15 | 2016-08-09 | International Business Machines Corporation | Counter-based wide fetch management |
US9513805B2 (en) * | 2014-04-15 | 2016-12-06 | International Business Machines Corporation | Page table including data fetch width indicator |
US20170046159A1 (en) * | 2015-08-14 | 2017-02-16 | Qualcomm Incorporated | Power efficient fetch adaptation |
US10747539B1 (en) | 2016-11-14 | 2020-08-18 | Apple Inc. | Scan-on-fill next fetch target prediction |
GB2563384B (en) * | 2017-06-07 | 2019-12-25 | Advanced Risc Mach Ltd | Programmable instruction buffering |
US10229061B2 (en) | 2017-07-14 | 2019-03-12 | International Business Machines Corporation | Method and arrangement for saving cache power |
US10613867B1 (en) * | 2017-07-19 | 2020-04-07 | Apple Inc. | Suppressing pipeline redirection indications |
US12014178B2 (en) | 2022-06-08 | 2024-06-18 | Ventana Micro Systems Inc. | Folded instruction fetch pipeline |
US12014180B2 (en) | 2022-06-08 | 2024-06-18 | Ventana Micro Systems Inc. | Dynamically foldable and unfoldable instruction fetch pipeline |
US12008375B2 (en) | 2022-06-08 | 2024-06-11 | Ventana Micro Systems Inc. | Branch target buffer that stores predicted set index and predicted way number of instruction cache |
US11941401B1 (en) * | 2022-06-09 | 2024-03-26 | Apple Inc. | Instruction fetch using a return prediction circuit |
US20240028339A1 (en) * | 2022-07-25 | 2024-01-25 | Apple Inc. | Using a Next Fetch Predictor Circuit with Short Branches and Return Fetch Groups |
US11816489B1 (en) * | 2022-08-02 | 2023-11-14 | Ventana Micro Systems Inc. | Microprocessor with prediction unit pipeline that provides a next fetch address at a rate of one per clock cycle |
US11836498B1 (en) | 2022-08-02 | 2023-12-05 | Ventana Micro Systems Inc. | Single cycle predictor |
US12020032B2 (en) | 2022-08-02 | 2024-06-25 | Ventana Micro Systems Inc. | Prediction unit that provides a fetch block descriptor each clock cycle |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5210842A (en) | 1991-02-04 | 1993-05-11 | Motorola, Inc. | Data processor having instruction varied set associative cache boundary accessing |
US6125441A (en) | 1997-12-18 | 2000-09-26 | Advanced Micro Devices, Inc. | Predicting a sequence of variable instruction lengths from previously identified length pattern indexed by an instruction fetch address |
US6938126B2 (en) | 2002-04-12 | 2005-08-30 | Intel Corporation | Cache-line reuse-buffer |
US7337271B2 (en) | 2003-12-01 | 2008-02-26 | International Business Machines Corporation | Context look ahead storage structures |
KR20050107369A (ko) | 2005-10-27 | 2005-11-11 | 서운식 | 모바일 기기를 위한 코드 직접 수행기능을 갖는 대용량저장장치 및 제어 방법 |
JP4526560B2 (ja) | 2007-12-05 | 2010-08-18 | 日本テキサス・インスツルメンツ株式会社 | プロセッサおよび信号処理方法 |
JP2011209904A (ja) * | 2010-03-29 | 2011-10-20 | Sony Corp | 命令フェッチ装置、および、プロセッサ |
-
2012
- 2012-09-10 US US13/609,236 patent/US9367471B2/en active Active
-
2013
- 2013-09-09 WO PCT/US2013/058750 patent/WO2014039962A1/en active Application Filing
- 2013-09-10 TW TW102132631A patent/TW201423584A/zh unknown
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9785442B2 (en) | 2014-12-24 | 2017-10-10 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10061583B2 (en) | 2014-12-24 | 2018-08-28 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10061589B2 (en) | 2014-12-24 | 2018-08-28 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10303525B2 (en) | 2014-12-24 | 2019-05-28 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10387156B2 (en) | 2014-12-24 | 2019-08-20 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10387158B2 (en) | 2014-12-24 | 2019-08-20 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10942744B2 (en) | 2014-12-24 | 2021-03-09 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
TWI770009B (zh) * | 2016-04-02 | 2022-07-11 | 美商英特爾股份有限公司 | 原子式儲存至寬於原生支援資料寬度之記憶體資料的處理器、方法、系統與指令 |
US12007938B2 (en) | 2016-04-02 | 2024-06-11 | Intel Corporation | Processors, methods, systems, and instructions to atomically store to memory data wider than a natively supported data width |
Also Published As
Publication number | Publication date |
---|---|
WO2014039962A1 (en) | 2014-03-13 |
US20140075156A1 (en) | 2014-03-13 |
US9367471B2 (en) | 2016-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201423584A (zh) | 提取寬度預測器 | |
US6141747A (en) | System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word | |
JP5927616B2 (ja) | ヒステリシスを伴う次フェッチプレディクタトレーニング | |
US7437543B2 (en) | Reducing the fetch time of target instructions of a predicted taken branch instruction | |
JP2744890B2 (ja) | ブランチ予測式データ処理装置および動作方法 | |
US20070038846A1 (en) | Partial load/store forward prediction | |
US5774710A (en) | Cache line branch prediction scheme that shares among sets of a set associative cache | |
CN106681695B (zh) | 提前取出分支目标缓冲器 | |
EP2024820B1 (en) | Sliding-window, block-based branch target address cache | |
JP2012502367A (ja) | 疎及び密予測を伴うハイブリッド分岐予測デバイス | |
US11099850B2 (en) | Branch prediction circuitry comprising a return address prediction structure and a branch target buffer structure | |
US8171240B1 (en) | Misalignment predictor | |
US20070033385A1 (en) | Call return stack way prediction repair | |
US5935238A (en) | Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles | |
US5964869A (en) | Instruction fetch mechanism with simultaneous prediction of control-flow instructions | |
US11442727B2 (en) | Controlling prediction functional blocks used by a branch predictor in a processor | |
US11301253B2 (en) | Branch prediction structure indexed based on return address popped from a call-return stack | |
KR20090042303A (ko) | 가변 길이 명령 세트의 브랜치 명령의 최종 입도와 캐싱된 브랜치 정보의 관련 | |
US10445102B1 (en) | Next fetch prediction return table | |
US7962722B2 (en) | Branch target address cache with hashed indices | |
US10922082B2 (en) | Branch predictor | |
US20040193855A1 (en) | System and method for branch prediction access | |
JPH07262006A (ja) | 分岐ターゲットアドレスキャッシュを備えたデータプロセッサ | |
US20060112262A1 (en) | Branch prediction of unconditionally executed branch instructions |