一種虛擬處理器之間的中斷的實現方法、相關裝置和系統的制作方法
【專利摘要】本發明實施例公開了一種虛擬處理器之間中斷的實現方法,包括:當源虛擬處理器需要向目的虛擬處理器觸發中斷時,將包含所述目的虛擬處理器的信息和用于表示源虛擬處理器向目的虛擬處理器觸發中斷的指示數據的寄存數據寫入源虛擬處理器的虛擬高級可編程中斷控制器vAPIC的一個虛擬寄存器,以使虛擬機監控器從所述虛擬寄存器解析出所述目的虛擬處理器的信息和所述指示數據,并由所述虛擬機監控器根據所述目的虛擬處理器的信息和指示數據將虛擬處理器之間的中斷注入到所述目的虛擬處理器。相應地,本發明實施例還提供相關的虛擬機、虛擬控制器、計算節點和系統。本發明實施例可以提高虛擬機的性能。
【專利說明】一種虛擬處理器之間的中斷的實現方法、相關裝置和系統
【技術領域】
[0001]本發明涉及通信領域,尤其涉及一種虛擬處理器之間的中斷的實現方法、相關裝置和系統。
【背景技術】
[0002]目前虛擬機已經得到廣泛應用,在虛擬機應用中經常用出現中斷,例如:在多處理器系統(Symmetrical Mult1-Processing, SMP)中當運行多任務且未綁定時,會由于負載均衡調度會頻繁發生中斷,如,發生處理器之間的中斷(Inter-Processor Interrupt,IPI),當然還可以是其它中斷。而中斷都是通過訪問高級可編程中斷控制器(AdvancedProgrammable Interrupt Controller, APIC)的寄存器實現的。具體實現過程如下:
[0003]讀取APIC的虛擬中斷命令寄存器(virtualInterrupt Command Register,vICR)中的傳送狀態(delivery status)值;
[0004]根據所述delivery status值向ICR的高位寄存器中寫入目的虛擬處理器的本地APIC (virtual Central Processing Unit Local APIC, vLocal APIC)的標識;
[0005]向ICR的低位寄存器寫入用于指示目的vLocal APIC所屬的目的虛擬處理器(virtual Central Processing Unit, vCPU)發生中斷的指示信息,使虛擬機監控器(Virtual Machine Monitor, VMM)解析出所述ICR的高位寄存器寄存的上述標識,以及解析出ICR的低位寄存器寄存指示信息,并將該標識和指示信息轉發至目的vLocal APIC,當上目的vLocal APIC接收到上述中斷信息時就可以控制目的vCPU產生中斷。
[0006]可見,上述中斷實現過程由于需要向APIC執行三次操作,即導致三次虛擬機退出(Virtual Machine exit, VM-Exit),其中,VM-Exit 具體可以理解虛擬機與 Hypervisor 之間的上下文切換。而在實際應用中虛擬處理器是會頻繁的出現中斷,即虛擬機會更頻繁地出現VM-Exit,從而導致虛擬機的性能下降。
【發明內容】
[0007]本發明實施例提供了一種vCPU之間的中斷的實現方法、相關裝置和系統,以提高虛擬機的性能。
[0008]第一方面,本發明實施例提供的一種vCPU之間中斷的實現方法,包括:
[0009]當源vCPU需要向目的vCPU觸發中斷時,
[0010]將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的虛擬高級可編程中斷控制器vAPIC的一個虛擬寄存器,以使虛擬機監控器從所述虛擬寄存器解析出所述目的vCPU的信息和所述指示數據,并由所述虛擬機監控器根據所述目的vCPU的信息和指示數據將vCPU之間的中斷注入到所述目的vCPUo
[0011]在第一方面的第一種可能的實現方式中,所述虛擬寄存器為虛擬中斷命令寄存器vICR的高位寄存器或低位寄存器;所述將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的一個虛擬寄存器,包括:
[0012]將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器。
[0013]結合第一方面的第一種可能的實現方式,在第一方面的第二種可能的實現方式中,所述將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器,包括:
[0014]將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的所述vICR的低位寄存器,其中,所述目的vCPU的信息被填入在所述低位寄存器的保留位;或者
[0015]將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的所述vICR的高位寄存器,其中,所述指示數據被填入在所述高位寄存器的保留位。
[0016]結合第一方面,在第一方面的第三種可能的實現方式中,所述將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的一個虛擬寄存器,包括:
[0017]將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據和優化數據的寄存數據寫入源vCPU的vAPIC的一個虛擬寄存器,其中,所述優化數據被填入在所述虛擬寄存器的保留位,所述優化數據用于指示所述VMM從所述虛擬寄存器中解析出所述目的vCPU的信息和所述指示數據。
[0018]結合第一方面,在第一方面的第四種可能的實現方式中,所述將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的一個虛擬寄存器,包括:
[0019]將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的一個虛擬寄存器,其中,所述目的vCPU的信息被填入在所述虛擬寄存器的保留位,所述指示數據包括被填入在所述虛擬寄存器的航向域、傳送模域、目的模型域、等級域、觸發模型域和目的速記域的數據。
[0020]第二方面,本發明實施例提供一種虛擬機,包括:一個或多個vCPU,所述vCPU包括虛擬高級可編程中斷控制器vAPIC,所述vAPIC包括虛擬寄存器,其中:
[0021 ] 所述一個或多個vCPU中當前vCPU用于:
[0022]當所述當前vCPU需要向目的vCPU觸發中斷時,包含所述目的vCPU的信息和用于表示所述當前vCPU向所述目的vCPU觸發中斷的指示數據的寄存數據包寫入所述當前vCPU的vAPIC的一個虛擬寄存器,以使虛擬機監控器從該虛擬寄存器解析出所述目的vCPU的信息和所述指示數據,并由所述虛擬機監控器根據所述目的vCPU的信息和指示數據將vCPU之間的中斷注入所述目的vCPU。
[0023]在第二方面的第一種可能的實現方式中,所述虛擬寄存器為虛擬中斷命令寄存器vICR的高位寄存器或低位寄存器;所述包含所述目的vCPU的信息和用于表示所述當前vCPU向所述目的vCPU觸發中斷的指示數據的寄存數據包寫入所述當前vCPU的vAPIC的一個虛擬寄存器的操作上,所述當前vCPU具體用于:
[0024]將包含所述目的vCPU的信息和用于表示所述當前vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入所述當前vCPU的vAPIC的vICR的高位寄存器或者低位寄存器。
[0025]結合第二方面的第一種可能的實現方式,在第二方面的第二種可能的實現方式中,所述將包含所述目的vCPU的信息和用于表示所述當前vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入所述當前vCPU的vAPIC的vICR的高位寄存器或者低位寄存器的操作上,所述vCPU具體用于:
[0026]將包含所述目的vCPU的信息和用于表示所述當前vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入所述當前vCPU的vAPIC的vICR的低位寄存器,其中,所述目的vCPU的信息被填入在所述低位寄存器的保留位;或者
[0027]將包含所述目的vCPU的信息和用于表示所述當前vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入所述當前vCPU的vAPIC的vICR的高位寄存器,其中,所述指示數據被填入在所述高位寄存器的保留位。
[0028]結合第二方面,在第二方面的第三種可能的實現方式中,所述包含所述目的vCPU的信息和用于表示所述當前vCPU向所述目的vCPU觸發中斷的指示數據的寄存數據包寫入所述當前vCPU的vAPIC的一個虛擬寄存器的操作上,所述當前vCPU具體用于:
[0029]將包含所述目的vCPU的信息和用于表示所述當前vCPU向目的vCPU觸發中斷的指示數據和優化數據的寄存數據寫入所述當前vCPU的vAPIC的一個虛擬寄存器,其中,所述優化數據被填入在該虛擬寄存器的保留位,所述優化數據用于指示所述VMM從該虛擬寄存器中解析出所述目的vCPU的信息和所述指示數據。
[0030]結合第二方面,在第二方面的第四種可能的實現方式中,所述包含所述目的vCPU的信息和用于表示所述當前vCPU向所述目的vCPU觸發中斷的指示數據的寄存數據包寫入所述當前vCPU的vAPIC的一個虛擬寄存器的操作上,所述當前vCPU具體用于:
[0031]將包含所述目的vCPU的信息和用于表示所述當前vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入所述當前vCPU的vAPIC的一個虛擬寄存器,其中,所述目的vCPU的信息被填入在該虛擬寄存器的保留位,所述指示數據包括被填入在該虛擬寄存器的航向域、傳送模域、目的模型域、等級域、觸發模型域和目的速記域的數據。
[0032]第三方面,本發明實施例提供一種計算節點,包括:硬件層、運行在所述硬件層之上的VMM、以及運行在所述VMM之上的至少一個虛擬機,其中,所述至少一個虛擬機包括第一虛擬機和第二虛擬機,第一虛擬機包括第一 vCPU,所述第一 vCPU包括第一虛擬高級可編程中斷控制器vAPIC,所述第一 vAPIC包括第一虛擬寄存器,第二虛擬機包括第二 vCPU,其中:
[0033]所述第一 vCPU,用于當第一 vCPU需要向第二 vCPU觸發中斷時,將包含所述第二vCPU的信息和用于表示所述第一 vCPU向所述第二 vCPU觸發中斷的指示數據的寄存數據包寫入所述第一虛擬寄存器;
[0034]所述VMM,用于從所述第一虛擬寄存器解析出所述第二 vCPU的信息和所述指示數據,并根據所述第二 vCPU的信息和指示數據將vCPU之間的中斷注入到所述第二 vCPU,其中所述vCPU之間的中斷包括第一 vCPU與第二 vCPU之間的中斷。
[0035]在第三方面的第一種可能的實現方式中,所述第一虛擬寄存器為為虛擬中斷命令寄存器vICR的高位寄存器或低位寄存器;
[0036]所述第一 vCPU具體用于當第一 vCPU需要向第二 vCPU觸發中斷時,將包含所述第二 vCPU的信息和用于表示所述第一 vCPU向所述第二 vCPU觸發中斷的指示數據的寄存數據包寫入所述高位寄存器或低位寄存器;
[0037]所述VMM具體用于從所述高位寄存器或低位寄存器解析出所述第二 vCPU的信息和所述指示數據,并根據所述第二 vCPU的信息和指示數據將vCPU之間的中斷注入到所述第二 vCPU,其中所述vCPU之間的中斷包括第一 vCPU與第二 vCPU之間的中斷。
[0038]結合第三方面的第一種可能的實現方式,在第三方面的第二種可能的實現方式中,所述第一 vCPU具體用于當第一 vCPU需要向第二 vCPU觸發中斷時,將包含所述第二vCPU的信息和用于表示所述第一 vCPU向所述第二 vCPU觸發中斷的指示數據的寄存數據包寫入所述低位寄存器,其中,所述第二 vCPU的信息被填入在所述低位寄存器的保留位;
[0039]所述VMM具體用于從所述低位寄存器的保留位解析出所述第二 vCPU的信息,以及從所述低位寄存器解析出所述指示數據,并根據所述第二 vCPU的信息和指示數據將vCPU之間的中斷注入到所述第二 vCPU,其中所述vCPU之間的中斷包括第一 vCPU與第二 vCPU之間的中斷;或者
[0040]所述第一 vCPU具體用于當第一 vCPU需要向第二 vCPU觸發中斷時,將包含所述第二 vCPU的信息和用于表示所述第一 vCPU向所述第二 vCPU觸發中斷的指示數據的寄存數據包寫入所述高位寄存器,其中,所述指示數據被填入在所述高位寄存器的保留位;
[0041]所述虛擬機監控器具體用于從所述高位寄存器的保留位解析出所述指示數據,以及從所述高位寄存器解析出所述第二 vCPU的信息,并根據所述第二 vCPU的信息和指示數據將vCPU之間的中斷注入到所述第二 vCPU,其中所述vCPU之間的中斷包括第一 vCPU與第二 vCPU之間的中斷。
[0042]結合第三方面,在第三方面的第三種可能的實現方式中,所述第一 vCPU具體用于當第一 vCPU需要向第二 vCPU觸發中斷時,將包含所述第二 vCPU的信息和用于表示所述第
一vCPU向所述第二 vCPU觸發中斷的指示數據和優化數據的寄存數據包寫入所述第一虛擬寄存器,其中,所述優化數據被填入在該虛擬寄存器的保留位,所述優化數據用于指示所述VMM從所述第一虛擬寄存器中解析出所述第二 vCPU的信息和所述指示數據;
[0043]所述VMM具體用于從所述第一虛擬寄存器解析出所述優化數據,并根據所述優化數據從所述第一虛擬寄存器解析出所述第二 vCPU的信息和所述指示數據,并根據所述第
二vCPU的信息和指示數據將vCPU之間的中斷注入到所述第二 vCPU,其中所述vCPU之間的中斷包括第一 vCPU與第二 vCPU之間的中斷。
[0044]結合第三方面,在第三方面的第四種可能的實現方式中,所述第一 vCPU具體用于當第一 vCPU需要向第二 vCPU觸發中斷時,將包含所述第二 vCPU的信息和用于表示所述第
一vCPU向所述第二 vCPU觸發中斷的指示數據的寄存數據包寫入所述第一虛擬寄存器,其中,所述第二 vCPU的信息被填入在所述虛擬寄存器的保留位,所述指示數據包括被填入在所述虛擬寄存器的航向域、傳送模域、目的模型域、等級域、觸發模型域和目的速記域的數據;
[0045]所述VMM具體用于從所述第一虛擬寄存器的保留位解析出所述第二 vCPU的信息,以及從所述第一虛擬寄存器的航向域、傳送模域、目的模型域、等級域、觸發模型域和目的速記域中解析出所述指示數據,并根據所述第二 vCPU的信息和指示數據將vCPU之間的中斷注入到所述第二 vCPU,其中所述vCPU之間的中斷包括第一 vCPU與第二 vCPU之間的中斷。
[0046]第四方面,本發明實施例提供一種計算機系統,包括:第三方面包括的任一計算節點。
[0047]上述技術方案中,當源vCPU需要向目的vCPU觸發中斷時,將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的虛擬高級可編程中斷控制器vAPIC的一個虛擬寄存器,以使虛擬機監控器從所述虛擬寄存器解析出所述目的vCPU的信息和所述指示數據,并由所述虛擬機監控器根據所述目的vCPU的信息和指示數據將vCPU之間的中斷注入到所述目的vCPU。在上述中斷過程只需要執行一次對vAPIC的操作,即一次中斷只導致一次VM-Exit,從而可以提高虛擬機的性能。
【專利附圖】
【附圖說明】
[0048]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0049]圖1是本發明實施例可應用的場景示意圖;
[0050]圖2是本發明實施例提供的一種vCPU之間的中斷的實現方法的流程示意圖;
[0051]圖3是本發明實施例提供的另一種vCPU之間的中斷的實現方法的流程示意圖;
[0052]圖4和圖5是本發明實施例提供的可選的寄存數據包示意圖;
[0053]圖6是本發明實施例提供的一種虛擬機的結構示意圖;
[0054]圖7是本發明實施例提供的另一種虛擬機的結構示意圖;
[0055]圖8是本發明實施例提供的一種計算節點的結構示意圖;
[0056]圖9是本發明實施例還提供一種計算機系統的結構示意圖;
[0057]圖10是本發明實施例提供的另一種計算節點的結構示意圖。
【具體實施方式】
[0058]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0059]為了方便理解本發明實施例,首先對虛擬化技術進行介紹,虛擬化技術是一種將底層硬件設備與上層操作系統、應用程序分離的去耦合技術,如圖1所示,虛擬化技術應用場景中包括硬件層11、VMM層12和虛擬機層13,硬件層11、VMM層12和虛擬機層13定義可以如下:
[0060]虛擬機VM:
[0061]通過虛擬機軟件可以在一臺物理計算機上模擬出一臺或者多臺虛擬的計算機,而這些虛擬機就像真正的計算機那樣進行工作,虛擬機上可以安裝操作系統和應用程序,虛擬機還可訪問網絡資源。對于在虛擬機中運行的應用程序而言,虛擬機就像是在真正的計算機中進行工作。[0062]硬件層:
[0063]虛擬化環境運行的硬件平臺。其中,硬件層可包括多種硬件,例如某計算節點的硬件層可包括CPU和內存,還可以包括網卡、存儲器等等高速/低速輸入/輸出(I/O, Input/Output)設備,及具有特定處理功能的其它設備,如輸入輸出內存管理單元(10MMU,Input/Output Memory Management Unit),其中IOMMU可用于虛擬機物理地址和Host物理地址的轉換。
[0064]VMM (例如:Hypervisor):
[0065]作為管理層,用以完成硬件資源的管理、分配;為虛擬機呈現虛擬硬件平臺;實現虛擬機的調度和隔離。此外,有時VMM和I個特權虛擬機配合,兩者結合組成宿主機Host。其中,虛擬硬件平臺對其上運行的各個虛擬機提供各種硬件資源,如提供虛擬CPU、虛擬內存、虛擬磁盤、虛擬網卡等等。其中,該虛擬磁盤可對應Host的一個文件或者一個邏輯塊設備。虛擬機則運行在VMM或Host為其準備的虛擬硬件平臺上,VMM或Host上運行一個或多個虛擬機。
[0066]本發明實施例中的中斷具體可以是任何通過訪問APIC的虛擬寄存器而產生的中斷,例如:IPI中斷和其他類型中斷。這些中斷具體可以應用于多個VCPU之間的負載均衡的場景,例如,將進程從一個VCPU的等待隊列遷移至其它VCPU時產生的中斷。這些中斷還可以是當某個vCPU收到處理中斷后,將該中斷應交給另一 vCPU處理的中斷。
[0067]本發明實施例中,vCPU之間的中斷具體可以是指IPI。vCPU具體可以是vCPU,即vCPU處理的進程或者中斷都可以是等同于該虛擬機處理的進程或者中斷。例如:vCPU中斷就可以理解該vCPU所在的虛擬機中斷。另外,在SMP中每個虛擬機都可以配置對應的vAPIC,例如,vLocal APIC。
[0068]圖2是本發明實施例提供的一種vCPU之間的中斷的實現方法的流程示意圖,如圖2所示,包括:
[0069]201、當源vCPU需要向目的vCPU觸發中斷時,將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的一個虛擬寄存器,以使虛擬機監控器從所述虛擬寄存器解析出所述目的vCPU的信息和所述指示數據,并由所述虛擬機監控器根據所述目的vCPU的信息和指示數據將vCPU之間的中斷注入到所述目的vCPU。
[0070]可選的,步驟201具體可以是當源vCPU的負載過重,需要將某一些負載均衡調度至目的vCPU時,或者當源vCPU接收到某一中斷時,但該源vCPU不想執行該中斷,而是觸發目的vCPU中斷。或者接收到用戶輸入的命令指示源vCPU需要向目的vCPU觸發中斷時,或者接收VMM發送的命令指示源vCPU需要向目的vCPU觸發中斷時。本發明實施中對此不作限定。
[0071]其中,上述寄存數據包具體可以是用于寫入vAPIC的一個虛擬寄存器的數據,該寄存數據的格式與該虛擬寄存器的格式對應。當該寄存數據寫入vAPIC的虛擬寄存器時,該虛擬寄存器就存儲該寄存數據,以便VMM讀取該寄存數據,執行相關的操作。
[0072]可選的,上述目的vCPU的信息具體可以是用于唯一表示目的vCPU的信息,具體可以是用于標識所述目的vCPU的標識數據,或者目的vCPU的信息(例如:目標vCPU的名稱和標識等信息)。另外,上述目的vCPU的信息具體可以占用上述寄存數據的一個或者多個數據位,即該信息寫入上述虛擬寄存器中時,該信息占用虛擬寄存器的一個或者多個數據位。上述指示數據具體可以是占用上述寄存數據一個多個數據位,即該指示數據寫入上述虛擬寄存器中時,該指示數據占用虛擬寄存器的一個或者多個數據位。
[0073]可選的,上述VMM將vCPU之間的中斷注入到所述目的vCPU具體可以是VMM向目的vCPU發送用于產生vCPU之間的中斷的命令;或者向VMM向目的vAPIC發送用于產生vCPU之間的中斷的命令,由該目的vAPIC控制目的vCPU產生vCPU之間的中斷;或者是VMM控制目的vCPU產生vCPU之間的中斷。
[0074]可選的,上述目的vCPU具體可以是指一個或者多個vCPU,上述寄存數據包填入的信息具體還可以是一個或者多個信息,即一個信息對應一個vCPU。當然還可以用一個信息標識一個或者多個vCPU。例如,上述指示數據包括用于表示信息的類型的目的模型數據,該目的模型數據具體可以是一位二進制數,例如:該目的模型數據為I時表示上述目的vCPU的信息用于標識多個vCPU,當該目的模型數據為I時表示上述目的vCPU的信息用于標識一個vCPU,具體可以如下:
[0075]假設SMP包括8個vCPU,那么上述目的vCPU的信息就可以為8位二進制數據,且預先設置好這8位二進制數與上述8個vCPU的映射關系,例如,第I位二進制數據與第I個vCPU對應,第2位二進制數據與第2個vCPU對應等。
[0076]這樣當上述目的vCPU的信息為11000000時,且目的模型數據為I時,該信息就用于表示第I和第2個vCPU。
[0077]假設SMP包括8個vCPU,那么上述目的vCPU的信息可以為8位二進制數據,而8位二進制數據可以表示256個值,而SMP包括8個vCPU,這樣就可以預先選擇上述256個值中的8個值與上述8個vCPU的映射關系,選擇最小的8個值0-7,這樣就可以將8位二進制數據的值為7與第I個vCPU對應,8位二進制數據的值為6與第2個vCPU對應等。
[0078]這樣當上述目的vCPU的信息為00000110,即3位二進制數據的值為6時,且目的模型數據為O時,該信息就用于表示第2個vCPU。
[0079]當還可以將上述目的vCPU的信息還可以為3位二進制數據,而3位二進制數據可以表示8個值,即可以預先設置好這8值與上述8個vCPU的映射關系,例如,3位二進制數據的值為7與第I個vCPU對應,3位二進制數據的值為6與第2個vCPU對應等。
[0080]這樣當上述目的vCPU的信息為110,即3位二進制數據的值為6時,且目的模型數據為O時,該信息就用于表不第2個vCPU。
[0081]在另一個實施例中,上述虛擬寄存器為虛擬中斷命令寄存器vICR的高位寄存器或低位寄存器;步驟201具體可以包括:
[0082]當源vCPU需要向目的vCPU觸發中斷時,將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據和優化數據的寄存數據寫入源vCPU的vAPIC的一個虛擬寄存器,其中,所述優化數據被填入在所述虛擬寄存器的保留位,所述優化數據用于指示所述VMM從所述虛擬寄存器中解析出所述目的vCPU的信息和所述指示數據。
[0083]其中,上述優化數據具體可以是一個一位或者多個位的二進制數,例如,上述優化數據為“I”表示所述VMM從所述虛擬寄存器中解析出所述目的vCPU的信息和所述指示數據。
[0084]該實施例中,由于增加了上述優化數據,這樣可以實現當上述寄存數據包含該優化數據時,VMM實現中斷的方式就按照本方法實現中斷的方式進行,當上述寄存數據不包含該優化數據時,VMM實現中斷的方式就可以采用現有技術的方式實現中斷,從而保證本實施例中寄存數據或者上述虛擬寄存器可以兼容不同的VMM。
[0085]在另一個實施例中,步驟201具體可以包括:
[0086]當源vCPU需要向目的vCPU觸發中斷時,將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的一個虛擬寄存器,其中,所述目的vCPU的信息被填入在所述虛擬寄存器的保留位,所述指示數據包括被填入在所述虛擬寄存器的航向域、傳送模域、目的模型域、等級域、觸發模型域和目的速記域的數據。
[0087]其中,上述指示數據包括被填入在所述虛擬寄存器的航向域、傳送模域、目的模型域、等級域、觸發模型域和目的速記域的數據具體可以是指,該指示數據是用于填入在所述虛擬寄存器的航向域、傳送模域、目的模型域、等級域、觸發模型域和目的速記域的數據。
[0088]可選的,上述寄存數據包含上述目的vCPU的信息和指示數據具體可以是在執行步驟201之前,將信息和指示數據填入至寄存數據中,或者還可以是在執行在步驟201之前將信息填入至寄存數據,當在執行步驟201中將指示數據填入至該寄存數據中,或者在執行步驟201中將信息和指示數據填入至該寄存數據中。本實施例對此不作限定。
[0089]可選的,上述方法具體可以是應用于虛擬機,通過步驟201將寄存數據寫入vAPIC的一個虛擬寄存器,從而產生VM-Exit,即虛擬機進行一次虛擬機與VMM之間的上下文切換。當上述VMM從所述虛擬寄存器解析出所述目的vCPU的信息和所述指示數據后,就可以由該VMM根據所述目的vCPU的信息和指示數據將vCPU之間的中斷注入到所述目的vCPU。從而在實現中斷過程中上述虛擬機只產生了一次VM-Exit,從而可以提高虛擬機的性能。
[0090]可選的,上述vAPIC具體可以是上述虛擬機的vLocal APIC。
[0091]上述技術方案中,當源vCPU需要向目的vCPU觸發中斷時,將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的虛擬高級可編程中斷控制器vAPIC的一個虛擬寄存器,以使虛擬機監控器從所述虛擬寄存器解析出所述目的vCPU的信息和所述指示數據,并由所述虛擬機監控器根據所述目的vCPU的信息和指示數據將vCPU之間的中斷注入到所述目的vCPU。這樣一次中斷只需要執行一次對vAPIC的操作,即一次中斷只導致一次VM-Exit,從而可以提高虛擬機的性能。
[0092]圖3是本發明實施例提供的另一種vCPU之間的中斷的實現方法的流程示意圖,如圖3所示,包括:
[0093]301、當源vCPU需要向目的vCPU觸發中斷時,將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器,以使虛擬機監控器從高位寄存器或者低位寄存器解析出所述目的vCPU的信息和所述指示數據,并由所述虛擬機監控器根據所述目的vCPU的信息和指示數據將vCPU之間的中斷注入到所述目的vCPU。
[0094]這樣可以實現只需要一次操作就可以將上述目的vCPU的信息和指示數據寫入vICR的高位寄存器或者低位寄存器,從而實現一次中斷過程中只產生一次VM-Exit。
[0095]可選的,上述vICR具體可以為64位的虛擬寄存器,且上述vICR中的32位為上述高位寄存器,低32位為上述低位寄存器,即上述寄存數據為與高位寄存器對應的32位寄存數據。如圖4所示的vICR的高位寄存器中的56-63位數據為目的域,32-55位數據為保留位;vICR的低位寄存器中第0-7位為航向(Vector)域,第8-10位為傳送模型(DeliveryMode)域,第11位為目的模型(Destination Mode)域,第12位為傳送狀態(DeliveryStatus)域,第13位為保留位,第14位為等級(Level)域,第15位觸發模型(Trigger Mode)域,第16和17位為保留位,第18和19位為目的速記(Destination Shorthand)域,第20-31位數據為保留位。圖5所示的vICR的高位寄存器中的32-63位數據為目的域;vICR的低位寄存器中第0-7位為航向(Vector)域,第8-10位為傳送模型(Delivery Mode)域,第11位為目的模型(Destination Mode)域,第12和13位為保留位,第14位為等級(Level)域,第15位觸發模型(Trigger Mode)域,第16和17位為保留位,第18和19位為目的速記(Destination Shorthand)域,第20-31位數據為保留位。其中,上述高低寄存器和低位寄存器包括各個域都可以是采用現有技術中vICR對各域的定義,此處不作詳細說明。
[0096]可選的,上述將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器,具體可以包括:
[0097]將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的所述vICR的低位寄存器,其中,所述目的vCPU的信息被填入在所述低位寄存器的保留位。
[0098]例如,如圖4所示,上述寄存數據的信息被填入在低位寄存器的第20-31位、第16-17位或者第13位的保留位中,而上述指示數據被填入在低位寄存器的第0-7位為航向(Vector)域、第8-10位為傳送模型(Delivery Mode)域、第11位為目的模型(DestinationMode)域、第12位為傳送狀態(Delivery Status)域、第14位為等級(Level)域、第15位觸發模型(Trigger Mode)域、第18和19位為目的速記(Destination Shorthand)域中,即上述指示數據可以是包括被填入在上述低位寄存器的航向(Vector)域、傳送模型(DeliveryMode)域、目的模型(Destination Mode)域、傳送狀態(Delivery Status)域、等級(Level)域、觸發模型(Trigger Mode)域和目的速記(Destination Shorthand)域的數據。
[0099]例如,如圖5所示,上述寄存數據的信息被填入在低位寄存器的第20-31位、第16和7位或者第12-13位的保留位中,而上述指示數據被填入在低位寄存器的第0-7位為航向(Vector)域、第8-10位為傳送模型(Delivery Mode)域、第11位為目的模型(Destination Mode)域、第 14 位為等級(Level)域、第 15 位觸發模型(Trigger Mode)域、第18和19位為目的速記(Destination Shorthand)域中,即上述指示數據可以是包括被填入在上述低位寄存器的航向(Vector)域、傳送模型(Delivery Mode)域、目的模型(Destination Mode)域、等級(Level)域、觸發模型(Trigger Mode)域和目的速記(Destination Shorthand)域的數據。
[0100]可選的,上述將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器,具體可以包括:
[0101]將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的所述vICR的高位寄存器,其中,所述指示數據被填入在所述高位寄存器的保留位。[0102]例如,如圖4所示,上述寄存數據的信息被填入在高位寄存器的第56-63位的目的域,上述指示數據被填入在高位寄存器的第32-55位的保留位。
[0103]可選的,步驟301具體可以包括:
[0104]當源vCPU需要向目的vCPU觸發中斷時,將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據和優化數據的寄存數據寫入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器,其中,所述優化數據寫入所述高位寄存器或者低位寄存器的保留位,所述優化數據用于指示所述VMM從所述虛擬寄存器中解析出所述目的vCPU的信息和所述指示數據。
[0105]這樣可以實現上述寄存數據和虛擬寄存器兼容不同的虛擬器監控器。
[0106]可選的,通過上述分析可以得出圖5所示的寄存數據包比圖4所示的寄存數據包多了一位保留位,即第12位,而圖4所示的寄存數據包的第12位為傳送狀態(DeliveryStatus)域。這樣在采用圖5所示的寄存數據包時,本實施例中在中斷實現過程中,就不需要讀取的vICR傳送狀態(Delivery Status),直接執行步驟301。當在采用圖4所示的寄存數據包時,本實施例中在中斷實現過程中,在步驟301之前,還可以讀取的vICR傳送狀態(Delivery Status),再根據該傳送狀態執行步驟301。即在步驟301之前,所述方法可以包括:
[0107]讀取的vICR中的傳送狀態。
[0108]步驟301具體可以包括:
[0109]當源vCPU需要向目的vCPU觸發中斷時,再根據該傳送狀態將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器。
[0110]需要說明的是,在實際應用中vICR的傳送狀態都為空閑(Idle)狀態,所以本實施例中不執行讀取的vICR中的傳送狀態也是可以實現的,且可以減少一次VM-Exit。
[0111]上述技術方案中,當源VCPU需要向目的vCPU觸發中斷時,將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器。這樣一次中斷只需要執行一次對vAPIC的操作,即一次中斷只導致一次VM-Exit,從而可以提高虛擬機的性能。且由于是在vICR寫入上述寄存數據包,而vICR為專門用于控制中斷的虛擬寄存器,這樣VMM可以快速實現將vCPU之間的中斷注入到所述目的vCPU。
[0112]下面為本發明裝置實施例,本發明裝置實施例用于執行本發明方法實施例一至二實現的方法,為了便于說明,主要示出了與本發明實施例相關的部分,具體技術細節未揭示的,請參照本發明實施例一和實施例二。
[0113]圖6是本發明實施例提供的一種虛擬機的結構示意圖,如圖6所示,包括:一個或者多個vCPU61,vCPU包括VAPIC611,所述VAPIC611包括虛擬寄存器6111,其中:
[0114]所述一個或者多個VCPU61中的當前VCPU61用于:
[0115]當所述當前VCPU61需要向目的vCPU觸發中斷時,將包含所述目的vCPU的信息和用于表示所述當前VCPU61向所述目的vCPU觸發中斷的指示數據的寄存數據包寫入所述當前vCPU的VAPIC611的一個虛擬寄存器6111,以使虛擬機監控器從該虛擬寄存器6111解析出所述目的vCPU的信息和所述指示數據,并由所述虛擬機監控器根據所述目的vCPU的信息和指示數據將vCPU之間的中斷注入所述目的vCPU。
[0116]可選的,VCPU61將寄存數據寫入VAPIC611的虛擬寄存器6111,從而產生VM-Exit,即虛擬機進行一次虛擬機與VMM (例如:Hypervisor)之間的上下文切換。當上述VMM從所述虛擬寄存器6111解析出所述目的vCPU的信息和所述指示數據后,就可以由該VMM根據所述目的vCPU的信息和指示數據將vCPU之間的中斷注入到所述目的vCPU。從而在實現中斷過程中上述虛擬機只產生了一次VM-Exit,從而可以提高虛擬機的性能。
[0117]可選的,上述包含所述目的vCPU的信息和用于表示所述當前VCPU61向所述目的vCPU觸發中斷的指示數據的寄存數據包寫入所述當前vCPU的VAPIC611的一個虛擬寄存器6111的操作上,所述當前vCPU具體用于:
[0118]將包含所述目的vCPU的信息和用于表示所述當前VCPU61向目的vCPU觸發中斷的指示數據和優化數據的寄存數據寫入所述當前VCPU61的VAPIC611的一個虛擬寄存器6111,其中,所述優化數據被填入在該虛擬寄存器6111的保留位,所述優化數據用于指示所述VMM從該虛擬寄存器中解析出所述目的vCPU的信息和所述指示數據。
[0119]這樣通過上述優化數據可以提高上述寄存數據或者提高上述虛擬寄存器的兼容性。
[0120]可選的,上述包含所述目的vCPU的信息和用于表示所述當前VCPU61向所述目的vCPU觸發中斷的指示數據的寄存數據包寫入所述當前vCPU的VAPIC611的一個虛擬寄存器6111的操作上,所述當前vCPU具體用于:
[0121]將包含所述目的vCPU的信息和用于表示所述當前VCPU61向目的vCPU觸發中斷的指示數據的寄存數據寫入所述當前VCPU61的VAPIC611的一個虛擬寄存器611,其中,所述目的vCPU的信息被填入在該虛擬寄存器6111的保留位,所述指示數據包括被填入在該虛擬寄存器6111的航向域、傳送模域、目的模型域、等級域、觸發模型域和目的速記域的數據。
[0122]可選的,上述VAPIC611具體可以是上述虛擬機的vLocal vAPIC。
[0123]可選的,所述虛擬機上還運行有操作子系統(Guest OS) 62和應用程序63,其中:
[0124]操作子系統(Guest OS) 62,用于運行應用程序63 ;
[0125]應用程序63,用于執行虛擬機中業務。
[0126]可選的,上述目的vCPU可以是所述虛擬機的vCPU,也可以是另一個虛擬機的vCPUo
[0127]上述技術方案中,當所述當前vCPU需要向目的vCPU觸發中斷時,包含所述目的vCPU的信息和用于表示所述當前vCPU向所述目的vCPU觸發中斷的指示數據的寄存數據包寫入所述當前vCPU的vAPIC的一個虛擬寄存器,以使虛擬機監控器從該虛擬寄存器解析出所述目的vCPU的信息和所述指示數據,并由所述虛擬機監控器根據所述目的vCPU的信息和指示數據將vCPU之間的中斷注入到所述目的vCPU。這樣一次中斷只需要執行一次對vAPIC的操作,即一次中斷只導致一次VM-Exit,從而可以提高虛擬機的性能。
[0128]圖7是本發明實施例提供的另一種虛擬機的結構示意圖,如圖7所示,包括:一個或者多個 vCPU71,vVPU71 包括 vAPIC711,所述 vAPIC711 包括 vICR7111,其中:
[0129]一個或者多個VCPU71中的當前VCPU71用于:
[0130]當所述當前VCPU71需要向目的vCPU觸發中斷時,將包含所述目的vCPU的信息和用于表示所述當前VCPU71向目的vCPU觸發中斷的指示數據的寄存數據寫入所述當前VCPU71的VAPIC711的vICR7111的高位寄存器或者低位寄存器,以使VMM從所述高位寄存器或者低位寄存器解析出所述目的vCPU的信息和所述指示數據,并由所述VMM根據所述目的vCPU的信息和指示數據將vCPU之間的中斷注入到所述目的vCPU。
[0131]可選的,上述VICR7111包括的高位寄存器和低位寄存器的結構可以參考圖4和圖5所示的寄存器結構,此處不作重復說明。
[0132]可選的,上述將包含所述目的vCPU的信息和用于表示所述當前VCPU71向目的vCPU觸發中斷的指示數據的寄存數據寫入所述當前VCPU71的VAPIC711的vICR7111的高位寄存器或者低位寄存器的操作上,所述當前VCPU71具體可以用于:
[0133]將包含所述目的vCPU的信息和用于表示當前VCPU71向目的vCPU觸發中斷的指示數據的寄存數據寫入當前VCPU71的VAPIC711的所述vICR7111的低位寄存器,其中,所述目的vCPU的信息被填入在所述低位寄存器的保留位。
[0134]例如,如圖4所示,上述寄存數據的信息寫入低位寄存器的第20-31位、第16_17位或者第13位的保留位中,而上述指示數據寫入低位寄存器的第0-7位為航向(Vector)域、第8-10位為傳送模型(Delivery Mode)域、第11位為目的模型(Destination Mode)域、第12位為傳送狀態(Delivery Status)域、第14位為等級(Level)域、第15位觸發模型(Trigger Mode)域、第18和19位為目的速記(Destination Shorthand)域中,即上述指示數據可以是包括寫入上述低位寄存器的航向(Vector)域、傳送模型(Delivery Mode)域、目的模型(Destination Mode)域、傳送狀態(Delivery Status)域、等級(Level)域、觸發模型(Trigger Mode)域和目的速記(Destination Shorthand)域的數據。
[0135]例如,如圖5所示,上述寄存數據的信息寫入低位寄存器的第20-31位、第16和7位或者第12-13位的保留位中,而上述指示數據寫入低位寄存器的第0-7位為航向(Vector)域、第8-10位為傳送模型(Delivery Mode)域、第11位為目的模型(DestinationMode)域、第14位為等級(Level)域、第15位觸發模型(Trigger Mode)域、第18和19位為目的速記(Destination Shorthand)域中,即上述指示數據可以是包括寫入上述低位寄存器的航向(Vector)域、傳送模型(Delivery Mode)域、目的模型(Destination Mode)域、等級(Level)域、觸發模型(Trigger Mode)域和目的速記(Destination Shorthand)域的數據。
[0136]可選的,上述將包含所述目的vCPU的信息和用于表示所述當前VCPU71向目的vCPU觸發中斷的指示數據的寄存數據寫入所述當前VCPU71的VAPIC711的vICR7111的高位寄存器或者低位寄存器的操作上,所述當前VCPU71具體可以用于:
[0137]將包含所述目的vCPU的信息和用于表示所述當前VCPU71向目的vCPU觸發中斷的指示數據的寄存數據寫入所述當前VCPU71的VAPIC711的vICR7111的高位寄存器,其中,所述指示數據被填入在所述高位寄存器的保留位。
[0138]例如,如圖4所示,上述寄存數據包含的信息被填入在高位寄存器的第56-63位的目的域,上述指示數據被填入高位寄存器的第32-55位的保留位。
[0139]可選的,上述將包含所述目的vCPU的信息和用于表示所述當前VCPU71向目的vCPU觸發中斷的指示數據的寄存數據寫入所述當前VCPU71的VAPIC711的vICR7111的高位寄存器或者低位寄存器的操作上,所述當前VCPU71具體可以用于:[0140]將包含所述目的vCPU的信息和用于表示所述當前VCPU71向目的vCPU觸發中斷的指示數據和優化數據的寄存數據寫入所述當前VCPU71的VAPIC711的vICR7111的高位寄存器或者低位寄存器,其中,所述優化數據被填入在該高位寄存器或者低位寄存器的保留位,所述優化數據用于指示所述VMM從該虛擬寄存器中解析出所述目的vCPU的信息和所述指示數據。
[0141]這樣可以實現上述寄存數據兼容不同的虛擬器監控器。
[0142]可選的,當在采用圖4所示的寄存數據包時,本實施例中在中斷實現過程中,當前VCPU71在執行將包含所述目的vCPU的信息和用于表示所述當前VCPU71向目的vCPU觸發中斷的指示數據的寄存數據寫入所述當前VCPU71的VAPIC711的vICR7111的高位寄存器或者低位寄存器的操作之前,還可以用于:
[0143]讀取的vICR中的傳送狀態。
[0144]上述將包含所述目的vCPU的信息和用于表示所述當前VCPU71向目的vCPU觸發中斷的指示數據的寄存數據寫入所述當前VCPU71的VAPIC711的vICR7111的高位寄存器或者低位寄存器的操作上,所述當前VCPU71具體可以用于:
[0145]再根據該傳送狀態將包含所述目的vCPU的信息和用于表示所述當前VCPU71向目的vCPU觸發中斷的指示數據的寄存數據寫入所述當前VCPU71的VAPIC711的vICR7111的高位寄存器或者低位寄存器。
[0146]需要說明的是,在實際應用中vICR的傳送狀態都為空閑(Idle)狀態,所以本實施例中不執行讀取的vICR中的傳送狀態也是可以實現的,且可以減少一次VM-Exit。
[0147]可選的,所述虛擬機上還運行有操作子系統(Guest OS) 72和應用程序73,其中:
[0148]操作子系統(Guest OS) 72,用于運行應用程序73 ;
[0149]應用程序73,用于執行虛擬機中業務。
[0150]上述技術方案中,當所述當前vCPU需要向目的vCPU觸發中斷時,將包含所述目的vCPU的信息和用于表示所述當前vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入所述當前vCPU的vAPIC的vICR的高位寄存器或者低位寄存器,以使VMM從所述高位寄存器或者低位寄存器解析出所述目的vCPU的信息和所述指示數據,并由所述VMM根據所述目的vCPU的信息和指示數據將vCPU之間的中斷注入到所述目的vCPU。這樣一次中斷只需要執行一次對vAPIC的操作,即一次中斷只導致一次VM-Exit,從而可以提高虛擬機的性能,且由于是在vICR寫入上述寄存數據包,而vICR為專門用于控制中斷的虛擬寄存器,這樣VMM可以快速實現將vCPU之間的中斷注入到所述目的vCPU。
[0151]圖8是本發明實施例提供的一種計算節點的結構示意圖,如圖8所示,包括:硬件層81、運行在所述硬件層81之上的VMM82、以及運行在所述VMM之上的至少一個虛擬機,其中,所述至少一個虛擬機VM包括第一虛擬機83和第二虛擬機81,第一虛擬機83包括第一VCPU831、第一 VCPU831 包括第一 vAPIC8311,第一 vAPIC8311 包括第一虛擬寄存器 8311,第二虛擬機84包括第二 VCPU841,其中:
[0152]硬件層81,用于提供VMM82、第一虛擬機83和第二虛擬機84的虛擬化環境運行的硬件平臺。其中,硬件層81可包括多種硬件,例如某計算節點的硬件層可包括CPU和內存,還可以包括網卡、存儲器等等高速/低速輸入/輸出(I/O, Input/Output)設備,及具有特定處理功能的其它設備,如10MMU,其中IOMMU可用于虛擬機物理地址和Host物理地址的轉換。
[0153]第一 VCPU831,用于當第一 vCPU831需要向第二 vCPU觸發中斷時,將包含所述第二VCPU841的信息和用于表示所述第一 VCPU831向所述第二 vCPU841觸發中斷的指示數據的寄存數據包寫入所述第一虛擬寄存器83111 ;
[0154]所述VMM82,用于從所述第一虛擬寄存器83111解析出所述第二 vCPU的信息和所述指示數據,并根據所述第二 vCPU的信息和指示數據將vCPU之間的中斷注入到所述第二VCPU841,其中所述vCPU之間的中斷包括第一 VCPU831與第二 vCPU841之間的中斷。
[0155]可選的,當上述VMM上運行還有其它虛擬機(例如:第三虛擬機)時,本實施例還可以實現上述第一 vCPU與其它虛擬機(例如:第三虛擬機)的vCPU之間的中斷,具體可以實現過程請參考第一 vCPU與第二 vCPU之間的中斷實現過程,此作不作重復說明。
[0156]可選的,上述第一虛擬寄存器83111為vICR,該vICR包括高位寄存器和低位寄存器,其中,聞位寄存器和低位寄存器的結構具體可以參考圖4和圖5。
[0157]可選的,所述第一 VCPU831具體可以用于當第一 vCPU831需要向第二 vCPU觸發中斷時,將包含所述第二 VCPU841的信息和用于表示所述第一 VCPU831向所述第二 vCPU841觸發中斷的指示數據的寄存數據包寫入所述高位寄存器或低位寄存器;
[0158]所述VMM82具體可以用于從所述高位寄存器或低位寄存器解析出所述第二VCPU841的信息和所述指示數據,并根據所述第二 VCPU841的信息和指示數據將vCPU之間的中斷注入到所述第二 VCPU841,其中所述vCPU之間的中斷包括第一 vCPU8 31與第二VCPU841之間的中斷。
[0159]可選的,所述第一 VCPU831具體用于當第一 vCPU831需要向第二 vCPU841觸發中斷時,將包含所述第二 VCPU841的信息和用于表示所述第一 VCPU831向所述第二 vCPU841觸發中斷的指示數據的寄存數據包寫入所述低位寄存器,其中,所述第二 VCPU841的信息被填入在所述低位寄存器的保留位;
[0160]所述VMM82具體用于從所述低位寄存器的保留位解析出所述第二 vCPU841的信息,以及從所述低位寄存器解析出所述指示數據,并根據所述第二 VCPU841的信息和指示數據將vCPU之間的中斷注入到所述第二 VCPU841,其中所述vCPU之間的中斷包括第一VCPU831與第二 VCPU841之間的中斷。
[0161]其中,所述指示數據可以包括被填入在所述虛擬寄存器的航向域、傳送模域、目的模型域、等級域、觸發模型域和目的速記域的數據。
[0162]可選的,所述第一 VCPU831具體用于當第一 vCPU831需要向第二 vCPU841觸發中斷時,將包含所述第二 VCPU841的信息和用于表示所述第一 VCPU831向所述第二 vCPU841觸發中斷的指示數據的寄存數據包寫入所述高位寄存器,其中,所述指示數據被填入在所述聞位寄存器的保留位;
[0163]所述VMM82具體用于從所述高位寄存器的保留位解析出所述指示數據,以及從所述高位寄存器解析出所述第二 VCPU841的信息,并根據所述第二 VCPU841的信息和指示數據將vCPU之間的中斷注入到所述第二 VCPU841,其中所述vCPU之間的中斷包括第一VCPU831與第二 VCPU841之間的中斷。
[0164]可選的,所述第一 VCPU831具體可以用于當第一 vCPU831需要向第二 vCPU841觸發中斷時,將包含所述第二 VCPU841的信息和用于表示所述第一 VCPU831向所述第二VCPU841觸發中斷的指示數據和優化數據的寄存數據包寫入所述第一虛擬寄存器83111,其中,所述優化數據被填入在該第一虛擬寄存器83111的保留位,所述優化數據用于指示所述VMM從所述第一虛擬寄存器83111中解析出所述第二 vCPU的信息和所述指示數據;
[0165]所述VMM具體可以用于從所述第一虛擬寄存器83111解析出所述優化數據,并根據所述優化數據從所述第一虛擬寄存器83111解析出所述第二 vCPU的信息和所述指示數據,并根據所述第二 vCPU的信息和指示數據將vCPU之間的中斷注入到所述第二 VCPU841,其中所述vCPU之間的中斷包括第一 VCPU831與第二 VCPU841之間的中斷。
[0166]可選的,所述第一 VCPU831具體可以用于當第一 vCPU831需要向第二 vCPU觸發中斷時,將包含所述第二 VCPU841的信息和用于表示所述第一 VCPU831向所述第二 vCPU841觸發中斷的指示數據的寄存數據包寫入所述第一虛擬寄存器83111,其中,所述第二 vCPU的信息被填入在所述虛擬寄存器的保留位,所述指示數據包括被填入在所述虛擬寄存器的航向域、傳送模域、目的模型域、等級域、觸發模型域和目的速記域的數據;
[0167]所述VMM82具體可以用于從所述第一虛擬寄存器83111的保留位解析出所述第
二vCPU的信息,以及從所述第一虛擬寄存器83111的航向域、傳送模域、目的模型域、等級域、觸發模型域和目的速記域中解析出所述指示數據,并根據所述第二 vCPU的信息和指示數據將vCPU之間的中斷注入到所述第二 VCPU841,其中所述vCPU之間的中斷包括第一VCPU831與第二 VCPU841之間的中斷。
[0168]上述技術方案中,所述第一 vCPU當第一 vCPU需要向第二 vCPU觸發中斷時,將包含所述第二 vCPU的信息和用于表示所述第一 vCPU向所述第二 vCPU觸發中斷的指示數據的寄存數據包寫入所述第一虛擬寄存器;所述VMM從所述第一虛擬寄存器解析出所述第二vCPU的信息和所述指示數據,并根據所述第二 vCPU的信息和指示數據將vCPU之間的中斷注入到所述第二 vCPU,其中所述vCPU之間的中斷包括第一 vCPU與第二 vCPU之間的中斷。這樣一次中斷只需要執行一次對vAPIC的操作,即一次中斷只導致一次VM-Exit,從而可以提高虛擬機的性能。
[0169]圖9是本發明實施例提供的另一種計算節點的結構示意圖,如圖9所示,該計算節點包括:至少一個處理器91,例如CPU,至少一個網絡接口 92或者其他用戶接口 93,存儲器95,至少一個通信總線92。通信總線92用于實現這些組件之間的連接通信。該計算節點90可選的包含用戶接口 93,包括顯示器,鍵盤或者點擊設備(例如,鼠標,軌跡球(trackball),觸感板或者觸感顯示屏)。存儲器95可能包含高速RAM存儲器,也可能還包括非不穩定的存儲器(non-volatile memory),例如至少一個磁盤存儲器。存儲器605可選的可以包含至少一個位于遠離前述處理器91的存儲裝置。
[0170]在一些實施方式中,存儲器95存儲了如下的元素,可執行模塊或者數據結構,或者他們的子集,或者他們的擴展集:
[0171]操作系統951,包含各種系統程序,用于實現各種基礎業務以及處理基于硬件的任務;
[0172]應用程序模塊952,包含各種應用程序,用于實現各種應用業務。
[0173]應用程序模塊952中包括但不限于一個或者多個vCPU61,VCPU61包括vAPIC611,所述VAPIC611包括虛擬寄存器6111。
[0174]應用程序模塊952中各模塊的具體實現參見圖7和圖8所示實施例中的相應模塊,在此不贅述。
[0175]在本發明實施例中,通過調用存儲器95存儲的程序或指令,處理器91用于:
[0176]當源vCPU需要向目的vCPU觸發中斷時,
[0177]將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的虛擬高級可編程中斷控制器vAPIC的一個虛擬寄存器,以使虛擬機監控器從所述虛擬寄存器解析出所述目的vCPU的信息和所述指示數據,并由所述虛擬機監控器根據所述目的vCPU的信息和指示數據將vCPU之間的中斷注入到所述目的vCPUo
[0178]在上述各個實施例中,進一步地,所述處理器91還用于:
[0179]當源vCPU需要向目的vCPU觸發中斷時,將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器,以使VMM從所述高位寄存器或者低位寄存器解析出所述目的vCPU的信息和所述指示數據,并由所述VMM根據所述目的vCPU的信息和指示數據將vCPU之間的中斷注入到所述目的vCPU。
[0180]可選的,處理器91執行的將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器的操作,可以包括:
[0181]將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的所述vICR的低位寄存器,其中,所述目的vCPU的信息被填入在所述低位寄存器的保留位。
[0182]可選的,處理器91執行的將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的所述vICR的高位寄存器或者低位寄存器的操作,可以包括:
[0183]將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的所述vICR的高位寄存器,其中,所述指示數據被填入在所述高位寄存器的保留位。
[0184]在上述各個實施例中,進一步地,所述處理器91還用于:
[0185]當源vCPU需要向目的vCPU觸發中斷時,將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據和優化數據的寄存數據寫入源vCPU的vAPIC的一個虛擬寄存器,其中,所述優化數據被填入在所述虛擬寄存器的保留位,所述優化數據用于指示所述VMM從所述虛擬寄存器中解析出所述目的vCPU的信息和所述指示數據。以使VMM根據所述優化數據從所述虛擬寄存器解析出所述目的vCPU的信息和所述指示數據,并由所述VMM根據所述目的vCPU的信息和指示數據將vCPU之間的中斷注入到所述目的vCPU。
[0186]在上述各個實施例中,進一步地,所述處理器91還用于:
[0187]當源vCPU需要向目的vCPU觸發中斷時,將包含所述目的vCPU的信息和用于表示源vCPU向目的vCPU觸發中斷的指示數據的寄存數據寫入源vCPU的vAPIC的一個虛擬寄存器,其中,所述目的vCPU的信息被填入在所述虛擬寄存器的保留位,所述指示數據包括被填入在所述虛擬寄存器的航向域、傳送模域、目的模型域、等級域、觸發模型域和目的速記域的數據。以使VMM從所述虛擬寄存器解析出所述目的vCPU的信息和所述指示數據,并由所述VMM根據所述目的vCPU的信息和指示數據將vCPU之間的中斷注入到所述目的vCPU。
[0188]可見,采用上述方案后,這樣一次中斷只需要執行一次對vAPIC的操作,即一次中斷只導致一次VM-Exit,從而可以提高虛擬機的性能。且如果將上述寄存數據包寫入虛擬寄存器,這樣由于中斷命令寄存為專門用于控制中斷的虛擬寄存器,VMM可以快速實現將vCPU之間的中斷注入到所述目的vCPU。
[0189]圖10是本發明實施例還提供一種計算機系統的結構示意圖,如圖10所示,可包括:至少一個計算節點1000。
[0190]本發明實施例的計算節點的描述可參考前述實施例,這里不再贅述。
[0191]綜上,本發明實施例中,中斷過程只需要執行一次對vAPIC的操作,即一次中斷只導致一次VM-Exit,從而可以提高虛擬機的性能。且由于是在vICR寫入上述寄存數據包,而vICR為專門用于控制中斷的虛擬寄存器,這樣VMM可以快速實現將vCPU之間的中斷注入到所述目的vCPU。另外,本發明實施例中,是在寄存數據包的保留位中填入信息這樣在執行本方法過程中,不會修改寄存數據現有的功能。另外,本發明實施例中在寄存數據增加了優化數據,從而可以提高寄存數據和虛擬寄存器的兼容性。
[0192]具體的,為了克服現有技術中,IPI中斷是系統常見中斷,IPI中斷處理中的APIC虛擬寄存器訪問會引起VM-Exit,從而導致虛擬機性能下降的問題,在一種實現方式下,本發明實施例通過虛擬APIC的擴展位,將三次APIC訪問合并為一次,從而減少APIC訪問次數,達到優化IPI中斷性能的效果,從而提升了虛擬機和系統的性能。
[0193]應當理解的是,對中斷處理過程中,其他類型中斷對APIC虛擬寄存器多次訪問造成的VM-Exit場景也可以采用本發明實施例類似方式實現以優化性能。
[0194]本領域普通技術人員可以理解實現上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關的硬件(例如處理器)來完成,所述的程序可存儲于一計算機可讀取存儲介質中,該程序在執行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存取存儲器(Random Access Memory,簡稱 RAM)等。
[0195]以上所揭露的僅為本發明較佳實施例而已,當然不能以此來限定本發明之權利范圍,因此依本發明權利要求所作的等同變化,仍屬本發明所涵蓋的范圍。
【權利要求】
1.一種虛擬處理器之間的中斷的實現方法,其特征在于,包括: 當源虛擬處理器需要向目的虛擬處理器觸發中斷時, 將包含所述目的虛擬處理器的信息和用于表示源虛擬處理器向目的虛擬處理器觸發中斷的指示數據的寄存數據寫入源虛擬處理器的虛擬高級可編程中斷控制器VAPIC的一個虛擬寄存器,以使虛擬機監控器從所述虛擬寄存器解析出所述目的虛擬處理器的信息和所述指示數據,并由所述虛擬機監控器根據所述目的虛擬處理器的信息和指示數據將虛擬處理器之間的中斷注入到所述目的虛擬處理器。
2.如權利要求1所述的方法,其特征在于,所述虛擬寄存器為虛擬中斷命令寄存器vICR的高位寄存器或低位寄存器;所述將包含所述目的虛擬處理器的信息和用于表示源虛擬處理器向目的虛擬處理器觸發中斷的指示數據的寄存數據寫入源虛擬處理器的vAPIC的一個虛擬寄存器,包括: 將包含所述目的虛擬處理器的信息和用于表示源虛擬處理器向目的虛擬處理器觸發中斷的指示數據的寄存數據寫入源虛擬處理器的vAPIC的所述vICR的高位寄存器或者低位寄存器。
3.如權利要求2所述的方法,其特征在于,所述將包含所述目的虛擬處理器的信息和用于表示源虛擬處理器向目的虛擬處理器觸發中斷的指示數據的寄存數據寫入源虛擬處理器的vAPIC的所述vICR的高位寄存器或者低位寄存器,包括: 將包含所述目的虛擬處理器的信息和用于表示源虛擬處理器向目的虛擬處理器觸發中斷的指示數據的寄存數據寫入源虛擬處理器的vAPIC的所述vICR的低位寄存器,其中,所述目的虛擬處理器的信息被填入在所述低位寄存器的保留位;或者 將包含所述目的虛擬處理器的信息和用于表示源虛擬處理器向目的虛擬處理器觸發中斷的指示數據的寄存數據寫入源虛擬處理器的vAPIC的所述vICR的高位寄存器,其中,所述指示數據被填入在所述高位寄存器的保留位。
4.如權利要求1所述的方法,其特征在于,所述將包含所述目的虛擬處理器的信息和用于表示源虛擬處理器向目的虛擬處理器觸發中斷的指示數據的寄存數據寫入源虛擬處理器的vAPIC的一個虛擬寄存器,包括: 將包含所述目的虛擬處理器的信息和用于表示源虛擬處理器向目的虛擬處理器觸發中斷的指示數據和優化數據的寄存數據寫入源虛擬處理器的vAPIC的一個虛擬寄存器,其中,所述優化數據被填入在所述虛擬寄存器的保留位,所述優化數據用于指示所述虛擬機監控器從所述虛擬寄存器中解析出所述目的虛擬處理器的信息和所述指示數據。
5.如權利要求1所述的方法,其特征在于,所述將包含所述目的虛擬處理器的信息和用于表示源虛擬處理器向目的虛擬處理器觸發中斷的指示數據的寄存數據寫入源虛擬處理器的vAPIC的一個虛擬寄存器,包括: 將包含所述目的虛擬處理器的信息和用于表示源虛擬處理器向目的虛擬處理器觸發中斷的指示數據的寄存數據寫入源虛擬處理器的vAPIC的一個虛擬寄存器,其中,所述目的虛擬處理器的信息被填入在所述虛擬寄存器的保留位,所述指示數據包括被填入在所述虛擬寄存器的航向域、傳送模域、目的模型域、等級域、觸發模型域和目的速記域的數據。
6.一種虛擬機,其特征在于,包括:一個或多個虛擬處理器,所述虛擬處理器包括虛擬高級可編程中斷控制器vAPIC,所述vAPIC包括虛擬寄存器,其中:所述一個或多個虛擬處理器中當前虛擬處理器用于: 當所述當前虛擬處理器需要向目的虛擬處理器觸發中斷時,將包含所述目的虛擬處理器的信息和用于表示所述當前虛擬處理器向所述目的虛擬處理器觸發中斷的指示數據的寄存數據包寫入所述當前虛擬處理器的vAPIC的一個虛擬寄存器,以使虛擬機監控器從該虛擬寄存器解析出所述目的虛擬處理器的信息和所述指示數據,并由所述虛擬機監控器根據所述目的虛擬處理器的信息和指示數據將虛擬處理器之間的中斷注入所述目的虛擬處理器。
7.如權利要求6所述的虛擬機,其特征在于,所述虛擬寄存器為虛擬中斷命令寄存器vICR的高位寄存器或低位寄存器;所述包含所述目的虛擬處理器的信息和用于表示所述當前虛擬處理器向所述目的虛擬處理器觸發中斷的指示數據的寄存數據包寫入所述當前虛擬處理器的vAPIC的一個虛擬寄存器的操作上,所述當前虛擬處理器具體用于: 將包含所述目的虛擬處理器的信息和用于表示所述當前虛擬處理器向目的虛擬處理器觸發中斷的指示數據的寄存數據寫入所述當前虛擬處理器的vAPIC的vICR的高位寄存器或者低位寄存器。
8.如權利要求7所述的虛擬機,其特征在于,所述將包含所述目的虛擬處理器的信息和用于表示所述當前虛擬處理器向目的虛擬處理器觸發中斷的指示數據的寄存數據寫入所述當前虛擬處理器的vAPIC的vICR的高位寄存器或者低位寄存器的操作上,所述虛擬處理器具體用于: 將包含所述目的虛擬處理器的信息和用于表示所述當前虛擬處理器向目的虛擬處理器觸發中斷的指示數據的寄存數據寫入所述當前虛擬處理器的vAPIC的vICR的低位寄存器,其中,所述目的虛擬處理器的信息被填入在所述低位寄存器的保留位;或者 將包含所述目的虛擬處理器的信息和用于表示所述當前虛擬處理器向目的虛擬處理器觸發中斷的指示數據的寄存數據寫入所述當前虛擬處理器的vAPIC的vICR的高位寄存器,其中,所述指示數據被填入在所述高位寄存器的保留位。
9.如權利要求6所述的虛擬機,其特征在于,所述包含所述目的虛擬處理器的信息和用于表示所述當前虛擬處理器向所述目的虛擬處理器觸發中斷的指示數據的寄存數據包寫入所述當前虛擬處理器的vAPIC的一個虛擬寄存器的操作上,所述當前虛擬處理器具體用于: 將包含所述目的虛擬處理器的信息和用于表示所述當前虛擬處理器向目的虛擬處理器觸發中斷的指示數據和優化數據的寄存數據寫入所述當前虛擬處理器的vAPIC的一個虛擬寄存器,其中,所述優化數據被填入在該虛擬寄存器的保留位,所述優化數據用于指示所述虛擬機監控器從該虛擬寄存器中解析出所述目的虛擬處理器的信息和所述指示數據。
10.如權利要求6所述的虛擬機,其特征在于,所述包含所述目的虛擬處理器的信息和用于表示所述當前虛擬處理器向所述目的虛擬處理器觸發中斷的指示數據的寄存數據包寫入所述當前虛擬處理器的vAPIC的一個虛擬寄存器的操作上,所述當前虛擬處理器具體用于: 將包含所述目的虛擬處理器的信息和用于表示所述當前虛擬處理器向目的虛擬處理器觸發中斷的指示數據的寄存數據寫入所述當前虛擬處理器的vAPIC的一個虛擬寄存器,其中,所述目的虛擬處理器的信息被填入在該虛擬寄存器的保留位,所述指示數據包括被填入在該虛擬寄存器的航向域、傳送模域、目的模型域、等級域、觸發模型域和目的速記域的數據。
11.一種計算節點,其特征在于,包括:硬件層、運行在所述硬件層之上的虛擬機監控器、以及運行在所述虛擬機監控器之上的至少一個虛擬機,其中,所述至少一個虛擬機包括第一虛擬機和第二虛擬機,第一虛擬機包括第一虛擬處理器,所述第一虛擬處理器包括第一虛擬高級可編程中斷控制器VAPIC,所述第一 vAPIC包括第一虛擬寄存器,第二虛擬機包括第二虛擬處理器,其中: 所述第一虛擬處理器,用于當第一虛擬處理器需要向第二虛擬處理器觸發中斷時,將包含所述第二虛擬處理器的信息和用于表示所述第一虛擬處理器向所述第二虛擬處理器觸發中斷的指示數據的寄存數據包寫入所述第一虛擬寄存器; 所述虛擬機監控器,用于從所述第一虛擬寄存器解析出所述第二虛擬處理器的信息和所述指示數據,并根據所述第二虛擬處理器的信息和指示數據將虛擬處理器之間的中斷注入到所述第二虛擬處理器,其中所述虛擬處理器之間的中斷包括第一虛擬處理器與第二虛擬處理器之間的中斷。
12.如權利要求11所述的計算節點,其特征在于,所述第一虛擬寄存器為為虛擬中斷命令寄存器vICR的高位寄存器或低位寄存器; 所述第一虛擬處理器具體用于當第一虛擬處理器需要向第二虛擬處理器觸發中斷時,將包含所述第二虛擬處理器的信息和用于表示所述第一虛擬處理器向所述第二虛擬處理器觸發中斷的指示數據的寄存數據包寫入所述高位寄存器或低位寄存器; 所述虛擬機監控器具體用于從所述高位寄存器或低位寄存器解析出所述第二虛擬處理器的信息和所述指示數據,并根據所述第二虛擬處理器的信息和指示數據將虛擬處理器之間的中斷注入到所述第二虛擬處理器,其中所述虛擬處理器之間的中斷包括第一虛擬處理器與第二虛擬處理器之間的中斷。
13.如權利要求12所述的計算節點,其特征在于, 所述第一虛擬處理器具體用于當第一虛擬處理器需要向第二虛擬處理器觸發中斷時,將包含所述第二虛擬處理器的信息和用于表示所述第一虛擬處理器向所述第二虛擬處理器觸發中斷的指示數據的寄存數據包寫入所述低位寄存器,其中,所述第二虛擬處理器的信息被填入在所述低位寄存器的保留位; 所述虛擬機監控器具體用于從所述低位寄存器的保留位解析出所述第二虛擬處理器的信息,以及從所述低位寄存器解析出所述指示數據,并根據所述第二虛擬處理器的信息和指示數據將虛擬處理器之間的中斷注入到所述第二虛擬處理器,其中所述虛擬處理器之間的中斷包括第一虛擬處理器與第二虛擬處理器之間的中斷;或者 所述第一虛擬處理器具體用于當第一虛擬處理器需要向第二虛擬處理器觸發中斷時,將包含所述第二虛擬處理器的信息和用于表示所述第一虛擬處理器向所述第二虛擬處理器觸發中斷的指示數據的寄存數據包寫入所述高位寄存器,其中,所述指示數據被填入在所述聞位寄存器的保留位; 所述虛擬機監控器具體用于從所述高位寄存器的保留位解析出所述指示數據,以及從所述高位寄存器解析出所述第二虛擬處理器的信息,并根據所述第二虛擬處理器的信息和指示數據將虛擬處理器之間的中斷注入到所述第二虛擬處理器,其中所述虛擬處理器之間的中斷包括第一虛擬處理器與第二虛擬處理器之間的中斷。
14.如權利要求11所述的計算節點,其特征在于, 所述第一虛擬處理器具體用于當第一虛擬處理器需要向第二虛擬處理器觸發中斷時,將包含所述第二虛擬處理器的信息和用于表示所述第一虛擬處理器向所述第二虛擬處理器觸發中斷的指示數據和優化數據的寄存數據包寫入所述第一虛擬寄存器,其中,所述優化數據被填入在該虛擬寄存器的保留位,所述優化數據用于指示所述虛擬機監控器從所述第一虛擬寄存器中解析出所述第二虛擬處理器的信息和所述指示數據; 所述虛擬機監控器具體用于從所述第一虛擬寄存器解析出所述優化數據,并根據所述優化數據從所述第一虛擬寄存器解析出所述第二虛擬處理器的信息和所述指示數據,并根據所述第二虛擬處理器的信息和指示數據將虛擬處理器之間的中斷注入到所述第二虛擬處理器,其中所述虛擬處理器之間的中斷包括第一虛擬處理器與第二虛擬處理器之間的中斷。
15.如權利要求11所述的計算節點,其特征在于, 所述第一虛擬處理器具體用于當第一虛擬處理器需要向第二虛擬處理器觸發中斷時,將包含所述第二虛擬處理器的信息和用于表示所述第一虛擬處理器向所述第二虛擬處理器觸發中斷的指示數據的寄存數據包寫入所述第一虛擬寄存器,其中,所述第二虛擬處理器的信息被填入在所述虛擬寄存器的保留位,所述指示數據包括被填入在所述虛擬寄存器的航向域、傳送模域、目的模型域、等級域、觸發模型域和目的速記域的數據; 所述虛擬機監控器具體用于從所述第一虛擬寄存器的保留位解析出所述第二虛擬處理器的信息,以及從所述第一虛擬寄存器的航向域、傳送模域、目的模型域、等級域、觸發模型域和目的速記域中解析出所述指示數據,并根據所述第二虛擬處理器的信息和指示數據將虛擬處理器之間的中斷注入到所述第二虛擬處理器,其中所述虛擬處理器之間的中斷包括第一虛擬處理器與第二虛擬處理器之間的中斷。
16.一種計算機系統,其特`征在于,包括:至少一個如權利要求11-15任一項所述的計算節點。
【文檔編號】G06F9/48GK103559087SQ201310531026
【公開日】2014年2月5日 申請日期:2013年10月31日 優先權日:2013年10月31日
【發明者】藏洪永, 張浩宇 申請人:華為技術有限公司