TWI628599B - 用於使處理元件提早離開深度睡眠狀態的處理器和設備 - Google Patents
用於使處理元件提早離開深度睡眠狀態的處理器和設備 Download PDFInfo
- Publication number
- TWI628599B TWI628599B TW106114987A TW106114987A TWI628599B TW I628599 B TWI628599 B TW I628599B TW 106114987 A TW106114987 A TW 106114987A TW 106114987 A TW106114987 A TW 106114987A TW I628599 B TWI628599 B TW I628599B
- Authority
- TW
- Taiwan
- Prior art keywords
- power state
- thread
- power
- early wake
- processor
- Prior art date
Links
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
- 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
- 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/329—Power saving characterised by the action undertaken by task scheduling
-
- 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/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3228—Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- 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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Power Sources (AREA)
- Farming Of Fish And Shellfish (AREA)
- Catching Or Destruction (AREA)
Abstract
於本文中係說明一種裝置和方法,用以提供在生出新緒之前的提早喚醒架構。係在一個新緒要被生出和執行於一個處理元件(核心或緒)上之前一段時間量,提供一個提早喚醒指示,此時間量可包括要進行從目前電力狀態至較接近作動電力狀態之較低電力狀態之降級所需的時間量。在遭遇到對此新緒,例如一個助手緒,之生出時,此處理元件被更進一步地從較低電力狀態變換至作動電力狀態。並且這個新的緒係執行於此處理元件上,而無須遭受與執行此新緒相關聯的在生出新緒之後等待從目前電力狀態至作動電力狀態之降級的潛時。
Description
本發明係有關積體電路之領域,更特別係有關改善處理器之處理元件的離開潛時(latency)之領域。
在半導體處理和邏輯設計上的進步已使得可出現在積體電路裝置上的邏輯數量增加。因此,積體電路,例如處理器,的電力需求遽增。為作補償,許多處理器現在可支援複數種電力/操作狀態。隨著睡眠狀態的晉升(往更深度睡眠),電力節省也由於漸次被關閉的部件之數量而增加。然而,睡眠狀態之深度越深,要喚醒一個處理元件所需的時間就越多(更多功能/部件必須要被開啟回來)。
在積體電路之邏輯數量上的增加的另一個優點是,電腦系統組態已從在一個系統中的單一個或複數個積體電路發展成在個別的積體電路上有複數個核心、複數個硬體緒、和複數個邏輯處理器。一個處理器或積體電路典型上係包含有單一個實體處理器晶粒,其中此處理器晶粒可包
括有任何數量的核心、硬體緒或邏輯處理器。在積體電路上的處理元件--核心、硬體緒、和邏輯處理器--之數量上的持續增加使得有更多的工作能夠被並行完成。從單緒處理器到更為並行的多緒執行這樣的演進有助於一次對複數個應用的執行、以及對數個單一程式(被並行化的數個串列程式)的有緒執行。
然而,對生出一個新的執行緒之負擔的顯著貢獻其中有一項係包括處理元件(硬體緒或核心)的醒來時間。並且如於上文中所述的,遭遇越深度的睡眠狀態時,緒切換/生出(醒來貢獻)也會增加。因此,目前的處理元件或者是不被放到更深度的睡眠狀態中以減少緒生出時間,或者是會執行緒切換導致喚醒時間增加。不幸的是,目前的折衷會導致省電效果減少或導致效能減少。
依據本發明之一實施例,係特地提出一種裝置,其包含:檢測邏輯,其適於檢測由軟體產生的一個命令,該命令係有關一個提早喚醒值;耦接至該檢測邏輯的一個控制儲存元件,該控制儲存元件適於反應於該檢測邏輯檢測到由軟體產生之該命令而被以該提早喚醒值作更新;以及耦接至該控制儲存元件的電力控制邏輯,該電力控制邏輯適於反應於該控制儲存元件被以該提早喚醒值更新而將一個處理元件從一個深度電力狀態變換至一個較低電力狀態。
依據本發明之另一實施例,係特地提出一種含有碼的
機器可讀媒體,該碼在由一個機器執行時會致使該機器進行下列操作:以一第一處理元件執行一第一緒;反應於來自於該第一緒的一個降級指示而將一第二處理元件從一第一低電力狀態降級至一第二低電力狀態;在來自於該第一緒的該降級指示之後生出一第二緒;將該第二處理元件變換至一個作動電力狀態;以及以該第二處理元件執行該第二緒。
依據本發明之又一實施例,係特地提出一種含有碼的機器可讀媒體,該碼在由一個機器執行時會致使該機器進行下列操作:檢測在一個程式中之當執行時會生出一個緒的一個生出命令;以及將一個提早喚醒命令在該生出命令之前插入到該程式碼中,該提早喚醒命令在被執行時會致使要執行該緒的一個處理元件變換至低於該處理元件之目前電力狀態的一個較低電力狀態。
依據本發明之再一實施例,係特地提出一種方法,其包含下列步驟:執行一第一緒;反應於來自於該第一緒的一個指示,在生出一第二緒之前一段時間量將一個處理元件從一第一電力狀態變換至一第二電力狀態;生出該第二緒;以該處理元件執行該第二緒。
100‧‧‧處理器
101、102‧‧‧核心
101a、101b‧‧‧緒;緒槽;結構狀態暫存器;邏輯處理器
102a、102b‧‧‧結構狀態暫存器;緒單元
105‧‧‧匯流排介面模組
110‧‧‧較高階/更外顯快取
120、121‧‧‧緩衝器;提取單元
125、126‧‧‧解碼模組;解碼邏輯;解碼器
130、131‧‧‧重新命名配置器邏輯;配置器和重新命名器方塊;單元
135、136‧‧‧再排序/報廢單元;無序單元
140、141‧‧‧執行單元;執行單元方塊
150、151‧‧‧較低階資料快取與資料翻譯暫存器(D-TLB)
160‧‧‧電力控制;電力邏輯
170‧‧‧控制器集線器
175‧‧‧記憶體
201、202‧‧‧緒
210‧‧‧流程
215‧‧‧指示
220‧‧‧流程
225‧‧‧生出/呼叫緒;對緒之呼叫;呼叫;呼叫事件;對緒之呼叫/生出事件
226‧‧‧流程
227、230、235、240、405~410‧‧‧流程
305‧‧‧命令
306‧‧‧提早喚醒值
307‧‧‧識別符;命令
310‧‧‧檢測邏輯;解碼器
315‧‧‧儲存元件;暫存器
316、317‧‧‧欄位
320‧‧‧控制邏輯;電力控制
325、326‧‧‧處理元件
本發明係藉由示範方式例示,而非意欲要受到隨附圖式之圖形限制。
第1圖例示出適於支援對處理元件之提早喚醒的一個多處理元件處理器之邏輯表示型態的一個實施例。
第2圖例示出一種用於在生出緒之前喚醒處理元件之方法的流程圖的一個實施例。
第3圖例示出適於支援對處理元件之提早喚醒的邏輯表示型態的一個實施例。
第4圖例示出一種用於檢測緒生出點和插入提早喚醒命令之方法的流程圖的一個實施例。
在下面的說明中,為了提供對本發明之通盤瞭解,係提出許多具體細節,例如特定處理器組態之具體類型、具體電力狀態、具體硬體結構、具體表格格式、具體暫存器組態、具體電力單元、命令/中斷/指令的具體類型等等之範例。然而,對於熟於此技者而言,會可明顯看出,實施本發明並不需要運用這些具體細節。在其他情況中,並未詳細說明習知的部件或方法,例如特定和替代的處理器架構、用於所述演算法的特定邏輯電路/碼、特定電力單元實施細節、特定電力狀態變換細節、處理器之特定的和其他特定操作細節,以避免不必要地混淆本發明。
於本文中所說明的方法和裝置係用於進行對處理元件的提早喚醒,以減少與在一個非操作中處理元件上生出一個新的緒相關聯的喚醒潛時。具體而言,此提早喚醒架構係針對喚醒微處理器,例如處理器100,中之處理元件而論述。然而,於本文中所說明的這些裝置和方法並不如此受限,因其係可配合替代處理器架構、以及包括複數個處
理元件的任何設備來實施。例如,此提早喚醒架構可係實施在一個胞元或當中有數個胞元被停止供電並在執行軟體前被恢復供電的分散處理設備中。或者是,此提早喚醒架構可係運用在嵌入式小形狀因素設備中,例如PDA和行動電話。
請參考第1圖,其例示出包括有複數個核心的一個處理器的一個實施例。處理器100包括任何處理器,例如一個微處理器、一個嵌入式處理器、一個數位信號處理器(digital signal processor,DSP)、一個網路處理器、或其他用來執行碼的設備。在一個實施例中,處理器100包括至少兩個核心──核心101和102,其可包括非對稱式核心或對稱式核心(所例示之實施例)。然而,處理器100係可包括任何數量的可為對稱式或非對稱式的處理元件。
在一個實施例中,一個處理元件係指一個緒單元、一個緒槽、一個處理單元、一個上下文、一個邏輯處理器、一個硬體緒、一個核心、和/或任何其他能夠握持一個處理器之狀態(例如執行狀態或結構狀態)的元件。易言之,在一個實施例中,一個處理元件係指任何能夠被獨立地與碼(例如軟體緒、作業系統、應用程式或其他碼)聯繫的硬體。一個典型的處理器典型上係指一個積體電路,其可能包括任何數量的其他處理元件,例如核心或硬體緒。
一個核心可係指能夠維持一個獨立結構狀態的位在一
個積體電路上的邏輯,其中,各個被獨立維持的結構狀態係與至少一些專用執行資源相關聯。反較於核心,一個硬體緒典型上係指能夠維持一個獨立結構狀態的位在一個積體電路上的任何邏輯,其中,被獨立維持的數個結構狀態共享對數個執行資源的取用。如熟於此技者所能理會的,當某些資源被共享,而其他是專用於一個結構狀態時,在對硬體緒和核心的命名法之間的線會重疊。然而,在作業系統能夠個別地在各個邏輯處理器上排程操作時,一個核心和一個硬體緒常常會被作業系統看成是個別的邏輯處理器。
如於第1圖中所例示的,實體處理器100包括兩個核心,核心101和102。於此,係將核心101和102考慮為對稱式核心,也就是具有相同組態、功能性單元和/或邏輯的核心。在另一個實施例中,核心101包括一個無序處理器核心,而核心102包括一個有序處理器核心。然而,核心101和102可係個別選自任何類型的核心,例如本地核心、軟體管理核心、適於執行本地指令集結構(Instruction Set Architecture,ISA)的核心、適於執行經翻譯指令集結構(ISA)的核心、共同設計核心、或是其他習知核心。再更進一步論述,例示於核心101中的這些功能性單元在下文中有更詳細的說明,而核心102中的單元是以類似方式操作。
如圖所繪,核心101包括兩個硬體緒101a和101b,也可將其稱為硬體緒槽101a和101b。因此,在一個實施
中,軟體實體,例如作業系統,係可能將處理器100看作是四個分開的處理器,也就是能夠同時執行四個軟體緒的四個邏輯處理器或處理元件。如於上文中所嶾含的,一第一緒係與數個結構狀態暫存器101a相關聯,一第二緒係與數個結構狀態暫存器101b相關聯,一第三緒可係與數個結構狀態暫存器102a相關聯,而一第四緒可係與數個結構狀態暫存器102b相關聯。如所例示的,結構狀態暫存器101a被複製在結構狀態暫存器101b中,以使個別的結構狀態/上下文能夠針對邏輯處理器101a和邏輯處理器101b被儲存。在核心101中,其他較小的資源,例如指令指標和在重新命名配置器邏輯130中的重新命名邏輯,亦針對緒101a和101b而被複製。一些資源,像是在再排序/報廢單元135中的再排序緩衝器、ILTB 120、載入/儲存緩衝器和佇列,可透過分割而被共享。其他資源,例如一般用途內部暫存器、頁表基礎暫存器、低階資料快取和資料TLB 115、執行單元140、和無序單元135之部份,有可能被完全共享。
處理器100常常會包括有其他資源,這些資源可被完全共享、透過分割共享、或由/對處理元件專用。在第1圖中,係例示出具有處理器之數個例示性邏輯單元/資源的一個純示範處理器之實施例。請注意,一個處理器係可包括或省略任何這些功能性單元,以及包括任何其他未繪示出來的習知功能性單元、邏輯或韌體。如所例示的,核心101包括一個簡化的代表性無序(out-of-order,OOO)
處理器核心。此OOO核心包括用於預測要被執行/採用之分支的一個分支目標緩衝器120,以及用於針對指令儲存位址翻譯實體的一個指令翻譯緩衝器(instruction-translation buffer,I-TLB)120。
核心101進一步包括有耦接至提取單元120的解碼模組125,用以解碼所提取的元件。在一個實施例中,提取邏輯包括分別與緒槽101a、101b相關聯的數個個別定序器。通常核心101係與定義/指明可在處理器100上執行之指令的一第一指令集結構(ISA)相關聯。於此,為第一ISA之部份的機器碼指令常常會包括有指令的一個部分(稱為作業碼),其指參/指明要被進行的一個指令或操作。解碼邏輯125包括從這些指令之作業碼辨識這些指令的電路,此電路並將經解碼的指令在管線中傳遞下去,以做由第一ISA所定義的處理。例如,如於下文中更詳細論述的,在一個實施例中,解碼器125包括被設計來或適於辨識特定新指令,例如條件性投入(conditional commit)指令和/或推測檢查點指令,的邏輯。由於由解碼器125所做的辨識,結構或核心101會採取特定的預定動作,來進行與適當指令相關聯的工作。
在一個範例中,配置器和重新命名器方塊130包括一個配置器,用以保留資源(例如暫存器檔案)以儲存指令處理結果。然而,當配置器和重新命名器方塊130亦保留其他資源(例如再排序緩衝器)以追蹤指令結果時,緒101a和101b有可能是能夠做無序執行的。單元130可亦
包括一個暫存器重新命名器,以將程式/指令參考暫存器重新命名至處理器100內部的其他暫存器。再排序/報廢單元135包括數個部件,例如上文所提的再排序緩衝器、載入緩衝器和儲存緩衝器,以支援無序執行和經無序執行之指令在之後的有序報廢。
在一個實施例中,排程器和執行單元方塊140包括一個排程器單元,用以在執行單元上排程指令/操作。例如,一個浮點數指令被排程在具有可用浮點數執行單元的一個執行單元之埠上。亦包括有與執行單元相關聯的暫存器檔案,用以儲存資訊指令處理結果。示範執行單元包括浮點數執行單元、整數執行單元、跳越執行單元、載入執行單元、儲存執行單元以及其他習知執行單元。
較低階資料快取與資料翻譯暫存器(data translation buffer,D-TLB)150被耦接至一或多個執行單元140。此資料快取係用於儲存可能被握持在記憶體同調性狀態中的近期被使用/在上頭操作的元件,例如資料運算元。D-TLB係用於儲存近期的虛擬/線性至實體位址翻譯。舉一個具體的例子,一個處理器可包括有一個頁表構造,用以將實體記憶體拆解成多個虛擬頁。
於此,核心101和102共享對較高階或更外顯(further-out)快取110的取用,此較高階或更外顯快取110係用於快取近期被提取的元件。請注意,較高階或更外顯係指快取階級增加或較遠籬執行單元。在一個實施例中,較高階快取110是一個末階資料快取──在處理器
100上之記憶體階層中的最末快取,例如是一個第二或第三階資料快取。然而,較高階快取110並不受此限,因為它也可能係與指令快取相關聯,或是包括有指令快取。替代性地,在解碼器125之後係可耦接一個軌跡快取──一種類型的指令快取,以儲存近期被解碼的軌跡。
在所繪示的組態中,處理器100亦包括匯流排介面模組105,用以與處理器100外部的設備通訊,例如系統記憶體175、晶片組、北橋或其他積體電路。記憶體175可係專用於處理器100,或與系統中的其他設備共享。記憶體175之類型的常見範例包括動態隨機存取記憶體(dynamic random access memory,DRAM)、靜態RAM(static RAM,SRAM)、非依電性(non-volatile,NV)記憶體(NV記憶體)和其他習知儲存裝置。
在一個實施例中,處理器100包括適於支援在執行碼,例如軟體緒,之前對處理元件之提早喚醒的電力控制160(如所繪示地中央化或透過處理器100分散)。之前,當有一個新的緒要在一個處理元件上被生出/執行時,此處理元件會從一個非操作中的低電力狀態變換至一個作動狀態。然而,從緒生出到處理元件達到作動狀態之間的時間是潛在的浪費執行時間(在新的處理元件成為作動且準備好要執行軟體之前,新的緒不能被執行)。
因此,在一個情境中,在一個緒要在處於非操作中電力狀態的一個處理元件(例如,核心101或緒單元102a)上被生出/執行之前,核心101被先行變換至一個
較低電力狀態(較低係指較靠近作動電力狀態的電力狀態,而較高/較深係指較具有較低電力消耗之遠離作動電力狀態的電力狀態)。因此,當遇到實際生出新的緒時,核心101較接近作動電力狀態,這潛在性地大大漸少處理元件喚醒時間(在緒生出來和處理元件準備好之間的時間)。
舉一個例示範例,不管是透過硬體、軟體、韌體、或前述之組合,係在生出要於核心101上執行的一個新的緒之前將一個提早喚醒指示提供給核心101(例如,至電力控制160以變換核心101)。在一個實施例中,此提早喚醒指示係在生出一個新的緒之前一段時間被提供。舉例來說,最佳時間量可包括使核心101之電力狀態從其目前電力狀態變換至目標電力狀態的時間。於此,係提供提早喚醒指示,並且電力狀態變換係在發生生出新緒時完成。請注意,此時間量係可由硬體、軟體、韌體、或前述之組合決定。且此決定可係透過實際時間量測或是透過基於時間或在早期喚醒指示與生出/觸發指令間之中介指令/操作數的智能估算、以及任何其他用於估算電力狀態變換之歷時的習知方法作成。
當接收到提早喚醒指示時,處理元件從一個深度睡眠狀態變換至一個較低電力狀態。並且當接下來遇到生出新的緒時,此處理元件從新的較低電力狀態變換至作動電力狀態(相較於從深度睡眠電力狀態降級而言,變換時間減少),以開始執行這個新的緒。
在一個實施例中,軟體會提供提早喚醒指示,其可包括一個軟體命令、中斷、或指令。於此,一個編譯器或最佳化器,靜態或動態地(在運行時間當中),在一個程式中插入碼產生/提供提早喚醒指示。或者是,使用者可將此碼包括在一個程式中,並且一個編譯器可編譯、最佳化、和/或轉換此命令。基本上,當這個程式被執行時,此軟體命令會(以程式順序)最先被執行,這使得核心101從較高電力狀態變換至較低電力狀態。在繼續執行時,會遇到一個生出或觸發指令,並且新的緒被生出,而使得處理元件從低電力狀態變換至作動狀態。並且新的緒在核心101上被執行,而大幅減少喚醒時間。
請注意,軟體命令可採取許多形式:中斷、特化早期喚醒指示、寫入操作、或其他習知的用於在硬體與軟體之間通訊的形式。在中斷的情境中,提早喚醒指示包括軟體產生式中斷,用以提供提早喚醒指示給硬體。並且無論是作為對此提早喚醒指示的直接硬體回應或是在執行用於處置此中斷的處理器常式時,此電力狀態變換都會被進行。於此,中斷可包括以致使變換的一個提早喚醒值來更新一個中斷控制暫存器。
再舉另一個例子,係利用可由解碼器辨識為在一個指令集結構(ISA)中之指令的一個提早喚醒指令。於此,此指令可包括用來直接更新一個暫存器或提供提早喚醒指示給電力控制160的資訊。或者是,可將指出一項電力狀態變換的一個指示載入到一個暫存器,例如一個來源或提
示暫存器,中,而與此暫存器相關聯的一個指令則指出要進行此電力狀態變換。於此情境中,以上述任一方式,電力變換皆係反應於ISA界定指令而進行。
無論此命令係包括中斷、寫入、指令或其他在軟體與硬體之間的習知通訊技術,在一個實施例中,提早喚醒指示係包括一個提示(在有其他條件時電力控制邏輯可能會選擇性地忽略的一個建議變換,例如在深度電力狀態與低電力狀態之間)。於此,硬體可能會實施一個選擇性演算法。其在默認情況下會反應於此提示而影響電力狀態變換。然而,若某些條件存在,那麼此電力狀態變換可能會被延遲或忽略。
上面的論述主要係聚焦在由軟體產生提早喚醒指示以先行喚醒硬體處理元件。然而,於本文中所說明的這些方法和裝置並不受此限。取而代之地,硬體係可剖析程式執行和預測新緒之生出或觸發。由於此預測,一個處理元件會被類似地以經減少的喚醒時間變換至較低電力狀態以對新緒執行作準備。同樣地,上面的範例常係有關反應於提早喚醒指示而從深度電力狀態至低電力狀態之變換(將於下文中更詳細說明其範例)。然而,係可進行用於減少在執行一個緒之前的喚醒時間的任何電力或效能狀態變換。例如,此變換可係直接從深度電力狀態至作動電力狀態。並且此提早喚醒指示可係有可能在一個緒跳躍(一個軟體緒的從一個硬體緒單元到另一個硬體緒單元之上下文切換),而非生出新的緒,之前被提供。
此外,應注意到,第1圖例示出一個示範處理器的抽象邏輯視圖,具有對不同模組、單元和/或邏輯的表示。然而,請注意,利用於本文中所說明的這些方法和裝置的一個處理器並不需要包括有所例示的這些單元。並且,此處理器係可省略所示出的一些或所有的單元。此外,第1圖僅繪示出兩個核心;然而,一個處理器係可包括有任何數量的核心,例如相同類型的複數個核心、以及各在類型上有所差異的多於兩個的核心。
第1圖亦例示出以點對點方式與至一個外部記憶體控制器(控制器集線器170)的介面耦接的一個處理器的一個實施例。然而,目前有許多控制器已經開始將處理器上記憶體介面模組──一種晶片上模組──包括在內,此記憶體介面模組具有不同的互連結構,例如一個環圈組態,以使複數個核心,以及共享快取和其他介面,互連。雖然並未於圖中有所例示,但在一個實施例中,處理器100包括一個環圈互連耦接核心、快取和數個記憶體控制器部件。
於此,係利用快取代理器來管理實體分散快取的一個截割。舉例來說,各個快取部件係用於針對一個共置核心──此快取代理器與之相關聯的一個核心──而管理快取的一個截割,以做管理此快取的分散截割所用。跟快取代理器對在一個環圈互連和與快取截割之介面上之流量的處置很類似,核心代理器/部件係要處置流量和與核心的介面。此外,環圈互連可將記憶體控制器介面邏輯
(Memory Controller Interface Logic,MCIL)和/或其他控制器耦接至與其他模組(例如記憶體和/或圖形處理器)的介面。
請看向第2圖,其繪示一種用於在生出緒之前喚醒處理元件之方法的流程圖的一個實施例。於此,緒201正被執行。舉例來說,緒201包括針對一個應用或程式的一個主要的軟體緒。然而,緒201係包括執行一個處理元件,例如來自於第1圖的核心101或一個緒(緒101a、101b),的任何碼。
在一個實施例中,在流程210中,執行緒201會致使一個提早喚醒指示215(有時候係以降級指示、電力狀態變換指示、或其他諸如此類者來指涉)之產生。如於上文中所提過的,提早喚醒指示215包括任何習知的軟體指示或一個事件,例如中斷、目前指示、新的指示、操作、或前述之組合。下面就來論述提早喚醒指示的一點例示範例。
舉第一個例子來說,一個早期喚醒指示包括一個軟體產生式中斷。於此,係運用一種典型的中斷通訊處理程序。例如,產生一個中斷包括從軟體到中斷暫存器,例如中斷控制暫存器或模型特定暫存器(model specific register,MSR),的一個寫入。於此情境中,此寫入係包括一個提早喚醒值(當被寫入到控制暫存器中時會指出一個提早喚醒事件/中斷的一個值)。當然,控制暫存器係包括一個提早喚醒欄位來接受這個提早喚醒值。在一第一實施例中,把提早喚醒值寫入到控制暫存器中的這個寫入
被看作是一個正常中斷,一個軟體處置器會被呼叫來服務此中斷並致使一個相關聯的電力狀態變換。
舉一個替代的例子,係反應於以提早喚醒值對控制暫存器所作的更新而直接進行電力狀態變換。基本上,中斷服務處理程序會被繞過,並且電力狀態變換係在沒有以處置器作中斷執行的情況下進行。於此,當對控制暫存器的一項寫入被執行,且提早喚醒欄位握持有一個中斷值時,此更新被看作是一個正常的軟體產生式中斷。並且當此提早喚醒值被握持在提早喚醒欄位中時,將會進行一項電力狀態變換;有可能是在沒有呼叫處置器或中斷執行的情況下進行,如於上文中所論述的。或者是,控制暫存器也可以包括有要由一個處理元件識別符值更新的一個目標欄位。在這個事例中,軟體產生式命令更新提早喚醒欄位,以指出有一項提早喚醒要進行,並識別要提早喚醒的一個特定處理元件。雖然處理元件識別並非必要。相反地,係可進行對此提早喚醒的一個廣播。或者是,硬體可在沒有軟體之指導的情況下基於它自己的考量而判定要提早喚醒哪個處理元件。
提早喚醒指示的這第一個範例係聚焦在一個仿中斷情境上;然而,舉另一個例子來說,此提早喚醒指示係包括一個指令。如於上文中參考第1圖所論述的,一個處理器典型上係包括有解碼邏輯,其辨識並解碼通常被稱為是一個指令集結構(ISA)的一組經界定指令。在一個實施例中,於上文中所論述的對一個控制暫存器之寫入係可類似
地由一個經辨識ISA指令來進行。舉另一個例示範例,係利用一個特定的提早喚醒指令。於此,反應於檢測到、辨識出和/或解碼出提早喚醒指令,會進行一項電力狀態變換。針對此指令的一個來源或提示暫存器可握持提早喚醒資訊(例如針對此變換的目標電力狀態)、用於識別要喚醒之處理元件的一個處理元件識別符、或任何其他用於影響電力狀態變換的習知資訊。
此外,提早喚醒指示215可包括一個選擇性降級指示,即,一個電力狀態降級指示,其指出硬體,例如電力邏輯160,在其他條件存在時係有忽略的能力;其中有一些條件可能是軟體未被完全告知的。因此,在這個範例中,係給予硬體「最終決定權」來確保處理元件不在不需要時被不當地置於較高電力消耗狀態中。或者是,在一些實施例中,此提早喚醒指示是強制性的。而又在另一個實施例中,軟體,例如使用者等級應用/碼,能夠指明此提早喚醒指示是強制性的還是選擇性的;這有可能是以在一個指令/暫存器中的被以一個強制性或選擇性值設定的一個欄位來完成。在提早喚醒指示是選擇性的這樣的情境中,硬體實施一個決策演算法來有鑑於其他系統條件而決定一項電力狀態變換是否要被進行。請注意,係可使用對於電力消耗或效能的任何其他習知考量。於本文中並未著重對這些習知考量的具體揭露,以避免超出和混淆目前論述。
從於上文中所論述的提早喚醒指示之具體範例推論,
可看出,用來致使在一個緒要被執行之前作電力狀態變換的任何指示(不管是來自硬體或軟體)皆可被稱為是一個提早喚醒指示。並且雖然此提早喚醒指示可係在生出/呼叫緒225之前被產生/提供,在一個實施例中,提早喚醒指示215係在對此緒之呼叫之前一段預定時間被產生/提供,以容許電力狀態變換在遭遇/執行對緒之呼叫225之前完成。如所示出的,在流程220中,在提早喚醒指示215和對緒之呼叫225之間的時間量係至少等於將處理元件降級至較低電力狀態所需的時間量(將處理元件從深度電力狀態喚醒/變換至較低電力狀態的時間量)。
請注意,係可以任何習知方式來達到在提早喚醒指示與對一個緒之呼叫間的這段歷經時間。舉一些例示範例來說,係利用對於在發出提早喚醒指示215和對緒之呼叫225間之時間的實際量測;係利用基於要執行之指令/操作的數量所作的估算;或者是在完成降級時提供致使對緒之呼叫225的中斷或其他指示。同樣地,使一個處理元件從一個電力狀態降級至另一個電力狀態的時間量係可被估算或量測。並且在流程220中,即便上面這些範例主要係論述在指示215與呼叫225間之等於降級處理元件之時間量的時間量,係可使用在呼叫225之前產生指示215的任何時間量。
所以,反應於指示215,一個處理元件被降級至一個較低電力狀態。電力狀態常常係特定於產品而被界定;然而,在一個實施例中,一個電力狀態係指具有不同電力規
格的任何狀態,例如進階組態和電力介面(Advanced Configuration and Power Interface,ACPI)電力規格。對於處理器,ACPI規格界定三種基本狀態:C0(一種操作中/作動狀態);C1(被稱為暫停(halt),當中指令並不被執行,但可回到執行狀態);C2(被稱為停止時鐘(stop-clock),當中係維持軟體可見狀態但可能會需要較長的時間醒來;以及C3(被稱為睡眠(Sleep),當中處理器並不保持其快取同調但可維持其他狀態。此外,係可在這些狀態上作出變化。例如,係可將一種改良型C1狀態利用於較低電力消耗。並且在C3/睡眠上的變化可包括較深度睡眠狀態,其需要更多時間來喚醒一個處理元件。
因此,在一個範例中,提早喚醒降級包括從一個C6(較深度睡眠)狀態至一個C1(較低電力暫停)狀態的降級。然而,係可實施從任何較高電力狀態,例如C2~C5,到一個較低電力狀態,例如C1~C5,的降級。更甚者,如於上文中所說明的,此降級亦可能會包括從一個非操作中電力狀態(C1~C6)到一個作動電力狀態(C0)的降級。此外,很重要的是,請注意,在上文中所述的這些ACPI狀態僅純為例示性的,因為在一個實施例中,從較低電力消耗狀態至較高電力消耗狀態的移動包括電力狀態之降級。
繼續對第2圖的論述,由一個觸發或生出指令起始對緒202的一個呼叫事件225。請注意,導致生出一個新緒
的任何指令皆可被稱為是一個觸發指令;無論此指令是外顯地呼叫一個新緒或內隱地致使會導致一個新緒被生出(無論是藉由軟體或藉由硬體)的一個事件。在外顯指令的情境中,此指令可為針對此處理器的一個ISA的一部分,其容許使用者緒被生出和執行而無須作業系統(operating system,OS)/核介入。然而,此生出可亦包括要求OS介入來創造此緒的一個指令。舉一個具體的例示範例,緒201包括一個主要應用程式。並且不管是由於一個外顯指令或所致事件(旋轉鎖定或快取未命中),主要緒201都會呼叫/生出助手緒202(用來為主要緒201進行一些協助工作,例如前奔(run-ahead)執行、資料/指令預取、獲取未來鎖定等等,的一個緒)。一個助手緒常常會具有至少一部分,假如不是整個的話,的對於主要緒之上下文的視野。然而,很重要的是,請注意,對於一個新緒的呼叫或生出可包括對要在一個不同處理元件上執行的一個完全無關的或新的緒之呼叫。
在流程226中,以上述任一方式(有或沒有OS介入),在一個實施例中,反應於對緒202的呼叫或生出,要執行緒202的處理元件,例如核心101或核心101的緒102a、102b,都會從較低電力狀態變換至一個操作中/作動電力狀態。刷新ACPI的這些例示範例,降級(反應於指示215)係已從一個C6深度睡眠電力狀態至一個C1暫停較低電力狀態。因此,反應於遭遇到對緒之呼叫/生出事件225,核心101從目前的C1電力狀態變換至一個作動的C0電力狀態。並且助手緒202在流程235中於核心
101上被執行。在緒202並不實際包括有助手緒的情境中,那麼,一些資料/資訊(所獲取的鎖定、所預取的資料/指令、上下文改變等等可在流程240中被返回到主要緒(執行於核心101上)。在提早喚醒降級是直接至一個作動電力狀態,例如C0,的事例中,則可省略流程227。
如可從這些例示範例中看出的,將一個處理元件喚醒以執行新生出的緒202的喚醒時間有可能會藉由在生出此緒之前喚醒處理元件而大幅地減少。之前,從C6到C0的喚醒在對緒之呼叫225後之前是不會發生的。並且所例示的在指示215至呼叫225以降級一個處理元件220之間的時間會被下推到對緒之呼叫225之下。基本上,緒202在它可以開始執行之前會必須要等待降級處理程序。取而代之地,在一個實施例中,在流程230中,對緒202的執行只等待一段更短得多的過渡期,例如在C1到C0之間,而非與從C6至C0之變換相關聯的冗長的開始供電處理程序。
請看向第3圖,其例示出適於支援提早喚醒架構的硬體的一種邏輯表示型態的一個實施例。如所例示的,檢測邏輯310係用於檢測提早喚醒命令310,例如中斷、寫入、提早喚醒指令、或其他習知軟體產生式命令。例如,檢測邏輯310包括解碼邏輯,用以將指令解碼成致使對一個處理元件之提早喚醒被進行的操作或微操作。然而,檢測邏輯310係可包括任何用於接收提早喚醒指示的邏輯,如於上文中所論述的。
雖然並未例示出來,但儲存元件315係可透過其他邏
輯、管線階段等等而耦接至檢測邏輯310。在提早喚醒命令305包括有軟體相關中斷的一個實施例中,儲存元件315係包括一個中斷控制暫存器(interrupt control register,ICR)。在提早喚醒命令305包括有可被解碼器310辨識為ISA之一部份的一個特定新指令的另一個實施例中,儲存元件315係包括有與此指令相關聯或由此指令識別的一個暫存器,此暫存器握持相關資訊(提早喚醒值306、處理元件識別符307等等)。
舉一個具體例示範例,儲存元件315係包括一個提示暫存器(由電力控制邏輯320用作一個提示的一個ICR、或者是由要被提供給控制邏輯320之提早喚醒指令指參的一個提示暫存器),其可握持上述資訊。此外,在提早喚醒電力狀態變換未被預界定,例如預界定的由微碼所實施之在C6和C1間之變換,的情境中,暫存器315可亦握持一個所欲電力狀態。
在一個實施例中,儲存元件315包括要由來自於軟體產生式命令305之提早喚醒值306更新的一個提早喚醒欄位316。在不同的實作中,係可以不同的方式來使用提早喚醒欄位316。例如,係可使用它來界定電力狀態變換之類型,例如對於要提早對什麼電力狀態作變換的一種位元表示型態(3個位元用來表示C0到C6的目標電力狀態)。在儲存元件315包括有一個中斷控制邏輯的另一個實施例中,係使用欄位316來辨別正常軟體產生式中斷與提早喚醒事件。基本上,當由軟體產生一個正常中斷時,
要更新ICR儲存元件315的命令包括一個中斷值(或至少並不包括任何提早喚醒值)。因此,基於欄位316,會判定出已發生一個正常軟體產生式中斷,並且引動一個正常處置器處理程序。或者是,當命令305以提早喚醒值306更新儲存元件315時,會基於握持在欄位316中的提早喚醒值而進行一項提早喚醒。請注意,如於上文中所述的,一些實施例可能會包括要利用一個正常中斷處理程序來變換電力狀態以作提早喚醒,而非在上文中所論述的放棄對軟體處置器之引動的硬體繞過(bypass)。
反應於一項提早喚醒,電力控制320會判定一個處理元件是否要被提早喚醒(變換至較低電力狀態)。在一個實施例中,在接收到提早喚醒命令305時,此變換是強制性的。或者是,此提早喚醒可為選擇性的,即,命令305包括一個提示。於此,電力控制邏輯320係適於實施一個選擇性演算法來判定是否要基於接收到命令305,以及任何其他習知處理器條件,而進行一項提早喚醒。此外,在另一個實施例中,軟體能夠從使用者等級而指明命令305是否為強制性的或選擇性的,例如透過命令307/暫存器315中的另一個值(未於圖中具體示出,雖然在一種情境中係可為此目的而使用欄位316)。
除了判定是否要進行提早喚醒以外,電力控制亦適於起始或進行針對一個處理元件的提早喚醒。於此,要喚醒的這個處理元件係可由硬體、軟體、韌體、微碼、或前述之組合來判定。舉第一個範例,軟體產生命令305,且硬
體判定哪個處理元件開放接收一個新的緒(反應於一個未來的之後對於一個新緒的呼叫),並喚醒那個處理元件。在另一個實施例中,軟體提供一個識別符(處理元件識別符307)來指出要喚醒哪個處理元件,因為軟體有可能更知道要被生出的後續的緒。接著,被判定的處理元件被變換至適當的電力狀態。於此,係由任何邏輯(電力控制單元(Power Control Unit)、進階可規劃中斷控制器(Advanced Programmable Interrupt Controller)、特定處理元件電力邏輯)或碼,例如微碼(涉入對較高階機器碼之實施的一層硬體等級指令和/或資料結構),來實施實際電力狀態變換。
為了提供一個例示範例,假設一個主要的使用者等級緒正執行於處理元件325上,且處理元件326目前正處於一個C6深度睡眠電力狀態中。這樣的對於主要緒之在處理元件325上的執行會導致產生提早喚醒命令305,其係有關提早喚醒值306(一個邏輯一,用以表示任何提早喚醒事件而非正常軟體中斷)和處理元件識別符307(一個邏輯一,用以指參處理元件326)。檢測邏輯310接收命令305並提供欄位316中之提早喚醒值306和欄位317中之目標識別符307給中斷控制暫存器/以提早喚醒值306和識別符307更新中斷控制暫存器。將更新利用為一個提示,電力控制320,例如一個電力控制邏輯,可判定出係要進行處理元件326之提早喚醒。因此,電力控制320,例如對與電力控制單元相關聯之微碼的執行,將處理元件
326從目前的C6電力狀態降級至一個C1暫停電力狀態。
於此範例中,假設一個編譯器已組織/編譯主要緒來對提早喚醒命令305提供在生出一個助手緒之前的一個經界定時間量;接著,係在大概在處理元件326達到C1暫停電力狀態的時候,遭遇/進行針對一個助手緒的一個生出/觸發指令。由於這個生出/觸發指令,處理元件326從現在的目前C1電力狀態被變換成一個C0操作中電力狀態。並且新的助手緒係在無須於生出指令後等待處理元件326從C6電力狀態途經C1電力狀態到C0操作中電力狀態的情況下執行。相反地,在呼叫助手緒之後唯一的潛時是更有效率的在C1到C0間之變換。並且,請注意,在一些實施例中,從C6所做的變換可係在遭遇到新緒之生出之前反應於提早喚醒命令而一路到C0。
接下來,請參考第4圖,其例示出一種用於執行碼,例如編譯器,以插入提早喚醒命令的流程圖的一個實施例。一個編譯器常常會包括有一個程式或一組程式,以將原始文本/碼翻譯成目標文本/碼。通常,以一個編譯器之對於程式/應用碼的編譯係在複數個階段和遍次中完成,以將高階城市規劃語言碼轉換成低階機器或組合語言碼。然而,仍係可利用單遍編譯器來作簡單編譯。一個編譯器可利用任何習知的編譯技術和進行任何習知的編譯器操作,例如詞彙分析、預處理、剖析、語意分析、碼產生、碼轉換、和碼最佳化。如於本文中所述的,在一個實施例中,一個編譯器係用來編譯和/或最佳化碼,以在緒生出/
觸發指令/點之前插入提早喚醒命令。
較大的編譯器常常會包括有複數個階段,但最常見的情況是,這些階段係被包括在兩個籠統階段中:(1)一個前端,即,通常是可發生語法處理、語意處理、和一些轉換/最佳化之處,以及(2)一個後端,即,通常是分析、轉換、最佳化和碼產生發生之處。一些編譯器牽涉到一個中間端,其闡明在一個處理器之前端和後端之間的劃界模糊。因此,對於一個編譯器之插入、聯繫、產生或其他操作的指參係可發生在前述任何階段或遍次,以及編譯器的任何其他習知階段或遍次,中。
舉一個例示範例,在執行時,一個編譯器可能會插入操作、呼叫、功能等等,以在一或多個編譯階段中提供提早喚醒指示,例如在編譯器的一個前端階段中插入呼叫/操作並接著在一個轉換階段中將此等呼叫/操作轉換成較低階碼。在一個實施例中,這些插入動作係在靜態的整個程式編譯行為中發生。在另一個實施例中,在動態的編譯行為中,編譯器碼或動態最佳化碼係可插入這樣的操作/呼叫,以及將碼最佳化以供在運行時間作執行。如於上文中所述的,在一種情境中,硬體或軟體皆可進行對程式執行的動態剖析,以判定一個程式之可能會觸發生出新緒的點,例如重複導致會致使一個助手緒生出的一個高階快取未命中的指令。並且因此,在動態編譯當中,一個動態編譯器係在這些觸發點之前插入提早喚醒命令,以提早喚醒一個處理元件來減少緒生出執行潛時延遲。
然而,在一個實施例中,此編譯器(無論是動態還是靜態的)編譯程式碼。並且在流程405中,在這樣的編譯當中,檢測針對一個新緒的一個生出/觸發命令、指令或點。於此,一個外顯的ISA界定指令包括一個生出指令。此ISA界定指令可包括需要呼叫一個作業系統以生出新緒的一個指令,或可包括一個使用者等級指令以直接在硬體中生出此緒而無須作業系統介入。舉另一個例子,被檢測到的一個生出命令包括判定重複地(不管是透過模擬或實際執行)致使一個新緒生出的一個指令,例如會導致觸發新緒的一個硬體情境的一個指令或點。再舉另一個例子,此編譯器本身係可並行化一個單緒應用,而插入一個生出指令。基本上,係可利用任何的用於識別可生出/觸發一個新緒的命令、操作、指令、或點的習知方法。
在流程410中,一個提早喚醒命令在生出命令/點之前被插入到程式中。如於上文中所論述的,此提早喚醒命令包括任何碼,例如中斷碼/命令、正常寫入操作、新指令等等。並且當執行時,此提早喚醒命令會進行一項提早喚醒,如於上文中所述的。例如,此提早喚醒命令會致使要執行此新緒的一個處理元件,像是一個核心或緒,變換至比此處理元件之目前電力狀態,例如一個深度睡眠狀態,更低的一個電力狀態,例如一個暫停狀態。在一個實施例中,此提早喚醒命令係在此程式碼中之在生出命令之前的等於(藉由估算或實際量測)要將此處理元件從目前電力狀態降級至較低電力狀態的時間量的一個點被插入。
係可利用任何用於針對電力狀態降級之估算或量測時間的習知方法,例如指令計數、計時器、或碼內之經估算位置,以提供足夠的介入指令來容許發生電力狀態之降級。
於本文中所用時,一個模組係指任何硬體、軟體、韌體、或其中的組合。被例示成分離形式的模組界線常常一般會變化並且有可能會重疊。例如,一第一模組和一第二模組可共享硬體、軟體、韌體、或其中的組合,並且可能保有一些獨立硬體、軟體或韌體。在一個實施例中,對於邏輯這個詞語的使用係包括硬體,例如電晶體、暫存器,或是其他硬體,例如可規劃邏輯設備。然而,在另一個實施例中,邏輯亦包括與硬體整合的軟體或與碼,例如韌體或微碼。
於本文中所用時,數值係包括對於數目、狀態、邏輯狀態、或二元邏輯狀態的任何習知表示型態。對於邏輯位準、邏輯數值、或邏輯性數值的使用常常亦係以簡單地表示二元邏輯狀態的1和0指涉。例如,1指高邏輯位準,而0指低邏輯位準。在一個實施例中,一個儲存體胞元,例如一個電晶體或快閃胞元,可係能夠握持單一個邏輯性數值或複數個邏輯性數值者。然而,在電腦系統中已有使用其他對於數值的表示型態。例如,十進位數十可亦被表示成1010的二元數值和十六進位字母A。因此,數值係包括對於可被握持在電腦系統中之資訊的任何表示型態。
此外,狀態可係由數值或數值之部份來表示。舉例來說,一第一數值,例如一個邏輯的一,可代表一個預設或
初始狀態,而一第二數值,例如一個邏輯的零,可代表一個非預設狀態。此外,在一個實施例中,重置和設置這些詞語分別係指一個預設數值或狀態和一個經更新數值或狀態。例如,一個預設數值可能包括一個高邏輯性數值,也就是重置,而一個經更新數值可能包括一個低邏輯性數值,也就是設置。請注意,係可利用任何數值的組合來表示任何數目的狀態。
於上文中所提出的方法、硬體、軟體、韌體或碼的數個實施例可係經由儲存在機器可取用或機器可讀取媒體中的可由處理元件執行的指令或碼來實施。機器可取用/可讀取媒體包括以機器(例如電腦或電子系統)可讀取之形式提供(亦即,儲存和/或發送)資訊的任何機構。例如,機器可取用媒體包括隨機存取記憶體(random-access memory,RAM),例如靜態RAM(static RAM,SRAM)或動態RAM(dynamic RAM,DRAM);ROM;磁性或光學儲存媒體;快閃記憶體設備;電氣式儲存設備;光學儲存設備;聲學儲存設備;其他形式的用於握持經傳播信號(例如載波、紅外線信號、數位信號)的儲存設備;等等。
於本說明書通篇中之對「一個實施例」或「一實施例」之指涉係指配合此實施例所說明的一個特定特徵、結構或特性係包括在本發明的至少一個實施例中。因此,於本說明書通篇中之多處的「在一個實施例中」或「在一實施例中」這些詞語的出現並不必然全係指涉同一個實施
例。此外,在一或多個實施例中,係可以任何適當方式組合這些特定特徵、結構或特性。
在前面的說明中,已參考數個特定示範實施例給予詳細說明。然而,很明顯地,係可對其做出各種修改和改變,而不悖離本發明之如於後附申請專利範圍中所提出的較廣義精神與範疇。本說明書和圖式因而應係以一種例示方式,而非限制方式來看待。此外,前述對實施例和其他示範性措辭之使用並不必然係指同一個實施例或同一個範例,而係可能指不同且相異的實施例,也可能是指同一個實施例。
Claims (22)
- 一種處理器,包含:第一處理元件,用以執行第一執行緒以產生提早喚醒指示;第二處理元件,用以執行在從該第一執行緒產生的該提早喚醒指示之後生出的第二執行緒;以及功率控制電路,用以回應於來自該第一執行緒的該提早喚醒指示來將該第二處理元件從第一功率狀態轉換到第二功率狀態,並且回應於該第二執行緒的生出來將該第二處理元件轉換到作動功率狀態,其中該第一功率狀態和該第二功率狀態為比該作動功率狀態低的功率消耗狀態。
- 如申請專利範圍第1項的處理器,其中該功率控制電路係用以在該第二執行緒的該生出之前一時間量,將該第二處理元件從該第一功率狀態轉換到該第二功率狀態,其中該時間量包含將該第二處理元件從該第一功率狀態轉換到該第二功率狀態之時間。
- 如申請專利範圍第1項的處理器,其中該第一執行緒為主執行緒,而該第二執行緒為將資料從該第二執行緒返回到該第一執行緒的助手緒。
- 如申請專利範圍第1項的處理器,其中該提早喚醒指示包含對於中斷控制暫存器的更新,而該功率控制電路係用以回應於該更新來將該第二處理元件從該第一功率狀態轉換到該第二功率狀態。
- 如申請專利範圍第1項的處理器,其中該第一處理 元件為第一核心,而該第二處理元件為第二核心。
- 如申請專利範圍第1項的處理器,其中該第一功率狀態為第一進階組態和電力介面(ACPI)非操作功率狀態、該第二功率狀態為第二ACPI非操作功率狀態,以及該作動功率狀態為ACPI操作狀態。
- 一種處理器,包含:處理元件,用以在作動功率狀態執行執行緒;電路,用以檢測生出命令來生出該執行緒,並且在該執行緒將被執行之前,產生提早喚醒指示;以及功率控制電路,用以回應於該提早喚醒指示來將該處理元件從第一功率狀態轉換到第二功率狀態,其中該第一功率狀態和該第二功率狀態為比該作動功率狀態低的功率消耗狀態,其中該提早喚醒指示包含對於中斷控制暫存器的更新,而該功率控制電路係用以回應於該更新來將該處理元件從該第一功率狀態轉換到該第二功率狀態。
- 如申請專利範圍第7項的處理器,其中該功率控制電路係用以在該執行緒的生出之前一時間量,將該處理元件從該第一功率狀態轉換到該第二功率狀態,其中該時間量包含將該處理元件從該第一功率狀態轉換到該第二功率狀態之時間。
- 如申請專利範圍第7項的處理器,其中該執行緒為將資料返回到主執行緒的助手緒。
- 如申請專利範圍第7項的處理器,其中該處理元 件為核心。
- 如申請專利範圍第7項的處理器,其中該第一功率狀態為第一進階組態和電力介面(ACPI)非操作功率狀態、該第二功率狀態為第二ACPI非操作功率狀態,以及該作動功率狀態為ACPI操作狀態。
- 一種處理器,包含:處理元件,用以在作動功率狀態執行執行緒;電路,用以檢測對於該執行緒的呼叫,並且在該執行緒將被執行之前,產生提早喚醒指示;以及功率控制電路,用以回應於該提早喚醒指示來將該處理元件從第一功率狀態轉換到第二功率狀態,其中該第一功率狀態和該第二功率狀態為比該作動功率狀態低的功率消耗狀態,其中該提早喚醒指示包含對於中斷控制暫存器的更新,而該功率控制電路係用以回應於該更新來將該處理元件從該第一功率狀態轉換到該第二功率狀態。
- 如申請專利範圍第12項的處理器,其中該功率控制電路係用以在對於該執行緒的該呼叫之前一時間量,將該處理元件從該第一功率狀態轉換到該第二功率狀態,其中該時間量包含將該處理元件從該第一功率狀態轉換到該第二功率狀態之時間。
- 如申請專利範圍第12項的處理器,其中該執行緒為將資料返回到主執行緒的助手緒。
- 如申請專利範圍第12項的處理器,其中該處理元 件為核心。
- 如申請專利範圍第12項的處理器,其中該第一功率狀態為第一進階組態和電力介面(ACPI)非操作功率狀態、該第二功率狀態為第二ACPI非操作功率狀態,以及該作動功率狀態為ACPI操作狀態。
- 一種設備,包含:檢測電路,用以參照提早喚醒值來檢測軟體生成命令;控制儲存元件,其耦接到該檢測電路,該控制儲存元件回應於該檢測電路檢測到該軟體生成命令而被以該提早喚醒值更新;以及功率控制電路,其耦接到該控制儲存元件,該功率控制電路用以回應於該控制儲存元件被以該提早喚醒值更新來將處理元件從第一低功率狀態轉換到第二低功率狀態。
- 如申請專利範圍第17項的設備,其中用以檢測該軟體生成命令的該檢測電路包含用以檢測提早喚醒指令的檢測電路。
- 如申請專利範圍第17項的設備,其中用以檢測該軟體生成命令的該檢測電路包含用以檢測參照該提早喚醒值對於該控制儲存元件之寫入的檢測電路。
- 如申請專利範圍第19項的設備,其中參照該提早喚醒值對於該控制儲存元件之該寫入包含對於中斷命令暫存器之寫入,以及其中該中斷命令暫存器包含回應於該檢測電路檢測到參照該提早喚醒值之該寫入,予以以該提早 喚醒值更新的提早喚醒欄位。
- 如申請專利範圍第17項的設備,其中該軟體生成命令還包含對於用以識別該處理元件的處理元件識別值的參照,而該控制儲存元件將以該處理元件識別值更新,以及其中該功率控制電路用以回應於該控制儲存元件被以該提早喚醒值更新來將該處理元件從該第一低功率狀態轉換到該第二低功率狀態,該設備包含:發送電路回應於該控制儲存元件被以該提早喚醒值與該處理元件識別值更新,將該提早喚醒值的指示至少發送給該處理元件;以及該功率控制電路係用以回應於該提早喚醒值的該指示被發送到該處理元件,來將該處理元件從該第一低功率狀態轉換到該第二低功率狀態。
- 如申請專利範圍第17項的設備,其中該第一低功率狀態為第一進階組態和電力介面(ACPI)非操作功率狀態,而該第二低功率狀態為第二ACPI非操作功率狀態。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/974,086 US8990602B2 (en) | 2010-12-21 | 2010-12-21 | Apparatus, method, and system for early deep sleep state exit of a processing element |
US12/974,086 | 2010-12-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201807572A TW201807572A (zh) | 2018-03-01 |
TWI628599B true TWI628599B (zh) | 2018-07-01 |
Family
ID=46236059
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106114987A TWI628599B (zh) | 2010-12-21 | 2011-12-20 | 用於使處理元件提早離開深度睡眠狀態的處理器和設備 |
TW100147457A TWI564804B (zh) | 2010-12-21 | 2011-12-20 | 用於使處理元件提早離開深度睡眠狀態的處理器和方法 |
TW105131706A TWI590162B (zh) | 2010-12-21 | 2011-12-20 | 用於使處理元件提早離開深度睡眠狀態的處理器和方法 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100147457A TWI564804B (zh) | 2010-12-21 | 2011-12-20 | 用於使處理元件提早離開深度睡眠狀態的處理器和方法 |
TW105131706A TWI590162B (zh) | 2010-12-21 | 2011-12-20 | 用於使處理元件提早離開深度睡眠狀態的處理器和方法 |
Country Status (3)
Country | Link |
---|---|
US (3) | US8990602B2 (zh) |
TW (3) | TWI628599B (zh) |
WO (1) | WO2012087587A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11023379B2 (en) | 2019-02-13 | 2021-06-01 | Google Llc | Low-power cached ambient computing |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9372526B2 (en) * | 2012-12-21 | 2016-06-21 | Intel Corporation | Managing a power state of a processor |
US9552308B2 (en) * | 2013-09-30 | 2017-01-24 | Intel Corporation | Early wake-warn for clock gating control |
US20160154452A1 (en) * | 2014-12-02 | 2016-06-02 | Arm Limited | System and method for controlling the power mode of operation of a memory device |
US9858201B2 (en) * | 2015-02-20 | 2018-01-02 | Qualcomm Incorporated | Selective translation lookaside buffer search and page fault |
US9977679B2 (en) * | 2015-11-09 | 2018-05-22 | Arm Limited | Apparatus and method for suspending execution of a thread in response to a hint instruction |
US10345883B2 (en) * | 2016-05-31 | 2019-07-09 | Taiwan Semiconductor Manufacturing Co., Ltd. | Power estimation |
US10275287B2 (en) * | 2016-06-07 | 2019-04-30 | Oracle International Corporation | Concurrent distributed graph processing system with self-balance |
US10362149B2 (en) | 2016-12-30 | 2019-07-23 | Intel Corporation | Intelligent packet aggregation |
US10346327B2 (en) * | 2017-03-22 | 2019-07-09 | International Business Machines Corporation | Timer placement optimization |
US10360034B2 (en) * | 2017-04-18 | 2019-07-23 | Samsung Electronics Co., Ltd. | System and method for maintaining data in a low-power structure |
US10171110B1 (en) * | 2017-07-03 | 2019-01-01 | Seagate Technology Llc | Sequential power transitioning of multiple data decoders |
US11726324B2 (en) * | 2018-08-31 | 2023-08-15 | Apple Inc. | Display system |
US11756274B1 (en) * | 2022-07-07 | 2023-09-12 | Snap Inc. | Low-power architecture for augmented reality device |
WO2024033775A1 (en) * | 2022-08-06 | 2024-02-15 | Nanogrid Limited | Systems and methods for low power state management |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060130062A1 (en) * | 2004-12-14 | 2006-06-15 | International Business Machines Corporation | Scheduling threads in a multi-threaded computer |
TW200912738A (en) * | 2007-07-18 | 2009-03-16 | Advanced Micro Devices Inc | Multiple-core processor with hierarchical microcode store |
US20100064154A1 (en) * | 2008-09-05 | 2010-03-11 | Broadcom Corporation | Operating system (os) virtualisation and processor utilization thresholds for minimizing power consumption in mobile phones |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7426648B2 (en) | 2004-09-30 | 2008-09-16 | Intel Corporation | Global and pseudo power state management for multiple processing elements |
US8108863B2 (en) | 2005-12-30 | 2012-01-31 | Intel Corporation | Load balancing for multi-threaded applications via asymmetric power throttling |
US9027027B2 (en) | 2008-06-09 | 2015-05-05 | Microsoft Technology Licensing, Llc | Thread management based on device power state |
US8954977B2 (en) | 2008-12-09 | 2015-02-10 | Intel Corporation | Software-based thread remapping for power savings |
US8762994B2 (en) * | 2010-08-26 | 2014-06-24 | Intel Corporation | Power-optimized interrupt delivery |
-
2010
- 2010-12-21 US US12/974,086 patent/US8990602B2/en not_active Expired - Fee Related
-
2011
- 2011-12-07 WO PCT/US2011/063853 patent/WO2012087587A2/en active Application Filing
- 2011-12-20 TW TW106114987A patent/TWI628599B/zh active
- 2011-12-20 TW TW100147457A patent/TWI564804B/zh not_active IP Right Cessation
- 2011-12-20 TW TW105131706A patent/TWI590162B/zh not_active IP Right Cessation
-
2015
- 2015-03-16 US US14/659,253 patent/US9454218B2/en active Active
-
2016
- 2016-09-27 US US15/277,944 patent/US9720488B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060130062A1 (en) * | 2004-12-14 | 2006-06-15 | International Business Machines Corporation | Scheduling threads in a multi-threaded computer |
TW200912738A (en) * | 2007-07-18 | 2009-03-16 | Advanced Micro Devices Inc | Multiple-core processor with hierarchical microcode store |
US20100064154A1 (en) * | 2008-09-05 | 2010-03-11 | Broadcom Corporation | Operating system (os) virtualisation and processor utilization thresholds for minimizing power consumption in mobile phones |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11023379B2 (en) | 2019-02-13 | 2021-06-01 | Google Llc | Low-power cached ambient computing |
TWI759656B (zh) * | 2019-02-13 | 2022-04-01 | 美商谷歌有限責任公司 | 用於進入低功率狀態之方法以及相關運算系統 |
US11599471B2 (en) | 2019-02-13 | 2023-03-07 | Google Llc | Low-power cached ambient computing |
TWI815323B (zh) * | 2019-02-13 | 2023-09-11 | 美商谷歌有限責任公司 | 用於進入低功率狀態之電腦可實施方法以及相關運算系統 |
Also Published As
Publication number | Publication date |
---|---|
US20120159221A1 (en) | 2012-06-21 |
TWI564804B (zh) | 2017-01-01 |
US9454218B2 (en) | 2016-09-27 |
TW201719399A (zh) | 2017-06-01 |
TWI590162B (zh) | 2017-07-01 |
TW201807572A (zh) | 2018-03-01 |
US20150192985A1 (en) | 2015-07-09 |
US20170017296A1 (en) | 2017-01-19 |
WO2012087587A3 (en) | 2012-08-23 |
WO2012087587A2 (en) | 2012-06-28 |
US8990602B2 (en) | 2015-03-24 |
TW201234270A (en) | 2012-08-16 |
US9720488B2 (en) | 2017-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI628599B (zh) | 用於使處理元件提早離開深度睡眠狀態的處理器和設備 | |
US11755099B2 (en) | Dynamic core selection for heterogeneous multi-core systems | |
AU2011276656B2 (en) | Apparatus, method, and system for improving power performance efficiency by coupling a first core type with a second core type | |
TWI742032B (zh) | 用於使用者等級執行緒暫止的方法、設備及指令 | |
US8549504B2 (en) | Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region | |
KR101524446B1 (ko) | 하드웨어 제한에 기초한 조절가능한 트랜잭션 크기를 이용하여 코드를 동적으로 최적화하는 장치, 방법 및 시스템 | |
TWI512448B (zh) | 用以啟用處理器等待狀態之指令 | |
TWI448897B (zh) | 監視在硬體中之記憶體存取的方法與設備、處理器及其系統 | |
TWI620121B (zh) | 具有原生切換機制之非對稱多核心處理器 | |
US20120185714A1 (en) | Method, apparatus, and system for energy efficiency and energy conservation including code recirculation techniques | |
EP2997462B1 (en) | Dynamic optimization of pipelined software | |
TW201342036A (zh) | 在運行狀態下藉由減少每個時脈的指令率的省電操作 | |
US20130346683A1 (en) | Cache Sector Dirty Bits | |
JP2015515687A (ja) | 高速キャッシュシャットダウンのための装置および方法 | |
US20140281382A1 (en) | Modified execution using context sensitive auxiliary code | |
US20100077145A1 (en) | Method and system for parallel execution of memory instructions in an in-order processor |