亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

中斷虛擬化的制作方法

文檔序號(hào):6359939閱讀:285來源:國(guó)知局
專利名稱:中斷虛擬化的制作方法
中斷虛擬化背景發(fā)明領(lǐng)域本發(fā)明涉及處理器和虛擬化,且更具體地涉及將中斷傳送給虛擬機(jī)客戶。相關(guān)技術(shù)的描述虛擬化為了各種不同的目的而用在計(jì)算機(jī)系統(tǒng)中。例如,虛擬化可用于執(zhí)行“容器”中的特許軟件以防止特許軟件直接訪問至少一些物理機(jī)狀態(tài)和/或?qū)χ辽僖恍┪锢頇C(jī)狀態(tài)產(chǎn)生改變而不首先被允許通過控制虛擬機(jī)的虛擬機(jī)管理器(VMM)來這么做。這樣的容器可防止“出錯(cuò)的(buggy)”或惡意軟件在物理機(jī)上造成問題。此外,虛擬化可用于在同一物理機(jī)上同時(shí)執(zhí)行兩個(gè)或多個(gè)特許程序??煞乐固卦S程序彼此干擾,因?yàn)閷?duì)物理機(jī)的訪問被控制。特許程序可包括操作系統(tǒng),并且還可包括預(yù)期具有硬件的完全控制的其它軟件,軟件在該硬件上執(zhí)行。在另一實(shí)例中,虛擬化可用于在與特許程序所預(yù)期的硬件不同的硬件·上執(zhí)行特許程序。通常,處理器或計(jì)算機(jī)系統(tǒng)的虛擬化可包括給一個(gè)或多個(gè)特許程序提供對(duì)虛擬機(jī)(上面提到的容器)的訪問,特許程序?qū)υ撎摂M機(jī)有完全的控制,但物理機(jī)的控制由VMM保持。虛擬機(jī)可包括處理器(或多個(gè)處理器)、存儲(chǔ)器、和特許程序預(yù)期在它正執(zhí)行的機(jī)器中找到的各種外圍設(shè)備。虛擬機(jī)元件可至少暫時(shí)由VMM分配給虛擬機(jī)的硬件實(shí)現(xiàn),和/或可以用軟件來仿真。每個(gè)特許程序(和在一些情況下相關(guān)的軟件,例如在操作系統(tǒng)上執(zhí)行的應(yīng)用)可在本文稱為客戶。虛擬化可以用軟件(例如,上面提到的VMM)實(shí)現(xiàn),而沒有在物理機(jī)中的任何特定的硬件虛擬化支持,VMM及其虛擬機(jī)在該物理機(jī)上執(zhí)行。然而,如果一些硬件支持被提供,則虛擬化可被簡(jiǎn)化和/或?qū)嵭懈叩男阅???蓪?duì)虛擬化產(chǎn)生的一個(gè)問題是中斷傳送的時(shí)延。如上所述,外圍設(shè)備可被分配來由虛擬機(jī)使用(以充當(dāng)在虛擬機(jī)中的虛擬外圍設(shè)備)。這樣的外圍設(shè)備可產(chǎn)生由虛擬機(jī)中的軟件處理的中斷。在非虛擬化環(huán)境中,中斷處理時(shí)延可能相對(duì)短。在虛擬化環(huán)境中,中斷通常由VMM攔截、由VMM處理、并由VMM使用某種軟件機(jī)制傳送到目標(biāo)虛擬機(jī)。然而,中斷處理時(shí)延可以比未虛擬化的環(huán)境明顯更大(例如大約更長(zhǎng)100倍)。除了外圍設(shè)備產(chǎn)生的中斷(更簡(jiǎn)潔地,在本文是“設(shè)備中斷”)以外,處理器還可產(chǎn)生處理器間中斷(IPI)。在虛擬機(jī)中,IPI可在虛擬處理器(或vCPU)和虛擬機(jī)中的另一 vCPU之間產(chǎn)生。vCPU是被定義為包括在給定客戶的虛擬機(jī)中的處理器。在客戶中有至少一個(gè)vCPU,但對(duì)多處理客戶可以有多個(gè)vCPU。概述在一個(gè)實(shí)施方案中,設(shè)備中斷管理器可配置成從分配給客戶的設(shè)備(或從分配給客戶的支持虛擬功能的設(shè)備)接收中斷。設(shè)備中斷管理器可配置成發(fā)送定向到系統(tǒng)存儲(chǔ)器中的存儲(chǔ)器位置的操作以為客戶內(nèi)的虛擬處理器記錄中斷,其中中斷將被傳送到目標(biāo)虛擬處理器。在一個(gè)實(shí)現(xiàn)中,設(shè)備中斷管理器可包括在輸入/輸出(I/o)存儲(chǔ)器管理單元(IOMMU)中。
在實(shí)施方案中,虛擬機(jī)管理器可配置成探測(cè)由設(shè)備中斷管理器為目前不正在執(zhí)行的虛擬處理器記錄的中斷。虛擬機(jī)管理器可配置成調(diào)度用于在硬件處理器上執(zhí)行的虛擬處理器,或可響應(yīng)于中斷而優(yōu)先考慮用于調(diào)度的虛擬處理器。附圖簡(jiǎn)述下面的詳細(xì)描述參考現(xiàn)在被簡(jiǎn)要描述的附圖。圖I是實(shí)現(xiàn)虛擬化的計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施方案的方框圖。圖2是圖I所示的主機(jī)硬件的一個(gè)實(shí)施方案的方框圖。圖3是示出被傳送到客戶的中斷的一個(gè)實(shí)施方案的方框圖。圖4是示出虛擬機(jī)控制塊(VMCB)的一個(gè)實(shí)施方案的方框圖。 圖5是示出在客戶APIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)中的客戶APIC狀態(tài)條目的一個(gè)實(shí)施方案的方框圖。圖6是示出為中斷找出客戶APIC狀態(tài)條目的一個(gè)實(shí)施方案的方框圖。圖7是示出的圖2所示的響應(yīng)于接收到來自設(shè)備的中斷的設(shè)備中斷管理器的一個(gè)實(shí)施方案的操作的流程圖。圖8是示出圖2所示的響應(yīng)于虛擬機(jī)運(yùn)行(VMRUN)指令的處理器的一個(gè)實(shí)施方案的操作的流程圖。圖9是示出圖2所示的響應(yīng)于虛擬機(jī)退出(VMExit)的處理器的一個(gè)實(shí)施方案的操作的流程圖。

圖10是示出圖2所示的響應(yīng)于對(duì)在處理器上執(zhí)行的客戶探測(cè)到中斷的處理器的一個(gè)實(shí)施方案的操作的流程圖。圖11是示出圖2所示的響應(yīng)于一般指令的處理器的一個(gè)實(shí)施方案的操作的流程圖。圖12是示出VMM初始化客戶的一個(gè)實(shí)施方案的流程圖。圖13是示出VMM在客戶的執(zhí)行期間提供客戶支持的一個(gè)實(shí)施方案的流程圖。圖14是示出VMM刪除客戶的一個(gè)實(shí)施方案的流程圖。圖15是存儲(chǔ)VMM和/或微代碼的一個(gè)實(shí)施方案的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的一個(gè)實(shí)施方案的方框圖。圖16是示出用于將客戶中斷控制消息傳送到處理器中的客戶中斷控制單元的模型特定寄存器(MSR)的一個(gè)實(shí)施方案的方框圖。雖然本發(fā)明容許各種修改和可選的形式,但是其特定的實(shí)施方案作為例子在附圖中示出,并將在本文被詳細(xì)描述。然而應(yīng)理解,附圖和對(duì)其的詳細(xì)描述并沒有被規(guī)定為將本發(fā)明限制到所公開的特定形式,而相反,本發(fā)明涵蓋落在如所附權(quán)利要求所限定的本發(fā)明的精神和范圍內(nèi)的所有修改、等效和可選形式。本文使用的標(biāo)題僅為了組織目的,且并不意指用于限制本描述的范圍。如在整個(gè)申請(qǐng)中使用的,詞“可以”在許可的意義(即,意味著有可能)上而不是強(qiáng)制的意義(即,意味著必須)上使用。類似地,詞“include (包括)”、“including(包括)”和“includes (包括)”意指包括但不限于。各種單元、電路或其它部件可被描述為“配置成”執(zhí)行一個(gè)或多個(gè)任務(wù)。在這樣的背景下,“配置成”是通常意指“具有在操作期間執(zhí)行一個(gè)或多個(gè)任務(wù)的電路”的結(jié)構(gòu)的廣泛陳述。因此,單元/電路/部件可配置成執(zhí)行任務(wù),即使單元/電路/部件當(dāng)前不運(yùn)行。通常,形成相應(yīng)于“配置成”的結(jié)構(gòu)的電路可包括實(shí)現(xiàn)操作的硬件電路。類似地,為了描述中的方便,各種單元/電路/部件可被描述為執(zhí)行一個(gè)或多個(gè)任務(wù)。這樣的描述應(yīng)被解釋為包括短語“配置成”。在一些情況下,配置成執(zhí)行一個(gè)或多個(gè)任務(wù)的電路可包括可執(zhí)行來實(shí)現(xiàn)操作的存儲(chǔ)器存儲(chǔ)程序指令。存儲(chǔ)器可包括易失性存儲(chǔ)器例如靜態(tài)或動(dòng)態(tài)隨機(jī)存儲(chǔ)器和/或非易失性存儲(chǔ)器例如光盤或磁盤存儲(chǔ)器、閃存、可編程只讀存儲(chǔ)器等。詳述配置成執(zhí)行一個(gè)或多個(gè)任務(wù)的單元/電流/部件并不明確地援引35U. S. C. § 112,對(duì)該單元/電路/部件的第六段的解釋。實(shí)施方案的詳細(xì)描述在一個(gè)實(shí)施方案中,計(jì)算機(jī)系統(tǒng)包括VMM和在虛擬機(jī)中執(zhí)行的一個(gè)或多個(gè)客戶。外圍設(shè)備可分配給客戶(例如,以作為客戶的虛擬機(jī)中的相應(yīng)虛擬外圍設(shè)備來操作)。可選地,外圍設(shè)備可支持虛擬功能,且虛擬功能可分配給客戶。外圍設(shè)備可產(chǎn)生待傳送給客戶的設(shè)備中斷。設(shè)備中斷管理器可配置成探測(cè)到設(shè)備中斷被定向在客戶處(與被定向在VMM或VMM執(zhí)行的主機(jī)軟件(如果有的話)處的主機(jī)中斷相反)。更具體地,設(shè)備中斷管理器可配置成探測(cè)中斷以在客戶的虛擬機(jī)內(nèi)的哪個(gè)vCPU為目標(biāo)。設(shè)備中斷管理器可配置成在客戶 中斷控制器數(shù)據(jù)結(jié)構(gòu)中記錄中斷。如果目標(biāo)vCPU目前正在計(jì)算機(jī)系統(tǒng)中的硬件處理器上執(zhí)行,那么硬件處理器可探測(cè)客戶中斷,并可重定向客戶/VCPU以服務(wù)于中斷。例如,設(shè)備中斷管理器可將消息發(fā)送到硬件處理器以指示新的客戶中斷已被記錄在數(shù)據(jù)結(jié)構(gòu)中。響應(yīng)于該消息,硬件處理器可讀取客戶中斷數(shù)據(jù)結(jié)構(gòu)并優(yōu)先考慮該中斷與記錄在數(shù)據(jù)結(jié)構(gòu)中的其它未決的中斷(如果有的話)?;趦?yōu)先考慮,硬件處理器可傳送中斷或等待完成一個(gè)或多個(gè)較高優(yōu)先級(jí)中斷和/或較高優(yōu)先級(jí)過程。在另一實(shí)例中,硬件處理器可配置成在相應(yīng)的客戶vCPU的執(zhí)行期間監(jiān)控客戶中斷數(shù)據(jù)結(jié)構(gòu)(或在客戶中斷數(shù)據(jù)結(jié)構(gòu)內(nèi)的區(qū)域),以探測(cè)到中斷已被記錄在數(shù)據(jù)結(jié)構(gòu)中。響應(yīng)于探測(cè)到對(duì)數(shù)據(jù)結(jié)構(gòu)的更新,硬件處理器可讀取數(shù)據(jù)結(jié)構(gòu)并傳送中斷,如上所述。在一個(gè)實(shí)施方案中,硬件處理器可包括配置成為客戶中斷實(shí)現(xiàn)上述操作的處理器部分的客戶中斷控制單元。此外,客戶中斷控制單元可確保對(duì)vCPU的中斷控制器的客戶訪問通過客戶中斷數(shù)據(jù)結(jié)構(gòu)而不是通過可耦合到硬件處理器的主機(jī)中斷控制器來處理。也就是說,客戶中的中斷控制器訪問可轉(zhuǎn)換成客戶中斷數(shù)據(jù)結(jié)構(gòu)內(nèi)的存儲(chǔ)器訪問。因此,客戶中斷控制單元可參與虛擬化和仿真客戶中斷控制單元。在一個(gè)實(shí)施方案中,客戶中斷控制單元可至少部分地以微代碼實(shí)現(xiàn)。微代碼可以是存儲(chǔ)在處理器內(nèi)的非易失性存儲(chǔ)器中的、由處理器電路響應(yīng)于探測(cè)到經(jīng)由微代碼例程實(shí)現(xiàn)的某些指令或其它操作而調(diào)用的指令。微代碼可因此被分派來在處理器中執(zhí)行以執(zhí)行所實(shí)現(xiàn)的操作。在一些實(shí)施方案中,客戶中斷控制單元可以主要用微代碼實(shí)現(xiàn)。在其它實(shí)施方案中,客戶中斷控制單元可用硬件實(shí)現(xiàn)。對(duì)vCPU中斷處理器的客戶訪問可包括讀/寫中斷控制器中的寄存器。在一個(gè)實(shí)施方案中,寫中斷控制器中的一個(gè)或多個(gè)寄存器可觸發(fā)IPI。處理器中的客戶中斷控制單元可響應(yīng)于引起IPI的在客戶中的寫而向目標(biāo)VCPU發(fā)起IPI??蛻鬒PI可包括更新與目標(biāo)VCPU相關(guān)的數(shù)據(jù)結(jié)構(gòu)以記錄IPI。通常,IPI可以是由處理器或更具體地由在處理器上執(zhí)行的軟件提供的中斷。IPI可以以系統(tǒng)中的一個(gè)或多個(gè)處理器(有時(shí)包括純?cè)椿幚砥?為目標(biāo)。因此,IPI可以是在一個(gè)處理器上執(zhí)行的軟件中斷在另一處理器上執(zhí)行的軟件的機(jī)制。IPI可用于在不同處理器上執(zhí)行的線程之間傳遞消息,以將最初定向在一個(gè)處理器的中斷傳遞到另一處理器。中斷可以處理器或vCPU為目標(biāo),如果該中斷將由與處理器/VCPU相關(guān)的中斷控制器接收。處理器/vCPU可以不必處理中斷,但可以是用于處理中斷并可參與確定哪些處理器/VCPU將處理中斷的候選物。中斷可以明確指定其目標(biāo)(例如,使用物理或邏輯ID),或可以是以所有處理器/VCPU為目標(biāo)的廣播中斷。通常,如果與目標(biāo)處理器相關(guān)的中斷控制器記錄了中斷用于傳送到處理器的中斷,則中斷可被稱為接受的。也就是說,在接受之后的某個(gè)時(shí)間點(diǎn),中斷將被傳送到處理器。中斷該處理器以服務(wù)于中斷可被稱為傳送中斷。VCPU和/或相應(yīng)的虛擬中斷控制器和/或這對(duì)部件可在本文被更簡(jiǎn)潔地稱為客戶內(nèi)的中斷的目的地。目的地可最終是將服務(wù)于中斷的VCPU,但相應(yīng)的虛擬中斷控制器也可被視為目的地,因?yàn)樗c相應(yīng)的處理器相關(guān),并記錄該中斷。計(jì)算機(jī)系統(tǒng)可包括至少一個(gè)主機(jī)中斷控制器。主機(jī)中斷控制器可管理將由主機(jī)(例如,在虛擬化環(huán)境中的虛擬機(jī)管理器或VMM和/或VMM可在一些實(shí)施方案例如主機(jī)OS中運(yùn)行的其它軟件)服務(wù)的中斷。這樣的中斷可包括例如來自計(jì)算機(jī)系統(tǒng)中的未分配到在系統(tǒng)上執(zhí)行的客戶的設(shè)備的中斷,VMM不希望暴露于客戶的系統(tǒng)級(jí)中斷,等等。上述客戶中 斷操作可用于管理將由客戶服務(wù)的中斷(客戶中斷)。客戶中斷可包括例如由被分配到客戶的設(shè)備發(fā)出以為客戶的虛擬機(jī)提供該設(shè)備的功能的中斷,或從一個(gè)vCPU分發(fā)到客戶內(nèi)的另一 vCPU的IPI。在一個(gè)實(shí)施方案中,本文所述的客戶中斷操作可導(dǎo)致對(duì)客戶中斷的減小的時(shí)延。例如,在一些實(shí)施方案中,傳送客戶設(shè)備中斷的時(shí)延可類似于傳送主機(jī)設(shè)備中斷的時(shí)延??蛻糁袛鄷r(shí)延可大致與主機(jī)中斷時(shí)延、某個(gè)數(shù)量級(jí)的時(shí)延等相同。在一個(gè)實(shí)施方案中,客戶中斷管理的相當(dāng)大的一部分可在硬件處理器中實(shí)現(xiàn)。在一些實(shí)施方案中,通過在系統(tǒng)的一個(gè)部分中找出大部分操作,可簡(jiǎn)化該實(shí)現(xiàn)。因此,在一些實(shí)施方案中,該實(shí)現(xiàn)可能更可能是正確的,可以更快地完成,等等。虛擬化概述圖I示出實(shí)現(xiàn)虛擬化的計(jì)算機(jī)系統(tǒng)5的一個(gè)實(shí)施方案的方框圖。在圖I的實(shí)施方案中,示出多個(gè)客戶10A-10N??蛻鬒OA包括客戶操作系統(tǒng)(OS) 12和在客戶OS 12上運(yùn)行的一個(gè)或多個(gè)應(yīng)用14A-14N。客戶ION包括特許代碼16。客戶10A-10N由虛擬機(jī)管理器(VMM) 18管理。VMM 18和客戶10-10N在主機(jī)硬件20上執(zhí)行,主機(jī)硬件20可包括物理硬件,物理硬件包括在計(jì)算機(jī)系統(tǒng)5中。在一個(gè)實(shí)施方案中,VMM 18可維持一組虛擬機(jī)控制塊(VMCB)22。對(duì)每個(gè)客戶10A-10N可以有一個(gè)VMCB 22。在一個(gè)實(shí)施方案中,對(duì)每個(gè)客戶10A-10N中的每個(gè)vCPU可以有一個(gè)VMCB 22。雖然VMCB 22對(duì)圖I的圖示被示為VMM 18的部分,但是VMCB 22可存儲(chǔ)在存儲(chǔ)器中和/或非易失性介質(zhì)例如主機(jī)硬件20中的磁盤驅(qū)動(dòng)器上。主機(jī)硬件20通常包括包含在計(jì)算機(jī)系統(tǒng)5中的硬件。在各種實(shí)施方案中,主機(jī)硬件20可包括一個(gè)或多個(gè)處理器、存儲(chǔ)器、外圍設(shè)備和用于耦合前面的部件的其它電路。例如,個(gè)人計(jì)算機(jī)(PC)型系統(tǒng)可包括北橋,其耦合處理器、存儲(chǔ)器、使用接口例如PCIExpress接口的圖形設(shè)備。此外,北橋可耦合到外圍總線例如外圍部件接口(PCI)總線,各種外圍部件可直接或間接耦合到該外圍總線。也可包括耦合到PCI總線的南橋,以提供時(shí)延功能和/或耦合到時(shí)延硬件。在其它實(shí)施方案中,其它電路可用于鏈接各種硬件部件。例如,HyperTransport (HT)鏈路可用于鏈接節(jié)點(diǎn),其中每個(gè)節(jié)點(diǎn)可包括一個(gè)或多個(gè)處理器、主機(jī)橋和存儲(chǔ)器控制器。每個(gè)代碼也可包括北橋。主機(jī)橋可用于經(jīng)由HT鏈路以菊花鏈方式耦合到外圍設(shè)備。可選地,很多部件可包括在單個(gè)設(shè)備例如集成一個(gè)或多個(gè)處理器、北橋功能和圖形設(shè)備的單個(gè)設(shè)備上。可使用任何期望的電路/主機(jī)硬件結(jié)構(gòu)。VMM 18可配置成為客戶10A-10N中的每個(gè)提供虛擬化,并可控制客戶10A-10N對(duì)主機(jī)硬件20的訪問。VMM 18也可負(fù)責(zé)調(diào)度用于在主機(jī)硬件20上執(zhí)行的客戶10A-10N(且更具體地,在客戶內(nèi)的vCPU,如果多于一個(gè)的vCPU被包括)。VMM 18可配置成使用在主機(jī)硬件20中提供的對(duì)虛擬化的硬件支持。例如,處理器可提供對(duì)虛擬化的硬件支持,包括攔截事件并使客戶退出到VMM 18用于處理的硬件。處理器中的設(shè)備中斷管理器和/或客戶中斷控制單元也可以是被提供來支持虛擬化的硬件。在一些實(shí)施方案中,VMM 18可被實(shí)現(xiàn)為在主機(jī)硬件20上執(zhí)行并為客戶10A-10N提供虛擬化的“瘦”獨(dú)立軟件程序。這樣的VMM實(shí)現(xiàn)有時(shí)可被稱為“超級(jí)監(jiān)督器”。在其它實(shí)施方案中,VMM 18可集成到主機(jī)OS中并在主機(jī)OS上執(zhí)行。在這樣的實(shí)施方案中,VMM18可 依賴于主機(jī)OS,包括主機(jī)OS中的任何驅(qū)動(dòng)器,由系統(tǒng)BIOS提供的平臺(tái)系統(tǒng)管理模式(SMM)代碼,等等。因此,主機(jī)OS部件(和各種低級(jí)部件例如平臺(tái)SMM代碼)直接在主機(jī)硬件20上執(zhí)行,且不被VMM 18虛擬化。在一個(gè)實(shí)施方案中,VMM 18和主機(jī)OS(如果被包括)可一起被稱為主機(jī)。通常,主機(jī)可包括在使用期間在主機(jī)硬件20的直接控制中的任何代碼。例如,主機(jī)可以是VMM 18、結(jié)合主機(jī)OS的VMM 18、或僅僅主機(jī)OS(例如,在非虛擬化環(huán)境中)。在各種實(shí)施方案中,VMM 18可支持全虛擬化、半虛擬化或兩者。此外,在一些實(shí)施方案中,VMM 18可同時(shí)執(zhí)行被半虛擬化的客戶以及被全虛擬化的客戶。使用全虛擬化,客戶10A-10N不知道虛擬化正出現(xiàn)。每個(gè)客戶10A-10N可具有在其虛擬機(jī)中的連續(xù)的基于零的存儲(chǔ)器,且VMM 18可使用陰影頁表或嵌套頁表來控制對(duì)主機(jī)物理地址空間的訪問。陰影頁表可從客戶虛擬地址重映射到主機(jī)物理地址(實(shí)際上將客戶10A-10N中的存儲(chǔ)器管理軟件所分配的客戶“物理地址”重映射到主機(jī)物理地址),而嵌套頁表可接收客戶物理地址作為輸入并映射到主機(jī)物理地址。對(duì)每個(gè)客戶10A-10N使用陰影頁表或嵌套頁表,VMM18可確??蛻舨辉L問主機(jī)硬件20中的其它客戶的物理存儲(chǔ)器。使用半虛擬化,客戶10A-10N可以至少部分地是VM感知的。這樣的客戶10A-10N可與VMM 18協(xié)商存儲(chǔ)頁,并因此將客戶物理地址重映射到主機(jī)物理地址可能是不需要的。在一個(gè)實(shí)施方案中,在半虛擬化中,可允許客戶10A-10N直接與主機(jī)硬件20中的外圍設(shè)備交互作用。在任何給定的時(shí)間,外圍設(shè)備可以被客戶或客戶10A-10N “擁有”。在一個(gè)實(shí)施方案中,例如外圍設(shè)備可被映射到具有目前擁有該外圍設(shè)備的一個(gè)或多個(gè)客戶10A-10N的保護(hù)域中。只有擁有外圍設(shè)備的客戶可與其直接相互作用。還可能有防止保護(hù)域中的設(shè)備讀/寫被分配給在另一保護(hù)域中的客戶的頁的保護(hù)機(jī)制??蛇x地,外圍設(shè)備可支持虛擬功能,客戶可擁有該虛擬功能或客戶可與該虛擬功能交互作用。如前所述,VMM 18可對(duì)每個(gè)客戶10A-10N和/或客戶中的每個(gè)vCPU維持VMCB22。VMCB 22通??砂ù鎯?chǔ)在存儲(chǔ)區(qū)中的數(shù)據(jù)結(jié)構(gòu),存儲(chǔ)區(qū)可由VMM 18為相應(yīng)的客戶10A-10N分配。在一個(gè)實(shí)施方案中,VMCB 22可包括存儲(chǔ)器的頁,雖然其它實(shí)施方案可使用更大或更小的存儲(chǔ)區(qū)和/或可使用在其它介質(zhì)上的存儲(chǔ)器例如非易失性存儲(chǔ)器。在一個(gè)實(shí)施方案中,VMCB 22可包括客戶的處理器狀態(tài),其可在客戶被調(diào)度來執(zhí)行時(shí)被裝入主機(jī)硬件20中的處理器中,并可在客戶存在時(shí)被存儲(chǔ)回到VMCB 22 (由于完成其安排的時(shí)間或由于處理器對(duì)客戶存在探測(cè)到的一次或多次攔截)。在一些實(shí)施方案中,只有處理器狀態(tài)的一部分經(jīng)由將控制傳送到相應(yīng)于VMCB 22的客戶的指令(虛擬機(jī)運(yùn)行(VMRUN)指令)被裝入,而其它期望的狀態(tài)可由VMM 18在執(zhí)行VMRUN指令之前被裝入。類似地,在這樣的實(shí)施方案中,只有處理器狀態(tài)的一部分可在客戶退出時(shí)由處理器存儲(chǔ)到VMCB 22,且VMM 18可負(fù)責(zé)按需要存儲(chǔ)任何額外的狀態(tài)。在其它實(shí)施方案中,VMCB 22可包括到另一存儲(chǔ)區(qū)的指針,處理器狀態(tài)被存儲(chǔ)在該存儲(chǔ)區(qū)。此外,在一個(gè)實(shí)施方案中,可定義兩個(gè)或多個(gè)退出機(jī)制。在一個(gè)實(shí)施方案中,所存儲(chǔ)的狀態(tài)的量和被裝入的狀態(tài)的位置可根據(jù)哪個(gè)退出機(jī)制被選擇來變化。在一個(gè)實(shí)施方案中,VMM 18還可具有被分配來存儲(chǔ)相應(yīng)于VMM 18的處理器狀態(tài)的存儲(chǔ)區(qū)。當(dāng)VMRUN被執(zhí)行時(shí),相應(yīng)于VMM18的處理器狀態(tài)可保存在區(qū)域中。當(dāng)客戶退出到VMM 18時(shí),來自該區(qū)域的處理器狀態(tài)可從該區(qū)域重新裝入以允許VMM 18繼續(xù)執(zhí)行。在一個(gè)實(shí)施方案中,例如處理器可實(shí)現(xiàn)寄存器(例如,模型特定寄存器或MSR)以存儲(chǔ)VMM 18的保存區(qū)的地址。
此外,VMCB 22可包括識(shí)別對(duì)用戶啟用的攔截事件的攔截配置和用于使客戶退出的機(jī)制,如果所啟用的攔截事件被探測(cè)到。在一個(gè)實(shí)施方案中,攔截配置可包括一組攔截指示,對(duì)處理器支持的每個(gè)攔截事件有一個(gè)指示。攔截指示可指示處理器是否攔截相應(yīng)的事件(或以另一方式考慮,攔截是否被啟用)。如本文使用的,事件在客戶中被“攔截”,如果事件應(yīng)在客戶中出現(xiàn),則使客戶退出用于處理事件。在一個(gè)實(shí)施方案中,攔截配置可包括指示兩個(gè)退出機(jī)制中的哪個(gè)被使用的第二組指示。其它實(shí)施方案可定義多于兩個(gè)的退出機(jī)制。在另一實(shí)施方案中,攔截配置可包括一組攔截指示,每個(gè)攔截事件一個(gè)指示,其指示第一退出機(jī)制是否應(yīng)用于該事件;以及第二組攔截指示,每個(gè)攔截事件一個(gè)指示,其指示第二退出機(jī)制是否應(yīng)用于該事件。通常,退出機(jī)制可定義由處理器執(zhí)行來使客戶執(zhí)行退出(通常以可重新啟動(dòng)的方式)并開始執(zhí)行另一代碼的操作。在一個(gè)實(shí)施方案中,一種退出機(jī)制可包括保存少量的處理器狀態(tài)和Minivisor的裝入狀態(tài)。Minivisor可在客戶物理地址空間中執(zhí)行,并可執(zhí)行相對(duì)簡(jiǎn)單的攔截處理。另一退出機(jī)制可退出到VMM,保存較大量的處理器狀態(tài)和裝入VMM的處理器狀態(tài)。因此,攔截事件可由不同的指令代碼處理,取決于事件。此外,相對(duì)簡(jiǎn)單的攔截處理可通過可能花費(fèi)較少的時(shí)間來執(zhí)行的“較輕重量”退出機(jī)制來處理,這可在一些實(shí)施方案中提高性能。在“較重重量”機(jī)制用于退出時(shí),更復(fù)雜的處理可在VMM中執(zhí)行。因此,在這個(gè)實(shí)施方案中,VMM 18可配置處理器以攔截VMM 18不希望客戶10A-10N在內(nèi)部處理的那些事件,且也可配置退出機(jī)制要使用的處理器。事件可包括指令(也就是說,攔截指令,而不是執(zhí)行它)、中斷、例外和/或可能出現(xiàn)在客戶執(zhí)行期間的任何其它期望的事件。在一個(gè)實(shí)施方案中,VMCB 22還可包括其它控制位,其可使處理器在裝入VMCB 22時(shí)執(zhí)行某些行動(dòng)。例如,控制位可包括將TLB淹沒在處理器中的指示。其它控制位可為客戶指定執(zhí)行環(huán)境(例如,中斷處理模式、客戶的地址空間標(biāo)識(shí)符等)。還有其它位可用于傳遞描述客戶為什么退出的退出代碼等。通常,“客戶”可包括將被虛擬化來用于在計(jì)算機(jī)系統(tǒng)5中執(zhí)行的任何一個(gè)或多個(gè)軟件程序??蛻艨砂ㄔ谔卦S模式中執(zhí)行且因此預(yù)期具有對(duì)它正執(zhí)行的計(jì)算機(jī)系統(tǒng)的完全控制的至少一些代碼。如前所述,客戶IOA是客戶(包括客戶OS 12)的例子??蛻鬙S 12可以是任何OS,例如從微軟公司(Redmond, WA)可得到的Windows OS、任何UNIX型操作系統(tǒng)例如Linux、來自IBM公司(Armonk, NY)的AIX、來自太陽微系統(tǒng)公司(Santa Clara, CA)的 Solaris、來自 Hewlett-Packard 公司(Palo Alto, CA)的 HP-UX 等中的任一個(gè)??蛻?ION是包括非OS特許代碼16的客戶的例子。注意,字母“N”在本文中以參考數(shù)字ION被使用時(shí)意指通常指示帶有參考數(shù)字的任何數(shù)量的元件(例如,任何數(shù)量的客戶10A-10N,包括一個(gè)客戶)。此外,使用字母“N”(例如,10N和14N)的不同的參考數(shù)字并沒有被規(guī)定為指示相似數(shù)量的不同元件被提供(例如,客戶10A-10N的數(shù)量可不同于用戶14A-14N的數(shù)量),除非另外說明。豐機(jī)硬件和中斷虛擬化現(xiàn)在轉(zhuǎn)到圖2,示出了說明主機(jī)硬件20的一個(gè)實(shí)施方案的方框圖。在所示實(shí)施方案中,主機(jī)硬件20包括多個(gè)處理器30A-30B、相應(yīng)的高級(jí)可編程中斷控制器(APIC) 32A-32B、橋36 (其包括存儲(chǔ)器控制器42和進(jìn)一步包括設(shè)備中斷管理器38的輸入/輸出(1/0)存儲(chǔ)器管理單元(IOMMU) 40)、多個(gè)接口電路(IF)44A-44C、存儲(chǔ)器接口電路·(MIF) 46、可包括1/0 APIC (在下文中為I0APIC) 50的任選的橋48、外圍設(shè)備52A-52B (其中一些可包括IOAPIC例如IOAPIC 54)和存儲(chǔ)器56。處理器30A-30B耦合到橋36和如圖2所示的相應(yīng)的APIC32A-32B。APIC 32A-32B耦合到橋36,其耦合到接口電路44A-44C和存儲(chǔ)器接口電路46。存儲(chǔ)器接口電路46耦合到存儲(chǔ)器56,且接口電路44A耦合到橋48,橋48耦合到外圍設(shè)備52A-52B。在所示實(shí)施方案中,每個(gè)處理器30A-30B具有相關(guān)的APIC32A-32B。在這個(gè)實(shí)施方案中,攔截可根據(jù)英特爾公司(Santa Clara, CA)所描述的APIC規(guī)范在主機(jī)硬件20中傳遞。見例如 Intel 64 和 IA_32Architectures Software Developer’s Manual, Volume3A: System Programming Guide, Part I, Chapter 10 (December 2009),其在本文通過引用被全部并入。在該規(guī)范中,每個(gè)處理器具有接收中斷(從處理器本身、從其它處理器、從內(nèi)部APIC中斷源和從與外圍設(shè)備相關(guān)的I0APIC)的相關(guān)局部APIC。局部APIC優(yōu)先考慮未決的中斷,并將中斷發(fā)送到處理器,如果它是比在處理器上在進(jìn)行中的另一中斷更高的優(yōu)先級(jí)和/或如果它是比處理器的當(dāng)前任務(wù)更高的優(yōu)先級(jí)。APIC規(guī)范將在本文用作例子,但在其它實(shí)施方案中可使用任何中斷管理規(guī)范。在圖2的實(shí)施方案中,APIC 32A-32B可以是用于處理器的主機(jī)中斷的局部APIC(也就是說,將由主機(jī)處理的中斷)。另一方面,客戶中斷的局部中斷控制器可以不被例示為硬件APIC。替代地,客戶APIC (或更簡(jiǎn)潔地,gAPIC)可以經(jīng)由硬件支持和VMM 18被仿真。具體地,每個(gè)gAPIC可具有其存儲(chǔ)在gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58中的狀態(tài)。gAPIC數(shù)據(jù)結(jié)構(gòu)58可對(duì)在計(jì)算機(jī)系統(tǒng)5中活動(dòng)的每個(gè)客戶中的每個(gè)vCPU包括gAPIC狀態(tài)條目。在一個(gè)實(shí)施方案中,gAPIC狀態(tài)條目可以是對(duì)相應(yīng)的gAPIC狀態(tài)的數(shù)據(jù)的頁。在這樣的實(shí)施方案中,gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58可僅僅是頁的集合。這些頁不需要在存儲(chǔ)器系統(tǒng)中位于彼此附近,或具有除了存儲(chǔ)對(duì)各種gAPIC的gAPIC狀態(tài)數(shù)據(jù)以外的與彼此的任何其它關(guān)系。其它實(shí)施方案可使用更大或更小的gAPIC狀態(tài)條目和/或其它數(shù)據(jù)結(jié)構(gòu)。客戶可以在處理器上是活動(dòng)的,如果客戶當(dāng)前正在該處理器上執(zhí)行(例如,為客戶在處理器上執(zhí)行VMRUN指令,且沒有出現(xiàn)客戶退出),或如果客戶已退出且VMM 18正執(zhí)行,但客戶被預(yù)期再次在處理器上被執(zhí)行。當(dāng)VMM 18在處理器30A-30B上調(diào)度客戶/vCPU時(shí),VMM 18可將指針從vCPU的VMCB 22裝入處理器30A-30B中(且更具體地,處理器中的客戶中斷控制單元34A-34B中)。指針可將相應(yīng)的gAPIC狀態(tài)條目定位在gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58中。因此,客戶中斷控制單元34A-34B可找出vCPU的gAPIC狀態(tài),并可探測(cè)到中斷由設(shè)備中斷管理器38記錄。在一個(gè)實(shí)施方案中,處理器30A-30B可實(shí)現(xiàn)客戶中斷傳送機(jī)制。例如,處理器30A-30B可包括可使用客戶中斷(例如,中斷請(qǐng)求、中斷矢量等)編程的一個(gè)或多個(gè)寄存器。虛擬中斷可在邏輯上與真實(shí)中斷源(例如,到處理器30A-30B的輸入引腳)組合以中斷在處理器30A-30B上執(zhí)行的軟件。處理器30A-30B可執(zhí)行由中斷矢量指定的中斷處理程序以服務(wù)于中斷。其它實(shí)施方案可實(shí)現(xiàn)其它客戶中斷傳送機(jī)制。在一個(gè)實(shí)施方案中,設(shè)備中斷管理器38可配置成更新以客戶為目標(biāo)的設(shè)備中斷的客戶中斷狀態(tài),并將主機(jī)中斷傳送到相應(yīng)的APIC32A-32B。具體地,在一個(gè)實(shí)施方案中,設(shè)備中斷管理器38可配置成將在橋36中接收的每個(gè)客戶中斷記錄在gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58中。響應(yīng)于接收到客戶中斷,設(shè)備中斷管理器38可配置成為中斷所定向的客戶/VCPU更 新gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58中的gAPIC狀態(tài)。在一個(gè)實(shí)施方案中,設(shè)備中斷管理器38可配置成更新gAPIC狀態(tài),而與客戶是否是活動(dòng)的無關(guān)。對(duì)于具有多于一個(gè)目標(biāo)的多播和廣播,設(shè)備中斷管理器38可配置成為每個(gè)中斷目的地更新gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58中的gAPIC狀態(tài)??蛇x地,設(shè)備中斷管理器38可配置成對(duì)這些多個(gè)目的地中斷依賴于VMM 18。設(shè)備中斷管理器38可配置成在這樣的實(shí)施方案中將中斷記錄到VMM 18可訪問的存儲(chǔ)器位置中,并可配置成告知VMM 18來處理該消息。設(shè)備中斷管理器38可使用在圖2中存儲(chǔ)在存儲(chǔ)器中的所示的設(shè)備表62、中斷重映射表64和APIC ID表60為來自外圍設(shè)備的設(shè)備中斷確定目標(biāo)處理器或vCPU。具體地,設(shè)備中斷管理器38可配置成響應(yīng)于包括在來自IOAPIC 50和54的設(shè)備中斷請(qǐng)求中的信息來訪問設(shè)備表62和中斷重映射表64。設(shè)備表62可包括每個(gè)外圍設(shè)備52A-52B的條目(并可包括外圍設(shè)備的多個(gè)條目,在外圍設(shè)備耦合到的外圍接口上包括多于一個(gè)的標(biāo)識(shí)符)。給定外圍設(shè)備的設(shè)備表?xiàng)l目可包括中斷重映射表64的指針,并且還可包括APIC ID表60之一的至少一個(gè)APIC IC表指針。APIC ID表60可包括在客戶中的每個(gè)APICID的條目,并可存儲(chǔ)到相應(yīng)于具有該APIC ID的vCPU/gAPIC的gAPIC狀態(tài)條目的指針。中斷重映射表64可用于來自其原始目的地的中斷和/或中斷矢量重定向到新的目的地和/或中斷矢量。因此,中斷重映射表64可包括中斷的目的地ID。目的地ID是APIC ID,并可用作由來自設(shè)備表62的APIC ID表指針指示的APIC ID表60中的索引,以對(duì)客戶中斷找出待更新的gAPIC狀態(tài)條目?;趤碜灾袛嘀赜成浔?4的中斷矢量,設(shè)備中斷管理器可記錄在所識(shí)別的gAPIC狀態(tài)條目中的中斷。中斷重映射表64也可包括設(shè)備是否被分配到客戶或主機(jī)的指示。如果設(shè)備被分配給主機(jī),中斷是待傳送到APIC32A-32B的主機(jī)中斷,且gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58可以不被更新。下面進(jìn)一步討論表60、62和64的一個(gè)實(shí)施方案的額外細(xì)節(jié)。雖然在所示實(shí)施方案中g(shù)APIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58被示為存儲(chǔ)在存儲(chǔ)器56中,但是在一些實(shí)施方案中部分可由設(shè)備中斷管理器38和/或橋36可訪問的高速緩沖存儲(chǔ)器緩存。此外或可選地,一個(gè)或多個(gè)gAPIC狀態(tài)條目的專用存儲(chǔ)器可在橋36中實(shí)現(xiàn)。在APIC中斷機(jī)制中,每個(gè)處理器(通過其本地APIC)可具有物理APIC ID和邏輯APIC ID。物理APIC ID存儲(chǔ)在APIC ID寄存器中。物理APIC ID在一對(duì)一的基礎(chǔ)上與物理傳送模式中斷所指示的物理APIC ID匹配。邏輯APIC ID存儲(chǔ)在本地APIC中的邏輯目的地寄存器中。邏輯APIC ID具有群集ID和本地APIC ID,其中本地APIC ID—般是獨(dú)熱位矢量。邏輯傳送模式中斷可包括在APIC ID的矢量部分中的任何設(shè)置位,以將中斷傳送到群集中的一個(gè)或多個(gè)本地APIC。因此,匹配邏輯APIC ID可包括比較群集ID以及探測(cè)與在本地APIC中的獨(dú)熱位矢量的設(shè)置位在同一位置處的本地APIC ID。以另一種方式考慮,在邏輯傳送模式中斷中的本地APIC ID矢量可以與本地APIC的APIC ID矢量進(jìn)行邏輯與運(yùn)算,且如果結(jié)果是非零且群集ID匹配,則本地APIC是邏輯中斷的目標(biāo)。邏輯APIC ID可在本文更簡(jiǎn)潔地稱為邏輯ID,且類似地,物理APIC ID可在本文更簡(jiǎn)潔地稱為物理ID。與中斷相關(guān)的給定ID(邏輯或物理)可被稱為中斷的目的ID。中斷的相應(yīng)傳送模式可將中斷的目的ID識(shí)別為邏輯的或物理的。APIC ID表60可包括在給定客戶中的邏輯APIC ID的邏輯APICID表和在給定客戶中的物理APIC ID的物理APIC ID。APIC ID表可將APIC ID映射到gAPIC狀態(tài)指針,如前所述。在一個(gè)實(shí)施方案中,邏輯APIC ID表可將邏輯ID映射到物理ID,物理ID可通過 物理ID表映射到gAPIC狀態(tài)指針。其它實(shí)施方案也可直接從邏輯ID映射到gAPIC狀態(tài)指針。在一個(gè)實(shí)施方案中,APIC ID表60可包括vCPU是否目前正在運(yùn)行的指示。如果vCPU正在運(yùn)行,則中斷可由執(zhí)行vCPU的處理器30A-30B探測(cè)到(例如,通過監(jiān)控記錄新的中斷的對(duì)更新的gAPIC狀態(tài)條目,或經(jīng)由來自設(shè)備中斷管理器38的消息)。因此,中斷可傳送到運(yùn)行的客戶。然而,如果客戶沒有正在運(yùn)行(或是不活動(dòng)的),則中斷可在傳送時(shí)被延遲。在一個(gè)實(shí)施方案中,IOMMU可記錄中斷。VMM 18可探測(cè)記錄中的中斷,并可優(yōu)先考慮用于調(diào)度的目標(biāo)vCPU。vCPU可以正在運(yùn)行,如果它目前在硬件處理器上正在執(zhí)行中。給定處理器30A-30B的APIC 32A-32B可具有到處理器的任何接口。例如,可使用在本地APIC及其相應(yīng)的處理器之間的任何接口。每個(gè)APIC可配置成獨(dú)立地告知處理器中斷正被傳送以用于服務(wù)。如果處理器正執(zhí)行客戶,且APIC告知中斷,則處理器可配置成使客戶退出到VMM 18以處理主機(jī)中斷。如果處理器不正在執(zhí)行客戶,則處理器可配置成中斷主機(jī)執(zhí)行,并響應(yīng)于由APIC告知的中斷而分支到主機(jī)中斷處理程序。APIC 32A-32B耦合到橋36以接收中斷。任何接口可用于將中斷傳輸?shù)紸PIC32A-32B。例如,可使用為APIC中斷傳輸實(shí)現(xiàn)的任何接口。在一個(gè)實(shí)施方案中,用于將其它操作傳遞到處理器30A-30B/從處理器30A-30B傳遞其它操作的相同的通信機(jī)制(例如由處理器30A-30B發(fā)起的存儲(chǔ)器讀/寫操作、用于緩存一致性維護(hù)的探針等)可用于傳輸中斷消息。以另一種方式考慮,APIC 32A-32B的耦合可與處理器30A-30B到橋36的耦合一起被共享??蛇x地,處理器30A-30B可具有到橋36的分離的路徑,例如如果APIC 32A-32D使用APIC “3寫接口”。中斷消息可以是在識(shí)別正被傳輸?shù)闹袛嗪椭袛嗟哪康牡氐娜魏谓涌谏系娜魏瓮ㄐ?。例如,中斷可具有相關(guān)的中斷矢量,且中斷矢量可以是中斷消息的部分。中斷消息也可包括目的地ID (例如,邏輯或物理APIC ID)。客戶中斷控制單元34A-34B可配置成探測(cè)被記錄到相應(yīng)的gAPIC狀態(tài)條目的客戶中斷,并可傳送中斷,如上所述。此外,客戶中斷控制單元34A-34B可探測(cè)在客戶/VCPU執(zhí)行期間處理器30A-30B對(duì)其自己的gAPIC的訪問,并可轉(zhuǎn)換對(duì)gAPIC狀態(tài)條目中的存儲(chǔ)器讀/寫的訪問,而不是對(duì)APIC 32A-32B的訪問。在一些實(shí)施方案中,客戶中斷控制單元34A-34B也可實(shí)現(xiàn)gAPIC的某種仿真。例如,可實(shí)現(xiàn)具有明顯的性能影響的操作。對(duì)于不由客戶中斷控制單元34A-34B實(shí)現(xiàn)的仿真,客戶中斷控制單元34A-34B可使客戶退出用于在VMM 18中的仿真。一些訪問可能不需要仿真(例如,大部分讀沒有影響,除了讀數(shù)據(jù)以外,所以除讀取來自gAPIC狀態(tài)條目的數(shù)據(jù)以外不需要仿真)。在APIC中不產(chǎn)生任何副效應(yīng)的寫也可通過更新gAPIC狀態(tài)條目中的相應(yīng)位置來完成。在一個(gè)實(shí)施方案中,在客戶中斷控制單元34A-34B中仿真的操作可包括在客戶內(nèi)的IPI的發(fā)起、對(duì)任務(wù)優(yōu)先級(jí)寄存器(TPR)的訪問、以及對(duì)中斷結(jié)束(EOI)寄存器的訪問。其它實(shí)施方案可在客戶中斷控制單元34A-34B中實(shí)現(xiàn)操作的不同子集。如前所述,在一些實(shí)施方案中,客戶中斷控制單元34A-34B可主要以微代碼實(shí)現(xiàn)。因此,在客戶執(zhí)行期間,對(duì)gAPIC的訪問可能引起微代碼執(zhí)行。此外,通過設(shè)備中斷管理器38對(duì)gAPIC狀態(tài)條目的更新(對(duì)于正在處理器上執(zhí)行的vCPU)可引起微代碼執(zhí)行。對(duì)于退出到VMM 18的指令,該退出可在指令收回之后(即,更新對(duì)用于寫的gAPIC狀態(tài)條目完成,或從gAPIC狀態(tài)條目讀取的數(shù)據(jù)被寫到目標(biāo)寄存器用于讀)或在指令收回之前。在收回指令之后發(fā)起VMExit可被 稱為俘獲。在一些情況下,相應(yīng)的指令如果被允許收回則可能引起無法修復(fù)的改變。因此,可以不允許這樣的指令在VMExit之前收回,這稱為使指令出錯(cuò)。IOMMU 40包括設(shè)備中斷管理器38,如上所述。此外,I0MMU40可配置成對(duì)I/O發(fā)起的存儲(chǔ)器操作執(zhí)行虛擬到物理地址映射(例如,從外圍設(shè)備52A-52B或代表外圍設(shè)備52A-52B通過DMA控制器獲得的存儲(chǔ)器讀/寫操作)。作為轉(zhuǎn)換操作的部分,IOMMU 40可配置成訪問設(shè)備表62和任選地中斷重定向表64。每個(gè)外圍設(shè)備52A-52B的設(shè)備表?xiàng)l目可包括用于轉(zhuǎn)換存儲(chǔ)器讀/寫操作(未示出)的存儲(chǔ)器地址的I/O頁表的頁表指針。
存儲(chǔ)器控制器42可耦合成接收由處理器30A-30B發(fā)出的存儲(chǔ)器操作(例如,指令取回、裝入/存儲(chǔ)數(shù)據(jù)訪問、用于轉(zhuǎn)換的處理器頁表訪問等)、來自設(shè)備中斷管理器38的存儲(chǔ)器操作(例如,以讀/更新gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58和/或訪問表60、62和64)、IOMMU40 (例如,以訪問I/O頁表、設(shè)備表62和中斷重映射表64)、以及從中斷電路44A-44C接收的存儲(chǔ)器操作(在一些實(shí)施方案中)。存儲(chǔ)器控制器42可配置成對(duì)存儲(chǔ)器操作排序,并與存儲(chǔ)器56通信以執(zhí)行存儲(chǔ)器操作。存儲(chǔ)器接口電路46可執(zhí)行對(duì)存儲(chǔ)器56的物理級(jí)訪問。存儲(chǔ)器56可包括任何類型的存儲(chǔ)器。例如,存儲(chǔ)器56可包括動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)例如同步DRAM(SDRAM)、包括DDRSDRAM的移動(dòng)版本(mDDR3等)和/或低功率版本(LPDDR2 等)的雙數(shù)據(jù)率(DDR、DDR2、DDR3 等)SDRAM、RAMBUS DRAM、靜態(tài) RAM 等。存儲(chǔ)器 56可包括包含多個(gè)存儲(chǔ)器芯片的一個(gè)或多個(gè)存儲(chǔ)器模塊,例如單列直插存儲(chǔ)器模塊(SIMM)、雙列直插存儲(chǔ)器模塊(DIMM)等。除了在本實(shí)施方案中包括設(shè)備中斷管理器38、IOMMU 40和存儲(chǔ)器控制器42以夕卜,橋36還可包括其它通信功能以在處理器30A-30B、APIC 32A-32B和耦合到接口電路44A-44D的設(shè)備之間進(jìn)行通信。例如,在所示實(shí)施方案中,另一橋48可耦合到接口電路44A,并可配置成在接口電路44A所使用的協(xié)議和外圍設(shè)備52A-52B所使用的協(xié)議之間橋接通信。在一個(gè)實(shí)施方案中,接口電路44A-44C可例如實(shí)現(xiàn)上面提到的HT接口,且橋48可從HT橋接到另一接口例如PCI Express(PCIe)接口。外圍設(shè)備52A-52B在這樣的實(shí)施方案中可以是PCIe設(shè)備。橋48還可配置成橋接到其它接口,或另一接口可耦合到橋48以橋接到其它接口??墒褂萌魏我粋€(gè)或多個(gè)外圍接口。此外,外圍設(shè)備52A-52B可包括配置成直接耦合到HT接口的HT外圍設(shè)備。這樣的外圍設(shè)備可能不需要橋48。在一個(gè)實(shí)施方案中,橋48和/或一個(gè)或多個(gè)外圍設(shè)備52A-52B可包括IOAPIC (圖2中的50和54)。IOAPIC可負(fù)責(zé)從外圍設(shè)備接收中斷請(qǐng)求,并形成中斷消息以將中斷請(qǐng)求發(fā)送到APIC 32A-32B和設(shè)備中斷管理器38 (用于記錄在存儲(chǔ)器中的gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58 中)。如上所述,在一個(gè)實(shí)施方案中,接口電路44A-44C可配置成在HT接口上通信。接口電路44A-44C可配置成使用HT與外圍設(shè)備/橋進(jìn)行通信。此外,在一些實(shí)施方案中,接口電路44A-44C可配置成使用處理器、APIC等耦合到其它節(jié)點(diǎn)。在這樣的實(shí)施方案中,橋36除了前面描述的電路以外還可包括一致性管理電路。處理器30A-30B可實(shí)現(xiàn)任何指令集體系結(jié)構(gòu),并可配置成執(zhí)行在指令集體系結(jié)構(gòu)中定義的指令。處理器30A-30B可包括任何微體系結(jié)構(gòu),例如超流水線體系結(jié)構(gòu)、超標(biāo)量體 系結(jié)構(gòu)和/或其組合、按順序或不按順序執(zhí)行、推測(cè)執(zhí)行等。處理器30A-30B按需要可以或可以不實(shí)現(xiàn)微編碼技術(shù)。外圍設(shè)備52A-52B可包括任何類型的外圍設(shè)備。外圍設(shè)備52A-52B可包括存儲(chǔ)設(shè)備例如磁盤、固態(tài)盤或光盤驅(qū)動(dòng)器、非易失性存儲(chǔ)器設(shè)備例如閃存等。外圍設(shè)備52A-52B可包括I/O設(shè)備例如用戶I/O設(shè)備(鍵盤、鼠標(biāo)、顯示器、語音輸入等)、聯(lián)網(wǎng)設(shè)備、外部接口設(shè)備例如通用串行總線(USB)或防火墻等。在所示實(shí)施方案中,處理器30A-30B、橋36、APIC 32A-32B、接口電路44A-44C和存儲(chǔ)器接口電路46可集成到單個(gè)半導(dǎo)體襯底上作為集成電路66。其它實(shí)施方案可按需要實(shí)現(xiàn)不同量的集成和分立電路。注意,雖然不同數(shù)量的部件例如處理器、APIC、接口電路、外圍設(shè)備、橋等在圖2中示出,其它實(shí)施方案可按需要實(shí)現(xiàn)一個(gè)或多個(gè)每個(gè)部件的任何數(shù)量。在其它實(shí)施方案中,IOMMU 40和設(shè)備中斷管理器38的位置可變化。例如,一個(gè)或兩個(gè)IOMMU 40和設(shè)備中斷管理器38可以在橋48中,在外圍設(shè)備52A-52B中,在耦合到橋的另一橋中,等等。在所示實(shí)施方案中,每個(gè)APIC 32A-32B與如圖2所示的特定處理器30A-30B相關(guān)。因此,在本實(shí)施方案中,給定的中斷控制器專用于相應(yīng)的處理器30A-30B。更具體地,在圖2中,APIC 32A專用于處理器30A ;而APIC 32B專用于處理器30B。中斷控制器可將中斷以任何方式告知到其相應(yīng)的處理器。通常,告知可指示中斷是需要的。告知可包括中斷矢量,或中斷矢量可由在中斷被傳送之后執(zhí)行的軟件讀取。在一個(gè)實(shí)施方案中,傳送中斷可以指告知處理器和處理器接受中斷。服務(wù)于中斷可以指執(zhí)行與中斷矢量相關(guān)的中斷服務(wù)例程,以執(zhí)行中斷設(shè)備所需的操作?,F(xiàn)在轉(zhuǎn)到圖3,示出了對(duì)一個(gè)實(shí)施方案說明從外圍設(shè)備到gAPIC的中斷的進(jìn)展并且也說明客戶內(nèi)的IPI的方框圖。在所示實(shí)施方案中,外圍設(shè)備52A確定中斷是期望的。外圍設(shè)備52A(見圖2)內(nèi)的I0APIC54可為外圍設(shè)備52A產(chǎn)生中斷消息。具體地,IOAPIC 54可產(chǎn)生相應(yīng)于期望中斷的中斷矢量(例如,基于外圍設(shè)備52A所需要的服務(wù),如果外圍設(shè)備52A實(shí)現(xiàn)多種功能則告知中斷的特定功能,等等)。類似地,IOAPIC 50可為不實(shí)現(xiàn)自己的IOAPIC的外圍設(shè)備例如外圍設(shè)備52B產(chǎn)生中斷消息。中斷矢量是中斷通信的部分,并可用于識(shí)別中斷源,優(yōu)先考慮中斷,等等。在一些情況下,中斷矢量可被I0MMU40重映射,所以中斷矢量在圖3中被示為“原始矢量”。外圍設(shè)備52A可將中斷消息發(fā)送到IOMMU 40(箭頭A)。在本實(shí)施方案中,中斷可以用消息告知中斷(MSI)的形式被發(fā)送,例如,如在PCIe規(guī)范中規(guī)定的。其它實(shí)施方案可用任何期望的方式發(fā)送中斷。通常,該發(fā)送可識(shí)別中斷、其傳送模式(例如,邏輯或物理的)、以及中斷的目的地ID (DestID)。IOMMU 40可接收MSI。MSI包括外圍設(shè)備的標(biāo)識(shí)符。例如,實(shí)現(xiàn)PCI編程模型的接口可識(shí)別具有總線號(hào)和在該總線上的設(shè)備號(hào)的每個(gè)設(shè)備(允許多個(gè)PCI接口以分層和/或并行的形式存在于系統(tǒng)中)。設(shè)備可具有多種“功能”,其可以是在物理設(shè)備上的分開的虛擬設(shè)備,或設(shè)備上的操作的劃分。標(biāo)識(shí)符也可包括功能號(hào)。因此,在這個(gè)實(shí)施方案中,標(biāo)識(shí)符可以稱為總線-設(shè)備-功能或BDF。IOMMU 40 (且更具體地,在本實(shí)施方案中是設(shè)備中斷管理器38)可使用BDF編索引到設(shè)備表62中(箭頭B),并可識(shí)別相應(yīng)于外圍設(shè)備52A的設(shè)備標(biāo)條目。該條目可包括APIC ID表指針(箭頭C)。在本實(shí)施方案中,設(shè)備表?xiàng)l目還可包括可識(shí)別相應(yīng)于設(shè)備的中斷重映射表64的中斷重映射表指針(IRTP)(箭頭Cl)。中斷重映射表64由原始中斷矢量編索引,并可為中斷提供輸出矢量和目的地ID(DestID,例如邏輯或物理APICID)(箭頭C2)。此外,客戶/主機(jī)指示可以被輸出(G/Η)。在一個(gè)實(shí)施方案中,G/Η指示可以是一個(gè)位,其在置位時(shí)指示中斷將被客戶服務(wù)并在清零時(shí)指示中斷將被主·機(jī)服務(wù)。其它實(shí)施方案可使用置位和清零狀態(tài)的相反意義,或可使用對(duì)指示的其它編碼。如果G/Η指示表示主機(jī),設(shè)備中斷管理器38可將中斷消息發(fā)送到APIC 32A-32B,且中斷可根據(jù)APIC規(guī)范被處理(箭頭F)。另一方面,如果G/Η指示表示客戶,設(shè)備中斷管理器38可使用目的地ID作為物理APIC ID表60A(其是由設(shè)備表62提供的APIC ID表指針?biāo)赶虻谋?內(nèi)的索引(箭頭D)。物理APIC ID表60A可輸出識(shí)別待更新的gAPIC狀態(tài)條目的gAPIC狀態(tài)指針。設(shè)備中斷管理器38可將中斷寫到gAPIC狀態(tài)(gAPIC狀態(tài)更新,圖3中的箭頭E)。物理APIC ID表60A也可為vCPU提供Is_Running(IR)指示。如果vCPU正在運(yùn)行,則中斷可相當(dāng)快地被傳送。如果vCPU不正在運(yùn)行,則設(shè)備中斷管理器38可為VMM 18記錄中斷,VMM 18可調(diào)度vCPU來處理中斷。所示實(shí)施方案只訪問具有目的地ID的物理APIC ID表60A。因此,在所示實(shí)施方案中,客戶中斷的目的地ID可以是物理APIC ID。當(dāng)對(duì)設(shè)備表62、中斷映射表64等編程時(shí),邏輯APIC ID可由VMM 18轉(zhuǎn)換到物理APIC ID。在其它實(shí)施方案中,邏輯APIC ID和物理APICID都可被支持,且給定客戶的邏輯APIC ID表和物理APIC ID表都可按需要用于找出gAPIC狀態(tài)指針。在一個(gè)實(shí)施方案中,gAPIC狀態(tài)包括中斷請(qǐng)求寄存器(IRR),其包括每個(gè)中斷矢量的位。為了記錄中斷,相應(yīng)于中斷矢量的位可以被設(shè)置在IRR中。gAPIC狀態(tài)中的IRR可能從多于一個(gè)的源更新。因此,可以使更新成為原子的,以防止?fàn)顟B(tài)的損失。具體地,更新可以是原子0R,其與存儲(chǔ)器中的IRR內(nèi)的設(shè)置位進(jìn)行OR運(yùn)算。原子操作可以是有效地作為單位而執(zhí)行的操作,即使操作被實(shí)現(xiàn)為多個(gè)步驟。試圖訪問正被原子地更新的位置的觀察者在原子更新之前或原子更新之后接收值,但可以不接收中間值。試圖更新正被原子地更新的位置的觀察者在原子更新之前或原子更新之后但不在原子操作期間執(zhí)行其更新。雖然本實(shí)施方案可實(shí)現(xiàn)原子0R,其它實(shí)施方案可實(shí)現(xiàn)更一般的原子更新操作。例如,原子更新可包括識(shí)別應(yīng)不被修改的目標(biāo)的位的AND掩碼,和識(shí)別哪些位將被進(jìn)行OR運(yùn)算的OR掩碼。其它實(shí)現(xiàn)也是可能的。例如,可使用比較和交換實(shí)現(xiàn),其中來自存儲(chǔ)器位置的原始值被讀取,且比較和交換操作對(duì)照原始值與新值進(jìn)行OR運(yùn)算來執(zhí)行。如果比較失敗,則過程可重復(fù)(讀取新的原始值,以及執(zhí)行比較和交換)。如果需要,補(bǔ)償和/或超時(shí)機(jī)制可用于退出循環(huán)。在一個(gè)實(shí)施方案中,處理器30A-30B (且更具體地,客戶中斷控制單元34A-34B)可監(jiān)控對(duì)相應(yīng)于在處理器上執(zhí)行的vCPU (如果有的話)的gAPIC狀態(tài)條目的更新。具體地,處理器可每個(gè)監(jiān)控gAPIC狀態(tài)條目的(包括IRR位)的區(qū)域,其中g(shù)APIC狀態(tài)條目相應(yīng)于處理器正執(zhí)行的vCPU。該區(qū)域在本文被稱為“觀看區(qū)”。觀看區(qū)可以用各種方式建立。例如,處理器30A-30B可包括高速緩沖存儲(chǔ)器,并可配置成維持高速緩沖存儲(chǔ)器和存儲(chǔ)器之間的一致性。作為一致性機(jī)制的部分,可向處理器30A-30B通知存儲(chǔ)在高速緩沖存儲(chǔ)器中的數(shù)據(jù)的更新。處理器30A-30B可因此通過將該區(qū)域讀到高速緩沖存儲(chǔ)器中來建立觀看區(qū)。例如,在一個(gè)實(shí)施方案中,2個(gè)緩存塊可覆蓋該區(qū)域。在一些實(shí)施方案中,可能必須確保緩存塊保持在高速緩沖存儲(chǔ)器中。例如,一些實(shí)施方案可過濾一致性探針,其被已知在處理器的高速緩沖存儲(chǔ)器中遺漏。在這樣的實(shí)施方案中,確保觀看區(qū)塊保持在高速緩沖存儲(chǔ)器中可確保相應(yīng)于觀看區(qū)更新的探針不被過濾。
各種機(jī)制可用于確保觀看區(qū)塊保持在處理器的高速緩沖存儲(chǔ)器中。例如,處理器可實(shí)現(xiàn)緩存鎖定以將塊鎖在高速緩沖存儲(chǔ)器中??蛇x地,處理器可迫使塊在高速緩沖存儲(chǔ)器所實(shí)現(xiàn)的緩存替換算法中保持“最近被最多地使用”。另一方面,可能不是必須確保觀看區(qū)塊保持在處理器的高速緩沖存儲(chǔ)器中,例如,如果一致性探針未被過濾。在這樣的實(shí)施方案中,處理器可將區(qū)域的地址僅僅存儲(chǔ)在寄存器中并比較該地址與探針。如果對(duì)于在處理器30A-30B上正在運(yùn)行的vCPU,gAPIC狀態(tài)更新出現(xiàn)到gAPIC狀態(tài)條目,則相應(yīng)的處理器可探測(cè)對(duì)觀看區(qū)的更新(箭頭G2)。在相應(yīng)的處理器中的客戶中斷控制單元34A-34B可讀取更新的IRR,并可優(yōu)先考慮未決的中斷且如果新的中斷是較高的優(yōu)先級(jí)則獲取它。在另一實(shí)施方案中,觀看區(qū)可以不被使用,且設(shè)備中斷管理器38可替代地將客戶中斷控制消息發(fā)送到APIC 32A-32B(或直接到處理器30A-30B)(箭頭Gl)??蛻糁袛嗫刂葡⒖膳c主機(jī)中斷消息和IPI區(qū)分開,并因此可被轉(zhuǎn)發(fā)到客戶中斷控制單元34A-34B以通知它們客戶中斷已被請(qǐng)求。例如,客戶中斷控制消息可使用以前未定義的中斷消息編碼,將它與使用現(xiàn)有的中斷消息編碼的主機(jī)中斷消息和IPI區(qū)分開。其它實(shí)施方案可實(shí)現(xiàn)觀看區(qū)和客戶中斷控制消息。在一個(gè)實(shí)施方案中,客戶中斷控制消息可通過模型特定寄存器(MSR)接口被傳送到客戶中斷控制單元34A-34B。MSR可能是客戶中斷控制單元34A-34B可訪問的(例如,微代碼可訪問的,如果客戶中斷控制單元34A-34B部分地或全部以微代碼實(shí)現(xiàn))。MSR也可以是在處理器30A-30B上執(zhí)行的特許代碼可訪問的。然而,可保護(hù)MSR免受非特許的訪問,包括客戶訪問。APIC 32A-32B可使用與用于IPI將中斷傳送到MSR所使用的類似的接口,除了 MSR被寫以外,而不是將IPI傳送到中斷軟件。MSR的更新可以使客戶中斷控制單元34A-34B激活客戶中斷傳送。例如,在以微代碼實(shí)現(xiàn)客戶中斷控制單元34A-34B的實(shí)施方案中,MSR的更新可導(dǎo)致處理用于傳送到客戶的中斷的微代碼例程的執(zhí)行。雖然在一個(gè)實(shí)施方案中可使用MSR接口,但是其它實(shí)施方案可使用允許客戶中斷控制消息被傳送到客戶中斷控制單元34A-34B的任何機(jī)制。這樣的機(jī)制可被稱為“門鈴”機(jī)制。
除了設(shè)備中斷以外,在處理器上執(zhí)行的客戶vCPU可將IPI發(fā)到在同一虛擬機(jī)中的其它vCPU。在本實(shí)施方案中,當(dāng)在vCPU上執(zhí)行的軟件更新中斷命令寄存器(ICR)時(shí),IPI被發(fā)出。中斷命令寄存器可包括高和低(ICRH和ICRL)部分,且IPI可響應(yīng)于寫到ICRL寄存器而被發(fā)起。該機(jī)制可以與xlAPIC編碼和X2APIC編碼兼容。執(zhí)行IPI的源vCPU的處理器的客戶中斷控制單元34A-34B可探測(cè)寫到ICRL寄存器,并可使用IPI的目的地ID來識(shí)別在APIC ID表60中的gAPIC狀態(tài)指針(箭頭a)。IPI的目的地ID可以是邏輯的或物理的,且客戶中斷控制單元34A-34B可使用邏輯和/或物理APIC ID表60,如對(duì)目的地ID適當(dāng)?shù)摹J褂胓APIC狀態(tài)指針,客戶中斷控制單元34A-34B可更新在gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)(箭頭b)中的gAPIC中的目標(biāo)vCPU的gAPIC狀態(tài)條目??蛻糁袛嗫刂茊卧?4A-34B也可配置成將客戶中斷控制消息傳遞到正執(zhí)行目標(biāo)vCPU的處理器30A-30B的客戶中斷控制單元34A-34B (箭頭C)。更具體地,在一個(gè)實(shí)施方案中,發(fā)送IPI的客戶中斷控制消息可通過APIC 32A-32B被路由??蛇x地,實(shí)現(xiàn)觀看區(qū)的實(shí)施方案可使用觀看區(qū)探測(cè)來探測(cè)更新。其它實(shí)施方案可實(shí)現(xiàn)發(fā)起IPI的其它機(jī)制。客戶中斷控制單元34A-34B可探測(cè)機(jī)制,并可相應(yīng)地更新目標(biāo)vCPU的gAPIC狀態(tài)。此外,如果APIC ID表60指示目標(biāo)vCPU不正在運(yùn)行,則來自源處理器的客戶中斷控制單元可使VMExit允許VMM 18調(diào)度目標(biāo)vCPU。 在一個(gè)實(shí)施方案中,為了將中斷的客戶中斷控制消息發(fā)送到正確的處理器30A-30B, APIC ID表60中的IR位可以是識(shí)別處理器正執(zhí)行相應(yīng)的vCPU的場(chǎng)(或可能有指示vCPU是否正在運(yùn)行的位和識(shí)別處理器的場(chǎng))。該場(chǎng)可用于識(shí)別客戶中斷控制消息的目標(biāo)。現(xiàn)在轉(zhuǎn)到圖4,示出了 VMCB 22的一個(gè)實(shí)施方案的方框圖。在所示實(shí)施方案中,VMCB 22包括gAPIC狀態(tài)指針場(chǎng)70、物理APIC ID表指針場(chǎng)72、邏輯APIC ID表指針場(chǎng)74和其它虛擬機(jī)數(shù)據(jù)76。gAPIC狀態(tài)指針70可找出相應(yīng)于存儲(chǔ)器56中的客戶/vCPU的gAPIC狀態(tài)條目。gAPIC狀態(tài)指針70可被裝入處理器30A-30B中作為VMRUN指令的部分,并可由客戶中斷控制單元34A-34B使用來找出vCPU的gAPIC狀態(tài)。物理APIC ID指針場(chǎng)72和邏輯APIC ID表指針場(chǎng)74可分別存儲(chǔ)對(duì)客戶的物理APIC ID表指針和邏輯APIC ID表指針。其它VM數(shù)據(jù)76可包括裝入/存儲(chǔ)在VMRUN和VMExit上的各種其它處理器狀態(tài)?,F(xiàn)在轉(zhuǎn)到圖5,示出了 gAPIC狀態(tài)條目90的一個(gè)實(shí)施方案的方框圖。圖5中的圖示可以是狀態(tài)的邏輯視圖。存儲(chǔ)器中的狀態(tài)的實(shí)際布置可變化。在一個(gè)實(shí)施方案中,狀態(tài)的布置可以是按狀態(tài)在APIC中被尋址的順序。也就是說,每個(gè)寄存器可具有離APIC的基本地址的偏移,且在每個(gè)寄存器的gAPIC狀態(tài)條目90中的狀態(tài)的相應(yīng)副本可以在離gAPIC狀態(tài)條目90的基本地址的相同偏移處。gAPIC狀態(tài)條目90可包括APIC狀態(tài)的完整副本。不是所有狀態(tài)都在圖5中示出。然而,示出了 IRR、正在服務(wù)寄存器(ISR)、觸發(fā)模式寄存器(TMR)和ICRH以及ICRL寄存器、任務(wù)優(yōu)先級(jí)寄存器(TPR)和中斷結(jié)束(EOI)寄存器連同其它APIC狀態(tài)。其它APIC狀態(tài)可在所示狀態(tài)內(nèi)交錯(cuò)(例如,根據(jù)在APIC地址地圖中的每個(gè)寄存器的偏移)。此外,如圖5所示的狀態(tài)的順序可以不是如存儲(chǔ)在存儲(chǔ)器中的狀態(tài)的順序。IRR寄存器記錄已發(fā)送到gAPIC的中斷請(qǐng)求。IRR中的中斷請(qǐng)求的位置相應(yīng)于中斷矢量。IRR可跟蹤“固定的”中斷。其它中斷類型可包括非屏蔽中斷(匪I)、系統(tǒng)管理中斷(SMI)、傳統(tǒng)外部中斷(extINT)等。這些中斷可以作為其它APIC狀態(tài)的部分被處理。在一個(gè)實(shí)施方案中,中斷請(qǐng)求也可包括每個(gè)中斷的觸發(fā)模式(級(jí)別或邊緣)。TMR可存儲(chǔ)哪個(gè)觸發(fā)模式應(yīng)用于中斷的指示。例如,邊緣觸發(fā)的中斷可由TMR中的二進(jìn)制O表示,且所觸發(fā)的級(jí)別可由二進(jìn)制I表示。在其它實(shí)施方案中,只有邊緣觸發(fā)的中斷可在gAPIC中被支持,且TMR可被消除。對(duì)于固定的中斷,客戶中斷控制單元34A可配置成優(yōu)先考慮中斷請(qǐng)求和正在服務(wù)中斷以確定中斷請(qǐng)求是否應(yīng)被傳送到處理器。通常,如果最高優(yōu)先級(jí)中斷請(qǐng)求是比最高優(yōu)先級(jí)正在服務(wù)中斷高的優(yōu)先級(jí)(其中中斷是正在服務(wù),如果處理器中斷其軟件執(zhí)行以執(zhí)行相應(yīng)于中斷的中斷處理程序),客戶中斷控制單元34A可配置成傳送所請(qǐng)求的中斷。此外,TPR可由軟件編程來建立由vCPU接受的最低優(yōu)先級(jí)級(jí)別的中斷??蛻糁袛嗫刂茊卧?4A可配置成傳送最高優(yōu)先級(jí)請(qǐng)求,如果它是比最高優(yōu)先級(jí)正在服務(wù)中斷高的優(yōu)先級(jí),且如果它是比在TPR中指示的優(yōu)先級(jí)高的優(yōu)先級(jí)。當(dāng)vCPU獲取中斷時(shí),處理器可使用中斷確認(rèn)命令對(duì)gAPIC作出響應(yīng)??蛻糁袛?控制單元34A可配置成從IRR 70移除最高優(yōu)先級(jí)中斷請(qǐng)求,并將中斷記錄為ISR中正在服務(wù)。相應(yīng)于ISR中的中斷的正在服務(wù)指示的位置可相應(yīng)于中斷的中斷矢量。處理器30A可執(zhí)行中斷服務(wù)例程(或多個(gè)例程)以服務(wù)于中斷。中斷服務(wù)例程可終止于對(duì)gAPIC的中斷結(jié)束(EOI)命令以告知中斷服務(wù)完成??蛻糁袛嗫刂茊卧?4A可配置成響應(yīng)于EOI命令而從ISR移除最高優(yōu)先級(jí)正在服務(wù)中斷。當(dāng)執(zhí)行EOI命令時(shí),微代碼可使ISR位棚清零(其中N是最高優(yōu)先級(jí)正在服務(wù)中斷)。如果TMR的位#N被設(shè)置,則微代碼可VMExit以允許VMM 18仿真級(jí)別敏感中斷行為。在其它實(shí)施方案中,更新ISR可由VMM 18管理。如上所述,IRR、ISR和TMR中的每個(gè)包括相應(yīng)于由gAPIC支持的每個(gè)中斷矢量的位置。在所示實(shí)施方案中,矢量O到255被支持。中斷矢量號(hào)也可指示其與其它中斷的相對(duì)優(yōu)先級(jí)(例如,較高的矢量號(hào)是比較低的矢量號(hào)高的優(yōu)先級(jí),在其它實(shí)施方案中反之亦然)。對(duì)于每個(gè)中斷矢量,IRR存儲(chǔ)指示中斷是否在中斷矢量處被請(qǐng)求的中斷請(qǐng)求位。例如,該指示可以是當(dāng)置位時(shí)指示請(qǐng)求而當(dāng)清零時(shí)指示無請(qǐng)求的位。類似地,對(duì)于每個(gè)中斷矢量,ISR存儲(chǔ)指示中斷是否對(duì)該中斷矢量是正在服務(wù)的正在服務(wù)位(例如,當(dāng)置位時(shí)指示正在服務(wù)中斷而在清零時(shí)指示無正在服務(wù)中斷)。對(duì)于每個(gè)中斷矢量,TMR存儲(chǔ)觸發(fā)模式。對(duì)于IRR、ISR和TMR中的每個(gè),在寄存器中的位的位置等于相應(yīng)于中斷的中斷矢量號(hào)。注意,雖然256個(gè)中斷矢量在所示實(shí)施方案中被支持,或多或少的中斷矢量和/或或多或少的優(yōu)先級(jí)級(jí)別組可在其它實(shí)施方案中被支持。其它APIC狀態(tài)可包括內(nèi)部產(chǎn)生的中斷、定時(shí)器、本地矢量表等。在一個(gè)實(shí)施方案中,在gAPIC狀態(tài)條目90中的IRR、ISR和/或TMR的位可以不被布置為每字節(jié)8位。為了便于容易尋址到特定的IRR、ISR或TMR位,位可以用存儲(chǔ)在更分散的方式存儲(chǔ)(例如,每字節(jié)兩位、每字節(jié)一位等)。接著轉(zhuǎn)到圖6,示出了設(shè)備表62、中斷重映射表64和APIC ID表60A-60B并使用這些表找出gAPIC狀態(tài)條目90的一個(gè)實(shí)施方案的方框圖。對(duì)于設(shè)備中斷,提供中斷的外圍設(shè)備的總線/設(shè)備/功能(BDF)可用作設(shè)備表62內(nèi)的索引。設(shè)備表62的基本地址可存儲(chǔ)在IOMMU 40中,且可能每個(gè)計(jì)算機(jī)系統(tǒng)5有一個(gè)設(shè)備表62 (或每IOMMU 40 一個(gè)設(shè)備表52,如果多個(gè)IOMMU包括在系統(tǒng)中)。響應(yīng)于BDF而選擇的設(shè)備表?xiàng)l目包括中斷重映射表指針(IRTP),其是中斷重映射表64的基本地址。在一個(gè)實(shí)施方案中,在系統(tǒng)5中可能每客戶有一個(gè)中斷重映射表64。此外,設(shè)備表?xiàng)l目可包括APIC ID表指針(AIDTP),其可以是物理APIC ID表60A的基本地址。在其它實(shí)施方案中,可對(duì)設(shè)備中斷支持邏輯APIC ID,且在設(shè)備表62中可能有兩個(gè)AIDTP場(chǎng)(一個(gè)針對(duì)邏輯APIC ID表60B,而另一個(gè)針對(duì)APIC ID表60A)。在一個(gè)實(shí)施方案中,在計(jì)算機(jī)系統(tǒng)5中每客戶可能有一個(gè)邏輯APIC ID表60B和一個(gè)物理APIC ID表60A。在中斷重定向表64內(nèi)的索引是中斷的中斷標(biāo)識(shí)符。中斷標(biāo)識(shí)符可包括中斷矢量,并且還可包括物理或邏輯的傳送模式(Delmode)。選定的條目可包括新的矢量和目的地ID(DestID)。此外,選定的條目可包括上面提到的客戶/主機(jī)(G/Η)場(chǎng)。目的地ID可以是物理APIC ID表60A內(nèi)的索引,且選定的條目可包括gAPIC狀態(tài)條目90的gAPIC狀態(tài)指針。此外,選定的條目可包括vCPU的IR指示。對(duì)于IPI,目標(biāo)vCPU可由邏輯APIC ID或物理APIC ID識(shí)別。對(duì)于物理APIC ID,ID可用作物理APIC ID表60A內(nèi)的索引(其地址從VMCB裝入客戶中斷控制單元34A-34B中)??梢虼藢?duì)物理IPI訪問gAPIC狀態(tài)指針和IR場(chǎng)。
如果IPI具有邏輯APIC ID,則邏輯APIC ID可用作邏輯APIC ID表60B內(nèi)的索弓I。邏輯APIC ID的最高有效部分可識(shí)別群集。因此,表被細(xì)分成群集,每個(gè)群集可包括該群集的每個(gè)邏輯成員的一個(gè)或多個(gè)條目。群集中的成員的數(shù)量可根據(jù)模式而變化(例如,xlAPIC平坦模式可包括每群集高達(dá)八個(gè)成員;xlAPIC群集模式可包括每群集四個(gè)成員;以及X2APIC模式可包括高達(dá)十六個(gè)群集成員。邏輯APIC ID表60B可依尺寸排列以處理任何模式,所以在這個(gè)實(shí)施方案中每個(gè)群集細(xì)分可包括16個(gè)成員。
如圖6所示,邏輯APIC ID表60B中的每個(gè)條目可將相應(yīng)的群集成員映射到該群集成員的物理APIC ID。從邏輯APIC ID表60B輸出的物理APIC ID可用作物理APIC ID表60A內(nèi)的索引,物理APICID表60A可為vCPU提供gAPIC狀態(tài)指針和IR場(chǎng)。接著轉(zhuǎn)到圖7,示出了說明設(shè)備中斷管理器38響應(yīng)于從外圍設(shè)備接收到中斷消息的一個(gè)實(shí)施方案的操作的流程圖。雖然為了容易理解以特定的順序示出塊,但可使用其它順序。可在設(shè)備中斷管理器38中的組合邏輯中并行地執(zhí)行塊。塊、塊的組合和/或流程圖可在多個(gè)時(shí)鐘周期內(nèi)管道化。通常,設(shè)備中斷管理器38可配置成實(shí)現(xiàn)圖7所示的操作。設(shè)備中斷管理器38可響應(yīng)于BDF和從外圍設(shè)備接收的中斷信息來訪問設(shè)備表62和中斷重映射表64。設(shè)備中斷管理器38可從中斷重映射表64接收G/Η指示,且如果中斷是針對(duì)主機(jī)(決策塊100,“是”分支),則設(shè)備中斷管理器38可具有(可能重映射的)目的地ID和矢量的中斷消息發(fā)送到APIC 32A-32B (塊108)。如果設(shè)備中斷是針對(duì)根據(jù)G/Η指示的客戶(決策塊100,“否”分支),則設(shè)備中斷管理器38可為客戶/VCPU紀(jì)錄在gAPIC狀態(tài)條目中的中斷。在支持設(shè)備中斷的邏輯APICID的一些實(shí)施方案中,設(shè)備中斷管理器38可通過邏輯APCI ID表60B將邏輯APIC ID轉(zhuǎn)換成物理APIC ID (塊102)。設(shè)備中斷管理器38可配置成使用來自設(shè)備表62的AIDTP和設(shè)備中斷的物理APICID來確定來自物理APIC ID表60A的gAPIC狀態(tài)條目指針(塊110)。設(shè)備中斷管理器38可配置成設(shè)置相應(yīng)于在gAPIC狀態(tài)條目90中表示的IRR中的中斷矢量的位(塊112)。此夕卜,設(shè)備中斷管理器38可使用來自物理APIC ID表60A的IR指示來確定由中斷定向的vCPU是否正在運(yùn)行(決策塊104)。如果vCPU不正在運(yùn)行(決策塊104,“否”分支),則設(shè)備中斷管理器38可例如在事件隊(duì)列中記錄VMM 18的日志消息(塊106)。VMM 18可隨后處理日志消息以調(diào)度vCPU。其它實(shí)施方案可用其它方式為未運(yùn)行的vCPU傳遞中斷的接收。如果vCPU正在運(yùn)行(決策塊104,“是”分支),則正在運(yùn)行vCPU的處理器30A-30B中的客戶中斷控制單元34A-34B可使用觀看區(qū)機(jī)制來探測(cè)IRR位的更新(塊112)。在另一實(shí)施方案中,設(shè)備中斷管理器38可將客戶中斷控制消息發(fā)送到處理器30A-30B以指示客戶中斷的接收(塊116)。物理中斷可以是廣播或單個(gè)目的地。如果物理中斷是廣播(決策塊114,“是”分支),則設(shè)備中斷管理器38可配置成對(duì)客戶的虛擬機(jī)中的每個(gè)目的地(例如每個(gè)vCPU)重復(fù)塊110、112、104、106和116。可選地,可由設(shè)備中斷管理器38通過將中斷記錄在VMM18 (例如事件隊(duì)列)可訪問的數(shù)據(jù)結(jié)構(gòu)中來處理被廣播的物理中斷。設(shè)備中斷管理器38也可配置成告知VMM 18 (例如,引起從處理器30A-30B之一上的虛擬機(jī)退出)以告知VMM 18該事件??蛇x地,設(shè)備中斷管理器38可僅周期性地告知VMM 18 (例如一旦每N毫秒和/或在事件隊(duì)列中的高水印處),且VMM 18也可周期性地檢查事件隊(duì)列以比告知可能支持的更快地服務(wù)于任何事件。在一個(gè)實(shí)施方案中,事件隊(duì)列可由IOMMU 40而不是設(shè)備中斷管理器38管理??蓪?duì)多播邏輯中斷實(shí)現(xiàn)類似的機(jī)制,對(duì)在中斷的邏輯APIC ID的矢量部分中的每·個(gè)目的地重復(fù)塊102、110、112、104、106和116。圖8-11是示出處理器30A-30B (且更具體地,客戶中斷控制單元34A-34B)響應(yīng)于計(jì)算機(jī)系統(tǒng)5中的各種指令和/或其它事件的一個(gè)實(shí)施方案的操作??蛻糁袛嗫刂茊卧?4A-34B可配置成實(shí)現(xiàn)在每個(gè)流程圖中示出的操作。如前所述,客戶中斷控制單元34A-34B的一些或全部可用微代碼實(shí)現(xiàn)。在這樣的實(shí)施方案中,客戶中斷控制單元34A-34B可配置成通過為在處理器中的執(zhí)行分派微代碼而實(shí)現(xiàn)操作。雖然為了容易理解在流程圖中以特定的順序示出了塊,可使用其它順序??稍诳蛻糁袛嗫刂茊卧?4A-34B中的組合邏輯中并行地執(zhí)行塊。塊、塊的組合和/或流程圖作為整體可在多個(gè)時(shí)鐘循環(huán)中管道化。圖8對(duì)一個(gè)實(shí)施方案示出處理器30A-30B中的客戶中斷控制單元34A-34B響應(yīng)于執(zhí)行VMRUN指令的處理器的操作??蛻糁袛嗫刂茊卧蔀樘幚砥髦械腁PIC訪問實(shí)現(xiàn)俘獲/故障操作(塊120)。處理器硬件可配置成在這個(gè)實(shí)施方案中為vCPU將APIC訪問轉(zhuǎn)換成對(duì)gAPIC狀態(tài)條目90的存儲(chǔ)器訪問,或APIC訪問可用微代碼實(shí)現(xiàn)。如果需要,很多gAPIC訪問可在收回時(shí)被俘獲以允許VMM仿真任何副效應(yīng)。然而,一些操作可執(zhí)行對(duì)gAPIC狀態(tài)的不可恢復(fù)的改變,且這樣的訪問可能發(fā)生故障,并在VMM中被執(zhí)行。在一個(gè)實(shí)施方案中,客戶中斷狀態(tài)可被重新評(píng)估(例如,以探測(cè)在vCPU不正在運(yùn)行的時(shí)間期間的中斷的傳送)。圖10的操作可被實(shí)現(xiàn)為例如VMRUN指令的部分。如果觀看區(qū)操作被實(shí)現(xiàn),則客戶中斷控制單元可實(shí)現(xiàn)在gAPIC狀態(tài)條目90中的IRR位上的觀看區(qū)(塊122)。例如,客戶中斷控制單元可使用來自VMCB 22的gAPIC狀態(tài)條目指針來讀取覆蓋高速緩沖存儲(chǔ)器內(nèi)的IRR位的gAPIC狀態(tài)條目90中的一個(gè)或多個(gè)緩存塊,并可開始監(jiān)控對(duì)緩存塊的更新。其它實(shí)施方案可實(shí)現(xiàn)客戶中斷控制操作以告知對(duì)vCPU接收到客戶中斷,且觀看區(qū)可以不被實(shí)現(xiàn)。處理器可執(zhí)行響應(yīng)于VMRUN指令而執(zhí)行的各種其它處理(塊124)。例如,從VMCB22裝入的各種處理器狀態(tài)可被裝入,處理器狀態(tài)可保存到VMM狀態(tài)保存區(qū),等等。在一些實(shí)施方案中,塊124的操作可在塊120和122之前、之后和/或與塊120和122交錯(cuò)地出現(xiàn)。
圖9對(duì)一個(gè)實(shí)施方案示出響應(yīng)于來自客戶的VMExit的操作??蛻糁袛嗫刂茊卧蓪?duì)APIC訪問禁止俘獲/錯(cuò)誤行為(塊126)。此外,如果觀看區(qū)操作用于探測(cè)對(duì)vCPU接收的中斷,則觀看區(qū)可被禁用(塊128),且處理器可繼續(xù)其它VMExit處理(例如,將狀態(tài)保存到VMCB22,恢復(fù)VMM 18狀態(tài),等等)(塊130)。在一些實(shí)施方案中,塊130的操作可在塊126和128之前、之后和/或與塊126和128交錯(cuò)地出現(xiàn)?,F(xiàn)在轉(zhuǎn)到圖10,示出了說明客戶中斷控制單元響應(yīng)于處理器在處理器上執(zhí)行的vCPU探測(cè)到客戶中斷的一個(gè)實(shí)施方案的操作的流程圖。客戶中斷可用各種方式被探測(cè)到在觀看區(qū)中探測(cè)更新;接收客戶中斷控制消息;等等??蛻糁袛嗫刂茊卧蓪?duì)vCPU從gAPIC狀態(tài)條目90讀取IRR和ISR數(shù)據(jù)內(nèi)容(塊132)。如果客戶TPR不在處理器中實(shí)現(xiàn),則TPR也可被讀取??蛻糁袛嗫刂茊卧杀容^在IRR中記錄的對(duì)vCPU中的當(dāng)前傳送的中斷和當(dāng)前TPR不正在服務(wù)的最高優(yōu)先級(jí)中斷(塊 134)。如果最高優(yōu)先級(jí)中斷是比TPR和最高優(yōu)先級(jí)正在服務(wù)中斷高的優(yōu)先級(jí)(決策136,“是”分支),則客戶中斷控制單元可將新的較高優(yōu)先級(jí)中斷傳送到vCPU(塊138)。在各種實(shí)施方案中,用于將中斷注入客戶中的機(jī)制可變化。如前所述,處理器可包括用于使客戶中斷排隊(duì)以在執(zhí)行期間中斷客戶的硬件。在這樣的實(shí)施方案中,客戶中斷控制單元可給硬件裝入對(duì)較高優(yōu)先級(jí)中斷的信息。對(duì)于以微代碼實(shí)現(xiàn)圖10的操作的客戶中斷控制單元的實(shí)施方案,客戶中斷的探測(cè)可能引起對(duì)微代碼的俘獲。在這種情況下,俘獲可能不直接與被俘獲的指令有關(guān)。然而,俘獲可允許微代碼執(zhí)行并采用中斷。微代碼可被執(zhí)行以響應(yīng)于俘獲而實(shí)現(xiàn)圖10所示的操作。圖11是示出用于在包括客戶中斷控制單元的處理器上的vCPU中進(jìn)行指令執(zhí)行的客戶中斷控制單元的一個(gè)實(shí)施方案的操作的流程圖。如果指令不是APIC訪問(決策塊140,“否”分支)或是APIC訪問(決策塊140,“是”路徑),且處理器不正在執(zhí)行客戶(即,處理器正執(zhí)行主機(jī)一決策塊142,“否”分支),則客戶中斷控制單元可以不采取行動(dòng),且指令可被正常執(zhí)行(塊144)。在這個(gè)背景中,正常執(zhí)行可以指在沒有來自客戶中斷控制單元的干擾的情況下的執(zhí)行。指令仍可經(jīng)由客戶中的攔截配置而被攔截,可經(jīng)歷例外等。如果指令是APIC訪問(決策塊140,“是”分支)并在客戶執(zhí)行中(決策塊142,“是”分支),則客戶中斷控制單元可確定是否訪問是加速訪問(決策塊146)。加速訪問可以是由客戶中斷控制單元實(shí)現(xiàn)的訪問,包括可由訪問引起的任何副效應(yīng)。在一個(gè)實(shí)施方案中,可用微代碼實(shí)現(xiàn)訪問,包括任何副效應(yīng)。如果訪問不是加速訪問,則客戶中斷控制單元可執(zhí)行對(duì)gAPIC狀態(tài)條目的訪問,如果指令被俘獲(無故障)(塊148)。如前所述,大部分指令可被俘獲。有錯(cuò)誤的指令可以是如果被允許收回則引起不可恢復(fù)的狀態(tài)變化的指令。例如,寫到IRR、ISR和任選地TMR可能是錯(cuò)誤的,因?yàn)橹袛酄顟B(tài)可能被這些指令蓋寫。此夕卜,在一個(gè)實(shí)施方案中,對(duì)當(dāng)前計(jì)數(shù)寄存器的訪問可能對(duì)仿真是錯(cuò)誤的,因?yàn)楫?dāng)前計(jì)數(shù)寄存器是根據(jù)應(yīng)用于集成電路66的時(shí)鐘操作的自由運(yùn)行計(jì)數(shù)器。虛擬化的開銷可能在計(jì)數(shù)器中是可探測(cè)的,如果它沒有被仿真。其它訪問可被俘獲。其它實(shí)施方案可產(chǎn)生被俘獲和有錯(cuò)誤的指令的不同描繪。如果VMM 18仿真操作的一個(gè)或多個(gè)副效應(yīng)(決策塊150,“是”分支),則客戶中斷控制單元可VMExit到VMM 18 (塊152)。一些訪問可能沒有副效應(yīng)(例如,大部分讀操作)。寫操作和一些讀操作可能有副效應(yīng)(例如,預(yù)期響應(yīng)于寫的APIC的操作),且這些副效應(yīng)可在VMM 18中被仿真。在這種背景下,副效應(yīng)可以是除了更新狀態(tài)(對(duì)于寫)或目標(biāo)寄存器(對(duì)于讀)以外的任何操作。如果沒有被VMM 18仿真的副效應(yīng)(決策塊150,“否”分支),則對(duì)指令的操作可以是完整的。如果訪問被加速(決策塊146,“是”分支),則客戶中斷控制單元可以讀或?qū)懺谙鄳?yīng)于由指令訪問的寄存器的gAPIC狀態(tài)條目中的位置(塊154)。被加速的這組訪問可從一個(gè)實(shí)施方案到另一實(shí)施方案變化。通常,可能頻繁地出現(xiàn)和/或否則可能是性能關(guān)鍵的訪問可以是對(duì)加速的候選。在一個(gè)實(shí)施方案中,對(duì)ICRL (其可引起IPI)、TPR和EOI寄存器的訪問可被加速。如果訪問是對(duì)TPR或Ε0Ι,或訪問是對(duì)ICRL但不引起IPI (決策塊156,“否”分支),則客戶中斷控制單元可實(shí)現(xiàn)任何其它副效應(yīng)(如果有的話),且指令可被完成(塊158)。如果指令引起IPI (決策塊156,“是”分支),則客戶中斷控制單元可使用APIC ID表60來將IPI的目的地ID轉(zhuǎn)換到目標(biāo)vCPU的gAPIC狀態(tài)指針(塊160)。邏輯APIC ID表60B和物理APIC ID表60A的基本地址可從VMCB 22得到,并可當(dāng)在處理器上執(zhí)行的vCPU被調(diào)用時(shí)裝入處理器中??蛻糁袛嗫刂茊卧梢詫懺趃APIC狀態(tài)中的IRR以記錄IPI (塊 162)。如果客戶中斷控制消息用于傳達(dá)中斷已被記錄且目標(biāo)vCPU正在運(yùn)行,則客戶中斷控制單元可將客戶中斷控制消息發(fā)送到目標(biāo)處理器(塊164)。如果目標(biāo)vCPU不正在運(yùn)行(決策塊166,“否”分支),則處理器可VMExit以允許VMM 18調(diào)度目標(biāo)vCPU (塊168)。類似于上面關(guān)于圖7對(duì)廣播物理中斷的討論,如果IPI被廣播(物理的)或具有多個(gè)目標(biāo)(邏輯的),則客戶中斷控制單元可通過更新多個(gè)gAPIC狀態(tài)條目來支持多個(gè)目標(biāo)或可對(duì)多目標(biāo)IPI退出到VMM 18。圖16是示出可用于將客戶中斷控制消息(和客戶IPI)傳送到處理器30A中的客戶中斷控制單元38A的MSR接口的一個(gè)實(shí)施方案的方框圖。圖16中示出的是客戶中斷控制單元38A和MSR單元212 (這兩者都是處理器30A的部分)、特許代碼210和APIC 32A。客戶中斷控制單元38A耦合到MSR單元212,其包括MSR 214。MSR 214可存儲(chǔ)客戶中斷有效(GIV)位。其它中斷相關(guān)的數(shù)據(jù)也可存儲(chǔ)在MSR214中。MSR單元212耦合到APIC 32A。因此,APIC 32A可接收客戶中斷控制消息,并可配置成發(fā)送對(duì)MSR 214的更新。該更新可以設(shè)置GIV位。響應(yīng)于所設(shè)置的GIV位,客戶中斷控制單元38A可處理所接收的客戶中斷(例如,如圖10所示)。GIV位的設(shè)置可以使客戶中斷控制單元38A中的電路發(fā)起客戶中斷的處理??蛇x地,GIV位的設(shè)置可使來自客戶中斷控制單元38A的微代碼的發(fā)出發(fā)起客戶中斷的處理。如前所述,特許代碼210可訪問MSR單元212 (包括MSR 214)。特許代碼210可包括VMM 18以及可在處理器30A上執(zhí)行的其它特許代碼(例如,主機(jī)OS代碼等)。然而,非特許代碼和客戶代碼可以不訪問MSR 214。圖12-14是示出VMM 18使用前述硬件來支持客戶中斷虛擬化的一個(gè)實(shí)施方案的高級(jí)操作的流程圖。由VMM 18實(shí)現(xiàn)的很多其它操作沒有在這些流程圖中示出,且那些不同的其它操作的部分可與所示操作交錯(cuò)和/或可在所示操作之前和/或之后被執(zhí)行。雖然為了容易理解在流程圖中以特定的順序示出塊,但可使用其它順序。VMM 18可包括指令,其在被執(zhí)行時(shí)實(shí)現(xiàn)流程圖中所示的操作。圖12是示出在用于在計(jì)算機(jī)系統(tǒng)5上執(zhí)行的客戶的初始化期間VMM 18的操作的一個(gè)實(shí)施方案。也就是說,初始化可包括在計(jì)算機(jī)系統(tǒng)5上執(zhí)行客戶之前創(chuàng)建描述客戶的虛擬機(jī)的數(shù)據(jù)結(jié)構(gòu)。VMM 18可為客戶中的每個(gè)vCPU建立gAPIC狀態(tài)(塊170)。建立gAPIC狀態(tài)可例如包括分配狀態(tài)的頁和插入狀態(tài)的初始值。初始值可例如相應(yīng)于APIC的重置狀態(tài)。VMM 18可為客戶建立APIC ID表60,基于每個(gè)vCPU的APICID將gAPIC狀態(tài)條目指針映射到客戶的所分配的頁(塊172)。VMM18也可初始化IR指示以指示不運(yùn)行。對(duì)于可分配給客戶的任何外圍設(shè)備,VMM 18可使用中斷重映射表64和物理APIC ID表60B的指針來對(duì)設(shè)備表62編程。VMM 18可為客戶對(duì)中斷重映射表64編程并設(shè)置G/Η位以指示客戶(塊174)。圖13是示出VMM 18在初始化完成之后為中斷虛擬化支持客戶的操作的一個(gè)實(shí)施方案的流程圖。如果VMM 18調(diào)度用于執(zhí)行的客戶或解調(diào)度客戶的vCPU(決策塊176,“是”分支),則VMM 18可更新物理APIC ID表60A的條目中的IR字段,該條目相應(yīng)于該vCPU以指示運(yùn)行(調(diào)度的客戶)或不正在運(yùn)行(解調(diào)度的客戶)(塊178)。如果對(duì)APIC訪問探測(cè)到VMExit (決策塊180,“是”分支),則VMM 18可基于gAPIC狀態(tài)來仿真APIC訪問(塊 182)。如果VMM 18探測(cè)到指示中斷(其以不正在運(yùn)行的vCPU為目標(biāo))已被接收到的來自IOMMU 40的日志條目(決策塊184,“是”分支),VMM 18可優(yōu)先考慮用于調(diào)度來處理中斷的目標(biāo)vCPU(塊186)。圖14是示出VMM 18刪除來自系統(tǒng)的客戶的一個(gè)實(shí)施方案的操作的流程圖。VMM18可更新設(shè)備表62和中斷重映射表64以移除任何外圍設(shè)備的客戶分配(塊188)。VMM 18也可刪除客戶的gAPIC狀態(tài)條目90和APIC ID表60 (塊190)。接著轉(zhuǎn)到圖15,示出了計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)200的方框圖。一般來說,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可包括在用于向計(jì)算機(jī)提供指令和/或數(shù)據(jù)期間由計(jì)算機(jī)可訪問的任何存儲(chǔ)器介質(zhì)。例如,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可包括存儲(chǔ)介質(zhì)例如磁性或光學(xué)介質(zhì),例如磁盤(固定或可移動(dòng))、磁帶、CD-ROM 或 DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW、HDDVD 和 / 或藍(lán)光盤。存儲(chǔ)介質(zhì)還可包括經(jīng)由外圍接口例如通用串行總線(USB)接口或任何其它接口可訪問的易失性或非易示性存儲(chǔ)介質(zhì)例如RAM(例如,同步動(dòng)態(tài)RAM(SDRAM)、RambusDRAM(RDRAM)、靜態(tài)RAM(SRAM)等)、R0M、閃存、非易失性存儲(chǔ)器(例如閃存)等。存儲(chǔ)介質(zhì)可包括微機(jī)電系統(tǒng)(MEMS)以及經(jīng)由通信介質(zhì)例如網(wǎng)絡(luò)和/或無線鏈路可訪問的存儲(chǔ)介質(zhì)。圖15中的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)200可存儲(chǔ)VMM 18,其可實(shí)現(xiàn)在圖12-14的流程圖中示出的操作的全部或一部分和/或在本描述中被分配給VMM 18的任何其它功能。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)200可存儲(chǔ)微代碼202或其它指令和/或數(shù)據(jù)(例如,Verilog或某種其它硬件描述語言),其可為以微代碼實(shí)現(xiàn)的客戶中斷控制單元34A的部分實(shí)現(xiàn)在圖8-13的流程圖中所示的操作的全部或一部分和/或在本描述中分配給微代碼的任何其它功能。通常,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)200可存儲(chǔ)指令的任何集合,指令在被執(zhí)行時(shí)實(shí)現(xiàn)圖8-13中示出的流程圖的一部分或全部。在一些實(shí)現(xiàn)中,在本文對(duì)處理器30A(以及更具體地,客戶中斷控制單元34A)描述的操作的一部分或全部可在硬件中實(shí)現(xiàn),且類似地,I0MMU40(且更具體地,設(shè)備中斷管理器38)可在硬件中實(shí)現(xiàn)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)200可存儲(chǔ)這樣的硬件的任何期望的表示。例如,該表示可以是以高級(jí)設(shè)計(jì)語言(HDL)例如Verilog或VHDL的硬件功能的行為級(jí)描述或寄存器傳輸級(jí)(RTL)描述。該描述可由合成工具讀取,合成工具可合成該描述以產(chǎn)生包括來自合成庫的門的列表的網(wǎng)絡(luò)表。網(wǎng)絡(luò)表包括也代表包括系統(tǒng)10的硬件的功能的一組門。網(wǎng)絡(luò)表可接著被放置和路由以產(chǎn)生描述待應(yīng)用于掩碼的幾何形狀的數(shù)據(jù)集。掩碼可接著在各種半導(dǎo)體制造步驟中用于產(chǎn)生相應(yīng)于系統(tǒng)10的一個(gè)或多個(gè)半導(dǎo)體電路。可選地,在計(jì)算機(jī)可訪問存儲(chǔ)介質(zhì)300上的表示按需要可以是網(wǎng)絡(luò)表(有或沒有合成庫)或數(shù)據(jù)集。指令可用于通過例如掩碼工作的產(chǎn)生來配置電路制造設(shè)施,當(dāng)被這樣配置時(shí),制造設(shè)施適合于產(chǎn)生集成電路,其實(shí)現(xiàn)在圖8-13的流程圖中描述的操作的一部分或全部和/或在本文對(duì)處理器30A、客戶中斷控制單元34A、IOMMU 40和/或設(shè)備中斷管理器38描述的操作的一部分 或全部。載體介質(zhì)可包括計(jì)算機(jī)可訪問存儲(chǔ)介質(zhì)以及傳輸介質(zhì)例如有線或無線傳輸。一旦上面的公開被充分認(rèn)識(shí)到,很多變化和修改就將對(duì)本領(lǐng)域技術(shù)人員變得明顯。意圖是下面的權(quán)利要求被解釋為包括所有這樣的變化和修改。
權(quán)利要求
1.一種配置成從分配給客戶的設(shè)備接收中斷的設(shè)備中斷管理器,其中所述設(shè)備中斷管理器配置成在存儲(chǔ)器位置上發(fā)送用于記錄中斷的操作,其中所述存儲(chǔ)器位置與所述客戶內(nèi)的虛擬處理器相關(guān),其中所述中斷以所述虛擬處理器為目標(biāo)。
2.如權(quán)利要求I所述的設(shè)備中斷管理器,還配置成響應(yīng)于一個(gè)或多個(gè)表來識(shí)別相應(yīng)于所述虛擬處理器的所述存儲(chǔ)器位置,其中在所述一個(gè)或多個(gè)表中的條目響應(yīng)于與所述中斷相關(guān)的中斷控制器標(biāo)識(shí)符而被選擇。
3.如權(quán)利要求2所述的設(shè)備中斷管理器,其中所述中斷控制器標(biāo)識(shí)符是物理中斷控制器標(biāo)識(shí)符。
4.如權(quán)利要求2所述的設(shè)備中斷管理器,還配置成將所述設(shè)備發(fā)送的中斷矢量重映射到用于識(shí)別所述一個(gè)或多個(gè)表中的所述條目的所述中斷控制器標(biāo)識(shí)符。
5.如權(quán)利要求2所述的設(shè)備中斷管理器,還配置成響應(yīng)于在所述條目中的指示來確定所述虛擬處理器是否在硬件處理器上是活動(dòng)的,且其中所述設(shè)備中斷管理器配置成響應(yīng)于探測(cè)到所述虛擬處理器在所述硬件處理器上是活動(dòng)的而發(fā)送指向所述硬件處理器的中斷消息。
6.如權(quán)利要求5所述的設(shè)備中斷管理器,還配置成響應(yīng)于探測(cè)到所述虛擬處理器不正在所述硬件處理器上運(yùn)行而將寫操作發(fā)送到系統(tǒng)存儲(chǔ)器以記錄調(diào)度所述虛擬處理器的請(qǐng)求。
7.一種方法,包括 設(shè)備中斷管理器在存儲(chǔ)器位置上記錄中斷,其中所述存儲(chǔ)器位置與虛擬處理器相關(guān),所述虛擬處理器與所述設(shè)備所分配到的客戶相關(guān),其中所述中斷以所述虛擬處理器為目標(biāo)。
8.如權(quán)利要求7所述的方法,還包括 所述設(shè)備中斷管理器選擇在被編程為將中斷控制器標(biāo)識(shí)符映射到虛擬處理器的一個(gè)或多個(gè)表中的條目,其中所述設(shè)備中斷管理器選擇所述條目是響應(yīng)于與所述中斷相關(guān)的中斷控制器標(biāo)識(shí)符;以及 所述設(shè)備中斷管理器經(jīng)由存儲(chǔ)在所述條目中的地址來識(shí)別所述存儲(chǔ)器位置。
9.如權(quán)利要求8所述的方法,其中所述中斷控制器標(biāo)識(shí)符是物理中斷控制器標(biāo)識(shí)符。
10.如權(quán)利要求8所述的方法,還包括所述設(shè)備中斷管理器將所述設(shè)備發(fā)送的中斷矢量重映射到用于識(shí)別所述條目的所述中斷控制器標(biāo)識(shí)符。
11.如權(quán)利要求8所述的方法,還包括 所述設(shè)備中斷管理器響應(yīng)于存儲(chǔ)在所述條目中的數(shù)據(jù)而確定所述虛擬處理器在硬件處理器上是活動(dòng)的;以及 所述設(shè)備中斷管理器響應(yīng)于探測(cè)到所述虛擬處理器在所述硬件處理器上是活動(dòng)的而發(fā)送指向所述硬件處理器的中斷消息。
12.如權(quán)利要求8所述的方法,還包括 所述設(shè)備中斷管理器響應(yīng)于存儲(chǔ)在所述條目中的數(shù)據(jù)而確定所述虛擬處理器在硬件處理器上不是活動(dòng)的;以及 所述設(shè)備中斷管理器響應(yīng)于探測(cè)到所述虛擬處理器在所述硬件處理器上不是活動(dòng)的而將寫操作發(fā)送到所述系統(tǒng)存儲(chǔ)器以記錄調(diào)度所述虛擬處理器的請(qǐng)求。
13.—種包括數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述數(shù)據(jù)結(jié)構(gòu)由在計(jì)算機(jī)系統(tǒng)上可執(zhí)行的程序操作,所述程序在所述數(shù)據(jù)結(jié)構(gòu)上操作以執(zhí)行制造包括所述數(shù)據(jù)結(jié)構(gòu)所描述的電路的集成電路的過程的一部分,在所述數(shù)據(jù)結(jié)構(gòu)中描述的所述電路包括配置成從分配給客戶的設(shè)備接收中斷的設(shè)備中斷管理器,其中所述設(shè)備中斷管理器配置成在存儲(chǔ)器位置上發(fā)送用于記錄所述中斷的操作,其中所述存儲(chǔ)器位置與所述客戶內(nèi)的虛擬處理器相關(guān),其中所述中斷以所述虛擬處理器為目標(biāo)。
14.如權(quán)利要求13所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述設(shè)備中斷管理器還配置成響應(yīng)于一個(gè)或多個(gè)表而識(shí)別相應(yīng)于所述虛擬處理器的所述存儲(chǔ)器位置,其中在所述一個(gè)或多個(gè)表中的條目響應(yīng)于與所述中斷相關(guān)的中斷控制器標(biāo)識(shí)符而被選擇。
15.如權(quán)利要求13所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述設(shè)備中斷管理器還配置成確定所述虛擬處理器是否被分配給用于執(zhí)行的硬件處理器,且其中所述設(shè)備中斷管理器配置成響應(yīng)于探測(cè)到所述虛擬處理器被分配給所述硬件處理器而發(fā)送指向所述硬件處理器的中斷消息。
16.一種存儲(chǔ)多個(gè)指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),當(dāng)所述指令在計(jì)算機(jī)上被執(zhí)行時(shí) 探測(cè)到中斷被記錄在相應(yīng)于虛擬機(jī)中的虛擬處理器的存儲(chǔ)器位置上,所述中斷由分配給所述虛擬機(jī)的設(shè)備提供;以及 響應(yīng)于所述中斷對(duì)所述虛擬處理器被記錄而調(diào)度用于在所述計(jì)算機(jī)中的硬件處理器上執(zhí)行的所述虛擬處理器,以便服務(wù)于所述中斷。
17.如權(quán)利要求16所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中在被執(zhí)行時(shí)探測(cè)到中斷被記錄的所述指令包括在被執(zhí)行時(shí)讀取存儲(chǔ)在所述計(jì)算機(jī)中探測(cè)的事件日志的另一存儲(chǔ)器位置的指令,其中所述事件日志由所述計(jì)算機(jī)系統(tǒng)中的設(shè)備中斷管理器更新,其中所述設(shè)備中斷管理器配置成接收所述中斷并確定所述中斷被定向在所述虛擬處理器。
18.如權(quán)利要求17所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中在被執(zhí)行時(shí)調(diào)度所述虛擬處理器的所述指令包括在被執(zhí)行時(shí)更新一個(gè)或多個(gè)表以指示所述虛擬處理器是活動(dòng)的指令,所述一個(gè)或多個(gè)表將中斷映射到虛擬處理器。
19.如權(quán)利要求18所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),還包括存儲(chǔ)在被執(zhí)行時(shí)解調(diào)度所述虛擬處理器并更新所述一個(gè)或多個(gè)表以指示所述虛擬處理器是不活動(dòng)的指令。
20.如權(quán)利要求19所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),還包括存儲(chǔ)在被執(zhí)行時(shí)當(dāng)設(shè)備被分配給客戶時(shí)管理在所述一個(gè)或多個(gè)表中的所述數(shù)據(jù)的指令。
全文摘要
在實(shí)施方案中,設(shè)備中斷管理器可配置成從分配給客戶的設(shè)備接收中斷。設(shè)備中斷管理器可配置成發(fā)送定向到系統(tǒng)存儲(chǔ)器中的存儲(chǔ)器位置的操作以為客戶內(nèi)的虛擬處理器記錄中斷,其中中斷被傳送到目標(biāo)虛擬處理器。在實(shí)施方案中,虛擬機(jī)管理器可配置成探測(cè)到對(duì)于當(dāng)前不正在執(zhí)行的虛擬處理器,中斷由設(shè)備中斷管理器記錄。虛擬機(jī)管理器可配置成調(diào)度用于在硬件處理器上執(zhí)行的虛擬處理器,或可響應(yīng)于中斷而優(yōu)先考慮用于調(diào)度的虛擬處理器。
文檔編號(hào)G06F9/455GK102804143SQ201180014679
公開日2012年11月28日 申請(qǐng)日期2011年2月7日 優(yōu)先權(quán)日2010年2月5日
發(fā)明者本杰明·C·塞雷布林, 羅德尼·W·施密特, 戴維·A·卡普蘭, 馬克·D·胡梅爾 申請(qǐng)人:超威半導(dǎo)體公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1