專利名稱:控制虛擬機(jī)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實施例總體上涉及計算機(jī)系統(tǒng),具體來講,涉及計算機(jī)系統(tǒng)內(nèi)虛擬機(jī)的操作控制。
背景技術(shù):
虛擬機(jī)體系結(jié)構(gòu)從邏輯上劃分物理機(jī),以致機(jī)器的底層硬件是分時的,并且表現(xiàn)為一個或多個獨立操作的虛擬機(jī)(VM)。虛擬機(jī)監(jiān)視器(VMM)在計算機(jī)上運(yùn)行,并且便于為其他軟件抽象一個或多個VM。每個VM可以起獨立平臺的作用,運(yùn)行其自身的操作系統(tǒng)(OS)和應(yīng)用軟件。此處把在VM中運(yùn)行的軟件統(tǒng)稱為客戶軟件。
客戶軟件期待這樣的操作,就好像它正在專用計算機(jī)上運(yùn)行而不是在VM上運(yùn)行。也就是說,客戶軟件期待控制各種事件并且有權(quán)訪問計算機(jī)(例如物理機(jī))上的硬件資源。所述物理機(jī)的硬件資源可以包括一個或多個處理器、駐留在所述處理器上的資源(例如控制寄存器、高速緩沖存儲器及其他)、存儲器(以及駐留在存儲器中的結(jié)構(gòu)、例如描述符表)以及駐留在所述物理機(jī)中的其他資源(例如,輸入輸出設(shè)備)。所述事件可以包括中斷、異常、平臺事件(例如初始化(INIT)或者系統(tǒng)管理中斷(SMI)等等)。
所述VMM可以根據(jù)需要將客戶軟件狀態(tài)交換(swap)進(jìn)出物理機(jī)的設(shè)備、存儲器以及寄存器。所述VMM可以通過允許直接訪問底層的物理機(jī)來增強(qiáng)VM的性能。當(dāng)在客戶軟件中正在以非特權(quán)模式執(zhí)行操作時,所述方式限制軟件訪問所述物理機(jī),或者當(dāng)操作不利用物理機(jī)中VMM希望保持控制的硬件資源時,這是尤其適用的。
每當(dāng)客戶操作可能影響VMM或者任何未執(zhí)行VM的正確執(zhí)行時,所述VMM恢復(fù)控制。通常,所述VMM審查這種操作,在允許所述操作進(jìn)行到底層物理機(jī)或者模擬對客戶利益的操作之前,確定是否存在問題。例如,當(dāng)客戶訪問I/O設(shè)備時、當(dāng)其試圖(例如通過改變控制寄存器值)改變機(jī)器配置時、當(dāng)其試圖訪問存儲器的某區(qū)域等等時,所述VMM可能需要恢復(fù)控制。
支持VM操作的現(xiàn)有系統(tǒng)使用固定格式結(jié)構(gòu)來控制VM的執(zhí)行環(huán)境,此處將所述固定格式結(jié)構(gòu)稱為虛擬機(jī)控制結(jié)構(gòu)(VMCS)。所述VMCS被存儲在存儲器區(qū)域中,并且例如包含客戶狀態(tài)、VMM的狀態(tài)以及控制信息,所述控制信息表明在客戶執(zhí)行期間,在什么條件下所述VMM希望恢復(fù)控制。物理機(jī)中的處理器讀取來自于所述VMCS的信息以便確定VM和VMM的執(zhí)行環(huán)境,并且約束客戶軟件在所述VMM控制之下的行為。
常規(guī)的體系結(jié)構(gòu)把VMCS定位在物理機(jī)的存儲器中,并且允許VMM使用普通存儲器讀寫指令來訪問它。為此,必須在處理器指令集架構(gòu)中從體系結(jié)構(gòu)上定義所述VMCS的格式(并且以類似于其他系統(tǒng)結(jié)構(gòu)和指令編碼的方式在規(guī)范和手冊中記載)。所述VMM被直接編碼為這些規(guī)范。這種結(jié)構(gòu)限制了支持VMM的處理器在執(zhí)行方面的靈活性。由于VMCS的形式是從體系結(jié)構(gòu)上來定義的,所以出于性能、擴(kuò)展性、兼容性、安全性等等的原因,特定處理器實現(xiàn)方式的微體系結(jié)構(gòu)不可以在VMCS數(shù)據(jù)的格式、內(nèi)容、組織或者存儲需求方面做出改變,此外不需要對已安裝的VMM執(zhí)行基礎(chǔ)做出相應(yīng)修改。
因此,需要更加靈活的虛擬機(jī)體系結(jié)構(gòu)的實現(xiàn)方式,該實現(xiàn)方式不必嚴(yán)格耦合至物理機(jī)的底層實現(xiàn)方式。
圖1是依照本發(fā)明一個實施例的VM體系結(jié)構(gòu)的圖表。
圖2是依照本發(fā)明一個實施例的控制VM的方法流程圖。
圖3是依照本發(fā)明一個實施例的VMCS訪問指令的圖表。
圖4是依照本發(fā)明一個實施例的讀取來自于VMCS的數(shù)據(jù)的方法流程圖。
圖5是依照本發(fā)明一個實施例的寫數(shù)據(jù)至VMCS的方法流程圖。
具體實施例方式
描述新穎的VM控制體系結(jié)構(gòu)。在隨后對實施例的詳細(xì)描述中,參照了附圖,該附圖作為本發(fā)明的一部分,并且其中通過舉例說明而非限制的方式示出了可以實施本發(fā)明的特定實施例。這些實施例是以足夠多的細(xì)節(jié)來描述的,以便使本領(lǐng)域普通技術(shù)人員可以理解和實現(xiàn)它們,并且應(yīng)該理解的是,也可以利用其他實施例,并且可以在不脫離本公開內(nèi)容的精神和范圍的情況下,做出結(jié)構(gòu)上、邏輯上和電氣上的改變。因此,不應(yīng)該將以下的詳細(xì)說明認(rèn)為是限制意義上的,并且此處所公開的本發(fā)明的實施例的范圍只由所附權(quán)利要求定義。
VMM給予其他軟件(“客戶軟件”、“多個客戶”或者僅僅“一個客戶”)一個或多個VM的抽象。所述VMM可以向各種客戶提供相同或者不同的抽象。每個客戶期待出現(xiàn)于VM中的所有硬件平臺設(shè)施都可供其使用。例如,依照處理器的體系結(jié)構(gòu)和出現(xiàn)于所述VM中的平臺,客戶期待有權(quán)訪問所有寄存器、高速緩沖存儲器、結(jié)構(gòu)、I/O設(shè)備、存儲器等等。此外,每個客戶期待處理各種事件,諸如處理異常、中斷和平臺事件(例如初始化(INIT)或者系統(tǒng)管理中斷(SMI))。
一些資源和事件被“給予特權(quán)”,因為它們必須由VMM管理,以便確保VM的正確操作并且保護(hù)VMM以及其他VM。對于被給予特權(quán)的資源和事件來說,所述VMM簡化(facilitate)客戶軟件所要求的功能,同時經(jīng)由這些資源和事件保持最終控制。簡化客戶軟件功能的動作就所述VMM而言可以包括各式各樣的活動。所述VMM的活動及其特征不限制本發(fā)明各種實施例的范圍。
當(dāng)客戶軟件訪問被給予特權(quán)的資源或者被給予特權(quán)的事件發(fā)生時,可以把控制傳遞給VMM。把控制從客戶軟件傳遞到所述VMM稱為VM退出。在簡化資源訪問或者適當(dāng)?shù)靥幚硎录?,所述VMM可以把控制返回至客戶軟件。把控制從VMM傳遞到客戶軟件稱為VM進(jìn)入。
所述虛擬機(jī)控制結(jié)構(gòu)(VMCS)是從體系結(jié)構(gòu)上定義的結(jié)構(gòu),該結(jié)構(gòu)例如包含客戶軟件的狀態(tài)、VMM的狀態(tài)、表明在哪些條件下VMM希望防止客戶執(zhí)行的控制信息以及涉及最新VM退出的信息。在當(dāng)前系統(tǒng)中,正確地匹配從體系結(jié)構(gòu)上定義的結(jié)構(gòu)的VMCS的表示位于存儲器中。物理機(jī)中的所述處理器讀取來自VMCS的信息以便確定VM的執(zhí)行環(huán)境并且約束其行為。
在客戶執(zhí)行期間,所述處理器查閱VMCS中的控制信息來確定哪些客戶動作(例如某指令的執(zhí)行、某異常的出現(xiàn)等)和事件(例如外部中斷)將引起VM退出。當(dāng)發(fā)生VM退出時,由客戶軟件使用的處理機(jī)狀態(tài)組件(component)被保存到VMCS,并且把VMM所要求的處理機(jī)狀態(tài)組件從所述VMCS中載入。當(dāng)發(fā)生VM退出時,使用本領(lǐng)域普通技術(shù)人員所公知的任意機(jī)制把控制傳遞至VMM 120。
當(dāng)發(fā)生VM進(jìn)入時,在VM退出時保存的處理機(jī)狀態(tài)(并且其也許已由VMM修改)被恢復(fù),并且把控制返回到客戶軟件。為了便于第一VM進(jìn)入至客戶,所述VMM把適當(dāng)?shù)目蛻魻顟B(tài)寫入VMCS。當(dāng)處理VM退出時,所述VMM可以改變VMCS中的客戶狀態(tài)。在一些實施例中,由單個物理機(jī)上的單個VMM管理支持多個VM的多個VMCS結(jié)構(gòu)。所述VMCS不需要包括如上所述的全部信息,并且可以包括有助于VM的控制的附加信息。在一些實施例中,VMCS可以包含很大數(shù)量的附加信息。
圖1舉例說明了依照本發(fā)明一個實施例的VM體系結(jié)構(gòu)100的圖表。所述VM體系結(jié)構(gòu)100包括基礎(chǔ)硬件平臺110(例如物理機(jī))。所述基礎(chǔ)硬件平臺110包括均有權(quán)訪問易失性和/或非易失性存儲器116的一個或多個處理器112。另外,在基礎(chǔ)硬件平臺中還存在其他元件,在圖1中沒有示出這些元件(例如,輸入輸出設(shè)備)。所述VM體系結(jié)構(gòu)100還包括VMM 120,其管理一個或多個VM(例如,130、140和150),其中每個VM(例如130、140和150)支持一個或多個OS(例如150、160和170)和應(yīng)用程序(例如152、162和172)。所述處理器112可以是能夠執(zhí)行軟件的任何類型的處理器,諸如微處理器、數(shù)字信號處理器、微控制器等等。所述處理器112可以包括微代碼、可編程邏輯或者硬編碼邏輯,用于實現(xiàn)本發(fā)明的方法實施例的執(zhí)行。
存儲器116可以是硬盤、軟盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、閃存、上述設(shè)備的任意組合,或者是可由處理器112讀取的任何其他類型的機(jī)器介質(zhì)。存儲器116可以存儲用于完成本發(fā)明的方法實施例的執(zhí)行的指令或者數(shù)據(jù)。所述存儲器116包括VMCS區(qū)域118,由處理器112用于維護(hù)所述VMCS的狀態(tài),以下將更詳細(xì)地描述。
所述處理器112可以是能夠執(zhí)行軟件的任何類型的處理器,諸如微處理器、數(shù)字信號處理器、微控制器等等。每個處理器112可以包括VMCS高速緩沖存儲器114,以下將更詳細(xì)地描述該VMCS高速緩沖存儲器114。所述處理器112可以包括微代碼、可編程邏輯或者硬編碼邏輯,用于完成依照本發(fā)明的方法實施例的執(zhí)行。
如果存在,那么VMCS高速緩沖存儲器114可用來臨時或者在其整個使用期限內(nèi)存儲某些或者所有VMCS狀態(tài)。所述VMCS高速緩沖存儲器114可以包括寄存器、高速緩沖存儲器或者任意其他存儲器。在圖1中,所述VMCS高速緩沖存儲器114是作為處理器112的一部分示出的,但是它可以駐留在裸露平臺硬件110的任意組件內(nèi)的處理器112的外部。在隨后的論述中,也把所述VMCS高速緩沖存儲器114稱為“處理器上的存儲空間”或者“處理器上的資源”,但是應(yīng)該理解的是,此存儲器可以駐留在不同于處理器112的平臺組件上。所述VMCS高速緩沖存儲器114不是實現(xiàn)本發(fā)明方法所嚴(yán)格必需的。
通常,VMM往往使用普通讀寫指令在存儲器中訪問VMCS。然而在圖1的VM體系結(jié)構(gòu)100中,所述VMM 120通過一組處理器提供的VMCS訪問指令119間接地訪問VMCS區(qū)域118。所述VMCS訪問指令119利用VMCS區(qū)域118以及任意可利用的VMCS高速緩沖存儲器114。在一個實施例中,VMCS訪問指令119包括正被訪問的VMCS組件的標(biāo)識符的操作數(shù)。所述標(biāo)識符此處被稱為“組件標(biāo)識符”。所述VMM 120不需要知道把任意特定的VMCS組件是存儲在VMCS區(qū)域118中還是存儲在VMCS高速緩沖存儲器114中。所述VM體系結(jié)構(gòu)100還規(guī)定如果把普通讀寫指令用于訪問VMCS區(qū)域118,那么可能發(fā)生不可預(yù)測的結(jié)果。VMCS訪問指令119的使用給予處理器112自由使用可利用的處理器上存儲器以及基于存儲器(例如VMCS區(qū)域118)的存儲空間,并且也允許各種性能優(yōu)化。
在一些實施例中,所述VMCS訪問指令119是通過處理器微體系結(jié)構(gòu)在VMCS區(qū)域118中的讀寫存儲器來實現(xiàn)的。在其他實施例中,所述VMCS訪問指令119可以讀和/或?qū)懱幚砥魃系馁Y源。所述VMM 120不必知道底層的物理機(jī)微體系結(jié)構(gòu)如何支持所述VMCS。以這種方式,所述底層處理器實現(xiàn)方式可以被改變,以便適應(yīng)性能、安全性、可靠性或者其他需要考慮的事項,而不會使所述VMM 120與底層處理器實現(xiàn)方式不兼容,并且可以為每個處理器實現(xiàn)方式開發(fā)自定義的VMCS實現(xiàn)方式。
以下例子舉例說明了不采用VMCS訪問指令119的VM體系結(jié)構(gòu)的缺點。如果處理器實現(xiàn)方式可以在處理器上的存儲空間中臨時高速緩存VMCS數(shù)據(jù),那么當(dāng)發(fā)生特定事件時,只能把數(shù)據(jù)寫入存儲器內(nèi)的VMCS區(qū)域118中。在高速緩存所述VMCS數(shù)據(jù)期間,對所述VMCS區(qū)域118的普通讀取將返回失效值(不正確的值)。對VMCS區(qū)域118的普通寫入不會更新處理器上的存儲空間中的數(shù)據(jù),除非所述處理器實現(xiàn)方式采取特殊的保護(hù)措施,以便把寫入內(nèi)容正確映射至存儲空間。在沒有使用VMCS訪問指令119的情況下,所述處理器實現(xiàn)方式必須保持VMCS區(qū)域與存儲在處理器上的資源中的任意臨時或者高速緩存的狀態(tài)一致;這樣會阻礙一定的性能優(yōu)化、VM體系結(jié)構(gòu)的擴(kuò)展等,如下面進(jìn)一步討論的那樣。與普通存儲器操作相比,如果適當(dāng)?shù)脑?,VMCS讀指令返回存儲在處理器上的值,并且VMCS寫入指令正確地更新VMCS狀態(tài),而無論其位于什么地方。下面將詳細(xì)說明這些指令。
為了簡化所述VMCS訪問指令119,VMCS的每個元件由從體系結(jié)構(gòu)上定義的常數(shù)來標(biāo)識,該常數(shù)識別VMCS的組件;此處將這些恒定值稱為“組件標(biāo)識符”。在一個實施例中,所述組件標(biāo)識符是16位值,但是在其他實施例中,該值可大可小。
在隨后的論述中,使用VMCS中的多個字段來描述本發(fā)明的各種實施例。例如,GUEST_EIP是包含客戶軟件的指令指針的字段;VM_CONTROLS是包含控制VM執(zhí)行環(huán)境的位的字段等。對各種字段的語法和語義的理解不是理解此處所描述的本發(fā)明所必需的。另外,所述字段被給予特定的從體系結(jié)構(gòu)上定義的組件標(biāo)識符。所使用的特定字段以及在這些例子中的組件標(biāo)識符值不是以任何方式來限制本發(fā)明的應(yīng)用。
如下是使用VMCS訪問指令119的優(yōu)點的示例說明。認(rèn)為處理器實現(xiàn)方式可以根據(jù)處理器實現(xiàn)方式的不同來改變存儲在VMCS區(qū)域118中的數(shù)據(jù)的布局。例如,第一處理器實現(xiàn)方式可以存儲起始于VMCS區(qū)域的第28個字節(jié)處的VMCS區(qū)域的GURST_EIP字段。第二處理器實現(xiàn)方式可以存儲在VMCS區(qū)域中的第16個字節(jié)處的相同的VMCS字段。盡管VMCS區(qū)域118的布局已經(jīng)改變,但是為初始實現(xiàn)方式寫入并且使用所述VMCS訪問指令119的VMM 120仍然對處理器112的后者實現(xiàn)方式起作用。因為在兩個處理器實現(xiàn)方式中所述VMCS訪問指令的實現(xiàn)方式包括所使用的VMCS區(qū)域118的布局并且適當(dāng)?shù)卦L問必要的數(shù)據(jù),所以實現(xiàn)了兼容性。
在一些實施例中,為了簡化所述VMCS訪問指令119,可以需要所述VMM 120留出存儲器區(qū)域(例如VMCS區(qū)域118)來收納所有或者部分存儲空間,該存儲空間是處理器112為VMCS所要求的。在本發(fā)明的這些實施例中,處理器提供的指令將允許VMM 120把VMCS區(qū)域118的指針或者地址提供給處理器112。在一個實施例中,所述地址是物理地址。其他實施例可以使用虛擬或者線性地址。此后,把使用此指令提供給處理器112的所述地址稱為VMCS指針。此指令通知處理器112 VMCS區(qū)域224的位置。此新的指令使VMCS有效,所述VMCS可以通過處理器112全部或部分存儲在由VMCS指針指出VMCS區(qū)域118中。
另一實施例可以提供這樣的機(jī)制,其允許VMM 120發(fā)現(xiàn)必須保留給VMCS區(qū)域118的存儲器116的數(shù)量。例如,在英特爾奔騰IV的處理器指令基架構(gòu)(ISA)中(此處稱為IA-32ISA),能夠提供包括所需要的VMCS區(qū)域大小的模式特定寄存器(MSR)。另一實施例提供了返回所需要的VMCS區(qū)域大小的指令??衫玫娜我馄渌麢C(jī)制可用來把此信息傳送至VMM。以這種方式,所需要的存儲器區(qū)域118的大小可以根據(jù)處理器實現(xiàn)方式的不同而改變,而不會強(qiáng)迫重新設(shè)計或者再編譯所述VMM 120。
例如,假如第一處理器112需要64字節(jié)用于存儲器116中的VMCS區(qū)域118。把此要求報告給VMM 120,如上所述。使用如上所述的機(jī)制來確定把多少存儲器116分配給VMCS區(qū)域118,寫入VMM 120以便在此處理器實現(xiàn)方式上運(yùn)行。創(chuàng)建第二處理器實現(xiàn)方式,其現(xiàn)在需要128字節(jié)用于存儲器116中的VMCS存儲空間。為第一處理器實現(xiàn)方式寫入的VMM120將在第二實現(xiàn)方式上正確地操作,這是因為它將分配正確數(shù)量的存儲空間給VMCS區(qū)域118。
當(dāng)所述VMCS指針有效時,所述處理器112可以把所有或者部分VMCS存儲在VMCS區(qū)域118中,或者可替換地,存儲在駐留在處理器112上的資源或者任意其他可利用的位置中(即,存儲在VMCS高速緩沖存儲器114中)。另外,所述處理器112可以把非體系結(jié)構(gòu)的狀態(tài)信息存儲在VMCS區(qū)域118中或者存儲在處理器上的資源中。例如,所述處理器112可以存儲臨時變量、與VM(例如130、140或者150)相關(guān)聯(lián)的微體系結(jié)構(gòu)狀態(tài)、所述VM(例如130、140或者150)的狀態(tài)指示符等等。當(dāng)所述VMCS指針是有效的時,軟件不使用普通的存儲器讀和寫來訪問VMCS區(qū)域118。此限制確保與所述VMCS相關(guān)聯(lián)的VMM 120和VM(例如130、140或者150)的操作的正確性。
另一處理器提供的指令可以把在處理器上的資源中高速緩存的任意VMCS數(shù)據(jù)寫入VMCS區(qū)域118,使處理器上的存儲空間中的適當(dāng)數(shù)據(jù)無效,并且此外使所述VMCS指針失效。一個實施例可以例如通過把狀態(tài)指示符寫入VMCS區(qū)域來把所述VMCS標(biāo)記為無效,所述狀態(tài)指示符是從體系結(jié)構(gòu)上或者非體系結(jié)構(gòu)上定義的。另一實施例可以僅僅轉(zhuǎn)儲清除處理器上的存儲空間并且使VMCS的處理器上的狀態(tài)失效(無效)。在VMM 120試圖移動VMCS區(qū)域118的內(nèi)容之前執(zhí)行此指令。當(dāng)VMM 120試圖移動VMCS區(qū)域118時,它可以利用單個數(shù)據(jù)塊移動來執(zhí)行,這是因為所述VMCS格式被維護(hù)并且只有該處理器實現(xiàn)方式知道。另外,因為所述VMM知道(具有基于這里描述的機(jī)制分配的存儲器的)VMCS區(qū)域的大小,所以這種塊移動是可能的。所述VMCS的個別元件不必由VMM 120識別出。
在一些實施例中,專用于特定實施例的機(jī)制可以允許VMM 120識別建立特定的VMCS的處理器實現(xiàn)方式。所述VMM 120可以使用此處理器識別結(jié)果來確定所述VMCS是否與另一處理器實現(xiàn)方式兼容。在一個實施例中,此標(biāo)識符位于VMCS區(qū)域118的最初4個字節(jié)中,并且例如依照MSR或者通過任意其他方法被報告給VMM 120。在第一次使用VMCS之前,需要所述VMM 120把此標(biāo)識符寫到VMCS中的適當(dāng)位置處,并且因此可以在體系結(jié)構(gòu)上定義VMCS區(qū)域118的部分的格式。在一些實施例中,所有實現(xiàn)方式定義VMCS區(qū)域118的相同體系結(jié)構(gòu)上定義的部分是合乎需要的。
如果先前的實施例留下新定義的區(qū)域沒有定義,其他實施例可以定義VMCS區(qū)域118的新的在體系結(jié)構(gòu)上定義的部分,并且最新定義的部分不妨礙沒有明確使用它們的VMM 120的操作。以這種方式,對這些實施例的任意VMM 120寫入將在更新的實現(xiàn)方式上操作。
在一些實施例中,所述處理器提供的指令119包括多個不同的指令●VMCS載入指針指令具有作為操作數(shù)的存儲器地址。此地址是處理器112可以存儲VMCS的位置(例如,VMCS區(qū)域118的開始)。通過指令使與此地址相關(guān)聯(lián)的所述VMCS有效。此指令還允許激活與VMCS相關(guān)聯(lián)并且由其控制的VM(例如130、140或者150)并且允許使用如下所述的各種其他指令。在一個實施例中,所述地址是物理地址。其他實施例可以使用虛擬或者線性地址。
●VMCS存儲指針指令把指向有效VMCS區(qū)域118的指針存儲到(例如處理器112上的)寄存器或者(例如存儲器116中的)存儲器單元中;這種存儲單元的位置可以作為操作數(shù)提供給指令。
●VMCS讀指令把所述VMCS的組件讀取到(例如處理器112上的)寄存器或者(例如存儲器116中的)存儲器單元中。所述指令可以包括多個參數(shù),該參數(shù)包括表明從VMCS被讀取的VMCS組件的組件標(biāo)識符以及將要存儲的從所述VMCS中讀取的數(shù)據(jù)的位置(例如寄存器或者存儲器單元)。
●VMCS寫指令載入來自于(例如處理器112上的)寄存器或者(例如存儲器116中的)存儲器單元中的所述VMCS的組件。就像所述VMCS讀指令那樣,VMCS寫指令可以包括針對VMCS組件標(biāo)識符的操作數(shù)。另外,它可以包括描述要被寫入所述VMCS的數(shù)據(jù)的位置(例如寄存器或者存儲器單元)的操作數(shù)。
●VMCS清除指令確保與所述VMCS相關(guān)聯(lián)的所有處理器上的存儲空間的內(nèi)容被存回VMCS區(qū)域118,使處理器上的資源中的數(shù)據(jù)無效并且此外使VMCS指針失效。此指令可以在沒有操作數(shù)的情況下操作,轉(zhuǎn)儲清除并且使當(dāng)前有效的VMCS指針失效,或者在可替代的實施例中,它可以把用于轉(zhuǎn)儲清除和去活所需的VMCS指針作為操作數(shù)。在一個實施例中,VMCS清除指令可以通過把狀態(tài)指示符寫入VMCS區(qū)域來把所述VMCS標(biāo)記為無效,所述狀態(tài)指示符是從體系結(jié)構(gòu)上或者非體系結(jié)構(gòu)上定義的。
●最后,VMCS輸入指令通過依照VM體系結(jié)構(gòu)100的語義和所述VMCS的內(nèi)容載入處理機(jī)狀態(tài),來把控制轉(zhuǎn)遞至(即VM進(jìn)入)由有效VMCS定義的VM(例如130、140或者150)中??商鎿Q地,所述指令可以包括具有待輸入的VMCS指針(或者所述指針的位置)的自變量。
由于可以提供各種不同的或者替代的指令119,所以如上所述的處理器提供的指令119只表示一個實施例。例如,在一些實施例中,所述VMCS清除指令可以在不使VMCS指針失效的情況下把來自于處理器上的存儲空間的VMCS數(shù)據(jù)復(fù)制到所述VMCS區(qū)域118。操作數(shù)可以是顯式的或者隱式的??梢蕴峁┢渌闹噶?19(或者上面提出的指令119的變形)等等,所述指令作用于處理器112中所有有效的VMCS指針。
如本領(lǐng)域普通技術(shù)人員所理解的那樣,對存儲器中的VMCS而言,常規(guī)的VM體系結(jié)構(gòu)具有靜態(tài)的、體系結(jié)構(gòu)上定義的形式。這限制了處理器實現(xiàn)方式擴(kuò)充或者改變VMCS的大小、組織或者內(nèi)容的能力,這是因為變成所述VMCS往往需要相應(yīng)地變成所述VMM實現(xiàn)方式。另外,由于常規(guī)的VMM使用普通存儲器讀和寫操作來訪問常規(guī)的VMCS,所以所述處理器實現(xiàn)方式在把VMCS數(shù)據(jù)的存儲空間分配給處理器上的資源方面具有較小的靈活性。例如,在VM退出至VMM期間,因為所述處理器難以檢測到所述VMM是否對存儲器中VMCS的對應(yīng)區(qū)域做出修改,所以所述處理器不能在處理器上的資源中高速緩存某部分VMCS。這樣不能確定處理器上的資源之間的一致,并且存儲器內(nèi)的VMCS圖像使錯誤和一致性檢驗變復(fù)雜,其中所述一致性檢驗在跟隨VM進(jìn)入執(zhí)行客戶軟件之前需要執(zhí)行。
然而,依照本發(fā)明的各種實施例,VMM 120不直接使用普通存儲器讀和寫操作來訪問VMCS存儲器圖像,不使用存儲器116中VMCS的預(yù)先定義的格式,并且確定在運(yùn)行時所述VMCS在存儲器116中所需存儲空間的大小。
圖2中舉例說明了如上所述的VMCS存儲空間存儲需求的運(yùn)行時綁定和處理器提供的指令119的使用。圖2通過VMM中的各種活動舉例說明了VMCS指針的狀態(tài)。處理在塊210開始。這時,沒有有效的VMCS指針。在塊210,所述VMM確定處理器用于支持所述VMCS所需的存儲器區(qū)域的大小。如上所述,這樣可以例如通過讀取所指定的MSR來實現(xiàn)。
在塊220,所述VMM分配所需要的存儲器;所述VMCS指針仍是無效的。雖然最佳的是,此存儲器區(qū)域在物理存儲器內(nèi)是連續(xù)的,但是對于本領(lǐng)域普通技術(shù)人員顯而易見的是,依照此實施例這種要求不是必須的。所述VMM使用VMCS載入指針指令,通過把VMCS區(qū)域的地址提供給處理器來激活所述VMCS,如上所述(進(jìn)入塊230)。在此刻,把所述VMCS指針稱作工作中VMCS指針。在所述VMCS指針有效之后,所述VMM可以使用適當(dāng)?shù)腣MCS訪問指令讀和寫VMCS的組件(圖1中作為119示出并且在圖2中作為232和234示出)。這些讀取或者寫操作之后,所述VMCS指針保持有效。
當(dāng)所述VMM希望允許客戶執(zhí)行時,它使用VM進(jìn)入指令來把客戶加載到機(jī)器中(進(jìn)入塊240)。在VM進(jìn)入之后,所述VMCS指針仍是有效的,但是現(xiàn)在起控制VMCS指針的作用,所述指針由處理器使用以便確定客戶執(zhí)行環(huán)境和行為。
當(dāng)VM退出發(fā)生時,控制返回到所述VMM(從塊240返回到塊230)。所述VMCS指針保持有效,再次作為工作中VMCS指針;如適當(dāng),所述VMM可以讀和寫VMCS字段(箭頭232和234),并且可以使用VM輸入指令再次輸入客戶(返回到塊240)。可替換地,所述VMM可以使用所述VM清除指令來使VMCS指針失效,在那時,所述VMCS指針成為無效的(返回到狀態(tài)220)。
應(yīng)注意的是,由于所述VMM可以及時在任意特定時刻執(zhí)行各種操作(例如VM讀取、VM寫入、VM輸入等),所以方法200不局限于任意特定的操作順序。另外,在使用方法200的給定的處理器內(nèi)的在任意特定時刻,單個VMCS指針或者各種VMCS指針可以是有效或者無效的。在一些實施例中,在任意給定處理器內(nèi)在任意特定時間點,多個VMCS可以是有效的。以這種方式,在不執(zhí)行VMCS清除指令的情況下,VMM可以在VM之間切換,由此改善VM的處理效率。
在一個實施例中,附加的處理器提供的指令可以向VMM提供查詢和獲得并發(fā)或并行VMCS的數(shù)量的能力,該VMCS在任意特定時間點都可以是有效的。其他實施例可以提供MSR,所述VMM可以讀取該MSR以獲得此信息。在可替代的實施例中,同時有效的VMCS指針的數(shù)量(由此例如可以被高速緩存在處理器上的資源中)未必是VMM軟件可直接看到的,當(dāng)VMM激活比處理器可以存儲在處理器上的資源中的更多的VMCS指針時,所述處理器實現(xiàn)方式自動地處理溢出條件。在該情況下,所述處理器可以自動地把適當(dāng)?shù)腣MCS數(shù)據(jù)轉(zhuǎn)儲清除至所關(guān)聯(lián)的存儲器中的VMCS區(qū)域。在一些實施例中,在如上依照圖1論述的多個處理器提供的指令內(nèi),可以要求顯式的VMCS指針自變量。
本發(fā)明的實施例消除了讓軟件管理與管理VMCS數(shù)據(jù)的處理器上和存儲器中的存儲空間相關(guān)聯(lián)的細(xì)節(jié)的要求。由此,所述VMM在高層抽象處在其控制下管理每個VM。上述在圖1和圖2中所論述的那樣,這種策略允許處理器提供的指令管理VMCS存儲空間的細(xì)節(jié),以致VM執(zhí)行更加有效,并且可以在不改變現(xiàn)有VMM軟件的情況下、通過添加或修改所述處理器提供的指令來被最佳地改變或者擴(kuò)展。
圖3是在本發(fā)明的一個實施例中描述VMCS讀/寫指令的使用的圖表。示出了體系結(jié)構(gòu)VMCS格式305,不過它不是由VMM明確使用的;相反,所述VMM利用對VMCS組件標(biāo)識符、字段大小和字段語義的認(rèn)識來編程,但是不依照存儲器中VMCS存儲空間的形式的結(jié)構(gòu)限定來編程。當(dāng)VMM希望訪問體系結(jié)構(gòu)VMCS 305中的字段時,它執(zhí)行VMCS讀取(或者如適當(dāng)則執(zhí)行VMCS寫入;為了舉例說明的目的,圖3中只示出了VMCS讀取)。VMCS讀指令310的參數(shù)是組件標(biāo)識符,該組件標(biāo)識符是識別VMCS組件的體系結(jié)構(gòu)上定義的常數(shù)。所述處理器使用所述組件標(biāo)識符來如恰當(dāng)?shù)脑捠褂糜成浜瘮?shù)320映射至處理器(例如VMCS高速緩沖存儲器322)上的資源或者存儲器(例如VMCS區(qū)域324)內(nèi)的資源,以便訪問代表所述VMM的VMCS數(shù)據(jù)。如果存儲在VMCS區(qū)域或者VMCS高速緩沖存儲器中的數(shù)據(jù)不是體系結(jié)構(gòu)上定義的格式,那么使用重新格式化函數(shù)323把所述數(shù)據(jù)適當(dāng)?shù)刂匦赂袷交员闫ヅ洹?br>
圖3中示出了兩個實例VMCS訪問指令。雖然這兩個例子用于VMCS讀指令,不過如下面就圖5的論述中詳細(xì)說明的那樣,類似的活動集也發(fā)生在VMCS寫指令上。
參考圖3,第一實例VMCS讀取指令310訪問所述GUEST_EIP組件,其具有體系結(jié)構(gòu)上定義的編碼0×4032。所述處理器實現(xiàn)方式把這種組件的數(shù)據(jù)保持在VMCS區(qū)域324中,如映射函數(shù)320所確定的那樣。所述處理器使用存儲器讀操作330從VMCS區(qū)域324中讀取適當(dāng)?shù)慕M件數(shù)據(jù)。所述讀操作330了解組件在VMCS區(qū)域324中的位置(此外,如映射函數(shù)320所確定的那樣;在此例子中,它位于VMCS區(qū)域中的偏移12處)。然后,所述處理器把數(shù)據(jù)值返回至所述VMM(如箭頭331所示)。
第二實例VMCS讀指令350訪問所述VM_CONTROLS組件,其具有體系結(jié)構(gòu)上定義的編碼0×1076。這種處理器實現(xiàn)方式把這種組件保持在所述VMCS高速緩沖存儲器322中(如映射函數(shù)320所確定的那樣)。所述處理器訪問所述VMCS高速緩沖存儲器322以便檢索數(shù)據(jù)。在該情況下,把所述數(shù)據(jù)以不與VM_CONTROLS組件的結(jié)構(gòu)限定匹配的形式存儲在處理器上(例如,把數(shù)據(jù)作為重新排序的8字節(jié)對象存儲在處理器上,而VM_CONTROLS字段的結(jié)構(gòu)限定是4字節(jié)對象)。在把數(shù)據(jù)返回至VMM之前,所述處理器使用重新格式化函數(shù)323重新格式化所述VM_CONTROLS數(shù)據(jù)以便匹配所述字段的結(jié)構(gòu)限定。把此重新格式化的值(即,匹配所請求的組件的結(jié)構(gòu)限定的值)返回到所述VMM(顯示為箭頭326)。
使用這些VMCS訪問指令,當(dāng)從存儲器高速緩存至處理器上的資源時,不需要管理每個都由獨立的VMCS標(biāo)識的一個或多個VM的VMM來管理所述存儲空間,該存儲空間是與VMCS相關(guān)聯(lián)的。另外,所述VMM不需要管理改變處理器實現(xiàn)方式的細(xì)節(jié),諸如存儲器中或者處理器上的資源中的數(shù)據(jù)的格式化。由此,處理器開發(fā)人員可以改變或者修改VMCS訪問指令,以便改善VM性能并且擴(kuò)展VM能力,而不會對現(xiàn)有VMM或者VM的操作帶來負(fù)面影響。然而,現(xiàn)有VMM和VM可以受益于這種變化,所述變化諸如是性能、可靠性、可縮放性或者其他改善,這些給VM體系結(jié)構(gòu)帶來了新的實現(xiàn)方式。
圖4是依照本發(fā)明一個實施例的用于執(zhí)行VMCS讀指令的方法400的流程圖。在410,從VMM接收VMCS讀請求。在420,從所述VMCS讀請求獲取VMCS組件標(biāo)識符。所述組件標(biāo)識符是體系結(jié)構(gòu)上定義的常數(shù),該常數(shù)識別VMCS的所要求的組件。
在430,處理器檢查所述組件標(biāo)識符,以便確定與所述組件標(biāo)識符相關(guān)聯(lián)的VMCS組件是否在存儲器中。如果所述VMCS組件是存儲在存儲器中,那么在440計算所述存儲器位置的地址,并且在450獲取與VMCS組件相關(guān)聯(lián)的VMCS數(shù)據(jù)。然而,如果所述VMCS組件沒有存儲在存儲器中,那么在460,所述處理器從處理器上的存儲空間中獲取與所述VMCS組件相關(guān)聯(lián)VMCS數(shù)據(jù)。以這種方式,所述處理器使用所述組件標(biāo)識符來把讀請求映射至VMCS組件存儲空間,而不管其是駐留在存儲器中還是處理器上的存儲空間中。
在470,通過所述處理器做出檢驗以便確定在把VMCS數(shù)據(jù)返回至所述VMM以前是否需要重新格式化VMCS數(shù)據(jù)。如果所述VMCS數(shù)據(jù)以不同于VMCS組件的體系結(jié)構(gòu)上定義的數(shù)據(jù)格式的格式來(要么在VMCS區(qū)域中或者在處理器上的資源中)存儲(即,所述VMCS組件是以不同于體系結(jié)構(gòu)上定義的格式的實現(xiàn)方式特定的數(shù)據(jù)格式存儲的),那么在480,訪問重新格式化函數(shù)以便把實現(xiàn)方式特定的VMCS數(shù)據(jù)翻譯為體系結(jié)構(gòu)上定義的數(shù)據(jù)格式。如果所述VMCS數(shù)據(jù)以VMCS組件的體系結(jié)構(gòu)上定義的數(shù)據(jù)格式來(或者在VMCS區(qū)域中或者在處理器上的資源中)存儲,那么不需要發(fā)生對VMCS數(shù)據(jù)的重新格式化函數(shù)或者翻譯。最后在490,把(現(xiàn)在為體系結(jié)構(gòu)上定義的數(shù)據(jù)格式的)所述VMCS數(shù)據(jù)返回到所述VMM。
圖5是依照本發(fā)明一個實施例的用于執(zhí)行VMCS寫指令的方法500的流程圖。在505,處理器從VMM接收VMCS寫入請求。所述處理器獲取作為寫入請求的操作數(shù)之一的組件標(biāo)識符,如在510中所述。此外,在515,所述處理器獲取希望被寫入所述VMCS的寫數(shù)據(jù)作為另一操作數(shù)。此寫數(shù)據(jù)具有被寫入的VMCS組件的體系結(jié)構(gòu)上定義的數(shù)據(jù)格式。
在520,做出檢驗以便確定所述VMCS組件是否通過所述處理器以體系結(jié)構(gòu)上定義的數(shù)據(jù)格式來(在VMCS區(qū)域中或者在處理器上資源中)存儲。據(jù)此,如果所述VMCS組件沒有以體系結(jié)構(gòu)上定義的數(shù)據(jù)格式來存儲,那么在525,執(zhí)行數(shù)據(jù)的適當(dāng)?shù)闹匦赂袷交?,以便使所述?shù)據(jù)具有適當(dāng)?shù)膶崿F(xiàn)方式特定的數(shù)據(jù)格式,該數(shù)據(jù)格式與被訪問的VMCS組件相關(guān)聯(lián)。存儲數(shù)據(jù)的格式可以和體系結(jié)構(gòu)上定義的格式一致,或者它可以在大小或組織方面不同。
接下來在530,執(zhí)行另一檢驗以便確定處理器存儲所述VMCS組件的位置。使用所述組件標(biāo)識符,所述處理器確定所述VMCS組件的存儲位置。如果所述存儲位置位于存儲器中,那么在535,計算所述存儲器地址,并且在540,把寫數(shù)據(jù)寫入所述存儲位置。然而,如果所述存儲位置不在存儲器中,那么在545,確定處理器上的存儲空間中的適當(dāng)位置,并且把寫數(shù)據(jù)寫入所述處理器上的存儲空間。寫入所述存儲空間的數(shù)據(jù)具有實現(xiàn)方式特定的數(shù)據(jù)格式,該數(shù)據(jù)格式可以與體系結(jié)構(gòu)上定義的格式相同或者不同,這取決于所查詢的所述VMCS組件、所述處理器實現(xiàn)方式并且在一些實施例中,這取決于所查詢的組件當(dāng)前是存儲在處理器上的資源中還是存儲在所述VMCS區(qū)域中。
用于確定特定VMCS組件的存儲位置并且用于確定所述VMCS組件是否是由處理器以體系結(jié)構(gòu)上定義的數(shù)據(jù)格式來存儲的過程400和500中使用的機(jī)制是實現(xiàn)方式特定的。在一個實施例中,所述處理器使用由所述組件標(biāo)識符索引的查找表。另外,應(yīng)注意的是,如果多個VMCS指針可以同時有效,那么這些確定可以取決于VMCS正被訪問。
當(dāng)閱讀和領(lǐng)會此公開內(nèi)容時,本領(lǐng)域普通技術(shù)人員將理解這樣的方式,其中本發(fā)明可以在基于計算機(jī)的系統(tǒng)中實現(xiàn),以便執(zhí)行此處公開的方法。本發(fā)明可以使用(諸如在通用計算機(jī)系統(tǒng)上或者專用機(jī)上運(yùn)行的)軟件、硬件(例如電路、專用邏輯、可編程邏輯、微代碼等)或者硬件和軟件的組合來實現(xiàn)。
應(yīng)該理解的是,上述描述是例證性的,而不是限制性的。當(dāng)回故上述描述時,許多其他的實施例對于本領(lǐng)域中普通技術(shù)人員是顯而易見。因此,本發(fā)明的實施例的范圍應(yīng)該參照所附權(quán)利要求以及與被授予這種權(quán)利要求等效的全部范圍來限定。
需要強(qiáng)調(diào)的是,遵照37 C.F.R.§1.72(b)的規(guī)定提供了摘要,該規(guī)定要求摘要允許讀者快速確定技術(shù)公開的特性和要旨。提交所述摘要是基于這樣的認(rèn)識,即不會使用它來解釋或者限制權(quán)利要求的范圍或者意義。
在上述實施方式的描述中,為了簡化公開內(nèi)容,在單個實施例中集合了各種特征。所公開的這種方法不應(yīng)該被解釋為反映這樣的意圖,即所要求保護(hù)的本發(fā)明的實施例要求比在每個權(quán)利要求中清楚講述的特征更多的特征。相反,如隨后權(quán)利要求書反映的那樣,發(fā)明的主題在于少于單個公開的實施例的所有特征。由此如下的權(quán)利要求被并入所述實施方式的描述中,每個權(quán)利要求堅持其自身作為獨立的示例性實施例。
權(quán)利要求
1.一種用于激活虛擬機(jī)控制結(jié)構(gòu)(VMCS)的方法由虛擬機(jī)監(jiān)視器(VMM)確定VMCS所需的存儲空間大小;并且向處理器提供指向存儲器區(qū)域的指針,所述存儲器區(qū)域至少與VMCS所需的存儲空間大小一樣大。
2.如權(quán)利要求1所述的方法,其中在確定VMCS所需的存儲空間大小時,所需的存儲空間大小是通過對包含VMCS所需存儲空間大小的處理機(jī)寄存器執(zhí)行至少一個讀指令并且執(zhí)行提供VMCS所需存儲空間大小的指令來確定的。
3.如權(quán)利要求1所述的方法,其中在向處理器提供指針時,通過執(zhí)行VMCS指針載入指令來提供該指針。
4.如權(quán)利要求3所述的方法,其中在執(zhí)行VMCS指針載入指令時,所述VMCS指針載入指令包括至少與VMCS所需存儲空間大小一樣大的存儲器區(qū)域的指針地址,并且將該指針地址作為操作數(shù),所述操作數(shù)是VMCS指針載入指令的顯式操作數(shù)和VMCS指針載入指令的隱式操作數(shù)中的至少一個。
5.如權(quán)利要求1所述的方法,還包括在向處理器提供指向存儲器區(qū)域的指針之前,分配所述存儲器區(qū)域。
6.一種用于訪問虛擬機(jī)控制結(jié)構(gòu)(VMCS)的方法,包括如下步驟由虛擬機(jī)監(jiān)視器(VMM)執(zhí)行VMCS訪問指令;并且由處理器通過使用與該VMCS訪問指令相關(guān)聯(lián)的VMCS組件標(biāo)識符來訪問VMCS組件。
7.如權(quán)利要求6所述的方法,其中在訪問所述VMCS組件時,所述VMCS組件標(biāo)識符是VMCS訪問指令的顯式操作數(shù)和VMCS訪問指令的隱式操作數(shù)中的至少一個。
8.如權(quán)利要求6所述的方法,其中在執(zhí)行所述VMCS訪問指令時,所述VMCS訪問指令是從VMCS組件讀的讀指令和向VMCS組件寫的寫指令中的至少一個。
9.如權(quán)利要求8所述的方法,其中在執(zhí)行所述VMCS訪問指令時,所述VMCS訪問指令是向VMCS組件寫的寫指令,并且所述VMCS訪問指令包括作為操作數(shù)的寫數(shù)據(jù)值。
10.如權(quán)利要求9所述的方法,其中在執(zhí)行所述VMCS訪問指令時,所述寫數(shù)據(jù)值具有體系結(jié)構(gòu)上定義的數(shù)據(jù)格式。
11.如權(quán)利要求9所述的方法,還包括把所述寫數(shù)據(jù)值寫入所述VMCS組件。
12.如權(quán)利要求6所述的方法,還包括確定所述VMCS組件標(biāo)識符與駐留在存儲器中的所述VMCS組件相關(guān)聯(lián);計算駐留在存儲器中的所述VMCS組件的存儲器位置;以及訪問駐留在存儲器中的所述VMCS組件。
13.如權(quán)利要求6所述的方法,還包括確定所述VMCS組件標(biāo)識符與駐留在處理器上存儲空間中的所述VMCS組件相關(guān)聯(lián);并且訪問駐留在處理器上存儲空間中的所述VMCS組件。
14.如權(quán)利要求6所述的方法,其中在執(zhí)行所述VMCS訪問指令時,所述VMCS訪問指令是從所述VMCS組件讀的讀指令,并且其中在訪問所述VMCS組件中還包括讀取與所述VMCS組件相關(guān)聯(lián)的數(shù)據(jù),并且把與所述VMCS組件相關(guān)聯(lián)的數(shù)據(jù)返回到VMM。
15.如權(quán)利要求14所述的方法,其中在把與所述VMCS組件相關(guān)聯(lián)的數(shù)據(jù)返回到所述VMM時,返回所述數(shù)據(jù)包括重新格式化與所述VMCS組件相關(guān)聯(lián)的數(shù)據(jù),以便與所述VMCS組件的體系結(jié)構(gòu)上定義的數(shù)據(jù)格式相匹配,產(chǎn)生返回數(shù)據(jù)值并且把所述返回數(shù)據(jù)值返回至所述VMM。
16.如權(quán)利要求14所述的方法,其中在把與所述VMCS組件相關(guān)聯(lián)的數(shù)據(jù)返回到所述VMM時,所述數(shù)據(jù)具有這樣的格式,所述格式是與所述VMCS組件的體系結(jié)構(gòu)上定義的數(shù)據(jù)格式相同的格式和與所述VMCS組件的體系結(jié)構(gòu)上定義的數(shù)據(jù)格式不同的格式中的至少一個。
17.如權(quán)利要求16所述的方法,還包括重新格式化所述寫數(shù)據(jù)以便與所述VMCS組件的實現(xiàn)方式特定的數(shù)據(jù)格式匹配,由此產(chǎn)生重新格式化的寫數(shù)據(jù)值;并且把所述重新格式化的寫數(shù)據(jù)值寫入到所述VMCS組件。
18.如權(quán)利要求17所述的方法,其中在重新格式化寫數(shù)據(jù)的步驟中,所述VMCS組件的實現(xiàn)方式特定的數(shù)據(jù)格式是與所述VMCS組件的體系結(jié)構(gòu)上定義的格式相同的格式和與所述VMCS組件的體系結(jié)構(gòu)上定義的格式不同的格式中的至少一個。
19.一種虛擬機(jī)(VM)控制系統(tǒng),包括虛擬機(jī)監(jiān)視器(VMM),通過訪問至少一個虛擬機(jī)控制結(jié)構(gòu)(VMCS)來控制至少一個虛擬機(jī)(VM),其中至少一個VM中的每個均由至少一個VMCS中的一個來控制;可以訪問存儲空間的處理器,其中所述存儲空間包括與所述VMCS相關(guān)聯(lián)的存儲位置;并且其中所述VMM使用VMCS訪問指令來訪問每個VMCS。
20.如權(quán)利要求19所述的系統(tǒng),其中所述存儲空間由存儲器和高速緩沖存儲器中的至少一個組成。
21.如權(quán)利要求19所述的系統(tǒng),其中每個訪問指令包括VMCS組件標(biāo)識符,所述VMCS組件標(biāo)識符由所述處理器用來確定正被訪問的VMCS之一內(nèi)的VMCS組件,并且用來確定與所述VMCS組件相關(guān)聯(lián)的存儲位置。
22.一種物品,包括機(jī)器可訪問的介質(zhì),所述介質(zhì)具有相關(guān)聯(lián)的指令,其中當(dāng)訪問所述指令時,導(dǎo)致包括至少一個組件的機(jī)器執(zhí)行如下步驟識別與訪問指令相關(guān)聯(lián)的存儲位置,所述訪問指令是從虛擬機(jī)監(jiān)視器(VMM)中接收到的;確定從所述VMM中接收到的訪問指令的類型;確定與滿足所述訪問指令的數(shù)據(jù)相關(guān)聯(lián)的數(shù)據(jù)格式;并且如果所述數(shù)據(jù)不具有體系結(jié)構(gòu)上定義的數(shù)據(jù)格式,那么在處理所述訪問指令之前,重新格式化所述數(shù)據(jù)使其具有體系結(jié)構(gòu)上定義的數(shù)據(jù)格式。
23.如權(quán)利要求22所述的物品,其中在識別時,所述訪問指令包括組件標(biāo)識符。
24.如權(quán)利要求22所述的物品,其中在識別時,所述組件標(biāo)識符用于映射所述VMM訪問指令至所述存儲位置,該存儲位置是位于處理器上或者存儲器中的位置中的至少一個。
25.如權(quán)利要求22所述的物品,其中在確定訪問指令類型時,把所述類型與讀指令和寫指令中的至少一個相關(guān)聯(lián)。
全文摘要
提供用于控制虛擬機(jī)(VM)的執(zhí)行的方法和系統(tǒng)。VM監(jiān)視器(VMM)通過訪問傳遞至處理器的指令間接地訪問VM控制結(jié)構(gòu)(VMCS)。在一個實施例中,所述訪問指令包括VMCS組件標(biāo)識符,所述VMCS組件標(biāo)識符由所述處理器使用以確定VMCS組件的適當(dāng)存儲位置。所述處理器在處理器存儲空間內(nèi)或者在存儲器內(nèi)識別VMCS組件的適當(dāng)?shù)拇鎯ξ恢谩?br>
文檔編號G06F9/455GK1833225SQ200380106627
公開日2006年9月13日 申請日期2003年11月12日 優(yōu)先權(quán)日2002年12月17日
發(fā)明者G·奈格爾, E·科塔-羅布爾斯, S·耶亞辛, A·卡吉, M·科祖赫, R·烏利希, E·博利恩, S·羅杰斯, L·史密斯三世, S·貝內(nèi)特, A·格盧 申請人:英特爾公司