處理器中的方法,裝置和計算機程序產(chǎn)品的制作方法
【專利摘要】公開了一種方法,在該方法中檢查與線程的指令序列有關(guān)的信息以確定所述線程的安全條件。還通過使用所述安全條件,確定多核處理器中的哪個處理器核心具有滿足所述安全條件的合適的安全模式。如果所述確定指示的是,所述多核處理器中的具有所述合適的安全模式的一個或多個處理器核心是可以使用的,則選擇所述一個或多個處理器核心中的一個處理器核心作為潛在的處理器核心以運行所述線程的所述指令序列。還公開了用于實現(xiàn)所述方法的裝置和計算機程序產(chǎn)品。
【專利說明】處理器中的方法,裝置和計算機程序產(chǎn)品
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及運行多核處理器中的線程的指令序列的方法。本發(fā)明還涉及一種裝置,該裝置包括至少一個處理器和包含計算機程序代碼的至少一個存儲器,該至少一個存儲器和該計算機程序代碼被配置為使用所述至少一個處理器使得所述裝置運行多核處理器中的線程的指令序列。本發(fā)明還涉及計算機程序產(chǎn)品,該計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行該一個或多個指令的一個或多個序列時,該一個或多個指令的一個或多個序列使得裝置至少執(zhí)行以下:運行多核處理器中的線程的指令序列。
【背景技術(shù)】
[0002]這部分旨在提供在權(quán)利要求書中陳述的本發(fā)明的背景或上下文。此處的描述可以包含可以被追求的構(gòu)思,但其不是必須是先前已設(shè)想或追求的構(gòu)思。因此,除非此處另外指出,否則本節(jié)所述的內(nèi)容不是本申請中的說明書和權(quán)利要求書的現(xiàn)有技術(shù),并且不通過包含在本部分中而承認(rèn)其為現(xiàn)有技術(shù)。
[0003]在含有兩個或更多處理器核心的處理器中,即多核處理器,不同的應(yīng)用可以同時由不同的處理器核心來運行。如果所有的處理器核心具有相同的指令集或如果應(yīng)用已經(jīng)被編譯到不同的指令集,則還可能在多核處理器的兩個或更多處理器核心之間共享應(yīng)用的運行。
[0004]多核處理器的不同處理器核心可以實現(xiàn)類似的指令集,或處理器核心中的全部或一些處理器核心可以實現(xiàn)至少部分不同的指令集。當(dāng)處理器核心實現(xiàn)部分不同的指令集時,可能存在重疊的指令集,該重疊的指令集對于處理器核心中的兩個或更多處理器核心而言或甚至對于所有的處理器核心而言是共同的。
【發(fā)明內(nèi)容】
[0005]在下文中,術(shù)語多核處理器涉及具有兩個和更多處理器核心的處理器,以及該核心可以具有類似或不同的指令集。術(shù)語異構(gòu)多核處理器涉及多核處理器,在該多核處理器中,至少一個處理器核心比該多核處理器的另一個處理器核心具有至少部分不同的指令集。在一些實施例中,異構(gòu)多核處理器中的每個處理器核心比其它處理器核心具有至少不同的指令集。在異構(gòu)處理器核心中,在處理器核心中可能存在可以使用的不同類型的安全狀態(tài)(模式)。
[0006]在具有多核處理器的裝置中實現(xiàn)的一些應(yīng)用中,不是總是需要所有可以使用的處理器能力,以及所述多核處理器的處理器核心中的一些處理器核心可以在大多數(shù)時間是空閑的。在另一方面,一些應(yīng)用或一些應(yīng)用的線程可能需要針對運行該線程的一些安全要求。因此,可能需要選擇能夠支持該安全要求的此類處理器核心,或在處理器核心中運行該線程前,能夠?qū)⑻幚砥骱诵牡臓顟B(tài)改變到對應(yīng)于該安全要求的安全狀態(tài)。
[0007]根據(jù)本發(fā)明的一些示例實施例,可以如下來執(zhí)行具有一些安全要求的線程的調(diào)度:
[0008]在沒有運行任何線程的此類處理器核心上調(diào)度線程,以便能夠由該處理器核心滿足它們的安全要求。如果針對選擇處理器核心存在若干可能性,則可以在最接近該安全要求的處理器核心上,但是以滿足該安全要求的方式,來調(diào)度該線程。也就是說,在可能具有更多安全能力但是不小于由該線程所要求的安全能力的此類處理器核心上調(diào)度線程。
[0009]在一個處理器核心上,存在針對在這個處理器核心上的具有相同優(yōu)先級的所有線程的循環(huán)調(diào)度法。如果存在準(zhǔn)備運行的較高優(yōu)先級線程,則不執(zhí)行較低優(yōu)先級的線程。
[0010]當(dāng)在系統(tǒng)上將調(diào)度新線程以及沒有合適的處理器核心空閑時,調(diào)度器嘗試改變空閑處理器核心的安全狀態(tài),以便它滿足該線程的安全要求。如果這是可能的,則改變該處理器核心的狀態(tài),以及在該核心上調(diào)度該線程。如果沒有空閑的處理器核心,則調(diào)度器嘗試改變繁忙處理器核心的安全狀態(tài)以及將正在該處理器核心上運行的線程移動到一個或多個其它處理器核心。如果不能找到針對新線程的合適的處理器核心,則改變處理器核心中的一個處理器核心的安全狀態(tài),以及在此之后,調(diào)度器將進行線程的負(fù)載均衡,以便在該處理器核心上可以更均勻地均衡負(fù)載。
[0011]如果在該系統(tǒng)的處理器核心上沒有以便在該系統(tǒng)上能夠運行處于相同優(yōu)先級水平的所有線程的安全狀態(tài)的組合,則調(diào)度器可以以循環(huán)的方式開始改變處理器核心的安全狀態(tài),以便能夠運行一部分線程,同時其它線程等候輪到它們。
[0012]調(diào)度算法旨在用于異構(gòu)多核處理器系統(tǒng),其中核心具有不同數(shù)目的安全狀態(tài),能夠動態(tài)地改變該安全狀態(tài)。操作系統(tǒng)可以具有針對每個線程的比特向量以描述它的安全要求。
[0013]在一些實施例,以某些類型的代碼塊(連續(xù)的指令集,也稱復(fù)合語句)被包含在該線程的相同片中而不管該線程的該片的長度是否與一個時間片的長度相同還是不同于一個時間片的長度的方式,將線程分成片。在這個上下文中,術(shù)語不可以分割的代碼塊可以用于表示應(yīng)當(dāng)在相同處理器核心內(nèi)運行的以及被包含在線程的相同片中的代碼塊。例如,循環(huán),if聲明,switch聲明等,可以是將被包含在線程的相同片中的此類代碼塊,以便在該片中的整個代碼塊由調(diào)度器已經(jīng)選擇的用于運行該線程的該片的相同處理器核心來運行。
[0014]在一些實施例中,編譯器可以嘗試,以線程的片的長度(以運行時間為單位)盡可能接近于一個時間片的長度的方式,但是這可能不是總是可能的,來生成針對該線程的代碼。
[0015]在運行時間,如果不需要考慮安全問題,則可以以以下方式來執(zhí)行該調(diào)度。在每個時間片的開始,可以重新調(diào)度線程。可以針對該線程的前一個片已經(jīng)結(jié)束的此類線程來執(zhí)行該調(diào)度。線程主要地繼續(xù)地在上一個時間片中它位于的相同處理器(如果在二進制代碼中,它仍然被標(biāo)記為潛在的或最優(yōu)的處理器核心,或如果該線程的該片還沒有結(jié)束)上運行。然而,在下一個時間片期間,該線程可能不總是繼續(xù)運行,而是可以將該線程放入處理器核心的隊列中以等待直到調(diào)度器給予該線程處理時間。如果存在新進程或調(diào)度器確定的是,不同于先前用于該線程的處理器核心的另一個處理器核心是針對該線程的最優(yōu)的處理器核心,則將該線程放入該最優(yōu)處理器核心的隊列中。在將線程已經(jīng)放入它們最優(yōu)的處理器核心的隊列中后,可以存在針對具有超過一個可以應(yīng)用的處理器核心的線程的負(fù)載均衡以優(yōu)化整體負(fù)載情況。可以執(zhí)行這個操作,以便調(diào)查具有最高負(fù)載的第一處理器核心。線程,其具有在最優(yōu)編譯和基本編譯之間的最小運行時間差,被移動到具有最低負(fù)載的處理器核心。該調(diào)度器接著將計算以這種方式該系統(tǒng)的整體吞吐量是否更好。如果否,則可以將該線程移動回到原始的處理器核心。最后步驟是重復(fù)直到?jīng)]有能夠被移動以增加吞吐量的線程,或如果達到結(jié)束優(yōu)化的另一個條件。
[0016]根據(jù)本發(fā)明的第一方面,提供了一種方法,所述方法包括:
[0017]檢查與線程的指令序列有關(guān)的信息以確定所述線程的安全條件;
[0018]通過使用所述安全條件,確定多核處理器中的哪個處理器核心具有滿足所述安全條件的合適的安全模式;
[0019]如果所述確定指示的是,所述多核處理器中的具有所述合適的安全模式的一個或多個處理器核心是可以使用的,則選擇所述一個或多個處理器核心中的一個處理器核心作為潛在的處理器核心以運行所述線程的所述指令序列。
[0020]根據(jù)本發(fā)明的第二面,提供了一種裝置,所述裝置包括處理器和包含計算機程序代碼的存儲器,所述存儲器和所述計算機程序代碼被配置為使用所述處理器使得所述裝置:
[0021]檢查與線程的指令序列有關(guān)的信息以確定所述線程的安全條件;
[0022]通過使用所述安全條件,確定多核處理器中的哪個處理器核心具有滿足所述安全條件的合適的安全模式;
[0023]如果所述確定指示的是,所述多核處理器中的具有所述合適的安全模式的一個或多個處理器核心是可以使用的,則選擇所述一個或多個處理器核心中的一個處理器核心作為潛在的處理器核心以運行第一線程的所述指令序列。
[0024]根據(jù)本發(fā)明的第三面,提供了計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行該一個或多個指令的一個或多個序列時,該一個或多個指令的一個或多個序列使得裝置至少執(zhí)行以下:
[0025]檢查與線程的指令序列有關(guān)的信息以確定所述線程的安全條件;
[0026]通過使用所述安全條件,確定多核處理器中的哪個處理器核心具有滿足所述安全條件的合適的安全模式;
[0027]如果所述確定指示的是,所述多核處理器中的具有所述合適的安全模式的一個或多個處理器核心是可以使用的,則選擇所述一個或多個處理器核心中的一個處理器核心作為潛在的處理器核心以運行第一線程的所述指令序列。
[0028]根據(jù)本發(fā)明的第四方面,提供了一種裝置,所述裝置包括:
[0029]多核處理器,其包括至少第一處理器核心和第二處理器核心;
[0030]第一線程的指令序列,其被配置為在所述多核處理器的處理器核心中被運行;
[0031]檢查單元,其被配置為:
[0032]檢查與線程的指令序列有關(guān)的信息以確定所述線程的安全條件;通過使用所述安全條件,確定多核處理器中的哪個處理器核心具有滿足所述安全條件的合適的安全模式;
[0033]如果所述確定指示的是,所述多核處理器中的具有所述合適的安全模式的一個或多個處理器核心是可以使用的,則選擇所述一個或多個處理器核心中的一個處理器核心作為潛在的處理器核心以運行第一線程的所述指令序列。
[0034]根據(jù)本發(fā)明的第五方面,提供了一種裝置,所述裝置包括:
[0035]用于檢查與線程的指令序列有關(guān)的信息以確定所述線程的安全條件的構(gòu)件;
[0036]用于通過使用所述安全條件,確定多核處理器中的哪個處理器核心具有滿足所述安全條件的合適的安全模式的構(gòu)件;
[0037]用于如果所述確定指示的是,所述多核處理器中的具有所述合適的安全模式的一個或多個處理器核心是可以使用的,則選擇所述一個或多個處理器核心中的一個處理器核心作為潛在的處理器核心以運行第一線程的所述指令序列的構(gòu)件。
【專利附圖】
【附圖說明】
[0038]在以下,將參照附圖更詳細(xì)地描述本發(fā)明,其中:
[0039]圖1描繪了根據(jù)示例實施例的裝置的框圖;
[0040]圖2描繪了多核處理器的處理器核心的一些功能單元的示例;
[0041]圖3描繪了在多核處理器中的多線程的運行的示例;
[0042]圖4描繪了線程表的示例;
[0043]圖5是方法的示例的流程圖;
[0044]圖6還示意性地示出了使用無線和有線網(wǎng)絡(luò)連接來連接的利用本發(fā)明的實施例的電子設(shè)備;
[0045]圖7描繪了根據(jù)本發(fā)明的示例實施例的裝置的示例框圖;
[0046]圖8還示意性地示出了使用無線和有線網(wǎng)絡(luò)連接來連接的利用本發(fā)明的實施例的電子設(shè)備;以及
[0047]圖9還示意性地示出了具有正常模式和不同的安全模式的處理器核心的結(jié)構(gòu)。
【具體實施方式】
[0048]以下進一步詳細(xì)地描述用于提供多核處理器的改進操作的合適的裝置和可能的機制。在這點上,首先參照圖7,圖7示出了適用于利用本發(fā)明的一些實施例的用戶設(shè)備的示例,以及圖8,圖8示出了示例性裝置或電子設(shè)備50的框圖,該示例性裝置或電子設(shè)備50可以并入根據(jù)本發(fā)明的實施例的裝置。
[0049]電子設(shè)備50例如可以是無線通信系統(tǒng)的移動終端或用戶設(shè)備。然而,將理解的是,可以在可以包括多核處理器的任何電子設(shè)備或裝置內(nèi)實現(xiàn)本發(fā)明的實施例。
[0050]電子設(shè)備50可以包括:用于容納和保護該設(shè)備的殼體30。電子設(shè)備50還可以包括以液晶顯示器形式的顯示器32。在本發(fā)明的其它實施例中,顯示器可以是適合于顯示圖像或視頻的任何合適的顯示器技術(shù)。電子設(shè)備50還可以包括小鍵盤34。在本發(fā)明的其它實施例中,可以使用任何合適的數(shù)據(jù)或用戶接口機構(gòu)。例如,用戶接口可以被實現(xiàn)成作為觸摸敏感顯示器的一部分的虛擬鍵盤或數(shù)據(jù)輸入系統(tǒng)。電子設(shè)備可以包括麥克風(fēng)36或任何合適的音頻輸入器,其可以是數(shù)字或模擬信號輸入器。電子設(shè)備50還可以包括音頻輸出設(shè)備,在本發(fā)明的實施例中,所述音頻輸出設(shè)備可以是以下中的任何一個:耳機38、揚聲器、或模擬音頻或數(shù)字音頻輸出連接件。電子設(shè)備50還可包括電池40(或者在本發(fā)明的其它實施例中,可以由任何合適的移動能量設(shè)備,諸如太陽能電池、燃料電池或發(fā)條發(fā)電機,向該設(shè)備提供電力)。電子設(shè)備還可以包括紅外線端口 42以用于至其它設(shè)備的短距視線通信。在其它實施例中,電子設(shè)備50還可以包括任何合適的短距通信解決方案,諸如例如藍牙無線連接或USB/火線有線連接。
[0051]如圖8中示出的,電子設(shè)備50可以包括用于控制電子設(shè)備50的一個或多個控制器56或一個或多個處理器。控制器56可以連接到存儲器58,在本發(fā)明的實施例中,存儲器58可以用戶數(shù)據(jù)和/或其它數(shù)據(jù),和/或還可以存儲用于在控制器56上實現(xiàn)的指令??刂破?6還可以連接到編解碼電路54,該編解碼電路54適用于執(zhí)行對音頻和/或視頻數(shù)據(jù)的編碼和解碼或幫助由控制器56可能執(zhí)行的編碼和解碼。
[0052]電子設(shè)備50還可以包括卡閱讀器48和智能卡46,例如通用集成電路卡(UICC)和通用集成電路卡閱讀器以用于提供用戶信息并且適用于提供用于在網(wǎng)絡(luò)上對用戶進行認(rèn)證和授權(quán)的認(rèn)證信息。
[0053]電子設(shè)備50可以包括:無線電接口電路52,其連接到控制器56并且適用于生成例如用于與蜂窩通信網(wǎng)絡(luò)、無線通信系統(tǒng)和/或無線局域網(wǎng)進行通信的無線通信信號。電子設(shè)備50還可以包括:天線44,其連接到無線電接口電路52以用于將在無線電接口電路52處生成的射頻信號傳送給其它裝置(多個)以及用于接收來自其它裝置(多個)的射頻信號。
[0054]在本發(fā)明的一些實施例中,電子設(shè)備50包括:相機61,其能夠記錄或檢測個體幀,該個體幀然后被運送給用于處理的編解碼器54或控制器。在本發(fā)明的其它實施例中,電子設(shè)備可以在傳輸和/或存儲之前接收來自另一個設(shè)備的用于處理的圖像數(shù)據(jù)。在本發(fā)明的其它實施例中,電子設(shè)備50可以無線地或通過有線連接接收用于處理的圖像。
[0055]參照圖6,示出了系統(tǒng)的示例,在該系統(tǒng)內(nèi)能夠使用本發(fā)明的實施例。系統(tǒng)10包括:多個通信設(shè)備,它們能夠通過一個或多個網(wǎng)絡(luò)進行通信。系統(tǒng)10可以包括有線網(wǎng)絡(luò)或無線網(wǎng)絡(luò)的任何組合,有線網(wǎng)絡(luò)或無線網(wǎng)絡(luò)包括但不限于:無線蜂窩電話網(wǎng)絡(luò)(諸如全球移動通信系統(tǒng)(GSM),通用移動通信系統(tǒng)(UMTS),碼分多址接入(CDMA)網(wǎng)絡(luò)等),無線局域網(wǎng)(WLAN),諸如由電子電氣工程師協(xié)會(IEEE) 802.x標(biāo)準(zhǔn)中的任何標(biāo)準(zhǔn)定義的WLAN,藍牙個域網(wǎng),以太網(wǎng)局域網(wǎng),令牌環(huán)局域網(wǎng),廣域網(wǎng)以及互聯(lián)網(wǎng)。
[0056]系統(tǒng)10可以包含:適用于實現(xiàn)本發(fā)明的實施例的有線和無線通信設(shè)備兩者或電子設(shè)備50。
[0057]例如,在圖6中示出的系統(tǒng)示出了移動電話網(wǎng)絡(luò)11和互聯(lián)網(wǎng)28的表示。至互聯(lián)網(wǎng)28的連通性可以包含但不限于:長距無線連接,短距無線連接,以及各種有線連接,包括但不限于電話線,電纜線,電力線,和類似的通信路徑。
[0058]在系統(tǒng)10中示出的示例性通信設(shè)備可以包含但不限于:電子設(shè)備或裝置50,個人數(shù)字助理(PDA)和移動電話的組合14,PDA 16,集成消息發(fā)送設(shè)備(MD) 18,桌面計算機20,筆記本計算機22。電子設(shè)備50可以是固定的或當(dāng)由移動中的個體攜帶時是移動的。電子設(shè)備50還可以位于任何模式的交通工具中,交通工具包含但不限于汽車、卡車、出租車、公交車、火車、船、飛機、自行車、摩托車或任何類似的合適模式的交通工具。
[0059]一些或其它裝置可以發(fā)送和接收呼叫和消息,并且通過至基站24的無線連接25與服務(wù)提供者通信?;?4可以連接到網(wǎng)絡(luò)服務(wù)器26,其允許移動電話網(wǎng)絡(luò)11和互聯(lián)網(wǎng)28之間的通信。系統(tǒng)可以包含附加的通信設(shè)備和各種類型的通信設(shè)備。
[0060]通信設(shè)備可以使用各種傳輸技術(shù)來通信,各種傳輸技術(shù)包括但不限于:碼分多址接入(CDMA),全球移動通信系統(tǒng)(GSM),通用移動通信系統(tǒng)(UMTS),時分多址接入(TDMA),頻分多址接入(FDMA),傳輸控制協(xié)議-互聯(lián)網(wǎng)協(xié)議(TCP-1P),短消息服務(wù)(SMS),多媒體消息服務(wù)(MMS),電子郵件,即時消息服務(wù)(MS),藍牙,IEEE 802.11和任何類似的無線通信技術(shù)。在實現(xiàn)本發(fā)明的各種實施例中涉及的通信設(shè)備可以使用各種介質(zhì)進行通信,各種介質(zhì)包含但不限于:無線電,紅外線,激光,電纜連接,和任何合適的連接。
[0061]圖1詳細(xì)地描繪了可以使用本發(fā)明的裝置100的示例。裝置100可以是電子設(shè)備50或另一個設(shè)備的一部分。例如,裝置100可以是諸如臺式計算機20的計算設(shè)備的一部分。
[0062]裝置100包括多核處理器102。多核處理器102包括兩個或更多處理器核心104a-104d,以及處理器核心104a_104d中的每個處理器核心能夠同時運行程序代碼。處理器核心104a-104d中的每個處理器核心可以包括:用于處理器核心104的操作的功能單元。在圖2中描繪了多核處理器102的示例實施例。例如,處理器核心可以包括:微碼105,其將程序代碼指令翻譯成處理器核心104a-104d中的電路級操作。微碼是指令和/或表的集合,它們控制處理器核心如何操作。程序代碼指令通常是以已經(jīng)通過由編譯器將高級程序代碼編譯成二進制代碼而獲得的二進制代碼(也稱,機器代碼)的形式。該二進制代碼能夠被存儲在存儲器58中,處理器104的指令提取器106可以從存儲器58提取用于由處理器核心104a-104d運行的指令。所提取的指令可以由指令解碼器107進行解碼,以及可以將解碼的指令提供給處理器核心104a-104d的指令運行器108,指令運行器108運行解碼的指令,即執(zhí)行該指令指示的任務(wù)。在一些實施例中,可能沒有事先編譯高級程序代碼,而是在運行時間可以由解釋器來解釋它。將被編譯的(高級)程序代碼還能夠被稱為源代碼。此外,通過使用將由匯編器編譯的低級指令編寫的程序代碼也可以被稱為源代碼。
[0063]不失一般性,多核處理器的處理器核心中的一個處理器核心能夠被稱為第一處理器核心,另一個處理器核心能夠被稱為第二處理器核心等。還清楚的是,在不同的實施例中,處理器核心的數(shù)目可以不同于四個。例如,處理器核心102可以包括:二、三、五、六、七、八或超過八個處理器核心。在以下中,處理器核心一般通過標(biāo)記104來引用,但是當(dāng)表示某一處理器核心時,出于清楚也可以使用標(biāo)記104a-104d。
[0064]處理器核心104還可以包括:用于存儲數(shù)據(jù)的一組或多組寄存器110。在電路級上,寄存器可以被實現(xiàn)在多核處理器的內(nèi)部存儲器中或?qū)崿F(xiàn)成內(nèi)部寄存器。處理器核心104還可以具有一個或多個接口(總線),該一個或多個接口(總線)用于將處理器核心104與該裝置的其它電路連接??梢蕴峁┮粋€接口以用于接收指令,以及可以提供另一個接口 127以用于讀取和/或?qū)懭霐?shù)據(jù),或它們可以使用相同的接口。也可以有用于提供地址信息的地址接口 128,以便處理器核心104能夠從程序代碼存儲器的正確位置提取指令以及從數(shù)據(jù)存儲器提取數(shù)據(jù)。在一些實施例中,地址接口和數(shù)據(jù)接口可以完全或部分重疊,即相同的線路用于地址線和數(shù)據(jù)線。多核處理器還可以包括通用輸入/輸出接口 129。
[0065]多核處理器102可以使用這些接口與在該多核處理器外部的單元進行通信。例如,多核處理器可以經(jīng)地址接口 128在地址總線138上提供存儲器地址,以及經(jīng)由數(shù)據(jù)接口127在數(shù)據(jù)總線137上提供讀取指令,其中在編址的存儲位置中存儲的信息可以被多核處理器讀取,或可以將數(shù)據(jù)存儲在編址的存儲器位置中。以這種方式,處理器核心104可以從存儲器58讀取指令和數(shù)據(jù),以及將數(shù)據(jù)寫入到存儲器58。
[0066]多核處理器102可以包括針對指令、數(shù)據(jù)和地址的總線130。這些總線可以由處理器核心104a-104d共享,其中每個核心在每個時間點可以訪問一種總線,或可以針對處理器核心中的每個處理器核心提供各自的總線。
[0067]多核處理器102還可以包括:緩存存儲器或多個緩存存儲器以用于存儲最近使用的信息,諸如指令和/或數(shù)據(jù)。緩存存儲器的一些示例是I級(LI)緩存器116、2級(L2)緩存器118和/或3級(L3)緩存器120。在一些實施例中,如圖2中說明的,2級緩存器118和/或3級緩存器120在多核處理器102的外部,然而在一些其它實施例中,它們可以是多核處理器102的一部分。在一些情況下,處理器核心104可以首先檢查由當(dāng)前指令尋址的下一個指令或數(shù)據(jù)是否已經(jīng)在緩存存儲器中存在,以及如果存在,則不需要從該多核處理器102外部的存儲器58來提取該指令或數(shù)據(jù)。這種類型的操作可以加速處理器核心104的處理時間。圖2說明了多核處理器的處理器核心的示例實施例,其中針對處理器核心104提供了一組寄存器110和三個緩存存儲器116、118、120。
[0068]處理器核心104中的一個或多個處理器核心可以包括:其它功能單元FU,諸如算術(shù)邏輯單元(ALU) 124、浮點單元(FPU) 122、指令提取器106、指令解碼器107、指令運行器108、圖像加速器等。處理器核心104中的一個或多個處理器核心還可以包括:L1緩存器116、L2緩存器118和/或L3緩存器120。
[0069]在一些實施例中,處理器核心104中的一個或多個處理器核心還可以包括翻譯單元131,翻譯單元131可以翻譯二進制代碼或二進制代碼的一部分,以便處理器核心104能夠運行該二進制代碼。例如,在優(yōu)化期間(在本申請中隨后將描述該優(yōu)化),可以選擇用于運行線程的處理器核心。線程的二進制代碼可能不總是基于所選擇的處理器核心的指令集,其中翻譯單元可以將二進制代碼從一個指令集翻譯到所選擇的處理器核心支持(即能夠運行)的另一個指令集。
[0070]圖9示意性地示出了具有正常模式902和不同的安全模式904、906的處理器核心104的結(jié)構(gòu)。處理器核心104可以例如具有第一安全模式904和第二安全模式906。在一些實施例中,處理器核心104還可以具有比第一安全模式904和第二安全模式906更多的安全模式。在一些其它實施例中,處理器核心104除了正常模式之外還具有僅一個安全模式。在多核處理器102中,每個處理器核心104不是必須彼此類似,而是不同的處理器核心104可以具有不同類型的屬性。例如,處理器核心104中的一個或多個處理器核心可以具有正常模式和一個安全模式,一些其它處理器核心104可以具有正常模式和兩個或更多安全模式,以及一些處理器核心104可以僅具有正常模式以及沒有安全模式。
[0071]當(dāng)處理器核心104正在正常模式中操作時,它不可以訪問裝置的僅針對安全模式保留的此類部件。例如,裝置100可以包括:安全存儲器908,當(dāng)處理器核心104正在正常模式中操作時,不可以訪問該安全存儲器908,但是當(dāng)該處理器正在安全模式904、906 (如果有的話)中的一個安全模式中操作時,可以訪問該安全存儲器908。此外,在不同的安全模式之間,裝置100的不同單元的可訪問性也可以不同。裝置100可以包括:僅在例如第二安全模式906中可以訪問的但是在第一安全模式904和在正常模式902中不可以訪問的單元。因此,通過使用不同的安全模式,能夠設(shè)計針對不同種類的操作的不同種類的安全水平。這可以改進防護惡意軟件或其它試圖破壞裝置100的安全。
[0072]在以下的非限制性示例中,多核處理器102具有四個處理器核心104a_104d。第一處理器核心104a具有僅正常模式902,第二處理器核心104b具有正常模式902和第一安全模式904,以及第三處理器核心104c和第四處理器核心104d具有正常模式902、第一安全模式904和第二安全模式906。
[0073]在正常模式902中,處理器核心104和裝置100的其它單元不可以訪問位于多核處理器102的安全部件中的單元。當(dāng)處理器核心104在第一安全模式904中進行操作時,處理器核心104可以訪問多核處理器的第一安全部件以及也可以訪問在正常模式902中可以訪問的那些部件。當(dāng)處理器核心104在第二安全模式906中進行操作時,處理器核心104可以訪問多核處理器102的第二安全部件以及也可以訪問在正常安全模式902和/或在第一安全模式904中可以訪問的那些部件。
[0074]在一些實施例中,可以例如通過特定的指令和/或通過發(fā)起特定中斷來選擇處理器104的模式,該指令和中斷切換處理器核心104以在由該指令或由該中斷指示的模式中進行操作。例如,如果應(yīng)用軟件具有應(yīng)當(dāng)在安全模式中的一個安全模式中運行的部分,則編譯器可以將特定指令添加到編譯的程序代碼。分別地,在該部分的最后,代碼可以包含:指令,該指令使得處理器核心104將模式切換到正常模式或可能切換到另一個安全模式。
[0075]裝置100的操作可以由操作系統(tǒng)(OS)Ill來控制,OS 111是可以由多核處理器102的處理器核心104中的一個或多個處理器核心運行的一組指令序列。在一些實施例中,處理器核心中的一個處理器核心可以專用于操作系統(tǒng),或?qū)S糜谠摬僮飨到y(tǒng)的一些部分。操作系統(tǒng)可以包括:設(shè)備驅(qū)動器,其用于控制裝置100和/或電子設(shè)備50的不同單元,庫,其用于提供針對計算機程序的某些服務(wù)以便不需要隨用于執(zhí)行每個操作的指令來包含該計算機程序但是該計算機程序可以含有子例程調(diào)用或其它指令,子例程調(diào)用或其它指令使得當(dāng)此類調(diào)用在該計算機程序的指令序列中存在時,多核處理器運行該庫中的該子例程。例如,用于在電子設(shè)備50的顯示器32上寫數(shù)據(jù)和/或用于從電子設(shè)備50的小鍵盤34讀取數(shù)據(jù)的操作可以被提供作為操作系統(tǒng)的庫中的子例程。
[0076]計算機程序,其還可以被稱為應(yīng)用或軟件程序,包括用于執(zhí)某一任務(wù)或某些任務(wù)的一組或多組指令序列??梢宰鳛橐粋€或多個線程或任務(wù)來運行計算機程序。當(dāng)操作系統(tǒng)運行應(yīng)用或應(yīng)用的一部分時,操作系統(tǒng)可以創(chuàng)建進程,該進程包括計算機程序的線程中的至少一個線程。線程可以具有狀態(tài),該狀態(tài)指示該線程是否是活動的、運行中、準(zhǔn)備運行、等待事件、保持或停止。還可以有針對線程定義的其它狀態(tài),以及在另一方面,每個線程不必具有提及的所有這些狀態(tài)。例如,從不等待事件的線程可以存在。
[0077]操作系統(tǒng)111還包括調(diào)度器112或其它構(gòu)件以用于調(diào)度和控制在裝置100中是活動的進程的不同任務(wù)或線程。調(diào)度器112可以針對每個處理器核心104而言是共同的,或每個處理器核心104可以裝備有自己的調(diào)度器112。調(diào)度器112的一個目的是確定接著應(yīng)當(dāng)向進程中的哪個線程提供處理時間。調(diào)度器112可以嘗試針對每個活動的線程或進程提供基本上相同數(shù)量的處理時間,以便活動的線程或進程基本上不會減速或停止操作。然而,可能存在一些線程或進程具有比一些其它線程或進程更高的優(yōu)先級的情況,其中調(diào)度器112可以向高優(yōu)先級的線程或進程提供比低優(yōu)先級的線程或進程更多的處理時間。也可能存在為什么不向每個線程或進程提供相同處理時間的其它原因。例如,如果線程等待事件出現(xiàn),則在該事件出現(xiàn)之前,可以不必針對該線程提供處理時間。
[0078]調(diào)度器112可以基于例如定時器中斷。例如,定時器134被編程以在某些時間間隔生成中斷,以及由多核處理器的中斷模塊114來檢測該中斷,其中發(fā)起對應(yīng)的中斷服務(wù)例程136。中斷服務(wù)例程可以包括用于實現(xiàn)調(diào)度器112的操作的指令,或它可以包括用于設(shè)置例如由操作系統(tǒng)檢測的標(biāo)志或信號量的指令,該操作系統(tǒng)接著運行調(diào)度器112。
[0079]多核處理器102和處理器核心104也可以包括其它電路,但是在此沒有詳細(xì)地示出它們。
[0080]在本發(fā)明的一些實施例中,由編譯器將應(yīng)用的源代碼編譯到片中,片具有處理器核心的近似一個時間片的持續(xù)時間,或還可以更長。編譯器可以使用該處理器核心的指令集,該指令集最佳匹配針對線程的每個片的源代碼的操作。例如,如果編譯器具有一個處理器核心具有一個或多個安全模式的信息,該處理器核心最佳適合于該線程的可能的安全要求,則該編譯器可以使用這個處理器核心的指令集來編譯這些操作以及在二進制代碼中插入該線程的這個片應(yīng)當(dāng)由該處理器核心來處理的指示。編譯器還可以提供針對不能提供最佳可能的安全模式但是提供可以應(yīng)用的以滿足該線程的安全要求的一個或多個安全模式的處理器核心的二進制代碼。在這種情況下,通過使用通用指令集,即與其它處理器核心中的至少一些處理器核心兼容的指令集,來提供二進制代碼。這種情況也可以在如前所述的類似的片中發(fā)生。編譯器接著可以計算或以其他方式估計使用共同指令集的運行會慢多少,以及可以將這個信息包含在針對該線程的每個片的二進制代碼中或在針對該進程的一些片的二進制代碼中。
[0081]在一些實施例中,這能夠例如以編譯器針對第一進程的至少一部分指令序列生成第一二進制代碼和第二二進制代碼的方式來實現(xiàn)。第一二進制代碼于是可以包括:處理器核心的指令集的指令,該指令集已經(jīng)被確定為最佳適合用于滿足該線程的安全要求。第二二進制代碼可以包括:指令集的指令,該指令針對多核處理器的至少兩個處理器核心或甚至所有處理器核心而言是共同的。當(dāng)將運行該片時,調(diào)度器112可以接著確定最適合的處理器核心是否可以用于運行該線程,以及如果是,則可以選擇該處理器核心以運行第一二進制代碼。在另一方面,如果確定的是,最適合的處理器核心不可以用于運行該線程,則可以選擇另一個處理器核心以運行第二二進制核心。
[0082]可以將最優(yōu)(第一)二進制代碼和備選的(第二)二進制代碼(多個)兩者存儲在存儲器58中,以便多核處理器核心102能夠使用針對線程的片的最優(yōu)和備選的二進制代碼中的任何一個二進制代碼。
[0083]針對線程的每個部分而言,最優(yōu)的處理器核心未必是相同的。因此,在線程的運行(執(zhí)行)期間,在該線程的每個片中,處理器核心能夠改變,或處理器核心能夠在線程的運行期間在該線程的一些片之間改變。如果存在若干個同等良好匹配的處理器核心,則調(diào)度器112可以在可以使用的處理器核心之中隨機地選擇處理器核心,或當(dāng)決定哪個處理器核心用于處于準(zhǔn)備運行狀態(tài)的線程的下一個片時,調(diào)度器112也可以使用其它標(biāo)準(zhǔn)。
[0084]在一些情況下,活動的線程可能未必準(zhǔn)備運行,因為該線程可能已經(jīng)被停止,放入保持狀態(tài)或等待事件出現(xiàn),其中不向此類線程提供處理時間。例如,該線程能夠繼續(xù)進行之前,該線程可能等待來自另一個線程或來自另一個進程的數(shù)據(jù)。
[0085]在以下,更詳細(xì)地描述裝置100的操作。當(dāng)例如由裝置的用戶或由于事件出現(xiàn)或來自另一個程序的調(diào)用,選擇應(yīng)用以啟動時,操作系統(tǒng)OS從存儲器58提取程序代碼或程序代碼的部分,以便多核處理器102能夠開始運行該程序。然而,在一些實施例中,能夠直接從已經(jīng)存儲該應(yīng)用的存儲設(shè)備來運行程序,即沒有將它首先載入到存儲器58中。應(yīng)用存儲設(shè)備可以是固定盤、閃存盤、光盤(CDROM)、數(shù)字化通用光盤(DVD)或其它合適的位置。還能夠從計算機網(wǎng)絡(luò),例如從互聯(lián)網(wǎng),加載應(yīng)用。
[0086]操作系統(tǒng)還確定含有應(yīng)當(dāng)首先執(zhí)行的指令的入口點。可以由被存儲在文件的所謂的文件頭中的信息來指示入口點,在該文件中已經(jīng)存儲了該應(yīng)用。
[0087]為了能夠運行應(yīng)用,可能需要初始化一些存儲器區(qū)域、參數(shù)、變量和/或其它信息。操作系統(tǒng)也可以確定和發(fā)起該應(yīng)用的一個或多個線程。例如,該應(yīng)用可以是相機應(yīng)用,其可以包括:用于控制成像傳感器(諸如,電荷耦合器件(CCD)或互補金屬氧化物半導(dǎo)體(CMOS)傳感器)的曝光時間的一個線程,用于將傳感器數(shù)據(jù)讀取到存儲器58的一個線程,用于控制閃光燈的操作和定時的一個線程,等。當(dāng)發(fā)起線程時,可以針對它定義狀態(tài)。一開始,該狀態(tài)可能是例如準(zhǔn)備運行、等待事件、空閑等。在進程的操作期間,與該狀態(tài)有關(guān)的線程可以改變。例如,調(diào)度器可以向該線程提供一些處理器時間,其中該狀態(tài)可以改變到運行。
[0088]現(xiàn)在,將更詳細(xì)地解釋在多核處理器102中的多線程的調(diào)度的示例。假設(shè),若干線程是活動的和運行的,以及應(yīng)當(dāng)針對線程提供一定數(shù)量的處理器時間。這個時間數(shù)量也可以被稱為時間片或時間槽。時間片可以是恒定的,或它可以時常改變。此外,在操作期間可能發(fā)生的中斷可能影響的是,運行中的線程可能被中斷,以及針對中斷的線程保留的時間片的長度可能改變。此外,時間片的恒定長度并不意味的是,墻上時鐘時間中的長度是恒定的,而是可以針對線程保留恒定數(shù)量的處理器時間以在一個時間片期間運行該線程。在一些其它實施例中,時間片可以在長度中(在墻上時鐘時間中)被保持基本上恒定,其中中斷可能縮短針對中斷的線程提供的處理器時間。
[0089]中斷可能影響的是,運行中斷服務(wù)例程(其與討論中的中斷聯(lián)系在一起),以及在該中斷服務(wù)例程的開始,中斷的線程的狀態(tài)可以被存儲例如到處理器核心的堆?;蜓b置的另一個堆棧,以便當(dāng)中斷服務(wù)例程結(jié)束時,能夠檢索該狀態(tài)。
[0090]當(dāng)操作系統(tǒng)運行調(diào)度器112時,調(diào)度器112確定接著應(yīng)當(dāng)向哪一個線程提供處理器時間,即在下一個時間片期間,哪一個線程應(yīng)當(dāng)運行??梢葬槍γ總€處理器核心執(zhí)行這個確定,以便與具有的處理器核心104 —樣多的線程能夠在相同的時間片內(nèi)運行。調(diào)度器112可以檢查活動線程的狀態(tài)以及選擇線程,對于該線程而言,狀態(tài)指示的是,它準(zhǔn)備運行。調(diào)度器112還可以檢查先前已經(jīng)向準(zhǔn)備運行的線程提供了多少處理器時間,以及選擇已經(jīng)接收到比一些其它線程更少的處理器時間的線程。然而,可能已經(jīng)針對線程定義了優(yōu)先級,其中具有高優(yōu)先級的線程可以比具有低優(yōu)先級的線程接收更多的處理器時間。調(diào)度器112還可以確定應(yīng)當(dāng)選擇哪個處理器核心104以用于運行該線程。
[0091]調(diào)度器112還可以將另外的線程設(shè)置到運行狀態(tài),以便每個處理器核心可以開始運行一個線程。例如,如果多核處理器102包括四個處理器核心104a-104d,則能夠同時運行四個線程。然而,可能發(fā)生的是,可能有比多核處理器102中的處理器核心104更少的處于準(zhǔn)備運行狀態(tài)的活動線程。因此,處理器核心104中的一個或多個處理器核心可能在一段時間內(nèi)是空閑的。
[0092]當(dāng)選擇用于運行的線程時,調(diào)度器112可以將該線程的狀態(tài)改變到運行狀態(tài),或調(diào)度器112可以僅指令用于運行該線程而被選擇的處理器核心104來檢索該線程的狀態(tài)以及從該線程的運行上一次被停止的地方開始運行該線程的指令。調(diào)度器112給予用于運行線程的某一數(shù)量的處理時間,即時間片,以及當(dāng)該時間片結(jié)束時,使該線程停止,以及可以將它的狀態(tài)存儲到該處理器核心的內(nèi)部寄存器或存儲到存儲器58或存儲到一些其它適當(dāng)?shù)拇鎯橘|(zhì)。在一些實施例中,可以針對一個線程提供超過一個連續(xù)的時間片,其中在一個時間片結(jié)束后,可以不使該線程停止,而是該線程可以在若干連續(xù)的時間片期間運行。
[0093]一些線程可以具有可能影響處理器核心104的選擇的一些安全約束,以便能夠考慮該安全約束。在一些示例實施例中,可以向線程提供關(guān)于安全約束的指示。例如,該指示可以指示模式(在該模式中,處理器核心104應(yīng)當(dāng)運行線程)??梢岳缤ㄟ^提供比特向量以描述線程的安全要求,來指示該模式。當(dāng)僅有正常模式和一個安全模式時,使用一個比特來指示安全要求可能是足夠的,但是如果有超過兩個可以使用的不同模式,則該向量可以包含超過一個比特。
[0094]在一些實施例中,可以針對每個線程提供安全相關(guān)的信息,然而在一些其它實施例中,可以針對線程的每個片提供安全相關(guān)的信息。
[0095]在以下,將參照圖5中的流程圖,更詳細(xì)地描述根據(jù)一些示例實施例的調(diào)度過程。在一些實施例中,調(diào)度器112以以下方式來執(zhí)行線程的調(diào)度。在每個時間片的開始時,可以重新調(diào)度處于準(zhǔn)備運行狀態(tài)的以及在該線程的片的開始處的線程。調(diào)度器112檢查處理器核心的線程隊列300,以確定哪些線程處于準(zhǔn)備運行狀態(tài)以及選擇502此類線程以用于重新調(diào)度。調(diào)度器112還可以檢查線程的下一個片的信息以找出哪個處理器核心將是針對該線程的下一個片的潛在的處理器核心。將被檢查的信息包含:關(guān)于安全約束的指示。調(diào)度器112檢查504處于準(zhǔn)備運行狀態(tài)的線程的安全要求,以確定哪個處理器核心或哪些處理器核心能夠滿足該線程的安全要求。這可以例如以調(diào)度器112首先檢查當(dāng)前沒有運行任何代碼的那些處理器(即,它們有空來運行線程)的可以使用的安全模式方式來執(zhí)行。如果存在能夠滿足線程的安全要求的空閑的處理器核心,則調(diào)度器112可以選擇508此類處理器核心以在下一個時間片期間運行該線程。如果有超過一個的處理器核心104以從其中進行選擇,則調(diào)度器112可以選擇510提供最接近于安全要求的屬性的那個處理器核心,但是以能夠滿足該線程的安全要求的方式。
[0096]當(dāng)新線程將被調(diào)度并且沒有合適的處理器核心空閑時,調(diào)度器112可以執(zhí)行以下。調(diào)度器112嘗試改變512空閑處理器核心的安全模式,以便該安全模式滿足該線程的安全要求。如果這是可能的,則處理器核心的模式被改變?yōu)榕c該安全模式對應(yīng),以及在該處理器核心上調(diào)度514該線程。
[0097]如果沒有空閑的處理器核心,則調(diào)度器112可以嘗試改變516不是空閑的處理器核心(即,忙處理器核心)的安全狀態(tài),以及將在該處理器核心上正在運行的線程移動518到其它處理器核心。
[0098]如果針對新線程不能找到合適的處理器核心,則可以改變520處理器核心中的一個處理器核心的安全狀態(tài),以及在此之后,調(diào)度器112可以執(zhí)行線程的負(fù)載均衡,以便在那個時刻將負(fù)載僅可能均勻地平衡在處理器核心上。
[0099]如果在多核處理器的處理器核心上的沒有安全狀態(tài)的組合以便處于相同優(yōu)先級水平的所有線程能夠由多核處理器來運行,則調(diào)度器112可以以循環(huán)的方式開始改變522處理器核心的安全狀態(tài),以便能夠運行一部分線程,同時其它線程等待輪到它們。
[0100]在一個處理器核心上,可以針對所有的線程實現(xiàn)所謂的循環(huán)調(diào)度法,其中所有的線程被調(diào)度以在這個處理器核心上運行以及它們具有相同的優(yōu)先級。如果也有較低優(yōu)先級的線程,則如果有較高優(yōu)先級的線程準(zhǔn)備運行,則不運行這些較低優(yōu)先級的線程。
[0101]當(dāng)安全不是問題時,當(dāng)選擇處理器核心104以針對線程的一部分時,或如果存在滿足安全要求的超過一個可以應(yīng)用的處理器核心,則可以存在調(diào)度器112在選擇中可以使用的其它標(biāo)準(zhǔn)。選擇能夠基于例如,運行時間、運行效率、質(zhì)量的數(shù)目、功率消耗和/或一些其它標(biāo)準(zhǔn)。
[0102]可以如下來執(zhí)行上述負(fù)載均衡。在處于準(zhǔn)備運行狀態(tài)的線程已經(jīng)被放入隊列中時,調(diào)度器112可以嘗試優(yōu)化處理器核心的整體負(fù)載或評估可能影響針對線程片的處理器核心選擇的另一個標(biāo)準(zhǔn)。此類標(biāo)準(zhǔn)可以是例如多核處理器和/或裝置的功率消耗、運行效率、多核處理器和/或裝置的資源的使用率,等。在本申請中,這種類型的標(biāo)準(zhǔn)還被稱為效率。它可以被執(zhí)行,例如以便調(diào)度器112調(diào)查具有最高負(fù)載的處理器核心。調(diào)度器112可以通過確定經(jīng)由最優(yōu)處理器核心的隊列中的線程的片的運行時間與經(jīng)由另一個處理器核心的該線程的相同片的運行時間之間的差異,來將位于具有最高負(fù)載的處理器核心的線程隊列中的線程的運行時間進行比較。也就是說,調(diào)度器112可以計算使用最優(yōu)處理器核心的指令集由編譯器生成的二進制代碼的運行時間與使用其它處理器核心的指令集(通用指令集)生成的二進制代碼的運行時間之間的差異。調(diào)度器112可以針對隊列(對于該隊列而言,在這個階段(即,在線程的片的開始),處理器核心的改變是可能的)中的每個線程來重復(fù)這個計算,以及確定哪個線程在最優(yōu)編譯和一般編譯之間具有最小的運行時間差。調(diào)度器112可以將此類線程移動到具有最低負(fù)載的處理器核心或移動到與最優(yōu)處理器核心相比具有較低負(fù)載的某一其它處理器核心,或移動到將降低功率消耗、優(yōu)化資源的使用率等的處理器核心。調(diào)度器112接著可以檢查以這種方式的系統(tǒng)的整體負(fù)載是否更好。如果否,則將線程移動回到原始的處理器核心。
[0103]將線程從一個處理器核心移動518到另一個處理器核心還可以被稱為重定向。在重定向中,二進制代碼還可以至少被稍微修改,以便“重定向”的二進制代碼在所選擇的、其它處理器核心中更好地操作。在一些實施例中,由操作系統(tǒng)來執(zhí)行重定向,但是在一些其它實施例中,由編譯器來執(zhí)行重定向,其中編譯器已經(jīng)準(zhǔn)備了適用于其它處理器核心的二進制代碼。編譯器可能已經(jīng)針對該線程提供了當(dāng)由潛在的處理器核心運行該線程時使用的第一二進制代碼,以及編譯器還可能已經(jīng)針對該線程準(zhǔn)備了當(dāng)其它處理器核心運行該線程時使用的第二二進制代碼。在一些實施例中,編譯器已經(jīng)針對可以運行該線程的每個此類處理器核心準(zhǔn)備了該線程的二進制代碼。
[0104]在一些實施例中,如果在處理器核心中存在翻譯單元,則還可能的是,由多核處理器102的處理器核心的翻譯單元來執(zhí)行重定向。
[0105]除了上述標(biāo)準(zhǔn)外,負(fù)載均衡也能夠基于例如系統(tǒng)的吞吐量、功率效率、裝置的資源的使用率、該裝置的存儲器和/或輸入/輸出(I/o)單元的使用率、網(wǎng)絡(luò)連接等。此外,時延和/或響應(yīng)性也可以用作針對決策的效率測量。這里還應(yīng)當(dāng)提及的是,該決策可以基于僅一個標(biāo)準(zhǔn)或兩個或更多標(biāo)準(zhǔn)的組合。還可能的是,標(biāo)準(zhǔn)不總是相同的,以及在二進制代碼的不同部分中,可以使用不同的標(biāo)準(zhǔn)。
[0106]當(dāng)調(diào)度器112已經(jīng)檢查了具有最高負(fù)載的線程隊列中的所有線程時,調(diào)度器112可以以如以上公開的相同的方式繼續(xù)檢查具有較低工作負(fù)載(例如,第二最高負(fù)載、第三最高負(fù)載等)的其它處理器核心(多個)的負(fù)載情況,以發(fā)現(xiàn)是否能夠由與最優(yōu)處理器核心相比具有較低工作負(fù)載的某一其它處理器核心來執(zhí)行該線程。
[0107]可以重復(fù)上述步驟,直到?jīng)]有線程能夠被移動到另外的處理器核心以增加效率為止。
[0108]從以上能夠看到,運行線程的處理器核心可以逐片來改變,以及所選擇的處理器核心可以不總是與編譯器已經(jīng)在二進制代碼中指示的處理器核心相同的處理器核心,而是相反調(diào)度器112可以決定使用另一個處理器核心。
[0109]在一些實施例中,針對每個處理器核心104存在各自的線程隊列300a、300b,但是在一些其它實施例中,針對每個處理器核心可以存在共同(全局)的線程隊列。
[0110]圖3說明了根據(jù)本發(fā)明的示例實施例的在裝置100中的調(diào)度器112的操作和運行線程。在這個示例中,使用僅兩個處理器核心104a、104b,以及這兩個處理器核心104a、104b分別裝備有它們各自的線程隊列300a、300b,但是明顯的是,類似的原理也可以應(yīng)用于使用超過兩個處理器核心的實施例。這里假設(shè),調(diào)度器112(在圖3中被標(biāo)記為SCH)被實現(xiàn)在操作系統(tǒng)中,以便它在第一處理器核心104a中運行。還假設(shè),五個線程TH1-TH5是活動的,以及第六線程TH6在操作期間變成活動的。在時間片η期間,第一線程THl由第一處理器核心104a運行,以及第三線程TH3由第二處理器核心104b運行。第二線程TH2和第五線程TH5也被包含在第一線程隊列300a中,以及它們被標(biāo)記為準(zhǔn)備運行,以便它們等待處理器時間。在第二線程隊列300b中,第三線程TH3現(xiàn)在在頂部,這說明的是,它現(xiàn)在由第二處理器核心104b運行。位于第二線程隊列300b的第二位置中的第四線程TH4等待處理時間。在時間片η結(jié)束時,線程的處理停止以及開始運行。調(diào)度器112根據(jù)例如處于準(zhǔn)備運行狀態(tài)的線程的下一個片的二進制代碼的安全信息,重新調(diào)度隊列中的線程。
[0111]如上所述,調(diào)度器112可以對沒有在線程的片的中間的僅此類線程進行重新調(diào)度。因此,還沒有由最新的時間片的結(jié)束而結(jié)束的片被保持在先前運行該線程的片的相同處理器核心的隊列中。在圖3中,說明了這種情況的示例。在時間片η+2結(jié)束時,第五線程ΤΗ5的片沒有處于該片的結(jié)尾,其中調(diào)度器112將該片維持在第一處理器核心的隊列中。在這個示例中,在第五線程ΤΗ5獲得更多的處理時間之前,沒有應(yīng)當(dāng)被提供處理時間的其它線程。因此,調(diào)度器112已經(jīng)決定在下一個時間片η+3期間繼續(xù)運行第五線程ΤΗ5的中斷的片。
[0112]可能發(fā)生的是,在時間片已經(jīng)結(jié)束之前,線程的片的運行可能結(jié)束。在此類情況下,調(diào)度器112可以選擇另一個線程以用于在該相同的時間片內(nèi)運行。在圖3中說明了這種情況的示例。在時間片η+3期間,第五線程ΤΗ5的片結(jié)束,以及在時間片η+3的剩余時間內(nèi)向在第一處理器核心的隊列中的下一個線程的片提供運行時間。如果最優(yōu)處理器核心仍然是相同的,則可以將第五線程ΤΗ5放入到相同處理器核心的隊列中,或者如果針對該線程的下一個片而言,最優(yōu)處理器核心改變,或如果調(diào)度器決定針對該線程的下一個片的運行而選擇另一個處理器核心,則可以將第五線程ΤΗ5放入到不同的處理器核心的隊列中。也就是說,可能已經(jīng)針對相同線程的不同片選擇了不同的處理器核心??赡芤呀?jīng)由從源代碼已經(jīng)編譯了可執(zhí)行代碼的編譯器,在操作期間由調(diào)度器,或由一些其它構(gòu)件,來確定該選擇。例如,應(yīng)用的一部分可能需要安全操作,其中針對該部分的線程可以含有安全約束,以及可以影響調(diào)度操作,如以上解釋的。在圖3中說明了這種情況的示例,其中第五線程ΤΗ5在n+3時間片的結(jié)束時被重新調(diào)度到第二處理器核心104b的隊列300b。
[0113]在針對線程的選擇的最優(yōu)核心在該線程的兩個片之間改變的情況中,操作可以含有以下。在此類切換點,即當(dāng)先前片的運行已經(jīng)在例如第一處理器核心處結(jié)束時,調(diào)度器112將該線程移動到另一個處理器核心的隊列,該另一個處理器核心已經(jīng)被確定為是針對該線程的下一個片的運行的最優(yōu)的處理器核心。調(diào)度器112接著可以從第一處理器核心的隊列中選擇將由第一處理器核心運行的另一個線程。
[0114]還應(yīng)當(dāng)注意的是,在線程隊列300a、300b中的信息不需要含有在隊列中的線程的完整描述,但是它可以含有至另一個表的指示,在該另一個表中,能夠找到關(guān)于線程的更多的信息。例如,操作系統(tǒng)可以維護線程表400,在該線程表400中,維護關(guān)于已經(jīng)被啟動和活動的進程的所有線程的信息。這種信息可以包含:線程的狀態(tài)、線程的下一個片、關(guān)于針對線程預(yù)留的資源的信息、進程的名字、進程的父親,如果有的話,關(guān)于進程的可能的子進程的信息,優(yōu)先級等。接著,線程隊列300a、300b能夠含有至線程表(在該線程表中,已經(jīng)存儲了關(guān)于線程的信息)中的位置的引用。
[0115]圖4說明了線程表400的一部分的示例。線程表400可以包含:線程ID、線程名字、優(yōu)先級、狀態(tài)、進程ID、安全約束、開始地址、提供該線程的處理時間,等。
[0116]當(dāng)調(diào)度器112已經(jīng)執(zhí)行了針對下一個時間片的調(diào)度任務(wù)時,在線程隊列300a、300b的頂部的線程能夠開始運行。在這個示例中,第一處理器核心104a開始運行第二線程TH2的下一個片,以及第二處理器核心104b開始運行第四線程TH4的下一個片。
[0117]在時間片n+1結(jié)束時,調(diào)度器112再次運行,以及將使用以上指示的原理來處理線程隊列。在圖3的示例中,新線程,第六線程TH6,已經(jīng)被激活,以便它現(xiàn)在處于準(zhǔn)備運行狀態(tài)。第六線程TH6的下一個(第一)片的二進制代碼能夠指示的是,第二處理器核心104b將是最優(yōu)的處理器核心,其中第六線程TH6被放在第二線程隊列300b的末尾。然而,如果已經(jīng)針對線程或針對線程中的一些線程定義了優(yōu)先級,則可能的是,新線程將不被放在線程隊列的末尾,而是放在該線程隊列中的更高位置,以便將更早地向該線程提供處理時間。在圖3的示例中,第六線程TH6出于安全約束被從第二線程隊列300b改變到第一線程隊列300a,以及被放在第一線程隊列300a中的第一線程THl之前。
[0118]應(yīng)當(dāng)注意的是,上述操作是僅一種可能的備選方案以實現(xiàn)調(diào)度和線程隊列,以及本發(fā)明還可以與其它調(diào)度和線程隊列實現(xiàn)方式結(jié)合應(yīng)用。
[0119]還可能的是,針對較高優(yōu)先級的線程已經(jīng)定義了處理時間的某一部分,以便調(diào)度器112嘗試向此類線程提供處理時間的至少該部分。
[0120]在一些實施例中,多核處理器102可能不支持中斷,其中調(diào)度器112的實現(xiàn)方式可以不同于基于中斷的調(diào)度器112。
[0121]一般地,可以將本發(fā)明的各種實施例實現(xiàn)成硬件或?qū)S秒娐贰④浖?、邏輯和它們的任何組合。例如,一些方面可以被實現(xiàn)在硬件中,而其它方面可以被實現(xiàn)在固件或軟件,該固件或軟件可以由控制器、微處理器或其它計算設(shè)備來執(zhí)行,盡管本發(fā)明不限制于此。雖然本發(fā)明的各種方面被說明和描述成框圖、流程圖或使用一些其它圖形表示,但是很好理解的是,本文中所述的這些框、裝置、系統(tǒng)、技術(shù)或方法可以被實現(xiàn)在,作為非限制性示例,硬件、軟件、固件、專用電路或邏輯、通用硬件或控制器或其它計算設(shè)備、或其一些組合中。
[0122]可以由裝置的數(shù)據(jù)處理器可執(zhí)行的計算機軟件,諸如在處理器實體中,或由硬件,或由軟件和硬件的組合來實現(xiàn)本發(fā)明的實施例。此外,就這點而言,應(yīng)當(dāng)注意的是,如在附圖中的邏輯流的任何框可以表示程序步驟,或互連的邏輯電路,塊和功能,或程序步驟和邏輯電路、塊和功能的組合。可以將軟件存儲在此類物理介質(zhì)上,諸如存儲芯片,或?qū)崿F(xiàn)在處理器內(nèi)的存儲塊,磁介質(zhì),諸如硬盤或軟盤,以及光介質(zhì),諸如例如DVD和其數(shù)據(jù)變型CD。
[0123]存儲器可以具有適合于本地技術(shù)環(huán)境的任何類型,并且可以使用任何合適的數(shù)據(jù)存儲技術(shù)來實現(xiàn),諸如基于半導(dǎo)體的存儲設(shè)備,磁存儲設(shè)備和系統(tǒng),光存儲設(shè)備和系統(tǒng),固定存儲器和可移動存儲器。數(shù)據(jù)處理器可以具有適合于本地技術(shù)環(huán)境的任何類型,并且可以包含作為非限制性示例的下列中的一個或多個:通用計算機、專用計算機、微處理器、數(shù)字信號處理器(DSP)和基于多核處理器架構(gòu)的處理器。
[0124]可以在各種組件中,諸如在集成電路模塊中,實踐本發(fā)明的實施例。一般而言,集成電路的設(shè)計基本上是高度自動化的過程。復(fù)雜和功能強大的軟件工具可用于將邏輯級的設(shè)計轉(zhuǎn)換成準(zhǔn)備將要被蝕刻和形成在半導(dǎo)體襯底上的半導(dǎo)體電路設(shè)計。
[0125]程序,諸如由加利福尼亞的山景城的新思科技(Synopsys, Inc.0f MountainView, California)和加利福尼亞的圣何塞的凱登斯設(shè)計(Cadence Design, of SanJose, California)所提供的那些程序,使用良好建立的設(shè)計規(guī)則以及預(yù)存儲的設(shè)計模塊的庫在半導(dǎo)體芯片上自動化路由導(dǎo)體和定位組件。一旦已經(jīng)完成了針對半導(dǎo)體電路的設(shè)計,則所生成的設(shè)計可以以標(biāo)準(zhǔn)化電子形式(例如,Opus,GDSII等)傳送給半導(dǎo)體制造廠或用于制造的簡寫的“fab”。
[0126]上述描述已經(jīng)通過示例性和非限制性的示例提供了本發(fā)明示例性實施例的全面和教示性的描述。然而,當(dāng)結(jié)合附圖和所附權(quán)利要求書閱讀時,鑒于上述描述,對于相關(guān)領(lǐng)域的技術(shù)人員來說,各種修改和適應(yīng)是明顯的。然而,本發(fā)明的教示中的所有此類或類似的修改仍然將落入本發(fā)明的范圍內(nèi)。
[0127]在以下中,將提供一些示例實施例。
[0128]根據(jù)一些示例實施例,提供了一種方法,所述方法包括:
[0129]檢查與線程的指令序列有關(guān)的信息以確定所述線程的安全條件;
[0130]通過使用所述安全條件,確定多核處理器中的哪個處理器核心具有滿足所述安全條件的合適的安全模式;
[0131]如果所述確定指示的是,所述多核處理器中的具有所述合適的安全模式的一個或多個處理器核心是可以使用的,則選擇所述一個或多個處理器核心中的一個處理器核心作為潛在的處理器核心以運行所述線程的所述指令序列。
[0132]在一些示例實施例中,所述確定包括:檢查具有所述合適的安全模式的所述一個或多個處理器核心中的任何處理器核心是否是空閑的以用于運行所述線程的所述指令序列;以及如果是,則在所述一個或多個處理器核心之中選擇是空閑的以用于運行所述線程的所述指令序列的那個處理器核心作為所述潛在的處理器核心。
[0133]在一些示例實施例中,如果所述檢查指示的是,具有所述合適的安全模式的所述一個或多個處理器核心中的任何處理器核心不是空閑的以用于運行所述線程的所述指令序列,則所述方法還包括:檢查是否存在是空閑的以用于運行所述線程的所述指令序列的另一個處理器核心;以及如果是,則檢查是空閑的以用于運行所述線程的所述指令序列的所述處理器核心的安全模式是否能夠被改變以滿足所述安全條件;以及如果能夠,則改變所述處理器核心的所述安全模式以滿足所述安全條件。
[0134]在一些示例實施例中,所述選擇包括:檢查是否存在可用于被選擇作為所述潛在的處理器核心的超過一個的處理器核心;以及如果是,則比較所述超過一個的處理器核心的可以使用的安全模式以確定哪個處理器核心提供最接近于所述安全條件的安全模式但是仍然滿足所述線程的所有安全要求。
[0135]在一些示例實施例中,所述方法包括確定針對所述線程的優(yōu)先級;以及使用所述優(yōu)先級以確定在下一個時間片內(nèi)向哪個線程提供處理時間。
[0136]在一些示例實施例中,所述方法包括:針對具有相同優(yōu)先級以及被選擇由相同的處理器核心運行的線程,使用循環(huán)調(diào)度法。
[0137]在一些示例實施例中,所述確定包括:檢查所述多核處理器的處理器核心中的任何處理器核心是否是空閑的以用于運行所述線程的所述指令序列;以及如果否,則所述方法還包括:選擇已經(jīng)被選擇以運行另一個線程的指令序列的處理器核心作為所述潛在的處理器核心;以及將所述潛在的處理器核心的安全模式改變?yōu)榕c所述安全條件對應(yīng)。
[0138]在一些示例實施例中,所述方法包括:
[0139]運行具有相同優(yōu)先級水平的多個線程的指令序列;
[0140]確定在所述多核處理器的處理器核心上是否存在以便能夠由所述多核處理器運行所有的線程的安全狀態(tài)的組合;以及
[0141]如果否,則以循環(huán)方式改變所述處理器核心的安全狀態(tài),以便能夠運行所述多個線程的所述指令序列的一部分,同時所述多個線程的其它指令序列等待運行。
[0142]在一些示例實施例中,裝置包括所述多核處理器,以及效率涉及所述多核處理器的工作負(fù)載。
[0143]在一些示例實施例中,所述方法包括:提供包括針對所述潛在處理器核心的指令序列的第一二進制代碼;以及提供包括針對所述多核處理器的另一個處理器核心的指令序列的第二二進制代碼。
[0144]在一些示例實施例中,所述方法包括:使用異構(gòu)處理器作為所述多核處理器,其中至少兩個處理器核心的指令集是至少部分不同的。
[0145]在一些示例實施例中,所述方法包括:提供針對每個處理器核心的線程隊列,所述線程隊列包括關(guān)于在所述線程隊列中的線程的狀態(tài)的信息和所述安全條件。
[0146]在一些示例實施例中,所述方法包括:使用所述多核處理器核心作為移動終端的組件。
[0147]根據(jù)一些示例實施例,提供了一種裝置,所述裝置包括:至少一個處理器和包含計算機程序代碼的至少一個存儲器,所述至少一個存儲器和所述計算機程序代碼被配置為使用所述至少一個處理器使得所述裝置:
[0148]檢查與線程的指令序列有關(guān)的信息以確定所述線程的安全條件;
[0149]通過使用所述安全條件,確定多核處理器中的哪個處理器核心具有滿足所述安全條件的合適的安全模式;
[0150]如果所述確定指示的是,所述多核處理器中的具有所述合適的安全模式的一個或多個處理器核心是可以使用的,則選擇所述一個或多個處理器核心中的一個處理器核心作為潛在的處理器核心以運行第一線程的所述指令序列。
[0151]在一些示例實施例中,所述確定包括:檢查具有所述合適的安全模式的所述一個或多個處理器核心中的任何處理器核心是否是空閑的以用于運行所述線程的所述指令序列;以及如果是,則在所述一個或多個處理器核心之中選擇是空閑的以用于運行所述線程的所述指令序列的那個處理器核心作為所述潛在的處理器核心。
[0152]在一些示例實施例中,所述至少一個存儲器具有存儲在其上的代碼,當(dāng)由所述至少一個處理器運行所述代碼時,所述代碼還使得所述裝置:
[0153]如果所述檢查指示的是,具有所述合適的安全模式的所述一個或多個處理器核心中的任何處理器核心不是空閑的以用于運行所述線程的所述指令序列,則檢查是否存在是空閑的以用于運行所述線程的所述指令序列的另一個處理器核心;以及如果是,則檢查是空閑的以用于運行所述線程的所述指令序列的所述處理器核心的安全模式是否能夠被改變以滿足所述安全條件;以及如果能夠,則改變所述處理器核心的所述安全模式以滿足所述安全條件。
[0154]在一些示例實施例中,所述選擇包括:檢查是否存在可用于被選擇作為所述潛在的處理器核心的超過一個的處理器核心;以及如果是,則比較所述超過一個的處理器核心的可以使用的安全模式以確定哪個處理器核心提供最接近于所述安全條件的安全模式但是仍然滿足所述線程的所有安全要求。
[0155]在一些示例實施例中,所述至少一個存儲器具有存儲在其上的代碼,當(dāng)由所述至少一個處理器運行所述代碼時,所述代碼還使得所述裝置確定針對所述線程的優(yōu)先級;以及使用所述優(yōu)先級以確定在下一個時間片內(nèi)向哪個線程提供處理時間。
[0156]在一些示例實施例中,所述至少一個存儲器具有存儲在其上的代碼,當(dāng)由所述至少一個處理器運行所述代碼時,所述代碼還使得所述裝置針對具有相同優(yōu)先級以及被選擇由相同的處理器核心運行的線程,使用循環(huán)調(diào)度法。
[0157]在一些示例實施例中,所述至少一個存儲器具有存儲在其上的代碼,當(dāng)由所述至少一個處理器運行所述代碼時,所述代碼還使得所述裝置通過以下中的至少一個來執(zhí)行所述檢查以及重定向:
[0158]-檢查所述多核處理器的處理器核心中的任何處理器核心是否是空閑的以用于運行所述線程的所述指令序列;
[0159]-以及如果否,
[0160]-選擇已經(jīng)被選擇以運行另一個線程的指令序列的處理器核心作為所述潛在的處理器核心;以及
[0161]-將所述潛在的處理器核心的安全模式改變?yōu)榕c所述安全條件對應(yīng)。
[0162]在一些示例實施例中,所述至少一個存儲器具有存儲在其上的代碼,當(dāng)由所述至少一個處理器運行所述代碼時,所述代碼還使得所述裝置:
[0163]運行具有相同優(yōu)先級水平的多個線程的指令序列;
[0164]確定在所述多核處理器的處理器核心上是否存在以便能夠由所述多核處理器運行所有的線程的安全狀態(tài)的組合;以及
[0165]如果否,則以循環(huán)方式改變所述處理器核心的安全狀態(tài),以便能夠運行所述多個線程的所述指令序列的一部分,同時所述多個線程的其它指令序列等待運行。
[0166]在一些示例實施例中,效率涉及所述多核處理器的工作負(fù)載。
[0167]在一些示例實施例中,所述至少一個存儲器具有存儲在其上的代碼,當(dāng)由所述至少一個處理器運行所述代碼時,所述代碼還使得所述裝置:提供包括針對所述潛在處理器核心的指令序列的第一二進制代碼;以及提供包括針對所述多核處理器的另一個處理器核心的指令序列的第二二進制代碼。
[0168]在一些示例實施例中,所述至少一個存儲器具有存儲在其上的代碼,當(dāng)由所述至少一個處理器運行所述代碼時,所述代碼還使得所述裝置使用異構(gòu)處理器作為所述多核處理器,其中至少兩個處理器核心的指令集是至少部分不同的。
[0169]在一些示例實施例中,所述至少一個存儲器具有存儲在其上的代碼,當(dāng)由所述至少一個處理器運行所述代碼時,所述代碼還使得所述裝置提供針對每個處理器核心的線程隊列,所述線程隊列包括關(guān)于在所述線程隊列中的線程的狀態(tài)的信息和所述安全條件。
[0170]在一些示例實施例中,所述裝置是移動終端的組件。
[0171]根據(jù)一些示例實施例,提供了計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行所述一個或多個指令的一個或多個序列時,該一個或多個指令的一個或多個序列使得裝置至少執(zhí)行以下:
[0172]檢查與線程的指令序列有關(guān)的信息以確定所述線程的安全條件;
[0173]通過使用所述安全條件,確定多核處理器中的哪個處理器核心具有滿足所述安全條件的合適的安全模式;
[0174]如果所述確定指示的是,所述多核處理器中的具有所述合適的安全模式的一個或多個處理器核心是可以使用的,則選擇所述一個或多個處理器核心中的一個處理器核心作為潛在的處理器核心以運行第一線程的所述指令序列。
[0175]在一些實施例中,所述確定包括:檢查具有所述合適的安全模式的所述一個或多個處理器核心中的任何處理器核心是否是空閑的以用于運行所述線程的所述指令序列;以及如果是,則在所述一個或多個處理器核心之中選擇是空閑的以用于運行所述線程的所述指令序列的那個處理器核心作為所述潛在的處理器核心。
[0176]在一些實施例中,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行該一個或多個指令的一個或多個序列時,該一個或多個指令的一個或多個序列使得裝置:
[0177]如果所述檢查指示的是,具有所述合適的安全模式的所述一個或多個處理器核心中的任何處理器核心不是空閑的以用于運行所述線程的所述指令序列,則檢查是否存在是空閑的以用于運行所述線程的所述指令序列的另一個處理器核心;以及
[0178]如果是,則檢查是空閑的以用于運行所述線程的所述指令序列的所述處理器核心的安全模式是否能夠被改變以滿足所述安全條件;以及如果能夠,則改變所述處理器核心的所述安全模式以滿足所述安全條件。
[0179]在一些實施例中,所述選擇包括:檢查是否存在可用于被選擇作為所述潛在的處理器核心的超過一個的處理器核心;以及如果是,則比較所述超過一個的處理器核心的可以使用的安全模式以確定哪個處理器核心提供最接近于所述安全條件的安全模式但是仍然滿足所述線程的所有安全要求。
[0180]在一些示例實施例中,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行該一個或多個指令的一個或多個序列時,該一個或多個指令的一個或多個序列使得裝置確定針對所述線程的優(yōu)先級;以及使用所述優(yōu)先級以確定在下一個時間片內(nèi)向哪個線程提供處理時間。
[0181]在一些示例實施例中,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行該一個或多個指令的一個或多個序列時,該一個或多個指令的一個或多個序列使得裝置針對具有相同優(yōu)先級以及被選擇由相同的處理器核心運行的線程,使用循環(huán)調(diào)度法。
[0182]在一些示例實施例中,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行該一個或多個指令的一個或多個序列時,該一個或多個指令的一個或多個序列使得裝置通過以下中的至少一個執(zhí)行所述檢查以及重定向:
[0183]檢查所述多核處理器的處理器核心中的任何處理器核心是否是空閑的以用于運行所述線程的所述指令序列;以及
[0184]如果否,則選擇已經(jīng)被選擇以運行另一個線程的指令序列的處理器核心作為所述潛在的處理器核心;以及
[0185]將所述潛在的處理器核心的安全模式改變?yōu)榕c所述安全條件對應(yīng)。
[0186]在一些示例實施例中,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行該一個或多個指令的一個或多個序列時,該一個或多個指令的一個或多個序列使得裝置:
[0187]-檢查所述多核處理器的處理器核心中的任何處理器核心是否是空閑的以用于運行所述線程的所述指令序列;以及
[0188]-如果否,則選擇已經(jīng)被選擇以運行另一個線程的指令序列的處理器核心作為所述潛在的處理器核心;以及改變所述潛在的處理器核心的安全模式以與所述安全條件對應(yīng)。
[0189]在一些示例實施例中,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行該一個或多個指令的一個或多個序列時,該一個或多個指令的一個或多個序列使得裝置:
[0190]運行具有相同優(yōu)先級水平的多個線程的指令序列;
[0191]確定在多核處理器的處理器核心上是否存在以便能夠由所述多核處理器運行所有的線程的安全狀態(tài)的組合;以及
[0192]如果否,則以循環(huán)方式改變所述處理器核心的安全狀態(tài),以便能夠運行所述多個線程的所述指令序列的一部分,同時所述多個線程的其它指令序列等待運行。
[0193]在一些示例實施例中,所述裝置包括所述多核處理器,以及效率涉及所述多核處理器的工作負(fù)載。
[0194]在一些示例實施例中,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行該一個或多個指令的一個或多個序列時,該一個或多個指令的一個或多個序列使得裝置至少提供包括針對所述潛在處理器核心的指令序列的第一二進制代碼;以及提供包括針對所述多核處理器的另一個處理器核心的指令序列的第二二進制代碼。
[0195]在一些示例實施例中,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行該一個或多個指令的一個或多個序列時,該一個或多個指令的一個或多個序列使得裝置至少使用異構(gòu)處理器作為所述多核處理器,其中至少兩個處理器核心的指令集是至少部分不同的。
[0196]在一些示例實施例中,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行該一個或多個指令的一個或多個序列時,該一個或多個指令的一個或多個序列使得裝置至少提供針對每個處理器核心的線程隊列,所述線程隊列包括關(guān)于在所述線程隊列中的線程的狀態(tài)的信息和所述安全條件。
[0197]在一些示例實施例中,所述計算機程序產(chǎn)品是移動終端的軟件的一部分。
[0198]根據(jù)本發(fā)明的一些示例實施例,提供了一種裝置,所述裝置包括:
[0199]多核處理器,其包括至少第一處理器核心和第二處理器核心;
[0200]第一線程的指令序列,其被配置為在所述多核處理器的處理器核心中被運行;
[0201]檢查單元,其被配置為:
[0202]檢查與線程的指令序列有關(guān)的信息以確定所述線程的安全條件;
[0203]通過使用所述安全條件,確定多核處理器中的哪個處理器核心具有滿足所述安全條件的合適的安全模式;
[0204]如果所述確定指示的是,所述多核處理器中的具有所述合適的安全模式的一個或多個處理器核心是可以使用的,則選擇所述一個或多個處理器核心中的一個處理器核心作為潛在的處理器核心以運行第一線程的所述指令序列。
[0205]在一些示例實施例中,所述裝置是移動終端的組件。
[0206]根據(jù)本發(fā)明的一些示例實施例,提供了一種裝置,所述裝置包括:
[0207]用于檢查與線程的指令序列有關(guān)的信息以確定所述線程的安全條件的構(gòu)件;
[0208]用于通過使用所述安全條件,確定多核處理器中的哪個處理器核心具有滿足所述安全條件的合適的安全模式的構(gòu)件;
[0209]用于如果所述確定指示的是,所述多核處理器中的具有所述合適的安全模式的一個或多個處理器核心是可以使用的,則選擇所述一個或多個處理器核心中的一個處理器核心作為潛在的處理器核心以運行第一線程的所述指令序列的構(gòu)件。
[0210]在一些實施例中,所述裝置包括:用于檢查具有所述合適的安全模式的所述一個或多個處理器核心中的任何處理器核心是否是空閑的以用于運行所述線程的所述指令序列;以及如果是,則在所述一個或多個處理器核心之中選擇是空閑的以用于運行所述線程的所述指令序列的那個處理器核心作為所述潛在的處理器核心的構(gòu)件。
[0211]在一些實施例中,所述裝置包括用于如果所述檢查指示的是,具有所述合適的安全模式的所述一個或多個處理器核心中的任何處理器核心不是空閑的以用于運行所述線程的所述指令序列,則檢查是否存在是空閑的以用于運行所述線程的所述指令序列的另一個處理器核心;以及如果是,則檢查是空閑的以用于運行所述線程的所述指令序列的所述處理器核心的安全模式是否能夠被改變以滿足所述安全條件;以及如果能夠,則改變所述處理器核心的所述安全模式以滿足所述安全條件的構(gòu)件。
[0212]在一些實施例中,所述裝置包括:用于檢查是否存在可用于被選擇作為所述潛在的處理器核心的超過一個的處理器核心;以及如果是,則比較所述超過一個的處理器核心的可以使用的安全模式以確定哪個處理器核心提供最接近于所述安全條件的安全模式但是仍然滿足所述線程的所有安全要求的構(gòu)件。
[0213]在一些實施例中,所述裝置包括用于確定針對所述線程的優(yōu)先級的構(gòu)件;以及用于使用所述優(yōu)先級以確定在下一個時間片內(nèi)向哪個線程提供處理時間的構(gòu)件。
[0214]在一些實施例中,所述裝置包括:用于針對具有相同優(yōu)先級以及被選擇由相同的處理器核心運行的線程,使用循環(huán)調(diào)度法的構(gòu)件。
[0215]在一些實施例中,所述裝置包括:
[0216]用于檢查所述多核處理器的處理器核心中的任何處理器核心是否是空閑的以用于運行所述線程的所述指令序列的構(gòu)件;
[0217]用于選擇已經(jīng)被選擇以運行另一個線程的指令序列的處理器核心作為所述潛在的處理器核心的構(gòu)件;以及
[0218]用于將所述潛在的處理器核心的安全模式改變?yōu)榕c所述安全條件對應(yīng)的構(gòu)件。
[0219]在一些實施例中,所述裝置包括:
[0220]用于運行具有相同優(yōu)先級水平的多個線程的指令序列的構(gòu)件;
[0221]用于確定所述多核處理器的處理器核心上是否存在以便能夠由所述多核處理器運行所有的線程的安全狀態(tài)的組合的構(gòu)件;以及
[0222]用于如果在所述多核處理器的處理器核心上不存在以便能夠由所述多核處理器運行所有線程的安全狀態(tài)的組合,則以循環(huán)方式改變所述處理器核心的安全狀態(tài),以便能夠運行所述多個線程的所述指令序列的一部分,同時所述多個線程的其它指令序列等待運行的構(gòu)件。
[0223]在一些實施例中,所述裝置包括所述多核處理器,以及效率涉及所述多核處理器的工作負(fù)載。
[0224]在一些實施例中,所述裝置包括:用于提供包括針對所述潛在處理器核心的指令序列的第一二進制代碼的構(gòu)件;以及用于提供包括針對所述多核處理器的另一個處理器核心的指令序列的第二二進制代碼的構(gòu)件。
[0225]在一些實施例中,所述裝置包括:用于使用異構(gòu)處理器作為所述多核處理器的構(gòu)件,其中至少兩個處理器核心的指令集是至少部分不同的。
[0226]在一些實施例中,所述裝置包括:用于提供針對每個處理器核心的線程隊列的構(gòu)件,所述線程隊列包括關(guān)于在所述線程隊列中的線程的狀態(tài)的信息和所述安全條件。
[0227]在一些示例實施例中,所述裝置包括:用于使用所述多核處理器核心作為移動終端的組件的構(gòu)件。
【權(quán)利要求】
1.一種方法,包括: 檢查與線程的指令序列有關(guān)的信息以確定所述線程的安全條件; 通過使用所述安全條件,確定多核處理器中的哪個處理器核心具有滿足所述安全條件的合適的安全模式; 如果所述確定指示的是,所述多核處理器中的具有所述合適的安全模式的一個或多個處理器核心是可以使用的,則選擇所述一個或多個處理器核心中的一個處理器核心作為潛在的處理器核心以運行所述線程的所述指令序列。
2.根據(jù)權(quán)利要求1所述的方法,其中所述確定包括:檢查具有所述合適的安全模式的所述一個或多個處理器核心中的任何處理器核心是否是空閑的以用于運行所述線程的所述指令序列;以及如果是,則在所述一個或多個處理器核心之中選擇是空閑的以用于運行所述線程的所述指令序列的那個處理器核心作為所述潛在的處理器核心。
3.根據(jù)權(quán)利要求2所述的方法,其中如果所述檢查指示的是,具有所述合適的安全模式的所述一個或多個處理器核心中的任何處理器核心不是空閑的以用于運行所述線程的所述指令序列,則檢查是否存在是空閑的以用于運行所述線程的所述指令序列的另一個處理器核心;以及如果是,則檢查是空閑的以用于運行所述線程的所述指令序列的所述處理器核心的安全模式是否能夠被改變以滿足所述安全條件;以及如果能夠,則改變所述處理器核心的所述安全模式以滿足所述安全條件。
4.根據(jù)權(quán)利要求1、2或3所述的方法,其中所述選擇包括:檢查是否存在可用于被選擇作為所述潛在的處理器核心的超過一個的處理器核心;以及如果是,則比較所述超過一個的處理器核心的可以使用的安全模式以確定哪個處理器核心提供滿足所述線程的所有安全要求的最接近于所述安全條件的安全模式。
5.根據(jù)權(quán)利要求1至4中的任何一項所述的方法,所述方法包括:確定針對所述線程的優(yōu)先級;以及使用所述優(yōu)先級以確定在下一個時間片內(nèi)向哪個線程提供處理時間。
6.根據(jù)權(quán)利要求5所述的方法,所述方法包括:針對具有相同優(yōu)先級以及被選擇由相同的處理器核心運行的線程,使用循環(huán)調(diào)度法。
7.根據(jù)權(quán)利要求1至6中的任何一項所述的方法,其中所述確定包括檢查所述多核處理器的處理器核心中的任何處理器核心是否是空閑的以用于運行所述線程的所述指令序列;以及 如果否,則所述方法還包括: 選擇已經(jīng)被選擇以運行另一個線程的指令序列的處理器核心作為所述潛在的處理器核心;以及 將所述潛在的處理器核心的安全模式改變?yōu)榕c所述安全條件對應(yīng)。
8.根據(jù)權(quán)利要求1至7中的任何一項所述的方法,所述方法包括: 運行具有相同優(yōu)先級水平的多個線程的指令序列; 確定在所述多核處理器的處理器核心上是否存在以便能夠由所述多核處理器運行所有的線程的安全狀態(tài)的組合;以及 如果否,則以循環(huán)方式改變所述處理器核心的安全狀態(tài),以便能夠運行所述多個線程的所述指令序列的一部分,同時所述多個線程的其它指令序列等待運行。
9.根據(jù)權(quán)利要求1至8中的任何一項所述的方法,其中裝置包括所述多核處理器,以及效率涉及所述多核處理器的工作負(fù)載。
10.根據(jù)權(quán)利要求9所述的方法,所述方法包括:提供包括針對所述潛在處理器核心的指令序列的第一二進制代碼;以及提供包括針對所述多核處理器的另一個處理器核心的指令序列的第二二進制代碼。
11.根據(jù)權(quán)利要求1至10中的任何一項所述的方法,所述方法包括:使用異構(gòu)處理器作為所述多核處理器,其中至少兩個處理器核心的指令集是至少部分不同的。
12.根據(jù)權(quán)利要求1至11中的任何一項所述的方法,所述方法包括:提供針對每個處理器核心的線程隊列,所述線程隊列包括關(guān)于在所述線程隊列中的線程的狀態(tài)的信息和所述安全條件。
13.根據(jù)權(quán)利要求1至12中的任何一項所述的方法,所述方法包括:使用所述多核處理器核心作為移動終端的組件。
14.一種裝置,包括至少一個處理器和包含計算機程序代碼的至少一個存儲器,所述至少一個存儲器和所述計算機程序代碼被配置為使用所述至少一個處理器使得所述裝置: 檢查與線程的指令序列有關(guān)的信息以確定所述線程的安全條件; 通過使用所述安全條件,確定多核處理器中的哪個處理器核心具有滿足所述安全條件的合適的安全模式; 如果所述確定指示的是,所述多核處理器中的具有所述合適的安全模式的一個或多個處理器核心是可以使用的,則選擇所述一個或多個處理器核心中的一個處理器核心作為潛在的處理器核心以運行第一線程的指令序列。
15.根據(jù)權(quán)利要求14所述的裝置,其中所述確定包括:檢查具有所述合適的安全模式的所述一個或多個處理器核心中的任何處理器核心是否是空閑的以用于運行所述線程的所述指令序列;以及如果是,則在所述一個或多個處理器核心之中選擇是空閑的以用于運行所述線程的所述指令序列的那個處理器核心作為所述潛在的處理器核心。
16.根據(jù)權(quán)利要求14或15所述的裝置,所述至少一個存儲器具有存儲在其上的代碼,當(dāng)由所述至少一個處理器運行所述代碼時,所述代碼還使得所述裝置: 如果所述檢查指示的是,具有所述合適的安全模式的所述一個或多個處理器核心中的任何處理器核心不是空閑的以用于運行所述線程的所述指令序列,則檢查是否存在是空閑的以用于運行所述線程的所述指令序列的另一個處理器核心;以及如果是,則檢查是空閑的以用于運行所述線程的所述指令序列的所述處理器核心的安全模式是否能夠被改變以滿足所述安全條件;以及如果能夠,則改變所述處理器核心的所述安全模式以滿足所述安全條件。
17.根據(jù)權(quán)利要求14、15或16所述的裝置,其中所述選擇包括:檢查是否存在可用于被選擇作為所述潛在的處理器核心的超過一個的處理器核心;以及如果是,則比較所述超過一個的處理器核心的可以使用的安全模式以確定哪個處理器核心提供最接近于所述安全條件的安全模式但是仍然滿足所述線程的所有安全要求。
18.根據(jù)權(quán)利要求14至17中的任何一項所述的裝置,所述至少一個存儲器具有存儲在其上的代碼,當(dāng)由所述至少一個處理器運行所述代碼時,所述代碼還使得所述裝置確定針對所述線程的優(yōu)先級;以及使用所述優(yōu)先級以確定在下一個時間片內(nèi)向哪個線程提供處理時間。
19.根據(jù)權(quán)利要求18所述的裝置,所述至少一個存儲器具有存儲在其上的代碼,當(dāng)由所述至少一個處理器運行所述代碼時,所述代碼還使得所述裝置針對具有相同優(yōu)先級以及被選擇由相同的處理器核心運行的線程,使用循環(huán)調(diào)度法。
20.根據(jù)權(quán)利要求14至19中的任何一項所述的裝置,所述至少一個存儲器具有存儲在其上的代碼,當(dāng)由所述至少一個處理器運行所述代碼時,所述代碼還使得所述裝置通過以下中的至少一個來執(zhí)行所述檢查以及重定向: 檢查所述多核處理器的處理器核心中的任何處理器核心是否是空閑的以用于運行所述線程的所述指令序列;以及 如果否, 則選擇已經(jīng)被選擇以運行另一個線程的指令序列的處理器核心作為所述潛在的處理器核心;以及 將所述潛在的處理器核心的安全模式改變?yōu)榕c所述安全條件對應(yīng)。
21.根據(jù)權(quán)利要求14至20中的任何一項所述的裝置,所述至少一個存儲器具有存儲在其上的代碼,當(dāng)由所述至少一個處理器運行所述代碼時,所述代碼還使得所述裝置: 運行具有相同優(yōu)先級水平的多個線程的指令序列; 確定在所述多核處理器的處理器核心上是否存在以便能夠由所述多核處理器運行所有的線程的安全狀態(tài)的組合;以及 如果否,則以循環(huán)方式改變所述處理器核心的安全狀態(tài),以便能夠運行所述多個線程的所述指令序列的一部分,同時所述多個線程的其它指令序列等待運行。
22.根據(jù)權(quán)利要求14至21中的任何一項所述的裝置,其中效率涉及所述多核處理器的工作負(fù)載。
23.根據(jù)權(quán)利要求22所述的裝置,所述至少一個存儲器具有存儲在其上的代碼,當(dāng)由所述至少一個處理器運行所述代碼時,所述代碼還使得所述裝置提供包括針對所述潛在處理器核心的指令序列的第一二進制代碼;以及提供包括針對所述多核處理器的另一個處理器核心的指令序列的第二二進制代碼。
24.根據(jù)權(quán)利要求14至23中的任何一項所述的裝置,所述至少一個存儲器具有存儲在其上的代碼,當(dāng)由所述至少一個處理器運行所述代碼時,所述代碼還使得所述裝置使用異構(gòu)處理器作為所述多核處理器,其中至少兩個處理器核心的指令集是至少部分不同的。
25.根據(jù)權(quán)利要求14至24中的任何一項所述的裝置,所述至少一個存儲器具有存儲在其上的代碼,當(dāng)由所述至少一個處理器運行所述代碼時,所述代碼還使得所述裝置提供針對每個處理器核心的線程隊列,所述線程隊列包括關(guān)于在所述線程隊列中的線程的狀態(tài)的信息和所述安全條件。
26.根據(jù)權(quán)利要求14至25中的任何一項所述的裝置,其中所述裝置是移動終端的組件。
27.—種計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行所述一個或多個指令的一個或多個序列時,所述一個或多個指令的一個或多個序列使得裝置至少執(zhí)行以下: 檢查與線程的指令序列有關(guān)的信息以確定所述線程的安全條件; 通過使用所述安全條件,確定多核處理器中的哪個處理器核心具有滿足所述安全條件的合適的安全模式; 如果所述確定指示的是,所述多核處理器中的具有所述合適的安全模式的一個或多個處理器核心是可以使用的,則選擇所述一個或多個處理器核心中的一個處理器核心作為潛在的處理器核心以運行第一線程的指令序列。
28.根據(jù)權(quán)利要求27所述的計算機程序產(chǎn)品,其中所述確定包括:檢查具有所述合適的安全模式的所述一個或多個處理器核心中的任何處理器核心是否是空閑的以用于運行所述線程的所述指令序列;以及如果是,則在所述一個或多個處理器核心之中選擇是空閑的以用于運行所述線程的所述指令序列的那個處理器核心作為所述潛在的處理器核心。
29.根據(jù)權(quán)利要求27或28所述的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行所述一個或多個指令的一個或多個序列時,所述一個或多個指令的一個或多個序列使得裝置: 如果所述檢查指示的是,具有所述合適的安全模式的所述一個或多個處理器核心中的任何處理器核心不是空閑的以用于運行所述線程的所述指令序列,則檢查是否存在是空閑的以用于運行所述線程的所述指令序列的另一個處理器核心;以及 如果是,則檢查是空閑的以用于運行所述線程的所述指令序列的所述處理器核心的安全模式是否能夠被改變以滿足所述安全條件;以及如果能夠,則改變所述處理器核心的所述安全模式以滿足所述安全條件。
30.根據(jù)權(quán)利要求27、28或29所述的計算機程序產(chǎn)品,其中所述選擇包括:檢查是否存在可用于被選擇作為所述潛在的處理器核心的超過一個的處理器核心;以及如果是,則比較所述超過一個的處理器核心的可以使用的安全模式以確定哪個處理器核心提供最接近于所述安全條件的安全模式但是仍然滿足所述線程的所有安全要求。
31.根據(jù)權(quán)利要求27至30中的任何一項所述的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行所述一個或多個指令的一個或多個序列時,所述一個或多個指令的一個或多個序列使得裝置確定針對所述線程的優(yōu)先級;以及使用所述優(yōu)先級以確定在下一個時間片內(nèi)向哪個線程提供處理時間。
32.根據(jù)權(quán)利要求31所述的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行所述一個或多個指令的一個或多個序列時,所述一個或多個指令的一個或多個序列使得裝置針對具有相同優(yōu)先級以及被選擇由相同的處理器核心運行的線程,使用循環(huán)調(diào)度法。
33.根據(jù)權(quán)利要求27至32中的任何一項所述的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行所述一個或多個指令的一個或多個序列時,所述一個或多個指令的一個或多個序列使得裝置: 檢查所述多核處理器的處理器核心中的任何處理器核心是否是空閑的以用于運行所述線程的所述指令序列;以及 如果否, 則選擇已經(jīng)被選擇以運行另一個線程的指令序列的處理器核心作為所述潛在的處理器核心;以及 將所述潛在的處理器核心的安全模式改變?yōu)榕c所述安全條件對應(yīng)。
34.根據(jù)權(quán)利要求27至33中的任何一項所述的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行所述一個或多個指令的一個或多個序列時,所述一個或多個指令的一個或多個序列使得裝置: 運行具有相同優(yōu)先級水平的多個線程的指令序列; 確定在所述多核處理器的處理器核心上是否存在以便能夠由所述多核處理器運行所有的線程的安全狀態(tài)的組合;以及 如果否,則以循環(huán)方式改變所述處理器核心的安全狀態(tài),以便能夠運行所述多個線程的所述指令序列的一部分,同時所述多個線程的其它指令序列等待運行。
35.根據(jù)權(quán)利要求27至34中的任何一項所述的計算機程序產(chǎn)品,其中裝置包括所述多核處理器,以及效率涉及所述多核處理器的工作負(fù)載。
36.根據(jù)權(quán)利要求35所述的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行所述一個或多個指令的一個或多個序列時,所述一個或多個指令的一個或多個序列使得裝置至少提供包括針對所述潛在處理器核心的指令序列的第一二進制代碼;以及提供包括針對所述多核處理器的另一個處理器核心的指令序列的第二二進制代碼。
37.根據(jù)權(quán)利要求27至36中的任何一項所述的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行所述一個或多個指令的一個或多個序列時,所述一個或多個指令的一個或多個序列使得裝置至少使用異構(gòu)處理器作為所述多核處理器,其中至少兩個處理器核心的指令集是至少部分不同的。
38.根據(jù)權(quán)利要求27至37中的任何一項所述的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包含一個或多個指令的一個或多個序列,當(dāng)由一個或多個處理器運行所述一個或多個指令的一個或多個序列時,所述一個或多個指令的一個或多個序列使得裝置至少提供針對每個處理器核心的線程隊列,所述線程隊列包括關(guān)于在所述線程隊列中的線程的狀態(tài)的信息和所述安全條件。
39.根據(jù)權(quán)利要求27至38中的任何一項所述的計算機程序產(chǎn)品,其中所述計算機程序產(chǎn)品是移動終端的軟件的一部分。
40.一種裝置,包括: 多核處理器,其包括至少第一處理器核心和第二處理器核心; 被配置為在所述多核處理器的處理器核心中運行的第一線程的指令序列; 檢查單元,其被配置為: 檢查與線程的指令序列有關(guān)的信息以確定所述線程的安全條件; 通過使用所述安全條件,確定多核處理器中的哪個處理器核心具有滿足所述安全條件的合適的安全模式; 如果所述確定指示的是,所述多核處理器中的具有所述合適的安全模式的一個或多個處理器核心是可以使用的,則選擇所述一個或多個處理器核心中的一個處理器核心作為潛在的處理器核心以運行第一線程的所述指令序列。
41.根據(jù)權(quán)利要求40所述的裝置,其中所述裝置是移動終端的組件。
42.一種裝置,包括: 用于檢查與線程的指令序列有關(guān)的信息以確定所述線程的安全條件的構(gòu)件; 用于通過使用所述安全條件,確定多核處理器中的哪個處理器核心具有滿足所述安全條件的合適的安全模式的構(gòu)件; 用于如果所述確定指示的是,所述多核處理器中的具有所述合適的安全模式的一個或多個處理器核心是可以使用的,則選擇所述一個或多個處理器核心中的一個處理器核心作為潛在的處理器核心以運行第一線程的所述指令序列的構(gòu)件。
43.根據(jù)權(quán)利要求42所述的裝置,所述裝置包括用于檢查具有所述合適的安全模式的所述一個或多個處理器核心中的任何處理器核心是否是空閑的以用于運行所述線程的所述指令序列;以及如果是,則在所述一個或多個處理器核心之中選擇是空閑的以用于運行所述線程的所述指令序列的那個處理器核心作為所述潛在的處理器核心的構(gòu)件。
44.根據(jù)權(quán)利要求42或43所述的裝置,其中所述用于檢查的構(gòu)件包括:用于如果具有所述合適的安全模式的所述一個或多個處理器核心中的任何處理器核心不是空閑的以用于運行所述線程的所述指令序列,則檢查是否存在是空閑的以用于運行所述線程的所述指令序列的另一個處理器核心;以及如果是,則檢查是空閑的以用于運行所述線程的所述指令序列的所述處理器核心的安全模式是否能夠被改變以滿足所述安全條件;以及如果能夠,則改變所述處理器核心的所述安全模式以滿足所述安全條件的構(gòu)件。
45.根據(jù)權(quán)利要求42、43或44所述的裝置,所述裝置包括:用于檢查是否存在可用于被選擇作為所述潛在的處理器核心的超過一個的處理器核心;以及如果是,則比較所述超過一個的處理器核心的可以使用的安全模式以確定哪個處理器核心提供最接近于所述安全條件的安全模式但是仍然滿足所述線程的所有安全要求的構(gòu)件。
46.根據(jù)權(quán)利要求42至45中的任何一項所述的裝置,所述裝置包括:用于確定針對所述線程的優(yōu)先級的構(gòu)件;以及用于使用所述優(yōu)先級以確定在下一個時間片內(nèi)向哪個線程提供處理時間的構(gòu)件。
47.根據(jù)權(quán)利要求46所述的裝置,所述裝置包括:用于針對具有相同優(yōu)先級以及被選擇由相同的處理器核心運行的線程,使用循環(huán)調(diào)度法的構(gòu)件。
48.根據(jù)權(quán)利要求42至47中的任何一項所述的裝置,所述裝置包括: 用于檢查所述多核處理器的處理器核心中的任何處理器核心是否是空閑的以用于運行所述線程的所述指令序列的構(gòu)件; 用于選擇已經(jīng)被選擇以運行另一個線程的指令序列的處理器核心作為所述潛在的處理器核心的構(gòu)件;以及 用于將所述潛在的處理器核心的安全模式改變?yōu)榕c所述安全條件對應(yīng)的構(gòu)件。
49.根據(jù)權(quán)利要求42至48中的任何一項所述的裝置,所述裝置包括: 用于運行具有相同優(yōu)先級水平的多個線程的指令序列的構(gòu)件; 用于確定在所述多核處理器的處理器核心上是否存在以便能夠由所述多核處理器運行所有的線程的安全狀態(tài)的組合的構(gòu)件;以及 用于如果在所述多核處理器的處理器核心上不存在以便能夠由所述多核處理器運行所有線程的安全狀態(tài)的組合,則以循環(huán)方式改變所述處理器核心的安全狀態(tài),以便能夠運行所述多個線程的所述指令序列的一部分,同時所述多個線程的其它指令序列等待運行的構(gòu)件。
50.根據(jù)權(quán)利要求42至49中的任何一項所述的裝置,其中所述裝置包括所述多核處理器,以及效率涉及所述多核處理器的工作負(fù)載。
51.根據(jù)權(quán)利要求50所述的裝置,所述裝置包括:用于提供包括針對所述潛在處理器核心的指令序列的第一二進制代碼的構(gòu)件;以及用于提供包括針對所述多核處理器的另一個處理器核心的指令序列的第二二進制代碼的構(gòu)件。
52.根據(jù)權(quán)利要求42至51中的任何一項所述的裝置,所述裝置包括:用于使用異構(gòu)處理器作為所述多核處理器的構(gòu)件,其中至少兩個處理器核心的指令集是至少部分不同的。
53.根據(jù)權(quán)利要求38至52中的任何一項所述的裝置,所述裝置包括:用于提供針對每個處理器核心的線程隊列的構(gòu)件,所述線程隊列包括關(guān)于在所述線程隊列中的線程的狀態(tài)的信息和所述安全條件。
54.根據(jù)權(quán)利要求38至53中的任何一項所述的裝置,所述裝置包括:用于使用所述多核處理器核心作為移動終端的組件的構(gòu)件。
【文檔編號】G06F9/48GK104471587SQ201280074716
【公開日】2015年3月25日 申請日期:2012年5月16日 優(yōu)先權(quán)日:2012年5月16日
【發(fā)明者】M·拉蒂馬基 申請人:諾基亞公司