TWI722071B - 虛擬機器之間的中斷 - Google Patents
虛擬機器之間的中斷 Download PDFInfo
- Publication number
- TWI722071B TWI722071B TW105140685A TW105140685A TWI722071B TW I722071 B TWI722071 B TW I722071B TW 105140685 A TW105140685 A TW 105140685A TW 105140685 A TW105140685 A TW 105140685A TW I722071 B TWI722071 B TW I722071B
- Authority
- TW
- Taiwan
- Prior art keywords
- virtual machine
- interrupt
- processor
- instruction
- target virtual
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
揭露了虛擬機器之間的中斷的本發明之實施例。在一實施例中,一處理器包含至少部分地以該處理器的硬體實施之一指令單元以及一執行單元。該指令單元接收將一中斷傳送到一目標虛擬機器的一指令。該執行單元在不退出一傳送虛擬機器之情形下於該傳送虛擬機器上執行該指令。該指令之執行包括:使用該指令指定之一標示元尋找一發布中斷描述符。
Description
本發明之揭露係有關資訊處理之領域,且尤係有關資訊處理系統中之虛擬化(virtualization)之領域。
一般而言,資訊處理系統中之虛擬化的概念容許一或多個作業系統(Operating System;簡稱OS)(每一OS、一OS)的多個實例在一單一資訊處理系統上運行,即使每一OS被設計成可完全且直接地控制該系統及其資源,也容許如此運行。通常使用軟體(例如,一虛擬機監視器(Virtual Machine Monitor;簡稱VMM)或超管理器(hypervisor))將具有其中包括一或多個虛擬處理器(virtual processor)的虛擬資源之一虛擬機器(Virtual Machine;VM)提供給每一OS,使該OS可完全且直接地控制該等虛擬資源,而實施虛擬化,而且該VMM維持用於執行諸如在該等VM(虛擬環境)之間分享及/或分配實體資源等的虛擬化政策之一系統環境。
100‧‧‧系統
112、170、300‧‧‧處理器
114‧‧‧記憶體控制器
116‧‧‧主機結構控制器
118‧‧‧輸入/輸出控制器
120‧‧‧系統記憶體
130‧‧‧圖形處理器
140‧‧‧硬體加速器
110‧‧‧系統單晶片
200‧‧‧系統記憶體空間
210、250‧‧‧虛擬機控制結構
212、322‧‧‧VM間IPI指令
214‧‧‧客體軟體
220‧‧‧VM間IPI表
222‧‧‧條目
224‧‧‧標示元欄位
226‧‧‧發布中斷描述符位址欄位
228‧‧‧向量欄位
230‧‧‧虛擬局部高級可程式中斷控制器頁
240‧‧‧發布中斷描述符
252‧‧‧虛擬局部高級可程式中斷控制器指標
254‧‧‧發布中斷描述符指標
132‧‧‧顯示器
160‧‧‧輸入/輸出裝置
162‧‧‧網路介面控制器
164‧‧‧資訊儲存裝置
166‧‧‧資訊儲存裝置控制器
300‧‧‧處理器
310‧‧‧儲存單元
320‧‧‧指令單元
322‧‧‧VM間IPI指令
330‧‧‧執行單元
340‧‧‧控制單元
350‧‧‧局部中斷控制器
332‧‧‧VM間IPI表查詢電路
334‧‧‧中斷發布電路
342‧‧‧VM間IPI控制
410、420、430、440‧‧‧欄位
422、424、426‧‧‧子欄位
已參照各附圖而以舉例且非限制之方式說明了本發明。
第1圖示出可提供被用於各虛擬機器間之中斷的本發明的一實施例之一資訊處理系統。
第2圖示出根據本發明的一實施例的一系統記憶體空間。
第3圖根據本發明的一實施例而示出包含對各虛擬機器間之中斷的支援的一處理器。
第4圖示出根據本發明的一實施例的一發布中斷描述符格式。
第5圖根據本發明的一實施例而示出用於各虛擬機器間之中斷的一方法。
說明了虛擬機器之間的中斷的本發明之實施例。在本說明中,可能述及了諸如組件及系統組態等的許多特定細節,以便提供本發明的徹底了解。然而,熟悉此項技術者應可了解:可在沒有這些特定細節的情形下實施本發明。此外,並未詳細示出一些習知的結構、電路、及其他特徵,以避免非必要地模糊了本發明。
在下文的說明中,提及"一個實施例"、"一實施例"、"例示實施例"、"各實施例"等的辭語時,意指所述的本發明之該一或多個實施例可包括特定特徵、結構、或特性,
但是一個以上的實施例以及每一實施例可能不必然包括該特定特徵、結構、或特性。此外,某些實施例可能有其他實施例中所述的某些或所有特徵,或者可能沒有其他實施例中所述的特徵。
在本說明及申請專利範圍的用法中,且除非另有指定,否則將"第一"、"第二"、"第三"等的序數形容詞用於描述一元件時,只是指示與被提到的元件相像的一元件之一特定例子或與被提到的元件相像的不同例子,且其用意並非意味著被以此種方式描述的該等元件必須按照特定的時間、空間、排行、或任何其他方式之順序。
此外,術語"位元"、"旗標"、"欄位"、"條目"、"指示符"等的辭語可被用於描述以硬體或軟體實施的暫存器、表、資料庫、或其他資料結構中之儲存位置的任何類型或內容,但是其用意並非將本發明之實施例限制在儲存位置的任何特定類型或任何特定儲存位置內之位元數或其他元素之數目。術語"清除"可被用於指示將零的邏輯值儲存在一儲存位置,或以其他方式使零的邏輯值被儲存在一儲存位置,且語"設定"可被用於指示將一、所有的一、或某一其他指定值的邏輯值儲存在一儲存位置,或以其他方式使一、所有的一、或某一其他指定值的邏輯值被儲存在一儲存位置;然而,這些術語之用意並非將本發明之實施例限制在任何特定的邏輯慣例,這是因為可在本發明之實施例內使用任何邏輯慣例。
此外,在本發明實施例的說明之用法中,各術語間之
"/"字元可意指:一實施例可包含第一項及/或第二項(及/或其他額外的項),或可使用、利用、及/或根據第一項及/或第二項(及/或其他額外的項)實施一實施例。
如技術領域及先前技術中所述,資訊處理系統可提供對其中包括多個VM之建立等的虛擬化之支援。各VM間之通訊可能涉及:一第一VM將一通知或中斷傳送到一第二VM(任何此種通知或中斷可被稱為VM間中斷(inter-VM interrupt)或VM間處理器間中斷(inter-VM Inter-Processor-Interrupt;簡稱inter-VM-IPI)。可能期望將本發明之實施例用於藉由取消VM退出(VM exit)而提高VM間中斷的效率。可使用具有包含用於支援虛擬化的指令的一指令集架構(Instruction Set Architecture;簡稱ISA)之一處理器實施本發明之實施例,其中用於支援虛擬化的該等指令可以是任何現有ISA的一組虛擬化延伸之一部分,或可根據各種其他方法。
第1圖示出一系統100,該系統100是包含用於VM間中斷的本發明的一實施例之一資訊處理系統。系統100可代表諸如伺服器、桌上型電腦、可攜式電腦、機上盒、諸如平板電腦或智慧型手機等的手持裝置、或嵌入式控制系統等的任何類型之資訊處理系統。系統100包含處理器112、記憶體控制器114、主機結構控制器116、I/O控制器118、系統記憶體120、圖形處理器130、以及硬體加速器140。
用於實施本發明之系統可包含任何數目的每一這些組件、以及諸如週邊裝置及/或I/O裝置(例如,如將於下文所述者)等的任何其他組件或其他元件。除非另有指定,否則可透過任何數目的匯流排、點對點、或其他有線或無線介面或連接而使本實施例或任何系統實施例中之任何或所有的該等組件或其他元件被連接、耦合、或以其他方式相互通訊。第1圖中示出或未示出之系統100的任何組件或其他部分可被整合到或被以其他方式包含到諸如SOC 110等的一單晶片(系統單晶片(System-On-a-Chip;簡稱SOC))、晶粒、基板、或封裝上或之中。
系統記憶體120可以是動態隨機存取記憶體(Dynamic Random Access Memory;簡稱DRAM)或處理器112可讀取的任何其他類型的媒體。系統記憶體120可被用於提供一實體記憶體空間(physical memory space),該實體記憶體空間被用於提取諸如第2圖所示之系統記憶體空間200等的系統100之一系統記憶體空間。在系統100的操作期間之各時間上,系統記憶體空間200的內容可包括被儲存在系統記憶體120的及/或被移動出、被移動到、被複製出、被複製到、及/或被以其他方式儲存在系統100中之各記憶體、儲存裝置、及/或其他儲存位置(例如,處理器快取記憶體及暫存器)的資料、指令、碼、程式、軟體、及/或其他資訊之各種組合。
系統記憶體空間200可在邏輯上被組織為、可被定址
到、及/或可被以其他方式分割為(例如,使用任何已知的記憶體管理、虛擬化、分割、及/或其他技術)一些一或多種大小的區域。在各實施例中,此種區域可以是4K位元組的頁,因而為了便利,此種區域在本說明中可被稱為頁;然而,在本說明中使用術語"頁"時,可意指記憶體的任何大小之區域。
在本發明的各實施例中,系統記憶體空間200可包含將於下文中定義且/或說明之對應於一傳送VM的VM控制結構(VM Control Structure;簡稱VMCS)210、將被該傳送VM執行的客體軟體214中之VM間IPI指令212、VM間IPI表220(包含條目222,該條目222具有標示元欄位224、發布中斷描述符(Posted-Interrupt Descriptor;簡稱PID)位址欄位226、以及向量欄位228)、虛擬局部高級可程式中斷控制器(Advanced Programmable Interrupt Controller;簡稱APIC)頁230、PID 240、以及對應於一目標VM的VMCS 250(包含虛擬局部APIC(virtual local APIC;簡稱vAPIC)指標252以及PID指標254)。
記憶體控制器114可代表用於存取、維護、及/或以其他方式控制系統記憶體120之任何電路或組件。主機結構控制器116可代表用於控制處理器及/或其他系統組件可透過其而通訊的一互連網路或結構之任何電路或組件。圖形處理器130可包括用於處理顯示器132的圖形資料之任何處理器或其他組件。硬體加速器140可代表處理器可
用於卸載諸如加密或壓縮演算法的硬體加速等的功能之任何密碼、壓縮、或其他加速器。
I/O控制器118可代表諸如I/O裝置160(例如,觸控式螢幕、鍵盤、麥克風、喇叭、其他音訊裝置、相機、視訊或其他媒體裝置、移動感測器或其他感測器、以及用於全球衛星定位或其他資訊之接收器等的I/O裝置)、網路介面控制器(Network Interface Controller;簡稱NIC)162、及/或資訊儲存裝置164等的週邊裝置、輸入/輸出(Input/Output;簡稱I/O)裝置、或其他組件或裝置可透過其而被連接到或被耦合到處理器112之諸如一晶片組組件等的任何電路或組件。資訊儲存裝置164可代表其中包括諸如快閃記憶體及/或固態硬碟、磁碟、或光碟機等的任何一或多種類型的持續或非揮發性記憶體或儲存器之任何一或多個組件,且可包括其本身的資訊儲存裝置控制器166。
處理器112可代表其中包括被整合在單一基板上或被封裝在單一構裝內之一或多個處理器或處理器核心的一硬體組件之全部或部分,其中每一處理器或處理器核心可包含以任何方式組合的多個執行緒及/或多個執行核心。被表示為處理器112之每一處理器可以是其中包括諸如Intel®Core®處理器系列中之一處理器或Intel®Corporation或另一公司供應的其他處理器系列之一處理器等的一般用途微處理器、特殊用途處理器或微控制器、或可在其中實施本發明的一實施例的一資訊處理系統的任
何其他裝置或組件之任何類型的處理器。處理器112可被建構及設計成根據任何ISA而操作。
系統100及/或SOC 110可包含一或多個額外的處理器或處理器核心(其中一額外的處理器或處理器核心被表示為處理器170),每一或任一額外的處理器或處理器核心可以是其中包括與處理器112相同的、與處理器112相容的、與處理器112在相同處理器系列中的、與處理器112共享相同的ISA的任何部分的、及/或與處理器112在任何方面都不同的一處理器或處理器核心之任何類型的處理器或處理器核心。
第3圖示出處理器300,該處理器300可代表第1圖中之處理器112及/或處理器170的一實施例、或第1圖中之處理器112及/或處理器170的一多核心處理器實施例的一執行核心。處理器300可包含儲存單元310、指令單元320、執行單元330、控制單元340、以及局部中斷控制器350。處理器300亦可包含第3圖中未示出的任何其他電路、結構、或邏輯。
儲存單元310可包括處理器300內之可針對任何用途而被使用的任何類型的儲存器之任何組合;例如,儲存單元310可包括使用任何記憶體或儲存器技術實施之用於儲存能力資訊、組態資訊、控制資訊、狀態資訊、效能資訊、指令、資料、以及可被用於處理器300的操作之任何其他資訊之任何數目的可讀取的、可寫入的、及/或可讀取及寫入的暫存器、緩衝器、及/或快取記憶體、以及可
被用於存取此種儲存器及/或導致或支援與存取此種儲存器相關聯的各種操作及/或組態之電路。
指令單元320可包括用於提取、接收、解碼、解譯、排程、及/或處置將被處理器300執行的指令(包括將於下文中說明之VM間IPI指令322)之諸如一指令解碼器等的任何電路、邏輯、結構、及/或其他硬體。可在本發明的範圍內使用任何指令格式;例如,一指令可包含一運算碼(opcode)以及一或多個運算元(operand),其中該運算碼可被解碼為一或多個微指令(micro-instruction)或微操作(micro-operation),以供執行單元330執行。可隱式地、直接地、間接地、或根據任何其他方法使運算元或其他參數與一指令相關聯。
執行單元330可包括用於處理資料及執行指令、微指令、及/或微操作之諸如算術單元、邏輯單元、浮點單元、移位器等的任何電路、邏輯、結構、及/或其他硬體。執行單元330可代表任何一或多個在實體上或邏輯上不同的執行單元。執行單元330可包含以將於下文中說明之方式將來自一VM間IPI指令的一標示元用於尋找一VM間IPI表中之一PID位址以及一中斷向量的VM間IPI表查詢電路332。執行單元330亦可包含用於以將於下文中說明之方式發布一中斷的中斷發布電路334。
控制單元340可包括用於控制處理器300的該等單元及其他元件(包括VM間IPI控制342)的操作以及處理器300內之資料、進入處理器300之資料、及自處理器
300輸出之資料的傳送之任何微碼、韌體、電路、邏輯、結構、及/或硬體。控制單元340可諸如藉由使處理器300使用執行單元330及/或其他資源執行指令單元320接收的指令、以及自指令單元320接收的指令衍生之微指令或微操作,而使處理器300執行或參與執行諸如將於下文中說明的方法實施例等的本發明之方法實施例。執行單元330對指令的執行可根據儲存單元310中儲存之控制及/或組態資訊而改變。
局部中斷控制器350可包括用於接收、產生、優先化、遞送、保持擱置、或以其他方式控制或管理中斷要求的任何電路、邏輯、結構、及/或其他硬體。例如,局部中斷控制器350可以是Intel Corporation供應的Core®處理器系列中之一處理器的一局部APIC。本發明之實施例可包含根據任何已知方法的局部中斷控制器350之虛擬化,以便將一虛擬局部中斷控制器提供給自處理器300抽象化的每一虛擬處理器。
處理器300可支援根據任何方法的虛擬化。例如,處理器300可在兩種模式中操作,而在第一(根)模式中,軟體在任何虛擬化環境之外直接在硬體上運行,且在第二(非根)模式中,軟體在其預定特權等級(privilege level)下運行,但是在該第一模式中運行的一VMM代管的一虛擬環境內運行。在該虛擬環境中,存取特權暫存器或資源之諸如中斷、異常(exception)、以及嘗試(attempt)等的某些事件、操作、以及情況可能被中斷,
亦即,使該處理器退出該虛擬環境(VM退出),因而該VMM可諸如操作而執行虛擬化政策。該處理器可支援用於建立、進入(VM進入(VM entry))、退出、以及維持一虛擬環境之指令,且可包含用於指示或控制該處理器的虛擬化能力之暫存器位元或其他結構。
於說明本發明之實施例時,包括第1圖中被示出為系統100的"裸機"平台、以及自一裸機平台(bare metal platform)(其中可自該裸機平台將一或多個VM抽象化)抽象化的任何VM或其他容器(container)之任何平台、系統、或機器可被稱為主機(host;host machine),且自一主機抽象化的每一VM可被稱為客體機(guest;guest machine)。因此,術語"主機軟體"("host software")可意指可在一主機上運行、執行、或以其他方式操作且可建立、維護、及/或以其他方式管理一或多個VM的任何超管理器、VMM、OS、或任何其他軟體,且術語"客體軟體"("guest software")可意指可在一客體機上運行、執行、或以其他方式操作的任何OS、系統、應用程式、用戶、或其他軟體。請注意,在一分層容器架構中,軟體可既是主機軟體且又是客體軟體。例如,在一裸機平台上運行的一第一VMM可建立一第一VM,而一第二VMM可在該第一VM中運行,且建立自該第一VM抽象化的一第二VM,因而在此種情形中,該第二VMM既是主機軟體且又是客體軟體。
處理器300可根據一或多個VMCS中儲存之資料而控
制一或多個VM的操作。VMCS是一種可包含一或多個客體機之狀態、一主機之狀態、用於指示一VMM將如何控制一或多個客體機的操作之執行控制資訊、用於指示將如何操作VM退出及VM進入之執行控制資訊、與VM退出及VM進入有關之資訊、以及任何此類資訊之資料結構。處理器300可自一VMCS讀取資訊,以便決定一VM的執行環境,且限制該VM的行為。各實施例可使用每一VM的一VMCS,或使用其他安排。每一VMCS之全部或部分可被儲存在系統記憶體120,且/或可被儲存在其他位置,例如,被複製到一處理器的一快取記憶體。
根據本發明的一實施例,一VMCS(例如,VMCS 250)可包含將被用於一局部中斷控制器(例如,局部中斷控制器350)的虛擬化的一第一資料結構(例如,虛擬局部APIC頁230)之一第一指標(例如,vAPIC指標252)、以及將被用於一虛擬處理器的中斷的發布的一第二資料結構(例如,PID 240)之一第二指標(例如,PID指標254)。可根據任何已知方法而分別實施一局部中斷控制器之虛擬化以及一虛擬處理器的中斷之發布,因而每一VM之資源可包含一或多個虛擬處理器,其中每一虛擬處理器具有一對應的虛擬局部中斷控制器,因而中斷可被傳送到自系統100抽象化的每一VM。
自一VM內,可能期望在該VM(將被稱為一傳送VM)中運行的客體軟體將一通知或中斷傳送到一不同的VM、虛擬處理器、虛擬裝置、或其他目標(為了便利,
但是在不構成限制之情形下,可將上列各項中之任一項稱為目標VM)。將一通知或中斷自一傳送VM傳送到一目標VM的嘗試可能(諸如根據一VMCS中設定的控制)導致可由截取、協助、及/或執行通知/中斷的傳送之一VMM、超管理器、或其他主機軟體(為了便利,上列各項中之每一項可被稱為VMM)規定的一VM退出。為了避免涉及此種情況的VM退出之負擔,本發明之實施例提供了將由在傳送VM中運行的客體機使用之一指令(VM間IPI),該指令容許在不會導致VM退出之情形下將一通知/中斷(一VM間中斷)自該傳送VM傳送到一目標VM,或容許將控制傳送到一VMM的其他傳送,或容許非根模式(non-root mode)之外的傳送。
請注意,只是為了便利而提供VM間IPI指令以及將於下文中提到的VMFUNC指令之名稱,且本發明之實施例可包括具有任何所需名稱的此類指令。在各實施例中,這些指令的一或多個變體可被加入一現有的ISA,作為一或多個現有指令或運算碼的增強、延伸、葉(leaf)、或其他變體。也請注意,亦可或可替代地以回應其他事件或以與其他事件(其他事件之例子諸如寫到或設定一命令暫存器、機型專用暫存器(model-specific register)、或其他暫存器的位元)有關之方式行使一處理器對一VM間IPI指令的執行及/或回應(且/或下文中可能被稱為VM間IPI操作或功能)。
在本發明的各實施例中,一VM間IPI指令可以是容
許為了支援虛擬化而提供的功能自一VM內被呼叫且不會導致VM退出的VMFUNC指令或運算碼之一葉。與該VMFUNC指令相關聯的一第一參數(例如,Intel®Core®處理器系列中之一處理器中之EAX暫存器中之值)可指定將被引動的該功能是一VM間IPI功能(例如,該EAX暫存器中之值"1"可指定該VM間IPI功能,該功能因而被稱為VMFUNC(1))。如將於下文中進一步說明的,與該VMFUNC指令相關聯的一第二參數(例如,Intel®Core®處理器系列中之一處理器中之ECX暫存器中之值)可被用來作為指定該目標VM的一標示元。如果該被指定的標示元是無效的或不存在,則該VMFUNC(1)指令可能導致一VM退出、一虛擬化異常(並無VM退出)、或另一已知的錯誤處置方法。
前文所述之該虛擬化功能及支援可能受制於任何數目及/或等級的啟用控制。在一實施例中,一總體虛擬化控制(例如,儲存單元310的一指定控制暫存器中之一指定位元)可被用於啟用或停用非根模式的使用。一輔助控制啟動控制(例如,該VMCS的一指定VM執行控制欄位中之一指定位元)可被用於啟用非根模式中之一輔助等級的執行控制。該輔助控制可包括可被用於啟用該VMFUNC指令的使用之一VM功能啟用控制(例如,該VMCS的一指定VM執行控制欄位中之一指定位元)。一VMFUNC(1)控制(例如,該VMCS的一指定VM功能控制欄位中之一指定位元)可被用於啟用VM間IPI的使
用。請注意,在該實施例中,除非前文所述之所有該等位元都被設定,否則VM間IPI的使用不被啟用。
此外,請注意,處理器300可被設計成、配置成、及/或被編程成使該VMFUNC指令、該VMFUNC指令的一特定葉(例如,葉1)、及/或該VM間IPI指令可自一或多個特權等級被執行。例如,處理器300及/或一特定VM可(諸如被一VMM)配置成容許一VM間IPI指令自該處理器支援的一監督器模式(supervisor mode)(例如,ring-0)以及該處理器支援的一用戶模式(user mode)(例如,ring-3)內被執行且不會導致VM退出。
在本發明的實施例中,一VM間IPI指令指定的標示元之值可被用於尋找將被用於將通知/中斷傳送到該目標VM的所需目標VM及其他資訊。在一實施例中,可使用被儲存在或將被儲存在系統記憶體120的一表(例如,VM間IPI表220)或其他資料結構,而根據一發布中斷方法傳送該通知/中斷。一VM間IPI表可具有任何數目的條目,每一條目有一格式,該格式包括一標示元欄位(例如,標示元欄位224)、一PID位址欄位(例如,PID位址欄位226)、以及一向量欄位(例如,向量欄位228),且每一欄位可具有任何大小。
例如,標示元欄位224可包含16位元,用以儲存一標示元值,該標示元值將被用來作為該表的特定條目之條目標號、位址、索引、指標、或其他定位符,因而一VM間IPI指令指定的一標示元值可被VM間IPI表查詢電路
332用於尋找該表中之所需條目。PID位址欄位226可包含58位元,用以儲存一PID(例如,PID 240)的一位址,因而可找到將被用於發布一中斷到一目標VM的一PID。向量欄位228可包含8位元,用以儲存對應於將被傳送到該目標VM的特定通知及/或中斷之一虛擬中斷向量。
可根據包括使用PID的一方法之任何已知方法而執行一VM間中斷的發布。在本發明的一實施例中,一PID可具有處理器300可存取的一快取記憶體的一快取列之大小,且可使該位址對齊一快取列(cache line)。例如,一PID可以是64位元組,且具有六個最低有效位元都是零的一位址,因而PID位址欄位226可被用於將一位址的位元63:6儲存在處理器300的位址空間。
諸如VMM等的軟體可將一PID分配給可能是一VM間IPI的目標之每一虛擬處理器。每一PID可具有第4圖所示之格式400,其中包含欄位410、420、430、及440。
欄位410可包含64位元組的PID之最低32位元組,而構成256位元的發布中斷要求暫存器(posted Interrupt Request Register;簡稱pIRR)。該pIRR的每一位元可對應於與該PID對應的虛擬處理器的256個虛擬中斷向量中之一虛擬中斷向量。該pIRR的每一位元可被設定成發布一對應的虛擬中斷向量(例如,向量欄位228指定的虛擬中斷向量)之一中斷要求。
欄位420可包含三個子欄位422、424、及426,用以指示被用於將未決的發布中斷通知一VMM的一通知事件之屬性。在一實施例中,被用於將發布中斷是未決的訊息通知一VMM之該事件可以是對一實體處理器的一實體中斷要求。因此,由於使用可支援超過一百個實體中斷要求的一實體處理器,所以本發明之實施例可將超過一百個虛擬處理器提供給每一實體處理器。
子欄位422(Dest-ID)可包含32位元,用以識別該中斷要求之目的地,例如,該目的地可以是係為該中斷要求的目標的虛擬處理器正在其上運行之實體處理器之局部APIC。當虛擬處理器遷移時,與目標虛擬處理器暫時相關聯的實體處理器可能改變,因而該VMM可以與負載平衡或任何其他原因導致的遷移(migration)有關之方式而利用一新的局部APIC識別符重新設定該欄位。在本說明中,在任何特定時間上與一目標虛擬處理器暫時相關聯的實體處理器可被稱為"通知處理器",這是因為當有該虛擬處理器之未決的發布中斷時,該實體處理器將是一通知事件將被傳送到的實體處理器。
子欄位424(DM)可包含一單一位元,用以指示用於該通知事件的模式。例如,在該通知事件是一實體中斷的一實施例中,DM可指示Dest-ID的值是否應被解譯為一實體或邏輯識別符。子欄位426(實體向量)可包含八位元,用以指示將被用於該通知事件的實體向量。當一通知事件被傳送到該VMM時,該VMM可將該實體向量用
於決定那一虛擬處理器有未決的發布中斷在其PID中。因此,本發明之實施例將單一實體向量提供給每一虛擬處理器,而不是將一實體向量提供給每一虛擬中斷。
欄位430(抑制或S)可包含一位元,用以儲存一指示於將中斷發布到該PID時是否將抑制通知事件之一抑制旗標。諸如VMM等的軟體可於諸如對應的虛擬處理器因其在排程等候佇列中等候其運行時間份額中之一時間份額而不是正在運行時等的任何時間上,設定用於抑制通知事件的該位元。欄位440(未決或P)可包含一位元,用以儲存一指示有尚未被服務到的該PID的一未決的通知事件之一未決旗標。如果該旗標在一中斷要求被發布時業已被設定,則無須傳送另一通知事件。可由硬體在其傳送一通知事件時設定該旗標,且可由軟體清除該旗標,作為服務該通知事件的一部分。
第5圖根據本發明的一實施例而示出將一VM間IPI自一第一VM傳送到一第二VM之方法500。雖然本發明的方法實施例不限於這方面,但是為了有助於說明第5圖之該方法實施例,可參照第1、2、3、及4圖所示之各元件。可以諸如系統100等的一系統之硬體、韌體、軟體、及/或用戶執行方法500的各部分。
在方法500的框510中,一VMM可在一資訊處理系統(例如,系統100)上建立多個VM(包括一第一VM以及一第二VM)。任何此種VM可包含一或多個虛擬處理器,其中可自系統100中之一實體處理器或實體處理器
核心將每一虛擬處理器抽象化。本發明之實施例提供了將自任何VM(例如,該第一VM)中之一第一虛擬處理器執行的客體軟體傳送到任何其他VM(例如,該第二VM)中之一第二虛擬處理器的一VM間IPI,且無論自相同的實體處理器或實體處理器核心或自相同或不同的積體電路、晶粒、晶片、基板、或封裝中/上之兩個實體處理器或實體處理器核心將該第一虛擬處理器及該第二虛擬處理器抽象化都是如此。此外,本發明之實施例可包含:將中斷發布到各虛擬中斷控制器,使任何此種VM、虛擬處理器、及/或實體處理器都可參與活動、功率、及/或其他狀態變遷及/或遷移,且不會丟失或重新傳送任何未決的VM間IPI。
各VM的建立可包括:在框512、514、及516中,分別針對每一VM的一VMCS、一vAPIC頁、以及一PID的建立、組態設定、及/或規劃。
在框520中,可(諸如由一VMM)建立一VM間IPI表(例如,VM間IPI表220)。在框522中,可(諸如由一VMM)將一特定標示元值儲存在該VM間IPI表的一特定條目的一標示元欄位(例如,標示元欄位224)中。在框524中,可(諸如由一VMM)將對應於該特定標示元值的一特定PID位址值儲存在該特定條目的一PID位址欄位(例如,PID位址欄位226)中。在框526中,可(諸如由一VMM)將對應於該特定標示元值的一特定虛擬中斷向量值儲存在該特定條目的一向量欄位(例如,
向量欄位228)。可選擇特定PID位址值及特定虛擬中斷向量值,以便提供用於指定將特定中斷發布到特定虛擬處理器的特定標示元值之一VM間IPI指令。
在框530中,在該第一VM中運行的客體軟體可發出用於指定特定標示元值的一VM間IPI指令(例如,VM間IPI指令212)之一特定實例。在框532中,該第一VM中之一第一虛擬處理器可執行該VM間IPI指令的該特定實例。該VM間IPI指令的該特定實例之執行可包含:在框534中,(諸如由VM間IPI表查詢電路332)尋找該VM間IPI表中之特定條目。
在框540中,(諸如由中斷發布電路334)將來自該VM間IPI表中之該特定條目的PID位址用於尋找將被用於該特定標示元之特定PID(例如,PID 240)。
在框550中,(諸如由中斷發布電路334)開始對PID 240的一讀修改寫(read-modify-write)操作。一不可分割的(atomic)讀修改寫操作被用於容許諸如各處理器中之中斷電路334的多個實例、其他的中斷發布硬體、及/或諸如一VMM等的軟體等的多個來源存取該PID。在框552中,鎖定用於儲存該PID的快取列。在框554中,設定對應於來自該特定條目的虛擬中斷向量之pIRR位元(或者如果該pIRR位元已被設定,則保持該設定)。
在框556中,決定是否要產生一通知事件。在一實施例中,如下文所述,該決定是根據該PID中之未決及抑制
位元的值。如果該抑制旗標未被設定(亦即,該VMM暫時尚未抑制對該虛擬處理器的中斷要求)且該未決位元未被設定(亦即,沒有已存在的對該虛擬處理器之一未決通知事件),則決定將傳送一通知事件,因而方法500繼續到框562。否則,將不傳送任何通知事件,因而方法500繼續到框560。
在框560及562中,設定該PID中之該未決旗標。方法500自框560繼續到框566,而跨越通知事件的傳送。
方法500自框562繼續到框564,在框564中,使用該實體向量欄位中之值將一通知事件傳送到該PID的Dest-ID及DM欄位指定之目的地。例如,一中斷訊息可被傳送到該Dest-ID及DM欄位指定之局部APIC,其中該中斷訊息包括來自該實體向量欄位的向量。
在框566中,將該快取列解鎖。在框568中,在框550中開始的該不可分割的讀修改寫操作結束。
請注意,由一處理器中嵌入的硬體及/或控制邏輯回應該處理器自一VM上運行的客體軟體接收到一VM間IPI指令而執行框532至568(包含框532及568),且不會導致VM退出,也不會將該處理器的控制轉移到一VMM或以其他方式引動一VMM。
因此,一傳送VM可將一通知/中斷傳送到一目標VM,而不會導致VM退出,且不會導致引動一VMM。可根據任何已知方法執行將通知/中斷傳送及/或注入至/到目標VM。例如,目標VM中之目標處理器的通知處理
器可回應一通知事件而藉由利用對應於一VM間IPI的一向量寫到對應的vAPIC頁(例如,vAPIC頁230)之中斷命令暫存器,而傳送一IPI。如果該目標VM處於現用狀態,則該通知/中斷可被直接傳送到該目標VM(不會導致VM退出或引動VMM),且不會引動一VMM。如果該目標VM背排程,則可發布該通知/中斷(不會導致VM退出或引動VMM)。如果到該目標VM的中斷傳送被阻擋,則可由一VMM傳送該中斷。
在本發明的各實施例中,可按照不同的順序,或在合併或省略所示的一些框之情形下,或在增添一些額外的框之情形下,或在將框重新排序、合併一些框、省略一些框、或增添一些額外的框的一組合之情形下,執行第5圖所示之該方法。此外,本發明的方法實施例不限於方法500或其變體。在本發明的範圍內,本說明書中未述及的許多其他方法實施例(以及設備、系統、及其他實施例)也是可能的。例如,VM間IPI指令執行時的錯誤及/或與VM間IPI指令有關的錯誤可能導致VM退出、虛擬化異常(並不導致VM退出)、或根據任何其他已知方法的處置。
可將前文所述之本發明的實施例或實施例的一部分儲存在任何形式之機器可讀取的媒體。例如,可以被儲存在處理器可讀取的媒體之軟體或韌體指令實施方法500的全部或部分,該等軟體或韌體指令被一處理器執行時,將使該處理器執行本發明的一實施例。此外,可以被儲存在機
器可讀取的媒體之資料實施本發明的觀點,其中該資料代表可被用於製造一處理器或其他組件的全部或部分之設計或其他資訊。
因此,已說明了各虛擬機器間之中斷的本發明的實施例。雖然已說明了某些實施例,且在各附圖中示出了某些實施例,但是應當理解:這些實施例只是範圍寬廣的本發明之例子而非限制,且本發明不限於所示出及說明的特定結構及安排,這是因為對此項技術具有一般知識者在研究了本發明的揭露之後將可作出各種其他修改。在成長快速且易於預見進一步的進展之諸如此項技術等的技術領域中,在不脫離本發明揭露的原理或伴隨的申請專利範圍之範圍下,可易於在啟用技術進展的幫助下對所揭露的實施例作出安排及細節上的修改。
300‧‧‧處理器
310‧‧‧儲存單元
320‧‧‧指令單元
322‧‧‧VM間IPI指令
330‧‧‧執行單元
340‧‧‧控制單元
350‧‧‧局部中斷控制器
332‧‧‧VM間IPI表查詢電路
342‧‧‧VM間IPI控制
Claims (20)
- 一種處理器,包含:至少部分地以該處理器的硬體實施之一指令單元,用以接收將一中斷自一傳送虛擬機器傳送到一目標虛擬機器的一第一指令,該第一指令指定一標示元(handle),該標示元指示該目標虛擬機器;以及至少部分地以硬體實施之一執行單元,用以在不退出該傳送虛擬機器之情形下於該傳送虛擬機器上執行該第一指令,該第一指令之執行包括使用該標示元尋找一發布中斷描述符,該發布中斷描述符用於發布該中斷到該目標虛擬機器。
- 如申請專利範圍第1項之處理器,其中使用該標示元包括:使用該標示元尋找一資料結構中之一條目,該條目具有被用於儲存該發布中斷描述符的位址之一第一欄位。
- 如申請專利範圍第2項之處理器,該條目也具有被用於儲存對應於將被傳送到該目標虛擬機器的該中斷的一中斷向量之一第二欄位。
- 如申請專利範圍第2項之處理器,其中該執行單元包含用於尋找該條目的查詢電路。
- 如申請專利範圍第4項之處理器,其中該執行單元也包含用於將該中斷發布到該發布中斷描述符的中斷發布電路。
- 如申請專利範圍第1項之處理器,其中該第一指令 是一第二指令的一葉,該第二指令提供了在不會將該處理器的控制轉移到一虛擬機監視器的情形下將在一虛擬機器上執行的一功能。
- 一種用於各虛擬機器間之中斷的方法,包含:自在一傳送虛擬機器上運行的一客體軟體發出一指令,以將一中斷自該傳送虛擬機器傳送到一目標虛擬機器,該指令指定一標示元(handle),該標示元指示該目標虛擬機器;以及在不退出該傳送虛擬機之情形下執行該指令,包括使用該標示元尋找一發布中斷描述符,該發布中斷描述符用於發布該中斷到該目標虛擬機器。
- 如申請專利範圍第7項之方法,其中使用該標示元包含:使用該標示元尋找一資料結構中之一條目,該條目具有被用於儲存該發布中斷描述符的位址之一第一欄位。
- 如申請專利範圍第8項之方法,其中該條目也具有被用於儲存對應於將被傳送到該目標虛擬機器的該中斷的一中斷向量之一第二欄位。
- 如申請專利範圍第9項之方法,進一步包含:使用該發布中斷描述符尋找用於將該中斷傳送到該目標虛擬機器的一虛擬中斷控制器。
- 如申請專利範圍第10項之方法,進一步包含:如果該目標虛擬機器處於現用狀態,則在不退出該傳送虛擬機器之情形下將該中斷直接傳送到該目標虛擬機器。
- 如申請專利範圍第10項之方法,進一步包含:如 果該目標虛擬機器被排程,則在不退出該傳送虛擬機器之情形下發布該中斷。
- 如申請專利範圍第10項之方法,進一步包含:如果到該目標虛擬機器的中斷傳送被阻擋,則引動一虛擬機監視器。
- 一種資訊處理系統,包含:一系統記憶體,該系統記憶體中儲存了用於一傳送虛擬機器的一第一虛擬機控制結構、用於一目標虛擬機器的一第二虛擬機控制結構、一發布中斷描述符;以及一第一處理器,該第一處理器包含:至少部分地以該處理器的硬體實施之一指令單元,用以接收將一中斷自該傳送虛擬機器傳送到該目標虛擬機器的一第一指令,該第一指令指定一標示元(handle),該標示元指示該目標虛擬機器;以及至少部分地以硬體實施之一執行單元,用以在不導致一虛擬機器退出之情形下於該傳送虛擬機器上執行該第一指令,該第一指令之執行包括使用標示元尋找該發布中斷描述符,該發布中斷描述符用於發布該中斷到該目標虛擬機器。
- 如申請專利範圍第14項之資訊處理系統,其中使用該標示元包括:使用該標示元尋找將被儲存在該系統記憶體的一資料結構中之一條目,該條目具有被用於儲存該發布中斷描述符的位址之一第一欄位。
- 如申請專利範圍第15項之資訊處理系統,其中該 條目也具有被用於儲存對應於將被傳送到該目標虛擬機器的該中斷的一中斷向量之一第二欄位。
- 如申請專利範圍第16項之資訊處理系統,其中該傳送虛擬機器包含自該第一處理器抽象化的一第一虛擬處理器。
- 如申請專利範圍第17項之資訊處理系統,進一步包含一第二處理器,其中該目標虛擬機器包含自該第二處理器抽象化的一第二虛擬處理器。
- 如申請專利範圍第18項之資訊處理系統,進一步包含一中斷控制器,其中該目標虛擬機器包含自該中斷控制器抽象化的一虛擬中斷控制器。
- 如申請專利範圍第19項之資訊處理系統,其中該虛擬中斷控制器將該中斷傳送到該目標虛擬機器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/997,478 | 2016-01-15 | ||
US14/997,478 US10713195B2 (en) | 2016-01-15 | 2016-01-15 | Interrupts between virtual machines |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201734822A TW201734822A (zh) | 2017-10-01 |
TWI722071B true TWI722071B (zh) | 2021-03-21 |
Family
ID=59311804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105140685A TWI722071B (zh) | 2016-01-15 | 2016-12-08 | 虛擬機器之間的中斷 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10713195B2 (zh) |
TW (1) | TWI722071B (zh) |
WO (1) | WO2017123390A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144679B (zh) * | 2017-06-27 | 2022-03-29 | 华为技术有限公司 | 中断请求的处理方法、装置及虚拟化设备 |
US11036541B2 (en) * | 2017-09-19 | 2021-06-15 | Microsoft Technology Licensing, Llc | Interrupt management for a hypervisor |
US10579382B2 (en) * | 2018-01-24 | 2020-03-03 | Intel Corporation | Method and apparatus for a scalable interrupt infrastructure |
CN110162377A (zh) * | 2018-02-14 | 2019-08-23 | 华为技术有限公司 | 一种通信方法和逻辑处理器 |
US11080088B2 (en) | 2018-12-19 | 2021-08-03 | Intel Corporation | Posted interrupt processing in virtual machine monitor |
US11204796B2 (en) | 2019-04-11 | 2021-12-21 | International Business Machines Corporation | Dynamic assignment of interrupts based on input/output metrics |
US11194611B2 (en) | 2019-07-29 | 2021-12-07 | International Business Machines Corporation | Dynamic assignment of interrupts based on input/output metrics |
JP7327235B2 (ja) * | 2020-03-24 | 2023-08-16 | 横河電機株式会社 | フォールトトレラントシステム |
US11513983B2 (en) | 2020-05-15 | 2022-11-29 | International Business Machines Corporation | Interrupt migration |
CN112989326A (zh) * | 2021-04-08 | 2021-06-18 | 北京字节跳动网络技术有限公司 | 一种指令发送方法及装置 |
US20220365802A1 (en) * | 2021-05-17 | 2022-11-17 | Intel Corporation | Virtualization of interprocessor interrupts |
WO2022266989A1 (en) * | 2021-06-25 | 2022-12-29 | Intel Corporation | Exitless guest to host notification |
CN113535215B (zh) * | 2021-07-20 | 2024-05-28 | 抖音视界有限公司 | 一种虚拟机热升级方法、装置、设备以及存储介质 |
CN117377944A (zh) * | 2022-01-26 | 2024-01-09 | 英特尔公司 | 主机至宾客机通知 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8225317B1 (en) * | 2009-04-17 | 2012-07-17 | Symantec Corporation | Insertion and invocation of virtual appliance agents through exception handling regions of virtual machines |
US20150121135A1 (en) * | 2013-10-31 | 2015-04-30 | Assured Information Security, Inc. | Virtual machine introspection facilities |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7958506B2 (en) | 2006-06-22 | 2011-06-07 | Intel Corporation | Time sliced interrupt processing on virtualized platform |
CN101593136B (zh) * | 2008-05-30 | 2012-05-02 | 国际商业机器公司 | 使得计算机具有高可用性的方法和计算机系统 |
JP2010039626A (ja) * | 2008-08-01 | 2010-02-18 | Fujitsu Ltd | ネットワーク設定プログラム,ネットワーク設定方法及びネットワーク設定装置 |
WO2013100959A1 (en) * | 2011-12-28 | 2013-07-04 | Intel Corporation | Processor accelerator interface virtualization |
WO2013147817A1 (en) * | 2012-03-29 | 2013-10-03 | Intel Corporation | Architecture and method for managing interrupts in a virtualized environment |
US9477505B2 (en) * | 2012-08-14 | 2016-10-25 | Oracle International Corporation | Method for reducing the overhead associated with a virtual machine exit when handling instructions related to descriptor tables |
US9098427B2 (en) | 2012-12-17 | 2015-08-04 | Intel Corporation | Controlling access to groups of memory pages in a virtualized environment |
JP6029550B2 (ja) | 2013-07-19 | 2016-11-24 | 株式会社日立製作所 | 計算機の制御方法及び計算機 |
AU2014311463B2 (en) | 2013-08-26 | 2017-02-16 | VMware LLC | Virtual machine monitor configured to support latency sensitive virtual machines |
-
2016
- 2016-01-15 US US14/997,478 patent/US10713195B2/en active Active
- 2016-12-08 TW TW105140685A patent/TWI722071B/zh not_active IP Right Cessation
- 2016-12-20 WO PCT/US2016/067849 patent/WO2017123390A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8225317B1 (en) * | 2009-04-17 | 2012-07-17 | Symantec Corporation | Insertion and invocation of virtual appliance agents through exception handling regions of virtual machines |
US20150121135A1 (en) * | 2013-10-31 | 2015-04-30 | Assured Information Security, Inc. | Virtual machine introspection facilities |
Also Published As
Publication number | Publication date |
---|---|
TW201734822A (zh) | 2017-10-01 |
US10713195B2 (en) | 2020-07-14 |
WO2017123390A1 (en) | 2017-07-20 |
US20170206177A1 (en) | 2017-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI722071B (zh) | 虛擬機器之間的中斷 | |
US20200341921A1 (en) | Virtualizing interrupt prioritization and delivery | |
KR101668399B1 (ko) | 프로세서 코어들의 하이퍼바이저 격리 | |
US10509729B2 (en) | Address translation for scalable virtualization of input/output devices | |
JP5042848B2 (ja) | 仮想マシン・モニタの構成部分を特権化解除するためのシステム及び方法 | |
US8479217B2 (en) | Apparatus, system, and method for persistent user-level thread | |
EP3706361A1 (en) | Loading and virtualizing cryptographic keys | |
JP2013519169A (ja) | 割込みの仮想化 | |
US20160188354A1 (en) | Efficient enabling of extended page tables | |
US20170220466A1 (en) | Sharing a guest physical address space among virtualized contexts | |
TW201030623A (en) | Providing multiple virtual device controllers by redirecting an interrupt from a physical device controller | |
US10922149B2 (en) | System comprising a plurality of virtualization systems | |
US20240311167A1 (en) | Secure mapping of process address space identifiers for computing environments implementing input/output virtualization | |
US10678909B2 (en) | Securely supporting a global view of system memory in a multi-processor system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |