無線通信技術和移動電子設備(例如,蜂窩電話、平板電腦、膝上型電腦等等)已經(jīng)越來越普及使用。為了與增長的消費者需求保持同步,移動設備已經(jīng)變得更功能多樣,并且現(xiàn)在一般包括多個處理設備、片上系統(tǒng)(SOC)和其它資源以用于允許移動設備用戶在移動設備上執(zhí)行復雜的且功率密集型軟件應用(例如,視頻和音頻流和/或處理應用、網(wǎng)絡游戲應用等等)。由于這些和其它改進,智能電話和平板計算機已經(jīng)越來越普及,并且在替代膝上型和桌面型機器來作為很多用戶的平臺選擇。但是,移動設備通常包括相對有限的電源。在一個移動設備中提供多個處理設備加劇了移動設備的功率存儲局限性。
技術實現(xiàn)要素:
各個方面包括管理處理器設備功耗的方法,其可以包括確定被調度用于在包括多個處理內(nèi)核的處理器中執(zhí)行的多個線程中的每一個線程的線程執(zhí)行度量;向所述多個處理內(nèi)核中的第一處理內(nèi)核分配所述多個線程中的其線程執(zhí)行度量滿足第一門限的那些線程;以及降低所述第一處理內(nèi)核的頻率以降低所選擇的處理內(nèi)核的功耗。在一個方面,向第一處理內(nèi)核分配其線程執(zhí)行度量滿足第一門限的那些線程可以包括將其線程執(zhí)行度量滿足所述第一門限的那些線程關聯(lián)為第一組;以及將所述第一組的線程分配給所述第一處理內(nèi)核。
在一個方面,該方法可以包括向所述多個處理內(nèi)核中的第二處理內(nèi)核分配所述多個線程中的其線程執(zhí)行度量不滿足所述第一門限的那些線程。在其它方面,該方法可以包括增加所述第二處理內(nèi)核的頻率以增加處理所述多個線程中的其線程執(zhí)行度量不滿足所述第一門限的那些線程的速率。在其它方面,向所述多個處理內(nèi)核中的第二處理內(nèi)核分配其線程執(zhí)行度量不滿足所述第一門限的那些線程可以包括將所述多個線程中的其線程執(zhí)行度量不滿足所述第一門限的那些線程關聯(lián)為第二組,以及將所述第二組分配給所述第二處理內(nèi)核。
在一個其它方面,該方法可以包括向所述多個處理內(nèi)核中的第三處理內(nèi)核分配其線程執(zhí)行度量滿足第二門限但是不滿足所述第一門限的那些線程,以及將所述第三處理內(nèi)核的頻率調整為所述第一處理內(nèi)核的所述頻率和所述第二處理內(nèi)核的所述頻率之間的頻率。
在一個其它方面,所述線程執(zhí)行度量可以包括緩存未命中率,并且所述第一門限可以包括緩存未命中率門限值。在一些方面,所述緩存未命中率可以包括以下各項中的至少一項:在緩存中讀取或寫入數(shù)據(jù)的失敗嘗試的次數(shù)、基于所述緩存中讀取或寫入數(shù)據(jù)的失敗嘗試的主存儲器訪問次數(shù),以及基于所述緩存中讀取或寫入數(shù)據(jù)的失敗嘗試的處理器等待狀態(tài)次數(shù)。
在一個其它方面,降低所述第一處理內(nèi)核的頻率還可以包括基于分配給所述第一處理內(nèi)核的所述線程的所述緩存未命中率確定所述第一處理內(nèi)核的緩存未命中率特性,以及基于所確定的緩存未命中率特性降低所選擇的處理內(nèi)核的所述頻率。在其它方面,所述緩存未命中率特性可以包括以下各項中的一項:分配給所選擇的處理內(nèi)核的所述線程的平均緩存未命中率、分配給所選擇的處理內(nèi)核的所述線程的均值緩存未命中率、根據(jù)分配給所選擇的處理內(nèi)核的所述線程的所述均值緩存未命中率的標準偏差,和分配給所選擇的處理內(nèi)核的所述線程的聚合緩存未命中率。
在一個其它方面,所述線程執(zhí)行度量可以包括同步操作率,并且所述第一門限可以包括同步操作率門限值。在一些方面,所述同步操作可以包括以下各項中的至少一項:自旋鎖的數(shù)量、等待請求的共享資源的時間段、鎖定指令的數(shù)量和同步指令執(zhí)行率。
在一個方面,降低所述第一處理內(nèi)核的頻率還可以包括基于分配給所述第一處理內(nèi)核的所述線程的所述同步操作率確定所述第一處理內(nèi)核的同步操作率特性,以及基于所確定的同步操作率特性降低所述第一處理內(nèi)核的所述頻率。
在一個其它方面,所述線程執(zhí)行度量可以包括指令類型率,并且所述第一門限可以包括指令類型率門限值。在其它方面,所述指令類型率可以包括以下各項中的至少一項:浮點指令率、向量指令率和存儲器指令率。在其它方面,降低所述第一處理內(nèi)核的頻率還包括基于分配給所述第一處理內(nèi)核的所述線程的所述指令類型率確定所述第一處理內(nèi)核的指令類型率特性,以及基于所確定的指令類型率特性降低所述第一處理內(nèi)核的頻率。
其它方面包括計算設備,其包括處理器,該處理器被配置有用于執(zhí)行上述方面方法的操作的處理器可執(zhí)行指令。其它方面包括其上存儲有處理器可執(zhí)行軟件指令的非臨時性處理器可讀存儲器介質,所述處理器可執(zhí)行軟件指令被配置為使處理器執(zhí)行上述方面方法的操作。其它方面包括計算設備,其包括用于執(zhí)行上述方面方法的操作的功能的單元。
附圖說明
合并到本文中并且組成本說明書的一部分的附圖解釋說明了本發(fā)明的示例性方面。與上面給出的概述和下面給出的具體實施方式一起,所述附圖用于解釋本發(fā)明的特征,而非限制所公開的方面。
圖1是示出可以用在實現(xiàn)各個方面的計算設備中的示例性片上系統(tǒng)(SOC)架構的組件框圖。
圖2是示出可以用于實現(xiàn)各個方面的示例性多核處理器架構的功能框圖。
圖3是示出管理處理器設備功耗的方面方法的過程流程圖。
圖4是示出管理處理器設備功耗的另一方面方法的過程流程圖。
圖5是示出管理處理器設備功耗的另一方面方法的過程流程圖。
圖6是示出管理處理器設備功耗的另一方面方法的過程流程圖。
圖7是適合與各個方面一起使用的示例性移動設備的組件框圖。
圖8是適合與各個方面一起使用的示例性服務器的組件框圖。
圖9是適合于實現(xiàn)各個方面的膝上型計算機的組件框圖。
具體實施方式
將參照附圖詳細描述各個方面。只要有可能,相同的附圖標記在貫穿附圖中將用于指代相同或相似的部分。針對特定示例和實現(xiàn)做出的引用是用于解釋說明的目的,而并不意在限制權利要求的范圍。
本文中使用的詞語“示例性”意味著“用作示例、實例或舉例說明”。本文中被描述為“示例性”的任何實現(xiàn)不一定被解釋為比其它實現(xiàn)更優(yōu)選或更有優(yōu)勢。
術語“移動設備”和“計算設備”在本文中交替使用以指代以下各項中的任意一項或所有項:蜂窩電話、智能電話、個人或移動多媒體播放器、個人數(shù)字助理(PDA)、膝上型計算機、平板電腦、智能本、掌上計算機、無線電子郵件接收機、具備多媒體互聯(lián)網(wǎng)功能的蜂窩電話、無線游戲控制器和類似的包括可編程處理器和存儲器的電子設備。盡管各個方面具體地用于諸如蜂窩電話和其它便攜式計算平臺之類的移動設備(其可能具有相對有限的處理功率和/或功率存儲容量),但是這些方面通常也可用于向處理設備或處理內(nèi)核分配線程、進程或其它指令序列的任何計算設備。
術語“片上系統(tǒng)”(SOC)在本文中用于指代在單個基底上包含集成的多個資源和/或處理器的單個集成電路(IC)芯片。單個SOC可以包含用于數(shù)字、模擬、混合信號的電路和射頻功能。單個SOC還可以包括任何數(shù)量的通用處理器和/或專用處理器(數(shù)字信號處理器、調制解調器處理器、視頻處理器等等)、存儲器塊(例如,ROM、RAM、閃存等等)和資源(例如,定時器、穩(wěn)壓器、振蕩器等等)。SOC還可以包括用于控制該集成資源和處理器以及用于控制外圍設備的軟件。
術語“多核處理器”在本文中用于指代包含被配置為讀取并執(zhí)行程序指令的兩個或更多獨立處理設備或處理內(nèi)核(例如,CPU內(nèi)核)的單個集成電路(IC)芯片或芯片包。SOC可以包括多個多核處理器,并且SOC中的每個處理器可以被稱為一個內(nèi)核或處理內(nèi)核。術語“多處理器”在本文中用于指代包括被配置為讀取并執(zhí)行程序指令的兩個或更多處理單元的系統(tǒng)或設備。術語“線程”或“進程”在本文中用于指代指令序列,其可以被分配給處理內(nèi)核。
如本申請中所使用的,術語“組件”、“模塊”、“系統(tǒng)”等等意在包括計算機相關實體,諸如但并不僅限于硬件、固件、硬件和軟件的組合、軟件或運行中的軟件,它們被配置為執(zhí)行特定操作或功能。例如,一個組件可以是,但并不僅限于運行在處理器上的進程、處理器、對象、可執(zhí)行程序、運行的線程、程序和/或計算機。舉例來講,運行在計算設備上的應用和該計算設備二者可以被稱為組件。一個或多個組件可以駐留在運行的進程和/或線程中,并且一個組件可以位于一個處理器或內(nèi)核上和/或分布在兩個或更多處理器或內(nèi)核之間。另外,可以根據(jù)其上存儲有各種指令和/或數(shù)據(jù)結構的各種非臨時性處理器可讀介質,來執(zhí)行這些組件。組件可以通過本地和/或遠程過程、函數(shù)或程序調用、電子信號、數(shù)據(jù)分組、存儲器讀取/寫入和其它公知的計算機、處理器和/或過程相關的通信方法的方式,來進行通信。
為了與增加的消費者需求保持同步,移動設備已經(jīng)變得越來越功能多樣,并且現(xiàn)在一般包括用于允許移動設備用戶在移動設備上執(zhí)行復雜的且功率密集型軟件應用(例如,視頻和音頻流和/或處理應用、網(wǎng)絡游戲應用等等)的多個處理設備、多核處理器、片上系統(tǒng)(SOC)和其它資源。移動設備通常包括相對有限的電源。在一個移動設備中提供多個處理設備加劇了移動設備的功率存儲局限。
各個方面提供了用于通過基于確定線程執(zhí)行度量來跨多核系統(tǒng)中的多個內(nèi)核調度指令序列(諸如進程、線程等等),以及基于指派給每個處理內(nèi)核的指令序列確定一個或多個處理內(nèi)核的適當頻率,來改善移動設備的性能和功耗特性的方法、系統(tǒng)和設備。各個方面可以實現(xiàn)為用戶空間守護進程、(例如,移動設備的操作系統(tǒng)的)內(nèi)核模塊或操作系統(tǒng)調度器。在各個方面中,可以將所具有的線程執(zhí)行度量滿足門限線程執(zhí)行度量的一個或多個線程分配給一個處理內(nèi)核,并且可以降低該處理內(nèi)核的操作頻率以改善該處理內(nèi)核的功耗和處理效率,同時提供該移動設備的門限水平的性能。
各個方面可以具有多核系統(tǒng)中的特定應用,其中同時執(zhí)行兩個或更多應用。隨著同時執(zhí)行的應用的數(shù)量的增加,由該處理內(nèi)核執(zhí)行的指令序列的數(shù)量可能顯著地增加,潛在地由于與可用的處理內(nèi)核相比更多數(shù)量的線程而使該處理內(nèi)核過載。當指令序列向處理器引入低效率時,諸如通過要求調用非緩存存儲器,或通過包括更多地要求驚人的處理器資源或者當前由另一個進程或處理器使用的資源,該處理內(nèi)核伴隨的延遲(例如,等待時間)可能對應用性能有明顯影響。
將線程執(zhí)行度量用作向特定內(nèi)核分配指令序列的基礎提供了一種用于針對一個或幾個內(nèi)核進程進行分配的低開銷方法,所述內(nèi)核進程涉及更嚴重的低效率,諸如在從非緩存存儲器獲取數(shù)據(jù)時的更多的等待時間、由同步操作造成的延遲和/或執(zhí)行一種或多種類型的指令的速率。由于指令序列的處理時間可能主要由通過某些指令序列引入的處理低效率來決定,因此執(zhí)行相對比較消耗處理器資源的指令序列的處理器內(nèi)核可以以更低的頻率并因此的更低的功率來操作,而不會明顯地影響處理性能。因此,各個方面提供一種低開銷方法,該方法用于將處理密集型指令序列分配給選擇的能夠以較高頻率/較高功率來操作的處理內(nèi)核以改善處理性能,并且將消耗更多資源/或時間的指令序列分配給能夠以較低頻率/較低功率來操作的一個或幾個內(nèi)核以便在不影響處理性能的前提下節(jié)省電池功率。
可以在多個單處理器和多處理器計算機系統(tǒng)(包括片上系統(tǒng)(SOC))上來實現(xiàn)各個方面。圖1示出可以用在實現(xiàn)各個方面的計算設備中的示例性片上系統(tǒng)(SOC)100架構。SOC 100可以包括多個異構處理器,諸如數(shù)字信號處理器(DSP)102、調制解調器處理器104、圖形處理器106和應用處理器108。SOC 100還可以包括連接到異構處理器102、104、106、108中的一個或多個異構處理器的一個或多個協(xié)處理器110(例如,向量協(xié)處理器)。每個處理器102、104、106、108、110可以包括一個或多個內(nèi)核(例如,應用處理器108中示出的處理內(nèi)核108a、108b、108c和108d),并且每個處理器/內(nèi)核可以獨立于其它處理器/內(nèi)核來執(zhí)行操作。SOC 100可以包括用于執(zhí)行操作系統(tǒng)(例如,F(xiàn)reeBSD、LINUX、OS X、Microsoft Windows8等)的處理器,其可以包括被配置為將指令序列(諸如線程、進程或數(shù)據(jù)流)調度給一個或多個處理內(nèi)核以用于執(zhí)行的調度器。
該SOC 100還可以包括模擬電路和定制電路114,其用于管理傳感器數(shù)據(jù)、模擬到數(shù)字轉換、無線數(shù)據(jù)傳輸,以及用于執(zhí)行諸如處理要在網(wǎng)絡瀏覽器中展示的經(jīng)編碼音頻和視頻信號之類的其它專門操作。該SOC 100還可以包括系統(tǒng)組件和資源116,諸如穩(wěn)壓器、振蕩器、鎖相環(huán)、外設橋接、數(shù)據(jù)控制器、存儲器控制器、系統(tǒng)控制器、接入端口、定時器和其它類似的用于支持運行在計算設備上的處理器和軟件程序的組件。
該系統(tǒng)組件和資源116和/或定制電路114可以包括用于與外圍設備(諸如攝像機、電子顯示器、無線通信設備、外部存儲器芯片等等)交互的電路。處理器102、104、106、108可以彼此之間進行通信,以及經(jīng)由互連/總線模塊124與一個或多個存儲器元件112、系統(tǒng)組件和資源116和定制電路114通信,該互連/總線模塊124可以包括可重新配置邏輯門陣列和/或實現(xiàn)總線架構(例如,CoreConnect、AMBA等等)??梢杂芍T如高性能片上網(wǎng)絡(NoC)之類的高級互連來提供通信。
SoC 100還可以包括輸入/輸出模塊(未示出)用于與SoC外部的資源(諸如時鐘118和穩(wěn)壓器120)通信。SOC外部的資源(例如,時鐘118、穩(wěn)壓器120)可以由兩個或更多內(nèi)部SOC處理器/內(nèi)核(例如,DSP 102、調制解調器處理器104、圖形處理器106、應用處理器108等等)來共享。
除了上面討論的SOC 100,各個方面可以實現(xiàn)在很多不同計算系統(tǒng)中,該計算系統(tǒng)可以包括多個處理器、多核處理器或它們的任何組合。
圖2示出可以用于實現(xiàn)各個方面的示例性多核處理器架構。多核處理器202可以包括非??拷?例如在單個基底、管芯(die)、集成芯片等上)的兩個或更多獨立處理內(nèi)核204、206、230、232。處理內(nèi)核204、206、230、232的接近性允許存儲器以比如果信號不得不經(jīng)過芯片之外的可能頻率/時鐘速率高得多的頻率/時鐘速率來操作。處理內(nèi)核204、206、230、232的接近性允許對片上存儲器和資源(例如,電壓軌)的共享,以及內(nèi)核之間更協(xié)調的協(xié)作。盡管圖2中示出了四個處理內(nèi)核,但是應該了解的是,這并不是一個限制,多核處理器可以包括更多或更少的處理內(nèi)核。
該多核處理器202可以包括多級緩存,該多級緩存包括1級(L1)緩存212、214、238和240以及2級(L2)緩存216、226和242。多核處理器202還可以包括總線/互連接口218、主存儲器220和輸入/輸出模塊222。L2緩存216、226、242可以比L1緩存212、214、238、240更大(和更慢),但是比主存儲器單元220更小(并且大體上更快)。每個處理內(nèi)核204、206、230、232可以包括具有到L1緩存212、214、238、240的私有訪問的處理單元208、210、234、236。處理內(nèi)核204、206、230、232可以共享到L2緩存(例如,L2緩存242)的訪問,或者可以具有到獨立L2緩存(例如,L2緩存216、226)的訪問。
L1和L2緩存可以用于存儲被處理單元頻繁訪問的數(shù)據(jù),而主存儲器220可以用于存儲被處理內(nèi)核204、206、230、232訪問的更大的文件和數(shù)據(jù)單元。多核處理器202可以被配置為使得處理內(nèi)核204、206、230、232按照首先查詢L1緩存,然后L2緩存以及然后如果信息沒有被存儲在緩存中則查詢主存儲器的順序從存儲器尋找數(shù)據(jù)。如果該信息沒有被存儲在緩存或主存儲器220中,則多核處理器202可以從外部存儲器和/或硬盤存儲器224尋找信息。
處理內(nèi)核204、206、230、232可以經(jīng)由總線/互連接口218彼此之間進行通信。每個處理內(nèi)核204、206、230、232可以具有對一些資源的獨有控制,也可以與其它內(nèi)核共享其它資源。
處理內(nèi)核204、206、230、232可以彼此之間是相同的、是異構的和/或實現(xiàn)不同專用功能的。因此,處理內(nèi)核204、206、230、232不需要對稱,無論是從操作系統(tǒng)的角度(例如,可以執(zhí)行不同的操作系統(tǒng))還是從硬件角度(例如,可以實現(xiàn)不同的指令集/架構)。
諸如上面參考圖1和圖2所討論的那些多處理器硬件設計可以包括同一個包裝內(nèi)的多個不同能力的處理內(nèi)核,通常也是在同一片硅片上的。對稱多處理硬件包括連接到由單個操作系統(tǒng)控制的單個共享主存儲器的兩個或更多相同處理器。不對稱或“松散耦合的”多處理硬件可以包括每一個可以是由獨立操作系統(tǒng)控制并且連接到一個或多個共享存儲器/資源的兩個或更多異構處理器/內(nèi)核。
圖3是示出了管理處理器設備功耗的方面方法300的過程流圖。在塊302中,處理器可以確定被調度用于在多核處理器的各個處理內(nèi)核(例如,圖2中示出的處理內(nèi)核204、206、230、232)中執(zhí)行的多個線程中的每一個線程的線程執(zhí)行度量。該線程執(zhí)行度量可以包括,例如緩存未命中率、同步操作率、一種或多種類型的指令的執(zhí)行率或其它線程執(zhí)行度量。
術語“緩存未命中”指的是從緩存存儲器讀取或寫入數(shù)據(jù)單元的失敗嘗試,需要從系統(tǒng)存儲器(例如,主存儲器220)來訪問數(shù)據(jù),這比當數(shù)據(jù)處于緩存中時需要更多的時間來完成。例如,由處理內(nèi)核204的處理單元208處理的線程可以嘗試從L1緩存212取回數(shù)據(jù)或指令。當該數(shù)據(jù)或指令無法從L1緩存212獲得時,可以從另一個緩存(諸如L2緩存216)或者從主存儲器220取回該數(shù)據(jù)或指令。主存儲器訪問尤其大幅度地慢于緩存訪問,因此從主存儲器220取回數(shù)據(jù)或指令對該線程的處理引入時延。由于從主存儲器220取回數(shù)據(jù)或指令的延遲,該處理內(nèi)核可以進入等待狀態(tài)同時該主存儲器訪問繼續(xù)進行,在此期間不會執(zhí)行額外的處理。如果一個線程包括很多非緩存讀取或寫入操作,則該處理內(nèi)核會頻繁地進入等待狀態(tài),因此減慢該內(nèi)核的整體處理性能。
在各個方面,由處理器在塊302中針對每個線程計算出的緩存未命中率可以是在執(zhí)行線程時將會發(fā)生的在緩存中讀取或寫入數(shù)據(jù)的失敗嘗試的數(shù)量。可以在塊302中計算的緩存未命中率也可以是在基于在緩存中讀取或寫入數(shù)據(jù)的失敗嘗試將會在該線程執(zhí)行期間發(fā)生的主存儲器訪問的次數(shù)。在塊302中計算的緩存未命中率還可以是作為針對該線程的非緩存存儲器執(zhí)行而執(zhí)行的數(shù)據(jù)或指令讀取和寫入操作的結果,處理器內(nèi)核將會進入等待狀態(tài)的次數(shù)。一個線程的緩存未命中率可以在塊302中計算為每一單位時間的緩存未命中平均次數(shù)和/或每一單位時間的合計次數(shù)。該緩存未命中率還可以在塊302中計算為每一單位時間的平均數(shù)量和/或每一單位時間的平均數(shù)量的標準偏差。其它緩存未命中計算也是可能的,包括上述的組合。
術語“同步操作”指的是可以執(zhí)行的使得兩個或更多處理器能夠,例如在公共數(shù)據(jù)結構集合上或者使用共享的應用代碼片段來執(zhí)行指令而不干擾另一處理器的處理操作,或者沒有由于用于執(zhí)行指令集合的處理或其它資源的臨時不可用性而造成對該指令集合的執(zhí)行的延遲的操作。同步操作可以是基于競爭的,使得對同步操作的執(zhí)行率的上升可能向處理器性能引入時延。由處理器在塊302中計算出的同步操作率可以包括自旋鎖的數(shù)量、等待所請求的共享資源的時間段、鎖定指令的數(shù)量和同步指令執(zhí)行率中的至少一項。
術語“指令類型”指的是可以根據(jù)指定的操作類型分類的指令,諸如浮點指令、向量指令、存儲器指令率或另一種類型的指令。每個指令類型可能在用于執(zhí)行的處理器和/或資源需求的程度上有差異,并且對某些指令類型的執(zhí)行率的增加可能向處理器性能引入時延。處理器在塊302中計算出的指令類型率可以包括浮點指令率、向量指令率和存儲器指令率中的至少一項。
在塊304中,一個處理器可以將其線程執(zhí)行度量滿足門限的那些線程分配給選擇的處理內(nèi)核。可以滿足該門限的該線程執(zhí)行度量的值可以依賴于所考慮的線程執(zhí)行度量的類型。在各個方面,根據(jù)特定度量,當線程執(zhí)行度量低于門限、高于門限、小于或等于門限、大于或等于門限或者等于門限時,該線程執(zhí)行度量可以滿足該門限。換句話說,該門限可以是上邊界或下邊界。在一些方面,可以使用兩個(或更多)門限,諸如以便確定線程執(zhí)行度量是否高于第一門限、低于第二門限或者在第一門限和第二門限之間。
舉個例子,線程執(zhí)行度量可以是緩存未命中率,并且可以將那些將執(zhí)行多于門限數(shù)量的針對非緩存存儲器的讀/寫操作的線程分配給一個或幾個內(nèi)核。以此方式,那些將在頻繁地使處理內(nèi)核置于等待狀態(tài)時來從非緩存存儲器訪問數(shù)據(jù)或向其寫入數(shù)據(jù)的線程可以被分配給一個或幾個內(nèi)核,于是這些內(nèi)核可以以更低的頻率來操作以節(jié)省功率。塊304中的該過程還可以將剩余的主要向緩存存儲器寫入或從其讀取并且因此會更少地將該處理內(nèi)核置于等待狀態(tài)的線程分配給其它處理內(nèi)核,于是這些內(nèi)核可以以更高的頻率來操作以改善性能。
再舉一個例子,線程執(zhí)行度量可以包括同步操作,并且當處理器執(zhí)行門限率的同步操作時,可以將那些可能觸發(fā)同步操作的執(zhí)行的線程分配給一個或幾個內(nèi)核,于是這些內(nèi)核可以以更低的頻率來操作。
再舉一個例子,線程執(zhí)行度量可以包括指令類型率,并且當該處理器執(zhí)行門限率的一個或多個特定指令類型時,可以將那些一個或幾個特定指令類型的線程分配給一個或幾個內(nèi)核,于是這些內(nèi)核可以以更低的頻率來操作。
基于確定的線程執(zhí)行度量,處理器可以在塊304中將每個線程分配給(即,指派或調度)一個或一組處理內(nèi)核。當多于一個線程的線程執(zhí)行度量滿足門限時,可以將這些線程中的每一個線程分配給相同的處理內(nèi)核。
在一個方面,線程可以被串行地分配給所選擇的處理內(nèi)核。換句話說,當確定一個線程的線程執(zhí)行度量滿足門限時,該線程可以被分配給所選擇的處理內(nèi)核。在另一個方面,線程可以在最小或門限數(shù)量的線程的線程執(zhí)行度量滿足該門限時被分配給所選擇的處理內(nèi)核。
在塊306中,處理器可以降低被選擇用于執(zhí)行具有滿足門限的線程執(zhí)行度量的線程的處理內(nèi)核的頻率,以便減少所選擇的處理內(nèi)核的功耗。例如,可以使用諸如動態(tài)電壓和頻率縮放、動態(tài)時鐘和電壓縮放和類似的功率減少技術之類的動態(tài)功率減少技術來降低所選擇的處理內(nèi)核的操作頻率。在一個方面,所選擇的處理內(nèi)核的操作頻率可以被降低到基于被分配給所選擇的處理內(nèi)核的線程的線程執(zhí)行度量的水平。例如,線程執(zhí)行度量越高,所選擇的處理內(nèi)核的頻率可以越低。處理器可以周期性地重復方法300以便動態(tài)地重新確定一個或多個處理內(nèi)核中的線程的線程執(zhí)行度量。
圖4是示出通過基于線程執(zhí)行度量向處理內(nèi)核分配線程來管理處理器設備功耗的另一方面方法400的過程流圖。在塊302中,處理器可以如上參考圖3所描述的確定被調度用于在多個處理內(nèi)核中的一個處理內(nèi)核中執(zhí)行的多個線程中的每一個線程的線程執(zhí)行度量。
在塊404中,處理器可以將其線程執(zhí)行度量滿足門限的那些線程關聯(lián)為一個組。例如,可以將每個線程的線程執(zhí)行度量與門限線程執(zhí)行度量進行比較。在一個方面,當一個線程的線程執(zhí)行度量滿足該門限時,該線程可以被分配到該組。當多于一個線程的線程執(zhí)行度量滿足門限時,這些線程中的每一個線程被分配到同一組。該線程組可以以高延遲或低效率(例如,高緩存未命中率),并且因此的高比率地將處理內(nèi)核置于等待狀態(tài)為特征。
在塊406中,處理器可以將其線程執(zhí)行度量滿足門限的線程組分配給所選擇的處理內(nèi)核?;诖_定的線程執(zhí)行度量,該組可以被分配(即,該組中的每個線程可以被指派或調度)給所選擇的處理內(nèi)核。在一個方面,當該組中的每個線程的線程執(zhí)行度量滿足門限時,該線程可以被分配給所選擇的處理內(nèi)核。該線程組的線程執(zhí)行度量還可以基于被分配到該組的線程的平均(average)線程執(zhí)行度量(例如,平均緩存未命中率、平均同步操作率或者平均指令類型率)、被分配到該組的線程的均值(mean)線程執(zhí)行度量(例如,均值緩存未命中率、均值同步操作率或均值指令類型率)、根據(jù)被分配到該組的線程的均值線程執(zhí)行度量的標準偏差(例如,根據(jù)均值緩存未命中率、均值同步操作率或均值指令類型率的標準偏差),以及被分配到該組的線程的聚合線程執(zhí)行度量(例如,聚合的緩存未命中率、同步操作率或指令類型率)來確定。其它示例也是可能的,包括上述的組合。
在塊408中,處理器可以降低所選擇處理內(nèi)核的頻率,以減少所選擇處理內(nèi)核的功耗。在一些方面,可以使用諸如動態(tài)電壓和頻率縮放、動態(tài)時鐘和電壓縮放或另種類似的功率降低技術之類的動態(tài)功率降低技術來降低所選擇處理內(nèi)核的操作頻率。在一個方面,可以基于被分配給處理內(nèi)核的那些線程的線程執(zhí)行度量來確定針對所選擇的處理內(nèi)核的線程執(zhí)行度量的特性,并且可以基于該線程執(zhí)行度量的特性來降低所選擇的處理內(nèi)核的操作頻率。例如,緩存未命中率的特性可以包括被分配給所選擇的處理內(nèi)核的線程(或者被分配給該處理內(nèi)核的該組)的平均緩存未命中率、被分配給所選擇的處理內(nèi)核的線程的均值緩存未命中率、根據(jù)被分配給所選擇的處理內(nèi)核的線程的均值緩存未命中率的標準偏差和被分配給所選擇的處理內(nèi)核的線程的聚合緩存未命中率之一。在其它示例中,除了緩存未命中率特性或替代于緩存未命中率特性,可以類似地確定同步操作率特性和/或指令類型率特性。
可以基于相對于確定的線程執(zhí)行度量的特性的關系來降低處理內(nèi)核的操作頻率,諸如通過將操作頻率與確定的線程執(zhí)行度量的特性成比例地降低、基于確定的線程執(zhí)行度量的特性和操作頻率之間的比率、基于確定的線程執(zhí)行度量的特性來計算頻率降低因子,或者使用另一種基于確定的線程執(zhí)行度量的特性來計算操作頻率的降低的方法。處理器可以周期性地重復方法400以便動態(tài)地重新確定所選擇的處理內(nèi)核的和/或一個或多個處理內(nèi)核中的線程的線程執(zhí)行度量的特性。
圖5是示出管理處理器設備功耗的另一方面方法500的過程流圖。在塊302中,處理器可以如上參考圖3描述地確定被調度用于在處理內(nèi)核中執(zhí)行的多個線程中的每一個線程的線程執(zhí)行度量。
在塊404中,處理器可以如上參考圖4所描述地將其線程執(zhí)行度量滿足門限的那些線程關聯(lián)為第一組??梢酝ㄟ^將每個線程的標識符與第一組標識符關聯(lián)來將線程關聯(lián)為該第一組。
在塊506中,處理器可以將其線程執(zhí)行度量不滿足該門限的那些線程關聯(lián)為第二組。可以通過將每個線程的標識符與第二組標識符關聯(lián)來將這些線程關聯(lián)為該第二組。
在塊508中,處理器可以將第一組中的線程(例如,其線程執(zhí)行度量滿足緩存未命中率門限的那些線程)分配給選擇的第一處理內(nèi)核。基于確定的線程執(zhí)行度量,該組可以被分配(即,該組中的每個線程可以被指派或調度)給所選擇的處理內(nèi)核。在一個方面,當該組中的每個線程的線程執(zhí)行度量滿足該門限時,該組的線程可以被分配給所選擇的處理內(nèi)核。該線程組的線程執(zhí)行度量還可以基于分配給該組的線程的平均線程執(zhí)行度量、分配給該組的線程的均值線程執(zhí)行度量、根據(jù)被分配給該組的線程的均值線程執(zhí)行度量的標準偏差和被分配給該組的線程的聚合線程執(zhí)行度量來確定。其它示例也是可能的,包括上述的組合??梢曰诰€程標識符,或基于用于指示一個線程已經(jīng)被關聯(lián)為第一組的組標識符來將線程分配給所選擇的處理內(nèi)核。
在塊510中,處理器可以將第二組內(nèi)的線程(即,其線程執(zhí)行度量不滿足門限線程執(zhí)行度量的那些線程)分配給所選擇的第二處理內(nèi)核。該第二組的線程可以是基于線程標識符,或者基于用于指示一個線程已經(jīng)被關聯(lián)為該第二組的組標識符來分配給該第二處理內(nèi)核的。
在塊512中,處理器可以基于被分配給第一組的那些線程的線程執(zhí)行度量來確定該第一處理內(nèi)核的線程執(zhí)行度量的特性。該線程執(zhí)行度量的特性可以包括緩存未命中率特性、同步操作率特性和指令類型率特性中的一項或多項。在各個方面,該緩存未命中率特性可以包括分配給所選擇處理內(nèi)核的線程(或分配給該處理內(nèi)核的該組)的平均緩存未命中率、分配給所選擇的處理內(nèi)核的線程的均值緩存未命中率、根據(jù)被分配給所選擇的處理內(nèi)核的線程的均值緩存未命中率的標準偏差和分配給所選擇的處理內(nèi)核的線程的聚合緩存未命中率之一。額外或者替代地,該同步操作率特性可以包括被分配給所選擇處理內(nèi)核的線程(或被分配給該處理內(nèi)核的該組)的平均同步操作率、分配給所選擇的處理內(nèi)核的線程的均值同步操作率、根據(jù)被分配給所選擇的處理內(nèi)核的線程的均值同步操作率的標準偏差和分配給所選擇的處理內(nèi)核的線程的聚合同步操作率之一。額外或者替代地,該指令類型率特性可以包括被分配給所選擇處理內(nèi)核的線程(或分配給該處理內(nèi)核的該組)的平均指令類型率、分配給所選擇的處理內(nèi)核的線程的均值指令類型率、根據(jù)被分配給所選擇的處理內(nèi)核的線程的均值指令類型率的標準偏差和被分配給所選擇的處理內(nèi)核的線程的聚合指令類型率之一。
在塊514中,處理器可以降低該第一處理內(nèi)核的操作頻率以減少所選擇處理內(nèi)核的功耗??梢曰谙鄬τ诖_定的線程執(zhí)行度量的特性的關系來降低該第一處理內(nèi)核的操作頻率。例如,可以基于確定的該線程執(zhí)行度量的特性,基于確定的該線程執(zhí)行度量的特性和操作頻率之間的比率,通過基于確定的該線程執(zhí)行度量的特性來計算頻率降低因子,或者通過另一種基于確定的該線程執(zhí)行度量的特性來計算操作頻率的降低的方法,來確定第一處理內(nèi)核的操作頻率。在各個方面,可以使用諸如動態(tài)電壓和頻率縮放、動態(tài)時鐘和電壓縮放或另一種類似的功率降低技術之類的動態(tài)功率降低技術來降低所選擇處理內(nèi)核的操作頻率。如上所討論的,因為針對非緩存存儲器的大量讀/寫操作的時延將會主要決定該內(nèi)核的處理性能,所以可以在不顯著影響整體性能的情況下來降低該第一處理內(nèi)核的頻率。
在可選塊516中,處理器可以增加第二處理內(nèi)核的頻率以便增加其線程執(zhí)行度量不滿足該門限的那些線程的處理速度。其線程執(zhí)行度量不滿足該門限的那些線程可以被確定更高效地使用第二處理器的處理資源,例如通過向第二處理器引入更少的延遲,或者通過要求更少的主存儲器訪問,從而使該第二處理器比該第一處理器相對更少地進入等待狀態(tài)。盡管增加該第二處理器的操作頻率可能增加其功耗,但是系統(tǒng)的整體效率可以通過第二處理器的更高效的使用而增加。在一些方面,可以使用諸如動態(tài)電壓和頻率縮放、動態(tài)時鐘和電壓縮放和類似技術之類的動態(tài)功率降低技術來增加所選擇的處理內(nèi)核的操作頻率。
線程還可以隨著它們的線程執(zhí)行度量的改變而被重新分類和/或重新關聯(lián)為不同的組,諸如在系統(tǒng)存儲器訪問序列或操作序列之后。在可選的判定塊518中,處理器可以判斷初始與第一組相關聯(lián)的線程的未決操作的線程執(zhí)行度量是否不再滿足門限緩存未命中率。這可以發(fā)生在,例如線程的未決操作將會在先前從系統(tǒng)存儲器獲得的數(shù)據(jù)上執(zhí)行時。在這種情況中,在具有高緩存未命中率的操作序列從系統(tǒng)存儲器獲取數(shù)據(jù)之后,一個線程可以轉變?yōu)閳?zhí)行主要依賴于緩存讀和寫操作的操作,使得由線程要求的數(shù)據(jù)或指令可以在系統(tǒng)存儲器調用序列之后的一段時間內(nèi)在一個或多個緩存中可用,在該系統(tǒng)存儲器調用序列期間該線程表現(xiàn)為高緩存未命中率并且該線程是由第一處理內(nèi)核執(zhí)行的。
當處理器確定分配給第一處理內(nèi)核的線程的線程執(zhí)行度量不再滿足該門限(即,可選判定塊518=“是”)時,該處理器可以將該線程與第二組關聯(lián),并且因此可以在可選塊520中將該線程分配給該第二處理內(nèi)核,這樣該未決操作可以被以更高的處理頻率來執(zhí)行。如果該第一組中沒有線程不再滿足該線程執(zhí)行度量(即,可選判定塊518=“否”),則該處理器可以不分配任何線程,并且可以周期性地重復方法500的操作。
處理器可以周期性地重復方法500的操作以便動態(tài)地重新確定所選擇處理內(nèi)核和/或在一個或多個處理內(nèi)核中的線程的線程執(zhí)行度量特性。隨著線程執(zhí)行來動態(tài)地重新評估并向組或處理器內(nèi)核重新分配線程可能是有益的,因為線程中的未決操作的線程執(zhí)行度量可能隨著時間改變。如上關于可選判定塊518所討論的,一個線程可能初始地具有滿足門限的線程執(zhí)行度量,因為其從系統(tǒng)存儲器獲取數(shù)據(jù),但是可能由于從事于獲得的數(shù)據(jù)的操作序列而具有不滿足該門限的線程執(zhí)行度量。類似地,初始地具有不滿足門限的線程執(zhí)行度量并且因此與第二組相關聯(lián)的線程可以在向系統(tǒng)存儲器或顯示器緩存寫入操作結果時轉變?yōu)闈M足門限的線程執(zhí)行度量。
圖6是示出管理處理器設備功耗的另一方面方法600的過程流圖。在塊302中,處理器可以如上參考圖3描述的確定被調度用于在處理內(nèi)核中執(zhí)行的多個線程中的每一個線程的線程執(zhí)行度量。
在塊604中,處理器可以將其線程執(zhí)行度量滿足第一門限的那些線程分配或指派給第一處理內(nèi)核用于執(zhí)行。在一個方面,每個線程的線程執(zhí)行度量可以被獨立地考慮。在一個方面,還可以基于被分配到該組的線程的平均線程執(zhí)行度量、被分配到該組的線程的均值線程執(zhí)行度量、根據(jù)被分配到該組的線程的均值線程執(zhí)行度量的標準偏差和被分配到該組的線程的聚合線程執(zhí)行度量,來確定線程組的線程執(zhí)行度量。其它線程執(zhí)行度量也是可能的,包括上述的組合。
在塊606中,處理器可以將其線程執(zhí)行度量不滿足該第一門限的那些線程分配給所選擇的第二處理內(nèi)核。在塊608中,處理器可以將其線程執(zhí)行度量滿足第二門限但是不滿足該第一門限的那些線程分配給多個處理內(nèi)核中的第三處理內(nèi)核。在一個方面,該第一門限可以對應于高于該第二門限的線程執(zhí)行度量。在一個方面,多于兩個門限可以被用于向一個或多個處理器分配線程,這可以提供更細粒度的線程的線程執(zhí)行度量的評估。此外,盡管為了解釋說明的清楚,塊604、606和608是以特定序列描述的,但是可以以任何順序來執(zhí)行或大體上同時執(zhí)行塊604、606和608。
在塊610中,處理器可以降低該第一處理內(nèi)核的操作頻率以減少所選擇的處理內(nèi)核的功耗。該第一處理內(nèi)核的操作頻率可以是基于確定的與分配給該第一處理內(nèi)核的線程相關聯(lián)的線程執(zhí)行度量的特性來降低的。如上所討論的,因為針對非緩存存儲器的大量讀/寫操作的時延將會主要決定該內(nèi)核的處理性能,所以可以在不顯著地影響整體性能的情況下來降低該第一處理內(nèi)核的頻率。
在可選塊612中,處理器可以增加第二處理內(nèi)核的頻率以便增加其線程執(zhí)行度量不滿足該門限的那些線程的處理速度。其線程執(zhí)行度量不滿足該第一門限的那些線程可以被確定用于更高效地使用第二處理器的處理資源,例如通過向第二處理器引入更少的延遲,或者通過要求更少的主存儲器訪問,從而使第二處理器比第一處理器相對更少地進入等待狀態(tài)。在各個方面,可以使用諸如動態(tài)電壓和頻率縮放、動態(tài)時鐘和電壓縮放和類似技術之類的動態(tài)功率降低技術,來增加所選擇的處理內(nèi)核的操作頻率。
在可選塊614中,處理器可以將第三處理內(nèi)核的頻率調整為第一處理內(nèi)核和第二處理內(nèi)核的頻率之間的頻率??梢曰诖_定的與分配給第三處理內(nèi)核的線程相關聯(lián)的線程執(zhí)行度量的特性,以及還可以基于第一處理內(nèi)核和第二處理內(nèi)核的頻率,來調整第一處理內(nèi)核的操作頻率。
線程還可以隨著它們的線程執(zhí)行度量的改變而被重新分配給不同的處理內(nèi)核,諸如在系統(tǒng)存儲器訪問序列或操作序列之后。在可選判定塊618中,處理器可以判斷被分配給第一處理內(nèi)核、第二處理內(nèi)核或第三處理內(nèi)核的線程的線程執(zhí)行度量是否已經(jīng)關于第一門限和/或第二門限發(fā)生改變。當處理器確定被分配給處理內(nèi)核的線程的線程執(zhí)行度量已經(jīng)關于第一門限和/或第二門限發(fā)生改變時(即,可選判定塊618=“是”),處理器可以根據(jù)其改變的執(zhí)行度量和第一門限和/或第二門限在可選塊620中將該線程分配給不同的處理內(nèi)核。如果所有線程都沒有關于第一門限和/或第二門限發(fā)生改變(即,可選判定塊618=“否”),則處理器可以不重新分配任何線程。
處理器可以周期性地重復方法600的操作,以便通過動態(tài)地重新確定所選擇處理內(nèi)核和/或在一個或多個處理內(nèi)核中的線程的線程執(zhí)行度量特性,來重新評估并向組或處理器內(nèi)核重新分配線程。隨著線程執(zhí)行來動態(tài)地重新評估并向組或處理器內(nèi)核重新分配線程可能是有益的,因為線程中的未決操作的線程執(zhí)行度量可能隨著時間改變。如上關于可選判定塊618所討論的,一個線程可能初始地具有滿足門限的線程執(zhí)行度量(例如,由于其從系統(tǒng)存儲器獲取數(shù)據(jù),或者需要某一水平的處理資源),但是可能由于例如從事于獲取的數(shù)據(jù),或者要求不同水平的處理資源的操作序列而具有不滿足該門限的線程執(zhí)行度量。
各個方面可以實現(xiàn)在各種不同移動計算設備上,它的一個示例在圖7中示出。更具體地,圖7是適合與任何方面一起使用的以智能電話/蜂窩(cell)手機700的形式的移動收發(fā)機設備的系統(tǒng)框圖。蜂窩手機700可以包括耦合到內(nèi)部存儲器702、顯示器703和揚聲器708的處理器701。另外,蜂窩手機700可以包括天線704,其用于發(fā)送和接收可以連接到無線數(shù)據(jù)鏈路和/或耦合到處理器701的蜂窩電話收發(fā)機705的電磁輻射。蜂窩手機700典型地還包括用于接收用戶輸入的菜單選擇按鈕或搖桿式開關706。
典型的蜂窩手機700還包括聲音編碼/解碼(CODEC)電路713,它將從麥克風接收到的聲音數(shù)字化為適合于無線傳輸?shù)臄?shù)據(jù)分組并且解碼接收到的聲音數(shù)據(jù)分組以生成提供給揚聲器708用于生成聲音的模擬信號。并且,處理器701、無線收發(fā)機705和CODEC 713中的一個或多個可以包括數(shù)字信號處理器(DSP)電路(未單獨示出)。蜂窩手機700還可以包括用于無線設備之間的低功率短距離通信的ZigBee收發(fā)機(即,IEEE 802.15.4收發(fā)機)713,或者其它類似的通信電路(例如,用于實現(xiàn)或WiFi協(xié)議的電路等等)。
各個方面可以實現(xiàn)在各種不同商業(yè)可用服務器設備的任何一個上,諸如圖8中示出的服務器800。該服務器800典型地包括耦合到易失性存儲器802和大容量非易失性存儲器(諸如硬盤驅動器)803的處理器801。該服務器800還可以包括耦合到處理器801的軟盤驅動器、壓縮盤(CD)或DVD盤驅動器811。服務器800還可以包括耦合到處理器801用于與網(wǎng)絡805(諸如耦合到其它通信系統(tǒng)計算機和服務器的局域網(wǎng))建立數(shù)據(jù)連接的網(wǎng)絡接入端口806。
其它形式的計算設備也可以從各個方面受益。這些計算設備典型地包括圖9中示出的組件,其顯示為示例性個人膝上型計算機900。該個人計算機900一般包括耦合到易失性存儲器902和大容量非易失性存儲器(諸如硬盤驅動器)903的處理器901。該計算機900還可以包括耦合到處理器901的壓縮盤(CD)和/或DVD驅動器904。該計算機設備900還可以包括耦合到處理器901用于建立數(shù)據(jù)連接或接收外部存儲器設備的多個連接器端口,諸如用于將處理器901耦合到網(wǎng)絡的網(wǎng)絡連接電路905。該計算機900還可以耦合到計算機領域內(nèi)眾所周知的鍵盤908、諸如鼠標910之類的點擊設備和顯示器909。
處理器701、801、901可以是任何能夠由軟件指令(應用)配置為執(zhí)行各種不同功能(包括下面描述的各個方面的功能)的可編程微處理器、微計算機或多個處理器芯片。在一些移動設備中,可以提供多個處理器801,諸如專用于無線通信功能的一個處理器和專用于運行其它應用的一個處理器。典型的,軟件應用可以在它們被訪問或加載到處理器701、801、901之前被存儲在內(nèi)部存儲器702、802、902中。該處理器701、801、901可以包括足夠存儲該應用軟件指令的內(nèi)部存儲器。
各個方面可以實現(xiàn)在任何數(shù)量的單個或多個處理器系統(tǒng)中。一般來講,進程在很短時間片段內(nèi)運行在處理器上,這樣看起來多個進程同時運行在單個處理器上。當進程在一個時間片段結束時被從處理器移除時,關于該進程的當前操作狀態(tài)的信息被保存在存儲器中,這樣當該進程返回在該處理器上執(zhí)行時可以無縫地恢復其操作。該操作狀態(tài)數(shù)據(jù)可以包括該進程的地址空間、??臻g、虛擬地址空間、寄存器集合鏡像(例如,程序計數(shù)器、棧指針、指令寄存器、程序狀態(tài)字等待)、賬戶信息、許可、訪問限制和狀態(tài)信息。
一個進程可以再生其它進程,并且再生的進程(即,子進程)可以繼承該再生進程(即,父進程)的一些許可和訪問限制(即,上下文)。一個進程可以是包括多個輕量級進程或線程的重量級進程,它們是將其上下文(例如,地址空間、棧、許可和/或訪問限制等等)的全部或一部分與其它進程/線程共享的進程。因此,單個進程可以包括共享、具有到單個上下文(即,處理器的上下文)的訪問和/或在其內(nèi)操作的多個輕量級進程或線程。
上述方法描述和過程流程圖僅僅作為示例性示例提供,而并不意在要求或暗示各個方面的塊必須以示出的順序執(zhí)行。本領域的技術人員應該了解的是,上述方面中的塊的順序可以用任何順序執(zhí)行。諸如“之后”、“于是”、“接下來”等詞語并不意在限制塊的順序;這些詞語僅僅用于貫穿方法描述引導讀者。此外,任何以單數(shù)形式對聲明單元的引用,例如使用冠詞“一(a)”、“一(an)”或“該(the)”并不是要解釋為將該單元限制為單數(shù)。
盡管上面描述為當一個值大于或等于一個門限時滿足該門限,但是應該了解的是,這不是一個限制,并且在一些方面,當一個值超過該門限時可以滿足該門限,而在該值小于或等于該門限時不滿足該門限。
結合本申請中公開的方面所描述的各種示例性邏輯框、模塊、電路和算法塊可以實現(xiàn)成電子硬件、計算機軟件或其組合。為了清楚地示出硬件和軟件之間的可交換性,上面對各種示例性組件、方框、模塊、電路和塊已經(jīng)圍繞其功能進行了總體描述。至于這種功能是實現(xiàn)成硬件還是實現(xiàn)成軟件,取決于特定的應用和對整個系統(tǒng)所施加的設計約束。熟練的技術人員可以針對每個特定應用,以變通的方式實現(xiàn)所描述的功能,但是,這種實現(xiàn)決策不應被解釋為使得背離本發(fā)明的范圍。
可以用被設計用于執(zhí)行本文所述功能的通用處理器、數(shù)字信號處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)或其它可編程邏輯設備、分立門或者晶體管邏輯器件、分立硬件組件或者其任意組合,來實現(xiàn)或執(zhí)行用于實現(xiàn)結合本文公開方面描述的各種示例性邏輯、邏輯塊、模塊和電路的硬件。通用處理器可以是微處理器,或者,該處理器也可以是任何常規(guī)的處理器、控制器、微控制器或者狀態(tài)機。處理器還可以實現(xiàn)為計算設備的組合,例如,DSP和微處理器的組合、多個微處理器、與DSP內(nèi)核結合的一個或多個微處理器,或者任何其它此種結構。另外,可以由專用于給定功能的電路來執(zhí)行一些塊或方法。
在一個或多個示例性方面,所描述的功能可以用硬件、軟件、固件,或其任意結合來實現(xiàn)。如果在軟件中實現(xiàn),則功能可以作為一個或多個指令或代碼存儲在非臨時性計算機可讀介質或非臨時性處理器可讀介質上。本文中公開的方法或算法的步驟可以包含在處理器可執(zhí)行軟件模塊中,其可以駐留在非臨時性計算機可讀或處理器可讀存儲介質上。非臨時性計算機可讀或處理器可讀存儲介質可以是計算機或處理器可訪問的任何存儲介質。舉個例子,但是并不作為限制,該非臨時性計算機可讀或處理器可讀介質可以包括RAM、ROM、EEPROM、閃存、CD-ROM或其它光盤存儲器、磁盤存儲器或其它磁存儲設備,或可以用于以指令或數(shù)據(jù)結構的形式存儲期望的程序代碼并可以由計算機訪問的任何其它介質。本文中所用的磁盤和光盤,包括壓縮盤(CD)、激光盤、光盤、數(shù)字多功能光盤(DVD)、軟盤和藍光盤,其中,磁盤通常磁性地復制數(shù)據(jù),而光盤則用激光光學地復制數(shù)據(jù)。上述的組合也包含在非臨時性計算機可讀和處理器可讀介質的范圍內(nèi)。另外,方法或算法的操作可以作為代碼和/或指令的一個或任何組合或集合存在于非臨時性處理器可讀介質和/或計算機可讀介質上,其可以被合并入計算機程序產(chǎn)品中。
提供前面對公開方面的描述以便使本領域的任何技術人員能夠實施或使用本發(fā)明。對這些方面的修改對于本領域的技術人員來說是顯而易見的,并且本文中定義的一般原則可以在不脫離本發(fā)明的精神或范圍的前提下應用于其它方面。因此,本發(fā)明并不意在限制于本文中示出的方面,而是要符合與下面的權利要求和本文中公開的原則和新穎性特征相一致的最廣范圍。