專利名稱:虛擬化環(huán)境中的經(jīng)優(yōu)化的中斷傳遞的制作方法
虛擬化環(huán)境中的經(jīng)優(yōu)化的中斷傳遞
背景
虛擬機("VM")是出于提供仿真機或系統(tǒng)的目的而在計算設備等(例如, 主機)上操作的軟件構(gòu)造等。通常,但不必然地,虛擬機是應用程序等,并且 可在主機上用于實例化使用應用程序等,同時將這一使用應用程序與該主機設 備或該主機設備上的其它應用程序隔離開。在一種典型的情況下,主機可容納 多個部署的VM,每個VM經(jīng)由可從該主機獲得的資源來執(zhí)行某些預定功能。
值得注意的是,盡管采用虛擬的形式,但如主存在計算設備上的每個VM 無論從哪點看都是計算機器,并因此將其本身如此向其使用應用程序和外部世 界兩者表示。作為示例,VM和/或其使用應用程序能夠并且實際上的確對該 VM的硬件資源發(fā)出硬件請求,即使該VM可能實際上不具有這些硬件資源。 相反,且可以理解,這些硬件請求被截取或以其他方式被重定向到主機,并且 這一主機通常在發(fā)出請求的VM和/或其使用應用程序仍舊一無所知的情況下 基于其硬件資源來為這些硬件請求服務。
通常,盡管并非必須,但主機將其每一個VM部署在單獨的分區(qū)、地址空 間、處理區(qū)域等中。這一主機可包括具有擔當監(jiān)督應用程序或"管理程序"的虛 擬機監(jiān)控程序("VMM")等的虛擬化層,其中虛擬化層監(jiān)督和/或以其它方式 管理該主機的每一VM的管理方面,并擔當每一VM和外界之間的可能鏈接。 VMM可以是在其自己的地址空間中運行的單獨的應用程序或者可以與主機操 作系統(tǒng)更緊密地集成,或者直接地或者作為某一種操作系統(tǒng)擴展,諸如設備驅(qū) 動程序等。值得注意的是,主機的VMM可截取或以其他方式重定向源自該主 機的每一個VM和/或其使用應用程序的硬件請求,并且可同樣在發(fā)出請求的 VM和/或其使用應用程序仍舊一無所知的情況下至少幫助服務這些請求。
許多計算系統(tǒng)包括多個處理器。多處理器虛擬機環(huán)境中的處理器能以來賓
模式或VMM模式操作。當以來賓模式運行時,處理器使用虛擬機定義管理虛 擬機的來賓操作系統(tǒng)和應用程序,從而在沒有來自VMM的介入的情況下轉(zhuǎn)換 自變量并管理系統(tǒng)資源。有時,來賓操作系統(tǒng)或應用程序可能需要必須由VMM管理的系統(tǒng)資源。作為示例,VMM對于出錯處理、系統(tǒng)錯誤或中斷處理可能 是必需的。在這些情況下,處理器以VMM模式操作。
現(xiàn)代處理系統(tǒng)包括對允許將外部事件通知給處理器的中斷的支持。例如, 當用戶按壓鍵盤上的鍵或網(wǎng)絡分組通過線纜到達時,生成相應的中斷并將其發(fā) 送到處理器。通常,中斷使得處理器停止其正在做的事情,記錄其當前執(zhí)行位 置以使其能夠在為該中斷服務并且然后執(zhí)行指定的中斷服務例程后恢復執(zhí)行。
計算系統(tǒng)可包括引導并仲裁系統(tǒng)中的中斷流的一個或多個中斷控制器。中
斷控制器邏輯可以用分立的硬件組件來實施,可被集成到處理器中,或可被虛 擬化。中斷控制器特別地負責確定中斷的優(yōu)先級以及將中斷定向到多處理器環(huán) 境中的適當處理器。在虛擬化環(huán)境中,處理器和中斷控制器可被虛擬化。這一 般通過諸如虛擬機監(jiān)控程序等軟件以及由硬件提供的虛擬化輔助裝置(assist) 的組合來實現(xiàn)。
一般而言,在處理了中斷后,經(jīng)由中斷結(jié)束(EOI)命令來通知中斷控制 器。該命令告訴中斷控制器現(xiàn)在可以傳遞其傳遞可能已經(jīng)在處理前一中斷時被 推遲的其他中斷。EOI命令通常通過I/O端口或諸如對寄存器的讀寫等存儲器 映射的I/0訪問來被傳遞給中斷控制器。對于物理中斷控制器而言,處理EOI 命令可能消耗數(shù)十或數(shù)百個周期。對于虛擬化的中斷控制器而言,處理EOI 命令可能消耗數(shù)千個周期。
某些虛擬機監(jiān)控程序?qū)⒅袛嘤米鞣謪^(qū)間消息傳送的基礎(chǔ)。如果在一個分區(qū) 中運行的軟件需要與在同一物理機器上的第二分區(qū)中運行的軟件進行通信,則 它能夠通過使用分區(qū)間消息來這樣做。當消息由一個處理器來發(fā)送時,虛擬機 監(jiān)控程序可向作為該消息的預期接收者的處理器發(fā)送中斷,從而使得該接收者 處理器的中斷服務例程處理該消息并響應其內(nèi)容。
概述
提供本概述是為了以簡化的形式介紹將在以下詳細描述中進一步描述的 一些概念。該概述不旨在標識所要求保護的主題的關(guān)鍵特征或必要特征,也不 旨在用于幫助確定所要求保護的主題的范圍。
此處描述了用于在多處理器虛擬化環(huán)境中高效地處理中斷的機制。在某些實施例中,來賓操作系統(tǒng)可將特定中斷源編程為"自動中斷結(jié)束"("自動EOI")。
在處理自動EOI時,虛擬化的中斷控制器將中斷服務寄存器中對應于所傳遞的 中斷的位清零而不等待顯式中斷結(jié)束("EOr)命令。自動EOI中斷可不阻塞
其他中斷的傳遞。
中斷可用于實現(xiàn)分區(qū)間通信。當來賓操作系統(tǒng)接收到與分區(qū)間消息相關(guān)聯(lián) 的中斷時,該來賓操作系統(tǒng)的中斷服務例程從指定的消息槽中讀取該消息并基 于該消息類型和凈荷來執(zhí)行動作。如以下詳細描述的,來賓操作系統(tǒng)可通過僅 在另一消息對同一消息槽排隊的情況下在完成消息處理后發(fā)送顯式消息結(jié)束
("EOM")命令來消除在處理分區(qū)間消息時招致的某些開銷。EOM命令的計 算成本大致等同于EOI的計算成本,但EOM僅在其他消息在排隊的罕見情況 下發(fā)送。這可顯著地降低用于分區(qū)間通信的中斷處理的平均成本。
中斷可具有各種優(yōu)先級。 一般而言,較高優(yōu)先級的中斷可打斷較低優(yōu)先級
的中斷的處理,但反之卻不然。在虛擬化環(huán)境中,對于來賓操作系統(tǒng)而言發(fā)出 針對不是最高優(yōu)先級的運行中的中斷的中斷的EOI命令是可能的。此處描述了 虛擬化的中斷控制器用于檢査傳入EOI命令是否對應于最高優(yōu)先級的運行中 的中斷的機制。如果不是,則經(jīng)虛擬化的中斷控制器將傳入EOI命令的中斷向 量添加到需要在稍后被EOI的一組中斷。如果傳入EOI命令的確對應于最高 優(yōu)先級的運行中的中斷,則經(jīng)虛擬化的中斷控制器不僅處理針對相應中斷的 EOI命令而且處理對應于先前為稍后EOI標記的所有其他中斷的EOI命令。
附圖簡述
圖1是表示計算機系統(tǒng)中用于經(jīng)虛擬化操作環(huán)境的硬件和軟件體系結(jié)構(gòu) 的邏輯分層的框圖2是表示其中虛擬化由主機操作系統(tǒng)(或者直接地或者經(jīng)由管理程序) 來執(zhí)行的經(jīng)虛擬化計算系統(tǒng)的框圖3是表示其中虛擬化由與主機操作系統(tǒng)并排運行的虛擬機監(jiān)控程序執(zhí) 行的替換的經(jīng)虛擬化計算系統(tǒng)的框圖4是表示其中虛擬化由獨立于主機操作系統(tǒng)運行的虛擬化器執(zhí)行的另 一替換的經(jīng)虛擬化計算系統(tǒng)的框圖;圖5是具有中斷控制器的計算系統(tǒng)的一部分的框圖; 圖6是示出處理中斷請求的方法的流程圖; 圖7描繪了用于中斷優(yōu)先級的示例的時間線;
圖8是示出根據(jù)此處示教的使用自動EOI來處理中斷請求的方法的流程 圖;以及
圖9是示出根據(jù)此處示教的處理處理器間消息的方法的流程圖。 詳細描述
在以下描述和附圖中描述了某些具體細節(jié),以提供對本發(fā)明的各個實施例 的全面理解。通常與計算和軟件技術(shù)相關(guān)聯(lián)的某些公知細節(jié)將不在以下公開中 描述,以避免不必要地使本發(fā)明的各實施例晦澀難懂。此外,相關(guān)領(lǐng)域的普通 技術(shù)人員可以理解,他們可以無需以下描述的細節(jié)中的一個或多個而實現(xiàn)其它 實施例。最后,盡管在以下公開中參考了步驟和序列來描述各個方法,但是如 此的描述是為了提供本發(fā)明的實施例的清楚實現(xiàn),且步驟以及步驟序列不應被 認為是實現(xiàn)本發(fā)明所必需的。
應該理解,此處描述的各種技術(shù)可以結(jié)合硬件或軟件,或在適當時以兩者 的組合來實現(xiàn)。因此,方法和裝置或其某些方面或部分,可以采用包含在諸如 軟盤、CD-ROM、硬盤驅(qū)動器或任何其它機器可讀存儲介質(zhì)等有形介質(zhì)中的程 序代碼(g卩,指令)的形式,其中,當程序代碼被加載至諸如計算機等機器并 由其運行時,該機器成為用于實現(xiàn)本發(fā)明的裝置。在程序代碼在可編程計算機 上執(zhí)行的情況下,計算設備通常包括處理器、該處理器可讀的存儲介質(zhì)(包括 易失性和非易失性的存儲器和/或存儲元件)、至少一個輸入設備、以及至少一 個輸出設備。 一個或多個程序可以例如,通過使用API、可重用控件等來實現(xiàn) 或利用結(jié)合本發(fā)明描述的過程。這樣的程序優(yōu)選地用高級過程語言或面向?qū)ο?編程語言來實現(xiàn),以與計算機系統(tǒng)通信。然而,如果需要,程序可以用匯編語 言或機器語言來實現(xiàn)。在任何情形中,語言可以是編譯的或解釋的語言,且與 硬件實現(xiàn)相結(jié)合。
盡管示例性實施例可涉及在一個或多個獨立計算機系統(tǒng)的上下文中利用 本發(fā)明的各方面,但本發(fā)明不受此限制,而是可以結(jié)合任何計算環(huán)境,諸如網(wǎng)
9絡或分布式計算環(huán)境來實現(xiàn)。而且,本發(fā)明的各方面可以在多個處理芯片或設 備中實現(xiàn)或跨多個處理芯片或設備實現(xiàn),且存儲可以類似地跨多個設備來實 現(xiàn)。這樣的設備可以包括,個人計算機、網(wǎng)絡服務器、手持式設備、超級計算 機或集成在諸如汽車和飛機等其它系統(tǒng)中的計算機。
概覽
描述了用于在虛擬機環(huán)境中高效地處理中斷的各方法和系統(tǒng)。中斷出于各 種目的而在現(xiàn)代計算系統(tǒng)中使用,包括作為示例,以將外部事件通知給處理器 以及便于多處理器系統(tǒng)的各處理器之間的通信。通常,中斷打斷普通處理并臨
時將控制流轉(zhuǎn)向中斷服務例程("ISR")。計算系統(tǒng)的各種活動可觸發(fā)中斷。 某些示例是按壓鍵盤上的鍵、接收網(wǎng)絡分組以及對盤進行讀寫。處理器間中斷 ("IPI")是一個處理器可用于打斷多處理器環(huán)境中的另一處理器的中斷類型。 IPI可用作處理器間消息傳送的基礎(chǔ)。
計算系統(tǒng)通常包括引導并仲裁系統(tǒng)中的中斷流的一個或多個中斷控制器。 中斷控制器負責區(qū)分傳入中斷的優(yōu)先順序并將其定向到多處理器系統(tǒng)中的適 當處理器。中斷控制器可以用硬件來實現(xiàn)并由此可以是分立組件或可與處理器 集成。中斷控制器還可被虛擬化。這通常通過軟件以及由硬件提供的虛擬化輔 助裝置的組合來實現(xiàn)。軟件可以是執(zhí)行與物理中斷控制器相同的基本功能的虛 擬機監(jiān)控程序的一部分。
通常,每一中斷源都具有指定的中斷優(yōu)先級。作為一個示例,這些優(yōu)先級 可被標號為1到255, 255為最高優(yōu)先級而0為最低優(yōu)先級。較高優(yōu)先級的中 斷被允許打斷正在處理較低優(yōu)先級中斷的中斷服務例程,但較低優(yōu)先級的中斷 不被允許打斷較高優(yōu)先級的中斷。當中斷服務例程完成執(zhí)行時,它在其上運行 的處理器通常發(fā)出EOI命令,從而發(fā)信號通知中斷控制器該中斷的處理已完成 并且現(xiàn)在可傳遞被推遲的較低優(yōu)先級的中斷。
對于虛擬化的中斷控制器,EOI命令用執(zhí)行與將響應該EOI命令的物理中 斷控制器相同的操作的軟件來實現(xiàn)。這通常涉及截取對EOI端口或寄存器的訪 問并調(diào)用軟件處理程序。截取和軟件處理程序的組合通常需要數(shù)千或數(shù)萬個周 期來處理EOI命令,從而對虛擬化環(huán)境中的中斷服務例程的操作增添了顯著的開銷。
此處所描述的方法和系統(tǒng)提供了用于高效地處理中斷的機制。能夠在許多 情況下跳過EOI命令,從而顯著地減少與中斷傳遞相關(guān)的虛擬化開銷。在用于 處理器間消息傳送的IPI的情況下,消息結(jié)束EOI僅在第二消息已經(jīng)為包含剛
剛處理的消息的槽排隊時才需要被發(fā)送。在某些情況下,可選擇性地EOI物理
中斷而不管其是否是最高優(yōu)先級的運行中中斷。 虛擬化概述
操作系統(tǒng)和處理器指令集的多樣性可導致軟件的互操作性降低。高級語言
和操作系統(tǒng)兩者中的存儲器和I/O抽象可去除某些硬件資源依賴,但某一些仍
然保留。許多操作系統(tǒng)都是針對特定系統(tǒng)體系結(jié)構(gòu)來開發(fā)的并被設計成直接管 理硬件資源。這可限制計算機系統(tǒng)在可用軟件和操作系統(tǒng)方面的靈活性并可負 面地影響安全性和故障隔離,尤其在系統(tǒng)由多個用戶共享時。
虛擬化提供了用于在增強安全性和可靠性的同時增加靈活性的機制。處理
器、存儲器和I/O設備是可被虛擬化的子系統(tǒng)的示例。當一子系統(tǒng)被虛擬化時, 將虛擬接口和通過該虛擬接口可用的虛擬資源映射到在其上實現(xiàn)該虛擬化的 真實系統(tǒng)的接口以及資源。虛擬化可不僅應用于子系統(tǒng)而且應用于整個機器。 虛擬機的體系結(jié)構(gòu)在真實機器上的軟件層中實現(xiàn)。
從概念的觀點來看,計算機系統(tǒng)一般包括在基本硬件層上運行的一個或多 個軟件層。該分層出于各抽象原因而完成。通過為給定軟件層定義接口,該層 可由其上的其他層不同地實現(xiàn)。在設計良好的計算機系統(tǒng)中,每一層只知道(并 且只依賴于)緊接在其下的層。這允許在不負面地影響層或"棧"(多個鄰接層) 上的各層的情況下替換所述層或棧。例如,軟件應用程序(上層)通常依賴下 層的操作系統(tǒng)(下層)將文件寫入某種形式的永久存儲,并且這些應用程序不 需要明白將數(shù)據(jù)寫入軟盤、硬盤或網(wǎng)絡文件夾之間的區(qū)別。如果該下層用用于 寫入文件的新操作系統(tǒng)組件來替換,則上層軟件應用程序的操作保持不受影 響。
分層軟件的靈活性允許虛擬機(VM)呈現(xiàn)實際上是另一軟件層的虛擬硬 件層。以此方式,VM可為其上的軟件層創(chuàng)建所述軟件層正在其自己的專用計
11算機系統(tǒng)上運行的幻覺,并由此VM能夠允許多個"來賓系統(tǒng)"同時在單個"主 機系統(tǒng)"上運行。
圖1是表示計算機系統(tǒng)中用于虛擬化環(huán)境的硬件和軟件體系結(jié)構(gòu)的邏輯
分層的框圖。在圖1中,虛擬化程序110直接或間接地在物理硬件體系結(jié)構(gòu)112 上運行。虛擬化程序110可以是(a)與主機操作系統(tǒng)并排運行的虛擬機監(jiān)控 程序或(b)具有執(zhí)行虛擬化的管理程序組件的主機操作系統(tǒng)。術(shù)語虛擬機監(jiān) 控程序用作對于各種類型的虛擬化程序中的任一種的通用術(shù)語。虛擬化程序 110虛擬化來賓硬件體系結(jié)構(gòu)108(被示為虛線以示出該組件是分區(qū)或"虛擬機" 的事實),即,實際上并不存在而是由虛擬化程序110虛擬化的硬件。來賓操 作系統(tǒng)106在來賓硬件體系結(jié)構(gòu)108上執(zhí)行,而軟件應用程序104能夠在來賓 操作系統(tǒng)106上執(zhí)行。在圖1的虛擬化操作環(huán)境中,即使軟件應用程序104被 設計成在一般不與主機操作系統(tǒng)和硬件體系結(jié)構(gòu)112兼容的操作系統(tǒng)上運行, 該軟件應用程序104也可在計算機系統(tǒng)102中運行。
接著,圖2示出了包括直接在物理計算機硬件202上運行的主機操作系統(tǒng) (主機OS)軟件層204的虛擬化計算系統(tǒng),其中主機OS 204通過向分別供操 作系統(tǒng)A和B (即,212和214)使用的分區(qū)A 208和B 210展示接口來提供 對物理計算機硬件202的資源的訪問。這使得主機OS 204能夠不被在其上運 行的操作系統(tǒng)層212和214注意。同樣,為了執(zhí)行虛擬化,主機OS 204可以 是具有本機虛擬化能力的特別設計的操作系統(tǒng)或另選地,它可以是具有用于執(zhí)
行虛擬化的結(jié)合的管理程序組件(未示出)的標準操作系統(tǒng)。
再次參考圖2,主機OS 204之上是兩個分區(qū),即,分區(qū)A 208和分區(qū)B 210, 前者可以是例如虛擬化的Intel 386處理器,而后者可以是例如摩托羅拉680X0 處理器系列中的一個的虛擬化版本。在每一個分區(qū)208和210中的分別是來賓 操作系統(tǒng)(來賓OS) A 212和B 214。在來賓OS A 212的上方運行的是兩個 應用程序,S卩,應用程序A1216和應用程序A2 218,而在來賓OSB214上運 行的是應用程序B1 220。
對于圖2,注意分區(qū)A 208和分區(qū)B 214 (用虛線示出的)是只作為軟件 構(gòu)造存在的虛擬化計算機硬件表示是重要的。它們由于專用虛擬化軟件的執(zhí)行 而成為可能,該專用虛擬化軟件不僅只將分區(qū)A 208和分區(qū)B 210分別呈現(xiàn)給來賓OS A 212和來賓OS B 214,而且還執(zhí)行來賓OS A 212和來賓OS B 214 間接地與真實物理計算機硬件202交互所需的所有軟件步驟。物理計算機硬件 202可包括如單處理器環(huán)境中的單個中央處理單元(CPU) 222,或如多處理器 環(huán)境中的多個CPU222、 224、 226。
圖3示出了其中虛擬化由與主機操作系統(tǒng)306并排運行的VMM 304執(zhí)行 的替換虛擬化的計算系統(tǒng)。在某些情況下,VMM 304可以是在主機操作系統(tǒng) 306上運行并僅通過主機操作系統(tǒng)306來與計算機硬件302交互的應用程序。 在其他情況下,諸如圖3所示,VMM304可替代地包括部分獨立的軟件系統(tǒng), 其在某些層上經(jīng)由主機操作系統(tǒng)306來間接地與計算機硬件302交互,但在其 他層上VMM 304直接與計算機硬件302交互(類似于主機操作系統(tǒng)直接與計 算機硬件交互的方式)。并且在又一些情況下,VMM 304可包括完全獨立的 軟件系統(tǒng),其在所有層上直接與計算機硬件302交互(類似于主機操作系統(tǒng)直 接與計算機硬件交互的方式)而不利用主機操作系統(tǒng)306 (但仍舊與主機操作 系統(tǒng)306交互以協(xié)調(diào)對計算機硬件302的使用并避免沖突等)。
在圖3所示的示例中,兩個分區(qū),即,A 308和B 310,在概念上位于VMM 304之上。在每一個分區(qū)308和310中的分別是來賓操作系統(tǒng)(來賓OS) A 312 和B 314。在來賓OS A 312的上方運行的是兩個應用程序,即,應用程序Al 316 和應用程序A2 318,而在來賓OSB314上運行的是應用程序B1,320。物理計 算機硬件302可包括如單處理器環(huán)境中的單個中央處理單元(CPU) 322,或 如多處理器環(huán)境中的多個CPU322、 324、 326。
圖4示出了其中虛擬化由管理程序404執(zhí)行的另一替換的虛擬化計算系 統(tǒng)。管理程序404包括可以直接與計算機硬件402交互而不使用主機操作系統(tǒng) 的獨立軟件系統(tǒng)。物理計算機硬件402可包括如單處理器環(huán)境中的單個中央處 理單元(CPU) 422,或如多處理器環(huán)境中的多個CPU422、 424、 426。
在圖4所示的示例中,兩個分區(qū),S卩,A 408和B 410,在概念上位于VMM 404之上。在每一個分區(qū)408和410中的分別是來賓操作系統(tǒng)(來賓OS) A 412 和B 414。在來賓OS A 412的上方運行的是兩個應用程序,即,應用程序Al 416 和應用程序A2 418,而在來賓OS B 414上運行的是應用程序B1 420。來賓 OS A 412提供主機OS服務。物理計算機硬件402可包括如單處理器環(huán)境中的單個中央處理單元(CPU) 422,或如多處理器環(huán)境中的多個CPU422、 424、 426。
用于實現(xiàn)以上提到的分區(qū)的所有這些變體僅僅是示例性實現(xiàn),并且此處沒 有一樣應被解釋為將本發(fā)明限于任何特定虛擬化方面。
中斷處理概述
圖5是具有中斷控制器的多處理器計算系統(tǒng)的一部分的說明性示例的框 圖。任何數(shù)量的設備502、 504、 506、 508都可用作中斷請求的源。設備502、 504、 506、 508可以是物理設備,諸如例如,鍵盤、盤驅(qū)動器、網(wǎng)卡,或者可 以是虛擬化設備。中斷請求還可由處理器510、 512、 514中的任一個來生成。
中斷控制器516仲裁并指導中斷請求的處理。中斷控制器516可以是物理 設備,諸如可編程中斷控制器("PIC")或高級可編程中斷控制器("APIC")。 或者,中斷控制器516可被虛擬化,在這種情況下其功能由諸如VMM中的軟 件處理程序等軟件來執(zhí)行。
大多數(shù)中斷控制器跟蹤所請求的且運行中的中斷請求。這通常通過使用其 中每一個位表示單獨的中斷源的兩個位向量來完成。 一個位向量被稱為中斷請 求寄存器518,而第二個被稱為中斷服務寄存器520。當中斷控制器516接收 到對一中斷的請求時,它設置中斷請求寄存器518中的相應的位。當中斷控制 器516將中斷傳遞給處理器510、 512或514時,它將中斷請求寄存器518中 的相應位清零并在中斷服務寄存器520中設置相應的位。當中斷控制器516接 收到EOI時,它知道不再為相應的中斷服務并因此將中斷服務寄存器520中的 相應位清零。此時,中斷控制器516掃描中斷請求寄存器518以確定尚未被服 務的最高優(yōu)先級的所請求中斷。如果這一中斷的優(yōu)先級高于最高優(yōu)先級的運行 中中斷,則中斷控制器打斷該較低優(yōu)先級的運行中中斷的中斷服務例程。
中斷請求的傳統(tǒng)生存周期在圖6中描繪。設備或軟件通過斷言中斷請求 ("IRQ") 602來開始該過程。中斷請求可由各種各樣的源來生成。源可包括, 作為示例且并非出于限制的目的,鍵盤、鼠標、聲卡、調(diào)制解調(diào)器、通信端口、 定時設備和軟件指令。在"電平觸發(fā)"中斷中,希望發(fā)信號通知中斷的設備將中 斷請求線路上的電壓驅(qū)動到被定義為"活動"的預定水平并將維持該電壓水平
14直到該中斷被服務。在"邊緣觸發(fā)"中斷中,中斷請求通過中斷請求線路上的電 平轉(zhuǎn)換來發(fā)信號通知,其中希望發(fā)信號通知中斷的設備將脈沖驅(qū)動到該中斷請 求線路上并且然后將該線路返回到其靜止狀態(tài)。
一旦中斷控制器檢測到IRQ 604,它就可能通過檢査中斷服務寄存器520 (圖5)來確定該IRQ是否具有比任何當前運行中中斷更高的優(yōu)先級606。如 果當檢測到IRQ時較高優(yōu)先級的中斷正在運行中,則中斷控制器標記中斷請求 寄存器中的相應位608以記錄該待決請求。如果所請求的中斷具有比任何運行 中的中斷更高的優(yōu)先級,則中斷控制器標記中斷服務寄存器中的相應位610并 發(fā)信號通知適當?shù)奶幚砥鬟\行相應的中斷服務例程612。在完成中斷服務例程 的執(zhí)行614后,該處理器通??赏ㄟ^對I/O端口或存儲器映射的寄存器進行讀 寫來向中斷設備指示該中斷已被處理616。該處理器通過發(fā)送EOI命令618來 發(fā)信號通知中斷控制器該中斷已被處理,EOI命令通常通過I/O端口或諸如對 寄存器的讀寫等存儲器映射的I/O訪問來傳遞。中斷控制器處理該EOI命令并 清除中斷服務寄存器中的相應標志620。 EOI命令告訴中斷控制現(xiàn)在可傳遞已 被推遲的較低優(yōu)先級的中斷。例如,如果網(wǎng)絡分組到達從而觸發(fā)一中斷,則當 較高優(yōu)先級的鍵盤中斷正被服務時,該網(wǎng)絡分組中斷請求可能已由中斷控制器 保持待決直到該較高優(yōu)先級的鍵盤中斷被完全服務。處理EOI命令對于物理中 斷控制器而言可能花費數(shù)十或數(shù)百個周期或?qū)τ谔摂M化的中斷控制器而言甚 至可能花費數(shù)千個周期。
圖7描述了示出中斷優(yōu)先級的一般概念并且不旨在是限制性的示例。假設 在時刻^處優(yōu)先級為10的中斷源請求一中斷702。中斷控制器打斷調(diào)用與該中 斷源相關(guān)聯(lián)的中斷服務例程704的處理器?,F(xiàn)在假設在用于優(yōu)先級為10的中 斷的ISR完成處理之前的時刻12處,優(yōu)先級為200的中斷源請求發(fā)往同一處理 器的中斷706。中斷控制器再次打斷處理器,并且用于優(yōu)先級為200的中斷的 ISR708開始執(zhí)行,而用于優(yōu)先級為10的中斷的ISR被掛起710。假設優(yōu)先級 為50的第三中斷源在優(yōu)先級為200的ISR 708完成之前的時刻13處請求中斷 712。中斷控制器將推遲該中斷的傳遞714直到該處理器在時刻t4處完成優(yōu)先 級為200的ISR的執(zhí)行。優(yōu)先級為50的ISR將在優(yōu)先級為200的ISR 708完 成之后調(diào)用716。當在時刻ts處優(yōu)先級為50的ISR716完成時,優(yōu)先級為10的ISR的執(zhí)行恢復718并且在時刻t6處完成。
虛擬化的中斷控制器
在虛擬化環(huán)境中,處理器和中斷控制器可被虛擬化。這通過軟件(例如,
VMM)和由硬件提供的虛擬化輔助裝置的組合來完成。在典型的安排中,EOI 命令由VMM來仿真。這通過截取對EOI端口或寄存器的訪問來完成。該截取 調(diào)用VMM中響應該EOI執(zhí)行與物理中斷控制器相同的功能的軟件處理程序。 該截取和軟件處理程序的組合可能需要數(shù)千或數(shù)萬個周期。這當在虛擬化環(huán)境 中執(zhí)行時為ISR增添了顯著的開銷。
通常,VMM接受中斷并將其作為虛擬中斷重定向到來賓操作系統(tǒng)。中斷 可從各種源中生成,包括,作為示例而非限制,物理硬件設備、仿真硬件設備 的分區(qū)、希望向另一分區(qū)發(fā)送消息或發(fā)信號通知事件的分區(qū),或希望發(fā)信號通 知分區(qū)的VMM。 VMM通常在中斷已被接受之后向物理中斷控制器發(fā)出EOI 命令。對于電平觸發(fā)中斷而言,直到來賓操作系統(tǒng)中的ISR已運行并向虛擬中 斷控制器發(fā)出EOI命令才發(fā)出EOI命令一般是不安全的。如APIC的某些物理 中斷控制器僅允許EOI最高優(yōu)先級的運行中中斷。然而在某些情況下,VMM 可能需要選擇性地EOI不是最高優(yōu)先級的運行中中斷的中斷。作為例示,考慮 當其中第一個是較低優(yōu)先級的兩個電平觸發(fā)中斷相繼到達時會發(fā)生什么。
VMM接受第一個中斷并將其重定向到來賓操作系統(tǒng)。在該來賓操作系統(tǒng)中的 ISR發(fā)出EOI命令之前,第二個中斷到達。隨后該來賓操作系統(tǒng)發(fā)出對第一個 中斷的EOI命令。在這種情況下,VMM無法EOI第一個中斷,因為較高優(yōu)先 級的中斷已經(jīng)在運行中并且向物理中斷控制器發(fā)出EOI命令將會EOI該較高 優(yōu)先級的中斷。
根據(jù)此處的本發(fā)明,來賓操作系統(tǒng)被允許將某些中斷源編程為"自動 EOI"。當中斷源被標記為自動EOI時,修改傳統(tǒng)中斷優(yōu)先化行為。自動EOI 中斷不阻塞其他中斷的傳遞。因此,實際上,自動EOI中斷類似于最低優(yōu)先級 的中斷那樣工作,因為包括其他自動EOI中斷在內(nèi)的任何其他中斷被允許打斷 其相關(guān)聯(lián)的ISR的執(zhí)行。
在傳遞自動EOI中斷時,中斷服務寄存器中與該自動EOI中斷相關(guān)聯(lián)的
16位被立即清零。實際上,虛擬化的中斷控制器在傳遞自動EOI中斷時自動生成
EOI。對于自動EOI中斷而言,中斷源通過直到其知道前一中斷已被處理才請 求后續(xù)中斷來緩和(moderate)其本身是合乎需要的。否則,每一個后繼中斷 都將打斷前一ISR,從而可能溢出處理器的棧。
在一個實施例中,自動EOI屬性在與合成中斷源(SINT)相關(guān)聯(lián)的虛擬 寄存器中指定。該虛擬寄存器的格式如下
位 鵬 纖
63:18 RsvdP (值應當被保留) 讀/寫
17 自動EOI 讀/寫
在隱式EOI應在中斷
傳遞后執(zhí)行的情況下置位 16在SINT被屏蔽的情況下置位讀/寫
15:8 RsvdP (值應當被保留) 讀/寫
7:0向量 讀/寫
在虛擬處理器創(chuàng)建時間,所有SINT寄存器的默認值是0x 0000000000010000。因此,所有合成中斷源默認都是被屏蔽的。來賓操作系統(tǒng) 必須通過對適當?shù)南蛄烤幊滩⑽?6清零來去掉其屏蔽。
自動EOI標志指示隱式EOI在中斷被傳遞給虛擬處理器時應由VMM來 執(zhí)行。另外,VMM將自動清除虛擬中斷控制器的運行中寄存器內(nèi)的相應標志。 如果來賓操作系統(tǒng)允許該行為,則它必須不在其中斷服務例程中執(zhí)行顯式EOI。
圖8描繪了根據(jù)此處的本發(fā)明的自動EOI中斷請求的生存周期。設備或 軟件通過斷言IRQ 802來開始該過程。 一旦中斷控制器檢測到IRQ 804,它就 可能通過檢査中斷服務寄存器520 (圖5)來確定該IRQ是否具有比當前被標 記為運行中的任何中斷更高的優(yōu)先級806。如果當檢測到IRQ時較高優(yōu)先級的 中斷被標記為運行中,則中斷控制器標記中斷請求寄存器中的相應位808以記 錄該待決請求。如果所請求的中斷具有比被標記為運行中的任何中斷更高的優(yōu) 先級,則中斷控制器發(fā)信號通知適當?shù)奶幚砥鬟\行相應的中斷服務例程810并將中斷服務寄存器中的相應位清零812。在該處理器完成中斷服務例程的執(zhí)行
814后,該處理器通??赏ㄟ^對I/O端口或存儲器映射的寄存器進行讀寫來向 中斷設備指示該中斷已被處理816。
因此,對于自動EOI中斷請求而言,無需處理器發(fā)出顯式EOI命令。因 為當中斷被發(fā)送到該處理器時中斷服務寄存器中的相應位已被清零812,所以 自動EOI中斷將不會阻塞其他中斷的傳遞。因為中斷在被傳遞時已被有效地 EOI,所以不使用處理EOI命令通常所需的計算周期。
對虛擬化的中斷控制器的使用允許VMM在物理中斷控制器不支持選擇 性地EOI物理中斷的功能時執(zhí)行這一功能。這可通過維護待決EOI (即,需要 在稍后被EOI的中斷)的列表來實現(xiàn)。例如,當來賓操作系統(tǒng)發(fā)出EOI命令 時,VMM可檢査正被EOI的中斷是否的確是物理中斷控制器中的最高優(yōu)先級 的運行中中斷。如果不是,則VMM將該中斷添加到待決EOI的列表即可。另 一方面,如果正被EOI的中斷是最高優(yōu)先級的運行中中斷,則VMM不僅EOI 當前中斷,而且EOI待決EOI的列表上的其他中斷。
分區(qū)間消息傳送
某些VMM將中斷用作分區(qū)間消息傳送的基礎(chǔ)。分區(qū)是由VMM強制實施 的隔離邊界并且是虛擬機的"容器"。如果在一個分區(qū)中運行的軟件需要與在同 一機器上的第二分區(qū)中運行的軟件進行通信,則它能夠通過使用分區(qū)間消息來 這樣做。這些消息通常包含少量的凈荷。例如,在一個已知管理程序的情況下, 其消息凈荷可包括多達240字節(jié)加上16字節(jié)的首部。當消息被發(fā)送時,它由 管理程序來排隊直到與目的地分區(qū)相關(guān)聯(lián)的虛擬處理器準備執(zhí)行。此時,管理 程序可將中斷傳遞給該虛擬處理器。這導致調(diào)用相應的ISR。 ISR負責讀取消 息并對其內(nèi)容作出反應。如上所述,ISR —般必須在中斷已被服務后"EOI"該 中斷。在這種情況下,EOI將在消息被讀取之后發(fā)送。分區(qū)間消息通信必須盡 可能快。傳統(tǒng)EOI機制增添了不合乎需要的開銷,這表現(xiàn)在使用可能數(shù)萬個周 期來通知虛擬化的中斷控制器消息已被讀取并且可傳遞后續(xù)消息和較低優(yōu)先 級的待決中斷。
根據(jù)此處的本發(fā)明,用于發(fā)信號通知分區(qū)間消息已被處理的傳統(tǒng)EOI機制的開銷是可以避免的。在一個實施例中,為每一個SINT提供消息槽并且消 息的布局由以下表1中所描述的數(shù)據(jù)結(jié)構(gòu)來定義。
typedef struct
uint8 MessagePending:l; 畫t8 Reserved:7; } hv—message_flags;
typedef struct
HV—MESSAGE—TYPE MessageType (消息類型);
uint8 PayloadSize (凈荷大小);
HV—MESSAGE—FLAGS MessageFlags (消息標志)
UI^"t8 Reserve^[2];
union
HV_PARTITION_ID Sender (發(fā)送者); HV一PORT一IDPort (端口);
} hv—message—header;
#定義hv—message_max—payload—byte—count (hv消息最大凈荷 字節(jié)數(shù)) 240
#定義hv—message—max—payload_qword—count (hv消息最大凈 荷qword數(shù)) 30
typedef struct
HV—MESSAGE—HEADER Header (首部);
UI>Tt64 Payload"[hv—mess age—max—payload—q word—count]; } hv—message;
表l
圖9是描繪根據(jù)此處的本發(fā)明的處理器間消息處理的實施例的流程圖。發(fā) 送處理器發(fā)送對應于已被指定為自動EOI的指定SINT的處理器間消息902。 VMM將該消息附加到消息隊列904并確定對應于該指定SINT的消息槽是否 為空906。如果前一消息仍然存在于該消息槽中,則VMM在該槽中的消息的 首部中置位消息待決位。如果該消息槽為空,則VMM將該消息復制到該消息 槽910并且將與指定的SINT相關(guān)聯(lián)的中斷發(fā)送到接收處理器912。當在該接與SINT相關(guān)聯(lián)的中斷時,其ISR從該相應 消息槽中讀取該消息并基于消息類型和凈荷來執(zhí)行動作914。當該消息的處理 完成時,該ISR清除該消息類型916。例如,根據(jù)表1中所定義的數(shù)據(jù)結(jié)構(gòu), ISR可通過將一指定值寫入HV—MESSAGE_TYPE來清除該消息類型。該ISR 然后檢査剛剛處理的消息的消息待決位918。如果該消息待決位未被置位,意 味著沒有其他消息對該消息槽排隊,則ISR無需執(zhí)行其他動作920。這應當是 最經(jīng)常出現(xiàn)的情況。具體而言,ISR無需發(fā)送EOI命令,由此避免了相當多的 計算開銷。
如果消息待決位已被設置,則該ISR向虛擬化的中斷控制器發(fā)送消息結(jié)束 ("EOM")命令922,告訴VMM它應當重新嘗試排隊消息的傳遞。EOM命 令的計算成本大致與EOI命令相同,但EOM僅在其他消息對消息槽排隊的罕 見情況下才被發(fā)送。因此,處理處理器間消息的平均成本被顯著地降低。
盡管已結(jié)合各附圖所示的各實施例描述了本發(fā)明,但可以理解,可以使用 類似的方面,或可以對所公開的各實施例的所述方面進行修改或添加來執(zhí)行本 發(fā)明的相同功能而不背離本發(fā)明。例如,在本發(fā)明的各方面,公開了用于提高 虛擬化環(huán)境中的中斷處理的操作效率的各種機制。然而,本文的教導還考慮了 與這些描述方面等價的其它機制。因此,本發(fā)明應當不限于任何單一方面,而 應按照所附權(quán)利要求書的寬度與范圍來解釋。
權(quán)利要求
1.一種供虛擬化計算系統(tǒng)處理中斷的方法,所述虛擬化計算系統(tǒng)包括虛擬機監(jiān)控程序和至少一個來賓操作系統(tǒng),所述方法包括在虛擬化的中斷控制器處接收第一中斷請求;以及基本上在接收到所述第一中斷請求后立即清除對應于所述第一中斷請求的中斷服務標志。
2. 如權(quán)利要求1所述的方法,其特征在于,還包括執(zhí)行由所述第一個中斷規(guī)定的動作,并且其中基本上在接收到所述第一中斷請求后立即清除對應于所 述第一中斷請求的中斷服務標志包括在由所述第一個中斷規(guī)定的動作被完全 執(zhí)行之前清除對應于所述第一 中斷請求的中斷服務標志。
3. 如權(quán)利要求1所述的方法,其特征在于,還包括 執(zhí)行由所述第一個中斷規(guī)定的動作;以及準許在執(zhí)行由所述第一個中斷規(guī)定的動作的同時傳遞其他中斷。
4. 如權(quán)利要求3所述的方法,其特征在于,執(zhí)行由所述第一個中斷規(guī)定的 動作由虛擬機監(jiān)控程序來仲裁。
5. 如權(quán)利要求1所述的方法,其特征在于,所述第一中斷請求對應于對第 一分區(qū)間消息的請求。
6. 如權(quán)利要求5所述的方法,其特征在于,還包括 提供至少一個消息槽,每一個所述消息槽都與虛擬處理器相關(guān)聯(lián);以及 在第二分區(qū)間消息在所述第一分區(qū)間消息的處理完成之前為與所述第一中斷請求的處理器相關(guān)聯(lián)的消息槽排隊的情況下置位與所述第一分區(qū)間消息 相關(guān)聯(lián)的消息待決標志。
7. 如權(quán)利要求6所述的方法,其特征在于,還包括在與分區(qū)間消息相關(guān)聯(lián)的消息待決位已被置位的情況下在完成處理所述 分區(qū)間消息后向所述虛擬化的中斷控制器發(fā)出消息結(jié)束命令。
8. —種供虛擬化計算系統(tǒng)處理中斷的方法,所述虛擬化計算系統(tǒng)包括虛擬 機監(jiān)控程序和至少一個來賓操作系統(tǒng),所述方法包括從來賓操作系統(tǒng)接收中斷結(jié)束命令;確定所述中斷結(jié)束命令不對應于被標記為正在運行中的最高優(yōu)先級的中斷;記錄標識對應于所接收到的中斷結(jié)束命令的中斷的信息;以及 在接收到對應于被標記為正在運行中的最高優(yōu)先級的中斷的中斷結(jié)束命 令后處理所述中斷結(jié)束命令。
9. 如權(quán)利要求8所述的方法,其特征在于,還包括 在完成處理針對最高優(yōu)先級的運行中中斷的中斷結(jié)束命令后處理針對與所記錄信息相對應的中斷的中斷結(jié)束命令。
10. —種系統(tǒng),包括 虛擬機監(jiān)控程序;以及虛擬化的中斷控制器,其被配置成基本上在接收到中斷請求后立即清除對 應于所述中斷請求的中斷服務標志。
11. 如權(quán)利要求10所述的系統(tǒng),其特征在于,所述虛擬化的中斷控制 器被配置成在由第一中斷請求規(guī)定的動作被完全執(zhí)行之前清除對應于所述中 斷請求的中斷服務標志。
12. 如權(quán)利要求10所述的系統(tǒng),其特征在于,所述虛擬機監(jiān)控程序被 配置成在第二分區(qū)間消息在第一分區(qū)間消息的處理完成之前排隊時標記所述 第一分區(qū)間消息,并且其中所述虛擬化的中斷控制器僅在所述第一分區(qū)間消息 被標記的情況下在所述第一分區(qū)間消息的處理完成時接收到信號通知。
13. —種系統(tǒng),包括 虛擬機監(jiān)控程序;以及虛擬化的中斷控制器,其中所述虛擬化的中斷控制器被配置成記錄標識對 應于所接收到的中斷結(jié)束命令的中斷的信息以允許在較高優(yōu)先級的運行中中 斷的處理完成后處理所接收到的中斷結(jié)束命令。
14. 一種包括用于管理中斷的計算機可執(zhí)行指令的計算機可讀介質(zhì),所 述指令包括用于基本上在虛擬化的中斷控制器接收到中斷服務請求之后立即 清除對應于所述中斷服務請求的中斷服務標志的指令。
15. 如權(quán)利要求14所述的計算機可讀介質(zhì),其特征在于,還包括用于 在執(zhí)行由中斷服務請求規(guī)定的動作的同時準許其他中斷服務請求的傳遞的計 算機可執(zhí)行指令。
16. 如權(quán)利要求14所述的計算機可讀介質(zhì),其特征在于,還包括用于 便于處理器間通信的計算機可執(zhí)行指令,包括用于在第二處理器間消息在第一處理器間消息的處理完成之前為接收所 述第一處理器間消息的處理器排隊的情況下置位與所述第一處理器間消息相 關(guān)聯(lián)的消息待決標志的指令。
17. 如權(quán)利要求16所述的計算機可讀介質(zhì),其特征在于,與第一處理器間消息相關(guān)聯(lián)的消息待決標志被具體化為所述第一處理器間消息的首部中 的位。
18. 如權(quán)利要求16所述的計算機可讀介質(zhì),其特征在于,還包括用于 在與分區(qū)間消息相關(guān)聯(lián)的消息待決標志已被置位的情況下在完成處理所述分 區(qū)間消息后發(fā)信號通知虛擬化的中斷控制器的計算機可執(zhí)行指令。
19. 一種包括用于管理中斷的計算機可執(zhí)行指令的計算機可讀介質(zhì),所述指令包括用于在當接收到中斷結(jié)束命令時所述中斷結(jié)束命令不對應于正被 處理的最高優(yōu)先級的中斷的情況下將所述中斷結(jié)束命令排隊以供稍后處理的 指令。
20. 如權(quán)利要求19所述的計算機可讀介質(zhì),其特征在于,還包括用于 在處理與比對應于排隊的中斷結(jié)束命令的中斷有更高優(yōu)先級的中斷相對應的 中斷結(jié)束命令后處理所述排隊的中斷結(jié)束命令的指令。
全文摘要
公開了用于提高虛擬化環(huán)境中的中斷處理的操作效率的各種操作。一種虛擬化的中斷控制器可通過即使在物理中斷控制器不提供自動EOI能力時也提供這一機制來避免對顯式中斷結(jié)束命令的需求。對分區(qū)間通信使用消息待決位便于避免分區(qū)間通信中所使用的處理器間中斷的EOI命令,只要對特定消息槽不再提示消息即可。虛擬化的中斷控制器即使在其不是最高優(yōu)先級的運行中中斷時也便于中斷的選擇性EOI,而不管物理中斷控制器是否提供這一功能。
文檔編號G06F13/24GK101553792SQ200780045239
公開日2009年10月7日 申請日期2007年11月13日 優(yōu)先權(quán)日2006年12月6日
發(fā)明者E·P·托奧特, R·A·維加, S·甘吉利 申請人:微軟公司