在異構(gòu)核之間切換任務的制作方法
【專利摘要】本
【發(fā)明內(nèi)容】
描述用于在異構(gòu)核之間切換任務的技術。在一些方面中,確定正在由處理器的第一核執(zhí)行的任務能夠由處理器的第二核執(zhí)行,第二核具有與第一核的指令集不同的指令集,并且從第一核向第二核切換任務的執(zhí)行以有效用于減少處理器所消耗的能量的量。
【專利說明】在異構(gòu)核之間切換任務
[0001]相關申請
[0002]本公開內(nèi)容要求對于2011年9月6日提交的第61 / 531,544號美國臨時專利申請和于2012年7月27日提交的第61 / 676,482號美國臨時專利申請的優(yōu)先權,其公開內(nèi)容通過完全引用的方式并入于此。
【背景技術】
[0003]這里提供的【背景技術】描述是為了一般地呈現(xiàn)公開內(nèi)容的上下文的目的。當前發(fā)明人的工作(到在此【背景技術】章節(jié)中描述的工作的程度)以及在提交時可能無法以其他方式作為現(xiàn)有技術衡量的本描述的諸多方面,既不被明確地也不被暗含地承認為本公開內(nèi)容的現(xiàn)有技術。
[0004]對于高性能和增加的特征集的不斷增加的用戶期望已經(jīng)促成在多數(shù)計算設備中包括多核處理器。這些多核處理器經(jīng)常使得移動或者低功率計算設備能夠執(zhí)行曾經(jīng)是為全功率桌上型計算機或者服務器保留的任務。然而移動或者低功率計算設備經(jīng)常在它們可以消耗的電量方面(例如電池壽命或者熱考慮)是有限的。為了執(zhí)行這些任務而消耗的電量可以隨著任務從低復雜性(例如音頻回放)到高復雜性(例如視頻編輯或者流發(fā)送)變動而變化。低復雜性任務經(jīng)常可以由消耗較少電量的簡單處理器核(例如具有有限指令集的核)執(zhí)行,而高復雜性任務經(jīng)常使用消耗較大電量的一個或者多個復雜處理器(例如具有全指令集的核)來執(zhí)行。
【發(fā)明內(nèi)容】
[0005]提供這一
【發(fā)明內(nèi)容】
以介紹以下在【具體實施方式】和附圖中描述的主題內(nèi)容。因而,這一
【發(fā)明內(nèi)容】
不應視為描述必需特征、也未用來限制要求保護的主題內(nèi)容的范圍。
[0006]描述一種方法,該方法用于確定正在由處理器的第一核執(zhí)行的任務能夠由處理器的第二核執(zhí)行,第一核具有與第二核的第二指令集不同的第一指令集;以及從第一核向第二核切換任務的執(zhí)行以減少處理器所消耗的能量的量。
[0007]描述另一方法,該方法用于經(jīng)由第一操作系統(tǒng)發(fā)起應用,應用和第一操作系統(tǒng)由處理器的第一核執(zhí)行;經(jīng)由第一操作系統(tǒng)表現(xiàn)(render)應用的用戶界面;確定何時能夠使用第二操作系統(tǒng)來執(zhí)行應用的至少部分;響應于該確定而從第一核向第二核切換應用的至少部分的執(zhí)行;以及經(jīng)由第二操作系統(tǒng)表現(xiàn)與應用的至少部分關聯(lián)的內(nèi)容。
[0008]描述一種系統(tǒng),該系統(tǒng)包括:處理器;以及任務切換器,被配置用于確定正在使用處理器的第一核的第一軟件執(zhí)行的任務能夠使用處理器的第二核的第二軟件來執(zhí)行,向任務所屬于的應用發(fā)送核切換的指示,從應用接收一個或者多個潛在切換點、在該一個或者多個潛在切換點處能夠向第二核切換任務以用于使用第二軟件執(zhí)行,以及在潛在切換點之一從第一核的第一軟件向第二核的第二軟件切換任務的執(zhí)行以有效用于減少處理器消耗的能量數(shù)量。
[0009]在附圖和以下描述中闡述一個或者多個實現(xiàn)方式的細節(jié)。其它特征和優(yōu)點將從描述和附圖中變得清楚。
【專利附圖】
【附圖說明】
[0010]在各圖中,參考標號的最左位標識該參考標號第一次出現(xiàn)的圖。在描述和各圖中的不同實例中使用相同的參考標號指示相似的元素。
[0011]圖1圖示具有根據(jù)一個或者多個方面的計算設備的操作環(huán)境。
[0012]圖2圖示根據(jù)一個或者多個方面的圖1的多核處理器的示例。
[0013]圖3圖示根據(jù)一個或者多個方面的一個或者多個堆棧架構(gòu)。
[0014]圖4圖示根據(jù)一個或者多個方面的圖1的任務切換器。
[0015]圖5圖不從處理器的第一核向處理器的第二核切換任務的執(zhí)行的方法。
[0016]圖6圖示根據(jù)一個或者多個方面的示例用戶界面。
[0017]圖7圖示從處理器的第一核向處理器的第二核切換應用的部分的方法。
[0018]圖8圖示從處理器的核向處理器的另一核切換任務的方法。
[0019]圖9圖示用于實施這里描述的技術的方面的片上系統(tǒng)(SoC)環(huán)境。
【具體實施方式】
[0020]常規(guī)的多核架構(gòu)可以準許在相似核、但是并非不同類型或者執(zhí)行不同軟件的核之間移動任務。因此,在高性能核上執(zhí)行的低復雜性任務不能在執(zhí)行之時移向低性能核。這可能導致低效的計算(例如減少的電池運行時間或者更高的操作溫度),因為簡單處理器核可執(zhí)行的任務繼續(xù)在可能具有更高電流泄漏、操作頻率和/或功耗的復雜處理器核上執(zhí)行。
[0021]本公開內(nèi)容描述用于在處理器的執(zhí)行不同指令集、具有不同性能水平和/或消耗不同電量的異構(gòu)核之間切換任務的裝置和技術??梢栽趫?zhí)行任務之時從高性能核向消耗更少能量的更低性能核切換任務。通過這樣做,可以減少高功率、高性能核的使用、由此減少由處理器消耗的能量的量。
[0022]以下討論描述操作環(huán)境、可以在操作環(huán)境中運用的技術和片上系統(tǒng)(SoC),可以在該SoC中體現(xiàn)操作環(huán)境的部件。在以下討論中,僅通過示例參照操作環(huán)境。
[0023]操作環(huán)境
[0024]圖1圖示具有計算設備102的操作環(huán)境100的示例,每個計算設備能夠傳達、訪問或者處理各種數(shù)據(jù)。計算設備102包括智能電話104、平板計算機106、膝上型計算機108和機頂盒110以及已啟用觸摸輸入的恒溫器112(恒溫器112)。雖然未示出,但是也設想計算設備102的其它配置、比如桌上型計算機、服務器、移動因特網(wǎng)設備(MID)、游戲控制臺、已啟用因特網(wǎng)協(xié)議的電視機、移動熱點、聯(lián)網(wǎng)的媒體播放器等。
[0025]每個計算設備102包括多核處理器114(例如應用處理器)和計算機可讀存儲介質(zhì)116(CRM116)。多核處理器114可以包括可以用如以下更具體描述的多種方式配置的任何適當數(shù)目的處理核(為了簡潔,下文稱為‘核’)。CRM116包括易失性存儲器118和非易失性存儲器120。易失性存儲器118可以包括任何適當類型的存儲器、比如隨機存取存儲器(RAM)、同步或者異步動態(tài)RAM(DRAM)、靜態(tài)RAM(SRAM)、雙數(shù)據(jù)速率RAM(DDR)等。
[0026]非易失性存儲器120可以包括任何適當?shù)拇鎯ζ骰蛘叽鎯υO備、比如非易失性RAM(NVRM)、只讀存儲器(ROM)、閃速存儲器、磁或者光存儲驅(qū)動器等。非易失性存儲器120存儲計算設備102的軟件122,該軟件122可以包括操作系統(tǒng)124 (0S124)和應用126。0S124由多核處理器114執(zhí)行以管理計算設備102的硬件資源并且向應用126提供服務或者硬件訪問。
[0027]應用126使得用戶能夠與計算設備102所存儲或者可訪問的數(shù)據(jù)交互。例如應用126可以使得計算設備102的用戶能夠訪問電子郵件、搜索因特網(wǎng)、收聽音頻文件、觀看或者創(chuàng)建視頻內(nèi)容、玩游戲、用流發(fā)送在線內(nèi)容、(例如經(jīng)由文字、語音或者視頻)與計算設備102的用戶通信等。每個應用126的功能可以對應于負責執(zhí)行相應功能的一個或者多個任務。例如媒體播放器應用可以包括用于表現(xiàn)(render)和管理經(jīng)由顯示器134顯示的用戶界面的任務。媒體播放器應用可以包括用于解碼并且經(jīng)由用戶界面播放視頻流的另一任務。
[0028]CRMl 16也包括任務切換器128和核管理器130。雖然這里示出為在CRM116上體現(xiàn),但是也可以經(jīng)由固件或者硬件(未示出)實施任務切換器128和/或核管理器130的一些功能。任務切換器128能夠從多核處理器114的一個核向多核處理器114的另一核切換任務的執(zhí)行。核管理器130可以測評(profile)多核處理器114的核的當前或者預期使用并且可以發(fā)起用于使任務管理器128在不同核之間切換任務的執(zhí)行的事件。如何實施和使用任務切換器128和核管理器130是有變化的并且以下加以描述。
[0029]計算設備102也可以包括I / O端口 132、顯示器134、音頻端口 136和網(wǎng)絡接口138。I / O端口 132允許計算設備102與其它設備或者用戶交互。I / O端口 132可以包括內(nèi)部或者外部端口的任意組合、比如USB端口、串行ATA(SATA)端口、基于PCI快速的端口或者卡槽和/或其它舊式端口的任意組合。各種外圍設備可以被操作地耦合至I / O端口 132,比如人體輸入設備(HID)、外部計算機可讀存儲介質(zhì)或者其它外圍設備。
[0030]顯示器134可以包括計算設備102的集成顯示器或者與計算設備102關聯(lián)的外部顯示器。顯示器134可以包括觸摸輸入傳感器(未示出)、比如觸摸屏或者觸敏覆層。一般而言,顯示器134呈現(xiàn)與0S124或者應用126關聯(lián)的用戶界面或者表現(xiàn)的圖形。音頻端口136可以包括使得計算設備102能夠播放或者記錄聲音的音頻輸入或者輸出端口(例如耳機插口或者對接連接器)。在一些方面中,音頻端口 136可以與計算設備102集成的麥克風或者揚聲器可操作地耦合。
[0031]網(wǎng)絡接口 138提供與一個或者多個網(wǎng)絡和與之連接的其它設備的連通。可以根據(jù)計算設備102用來進行通信的通信協(xié)議或者標準對通過網(wǎng)絡接口 138傳達的數(shù)據(jù)分組或者成幀。網(wǎng)絡接口 138可以包括用于通過局域網(wǎng)、內(nèi)部網(wǎng)或者因特網(wǎng)通信的有線接口、比如以太網(wǎng)或者光纖接口。網(wǎng)絡接口 138也可以包括有助于通過諸如無線LAN、蜂窩網(wǎng)絡或者無線個域網(wǎng)(WPAN)之類的無線網(wǎng)絡的通信的無線接口。
[0032]圖2在200處大體地圖示多核處理器114的示例。多核處理器114包括異構(gòu)處理器核(例如支持不同指令集或軟件的核),在此被示為處理器核-1202(核-1202)、處理器核-2204(核-2204)以及處理器核-3206 (核-3206)。多核處理器114的每個核可以被不同地配置、比如支持不同性能水平、不同指令集和/或不同軟件(例如操作系統(tǒng))。
[0033]僅舉例而言,考慮用于多核處理器114的異構(gòu)核的以下配置。核-1202可以被配置為高性能核(例如高級RSIC機器(ARM)高級Cortex A9核)。核-2204可以被配置為中性能核(例如ARM實時(ARM-R)核)。核-3206可以被配置為低性能核(例如ARM微控制器(ARM-M)核)。多核處理器114的附加核可以根據(jù)意在的應用或者使用而相似或者不同。例如,多核處理器114可以被配置為具有相似處理器核對的四、六、或者八核處理器。
[0034]在本示例的上下文中,核-1202可以在近似IOOMHz至IGHz的頻率范圍上操作從而在活躍狀態(tài)期間消耗近似2.3mA / MHz0核-1202也可以支持64位或者32位指令集或者被配置用于執(zhí)行復雜算法運算、比如浮點運算。
[0035]核-2204可以支持全32位或者16位指令集(例如thumb指令集)的子集并且在近似10-200MHZ的頻率范圍上操作。在活躍或者空閑時,核-2204也可以具有比核-1202更低的漏電流或者消耗更少能量。
[0036]核-3206可以支持16位或者8位指令集并且在近似5_100MHz的頻率范圍上操作從而在活躍狀態(tài)期間消耗約66 μ A / MHz0在活躍或者空閑時,核-3206也可以具有比核-2204更低的漏電流或者消耗更少性能。
[0037]多核處理器114也可以包括可以在任何適當類型的存儲器(例如ROM或者EEPR0M)上存儲的處理器固件208 (處理器FW208)。處理器FW208可以部分或者全部包括以下更具體描述的任務切換器128或者核管理器130。在這一具體示例中,在處理器固件208由多核處理器114的核之一執(zhí)行時實施任務切換器128和核管理器130的一些功能。
[0038]多核處理器114也可以包括硬件加速器210、易失性存儲器接口 212和非易失性存儲器接口 214 (NV存儲器接口 214)。硬件加速器210可以包括被配置用于經(jīng)由硬件解碼、解壓或者表現(xiàn)視頻或者音頻內(nèi)容的視頻或者音頻硬件加速器。備選地或者附加地,硬件加速器210可以被配置用于經(jīng)由硬件捕獲、壓縮或者編碼音頻或者視頻內(nèi)容。硬件加速器210可以通過減少為了執(zhí)行任務所需要的計算周期數(shù)目來提高多核處理器114的性能。例如,視頻數(shù)據(jù)的分組可以被引向硬件加速器210用于解碼而不是通過用核-1202反復地執(zhí)行系列指令來解碼分組。易失性存儲器接口 212 (例如DDR控制器)和NV存儲器接口 214 (例如閃存控制器)使得多核處理器的任何核分別訪問易失性存儲器118和非易失性存儲器120。
[0039]多核處理器114也可以包括顯示器接口 216、音頻接口 218和低級硬件接口220 (低級HW接口 220)。顯示器接口 216可以是與集成顯示器或者外部顯示器的任何適當接口、比如液晶顯示器(IXD)接口、低電壓差分信令接口(LVDS)、顯示器端口、高清晰度多媒體接口(HDMI)、數(shù)字視頻接口(DVI)等等。音頻接口 218可以是與外部音頻電路或者音頻端口的任何接口、比如集成電路間聲音(I2S)接口或者音頻編碼解碼器專屬接口(AC-97)。
[0040]低級HW接口 220使得多核處理器114能夠與內(nèi)務控制器、比如電源、溫度控制器、風扇控制器、時鐘生成器等進行通信。低級HW接口 220可以經(jīng)由集成電路間(I2C)總線、系統(tǒng)管理總線、串行外圍接口總線、一接線總線等進行通信。顯示器接口 216、音頻接口 218和低級HW接口 220準許多核處理器114的任何核分別與顯示器134、音頻端口 136和電源管理集成電路224(電源管理IC224)進行通信。
[0041]多核處理器114的通用輸入/輸出222(GP10222)提供與低級硬件、比如發(fā)光二極管(LED)或者硬件開關(未示出)的連通。例如,GP10222可以接收與計算設備102的電源按鈕的用戶交互或者經(jīng)由計算設備102的LED指示提醒或者狀態(tài)。多核處理器114的核中的任何核可以訪問或者控制GP10222。
[0042]圖3圖示示例堆棧架構(gòu),每個堆棧架構(gòu)包括異構(gòu)核和一個或者多個操作系統(tǒng)。這些堆棧架構(gòu)示出可以使用異構(gòu)核來實施的各種操作系統(tǒng)(OS)配置。堆棧架構(gòu)300包括操作系統(tǒng)1302 (0S-1302)、操作系統(tǒng)2(304)和操作系統(tǒng)3306 (0S-3306)。雖然圖示為操作系統(tǒng),但是0S-1302、0S-2304和0S-3306可以代表使得計算設備102的應用能夠在相應核上執(zhí)行的任何適當類型的軟件和/或固件或者軟件和/或固件的組合。
[0043]這些操作系統(tǒng)中的每個操作系統(tǒng)可以不同于其它操作系統(tǒng)或者被配置用于由特定核執(zhí)行。例如,0S-1302可以是全功能OS,0S-2304可以是實時OS,并且0S-3306可以是微OS或者固件。因而,每個OS可以被配置用于經(jīng)由每個相應OS在其上執(zhí)行的核所支持的指令集來執(zhí)行。0S-1302、0S-2304或者0S-3306可以與一個或者多個軟件提供商、比如Android (例如 Honeycomb 或者 Ice Cream Sandwich)、微軟(例如 Windows Phone)、Linux等關聯(lián)。例如0S-1302可以是全功能Android OS,0S-2034可以是Lite-Android OS,并且0S-3306可以是基于Android的微控制器代碼。
[0044]在這一具體示例中,每個操作系統(tǒng)由直接在相應操作系統(tǒng)之下示出的對應核執(zhí)行。在這一具體示例中,0S-1302(全功能OS)可以由被配置為高性能核的核-1202執(zhí)行,0S-2304(實時OS)可以由被配置為實施核的核-2304執(zhí)行,并且0S-3306(微OS)可以由被配置為微控制器核的核-3206執(zhí)行。這里,任務切換器128和核管理器130充當在核與操作系統(tǒng)之間的中介從而使得任務執(zhí)行能夠從一個操作系統(tǒng)/核集合(例如0S-1302和核-1202)向不同的操作系統(tǒng)/核集合(例如0S-2304和核-2204)切換。
[0045]堆棧架構(gòu)308包括被配置用于由核-1202、核-2204和核-3206執(zhí)行的0S-1302。在這一具體示例中,0S-1302可以是具有多個應用的全功能OS。然而這些應用中的一些應用可以無需在高性能核、比如核-1202上運行。在一些情況下,可以將這些應用的功能切換至更低性能核以用于執(zhí)行(例如核-2204或者核-3206)。即使核-2204或者核-3206可以是比核-1204更低性能的核或者具有更少功能,但是它們能夠執(zhí)行0S-1302并且執(zhí)行核-1202執(zhí)行的應用的一些功能。在一些情況下,向更低性能核切換各種任務或者功能的執(zhí)行可以減少處理器所消耗的能量的量。
[0046]堆棧架構(gòu)310包括分別被配置為全功能OS和實時OS的0S-1302和0S-2304。這里,堆棧架構(gòu)包括兩個高性能核(核-1202)和一個實時核(核-2204)。在這一具體不例中,可以用兩個高性能核中的任一個或者兩個高性能核執(zhí)行0S-1302的應用。這可以在0S-1302的應用在多核處理器114上產(chǎn)生高水平的計算需求時有用。然而在多核處理器114上的計算需求水平下降時,可以向0S-2304和核-2204切換0S-1302的應用或者任務以用于執(zhí)行。這可以準許高性能核空閑或者轉(zhuǎn)向更低功率狀態(tài)(例如睡眠或者掉電)。通過這樣做,可以節(jié)省高性能核中的電流泄漏所通常消耗的能量。
[0047]這些僅為準許在異構(gòu)核之間的任務切換的堆棧架構(gòu)的少數(shù)示例??梢赃M一步組合、穿插、減少、擴展或者修改描述的示例OS或者核配置中的任何OS或者核配置而未脫離這里描述的各個方面。
[0048]圖4圖示任務切換器128的示例,該任務切換器包括用于在核之間切換任務的仲裁器。這些仲裁器使得任務切換器128能夠在從一個核向另一核切換任務時監(jiān)測和支持握手操作。任務切換器128包括應用層面仲裁器402、框架層面仲裁器404和硬件層面仲裁器406。
[0049]應用層面仲裁器402跟蹤與應用關聯(lián)的表現(xiàn)任務的進度。這可以包括跟蹤、存儲或者傳送與應用的表現(xiàn)任務關聯(lián)的當前進度點。例如應用層面仲裁器402可以跟蹤用于表現(xiàn)應用的用戶界面的任務的進度。另外,應用層面仲裁器402可以從與任務關聯(lián)的應用接收、存儲或者傳送潛在任務切換點。
[0050]框架層面仲裁器404提供用于在核之間切換任務的中間件級接口。中間件級可以包括與任務關聯(lián)的數(shù)據(jù)結(jié)構(gòu)、比如存儲器緩沖器或者與存儲器緩沖器關聯(lián)的參數(shù)。例如,框架層面仲裁器404可以跟蹤、存儲或者傳送與存儲器緩沖器的分配、狀態(tài)、狀況標志或者閾值關聯(lián)的信息。這一信息可以由任務被切換到的核用來開始任務的執(zhí)行。框架層面仲裁器404也可以維持任務切換點直至向另一核切換任務或者使得任務能夠在向另一核的任務切換失敗的情況下在先前核上恢復。一般而言,框架層面仲裁器404通過保證任務的執(zhí)行從一個核向另一核的順利過渡來防止中斷用戶的計算體驗。
[0051]HW層面仲裁器406支持在硬件層面的在核之間的任務切換。這可以包括跟蹤、存儲或者傳送與各種外圍設備、總線、部件、中斷等關聯(lián)的信息。在這一具體示例中,HW層面仲裁器406與易失性存儲器接口 212、NV存儲器接口 214、顯示器接口 216、音頻接口 218和低級HW接口 220進行通信和交互。這準許訪問這些部件的任務在多核處理器114的各個核之間切換。
[0052]HW層面仲裁器406也可以設置中斷路由并且監(jiān)測多核處理器114的核性能。監(jiān)測核性能可以包括監(jiān)測用于在核上的計算需求、核的性能水平、核優(yōu)化等的閾值。例如,HW層面仲裁器406可以監(jiān)測為了執(zhí)行任務而選擇的核、確定核對于任務是否是最優(yōu)的(例如最優(yōu)頻率/電壓設置)并且如果選擇的核不是用于任務的最優(yōu)核則預備向另一核的任務切換。
[0053]在異構(gòu)核之間切換任務的技術
[0054]以下討論描述在異構(gòu)核之間切換任務的技術??梢允褂孟惹懊枋龅沫h(huán)境或者實體、比如圖1的在計算設備102上體現(xiàn)的任務切換器128或者核管理器130來實施這些技術。這些技術包括在圖5、7和8中所示方法,每種方法被示為由一個或者多個實體執(zhí)行的操作的集合。這些方法未必限于示出的用于執(zhí)行操作的順序。另外,這些方法可以相互結(jié)合、全部或者部分使用、無論是否由同一實體、單獨的實體或者其組合執(zhí)行。在以下討論的部分中,將通過示例參照圖1的操作環(huán)境100和圖2-4的實體。這樣的參考將不視為限于操作環(huán)境100、而是實際上為舉例說明多種示例之一。
[0055]圖5描繪用于從處理器的第一核向處理器的第二核切換任務的執(zhí)行的方法500,該方法包括由圖1的任務切換器126執(zhí)行的操作。
[0056]在步驟502,使用處理器的第一核來執(zhí)行任務。任務可以是由處理器的第一核執(zhí)行的應用的部分。處理器的第一核可以支持與處理器的其它核的指令集不同的特定指令集。處理器可以是包括兩個或者更多異構(gòu)核、比如以上描述的核的多核處理器。第一核可以是處理器的高性能核(例如ARM-A)。備選地或者附加地,處理器的第一核可以執(zhí)行操作系統(tǒng)、比如全功能操作系統(tǒng)。
[0057]作為示例,考慮用戶用圖1的智能電話104發(fā)起媒體播放器應用。這里假設智能電話104被配置有堆棧架構(gòu)300。這里經(jīng)由正在由核-1202(例如ARM-A核)執(zhí)行的0S-1302(例如全功能Android OS)起動媒體播放器應用。核-1202然后執(zhí)行視頻應用以表現(xiàn)如圖6中所示媒體播放器介面600 (媒體播放器Π600)。媒體播放器Π600包括視頻區(qū)域602、回放控件604和音量控件606。一旦被表現(xiàn),經(jīng)由顯不器接口 216向智能電話104的顯示器134呈現(xiàn)媒體播放器Π600。
[0058]這里假設用戶通過與回放控件604交互來發(fā)起回放視頻。核-1202然后執(zhí)行媒體播放器應用以表現(xiàn)視頻用于向視頻區(qū)域602顯示。這包括從網(wǎng)絡接口 138向硬件加速器210路由視頻數(shù)據(jù)的分組以用于解碼、解壓和表現(xiàn)。然后向顯示器接口 216路由表現(xiàn)的視頻數(shù)據(jù)用于向顯示器134傳達以用于在視頻區(qū)域602中顯示。
[0059]在504,確定處理器的第二核能夠執(zhí)行處理器的第一核執(zhí)行的任務。處理器的第二核可能支持與處理器的第一核的指令集不同的指令集。該確定可以通過輪詢第一核(例如當前被選擇用于執(zhí)行軟件的核)的使用和在其中實施處理器的系統(tǒng)需要的性能水平來執(zhí)行。例如,如果任務未繁重地使用高性能核并且系統(tǒng)性能需要低,則更低性能核可以能夠執(zhí)行任務而無損于性能。
[0060]在本例的上下文中,核管理器130測評核-1202以確定使用水平和智能電話104需要的性能水平。這里假設核-1202執(zhí)行用于表現(xiàn)視頻的媒體播放器應用以及用于管理智能電話104的更低級功能的一些后臺任務。核管理器130確定核-1202未在繁重負荷之下并且核-2204(例如實時核)可以滿足智能電話104需要的性能水平。假設核-2204被配置用于執(zhí)行實時OS、比如Lite-Android OS。這里,核管理器130可以向任務切換器128發(fā)起用于向核-2204切換媒體播放器應用的執(zhí)行的命令或者指示。
[0061 ] 在506,從處理器的第一核向處理器的第二核切換任務的執(zhí)行。這可以對于減少處理器所消耗的能量的量而言有效。例如可以從高性能核向消耗更少能量來執(zhí)行任務的中性能或者低性能核切換任務的執(zhí)行。
[0062]繼續(xù)本例,任務切換器128從核-1202向核-2204切換媒體播放器應用的執(zhí)行。這里假設任務切換器128在切換之前向媒體播放器應用查詢潛在切換點的集合。任務切換器128然后分析參與表現(xiàn)媒體播放器應用的視頻數(shù)據(jù)的實體、比如網(wǎng)絡接口 138、硬件加速器210和顯示器接口 216的活動。
[0063]一旦選擇可接受的切換點,任務切換器128生成用于為了從核-1202向核-2204切換媒體播放器應用的執(zhí)行而必需的軟件、固件和硬件的狀態(tài)信息。這可以用應用層面仲裁器402、框架層面仲裁器404和HW層面仲裁器406來實現(xiàn)。這一狀態(tài)信息然后用來向核-2204切換媒體播放器應用的執(zhí)行。這里假設核-2204執(zhí)行媒體播放器應用以繼續(xù)從網(wǎng)絡接口 138向硬件加速器210路由視頻數(shù)據(jù)用于表現(xiàn)。為了通過硬件加速器210路由視頻數(shù)據(jù)而需要的工作可以是最少的,即使核-2204不是高性能核,這也允許核-2204執(zhí)行媒體播放器應用。通過這樣做,可以節(jié)約高性能核的漏電流通常消耗的能量。
[0064]可選地在508,從處理器的第二核向處理器的第一核切換回任務的執(zhí)行。這可以響應于接收到用戶輸入或者事件、比如用于傳入呼叫、傳入文字消息、電子郵件、報警等的提醒。在一些情況下,這對于使得任務能夠?qū)邮盏挠脩糨斎牖蛘呤录龀鲰憫杂行?。例如任務可能在正在由第二核?zhí)行之時由于第二核的有限功能而不能做出響應。通過向第一處理器核傳送回任務,任務可以利用第一核的功能以對事件做出響應。
[0065]結(jié)束本例,假設智能電話104的用戶與回放控件604交互以暫停視頻的回放。這里,媒體播放器應用在由核-2204執(zhí)行時可能不能對用戶輸入做出響應。然而媒體播放器應用可以向任務切換器128用信號發(fā)送事件,該事件指示需要從核-2204向核-1202切換回應用的執(zhí)行。任務切換器128然后從核-2204向核-1202切換回媒體播放器應用的執(zhí)行。[0066]圖7描繪用于從處理器的第一核向處理器的第二核切換應用的方法700,該方法包括圖1的任務切換器128或者核管理器130執(zhí)行的操作。
[0067]在702,經(jīng)由處理器的第一核執(zhí)行的第一操作系統(tǒng)發(fā)起應用。處理器可以是具有多個異構(gòu)核的多核處理器,這些異構(gòu)核支持不同指令集或者操作系統(tǒng)。應用可以包括用于執(zhí)行應用的不同功能、比如表現(xiàn)圖形、接收用戶輸入、表現(xiàn)內(nèi)容等的一個或者多個任務。
[0068]作為示例,在智能電話104的用戶播放音頻文件的上下文中考慮方法700?;仡檲D6中所示媒體播放器應用的示例,假設用戶發(fā)起媒體播放器應用。這里,媒體播放器應用在正在由核-1202 (例如高性能核)執(zhí)行的0S-1302 (例如全功能OS)上開始運行。
[0069]在704,經(jīng)由第一操作系統(tǒng)表現(xiàn)用于應用的用戶界面??梢允褂密浖蛘哂布铀倨鱽肀憩F(xiàn)用戶界面。表現(xiàn)用戶界面可以由在處理器的第一核上執(zhí)行的應用的任務執(zhí)行。用戶界面可以包括任何適當特征、比如用于顯示表現(xiàn)的圖形、文字、視頻等的可視地可感知控件或者區(qū)域。
[0070]在本例的上下文中,在媒體播放器應用在0S-1302和核-1202上運行之時表現(xiàn)媒體播放器UI600。核-1202向硬件加速器210分流表現(xiàn)的大部分。一旦被表現(xiàn),媒體播放器UI600經(jīng)由顯示器接口 216顯示。然后從非易失性存儲器120向硬件加速器210的數(shù)字信號處理器(DSP)路由用于回放的音頻數(shù)據(jù)用于數(shù)字模擬轉(zhuǎn)換。然后經(jīng)由音頻接口 218向音頻端口 136發(fā)送轉(zhuǎn)換的模擬音頻信號用于向用戶回放。這里也假設一旦音頻回放開始,智能電話104的顯示器134關斷從而排除需要表現(xiàn)媒體播放器Π600。
[0071]在706,確定應用何時可以由第二操作系統(tǒng)執(zhí)行。第二操作系統(tǒng)可以具有比第一操作系統(tǒng)更少的特征或者更少的功能。第二操作系統(tǒng)也可以被配置用于在處理器的第二核上執(zhí)行。這一第二核可以支持與第一核的指令集不同的指令集(例如更小指令集)??梢栽趹檬褂玫诙僮飨到y(tǒng)來執(zhí)行之時實施應用的功能的全部或者部分。在一些情況下,應用可以在低計算需求的時段期間由第二操作系統(tǒng)執(zhí)行。例如,第二操作系統(tǒng)可以能夠在需要高水平計算性能的初始化序列之后執(zhí)行應用。
[0072]繼續(xù)本例,核管理器130測評核-1202以確定使用水平和智能電話104需要的性能水平。這里假設核-1202正在執(zhí)行用于表現(xiàn)音頻的媒體播放器應用以及用于管理智能電話104的更低級功能的一些后臺任務。核管理器130確定核-1202未在繁重負荷之下并且核-3206(例如微控制器核)可以滿足智能電話104需要的性能水平。假設核-3206被配置用于執(zhí)行實微控制器OS、比如基于Android的固件。這里,核管理器130可以向任務切換器128發(fā)起用于向核-3206切換媒體播放器應用的執(zhí)行的命令或者指示。
[0073]在708,從第一操作系統(tǒng)向第二操作系統(tǒng)切換應用的執(zhí)行。這可以包括確定可以在相應操作系統(tǒng)下面的核之間切換應用的執(zhí)行的一個切換點(或者多個潛在切換點)。這可以對于減少在處理器的執(zhí)行第一操作系統(tǒng)的核上的工作量、由此減少處理器的該核消耗的能量的量。
[0074]備選地或者附加地,仲裁器可以跟蹤和/或標記應用進度的點以有助于切換。這些標記的進度點使各種握手能夠在遇到切換點時在應用層面、框架層面或者硬件層面出現(xiàn)。一旦建立切換點,可以向處理器的第二核傳送狀態(tài)信息、中斷或者高速緩存數(shù)據(jù)從而使應用的執(zhí)行能夠向第二操作系統(tǒng)切換。
[0075]繼續(xù)本例,任務切換器128從核-1202向核-3206切換媒體播放器應用的執(zhí)行。這里假設任務切換器128在切換之前向媒體播放器應用查詢潛在切換點集。任務切換器128然后分析參與表現(xiàn)媒體播放器應用的音頻數(shù)據(jù)的實體、比如DSP、非易失性存儲器120和硬件加速器210的活動。
[0076]一旦選擇可接受切換點,任務切換器128生成用于為了從核-1202向核-3206切換媒體播放器應用的執(zhí)行而必需的軟件、固件和硬件的狀態(tài)信息。這由應用層面仲裁器402、框架層面仲裁器404和HW層面仲裁器406在它們的相應應用層面執(zhí)行。這里,應用層面仲裁器402存儲并且向應用的其它部件通知即將到來的切換點。框架層面仲裁器404傳送專用于核-3206的緩沖器分配、緩沖器狀態(tài)、標志和過/欠運行閾值。HW層面仲裁器406生成用于中斷標記的設備列表并且定義用于核-3206的中斷路由配置。這些配置和信息然后用來向核-3206切換媒體播放器的執(zhí)行。
[0077]在710,經(jīng)由第二操作系統(tǒng)表現(xiàn)應用的內(nèi)容。內(nèi)容可以是任何適當內(nèi)容、比如文本、音頻、圖形、視頻等。在一些情況下,在用戶界面的經(jīng)由第一操作系統(tǒng)表現(xiàn)的部分中呈現(xiàn)內(nèi)容。在這樣的情況下,用戶界面可以在表現(xiàn)背景(context)之時由第二操作系統(tǒng)維持。在其它情況下,用戶界面可以無需表現(xiàn)、比如在音頻回放期間關斷設備的顯示器時。
[0078]結(jié)束本例,核-3206使用0S-3206來執(zhí)行媒體播放器應用以繼續(xù)從非易失性存儲器120向硬件加速器210的DSP路由音頻數(shù)據(jù)用于表現(xiàn)。為了通過DSP路由音頻數(shù)據(jù)而需要的工作可以最少,這允許核-3206在即使核-3206和0S-3306未被配置用于高性能核的情況下仍然執(zhí)行媒體播放器應用。通過這樣做,可以節(jié)約高性能核的漏電流通常消耗的能量。
[0079]圖8描繪向處理器的另一核切換任務的方法800,該方法包括圖1的任務切換器128或者核管理器130執(zhí)行的操作。
[0080]在802,響應于處理器的核的性能改變而生成事件。處理器的核可以執(zhí)行任務或者應用。核可以與處理器的用于執(zhí)行任務或者應用的高速緩存關聯(lián)。事件可以由測評核的當前或者預期性能水平的核管理實體生成。
[0081]在804,基于事件確定是否發(fā)起向處理器的另一核的任務切換。該確定也可以基于處理器在其中被實施的系統(tǒng)需要的性能水平。例如,核管理實體可以確定在處理器的核上執(zhí)行軟件是否滿足或者超出用于系統(tǒng)的當前性能水平。
[0082]如果未發(fā)起核切換,則方法800可以繼續(xù)至操作806,或者如果發(fā)起核切換則繼續(xù)至808。在806,如果未發(fā)起向另一核的任務切換,則可以調(diào)整核的操作頻率或者電壓。這可以對于對準核的性能水平與系統(tǒng)所需要的性能水平以繼續(xù)用該核執(zhí)行任務或者其它軟件而言有效。
[0083]在808,向任務切換器發(fā)送切換命令。任務切換器負責預備用于任務切換的軟件、固件或者硬件堆棧級。這可以包括確定用于向處理器的另一核切換任務以用于執(zhí)行的切換點。確定切換點可以包括向任務屬于的應用發(fā)送對于潛在切換點的請求。
[0084]在810,配置處理器的另一核和另一高速緩存以用于任務切換。配置處理器的另一核和另一高速緩存可以包括向核供電或者從核清除陳舊數(shù)據(jù)。處理器的另一核可以支持與核的指令集不同的指令集。在一些情況下,核和另一核實施任務和其它軟件在其上運行的不同操作系統(tǒng)。
[0085]在812,提供到處理器的另一核的訪問。這可以包括將核的上下文狀態(tài)復制到另一核。提供到處理器的另一核和高速緩存的訪問也可以包括從緩沖器或者其它存儲器結(jié)構(gòu)傳送與任務的執(zhí)行關聯(lián)的狀態(tài)信息。
[0086]在814,保存核的狀態(tài)并且執(zhí)行向另一核的任務切換。核的狀態(tài)可以包括用于核的上下文狀態(tài)、中斷或者配置信息。備選地或者附加地,可以將與核關聯(lián)的高速緩存中的數(shù)據(jù)保存到另一存儲器,從而使得核和高速緩存能夠被掉電。
[0087]在816,確定向另一核的任務切換是否成功。這可以包括確定另一核是否能夠在任務切換器提供的切換點開始任務的執(zhí)行。成功的任務切換可以在從核向另一核遷移任務的執(zhí)行時不可為用戶所察覺。
[0088]從操作816,如果任務切換未成功,則方法800可以繼續(xù)至操作818,或者如果任務切換成功則繼續(xù)至操作820。在818,用核繼續(xù)任務的執(zhí)行。在繼續(xù)執(zhí)行之前,可以恢復核的保存的狀態(tài)從而使得執(zhí)行能夠在切換點恢復。
[0089]在820,使用處理器的另一核來執(zhí)行任務。另一核的任務的執(zhí)行在由任務切換器提供的切換點開始。用來執(zhí)行任務的另一核的操作系統(tǒng)或者指令集可以不同于先前執(zhí)行任務的核的操作系統(tǒng)或者指令集。另一核可以是比先前在其上執(zhí)行任務的核更低性能、更低功率的核。這可以對于減少處理器為了執(zhí)行任務而消耗的能量的量而言有效。
[0090]在822,使處理器的核掉電以節(jié)約能量。在一些情況下,向另一核切換任務準許核被掉電。在其它情況下,可以向另一核切換核的剩余任務以使得核能夠被掉電。使核掉電可以包括將處理器的核置于消耗減少的能量的量的空閑或者睡眠狀態(tài)中。
[0091]片上系統(tǒng)
[0092]圖9圖示可以實施以上描述的各種實施例的片上系統(tǒng)(SoC) 900。可以在任何適當設備、比如視頻游戲控制臺、已啟用IP的電視機、智能電話、桌面計算機、膝上型計算機、接入點、無線路由器、蜂窩寬帶路由器、平板計算機、服務器、已啟用網(wǎng)絡的打印機、機頂盒、打印機、掃描儀、相機、相框、家用電器、恒溫器、家用自動化設備和/或可以實施多核技術的任何其它類型的設備中實施SoC。
[0093]SoC900可以與電子電路裝置、微處理器、存儲器、輸入/輸出(I / O)邏輯控制、通信接口和部件、為了提供為設備、比如以上列舉的設備中的任何設備提供通信耦合而需要的其它硬件、固件和/或軟件。SoC900也可以包括將SoC的各種部件耦合以用于部件之間的數(shù)據(jù)通信的集成數(shù)據(jù)總線(未示出)。也可以用不同部件的許多組合實施包括SoC900的無線通信設備。在一些情況下,這些不同的部件可以被配置用于通過無線連接、鏈路或者接口實施這里描述的概念。
[0094]在這一示例中,SoC900包括各種部件、比如輸入-輸出(I / O)邏輯控制902 (例如包括電子電路裝置)和微處理器核904(例如如這里描述的任何全功能、實時或者微控制器核)。SoC900也包括存儲器906,該存儲器可以是任何類型的RAM、低延時非易失性存儲器(例如閃速存儲器)、ROM、一次性可編程存儲器和/或其它適合的電子數(shù)據(jù)存儲裝置及其組合。備選地或者附加地,SoC900可以包括用于訪問附加或者可擴展片外存儲器的存儲器接口、比如外部閃速存儲器模塊。SoC900也可以包括各種固件和/或軟件、比如操作系統(tǒng)908,該固件和/或軟件可以是由存儲器906維持的并且由微處理器904執(zhí)行的計算機可執(zhí)行指令。SoC900也可以包括其它各種通信接口和部件、通信部件、其它硬件、固件和/或軟件。[0095]SoC900包括任務切換器128、核管理器130、硬件加速器210 (例如視頻或者音頻加速器)、顯示器接口 216和音頻接口 218(這些部件中的任何部件可以如以上指出的那樣被體現(xiàn)為不同的或者組合部件)。在其它方面中,在附加的通信或者存儲器部件與SoC900分離被體現(xiàn)時,SoC900可以包括與網(wǎng)絡接口 138、易失性存儲器接口 212或者NV存儲器接口 214的數(shù)據(jù)接口。參照環(huán)境100的相應部件和如圖1-4所示各種配置描述的這些各種部件、功能和/或?qū)嶓w及其對應功能的示例。
[0096]任務切換器128可以獨立或者與其它實體組合而被實施為由存儲器906維持的并且由微處理器904執(zhí)行的計算機可執(zhí)行指令以實施這里描述的各種實施例和/或特征。任務切換器128也與SoC的其它實體整體地被提供、比如與核管理器130或者在SoC900內(nèi)的另一適當軟件、固件或者硬件部件中的一項或者兩項集成。備選地或者附加地,任務切換器128和其它部件可以被實施為結(jié)合I / O邏輯控制902和/或SoC900的其它信號處理和控制電路實施的硬件、固件、固定邏輯電路裝置或者其任何組合。
[0097]雖然已經(jīng)用特定于結(jié)構(gòu)特征和/或方法操作的言語描述了主題內(nèi)容,但是將理解在所附權利要求中限定的主題內(nèi)容不必限于以上所描述的特定特征或者操作、包括執(zhí)行它們具有的順序。
【權利要求】
1.一種方法,包括: 確定正在由處理器的第一核執(zhí)行的任務能夠由所述處理器的第二核執(zhí)行,所述第一核具有與所述第二核的第二指令集不同的第一指令集;以及 從所述第一核向所述第二核切換所述任務的執(zhí)行以有效用于減少所述處理器所消耗的能量的量。
2.根據(jù)權利要求1所述的方法,其中由所述處理器的所述第一核執(zhí)行的第一操作系統(tǒng)與所述處理器的所述第二核執(zhí)行的第二操作系統(tǒng)不同。
3.根據(jù)權利要求2所述的方法,其中從所述第一核向所述第二核切換執(zhí)行包括從所述第一操作系統(tǒng)向所述第二操作系統(tǒng)遷移所述任務的執(zhí)行。
4.根據(jù)權利要求1所述的方法,其中所述處理器的所述第一核在與所述處理器的所述第二核在其上操作的第二頻率范圍不同的第一頻率范圍上操作。
5.根據(jù)權利要求1所述的方法,其中所述處理器的所述第一核是高級處理器核,并且所述第二處理器核是實時處理器核或者微控制器處理器核。
6.根據(jù)權利要求1所述的方法,其中所述第一指令集包括比所述第二指令集多的指令。
7.根據(jù)權利要求1所述的方法,其中所述處理器還包括具有與所述第一指令集和所述第二指令集不同的第三指令集的第三核,并且還包括從所述第一核或者所述第二核向所述第三核切換另一任務的執(zhí)行以有效用于進一步減少所述處理器所消耗的能量的量。
8.根據(jù)權利要求1所述的方法,其中由所述處理器的所述第一核對所述任務的執(zhí)行來發(fā)起對媒體的呈現(xiàn),并且由所述處理器的所述第二核對所述任務的執(zhí)行繼續(xù)對所述媒體的所述呈現(xiàn)。
9.根據(jù)權利要求1所述的方法,還包括響應于用戶輸入而從所述處理器的所述第二核向所述處理器的所述第一核切換回所述任務的執(zhí)行,以有效用于使得由所述處理器的所述第一核執(zhí)行的另一任務能夠?qū)λ鲇脩糨斎胱龀鲰憫?br>
10.一種方法,包括: 經(jīng)由第一操作系統(tǒng)發(fā)起應用,所述第一操作系統(tǒng)由處理器的第一核執(zhí)行,所述應用被配置用于由所述第一核執(zhí)行; 經(jīng)由所述第一操作系統(tǒng)表現(xiàn)所述應用的用戶界面; 確定何時能夠使用第二操作系統(tǒng)來執(zhí)行所述應用的至少一部分,所述第二操作系統(tǒng)不同于所述第一操作系統(tǒng)并且由所述處理器的第二核執(zhí)行; 響應于所述確定而從所述第一核向所述第二核切換所述應用的所述至少一部分的執(zhí)行;以及 經(jīng)由所述第二操作系統(tǒng)表現(xiàn)與所述應用的所述至少一部分關聯(lián)的內(nèi)容。
11.根據(jù)權利要求10所述的方法,其中與所述應用的所述至少一部分關聯(lián)的所述內(nèi)容包括視頻內(nèi)容或者音頻內(nèi)容。
12.根據(jù)權利要求10所述的方法,其中表現(xiàn)所述內(nèi)容包括將所述內(nèi)容引向硬件加速器或者從所述硬件加速器接收所述內(nèi)容,所述硬件加速器被配置用于執(zhí)行所述內(nèi)容的所述表現(xiàn)。
13.根據(jù)權利要求12所述的方法,其中所述內(nèi)容是流式內(nèi)容,并且還包括將所述流式內(nèi)容的數(shù)據(jù)從網(wǎng)絡接口引向所述硬件加速器。
14.根據(jù)權利要求10所述的方法,其中所述處理器被實現(xiàn)在智能電話、平板計算機、膝上型計算機、機頂盒設備、已啟用因特網(wǎng)協(xié)議的電視機、個人媒體設備或者游戲設備中。
15.—種系統(tǒng),包括: 處理器,被配置用于執(zhí)行所述系統(tǒng)的任務,所述處理器包括: 第一核,被配置用于執(zhí)行第一軟件; 第二核,被配置用于執(zhí)行第二軟件,所述第二軟件具有比所述第一軟件少的功能,所述第二核具有比所述第一核少的電流泄漏;以及任務切換器,被配置用于: 確定正在使用所述第一核的所述第一軟件執(zhí)行的任務能夠使用所述第二核的所述第二軟件來執(zhí)行; 響應于所述確定而向所述任務所屬于的應用發(fā)送核切換的指示; 從所述應用接收一個或者多個潛在切換點,在所述一個或者多個潛在切換點處能夠向所述第二核切換所述任務,以用于使用所述第二軟件來執(zhí)行;以及 在所述潛在切換點之一處從 所述第一核的所述第一軟件向所述第二核的所述第二軟件切換所述任務的執(zhí)行以有效用于減少所述處理器所消耗的能量的量。
16.根據(jù)權利要求15所述的系統(tǒng),其中所述第一軟件和所述第二軟件是不同的操作系統(tǒng)。
17.根據(jù)權利要求15所述的系統(tǒng),其中所述系統(tǒng)部分地或者全部地被體現(xiàn)為片上系統(tǒng)(SoC)。
18.根據(jù)權利要求15所述的系統(tǒng),其中所述第一核在至少IOOMHz的頻率操作,并且所述第二核在IOMHz至200MHz的頻率范圍上操作。
19.根據(jù)權利要求15所述的系統(tǒng),其中所述第一核支持64位或者32位指令集,并且所述第二核支持32位、16位或者8位指令集。
20.根據(jù)權利要求15所述的系統(tǒng),其中所述第一核能夠執(zhí)行浮點算術運算,并且所述第二核不能夠執(zhí)行浮點算術運算。
【文檔編號】G06F9/44GK103782272SQ201280043237
【公開日】2014年5月7日 申請日期:2012年9月6日 優(yōu)先權日:2011年9月6日
【發(fā)明者】O·扎阿魯爾, P·薩卡爾達 申請人:馬維爾國際貿(mào)易有限公司