TWI574205B - 減少在處理器上的電源耗損之方法及設備及電腦系統 - Google Patents
減少在處理器上的電源耗損之方法及設備及電腦系統 Download PDFInfo
- Publication number
- TWI574205B TWI574205B TW100133615A TW100133615A TWI574205B TW I574205 B TWI574205 B TW I574205B TW 100133615 A TW100133615 A TW 100133615A TW 100133615 A TW100133615 A TW 100133615A TW I574205 B TWI574205 B TW I574205B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- branch
- prefetch buffer
- instructions
- power supply
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 12
- 239000000872 buffer Substances 0.000 claims description 69
- 238000000605 extraction Methods 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 16
- 238000013519 translation Methods 0.000 claims description 4
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 239000011536 extraction buffer Substances 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- 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
-
- 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
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address 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
-
- 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/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- 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/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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
-
- 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
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Power Sources (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
Description
本發明主要有關於電腦處理器的領域。詳言之,本發明有關於檢測緩衝器內的指令迴路及其他指令群之設備及方法並因應地切斷提取單元的電源之設備及方法。
許多現代的微處理器具有促進高速操作的大型指令管線。「被提取的」程式指令進入管線,在管線的中間級之中經歷諸如解碼及執行的操作,並且在管線末端「被退休(retired)」。當管線在每一時脈週期接收有效指令時,管線維持滿載且性能良好。當不在每一週期接收有效指令時,管線不維持滿載,且性能可能變差。例如,性能問題可能源自程式碼中的分支指令。若在程式中遇到分支指令且處理分支到一目標位址,則可能必須清空(flush)指令管線的一部分,導致性能損失。
已經設計出分支目標緩衝器(BTB)來減輕分支指令對管線效率的影響。可在David A. Patterson & John L. Hennessy,Computer Architecture A Quantitative Approach 271-275(2d ed. 1990)中找到BTB的討論。亦在第1圖中顯示一種典型的BTB應用,其繪示耦合至指令指標(IP)118的BTB 110,及處理器管線120。還包括在第1圖中的有快取130及提取緩衝器132。由IP 118指定將提取的下一指令之位置。隨著執行在程式中依序進行,IP 118增額每一週期。IP 118的輸出驅動快取130的埠134並指定將從其提取下一指令的位址。快取130提供指令至提取緩衝器132,其進而提供指令至處理器管線120。
當由管線120接收指令時,它們會經過顯示為提取級122、解碼級124、中間級126(如指令執行級)、及退休級128的數個級。有時不會有關於一分支指令是否會導致一被採用的分支之資訊直到較後面的管線級,如退休級128。當沒有BTB 110且採用一分支時,跟隨該分支指令的提取緩衝器132及部分的指令管線120會保持來自錯誤執行路徑的指令。清空處理器管線120及提取緩衝器132中的無效指令,並以分支目標位址寫入IP 118。導致性能損失,部分係因為處理器等待以從分支目標位址開始的指令填充緩衝器132及指令管線120。
分支目標緩衝器(BTB)減輕所採用的分支之性能影響。BTB 110包括記錄111,各具有一分支位址(BA)欄位112及一目標位址(TA)欄位114。TA欄位114保持位在由相應的BA欄位112所指定的位址之分支指令的分支目標位址。當處理器管線120遇到一分支指令時,於記錄111的BA欄位112中搜尋匹配分支指令的位址之記錄。若找到,則將IP 118改變成相應於所找到之BA欄位112的TA欄位114之值。因此,接著從分支目標位址開始提取指令。
在處理器管線中節省電力係很重要,對以電池電力運作的膝上型電腦及其他行動裝置而言特別如此。因此,當重複指令群(如巢套迴路)位在提取緩衝器內時,切斷處理器管線的某部分之電源,如指令提取電路及指令快取,會有益處。據此,檢測可切斷提取電路或其之一部分的情況之新技術會帶來益處。
於下說明中,為了解釋而提出各種特定細節以提供下述的本發明之實施例的詳盡理解。然而,對熟悉此技藝人士很明顯地可在無這些特定細節下實行本發明的實施例。在其他例子中,以方塊圖形式顯示熟知的結構及裝置以避免混淆本發明之實施例的基礎原理。
本發明之一實施例在CPU核心正執行諸如巢套指令及/或巢套分支的重複指令群時減少其之動態電力。例如,當由分支預測器預測的指令群被檢測為在預取緩衝器內時,本發明的一實施例切斷提取單元及關聯的指令提取電路(或其之一部分)的電源以節省電力。接著直接從預取緩衝器串流指令直到需要額外指令,在那時接通指令提取單元的電源。本發明的實施例可在單執行緒或多執行緒環境兩者中操作。在一實施例中,在單執行緒環境中,所有的預取緩衝器項目係分配至單一執行緒,而在多執行緒環境中,預取緩衝器項目等分於多條執行緒間。
一特定實施例包含用於檢測重複指令群之具有預取緩衝器的迴路串流檢測器(LSD)。迴路串流檢測器預取緩衝器在多執行緒模式中可為6項目深(執行緒-0有3個且執行緒-1有3個)且在單執行緒模式中可為3項目深。替代地,在單執行緒模式中針對單一執行緒可使用所有6個項目。在一實施例中,在單執行緒模式中,預取緩衝器中的項目數量可組態為3或6。
在一實施例中,迴路串流檢測器預取緩衝器儲存分支資訊,如針對寫入預取緩衝器中之每一分支目標緩衝器(BTB)預測分支的當前線性指令指標(CLIP)、偏置、及預取緩衝器的分支目標位址讀取指標。當BTB預測一分支,該分支的CLIP及偏置可與預取緩衝器中的項目比較以判定此分支是否已經存在於預取緩衝器中。若有匹配,則關閉提取單元或其之一部分(如指令快取),從預取緩衝器串流指令直到遇到清除情況(如錯誤預測的分支)。若在預取緩衝器中的指令迴路內有BTB預測分支,也從預取緩衝器串流這些。在一實施例中,針對直接及條件分支但非插入流及返還/呼叫指令啟動迴路串流檢測器。
在第2圖中繪示用於在預取緩衝器內檢測到巢套迴路、分支、及其他重複指令群時切斷提取單元(及/或其他電路)的電源之處理器架構的一實施例。如所示,此實施例包括用於執行在此所述的各種功能之迴路串流檢測器單元200。尤其,迴路串流檢測器200包括用於比較由分支目標緩衝器(BTB)所預測的分支與預取緩衝器201中的項目之比較電路202。如前述,在本發明的一實施例中,迴路串流檢測器200在若於預取緩衝器內檢測到一匹配時回應地切斷指令提取單元210(或其之部分)的電源(如第2圖中之開/關線所示)。
回應於來自迴路串流檢測器的信號可切斷指令提取單元210之各種熟知的組件電源,包括分支預測單元211、下一指令指標212、指令轉譯旁看緩衝器(ITLB)、指令快取214、及/或預解碼快取215,藉此在若於預取緩衝器內檢測到重複指令群可節省大量的電力。接著直接從預取緩衝器串流指令到指令管線的其餘級,包括,舉例但非限制性地,解碼級220及執行級230。
第3圖繪示用於回應於在指令緩衝器內檢測到指令群(如巢套迴路)而切斷提取單元(或其之部分)電源的方法之一實施例。可使用第2圖中所示之處理器架構或不同的處理器架構來實行該方法。
在301,預測分支指令並且判定該分支指令的當前線性指令指標(CLIP)、分支偏置、及/或分支指令的分支目標位址。在302,將CLIP、分支偏置、及/或分支目標位址與預取緩衝器中的項目作比較。在一實施例中,比較的目的係判定巢套迴路是否儲存在預取緩衝器內。若找到匹配,如在303所判定,則在304,關閉指令提取單元(及/或其之個別組件)並且,在305,直接從預取緩衝器串流指令。持續從預取緩衝器串流指令直到在306發生清除情況(如錯誤預測的分支)。
第4圖繪示根據本發明之一實施例迴路串流檢測器如何變成占用(engaged)。尤其,在第4圖中,由指令管線內的IF2_L級中的預測器預測分支(分支目標清除)且下一指令指標(IP)多工器(mux)級以氣泡(bubble)被重定向至預測的分支目標位址。在級ID1,在預取緩衝器內記錄CLIP、分支偏置、及目標讀取指標(識別分支目標的指標)。回應於檢測到CLIP、分支偏置、及/或目標讀取指標的匹配,則占用迴路串流檢測器,並在一實施例中,禁用提取單元。這是繪示在第4圖的底部,其顯示比較CLIP及分支偏置,並且設定迴路串流檢測器鎖定(藉此切斷提取單元及/或其之部分電源)。
第5圖繪示用來占用迴路串流檢測器之具有不同欄位的迴路串流檢測器預取緩衝器的一實施例之結構,且第7圖繪示用於第5圖的迴路串流檢測器範例之一示範指令序列。為了方便,亦於下文提供該示範指令序列。用於LSD預取緩衝器內的欄位包括預取緩衝器項目標號501(在此特定範例中,有6個預取緩衝器(PFB)項目,標為0至5)、當前線性指令指標(CLIP)502、分支偏置欄位503、目標讀取指標欄位504、及項目有效欄位505。
如所示,當由提取單元展開具有在當前線性指令指標(CLIP)0x120h的分支之迴路並寫入預取緩衝器中時,比較進入的CLIP及分支偏置與每一PFB項目的有效CLIP及分支偏置欄位。回應於該比較,在PFB項目3設定有效位元,如所示。另外,PFB項目3記錄重定向PFB讀取指標以允許從PFB的指令串流。在一實施例中,施行下列操作:
(1)預測分支。
(2)比較CLIP及偏置與PFB中的現有項目。
(3)若有與PFB的LSD結構中之項目之一相匹配(在所示範例中此為項目0),則複製項目0的PFB目標讀取指標欄位到LSD結構之項目3並且在PFB項目寫入時將項目有效位元設定。在一實施例中,PFB項目包括16位元組快取線的資料以及每一位元組的一個預解碼位元(其指示巨集指令的尾端)。
(4)當PFB讀取指標到達項目3時,其用於讀取來自項目3的所有資訊,包括PFB目標讀取指標及有效位元。
(5)基於該有效位元,取代讀取下一依序的PFB項目4,使用目標讀取指標將其重定向至項目1。
(6)現在依序從項目1、項目2、項目3讀取PFB項目。
(7)在項目3,讀取PFB有效位元並且PFB使用目標讀取指標來讀取下一PFB項目。
(8)重複步驟6及7。
在一實施例中,每一PFB項目包括一個完整的16位元組快取線,含有將從PFB串流之指令。連同快取線原始資料,在PFB中還儲存預解碼位元以及指示分支指令的最後一位元組的BTB標記。在預解碼快取215中儲存預解碼位元。在預解碼快取中快取線的每一位元組有一位元。此位元指示巨集指令的尾端。BTB標記也是每一位元組一位元,其指示分支指令的最後一位元組。在寫入到PFB項目中的一條16位元組快取線中可有高達16個指令。針對一BTB預測分支指令,具有分支目標的指令之快取線總是寫入到PFB中之下一依序項目中。在一實施例中,有一個4:1 MUX,其之輸出用來讀取PFB項目。到MUX的輸入為(1)通常從PFB項目串流指令並且當已經從該項目串流所有指令時前進的PFB讀取指標;(2)當從PFB項目串流分支指令時的分支目標PFB讀取指標;(3)在像是錯誤預測的分支之清除情況後的PFB讀取指標,且此總是指向第一PFB項目;及(4)因LSD的占用所致的PFB讀取指標。
在第6圖中顯示PFB LSD的另一實施例,其中LSD欄位的項目數量小於PFB項目的數量以減少電力/面積。詳言之,在此範例中,針對LSD項目有四個項目(具有LSD項目標號0-3)且針對PFB項目有六個項目(標號0-5)。在每一PFB項目中的首指標值係用來指向與由提取單元中之預測器所預測的分支指令關聯的LSD項目。例如,首指標0001指向LSD項目標號0;首指標0010指向LSD項目標號1;首指標0100指向LSD項目標號2;及首指標1000指向LSD項目標號3。0000的首指標值指示PFB項目沒有指向LSD項目的BTB預測分支。因此,若(1)檢測到匹配CLIP及分支偏置及(2)匹配的LSD項目具有從任何PFB項目指向其的相應有效首指標,則在預取緩衝器中檢測到匹配。在一實施例中,來自PFB項目的首指標的位元[0]與匹配邏輯或並合格。(3)在一實施例中,若與在PFB的LSD結構中的項目之一相匹配,複製匹配的項目之PFB目標讀取指標欄位到寫入具有BTB預測的相應快取線的PFB項目中。另外,針對目前被寫入並具有BTB預測分支指令的PFB項目將LSD有效位元設定。(4)當PFB讀取指標到達已設定LSD有效位元的項目時,其用來讀取來自項目的所有資訊,包括PFB目標讀取指標及LSD有效位元。(5)基於該LSD有效位元,取代讀取下一依序的PFB項目,使用目標讀取指標將其重定向至該項目。(6)接著依序讀取PFB項目直到讀取到具有PFB有效位元的項目並且PFB使用該目標讀取指標來讀取下一PFB項目。(7)接著重複上述操作5及6。
在本發明的一實施例中,其中實行本發明之實施例的處理器包含低電力處理器,如由IntelTM公司設計的AtomTM處理器。然而,本發明之基礎原理不限於任何特定處理器架構。例如,本發明之基礎原理可實行在各種不同的處理器架構上,包括由Intel設計的Core i3、i5、及/或i7處理器或用於智慧型手機及/或其他可攜式計算裝置中的各種低電力晶片系統(SoC)架構上。
第8圖繪示其上可實行本發明之實施例的一示範電腦系統800。電腦系統800包含用於傳遞資訊之系統匯流排820,以及用於處理資訊的耦合至匯流排820的處理器810。電腦系統800進一步包含隨機存取記憶體(RAM)或其他動態儲存裝置825(在此稱為主記憶體),其耦合至匯流排820以儲存資訊及將由處理器810執行的指令。主記憶體825還可用來儲存在處理器810執行指令期間的臨時變數或其他中間資訊。電腦系統800還可包括唯讀記憶體(ROM)及/或其他靜態儲存裝置826,其耦合至匯流排820以儲存靜態資訊及處理器810所使用的指令。
資料儲存裝置827(如磁碟或光碟)及其相應的驅動器也可耦合至電腦系統800以儲存資訊及指令。電腦系統800還可經由I/O介面830耦合至第二I/O匯流排850。複數I/O裝置可耦合至I/O匯流排850,包括顯示裝置843、輸入裝置(如字母數字輸入裝置842及/或游標控制裝置841)。
通訊裝置840用來經由網路存取其他電腦(伺服器或客戶端)並上傳/下載各種類型的資料。通訊裝置840可包含數據機、網路介面卡、或其他熟知的介面裝置,如用於耦合至乙太網路、符記環、或其他類型的網路之那些。
第9圖為繪示可用於本發明之一些實施例中的另一示範資料處理系統的方塊圖。例如,資料處理系統900可為手持電腦、個人數位助理(PDA)、行動電話、可攜式遊戲系統、可攜式媒體播放器、平板電腦、或手持計算裝置,其可包括行動電話、媒體播放器、及/或遊戲系統。作為另一範例,資料處理系統900可為網路電腦或在另一裝置內的嵌入式處理裝置。
根據本發明之一實施例,資料處理系統900的示範架構可用於上述的行動裝置。資料處理系統900包括處理系統920,其可包括一或更多微處理器及/或在積體電路上之系統。處理系統920耦合記憶體910、電力供應器925(其包括一或更多電池)、音頻輸入/輸出940、顯示控制器及顯示裝置960、可選輸入/輸出950、輸入裝置970、及無線收發器930。可認知到在本發明的某些實施例中,未示於第9圖中的額外組件亦可為資料處理系統900的一部份,且在本發明的某些實施例中,可使用比第9圖中所示更少的組件。另外,可認知到未示於第9圖中的一或更多匯流排可用來互連各種組件,如此技藝中眾所皆知。
記憶體910可儲存資料及/或用於由資料處理系統900執行的程式。音頻輸入/輸出940可包括麥克風及/或揚聲器,例如,以透過揚聲器及麥克風播放音樂及/或提供電話功能。顯示控制器及顯示裝置960可包括圖形使用者介面(GUI)。無線(如RF)收發器930(如WiFi收發器、紅外線收發器、藍芽收發器、無線蜂巢式電話收發器等等)可用來與其他資料處理系統通訊。一或更多輸入裝置970讓使用者可提供輸入到系統。這些輸入裝置可為鍵板、鍵盤、觸碰板、多點觸碰板等。可選的其他輸入/輸出950可以為插接站(dock)的連接器。
本發明之其他實施例可實行在手機及呼叫器(例如,其中軟體係嵌入微晶片中)、手持計算裝置(例如,個人數位助理、智慧型手機)、及/或按鍵式電話。然而,應注意到本發明之基礎原理不限於任何特定類型的通訊裝置或通訊媒體。
本發明之實施例可包括各種步驟,已於上說明。這些步驟可體現在機器可執行指令中,其可用來令通用或特殊用途處理器來執行步驟。替代地,可藉由含有硬接線邏輯以施行步驟的特定硬體組件或藉由已編程電腦組件及客製化硬體組件的任何組合來施行這些步驟。
本發明之元件還可提供成電腦程式產品,其可包括具有指令儲存於上之機器可讀取媒體,可用來編程電腦(或其他電子裝置)以施行程序。機器可讀取媒體可包括,但不限於,軟碟、光碟、CD-ROM、及光磁碟、ROM、RAM、EPROM、EEPROM、磁或光卡、傳播媒體、或適合儲存電子指令之其他類型的媒體/機器可讀取媒體。例如,可下載本發明作為電腦程式產品,其中程式可透過通訊鏈結(如數據機或網路連結)以體現於載波或其他傳播媒體中之資料信號從遠端電腦(如伺服器)轉移到請求電腦(如客戶端)。
在此整個詳細說明中,為了說明而提出各種特定細節以提供本發明的詳盡理解。然而,對熟悉此技藝人士很明顯地可在無這些特定細節的一些下實行本發明。在其他例子中,並未以縝密的細節說明熟知的結構及功能以避免混淆本發明之標的。據此,應依據下列申請專利範圍判定本發明之精神及範疇。
110...分支目標緩衝器
111...記錄
112...分支位址欄位
114...目標位址欄位
118...指令指標
120...處理器管線
122...提取級
124...解碼級
126...中間級
128...退休級
130...快取
132...提取緩衝器
134...埠
200...迴路串流檢測器單元
201...預取緩衝器
202...比較電路
210...指令提取單元
211...分支預測單元
212...下一指令指標
214...指令快取
215...預解碼快取
220...解碼級
230...執行級
501...預取緩衝器項目標號
502...當前線性指令指標
503...分支偏置欄位
504...目標讀取指標欄位
505...項目有效欄位
800...電腦系統
810...處理器
820...系統匯流排
825...動態儲存裝置
826...唯讀記憶體及/或其他靜態儲存裝置
827...資料儲存裝置
830...I/O介面
840...通訊裝置
841...游標控制裝置
842...字母數字輸入裝置
843...顯示裝置
850...第二I/O匯流排
900...資料處理系統
910...記憶體
920...處理系統
925...電力供應器
930...無線收發器
940...音頻輸入/輸出
950...可選輸入/輸出
960...顯示控制器及顯示裝置
970...輸入裝置
可從上述詳細說明連同下列圖示獲得本發明之更佳了解,其中:
第1圖繪示採用分支目標緩衝器來施行分支目標預取的先前技術處理器管線;
第2圖繪示處理器架構的一實施例,其包括用於從預取緩衝器串流指令並回應地切斷部分的處理器管線之迴路串流檢測器。
第3圖繪示用於檢測重複指令群並回應地切斷部分的處理器管線的方法之一實施例。
第4圖繪示一繪示迴路串流檢測器變成占用的一實施例之管線圖。
第5圖繪示用來占用迴路串流檢測器之預取緩衝器的一實施例中所用的欄位。
第6圖繪示用來占用迴路串流檢測器之預取緩衝器的另一實施例中所用的欄位。
第7圖繪示包括巢套指令序列之示範程式碼。
第8圖繪示其上可實行本發明之實施例的一示範電腦系統。
第9圖為繪示可用於本發明之一些實施例中的另一示範資料處理系統的區塊圖。
102...記憶體
190...處理器
200...迴路串流檢測器
202...比較
201...預取緩衝器
210...指令提取
211...分支預測
212...下一指令指標
214...指令快取
215...預解碼快取
220...解碼
230...執行
Claims (18)
- 一種減少在具有指令提取單元及預取緩衝器之處理器上的電源耗損之方法,包含:檢測分支,該分支具有與其關聯之定址資訊,其中該定址資訊包含當前線性指令指標(CLIP)及分支偏置;比較該定址資訊與指令預取緩衝器中之項目以判定可執行指令迴路是否存在於該預取緩衝器內,其中該比較包括比較該CLIP及該分支偏置與在該指令預取緩衝器中之該項目的CLIP及分支偏置;其中若作為該比較結果檢測到指令迴路,則切斷指令提取單元及/或其之組件的電源;以及直接從該預取緩衝器串流指令直到檢測到清除情況。
- 如申請專利範圍第1項所述之方法,其中該清除情況包含錯誤預測的分支。
- 如申請專利範圍第1項所述之方法,其中該指令迴路包含巢套指令迴路。
- 如申請專利範圍第1項所述之方法,其中切斷指令提取單元的電源包含切斷指令快取及/或指令解碼快取之電源。
- 如申請專利範圍第4項所述之方法,其中切斷指令提取單元的電源包含切斷分支預測單元、下一指令指標、及/或指令轉譯旁看緩衝器(ITLB)之電源。
- 如申請專利範圍第1項所述之方法,其中串流指令包含從該指令預取緩衝器讀取該些指令並且提供該些指令 至處理器管線之解碼級。
- 一種減少在處理器上的電源耗損之設備,包含:指令提取單元,預測分支,該分支具有與其關聯之定址資訊,其中該定址資訊包含當前線性指令指標(CLIP)及分支偏置;迴路串流檢測器單元,比較該定址資訊與指令預取緩衝器中之項目以判定可執行指令迴路是否存在於該預取緩衝器內,其中該比較包括比較該CLIP及該分支偏置與在該指令預取緩衝器中之該項目的CLIP及分支偏置;其中若作為該比較結果檢測到指令迴路,則切斷指令提取單元及/或其之組件的電源;以及直接從該預取緩衝器串流指令直到檢測到清除情況。
- 如申請專利範圍第7項所述之設備,其中該清除情況包含錯誤預測的分支。
- 如申請專利範圍第7項所述之設備,其中該指令迴路包含巢套指令迴路。
- 如申請專利範圍第7項所述之設備,其中切斷指令提取單元的電源包含切斷指令快取及/或指令解碼快取之電源。
- 如申請專利範圍第10項所述之設備,其中切斷指令提取單元的電源包含切斷分支預測單元、下一指令指標、及/或指令轉譯旁看緩衝器(ITLB)之電源。
- 如申請專利範圍第7項所述之設備,其中串流指令包含從該指令預取緩衝器讀取該些指令並且提供該些指令 至處理器管線之解碼級。
- 一種電腦系統,包含:顯示裝置;儲存指令之記憶體;處理該些指令之處理器,包含:指令提取單元,預測分支,該分支具有與其關聯之定址資訊,其中該定址資訊包含當前線性指令指標(CLIP)及分支偏置;迴路串流檢測器單元,比較該定址資訊與指令預取緩衝器中之項目以判定可執行指令迴路是否存在於該預取緩衝器內,其中該比較包括比較該CLIP及該分支偏置與在該指令預取緩衝器中之該項目的CLIP及分支偏置;其中若作為該比較結果檢測到指令迴路,則切斷指令提取單元及/或其之組件的電源;以及直接從該預取緩衝器串流指令直到檢測到清除情況。
- 如申請專利範圍第13項所述之系統,其中該清除情況包含錯誤預測的分支。
- 如申請專利範圍第13項所述之系統,其中該指令迴路包含巢套指令迴路。
- 如申請專利範圍第13項所述之系統,其中切斷指令提取單元的電源包含切斷指令快取及/或指令解碼快取之電源。
- 如申請專利範圍第16項所述之系統,其中切斷指 令提取單元的電源包含切斷分支預測單元、下一指令指標、及/或指令轉譯旁看緩衝器(ITLB)之電源。
- 如申請專利範圍第13項所述之系統,其中串流指令包含從該指令預取緩衝器讀取該些指令並且提供該些指令至處理器管線之解碼級。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/890,561 US20120079303A1 (en) | 2010-09-24 | 2010-09-24 | Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201224920A TW201224920A (en) | 2012-06-16 |
TWI574205B true TWI574205B (zh) | 2017-03-11 |
Family
ID=45871908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100133615A TWI574205B (zh) | 2010-09-24 | 2011-09-19 | 減少在處理器上的電源耗損之方法及設備及電腦系統 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20120079303A1 (zh) |
JP (1) | JP2013541758A (zh) |
KR (1) | KR20130051999A (zh) |
CN (1) | CN103119537B (zh) |
DE (1) | DE112011103212B4 (zh) |
GB (1) | GB2497470A (zh) |
TW (1) | TWI574205B (zh) |
WO (1) | WO2012040664A2 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9396117B2 (en) | 2012-01-09 | 2016-07-19 | Nvidia Corporation | Instruction cache power reduction |
US9176571B2 (en) * | 2012-03-02 | 2015-11-03 | Semiconductor Energy Laboratories Co., Ltd. | Microprocessor and method for driving microprocessor |
US9552032B2 (en) | 2012-04-27 | 2017-01-24 | Nvidia Corporation | Branch prediction power reduction |
US9547358B2 (en) * | 2012-04-27 | 2017-01-17 | Nvidia Corporation | Branch prediction power reduction |
US9557999B2 (en) * | 2012-06-15 | 2017-01-31 | Apple Inc. | Loop buffer learning |
US9753733B2 (en) | 2012-06-15 | 2017-09-05 | Apple Inc. | Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer |
US9710276B2 (en) * | 2012-11-09 | 2017-07-18 | Advanced Micro Devices, Inc. | Execution of instruction loops using an instruction buffer |
US9645934B2 (en) * | 2013-09-13 | 2017-05-09 | Samsung Electronics Co., Ltd. | System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer |
US9569220B2 (en) * | 2013-10-06 | 2017-02-14 | Synopsys, Inc. | Processor branch cache with secondary branches |
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 |
US20150254078A1 (en) * | 2014-03-07 | 2015-09-10 | Analog Devices, Inc. | Pre-fetch unit for microprocessors using wide, slow memory |
US9524011B2 (en) | 2014-04-11 | 2016-12-20 | Apple Inc. | Instruction loop buffer with tiered power savings |
CN104391563B (zh) * | 2014-10-23 | 2017-05-31 | 中国科学院声学研究所 | 一种寄存器堆的循环缓冲电路及其方法,处理器装置 |
US10203959B1 (en) * | 2016-01-12 | 2019-02-12 | Apple Inc. | Subroutine power optimiztion |
US10223123B1 (en) * | 2016-04-20 | 2019-03-05 | Apple Inc. | Methods for partially saving a branch predictor state |
GB2580316B (en) | 2018-12-27 | 2021-02-24 | Graphcore Ltd | Instruction cache in a multi-threaded processor |
CN111723920B (zh) * | 2019-03-22 | 2024-05-17 | 中科寒武纪科技股份有限公司 | 人工智能计算装置及相关产品 |
WO2020192587A1 (zh) * | 2019-03-22 | 2020-10-01 | 中科寒武纪科技股份有限公司 | 人工智能计算装置及相关产品 |
US20210200550A1 (en) * | 2019-12-28 | 2021-07-01 | Intel Corporation | Loop exit predictor |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050138321A1 (en) * | 2003-12-23 | 2005-06-23 | Intel Corporation | Retrieving data blocks with reduced linear addresses |
US20090217017A1 (en) * | 2008-02-26 | 2009-08-27 | International Business Machines Corporation | Method, system and computer program product for minimizing branch prediction latency |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3273240A (en) * | 1964-05-11 | 1966-09-20 | Steuart R Florian | Cutting tool |
JPH05241827A (ja) * | 1992-02-27 | 1993-09-21 | Nec Ibaraki Ltd | 命令バッファ制御装置 |
JP2694799B2 (ja) * | 1993-09-07 | 1997-12-24 | 日本電気株式会社 | 情報処理装置 |
US5623615A (en) * | 1994-08-04 | 1997-04-22 | International Business Machines Corporation | Circuit and method for reducing prefetch cycles on microprocessors |
US5860106A (en) * | 1995-07-13 | 1999-01-12 | Intel Corporation | Method and apparatus for dynamically adjusting power/performance characteristics of a memory subsystem |
JPH0991136A (ja) * | 1995-09-25 | 1997-04-04 | Toshiba Corp | 信号処理装置 |
US6622236B1 (en) * | 2000-02-17 | 2003-09-16 | International Business Machines Corporation | Microprocessor instruction fetch unit for processing instruction groups having multiple branch instructions |
US6678815B1 (en) * | 2000-06-27 | 2004-01-13 | Intel Corporation | Apparatus and method for reducing power consumption due to cache and TLB accesses in a processor front-end |
US7337306B2 (en) * | 2000-12-29 | 2008-02-26 | Stmicroelectronics, Inc. | Executing conditional branch instructions in a data processor having a clustered architecture |
US6993668B2 (en) * | 2002-06-27 | 2006-01-31 | International Business Machines Corporation | Method and system for reducing power consumption in a computing device when the computing device executes instructions in a tight loop |
US20040181654A1 (en) * | 2003-03-11 | 2004-09-16 | Chung-Hui Chen | Low power branch prediction target buffer |
US7028197B2 (en) * | 2003-04-22 | 2006-04-11 | Lsi Logic Corporation | System and method for electrical power management in a data processing system using registers to reflect current operating conditions |
US7475231B2 (en) * | 2005-11-14 | 2009-01-06 | Texas Instruments Incorporated | Loop detection and capture in the instruction queue |
US7496771B2 (en) * | 2005-11-15 | 2009-02-24 | Mips Technologies, Inc. | Processor accessing a scratch pad on-demand to reduce power consumption |
DE102007031145A1 (de) * | 2007-06-27 | 2009-01-08 | Gardena Manufacturing Gmbh | Handbetätigbare Schere |
JP5043560B2 (ja) * | 2007-08-24 | 2012-10-10 | パナソニック株式会社 | プログラム実行制御装置 |
US9772851B2 (en) * | 2007-10-25 | 2017-09-26 | International Business Machines Corporation | Retrieving instructions of a single branch, backwards short loop from a local loop buffer or virtual loop buffer |
JP2010066892A (ja) * | 2008-09-09 | 2010-03-25 | Renesas Technology Corp | データプロセッサ及びデータ処理システム |
CN105468334A (zh) * | 2008-12-25 | 2016-04-06 | 世意法(北京)半导体研发有限责任公司 | 对非控制流指令减少分支检验 |
US9170816B2 (en) * | 2009-01-15 | 2015-10-27 | Altair Semiconductor Ltd. | Enhancing processing efficiency in large instruction width processors |
DE102009019989A1 (de) * | 2009-05-05 | 2010-11-11 | Gardena Manufacturing Gmbh | Handbetätigte Schere |
JP5423156B2 (ja) * | 2009-06-01 | 2014-02-19 | 富士通株式会社 | 情報処理装置及び分岐予測方法 |
US8370671B2 (en) * | 2009-12-02 | 2013-02-05 | International Business Machines Corporation | Saving power by powering down an instruction fetch array based on capacity history of instruction buffer |
US8578141B2 (en) * | 2010-11-16 | 2013-11-05 | Advanced Micro Devices, Inc. | Loop predictor and method for instruction fetching using a loop predictor |
-
2010
- 2010-09-24 US US12/890,561 patent/US20120079303A1/en not_active Abandoned
-
2011
- 2011-09-19 TW TW100133615A patent/TWI574205B/zh active
- 2011-09-23 DE DE112011103212.9T patent/DE112011103212B4/de active Active
- 2011-09-23 WO PCT/US2011/053152 patent/WO2012040664A2/en active Application Filing
- 2011-09-23 JP JP2013528400A patent/JP2013541758A/ja active Pending
- 2011-09-23 GB GB1305036.4A patent/GB2497470A/en not_active Withdrawn
- 2011-09-23 KR KR1020137007391A patent/KR20130051999A/ko not_active Application Discontinuation
- 2011-09-23 CN CN201180045959.1A patent/CN103119537B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050138321A1 (en) * | 2003-12-23 | 2005-06-23 | Intel Corporation | Retrieving data blocks with reduced linear addresses |
US20090217017A1 (en) * | 2008-02-26 | 2009-08-27 | International Business Machines Corporation | Method, system and computer program product for minimizing branch prediction latency |
Also Published As
Publication number | Publication date |
---|---|
US20120079303A1 (en) | 2012-03-29 |
JP2013541758A (ja) | 2013-11-14 |
CN103119537A (zh) | 2013-05-22 |
TW201224920A (en) | 2012-06-16 |
GB201305036D0 (en) | 2013-05-01 |
WO2012040664A3 (en) | 2012-06-07 |
WO2012040664A2 (en) | 2012-03-29 |
GB2497470A (en) | 2013-06-12 |
KR20130051999A (ko) | 2013-05-21 |
DE112011103212T5 (de) | 2013-07-18 |
CN103119537B (zh) | 2017-07-11 |
DE112011103212B4 (de) | 2020-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI574205B (zh) | 減少在處理器上的電源耗損之方法及設備及電腦系統 | |
US9557999B2 (en) | Loop buffer learning | |
JP5748800B2 (ja) | ループバッファのパッキング | |
US7861066B2 (en) | Mechanism for predicting and suppressing instruction replay in a processor | |
TWI552069B (zh) | 載入-儲存相依性預測器、用於在載入-儲存相依性預測器中處理操作的處理器與方法 | |
US9471322B2 (en) | Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold | |
US7685410B2 (en) | Redirect recovery cache that receives branch misprediction redirects and caches instructions to be dispatched in response to the redirects | |
US9026769B1 (en) | Detecting and reissuing of loop instructions in reorder structure | |
US6212623B1 (en) | Universal dependency vector/queue entry | |
US8555040B2 (en) | Indirect branch target predictor that prevents speculation if mispredict is expected | |
US20160048395A1 (en) | Branch Predictor for Wide Issue, Arbitrarily Aligned Fetch | |
US20070033385A1 (en) | Call return stack way prediction repair | |
US10838729B1 (en) | System and method for predicting memory dependence when a source register of a push instruction matches the destination register of a pop instruction | |
US6219781B1 (en) | Method and apparatus for performing register hazard detection | |
CN116302106A (zh) | 用于促进分支预测单元的改善的带宽的设备、方法和系统 | |
KR102635965B1 (ko) | 마이크로 프로세서의 프론트 엔드 및 이를 이용한 컴퓨터 구현 방법 | |
CN111065998A (zh) | 用于预执行数据相依的负载的切片结构 | |
CN114489808A (zh) | 高置信度多分支偏移预测器 |