專利名稱:處理器內(nèi)核的監(jiān)管程序隔離的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機系統(tǒng),更具體地說,涉及多內(nèi)核計算機系統(tǒng)。
背景技術(shù):
一般而言,計算機系統(tǒng)中包含的中央處理單元(CPU)內(nèi)核(即,處理器內(nèi)核)以及/或者處理器數(shù)目正在迅速增加。參考
圖1,示例性計算系統(tǒng)100包括多個處理器102,所述處理器每個包括一個或多個處理器內(nèi)核(例如,處理器內(nèi)核104)。處理器102通過一個或多個集線器集成電路(例如,內(nèi)存控制器集線器以及I/O控制器集線器)、總線(例如,PCI總線、ISA總線和SMB總線)、其它適當(dāng)通信接口或其組合來耦合至其它處理器102、內(nèi)存106、 器件108以及存儲器110。操作系統(tǒng)(例如,微軟Windows、Linux和Unix)提供介于硬件與用戶(g卩,計算應(yīng)用,例如應(yīng)用114)之間的界面。操作系統(tǒng)112的執(zhí)行可跨多個內(nèi)核104而分布。雖然計算系統(tǒng)包括多個處理器內(nèi)核,但是典型計算系統(tǒng)可能無法利用全部處理器內(nèi)核或者有效利用全部處理器內(nèi)核。例如,操作系統(tǒng)可能可以訪問和控制一定數(shù)目的CPU內(nèi)核,使計算機系統(tǒng)中其它內(nèi)核閑置。
發(fā)明概要因此,利用處理器內(nèi)核的技術(shù)包括將所使用處理器內(nèi)核與操作系統(tǒng)獨立隔離。在本發(fā)明至少一個實施方案中,一種方法包括在包括計算機系統(tǒng)的多個內(nèi)核中的一個或多個內(nèi)核的第一內(nèi)核子集上執(zhí)行操作系統(tǒng)。所述操作系統(tǒng)在虛擬機監(jiān)控程序控制下作為來賓執(zhí)行。所述方法包括在包括所述多個內(nèi)核中的一個或多個內(nèi)核的第二內(nèi)核子集上為應(yīng)用執(zhí)行工作。所述第一內(nèi)核子集和第二內(nèi)核子集互斥,并且所述第二內(nèi)核子集對所述操作系統(tǒng)不可見。在至少一個實施方案中,所述方法包括將所述第二內(nèi)核子集與所述操作系統(tǒng)隔離。在本方法的至少一個實施方案中,所述隔離第二內(nèi)核子集包括將共享系統(tǒng)內(nèi)存的一部分貢獻給所述第二內(nèi)核集。在本方法的至少一個實施方案中,所述應(yīng)用在所述第二內(nèi)核子集上、在所述操作系統(tǒng)外部并且獨立于所述操作系統(tǒng)執(zhí)行。在本方法的至少一個實施方案中,所述應(yīng)用正在所述操作系統(tǒng)上執(zhí)行,并且所述第二內(nèi)核子集中內(nèi)核被配置為計算加速器。在本方法的至少一個實施方案中,所述應(yīng)用經(jīng)由所述虛擬機監(jiān)控程序間接訪問所述第二內(nèi)核子集。在至少一個實施方案中,所述方法還包括將與可用計算加速器有關(guān)的信息提供至在所述操作系統(tǒng)上執(zhí)行的驅(qū)動程序。在至少一個實施方案中,所述方法還包括以下步驟將工作調(diào)度為由所述可用計算加速器的目標(biāo)加速器來完成。在本方法的至少一個實施方案中,所述執(zhí)行包括為了方便所述應(yīng)用,請求由所述計算加速器完成的工作;向所述操作系統(tǒng)指示已完成的工作;以及處理由工作項產(chǎn)生的頁面錯誤。在至少一個實施方案中,所述方法還包括由所述第二內(nèi)核集訪問由所述操作系統(tǒng)提供的應(yīng)用程序接口。在本方法的至少一個實施方案中,所述應(yīng)用程序接口為操作系統(tǒng)內(nèi)存分配例程和異常處理例程之一。在本發(fā)明的至少一個實施方案中,一種裝置包括多個內(nèi)核以及編碼在所述多個內(nèi)核可訪問的一個或多個介質(zhì)中的操作系統(tǒng)軟件。所述裝置包括編碼在所述多個內(nèi)核可訪問的一個或多個介質(zhì)中并且可在所述多個內(nèi)核中的一個或多個內(nèi)核上執(zhí)行的監(jiān)管程序軟件。所述監(jiān)管程序軟件可執(zhí)行為在包括所述多個內(nèi)核中的一個或多個內(nèi)核的第一內(nèi)核集上控制執(zhí)行所述操作系統(tǒng)軟件作為來賓,以及在包括所述多個內(nèi)核中的一個或多個內(nèi)核的第二內(nèi)核集上執(zhí)行應(yīng)用的至少一些工作。所述第二內(nèi)核集對所述操作系統(tǒng)不可見。在本裝置的至少一個實施方案中,所述監(jiān)管程序軟件包括代碼,所述代碼可在所述多個內(nèi)核上執(zhí)行以將所述第二內(nèi)核集與所述操作系統(tǒng)隔離,并且所述第一內(nèi) 核集和第二內(nèi)核集互斥。在至少一個實施方案中,所述裝置還包括由所述多個內(nèi)核共享的共享系統(tǒng)內(nèi)存。在至少一個實施方案中,所述裝置還包括加速計算驅(qū)動程序,其編碼在所述第一內(nèi)核集可訪問的一個或多個介質(zhì)中,其中,所述加速計算驅(qū)動程序被配置來調(diào)度所述應(yīng)用對所述第二內(nèi)核集的工作。在至少一個實施方案中,所述裝置還包括用于所述應(yīng)用與所述第二內(nèi)核集之間通信的至少一個隊列。在本裝置的至少一個實施方案中,所述至少一個隊列包括命令隊列,其被配置來從加速計算驅(qū)動程序通信至所述監(jiān)管程序;響應(yīng)隊列,其被配置來從所述監(jiān)管程序通信至所述加速計算驅(qū)動程序;錯誤隊列,其被配置來從所述監(jiān)管程序通信至所述加速計算驅(qū)動程序;以及工作隊列,其被配置來從加速計算應(yīng)用程序接口通信至所述監(jiān)管程序。在至少一個實施方案中,所述裝置還包括加速計算應(yīng)用程序接口,其編碼在所述第一內(nèi)核集可訪問的一個或多個介質(zhì)中。在至少一個實施方案中,所述裝置還包括應(yīng)用軟件,其編碼在所述多個內(nèi)核可訪問的一個或多個介質(zhì)中,其中所述監(jiān)管程序軟件包括可在所述多個內(nèi)核上執(zhí)行的代碼,以在所述監(jiān)管程序控制下在所述第二內(nèi)核集上獨立于在所述第一內(nèi)核集上執(zhí)行所述操作系統(tǒng)而執(zhí)行所述應(yīng)用軟件。在至少一個實施方案中,所述裝置還包括可在所述操作系統(tǒng)上執(zhí)行的應(yīng)用軟件,其編碼在所述多個內(nèi)核可訪問的一個或多個介質(zhì)中,其中所述監(jiān)管程序軟件包括可執(zhí)行為將所述第二內(nèi)核集配置為計算加速器的代碼以及用于在所述第二內(nèi)核集上為所述應(yīng)用軟件執(zhí)行工作的代碼。在本發(fā)明的至少一個實施方案中,一種計算機程序產(chǎn)品包括一個或多個功能序列,可執(zhí)行為虛擬機監(jiān)控程序或者可與虛擬機監(jiān)控程序結(jié)合執(zhí)行,并且被配置來在所述虛擬機監(jiān)控程序控制下在包括多個內(nèi)核中的一個或多個內(nèi)核的第一內(nèi)核集上執(zhí)行操作系統(tǒng)序列作為來賓。所述計算機程序產(chǎn)品包括一個或多個功能序列,所述一個或多個功能序列用于在包括所述多個內(nèi)核中的一個或多個內(nèi)核的第二內(nèi)核集上執(zhí)行應(yīng)用的至少一些工作。所述第二內(nèi)核集對所述操作系統(tǒng)不可見。在本計算機程序產(chǎn)品的至少一個實施方案中,所述一個或多個功能序列被配置來在所述監(jiān)管程序控制下在所述第二內(nèi)核集上獨立于在所述第一內(nèi)核集上執(zhí)行所述操作系統(tǒng)而執(zhí)行應(yīng)用序列。在本計算機程序產(chǎn)品的至少一個實施方案中,所述一個或多個功能序列被配置來將所述第二內(nèi)核集與操作系統(tǒng)代碼隔離,并且將所述第二內(nèi)核集配置為用于在所述第二內(nèi)核集上執(zhí)行應(yīng)用代碼工作的計算加速器。在本計算機程序產(chǎn)品的至少一個實施方案中,所述計算機程序產(chǎn)品編碼在選自由磁盤、磁帶或者其它磁性、光學(xué)或者電子存儲介質(zhì)組成的集中的至少一個計算機可讀介質(zhì)中。附圖簡述通過參考附圖,可更好地理解本發(fā)明,并且本發(fā)明的許多目的、特征和優(yōu)點對于所屬領(lǐng)域技術(shù)人員而言變得顯而易見。圖I示出示例性多內(nèi)核計算系統(tǒng)的功能方框圖。圖2示出示例性虛擬化系統(tǒng)的功能方框圖。
圖3示出與本發(fā)明至少一個實施方案一致的示例性虛擬化系統(tǒng)的功能方框圖。圖4示出在圖3的虛擬化系統(tǒng)上執(zhí)行的示例性虛擬機監(jiān)控程序的功能方框圖,其中隔離的處理器內(nèi)核被配置為與本發(fā)明至少一個實施方案一致的實際加速器。圖5示出在圖3虛擬化系統(tǒng)中的示例性信息和控制流,其中,隔離的處理器內(nèi)核被配置為與本發(fā)明至少一個實施方案一致的實際加速器。圖6示出用于圖3的虛擬化系統(tǒng)中的工作單元處理流程的示例性信息和控制流,其中隔離的處理器內(nèi)核被配置為與本發(fā)明至少一個實施方案一致的實際加速器。圖7示出用于圖3的虛擬化系統(tǒng)中的工作單元頁面錯誤處理的示例性信息和控制流,其中隔離的處理器內(nèi)核被配置為與本發(fā)明至少一個實施方案一致的實際加速器。
圖8示出用于圖3的虛擬化系統(tǒng)中的工作單元命令完成的示例性信息和控制流,其中隔離的處理器內(nèi)核被配置為與本發(fā)明至少一個實施方案一致的實際加速器。圖9示出圖3的虛擬化系統(tǒng)中的示例性信息和控制流,所述虛擬化系統(tǒng)被配置用于與本發(fā)明至少一個實施方案一致的即通型應(yīng)用用途。在不同圖中使用相同參考符號指示相似或者相同項。
具體實施例方式參考圖2,計算機系統(tǒng)虛擬化用于從用戶(即,在計算機系統(tǒng)上執(zhí)行的軟件)隱藏計算機系統(tǒng)的物理特性,并且相反,呈現(xiàn)抽象仿真計算系統(tǒng)(即,虛擬機(VM))給用戶。計算機系統(tǒng)100的物理硬件資源作為一個或多個相對應(yīng)隔離、明顯獨立的虛擬機(例如,VM 204)暴露給一個或多個來賓(例如,來賓206)。例如,虛擬機可包括一個或多個虛擬資源(例如,VCPU、VMEM0RY和VDEVICES),所述虛擬資源是通過計算機系統(tǒng)100的物理資源來實施,虛擬機監(jiān)控程序(VMM)(即,監(jiān)管程序,例如VMM 202)分配所述物理資源至虛擬機。如本文中指出,“虛擬機監(jiān)控程序(VMM)”或者“監(jiān)管程序”為提供虛擬化能力的軟件。VMM提供介于來賓軟件與物理資源之間的接口。通常,VMM提供給每個來賓關(guān)于完整計算機系統(tǒng)(即,內(nèi)存、中央處理單元(CPU)和所有外圍器件)的全控制外觀。類型I (S卩,本地)VMM為在物理資源上執(zhí)行的獨立軟件程序并且為一個或多個來賓提供虛擬化。來賓操作系統(tǒng)在VMM之上的層上執(zhí)行。類型2 (即,宿主)VMM集成至操作系統(tǒng)中或者在操作系統(tǒng)上執(zhí)行,操作系統(tǒng)組件直接在物理資源上執(zhí)行并且不通過VMM來虛擬化。VMM被視為獨特軟件層,并且來賓操作系統(tǒng)可在硬件之上的第三軟件層上執(zhí)行。雖然以下描述是指示例性類型1VMM,但是本文中所述的技術(shù)可在類型2VMM中實施?;氐絽⒖紙D2,雖然VM 204具有虛擬機204的虛擬資源上的全控制,但是VMM 202保留對物理資源的控制。來賓系統(tǒng)(例如操作系統(tǒng)的實例(例如,Windows、Linux和Unix))在相對應(yīng)虛擬機上執(zhí)行,并且與在其它虛擬機上執(zhí)行的其它來賓系統(tǒng)共享物理資源。因此,多個操作系統(tǒng)(例如,相同操作系統(tǒng)的多個實例或者不同操作系統(tǒng)的多個實例)可共同存在于同一計算系統(tǒng)上,但是彼此隔離。VMM 202通過物理資源中的一些或者全部處理器內(nèi)核來執(zhí)行。個別來賓通過物理資源中包括的處理器內(nèi)核集來執(zhí)行。所述處理器在VMM 202執(zhí)行與一個或多個來賓206執(zhí)行之間切換。如本文中指出,“全域切換”為介于來賓執(zhí)行與VMM執(zhí)行之間的切換。一般而言,全域切換可通過VMMCALL指令或者通過其它適當(dāng)技術(shù)(例如,下文描述由控制塊定義的中斷機制或者預(yù)定指令)來起始。雖然特定全域切換在本文中可被描述為使用特定技術(shù)來起始,但是可使用其它合適技術(shù)。在全域切換期間,當(dāng)前處理器內(nèi)核環(huán)境(例如,來賓或者VMM)保存其狀態(tài)信息,并且恢復(fù)處理器內(nèi)核執(zhí)行切換的目標(biāo)內(nèi)核環(huán)境(例如,VMM或者來賓)的狀態(tài)信息。例如,當(dāng)VMM執(zhí)行被調(diào)度用于執(zhí)行的來賓時,VMM執(zhí)行全域切換。相似地,當(dāng)VMM行使物理資源上的控制時,例如,當(dāng)來賓試圖訪問外圍器件時,當(dāng)內(nèi)存新頁面分配給來賓時,或者當(dāng)VMM準備調(diào)度另一來賓時等,作出從執(zhí)行來賓至執(zhí)行VMM的全域切換。可僅使用軟件(其包括固件)或者通過軟件和硬件的組合來實施虛擬化技術(shù)。例如,一些處理器包括虛擬化硬件,所述虛擬化硬件允許簡化VMM代碼并且提高系統(tǒng)全虛擬化性能(例如,由AMD-V和Intel VT_x提供的硬 件虛擬化擴展)。如本文中所述,軟件可編碼在選自由磁盤、磁帶或者其它磁性、光學(xué)或者電子存儲介質(zhì)組成的集中的至少一個計算機可讀介質(zhì)中。虛擬化技術(shù)可用于將計算機系統(tǒng)的一個或多個處理器內(nèi)核與操作系統(tǒng)隔離或者隔開,所述操作系統(tǒng)在VMM控制下在計算機系統(tǒng)的一個或多個其它處理內(nèi)核上作為來賓執(zhí)行。在虛擬化系統(tǒng)的至少一個實施方案中,隔離內(nèi)核可被配置為實際加速器。即,隔離內(nèi)核由VMM用于完成從操作系統(tǒng)環(huán)境內(nèi)起始的工作。雖然宿主內(nèi)核以及隔離內(nèi)核駐留在共享內(nèi)存環(huán)境內(nèi),但是隔離內(nèi)核并非由操作系統(tǒng)直接管理。VMM被配置為用于在隔離內(nèi)核與宿主內(nèi)核之間通信的媒介物。示例性VMM實施基于內(nèi)存的解決方案,用于使用在共享內(nèi)存空間內(nèi)實施且基于隊列的架構(gòu)來傳播工作請求、頁面錯誤和完成信息。計算工作可在來賓操作系統(tǒng)范圍內(nèi)起始。VMM然后協(xié)調(diào)操作系統(tǒng)與隔離內(nèi)核之間的工作。因此,VMM可用于實施一般計算加速。VMM以及隔離內(nèi)核可用于實施即通型應(yīng)用用途。此外,VMM可用于將隔離內(nèi)核配置為網(wǎng)絡(luò)器件加速器。由來賓操作系統(tǒng)使用的內(nèi)核(即,宿主內(nèi)核)數(shù)目可以是可選擇的。例如,宿主內(nèi)核數(shù)目可為特定來賓操作系統(tǒng)能夠利用的最大內(nèi)核數(shù)目。然而,在虛擬化系統(tǒng)的至少一個實施方案中,由來賓操作系統(tǒng)使用的內(nèi)核數(shù)目并不限于此,且系統(tǒng)可利用操作系統(tǒng)預(yù)定內(nèi)核數(shù)目來構(gòu)成,所述數(shù)目為小于最大內(nèi)核數(shù)目。參考圖3,示例性計算系統(tǒng)400包括VMM 402。VMM 402仿真解耦合架構(gòu),即,VMM402隔離內(nèi)核以執(zhí)行應(yīng)用或者應(yīng)用任務(wù)。在至少一個實施方案中,VMM 402將內(nèi)核406與內(nèi)核404隔離。在至少一個實施方案中,VMM 402將分開的虛擬內(nèi)存空間指派給宿主內(nèi)核404并且隔離內(nèi)核406。在至少一個實施方案中,VMM 402將共享虛擬內(nèi)存空間指派給宿主內(nèi)核404和隔離內(nèi)核406。用于實施共享虛擬內(nèi)存空間的技術(shù)在以下美國專利申請中描述由發(fā)明人 Patryk Kaminski、Thomas ffoller>Keith Lowery 和 Erich Boleyn 于 2010 年 12月 29 日申請,題目為“SYSTEMS AND METHODS IMPLEMENTING NON-SHARED PAGE TABLES FORSHARING MEMORY RESOURCES MANAGED BY A MAIN OPERATING SYSTEM WITH ACCELERATORDEVICES” 的美國專利申請 12/648,550 以及由發(fā)明人 Patryk Kaminski、Thomas Woller>Keith Lowery 和 Erich Boleyn 于 2009 年 12 月 29 日申請,題目為“SYSTEMS AND METHODSIMPLEMENTING SHARED PAGE TABLES FOR SHARING MEMORY RESOURCES MANAGED BY A MAINOPERATING SYSTEM WITH ACCELERATOR DEVICES” 的美國專利申請 12/648,556。在至少一個實施方案中,VMM 402保持控制塊集,所述控制塊集包括用于執(zhí)行宿主內(nèi)核404上的來賓執(zhí)行的狀態(tài)和控制信息,以及用于執(zhí)行隔離內(nèi)核406上的工作單元的狀態(tài)和控制信息集。在至少一個實施方案中,這些控制塊被稱為虛擬機控制塊(VMCB)。每個來賓和實際加速器可與相對應(yīng)控制塊相關(guān)。示例性控制塊可存儲在內(nèi)存中以及/或者在宿主硬件存儲器中,并且包括相對應(yīng)來賓或者實際加速器的狀態(tài)和控制信息以及/或者VMM的狀態(tài)和控制信息。例如,控制塊包括與來賓最后退出時的內(nèi)核狀態(tài)相對應(yīng)的狀態(tài)信息。示例性控制塊可通過特定指令來訪問,且信息可存儲在預(yù)定數(shù)據(jù)結(jié)構(gòu)的特定字段中。在計算系統(tǒng)400的至少一個實施方案中,VMM 402被配置為將所使用的至少一個內(nèi)核(例如,隔離內(nèi)核406)隔離為實際加速器。操作系統(tǒng)408 (例如,Microsoft Windows)作為來賓在宿主內(nèi)核404 (例如,x86內(nèi)核)上執(zhí)行,且應(yīng)用414在操作系統(tǒng)408上執(zhí)行。在操作系統(tǒng)408上執(zhí)行的內(nèi)核模式驅(qū)動程序410與VMM 402交換信息以提供用戶應(yīng)用414間接訪問實際加速器。來賓操作系統(tǒng)可使用內(nèi)核模式驅(qū)動程序410 (例如,使用調(diào)用)來利用隔離內(nèi)核406。介于VMM402與來賓操作系統(tǒng)408之間以及介于VMM 402與實際加速器之間的通信使用共享虛擬內(nèi)存中的隊列(例如,工作隊列424、命令隊列418、錯誤隊列422和響應(yīng)隊列420)來完成。調(diào)度程序416包括線程池,工作項跨所述線程池分布至可用隔離內(nèi)核406。在調(diào)度程序416的至少一個實施方案中,使用輪詢調(diào)度將工作單元指派給可用隔離內(nèi)核;然而,在調(diào)度程序416的其它實施方案中可使用其它適當(dāng)調(diào)度算法(例如,動態(tài)優(yōu)先級調(diào)度等)。在計算系統(tǒng)400的至少一個實施方案中,調(diào)度程序416為用戶模式調(diào)度程序,所述用戶模式調(diào)度程序允許獨立于操作系統(tǒng)執(zhí)行調(diào)度。然而,在計算系統(tǒng)400的至少一個實施方案中,調(diào)度程序416為內(nèi)核模式調(diào)度程序,所述內(nèi)核模式調(diào)度程序要求修改操作系統(tǒng)的內(nèi)核層部分。在計算系統(tǒng)400的至少一個實施方案中,調(diào)度程序416的至少一些功能是通過VMM 402來執(zhí)行,且/或者調(diào)度程序416的至少一些功能是通過內(nèi)核模式驅(qū)動程序410來執(zhí)行。VMM 402保持內(nèi)核模式驅(qū)動程序410可見的信息或者控制結(jié)構(gòu)中的相關(guān)拓撲結(jié)構(gòu)和架構(gòu)信息。VMM402至少提供與可用實際加速器有關(guān)的信息給內(nèi)核模式驅(qū)動程序410。在計算系統(tǒng)400的至少一個實施方案中,錯誤隊列422、命令隊列418、響應(yīng)隊列420和工作隊列424在共享虛擬內(nèi)存空間中實施。這些隊列全部都需要操作系統(tǒng)訪問(例如,內(nèi)核模式訪問)。在計算系統(tǒng)400的至少一個實施方案中,所述隊列必須可以從創(chuàng)建應(yīng)用的進程上下文的外部訪問。因此,操作系統(tǒng)408必須提供內(nèi)存解譯。只有工作隊列需要用戶模式訪問。在至少一個實施方案中,隊列418、420、422和424使用非鎖定實施,并且被配置用于單個讀取程序和單個寫入程序。虛擬機監(jiān)控程序402加入隊列至錯誤隊列422和響應(yīng)隊列420。內(nèi)核模式驅(qū)動程序410從錯誤隊列422和響應(yīng)隊列420退出隊列。內(nèi)核模式驅(qū)動程序410加入隊列至命令隊列418,以及VMM 402從命令隊列418退出隊列。應(yīng)用414加入隊列至工作隊列424。調(diào)度程序416從工作隊列424退出隊列,所述調(diào)度程序416可使用VMM402以及/或者內(nèi)核模式驅(qū)動程序410來實施。在計算系統(tǒng)400的至少一個實施方案中,應(yīng)用414調(diào)用排隊?wèi)?yīng)用編程接口(API)412以初始化排隊接口。排隊API 412將內(nèi)核模式驅(qū)動程序410實例化并且作出已記載的輸入/輸出控制(ioctl)調(diào)用以分配隊列。內(nèi)核模式驅(qū)動程序410接收ioctl命令,并且與上文所述一致分配可由適當(dāng)實體(例如,VMM 402和內(nèi)核模式驅(qū)動程序410)讀取或者寫入的隊列。內(nèi)核模式驅(qū)動程序410創(chuàng)建使工作隊列424與地址空間相關(guān)的內(nèi)部工作表。內(nèi)核模式驅(qū)動程序410還創(chuàng)建頁面表并且為實際加速器分配堆棧。內(nèi)核模式驅(qū)動程序410創(chuàng)建內(nèi)核模式線程,并且還將指針返回至應(yīng)用414使用的工作隊列424。在計算系統(tǒng)400的至少一個實施方案中,輪詢技術(shù)是用于處理隊列。在計算系統(tǒng)400的至少一個實施方案中,并不是使用輪詢技術(shù),而是使用門鈴技術(shù)來實現(xiàn)VMM 402與來賓操作系統(tǒng)408之間以及VMM 402與配置為實際加速器的隔離內(nèi)核406之間的通信。一般而言,對隊列的任何寫入程序(例如,內(nèi)核模式驅(qū)動程序410、排隊API 412或者VMM 402)將按門鈴以通知可用隊列項的接收(例如,內(nèi)核模式驅(qū)動程序410或者VMM 402)。在本計算系統(tǒng)的至少一個實施方案中,VMM 402支持作為特定隊列門鈴的VMM調(diào)用。指示哪個隊列包含新條目的信息以及/或者其它適當(dāng)信息被包括在VMM調(diào)用參數(shù)中。此外,VMM 402通過發(fā)出軟件中斷來按內(nèi)核模式驅(qū)動程序410的門鈴。不同軟件中斷可被用于區(qū)分不同門鈴接收。例如,應(yīng)用414可經(jīng)由排隊API 412將條目推送至工作隊列424中,且內(nèi)核模式驅(qū)動程序410例如通過執(zhí)行VMMCALL來按VMM402門鈴,以指示所述工作隊列有新條目。VMMCALL指令將控制從來賓操作系統(tǒng)408轉(zhuǎn)移至VMM 402。相似地,當(dāng)內(nèi)核模式驅(qū)動程序410將命令推送至命令隊列418中時,內(nèi)核模式驅(qū)動程序410按VMM402的門鈴(例如,通過 執(zhí)行VMMCALL)以指示所述命令隊列有新條目。在另一實例中,當(dāng)工作單元已經(jīng)在配置為實際加速器的隔離內(nèi)核406上完成時,VMM 402可將條目推送至錯誤隊列422,以及經(jīng)由本地高級可編程中斷控制器(APIC)發(fā)送錯誤隊列中斷至宿主內(nèi)核404。VMM 402可使用軟件中斷來按內(nèi)核模式驅(qū)動程序410的門鈴。所使用的特定中斷號被存儲在配置塊中字段中,并且通過內(nèi)核模式驅(qū)動程序410來保持。應(yīng)用414創(chuàng)建工作隊列424,并且向工作隊列表中條目點的內(nèi)核模式驅(qū)動程序410注冊。應(yīng)用414使用排隊API 412將工作項添加至工作隊列424。排隊API 412按調(diào)度程序416的門鈴。在調(diào)度邏輯駐留在內(nèi)核模式驅(qū)動程序410中的實施方案中,內(nèi)核模式驅(qū)動程序410將讀取工作隊列424。因此,對VMM 402的調(diào)用將明確包括VMM 402應(yīng)以哪個內(nèi)核作為目標(biāo)的指示符。響應(yīng)門鈴,調(diào)度程序416判定實際加速器是否為可用。如果無可用實際加速器,那么調(diào)度程序416更新狀態(tài)以指示工作隊列424為非空。如果實際加速器為可用,那么調(diào)度程序416讀取工作隊列424。調(diào)度程序416選擇可用實際加速器,并且對VMM402作出調(diào)度調(diào)用。在計算系統(tǒng)400的至少一個實施方案中,當(dāng)調(diào)度程序416與VMM402不同時,調(diào)度程序416可將命令寫入至命令隊列418并且按VMM402的門鈴。然后VMM 402設(shè)置執(zhí)行上下文,并且初始化配置為實際加速器的目標(biāo)隔離內(nèi)核406。VMM 402寫入至響應(yīng)隊列420,且調(diào)度程序416處理響應(yīng)隊列420以保持對隔離內(nèi)核406狀態(tài)(例如,可用性)的可見性。當(dāng)調(diào)度程序416將工作項從工作隊列424退出隊列時,調(diào)度程序416咨詢配置為實際加速器的隔離內(nèi)核406的可用實際加速器列表,并且選擇目標(biāo)隔離內(nèi)核406。調(diào)度程序416然后創(chuàng)建并且將指示工作項和目標(biāo)隔離內(nèi)核406的命令隊列條目加入隊列。然后調(diào)度程序416按VMM 402的門鈴。為了調(diào)度程序416保持資源可見性的精確視圖,調(diào)度程序416應(yīng)被通知工作項完成。在計算系統(tǒng)400的至少一個實施方案中,處理系統(tǒng)堆棧,使得來自工作項的返回作出VMM調(diào)用以通知VMM 402工作項完成。參考圖3、圖4和圖5,在系統(tǒng)重設(shè)之后,VMM 402啟動系統(tǒng)400的內(nèi)核(例如,宿主內(nèi)核404和隔離內(nèi)核406) (502)。在至少一個實施方案中,VMM 402獨立于基本輸入輸出系統(tǒng)從內(nèi)存(例如,在硬盤上)啟動。虛擬機監(jiān)控程序402然后在操作系統(tǒng)內(nèi)核404以及與內(nèi)核402隔離內(nèi)核406上啟動作為來賓的操作系統(tǒng)408 (504)。例如,當(dāng)啟動操作系統(tǒng)408時,VMM 402將執(zhí)行的內(nèi)核數(shù)目告知操作系統(tǒng)408。然后,操作系統(tǒng)408不會試圖訪問隔離內(nèi)核406。將內(nèi)核406與操作系統(tǒng)內(nèi)核404隔離的其它技術(shù)包括修改BIOS表,使得操作系統(tǒng)408僅識別小于總內(nèi)核數(shù)目的特定內(nèi)核數(shù)目,其中虛擬機監(jiān)控程序402控制兩個內(nèi)核集上的環(huán)境。這些BIOS表可從只讀內(nèi)存自動加載,或者通過VMM 402進行補丁。在將內(nèi)核與操作系統(tǒng)隔離的另一技術(shù)中,VMM 402偵聽操作系統(tǒng)命令以配置操作系統(tǒng)內(nèi)核數(shù)目。在隔離內(nèi)核并且已經(jīng)啟動操作系統(tǒng)之后,操作系統(tǒng)408加載加速計算內(nèi)核模式器件驅(qū)動程序410 (508)。應(yīng)用414在操作系統(tǒng)408上運行(510)。應(yīng)用414產(chǎn)生工作單元,所述工作單元然后被調(diào)度為在隔離內(nèi)核406上執(zhí)行(512)。在完成之后,VMM 402通知操作系統(tǒng)408完成工作(514)。參考圖3、圖4和圖6,更詳細描述工作單元起始過程。在計算系統(tǒng)400的至少一個實施方案中,內(nèi)核模式驅(qū)動程序410創(chuàng)建內(nèi)部工作表,所述內(nèi)部工作表可被用于添加工作隊列表條目(602)。應(yīng)用414創(chuàng)建工作隊列,并且向工作隊列表中條目的內(nèi)核模式驅(qū)動程序410注冊(604)。執(zhí)行時,應(yīng)用414推送工作隊列條目至工作隊列424上(606)。內(nèi)核模式驅(qū)動程序410使用如上所述門鈴(例如,VMMCALL)或者其它適當(dāng)通知技術(shù)來通知VMM 402工作隊列424有新條目(608)。虛擬內(nèi)存監(jiān)控程序402在宿主內(nèi)核404上處理門鈴,并且發(fā)送INIT處理器間中斷(IPI)至特定隔離內(nèi)核406。虛擬機監(jiān)控程序402在特定隔離內(nèi)核406上處理VMM 402的退出(610)。如果特定隔離內(nèi)核406為閑置(S卩,尚未處理工作單元),那么VMM 402從工作隊列424拉取下一個工作單元條目(612),修改VMCB,并且開始執(zhí)行用于處理所述工作單元的代碼(614)。否則,特定隔離內(nèi)核繼續(xù)執(zhí)行上一個推出的工作單元。在計算系統(tǒng)400的至少一個實施方案中,如果特定隔離內(nèi)核406已經(jīng)在執(zhí)行工作單元,那么VMM 402不會利用VMM 402的退出來中斷所述特定隔離內(nèi)核406。當(dāng)處理工作單元時,配置為實際加速器的隔離內(nèi)核406可能經(jīng)歷頁面錯誤(即,隔離內(nèi)核406訪問映射在地址空間中但不加載至物理內(nèi)存中的頁面)。參考圖3、圖4和圖7,在計算系統(tǒng)400的至少一個實施方案中,隔離內(nèi)核406所經(jīng)歷的那些頁面錯誤通過VMM 402來識別,并且對VMM 402進行全域切換(702)。虛擬機監(jiān)控程序402從所述隔離內(nèi)核獲得頁面錯誤信息,并且創(chuàng)建內(nèi)核層頁面錯誤條目,VMM 402將所述內(nèi)核層頁面錯誤條目推送至用戶錯誤隊列422 (704)。虛擬機監(jiān)控程序402經(jīng)由本地APIC發(fā)出錯誤隊列中斷至宿主內(nèi)核404之一(706)。內(nèi)核模式驅(qū)動程序410中斷處理程序處理所述中斷,并且執(zhí)行錯誤隊列延遲程序調(diào)用并且讀取系統(tǒng)錯誤隊列428的錯誤。內(nèi)核模式驅(qū)動程序410更新與用戶進程相關(guān)的頁面表(710),并且產(chǎn)生命令(例如,包括目標(biāo)內(nèi)核字段的CMD RESUME)以恢復(fù)通過配置為實際加速器的隔離內(nèi)核406的執(zhí)行(712)。內(nèi)核模式驅(qū)動程序410將所述命令推送至命令隊列418中(712),并且按VMM 402的門鈴(例如,VMMCALL),所述門鈴指示命令隊列418有新條目(714)。虛擬機監(jiān)控程序402在宿主內(nèi)核404上處理所述VMMCALL,并且發(fā)出處理器間中斷(即,INIT IPI)至包括隊列處理程序412的隔離內(nèi)核406 (即,實際加速器內(nèi)核0),所述隊列處理程序412處理命令隊列418。響應(yīng)處理器間中斷,實際加速器內(nèi)核0 讀取命令隊列418,并且處理所述命令(例如,CMD RESUME) (716),例如,通過發(fā)送處理器間中斷至適當(dāng)隔離內(nèi)核406以恢復(fù)處理所述工作單元(718)。虛擬機監(jiān)控程序402然后處理VMEXIT (例如,執(zhí)行全域切換),并且隔離內(nèi)核406恢復(fù)處理所述工作單元(720)。參考圖3、圖4和圖8,在計算系統(tǒng)400的至少一個實施方案中,一旦工作單元已經(jīng)處理并且隔離內(nèi)核406執(zhí)行所述工作單元的最后指令,隔離內(nèi)核406就執(zhí)行包括一個或多個指令的例程,所述指令指示所述工作單元已經(jīng)完成執(zhí)行(例如,VMMCALL) (802)。因此,隔離內(nèi)核406返回至VMM 402的執(zhí)行,并且VMM 402處理工作單元完成指示符(804)。在計算系統(tǒng)400的至少一個實施方案中,VMM402判定是否配置為發(fā)出工作單元完成通知(808)。如果VMM未被配置為發(fā)出通知,那么VMM 402將繼續(xù)處理下一個工作單元(810)作為替代,VMM將發(fā)出完成指令。在至少一個實施方案中,VMM 402將工作單元完成條目推送至系統(tǒng)錯誤隊列428中,并且VMM 402發(fā)送錯誤隊列中斷(例如,經(jīng)由本地APIC)至操作系統(tǒng)內(nèi)核404(812)。內(nèi)核模式驅(qū)動程序410處理錯誤隊列中斷,并且從系統(tǒng)錯誤隊列讀取條目。內(nèi)核模式驅(qū)動程序410定位與所述錯誤條目相關(guān)的用戶處理上下文,并且將所述錯誤條目推送至所述處理上下文的特定用戶錯誤隊列422中(814)。內(nèi)核模式驅(qū)動程序410中的用戶工 作線程處理程序從用戶錯誤隊列422拉取錯誤條目,并且完成所述工作單元(818)。參考圖9,在計算系統(tǒng)400的至少一個實施方案中,隔離內(nèi)核406被配置用于即通型應(yīng)用用途,而不是實際加速器。在系統(tǒng)重設(shè)之后,VMM 402啟動系統(tǒng)400的內(nèi)核(例如,宿主內(nèi)核404和隔離內(nèi)核406)(902)。例如,VMM 402可駐留在BIOS中,并且自動將內(nèi)核406與內(nèi)核402隔離(904)。虛擬機監(jiān)控程序402被配置為訪問文件系統(tǒng),以及在隔離內(nèi)核406中一個或多個內(nèi)核上運行用戶應(yīng)用(906)。與此同時,VMM 402在宿主內(nèi)核404上啟動作為來賓的操作系統(tǒng)408 (906)。虛擬機監(jiān)控程序402包括一個或多個驅(qū)動程序或者基本輸入輸出系統(tǒng)(即,BIOS接口)功能以訪問含有應(yīng)用的介質(zhì),所述應(yīng)用將在隔離內(nèi)核406上初始化運行。雖然VMM 402在一般而言被描述為虛擬機監(jiān)控程序,但是在至少一個實施方案中,VMM 402為被配置來提供本文中所述的功能以及一些其它虛擬化功能的虛擬機監(jiān)控程序的簡約實施。在另一實施方案中,本文中所述的VMM 402功能被整合至提供其它典型虛擬機功能的通用虛擬機監(jiān)控程序中。在計算系統(tǒng)400的至少一個實施方案中,虛擬機監(jiān)控程序可被嵌套,例如,操作系統(tǒng)408為VMM機監(jiān)控程序,所述VMM機監(jiān)控程序通過與本文中所述功能一致的VMM 402來控制。在計算系統(tǒng)400的至少一個實施方案中,使用虛擬化技術(shù)來隔離內(nèi)核不需要修改操作系統(tǒng)。本文中所闡述的本發(fā)明的描述是說明性的,且無意限制以下權(quán)利要求中所闡述的本發(fā)明的范圍。例如,雖然已經(jīng)在隔離內(nèi)核被配置為在VMM控制下在來賓操作系統(tǒng)上應(yīng)用執(zhí)行的實際加速器的實施方案中描述本發(fā)明,但是所屬領(lǐng)域技術(shù)人員將明白,本文中的教案可用于即通型應(yīng)用、網(wǎng)絡(luò)器件加速以及一般計算加速。例如,VMM 402可與網(wǎng)絡(luò)路由器器件協(xié)調(diào)以使用隔離內(nèi)核406來加速封包檢測功能。此外,雖然已經(jīng)在一般計算系統(tǒng)中描述本發(fā)明,但是本文中所述教案的實施方案可包括在服務(wù)器、桌面系統(tǒng)(例如,個人計算機)、嵌入式應(yīng)用(例如,移動通信器件)以及其它適當(dāng)應(yīng)用中。在不脫離以下權(quán)利要求中所闡述的本發(fā)明的范圍和精神的情況下,可根據(jù)本文中所闡述的描述而作出本文中所公開實施方案的變動和修改。
權(quán)利要求
1.一種方法,其包括以下步驟 在包括計算機系統(tǒng)的多個內(nèi)核中的一個或多個內(nèi)核的第一內(nèi)核子集上執(zhí)行操作系統(tǒng),其中所述操作系統(tǒng)在虛擬機監(jiān)控程序控制下作為來賓執(zhí)行;以及 在包括所述多個內(nèi)核中的一個或多個內(nèi)核的第二內(nèi)核子集上為應(yīng)用執(zhí)行工作,所述第一內(nèi)核子集和第二內(nèi)核子集互斥,并且所述第二內(nèi)核子集對所述操作系統(tǒng)不可見。
2.根據(jù)權(quán)利要求I所述的方法,還包括 將所述第二內(nèi)核子集與所述操作系統(tǒng)隔離。
3.根據(jù)權(quán)利要求I所述的方法,其中所述應(yīng)用在所述第二內(nèi)核子集上、在所述操作系統(tǒng)外部并且獨立于所述操作系統(tǒng)執(zhí)行。
4.根據(jù)權(quán)利要求I所述的方法,其中所述應(yīng)用在所述操作系統(tǒng)上執(zhí)行,并且所述第二內(nèi)核子集中的內(nèi)核被配置為計算加速器,且其中所述應(yīng)用經(jīng)由所述虛擬機監(jiān)控程序間接訪問所述第二內(nèi)核子集。
5.根據(jù)權(quán)利要求4所述的方法,還包括 將與可用計算加速器有關(guān)的信息提供至在所述操作系統(tǒng)上執(zhí)行的驅(qū)動程序;以及 將工作調(diào)度為由所述可用計算加速器的目標(biāo)加速器來完成。
6.根據(jù)權(quán)利要求4所述的方法,其中所述執(zhí)行包括 為了方便所述應(yīng)用,請求由所述計算加速器完成的工作; 向所述操作系統(tǒng)指示已完成的工作;以及 處理由工作項產(chǎn)生的頁面錯誤。
7.一種裝置,其包括 多個內(nèi)核; 操作系統(tǒng)軟件,其編碼在所述多個內(nèi)核可訪問的一個或多個介質(zhì)中;以及監(jiān)管程序軟件,其編碼在所述多個內(nèi)核可訪問的一個或多個介質(zhì)中并且可在所述多個內(nèi)核中的一個或多個內(nèi)核上執(zhí)行,其中所述監(jiān)管程序軟件可執(zhí)行為在包括所述多個內(nèi)核中的一個或多個內(nèi)核的第一內(nèi)核集上控制執(zhí)行所述操作系統(tǒng)軟件作為來賓,以及在包括所述多個內(nèi)核中的一個或多個內(nèi)核的第二內(nèi)核集上執(zhí)行應(yīng)用的至少一些工作,其中所述第二內(nèi)核子集對所述操作系統(tǒng)不可見。
8.根據(jù)權(quán)利要求7所述的裝置,其中所述監(jiān)管程序軟件包括代碼,所述代碼可在所述多個內(nèi)核上執(zhí)行以將所述第二內(nèi)核集與所述操作系統(tǒng)隔離,且其中所述第一內(nèi)核集和第二內(nèi)核集互斥。
9.根據(jù)權(quán)利要求7所述的裝置,還包括 加速計算驅(qū)動程序,其編碼在所述第一內(nèi)核集可訪問的一個或多個介質(zhì)中,其中所述加速計算驅(qū)動程序被配置來調(diào)度所述應(yīng)用對所述第二內(nèi)核集的工作。
10.根據(jù)權(quán)利要求7所述的裝置,還包括 用于所述應(yīng)用與所述第二內(nèi)核集之間通信的至少一個隊列,其中所述至少一個隊列包括 命令隊列,其被配置來從加速計算驅(qū)動程序通信至所述監(jiān)管程序; 響應(yīng)隊列,其被配置來從所述監(jiān)管程序通信至所述加速計算驅(qū)動程序; 錯誤隊列,其被配置來從所述監(jiān)管程序通信至所述加速計算驅(qū)動程序;以及工作隊列,其被配置來從加速計算應(yīng)用程序接口通信至所述監(jiān)管程序。
11.根據(jù)權(quán)利要求7所述的裝置,還包括 應(yīng)用軟件,其編碼在所述多個內(nèi)核可訪問的一個或多個介質(zhì)中,其中所述監(jiān)管程序軟件包括可在所述多個內(nèi)核上執(zhí)行的代碼,以在所述監(jiān)管程序控制下在所述第二內(nèi)核集上獨立于在所述第一內(nèi)核集上執(zhí)行所述操作系統(tǒng)而執(zhí)行所述應(yīng)用軟件。
12.根據(jù)權(quán)利要求7所述的裝置,還包括 可在所述操作系統(tǒng)上執(zhí)行的應(yīng)用軟件,其編碼在所述多個內(nèi)核可訪問的一個或多個介質(zhì)中,其中所述監(jiān)管程序軟件包括可執(zhí)行來將所述第二內(nèi)核集配置為計算加速器的代碼,以及用于在所述第二內(nèi)核集上為所述應(yīng)用軟件執(zhí)行工作的代碼。
13.—種編碼在至少一個計算機可讀介質(zhì)中的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包括 一個或多個功能序列,其可執(zhí)行為虛擬機監(jiān)控程序或者可與虛擬機監(jiān)控程序結(jié)合執(zhí)行,并且被配置來在所述虛擬機監(jiān)控程序控制下在包括所述多個內(nèi)核中的一個或多個內(nèi)核的第一內(nèi)核集上執(zhí)行操作系統(tǒng)序列作為來賓,以及在包括所述多個內(nèi)核中的一個或多個內(nèi)核的第二內(nèi)核集上執(zhí)行應(yīng)用的至少一些工作,其中所述第二內(nèi)核集對所述操作系統(tǒng)不可見。
14.根據(jù)權(quán)利要求13所述的計算機程序產(chǎn)品,其中所述一個或多個功能序列被配置來在所述虛擬機監(jiān)控程序控制下在所述第二內(nèi)核集上獨立于在所述第一內(nèi)核集上執(zhí)行所述操作系統(tǒng)而執(zhí)行應(yīng)用序列。
15.根據(jù)權(quán)利要求13所述的計算機程序產(chǎn)品,其中所述一個或多個功能序列被配置來將所述第二內(nèi)核集與操作系統(tǒng)代碼隔離,并且將所述第二內(nèi)核集配置為用于在所述第二內(nèi)核集上執(zhí)行應(yīng)用代碼工作的計算加速器。
全文摘要
利用處理器內(nèi)核的技術(shù)包括將所使用處理器內(nèi)核與操作系統(tǒng)獨立隔離。在本發(fā)明至少一個實施方案中,一種方法包括在包括計算機系統(tǒng)的多個內(nèi)核中的一個或多個內(nèi)核的第一內(nèi)核子集上執(zhí)行操作系統(tǒng)。所述操作系統(tǒng)在虛擬機監(jiān)控程序控制下作為來賓執(zhí)行。所述方法包括在包括所述多個內(nèi)核中的一個或多個內(nèi)核的第二內(nèi)核子集上為應(yīng)用執(zhí)行工作。所述第一內(nèi)核子集和第二內(nèi)核子集互斥,并且所述第二內(nèi)核子集對所述操作系統(tǒng)不可見。在至少一個實施方案中,所述方法包括將所述第二內(nèi)核子集與所述操作系統(tǒng)隔離。
文檔編號G06F9/455GK102713847SQ201080059820
公開日2012年10月3日 申請日期2010年12月14日 優(yōu)先權(quán)日2009年12月29日
發(fā)明者埃里克·博林, 基思·A·洛韋里, 帕特里克·卡名斯基, 托馬斯·R·沃勒, 本杰明·C·謝列布林 申請人:超威半導(dǎo)體公司