TW201342218A - 通透地提供給作業系統之非對稱多核心處理器系統 - Google Patents

通透地提供給作業系統之非對稱多核心處理器系統 Download PDF

Info

Publication number
TW201342218A
TW201342218A TW101149549A TW101149549A TW201342218A TW 201342218 A TW201342218 A TW 201342218A TW 101149549 A TW101149549 A TW 101149549A TW 101149549 A TW101149549 A TW 101149549A TW 201342218 A TW201342218 A TW 201342218A
Authority
TW
Taiwan
Prior art keywords
core
program
isa
cores
processor
Prior art date
Application number
TW101149549A
Other languages
English (en)
Other versions
TWI494850B (zh
Inventor
Boris Ginzburg
Ilya Osadchiy
Ronny Ronen
Eliezer Weissmann
Michael Mishaeli
Alon Naveh
David A Koufaty
Scott D Hahn
Tong Li
Avi Mendleson
Eugene Gorbatov
Hisham Abu-Salah
Dheeraj R Subbareddy
Paolo Narvaez
Aamer Jaleel
Efraim Rotem
Yuval Yosef
Anil Aggarwal
Craeynest Kenzo Van
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of TW201342218A publication Critical patent/TW201342218A/zh
Application granted granted Critical
Publication of TWI494850B publication Critical patent/TWI494850B/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Advance Control (AREA)
  • Microcomputers (AREA)

Abstract

在一實施例中,本發明包含一種具有核心之第一群組及第二群組之多核心處理器。該第二群組可比該第一群組具有一不同的指令集架構(ISA),或具有相同的ISA集但具有不同的功率及效能支援位準,且對一作業系統(OS)通透。該處理器進一步包含一遷移單元,其處置對數個不同的情形之遷移請求,且引起將一程序自第二核心動態地遷移至該第一群組之一第一核心的一內容脈絡交換。此動態基於硬體之內容脈絡交換可對該OS通透。描述且主張其他實施例。

Description

通透地提供給作業系統之非對稱多核心處理器系統
本發明係有關於通透地提供給作業系統之非對稱多核心處理器系統。
發明背景
現代處理器經常以多個核心實施。通常,此等核心皆具有同質性質。亦即,每一核心具有同樣設計,且因此具有同樣佈局,及實施相同指令集架構(instruction set architecture;ISA)等。而包含處理器之系統的作業系統(operating system;OS)可選擇此等多個核心中之任一者來處置任務。
隨著時間的推移,正向處理器引入異質資源。此等資源時常為用以執行專門任務之專門加速器。然而,預期將引入包含具有不同特性之異質核心的處理器。針對對稱系統所設計之OS無法與此種處理器一起使用。因此,需要設計專門OS來與非對稱處理器介接。因此,不管系統是具有若干具有同樣ISA但具有不同的效能位準之核心之所謂的單一ISA系統,或是具有若干具有不同ISA之核心的系 統,OS或諸如超級監督器之其他監督器軟體皆知道包含所有核心資源之拓撲,且因此將任務排程至適當類型之核心。
依據本發明之一實施例,係特地提出一種多核心處理器,其包括:一第一指令集架構(ISA)之一核心,該第一ISA核心對一作業系統(OS)可見且包括一第一使用暫存器來儲存一指示符,以識別由在該第一ISA核心上執行之一程序所使用的一ISA;一第二ISA之一核心,其包括一第二使用暫存器來儲存一指示符,以識別由在該第二ISA核心上執行之一程序所使用的一ISA,其中該第二ISA核心對該OS通透且與該第一ISA核心異質;及一遷移單元,其耦接至該第一ISA核心及該第二ISA核心,以將由該OS排程給該第一ISA核心之一第一程序動態地遷移至該第二ISA核心,其中該動態遷移對該OS通透。
100‧‧‧系統
110‧‧‧處理器
120‧‧‧核心單元
125‧‧‧大核心
1250‧‧‧大核心
1251‧‧‧大核心
126‧‧‧ISA監視器
1260‧‧‧ISA監視器
126n‧‧‧ISA監視器
130‧‧‧小核心
1300‧‧‧小核心
130n‧‧‧小核心
140‧‧‧重新映射及遷移單元(RMU)
145‧‧‧程序設定檔資料庫
146‧‧‧狀態儲存器
148‧‧‧異常處置單元
150‧‧‧OS執行佇列
1500‧‧‧OS執行佇列
150n‧‧‧OS執行佇列
155‧‧‧OS排程器
1650‧‧‧虛擬大核心/虛擬核心
1651‧‧‧虛擬大核心
200‧‧‧處理器核心
201‧‧‧提取單元
203‧‧‧指令快取記憶體
205‧‧‧指令解碼器
210‧‧‧前端單元
215‧‧‧無次序(OOO)引擎
220‧‧‧執行單元
222‧‧‧算數邏輯單元(ALU)
230‧‧‧暫存器檔案
235‧‧‧延伸暫存器檔案
240‧‧‧重新排序緩衝器(ROB)
250‧‧‧快取記憶體
255‧‧‧TLB
270‧‧‧暫存器陣列
272‧‧‧受支援暫存器
274‧‧‧經啟用暫存器
276‧‧‧使用暫存器
400‧‧‧處理器
4101‧‧‧第一核心
410n‧‧‧第一核心
410a‧‧‧第二核心
410x‧‧‧第二核心
415‧‧‧互連
420‧‧‧非核心
430‧‧‧共用快取記憶體
440‧‧‧整合式記憶體控制器
450a‧‧‧介面
450n‧‧‧介面
452‧‧‧異常處置器
454‧‧‧狀態儲存器
455‧‧‧電力控制單元
456‧‧‧程序設定檔儲存器
458‧‧‧硬體內容脈絡交換邏輯
460‧‧‧遷移單元
465‧‧‧進階可程式化中斷控制器(APIC)
480‧‧‧系統記憶體
500‧‧‧多處理器系統
514‧‧‧輸入/輸出(I/O)裝置
516‧‧‧第一匯流排
518‧‧‧匯流排橋接器
520‧‧‧第二匯流排
522‧‧‧鍵盤/滑鼠
524‧‧‧音訊I/O
526‧‧‧通信裝置
528‧‧‧資料儲存單元
530‧‧‧程式碼
532‧‧‧記憶體
534‧‧‧記憶體
538‧‧‧高效能圖形引擎
539‧‧‧P-P互連
550‧‧‧點對點互連
552‧‧‧P-P互連
554‧‧‧P-P互連
570‧‧‧第一處理器
572‧‧‧記憶體控制器集線器(MCH)
574a‧‧‧處理器核心
574b‧‧‧處理器核心
576‧‧‧點對點(P-P)介面
578‧‧‧點對點(P-P)介面
580‧‧‧第二處理器
582‧‧‧記憶體控制器集線器(MCH)
584a‧‧‧處理器核心
584b‧‧‧處理器核心
586‧‧‧P-P介面
588‧‧‧P-P介面
590‧‧‧晶片組
592‧‧‧介面
594‧‧‧P-P介面
596‧‧‧介面
598‧‧‧P-P介面
圖1為根據本發明之實施例之系統配置的方塊圖。
圖2為根據本發明之一實施例之處理器核心的方塊圖。
圖3為根據本發明之實施例的執行自大核心至小核心之遷移之方法的流程圖。
圖4為根據本發明之一實施例之程序映射及遷移的圖解說明。
圖5為根據本發明之另一實施例的用於執行動態 遷移之方法的流程圖。
圖6為根據本發明之一實施例的自小核心至大核心之程序遷移的圖解說明。
圖7為根據本發明之一實施例的自小核心至大核心之另一程序遷移的圖解說明。
圖8為根據本發明之另一實施例之處理器的方塊圖。
圖9為根據本發明之實施例之系統的方塊圖。
較佳實施例之詳細說明
在各種實施例中,多核心處理器可包含異質資源,其包含具有異質能力(例如,具有不同指令集架構(ISA))之核心。此外,此等資源之異質性質可以對作業系統(OS)通透之方式維持。為此,實施例以對OS通透之方式提供基於硬體之機制來控制任務至不同資源的分配。以此方式,實施例可利用不同資源類型之特徵來以減小的功率消耗及改良的執行速度有效地執行指令。實施例係針對處理器架構及硬體支援,其提供將以對作業系統通透之方式使用之資源,且因此避免對啟用將由作業系統或超級監督器支援之異質處理器或其他資源的需要。
藉由將具有豐富的ISA及高單一執行緒效能之大核心與具有較小ISA及較高功率效率之小核心整合,處理器之總的功率效率可在不犧牲效能之情況下增加。此處理器可為非對稱多處理器,即,OS通透非對稱多處理器 (asymmetric multiprocessor;AMP)系統,其細節在下文中描述。在具有此種異質架構之各種實施例中,在OS針對同質環境之系統中,核心之間的控制可在無OS支援之情況下實現。實施例可進一步啟用在不同類型之核心之間的程式碼執行之快速、通透(對OS)的交換。
在各種實施例中,僅單一核心類型可對OS曝露,此OS可為舊式OS,其中存在於處理器中之一或多個其他核心類型保持完全對OS隱藏。儘管描述為核心,但應理解,在各種實施例中,諸如固定功能單元、圖形單元及實體單元等的其他處理引擎亦可對OS通透。出於論述之目的,假定大核心類型對OS曝露。因此,OS將程序排程至此等大核心中之一或多者。程序至通透核心之重新指派,及與其相關之在核心之間的程序遷移可藉由(例如)處理器內之專用硬體完成。應注意,如本文中所使用,程序遷移一般可稱為執行內容脈絡在核心或其他資源之間的遷移。
在一實施例中,此硬體單元可稱為重新映射及遷移單元(remap and migration unit;RMU),其以對OS通透之方式在核心之間重新映射且遷移程序。在各種實施例中,RMU可將任務指派至實體核心,因此維持實際硬體結構相對於OS之通透性。在一些實施例中,RMU可經組態以與處理器之進階可程式化中斷控制器(advanced programmable interrupt controller;APIC)通信,因此提供OS分配任務所至之虛擬核心與任務實際上在上面執行之實體核心之間的虛擬化。為此,在一些實施例中,APIC可自包含核心識別符(其 在一些實施例中可呈APIC ID之形式)之OS接收程序分配,且起初使用APIC ID至核心ID映射表將任務指派至對OS可見之核心,例如,完整的ISA核心。接著,RMU可引起此程序至對OS不可見之核心(例如,受限ISA核心)的遷移,且藉由與APIC介接來反射交換,以更新APIC之映射表。因此,RMU可在引擎蓋下置換OS控制之實體核心。作為此置換之部分,RMU可更新APIC映射,以便對OS隱藏實體核心經置換之事實。
儘管本發明之範疇在此方面不受限制,但在一些實施例中,RMU可主要基於以下因素來引起核心之間的程序遷移:所支援ISA、程式碼效能要求、作業系統效能請求及類似電力及熱之物理資源的可用性。應注意,RMU可停止在一核心上之程序執行且在程序壽命期間的任何時候將其遷移至另一實體上不同的核心。
現參看圖1,所示為根據本發明之實施例之系統配置的方塊圖。如圖1中所示,系統100包含硬體及軟體兩者。即,處理器110存在。在各種實施例中,此處理器可為包含具有異質資源之核心單元120的多核心處理器。具體言之,在圖1之實施例中,不同類型之硬體或實體核心可存在,此等核心包含複數個所謂的大核心1250至1251(統稱為大核心125)及複數個所謂的小核心1300至1301(統稱為小核心130)。此等不同的核心類型可執行不同的ISA,且可為實體上在大小方面完全不同且可利用的資源。在一些實施例中,不同的ISA可實現為給定指令集架構及此指令集架構之 子集。舉例而言,大核心125可執行ISA之全部指令,而小核心130僅可執行ISA之子集,小核心130可具有較小數目個包含不同/較小暫存器結構及執行單元等之架構及微架構資源。以此方式,不同的ISA可部分地重疊。在其他實施例中,將由不同的核心類型處置之ISA可為完全不同的。
如圖1中進一步所見,處理器110進一步包含RMU 140。在各種實施例中,RMU 140可為可自OS接收傳入執行緒分配且將此等分配映射至核心中之一或多者上之基於硬體的邏輯。進行至給定虛擬核心之OS分配,給定虛擬核心取決於實施可為大核心或小核心。一般而言,僅一種類型之核心為對OS可見的。應注意,此映射及程序在不同核心之間的交換可比OS內容脈絡交換完成得快得多(且以較高頻率)。舉例而言,OS觸發之內容脈絡交換可近似每毫秒(ms)發生一次,而硬體觸發之內容脈絡交換可近似每隔10微秒(μs)而發生。
在圖1中所示之實施例中,如下文將進一步論述,RMU 140可包含程序設定檔資料庫145。另外,RMU 140可包含狀態儲存器146,可充分利用狀態儲存器146來在可在執行期間發生之內容脈絡交換期間在不同的核心類型之間傳遞狀態。另外,RMU 140可包含異常處置單元148來處置在核心中之一或多者上發生的異常。以此方式,此等異常可以比在OS之異常處置器中快得多的方式在處理器之硬體中直接處置。此異常處置單元可經組態以處置由於在與執行緒由OS所分配至之核心不同類型之核心上執行執行緒 而發生的異常。以此方式,處理器之異質性質仍然對OS通透。
如所見,大核心125各自可包含相應ISA監視器126,其細節將在下文中進一步論述。一般而言,大核心125可包含各種組件,諸如,前端單元、執行單元、後端單元、快取記憶體及電力控制電路等。應注意,小核心130可包含類似電路,該類似電路包含ISA監視器,但小核心130可經組態以用於更加受限之運算元寬度,可能不包含向量支援或無次序執行等。
如圖1中進一步所見,亦提供系統100之軟體視圖。具體言之,系統100可執行針對對稱處理器而設計之OS,且儘管處理器110具有非對稱設計,仍可與此處理器一起使用。此非對稱性可藉由啟用OS來控制僅單一核心類型,且藉由使僅單一種類型之核心對OS控制可見,使用如本文中所描述之機制經由RMU 140對OS隱藏。
如所見,系統100之軟體部分可包含多個OS執行佇列1500至150n(統稱為執行佇列150)。每一佇列可包含(例如)由OS排程器155排程之多個執行緒。如所見,OS排程器155具有處理器110之硬體的視圖,處理器110包含(例如)對應於大核心1250及1251之虛擬大核心1650至1651。亦即,小核心仍然對OS通透。應注意,在其他實施中,OS可具有小核心之虛擬視圖,且大核心可仍然對OS通透。一般而言,OS將列舉僅單一種類型之核心。在無一般性損失之情況下,本文中所描述之實例假定具有或不具有相同ISA支援之 核心類型的任意兩個不同的晶粒大小。實施例亦可包含一處理器,其包含兩種或兩種以上類型之核心,而核心之間的差別可未必為核心之晶粒大小或每一核心支援之ISA群組。
使用圖1中之配置,軟體提供將在處理器110內執行之執行緒。更具體言之,經由OS排程器155,OS執行佇列1500之執行緒(例如)0及1可經排程至虛擬核心1650,OS將虛擬核心1650與大核心1250相關聯,且執行佇列150n之執行緒2及3可經排程至虛擬核心165n,OS將虛擬核心165n與大核心1251相關聯。儘管在圖1之實施例中以此特定實施展示,但應理解,本發明之範疇在此方面不受限制。
實施例可以許多不同的處理器類型實施。舉例而言,實施例可在諸如多核心處理器之處理器中實現。現參看圖2,所示為根據本發明之一實施例之處理器核心的方塊圖。如圖2中所示,處理器核心200可為多級管線式無次序處理器。處理器核心200在圖2中以相對簡化的視圖展示,以說明根據本發明之實施例之結合動態硬體內容脈絡交換使用的各種特徵。
如圖2中所示,核心200包含前端單元210,其可用以提取待執行之指令且準備該等指令以供稍後在處理器中使用。舉例而言,前端單元210可包含提取單元201、指令快取記憶體203及指令解碼器205。在一些實施中,前端單元210可進一步包含追蹤快取記憶體,連同微碼儲存器以及微操作儲存器。提取單元201可(例如)自記憶體或指令快 取記憶體203提取巨集指令,且將其饋入至指令解碼器205以將其解碼成諸如微操作之基元,以供處理器執行。
如所見,前端單元210可耦接至暫存器陣列270,暫存器陣列270可包含根據本發明之實施例之用來維持用於基於硬體之內容脈絡交換中的資訊之各種暫存器或其他儲存結構。如圖2中所示,此暫存器陣列270可包含受支援暫存器272、經啟用暫存器274及使用暫存器276。在各種實施例中,受支援暫存器272可實施為位元向量,其包含各自將指示給定硬體特徵是否在核心內得到支援之多個欄位。在一實施例中,每一此種位元在此情況下可經設定為邏輯高狀態(logic high state),且否則此位元可設定為0。經啟用暫存器274可用以類似地指示相應特徵是否為了操作而啟用。舉例而言,某些特徵可在第一程序之執行期間啟用,但在另一程序之執行期間停用。最後,使用暫存器276可包含(例如)多個位元,其各自將指示給定ISA在程序之執行期間是否被使用。舉例而言,每一位元可表示ISA之家族類型,諸如,IntelTM架構(IA)處理器之進階向量延伸(advanced vector extension;AVX)指令集延伸(AVX 1、2、3)。
耦接在前端單元210與執行單元220之間的為可用以接收微指令且準備該等指令以用於執行之無次序(OOO)引擎215。更具體言之,OOO引擎215可包含各種緩衝器來對微指令流重新排序,且分配各種所需資源以用於執行,以及將邏輯暫存器之重命名提供至各種暫存器檔案內之儲存位置上,此等暫存器檔案諸如暫存器檔案230及延 伸暫存器檔案235。暫存器檔案230可包含用於整數及浮點運算之單獨的暫存器檔案。延伸暫存器檔案235可提供對向量大小之單元(例如,每一暫存器256或512個位元)的儲存。
各種資源可存在於執行單元220中,此等資源包含(例如)各種整數、浮點及單指令多資料(single instruction multiple data;SIMD)邏輯單元以及其他專門硬體。舉例而言,此等執行單元可包含一或多個算數邏輯單元(arithmetic logic unit;ALU)222。
當對執行單元內之資料執行操作時,可將結果提供給引退邏輯,即,重新排序緩衝器(reorder buffer;ROB)240。更具體言之,ROB 240可包含各種陣列及邏輯來接收與經執行之指令相關聯的資訊。此資訊接著由ROB 240檢驗以判定指令是否可妥當地引退且結果資料是否提交給處理器之架構狀態,或防止指令之適當引退的一或多個異常是否發生。當然,ROB 240可處置與引退相關聯之其他操作。
儘管本發明之範疇在此方面不受限制,但如圖2中所示,ROB 240耦接至快取記憶體250,其在一實施例中可為低層級快取記憶體(例如,L1快取記憶體)且亦可包含TLB 255。自快取記憶體250,可與較高層級快取記憶體、系統記憶體等發生資料通信。
應注意,雖然圖2之處理器的實施係關於諸如具有所謂的x86 ISA架構之無次序機器,但本發明之範疇在此方面不受限制。亦即,其他實施例可在以下各項中實施: 有次序處理器、諸如基於ARM之處理器的精簡指令集計算(reduced instruction set computing;RISC)處理器,或具有另一種類型之ISA的處理器,其可經由模擬引擎及相關聯邏輯電路來模擬不同ISA之指令及操作。又,應理解,圖2之核心可為大核心,且較小數目個組件及寬度等可存在於小核心中。
如上文所描述,根據本發明之實施例,可提供不同硬體以使得能夠執行遷移。現參看圖3,所示為根據本發明之實施例的執行自大核心至小核心之遷移之方法的流程圖。如圖3中所示,方法300可藉由喚醒遷移單元在區塊310開始。亦即,可對應於圖1中之RMU 140的遷移單元可經控制以週期性地通電,以判定一或多個遷移是否為適當的。又,此單元回應於對中斷之接收(諸如,故障或異常之觸發)可觸發喚醒。因此,喚醒遷移單元之觸發可為同步觸發,使得遷移單元週期性地喚醒以判定程序自一種類型之核心向另一種類型之核心的交換是否為適當的,或可為異步觸發。此種遷移之實例為由於在一種類型之核心中的執行異常,第二類型之核心將喚醒以處置此異常或重試異常程式碼之執行。可用於此種類型之機制中的可能異常中之一者為未經界定之指令異常。儘管本發明之範疇在此方面不受限制,但此等異步觸發可對由OS或電力管理控制器引起之中斷作出回應,以引起核心之效能狀態的改變。在此方面,熟悉此項技術者理解到,諸如多核心處理器之處理器可在多個效能狀態中之一者下操作。在一實施例中,OS可經由 請求向處理器之電力控制單元(power control unit;PCU)發出改變核心之效能狀態或所謂的P狀態之請求。而回應於此請求,作為效能狀態控制邏輯之部分的PCU可觸發對遷移單元之異步中斷。
應注意,效能狀態可係根據基於OS之機制,即,進階組態及平台介面(Advanced Configuration and Platform Interface;ACPI)標準(例如,2006年10月10日公開之Rev.3.0b)。根據ACPI,處理器可在各種功率及效能狀態或位準下操作。關於功率狀態,ACPI指定不同的功率消耗狀態,一般稱為所謂的C1至Cn狀態。當核心在作用中時,其在所謂的C0狀態下執行,且當核心閒置時,其可被置於核心低功率狀態(所謂的核心非零C狀態(例如,C1至C6狀態))。除此等功率狀態之外,處理器可進一步經組態以在多個效能狀態(即,P0至PN)中之一者下操作。一般而言,P1效能狀態可對應於可由OS請求之最高受保證效能狀態。一般而言,不同的P狀態對應於核心可執行之不同的操作頻率。
增加程式碼執行之效能或效率可藉由最小化完成經界定工作量所花費之時間量來界定。增加效能效率主要引起更多功率之消耗,而節約功率通常對效能效率有負面影響。
增加程式碼執行之功率/效能效率可藉由最小化完成經界定工作量所消耗之能量與執行此工作所花費之執行時間之間的比率來界定。舉例而言,節約功率但在不增加功率消耗的情況下仍然執行相同的工作量或最小化執行 相同的工作量之時間會增加功率/效能效率。實施例可用以增加功率/效能效率。
在方法300之上下文中,假定遷移單元回應於所建立時間間隔而喚醒。接下來可在菱形區塊320判定程式碼是否使用由小核心支援之ISA。為了作出此判定,遷移單元可存取大核心之使用暫存器來判定已執行之程序的程式碼是否僅使用由小核心支援的大核心之ISA的子集。若如此,則可在區塊325分析在大核心上執行之程序。舉例而言,核心之效能監視器可經分析以判定在當前核心上之程序效能及在不同核心上之程序效能的預測。作為實例,待分析之此等效能量度可包含核心由於主記憶體存取而暫停之時脈的數目,或每時脈之核心指令的數目等。
基於所分析之此等效能量度,控制轉至菱形區塊330,其中可判定大核心是否為功率/效能效率足夠(如上文所描述)來執行程式碼的,或將程式碼遷移至小核心是否可為更加有效的。儘管本發明之範疇在此方面不受限制,但可判定,作為實例,大核心在大核心之每循環指令(instruction per cycle;IPC)計數低於臨限位準的情況下未經充分利用。或者,可判定大核心歸因於記憶體頻寬限制(例如,歸因於與核心之快取結構內的多個未命中相關聯的延遲)而未經充分利用。用以判定核心之利用位準的效能量度之其他實例可包含估計哪個核心執行當前程式碼將為更有效的。換言之,RMU可試圖藉由量測另一種類型之核心上的效能來估計第二類型之核心上的效能。對RMU之另一觸 發可為作業系統效能位準請求,類似ACPI P狀態請求。
若判定大核心並非未經充分利用(換言之,大核心為功率/效能有效的)且實情為系統正受益於大核心之較大效能能力,則方法300可在此評估時間間隔內終止。否則,若判定大核心未經充分利用,使得效能並非有效的,且因此效能將不會過度地受使程序在小核心上執行影響,則控制轉至菱形區塊335,其中可判定程序是否已在核心之間交換大於臨限次數。若此計數值超過臨限值,則此情況指示因為某一原因程序繼續自小核心交換回至大核心(例如,因為程式碼之指令的執行不受小核心支援)。控制交換臨限值可基於系統功率及效能要求及對較佳或較差功率/效能效率之期望而動態地改變。因此,在執行遷移時造成的額外負荷可能不值得付出努力,且因此,方法300可在不執行程序遷移之情況下終止。
除由RMU使用來決定將使用哪個類型之核心的效能量度之外,RMU亦知道類似熱或電力預算之當前物理約束,其可限制可能使用大核心的時間量,且即使在效能量度還確證在大核心上工作的情況下,仍將程式碼自大核心遷移至小核心。又,上述約束之反向動態改變可在所執行程式碼之執行時間期間觸發自小核心至大核心之交換。
否則,控制轉至區塊340,其中可執行程序之動態遷移,因此使程序在小核心上執行。根據各種實施例,此內容脈絡交換可對OS通透。關於此動態遷移之各種操作將在下文進一步論述,但一般而言,構成保存大核心之狀 態且向經識別小核心提供用於程序中的狀態之至少彼部分。儘管在圖3之實施例中以此特定實施展示,但應理解,本發明之範疇在此方面不受限制。
現參看圖4,所示為根據本發明之一實施例之程序映射及遷移的圖解說明。更具體言之,此種類型之遷移可稱為在正執行之程序的程式碼具有由目標核心支援的ISA之情況下遷移程序的“檢查所使用ISA及遷移”操作。如所見,可在大核心上執行之新的程序可由OS排程至虛擬核心,此大核心可被認為是源核心。因此,程序開始在此種核心上執行。
在處理器操作期間,有規律地喚醒RMU,以分析程序執行,從而判定核心之間的遷移是否為適當的。在此種分析期間,假定RMU(例如)基於如上文所描述之效能監視而判定當前程式碼不需要高效能。因此,RMU判定程序為遷移至小核心之潛在候選者。為此,RMU可檢查暫存器,即,所使用ISA暫存器(其在一實施例中可為非架構可見機器特定暫存器(machine specific register;MSR))。此暫存器可包含一或多個指示器來允許核心追蹤由在該核心上執行之程式碼使用之ISA子集。此暫存器將由硬體機制支援,以識別當前類型之所執行ISA且在ISA暫存器中設定相關位元。若在大核心上執行之此程序僅使用大核心之ISA的子集,且此子集受小核心支援,則RMU可決定將程序遷移至小核心。為了使得硬體能夠知道計劃在作業系統內容脈絡交換之後執行之程式碼類型,選擇正確的核心類型,且 避免頻繁的核心遷移,軟體執行緒內容脈絡可包含ISA暫存器。實施例可藉由延伸狀態儲存結構以包含ISA暫存器而實現此情形。在此情況下,ISA暫存器在OS內容脈絡交換期間將被保存及還原。
在一實施例中,RMU可執行硬體內容脈絡交換以使程序自大核心遷移至小核心。在一實施例中,此情況可如下實施:(a)停止在大核心上之程式碼執行且停用中斷;(b)將大核心架構狀態複製至RMU內部記憶體(應注意,除藉由諸如XSAVE之保存指令保存的架構暫存器之外,亦可保存至少某些MSR及非架構可見組態暫存器);(c)在小核心上還原部分狀態(即,由小核心ISA支援之暫存器),且啟用中斷;及(d)繼續在小核心上之執行。
應注意,由於大核心及小核心可具有不同的ISA,因此並非所有大核心資源(例如,MSR)將受到小核心支援。為了啟用如圖4中所見之自小核心至大核心之內容脈絡遷移,RMU可包含某個儲存器來維持大核心狀態之未轉移至小核心的彼部分。在XSAVE或XRESTORE指令由小核心上之軟體執行期間,RMU可存取此儲存器,以便提取未由小核心保持但由軟體保存之資源資訊。為了使得硬體能夠知道計劃在OS內容脈絡交換之後執行之程式碼類型,以選擇正確的核心類型且避免頻繁的核心遷移,軟體執行緒內容脈絡可保持ISA暫存器作為其非架構內容脈絡之部分。此可藉由延伸XSAVE及XRESTORE結構以包含ISA暫存器而完成。在此情況下,ISA暫存器在OS內容脈絡交換 期間將被保存及還原。
現參看圖5,所示為根據本發明之另一實施例的用於執行動態遷移之方法的流程圖。如圖5中所示,方法350可藉由遷移單元在分析是否使在小核心上執行之程序遷移至大核心時執行。如所見,方法350可藉由喚醒遷移單元(區塊355)開始。接下來,可在菱形區塊360判定喚醒是否回應於異步事件中斷。若如此,則控制轉至區塊385,其中可執行動態遷移,因此以對OS通透之方式將程序自小核心遷移至大核心。如下文將進一步論述,各種操作可在執行此動態遷移時執行。一般而言,程序之小核心的狀態可經交換至大核心,以使得程序能夠在大核心上繼續執行。應注意,在圖5中所示之實施例中,不管喚醒遷移單元之異步事件的類型如何,結果皆為自小核心至大核心之動態遷移。作為可接收之事件類型的實例,如在OS中起始之(例如)自較低效能位準至較高效能位準的諸如核心P狀態之改變的各種異步觸發可為觸發器。或者,異步觸發可為歸因於試圖在具有並不受小核心之ISA支援的指令之小核心上執行程式碼的異常。
仍然參看圖5,若實情為判定遷移單元由於諸如中斷之異步事件而未喚醒,則控制轉至區塊365,其中遷移單元可分析在小核心上執行之程序。舉例而言,如上文所論述,小核心之各種效能監視器可經分析以判定小核心之能力是否適合於程序所需要之效能位準。基於此資訊,可在菱形區塊370判定利用位準是否高於程序之臨限位準。儘 管本發明之範疇在此方面不受限制,但在一實施例中,利用之此臨限位準可對應於在給定評估時間間隔內每循環所執行之指令數目。因此,此判定可分析效能監視器來判定是否高度利用小核心(例如,具有高IPC),使得小核心可被認為是受計算束縛的。因此,可藉由將程序遷移至大核心來更好地提供效能。
若所判定利用超出臨限位準,則控制轉至菱形區塊375,其中可判定程序是否已在核心之間交換大於臨限次數。應注意,在一些實施例中,可存在多個臨限位準,以說明磁滯現象(hysteresis)。若此計數值超過給定臨限值,則此情況指示因為某一原因程序繼續自小核心交換回至大核心(例如,不受小核心支援之程式碼之指令的執行)。因此,包含在兩個核心類型之間的交換期間之效能損失的額外負荷及在執行遷移時造成的額外能量耗費可能不值得付出努力,且因此控制轉至區塊380,其中程序可以對OS通透之方式在小核心上得以維持。
若此程序之核心之間的交換數目低於臨限數目,則在區塊385,如上文所論述,可執行動態遷移。若在菱形區塊370利用位準小於臨限位準,則程序在小核心上之執行為適當的,且因此,控制轉至區塊380,其中程序可以對OS通透之方式在小核心上得以維持。儘管在圖5之實施例中以此特定實施展示,但應理解,本發明之範疇在此方面不受限制。
現參看圖6,所示為根據本發明之一實施例的自 小核心至大核心之程序遷移的圖解說明。更具體言之,此種類型之遷移可稱為“故障及遷移”操作。在各種實施例中,RMU可因為數個原因將程序自小核心遷移至大核心。舉例而言,RMU可判定程序需要較高效能;在小核心上之程式碼執行期間出現未受支援指令;或回應於與未受小核心支援之大核心特徵(例如,操作模式或MSR等)相關的故障。舉例而言,針對在小核心中未受支援之程式碼執行使用分頁模式可觸發異常且強制遷移至大核心。當在小核心上遇到此種指令時,可向RMU發出“無效作業碼”異常。回應於此異常,RMU將程序自小核心遷移至大核心,且重新開始有故障指令執行。RMU亦在大核心之所使用ISA暫存器中標記相應位元,以指示大核心之完整ISA的使用。在圖6中所示之實例中,儘管當然其他指令類型可不受小核心支援,但此未受支援指令為IntelTM架構(IA)處理器之進階向量延伸(AVX)指令集延伸。
應注意,此同一機制允許OS在程式碼以對OS通透之方式在小核心上執行時交換內容脈絡。圖7為根據本發明之實施例的自小核心至大核心之另一程序遷移的圖解說明。假定OS決定在當前執行之第一程序與將交換之第二程序之間交換內容脈絡。因為小核心對OS通透,所以儘管程序實際上在小核心上執行,但在假定程序在大核心上執行時,OS仍發出內容脈絡交換指令。作為內容脈絡交換之部分,OS可設法使用XSAVE指令儲存大核心ISA之暫存器。然而,此程序之程式碼正在小核心上執行,出於論述之目 的假定此小核心不支援XSAVE指令,且因此在小核心上執行之此XSAVE指令導致無效作業碼異常。
應注意,將小核心中觸發之異常發送至RMU,即,發送至RMU之異常處置器,其將程序遷移回至大核心,保存小核心狀態,且還原包含超級狀態(對應於大核心之不轉移至小核心的狀態)之相應大核心暫存器,並重新繼續執行。XSAVE指令現可在大核心上適當地執行以使大核心架構狀態得以保存,且OS可部分地使用XRESTORE指令來交換至新的第二程序。
應注意,所使用ISA暫存器可在內容脈絡交換上由RMU重設,或在新的程序開始時重設。因此,RMU週期性地檢查此暫存器,且基於一組策略或試探法,RMU可決定將在大核心上執行之程序移動至小核心,或將在小核心上執行之程序移動至大核心。
如上文所描述,基於硬體之內容脈絡交換可在此等轉變之數目超過臨限值之情況下得到限制。為此,程序在一段時間內在異質核心之間已轉變的次數可(例如)在RMU之計數器陣列中得以維持。此陣列可具有複數個計數器,其各自與程序相關聯,以在程序執行期間計數在異質核心之間的轉變之數目。基於此計數,若程序在核心之間頻繁地轉變(例如,基於計數是否超過臨限值),則RMU可選擇將程序留在大核心上。
核心選擇程序可在一些實施例中藉由將快取記憶體添加至RMU(或與RMU相關聯)而最佳化,其中快取記 憶體可儲存用於最近程序之ISA的內部資料庫。可視此資料庫為圖1中之程序設定檔資料庫146。接著,當OS將內容脈絡交換至新的程序時,RMU可立即檢查新的程序是否在此資料庫中,以在資料庫之項目指示僅存在能夠使用小核心ISA執行之程式碼的情況下,加速遷移至小核心。
實施例因此對OS隱藏實體異質性且允許利用異質性,而無需OS支援。
現參看圖8,所示為根據本發明之另一實施例之處理器的方塊圖。如圖8中所示,處理器400可為多核心處理器,其包含可對OS曝露之複數個第一核心4101至410n,及對OS通透之複數個第二核心410a至410x。在各種實施例中,核心之此等不同群組可具有異質設計。
如所見,各種核心可經由互連415耦接至包含各種組件之系統代理或非核心420。如所見,非核心420可包含可為最末層級快取記憶體的共用快取記憶體430。另外,非核心可包含整合式記憶體控制器440、各種介面450a至450n、電力控制單元455、進階可程式化中斷控制器(APIC)465及遷移單元460。應注意,在各種實施例中,共用快取記憶體可能或可能不在不同的核心類型之間共用。
如圖8中進一步所見,遷移單元460可包含各種邏輯單元及儲存器。在所示實施例中,遷移單元460可包含異常處置器452,其可經組態以經由硬體接收且處置發生在核心及/或對OS通透之其他組件上的異常。以此方式,此處置器可在無OS支援之情況下對諸如無效作業碼異常之中斷作 出回應。另外,遷移單元460可包含狀態儲存器454,其可出於內容脈絡交換之目的而用以儲存大核心及小核心之架構狀態(及微架構狀態),包含在內容脈絡交換上維持大核心之不轉移至小核心的狀態。此外,遷移單元460可包含程序設定檔儲存器456,其可包含具有項目之表,此等項目各自與程序相關聯,且指示彼程序之程式碼是否使用由各種可用核心支援之ISA。此表可由硬體內容脈絡交換邏輯458存取,以輔助快速地判定給定程序是否可由小核心處置。
儘管在圖8之實施例中以此特定邏輯展示,但應理解,本發明之範疇在此方面不受限制。舉例而言,在其他實施例中,遷移單元460之各種邏輯可在單一邏輯區塊中實施。
APIC 465可接收各種中斷且酌情將此等中斷指向給定一或多個核心。在一些實施例中,為了維持小核心對OS隱藏,遷移單元460可經由APIC 465動態地將傳入中斷自與大核心相關聯之APIC ID重新映射至與小核心相關聯之APIC ID,此等傳入中斷中之每一者可包含與其相關聯之APIC識別符。假定在開機時間期間針對對作業系統可見之核心類型而分配之APIC ID在核心類型之間遷移,作為核心類型交換之部分。
進一步參看圖8,處理器400可(例如)經由記憶體匯流排而與系統記憶體480通信。另外,藉由介面450,可連接至各種晶片外組件(off-chip component),諸如,周邊裝置及大容量儲存器等。儘管在圖8之實施例中以此特定實施 展示,但本發明之範疇在此方面不受限制。舉例而言,在一些實施例中,諸如圖8中所示之處理器可進一步包含整合式圖形引擎,其可具有單獨圖形域。
實施例可以許多不同的系統類型實施。現參看圖9,所示為根據本發明之實施例之系統的方塊圖。如圖9中所示,多處理器系統500為點對點互連系統,且包含經由點對點互連550耦接之第一處理器570及第二處理器580。如圖9中所示,處理器570及處理器580中之每一者可為多核心處理器,其包含第一處理器核心及第二處理器核心(亦即,處理器核心574a及574b以及處理器核心584a及584b),第一處理器核心及第二處理器核心中之每一者可為具有不同ISA之異質核心,但潛在地更多核心可存在於此等處理器中。此等處理器中之每一者可包含遷移單元或其他邏輯,以對OS通透之方式執行內容脈絡交換,如本文中所描述。
仍然參看圖9,第一處理器570進一步包含記憶體控制器集線器(memory controller hub;MCH)572及點對點(point-to-point;P-P)介面576及578。類似地,第二處理器580包含MCH 582及P-P介面586及588。如圖9中所示,MCH 572及MCH 582將處理器耦接至各別記憶體,即,記憶體532及記憶體534,其可為在本端附接至各別處理器之系統記憶體(例如,DRAM)的部分。第一處理器570及第二處理器580可分別經由P-P互連552及P-P互連554耦接至晶片組590。如圖9中所示,晶片組590包含P-P介面594及P-P介面598。
此外,晶片組590包含介面592,其藉由P-P互連 539將晶片組590與高效能圖形引擎538耦接。然而,在其他實施例中,圖形引擎538可在處理器570及處理器580中之一者或兩者內部。而晶片組590可經由介面596耦接至第一匯流排516。如圖9中所示,各種輸入/輸出(input/output;I/O)裝置514可連同將第一匯流排516耦接至第二匯流排520之匯流排橋接器518一起耦接至第一匯流排516。在一實施例中,各種裝置可耦接至第二匯流排520,此等裝置包含(例如)鍵盤/滑鼠522、通信裝置526,及資料儲存單元528,諸如,可包含程式碼530之磁碟機或其他大容量儲存裝置。此外,音訊I/O 524可耦接至第二匯流排520。實施例可併入其他類型之系統中,包含諸如智慧型電話之行動裝置、平板電腦、超級本(ultrabook)或迷你筆記型電腦等。
實施例可以程式碼方式實施,且可儲存在上面儲存有指令之非暫時性儲存媒體上,此等指令可用以程式化用以執行指令之系統。儲存媒體可包含(但不限於)任何類型之碟片,包含軟碟、光碟、固態硬碟(solid state drive;SSD)、緊密光碟唯讀記憶體(compact disk read-only memory;CD-ROM)、可重寫緊密光碟(compact disk rewritable;CD-RW)及磁光碟;半導體裝置,諸如,唯讀記憶體(read-only memory;ROM)、諸如動態隨機存取記憶體(dynamic random access memory;DRAM)、靜態隨機存取記憶體(static random access memory;SRAM)之隨機存取記憶體(random access memory;RAM)、可抹除可程式化唯讀記憶體(erasable programmable read-only memory; EPROM)、快閃記憶體、電可抹除可程式化唯讀記憶體(electrically erasable programmable read-only memory;EEPROM)、磁卡或光卡,或適合於儲存電子指令之任何其他類型之媒體。
儘管已相對於有限數目個實施例描述了本發明,但熟悉此項技術者將瞭解其許多修改及變化。預期所附申請專利範圍涵蓋如在本發明之真實精神及範疇內的所有此等修改及變化。
100‧‧‧系統
110‧‧‧處理器
120‧‧‧核心單元
125‧‧‧大核心
1250‧‧‧大核心
1251‧‧‧大核心
1260‧‧‧ISA監視器
126n‧‧‧ISA監視器
1300‧‧‧小核心
130n‧‧‧小核心
140‧‧‧重新映射及遷移單元(RMU)
145‧‧‧程序設定檔資料庫
146‧‧‧狀態儲存器
148‧‧‧異常處置單元
1500‧‧‧OS執行佇列
150n‧‧‧OS執行佇列
155‧‧‧OS排程器
1650‧‧‧虛擬大核心/虛擬核心
1651‧‧‧虛擬大核心

Claims (26)

  1. 一種多核心處理器,其包括:一第一指令集架構(ISA)之一核心,該第一ISA核心對一作業系統(OS)可見且包括一第一使用暫存器來儲存一指示符,以識別由在該第一ISA核心上執行之一程序所使用的一ISA;一第二ISA之一核心,其包括一第二使用暫存器來儲存一指示符,以識別由在該第二ISA核心上執行之一程序所使用的一ISA,其中該第二ISA核心對該OS通透且與該第一ISA核心異質;及一遷移單元,其耦接至該等第一及第二ISA核心,以將由該OS排程給該第一ISA核心之一第一程序動態地遷移至該第二ISA核心,其中該動態遷移對該OS通透。
  2. 如申請專利範圍第1項之多核心處理器,其中該遷移單元將至少部分地基於儲存在該第一ISA核心之該第一使用暫存器中的該指示符來動態地遷移該第一程序。
  3. 如申請專利範圍第2項之多核心處理器,其中該遷移單元將進一步基於該第一程序在該第一核心上執行期間所獲得的效能監視器資訊來動態地遷移該第一程序。
  4. 如申請專利範圍第1項之多核心處理器,其中該遷移單元包括一狀態儲存器來儲存在該動態遷移之後該第一ISA核心之一狀態的一部分,其中該狀態部分在該第二 ISA核心中不具有一相應狀態儲存器。
  5. 如申請專利範圍第1項之多核心處理器,其進一步包含一程序設定檔表來儲存複數個項目,該等項目各自與一程序相關聯,且包括一欄位來指示由該程序使用之一ISA。
  6. 如申請專利範圍第5項之多核心處理器,其中該遷移單元將存取該程序設定檔表,且將至少部分地基於該項目欄位來將由該OS排程給該第一ISA核心的一程序動態地遷移至該第二ISA核心。
  7. 如申請專利範圍第6項之多核心處理器,其中該遷移單元包括一異常處置單元來處置在該程序以對該OS通透之方式在該第二ISA核心上執行期間發生之一異常。
  8. 如申請專利範圍第5項之多核心處理器,其中該第一ISA核心包括:一暫存器陣列,其包括該第一使用暫存器;一第一受支援暫存器,其包括複數個欄位,該等欄位各自將指示一相應硬體特徵是否受該第一ISA核心支援;及一第一經啟用暫存器,其包括複數個欄位,該等欄位各自將指示一相應硬體特徵是否被啟用以用於執行該第一程序。
  9. 如申請專利範圍第1項之多核心處理器,其中該遷移單元包括一第一計數器來計數該第一程序已在該第一ISA核心與該第二ISA核心之間交換之一次數。
  10. 如申請專利範圍第9項之多核心處理器,其中該遷移單元在該第一計數器之一值大於一第一臨界值時,將防止 該第一程序自該第一ISA核心遷移至該第二ISA核心。
  11. 一種方法,其包含:在一多核心處理器之一遷移單元中,判定在一第一核心上執行之一程序的程式碼是否受一第二核心支援,其中該等第一及第二核心屬於該多核心處理器且該第二核心對一作業系統(OS)通透且與該第一核心異質;及若如此,則在該第一核心未經充分利用之情況下,經由該遷移單元將該程序自該第一核心動態地遷移至該第二核心。
  12. 如申請專利範圍第11項之方法,其進一步包含判定該程序是否已在該第一核心與該第二核心之間交換大於一臨界次數,且在該程序已交換了小於該臨界次數之情況下,以對該OS通透之方式將該程序動態地遷移至該第一核心。
  13. 如申請專利範圍第12項之方法,其進一步包含在該程序已在該第一核心與該第二核心之間交換了大於該臨界次數之情況下,將該程序維持在該第一核心上。
  14. 如申請專利範圍第11之方法,其進一步包含存取該第一核心之一使用暫存器來判定該程式碼是否受該第二核心支援,該使用暫存器將儲存一欄位來指示由該程式碼使用之一ISA。
  15. 如申請專利範圍第11項之方法,其進一步包含響應於一同步事件而喚醒該遷移單元,以判定該程式碼是否受該 第二核心支援。
  16. 如申請專利範圍第11項之方法,其進一步包含響應於一異步事件而喚醒該遷移單元。
  17. 如申請專利範圍第16項之方法,其進一步包含響應於該異步事件而以對該OS通透之方式將該程序自該第二核心動態地遷移至該第一核心。
  18. 如申請專利範圍第12項之方法,其進一步包含在該第二核心之一利用位準高於一臨界位準之情況下,將該程序自該第二核心動態地遷移至該第一核心。
  19. 一種系統,其包含:一多核心處理器,其包括第一複數核心及第二複數核心,該等第二複數核心與該等第一複數核心異質,且對一作業系統(OS)通透,及一遷移單元,其中該遷移單元將響應於該第二核心不支援之一程序的一指令而自該等第二複數核心中之一第二核心接收一中斷,且將致使一內容脈絡交換來將該程序以對該OS通透之方式自該第二核心動態地遷移至該等第一複數核心中之一第一核心,其中該OS將該程序排程給該第一核心;及一動態隨機存取記憶體(DRAM),其耦接至該多核心處理器。
  20. 如申請專利範圍第19項之系統,其中該遷移單元包括一硬體異常單元來以對該OS通透之方式處置由該第二核心不支援之該程序之該指令引起的一異常。
  21. 如申請專利範圍第19項之系統,其中該遷移單元包括: 一硬體內容脈絡交換邏輯,以致使在該第一核心上執行之一第二程序以對該OS通透之方式動態地交換至該第二核心;及一狀態儲存器,以在該第二程序在該第二核心上執行期間儲存該第二程序之狀態的一部分。
  22. 如申請專利範圍第19項之系統,其中該遷移單元包括一程序設定檔表來儲存複數個項目,該等項目各自與一程序相關聯,且包括一欄位來指示由該程序使用之一ISA,該遷移單元將存取該程序設定檔表,且將至少部分地基於針對該程序之該項目的該欄位來將該程序動態地遷移至該第二核心。
  23. 如申請專利範圍第19項之系統,其中該遷移單元包括一計數器來計數該程序在該等第一與第二核心之間的一交換次數,其中在該交換次數超過一臨界值之情況下,該遷移單元將防止在該第一核心與該第二核心之間的一內容脈絡交換。
  24. 如申請專利範圍第19項之系統,其中相較於該等第一複數核心,該等第二複數核心具有一不同的指令集架構(ISA)。
  25. 如申請專利範圍第24項之系統,其中該不同的ISA部分地與該等第一複數核心之一ISA重疊。
  26. 如申請專利範圍第19項之系統,其中相較於該等第一複數核心,該等第二複數核心具有一不同的效能及/或功率位準。
TW101149549A 2011-12-30 2012-12-24 通透地提供給作業系統之非對稱多核心處理器系統 TWI494850B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/068008 WO2013101139A1 (en) 2011-12-30 2011-12-30 Providing an asymmetric multicore processor system transparently to an operating system

Publications (2)

Publication Number Publication Date
TW201342218A true TW201342218A (zh) 2013-10-16
TWI494850B TWI494850B (zh) 2015-08-01

Family

ID=48698373

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101149549A TWI494850B (zh) 2011-12-30 2012-12-24 通透地提供給作業系統之非對稱多核心處理器系統

Country Status (3)

Country Link
US (1) US9720730B2 (zh)
TW (1) TWI494850B (zh)
WO (1) WO2013101139A1 (zh)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7841436B2 (en) 2008-01-21 2010-11-30 Amigo Mobility International Personal mobility vehicle
US9069553B2 (en) * 2011-09-06 2015-06-30 Marvell World Trade Ltd. Switching tasks between heterogeneous cores
US9396020B2 (en) 2012-03-30 2016-07-19 Intel Corporation Context switching mechanism for a processing core having a general purpose CPU core and a tightly coupled accelerator
US9047137B2 (en) * 2012-04-10 2015-06-02 Empire Technology Development Llc Balanced processing using heterogeneous cores
KR102082859B1 (ko) * 2013-01-07 2020-02-28 삼성전자주식회사 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법
US9727345B2 (en) 2013-03-15 2017-08-08 Intel Corporation Method for booting a heterogeneous system and presenting a symmetric core view
US10423216B2 (en) * 2013-03-26 2019-09-24 Via Technologies, Inc. Asymmetric multi-core processor with native switching mechanism
KR102205836B1 (ko) 2014-01-29 2021-01-21 삼성전자 주식회사 태스크 스케줄링 방법 및 장치
US9760408B2 (en) * 2014-03-26 2017-09-12 Unisys Corporation Distributed I/O operations performed in a continuous computing fabric environment
US9569115B2 (en) 2014-03-31 2017-02-14 International Business Machines Corporation Transparent code patching
US9256546B2 (en) 2014-03-31 2016-02-09 International Business Machines Corporation Transparent code patching including updating of address translation structures
US9483295B2 (en) 2014-03-31 2016-11-01 International Business Machines Corporation Transparent dynamic code optimization
US9734083B2 (en) 2014-03-31 2017-08-15 International Business Machines Corporation Separate memory address translations for instruction fetches and data accesses
US9858058B2 (en) 2014-03-31 2018-01-02 International Business Machines Corporation Partition mobility for partitions with extended code
US9824021B2 (en) 2014-03-31 2017-11-21 International Business Machines Corporation Address translation structures to provide separate translations for instruction fetches and data accesses
US9715449B2 (en) 2014-03-31 2017-07-25 International Business Machines Corporation Hierarchical translation structures providing separate translations for instruction fetches and data accesses
US9720661B2 (en) 2014-03-31 2017-08-01 International Businesss Machines Corporation Selectively controlling use of extended mode features
CN104516760B (zh) 2014-12-12 2018-01-09 华为技术有限公司 一种操作系统热切换的方法、装置及移动终端
FR3035243B1 (fr) 2015-04-20 2018-06-29 Commissariat A L'energie Atomique Et Aux Energies Alternatives Placement d'une tache de calcul sur un processeur fonctionnellement asymetrique
US9910700B2 (en) 2015-08-26 2018-03-06 Netapp, Inc. Migration between CPU cores
US10459759B2 (en) 2015-08-26 2019-10-29 Netapp, Inc. Migration between CPU cores
US10152322B2 (en) 2015-11-05 2018-12-11 International Business Machines Corporation Memory move instruction sequence including a stream of copy-type and paste-type instructions
US10331373B2 (en) * 2015-11-05 2019-06-25 International Business Machines Corporation Migration of memory move instruction sequences between hardware threads
US10126952B2 (en) 2015-11-05 2018-11-13 International Business Machines Corporation Memory move instruction sequence targeting a memory-mapped device
US10140052B2 (en) 2015-11-05 2018-11-27 International Business Machines Corporation Memory access in a data processing system utilizing copy and paste instructions
US10346164B2 (en) 2015-11-05 2019-07-09 International Business Machines Corporation Memory move instruction sequence targeting an accelerator switchboard
US10067713B2 (en) 2015-11-05 2018-09-04 International Business Machines Corporation Efficient enforcement of barriers with respect to memory move sequences
US10042580B2 (en) 2015-11-05 2018-08-07 International Business Machines Corporation Speculatively performing memory move requests with respect to a barrier
US9996298B2 (en) 2015-11-05 2018-06-12 International Business Machines Corporation Memory move instruction sequence enabling software control
US10241945B2 (en) 2015-11-05 2019-03-26 International Business Machines Corporation Memory move supporting speculative acquisition of source and destination data granules including copy-type and paste-type instructions
US10037227B2 (en) * 2015-12-17 2018-07-31 Intel Corporation Systems, methods and devices for work placement on processor cores
CN105718320B (zh) 2016-01-18 2020-11-06 华为技术有限公司 一种时钟任务处理方法、装置及设备
US10713213B2 (en) * 2016-12-21 2020-07-14 Intel Corporation Systems and methods for multi-architecture computing
EP3812900B1 (en) * 2016-12-31 2023-11-29 Intel Corporation Systems, methods, and apparatuses for heterogeneous computing
US11275709B2 (en) 2017-05-02 2022-03-15 Intel Corporation Systems and methods for multi-architecture computing
US10510133B2 (en) * 2017-06-20 2019-12-17 Think Silicon Sa Asymmetric multi-core heterogeneous parallel processing system
US10698472B2 (en) * 2017-10-27 2020-06-30 Advanced Micro Devices, Inc. Instruction subset implementation for low power operation
US10713075B2 (en) 2017-11-30 2020-07-14 International Business Machines Corporation Workload manager control of dynamic thread mode switch
US10700954B2 (en) * 2017-12-20 2020-06-30 Advanced Micro Devices, Inc. Scheduling memory bandwidth based on quality of service floorbackground
KR102482896B1 (ko) 2017-12-28 2022-12-30 삼성전자주식회사 이종 휘발성 메모리 칩들을 포함하는 메모리 장치 및 이를 포함하는 전자 장치
US10949207B2 (en) 2018-09-29 2021-03-16 Intel Corporation Processor core supporting a heterogeneous system instruction set architecture
KR102552954B1 (ko) * 2018-11-07 2023-07-06 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템의 동작 방법
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)
US11016766B2 (en) 2019-06-29 2021-05-25 Intel Corporation Apparatus and method for compiler hints for inter-core offload
US11321144B2 (en) 2019-06-29 2022-05-03 Intel Corporation Method and apparatus for efficiently managing offload work between processing units
US11030000B2 (en) 2019-06-29 2021-06-08 Intel Corporation Core advertisement of availability
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
US11409572B2 (en) 2019-09-27 2022-08-09 Intel Corporation Methods of hardware and software coordinated opt-in to advanced features on hetero ISA platforms
CN112395095A (zh) * 2020-11-09 2021-02-23 王志平 一种基于cpoc的进程同步方法
US20230205592A1 (en) * 2021-12-23 2023-06-29 Intel Corporation Asymmetric tuning
US20230418664A1 (en) * 2022-06-22 2023-12-28 Advanced Micro Devices, Inc. Adaptive thread management for heterogenous computing architectures

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5257375A (en) 1991-08-23 1993-10-26 International Business Machines Corp. Method and apparatus for dispatching tasks requiring short-duration processor affinity
US5768594A (en) 1995-07-14 1998-06-16 Lucent Technologies Inc. Methods and means for scheduling parallel processors
US5895487A (en) * 1996-11-13 1999-04-20 International Business Machines Corporation Integrated processing and L2 DRAM cache
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
US7093147B2 (en) 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
US7376954B2 (en) 2003-08-28 2008-05-20 Mips Technologies, Inc. Mechanisms for assuring quality of service for programs executing on a multithreaded processor
US7516456B2 (en) 2003-09-25 2009-04-07 International Business Machines Corporation Asymmetric heterogeneous multi-threaded operating system
US7451146B2 (en) 2004-06-30 2008-11-11 Hewlett-Packard Development Company, L.P. Almost non-blocking linked stack implementation
US20060075404A1 (en) 2004-10-06 2006-04-06 Daniela Rosu Method and system for scheduling user-level I/O threads
US8607235B2 (en) 2004-12-30 2013-12-10 Intel Corporation Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention
US8028295B2 (en) * 2005-09-30 2011-09-27 Intel Corporation Apparatus, system, and method for persistent user-level thread
US7461275B2 (en) 2005-09-30 2008-12-02 Intel Corporation Dynamic core swapping
JP4621113B2 (ja) 2005-10-28 2011-01-26 ルネサスエレクトロニクス株式会社 半導体集積回路装置
US8914618B2 (en) * 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
KR100714712B1 (ko) * 2006-02-21 2007-05-04 삼성전자주식회사 컨테인먼트 프레임워크 환경에서 자원을 관리하는 장치 및방법
US7647509B2 (en) 2006-05-12 2010-01-12 Intel Corporation Method and apparatus for managing power in a processing system with multiple partitions
US20080263324A1 (en) 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
US8028290B2 (en) 2006-08-30 2011-09-27 International Business Machines Corporation Multiple-core processor supporting multiple instruction set architectures
JP2008226182A (ja) * 2007-03-15 2008-09-25 Ricoh Co Ltd データ配信システム、データ配信方法、データ配信プログラム、および記録媒体
US7603504B2 (en) 2007-12-18 2009-10-13 Intel Corporation Reducing core wake-up latency in a computer system
KR101366075B1 (ko) * 2007-12-20 2014-02-21 삼성전자주식회사 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치
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
US8880851B2 (en) * 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline

Also Published As

Publication number Publication date
US20140082630A1 (en) 2014-03-20
US9720730B2 (en) 2017-08-01
WO2013101139A1 (en) 2013-07-04
TWI494850B (zh) 2015-08-01

Similar Documents

Publication Publication Date Title
TWI494850B (zh) 通透地提供給作業系統之非對稱多核心處理器系統
US10185566B2 (en) Migrating tasks between asymmetric computing elements of a multi-core processor
US20210357214A1 (en) Methods, apparatus, and instructions for user-level thread suspension
US9032125B2 (en) Increasing turbo mode residency of a processor
TWI550518B (zh) 用於包括執行緒合併之能源效率及能源節約的方法、裝置及系統
US8489904B2 (en) Allocating computing system power levels responsive to service level agreements
US8954977B2 (en) Software-based thread remapping for power savings
US10156884B2 (en) Local power gate (LPG) interfaces for power-aware operations
US20140095848A1 (en) Tracking Operand Liveliness Information in a Computer System and Performing Function Based on the Liveliness Information
US8285950B2 (en) SMT/ECO mode based on cache miss rate
US8589939B2 (en) Composite contention aware task scheduling
WO2009006607A1 (en) Dynamically composing processor cores to form logical processors
US9684541B2 (en) Method and apparatus for determining thread execution parallelism
US10771554B2 (en) Cloud scaling with non-blocking non-spinning cross-domain event synchronization and data communication
US11080088B2 (en) Posted interrupt processing in virtual machine monitor

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees