TWI605390B - 用於異質多核心系統之動態核心選擇技術(一) - Google Patents

用於異質多核心系統之動態核心選擇技術(一) Download PDF

Info

Publication number
TWI605390B
TWI605390B TW105101906A TW105101906A TWI605390B TW I605390 B TWI605390 B TW I605390B TW 105101906 A TW105101906 A TW 105101906A TW 105101906 A TW105101906 A TW 105101906A TW I605390 B TWI605390 B TW I605390B
Authority
TW
Taiwan
Prior art keywords
processor core
core
code
execution
performance
Prior art date
Application number
TW105101906A
Other languages
English (en)
Other versions
TW201616352A (zh
Inventor
吳佑風
胡世亮
埃德森 波林
王誠
Original Assignee
英特爾公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾公司 filed Critical 英特爾公司
Publication of TW201616352A publication Critical patent/TW201616352A/zh
Application granted granted Critical
Publication of TWI605390B publication Critical patent/TWI605390B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Description

用於異質多核心系統之動態核心選擇技術(一)
本發明係有關於處理器領域,及更特別係有關於最佳化電力及性能效率。
半導體處理及邏輯設計的進展已經許可存在於積體電路裝置上的邏輯數量增加。結果,電腦系統組態已經從一個系統單一或多個積體電路演進成多個核心、多個硬體執行緒、及多個邏輯處理器存在於個別積體電路上。處理器或積體電路典型地包含單一實體處理器晶粒,於該處該處理器晶粒可包括任何數目的核心、硬體執行緒、及邏輯處理器。
在積體電路上數目不斷地增加的處理元件亦即核心、硬體執行緒、及邏輯處理器許可並行地完成更多任務。但採用全部無序核心的處理器,於某些情況下,可能導致電力無效率及/或性能無效率。結果,已經發展出若干硬體-軟體共同設計系統來因應該電力-性能效率問題。於該系統中,可利用寬廣簡單有序處理器,同時軟體最佳化及排程程式來有效地在該有序硬體上執行。
但硬體-軟體共同設計系統典型地係聯結兩項不 良效應:(1)利用二進制轉譯器來轉譯及/或最佳化代碼可能減慢具有短的回合任務及小的反應時間限制之某些應用(二進制轉譯器玻璃鉗);及(2)針對較為適合並行執行的若干類型程式,有序處理器的表現可能不佳(有序玻璃鉗)。
一種包含數個指令儲存於其上之一或多個機器可讀儲存媒體,該等指令回應於由一電腦系統之一或多個處理器執行,致使該一或多個處理器用以:於該一或多個處理器之一第一處理器核心上執行程式代碼;基於一或多個效能度量決定由一第二處理器核心執行該程式代碼之一效能,其中該第一處理器核心係屬一第一型別,且該第二處理器核心係屬與該第一型別相異的一第二型別;以及回應於該第二處理器核心之該效能係優於該第一處理器核心之一效能的一決定,將該程式代碼之執行從該第一處理器核心切換至該第二處理器核心。
100、200、300‧‧‧處理器
101、102、201、202、301、302‧‧‧ 核心
101a-b、102a‧‧‧硬體執行緒、執行緒插槽、架構態暫存器、邏輯處理器
105‧‧‧匯流排介面
110‧‧‧較高階快取記憶體
120‧‧‧分支目標緩衝器(BTB)及指令轉譯緩衝器(I-TLB)
121‧‧‧提取邏輯、提取單元
125、126‧‧‧解碼邏輯
130‧‧‧重新命名/配置器邏輯
135‧‧‧重新排序器/報廢單元、無序單元
140‧‧‧排程器/執行單元
141‧‧‧執行單元
150、151‧‧‧低階資料-快取記憶體及資料轉譯緩衝器(D-TLB)
170‧‧‧控制器中樞器
175‧‧‧系統記憶體
210‧‧‧代碼分配模組
303‧‧‧代碼快取記憶體
304‧‧‧最佳化熱代碼
305‧‧‧監視器模組
310‧‧‧最佳化/轉譯模組
315‧‧‧對映模組
316‧‧‧欄位、參考值
317‧‧‧欄位、最佳化熱代碼參考值
320‧‧‧協作模組
325‧‧‧程式代碼
327‧‧‧熱部分/區域、熱代碼區域
400‧‧‧方法
402-416、502-530‧‧‧處理方塊
500‧‧‧雙核心預測處理
601-609‧‧‧時間表示型態
第1圖顯示包括兩個異質核心之一處理器之一實施例。
第2圖顯示包括一本機核心、一軟體管理核心、及一代碼分配模組之一處理器之一實施例。
第3圖顯示用於在核心間分配代碼以達成最大效能及最大節電之一處理器之一實施例。
第4圖顯示針對在一無序核心與一有序核心間分配代碼以達成最大效能及最大節電之方法流程圖之一實施 例。
第5圖顯示針對在一無序核心與一有序核心間分配代碼以達成最大效能及最大節電之方法流程圖之另一實施例。
第6圖顯示依據本發明之一實施例核心切換操作及額外負擔。
異質計算策略係整合多個核心,其中各個核心係有效執行某個代碼,但執行另外某個代碼即無效。運行時間軟體(SW)及硬體(HW)協作地將該輸入程式劃分成為適合不同核心的代碼節段,將各個代碼節段在最適合的核心上執行,同時讓其它核心處於低電力態,來達成高效能、低耗電及耗能。此種系統之一個實例係由至少一個寬有序核心及至少一個窄無序核心組成,及依據本發明之實施例,此一異質系統可達成改良的無序核心效能,同時只耗用部分能量及電力。此類型計算系統的主要挑戰係快速地識別程式表現改變,及在運行時間有效地切換至適當核心。本發明之實施例使用運行時間軟體及硬體來將在同一程式的不同代碼節段之執行切換成最適當核心,及顯著地加速單一執行緒程式的表現。
於後文描述中,陳述無數特定細節諸如特定處理器核心型別、特定處理器組態、特定熱代碼區識別演算法、特定儲存轉譯/最佳化代碼結構、特定硬體/軟體間之任務劃分、特定處理器單元/邏輯等之實例以供更徹底瞭解本發 明。但熟諳技藝人士顯然易知此等特定細節無需採用來實施本發明。於其它情況下,眾所周知之組件或方法諸如特定及其它處理器架構、針對所描述演算法之特定邏輯電路/代碼、特定代碼體現、特定二進制轉譯細節、及微處理器之其它特定操作細節並未以細節描述以免不必要地遮掩本發明。
於一個實施例中,此處描述之方法及設備係針對以軟體管理核心體現本機核心來達成最大效能與節電。更明確言之,核心間之協作主要係就一無序核心與一有序共同設計核心而討論。但此處描述之設備及方法並非囿限於此,原因在於其可以代碼在異質核心間之任一種分配而體現。舉例言之,此處描述之代碼分配方法及設備可利用兩個無序核心體現獨特指令集架構(ISA)。此外,此等核心間之協作經常係以硬體機構與代碼/軟體間之分裂討論。但硬體、軟體、及/或韌體之任何摻混或排它使用皆可利用來體現後述方法及設備。
參考第1圖,例示說明包括多個核心之處理器之實施例。處理器100包括任一種處理器,諸如微處理器、嵌入式處理器、數位信號處理器(DSP)、網路處理器、或執行代碼之其它裝置。於一個實施例中,處理器100包括屬不同型別的至少兩個核心,亦即核心101及102。但處理器100可包括任何數目之處理元件。
於一個實施例中,處理元件係指執行緒單元、執行緒插槽、處理器單元、脈絡、邏輯處理器、硬體執行緒、 核心、及/或可保有處理器之一態諸如執行態或架構態的任何其它元件。換言之,於一個實施例中,處理元件係指可獨立地與代碼相聯結的任何硬體,諸如軟體執行緒、作業系統、應用程式、或其它代碼。實體處理器典型地係指積體電路,可能包括任何數目之其它處理元件,諸如核心或硬體執行緒。
核心經常係指位在可維持獨立架構態的積體電路上之邏輯,其中各個獨立維持架構態係與某些專用執行資源相聯結。與核心相反地,硬體執行緒典型地係指位在可維持獨立架構態的積體電路上之任何邏輯,其中該等獨立維持架構態係共享接取執行資源。如圖可知,當某些資源為共享而其它資源為一個架構態所專用時,硬體執行緒與核心間的命名重疊。但經常地核心及硬體執行緒由作業系統視為個別邏輯處理器,於該處作業系統能夠個別地排程在各個邏輯處理器上的操作。
如第1圖例示說明,實體處理器100包括兩個核心,亦即核心101及102。此處,核心101及102被考慮為異質核心,亦即具有不同組態、函式單元、及/或邏輯的核心。於一個實施例中,核心101包括無序處理器核心,而核心102包括有序處理器核心。但核心101及102可個別地選自任何型別的核心。但為了更進一步討論,第1圖例示說明函式單元將以進一步細節敘述如下。
如圖所示,核心101包括二硬體執行緒101a及101b,也可稱作為硬體執行緒插槽101a及101b。相反地, 核心102包括一個硬體執行緒102a。因此於一個實施例中,軟體實體諸如作業系統可能將處理器100視為三個分開處理器,亦即可並行地執行三個軟體執行緒之三個邏輯處理器或處理元件。另外,軟體實體可只將處理器100視為兩個分開處理器,亦即執行緒插槽101a及101b,而所描述的代碼分配機制管理代碼在核心102上的執行。
第一執行緒係與架構態暫存器101a相聯結,第二執行緒係與架構態暫存器101b相聯結,及第三執行緒係與架構態暫存器102a相聯結。如圖所示,架構態暫存器101a係在架構態暫存器101b複製,故可針對邏輯處理器101a及邏輯處理器101b儲存個別架構態/脈絡。架構態暫存器102a可與暫存器101a、101b相同。或暫存器102a另外可以是核心102架構的獨特暫存器。於核心101,也可針對執行緒101a及101b複製其它小型資源,諸如指令指標器或重新命名配置器邏輯130的重新命名邏輯。有些資源諸如重新排序/報廢單元135的重新排序緩衝器、指令轉譯緩衝器(ITLB)120、載入/儲存緩衝器、及佇列可經由劃分而共享。其它資源諸如通用內部暫存器、頁-表基礎暫存器、低階資料快取記憶體及資料-TLB 150、執行單元140、及部分無序單元135可能可完全共享。
處理器100常包括其它資源,該等資源可全然共享、透過劃分共享、或由/給處理元件專用。於第1圖中,例示說明具有處理器的說明性邏輯單元/資源之純粹處理器實例之實施例。注意處理器可包括或刪除任何此等函式 單元,以及含括圖中未闡釋的任何其它已知之函式單元、邏輯、或韌體。如圖所示,核心101係例示說明為簡化無序(OOO)處理器核心。OOO核心包括分支目標緩衝器(BTB)120來預測欲執行/採行的分支,及指令-轉譯緩衝器(I-TLB)120來儲存針對指令之位址轉譯實體。
核心101進一步包括解碼模組125耦接至提取單元121來解碼所提取的元件。於一個實施例中,提取邏輯包括與執行緒插槽101a、101b分別地相聯結的個別排序器。通常核心101係與第一指令集架構(ISA)相聯結,ISA界定/載明可在處理器100上執行的指令。此處,經常構成第一ISA之一部分的機器代碼指令包括部分指令(稱作為操作碼),指稱/載明欲執行的指令或操作。解碼邏輯125包括電路,該電路從操作碼而識別此等指令,於管線上繼續發送已解碼指令來如由第一ISA定義般處理。
於一個實例中,配置器及重新命名器區塊130包括配置器來保留資源,諸如暫存器檔案來儲存指令處理結果。但執行緒101a及101b可能可無序執行,於該處配置器及重新命名器區塊130也保留其它資源,諸如重新排序緩衝器來追蹤指令狀態。單元130也可包括暫存器重新命名器來將程式/指令參考暫存器重新命名為處理器100內部其它暫存器。重新排序器/報廢單元135包括組件諸如前述重新排序器緩衝器、載入緩衝器、及儲存緩衝器,來支援無序執行及後來已無序執行的指令之有序報廢。
於一個實施例中,排程器及執行單元區塊140包 括排程器單元來排程在執行單元上的指令/操作。舉例言之,浮點指令係在執行單元之具有可用浮點執行單元之一埠上排程。與執行單元相聯結的暫存器檔案也係經含括來儲存資訊指令處理結果。執行單元之實例包括浮點執行單元、整數執行單元、跳躍執行單元、載入執行單元、儲存執行單元、及其它已知執行單元。
低階資料快取記憶體及資料位址轉譯詢查/側邊緩衝器(D-TLB)150係耦接至執行單元140。資料快取記憶體係儲存可能保持在記憶體同調狀態的晚近使用的/操作的元件,諸如資料運算元。D-TLB係用來儲存晚近虛擬/線性至實體位址轉譯。至於特例,處理器可包括頁面表結構來將實體記憶體打斷成多個虛擬頁面。
如前述,於一個實施例中,核心102包括有序共同設計核心。結果,第1圖例示說明簡化之有序核心之管線。此一管線包括提取單元121、解碼單元126、執行單元141、及低階資料快取記憶體151。此等單元可以與核心101中的相對應單元之類似方式工作。又,於有序核心中,指令/操作係以程式順序執行,而非如於核心101的潛在無序執行。於一個實例中,無序核心101係指本機核心,而有序核心102係指共同設計核心。另外,有序核心102為本機核心,而無序核心101為共同設計核心。
此處核心101及102共享接取高階或更高快取記憶體110,其係快取晚近提取的元件。注意高階或更高係指快取層級增高或更遠離執行單元。於一個實施例中,高階 快取記憶體110乃最末層級資料快取記憶體,處理器100上記憶體階層關係中的最末快取記憶體,諸如第二或第二層級資料快取記憶體。但高階快取記憶體110並非囿限於此,原因在於其可能相聯結或含括指令快取記憶體。軌跡快取記憶體乃一型指令快取記憶體,反而可耦接在解碼器125後方來儲存晚近解碼的軌跡。
於所闡釋之組態中,處理器100也包括鏈接介面模組105來與處理器100外部之裝置通訊,諸如系統記憶體175、晶片組、北橋、或其它積體電路(包括單一積體電路體現諸如單晶片系統(SOC))。記憶體175可以是處理器100專用或與系統的其它裝置共享。記憶體175之常見實例包括動態隨機存取記憶體(DRAM)、靜態RAM(SRAM)、非依電性記憶體(NV記憶體)、及其它已知之儲存裝置。
於一個實施例中,基於最大化效能及功率,代碼在核心101與102間共享。識別在兩個核心101、102中之一者上表現較佳的代碼區域。結果,當遭遇/檢測得此等代碼區域中之一者時,該代碼區段係分配給適當核心。此等區域的識別係藉硬體、軟體、或其組合靜態地(代碼執行前,諸如透過程式輪廓分析)或動態地(代碼執行期間)完成。
於動態辦法之一個具體實施例中,基於其效能、節電、本機ISA、任何其它已知之處理考量、或其組合,一個處理器核心諸如核心101可被選用為內設核心來執行代碼。然後識別在核心101上執行不良或在核心102上執行較佳的內設代碼區域。隨後當遭遇該等識別代碼區段時,該 等區段經分配給核心102來執行。注意該等區域在核心102上執行可包括對暖機核心101的臆測預先執行、該等區域在核心102上串列執行而其它區域在核心101上執行,取決於該等區域之結果,或該等區域之並列、並行執行伴以其它代碼在核心102上執行。
於靜態辦法之一個實例中,編譯器或使用者可識別在一個核心或另一核心上執行較佳的代碼區段,諸如帶有指令或畫界。此處核心101執行代碼直至遭遇此種指令。或係回應於來自核心102之監測,或藉單獨引發(觸發)核心102,然後基於所遭遇之指令,所識別之代碼區段在核心102上執行。
於若干實施例中,在一個核心或另一核心較佳執行的代碼區段之識別係動態地或靜態地進行,本機代碼係轉譯及/或最佳化成在另一核心上執行。舉例言之,假設核心101包括認知第一ISA型別的解碼邏輯125,及核心102包括認知第二ISA型別的解碼邏輯126。於此種情況下,若第一ISA型別的代碼區域係欲在核心102上執行,則該代碼區域係轉譯成欲在核心102上執行的第二ISA型別。注意ISA型別間的轉譯純粹為例示說明。取而代之,欲在核心101上執行的無序最佳化代碼可以重新最佳化來在有序核心102上執行。於此種情況下,核心102可包括與核心101相同的ISA或該ISA之一子集。但最佳化可在代碼上執行來確保在簡易寬有序核心上有效地執行。
核心101與核心102間協作來有效地分配代碼可 在硬體、韌體、軟體、或其組合體現。有關識別代碼區域之動態辦法之前述實例係進一步經檢驗來例示說明協作機制之具體實施例。於該實例中,呈本機格式的程式代碼係經最佳化來在無序核心101上執行。於一代碼區域或該程式代碼之執行期間,與核心101及/或核心102相聯結的監視器硬體可利用來決定與核心101執行代碼區域有關的效能。另外,代碼諸如軟體、OS代碼、微碼、或其它代碼可在核心102上執行來決定/監測核心101執行該代碼區域之效能。若決定該代碼區域在核心102上執行為較佳,則硬體、軟體、韌體或其組合可用來轉譯及/或最佳化代碼區域來在核心102上執行。
結果,當核心101再度遭遇該代碼區域,亦即指令指標器指向代碼區域、識別該代碼區域之識別符指令係經提取或解碼、或檢測得另一種識別一代碼區域之方法時,該代碼區域之轉譯/最佳化版本係在核心102上執行。於一個實施例中,該代碼區域在核心102上執行期間,核心101可並行地執行其它代碼區域來提高總程式執行效能。注意並行或平行執行也可包括在核心101、102上執行分開的軟體執行緒。
相反地,執行緒可在核心101、102上管線化。作為此種情況之實例,假設二軟體執行緒各自包括多個代碼階段(熱、冷等)。此處來自第一執行緒的冷代碼可在核心101上執行,而當遭遇熱區域時,轉譯熱區域係在核心102上執行。該轉譯熱代碼區域在核心102上執行期間,來自第二執 行緒的冷代碼可在核心101上執行。於核心102上,當該第一轉譯熱代碼執行完成時,然後開始來自第二軟體執行緒的另一熱區域的執行。如從實例可知,代碼階段可在各個核心上交插,結果導致管線化型執行。於另一個實施例中,相對於兩個核心,代碼可循序地執行,諸如代碼區域在核心101上執行,識別的代碼區域在核心102上執行,及然後接續地另一代碼區域在核心101上執行。
此外,即便當一代碼區域最初係識別為在核心102上執行,也可監測該項執行效能。然後在二核心上執行的效能經考慮來決定哪個核心是最適合執行該代碼區域來達成最大效能及節電。舉例言之,若一代碼區域係識別為在核心102上執行的轉譯代碼,但在核心102上的效能係低於在核心101上的效能(或權衡在核心102的效能增益並不超過在核心201上執行的節電),則當隨後遭遇時該代碼可重新分配給核心101。
第1圖例示說明具有不同模組、單元、及/或邏輯表示型態之處理器實例之摘要邏輯視圖。但須注意利用此處描述之方法及設備的處理器無需包括圖中例示說明之單元。及,處理器可刪除部分或全部所示單元。此外,大部分前文討論係述及無序處理器核心及有序處理器核心。但如前述,二處理器核心可以是異質核心之任何版本,諸如本機核心及軟體管理核心。此外,第1圖只闡釋兩個核心;但處理器可包括任何核心數目,諸如多個同型核心、及多於兩個彼此不同型別的核心。
第1圖也例示說明以點對點方式以一介面耦接至外部記憶體控制器(控制器中樞器170)之處理器之一實施例。但許多目前處理器已經開始含括具有環狀組態來互連多個核心之處理器上記憶體介面模組,亦即晶片上模組,以及共享快取記憶體及其它介面。雖然於圖中未顯示,但於一個實施例中,處理器100包括環狀互連體來耦接核心、快取記憶體、及記憶體控制器組件。
此處,快取代理器係用來管理實體分散式快取記憶體之一截割片。舉個實例,各個快取組件欲管理共同定位核心-亦即該快取代理器相聯結的核心-之快取記憶體之一截割片,用以管理該快取記憶體之分散式截割片。相當類似快取代理器處理環狀互連體上的資料流量及介接快取截割片,核心代理器/組件係處理資料流量及介接核心。此外,裝置驅動程式可耦合記憶體控制器介面邏輯(MCIL)及/或其它控制器來介接其它模組、此等記憶體及/或圖形處理器。
參考第2圖,例示說明在二核心間分配代碼之一代碼分配模組之一實施例。於一個實施例中,核心201、202為異質核心。舉例言之,核心201為適用於執行偏離原先程式順序之代碼的無序(OOO)核心,及核心202係適用於以程式順序執行代碼之有序(或串列)核心。其它核心型別之非排它列表實例包括:本機核心、非本機核心、軟體管理核心、本機ISA核心、轉譯ISA核心、共同設計核心、臆測執行核心、及非臆測執行核心。
於一個實施例中,代碼分配模組210係基於最大化效能及節電而在核心201與202間分配代碼。如此處使用之模組可指硬體、軟體、韌體或其組合。此外,模組、單元、或邏輯可集中在核心或處理器,以及可分散遍布其中。舉例言之,代碼分配模組210可包括分配代碼,諸如微碼或軟體保有在與核心201、核心202、處理器200、或含括處理器200之系統相聯結的儲存裝置。此處,分配代碼當執行時係進行代碼分配。相反地,代碼分配程序可藉硬體、軟體、韌體或其組合管理。
於一個實施例中,代碼分配模組210係用來動態地將程式代碼之執行從一個核心切換至另一個核心。動態切換程式代碼將參考第4圖及第5圖容後詳述。但作為本章節討論之一具體實施例,程式代碼可包括任何欲以處理元件執行的任何代碼,諸如二進制碼或機器碼。代碼之熱部分可指稱基於考量諸如功率、效能、產熱、其它已知之處理器度量、或其組合,代碼之一部分較為適合在一個核心上執行優於另一核心。此處,假設核心201乃本機執行該程式代碼之內設核心,則程式代碼之熱部分包括決定較為適合在核心202上執行的代碼部分。於該實施例中,於該處核心201為OOO核心及核心202為有序核心,則代碼之熱部分可指較為適合在串列核心202上執行的程式代碼之熱點,其可能有更加可用的用以執行高度重複出現區段之資源。舉個實例,代碼之熱部分係藉代碼之該部分之重複出現樣式、或若干其它已知度量,諸如指令計數或週期計數識別。 經常有高重複出現及可預測延遲樣式的代碼區段可經最佳化來更有效地在有序核心上執行。重要地,於本實例中,冷代碼(低重複出現)係分配給本機OOO核心101,而熱代碼(高重複出現)係分配給軟體管理的有序核心102。
代碼之熱部分可經靜態地、動態地、或其組合識別。於第一情況下,編譯器或使用者可決定程式代碼之一區段為熱代碼。此處,熱代碼識別符指令可畫界一代碼區段為熱區段,亦即欲在核心202上執行而非在核心101上執行。於一個實施例中,核心201中的解碼邏輯係適用於解碼得自該程式代碼之一熱代碼識別符指令,其係識別該程式代碼之熱部分。此種指令之提取或解碼可觸發核心202上之代碼熱區段的轉譯及/或執行。於此一實例中,代碼分配模組210包括解碼邏輯來檢測該熱代碼檢測指令。及模組210也包括其它硬體及/或軟體來進行轉譯/最佳化,以及熱代碼在核心202上的執行。另外,熱代碼區段可經預轉譯/最佳化來在核心202上執行。
於另一個實施例中,代碼分配模組210動態地(於執行期間)識別程式代碼的熱點/區域。於一個實施例中,含括於核心201及/或核心202的硬體係用來輪廓描繪程式代碼在核心諸如核心201上的執行。基於該輪廓特性,亦即與執行相聯結的電力及/或效能度量,程式代碼之一區域可識別為熱代碼。類似於硬體之操作,監測代碼可在一個核心諸如核心202上執行來進行在另一個核心諸如核心201上執行之程式代碼的監測/輪廓描繪。注意此種監測代碼可以是 維持在處理器200內部之核心內的儲存結構或保有於含括處理器200之系統的代碼。舉例言之,監測代碼可以是維持於核心201、核心202、或處理器200之儲存結構的微碼或其它代碼。及監測代碼可藉傳統執行單元及處理器200上的其它韌體或邏輯執行。
至於又另一實例,對熱代碼作靜態識別作為暗示。但程式代碼執行之動態輪廓描繪可忽略代碼之一區域的靜態識別為熱;此型靜態識別俗稱為編譯器或使用者暗示,可考慮動態輪廓描繪來決定哪個核心係適用於代碼分配。此外,如同動態輪廓描繪之本質,代碼之一區域識別為熱並不限制該代碼區段經常性地被識別為熱。舉例言之,假設程式代碼係在無序核心201上執行。在核心202上執行的監視器代碼監測核心201執行該程式代碼之一區段的效能層級。基於該體現,若核心201上的效能經測定為比較在核心202上執行為夠低,及/或代碼區段在核心201上之重複出現樣式係夠高而可被預測來隱藏核心過渡額外負擔;則該代碼區段被識別為熱。於轉譯及/或最佳化後,該代碼區段之轉譯版本係在核心202上執行。類似於監測在核心201上執行,可在核心202上監測代碼之轉譯版本的執行,諸如透過效能監測代碼的執行。若核心202上的效能比核心201更低,則可動態地逆轉代碼區段之識別(熱代碼區段可重新標示為冷代碼)。
一旦代碼之一區段、一點、或一區域被識別為熱,則於一個實施例中,代碼分配模組210最佳化及/或轉 譯該代碼熱區段來獲得最佳化/轉譯熱代碼。於一個實施例中,轉譯及/或最佳化代碼諸如二進制轉譯代碼係保留於核心202之儲存邏輯。舉個實例,二進制轉譯代碼可以是保留在核心202的微碼之一部分。轉譯/最佳化代碼當執行時轉譯/最佳化該代碼區段用以在核心202上執行。於一個實施例中,核心201、202可辨識相同ISA或其子集,於該處轉譯/最佳化只是轉譯/最佳化代碼來更有效地在核心202上執行。於另一個實施例中,核心201、202辨識不同ISA,於該處轉譯包括將該代碼區域從可由核心201辨識的一個ISA,轉譯成可由核心202辨識的另一個ISA。雖然轉譯/最佳化係參照轉譯/最佳化代碼之執行討論,但即便透過排它硬體,可利用轉譯/最佳化代碼之任一種已知機轉。
於一個實施例中,當遭遇以核心201識別熱代碼區段時,該熱代碼(其轉譯版本)係在核心202上執行。可利用決定何時遭遇熱代碼區域之任一種已知觸發。數個高階實例包括:遭遇/參照與該代碼區域相聯結的一指令位址,提取/解碼/排程/執行一指令識別一代碼區段為熱代碼,提取/解碼/排程/執行一指令指示熱代碼之轉譯版本係在另一個核心上執行,來自監視器之外部觸發指示已經遭遇一熱代碼區域等。
至於一具體實施例,代碼分配模組210包括在硬體、軟體、或其組合體現的監視器模組。當該監視器模組識別一熱代碼區域或將該熱區域轉譯成一轉譯區域時,該監視器模組登錄與該熱代碼區域相聯結的一指令位址。此 一登錄可包括該指令位址與轉譯代碼區域之位置的相聯結。然後,當指令指標器(程式計數器)隨後述及該指令位址時,從所登錄的指令位址決定已經遭遇一熱代碼區域。注意此處可使用任一型檢測,諸如處理該遭遇事件之同步或異步中斷樣式。此外,硬體、微碼、及/或韌體可直接地處理遭遇一熱代碼區段而未做仿中斷處理,亦即觸發事件不被處理器服務。注意核心101及102可共享某些硬體結構,諸如對映結構來識別被登錄為熱代碼之位址。
回應於在核心201遭遇一熱代碼區段,該熱代碼區段之轉譯及/或最佳化版本係在核心202上執行。儘管熱代碼區段如何識別及遭遇在核心201,但可利用允許代碼在另一個核心上執行之任一種已知方法。於一個實施例中,協作模組係用來允許如此執行。舉例言之,核心201、202可共享某些硬體結構及/或包括通訊頻道來共享資訊。舉個實例,核心101、102可共享一資料快取記憶體,因此當執行從核心201遷移至核心202時,資料並不實體移動,反而已經係駐在該共享快取記憶體。同理,於一個實施例中,暫存器檔案諸如陰影暫存器檔案係在核心201與202間共享,故暫存器狀態(脈絡)無需從一個核心遷移至另一個核心。至於替代之道,替代共享一暫存器檔案,可使用一高速互連體來將脈絡或其部分從一個核心實體上遷移至另一個核心。此外,不常見轉移軟體可用來執行此項轉移。
舉個實例,輸入熱代碼區段的輸入值係從核心201移轉至核心202來支援該熱代碼區段之在核心202上執 行。於執行後,然後輸出值移轉回核心201。於一個實施例中,只移轉來自代碼區段的識別輸入/輸出值,亦即部分脈絡交換。注意此等輸入值可由使用者(軟體/編譯器)及/或由硬體/韌體演算法識別。此處,直接存取硬體可適用於讀取核心201內來自暫存器、緩衝器、或其它結構的輸入值,及將該等值寫至核心202。相反地,相同的或相異的硬體可用來從核心202讀取值及將該等值寫至核心201。但若識別此等值變得太過煩瑣,則可進行整個脈絡交換、複製、或共享來在核心201與202間提供數值。
其次參考第3圖,闡釋用以在多個核心間分配代碼來達成最大效能及節電之處理器之實施例。如前述,處理器300包括兩個處理器核心;各自屬不同核心型別。舉個實例,核心301為本機無序(OOO)處理器核心,而核心302為軟體管理之有序處理器核心。核心301及302可但非必要要求識別不同的ISA型。實際上,核心302可識別核心301的ISA之一子集。或者,核心302可包括部分重疊核心301的ISA之一分開ISA。如前述,核心或處理器經常係藉解碼該核心或處理器內的硬體/軟體而與一ISA亦即所識別指令之定義相聯結。
於一個實施例中,監視器模組305係監測本機程式代碼325在本機OOO核心301上的執行;透過此一監測,監視器模組305係識別程式代碼325之一熱部分/區域327。監視器模組可包含硬體、軟體、或其組合。於一個實施例中,監視器模組305包括硬體來監測執行。舉個實例,硬體 包括微架構鉤及/或架構鉤,諸如報廢推開標籤/計數器來測量報廢推開、指令計數器來計數指令數目、總軌跡執行測量邏輯來測量總執行長度及/或時間、重複出現計數器來計數一代碼區段被執行的次數等來決定程式代碼325執行期間的效能/功率度量。此型硬體可位在積體電路/處理器之任一部分,諸如無序核心301內部,有序核心302內部,及積體電路之不含括在OOO處理器核心301或有序處理器核心302內部的一非相聯結部分內。
於另一個實施例中,監視器模組305包括軟體諸如監視器代碼,該監視器代碼當執行時係監測程式代碼325之執行及識別程式代碼325之一熱區域327。至於一個具體實施例,處理器300包括儲存結構,諸如唯讀記憶體(ROM)結構、可規劃邏輯等來保有代碼、微碼、或機器代碼,該等代碼當執行時使得監測發生。但監視器代碼可儲存於與核心301、302相聯結的任何機器可讀取媒體。注意使用執行一詞不僅限於藉傳統執行單元執行,反而可指藉與處理器300相聯結的硬體或可規劃邏輯執行,諸如以韌體執行微碼。此處,所執行的監視器代碼可執行與可藉硬體測量之相同的重複出現、電力、及效能度量之監測。
舉個實例,監測硬體及/或代碼追蹤/決定該程式代碼之代碼區段的重複出現樣式。舉個簡單實例,資料結構聯結代碼區段(代碼區域327)之參考值諸如指令位址與該指令位址/代碼區段已經在核心301上執行的次數計數值。注意該計數值可與絕對計數值(總計數值)或暫時計數值(一 段時間的計數值)相聯結。
於一個實施例中,監視器模組305係適用於識別/檢測程式代碼325之一熱部分327。於一個實例中,監視器模組305係測量該程式代碼325之熱部分327在OOO處理器核心301上執行期間的一或多個效能度量。及監視器模組305係識別該程式代碼325之熱部分327回應於在OOO處理器核心上的效能度量係低於臨界值。效能度量之非排它的例示說明列表包括:指令報廢推開、執行之指令數目、執行代碼區域之時間量、遭遇/執行代碼區域之次數、代碼區域執行期間之耗電量、代碼區域執行期間耗用在不同功率態之時間量、代碼節段執行期間之熱密度等。
運用前述實例中之一者,假設OOO核心301正在執行程式代碼325。正在執行監視器代碼來決定程式代碼325區域在核心301上執行的次數。於一個實施例中,當該計數值符合或超過一臨界值時,監視器模組305識別/決定該區域327乃熱代碼。若使用3臨界值,則當在核心302上執行的監視器代碼檢知熱區域327係在核心301上再度第三次執行時,區域327被識別為代碼之一熱區域。決定重複出現樣式之特例可經外推來瞭解相似的處理程序亦即計數、相對於臨界值作比較、及識別可採用在任何測量得之效能度量。此外,決定效能度量並非限於單純計數,反而可包括用以決定在核心、處理器、或電腦系統中的執行或節電效能之任一種已知演算法。
但識別程式代碼325內部的熱區域327並非限於 動態效能監測。反而可運用編譯器或靜態程式分析來決定可能地更佳適合在有序核心302上執行的代碼區段。舉例言之,假設程式分析顯示熱區域327可能重複執行數次。回應於此項發現,編譯器或使用者可插入將一代碼區段識別為熱代碼的指令或畫界。因此,當核心301之解碼器遭遇此等指令時,識別該區域327為欲在核心302上執行的熱代碼。注意於若干實施例中,使用者可基於對程式的知識而識別此等代碼區域,無需經過深度程式分析。
於一個實施例中,回應於識別區域327為熱區域,代碼327係藉最佳化/轉譯模組310而最佳化或轉譯來獲得最佳化熱代碼304。類似於監視器模組305之操作,最佳化模組310可在硬體、軟體、韌體或其組合體現。舉例言之,轉譯及/或最佳化代碼可儲存於與核心302、核心301、或處理器300相聯結的結構。為了供例示說明,二進制轉譯代碼係儲存於與核心302相聯結的韌體。及該二進制轉譯代碼係執行來將熱區域327從本機核心301格式轉譯成核心302格式。注意轉譯可在ISA間或在其它格式間,而最佳化可包括最佳化代碼用以執行的任一種已知方法,諸如將代碼從在OOO核心301上並列執行最佳化成為在核心302上串列執行及其顛倒之任一種已知方法。
但二進制轉譯代碼用在韌體只是純粹例示說明,原因在於任何轉譯代碼或最佳化代碼可維持於電腦系統任一處,諸如微碼在核心302,或常規程式代碼在系統記憶體。及最佳化代碼可以任一種方式執行來轉譯或最佳化 熱區域327而獲得最佳化最佳化熱代碼304。實際上,可使用任一種已知方法或設備來轉譯或最佳化代碼用於一核心,諸如可使用已知可轉譯於目前軟體管理處理器內代碼之已知方法或設備。
無論係使用軟體、韌體、硬體或其組合,轉譯可以統計方式或動態執行。實際上,相當類似監測可在運行時間期間動態進行或在執行之前以統計方式完成,轉譯及最佳化可以類似方式進行。於該實例中,於該處編譯器或使用者識別熱區域327,最佳化及轉譯可在該點(於執行前)進行。此處,熱代碼識別符指令可利用來識別熱代碼區域327及載明最佳化/轉譯代碼304之位置二者。但無論區段327係在執行前或執行期間被識別為熱代碼。於若干實施例中,最佳化及轉譯係動態地(在運行時間期間)進行。
於一個實施例中,熱區域327係與其它執行並行地最佳化/轉譯。於一個實例中,核心302與核心301執行熱區域327並行地開始執行最佳化代碼。此處,監視器模組305檢測熱代碼區域327在核心301上執行,因而起始在核心302上的最佳化。當來自熱區域327之額外指令尚在核心301上執行中,核心302開始最佳化。結果,核心302主要地係與熱區域327在核心301上執行並行地最佳化熱區域327。於另一個實例中,與核心302最佳化熱區域327平行地,核心301執行程式代碼325之其它區段或其它互斥代碼。於另一個實施例中,熱區域327之最佳化係串列地進行。舉例言之,核心301執行熱區域327,及然後接著核心301或302最佳化熱 代碼區域327。
於一個實施例中,代碼327係儲存於其原先記憶體位置及在行進中藉核心302轉譯。但於大多數情況下,更有效地在執行前轉譯/最佳化整個代碼區段。結果,於最佳化/轉譯模組310最佳化核心諸如核心302之代碼後,最佳化熱代碼304係儲存於它處。最佳化熱代碼304之其它位置可以是記憶體的另一位置,諸如基本系統記憶體位置。但因熱代碼327經常係與頻繁執行相聯結,可能優異地維持最佳化版本304更接近核心302。因此於該具體實施例中,核心303包括代碼快取記憶體303來維持最佳化熱代碼304。注意代碼快取記憶體303可以是在核心302的分開快取結構;共享快取結構,諸如核心302的共享指令或資料快取記憶體;或與核心302相聯結的其它一般儲存結構。
回頭參考監視器模組305之討論,遭遇熱代碼區域327之一個實施例包括一程式計數器,指稱與一代碼區段相聯結的一指令位址。如圖所示,對映模組315係保有與最佳化熱代碼參考值317相聯結的一代碼區域參考值,諸如指令位址。主要地,對映模組315之一分錄將熱代碼區域327與其最佳化版本(最佳化熱代碼304)相聯結。至於具體實施例,參考值316包括與熱區域327相聯結的位址,諸如指令位址。於此種情況下,當核心301遭遇(程式計數器指向)保有於對映模組315之欄位316的指令位址時,則監視器模組305指出熱區域327已經遭遇且將在核心302上執行。協作模組320簡述如前及容後詳述,然後協助資料及/或脈絡移至 核心302用於執行。
前述實例中,決定已遭遇的且將在核心302執行的熱區域327係只在參考值316。欄位317與欄位316相聯結然後可用來快速決定區域327的最佳化熱代碼版本304係位在何處。結果,結果,欄位317可包括最佳化熱代碼304位置之任何參考值。此種參考值之數個簡單實例包括:代碼快取記憶體303中保有最佳化熱代碼304之一分錄位址、從代碼快取記憶體303起點至保有最佳化熱代碼之分錄304的偏移值、及與分錄304相聯結的實體或線性位址。對映模組315係例示說明於簡單表結構,可體現及/或維持於硬體、軟體、韌體或其組合。但聯結一個位置與另一位置之任一種已知方法皆可用來聯結熱代碼327與其最佳化版本。
雖然並未特別地例示說明,但部分監視器模組305組合對映模組315可形成觸發模組用來指示欲在核心302上執行的最佳化熱代碼304,而非本機代碼327在核心301上執行。舉個實例,當核心301之程式計數器移至下個指令位址時,觸發硬體檢查該位址相對於儲存在對映硬體表315的參考值。此處,假設該程式計數器指示參考值保有在欄位316的代碼區域327之該指令位址。然後,基於對映模組315的分錄,觸發硬體指示存在有代碼區域327之最佳化熱代碼304。結果,可忽略代碼區域327之在核心301上執行,原因在於已經存在有最佳化版本且將在核心302上執行。
於一個實施例中,核心301暫停執行(中止或變遷 為低電力態)直至核心302完成最佳化代碼之執行。但如此無法完整利用處理器300的處理容量。因此於另一個實施例中,當最佳化熱代碼304係在核心302上執行時,核心301交插另一個軟體執行緒(程式代碼325以外的代碼)之執行。舉又另一個實例,核心301可臆測地執行程式代碼325之其它部分,其主要進行欄外小幫手執行緒,或執行代碼325之不依靠代碼區域327無序的其它部分。
於一個實施例中,協作模組320提供核心301、302間之協作功能。舉個最簡單實例,協作模組320包括核心301、302間之一互連體來轉移資訊。但於另一個實施例中,協作模組包括其它硬體,該硬體可以是個別核心或獨有或共享來協助前述協作。舉例言之,核心302可共享核心301之一陰影暫存器檔案,使得當最佳化熱代碼304係在核心302上執行時,暫存器狀態從核心301完整脈絡切換至核心302無需執行。取而代之,於該種情況下,核心302可直接地存取該陰影暫存器檔案。但協作模組不只限於共享結構及/或互連體。實際上,協作模組320可包括硬體、韌體、軟體、或其組合來提供直接讀取及/或寫入存取至二核心301、302的暫存器、儲存結構、及緩衝器。結果,於一個實施例中,協作模組320可將執行最佳化熱代碼所需資料/暫存器值從核心301轉移至核心302。及也可將結果從核心302轉移回核心301而允許隨後在核心301上妥善執行。
雖然監視器模組305主要係就監測在本機核心301上的執行作討論,但於一個實施例中,監視器模組305 也可監測最佳化代碼在核心302上的執行。結果,監視器模組305可比較代碼區域327在核心301上的效能與最佳化版本304在核心302上的效能。又復,當核心302上的效能係低於核心301上的效能,或在核心302上效能增益比較耗電量增加為小時,則識別區域327為熱代碼的決定可逆轉。舉個實例,對映模組315之分錄指示此一決定被釋放或失效;使得下次核心301遭遇熱代碼327,監視器模組305不會檢測參考值316,及不指示區域327的最佳化熱代碼版本須在核心302上執行。要言之,逆轉將先前識別的區域327送回無序核心301。
至於更進一步驗證此一效能比較之具體實施例,假設基於高重複出現樣式及高指令執行計數值,代碼區域327被識別為熱代碼。結果,代碼327係藉駐在核心302上的二進制轉譯代碼最佳化而獲得最佳化代碼304。當最佳化代碼304係儲存於代碼快取記憶體303時,形成對映模組315之一分錄來聯結代碼區域327與最佳化版本304。當核心301下次遇到匹配欄位316的參考值之一參考值時,則在核心302上觸發最佳化代碼304的執行,替代在核心301上執行代碼區域327。注意協作模組透過轉移、共享、或脈絡交換而從核心301提供適當值至核心302。於核心302執行最佳化熱代碼304期間,相同效能度量亦即指令執行計數值,係藉監視器模組305追蹤。若該指令執行計數值係小於代碼區域327之在核心301上執行,則區域327之現狀被識別為未來繼續的熱代碼。但若在核心302上的指令執行計數值為較長或 檢測得顯著功率增加,則如前文說明,可逆轉識別區域327作為熱代碼。
除了提供核心301與核心302間之通訊外,協作模組320也可包括其它特徵結構來管理多個不同型別的核心。舉個第一實例,功率管理器體現功率演算法,來確保二核心301及302不會同時以最大功率操作。但此一實例純粹只供例示說明。及其它功率演算法可允許此種最大操作。至於另一個功率考量,於在核心301上執行的監測期間,核心302可駐在低於最大之功率態(低功率態)。舉例言之,當核心301係與執行其本身監測的機構相聯結時,則核心302無需完全啟動直到欲執行代碼之最佳化版本為止。結果由於藉著節電核心302直至核心302需要執行為止可實質上節電。相反地,當核心302正在執行最佳化熱代碼時,核心301可被減低啟動(置於低於最大值之功率態,諸如ACPI低功率態或休眠態)。
在不同核心間動態地切換執行涉及兩項挑戰:1)針對一給定代碼節段及時地且準確地預測最適當的核心,及2)在多個核心間有效地遷移執行。
於一個實施例中,程式在第一核心上執行可藉運行時間軟體及/或硬體識別(例如基於在代碼區域被分析的ILP),及然後目前核心的效能度量及/或統計資料可藉監視器模組305連續地校正來預測何時程式代碼的執行應切換至第二核心。此一辦法係強調於第4圖。因此一辦法係利用來自單一核心的資料來預測另一個核心之效能,故於一個 實施例中該辦法係稱作為「單核心預測」演算法。
轉向參考第4圖,例示說明在第一型之第一核心(諸如無序核心)與第二型之第二核心(諸如有序核心)間分配代碼而達成最大效能及節電之方法400之流程圖實施例。雖然第4圖之流程係以實質上串列方式例示說明,但流程可以不同順序及以並列執行。此外,各個流程可利用硬體、韌體、或透過程式代碼之執行進行。
監測於處理器中在無序(OOO)處理器核心上程式代碼之執行。於一個實施例中,述及程式代碼係指(1)編譯器程式動態地或靜態地執行來編碼其它程式代碼;(2)主程式諸如作業系統、超監督器、應用程式代碼、或其它軟體程式的執行;(3)與主程式代碼相聯結的其它程式代碼諸如存庫的執行;(4)可能並非與主程式直接相聯結的其它程式代碼諸如小幫手執行緒或其它任務的執行;或(5)其組合。
編譯器經常包括一程式或一程式集來將來源文字/代碼轉換成目標文字/代碼。通常,使用編譯器編譯程式/應用程式代碼係以多個階段完成,及通過來將高階程式語言代碼變換成低階機器或組合語言代碼。又,單一回合編譯器仍可用於單純編譯。編譯器可利用任一種已知之編譯技術,及執行任一種已知之編譯器操作,諸如辭彙分析、前處理、剖析、語意分析、代碼產生、代碼變換、及代碼最佳化。
大型編譯器常包括多個階段,但最常見此等階段係含括在兩大階段內:(1)前端,亦即通常於該處進行句法 處理、語意處理、及若干變換/最佳化,(2)後端,亦即通常於該處進行分析、變換、最佳化、及代碼產生。有些編譯器係指中端,中端係指編譯器的前端與後端間之敘述模糊處。結果,述及編譯器的插入、聯結、產生、或其它操作可在前述任一階段或任一回合以及在編譯器的其它階段或回合進行。
於一個實施例中,藉監視器模組305監測程式代碼之執行包含程式代碼執行時追蹤代碼節段/代碼區域多次。代碼區域可以群組指令/代碼之任一種已知方法決定。舉個實例,每次由OOO核心的程式計數器述及與一代碼區段相聯結的指令位址時,重複出現計數值遞增。若針對該代碼區段之重複出現計數值超過臨界值,則於一個實施例中該代碼區段被識別為熱代碼。
或結合重複出現樣式之決定,或分開地,監測程式代碼之執行可包括決定/追蹤與代碼區段相聯結的效能度量。如前文揭示,效能度量之實例可包括:指令報廢推開、執行之指令數目、執行代碼區域之時間量、遭遇/執行代碼區域之次數、代碼區域執行期間之耗電量、代碼區域執行期間耗用在不同功率態之時間量、及代碼節段執行期間之熱密度。又於程式代碼執行期間,可監測與處理器執行相聯結的任何已知度量或度量之組合。
於方塊402,程式代碼可在第一核心上執行。於一實施例中,第一核心可以屬第一型別,諸如窄無序核心。於方塊404,當第一核心執行該程式代碼時可監測第一核心 之效能。於方塊406,可收集效能上的統計資料。於一實施例中,統計資料可包括分支遺漏率、快取遺漏率等。於一實施例中,監測效能及收集統計資料可藉監視器模組305執行。於方塊408,至少部分基於在第一核心上執行程式代碼之效能及統計資料可預測在第二核心上執行程式代碼之效能。於一實施例中,第二核心可屬第二型別,諸如寬有序核心。另外,第一型可以是寬有序核心,而第二型可以是窄無序核心。於一實施例中,預測可體現為稱作「預測_效能」函式。於方塊410,若預測第二核心執行程式代碼之效能係優於監測得之第一核心執行程式代碼之效能,則可採行下列動作。
於方塊412,第二核心可從低功率態或「休眠」態被啟動。於該啟動期間第一核心仍然繼續執行程式。於方塊414,程式代碼之執行可從第一核心切換為第二核心。於方塊416,第一核心可被節電為休眠態。若第二核心之預測效能並不優於第一核心,則該程式代碼可在第一核心上繼續執行。於該方法之隨後迭代重複中,該方法中之第一核心與第二核心之位置可對調(例如使得先執行第二核心,監測第二核心之效能,收集有關第二核心之統計資料,預測第一核心之效能等)。於一實施例中,方塊404至416可藉代碼分配模組210進行。
函式預測_效能(核心號碼、效能_核心1、統計資料_核心1)利用目前核心執行效能及統計資料亦即效能_核心1及統計資料_核心1來預測在第二核心上執行之效能。若 該預測效能係高於目前核心上之效能,則執行被切換成另一個核心。此一辦法係植基於假設:可採用目前核心執行效能資訊來預測另一個核心之效能。直覺地,具有過多快取/分支遺漏的程式執行在窄無序核心上的表現較佳,原因在於窄無序核心藉無序地執行後述指令而可隱藏遺漏延遲。另一方面,具有高指令層級並行性(ILP)及低快取/分支遺漏的程式由於高執行帶寬故,在寬有序核心上的執行應更為有效。
於一實施例中,為了界定函式預測_效能,可在第一核心及第二核心二者上首先執行n塊代碼c1、...、cn,及分別地在二核心上收集其個別效能資訊(p11、p12、...、p1n)、(p21、p22、...、p2n)及統計資料(s11、s12、...、s1n)、(s21、s22、...、s2n)。然後可找到最匹配的函式F使得(F(p11,s11)、F(p12,s12)、...、F(p1n,s1n))-(p21、p22、...、p2n)及(F(p21,s21)、F(p22,s22)、...、F(p2n,s2n))-(p11、p12、...、p1n)為最小化。若最佳匹配之標準差小,可使用F作為函式預測_效能。但若標準差為高,則可能需要找出更高效能參數來提升預測準確度。
此一單核心預測辦法之一項優點為只使用目前核心執行統計資料來預測另一個核心之效能,而做決策時並不涉及另一個核心之效能及功率額外負擔。但此種辦法假設二核心的效能彼此緊密相關。於若干環境/組態中,二核心之效能只有疏鬆相關性,可能不存在良好匹配函式。因此期望有更一般性之方法。
於另一實施例中,雙核心預測法運用短時間在二核心觀察得之效能資訊來預測核心切換。更明確言之,「預測」可以規則間隔執行來取樣及比較二核心效能而決定是否切換給一不同核心執行。注意各項預測可涉及二核心交換:進行第一交換來從另一核心獲得效能資訊,及當在另一核心的效能不如第一核心故應切換執行回第一核心時發生第二交換。第一核心交換涉及啟動另一核心及暖機其微架構態用以執行,及第二交換只涉及核心節電。
為了減少核心交換之額外負擔,預測可分成兩項操作:「預測繼續」(Pcont)操作及「預測交換」(Pswit)。Pcont操作比較在目前核心收集的效能資訊與二核心之先前效能,來決定是否應在目前核心上繼續執行。若Pcont操作決定應在目前核心上繼續執行,則Pswit操作激勵另一核心來短時間跑該另一核心及比較二核心效能來決定執行是否應切換至另一核心。為了防止Pcont操作在同一核心上繼續執行過長時間,導入參數K來指示Pswit操作在一列中不可跳掉超過K次。又,每次跳掉Pswit操作,則先前效能藉膨脹因數膨脹,使得下個Pcont週期發現難以跳掉Pswit操作。
雙核心預測法500係顯示於第5圖。於一實施例中,S為取樣間隔(例如兩次預測間之週期數),M為收集各核心上效能之樣本長度(例如以週期數表示),PU為啟動第二核心之週期數,IPC為每個週期之指令數目,K為最大連續次數(K為自然數),N為連續次數(最初設定為0),及Prev_IPC為先前IPC(初步設定為MAX_FLOAT)。於一實施 例中,S、M、PU、K、及膨脹因數可設定為合宜值。
於方塊502,程式代碼可在第一核心執行歷S週期的取樣區間。於一實施例中,第一核心可以是第一型,諸如窄無序核心。於方塊504,從程式代碼執行起始至S+M週期結束前,第二核心之啟動可傳訊PU週期。於一實施例中,第二核心可屬第二型,諸如寬有序核心。另外,第一型可以是寬有序核心,及第二型可以是窄無序核心。於方塊506,第一核心之每個週期之指令數目(IPC1)可收集歷M週期。於一實施例中,監測效能及收集統計資料可藉監視器模組305或代碼分配模組210中之一者執行。
其次,在第一核心繼續執行之預測(Pcont)可如下進行。於方塊508,若繼續次數N係小於最大繼續次數K,及第一核心之每個週期之指令數目IPC1係大於先前每個週期之指令數目(Prev_IPC,初步設定為最大值),則可執行方塊510、512、及514。於此種情況下,不進行從第一核心切換為第二核心。於方塊510,可傳訊第二核心之節電。於方塊512,先前每個週期之指令數目Prev_IPC可設定為Prev_IPC乘以膨脹因數。處理係以在第一核心執行程式代碼繼續進行。
於方塊508,若繼續次數N係小於或等於最大繼續次數K,或第一核心之每個週期之指令數目IPC1係小於或等於先前每個週期之指令數目Prev_IPC,則可進行方塊516、518、及520。於此種情況下,可進行從第一核心切換為第二核心。其次,針對從第一核心切換執行(Pswit)為第 二核心之預測可進行如下。於方塊516,計數器N可設定為0。於方塊518,程式代碼之執行可從第一核心切換為第二核心,及可收集第二核心之每個週期之指令數目(IPC2)。其次做檢查來證實切換為值得。
於方塊520,若第二核心之每個週期之指令數目(IPC2)係小於第一核心之每個週期之指令數目(IPC1),則於方塊522,程式代碼之執行可從第二核心切換為第一核心。另外,若使用每個週期之指令數目以外的另一效能度量,然後若第二核心之效能並不優於第一核心之效能,則程式代碼之執行可從第二核心切換回第一核心。然後可於方塊524傳訊第二核心之節電。但若於方塊520,若第二核心之每個週期之指令數目(IPC2)係不小於第一核心之每個週期之指令數目(IPC1),則核心的切換值得。另外,若使用每個週期之指令數目以外的另一效能度量,然後若第二核心之效能係優於或等於第一核心之效能,則切換為值得。然後可於方塊528傳訊第一核心之節電。任一種情況下,於一個實施例中,於方塊530繼續處理,先前每個週期之指令數目(Prev_IPC)設定為IPC值之平均值(例如IPC1+IPC2/2)。雖然發明人於此處使用算術平均作為平均值,但也可使用幾何平均、調和平均、及任何其它平均來呈現兩個IPC值之平均值。現在在第二核心執行處理,第一核心被節電。於該方法之隨後迭代重複中,該方法之第一核心及第二核心位置可對調(例如因此首先執行第二核心S週期,傳訊啟動第一核心,監測第二核心效能M週期,收集有關第二核心之統 計資料等等)。於一實施例中,至少方塊504至530可藉代碼分配模組210執行。
核心切換涉及數項額外負擔:1)激勵可能在低功率態之另一核心;2)轉移x86暫存器態至另一核心;3)移動頻繁存取的資料至另一個資料快取記憶體;及4)暖機在另一核心上的指令快取、分支預測器態、及其它狀態。
叫醒(或啟動)另一核心的延遲係取決於另一核心所在的低功率態。於若干實施例中,若該核心係在低功率C2態,耗用約30%常規操作電力,則可能需約5000週期才能將該核心啟動至正常操作速度(C0態)。於一個實施例中,若該核心係在更深的節電態(C6),耗用小於10%常規操作電力,則可能需約200週期才能叫醒。雖然啟動耗時,但可與在另一核心之執行並行地進行。舉例言之,於一實施例中,在第一核心進入Pswit/Pcont週期前,第一核心(或另一模組)可發送一信號給第二核心來初始化啟動。在該第一核心之預測週期結束時,第二核心可以已經啟動且可繼續執行程式代碼。採用此種早期啟動策略,啟動延遲應該既不影響核心切換延遲,也不影響效能,但增加耗能。
於一實施例中,資料及指令快取記憶體可能耗時10K週期來暖機,即便第二層級(L2)快取記憶體係在二核心間共享亦復如此。又,近代混成分支預測器允許分支預測器相當快速暖機。假設核心啟動耗時PU週期,及分支預測器及L1快取記憶體暖機耗時WU週期。第6圖例示說明核心切換動作及額外負擔。第6圖之時間表示型態僅供舉例說 明,絕非意圖傳遞各階段間的任何實際特定時間關係。在第一核心601進入Pcont週期前,第一核心傳訊第二核心602啟動603。第一核心完成Pcont操作且找到需要核心切換後,程式代碼執行可切換至第二核心604。當時第二核心已經啟動且開始暖機歷經WU週期605。於暖機週期後,第二核心執行短時間(例如M週期)來收集其效能資料606。假設此時第二核心之效能係優於第一核心之效能,使得第二核心傳訊第一核心節電(PD)607,及在第二核心繼續執行。接近下個Pcont週期結束時,第二核心傳訊給第一核心啟動608。第二核心結束其Pcont週期及發現第二核心應繼續執行後,第二核心傳訊給第一核心節電609,及在第二核心繼續執行程式代碼。
耦合本機核心與相異共同設計核心的結果,當使用如此處討論之動態核心選擇技術時,即便在單次施用以內也可能獲得最佳功率及執行效益。舉例言之,有一無序核心及一軟體管理有序核心,在軟體管理核心上無效的代碼係遷移至無序核心。在無序核心上無效的代碼係遷移至軟體管理核心。透過硬體、軟體、韌體或其組合並行地執行本機代碼,可有效地管理熱代碼檢測及熱代碼最佳化,同時多重執行緒之個別區段可以管線化方式有效地交插在無序核心與有序共同設計核心間。結果,可獲得最大效能,同時透過不同功率效率技術達成較佳功率效能,諸如於若干體現於在有序核心上執行期間將無序核心置於低功率態。
如此處使用之模組係指任一種硬體、軟體、韌體或其組合。經常模組邊界係例示說明為分開共通改變及潛在重疊。舉例言之,第一模組與第二模組可共享硬體、軟體、韌體或其組合,同時潛在地保有若干獨立硬體、軟體、或韌體。於一個實施例中,使用邏輯一詞包括硬體,諸如電晶體、暫存器、或其它硬體諸如可規劃邏輯裝置。但於另一實施例中,邏輯也包括與硬體整合的軟體或代碼,諸如韌體或微碼。
如此處使用,一值包括數目、狀態、邏輯態、或二進制邏輯態之任一種已知表示型態。經常邏輯位準或邏輯值的使用也係指1及0,單純表示二進制邏輯態。舉例言之,1係指高邏輯位準及0係指低邏輯位準。於一個實施例中,儲存單元諸如電晶體或快閃記憶體單元能夠保有單一邏輯值或多個邏輯值。但曾使用電腦系統中其它數值表示型態。舉例言之,十進制數字10也可表示為1010二進制值及十六進制字母A。因此一值包括可保有於電腦系統中之任何資訊表示型態。
此外,狀態可以數值或部分數值表示。舉個實例,第一值諸如邏輯壹可表示內設態或初始態,而第二值諸如邏輯零可表示非內設態。此外,於一個實施例中,復置及設定二詞分別地係指內設值或態及更新值或態。舉例言之,內設值潛在地包括高邏輯值,亦即復置;而更新值潛在地包括低邏輯值,亦即設定。注意任何數值組合可用來表示任何狀態數目。
前述方法、硬體、軟體、韌體或代碼集合之實施例可透過儲存在機器可讀取媒體上可藉處理元件執行的指令或代碼而體現。機器可讀取媒體包括以可由機器諸如電腦或電子系統可讀取形式,提供(亦即儲存及/或發射)資訊的任何機構。例如機器可讀取媒體包括隨機存取記憶體(RAM),諸如靜態RAM(SRAM)或動態RAM(DRAM);ROM;磁性或光學儲存媒體;快閃記憶體裝置;電氣儲存裝置;光學儲存裝置;等。
全文說明書中述及「一個實施例」或「一實施例」表示連結該實施例所述特定特徵、結構、或特性係含括於本發明之至少一個實施例,但非表示係出現在每個實施例。如此,「於一個實施例中」或「於一實施例中」等術語出現於全文說明書各處並非必要全部皆係指本發明之相同實施例。此外,該等特定特徵、結構、或特性可以任一種適當方式組合於一或多個實施例中。
於前文說明書中,已經參考特定具體實施例給予詳細細節說明。但顯然可未悖離如隨附之申請專利範圍陳述的本發明之廣義精髓及範圍做出多項修改及變化。據此,說明書及附圖須視為說明性而非限制性。又復,前文實施例及其它舉例說明語言的使用並非必要全部皆係指同一個實施例或相同實例,反而可指不同的及分開的實施例以及潛在地相同實施例。
400‧‧‧方法
402-416‧‧‧處理方塊

Claims (24)

  1. 一種包含數個指令儲存於其上之一或多個機器可讀儲存媒體,該等指令回應於由一電腦系統之一或多個處理器執行,致使該一或多個處理器用以:於該一或多個處理器之一第一處理器核心上執行程式代碼;當該程式代碼於該第一處理器核心上執行時,基於一或多個效能度量決定由一第二處理器核心執行該程式代碼之一效能,其中該第一處理器核心係屬一第一型別,且該第二處理器核心係屬與該第一型別相異的一第二型別;以及回應於該第二處理器核心之該效能係優於該第一處理器核心之一效能的一決定,將該程式代碼之執行從該第一處理器核心切換至該第二處理器核心。
  2. 如請求項1之機器可讀儲存媒體,其中該第一處理器核心係一有序處理器核心,且該第二處理器核心係一無序處理器核心。
  3. 如請求項1之機器可讀儲存媒體,其中該第二處理器核心係一有序處理器核心,且該第一處理器核心係一無序處理器核心。
  4. 如請求項1之機器可讀儲存媒體,其中將該程式代碼之執行從該第一處理器核心切換至該第二處理器核心,包含回應於與一效能度量相關聯之一臨界值已被超過的 一決定,將該程式代碼之執行從該第一處理器核心切換至該第二處理器核心。
  5. 如請求項1之機器可讀儲存媒體,其中該等數個指令進一步回應於該第二處理器核心之該效能係優於該第一處理器核心之該效能的一決定,致使該一或多個處理器啟動該第二處理器核心。
  6. 如請求項1之機器可讀儲存媒體,其中將該程式代碼之執行從該第一處理器核心切換至該第二處理器核心,包含經由一資料匯流排從該第一處理器核心轉移脈絡資料至該第二處理器核心。
  7. 如請求項1之機器可讀儲存媒體,其中將該程式代碼之執行從該第一處理器核心切換至該第二處理器核心,包含透過一共享記憶體從該第一處理器核心轉移脈絡資料至該第二處理器核心。
  8. 如請求項1之機器可讀儲存媒體,其中該等數個指令進一步回應於將該程式代碼之執行從該第一處理器核心切換至該第二處理器核心,致使該一或多個處理器降低該第一處理器核心之電力。
  9. 一種包含積體電路之多核心處理系統,其包括有:執行程式代碼之一第一型別之一第一處理器核心;與該第一型別相異之一第二型別之一第二處理器核心;以及一代碼分配模組,用以:(1)當該程式代碼於該第一處理器核心上執行時,基於一或多個效能度量決定由該 第二處理器核心執行該程式代碼之一效能,及(2)回應於該第二處理器核心之該效能係優於該第一處理器核心之一效能的一決定將該程式代碼之執行從該第一處理器核心切換至該第二處理器核心。
  10. 如請求項9之多核心處理系統,其中該第一處理器核心係一有序處理器核心,且該第二處理器核心係一無序處理器核心。
  11. 如請求項9之多核心處理系統,其中該第二處理器核心係一有序處理器核心,且該第一處理器核心係一無序處理器核心。
  12. 如請求項9之多核心處理系統,其中將該程式代碼之執行從該第一處理器核心切換至該第二處理器核心,包含回應於與一效能度量相關聯之一臨界值已被超過的一決定,將該程式代碼之執行從該第一處理器核心切換至該第二處理器核心。
  13. 如請求項9之多核心處理系統,其中該代碼分配模組係進一步回應於該第二處理器核心之該效能係優於該第一處理器核心之該效能的一決定而啟動該第二處理器核心。
  14. 如請求項9之多核心處理系統,其中將該程式代碼之執行從該第一處理器核心切換至該第二處理器核心,包含經由一資料匯流排從該第一處理器核心轉移脈絡資料至該第二處理器核心。
  15. 如請求項9之多核心處理系統,進一步包括一共享記憶 體;其中將該程式代碼之執行從該第一處理器核心切換至該第二處理器核心,包含透過該共享記憶體從該第一處理器核心轉移脈絡資料至該第二處理器核心。
  16. 如請求項9之多核心處理系統,其中該代碼分配模組係進一步回應於將該程式代碼之執行從該第一處理器核心切換至該第二處理器核心而降低該第一處理器核心之電力。
  17. 一種多核心處理之方法,該方法包含:於一第一處理器核心上執行程式代碼;當該程式代碼於該第一處理器核心上執行時,基於一或多個效能度量決定由一第二處理器核心執行該程式代碼之一效能,其中該第一處理器核心係屬一第一型別,且該第二處理器核心係屬與該第一型別相異的一第二型別;以及回應於決定該第二處理器核心之該效能係優於該第一處理器核心之一效能,將該程式代碼之執行從該第一處理器核心切換至該第二處理器核心。
  18. 如請求項17之方法,其中該第一處理器核心係一有序處理器核心,且該第二處理器核心係一無序處理器核心。
  19. 如請求項17之方法,其中該第二處理器核心係一有序處理器核心,且該第一處理器核心係一無序處理器核心。
  20. 如請求項17之方法,其中將該程式代碼之執行從該第一處理器核心切換至該第二處理器核心,包含回應於決定與一效能度量相關聯之一臨界值已被超過,將該程式代 碼之執行從該第一處理器核心切換至該第二處理器核心。
  21. 如請求項17之方法,進一步包含回應於決定該第二處理器核心之該效能係優於該第一處理器核心之該效能而啟動該第二處理器核心。
  22. 如請求項17之方法,其中將該程式代碼之執行從該第一處理器核心切換至該第二處理器核心,包含經由一資料匯流排從該第一處理器核心轉移脈絡資料至該第二處理器核心。
  23. 如請求項17之方法,其中將該程式代碼之執行從該第一處理器核心切換至該第二處理器核心,包含透過一共享記憶體從該第一處理器核心轉移脈絡資料至該第二處理器核心。
  24. 如請求項17之方法,進一步包含回應於把該程式代碼之執行從該第一處理器核心切換至該第二處理器核心而降低該第一處理器核心之電力。
TW105101906A 2011-03-11 2011-12-29 用於異質多核心系統之動態核心選擇技術(一) TWI605390B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/046,031 US8683243B2 (en) 2011-03-11 2011-03-11 Dynamic core selection for heterogeneous multi-core systems

Publications (2)

Publication Number Publication Date
TW201616352A TW201616352A (zh) 2016-05-01
TWI605390B true TWI605390B (zh) 2017-11-11

Family

ID=46797157

Family Applications (4)

Application Number Title Priority Date Filing Date
TW100149541A TWI529625B (zh) 2011-03-11 2011-12-29 用於異質多核心系統之動態核心選擇技術
TW105101908A TWI595420B (zh) 2011-03-11 2011-12-29 多核心處理系統
TW105101907A TWI595419B (zh) 2011-03-11 2011-12-29 用於多核心處理之設備、用於由多核心處理系統處理之方法及機器可讀儲存媒體
TW105101906A TWI605390B (zh) 2011-03-11 2011-12-29 用於異質多核心系統之動態核心選擇技術(一)

Family Applications Before (3)

Application Number Title Priority Date Filing Date
TW100149541A TWI529625B (zh) 2011-03-11 2011-12-29 用於異質多核心系統之動態核心選擇技術
TW105101908A TWI595420B (zh) 2011-03-11 2011-12-29 多核心處理系統
TW105101907A TWI595419B (zh) 2011-03-11 2011-12-29 用於多核心處理之設備、用於由多核心處理系統處理之方法及機器可讀儲存媒體

Country Status (7)

Country Link
US (7) US8683243B2 (zh)
EP (5) EP3082041B1 (zh)
JP (6) JP5750172B2 (zh)
KR (4) KR101901037B1 (zh)
CN (5) CN109960398B (zh)
TW (4) TWI529625B (zh)
WO (1) WO2012125200A2 (zh)

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8683243B2 (en) 2011-03-11 2014-03-25 Intel Corporation Dynamic core selection for heterogeneous multi-core systems
JP5692381B2 (ja) * 2011-07-13 2015-04-01 富士通株式会社 マルチコアプロセッサシステム、および制御方法
US8799693B2 (en) 2011-09-20 2014-08-05 Qualcomm Incorporated Dynamic power optimization for computing devices
US9098309B2 (en) * 2011-09-23 2015-08-04 Qualcomm Incorporated Power consumption optimized translation of object code partitioned for hardware component based on identified operations
US20130185581A1 (en) * 2012-01-18 2013-07-18 Qualcomm Incorporated Efficient Code Dispatch Based on Performance and Energy Consumption
US10114750B2 (en) * 2012-01-23 2018-10-30 Qualcomm Incorporated Preventing the displacement of high temporal locality of reference data fill buffers
US9223599B1 (en) * 2012-03-30 2015-12-29 Zynga Inc. Client-side server for client-side scripting languages
US10013511B2 (en) * 2012-04-09 2018-07-03 Purdue Research Foundation System and method for energy usage accounting in software applications
US10185566B2 (en) * 2012-04-27 2019-01-22 Intel Corporation Migrating tasks between asymmetric computing elements of a multi-core processor
US9035956B1 (en) * 2012-05-08 2015-05-19 Apple Inc. Graphics power control with efficient power usage during stop
US9003218B2 (en) 2012-05-21 2015-04-07 International Business Machines Corporation Power shifting in multicore platforms by varying SMT levels
US9401869B1 (en) * 2012-06-04 2016-07-26 Google Inc. System and methods for sharing memory subsystem resources among datacenter applications
US9459879B2 (en) * 2012-06-08 2016-10-04 Qualcomm Incorporated Systems and methods for thermal mitigation with multiple processors
US9619284B2 (en) * 2012-10-04 2017-04-11 Intel Corporation Dynamically switching a workload between heterogeneous cores of a processor
US8996902B2 (en) * 2012-10-23 2015-03-31 Qualcomm Incorporated Modal workload scheduling in a heterogeneous multi-processor system on a chip
JP2014102683A (ja) * 2012-11-20 2014-06-05 Fujitsu Ltd 情報処理装置の制御プログラム、情報処理装置の制御方法および情報処理装置
WO2014105058A1 (en) * 2012-12-28 2014-07-03 Intel Corporation Optimal logical processor count and type selection for a given workload on platform thermals and power budgeting constraints
US9164822B2 (en) * 2013-03-12 2015-10-20 Oracle International Corporation Method and system for key performance indicators elicitation with incremental data decycling for database management system
US9405551B2 (en) 2013-03-12 2016-08-02 Intel Corporation Creating an isolated execution environment in a co-designed processor
US9342303B2 (en) * 2013-03-15 2016-05-17 Intel Corporation Modified execution using context sensitive auxiliary code
US10423216B2 (en) * 2013-03-26 2019-09-24 Via Technologies, Inc. Asymmetric multi-core processor with native switching mechanism
JP6321325B2 (ja) * 2013-04-03 2018-05-09 ルネサスエレクトロニクス株式会社 情報処理装置および情報処理方法
KR102157326B1 (ko) * 2013-04-30 2020-09-17 삼성전자 주식회사 컴퓨팅 장치, 컴퓨팅 장치의 메모리 대역폭 조정 방법 및 메모리 대역폭 조정기
US9588570B2 (en) * 2013-04-30 2017-03-07 Samsung Electronics Co., Ltd. Apparatus and method for adjusting bandwidth
KR20140139371A (ko) * 2013-05-27 2014-12-05 한국전자통신연구원 멀티 코어 시스템 반도체 제어 장치 및 방법
WO2014204437A2 (en) * 2013-06-18 2014-12-24 Empire Technology Development Llc Tracking core-level instruction set capabilities in a chip multiprocessor
WO2015050557A1 (en) 2013-10-04 2015-04-09 Intel Corporation Techniques for heterogeneous core assignment
US9965279B2 (en) * 2013-11-29 2018-05-08 The Regents Of The University Of Michigan Recording performance metrics to predict future execution of large instruction sequences on either high or low performance execution circuitry
US20150154100A1 (en) * 2013-12-04 2015-06-04 International Business Machines Corporation Tuning business software for a specific business environment
KR102205836B1 (ko) 2014-01-29 2021-01-21 삼성전자 주식회사 태스크 스케줄링 방법 및 장치
US9910683B2 (en) * 2014-03-28 2018-03-06 Lenovo (Singapore) Pte. Ltd. Dynamic application optimization
US9582012B2 (en) 2014-04-08 2017-02-28 Qualcomm Incorporated Energy efficiency aware thermal management in a multi-processor system on a chip
US9858111B2 (en) * 2014-06-18 2018-01-02 Empire Technologies Development Llc Heterogeneous magnetic memory architecture
US9870226B2 (en) 2014-07-03 2018-01-16 The Regents Of The University Of Michigan Control of switching between executed mechanisms
US9958932B2 (en) 2014-11-20 2018-05-01 Apple Inc. Processor including multiple dissimilar processor cores that implement different portions of instruction set architecture
US9898071B2 (en) 2014-11-20 2018-02-20 Apple Inc. Processor including multiple dissimilar processor cores
US10049327B2 (en) * 2014-12-12 2018-08-14 Qualcomm Incorporated Application characterization for machine learning on heterogeneous core devices
US9658937B2 (en) * 2015-03-17 2017-05-23 Qualcomm Incorporated Optimization of hardware monitoring for computing devices
KR102352756B1 (ko) 2015-04-29 2022-01-17 삼성전자주식회사 애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치
GB2546465B (en) * 2015-06-05 2018-02-28 Advanced Risc Mach Ltd Modal processing of program instructions
US9934124B2 (en) 2015-06-05 2018-04-03 Intel Corporation Implementation of processor trace in a processor that supports binary translation
US10942748B2 (en) * 2015-07-16 2021-03-09 Nxp B.V. Method and system for processing interrupts with shadow units in a microcontroller
US20170052799A1 (en) * 2015-08-21 2017-02-23 Microchip Technology Incorporated Integrated Circuit Device With Selectable Processor Core
US9928115B2 (en) * 2015-09-03 2018-03-27 Apple Inc. Hardware migration between dissimilar cores
KR101715759B1 (ko) * 2015-09-22 2017-03-15 한국전자통신연구원 멀티코어 환경에서의 악성코드 분석 장치 및 방법
US9942631B2 (en) * 2015-09-25 2018-04-10 Intel Corporation Out-of-band platform tuning and configuration
US9891926B2 (en) * 2015-09-30 2018-02-13 International Business Machines Corporation Heterogeneous core microarchitecture
CN105242909B (zh) * 2015-11-24 2017-08-11 无锡江南计算技术研究所 一种基于多版本代码生成的众核循环分块方法
JP5956708B1 (ja) * 2015-11-30 2016-07-27 株式会社PEZY Computing ダイ及びパッケージ、並びに、ダイの製造方法及びパッケージの生成方法
US9939873B1 (en) * 2015-12-09 2018-04-10 International Business Machines Corporation Reconfigurable backup and caching devices
US10037227B2 (en) * 2015-12-17 2018-07-31 Intel Corporation Systems, methods and devices for work placement on processor cores
KR102578648B1 (ko) 2016-03-14 2023-09-13 삼성전자주식회사 모뎀 데이터에 따라 코어 스위칭이 수행되는 애플리케이션 프로세서 및 이를 포함하는 시스템 온 칩
US10318356B2 (en) * 2016-03-31 2019-06-11 International Business Machines Corporation Operation of a multi-slice processor implementing a hardware level transfer of an execution thread
US10282182B2 (en) * 2016-09-23 2019-05-07 Intel Corporation Technologies for translation cache management in binary translation systems
US20180095792A1 (en) * 2016-10-05 2018-04-05 Mediatek Inc. Multi-core system including heterogeneous processor cores with different instruction set architectures
KR102592330B1 (ko) * 2016-12-27 2023-10-20 삼성전자주식회사 OpenCL 커널을 처리하는 방법과 이를 수행하는 컴퓨팅 장치
EP3812900B1 (en) * 2016-12-31 2023-11-29 Intel Corporation Systems, methods, and apparatuses for heterogeneous computing
US10613866B2 (en) * 2017-04-04 2020-04-07 The Regents Of The University Of Michigan Method of detecting repetition of an out-of-order execution schedule, apparatus and computer-readable medium
US10564702B2 (en) 2017-06-28 2020-02-18 Dell Products L.P. Method to optimize core count for concurrent single and multi-thread application performance
WO2019079994A1 (zh) * 2017-10-25 2019-05-02 华为技术有限公司 核心调度方法和终端
CN110611690B (zh) * 2018-06-15 2022-05-10 上海诺基亚贝尔股份有限公司 主核心设备重选的方法、远程设备和计算机可读介质
CN109271168A (zh) * 2018-08-09 2019-01-25 上海鲸鱼机器人科技有限公司 一种代码转换方法、装置及设备、存储介质
US11334398B2 (en) * 2018-08-29 2022-05-17 International Business Machines Corporation Learning-based thermal estimation in multicore architecture
US20190042395A1 (en) * 2018-09-28 2019-02-07 Intel Corporation Source code profiling through enhanced mapping
EP3903198B1 (en) * 2018-12-24 2024-03-13 Telefonaktiebolaget LM Ericsson (publ) Efficient mechanism for executing software-based switching programs on heterogenous multicore processors
KR20200097579A (ko) 2019-02-08 2020-08-19 삼성전자주식회사 프로세스 스케줄링을 위한 전자 장치, 저장 매체 및 방법
CN110083469B (zh) * 2019-05-11 2021-06-04 广东财经大学 一种异构硬件组织运行统一内核方法及系统
US20210124615A1 (en) * 2019-10-29 2021-04-29 Thomas Klingenbrunn Thread scheduling based on performance metric information
US11669491B2 (en) * 2020-04-09 2023-06-06 Samsung Electronics Co., Ltd. Processor, system on chip including heterogeneous core, and operating methods thereof for optimizing hot functions for execution on each core of a heterogeneous processor
CN113568390B (zh) * 2021-09-22 2021-12-14 中国核动力研究设计院 基于多级处理器的dcs系统动态分层通信方法及系统
US11797410B2 (en) * 2021-11-15 2023-10-24 Advanced Micro Devices, Inc. Chiplet-level performance information for configuring chiplets in a processor
US20230418664A1 (en) * 2022-06-22 2023-12-28 Advanced Micro Devices, Inc. Adaptive thread management for heterogenous computing architectures
CN116400795A (zh) * 2023-06-09 2023-07-07 上海芯联芯智能科技有限公司 电源门控方法及系统级芯片

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6233250Y2 (zh) 1980-09-09 1987-08-25
JPH05151184A (ja) * 1991-11-29 1993-06-18 Toshiba Corp マルチプロセツサ制御方式
US6134675A (en) * 1998-01-14 2000-10-17 Motorola Inc. Method of testing multi-core processors and multi-core processor testing device
US6615366B1 (en) * 1999-12-21 2003-09-02 Intel Corporation Microprocessor with dual execution core operable in high reliability mode
US7017138B2 (en) * 2001-08-15 2006-03-21 National Instruments Corporation Dynamically determining a route through one or more switch devices at program execution time
DE10218613A1 (de) * 2002-04-25 2003-12-04 Wet Automotive Systems Ag Vorrichtung zur Detektion mechanischer Kräfte
US7100060B2 (en) * 2002-06-26 2006-08-29 Intel Corporation Techniques for utilization of asymmetric secondary processing resources
JP2004171234A (ja) 2002-11-19 2004-06-17 Toshiba Corp マルチプロセッサシステムにおけるタスク割り付け方法、タスク割り付けプログラム及びマルチプロセッサシステム
US7337334B2 (en) * 2003-02-14 2008-02-26 International Business Machines Corporation Network processor power management
US7093147B2 (en) 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
US7996839B2 (en) 2003-07-16 2011-08-09 Hewlett-Packard Development Company, L.P. Heterogeneous processor core systems for improved throughput
US7725683B2 (en) * 2003-09-25 2010-05-25 Marvell International Ltd. Apparatus and method for power optimized replay via selective recirculation of instructions
US7194643B2 (en) * 2003-09-29 2007-03-20 Intel Corporation Apparatus and method for an energy efficient clustered micro-architecture
US7437581B2 (en) 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US20060212677A1 (en) * 2005-03-15 2006-09-21 Intel Corporation Multicore processor having active and inactive execution cores
JP2006277364A (ja) 2005-03-29 2006-10-12 Nec Corp プログラムの実行方法と、マルチプロセッサシステム及びその制御プログラム
US7386739B2 (en) 2005-05-03 2008-06-10 International Business Machines Corporation Scheduling processor voltages and frequencies based on performance prediction and power constraints
US20080026332A1 (en) * 2006-06-19 2008-01-31 Kabushiki Kaisha Toshiba Developing agent and manufacturing method thereof
US20080263324A1 (en) * 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
TW200834422A (en) * 2007-02-07 2008-08-16 Asustek Comp Inc Performance enhancement method for a multi-processing core device
TWI388974B (zh) 2007-03-01 2013-03-11 Via Tech Inc 根據工作溫度的變化來動態改變功率損耗的微處理器及方法
US7904287B2 (en) * 2007-11-13 2011-03-08 International Business Machines Corporation Method and system for real-time prediction of power usage for a change to another performance state
US20090187735A1 (en) 2008-01-22 2009-07-23 Sonix Technology Co., Ltd. Microcontroller having dual-core architecture
US8453129B2 (en) * 2008-04-24 2013-05-28 International Business Machines Corporation Using hardware interrupts to drive dynamic binary code recompilation
US8683471B2 (en) 2008-10-02 2014-03-25 Mindspeed Technologies, Inc. Highly distributed parallel processing on multi-core device
US20100122073A1 (en) * 2008-11-10 2010-05-13 Ravi Narayanaswamy Handling exceptions in software transactional memory systems
US9715376B2 (en) * 2008-12-29 2017-07-25 Intel Corporation Energy/performance with optimal communication in dynamic parallelization of single threaded programs
JP5305926B2 (ja) 2009-01-06 2013-10-02 キヤノン株式会社 重合トナーの製造方法
JP2010160715A (ja) 2009-01-09 2010-07-22 Toyota Motor Corp 車両用電子制御ユニット
US8683477B2 (en) * 2009-07-05 2014-03-25 Hewlett-Packard Development Company, L.P. Performance degradation based at least on computing application priority and in a relative manner that is known and predictable beforehand
CN101923492B (zh) * 2010-08-11 2013-05-01 上海交通大学 面向嵌入式异构多核上执行动态分配指令的方法
US9063730B2 (en) * 2010-12-20 2015-06-23 Intel Corporation Performing variation-aware profiling and dynamic core allocation for a many-core processor
US8683243B2 (en) 2011-03-11 2014-03-25 Intel Corporation Dynamic core selection for heterogeneous multi-core systems
US10423216B2 (en) 2013-03-26 2019-09-24 Via Technologies, Inc. Asymmetric multi-core processor with native switching mechanism

Also Published As

Publication number Publication date
KR101899695B1 (ko) 2018-09-17
CN103443769B (zh) 2017-10-13
JP6938593B2 (ja) 2021-09-22
US11755099B2 (en) 2023-09-12
KR101908202B1 (ko) 2018-10-15
US10437319B2 (en) 2019-10-08
TW201616354A (zh) 2016-05-01
US20120233477A1 (en) 2012-09-13
JP6627102B2 (ja) 2020-01-08
US20190332158A1 (en) 2019-10-31
CN103443769A (zh) 2013-12-11
CN105843362B (zh) 2019-03-29
JP6661865B2 (ja) 2020-03-11
JP2016095871A (ja) 2016-05-26
JP2016095870A (ja) 2016-05-26
JP2016095872A (ja) 2016-05-26
EP3082041B1 (en) 2020-06-17
EP3540600B1 (en) 2022-09-14
KR101901037B1 (ko) 2018-09-20
EP2684127B1 (en) 2020-06-24
TW201237760A (en) 2012-09-16
US10437318B2 (en) 2019-10-08
EP3082041A1 (en) 2016-10-19
JP2014507737A (ja) 2014-03-27
KR101600152B1 (ko) 2016-03-14
TWI595419B (zh) 2017-08-11
TWI529625B (zh) 2016-04-11
KR20160027995A (ko) 2016-03-10
TWI595420B (zh) 2017-08-11
CN105843362A (zh) 2016-08-10
EP3076294A1 (en) 2016-10-05
CN105867883A (zh) 2016-08-17
CN109960398B (zh) 2023-11-07
JP6627103B2 (ja) 2020-01-08
TW201616352A (zh) 2016-05-01
EP3076294B1 (en) 2021-05-26
KR20160027997A (ko) 2016-03-10
EP3082040A1 (en) 2016-10-19
CN105867883B (zh) 2019-07-09
TW201616353A (zh) 2016-05-01
US20220326756A1 (en) 2022-10-13
US20160116963A1 (en) 2016-04-28
EP2684127A4 (en) 2014-11-26
KR20160027996A (ko) 2016-03-10
US9501135B2 (en) 2016-11-22
JP2015187878A (ja) 2015-10-29
EP3082040B1 (en) 2020-03-18
US20140223166A1 (en) 2014-08-07
KR20130141668A (ko) 2013-12-26
US20160116964A1 (en) 2016-04-28
EP3540600A1 (en) 2019-09-18
CN105867584A (zh) 2016-08-17
EP2684127A2 (en) 2014-01-15
US10534424B2 (en) 2020-01-14
JP6054467B2 (ja) 2016-12-27
CN109960398A (zh) 2019-07-02
JP5750172B2 (ja) 2015-07-15
WO2012125200A2 (en) 2012-09-20
US20160116965A1 (en) 2016-04-28
WO2012125200A3 (en) 2012-11-15
CN105867584B (zh) 2019-07-26
US8683243B2 (en) 2014-03-25
JP2020035472A (ja) 2020-03-05

Similar Documents

Publication Publication Date Title
TWI605390B (zh) 用於異質多核心系統之動態核心選擇技術(一)