專利名稱::多虛擬化技術(shù)的自適應(yīng)動態(tài)選擇與應(yīng)用的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明的一個或多個實(shí)施例涉及計(jì)算機(jī)系統(tǒng)虛擬化,更具體地說,涉及一種系統(tǒng)化的、基于性能的方法,該方法用于動態(tài)選擇并應(yīng)用不同虛擬化技術(shù),以改善虛擬化環(huán)境中的應(yīng)用和客戶搡作系統(tǒng)的執(zhí)行性能。
背景技術(shù):
:多種形式的計(jì)算機(jī)系統(tǒng)虛擬化已被用來改進(jìn)在給定計(jì)算系統(tǒng)平臺中提供并可獲得的物理資源能力的利用率,并取得了不同程度的成功。一般而言,虛擬化使得多個計(jì)算機(jī)系統(tǒng)環(huán)境能夠在給定硬件平臺上在功能上并行執(zhí)行。這些計(jì)算機(jī)系統(tǒng)環(huán)境嵌入客戶操作系統(tǒng),并且通過虛擬化,可以在不同程度上代表與底層的物理系統(tǒng)平臺不同的計(jì)算平臺。虛擬化系統(tǒng)通常4吏用虛擬片幾監(jiān)一見器(VMM)來實(shí)現(xiàn),VMM也凈皮稱作系統(tǒng)監(jiān)管器,其提供對一個或多個共同執(zhí)行的虛擬機(jī)(VM)。每個虛擬機(jī)代表封裝了用于執(zhí)行應(yīng)用程序的地址空間、客戶操作系統(tǒng)和虛擬平臺的分立執(zhí)行環(huán)境。過去幾年,已經(jīng)提出并實(shí)現(xiàn)了多種用于實(shí)現(xiàn)虛擬機(jī)監(jiān)視器的具體方法。至少理論上可以實(shí)現(xiàn)虛擬機(jī)監(jiān)視器的傳統(tǒng)虛擬化方法包括捕捉并仿真(trap隱and-emulate)、para畫virtualization(超虛扣乂4匕)、和二進(jìn)制翁3譯。捕捉并仿真虛擬化依賴于平臺中央處理單元(CPU)來實(shí)現(xiàn)特權(quán)模型,當(dāng)在無特權(quán)上下文中執(zhí)行特權(quán)依賴指令時,該特權(quán)模型將發(fā)出異常。特權(quán)依賴指令一般可以分類為那些直接修改執(zhí)行CPU的安全狀態(tài)的指令、那些執(zhí)行行為取決于執(zhí)行上下文的特權(quán)級別而變化的指令、以及那些可以用來揭示CPU的安全狀態(tài)以使能條件式程序執(zhí)行的指令。在所謂的經(jīng)典可虛擬化的計(jì)算機(jī)體系結(jié)構(gòu)中,所有特權(quán)依賴指令當(dāng)在無特權(quán)上下文中執(zhí)行時將發(fā)出異常。經(jīng)典的捕捉并仿真虛擬化系統(tǒng)提供了虛擬機(jī)內(nèi)的客戶操作系統(tǒng)的直接執(zhí)行,盡管是在無特權(quán)的安全級別之下。在該系統(tǒng)中,虛擬機(jī)監(jiān)視器在特權(quán)6級別下執(zhí)行,在執(zhí)行客戶操作系統(tǒng)時產(chǎn)生的特權(quán)異常被虛擬機(jī)監(jiān)視器捕捉。捕捉的指令和相關(guān)的執(zhí)行上下文隨后被虛擬機(jī)監(jiān)視器按需評估,以使能對調(diào)用了所捕捉異常的預(yù)期客戶操作系統(tǒng)功能的仿真。更詳細(xì)地,傳統(tǒng)操作系統(tǒng)在名義上被實(shí)現(xiàn)以利用系統(tǒng)監(jiān)管器/用戶特權(quán)系統(tǒng)。操作系統(tǒng)核和某些必要服務(wù)以監(jiān)管權(quán)利執(zhí)行,而非必要操作系統(tǒng)和用戶應(yīng)用以縮減的用戶權(quán)利執(zhí)行。在典型的基于x86的體系結(jié)構(gòu)中,環(huán)-0、1、2和3特權(quán)級別由硬件控制支持。操作系統(tǒng)傳統(tǒng)上在環(huán)-0特權(quán)級別上執(zhí)行,而用戶應(yīng)用通常在環(huán)-3上執(zhí)行。一些專門的用戶級別應(yīng)用可以運(yùn)行在環(huán)-1上,并且由于與這里內(nèi)容無關(guān)的原因,環(huán)-2很少被使用。環(huán)-0和更高的較少特權(quán)的環(huán)之間的區(qū)分是由硬件體系結(jié)構(gòu)安全控制在某些特權(quán)依賴指令在環(huán)-O之外執(zhí)行的情況下通過發(fā)出特權(quán)異常而在名義上被執(zhí)行的。傳統(tǒng)上,特權(quán)異常被看作不可重新進(jìn)入的事件,由于執(zhí)行特權(quán)指令的用戶級別程序通常作為安全預(yù)防措施而被終止。然而,基于x86的體系結(jié)構(gòu)支持重新啟動調(diào)用了特權(quán)捕捉異常的指令的執(zhí)行的能力。特權(quán)異常的產(chǎn)生導(dǎo)致上下文切換至環(huán)-0特權(quán)級別,在該級別異常被關(guān)聯(lián)的異常處理機(jī)處理。上下文切換和隨后虛擬機(jī)監(jiān)視器的仿真操作在客戶操作系統(tǒng)的虛擬化執(zhí)行中增加了性能開銷。因此,優(yōu)化該開銷性能是所有虛擬機(jī)實(shí)施方案中需要考量的內(nèi)容。遺憾的是,上下文切換和仿真開銷不是僅有的甚至不是捕捉并仿真虛擬化系統(tǒng)的主要問題。相反,主要問題是目前流行的x86體系結(jié)構(gòu)模型不是經(jīng)典的可虛擬化體系結(jié)構(gòu)。盡管許多特權(quán)依賴指令將適當(dāng)?shù)厣商貦?quán)異常,但是其它標(biāo)準(zhǔn)x86指令不能用來對應(yīng)當(dāng)被限于環(huán)-0執(zhí)行的活動生成特權(quán)異常。例如,多種x86指令可以被用來修改某些x86CUP內(nèi)寄存器的內(nèi)容,其中CPU內(nèi)寄存器包含僅在環(huán)-O執(zhí)行上下文中可修改的控制位。這些寄存器中的其他位可以在環(huán)-0執(zhí)行之外被有效寫入。任何嘗試在環(huán)-0執(zhí)行之外修改受環(huán)一0約束的控制位的x86指令將不僅不能產(chǎn)生特權(quán)異常,該嘗試性修改還將被默默忽略。此外,如果修改是由去特權(quán)的客戶操作系統(tǒng)核來嘗試的,那么預(yù)期的核行為將不被實(shí)現(xiàn)。從而,這些指令的執(zhí)行行為基于執(zhí)行的特權(quán)級別而不同。對于想要即在特權(quán)環(huán)境又在無特權(quán)環(huán)境中執(zhí)行的客戶操作系統(tǒng),會產(chǎn)生另一問題。假定該客戶操作系統(tǒng)是在用戶模式而非監(jiān)管模式下執(zhí)行的,那么任何由該模塊實(shí)現(xiàn)的特權(quán)級別狀態(tài)的運(yùn)行時(run-time)區(qū)分測試將總是識別出用戶模式執(zhí)行。不能執(zhí)行模塊的設(shè)計(jì)和實(shí)現(xiàn)時想要的特權(quán)操作將損害模塊和客戶操作系統(tǒng)的整體功能。由于傳統(tǒng)x86體系結(jié)構(gòu)不能對所有特權(quán)依賴指令的執(zhí)行產(chǎn)生異常,因此x86體系結(jié)構(gòu)不是經(jīng)典可虛擬化的。對此問題的進(jìn)一步論述可以在下面的文章中找到,Robin,J.S.&Irvine,C.E.,"AnalysisoftheIntelPentium'sAbilitytoSupportaSecureVirtualMachineMonitor,"Proceedingsofthe9thUSENIXSecuritySymposium,Denver,CO,August2000。特權(quán)依賴指令。如同捕捉并仿真虛擬化,超虛擬化系統(tǒng)實(shí)現(xiàn)虛擬機(jī)監(jiān)視器來提供對虛擬機(jī)的共同執(zhí)行的監(jiān)管控制。盡管客戶操作系統(tǒng)類似地以去特權(quán)的方式在底層的平臺上執(zhí)行,但是超虛擬化要求客戶操作系統(tǒng)直接意識到并調(diào)用虛擬機(jī)監(jiān)視器來處理涉及特權(quán)依賴指令的環(huán)境。由于傳統(tǒng)操作系統(tǒng)是在未提供與虛擬機(jī)監(jiān)視器交互功能的情況下被實(shí)現(xiàn)的,因此標(biāo)準(zhǔn)超虛擬化實(shí)現(xiàn)方案需要客戶操作系統(tǒng)被具體修改以支持虛擬化。即,在去特權(quán)上下文中特權(quán)依賴指令的執(zhí)行可能造成不受歡迎的行為的每個地方,通常需要客戶操作系統(tǒng)的源碼級別^f奮改。超虛擬化虛擬機(jī)監(jiān)視器典型地包含可從客戶操作系統(tǒng)訪問的庫例程,其恰當(dāng)?shù)胤抡姹匾目蛻舨僮飨到y(tǒng)特權(quán)功能。超虛擬化虛擬機(jī)監(jiān)視器一種現(xiàn)有實(shí)現(xiàn)方案(被稱做Xen3.0)可從加利福尼亞州PaloAlto的XenSource公司獲得。超虛擬化的缺點(diǎn)是需要修改客戶操作系統(tǒng)核心以支持虛擬機(jī)監(jiān)視器交互。傳統(tǒng)上,所支持的每個不同類型和版本的每種客戶操作系統(tǒng)必須被修改。在許多情形中,對操作系統(tǒng)所需組件的訪問是不可行的??紤]到所需修改的核心位置,為確保核心操作在能夠支持更高操作系統(tǒng)層和應(yīng)用的一致行為執(zhí)行的方面不被非故意地直接或間接影響,會產(chǎn)生顯著的測試負(fù)擔(dān)?;诙M(jìn)制翻譯的虛擬化系統(tǒng),與捕捉并仿真和超虛擬化系統(tǒng)類似,典型地實(shí)現(xiàn)虛擬機(jī)監(jiān)視器來在功能上管理并協(xié)調(diào)虛擬機(jī)內(nèi)客戶操作系統(tǒng)的執(zhí)行。虛擬機(jī)監(jiān)視器執(zhí)行在特權(quán)上下文中,并管理客戶操作系統(tǒng)的執(zhí)行。如在美國專利6,397,242(被授予給Devine等人并被轉(zhuǎn)讓給本申請的受讓人)中描述的,虛擬機(jī)監(jiān)視器對指令執(zhí)行流進(jìn)行運(yùn)行時分析以識別特權(quán)依賴指令的發(fā)生,其中特權(quán)依賴指令如果在未被修改的情況下執(zhí)行,會產(chǎn)生不受歡迎的系統(tǒng)行為。運(yùn)行時分析由二進(jìn)制至二進(jìn)制翻譯器執(zhí)行,該二進(jìn)制至二進(jìn)制翻譯器發(fā)出包含特權(quán)依賴指令的仿真的功能上等同的指令流。取決于特權(quán)依賴指令的性質(zhì)和使用,二進(jìn)制翻譯結(jié)果產(chǎn)生重寫指令和調(diào)出(call-out)庫例程的某個組合,其中庫例程適于仿真特權(quán)依賴指令分段想要執(zhí)行的客戶操作系統(tǒng)的功能。最終的經(jīng)翻譯指令流優(yōu)選被高速緩存,并且之后代替客戶操作系統(tǒng)的對應(yīng)部分而祐j丸4亍。盡管指令流的初始處理和二進(jìn)制翻譯增加了性能負(fù)擔(dān),但是隨后來自翻譯高速緩存的經(jīng)翻譯指令流的執(zhí)行獲得接近本地的性能??紤]到現(xiàn)代操作系統(tǒng)的相對小部分被主要并被重復(fù)執(zhí)行,使用基于二進(jìn)制翻譯的虛擬化可實(shí)現(xiàn)的總體性能增加是實(shí)質(zhì)性的?;诙M(jìn)制翻譯的虛擬化系統(tǒng)因此實(shí)現(xiàn)了支持非經(jīng)典可虛擬化體系結(jié)構(gòu)的好處,而不需要超虛擬化的源級別客戶操作系統(tǒng)修改,也沒有如在純粹捕捉并仿真虛擬化之下發(fā)生的,每次特權(quán)依賴指令被執(zhí)行時異常處理開銷的持續(xù)性能負(fù)擔(dān)。非經(jīng)典可虛擬化體系結(jié)構(gòu)(例如x86體系結(jié)構(gòu))中特權(quán)依賴指令的存在很久之前就已知曉,但是直到最近,x86體系結(jié)構(gòu)的多個基于硬件的擴(kuò)展被提出并在不同程度上被實(shí)現(xiàn)以支持分區(qū)虛擬化。特別地,英特爾公司已實(shí)現(xiàn)了虛擬化技術(shù)(或VT)擴(kuò)展,該虛擬化技術(shù)擴(kuò)展在非經(jīng)典可虛擬化體系結(jié)構(gòu)中提供了用于分區(qū)虛擬化的基于硬件的支持。其它廠商,例如AdvancedMicroDevices,Inc.,在他們的微處理器設(shè)計(jì)中已引入了類似的擴(kuò)展??紤]到功能的相似性,出于討論本發(fā)明的目的,所有基于硬件的虛擬化擴(kuò)展可以被通稱為VT擴(kuò)展。簡言之,VT引入了定義兩種特權(quán)級別的特權(quán)覆蓋系統(tǒng)。和傳統(tǒng)x86特權(quán)模型有關(guān),已經(jīng)添加了新的VMX非根級別,該新的VMX非根級別功能上包含標(biāo)準(zhǔn)x86環(huán)-0、1、2、3特權(quán)才莫型。傳統(tǒng)x86特權(quán)才莫型,皮標(biāo)識為VMX根級別。在使用中,實(shí)現(xiàn)VT捕捉處理機(jī)的虛擬機(jī)監(jiān)視器將在VMX根環(huán)-0中執(zhí)行。通過在VMX非根環(huán)-0中執(zhí)行客戶操作系統(tǒng),許多與特權(quán)依賴指令有關(guān)的問題被解決;客戶操作系統(tǒng)運(yùn)行在它們想要的特權(quán)執(zhí)行模式中。其余的虛擬化問題,具體指那些由x86體系結(jié)構(gòu)的傳統(tǒng)非經(jīng)典可虛擬化性質(zhì)產(chǎn)生的問題,由與VMX根環(huán)-O相關(guān)的VMX非根環(huán)-O的受控去特權(quán)處理。即,VT實(shí)現(xiàn)VM退出與VM進(jìn)入操作,其封裝VMX非根和根特權(quán)狀態(tài)之間的轉(zhuǎn)移,以添加傳統(tǒng)上不產(chǎn)生特權(quán)異常的事件以及那些特權(quán)依賴指令的異常處理。這些非經(jīng)典可虛擬化指令的執(zhí)行以及某些操作條件的發(fā)生(特別地,關(guān)于存儲器分頁、中斷處理和編程I/0操作),將自動地或如VT定義的控制向量確定的那樣,迫使作出VM退出轉(zhuǎn)移。這使得虛擬機(jī)監(jiān)視器內(nèi)實(shí)現(xiàn)的VT捕捉處理機(jī)能與虛擬機(jī)的并行陣列一致地處理這些具體條件,從而獲得總體操作完整性。盡管已發(fā)展了更為直接的方法來支持分區(qū)虛擬化以及實(shí)質(zhì)上簡化虛擬機(jī)監(jiān)視器的實(shí)現(xiàn),但是使用VT和其它類似的基于硬件的虛擬化支持技術(shù)存在許多內(nèi)在限制。具體而言,VT的基礎(chǔ)操作將許多特權(quán)依賴指令轉(zhuǎn)換為重量級上下文切換的等同物(如果不是實(shí)際的重量級上下文切換的話)。即,盡管實(shí)質(zhì)上是以硬件實(shí)現(xiàn)的,但是VM退出與VM進(jìn)入轉(zhuǎn)移需要相當(dāng)大量的狀態(tài)信息被從虛擬機(jī)控制結(jié)構(gòu)恢復(fù)并針對VM退出與VM進(jìn)入轉(zhuǎn)移進(jìn)行保存。在典型客戶操作系統(tǒng)內(nèi)的性能敏感執(zhí)行流中發(fā)生特權(quán)依賴指令的情況下,VM退出與VM進(jìn)入轉(zhuǎn)移顯著的處理負(fù)擔(dān)會特別有問題。例如,若干特權(quán)依賴指令在頁表的管理中被有代表性地調(diào)用。在執(zhí)行傳統(tǒng)操作系統(tǒng)核心的時候,考慮到性能成本可忽略且優(yōu)化優(yōu)化存儲器訪問特別有益的傳統(tǒng)假設(shè),頁表操作被相當(dāng)頻繁地執(zhí)行。如傳統(tǒng)虛擬機(jī)監(jiān)視器中實(shí)現(xiàn)的VT類型基于硬件的虛擬化支持系統(tǒng)通常將在這些頁表修改中增加VM退出與VM進(jìn)入轉(zhuǎn)移??傮w結(jié)果是,對于頻繁調(diào)用特權(quán)依賴指令的操作系統(tǒng),VT類型系統(tǒng)將產(chǎn)生實(shí)際中不僅是顯著并且是可覺察到的虛擬化開銷。此外,虛擬機(jī)監(jiān)視器需要為仿真的目的評估啟動每個VM退出的特權(quán)依賴指令的預(yù)期操作,這也會增加實(shí)質(zhì)性的處理負(fù)擔(dān)。盡管作為硬件實(shí)現(xiàn)的VM退出轉(zhuǎn)移的一部分,VM退出轉(zhuǎn)移捕獲顯著的狀態(tài)信息,但是常駐虛擬機(jī)監(jiān)視器的VM退出處理機(jī)必須重新確定特權(quán)依賴指令的預(yù)期操作和執(zhí)行上下文。典型地,虛擬機(jī)監(jiān)視器操作解碼特權(quán)依賴指令,并且進(jìn)一步分析客戶操作系統(tǒng)的執(zhí)行上下文的可能全異的方面,以正確特征化并實(shí)現(xiàn)特權(quán)依賴指令的仿真執(zhí)行。由于該解碼與分析是在每個VM退出轉(zhuǎn)移之后執(zhí)行的,因此被捕捉的特權(quán)依賴指令的VT分析與仿真也是虛擬化開銷的重要來源。但是,VT類型基于硬件的虛擬化在與超虛擬化和二進(jìn)制翻譯虛擬化技10術(shù)有關(guān)的某些方面提供了明顯的益處。與超虛擬化有關(guān)的,VT虛擬化使得能夠執(zhí)行未經(jīng)修改的客戶操作系統(tǒng)。與二進(jìn)制翻譯虛擬化相比,VT虛擬化不增加初始執(zhí)行開銷,并且允許應(yīng)用程序向客戶操作系統(tǒng)的系統(tǒng)調(diào)用在無虛擬機(jī)監(jiān)視器介入的情況下執(zhí)行。并且,由于VT虛擬化不需要翻譯高速緩存,因此VT虛擬機(jī)監(jiān)視器將需要更少的存儲器。
發(fā)明內(nèi)容本發(fā)明的一個或多個實(shí)施例提供了一種動態(tài)優(yōu)化虛擬機(jī)的現(xiàn)實(shí)執(zhí)行性能的自適應(yīng)自治系統(tǒng)。根據(jù)一個或多個這樣的實(shí)施例,這是通過提供在虛擬機(jī)監(jiān)視器中實(shí)現(xiàn)的多虛擬化技術(shù)之間的自動選"^奪以優(yōu)化虛擬機(jī)的執(zhí)行性能而實(shí)現(xiàn)的。虛擬機(jī)監(jiān)視器實(shí)現(xiàn)多個虛擬化支持處理器,每個虛擬化支持處理器提供對潛在虛擬化異常的全面處理。例如,駐留在虛擬機(jī)監(jiān)視器中的虛擬化選擇控制可用來取決于標(biāo)識出在執(zhí)行客戶操作系統(tǒng)時面臨的指令流的一部分中的時間本地特權(quán)依賴指令的預(yù)定模式,在第一和第二虛擬化支持處理器的使用之間進(jìn)行選擇。有利的是,個體虛擬機(jī)的執(zhí)行性能,無論是獨(dú)立執(zhí)行還是在共用硬件平臺上與其他虛擬機(jī)同步執(zhí)行,被單獨(dú)優(yōu)化。此外,虛擬機(jī)執(zhí)行性能被動態(tài)優(yōu)化,而無需虛擬機(jī)監(jiān)纟見器被重新加載,也無需任何虛擬機(jī)的重啟。此外,虛擬化性能分析,以及在適當(dāng)確定后在不同虛擬化技術(shù)之間的切換,是完全在虛擬機(jī)監(jiān)視器內(nèi)執(zhí)行的。性能數(shù)據(jù)的收集以及虛擬化技術(shù)切換的實(shí)現(xiàn)對虛擬機(jī)(包括其封裝的客戶操作系統(tǒng)、執(zhí)行應(yīng)用、以及虛擬機(jī)的用戶)是透明的。此外,根據(jù)本發(fā)明的一個或多個實(shí)施例,可以動態(tài)評估和使用任意數(shù)量的不同虛擬化技術(shù)。具體地說,在不影響最優(yōu)選擇的虛擬化技術(shù)的情況下,虛擬機(jī)監(jiān)視器可以支持多種不同基于硬件虛擬化的技術(shù)。此外,與不同虛擬化技術(shù)相關(guān)聯(lián)的虛擬化開銷成本,至少部分基于由客戶揭:作系統(tǒng)的實(shí)際執(zhí)行確定的虛擬機(jī)監(jiān)視器的所需明確虛擬化支持操作,而被動態(tài)確定。最優(yōu)虛擬化技術(shù)的選擇因此將取決于客戶執(zhí)行應(yīng)用需要的客戶操作系統(tǒng)的實(shí)際操作。因此,這使能了動態(tài)反映虛擬機(jī)的實(shí)際和形成中的操作條件的最優(yōu)虛擬化技術(shù)的選擇。1圖1是適于實(shí)現(xiàn)本發(fā)明一個或多個實(shí)施例的計(jì)算機(jī)系統(tǒng)平臺中的通用虛擬存儲器系統(tǒng)的主要功能組件的框圖2A和2B的示圖分別圖示出x86體系結(jié)構(gòu)系統(tǒng)中實(shí)現(xiàn)的虛擬地址以及使用頁表將虛擬地址翻譯成對應(yīng)的物理地址。圖3是示出了根據(jù)本發(fā)明一個或多個實(shí)施例用于在計(jì)算機(jī)系統(tǒng)平臺上同時執(zhí)行的多個虛擬機(jī)的邏輯布置的框圖。圖4A和4B示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例使用的特權(quán)級別模型。圖5是示出了根據(jù)本發(fā)明一個或多個實(shí)施例與多個虛擬機(jī)的執(zhí)行相關(guān)聯(lián)的存儲器空間分配和控制功能的框圖。圖6是圖示出根據(jù)本發(fā)明優(yōu)選實(shí)施例用于基于硬件的虛擬化系統(tǒng)的虛擬機(jī)退出(VM退出)與虛擬機(jī)進(jìn)入(VM進(jìn)入)轉(zhuǎn)移通路的框圖。圖7A和7B示出了幫助圖示出指令流內(nèi)特權(quán)依賴指令序列的VT處理和二進(jìn)制翻譯之間差異的示圖。圖8是根據(jù)本發(fā)明一個或多個實(shí)施例實(shí)現(xiàn)多個虛擬化技術(shù)(特別地,是在二進(jìn)制翻譯技術(shù)和VT技術(shù)之間)的動態(tài)選擇和應(yīng)用的虛擬機(jī)監(jiān)視器的主要功能組件的框圖。圖9是詳述根據(jù)本發(fā)明一個或多個實(shí)施例的性能監(jiān)視器的操作的框圖。圖IOA、IOB和IOC提供了根據(jù)本發(fā)明一個或多個實(shí)施例將多個虛擬化技術(shù)(特別地,二進(jìn)制翻譯和VT)應(yīng)用于指令流內(nèi)的特權(quán)依賴指令序列的圖解表達(dá)。圖11是圖示出執(zhí)行動態(tài)的塊導(dǎo)向的多虛擬化技術(shù)選擇與應(yīng)用的本發(fā)明第一優(yōu)選實(shí)施例的流程圖。圖12是圖示出執(zhí)行動態(tài)的熱通路導(dǎo)向的多虛擬化技術(shù)選擇與應(yīng)用的本發(fā)明第二優(yōu)選實(shí)施例的流程圖。圖13是圖示出根據(jù)本發(fā)明實(shí)現(xiàn)多個虛擬化技術(shù)之間動態(tài)轉(zhuǎn)移的方法的優(yōu)選實(shí)施例的流程圖。具體實(shí)施例方式本發(fā)明的一個或多個實(shí)施例提供了對選擇虛擬化技術(shù)的優(yōu)化,該優(yōu)化在虛擬機(jī)監(jiān)視器中實(shí)現(xiàn),用來支持虛擬機(jī)的執(zhí)行。出于簡化下文詳細(xì)說明的目的,相似的參考標(biāo)號被用來指代一個或多個附圖中描述的相似部件。圖1是適于實(shí)現(xiàn)本發(fā)明一個或多個實(shí)施例的計(jì)算機(jī)10中的通用虛擬存儲器系統(tǒng)的主要功能組件的框圖。如圖1所示,計(jì)算機(jī)10包括中央處理器單元(CPU)12、包含翻譯后援緩沖器(translationlook-asidebuffer,TLB)16的存儲器管理單元(MMU)14、以及基于隨機(jī)存取存儲器(RAM)的主存儲器18,主存儲器18提供對多個頁表20和操作系統(tǒng)(OS)22的操作存儲。如圖1中進(jìn)一步示出的,計(jì)算機(jī)10進(jìn)一步包括直接存儲器存取(DMA)控制器24、外圍設(shè)備26、和存儲器映射I/0設(shè)備28,其中DMA控制器24支持主存儲器18、外圍設(shè)備26(包括持久的程序與數(shù)據(jù)存儲設(shè)備)和存儲器映射I/0設(shè)備28之間的數(shù)據(jù)傳送。如圖1中進(jìn)一步示出的,中斷控制器30向CPU12提供事件通知支持。出于本發(fā)明實(shí)施例的目的,計(jì)算機(jī)10的多種物理實(shí)現(xiàn)方案被認(rèn)為是等同的,例如CPU12代表多處理單元,包括潛在的多核處理器,并且存儲器管理單元14實(shí)現(xiàn)例如包括非基于頁表方案的其它存儲器分配算法。本發(fā)明的實(shí)施例不限于特定CPU12的體系結(jié)構(gòu)或指令集。CPU12通過順序處理從主存儲器18讀取的指令和數(shù)據(jù)流,用來執(zhí)行程序,包括OS22和同樣駐留在主存儲器18中的關(guān)聯(lián)應(yīng)用程序。如傳統(tǒng)上的,指令流可能并且通常將涉及多個外圍設(shè)備26(表現(xiàn)為位于硬件I/O地址空間內(nèi)的硬件寄存器)和可通過主存儲器地址空間的一部分訪問的其它外圍設(shè)備28之間的數(shù)據(jù)傳送。中斷控制器30向CPU12提供外部事件的通知(通常由多個外圍設(shè)備26、28產(chǎn)生),以由CPU12調(diào)用專門的中斷處理機(jī)來管理外圍數(shù)據(jù)傳送。CPU12傳統(tǒng)上實(shí)現(xiàn)虛擬地址空間,其中虛擬地址空間可以具有多種不同類型的組織(例如線性的或分段的),并且使用MMU14來提供虛擬至物理地址翻譯。對于本發(fā)明的實(shí)施例,優(yōu)選分段虛擬地址空間。并且,如傳統(tǒng)上的,物理存儲器在虛擬地址空間內(nèi)被管理為頁集合。這些頁,如加載到主存儲器18中的那樣,可能不是物理連續(xù)的,盡管在虛擬地址空間中通常維護(hù)邏輯上連續(xù)的關(guān)系。在執(zhí)行期間,CPU12產(chǎn)生虛擬地址空間內(nèi)的地址,以相對于主存儲器18讀取指令并傳送有關(guān)數(shù)據(jù)。MMU14負(fù)責(zé)確定對應(yīng)頁是否真的駐留在主存儲器18中;如果未駐留該頁,那么生成缺頁異常。該異常被抓獲作為CPU12的中斷,并且駐留在OS22中的缺頁異常處理枳4皮執(zhí)行以通常從外圍持久存儲設(shè)備26加載缺失的頁。當(dāng)頁傳送完成時,通過重新執(zhí)行造成缺頁的指令,程序的執(zhí)行被恢復(fù)。名義上,MMU14隨后將確定該頁是存在的,并且存儲器存取將成功完成。如下文進(jìn)一步描述的,MMU12傳統(tǒng)上^f吏用頁表20將虛擬地址翻譯成物理地址。頁表20維護(hù)虛擬地址到物理頁的映射,該映射通常^f吏用分等級組織來實(shí)現(xiàn),并且物理頁包含對應(yīng)的物理地址。在典型的虛擬存儲器系統(tǒng)中,需要多個頁表20存取以解決虛擬地址到物理地址的映射。TLB16用做頁表20條目的高速緩存,并且因此減少了虛擬存儲器系統(tǒng)所需的外部存儲器存取的數(shù)量。如果映射尚未在TLB16中高速緩存,那么MMU14必須執(zhí)行頁表查詢(pagetablewalk)以獲取對所需物理頁的正確引用。幸運(yùn)的是,當(dāng)CPU12正在執(zhí)行計(jì)算機(jī)程序時,大多數(shù)存儲器存取將是關(guān)于主存儲器18內(nèi)有限數(shù)量的頁。圖2A和2B的示圖分別圖示出x86體系結(jié)構(gòu)系統(tǒng)中實(shí)現(xiàn)的虛擬地址以及使用頁表將虛擬地址翻譯成對應(yīng)的物理地址。具體而言,圖2A和2B圖示出將32位虛擬地址40翻譯成包含所尋址位置的物理存儲器頁的引用。在典型的實(shí)現(xiàn)方案中,虛擬地址40包括10位的頁目錄索引(PDIdx)42、10位的頁表索引(PTIdx)44、以及12位的頁偏移量46。如圖2B的示圖50所示,頁目錄索引42定義頁目錄表52中從標(biāo)準(zhǔn)x86控制寄存器CR3開始的偏移量以定位具體頁目錄條目(PDE)54。頁目錄條目54標(biāo)識出一組頁表20中的頁表56。頁表索引44被用來選擇標(biāo)識出特定物理頁60的特定頁表?xiàng)l目(PTE)58。偏移量46定位所選頁表60中的特定尋址數(shù)據(jù)62?;陧撃夸浰饕?2和頁表索引44的值,TLB16被MMU14用來高速緩存每個明確虛擬地址翻譯的結(jié)果。從而,在執(zhí)行顯式虛擬地址翻譯之前,MMU14檢查TLB以找到與頁目錄索引42和頁表索引44的組合值相匹配的條目。匹配的結(jié)果將是對應(yīng)存儲器頁60的物理地址。隨后需要單個偏移量46的偏移訪問以獲取實(shí)際數(shù)據(jù)。相反地,如果沒有找到匹配,那么要求MMU14執(zhí)行查詢頁表20所需的多個存儲器存取,以定位并評估頁目錄和頁表52、56之間的映射關(guān)系。頁表查詢的最終結(jié)果具體而言,即頁表?xiàng)l目1458的值與對應(yīng)的頁目錄索引42和頁表索引44一起^皮存^f諸在TLB16中。圖3是圖示出如計(jì)算機(jī)10支持的CPU12所支持的虛擬地址空間中描述的多個虛擬機(jī)的邏輯表示70的框圖。如圖3中所示,虛擬機(jī)721-N中的每個封裝客戶操作系統(tǒng)(相應(yīng)的客戶操作系統(tǒng)741-N),客戶操作系統(tǒng)進(jìn)而支持應(yīng)用3丸行空間(相應(yīng)的應(yīng)用執(zhí)行空間761-N)。對于本發(fā)明的優(yōu)選實(shí)施例,客戶操作系統(tǒng)74可以是MicrosoftWindowsTM、Linux和基于Netware的操作系統(tǒng)的類似或不同實(shí)例。其它客戶操作系統(tǒng)可以等同地使用。根據(jù)本發(fā)明的優(yōu)選實(shí)施例,虛擬機(jī)721-N中的每個由虛擬機(jī)監(jiān)視器(相應(yīng)的虛擬機(jī)監(jiān)視器781-N)管理,虛擬機(jī)監(jiān)視器在內(nèi)部實(shí)現(xiàn)支持多個不同虛擬化4支術(shù)所需的可執(zhí)4于組件。虛擬機(jī)721-N和虛擬才幾監(jiān)^L器781-N優(yōu)選地被實(shí)現(xiàn)在由VMware公司(加利福尼亞州,PaloAlto市)制造并銷售的ESX服務(wù)器產(chǎn)品版本中。對ESX服務(wù)器產(chǎn)品的具體使用在本發(fā)明實(shí)施例的實(shí)施中并不是必需的。對于本發(fā)明的優(yōu)選實(shí)施例,虛擬機(jī)監(jiān)視器781-N中的每個提供二進(jìn)制翻譯和基于VT的虛擬化支持兩者。在本發(fā)明的替代性實(shí)施例中,虛擬機(jī)監(jiān)視器781-N中的一個或多個可以僅實(shí)現(xiàn)或者額外包括對超虛擬化的支持,其中客戶操作系統(tǒng)741-N中的對應(yīng)操作系統(tǒng)已被修改以直接利用由虛擬機(jī)監(jiān)視器781-N中的對應(yīng)虛擬機(jī)監(jiān)視器提供的超虛擬化支持。在虛擬機(jī)監(jiān)視器781-N的實(shí)例內(nèi)提供對多個虛擬化技術(shù)的支持,并結(jié)合使能在這些虛擬化技術(shù)之間的動態(tài)切換的組件,使得本發(fā)明的一個或多個實(shí)施例能夠獨(dú)立優(yōu)化每個虛擬機(jī)721-N的執(zhí)行,其中優(yōu)化的每個虛擬機(jī)721-N的執(zhí)行適于客戶操作系統(tǒng)741-N中的特定客戶操作系統(tǒng)以及在對應(yīng)虛擬機(jī)721-N內(nèi)執(zhí)行的應(yīng)用程序的具體操:作行為。圖4A示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例使用的二進(jìn)制翻譯特權(quán)模型80。對于基于x86的處理器,2位定義的特權(quán)保護(hù)系統(tǒng)定義級別或環(huán)-0用于最具特權(quán)的軟件,以及級別或環(huán)-3用于最少特權(quán)的軟件。特權(quán)位被定義為分段寄存器值的一部分,該分段寄存器值被分配給功能上包含客戶操作系統(tǒng)741-N和虛擬機(jī)監(jiān)視器781-N的存儲器分段。如所公知的,特權(quán)級別確定面向系統(tǒng)功能的指令在由處理器執(zhí)行時是否將產(chǎn)生特權(quán)異常。特權(quán)級別還控制某些控制寄存器(包括頁表指針和分段寄存器)是否可在不產(chǎn)生特權(quán)異常的條件下修改。對于傳統(tǒng)操作系統(tǒng)執(zhí)行在環(huán)-O特權(quán)級別的情形,如圖4中所示的優(yōu)選二進(jìn)制翻i爭特權(quán)模型80,虛擬機(jī)監(jiān)^L器781-N執(zhí)行在環(huán)-O下。在虛擬才幾監(jiān)視器781-N的控制下,客戶操作系統(tǒng)741-N的多個部分在相同或較弱的特權(quán)級別處執(zhí)行。執(zhí)行特權(quán)級別由虛擬機(jī)監(jiān)視器781-N基于應(yīng)用于客戶操作系統(tǒng)741-N的對應(yīng)部分的具體二進(jìn)制翻譯來確定。如圖4A中進(jìn)一步示出的,在虛擬機(jī)721-N的應(yīng)用執(zhí)行空間761-N內(nèi)執(zhí)行的應(yīng)用程序在環(huán)-3處執(zhí)行。對于本發(fā)明的優(yōu)選實(shí)施例,虛擬機(jī)721-N內(nèi)的虛擬才幾監(jiān)^L器781-N、環(huán)-3執(zhí)行的應(yīng)用和客戶操作系統(tǒng)741-N的功能分離是如美國專利6,397,242"VirtualizationSystemIncludingaVirtualMachineMonitorForaComputerwithaSegmentedArchitecture"(該專利#皮4受予給Devine等人,并^皮轉(zhuǎn)讓給本發(fā)明的受讓人)中描述的那樣執(zhí)行的,該專利通過引用結(jié)合于此。簡言之,在分配給虛擬機(jī)721-N的特有地址空間中,包含虛擬機(jī)監(jiān)視器781-N的分段被分配給高存儲器地址,并且客戶操作系統(tǒng)741-N分段被分配給低存儲器地址。通過截?cái)嚓P(guān)于每個虛擬機(jī)721-N保持的適當(dāng)分段控制寄存器值,個體客戶操作系統(tǒng)741-N可用的存儲器空間被限制,以防止與虛擬機(jī)監(jiān)視器781-N的分段地址空間相重疊。根據(jù)本發(fā)明的一個或多個實(shí)施例,通過適當(dāng)重寫與不同分段相關(guān)聯(lián)的特權(quán)控制位,所分配的客戶操作系統(tǒng)741-N特權(quán)級別可以被分別{務(wù)改。為確保個體客戶操作系統(tǒng)741-N和虛擬機(jī)監(jiān)視器781-N以及進(jìn)一步虛擬機(jī)721-N之間的功能分離,虛擬機(jī)監(jiān)視器781-N管理客戶操作系統(tǒng)741-N對存儲器頁的分配與使用。通常,每個客戶操作系統(tǒng)741-N將預(yù)期能夠訪問CPU12的完整虛擬地址空間。為保護(hù)地址空間的一致性,虛擬機(jī)監(jiān)視器781-N主動限制客戶操作系統(tǒng)741-N訪問或分配虛擬機(jī)監(jiān)視器781-N或其它虛擬機(jī)721-N內(nèi)的存儲器。這是通過每個虛擬機(jī)監(jiān)視器781-N建立代表相應(yīng)客戶操作系統(tǒng)741-N的存儲器內(nèi)數(shù)據(jù)結(jié)構(gòu)和多個CPU上寄存器的陰影結(jié)構(gòu)而實(shí)現(xiàn)的。這些數(shù)據(jù)結(jié)構(gòu)限制客戶操作系統(tǒng)741-N可以訪問CPU12的虛擬地址空間的方式和程度。具體而言,陰影結(jié)構(gòu)被維護(hù)用于在客戶操作系統(tǒng)741_N所執(zhí)行的分段和頁表管理中涉及的客戶級別主要數(shù)據(jù)結(jié)構(gòu)。圖5是示出了根據(jù)本發(fā)明一個或多個實(shí)施例與多個虛擬機(jī)721-N的執(zhí)行相關(guān)聯(lián)的存儲器空間分配和控制功能的框圖。如圖5所一般指示的,x86體系結(jié)構(gòu)100包括CPU上寄存器,其存儲指向全局描述符(GDT)、局部描述符(LDT)和中斷描述符(IDT)表102的地址指針。全局描述符表名義上存儲分段描述符,其中每個分段描述符標(biāo)識出存儲器分段、對應(yīng)的兩個位的分段特權(quán)級別值、以及分段讀/寫許可??蛻舨僮飨到y(tǒng)741-N對客戶操作系統(tǒng)741-N的全局描述符表(GDT)、局部描述符表(LDT)和中斷描述符表(IDT)102或?qū)PU上描述符表寄存器的訪問,特別是寫訪問,導(dǎo)致特權(quán)異常。當(dāng)這種異常被虛擬機(jī)監(jiān)視器781-N中的一個捕捉時,陰影寄存器或數(shù)據(jù)結(jié)構(gòu)102'被引用以使能操作的正確功能仿真。在當(dāng)前優(yōu)選的實(shí)施例中,IDT表不是被直接陰影化的。相反,對于客戶操作系統(tǒng)741-N中對應(yīng)的每一個,虛擬機(jī)監(jiān)視器781-N響應(yīng)于IDT修改異常適當(dāng)?shù)刈x取并變換IDT表內(nèi)容的邏輯表達(dá)。作為仿真的一部分,存儲器分段的創(chuàng)建和后續(xù)的修改可以由虛擬機(jī)監(jiān)視器781-N主動監(jiān)視,以確保存儲器空間一致性被維持。如圖5中進(jìn)一步示出的,x86體系結(jié)構(gòu)100還采用頁表104來管理分段地址空間內(nèi)的虛擬到真實(shí)地址的翻譯。虛擬機(jī)監(jiān)視器781-N維護(hù)頁表104,頁表104定義對應(yīng)虛擬機(jī)監(jiān)視器781-N實(shí)例的操作環(huán)境。陰影頁表106通常與客戶操作系統(tǒng)741-N的對應(yīng)一個中實(shí)現(xiàn)的客戶頁表106'同時被維護(hù)。訪問通過頁表106'標(biāo)識的存儲器頁的一般操作系統(tǒng)動作通過使用特權(quán)控制系統(tǒng)而被捕4足。捕捉操作允許虛擬機(jī)監(jiān)視器781-N首先準(zhǔn)予并且在適當(dāng)?shù)那闆r下加載或以其它方式管理被訪問存儲器頁的可用性。即,當(dāng)客戶操作系統(tǒng)741-N之一請求的存儲器頁基于陰影頁表106被確定為并非由虛擬機(jī)監(jiān)視器781-N中的對應(yīng)一個提供的時候,訪問被準(zhǔn)予,并且^L情況對應(yīng)頁由虛擬機(jī)監(jiān)視器781-N中的這個操作系統(tǒng)所加載。陰影和客戶頁表106、106'均被更新??蛻舨僮飨到y(tǒng)741-N中的這個操作系統(tǒng)的執(zhí)行隨后被恢復(fù),同時所請求的頁被發(fā)現(xiàn)。反之,當(dāng)如虛擬機(jī)監(jiān)視器781-N所確定的那樣,對所請求頁的訪問是不適當(dāng)?shù)模m合的訪問異常錯誤被轉(zhuǎn)發(fā)給客戶操作系統(tǒng)741-N中的對應(yīng)一個,以適合于客戶才喿作系統(tǒng)741-N中的這個搮:作系統(tǒng)而進(jìn)行處理。17圖4B示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例使用的優(yōu)選VT特權(quán)模型90。在功能上,VT特權(quán)模型90定義用于CPU12的VMX根92和VMX非根94,其中每個進(jìn)一步由一組環(huán)-0、1、2、3特權(quán)級別代表。VMX非根94相對于VMX根92被去特權(quán),而與特權(quán)級別無關(guān),以使能用于傳統(tǒng)上不調(diào)用特權(quán)捕捉的某些x86體系結(jié)構(gòu)指令和事件的捕捉支持。否則,VMX非根94運(yùn)行為傳統(tǒng)x86特權(quán)模型。這允許虛擬機(jī)監(jiān)視器781-N在VMX根92的環(huán)-0特權(quán)級別下執(zhí)行,并具有對平臺資源的完全控制,而虛擬機(jī)721-N的應(yīng)用執(zhí)行空間761-N內(nèi)的客戶操作系統(tǒng)741-N和應(yīng)用程序在VMX非根94內(nèi)他們期望的特權(quán)級別下執(zhí)行。圖6是圖示出根據(jù)本發(fā)明優(yōu)選實(shí)施例用于基于硬件的虛擬化系統(tǒng)的虛擬機(jī)退出(VM退出)與虛擬機(jī)進(jìn)入(VM進(jìn)入)轉(zhuǎn)移通路的框圖110。參考圖6,VMX根92特權(quán)級別的功能是以其他方式捕捉特權(quán)依賴x86指令。通過在VMX非根94的環(huán)-0級別處執(zhí)行客戶操作系統(tǒng)741-N,許多特權(quán)依賴問題被避免。然后,通過向在VMX根92環(huán)-0特權(quán)級別中執(zhí)行的虛擬機(jī)監(jiān)視器781-N的硬件發(fā)起的轉(zhuǎn)移,其余的特權(quán)依賴行為被處理。具體而言,VT提供了特權(quán)捕捉,其在發(fā)生特權(quán)寄存器寫、受保護(hù)存儲器訪問以及系統(tǒng)中斷事件時,強(qiáng)制執(zhí)行虛擬機(jī)退出轉(zhuǎn)移。從而,從虛擬機(jī)內(nèi)的客戶操作系統(tǒng)741-N之一的名義VM執(zhí)行狀態(tài)112,硬件實(shí)現(xiàn)的VM退出轉(zhuǎn)移程序規(guī)定將CPU12狀態(tài)保存到虛擬機(jī)控制結(jié)構(gòu)(VMCS)114。CPU12的受保存狀態(tài)中包括引起調(diào)用VM退出轉(zhuǎn)移的其他事件或指令的指示符。CPU12的受保存狀態(tài)中還包括其他虛擬機(jī)狀態(tài)信息,例如虛擬機(jī)721-N之一使用的分段寄存器的描述符高速緩存的內(nèi)容。如本領(lǐng)域普通技術(shù)人員很容易想到的那樣,這有效使能了虛擬機(jī)監(jiān)視器781-N中的相應(yīng)一個檢查在VM退出轉(zhuǎn)移發(fā)生的時點(diǎn)上的客戶操作系統(tǒng)741-N中的相應(yīng)一個的執(zhí)行上下文。當(dāng)虛擬才幾721-N中的一個正在執(zhí)行的時候,虛擬才幾控制結(jié)構(gòu)114還祐:用來存儲虛擬機(jī)監(jiān)視器781-N中的相應(yīng)一個的操作狀態(tài)。然后,虛擬機(jī)監(jiān)#見器781-N中的相應(yīng)一個的狀態(tài)#_復(fù)原到CPU12,以完成VM退出轉(zhuǎn)移程序并允許虛擬才幾監(jiān)纟見器781-N開始執(zhí)行(在116處啟動)?;謴?fù)的執(zhí)行使得虛擬機(jī)監(jiān)視器781-N中的一個能夠檢查并酌情管理引起VM退出轉(zhuǎn)移的條件。對于VM退出轉(zhuǎn)移的最常見根源,所需的虛擬機(jī)監(jiān)視器動作是管理對客戶操作系統(tǒng)741-N中的相應(yīng)一個可用的存儲器空間分配,以在最初處理并在功能上將中斷在不同虛擬4幾721-N之間^^由,并且通過定義的I/O端口26和映射I/O地址28管理編程數(shù)據(jù)傳送。一旦虛擬機(jī)監(jiān)視器781-N完成了VM退出轉(zhuǎn)移之后所需的監(jiān)管任務(wù),虛擬機(jī)監(jiān)視器781-N就調(diào)用VM進(jìn)入轉(zhuǎn)移程序。VM進(jìn)入轉(zhuǎn)移程序是通過將當(dāng)前虛擬機(jī)監(jiān)視器781-N狀態(tài)存儲到虛擬機(jī)控制結(jié)構(gòu)114并將虛擬機(jī)控制結(jié)構(gòu)114中存在的虛擬機(jī)狀態(tài)復(fù)原到CPU12而實(shí)現(xiàn)的。相應(yīng)客戶操作系統(tǒng)741-N的4丸行隨后^皮恢復(fù)。發(fā)明人認(rèn)識到,用于虛擬化完整計(jì)算系統(tǒng)的不同虛擬化技術(shù)呈現(xiàn)不同的依賴于工作負(fù)荷的性能特性,其反應(yīng)在支持客戶操作系統(tǒng)(例如,圖3中示出的客戶操作系統(tǒng)741-N)的執(zhí)行時的不同效率。此外,不同虛擬化技術(shù)的總體性能成本還將依賴于虛擬機(jī)監(jiān)視器(例如,圖3中示出的虛擬機(jī)監(jiān)視器781-N)被訪問以支持客戶操作系統(tǒng)741-N的虛擬化的頻率。即,部分依賴于虛擬才幾(例如,圖3中示出的虛擬才幾721-N)中呈現(xiàn)的客戶才喿作系統(tǒng)的類型,并且部分依賴于呈現(xiàn)給虛擬機(jī)721-N的用戶請求的級別和性質(zhì)以及執(zhí)行的具體應(yīng)用,通過適當(dāng)選擇由虛擬機(jī)監(jiān)視器781-N實(shí)現(xiàn)的虛擬化技術(shù),可以實(shí)現(xiàn)性能的質(zhì)的改進(jìn)。圖7A和7B示出了幫助圖示出指令流內(nèi)特權(quán)依賴指令序列的VT處理和二進(jìn)制翻譯之間差異的示圖120。如圖7A所一般指示的,對于程序指令流122的給定部分,包含特權(quán)依賴指令的序列126的二進(jìn)制翻譯124引起來自多個來源的明顯開銷。傳統(tǒng)開銷包括二進(jìn)制翻譯過程124自身(即,典型地執(zhí)行功能上仿真特權(quán)依賴指令所需的額外處理器指令),以及監(jiān)視或以其他方式管理執(zhí)行用翻譯后代碼的選擇的持續(xù)成本。如圖7B中對比性指示的相同程序指令流122,基于VT的虛擬化帶來不同的傳統(tǒng)開銷。在執(zhí)行特權(quán)依賴指令時,所需的VT處理128帶來相對顯著的實(shí)現(xiàn)VM退出和隨后VM進(jìn)入轉(zhuǎn)移的開銷,以及發(fā)生于其間的標(biāo)識和功能上執(zhí)行特權(quán)依賴指令所需的仿真例程和異常處理機(jī)的執(zhí)行。盡管翻譯后序列126的初始二進(jìn)制翻譯124的性能成本顯著,但是在頻繁執(zhí)行序列126的環(huán)境中,時間平均的性能成本會相對較小。相反,如果指令流122在虛擬機(jī)(例如,虛擬機(jī)721-N之一)的持續(xù)執(zhí)行中很少被執(zhí)行,那么VT虛擬化會是優(yōu)選的??梢允褂眯阅艹杀痉治鰜肀容^特權(quán)依賴指令的每次執(zhí)行中的VM退出與VM進(jìn)入轉(zhuǎn)移的開銷成本和初始二進(jìn)制翻i奪124的成本以及管理翻譯后序列126的存儲器鏡像的相關(guān)成本。如發(fā)明人所進(jìn)一步認(rèn)識到的,(a)在不同虛擬機(jī)721-N之間;(b)取決于基于時間的加載因素;以及(c)取決于具體特權(quán)依賴指令所面臨的特定性質(zhì)和上下文,對最優(yōu)虛擬化技術(shù)的正確選擇將變化。根據(jù)本發(fā)明的第一優(yōu)選實(shí)施例,在發(fā)生明確定義的事件時,或者結(jié)合如果事件頻率超過時基閾值則事件實(shí)例可以被有選才奪地略過的情形,性能成本因素可以以時基間隔被累積并被分析。當(dāng)執(zhí)行分析時,由虛擬機(jī)監(jiān)視器(例如,虛擬機(jī)監(jiān)視器781-N之一)為其對應(yīng)的虛擬機(jī)(例如虛擬機(jī)721-N中的對應(yīng)一個)選擇并實(shí)現(xiàn)很可能是最優(yōu)的虛擬化技術(shù)。根據(jù)本發(fā)明的第二優(yōu)選實(shí)施例,額外的性能成本因素被收集,以標(biāo)識出執(zhí)行客戶操作系統(tǒng)(例如,客戶操作系統(tǒng)741-N之一)時面臨的時間本地、引起開銷的操作的可預(yù)知代碼執(zhí)行通路的存在。如發(fā)明人進(jìn)一步認(rèn)識到的,包含特權(quán)依賴指令的某些模式的指令序列是機(jī)器可識別的并且是可預(yù)知的。時間本地指的是特權(quán)依賴指令序列,盡管不必是連續(xù)的,但是相對于涉及的虛擬化開銷,以有序的模式彼此非常接近地發(fā)生。即,包含非重疊子模式的模式,如果單獨(dú)考量,可以在不同加載條件下在性能方面使用不同的虛擬化技術(shù)來最優(yōu)處理,子模式優(yōu)選地被認(rèn)為是時間上分離的。時間本地性因此部分依賴于涉及的特定模式。與第一優(yōu)選實(shí)施例類似,當(dāng)模式被可預(yù)知地識別時,由虛擬機(jī)監(jiān)視器(例如,虛擬機(jī)監(jiān)視器781-N之一)為其對應(yīng)的虛擬機(jī)(例如虛擬機(jī)721-N中的對應(yīng)一個)選擇并實(shí)現(xiàn)為該模式確定的成本最優(yōu)虛擬化纟支術(shù)。圖8是根據(jù)本發(fā)明一個或多個優(yōu)選實(shí)施例實(shí)現(xiàn)多個虛擬化技術(shù)(特別地,是在二進(jìn)制翻譯技術(shù)和VT技術(shù)之間)的動態(tài)選擇和應(yīng)用的虛擬機(jī)監(jiān)視器78的主要功能組件(即,主要體系結(jié)構(gòu))的框圖。如圖8所示,虛擬機(jī)監(jiān)視器78優(yōu)選地包括二進(jìn)制翻譯組件124和VT處理組件128兩者。二進(jìn)制翻譯組件124優(yōu)選地被實(shí)現(xiàn)支持動態(tài)評估以及向翻譯高速緩存的指令流的選擇性二進(jìn)制翻譯以作后用。這樣的二進(jìn)制翻譯組件在Bugnion的名為"DynamicBinaryTranslatorwithaSystemandMethodforUpdatingand20MaintainingCoherencyofaTranslationCache"的美國專利號6,704,925中進(jìn)行了描述,該專利已轉(zhuǎn)讓給本申請的受讓人,該專利在這里通過引用結(jié)合于此。二進(jìn)制翻譯組件124包括地址/指令流處理器132,地址/指令流處理器132在由CPU12執(zhí)行稍前的時候接收指令流。二進(jìn)制翻譯單元1344全查指令流的增量部分,以解碼并標(biāo)識出特權(quán)依賴指令的發(fā)生。在發(fā)現(xiàn)的情況下,本地指令流被進(jìn)一步分析,并且在功能上被修改,以以去特權(quán)執(zhí)行的方式實(shí)現(xiàn)預(yù)期的指令。優(yōu)選地,該修改是通過重寫指令流以在不涉及特權(quán)異常的條件下實(shí)現(xiàn)預(yù)期功能而實(shí)現(xiàn)的。指令流重寫可以包括直接替換直接執(zhí)行想要功能的替代性指令序列、插入適合的跳轉(zhuǎn)指令以調(diào)用一個或多個預(yù)建立的庫調(diào)出例程136以完成想要的功能、或者兩種翻譯技術(shù)的結(jié)合。最終翻譯后的指令流,進(jìn)一步結(jié)合適當(dāng)?shù)南鄬Ψ种繕?biāo)修改,隨后被存儲在翻譯高速緩存138中。原始指令流未被修改??蛻舨僮飨到y(tǒng)(例如,客戶操作系統(tǒng)741-N之一)的執(zhí)行被監(jiān)視,效果是無論何時未經(jīng)修改的原始指令流以其他方式被獲取用于執(zhí)行的時候,作為替代,翻譯后的指令流被獲取并被執(zhí)行。VT處理組件128優(yōu)選地包4舌VM退出處理才幾140、VM進(jìn)入處理才幾142以及監(jiān)管虛擬化處理器144。VM退出處理機(jī)140和VM進(jìn)入處理機(jī)142的功能和操作記載在例如英特爾公司2006年2月用于應(yīng)用I/O體系結(jié)構(gòu)的Intd⑧虛擬化技術(shù)規(guī)范中(序號D51397-001)、英特爾公司2005年4月用于IA-32Intel⑧體系結(jié)構(gòu)的Intel⑧虛擬化技術(shù)規(guī)范中(序號C97063-002)、以及英特爾公司2005年4月用于IntelItanium⑧體系結(jié)構(gòu)的Intel⑧虛擬化技術(shù)規(guī)范(VT-I)中(序號305942-002)。簡言之,VM退出處理機(jī)140和VM進(jìn)入處理4幾142負(fù)責(zé)管理虛擬才幾控制結(jié)構(gòu)114(參見圖6),并且負(fù)責(zé)讀取退出并且酌情對虛擬機(jī)(例如,虛擬機(jī)721-N之一)的進(jìn)入上下文進(jìn)行編程,以支持所面臨的特定特權(quán)依賴指令的仿真。監(jiān)管虛擬化處理器144用來標(biāo)識出觸發(fā)VM退出的特權(quán)依賴指令以及啟動指令的執(zhí)行的客戶操作系統(tǒng)(例如,客戶操作系統(tǒng)741-N之一)上下文的相關(guān)細(xì)節(jié)。在本發(fā)明的優(yōu)選實(shí)施例中,監(jiān)管虛擬化處理器144優(yōu)選地以類似于二進(jìn)制翻譯單元134的方式實(shí)現(xiàn)該分析。即,一旦指令和上下文被標(biāo)識出,監(jiān)管虛擬化處理器144優(yōu)選地確定并酌情調(diào)用與庫調(diào)出例程136類似(如果不是相同的話)的庫例程,以在功能上實(shí)現(xiàn)特權(quán)依賴指令。圖8中示出的性能監(jiān)視器146優(yōu)選地代表虛擬機(jī)監(jiān)視器(例如,虛擬機(jī)監(jiān)視器781-N之一)的以下設(shè)備,其收集、加總并概括虛擬機(jī)監(jiān)視器在向其關(guān)聯(lián)的虛擬機(jī)提供虛擬化支持時的持續(xù)性能。盡管該設(shè)備的細(xì)節(jié)基于虛擬機(jī)監(jiān)視器的具體實(shí)現(xiàn)而將不同,但是相對于本發(fā)明的第一優(yōu)選實(shí)施例,該設(shè)備優(yōu)選地用做在一定時間間隔測量例如在獲取程序流指令用于翻譯時引起的時間和資源成本、執(zhí)行翻譯所使用的時間和翻譯高速緩存的大小和相對使用、以及在執(zhí)行翻譯后的指令流時所需的執(zhí)行時間的相對增加。該設(shè)備優(yōu)選地還考量執(zhí)行VM退出和進(jìn)入轉(zhuǎn)移的時間成本(其可以是預(yù)先計(jì)算的或是直接測量的)、以及監(jiān)管虛擬化處理器144檢查并仿真?zhèn)€體特權(quán)依賴指令所需的時間和資源。對于本發(fā)明的第二優(yōu)選實(shí)施例,如下文將更加詳細(xì)地描述的那樣,面臨的不同特權(quán)依賴指令的頻率、相對位置以及身份也被收集。對于所有實(shí)施例,指令流的任何部分被重復(fù)面臨的頻率也被性能監(jiān)視器146識別和記錄。虛擬化技術(shù)控制組件148與性能監(jiān)視器146交互操作,以標(biāo)識出用于關(guān)聯(lián)虛擬機(jī)的特定操作環(huán)境的最優(yōu)虛擬化技術(shù),并且在需要的情況下,相應(yīng)地改變虛擬機(jī)實(shí)現(xiàn)的特權(quán)模型。對于本發(fā)明的第一優(yōu)選實(shí)施例,最優(yōu)虛擬化技術(shù)的選擇以一定時間間隔被重新考量,時間間隔可以由時間、事件的發(fā)生定義,或者可以是無論何時已經(jīng)收集到設(shè)備數(shù)據(jù)的定量測量。在確認(rèn)通過切換將要實(shí)現(xiàn)的預(yù)期性能收益將超過定義的閾值時,就實(shí)現(xiàn)虛擬化技術(shù)之間的切換。該閾值可以憑經(jīng)驗(yàn)確定以最大化總體性能收益,并且可以受虛擬化技術(shù)控制組件148調(diào)節(jié)。對于本發(fā)明的第一優(yōu)選實(shí)施例,最優(yōu)虛擬化技術(shù)的實(shí)際計(jì)算優(yōu)選地由以下開銷的相對差值確定(a)設(shè)備確定的由當(dāng)前采用的虛擬化4支術(shù)引起的實(shí)際性能開銷;以及(b)其他虛擬化技術(shù)在相同時間間隔內(nèi)執(zhí)行相同指令流時將引起的估計(jì)性能開銷。該計(jì)算優(yōu)選地還包括在當(dāng)前和估計(jì)的虛擬化技術(shù)之間切換的估計(jì)性能成本。如果確定存在性能的凈改善,優(yōu)選地超過憑經(jīng)驗(yàn)確定的閾值,那么虛擬化技術(shù)控制148將虛擬機(jī)監(jiān)視器實(shí)現(xiàn)的虛擬化技術(shù)切換到被確定具有最高凈性能改善的虛擬化技術(shù)。優(yōu)選地,虛擬機(jī)監(jiān)視器78的設(shè)備還監(jiān)視所選虛擬化技術(shù)的改變率,以控制由于過度或過快切換虛22擬化技術(shù)造成的總體性能損失。對于本發(fā)明的第二優(yōu)選實(shí)施例,虛擬化技術(shù)控制組件148基于當(dāng)前熱執(zhí)行通路的標(biāo)識選擇最優(yōu)虛擬化技術(shù)。圖9是詳述根據(jù)本發(fā)明一個或多個實(shí)施例的性能監(jiān)視器146的操作的框圖。如圖9的示意性表達(dá)150所示,性能監(jiān)視器146包括性能數(shù)據(jù)存儲裝置152,性能數(shù)據(jù)存儲裝置152連續(xù)接收并存儲從虛擬機(jī)監(jiān)視器(例如,虛擬機(jī)監(jiān)視器781-N之一)收集的設(shè)備數(shù)據(jù)。至少對于本發(fā)明的第二優(yōu)選實(shí)施例,性能監(jiān)視器146還包括模式分析引擎154和模式數(shù)據(jù)存儲裝置156,這些組件被性能監(jiān)視器146用來利用時間本地化模式識別當(dāng)前熱執(zhí)行通路的開始。優(yōu)選地,多個公知的或預(yù)期的模式被預(yù)先存儲在模式數(shù)據(jù)存儲裝置156中。通過性能監(jiān)視器146和模式分析引擎154的持續(xù)操作,主要基于發(fā)生的相對計(jì)時和相對位置,額外的熱執(zhí)行通路模式被動態(tài)識別并且被存儲到模式數(shù)據(jù)存儲裝置156。即,模式分析引擎154優(yōu)選地用來識別由具體標(biāo)識的指令引起的重復(fù)虛擬化操作發(fā)生,其中由具體標(biāo)識的指令基于可從虛擬機(jī)上下文確定的所捕捉指令地址是時間本地的,并且以一致的順序被重復(fù)面臨。虛擬化技術(shù)控制組件148還與第二優(yōu)選實(shí)施例的性能監(jiān)視器146交互操作以評估替代性虛擬化技術(shù)。通過加總將通過熱執(zhí)行通路執(zhí)行的虛擬化操作的性能開銷,并選擇具有最低依賴于通路的總開銷的虛擬化技術(shù),來確定用于特定熱執(zhí)行通路的優(yōu)選虛擬化技術(shù)。對于公知的熱執(zhí)行通路,性能計(jì)算可以甚至在虛擬機(jī)(例如,虛擬機(jī)721-N之一)的執(zhí)行之前被執(zhí)行并被存儲到模式數(shù)據(jù)存儲裝置156。對于新發(fā)現(xiàn)的模式以及公知模式的變體,優(yōu)選地一旦模式分析引擎154標(biāo)識出該模式就執(zhí)行計(jì)算。模式和優(yōu)選虛擬化技術(shù)隨后優(yōu)選地被存儲到模式數(shù)據(jù)存儲裝置156,用于后續(xù)參考。熱執(zhí)行通路的虛擬化技術(shù)選擇優(yōu)選地被動態(tài)重估并酌情改變。多種條件件包括高速緩存命中率和TLB的改變、以及虛擬機(jī)監(jiān)視器相對于其對應(yīng)客戶操作系統(tǒng)實(shí)現(xiàn)的設(shè)備的改變。在重估熱執(zhí)行通路時,例如使用隨機(jī)取樣技術(shù)進(jìn)行選擇,測量的開銷成本可以與存儲在模式數(shù)據(jù)存儲裝置156中的現(xiàn)有本而改變。圖IOA、IOB和10C示出的示意性表達(dá)160圖示出根據(jù)本發(fā)明優(yōu)選實(shí)施例將多個虛擬化技術(shù)(特別地,二進(jìn)制翻譯和VT虛擬化技術(shù))應(yīng)用于指令流內(nèi)的其他特權(quán)依賴指令序列。出于本示例的目的,VT虛擬化優(yōu)選^皮"i殳為缺省且最初的當(dāng)前虛擬化技術(shù)。如圖IOA所示,指令流162的一部分被示出,其中一組虛擬化才喿作(A、B、C、D、E、F)發(fā)生,每組代表特權(quán)依賴指令的位置。如圖IOA所示,虛擬化操作的每次發(fā)生由VT處理組件128離散地處理。因此,如果在執(zhí)行對應(yīng)客戶操作系統(tǒng)(例如,客戶操作系統(tǒng)741-N之一)時頻繁面臨指令流162,那么頻繁的VM退出和VM進(jìn)入轉(zhuǎn)移帶來相當(dāng)大的性能成本。參考圖10B并考慮本發(fā)明的第二優(yōu)選實(shí)施例,足夠的性能數(shù)據(jù)被收集以支持以虛擬化操作(B)開始的模式的識別。(A)處的虛擬化操作可能不會被識別為模式的一部分,因?yàn)樵撎摂M化操作在時間上離后面的虛擬化操作太遠(yuǎn),或者可能不一定會發(fā)生,從而不能用來預(yù)測模式。因此,(A)處的虛擬化操作優(yōu)選地與之前一樣由VT處理組件128離散地處理。如圖10B所示,(B)處的虛擬化#:作最初由VT處理組件128捕才足。然而,響應(yīng)于虛擬化操作(B)VM退出轉(zhuǎn)移的進(jìn)入(參考圖6)之后的虛擬機(jī)監(jiān)視器(例如,虛擬機(jī)監(jiān)視器781-N之一)內(nèi)的性能監(jiān)視器146和虛擬化技術(shù)控制148(參見圖9)的執(zhí)行造成選擇二進(jìn)制翻譯虛擬化技術(shù),用于進(jìn)一步處理指令流162,優(yōu)選包括(B)處的虛擬化操作。為此,特權(quán)模型被切換,并且二進(jìn)制翻譯組件124被調(diào)用來處理指令流162,以在功能上翻譯(B,)虛擬化操作(B、C、D、E、F)。如圖10C所示,在隨后執(zhí)行指令流162時,指令流162的二進(jìn)制翻譯(B,)名義上可用于從翻譯高速緩存138(參見圖8)立即執(zhí)行。由虛擬化操作(B)啟動的模式的識別優(yōu)選地造成立即向二進(jìn)制翻譯的虛擬化切換、以及指令流162的翻譯后部分(B,)的執(zhí)行。從而,利用(B)處的虛擬化操作開始的模式的二進(jìn)制翻譯的預(yù)先計(jì)算的偏好,僅僅引起切換虛擬化技術(shù)的最小性能成本,以最大化指令流162的給定部分的潛在執(zhí)行性能。再次參考圖10B,在確定何時以及如何從所選的二進(jìn)制翻譯虛擬化技術(shù)返回到缺省VT虛擬化技術(shù)時涉及若干不同考量。在識別(B)處開始的熱執(zhí)行通路模式時,模式分析引擎154(參考圖9)還可以識別出結(jié)束(F)處的虛擬化操作的明確模式。因此,二進(jìn)制翻譯后片段(B,)的末端部分可以簡單地加入切換到缺省VT虛擬化技術(shù)所需的指令。或者,作為生成二進(jìn)制翻譯后代碼的一部分,二進(jìn)制翻譯單元134(參見圖8)將確保適當(dāng)?shù)膸煺{(diào)用例程136(參見圖8)被從所生成的代碼調(diào)用,以引起性能監(jiān)視器146和虛擬化技術(shù)控制組件148(參見圖9)的適當(dāng)頻率的執(zhí)行。當(dāng)沒有明顯的其他時間本地的虛擬化操作時,虛擬化技術(shù)控制組件148優(yōu)選將啟動回到缺省VT虛擬化技術(shù)的切換。另一替代方案,或此外,當(dāng)二進(jìn)制翻譯器組件124識別出來自中斷(IRET)指令的返回的即將執(zhí)行時,虛擬化技術(shù)控制組件148將啟動向VT虛擬化技術(shù)的切換,并且通過執(zhí)行VM進(jìn)入轉(zhuǎn)移使能該返回。圖11是圖示出執(zhí)行動態(tài)的塊導(dǎo)向的多虛擬化技術(shù)選擇與應(yīng)用的本發(fā)明第一優(yōu)選實(shí)施例的流程圖170。對于此實(shí)施例,對于任何向虛擬機(jī)監(jiān)視器(例如,虛擬機(jī)監(jiān)視器781-N之一)的進(jìn)入,在判決步驟172,性能監(jiān)視器146首先將確定是否重新考量當(dāng)前虛擬化技術(shù)的使用。評估重新考量的當(dāng)選標(biāo)準(zhǔn)可以筒單地看自從執(zhí)行上次評估之后是否已經(jīng)過足夠的時間間隔。另一種可能的標(biāo)準(zhǔn)是自上次評估起收集的性能數(shù)據(jù)的量是否足夠保證進(jìn)行重新考量。其他標(biāo)準(zhǔn)可以包括相對于虛擬機(jī)執(zhí)行客戶操作系統(tǒng)和客戶應(yīng)用程序(例如,客戶4喿作系統(tǒng)741-N之一及其對應(yīng)的客戶應(yīng)用程序)花費(fèi)的時間所請求的重新考量的頻率。如果重新考量的標(biāo)準(zhǔn)未被滿足,那么按需在步驟174繼續(xù)虛擬機(jī)監(jiān)視器的執(zhí)行,以支持任何未完成的虛擬操作。一旦完成仿真,就退出虛擬機(jī)監(jiān)視器的執(zhí)行。如果重新考量的標(biāo)準(zhǔn)被滿足,那么控制被傳送到步驟176,在步驟176,性能監(jiān)視器146和虛擬化技術(shù)控制組件148交互操作以分析性能數(shù)據(jù)176,并且在步驟178,確定最優(yōu)或優(yōu)選的虛擬化技術(shù)。在步驟180,虛擬化技術(shù)控制組件148隨后通過按需調(diào)節(jié)特權(quán)模型并使能虛擬機(jī)監(jiān)視器內(nèi)的適當(dāng)虛擬化操作控制,來實(shí)現(xiàn)所選的虛擬化技術(shù)??刂票粋魉偷讲襟E174,在步驟功能要求。在完成仿真之后,就退出虛擬機(jī)監(jiān)視器的執(zhí)行。圖12是圖示出執(zhí)行動態(tài)的熱通路導(dǎo)向的多虛擬化技術(shù)選擇與應(yīng)用的本發(fā)明第二優(yōu)選實(shí)施例的流程圖190。對于此實(shí)施例,對于向虛擬機(jī)監(jiān)視器(例如,虛擬機(jī)監(jiān)視器781-N之一)的每次進(jìn)入,在步驟192,相對于預(yù)期要執(zhí)行的程序流,考量切換虛擬化技術(shù)的潛在可能??蛻舨僮飨到y(tǒng)的虛擬機(jī)上下文數(shù)據(jù)被從虛擬機(jī)控制結(jié)構(gòu)獲取,并且控制被傳送到判決步驟194。在判決步驟194,虛擬機(jī)控制結(jié)構(gòu)中提供的信息被檢查。具體而言,地址位置和指令被模式分析引擎154標(biāo)識并使用,以確定捕捉啟動的指令是否代表識別出的熱執(zhí)行通路的開始。如果未被識別出并且虛擬地址位置不在時間上靠近任何在前記錄的性能數(shù)據(jù),那么控制被傳送到步驟196,在步驟196,虛擬機(jī)監(jiān)視器執(zhí)行被捕捉指令的適當(dāng)仿真,其與當(dāng)前有效的虛擬化技術(shù)一致。在判決步驟194,如果模式分析引擎154識別出熱執(zhí)行通路,那么控制被傳送到步驟198。在步驟198,對應(yīng)的優(yōu)選虛擬化技術(shù)被應(yīng)用,并且控制被傳送到步驟196,在步驟196,被捕捉指令的仿真被執(zhí)行。根據(jù)本發(fā)明的一個或多個這樣的實(shí)施例,在步驟196處虛擬機(jī)監(jiān)視器的仿真操作中面臨每個特權(quán)依賴指令的時候,通過遞歸檢查熱執(zhí)行通路的識別,監(jiān)視子通路或嵌套的熱執(zhí)行通路的潛在可能。出于本發(fā)明一個或多個實(shí)施例的目的,子通路被另外定義為嵌套在連續(xù)熱執(zhí)行通路中的熱執(zhí)行通路,其中嵌套的通路優(yōu)選地使用與最接近外層的熱執(zhí)行通路不同的虛擬化技術(shù)而被執(zhí)行。虛擬化棧優(yōu)選被維護(hù)以跟蹤嵌套的熱執(zhí)行通路和外層熱執(zhí)行通路的疊棧式序列之間的轉(zhuǎn)移。即,在步驟198,在子通路被面臨并且隨后到達(dá)定義末端的時候,外層熱執(zhí)行通路虛擬化技術(shù)標(biāo)識符被從虛擬化棧推出,以管理當(dāng)前實(shí)現(xiàn)的虛擬化技術(shù)的選擇。最后,在判決步驟194,如果熱執(zhí)行通路未被識別,但是基于現(xiàn)有的性能和模式數(shù)據(jù),這樣的通路可能會存在的時候,控制被傳送到判決步驟200,在判決步驟200,當(dāng)前性能數(shù)據(jù)集被分析。如果熱執(zhí)行通路模式未被標(biāo)識出,那么控制被傳送到步驟196,在步驟196,使用現(xiàn)有的虛擬化技術(shù)執(zhí)行對被捕捉指令的仿真。如果新模式被動態(tài)標(biāo)識出,那么控制被傳送到步驟202,在步驟202,計(jì)算最優(yōu)虛擬化技術(shù),并且模式和所確定的最優(yōu)虛擬化技術(shù)均作為模式數(shù)據(jù)被存儲到模式數(shù)據(jù)存儲裝置156(參見圖9)中,并且控制被傳送到步驟198。在步驟198,應(yīng)用新標(biāo)識出的虛擬化4支術(shù),并且控制:R傳送到步驟196。在步驟196,執(zhí)行被捕捉指令的仿真。一旦完成仿真,包括任何子通路,則退出虛擬機(jī)監(jiān)視器的執(zhí)行。圖13是圖示出根據(jù)本發(fā)明實(shí)現(xiàn)多個虛擬化技術(shù)之間動態(tài)轉(zhuǎn)移的方法的26優(yōu)選實(shí)施例的流程圖209。對于每個這樣的優(yōu)選實(shí)施例,二進(jìn)制翻譯和VT虛擬化技術(shù)在虛擬機(jī)監(jiān)視器(例如,虛擬機(jī)監(jiān)視器781-N之一)中被實(shí)現(xiàn)。在步驟198(還可參考圖12),在確定將有效虛擬化技術(shù)切換到目標(biāo)虛擬化技術(shù)時,如果二進(jìn)制翻譯被選擇,那么控制被傳送到步驟210,否則,如果VT虛擬化技術(shù)被選擇,那么控制被傳送到步驟212。對于二進(jìn)制翻譯,在步驟214,VT處理組件128被禁用而二進(jìn)制翻譯組件124#皮<吏能(參見圖8)。在步驟216,處理器狀態(tài)寄存器的VMX特權(quán)位被重置,并且與虛擬機(jī)監(jiān)視器(例如,虛擬機(jī)監(jiān)視器781-N之一)及其對應(yīng)客戶操作系統(tǒng)(例如,客戶操作系統(tǒng)741-N之一)相關(guān)聯(lián)的分段寄存器中維護(hù)的特權(quán)位被修改以建立標(biāo)準(zhǔn)二進(jìn)制翻譯環(huán)-O、1、3特扭j莫型80(參見圖4A),用于對應(yīng)虛擬才幾(例如,虛擬機(jī)721-N之一)的執(zhí)行。如果VT虛擬化將要被啟動,則在步驟218,二進(jìn)制翻譯組件124的操作被掛起。具體而言,翻譯高速緩存138和陰影頁表106的內(nèi)容被維護(hù)。隨后,VT處理組件128的操作被使能。在步驟220,處理器狀態(tài)寄存器的VMX特權(quán)位被設(shè)置,并且與虛擬機(jī)監(jiān)視器及其對應(yīng)客戶操作系統(tǒng)相關(guān)聯(lián)的分段寄存器中維護(hù)的特權(quán)位被修改以建立標(biāo)準(zhǔn)VMX非根環(huán)-O、3特權(quán)模型90(參見圖4A),用于對應(yīng)虛擬4幾的執(zhí)4亍。在虛擬化4支術(shù)之間切換時,可以通過復(fù)查相應(yīng)客戶^l喿作系統(tǒng)741-N的存儲器內(nèi)數(shù)據(jù)結(jié)構(gòu)和多種CPU上寄存器,確定所選虛擬化技術(shù)的當(dāng)前虛擬機(jī)狀態(tài)。優(yōu)選地,虛擬化技術(shù)控制組件148提供不同虛擬化技術(shù)所使用的虛擬機(jī)狀態(tài)表達(dá)之間的轉(zhuǎn)換。具體而言,虛擬化技術(shù)控制組件148提供二進(jìn)制翻譯虛擬化最優(yōu)使用的多種存儲器內(nèi)數(shù)據(jù)結(jié)構(gòu)和支持VT虛擬化所需的硬件依賴數(shù)據(jù)結(jié)構(gòu)之間的轉(zhuǎn)換。優(yōu)選地,一般和分段寄存器、中斷狀態(tài)、分段寄存器的陰影部分、控制寄存器以及CPU狀態(tài)其他方面的虛擬化狀態(tài)描述被傳送。對于本發(fā)明的優(yōu)選實(shí)施例,虛擬機(jī)狀態(tài)在二進(jìn)制翻譯虛擬化數(shù)據(jù)結(jié)構(gòu)中被維護(hù),并且受VT虛擬化數(shù)據(jù)結(jié)構(gòu)變化的影響按需更新。為此,已經(jīng)描述了提供動態(tài)優(yōu)化虛擬機(jī)的現(xiàn)實(shí)執(zhí)行性能的自治系統(tǒng)和方法。盡管本發(fā)明的實(shí)施例是具體參考基于Intel的虛擬化技術(shù)進(jìn)行描述的,虛擬機(jī)監(jiān)視器內(nèi)多種不同軟件和硬件虛擬化技術(shù)的使用及之間的選擇??紤]到本發(fā)明優(yōu)選實(shí)施例的以上說明,本領(lǐng)域普通技術(shù)人員將很容易想到公開實(shí)施例的多種修改和變化形式。因此,應(yīng)當(dāng)認(rèn)識到,在權(quán)利要求的范圍內(nèi),本發(fā)明可以與上文具體描述不同的方式實(shí)現(xiàn)。權(quán)利要求1.一種提供宿主計(jì)算機(jī)系統(tǒng)上的虛擬機(jī)內(nèi)的客戶操作系統(tǒng)的虛擬化執(zhí)行的自適應(yīng)虛擬化系統(tǒng),所述自適應(yīng)虛擬化系統(tǒng)包括a)宿主平臺,包括中央處理單元和存儲器,可操作用來執(zhí)行指令;b)可作為指令流由所述宿主平臺執(zhí)行的客戶操作系統(tǒng),所述指令流包括多個定義部分;以及c)可由所述宿主平臺執(zhí)行的虛擬機(jī)監(jiān)視器,包括第一和第二虛擬化支持處理器,每個虛擬化支持處理器可操作用來使能特權(quán)依賴指令的功能執(zhí)行;以及虛擬化控制單元,可操作用來在所述第一和第二虛擬化支持處理器的使用之間進(jìn)行選擇,所述虛擬化控制單元依賴于標(biāo)識出所述多個定義部分中的相應(yīng)定義部分內(nèi)的時間本地特權(quán)依賴指令的預(yù)定模式,在所述第一和第二虛擬化支持處理器之間進(jìn)行動態(tài)選擇。2.如權(quán)利要求1所述的自適應(yīng)虛擬化系統(tǒng),其中所述第一和第二虛擬化支持處理器實(shí)現(xiàn)相應(yīng)的虛擬化技術(shù)用于特權(quán)依賴指令的執(zhí)行。3.如權(quán)利要求2所述的自適應(yīng)虛擬化系統(tǒng),其中所述虛擬化控制單元包括模式存儲裝置,所述模式存儲裝置包含關(guān)于所述多個定義部分潛在可標(biāo)識的時間本地特權(quán)依賴指令的多個^t式。4.如權(quán)利要求3所述的自適應(yīng)虛擬化系統(tǒng),進(jìn)一步包括耦合到所述虛擬化控制單元和所述模式存儲裝置的性能監(jiān)視器,所述性能監(jiān)視器可操作用來累積反映在執(zhí)行所述客戶操作系統(tǒng)時的特權(quán)依賴指令的時間本地性的預(yù)定數(shù)據(jù),所述虛擬化控制單元進(jìn)一步可操作用來分析所述預(yù)定數(shù)據(jù),以識別出時間本地特權(quán)依賴指令的唯一模式并將所述唯一模式作為所述多個模式之一存儲在所述模式存儲裝置中。5.如權(quán)利要求4所述的自適應(yīng)虛擬化系統(tǒng),其中所述唯一模式被識別為在執(zhí)行所述指令流時以固定順序面臨的分布式多個特權(quán)依賴指令。6.—種支持分區(qū)虛擬化以管理宿主計(jì)算機(jī)系統(tǒng)平臺上的虛擬機(jī)中的客戶操作系統(tǒng)的執(zhí)行的計(jì)算機(jī)系統(tǒng),所述自適應(yīng)計(jì)算機(jī)系統(tǒng)包括a)封裝客戶操作系統(tǒng)的虛擬機(jī),其中所述客戶操作系統(tǒng)基于虛擬化的執(zhí)行需要特權(quán)依賴指令受管理的執(zhí)行;以及b)虛擬機(jī)監(jiān)視器,實(shí)現(xiàn)虛擬化控制單元以及第一和第二虛擬化子系統(tǒng),從而每個虛擬化子系統(tǒng)提供特權(quán)依賴指令的受管理執(zhí)行,所述虛擬化控制單元可操作用來識別特征為在指令流的對應(yīng)部分中相互時間本地的特權(quán)依賴指令的模式,所述虛擬化控制單元可操作用來依賴于所述指令流中所述模式的標(biāo)識,在所述第一和第二虛擬化子系統(tǒng)之間進(jìn)行動態(tài)選擇。7.如權(quán)利要求6所述的計(jì)算機(jī)系統(tǒng),進(jìn)一步包括提供特權(quán)依賴指令的多個預(yù)定模式的存儲的模式數(shù)據(jù)存儲裝置,所述虛擬化控制單元耦合到所述模式數(shù)據(jù)存儲裝置以支持所述模式與所述多個預(yù)定模式之間的比較。8.如權(quán)利要求7所述的計(jì)算機(jī)系統(tǒng),其中所述虛擬化控制單元可操作用來編輯反映所述指令流中特權(quán)依賴指令的時間本地性的預(yù)定數(shù)據(jù),所述虛擬化控制單元進(jìn)一步可操作用來識別特權(quán)依賴指令的額外模式,并將特權(quán)依賴指令的額外模式作為所述特權(quán)依賴指令的多個預(yù)定模式的一部分存儲到所述模式數(shù)據(jù)存儲裝置。9.如權(quán)利要求8所述的計(jì)算機(jī)系統(tǒng),其中所述第一虛擬化子系統(tǒng)實(shí)現(xiàn)二進(jìn)制翻譯虛擬化處理機(jī),并且所述第二虛擬化子系統(tǒng)實(shí)現(xiàn)用于基于硬件的虛擬化異常的捕捉處理機(jī)。10.—種優(yōu)化宿主計(jì)算機(jī)系統(tǒng)上的客戶操作系統(tǒng)的虛擬化執(zhí)行的方法,其中在執(zhí)行所述客戶操作系統(tǒng)時面臨的預(yù)定特權(quán)依賴指令的執(zhí)行通過使用由虛擬機(jī)監(jiān)視器實(shí)現(xiàn)的定義虛擬化技術(shù)而被處理,所述方法包括以下步驟a)由所述宿主計(jì)算機(jī)系統(tǒng)執(zhí)行實(shí)現(xiàn)客戶操作系統(tǒng)的指令流,所述指令流受所述虛擬機(jī)監(jiān)視器實(shí)現(xiàn)的第一虛擬化技術(shù)支配;b)標(biāo)識出在所述指令流的定義部分中分布的特權(quán)依賴指令的模式;c)相對于由所述虛擬機(jī)監(jiān)視器實(shí)現(xiàn)的第一和第二虛擬化技術(shù),選擇所述第一和第二虛擬化技術(shù)之一來實(shí)現(xiàn)由所述宿主計(jì)算機(jī)系統(tǒng)執(zhí)行所述指令流的所述定義部分。11.如權(quán)利要求IO所述的方法,其中所述第一虛擬化技術(shù)采用計(jì)算機(jī)系統(tǒng)分區(qū)虛擬化的基于硬件的支持,并且所述第二虛擬化技術(shù)采用基于二進(jìn)制翻譯的虛擬化。12.如權(quán)利要求IO所述的方法,其中所述特權(quán)依賴指令的模式由以一致的執(zhí)行順序發(fā)生且相互為時間本地的多個特權(quán)依賴指令所定義。13.如權(quán)利要求12所述的方法,進(jìn)一步包括以下步驟a)記錄反映在執(zhí)行所述指令流時面臨的特權(quán)依賴指令的預(yù)定數(shù)據(jù);b)分析所述預(yù)定數(shù)據(jù)以發(fā)現(xiàn)一組特權(quán)依賴指令模式;以及c)將所述的一組特權(quán)依賴指令模式作為特權(quán)依賴指令的多個沖莫式中的一部分存儲在模式存儲裝置中。14.如權(quán)利要求13所述的方法,其中所述標(biāo)識出所述模式的步驟包括相對于所述多個模式檢查所述定義部分,并且其中所述選擇所述第一和第二虛擬化技術(shù)之一的步驟取決于所述模式的身份。15.如權(quán)利要求14所述的方法,其中所述預(yù)定數(shù)據(jù)包括特權(quán)依賴指令的執(zhí)行順序和相對位置。16.—種在虛擬機(jī)監(jiān)視器的支持下,使能宿主計(jì)算機(jī)系統(tǒng)上的虛擬機(jī)內(nèi)可執(zhí)行的客戶操作系統(tǒng)的有效虛擬化的方法,所述方法包括以下步驟a)在代表客戶操作系統(tǒng)的執(zhí)行的指令流內(nèi),標(biāo)識出熱執(zhí)行通路,其中所述熱執(zhí)行通路包括所述指令流的定義部分中的多個時間本地特權(quán)依賴指令;以及b)二進(jìn)制翻譯所述熱執(zhí)行通路以加入所述定義部分的更改,以使能與所述客戶操作系統(tǒng)的虛擬化執(zhí)行一致的所述定義部分中的特權(quán)依賴指令的去特權(quán)執(zhí)行。17.如^又利要求16所述的方法,進(jìn)一步包括以下步驟a)執(zhí)行受用于處理在所述指令流中發(fā)生的特權(quán)依賴指令的執(zhí)行的第一虛擬化技術(shù)支配的所述指令流;b)識別所述指令流的所述定義部分的初始執(zhí)行;以及c)切換受與所述定義部分的二進(jìn)制翻譯一致的第二虛擬化技術(shù)支配的所述指令流的執(zhí)行。18.如權(quán)利要求17所述的方法,其中所述第一虛擬化技術(shù)采用用于計(jì)算機(jī)系統(tǒng)分區(qū)虛擬化的基于硬件的支持。19.如權(quán)利要求18所述的方法,其中所述執(zhí)行的步驟包括以下步驟a)收集代表所述指令流內(nèi)的特權(quán)依賴指令的位置和執(zhí)行順序的數(shù)據(jù);b)分析所述數(shù)據(jù)以標(biāo)識出多個熱執(zhí)行通路模式;以及c)在模式存儲裝置中存儲所述多個熱執(zhí)行通路模式,其中所述模式存儲裝置可在所述標(biāo)識步驟中訪問,以支持從所述多個熱執(zhí)行通路模式中標(biāo)識出所述熱執(zhí)行通路。20.如權(quán)利要求19所述的方法,進(jìn)一步包括在所述模式存儲裝置中存儲預(yù)定義熱執(zhí)行通路的步驟,用于支持從所述多個熱執(zhí)行通路模式中標(biāo)識出所述熱執(zhí)行通路。全文摘要虛擬化計(jì)算機(jī)系統(tǒng)的虛擬化層中實(shí)現(xiàn)的多虛擬化技術(shù)之間的自治選擇。虛擬機(jī)監(jiān)視器實(shí)現(xiàn)多虛擬化支持處理器,每個處理器提供可能虛擬化異常的全面處理。駐留在虛擬機(jī)監(jiān)視器中的虛擬化選擇控制可用來取決于標(biāo)識出在執(zhí)行客戶操作系統(tǒng)時面臨的指令流的一部分中的時間本地特權(quán)依賴指令的預(yù)定模式,在第一和第二虛擬化支持處理器的使用之間進(jìn)行選擇。文檔編號G06F9/455GK101681269SQ200880016189公開日2010年3月24日申請日期2008年5月16日優(yōu)先權(quán)日2007年5月16日發(fā)明者凱斯·M·亞當(dāng)斯,杰弗里·W·謝爾頓,維亞切斯拉夫·V·馬尤甘申請人:威睿公司