TWI442322B - 在虛擬環境中對中斷結束訊息之延遲處理 - Google Patents

在虛擬環境中對中斷結束訊息之延遲處理 Download PDF

Info

Publication number
TWI442322B
TWI442322B TW098118060A TW98118060A TWI442322B TW I442322 B TWI442322 B TW I442322B TW 098118060 A TW098118060 A TW 098118060A TW 98118060 A TW98118060 A TW 98118060A TW I442322 B TWI442322 B TW I442322B
Authority
TW
Taiwan
Prior art keywords
interrupt
eoi
virtual
memory
hypervisor
Prior art date
Application number
TW098118060A
Other languages
English (en)
Other versions
TW201003526A (en
Inventor
Shuvabrata Ganguly
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of TW201003526A publication Critical patent/TW201003526A/zh
Application granted granted Critical
Publication of TWI442322B publication Critical patent/TWI442322B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/542Intercept

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Description

在虛擬環境中對中斷結束訊息之延遲處理
本發明係有關於在虛擬環境中對中斷結束訊息之延遲處理。
硬體層級虛擬化是電腦產業演進的趨勢之一。在此種環境中,作業系統係在虛擬機器監視器或超管理器(hypervisor)上方執行,在此種情形中,訪客作業系統(operating system,OS)和電腦硬體的互動係由虛擬層居間進行。這使得多個訪客作業系統可同時在單一電腦上執行,因而可在同一個實體機器上執行多個工作負載。每一工作負載可在一不同的訪客OS上執行,且每一訪客OS之間有良好的隔離。上述技術尤其適用於資訊技術(information technology,IT)部門、或需要執行多工作負載或多伺服器應用程式的任何作業中。
利用安全且有效率的方法將硬體資源分配給每一訪客OS,允許讓多訪客OS在單一電腦上執行。傳統上,超管理器可藉由以虛擬硬體裝置之形式將硬體裝置公開給每一訪客OS,來分配硬體資源。對某些實體硬體裝置而言,可藉由中介(mediating)對實體硬體裝置的直接存取而將其虛擬化。對其他實體硬體裝置而言,可藉由攔截對底層裝置的要求,以及以一種重複的方式利用底層 硬體裝置來實作所要求的功能,而將其虛擬化。另一些實體硬體裝置則是使用完全模擬的裝置。隨著用以實作虛擬硬體裝置必須之介入與模擬的程度不同,在一虛擬硬體裝置上執行一功能所耗費的成本也可能有很大的差異。雖然中介對於實體硬體裝置的存取所增加的運算成本可能落在合理的百分比之內,實體硬體裝置的軟體模擬則可能所費不貲。
舉例來說,當訪客OS存取虛擬硬碟以讀取資料區塊時,超管理器可攔截函式呼叫。超管理器在實作上述功能時,可允許對硬碟進行直接存取,或者是選擇性地藉著從含有虛擬化硬碟之內容的檔案來讀取資料區塊。上述兩種層級的超管理器介入可能會適度地增加完成該函式呼叫必須的系統資源。另一方面,硬體裝置之虛擬例如進階可程式中斷控制器(advanced programmable Interrupt controller,APIC)要存取一實體APIC時,可能必須需要多重系統資源。
本說明書描述之技術可用以延遲地將中斷結束(End Of Interrupt,EOI)訊息由訪客OS通訊傳輸至在超管理器中執行的輸入/輸出進階可程式中斷控制器(I/O APIC)虛擬模組。延遲通訊EOI使得需要寫入至記憶體,以指出已發生了EOI,並允許I/O APIC虛擬模組在稍後的時 間點讀取該記憶體。在某些實作中,當訪客OS正在其上執行的虛擬化CPU中發生了EOI時,會使用由超管理器與訪客OS所共享的記憶體頁面來進行延遲通訊。在其他實作中,當可延遲通訊EOI時,亦可利用超管理器的共享記憶體頁面來和訪客OS進行通訊。某些實作中利用執行一已啟發(enlightened)EOI處理常式(handler)的已啟發訪客OS,並根據超管理器的指示,來處理EOI訊息。因而,這些技術可允許超管理器處理許多EOI訊息,而不會發生超管理器攔截並模擬由訪客OS產生的EOI訊息時所的非必要成本。
概述
下列討論係有關於能夠將來自訪客OS的中斷結束(EOI)訊息延遲通訊至輸入/輸出進階可程式中斷控制器(I/O APIC)虛擬模組的技術。這些技術使得訪客OS能夠正確且更有效率地處理中斷要求,而不會非必要地引起超管理器截獲與攔截一EOI通訊。這些技術可利用共享記憶體頁面,以利於超管理器及訪客OS間之通訊。當必須立刻將EOI傳輸至超管理器時候,或者是當超管理器可延遲擷取EOI的時候,超管理器可利用共享記憶體頁面和訪客OS進行通訊。同時,當超管理器已指出可延遲處理一EOI,且當執行訪客OS的虛擬化CPU發 出一EOI時,訪客OS可利用共享記憶體來指示說已經發生了一EOI。當超管理器基於其他理由而執行時,其可檢查此一指示,以節省截獲與攔截當前EOI傳輸所需的成本。
在下文中,第一部分的標題為「例示虛擬化作業環境」,其中說明了可進行上述與其他動作的環境。其後為「例示虛擬化I/O APIC環境與中斷之處理方法」,該部分描述了可如何處理虛擬I/O APIC所接收的中斷。第三部分為「中斷的例示處理」,說明了在處理中斷時,虛擬I/O APIC可採行的步驟。第四部分的標題為「決定何時應立刻將EOI通訊傳輸至超管理器」,其中描述了在何種情形下,超管理器可指示訪客OS應立刻將該EOI訊息傳送至超管理器。第五部分的標題為「圖形化中斷呈現」,其中說明了兩種常見的中斷類型。
上述簡短的介紹以及下列部分是為了有利於讀者的理解,且其本意並非用以限制申請專利範圍之範疇。
例示虛擬化作業環境
下文描述了一例示虛擬作業環境,以利讀者瞭解可運用本發明各種技術的某些方式。下文所述的環境僅為一實施例而已,其用意並非將這些技術的應用限定於任何特定作業環境中。可使用其他環境,而不致悖離所主張申請標的之精神與範圍。
第1圖繪示了此類虛擬化環境100,其包括可供使用 者104操作的運算裝置102。雖然第1圖中所繪示的運算裝置102為伺服器電腦,其亦可以是桌上型電腦、膝上型電腦或任何其他運算裝置。在一種實作中,運算裝置102可同時在超管理器112(亦稱為虛擬機器管理員)的上方執行一根作業系統(root operation system)106、一訪客作業系統108與一訪客作業系統110。上述作業系統可以是任何版本的Microsoft Windows®、Linux®、Sun Solaris®或任何其他作業系統。額外地或替代性地,亦可僅在運算裝置102上執行多個訪客作業系統。
在一實作中,超管理器112可直接在與運算裝置102耦接之實體硬體裝置上執行,以管理並分配這些實體硬體裝置。額外地或替代性地,根OS 106可擁有耦接至運算裝置102的實體硬體裝置。在一實作中,運算裝置102包含實體中央處理單元(CPU)114,其耦接至實體記憶體118。實體CPU 114可包含實體區域進階可程式中斷控制器(APIC)116,且可耦接至實體輸入/輸出進階可程式中斷控制器(I/O APIC)122。
硬體裝置可要求CPU 114中斷其目前的執行作業,以服務提出中斷的硬體裝置。傳統上,有兩種中斷類型:層級觸發中斷與邊緣觸發中斷。邊緣觸發中斷通稱為「射後不理(fire and forget)中斷」,在此種類型中,提出中斷的裝置傳輸一邊緣觸發中斷至I/O APIC時,會在一線(line)上宣告(assert)一正電壓,接著立刻反宣告(de-asserting)該線。此種電壓的改變會產生一種邊緣, 而該邊緣會被APIC解讀為一種中斷。一旦傳送了該中斷,由該裝置到APIC的該線仍保持被反宣告的狀態。層級觸發中斷的初始化也是藉由在將提出中斷的裝置連接至APIC的一線上施加正電壓來進行。不像邊緣觸發中斷,當傳送層級觸發中斷時,提出中斷的裝置不會反宣告該線,直到提出中斷的裝置接收到CPU發出的指示表示已處理該中斷為止。因此,CPU傳送EOI的一目的為向提出中斷的裝置發出訊號以表示已經完成了該中斷,而使得宣告裝置可反宣告該線。層級觸發中斷常運用於某些匯流排上,例如PCI匯流排,而使得在處理過程中,不會遺失該中斷。若邊緣觸發中斷的第一邊緣與第二邊緣重疊,則邊緣觸發中斷可能會遺失,在此種情形中,進行接收的I/O APIC就不會看到上述第二邊緣。
實體I/O APIC 122可由硬體裝置接收中斷訊號,上述硬體裝置例如硬碟機124或序列埠126。舉例來說,硬碟機124可利用一中斷以向實體CPU 114指出已完成了非同步DMA傳輸。在此種情形中,硬碟機124傳送一中斷給實體I/O APIC 122,以要求實體CPU 114執行與硬碟機124相關聯的中斷要求處理常式。之後,實體I/O APIC 122可中斷實體CPU 114,而使得實體CPU 114儲存目前執行內容,且開始執行與硬碟機124相關聯的中斷要求處理常式。
實體I/O APIC 122可具有多個接腳(pin),而可在該些接腳上接收中斷要求訊號。在一實作中,實體I/O APIC 122可具有255個接腳,其中每一接腳對應至從0到255的一向量;當然,亦可考慮各種具有不同接腳數目的I/O APIC。在一實作中,作業系統可指派一向量給每一硬體裝置,其中指派給具有較高優先順序之裝置的向量數目大於指派給具有較低優先順序之裝置的向量數目。在一實作中,可利用指派給硬體裝置的向量來識別來自一硬體裝置的中斷要求。下文參照第2圖詳細描述I/O APIC的作業。
額外地或替代性地,I/O APIC可允許處理器間中斷(inter-processor interrupt,IPI)。實體I/O APIC 122可提供一機制,以供實體CPU 114將一中斷傳送至另一CPU,該另一CPU可能是一多處理器系統的一部份。為了進行IPI,CPU可寫入至中斷控制暫存器(Interrupt Control Register,ICR),ICR接著可將一中斷傳送至目的地處理器。額外地或替代性地,實體CPU 114可透過ICR要求針對其本身的中斷。
在一實作中,實體CPU 114可包含實體區域APIC 116。實體區域APIC 116可至少包含255個接腳,每一接腳對應於從0到255的一向量。在其他具體實施例中,亦可考慮不同數目的接腳,上述接腳數目通常對應於實體I/O APIC 122所含的接腳數目。實體區域APIC 116可接收來自實體I/O APIC 122的訊息,並傳送訊息至實體I/O APIC 122。
在一實作中,超管理器112可將耦接至運算裝置102 的實體裝置虛擬化,並將該虛擬硬體裝置呈現給在超管理器112上方執行的每一訪客OS。在一實作中,虛擬硬體裝置提供的功能和非虛擬之對應裝置所提供的功能相同或近乎相同。在一實作中,根OS 106擁有包含於運算裝置102中的所有實體硬體裝置,例如實體CPU 114、實體記憶體118、實體I/O APIC 122、硬碟機124與序列埠126。在此具體實施例中,根OS 106提供了虛擬硬體裝置給其他訪客作業系統。額外地或替代性地,超管理器112可擁有包含於運算裝置102中的所有實體硬體裝置,且可提供虛擬硬體裝置給訪客作業系統108與110。
在一實作中,根OS 106分別向訪客OS 108與訪客OS 110提供了虛擬CPU 128與虛擬CPU 132。虛擬CPU 128與虛擬CPU 132可分別包含虛擬區域APIC 130(virtual local APIC 130)與虛擬區域APIC 134。在一具體實施例中,虛擬CPU 128與虛擬CPU 132為薄型包裝(thinly-wrapped)的虛擬裝置,其允許訪客OS直接存取底層實體CPU 114。在一具體實施例中,可在根OS 106中的軟體中模擬虛擬區域APIC 130與虛擬區域APIC 134。由於模擬的本質,利用虛擬區域APIC 130與134來接收與處理中斷,相較於利用實體區域APIC 116,前者所耗費的成本低了許多。
額外地或替代性地,記憶體虛擬模組136可提供每一訪客OS一虛擬記憶體,例如與訪客OS 108相關聯的虛擬記憶體138以及與訪客OS 110相關聯的虛擬記憶體 140。可分別將虛擬CPU 128與虛擬CPU 132耦接至虛擬I/O APIC 142與虛擬I/O APIC 144。類似上述虛擬區域APIC,可利用I/O APIC虛擬模組154在根OS 106或超管理器112中來模擬虛擬I/O APIC。
在一實作中,硬體裝置產生之中斷係由虛擬I/O APIC 142所接收、被轉送至虛擬區域APIC 130、且由虛擬CPU 128處理。當接收到中斷時,虛擬CPU 128會將其執行內容改變為與該中斷相關聯的服務常式。服務常式可負責處理中斷,在一實作中,上述處理係藉由和傳送該中斷的裝置進行通訊。一旦虛擬CPU 128已結束執行服務常式,虛擬CPU 128會利用中斷結束(EOI)確認以向虛擬I/O APIC 142通知說虛擬CPU 128已完成了中斷。
在傳統電腦中,CPU例如實體CPU 114會透過記憶體對應I/O頁面介面120將EOI訊息傳輸至實體I/O APIC 122。在傳統電腦上,記憶體對應I/O頁面介面120允許實體CPU 114與實體I/O APIC 122進行通訊,其係藉由寫入至看來為一記憶體頁面中,但實際上是一種用以和實體I/O APIC 122進行通訊的方法。在一虛擬化環境,多虛擬CPU可分別存取一不同的虛擬記憶體,每一虛擬記憶體係由單一實體記憶體118所支援。若允許多虛擬CPU同時區域存取實體I/O APIC 122,可能導致實體I/O APIC 122與整個運算裝置102當機。為了防止上述情形,I/O APIC虛擬模組154會在記憶體對應I/O頁面148與記憶體對應I/O頁面150上安裝記憶體攔截模組146, 而使得I/O APIC虛擬模組154可截獲一虛擬CPU欲與實體I/O APIC 122進行通訊的任何嘗試。之後,在根OS 106或者是超管理器112的內容中執行的APIC虛擬軟體154可在軟體中模擬實體APIC。
舉例來說,虛擬CPU 128可藉由寫入至記憶體對應I/O頁面148而發出一自我中斷(self interrupt)。虛擬CPU 128可經程式化以期待藉由寫入至該記憶體頁面將可通訊傳輸至實體I/O APIC 122。反之,在根OS 106中執行的I/O APIC虛擬模組154則會截獲欲由實體I/O APIC 122接收之記憶體作業。之後I/O APIC虛擬模組154可模擬實體I/O APIC 122。在自我中斷的情形中,I/O APIC虛擬模組154可立刻向超管理器112呼叫,以向同樣是由軟體中模擬出來的虛擬區域APIC 130發出中斷。在此種情形中,可在不利用實體I/O APIC 122或實體區域APIC 116的情形下,處理虛擬CPU 128發出的自我中斷。
在另一具體實施例中,虛擬CPU 128可向多處理器(MP)系統中的一或所有處理器(例如虛擬CPU 132)發出處理器間中斷(IPI)。在此種情形中,根OS 106中的記憶體攔截模組146可截獲欲發給實體I/O APIC 122之指令。與上述自我中斷之處理相似,I/O APIC虛擬模組154可向超管理器呼叫,以向虛擬區域APIC 134發出一中斷。
在一實作中,虛擬I/O APIC 142接收的中斷可觸發記憶體攔截模組146中的一攔截。之後,I/O APIC虛擬模 組154可處理接收到的中斷,其模擬虛擬I/O APIC 142。這些攔截可能經常發生,有時候可能每秒發生數萬次。虛擬I/O APIC 142接收與處理的每一個中斷隨後可跟著一個由虛擬CPU 128傳送至虛擬I/O APIC 142的EOI。在原生系統上,發出EOI的成本不高,因為實體CPU 114僅需告知實體I/O APIC 122即可。然而,在虛擬化環境中,除了進行攔截所需的CPU循環之外可能需要數千個實體CPU循環(cycle)才能在I/O APIC虛擬模組154中模擬一個EOI。
在一實作中,超管理器112可將一段資訊放入一共享頁面152中,以指出訪客OS 108是否應傳送一EOI至虛擬I/O APIC 142。若超管理器112告知訪客OS 108應傳送該EOI,訪客OS 108會在嘗試和虛擬I/O APIC 142進行通訊時,藉由寫入記憶體對應I/O頁面148而產生一攔截。另一方面,若超管理器112經由共享記憶體152告知訪客OS 108應延遲處理該EOI,訪客OS 108可能不會產生一攔截,取而代之地,其可寫入至共享頁面152,以指出已發生了EOI。
一旦訪客OS 108已藉由在共享記憶體152中設定一旗標來指出已發生一EOI時,超管理器112可於稍後讀取該共享記憶體152,以決定是否已產生一EOI。若超管理器112決定虛擬CPU 128已產生一EOI,超管理器112可通知I/O APIC虛擬模組154,I/O APIC虛擬模組154可如下文參照第2圖所述之方式來更新其狀態。在此具 體實施例中,會將已發生EOI的事實傳輸至I/O APIC虛擬模組154,其可實作虛擬I/O APIC 142而不必要地產生可能非常耗時的攔截。
例示虛擬化I/O APIC環境與中斷之處理方法
第2圖繪示一例示I/O APIC環境200。超管理器202執行於實體電腦硬體上方,該超管理器202使得可在虛擬CPU 206之上執行訪客OS 204。虛擬I/O APIC 208露出了多個接腳210(a)、210(b)、...、210(n),這些接腳可連接至硬體裝置例如虛擬序列埠232與虛擬網路卡234。訪客OS 204可指派優先順序或向量給每一硬體裝置。在一實作中,虛擬I/O APIC 208可具有255個接腳,且訪客OS指派給硬體裝置的優先順序可由0(最低優先順序)至255(最高優先順序)。在一具體實施例中,指派給虛擬序列埠232的優先順序為0,而指派給虛擬網路卡234的優先順序為3。
虛擬I/O APIC 208可耦接至虛擬CPU 202,該虛擬CPU 202含有虛擬區域APIC 214。在一實作中,可將虛擬CPU 202連接至虛擬記憶體216,該虛擬記憶體216含有一共享頁面218與一記憶體對應I/O頁面214。額外地,虛擬記憶體216可包含一虛擬序列埠中斷服務常式222(a)與一虛擬網路卡中斷服務常式222(b)。
虛擬I/O APIC 208可包含兩個暫存器,每一暫存器含有用於每一接腳210之一位元。在一實作中,上述二暫 存器各含有256位元。一暫存器可以是中斷要求暫存器(Interrupt Request Register,IRR)224,其可含有位元228(a)...228(n)。另一暫存器可為中斷服務暫存器(Interrupt Service Register,ISR)226,其可含有位元230(a)...230(n)。在一實作中,虛擬I/O APIC 208可由位於接腳210(a)上的虛擬序列埠232來接收一中斷。在一實作中,可將對應於用以接收中斷之接腳210(a)的位元228(a)設定為1,以指出已經接收了中斷。之後,可將中斷轉送至位於虛擬CPU 206上的虛擬區域APIC 214,且虛擬區域APIC 214可接著「中斷」虛擬CPU 206的執行。
一旦虛擬區域APIC 214已經「中斷」了虛擬CPU 206,虛擬CPU 206可向虛擬I/O APIC 208提出認可,以指出其已經接收了中斷,並導致虛擬I/O APIC 208藉由將位元228(b)的數值設定為0而清除該位元228(b)。虛擬I/O APIC 208亦可設定ISR 226中與接收了中斷的接腳相對應的該位元。在此種情形中,可將位元230(a)設定為1。一旦清除了位元228(a)並設定了位元230(a)之後,虛擬CPU 206就會開始進行處理中斷的處理方法。當虛擬CPU 206正在處理中斷時,虛擬I/O APIC 208可在接腳210(a)上接收第二中斷。
當接收到中斷後,虛擬CPU 206可儲存其目前執行內容(也就是暫存器的目前狀態),並呼叫與該中斷相關聯的虛擬序列埠中斷服務常式222(a)。一旦虛擬CPU 206 已結束執行虛擬序列埠中斷服務常式222(a),虛擬CPU 206可藉由寫入至記憶體對應I/O頁面148而通知虛擬I/O APIC 208,上述通知可導致超管理器202進行攔截。在一實作中,上述通知包含一中斷結束確認或EOI。 EOI可通知虛擬I/O APIC 208,以指出虛擬CPU 206已經完成了對最高優先順序中斷的處理,上述中斷也是最近完成的待處理中斷。在回應EOI時,虛擬I/O APIC 208會清除ISR中的最高優先順序位元。在上述實施例中,虛擬I/O APIC 208可經除位元230(b)。
在一具體實施例中,訪客OS 204可由超管理器202設定的旗標而推論出是否應立刻傳送一EOI或是否應延遲評估該EOI。超管理器202可基於虛擬I/O APIC 203的狀態來決定是否必須應立刻傳送一EOI。下文提出三種應立刻傳送一EOI的例示性情境。
在一情境中,兩個裝置可傳送一中斷至虛擬I/O APIC 203。藉由例示,在同一時脈循環中,網路卡234與序列埠232可分別傳送中斷向量X與中斷向量Y。在一實作中,中斷向量Y的優先順序大於中斷向量X的優先順序。在一實作中,虛擬I/O APIC 208可將IRR 224中與中斷X相對應的一位元設定為1,且亦可將IRR 224中與中斷Y相對應的一位元設定為1。之後,在每一個時脈循環,虛擬I/O APIC 208可決定在IRR 224暫存器中具有最高設定數值的位元。之後,虛擬I/O APIC 208可透過虛擬區域APIC 214並利用中斷Y(具有最高優先順 序的中斷)來中斷CPU。一旦虛擬CPU 206認可了對中斷Y的接收,虛擬I/O APIC 208可將對應於Y的ISR位元設定為1,並將對應於Y的IRR位元設定為0,以指出Y正由虛擬CPU 203處理中。
繼續上述情境,中斷向量X仍然在等候較高優先順序的中斷Y結束,且會持續等候,直到虛擬CPU 206向虛擬I/O APIC 208指出已經完成Y為止。若中斷Y是虛擬I/O APIC 203中唯一的待處理中斷時,則超管理器202會透過共享頁面218指出訪客OS可延遲評估該EOI。然而,因為中斷X正在等候被處理,延遲更新該EOI可能會延遲處理中斷X的時間,因而降低系統效能。因而,當超管理器202透過I/O APIC虛擬模組154偵測到在虛擬I/O APIC 203處有第二個優先順序較低的中斷在等候處理時,超管理器202可透過共享頁面218指出必須立即傳輸虛擬CPU 206所產生之任何EOI。
另一種常見的情境是發生於當虛擬CPU 206正在處理第一中斷,且虛擬I/O APIC 203接收到具有較高優先順序的第二中斷時。在此種情形中,虛擬I/O APIC 208可利用ISR暫存器226來維持在虛擬CPU 206上執行的巢狀中斷處理常式的一堆疊。作為例示,若虛擬CPU 206正在處理中斷X,且虛擬I/O APIC 208接收到了中斷Y,而Y的優先順序高於X,則虛擬I/O APIC 208會利用中斷Y來中斷CPU。
中斷Y可在虛擬CPU 206完成X的服務要求處理常式 執行之前,確切地中斷上述X的服務要求處理常式之執行。將X的服務要求處理常式放置於服務要求處理常式之一堆疊之上。一旦已將中斷要求X與Y兩者傳送至虛擬CPU 206之後,會將與這些中斷相關聯的IRR位元設定為0,而將與這些中斷相關聯的ISR位元設定為1,以指出已將上述兩種中斷傳送至虛擬CPU 206。在一具體實施例中,共享頁面206可含有一單一位元以指出是否發生一EOI。因為有兩種待處理的中斷,且僅有一資訊位元,使得超管理器202無法決定該EOI是否已由上述中斷其中之一或兩者所產生。因而,訪客OS 204會經設定在當上述兩種中斷中第一個中斷完成的時候,傳送一EOI。
繼續本實施例,一旦完成了針對中斷Y的服務要求處理常式之後,虛擬CPU 206會將一EOI傳回虛擬化I/O APIC 208,因為在ISR 226中有至少兩個經設定的位元。虛擬化I/O APIC 208會清除與中斷Y相關聯的ISR位元,且CPU會繼續處理針對中斷X的服務要求處理常式。在處理了中斷Y的EOI之後,虛擬I/O APIC 208可重新排定優先順序,並決定在虛擬CPU 206僅有一個待處理中斷。相對應地,超管理器可設定共享頁面218中之位元以指出訪客OS可延遲評估一EOI。
層級觸發中斷至少包含第三種情境,其會要求訪客OS立刻將一EOI傳送至超管理器以供處理。層級觸發中斷不可延遲評估,這是因為觸發中斷的硬體裝置會持續宣 告其線,上述持續時間長於必要的時間,且因而使得無法發出一後續中斷。因此,超管理器202會要求立刻傳輸與層級觸發中斷相關聯之一EOI、在超管理器中產生一攔截,而使得提出中斷的裝置可以反宣告該線。
中斷的例示處理
第3圖繪示一例示處理,其可用以決定何時應產生攔截來處理EOI,以及何時應延遲處理該EOI。在動作302,開始進行處理300,此時由一虛擬硬體裝置(例如虛擬網路卡234)接收一中斷要求。在動作304,同時,將中斷傳送至虛擬CPU 206以待處理。在一具體實施例中,所接收之中斷為目前在虛擬I/O APIC 203的唯一待處理中斷,且虛擬CPU 206目前並未處理其他中斷。在動作306,同時,虛擬CPU 206產生EOI並將該EOI傳送至訪客OS 204。在動作308,訪客OS 204藉由讀取共享頁面218來決定NoEOIRequired位元是否經設定為1。若為肯定,訪客OS可在共享記憶體218中設定EOIOccurred位元,以作為回應。稍後,當基於某些其他理由而執行超管理器202時,超管理器202可讀取共享頁面218並決定曾發生該EOI。在一實作中,I/O APIC虛擬模組154可藉由從虛擬I/O APIC 203之ISR暫存器中清除於動作302中接收到的中斷相關聯的位元,來處理上述EOI的發生。另一方面,若清除了或並未設定該NoEOIRequired位元,則訪客OS 204會產生一EOI,而 導致超管理器202攔截該EOI並立刻處理該EOI。
第4圖繪示一例示處理400,其可用以決定傳統實體I/O APIC如何回應對於一中斷的接收。在動作402,開始進行處理400,此時由實體硬體裝置(例如序列埠126)接收一中斷要求。上述中斷可為邊緣觸發或層級觸發中斷。在動作404,同時,將與其上接收了該中斷之接腳相關聯的中斷要求暫存區(IRR)位元設定為1。若該中斷為邊緣觸發中斷,序列埠126會在反宣告傳輸該中斷的該線。另一方面,若中斷為層級觸發中斷,序列埠126會繼續宣告該線,直到序列埠126被通知說CPU已經完成處理該中斷為止。在動作406,APIC決定被設定為1的最高優先順序IRR位元之優先順序是否高於被設定為1的最高優先順序ISR位元。在許多情境中,ISR中的位元都不會被設定,因為目標CPU通常會快速地處理中斷,而減低在處理一中斷時接收到另一中斷的可能性。在其他情境中,已處理過的中斷的優先順序高於剛接收的中斷。在此種情形中,上述剛接收的中斷必須等候較高優先順序中斷結束,如動作408所示。
在動作410,最高優先順序IRR位元的優先順序高於最高優先順序ISR位元的優先順序,導致I/O APIC將所接收的中斷傳送至CPU。在動作412,APIC更新與所接收的中斷相關聯之IRR與ISR暫存器,並將IRR中的位元設定為0以及ISR中的位元設定為1。這些位元指出在APIC中該中斷不再為待處理中斷(IRR位元=0),且 該中斷目前正由CPU處理中(ISR位元=1)。
第5圖繪示一例示處理500,其可用以決定傳統實體APIC如何回應自實體CPU接收的EOI。在動作502,處理500開始進行,此時由一CPU接收到一EOI。該EOI可指出CPU正在處理的最高優先順序中斷已經完成。在動作504,同時,清除與所接收的EOI相關的位元,其係藉由將該位元設定為0。在一實作中,I/O APIC清除最高優先順序位元,因為CPU永遠會以中斷的優先順序來執行這些中斷。在一實作中,I/O APIC接著可重新排定任何待處理中斷的優先順序,並將次高優先順序的中斷傳送至CPU以供處理。
在步驟506,同時,決定與該接收之一EOI有關的中斷是否為邊緣觸發中斷或層級觸發中斷。進行動作508,當EOI所回應的該中斷為邊緣觸發中斷時,此時APIC會結束處理EOI。進行動作510,然而,當該中斷為層級觸發中斷時,此時I/O APIC會向宣告該中斷的裝置發出訊號,以指出已完成了中斷要求,以及該裝置可以向I/O APIC反宣告其線。
決定何時應立刻將EOI通訊傳輸至超管理器
第6圖繪示一例示處理600,其說明了一情況,其可將虛擬CPU 128產生之EOI直接通訊至超管理器112,且不會延遲更新該EOI。在動作602,處理600開始進行,此時在虛擬I/O APIC 142接收到具有第一優先順序的第 一中斷。應注意到可由超管理器112或根OS 106在軟體中模擬上述虛擬I/O APIC 142,且該虛擬I/O APIC 142僅公開給訪客OS 108以供其執行。在動作604,可將第一中斷***虛擬化CPU 128中。在動作606,同時,虛擬I/O APIC 142可接收第二中斷,其優先順序低於上述第一中斷,且當虛擬CPU 128正在處理第一中斷時,接收上述第二中斷。在動作608,同時,超管理器112可清除儲存於共享頁面152中的NoEOIRequired旗標。清除NoEOIRequired旗標可向訪客OS 108指出訪客OS 108應在當虛擬CPU 128完成處理中斷時,立刻將一EOI傳輸至超管理器,產生一攔截。必須立刻傳輸該EOI的原因在於僅會在I/O APIC虛擬模組154接收到一EOI時,才會***低優先順序的中斷。在此種情形中,延遲地更新虛擬I/O APIC 142可能會不必要地延遲了對於低優先順序之中斷的處理。在動作610,同時,I/O APIC虛擬模組154接收當完成了第一中斷時所產生的EOI。在一實作中,虛擬I/O APIC 142可清除與第一中斷相關聯的ISR位元,以記錄該中斷已經完成了處理。在動作612,同時,虛擬I/O APIC 142可將第二中斷***虛擬化CPU128中,以回應接收到的EOI。在動作614,同時,超管理器112可將NoEOIRequired位元設定為1,因為不再存在待處理的中斷。
第7圖繪示一例示處理700,其說明了另一情況,其可將虛擬CPU 128產生之EOI直接通訊至超管理器 112,且不會延遲更新該EOI。在動作702,開始進行處理700,此時在虛擬I/O APIC 142接收到具有第一優先順序的第一中斷。在動作704,可將第一中斷***至虛擬化CPU 128中。在動作706,同時,虛擬I/O APIC 142可接收第二中斷,其優先順序高於上述第一中斷,且當虛擬CPU 128正在處理第一中斷時,接收上述第二中斷。在動作708,同時,超管理器112可藉由將儲存於共享頁面152中的NoEOIRequired旗標設定為0而清除之。清除NoEOIRequired旗標可向訪客OS 108指出訪客OS 108應在當虛擬CPU 128完成處理中斷時,立刻將一EOI傳輸至超管理器,產生一攔截。必須立刻傳輸該EOI的原因在於虛擬CPU 128將會具有兩個待處理完成的中斷,但共享頁面152在一個位元中僅可儲存是否處理了一個EOI。因而,為了確保針對每一個中斷,虛擬I/O APIC 142都會處理一EOI,訪客OS必須將第一個產生的EOI傳送至超管理器112,產生一攔截。在動作710,同時,虛擬I/O APIC 142可將第二個但具有較高優先順序的中斷***至虛擬CPU 128中。虛擬CPU 128可立刻開始處理第二中斷,並延遲第一中斷的完成,直到第二中斷本身已完成為止。在動作712,同時,虛擬CPU 128可在完成第二中斷時,傳送一EOI。可立刻將此一EOI傳送至超管理器,觸發一攔截。在動作714,同時,I/O APIC虛擬模組154可將NoEOIRequired位元設定為1,以回應所接收的EOI,因為在此時,僅有一個待處理的 中斷,且可延遲評估該中斷。
第8圖繪示一例示處理800,其說明了另一情況,其可將虛擬CPU 128產生之EOI直接通訊至超管理器112,且不會延遲更新該EOI。在動作802,開始進行處理800,此時在虛擬I/O APIC 142接收到層級觸發中斷。在動作804,超管理器112可將NoEOIRequired位元設定為0,以指出訪客OS 108必須針對此一層級觸發中斷傳送一EOI。在動作806,同時,位於超管理器112中的I/O APIC虛擬模組154可透過攔截接收來自訪客OS 108的一EOI。之後,超管理器可將NoEOIRequired位元設定為1,以指出可延遲評估後續的多個層級觸發EOI。
圖形化中斷呈現
第9圖繪示邊緣觸發與層級觸發中斷之例示900。在一實作中,邊緣觸發中斷902係由硬體裝置(例如硬碟機124)傳送至虛擬I/O APIC(例如虛擬I/O APIC 142)。在一實作中,另一邊緣觸發中斷904可在相同的線上傳輸,而導致邊緣重疊906。虛擬I/O APIC 142會將重疊的邊緣觸發中斷902與904視為一個單一邊緣觸發中斷,因為對虛擬I/O APIC 142而言,該線係持續地被宣告。
將層級觸發中斷908由硬碟機124通訊傳輸至虛擬I/O APIC 142時,係藉由宣告該線,直到硬碟機124接收到中斷已完成的指示為止。
第10圖繪示一例示處理1000,其係關於決定是否延遲處理一EOI。在動作1002,開始進行處理1000,此時接收到具有第一優先順序的第一中斷服務要求。在一具體實施例中,在虛擬I/O APIC 142接收上述中斷。在動作1004,可將接收到的中斷傳送至CPU。在一具體實施例中,上述CPU為虛擬CPU 128。在動作1006,同時,由CPU接收到一中斷結束(E0I)確認。CPU可在當完成了對所接收之中斷的處理後,傳送該EOI。在動作1008,同時,訪客OS決定是否延遲傳送EOI或是否立刻傳送EOI,而導致超管理器攔截該EOI確認。在一具體實施例中,立刻傳送EOI會導致超管理器攔截並處理EOI。在動作1010,同時,當欲延遲處理該EOI時,訪客OS可寫入至一共享記憶體頁面。在動作1012,同時,當不要延遲處理該EOI時,訪客OS可調用超管理器以直接傳輸EOI。
此外,可利用一處理器或基於儲存於一或更多種電腦可讀取媒體上的指令之其他運算裝置來實作此處所述的任何方法之任何動作。上述電腦可讀取媒體可以是任何可用的適當媒體,只要其可供超管理器、訪客OS和/或I/O APIC虛擬模組存取。電腦可讀取媒體包含揮發性與非揮發性、可移除與不可移除媒體,其係以任何可用以儲存資訊的方法或技術而實作,上述資訊例如電腦可讀取指令、資料結構、程式模組或其他資料。電腦可讀取 媒體包括但不限於RAM、ROM、EEPROM、快閃記憶體或其他記憶體技術、CD-ROM、數位多功能影音光碟(digital versatile disks,DVD)或其他光學儲存裝置、磁匣、磁帶、磁碟儲存或其他磁性儲存裝置、或可用於儲存所需資訊且可供超管理器、訪客OS和/或I/O APIC虛擬模組存取的任何其他媒體。任何上述之組合亦屬於電腦可讀取媒體的範圍。
結論
雖然本說明書中以結構特徵和/或方法行為相關的特定語言來描述本發明欲請求之申請標的,當可理解附隨申請專利範圍中界定的申請標的不限於上述的特定特徵或動作。反之,所揭露的上述特定特徵與動作係作為實施申請專利範圍的例示形式。
100‧‧‧虛擬化環境
102‧‧‧運算裝置
104‧‧‧使用者
106‧‧‧根作業系統
108、110、204‧‧‧訪客作業系統(訪客OS)
112、202‧‧‧超管理器
114‧‧‧實體中央處理單元(實體CPU)
116‧‧‧實體區域進階可程式中斷控制器(實體APIC)
118‧‧‧實體記憶體
120‧‧‧記憶體對應I/O頁面介面
122‧‧‧實體輸入/輸出進階可程式中斷控制器(實體I/O APIC)
124‧‧‧硬碟機
126‧‧‧序列埠
128、132、206‧‧‧虛擬CPU
130、134、214‧‧‧虛擬區域APIC
136、138、140‧‧‧記憶體虛擬模組
216‧‧‧虛擬記憶體
142、144、208‧‧‧虛擬I/O APIC
146‧‧‧記憶體攔截模組
148、150‧‧‧記憶體對應I/O頁面
152、218‧‧‧共享頁面
154‧‧‧I/O APIC虛擬模組
200‧‧‧I/O APIC環境
210(a)、210(b)、...、210(n)‧‧‧接腳
222(a)‧‧‧虛擬序列埠中斷服務常式
222(b)‧‧‧虛擬網路卡中斷服務常式
224‧‧‧中斷要求暫存器(IRR)
226‧‧‧中斷服務暫存器(ISR)
228(a)、228(b)、...、228(n)、230(a)、230(b)、...、230(n)‧‧‧位元
232‧‧‧虛擬序列埠
234‧‧‧虛擬網路卡
300、400、500、600、700、800、1000‧‧‧處理
302-312、402-412、502-510、602-614、702-714、802-808、1002-1012‧‧‧動作
900‧‧‧中斷類型
902、904‧‧‧邊緣觸發中斷
906‧‧‧邊緣重疊
908‧‧‧層級觸發中斷
參照附隨圖式來描述實施方式。在各圖式中,元件符號最左方的位數係指該元件符號首次發生的圖式編號。在不同圖式中,使用相同的元件符號來代表相似或相同的項目。
第1圖繪示例示環境,在該環境中可利用超管理器模擬之虛擬I/O APIC來延遲評估虛擬CPU產生之EOI。
第2圖繪示例示虛擬I/O APIC,其可用以接收中斷要 求並將該中斷要求轉送至CPU。
第3圖繪示例示處理,其可用以決定何時應產生攔截來處理EOI,以及何時應延遲處理EOI。
第4-5圖繪示例示處理,其可用以在APIC接收中斷要求、傳送該要求至CPU、由CPU接收與該中斷相對應之EOI以及處理該EOI。
第6-8圖繪示額外的例示處理,其可用以決定超管理器何時可決定必須立刻將EOI傳送至I/O APIC虛擬模組。
第9圖繪示例示的邊緣觸發與層級觸發中斷。
第10圖繪示例示處理,其可用以決定是否應將EOI訊息傳送至虛擬應用程式開發介面(application programming interface,API)。
100‧‧‧虛擬化環境
102‧‧‧運算裝置
104‧‧‧使用者
106‧‧‧根作業系統
108、110‧‧‧訪客作業系統(訪客OS)
112‧‧‧超管理器
114‧‧‧實體中央處理單元(實體CPU)
116‧‧‧實體區域進階可程式中斷控制器(實體區域APIC)
118‧‧‧實體記憶體
120‧‧‧記憶體對應I/O頁面介面
122‧‧‧實體輸入/輸出進階可程式中斷控制器(實體I/O APIC)
124‧‧‧硬碟機
126‧‧‧序列埠
128、132‧‧‧虛擬CPU
130、134‧‧‧虛擬區域APIC
136‧‧‧記憶體虛擬模組
138、140‧‧‧虛擬記憶體模組
142、144‧‧‧虛擬I/O APIC
146‧‧‧記憶體攔截模組
148、150‧‧‧記憶體對應I/O頁面
152‧‧‧共享頁面
154‧‧‧I/O APIC虛擬模組

Claims (20)

  1. 一種電腦可讀取媒體,其儲存電腦可執行指令,當在一或更多個處理器上執行該些指令時可進行以下動作:由一超管理器接收一中斷服務要求;將該中斷服務要求傳送至一中央處理單元(CPU);由該CPU接收一中斷結束(EOI)確認;決定是否符合一處理準則;當若符合該準則時,將一數值寫入至與該超管理器共享之一記憶體;以及當若不符合該準則時,將該EOI傳送至該超管理器。
  2. 如申請專利範圍第1項所述的電腦可讀取媒體,其中:寫入至該記憶體的該數值至少包含一位元。
  3. 如申請專利範圍第1項所述的電腦可讀取媒體,其中:將該EOI傳送至該超管理器之動作包含以下動作:寫入至一記憶體對應頁面,其中:於該超管理器中執行的一記憶體攔截模組截獲該寫入至該記憶體對應頁面。
  4. 如申請專利範圍第1項所述的電腦可讀取媒體,其中:與該超管理器共享之該記憶體包含:實體記憶體之一頁面,其同時對應至訪客作業系統虛擬記憶體之一頁面 以及超管理器虛擬記憶體之一頁面。
  5. 如申請專利範圍第1項所述的電腦可讀取媒體,其中:寫入該數值至該記憶體使得可延遲處理該EOI,直到該超管理器基於處理該EOI以外的一理由而開始執行為止。
  6. 如申請專利範圍第1項所述的電腦可讀取媒體,其中:決定是否符合一處理準則之動作更包含以下動作:由一共享記憶體讀取一數值,該數值指示是否可延遲處理該EOI。
  7. 如申請專利範圍第6項所述的電腦可讀取媒體,其中:該共享記憶體係與該超管理器共享,且其中:該超管理器在該共享記憶體中指出:當該接收到的中斷包含一層級觸發中斷時,不能延遲評估一EOI。
  8. 如申請專利範圍第6項所述的電腦可讀取媒體,其中:該共享記憶體係與該超管理器共享,且其中:該超管理器在該共享記憶體中指出:在下列情形時,不能延遲評估一EOI:在接收該第一中斷之後所接收到的一第二中斷包含一 優先順序,其小於該第一中斷之一優先順序;以及該CPU正在處理該第一中斷。
  9. 如申請專利範圍第6項所述的電腦可讀取媒體,其中:該共享記憶體係與該超管理器共享,且其中:該超管理器在該共享記憶體中指出在下列情形時,不能延遲評估一EOI:在接收該第一中斷之後所接收到的一第二中斷包含一優先順序,其大於該第一中斷之一優先順序;以及該CPU正在處理該第一中斷。
  10. 一種方法包含以下步驟:接收一中斷;分析與一虛擬CPU相關聯的一虛擬進階可程式中斷控制器(APIC),以決定是否符合一準則;設定與一訪客作業系統共享之一記憶體的一數值,以指出:當該訪客作業系統可延遲處理一EOI確認時,該訪客作業系統可延遲處理一EOI;以及否則,設定與該訪客作業系統共享之該記憶體的一數值,以指出:該訪客作業系統不可延遲處理一EOI。
  11. 如申請專利範圍第10項所述的方法,其中:當該中斷包 含一邊緣觸發中斷時,該訪客作業系統可延遲處理該EOI。
  12. 如申請專利範圍第10項所述的方法,其中:該中斷包含一第一中斷,且其中:該訪客作業系統經設定:在下列情形時,不延遲處理一EOI確認:在接收該第一中斷之後所接收到的一第二中斷包含一優先順序,其小於該第一中斷之一優先順序;以及該虛擬CPU正在處理該第一中斷。
  13. 如申請專利範圍第10項所述的方法,其中:該中斷包含一第一中斷,且其中:該訪客作業系統經設定:在下列情形時,不延遲處理一EOI確認:在接收該第一中斷之後所接收到的一第二中斷包含一優先順序,其大於該第一中斷之一優先順序;以及該虛擬CPU正在處理該第二中斷。
  14. 如申請專利範圍第10項所述的方法,其中:當該中斷包含一邊緣觸發中斷且當該中斷為正在處理中之唯一中斷時,該訪客作業系統可延遲處理一EOI確認。
  15. 如申請專利範圍第10項所述的方法,更包含以下步驟: 直接由該訪客作業系統接收一EOI。
  16. 如申請專利範圍第10項所述的方法,更包含以下步驟:擷取儲存於與該訪客作業系統共享之該記憶體中的一數值,該數值指出是否發生一EOI,所擷取的該數值為除了回應該EOI之以外者。
  17. 如申請專利範圍第10項所述的方法,其中:一記憶體攔截模組安裝於該記憶體之一頁面上,該記憶體之該頁面包含一記憶體對應I/O頁面,其可供該虛擬CPU用以和一實體APIC進行通訊。
  18. 一種電腦系統,至少包含:一或更多個種處理器;記憶體,其可供該一或更多個處理器存取;一超管理器,其係儲存於記憶體中,且可於該一或更多個處理器上執行,以進行以下步驟:接收一中斷服務要求,決定是否符合一第一處理準則,在一共享記憶體中設定一數值以指出當符合該第一處理準則時,可延遲評估該EOI,在一共享記憶體中設定一數值以指出當不符合該 第一處理準則時,必須在完成中斷的時候將該EOI傳輸至該超管理器,以及傳輸該中斷服務要求至執行一訪客作業系統之一虛擬CPU;以及該訪客作業系統之一延遲中斷結束(EOI)處理模組,其係儲存於記憶體中且可於該一或更多個處理器上執行,以進行以下步驟:接收來自該虛擬CPU之一EOI,其指出已經執行了該中斷服務要求,決定是否符合一第二處理準則;若符合該第二處理準則,傳送該EOI至該超管理器,在該共享記憶體中設定一數值以指出已發生該EOI,如果不符合該第二處理準則,則使得該超管理器可在一稍後的時間點回應該EOI。
  19. 如申請專利範圍第18項所述的電腦系統,其中:在下列情形時,可延遲評估對該中斷服務要求的一中斷結束(EOI)確認:該中斷並非一層級觸發中斷,以及該中斷為唯一使用中的中斷。
  20. 如申請專利範圍第18項所述的電腦系統,其中:該中斷為一自我中斷(self-interrupt),而使得超管理器將該自我中斷通訊至與該虛擬CPU相關聯的一虛擬區域APIC。
TW098118060A 2008-06-27 2009-06-01 在虛擬環境中對中斷結束訊息之延遲處理 TWI442322B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/163,891 US8032680B2 (en) 2008-06-27 2008-06-27 Lazy handling of end of interrupt messages in a virtualized environment

Publications (2)

Publication Number Publication Date
TW201003526A TW201003526A (en) 2010-01-16
TWI442322B true TWI442322B (zh) 2014-06-21

Family

ID=41445306

Family Applications (1)

Application Number Title Priority Date Filing Date
TW098118060A TWI442322B (zh) 2008-06-27 2009-06-01 在虛擬環境中對中斷結束訊息之延遲處理

Country Status (6)

Country Link
US (2) US8032680B2 (zh)
EP (1) EP2316069B1 (zh)
JP (1) JP5180373B2 (zh)
CN (1) CN102067083B (zh)
TW (1) TWI442322B (zh)
WO (1) WO2009158528A2 (zh)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8984199B2 (en) * 2003-07-31 2015-03-17 Intel Corporation Inter-processor interrupts
US8032680B2 (en) 2008-06-27 2011-10-04 Microsoft Corporation Lazy handling of end of interrupt messages in a virtualized environment
JP5169731B2 (ja) * 2008-10-24 2013-03-27 富士通セミコンダクター株式会社 マルチプロセッサシステムlsi
US8132168B2 (en) * 2008-12-23 2012-03-06 Citrix Systems, Inc. Systems and methods for optimizing a process of determining a location of data identified by a virtual hard drive address
US9424211B2 (en) * 2008-12-31 2016-08-23 Intel Corporation Providing multiple virtual device controllers by redirecting an interrupt from a physical device controller
US8566492B2 (en) * 2009-12-31 2013-10-22 Intel Corporation Posting interrupts to virtual processors
US8645606B2 (en) 2010-06-23 2014-02-04 International Business Machines Corporation Upbound input/output expansion request and response processing in a PCIe architecture
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
US8671287B2 (en) 2010-06-23 2014-03-11 International Business Machines Corporation Redundant power supply configuration for a data center
US8639858B2 (en) 2010-06-23 2014-01-28 International Business Machines Corporation Resizing address spaces concurrent to accessing the address spaces
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US8650335B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Measurement facility for adapter functions
US8615645B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US8572635B2 (en) 2010-06-23 2013-10-29 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification
US8615622B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Non-standard I/O adapters in a standardized I/O architecture
US8505032B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Operating system notification of actions to be taken responsive to adapter events
US8745292B2 (en) 2010-06-23 2014-06-03 International Business Machines Corporation System and method for routing I/O expansion requests and responses in a PCIE architecture
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US8416834B2 (en) 2010-06-23 2013-04-09 International Business Machines Corporation Spread spectrum wireless communication code for data center environments
US8510599B2 (en) 2010-06-23 2013-08-13 International Business Machines Corporation Managing processing associated with hardware events
US9213661B2 (en) 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US8918573B2 (en) 2010-06-23 2014-12-23 International Business Machines Corporation Input/output (I/O) expansion response processing in a peripheral component interconnect express (PCIe) environment
US8683108B2 (en) 2010-06-23 2014-03-25 International Business Machines Corporation Connected input/output hub management
US8677180B2 (en) 2010-06-23 2014-03-18 International Business Machines Corporation Switch failover control in a multiprocessor computer system
US8645767B2 (en) 2010-06-23 2014-02-04 International Business Machines Corporation Scalable I/O adapter function level error detection, isolation, and reporting
US8504754B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Identification of types of sources of adapter interruptions
US8626970B2 (en) 2010-06-23 2014-01-07 International Business Machines Corporation Controlling access by a configuration to an adapter function
US8549182B2 (en) 2010-06-23 2013-10-01 International Business Machines Corporation Store/store block instructions for communicating with adapters
US8650337B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Runtime determination of translation formats for adapter functions
US8417911B2 (en) 2010-06-23 2013-04-09 International Business Machines Corporation Associating input/output device requests with memory associated with a logical partition
US8656228B2 (en) 2010-06-23 2014-02-18 International Business Machines Corporation Memory error isolation and recovery in a multiprocessor computer system
US8566480B2 (en) 2010-06-23 2013-10-22 International Business Machines Corporation Load instruction for communicating with adapters
US8478922B2 (en) 2010-06-23 2013-07-02 International Business Machines Corporation Controlling a rate at which adapter interruption requests are processed
US8468284B2 (en) 2010-06-23 2013-06-18 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification to a guest operating system
US8621112B2 (en) 2010-06-23 2013-12-31 International Business Machines Corporation Discovery by operating system of information relating to adapter functions accessible to the operating system
US8612659B1 (en) * 2010-12-14 2013-12-17 Vmware, Inc. Hardware interrupt arbitration in virtualized computer systems
US8910158B2 (en) * 2011-12-14 2014-12-09 Intel Corporation Virtualizing interrupt priority and delivery
CN102799465B (zh) * 2012-06-30 2015-05-27 华为技术有限公司 分布式虚拟化***的虚拟中断管理方法及装置
US9329880B2 (en) 2013-02-13 2016-05-03 Red Hat Israel, Ltd. Counter for fast interrupt register access in hypervisors
US10331589B2 (en) * 2013-02-13 2019-06-25 Red Hat Israel, Ltd. Storing interrupt location for fast interrupt register access in hypervisors
US9069741B2 (en) * 2013-02-25 2015-06-30 Red Hat, Inc. Emulating level triggered interrupts of physical devices assigned to virtual machine
US9535686B2 (en) 2013-03-15 2017-01-03 International Business Machines Corporation Dynamic library replacement
US9292331B2 (en) * 2013-03-15 2016-03-22 Bracket Computing, Inc. Expansion of services for a virtual data center guest
US9697031B2 (en) * 2013-10-31 2017-07-04 Huawei Technologies Co., Ltd. Method for implementing inter-virtual processor interrupt by writing register data in a single write operation to a virtual register
EP3089033B1 (en) * 2013-12-27 2020-10-07 Hitachi, Ltd. Realtime hypervisor with priority interrupt support
CN105095128B (zh) 2014-05-22 2020-04-03 中兴通讯股份有限公司 中断处理方法及中断控制器
US9910699B2 (en) 2014-10-28 2018-03-06 Intel Corporation Virtual processor direct interrupt delivery mechanism
KR20170032502A (ko) 2015-09-14 2017-03-23 삼성전자주식회사 스토리지 장치 및 그것의 인터럽트 발생 방법
US9747123B2 (en) * 2015-09-25 2017-08-29 Intel Corporation Technologies for multi-level virtualization
US10282327B2 (en) * 2017-01-19 2019-05-07 International Business Machines Corporation Test pending external interruption instruction
US10248595B2 (en) * 2017-08-10 2019-04-02 Infineon Technologies Ag Virtual machine monitor interrupt support for computer processing unit (CPU)
US11675611B2 (en) 2018-10-29 2023-06-13 Nutanix, Inc. Software service intervention in a computing system
CN114356812B (zh) * 2021-12-31 2022-08-26 元心信息科技集团有限公司 中断处理方法、装置、电子设备及计算机可读存储介质

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5367661A (en) * 1992-11-19 1994-11-22 International Business Machines Corporation Technique for controlling channel operations in a host computer by updating signals defining a dynamically alterable channel program
US6219741B1 (en) * 1997-12-10 2001-04-17 Intel Corporation Transactions supporting interrupt destination redirection and level triggered interrupt semantics
US6470408B1 (en) * 1999-04-14 2002-10-22 Hewlett-Packard Company Apparatus and method for delivering interrupts via an APIC bus to IA-32 processors
US6279046B1 (en) * 1999-05-19 2001-08-21 International Business Machines Corporation Event-driven communications interface for logically-partitioned computer
US6766398B2 (en) * 2001-04-17 2004-07-20 International Business Machines Corporation Method for processing PCI interrupt signals in a logically partitioned guest operating system
US20040117532A1 (en) * 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system
US7000051B2 (en) * 2003-03-31 2006-02-14 International Business Machines Corporation Apparatus and method for virtualizing interrupts in a logically partitioned computer system
US7281075B2 (en) * 2003-04-24 2007-10-09 International Business Machines Corporation Virtualization of a global interrupt queue
US7784060B2 (en) * 2003-11-06 2010-08-24 Intel Corporation Efficient virtual machine communication via virtual machine queues
US20050228921A1 (en) * 2004-03-31 2005-10-13 Prashant Sethi Sharing of interrupts between operating entities
JP2005309553A (ja) * 2004-04-19 2005-11-04 Hitachi Ltd 計算機
US7209994B1 (en) * 2004-05-11 2007-04-24 Advanced Micro Devices, Inc. Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests
US7917740B1 (en) * 2004-05-11 2011-03-29 Advanced Micro Devices, Inc. Virtualization assist for legacy x86 floating point exception handling
US7143223B2 (en) * 2004-10-14 2006-11-28 International Business Machines Corporation Method, system and program product for emulating an interrupt architecture within a data processing system
CN100365604C (zh) * 2005-12-02 2008-01-30 北京中星微电子有限公司 一种中断控制处理装置和方法
US8286162B2 (en) * 2005-12-30 2012-10-09 Intel Corporation Delivering interrupts directly to a virtual processor
US8176485B2 (en) * 2006-05-15 2012-05-08 Microsoft Corporation Launching hypervisor under running operating system
US7873770B2 (en) * 2006-11-13 2011-01-18 Globalfoundries Inc. Filtering and remapping interrupts
US7533207B2 (en) * 2006-12-06 2009-05-12 Microsoft Corporation Optimized interrupt delivery in a virtualized environment
US7853744B2 (en) * 2007-05-23 2010-12-14 Vmware, Inc. Handling interrupts when virtual machines have direct access to a hardware device
US8032680B2 (en) 2008-06-27 2011-10-04 Microsoft Corporation Lazy handling of end of interrupt messages in a virtualized environment

Also Published As

Publication number Publication date
EP2316069B1 (en) 2018-02-14
WO2009158528A2 (en) 2009-12-30
US20090328035A1 (en) 2009-12-31
US8103815B2 (en) 2012-01-24
TW201003526A (en) 2010-01-16
CN102067083A (zh) 2011-05-18
EP2316069A4 (en) 2012-06-13
JP5180373B2 (ja) 2013-04-10
CN102067083B (zh) 2013-12-04
JP2011526390A (ja) 2011-10-06
US20110307641A1 (en) 2011-12-15
EP2316069A2 (en) 2011-05-04
WO2009158528A3 (en) 2010-03-25
US8032680B2 (en) 2011-10-04

Similar Documents

Publication Publication Date Title
TWI442322B (zh) 在虛擬環境中對中斷結束訊息之延遲處理
US10846145B2 (en) Enabling live migration of virtual machines with passthrough PCI devices
US10417174B2 (en) Remote direct memory access in a virtualized computing environment
US9552216B2 (en) Pass-through network interface controller configured to support latency sensitive virtual machines
US8706941B2 (en) Interrupt virtualization
US7707341B1 (en) Virtualizing an interrupt controller
KR101668399B1 (ko) 프로세서 코어들의 하이퍼바이저 격리
US7209994B1 (en) Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests
US20170269867A1 (en) Virtual machine trigger
EP2881860B1 (en) Method for implementing an interrupt between virtual processors, related device, and system
US11301283B1 (en) Virtualization extension modules
US11435958B2 (en) Shared memory mechanism to support fast transport of SQ/CQ pair communication between SSD device driver in virtualization environment and physical SSD
EP3336696A1 (en) Implementing device models for virtual machines with reconfigurable hardware
US10241829B2 (en) Information processing device, information processing method, recording medium, calculation processing device, calculation processing method
US11194606B2 (en) Managing related devices for virtual machines utilizing shared device data
US11003488B2 (en) Memory-fabric-based processor context switching system
US20240184612A1 (en) Virtual machine live migration with direct-attached non-volatile memory express device
KR102160414B1 (ko) 하위 호환성을 위한 레거시 버스 동작 시뮬레이션
TWI733745B (zh) 核心模式的虛擬機器(kvm)虛擬化下處理i/o請求的方法和裝置
van der Grinten et al. Managarm: A Fully Asynchronous Operating System

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees