專(zhuān)利名稱(chēng):用于控制虛擬機(jī)系統(tǒng)中的外部中斷的裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于控制虛擬機(jī)系統(tǒng)中的外部中斷的機(jī)制。
背景技術(shù):
在一般的計(jì)算機(jī)系統(tǒng)中,設(shè)備通過(guò)產(chǎn)生中斷請(qǐng)求來(lái)向系統(tǒng)軟件請(qǐng)求服務(wù),該中斷請(qǐng)求經(jīng)由多條中斷請(qǐng)求線路被傳送到中斷控制器。一旦中斷控制器確認(rèn)了一條有效的中斷請(qǐng)求線路,它發(fā)送中斷信號(hào)到處理器。作為響應(yīng),處理器上的中斷控制器接口邏輯判定軟件是否準(zhǔn)備好接收該中斷。如果軟件沒(méi)有準(zhǔn)備好接收該中斷,則該中斷被保持在掛起(pending)狀態(tài)直至軟件準(zhǔn)備好。一旦軟件被判定為準(zhǔn)備好了,則中斷控制器接口邏輯請(qǐng)求中斷控制器報(bào)告哪一個(gè)掛起的中斷是最高優(yōu)先級(jí)的。中斷控制器在不同中斷請(qǐng)求線路之間區(qū)分優(yōu)先級(jí),并向處理器確認(rèn)最高優(yōu)先級(jí)中斷請(qǐng)求,該處理器然后將控制流轉(zhuǎn)到處理該中斷請(qǐng)求的代碼。
在傳統(tǒng)的操作系統(tǒng)(OS)中,所有的中斷都由被稱(chēng)為OS內(nèi)核的單個(gè)實(shí)體來(lái)控制。在虛擬機(jī)系統(tǒng)中,虛擬機(jī)監(jiān)視器(VMM)應(yīng)該具有對(duì)發(fā)生在系統(tǒng)中的各種操作和事件的最終控制權(quán),以提供虛擬機(jī)的正確操作并且保護(hù)本機(jī)免受其它虛擬機(jī)的侵害以及保護(hù)虛擬機(jī)不受彼此的侵害。為了實(shí)現(xiàn)這一點(diǎn),當(dāng)客戶(hù)軟件訪問(wèn)硬件資源或者引起發(fā)生例如中斷或者異常的某些事件時(shí),VMM一般接收控制權(quán)。因此,在虛擬機(jī)系統(tǒng)中,中斷一般由VMM控制。
具體而言,當(dāng)虛擬機(jī)中由VMM支持的操作引起系統(tǒng)設(shè)備產(chǎn)生中斷時(shí),VMM在虛擬機(jī)和中斷控制器之間進(jìn)行調(diào)解。也就是說(shuō),當(dāng)中斷信號(hào)出現(xiàn)時(shí),當(dāng)前運(yùn)行的虛擬機(jī)被中斷并且處理器的控制被傳遞給VMM。VMM當(dāng)接收到該中斷時(shí)執(zhí)行中斷控制器的任何必要的操作,并且處理中斷或者將該中斷遞送給合適的虛擬機(jī)。
本發(fā)明以示例而不是限制的方式通過(guò)附圖的圖形被說(shuō)明,附圖中相似的標(biāo)號(hào)表示類(lèi)似的部件,這些附圖中圖1圖示了本發(fā)明可運(yùn)行于其中的虛擬機(jī)環(huán)境的一個(gè)實(shí)施例;圖2是用于在虛擬機(jī)環(huán)境中處理中斷的系統(tǒng)的一個(gè)實(shí)施例的框圖;圖3是用于在虛擬機(jī)系統(tǒng)中處理中斷的方法的一個(gè)實(shí)施例的流程圖;圖4是圖示了根據(jù)本發(fā)明的一個(gè)實(shí)施例在具有優(yōu)選虛擬機(jī)的虛擬機(jī)系統(tǒng)中處理中斷的框圖;圖5是用于處理在非優(yōu)選虛擬機(jī)操作過(guò)程中發(fā)生的中斷的方法的一個(gè)
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)方面,提供一種用于控制虛擬機(jī)環(huán)境中的外部中斷的裝置,該裝置包括識(shí)別邏輯,用于在客戶(hù)軟件的操作過(guò)程中識(shí)別掛起的中斷;管理判定邏輯,用于判定所述中斷是否由所述客戶(hù)軟件管理;遞送邏輯,用于在所述中斷由所述客戶(hù)軟件管理時(shí)向所述客戶(hù)軟件遞送所述中斷;就緒判定邏輯,用于在所述中斷不由所述客戶(hù)軟件管理時(shí)判定虛擬機(jī)監(jiān)視器是否準(zhǔn)備好接收所述系統(tǒng)的控制權(quán);保持邏輯,用于在所述中斷不由所述客戶(hù)軟件管理且所述虛擬機(jī)監(jiān)視器沒(méi)有準(zhǔn)備好接收控制權(quán)時(shí),保持所述中斷掛起;以及轉(zhuǎn)送邏輯,用于在所述中斷不由所述客戶(hù)軟件管理且所述虛擬機(jī)監(jiān)視器準(zhǔn)備好接收控制權(quán)時(shí),向所述虛擬機(jī)監(jiān)視器轉(zhuǎn)送控制權(quán)。
具體實(shí)施例方式
本發(fā)明描述了用于控制虛擬機(jī)系統(tǒng)中的外部中斷的方法和裝置。在以下描述中,為了便于解釋?zhuān)愂隽撕芏嗑唧w細(xì)節(jié)以提供對(duì)本發(fā)明的完整的理解。但是對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō)顯然本發(fā)明可以不通過(guò)這些具體細(xì)節(jié)而實(shí)現(xiàn)。
以下詳細(xì)描述的一些部分表現(xiàn)為算法和對(duì)計(jì)算機(jī)系統(tǒng)的寄存器或者存儲(chǔ)器中的數(shù)據(jù)位的操作的符號(hào)表示。這些算法描述和表示是本領(lǐng)域的技術(shù)人員用于最有效地向本領(lǐng)域的其它技術(shù)人員表達(dá)他們工作的內(nèi)容的手段。在這里算法通常被認(rèn)為是導(dǎo)致期望結(jié)果的自洽(self-consistent)的操作序列。所述操作需要對(duì)物理量進(jìn)行物理操縱。通常,盡管不是必須的,這些量具有能夠被存儲(chǔ)、發(fā)送、合并、比較以及以其它方式操縱的電信號(hào)或者磁信號(hào)的形式。主要由于通用的緣故,將這些信號(hào)稱(chēng)為位、值、元素、符號(hào)、字符、項(xiàng)、數(shù)字等已經(jīng)被證明是方便的。
但是應(yīng)該認(rèn)識(shí)到,所有這些以及類(lèi)似的術(shù)語(yǔ)都與適當(dāng)?shù)奈锢砹肯嗦?lián)系,并且只是用來(lái)表示這些量的方便的標(biāo)簽。除非另有特殊說(shuō)明,從以下討論中顯而易見(jiàn),應(yīng)該理解貫穿本發(fā)明使用了例如“處理”、“計(jì)算”、“演算(calculating)”或者“判定”等術(shù)語(yǔ)的討論可以指的是操縱表示為計(jì)算機(jī)系統(tǒng)寄存器和存儲(chǔ)器內(nèi)的物理(電子)量的數(shù)據(jù)并將它們轉(zhuǎn)換成類(lèi)似地表示成計(jì)算機(jī)系統(tǒng)存儲(chǔ)器或者寄存器或者其它這樣的信息存儲(chǔ)、發(fā)送或顯示設(shè)備內(nèi)的物理量的計(jì)算機(jī)系統(tǒng)或者類(lèi)似的電子計(jì)算設(shè)備的動(dòng)作和方法。
在以下對(duì)實(shí)施例的詳細(xì)描述中,參照了附圖,所述附圖通過(guò)圖示示出了本發(fā)明可以實(shí)現(xiàn)于其中的具體實(shí)施例。在圖中,相似的數(shù)字描述視圖中基本上類(lèi)似的組成部分。對(duì)這些實(shí)施例進(jìn)行了足夠詳細(xì)的描述以使得本領(lǐng)域的技術(shù)人員能夠?qū)崿F(xiàn)本發(fā)明。也可以利用其它實(shí)施例,并且可以在不背離本發(fā)明的范圍的情況下作出電氣上的改變。另外,應(yīng)該理解本發(fā)明的各種實(shí)施例盡管不同,但是不一定是相互排斥的。例如,一個(gè)實(shí)施例中所描述的特定特征、結(jié)構(gòu)或者特性可以被包括在其它實(shí)施例中。因此以下詳細(xì)的描述不應(yīng)被視為是限制性的,而本發(fā)明的范圍僅由所附權(quán)利要求及其等同物來(lái)界定。
圖1圖示了本發(fā)明可以運(yùn)行于其中的虛擬機(jī)環(huán)境100的一個(gè)實(shí)施例。在這個(gè)實(shí)施例中,裸平臺(tái)(bare platform)硬件116包括計(jì)算平臺(tái),該計(jì)算平臺(tái)能夠,例如,運(yùn)行標(biāo)準(zhǔn)操作系統(tǒng)(OS)或者例如VMM 112的虛擬機(jī)監(jiān)視器(VMM)。VMM 112盡管一般用軟件實(shí)現(xiàn),但是可以仿真和向更高級(jí)軟件提供裸機(jī)接口。這樣的更高級(jí)軟件可包括標(biāo)準(zhǔn)或者實(shí)時(shí)OS,可以是具有有限操作系統(tǒng)功能的高度精簡(jiǎn)的操作環(huán)境,可以不包括傳統(tǒng)的OS設(shè)施等?;蛘?,例如,VMM 112可以運(yùn)行于另一個(gè)VMM內(nèi)或者運(yùn)行于其上。VMM和它們典型的特征以及功能是本領(lǐng)域技術(shù)人員都了解的,并且能夠以例如硬件、軟件、固件或者各種技術(shù)的組合的方式來(lái)實(shí)現(xiàn)。
平臺(tái)硬件116可以是個(gè)人電腦(PC)、大型機(jī)、手提設(shè)備、便攜式電腦、機(jī)頂盒或者任何其它計(jì)算系統(tǒng)。平臺(tái)硬件116包括處理器118和存儲(chǔ)器120。
處理器118可以是能夠執(zhí)行軟件的任何類(lèi)型的處理器,例如微處理器、數(shù)字信號(hào)處理器、微控制器等。處理器118可以包括用于執(zhí)行本發(fā)明的方法實(shí)施例的微碼、可編程邏輯或者硬編碼邏輯(hardcoded logic)。盡管圖1示出了僅僅一個(gè)這樣的處理器118,但是在該系統(tǒng)中可以有一個(gè)或者多個(gè)處理器。
存儲(chǔ)器120可以是硬盤(pán)、軟盤(pán)、隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、閃存、以上設(shè)備的任何組合或者處理器118可讀的任何類(lèi)型的機(jī)器介質(zhì)。存儲(chǔ)器120可以存儲(chǔ)用于執(zhí)行本發(fā)明的方法實(shí)施例的指令和/或數(shù)據(jù)。
VMM 112對(duì)其它軟件(即,“客戶(hù)(guest)”軟件)呈現(xiàn)出一個(gè)或者多個(gè)虛擬機(jī)(VM)的抽象,所述虛擬機(jī)可對(duì)各種客戶(hù)提供相同或者不同的抽象。圖1示出了兩個(gè)VM 102和114。運(yùn)行在各個(gè)VM上的客戶(hù)軟件可以包括例如客戶(hù)OS 104或106的客戶(hù)OS以及各種客戶(hù)軟件應(yīng)用程序108和110。客戶(hù)OS 104和106運(yùn)行于VM 102和114之上,客戶(hù)OS 104和106中的每一個(gè)都希望訪問(wèn)VM 102和114內(nèi)的物理資源(例如處理器寄存器、存儲(chǔ)器以及I/O設(shè)備)并且處理包括在VM 102和114的操作過(guò)程中由系統(tǒng)設(shè)備所產(chǎn)生的中斷的各種事件。
在一個(gè)實(shí)施例中,在VM 102或114的操作過(guò)程中所產(chǎn)生的中斷可以或者被歸類(lèi)為“特權(quán)”事件或者被歸類(lèi)為“無(wú)特權(quán)”事件。對(duì)于特權(quán)事件,VMM 112幫助提供客戶(hù)軟件所想要的功能同時(shí)對(duì)這些特權(quán)事件保持最終的控制權(quán)。無(wú)特權(quán)事件不需要由VMM 112來(lái)處理,它們由客戶(hù)軟件控制。
在一個(gè)實(shí)施例中,基于中斷控制指示(indicator)的當(dāng)前值將中斷歸類(lèi)為特權(quán)的或者無(wú)特權(quán)的。中斷控制指示指定是客戶(hù)軟件還是VMM 112來(lái)管理中斷。
在一個(gè)實(shí)施例中,單個(gè)中斷控制指示(例如,單個(gè)位)被用于所有中斷。在另一個(gè)實(shí)施例中,為各個(gè)中斷類(lèi)型使用單獨(dú)的中斷控制指示(例如,中斷號(hào))。例如,在Pentium IV的指令集構(gòu)架(ISA)(以下稱(chēng)為IA-32ISA)中,可以有256個(gè)中斷控制指示(即,256位),每一種可能的可屏蔽硬件中斷類(lèi)型對(duì)應(yīng)一個(gè)。在另一些實(shí)施例中,可以將單獨(dú)的中斷控制指示用于中斷類(lèi)型組或者用于中斷的任何其它組合。
中斷控制指示一般不能被VM 102和114所訪問(wèn)和/或修改。在一個(gè)實(shí)施例中,VMM 112在將控制權(quán)轉(zhuǎn)移給VM 102或114之前設(shè)置中斷控制指示的值。或者,VM 102和114中的每一個(gè)都與被設(shè)置為預(yù)定值的不同(組)中斷控制指示相聯(lián)系。
在一個(gè)實(shí)施例中,所述一個(gè)或多個(gè)中斷控制指示被存儲(chǔ)于虛擬機(jī)控制結(jié)構(gòu)(VMCS)122中,該虛擬機(jī)控制結(jié)構(gòu)可以存在于存儲(chǔ)器120(如圖1所示)中,或者處理器118、存儲(chǔ)器120和處理器118的組合或者任何其它存儲(chǔ)單元中。盡管圖1中只示出了一個(gè)這樣的VMCS,不同客戶(hù)軟件可以通過(guò)利用來(lái)自不同VMCS鏡像的數(shù)據(jù)被控制。應(yīng)該認(rèn)識(shí)到任何其它數(shù)據(jù)結(jié)構(gòu)(例如,芯片上(on-chip)高速緩存、文件、查詢(xún)表等)可以被用來(lái)存儲(chǔ)中斷控制指示而不失一般性。中斷控制指示可以是控制向量中的位字段,或者可以是存儲(chǔ)于VMCS的單獨(dú)域中的位或者位圖。
或者,在一個(gè)實(shí)施例中,所述一個(gè)或多個(gè)中斷控制指示被存儲(chǔ)于一個(gè)或多個(gè)機(jī)器寄存器或者存儲(chǔ)器120中。
如果中斷產(chǎn)生在客戶(hù)軟件的操作過(guò)程中,則參考(consult)適當(dāng)?shù)闹袛嗫刂浦甘疽耘卸ㄔ撝袛嗍欠裼煽蛻?hù)軟件管理。如果該判定是肯定的,那么該中斷將由客戶(hù)軟件管理。否則,該中斷將由VMM 112管理。
在一個(gè)實(shí)施例中,如果中斷由VMM 112管理,則控制權(quán)被轉(zhuǎn)移給VMM 112。VM 102或104與VMM 112之間的控制權(quán)的轉(zhuǎn)移可通過(guò)任何本領(lǐng)域公知的機(jī)制來(lái)實(shí)現(xiàn)。在控制權(quán)被轉(zhuǎn)移到VMM 112之后對(duì)中斷的處理將在下面詳細(xì)描述。
在一個(gè)實(shí)施例中,如果中斷由客戶(hù)軟件管理,那么控制權(quán)屬于客戶(hù)軟件。如果當(dāng)前正在執(zhí)行的軟件準(zhǔn)備好要接收中斷,則中斷會(huì)被遞送給客戶(hù)軟件,下面將更詳細(xì)地進(jìn)行描述。
圖2是用于在虛擬機(jī)環(huán)境中處理中斷的系統(tǒng)200的一個(gè)實(shí)施例的框圖。
參照?qǐng)D2,設(shè)備214(例如,I/O設(shè)備)通過(guò)產(chǎn)生中斷請(qǐng)求向系統(tǒng)軟件請(qǐng)求服務(wù),該中斷請(qǐng)求經(jīng)由一個(gè)或多個(gè)中斷請(qǐng)求線路216被傳送到中斷控制器212。一旦中斷控制器212確認(rèn)了有效的中斷請(qǐng)求線路210,它發(fā)送中斷信號(hào)210到CPU 202。在一個(gè)實(shí)施例中,可以有不止一個(gè)到CPU 202的中斷信號(hào)線路210,或者作為替代,可以通過(guò)總線消息或者通過(guò)任何其它通信機(jī)制或協(xié)議來(lái)遞送該中斷“信號(hào)”。
響應(yīng)于來(lái)自中斷控制器212的有效中斷信號(hào)210,中斷控制器接口邏輯204判定哪個(gè)軟件具有對(duì)該中斷的控制權(quán)。如果中斷發(fā)生在VMM的操作過(guò)程中,則該中斷無(wú)條件地由VMM管理。或者,如果該操作發(fā)生在客戶(hù)軟件的操作過(guò)程中,則中斷控制器接口邏輯204判定是客戶(hù)軟件還是VMM管理該中斷。
在一個(gè)實(shí)施例中,該判定取決于存儲(chǔ)在VMCS 208中的中斷控制指示的當(dāng)前值。該中斷控制指示指定是客戶(hù)軟件還是VMM管理該中斷。如上所述,一個(gè)或多個(gè)中斷控制指示可以用于這些中斷。如果使用了不止一個(gè)控制指示,那么訪問(wèn)與該被處理的中斷相聯(lián)系的特定中斷控制指示。
如果中斷控制指示指定了該中斷要由客戶(hù)軟件管理,那么中斷控制器接口邏輯204再判定客戶(hù)軟件是否準(zhǔn)備好接收中斷。在一個(gè)實(shí)施例中,中斷控制器接口邏輯204基于對(duì)中斷標(biāo)記206的參考作出該判定,所述中斷標(biāo)記206當(dāng)客戶(hù)軟件接受中斷的能力狀態(tài)改變時(shí)可以被客戶(hù)軟件更新。例如,在IA-32ISA中,EFLAGS寄存器包含有IF中斷標(biāo)記位,該標(biāo)記位部分地控制了是否中斷會(huì)被遞送給該軟件(在IA-32 ISA中,其它因素可以阻擋中斷,并且這些因素在中斷是否會(huì)被遞送的判定中是必須被考慮的)。中斷標(biāo)記206存在于CPU 202中,在中斷控制器接口邏輯204外部或者內(nèi)部。作為替代,本領(lǐng)域任何已知的其他機(jī)制可以被用于判定客戶(hù)軟件是否準(zhǔn)備好接受中斷。
如果中斷控制器接口邏輯204判定客戶(hù)軟件準(zhǔn)備好要接收中斷,那么它請(qǐng)求中斷控制器212確認(rèn)哪個(gè)掛起的中斷是最高優(yōu)先級(jí)的并將該最高優(yōu)先級(jí)中斷遞送給客戶(hù)軟件,這樣使得控制流轉(zhuǎn)到與客戶(hù)軟件相聯(lián)系的中斷處理代碼的開(kāi)始。否則,如果客戶(hù)軟件當(dāng)前沒(méi)有準(zhǔn)備好接收中斷,則中斷被保持在掛起狀態(tài)直到客戶(hù)軟件準(zhǔn)備好。
如果中斷控制指示指定VMM管理該中斷,則在一個(gè)實(shí)施例中,中斷控制器接口邏輯204觸發(fā)向VMM轉(zhuǎn)送控制權(quán)。
在另一個(gè)實(shí)施例中,向VMM轉(zhuǎn)送控制權(quán)是以這里被稱(chēng)為監(jiān)視中斷標(biāo)記(MIF)的中斷轉(zhuǎn)送標(biāo)記的當(dāng)前值為條件的。也就是說(shuō),中斷控制器接口邏輯204首先檢查MIF的當(dāng)前值以判定由VMM所管理的中斷的到來(lái)是否應(yīng)該引起向VMM轉(zhuǎn)移控制權(quán)。MIF以與中斷標(biāo)記206相似的方式工作,指示是否允許中斷引起向VMM的轉(zhuǎn)送。在一個(gè)實(shí)施例中,MIF存在于VMCS 208中并由VMM控制。在另一個(gè)實(shí)施例中,MIF存在于機(jī)器寄存器或者存儲(chǔ)器中。如果MIF不要求控制權(quán)的轉(zhuǎn)移,則該中斷將被掛起并且不會(huì)發(fā)生控制權(quán)的轉(zhuǎn)移。否則,中斷控制器接口邏輯204將觸發(fā)向VMM轉(zhuǎn)移控制權(quán)。
在一個(gè)實(shí)施例中,為具有不同特性的中斷維持多個(gè)MIF,并且基于中斷的特性從這些MIF中選擇用于特定中斷的MIF。
在一個(gè)實(shí)施例中,當(dāng)要求向VMM轉(zhuǎn)移控制權(quán)時(shí),向VMM轉(zhuǎn)移控制權(quán)之后,中斷在中斷控制器212處被掛起。在這個(gè)實(shí)施例中,在緊接在控制權(quán)轉(zhuǎn)移之后的時(shí)間里,部分地確認(rèn)了產(chǎn)生中斷的設(shè)備的中斷源標(biāo)識(shí)(identity)(例如,在IA-32 ISA中被稱(chēng)為向量)可能對(duì)于VMM來(lái)說(shuō)是未知的。作為控制權(quán)轉(zhuǎn)移的一部分,處理器在轉(zhuǎn)移之后將有效的中斷標(biāo)記206清零。轉(zhuǎn)移控制權(quán)之后,VMM可以利用中斷標(biāo)記206來(lái)使能中斷并遞送該中斷。VMM可以利用本領(lǐng)域任何已知的機(jī)制來(lái)判定掛起的中斷的向量。例如,在IA-32 ISA中,各個(gè)不同的中斷向量由唯一的中斷處理程序(interrupt handler)處理,從而當(dāng)中斷被遞送給VMM時(shí)確認(rèn)該中斷向量。
在另一個(gè)實(shí)施例中,中斷源標(biāo)識(shí)在向VMM轉(zhuǎn)移控制權(quán)之前在中斷控制器212處是已知的。在這個(gè)實(shí)施例中,中斷可以與指定該中斷源標(biāo)識(shí)的數(shù)據(jù)一起被遞送給VMM。例如,該數(shù)據(jù)可以在VMCS的一個(gè)域中被遞送。
圖3是用于在虛擬機(jī)系統(tǒng)中處理中斷的方法300的一個(gè)實(shí)施例的流程圖。該方法可以由可包括硬件(例如,電路、專(zhuān)用邏輯、可編程邏輯、微碼等)、軟件(例如運(yùn)行于一般用途的計(jì)算機(jī)系統(tǒng)或者專(zhuān)用機(jī)器上的)或者兩者的組合的處理邏輯來(lái)完成。
參照?qǐng)D3,方法300開(kāi)始于處理邏輯確認(rèn)掛起中斷的存在(處理框302)和判定中斷是發(fā)生在VMM的操作過(guò)程中還是客戶(hù)軟件的操作過(guò)程中(決定框304)。
如果中斷發(fā)生在VMM的操作過(guò)程中,處理邏輯判定VMM是否準(zhǔn)備好接收中斷(決定框306)。如果判定是肯定的,那么處理邏輯將該中斷遞送給VMM(處理框308)。如果判定是否定的,那么處理邏輯不向VMM遞送該中斷,令該中斷掛起(處理框316)。在一個(gè)實(shí)施例中,處理邏輯利用中斷標(biāo)記(例如,在IA-32 ISA中被稱(chēng)為EFLAGS.IF的中斷標(biāo)記)的當(dāng)前設(shè)置來(lái)判定VMM是否準(zhǔn)備好接收中斷。
如果決定框304處作出的判定是否定的,即,中斷發(fā)生在客戶(hù)軟件的操作過(guò)程中,處理邏輯再判定客戶(hù)軟件是否管理該中斷(決定框310)。該判定取決于中斷控制指示。在一個(gè)實(shí)施例中,中斷控制指示在每次VMM向客戶(hù)軟件轉(zhuǎn)移控制權(quán)時(shí)由VMM設(shè)置。如上所述,可以有一個(gè)或多個(gè)中斷控制指示,對(duì)具體的中斷控制指示的選擇取決于中斷向量或者其它標(biāo)準(zhǔn)。在一個(gè)實(shí)施例中,每個(gè)虛擬機(jī)都具有一個(gè)單獨(dú)的中斷控制指示。如果使用了不止一個(gè)中斷控制指示,那么訪問(wèn)與正被處理的中斷相聯(lián)系的中斷控制指示。
如果中斷控制指示指定客戶(hù)軟件管理該中斷,則處理邏輯通過(guò)執(zhí)行如上所述的處理框306、308和316試圖將該中斷遞送給客戶(hù)軟件。
在一個(gè)實(shí)施例中,如果中斷控制指示指定客戶(hù)軟件不管理該中斷,則處理邏輯參考這里被稱(chēng)為監(jiān)視中斷標(biāo)記(MIF)的中斷轉(zhuǎn)送標(biāo)記(interrupttransition flag)并且基于其內(nèi)容作出決定(決定框314)。如果MIF指示VMM沒(méi)有準(zhǔn)備好接收由中斷引起的控制權(quán)轉(zhuǎn)移,那么該中斷被掛起并且控制權(quán)屬于客戶(hù)軟件。否則,處理邏輯將控制權(quán)轉(zhuǎn)送給VMM(處理框318)。
在另一個(gè)實(shí)施例(未示出)中,沒(méi)有使用MIF,并且一旦判定了中斷由VMM管理則控制權(quán)的轉(zhuǎn)移無(wú)條件地發(fā)生。
在控制權(quán)向VMM轉(zhuǎn)移的過(guò)程中,中斷標(biāo)記可以被設(shè)置為預(yù)定值,不再修改或者根據(jù)一些其它的機(jī)制而更新。在向VMM轉(zhuǎn)移控制權(quán)之后,處理邏輯執(zhí)行如上所述的處理框306、308和316。
如上所述,在向VMM轉(zhuǎn)移控制權(quán)(處理框318)之后,該中斷可以被掛起在中斷控制器處。如果中斷源的標(biāo)識(shí)已知,那么處理邏輯可試圖利用指定該中斷的源的數(shù)據(jù)向VMM遞送該中斷。
在一個(gè)實(shí)施例中,如果在向VMM轉(zhuǎn)移控制權(quán)之后該中斷被掛起在中斷控制器處,則VMM當(dāng)其準(zhǔn)備好接收中斷時(shí)更新中斷標(biāo)記。然后處理邏輯向VMM遞送該中斷。接著VMM可以自己處理該中斷?;蛘?,VMM可以評(píng)估該中斷的性質(zhì)以判定指派哪個(gè)虛擬機(jī)去處理該中斷,仿真向所指派的虛擬機(jī)遞送該中斷,并向該指派的虛擬機(jī)轉(zhuǎn)送控制權(quán),下面將對(duì)這些作詳細(xì)討論。
在另一個(gè)實(shí)施例(未示出)中,處理邏輯不向VMM遞送中斷。作為替代,處理邏輯向VMM提供關(guān)于該中斷的信息(例如,或者響應(yīng)于VMM的請(qǐng)求或者作為當(dāng)向VMM轉(zhuǎn)送控制權(quán)時(shí)傳給VMM的信息的一部分)?;谠撔畔?,VMM判定指派哪個(gè)虛擬機(jī)來(lái)處理該中斷,以及是向該虛擬機(jī)轉(zhuǎn)移控制權(quán)(這里中斷將象以上所述的那樣被遞送)還是仿真向該虛擬機(jī)遞送該中斷,并且然后向該虛擬機(jī)轉(zhuǎn)移控制權(quán)。
注意當(dāng)中斷被掛起時(shí),方法300將被不斷地重復(fù)直至該中斷被遞送給VMM或者客戶(hù)軟件,或者該中斷不再掛起。
在一個(gè)實(shí)施例中,虛擬機(jī)系統(tǒng)包括優(yōu)選的虛擬機(jī)和一個(gè)或多個(gè)非優(yōu)選虛擬機(jī)。該優(yōu)選虛擬機(jī)被指派去處理所有由系統(tǒng)設(shè)備產(chǎn)生的中斷。非優(yōu)選虛擬機(jī)被指派完成除了中斷處理以外的操作(例如,各種計(jì)算、加密、解密等)。圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例圖示了在具有優(yōu)選虛擬機(jī)的虛擬機(jī)系統(tǒng)中處理中斷的框圖。
參照?qǐng)D4,VM1 404是在系統(tǒng)400中管理所有中斷的優(yōu)選虛擬機(jī)。VM2 406是在該系統(tǒng)400中管理不涉及中斷處理的操作的非優(yōu)選虛擬機(jī)。盡管圖4僅示出了一個(gè)非優(yōu)選的VM(例如,VM2 406),但是在系統(tǒng)中可以有不止一個(gè)非優(yōu)選VM。VMM 402知道VM1 404是優(yōu)選虛擬機(jī)。當(dāng)向VM1 404轉(zhuǎn)移控制權(quán)時(shí),VMM 402將中斷控制指示設(shè)置為指示VM1404管理所有中斷的值。其后,當(dāng)在VM1 404的操作過(guò)程中發(fā)生中斷時(shí),中斷控制器接口邏輯參考適當(dāng)?shù)闹袛嗫刂浦甘?,判定該中斷由VM1 404管理,并且當(dāng)VM1 404準(zhǔn)備好接收中斷時(shí)向VM1 404遞送該中斷。
當(dāng)向VM2 406轉(zhuǎn)移控制權(quán)時(shí),VMM 402將中斷控制指示(或多個(gè)中斷控制指示中的每一個(gè))設(shè)置為指示VM2 406不管理任何中斷的值。其后,當(dāng)在VM2 406的操作過(guò)程中發(fā)生中斷時(shí),中斷控制器接口邏輯參考適當(dāng)?shù)闹袛嗫刂浦甘?,判定VM2 406不管理該中斷,并且觸發(fā)向VMM 402轉(zhuǎn)移控制權(quán)。另外,在一個(gè)實(shí)施例中,在向VMM 402轉(zhuǎn)送控制權(quán)的過(guò)程中,中斷控制器接口邏輯將中斷標(biāo)記設(shè)置為指示所有中斷被屏蔽的值(例如,將中斷標(biāo)記設(shè)置為0),從而防止向VMM 402遞送中斷。在另一個(gè)實(shí)施例中,中斷標(biāo)記可以被設(shè)置為預(yù)定值或者從虛擬機(jī)控制結(jié)構(gòu)(VMCS)讀取到的值。
當(dāng)控制權(quán)被轉(zhuǎn)送到VMM 402時(shí),VMM 402被通知該次轉(zhuǎn)移的起因是一個(gè)掛起的中斷。VMM 402知道所有中斷要由VM1 404處理,其修改中斷控制指示以允許VM1 404管理所有中斷并向VM1 404轉(zhuǎn)移控制權(quán)。如果在VM1 404接收到控制權(quán)之后,中斷標(biāo)記指示VM1 404準(zhǔn)備好接收中斷,那么中斷控制器接口邏輯將從中斷控制器處取得最高優(yōu)先級(jí)中斷并將該最高優(yōu)先級(jí)中斷遞送給VM1 404。否則,VM1 404將在其準(zhǔn)備好接收中斷時(shí)盡快更新中斷標(biāo)記。當(dāng)VM1 404準(zhǔn)備好接收中斷,中斷控制器接口邏輯將從控制器處取得最高優(yōu)先級(jí)中斷,并且將該最高優(yōu)先級(jí)中斷遞送給VM1 404。
在另一個(gè)實(shí)施例中,如以上結(jié)合圖3所述的那樣,在從VM2 406向VMM轉(zhuǎn)送控制權(quán)之前參考監(jiān)視中斷標(biāo)記(MIF)。
圖5是用于處理發(fā)生在非優(yōu)選虛擬機(jī)的操作過(guò)程中的中斷的方法500的一個(gè)實(shí)施例的流程圖。該方法可以由處理邏輯來(lái)完成,該處理邏輯可以包括硬件(例如,電路、專(zhuān)用邏輯、可編程邏輯、微碼等)、軟件(例如運(yùn)行在一般用途的計(jì)算機(jī)系統(tǒng)或者專(zhuān)用機(jī)器之上的)或者兩者的組合。
參照?qǐng)D5,方法500開(kāi)始于處理邏輯確認(rèn)和處理非優(yōu)選虛擬機(jī)的操作過(guò)程中掛起中斷的出現(xiàn)(例如,如圖3所示的),引起向VMM轉(zhuǎn)移控制權(quán)(處理框502)。接著,VMM調(diào)用優(yōu)選虛擬機(jī)并將中斷控制指示設(shè)置為允許該優(yōu)選虛擬機(jī)管理中斷的值(處理框508)。
在調(diào)用優(yōu)選VM之后,如果中斷還是掛起的(框510),則處理邏輯作出關(guān)于優(yōu)選虛擬機(jī)是否準(zhǔn)備好接收中斷(即,參考中斷標(biāo)記和/或其它機(jī)器狀態(tài)來(lái)判定它是否指示中斷沒(méi)有被屏蔽)的判定(決定框514)。如果該判定是肯定的,那么處理邏輯向客戶(hù)軟件遞送該中斷(處理框518)。如果客戶(hù)沒(méi)有準(zhǔn)備好接收中斷,那么該中斷被掛起(處理框516)并且重復(fù)評(píng)估準(zhǔn)備情況(返回處理框510)。
在一個(gè)實(shí)施例中,VMM任何時(shí)候都不消除對(duì)中斷的屏蔽(即,它不將中斷標(biāo)記改變成指示它可以接受中斷)。在另一個(gè)實(shí)施例(未示出)中,VMM可以消除對(duì)中斷的屏蔽。如果當(dāng)VMM正在執(zhí)行時(shí)中斷是掛起的并且該中斷沒(méi)有被中斷標(biāo)記所屏蔽,則該中斷將被遞送給VMM。VMM當(dāng)優(yōu)選VM準(zhǔn)備好接收中斷時(shí)仿真向其遞送該中斷并且向該優(yōu)選VM轉(zhuǎn)移控制權(quán)。
圖6是用于在其中中斷可以由不止一個(gè)虛擬機(jī)或者由VMM處理的虛擬機(jī)系統(tǒng)中處理中斷的方法600的一個(gè)實(shí)施例的流程圖。該方法可以由處理邏輯完成,該處理邏輯可以包括硬件(例如,電路、專(zhuān)用邏輯、可編程邏輯、微碼等)、軟件(例如運(yùn)行于一般用途的計(jì)算機(jī)系統(tǒng)或者專(zhuān)用機(jī)器之上的)或者兩者的組合。
參照?qǐng)D6,方法600開(kāi)始于處理邏輯(在處理框602中)由于掛起的中斷而已經(jīng)或者將中斷遞送給VMM(例如,如圖3的處理框308中那樣)或者將控制權(quán)轉(zhuǎn)送給VMM(例如,如圖3的處理框318中那樣)之后。
接著,VMM中的處理邏輯判定中斷源的標(biāo)識(shí)(處理框606)。例如,在一個(gè)實(shí)施例中,VMM可以完成各種存儲(chǔ)器或者輸入--輸出操作以從中斷控制器或者輸入/輸出設(shè)備獲得該中斷源的標(biāo)識(shí)(例如,向量)。在其它一些實(shí)施例中,其中在由掛起的中斷引起的向VMM轉(zhuǎn)送之后中斷被掛起在中斷控制器處,VMM可以消除對(duì)中斷的屏蔽,允許處理器向VMM遞送該中斷。如上所述,向VMM遞送該中斷可以提供關(guān)于該中斷的源的信息(例如,在IA-32 ISA中向其遞送中斷的中斷處理程序可以判定中斷源)。也就是說(shuō),當(dāng)由掛起的中斷引起中斷被遞送給VMM或者控制權(quán)從客戶(hù)軟件被轉(zhuǎn)送給VMM時(shí),VMM可以指定該中斷需要由特定虛擬機(jī)處理。
接著,VMM判定中斷是否由VMM直接處理(處理框608)。該判定可以取決于該中斷是源自由VMM管理的設(shè)備還是虛擬機(jī)(例如,VMM可以管理所有虛擬機(jī)的硬盤(pán),而視頻采集卡可能由特定虛擬機(jī)來(lái)管理)。如果在決定框608作出的該判定是肯定的,那么VMM為該中斷服務(wù)(處理框610)并且方法600結(jié)束。
如果處理框608中的判定是否定的,那么VMM判定哪個(gè)虛擬機(jī)應(yīng)該為該中斷服務(wù)(處理框612)。然后,當(dāng)該虛擬機(jī)準(zhǔn)備好接收中斷時(shí),VMM仿真向虛擬機(jī)遞送該中斷并且將控制權(quán)轉(zhuǎn)送給該虛擬機(jī)(處理框614)。
這樣,對(duì)用于在所述虛擬機(jī)系統(tǒng)中處理中斷的方法和裝置已經(jīng)作了描述。應(yīng)該理解,以上描述是示例性的,而不是限制性。通過(guò)閱讀和理解以上描述,很多其它實(shí)施例對(duì)本領(lǐng)域的技術(shù)人員將是顯而易見(jiàn)的。所以本發(fā)明的范圍應(yīng)該參照所附權(quán)利要求及其等同物來(lái)確定。
權(quán)利要求
1.一種用于控制虛擬機(jī)環(huán)境中的外部中斷的裝置,包括識(shí)別邏輯,用于在客戶(hù)軟件的操作過(guò)程中識(shí)別掛起的中斷;管理判定邏輯,用于判定所述中斷是否由所述客戶(hù)軟件管理;遞送邏輯,用于在所述中斷由所述客戶(hù)軟件管理時(shí)向所述客戶(hù)軟件遞送所述中斷;就緒判定邏輯,用于在所述中斷不由所述客戶(hù)軟件管理時(shí)判定虛擬機(jī)監(jiān)視器是否準(zhǔn)備好接收所述系統(tǒng)的控制權(quán);保持邏輯,用于在所述中斷不由所述客戶(hù)軟件管理且所述虛擬機(jī)監(jiān)視器沒(méi)有準(zhǔn)備好接收控制權(quán)時(shí),保持所述中斷掛起;以及轉(zhuǎn)送邏輯,用于在所述中斷不由所述客戶(hù)軟件管理且所述虛擬機(jī)監(jiān)視器準(zhǔn)備好接收控制權(quán)時(shí),向所述虛擬機(jī)監(jiān)視器轉(zhuǎn)送控制權(quán)。
2.如權(quán)利要求1所述的裝置,其中所述管理判定邏輯讀取與所述中斷相聯(lián)系的中斷控制指示來(lái)判定所述中斷是否由所述客戶(hù)軟件管理。
3.如權(quán)利要求2所述的裝置,其中所述中斷控制指示存儲(chǔ)于虛擬機(jī)控制結(jié)構(gòu)、機(jī)器寄存器和存儲(chǔ)器中的至少一者中。
4.如權(quán)利要求2所述的裝置,其中所述中斷控制指示是基于所述中斷的特性從多個(gè)中斷控制指示中選擇的。
5.如權(quán)利要求1所述的裝置,其中所述保持邏輯還在所述中斷由所述客戶(hù)軟件管理且所述客戶(hù)軟件沒(méi)有準(zhǔn)備好接收中斷時(shí),保持所述中斷掛起直到所述客戶(hù)軟件準(zhǔn)備好接收中斷。
6.如權(quán)利要求5所述的裝置,其中所述就緒判定邏輯還基于中斷標(biāo)記的值來(lái)判定所述客戶(hù)軟件是否準(zhǔn)備好接收中斷。
7.如權(quán)利要求1所述的裝置,其中所述就緒判定邏輯讀取中斷轉(zhuǎn)送標(biāo)記來(lái)判定所述虛擬機(jī)監(jiān)視器是否準(zhǔn)備好接收控制權(quán)。
8.如權(quán)利要求7所述的裝置,其中所述中斷轉(zhuǎn)送標(biāo)記是從虛擬機(jī)控制結(jié)構(gòu)、機(jī)器寄存器和存儲(chǔ)器中的至少一者中讀取的。
9.如權(quán)利要求7所述的裝置,其中所述中斷轉(zhuǎn)送標(biāo)記是基于所述中斷的特性從多個(gè)中斷轉(zhuǎn)送標(biāo)記中選擇的。
10.如權(quán)利要求1所述的裝置,其中所述客戶(hù)軟件與非優(yōu)選虛擬機(jī)相聯(lián)系。
11.如權(quán)利要求10所述的裝置,還包括檢測(cè)邏輯,所述檢測(cè)邏輯檢測(cè)優(yōu)選虛擬機(jī)準(zhǔn)備好接收中斷,其中所述遞送邏輯還在所述檢測(cè)邏輯檢測(cè)到所述優(yōu)選虛擬機(jī)準(zhǔn)備好接收中斷時(shí)向所述優(yōu)選虛擬機(jī)遞送所述中斷。
12.如權(quán)利要求1所述的裝置,還包括標(biāo)記邏輯,在向所述虛擬機(jī)監(jiān)視器轉(zhuǎn)送控制權(quán)時(shí),所述標(biāo)記邏輯將中斷標(biāo)記設(shè)置為指示所述虛擬機(jī)監(jiān)視器沒(méi)有準(zhǔn)備好接收中斷的值、指示所述虛擬機(jī)監(jiān)視器準(zhǔn)備好接收中斷的值和從虛擬機(jī)控制結(jié)構(gòu)讀取的值中的一個(gè)。
全文摘要
本發(fā)明提供了一種用于控制虛擬機(jī)環(huán)境中的外部中斷的裝置,該裝置包括識(shí)別邏輯,用于在客戶(hù)軟件的操作過(guò)程中識(shí)別掛起的中斷;管理判定邏輯,用于判定所述中斷是否由所述客戶(hù)軟件管理;遞送邏輯,用于在所述中斷由所述客戶(hù)軟件管理時(shí)向所述客戶(hù)軟件遞送所述中斷;就緒判定邏輯,用于在所述中斷不由所述客戶(hù)軟件管理時(shí)判定虛擬機(jī)監(jiān)視器是否準(zhǔn)備好接收所述系統(tǒng)的控制權(quán);保持邏輯,用于在所述中斷不由所述客戶(hù)軟件管理且所述虛擬機(jī)監(jiān)視器沒(méi)有準(zhǔn)備好接收控制權(quán)時(shí),保持所述中斷掛起;以及轉(zhuǎn)送邏輯,用于在所述中斷不由所述客戶(hù)軟件管理且所述虛擬機(jī)監(jiān)視器準(zhǔn)備好接收控制權(quán)時(shí),向所述虛擬機(jī)監(jiān)視器轉(zhuǎn)送控制權(quán)。
文檔編號(hào)G06F9/455GK1801100SQ20051013597
公開(kāi)日2006年7月12日 申請(qǐng)日期2003年11月17日 優(yōu)先權(quán)日2002年12月11日
發(fā)明者史蒂文·M·貝內(nèi)特, 邁克爾·科祖克, 吉爾伯特·奈格, 埃里克·科塔-羅布爾斯, 斯塔林塞爾瓦拉·杰亞辛格, 阿蘭·卡希, 理查德·烏利希 申請(qǐng)人:英特爾公司