專利名稱::虛擬化虛擬機系統(tǒng)中的物理存儲器的制作方法
背景技術(shù):
:虛擬化能使具有用于虛擬化的硬件和軟件支持的單個主機呈現(xiàn)主機的多個抽象(abstraction),從而使主機的底層硬件似乎是一個或多個獨立運行的虛擬機。因此每個虛擬機可起到獨立完備的平臺的作用。經(jīng)常地,使用虛擬化技術(shù)來使多客戶操作系統(tǒng)和/或其它客戶軟件(guestsoftware)并存并且顯然同時地和顯然獨立地在多個虛擬機上執(zhí)行,而實際上是在相同硬件平臺上物理地執(zhí)行。虛擬機可模仿主機的硬件或交替地呈現(xiàn)完全不同的硬件抽象。虛擬化系統(tǒng)可包括控制主機的虛擬機監(jiān)控器(VMM)。VMM向在虛擬機上運行的客戶軟件提供一組資源(例如,處理器、存儲器、IO設(shè)備)。VMM可將物理主機的一些或所有部件映射到虛擬機,并且可創(chuàng)建全部的虛擬部件,虛擬部件在VMM中用軟件模擬,包含在虛擬機中(例如,虛擬IO設(shè)備)。因此可以說是VMM向客戶軟件提供了“虛擬裸機”接口。VMM使用硬件虛擬化體系結(jié)構(gòu)中的設(shè)備向虛擬機提供服務(wù)并且在主機上執(zhí)行的多個虛擬機之間提供保護。當(dāng)客戶軟件在虛擬機上執(zhí)行時,如果客戶軟件直接在硬件平臺上執(zhí)行,那么由客戶軟件執(zhí)行的某些指令(例如,訪問外圍設(shè)備的指令)通常會直接訪問硬件。在VMM支持的虛擬化系統(tǒng)中,這些指令會導(dǎo)致到VMM的轉(zhuǎn)換,在這里稱作虛擬機退出。VMM用適合主機硬件和主機外圍設(shè)備的方式來處理軟件中的這些指令,和執(zhí)行客戶軟件的虛擬機一致。類似地,在主機中產(chǎn)生的某些中斷和例外需由VMM來中斷和管理或在傳遞給客戶軟件提供服務(wù)之前通過VMM來適應(yīng)客戶軟件。然后,VMM將控制轉(zhuǎn)換到客戶軟件并且虛擬機重新開始運行。從VMM到客戶軟件的轉(zhuǎn)換在這里稱作虛擬機登錄(virtualmachineEntry)。公知地,在大多數(shù)操作系統(tǒng)上,在機器上執(zhí)行的程序可使用虛擬地址空間,虛擬地址空間是底層物理存儲器系統(tǒng)的抽象。本領(lǐng)域公知地,當(dāng)術(shù)語虛擬用在存儲器管理的上下文中例如“虛擬地址”、“虛擬地址空間”、“虛擬存儲器地址”或“虛擬存儲器空間”時,指的是基于處理器的系統(tǒng)的公知技術(shù),通常和操作系統(tǒng)結(jié)合,將底層物理存儲器的抽象呈現(xiàn)給在基于處理器的系統(tǒng)上執(zhí)行的過程(process)。例如,過程可訪問虛擬的、連續(xù)的和線性的地址空間抽象,由底層操作系統(tǒng)將地址空間抽象映射到非線性的和非連續(xù)的物理存儲器。虛擬的這種使用區(qū)別于同樣的術(shù)語在虛擬化的上下文中的使用,在后者情況下虛擬通常指的是模擬物理機器的抽象,例如“虛擬機”、“虛擬裸機”、“虛擬硬件”、“虛擬處理器”或“虛擬網(wǎng)絡(luò)接口”。基于這里使用術(shù)語的上下文,該術(shù)語的預(yù)期含義對本領(lǐng)域技術(shù)人員是明確的。圖1顯示在基于處理器的系統(tǒng)上執(zhí)行的過程,該系統(tǒng)包括處理器和通過總線通信耦合到處理器的存儲器。參照圖1,當(dāng)過程105在它的虛擬地址空間115中引用(reference)存儲單元110(過程虛擬存儲空間)時,通過存儲器管理130產(chǎn)生機器125的物理存儲器145(機器物理存儲器)中的實際地址140,可在硬件(有時合并進入處理器120)和軟件(通常在機器的操作系統(tǒng)中)中實現(xiàn)存儲器管理。除了其它功能,存儲器管理130還將虛擬地址空間中的位置映射到機器的物理存儲器中的位置。如圖1所示,過程可具有和在物理機器中實際可用的存儲器不同的存儲器視圖。在圖1描述的例子中,該過程在從0到1MB的虛擬地址空間中運行,該地址空間實際上是通過存儲器管理硬件和軟件映射到物理存儲器中的一部分,其本身具有從10到11MB的地址空間;從過程空間地址計算物理地址,可將位移135加到過程虛擬地址。從過程虛擬存儲器空間到物理存儲器的更復(fù)雜的映射是可能的,例如,可將相應(yīng)于過程虛擬存儲器的物理存儲器劃分成諸如頁面的部分并且將其和來自物理存儲器中的其它過程的頁面相交織。通??蓪⒋鎯ζ鲃澐殖身撁?,每個頁面包含已知數(shù)量的數(shù)據(jù),隨實施方案而變化,例如一個頁面可包含4096字節(jié)的存儲器。當(dāng)由執(zhí)行過程引用存儲單元時,將它們轉(zhuǎn)換成頁面引用。在通常的機器中,存儲器管理將對過程虛擬存儲器中的頁面的引用映射到機器物理存儲器中的頁面。一般地,存儲器管理可使用頁面表來指定相應(yīng)于過程空間頁面位置的物理頁面位置。在虛擬機環(huán)境中管理客戶軟件的一個方面是存儲器管理。由在虛擬機中執(zhí)行的客戶軟件來處理存儲器管理對于控制諸如虛擬機監(jiān)控器的系統(tǒng)產(chǎn)生了復(fù)雜性??紤]例如在32位IA-32英特爾體系結(jié)構(gòu)平臺(IA-32)上實現(xiàn)在主機上經(jīng)由虛擬化執(zhí)行兩個虛擬機的系統(tǒng)。在IA-32IntelArchitectureSoftwareDeveloper’sManual(英特爾軟件開發(fā)者手冊)(IA-32文檔)中描述了該平臺。IA-32平臺可包含實現(xiàn)為IA-32處理器的部分的IA-32頁面表。進一步,假設(shè)每個虛擬機本身將IA-32機器的抽象呈現(xiàn)給在其上執(zhí)行的客戶軟件。在每個虛擬機上執(zhí)行的客戶軟件可引用客戶過程虛擬存儲器地址,該地址又可以由客戶機的存儲器管理系統(tǒng)轉(zhuǎn)換成客戶-物理存儲器(guest-physicalmemory)地址。然而,可由在主-物理存儲器(host-physicalmemory)中的進一步的映射通過VMM和主機處理器上的硬件中的虛擬化子系統(tǒng)來實現(xiàn)客戶-物理存儲器本身。因此,由客戶過程或客戶操作系統(tǒng)對客戶存儲器的引用,包括例如對客戶IA-32頁面表控制寄存器的引用,必須由VMM來截取因為它們不能直接傳遞到主機的IA-32頁面表而不進行進一步的再處理,由于客戶-物理存儲器實際上不直接對應(yīng)于主-物理存儲器而是進一步通過主機的虛擬化系統(tǒng)重新映射。圖1描述了過程和物理存儲器(現(xiàn)有技術(shù))之間的關(guān)系。圖2抽象的描述了在一實施例中虛擬機和主機之間的關(guān)系。圖3描述了在一實施例中虛擬機環(huán)境的高層結(jié)構(gòu)。圖4a和4b說明了虛擬機環(huán)境中一實施例中的處理。圖5描述了在一實施例中使用擴展分頁表進行地址計算。圖6描述了在一實施例中使用分級擴展分頁表進行地址計算。圖7描述在一實施例中的擴展分頁表基地址指針。圖8描述了在一實施例中的擴展分頁表條目。具體實施例方式圖2圖2描述了在一實施例中,特別關(guān)于客戶存儲器映射的在主機上執(zhí)行的一個或多個虛擬機之間的關(guān)系。圖2說明客戶-物理存儲器是如何通過主機的虛擬化系統(tǒng)重新映射的。例如虛擬機A,242和虛擬機B,257的每個虛擬機分別向在虛擬機上運行的客戶軟件呈現(xiàn)虛擬處理器245和255。每個機器向客戶操作系統(tǒng)或其它客戶軟件提供物理存儲器的抽象,分別為客戶-物理存儲器240和250。當(dāng)客戶軟件在虛擬機242和257上執(zhí)行時,實際上是由主機267在主機處理器265上利用主-物理存儲器260來執(zhí)行的。如圖2所示,在該實施例中,將起始于地址0在虛擬機A,242中呈現(xiàn)為物理存儲器空間的客戶-物理存儲器240映射到主-物理存儲器260中的一些連續(xù)的區(qū)域270。類似地,將虛擬機B,257中的客戶-物理存儲器250映射到主-物理存儲器260的不同部分275。如圖2所示,主機可具有1024MB的主-物理存儲器。如果給每個虛擬機242和2547都分配256MB的存儲器,一個可能的映射可能是給虛擬機A,242分配128-384MB的范圍和給虛擬機B,257分配512-768MB的范圍。虛擬機242和257都引用0-256MB的客戶-物理地址空間。只有VMM知道每個虛擬機地址空間都映射到主-物理地址空間的不同部分。在圖2中所示的虛擬機和存儲器映射僅是一實施例的一個代表,在其它實施例中,在主機上執(zhí)行的虛擬機的實際數(shù)量可從一個變化到多個;主機和虛擬機的實際存儲器大小可變并且從虛擬機到虛擬機是可變的。該例子描述了給虛擬機的簡單、連續(xù)的存儲器分配。在更一般的情形下,分配給虛擬機的物理存儲器頁面可以是不連續(xù)的并且可分布在主-物理存儲器中,互相交織并且和屬于VMM和其它主過程的頁面交織。例如圖2所描述的,在系統(tǒng)中呈現(xiàn)為虛擬機的基于處理器的系統(tǒng)可盡其復(fù)雜地實現(xiàn)虛擬機。因此例如,虛擬機可將客戶-物理存儲器的全視圖呈現(xiàn)給客戶OS,并且使用由客戶OS和虛擬處理器或虛擬機的其他虛擬硬件提供的存儲器管理,對在虛擬機上執(zhí)行的客戶軟件進行存儲器管理。在一示例性實施例中,虛擬機可將包括IA-32硬件支持(例如用于存儲器管理的頁面表)的IA-32平臺呈現(xiàn)給客戶OS,并且依次在主機平臺上實際地執(zhí)行,該平臺也是包括用于存儲器管理的IA-32硬件的IA-32平臺。沒有額外的機制,在該實施例中的虛擬化系統(tǒng)必須使用(作為一可能的解決方案)IA-32頁面表遮蔽(shadowing)來重新映射、劃分和保護物理存儲器,從而在VMM中實現(xiàn)物理存儲器虛擬化算法。因此,例如,當(dāng)客戶軟件試圖訪問虛擬機的IA-32頁面表時,VMM必須將虛擬化所需的功能(例如,重新映射物理地址)覆蓋到客戶OS所需的功能上。為此,VMM必須通過客戶軟件來捕獲圍繞分頁機制的使用的各種事件。如IA-32文檔中所述,這包括寫入諸如IA-32存儲器管理系統(tǒng)的控制寄存器(例如,CR0、CR3和C4)的控制寄存器、訪問與分頁和存儲器訪問(例如,存儲器類型范圍寄存器(MTRR))相聯(lián)系的特定模型寄存器(MSR)、處理某些例外(例如,頁面出錯)。這種使用IA-32頁面表來虛擬化物理存儲器是復(fù)雜的并且需要巨大的性能開銷。圖3圖3說明虛擬機環(huán)境300的一實施例。在該實施例中,基于處理器的平臺316可執(zhí)行VMM312。該VMM,雖然一般在軟件中實現(xiàn),可向更高層的軟件模擬和輸出虛擬裸機接口。這種更高層的軟件可包括標(biāo)準(zhǔn)OS、實時OS或者可以是具有有限操作系統(tǒng)功能的拆卸(stripped-down)環(huán)境,并且可以不包括在一些實施例中的標(biāo)準(zhǔn)OS中典型可用的OS工具??商鎿Q地,例如,可在另一VMM中或使用另一VMM的服務(wù)來運行VMM312。例如,可在硬件、軟件、固件或一些實施例中的各種技術(shù)的組合來實現(xiàn)VMM。平臺硬件316可以是個人計算機(PC)、大型機、諸如個人數(shù)字助理(PDA)或“智能”移動電話的手持設(shè)備、便攜式計算機、機頂盒或其他基于處理器的系統(tǒng)。平臺硬件316包括至少一個處理器318和存儲器320。處理器318可以是能執(zhí)行程序的任何類型的處理器,例如微處理器、數(shù)字信號處理器、微控制器等。在實施例中,處理器可包括微代碼、可編程邏輯或用于執(zhí)行的硬編碼邏輯。雖然圖3僅顯示了一個這樣的處理器318,但在實施例的系統(tǒng)中可有一個或多個處理器。另外,處理器318可包括多個內(nèi)核、支持多線程等等。存儲器320可包括硬盤、軟盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、閃存、上述設(shè)備的任意組合或各種實施例中處理器318能讀取的任意其他類型的機器介質(zhì)。存儲器320可存儲指令和/或數(shù)據(jù)用于進行程序執(zhí)行和其他方法實施例。VMM312將一個或多個虛擬機抽象呈現(xiàn)給客戶軟件,可向各種客戶提供相同或不同的抽象。圖3顯示兩個虛擬機,302和314。諸如在各個虛擬機上運行的客戶軟件303和313的客戶軟件可包括諸如客戶OS304或306的客戶OS和各種客戶軟件應(yīng)用308和310。客戶軟件303和313可訪問其上運行客戶軟件303和313并執(zhí)行其他功能的虛擬機內(nèi)的物理資源(例如,處理器寄存器、存儲器和I/O設(shè)備)。例如,依據(jù)在虛擬機302和314中呈現(xiàn)的處理器的體系結(jié)構(gòu)和平臺,客戶軟件303和313預(yù)期訪問所有的寄存器、高速緩存、結(jié)構(gòu)、I/O設(shè)備、存儲器等等。在一實施例中,依照虛擬機控制結(jié)構(gòu)(VMCS)324中存儲的數(shù)據(jù),處理器318控制虛擬機302和314的操作。VMCS324是可包含客戶軟件303和313的狀態(tài)、VMM312狀態(tài)、指示VMM312希望如何控制客戶軟件303和313操作的執(zhí)行控制信息、控制在VMM312和虛擬機之間轉(zhuǎn)換的信息等的結(jié)構(gòu)。處理器318從VMCS324讀取信息來決定虛擬機的執(zhí)行環(huán)境并且限制它的行為。在一實施例中,在存儲器320中存儲VMCS324。在一些實施例中,使用多個VMCS結(jié)構(gòu)來支持多個虛擬機。VMM312可能需要管理由在虛擬機302和314中運行的客戶軟件可訪問的物理存儲器。在一實施例中,為了支持物理存儲器管理,處理器318提供了擴展頁面表(EPT)機制。在該實施例中,VMM312可包括物理存儲器管理模塊326,該模塊為與在將控制轉(zhuǎn)換到虛擬機302或314之前需提供的物理存儲器虛擬化相聯(lián)系的域提供值。這些域全體地稱作EPT控制。EPT控制可包括例如,指定是否應(yīng)該啟動EPT機制的EPT啟動指示器和一個或多個指示物理存儲器虛擬化機制的形式和語義的EPT表配置控制。這些將在下面詳細(xì)討論。另外,在一實施例中,EPT表328指示物理地址轉(zhuǎn)換和保護語義,VMM312可將它們放在客戶軟件303和313上。在一實施例中,在VMCS324中存儲EPT控制??商鎿Q地,EPT控制可存在于處理器318、存儲器320和處理器318的組合或其他任何存儲單元中。在一實施例中,為每個虛擬機302和314維持單獨的EPT控制。可替換地,為兩個虛擬機維持相同的EPT控制并且在每個虛擬機登錄之前由VMM312更新。在一實施例中,在存儲器320中存儲EPT表328??商鎿Q地,EPT表328可存在于處理器318、存儲器320和處理器318的組合或其他任何的存儲單元中。為每個虛擬機302和314維持單獨的EPT表328??商鎿Q地,為兩個虛擬機302和314維持相同的EPT表328并且在每個虛擬機登錄之前由VMM312更新。在一實施例中,處理器318包括EPT訪問邏輯322,該訪問邏輯負(fù)責(zé)依據(jù)EPT啟動指示器決定是否啟動EPT機制。如果啟動EPT機制,則處理器將客戶-物理地址轉(zhuǎn)換成基于EPT控制器和EPT表328的主-物理地址。在一實施例中,其中系統(tǒng)300包括多個處理器或多個線程處理器,每個邏輯處理器都與單獨的EPT訪問邏輯322相聯(lián)系,并且VMM312為每個邏輯處理器配置EPT表328和EPT控制??蓪⑼ㄟ^客戶軟件(例如,303,包括客戶OS304和應(yīng)用308)訪問的資源分成“優(yōu)先的(privileged)”或“非優(yōu)先的(non-privileged)”。對于優(yōu)先的資源,VMM312促進客戶軟件所需的功能而保留對這些優(yōu)先資源的最終控制。進一步,每個客戶軟件303和313預(yù)期處理各種平臺事件例如例外(例如,頁面出錯、一般保護出錯等等),中斷(例如,硬件中斷、軟件中斷)和平臺事件(例如,初始化(INIT)和系統(tǒng)管理中斷(SMI))。這些平臺事件中的一些是“優(yōu)先的”,因為它們必須由VMM312來處理以確保虛擬機302和314的正確運行和在客戶軟件中提供保護??蛻舨僮飨到y(tǒng)和客戶應(yīng)用都試圖訪問優(yōu)先資源并且都可以引起或經(jīng)歷優(yōu)先事件。優(yōu)先平臺事件和對優(yōu)先資源的訪問嘗試在這里全體地稱作“優(yōu)先事件”或“虛擬化事件”。圖4a和4b在一實施例中,例如先前所述和在圖3中描寫的虛擬機環(huán)境的運行由圖4a和4b中所示的處理來描述。圖4a描述了在一實施例中處理發(fā)生在客戶軟件中的優(yōu)先事件的VM環(huán)境的運行;和通過客戶軟件處理非優(yōu)先事件的實施例的運行。圖4b描述了與擴展分頁表特別相關(guān)的實施例中的VM環(huán)境的運行,特別地與客戶軟件對客戶-物理存儲器的訪問和由該實施例中的VMM管理硬件中的EPT機制相關(guān)。圖4a和4b并未描述可能出現(xiàn)在例如圖3所描述的環(huán)境中的所有部件或所有操作。這只是為了清楚表達。雖然在圖4a和4b中表示一小組部件和一些具體的運行,但實施例中的VM環(huán)境可包括許多其他部件,并且許多其他操作會在這樣的實施例中發(fā)生。首先考慮圖4a。圖4a描述了在虛擬機抽象302上執(zhí)行的客戶軟件303的一組示例性的操作,和先前在圖3中描述的平臺硬件316。在指示它們在系統(tǒng)中發(fā)生的位置的塊內(nèi)描述操作(例如,在VMM312中、在客戶軟件303中等等)。除了先前描述的VM環(huán)境的其他部件,VM抽象302可為客戶軟件303在412存儲虛擬機狀態(tài)和其他狀態(tài)信息,并且也可提供諸如虛擬網(wǎng)絡(luò)連接或通用寄存器組的其他資源,為客戶命名許多示例中的兩個。當(dāng)然,由其上執(zhí)行VM的平臺硬件316來實際提供實現(xiàn)VM狀態(tài)、客戶狀態(tài)的物理資源和其他VM資源。平臺硬件包括存儲器320、VMCS324和處理器318。在440,客戶軟件303訪問非優(yōu)先資源442。非優(yōu)先資源無需由VMM312控制并且可由客戶軟件直接地訪問,客戶軟件繼續(xù)而不需調(diào)用VMM312,在訪問非優(yōu)先資源422后允許客戶繼續(xù)在445的運行。非優(yōu)先平臺事件同樣無需VMM312(并未在圖4a中顯示)的介入來處理。在405,客戶軟件303試圖訪問優(yōu)先資源,和/或經(jīng)歷優(yōu)先平臺事件。當(dāng)這種優(yōu)先事件發(fā)生在405時,控制可以轉(zhuǎn)移407到VMM312。從客戶軟件到VMM312的控制轉(zhuǎn)移407在這里稱作虛擬機退出。在促進資源訪問或另外適當(dāng)處理優(yōu)先事件之后,VMM312可在432將控制返還給客戶軟件,然后客戶軟件重新開始運行,435。從VMM312到客戶軟件的控制轉(zhuǎn)移432稱作虛擬機登錄。在一實施例中,VMM312通過執(zhí)行特別設(shè)計用于觸發(fā)轉(zhuǎn)換的指令(這里稱作虛擬機登錄指令)來啟動虛擬機登錄,430。在一實施例中,當(dāng)虛擬機退出發(fā)生時,保存客戶軟件使用的處理器狀態(tài)部件,410,加載VMM312所需的處理器狀態(tài)部件,并且在420在VMM312中重新開始執(zhí)行。在一實施例中,客戶軟件使用的處理器狀態(tài)部件存儲在VMCS324的客戶-狀態(tài)區(qū)域中,并且VMM312所需的處理器狀態(tài)部件存儲在VMCS324的監(jiān)控器-狀態(tài)區(qū)域。在一實施例中,當(dāng)從VMM312到客戶軟件的轉(zhuǎn)移發(fā)生時,在虛擬機退出(并且當(dāng)處理虛擬機退出時可能已由VMM312修改)保存的處理器狀態(tài)部件在425恢復(fù)并且在430將控制返回給虛擬機302或314。接著,考慮圖4b。如前面所提到的,圖4b描述了上述的和圖4中描述的VM環(huán)境的那些運行,特別地關(guān)于擴展分頁表、客戶程序訪問客戶-物理存儲器、和在一實施例中通過VMM在硬件中對EPT機制的管理。如前所述,為了清楚表達,圖4b并未描述實施例中在VM環(huán)境中可能出現(xiàn)的所有部件或所有操作。雖然在圖4a和4b中表示一小組部件和一些特定操作,但實施例中的VM環(huán)境可包括許多其他部件,并且許多其他操作會在該實施例中發(fā)生。在圖4b中描述的實施例中的VM環(huán)境的部件是客戶軟件303、VM302、具有物理存儲器管理模塊326的VMM312和平臺硬件或物理機316。平臺硬件進一步包括存儲器320和具有EPT訪問邏輯322的處理器318,該存儲器320在該實施例中包括一組EPT表328和VMCS324。一般地,如圖4所示在450,當(dāng)例如由客戶軟件303訪問客戶-物理存儲器時,可由客戶軟件來啟動平臺硬件中的EPT設(shè)備的使用。將客戶-物理存儲器訪問稱作由VM302提供的存儲器的VM抽象451,該抽象又指的是物理機316。如果啟動EPT機制,平臺硬件316可使用EPT訪問邏輯322和EPT表328,處理對客戶-物理存儲器的引用以將對客戶-物理存儲器的訪問轉(zhuǎn)換成對主-物理存儲器320的訪問。EPT運行的細(xì)節(jié)將參考下面的圖5和6進行討論??捎蒝MM312來配置EPT機制自身,VMM312配置EPT表328和可儲存于VMCS324中的EPT控制。在該實施例中,可由VMM312進行EPT機制的配置作為在VMM312中優(yōu)先事件405的處理之后和在VM登錄430之前的物理存儲器管理模塊326運行的一部分。在配置EPT機制中,為了啟動、使其失效或另外控制EPT機制,460,VMM312可更新EPT表328和EPT控制。當(dāng)然,為使用和VM環(huán)境結(jié)合的擴展分頁表,許多其他形式的處理也是可能的,例如,對于參照圖3先前討論的EPT控制和EPT表328的不同位置,多個VM、多個處理器、多個線程、多個客戶和這些變化的組合,等等。圖5圖5顯示了使用上面介紹的擴展頁面表來處理的一個示例,當(dāng)在虛擬機中的客戶軟件引用客戶虛擬地址時最終計算主-物理地址。描述的例子顯示了使用簡單的32位虛擬尋址和簡單頁面表格式在IA-32平臺中運行的客戶軟件。本領(lǐng)域技術(shù)人員可容易地擴展該例子,以理解例如,其他分頁模式(例如,在客戶軟件中的64位尋址)、其他指令集體系結(jié)構(gòu)(例如,InterItanium體系結(jié)構(gòu),例如在可從英特爾公司獲得的英特爾安騰體系結(jié)構(gòu)軟件開發(fā)者手冊中所描述的)或其他配置。在圖5中,由在虛擬機中執(zhí)行的客戶軟件來執(zhí)行對客戶虛擬地址510的引用。使用在客戶中激活的存儲器管理機制(即,由客戶操作系統(tǒng)來配置)來將虛擬地址轉(zhuǎn)換成客戶-物理地址。通過EPT在訪問主-物理地址之前,將在轉(zhuǎn)換中使用的每個客戶-物理地址和最終產(chǎn)生的客戶-物理地址轉(zhuǎn)換成主-物理地址。在下面的討論中詳細(xì)說明該過程。在該例子中,CR3寄存器520中的合適位502指向在客戶-物理存儲器中的客戶頁面目錄表560的基址。將該值502和來自客戶虛擬地址510的高位(upperbit)相結(jié)合(依據(jù)IA-32的語義通過乘以4來適當(dāng)?shù)卣{(diào)整,因為在該例中,表中的每個條目是4字節(jié))以形成客戶的PD表560中的頁面目錄項(PDE)的客戶-物理地址512。通過EPT表555轉(zhuǎn)換該值512以形成頁面目錄項的主-物理地址504。處理器使用該主-物理地址504來訪問頁面目錄項。來自PDE的信息包括客戶頁面表570的基地址522。將該客戶-物理地址522和客戶虛擬地址510的位21:12相結(jié)合,適當(dāng)?shù)卣{(diào)整以形成客戶頁面表570中頁面表條目的客戶-物理地址532。通過EPT表565轉(zhuǎn)換該客戶-物理地址532以形成客戶的頁面表條目(PTE)的主-物理地址514。處理器使用該主-物理地址514來訪問PTE。來自PTE的信息包括被訪問的客戶-物理存儲器中的頁面的基地址542。將該值和客戶虛擬地址510的低數(shù)位(low-orderbit)(11:0)相結(jié)合以形成被訪問的存儲器的客戶-物理地址552。通過EPT表575轉(zhuǎn)換該值552以形成正被訪問的存儲器的主-物理地址524。每次使用EPT表將客戶-物理地址轉(zhuǎn)換成主-物理地址,處理器也依據(jù)EPT表中的控制來確認(rèn)該訪問是被允許的,其將在下面描述。另外,必須理解的是雖然在圖5中標(biāo)記為不同的,但EPT表555、565和575在一實施例中,可以是相同組的EPT表(即,EPT表的單一組被用于所有從客戶-物理到主-物理的地址轉(zhuǎn)換)。圖6圖6描述了使用前面介紹的擴展頁面表來進行處理的另一例子,使用多級EPT表來最終將客戶-物理地址轉(zhuǎn)換成主物理地址。在圖6所示的示例性實施例中,EPT基指針(EPTP)620中的合適位602指出第一級EPT表650的基址的主-物理地址,在該實施例中該地址存儲在主-物理存儲器中。下面將根據(jù)圖7詳細(xì)地討論EPTP。在該例子中,EPT表中的條目每個為8字節(jié)。通過乘以8(例如,通過將該值左移3位)來適當(dāng)?shù)卣{(diào)整來自客戶-物理地址610(601)的位38:30,從而獲得調(diào)整的高位客戶-物理地址603。將EPT表基地址值602結(jié)合(添加)調(diào)整的高位客戶-物理地址位603,從而形成第一級EPT表650中的EPT表條目651的主-物理地址604。根據(jù)圖8下面將討論在第一級EPT表650中的例如651的條目和其他EPT表660和670中的條目的示例性格式。EPT表條目651的部分是下一級EPT表660的基地址612。從客戶-物理地址610的位29:21(611)形成第二調(diào)整的地址部分613。將該調(diào)整的值613結(jié)合(加上)基地址612以形成下一級EPT表660中的EPT表條目661的主-物理地址614。處理器使用該主-物理地址614來訪問EPT表條目661。來自EPT表條目661的信息包括最后的EPT表670的基地址622。將該基地址622和經(jīng)過適當(dāng)調(diào)整后的客戶虛擬地址610的調(diào)整的位20:12(623)相結(jié)合,以形成最后的EPT表670中EPT表條目671的地址624。處理器使用該主-物理地址624來訪問EPT表條目。來自EPT表條目671的信息包括主-物理存儲器690中被訪問的頁面的基地址632。將該頁面地址值690和客戶物理地址610的低數(shù)位(11:0)相結(jié)合以形成被訪問的存儲器的最后的主-物理地址634。在圖6所示的示例性實施例中,EPT表是分級的。在形式上它們類似常規(guī)的多級頁面表。而且,在該示例中,在每個EPT表中的每個EPT表條目是8字節(jié)大小,雖然在其他實施例中該大小可能不同,但本領(lǐng)域技術(shù)人員將會理解改變訪問表的機制。在該示例中,每個EPT表的大小為4KB。在其他實施例中,可使用不同的表大??;而且,象圖6中所描述的分級中的所有表無需是相同大小。大小的這種改變可能影響從客戶-物理地址到索引下一級EPT表所用的位數(shù)。對于本領(lǐng)域技術(shù)人員來說明顯的是,許多其他的EPT表配置都是可能的。該圖中描述的分級配置顯示了三個分級級別,其中兩個EPT表650和660分別用作對更低級EPT表660和670的索引。在其他實施例中,在這種分級表中可能有更少,例如兩級,或更多,例如四級或更多的級別。一般地,分級的級別數(shù)量可至少部分依賴于客戶-物理地址的位數(shù)、每個表的大小和在每個表條目中的字節(jié)數(shù)量中的一個或多個而變化。在圖6示例中的客戶-物理地址是32位大小。在其他實施例中,客戶-物理地址可以是不同大小的;大小的這種變化會需要EPT表的分級數(shù)量的變化,這是為了進行轉(zhuǎn)換所需的。例如,如果客戶-物理地址是48位,就需要4級EPT表來進行轉(zhuǎn)換(假設(shè)在每級4KB的EPT表和在每個EPT表中8字節(jié)的EPT表條目)。在圖6所示的實施例中,EPT控制包括單個域、EPT指針(EPTP)。該域包含第一級EPT表的基地址。在該示例中,每個EPT是4KB的大小。圖7如圖7中所描述的典型實施例中所示,EPT基地址指針(EPTP)包括用來形成諸如在上面圖6中所述的第一級EPT表的基址的基地址(在主-物理存儲器中)的位。在圖7所描述的例子中,位59:12形成基地址。假設(shè)位11:0和63:60為0。當(dāng)然,各種位域的寬度可在其他實施例中變化,例如基地址域?qū)⒁蕾囉谔貏e體系結(jié)構(gòu)或?qū)嵤┓桨钢械牡刂肺粩?shù)而變化。在EPTP寄存器中的剩余位在其他實施例中可用于其他目的。在一實施例中,僅通過虛擬機登錄或虛擬機退出可訪問EPTP寄存器。在該實施例中,在虛擬機登錄時從VMCS中的EPTP域裝載處理器中的EPTP寄存器,當(dāng)客戶軟件運行時激活EPT機制。如上所示,可由在VMCS內(nèi)或其他地方的其他控制位來控制該激活(以及裝載EPTP域)。圖8該圖描述了EPT表中的條目的格式的示例性實施例。在該示例中,EPT表中的每個條目是8字節(jié)大小。在一實施例中,每個EPT表是4KB大小,這意味著每個EPT表頁面有512個EPT表條目。如圖8中的例子所示,每個EPT表條目包含存儲器中的下一級EPT表或頁面的基主-物理地址(ADDR)和許可以及其他配置信息。如前所述,在其他實施例中各種位域的寬度可改變,例如ADDR的寬度可依賴于特定體系結(jié)構(gòu)或?qū)嵤┓桨钢械牡刂肺粩?shù)而變化。圖8僅描述了2個許可位(permissionbit),當(dāng)前(Present)和可寫(Writable)。在其他實施例中,可在每個EPT表條目中可以給出其他的許可和配置信息。例如,在一實施例中,許可位指示是否可以執(zhí)行存儲器的頁面(即,是否可以取頁面的內(nèi)容并且由處理器解譯成指令)。EPT表可以是各種不同的格式。例如,可以如圖6所示實現(xiàn)為簡單的分級表。可替換地,它們可以是單級頁面表(其中第一級EPT表的大小指示了客戶-物理地址空間的最大尺寸。)可替換地,它們可以是某種形式的哈希表。對于本領(lǐng)域技術(shù)人員顯而易見的是,在其他實施例中無數(shù)可能的配置都是可能的。EPT表在主-物理存儲器中可支持一個或多個頁面大小。在一實施例中,在每個EPT表中的每個條目都包括一個超級頁面位,該超級頁面位指示EPT表的移動(walk)應(yīng)該停在那一點和使用EPT表條目中的地址信息和客戶-物理地址中的剩余位形成主-物理存儲器地址。在圖6所示的例子中,例如,如果在EPT表660中設(shè)置超級頁面位,那么在主-物理存儲器中最后產(chǎn)生的頁面有2MB的大小并且通過結(jié)合客戶-物理地址610的位20:0和來自EPT表660的地址位形成最后的主-物理地址。在一些實施例中,可由虛擬機登錄來啟動擴展分頁表和EPT地址轉(zhuǎn)換機制并由虛擬機退出取消使其失效。因此,作為結(jié)果,EPT機制可能不能為客戶軟件或VMM軟件所用以管理其自己的地址轉(zhuǎn)換。而且,在這些實施例中,EPT機制可不同于并獨立于客戶或主機軟件可用的其他常規(guī)存儲器頁面管理機制,例如在IA-32實施例中的IA-32分頁表,雖然EPT運行可利用常規(guī)頁面管理機制的特性。因此,與使用主機的虛擬化和EPT機制的客戶軟件的執(zhí)行相對,EPT表的組織和運行可能完全不同于由處理器提供的用于常規(guī)的程序執(zhí)行和直接在主機上運行的其他頁面轉(zhuǎn)換工具。在一實施例中,EPT機制可利用和該實施例的常規(guī)頁面管理機制使用的相同格式的表,該表對于客戶和VMM軟件是可用的。然而,控制EPT機制的表可能仍區(qū)別于那些控制從客戶-虛擬地址到客戶-物理地址轉(zhuǎn)換的表和不同于那些控制主-虛擬地址到主-物理地址轉(zhuǎn)換的表。雖然提供的例子可描述提供對執(zhí)行單元和邏輯電路的上下文中的虛擬機系統(tǒng)中的物理存儲器虛擬化的支持,但可使用軟件的方法實現(xiàn)其他實施例。提供一些實施例作為軟件程序產(chǎn)品或可包括其上已存有指令的機器或機器可讀介質(zhì)的軟件,在由機器訪問該指令時執(zhí)行該實施例的過程。在其他實施例中,可由包含用于執(zhí)行過程的硬布線邏輯的特定硬件部件或由編程部件和客戶定制硬件部件來的任意組合來執(zhí)行過程。在先前的描述中,為了解釋,闡明了許多特定細(xì)節(jié)以便提供對所述實施例的完整理解,然而,本領(lǐng)域技術(shù)人員將意識到可以實施許多其他實施例而不需要這些具體的細(xì)節(jié)。根據(jù)在基于處理器的系統(tǒng)內(nèi)數(shù)據(jù)位上的運算的算法和符號表示給出上面詳細(xì)描述的一些部分。這些算法描述和表示是本領(lǐng)域技術(shù)人員將他們工作的內(nèi)容最有效地傳給本領(lǐng)域的其他技術(shù)人員所使用的手段。該運算是需要對物理量進行物理操作的那些運算。這些物理量可采用電的、磁的、光的或其他能被存儲、傳輸、組合、比較和其他操作的其他物理信號。因為通常用法的原因,將這些信號稱作位、值、元素、符號、字符、項、數(shù)量等時常地被證明是方便的。然而,應(yīng)當(dāng)記住所有這些和類似的術(shù)語是和適當(dāng)?shù)奈锢砹肯嗦?lián)系的并且僅是應(yīng)用于這些量的簡便標(biāo)記。除非特別聲明否則為了描述清楚,例如“執(zhí)行”、“處理”、“計算”、“推算”或“決定”等的術(shù)語指的是基于處理器的系統(tǒng)或類似的電子計算設(shè)備的操作和處理,在基于處理器的系統(tǒng)的存儲器內(nèi)操作并將表示為物理量的數(shù)據(jù)轉(zhuǎn)變成類似表示的其他數(shù)據(jù)或其他信息存儲、傳輸或顯示設(shè)備的數(shù)據(jù)。在該實施例的描述中,會參考相應(yīng)附圖。在附圖中,貫穿幾個視圖,用相同的數(shù)字描述本質(zhì)上類似的部件??墒褂闷渌麑嵤├⑶铱勺鹘Y(jié)構(gòu)的、邏輯的和電的改變。而且,應(yīng)當(dāng)理解各種實施例,雖然不同,但不必要是相互排斥的。例如,在一實施例中描述的特定特性、結(jié)構(gòu)或特征也可包含在其他實施例之內(nèi)。進一步,在處理器中實現(xiàn)的實施例的設(shè)計可經(jīng)過各種階段,從創(chuàng)建到模擬到制作。表示設(shè)計的數(shù)據(jù)可表示許多方法中的設(shè)計。第一,因為在模擬中有用,可使用硬件描述語言或其他功能描述語言來表示硬件。另外,可在設(shè)計工藝的一些階段制造具有邏輯和/或晶體管門的電路級模型。而且,在一些階段,大多數(shù)設(shè)計達到數(shù)據(jù)表示硬件模型中各種設(shè)備的物理放置的水平。在使用常規(guī)半導(dǎo)體制造技術(shù)的情況下,表示硬件模型的數(shù)據(jù)可以是詳細(xì)說明用于制造集成電路的掩模的不同掩模層上的各種特性的存在與否的數(shù)據(jù)。在設(shè)計的任何表示中,可以在任何形式的機器可讀介質(zhì)中存儲數(shù)據(jù)。調(diào)制或產(chǎn)生用于傳輸這種信息的光或電波,存儲器或例如盤的磁或光的存儲器可以是機器可讀介質(zhì)。任何這些介質(zhì)可“攜帶”或“指示”設(shè)計或軟件信息。當(dāng)傳輸指示或攜帶代碼或設(shè)計的電載波到進行電信號的復(fù)制、緩沖或重傳的程度時,制作了新的拷貝。因此,通信提供者或網(wǎng)絡(luò)提供者可制造構(gòu)成或表示實施例的物品的拷貝(載波)。作為程序產(chǎn)品提供的實施例可包括具有存儲其上的數(shù)據(jù)的機器可讀介質(zhì),當(dāng)這些數(shù)據(jù)被機器訪問時可使機器依據(jù)要求保護的主題執(zhí)行過程。該機器可讀介質(zhì)包括但不限于,軟盤、光盤、DVD-ROM盤、DVD-RAM盤、DVD-RW盤、DVD+RW盤、CD-R盤、CD-RW盤、CD-ROM盤和磁-光盤、ROM、RAM、EPROM、EEPROM、磁或光卡、閃存或適合存儲電子指令的其他類介質(zhì)/機器可讀介質(zhì)。而且,實施例也可作為程序產(chǎn)品下載,其中通過在載波中嵌入數(shù)據(jù)信號或經(jīng)由通信鏈接(例如,調(diào)制解調(diào)器或網(wǎng)絡(luò)連接)的其他傳播介質(zhì)的方法,可從遠(yuǎn)端數(shù)據(jù)源傳送程序到所需的設(shè)備。以最基本的方式描述了許多方法,但可從任何方法中添加或刪除步驟并且可從任意的描述數(shù)據(jù)中添加或刪除信息而不背離要求保護的主題內(nèi)容的基本范圍。許多進一步的修改和調(diào)整對于本領(lǐng)域技術(shù)人員是顯而易見的。提供特殊的實施例不是為了限制要求保護的主題內(nèi)容而是為了對它進行說明。要求保護的主題內(nèi)容并不是由上面提供的具體例子決定的而是僅由所附的權(quán)利要求決定的。權(quán)利要求1.一種處理器包括處理器的虛擬化系統(tǒng),該虛擬化系統(tǒng)包括包含擴展分頁表的存儲器虛擬化支持系統(tǒng),該分頁表將由虛擬機上可執(zhí)行的客戶軟件對客戶-物理存儲器的引用映射到對主機的主-物理存儲器的引用,該客戶軟件在其中可操作處理器的主機上也是可執(zhí)行的。2.如權(quán)利要求1所述的處理器,其中存儲器虛擬化支持系統(tǒng)進一步規(guī)定對訪問的限制并且依據(jù)該限制控制對客戶-物理存儲器位置的訪問。3.如權(quán)利要求1所述的處理器,其中存儲器虛擬化支持系統(tǒng)進一步將主機的主-物理存儲器進行劃分。4.如權(quán)利要求2所述的處理器,其中虛擬化支持系統(tǒng)響應(yīng)于違反所述限制訪問存儲器的嘗試而轉(zhuǎn)變成虛擬機監(jiān)控器。5.如權(quán)利要求1所述的處理器,其中擴展分頁表進一步將對客戶-物理存儲器的頁面的引用映射到對主-物理存儲器的頁面的引用。6.如權(quán)利要求5所述的處理器,其中擴展分頁表規(guī)定了對于客戶-物理存儲器的頁面的訪問限制。7.如權(quán)利要求6所述的處理器,其中對于客戶-物理存儲器的頁面的訪問限制包括至少下面之一讀取訪問控制信息,寫入訪問控制信息,和執(zhí)行訪問控制信息。8.如權(quán)利要求6所述的處理器,其中虛擬化系統(tǒng)響應(yīng)于對于客戶-物理存儲器的頁面的訪問限制的違反,而轉(zhuǎn)變成虛擬機監(jiān)控器。9.如權(quán)利要求5所述的處理器,其中擴展分頁表包括多級擴展分頁表。10.如權(quán)利要求1所述的處理器,其中只有當(dāng)虛擬化系統(tǒng)的標(biāo)志設(shè)為預(yù)定值時,響應(yīng)于處理器的虛擬化系統(tǒng)的激活而激活存儲器虛擬化支持系統(tǒng)。11.一種方法,包括使用主機的擴展分頁表將由虛擬機上可執(zhí)行的客戶軟件對客戶-物理存儲器的引用映射到對主機的主-物理存儲器的引用,該客戶軟件又可以在基于處理器的主機上執(zhí)行。12.如權(quán)利要求11所述的方法,進一步包括規(guī)定對訪問的限制以及依據(jù)所述限制控制對客戶-物理存儲器地址的訪問。13.如權(quán)利要求11所述的方法,進一步包括對主機的主-物理存儲器進行劃分。14.如權(quán)利要求12所述的方法,進一步包括響應(yīng)于違反限制訪問存儲器的嘗試,虛擬化支持系統(tǒng)轉(zhuǎn)變成虛擬機監(jiān)控器。15.如權(quán)利要求11所述的方法,進一步包括將對客戶-物理存儲器的頁面的引用映射到對主-物理存儲器的頁面的引用。16.如權(quán)利要求15所述的方法,其中擴展分頁表指定了對于客戶-物理存儲器的頁面的訪問限制。17.如權(quán)利要求16所述的方法,其中對于客戶-物理存儲器的頁面的訪問限制包括至少下面之一讀取訪問控制信息,寫入訪問控制信息,和執(zhí)行訪問控制信息。18.如權(quán)利要求16所述的方法,進一步包括響應(yīng)于違反對客戶-物理存儲器的頁面的訪問限制,而轉(zhuǎn)變成虛擬機監(jiān)控器。19.如權(quán)利要求15所述的方法,其中擴展分頁表包括多級擴展分頁表。20.如權(quán)利要求11所述的方法,進一步包括只有當(dāng)虛擬化系統(tǒng)的標(biāo)志設(shè)為預(yù)定值時,響應(yīng)于處理器的虛擬化系統(tǒng)的激活而激活存儲器虛擬化支持系統(tǒng)。21.一種基于處理器的系統(tǒng),包括處理器的虛擬化系統(tǒng),該虛擬化系統(tǒng)包括包含擴展分頁表的存儲器虛擬化支持系統(tǒng),該分頁表將由虛擬機上可執(zhí)行的客戶軟件對客戶-物理存儲器的引用映射到對主機的主-物理存儲器的引用,該客戶軟件在其中可操作處理器的主機上也是可執(zhí)行的。22.如權(quán)利要求21所述的系統(tǒng),其中存儲器虛擬化支持系統(tǒng)進一步規(guī)定對訪問的限制并且依據(jù)該限制控制對客戶-物理存儲器位置的訪問。23.如權(quán)利要求21所述的系統(tǒng),其中存儲器虛擬化支持系統(tǒng)進一步將主機的主-物理存儲器進行劃分。24.如權(quán)利要求22所述的系統(tǒng),其中響應(yīng)于違反限制訪問存儲器的嘗試,虛擬化支持系統(tǒng)轉(zhuǎn)變成虛擬機監(jiān)控器。25.如權(quán)利要求21所述的系統(tǒng),其中擴展分頁表進一步將對客戶-物理存儲器的頁面的引用映射到對主-物理存儲器的頁面的引用。26.如權(quán)利要求25所述的系統(tǒng),其中擴展分頁表規(guī)定了對于客戶-物理存儲器的頁面的訪問限制。27.如權(quán)利要求26所述的系統(tǒng),其中對于客戶-物理存儲器的頁面的訪問限制包括至少下面之一讀取訪問控制信息,寫入訪問控制信息,和執(zhí)行訪問控制信息。28.如權(quán)利要求26所述的系統(tǒng),其中響應(yīng)于違反對客戶-物理存儲器的頁面的訪問限制,虛擬化支持系統(tǒng)轉(zhuǎn)變成虛擬機監(jiān)控器。29.如權(quán)利要求25所述的系統(tǒng),其中擴展分頁表包括多級擴展分頁表。30.如權(quán)利要求21所述的系統(tǒng),其中只有當(dāng)虛擬化系統(tǒng)的標(biāo)志設(shè)為預(yù)定值時,響應(yīng)于處理器的虛擬化系統(tǒng)的激活而激活存儲器虛擬化支持系統(tǒng)。全文摘要一種處理器包括具有存儲器虛擬化支持系統(tǒng)的虛擬化系統(tǒng),將由虛擬機上可執(zhí)行的客戶軟件對客戶-物理存儲器的引用映射到對主機的主-物理存儲器的引用,該客戶軟件在主機上也是可執(zhí)行的。文檔編號G06F12/08GK1811714SQ20061000402公開日2006年8月2日申請日期2006年1月13日優(yōu)先權(quán)日2005年1月14日發(fā)明者S·本尼特,A·安德森,G·奈格爾,R·??ㄌm,R·烏利格,L·史密斯三世,D·羅杰斯申請人:英特爾公司