TWI516908B - 藉由耦合第一核心類型與第二核心類型來改善電力效能效率之設備、方法及系統 - Google Patents
藉由耦合第一核心類型與第二核心類型來改善電力效能效率之設備、方法及系統 Download PDFInfo
- Publication number
- TWI516908B TWI516908B TW100122413A TW100122413A TWI516908B TW I516908 B TWI516908 B TW I516908B TW 100122413 A TW100122413 A TW 100122413A TW 100122413 A TW100122413 A TW 100122413A TW I516908 B TWI516908 B TW I516908B
- Authority
- TW
- Taiwan
- Prior art keywords
- code
- active
- core
- processor
- processor core
- Prior art date
Links
Classifications
-
- 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, look ahead
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- 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, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- 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/46—Multiprogramming arrangements
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- 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
Description
本發明係有關處理器之領域,以及係特別論及使電力、效能效率最佳化。
半導體處理和邏輯設計方面之進步,業已容許增加可能存在於積體電路裝置上面之邏輯的數量。結果,彼等電腦系統組態,業已自一個系統中之單一的或多重的積體電路,演進至存在於個別積體電路上面之多重核心、多重硬體線程、和多重邏輯處理器。一個處理器或積體電路,通常係由一個單一實體處理器晶粒所構成,其中,該處理器晶粒,可能包括任何數目之核心、硬體線程、或邏輯處理器。
積體電路上面之處理元件--核心、硬體線程、和邏輯處理器--在數量上的持續增加,使得更多之工作,能夠並列地被完成。然而,一些全部採用亂序式核心的處理器,在某些情況下,可能會導致電力之無效率和/或效能之無效率。結果,為面對此種電力--效能效率之問題,已有某些硬體--軟體協同設計式系統被開發出。在該系統中,可能會有一個寬的單一順序式處理器被利用,同時,軟體可有效率地最佳化及排程在該順序式硬體上面運行的程式。
然而,硬體--軟體協同設計式系統,通常會伴隨兩項反面之影響:(1)利用一個二進制轉譯器來轉譯和/或最佳化程式碼,可能會減緩某些具有短的運行工作和小的響應時間等限制條件之應用程式(二進制轉譯脆弱點(glassjaw));和(2)一個順序式處理器,就某些較適合並列地執行之程式類型而言,可能會無法很好地被執行(一個順序式脆弱點)。
為例示該二進制轉譯(BT)之脆弱點議題,有一個用以執行微軟Excel應用軟體之典型分佈圖的範例會加以檢驗。就所執行之100億動態x86指令而言,模擬例示出,有23%之動態指令,係來自靜態指令,彼等會被重複少於100,000次;此可能被稱為非活躍程式碼。若此等x86指令使用二進制轉譯軟體(具轉譯/解譯有關之典型前置處理,和最佳化之效能增益)來解譯及轉譯,該非活躍程式碼比起內置式x86執行,將需要大約3.6X以上之指令來運行。而且,該轉譯會使得整個10 B指令,執行1.4X以上之指令。考慮大約有25%被執行之程式碼,係屬非活躍程式碼,則平均而言,轉譯前置處理,將會使得該非活躍程式碼,在運行上要慢4.4X,以及會使得整個執行比起該內置式之執行,在運行上要慢1.7X。
為例示該順序式之脆弱點,有一個順序式處理器之效能的範例,係相較於一個在基準(benchmark)模擬期間之亂序式處理器而加以檢驗。在許多程式針對類似配備之順序式和亂序式(OOO)處理器的模擬期間,可見到的是,大約有40%之程式,在該OOO處理器上面,運行要快1.57x,而大約有40%之程式,在該順序式處理器上面,運行要快1.45x。雖然此等模擬純粹屬例示性,以及在結果上可能會有變化,彼等可例示出的是,兩者系統有潛在可能會包括電力和/或效能方面之無效率。
依據本發明的一個實施例,係特別提出一種設備,其包含有:一個積體電路,其包括一個適於不依程式順序來執行程式碼之亂序式處理器核心(OOO);和一個適於依程式順序來執行該程式碼之活躍區段的順序式處理器核心。
本發明係藉由範例來加以例示,以及並非意圖受限於所附諸圖之圖例。
第1圖係例示一個包括兩個非對稱式核心之處理器的實施;第2圖係例示一個包括一個內置式核心、一個軟體管理式核心、和一個程式碼分配模組之處理器的實施例;第3圖係例示一個用以在一些核心中分配程式碼使達成最大效能和最大電力節省之處理器的實施例;第4圖係例示一個在一個亂序式核心和一個順序式核心中分配程式碼使達成最大效能和最大電力節省之方法的流程圖之實施例;而第5圖則例示另一個在一個亂序式核心和一個順序式核心中分配程式碼使達成最大效能和最大電力節省之方法的流程圖之實施例。
在下文之說明中,係闡明眾多之特定細節,諸如特定類型之處理器核心、特定之處理器組態、特定之活躍程式碼區域識別運算法、儲存轉譯/最佳化之程式碼的特定結構、硬體/軟體間之工作的特定區分、特定之處理器單元/邏輯、等等的範例,使提供本發明之徹底理解。然而,本技藝之專業人員可顯而易見到的是,此等特定細節並不需要被採用來實現本發明。在其他實例中,一些習見之組件或方法,諸如特定的和他型之處理器架構、有關所說明之運算法的特定邏輯電路/程式碼、特定之程式碼實現體、特定之二進制轉譯細節、和微處理器之其他特定運作細節,並未詳加說明,以期避免不當地使本發明混淆。
本說明書所說明之方法和設備,係為實現一種具有一個軟體管理式核心之內置式核心,使達成最大之效能和電力節省。特言之,在彼等核心間之合作,主要係參照一個亂序式核心和一個協同設計順序式核心,來加以討論。然而,本說明書所說明之設備和方法,並非如此受限,因為彼等係可能在一些非對稱式核心間之任何程式碼分配中加以實現。舉例而言,本說明書所說明之程式碼分配方法和設備,係可能供兩個可實現獨特的指令集架構(ISA)之亂序式核心利用。此外,在此等核心間之合作,在討論上經常為硬體機構與程式碼/軟體間之劃界。然而,硬體、軟體、和/或韌體之任何混和或獨佔性使用,係可能被利用來實現下文所說明之方法和設備。
參照第1圖,所例示係一個包括多重核心之處理器的實施例。此處理器100,包括任何之處理器,諸如微處理器、內嵌式處理器、數位信號處理器(DSP)、網路處理器、或其他可執行程式碼之裝置。該處理器100,在一個實施例中,包括至少兩個不同類型之核心--核心101和102。然而,該處理器100,可能會包括任何數目之處理元件。
在一個實施例中,一個處理元件,係指稱一個線程單元、一個線程時槽、一個程序單元、一個脈絡(context)、一個邏輯處理器、一個硬體線程、一個核心、和/或任何其他元件,彼等能夠保存一個處理器有關之狀態,諸如一個執行狀態或架構狀態。換言之,一個處理元件,在一個實施例中,係指稱任何有能力獨立地與程式碼相聯結之硬體,諸如一個軟體線程、作業系統、應用程式、或其他程式碼。一個實體處理器,通常'指稱一個積體電路,其有潛在可能會包括任何數目之其他處理元件,諸如核心或硬體線程。
一個核心經常係指稱位於一個能夠維護某一獨立架構狀態之積體電路上面的一個邏輯電路,其中,每個獨立維護之架構狀態,係與至少某些專屬型執行資源相關聯。與彼等核心相形之下,一個硬體線程,通常係指稱位於一個能夠維護某一獨立架構狀態之積體電路上面的任何邏輯電路,其中,該等獨立維護之架構狀態,共享針對執行資源之存取。誠如可見到的是,當某一定之資源被共享,以及其他者為專屬於某一架構狀態時,一個硬體線程與核心之術語間的界線將會重疊。此外,一個核心和一個硬體線程,經常會被一個作業系統,視為個別之邏輯性處理器,其中,該作業系統能夠個別地排定每個邏輯性處理器上面之運作。
該實體處理器100,如第1圖中所例示,包括兩個核心,核心101和102。在此,該等核心101和102,係被認為屬非對稱式核心,亦即,具不同之組態、功能性單元、和/或邏輯電路之核心。在一個實施例中,核心101包括一個亂序式處理器核心,而核心102包括一個順序式處理器核心。然而,該等核心101和102,可能係個別地選自任何類型之核心,諸如一個內置式核心、一個軟體管理式核心、一個適於執行一個內置式指令集架構(ISA)之核心、一個適於執行一個經轉譯之指令集架構(ISA)的核心、一個協同設計式核心、或其他已知之核心。此外,為進一步之討論,第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中,其他較小之資源,諸如重新命名分配器邏輯130中之指令指標和重新命名邏輯,可能亦會就該等線程101a和101b加以複製。某些資源,諸如重新安排/退出單元135中之重排序緩衝器、ILTB 120、加載/儲存緩衝器、和佇列,可能會透過分割而被共享。其他資源,諸如通用內部暫存器、分頁表基底暫存器、低階資料快取區和資料-TLB 115、執行單元140、和部份之重新安排/退出單元135,有潛在可能會完全被共享。
該處理器100,經常會包括其他資源,彼等可能會完全被共享,可能會透過分割而被共享,可能為一些處理元件所專用。在第1圖中,係例示一個具有某一處理器之例示性邏輯單元/資源的純範例性處理器之實施例。值得注意的是,一個處理器可能包括或不然省略此等功能性單元中的任何一個,加上包括任何其他未加描述而習見之功能性單元、邏輯、或韌體。誠如所例示,該核心101係例示為一個簡化之亂序式(OOO)處理器核心。此OOO核心,包括一個用以預測要被執行/採行之分支的分支標的緩衝器120,和一個用以儲存指令有關之位址轉譯登錄項之指令轉譯緩衝器(I-TLB) 120。
該核心101進一步包括一個解碼模組125,使耦合至一個接取單元120,而解碼所接取之元件。該接取邏輯,在一個實施例中,包括分別與線程時槽101a、101b相聯結之個別定序器。通常,該核心101係與一個第一指令集架構(ISA)相聯結,後者可界定/指明在該處理器100上面可執行之指令。在此,通常,一些屬該第一ISA之一部分的機器碼指令,包括某一部份之指令(稱為一個作業碼),其可註明/指明一個要被執行之指令或運作。該解碼邏輯125,包括一個電路,其可由彼等之作業碼,來辨識此等指令,以及可在管線中傳遞經解碼之指令,以便如該第一ISA所界定地加以處理。
在一個範例中,該分配器和重新命名器區塊130,包括一個分配器,使保留資源,諸如暫存器檔案,而儲存彼等指令處理結果。然而,該等線程101a和101b,係有潛在可能具亂序執行之能力,其中,該分配器和重新命名區塊130,亦可保留其他資源,諸如重新排序緩衝器,使追蹤彼等指令結果。該單元130亦可能包括一個暫存器重新命名器,使重新命名程式/指令參照暫存器,給該處理器100內部之其他暫存器。該重新排序器/退出單元135,包括一個組件,諸如上文所提及之重新排序緩衝器、加載緩衝器、和儲存緩衝器,使支援亂序執行和隨後此亂序執行之指令的順序退出。
該排程器和執行單元區塊140,在一個實施例中,包括一個排程器單元,使排定該執行單元上面之指令/運作。舉例而言,一個浮點指令係在一個具有一個可用之浮點執行單元之執行單元的一個埠上面被排定。彼等與該等執行單元相聯結之暫存器檔案亦會被納入,使儲存資訊指令處理結果。一些範例性執行單元包括:一個浮點執行單元、一個整數執行單元、一個跳轉執行單元、一個加載執行單元、一個儲存執行單元、和其他習見之執行單元。
有一個較低階之資料快取區和資料轉譯緩衝器(D-TLB)150,耦合至該執行單元140。該資料快取區,係為儲存最近使用/針對運作之元素,諸如資料運算元,彼等有潛在可能會被保持在記憶體相參(coherency)狀態中。該D-TLB係為儲存最近之虛擬/線性對實體位址的轉譯。就某一特定之範例而言,一個處理器可能會包括分頁表結構,而將實體記憶體分割成多數之虛擬分頁。
誠如上文所陳述,在一個實施例中,該核心102包括一個協同設計順序式核心。結果,第1圖例示的是一個順序式核心之簡化式管線。此管線包括;一個接取單元121、一個解碼單元126、一個執行單元141、和一個較低階之資料快取區151。此等單元之工作方式,可能與該核心101中之對應單元相類似。然而,在一個順序式核心中,該等指令/運作在執行上,係依程式順序,而非如在該核心101中的潛在可能之亂序式執行。在一個範例中,該亂序式核心101,係被稱為一個內置式核心,而該順序式核心102,係被稱為一個協同設計式核心。或者,該順序式核心102,係一個內置式核心,以及該亂序式核心101,係一個協同設計式核心。
在此,該等核心101和102,會共享對一個用以快取儲存最近接取之元素的較高階或更無序之快取區的存取。值得注意的是,較高階或更無序,係指稱一些加增的或離該執行單元更遠之快取儲存位階。在一個實施例中,該較高階之快取區110,係一個最終位階之資料快取區--處理器100上面之記憶體系中的最後一個快取區--諸如一個第二或第三階之資料快取區。然而,該較高階之快取區110,並非如此受限,因為其可能會包括一個指令快取區,或者與之相聯結。一個循序區段(trace)快取區--某一類型之指令快取區--取而代之的是可能會耦合在該解碼器125後面,使儲存最近解碼過之循序區段。
在所說明之組態中,該處理器100亦包括一個匯流排介面模組105,使與此處理器100外部類似系統記憶體175、晶片集、北橋晶片、或其他積體電路等裝置相通訊。該記憶體175,可能專屬於該處理器100,或與一個系統之其他裝置共享。該記憶體175常見類型之範例,包括動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、非揮發性記憶體(NV記憶體)、和其他習見之儲存裝置。
在一個實施例中,程式碼係基於最大化之效能和電力,使分配於該等核心101與102之間。舉例而言,彼等程式碼區域經辨識,可在該兩核心101、102上面有較佳之執行。結果,當此等程式碼區域中有一個被遭遇/偵測到時,該程式碼區段,便會分配給該適當之核心。此等區域之辨識,可能係藉由硬體、軟體、或彼等之組合,以靜態方式(在該程式碼執行前,諸如透過程式分佈圖分析)或動態方式(在該程式碼執行期間),來加以完成。
在一個動態解決方案之例示性範例中,一個處理器核心,諸如核心101,可能會被選為一個內定之核心,使基於其效能、電力節省、內置式ISA、任何其他習見之處理考量、或彼等之組合--來執行程式碼。接著,該內定程式碼在核心101上面執行不佳而在核心102上面或可執行較佳之區域,會加以辨識。在隨後遭遇該等經辨識之程式碼區段時,彼等會分配給該核心102以供執行。值得注意的是,該等區域在核心102上面之執行可能包括:為核心101暖身之推測性超前執行;核心102上面之此等區域的序列執行,而依據此等區域之執行結果,在核心101上面之其他區域的執行;或此等區域隨著其他程式碼在核心102上面之執行的並列同時執行。
在靜態解決方案之範例中,一個編譯器或使用者,可能會以比方說指令或劃界,來辨識一些在一個或另一個核心上面執行較佳之程式碼區段。在此,該核心101會執行程式碼,直至遭遇此種指令為止。或響應來自核心102之監控,或藉由核心102之獨特初始碼(觸發),該經辨識之程式碼區段,接著便會基於此遭遇之指令,而在核心102上面執行。
辨識程式碼區段在一個或另一個核心上面有較佳之運行,係動態地或靜態地加以完成,在某些實施例中,該內置式程式碼會被轉譯及/或最佳化,以備在另一個核心上面運行。舉例而言,假定核心101包括一個可辨識某一第一ISA類型之解碼邏輯125,以及該核心102包括一個可辨識某一第二ISA類型之解碼邏輯126。在此狀況中,若該第一ISA類型的一個程式碼區域,係要在該核心102上面執行,則該程式碼區域,便會被轉譯成該第二ISA類型,以備在該核心102上面執行。值得注意的是,彼等ISA類型間之轉譯係純屬例示性。取而代之的是,要在該核心101上面執行之亂序式經最佳化的程式碼,可能會就順序式核心102之執行而加以再最佳化。在此情景中,該核心102可能會包括與該核心101相同之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上面,當該第一經轉譯之活躍程式碼執行完畢時,另一個來自該第二軟體線程之活躍區域,便可能會接著被執行。誠如可自此範例見到的是,該等程式碼階段,可能會針對每個核心做交替處理(interleaved),而促成管線處理類型之執行。在另一個實施例中,程式碼可能會相對於該兩核心而依序被執行,諸如一個程式碼區域在該核心101上面,該經辨識之程式碼區域在該核心102上面,以及接著隨後是另一個程式碼區域在該核心101上面。
此外,即使當有一個程式碼區域,最初被辨識為在該核心102上面執行時,該執行之效能,亦可能會被監控。兩者核心上面之效能,接著可能會考慮決定何者核心最適合執行該程式碼區域,以達成最大之效能和電力節省。舉例而言,若有一個程式碼區域,被辨識要在該核心102上面,被執行為經轉譯之程式碼,但該核心102上面之效能,係低於該核心101上面之效能(或者該核心102上面之效能增益,並未勝過在核心201上面執行之電力節省),則該程式碼可能會在隨後遭遇時,再分配給該核心101。
第1圖係例示一個範例性處理器之分離的邏輯視圖,而展現不同之模組、單元、和/或邏輯。然而,值得注意的是,一個利用本說明書所說明之方法和設備的處理器,並不需要包括該等例示之單元。而且,該處理器可能會省略所顯示之某些或所有單元。此外,上文大多數之討論,已參照一個亂序式處理器核心和一個順序式處理器核心。然而,誠如前文所述,該兩處理器核心,可能係任何版本之非對稱式核心,諸如一個內置式核心和一個軟體管理式核心。此外,第1圖僅描述兩個核心;然而,一個處理器亦可能包括任何數目之核心,諸如同一類型之多重核心,加上多於兩個類型各不相同之核心。
第1圖亦例示一個以點對點之方式與一個至某一外在記憶體控制器(控制器中心170)相耦合的處理器之實施例。然而,許多當今之處理器,已開始包括一個處理器級(on-processor)記憶體介面模組--一個晶片級(on-chip)模組--而具有一個用以互聯多重核心之環形組態,加上共享式快取區和其他介面。雖然未例示出,該處理器100,在一個實施例中,包括一個環形互聯耦合之核心、快取區、和記憶體控制器組件。
在此,快取區服務器,係被用來管理一個實體分配快取區之某一片段。就一個範例而言,每個快取區組件,係為管理一個並列式核心--一個與該快取區服務器相聯結之核心,以利其管理該快取區被分配之片段。與一個環形互聯體上面之快取區服務器處理資料流及與快取區片段之介面甚為類似,彼等核心服務器/組件,係為處理資料流及與快取區片段形成界接。另外,該環形互聯體可能會耦合至記憶體控制器介面邏輯(MCIL)和/或其他控制器,使與其他模組、此種記憶體、和/或一個圖形處理器相界接。
參照第2圖,所例示係一個用以在兩個核心中分配程式碼之程式碼分配模組的實施例。在一個實施例中,一些核心201、202,係屬非對稱式核心。舉例而言,該核心201係一個適於不依原始程式順序來執行程式碼之亂序式(OOO)核心,以及該核心202係一個適於依程式順序來執行程式碼之順序式(或序列)核心。一個非盡舉之範例性表列的其他核心類型包括:一個內置式核心、一個非內置式核心、一個軟體管理式核心、一個內置式ISA核心、一個經轉譯之ISA核心、一個協同設計式核心、一個推測性執行核心、和一個非推測性執行核心。
在一個實施例中,該程式碼分配模組210,係基於最大化之效能和電力節省,而在該等核心201與202之間分配程式碼。一個如本說明書所使用之模組,可能係指稱硬體、軟體、韌體、或彼等之組合。另外,一個模組、單元、或邏輯,可能係使集中在一個核心或處理器中,加上使分配各處。舉例而言,該程式碼分配模組210,可能包括分配一個與核心201、核心202、處理器200、或一個內含該處理器200之系統相關聯的儲存器內所保存之程式碼,諸如微碼或軟體。在此,分配程式碼在執行時,係為執行該程式碼之分配。相形之下,該程式碼分配程序,可能係由硬體、軟體、韌體、或彼等之組合,來加以管理。
在一個實施例中,該程式碼分配模組210,係為辨識程式碼的一個活躍區段。程式碼會在下文參照第4圖有更詳細之討論。然而,就此節討論有關之例示性範例而言,程式碼可能包括任何要以一個處理元件來執行之程式碼,諸如二進制碼或機器碼。程式碼的一個活躍部分,可能係指稱某一部份之程式碼,其基於考量,諸如電力、效能、熱量、其他習見之處理器度量、或彼等之組合,在一個核心上面執行,比起在另一個核心上面會更適合。在此,假定該核心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,包括可監控執行之硬體。就一個範例而言,該硬體包括微架構和/或架構性鉤件(hook),諸如用以測量退出推出(pushout)之退出推出標籤/計數器、用以計數指令之數量的指令計數器、用以測量整體執行長度和/或時間之整體循行執行測量邏輯、用以計數一個程式碼區段被執行之次數的再發性計數器、等等,使決定該程式碼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係為響應該OOO處理器核心上面之效能度量的低於一個臨界值,而辨識該程式碼325之活躍部分327。一個非盡舉之例示性表列的效能度量之範例包括:指令退出推出、指令執行數、執行一個程式碼區域之時間量、遭遇/執行一個程式碼區域之次數、一個程式碼區域執行期間所消耗之電量、一個程式碼區域執行期間之不同電力狀態中所耗費的時間量、一個程式碼區域執行期間之熱密度、等等。
使用以上諸範例中的一個,假定該OOO核心301,正在執行該程式碼325。而且,該監控器程式碼正在執行,而決定該程式碼325的一些區域在該核心301上面執行之次數。當計數符合或超過某一臨界值時,在一個實施例中,該監控器模組305會辨識/決定出,該區域327為活躍程式碼。若所使用為三之臨界值,則當正在該核心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,會偵測在該核心301上面之活躍程式碼區域327的執行,故最佳化係在該核心302上面開始。正當來自該活躍區域327之進一步指令,仍正在該核心301上面執行之際,該核心302會開始最佳化。結果,該核心302本質上係與該核心301上面之活躍程式碼327的執行並列地最佳化該活躍程式碼327。在另一個範例中,該核心301係與該核心302之最佳化活躍程式碼327並列地,執行程式碼325之其他區段或其他互斥性程式碼。在另一個實施例中,該活躍區域327之最佳化,係序列地被完成。舉例而言,該核心301會執行該活躍區域327,以及接著該等核心301或302,隨繼會最佳化該活躍程式碼區域327。
在一個實施例中,該程式碼327係儲存在其原始記憶體位置處,以及會在作業中被該核心302轉譯。然而,在大部份之情況中,在執行之前轉譯/最佳化整個程式碼區段,會是較有效率的。結果,在該最佳化/轉譯元件310就一個類似核心302之核心而最佳化程式碼之後,該最佳化之活躍程式碼304,係儲存在其他處。另一個有關最佳化之活躍程式碼304的位置,可能係記憶體內的另一個位置,諸如本地系統記憶體位置。然而,由於該活躍程式碼327,經常係與經常之執行相關聯,使最佳化之版本304保持較接近核心302,係潛在可能屬有利的。所以,在此例示之實施例中,該核心303包括一個用以保存該最佳化之活躍程式碼304的程式碼快取區302。值得注意的是,該程式碼快取區303可能會是:該核心302的一個分開之快取區結構;一個共用之快取區結構,諸如該核心302中的一個共用之指令或資料快取區;或者其他與核心302相聯結之通用儲存結構。
回頭參照該監控器模組305之討論,一個遭遇該活躍程式碼區域327之實施例,包括一個可參照一個與一個程式碼區段相聯結之指令位址的程式計數器。誠如所描述,一個映射模組315,係為保存與一個最佳化之活躍程式碼參照值317相聯結的程式碼區域參照值,諸如該等指令位址。本質上,該映射模組315的一個登錄項,可使該活躍程式碼區域327,與其最佳化之版本(最佳化之活躍程式碼304)相聯結。就一個例示性範例而言,一個參照值316,包括一個與該活躍區域327相聯結之位址,諸如該指令位址。在此情景中,當該核心301遭遇(一個程式計數器指向)該映射模組315在欄位316中所保存之指令位址時,則該監控模組305會指出,該活躍區域327已被遭遇到,以及要在該核心302上面執行。一個在上文扼要說明而會在下文更詳細加以討論之合作模組320,接著會促使資料和/或脈絡,移動至該核心302以供執行。
決定該活躍區域327已被遭遇到及要在該核心302上面執行,在以上之範例中,係僅針對該參照值316。該等欄位317與欄位316之聯結,可能接著會被利用來迅速決定該區域327之最佳化的活躍程式碼版本304究位於何處。結果,該欄位317可能會包括該最佳化之活躍程式碼304的位置之任何參照值。此種參照值之少數簡單範例包括:該程式碼快取區303中保存最佳化之程式碼304的登錄項之位址、自該程式碼快取區303之起點至保存最佳化之活躍程式碼的登錄項304之差距值、和一個與該登錄項304相聯結之實體的或線性位址。該映射模組315,係例示在一個簡單之列表結構中,其可能係在硬體、軟體、韌體、或彼等之組合中,加以實現及/或維護。然而,任何使一個位置與另一個位置相聯結之習見方法,可能會被利用而使該活躍程式碼327與一個最佳化之版本相聯結。
雖然未明確例示出,該監控器模組305與該映射模組315相結合之部分,可能會形成一個觸發器模組,使指示該最佳化之活躍程式碼304,為要在該核心302上面執行,而非該核心301上面之內置式程式碼327。就一個範例而言,當該核心301有關的一個程式計數器,移至次一指令位址時,該觸發器硬體,會檢查相對於該映射硬體列表315中所儲存之參照值的位址。在此,假定該程式計數器,指出上述參照該欄位316中所保存之程式碼區域327的指令位址。接著,該觸發器硬體,會基於該映射表315中之登錄項,指示有一個有關該程式碼區域32之最佳化的程式碼區域304存在。結果,程式碼區域327在核心301上面之執行,係可能被取消,因為有一個最佳化之版本早已存在,以及要在該核心302上面執行。
在一個實施例中,該核心301會終止執行(停止或轉變成低電力狀態),直至該核心302完成該最佳化之程式碼的執行為止。然而,此可能會無法充分利用到該處理器300之處理能力。所以,在另一個實施例中,正當該最佳化之活躍程式碼304,正在該核心302上面執行之際,該核心301會交叉執行另一個軟體線程(程式碼325以外之程式碼)。就再有的一個範例而言,該核心301可能會以推測方式,執行該程式碼325之其他部分,其本質上係進行執行之超前(run-ahead)助手線程,或者係執行該程式碼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,能夠使該核心301上面之程式碼區段327的效能,與該核心302上面之最佳化版本304的效能相比較。此外,當該核心302上面之效能低於該核心301上面之效能時,或者比起耗電量之增加,其效能增益在該核心302上面係較小,則辨識該區域327為活躍程式碼之決定,係可能使逆轉。就一個範例而言,該映射模組315指示此種決定之登錄項,會重新被指派或使無效;以致該核心301在下次遭遇該活躍程式碼327時,該監控器模組305,便不會偵測該參照值316,以及不會指示該區域327的一個最佳化之活躍程式碼版本應在該核心302上面執行。本質上,該先前辨識出之區域327,會反向遷移回至該亂序式核心301。
就一個進一步示範此效能比較之特定例示性範例而言,假定該程式碼區域327,基於一個高再發性樣式,和一個高指令執行計數,被辨識為活躍程式碼。結果,該程式碼327會被該核心302上面所存在之二進制轉譯程式碼最佳化,使得到最佳化之程式碼304。當該最佳化之程式碼304,係存在於該程式碼快取區303中時,該映射表315中的一個登錄項會被建立,而使該程式碼區域327,與最佳化之版本304相聯結。當該核心301在下次遭遇一個與該欄位316中之參照值相匹配的參照值時,則該最佳化之程式碼304的執行,便會在該核心302上面被觸發,而非在該核心301上面,執行該程式碼區域327。值得注意的是,該合作模組,透過轉移、共用、或脈絡交換,可將來自該核心301之適當值,提供給該核心302。在該核心302執行該最佳化之活躍程式碼304期間,該同一效能度量--指令執行計數--會被該監控器模組305追蹤。若該指令執行計數,係小於該程式碼區域327在核心301上面之執行,則上述被辨識為活躍程式碼之區域327的現狀,在未來將會繼續。然而,若該指令執行計數,在該核心302上面係較大,或者有一個顯著之電力增量被偵測到,則該區域327為活躍程式碼之辨識,使可能如上文所描述地加以逆轉。
除在該等核心301和302之間提供通訊以外,該合作模組320,可能亦包括其他可管理不同類型之多重核心的特徵。就一個第一範例而言,一個電力管理器可體現一個電力演算法,使確保該等核心301和302,在該同一時間下,不會在最大之電力下運作。然而,此範例係純屬例示性。而且,其他之電力演算法,係可能容許此種最大運作。就另一個電力考量而言,該核心302在監控該核心301上面之執行期間,可能會存在於某一低於最大之電力狀態(某一低電力狀態)中。舉例而言,當該核心301係與一些可執行其自身之監控機構時,則該核心302並不需要供全電力,直至有一個程式碼之最佳化版本要被執行為止。結果,藉由關掉核心302直至執行有需要時為止,係有潛在可能使電力節省。反之,正當該核心302在執行該最佳化的活躍程式碼之際,該核心301可能會使減能(進入某一超過最大之電力狀態,諸如一種ACPI低電力狀態)。
回至第4圖,所例示係一種有關在一個亂序式核心與一個順序式核心間分配程式碼使達成最大之效能和電力節省之方法的流程圖之實施例。雖然第4圖之流程,係例示在一種實質上之序列形式中,該流程圖之執行,可能會在某一不同之順序中,加上會在並列中。舉例而言,流程410和415可能係在該程式在流程405中在一個亂序式核心上面執行之前在程式編譯期間被執行。此外,每個流程可能係利用硬體、韌體、或透過程式碼之執行,來加以執行。
在流程405中,程式碼在一個處理器之亂序式(OOO)處理器核心上面之執行會被監控。參照程式碼,在一個實施例中,係指稱(1)執行一個編譯器程式,或以動態方式或以靜態方式,使編譯其他之程式碼;(2)執行主程式,諸如一個作業系統、系統管理程式、應用程式碼、或其他軟體程式;(3)執行其他之程式碼,諸如與該主程式碼相聯結之程式庫;(4)執行其他之程式碼,諸如助手線程或其他任務,其可能不會直接與該主程式相關聯;或(5)彼等之組合。
一個編譯器經常包括一個程式或程式集,而將原始本文/程式碼,轉譯成目標本文/程式碼。通常,以一個編譯器編譯程式/應用程式碼,係在將高階程式語言碼轉變成低階機器碼或組合語言碼之多重階段和回合中加以完成。然而,單一回合編譯器,可能仍會就簡單之編譯加以利用。一個編譯器可能會利用任何習見之編譯技術,以及執行任何習見之編譯器運作,諸如字彙分析、預處理、剖析、語意分析、程式碼產生、程式碼變換、和程式碼最佳化。
一些較大之編譯器,經常包括多重階段,但此等階段最常見係包含在兩個一般性階段中:(1)一個前端段,亦即,通常在此可能會有句法處理、語意處理、和某些變換/最佳化發生,和(2)一個後端段,亦即,通常在此會有分析、變換、最佳化、和程式碼產生發生。某些編譯器係指稱一個中央端段,其係例示在一個編譯器之前端段與後端段間之描繪的模糊。結果,對插入、聯結、產生、或一個編譯器之其他運作的參照,可能會在任何前述之階段或回合中發生,加上在一個編譯器之任何其他習見之階段或回合中發生。
在一個實施例中,監控程式碼之執行,包括追蹤該程式碼內之碼段/區域的執行之次數。彼等程式碼區域,可能以任何分組指令/程式碼之習見方式來加以決定。就一個範例而言,每次有一個與某一程式碼區段相關聯之指令位址被該OOO核心的一個程式計數器參照時,一個再發性計數便會遞增。若該程式碼區段之復發性計數,超過一個臨界值,在一個實施例中,該程式碼區段,便會在流程410中,被辨識為活躍程式碼。
或連同決定再發性樣式或分開地,監控程式碼之執行,可能會包括決定/追蹤一個與程式碼區段相聯結之效能度量。誠如上文所揭示,一些範例性效能度量包括:指令退出推出、若干被執行之指令、執行一個程式碼區域之時間量、一個程式碼區域被遭遇/執行之次數、執行一個程式碼區域期間所消耗之電量、執行一個程式碼區域期間耗費在不同電力狀態中之時間量、執行一個程式碼區域期間之熱密度。然而,任何與處理器執行相聯結之習見度量,或度量之組合,係可能在該程式碼執行期間加以監控。
在流程410中,該程式碼之活躍區段係基於再發性樣式、效能度量、或彼等之組合,來加以辨識。與上述範例相類似,在一個再發性計數與一個臨界值相比較之情況中,效能度量可能亦會與一個臨界值相比較。舉例而言,一個監控器可能會計數超過一個推出次數臨界值之退出推出數。而且,若該等推出超過一個計數臨界值,則該程式碼區段,便會被辨識為一個活躍程式碼區段。雖然此範例僅揭示一個考量之單一效能度量,辨識程式碼之活躍程式碼區段,可能係基於效能度量和/或再發性樣式之任何組合。舉例而言,一個演算法可能係被策劃來評估多數之效能度量、電力考量、和一個再發性樣式,使辨識一個程式碼區段為活躍程式碼。正如該演算法或將會是實現體專屬性,以及置換之數目或將會是範圍廣的,一個組合式演算法之細節,並未詳加討論,以避免不必要地使說明內容混淆。誠如上文所述,辨識程式碼區段為活躍程式碼,可能會在該程式碼之執行前加以完成,諸如在該程式碼之編譯期間,藉由一個編譯器,或者在運行時間下,藉由一個運行時間編譯器、硬體、韌體、其他之軟體、或彼等之組合。
響應辨識該活躍程式碼區域,該程式碼之活躍區段,係就一個協同設計式處理器核心上面之執行加以最佳化,使在流程415中,得到該程式碼之最佳化的活躍區段。在一個實施例中,此種最佳化包括,使該程式碼之活躍區段,自可被一個與該亂序式處理器核心相聯結之解碼邏輯識別的內置式指令,轉譯成可被一個與該協同設計式核心相聯結之解碼邏輯識別的協同設計式指令。然而,轉譯並非必要。事實上,在一些實施例中,該協同設計式核心,可能係一個能夠執行與該亂序式核心相同之ISA或其子集的序列式核心。在此情景中,該程式碼可能不會使自一個ISA轉譯成另一個ISA,而是使自一個有關亂序式執行之格式,轉譯/最佳化成一個有關序列式執行之格式。任何轉譯和/或最佳化程式碼之習見方法,諸如一些習見之分析、轉譯、變換、和/或最佳化程式碼的編譯器方法,可能會被利用。就一個特定之例示性範例而言,二進制轉譯程式碼,可能係存在於該協同設計式核心上面,而使該程式碼,轉譯/最佳化成該程式碼之最佳化活躍區段。
該程式碼之最佳化活躍區段,會在流程420中分配給該協同設計式處理器核心。在一個實施例中,該分配包括將該程式碼之最佳化活躍區段,寫入至一個與該協同設計式核心相聯結之程式碼快取區。然而,該分配可能會自任何之儲存結構以及隨時而加以完成。舉例而言,該最佳化之活躍區段,可能係使儲存進某一系統記憶體內,以及使在執行之前,立刻分配給該協同設計式核心。
在流程425中,該程式碼被辨識之活躍區段,係與該程式碼之最佳化活躍區段相關聯。舉例而言,一個對該程式碼之活躍區段的參照值,和一個對該最佳化之活躍區段的參照值,係儲存在一個程式碼映射列表的一個登錄項中。繼續該程式碼快取區範例,上述對該最佳化之活躍區段的參照值,包括任何對該程式碼快取區內之最佳化活躍程式碼的位置之參照值,諸如一個位址或差距。然而,任何習見之資料結構和/或方法,可能會被利用,而使該活躍程式碼區段與其最佳化之版本的位置相聯結。
接著,當該等程式碼區段,係在該亂序式核心上面執行期間遭遇到時,該程式碼之最佳化活躍區段,便會在流程430中,以該協同設計式處理器核心,來加以執行,而非該亂序式核心。誠如上文所陳述,該程式碼之最佳化活躍區段的執行,基於該設計實現體,可能係與其他程式碼在該亂序式核心上面之執行並列地發生,或者與其他程式碼在該亂序式核心上面之執行序列地發生。然而,在該並列式實現體中,該亂序式核心,可能有能力執行其他來自與該最佳化活躍程式碼之同一線程的程式碼,加上來自其他線程交替處理之程式碼。
在流程435中,在該協同設計式處理器核心上面之最佳化活躍區段的執行,係在一個與該亂序式處理器核心上面之執行的流程405中所執行之監控相類似的方式中加以監控。舉例而言,流程405中所監控之同一效能度量,亦可能會在以該順序式協同設計式處理器核心來執行該程式碼之最佳化活躍區段期間受到監控。而且,其可能指示出的是,該程式碼之活躍區段,係響應該等指示在該順序式核心上面比起在亂序式核心上面效能較低之效能度量,而要以該亂序式核心來執行,而非以該順序式核心,執行該程式碼之最佳化活躍區段。
轉至第5圖,所描述係另一個在一個亂序式核心和一個順序式核心中分配程式碼使達成最大之效能和電力節省的方法有關之流程圖的實施例。在流程505中,響應辨識一個包括就一個第一處理器核心加以最佳化之第一程式碼類型的程式碼區域為活躍程式碼,該程式碼區域,會與一個轉譯之活躍區域相聯結,後者包括自該第一程式碼類型轉譯成一個要就一個第二處理器核心加以最佳化之第二類型的程式碼區域。
在一個實施例中,該第一處理器核心,包括一個亂序式處理器核心,該第一程式碼類型,包括一個就該亂序式處理器核心加以最佳化之亂序式程式碼類型,該第二處理器核心,包括一個順序式處理器核心,以及該第二程式碼類型,包括一個就該順序式處理器核心加以最佳化之順序式程式碼類型。就一個範例而言,該亂序式處理器核心,係與一個可識別一個第一指令集架構(ISA)之解碼邏輯相聯結,以及該順序式處理器核心,係與一個可識別一個第二ISA之解碼邏輯相聯結。在此,該第二程式碼類型,係進一步就該第二ISA加以最佳化。
在一個實施例中,上述與第一處理器核心相聯結之解碼邏輯,係要至少解碼一個來自該程式碼而指示該程式碼區域為活躍程式碼之指令。在此,一個使用者可能包括該程式碼中可辨識該活躍區域之指令。或者,一個編譯器,在編譯該程式碼時,可能會響應該程式碼之分析而插入該指令。在另一個實施例中,硬體可監控該第一核心上面之程式碼區域的執行,以及可基於此硬體監控,來辨識該程式碼區域為活躍程式碼。
此外,該程式碼區域,可能係與一個轉譯之活躍區域相聯結,其係透過更新一個資料結構中的一個登錄項,而使一個該程式碼區域之參照值,與一個對該轉譯之活躍區域的參照值相聯結。舉例而言,上述對該轉譯之活躍區域的參照值可能包括:一個位址、一個指令位址、一個快取區記憶體內之位置、一個程式計數器值、和一個指令作業碼。
在流程510中,該第二處理器核心上面之轉譯的活躍區域,係響應在以該第一處理器核心執行該程式碼期間的遭遇到該程式碼區域而被執行。就一個範例而言,當該第一處理器核心之指令指標,參照該程式碼之活躍區域時,該轉譯之區域,便會在該第二處理器上面執行。然而,任何時刻遭遇一個指令,便可能觸發該第二核心上面之執行。舉例而言,接取一個特定之指令,或者解碼一個特定之位址,可能會改為觸發該執行。
在一個實施例中,在諸核心間辨識及分配程式碼時,電力考量亦會被納入。就一個例示性範例而言,當該第二處理器核心,執行該轉譯之活躍區域時,該第一處理器核心,係使轉變成一種可節省電力之低電力狀態。而且,一些特定之電力考量,在一個實施例中,可能會限制兩者核心同時在最大之電力下運作。
使一個內置式核心與一個不同之協同設計式核心相耦合的結果所致,有潛在可能得到最佳之電力和執行利益,縱使是在一個單一之應用中。舉例而言,藉由一個亂序式核心,和一個軟體管理順序式核心,一個在該軟體管理式核心上面效率不彰之程式碼,會遷移至該亂序式核心。而且,反之,一個在該亂序式核心上面效率不彰之程式碼,會遷移至該軟體管理式核心。透過硬體、軟體、韌體、或彼等之組合,因而內置式程式碼、活躍程式碼偵測、和活躍程式碼最佳化之並列執行,可能會有效率地被管理,同時,多重線程之個別區段,可能會在亂序式核心與協同設計順序式核心之間,在一種管線之形式中,被有效率地交替處理。結果,最大之效能可能會得到,同時可透過不同之電力效益技術,達成較佳之電力效能,諸如在某些實現體中,透過在該順序式核心上面之執行期間,將該亂序式核心置於一種低電力狀態下。
一個如本說明書所使用之模組,係指稱任何之硬體、軟體、韌體,或彼等之組合。經常,彼等被例示為分開之模組邊界,一般會有變化及有潛在可能會相重疊。舉例而言,一個第一模組和一個第二模組,可能會共用硬體、軟體、韌體、或彼等之組合,同時有潛在可能會保有某些獨立之硬體、軟體、或韌體。在一個實施例中,術語『邏輯』之使用包括硬體,諸如電晶體、暫存器、或其他硬體,諸如可程式化邏輯裝置。然而,在另一個實施例中,邏輯亦包括軟體或與硬體整合之程式碼,諸如韌體或微碼。
一個如本說明書所使用之值,包括一個數字、狀態、邏輯狀態、或二進制邏輯狀態之任何習見的表示。經常,邏輯位準、邏輯值、或邏輯性值之使用,亦被稱為一個1和0,彼等僅表示二進制邏輯狀態。舉例而言,一個1係指稱一個高邏輯位準,以及一個0係指稱一個低邏輯位準。在一個實施例中,一個儲存單元格,諸如一個電晶體或快閃單元格,可能有能力保存一個單一邏輯值或多重邏輯值。然而,電腦系統中之值的其他表示業已被使用。舉例而言,十進制數之十,亦可能被表示一個1010之二進制值,和一個十六進制字符A。所以,一個值包括任何能夠被保存在一個電腦系統中之資訊的表示值。
此外,彼等狀態可能係由一些值或部份之值來表示。就一個範例而言,一個第一值,諸如一個邏輯一,可能表示一個內定值或起始狀態,而一個第二值,諸如邏輯零,可能表示一個非內定狀態。此外,術語「重置」和「設定」,在一個實施例中,係分別指稱一個內定值和一個被更新之值或狀態。舉例而言,一個內定值係有潛在可能包括一個高邏輯值,亦即,重置,而一個被更新之值,係有潛在可能包括一個低邏輯值,亦即,設定。值得注意的是,彼等值之任何組合,可能會被利用來表示任何數目之狀態。
上文所闡明之方法、硬體、軟體、韌體、或程式碼的實施例,可能係經由一個可被一個處理元件執行之機器可存取式媒體或機器可讀取式媒體上面所儲存的指令或程式碼,來加以實現。一個機器可存取式/可讀取式媒體,可能包括任何可提供(亦即,儲存和/或傳送)某種在形式上被一個類似電腦或電子系統等機器讀取之資訊的機構。舉例而言,一個機器可存取式媒體,包括隨機存取記憶體(RAM),諸如靜態隨機存取記憶體(SRAM)或動態隨機存取記憶體(DRAM);唯讀記憶體(ROM);磁性或光學儲存媒體;快閃記憶體裝置;電氣儲存裝置;光學儲存裝置;聲頻儲存裝置;其他形式用以保存一些傳播之信號(例如,載波、紅外線信號、數位信號)的儲存裝置;等等。
整篇說明書引用“一個實施例”或“某一實施例”,係意謂一個配合該實施例所說明之特定特徵、結構、或特性,而包括在本發明之至少一個實施例中。因此,出現在整篇說明書各處之片語“在一個實施例中”或“在某一實施例中”,並非必然全係指稱同一實施例。此外,該等特定之特徵、結構、或特性,可能會在一個或多個實施例中,以任何適當之方式相結合。
在前述之具體說明中,業已參照一些特定之範例性實施例做了詳細說明。然而,很顯然的是,各種修飾體和變更形式,係可能針對其完成,而不違離所附申請專利範圍中所闡明本發明之廣意精神和界定範圍。該等具體說明和繪圖,因而理當被視為例示性,而非有限制意。此外,前文使用之實施例和其他範例性語言,並非必然指稱同一實施例或同一範例,而可能係指稱不同的和有別的實施例,加上有潛在可能指稱同一實施例。
100,200,300...處理器
101,102,201,202,301,302...核心
101a,101b,102a...架構狀態暫存器
101a,101b,102a...硬體線程
101a,101b...硬體線程時槽
110...較高階之快取區
115...低階資料快取區和資料-TLB
120...指令分支標的緩衝器(ILTB)
121...接取單元
125...解碼器
125,126...解碼邏輯
126...解碼單元
130...重新命名分配器邏輯
135...重新安排/退出單元
140...排程器/執行單元
141...執行單元
150...資料轉譯緩衝器(D-TLB)
151...資料快取區
105...匯流排介面模組
170...控制器中心
175...系統記憶體
210...程式碼分配模組
303...程式碼快取區
304...最佳化之活躍程式碼
305...監控器模組
310...最佳化/轉譯元件
315...映射模組
315...映射硬體列表
316...參照值
317...最佳化之活躍程式碼參照值
320...合作模組
325...內置式程式碼
327...活躍區段/區域
405,410,415,420,425,430,435,505,510...流程
第1圖係例示一個包括兩個非對稱式核心之處理器的實施;
第2圖係例示一個包括一個內置式核心、一個軟體管理式核心、和一個程式碼分配模組之處理器的實施例;
第3圖係例示一個用以在一些核心中分配程式碼使達成最大效能和最大電力節省之處理器的實施例;
第4圖係例示一個在一個亂序式核心和一個順序式核心中分配程式碼使達成最大效能和最大電力節省之方法的流程圖之實施例;而
第5圖則例示另一個在一個亂序式核心和一個順序式核心中分配程式碼使達成最大效能和最大電力節省之方法的流程圖之實施例。
100...處理器
101,102...核心
101a...架構狀態暫存器
101a,101b...硬體線程
101a,101b...硬體線程時槽
101b,102a...架構狀態暫存器
102a...硬體線程
110...較高階之快取區
115...低階資料快取區和資料-TLB
120...指令分支標的緩衝器(ILTB)
121...接取單元
125...解碼器
125...解碼邏輯
126...解碼單元
126...解碼邏輯
130...重新命名分配器邏輯
135...重新安排/退出單元
140...排程器/執行單元
141...執行單元
150...資料轉譯緩衝器(D-TLB)
151...資料快取區
105...匯流排介面模組
170...控制器中心
175...系統記憶體
Claims (46)
- 一種用於改善電力效能之設備,其包含有:一個積體電路,其包括:一個適於不依程式順序來執行程式碼之亂序式(OOO)處理器核心;一個適於依程式順序來執行該程式碼之一活躍部分的順序式處理器核心;和一個適於辨識該程式碼之該活躍部分的監控器硬體,使該監控器硬體適於測量於該OOO處理器核心執行期間有關該程式碼之該活躍部分的效能度量,以及響應在該OOO處理器核心上的效能度量係低於一臨界值,來辨識該程式碼之該活躍部分。
- 如申請專利範圍第1項之設備,其中,該適於辨識該程式碼之該活躍部分的監控器硬體更包括:使該監控器硬體適於:監控該程式碼在該OOO處理器核心上面之執行;基於監控該程式碼在該OOO處理器核心上面之執行,來決定該程式碼之該活躍部分有關的再發性樣式;以及基於該再發性樣式,來辨識該程式碼之該活躍部分。
- 如申請專利範圍第2項之設備,其中,該適於基於監控該程式碼在該OOO處理器核心上面之執行來決定該程式碼之該活躍部分有關的再發性樣式之監控器硬體包 括:使該監控器硬體適於決定隨時間該程式碼之該活躍部分被執行的次數;以及其中,該適於基於該再發性樣式來辨識該程式碼之該活躍部分的監控器硬體包括:使該監控器硬體適於響應該次數之大於一個活躍程式碼臨界值,來辨識該程式碼之活躍部分。
- 如申請專利範圍第2項之設備,其中,該監控器硬體係包括在該積體電路選自由該OOO處理器核心、該順序式處理器核心、和該積體電路未包括在該OOO處理器核心或該順序式處理器核心中之非聯結部分所構成的群組之部分中。
- 如申請專利範圍第1項之設備,其中,該監控器硬體亦適於測量該順序式處理器核心之執行期間有關該程式碼的該活躍部分之效能度量,以及響應在該順序式處理器核心上面之效能度量的低於該OOO處理器核心之執行期間有關該程式碼的活躍部分之效能度量,來指示該程式碼之該活躍部分不再被視為程式碼的一個活躍部分。
- 如申請專利範圍第1項之設備,其中,該積體電路進一步包含有:一個適於將來自該OOO處理器核心之輸入值提供給該順序式處理器核心的合作硬體。
- 如申請專利範圍第6項之設備,其中,該適於將來自該 OOO處理器核心之輸入值提供給該順序式處理器核心的合作硬體包含有:一個適於執行至少自該OOO處理器核心至該順序式處理器核心之局部脈絡交換的脈絡交換邏輯,其中,該至少之局部脈絡包括至少該等輸入值。
- 如申請專利範圍第6項之設備,其中,該適於將來自該OOO處理器核心之輸入值提供給該順序式處理器核心的合作硬體包含有:一個適於讀取來自該OOO處理器核心中之暫存器的輸入值及將該等輸入值寫入至該順序式處理器核心中之輸入暫存器的指引存取硬體。
- 如申請專利範圍第1項之設備,其中,該積體電路進一步包含有一個用以保存最佳化程式碼之程式碼儲存邏輯,其在被執行時,可使就該順序式處理器核心上面所執行之該程式碼之該活躍部分最佳化,以及其中,該最佳化程式碼係要響應該監控器硬體之辨識該程式碼的該活躍部分而被執行以最佳化該程式碼之該活躍部分。
- 如申請專利範圍第9項之設備,其中,該最佳化程式碼包括最佳化微碼,以及其中,在被執行時可使就該順序式處理器核心上面所執行之該程式碼之該活躍部分最佳化的該最佳化微碼包括:該最佳化微碼在被執行時,可將來自該OOO處理器核心之解碼器所識別的一第一指令集架構(ISA)之程式碼的活躍部分,轉譯成該順序式處理器核心之解碼器所 識別的一第二ISA。
- 如申請專利範圍第10項之設備,其中,該順序式處理器核心係要與一個程式碼快取區相聯結,使該程式碼快取區適於在將來自該第一ISA之程式碼的活躍部分被轉譯成該第二ISA以後,保存該程式碼之該活躍部分的最佳化版本。
- 如申請專利範圍第1項之設備,其中,該積體電路進一步包含有一個觸發器硬體,其適於:響應該監控器硬體之辨識該程式碼的該活躍部分,而指示該程式碼之該活躍部分為活躍程式碼,以及響應該OOO處理器核心之遭遇該程式碼的該活躍部分,且該觸發器硬體之指示該程式碼的該活躍部分為活躍程式碼,而觸發該程式碼之該活躍部分在該順序式處理器核心上面的執行。
- 如申請專利範圍第12項之設備,其中,該適於指示該程式碼之該活躍部分為活躍程式碼的該觸發器硬體包括:該觸發器硬體適於保存一個對於該程式碼之該活躍部分的參照值,而與一個對於該程式碼之該活躍部分的最佳化版本之參照值相聯結,後者係經最佳化以便在該順序式處理器核心上面被執行。
- 一種用於改善電力效能之設備,其包含有:一個處理器,其包括:一個適於執行程式碼之亂序式核心;一個協同設計式核心;和 一個程式碼分配模組,其適於辨識該程式碼的一個活躍部分,以及就該協同設計式核心而最佳化該程式碼之該活躍部分,以得到最佳化之活躍程式碼,其中,該協同設計式核心,係用以響應該程式碼分配模組之辨識該程式碼的活躍部分,和該亂序式核心為執行而遭遇該程式碼之活躍部分,而執行該最佳化之活躍程式碼。
- 如申請專利範圍第14項之設備,其中,該適於辨識該程式碼之該活躍部分的程式碼分配模組包含有:一個解碼邏輯,其適於自該程式碼解碼出一個活躍程式碼標識符指令,其係用以辨識該程式碼之該活躍部分。
- 如申請專利範圍第14項之設備,其中,該適於辨識該程式碼之該活躍部分的程式碼分配模組包含有:一個監控器模組,其適於監控該程式碼在該亂序式核心上面之執行,以及由監控該程式碼在該亂序式核心上面之執行,而辨識該程式碼之該活躍部分。
- 如申請專利範圍第16項之設備,其中,該監控器模組包含有一個在該協同設計式核心中之執行邏輯,其適於執行監控程式碼,其中,該監控程式碼,在被該協同設計式核心中之該執行邏輯執行時,係用以監控該程式碼在該亂序式核心上面之執行,以及辨識該程式碼之該活躍部分。
- 如申請專利範圍第14項之設備,其中,該適於就該協同設計式核心最佳化該程式碼之該活躍部分以得到最佳化之活躍程式碼的程式碼分配模組,包含有一個可執行 轉譯程式碼之執行邏輯,其中,該轉譯程式碼在被執行時,係用以轉譯該程式碼之該活躍部分,以得到該最佳化之活躍程式碼,以及其中,該程式碼之該活躍部分包括由該亂序式核心之解碼器可識別的一第一指令集架構(ISA)的一部份之指令,以及該最佳化之活躍程式碼包括由該協同設計式核心之解碼器可識別的一第二ISA的一部份之指令。
- 如申請專利範圍第14項之設備,其中,該協同設計式核心,係用以響應該程式碼分配模組之辨識該程式碼的該活躍部分,和該亂序式核心為執行而遭遇該程式碼之該活躍部分,而執行該最佳化活躍程式碼,其中包括:響應一個與該亂序式核心相聯結之程式計數器的參照一個與該程式碼之該活躍部分相聯結的指令位址,和一個映射列表使該程式碼之該活躍部分與該最佳化之活躍程式碼相聯結,而指示該程式碼之該活躍部分為活躍程式碼,該協同設計式核心係用以執行該最佳化之活躍程式碼。
- 如申請專利範圍第19項之設備,其進一步包含有一個要與該協同設計式核心相聯結之程式碼快取區,其中,一個使該程式碼之該活躍部分與該最佳化之活躍程式碼相聯結而指示該程式碼之該活躍部分為活躍程式碼的映射列表包括:該映射列表的一個登錄項,係保存一個對於該程式碼之該活躍部分的參照值和一個對於該最佳化之活躍 程式碼的參照值,其中,該對於最佳化之活躍程式碼的參照值包括一個對於該程式碼快取區中之最佳化的活躍程式碼之位置的參照值。
- 如申請專利範圍第14項之設備,其中,該處理器係耦合至一個系統記憶體,其係選自一個由隨機存取記憶體(RAM)、雙倍資料率(DDR)隨機存取記憶體、和一個緩衝隨機存取記憶體所構成之群組,其中,該系統記憶體係用以保存程式碼。
- 一種處理器,其包含有:一個與解碼邏輯相聯結而適於識別一個第一指令集架構(ISA)類型之第一核心;一個與解碼邏輯相聯結而適於識別一個第二指令集架構(ISA)類型之第二核心;一個監控器模組,其用以監控屬該第一ISA類型之程式碼在該第一核心上面的執行,以及用以辨識該程式碼之一活躍區域;和一個轉譯模組,其用以將該程式碼之該活躍區域自該第一ISA類型轉譯成該第二ISA類型,以得到該程式碼的一轉譯活躍區域;其中,該第二處理器核心,係用以響應該第一處理器核心隨後之遭遇該程式碼的該活躍區域,和該監控器硬體之辨識該程式碼的該活躍區域,而執行該程式碼的該轉譯活躍區域。
- 如申請專利範圍第22項之處理器,其中,該監控器模組 包含有監控器程式碼,其在被執行時,用以監控程式碼在該第一核心上面之執行,以及用以辨識該程式碼的一個活躍區域;以及其中,該轉譯模組包含有轉譯程式碼,其在被執行時,用以轉譯該程式碼之該活躍區域,以至少局部地與該程式碼在該第一核心上面之執行並列地得到該程式碼的該轉譯活躍區域。
- 如申請專利範圍第22項之處理器,其中,該監控器模組包含有一個監控器硬體,其用以監控程式碼在該第一核心上面之執行,以及用以辨識該程式碼的一個活躍區域。
- 如申請專利範圍第22項之處理器,其中,正當該監控器模組在監控該程式碼在該第一核心上面執行,以及在辨識該程式碼之該活躍區域時,該第二核心係適於存在於一低電力狀態中,以及其中,正當該第二核心在執行該程式碼的該轉譯活躍區域時,該第一核心係適於存在於一低電力狀態中。
- 如申請專利範圍第22項之處理器,其中,該第一核心係適於與該第二核心執行該程式碼的該轉譯活躍區域並列地執行該程式碼的一個非活躍區域。
- 如申請專利範圍第22項之處理器,其中,該第一核心和該第二核心係適於不會同時在一個最大之電力狀態中運作。
- 一種包含有程式碼之機器可讀取式媒體,其在被該機器執行時,可使該機器執行如下運作: 監控該機器內的一個處理器中之一亂序式處理器核心上面之程式碼的執行;辨識該程式碼之活躍區段;就該機器內之一個協同設計式處理器核心上面的執行,最佳化該程式碼之活躍區段,以得到該程式碼之最佳化活躍區段;將該程式碼之最佳化活躍區段,分配給該協同設計式處理器核心;以及以該協同設計式處理器核心,來執行該程式碼之最佳化活躍區段。
- 如申請專利範圍第28項之機器可讀取式媒體,其中,監控程式碼在一個亂序式處理器上面之執行包括:決定一個與該程式碼之區段相聯結的效能度量。
- 如申請專利範圍第29項之機器可讀取式媒體,其中,辨識該程式碼之活躍區段包括:基於相較一效能臨界值之效能度量,來決定該程式碼之區段為該程式碼之活躍區段。
- 如申請專利範圍第28項之機器可讀取式媒體,其中,就該機器內之一個協同設計式處理器核心上面的執行而最佳化該程式碼之活躍區段包括:使該程式碼之活躍區段,自該等可被與該亂序式處理器核心相聯結之解碼邏輯識別的內置式(native)指令,轉譯成可被與該協同設計式核心相聯結之解碼邏輯識別的協同設計式指令。
- 如申請專利範圍第28項之機器可讀取式媒體,其中,分配該程式碼之最佳化活躍區段給該協同設計式處理器核心包括:將該程式碼之最佳化活躍區段,寫入至一個與該協同設計式處理器核心相聯結之程式碼快取區。
- 一種包括程式碼之機器可讀取式媒體,其在被該機器執行時,可使該機器執行如下運作:響應辨識該程式碼的一個包括就該機器中的一個第一處理器核心加以最佳化之第一程式碼類型的區域為活躍程式碼,而使該程式碼區域與一個轉譯之活躍區域相聯結,後者包括之程式碼區域,係自該第一程式碼類型轉譯成一個第二類型,其係要就該機器中的一個第二處理器核心加以最佳化;以及響應在該第一處理器核心執行該程式碼期間之遭遇該程式碼區域,而回應該程式碼區域之與該轉譯之活躍區域相聯結,以在該第二處理器核心上面執行該轉譯之活躍區域。
- 如申請專利範圍第33項之機器可讀取式媒體,其中,該第一處理器核心包括一個亂序式處理器核心,該第一程式碼類型包括一個就該亂序式處理器核心加以最佳化之亂序式程式碼類型,該第二處理器核心包括一個順序式處理器核心,以及該第二程式碼類型包括一個就該順序式處理器核心類型加以最佳化之順序式程式碼類型。
- 如申請專利範圍第34項之機器可讀取式媒體,其中,該 亂序式處理器核心係使與一個可識別一個第一指令集架構(ISA)之解碼邏輯相聯結,該第一程式碼類型係進一步就該第一ISA加以最佳化,該順序式處理器核心係使與一個可識別一個第二ISA之解碼邏輯相聯結,以及該第二程式碼類型係進一步就該第二ISA加以最佳化。
- 如申請專利範圍第33項之機器可讀取式媒體,其中,辨識該程式碼區域為活躍程式碼,包括一個與該第一處理器核心相聯結之解碼邏輯,其可解碼至少一個來自該程式碼而指示該程式碼之區域為活躍程式碼的指令。
- 如申請專利範圍第33項之機器可讀取式媒體,其中,辨識該程式碼區域為活躍程式碼,包括一個在該機器內之硬體,其可監控該程式碼區域在該第一處理器核心上面之執行,以及可基於該硬體之監控該程式碼區域在該第一處理器核心上面之執行,來辨識該程式碼區域為活躍程式碼。
- 如申請專利範圍第33項之機器可讀取式媒體,其中,使該程式碼區域與一個轉譯之活躍區域相聯結,包括以與一個對該轉譯之活躍區域的參照值相聯結之對該程式碼區域的一個參照值,來更新一個資料結構的一個登錄項,以及其中,對該轉譯之活躍區域的一個參照值,和對該程式碼區域的一個參照值,各係個別地選自一個如下構成之群組:一個位址、一個指令位址、一個在快取區記憶體內之位置、一個程式計數器值、和一個指令作業碼。
- 如申請專利範圍第33項之機器可讀取式媒體,其中,響應在該程式碼以該第一處理器核心執行期間之遭遇該程式碼區域,以及該程式碼區域之與該轉譯的活躍區域相聯結,而在該第二處理器核心執行該轉譯之活躍區域期間,使該第一處理器核心,轉變至一低電力狀態。
- 一種用於改善電力效能之方法,其包括:辨識程式碼的一個活躍區段;就以一個順序式處理器核心之執行而最佳化該程式碼的該活躍區段,以得到該程式碼的一個最佳化活躍區段;以一個處理器之一亂序式核心來執行該程式碼;以及響應該亂序式核心在以該亂序式處理器執行該程式碼期間之遭遇該程式碼的該活躍區段以及辨識該程式碼之該活躍區段,而以該順序式處理器核心來執行該程式碼之該最佳化活躍區段,而代替該亂序式處理器核心來執行該程式碼之該活躍區段。
- 如申請專利範圍第40項之方法,其進一步包括使該程式碼之該活躍區段與該程式碼之該最佳化活躍區段相聯結。
- 如申請專利範圍第41項之方法,其中,使該程式碼之該活躍區段與該程式碼之該最佳化活躍區段相聯結,包括儲存一個對於該程式碼之該活躍區段的參照值,和一個對於該程式碼之該最佳化活躍區段的參照值。
- 如申請專利範圍第40項之方法,其中,辨識該程式碼的 一個活躍區段包括:在以該亂序式處理器核心執行該程式碼的一個區段期間監控一個效能度量,以及基於相較一個效能臨界值之效能度量來辨識該程式碼之區段為該程式碼之該活躍區段。
- 如申請專利範圍第43項之方法,其進一步包括,在以該順序式處理器核心來執行該程式碼之該最佳化活躍區段期間監控該效能度量,以及響應以該順序式處理器核心執行該程式碼之該最佳化活躍區段期間的效能度量之指示效能低於以該亂序式處理器核心執行該程式碼的一個區段期間之效能度量,而指示該程式碼之該活躍區段要以該亂序式處理器核心來執行,而代替該程式碼之該最佳化活躍區段要以該順序式核心來執行。
- 如申請專利範圍第40項之方法,其中,就以一個順序式處理器核心之執行來最佳化該程式碼之該活躍區段以得到該程式碼之該最佳化活躍區段,包括執行二進制轉譯程式碼,而將該程式碼之該活躍區段轉譯成該程式碼之該最佳化活躍區段。
- 一種包括程式碼之機器可讀取式媒體,其在被該機器執行時,可使該機器執行如申請專利範圍第40項之運作。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/826,107 US20110320766A1 (en) | 2010-06-29 | 2010-06-29 | Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201209572A TW201209572A (en) | 2012-03-01 |
TWI516908B true TWI516908B (zh) | 2016-01-11 |
Family
ID=45353677
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100122413A TWI516908B (zh) | 2010-06-29 | 2011-06-27 | 藉由耦合第一核心類型與第二核心類型來改善電力效能效率之設備、方法及系統 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20110320766A1 (zh) |
EP (1) | EP2588958B1 (zh) |
JP (1) | JP2013532331A (zh) |
KR (1) | KR101507702B1 (zh) |
CN (1) | CN102934084B (zh) |
AU (1) | AU2011276656B2 (zh) |
TW (1) | TWI516908B (zh) |
WO (1) | WO2012005949A2 (zh) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
WO2013162589A1 (en) * | 2012-04-27 | 2013-10-31 | Intel Corporation | Migrating tasks between asymmetric computing elements of a multi-core processor |
CN106201348B (zh) * | 2012-06-20 | 2019-08-20 | 华为技术有限公司 | 非易失性存储设备的缓存管理方法及装置 |
US10437591B2 (en) | 2013-02-26 | 2019-10-08 | Qualcomm Incorporated | Executing an operating system on processors having different instruction set architectures |
US9405551B2 (en) * | 2013-03-12 | 2016-08-02 | Intel Corporation | Creating an isolated execution environment in a co-designed processor |
US10114756B2 (en) | 2013-03-14 | 2018-10-30 | Qualcomm Incorporated | Externally programmable memory management unit |
US9606818B2 (en) | 2013-03-14 | 2017-03-28 | Qualcomm Incorporated | Systems and methods of executing multiple hypervisors using multiple sets of processors |
US9396012B2 (en) | 2013-03-14 | 2016-07-19 | Qualcomm Incorporated | Systems and methods of using a hypervisor with guest operating systems and virtual processors |
US10423216B2 (en) * | 2013-03-26 | 2019-09-24 | Via Technologies, Inc. | Asymmetric multi-core processor with native switching mechanism |
US9563432B2 (en) * | 2013-04-19 | 2017-02-07 | Nvidia Corporation | Dynamic configuration of processing pipeline based on determined type of fetched instruction |
KR20150019349A (ko) * | 2013-08-13 | 2015-02-25 | 삼성전자주식회사 | 다중 쓰레드 실행 프로세서 및 이의 동작 방법 |
US9552205B2 (en) * | 2013-09-27 | 2017-01-24 | Intel Corporation | Vector indexed memory access plus arithmetic and/or logical operation processors, methods, systems, and instructions |
US10503513B2 (en) * | 2013-10-23 | 2019-12-10 | Nvidia Corporation | Dispatching a stored instruction in response to determining that a received instruction is of a same instruction type |
KR20150050135A (ko) | 2013-10-31 | 2015-05-08 | 삼성전자주식회사 | 복수의 이종 코어들을 포함하는 전자 시스템 및 이의 동작 방법 |
US9547496B2 (en) | 2013-11-07 | 2017-01-17 | Microsoft Technology Licensing, Llc | Energy efficient multi-modal instruction issue |
GB2521367A (en) * | 2013-12-17 | 2015-06-24 | Ibm | Adaptable and extensible runtime and system for heterogeneous computer systems |
US9395797B2 (en) | 2014-07-02 | 2016-07-19 | Freescale Semiconductor, Inc. | Microcontroller with multiple power modes |
US9575537B2 (en) * | 2014-07-25 | 2017-02-21 | Intel Corporation | Adaptive algorithm for thermal throttling of multi-core processors with non-homogeneous performance states |
US9190989B1 (en) | 2014-10-07 | 2015-11-17 | Freescale Semiconductor, Inc. | Integrated circuit power management |
US9411363B2 (en) * | 2014-12-10 | 2016-08-09 | Intel Corporation | Synchronization in a computing device |
US10387158B2 (en) * | 2014-12-24 | 2019-08-20 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US9563431B2 (en) * | 2014-12-26 | 2017-02-07 | Intel Corporation | Techniques for cooperative execution between asymmetric processor cores |
US9547483B1 (en) * | 2015-11-06 | 2017-01-17 | International Business Machines Corporation | Feedback directed optimized compiling of optimized executable code |
US10605920B2 (en) * | 2016-01-13 | 2020-03-31 | Ams Sensors Singapore Pte. Ltd. | Power savings through refresh control for distance sensing devices |
US10235178B2 (en) | 2017-06-02 | 2019-03-19 | Microsoft Technology Licensing, Llc | Performance scaling for binary translation |
CN109996185B (zh) * | 2017-12-29 | 2022-02-15 | 腾讯科技(深圳)有限公司 | 终端的定位方法和装置、存储介质、电子装置 |
KR102042495B1 (ko) * | 2018-11-30 | 2019-11-08 | 아주대학교산학협력단 | 멀티 코어 시스템의 저전력 운영을 위한 데이터 흐름 최적화 장치 및 방법 |
US11182208B2 (en) | 2019-06-29 | 2021-11-23 | Intel Corporation | Core-to-core start “offload” instruction(s) |
US11372711B2 (en) | 2019-06-29 | 2022-06-28 | Intel Corporation | Apparatus and method for fault handling of an offload transaction |
US11016766B2 (en) | 2019-06-29 | 2021-05-25 | Intel Corporation | Apparatus and method for compiler hints for inter-core offload |
US10929129B2 (en) | 2019-06-29 | 2021-02-23 | Intel Corporation | Apparatus and method for modifying addresses, data, or program code associated with offloaded instructions |
US10983796B2 (en) | 2019-06-29 | 2021-04-20 | Intel Corporation | Core-to-core end “offload” instruction(s) |
US20200409764A1 (en) * | 2019-06-29 | 2020-12-31 | Intel Corporation | Core-to-core "snoop" instruction variants |
US11030000B2 (en) | 2019-06-29 | 2021-06-08 | Intel Corporation | Core advertisement of availability |
US11321144B2 (en) | 2019-06-29 | 2022-05-03 | Intel Corporation | Method and apparatus for efficiently managing offload work between processing units |
US20210200580A1 (en) * | 2019-12-28 | 2021-07-01 | Intel Corporation | Performance monitoring in heterogeneous systems |
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 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02301830A (ja) * | 1989-05-17 | 1990-12-13 | Mitsubishi Electric Corp | 情報処理方式 |
JPH0769825B2 (ja) * | 1989-02-10 | 1995-07-31 | 三菱電機株式会社 | 並列処理装置 |
JP2970553B2 (ja) * | 1996-08-30 | 1999-11-02 | 日本電気株式会社 | マルチスレッド実行方法 |
US5802338A (en) * | 1996-10-01 | 1998-09-01 | International Business Machines Corporation | Method of self-parallelizing and self-parallelizing multiprocessor using the method |
JP3209205B2 (ja) * | 1998-04-28 | 2001-09-17 | 日本電気株式会社 | プロセッサにおけるレジスタ内容の継承装置 |
JP3604029B2 (ja) * | 1999-01-12 | 2004-12-22 | 日本電気株式会社 | マルチスレッドプロセッサ |
US6681387B1 (en) * | 1999-12-01 | 2004-01-20 | Board Of Trustees Of The University Of Illinois | Method and apparatus for instruction execution hot spot detection and monitoring in a data processing unit |
JP2001167066A (ja) * | 1999-12-08 | 2001-06-22 | Nec Corp | プロセッサ間通信方法及びマルチプロセッサシステム |
US20020066081A1 (en) * | 2000-02-09 | 2002-05-30 | Evelyn Duesterwald | Speculative caching scheme for fast emulation through statically predicted execution traces in a caching dynamic translator |
US6691306B1 (en) * | 2000-12-22 | 2004-02-10 | Lsi Logic Corporation | Use of limited program space of general purpose processor for unlimited sequence of translated instructions |
US7100060B2 (en) * | 2002-06-26 | 2006-08-29 | Intel Corporation | Techniques for utilization of asymmetric secondary processing resources |
US7802236B2 (en) * | 2002-09-09 | 2010-09-21 | The Regents Of The University Of California | Method and apparatus for identifying similar regions of a program's execution |
WO2004073376A2 (en) * | 2003-02-20 | 2004-09-02 | Koninklijke Philips Electronics N.V. | Translation of a series of computer instructions |
US7093147B2 (en) * | 2003-04-25 | 2006-08-15 | Hewlett-Packard Development Company, L.P. | Dynamically selecting processor cores for overall power efficiency |
US7480899B2 (en) * | 2004-03-22 | 2009-01-20 | International Business Machines Corporation | Method and apparatus for autonomic test case feedback using hardware assistance for code coverage |
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 |
US20060123397A1 (en) * | 2004-12-08 | 2006-06-08 | Mcguire James B | Apparatus and method for optimization of virtual machine operation |
US20060212677A1 (en) * | 2005-03-15 | 2006-09-21 | Intel Corporation | Multicore processor having active and inactive execution cores |
US7734895B1 (en) * | 2005-04-28 | 2010-06-08 | Massachusetts Institute Of Technology | Configuring sets of processor cores for processing instructions |
US7461275B2 (en) * | 2005-09-30 | 2008-12-02 | Intel Corporation | Dynamic core swapping |
US7703088B2 (en) * | 2005-09-30 | 2010-04-20 | Intel Corporation | Compressing “warm” code in a dynamic binary translation environment |
US7506205B2 (en) * | 2006-02-14 | 2009-03-17 | Atmel Corporation | Debugging system and method for use with software breakpoint |
JP4439491B2 (ja) * | 2006-05-24 | 2010-03-24 | 株式会社ソニー・コンピュータエンタテインメント | マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法 |
US20080263324A1 (en) * | 2006-08-10 | 2008-10-23 | Sehat Sutardja | Dynamic core switching |
US20080244538A1 (en) * | 2007-03-26 | 2008-10-02 | Nair Sreekumar R | Multi-core processor virtualization based on dynamic binary translation |
US8190652B2 (en) * | 2007-12-06 | 2012-05-29 | Intel Corporation | Achieving coherence between dynamically optimized code and original code |
JP2009199384A (ja) * | 2008-02-22 | 2009-09-03 | Nec Corp | データ処理装置 |
US8615647B2 (en) * | 2008-02-29 | 2013-12-24 | Intel Corporation | Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state |
KR101292439B1 (ko) * | 2008-11-24 | 2013-08-05 | 인텔 코포레이션 | 순차적 프로그램을 다수의 스레드로 분해하고 이 스레드를 실행하며 순차적 실행을 재구성하는 장치, 방법 및 머신-판독가능 저장 매체 |
US9569270B2 (en) * | 2009-04-21 | 2017-02-14 | Empire Technology Development Llc | Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts |
US8458676B2 (en) * | 2009-06-30 | 2013-06-04 | International Business Machines Corporation | Executing platform-independent code on multi-core heterogeneous processors |
-
2010
- 2010-06-29 US US12/826,107 patent/US20110320766A1/en not_active Abandoned
-
2011
- 2011-06-22 KR KR1020127034268A patent/KR101507702B1/ko active IP Right Grant
- 2011-06-22 WO PCT/US2011/041429 patent/WO2012005949A2/en active Application Filing
- 2011-06-22 CN CN201180027661.8A patent/CN102934084B/zh active Active
- 2011-06-22 AU AU2011276656A patent/AU2011276656B2/en not_active Ceased
- 2011-06-22 JP JP2013513421A patent/JP2013532331A/ja active Pending
- 2011-06-22 EP EP11804047.6A patent/EP2588958B1/en active Active
- 2011-06-27 TW TW100122413A patent/TWI516908B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR101507702B1 (ko) | 2015-04-07 |
EP2588958B1 (en) | 2019-11-06 |
CN102934084A (zh) | 2013-02-13 |
CN102934084B (zh) | 2016-11-16 |
JP2013532331A (ja) | 2013-08-15 |
TW201209572A (en) | 2012-03-01 |
AU2011276656A1 (en) | 2013-01-10 |
AU2011276656B2 (en) | 2015-08-20 |
EP2588958A2 (en) | 2013-05-08 |
US20110320766A1 (en) | 2011-12-29 |
EP2588958A4 (en) | 2016-11-02 |
WO2012005949A2 (en) | 2012-01-12 |
WO2012005949A3 (en) | 2012-05-18 |
KR20130032333A (ko) | 2013-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI516908B (zh) | 藉由耦合第一核心類型與第二核心類型來改善電力效能效率之設備、方法及系統 | |
US11755099B2 (en) | Dynamic core selection for heterogeneous multi-core systems | |
TWI550518B (zh) | 用於包括執行緒合併之能源效率及能源節約的方法、裝置及系統 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |