專利名稱:處理與虛擬機(jī)體系結(jié)構(gòu)中客戶軟件的操作相關(guān)聯(lián)的故障的制作方法
技術(shù)領(lǐng)域:
一般來說,本發(fā)明涉及虛擬機(jī),更具體來說,涉及處理與虛擬機(jī)體系結(jié)構(gòu)中客戶軟件的操作相關(guān)聯(lián)的故障。
背景技術(shù):
傳統(tǒng)的虛擬機(jī)監(jiān)控器(VMM)通常在計(jì)算機(jī)上運(yùn)行,并為其它軟件提供一個(gè)或多個(gè)虛擬機(jī)的抽象。各虛擬機(jī)可用作自含式平臺,運(yùn)行它自己的“客戶操作系統(tǒng)”(即VMM接納的操作系統(tǒng)(OS))和其它軟件,這些統(tǒng)稱為客戶軟件??蛻糗浖A(yù)期工作起來就象它在專用計(jì)算機(jī)而不是虛擬機(jī)上運(yùn)行一樣。也就是說,客戶軟件預(yù)期控制各種事件并有權(quán)訪問硬件資源。硬件資源可包括處理器駐留資源(例如控制寄存器)、駐留在存儲器中的資源(例如描述符表)以及駐留在基礎(chǔ)硬件平臺上的資源(例如輸入-輸出裝置)。事件可包括中斷、異常、平臺事件(例如初始化(INIT)或系統(tǒng)管理中斷(SMI))等。
在虛擬機(jī)環(huán)境中,VMM應(yīng)當(dāng)能夠具有對這些事件和硬件資源的最終控制,以便提供在虛擬機(jī)上運(yùn)行的客戶軟件的適當(dāng)操作,以及用于從在虛擬機(jī)上運(yùn)行的客戶軟件及在它們之間保護(hù)。為了實(shí)現(xiàn)這個(gè)目的,當(dāng)客戶軟件訪問受保護(hù)資源時(shí)或者其它事件(諸如中斷或異常)出現(xiàn)時(shí),VMM通常接收控制。
例如,當(dāng)頁面錯(cuò)誤(即與地址轉(zhuǎn)換操作相關(guān)聯(lián)的異常)在客戶軟件的操作期間出現(xiàn)時(shí),控制被轉(zhuǎn)移到VMM,VMM則確定客戶軟件或VMM本身是否需要處理頁面錯(cuò)誤。如果頁面錯(cuò)誤需要由客戶軟件處理,則控制重新轉(zhuǎn)移到客戶軟件。由于不需要由VMM處理的頁面錯(cuò)誤(以及其它異常和中斷)相當(dāng)頻繁地發(fā)生,因此存在與VMM和客戶軟件之間的這種控制轉(zhuǎn)移相關(guān)聯(lián)的大量性能成本。
附圖簡介在附圖的各圖中通過舉例而不是限制的方式來說明本發(fā)明,附圖中相似的參考標(biāo)號表示類似的元件,其中
圖1說明本發(fā)明可在其中工作的虛擬機(jī)環(huán)境的一個(gè)實(shí)施例;圖2是因故障而利用控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)過濾VM出口的過程的一個(gè)實(shí)施例的流程圖;圖3-5說明因故障而利用控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)過濾VM出口的過程的示范實(shí)施例;圖6是因故障而利用故障過濾標(biāo)準(zhǔn)和控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)過濾故障和VM出口的過程的一個(gè)實(shí)施例的流程圖;圖7-8說明利用故障過濾標(biāo)準(zhǔn)過濾故障的過程的示范實(shí)施例;以及圖9是定義故障過濾標(biāo)準(zhǔn)和控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)的過程的一個(gè)實(shí)施例的流程圖。
實(shí)施例描述描述處理與虛擬機(jī)體系結(jié)構(gòu)中的客戶軟件的操作相關(guān)聯(lián)的故障的方法和裝置。為了說明,以下描述中提出了大量具體細(xì)節(jié),以便透徹地理解本發(fā)明。然而,本領(lǐng)域的技術(shù)人員十分清楚,即使沒有這些具體細(xì)節(jié),也可以實(shí)施本發(fā)明。
以下詳細(xì)描述的某些部分是以對計(jì)算機(jī)系統(tǒng)的寄存器或存儲器中的數(shù)據(jù)位進(jìn)行操作的算法和符號表示來提供的。這些算法描述和表示是數(shù)據(jù)處理領(lǐng)域的技術(shù)人員用來向本領(lǐng)域的其它技術(shù)人員最有效地傳達(dá)其工作實(shí)質(zhì)的方式。算法在這里以及一般被認(rèn)為是產(chǎn)生所希望結(jié)果的獨(dú)立運(yùn)算序列。運(yùn)算是物理量的那些要求的物理處理。這些量通常但不一定采取電或磁信號的形式,它們能夠被存儲、傳送、組合、比較以及以其它方式處理。主要為了普通使用的原因,將這些信號稱作位、值、元素、符號、字符、項(xiàng)目、數(shù)字等,已經(jīng)證明有時(shí)非常方便。
但應(yīng)當(dāng)記住,所有這些及類似的術(shù)語要與適當(dāng)物理量相關(guān)聯(lián),并且只是應(yīng)用于這些量的便捷標(biāo)記。若沒有明確說明,從以下論述中顯而易見,在本發(fā)明中,采用諸如“處理”或“計(jì)算”或“運(yùn)算”或“確定”等術(shù)語的論述可表示計(jì)算機(jī)系統(tǒng)或類似電子計(jì)算裝置的動作和過程,所述計(jì)算機(jī)系統(tǒng)或類似電子計(jì)算裝置處理表示為計(jì)算機(jī)系統(tǒng)的寄存器和存儲器中的物理(電子)量的數(shù)據(jù)并將其轉(zhuǎn)換為類似地表示為計(jì)算機(jī)系統(tǒng)存儲器或寄存器或者其它這類信息存儲、傳送或顯示裝置中的物理量的其它數(shù)據(jù)。
在實(shí)施例的以下詳細(xì)描述中,參照附圖,附圖以圖解說明的方式示出可實(shí)施本發(fā)明的具體實(shí)施例。附圖中,相似的標(biāo)號描述若干視圖中基本相似的元件。對這些實(shí)施例進(jìn)行充分詳細(xì)的描述,使本領(lǐng)域的技術(shù)人員能夠?qū)嵤┍景l(fā)明??刹捎闷渌鼘?shí)施例,并且可進(jìn)行結(jié)構(gòu)、邏輯以及電氣變更,而沒有背離本發(fā)明的范圍。此外,大家理解,本發(fā)明的各種實(shí)施例雖然有所不同,但不一定是相互排斥的。例如,在一個(gè)實(shí)施例中描述的特定功能、結(jié)構(gòu)或特征可包含在其它實(shí)施例中。因此,以下詳細(xì)描述不是限制性的,本發(fā)明的范圍僅由所附權(quán)利要求以及這些權(quán)利要求涵蓋的全部等效范圍來限定。
圖1說明本發(fā)明可在其中工作的虛擬機(jī)環(huán)境100的一個(gè)實(shí)施例。在此實(shí)施例中,裸平臺硬件116包括計(jì)算平臺,它可以例如能夠運(yùn)行標(biāo)準(zhǔn)操作系統(tǒng)(OS)或虛擬機(jī)監(jiān)控器(VMM)、如VMM 112。VMM 112雖然通常以軟件實(shí)現(xiàn),但可模擬裸機(jī)接口并將其輸出到較高層軟件。這種較高層軟件可包括標(biāo)準(zhǔn)或?qū)崟r(shí)OS,可以是具有有限操作系統(tǒng)功能性的嚴(yán)重剝離的操作環(huán)境,可以不包括傳統(tǒng)的OS工具,等等。或者,例如VMM 112可以在另一個(gè)VMM之中或之上運(yùn)行。VMM及其典型特征和功能性是本領(lǐng)域的技術(shù)人員熟知的,并且可例如以軟件、固件或通過各種技術(shù)的組合來實(shí)現(xiàn)。
平臺硬件116可以屬于個(gè)人計(jì)算機(jī)(PC)、大型計(jì)算機(jī)、手持裝置、便攜計(jì)算機(jī)、機(jī)頂盒或其它任何計(jì)算系統(tǒng)。平臺硬件116包括處理器118、存儲器120以及可能的其它未示出的平臺硬件(例如輸入-輸出裝置)。
處理器118可以是能夠運(yùn)行軟件的任何類型的處理器,諸如微處理器、數(shù)字信號處理器、微控制器等等。處理器118可包括用于完成本發(fā)明的方法實(shí)施例運(yùn)行的微碼、可編程邏輯或硬編碼邏輯。
存儲器120可以是硬盤、軟盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、閃速存儲器、以上裝置的任何組合、或者處理器118可讀的其它任何類型的機(jī)器媒體。存儲器120可存儲用于完成本發(fā)明的方法實(shí)施例運(yùn)行的指令或數(shù)據(jù)。
VMM 112為其它軟件(即“客戶”軟件)提供一個(gè)或多個(gè)虛擬機(jī)(VM)的抽象。VMM 112可向各種客戶提供相同或不同的抽象。圖1表示兩個(gè)這樣的VM、即102和114,但VMM 112可支持多于或少于2個(gè)的VM。在各VM上運(yùn)行的客戶軟件可包括諸如客戶OS 104或106等客戶OS以及各種客戶軟件應(yīng)用程序108和110??蛻鬙S和軟件應(yīng)用程序在本文中統(tǒng)稱客戶軟件103和115??蛻糗浖?03和105預(yù)期訪問客戶軟件正在其中運(yùn)行的VM 102和114中的物理資源(例如處理器寄存器、存儲器和I/O裝置)。VMM 112便于對客戶軟件所需資源的訪問,同時(shí)保持對平臺硬件116內(nèi)資源的最終控制。
此外,客戶軟件103和115預(yù)期處理各種事件,諸如異常、中斷以及平臺事件(例如初始化(INIT)和系統(tǒng)管理中斷(SMI))。這些事件中的一部分是“特許的”,因?yàn)樗鼈儽仨氂蒝MM 112來處理,以便確保VM 102、114和客戶軟件103、115的正確工作,以及用于從客戶軟件103和115及在其之間保護(hù)。對于特許事件,VMM 112便于客戶軟件所需的功能性,同時(shí)保持對這些特許事件的最終控制。便于客戶軟件的功能性的動作可包括VMM 112的一部分上的大量活動。VMM 112的活動及其特性不應(yīng)當(dāng)限制本發(fā)明的范圍。
除了特許事件之外,還存在大量“非特許事件”,它們在客戶軟件的操作期間出現(xiàn),但不需要由VMM 112處理,因而不要求控制向VMM 112轉(zhuǎn)移。在一個(gè)實(shí)施例中,提供一種過濾機(jī)制來區(qū)分特許事件與非特許事件。通過這種過濾機(jī)制,利用一個(gè)或多個(gè)過濾標(biāo)準(zhǔn)來評估與當(dāng)前事件(例如異常)相關(guān)聯(lián)的信息,從而確定對當(dāng)前事件的控制是屬于客戶軟件還是被轉(zhuǎn)移到VMM 112。這些過濾標(biāo)準(zhǔn)在本文中稱作控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)。與當(dāng)前事件相關(guān)聯(lián)的信息在本文中稱作故障信息。
在另一個(gè)實(shí)施例中,提供一種過濾機(jī)制以識別可能被忽視的某些非特許事件,因?yàn)樵诋?dāng)前事件時(shí)存在的其它因素表明客戶軟件可完成期望的操作,而不損害VMM 112或其它VM的安全性及正確操作。在此實(shí)施例中,利用一個(gè)或多個(gè)過濾標(biāo)準(zhǔn)來評估與當(dāng)前事件相關(guān)聯(lián)的故障信息,從而確定當(dāng)前事件是否可被忽視(即,是否允許客戶軟件完成期望的操作)。這些過濾標(biāo)準(zhǔn)在本文中稱作故障過濾標(biāo)準(zhǔn)。
在一個(gè)實(shí)施例中,過濾標(biāo)準(zhǔn)(控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)和/或故障過濾標(biāo)準(zhǔn))采用在虛擬機(jī)控制結(jié)構(gòu)(VMCS)122中的一個(gè)或多個(gè)指定字段中存儲的數(shù)據(jù)來定義。不同的VM可采用來自不同VMCS存儲映象的數(shù)據(jù),但圖1中僅示出一個(gè)這樣的VMCS。VMCS 122可駐留在存儲器120中,并且可由處理器118維護(hù)。應(yīng)當(dāng)指出,其它任何數(shù)據(jù)結(jié)構(gòu)(例如芯片內(nèi)高速緩存、文件、查找表等)可用來存儲VMCS 122或者與過濾機(jī)制相關(guān)聯(lián)的字段,而不失一般性。下面更詳細(xì)地描述過濾機(jī)制的各種實(shí)施例。
在一個(gè)實(shí)施例中,如果過濾機(jī)制確定當(dāng)前事件必須由VMM 112處理,則控制被轉(zhuǎn)移到VMM 112。然后,VMM 112可處理該事件,以及把控制重新轉(zhuǎn)移到客戶軟件。在一個(gè)實(shí)施例中,控制從VMM 112到客戶軟件的轉(zhuǎn)移通過執(zhí)行特殊指令來實(shí)現(xiàn)。控制從VMM到客戶軟件的轉(zhuǎn)移在本文中稱作VW入口,控制從客戶軟件到VMM的轉(zhuǎn)移在本文中稱作VM出口,VM出口的可能原因(例如特許的異常和中斷以及特許的平臺事件)在本文中稱作虛擬化事件。
在一個(gè)實(shí)施例中,當(dāng)VM出口出現(xiàn)時(shí),控制在VMCS 122中描述的特定入口點(diǎn)(例如指令指針值)被傳遞給VMM 112。在另一個(gè)實(shí)施例中,控制在通過重定向結(jié)構(gòu)(例如IntelPentiumIV的處理器指令集體系結(jié)構(gòu)(ISA)中的中斷描述符表(在本文中稱作IA-32 ISA))引導(dǎo)之后被傳遞到VMM 112?;蛘撸绢I(lǐng)域已知的其它任何機(jī)制都可用來把控制從客戶軟件轉(zhuǎn)移到VMM 112。
包括異常、中斷和平臺事件的特許和非特許事件在本文中稱作故障。故障可由處理器上指令的執(zhí)行來產(chǎn)生。例如,訪問存儲器的操作可因調(diào)頁和分段保護(hù)機(jī)制而產(chǎn)生各種故障。各故障與故障信息相關(guān)聯(lián)。故障信息可表征為動態(tài)、靜態(tài)或半動態(tài)故障信息。動態(tài)故障信息在故障時(shí)或接近故障時(shí)產(chǎn)生。動態(tài)故障信息的實(shí)例包括誤碼,它由異常產(chǎn)生,并直接取決于出錯(cuò)操作的特性或者準(zhǔn)備通過導(dǎo)致頁面錯(cuò)誤的寫存儲器操作寫入存儲器的數(shù)據(jù)值。
靜態(tài)或半靜態(tài)故障信息可能具有相同的值,而與故障的定時(shí)無關(guān)。半靜態(tài)故障信息的一個(gè)實(shí)例是各種控制寄存器中很少改變的位的設(shè)定,例如IA-32 ISA中CRO寄存器中的高速緩存禁用(CD)或?qū)懕Wo(hù)(WP)位。靜態(tài)故障信息的一個(gè)實(shí)例是處理器實(shí)現(xiàn)的版本(例如通過IA-32 ISA中的CPUID指令來報(bào)告那樣)。
一般來說,故障信息可包括故障標(biāo)識符、相關(guān)故障誤碼、與故障相關(guān)聯(lián)的附加數(shù)據(jù)值或者這些數(shù)據(jù)項(xiàng)的任何組合。故障標(biāo)識符可以是用來區(qū)分這個(gè)特定故障與其它故障的值。誤碼可包含多個(gè)值,其中每個(gè)值指示特定條件的出現(xiàn)。附加數(shù)據(jù)值可表示連接到出錯(cuò)指令或故障觸發(fā)條件的其它任何數(shù)據(jù)。另外,附加數(shù)據(jù)值可表示在故障產(chǎn)生期間計(jì)算的數(shù)據(jù)。附加數(shù)據(jù)值的一些實(shí)例包括在故障時(shí)被請求寫入特定位置的數(shù)據(jù)、在故障時(shí)被訪問的地址、導(dǎo)致故障的指令的地址、在故障時(shí)存儲器的狀態(tài)等。
可參照IA-32 ISA中的頁面錯(cuò)誤來說明故障信息的一個(gè)實(shí)例。在IA-32 ISA中,頁面錯(cuò)誤由等于14的故障標(biāo)識符來標(biāo)識。因此,當(dāng)頁面錯(cuò)誤出現(xiàn)時(shí),通過經(jīng)由條目14處的中斷描述符表(IDT)引導(dǎo)到故障處理器,控制被傳遞到故障處理器。(產(chǎn)生頁面錯(cuò)誤的)被訪問地址被存儲在控制寄存器(CR2)中。另外,在把控制傳遞到故障處理器之前,頁面錯(cuò)誤產(chǎn)生誤碼,它被推入堆棧,供故障處理器使用。誤碼包含四位,它通知故障處理器什么條件導(dǎo)致頁面錯(cuò)誤。具體來說,誤碼中的位0表明錯(cuò)誤是否由用于地址轉(zhuǎn)換的頁面表中的非當(dāng)前頁面引起,誤碼中的位1表明錯(cuò)誤訪問是否為寫入,誤碼中的位2表明訪問是否在處理器處于用戶模式時(shí)被發(fā)起,以及誤碼中的位3表明錯(cuò)誤是否由頁面目錄中設(shè)置為1的保留位引起。
附加數(shù)據(jù)值可與頁面錯(cuò)誤相關(guān)聯(lián)。相關(guān)附加數(shù)據(jù)值的實(shí)例包括導(dǎo)致頁面錯(cuò)誤的被訪問地址(CR2)、出錯(cuò)指令的地址、客戶軟件在出現(xiàn)頁面錯(cuò)誤時(shí)嘗試寫入頁面表分級結(jié)構(gòu)中的不可寫頁面的數(shù)據(jù)值、物理和客戶線性存儲器中的頁面表的地址等等。
現(xiàn)在將描述利用控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)的過濾機(jī)制的一些實(shí)施例??刂妻D(zhuǎn)移過濾標(biāo)準(zhǔn)可手動或以編程方式來定義。控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)隨特定故障、誤碼形式、ISA、附加數(shù)據(jù)值的存在、VMM的特性及其它因素而改變??刂妻D(zhuǎn)移過濾標(biāo)準(zhǔn)的復(fù)雜度和表達(dá)標(biāo)準(zhǔn)所需的元素?cái)?shù)量取決于誤碼中包含的值的數(shù)量、附加數(shù)據(jù)值的數(shù)量、以及需要(和不需要)引起向VMM的轉(zhuǎn)換的誤碼值和/或附加數(shù)據(jù)值的可能組合的數(shù)量。例如,當(dāng)需要考慮大量這類組合時(shí),控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)可能要求對誤碼和/或其它故障信息及一組預(yù)定數(shù)據(jù)執(zhí)行若干運(yùn)算(例如算術(shù)和/或布爾邏輯運(yùn)算)。
在一些實(shí)施例中,預(yù)定數(shù)據(jù)存儲在VMCS的指定字段中,如上所述。在其它實(shí)施例中,預(yù)定數(shù)據(jù)可被硬編碼(例如在計(jì)算機(jī)程序、可編程邏輯、微碼或處理器的硬編碼邏輯中)。
圖2是因故障而利用控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)過濾VM出口的過程200的一個(gè)實(shí)施例的流程圖。該過程可通過可包括硬件(例如電路、專用邏輯、可編程邏輯、微碼等)、軟件(例如運(yùn)行于通用計(jì)算機(jī)系統(tǒng)或?qū)S脵C(jī)器上)或者兩者的組合的處理邏輯來執(zhí)行。
參照圖2,過程200從處理邏輯接收故障信息(處理框202)開始。故障信息可涉及在允許操作繼續(xù)進(jìn)行到完成的情況下已出現(xiàn)或?qū)⒊霈F(xiàn)的故障。故障信息包括標(biāo)識該故障的故障標(biāo)識符。在一些實(shí)施例中,故障信息還包括與該故障相關(guān)聯(lián)的誤碼和/或附加數(shù)據(jù)值。
在判定框204,確定故障信息是否滿足一個(gè)或多個(gè)控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)。如果在判定框204進(jìn)行的確定為否定,即,故障信息不滿足控制轉(zhuǎn)移過濾標(biāo)準(zhǔn),則控制轉(zhuǎn)到VMM(處理框206),它處理該故障,然后可把控制重新轉(zhuǎn)移到客戶OS。否則,如果在判定框204進(jìn)行的確定為肯定,即,故障信息滿足控制轉(zhuǎn)移過濾標(biāo)準(zhǔn),則控制仍屬于客戶軟件。然后,可允許客戶軟件處理該故障。
在備選實(shí)施例中,如果故障信息不滿足控制轉(zhuǎn)移過濾標(biāo)準(zhǔn),則控制被轉(zhuǎn)到VMM(如果故障信息滿足控制轉(zhuǎn)移過濾標(biāo)準(zhǔn),則控制仍屬于客戶軟件)。
如上所述,控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)的復(fù)雜度取決于各種因素。在一個(gè)實(shí)施例中,控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)可能只要求將故障信息與某個(gè)值進(jìn)行比較(例如,如果誤碼大于10,則產(chǎn)生VM出口,或者如果誤碼等于0×4,則產(chǎn)生VM出口,等等)。在另一個(gè)實(shí)施例中,控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)可能要求將故障信息與若干值進(jìn)行比較。例如,需要引起到VMM的轉(zhuǎn)換的誤碼值可事先確定,以及當(dāng)前誤碼可與這些預(yù)定值進(jìn)行比較以識別匹配。預(yù)定值可存儲在指定字段中(例如在圖1的VMCS 122中),或者被硬編碼在計(jì)算機(jī)程序、可編程邏輯、微碼或處理器的硬編碼邏輯中。在其它實(shí)施例中,可能要求過濾機(jī)制對故障信息和一組預(yù)定值執(zhí)行一個(gè)或多個(gè)布爾邏輯和/或算術(shù)運(yùn)算。
圖3-5說明因故障而利用控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)過濾VM出口的過程的示范實(shí)施例。這些過程可通過可包括硬件(例如電路、專用邏輯、可編程邏輯、微碼等)、軟件(例如運(yùn)行于通用計(jì)算機(jī)系統(tǒng)或?qū)S脵C(jī)器上)或者兩者的組合的處理邏輯來執(zhí)行。
參照圖3,過程300從處理邏輯在客戶軟件操作期間檢測故障的出現(xiàn)(處理框301)開始。在處理框302,處理邏輯接收標(biāo)識故障并且可包含與故障有關(guān)的其它信息的故障信息。在判定框303,處理邏輯確定故障信息是否包含與故障相關(guān)聯(lián)的誤碼。如果該確定為肯定,則處理邏輯確定(在處理框304)以下表達(dá)式的值(真或假)EC AND MASK=MATCH(1)其中EC為誤碼,AND為逐位布爾邏輯算子,“=”為逐位比較算子,MASK為在第一字段、本文稱作掩碼字段中存儲的預(yù)定數(shù)據(jù),以及MATCH為在第二字段、本文稱作匹配字段中存儲的預(yù)定數(shù)據(jù)。
各掩碼字段和匹配字段的大小取決于相應(yīng)誤碼的大小。在一些實(shí)施例中,掩碼字段和匹配字段的寬度與誤碼的大小相同。在其它實(shí)施例中,掩碼字段和匹配字段的寬度可以與誤碼的大小不同。例如,掩碼字段和匹配字段可小于誤碼,并且可以僅把某些位映射到表達(dá)式1中。
此外,在圖3所示的一個(gè)實(shí)施例中,處理邏輯還采用重定向圖中的相應(yīng)控制位來進(jìn)一步確定是否產(chǎn)生VM出口。重定向圖表示由VMM維護(hù)的一組控制位,用于配置哪些虛擬化事件將產(chǎn)生VM出口。被咨詢的控制位對應(yīng)于導(dǎo)致當(dāng)前故障的虛擬化事件。例如,虛擬化事件可以是頁面錯(cuò)誤、外部中斷或客戶軟件對調(diào)試寄存器的訪問,其中的每個(gè)在重定向圖中具有相關(guān)位。在一個(gè)實(shí)施例中,重定向圖包含在圖1的VMCS 122中。在一個(gè)實(shí)施例中,重定向圖是VMCS 122中的單字段。在其它實(shí)施例中,在VMCS 122中要求多個(gè)字段來詳細(xì)描述重定向圖。
如果在判定框303作出的確定為否定(即故障信息沒有包含與此故障相關(guān)聯(lián)的誤碼),或者處理邏輯在判定框304確定表達(dá)式1中的等式成立(即經(jīng)由逐位AND算子與掩碼字段中存儲的數(shù)據(jù)組合的誤碼匹配在匹配字段中存儲的數(shù)據(jù)),則在一個(gè)實(shí)施例中,重定向圖中的相應(yīng)控制位的值被用來確定是否產(chǎn)生VM出口(處理框306)。例如,如果控制位被置位,則處理邏輯將產(chǎn)生VM出口(處理框313);否則,處理邏輯將把故障傳遞給客戶軟件(處理框312)。
如果表達(dá)式1中的等式不成立,則處理邏輯對重定向位圖中的控制位的值取反(處理框308),并使用這個(gè)取反值來確定是否產(chǎn)生VM出口(處理框310)。如果取反值被置位,則處理邏輯產(chǎn)生VM出口(處理框314);否則,故障將被引導(dǎo)到客戶軟件(處理框312)。在另一個(gè)實(shí)施例中,如果如判定框304中所確定的那樣,等式不成立,則處理邏輯可使用控制位的實(shí)際值,如果等式成立,則使用控制位的取反值。
在圖3的過程300中掩碼字段和匹配字段與控制位的使用可采用與IA-32ISA頁面錯(cuò)誤相關(guān)聯(lián)的誤碼(本文中稱作頁面錯(cuò)誤誤碼或PFEC)的各種值作為實(shí)例來說明。以下實(shí)例假定在表達(dá)式1的等式不成立時(shí)存在控制位的取反(如圖3所示)。
如上所述,PFEC包括四位。為了實(shí)現(xiàn)PFEC值的所有可能組合所需的結(jié)果,掩碼字段、匹配字段和控制位中的每個(gè)應(yīng)當(dāng)具有特定設(shè)定。例如,為了對所有頁面錯(cuò)誤產(chǎn)生VM出口,控制位可被設(shè)置為1,掩碼字段位的值將設(shè)置為0×0,以及匹配字段的值將設(shè)置為0×0。或者,為了得到同樣的性能,控制位可被設(shè)置為0,掩碼字段設(shè)置為0×0,以及匹配字段設(shè)置為0×F(注意,有匹配、掩碼字段及控制位值的許多設(shè)定都提供相同的功能性)。在另一個(gè)實(shí)例中,為了對于因監(jiān)督程序?qū)懭氘?dāng)前頁面而導(dǎo)致的頁面錯(cuò)誤產(chǎn)生VM出口,控制位將設(shè)置為1,掩碼字段的值將設(shè)置為0×F,以及匹配字段的值將設(shè)置為0×3。這些值確保只對產(chǎn)生等于0×3的誤碼的頁面故障出現(xiàn)VM出口。在又一個(gè)實(shí)例中,為了對于因非當(dāng)前頁面或保留位違反而導(dǎo)致的頁面錯(cuò)誤產(chǎn)生VM出口,控制位將設(shè)置為0,掩碼字段的值將設(shè)置為0×9(即只有位0和3被設(shè)置為1),以及匹配字段的值將設(shè)置為0×1。這將對指示當(dāng)前頁面(即位0被設(shè)置為1)以及無保留位違反(即位3被清除為0)的那些之外的所有頁面錯(cuò)誤產(chǎn)生VM出口。
在另一個(gè)實(shí)施例(未示出)中,沒有使用控制位。也就是說,處理邏輯根據(jù)表達(dá)式1的結(jié)果來確定是否把控制轉(zhuǎn)到VMM(即產(chǎn)生VM出口)。如果表達(dá)式1中評估的等式成立(即經(jīng)由逐位AND算子與掩碼字段中存儲的數(shù)據(jù)組合的誤碼匹配在匹配字段中存儲的數(shù)據(jù)),則滿足控制轉(zhuǎn)移過濾標(biāo)準(zhǔn),以及與誤碼相關(guān)聯(lián)的故障將由客戶操作系統(tǒng)處理。否則(即經(jīng)由AND算子與掩碼字段中存儲的數(shù)據(jù)組合的誤碼不匹配在匹配字段中存儲的數(shù)據(jù)),則不滿足控制轉(zhuǎn)移過濾標(biāo)準(zhǔn),并產(chǎn)生VM出口,把控制轉(zhuǎn)到VMM。
圖3所示實(shí)施例中使用的控制位的取反增加了實(shí)現(xiàn)誤碼值的各種組合的預(yù)期結(jié)果(即VM出口結(jié)果或無VM出口結(jié)果)時(shí)的靈活性。例如,下表說明包含兩位的誤碼的值的各種組合的兩種可能的預(yù)期結(jié)果
如果掩碼字段位的值等于(11),匹配字段的值等于(01),以及控制位等于0,則圖3所示的過程300的實(shí)施例可得到預(yù)期結(jié)果1。如果掩碼字段位的值等于(11),匹配字段的值等于(01),以及控制位被設(shè)置為1,則可得到預(yù)期結(jié)果2。
應(yīng)當(dāng)指出,預(yù)期結(jié)果2不要求使用控制位(即預(yù)期結(jié)果2僅要求掩碼=(11)以及匹配=(01))。但是,如果不使用控制位的取反,或者更多字段沒有包含在確定是否產(chǎn)生VM出口的過程中,則無法得到預(yù)期結(jié)果1。
采用四個(gè)指定字段用于確定是否產(chǎn)生VM出口的控制轉(zhuǎn)移過濾過程的一個(gè)實(shí)施例如圖4所示。參照圖4,過程400可通過可包括硬件(例如電路、專用邏輯、可編程邏輯、微碼等)、軟件(例如運(yùn)行于通用計(jì)算機(jī)系統(tǒng)或?qū)S脵C(jī)器上)或者兩者的組合的處理邏輯來執(zhí)行。
過程400從處理邏輯在客戶軟件操作期間檢測故障的出現(xiàn)(處理框401)開始。在圖4所示實(shí)施例中,假定所有故障產(chǎn)生誤碼,在處理框402處理邏輯接收這些誤碼。隨后,處理邏輯采用逐位AND算子將誤碼與第一掩碼字段中存儲的數(shù)據(jù)組合(處理框404)以及與第二掩碼字段中存儲的數(shù)據(jù)組合(處理框406)。即,第一組合的結(jié)果INT1=ECAND MASK1以及第二組合的結(jié)果INT2=EC AND MASK2。
此外,在判定框408,處理邏輯確定第一組合INT1是否匹配第一匹配字段中存儲的數(shù)據(jù)(MATCH1),或者第二組合INT2是否匹配第二匹配字段中存儲的數(shù)據(jù)(MATCH2)。如果找到任何匹配,則處理邏輯產(chǎn)生VM出口(處理框410)。或者,如果沒有發(fā)現(xiàn)任何匹配,則故障被插入客戶操作系統(tǒng)(處理框409)。
控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)可采用更復(fù)雜的算術(shù)或布爾邏輯和/或附加字段,以便為預(yù)期結(jié)果提供更大的靈活性,如圖5所示。參照圖5,過程500可通過可包括硬件(例如電路、專用邏輯、可編程邏輯、微碼等)、軟件(例如運(yùn)行于通用計(jì)算機(jī)系統(tǒng)或?qū)S脵C(jī)器上)或者兩者的組合的處理邏輯來執(zhí)行。
過程500從處理邏輯在客戶軟件操作期間檢測故障的出現(xiàn)(處理框501)開始。在處理框502,處理邏輯接收故障信息。如處理框503所確定的那樣,如果故障信息包含誤碼,則處理邏輯采用逐位AND算子將誤碼與第一掩碼字段中存儲的數(shù)據(jù)組合(處理框504)以及與第二掩碼字段中存儲的數(shù)據(jù)組合(處理框506)。即,第一組合的結(jié)果INT1=EC AND MASK1以及第二組合的結(jié)果INT2=EC ANDMASK2。
此外,在判定框508,處理邏輯確定在第一組合INT1中是否設(shè)置了任何位,或者第二組合INT2是否匹配在匹配字段中存儲的數(shù)據(jù)(MATCH)。在一個(gè)實(shí)施例中(圖5中未示出),如果任一個(gè)確定為肯定,則處理邏輯產(chǎn)生VM出口。否則,故障被插入客戶OS。
在另一個(gè)實(shí)施例中(圖5中所示),與VM出口有關(guān)的確定還取決于重定向圖中的相應(yīng)控制位。明確地說,如果在判定框508進(jìn)行的確定為肯定(或者如果在判定框503進(jìn)行的確定為否定,即故障信息沒有包含誤碼),則處理邏輯還在判定框510確定控制位是否指定VM出口(例如控制位被設(shè)置為1)。如果控制位指定了VM出口,則處理邏輯產(chǎn)生VM出口(處理框512)。如果控制位沒有指定VM出口(例如控制位被清零),則故障被插入客戶OS(處理框518)。
否則,如果在判定框508作出的確定為否定,則處理邏輯對控制位的值取反(處理框514)。如果取反值指定了VM出口(判定框516),則處理邏輯產(chǎn)生VM出口(處理框512)。如果取反值沒有指定VM出口,則故障被插入客戶OS(處理框518)。
雖然圖3-5所示的實(shí)施例采用某些算子(即逐位AND、比較等),但各種各樣的其它算子也可與過濾標(biāo)準(zhǔn)配合使用,而不失一般性。另外,以上結(jié)合圖3-5所述的那些之外的各種過濾標(biāo)準(zhǔn)也可用來處理在客戶軟件操作期間出現(xiàn)的故障。此外,上述附加數(shù)據(jù)值可用來代替與過濾過程中的故障相關(guān)聯(lián)的誤碼,或者與它們一起使用。
在一些實(shí)施例中,附加過濾標(biāo)準(zhǔn)(本文中稱作故障過濾標(biāo)準(zhǔn))可在控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)之前應(yīng)用于故障信息。在其它實(shí)施例中,故障過濾標(biāo)準(zhǔn)在控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)之后應(yīng)用于故障信息。在另一些實(shí)施例中,故障過濾標(biāo)準(zhǔn)而不是控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)被應(yīng)用于故障信息。故障過濾標(biāo)準(zhǔn)用來確定在客戶軟件操作期間出現(xiàn)的出錯(cuò)條件是否可被忽略。出錯(cuò)條件表示若允許操作完成、則通常會導(dǎo)致故障的事件。這種出錯(cuò)條件的一個(gè)實(shí)例是客戶軟件寫入頁面表分級結(jié)構(gòu)中的不可寫頁面的嘗試。在一些情況下,出錯(cuò)條件可以被忽略,因?yàn)樵诔鲥e(cuò)條件時(shí)存在的其它因素表明出錯(cuò)條件不會例如損害VMM或其它虛擬機(jī)的性能、安全性或正確操作。下面結(jié)合圖7和圖8更詳細(xì)地描述這些情況的實(shí)例。
圖6是因故障而利用故障過濾標(biāo)準(zhǔn)和控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)過濾故障和VM出口的過程600的一個(gè)實(shí)施例的流程圖。該過程可通過可包括硬件(例如電路、專用邏輯、可編程邏輯、微碼等)、軟件(例如運(yùn)行于通用計(jì)算機(jī)系統(tǒng)或?qū)S脵C(jī)器上)或者兩者的組合的處理邏輯來執(zhí)行。
過程600從處理邏輯在客戶軟件操作期間檢測出錯(cuò)條件的出現(xiàn)(處理框602)以及分析與出錯(cuò)條件有關(guān)的故障信息(處理框604)開始。這種故障信息可包括故障標(biāo)識符、誤碼、出錯(cuò)地址、待寫入的數(shù)據(jù)、頁面表地址等。
隨后,處理邏輯確定故障信息是否滿足故障過濾標(biāo)準(zhǔn)(判定框604)。故障過濾標(biāo)準(zhǔn)要求利用與客戶軟件的工作有關(guān)的規(guī)則,評估處理器狀態(tài)、存儲器狀態(tài)和/或故障信息的一個(gè)或多個(gè)元素。例如,故障過濾標(biāo)準(zhǔn)可要求將客戶軟件嘗試寫入存儲單元的數(shù)據(jù)與當(dāng)前存儲在此存儲單元的數(shù)據(jù)進(jìn)行比較。故障過濾標(biāo)準(zhǔn)可要求單獨(dú)檢驗(yàn)處理器狀態(tài)、存儲器狀態(tài)和/或故障信息的一個(gè)元素,或者多次檢驗(yàn)各種元素。故障過濾標(biāo)準(zhǔn)的復(fù)雜度可隨特定出錯(cuò)條件、與出錯(cuò)條件有關(guān)的操作規(guī)則、ISA、VMM的特性、應(yīng)用及其它因素而改變。下面結(jié)合圖7和圖8更詳細(xì)地論述示范過濾標(biāo)準(zhǔn)。
如果滿足故障過濾標(biāo)準(zhǔn),則處理邏輯忽略出錯(cuò)條件,以及允許客戶軟件繼續(xù)進(jìn)行,好像沒有檢測到出錯(cuò)條件一樣(處理框608)。因此,客戶軟件發(fā)起的操作的行為經(jīng)修改以允許其完成,而不管出錯(cuò)條件的檢測如何。
如果不滿足故障過濾標(biāo)準(zhǔn),則處理邏輯利用控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)確定處理該故障的適當(dāng)實(shí)體(判定框610)。如果故障信息滿足控制轉(zhuǎn)移過濾標(biāo)準(zhǔn),則處理邏輯把故障傳遞到客戶軟件,以及允許客戶軟件處理該故障(處理框612)。如果故障信息不滿足控制轉(zhuǎn)移過濾標(biāo)準(zhǔn),則處理邏輯把控制轉(zhuǎn)到VMM(處理框614)。
在其它實(shí)施例中,如果不滿足故障過濾標(biāo)準(zhǔn),則處理邏輯不使用控制轉(zhuǎn)移過濾標(biāo)準(zhǔn),而始終把控制轉(zhuǎn)到VMM。
在其它實(shí)施例中,處理邏輯首先利用控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)來確定處理故障的適當(dāng)實(shí)體。然后,如果適當(dāng)實(shí)體為客戶軟件,則處理邏輯還確定是否滿足故障過濾標(biāo)準(zhǔn)。如果滿足故障過濾標(biāo)準(zhǔn),則允許客戶忽略故障條件;如果不滿足故障過濾標(biāo)準(zhǔn),則該故障被傳遞給客戶,如上所述。
以下論述假定頁面表結(jié)構(gòu)在IA-32 ISA中,但應(yīng)當(dāng)指出,類似的頁面表結(jié)構(gòu)存在于各種ISA中,本發(fā)明不限于使用IA-32 ISA。另外,可進(jìn)行各種簡化以便于以下論述。例如,沒有包含物理地址擴(kuò)展(PAE)和頁面大小擴(kuò)展(PSE)標(biāo)志的作用,沒有說明基于環(huán)的保護(hù)機(jī)制,沒有測試存儲器存取的對準(zhǔn)要求等等。
如本領(lǐng)域熟知的那樣,IA-32 ISA中的頁面表由頁面目錄條目(PDE)和頁面表?xiàng)l目(PTE)組成。每個(gè)PDE和PTE包含控制存儲器頁面的可存取性的各種位字段。例如,“P”位把頁面標(biāo)記為當(dāng)前(1)或非當(dāng)前(0),“R/W”位表明頁面是只讀(0)還是可讀寫(1),“U/S”位表明頁面是否要求監(jiān)督程序特權(quán),頁面幀編號(PEN)是否包含邏輯頁面所在的物理地址的一部分,等等。CR3是ISA中的控制寄存器,它包含頁面目錄的基物理地址(和附加標(biāo)志)。頁面目錄基物理地址等于CR3[31:12]<<12(即,頁面目錄基地址的低12位為0,高20位處于CR3的高20位中)。
為了防止一個(gè)虛擬機(jī)中的錯(cuò)誤或惡意代碼損害在VMM或另一個(gè)虛擬機(jī)上運(yùn)行的代碼,需要把客戶軟件的訪問限制為基礎(chǔ)物理機(jī)器的物理存儲資源。在提供了由客戶OS和VMM分別管理的獨(dú)立頁面表分級結(jié)構(gòu)的一些體系結(jié)構(gòu)中,一種把客戶軟件的訪問限制為物理存儲資源的方法包括客戶頁面表分級結(jié)構(gòu)的VMM修改許可,從而防止客戶軟件對受保護(hù)頁面(例如屬于VMM或其它VM的頁面)的讀或?qū)懖僮?。另外,客戶頁面表?jīng)修改以防止對屬于存儲客戶頁面表的VM的一些頁面的寫操作。一旦已經(jīng)進(jìn)行這些許可修改,則客戶軟件改變頁面表的嘗試將導(dǎo)致頁面錯(cuò)誤事件,這是VMM可通過VM出口觀察的。VMM可檢查所嘗試的訪問,并確定要采取的適當(dāng)動作。例如,它可允許、不允許或修改所嘗試的訪問。例如,可能不允許客戶軟件映射屬于VMM或另一個(gè)VM的物理頁面。由于客戶軟件對頁面表的修改頻繁出現(xiàn),因此與退出到VMM相關(guān)的、用于篩選每次嘗試的客戶頁面表改變的開銷可能強(qiáng)加重大的性能負(fù)擔(dān)。
為了簡化頁面表的管理,若干操作系統(tǒng)、例如Microsoft WindowsXP采用遞歸頁面目錄。換言之,頁面目錄條目(PDE)將設(shè)置為把頁面目錄頁引用為頁面表頁。這種把同一個(gè)頁面用作頁面目錄和頁面表的用法使所有頁面表頁在通過自指的PDE訪問的線性地址空間的4MB區(qū)域中是可訪問的。給定自指PDE的使用,則可計(jì)算用來映射任何特定線性地址的PTE或PDE的線性地址。在采用自指PDE的操作系統(tǒng)中,典型的頁面表編輯是通過這種自映射區(qū)域進(jìn)行的(即,對頁面表的編輯是利用自映射PDE通過寫入采用處于4MB區(qū)域的線性地址的存儲器進(jìn)行的)。不采用這種自映射PDE的頁面表編輯在數(shù)量上極少。
其中公共頁面用作頁面目錄頁以及頁面表頁的頁面表在本文中稱作自映射頁面表。本領(lǐng)域的技術(shù)人員非常清楚,本發(fā)明還適用于其它方法,其中頁面表?xiàng)l目以組織方式映射到線性地址,無論這種映射是在頁面表分級結(jié)構(gòu)的多層上結(jié)構(gòu)再用的結(jié)果,還是通過OS慣例。
在本發(fā)明的一個(gè)實(shí)施例中,過濾機(jī)制用來標(biāo)識不要求退出到VMM的頁面映射編輯。在此實(shí)施例中,用于過濾標(biāo)準(zhǔn)的附加字段被添加到VMCS。
在一個(gè)實(shí)施例中,客戶操作系統(tǒng)所用的頁面表是自映射的,即,頁面表分級結(jié)構(gòu)中的頁面目錄條目(PDE)之一重新指向頁面目錄(PD)頁的基部。如上所述,自映射頁面表的概念是本領(lǐng)域都熟知的,以及由操作系統(tǒng)、例如Microsoft的Windows XP使用。在一個(gè)實(shí)施例中,通過確保頁面目錄基部線性地址(本文中稱作PTBASE)滿足一組條件來支持自映射。這組條件可檢驗(yàn)PTBASE值為4MB對準(zhǔn)的、即PTBASE[21:0]=0,以及頁面表包含適當(dāng)?shù)淖杂成錀l目、即單元((CR3[31:12]<<12)+(PTBASE[31:22]<<2))中條目中的PFN等于CR3[31:12]。在一個(gè)實(shí)施例中,PTBASE值存儲在VMCS中,由過濾機(jī)制使用,如以下所述。
假定自映射頁面表正在使用,則可確定任何給定地址是否處于頁面表中(即,是否ADDR[31:22]=PTBASE[31:22],其中ADDR為被訪問的地址)。另外,可確定該地址是否處于PDE中(即地址是否處于頁面表中,并且ADDR[21:12]=PTBASE[31:22])或者處于PTE中(即該地址是否處于頁面表中,但不在PDE中)。
圖7和圖8說明利用故障過濾標(biāo)準(zhǔn)過濾頁面錯(cuò)誤的過程的兩個(gè)示范實(shí)施例。該過程可通過可包括硬件(例如電路、專用邏輯、可編程邏輯、微碼等)、軟件(例如運(yùn)行于通用計(jì)算機(jī)系統(tǒng)或?qū)S脵C(jī)器上)或者兩者的組合的處理邏輯來執(zhí)行。在圖7和圖8所示的實(shí)施例中,VMM通過確保映射頁面表自身的客戶頁面表?xiàng)l目(客戶PTE)具有只讀訪問來保護(hù)物理存儲器。因此,當(dāng)客戶軟件嘗試改變頁面表?xiàng)l目時(shí),頁面錯(cuò)誤條件出現(xiàn)。這些實(shí)施例可與采用自映射頁面表的客戶OS配合使用,如上所述,或者與沒有采用這個(gè)頁面表結(jié)構(gòu)的客戶OS配合使用,但采用自映射頁面表的客戶OS的使用提供更大的性能提高。
在圖7所示的實(shí)施例中,說明了故障過濾標(biāo)準(zhǔn)的集合,它允許完成對PTE的寫入,在客戶操作系統(tǒng)沒有嘗試把“P”位設(shè)置為1時(shí)沒有傳遞故障或產(chǎn)生VM出口,同時(shí)仍然保護(hù)物理存儲空間以及制止為客戶軟件提供對頁面表的完全控制。這個(gè)規(guī)則的理論基礎(chǔ)在于,標(biāo)記了非當(dāng)前的PTE(即“P”位等于0)無法映射物理存儲頁面。因此,由客戶軟件改變的PTE無法映射物理存儲頁面,因此無法干擾VMM或者在另一個(gè)VM上運(yùn)行的軟件的操作。因此,不需要通知VMM頁面表修改,以及將允許頁面表寫入繼續(xù)進(jìn)行,而沒有導(dǎo)致頁面錯(cuò)誤或VM出口。
參照圖7,處理邏輯從在客戶軟件操作期間檢測頁面錯(cuò)誤條件(處理框702)以及接收與頁面錯(cuò)誤條件有關(guān)的頁面錯(cuò)誤信息(處理框704)開始。
隨后,一組故障過濾標(biāo)準(zhǔn)被應(yīng)用于頁面錯(cuò)誤信息。明確地說,處理邏輯確定出錯(cuò)訪問是否為寫操作(判定框706)、寫入PTE(判定框708),以及不是把“P”位設(shè)置為1的嘗試(即DATA.P=0,其中DATA為客戶正試圖寫入的值)(判定框710)。如果這些確定為肯定的,則允許客戶操作系統(tǒng)的訪問完成(即允許寫入以修改存儲器),而沒有產(chǎn)生故障或VM出口(處理框714)。如果處理框706、708和710中的確定的任一個(gè)為否定,則控制被轉(zhuǎn)移到處理框712以確定VM出口是否要被產(chǎn)生,或者故障將被引導(dǎo)到客戶軟件,如結(jié)合圖2-5更詳細(xì)描述的。
在另一個(gè)實(shí)施例中(附圖中未示出),寫入必須是對PTE進(jìn)行的條件可被取消,或者采用例如只要當(dāng)前位未被設(shè)置就允許對PTE或PDE寫入的測試來代替。
參照圖8,說明更復(fù)雜的故障過濾標(biāo)準(zhǔn)集合,它包括以上結(jié)合圖7所述的故障過濾標(biāo)準(zhǔn)以及其它一些標(biāo)準(zhǔn)。故障過濾標(biāo)準(zhǔn)的這個(gè)集合允許客戶操作系統(tǒng)修改PTE中除PFN、讀/寫以及當(dāng)前位之外的位,而不要求頁面錯(cuò)誤或產(chǎn)生VM出口。另外,允許讀/寫和當(dāng)前位的某些修改,而不要求頁面錯(cuò)誤或產(chǎn)生VM出口。
處理邏輯從在客戶軟件操作期間檢測頁面錯(cuò)誤條件(處理框802)以及接收與頁面錯(cuò)誤條件有關(guān)的頁面故障信息(處理框804)開始。隨后,處理邏輯確定出錯(cuò)訪問是否為寫操作(判定框806)、寫入PTE(判定框808),以及不是把“P”位設(shè)置為1的嘗試(即DATA.P=0)(判定框810)。如果這些確定均為肯定,則允許客戶操作系統(tǒng)的訪問完成(即允許寫入以修改存儲器),而沒有產(chǎn)生故障或VM出口(處理框814)。如果處理框806或808中的確定為否定,則控制進(jìn)入處理框812,確定是否要求VM出口,如參照圖2-5所述。
如果處理框810中的確定為否定,則應(yīng)用附加故障過濾規(guī)則。明確地說,處理邏輯確定PTE是否已經(jīng)在PTE中標(biāo)記為當(dāng)前(即,ADDR->P=1,其中ADDR為客戶軟件正嘗試寫入的地址,以及ADDR->P表示在存儲器中位于ADDR的數(shù)據(jù)被解釋為PTE時(shí)的P位)(判定框816),PFN是否沒有改變(即ADDR->PFN=DATA.PFN)(判定框818),以及客戶是否正嘗試把PTE映射的頁面標(biāo)記為只讀(DATA.R/W=0)或者由PTE映射的頁面是否在存儲器中的PTE中已經(jīng)標(biāo)記為可寫(ADDR->R/W=1)(判定框820)。如果這些確定為肯定,則允許客戶操作系統(tǒng)的訪問完成(即允許寫入以修改存儲器),而沒有產(chǎn)生故障或VM出口(處理框814)。如果處理框816、818和810中的任何確定為否定,則控制被轉(zhuǎn)移到處理框812以確定是否要求VM出口。
應(yīng)當(dāng)指出,圖7和圖8所示的過濾機(jī)制將濾除利用自映射PDE嘗試修改頁面表的訪問,如上所述。沒有采用自映射PDE的修改頁面表的嘗試不會被故障過濾標(biāo)準(zhǔn)濾除(即,在框708和808中對于寫入是否對PTE進(jìn)行的確定將失敗)。然后,控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)用來確定是否需要VM出口,如圖2-5所示。從安全性或正確操作的觀點(diǎn)來看,這不會產(chǎn)生問題,因?yàn)閂MM能夠確定是否在實(shí)際上編輯PTE。控制轉(zhuǎn)移過濾機(jī)制將配置成對所有寫入頁面錯(cuò)誤產(chǎn)生VM出口,以及評估被寫入的地址和數(shù)據(jù),以確定是否正嘗試頁面表編輯。
除以上參照圖7和圖8所述的那些之外的各種故障過濾標(biāo)準(zhǔn)可用來過濾故障,而不失一般性。過濾的形式可由各種VMM控制字段(例如PTBASE)來控制,在一個(gè)實(shí)施例中,這些字段可駐留在VMCS中?;蛘撸^濾可由單個(gè)啟用位來控制,可以被硬編碼到處理器實(shí)現(xiàn)中,等等。
圖9是定義控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)和/或故障過濾標(biāo)準(zhǔn)的過程900的一個(gè)實(shí)施例的框圖。過程900可手動或自動執(zhí)行。
參照圖9,過程900從識別故障信息的哪些組合(例如誤碼值、故障標(biāo)識符等)不要求到VMM的轉(zhuǎn)換或者應(yīng)當(dāng)被允許完成、忽略故障(處理框902)開始。然后,可用于VM出口和/或故障過濾標(biāo)準(zhǔn)的字段最大數(shù)量以及字段語義被識別(處理框904),以及可用算子(例如布爾、算術(shù)等)被識別(處理框906)。此外,根據(jù)在處理框902-906所識別的信息,創(chuàng)建過濾標(biāo)準(zhǔn)(處理框908)。過濾標(biāo)準(zhǔn)可包括一個(gè)或多個(gè)預(yù)定值以及對預(yù)定值和誤碼執(zhí)行的一個(gè)或多個(gè)布爾邏輯和/或算術(shù)運(yùn)算。
這樣,已經(jīng)描述了處理在客戶軟件操作期間出現(xiàn)的故障的方法及裝置。應(yīng)當(dāng)理解,以上描述只是說明性而不是限制性的。通過閱讀和理解以上說明,本領(lǐng)域的技術(shù)人員將會十分清楚其它許多實(shí)施例。因此,本發(fā)明的范圍應(yīng)當(dāng)參照所附權(quán)利要求以及這些權(quán)利要求涵蓋的完整等效范圍來確定。
權(quán)利要求
1.一種方法,包括接收關(guān)于與客戶軟件的操作相關(guān)聯(lián)的故障的故障信息;確定所述故障信息是否滿足至少一個(gè)故障過濾標(biāo)準(zhǔn);以及如果所述故障信息滿足所述至少一個(gè)故障過濾標(biāo)準(zhǔn),則使所述客戶軟件忽略所述故障。
2.如權(quán)利要求1所述的方法,其特征在于還包括確定所述故障信息不滿足所述至少一個(gè)故障過濾標(biāo)準(zhǔn);以及把所述故障傳遞給所述客戶軟件。
3.如權(quán)利要求1所述的方法,其特征在于還包括確定所述故障信息不滿足所述至少一個(gè)故障過濾標(biāo)準(zhǔn);以及確定所述故障信息是否滿足至少一個(gè)控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)。
4.如權(quán)利要求3所述的方法,其特征在于還包括如果所述故障信息滿足所述至少一個(gè)控制轉(zhuǎn)移過濾標(biāo)準(zhǔn),則把所述故障傳遞給所述客戶軟件。
5.如權(quán)利要求3所述的方法,其特征在于還包括如果所述故障信息不滿足所述至少一個(gè)控制轉(zhuǎn)移過濾標(biāo)準(zhǔn),則把控制轉(zhuǎn)移到虛擬機(jī)監(jiān)控器。
6.如權(quán)利要求1所述的方法,其特征在于,所述故障信息為故障標(biāo)識符、與所述故障相關(guān)聯(lián)的誤碼以及與所述故障相關(guān)聯(lián)的一個(gè)或多個(gè)附加數(shù)據(jù)值其中的至少一項(xiàng)。
7.如權(quán)利要求1所述的方法,其特征在于,所述故障表示中斷、異常和平臺事件其中的任一項(xiàng)。
8.如權(quán)利要求1所述的方法,其特征在于,確定所述故障信息是否滿足所述至少一個(gè)故障過濾標(biāo)準(zhǔn)的步驟包括確定所述客戶軟件的操作是否為對頁面表?xiàng)l目的寫入;以及確定所述寫入是否是把所述頁面表?xiàng)l目映射的頁面標(biāo)記為非當(dāng)前的嘗試。
9.如權(quán)利要求1所述的方法,其特征在于,確定所述故障信息是否滿足所述至少一個(gè)故障過濾標(biāo)準(zhǔn)的步驟還包括確定所述客戶軟件的操作是否為對頁面表?xiàng)l目的寫入;確定所述寫入是否是把所述頁面表?xiàng)l目映射的頁面標(biāo)記為當(dāng)前的嘗試;確定所述頁面表?xiàng)l目映射的所述頁面是否先前被標(biāo)記為當(dāng)前;確定所述寫入是否不是修改頁面幀編號的嘗試;以及確定是否出現(xiàn)一組條件中的至少一個(gè),所述條件組包括第一條件,要求所述寫入為把所述頁面表?xiàng)l目映射的所述頁面標(biāo)記為只讀的嘗試;以及第二條件,要求所述頁面表?xiàng)l目映射的所述頁面先前已經(jīng)是可寫的。
10.一種方法,包括檢測與客戶軟件的操作相關(guān)聯(lián)的出錯(cuò)條件的出現(xiàn);評估與所述出錯(cuò)條件有關(guān)的故障信息;以及根據(jù)所述評估來確定是否允許所述客戶軟件忽略所述出錯(cuò)條件。
11.如權(quán)利要求10所述的方法,其特征在于,評估故障信息包括確定所述故障信息是否滿足至少一個(gè)故障過濾標(biāo)準(zhǔn)。
12.如權(quán)利要求10所述的方法,其特征在于,所述故障信息為故障標(biāo)識符、與所述故障相關(guān)聯(lián)的誤碼以及與所述故障相關(guān)聯(lián)的一個(gè)或多個(gè)附加數(shù)據(jù)值其中的至少一項(xiàng)。
13.如權(quán)利要求10所述的方法,其特征在于,所述故障條件與所述客戶軟件訪問存儲器的嘗試相關(guān)聯(lián)。
14.如權(quán)利要求11所述的方法,其特征在于,確定所述故障信息是否滿足所述至少一個(gè)故障過濾標(biāo)準(zhǔn)的步驟包括確定所述客戶軟件的操作是否為對頁面表?xiàng)l目的寫入;以及確定所述寫入是否是把所述頁面表?xiàng)l目映射的頁面標(biāo)記為非當(dāng)前的嘗試。
15.如權(quán)利要求11所述的方法,其特征在于,確定所述故障信息是否滿足所述至少一個(gè)故障過濾標(biāo)準(zhǔn)的步驟還包括確定所述客戶軟件的操作是否為對頁面表?xiàng)l目的寫入;確定所述寫入是否是把所述頁面表?xiàng)l目映射的頁面標(biāo)記為當(dāng)前的嘗試;確定所述頁面表?xiàng)l目映射的所述頁面是否先前被標(biāo)記為當(dāng)前;確定所述寫入是否不是修改頁面幀編號的嘗試;以及確定是否出現(xiàn)一組條件中的至少一個(gè),所述條件組包括第一條件,要求所述寫入為把所述頁面表?xiàng)l目映射的所述頁面標(biāo)記為只讀的嘗試;以及第二條件,要求所述頁面表?xiàng)l目映射的所述頁面先前已經(jīng)是可寫的。
16.一種系統(tǒng),包括存儲器,其中已經(jīng)存儲了客戶軟件;以及處理器,耦合到所述存儲器,運(yùn)行所述客戶軟件,確定關(guān)于與所述客戶軟件的操作相關(guān)聯(lián)的故障的故障信息是否滿足至少一個(gè)故障過濾標(biāo)準(zhǔn),以及如果所述故障信息滿足所述至少一個(gè)故障過濾標(biāo)準(zhǔn),則使所述客戶軟件忽略所述故障。
17.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述處理器還確定所述故障信息不滿足所述至少一個(gè)故障過濾標(biāo)準(zhǔn),以及把所述故障傳遞給所述客戶軟件。
18.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述處理器還確定所述故障信息不滿足所述至少一個(gè)故障過濾標(biāo)準(zhǔn),以及確定所述故障信息是否滿足至少一個(gè)控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)。
19.如權(quán)利要求18所述的系統(tǒng),其特征在于,如果所述故障信息滿足所述至少一個(gè)控制轉(zhuǎn)移過濾標(biāo)準(zhǔn),則所述處理器還把所述故障傳遞給所述客戶軟件。
20.如權(quán)利要求18所述的系統(tǒng),其特征在于,如果所述故障信息不滿足所述至少一個(gè)控制轉(zhuǎn)移過濾標(biāo)準(zhǔn),則所述處理器還把控制轉(zhuǎn)移到虛擬機(jī)監(jiān)控器。
21.一種系統(tǒng),包括存儲器,其中已經(jīng)存儲了客戶軟件;以及處理器,耦合到所述存儲器,運(yùn)行所述客戶軟件,檢測與客戶軟件的操作相關(guān)聯(lián)的出錯(cuò)條件的出現(xiàn),評估與所述出錯(cuò)條件有關(guān)的故障信息,以及根據(jù)所述評估來確定是否允許所述客戶軟件忽略所述出錯(cuò)條件。
22.如權(quán)利要求21所述的系統(tǒng),其特征在于,所述處理器通過確定所述故障信息是否滿足所述至少一個(gè)故障過濾標(biāo)準(zhǔn)來評估故障信息。
23.如權(quán)利要求21所述的系統(tǒng),其特征在于,所述故障條件與所述客戶軟件訪問存儲器的嘗試相關(guān)聯(lián)。
24.如權(quán)利要求22所述的系統(tǒng),其特征在于,所述處理器通過確定所述客戶軟件的操作是否為對頁面表?xiàng)l目的寫入以及確定所述寫入是否為把所述頁面表?xiàng)l目映射的頁面標(biāo)記為非當(dāng)前的嘗試,來確定所述故障信息是否滿足所述至少一個(gè)故障過濾標(biāo)準(zhǔn)。
25.一種機(jī)器可讀媒體,其中包含指令,這些指令由處理系統(tǒng)執(zhí)行時(shí),使所述處理系統(tǒng)執(zhí)行一種方法,所述方法包括接收關(guān)于與客戶軟件的操作相關(guān)聯(lián)的故障的故障信息;確定所述故障信息是否滿足至少一個(gè)故障過濾標(biāo)準(zhǔn);以及如果所述故障信息滿足所述至少一個(gè)故障過濾標(biāo)準(zhǔn),則使所述客戶軟件忽略所述故障。
26.如權(quán)利要求25所述的機(jī)器可讀媒體,其特征在于,所述方法還包括確定所述故障信息不滿足所述至少一個(gè)故障過濾標(biāo)準(zhǔn);以及把所述故障傳遞給所述客戶軟件。
27.如權(quán)利要求25所述的機(jī)器可讀媒體,其特征在于,所述方法還包括確定所述故障信息不滿足所述至少一個(gè)故障過濾標(biāo)準(zhǔn);以及確定所述故障信息是否滿足至少一個(gè)控制轉(zhuǎn)移過濾標(biāo)準(zhǔn)。
28.一種機(jī)器可讀媒體,其中包含指令,這些指令由處理系統(tǒng)執(zhí)行時(shí),使所述處理系統(tǒng)執(zhí)行一種方法,所述方法包括檢測與客戶軟件的操作相關(guān)聯(lián)的出錯(cuò)條件的出現(xiàn);評估與所述出錯(cuò)條件有關(guān)的故障信息;以及根據(jù)所述評估來確定是否允許所述客戶軟件忽略所述出錯(cuò)條件。
29.如權(quán)利要求28所述的機(jī)器可讀媒體,其特征在于,評估故障信息包括確定所述故障信息是否滿足至少一個(gè)故障過濾標(biāo)準(zhǔn)。
30.如權(quán)利要求28所述的機(jī)器可讀媒體,其特征在于,所述故障條件與所述客戶軟件訪問存儲器的嘗試相關(guān)聯(lián)。
全文摘要
在一個(gè)實(shí)施例中,接收關(guān)于與客戶軟件的操作相關(guān)聯(lián)的故障的故障信息。此外,確定故障信息是否滿足一個(gè)或多個(gè)故障過濾標(biāo)準(zhǔn)。如果該確定為肯定,則允許客戶軟件忽略該故障。
文檔編號G06F11/07GK1692332SQ03819903
公開日2005年11月2日 申請日期2003年6月19日 優(yōu)先權(quán)日2002年6月29日
發(fā)明者R·烏爾利希, A·安德森, S·貝內(nèi)特, E·科塔-羅布爾斯, S·耶亞辛, A·卡吉, G·奈格爾 申請人:英特爾公司