欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

中斷虛擬化的制作方法

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

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