JP5746770B2 - 仮想化によるスマートデバイスの直接的共有 - Google Patents

仮想化によるスマートデバイスの直接的共有 Download PDF

Info

Publication number
JP5746770B2
JP5746770B2 JP2013544877A JP2013544877A JP5746770B2 JP 5746770 B2 JP5746770 B2 JP 5746770B2 JP 2013544877 A JP2013544877 A JP 2013544877A JP 2013544877 A JP2013544877 A JP 2013544877A JP 5746770 B2 JP5746770 B2 JP 5746770B2
Authority
JP
Japan
Prior art keywords
virtual machine
vmm
scheduling
resources
interrupt
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013544877A
Other languages
English (en)
Other versions
JP2013546111A (ja
Inventor
クマー、サンジェイ
ジェイ. クーパーザワイテ、デーヴィット
ジェイ. クーパーザワイテ、デーヴィット
アール. ランツ、フィリップ
アール. ランツ、フィリップ
エム. サンカラン、ラジェシュ
エム. サンカラン、ラジェシュ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2013546111A publication Critical patent/JP2013546111A/ja
Application granted granted Critical
Publication of JP5746770B2 publication Critical patent/JP5746770B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/4555Para-virtualisation, i.e. guest operating system has to be modified
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/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)
  • Accessory Devices And Overall Control Thereof (AREA)
  • Stored Programmes (AREA)

Description

本発明は、全体的に、仮想化によるスマートデバイスの直接的共有に関する。
入出力(I/O)デバイスの仮想化は、従来、完全なデバイスエミュレーションを実行するデバイスモデルを用いて実装されてきた。これにより、デバイスの共有が可能になるが、性能的に大幅なオーバーヘッドが発生する。デバイスを仮想マシン(VM)に直接デバイス割り当てすると、ネイティブ並みの性能が可能になるが、デバイスをVM間で共有することはできない。シングルルートI/O仮想化(SR−IOV)等の最近のハードウェアに基づいた設計では、デバイスは、共有されつつネイティブ並みの性能を発揮することもできるが、ハードウェアに大幅な変更が必要となる。
本発明は、以下に提示する詳細な記載および本発明のいくつかの実施形態を示す添付の図面からより完全に理解されるが、添付の図面は、本発明を特定の実施形態に限定するものと解されるべきでなく、説明および理解を促すためだけのものである。
本発明のいくつかの実施形態に係るシステムを示す。 本発明のいくつかの実施形態に係るフローを示す。 本発明のいくつかの実施形態に係るシステムを示す。 本発明のいくつかの実施形態に係るシステムを示す。 本発明のいくつかの実施形態に係るシステムを示す。
本発明のいくつかの実施形態は、仮想化によるスマートデバイスの直接的共有に関する。
いくつかの実施形態では、デバイスは、仮想マシンのワークロードを直接的に実行することが可能である。複数の仮想マシンからのワークロードは、切り分けてスケジューリングされる。
いくつかの実施形態では、入出力(I/O)デバイスを複数の仮想マシン(VM)間で共有しながら、高性能なI/Oデバイス仮想化を実現する。いくつかの実施形態では、デバイスエミュレーションと直接デバイス割り当てとを組み合わせた技術により、デバイスモデルに基づいた直接的実行を提供する。いくつかの実施形態によると、シングルルートI/O仮想化(SR−IOV)に基づいた設計の代替となるものを提供するが、それによると、SR−IOVに比べてハードウェアの変更が非常に少ない。いくつかの実施形態によると、最近のデバイス(たとえば、汎用グラフィックスプロセシングユニット(GPGPU)等の最近のデバイス)の持つより高度なプログラム可能性を活用し、ネイティブ並みのI/O性能をVMで提供する。
図1は、いくつかの実施形態に係るシステム100を示す。いくつかの実施形態では、システム100は、デバイス102および仮想マシンモニタ(VMM)104を備える。いくつかの実施形態では、システム100は、仮想マシンVM1 106、仮想マシンVM2 108、および、たとえばブート時にVMM104により起動される最初のドメインであるDom0(ドメインゼロ)110を備える。いくつかの実施形態では、デバイス102は、I/Oデバイス、グラフィックスプロセシングユニット(GPU)、および/または、たとえば、インテル社のララビーグラフィックスプロセシングユニット等の汎用グラフィックスプロセシングユニット(GPGPU)である。
いくつかの実施形態では、デバイス102は、オペレーティングシステム(OS)112(たとえば、マイクロOS(μOS)と呼ばれる完全にFreeBSDに基づくOS)を有する。いくつかの実施形態では、OS112は、スケジューラ114およびドライバ116(たとえば、ホストドライバ)を含む。いくつかの実施形態では、デバイス102は、ドライバアプリケーション118、ドライバアプリケーション120、デバイスカード122、メモリマップト入出力(MMIO)レジスタおよびGTTメモリ124、グラフィックスアパーチャ126、ディスプレイインターフェース128、およびディスプレイインターフィース130を有する。いくつかの実施形態では、VMM104は、XenVMMおよび/またはオープンソースVMMである。いくつかの実施形態では、VMM104は、EPTページテーブルおよびVT−d拡張132をセットアップする機能を有する。いくつかの実施形態では、VM106は、アプリケーション134(たとえば、DXアプリケーション)、ランタイム136(たとえば、DXランタイム)、デバイスUMD138、およびカーネルモードドライバ(KMD)140(および/または、エミュレートされたデバイス)を有する。いくつかの実施形態では、VM108は、アプリケーション144(たとえば、DXアプリケーション)、ランタイム146(たとえば、DXランタイム)、デバイスUMD148、およびカーネルモードドライバ(KMD)150(および/または、エミュレートされたデバイス)を有する。いくつかの実施形態では、ドメインゼロ(Dom0)110は、仮想ホスト拡張154を含むホストカーネルモードドライバ(KMD)152を有する。いくつかの実施形態では、Dom0 110は、ホステッドVMM(hosted VMM)として動作し、かつ、デバイスモデル158を含むプロセッサエミュレータQEMU VM1 156を有する。いくつかの実施形態では、Dom0 110は、ホステッドVMMとして動作し、かつ、デバイスモデル164を含むプロセッサエミュレータQEMU VM2 162を有する。
いくつかの実施形態によると、I/Oデバイス102の仮想化は、ハードウェアを大幅に変更することなく、高性能と、VM106および108でデバイス102を共有できる機能とが提供されるように行われる。これは、デバイス102がVMM104および一つ以上のVM(たとえば、VM106および108)を認識できるように、デバイス102のハードウェアおよびソフトウェア/ファームウェアを変更することにより実現する。これにより、デバイス102は、高性能が実現されるような態様で、多くのVM(106および108)と直接的にやり取りできるようになる。デバイス102は、各VMからのワークロードを切り分けてスケジューリングする役割も有する。しかし、デバイス102のハードウェアへの変更を最小限にするためには、この技術では、VMM104において、物理デバイス102と同一のデバイスをエミュレートした従来のデバイスエミュレーションモデルが必要である。VM106および108からデバイス102への低頻度アクセス(たとえば、デバイスセットアップを実行するためのアクセス)は、デバイスモデル164によりトラップかつエミュレートされるが、高頻度アクセス(たとえば、デバイスとのデータの送受信、割り込み等)は、デバイス102に直行し、コストの掛かるVMM104の関与が回避される。
いくつかの実施形態では、VMM104におけるデバイスモデルは、実際の物理デバイス102と同一の仮想デバイスとしてVM106または108に現れ、デバイス資源への低頻度アクセスの全てを処理する。いくつかの実施形態では、このモデルは、高頻度デバイス資源への直接的なVMアクセスもセットアップする。いくつかの実施形態では、デバイス102が仮想化を認識して、複数のVM106および108と直接的にやり取りできるように、VMMコンポーネント104がデバイス102上に形成される。このコンポーネントは、全ての高頻度VMアクセスを処理し、デバイスの共有を可能にする。
いくつかの実施形態では、シングルルートI/O仮想化(SR−IOV)設計に比較して、デバイス102のハードウェアへの変更が最小限である。デバイス102上で実行されるソフトウェアコンポーネントは、VMM104コンポーネントを含むよう変更され、これにより、VMMコンポーネントは、高頻度なVMアクセスのVMMによる処理をデバイス自体にオフロードする。
いくつかの実施形態によると、デバイス102は、非常にスマートなデバイスであり、高度にプログラム可能(いくつかの実施形態では、たとえば、インテル社のララビーGPU等のGPU)である。いくつかの実施形態によると、デバイス102は、マイクロ−OSまたはμOSと呼ばれる完全にFreeBSDに基づくOS112を実行する。いくつかの実施形態では、デバイスカードは、いくつかの実施形態ではウィンドウズ(登録商標)ビスタVMである2つのVM106および108で共有される。VM106および108は、デバイス102に直接的に処理を渡し、ネイティブ並みの性能が達成される。
いくつかの実施形態では、VMM104は、Xen(オープンソースVMM)を用いて実装される。いくつかの実施形態では、エミュレートされたデバイスをVM106および108のそれぞれに提供するべく、仮想化デバイスモデルをXenを用いて書き込む。このモデルは、VM106および108に、デバイス102のグラフィックスアパーチャ126へと直接的にアクセスさせ、VM106および/または108がデバイス102に直接的に処理を渡すことができるようにする。デバイスモデル164がデバイス動作のいくつかの点を制御できるようにするべく、ホストドライバへのデバイス拡張も用いる。ドライバ116は、デバイス102上のVMMコンポーネントが、仮想化を自覚して、複数のVMから処理を直接的に受け取れるようにするべく、いくつかの実施形態にしたがって変更される。VM106または108のグラフィックスアプリケーションは、デバイス102側のOS112アプリケーションを開始させる。次に、VMのアプリケーション134または144は、対応するデバイスアプリケーション118または120にワークロードデータを送信して処理(たとえば、レンダリング)させる。ドライバ116が変更されているので、OS112は、複数のVM106および108からアプリケーション118および120を、それらが、同一のホストからの複数のアプリケーションであるかのように、実行することができるようなる。異なるVMからのワークロードを異なるOSアプリケーションで実行することにより、これらは切り分けられるようになる。いくつかの実施形態では、OSスケジューラ114は、一つのVMからのアプリケーションによって別のVMからのアプリケーションの資源が枯渇しないように、各VMからのアプリケーションをスケジューリングできるよう変更される。
いくつかの実施形態では、グラフィックスデバイスの仮想化がVMM104に実装される。いくつかの実施形態では、2つのVM106および108は、単一のデバイスカードを共有し、グラフィックスアパーチャ126を介した直接的なアクセスにより、各々のワークロードをデバイス102上で直接的に実行させる。OS112のドライバ116およびスケジューラ114は、複数のVM間(たとえば、アプリケーション134および144間、および/または、複数のDXアプリケーション間)で切り分けてスケジューリングを実行するよういくつかの実施形態にしたがって変更される。
いくつかの実施形態によると、以下のように5つの主要な技術を実装してI/Oデバイスの仮想化を実行してよい。
1.完全なデバイスエミュレーション 完全なデバイスエミュレーションでは、VMMは、デバイスモデルを用いてハードウェアデバイスをエミュレートする。VMは、エミュレートされたデバイスを認識して、それへのアクセスを試みる。これらのアクセスは、デバイスモデルによりトラップされ、処理される。VMの要求を実行するには、これらのアクセスのうちいくつかは、VMMにおける物理デバイスにアクセスする必要がある。モデルによりエミュレートされた仮想デバイスは、システムに存在する物理デバイスから独立していることができる。これは、この技術の大きな利点であり、VMのマイグレーションが簡単になる。しかし、この技術の欠点は、デバイスのエミュレーションには性能のオーバーヘッドが伴い、ネイティブ並みの性能がVMで実現されないことである。
2.直接デバイス割り当て この技術では、デバイスは、直接的にVMに割り当てられ、デバイスのメモリマップトI/O(MMIO)資源の全てが、VMによって直接的にアクセス可能とされる。これによって、ネイティブのI/O性能がVMで実現される。しかし、デバイスをその他のVMと共有することができないことが欠点である。さらに、VMのマイグレーションがずっと困難である。
3.VMにおける準仮想化ドライバ このアプローチでは、VMMドライバとやり取りして共有を可能にする準仮想化ドライバをVM内にロードする。この技術では、仮想デバイスは、物理デバイスから独立していることができ、デバイスモデルに基づくアプローチよりも良好な性能を実現できる。しかし、このアプローチの欠点は、VM内に新たなドライバが必要であり、デバイス割り当てで実現される性能にはやはり及ばないことである。さらに、仮想デバイスのセマンティクスと物理デバイスのセマンティクスとの間の変換を実装するのが困難であり、フィーチャーコンプリートでない場合が多い(たとえば、グラフィックス仮想化におけるAPIプロキシ)。
4.仲介パススルー(Meidated Pass−Through(MPT))または補助ドライバパススルー(Assisted Driver Pass−Through(ADPT)) 最近、VMMのベンダは、準仮想化ドライバを改良した、MPTまたはADPTと呼ばれる技術を提案しており、この技術では、エミュレートされた仮想デバイスは、物理デバイスと同一である。これにより、VMは、既存のデバイスドライバを(VMがVMMとやり取りできるように多少変更して)使用することができるようになる。また、これにより、VMのワークロードを仮想デバイスのフォーマットから物理デバイスのフォーマットに変換するためのオーバーヘッドが回避される(両方とも同一であるから)。このアプローチの欠点は、VMがデバイスと直接的にやり取りできないので、デバイス割り当てで実現される性能には追いつかないことである。
5.ハードウェアアプローチ(たとえば、SR−IOV) このアプローチでは、デバイスハードウェアを変更して、各VMに一つずつとして、デバイス資源のインスタンスを複数生成する。シングルルートI/O仮想化(SR−IOV)は、ハードウェアベンダの間で普及している規格であり、これらのデバイスにソフトウェアインターフェースを規定する。デバイス資源(物理的機能またはPF)の複数のインスタンスと複数の仮想機能(またはVF)を生成する。このアプローチの利点は、複数のVM間でデバイスを共有することができ、同時に高性能を実現することができることである。欠点は、デバイスのハードウェアを大幅に変更しなければならないことである。さらなる欠点は、特定数のVMをサポートするようデバイス資源が静的に生成されることである(たとえば、4個のVMをサポートするようデバイスが構築されており、現在実行されているVMが2個しかない場合、残り2個のVM用の資源は未使用のままであり、実行中の2個のVMが利用することができない)。
いくつかの実施形態によると、上記の4および5の技術を組み合わせたアプローチを用いて、高性能かつ共有可能なデバイスを実現する。この組み合わせ方法では、5の技術で要求されるハードウェア変更の大半が不要である。また、(5の技術でのように、静的に区画するのではなく、)デバイス資源をVMに動的に割り当てることができる。いくつかの実施形態では、ハードウェアおよびデバイス上で実行されるソフトウェアが変更されるので、VMと直接的にやり取りでき、(4の技術と異なり)ネイティブ並みの性能が得られる。4の技術と同じく、いくつかの実施形態では、物理デバイスと同一の仮想デバイスをエミュレートするデバイスモデルを使用する。デバイスモデルを使用し、かつデバイスソフトウェア/ファームウェアに変更を加えることで、5の技術で必要とされるハードウェア変更の大半が不要になる。2の技術と同じく、いくつかの実施形態では、デバイス資源のいくつかをVMに直接的にマッピングして、VMがデバイスと直接的にやり取りできるようにする。しかし、2の技術と異なり、いくつかの実施形態では、デバイスが複数のVM間で共有できるような方法で、デバイス資源をマッピングする。5の技術と同じく、いくつかの実施形態では、高性能を実現するべくデバイスの振る舞いを変更する。しかし、5の技術と異なり、デバイスソフトウェア/ファームウェアを主に変更し、ハードウェアには最低限の変更しかせず、これによりデバイスを低コストに維持し、製品化までに要する時間を短縮する。また、(ハードウェアでなく)デバイスのソフトウェアに変更を加えることで、デバイス資源がVMにオンデマンドで動的に割り当てられる。
いくつかの実施形態によると、デバイスのハードウェアを大幅に変更することなく、デバイス共有およびデバイス資源のVMへの動的割り当てを可能にして、高性能I/O仮想化を実装する。既存の方法では、これらの4つの要素の全てを満たすものはない。いくつかの実施形態では、デバイスソフトウェア/ファームウェアを変更し、ハードウェアも多少変更して、デバイスが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コンポーネントと、第1VMワークロード306および第2VMワークロード308とを有する。システム300は、第1VM IOMMUテーブル312および第2VM IOMMUテーブル314を有する合併IOMMUテーブル310をさらに備える。システム300は、第1VMメモリ322および第2VMメモリ324を有するホストメモリ320をさらに備える。
デバイス302上のVMMコンポーネント304は、ゲスト物理アドレス(GPA)を、ワークロードが使用する前にタグする。ワークロード306は、IOMMUテーブルidにタグされたGPA1を使用してVM1 IOMMUテーブル312にアクセスし、ワークロード308は、IOMMUテーブルidにタグされたGPA2を使用してVM2 IOMMUテーブル312にアクセスする。
図3は、高性能I/Oを実現するべく各VMがデバイス302(たとえば、I/Oデバイス)に直接アクセスできる場合に、複数のVMで単一のデバイスを共有する課題に関する。VMは、デバイスに直接的にアクセスしているので、ゲスト物理アドレス(GPA)をデバイスに供給する。デバイス302は、メモリがアドレスを用いてアクセスされる前にVMのGPAをホスト物理アドレス(HPA)に変換するIOMMUテーブル310を使用することにより、VMメモリ322および/または324にアクセスする。現在、各デバイス機能は、要求者IDと呼ばれる識別子を使用することにより単一のIOMMUテーブルを使用することができる(全てのデバイス機能が要求者IDを持つ)。しかし、VMごとにそれぞれ異なるIOMMUテーブルが、そのVMの各GPAをHPAにマッピングするべく必要である。したがって、デバイス機能は、一度に一つのIOMMUテーブルにしかアクセスすることができないので、複数のVMで機能を直接的に共有することはできない。
図3のシステム300は、一つのデバイス機能に複数の要求者IDをエミュレートして、デバイス機能が同時に複数のIOMMUテーブルにアクセスできるようにすることにより、上記の問題を解決する。複数のIOMMUテーブルにアクセスを有することにより、デバイス機能は、複数のVMのメモリに同時にアクセスでき、これらのVMにより共有されることができる。
複数のIOMMUテーブル312および314は、単一のIOMMUテーブル310に合併され、デバイス機能はこの合併IOMMUテーブルを使用する。IOMMUテーブル312および314は、IOMMUテーブルIDがGPAの高位ビットで表されるようにして合併IOMMUテーブル310内で各テーブルのマッピングを異なるオフセットで配置することによって合併される。たとえば、各IOMMUテーブル312および314が39ビットアドレス(これは、ゲストメモリの512GBをマッピングすることができる)をマッピングし、合併IOMMUテーブル310が48ビットアドレスをマップすることができる仮定すると、合併IOMMUテーブルを生成し、第1IOMMUテーブルをオフセット0で設け、第2IOMMUテーブルを512GBのオフセットで設け、第3IOMMUテーブルを1TBのオフセットで設け、以下同様となる。効果的に、高位ビット39〜47が、合併IOMMUテーブル310での各IOMMUテーブルナンバーの識別子となる。
この合併テーブルで動作するには、各IOMMUテーブル宛のGPAを補正する。たとえば、第2IOMMUテーブルのGPA 0は、合併IOMMUテーブルではGPA 512GBに現れる。したがって、デバイスが使用しているアドレス(GPA)を修正して、IOMMUのGPAの補正を反映するようにし、合併IOMMUテーブルの正確な部分が用いられるようにすることが必要となる。基本的に、デバイスがGPAにアクセスする前に、GPAの高位ビットをIOMMUテーブルナンバーにタグする。いくつかの実施形態では、デバイスで実行されるソフトウェア/ファームウェアを、このタグを行うように変更する。
いくつかの実施形態では、システム300は、2つの重要なコンポーネントを備える。VMMコンポーネント304は合併IOMMUテーブル310を生成し、デバイス機能にこのIOMMUテーブルを使用させる。追加的なデバイスコンポーネントは、VMからGPAを受け取り、GPAの送り元のVMに対応するIOMMUテーブルナンバーにGPAをタグする。これにより、デバイスは、そのVMのIOMMUテーブル(今となっては、合併IOMMUテーブルの一部である)のマッピングを正確に使用することができるようになる。デバイスによるGPAのタグと合併IOMMUテーブルの生成とが組み合わさることで、単一の要求者IDを使用して複数の要求者IDがエミュレートされる。
システム300は、2つのVMおよびそれらに対応するIOMMUテーブルを備える。これらのIOMMUテーブルは、単一の合併IOMMUテーブルに異なるオフセットで組み入れられており、これらのオフセットは、デバイス上の対応するVMのワークロードによって使用されるGPAにタグされている。これにより、本質的に、単一のIOMMUテーブルを使用して複数のRIDがエミュレートされる。図3では、VMのメモリをホストメモリにおける連続的なブロックとして示しているが、VMのメモリは、実際には、ホストメモリ内で分散された不連続のページであってよい。IOMMUテーブルは、各VMの連続的なGPA範囲から、ホストメモリの不連続の物理ページにマッピングする。
いくつかの実施形態では、デバイス302はGPUである。いくつかの実施形態では、デバイス302は、インテル社のララビーGPUである。本明細書で記載するララビーGPU等のGPUは、非常にスマートなデバイスであり、高度にプログラム可能である。いくつかの実施形態では、このデバイスは、本明細書に記載のマイクロOSまたはμOSと呼ばれる完全にFreeBSDに基づいたOSを実行する。このため、このデバイスはこの技術にとって理想的な候補である。いくつかの実施形態では、単一のデバイスカード(たとえば、単一のララビーカード)を2つのウィンドウズ(登録商標)ビスタVMで共有する。VMは、デバイスに処理を直接的に渡すので、ネイティブ並みの性能が実現される。いくつかの実施形態では、XenVMM等のオープンソースVMMを使用する。いくつかの実施形態では、合併IOMMUテーブル310を生成するようVMM(および/またはXenVMM)を変更する。いくつかの実施形態では、デバイスOSドライバが、デバイスアプリケーションのページテーブルをセットアップするとき、VMが使用するIOMMUテーブルのナンバーにGPAをタグするように、デバイスOSドライバを変更する。デバイスOSドライバは、ホストメモリとローカルメモリとでDMAを行う必要がある場合も、GPAをタグする。これにより、GPAへの全てのアクセスが、合併IOMMUテーブルを使用して正確なHPAにマッピングされるようになる。
既存のデバイス(たとえば、SR−IOVデバイス)は、デバイス内に複数のデバイス機能を実装しており、複数の要求者ID(RID)が生成される。複数のRIDがあることで、デバイスは、同時に複数のIOMMUテーブルを使用することができるようになる。しかし、これには、デバイスハードウェアの大幅な変更が必要であり、デバイスのコストおよび製品化までに要する時間が増大する。
いくつかの実施形態では、VMMデバイスモデル内で、アドレス変換を実行する。VMは、ワークバッファをデバイスに渡すとき、VMMにトラップを生成し、VMMは、VMのワークバッファをデバイスに渡す前に、ワークバッファを構文解析してGPAを探し出し、GPAをHPAに変換する。VMMでのトラップ生成およびワークバッファの構文解析が頻繁であるので、この技術には、非常に大きい仮想化オーバーヘッドが伴う。
いくつかの実施形態では、デバイスが一つの要求者IDを使用して複数のIOMMUテーブルを使用できるようにするべく、(複数のデバイス機能を生成する代わりに)デバイスソフトウェア/ファームウェアに必要とされる変更がわずかである。VMM304は、デバイス302を共有する全てのVMのIOMMUテーブルを含む合併IOMMUテーブル310を生成する。デバイスは、各GPAにアクセスする前に、そのGPAを対応するIOMMUテーブルのナンバーにタグする。これにより、デバイスのコストと製品化に要する時間が減少する。
既存の方法では、複数のIOMMUテーブルに同時にアクセスするべく、最近のI/Oデバイス(たとえば、インテル社のララビーGPU)のプログラム可能性を利用していない。その代わりに、ハードウェアを変更することによって、複数のデバイス機能を実装し、同時に複数のIOMMUテーブルにアクセスできるようにしている。
いくつかの実施形態では、合併IOMMUテーブル(複数のIOMMUテーブルのマッピングを含む)を使用し、GPAをIOMMUテーブルナンバーにタグするようデバイスソフトウェア/ファームウェアを変更する。
図4は、いくつかの実施形態に係るシステム400を示す。いくつかの実施形態では、システム400は、デバイス402(たとえば、I/Oデバイス)、VMM404、サービスVM406、およびVM1 408を備える。サービスVM406は、デバイスモデル412、ホストデバイスドライバ414、およびメモリページ416(MMIOページとしてマッピングによりパススルーされる)を有する。VM1 408は、デバイスドライバ422を有する。
図4は、デバイス仮想化でのVMMにおけるトラップを減らすためのメモリ支援レジスタ(memory backed register)(たとえば、MMIOレジスタ)の使用を示す。VMM404は、いくつかの実施形態に係るデバイスモデル412を使用してVM1 408を実行し、I/Oデバイス402を仮想化する。デバイスモデル412は、メモリページを確保し、このメモリページに、VMのI/OデバイスのMMIOページをマッピングしてパススルーする。デバイスの適格なレジスタ(eligible registers)がこのページに属している。デバイスモデル412およびVMのデバイスドライバ422は、両方とも、このページにアクセスすることにより、この適格なレジスタに直接的にアクセスすることができる。不適格なレジスタ(ineligible registers)へのアクセスは、相変わらずVMM404にトラップされ、デバイスモデル412によりエミュレートされる。
完全なデバイスエミュレーションを用いたI/Oデバイスの仮想化では、VMのためにハードウェアデバイスをエミュレートするソフトウェアデバイスモデルがVMMに必要である。エミュレートされるハードウェアデバイスは、市販のオペレーティングシステムに存在するデバイスドライバを活用するべく、既存の物理デバイスに基づいたものであることが多い。VM408は、VMMデバイスモデル412によってエミュレートされたハードウェアデバイスを認識し、それへとアクセスするには、そのPCI、I/O、およびMMIO(メモリマップトI/O)空間を物理デバイスと見て、そこに読み出し・書き込みを行う。これらのアクセスは、VMM404にトラップされ、デバイスモデル412に転送され、デバイスモデルで適切にエミュレートされる。多くの最近のI/Oデバイスのレジスタは、デバイスのPCI MMIO BARs(ベースアドレスレジスタ)によって設定される範囲に、メモリマップトI/Oにより現れる。しかし、VMアクセスの全てをデバイスのMMIOレジスタにトラップすることによるオーバーヘッドは大きく、仮想化デバイスの性能を大幅に低下させる。エミュレートされたデバイスのMMIOレジスタのいくつかは、VMによる読み出し/書き込み時に、レジスタの値を返すことおよびレジスタに値を書き込むこと以外には、デバイスモデルによる処理を必要としない。これらのレジスタ(以下、適格レジスタ(eligible registers)と呼ぶ)へのアクセスにおいては、実行するべき処理がないので、VMM404は、このアクセスを必ずしもトラップする必要はない。しかし、既存のVMMは、適格レジスタへのアクセスをトラップしており、デバイス仮想化を行うに際しての仮想化オーバーヘッドを不必要に増大させている。VM408が頻繁に適格レジスタにアクセスするのであれば、このオーバーヘッドは、一層重大なものとなる。
システム400は、適格レジスタをメモリで支援することにより、MMIOレジスタへのアクセスによって発生するVMMトラップの数を減少させる。VMMのデバイスモデル412は、適格レジスタにメモリページを割り当て、これらのページをRO(読み出し専用適格レジスタ)またはRW(読み出し/書き込み適格レジスタ)としてVMにマッピングする。VM408が適格レジスタに適格アクセスを実行するとき、このアクセスは、VMM404にトラップされることなく、メモリに対して実行される。デバイスモデル412は、メモリページを、デバイスのMMIO空間における仮想レジスタの位置として使用する。デバイスモデル412は、メモリに適切な値を入れ、および/または、VM408が書き込んだ値を読み出すことにより、これらのレジスタを非同期的にエミュレートする。VMMとラップの数を減らすことにより、デバイス仮想化性能が向上する。
適格レジスタは、(レジスタのセマンティクスにしたがって、読み出し専用または読み出し/書き込み用として、)通常のメモリ仮想化技術(シャドウページテーブルまたは拡張ページテーブル(EPT))を用いて、VMのアドレス空間にマッピングされてパススルーされる。しかし、MMIOアドレスは、ページサイズの粒度でしか、VMにマッピングすることができないので、これらのレジスタをマッピングしてパススルーすると、そのページのレジスタが一つおきにVM408にマッピングされパススルーされる。したがって、VMM404は、適格デバイスレジスタを、同一ページに不適格レジスタが属していない場合にだけ、VM408にマッピングパススルーすることができる。したがって、いくつかの実施形態では、適格レジスタと同一ページに不適格レジスタが属さないように、デバイスのMMIOレジスタ配置を設計する。さらに、適格レジスタは、読み出し専用パススルーレジスタと読み出し/書き込み用パススルーレジスタとに分類されるが、これら2種類の適格レジスタは、別々のMMIOページに所属させる必要がある。VMが準仮想化ドライバを使用する場合、VMは、ハードウェアデバイスに頼る必要がなくなるように、デバイスにとって仮想化に好都合な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デバイス)、VMM504、サービスVM506、およびVM508を備える。サービスVM506は、デバイスモデル512、ホストデバイスドライバ514、および割り込みステータスレジスタを含むメモリページ516を有する。VM508は、デバイスドライバ522を有する。デバイス502では、ワークロード完了532時、デバイス502は、534で、割り込みステータスレジスタ(たとえば、メモリページ516の割り込みステータスレジスタ)の位置を受信し、割り込みを生成する前に、これらのレジスタを更新する。
システム500は、VM508への直接割り込み注入を示す。VMM504は、デバイスモデル512を用いて、VM508を実行し、そのI/Oデバイス502を仮想化する。デバイスモデルは、割り込みステータスレジスタを含むメモリページ516を割り当て、そのアドレスを物理I/Oデバイスに通知する。デバイスモデル512は、読み出し専用メモリページをVM508にマッピングしてパススルーする。I/Oデバイス502は、VMのワークロードを完了した後、メモリページ516の割り込みステータスレジスタを更新して、割り込みを生成する。デバイス割り込みを受信すると、プロセッサは、割り込みをVM508に直接的に注入する。これにより、VMのデバイスドライバ522は、割り込みステータスレジスタを(VMMトラップを生成することなく)読み出す。デバイスドライバ522が、(割り込みをアクナレッジするべく)これらのレジスタに書き込むときには、VMMトラップを生成し、デバイスモデル512がそれを処理する。
本明細書で議論したように、VMMは、I/Oデバイス仮想化を提供して、VMが物理I/Oデバイスを使用できるようにする。多くのVMMは、デバイスモデルを用いて複数のVMが一つの物理デバイスを使用できるようにする。I/O仮想化オーバーヘッドは、全仮想化オーバーヘッドの最も大きい部分を占める。I/O仮想化オーバーヘッドの多くは、VMのデバイス割り込みを処理する際のオーバーヘッドである。物理デバイスは、VMからの要求を処理し終わると、割り込みを生成し、その割り込みは、VMMのデバイスモデルによりトラップされ処理される。デバイスモデルは、仮想割り込みステータスレジスタをセットアップし、割り込みをVMに注入する。VMへの割り込み注入は非常に重い動作であると考えられている。割り込み注入には、VMをスケジューリングし、VMを実行するべく選択されたプロセッサにIPIを送信する必要がある。これにより、仮想化オーバーヘッドが大幅に増大する。VMは、割り込みを受信すると、割り込みステータスレジスタを読み出す。これにより、VMMのデバイスモデルにさらなるトラップが生成され、これによりレジスタの値が返される。
割り込み処理の待ち時間を短縮するべく、ハードウェア特性(仮想割り込み受け渡し(virtual interrupt delivery)およびポステッド割り込み(posted interrupts)と呼ばれる)を用いて、VMMを関与させることなく、直接的に割り込みをVMに注入してよい。これらのハードウェア特性によって、デバイスは直接的にVMに割り込むことができる。直接割り込み注入は、直接デバイス割り当ておよびSR−IOVには功を奏するが、デバイスモデルに基づく仮想化方法には有用でない。なぜなら、VMのデバイスの割り込みステータスは、デバイスモデルにより管理され、デバイスモデルには、割り込みを通知して、デバイスモデルが割り込みステータスを更新できるようにしなければならないからである。
システム500は、デバイスモデルに基づく仮想化方法において、VMへの直接割り込み注入を可能にする。VMMのデバイスモデルは、直接割り込み注入時に通知を受けないので、デバイス自体が、割り込みを生成する前に、デバイスモデルの割り込みステータスレジスタを更新する。デバイスモデルは、VMのデバイスの割り込みステータスにメモリを割り当て、そのメモリ位置をデバイスに知らせる。デバイス(ハードウェア、または、デバイスで実行されるソフトウェア/ファームウェア)は、割り込みステータスレジスタの位置をデバイスモデルから受信し、割り込みを生成する前に当該位置を適切に更新するように変更される。デバイスモデルは、割り込みステータスレジスタをVMアドレス空間にマッピングして、VMのデバイスドライバがVMMトラップを生成することなく割り込みステータスレジスタにアクセスできるようにする。多くのデバイスの割り込みステータスレジスタは、1を書き込むことによりクリアされる、W1Cというセマンティクス(レジスタのビットに1を書き込むと、そのビットはクリアされる)を有する。RAMメモリは、W1Cセマンティクスをエミュレートできないので、これらのレジスタは、読み出し/書き込み用にVMにマッピングすることはできない。これらの割り込みステータスレジスタは、読み出し専用にVMにマッピングすることはできるので、VMは、VMMトラップを生成することなく割り込みステータスレジスタを読み出すことができるが、VMが(たとえば、割り込みをアクナレッジするべく)割り込みステータスレジスタに書き込む際には、VMMがこのアクセスをトラップして、デバイスモデルがW1Cセマンティクスをエミュレートする。したがって、システム500のいくつかの実施形態は、2つの重要なコンポーネントを用いる。
いくつかの実施形態に係るシステム500の第一の重要なコンポーネントは、割り込みステータスレジスタにメモリを割り当て、これらのレジスタの位置をデバイスに通知し、当該メモリをVM508のMMIO空間にマッピングするVMMデバイスモデル512である。
いくつかの実施形態に係るシステム500の第二の重要なコンポーネントは、デバイスモデル512から割り込みステータスレジスタの位置を受信し、VM508に割り込みを生成する前に、これらのレジスタを適切に更新するデバイス駐在コンポーネント(device resident component)532である。
いくつかの実施形態によると、直接割り込み注入をサポートするハードウェア(たとえば、インテル社のプロセッサ用の仮想割り込み受け渡しおよびポステッド割り込みと呼ばれるAPIC特性)を用いる。
いくつかの実施形態では、VMMデバイスモデル512は、割り込みステータスレジスタを更新する役割をデバイス自体にオフロードし、VMへの割り込み注入に関与する必要がない。既存の方法では、デバイス割り込みが発生すると、デバイスモデルが割り込みステータスレジスタを更新し、割り込みをVMに注入する。図5のシステム500では、デバイスが、VMの割り込みステータスレジスタ(これらのレジスタにデバイスモデルにより前もって割り当てられたメモリ)を更新し、VMに直接的に注入される割り込みを生成する。さらに、デバイスモデル512が、割り込みステータスレジスタをVMにマッピングし、VMのデバイスドライバがこれらのレジスタにアクセスする際のVMMトラップを回避する。
既存の方法では、割り込みステータスレジスタは、デバイス自体に存在する。デバイスは、メモリ内の割り込みステータスレジスタを更新する役割を持たない。また、既存のデバイスモデルも、VMのデバイスドライバがこれらのレジスタにアクセスする際のVMMトラップを回避するためのVMへのこれらのレジスタのマッピングを行わない。
いくつかの実施形態によると、物理I/Oデバイスが、メモリ内のデバイスモデルの割り込みステータスレジスタを更新し、割り込みを直接的にVMに注入できるようにする。
本明細書では、いくつかの実施形態は、特定の方法で実装されると記載したが、いくつかの実施形態によると、これらの特定の実装例は必須ではない。
いくつかの実施形態を特定の実装例を参照して記載したが、いくつかの実施形態によると、その他の実装例が可能である。さらに、図示および/または記載した回路要素またはその他の特性の配置および/または順序は、図示および記載した特定の態様で配置する必要はない。いくつかの実施形態によると、その他多くの配置が可能である。
図に示した各システムにおいて、いくつかの場合における各要素は、同じ参照番号または異なる参照番号を有しており、図示された各要素が類似したものであるか、および/または、異なるものであるかを示唆する。しかし、要素は、多様に実装しうる柔軟性を持ち、本明細書に図示または記載したシステムのいくつかまたは全てにおいて動作しうる。図示した多様な要素は、同一または異なってよい。要素のいずれを第1と呼び、いずれを第2とするかは、任意である。
記載および特許請求の範囲において、「結合された(coupled)」および「接続された(connected)」という用語並びにこれらの活用形を使用する場合がある。これらの用語は、互いに同義語と意図されているのではないことは理解されるべきである。むしろ、特定の実施形態では、2つ以上の要素が互いに直接的に、物理的または電気的に接触していることを示すべく「接続された」という用語が使用される。「結合された」という用語は、2つ以上の要素が直接的に、物理的または電気的に接触していることを意味する。しかし、「結合された」という用語は、2つ以上の要素が互いに直接的に接触していないが、それでも互いに協働またはやり取りする場合のことも意味する。
アルゴリズムは、本明細書において、また、一般的に、所望の結果を導出する動作または処理の一貫したシーケンスであると考えられる。これには、物理量の物理的操作が含まれる。通常、必ずではないが、これらの量は、記憶、転送、組み合わせ、比較、またはその他の操作が可能な電気的または磁気的な信号という形態を有する。時として、このような信号を、ビット、値、要素、記号、文字、条件(terms)、数字等として参照することが、一般的によく使用されているという理由で、便利であることが分かっている。しかし、これらおよび類似の用語の全ては、適切な物理量に対応付けられるのであり、これらの量に適用された便宜的な呼称にすぎないことは理解されるべきである。
いくつかの実施形態は、ハードウェア、ファームウェア、およびソフトウェアのいずれかまたは組み合わせで実施してよい。いくつかの実施形態は、本明細書に記載の処理を実行するべくコンピューティングプラットフォームによって読み出されて実行される機械可読媒体に格納された命令として実施してもよい。機械可読媒体は、機械(たとえば、コンピュータ)によって読み出し可能な形態で情報を記憶または送信する任意のメカニズムであってよい。たとえば、機械可読媒体は、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置、電気、光、音、またはその他の形態で伝搬される信号(たとえば、搬送波、赤外線信号、デジタル信号、信号を送信および/または受信するインターフェース等)、およびその他であってよい。
実施形態は、発明の実施例または例である。明細書において「ある実施形態」、「一実施形態」、「いくつかの実施形態」、または「その他の実施形態」と言及する場合、その実施形態に関連して記載される特定の特性、構造、または特徴が、本発明の少なくともいくつかの実施形態に含まれるが、必ずしも全ての実施形態に含まれるのではないことを示す。「ある実施形態」、「一実施形態」、または「いくつかの実施形態」等と多様に表現される場合、必ずしも全てが同一の実施形態を指すのではない。
本明細書に記載および図示したコンポーネント、特性、構造、特徴等の全てを特定の実施形態または複数の実施形態に含める必要はない。明細書において、コンポーネント、特性、構造、または特徴を、含めうる、含めてよい、含めることができる等と記載される場合、たとえば、その特定のコンポーネント、特性、構造、または特徴を含める必要はない。明細書または特許請求の範囲において、「一つの(a)」または「一つの(an)」要素と述べる場合、その要素が一つしかないことを意味するのではない。明細書または特許請求の範囲において、「さらなる」要素と述べる場合、当該さらなる要素が2つ以上ある場合を除外しない。
本明細書で実施形態を記載するべくフロー図および/または状態図を使用したが、本発明は、これらの図または本明細書における対応する記載に限定されない。たとえば、フローは、図示された各ボックスまたは状態を通過または遷移する必要がなく、本明細書に図示および記載した順序と全く同じ順序で通過または遷移する必要がない。
本発明は、本明細書に挙げた特定の詳細に限定されない。事実、上記の記載および図面の多様な変形が本発明の範囲内で可能であることは、本開示から利益を受ける当業者には理解されよう。したがって、以下の特許請求の範囲、およびそれに対する修正があればそれらによって、本発明の範囲が規定される。

Claims (18)

  1. 仮想マシンモニタを実行する装置で行われる方法であって、
    前記装置が、仮想マシンのワークロードをデバイスが直接的に実行できるようにする段階と、
    前記装置が、複数の異なる仮想マシンからのワークロードを切り分けてスケジューリングする段階と
    前記装置が、前記装置に形成される割り込みステータスレジスタの位置を、デバイスに通知するとともに仮想マシンのメモリマップト入出力空間にマッピングする段階と、
    デバイスが、仮想マシンへの割り込みを生成する前に、前記割り込みステータスレジスタを更新する段階と
    を備える方法。
  2. 前記装置が、複数の異なる仮想マシンからのワークロードを切り分けてスケジューリングすることができるようにデバイスのソフトウェアおよび/またはファームウェアを変更することで、前記実行できるようにする段階を行う請求項1に記載の方法。
  3. 前記装置が、入出力仮想化を提供することで、前記実行できるようにする段階を行う請求項1または2に記載の方法。
  4. 前記装置が、複数の仮想マシンによるデバイスの共有を可能にすることで、前記実行できるようにする段階を行う請求項1から3のいずれか1項に記載の方法。
  5. 前記装置が、デバイス資源を仮想マシンに動的に割り当てることで、前記実行できるようにする段階を行う請求項1から4のいずれか1項に記載の方法。
  6. 前記装置が、予め定められた頻度よりも高い頻度でデバイス資源がクセスされる場合、前記実行できるようにする段階の後に、前記スケジューリングする段階を行う代わりに、このデバイス資源に関して仮想化されているデバイスへの経路に仮想マシンを直接的にアクセスさせる段階をさらに備える請求項1からのいずれか1項に記載の方法。
  7. 前記装置が、予め定められた頻度よりも高い頻度でデバイス資源がアクセスされない場合、このデバイス資源に対するワークロードの切り分けおよびスケジューリングを行うことで、前記スケジューリングする段階を行う請求項1からのいずれか1項に記載の方法。
  8. 前記装置が、前記実行できるようにする段階と、前記スケジューリングする段階との間に、複数の異なる仮想マシンからのアクセス要求をトラップおよびエミュレートする段階をさらに備える請求項1からのいずれか1項に記載の方法。
  9. 前記装置が、予め定められた頻度よりも高い頻度でデバイス資源がアクセスされない場合、前記スケジューリングする段階と前記通知する段階との間に、このデバイス資源に関する仮想マシンデバイスモデルを使用してデバイス資源にアクセスする段階をさらに備える請求項1からのいずれか1項に記載の方法。
  10. 仮想マシンモニタを実行する装置であって
    デバイスが仮想マシンのワークロードを直接的に実行できるようにする手段と
    複数の異なる仮想マシンからのワークロードを切り分けてスケジューリングする手段と
    前記装置に形成される割り込みステータスレジスタの位置を、デバイスに通知するとともに仮想マシンのメモリマップト入出力空間にマッピングする手段と
    を備え
    前記割り込みステータスレジスタは、デバイスが仮想マシンへの割り込みを生成する前に、このデバイスによって更新される装置。
  11. 複数の異なる仮想マシンからのワークロードを切り分けてスケジューリングできるようにデバイスのソフトウェアおよび/またはファームウェアを変更する手段を備える請求項1に記載の装置。
  12. 出力仮想化を提供する手段を備える請求項1または11に記載の装置。
  13. 複数の仮想マシンによるデバイスの共有を可能にする手段を備える請求項1から1のいずれか1項に記載の装置。
  14. デバイス資源を仮想マシンに動的に割り当てる手段を備える請求項1から1のいずれか1項に記載の装置。
  15. 予め定められた頻度よりも高い頻度でデバイス資源がクセスされる場合、前記スケジューリングする手段が切り分けおよびスケジューリングを行う代わりに、このデバイス資源に関して仮想化されているデバイスへの経路に仮想マシンを直接的にアクセスさせ手段を備える請求項1から1のいずれか1項に記載の装置。
  16. 前記スケジューリングする手段は、予め定められた頻度よりも高い頻度でデバイス資源がアクセスされない場合、このデバイス資源に対するワークロードの切り分けおよびスケジューリングを行う請求項1から1のいずれか1項に記載の装置。
  17. 複数の異なる仮想マシンからのアクセス要求を、トラップおよびエミュレートする手段を備える請求項1から1のいずれか1項に記載の装置。
  18. 予め定められた頻度よりも高い頻度でデバイス資源がアクセスされない場合、このデバイス資源に関する仮想マシンデバイスモデルを使用してデバイス資源にアクセスする手段を備える請求項1から1のいずれか1項に記載の装置。
JP2013544877A 2010-12-23 2011-12-19 仮想化によるスマートデバイスの直接的共有 Expired - Fee Related JP5746770B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/977,490 2010-12-23
US12/977,490 US20120167082A1 (en) 2010-12-23 2010-12-23 Direct sharing of smart devices through virtualization
PCT/US2011/065941 WO2012087984A2 (en) 2010-12-23 2011-12-19 Direct sharing of smart devices through virtualization

Publications (2)

Publication Number Publication Date
JP2013546111A JP2013546111A (ja) 2013-12-26
JP5746770B2 true JP5746770B2 (ja) 2015-07-08

Family

ID=46314814

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013544877A Expired - Fee Related JP5746770B2 (ja) 2010-12-23 2011-12-19 仮想化によるスマートデバイスの直接的共有

Country Status (6)

Country Link
US (1) US20120167082A1 (ja)
JP (1) JP5746770B2 (ja)
KR (1) KR101569731B1 (ja)
CN (1) CN103282881B (ja)
TW (1) TWI599955B (ja)
WO (1) WO2012087984A2 (ja)

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10142218B2 (en) 2011-01-14 2018-11-27 International Business Machines Corporation Hypervisor routing between networks in a virtual networking environment
US20120182993A1 (en) * 2011-01-14 2012-07-19 International Business Machines Corporation Hypervisor application of service tags 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
WO2012151392A1 (en) * 2011-05-04 2012-11-08 Citrix Systems, Inc. Systems and methods for sr-iov pass-thru via an intermediary device
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
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
US9009106B1 (en) 2011-08-10 2015-04-14 Nutanix, Inc. Method and system for implementing writable snapshots in a virtualized storage environment
US8601473B1 (en) 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
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
US9747287B1 (en) 2011-08-10 2017-08-29 Nutanix, Inc. Method and system for managing metadata for a 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
WO2014100279A1 (en) * 2012-12-18 2014-06-26 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
CN105830026B (zh) * 2013-11-27 2020-09-15 英特尔公司 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法
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调度
US9419897B2 (en) * 2014-06-30 2016-08-16 Nicira, Inc. Methods and systems for providing multi-tenancy support for Single Root I/O Virtualization
US9692698B2 (en) 2014-06-30 2017-06-27 Nicira, Inc. Methods and systems to offload overlay network packet encapsulation to hardware
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 삼성전자주식회사 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치
CN107250980B (zh) * 2015-03-26 2021-02-09 英特尔公司 具有图形和系统存储器冲突检查的计算方法和设备
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
WO2017107053A1 (en) * 2015-12-22 2017-06-29 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
US10042723B2 (en) 2016-02-23 2018-08-07 International Business Machines Corporation Failover of a virtual function exposed by an SR-IOV adapter
US10002018B2 (en) 2016-02-23 2018-06-19 International Business Machines Corporation Migrating single root I/O virtualization adapter configurations in a computing system
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
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
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
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
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
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
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
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 삼성전자주식회사 반도체 장치
US20190114195A1 (en) 2018-08-22 2019-04-18 Intel Corporation Virtual device composition 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
US10909053B2 (en) 2019-05-27 2021-02-02 Advanced Micro Devices, Inc. Providing copies of input-output memory management unit registers to guest operating systems
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
US11875172B2 (en) 2020-09-28 2024-01-16 VMware LLC Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC
US12021759B2 (en) 2020-09-28 2024-06-25 VMware LLC Packet processing with hardware offload units
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
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
US11716383B2 (en) 2020-09-28 2023-08-01 Vmware, Inc. Accessing multiple external storages to present an emulated local storage through a NIC
US11606310B2 (en) 2020-09-28 2023-03-14 Vmware, Inc. 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
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
US11899594B2 (en) 2022-06-21 2024-02-13 VMware LLC Maintenance of data message classification cache on smart NIC
CN116841691B (zh) * 2023-06-15 2024-07-26 海光信息技术股份有限公司 加密硬件的配置方法、数据机密计算方法及相关设备

Family Cites Families (13)

* Cited by examiner, † Cited by third party
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计算机虚拟化的物理中断处理方法

Also Published As

Publication number Publication date
CN103282881B (zh) 2016-08-31
JP2013546111A (ja) 2013-12-26
KR20130111593A (ko) 2013-10-10
WO2012087984A3 (en) 2012-11-01
US20120167082A1 (en) 2012-06-28
CN103282881A (zh) 2013-09-04
KR101569731B1 (ko) 2015-11-17
WO2012087984A2 (en) 2012-06-28
TWI599955B (zh) 2017-09-21
TW201246072A (en) 2012-11-16

Similar Documents

Publication Publication Date Title
JP5746770B2 (ja) 仮想化によるスマートデバイスの直接的共有
US10534735B2 (en) Direct access to a hardware device for virtual machines of a virtualized computer system
US10691363B2 (en) Virtual machine trigger
US10846145B2 (en) Enabling live migration of virtual machines with passthrough PCI devices
US10162655B2 (en) Hypervisor context switching using TLB tags in processors having more than two hierarchical privilege levels
US10255090B2 (en) Hypervisor context switching using a redirection exception vector in processors having more than two hierarchical privilege levels
US10310879B2 (en) Paravirtualized virtual GPU
US7945436B2 (en) Pass-through and emulation in a virtual machine environment
CN110858185A (zh) 可扩展输入/输出(i/o)虚拟化(s-iov)架构中的虚拟设备构成
WO2017024783A1 (zh) 一种虚拟化方法、装置和系统
US20140337845A1 (en) Apparatus and method for expedited virtual machine (vm) launch in vm cluster environment
US10162657B2 (en) Device and method for address translation setting in nested virtualization environment
US20110153909A1 (en) Efficient Nested Virtualization
JP2013515983A (ja) 仮想化環境においてi/o処理を行う方法および装置
US10019275B2 (en) Hypervisor context switching using a trampoline scheme in processors having more than two hierarchical privilege levels
US10620963B2 (en) Providing fallback drivers for IO devices in a computing system
CN112352221A (zh) 用以支持虚拟化环境中的ssd设备驱动器与物理ssd之间的sq/cq对通信的快速传输的共享存储器机制
US10114759B2 (en) Trapless shadow page tables
CN117331704B (zh) 图形处理器gpu调度方法、装置和存储介质
US20220229683A1 (en) Multi-process virtual machine migration in a virtualized computing system
WO2016190892A1 (en) Improving performance of virtual machines

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130613

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140605

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140617

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140917

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140925

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20141017

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20141024

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20141117

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20141125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141211

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150310

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150408

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150508

R150 Certificate of patent or registration of utility model

Ref document number: 5746770

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees