TW201346730A - 虛擬化中斷優先順序及遞送之技術 - Google Patents
虛擬化中斷優先順序及遞送之技術 Download PDFInfo
- Publication number
- TW201346730A TW201346730A TW101147175A TW101147175A TW201346730A TW 201346730 A TW201346730 A TW 201346730A TW 101147175 A TW101147175 A TW 101147175A TW 101147175 A TW101147175 A TW 101147175A TW 201346730 A TW201346730 A TW 201346730A
- Authority
- TW
- Taiwan
- Prior art keywords
- virtual
- processor
- interrupt
- priority
- field
- Prior art date
Links
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
- G06F13/26—Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/45541—Bare-metal, i.e. hypervisor runs directly on hardware
-
- 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/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0058—Bus-related hardware virtualisation
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
本文揭示係有關於資訊處理領域,及更明確言之,係有關於虛擬化資訊處理系統中的資源之領域。
通常,虛擬化資訊處理系統中的資源之構想許可一或多個作業系統(各自為一「OS」)在單一資訊處理系統上跑的多種情況,即便各個作業系統係設計成對該系統及其資源有完全的直接控制亦復如此。虛擬化典型地係使用軟體(例如虛擬機器監視器或「VMM」)體現以對各個作業系統呈現具有虛擬資源包括一或多個虛擬處理器的「虛擬機器(VM)_」,該作業系統對該虛擬機器具有完全且直接的控制,同時該VMM維持用以體現虛擬化策略之一系統環境,諸如在該等虛擬機器(VM)間分享及/或配置實體資源(「虛擬化環境」)。各個OS及在VM上跑的任何其它軟體係稱作為「客屬」或「客屬軟體」,而「主屬」或「主屬軟體」乃在虛擬化環境外部跑的軟體,諸如VMM。
於一資訊處理系統中的一處理器可支援虛擬
化,舉例言之,藉由於兩個模式操作,亦即一個「根」模式,其中在任何虛擬化環境外部,軟體係直接在硬體上跑;及一個「非根」模式,其中軟體係以其意圖的特權層級跑,但係在以根模式跑的VMM作為主機的一虛擬化環境內部。於該虛擬化環境中,某些事件、操作、及情況,諸如外部中斷或試圖存取享有特權的暫存器或資源,可被攔截,換言之,使得該處理器退出該虛擬化環境,讓虛擬機器監視器(VMM)可操作例如體現虛擬化策略(「VM退出」)。該處理器可支援建立、進入、退出、與維持一虛擬化環境的指令,且可包括指示或控制該處理器的虛擬化能力的暫存器位元或其它結構。
依據本發明之一實施例,係特地提出一種處理器,其係包含:用以接收多個指令的指令硬體,包括一第一指令,用以將處理器從一根模式移轉至一非根模式以於一虛擬機器中執行客屬軟體,其中檢測得多數虛擬機器退出事件中之任一者之後,該處理器係返回該根模式;及用以執行該第一指令的執行硬體,該第一指令的執行包括決定一第一虛擬處理器優先順序值,及儲存該第一虛擬處理器優先順序值於一處理器優先順序欄位的一虛擬拷貝中,於該處該處理器優先順序欄位的該虛擬拷貝為與一中斷控制器相聯結的一實體資源相對應的一虛擬資源。
100‧‧‧虛擬化架構
110‧‧‧裸平台硬體
120‧‧‧處理器
122‧‧‧中斷控制器
123‧‧‧本地APIC基本位址暫存器
124‧‧‧指令硬體
126‧‧‧執行硬體
128‧‧‧控制邏輯
130‧‧‧記憶體
140‧‧‧虛擬機器監視器(VMM)
150、160‧‧‧虛擬機器(VM)
152、162‧‧‧客屬作業系統(OS)
154、156、164、166‧‧‧客屬應用程式
200‧‧‧本地APIC頁面
211‧‧‧工作優先順序暫存器(TPR)欄位
212‧‧‧處理器優先順序暫存器(PPR)欄位
213‧‧‧結束中斷(EOI)暫存器欄位
214‧‧‧服務中暫存器(ISR)欄位
215‧‧‧中斷請求暫存器(IRR)欄位
216‧‧‧中斷指令暫存器(ICR)欄位
300‧‧‧虛擬機器控制結構(VMCS)
310‧‧‧虛擬中斷遞送控制指示器
320‧‧‧虛擬APIC基本位址欄位
330‧‧‧虛擬APIC頁面
331‧‧‧虛擬TPR欄位
332‧‧‧虛擬PPR欄位
333‧‧‧虛擬EOI欄位
334‧‧‧虛擬ISR欄位
335‧‧‧虛擬IRR欄位
336‧‧‧虛擬ICR欄位
340‧‧‧RVI欄位
350‧‧‧SVI欄位
360‧‧‧EOI位元映射圖欄位
400、500、600、700、800、900‧‧‧方法
410-430、502-522、610-622、710-726、810-830‧‧‧框
本發明係藉附圖舉例說明但非限制性。
圖1例示說明一種虛擬化架構其中本發明之一實施例可提供用於虛擬化中斷排優先順序及遞送。
圖2例示說明於本發明之實施例中於一處理器中的本地APIC頁面。
圖3例示說明於本發明之實施例中一虛擬機器控制結構及一虛擬APIC頁面。
圖4至圖9例示說明於本發明之方法實施例。
用於虛擬化中斷排優先順序及遞送的處理器、方法、及系統之實施例將說明如下。於本詳細說明部分中,可陳述無數特定細節,諸如組件及系統組態以供更徹底本發明。但熟諳技藝人士須瞭解可無此等特定細節而實施本發明。此外,某些眾所周知的結構、電路等係不以細節顯示,以免不必要地遮掩本發明。
藉由減低VM退出的頻率可改良虛擬化環境的效能。本發明之實施例可用以減低與中斷排優先順序及遞送相聯結的VM退出的頻率。一實施例可用以支援在得自英特爾公司(Intel Corporation)的核心(Core®)處理器家族,及得自任何公司的任何其它處理器,諸如得自英特爾公司的原子(Atom®)處理器家族中的處理器中的本地高階可規劃中斷控制器(APIC)之虛擬化。於本實施例中,藉由免除在若干客屬存取本地APIC的VM退出之需要,可改良效能優於虛擬化環境,其中客屬存取本地APIC係藉VMM加以中斷。
圖1例示說明其中可操作本發明之一實施例的虛擬化架構100。於圖1中,裸平台硬體110可為能夠執行任何OS、VMM、或其它軟體的任何資料處理裝置。舉例言之,裸平台硬體110可為個人電腦、大型電腦、可攜式電腦、掌上型裝置、機上盒、伺服器、或任何其它運算系統的任何資料處理裝置。裸平台硬體110包括處理器120及記憶體130。
處理器120可為任何型別的處理器,包括通用微處理器,諸如得自英特爾公司的核心處理器家族、原子處理器家族、或其它處理器家族、或得自其它公司的其它處理器、或數位信號處理器或微處理器。雖然圖1顯示只有一個此種處理器120,但裸平台硬體110可包括任何數目的處理器,包括任何數目的多核心處理器,各自具有任何數目的執行核心及任何數目的多執行緒處理器,各自具有任何數目的執行緒。
記憶體130可為靜態或動態隨機存取記憶體、以半導體為基的唯讀記憶體或快閃記憶體、磁碟或光碟記憶體、可由處理器120讀取的任何其它型別的媒體、或此等媒體之任一項組合。處理器120、記憶體130、及裸平台硬體110的任何其它組件或裝置可依據任一種已知辦法彼此耦接或彼此通訊,諸如直接地或間接地透過一或多個匯流排、點對點、或其它有線或無線連結耦接或通訊。裸平台硬體110也可包括任何數目的額外裝置或連結。
處理器120可包括中斷控制器122以接收、產生、
排優先順序、遞送、保留擱置、或以其它方式控制或管理中斷請求。舉例言之,中斷控制器122可為本地APIC。處理器120也可包括本地APIC基本位址暫存器或儲存位置123以儲存一頁面的一基本位址或其它範圍的位址,透過該位址可存取一中斷控制器122的暫存器或其它控制位置或狀態位置。於本實施例中,如圖2所示,本地APIC基本位址暫存器123為一64-位元暫存器的一24-位元欄位,用以儲存4-千位元組本地APIC頁面200的基本位址。本地APIC頁面200包括於偏位80h的工作優先順序暫存器(TPR)欄位211、於偏位A0h的處理器優先順序暫存器(PPR)欄位212、於偏位B0h的結束中斷(EOI)暫存器欄位213、於偏位100h的服務中暫存器(ISR)欄位214、於偏位200h的中斷請求暫存器(IRR)欄位215、及於偏位300h的中斷指令暫存器(ICR)欄位216。
此外,處理器120包括指令硬體124及執行硬體126。指令硬體124可包括任何電路或其它硬體諸如解碼器以接收指令用以由處理器120執行。執行硬體126可包括任何電路或其它硬體諸如算術邏輯單元以對處理器120執行指令。執行硬體可包括或由控制邏輯128加以控制。控制邏輯128可為微碼、可規劃邏輯、硬編碼邏輯、或處理器120內部的任何其它型別的控制邏輯。於其它實施例中,控制邏輯128可體現為處理器內部或由一處理器可存取的任何組件或可讀取的任何媒體諸如記憶體130內部的任何形式之硬體、軟體、或韌體,諸如處理器摘取層。控制邏輯128可使得執行硬體126執行本發明之方法實施例,諸如圖4至
圖9如下例示說明的方法實施例,其控制方式例如使得處理器120含括一或多個微操作之執行以應答虛擬化指令、來自一主機或客屬的其它指令、或發生在裸平台硬體110上的事件而支援虛擬化。
除了裸平台硬體110之外,圖1例示說明VMM 140、VM 150及160、及客屬OS及應用程式152、154、156、162、164、及166。
VMM 140可為任何軟體、韌體、或硬體主機安裝在裸平台硬體110上可由其存取以呈示VM亦即裸平台硬體110的摘取給客屬,或以其它方式形成VM,管理VM,及體現虛擬化策略。於其它實施例中,一主機可為任何VMM、超管理者、OS、或能夠控制裸平台硬體110的其它軟體、韌體、或硬體。一客屬可為任何OS、任何VMM、任何超管理者、或任何應用程式或其它軟體。
取決於VM中呈示的該處理器及平台架構,各個客屬預期存取實體資源,諸如裸平台硬體110的處理器及平台暫存器、記憶體、及輸入/輸出裝置。圖1顯示兩個VM 150及160,客屬OS 152及客屬應用程式154及156安裝於VM 150上,而客屬OS 162及客屬應用程式164及166安裝於VM 160上。雖然圖1只顯示兩個VM及每個VM只顯示兩個應用程式,但於本發明之範圍內,可產生任何數目的VM,且任何數目的應用程式可在各個VM上跑。
可藉客屬存取的資源可歸類為「特權」或「非特權」資源。針對一特權資源,VMM 140協助客屬所期望的
功能同時保有對資源的最終控制。非特權資源無需藉VMM 140控制而可由客屬直接存取。
此外,各個客屬OS期望處理各個事件,諸如例外(例如頁面錯誤、及一般保護錯誤)、中斷(例如硬體中斷及軟體中斷)、及平台事件(例如初始化及系統管理中斷)。此等例外、中斷、及平台事件於此處集合地且個別地稱作為「事件」。若干此等事件為「特權」,原因在於該等事件須由VMM 140處理以確保VM 150及VM 160的適當操作,保護VMM 140不接觸客屬,及保護客屬的彼此。
於任何給定時間,處理器120可從VMM 140或任何客屬執行指令,如此,VMM 140或客屬可在處理器120上跑或在處理器120的控制之下。當發生特權事件或當一客屬試圖存取一特權資源時,可能發生VM退出,將控制從客屬轉移至VMM 140。在適當處理該事件或協助存取該資源後,VMM 140可將控制交還給一客屬。控制從VMM 140移交給一客屬(包括初始移交給一新產生的VM)在此處係稱作為一「VM進入」。
於圖1之實施例中,如圖3所示,處理器120依據儲存於虛擬機器控制結構(VMCS)300的資料而控制VM 150及160的操作。VMCS 300乃一種資料結構其可含有一客屬或多客屬狀態、VMM 140狀態、指示VMM 140係如何控制一客屬或多客屬的操作之執行控制資訊、有關VM退出及VM進入之資訊、任何其它此等資訊。處理器120從VMCS 300讀取資訊以決定一VM的執行環境且約束其表現。於此
一實施例中,VMCS 300係儲存於記憶體130。於若干實施例中,數個VMCS係用以支援數個VM。
VMCS 300可包括欄位、控制位元、或其它資料結構以支援一中斷控制器諸如本地APIC 122的虛擬化。執行硬體126及/或控制邏輯128可參照VMCS 300中的此等欄位以決定如何管理一VM環境,包括支援中斷排優先順序及遞送。舉例言之,虛擬中斷遞送控制指示器310可設定為使得以非根模式中斷排優先順序及遞送之虛擬化,容後詳述。於本實施例之描述中,一指示器諸如虛擬中斷遞送控制指示器310可為一位元,該位元係經設定為高或邏輯「1」值來致能或引發期望的效應(或清除為低或邏輯「0」值以引發相反效應),但於本發明之範圍內任何邏輯習慣或命名皆可使用。
又於VMCS 300中,虛擬APIC基本位址欄位320可用以儲存一頁面之一基本位址或記憶體130的其它區域,在該記憶體區域可儲存一中斷控制器的該暫存器或其它控制或狀態位置中之一或多者的虛擬拷貝。於此一實施例中,虛擬APIC基本位址欄位320係用以儲存虛擬APIC頁面330的基本位址。虛擬APIC頁面330包括虛擬TPR欄位331、虛擬PPR欄位332、虛擬EOI欄位333、虛擬ISR欄位334、虛擬IRR欄位335、及虛擬ICR欄位336。舉例言之,虛擬APIC基本位址欄位320可為24-位元欄位,載明於4-千位元組虛擬APIC頁面330的記憶體,使得一工作優先順序類別可儲存於虛擬TPR欄位331的位元7:4,及一工作優先順
序亞類可儲存於虛擬TPR欄位331的位元3:0,在虛擬APIC頁面330的偏位80h;及一處理器優先順序類別之一虛擬拷貝可讀取自虛擬PPR欄位332的位元7:4,及一處理器優先順序亞類之一虛擬拷貝可讀取自虛擬PPR欄位332的位元3:0,在虛擬APIC頁面330的偏位A0h。又,一虛擬EOI暫存器可使用虛擬EOI欄位333提供在虛擬APIC頁面330的偏位B0h,一虛擬ISR暫存器可使用虛擬ISR欄位334提供在虛擬APIC頁面330的偏位100h,及一虛擬IRR暫存器可使用虛擬IRR欄位335提供在虛擬APIC頁面330的偏位200h。
VMCS 300也可包括用於最高優先順序虛擬中斷請求服務的RVI欄位340,用於服務中的最高優先順序虛擬中斷之SVI欄位350,及用於256-分錄EOI位元映射圖的EOI位元映射圖欄位360。此三欄位的用途解釋如下。
圖4至9例示說明於用於虛擬化中斷排優先順序及遞送之方法的本發明之實施例。雖然方法實施例並非限於此一面向,但參考圖1之虛擬化架構100、圖2之本地APIC頁面200、及圖3之VMCS 300以描述圖4至9之方法實施例。各圖可包括由軟體(例如VMM)執行的某些動作及由硬體執行的其它動作。但軟體及/或硬體可從事與所示動作相聯結的額外動作(圖中未顯示)。
圖4例示說明方法400,此乃可聯結本發明之其它方法實施例諸如方法500、600、700、800、及900執行的本發明之一方法實施例。方法400可執行作為在一虛擬處理器上本發明之實施例初始化的一部分。
於圖4之框410中,一VMM(例如VMM 140)為一VM(例如VM 150)產生一VMCS(例如VMCS 300)。於框420至430中,VMM 140組配VMCS 300以體現中斷排優先順序及遞送的虛擬化。於框420中,記憶體(例如記憶體130內的一頁面)係分配給一虛擬APIC頁面(例如虛擬APIC頁面330)。於框422中,針對虛擬APIC頁面330的一基本位址係儲存於虛擬APIC基本位址欄位320。於框424中,虛擬中斷遞送控制指示器310係經設定以致能以非根模式的中斷排優先順序及遞送的虛擬化。於框426中,VMM 140可儲存初始化資料(例如全零)於RVI欄位340。於框428中,VMM 140可儲存初始化資料(例如全零)於SVI欄位350。於框430中,VMM 140可儲存初始化資料於虛擬APIC頁面330。
圖5例示說明方法500,此乃可聯結本發明之其它方法實施例諸如方法400、600、700、800、及900執行的本發明之一方法實施例。當例如藉由虛擬中斷遞送控制指示器210之設定而例如致能以非根模式的中斷排優先順序及遞送的虛擬化時,方法500可連結VM進入執行。
於框502中,VMM 140可相對應於該中斷請求服務的中斷向量而設定虛擬IRR欄位335中的位元。注意框502可針對任何其它的中斷請求服務重複。於框504中,VMM 140可儲存一中斷請求服務之一中斷向量於RVI欄位340;舉例言之,RVI欄位340可以得自框502的任何重複之老舊RVI值及最高中斷向量中之最大者設定(或可維持不變)。於框506中,由VMM 140簽發移交控制給VM 150的指令(「VM
進入」指令)。
於方法500之框510中,處理器120之指令硬體124接收一VM進入指令。於框512至516中,處理器120之執行硬體126執行VM進入指令之與本發明之實施例有關部分。除了於此處顯示者之外,VM指令的執行可包括主機狀態的儲存、客屬狀態的載入、及技藝界已知之任何其它操作。於框512中,執行硬體126藉由計算SVI欄位350中之值與虛擬TPR欄位331中之值中的最大者而決定一新虛擬處理器優先順位值。於框514中,執行硬體126儲存該新虛擬處理器優先順位值於虛擬PPR欄位332。於框516中,執行硬體126比較於RVI欄位340中之值與於虛擬PPR欄位332中之值,及若RVI欄位340值係大於虛擬PPR欄位332值,則方法500繼續於框520;但若否,則方法500繼續於框522。於框520中,發生VM進入,確認被擱置的與RVI欄位340相對應的虛擬中斷。於框522中,一VM進入完成,但與RVI欄位340相對應的虛擬中斷係保持被擱置。
圖6例示說明方法600,此乃可聯結本發明之其它方法實施例諸如方法400、500、700、800、及900執行的本發明之一方法實施例。當例如藉設定虛擬中斷遞送控制指示器210而致能以非根模式的中斷排優先順序及遞送的虛擬化時可執行方法600。關聯藉客屬軟體之一寫至一APIC暫存器(例如TPR),方法600可全然以非根模式執行而無VM退出。
於方法600之框610中,客屬軟體試圖寫一新工作
優先順序值至本地APIC頁面200的TPR欄位211。應答客屬軟體試圖寫一新工作優先順序值至TPR欄位211,執行硬體126執行框612至622而非寫至TPR欄位211或發生VM退出。於框612中,執行硬體126將寫移交給在虛擬APIC頁面330上的虛擬TPR欄位331。於框614中,執行硬體126藉由計算得自虛擬TPR欄位331的虛擬工作優先順序值及SVI欄位350中之值中的最大值而決定一新虛擬處理器優先順序值。於框616中,執行硬體126儲存該新虛擬處理器優先順序值於虛擬PPR欄位332。於框618中,執行硬體126比較RVI欄位340中之值與虛擬PPR欄位332值,及若RVI欄位340值係大於虛擬PPR欄位332值,則方法600繼續於框620;但若否,則方法600繼續於框622。於框620中,執行硬體126確認被擱置的與RVI欄位340值相對應的虛擬中斷。於框622中,執行硬體126保持擱置與RVI欄位340相對應的任何虛擬中斷。
圖7例示說明方法700,此乃可聯結本發明之其它方法實施例諸如方法400、500、600、800、及900執行的本發明之一方法實施例。當例如藉設定虛擬中斷遞送控制指示器210而致能以非根模式的中斷排優先順序及遞送的虛擬化時可執行方法700。關聯藉客屬軟體之發送一自我-IPI例如藉寫至一APIC暫存器(例如ICR 216或特定自我-IPI暫存器),方法700可全然以非根模式執行而無VM退出。
於方法700之框710中,在處理器120上跑的客屬軟體試圖指示處理器120發送一處理器間中斷給本身(亦即
發送一「自我-IPI」);例如藉寫至本地APIC頁面200的ICR 216。應答客屬軟體之發送一自我-IPI,執行硬體126執行框712至726而非寫至ICR 216或發生VM退出。於框712中,執行硬體126發送該寫至虛擬APIC頁面330上的虛擬ICR欄位336。於框714中,執行硬體126例如藉讀取虛擬ICR欄位336的向量欄位而決定欲發送的該中斷向量。於框716中,執行硬體126設定該位元相對應於在虛擬IRR欄位335的該向量,以指示相對應於該向量的一中斷被擱置。於框718中,執行硬體126藉由計算此一向量與RVI欄位340中之值中的最大值而決定一新RVI值。於框720中,執行硬體126儲存該新RVI值於RVI欄位340。於框722中,執行硬體126比較該新RVI值與虛擬PPR欄位332中之值,及若該新RVI值係大於虛擬PPR欄位332值,則方法700於框724繼續;但若否,則方法700於框726繼續。於框724中,執行硬體126確認擱置中的與新RVI值相對應的虛擬中斷。於框726中,執行硬體126保留擱置中的與新RVI值相對應的虛擬中斷。
圖8例示說明方法800,此乃可聯結本發明之其它方法實施例諸如方法400、500、600、700、及900執行的本發明之一方法實施例。當例如藉設定虛擬中斷遞送控制指示器210而致能以非根模式的中斷排優先順序及遞送的虛擬化時可執行方法800。方法800可關聯藉客屬軟體試圖寫至一本地APIC頁面200的EOI暫存器欄位213執行。
於方法800之框810中,在處理器120上跑的客屬軟體試圖寫至一本地APIC頁面200的EOI暫存器欄位213。
應答客屬軟體試圖寫至EOI暫存器欄位213,執行硬體126執行框812至822而非出現寫至EOI暫存器欄位213。於框812中,執行硬體126移交寫給虛擬APIC頁面330上的虛擬EOI欄位333。於框814中,執行硬體126清除在虛擬ISR欄位334中與目前SVI 350欄位值相對應的位元。於框816中,執行硬體126將仍然設定在虛擬ISR欄位334(或為零,若未設定任何位元)的最高優先順序位元的指數儲存於SVI欄位350。於框818中,執行硬體126藉計算該新SVI值與該虛擬TPR欄位331值中之最大者而決定一新處理器優先順序值。於框820中,執行硬體126儲存該新處理器優先順序值於虛擬PPR欄位332。於框822中,執行硬體126決定於EOI位元映射圖欄位360中相對應於舊SVI值的該位元是否經設定,及若是,則方法800於框830繼續;但若否,則方法800於框824繼續。於框830中,發生VM退出。於框824中,執行硬體126比較RVI欄位340中之值與虛擬PPR欄位332中之值,及若RVI欄位340值係大於虛擬PPR欄位332值,則方法800於框826繼續,但若否,則方法800於框828繼續。於框826中,執行硬體126確認擱置中的與RVI欄位340值相對應之虛擬中斷。於框828中,執行硬體126保留擱置中的與RVI欄位340值相對應之虛擬中斷。
圖9例示說明方法900,此乃可聯結本發明之其它方法實施例諸如方法400、500、600、700、及800執行的本發明之一方法實施例。當例如藉設定虛擬中斷遞送控制指示器210而致能以非根模式的中斷排優先順序及遞送的虛
擬化時可執行方法900。關聯一虛擬中斷的遞送,方法900可全然以非根模式執行而無VM退出。
於方法900之框902中,例如於在一虛擬機上執行客屬軟體基間到達指令邊界。於框904中,執行硬體126例如分別地從方法500、600、700或800的框520、620、724、或826決定是否已經確認一虛擬中斷。若尚未確認虛擬中斷,則方法900繼續至框930;若否,則方法900繼續至框910。
於框910中,執行硬體126決定決定在指令邊界虛擬中斷的遞送是否經遮蔽(例如由於在處理器120的EFLAGS暫存器的中斷旗標被清除)。若虛擬中斷的遞送係經遮蔽,則方法900繼續至框930;若否,則方法900繼續至框912。於框912中,執行硬體126清除在虛擬IRR欄位335中RVI欄位340值的相對應位元。於框914中,執行硬體126設定在虛擬ISR欄位334中RVI欄位340值的相對應位元。於框916中,執行硬體126儲存RVI欄位340值於SVI欄位350。於框918中,執行硬體126儲存RVI欄位340值於虛擬PPR欄位332。於框920中,執行硬體126儲存仍然設定在虛擬IRR欄位335的最高優先順序位元指數(或零,若未設定位元)於RVI欄位340。於框922中,執行硬體126保留擱置中的相對應於新RVI值的任何中斷。於框924中,執行硬體132將具有向量係相對應於舊RVI值的中斷(例如藉使用其選擇在該中斷描述符表中之一閘)遞送給在處理器120上跑的客屬軟體。
於框930中,執行下個指令。
於本發明之範圍內,圖4至9例示說明的方法可以不同順序實施,可刪除例示說明框,可加添例示說明框,或可以重新排序、增刪框的組合實施。
如此,已經揭示虛擬化中斷排優先順序及遞送的處理器、方法、及系統。雖然已經描述某些實施例,及顯示於附圖,但須瞭解此等實施例僅供例示說明而非限制廣義發明,及本發明並非限於所顯示的且所描述的特定組構及配置,原因在於當研讀本文揭示時熟諳技藝人士顯然易知多項其它修正。於例如此處之一技術領域中,其中成長快速而又不容易預見未來的進一步進展,可未悖離本文揭示之原理或隨附之申請專利範圍的範疇,本文揭示之實施例就配置及細節上方便藉著技術進展之助而可容易地修正。
100‧‧‧虛擬化架構
110‧‧‧裸平台硬體
120‧‧‧處理器
122‧‧‧高階可規劃中斷控制器(APIC)
123‧‧‧APIC基暫存器
124‧‧‧指令硬體
126‧‧‧執行硬體
128‧‧‧控制邏輯
130‧‧‧記憶體
140‧‧‧虛擬機器監視器(VMM)
150、160‧‧‧虛擬機器(VM)
152‧‧‧客端作業系統(OS)
154、156、164、166‧‧‧客端應用程式
162‧‧‧客端VMM
Claims (20)
- 一種處理器,其係包含:用以接收多個指令的指令硬體,包括一第一指令,用以將處理器從一根模式移轉至一非根模式以於一虛擬機器中執行客屬軟體,其中檢測得數個虛擬機器退出事件中之任一者之後,該處理器係將返回該根模式;及用以執行該第一指令的執行硬體,該第一指令之執行包括決定一第一虛擬處理器優先順序值,及儲存該第一虛擬處理器優先順序值於一處理器優先順序欄位的一虛擬拷貝中,於該處該處理器優先順序欄位的該虛擬拷貝係為與一中斷控制器相聯結的一實體資源相對應的一虛擬資源。
- 如申請專利範圍第1項之處理器,其中該執行硬體係藉計算一虛擬機器控制結構之一最高優先順序虛擬中斷服務中欄位與一虛擬工作-優先順序暫存器值之最大者,而決定該處理器-優先順序值。
- 如申請專利範圍第1項之處理器,其中該執行硬體亦係藉比較一虛擬機器控制結構之一最高優先順序虛擬中斷-請求欄位與該第一虛擬處理器-優先順序值而決定是否將確認一虛擬中斷。
- 如申請專利範圍第1項之處理器,其中該執行硬體亦係在該非根模式內,應答於藉由該客屬軟體試圖將一工作-優先順序值寫入一工作-優先順序暫存器,以藉由計算 該工作-優先順序值與一虛擬機器控制結構之一最高優先順序虛擬中斷服務中欄位之最大者,而決定一第二虛擬處理器-優先順序值。
- 如申請專利範圍第4項之處理器,其中該執行硬體亦係藉比較一虛擬機器控制結構之一最高優先順序虛擬中斷-請求欄位與該第二虛擬處理器-優先順序值而決定是否將確認一虛擬中斷。
- 如申請專利範圍第1項之處理器,其中該執行硬體亦係在該非根模式內,應答於藉由該客屬軟體試圖發送一自我-處理器間中斷,以藉由計算一自我-處理器間中斷向量與一虛擬機器控制結構之一最高優先順序虛擬中斷-請求欄位之最大者,而決定一最高優先順序虛擬中斷-請求值。
- 如申請專利範圍第6項之處理器,其中該執行硬體亦係藉比較新最高優先順序虛擬中斷-請求值與該第一虛擬處理器-優先順序值,而決定是否將確認一虛擬中斷。
- 如申請專利範圍第1項之處理器,其中該執行硬體亦係在該非根模式內部,應答於藉由該客屬軟體試圖寫入一中斷結束暫存器,以藉由清除於一服務中暫存器的一虛擬拷貝中的一位元,該位元係對應於在一虛擬機器結構中的一最高優先順序虛擬中斷服務中欄位。
- 如申請專利範圍第3項之處理器,其中該執行硬體亦係決定虛擬中斷的遞送在一指令邊界是否被遮蔽,及若遞送被解除遮蔽則遞送該虛擬中斷。
- 一種方法,其係包含以下步驟:藉由一處理器接收一指令,以將該處理器從一根模式移轉至一非根模式,用以於一虛擬機器中執行客屬軟體,其中檢測得數個虛擬機器退出事件中之任一者之後,該處理器係將返回該根模式;藉由該處理器執行該指令,於該處執行包括決定一第一虛擬處理器優先順序值,及儲存該第一虛擬處理器優先順序值於一處理器優先順序欄位的一虛擬拷貝中,於該處該處理器優先順序欄位的該虛擬拷貝係為與一中斷控制器相聯結的一實體資源相對應的一虛擬資源。
- 如申請專利範圍第10項之方法,其中計算該處理器-優先順序值係包括計算一虛擬機器控制結構之一最高優先順序虛擬中斷服務中欄位與一虛擬工作-優先順序暫存器值之最大者。
- 如申請專利範圍第10項之方法,其係進一步包含決定是否藉比較一虛擬機器控制結構之一最高優先順序虛擬中斷-請求欄位與該第一虛擬處理器-優先順序值而確認一虛擬中斷。
- 如申請專利範圍第10項之方法,其係進一步包含在該非根模式內部,應答於藉由該客屬軟體試圖將一工作-優先順序值寫入一工作-優先順序暫存器,以藉由計算該工作-優先順序值與一虛擬機器控制結構之一最高優先順序虛擬中斷服務中欄位之最大者,而決定一第二虛擬 處理器-優先順序值。
- 如申請專利範圍第13項之方法,其係進一步包含決定是否藉比較一虛擬機器控制結構之一最高優先順序虛擬中斷-請求欄位與該第二虛擬處理器-優先順序值而確認一虛擬中斷。
- 如申請專利範圍第10項之方法,其係進一步包含在該非根模式內部,應答於藉由該客屬軟體試圖發送一自我-處理器間中斷,以藉由計算一自我-處理器間中斷向量與一虛擬機器控制結構之一最高優先順序虛擬中斷-請求欄位之最大者,而決定一最高優先順序虛擬中斷-請求值。
- 如申請專利範圍第15項之方法,其係進一步包含決定是否藉比較該新最高優先順序虛擬中斷-請求值與該第一虛擬處理器-優先順序值而確認一虛擬中斷。
- 如申請專利範圍第10項之方法,其係進一步包含在該非根模式內部,應答於藉由該客屬軟體試圖寫至一中斷結束暫存器,以藉由清除於一服務中暫存器的一虛擬拷貝中的一位元,該位元係對應於在一虛擬機器結構中的一最高優先順序虛擬中斷服務中欄位。
- 如申請專利範圍第17項之方法,其係進一步包含決定虛擬中斷的遞送在一指令邊界是否被遮蔽,及若遞送被解除遮蔽則遞送該虛擬中斷。
- 一種系統,其係包含:一記憶體;及 一處理器包括用以接收多個指令的指令硬體,包括一第一指令,用以將處理器從一根模式移轉至一非根模式以於一虛擬機器執行客屬軟體,其中檢測得數個虛擬機器退出事件中之任一者之後,該處理器係將返回該根模式;及用以執行該第一指令的執行硬體,該第一指令之執行包括決定一第一虛擬處理器優先順序值,及儲存該第一虛擬處理器優先順序值於該記憶體中於一處理器優先順序欄位的一虛擬拷貝中,於該處該處理器優先順序欄位的該虛擬拷貝係為與一中斷控制器相聯結的一實體資源相對應的一虛擬資源。
- 如申請專利範圍第19項之系統,其中該執行硬體也係藉比較於該記憶體內於一虛擬機器控制結構中之一最高優先順序虛擬中斷-請求欄位與該第一虛擬處理器-優先順序值,而決定是否將確認一虛擬中斷。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/325,714 US8910158B2 (en) | 2011-12-14 | 2011-12-14 | Virtualizing interrupt priority and delivery |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201346730A true TW201346730A (zh) | 2013-11-16 |
TWI537822B TWI537822B (zh) | 2016-06-11 |
Family
ID=48611397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101147175A TWI537822B (zh) | 2011-12-14 | 2012-12-13 | 虛擬化中斷優先順序及遞送之技術 |
Country Status (3)
Country | Link |
---|---|
US (4) | US8910158B2 (zh) |
TW (1) | TWI537822B (zh) |
WO (1) | WO2013090202A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9772868B2 (en) | 2014-09-16 | 2017-09-26 | Industrial Technology Research Institute | Method and system for handling interrupts in a virtualized environment |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9331855B2 (en) | 2011-07-01 | 2016-05-03 | Intel Corporation | Apparatus, system, and method for providing attribute identity control associated with a processor |
US8910158B2 (en) | 2011-12-14 | 2014-12-09 | Intel Corporation | Virtualizing interrupt priority and delivery |
US9069594B1 (en) | 2012-12-27 | 2015-06-30 | Emc Corporation | Burst buffer appliance comprising multiple virtual machines |
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 |
US9396012B2 (en) * | 2013-03-14 | 2016-07-19 | Qualcomm Incorporated | Systems and methods of using a hypervisor with guest operating systems and virtual processors |
US9459900B2 (en) | 2014-01-13 | 2016-10-04 | Red Hat Israel, Ltd. | Hypervisor-based balloon page initialization |
US9563588B1 (en) * | 2014-01-29 | 2017-02-07 | Google Inc. | OS bypass inter-processor interrupt delivery mechanism |
US10437623B2 (en) * | 2015-12-24 | 2019-10-08 | Intel IP Corporation | Fast switching between virtual machines without interrupt virtualization for high-performance, secure trusted-execution environment |
JP7335339B2 (ja) | 2019-02-14 | 2023-08-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 有向割り込みの仮想化方法、システム、プログラム |
TWI727607B (zh) | 2019-02-14 | 2021-05-11 | 美商萬國商業機器公司 | 用於具有中斷表之經引導中斷虛擬化之方法、電腦系統及電腦程式產品 |
WO2020164819A1 (en) | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt for multilevel virtualization with interrupt table |
TWI759677B (zh) | 2019-02-14 | 2022-04-01 | 美商萬國商業機器公司 | 用於具有回退之經引導中斷虛擬化之方法、電腦系統及電腦程式產品 |
CA3130164A1 (en) | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt for multilevel virtualization |
JP7450627B2 (ja) | 2019-02-14 | 2024-03-15 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 実行中インジケータを使用した有向割り込みの仮想化方法、システム、プログラム |
TWI764082B (zh) | 2019-02-14 | 2022-05-11 | 美商萬國商業機器公司 | 用於經引導中斷虛擬化之中斷信號之方法、電腦系統及電腦程式產品 |
US11842227B2 (en) * | 2019-10-10 | 2023-12-12 | Advanced Micro Devices, Inc. | Hypervisor secure event handling at a processor |
US20210117244A1 (en) * | 2020-12-26 | 2021-04-22 | Intel Corporation | Resource manager access control |
US11561819B2 (en) | 2021-06-11 | 2023-01-24 | International Business Machines Corporation | Techniques for adapting escalation paths of interrupts in a data processing system |
US11755362B2 (en) | 2021-06-11 | 2023-09-12 | International Business Machines Corporation | Techniques for handling escalation of interrupts in a data processing system |
US12020066B2 (en) | 2021-06-11 | 2024-06-25 | International Busin ess Machines Corporation | Asynchronous completion notification in a multi-core data processing system |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7590982B1 (en) * | 2003-12-17 | 2009-09-15 | Vmware, Inc. | System and method for virtualizing processor and interrupt priorities |
US7707341B1 (en) * | 2004-05-11 | 2010-04-27 | Advanced Micro Devices, Inc. | Virtualizing an interrupt controller |
US8286162B2 (en) * | 2005-12-30 | 2012-10-09 | Intel Corporation | Delivering interrupts directly to a virtual processor |
US8621607B2 (en) | 2006-05-18 | 2013-12-31 | Vmware, Inc. | Computational system including mechanisms for tracking taint |
US8453143B2 (en) * | 2007-09-19 | 2013-05-28 | Vmware, Inc. | Reducing the latency of virtual interrupt delivery in virtual machines |
WO2009039375A2 (en) | 2007-09-20 | 2009-03-26 | C & S Operations, Inc. | Computer system |
US8032680B2 (en) * | 2008-06-27 | 2011-10-04 | Microsoft Corporation | Lazy handling of end of interrupt messages in a virtualized environment |
JP5352848B2 (ja) | 2008-11-28 | 2013-11-27 | 株式会社日立製作所 | 仮想計算機の制御方法及び計算機装置 |
US8489789B2 (en) * | 2010-02-05 | 2013-07-16 | Advanced Micro Devices, Inc. | Interrupt virtualization |
JP5493125B2 (ja) | 2010-02-05 | 2014-05-14 | 株式会社日立製作所 | 仮想化方法及び計算機 |
US8910158B2 (en) | 2011-12-14 | 2014-12-09 | Intel Corporation | Virtualizing interrupt priority and delivery |
-
2011
- 2011-12-14 US US13/325,714 patent/US8910158B2/en not_active Expired - Fee Related
-
2012
- 2012-12-10 WO PCT/US2012/068798 patent/WO2013090202A1/en active Application Filing
- 2012-12-13 TW TW101147175A patent/TWI537822B/zh not_active IP Right Cessation
-
2014
- 2014-11-12 US US14/538,941 patent/US20150058510A1/en not_active Abandoned
-
2018
- 2018-01-09 US US15/865,430 patent/US20180129619A1/en not_active Abandoned
-
2020
- 2020-05-14 US US15/931,868 patent/US20200341921A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9772868B2 (en) | 2014-09-16 | 2017-09-26 | Industrial Technology Research Institute | Method and system for handling interrupts in a virtualized environment |
Also Published As
Publication number | Publication date |
---|---|
US20200341921A1 (en) | 2020-10-29 |
US20130159579A1 (en) | 2013-06-20 |
US8910158B2 (en) | 2014-12-09 |
US20150058510A1 (en) | 2015-02-26 |
TWI537822B (zh) | 2016-06-11 |
WO2013090202A1 (en) | 2013-06-20 |
US20180129619A1 (en) | 2018-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI537822B (zh) | 虛擬化中斷優先順序及遞送之技術 | |
US10901772B2 (en) | Virtualization exceptions | |
US11995462B2 (en) | Techniques for virtual machine transfer and resource management | |
TWI516958B (zh) | 用於處理器加速器介面的虛擬化的處理器、系統及方法 | |
TWI722071B (zh) | 虛擬機器之間的中斷 | |
JP5571208B2 (ja) | パフォーマンスカウンタの仮想化 | |
US7209994B1 (en) | Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests | |
US7707341B1 (en) | Virtualizing an interrupt controller | |
TWI620124B (zh) | 虛擬機器控制結構陰影化技術 | |
TW201732607A (zh) | 用於輸入/輸出裝置之可縮放虛擬化的位址轉譯 | |
US20160188354A1 (en) | Efficient enabling of extended page tables | |
US10552345B2 (en) | Virtual machine memory lock-down | |
TW201342064A (zh) | 用於資料讀取/寫入延伸分頁表違反之處理的決策動作決定技術 | |
US9459907B2 (en) | Guest controlled malicious payload protection | |
US10073710B2 (en) | Host-driven application memory protection for virtual machines | |
US20160246633A1 (en) | Read-only vm function chaining for secure hypervisor access | |
US20160378543A1 (en) | Implementing pseudo non-masking interrupts behavior using a priority interrupt controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |