專利名稱:用于各個(gè)處理器的輔助中斷虛擬化的訪客中斷控制器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及處理器和虛擬化,尤其涉及至虛擬機(jī)訪客(guest)的傳送中斷。
背景技術(shù):
出于各種不同的目的,虛擬化已經(jīng)被應(yīng)用在計(jì)算機(jī)系統(tǒng)中。例如,虛擬化可以被用來在“容器”中執(zhí)行特權(quán)軟件(privileged software)以防止特權(quán)軟件未經(jīng)控制虛擬機(jī)的虛擬機(jī)管理器(VMM)許可就直接存取和/或改變至少一些物理機(jī)狀態(tài)。這樣的容器能夠防止“有臭蟲的(buggy)”或惡意的軟件在物理機(jī)上產(chǎn)生問題。除此之外,利用虛擬化可以允許兩個(gè)或兩個(gè)以上的特權(quán)程序在同一個(gè)物理機(jī)上并發(fā)執(zhí)行。由于控制了對(duì)物理機(jī)的訪問, 因此可以防止特權(quán)程序彼此干擾。特權(quán)程序可以包括操作系統(tǒng),也可以包括其他當(dāng)其在硬件上執(zhí)行時(shí)能夠?qū)τ布?shí)現(xiàn)完全控制的軟件。在另一實(shí)施例中,可利用虛擬化以在不同于特權(quán)程序所預(yù)期的硬件上執(zhí)行該特權(quán)程序。通常地,處理器或計(jì)算機(jī)系統(tǒng)的虛擬化可以包括提供一個(gè)或多個(gè)對(duì)虛擬機(jī)(上面提到的容器)進(jìn)行存取的特權(quán)程序,且該特權(quán)程序能夠完全控制虛擬機(jī),但是物理機(jī)的控制被VMM保留。上述虛擬機(jī)可以包括一個(gè)處理器(或多個(gè)處理器)、存儲(chǔ)器以及特權(quán)程序預(yù)期在虛擬機(jī)中找到并能在其上執(zhí)行特權(quán)程序的各種外圍設(shè)備。虛擬機(jī)的元件可由VMM分配給(至少臨時(shí)地分配給)虛擬機(jī)的硬件來實(shí)現(xiàn),和/或由軟件仿真來實(shí)現(xiàn)。每一個(gè)特權(quán)程序(以及某些情況下的相關(guān)軟件,諸如在操作系統(tǒng)上執(zhí)行的應(yīng)用)此處可以被稱作訪客。 虛擬化可以以軟件(例如上面提到的VMM)實(shí)現(xiàn),而不需要在其上執(zhí)行VMM及其虛擬機(jī)的物理機(jī)中的任何具體的硬件虛擬化支持。然而,如果提供一些硬件支持,那么虛擬化就可以簡(jiǎn)化和/或達(dá)到更高的性能。虛擬化所引發(fā)的一個(gè)問題是中斷傳送的等待時(shí)間(latency)。如上所述,外圍設(shè)備可以被虛擬機(jī)分配使用(來作為虛擬機(jī)中的虛擬外圍設(shè)備)。這樣的外圍設(shè)備能夠生成有待虛擬機(jī)中的軟件來處理的中斷。在非虛擬化環(huán)境中,中斷處理的等待時(shí)間相對(duì)較短。在虛擬化環(huán)境中,利用某種軟件機(jī)制,中斷通??杀籚MM攔截、處理并傳送給目標(biāo)虛擬機(jī)。但是中斷處理的等待時(shí)間會(huì)顯著變長(zhǎng)(例如,大約增加了 100倍)。
發(fā)明內(nèi)容
在一實(shí)施方式中,系統(tǒng)包括處理器、與該處理器耦合的第一中斷控制器和第二中斷控制器。該第一中斷控制器被配置為用信號(hào)通知處理器中斷以對(duì)接收第一中斷消息作出響應(yīng),該第一中斷消息傳送指向系統(tǒng)中的主機(jī)的第一中斷。第二中斷控制器被配置為用信號(hào)通知處理器中斷以對(duì)接收第二中斷消息作出響應(yīng),該第二中斷消息傳送指向訪客的第二中斷,該訪客由主機(jī)控制并且在處理器上可執(zhí)行。
下面參照附圖來詳細(xì)描述本發(fā)明,現(xiàn)在先簡(jiǎn)要說明附圖。
圖1是實(shí)行虛擬化的計(jì)算機(jī)系統(tǒng)的一實(shí)施方式的方塊圖。圖2是圖1所示的主機(jī)硬件的一實(shí)施方式的方塊圖。圖3是說明被傳送給訪客的中斷的一實(shí)施方式的方塊圖。圖4是說明訪客高級(jí)可編程中斷控制器(APIC)的一實(shí)施方式的方框圖。圖5是說明訪客APIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)中的訪客APIC狀態(tài)條目(entry)的一實(shí)施方式的方塊圖。圖6是說明圖2所示的訪客中斷管理器對(duì)接收指向訪客的中斷作出響應(yīng)的一實(shí)施方式的操作流程圖。圖7是說明訪客APIC對(duì)接收中斷消息作出響應(yīng)的一實(shí)施方式的操作流程圖。圖8是說明虛擬機(jī)監(jiān)視器將訪客APIC狀態(tài)由一個(gè)訪客改變?yōu)榱硪粋€(gè)訪客的一實(shí)施方式的操作流程圖。圖9是說明在訪客APIC狀態(tài)條目中排列中斷狀態(tài)的一實(shí)施方式的方塊圖。圖10是說明為中斷定位訪客APIC狀態(tài)條目的一實(shí)施方式的方塊圖。圖11是說明為中斷定位訪客APIC狀態(tài)條目的另一實(shí)施方式的方塊圖。圖12是說明為中斷定位訪客APIC狀態(tài)條目的又一實(shí)施方式的方塊圖。圖13是說明為中斷定位訪客APIC狀態(tài)條目的再一實(shí)施方式的方塊圖。圖14是圖1所示的主機(jī)硬件的另一實(shí)施方式的方塊圖。圖15是存儲(chǔ)VMM —實(shí)施方式的計(jì)算機(jī)可存取存儲(chǔ)介質(zhì)的一實(shí)施方式的方塊圖。本發(fā)明的具體實(shí)施方式
通過附圖中的實(shí)施例示出并在本文中進(jìn)行詳細(xì)描述,同時(shí)本發(fā)明允許種種修正和替代形式。但應(yīng)該明白的是,此處的附圖及相關(guān)的詳細(xì)描述并不試圖將本發(fā)明限定在所公開的特定形式上,相反地,本發(fā)明應(yīng)涵蓋由所附權(quán)利要求書所定義的所有落于本發(fā)明精神與范圍內(nèi)的修正、等同方式與替代形式。此處使用的標(biāo)題僅用于組織目的而不意味著限制說明書的范圍。本申請(qǐng)中所使用的“可/可以”用來表示許可的意思(也就是具有可能性)而不是強(qiáng)制的意思(也就是必須)。同樣的,“包括/包含”意味著包括在其中,但不是僅限于包括在其中的內(nèi)容。各種元件、電路或者其他組件可以被描述為“被配置為/用于(configured to),, 執(zhí)行一個(gè)或多個(gè)任務(wù)。在這樣的上下文中,“被配置為/用于”是對(duì)通常意味著在操作過程中“具有電路系統(tǒng)”來執(zhí)行一個(gè)或多個(gè)任務(wù)的結(jié)構(gòu)的廣義描述。同樣地,上述元件/電路/ 組件可被配置為/用于執(zhí)行任務(wù)即使是在該元件/電路/組件當(dāng)前未打開時(shí)。通常來說, 符合“被配置為/用于”的結(jié)構(gòu)的電路系統(tǒng)可包括硬件電路來執(zhí)行所述操作。類似的,為了便于描述,各種元件/電路/組件可被描述為執(zhí)行一個(gè)或多個(gè)任務(wù)。這樣的描述應(yīng)該被解釋為包括短語“被配置為/用于”。列舉被配置為/用于執(zhí)行一個(gè)或多個(gè)任務(wù)的元件/電路 /組件并不特別意指使用35U. S. C. § 112第6段中對(duì)元件/電路/組件的解釋。
具體實(shí)施例方式在一實(shí)施方式中,計(jì)算機(jī)系統(tǒng)包括至少一個(gè)主機(jī)中斷控制器和至少一個(gè)訪客中斷控制器。主機(jī)中斷控制器可管理由主機(jī)(例如,虛擬化環(huán)境中的虛擬機(jī)管理器(VMM))帶來的中斷。這樣的中斷可包括諸如從計(jì)算機(jī)系統(tǒng)中的未被分配給執(zhí)行于該系統(tǒng)上的訪客的設(shè)備而來的中斷、VMM不希望暴露給訪客的系統(tǒng)級(jí)中斷,等等。訪客中斷控制器可管理由訪客帶來的中斷。這樣的中斷可包括諸如由分配給訪客以提供訪客的虛擬機(jī)中的設(shè)備之功能性 (functionality)的設(shè)備所分發(fā)的中斷。該系統(tǒng)中的硬件可發(fā)送中斷給主機(jī)中斷控制器或訪客中斷控制器??蛇x地,中斷也可以被發(fā)送給上述兩個(gè)中斷控制器,并且其中一個(gè)中斷控制器可接收該中斷,具體由哪個(gè)接收基于該中斷是主機(jī)中斷還是訪客中斷。每一個(gè)中斷控制器都可與處理器耦合并且都可與處理器通信以傳送中斷。在一些實(shí)施方式中,提供訪客中斷控制器以傳送中斷到訪客可以使得訪客中斷的傳送具有與主機(jī)中斷大致相等的等待時(shí)間。在一實(shí)施方式中,訪客中斷控制器可以是主機(jī)中斷控制器的復(fù)本(duplicate)。也就是說,訪客中斷控制器與主機(jī)中斷控制器可包含相同的硬件。在另一實(shí)施方式中,訪客中斷控制器可以僅重復(fù)(duplicate) —部分的主機(jī)中斷控制器。與主機(jī)中斷控制器不同的部分可以經(jīng)由VMM攔截及仿真被VMM虛擬化。
虛擬化概沭圖1示出了實(shí)行虛擬化的計(jì)算機(jī)系統(tǒng)5的一實(shí)施方式的方塊圖。在圖1的實(shí)施方式中,出現(xiàn)了多個(gè)訪客10A-10N。訪客IOA包括訪客操作系統(tǒng)(0 12和一個(gè)或多個(gè)運(yùn)行在訪客操作系統(tǒng)上的應(yīng)用14A-14N。訪客ION包括特權(quán)代碼16。訪客10A-10N由虛擬機(jī)管理器(VMM) 18來管理。VMM 18和訪客10A-10N在主機(jī)硬件20上執(zhí)行,該主機(jī)硬件20可以包括包含于計(jì)算機(jī)系統(tǒng)5中的物理硬件。在一實(shí)施方式中,VMM 18可保有一組虛擬機(jī)控制塊 (VMCB) 22。每一個(gè)訪客10A-10N都可對(duì)應(yīng)一個(gè)VMCB 22。盡管圖1中VMCB 22是作為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è)備以及其他用以耦接前述組件的電路。特別是,主機(jī)硬件20可包括一個(gè)或多個(gè)主機(jī)中斷控制器、一個(gè)或多個(gè)訪客中斷控制器和/或一個(gè)或多個(gè)訪客中斷管理器。例如,個(gè)人計(jì)算機(jī)(PC)式的系統(tǒng)可包含耦接處理器的北橋、存儲(chǔ)器以及使用高級(jí)圖形端口(AGP)接口的圖形設(shè)備。此外,北橋可耦接到諸如外設(shè)組件接口(PCI)總線的外設(shè)總線,各種外設(shè)組件可直接或間接地耦接至外設(shè)總線。該P(yáng)C 式系統(tǒng)也可以包括耦接至PCI總線的南橋,以提供傳統(tǒng)(legacy)功能性和/或耦接至傳統(tǒng) (legacy)硬件。在各種實(shí)施方式中,訪客中斷管理器可在北橋、南橋或者在上述接口之一上面的設(shè)備中實(shí)施。主機(jī)中斷控制器和訪客中斷控制器可實(shí)施于每一個(gè)處理器中,或者在一組處理器之間共享。在其他實(shí)施方式中,其他電路可用于連接各種硬件組件。例如,可使用超級(jí)傳輸(HT)鏈接來連接節(jié)點(diǎn),每一個(gè)節(jié)點(diǎn)都可包括一個(gè)或多個(gè)處理器、主橋以及存儲(chǔ)控制器。每一個(gè)節(jié)點(diǎn)也可包括可以包含有訪客中斷管理器和/或主機(jī)中斷控制器及訪客中斷控制器的北橋。此外,主橋可包含訪客中斷管理器和/或主機(jī)中斷控制器及訪客中斷控制器。該主橋可被用來以菊花鏈(daisy chain)的形式經(jīng)由HT鏈接耦接至外圍設(shè)備。任何期望的電路系統(tǒng)/主機(jī)硬件結(jié)構(gòu)均可被使用。VMM 18可用于為每一個(gè)訪客10A-10N提供虛擬化并且可以控制訪客10A-10N對(duì)主機(jī)硬件20的訪問。VMM 18也可負(fù)責(zé)調(diào)度訪客10A-10N以在主機(jī)硬件20上執(zhí)行。VMM 18 可用于將主機(jī)硬件20中提供的硬件支持用于虛擬化。例如,處理器可為虛擬化提供硬件支持,包括用以攔截事件并將訪客退出到VMM 18以進(jìn)行處理的硬件。訪客中斷管理器和/或訪客中斷控制器也可以是配備來支持虛擬化的硬件。在一些實(shí)施方式中,VMM 18可以作為在主機(jī)硬件20上實(shí)施的并且為訪客10A-10N 提供虛擬化的“薄(thin)”的獨(dú)立軟件程序來執(zhí)行。這樣的VMM實(shí)施方式有時(shí)可被稱為“管理程序(hypervisor)”。在其他實(shí)施方式中,VMM 18可被集成到主機(jī)OS中或者執(zhí)行于主機(jī) OS上。在這樣的實(shí)施方式中,VMM 18可依賴主機(jī)0S,包括該主機(jī)OS中的任何驅(qū)動(dòng)器、由系統(tǒng)BIOS提供的平臺(tái)系統(tǒng)管理模式(SMM)代碼等等。因此,主機(jī)OS組件(以及諸如平臺(tái)SMM 代碼的各種較低層級(jí)的組件)直接執(zhí)行于主機(jī)硬件20上且未被VMM 18虛擬化。在一實(shí)施方式中,VMM 18和主機(jī)OS (如果包括的話)可合起來稱為主機(jī)。通常來說,主機(jī)可包括在使用過程中直接控制主機(jī)硬件20的任何代碼。例如,主機(jī)可以是VMM18、結(jié)合主機(jī)OS的VMM 18或者單單是主機(jī)OS (例如在非虛擬化環(huán)境中)。在各種實(shí)施方式中,VMM 18可支持全虛擬化、半虛擬化或者兩者都支持。另外,在一些實(shí)施方式中,VMM 18可并發(fā)地執(zhí)行半虛擬化的訪客和全虛擬化的訪客。全虛擬化時(shí),訪客10A-10N不知道虛擬化正在發(fā)生。每一個(gè)訪客10A-10N可在其虛擬機(jī)中具有相鄰的零基(zero based)存儲(chǔ)器,并且VMM 18可使用影子頁表或嵌套頁表來控制對(duì)主機(jī)物理地址空間的訪問。影子頁表可從訪客虛擬地址重新映射到主機(jī)物理地址 (有效地將訪客10A-10N中的存儲(chǔ)器管理軟件所分配的訪客“物理地址”重新映射到主機(jī)物理地址),而嵌套頁表則可接收訪客物理地址作為輸入并映射到主機(jī)物理地址。通過對(duì)每一個(gè)訪客10A-10N使用影子頁表或嵌套頁表,VMM 18可以確保訪客不會(huì)訪問主機(jī)硬件20中的其他訪客的物理存儲(chǔ)器。半虛擬化時(shí),訪客10A-10N可以至少部分地感知虛擬機(jī)。這樣的訪客10A-10N可與VMM 18協(xié)商存儲(chǔ)頁面,因此可以不需要將訪客物理地址重新映射到主機(jī)物理地址。在半虛擬化的一實(shí)施方式中,可允許訪客10A-10N直接與主機(jī)硬件20中的外圍設(shè)備交互。在任何給定的時(shí)間,外圍設(shè)備可被訪客10A-10N中的一個(gè)或多個(gè)所“擁有”。例如,在一實(shí)施方式中,外圍設(shè)備可通過一個(gè)或多個(gè)當(dāng)前擁有此外圍設(shè)備的訪客10A-10N被映射到保護(hù)域中。 只有擁有外圍設(shè)備的訪客可直接與之交互。還可以有保護(hù)機(jī)制來防止保護(hù)域中的設(shè)備讀/ 寫分配給其他保護(hù)域中的訪客的頁面。如前所述,VMM 18可以為每一個(gè)訪客10A-10N保留一個(gè)VMCB 22。所述VMCB 22 通??砂ù鎯?chǔ)在由VMM 18為相應(yīng)的訪客10A-10N分配的存儲(chǔ)區(qū)域中的數(shù)據(jù)結(jié)構(gòu)。在一實(shí)施方式中,VMCB 22可包含存儲(chǔ)頁,盡管其他實(shí)施方式可以利用更大或更小的存儲(chǔ)區(qū)域和 /或在其他介質(zhì)上的存儲(chǔ)器(例如非易失性存儲(chǔ)器)。在一實(shí)施方式中,VMCB 22可包括訪客的處理器狀態(tài),當(dāng)調(diào)度該訪客來執(zhí)行時(shí),該狀態(tài)可被載入主機(jī)硬件20的處理器中,而當(dāng)該訪客退出時(shí)(要么由于其預(yù)定時(shí)間的結(jié)束,要么由于處理器檢測(cè)的用于退出訪客的一個(gè)或多個(gè)攔截),該狀態(tài)可被存回VMCB 22。在一些實(shí)施方式中,僅一部分的處理器狀態(tài)經(jīng)由將控制轉(zhuǎn)移給對(duì)應(yīng)于該VMCB 22的訪客的指令(“虛擬機(jī)運(yùn)行(VMRUN) ”指令)進(jìn)行載入, 其他的期望狀態(tài)可在執(zhí)行該VMRUN指令前由VMM 18載入。同樣地,在這樣的實(shí)施方式中, 僅一部分的處理器狀態(tài)可在訪客退出時(shí)由該處理器存儲(chǔ)至VMCB 22,且VMM 18可在需要時(shí)負(fù)責(zé)存儲(chǔ)任何其他狀態(tài)。在其他實(shí)施方式中,VMCB 22可以包括指向存儲(chǔ)處理器狀態(tài)的另一存儲(chǔ)區(qū)域的指針。另外,在一實(shí)施方式中,可以定義兩種或兩種以上的退出機(jī)制。在一實(shí)施方式中,所存儲(chǔ)的狀態(tài)的數(shù)量以及載入狀態(tài)的位置可以根據(jù)所選擇的退出機(jī)制而變。
在一實(shí)施方式中,VMM 18也可具有被分配來存儲(chǔ)對(duì)應(yīng)于該VMM 18的處理器狀態(tài)的存儲(chǔ)器的區(qū)域。當(dāng)執(zhí)行VMRUN時(shí),對(duì)應(yīng)于所述VMM 18的處理器狀態(tài)可被保存在該區(qū)域中。 當(dāng)訪客退出到VMM 18時(shí),該區(qū)域中的處理器狀態(tài)可重新從該區(qū)域載入以讓VMM 18繼續(xù)執(zhí)行。例如,在一實(shí)施方式中,處理器可具備寄存器(例如模式特定寄存器(MSR))以存儲(chǔ)VMM 18保存區(qū)的地址。此外,該VMCB 22可包括用以識(shí)別使能訪客的攔截事件的攔截配置,以及如果檢測(cè)到使能的攔截事件時(shí)用于退出訪客的機(jī)制。在一實(shí)施方式中,攔截配置可包括一組攔截指示,其中每一個(gè)攔截指示用來指示處理器支持的每一個(gè)攔截事件。攔截指示可指示處理器是否要攔截相應(yīng)事件(或者,從另一角度來看,該攔截是否可用)。如本文中所使用的,如果該處理器退出訪客以處理事件,其中該事件應(yīng)該發(fā)生在該訪客中,則該事件在該訪客內(nèi)被“攔截”。在一實(shí)施方式中,攔截配置可包括第二組指示以指示使用兩個(gè)退出機(jī)制中的哪一個(gè)。其他實(shí)施方式也可定義多于兩個(gè)的退出機(jī)制。在另一實(shí)施方式中,攔截配置可包括一組攔截指示,每個(gè)事件一個(gè)指示,指示第一退出機(jī)制是否應(yīng)用于該事件;以及第二組攔截指示,每個(gè)事件一個(gè)指示,指示第二退出機(jī)制是否應(yīng)用于該事件。通常來說,退出機(jī)制可定義由處理器進(jìn)行的退出訪客執(zhí)行的操作(一般是以重新啟動(dòng)的方式),并且開始執(zhí)行其他代碼。在一實(shí)施方式中,退出機(jī)制可包括存儲(chǔ)少量的處理器狀態(tài)并為微程序(Minivisor)載入狀態(tài)。該微程序可在訪客物理地址空間內(nèi)執(zhí)行并執(zhí)行相對(duì)簡(jiǎn)單的攔截處理。另一退出機(jī)制可退出至該VMM,保存大量的處理器狀態(tài)并載入VMM的處理器狀態(tài)。因此,攔截事件可根據(jù)該事件由不同的指令代碼來處理。此外,相對(duì)簡(jiǎn)單的攔截處理可通過耗費(fèi)較少時(shí)間執(zhí)行的“較輕權(quán)重(lighter weight)”退出機(jī)制來處理,在一些實(shí)施方式中這樣的處理能夠提高性能。在使用“較重權(quán)重(heavier weight) ”機(jī)制以退出之后,可在該VMM中執(zhí)行較復(fù)雜的處理。因此,在本實(shí)施方式中,該VMM 18可配置處理器去攔截那些VMM 18不希望訪客10A-10N在內(nèi)部處理的事件,也可以配置處理器使用哪種退出機(jī)制。事件可包含指令(即,攔截指令而不是執(zhí)行該指令)、中斷、異常和/或在訪客執(zhí)行過程中可能發(fā)生的其他事件。在一實(shí)施方式中,該VMCB 22可進(jìn)一步包括其他控制位,所述控制位可使得處理器在載入該VMCB 22時(shí)執(zhí)行某些動(dòng)作。例如,控制位可包括刷新(flush)處理器中的TLB 的指示。其他控制位可為訪客指定其執(zhí)行的環(huán)境(例如,中斷處理模式,訪客的地址空間標(biāo)識(shí)符,等等)。還有一些其他控制位可用來傳送描述訪客為何退出的退出碼,等等。通常來說,一個(gè)“訪客”可包括任意一個(gè)或多個(gè)將被虛擬化以在計(jì)算機(jī)系統(tǒng)5中執(zhí)行的軟件程序。一個(gè)訪客可包括至少一些執(zhí)行在特權(quán)模式中的代碼,并且因此希望可以完全控制執(zhí)行該訪客的計(jì)算機(jī)系統(tǒng)。如前所述,訪客IOA是一個(gè)包含有訪客OS 12的實(shí)施例。所述訪客OS 12可以是任何0S,諸如微軟公司(Redmond,WA)的任何Windows OS、任何 UNIX類型的操作系統(tǒng)(例如Linux)、IBM公司(Armonk,NY)的AIX、太陽微系統(tǒng)公司(Santa Clara, CA)的Solaris、惠普公司(Palo Alto, CA)的HP-UX,等等。訪客10N是包含有非操作系統(tǒng)特權(quán)代碼16的訪客實(shí)施例。需要注意的是字母“N”,當(dāng)此處使用諸如10N的參考數(shù)字時(shí),一般是指帶有參考數(shù)字的元件編號(hào)(例如,訪客10A-10N中的任何編號(hào)均包括一個(gè)訪客)。此外,使用字母 “N”的不同參考數(shù)字(例如,10N和14N)并不意指不同的元件具有相同的數(shù)量(例如,訪客10A-10N的數(shù)量與應(yīng)用14A-14N的數(shù)量不同),除非另有說明。 主機(jī)硬件現(xiàn)在翻到圖2,該圖是說明主機(jī)硬件20的一實(shí)施方式的方塊圖。在所示的實(shí)施方式中,主機(jī)硬件20包括多個(gè)處理器30A-30B、各自的主機(jī)高級(jí)可編程中斷控制器 (hAPIC)32A-32B、各自的訪客 APIC(gAPIC) 34A-34B 以及可選的附加 gAPIC 34C_;MD、橋 36(其包括訪客中斷管理器38、輸入/輸出(I/O)存儲(chǔ)管理單元(I0MMU)40以及存儲(chǔ)器控制器42)、多個(gè)接口電路(IF)44A-44C、存儲(chǔ)器接口電路(MIF) 46、可選的橋48 (其可包括IOAPIC 50)、外圍設(shè)備52A-52B(其中一些可包含諸如所述IOAPIC 54的I0APIC)以及存儲(chǔ)器56。處理器30A-30B與橋36耦接并與圖2所示的各自的hAPIC 32A-32B和gAPIC 34A-34D耦接。該hAPIC32A-32B和gAPIC 34A-34D與橋36耦接,該橋36與接口電路 44A-44C和存儲(chǔ)器接口電路46耦接。該存儲(chǔ)器接口電路46與存儲(chǔ)器56耦接,接口電路44A 與橋48耦接,橋48與外圍設(shè)備52A-5W耦接。在所示的實(shí)施方式中,每一個(gè)處理器30A-30B具有相關(guān)的hAPIC 32A-32B以及至少一個(gè)相關(guān)的gAPIC 34A-34D。在一實(shí)施方式中,可根據(jù)由Intel公司(Santa Clara, CA) 制定的APIC規(guī)范在主機(jī)硬件20中傳送中斷。在上述規(guī)范中,每一個(gè)處理器具有相關(guān)的能夠接收中斷的本地APIC(中斷都來自所述處理器自身、其他處理器、內(nèi)部APIC中斷源以及與外圍設(shè)備設(shè)備相關(guān)的I0APIC)。本地APIC對(duì)未決的中斷按照優(yōu)先級(jí)進(jìn)行排列,并且如果一個(gè)中斷的優(yōu)先級(jí)高于處理器中正在執(zhí)行的另一中斷的優(yōu)先級(jí)和/或該中斷的優(yōu)先級(jí)高于處理器當(dāng)前任務(wù)的優(yōu)先級(jí),則將該中斷傳送到處理器。在圖2的實(shí)施方式中,hAPIC 32A-32B可以是針對(duì)處理器的主機(jī)中斷的本地 APIC( S卩,中斷由主機(jī)處理)并且gAPIC 36A-36D可以是針對(duì)處理器的訪客中斷的本地 APIC( S卩,中斷由在各自的處理器30A-30B上處于活動(dòng)狀態(tài)的訪客來執(zhí)行)。如果訪客當(dāng)前正在處理器上執(zhí)行(例如,VMRUN指令已經(jīng)在對(duì)訪客的處理器上被執(zhí)行并且訪客退出還未發(fā)生),或者如果訪客已經(jīng)退出且VMM 18正在執(zhí)行,但是期待該訪客再次在該處理器上被執(zhí)行,則該訪客在該處理器中是活動(dòng)的。當(dāng)VMM 18調(diào)度處理器30A-30B上的訪客時(shí),VMM 18可載入處理器30A-30B的 gAPIC 34A-34D及其對(duì)應(yīng)于訪客的gAPIC狀態(tài)。尤其是,給定的訪客可以具有多個(gè)虛擬 CPU(vCPU)。該VMM 18可調(diào)度訪客的vCPU以在處理器30A-30B上執(zhí)行,并且可載入gAPIC 34A-34D以及該訪客虛擬機(jī)中的vCPU的中斷狀態(tài)。此外,任何指向訪客(以及vCPU)的中斷都可由gAPIC 34A-34D來捕獲,所述訪客在活動(dòng)狀態(tài)時(shí)被信號(hào)通知中斷。如上述所述, gAPIC34A-34D可根據(jù)的APIC規(guī)范來中斷訪客。給定處理器30A-30B的hAPIC 32A-32B和gAPIC 34A-34D可具有到處理器的任何接口。例如,應(yīng)用在本地APIC和他們各自的處理器之間的接口可是任何接口。每一個(gè)APIC 可用來獨(dú)立地用信號(hào)通知處理器中斷將要被傳送過來以供服務(wù)。如果處理器正在執(zhí)行訪客并且用信號(hào)通知了訪客中斷,處理器可用來中斷訪客代碼并且開始執(zhí)行訪客虛擬機(jī)中的正確的中斷句柄(handler)。這樣的話,在一實(shí)施方式中,傳送訪客中斷與傳送主機(jī)中斷可具有同樣的等待時(shí)間。如果所述處理器正在執(zhí)行訪客并且該hAPIC用信號(hào)通知了中斷,則處理器可用來退出訪客到VMM 18以處理主機(jī)中斷。如果處理器未在執(zhí)行訪客,則由gAPIC 用信號(hào)通知的中斷可被處理器屏蔽直到該訪客被再次執(zhí)行。如果處理器未在執(zhí)行訪客并且hAPIC用信號(hào)通知了中斷,則處理器可用于中斷主機(jī)執(zhí)行并且分行到該主機(jī)中斷句柄。在一實(shí)施方式中,每一個(gè)處理器30A-30B可包括不止一個(gè)gAPIC 34A-34D。每一個(gè)gAPIC 34A-34D可存儲(chǔ)對(duì)應(yīng)于不同訪客/VCPU的APIC狀態(tài)。在這樣的實(shí)施方式中,當(dāng)用信號(hào)通知訪客中斷給處理器時(shí),每一個(gè)gAPIC 34A-34D可用來標(biāo)識(shí)其所對(duì)應(yīng)的訪客(或者處理器30A-30B可具有內(nèi)部寄存器用來標(biāo)識(shí)當(dāng)前被分配給每一個(gè)gAPIC 34A-34D的訪客)。如果一個(gè)不同的訪客當(dāng)前正在執(zhí)行,則處理器可屏蔽該訪客中斷,其與當(dāng)VMM 18未在執(zhí)行時(shí)屏蔽該訪客中斷相類似??蛇x地,當(dāng)相應(yīng)的訪客被調(diào)度時(shí),每一個(gè)gAPIC34A-34D可以包括可被VMM 18設(shè)置為活動(dòng)狀態(tài)的主動(dòng)指示,并且當(dāng)相應(yīng)的訪客處于活動(dòng)狀態(tài)時(shí),所述 gAPIC 34A-34D可用來僅通知自身的訪客中斷。隨著時(shí)間的推移,當(dāng)多個(gè)訪客被調(diào)度以在處理器上執(zhí)行時(shí),每一個(gè)處理器30A-30B包括多于一個(gè)的gAPIC 34A-34可減少gAPIC狀態(tài)變化的數(shù)量。例如,如果每一個(gè)處理器30A-30B具有N個(gè)gAPIC 34A-34D (其中N是大于0的整數(shù)),在gAPIC狀態(tài)需要為任何一個(gè)訪客保存之前,多達(dá)N個(gè)不同的訪客可被調(diào)度來執(zhí)行。 在實(shí)現(xiàn)每一個(gè)處理器30A-30B具有多于一個(gè)的gAPIC34A-34D的一些實(shí)施方式中,該gAPIC 34A-34D可包括附加狀態(tài)來確保該中斷消息可被正確地接受和/或記錄(log)。例如,該 gAPIC34A-34D可包括“當(dāng)前運(yùn)行”的指示用來標(biāo)識(shí)相應(yīng)的虛擬機(jī)當(dāng)前是否運(yùn)行在相應(yīng)的處理器30A-30B上(相對(duì)于因VMM的執(zhí)行而暫停或者于另一虛擬機(jī)正在執(zhí)行時(shí)的暫停)。如果當(dāng)前運(yùn)行標(biāo)識(shí)表明該虛擬機(jī)正在運(yùn)行,則gAPIC可接受該中斷消息。如果當(dāng)前運(yùn)行標(biāo)識(shí)表明該虛擬機(jī)未在運(yùn)行,則gAPIC可用信號(hào)通知不接受該中斷??蛇x地,gAPIC可包括附加指示用來標(biāo)識(shí)該gAPIC是否用信號(hào)通知不接受中斷。在這樣的實(shí)施方式中,該gAPIC可用信號(hào)通知中斷,即使當(dāng)前運(yùn)行標(biāo)識(shí)指出當(dāng)前未運(yùn)行,并且不接受(not-accepted)標(biāo)識(shí)指示該gAPIC用信號(hào)通知不被接受的中斷。這樣的功能可用來檢測(cè)針對(duì)未運(yùn)行訪客的中斷是否被接收,這可用來調(diào)度該中斷所指向的訪客。gAPIC 34A-34D可包括包含在hAPIC 32A-32B中的至少部分硬件,也可包括其所有硬件(例如,可以是hAPIC 32A-32B的復(fù)本)。除了 APIC狀態(tài)之外,gAPIC 34A-34D還可用訪客標(biāo)識(shí)符(ID)編程以確定gAPIC 34A-34D被分配給哪一個(gè)訪客。如果所述訪客包括多個(gè)vCPU,那么物理APIC ID和邏輯APIC ID可標(biāo)識(shí)該訪客內(nèi)部的vCPU。在一實(shí)施方式中, 訪客ID可以與由IOMMU 40支持的外圍設(shè)備的域ID相同??蛇x地,訪客ID可以是被單獨(dú)管理的資源。在另一個(gè)例子中,VMM 18可分配訪客ID給訪客并可確保gAPIC 34A-34D針對(duì)每個(gè)訪客而進(jìn)行恰當(dāng)?shù)鼐幊?。vCPU和/或gAPIC和/或這兩者在此處可更簡(jiǎn)潔地被稱為訪客中的中斷的目的地。目的地最終可以是為中斷服務(wù)的vCPU,但是由于gAPIC與相應(yīng)的處理器相關(guān)并且也記錄中斷,因此相應(yīng)的gAPIC也可被看作是目的地。該gAPIC 34A-34D和hAPIC 32A-32B被耦接到橋36上以接收中斷??墒褂萌我獾慕涌趤韨魉椭袛嗟絞APIC 34A-34D和hAPIC 32A-32B。例如,可使用任意的為APIC中斷傳送而設(shè)置的接口。在一實(shí)施方式中,可使用與用來傳送其他操作給處理器30A-30B/從處理器30A-30B傳送其他操作(諸如由處理器30A-30B發(fā)起的存儲(chǔ)器讀/寫操作、緩存一致性維護(hù)的探測(cè),等等)的相同的傳送機(jī)制來傳送中斷消息。從另一角度看,可將gAPIC 34A-34D 與hAPIC 32A-32B的耦接與處理器30A-30B到橋36的耦接共享??蛇x地,處理器30A-30B 可具有到橋36的獨(dú)立路徑,比如在gAPIC34A-34D和hAPIC 32A-32B采用APIC “3線接口” 時(shí)。中斷消息可以是在任意接口上識(shí)別正被傳送的中斷和中斷目的地的任意通信。例如,中斷可具有相關(guān)的中斷向量,且該中斷向量可以是中斷消息的一部分。中斷消息也可以包括訪客ID和目的地ID (例如,邏輯APIC ID或物理APIC ID)。該hAPIC 32A-32B可與本地APIC相同。例如,由于該hAPIC為主機(jī)中斷所使用, 因此該hAPIC 32A-32B不包括用于訪客識(shí)別的額外硬件??蛇x地,hAPIC 32A-32B可包括額外的硬件但是該額外的硬件可被編程以表明該hAPIC 32A-32B是用于主機(jī)中斷的。被橋 36傳送到hAPIC 32A-32B和gAPIC 34A-34D的中斷消息可識(shí)別訪客中斷以及與之相對(duì)的主機(jī)中斷,并可包括訪客中斷的訪客ID(或者可使用預(yù)留的訪客ID,諸如零或全二進(jìn)制以指示主機(jī)中斷)。hAPIC 32A-32B可用于接受被標(biāo)識(shí)為主機(jī)中斷的中斷(如果主機(jī)中斷的物理APIC ID或邏輯APIC ID與相應(yīng)的hAPIC ID相匹配),并且gAPIC 34A-34D可用于接受其各自訪客的訪客中斷(如果訪客ID相匹配,以及如果訪客中斷的物理APIC ID或者邏輯 APIC ID與相應(yīng)的gAPIC ID相匹配)。當(dāng)gAPIC 34A-34D可為活動(dòng)訪客管理中斷時(shí),一些訪客可以是非活動(dòng)的(或者可具有被訪客中斷指向的非活動(dòng)的vCPU)。在一實(shí)施方式中,訪客中斷管理器38可用于為非活動(dòng)的訪客維持訪客中斷狀態(tài)并確保活動(dòng)訪客的gAPIC接收它們的中斷。尤其是,在一實(shí)施方式中,訪客中斷管理器38可利用分布式中斷傳送方案,其中該訪客中斷管理器38可用于記錄橋36中所接收的每一個(gè)訪客中斷,也可用于傳送該訪客中斷到每一個(gè)gAPIC34A-34D。如果gAPIC 34A-34D接受該中斷,那么訪客中斷所指向的訪客是活動(dòng)的。如果沒有g(shù)APIC 34A-34D接受該中斷,那么該訪客中斷所指向的訪客是非活動(dòng)的。在所示的實(shí)施方式中,訪客中斷管理器38可用于為訪客維持gAPIC的狀態(tài),所述訪客被定義于系統(tǒng)5的存儲(chǔ)器56中的gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58中。該gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu) 58可包括在系統(tǒng)5中所定義的每一個(gè)gAPIC的gAPIC狀態(tài)條目(例如,該系統(tǒng)中每一個(gè)訪客10A-10N的每一個(gè)vCPU的一個(gè)條目)。如果gAPIC與系統(tǒng)中活動(dòng)或非活動(dòng)的訪客相關(guān)聯(lián)的話,則gAPIC可被定義在該系統(tǒng)中。據(jù)此,該訪客中斷管理器38可被配置為為中斷所指向的訪客/vCPU更新gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58中的gAPIC狀態(tài)以對(duì)接受訪客中斷作出響應(yīng)。 在一實(shí)施方式中,訪客中斷管理器38可用于更新gAPIC狀態(tài)而不管訪客是否是活動(dòng)的。為了組播和廣播具有多于一個(gè)目標(biāo)的中斷,訪客中斷管理器38可用于為每一個(gè)中斷目的地更新gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)中的gAPIC狀態(tài)。可選地,訪客中斷管理器38可被配置為為這些多目的地中斷而依賴VMM 18。在這樣的實(shí)施方式中,訪客中斷管理器38可用于在VMM 18 可存取的存儲(chǔ)位置中記錄該中斷,且可用于用信號(hào)通知VMM 18去處理該消息。在一些實(shí)施方式中,該訪客中斷管理器38可用于直接定位gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58 中的gAPIC狀態(tài)條目以響應(yīng)訪客中斷消息中的訪客ID和/或其他信息。在其他實(shí)施方式中,為了提供gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58中的靈活性和/或?yàn)榱斯?jié)省存儲(chǔ)器空間,訪客中斷管理器38可被配置為采用gAPIC狀態(tài)映射表60來定位gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58中的gAPIC 狀態(tài)條目。gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58和映射表60 (對(duì)某些實(shí)施方式)的不同實(shí)施方式被圖示于圖10-13中并在下面進(jìn)行更為詳細(xì)的討論。據(jù)此,訪客中斷管理器38可用于通過gAPIC 狀態(tài)映射表60來定位gAPIC狀態(tài)條目并且用于更新該gAPIC狀態(tài)條目以記錄該中斷以響應(yīng)訪客中斷。在一實(shí)施方式中,gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58可存儲(chǔ)gAPIC狀態(tài)的子集。該子集可以是被硬件20 (例如訪客中斷管理器38與IOMMU 40的聯(lián)合)追蹤的gAPIC狀態(tài)。更特別的是,該子集可以gAPIC狀態(tài)的一部分,其中當(dāng)相應(yīng)的訪客是非活動(dòng)的時(shí),該部分gAPIC狀態(tài)可隨之改變。例如,在一實(shí)施方式中,當(dāng)相應(yīng)的訪客是非活動(dòng)的時(shí),外圍設(shè)備52A-52B可用信號(hào)通知中斷,這將導(dǎo)致相應(yīng)的中斷請(qǐng)求被gAPIC捕獲。該中斷請(qǐng)求可在gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58中被追蹤。其他gAPIC狀態(tài)可通過處理器追蹤服務(wù)中的中斷、處理器的任務(wù)優(yōu)先級(jí), 等等。只有當(dāng)訪客處于活動(dòng)狀態(tài)時(shí),這些值才可以改變。在一實(shí)施方式中,當(dāng)訪客處于非活動(dòng)狀態(tài)時(shí)不可改變的gAPIC狀態(tài)可由VMM 18追蹤,其利用在圖2中顯示為VMM管理gAPIC 狀態(tài)數(shù)據(jù)結(jié)構(gòu)68的一個(gè)或多個(gè)其他數(shù)據(jù)結(jié)構(gòu)來進(jìn)行追蹤。在該系統(tǒng)中,VMM 18可在VMM管理的狀態(tài)68和作為部分的激活訪客與關(guān)閉訪客的gAPIC 34A-34D之間傳送狀態(tài)。雖然gAPIC狀態(tài)映射表60和gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58在所示的實(shí)施方式中都顯示為存儲(chǔ)在存儲(chǔ)器56中,但其中之一者或兩者的部分可被訪客中斷管理器38和/或橋 36可存取的緩存存儲(chǔ)起來。此外或可替換的,一個(gè)或多個(gè)gAPIC狀態(tài)條目的專用存儲(chǔ)器可被實(shí)現(xiàn)在橋36中。該專用存儲(chǔ)器可存儲(chǔ)一組可被快速轉(zhuǎn)入和轉(zhuǎn)出gAPIC 34A-34D的“快速”gAPIC狀態(tài)。而其他的gAPIC狀態(tài)則可在存儲(chǔ)器56中以較慢的速度來存取。在一些實(shí)施方式中,該快速gAPIC狀態(tài)開關(guān)可由訪客中斷管理器38操縱而較慢的gAPIC狀態(tài)開關(guān)則可由VMM 18操縱。在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ú)熱 (one-hot)向量。邏輯傳送模式中斷可包括獨(dú)熱向量中的任意置位(set bit)以傳送中斷到簇中的一個(gè)或多個(gè)本地APIC。據(jù)此,邏輯APIC ID的匹配可包括簇ID的比較以及本地 APID ID向量中的置位的檢測(cè),該置位與本地APIC中獨(dú)熱向量的置位具有相同的位置。從另一個(gè)角度看,在邏輯傳送模式中斷中的本地APIC ID向量可與本地APIC的本地APIC ID 向量進(jìn)行邏輯與操作(AND),并且如果結(jié)果為非零且簇ID能夠匹配,則本地APIC是邏輯中斷的目標(biāo)。此處的邏輯APIC ID可更簡(jiǎn)潔地被稱為邏輯ID,類似的,物理APIC ID可更簡(jiǎn)潔的被稱為物理ID。與中斷相關(guān)的給定ID(物理的或邏輯的)可被稱為中斷的目的地ID。 中斷的相應(yīng)傳送模式可識(shí)別中斷的目的地ID。gAPIC 34A-34D也可以支持物理傳送和邏輯傳送兩種模式。除了根據(jù)上面突顯的模式在中斷消息中匹配APIC ID之外,gAPIC 34A-34D可將中斷消息中的訪客ID匹配到 gAPIC中的訪客ID。IOMMU 40可用于對(duì)I/O啟動(dòng)的存儲(chǔ)操作(例如,源自外圍設(shè)備52A-52B的存儲(chǔ)器讀/寫操作或由代表外圍設(shè)備52A-52B的DMA控制器執(zhí)行的存儲(chǔ)器讀/寫操作)執(zhí)行虛擬地址至物理地址的映射。作為轉(zhuǎn)換操作的一部分,IOMMU 40可用于存取設(shè)備表62且可選地存取訪問中斷重定向表64。設(shè)備表62可包括對(duì)每一個(gè)外圍設(shè)備52A-52B的條目(并可包括一個(gè)外圍設(shè)備的多個(gè)條目,該條目包括與外圍設(shè)備耦接的外圍設(shè)備接口上的不止一個(gè)標(biāo)識(shí)符)。設(shè)備表62可包括用于轉(zhuǎn)換存儲(chǔ)器讀/寫操作(未圖示)的存儲(chǔ)地址的指向I/O 頁表的頁表指針并可包括指向中斷重定向表64的指針。在一些實(shí)施方式中,設(shè)備表62可以為分配給訪客的外圍設(shè)備存儲(chǔ)訪客ID。在一實(shí)施方式中,訪客ID可以與IOMMU 40中用
15于設(shè)備訪問保護(hù)的域ID相同??蛇x地,訪客ID可被獨(dú)立分配。在一實(shí)施方式中,設(shè)備表62 也可存儲(chǔ)指向gAPIC狀態(tài)映射表60(如果使用的話)的指針,或者指向gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58的指針。在另一實(shí)施方式中,訪客ID和/或指向表60/數(shù)據(jù)結(jié)構(gòu)58的指針可被存儲(chǔ)在中斷重定向表64中。該中斷重定向表64可用于將中斷從其初始的目的地和/或中斷向量重定向到新的目的地和/或中斷向量。為了簡(jiǎn)化本發(fā)明的其他部分,將采用這樣一種實(shí)施方式,在此實(shí)施方式中,訪客ID是來自設(shè)備表62的域ID且指向映射表60和/或gAPIC 狀態(tài)數(shù)據(jù)結(jié)構(gòu)58的指針被存儲(chǔ)在設(shè)備表62中。然而,本發(fā)明剩余部分的實(shí)施方式通??砂凑丈鲜鲇懻摰膬?nèi)容進(jìn)行修正。在其他實(shí)施方式中,可以不提供訪客中斷管理器38。例如,可能存在這樣的配置, 如果在訪客從一個(gè)處理器30A-30B轉(zhuǎn)移到另一個(gè)時(shí)由VMM 18更新設(shè)備表62和/或中斷重定向表64,以及如果處理器30A-30B專用于代表非活動(dòng)訪客接收中斷(以按期望更新存儲(chǔ)器56中的gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58和/或?yàn)橹袛喾?wù)),則不需要訪客中斷管理器38。存儲(chǔ)器控制器42可以被耦合以接收由處理器30A-30B發(fā)出的存儲(chǔ)操作(例如,提取指令、存取載入/存儲(chǔ)數(shù)據(jù)、存取用于轉(zhuǎn)換的處理器頁表,等等)、來自訪客中斷管理器38 的存儲(chǔ)操作(例如,讀取/更新gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58和/或gAPIC狀態(tài)映射表60)、來自 IOMMU 40的存儲(chǔ)操作(例如,訪問I/O頁表、設(shè)備表62以及中斷重定向表64),以及接收來自接口電路44A-44C的存儲(chǔ)操作(在某些實(shí)施方式中)。存儲(chǔ)器控制器42可用于對(duì)存儲(chǔ)操作進(jìn)行排序并與存儲(chǔ)器56通信以執(zhí)行存儲(chǔ)器操作。存儲(chǔ)器接口電路46可執(zhí)行到存儲(chǔ)器 56的物理層訪問。存儲(chǔ)器56可包括任何類型的存儲(chǔ)器。例如,存儲(chǔ)器56可包括諸如同步 DRAM (SDRAM)的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)以及雙倍數(shù)據(jù)速率(DDR、DDR2、DDR3等) SDRAM、RAMBUSDRAM、靜態(tài)RAM,等等。存儲(chǔ)器56可包括一個(gè)或多個(gè)包含有多存儲(chǔ)芯片的存儲(chǔ)模塊,諸如單列直插式存儲(chǔ)模塊(SIMM)、雙列直插式存儲(chǔ)模塊(DIMM),等等。在此實(shí)施方式中,除了包括訪客中斷管理器38、I0MMU 40以及存儲(chǔ)器控制器42之外,橋36也可包括其他通信功能以在處理器30A-30B、hAPIC 32A-32B、gAPIC 34A-34D以及耦接到接口電路44A-44D的設(shè)備之間進(jìn)行通信。例如,在所示的實(shí)施方式中,另一個(gè)橋48可被耦接到接口電路44A上,并可用于在接口電路44A所采用的協(xié)議和外圍設(shè)備52A-52B所采用的協(xié)議之間進(jìn)行橋通信。在一實(shí)施方式中,接口電路44A-44C可實(shí)現(xiàn)諸如上面提到的 HT接口,并且橋48可從HT橋接到諸如PCI Express(PCIe)接口的另一接口。在這一實(shí)施方式中,外圍設(shè)備52A-52B可以是PCIe設(shè)備。橋48也可用于橋接到其他接口,或另一個(gè)橋可被耦合到橋48以橋接到其他接口。可使用任何一個(gè)或多個(gè)外圍設(shè)備接口。此外,外圍設(shè)備52A-52B可包括被配置為直接耦接到HT接口的HT外圍設(shè)備。這種外圍設(shè)備可以不需要橋48。在一實(shí)施方式中,橋48和/或一個(gè)或多個(gè)外圍設(shè)備52A-52B可包括IOAPIC (圖2 中的50和M)。IOAPIC可負(fù)責(zé)接收來自外圍設(shè)備的中斷請(qǐng)求并形成中斷消息以傳送中斷請(qǐng)求給hAPIC32A-32B和中斷管理器38 (用于到gAPIC 34A-34D的傳送和/或記錄在存儲(chǔ)器中的gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58中)。如上所述,在一實(shí)施方式中,接口電路44A-44C可用于HT接口上的通信。該接口電路44A-44C可用于通過HT與外圍設(shè)備/橋進(jìn)行通信。此外,在一些實(shí)施方式中,接口電路44A-44C可用于耦接到其他具有處理器、hAPIC和gAPIC等的節(jié)點(diǎn)。在這樣的實(shí)施方式中, 橋36可包括除了之前描述的電路系統(tǒng)之外的一致性管理電路系統(tǒng)(coherence management circuitry)。處理器30A-30B可實(shí)施任意指令集架構(gòu),并可用于執(zhí)行定義在指令集架構(gòu)中的指令。處理器30A-30B可包括任意微架構(gòu),諸如超流水線架構(gòu)、超標(biāo)量架構(gòu)和/或二者的結(jié)合; 按順序或不按順序的執(zhí)行;預(yù)測(cè)的執(zhí)行;等等。根據(jù)需要,處理器30A-30B可以實(shí)施或不實(shí)施微編碼技術(shù)。外圍設(shè)備52A-52B可包括任意類型的外圍設(shè)備。外圍設(shè)備52A-52B可包括存儲(chǔ)設(shè)備,比如磁盤驅(qū)動(dòng)器、固態(tài)磁盤驅(qū)動(dòng)器、光盤驅(qū)動(dòng)器或者諸如閃存之類的非易失性存儲(chǔ)設(shè)備,等等。外圍設(shè)備52A-52B可包括I/O設(shè)備,比如用戶I/O設(shè)備(鍵盤、鼠標(biāo)、顯示器、語音輸入等等)、網(wǎng)絡(luò)設(shè)備、諸如通用串行總線(USB)或火線的外部接口設(shè)備,等等。在所示的實(shí)施方式中,處理器30A-30B、橋 36、hAPIC32A_32B、gAPIC 34A-34D、接口電路44A-44C以及存儲(chǔ)器接口電路46可被集成在一個(gè)單獨(dú)的半導(dǎo)體基底上以形成集成電路66。其他實(shí)施方式可根據(jù)需要設(shè)置不同數(shù)量的集成電路系統(tǒng)和離散電路系統(tǒng)。值得注意的是,盡管圖2示出了不同數(shù)量的組件,諸如處理器、hAPIC、gAPIC、接口電路、外圍設(shè)備、 橋,等等,但其他實(shí)施方式也可根據(jù)需要設(shè)置任何數(shù)量的一個(gè)或多個(gè)上述每一個(gè)組件。在其他實(shí)施方式中,IOMMU 40的位置和訪客中斷管理器38的位置是可變的。例如,其中一個(gè)或所有兩個(gè)可位于橋48中、外圍設(shè)備52A-52B中、耦接到該橋的另一個(gè)橋中,寸寸。在所示的實(shí)施方式中,每一個(gè)gAPIC 34A-34D和每一個(gè)hAPIC 32A-32B與圖2所示的特定處理器30A-30B相關(guān)聯(lián)。這樣,給定的中斷控制器可專用于該實(shí)施方式中相應(yīng)的處理器30A-30B。更具體地,在圖2中,hAPIC 32A、gAPIC 34A和!34C專用于處理器30A, hAPIC 32B、gAPIC 34B和34D專用于處理器30B。中斷控制器可以用任何方式將中斷用信號(hào)通知給其相應(yīng)的處理器。通常來說,該通知可表示需要中斷。該通知可包括中斷向量,或者中斷向量可被中斷傳送之后執(zhí)行的軟件讀取。在一實(shí)施方式中,傳送中斷可以指用信號(hào)通知處理器以及處理器接受該中斷。為中斷服務(wù)可以指執(zhí)行與中斷向量相關(guān)的中斷服務(wù)程序以執(zhí)行中斷設(shè)備所需要的操作?,F(xiàn)在翻到圖3,圖3所示為在一實(shí)施方式中,中斷從外圍設(shè)備進(jìn)到gAPIC的方塊圖。 類似于圖3,來自其他處理器的中斷(內(nèi)處理利器中斷(IPI))可也被傳送到訪客中斷管理器38且可從那一點(diǎn)向前進(jìn)行處理??蛇x地,從初始化IPI的處理器接收IPI的gAPIC可傳送更新到訪客中斷管理器38 (來更新接收訪客的gAPIC狀態(tài),如果訪客是非活動(dòng)的)并且也可傳送IPI (包括訪客ID)到其他gAPIC。在所示的實(shí)施方式中,外圍設(shè)備52A確定需要中斷。外圍設(shè)備52A中的IOAPIC 54(參見圖2)可生成響應(yīng)外圍設(shè)備52A的操作的中斷消息。特別是,IOAPIC M可生成對(duì)應(yīng)于預(yù)期中斷(例如,基于外圍設(shè)備52A所需要的服務(wù)、用信號(hào)通知中斷的特定功能(如果外圍設(shè)備52A執(zhí)行多種功能),等等)的中斷向量。中斷向量是中斷通信的一部分,且可通過軟件被用于識(shí)別中斷源、區(qū)分中斷的優(yōu)先順序,等等。在一些實(shí)施例中,中斷向量可由IOMMU 40重新映射,這樣該中斷向量在圖3中可標(biāo)示為“初始向量”。外圍設(shè)備52A可將中斷消息傳送到IOMMU 40A(箭頭A)。在此實(shí)施方式中,中斷可按照消息通知中斷(Message-SignalledInterrupt,MSI)的方式來傳送,例如在PCIe規(guī)范中所定義的。在其他實(shí)施方式中,中斷可以以任意的期望方式來傳送。通常來說,傳送設(shè)備可識(shí)別中斷、中斷的傳送模式(例如,邏輯的或物理的)以及中斷的目的地ID (DestID)。IOMMU 40可接收MSI。MSI包括外圍設(shè)備的標(biāo)識(shí)符。例如,實(shí)施PCI編程模型的接口可利用總線號(hào)以及在該總線上的設(shè)備號(hào)識(shí)別每一個(gè)設(shè)備(允許多個(gè)PCI接口以分層形式和/或并行形式存在于系統(tǒng)中)。設(shè)備可具有多種“功能”,其可以是物理設(shè)備上的獨(dú)立虛擬設(shè)備,或者是設(shè)備上的操作分區(qū)。標(biāo)識(shí)符還可包括功能號(hào)。這樣,在此實(shí)施方式中,標(biāo)識(shí)符可被稱為總線設(shè)備功能(BDF)。IOMMU 40可利用BDF來索引設(shè)備表62 (箭頭B),并可識(shí)別對(duì)應(yīng)于外圍設(shè)備52A的設(shè)備表?xiàng)l目。在一些實(shí)施方式中,該條目可包括訪客ID和指向 gAPIC狀態(tài)映射表60或gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58的指針(箭頭C)。在此實(shí)施方式中,設(shè)備表?xiàng)l目也可包括中斷重定向表指針(IRTP),該指針可確定對(duì)應(yīng)于設(shè)備的中斷重定向表64(箭頭Cl)。中斷重定向表64可被初始中斷向量來索引,并可為該中斷提供輸出向量和目的地 ID(DestID,例如,邏輯 APIC ID 或物理 APIC ID)(箭頭 C2)。在圖3所示的實(shí)施例中,MSI被重新映射到向量42和訪客ID 99。該重新映射可包括添加該訪客ID,在使用中斷重定向表64的情況下,該向量也可被改變。否則,在該中斷消息中提供來自MSI的初始中斷向量。描繪了使用中斷向量42和訪客ID 99的特定實(shí)施例的圖3中的要點(diǎn)在圖中被括在方括號(hào)中,例如[]。IOMMU 40可傳送包括訪客ID (例如,在這個(gè)實(shí)施例中是99)的中斷消息到訪客中斷管理器38。中斷消息也可包括中斷向量(例如,在這個(gè)實(shí)施例中是42)和目的地ID。中斷消息還可包括指向gAPIC狀態(tài)映射表60或gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58的指針(箭頭D)。在具有g(shù)APIC狀態(tài)映射表60的實(shí)施方式中,訪客中斷管理器38可利用諸如訪客 ID和/或目的地ID的指針以及潛在的其他信息來定位gAPIC狀態(tài)映射表60中的gAPIC狀態(tài)指針(箭頭E1,以及如箭頭E2所示的到訪客中斷管理器38的返回指針)。gAPIC狀態(tài)指針可確定gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58中的gAPIC狀態(tài)條目,并且訪客中斷管理器38可利用該 gAPIC狀態(tài)指針來執(zhí)行g(shù)APIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58中的gAPIC狀態(tài)更新(箭頭E)。在這個(gè)實(shí)施例中,gAPIC狀態(tài)更新可設(shè)定對(duì)應(yīng)于向量42的中斷請(qǐng)求寄存器中的位。中斷請(qǐng)求寄存器 (IRR)參照?qǐng)D4在下面進(jìn)行更為詳細(xì)的描述。在一實(shí)施方式中,gAPIC狀態(tài)58的更新是原子的。例如,訪客中斷管理器38可生成原子或運(yùn)算(OR)事務(wù),該事務(wù)原子地將正在設(shè)置的中斷請(qǐng)求位或運(yùn)算到gAPIC狀態(tài)條目中的中斷請(qǐng)求寄存器的當(dāng)前狀態(tài)中。一個(gè)原子操作可以是作為一個(gè)單位來有效執(zhí)行的操作,即使該操作由多個(gè)步驟完成。試圖訪問被原子地更新的位置的觀察者(observer)要么接收原子更新之前的值,要么接收更新之后的值,但不會(huì)接收中間的值。試圖更新被原子地更新的位置的觀察者要么在該原子操作之前執(zhí)行其更新,要么在之后執(zhí)行其更新,但不會(huì)在操作過程中進(jìn)行更新。盡管此實(shí)施方式可執(zhí)行原子或運(yùn)算,其他實(shí)施方式也可執(zhí)行更加通用的原子更新操作。例如,原子更新可包括識(shí)別不會(huì)被修改的目標(biāo)的位的與屏蔽(AND mask),以及識(shí)別會(huì)被進(jìn)行或運(yùn)算的位的或屏蔽(OR mask)。其他實(shí)施方式也是可能的。例如,可使用比較和交換實(shí)現(xiàn),其中來自存儲(chǔ)位置的初始值被讀取并且執(zhí)行比較和交換操作以用經(jīng)過或運(yùn)算得到的新值替代初始值。如果比較操作失敗,該過程可被重復(fù)(讀取新的初始值,然后執(zhí)行比較和交換)。如果需要,可使用后退和/或暫停機(jī)制來退出循環(huán)。
訪客中斷管理器38也可向gAPIC 34A-34D廣播包括中斷向量、訪客ID和目的地 ID的中斷消息(箭頭F)。gAPIC中的一個(gè)(圖3中的gAPIC 34A)可具有訪客ID 99以及與目的地ID相匹配的邏輯APIC ID或物理APIC ID,因此gAPIC 34A可用確認(rèn)信號(hào)(Ack) 來響應(yīng)中斷消息,該確認(rèn)信號(hào)表示gAPIC 34A已經(jīng)接受該中斷消息(箭頭G)。在該實(shí)施例中,gAPIC 34A也可更新其中斷請(qǐng)求寄存器以設(shè)置對(duì)應(yīng)于向量42的位。如果該中斷的優(yōu)先級(jí)比任何當(dāng)前正在進(jìn)行的中斷(如果有的話)和/或處理器的任務(wù)的優(yōu)先級(jí)都要高的話, 則gAPIC 34A也可將該中斷用信號(hào)通知處理器30A。其他gAPIC 34B-34D也可響應(yīng)廣播的中斷消息,但是由于它們不是該中斷的目標(biāo),因此它們不會(huì)發(fā)出確認(rèn)接受的信號(hào)(箭頭H)。 對(duì)邏輯中斷而言,如果其確定有多個(gè)目標(biāo)的話,則可能有不止一個(gè)確認(rèn)信號(hào)。使用上述機(jī)制,訪客中斷管理器38不需要知道哪一個(gè)gAPIC 34A-34D被分配給了哪一個(gè)訪客。其他實(shí)施方式也是可預(yù)期的,其中訪客中斷管理器38追蹤哪個(gè)gAPIC 34A-34D被分配給了哪個(gè)訪客以及哪個(gè)訪客僅傳送中斷到目標(biāo)gAPIC。訪客中斷管理器38 可自動(dòng)追蹤gAPIC,或者每次一個(gè)gAPIC被重新分配給另一個(gè)訪客時(shí)由VMM 18進(jìn)行編程。 在這樣的實(shí)施方式中,訪客中斷管理器38可僅傳送中斷消息到目標(biāo)gAPIC。到hAPIC 32A-32B的中斷的傳送可按照常用的APIC方式進(jìn)行。特別地,在一實(shí)施方式中,中斷可能未由訪客中斷管理器38操作在其上,但在其他方面可與圖3中的操作相同。需要注意的是,盡管訪客中斷管理器38在此處圖示為一個(gè)方塊,但實(shí)現(xiàn)訪客中斷管理器38的電路系統(tǒng)可以是分布式的。例如,在一實(shí)施方式中,接收指針、可選擇地處理 gAPIC狀態(tài)映射表60并生成gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58的更新的那部分訪客中斷管理器38 可被包括在IOMMU 40中,因此該IOMMU 40為gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58和被傳送到gAPIC 34A-34D的中斷消息傳送原子的或運(yùn)算。訪客中斷管理器38在一個(gè)或多個(gè)物理位置中的任何實(shí)現(xiàn)方式均可采用?,F(xiàn)在翻到圖4,該圖示出了 gAPIC 34A的一實(shí)施方式的方塊圖。其他的gAPIC 34B-34D可以類似。在圖4的實(shí)施方式中,gAPIC 34A包括中斷請(qǐng)求寄存器(IRR)70、中斷服務(wù)寄存器(ISR) 72、觸發(fā)模式寄存器(TMR) 74、任務(wù)優(yōu)先級(jí)寄存器(TPR)76、控制單元78、物理ID寄存器80、邏輯ID寄存器82、訪客ID寄存器84以及其他可選的APIC狀態(tài)86??刂茊卧?8與IRR 70、ISR72、TMR 74、TPR 76、物理ID寄存器80、邏輯ID寄存器82、訪客ID 寄存器84和其他APIC狀態(tài)86相耦合。此外,控制單元78與訪客中斷管理器38耦合而通信以接收中斷,并與處理器接口相耦合以與處理器30A通信。為了對(duì)從訪客中斷管理器38接收中斷消息作出響應(yīng),如果該中斷指向與gAPIC 34A相應(yīng)的訪客,則控制單元78可用于將該中斷寫入IRR 70中。IRR中的中斷請(qǐng)求的位置與中斷向量相對(duì)應(yīng)。IRR可追蹤“固定的(fixed)”中斷。其他中斷類型可包括不可屏蔽中斷(匪I)、系統(tǒng)管理中斷(SMI)、傳統(tǒng)外部中斷(extINT)等等。這些中斷可被作為其他APIC 狀態(tài)86的一部分處理。在一實(shí)施方式中,中斷消息也可為每一個(gè)中斷包括一個(gè)觸發(fā)模式(電平的或邊緣的)。TMR 74可存儲(chǔ)哪一個(gè)觸發(fā)模式應(yīng)用于該中斷的指示。例如,邊緣觸發(fā)中斷可由TMR 74 中的二進(jìn)制0來表示而電平觸發(fā)中斷則可由二進(jìn)制1來表示。在其他實(shí)施方式中,在gAPIC 34A中僅支持邊緣觸發(fā)中斷,則可除去TMR 74 (及其在gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58中的復(fù)本))。
19在另一實(shí)施方式中,可重新使用TMR 74以允許VMM 18記錄虛擬的電平敏感中斷。VMM 18 可在TMR 74中設(shè)置多個(gè)位以指示如下情況,如果處理器30A用信號(hào)通知中斷的結(jié)束以作相應(yīng)的中斷向量,則處理器30A退出到該VMM 18。對(duì)于固定中斷,gAPIC 34A可用于對(duì)中斷請(qǐng)求以及服務(wù)中(in-service)中斷的優(yōu)先級(jí)進(jìn)行排序以判斷中斷請(qǐng)求是否應(yīng)被傳送給處理器。通常來說,如果最高優(yōu)先級(jí)中斷請(qǐng)求的優(yōu)先級(jí)高于服務(wù)中中斷的最高優(yōu)先級(jí)(其中如果處理器已中斷其軟件執(zhí)行來處理與一中斷對(duì)應(yīng)的中斷句柄,則該中斷為服務(wù)中中斷),控制單元78可用于將所請(qǐng)求的中斷傳送給處理器30A。此外,TPR 76可被軟件編程以建立處理器30A所接受的中斷的最低優(yōu)先級(jí)。如果最高優(yōu)先級(jí)中斷請(qǐng)求的優(yōu)先級(jí)高于服務(wù)中中斷的最高優(yōu)先級(jí)并且高于TPR 76中所指明的優(yōu)先級(jí),則控制單元78可用于傳送該最高優(yōu)先級(jí)中斷請(qǐng)求。當(dāng)處理器30A接收到該中斷時(shí),該處理器可用中斷確認(rèn)命令響應(yīng)gAPIC 34A??刂茊卧?8可用于從IRR 70中移出最高優(yōu)先級(jí)中斷請(qǐng)求并且將該中斷作為服務(wù)中中斷記錄在 ISR 72中。相應(yīng)于該ISR中的中斷的服務(wù)中指示的位置可對(duì)應(yīng)于該中斷的中斷向量。處理器30A可執(zhí)行中斷服務(wù)程序來為該中斷服務(wù)。中斷服務(wù)程序可利用給gAPIC的結(jié)束中斷 (EOI)命令來結(jié)束以用信號(hào)通知該中斷服務(wù)完成。控制單元78可用于從ISR 72中移出該最高優(yōu)先級(jí)的服務(wù)中中斷以響應(yīng)該EOI命令。每一個(gè)IRR 70、ISR 72和T MR 74都包括與gAPIC 34A支持的每一個(gè)中斷向量相對(duì)應(yīng)的位置。在所示的實(shí)施方式中,支持從0到255的向量。中斷向量號(hào)也可指示其與其他中斷的相對(duì)優(yōu)先級(jí)(例如,在其他實(shí)施方式中,較高向量號(hào)的優(yōu)先級(jí)高于較低向量號(hào)優(yōu)先級(jí),反之亦然)。對(duì)每一個(gè)中斷向量而言,IRR 70存儲(chǔ)的中斷請(qǐng)求位指示在該中斷向量處是否有中斷被請(qǐng)求。例如,該指示可以是指示當(dāng)設(shè)置時(shí)有請(qǐng)求以及當(dāng)清空時(shí)沒有請(qǐng)求的位。 類似的,對(duì)每一個(gè)中斷向量而言,ISR 72存儲(chǔ)的服務(wù)中(in-service)位為該中斷向量指示是否有中斷在服務(wù)中(例如,當(dāng)設(shè)置時(shí)表示有服務(wù)中中斷,當(dāng)清空時(shí)表示無服務(wù)中中斷)。 對(duì)每一個(gè)中斷向量而言,TMR 74存儲(chǔ)觸發(fā)模式。對(duì)每一個(gè)IRR 70、ISR 72和TMR 74而言, 寄存器中的位位置等同于與中斷相應(yīng)的中斷向量號(hào)。在所示的實(shí)施方式中,中斷被邏輯地分配到組中,這些組都被指定優(yōu)先級(jí)等級(jí)以確定未決的中斷請(qǐng)求是否被傳送給處理器。例如,將優(yōu)先級(jí)等級(jí)O分配給中斷向量0到15, 將優(yōu)先級(jí)等級(jí)1分配給中斷向量16到31,等等,直到將優(yōu)先級(jí)等級(jí)15分配給中斷向量244 到255。在此實(shí)施方式中,提高優(yōu)先級(jí)等級(jí)的號(hào)碼表示更高的優(yōu)先級(jí)等級(jí)??刂茊卧?8可計(jì)算請(qǐng)求的優(yōu)先級(jí)等級(jí),如果是最高優(yōu)先級(jí)等級(jí),則IRR 70中至少有一個(gè)中斷請(qǐng)求處于未決狀態(tài)??刂茊卧?8也可計(jì)算服務(wù)中的優(yōu)先級(jí)等級(jí),如果是最高優(yōu)先級(jí)等級(jí),則ISR 72中至少有一個(gè)中斷被指示為在服務(wù)中。如果請(qǐng)求的優(yōu)先級(jí)等級(jí)超過了服務(wù)中的優(yōu)先級(jí)等級(jí)并且也超過了 TPR 76中所表明的優(yōu)先級(jí)等級(jí),則控制單元78可傳送該中斷。應(yīng)該注意的是, 盡管在所示的實(shí)施方式中256個(gè)中斷向量由16個(gè)優(yōu)先級(jí)等級(jí)組別來支持,然而在其他實(shí)施方式中也可以采用更多或更少的中斷向量和/或更多或更少的優(yōu)先級(jí)等級(jí)組別。物理ID寄存器80和邏輯ID寄存器82可分別存儲(chǔ)分配給gAPIC 34A的物理APIC ID和邏輯APIC ID。訪客ID寄存器84可存儲(chǔ)分配給gAPIC 34A的訪客ID。據(jù)此,如果中斷的訪客ID與訪客ID寄存器84中的訪客ID相匹配,或者物理中斷中的APIC ID與物理 ID寄存器80中的物理ID相匹配,亦或者邏輯中斷中的APICID與邏輯ID寄存器82中的邏輯ID相匹配,則控制單元78可用于接受來自訪客中斷管理器38的中斷。其他APIC狀態(tài)86可包括內(nèi)部生成的中斷、計(jì)時(shí)器、本地向量表等等。在各種實(shí)施方式中,一些或所有的其他APIC狀態(tài)86可被包括在gAPIC 34A中或通過到VMM 18的攔截以及該狀態(tài)的VMM 18仿真虛擬化。除了不包含訪客ID寄存器外,hAPIC 32A-32B可以與gAPIC 34A類似??蛇x地, hAPIC 32A-32B和gAPIC 34A-34D可以是具有相同硬件的例子(如果gAPIC 34A-34D實(shí)現(xiàn)所有的APIC狀態(tài)),并且訪客ID寄存器可包含指示該訪客ID是否有效的使能位,或者訪客 ID寄存器可被編程為調(diào)0以指示hAPIC?,F(xiàn)在翻到圖5,該圖示出了 gAPIC狀態(tài)條目90的一實(shí)施方式和VMM管理的gAPIC 狀態(tài)條目92的一實(shí)施方式的方塊圖。圖5中所示的是狀態(tài)的邏輯視圖。在存儲(chǔ)器中,狀態(tài)的實(shí)際排列可按照?qǐng)D9、12或13中的一些實(shí)施方式而進(jìn)行變化。通常來說,gAPIC狀態(tài)條目90可包括至少如下的gAPIC狀態(tài),當(dāng)對(duì)應(yīng)于該gAPIC狀態(tài)的訪客是非活動(dòng)的時(shí),該gAPIC狀態(tài)是可變的。在當(dāng)前的實(shí)施方式中,外圍設(shè)備可將中斷用信號(hào)通知訪客,這可改變IRR的狀態(tài)。但是,ISR狀態(tài)僅當(dāng)訪客中的vCPU接受該中斷時(shí)才可改變,當(dāng)訪客是非活動(dòng)時(shí),ISR狀態(tài)不會(huì)發(fā)生改變。類似的,可以通過vCPU來改變TPR, 并且當(dāng)訪客是非活動(dòng)時(shí),IPR不改變。VMM 18可在VMM 18管理的gAPIC狀態(tài)條目92中管理這些狀態(tài)的存儲(chǔ)和恢復(fù)。相應(yīng)地,對(duì)類似于圖4的APIC 34A的一實(shí)施方式而言,gAPIC狀態(tài)條目90可包含 IRR 70的狀態(tài)。VMM管理的gAPIC狀態(tài)條目92可包括ISR 72,TMR 74,TPR 76以及其他各種APIC狀態(tài)86的狀態(tài)。VMM管理的gAPIC狀態(tài)條目92也可存儲(chǔ)訪客ID、邏輯ID以及物理ID,或者這些內(nèi)容在選擇的條目92中是固有的(也就是說,VMM 18可使用這些值來從數(shù)據(jù)結(jié)構(gòu)68中選擇條目92)?,F(xiàn)在翻到圖6,該圖示出了響應(yīng)接收來自IOMMU 40的訪客中斷消息的訪客中斷管理器38的一實(shí)施方式的操作流程圖。盡管為了便于理解而將方塊按特定順序顯示,但其他順序也可以使用。可按照訪客中斷管理器38中的組合邏輯并行地執(zhí)行各個(gè)方塊。方塊、方塊組合和/或流程圖在多個(gè)時(shí)鐘周期期間以流水線方式處理。通常來說,訪客中斷管理器 38可用于執(zhí)行如圖6所示的操作。在一些實(shí)施方式中,中斷消息的處理根據(jù)該中斷是邏輯的還是物理的可變(也就是說,根據(jù)中斷的傳送模式是邏輯的還是物理的)。例如,在圖11的實(shí)施方式中,邏輯中斷和物理中斷讀取不同的表。在圖12和13中,邏輯表和物理表在存儲(chǔ)器中可以是相鄰的,但是可對(duì)基址指針增加偏移以定位邏輯中斷的邏輯表而物理中斷則不需要增加任何偏移。據(jù)此,訪客中斷管理器38可用于確定中斷是邏輯的還是物理的(判定框100)。其他實(shí)施方式不可基于傳送模式而變換,于是判定框100可以除去(且下面要討論的廣播或多個(gè)目的地的檢查可被并入一個(gè)檢查中)。如果中斷是邏輯的(判定框100,“是”支路),訪客中斷管理器38可用于確定從邏輯中斷到gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58中相應(yīng)的gAPIC狀態(tài)條目90的映射(方塊102)。不同的實(shí)施方式可執(zhí)行不同的映射,如圖10-13所示,因此上述的確定是可變的。訪客中斷管理器38可用于設(shè)置對(duì)應(yīng)于中斷向量的位,該中斷向量位于表示在gAPIC狀態(tài)條目90中的 IRR中(方塊104)。邏輯中斷可具有多個(gè)目的地(例如,在簇中的目的地是位向量,其可以具有多于一個(gè)的置位)。如果邏輯中斷包含多個(gè)目的地(判定框106,“是”支路),則訪客中斷管理器38可用于為每一個(gè)附加的目的地重復(fù)方塊102和104??蛇x地,在圖12的實(shí)施方式中,邏輯目的地位向量在一個(gè)操作中可被寫入gAPIC狀態(tài)條目中,如下詳述。訪客中斷管理器38可用于傳送中斷消息到gAPIC 34A-34D(方塊108)。如果中斷是物理的(判定框100,“否”支路),訪客中斷管理器38可用于確定從物理中斷到gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58中相應(yīng)的gAPIC狀態(tài)條目90的映射(方塊110)。不同的實(shí)施方式可執(zhí)行不同的映射,如圖10-13所示,因此上述的確定是可變的。訪客中斷管理器38可用于設(shè)置對(duì)應(yīng)于中斷向量的位,該中斷向量位于表示在gAPIC狀態(tài)條目90中的IRR中(方塊112)。物理中斷可以是廣播的或者是單一的目的地。如果物理中斷是廣播的(判定框114,“是”支路),則訪客中斷管理器38可用于為訪客虛擬機(jī)(例如,每一個(gè) vCPU)中的每一個(gè)目的地重復(fù)方塊110和112。可選地,在圖12的實(shí)施方式中,該廣播可在一個(gè)操作中被記錄在gAPIC狀態(tài)條目中,如下詳述。訪客中斷管理器可用于傳送中斷消息到 gAPIC34A-34D (方塊 108)。被表示在gAPIC狀態(tài)條目90中的IRR中的位的設(shè)置可作為原子的或運(yùn)算操作來執(zhí)行,其中該置位被或運(yùn)算到該存儲(chǔ)位置中的其他IRR位中。原子或運(yùn)算操作的實(shí)際執(zhí)行情況是可以變化,從鎖定的讀/修改/寫操作到定義來執(zhí)行或運(yùn)算的專用電路系統(tǒng)作為一個(gè)操作。如上所述,在其他實(shí)施方式中可執(zhí)行比較和交換操作。在另一實(shí)施方式中,具有多于一個(gè)目的地的邏輯中斷和被廣播的物理中斷可由訪客中斷管理器38通過在VMM 18可存取的數(shù)據(jù)結(jié)構(gòu)中記錄該中斷來處理(例如,事件隊(duì)列)。訪客中斷管理器38可也用于用信號(hào)通知VMM 18(例如,引起從處理器30A-30B之一上的虛擬機(jī)退出)來將事件通知給VMM 18??蛇x地,訪客中斷管理器38可僅周期性地用信號(hào)通知VMM 18(例如,每N毫秒一次和/或在事件隊(duì)列中處于高水位時(shí)),并且VMM 18也可周期性地檢查事件隊(duì)列以比可支持的信號(hào)通知更快地為任一事件服務(wù)。在一實(shí)施方式中, 事件隊(duì)列可由IOMMU 40而不是訪客中斷管理器38來管理。現(xiàn)在翻到圖7,該圖所示為說明gAPIC 34A-34D對(duì)接收來自訪客中斷管理器38的中斷消息的作出響應(yīng)的一實(shí)施方式的操作流程圖。盡管為了便于理解而將方塊按照特定順序顯示,但其他順序也可以使用??砂凑誫APIC中的組合邏輯并行地執(zhí)行各個(gè)方塊。方塊、 方塊組合和/或流程圖在多個(gè)時(shí)鐘周期期間以流水線方式處理。通常來說,gAPIC可用于執(zhí)行如圖7所示的操作。在一實(shí)施方式中,通過設(shè)置gAPIC的訪客ID (參見圖4,在訪客ID寄存器84中) 為0可使得該gAPIC非激活。因此,為了對(duì)接收中斷消息作出響應(yīng),如果該gAPIC的訪客ID 為0 (判定框120,“是”支路),則該gAPIC是非活動(dòng)的并且不可處理中斷。其他實(shí)施方式可通過其他方式(例如,在寄存器中的活動(dòng)位)來使得gAPIC非激活并且判定框120可根據(jù) gAPIC的活動(dòng)/非活動(dòng)狀態(tài)的檢查來相應(yīng)地進(jìn)行修改。如果gAPIC的訪客ID不為0,則該gAPIC可被配置為既比較該訪客ID和接收到的中斷的訪客ID,又比較接收到的目的地ID和分別位于寄存器80與82中的邏輯ID和物理 ID (參見圖4)。如果gAPIC的訪客ID與接收到的訪客ID不匹配(判定框122,“否”支路), 則該gAPIC當(dāng)前被分配給不同的訪客并且該gAPIC因而不再被該中斷指向。該gAPIC可被配置為用中斷的非確認(rèn)信號(hào)進(jìn)行響應(yīng)(方塊124)。該非確認(rèn)信號(hào)可表示該gAPIC已經(jīng)接收到該中斷但是已經(jīng)確定該中斷不是相應(yīng)的處理器所指向的,因此該中斷未被接受。類似的,如果gAPIC的訪客ID與接收到的訪客ID相匹配,但是該中斷是邏輯的并且與該gAPIC 的邏輯ID不匹配或者該中斷是物理的、單目的地的并且與該gAPIC的物理ID不匹配(判定框1 和1 ,“否”支路),則該gAPIC可被配置為用中斷的非確認(rèn)信號(hào)進(jìn)行響應(yīng)(方塊 124)。匹配邏輯中斷通常包括比較邏輯ID的簇ID部分的相同之處,并且檢測(cè)gAPIC邏輯ID寄存器中的置位也被設(shè)置在從該中斷接收的邏輯ID的目的地部分中。如果有不止一個(gè)邏輯目的地的話,則該中斷邏輯ID的目的地部分中的其他位也可被設(shè)置。物理ID可被比較相同之處,除了廣播的物理中斷可被看作只要訪客ID匹配就匹配。如果中斷是邏輯的并且與邏輯ID相匹配(判定框1 ,“是”支路)或者中斷是物理的并且與物理ID相匹配或者中斷是廣播的(判定框128,“是”支路),則該gAPIC可用于用表示該gAPIC正在接受該中斷的確認(rèn)信號(hào)來響應(yīng)訪客中斷管理器38以報(bào)告給相應(yīng)的處理器30A-30B(方塊130)。該gAPIC也可用于更新IRR寄存器70、設(shè)置對(duì)應(yīng)于中斷消息中的中斷向量的中斷請(qǐng)求位(方塊132)。該gAPIC可用于重新評(píng)估與任何服務(wù)中中斷和/ 或任務(wù)優(yōu)先級(jí)寄存器有關(guān)的中斷的優(yōu)先級(jí)(方塊134),并可用于基于重新評(píng)估的結(jié)果將中斷用信號(hào)通知給處理器(方塊136)。也就是說,如果該中斷的優(yōu)先級(jí)高于服務(wù)中中斷和任務(wù)優(yōu)先級(jí)寄存器的優(yōu)先級(jí)的話,則該gAPIC可被配置為用信號(hào)通知該中斷?,F(xiàn)在翻到圖8,該圖示出了一個(gè)流程圖以說明VMM 18將gAPIC狀態(tài)從一個(gè)訪客改變到另一個(gè)訪客的一實(shí)施方式的操作。也就是說,圖8的流程圖可表示將gAPIC 34A-34D 從一個(gè)訪客/VCPU重新分配給其他訪客或者同一訪客中的其他vCPU。盡管為了便于理解, 方塊以特定的順序來顯示,但也可以用其他順序。通常來說,VMM 18可包括一些指令,當(dāng)這些指令在系統(tǒng)5上執(zhí)行時(shí)可實(shí)現(xiàn)圖8所示的操作。VMM 18可確定相應(yīng)于“舊訪客”(來自gAPIC的被關(guān)閉的訪客)的位于gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58中的gAPIC狀態(tài)條目90的位置(方塊140)。gAPIC狀態(tài)條目90中的數(shù)據(jù)被認(rèn)為是“過時(shí)的”,因?yàn)樗赡芤呀?jīng)被gAPIC修改過。例如,IRR位可以已被重置以對(duì)傳送中斷到相應(yīng)的處理器作出響應(yīng)。據(jù)此,VMM 18可將gAPIC狀態(tài)條目90中的IRR調(diào)0(方塊142)。VMM 18可清空訪客ID寄存器84、邏輯ID寄存器82以及物理ID寄存器80 (方塊144)。由于訪客ID、邏輯ID和物理ID不會(huì)與任何中斷消息相匹配,因此清空操作可阻止gAPCI接受任何額外的中斷。在寄存器80-84被清空(方塊144)之后、IRR狀態(tài)被寫入 gAPIC狀態(tài)條目90之前,中斷可能已經(jīng)被傳送。據(jù)此,為了防止中斷狀態(tài)的丟失,VMM 18可原子地將IRR狀態(tài)從IRR 70或運(yùn)算(OR)到gAPIC狀態(tài)條目90中(方塊146)。VMM 18也可將其他gAPIC狀態(tài)寫入與舊訪客相關(guān)的VMM管理的gAPIC狀態(tài)條目92中(方塊148)。VMM 18可清空gAPIC的IRR、ISR和TMR寄存器70、72和74以移除舊訪客的中斷狀態(tài)(方塊150)。VMM 18可將分配給gAPIC的訪客的新訪客ID、邏輯ID以及物理ID各自寫入到訪客ID寄存器84、邏輯ID寄存器82和物理ID寄存器80 (方塊152)。一旦方塊 152被執(zhí)行,則gAPIC可開始接受訪客中斷。VMM 18可為“新訪客”(在gAPIC中激活的訪客)確定gAPIC狀態(tài)條目90 (方塊154),并可從gAPIC狀態(tài)條目90中讀取IRR狀態(tài)(方塊 156)。既然對(duì)寄存器80-84的編程可使得gAPIC開始接受中斷,因此可能的情況是gAPIC 已經(jīng)接受IRR中的中斷,該中斷在VMM 18讀取gAPIC狀態(tài)條目90之后被記錄于該條目中。據(jù)此,VMM 18可原子將IRR狀態(tài)或運(yùn)算到IRR寄存器70中。也就是說,gAPIC可支持IRR 寄存器70上的原子或運(yùn)算操作(方塊158)。VMM 18可從VMM管理的gAPIC狀態(tài)條目92 中為新的訪客讀取其他狀態(tài)(方塊160)并可將狀態(tài)寫入gAPIC中(方塊16 。值得注意的是,方塊160和162也可在方塊150之后的任意其他點(diǎn)執(zhí)行。通常來說,方塊140-148可表示關(guān)閉來自gAPIC的訪客的操作,同時(shí)方塊150-162 通??杀硎炯せ頶APIC中的訪客的操作。據(jù)此,如圖8中的水平虛線所示,如果VMM 18僅希望關(guān)閉gAPIC中的訪客,則水平虛線以上的方塊可被執(zhí)行。如果VMM僅希望激活gAPIC 中的訪客,則水平虛線以下的方塊可被執(zhí)行?,F(xiàn)在翻到圖9,圖中所示的方塊圖說明在一實(shí)施方式中在gAPIC狀態(tài)條目90中的 gAPIC狀態(tài)的示例性排列170。在圖9的實(shí)施方式中,IRR的每一個(gè)位都被存儲(chǔ)在不同字節(jié)中。例如,圖9中的IRR位0 (IRR 0)被存儲(chǔ)在存儲(chǔ)器中一組連續(xù)字節(jié)的字節(jié)0中;IRR 1 被存儲(chǔ)在字節(jié)1中;等等,直到IRR 255被存儲(chǔ)在字節(jié)255中。盡管字節(jié)中的任何位位置 (bit position)均可使用,但在所示的實(shí)施方式中IRR位被存儲(chǔ)在字節(jié)的0位處。在所示的實(shí)施方式中,字節(jié)中的其他位是不必關(guān)心的位(DC)。通過將每一個(gè)位存儲(chǔ)在分離的字節(jié) (存儲(chǔ)訪問的最小單位)中,每一個(gè)位可分別寫入而不影響其他的位。這樣,一個(gè)位可通過到字節(jié)的寫入操作被設(shè)置,這是一個(gè)原子操作。通過將置位寫入到字節(jié)中的IRR位的位置且不更新其他字節(jié),結(jié)果可以是對(duì)IRR位的原子或運(yùn)算。在其他實(shí)施方式中,原子的或運(yùn)算可以以其他方式完成,且IRR狀態(tài)的位可以以其他方式存儲(chǔ)?,F(xiàn)在翻到圖10,該圖示出了定位gAPIC狀態(tài)條目90的一實(shí)施方式的方塊圖。在所示的實(shí)施方式中顯示了設(shè)備表62和中斷重定向表64,還有g(shù)APIC狀態(tài)映射表60的一實(shí)施方式。在該實(shí)施方式中,傳送中斷的外圍設(shè)備的BDF作為到設(shè)備表62的索引使用,且該條目可包括將BDF分配給其的訪客的訪客ID。此外,在這個(gè)實(shí)施例中,該條目包括中斷重定向表指針(IRTP),其指向中斷重定向表64的基址。到中斷重定向表64的索引是中斷的中斷標(biāo)識(shí)符。中斷標(biāo)識(shí)符可包括中斷向量,也可包括物理或邏輯的中斷傳送模式(Delmode)。 選定的條目可包括新的向量以及目的地ID(DestID)。在不使用中斷重定向表64的實(shí)施方式中,由外圍設(shè)備提供的中斷向量和目的地ID可直接用來索引gAPIC狀態(tài)映射表60。gAPIC狀態(tài)映射表60可通過gAPIC狀態(tài)映射表的基址被定位在存儲(chǔ)器中。在不同實(shí)施方式中,基址可以對(duì)所有訪客相同,也可以是不同訪客不同,或者可被存儲(chǔ)在設(shè)備表 62中。在圖10中,基址標(biāo)識(shí)一組分層表的最高層級(jí)(L3),其可存儲(chǔ)指向較低層級(jí)表的指針 (例如,L2以及類似的由來自L3但不指向L2的指針標(biāo)識(shí)的表)。L2表可存儲(chǔ)指向更低層級(jí)表(Li)的指針,其可存儲(chǔ)指向gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58中的gAPIC狀態(tài)條目90的指針。 其他實(shí)施方式可在層級(jí)系統(tǒng)中使用任意的層級(jí)數(shù),包括多于或少于圖10所示的3層。在gAPIC狀態(tài)映射表60中到每一層L3-L1的索引可以是下述值的一部分,該值由來自設(shè)備表62的訪客ID、來自外圍設(shè)備或來自中斷重定向表64的中斷向量以及來自外圍設(shè)備或來自中斷重定向表64的目的地ID串聯(lián)而形成。到層L3-L1的索引可耗盡該串聯(lián)值的所有位,這樣在gAPIC狀態(tài)映射表60中訪客ID、向量和目的地ID的每一個(gè)組合都具有其自身的唯一指針。但是一些指針可指向同一個(gè)gAPIC狀態(tài)條目90(例如,在一實(shí)施方式中, 同一 gAPIC的邏輯ID和物理ID可具有指向同一個(gè)gAPIC狀態(tài)條目90的指針)。現(xiàn)在翻到圖11,該圖示出了定位gAPIC狀態(tài)條目90的另一實(shí)施方式的方塊圖。在所示的實(shí)施方式中顯示了設(shè)備表62和中斷重定向表64,還有g(shù)APIC狀態(tài)映射表60的一實(shí)施方式。在該實(shí)施方式中,傳送中斷的外圍設(shè)備的BDF作為到設(shè)備表62的索引使用,且該條目可包括將BDF分配給其的訪客的訪客ID。此外,在這個(gè)實(shí)施例中,該條目包括中斷重定向表指針(IRTP),其指向中斷重定向64的基址。設(shè)備62可進(jìn)一步包括一個(gè)或多個(gè)指向 gAPIC狀態(tài)映射表60中的表的指針。尤其是,指向訪客物理表的指針和指向訪客邏輯表的指針均可被存儲(chǔ)。訪客物理表可將物理目的地ID映射到gAPI狀態(tài)條目90。也就是說,訪客物理表可通過目的地ID進(jìn)行索引,且可存儲(chǔ)指向gAPIC狀態(tài)條目90的指針。類似的,訪客邏輯表可將邏輯目的地ID映射到gAPIC狀態(tài)條目90。到中斷重定向表64的索引是中斷的中斷標(biāo)識(shí)符。中斷標(biāo)識(shí)符可包括中斷向量,也可包括物理或邏輯的傳送模式(Delmode)。選定的條目可包括新的向量和目的地 ID(DestID)。在不使用中斷重定向表64的實(shí)施方式中,外圍設(shè)備提供的中斷向量和目的地 ID可直接用來索引gAPIC狀態(tài)映射表60?,F(xiàn)在翻到圖12,該圖示出了定位gAPIC狀態(tài)條目90的又一實(shí)施方式的方塊圖。在這一實(shí)施方式中沒有g(shù)APIC狀態(tài)映射表60。與圖10-11中的實(shí)施方式類似的是,傳送中斷的外圍設(shè)備的BDF作為到設(shè)備表62的索引使用,且該條目可包括將BDF分配給其的訪客的訪客ID以及可選地包括中斷重定向表指針(IRTP),該指針指向中斷重定向表64的基址。 設(shè)備表62可進(jìn)一步包括至少一個(gè)指向gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58中的表的基址的指針(Ptr)。 在所示的實(shí)施方式中,該表包括訪客物理片段(section) 180和訪客邏輯片段182。盡管為了繪圖的清楚在圖12中將片段180和182之間隔開一定的空間,但在存儲(chǔ)器中片段180和 182是相鄰的。也就是說,訪客物理片段180的頂部與訪客邏輯片段182的底部相鄰。設(shè)備表62的條目可進(jìn)一步包括指示訪客邏輯部分182的頂部的邏輯限制(LLim)域。在其他實(shí)施方式中,訪客物理部分180和訪客邏輯部分182可不相鄰并且可在設(shè)備表62的條目中存儲(chǔ)單獨(dú)的指針以分別指示訪客物理部分180和訪客邏輯部分182。在圖12的實(shí)施方式中,訪客物理部分180可由中斷向量(或者來自外圍設(shè)備或者來自中斷重定向表64)來索引。訪客物理部分180中的每一個(gè)條目可包括對(duì)應(yīng)于訪客物理機(jī)所支持的目的地ID(例如,多達(dá)64個(gè)目的地,在圖12中編號(hào)0到63)的位向量。為了響應(yīng)物理中斷,訪客中斷管理器38可用于為對(duì)應(yīng)于目的地ID的中斷向量設(shè)置條目中的位。對(duì)廣播中斷來說,訪客中斷管理器38可用于設(shè)置條目中的每一個(gè)對(duì)應(yīng)于中斷向量的位,直到虛擬機(jī)中的vCPU的數(shù)量。訪客邏輯部分182可通過邏輯ID的簇部分以及向量來索引。簇部分是索引的最值得注意的位,因此訪客邏輯部分182被分割成對(duì)應(yīng)每一個(gè)邏輯簇的簇部分(圖12中的簇 0到簇N)。在每一個(gè)簇中,條目由中斷向量來排列,每一個(gè)條目存儲(chǔ)對(duì)應(yīng)邏輯ID向量部分的位向量。在所示的實(shí)施方式中,一個(gè)簇中可包括多達(dá)16個(gè)目的地(例如,邏輯ID的位向量部分可以是16位)。為了響應(yīng)邏輯中斷,訪客中斷管理器38可被配置為利用相應(yīng)于中斷向量的條目中的內(nèi)容來邏輯地對(duì)邏輯ID的位向量部分進(jìn)行或運(yùn)算。相應(yīng)地,圖12的實(shí)施方式可支持廣播物理中斷的記錄和邏輯中斷的記錄,所述邏輯中斷在對(duì)gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58的單個(gè)更新中具有多目的地。gAPIC的gAPIC狀態(tài)條目可包括對(duì)應(yīng)于gAPIC物理ID的訪客物理部分180的列,其與來自被gAPIC邏輯ID標(biāo)示的簇的列邏輯地進(jìn)行或運(yùn)算,該列被gAPIC邏輯ID的位向量部分中的置位所標(biāo)識(shí)。響應(yīng)使gAPIC中的訪客不活動(dòng)而更新gAPIC狀態(tài)數(shù)據(jù)結(jié)構(gòu)58包括將對(duì)應(yīng)于訪客的列中的一列調(diào)0 并將IRR寫到其他列。圖13所示為定位gAPIC狀態(tài)條目90的再一實(shí)施方式。圖13中的實(shí)施方式與圖 12中的實(shí)施方式類似,除了在訪客物理部分180和訪客邏輯部分182中的數(shù)據(jù)的排列不同之外。每一個(gè)條目對(duì)應(yīng)一個(gè)IRR,因此每一個(gè)條目為每一個(gè)中斷向量包括一個(gè)位。訪客物理部分180由中斷的物理ID來索引,同時(shí)訪客邏輯部分182由訪客的邏輯ID來索引。對(duì)應(yīng)于中斷向量的IRR位根據(jù)中斷的傳送模式被設(shè)置在邏輯部分182或物理部分180中。訪客 /VCPU的gAPIC狀態(tài)是來自對(duì)應(yīng)于分配給該訪客/VCPU的物理ID的訪客物理部分180的行與來自對(duì)應(yīng)于分配該訪客/VCPU的邏輯ID的訪客邏輯部分182的行的或運(yùn)算。現(xiàn)在翻到圖14,該圖所示為主機(jī)硬件20的另一實(shí)施方式的方塊圖。在所示的實(shí)施方式中,與圖2中的集成電路66類似的包括兩個(gè)集成電路66A-66B。因此,如圖所示,每一個(gè)集成電路可包括gAPIC,例如,集成電路66A中的34A-34D,以及集成電路66B中的34E-34G。 每一個(gè)集成電路66A-66B可包括各自的訪客中斷管理器28A-28B和IOMMU(圖14中未圖示)。至少一個(gè)集成電路66A-66B與存儲(chǔ)器56A-56B相耦合,可選的是集成電路66A-66B 二者都包括存儲(chǔ)器。集成電路66A-66B通過所示實(shí)施方式中的接口電路44C和44D來耦合。 在其他實(shí)施方式中,可提供不止兩個(gè)的集成電路66A-66B并且不同的集成電路可以以任意想要的方式互連。在一實(shí)施方式中,每一個(gè)訪客中斷管理器^A_28B可被使能并可管理指向在同一集成電路中的gAPIC 34A-34G的中斷消息。因此,訪客中斷管理器^A_28B可對(duì)訪客中斷傳送提供可擴(kuò)展解決方案。訪客中斷管理器28A-28B所使用的數(shù)據(jù)結(jié)構(gòu)可被存儲(chǔ)在一個(gè)存儲(chǔ)器中(例如,存儲(chǔ)器58A),或者每一個(gè)訪客中斷管理器28A-28B可在其自身的存儲(chǔ)器 58A-58B中具有自己的數(shù)據(jù)結(jié)構(gòu)。盡管可能存在一些對(duì)存取數(shù)據(jù)結(jié)構(gòu)的爭(zhēng)用,但在許多情況下外圍設(shè)備被分配給特定的訪客(其執(zhí)行于位于集成電路66A-66B之一中的處理器上),這樣實(shí)際爭(zhēng)用的數(shù)量可相對(duì)較小。在另一實(shí)施方式中,訪客中斷管理器^AISB中的一個(gè)可被使能并可為系統(tǒng)中的每一個(gè)gAPIC 34A-34G執(zhí)行訪客中斷傳送。這樣的實(shí)施方式在集成電路66A-66B之間的交互中可經(jīng)受更多的與中斷相關(guān)的傳送,但也可為訪客中斷管理提供中心點(diǎn)的概念簡(jiǎn)單性。現(xiàn)在翻到圖15,該圖所示為計(jì)算機(jī)可存取存儲(chǔ)介質(zhì)200的方框圖。一般來說,計(jì)算機(jī)可存取存儲(chǔ)介質(zhì)可包含任何在用以對(duì)計(jì)算機(jī)提供指令和/或數(shù)據(jù)期間可由計(jì)算機(jī)存取的存儲(chǔ)介質(zhì)。例如,計(jì)算機(jī)可存取存儲(chǔ)介質(zhì)可包含諸如磁性介質(zhì)或光學(xué)介質(zhì)的存儲(chǔ)介質(zhì), 例如,磁盤(固定的或可移動(dòng)的)、磁帶、CD-ROM或DVD-ROM、CD-R、CD-RW、DVD-R、DVD-Rff和 /或藍(lán)光關(guān)盤。存儲(chǔ)介質(zhì)可進(jìn)一步包括易失性或非易失性存儲(chǔ)介質(zhì)諸如RAM(例如,同步動(dòng)態(tài) RAM(SDRAM)、Rambus DRAM (RDRAM)、靜態(tài) RAM(SRAM),等等)、ROM、閃存、可由諸如通用串行總線(USB)接口或任何其他接口的外圍設(shè)備接口進(jìn)行存取的非易失性存儲(chǔ)器(例如,閃存),等等。存儲(chǔ)介質(zhì)可包括微機(jī)電系統(tǒng)(MEMS)以及由諸如網(wǎng)絡(luò)和/或無線鏈接的通信介質(zhì)進(jìn)行存取的存儲(chǔ)介質(zhì)。圖15中的計(jì)算機(jī)可存取存儲(chǔ)介質(zhì)200可存儲(chǔ)VMM 18, VMM 18可執(zhí)行圖8的流程圖和/或任何其他分配給VMM 18的功能。一般來說,該計(jì)算機(jī)可存取存儲(chǔ)介質(zhì)200可存儲(chǔ)任何指令組,該指令組執(zhí)行時(shí)實(shí)現(xiàn)圖8所示的流程圖的部分或全部。載體介質(zhì)可包括計(jì)算機(jī)可存取存儲(chǔ)介質(zhì)以及諸如有線或無線傳輸?shù)膫鬏斀橘|(zhì)。
一旦完全地了解上述公開的內(nèi)容,本發(fā)明的多種變化和修正對(duì)本領(lǐng)域技術(shù)人員來說是顯而易見的。其目的在于使下面的權(quán)利要求書解釋為包括所有這樣的變化和修正。
權(quán)利要求
1.一種方法,其包括接收傳送中斷的中斷消息,所述中斷源自外圍設(shè)備,所述外圍設(shè)備被分配給系統(tǒng)中多個(gè)訪客中的第一訪客;以及在存儲(chǔ)器的數(shù)據(jù)結(jié)構(gòu)中記錄與所述第一訪客相關(guān)的所述中斷,允許所述中斷在所述第一訪客執(zhí)行時(shí)被傳送到所述第一訪客。
2.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括將所述中斷傳送到第一中斷控制器,所述第一中斷控制器被分配給所述第一訪客并且是所述第一訪客中的所述中斷的目的地。
3.根據(jù)權(quán)利要求1所述的方法,其中中斷控制器狀態(tài)包括所述中斷控制器中的中斷請(qǐng)求寄存器的狀態(tài),且其中所述中斷包括中斷向量,且其中所述中斷請(qǐng)求寄存器包括與所述向量相關(guān)的位位置,且其中記錄所述中斷包括了在數(shù)據(jù)結(jié)構(gòu)的所述位位置中設(shè)置所述位。
4.根據(jù)權(quán)利要求3所述的方法,其中設(shè)置所述位是原子的。
5.根據(jù)權(quán)利要求4所述的方法,其中設(shè)置所述位包括原子地將置位或運(yùn)算到所述位位置中。
6.一種訪客中斷管理器,其被配置為接收中斷消息,所述中斷消息對(duì)應(yīng)于指向在所述系統(tǒng)上可執(zhí)行的訪客的中斷,其中所述訪客中斷管理器被配置為將所述中斷記錄于存儲(chǔ)系統(tǒng)中的數(shù)據(jù)結(jié)構(gòu)中,以確保即使所述訪客在所述系統(tǒng)中在所述中斷消息被接收時(shí)不是活動(dòng)的,所述中斷依然可被傳送到所述訪客。
7.根據(jù)權(quán)利要求6所述的訪客中斷管理器,其中所述數(shù)據(jù)結(jié)構(gòu)被配置為為給定訪客存儲(chǔ)中斷控制器的狀態(tài)的至少一部分,且其中所述狀態(tài)包括中斷請(qǐng)求寄存器的狀態(tài),且其中所述訪客中斷管理器被配置來更新所述中斷請(qǐng)求寄存器的所述狀態(tài)以記錄所述中斷。
8.根據(jù)權(quán)利要求7所述的訪客中斷管理器,其中所述中斷請(qǐng)求寄存器包括與所述中斷控制器所支持的每一個(gè)中斷向量相對(duì)應(yīng)的位,且其中所述中斷消息包括所述中斷的所述中斷向量,且其中所述訪客中斷管理器被配置來更新與來自所述中斷消息的所述中斷向量相對(duì)應(yīng)的所述位。
9.一種系統(tǒng),其包括存儲(chǔ)系統(tǒng);以及根據(jù)權(quán)利要求6-8中的任一項(xiàng)所述的訪客中斷管理器。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其進(jìn)一步包括外圍設(shè)備,其被配置來初始化所述中斷;以及輸入/輸出存儲(chǔ)管理單元(IOMMU),其被配置為接收來自所述外圍設(shè)備的所述中斷,其中所述IOMMU被配置為將所述中斷與所述訪客關(guān)聯(lián)以響應(yīng)所述存儲(chǔ)器中一個(gè)或多個(gè)第二數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù),且其中所述IOMMU被配置為傳送包含有標(biāo)識(shí)所述訪客的訪客標(biāo)識(shí)符的所述中斷消息以響應(yīng)與所述訪客相關(guān)的所述中斷。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其進(jìn)一步包括可被分配給所述訪客的中斷控制器, 其中所述中斷控制器被配置為存儲(chǔ)所述訪客的所述訪客標(biāo)識(shí)符,且其中所述中斷控制器被配置為將來自接收到的中斷消息的訪客標(biāo)識(shí)符與存儲(chǔ)在所述中斷控制器中的訪客標(biāo)識(shí)符進(jìn)行比較,且其中所述中斷控制器被配置為接受所述中斷以響應(yīng)所述訪客標(biāo)識(shí)符比較過程中的匹配。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述訪客中斷管理器被配置為將所述中斷消息傳送到所述中斷控制器以響應(yīng)來自所述IOMMU的所述中斷消息并響應(yīng)被記錄于所述數(shù)據(jù)結(jié)構(gòu)中的所述中斷。
13.一種方法,其包括在耦合到處理器的訪客中斷控制器中接收訪客中斷消息,其中所述訪客中斷消息傳送指向訪客的訪客中斷,所述訪客由主機(jī)控制并且在所述處理器上可執(zhí)行;將存儲(chǔ)在所述訪客中斷控制器中的訪客標(biāo)識(shí)符與所述訪客中斷消息中接收到的訪客標(biāo)識(shí)符進(jìn)行匹配;將所述訪客中斷控制器中的至少一個(gè)目的地標(biāo)識(shí)符與所述訪客消息中接收到的目的地標(biāo)識(shí)符進(jìn)行匹配;以及在所述訪客中斷控制器中接受所述中斷以響應(yīng)所述訪客標(biāo)識(shí)符的匹配和所述至少一個(gè)目的地標(biāo)識(shí)符的匹配。
14.根據(jù)權(quán)利要求13所述的方法,其進(jìn)一步包括在耦合到處理器的第一中斷控制器中接收第一中斷消息,所述第一中斷消息傳送第一中斷,所述第一中斷指向在所述處理器上可執(zhí)行的主機(jī);在耦合到所述處理器的第二中斷控制器中接收第二中斷消息,所述第二中斷消息傳送第二中斷,所述第二中斷指向由所述主機(jī)控制并且在所述處理器上可執(zhí)行的訪客,其中所述第二中斷控制器是權(quán)利要求1所述的訪客中斷控制器;所述第一中斷控制器傳送所述第一中斷到所述處理器以響應(yīng)接收所述第一中斷消息;以及所述第二中斷控制器傳送所述第二中斷到所述處理器以響應(yīng)接收所述第二中斷消息。
15.根據(jù)權(quán)利要求14所述的方法,其進(jìn)一步包括所述處理器執(zhí)行所述主機(jī),其中所述主機(jī)包括虛擬機(jī)監(jiān)視器; 所述處理器中斷所述虛擬機(jī)監(jiān)視器以響應(yīng)所述第一中斷;以及所述處理器在所述虛擬機(jī)監(jiān)視器執(zhí)行期間屏蔽所述第二中斷。
16.根據(jù)權(quán)利要求14所述的方法,其進(jìn)一步包括 所述處理器執(zhí)行所述訪客;所述處理器退出所述訪客以響應(yīng)所述第一中斷; 中斷所述訪客以響應(yīng)所述第二中斷;以及在與所述訪客相關(guān)的虛擬機(jī)中為所述第二中斷服務(wù)。
17.根據(jù)權(quán)利要求13-16中的任一項(xiàng)所述的方法,所述方法進(jìn)一步包括記錄與所述第一訪客相關(guān)的所述第一中斷,允許所述中斷在所述第一訪客執(zhí)行時(shí)被傳送到所述第一訪客。
18.根據(jù)權(quán)利要求17所述的方法,其進(jìn)一步包括在所述系統(tǒng)中的存儲(chǔ)系統(tǒng)中分配數(shù)據(jù)結(jié)構(gòu)以為在所述系統(tǒng)中可執(zhí)行的每一個(gè)訪客和所述訪客中的每一個(gè)中斷目的地存儲(chǔ)對(duì)應(yīng)于所述中斷控制器的中斷控制器狀態(tài)的至少一部分,其中記錄所述第一中斷包括記錄所述中斷控制器狀態(tài)中的所述第一中斷,所述中斷控制器狀態(tài)對(duì)應(yīng)于所述第一訪客和所述中斷目的地。
19.根據(jù)權(quán)利要求17或18所述的方法,其中所述記錄是原子的。
20.根據(jù)權(quán)利要求18或19所述的方法,其中所述中斷控制器狀態(tài)包括對(duì)每一個(gè)訪客中的每一個(gè)目的地的中斷請(qǐng)求狀態(tài),且其中所述中斷請(qǐng)求狀態(tài)標(biāo)識(shí)了哪些中斷已經(jīng)在相應(yīng)訪客中的相應(yīng)中斷控制器處被請(qǐng)求,且其中所述記錄包括更新對(duì)應(yīng)于第一訪客中第一目的地的所述數(shù)據(jù)結(jié)構(gòu)中的所述中斷請(qǐng)求狀態(tài)。
21.根據(jù)權(quán)利要求20所述的方法,其中每一個(gè)中斷都具有聯(lián)合傳送模式,其中所述數(shù)據(jù)結(jié)構(gòu)包括對(duì)應(yīng)于第一傳送模式的第一片段和對(duì)應(yīng)于第二傳送模式的第二片段,且其中每一個(gè)目的地和每一個(gè)訪客的所述中斷請(qǐng)求狀態(tài)包括存儲(chǔ)在每一個(gè)所述第一片段和每一個(gè)所述第二片段中的數(shù)據(jù)。
22.一種方法,其包括接收傳送中斷的中斷消息,所述中斷源自外圍設(shè)備,所述外圍設(shè)備被分配給系統(tǒng)中多個(gè)訪客中的第一訪客;記錄與所述第一訪客相關(guān)的所述中斷,允許所述中斷在所述第一訪客執(zhí)行時(shí)被傳送到所述第一訪客;以及將所述中斷傳送到第一中斷控制器,所述第一中斷控制器被分配給所述第一訪客并且是所述第一訪客中的所述中斷的目的地。
23.—種中斷控制器,其包括訪客標(biāo)識(shí)符寄存器,其被配置為存儲(chǔ)標(biāo)識(shí)訪客的訪客標(biāo)識(shí)符,所述訪客在與所述中斷控制器耦合的處理器上可執(zhí)行,所述訪客由在所述處理器上可執(zhí)行的主機(jī)來控制;至少一個(gè)附加寄存器,其被配置為存儲(chǔ)目的地標(biāo)識(shí)符;以及控制電路,其被耦合到所述訪客標(biāo)識(shí)符寄存器和所述至少一個(gè)附加寄存器,其中所述控制電路被配置為接收對(duì)所述處理器的中斷指示,其中所述指示包括接收到的訪客標(biāo)識(shí)符和接收到的目的地標(biāo)識(shí)符,且其中所述控制電路被配置為代表所述處理器來接受所述中斷以響應(yīng)所述訪客標(biāo)識(shí)符與所述接收到的訪客標(biāo)識(shí)符的匹配以及所述目的地標(biāo)識(shí)符與所述接收到的目的地標(biāo)識(shí)符的匹配。
24.根據(jù)權(quán)利要求23所述的中斷控制器,其中所述至少一個(gè)附加寄存器包括第一寄存器,其被配置為存儲(chǔ)邏輯目的地標(biāo)識(shí)符;以及第二寄存器,其被配置為存儲(chǔ)物理目的地標(biāo)識(shí)符;其中所述控制電路被配置為檢測(cè)所述接收到的目的地標(biāo)識(shí)符與所述物理目的地標(biāo)識(shí)符之間的匹配以響應(yīng)所述接收到的目的地標(biāo)識(shí)符與所述物理目的地標(biāo)識(shí)符的比較,且其中所述邏輯目的地標(biāo)識(shí)符包括簇標(biāo)識(shí)符和標(biāo)識(shí)所述簇的成員的位向量,且其中所述控制電路被配置為檢測(cè)所述接收到的目的地標(biāo)識(shí)符與所述邏輯目的地標(biāo)識(shí)符之間的匹配以響應(yīng)所述簇標(biāo)識(shí)符與所述接收到的目的地標(biāo)識(shí)符中相應(yīng)部分的比較并進(jìn)一步響應(yīng)所述邏輯目的地標(biāo)識(shí)符位向量中的置位也被設(shè)置在接收到的目的標(biāo)識(shí)符的相應(yīng)的位向量部分。
25.根據(jù)權(quán)利要求M所述的中斷控制器,其中即使所述物理目的地標(biāo)識(shí)符與所述接收到的目的地標(biāo)識(shí)符不匹配,所述控制電路還是被配置為接受中斷以響應(yīng)被標(biāo)識(shí)為廣播的中斷。
26.—種系統(tǒng),其包括處理器;第一中斷控制器,其與所述處理器耦合并被配置為用信號(hào)通知所述處理器中斷以響應(yīng)第一中斷消息,所述第一中斷消息傳送指向所述系統(tǒng)中的主機(jī)的第一中斷;第二中斷控制器,其與所述處理器耦合并被配置為用信號(hào)通知所述處理器中斷以響應(yīng)第二中斷消息,所述第二中斷消息傳送指向訪客的第二中斷,所述訪客由所述主機(jī)控制且在所述處理器上可執(zhí)行,其中所述第二中斷控制器是如權(quán)利要求23-25中的任一項(xiàng)所述的中斷控制器。
27.根據(jù)權(quán)利要求沈所述的系統(tǒng),其中所述處理器在使用過程中被配置為中斷所述主機(jī)來為所述第一中斷服務(wù)以響應(yīng)所述主機(jī)在所述處理器上執(zhí)行期間來自所述第一中斷控制器的中斷信號(hào)。
28.根據(jù)權(quán)利要求27所述的系統(tǒng),其中所述處理器在使用過程中被配置為退出所述訪客到所述主機(jī)來為所述第一中斷服務(wù)以響應(yīng)所述訪客在所述處理器上執(zhí)行期間來自所述第一中斷控制器的中斷信號(hào)。
29.根據(jù)權(quán)利要求沈-28中的任一項(xiàng)所述的系統(tǒng),其中所述處理器在使用過程中被配置為中斷所述訪客并在與所述訪客相關(guān)的虛擬機(jī)中為所述第二中斷服務(wù)以響應(yīng)在所述訪客執(zhí)行期間來自所述第二中斷控制器的中斷信號(hào)。
30.根據(jù)權(quán)利要求觀所述的系統(tǒng),其中所述處理器在使用過程中被配置為屏蔽由所述第二中斷控制器請(qǐng)求的所述中斷直到所述訪客被執(zhí)行以響應(yīng)在所述主機(jī)執(zhí)行期間來自所述第二中斷控制器的中斷信號(hào)。
31.根據(jù)權(quán)利要求沈-30中的任一項(xiàng)所述的系統(tǒng),其進(jìn)一步包括存儲(chǔ)系統(tǒng);以及訪客中斷管理器,其被配置為接收中斷消息,所述中斷消息對(duì)應(yīng)于指向在所述系統(tǒng)上可執(zhí)行的訪客的中斷,其中所述訪客中斷管理器被配置為將所述中斷記錄于所述存儲(chǔ)系統(tǒng)中的數(shù)據(jù)結(jié)構(gòu)中,以確保即使所述訪客在所述系統(tǒng)中在所述中斷消息被接收時(shí)不是活動(dòng)的,所述中斷依然可被傳送到所述訪客。
32.根據(jù)權(quán)利要求31所述的系統(tǒng),其進(jìn)一步包括外圍設(shè)備,其被配置來初始化所述中斷;以及輸入/輸出存儲(chǔ)管理單元(IOMMU),其被配置為接收來自所述外圍設(shè)備的所述中斷,其中所述IOMMU被配置為將所述中斷與所述訪客關(guān)聯(lián)以響應(yīng)所述存儲(chǔ)器中一個(gè)或多個(gè)第二數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù),且其中所述IOMMU被配置為傳送包含有標(biāo)識(shí)所述訪客的訪客標(biāo)識(shí)符的所述中斷消息以響應(yīng)與所述訪客相關(guān)的所述中斷。
33.根據(jù)權(quán)利要求32所述的系統(tǒng),其中所述訪客中斷管理器被配置為將所述中斷消息傳送到所述第二中斷控制器以響應(yīng)來自所述IOMMU的所述中斷消息并響應(yīng)被記錄于所述數(shù)據(jù)結(jié)構(gòu)中的所述中斷。
34.根據(jù)權(quán)利要求31-33中的任一項(xiàng)所述的系統(tǒng),其中所述數(shù)據(jù)結(jié)構(gòu)包括多個(gè)條目,每個(gè)條目被配置為為給定訪客存儲(chǔ)中斷控制器的狀態(tài)的至少一部分,且其中所述條目中的所述狀態(tài)包括中斷請(qǐng)求寄存器的狀態(tài),且其中所述訪客中斷管理器被配置來更新所述中斷請(qǐng)求寄存器的所述狀態(tài)以記錄所述中斷。
35.根據(jù)權(quán)利要求34所述的系統(tǒng),其中所述更新是原子的。
36.根據(jù)權(quán)利要求34或35所述的系統(tǒng),其中每一個(gè)中斷都具有聯(lián)合傳送模式,且其中所述數(shù)據(jù)結(jié)構(gòu)包括對(duì)應(yīng)于第一傳送模式的第一片段和對(duì)應(yīng)于第二傳送模式的第二片段,且其中每一個(gè)目的地和每一個(gè)訪客的所述中斷請(qǐng)求狀態(tài)包括存儲(chǔ)在每一個(gè)所述第一片段和每一個(gè)所述第二片段中的數(shù)據(jù)。
37.根據(jù)權(quán)利要求36所述的系統(tǒng),其中所述第一傳送模式是物理的,且其中所述第一片段包括具有對(duì)應(yīng)于物理標(biāo)識(shí)符的行的第一表,所述物理標(biāo)識(shí)符為物理傳送模式中斷標(biāo)識(shí)目的地,且其中所述訪客中斷管理器被配置來更新所述行的一行。
38.根據(jù)權(quán)利要求36或37所述的系統(tǒng),其中所述第二傳送模式是邏輯的,且其中為邏輯傳送模式中斷標(biāo)識(shí)一個(gè)或多個(gè)目的地的邏輯標(biāo)識(shí)符包括簇標(biāo)識(shí)符和指示所述簇成員的標(biāo)識(shí)位向量,且其中所述第二片段包括具有與每一個(gè)簇相關(guān)的子片段的第二表,且其中所述子片段中的行對(duì)應(yīng)于所述簇的成員,且其中所述訪客中斷管理器被配置來更新所述第二表中的所述行的一行。
39.根據(jù)權(quán)利要求36所述的系統(tǒng),其中所述第一傳送模式是物理的,且其中所述第一片段包括具有對(duì)應(yīng)于中斷向量的行的第一表,且其中每一行中的每一個(gè)位對(duì)應(yīng)于不同的物理標(biāo)識(shí)符,所述物理標(biāo)識(shí)符為物理傳送模式中斷標(biāo)識(shí)目的地,且其中所述訪客中斷管理器被配置來更新所述第一表的一列。
40.根據(jù)權(quán)利要求39所述的系統(tǒng),其中所述第二傳送模式是邏輯的,且其中為邏輯傳送模式中斷標(biāo)識(shí)一個(gè)或多個(gè)目的地的邏輯標(biāo)識(shí)符包括簇標(biāo)識(shí)符和指示所述簇成員的標(biāo)識(shí)位向量,且其中所述第二片段包括具有與每一個(gè)簇相關(guān)的子片段的第二表,且其中每一行中的每一個(gè)位對(duì)應(yīng)于所述簇的不同成員,且其中所述訪客中斷管理器被配置來更新所述第二表中的一列。
全文摘要
在一實(shí)施方式中,系統(tǒng)包括處理器、與該處理器耦合的第一中斷控制器和第二中斷控制器。該第一中斷控制器被配置為用信號(hào)通知處理器中斷以對(duì)接收第一中斷消息作出響應(yīng),該第一中斷消息傳送指向系統(tǒng)中的主機(jī)的第一中斷。第二中斷控制器被配置為用信號(hào)通知處理器中斷以對(duì)接收第二中斷消息作出響應(yīng),該第二中斷消息傳送指向訪客的第二中斷,該訪客由主機(jī)控制并且在處理器上可執(zhí)行。
文檔編號(hào)G06F9/48GK102341783SQ201080009842
公開日2012年2月1日 申請(qǐng)日期2010年1月26日 優(yōu)先權(quán)日2009年1月26日
發(fā)明者伊麗莎白·M·庫珀, 唐納德·W·麥考利, 本杰明·C·塞雷布林, 約翰·F·維德伊恩, 馬克·D·胡梅爾 申請(qǐng)人:超威半導(dǎo)體公司