TWI599955B - 經虛擬化之智慧型裝置的直接共享方法及設備 - Google Patents
經虛擬化之智慧型裝置的直接共享方法及設備 Download PDFInfo
- Publication number
- TWI599955B TWI599955B TW100147134A TW100147134A TWI599955B TW I599955 B TWI599955 B TW I599955B TW 100147134 A TW100147134 A TW 100147134A TW 100147134 A TW100147134 A TW 100147134A TW I599955 B TWI599955 B TW I599955B
- Authority
- TW
- Taiwan
- Prior art keywords
- virtual machine
- vmm
- resources
- virtualization
- interrupt
- Prior art date
Links
Classifications
-
- 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
-
- 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/4555—Para-virtualisation, i.e. guest operating system has to be modified
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
- Accessory Devices And Overall Control Thereof (AREA)
Description
本發明大體上關於經虛擬化之智慧型裝置的直接共享。
輸入/輸出(I/O)裝置虛擬化先前已使用裝置模型實施以執行全裝置仿真。此允許裝置共享,但具有顯著性能消耗。裝置直接裝置配置至虛擬機器(VM)允許接近固有性能,但不允許裝置於VM之中共享。新近基於硬體之設計,諸如單根I/O虛擬化(SR-IOV),允許裝置共享同時展現接近固有性能,但需要顯著改變硬體。
本發明之一些實施例關於經虛擬化之智慧型裝置的直接共享。
在一些實施例中,啟動裝置以直接運行虛擬機器工作量。配置來自不同虛擬機器之工作量之間之隔離及排程。
在一些實施例中,完成高性能輸入/輸出(I/O)裝置虛擬化同時於多個虛擬機器(VM)之中共享I/O裝置。在一些實施例中,裝置仿真及直接裝置配置之混合技術提供基於裝置模型之直接執行。根據一些實施例,配置替代基於單根I/O虛擬化(SR-IOV)之設計,其中相較於SR-IOV,硬體極少改變。根據一些實施例,開發現代裝置
(例如,諸如通用圖形處理單元或GPGPU之現代裝置)中更高度可程式性,並於VM中配置接近固有I/O性能。
圖1描繪根據一些實施例之系統100。在一些實施例中,系統100包括裝置102及虛擬機器監視器(VMM)104。在一些實施例中,系統100包括虛擬機器VM1 106、虛擬機器VM2 108、及Dom0(或零域)110,其為例如由VMM 104開機開始之第一域。在一些實施例中,裝置102為例如I/O裝置、圖形處理單元(或GPU)、及/或通用圖形處理單元(或GPGPU),諸如Intel Larrabee圖形處理單元。
在一些實施例中,裝置102包括作業系統(OS)112(例如,稱為微OS或uOS之基於全FreeBSD之OS)。在一些實施例中,OS 112包括排程器114及驅動器116(例如主驅動器)。在一些實施例中,裝置102包括驅動器應用118、驅動器應用120、裝置卡122、記憶體映射輸入/輸出(MMIO)暫存器及GTT記憶體124、圖形光圈126、顯示介面128、及顯示介面130。在一些實施例中,VMM 104為Xen VMM及/或共享資源VMM。在一些實施例中,VMM 104包括於132設定EPT頁表及VT-d延伸之能力。在一些實施例中,VM 106包括應用134(例如DX應用)、運行時間136(例如DX運行時間)、裝置UMD 138、及核心模式驅動器(KMD)140(及/或仿真裝置)。在一些實施例中,VM 108包括應用144(例如DX應用)、運行時間146(例如DX運行時間)、裝置
UMD 148、及核心模式驅動器(KMD)150(及/或仿真裝置)。在一些實施例中,零域(Dom0)110包括主核心模式驅動器(KMD)152,其包括虛擬主延伸154。在一些實施例中,Dom0 110包括處理器仿真器QEMU VM1 156,其作業如主要VMM並包括裝置模型158。在一些實施例中,Dom0 110包括處理器仿真器QEMU VM2 162,其作業如主要VMM並包括裝置模型164。
根據一些實施例,I/O裝置102之虛擬化係以下列方式執行,即提供高性能及於VM 106與VM 108之中共享裝置102而不需顯著硬體改變之能力。此係藉由修改硬體及裝置102之軟體/韌體使得裝置102了解VMM 104及一或多個VM(諸如VM 106及VM 108)而予完成。此啟動裝置102而以提供高性能之方式與各種VM(106及108)直接互動。裝置102亦負責於來自不同VM的工作量之中提供隔離及排程。然而,為使裝置102之硬體改變最小,此技術亦需要仿真與實體裝置102相同裝置之VMM 104中傳統裝置仿真模型。從VM 106及VM 108低頻存取裝置102(例如,存取進行裝置設置)係藉由裝置模型164設陷及仿真,但直接高頻存取裝置102(例如,發送/接收資料至/自裝置、中斷等),避免昂貴地包含VMM 104。
在一些實施例中,VMM 104中裝置模型呈現虛擬裝置至與真實實體裝置102相同之VM 106或VM 108,並處理針對裝置資源的所有低頻存取。在一些實施例中,此模型
亦建立針對高頻裝置資源之直接VM存取。在一些實施例中,VMM組件104係以下列方式形成於裝置102之上,即使裝置102虛擬化了解及啟動而直接與多個VM 106及VM 108談話。此組件處理所有高頻VM存取並啟動裝置共享。
根據一些實施例,相較於單根I/O虛擬化(SR-IOV)設計,裝置102之硬體需要最小改變。於裝置102上運行之軟體組件經修改以包括VMM 104組件,並經由此VMM組件卸載針對裝置本身高頻VM存取之VMM處理。
根據一些實施例,裝置102為極智慧型裝置並為高度可程控(例如,在一些實施例中諸如Intel Larrabee GPU之GPU)。根據一些實施例,裝置102運行稱為微OS或uOS之基於全FreeBSD之OS 112。在一些實施例中,裝置卡於VM 106與VM 108二者之間共享,根據一些實施例其係Windows Vista VM。VM 106及VM 108直接提交工作至裝置102,導致接近固有性能。
在一些實施例中,使用Xen(共享資源VMM)實施VMM 104。在一些實施例中,使用Xen寫入虛擬化裝置模型以提供仿真裝置至每一VM 106及VM 108。此模型亦提供VM 106及VM 108直接存取裝置102之圖形光圈126,使VM 106及/或VM 108可直接提交工作至裝置102。裝置延伸至主驅動器亦用以啟動裝置模型164而控制裝置作業之一些方面。對裝置102上VMM組件而言,根據一些實施例而修改驅動器116使其虛擬化了解及啟動而從多個
VM直接接收工作。VM 106或VM 108中圖形應用始自裝置102端之OS 112應用。接著VM應用134或144發送工作量資料至相應裝置應用118或120進行處理(例如轉列)。修改之驅動器116啟動OS 112以運行來自多個VM 106及VM 108之應用118及120,恰如其為來自相同主機之多個應用。來自不同OS應用中不同VM之運行工作量於其間提供隔離。在一些實施例中,亦修改OS排程器114以啟動而排程來自不同VM之應用,使得來自一VM之應用不渴望來自另一VM之應用。
在一些實施例中,係於VMM 104中實施圖形裝置虛擬化。在一些實施例中,VM 106及VM 108二者共享單裝置卡,並經由圖形光圈126之直接存取而直接於裝置102上運行其工作量。根據一些實施例修改OS 112驅動器116及排程器114以提供來自多個VM之隔離及排程(例如,應用134與144之間及/或DX應用之間)。
根據一些實施例,可實施五項主要技術以執行I/O裝置虛擬化如下。
1.全裝置仿真-在全裝置仿真中,VMM使用裝置模型以仿真硬體裝置。VM觀看仿真裝置並嘗試存取。該些存取係藉由裝置模型設陷及處理。一些該些存取需要存取VMM中實體裝置,以服務VM之要求。藉由模型仿真之虛擬裝置可與系統中呈現之實體裝置無關。此為此技術之大優點,且此使VM遷移更簡單。然而,此技術之缺點為仿真裝置具有高性能消耗,所以此技術未提供接近VM中
固有性能。
2.直接裝置配置-在此技術中,裝置係直接配置至VM,且所有裝置之記憶體-映射I/O(MMIO)資源可由VM直接存取。此達成VM中固有I/O性能。然而,缺點為裝置無法由其他VM共享。此外,VM遷移變得更加複雜。
3. VM中準虛擬化驅動器-在此方法中,準虛擬化驅動器係裝載於與VMM驅動器談話之VM內部,以啟動共享。在此技術中,虛擬裝置可與實體裝置無關,並可達成較基於裝置模型之方法更佳之性能。然而,此方法之缺點為其於VM內部需要新驅動器,且性能仍未接近藉由裝置配置所達成者。此外,虛擬裝置語義與實體裝置語義之間轉化實施起來複雜,且通常未功能完備(例如,圖形虛擬化中之API代理)。
4.介導的直通(MPT)或輔助驅動器直通(ADPT)-VMM供應商最近提出稱為MPT或ADPT之準虛擬化驅動器上的提昇技術,其中仿真之虛擬裝置與實體裝置相同。此啟動VM使用現有裝置驅動器(基於一些修改而允許與VMM談話)。此亦避免從虛擬裝置格式至實體裝置格式轉化VM工作量之消耗(由於二裝置相同)。此方法之缺點為性能仍未接近由裝置配置所達成者,因為VM仍無法與裝置直接通訊。
5.硬體方法(例如SR-IOV)-在此方法中,各針對每一VM修改裝置硬體以製造裝置資源之多個實例。單根
I/O虛擬化(SR-IOV)為一種標準,其在硬體供應商之中是普遍的,並針對該等裝置指明軟體介面。其製造裝置資源之多個實例(實體功能(或PF))及多個虛擬功能(或VF)。此方法之優點為現在裝置可於多個VM之間共享,並可同時提供高性能。缺點為需要針對裝置顯著硬體改變。其他缺點為靜態地製造裝置資源以支援特定數量VM(例如,若建立裝置以支援四個VM,同時僅二個VM運行,其他二個VM的資源價值未被使用且無法用於該二個運行VM)。
根據一些實施例,以上技術4及5之混合方法用以達成高性能可共享裝置。然而,此混合方法不需要技術5所需之大部分硬體改變。而且,允許裝置資源動態配置於VM(取代技術5中靜態地區分)。在一些實施例中,由於修改裝置上運行之硬體及軟體,可直接與VM通訊,導致接近固有性能(不同於技術4)。類似於技術4,在一些實施例中,使用仿真相同虛擬裝置之裝置模型作為實體裝置。除了裝置軟體/韌體改變以外,裝置模型排除技術5所需大部分硬體改變。在一些實施例中,類似於技術2,一些裝置資源直接映射於VM中,使得VM可直接與裝置談話。然而,不同於技術2,在一些實施例中,裝置資源係以保持裝置可於多個VM之中共享的方式映射。類似於技術5,在一些實施例中,修改裝置行為以達成高性能。然而,不同於技術5之主要修改裝置軟體/韌體,而僅進行硬體之最小改變,因而保持裝置成本低並減少上市時
間。而且,基於需要進行裝置資源之裝置軟體(取代硬體)動態配置至VM之改變。
根據一些實施例,實施高性能I/O虛擬化以具裝置共享能力及動態配置裝置資源至VM之能力,而不需針對裝置顯著硬體改變。目前解決方案均無法提供所有四項該些特徵。在一些實施例中,進行裝置軟體/韌體之改變,並進行針對硬體之一些改變,以啟動裝置直接運行VM工作量,並提供來自不同VM之工作量之間之隔離及排程。
在一些實施例中,實施使用基於模型之直接執行的混合方法。在一些實施例中,修改裝置軟體/韌體取代製造裝置硬體資源之多個實例。此啟動來自不同VM之工作量之中之隔離及排程。
圖2描繪根據一些實施例之流程200。在一些實施例中,於202,VM要求存取裝置之資源(例如,裝置之MMIO資源)。於204,決定MMIO資源是否為頻繁存取之資源。於204,若其並非頻繁存取之資源,便於206要求VMM裝置模型設陷及仿真。接著,於208,VMM裝置模型確保隔離及排程。於210,VMM裝置模型存取裝置資源212。於204,若其為頻繁存取之資源,便於214,VM使用針對裝置之直接存取路徑。於216,裝置上VMM組件接收VM之直接存取。接著,於218,VMM組件確保該些存取之適當隔離及排程。於220,VMM組件存取裝置資源212。
現代裝置變得愈來愈可程控,且顯著部分裝置功能性
係於在裝置上運行之軟體/韌體中實施。在一些實施例中,需要針對裝置硬體最小或無改變。根據一些實施例,因此,更快速地針對諸如I/O裝置之裝置改變(例如,相較於使用SR-IOV之硬體方法)。在一些實施例中,諸如I/O裝置之裝置可於極少時間內虛擬化。根據一些實施例,可改變裝置軟體/韌體以提供高性能I/O虛擬化。
在一些實施例中,可使用單I/O記憶體管理單元(IOMMU)表仿真多個請求者ID。
圖3描繪根據一些實施例之系統300。在一些實施例中,系統300包括裝置302(例如I/O裝置)。裝置302具有裝置上之VMM組件以及第一VM工作量306及第二VM工作量308。系統300額外包括合併IOMMU表310,其包括第一VM IOMMU表312及第二VM IOMMU表314。系統300進一步包括主記憶體320,其包括第一VM記憶體322及第二VM記憶體324。
裝置302上VMM組件304於工作量使用之前將客實體位址(GPA)附加標籤。工作量306使用附加IOMMU表id標籤之GPA1來存取VM1 IOMMU表312,及工作量308使用附加IOMMU表id標籤之GPA2來存取VM2 IOMMU表312。
圖3關於當每一VM可針對高性能I/O直接存取裝置時,多個VM之中單裝置302(例如I/O裝置)的共享問題。由於VM直接存取裝置,便提供具客實體位址(GPA)之裝置。裝置302藉由使用IOMMU表310,其於使用
位址存取記憶體之前將VM之GPA轉換為主實體位址(HPA),存取VM記憶體322及/或324。同時,藉由使用稱為請求者ID(每一裝置功能具有請求者ID)之識別符,每一裝置功能可使用單IOMMU表。然而,對每一VM而言,需要不同IOMMU表以提供每一VM之個別GPA對HPA映射。因此,因為裝置功能一次僅可存取一IOMMU表,無法直接於多個VM之中共享功能。
圖3之系統300藉由仿真單裝置功能之多個請求者ID使得其可同步存取多個IOMMU表而解決以上問題。存取多個IOMMU表啟動同步存取多個VM之記憶體並由該些VM共享的裝置功能。
多個IOMMU表312及314合併為單IOMMU表310,且裝置功能使用此合併IOMMU表。IOMMU表312及314藉由將每一表之映射以不同偏移置於合併IOMMU表310中而予合併,使得GPA之高位位元代表IOMMU表ID。例如,若假設個別IOMMU表312及314映射39位元位址(其可映射512 GB客記憶體),及合併IOMMU表310可映射48位元位址,可製造合併IOMMU表,並以偏移0配置第一IOMMU表之映射,以偏移512 GB配置第二IOMMU表之映射,以偏移1 TB配置第三IOMMU表之映射等等。高位位元39-47有效地成為合併IOMMU表310中個別IOMMU表數量之識別符。
為以此合併表工作,修改希望用於不同IOMMU表之GPA。例如,第二IOMMU表之GPA 0出現於合併IOMMU
表中GPA 512 GB。此需要改變由裝置使用之位址(GPA),以反映IOMMU GPA中改變,使得其使用合併IOMMU表之正確部分。本質上,GPA之高位位元於裝置存取該些GPA之前被附加IOMMU表數量之標籤。在一些實施例中,修改於裝置上運行之軟體/韌體以執行此附加標籤。
根據一些實施例,系統300包括二重要組件。VMM組件304製造合併IOMMU表310並使裝置功能使用該IOMMU表。此外,裝置組件從VM接收GPA,並將其附加相應於所接收GPA之VM之IOMMU表數量的標籤。此允許裝置正確地使用VM之IOMMU表的映射(其現為部分合併IOMMU表)。藉由裝置之GPA的附加標籤並製造合併IOMMU表統合使用單一請求者ID仿真多個請求者ID。
系統300包括二個VM及其相應IOMMU表。該些IOMMU表已以不同偏移組合為單一合併IOMMU表,且該些偏移已被附加標籤於藉由裝置上相應VM之工作量使用之GPA中。本質上,此係使用單一IOMMU表仿真多個RID。儘管圖3代表VM之記憶體作為主記憶體中鄰近方塊,VM之記憶體實際上可處於分散遍佈主記憶體之非鄰近頁中。IOMMU表從每一VM之GPA的鄰近範圍映射至主記憶體中非鄰近實體頁。
根據一些實施例,裝置302為GPU。在一些實施例中,裝置302為Intel Larrabee GPU。如文中所討論,諸如
Larrabee GPU之GPU為極智慧型裝置並為高度可程控。在一些實施例中,如文中所討論,其運行稱為微OS或uOS之基於全FreeBSD之OS。此使其為此技術之理想候選者。在一些實施例中,單一裝置卡(例如單一Larrabee卡)係由二個Windows Vista VM共享。VM直接提交工作至裝置,導致接近固有性能。在一些實施例中,使用共享資源VMM,諸如Xen VMM。在一些實施例中,修改VMM(及/或Xen VMM)以製造合併之IOMMU表310。在一些實施例中,修改裝置OS驅動器,使得當建立裝置應用之頁表時,將GPA附加由VM使用之IOMMU表數量的標籤。當需進行主記憶體與本機記憶體之間DMA時,亦將GPA附加標籤。此使得所有存取至GPA使用合併之IOMMU表而映射至正確HPA。
目前裝置(例如SR-IOV裝置)於裝置中實施多個裝置功能以製造多個請求者ID(RID)。多個RID啟動裝置同步使用多個IOMMU表。然而,此需要顯著改變裝置硬體,而增加裝置成本及上市時間。
在一些實施例中,於VMM裝置模型中執行位址轉化。當VM嘗試提交工作緩衝器至裝置時,便於VMM內產生設陷,其於工作緩衝器提供至裝置之前,解析VM之工作緩衝器以發現GPA,並接著將GPA轉化為HPA。因為頻繁的VMM設陷及工作緩衝器解析,此技術具有極高虛擬化消耗。
在一些實施例中,僅需要針對裝置軟體/韌體較小修
改(取代製造不同裝置功能)以啟動其使用利用單一請求者ID之多個IOMMU表。VMM 304製造合併之IOMMU表310,其包括共享裝置302之所有VM的IOMMU表。裝置在存取GPA之前,將每一GPA附加相應IOMMU表數量之標籤。此減少裝置成本及上市時間。
目前解決方案未利用現代I/O裝置(例如,Intel Larrabee GPU)中可程式性以啟動同步存取多個IOMMU表。並非依據硬體改變,實施多個裝置功能以啟動同步存取多個IOMMU表。
在一些實施例中,使用合併之IOMMU表(其包括來自多個個別IOMMU表之映射),並修改裝置軟體/韌體而將GPA附加個別IOMMU表數量之標籤。
圖4描繪根據一些實施例之系統400。在一些實施例中,系統400包括裝置402(例如I/O裝置)、VMM 404、服務VM 406、及VM1 408。服務VM 406包括裝置模型412、主裝置驅動器414、及記憶體頁416(具映射直通作為MMIO頁)。VM1 408包括裝置驅動器422。
圖4描繪使用記憶體支持暫存器(例如MMIO暫存器)以減少裝置虛擬化中之VMM設陷。根據一些實施例,VMM 404運行VM1 408並使用裝置模型412虛擬化I/O裝置402。裝置模型412配置記憶體頁,並映射VM之I/O裝置的MMIO頁直通至此記憶體頁上。裝置之合格暫存器駐於此頁上。裝置模型412及VM之裝置驅動器422二者可藉由存取此頁而直接存取合格暫存器。存取不合格
暫存器仍由VMM 404設陷並由裝置模型412仿真。
使用全裝置仿真之I/O裝置虛擬化需要VMM中軟體裝置模型,其仿真VM之硬體裝置。仿真之硬體裝置通常依據現有實體裝置以促使市售作業系統中呈現裝置驅動器。VM 408觀看由VMM裝置模型412仿真之硬體裝置,並經由讀取及寫入而存取其PCI、I/O及MMIO(記憶體-映射I/O)空間,如同其為實體裝置。該些存取係由VMM 404設陷,並被傳送至適當仿真之裝置模型412。大部分現代I/O裝置經由裝置之PCI MMIO BAR(基本位址暫存器)組配之範圍內記憶體映射I/O而暴露其暫存器。然而,設陷每一VM存取裝置之MMIO暫存器可具有顯著消耗,並大幅減少虛擬化裝置之性能。VM讀取/寫入一些仿真裝置之MMIO暫存器,除了返回/寫入暫存器之值外,不需要裝置模型額外處理。VMM 404不需設陷存取該等暫存器(此後稱為合格暫存器),如同未執行處理而作為存取結果。然而,目前VMM設陷存取合格暫存器不一定增加裝置虛擬化中虛擬化消耗。若VM 408頻繁存取合格暫存器,此消耗變得更加顯著。
系統400減少藉由以記憶體支持合格暫存器而存取至MMIO暫存器造成之VMM設陷數量。VMM中裝置模型412配置記憶體頁用於合格暫存器,並映射該些頁進入VM作為RO(唯讀合格暫存器)或RW(讀取/寫入合格暫存器)。當VM 408進行針對合格暫存器之合格存取時,便存取記憶體而未針對VMM 404設陷。裝置模型412
使用記憶體頁作為裝置之MMIO空間中虛擬暫存器之位置。藉由賦予記憶體適當值及/或讀取VM 408已寫入值,裝置模型412非同步仿真該些暫存器。藉由減少VMM設陷之數量,裝置虛擬化性能提昇。
合格暫存器使用正常記憶體虛擬化技術(影子頁表或延伸頁表(EPT)),映射直通(唯讀或讀取-寫入,取決於暫存器語義)進入VM之位址空間。然而,由於MMIO位址僅於頁間隔尺寸可映射進入VM,映射該些暫存器直通將亦映射該頁上每一其他暫存器直通進入VM 408。因此,僅於無不合格暫存器駐於相同頁上時,VMM 404可映射合格裝置暫存器直通進入VM 408。因此,根據一些實施例,設計裝置之MMIO暫存器佈局,使得無不合格暫存器駐於與合格暫存器之相同頁上。合格暫存器進一步區分為唯讀及讀取/寫入直通暫存器,且該些二類合格暫存器需位於不同MMIO頁上。若VM使用準虛擬化驅動器,可針對裝置友善地製造該等虛擬化MMIO佈局,使得不需依賴具該等MMIO佈局之硬體裝置。
目前VMM未映射合格裝置暫存器直通進入VM,並藉由設陷存取該些暫存器而招致不必要之虛擬化消耗。原因之一在於合格暫存器係位於與不合格暫存器之相同MMIO頁上。目前VMM使用VM中準虛擬化驅動器以減少VMM設陷。該些準虛擬化驅動器避免進行不必要之暫存器存取(例如,因為該些暫存器值在VM中是無意義的)或分批處理該些暫存器存取(例如,寫入一連串暫存器
以編程裝置)。
系統400使用新技術以進一步減少I/O裝置虛擬化中VMM設陷數量,導致顯著較佳裝置虛擬化性能。系統400將記憶體支持合格暫存器用於VM之裝置,並映射該些記憶體頁進入VM以減少存取虛擬裝置中VMM設陷數量。
目前VMM裝置模型未映射合格裝置暫存器直通進入VM,及藉由其存取設陷而招致不必要虛擬化消耗。此導致在虛擬化裝置中較所需更多的VMM設陷。
根據一些實施例,以記憶體支持合格MMIO暫存器,且記憶體頁於VM中映射直通而減少VM設陷。
圖5描繪根據一些實施例之系統500。在一些實施例中,系統500包括裝置502(例如I/O裝置)、VMM 504、服務VM 506、及VM 508。服務VM 506包括裝置模型512、主裝置驅動器514、及記憶體頁516,其包括中斷狀態暫存器。VM 508包括裝置驅動器522。在裝置502中,在工作量完成532,裝置502接收中斷狀態暫存器(例如,記憶體頁516中之中斷狀態暫存器)之位置,並於534產生中斷之前予以更新。
系統500描繪將中斷直接注入VM 508。VMM 504運行VM 508虛擬化,其I/O裝置502使用裝置模型512。裝置模型配置記憶體頁516以包含中斷狀態暫存器並將其位址傳遞至實體I/O裝置。裝置模型512亦映射記憶體頁唯讀直通進入VM 508。在完成VM之工作量之後,I/O裝置502更新記憶體頁516上中斷狀態暫存器,接著產生中
斷。一接到裝置中斷,處理器直接將中斷注入VM 508。此造成VM之裝置驅動器522讀取中斷狀態暫存器(未產生任何VMM設陷)。當裝置驅動器522寫入該些暫存器(以確認中斷)時,便產生VMM設陷,且裝置模型512進行處理。
如文中所討論,VMM提供I/O裝置虛擬化以啟動VM使用實體I/O裝置。許多VMM使用裝置模型以允許多個VM使用單一實體裝置。I/O虛擬化消耗為總虛擬化消耗之最大部分。I/O虛擬化消耗的大部分為處理VM之裝置中斷中所包括之消耗。當實體裝置處理來自VM之要求時,便產生藉由VMM之裝置模型設陷及處理之中斷。裝置模型建立虛擬中斷狀態暫存器並將中斷注入VM。已觀察到將中斷注入VM為極重量級作業。需要排程VM並將IPI發送至挑選以運行VM之處理器。此顯著造成虛擬化消耗。一接收中斷,VM便讀取中斷狀態暫存器。此產生針對VMM之裝置模型的其他設陷,此將該值返回至暫存器。
為減少中斷處理潛時,硬體特徵(即虛擬中斷傳送及部署中斷)可用於將中斷直接注入VM而未包括VMM。該些硬體特徵允許裝置直接中斷VM。雖該些技術工作用於直接裝置配置及SR-IOV裝置,直接中斷注入並未針對基於裝置模型之虛擬化解決方案工作。這是因為VM之裝置的中斷狀態是由裝置模型管理,且必須將中斷通知裝置模型,使得其可更新中斷狀態。
系統500針對裝置-模型-基於虛擬化之解決方案而啟動直接中斷注入VM。由於VMM之裝置模型於直接中斷注入其間未獲通知,裝置本身於產生中斷之前便更新裝置模型之中斷狀態暫存器。裝置模型針對VM之裝置的中斷狀態而配置記憶體,並將此記憶體之位置傳送至裝置。修改裝置(以裝置上運行之硬體或軟體/韌體),使得其從裝置模型接收中斷狀態暫存器之位置,並於產生中斷之前適當更新該些位置。裝置模型亦映射中斷狀態暫存器進入VM位址空間,使得VM之裝置驅動器可予以存取而未產生VMM設陷。裝置之中斷狀態暫存器通常寫入1以清除(W1C)語義(將1寫入暫存器之位元來清除位元)。該等暫存器無法映射讀取-寫入進入VM,因為RAM記憶體無法仿真W1C語義。該些中斷狀態暫存器可映射唯讀進入VM,使得VM可讀取中斷狀態暫存器而無任何VMM設陷,且當寫入中斷狀態暫存器(例如確認中斷)時,VMM設陷存取且裝置模型仿真W1C語義。因此,系統500的一些實施例使用二個重要組件。
根據一些實施例,系統500的第一重要組件為VMM裝置模型512,其針對中斷狀態暫存器配置記憶體,通知裝置有關該些暫存器之位置,並映射此記憶體進入VM508之MMIO空間。
根據一些實施例,系統500的第二重要組件為裝置常駐組件532,其從裝置模型512接收中斷狀態暫存器之位置並於產生VM 508中斷之前適當予以更新。
根據一些實施例,使用硬體提供支援直接中斷注入(例如APIC特徵,即針對Intel處理器之虛擬中斷傳送及部署中斷)。
根據一些實施例,VMM裝置模型512卸載更新中斷狀態暫存器之責任至裝置本身,使得其於中斷注入VM期間不需涉入。在目前解決方案中,在裝置中斷期間,裝置模型更新中斷狀態暫存器並將中斷注入VM。在圖5之系統500中,裝置更新VM之中斷狀態暫存器(已由裝置模型預先配置之該些暫存器的記憶體)並產生直接注入VM之中斷。此外,裝置模型512亦映射中斷狀態暫存器進入VM,以避免當VM之裝置驅動器存取該些暫存器時之VMM設陷。
在目前解決方案中,中斷狀態暫存器常駐裝置本身。裝置並不負責更新記憶體中之中斷狀態暫存器。目前裝置模型亦不映射該些暫存器進入VM,以避免當VM之裝置驅動器存取該些暫存器時之VMM設陷。
根據一些實施例,實體I/O裝置更新記憶體中裝置模型之中斷狀態暫存器,允許中斷直接注入VM。
儘管文中已說明以特別方式實施之一些實施例,根據一些實施例,該些特別實施可能並不需要。
儘管已參照特別實施說明一些實施例,根據一些實施例,其他實施亦可。此外,圖式中所描繪及/或文中所說明之電路元件之配置及/或順序或其他特徵,不需以特別描繪及說明之方式配置。根據一些實施例,許多其他配置
亦可。
在圖中所示之每一系統中,有時元件可各具有相同參考數量或不同參考數量以建議代表之元件可不同及/或類似。然而,元件可為足夠彈性以具有不同實施並與文中所示或說明之一些或全部系統工作。圖中所示之各種元件可為相同或不同。哪一稱為第一元件及哪一稱為第二元件是任意的。
在說明及申請項中,可使用「耦合」及「連接」之用詞連同其衍生詞。應理解的是該些用詞不希望相互同義。而是在特定實施例中,「連接」可用以指示二或更多元件係相互直接實體或電接觸。「耦合」可表示二或更多元件係直接實體或電接觸。然而,「耦合」亦可表示二或更多元件並非相互直接接觸,而是仍相互合作或互動。
驗算法於此處或通常被視為導致所欲結果之動作或作業的自相容序列。該些驗算法包括實體數量之實體操縱。通常,雖然不一定,該些數量係採取可儲存、轉移、組合、比較、或操縱之電或磁信號之形式。有時已被證實方便,原則上為了共同使用之原因,該些信號稱為位元、值、元件、符號、字元、用詞、數量等。然而,應理解的是所有該些及類似用詞可與適當實體數量相結合,並僅為應用於該些數量之方便標籤。
一些實施例可以硬體、韌體、及軟體之一或組合實施。一些實施例亦可實施為儲存於機器可讀取媒體上之指令,其可由計算平台讀取及執行,以執行文中所說明之作業
。機器可讀取媒體可包括任何用於以可由機器(例如電腦)讀取之形式儲存及傳輸資訊的機構。例如,機器可讀取媒體可包括唯讀記憶體(ROM);隨機存取記憶體(RAM);磁碟儲存媒體;光學儲存媒體;快閃記憶體裝置;電、光學、聲學、或其他形式傳播信號(例如,載波、紅外線信號、數位信號、傳輸及/或接收信號之介面等),及其他。
一實施例為本發明之實施或範例。本說明書中提及「實施例」、「一實施例」、「一些實施例」、或「其他實施例」表示結合實施例中所說明之特定特徵、結構、或特性至少包括於本發明之一些實施例中,但不一定是全部實施例。「實施例」、「一實施例」、或「一些實施例」之出現不一定均指相同實施例。
並非文中所說明及描繪的所有組件、特徵、結構、特性等需包括於特定實施例中。例如,若本說明書表示「可」、「可能」、「能夠」、「能」包括組件、特徵、結構、或特性,即不需要包括特定組件、特徵、結構、或特性。若本說明書或申請項提及「一」元件,並非表示僅存在一元件。若本說明書或申請項提及「額外」元件,並不排除存在一個以上額外元件。
儘管文中已使用流程圖及/或狀態圖說明實施例,本發明並不侷限於文中該些圖或相應說明。例如,流程不需經由每一描繪之方塊或狀態或以文中所描繪及說明之確實相同順序移動。
本發明並非侷限於文中所列之特定內容。實際上,具有本揭露之優勢的熟悉本技術之人士將理解,從上述說明及圖式,可於本發明之範圍內進行其他變化。因此,下列申請項包括定義本發明之範圍之任何修正。
100、300、400、500‧‧‧系統
102、302、402、502‧‧‧裝置
104、404、504‧‧‧虛擬機器監視器
106、408‧‧‧虛擬機器1
108‧‧‧虛擬機器2
110‧‧‧零域
112‧‧‧作業系統
114‧‧‧排程器
116‧‧‧驅動器
118、120‧‧‧驅動器應用
122‧‧‧裝置卡
124‧‧‧記憶體
126‧‧‧圖形光圈
128、130‧‧‧顯示介面
134、144‧‧‧應用
136‧‧‧運行時間
138、148‧‧‧裝置UMD
140、150‧‧‧核心模式驅動器
152‧‧‧主核心模式驅動器
154‧‧‧虛擬主延伸
156、162‧‧‧處理器仿真器
158、164、412、512‧‧‧裝置模型
200‧‧‧流程
212‧‧‧裝置資源
304‧‧‧虛擬機器監視器組件
306‧‧‧第一虛擬機器工作量
308‧‧‧第二虛擬機器工作量
310‧‧‧合併輸入/輸出記憶體管理單元表
312‧‧‧第一虛擬機器輸入/輸出記憶體管理單元表
314‧‧‧第二虛擬機器輸入/輸出記憶體管理單元表
320‧‧‧主記憶體
322‧‧‧第一虛擬機器記憶體
324‧‧‧第二虛擬機器記憶體
406、506‧‧‧服務虛擬機器
414、514‧‧‧主裝置驅動器
416、516‧‧‧記憶體頁
422、522‧‧‧裝置驅動器
508‧‧‧虛擬機器
532‧‧‧裝置常駐組件
從以下提供之詳細說明及從本發明之一些實施例之附圖,將更完整理解本發明,然而不應侷限於本發明所說明之特定實施例,而是僅為說明及理解。
圖1描繪根據本發明之一些實施例之系統。
圖2描繪根據本發明之一些實施例之流程。
圖3描繪根據本發明之一些實施例之系統。
圖4描繪根據本發明之一些實施例之系統。
圖5描繪根據本發明之一些實施例之系統。
100‧‧‧系統
102‧‧‧裝置
104‧‧‧虛擬機器監視器
106‧‧‧虛擬機器1
108‧‧‧虛擬機器2
110‧‧‧零域
112‧‧‧作業系統
114‧‧‧排程器
116‧‧‧驅動器
118、120‧‧‧驅動器應用
122‧‧‧裝置卡
124‧‧‧記憶體
126‧‧‧圖形光圈
128、130‧‧‧顯示介面
134、144‧‧‧應用
136‧‧‧運行時間
138、148‧‧‧裝置UMD
140、150‧‧‧核心模式驅動器
146‧‧‧運行時間
152‧‧‧主核心模式驅動器
154‧‧‧虛擬主延伸
156、162‧‧‧處理器仿真器
158、164‧‧‧裝置模型
Claims (18)
- 一種經虛擬化之智慧型裝置的直接共享方法,包含:使用修改之主裝置驅動器及單根輸入/輸出(I/O)虛擬化使該智慧型裝置可直接地運行虛擬機器工作量;從不同虛擬機器提供工作量之間之隔離及排程;映射中斷狀態暫存器進入虛擬機器位址空間;接收該些中斷狀態暫存器之位置,並於產生中斷之前更新該些位置;以及藉由裝置模型設陷及仿真。
- 如申請專利範圍第1項之方法,進一步包含修改裝置軟體及/或韌體以能從不同虛擬機器實施工作量之隔離及排程。
- 如申請專利範圍第1項之方法,進一步包含提供高性能輸入/輸出虛擬化。
- 如申請專利範圍第1項之方法,進一步包含啟用複數虛擬機器之裝置共享。
- 如申請專利範圍第1項之方法,進一步包含動態配置裝置資源至虛擬機器。
- 如申請專利範圍第1項之方法,進一步包含動態配置裝置資源至虛擬機器,而不需要顯著硬體改變為虛擬化裝置。
- 如申請專利範圍第1項之方法,進一步包含針對虛擬化裝置之用於頻繁存取之裝置資源而直接存取路徑。
- 如申請專利範圍第1項之方法,進一步包含確保用於非頻繁存取之裝置資源的隔離及排程。
- 如申請專利範圍第1項之方法,進一步包含使用虛擬機器裝置模型用於非頻繁存取之裝置資源而存取裝置資源。
- 一種經虛擬化之智慧型裝置的直接共享設備,包含:具有虛擬機器監視器之裝置,適於使具有虛擬機器監視器之該裝置可使用修改之主裝置驅動器及單根輸入/輸出(I/O)虛擬化直接運行虛擬機器工作量,及適於從不同虛擬機器提供工作量之間之隔離及排程,其中,該虛擬機器監視器適於:映射中斷狀態暫存器進入虛擬機器位址空間;接收該些中斷狀態暫存器之位置,並於產生中斷之前更新該些位置;以及藉由裝置模型設陷及仿真。
- 如申請專利範圍第10項之設備,該虛擬機器監視器適於修改裝置軟體及/或韌體以能從不同虛擬機器實施工作量之隔離及排程。
- 如申請專利範圍第10項之設備,該虛擬機器監視器適於提供高性能輸入/輸出虛擬化。
- 如申請專利範圍第10項之設備,該虛擬機器監視器適於啟用複數虛擬機器之裝置共享。
- 如申請專利範圍第10項之設備,該虛擬機器監 視器適於動態配置裝置資源至虛擬機器。
- 如申請專利範圍第10項之設備,該虛擬機器監視器適於動態配置裝置資源至虛擬機器,而不需要顯著硬體改變為虛擬化裝置。
- 如申請專利範圍第10項之設備,該虛擬機器監視器適於針對虛擬化裝置之用於頻繁存取之裝置資源而直接存取路徑。
- 如申請專利範圍第10項之設備,該虛擬機器監視器適於確保用於非頻繁存取之裝置資源的隔離及排程。
- 如申請專利範圍第10項之設備,該虛擬機器監視器適於使用虛擬機器裝置模型用於非頻繁存取之裝置資源而存取裝置資源。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/977,490 US20120167082A1 (en) | 2010-12-23 | 2010-12-23 | Direct sharing of smart devices through virtualization |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201246072A TW201246072A (en) | 2012-11-16 |
TWI599955B true TWI599955B (zh) | 2017-09-21 |
Family
ID=46314814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100147134A TWI599955B (zh) | 2010-12-23 | 2011-12-19 | 經虛擬化之智慧型裝置的直接共享方法及設備 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20120167082A1 (zh) |
JP (1) | JP5746770B2 (zh) |
KR (1) | KR101569731B1 (zh) |
CN (1) | CN103282881B (zh) |
TW (1) | TWI599955B (zh) |
WO (1) | WO2012087984A2 (zh) |
Families Citing this family (76)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120182993A1 (en) * | 2011-01-14 | 2012-07-19 | International Business Machines Corporation | Hypervisor application of service tags in a virtual networking environment |
US10142218B2 (en) | 2011-01-14 | 2018-11-27 | International Business Machines Corporation | Hypervisor routing between networks in a virtual networking environment |
JP5585844B2 (ja) * | 2011-03-25 | 2014-09-10 | 株式会社日立製作所 | 仮想計算機の制御方法及び計算機 |
US8774213B2 (en) | 2011-03-30 | 2014-07-08 | Amazon Technologies, Inc. | Frameworks and interfaces for offload device-based packet processing |
US8799592B2 (en) * | 2011-04-20 | 2014-08-05 | International Business Machines Corporation | Direct memory access-like data transfer between guest operating systems |
US9021475B2 (en) * | 2011-05-04 | 2015-04-28 | Citrix Systems, Inc. | Systems and methods for SR-IOV pass-thru via an intermediary device |
US8850130B1 (en) | 2011-08-10 | 2014-09-30 | Nutanix, Inc. | Metadata for managing I/O and storage for a virtualization |
US8863124B1 (en) | 2011-08-10 | 2014-10-14 | Nutanix, Inc. | Architecture for managing I/O and storage for a virtualization environment |
US9652265B1 (en) * | 2011-08-10 | 2017-05-16 | Nutanix, Inc. | Architecture for managing I/O and storage for a virtualization environment with multiple hypervisor types |
US9747287B1 (en) | 2011-08-10 | 2017-08-29 | Nutanix, Inc. | Method and system for managing metadata for a virtualization environment |
US8601473B1 (en) | 2011-08-10 | 2013-12-03 | Nutanix, Inc. | Architecture for managing I/O and storage for a virtualization environment |
US9009106B1 (en) | 2011-08-10 | 2015-04-14 | Nutanix, Inc. | Method and system for implementing writable snapshots in a virtualized storage environment |
US8549518B1 (en) | 2011-08-10 | 2013-10-01 | Nutanix, Inc. | Method and system for implementing a maintenanece service for managing I/O and storage for virtualization environment |
US9264402B2 (en) * | 2012-02-20 | 2016-02-16 | Virtustream Canada Holdings, Inc. | Systems involving firewall of virtual machine traffic and methods of processing information associated with same |
US9099051B2 (en) * | 2012-03-02 | 2015-08-04 | Ati Technologies Ulc | GPU display abstraction and emulation in a virtualization system |
US9772866B1 (en) | 2012-07-17 | 2017-09-26 | Nutanix, Inc. | Architecture for implementing a virtualization environment and appliance |
US9384024B2 (en) * | 2012-12-18 | 2016-07-05 | Dynavisor, Inc. | Dynamic device virtualization |
US9665386B2 (en) | 2013-06-14 | 2017-05-30 | Nutanix, Inc. | Method for leveraging hypervisor functionality for maintaining application consistent snapshots in a virtualization environment |
US9740514B1 (en) * | 2013-06-26 | 2017-08-22 | Nutanix, Inc. | Method and system to share data with snapshots in a virtualization environment |
US9983893B2 (en) | 2013-10-01 | 2018-05-29 | Red Hat Israel, Ltd. | Handling memory-mapped input-output (MMIO) based instructions using fast access addresses |
US9916173B2 (en) * | 2013-11-25 | 2018-03-13 | Red Hat Israel, Ltd. | Facilitating execution of MMIO based instructions |
US10191759B2 (en) * | 2013-11-27 | 2019-01-29 | Intel Corporation | Apparatus and method for scheduling graphics processing unit workloads from virtual machines |
US9411765B2 (en) * | 2013-12-20 | 2016-08-09 | Qualcomm Incorporated | Methods of using a peripheral component interconnect express (PCIE) device in a virtual environment |
US10346330B2 (en) | 2014-01-29 | 2019-07-09 | Red Hat Israel, Ltd. | Updating virtual machine memory by interrupt handler |
US11243707B2 (en) | 2014-03-12 | 2022-02-08 | Nutanix, Inc. | Method and system for implementing virtual machine images |
US9940167B2 (en) | 2014-05-20 | 2018-04-10 | Red Hat Israel, Ltd. | Identifying memory devices for swapping virtual machine memory pages |
CN111459618A (zh) * | 2014-06-26 | 2020-07-28 | 英特尔公司 | 虚拟化环境中的智能gpu调度 |
US9692698B2 (en) | 2014-06-30 | 2017-06-27 | Nicira, Inc. | Methods and systems to offload overlay network packet encapsulation to hardware |
US9419897B2 (en) * | 2014-06-30 | 2016-08-16 | Nicira, Inc. | Methods and systems for providing multi-tenancy support for Single Root I/O Virtualization |
US9626324B2 (en) | 2014-07-08 | 2017-04-18 | Dell Products L.P. | Input/output acceleration in virtualized information handling systems |
US9262197B2 (en) * | 2014-07-16 | 2016-02-16 | Dell Products L.P. | System and method for input/output acceleration device having storage virtual appliance (SVA) using root of PCI-E endpoint |
US10241817B2 (en) | 2014-11-25 | 2019-03-26 | Red Hat Israel, Ltd. | Paravirtualized access for device assignment by bar extension |
KR102336443B1 (ko) * | 2015-02-04 | 2021-12-08 | 삼성전자주식회사 | 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치 |
WO2016149935A1 (en) * | 2015-03-26 | 2016-09-29 | Intel Corporation | Computing methods and apparatuses with graphics and system memory conflict check |
US9563494B2 (en) | 2015-03-30 | 2017-02-07 | Nxp Usa, Inc. | Systems and methods for managing task watchdog status register entries |
KR102371916B1 (ko) | 2015-07-22 | 2022-03-07 | 삼성전자주식회사 | 가상 머신을 지원하는 스토리지 장치, 그것을 포함하는 스토리지 시스템 및 그것의 동작 방법 |
US20170075706A1 (en) * | 2015-09-16 | 2017-03-16 | Red Hat Israel, Ltd. | Using emulated input/output devices in virtual machine migration |
US10430221B2 (en) | 2015-09-28 | 2019-10-01 | Red Hat Israel, Ltd. | Post-copy virtual machine migration with assigned devices |
WO2017062541A1 (en) | 2015-10-06 | 2017-04-13 | Carnegie Mellon University | Method and apparatus for trusted display on untrusted computing platforms to secure applications |
GB2545170B (en) | 2015-12-02 | 2020-01-08 | Imagination Tech Ltd | GPU virtualisation |
US20180330080A1 (en) * | 2015-12-22 | 2018-11-15 | Intel Corporation | Isolated remotely-virtualized mobile computing environment |
US10509729B2 (en) | 2016-01-13 | 2019-12-17 | Intel Corporation | Address translation for scalable virtualization of input/output devices |
US9846610B2 (en) | 2016-02-08 | 2017-12-19 | Red Hat Israel, Ltd. | Page fault-based fast memory-mapped I/O for virtual machines |
US10042720B2 (en) | 2016-02-22 | 2018-08-07 | International Business Machines Corporation | Live partition mobility with I/O migration |
US10002018B2 (en) | 2016-02-23 | 2018-06-19 | International Business Machines Corporation | Migrating single root I/O virtualization adapter configurations in a computing system |
US10042723B2 (en) | 2016-02-23 | 2018-08-07 | International Business Machines Corporation | Failover of a virtual function exposed by an SR-IOV adapter |
US10671419B2 (en) * | 2016-02-29 | 2020-06-02 | Red Hat Israel, Ltd. | Multiple input-output memory management units with fine grained device scopes for virtual machines |
US10025584B2 (en) | 2016-02-29 | 2018-07-17 | International Business Machines Corporation | Firmware management of SR-IOV adapters |
US10467103B1 (en) | 2016-03-25 | 2019-11-05 | Nutanix, Inc. | Efficient change block training |
US10613947B2 (en) | 2016-06-09 | 2020-04-07 | Nutanix, Inc. | Saving and restoring storage devices using application-consistent snapshots |
US9715469B1 (en) | 2016-10-21 | 2017-07-25 | International Business Machines Corporation | Migrating interrupts from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system |
US9740647B1 (en) | 2016-10-21 | 2017-08-22 | International Business Machines Corporation | Migrating DMA mappings from a source I/O adapter of a computing system to a destination I/O adapter of the computing system |
US9720862B1 (en) | 2016-10-21 | 2017-08-01 | International Business Machines Corporation | Migrating interrupts from a source I/O adapter of a computing system to a destination I/O adapter of the computing system |
US9720863B1 (en) | 2016-10-21 | 2017-08-01 | International Business Machines Corporation | Migrating MMIO from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system |
US9785451B1 (en) | 2016-10-21 | 2017-10-10 | International Business Machines Corporation | Migrating MMIO from a source I/O adapter of a computing system to a destination I/O adapter of the computing system |
US9760512B1 (en) | 2016-10-21 | 2017-09-12 | International Business Machines Corporation | Migrating DMA mappings from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system |
US10228981B2 (en) | 2017-05-02 | 2019-03-12 | Intel Corporation | High-performance input-output devices supporting scalable virtualization |
US10824522B2 (en) | 2017-11-27 | 2020-11-03 | Nutanix, Inc. | Method, apparatus, and computer program product for generating consistent snapshots without quiescing applications |
KR102498319B1 (ko) | 2018-06-04 | 2023-02-08 | 삼성전자주식회사 | 반도체 장치 |
US11556437B2 (en) | 2018-08-22 | 2023-01-17 | Intel Corporation | Live migration of virtual devices in a scalable input/output (I/O) virtualization (S-IOV) architecture |
US11550606B2 (en) * | 2018-09-13 | 2023-01-10 | Intel Corporation | Technologies for deploying virtual machines in a virtual network function infrastructure |
US11586454B2 (en) * | 2019-12-30 | 2023-02-21 | Red Hat, Inc. | Selective memory deduplication for virtual machines |
US11962518B2 (en) | 2020-06-02 | 2024-04-16 | VMware LLC | Hardware acceleration techniques using flow selection |
US11829793B2 (en) | 2020-09-28 | 2023-11-28 | Vmware, Inc. | Unified management of virtual machines and bare metal computers |
US11636053B2 (en) | 2020-09-28 | 2023-04-25 | Vmware, Inc. | Emulating a local storage by accessing an external storage through a shared port of a NIC |
US12021759B2 (en) | 2020-09-28 | 2024-06-25 | VMware LLC | Packet processing with hardware offload units |
US11736565B2 (en) | 2020-09-28 | 2023-08-22 | Vmware, Inc. | Accessing an external storage through a NIC |
US11593278B2 (en) | 2020-09-28 | 2023-02-28 | Vmware, Inc. | Using machine executing on a NIC to access a third party storage not supported by a NIC or host |
US11792134B2 (en) | 2020-09-28 | 2023-10-17 | Vmware, Inc. | Configuring PNIC to perform flow processing offload using virtual port identifiers |
US11755512B2 (en) * | 2021-08-17 | 2023-09-12 | Red Hat, Inc. | Managing inter-processor interrupts in virtualized computer systems |
US11995024B2 (en) | 2021-12-22 | 2024-05-28 | VMware LLC | State sharing between smart NICs |
US11863376B2 (en) | 2021-12-22 | 2024-01-02 | Vmware, Inc. | Smart NIC leader election |
US11899594B2 (en) | 2022-06-21 | 2024-02-13 | VMware LLC | Maintenance of data message classification cache on smart NIC |
US11928062B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Accelerating data message classification with smart NICs |
US11928367B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Logical memory addressing for network devices |
CN116841691A (zh) * | 2023-06-15 | 2023-10-03 | 海光信息技术股份有限公司 | 加密硬件的配置方法、数据机密计算方法及相关设备 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0792761B2 (ja) * | 1985-07-31 | 1995-10-09 | 株式会社日立製作所 | 仮想計算機システムの入出力制御方法 |
EP0610677A3 (en) * | 1993-02-12 | 1995-08-02 | Ibm | Communication device management module operating in two modes. |
US6980946B2 (en) * | 2001-03-15 | 2005-12-27 | Microsoft Corporation | Method for hybrid processing of software instructions of an emulated computer system |
US7558723B2 (en) * | 2003-12-12 | 2009-07-07 | Microsoft Corporation | Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices |
US7653803B2 (en) * | 2006-01-17 | 2010-01-26 | Globalfoundries Inc. | Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU) |
US7613898B2 (en) * | 2006-01-17 | 2009-11-03 | Globalfoundries Inc. | Virtualizing an IOMMU |
CN101211323B (zh) * | 2006-12-28 | 2011-06-22 | 联想(北京)有限公司 | 一种硬件中断的处理方法和处理装置 |
US7945436B2 (en) | 2007-11-06 | 2011-05-17 | Vmware, Inc. | Pass-through and emulation in a virtual machine environment |
US8151265B2 (en) * | 2007-12-19 | 2012-04-03 | International Business Machines Corporation | Apparatus for and method for real-time optimization of virtual machine input/output performance |
JP2009266050A (ja) * | 2008-04-28 | 2009-11-12 | Hitachi Ltd | 情報処理装置 |
US20100138829A1 (en) * | 2008-12-01 | 2010-06-03 | Vincent Hanquez | Systems and Methods for Optimizing Configuration of a Virtual Machine Running At Least One Process |
US8549516B2 (en) * | 2008-12-23 | 2013-10-01 | Citrix Systems, Inc. | Systems and methods for controlling, by a hypervisor, access to physical resources |
CN101620547B (zh) * | 2009-07-03 | 2012-05-30 | 中国人民解放军国防科学技术大学 | X86计算机虚拟化的物理中断处理方法 |
-
2010
- 2010-12-23 US US12/977,490 patent/US20120167082A1/en not_active Abandoned
-
2011
- 2011-12-19 KR KR1020137016023A patent/KR101569731B1/ko not_active IP Right Cessation
- 2011-12-19 TW TW100147134A patent/TWI599955B/zh active
- 2011-12-19 WO PCT/US2011/065941 patent/WO2012087984A2/en active Application Filing
- 2011-12-19 CN CN201180061944.4A patent/CN103282881B/zh not_active Expired - Fee Related
- 2011-12-19 JP JP2013544877A patent/JP5746770B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
KR20130111593A (ko) | 2013-10-10 |
US20120167082A1 (en) | 2012-06-28 |
WO2012087984A3 (en) | 2012-11-01 |
CN103282881A (zh) | 2013-09-04 |
JP5746770B2 (ja) | 2015-07-08 |
WO2012087984A2 (en) | 2012-06-28 |
CN103282881B (zh) | 2016-08-31 |
JP2013546111A (ja) | 2013-12-26 |
TW201246072A (en) | 2012-11-16 |
KR101569731B1 (ko) | 2015-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI599955B (zh) | 經虛擬化之智慧型裝置的直接共享方法及設備 | |
US10310879B2 (en) | Paravirtualized virtual GPU | |
Tian et al. | A Full {GPU} Virtualization Solution with Mediated {Pass-Through} | |
JP5607474B2 (ja) | コンピュータ・システムにおける入れ子式仮想化の性能改善 | |
AU2009357325B2 (en) | Method and apparatus for handling an I/O operation in a virtualization environment | |
US8966477B2 (en) | Combined virtual graphics device | |
US7945436B2 (en) | Pass-through and emulation in a virtual machine environment | |
US20100262722A1 (en) | Dynamic Assignment of Graphics Processing Unit to a Virtual Machine | |
US20210165675A1 (en) | Live migration for hardware accelerated para-virtualized io device | |
US10162657B2 (en) | Device and method for address translation setting in nested virtualization environment | |
US10620963B2 (en) | Providing fallback drivers for IO devices in a computing system | |
US20170149694A1 (en) | Shim layer used with a virtual machine virtual nic and a hardware platform physical nic | |
US9851992B2 (en) | Paravirtulized capability for device assignment | |
Pratt et al. | The ongoing evolution of xen | |
Liu et al. | Research on Hardware I/O Passthrough in Computer Virtualization | |
Parmar et al. | An Approach To Graphics Passthrough In Cloud Virtual Machines | |
Murray et al. | Xen and the Beauty of Virtualization |