專利名稱:具有非對稱處理器核的系統(tǒng)上的虛擬機(jī)和/或多級調(diào)度支持的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī),尤其涉及具有非對稱處理器核的系統(tǒng)。
背景技術(shù):
計(jì)算機(jī)制造商常常使用包括多個(gè)處理器核的芯片以提升性能??赡馨l(fā)生這種情況同一芯片上的不同處理器核支持不同的特征,這可被稱為非對稱處理器核。然而,在計(jì)算機(jī)中使用非對稱處理器核并非沒有自己的問題。一個(gè)這樣的問題是可能難以在這樣的計(jì)算機(jī)上運(yùn)行具有多個(gè)虛擬處理器核的虛擬機(jī),因?yàn)樵谔摂M處理器核以及運(yùn)行該虛擬處理器核的計(jì)算機(jī)的特定處理器核之間通常不存在永久的關(guān)聯(lián)。這可導(dǎo)致這樣的情況虛擬處理器核被限于只使用全部物理處理器核所支持的特征,這減少了具有非對稱處理器核的益處。在計(jì)算機(jī)中使用非對稱處理器核的另一問題是操作系統(tǒng)和應(yīng)用程序可能難以管理它們在其上運(yùn)行的系統(tǒng)的異構(gòu)本質(zhì)。這可導(dǎo)致這樣的情況系統(tǒng)線程或應(yīng)用程序線程被調(diào)度在不支持該線程所使用的功能的核上,并且由于要執(zhí)行未對特定核定義的指令的嘗試,在某些情況下可導(dǎo)致功能問題,在其他情況下可能導(dǎo)致性能問題。
發(fā)明內(nèi)容
提供本發(fā)明內(nèi)容以便以簡化形式介紹將在以下的具體實(shí)施方式
中進(jìn)一步描述的一些概念。本發(fā)明內(nèi)容并不旨在標(biāo)識出所要求保護(hù)的主題的關(guān)鍵或必要特征,也不旨在用于限定所要求保護(hù)的主題的范圍。根據(jù)一個(gè)或多個(gè)方面,標(biāo)識計(jì)算設(shè)備的一個(gè)或多個(gè)處理器的多個(gè)物理處理器核中的每一個(gè)所支持的一個(gè)或多個(gè)特征。還標(biāo)識計(jì)算設(shè)備的虛擬機(jī)的多個(gè)虛擬處理器核。還至少部分地基于多個(gè)物理處理器核中的每一個(gè)所支持的一個(gè)或多個(gè)特征以及虛擬機(jī)的虛擬處理器核的數(shù)量來確定要對虛擬機(jī)的虛擬處理器核可用的多個(gè)物理處理器核的一組一個(gè)或多個(gè)特征。使得多個(gè)物理核的該組一個(gè)或多個(gè)特征對虛擬機(jī)的虛擬處理器核可用。根據(jù)一個(gè)或多個(gè)方面,從其上對計(jì)算設(shè)備的虛擬機(jī)管理器所管理的虛擬機(jī)的虛擬處理器核進(jìn)行調(diào)度的物理處理器核接收未定義的操作碼異常。標(biāo)識引起未定義操作碼異常的指令,并作出關(guān)于該指令是否被計(jì)算設(shè)備的一個(gè)或多個(gè)物理處理器核支持的檢查。如果指令不被一個(gè)或多個(gè)物理處理器核支持,則將該指令提供給計(jì)算設(shè)備的操作系統(tǒng)(例如, 包括虛擬處理器核的虛擬機(jī)的主操作系統(tǒng)或客操作系統(tǒng))。如果指令被一個(gè)或多個(gè)物理處理器核支持,則將虛擬處理器核調(diào)度在與當(dāng)未定義操作碼異常產(chǎn)生時(shí)該虛擬處理器核被調(diào)度在其上的不同的物理處理器核上,并且在將虛擬處理器核調(diào)度到不同的物理處理器核上之后,向該虛擬處理器核指示要再次執(zhí)行該指令的嘗試。根據(jù)一個(gè)或多個(gè)方面,對于計(jì)算設(shè)備的多個(gè)處理器核中的每一個(gè),標(biāo)識處理器所支持的一個(gè)或多個(gè)特征。計(jì)算設(shè)備的操作系統(tǒng)的操作系統(tǒng)級調(diào)度程序調(diào)度多個(gè)應(yīng)用程序以便在多個(gè)處理器核上執(zhí)行。一個(gè)應(yīng)用程序的用戶級調(diào)度程序調(diào)度多個(gè)應(yīng)用程序中的一個(gè)應(yīng)用程序的應(yīng)用線程以便在一個(gè)或多個(gè)處理器核上執(zhí)行。
在全部附圖中,使用相同的附圖標(biāo)記來指示相同的特征。圖1示出根據(jù)一個(gè)或多個(gè)實(shí)施例的實(shí)現(xiàn)具有非對稱處理器核的系統(tǒng)上的虛擬機(jī)和/或多級調(diào)度支持的示例計(jì)算設(shè)備的框圖。圖2示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的運(yùn)行多個(gè)虛擬機(jī)的示例計(jì)算設(shè)備。圖3示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的運(yùn)行多個(gè)虛擬機(jī)的示例計(jì)算設(shè)備。圖4是示出根據(jù)一個(gè)或多個(gè)實(shí)施例的虛擬機(jī)管理器確定可用于虛擬機(jī)的虛擬核的一組特征的示例過程的流程圖。圖5是示出根據(jù)一個(gè)或多個(gè)實(shí)施例的用于對虛擬核進(jìn)行重新調(diào)度的示例過程的流程圖。圖6示出根據(jù)一個(gè)或多個(gè)實(shí)施例的實(shí)現(xiàn)多級調(diào)度程序模型的示例計(jì)算設(shè)備。圖7是示出根據(jù)一個(gè)或多個(gè)實(shí)施例的用于實(shí)現(xiàn)多級調(diào)度程序模型的示例計(jì)算設(shè)備的示例過程的流程圖。圖8示出根據(jù)一個(gè)或多個(gè)實(shí)施例的可被配置成實(shí)現(xiàn)具有非對稱處理器核的系統(tǒng)上的虛擬機(jī)和/或多級調(diào)度支持的示例計(jì)算設(shè)備。
具體實(shí)施例方式本文描述了具有非對稱處理器核的系統(tǒng)上的虛擬機(jī)和/或多級調(diào)度支持。在一個(gè)或多個(gè)實(shí)施例中,計(jì)算設(shè)備上的虛擬機(jī)管理器標(biāo)識由計(jì)算設(shè)備的物理處理器核中的每一個(gè)所支持的特征。虛擬機(jī)管理器確定要使得哪些物理處理器核的特征對計(jì)算設(shè)備上的虛擬機(jī)的虛擬處理器核可用。這一判斷是例如基于各個(gè)處理器核中的每一個(gè)的特征以及虛擬機(jī)中包括多少虛擬處理器核來作出的。另外,可能發(fā)生這樣的情形,其中要在虛擬處理器核上執(zhí)行指令的嘗試導(dǎo)致來自其上調(diào)度虛擬處理器核的物理處理器核的、指示該指令是未定義的指示(指示該物理處理器核不支持該指令)。在這種情形中,虛擬機(jī)管理器為支持該指令的另一物理處理器核調(diào)度該虛擬處理器核。另外,在一個(gè)或多個(gè)實(shí)施例中,特征目錄管理器標(biāo)識并維護(hù)計(jì)算設(shè)備的多個(gè)處理器核中的每一個(gè)所支持的特征以及相關(guān)聯(lián)的特征屬性的記錄。使用兩級調(diào)度程序模型,其中操作系統(tǒng)中的第一級調(diào)度程序?yàn)槎鄠€(gè)處理器核調(diào)度應(yīng)用程序。每一應(yīng)用程序包括為該應(yīng)用程序調(diào)度用戶模式調(diào)度(UMQ的線程以在特定的處理器核上運(yùn)行的第二級調(diào)度程序。第二級調(diào)度程序可至少部分地基于處理器核所支持的特征(如在特征目錄管理器中標(biāo)識的) 和/或該線程以內(nèi)核模式還是以用戶模式執(zhí)行來調(diào)度UMS線程。圖1是示出根據(jù)一個(gè)或多個(gè)實(shí)施例的實(shí)現(xiàn)具有非對稱處理器核的系統(tǒng)上的虛擬機(jī)和/或多級調(diào)度支持的示例計(jì)算設(shè)備100的框圖。計(jì)算設(shè)備100可以是各種不同類型的設(shè)備。例如,計(jì)算設(shè)備100可以是服務(wù)器計(jì)算機(jī)、分布式處理環(huán)境中的節(jié)點(diǎn)、臺式計(jì)算機(jī)、移動站、筆記本電腦或膝上型計(jì)算機(jī)、筆記本型或平板計(jì)算機(jī)、娛樂設(shè)備、通信地耦合到顯示設(shè)備的機(jī)頂盒、電視機(jī)、蜂窩式或其他無線電話、游戲控制臺、車載計(jì)算機(jī)等等。因而,計(jì)算設(shè)備100的范圍可以是從具有充足存儲器和處理器資源的全資源設(shè)備(如個(gè)人計(jì)算機(jī)、游戲控制臺)到具有有限存儲器和/或處理資源的低資源設(shè)備(如傳統(tǒng)機(jī)頂盒、手持式游戲控制臺)。虛擬機(jī)(VM)管理器104在一個(gè)或多個(gè)(χ)物理處理器核106 (1),. . .,106 (χ)上運(yùn)行或執(zhí)行。一個(gè)或多個(gè)虛擬機(jī)管理器104可在物理處理器核106上運(yùn)行。每一物理處理器核106,也被稱為物理核,是用于執(zhí)行指令的獨(dú)特的硬件處理器或執(zhí)行核。多個(gè)物理核通常被包括在單個(gè)芯片或集成電路中,這也可被稱為多核芯片或多核處理器。雖然多個(gè)物理核可被包括在單個(gè)芯片中,但應(yīng)該注意,多個(gè)這樣的芯片(各自包括多個(gè)核)可被包括在計(jì)算設(shè)備100中。計(jì)算設(shè)備100的各種附加組件也可對虛擬機(jī)(VM)管理器104可用,諸如存儲器組件、存儲設(shè)備、通信組件等等。雖然被分開地示出,但應(yīng)該注意,虛擬機(jī)管理器104可另選地作為主操作系統(tǒng)102的一部分來包括。虛擬機(jī)管理器104允許主操作系統(tǒng)102和一個(gè)或多個(gè)虛擬機(jī)在計(jì)算設(shè)備100上運(yùn)行。虛擬機(jī)指的是與物理計(jì)算設(shè)備類似的、可運(yùn)行程序的計(jì)算設(shè)備(或其他機(jī)器或系統(tǒng)) 的軟件實(shí)現(xiàn)。虛擬機(jī)包括與計(jì)算設(shè)備的物理核相似(但作為其軟件實(shí)現(xiàn))的一個(gè)或多個(gè)虛擬處理器核,也被稱為虛擬核。操作系統(tǒng)以及其他應(yīng)用程序可以像它們在物理核上執(zhí)行一樣地在虛擬核上執(zhí)行——在虛擬核上執(zhí)行的操作系統(tǒng)和其他應(yīng)用程序不知道它們正在虛擬核上執(zhí)行。單個(gè)虛擬機(jī)108被示為在計(jì)算設(shè)備100中,雖然另選地多個(gè)虛擬機(jī)可在計(jì)算設(shè)備 100上運(yùn)行。虛擬機(jī)管理器104調(diào)度虛擬核以便在一個(gè)或多個(gè)物理核106上執(zhí)行,以使得要由虛擬核執(zhí)行的操作系統(tǒng)和其他應(yīng)用程序指令由物理核106執(zhí)行。為其調(diào)度虛擬核的特定物理核106可隨著時(shí)間改變。虛擬機(jī)108包括客操作系統(tǒng)112、一個(gè)或多個(gè)應(yīng)用程序114以及一個(gè)或多個(gè)(y)虛擬核116(1),...,116 (y)。客操作系統(tǒng)112在一個(gè)或多個(gè)虛擬核116 (1),...,116 (y)上運(yùn)行或執(zhí)行,并管理應(yīng)用程序114的執(zhí)行。虛擬機(jī)管理器104包括虛擬機(jī)控制模塊122。虛擬機(jī)控制模塊122通過與虛擬機(jī) 108通信并調(diào)度虛擬核116以便在物理核106上執(zhí)行來管理虛擬機(jī)108。虛擬機(jī)管理器104支持其中物理核106支持不同特征(被稱為非對稱物理核)的情形。應(yīng)該注意,兩個(gè)或更多個(gè)物理核106可支持相同的特征,雖然對于非對稱物理核,至少一個(gè)物理核106支持與至少一個(gè)其他物理核106不同的特征。主操作系統(tǒng)102包括為每一物理核106標(biāo)識該物理核106支持的特征的核特征跟蹤模塊124。物理核106的特征指的是物理核106支持的特定功能。如果物理核106可執(zhí)行提供一特征的類型的指令(例如,理解操作碼(opcode)),則物理核106支持該特征??捎貌煌绞絹順?biāo)識物理核106支持的特征,諸如按特定功能(例如,包括多個(gè)指令類型的特征的名稱或類型)、按各個(gè)指令類型等。例如,物理核106可指示其支持作為特征的基礎(chǔ)x86 指令集,其支持作為特征的硬件AES (高級加密標(biāo)準(zhǔn))加密/解密,其支持作為特征的快速 128位向量擴(kuò)展(例如,流SIMD擴(kuò)展(SSE))等等。核特征跟蹤模塊124可標(biāo)識物理核106 支持的所有特征,或另選地僅標(biāo)識所選特征。例如,所有物理核106可被假定為支持特定特征(諸如基礎(chǔ)x86指令集),而由核特征跟蹤模塊IM標(biāo)識的特征是對這些特定特征的擴(kuò)展 (例如,支持硬件AES加密/解密、支持快速1 位向量擴(kuò)展等等)。
核特征跟蹤模塊IM可按各種不同的方式來標(biāo)識特定物理核106支持的特征。在一個(gè)或多個(gè)實(shí)施例中,核特征跟蹤模塊124向物理核106查詢對物理核106中的每一個(gè)所支持的特征的指示。核特征跟蹤模塊1 可維護(hù)這些特征的記錄(例如,已知特征以及支持那些特征的核106的樹圖),并在虛擬機(jī)管理器104在稍后被重新執(zhí)行時(shí)檢索該記錄,或者另選地,可在每一次虛擬機(jī)管理器104執(zhí)行時(shí)重新查詢物理核106而非維護(hù)特征的記錄。 在其他實(shí)施例中,核特征跟蹤模塊1 按不同方式來標(biāo)識物理核106支持的特征,諸如通過向虛擬機(jī)管理器104查詢對每一物理核106支持的特征的指示、訪問將所支持的特征與特定物理核相關(guān)聯(lián)(例如,基于序列號、型號或每一物理核106的其他標(biāo)識符)的數(shù)據(jù)庫或其他記錄,等等。核特征跟蹤模塊IM還包括對提供物理核106所支持的特征的指令的指示。核特征跟蹤模塊1 可按不同方式來標(biāo)識哪些指令提供哪些特征,諸如通過被預(yù)先配置有對哪些指令提供哪些特征的指示、從物理核106接收對哪些指令提供哪些特征的指示、從操作系統(tǒng)102和/或計(jì)算設(shè)備100的其他組件或模塊接收對哪些指令提供哪些特征的指示,等寸。虛擬機(jī)控制模塊122確定一個(gè)或多個(gè)物理核106支持的、要對虛擬核116可用的一組特征。虛擬核116支持的特征是由虛擬機(jī)控制模塊122使其對虛擬核116可用的特征。 虛擬核116使得該組特征對客操作系統(tǒng)112可用(并因此對應(yīng)用程序114可用)。應(yīng)該注意,并非所有物理核106支持的所有特征都可對虛擬核116可用,如下文更詳細(xì)地討論的。虛擬機(jī)管理器104具有有多少虛擬核116被包括在虛擬機(jī)108中的知識。通常在虛擬機(jī)管理器104接收到要創(chuàng)建或執(zhí)行虛擬機(jī)108的請求時(shí)向虛擬機(jī)管理器104告知虛擬機(jī)108中的虛擬核116的數(shù)量。另選地,可在其他時(shí)間向虛擬機(jī)管理器104告知虛擬機(jī)108 中的虛擬核116的數(shù)量。在一個(gè)或多個(gè)實(shí)施例中,虛擬機(jī)控制模塊122至少部分地基于虛擬機(jī)108中的虛擬核116的數(shù)量以及物理核106中的每一個(gè)所支持的特征來確定要使得哪些特征對虛擬核 116可用。在這些實(shí)施例中,如果一特征由至少與虛擬機(jī)108中的虛擬核116—樣多的物理核106支持,則虛擬機(jī)控制模塊122確定要使得該特征對虛擬核116可用。例如,如果虛擬機(jī)108包括4個(gè)虛擬核116而僅有2個(gè)物理核106支持硬件AES加密/解密,則硬件AES 加密/解密確定為不使其對虛擬核116可用的特征。作為另一示例,如果虛擬機(jī)108包括2 個(gè)虛擬核116且兩個(gè)或更多個(gè)物理核106支持快速1 位向量擴(kuò)展,則快速1 位向量擴(kuò)展被確定為要使其對虛擬核116可用的特征。因此,代替僅僅使得由所有物理核106支持的特征對虛擬核116可用,是否使得特定特征對虛擬核116可用是基于虛擬機(jī)108中的虛擬核116的數(shù)量以及支持該特定特征的物理核106的數(shù)量兩者的。圖2示出根據(jù)一個(gè)或多個(gè)實(shí)施例的運(yùn)行多個(gè)虛擬機(jī)的示例計(jì)算設(shè)備200。計(jì)算設(shè)備200可以是例如圖1的計(jì)算設(shè)備100。計(jì)算設(shè)備200包括4個(gè)物理核202、204、206和208, 其中的每一個(gè)支持不同的特征集合。各種不同的特征可由物理核202-208支持,而為便于解釋起見,參考被稱為特征A、B、C和D的四個(gè)不同特征來討論圖2。物理核202支持被稱為特征A、B、C和D的四個(gè)特征。物理核204包括三個(gè)特征特征A、B和C。物理核206包括三個(gè)特征特征A、B和C。物理核208支持一個(gè)特征特征A。計(jì)算設(shè)備200還包括三個(gè)虛擬機(jī)虛擬機(jī)210、虛擬機(jī)212和虛擬機(jī)214。虛擬機(jī)管理器220允許虛擬機(jī)210、212和214在計(jì)算設(shè)備200的物理核202-208上運(yùn)行。虛擬機(jī)管理器220可以是例如圖1的虛擬機(jī)管理器104。虛擬機(jī)210包括一個(gè)虛擬核。因?yàn)榇嬖谥С痔卣鰽、B、C和D的至少一個(gè)物理核 202-208,所以使得特征A、B、C和D對虛擬機(jī)210的虛擬核可用并被其支持。應(yīng)該注意,雖然虛擬機(jī)210的虛擬核支持特征A、B、C和D,但虛擬機(jī)210的虛擬核可由虛擬機(jī)管理器220 調(diào)度以在物理核202-208中的任一個(gè)上執(zhí)行。虛擬機(jī)212包括兩個(gè)虛擬核。因?yàn)榇嬖谥С痔卣鰽、B和C的至少兩個(gè)物理核 202-208,所以使得特征A、B、和C對虛擬機(jī)212的虛擬核可用并被其支持。因?yàn)橹淮嬖谥С痔卣鱀的一個(gè)物理核202-208,所以特征D并不被至少與虛擬機(jī)212中的虛擬核一樣多的物理核202-208支持。由此,不使得特征D對虛擬機(jī)212的虛擬核可用。應(yīng)該注意,雖然虛擬機(jī)212的虛擬核支持特征A、B和C,但虛擬機(jī)212的虛擬核可由虛擬機(jī)管理器220調(diào)度以在物理核202-208中的任一個(gè)上執(zhí)行。虛擬機(jī)214包括四個(gè)虛擬核。因?yàn)榇嬖谥С痔卣鰽的至少四個(gè)物理核202-208,所以使得特征A對虛擬機(jī)214的虛擬核可用并被其支持。因?yàn)橹С痔卣鰾、C和D中的每一個(gè)的物理核202-208少于四個(gè),所以特征B、C和D并不被至少與虛擬機(jī)214中的虛擬核一樣多的物理核202-208支持。由此,不使得特征B、C和D對虛擬機(jī)212的虛擬核可用。應(yīng)該注意,虛擬機(jī)214的虛擬核可由虛擬機(jī)管理器220調(diào)度以在物理核202-208中的任一個(gè)上執(zhí)行?;氐綀D1,在其他實(shí)施例中,虛擬機(jī)控制模塊122用其他方式來確定要使得哪些特征對虛擬核116可用。例如,如果一特征被至少一個(gè)物理核106支持,則虛擬機(jī)控制模塊 122可確定要使得該特征對虛擬核116可用。例如,如果硬件AES加密/解密被指曬一個(gè)物理核106支持,則硬件AES加密/解密被確定為要使其對虛擬核116可用的特征。圖3示出根據(jù)一個(gè)或多個(gè)實(shí)施例的運(yùn)行多個(gè)虛擬機(jī)的另一示例計(jì)算設(shè)備300。在圖3的示例中,如果一特征被至少一個(gè)物理核支持,則使得該特征對虛擬核可用。在圖3的示例中,在確定是否要使得一特征對虛擬核可用時(shí),不考慮虛擬核的數(shù)量。計(jì)算設(shè)備300可以是例如圖1的計(jì)算設(shè)備100。計(jì)算設(shè)備300包括四個(gè)物理核302、304、306和308,其中的每一個(gè)支持不同的特征集合。各種不同的特征可由物理核302-308支持,而為便于解釋起見,參考被稱為特征A、B、C和D的四個(gè)不同特征來討論圖3。物理核302支持被稱為特征 A、B、C和D的四個(gè)特征。物理核304包括三個(gè)特征特征A、B和C。物理核306支持兩個(gè)特征特征A和B。物理核308支持一個(gè)特征特征A。計(jì)算設(shè)備300還包括兩個(gè)虛擬機(jī)虛擬機(jī)310和虛擬機(jī)312。虛擬機(jī)管理器320允許虛擬機(jī)310和312在計(jì)算設(shè)備300的物理核302-308上運(yùn)行。虛擬機(jī)管理器320可以是例如圖1的虛擬機(jī)管理器104。虛擬機(jī)310包括兩個(gè)虛擬核。因?yàn)榇嬖谥С痔卣鰽、B、C和D的至少一個(gè)物理核 302-308,所以使得特征A、B、C和D對虛擬機(jī)310的兩個(gè)虛擬核可用并被其支持。類似地, 虛擬機(jī)312包括四個(gè)虛擬核。因?yàn)榇嬖谥С痔卣鰽、B、C和D的至少一個(gè)物理核302-308, 所以使得特征A、B、C和D對虛擬機(jī)310的四個(gè)虛擬核可用并被其支持。圖4是示出根據(jù)一個(gè)或多個(gè)實(shí)施例的虛擬機(jī)管理器確定要使其對虛擬機(jī)的虛擬核可用的一組特征的示例過程400的流程圖。過程400由例如計(jì)算設(shè)備的虛擬機(jī)管理器(諸如圖1的虛擬機(jī)管理器104)來執(zhí)行,并可以用軟件、固件、硬件、或其組合來實(shí)現(xiàn)。過程400被示為一組動作,不僅限于所示出的用于執(zhí)行各種動作的操作的順序。過程400是虛擬機(jī)管理器確定要使其對虛擬機(jī)的虛擬核可用的一組特征的示例過程;此處參考不同附圖來包括對虛擬機(jī)管理器確定要使其對虛擬機(jī)的虛擬核可用的一組特征的另外討論。在過程400中,標(biāo)識實(shí)現(xiàn)過程400的計(jì)算設(shè)備中的每一物理核所支持的一個(gè)或多個(gè)特征(動作40幻。這些特征可如上所討論地按不同方式來標(biāo)識。還標(biāo)識虛擬機(jī)的多個(gè)虛擬核(動作404)。如上所討論地在請求創(chuàng)建虛擬機(jī)時(shí),通常標(biāo)識虛擬機(jī)中有多少個(gè)虛擬核,雖然可另選地在其他時(shí)間進(jìn)行標(biāo)識。至少部分地基于虛擬核的數(shù)量來確定要使其對虛擬核可用的一組特征(動作 406)。該確定可以是例如如果如上所討論地一特征被至少與虛擬機(jī)中的虛擬核一樣多的物理核支持,則要使得該特征對虛擬核可用。使得在動作406中確定的一組特征對虛擬核可用(動作408)。因而,虛擬核可支持在動作406中確定的該組特征?;氐綀D1,被虛擬核116執(zhí)行的客操作系統(tǒng)112以及應(yīng)用程序114的指令實(shí)際上被物理核106執(zhí)行。虛擬機(jī)控制模塊122為不同物理核106調(diào)度虛擬核116,以使得由特定虛擬核116執(zhí)行的指令由為其調(diào)度虛擬核116的物理核106執(zhí)行。應(yīng)該注意,為其調(diào)度特定虛擬核116的特定物理核106可隨著時(shí)間變化,并且可由虛擬機(jī)控制模塊122改變。還應(yīng)該注意,可為同一物理核106調(diào)度多個(gè)虛擬核116。虛擬機(jī)控制模塊122可在為物理核106調(diào)度虛擬核116時(shí)采用各種不同的技術(shù)。 虛擬機(jī)控制模塊122可使對虛擬核116在物理核106上的調(diào)度基于例如每一物理核106的可用性、每一虛擬核116和/或虛擬機(jī)108所使用的帶寬,等等。在一個(gè)或多個(gè)實(shí)施例中,虛擬機(jī)控制模塊122使對虛擬核116在物理核106上的調(diào)度至少部分地基于每一物理核106所支持的特征??砂l(fā)生這種情形,其中虛擬核116所支持的特征并不由在其上調(diào)度該虛擬核116的物理核106所支持。例如,參考圖2,虛擬機(jī) 212的虛擬核支持特征C,但如果為物理核206調(diào)度虛擬機(jī)212的虛擬核并嘗試執(zhí)行特征C 的指令,則物理核206因?yàn)槠洳恢С痔卣鰿而無法執(zhí)行指令。當(dāng)其中虛擬核116嘗試執(zhí)行為其調(diào)度該虛擬核116的物理核106所不支持的指令的情形發(fā)生時(shí),物理核106指示錯誤或異常。該錯誤或異??梢允抢缥炊x的操作碼擴(kuò)展(也被稱為_。(例如,由主操作系統(tǒng)102)將物理核106所指示的錯誤或異常返回至虛擬機(jī)控制模塊122,而虛擬機(jī)控制模塊122確定該錯誤或異常是否是向虛擬核116指示為受支持但并不受為其調(diào)度虛擬核116的物理核106支持的特征的結(jié)果。虛擬機(jī)控制模塊 122結(jié)合物理核106的已知特征以及哪些指令提供哪些特征(例如,如由核特征跟蹤模塊 124所維護(hù)的)來維護(hù)要使其對物理核106可用的一組特征的記錄,可容易地確定錯誤或異常是否是向虛擬核116指示為受支持的但并不受為其調(diào)度虛擬核116的物理核106支持的特征的結(jié)果。另選地,虛擬機(jī)控制模塊122可用其他方式來確定錯誤或異常是否是向虛擬核116指示為受支持的但并不受為其調(diào)度虛擬核116的物理核106的支持的特征的結(jié)果, 諸如通過為支持最多特征的物理核106(例如,圖3的物理核30 調(diào)度該虛擬核一如果錯誤或異常持續(xù)存在,則該錯誤或異常不是向虛擬核116指示為受支持的但并不受為其調(diào)度虛擬核116的物理核106的支持的特征的結(jié)果。
如果虛擬機(jī)控制模塊122確定該錯誤或異常是向虛擬核116指示為受支持但并不受為其調(diào)度虛擬核116的物理核106的支持的特征的結(jié)果,則虛擬機(jī)控制模塊122為不同的物理核106調(diào)度該虛擬核116。在一個(gè)或多個(gè)實(shí)施例中,虛擬機(jī)控制模塊122為支持包括引起該錯誤或異常的指令的特征的物理核106調(diào)度該虛擬核116。物理核106可將引起該錯誤或異常的指令的指示作為該錯誤或異常的一部分返回至虛擬機(jī)控制模塊122。另選地,虛擬機(jī)控制模塊122可用其他方式為物理核106調(diào)度虛擬核116。例如,虛擬機(jī)控制模塊122可隨機(jī)地或根據(jù)某一其他規(guī)則或準(zhǔn)則選擇另一物理核。圖5是示出根據(jù)一個(gè)或多個(gè)實(shí)施例的對虛擬核進(jìn)行重新調(diào)度的示例過程500的流程圖。過程500由例如計(jì)算設(shè)備的虛擬機(jī)管理器(諸如圖1的虛擬機(jī)管理器104)來執(zhí)行, 并可以用軟件、固件、硬件、或其組合來實(shí)現(xiàn)。過程500被示為一組動作,不僅限于所示出的用于執(zhí)行各種動作的操作的順序。過程500是用于對虛擬核進(jìn)行重新調(diào)度的示例過程;此處參考不同附圖來包括對虛擬核進(jìn)行重新調(diào)度的附加討論。在過程500中,接收未定義操作碼異常(動作502)。響應(yīng)于要執(zhí)行物理核不支持的指令的嘗試,從物理核接收未定義操作碼異常(#UD)。響應(yīng)于接收到未定義操作碼異常,標(biāo)識引起該未定義操作碼異常的指令(動作 504)。該指令可由例如從其接收未定義操作碼異常的物理核來標(biāo)識。隨后作出關(guān)于除在動作502中從其接收未定義操作碼異常的物理核之外的另一物理核是否支持動作504中標(biāo)識的指令的檢查(動作506)。該檢查可如上所討論地例如基于對物理核所支持的特征的知識來作出。如果沒有其他的物理核支持在動作504中標(biāo)識的指令,則將未定義操作碼異常反映給操作系統(tǒng)(動作508)。該操作系統(tǒng)可以是主操作系統(tǒng)或客操作系統(tǒng),取決于引起該未定義操作碼異常的是主操作系統(tǒng)(或在主操作系統(tǒng)上運(yùn)行的應(yīng)用程序)的指令還是來自客操作系統(tǒng)(或在客操作系統(tǒng)上運(yùn)行的應(yīng)用程序)的指令。例如,如果引起該未定義操作碼異常的指令是由特定虛擬機(jī)的虛擬核執(zhí)行的,則將該未定義操作碼異常反映給該特定虛擬機(jī)的客操作系統(tǒng)。如果沒有物理核支持在動作504中標(biāo)識的指令,則該未定義操作碼異常是由于某一其他問題引起的,而非由于向虛擬核指示為受支持但并不受為其調(diào)度虛擬核的物理核的支持的特征。由此,將未定義操作碼異常提供給操作系統(tǒng)以便解決。然而,如果存在支持在動作504中標(biāo)識的指令的另一物理核,則為支持所標(biāo)識的指令的另一物理核調(diào)度嘗試執(zhí)行所標(biāo)識的引起該未定義操作碼異常的指令的虛擬核(動作510)。虛擬機(jī)控制模塊則向虛擬核指示嘗試再次執(zhí)行所標(biāo)識的指令(動作512)。因?yàn)闉橹С衷撝噶畹奈锢砗苏{(diào)度該虛擬核,這一執(zhí)行所標(biāo)識的指令的后續(xù)嘗試應(yīng)該不會導(dǎo)致未定義操作碼異常。在一個(gè)或多個(gè)實(shí)施例中,保持為支持該指令的物理核調(diào)度該虛擬核。因此向虛擬核提供了對該物理核的臨時(shí)親和性(affinity)或“粘性”,以使得在一時(shí)間量內(nèi)(例如,直到經(jīng)過了特定時(shí)間量、直到特定事件發(fā)生,諸如另一異?;蛘{(diào)度另一虛擬核以便在該物理核上執(zhí)行,等等)保持為該物理核調(diào)度該虛擬核。另選地,在執(zhí)行了所標(biāo)識的指令之后,可為不同的物理核(例如,在接收到未定義操作碼異常時(shí)為其調(diào)度該虛擬核的物理核) 重新調(diào)度該虛擬核。在一替換實(shí)施例中,在動作506中使用試錯法(trial and error)技術(shù)而非檢查另一物理核是否支持所標(biāo)識的指令。選擇另一物理核(例如,隨機(jī)選擇的物理核、比在動作502中從其接收未定義操作碼異常的物理核支持的特征多的物理核等等),在動作510中為所選物理核調(diào)度該虛擬核,隨后在動作512中虛擬機(jī)控制模塊向該虛擬核指示嘗試要再次執(zhí)行所標(biāo)識的指令。如果對所標(biāo)識的指令的嘗試執(zhí)行導(dǎo)致另一未定義操作碼異常,則重復(fù)過程500直到選擇了物理核中的每一個(gè)(或選擇了支持最多特征的物理核)。如果所標(biāo)識的指令被物理核執(zhí)行,則可在一時(shí)間量內(nèi)保持為該物理核調(diào)度該虛擬核。然而,如果所標(biāo)識的指令導(dǎo)致來自每一物理核的未定義操作碼異常,則在動作508中將該未定義操作碼異常反映給主操作系統(tǒng)?;氐綀D1,在一個(gè)或多個(gè)實(shí)施例中,虛擬機(jī)控制模塊122還監(jiān)視使用不同特征的頻率以及支持那些不同特征的物理核106。虛擬機(jī)控制模塊122可使用這一監(jiān)視來確定要使得哪些特征對后續(xù)虛擬機(jī)的虛擬核可用。例如,可為特征確定作為該特征的使用頻率除以支持該特征的物理核106的數(shù)量的使用指示。如果特定特征的使用指示超過閾值量,則虛擬機(jī)控制模塊122可確定不使得該特征對后續(xù)創(chuàng)建的虛擬機(jī)的虛擬核可用。虛擬機(jī)控制模塊122因此在創(chuàng)建那些新的虛擬機(jī)時(shí)可動態(tài)地使得特征對新的虛擬機(jī)可用或不可用。作為示例,假定有四個(gè)物理核106而硬件AES加密/解密特征僅由一個(gè)物理核106 支持。如果硬件AES加密/解密是應(yīng)用程序114和/或客操作系統(tǒng)112常用的特征,則支持硬件AES加密/解密特征的單個(gè)物理核106可能變?yōu)檫^度訂閱或過度利用(例如,為其調(diào)度的虛擬核多于為其他物理核調(diào)度的虛擬核)。為了協(xié)助使跨所有物理核的虛擬核的調(diào)度均勻,虛擬機(jī)控制模塊122可標(biāo)識這一過度訂閱或過度利用情形,并且作為響應(yīng)如果后續(xù)在計(jì)算設(shè)備100創(chuàng)建另一虛擬機(jī),則確定不使得該特征對另一虛擬機(jī)的虛擬核可用。應(yīng)該注意,虛擬機(jī)108不必具有且通常不具有對虛擬機(jī)管理器104確定要使得物理核106的哪些特征對虛擬機(jī)108可用的方式的知識。因而,虛擬機(jī)108不管虛擬機(jī)管理器 104確定要使得物理核106支持的哪些特征對虛擬機(jī)108可用的方式而繼續(xù)與虛擬核116 一起操作。另外,在一個(gè)或多個(gè)實(shí)施例中,使用多級調(diào)度程序模型來調(diào)度用戶模式調(diào)度(UMS) 應(yīng)用程序線程以便在處理器核上執(zhí)行。傳統(tǒng)的調(diào)度模型通常只具有系統(tǒng)(例如,操作系統(tǒng)) 線程和應(yīng)用程序線程。系統(tǒng)線程通常在較高的特權(quán)級上(例如,以內(nèi)核模式或環(huán)0)運(yùn)行, 而應(yīng)用程序線程通常在執(zhí)行用戶或應(yīng)用程序操作時(shí)在較低的特權(quán)級上(例如,以用戶模式或環(huán)3)運(yùn)行而在通過系統(tǒng)調(diào)用或異常來調(diào)用操作系統(tǒng)服務(wù)時(shí)進(jìn)入較高的特權(quán)級(例如,環(huán) 0)。與這些傳統(tǒng)模型相反,多級調(diào)度程序模型利用UMS線程。UMS線程是使單個(gè)線程被拆分成作為用戶線程和內(nèi)核線程的不同部分的特定線程類。這一拆分被此處討論的多級調(diào)度程序模塊充分利用,以允許應(yīng)用程序通過使得第二級調(diào)度程序以用戶模式運(yùn)行(不需要來自操作系統(tǒng)內(nèi)核的幫助或干預(yù))來調(diào)度用戶線程而操作系統(tǒng)內(nèi)核通過在內(nèi)核服務(wù)運(yùn)行時(shí)適當(dāng)?shù)卣{(diào)度內(nèi)核線程來管理內(nèi)核線程。這一多級調(diào)度程序模型可充分利用處理器核的非對稱本質(zhì),基于處理器核所支持的特征來調(diào)度應(yīng)用程序線程以便執(zhí)行。在一個(gè)或多個(gè)實(shí)施例中,多級調(diào)度程序模型包括操作系統(tǒng)中為多個(gè)處理器核調(diào)度應(yīng)用程序并調(diào)度UMS線程的內(nèi)核線程的第一級調(diào)度程序。每一應(yīng)用程序包括為該應(yīng)用程序調(diào)度UMS線程的用戶線程以便在特定處理器核上運(yùn)行的第二級調(diào)度程序。圖6示出根據(jù)一個(gè)或多個(gè)實(shí)施例的實(shí)現(xiàn)多級調(diào)度程序模型的示例計(jì)算設(shè)備600。計(jì)算設(shè)備600包括操作系統(tǒng)602、一個(gè)或多個(gè)(m)處理器核604(1),. . .,604 (m)、以及一個(gè)或多個(gè)(η)應(yīng)用程序606(1),...,606(11)。計(jì)算設(shè)備600可以是例如圖1的計(jì)算設(shè)備100。 操作系統(tǒng)602可以是例如圖1的主操作系統(tǒng)102或客操作系統(tǒng)112。處理器核604(1),..., 604 (m)可以是例如圖1的物理核106(1),...,106 (χ)或虛擬核116 (1),. . .,116 (y)。應(yīng)用程序606(1),...,606(11)可以是例如圖1的一個(gè)或多個(gè)應(yīng)用程序114。因而,操作系統(tǒng)602 和應(yīng)用程序606(1),. . . ,606 (η)可本機(jī)地在物理處理器核上運(yùn)行,或者可在虛擬機(jī)(例如, 圖1的虛擬機(jī)108)中運(yùn)行。操作系統(tǒng)602包括標(biāo)識處理器核604支持的特征并維護(hù)特征的記錄(也被稱為目錄)的特征目錄管理器608。特征目錄管理器608可以是例如圖1的核特征跟蹤模塊124。 特征目錄管理器608維護(hù)的記錄可以是處理器核604支持的全部特征,或另選地僅所選特征。例如,所有處理器核604可被假定支持特定特征(諸如基礎(chǔ)χ86指令集),而特征目錄管理器608所標(biāo)識的特征是對那些特定特征的擴(kuò)展(例如,支持硬件AES加密/解密、支持快速1 位向量擴(kuò)展等等)。雖然被示為操作系統(tǒng)602的一部分,特征目錄管理器608可另選地與操作系統(tǒng)602分開地實(shí)現(xiàn)。不同的處理器核604可如上所討論的支持不同的特征。 特征目錄管理器608可按各種不同的方式來標(biāo)識特定處理器核604支持的特征。在一個(gè)或多個(gè)實(shí)施例中,在操作系統(tǒng)602的初始化處理期間,當(dāng)操作系統(tǒng)602開始運(yùn)行時(shí),操作系統(tǒng)602調(diào)用特征目錄管理器608。特征目錄管理器608向處理器核604查詢對每一處理器核604所支持的特征的指示。特征目錄管理器608可在每一次操作系統(tǒng)602 執(zhí)行時(shí)重新查詢處理器核604,或者另選地可維護(hù)這些特征的記錄并在稍后操作系統(tǒng)602 重新執(zhí)行時(shí)檢索該記錄而非重新查詢處理器核604。在其他實(shí)施例中,特征目錄管理器608 按不同方式來標(biāo)識處理器核604支持的特征,諸如通過向操作系統(tǒng)602查詢對每一處理器核604所支持的特征的指示、通過訪問將所支持的特征與特定處理器核相關(guān)聯(lián)(例如,基于序列號、型號或每一處理器核604的其他標(biāo)識符)的數(shù)據(jù)庫或其他記錄等等。特征目錄管理器608還標(biāo)識并維護(hù)與處理器核604所支持的特征相關(guān)聯(lián)的一個(gè)或多個(gè)特征屬性的記錄。特征目錄管理器608可按各種不同的方式來標(biāo)識這些相關(guān)聯(lián)的特征屬性,與如上所討論地標(biāo)識處理器核604的特征相似的方式。與特征相關(guān)聯(lián)的特征屬性標(biāo)識特征的性能特性和/或應(yīng)用程序606為使用該特征而需要滿足的要求。與特定特征相關(guān)聯(lián)的特定一個(gè)或多個(gè)屬性可取決于特征本身。例如,與特征相關(guān)聯(lián)的特征屬性可以是使用特征時(shí)的訪問等待時(shí)間、使用特征時(shí)的實(shí)體數(shù)量和線程棧消耗、使用特征時(shí)的易失性/非易失性狀態(tài)等等。特征目錄管理器608對操作系統(tǒng)602和應(yīng)用程序606是可訪問的。由此,操作系統(tǒng)602在調(diào)度應(yīng)用程序606時(shí)以及應(yīng)用程序606在調(diào)度應(yīng)用程序線程時(shí)可如下文更詳細(xì)地討論地來使用特征及相關(guān)聯(lián)的特征屬性的記錄。操作系統(tǒng)602還包括操作系統(tǒng)級調(diào)度程序612,它是計(jì)算設(shè)備600采用的多級調(diào)度程序模型中的第一級調(diào)度程序。操作系統(tǒng)級調(diào)度程序612為不同處理器核604調(diào)度應(yīng)用程序606,確定在哪些時(shí)間哪個(gè)應(yīng)用程序606能夠在哪些處理器核604上執(zhí)行。操作系統(tǒng)級調(diào)度程序612還調(diào)度應(yīng)用程序606中的UMS線程的內(nèi)核線程。操作系統(tǒng)級調(diào)度程序612的這一調(diào)度可按各種方式中的任一種來執(zhí)行,諸如通過使用循環(huán)技術(shù)、加權(quán)循環(huán)技術(shù)、允許一個(gè)或多個(gè)應(yīng)用程序606與其他應(yīng)用程序606相比具有優(yōu)先級以便執(zhí)行等等。操作系統(tǒng)級調(diào)度程序612還可任選地至少部分地基于特征目錄管理器608維護(hù)的特征及相關(guān)聯(lián)的特征屬性的記錄來調(diào)度應(yīng)用程序606。例如,操作系統(tǒng)級調(diào)度程序612可基于處理器核604的特征和/或相關(guān)聯(lián)的特征屬性來確定要為處理器核604調(diào)度應(yīng)用程序606的持續(xù)時(shí)間,可基于處理器核604的特征和/或相關(guān)聯(lián)的特征屬性來確定何時(shí)為處理器核604調(diào)度特定應(yīng)用程序606,等等。每一應(yīng)用程序606還包括用戶級調(diào)度程序614,它是計(jì)算設(shè)備600采用的多級調(diào)度程序模型中的第二級調(diào)度程序。每一用戶級調(diào)度程序614調(diào)度應(yīng)用程序線程616的用戶線程(與用戶級調(diào)度程序614在同一應(yīng)用程序606中)以在特定處理器核604上運(yùn)行。這些應(yīng)用程序線程616是如上所討論的可具有用戶線程和內(nèi)核線程兩者的UMS線程。由此,第一級調(diào)度程序調(diào)度應(yīng)用程序以便在處理器核604上執(zhí)行,且當(dāng)應(yīng)用程序被調(diào)度以便在處理器核604上執(zhí)行時(shí),第二級調(diào)度程序?yàn)樵搼?yīng)用程序調(diào)度用戶線程以便在處理器核604上執(zhí)行同時(shí)第一級調(diào)度程序?yàn)樵搼?yīng)用程序調(diào)度內(nèi)核線程以便在處理器核604上執(zhí)行。每一用戶級調(diào)度程序614可至少部分地基于特征目錄管理器616維護(hù)的特征及相關(guān)聯(lián)的特征屬性的記錄來調(diào)度應(yīng)用程序616。例如,用戶級調(diào)度程序614可基于處理器核 604的特征和/或相關(guān)聯(lián)的特征屬性來確定要為處理器核604調(diào)度應(yīng)用程序線程616的持續(xù)時(shí)間,可基于處理器核604的特征和/或相關(guān)聯(lián)的特征屬性來確定何時(shí)為處理器核604 調(diào)度特定應(yīng)用程序線程616,等等。在一個(gè)或多個(gè)實(shí)施例中,用戶級調(diào)度程序614選擇將在其上執(zhí)行應(yīng)用程序線程 616的特定處理器核604。用戶級調(diào)度程序614所選的處理器核可至少部分地基于特征目錄管理器616維護(hù)的特征及相關(guān)聯(lián)的特征屬性的記錄。例如,用戶級調(diào)度程序614可調(diào)度應(yīng)用程序線程616以便在支持特定特征(例如,支持硬件AES加密/解密)的處理器核604 上執(zhí)行,可調(diào)度應(yīng)用程序線程以便在支持具有短于閾值訪問等待時(shí)間的特定特征的處理器核604上執(zhí)行,等等。除了支持不同特征的處理器核604,具有不同性能水平的不同類型的處理器核可被包括在計(jì)算設(shè)備600中。不同類型的處理器核604可被包括在計(jì)算設(shè)備600中,諸如具有供執(zhí)行指令的許多(例如,8個(gè)或更多個(gè))流水線并消耗大量功率的高性能處理器核以及具有供執(zhí)行指令的較少(例如,1個(gè))流水線并消耗較少功率的較低性能處理器核。因而, 這些不同類型的處理器核604可基于它們可多快地執(zhí)行指令和/或它們消耗的功率量而非它們支持的特定特征來進(jìn)行區(qū)分。標(biāo)識哪些類型的處理器核被包括在計(jì)算設(shè)備600中以及哪些處理器核604是哪些類型的處理器核的信息可被包括在特征目錄管理器608中或另選地由用戶級調(diào)度程序614以其它方式獲得(例如,從操作系統(tǒng)602)。例如,當(dāng)特征目錄管理器608如上所討論地標(biāo)識處理器核604支持的特征時(shí),特征目錄管理器608可獲得標(biāo)識哪些類型的處理器核被包括在計(jì)算設(shè)備600中(以及哪些處理器核604是哪些類型的處理器核)的信息。用戶級調(diào)度程序614還可基于處理器核604的類型來調(diào)度應(yīng)用程序線程616以便在處理器核604上執(zhí)行。例如,用戶級調(diào)度程序614可調(diào)度應(yīng)用程序線程616以便僅在高性能處理器核604上執(zhí)行或另選地僅在較低性能的處理器核604上執(zhí)行。另選地,用戶級調(diào)度程序614可調(diào)度應(yīng)用程序線程614以便跨所有處理器核604執(zhí)行而不管處理器核604 的性能水平。用戶級調(diào)度程序614可按不同方式來標(biāo)識其上可調(diào)度應(yīng)用程序線程616來執(zhí)行的處理器核604,諸如對其上可調(diào)度應(yīng)用程序線程616的處理器核604被預(yù)先配置在用戶級調(diào)度程序614中的指示、對其上可調(diào)度應(yīng)用程序線程616的處理器核604由操作系統(tǒng) 602或計(jì)算設(shè)備600的另一組件或模塊提供給用戶級調(diào)度程序614的指示,等等。另外,計(jì)算設(shè)備600上的指令可通常按多個(gè)不同特權(quán)級別中的一個(gè)來執(zhí)行,諸如如上所討論的以用戶模式或內(nèi)核模式。被包括在應(yīng)用程序606的業(yè)務(wù)邏輯中的指令通常以用戶模式(例如,作為UMS線程的一個(gè)或多個(gè)用戶線程)在應(yīng)用程序線程616中執(zhí)行,而應(yīng)用程序線程616調(diào)用的操作系統(tǒng)功能通常以內(nèi)核模式(例如,作為UMS線程的一個(gè)或多個(gè)內(nèi)核線程)執(zhí)行。雖然由操作系統(tǒng)級調(diào)度程序612為處理器核604調(diào)度應(yīng)用程序606,但應(yīng)用程序606既能以用戶模式執(zhí)行應(yīng)用程序線程616又能調(diào)用以內(nèi)核模式執(zhí)行的操作系統(tǒng)功能。用戶級調(diào)度程序614如上所討論地調(diào)度以用戶模式在處理器核604上執(zhí)行的應(yīng)用程序線程616。然而,當(dāng)應(yīng)用程序線程616調(diào)用以內(nèi)核模式執(zhí)行的操作系統(tǒng)功能時(shí),其上執(zhí)行內(nèi)核模式指令的處理器核604可能不同。用戶級調(diào)度程序614(或另選地應(yīng)用程序606 的另一組件或模塊)可將向操作系統(tǒng)602指示其上執(zhí)行內(nèi)核模式指令的特定處理器核604。 另選地,操作系統(tǒng)602可用其他方式來確定其上執(zhí)行內(nèi)核模式指令的特定處理器核604,諸如操作系統(tǒng)級調(diào)度程序612確定其上執(zhí)行內(nèi)核模式指令的特定處理器核604,操作系統(tǒng)602 被預(yù)先配置有對其上執(zhí)行內(nèi)核模式指令的特定處理器核604的指示,操作系統(tǒng)602訪問指示其上執(zhí)行內(nèi)核模式指令的特定處理器核604的注冊存儲或其他數(shù)據(jù)庫或記錄,等等。因而,應(yīng)用程序線程616能以用戶模式在一組處理器核604上執(zhí)行,而操作系統(tǒng)功能能以內(nèi)核模式在另一組處理器核604上執(zhí)行。例如,應(yīng)用程序線程616能以用戶模式在所有處理器核604上執(zhí)行,而操作系統(tǒng)功能能以內(nèi)核模式僅在高性能處理器核604上執(zhí)行。 作為另一示例,應(yīng)用程序線程616能以用戶模式僅在較低性能的處理器核604上執(zhí)行,而操作系統(tǒng)功能能以內(nèi)核模式僅在高性能處理器核604上執(zhí)行。應(yīng)該注意,這一多級調(diào)度程序模型支持各種附加的使用場景。例如,因?yàn)閼?yīng)用程序 606的用戶級調(diào)度程序614負(fù)責(zé)調(diào)度該應(yīng)用程序606的應(yīng)用程序線程616,所以從應(yīng)用程序線程616中提取應(yīng)用程序線程616所訪問的組件的特性并減輕應(yīng)用程序線程616需要關(guān)于這些特性的知識的負(fù)擔(dān)。從應(yīng)用程序線程中提取處理器核604所支持的不同特征,如計(jì)算設(shè)備600所使用的存儲器拓?fù)浣Y(jié)構(gòu)(例如,計(jì)算設(shè)備600內(nèi)部的和/或包括計(jì)算設(shè)備600的系統(tǒng)中的存儲器拓?fù)浣Y(jié)構(gòu))以及處理器核訪問存儲器拓?fù)浣Y(jié)構(gòu)的方式。然而,用戶級調(diào)度程序614在調(diào)度應(yīng)用程序線程616以便執(zhí)行時(shí)可將這些特性考慮在內(nèi)。因而,例如,用戶級調(diào)度程序614在調(diào)度應(yīng)用程序線程616時(shí)可將存儲器拓?fù)浣Y(jié)構(gòu)和存儲器等待時(shí)間(其可作為與存儲器訪問特征相關(guān)聯(lián)的特征屬性被包括在例如特征目錄管理器608中)考慮在內(nèi)。圖7是示出根據(jù)一個(gè)或多個(gè)實(shí)施例的用于實(shí)現(xiàn)多級調(diào)度程序模型的計(jì)算設(shè)備的示例過程700的流程圖。過程700由諸如圖1的計(jì)算設(shè)備600等計(jì)算設(shè)備來執(zhí)行,并可以用軟件、固件、硬件、或其組合來實(shí)現(xiàn)。過程700被示為一組動作,不僅限于所示出的用于執(zhí)行各種動作的操作的順序。過程700是計(jì)算設(shè)備實(shí)現(xiàn)多級調(diào)度程序模型的示例過程;此處參考不同附圖包括了對計(jì)算設(shè)備實(shí)現(xiàn)多級調(diào)度程序模型的附加討論。在過程700中,標(biāo)識處理器核的特征及相關(guān)聯(lián)的特征屬性(動作70 。這些處理器核可以是如上所討論的虛擬核或物理核,而特征及相關(guān)聯(lián)的特征屬性可如上所討論地按不同方式來標(biāo)識。操作系統(tǒng)級調(diào)度程序調(diào)度應(yīng)用程序以便在處理器核上執(zhí)行(動作704)。這一調(diào)度可如上所討論地至少部分地基于在動作702中標(biāo)識的處理器核特征及相關(guān)聯(lián)的特征屬性來確定。當(dāng)調(diào)度特定應(yīng)用程序以便執(zhí)行時(shí),該特定應(yīng)用程序的用戶級調(diào)度程序調(diào)度應(yīng)用程序的線程以便在特定處理器核上執(zhí)行(動作706)。這一調(diào)度可如上所討論地至少部分地基于在動作702中標(biāo)識的處理器核特征及相關(guān)聯(lián)的特征屬性來確定。圖8示出根據(jù)一個(gè)或多個(gè)實(shí)施例的可被配置成實(shí)現(xiàn)具有非對稱處理器核的系統(tǒng)上的虛擬機(jī)和/或多級調(diào)度支持的示例計(jì)算設(shè)備800。計(jì)算設(shè)備800可以是例如圖1的計(jì)算設(shè)備100或圖6的計(jì)算設(shè)備600。計(jì)算設(shè)備800包括包含多個(gè)物理核的一個(gè)或多個(gè)處理器或處理單元802、可包含一個(gè)或多個(gè)存儲器和/或存儲組件806的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)804、一個(gè)或多個(gè)輸入 /輸出(I/O)設(shè)備808、以及允許各組件和設(shè)備彼此通信的總線810。計(jì)算機(jī)可讀介質(zhì)804 和/或一個(gè)或多個(gè)I/O設(shè)備808可以作為計(jì)算設(shè)備800的一部分被包括,或者可另選地可以耦合到計(jì)算設(shè)備500??偩€810表示若干類型的總線結(jié)構(gòu)中的任何一種總線結(jié)構(gòu)的一個(gè)或多個(gè),包括存儲器總線或存儲器控制器、外圍總線、加速圖形端口,以及使用各種不同的總線體系結(jié)構(gòu)中的處理器或局部總線。總線810可包括有線和/或無線總線。存儲器/存儲組件806表示一個(gè)或多個(gè)計(jì)算機(jī)存儲介質(zhì)。組件806可包括易失性介質(zhì)(諸如隨機(jī)存取存儲器(RAM))和/或非易失性介質(zhì)(諸如只讀存儲器(ROM)、閃存、光盤、磁盤等等)。組件806可包括固定介質(zhì)(例如,RAM、R0M、固定硬盤驅(qū)動器等等)以及可移動介質(zhì)(例如,閃存驅(qū)動器、可移動硬盤驅(qū)動器、光盤等等)。此處所討論的技術(shù)可以以軟件實(shí)現(xiàn),指令由一個(gè)或多個(gè)處理單元802??梢岳斫?, 不同的指令可以存儲在計(jì)算設(shè)備800的不同的組件中,諸如存儲在處理單元802中,存儲在處理單元802的各種緩存存儲器中,存儲在設(shè)備800(未示出)的其他緩存存儲器中,存儲在其他計(jì)算機(jī)可讀介質(zhì)上等等。另外,可以理解,指令存儲在計(jì)算設(shè)備800中的位置可以隨著時(shí)間而變化。一個(gè)或多個(gè)輸入/輸出設(shè)備808可使用戶向計(jì)算設(shè)備800輸入命令和信息,以及可使信息被呈現(xiàn)給用戶和/或其他組件或設(shè)備。輸入設(shè)備的示例包括鍵盤、光標(biāo)控制設(shè)備 (例如,鼠標(biāo))、話筒、掃描儀等等。輸出設(shè)備的示例包括顯示設(shè)備(例如,監(jiān)視器或投影儀)、 揚(yáng)聲器、打印機(jī)、網(wǎng)卡等等。此處可以在軟件或程序模塊的一般上下文中描述各種技術(shù)。一般而言,軟件包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。這些模塊和技術(shù)的實(shí)現(xiàn)可以存儲在某種形式的計(jì)算機(jī)可讀介質(zhì)上或通過某種形式的計(jì)算機(jī)可讀介質(zhì)傳輸。計(jì)算機(jī)可讀介質(zhì)可以是可以被計(jì)算設(shè)備訪問的任何可用介質(zhì)。作為示例,而不是限制,計(jì)算機(jī)可讀介質(zhì)可以包括“計(jì)算機(jī)存儲介質(zhì)”和“通信介質(zhì)”?!坝?jì)算機(jī)存儲介質(zhì)”包括以用于存儲諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)之類的信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。計(jì)算機(jī)存儲介質(zhì)包括,但不限于,RAM、ROM、EEPR0M、閃存或其它存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲、磁帶盒、磁帶、磁盤存儲或其它磁性存儲設(shè)備、或能用于存儲所需信息且可以由計(jì)算機(jī)訪問的任何其它介質(zhì)。“通信介質(zhì)”通常用諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號來體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)。通信介質(zhì)還包括任何信息傳送介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”是指其一個(gè)或多個(gè)特征以這樣的方式設(shè)置或改變以便在信號中對信息進(jìn)行編碼的信號。作為示例而非限制,通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或直接線連接,以及無線介質(zhì),諸如聲學(xué)、RF、紅外線和其他無線介質(zhì)。以上的任一種的組合也包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。一般而言,此處所描述的任何功能或技術(shù)都可使用軟件、固件、硬件(例如,固定邏輯電路)、手動處理或這些實(shí)現(xiàn)的組合來實(shí)現(xiàn)。如此處所使用的術(shù)語“模塊”和“組件”一般代表軟件、固件、硬件或其組合。在軟件實(shí)現(xiàn)的情況下,模塊或組件表示當(dāng)在處理器(例如,一個(gè)或多個(gè)CPU)上執(zhí)行時(shí)執(zhí)行指定任務(wù)的程序代碼。程序代碼可以存儲在一個(gè)或多個(gè)計(jì)算機(jī)可讀的存儲器設(shè)備中,可以參考圖8發(fā)現(xiàn)關(guān)于其進(jìn)一步的描述。此處所描述的具有非對稱處理器核的系統(tǒng)上的虛擬機(jī)和/或多級調(diào)度支持的特征是平臺無關(guān)的,這意味著這些技術(shù)可以在具有各種處理器的各種商業(yè)計(jì)算平臺上實(shí)現(xiàn)。盡管用結(jié)構(gòu)特征和/或方法動作專用的語言描述了本主題,但是可以理解,所附權(quán)利要求書中定義的主題不必限于上述具體特征或動作。更確切而言,上述具體特征和動作是作為實(shí)現(xiàn)權(quán)利要求的示例形式公開的。
權(quán)利要求
1.一種計(jì)算設(shè)備,包括 一個(gè)或多個(gè)處理器(802);一個(gè)或多個(gè)其上存儲有多個(gè)指令的計(jì)算機(jī)可讀介質(zhì)(804),所述指令在被所述一個(gè)或多個(gè)處理器執(zhí)行時(shí)使得所述一個(gè)或多個(gè)處理器執(zhí)行以下動作為所述一個(gè)或多個(gè)處理器的多個(gè)物理處理器核中的每一個(gè)標(biāo)識(40 所述物理處理器核所支持的一個(gè)或多個(gè)特征;標(biāo)識(404)所述計(jì)算設(shè)備的虛擬機(jī)的虛擬處理器核的數(shù)量;至少部分地基于所述多個(gè)物理處理器核中的每一個(gè)所支持的一個(gè)或多個(gè)特征以及所述虛擬機(jī)的虛擬處理器核的數(shù)量來確定(406)要使其對所述虛擬機(jī)的虛擬處理器核可用的多個(gè)物理處理器核的一組一個(gè)或多個(gè)特征;以及使得(408)所述多個(gè)物理核的所述一組一個(gè)或多個(gè)特征對所述虛擬機(jī)的虛擬處理器核可用。
2.如權(quán)利要求1所述的計(jì)算設(shè)備,其特征在于,確定所述一組一個(gè)或多個(gè)特征是將受到至少特定數(shù)量的多個(gè)物理處理器核支持的每一特征包括在所述一組一個(gè)或多個(gè)特征中, 所述特定數(shù)量等于虛擬處理器核的數(shù)量。
3.如權(quán)利要求1所述的計(jì)算設(shè)備,其特征在于,所述多個(gè)指令還使得所述一個(gè)或多個(gè)處理器調(diào)度所述虛擬處理器核以便在所述多個(gè)物理處理器核上執(zhí)行。
4.如權(quán)利要求3所述的計(jì)算設(shè)備,其特征在于,調(diào)度所述虛擬處理器核以便在所述多個(gè)物理處理器核上執(zhí)行是要從所述多個(gè)處理器核的第一物理處理器核接收未定義操作碼異常,其中所述虛擬機(jī)的第一虛擬處理器核被調(diào)度在所述第一物理處理器核上; 標(biāo)識引起所述未定義操作碼異常的指令;檢查所述指令是否受到所述多個(gè)物理處理器核中的一個(gè)或多個(gè)支持; 如果所述指令不受到所述多個(gè)物理處理器核中的一個(gè)或多個(gè)支持,則將所述指令提供給所述計(jì)算設(shè)備的操作系統(tǒng);如果所述指令受到所述多個(gè)物理處理器核中的一個(gè)或多個(gè)支持,則 將所述第一虛擬處理器核調(diào)度在所述多個(gè)物理處理器核的第二物理處理器核上,所述第二物理處理器核以及所述第一物理處理器核是所述多個(gè)物理處理器核中的不同的物理處理器核,以及在將所述第一虛擬處理器核調(diào)度在所述第二物理處理器核上之后,向所述第一虛擬處理器核指示要嘗試再次執(zhí)行所述指令。
5.如權(quán)利要求1所述的計(jì)算設(shè)備,其特征在于,確定所述一組一個(gè)或多個(gè)特征是至少部分地基于所述多個(gè)物理處理器核中的每一個(gè)所支持的一個(gè)或多個(gè)特征、所述虛擬機(jī)的虛擬處理器核的數(shù)量、以及所述計(jì)算設(shè)備的其他虛擬機(jī)使用所述多個(gè)物理處理器核中的每一個(gè)所支持的一個(gè)或多個(gè)特征的頻率來確定所述一組一個(gè)或多個(gè)特征。
6.如權(quán)利要求5所述的計(jì)算設(shè)備,其特征在于,確定所述一組一個(gè)或多個(gè)特征還要確定如果對所述多個(gè)物理核中的一個(gè)或多個(gè)所支持的一個(gè)或多個(gè)特征中的特定一個(gè)特征的使用指示超過閾值量時(shí)所述特定一個(gè)特征不被包括在所述一組一個(gè)或多個(gè)特征中。
7.如權(quán)利要求1所述的計(jì)算設(shè)備,其特征在于,所述計(jì)算設(shè)備包括一個(gè)或多個(gè)附加虛擬機(jī),且使得不同特征組對所述一個(gè)或多個(gè)附加虛擬機(jī)的不同虛擬機(jī)的虛擬處理器核可用。
8.如權(quán)利要求1所述的計(jì)算設(shè)備,其特征在于,標(biāo)識受到所述物理處理器核支持的一個(gè)或多個(gè)特征是要向所述物理處理器核查詢對所述物理處理器核支持的特征的指示。
9.一種在計(jì)算設(shè)備中的方法,所述方法包括為所述計(jì)算設(shè)備的多個(gè)處理器核中的每一個(gè)標(biāo)識(70 所述處理器核支持的一個(gè)或多個(gè)特征;所述計(jì)算設(shè)備的操作系統(tǒng)的操作系統(tǒng)級調(diào)度器調(diào)度(704)多個(gè)應(yīng)用程序以便在所述多個(gè)處理器核上執(zhí)行;以及所述多個(gè)應(yīng)用程序的一個(gè)應(yīng)用程序的用戶級調(diào)度程序至少部分地基于所述多個(gè)處理器核所支持的一個(gè)或多個(gè)特征來調(diào)度(706)所述一個(gè)應(yīng)用程序的應(yīng)用程序線程以便在所述多個(gè)處理器核中的一個(gè)或多個(gè)上執(zhí)行。
10.如權(quán)利要求9所述的方法,其特征在于,所述標(biāo)識還包括標(biāo)識與所述一個(gè)或多個(gè)特征中的每一個(gè)相關(guān)聯(lián)的一個(gè)或多個(gè)特征屬性,且調(diào)度應(yīng)用程序線程還包括至少部分地基于與所述一個(gè)或多個(gè)特征中的每一個(gè)相關(guān)聯(lián)的一個(gè)或多個(gè)特征屬性來調(diào)度所述應(yīng)用程序的用戶模式調(diào)度的應(yīng)用程序線程。
11.如權(quán)利要求9所述的方法,其特征在于,還包括將以用戶模式執(zhí)行的應(yīng)用程序線程調(diào)度在所述多個(gè)處理器核的第一組處理器核上,并且將以內(nèi)核模式執(zhí)行的操作系統(tǒng)功能調(diào)度在所述多個(gè)處理器核的第二組處理器核上,其中所述第一組處理器核和第二組處理器核包括所述多個(gè)處理器核中的不同處理器核。
12.如權(quán)利要求9所述的方法,其特征在于,所述用戶級調(diào)度程序進(jìn)行的調(diào)度還至少部分地基于從所述一個(gè)應(yīng)用程序中提取所述計(jì)算設(shè)備所使用的存儲器拓?fù)浣Y(jié)構(gòu)的一個(gè)或多個(gè)存儲器訪問特征。
13.如權(quán)利要求9所述的方法,其特征在于,還包括維護(hù)所述多個(gè)處理器核所支持的特征以及與所述多個(gè)處理器核所支持的特征中的一個(gè)或多個(gè)相關(guān)聯(lián)的一個(gè)或多個(gè)特征屬性的記錄。
14.如權(quán)利要求9所述的方法,其特征在于,所述多個(gè)處理器核包括所述計(jì)算設(shè)備的虛擬機(jī)的多個(gè)虛擬處理器核。
15.如權(quán)利要求9所述的方法,其特征在于,所述多個(gè)處理器核包括所述計(jì)算設(shè)備的多個(gè)物理處理器核。
全文摘要
本發(fā)明涉及具有非對稱處理器核的系統(tǒng)上的虛擬機(jī)和/或多級調(diào)度支持。計(jì)算設(shè)備中的不同處理器核可支持不同的特征。在一個(gè)或多個(gè)實(shí)施例中,標(biāo)識計(jì)算設(shè)備的多個(gè)物理處理器核中的每一個(gè)所支持的特征。至少部分地基于多個(gè)物理處理器核中的每一個(gè)所支持的一個(gè)或多個(gè)特征以及虛擬機(jī)的虛擬處理器核的數(shù)量來確定要使其對虛擬機(jī)的虛擬處理器核可用的多個(gè)物理處理器核的一組一個(gè)或多個(gè)特征。在附加實(shí)施例中,使用多級調(diào)度模型。操作系統(tǒng)的操作系統(tǒng)級調(diào)度程序調(diào)度多個(gè)應(yīng)用程序以便在多個(gè)處理器核上執(zhí)行,而應(yīng)用程序的用戶級調(diào)度程序調(diào)度該應(yīng)用程序的應(yīng)用程序線程以便在多個(gè)處理器核中的一個(gè)或多個(gè)上執(zhí)行。
文檔編號G06F9/46GK102402458SQ201110317869
公開日2012年4月4日 申請日期2011年10月9日 優(yōu)先權(quán)日2010年10月1日
發(fā)明者A·賈亞莫漢 申請人:微軟公司