TWI620121B - 具有原生切換機制之非對稱多核心處理器 - Google Patents
具有原生切換機制之非對稱多核心處理器 Download PDFInfo
- Publication number
- TWI620121B TWI620121B TW103104396A TW103104396A TWI620121B TW I620121 B TWI620121 B TW I620121B TW 103104396 A TW103104396 A TW 103104396A TW 103104396 A TW103104396 A TW 103104396A TW I620121 B TWI620121 B TW I620121B
- Authority
- TW
- Taiwan
- Prior art keywords
- core
- thread
- processor
- feature
- instruction set
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3293—Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一處理器包含一第一與一第二處理核心,以支援其指令集架構之特徵集合中相對應之一第一與一第二特徵子集合。受支援之該第一特徵子集合係少於指令集架構之特徵集合之所有特徵。受支援之第一與第二特徵子集合互不相同,但其結合即為指令集架構之特徵集合之所有特徵。當一執行緒由第一核心執行時,第一核心係偵測執行緒是否嘗試利用該指令集架構之特徵集合中不包含於受支援之第一特徵子集合之一特徵,以做出指示由第一核心切換至第二核心用以執行執行緒之回應。此不受支援之特徵可為一不受支援之指令或操作模式。此切換動作可在低效能/低功耗之核心過度使用或是在高功耗/高效能之核心利用率過低時執行。
Description
本發明係關於一種處理器,尤其是一種非對稱多核心處理器。
本申請案主張2013年3月26日提出之美國臨時專利申請案第61/805,225號“ASYMMETRIC MULTI-CORE PROCESSOR WITH NATIVE SWITCHING MECHANISM”之優先權,其內容係整體引用為本案之揭露內容。
總部位於英國劍橋之處理器授權商ARM近來提出一種稱為“大小核(big.LITTLE)”之處理架構。舉例來說,大小核系統之“大核(big)”可以是效能較高且功耗較高之Cortex-A15處理器,而與其匹配之“小核(LITTLE)”可以是效能較低且功耗較低之Cortex-A7處理器。此系統可在依據執行緒之運算強度,在此二個處理器間進行切換。若是此執行緒具有高運算強度,此系統會切換至Cortex-A15處理器執行;反之,當執行緒不具有高運算強度時,此系統就會切換至Cortex-A7處理器執行。透過如此處理,就可以使整體效能接近Cortex-A15處理器的水
準,而功耗則是介於處理器Cortex-A7與Cortex-A15之間。此設計特別適用於由電池供電且所需效能變化範圍大之處理平台,例如智慧手機。
在Peter Greenhalgh著,於2011年九月發布之ARM白皮書“Big.LITTLE Processing with ARM CortexTM-A15 & Cortex-A7”中,即指出Cortex-A15與Cortex-A7處理器之架構相同,並以此為大小核(big.LITTLE)之一重要範例。進一步來說,這兩個處理器都是採用ARM v7A架構。(舉例來說,Cortex-A7處理器係採用ARM v7A架構之虛擬與大型實體定址延伸(Virtualization and Large Physical Address Extensions))基於此,這兩個處理器都可以執行此架構下之所有指令,雖然部分指令的執行上會呈現不同之效能與功耗。此作業系統會決定切換處理器之時點,以試著滿足當前執行之應用程式所需之效能。
大小核(big.LITTLE)之一限制在於,兩個處理器之間需要充分之架構相容性。此問題在於架構內之指令具要相當數量電晶體之配合的情況下,會變得更為顯著。舉例來說,就算是單指令多數據(SIMD)指令,其最低硬體需求也相當可觀,即使是小核(LITTLE)處理器,也具有簡單之硬體來對於SIMD指令內各別部分之數據進行排序。基本上,這些指令在應用程式內之出現情形,即高度相關於此應用程式對於高效能處理之需求。基於此,在小核處理器內之SIMD簡單硬體不大可能會有明顯的使用時間,因為此硬體很快就無法滿足應用程式之效能需求致使系統切換至大核(big)處理器處理。因此,小核
處理器內之SIMD簡單硬體將會是浪費。
大小核(big.LITTLE)之另一限制在於,作業系統需要改變以在處理器切換時作出處理並調和此切換動作。但是,說服作業系統之開發者將這些為此特殊利用而設置之指令納入其中是相當困難的,尤其對於嵌入式作業系統之開發者更是如此。
大小核(big.LITTLE)之另一個缺點在於,作業系統決定大小核處理器切換時點之部分會消耗當前正在運作之處理器的頻寬而使此頻寬無法為應用程式所使用。亦即,切換編碼並非與應用程式平行執行,而是互為代替。
大小核(big.LITTLE)之另一個缺點在於,部分應用程式難以開發出有效之切換編碼。亦即,除非是功耗顯然過多(即大核處理器執行過久)或是效能過低(即小核處理器執行過久)之情況下,否則作業系統難以知曉切換時點來執行處理器之切換。
本發明之一實施例提供一種處理器。此處理器具有一指令集架構(ISA),而此指令集架構具有一特徵集合。此處理器包含一第一與一第二處理核心,用以支援該指令集架構之特徵集合中,相對應之一第一與一第二特徵子集合。受支援之該第一特徵子集合係少於該指令集架構之特徵集合之所有特徵。受支援之該第一與該第二特徵子集合係互不相同。受支援之該第一與該第二特徵子集合之結合即為該指令集架構之特徵集合之所有特徵。當一執行緒由該第一核心執行時,該第一核心係偵測該執行
緒是否嘗試利用該指令集架構之特徵集合中不包含於受支援之該第一特徵子集合之一特徵,以做出指示該處理器由該第一核心切換至該第二核心執行該執行緒之回應。
本發明之另一實施例提供一種由一處理器執行之方法。此處理器具有一指令集架構以及一第一與一第二處理核心。此指令集架構具有一特徵集合。此方法包含:當一執行緒由該第一核心執行時,偵測該執行緒是否嘗試利用該指令集架構之特徵集合中不包含於一第一特徵子集合之一特徵。該第一核心係用以支援該第一特徵子集合。受支援之該第一特徵子集合係少於該指令集架構之特徵集合之所有特徵。該第二核心係用以支援該指令集架構之特徵集合中之一第二特徵子集合。受支援之該第一與該第二特徵子集合之特徵互不相同。該第一與該第二特徵子集合所支援之特徵之結合即為該指令集架構之特徵集合之所有特徵。此方法亦包含:將該執行緒之執行切換至該第二核心而非該第一核心,以回應該偵測步驟。
本發明之又一實施例提供一種處理器。此處理器包含至少二個處理核心,其中一個該處理核心執行一執行緒之功耗較低但效能亦較低。該處理器係偵測一事件是否發生,以指示該執行緒之執行由該些核心中之一第一核心切換至該些核心中之一第二核心。該處理器在偵測到該事件時,係自動將該執行緒之狀態由該第一核心移轉到該第二核心以為回應,而非由執行於該第一核心之架構
軟體來指示該處理器將該執行緒之狀態由該第一核心移轉到該第二核心。
本發明之又一實施例提供一種由一處理器執行之方法。此處理器具有至少二個處理核心,其中一個該處理核心執行一執行緒之功耗較低但效能亦較低。此方法包含:利用該處理器偵測一事件是否發生,以指示該執行緒之執行由該些核心中之一第一核心切換至該些核心中之一第二核心。此方法亦包含:在偵測到該事件時,利用該處理器自動將該執行緒之狀態由該第一核心移轉到該第二核心以為回應,而非由執行於該第一核心之架構軟體來指示該處理器將該執行緒之狀態由該第一核心移轉到該第二核心。
關於本發明之優點與精神可以藉由以下的發明詳述及所附圖式得到進一步的瞭解。
100‧‧‧處理器
102‧‧‧高特徵核心
104‧‧‧低特徵核心
106‧‧‧切換管理單元
108‧‧‧共享狀態儲存單元
第一圖係本發明一非對稱多核心處理器一實施例之方塊示意圖。
第二與三圖係第一圖之處理器之運作之流程圖。
第四圖係一非對稱多核心處理器一實施例之方塊示意圖,其將切換管理單元整合於非對稱核心內。
第五圖係一非對稱多核心處理器一實施例之方塊示意圖,其非對稱核心係直接將執行緒狀態視為切換執行之一部分來移轉。
第六圖係第五圖之處理器之運作之流程圖。
第七圖係本發明一非對稱多核心處理器之另一實施例
之方塊示意圖。
指令集架構,從微處理器家族的脈絡來看包含(1)指令集;(2)指令集之指令所能存取之資源集(例如:記憶體定址所需之暫存器與模式);以及(3)微處理器處理指令集之指令的操作模式(例如:16位元模式、32位元模式、64位元模式、真實模式、保護模式、長模式(Long mode)、虛擬8086模式、相容模式(compatibility mode)、虛擬機器延伸模式(Virtual Machine eXtensions(VMX)mode)、以及系統管理模式等),而程式集、資源集係包含於指令集架構的特徵集合中。因為程式撰寫者,如組譯器與編譯器的撰寫者,想要產生可在一微處理器家族執行之機器語言程式時就需要此微處理器家族之ISA定義,而微處理器家族的製造者通常會將ISA定義於操作者操作手冊中。舉例來說,2009年3月公佈之Intel 64與IA-32架構軟體開發者手冊(Intel 64 and IA-32 Architectures Software Developer’s Manual)即定義Intel 64與IA-32處理器架構的ISA。此軟體開發者手冊包含有五個章節,第一章是基本架構;第二A章是指令集參考A至M;第二B章是指令集參考N至Z;第三A章是系統編程指南;第三B章是系統編程指南第二部分,此手冊係列為本案的參考文件。此種處理器架構通常被稱為x86架構,本文中則是以x86、x86 ISA、x86 ISA家族、x86家族或是相似用語來說明。在另一個例子中,2010年公佈之ARM架構參考手
冊,ARM v7-A與ARM v7-R版本Errata markup,定義ARM處理器架構之ISA。此參考手冊係列為參考文件。此ARM處理器架構之ISA在此亦被稱為ARM、ARM ISA、ARM ISA家族、ARM家族或是相似用語。其他眾所周知的ISA家族還有IBM System/360/370/390與z/Architecture、DEC VAX、Motorola 68k、MIPS、SPARC、PowerPC與DEC Alpha等等。ISA的定義會涵蓋處理器家族,因為處理器家族的發展中,製造者會透過在指令集中增加新指令、以及/或在暫存器組中增加新的暫存器等方式來改進原始處理器之ISA。舉例來說,隨著x86程式集架構的發展,其於Intel Pentium III處理器家族導入一組128位元之多媒體擴展指令集(MMX)暫存器作為單指令多重數據流擴展(SSE)指令集的一部分,而x86 ISA機器語言程式已經開發來利用XMM暫存器以提升效能,雖然現存的x86 ISA機器語言程式並不使用單指令多重數據流擴展指令集之XMM暫存器。此外,其他製造商亦設計且製造出可執行x86 ISA機器語言程式之微處理器。例如,超微半導體(AMD)與威盛電子(VIA Technologies)即在x86 ISA增加新技術特徵,如超微半導體之3DNOW!單指令多重數據流(SIMD)向量處理指令,以及威盛電子之Padlock安全引擎隨機數產生器(random number generator)與先進譯碼引擎(advanced cryptography engine)的技術,前述技術都是採用x86 ISA之機器語言程式,但卻非由現有之Intel微處理器實現。以另一個實例來說明,ARM ISA原本定義ARM指令集狀態具有4位元組之指令。然而,隨著ARM ISA的
發展而增加其他指令集狀態,如具有2位元組指令以提升編碼密度之Thumb指令集狀態以及用以加速Java位元組碼程式之Jazelle指令集狀態,而ARM ISA機器語言程式已被發展來使用部分或所有其他ARM ISA指令集狀態,即使現存的ARM ISA機器語言程式並非採用這些其他ARM ISA指令集狀態。
指令集,係定義二進位制編碼值之集合(即機器語言指令)與微處理器所執行操作間的對應關係。機器語言指令指示微處理器執行的操作如:將暫存器1內之運算元與暫存器2內之運算元相加並將結果寫入暫存器3、將記憶體位址0x12345678之運算元減掉指令所指定之立即運算元並將結果寫入暫存器5、依據暫存器7所指定之位元數移動暫存器6內的數值、若是零旗標被設定時,分支到指令後方之36個位元組、將記憶體位址0xABCD0000的數值載入暫存器8。因此,指令集係定義各個機器語言指令使微處理器執行所欲執行之操作的二進位編碼值。需瞭解的是,指令集定義二進位值與微處理器操作間的對應關係,並不意味著單一個二進位值就會對應至單一個微處理器操作。具體來說,在部分指令集中,多個二進位值可能會對應至同一個微處理器操作。
執行緒,係一系列或是一串程式指令。執行緒在本文中又稱為程式執行緒。在本文中,程式執行緒係基於處理核心之架構程式計數器(例如x86指令指標(IP)或是AMR程式計數器(PC))提取自記憶體。相較之下,微碼常式之提取則是基於處理核心之一非架構微碼程式計數器。
架構軟體,係一程式,執行緒係分發自此程式。舉例來說,架構軟體係一般軟體應用程式,如文字處理軟體或是試算表程式,以及系統軟體,如基本輸出入系統(BIOS)或是作業系統。
微碼,係基於處理核心之微碼程式計數器提取自處理器之非架構記憶體之指令。相反地,架構軟體之提取則是基於處理核心之架構程式計數器。
處理器所具有之指令集架構特徵集合(ISA feature set)係一組由處理器支援之指令集架構所定義之特徵。這些特徵可包含處理器支援之指令集架構指令集、處理器支援之指令集架構操作模式之集合與/或處理器支援之指令集架構資源之集合。這些特徵亦可包含處理器支援之不同分頁模式。如前述,指令集架構之處理器家族中一個給定模型之處理器,所能支援之特徵通常會少於此指令集架構定義之所有特徵。
處理核心,或稱核心,係一硬體裝置,能夠處理資料以回應程式執行緒之指令執行。這些指令係屬於由包含此核心之處理器之指令集架構所定義之指令集。不過,如本文所述,處理核心可能無法支援(即無法執行)指令集架構之指令集內的所有指令。此外,處理核心可能無法支援(即無法運作於)指令集架構定義之所有模式。廣泛地來說,處理核心可能無法支援指令集架構之所有特徵,但可以支援指令集架構之特徵集合內之一特徵子集合。
執行緒狀態,係核心執行執行緒需要之所有狀態。執行
緒狀態亦可稱為執行狀態。核心執行執行緒所需要之狀態係由此指令集架構與核心之微架構所規範。雖然各個核心所支援之指令集架構特徵之子集合各有不同,且其微架構亦各有不同,不過,這些核心必須至少包含其執行執行緒所需之狀態。以下描述僅為例示之目的。執行緒狀態至少包含由指令集架構所定義之執行緒之架構狀態。舉例來說,架構暫存器(涵蓋程式計數器、通用暫存器與描述核心組態所需之控制暫存器)就會被納入執行緒狀態。此外,非架構狀態通常就不屬於執行緒狀態。非架構執行緒狀態可包含儲存微指令執行中間結果之暫時暫存器。
在本文對於非對稱多核心處理器之描述內容中,對於不受其中核心支援之指令集架構特徵,或是不包含於指令集架構特徵集合中核心支援之特徵子集合之指令集架構特徵,若是此核心不執行此特徵,執行緒就會嘗試指令集架構所定義之利用並指示切換至另一個核心。在指令不受核心支援的情況下,核心接收到指令也不會去執行。舉例來說,若是此核心不支援一I/O指令(例如x86 IN或是OUT指令),此核心就不會執行此IT指令之語意而指示一切換步驟切換至另一個核心。值得注意的是,因為此非對稱多核心處理器之核心所支援之這些特徵子集合之結合,就是整個指令集架構之特徵集合,因而必定至少有一個核心支援此指令。在操作模式不受核心支援的情況下,即使收到指示,核心也不會進入或離開此特定操作模式,而是指示一切換步驟切換至另一個核心。舉
例來說,若是此核心不支援一特殊位元寬度之操作模式(例如x86 64位元模式,亦稱為長模式)而執行緒嘗試進入此位元寬度模式(例如寫入一指令集架構特定之值至指令集架構特定之控制暫存器),此核心不會進入此模式而指示一切換步驟切換至另一個核心。同樣地,值得注意的是,因為此非對稱多核心處理器之核心所支援之這些特徵子集合之結合,就是整個指令集架構之特徵集合,因而必定至少有一個核心支援此操作模式。
第一圖係本發明一非對稱多核心處理器100一實施例之方塊示意圖。此處理器100具有一指令集架構之特徵組合。此指令集架構可以是一個既有的指令集架構,包含前述各個指令集架構,或是未來開發出來之指令集架構。
處理器100具有一高特徵核心(high-feature core)102(或稱高核心102)與一低特徵核心(low-feature core)104(或稱低核心104),各自耦接置一切換管理單元106與一共享之狀態儲存器108。相較於低特徵核心104,高特徵核心102在執行執行緒時具有較高效能但是也會消耗較多能量;反之,相較於高特徵核心102,低特徵核心104在執行執行緒時之效能較低但是消耗之能量也較少。在此理解下,此二核心102/104為非對稱。功耗/效能之非對稱主要是因為這兩個核心102/104在微架構階層之差異所致。舉例來說,這兩個核心102/104可具有不同尺寸之快取記憶體與/或不同之階層式快取結構、依序(in-order)與非循序(out-of-order)執行、不同之分支預測機制、不同組成之執行單元、純量與超純量指令技術(superscalar instruction
issue)、預測與非預測執行等。功耗/效能之差異並不會影響處理器100對執行緒之正確執行。所謂正確之執行緒執行,係指依據處理器100之指令集架構所給定之一起始狀態,再由處理器100執行執行緒而產生執行結果。核心執行執行緒之效能係指核心執行執行緒指令之速度。效能可利用每秒之指令數量或其它適合的參數來量測。
此外,低核心104與高核心102之不對稱亦顯現於其支援指令集架構之不同特徵子集合。不過,低核心104與高核心102之結合則可支援整個指令集架構,其具體實施如下所述。當此二個核心102/104之其中之一在執行一執行緒,此執行緒會嘗試利用一不包含於核心102/104所支援之特徵子集合之特徵,切換管理單元106則會將執行緒之執行切換至另一個核心102/104,此切換動作包含將執行緒狀態移轉至另一個核心102/104,以下對此有更詳細的說明。在一實施例中,高核心102所支援之特徵子集合包含指令集架構之所有特徵,而低核心104所支援之特徵子集合係少於指令集架構之所有特徵。反之,在一實施例中,高核心102所支援之特徵子集合係少於指令集架構之所有特徵,而低核心104所支援之特徵子集合之特徵包含指令集架構之所有特徵。此外,在一實施例中,高核心102所支援之特徵子集合係少於指令集架構之所有特徵,低核心104所支援之特徵子集合亦係少於指令集架構之所有特徵。不過,前述各實施例中,二個特徵子集合之結合就等同於指令集架構之所有特徵。前述各實施例中,二個核心102/104中之至少一個所支援之特徵係少於
指令集架構之所有特徵,因此,相較於二個核心102/104都支援整個指令集架構之特徵集合,本發明之實施例能進一步降低核心功耗。
透過此方式,就理論上而言,選擇由低特徵核心104或是高特徵核心102來執行執行緒係至少部分在處理器設計的時候就已經決定。概括地說,高特徵核心102所支援之指令集架構特徵基本上是關於高效能,相反地,低特徵核心104支援之特徵則是關於低效能。如前述”減少”核心對於特徵之支援,有助於瞭解何時切換執行緒之執行,而不需使用操作系統。
切換管理單元106係原生於處理器100,亦即,切換管理單元106係處理器100之一部分,而非如傳統方式架構於軟體,如操作系統。在一實施例中,此原生切換管理單元106包含一“非核心”狀態機器。在另一實施例中,此原生切換管理單元106包含一個單獨的第三處理核心。此第三處理核心之功耗極低,只處理自己的編碼,而這些編碼係與核心102/104所執行的編碼分開。舉例來說,此單獨的切換管理單元106可包含一服務處理器,同時為處理器100處理除錯與電源管理之服務。這樣做的優點在於,此單獨的切換管理單元106不需消耗當前處理核心102/104之頻寬。在另一實施例中,如下文所述,切換管理單元106係整合於低效能核心104與高效能核心102,而包含執行於核心102/104的微碼。
就一實施例而言,除了在執行緒嘗試利用正在執行之核心102/104所不支援之指令集架構特徵而完成執行之切換
外,此切換管理單元106亦會監測當前執行之核心102/104的利用率。當切換管理單元106偵測到高特徵核心102利用過低,它就會將執行緒之執行切換至低特徵核心104。反之,當切換管理單元106偵測到低特徵核心104被過度使用,它就會將執行緒之執行切換至高特徵核心102。相較於傳統方式透過操作系統來切換,切換管理單元106具有潛力能更好地判斷核心102/104之利用狀態,而能更有效地與更快速地做出切換之決定。
共享狀態儲存單元108係供核心102/104使用,在切換執行緒之執行時,將執行緒狀態之狀態由一個核心102/104移轉至另一個核心102/104。進一步來說,執行中的核心102/104係將自己的執行緒狀態儲存至共享狀態儲存單元108,用以在執行切換後之執行緒核心102/104可從共享狀態儲存單元108取得執行緒狀態。就一實施例而言,此共享狀態儲存單元108係一私有、非架構之隨機存取記憶體,例如一靜態隨機存取記憶體。此記憶體係由二個核心102/104所共享,並且,此二個核心102/104均可存取此記憶體。不過,其他類型的儲存單元亦可適用於本發明。在另一實施例中,此共享狀態儲存單元108係系統記憶體。
第二圖係第一圖之處理器100之運作一實施例之流程圖。此流程始於步驟202。
在步驟202中,非對稱核心102/104中之第一核心,即第1圖中之低核心104或高核心102,係執行一應用程式執行緒。接下來流程前進至步驟204。
在步驟204中,正在執行執行緒之第一核心102/104偵測到執行緒正在嘗試利用指令集架構之特徵集合中不受此第一核心102/104支援之一特徵。亦即,此特徵係不包含於指令集架構之特徵集合中支援此第一核心102/104之子集合。依據此不受支援之特徵的特性,此第一核心102/104可透過不同方式偵測此不受支援之特徵。舉例來說,指令解碼器對不受第一核心102/104支援之指令進行解碼、或是執行單元可偵測指令嘗試存取不受第一核心102/104支援之控制暫存器或一特殊控制暫存器位元或欄位,例如將核心102/104置於指令集架構定義之一特殊操作模式。接下來前進至步驟206。
在步驟206中,因應步驟204之偵測步驟偵測到執行緒嘗試使用不受支援之特徵,此第一核心102/104會停止執行執行緒。舉例來說,若是指令解碼器將一不受支援之指令解碼,它會設陷(trap)於一微碼常式以處理非法指令例外,此微碼常式會停止此執行緒之後續指令之執行。在另一個例子中,若是執行單元偵測到一指令嘗試存取一不受支援之控制暫存器或其位元或其欄位,它就會設陷於一微碼常式以停止此執行緒之後續指令之執行。接下來前進至步驟208。
在步驟208中,第一核心102/104指示處理器切換至第二核心102/104來執行執行緒。在一實施例中,係由如步驟206所述之微碼常式指示此切換動作。在另一實施例中,可由第一核心102/104之一硬體狀態機指示此切換動作。就一實施例而言,此第一核心102/104係傳送信號至切換
管理單元106以指示此切換之需求。接下來前進至步驟212。
在步驟212中,此切換管理單元106指示第一核心102/104儲存執行緒之狀態。就一實施例而言,此切換管理單元106係傳送信號至第一核心102/104以通知其儲存執行緒狀態。接下來前進至步驟214。
在步驟214中,第一核心102/104儲存執行緒狀態至共享狀態儲存單元108。除了執行緒狀態,此第一核心102/104亦可轉移其它不是第二核心102/104執行執行緒所必須,但能加快第二核心102/104執行執行緒之速度之狀態,例如第一核心102/104之一個或多個快取記憶體之部分或全部之內容。接下來前進至步驟216。
在步驟216中,切換管理單元106指示第二核心102/104脫離低功耗模式。這是因為在第二圖之操作流程之前一個事件的步驟228中,第二核心102/104係扮演第一核心102/104之角色,而步驟228係通知其進入低功耗模式。也就是說,第二核心102/104偵測到執行緒嘗試使用第二核心102/104不支援之一指令集架構特徵,因而在步驟228由切換管理單元106通知第二核心102/104進入低功耗模式。進入低功耗模式時,核心所消耗之能量會少於其主動執行執行緒所消耗之能量。關於低功耗模式,舉例來說:係對應於一個指示核心停止執行執行緒指令之模式;係停用連接到處理器之外部匯流排時脈之模式;核心停用其部分電路的時脈信號之模式;核心停止供電至其內部之部分電路之模式。此低功耗模式可包含廣為人
知之進階組態與電源介面(Advanced Configuration and Power Interface,ACPI)之處理器狀態,即C-state。就一實施例而言,切換管理單元106會傳送信號至第二核心102/104通知其脫離低功耗模式。在一實施例中,此信號會導致一非架構中斷而喚醒第二核心102/104,如回復其電源供應與時脈。此中斷會調用一微碼常式來執行與當前之低功耗模式相關之動作。接下來前進至步驟218。
在步驟218中,第二核心102/104脫離低功耗模式並進入一運作模式。在運作模式中,核心會執行指令。此運作模式可包含廣為人知之進階組態與電源介面之性能狀態,即P-state。在一實施例中,此運作模式係可被程式化,例如可利用系統軟體,透過處理器100之控制暫存器,來幫助調整處理器100之效能相對於功耗之特性。接下來前進至步驟222。
在步驟222中,切換管理單元106指示第二核心102/104取得執行緒狀態並開始執行執行緒。就一實施例而言,切換管理單元106係傳送信號至第二核心102/104,並由第二核心102/104之微碼提供服務以產生一非架構中斷。接下來前進至步驟224。
在步驟224中,第二核心102/104由共享狀態儲存單元108取得於步驟214由第一核心102/104儲存於共享狀態儲存單元108之執行緒狀態。在一實施例中,步驟222接收之中斷會調用第二核心102/104之一微碼常式來從共享狀態儲存單元108取得執行緒狀態。接下來前進至步驟226。
在步驟226中,切換管理單元106指示第一核心102/104
進入低功耗模式。在一實施例中,此低功耗模式係可程式化,例如可利用系統軟體,透過處理器100之控制暫存器,從第一核心102/104支援之多個低功耗模式取得,以利調整處理器100之效能相對於功耗之特性。接下來前進至步驟228。
在步驟228中,第一核心102/104進入步驟226指示之低功耗模式。此流程終止於此。
值得注意的是,雖然第二圖之各個步驟有其先後順序,不過,部分步驟係可以不同之順序或是與其他步驟同時進行。舉例來說,若是重視降低功耗更甚於提升效能,可將步驟222與226之順序對調。又,在一實施例中,步驟216之操作可以發生於步驟214完成前,而使步驟214與218大致同時進行以更快速地使第二核心102/104執行執行緒。相同地,在一實施例中,步驟226之操作可以發生於步驟224完成前,而使步驟224與228大致同時進行以降低功耗。此外,若是重視降低功耗更甚於提升效能,可將步驟212與216之順序對調。
第三圖係第一圖之處理器100之運作另一實施例之流程圖。此流程始於步驟302。
在步驟302中,第一圖之二個非對稱核心102/104中之一第一核心正在執行一應用程式執行緒,此第一核心可為低核心104或高核心102。接下來前進至步驟304。
在步驟304中,切換管理單元106偵測到核心102/104之利用率已經高於一相對應之切換至高核心或是低於一相對應之切換至低核心之臨界值。也就是說,若是低核心104
正在執行,切換管理單元106偵測到利用率高於一臨界值,即表示低核心104過度使用,切換至高核心102執行較為有利;反之,若是高核心102正在執行,切換管理單元106偵測到利用率低於一臨界值,即表示高核心102之利用率太低,切換至低核心104執行較為有利。就一實施例而言,此切換至高核心之臨界值係大於切換至低核心之臨界值,其提供磁滯效應以避免切換過於頻繁。就一實施例而言,此關於核心利用之臨界值可被程式化,如利用軟體程式來協助調整核心切換之邏輯運算。
核心102/104之利用率係一個指標用來量測執行執行緒時核心之使用量。利用率可透過多種方式進行量測。在一實施例中,利用率係基於指令引退率來計算。核心102/104可包含一計數器以累計給定時脈週期內引退指令之數量,並且週期性重置。在一實施例中,利用率係基於運作模式相較於不運作模式所耗費的時間。在運作模式中,核心102/104會執行指令,但在不運作模式則否。舉例來說,不運作模式可對應或包含前述低功耗模式,如中止執行、停用時脈、停用電源等,就如同進入C0以外之其他C-state。核心102/104可包含一計數器,以計算在運作模式下所耗費的時間以及在各個不運作模式下所耗費的時間。此核心102/104可包含自運行計數器,即使在時脈與/或電源停用的情況下都可運行,以確保能即時計算。就一實施例而言,可採用最近之預設時間週期來計算利用率,此預設時間週期係可程式化,如利用軟體程式以便於切換演算法之協調。切換管理單元106可存取
第一核心102/104之計數器以確認利用率。接下來流程由步驟304前進至步驟306。
在步驟306中,切換管理單元106指示第一核心102/104停止執行執行緒。就一實施例而言,切換管理單元106係傳送指令至第一核心102/104以停止執行緒之執行。切換管理單元106係中斷第一核心102/104,並使第一核心102/104調用微碼常式而使第一核心102/104如步驟308所述停止執行執行緒。接下來前進至步驟308。
在步驟308中,第一核心102/104停止執行執行緒。就一實施例而言,第一核心102/104獲得一靜止條件(quiescent condition),以供後續執行如第二圖之步驟214所述儲存執行緒狀態之步驟。接下來流程由步驟308前進至第二圖之步驟212以執行第二圖之步驟212至步驟228。
第四圖係一非對稱多核心處理器100之一實施例之方塊示意圖,此實施例之切換管理單元係整合於非對稱核心102/104中。第四圖之處理器100大致類似於第一圖之處理器;不過,在第四圖之實施例中,切換管理單元106係整合於核心102/104,而非一獨立於核心102/104外之元件。此將切換管理單元106整合於核心102/104之實施例中,位於第一核心102/104內之部分切換管理單元106係有效指示第一核心102/104執行步驟208所述之切換動作、指示第一核心102/104執行步驟212所述儲存執行緒狀態之步驟、執行步驟216所述通知第二核心102/104脫離低功耗模式之步驟、執行步驟222所述指示第二核心102/104取回執行緒狀態並開始執行執行緒之步驟、以及執行如步驟228
所述指示第一核心102/104進入低功耗模式之步驟。此外,就一實施例而言,無論此切換管理單元106係整合於核心內或是一獨立元件,類似於第三圖之步驟304之運算可利用來確認是否存在過度使用或利用率過低之情形而需執行切換動作。在一實施例中,核心102/104具有硬體狀態機,在執行執行緒之同時,亦可執行確認是否切換之運算。在另一實施例中,則是由微碼來執行此確認是否切換之運算,如對於一週期性計時器中斷所作之反應。又,此微碼亦可在每一次核心102/104由運作模式轉換至不運作模式、或是由不運作模式轉換至運作模式而被調用時來確認利用率。雖然整合於核心之切換管理單元使用微碼來確認是否執行切換動作,會消耗核心指令執行之部分頻寬,不過此方法相較於傳統方式利用操作系統來確認是否執行切換動作,在效能乃至於本文提及之其他面向上仍然有其優勢。
第五圖係一非對稱多核心處理器100一實施例之方塊示意圖。此非對稱核心102/104係直接將執行緒狀態視為切換執行之一部分來傳送。第五圖之處理器100係大致類似於第一圖之處理器100;不過,在第五圖之實施例中,處理器100並不具有第一圖之共享狀態儲存單元108,低核心104與高核心102係直接將執行緒狀態視為切換執行之一部分來傳送。這在第六圖會有更詳細的描述。
第六圖係第五圖之處理器100之運作之一實施例之流程圖。第六圖之流程與第二圖在許多方面都相類似;不過,第六圖之流程省掉第二圖之步驟212與214,步驟208係直
接前進至步驟216;此外,步驟222與224則是由步驟622與624取代,也就是說,步驟218係前進至步驟622,然後前進至步驟624,步驟624再前進至步驟226。
在步驟622中,切換管理單元106指示第一核心102/104將執行緒狀態直接傳送至第二核心102/104。除了傳送執行緒狀態,第一核心102/104也會傳送其他非第二核心102/104執行執行緒所必要,但仍然有助於第二核心102/104執行執行緒之狀態,例如第一核心102/104之一個或多個快取記憶體之部分或全部之內容。接下來前進至步驟624。
在步驟624中,第一核心102/104直接將執行緒狀態儲存於第二核心102/104。接下來流程前進至步驟226。
值得注意的是,第五與六圖所述之直接儲存執行緒狀態之步驟可適用於具有獨立之切換管理單元106之實施例(如第一圖所示)以及具有整合之切換管理單元之實施例(如第四圖所示)。
第七圖係一非對稱多核心處理器100之一實施例之方塊示意圖。第七圖之處理器100係類似於第一圖之處理器100,即低核心相較於高核心,其效能較低但消耗較少之能量;不過,在第七圖之實施例中,低核心104與高核心102均支援全部之指令集架構特徵集合(不同於第一圖中低核心104與高核心102係支援指令集架構之不同的特徵子集合)。在第七圖之實施例中,第二圖與第六圖所示之運作基本上是不相關的,也就是說,執行之切換並非由執行緒嘗試執行一非支援特徵所決定,不過,仍然是由
原生之切換管理單元106來執行切換,而非如傳統方式由操作系統來執行。因此,原生之切換管理單元106之優點係可被理解的。
本文所述之實施例之優點在於不需使用會消耗核心執行頻寬之架構軟體來確認切換是否需執行。其效能之優勢需要在處理器設置額外硬體以確認切換執行來實現,不過,這些硬體會消耗額外能量。
本發明之實施例所提供之另一優點在於,利用處理器本身來偵測切換之需求可以改善傳統上使用系統軟體處理的問題。具體來說,不需修改系統軟體即可享有如本文實施例所述之非對稱多核心處理器之優點,即降低功耗但維持接近於高核心之效能。這對於專屬(proprietary)之操作系統特別有利。
本發明之實施例所提供之另一優點在於,因為低特徵核心與高特徵核心結合後可支援所有指令集架構特徵,但個別僅支援此特徵集合之一子集合,因此,相較於支援整個指令集架構特徵集合,各核心各自消耗之能量可以降低。
雖然本文實施例所述之多核心處理器僅具有單一組非對稱核心,不過,本發明不限於此。本發明之精神亦可適用於具有兩個以上核心且其中至少一核心與其他核心不對稱之實施例,以及具有多組非對稱核心之實施例。
此外,雖然本文所述之實施例中,切換動作不是在(1)執行緒嘗試使用核心不支援之特徵,就是在(2)低核心被過度使用或高核心利用率過低時執行,不過,本發明並
不限於此。本發明亦適用於,執行緒嘗試執行一核心支持之特徵,但此特徵係高度相關於一效能需求與其他核心更密切相關之執行緒。舉例來說,假設高核心正執行於其所支援位元寬度最寬之操作模式,而執行緒改變至位元寬度最窄之操作模式,此模式係與低效能需求高度相關;隨後,切換至低核心之動作就會執行。在一實施例中,切換管理單元只會在高核心當前之利用率不會太大的情況下,即小於一可程式化預設臨界值,使切換動作發生。
惟以上所述者,僅為本發明之較佳實施例而已,當不能以此限定本發明實施之範圍,即大凡依本發明申請專利範圍及發明說明內容所作之簡單的等效變化與修飾,皆仍屬本發明專利涵蓋之範圍內。舉例來說,軟體可以執行本發明所述之裝置與方法的功能、製造、形塑、模擬、描述以及/或測試等。這可由一般的程式語言(如C、C++)、硬體描述語言(HDL)包含Verilog HDL,VHDL等,或是其他既有程式來達成。此軟體可以設置於任何已知的電腦可利用媒介,如磁帶、半導體、磁碟、光碟(如CD-ROM、DVD-ROM等)、網路接線、無線或是其他通訊媒介。此處描述之裝置與方法的實施例可被包含於一半導體智財核心,例如一微處理核心(如以硬體描述語言的實施方式)並且透過積體電路的製作轉換為硬體。此外,本文所描述之裝置與方法亦可包含硬體與軟體之結合。因此,本文所述的任何實施例,並非用以限定本發明之範圍。此外,本發明可應用於一般通用電腦之微
處理器裝置。最後,所屬技術領域具有通常知識者利用本發明所揭露的觀念與實施例作為基礎,來設計並調整出不同的結構已達成相同的目的,亦不超出本發明之範圍。
惟以上所述者,僅為本發明之較佳實施例而已,當不能以此限定本發明實施之範圍,即大凡依本發明申請專利範圍及發明說明內容所作之簡單的等效變化與修飾,皆仍屬本發明專利涵蓋之範圍內。另外本發明的任一實施例或申請專利範圍不須達成本發明所揭露之全部目的或優點或特點。此外,摘要部分和標題僅是用來輔助專利文件搜尋之用,並非用來限制本發明之權利範圍。
Claims (24)
- 一種處理器,具有一指令集架構(ISA),該指令集架構具有一特徵集合,該處理器包含:一第一與一第二處理核心,用以支援該指令集架構之特徵集合中,相對應之一第一與一第二特徵子集合;其中,受支援之該第一特徵子集合係少於該指令集架構之特徵集合之所有特徵;其中,受支援之該第一與該第二特徵子集合係互不相同;其中,該指令集架構之該特徵集合之所有特徵僅為該第一與該第二特徵子集合之結合;其中,當一執行緒由該第一核心執行時,該第一核心係偵測該執行緒是否嘗試利用該指令集架構之特徵集合中不包含於受支援之該第一特徵子集合之一特徵,以做出指示該處理器由該第一核心切換至該第二核心用以執行該執行緒之回應。
- 如請求項第1項之處理器,其中,相較於該第二核心,該第一核心執行該執行緒之功耗較少但效能較低。
- 如請求項第1項之處理器,其中,該受支援之第二特徵子集合係少於該指令集架構之特徵集合之所有特徵;其中,當該執行緒係由該第二核心執行時,該第二核心係偵測該執行緒是否嘗試利用該指令集架構之特徵集合中不包含於受支援之該第二特徵子集合之一特徵,以做出指示該處理器切換至該第一核心用以執行該執行緒之回應。
- 如請求項第1項之處理器,其中,該第一核心係依據其於該執行緒中是否遭遇到該第一核心不支援之該指令集架構之一指令,以偵測該執行緒嘗試利用不包含於受支援之該第一特徵子集合之該特徵。
- 如請求項第1項之處理器,其中,該第一核心係依據該執行緒是否嘗試進入該第一核心不支援之該指令集架構之一操作模式,以偵測該執行緒嘗試利用不包含於受支援之該第一特徵子集合之該特徵。
- 如請求項第1項之處理器,其中,由該第一核心切換至該第二核心執行該執行緒之切換動作包含將該執行緒之狀態由該第一核心移轉到該第二核心,其中,在偵測到該執行緒嘗試利用該指令集架構之特徵集合中不包含於受支援之該第一特徵子集合之該特徵時,該處理器係自動執行該狀態移轉以為回應,而非由執行於該第一核心之架構軟體來指示該處理器執行該狀態移轉。
- 如請求項第1項之處理器,更包含:一切換管理單元,用以偵測該第二核心之利用率在執行該執行緒時是否低於一臨界值,以指示該處理器由該第二核心切換至該第一核心執行該執行緒。
- 如請求項第7項之處理器,其中,該切換管理單元更用以偵測該 第一核心之利用率在執行該執行緒時是否高於一第二臨界值,以切換至該第二核心執行該執行緒。
- 如請求項第7項之處理器,其中,該切換管理單元包含一第三核心,該第三核心係異於該第一與該第二核心。
- 如請求項第7項之處理器,其中,該切換管理單元包含該第二核心之微碼。
- 如請求項第1項之處理器,其中,在該第一核心指示該處理器切換至該第二核心執行該執行緒後,該第一核心進入一低功耗模式。
- 如請求項第11項之處理器,其中,在該第一核心進入該低功耗模式前,該第一核心儲存該執行緒之一執行狀態。
- 如請求項第12項之處理器,其中,在該第二核心執行該執行緒前,該第二核心係取得由該第一核心之該執行緒所儲存之該執行狀態。
- 如請求項第13項之處理器,其中,在該第二核心取得該執行緒所儲存之該執行狀態前,該第二核心離開一低功耗模式。
- 一種由一處理器執行之方法,該處理器具有一指令集架構(ISA)以及一第一與一第二處理核心,該指令集架構具有一特 徵集合,該方法包含:當一執行緒由該第一核心執行時,偵測該執行緒是否嘗試利用該指令集架構之特徵集合中不包含於一第一特徵子集合之一特徵,其中,該第一核心係用以支援該第一特徵子集合,其中,受支援之該第一特徵子集合係少於該指令集架構之特徵集合之所有特徵,其中,該第二核心係用以支援該指令集架構之特徵集合中之一第二特徵子集合,其中,受支援之該第一與該第二特徵子集合之特徵互不相同,其中,該指令集架構之該特徵集合之所有特徵僅為該第一與該第二特徵子集合之結合;以及將該執行緒之執行切換至該第二核心而非該第一核心,以回應該偵測結果。
- 如請求項第15項之方法,更包含:當該執行緒由該第二核心執行時,偵測該執行緒是否嘗試利用該指令集架構之特徵集合中不包含於受支援之該第二特徵子集合之一特徵,其中,該第二特徵子集合少於該指令集架構之特徵集合之所有特徵;以及當該執行緒由該第二核心而非該第一核心執行時,若是偵測到該執行緒嘗試利用該指令集架構之特徵集合中不包含於受支援之該第二特徵子集合之該特徵,將該執行緒之執行切換至該第一核心而非該第二核心。
- 如請求項第15項之方法,其中,該偵測步驟包含偵測是否於該執行緒中遭遇該第一核心不支援之該指令集架構之一指令。
- 如請求項第15項之方法,其中,該偵測步驟包含偵測該執行緒是否嘗試進入該第一核心不支援之該指令集架構之一操作模式。
- 如請求項第15項之方法,其中,該切換步驟包含將該執行緒之狀態由該第一核心移轉到該第二核心,其中,在偵測到該執行緒嘗試利用該指令集架構之特徵集合中不包含於受支援之該第一特徵子集合之該特徵時,該狀態移轉係由該處理器自動執行以為回應,而非由執行於該第一核心之架構軟體來指示該處理器執行該狀態移轉。
- 如請求項第15項之方法,更包含:偵測該第二核心之利用率在執行該執行緒時是否低於一臨界值;以及若是偵測到該第二核心之利用率在執行該執行緒時低於該臨界值,將該執行緒之執行由該第二核心切換至該第一核心,以回應該偵測步驟。
- 一種處理器,包含:至少二個處理核心,其中一個該處理核心執行一執行緒之功耗較低但效能亦較低;其中,該處理器係偵測一事件是否發生,以指示該執行緒之執行由該些核心中之一第一核心直接切換至該些核心中之一第二核心;其中,該處理器在偵測到該事件時,係自動將該執行緒之狀態 由該第一核心直接移轉到該第二核心以為回應,而非由執行於該第一核心之架構軟體來指示該處理器將該執行緒之狀態由該第一核心移轉到該第二核心;其中,該至少二個處理核心係集體支援該處理器之一指令集架構(ISA)之一特徵集合,其中,該處理器係透過偵測該執行緒嘗試利用該指令集架構之特徵集合中不受該第一核心支援之一特徵,來偵測該事件。
- 如請求項第21項之處理器,其中該處理器係透過偵測該第一核心在執行該執行緒時,其利用率是否過低,來偵測該事件。
- 一種由一處理器執行之方法,該處理器具有至少二個處理核心,其中一個該處理核心執行一執行緒之功耗較低但效能亦較低,該方法包含:利用該處理器偵測一事件是否發生,以指示該執行緒之執行由該些核心中之一第一核心直接切換至該些核心中之一第二核心;以及在偵測到該事件時,利用該處理器自動將該執行緒之狀態由該第一核心直接移轉到該第二核心以為回應,而非由執行於該第一核心之架構軟體來指示該處理器將該執行緒之狀態由該第一核心移轉到該第二核心;其中,該至少二個處理核心係集體支援該處理器之一指令集架構(ISA)之一特徵集合,其中,該偵測步驟係透過偵測該執行緒嘗試利用該指令集架構之特徵集合中不受該第一核心支援之一特徵,來偵測該事件。
- 如請求項第23項之方法,其中,該偵測步驟係透過偵測該第一核心在執行該執行緒時,其利用率是否過低,來偵測該事件。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361805225P | 2013-03-26 | 2013-03-26 | |
US61/805225 | 2013-03-26 | ||
US14/077,740 US10423216B2 (en) | 2013-03-26 | 2013-11-12 | Asymmetric multi-core processor with native switching mechanism |
US14/077740 | 2013-11-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201437912A TW201437912A (zh) | 2014-10-01 |
TWI620121B true TWI620121B (zh) | 2018-04-01 |
Family
ID=50342224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103104396A TWI620121B (zh) | 2013-03-26 | 2014-02-11 | 具有原生切換機制之非對稱多核心處理器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10423216B2 (zh) |
EP (1) | EP2784674A3 (zh) |
CN (1) | CN104077106B (zh) |
TW (1) | TWI620121B (zh) |
Families Citing this family (21)
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 |
KR20150050135A (ko) * | 2013-10-31 | 2015-05-08 | 삼성전자주식회사 | 복수의 이종 코어들을 포함하는 전자 시스템 및 이의 동작 방법 |
US9628333B2 (en) * | 2013-12-04 | 2017-04-18 | International Business Machines Corporation | Operating a dual chipset network interface controller (‘NIC’) that includes a high performance media access control chipset and a low performance media access control chipset |
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 |
US10528443B2 (en) | 2015-01-30 | 2020-01-07 | Samsung Electronics Co., Ltd. | Validation of multiprocessor hardware component |
GB2546465B (en) | 2015-06-05 | 2018-02-28 | Advanced Risc Mach Ltd | Modal processing of program instructions |
US9779058B2 (en) * | 2015-07-13 | 2017-10-03 | Google Inc. | Modulating processsor core operations |
US9928115B2 (en) | 2015-09-03 | 2018-03-27 | Apple Inc. | Hardware migration between dissimilar cores |
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 |
FR3056786B1 (fr) * | 2016-09-29 | 2019-11-22 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Procede de gestion des taches de calcul sur un processeur multi-cœurs fonctionnellement asymetrique |
US11107180B2 (en) | 2017-06-20 | 2021-08-31 | Think Silicon Sa | Asymmetric multi-core heterogeneous parallel processing system with content aware and display aware rendering logic |
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 |
CN110958280B (zh) * | 2018-09-26 | 2022-06-14 | 上海诺基亚贝尔股份有限公司 | 切换辅核心设备的方法、远程设备和计算机可读介质 |
KR102576443B1 (ko) * | 2018-10-26 | 2023-09-07 | 삼성에스디에스 주식회사 | 연산 장치 및 그 잡 스케줄링 방법 |
US11593628B2 (en) * | 2020-03-05 | 2023-02-28 | Apple Inc. | Dynamic variable bit width neural processor |
CN113722082A (zh) * | 2020-05-25 | 2021-11-30 | 阿里巴巴集团控股有限公司 | 任务调度方法、装置、系统及计算机可读介质 |
US11972304B1 (en) * | 2021-05-25 | 2024-04-30 | United Services Automobile Association (Usaa) | Systems and methods for automatic detection of an event and providing resources customized based on the event |
US11550389B1 (en) * | 2021-08-16 | 2023-01-10 | Think Silicon Research and Technology Single Member S.A. | Gaze and content aware rendering logic |
DE102022205834A1 (de) * | 2022-06-08 | 2023-12-14 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren zum Durchführen von Datenverarbeitungsaufgaben |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201234271A (en) * | 2010-12-22 | 2012-08-16 | Via Tech Inc | Dynamic and selective core disablement and reconfiguration in a multi-core processor |
TW201237760A (en) * | 2011-03-11 | 2012-09-16 | Intel Corp | Dynamic core selection for heterogeneous multi-core systems |
TW201250599A (en) * | 2011-06-08 | 2012-12-16 | Microsoft Corp | Operating system decoupled heterogeneous computing |
US20130061237A1 (en) * | 2011-09-06 | 2013-03-07 | Ofer Zaarur | Switching Tasks Between Heterogeneous Cores |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5881279A (en) * | 1996-11-25 | 1999-03-09 | Intel Corporation | Method and apparatus for handling invalid opcode faults via execution of an event-signaling micro-operation |
US6560694B1 (en) * | 2000-01-14 | 2003-05-06 | Advanced Micro Devices, Inc. | Double prefix overrides to provide 16-bit operand size in a 32/64 operating mode |
US7478388B1 (en) * | 2004-04-21 | 2009-01-13 | Vmware, Inc. | Switching between multiple software entities using different operating modes of a processor in a computer system |
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 |
US8719819B2 (en) * | 2005-06-30 | 2014-05-06 | Intel Corporation | Mechanism for instruction set based thread execution on a plurality of instruction sequencers |
US8250348B2 (en) * | 2005-05-19 | 2012-08-21 | International Business Machines Corporation | Methods and apparatus for dynamically switching processor mode |
US20070150895A1 (en) * | 2005-12-06 | 2007-06-28 | Kurland Aaron S | Methods and apparatus for multi-core processing with dedicated thread management |
JP2007328461A (ja) * | 2006-06-06 | 2007-12-20 | Matsushita Electric Ind Co Ltd | 非対称マルチプロセッサ |
US20080263324A1 (en) | 2006-08-10 | 2008-10-23 | Sehat Sutardja | Dynamic core switching |
US7996663B2 (en) | 2007-12-27 | 2011-08-09 | Intel Corporation | Saving and restoring architectural state for processor cores |
US20100242014A1 (en) | 2009-03-17 | 2010-09-23 | Xiaohan Zhu | Symmetric multi-processor operating system for asymmetric multi-processor architecture |
GB2478731B (en) * | 2010-03-15 | 2013-08-21 | Advanced Risc Mach Ltd | Operand size control |
US20110320766A1 (en) * | 2010-06-29 | 2011-12-29 | Youfeng Wu | Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type |
US8949836B2 (en) * | 2011-04-01 | 2015-02-03 | International Business Machines Corporation | Transferring architected state between cores |
US8782645B2 (en) | 2011-05-11 | 2014-07-15 | Advanced Micro Devices, Inc. | Automatic load balancing for heterogeneous cores |
GB2491665B (en) | 2011-06-08 | 2014-02-26 | Inst Information Industry | Processor bridging in heterogeneous computer system |
WO2013101069A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Core switching accelaration in asymmetric multiprocessor system |
US9727388B2 (en) * | 2011-12-29 | 2017-08-08 | Intel Corporation | Migrating threads between asymmetric cores in a multiple core processor |
US9720730B2 (en) * | 2011-12-30 | 2017-08-01 | Intel Corporation | Providing an asymmetric multicore processor system transparently to an operating system |
US20140181830A1 (en) * | 2012-12-26 | 2014-06-26 | Mishali Naik | Thread migration support for architectually different cores |
US10162687B2 (en) * | 2012-12-28 | 2018-12-25 | Intel Corporation | Selective migration of workloads between heterogeneous compute elements based on evaluation of migration performance benefit and available energy and thermal budgets |
-
2013
- 2013-11-12 US US14/077,740 patent/US10423216B2/en active Active
-
2014
- 2014-02-11 TW TW103104396A patent/TWI620121B/zh active
- 2014-02-12 CN CN201410048503.6A patent/CN104077106B/zh active Active
- 2014-03-20 EP EP20140160950 patent/EP2784674A3/en not_active Ceased
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201234271A (en) * | 2010-12-22 | 2012-08-16 | Via Tech Inc | Dynamic and selective core disablement and reconfiguration in a multi-core processor |
TW201237760A (en) * | 2011-03-11 | 2012-09-16 | Intel Corp | Dynamic core selection for heterogeneous multi-core systems |
TW201250599A (en) * | 2011-06-08 | 2012-12-16 | Microsoft Corp | Operating system decoupled heterogeneous computing |
US20130061237A1 (en) * | 2011-09-06 | 2013-03-07 | Ofer Zaarur | Switching Tasks Between Heterogeneous Cores |
Also Published As
Publication number | Publication date |
---|---|
TW201437912A (zh) | 2014-10-01 |
US20140298060A1 (en) | 2014-10-02 |
EP2784674A2 (en) | 2014-10-01 |
US10423216B2 (en) | 2019-09-24 |
CN104077106B (zh) | 2018-06-15 |
EP2784674A3 (en) | 2015-04-29 |
CN104077106A (zh) | 2014-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI620121B (zh) | 具有原生切換機制之非對稱多核心處理器 | |
TWI742032B (zh) | 用於使用者等級執行緒暫止的方法、設備及指令 | |
KR101410634B1 (ko) | 프로세서 대기 상태를 인에이블하기 위한 명령 | |
US8423750B2 (en) | Hardware assist thread for increasing code parallelism | |
US10156884B2 (en) | Local power gate (LPG) interfaces for power-aware operations | |
CN102707927B (zh) | 具有条件指令的微处理器及其处理方法 | |
US9250906B2 (en) | Method and apparatus for performance efficient ISA virtualization using dynamic partial binary translation | |
US20160162293A1 (en) | Asymmetric processor with cores that support different isa instruction subsets | |
CN103218203B (zh) | 具有条件指令的微处理器及其处理方法 | |
US20150378731A1 (en) | Apparatus and method for efficiently implementing a processor pipeline | |
US8578136B2 (en) | Apparatus and method for mapping architectural registers to physical registers | |
CN104881270A (zh) | 具有条件指令的微处理器及其处理方法 | |
CN112241288A (zh) | 在硬件中检测条件分支的动态控制流重汇聚点 | |
US20160283247A1 (en) | Apparatuses and methods to selectively execute a commit instruction | |
US11048516B2 (en) | Systems, methods, and apparatuses for last branch record support compatible with binary translation and speculative execution using an architectural bit array and a write bit array | |
US7213136B2 (en) | Apparatus and method for redundant zero micro-operation removal | |
Hajiabadi et al. | NOREBA: a compiler-informed non-speculative out-of-order commit processor | |
Xiao et al. | A task-level superscalar microarchitecture for large scale chip multiprocessors |