JP6472881B2 - グラフィックス仮想化を用いたホストコンピュータからの/ホストコンピュータへの仮想マシンのライブマイグレーション - Google Patents

グラフィックス仮想化を用いたホストコンピュータからの/ホストコンピュータへの仮想マシンのライブマイグレーション Download PDF

Info

Publication number
JP6472881B2
JP6472881B2 JP2017525532A JP2017525532A JP6472881B2 JP 6472881 B2 JP6472881 B2 JP 6472881B2 JP 2017525532 A JP2017525532 A JP 2017525532A JP 2017525532 A JP2017525532 A JP 2017525532A JP 6472881 B2 JP6472881 B2 JP 6472881B2
Authority
JP
Japan
Prior art keywords
graphics
processing unit
instruction
virtual machine
graphics processing
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.)
Active
Application number
JP2017525532A
Other languages
English (en)
Other versions
JP2018500646A (ja
Inventor
ズゥ ドーン,ヤオ
ズゥ ドーン,ヤオ
エルヴイ,ジーユエン
Original Assignee
インテル コーポレイション
インテル コーポレイション
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 インテル コーポレイション, インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2018500646A publication Critical patent/JP2018500646A/ja
Application granted granted Critical
Publication of JP6472881B2 publication Critical patent/JP6472881B2/ja
Active 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
    • 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/445Program loading or initiating
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Description

本開示は、計算の分野に関する。より具体的には、本開示は、グラフィックス仮想化を用いたホストコンピュータからの/ホストコンピュータへの仮想マシンのライブマイグレーションに関する。
本明細書で提供される背景説明は、本開示の文脈を一般的に提示するためのものである。本明細書中に他に示されていない限り、このセクションに記載される構成要素は、本出願の請求項に対する先行技術ではないとともに、このセクションに含まれることにより先行技術であると認められるものではない。
システムメモリ全体をマイグレートするコストが大きく実用的ではないため、従来の仮想マシン(VM)のライブマイグレーションは、通常、メモリ内容の増分マイグレーションを必要とする。システムメモリ全体をマイグレートすることを可能にするために、システム全体を長時間停止させることは耐えられない。その代わりに、システムは、通常、システムがまだ動作している間に、いくつかの反復にわたってメモリの変更された部分のみをマイグレートする。その期間中に、新たにマークされたメモリページは“ダーティ”としてマークされるとともに、その後の反復でマイグレートされる。
最近の仮想化とグラフィックス技術の進歩により、ホストコンピュータ上の複数のVM間でより効率的なグラフィックス仮想化が可能になった。VMのユーザアプリケーションがホストコンピュータのグラフィックス処理ユニット(GPU)でサポートされている全てのグラフィックス機能にアクセスできるように、先進的なグラフィックス仮想化は、今では、多くの場合VM内で動作する固有のグラフィックスドライバをサポートする。多くの場合、GPUデバイスモデルは、ホストコンピュータの仮想マシンモニタ(VMM)内に実装され、メモリマップドI/O(memory mapped input-output:MMIO)のようなGPUリソースのアクセスをエミュレートする。GPUは、GPU命令を処理する場合にホストコンピュータのシステムメモリを操作することができ、システムメモリの操作はVMMのメモリマネージャには知られない。
その結果、最新のGPU仮想化が行われている場合、VMの従来のライブマイグレーションは機能しない。さらに、ライブマイグレーションのターゲットホストコンピュータが、ライブマイグレーションのソースホストコンピュータのGPUと異なるGPUを有する場合、マイグレーションは更に複雑になる。ソースホストコンピュータとターゲットホストコンピュータの2つのGPUの状態が完全に一致しないため、従来のライブマイグレーション手法では、このようなライブマイグレーションを処理できない。
実施例は、添付の図面と併せて下記の詳細な説明により容易に理解されることになる。この説明を容易にするために、同様の参照番号は、同様の構造要素を指定する。実施例は、添付の図面の図において、限定の目的ではなく、一例として例示される。
開示された実施例による、本開示を実施するのに適した一例のコンピュータの構成を例示する。 開示された実施例による、ソースホストコンピュータとターゲットホストコンピュータの一例のペアを例示する。 開示された実施例による、図1及び図2のグラフィックスパーサに関する動作の一例の方法を例示する。 開示された実施例による、図1及び図2のライブマイグレーション機能に関する動作の一例の方法を例示する。 開示された実施例による、図1及び図2のグラフィックスプロキシライブラリに関する動作の一例の方法を例示する。 開示された実施例による、本開示の様々な態様を実施するために使用するのに適した一例のコンピュータシステムを例示する。 開示された実施例による、図1から図5を参照して説明される方法を実施するための命令を有する記憶媒体を例示する。
グラフィックス仮想化を用いたホストコンピュータからの/ホストコンピュータへのVMのライブマイグレーションと関連付けられた装置、方法、及び記憶媒体がここで開示される。実施例において、計算のための装置は、装置の1つ又は複数の汎用プロセッサ(CPU)によりホストされるVMを管理するVMMを含み得る。VMMは、CPUにより実行されるVMのアプリケーションの命令により装置のシステムメモリのアクセスを管理するメモリマネージャを含み得る。アクセスの管理は、システムメモリの変更されたメモリページのトラッキングを含み得る。その上、VMMは、アプリケーションにより装置のグラフィックス処理ユニット(GPU)に対して発行されたグラフィックス命令を分析して、グラフィックス命令により引き起こされたシステムメモリに対する書き込みを検出し、変更されたメモリページのトラッキングを増やす(augment)、グラフィックス命令パーサを含み得る。さらに、VMMは、VMのうちの1つ又は複数を計算のための他の装置に選択的にライブマイグレートするライブマイグレーション機能であって、ライブマイグレートされているVMの現在のメモリ内容の上記他の装置に対する供給を含み、グラフィックス命令パーサにより増やされた(augmented)、メモリマネージャによりトラッキングされる変更されたメモリページを利用する、ライブマイグレーション機能を含み得る。
実施例において、命令パーサは、グラフィックス命令を分析して、グラフィックス命令がGPUによりサポートされているかどうかを判定するように更に構成され得る。さらに、命令パーサは、グラフィックス命令のうちの第1のグラフィックス命令がGPUによりサポートされていないと判定すると、第1のグラフィックス命令が、GPUによりサポートされる形式に変更されることができるか、又はGPUによりサポートされる機能的に等価なグラフィックス命令によって置き換えられることができるかどうかを判定するように構成され得る。またさらに、命令パーサは、第1のグラフィックス命令がGPUによりサポートされる形式に変更されることができると判定すると、第1のグラフィックス命令をGPUによりサポートされる形式に変更するか、又はGPUによりサポートされる他の機能的に等価なグラフィックス命令の存在を判定すると、第1のグラフィックス命令を他の機能的に等価なグラフィックス命令によって置き換えるように更に構成され得る。
実施例において、装置は、VMのうちの少なくとも第1のVMにおいてインスタンス化されるべきグラフィックスプロキシライブラリであって、第1のVMのためのGPUを抽象化するグラフィックスアプリケーションプログラミングインタフェース(API)のコンテキストを維持することができるグラフィックスプロキシライブラリを更に含み得る。その上、グラフィックスプロキシライブラリは、コンテキストが別の装置の別のGPU(2つのGPUは機能的に異なるGPUである)の抽象化のために維持されているかどうかを検出するように構成され得る。さらに、グラフィックスプロキシライブラリは、異なるGPUの抽象化のためにコンテキストが維持されていることを検出すると、GPUのためのグラフィックスコンテキストを再作成するように構成され得る。
下記の詳細な説明では、全体を通して同様の番号が同様の部品を指定するとともに、実践され得る例示的な実施例により示されている、本明細書の一部分を形成する添付図面に対して参照が行われる。本開示の範囲から逸脱することなく、他の実施例が利用され得るとともに、構造的又は論理的な変更が実行され得る、ということが理解されるべきである。したがって、下記の詳細な説明は、限定的に解釈されるべきでなく、実施例の範囲は添付された請求項とそれらの等価物によってのみ定義される。
本開示の態様は、添付の説明に開示されている。本開示の代替の実施例及びそれらの等価物は、本開示の精神又は範囲から逸脱することなく考案され得る。下記に開示される同様の要素は図面において同様の参照符号により示される、ということに注意が必要である。
同様に、様々な動作は、特許請求の範囲の主題を理解する上で最も有効である方法で、複数の別々の行動又は動作として説明され得る。しかしながら、説明の順序は、これらの動作が必ずしも順序に依存していることを意味すると解釈されるべきではない。特に、これらの動作は、提示の順序で実行されなくてもよい。説明された動作は、説明された実施例とは異なる順序で実行されてもよい。様々な追加の動作が実行され得るか、及び/又は、説明された動作はさらなる実施例では省略されてもよい。
本開示の目的のために、“A及び/又はB”という言いまわしは、(A)、(B)、又は(A及びB)を意味する。本開示の目的のために、“A、B、及び/又はC”という言いまわしは、(A)、(B)、(C)、(A及びB)、(A及びC)、(B及びC)、又は(A、B、及びC)を意味する。
説明は、“一実施例において”又は“実施例において”という言いまわしを使用することができ、それは、それぞれ同一又は異なる実施例のうちの1つ又は複数を指すことができる。また、本開示の実施例に関連して使用されるように、“備える(comprising)”、“含む(including)”、“有する(having)”などという用語は同義である。
ここで使用されるように、“モジュール”という用語は、特定用途向け集積回路(ASIC)、電子回路、1つ若しくは複数のソフトウェア又はファームウェアプログラムを実行するプロセッサ(共有、専用、若しくはグループ)及び/又はメモリ(共有、専用、若しくはグループ)、組み合わせ論理回路、そして/あるいは、説明された機能を提供する他の適切なコンポーネントのことを指し得るか、これらの一部であり得るか、又はこれらを含み得る。
ここで図1を参照すると、様々な実施例による、本開示の教示と結合されるコンピュータの構成の一例が示されている。図示のように、計算装置100は、ケーブルを介して直接に、又は、1つ若しくは複数のネットワーク162を介して間接的に互いに結合された複数のホストコンピュータ102を含み得る。各ホストコンピュータ102は、ハードウェア112及びVMM114によって構成され、複数のVM116を管理及びホストすることができる。下記でより詳細に説明されることになるように、ホストコンピュータ102のうちの少なくともいくつかは、前述したような高度なグラフィックス仮想化をサポートするように構成されおり、それにもかかわらず、ホストされる仮想マシンのライブマイグレーションを可能にする本開示の教示と結合される。
より具体的には、いくつかの実施例では、これらのホストコンピュータ102は、GPU124が同じ種類のGPUであるソースホストコンピュータとターゲットホストコンピュータ102との間で、ホストされる仮想マシンのライブマイグレーションを可能にする本開示の教示と結合され得る。他の実施例では、これらのホストコンピュータ102は、GPU124が同じ種類のGPUではないが、しかし同様の種類のGPUであるソースホストコンピュータとターゲットホストコンピュータ102との間で、ホストされる仮想マシンのライブマイグレーションを可能にする本開示の追加の教示と結合され得る。本出願の目的のために、グラフィックス命令が他のGPUによりサポートされるように、もし1つのGPUのグラフィックス命令が形式において変更されるか、又は機能的に等価なグラフィックス命令で置き換えられるならば、2つのGPUは、異なるが、しかし同様の種類のGPUである。更に他の実施例では、これらのホストコンピュータ102は、GPU124が異なるとともに同様でない種類のGPUであるソースホストコンピュータとターゲットホストコンピュータ102との間で、ホストされる仮想マシンのライブマイグレーションを可能にする本開示の追加の教示と結合され得る。本出願の目的のために、2つのGPUは、もしそれらが少なくとも、異なるが、しかし同様の種類のGPUでなければ、異なるとともに同様でない種類のGPUである。2つのGPUは、もしそれらが、異なるが、しかし同様の種類のGPUよりも似ているならば、同一である。異なるが、しかし同様の2つのGPUの例は、同じベンダーの異なる世代のGPUであり、ある世代のGPUのグラフィックス命令は、次世代のGPUによりサポートされるように変更され得る。異なるとともに同様でないGPUの例は、異なる命令セットアーキテクチャを有する異なるベンダーのGPUである。
引き続き図1を参照すると、各ホストコンピュータ102のハードウェア112は、システムメモリ126と、アプリケーション144の非グラフィックス命令を実行する1つ又は複数のCPU122とを含み得るとともに、前述したように、少なくともいくつかのホストコンピュータ102は、アプリケーション144のグラフィックス命令を実行するGPU124を更に含み得る。システムメモリ126は、広範囲の揮発性又は不揮発性記憶装置であってもよい。様々なホストコンピュータ102のCPU122は、同じ種類のCPUであってもよいし、異なる種類のCPUであってもよい。同様に、様々なホストコンピュータ102のGPU124は、同じ種類、同様の種類、又は著しく異なる種類のGPUであってもよい。換言すれば、CPU122及びGPU124は、当該技術分野で知られているいくつかのCPU及びGPUのうちの任意の1つであってもよい。その上、CPU122及びGPU124の他に、ハードウェア112は、大容量記憶装置、通信/ネットワークインタフェース、入力−出力装置(input-output device)などを含むが、これに限定されない、他のハードウェア要素(図示せず)を含み得る。
各ホストコンピュータ102のVMM114は、VM116によるホストコンピュータ102のシステムメモリのアクセス(例えば、ゲストオペレーティングシステム(OS)142及びアプリケーション144の非グラフィックス命令によるアクセス)を管理するメモリマネージャ132を含み得る。実施例において、システムメモリはページに編成され、アクセスの管理は変更されたメモリページのトラッキングを含み得る。その上、ホストコンピュータ102の少なくともいくつかについて、VMM114は、あるソースホストコンピュータ102からターゲットホストコンピュータ102へのVM116のライブマイグレーションをサポートするように構成されるライブマイグレーション機能136と、前述のような高度なグラフィックス仮想化をサポートするように構成されるグラフィックス命令パーサ134を更に含み得る。そして、これらの実施例のいくつかでは、グラフィックス命令パーサ134は、同じ又は同様の種類のGPUを有するソースホストコンピュータからターゲットホストコンピュータへのVMのライブマイグレーションをサポートする本開示の教示と更に結合される。より具体的には、実施例において、グラフィックス命令パーサ134は、グラフィックス命令を解析してGPU124に転送するように構成されていることに加えて、グラフィックス命令により引き起こされたGPUによるシステムメモリへの書き込みを検出するとともに、検出すると、メモリマネージャ132による変更されたメモリページのトラッキングを増やす(augment)、メモリ書き込みトラッキング機能156によって構成され得る。したがって、ライブマイグレーション機能136は、グラフィックス命令パーサ134により増やされた(augmented)、変更されたメモリページのトラッキングに基づいて、ソースホストコンピュータ及びターゲットホストコンピュータ102から/にライブマイグレートされているVMの現在のメモリ内容を提供し得る。その上、実施例において、グラフィックス命令パーサ134は、異なるが、しかし同様の種類のGPU124を有するソース及びターゲットホストコンピュータ102からの/ソース及びターゲットホストコンピュータ102へのグラフィックス仮想化を用いたVM116のライブマイグレーションを可能にするように、グラフィックス命令の形式を変更するか、又はグラフィックス命令を他の機能的に等価なグラフィックス命令に置き換える命令修正機能158によって更に構成され得る。本開示の教示を除いて、メモリマネージャ132、グラフィックス命令パーサ134、及びライブマイグレーション機能136を含むVMM114は、当該技術分野で知られているこれらの要素のうちの任意の1つであってもよい。
先に示唆したように、各VM116は、それ自体のゲストOS142及びアプリケーション144を含み得る。GPU124を有するホストコンピュータ102の場合、ゲストOS142はGPUドライバ154を含むことができ、アプリケーション144はグラフィックス命令並びに従来の非グラフィックス命令を含むことができる。さらに、実施例において、ゲストOS142は、異なるとともに同様でない種類のGPUを有するソースからターゲットホストコンピュータ102へのVMのライブマイグレーションをサポートするために、本開示の教示と結合されるグラフィックスプロキシライブラリ152を含み得る。より具体的には、グラフィックスプロキシライブラリ152は、グラフィックスAPIのグラフィックスコンテキストをトラッキングするとともに、異なるとともに同様でない種類のGPU124を有するソース及びターゲットホストコンピュータ102からの/ソース及びターゲットホストコンピュータ102へのグラフィックス仮想化を用いたVM116のライブマイグレーションを可能にするように、グラフィックスAPIによるGPUの異なる抽象化に対するグラフィックスコンテキストを再構成するように構成され得る。本開示の教示を除いて、グラフィックスプロキシライブラリ152及びグラフィックスドライバ154を含むOS142、そしてアプリケーション144は、当該技術分野で知られているこれらの要素のうちの任意の1つであってもよい。
要約すれば、計算装置100は、複数のホストコンピュータ102を含むことができ、グラフィックス仮想化を用いたソースホストコンピュータ102からターゲットホストコンピュータ102へのバーチャルマシンの3つのレベルのライブマイグレーションのうちの少なくとも1つをサポートするために、複数のホストコンピュータ102のうちの少なくとも2つが本開示の教示と結合され得る。グラフィックス仮想化を用いたソースホストコンピュータ102からターゲットホストコンピュータ102への仮想マシンの3つのレベルのライブマイグレーションは、下記の通りである。
a)同じ種類のGPU24のグラフィックス仮想化を用いたソースホストコンピュータ102からターゲットホストコンピュータ102へのライブマイグレーション。
b)異なるが、しかし同様の種類のGPU24のグラフィックス仮想化を用いたソースホストコンピュータ102からターゲットホストコンピュータ102へのライブマイグレーション。
c)異なるとともに同様でない種類のGPU24のグラフィックス仮想化を用いたソースホストコンピュータ102からターゲットホストコンピュータ102へのライブマイグレーション。
ここで図2を参照すると、様々な実施例による、本開示の教示と結合されるソースホストコンピュータとターゲットホストコンピュータの一例のペアが示されている。図示されるとともに先に説明したように、ソースホストコンピュータ102aは、CPU122a及びGPU124aを有するハードウェア112aを含み得る。ソースホストコンピュータ102aは、VMM114a及びホストされるVM116aを更に含み得る。VMM114aは、メモリマネージャ132a、メモリ書き込みトラッキング機能156aを有するグラフィックス命令パーサ134a、及びライブマイグレーション機能136aを含み得る。VM116aは、GPUドライバ154aを有するゲストOS142aと、アプリケーション144aとを含み得る。ライブマイグレーション機能136aは、グラフィックス命令パーサ134aにより増やされた、メモリマネージャ132aによる変更されたメモリページのトラッキングを利用して、GPU124aと同じ種類のGPUであるGPU124bのVM116bの全域でのグラフィックス仮想化を用いてVM116aをターゲットホストコンピュータ102bにライブマイグレートするように構成され得る。GPU124aと同じ種類のGPUであるGPU124bのVM116bの全域でのグラフィックス仮想化を用いたVM116aのターゲットホストコンピュータ102bへのライブマイグレーションのために、ターゲットホストコンピュータ102bは、同じ種類のCPU122b及びGPU124bを有するハードウェア112bを含み得る。ターゲットホストコンピュータ102bは、VMM114b及びホストVM116bを更に含み得る。VMM114bは、メモリマネージャ132b及びグラフィックス命令パーサ134bを含み得る。ターゲットホストコンピュータ102bについては、グラフィックス命令パーサ134bがメモリ書き込みトラッキング機能156bによって構成されているか、又は、VMM114bがライブマイグレーション機能136aによって構成されているかどうかは、任意である。VM116bは、GPUドライバ154bを有するゲストOS142bと、アプリケーション144bとを含み得る。もしターゲットホストコンピュータ102bが異なる時点でソースホストコンピュータ102aとして動作することになるならば、グラフィックス命令パーサ134bは、メモリ書き込みトラッキング機能156bによって構成されてもよく、そしてVMM114bは、ライブマイグレーション機能136bによって構成されてもよい。
他の実施例では、ライブマイグレーション機能136aは、GPU124aと異なるが、しかし同様の種類のGPUであるGPU124bのVM116bの全域でのグラフィックス仮想化を用いてVM116aをターゲットホストコンピュータ102bにライブマイグレートするように更に構成され得る。GPU124aと異なるが、しかし同様の種類のGPUであるGPU124bのVM116bの全域でのグラフィックス仮想化を用いたVM116aのターゲットホストコンピュータ102bへのライブマイグレーションを可能にするために、グラフィックス命令パーサ134bは、例えば、GPU124a及び124bのグラフィックスプロセッサタイプの識別を介して、GPU124bがGPU124aと異なるが、しかし同様の種類のGPUであるかどうかを判定するように更に構成され得る。さらに、グラフィックス命令パーサ134bは、GPU124a及び124bが異なるが、しかし同様の種類のGPUであると判定すると、GPU124aに対するグラフィックス命令が、GPU124bによりサポートされる形式に変更されることができるか、又はGPU124aに対するグラフィックス命令を、GPU124bによりサポートされる機能的に等価なグラフィックス命令によって置き換えられることができるかどうかを判定する命令修正機能158aによって更に構成され得る。その上、命令修正機能158aは、変更が可能であると判定すると、それでGPU124aに対するグラフィックス命令をGPU124bによりサポートされる形式に変更するか、又は置き換えが可能であると判定すると、GPU124aに対するグラフィックス命令を、GPU124bによりサポートされる機能的に等価なグラフィックス命令によって置き換えるように構成され得る。実施例において、グラフィックス命令パーサ134bは、GPU124a及び124bのグラフィックス命令の構文(syntax)及び/又は意味規則(semantics)をマッピングするテーブル(図示せず)によって構成され得る。ソースホストコンピュータ102aについては、グラフィックス命令パーサ134aが命令修正機能158aによって構成されているかどうかは、任意である。もしソースホストコンピュータ102aが、異なる時点でターゲットホストコンピュータ102bとして動作することになるとともに、GPU124aと異なるが、しかし同様の種類のGPUのVMの全域でのグラフィックス仮想化を用いたソースホストコンピュータからのVMのライブマイグレーションをサポートするならば、グラフィックス命令パーサ134aは、命令修正機能158aによって構成されてもよい。
更に他の実施例では、ライブマイグレーション機能136aは、GPU124aと異なるとともに同様でない種類のGPUであるGPU124bのVM116bの全域でのグラフィックス仮想化を用いてVM116aをターゲットホストコンピュータ102bにライブマイグレートするように構成され得る。GPU124aと異なるとともに同様でない種類のGPUであるGPU124bのVM116bの全域でのグラフィックス仮想化を用いたVM116aのターゲットホストコンピュータ102bへのライブマイグレーションを可能にするために、VM116aのゲストOS142aは、GPU124aのグラフィックス命令を抽象化するAPIをサポートするグラフィックスプロキシライブラリ152aによって更に構成され得る。グラフィックスプロキシライブラリ152aは、APIの実装をサポートすることに加えて、APIにより使用されるリソースをトラッキングするAPIのグラフィックスコンテキストを維持するように構成され、ライブマイグレーションの後に、異なるとともに同様でないGPU124bのグラフィックス命令を抽象化するAPIのために、新しいグラフィックスコンテキストを構成することを可能にする。トラッキングされるリソースは、glCreateContext()コールからのコンテキストID、glCreateTexture()からのテクスチャID、glCreateShader()コールからのシェーダプログラム(shader program)IDなどを含み得るが、これらに限定されない。グラフィックスプロキシライブラリ152aは、VM116aがソースホストコンピュータ102aからターゲットホストコンピュータ102bにライブマイグレートされて、VM116bになった後に、グラフィックスプロキシライブラリ152bになる。その上、グラフィックスプロキシライブラリ152a/152bは、例えば、潜在的なグラフィックスリソースが異なるとともに同様でないGPUのリソースであることを検出することによって、APIにより抽象化される潜在的なGPUの変更を検出するように構成され得る。さらに、グラフィックスプロキシライブラリ152a/152bは、ライブマイグレーションの後に、APIにより抽象化されるGPU124bが、GPU124aとは異なるとともに同様でない種類のGPUであることを検出すると、APIのためのグラフィックスコンテキストを再構成するように構成され得る。
ここで図3を参照すると、様々な実施例による、図1及び図2のグラフィックス命令パーサに関する動作の一例の方法が示されている。図示のように、実施例において、グラフィックス命令の解析(parsing:パージング)のための方法300は、ブロック302〜318における動作を含み得る。理解を容易にするために、ブロック302〜318の動作を順を追って説明するが、代替の実施例では、動作のうちのいくつかは、異なる順序で実行されてもよく、又は任意であってもよい。例えば、異なるが、しかし同様のGPUのグラフィックス仮想化を用いた、ソース及びターゲットホストコンピュータの全域でのVMのライブマイグレーションがサポートされる実施例では、少なくともブロック304〜306の動作が随意に実行されてもよい。更に他の実施例では、追加の動作が実行されてもよい。
方法300は、例えばゲストOS又はホストされるVMのアプリケーションからGPUに対して発行されたグラフィックス命令のトラッピング(trapping:捕捉)によって、ブロック302において開始することができる。実施例において、グラフィックス命令は、例えば、MMIOを監視することによりトラップ(trap:捕捉)されてもよい。
次に、オプションのブロック304において、(ホストされるVMが別のホストコンピュータからライブマイグレートされた場合に)グラフィックス命令がGPUによりサポートされているかどうかについての判定が行われることができる。実施例において、グラフィックス命令がサポートされていないと判定すると、グラフィックス命令が、GPUによりサポートされる形式に変更されることができるか、又はGPUによりサポートされる他の機能的に等価なグラフィックス命令によって置き換えられることができるかどうかについてのさらなる判定が行われることができる。
グラフィックス命令がサポートされていないが、しかしサポートされるように変更され得るか又は置き換えられ得ると判定されると、方法300はブロック306に進むことができる。ブロック306において、グラフィックス命令は、GPUによりサポートされる形式に変更され得るか、又はGPUによりサポートされる他の機能的に等価なグラフィックス命令によって置き換えられ得る。実施例において、もしグラフィックス命令がサポートされていないが、しかしグラフィックス命令がサポートされるように変更されることができないか又は置き換えられることができないならば、方法300はエラー(図示せず)を返して終了することができる。
引き続き図3を参照すると、ブロック302(同じ種類のGPUを有するターゲットホストコンピュータへのライブマイグレーションのみがサポートされている場合)、ブロック304(グラフィックス命令がサポートされていると判定される場合)から、又はブロック306(グラフィックス命令がサポートされていないが、しかしサポートされるように変更可能又は置き換え可能であると判定される場合)から、方法300はブロック308に進むことができる。ブロック308において、グラフィックス命令は、分析されて、デコードされ得る。特に、グラフィックス命令は、グラフィックス命令がGPUにシステムメモリへの書き込みを行わせるかどうかを検出するように分析され得る。
グラフィックス命令がGPUにシステムメモリへの書き込みを行わせることを判定すると、方法300はブロック310に進むことができる。ブロック310において、グラフィックス命令と関連付けられたゲストグラフィックスメモリアドレスが取得され得る。いくつかのグラフィックス命令については、メモリアドレスは、グラフィックス命令からを直接取得され得る。間接アドレッシングを使用する他のグラフィックス命令については、メモリアドレスは、グラフィックス命令におけるオフセット、及びベースグラフィックスアドレス(それは、例えば、ベースグラフィックスアドレスを設定するMMIO動作をトラップすることにより取得され得る)に基づいて計算され得る。ゲストグラフィックスメモリアドレスを取得すると、方法300はブロック312に進むことができる。ブロック312において、ゲストグラフィックスメモリアドレスと関連付けられたホストグラフィックスメモリアドレスが(例えば、グラフィックスページテーブルを介して)計算され得る。
ホストグラフィックスメモリアドレスを計算すると、方法300はブロック314に進むことができる。ブロック314において、ホストグラフィックスメモリアドレスと関連付けられたシステムメモリアドレスが、例えば、システムメモリマップから取得され得る。システムメモリアドレスを取得すると、方法300はブロック316に進むことができる。ブロック316において、メモリマネージャによる変更されたメモリページのトラッキングは、例えば、メモリページテーブルを追加として更新し、システムメモリアドレスを含むメモリページをダーティとマークすることにより増やされ得る。
ブロック308(グラフィックス命令がGPUにシステムメモリへの書き込みを行わせないと判定すると)から、又はブロック316(変更されたメモリページのトラッキングを増やすと)から、方法300はブロック318に進むことができ、ここで、グラフィックス命令の解析の残りの動作、例えばデコードされたグラフィックス命令をGPUにディスパッチ(dispatch)すること、が実行され得る。その後、方法300は終了し得る。
ここで図4を参照すると、様々な実施例による、図1及び図2のライブマイグレーション機能に関する動作の一例の方法が示されている。図示のように、実施例において、VMのライブマイグレーションのための方法400は、ブロック402〜408における動作を含み得る。理解を容易にするために、ブロック402〜408の動作を順を追って説明するが、代替の実施例では、動作のうちのいくつかは、異なる順序で実行されてもよく、又は任意であってもよい。他の実施例では、追加の動作が実行されてもよい。
方法400は、ブロック402において開始することができ、VMをライブマイグレートするためのプロセスが開始され得る。ライブマイグレーションは、複数のシステムイベントにより、例えば管理者からの命令に応答して、ハードウェア又はソフトウェアのイベントに応答して、しきい値レベルを超えるホストコンピュータの作業負荷に応答してなどにより、トリガされ得る。実施例において、ライブマイグレーションの開始の前に、ターゲットコンピュータが、同じGPU、適切なグラフィックス命令パーサにより補完される、異なるが、しかし同様のGPU、又は前述のような適切なグラフィックスプロキシライブラリにより補完される、異なるとともに同様でないGPUを有していることを確認するために判定が行われ得る。異なるとともに同様でないGPUの状況では、判定は、同様に、グラフィックスコンテキストを維持するように構成された前述のグラフィックスプロキシライブラリにより、ソースホストコンピュータが同様に補完される、ということを確認し得る。実施例において、もし適切なターゲットホストコンピュータが発見されないならば、“ライブマイグレーション”は中止され得る。
次に、ライブマイグレーションの開始時に、ブロック404において、メモリマネージャによりトラッキングされるとともに、グラフィックス命令パーサにより増やされた変更されたメモリページが取得される。その後、ブロック406において、メモリマネージャによりトラッキングされるとともに、グラフィックス命令パーサにより増やされた変更されたメモリページに基づいて、マイグレートされているVMの現在のメモリ内容が、ターゲットホストコンピュータに提供され得る。図示されるように、ブロック404及び406の動作は、ライブマイグレーションが進行中に、全てのメモリ変更をキャプチャするために、必要な回数だけ複数回繰り返されてもよい。
最終的に、全てのメモリ変更がキャプチャされて、ターゲットホストコンピュータに提供される。このとき、方法400はブロック408に進むことができる。ブロック408において、残りのライブマイグレーション動作が、これまで通り実行され得る。その後、方法400は終了し得る。
ここで図5を参照すると、様々な実施例による、図1及び図2のグラフィックスプロキシライブラリに関する動作の一例の方法が示されている。前述のように、グラフィックスプロキシライブラリは、潜在的なGPUのグラフィックス命令を抽象化するグラフィックスAPIをサポートするように構成され得る。特に、グラフィックスプロキシライブラリは、APIのためのグラフィックスコンテキストをトラッキング及び再構成するために、本開示の教示と結合され得る。図示されるように、実施例において、グラフィックスプロキシライブラリのための方法500は、ブロック502〜512における動作を含み得る。理解を容易にするために、ブロック502〜512の動作を順を追って説明するが、代替の実施例では、動作のうちのいくつかは、異なる順序で実行されてもよく、又は任意であってもよい。他の実施例では、追加の動作が実行されてもよい。
方法500は、ブロック502において開始することができ、グラフィックスAPIに対するグラフィックス呼び出しが(例えば、ゲストOS又はホストされるVMのアプリケーションから)受信され得る。ブロック504において、異なるとともに同様でないGPUがグラフィックスAPIにより抽象化されているかどうか、及びそのグラフィックスコンテキスト情報が蓄積されているかどうかについての判定が行われ得る。異なるとともに同様でないGPUがグラフィックスAPIにより抽象化されており、グラフィックスコンテキスト情報が蓄積されていると判定すると、方法500はブロック510に進むことができる。
ブロック510において、(ソースホストコンピュータ上のGPUのグラフィックスAPIによる以前の抽象化に対して)累積されたグラフィックスコンテキスト情報を使用して、グラフィックスAPIにより抽象化されている現在のGPUについての新しいグラフィックスコンテキストが構成され得る。前述したように、グラフィックスコンテキスト情報は、グラフィックス動作により使用されている全てのリソースに関する情報及びそれらの現在の状態を含み得る。その後、ブロック512において、(ソースホストコンピュータ上のGPUのグラフィックスAPIによる以前の抽象化に対する)古いグラフィックスコンテキストが破棄され得る。
ブロック504(グラフィックスAPIのGPU抽象化が変更されていない場合)から、又はブロック512(新しいグラフィックスコンテキストを構成し、古いグラフィックスコンテキストを破棄すると)から、方法500はブロック506に進むことができる。ブロック506において、ホストされるVM内のグラフィックスドライバが、グラフィックス呼び出しを実施するように潜在的なGPUを駆動するために、1回又は複数回呼び出され得る。ブロック508において、グラフィックス呼び出しを実施するように潜在的なGPUを駆動するグラフィックスドライバの応答、特に様々なリソースの使用状況及び状態が、(別のライブマイグレーションの場合に)グラフィックスAPIのためのグラフィックスコンテキストを維持するために、監視され、そしてトラッキングされることができる。
その後、方法500はブロック502に戻り、存在する場合には次のグラフィックス呼び出しを待って提供する。
図6は、本開示の選択された態様を実施するためにクライアント装置又はサーバとして使用するのに適した一例のコンピュータシステムを例示する。図示されるように、コンピュータ600は、1つ若しくは複数のプロセッサ又はプロセッサコア602、及びシステムメモリ604を含み得る。請求項を含む本出願の目的のために、“プロセッサ”及び“プロセッサコア”という用語は、文脈上特に明記しない限り、同義語と見なすことができる。その上、コンピュータ600は、(ディスケット、ハードドライブ、コンパクトディスク読み出し専用メモリ(CD−ROM)などのような)大容量記憶装置606、(ディスプレイ、キーボード、カーソル制御などのような)入力/出力装置608、及び(ネットワークインタフェースカード、モデムなどのような)通信インタフェース610を含み得る。これらの要素は、1つ又は複数のバスを表すことができるシステムバス612を介して互いに結合され得る。複数のバスの場合、それらは1つ又は複数のバスブリッジ(図示せず)によってブリッジされてもよい。
これらの要素のそれぞれは、当該技術分野において公知の従来の機能を実行し得る。特に、システムメモリ604及び大容量記憶装置606は、集合的に計算ロジック622と呼ばれる、先に説明したメモリマネージャ132及び/若しくはグラフィックス命令パーサ134、並びに/又はグラフィックスプロキシライブラリ152を含むVMM114と関連付けられた動作を実施するプログラミング命令の作業用コピー及び永久コピーを記憶するために使用されてもよい。様々な要素は、(複数の)プロセッサ602によりサポートされるアセンブラ命令、又はそのような命令にコンパイルされ得る例えば“C”のような高水準言語によって実施され得る。
これらの要素610〜612の数、性能、及び/又は能力は、コンピュータ600が、クライアント装置又はサーバとして使用されるかどうかに応じて変わり得る。クライアント装置として使用する場合、これらの要素610〜612の性能、及び/又は能力は、クライアント装置が、固定装置、又はスマートフォン、計算タブレット、ウルトラブック、若しくはラップトップのようなモバイル装置であるかどうかに応じて変わり得る。そうでなければ、要素610〜612の構成は既知であり、したがって、これ以上は説明されない。
当業者には理解されるように、本開示は、方法又はコンピュータプログラム製品として具現化されてもよい。したがって、本開示は、前述のように、ハードウェア内に具現化されることに加えて、完全なソフトウェアの実施例(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)か、又は、全て一般に“回路”、“モジュール”、若しくは“システム”と称され得るソフトウェア及びハードウェアの態様を組み合わせた実施例の形態を取ることができる。また、本開示は、媒体内に具現化されたコンピュータ使用可能なプログラムコードを有する、任意の有形又は非一時的な表現媒体内に具現化されたコンピュータプログラム製品の形態を取ることができる。
図7は、装置による命令の実行に応答して装置に本開示の選択された態様を実施させる命令を記憶するための使用に適している場合がある一例のコンピュータ読み取り可能な非一時的記憶媒体を例示する。図示されるように、非一時的なコンピュータ読み取り可能な記憶媒体702は、複数のプログラミング命令704を含み得る。プログラミング命令704は、プログラミング命令の実行に応答して、例えば、メモリマネージャ132及び/若しくはグラフィックス命令パーサ134、並びに/又はグラフィックスプロキシライブラリ152を含むVMM114と関連付けられた様々な動作を実行するために、装置、例えばコンピュータ600を有効にするように構成され得る。代替的な実施例では、その代わりに、プログラミング命令704は、複数のコンピュータ読み取り可能な非一時的記憶媒体702上に配置され得る。代替的な実施例では、プログラミング命令704は、信号などのコンピュータ読み取り可能な一時的記憶媒体702上に配置され得る。
1つ又は複数のコンピュータ使用可能な媒体又はコンピュータ読み取り可能な媒体の任意の組み合わせを利用することができる。コンピュータ使用可能な媒体又はコンピュータ読み取り可能な媒体は、例えば、電子、磁気、光学、電磁気、赤外線、若しくは半導体のシステム、装置、デバイス、又は伝播媒体であってもよいが、これらに限定されない。コンピュータ読み取り可能な媒体のより具体的な例(非限定的なリスト)は、下記の、1つ又は複数のワイヤを有する電気的接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラマブル読み出し専用メモリ(EPROM又はフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み出し専用メモリ(CD−ROM)、光学記憶装置、インターネット若しくはイントラネットをサポートする伝送媒体のような伝送媒体、又は磁気記憶装置を含む。プログラムが、例えば、紙又は他の媒体の光学走査を介して電子的に取り込まれ、その後、必要に応じてコンパイルされ、解釈され、又は適切な方法で処理され、次いでコンピュータメモリに記憶されるので、コンピュータ使用可能な媒体又はコンピュータ読み取り可能な媒体は、プログラムが印刷される紙又は別の適切な媒体であってもよいことに注意が必要である。この文献の文脈において、コンピュータ使用可能な媒体又はコンピュータ読み取り可能な媒体は、命令実行システム、装置、若しくはデバイスによって、又はそれに関連して使用するためのプログラムを含む、記憶する、通信する、伝播する、又は運ぶことができる任意の媒体であり得る。コンピュータ使用可能な媒体は、ベースバンドにおいて又は搬送波の一部として、媒体とともに具現化されたコンピュータで使用可能なプログラムコードを有する伝播されたデータ信号を含み得る。コンピュータ使用可能なプログラムコードは、無線、有線、光ファイバケーブル、RFなどを含むがこれに限定されない任意の適切な媒体を使用して伝送され得る。
本開示の動作を実行するためのコンピュータプログラムコードは、Java(登録商標)、Smalltalk、C++、又は同様のもののようなオブジェクト指向プログラミング言語、及び、「C」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述され得る。プログラムコードは、完全にユーザのコンピュータ上で、一部分はユーザのコンピュータ上で、スタンドアロンのソフトウェアパッケージとして、一部分はユーザのコンピュータ上でかつ一部分はリモートコンピュータ上で、又は、完全にリモートコンピュータ若しくはサーバ上で、実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)若しくはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されることができるか、又は(例えば、インターネットサービスプロバイダを使用してインターネットを介して)外部コンピュータに接続されることができる。
本開示は、本開示の実施例による方法、装置(システム)、及びコンピュータプログラム製品のフローチャート説明図及び/又はブロック図を参照して説明される。フローチャート説明図及び/又はブロック図の各ブロック、並びにフローチャート説明図及び/又はブロック図におけるブロックの組み合わせは、コンピュータプログラム命令により実施されることができる、ということが理解されることになる。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに提供されて機械を生成することができ、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサを介して実行される命令は、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実施するための手段を作成する。
これらのコンピュータプログラム命令は、同様に、コンピュータ又は他のプログラム可能なデータ処理装置に特定の方法で機能するよう指示することができるコンピュータ読み取り可能な媒体に記憶されることができ、その結果、コンピュータ読み取り可能な媒体に記憶された命令は、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実施する命令手段を含む製造品を生成する。
コンピュータプログラム命令は、同様に、コンピュータ又は他のプログラム可能データ処理装置にロードされて、コンピュータ又は他のプログラム可能な装置に一連の動作ステップを実行させて、コンピュータ実施プロセスを生成させ、その結果、コンピュータ又は他のプログラム可能な装置上で実行される命令は、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実施するためのプロセスを提供する。
図面におけるフローチャート及びブロック図は、本開示の様々な実施例によるシステム、方法、及びコンピュータプログラム製品の可能な実装例のアーキテクチャ、機能、及び動作を例示する。この点について、フローチャート又はブロック図における各ブロックは、指定された(複数の)論理機能を実施するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表し得る。いくつかの代替的な実施例では、ブロックにおいて言及されている機能は、図において言及されている順序から外れて発生することがある、ということに同様に注意が必要である。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行されてもよく、又は、関連する機能性に依存して、ブロックが時々逆の順序で実行されてもよい。ブロック図及び/又はフローチャート説明図の各ブロック、そしてブロック図及び/又はフローチャート説明図におけるブロックの組み合わせは、指定された機能若しくは動作を実行する専用ハードウェアベースのシステム、又は、専用ハードウェアとコンピュータ命令の組み合わせにより実施されることができる、ということが同様に注意されることになる。
本明細書で使用される用語は、特定の実施例のみを説明するためのものであり、本開示を限定することを意図していない。ここで使用されるように、単数形を表す冠詞“a”、“an”、及び“the”は、文脈がそうでない場合を明らかに示さない限り、同様に複数形を含むことを意図している。用語“備える(comprises)”及び/又は“備える(comprising)”は、本明細書で使用される場合、記述された特徴、整数、ステップ、動作、要素、及び/又は構成要素の存在を特定するが、しかし、1つ又は複数の他の特徴、整数、ステップ、動作、要素、構成要素、及び/又はそれらのグループの存在若しくは追加を排除するものではない、ということが更に理解されることになる。
実施例は、コンピュータプロセス、コンピュータのシステムとして、又はコンピュータ読み取り可能な媒体のコンピュータプログラム製品のような製造品として実施されてもよい。コンピュータプログラム製品は、コンピュータシステムによって読み取り可能であるとともに、コンピュータプロセスを実行するためのコンピュータプログラム命令を符号化するコンピュータ記憶媒体であってもよい。
下記の請求項における全ての手段又はステップ、さらに機能要素の対応する構造、材料、動作、及び等価物は、具体的に権利請求された他の請求項要素と組み合わせて機能を実行するための任意の構造、材料、又は動作を含むことを意図している。本開示の説明は、例示及び説明のために提示されているが、しかし、網羅的であること、又は開示された形式の開示に限定されることを意図していない。本開示の範囲及び趣旨から逸脱することなく、多くの変更及び変形が当業者には明らかであろう。この実施例は、本開示の原理及び実際の適用を最もよく説明し、意図される特定の用途に適している様々な変更を伴う実施例に関する開示を他の当業者が理解することを可能にするために、選択されて説明された。
再び図6を参照すると、一実施例では、プロセッサ602のうちの少なくとも1つは、(メモリ604及び記憶装置606に記憶する代わりに)計算ロジック622を有するメモリと共にパッケージ化されてもよい。一実施例では、プロセッサ602のうちの少なくとも1つは、システムインパッケージ(SiP)を形成するために計算ロジック622を有するメモリと共にパッケージ化されてもよい。一実施例では、プロセッサ602のうちの少なくとも1つは、計算ロジック622を有するメモリと同じダイ上に統合され得る。一実施例では、プロセッサ602のうちの少なくとも1つは、システムオンチップ(SoC)を形成するために計算ロジック622を有するメモリと共にパッケージ化されてもよい。少なくとも1つの実施例では、SoCは、例えば、下記には限定されないが、スマートフォン又は計算タブレットにおいて利用され得る。
したがって、下記を含むが、これに限定されない、本開示の様々な一例の実施例が説明される。
実例1は、計算のための装置であることができる。上記装置は、1つ又は複数の汎用プロセッサと、グラフィックス処理ユニットと、上記1つ又は複数の汎用プロセッサ及び上記グラフィックス処理ユニットに結合されたシステムメモリと、上記1つ又は複数の汎用プロセッサによりホストされる仮想マシンを管理する仮想マシンモニタとを備え得る。上記仮想マシンモニタは、メモリマネージャと、グラフィックス命令パーサとを含み得る。上記メモリマネージャは、上記1つ又は複数の汎用プロセッサにより実行されるべき上記仮想マシンのアプリケーションの命令により上記システムメモリのアクセスを管理するように構成され得る。アクセスの管理は、上記システムメモリの変更されたメモリページのトラッキングを含み得る。上記グラフィックス命令パーサは、上記アプリケーションにより上記グラフィックス処理ユニットに対して発行されたグラフィックス命令を分析して、上記グラフィックス命令により引き起こされた上記システムメモリに対する書き込みを検出し、上記メモリマネージャによる変更されたメモリページの上記トラッキングを増やすように構成され得る。
実例2は、実例1であることができ、上記仮想マシンモニタは、上記仮想マシンのうちの1つ又は複数を計算のための他の装置に選択的にライブマイグレートするライブマイグレーション機能であって、ライブマイグレートされている仮想マシンの現在のメモリ内容の上記他の装置に対する供給を含み、上記グラフィックス命令パーサにより増やされた、上記メモリマネージャによりトラッキングされる変更されたメモリページを利用する、ライブマイグレーション機能を更に含む。
実例3は、実例1又は実例2であることができ、上記グラフィックス命令パーサは、システムメモリに対する書き込みを検出すると、システムメモリに対する上記書き込みのゲストグラフィックスメモリアドレスを取得し得る。
実例4は、実例3であることができ、上記グラフィックス命令パーサは、システムメモリに対する上記書き込みに関して取得された上記ゲストグラフィックスメモリアドレスに少なくとも部分的に基づいて、システムメモリに対する上記書き込みのホストグラフィックスメモリアドレスを更に計算し得る。
実例5は、実例4であることができ、上記グラフィックス命令パーサは、システムメモリに対する上記書き込みに関して計算された上記ホストグラフィックスメモリアドレスに少なくとも部分的に基づいて、システムメモリに対する上記書き込みのシステムメモリアドレスを更に取得し得る。
実例6は、実例5であることができ、上記グラフィックス命令パーサは、上記システムメモリアドレスを含む上記メモリページのうちの1つをダーティとして更にマークし得る。
実例7は、実例1から実例6のいずれか1つであることができ、上記グラフィックス命令パーサは、上記グラフィックス処理ユニットによりサポートされるグラフィックス命令を更に識別し得る。
実例8は、実例7であることができ、上記グラフィックス命令パーサは、上記グラフィックス処理ユニットのグラフィックスプロセッサタイプを識別し得る。
実例9は、実例1から実例6のいずれか1つであることができ、上記グラフィックス命令パーサは、上記グラフィックス命令を分析して、上記グラフィックス命令が上記グラフィックス処理ユニットによりサポートされているかどうかを更に判定し得る。
実例10は、実例9であることができ、上記グラフィックス命令パーサは、上記グラフィックス命令のうちの第1のグラフィックス命令が上記グラフィックス処理ユニットによりサポートされていないと判定すると、上記第1のグラフィックス命令が、上記グラフィックス処理ユニットによりサポートされる形式に変更されることができるか、又は上記グラフィックス処理ユニットによりサポートされる機能的に等価なグラフィックス命令によって置き換えられることができるかどうかを更に判定し得る。
実例11は、実例10であることができ、上記グラフィックス命令パーサは、上記第1のグラフィックス命令が上記グラフィックス処理ユニットによりサポートされる形式に変更されることができると判定すると、上記第1のグラフィックス命令を上記グラフィックス処理ユニットによりサポートされる形式に更に変更し得るか、又は上記グラフィックス処理ユニットによりサポートされる他の機能的に等価なグラフィックス命令の存在を判定すると、上記第1のグラフィックス命令を上記他の機能的に等価なグラフィックス命令によって更に置き換え得る。
実例12は、実例1から実例6のいずれか1つであることができ、上記仮想マシンのうちの少なくとも第1の仮想マシンにおいてインスタンス化されるべきグラフィックスプロキシライブラリを更に含む。上記グラフィックスプロキシライブラリは、上記第1の仮想マシンのための上記グラフィックス処理ユニットを抽象化するグラフィックスアプリケーションプログラミングインタフェースのコンテキストを維持し得る。
実例13は、実例12であることができ、上記グラフィックスプロキシライブラリは、維持される上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニット用であるかどうかを更に検出し得る。
実例14は、実例13であることができ、上記グラフィックスプロキシライブラリは、維持される上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニット用であることを検出すると、上記第1の仮想マシンが上記計算のための他の装置からライブマイグレートされてしまう前に、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される上記異なるグラフィックス処理ユニット用の上記グラフィックスプロキシライブラリにより維持されるコンテキストを使用して、上記グラフィックスアプリケーションプログラミングインタフェースの上記コンテキストを構成し得る。
実例15は、計算のための装置であって、1つ又は複数の汎用プロセッサと、グラフィックス処理ユニットと、上記1つ又は複数の汎用プロセッサ及び上記グラフィックス処理ユニットに結合されたシステムメモリと、上記1つ又は複数の汎用プロセッサによりホストされる仮想マシンを管理する仮想マシンモニタとを備える。上記仮想マシンモニタは、メモリマネージャと、グラフィックス命令パーサとを含み得る。上記メモリマネージャは、上記1つ又は複数の汎用プロセッサにより実行される上記仮想マシンのアプリケーションの命令により上記システムメモリのアクセスを管理するように構成され得る。上記グラフィックス命令パーサは、上記アプリケーションにより上記グラフィックス処理ユニットに対して発行されたグラフィックス命令を分析して、上記グラフィックス命令が上記グラフィックス処理ユニットによりサポートされているかどうかを判定するように構成され得る。
実例16は、実例15であることができ、上記グラフィックス命令パーサは、上記グラフィックス命令のうちの第1のグラフィックス命令が上記グラフィックス処理ユニットによりサポートされていないと判定すると、上記第1のグラフィックス命令が、上記グラフィックス処理ユニットによりサポートされる形式に変更されることができるか、又は上記グラフィックス処理ユニットによりサポートされる機能的に等価なグラフィックス命令によって置き換えられることができるかどうかを更に判定し得る。
実例17は、実例16であることができ、上記グラフィックス命令パーサは、上記第1のグラフィックス命令が上記グラフィックス処理ユニットによりサポートされる形式に変更されることができると判定すると、上記第1のグラフィックス命令を上記グラフィックス処理ユニットによりサポートされる形式に更に変更し得るか、又は上記グラフィックス処理ユニットによりサポートされる他の機能的に等価なグラフィックス命令の存在を判定すると、上記第1のグラフィックス命令を上記他の機能的に等価なグラフィックス命令によって更に置き換え得る。
実例18は、実例15から実例17のいずれか1つであることができ、上記仮想マシンのうちの少なくとも第1の仮想マシンにおいてインスタンス化されるべきグラフィックスプロキシライブラリであって、上記第1の仮想マシンのための上記グラフィックス処理ユニットを抽象化するグラフィックスアプリケーションプログラミングインタフェースのコンテキストを維持し得るグラフィックスプロキシライブラリを更に備える。
実例19は、実例18であることができ、上記グラフィックスプロキシライブラリは、維持される上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニット用であるかどうかを更に検出することができ、上記2つのグラフィックス処理ユニットは異なるグラフィックス処理ユニットである。
実例20は、実例19であることができ、上記グラフィックスプロキシライブラリは、上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニットのために維持されていることを検出すると、上記第1の仮想マシンが上記計算のための他の装置からライブマイグレートされてしまう前に、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される上記異なるグラフィックス処理ユニット用の上記グラフィックスプロキシライブラリにより維持されるコンテキストを使用して、上記グラフィックスアプリケーションプログラミングインタフェースの上記コンテキストを構成し得る。
実例21は、計算のための装置であって、1つ又は複数の汎用プロセッサと、グラフィックス処理ユニットと、上記1つ又は複数の汎用プロセッサ及び上記グラフィックス処理ユニットに結合されたシステムメモリと、上記1つ又は複数の汎用プロセッサによりホストされる仮想マシンを管理する仮想マシンモニタと、上記仮想マシンのうちの少なくとも第1の仮想マシンにおいてインスタンス化されるべきグラフィックスプロキシライブラリとを備える。上記グラフィックスプロキシライブラリは、上記第1の仮想マシンのための上記グラフィックス処理ユニットを抽象化するグラフィックスアプリケーションプログラミングインタフェースのコンテキストを維持するように構成され得る。
実例22は、実例21であることができ、上記グラフィックスプロキシライブラリは、維持される上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニット用であるかどうかを更に検出し得る。
実例23は、実例22であることができ、上記グラフィックスプロキシライブラリは、上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化されている異なるグラフィックス処理ユニットのために維持されていることを検出すると、上記第1の仮想マシンが上記計算のための他の装置からライブマイグレートされてしまう前に、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される上記異なるグラフィックス処理ユニット用の上記グラフィックスプロキシライブラリにより維持されるコンテキストを使用して、上記グラフィックスアプリケーションプログラミングインタフェースの上記コンテキストを構成し得る。
実例24は、計算のための方法であって、計算システムのグラフィックス命令パーサにより、上記計算システムの仮想マシンのアプリケーションによって上記計算システムのグラフィックス処理ユニットに対して発行されたグラフィックス命令を分析するステップと、上記グラフィックス命令パーサにより、上記グラフィックス命令により引き起こされた上記計算システムのシステムメモリに対する書き込みを検出するステップと、システムメモリに対する書き込みを検出すると、上記グラフィックス命令パーサにより、上記計算システムの仮想マシンモニタのメモリマネージャによる変更されたメモリページのトラッキングを増やすステップとを含む。
実例25は、実例24であることができ、上記仮想マシンのうちの1つ又は複数を他の計算システムにライブマイグレートするステップであって、ライブマイグレートされている仮想マシンの現在のメモリ内容の上記他の計算システムに対する供給を含み、上記グラフィックス命令パーサにより増やされた、上記メモリマネージャによりトラッキングされる変更されたメモリページを利用する、ステップを更に含む。
実例26は、実例24又は実例25であることができ、上記グラフィックス命令パーサにより、システムメモリに対する書き込みを検出すると、システムメモリに対する上記書き込みのゲストグラフィックスメモリアドレスを取得するステップを更に含む。
実例27は、実例26であることができ、上記グラフィックス命令パーサにより、システムメモリに対する上記書き込みに関して取得された上記ゲストグラフィックスメモリアドレスに少なくとも部分的に基づいて、システムメモリに対する上記書き込みのホストグラフィックスメモリアドレスを更に計算するステップを更に含む。
実例28は、実例27であることができ、上記グラフィックス命令パーサにより、システムメモリに対する上記書き込みに関して計算された上記ホストグラフィックスメモリアドレスに少なくとも部分的に基づいて、システムメモリに対する上記書き込みのシステムメモリアドレスを更に取得するステップを更に含む。
実例29は、実例28であることができ、増やすステップは、上記グラフィックス命令パーサにより、上記システムメモリアドレスを含む上記メモリページのうちの1つをダーティとしてマークするステップを含み得る。
実例30は、実例24から実例29のいずれか1つであることができ、上記グラフィックス命令パーサにより、上記グラフィックス処理ユニットによりサポートされるグラフィックス命令を識別するステップを更に含む。
実例31は、実例30であることができ、上記グラフィックス命令パーサにより、上記グラフィックス処理ユニットのグラフィックスプロセッサタイプを識別するステップを更に含む。
実例32は、実例24から実例30のいずれか1つであることができ、上記グラフィックス命令パーサにより、上記グラフィックス命令を分析して、上記グラフィックス命令が上記グラフィックス処理ユニットによりサポートされているかどうかを判定するステップを更に含む。
実例33は、実例32であることができ、上記グラフィックス命令パーサにより、上記グラフィックス命令のうちの第1のグラフィックス命令が上記グラフィックス処理ユニットによりサポートされていないと判定すると、上記第1のグラフィックス命令が、上記グラフィックス処理ユニットによりサポートされる形式に変更されることができるか、又は上記グラフィックス処理ユニットによりサポートされる機能的に等価なグラフィックス命令によって置き換えられることができるかどうかを判定するステップを更に含む。
実例34は、実例33であることができ、上記グラフィックス命令パーサにより、上記第1のグラフィックス命令が上記グラフィックス処理ユニットによりサポートされる形式に変更されることができると判定すると、上記第1のグラフィックス命令を上記グラフィックス処理ユニットによりサポートされる形式に変更するステップか、又は上記グラフィックス処理ユニットによりサポートされる他の機能的に等価なグラフィックス命令の存在を判定すると、上記第1のグラフィックス命令を上記他の機能的に等価なグラフィックス命令によって置き換えるステップを更に含む。
実例35は、実例24から実例30のいずれか1つであることができ、上記仮想マシンのうちの第1の仮想マシンにおけるグラフィックスプロキシライブラリにより、上記第1の仮想マシンのための上記グラフィックス処理ユニットを抽象化するグラフィックスアプリケーションプログラミングインタフェースのコンテキストを維持するステップを更に含む。
実例36は、実例35であることができ、上記グラフィックスプロキシライブラリにより、維持される上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニット用であるかどうかを検出するステップを更に含む。
実例37は、実例36であることができ、上記グラフィックスプロキシライブラリにより、維持される上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニット用であることを検出すると、上記第1の仮想マシンが上記計算システムにライブマイグレートされてしまう前に、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される上記異なるグラフィックス処理ユニット用の上記グラフィックスプロキシライブラリにより維持されるコンテキストを使用して、上記グラフィックスアプリケーションプログラミングインタフェースの上記コンテキストを構成するステップを更に含む。
実例38は、計算のための方法であって、計算システムのグラフィックス命令パーサにより、上記計算システムの仮想マシンのアプリケーションによって上記計算システムのグラフィックス処理ユニットに対して発行されたグラフィックス命令を分析して、上記グラフィックス命令が上記グラフィックス処理ユニットによりサポートされているかどうかを判定するステップと、上記グラフィックス命令パーサにより、上記グラフィックス命令のうちの第1のグラフィックス命令が上記グラフィックス処理ユニットによりサポートされていないと判定すると、上記第1のグラフィックス命令が、上記グラフィックス処理ユニットによりサポートされる形式に変更されることができるか、又は上記グラフィックス処理ユニットによりサポートされる機能的に等価なグラフィックス命令によって置き換えられることができるかどうかを判定するステップとを含む。
実例39は、実例38であることができ、上記グラフィックス命令パーサにより、上記第1のグラフィックス命令が上記グラフィックス処理ユニットによりサポートされる形式に変更されることができると判定すると、上記第1のグラフィックス命令を上記グラフィックス処理ユニットによりサポートされる形式に変更するステップか、又は上記グラフィックス命令パーサにより、上記グラフィックス処理ユニットによりサポートされる他の機能的に等価なグラフィックス命令の存在を判定すると、上記第1のグラフィックス命令を上記他の機能的に等価なグラフィックス命令によって置き換えるステップを更に含む。
実例40は、実例38から実例39のいずれか1つであることができ、上記仮想マシンのうちの第1の仮想マシンにおけるグラフィックスプロキシライブラリにより、上記第1の仮想マシンのための上記グラフィックス処理ユニットを抽象化するグラフィックスアプリケーションプログラミングインタフェースのコンテキストを維持するステップを更に含む。
実例41は、実例40であることができ、上記グラフィックスプロキシライブラリにより、維持される上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニット用であるかどうかを検出するステップを更に含み、上記2つのグラフィックス処理ユニットは異なるグラフィックス処理ユニットである。
実例42は、実例41であることができ、上記グラフィックスプロキシライブラリにより、維持される上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化されている異なるグラフィックス処理ユニット用であることを検出すると、上記第1の仮想マシンが上記計算システムにライブマイグレートされてしまう前に、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される上記異なるグラフィックス処理ユニット用の上記グラフィックスプロキシライブラリにより維持されるコンテキストを使用して、上記グラフィックスアプリケーションプログラミングインタフェースの上記コンテキストを構成するステップを更に含む。
実例43は、計算のための方法であって、計算システムの複数の仮想マシンのうちの第1の仮想マシンのグラフィックスプロキシライブラリにより、上記第1の仮想マシンのために、上記計算システムのグラフィックス処理ユニットを抽象化するグラフィックスアプリケーションプログラミングインタフェースのコンテキストを維持するステップと、上記グラフィックスプロキシライブラリにより、維持される上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニット用であるかどうかを検出するステップとを含む。
実例44は、実例43であることができ、上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化されている異なるグラフィックス処理ユニットのために維持されていることを検出すると、上記第1の仮想マシンが上記計算システムにライブマイグレートされてしまう前に、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される上記異なるグラフィックス処理ユニット用の上記グラフィックスプロキシライブラリにより維持されるコンテキストを使用して、上記グラフィックスアプリケーションプログラミングインタフェースの上記コンテキストを構成するステップを更に含む。
実例45は、命令が記憶された少なくとも1つのコンピュータ読み取り可能な媒体であることができ、計算システムのプロセッサによる実行に応答して、上記命令は上記計算システムに、グラフィックス命令パーサを実施させて、上記計算システムの仮想マシンのアプリケーションによって上記計算システムのグラフィックス処理ユニットに対して発行されたグラフィックス命令を分析させ、上記グラフィックス命令により引き起こされた上記計算システムのシステムメモリに対する書き込みを検出させ、システムメモリに対する書き込みを検出すると、上記計算システムの仮想マシンモニタのメモリマネージャによる変更されたメモリページのトラッキングを増やさせる。
実例46は、実例45であることができ、上記コンピュータシステムは、上記メモリマネージャを含む上記仮想マシンモニタと、上記仮想マシンのうちの1つ又は複数を他の計算システムに選択的にライブマイグレートするライブマイグレーション機能であって、ライブマイグレートされている仮想マシンの現在のメモリ内容の上記他の計算システムに対する供給を含み、上記グラフィックス命令パーサにより増やされた、上記メモリマネージャによりトラッキングされる変更されたメモリページを利用する、ライブマイグレーション機能とを更に実施させられ得る。
実例47は、実例45又は実例46であることができ、上記グラフィックス命令パーサは、システムメモリに対する書き込みを検出すると、システムメモリに対する上記書き込みのゲストグラフィックスメモリアドレスを更に取得し得る。
実例48は、実例47であることができ、上記グラフィックス命令パーサは、システムメモリに対する上記書き込みに関して取得された上記ゲストグラフィックスメモリアドレスに少なくとも部分的に基づいて、システムメモリに対する上記書き込みのホストグラフィックスメモリアドレスを更に計算し得る。
実例49は、実例48であることができ、上記グラフィックス命令パーサは、システムメモリに対する上記書き込みに関して計算された上記ホストグラフィックスメモリアドレスに少なくとも部分的に基づいて、システムメモリに対する上記書き込みのシステムメモリアドレスを更に取得し得る。
実例50は、実例49であることができ、上記グラフィックス命令パーサは、上記システムメモリアドレスを含む上記メモリページのうちの1つをダーティとして更にマークし得る。
実例51は、実例45から実例50のいずれか1つであることができ、上記グラフィックス命令パーサは、上記グラフィックス処理ユニットによりサポートされるグラフィックス命令を更に識別し得る。
実例52は、実例51であることができ、上記グラフィックス命令パーサは、上記グラフィックス処理ユニットのグラフィックスプロセッサタイプを識別し得る。
実例53は、実例45から実例50のいずれか1つであることができ、上記グラフィックス命令パーサは、上記グラフィックス命令を分析して、上記グラフィックス命令が上記グラフィックス処理ユニットによりサポートされているかどうかを更に判定し得る。
実例54は、実例53であることができ、上記グラフィックス命令パーサは、上記グラフィックス命令のうちの第1のグラフィックス命令が上記グラフィックス処理ユニットによりサポートされていないと判定すると、上記第1のグラフィックス命令が、上記グラフィックス処理ユニットによりサポートされる形式に変更されることができるか、又は上記グラフィックス処理ユニットによりサポートされる機能的に等価なグラフィックス命令によって置き換えられることができるかどうかを更に判定し得る。
実例55は、実例54であることができ、上記グラフィックス命令パーサは、上記第1のグラフィックス命令が上記グラフィックス処理ユニットによりサポートされる形式に変更されることができると判定すると、上記第1のグラフィックス命令を上記グラフィックス処理ユニットによりサポートされる形式に更に変更し得るか、又は上記グラフィックス処理ユニットによりサポートされる他の機能的に等価なグラフィックス命令の存在を判定すると、上記第1のグラフィックス命令を上記他の機能的に等価なグラフィックス命令によって更に置き換え得る。
実例56は、実例45から実例50のいずれか1つであることができ、上記コンピュータシステムは、上記仮想マシンのうちの少なくとも第1の仮想マシンにおいてインスタンス化されるべきグラフィックスプロキシライブラリであって、上記第1の仮想マシンのための上記グラフィックス処理ユニットを抽象化するグラフィックスアプリケーションプログラミングインタフェースのコンテキストを維持することができるグラフィックスプロキシライブラリを更に実施させられ得る。
実例57は、実例56であることができ、上記グラフィックスプロキシライブラリは、維持される上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニット用であるかどうかを更に検出し得る。
実例58は、実例57であることができ、上記グラフィックスプロキシライブラリは、維持される上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニット用であることを検出すると、上記第1の仮想マシンが上記計算のための他の装置からライブマイグレートされてしまう前に、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される上記異なるグラフィックス処理ユニット用の上記グラフィックスプロキシライブラリにより維持されるコンテキストを使用して、上記グラフィックスアプリケーションプログラミングインタフェースの上記コンテキストを構成し得る。
実例59は、命令が記憶された少なくとも1つのコンピュータ読み取り可能な媒体であることができ、計算システムのプロセッサによる実行に応答して、上記命令は上記計算システムに、グラフィックス命令パーサを実施させて、上記計算システムの仮想マシンのアプリケーションによって上記計算システムのグラフィックス処理ユニットに対して発行されたグラフィックス命令を分析させ、上記グラフィックス命令が上記グラフィックス処理ユニットによりサポートされているかどうかを判定させ、上記グラフィックス命令のうちの第1のグラフィックス命令が上記グラフィックス処理ユニットによりサポートされていないと判定すると、上記第1のグラフィックス命令が、上記グラフィックス処理ユニットによりサポートされる形式に変更されることができるか、又は上記グラフィックス処理ユニットによりサポートされる機能的に等価なグラフィックス命令によって置き換えられることができるかどうかを判定させる。
実例60は、実例59であることができ、上記グラフィックス命令パーサは、上記グラフィックス命令のうちの第1のグラフィックス命令が上記グラフィックス処理ユニットによりサポートされていないと判定すると、上記第1のグラフィックス命令が、上記グラフィックス処理ユニットによりサポートされる形式に変更されることができるか、又は上記グラフィックス処理ユニットによりサポートされる機能的に等価なグラフィックス命令によって置き換えられることができるかどうかを更に判定し得る。
実例61は、実例60であることができ、上記グラフィックス命令パーサは、上記第1のグラフィックス命令が上記グラフィックス処理ユニットによりサポートされる形式に変更されることができると判定すると、上記第1のグラフィックス命令を上記グラフィックス処理ユニットによりサポートされる形式に更に変更し得るか、又は上記グラフィックス処理ユニットによりサポートされる他の機能的に等価なグラフィックス命令の存在を判定すると、上記第1のグラフィックス命令を上記他の機能的に等価なグラフィックス命令によって更に置き換え得る。
実例62は、実例59から実例61のいずれか1つであることができ、上記コンピュータシステムは、上記仮想マシンのうちの少なくとも第1の仮想マシンにおいてインスタンス化されるべきグラフィックスプロキシライブラリであって、上記第1の仮想マシンのための上記グラフィックス処理ユニットを抽象化するグラフィックスアプリケーションプログラミングインタフェースのコンテキストを維持することができるグラフィックスプロキシライブラリを更に実施させられ得る。
実例63は、実例62であることができ、上記グラフィックスプロキシライブラリは、維持される上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニット用であるかどうかを更に検出することができ、上記2つのグラフィックス処理ユニットは異なるグラフィックス処理ユニットである。
実例64は、実例63であることができ、上記グラフィックスプロキシライブラリは、上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニットのために維持されていることを検出すると、上記第1の仮想マシンが上記計算のための他の装置からライブマイグレートされてしまう前に、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される上記異なるグラフィックス処理ユニット用の上記グラフィックスプロキシライブラリにより維持されるコンテキストを使用して、上記グラフィックスアプリケーションプログラミングインタフェースの上記コンテキストを構成し得る。
実例65は、命令が記憶された少なくとも1つのコンピュータ読み取り可能な媒体であることができ、計算システムのプロセッサによる実行に応答して、上記命令は上記計算システムに、グラフィックスプロキシライブラリを実施させて、上記計算システムの複数の仮想マシンのうちの第1の仮想マシンのために、上記計算システムのグラフィックス処理ユニットを抽象化するグラフィックスアプリケーションプログラミングインタフェースのコンテキストを維持させるとともに、維持される上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニット用であるかどうかを検出させる。
実例66は、実例65であることができ、上記グラフィックスプロキシライブラリは、上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化されている異なるグラフィックス処理ユニットのために維持されていることを検出すると、上記第1の仮想マシンが上記計算のための他の装置からライブマイグレートされてしまう前に、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される上記異なるグラフィックス処理ユニット用の上記グラフィックスプロキシライブラリにより維持されるコンテキストを使用して、上記グラフィックスアプリケーションプログラミングインタフェースの上記コンテキストを構成し得る。
実例67は、計算のための装置であることができ、1つ又は複数の汎用プロセッサと、グラフィックス処理ユニットと、上記1つ又は複数の汎用プロセッサ及び上記グラフィックス処理ユニットに結合されたシステムメモリと、上記1つ又は複数の汎用プロセッサによりホストされる仮想マシンを管理するための仮想マシンモニタ手段とを備える。上記仮想マシンモニタ手段は、上記1つ又は複数の汎用プロセッサにより実行されるべき上記仮想マシンのアプリケーションの命令により上記システムメモリのアクセスを管理するためのメモリ管理手段を含み得る。アクセスの管理は、上記システムメモリの変更されたメモリページのトラッキングを含み得る。上記仮想マシンモニタ手段は、上記アプリケーションにより上記グラフィックス処理ユニットに対して発行されたグラフィックス命令を分析して、上記グラフィックス命令により引き起こされた上記システムメモリに対する書き込みを検出し、上記メモリ管理手段による変更されたメモリページの上記トラッキングを増やすためのグラフィックス命令パージング(parsing)手段を更に含み得る。
実例68は、実例67であることができ、上記仮想マシンモニタ手段は、上記仮想マシンのうちの1つ又は複数を計算のための他の装置に選択的にライブマイグレートするためのライブマイグレーション手段であって、ライブマイグレートされている仮想マシンの現在のメモリ内容の上記他の装置に対する供給を含み、上記グラフィックス命令パーサにより増やされた、上記メモリマネージャによりトラッキングされる変更されたメモリページを利用する、ライブマイグレーション手段を更に含み得る。
実例69は、実例67又は実例68であることができ、上記グラフィックス命令パージング手段は、システムメモリに対する書き込みを検出すると、システムメモリに対する上記書き込みのゲストグラフィックスメモリアドレスを取得するための手段を備え得る。
実例70は、実例69であることができ、上記グラフィックス命令パージング手段は、システムメモリに対する上記書き込みに関して取得された上記ゲストグラフィックスメモリアドレスに少なくとも部分的に基づいて、システムメモリに対する上記書き込みのホストグラフィックスメモリアドレスを計算するための手段を備え得る。
実例71は、実例70であることができ、上記グラフィックス命令パージング手段は、システムメモリに対する上記書き込みに関して計算された上記ホストグラフィックスメモリアドレスに少なくとも部分的に基づいて、システムメモリに対する上記書き込みのシステムメモリアドレスを取得するための手段を備え得る。
実例72は、実例71であることができ、上記グラフィックス命令パージング手段は、上記システムメモリアドレスを含む上記メモリページのうちの1つをダーティとしてマークするための手段を備え得る。
実例73は、実例67から実例72のいずれか1つであることができ、上記グラフィックス命令パージング手段は、上記グラフィックス処理ユニットによりサポートされるグラフィックス命令を識別するための手段を備え得る。
実例74は、実例73であることができ、上記グラフィックス命令パージング手段は、上記グラフィックス処理ユニットのグラフィックスプロセッサタイプを識別するための手段を備え得る。
実例75は、実例67から実例72のいずれか1つであることができ、上記グラフィックス命令パージング手段は、上記グラフィックス命令を分析して、上記グラフィックス命令が上記グラフィックス処理ユニットによりサポートされているかどうかを判定するための手段を備え得る。
実例70は、実例75であることができ、上記グラフィックス命令パージング手段は、上記グラフィックス命令のうちの第1のグラフィックス命令が上記グラフィックス処理ユニットによりサポートされていないと判定すると、上記第1のグラフィックス命令が、上記グラフィックス処理ユニットによりサポートされる形式に変更されることができるか、又は上記グラフィックス処理ユニットによりサポートされる機能的に等価なグラフィックス命令によって置き換えられることができるかどうかを判定するための手段を備え得る。
実例77は、実例76であることができ、上記グラフィックス命令パージング手段は、上記第1のグラフィックス命令が上記グラフィックス処理ユニットによりサポートされる形式に変更されることができると判定すると、上記第1のグラフィックス命令を上記グラフィックス処理ユニットによりサポートされる形式に変更するか、又は上記グラフィックス処理ユニットによりサポートされる他の機能的に等価なグラフィックス命令の存在を判定すると、上記第1のグラフィックス命令を上記他の機能的に等価なグラフィックス命令によって置き換えるための手段を備え得る。
実例78は、実例67から実例72のいずれか1つであることができ、上記仮想マシンのうちの少なくとも第1の仮想マシンにおいてインスタンス化されるべきグラフィックスプロキシライブラリ手段であって、上記第1の仮想マシンのための上記グラフィックス処理ユニットを抽象化するグラフィックスアプリケーションプログラミングインタフェースのコンテキストを維持するためのグラフィックスプロキシライブラリ手段を更に含む。
実例79は、実例78であることができ、上記グラフィックスプロキシライブラリ手段は、維持される上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニット用であるかどうかを検出するための手段を備え得る。
実例80は、実例79であることができ、上記グラフィックスプロキシライブラリ手段は、維持される上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニット用であることを検出すると、上記第1の仮想マシンが上記計算のための他の装置からライブマイグレートされてしまう前に、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される上記異なるグラフィックス処理ユニット用の上記グラフィックスプロキシライブラリにより維持されるコンテキストを使用して、上記グラフィックスアプリケーションプログラミングインタフェースの上記コンテキストを構成するための手段を備え得る。
実例81は、計算のための装置であることができ、1つ又は複数の汎用プロセッサと、グラフィックス処理ユニットと、上記1つ又は複数の汎用プロセッサ及び上記グラフィックス処理ユニットに結合されたシステムメモリと、上記1つ又は複数の汎用プロセッサによりホストされる仮想マシンを管理するための仮想マシンモニタ手段とを備える。上記仮想マシンモニタは、上記1つ又は複数の汎用プロセッサにより実行される上記仮想マシンのアプリケーションの命令により上記システムメモリのアクセスを管理するためのメモリ管理手段と、上記アプリケーションにより上記グラフィックス処理ユニットに対して発行されたグラフィックス命令を分析して、上記グラフィックス命令が上記グラフィックス処理ユニットによりサポートされているかどうかを判定するためのグラフィックス命令パージング手段とを含み得る。
実例82は、実例81であることができ、上記グラフィックス命令パージング手段は、上記グラフィックス命令のうちの第1のグラフィックス命令が上記グラフィックス処理ユニットによりサポートされていないと判定すると、上記第1のグラフィックス命令が、上記グラフィックス処理ユニットによりサポートされる形式に変更されることができるか、又は上記グラフィックス処理ユニットによりサポートされる機能的に等価なグラフィックス命令によって置き換えられることができるかどうかを判定するための手段を備え得る。
実例83は、実例82であることができ、上記グラフィックス命令パージング手段は、上記第1のグラフィックス命令が上記グラフィックス処理ユニットによりサポートされる形式に変更されることができると判定すると、上記第1のグラフィックス命令を上記グラフィックス処理ユニットによりサポートされる形式に変更するか、又は上記グラフィックス処理ユニットによりサポートされる他の機能的に等価なグラフィックス命令の存在を判定すると、上記第1のグラフィックス命令を上記他の機能的に等価なグラフィックス命令によって置き換えるための手段を備え得る。
実例84は、実例81から実例83のいずれか1つであることができ、上記仮想マシンのうちの少なくとも第1の仮想マシンにおいてインスタンス化されるべきグラフィックスプロキシライブラリ手段であって、上記第1の仮想マシンのための上記グラフィックス処理ユニットを抽象化するグラフィックスアプリケーションプログラミングインタフェースのコンテキストを維持するためのグラフィックスプロキシライブラリ手段を更に含む。
実例85は、実例84であることができ、上記グラフィックスプロキシライブラリ手段は、維持される上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニット用であるかどうかを検出するための手段を備えることができ、上記2つのグラフィックス処理ユニットは異なるグラフィックス処理ユニットである。
実例86は、実例85であることができ、上記グラフィックスプロキシライブラリ手段は、上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニットのために維持されていることを検出すると、上記第1の仮想マシンが上記計算のための他の装置からライブマイグレートされてしまう前に、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される上記異なるグラフィックス処理ユニット用の上記グラフィックスプロキシライブラリにより維持されるコンテキストを使用して、上記グラフィックスアプリケーションプログラミングインタフェースの上記コンテキストを構成するための手段を備え得る。
実例87は、計算のための装置であることができ、1つ又は複数の汎用プロセッサと、グラフィックス処理ユニットと、上記1つ又は複数の汎用プロセッサ及び上記グラフィックス処理ユニットに結合されたシステムメモリと、上記1つ又は複数の汎用プロセッサによりホストされる仮想マシンを管理するための仮想マシンモニタ手段と、上記仮想マシンのうちの少なくとも第1の仮想マシンにおいてインスタンス化されるべきグラフィックスプロキシライブラリ手段であって、上記第1の仮想マシンのための上記グラフィックス処理ユニットを抽象化するグラフィックスアプリケーションプログラミングインタフェースのコンテキストを維持するためのグラフィックスプロキシライブラリ手段とを含む。
実例88は、実例87であることができ、上記グラフィックスプロキシライブラリ手段は、維持される上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニット用であるかどうかを検出するための手段を備え得る。
実例89は、実例88であることができ、上記グラフィックスプロキシライブラリ手段は、上記コンテキストが、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化されている異なるグラフィックス処理ユニットのために維持されていることを検出すると、上記第1の仮想マシンが上記計算のための他の装置からライブマイグレートされてしまう前に、上記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される上記異なるグラフィックス処理ユニット用の上記グラフィックスプロキシライブラリにより維持されるコンテキストを使用して、上記グラフィックスアプリケーションプログラミングインタフェースの上記コンテキストを構成するための手段を備え得る。
本開示の精神又は範囲から逸脱することなく、開示された装置及び関連する方法の開示された実施例において、様々な変更及び変形が可能であることは、当業者には明らかであろう。したがって、本開示は、変更及び変形が任意の請求項及びそれらの等価物の範囲内に入ることを条件として、上記で開示された実施例の変更及び変形を包含することが意図される。

Claims (26)

  1. 計算のための装置であって、
    1つ又は複数の汎用プロセッサと、
    グラフィックス処理ユニットと、
    前記1つ又は複数の汎用プロセッサ及び前記グラフィックス処理ユニットに結合されたシステムメモリと、
    前記1つ又は複数の汎用プロセッサによりホストされる仮想マシンを管理する仮想マシンモニタとを備え、前記仮想マシンモニタが、
    前記1つ又は複数の汎用プロセッサにより実行されるべき前記仮想マシンのアプリケーションの命令により前記システムメモリのアクセスを管理するメモリマネージャであって、アクセスの管理が前記システムメモリの変更されたメモリページのトラッキングを含む、メモリマネージャと、
    前記アプリケーションにより前記グラフィックス処理ユニットに対して発行されたグラフィックス命令を分析して、前記グラフィックス命令により引き起こされた前記システムメモリに対する書き込みを検出し、前記メモリマネージャによる変更されたメモリページの前記トラッキングを増やす、グラフィックス命令パーサとを含む、装置。
  2. 前記仮想マシンモニタが、前記仮想マシンのうちの1つ又は複数を計算のための他の装置に選択的にライブマイグレートするライブマイグレーション機能であって、ライブマイグレートされている仮想マシンの現在のメモリ内容の前記他の装置に対する供給を含み、前記グラフィックス命令パーサにより増やされた、前記メモリマネージャによりトラッキングされる変更されたメモリページを利用する、ライブマイグレーション機能を更に含む、請求項1に記載の装置。
  3. 前記グラフィックス命令パーサが、システムメモリに対する書き込みを検出すると、システムメモリに対する前記書き込みのゲストグラフィックスメモリアドレスを取得することができる、請求項1に記載の装置。
  4. 前記グラフィックス命令パーサが、システムメモリに対する前記書き込みに関して取得された前記ゲストグラフィックスメモリアドレスに少なくとも部分的に基づいて、システムメモリに対する前記書き込みのホストグラフィックスメモリアドレスを更に計算することができる、請求項3に記載の装置。
  5. 前記グラフィックス命令パーサが、システムメモリに対する前記書き込みに関して計算された前記ホストグラフィックスメモリアドレスに少なくとも部分的に基づいて、システムメモリに対する前記書き込みのシステムメモリアドレスを更に取得することができる、請求項4に記載の装置。
  6. 前記グラフィックス命令パーサが、前記システムメモリアドレスを含む前記メモリページのうちの1つをダーティとして更にマークすることができる、請求項5に記載の装置。
  7. 前記グラフィックス命令パーサが、前記グラフィックス命令のうちの第1のグラフィックス命令が前記グラフィックス処理ユニットによりサポートされていないと判定すると、前記第1のグラフィックス命令が、前記グラフィックス処理ユニットによりサポートされる形式に変更されることができるか、又は前記グラフィックス処理ユニットによりサポートされる機能的に等価なグラフィックス命令によって置き換えられることができるかどうかを更に判定することができる、請求項1から請求項6のいずれか一項に記載の装置。
  8. 前記グラフィックス命令パーサが、前記第1のグラフィックス命令が前記グラフィックス処理ユニットによりサポートされる形式に変更されることができると判定すると、前記第1のグラフィックス命令を前記グラフィックス処理ユニットによりサポートされる形式に更に変更することができるか、又は前記グラフィックス処理ユニットによりサポートされる他の機能的に等価なグラフィックス命令の存在を判定すると、前記第1のグラフィックス命令を前記他の機能的に等価なグラフィックス命令によって更に置き換えることができる、請求項7に記載の装置。
  9. 前記仮想マシンのうちの少なくとも第1の仮想マシンにおいてインスタンス化されるべきグラフィックスプロキシライブラリであって、前記第1の仮想マシンのための前記グラフィックス処理ユニットを抽象化するグラフィックスアプリケーションプログラミングインタフェースのコンテキストを維持することができるグラフィックスプロキシライブラリを更に備える、請求項1から請求項6のいずれか一項に記載の装置。
  10. 計算のための装置であって、
    1つ又は複数の汎用プロセッサと、
    グラフィックス処理ユニットと、
    前記1つ又は複数の汎用プロセッサ及び前記グラフィックス処理ユニットに結合されたシステムメモリと、
    前記1つ又は複数の汎用プロセッサによりホストされる仮想マシンを管理する仮想マシンモニタとを備え、前記仮想マシンモニタが、
    前記1つ又は複数の汎用プロセッサにより実行される前記仮想マシンのアプリケーションの命令により前記システムメモリのアクセスを管理するメモリマネージャと、
    前記アプリケーションにより前記グラフィックス処理ユニットに対して発行されたグラフィックス命令を分析して、前記グラフィックス命令が前記グラフィックス処理ユニットによりサポートされているかどうかを判定する、グラフィックス命令パーサとを含み、
    前記グラフィックス命令パーサは、前記グラフィックス命令のうちの第1のグラフィックス命令が前記グラフィックス処理ユニットによりサポートされていないと判定すると、前記第1のグラフィックス命令が、前記グラフィックス処理ユニットによりサポートされる形式に変更されることができるか、又は前記グラフィックス処理ユニットによりサポートされる機能的に等価なグラフィックス命令によって置き換えられることができるかどうかを更に判定することができる、装置。
  11. 前記グラフィックス命令パーサが、前記第1のグラフィックス命令が前記グラフィックス処理ユニットによりサポートされる形式に変更されることができると判定すると、前記第1のグラフィックス命令を前記グラフィックス処理ユニットによりサポートされる形式に更に変更することができるか、又は前記グラフィックス処理ユニットによりサポートされる他の機能的に等価なグラフィックス命令の存在を判定すると、前記第1のグラフィックス命令を前記他の機能的に等価なグラフィックス命令によって更に置き換えることができる、請求項10に記載の装置。
  12. 前記仮想マシンのうちの少なくとも第1の仮想マシンにおいてインスタンス化されるべきグラフィックスプロキシライブラリであって、前記第1の仮想マシンのための前記グラフィックス処理ユニットを抽象化するグラフィックスアプリケーションプログラミングインタフェースのコンテキストを維持することができるグラフィックスプロキシライブラリを更に備える、請求項10又は11に記載の装置。
  13. 計算のための装置であって、
    1つ又は複数の汎用プロセッサと、
    グラフィックス処理ユニットと、
    前記1つ又は複数の汎用プロセッサ及び前記グラフィックス処理ユニットに結合されたシステムメモリと、
    前記1つ又は複数の汎用プロセッサによりホストされる仮想マシンを管理する仮想マシンモニタと、
    前記仮想マシンのうちの少なくとも第1の仮想マシンにおいてインスタンス化されるべきグラフィックスプロキシライブラリであって、前記第1の仮想マシンのための前記グラフィックス処理ユニットを抽象化するグラフィックスアプリケーションプログラミングインタフェースのコンテキストを維持することができるグラフィックスプロキシライブラリと
    を備え、
    前記仮想マシンモニタが、
    前記1つ又は複数の汎用プロセッサにより実行される前記仮想マシンのアプリケーションの命令により前記システムメモリのアクセスを管理するメモリマネージャと、
    前記アプリケーションにより前記グラフィックス処理ユニットに対して発行されたグラフィックス命令を分析して、前記グラフィックス命令が前記グラフィックス処理ユニットによりサポートされているかどうかを判定する、グラフィックス命令パーサとを含む、
    装置。
  14. 計算のための装置であって、
    1つ又は複数の汎用プロセッサと、
    グラフィックス処理ユニットと、
    前記1つ又は複数の汎用プロセッサ及び前記グラフィックス処理ユニットに結合されたシステムメモリと、
    前記1つ又は複数の汎用プロセッサによりホストされる仮想マシンを管理する仮想マシンモニタと、
    前記仮想マシンのうちの少なくとも第1の仮想マシンにおいてインスタンス化されるべきグラフィックスプロキシライブラリであって、前記第1の仮想マシンのための前記グラフィックス処理ユニットを抽象化するグラフィックスアプリケーションプログラミングインタフェースのコンテキストを維持することができるグラフィックスプロキシライブラリとを備える、装置。
  15. 前記グラフィックスプロキシライブラリが、維持される前記コンテキストが、前記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニット用であるかどうかを更に検出することができる、請求項14に記載の装置。
  16. 前記グラフィックスプロキシライブラリが、前記コンテキストが、前記グラフィックスアプリケーションプログラミングインタフェースにより抽象化されている異なるグラフィックス処理ユニットのために維持されていることを検出すると、前記第1の仮想マシンが前記計算のための他の装置からライブマイグレートされてしまう前に、前記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される前記異なるグラフィックス処理ユニット用の前記グラフィックスプロキシライブラリにより維持されるコンテキストを使用して、前記グラフィックスアプリケーションプログラミングインタフェースの前記コンテキストを構成することができる、請求項15に記載の装置。
  17. 計算のための方法であって、
    計算システムのグラフィックス命令パーサにより、前記計算システムの仮想マシンのアプリケーションによって前記計算システムのグラフィックス処理ユニットに対して発行されたグラフィックス命令を分析するステップと、
    前記グラフィックス命令パーサにより、前記グラフィックス命令により引き起こされた前記計算システムのシステムメモリに対する書き込みを検出するステップと、
    システムメモリに対する書き込みを検出すると、前記グラフィックス命令パーサにより、前記計算システムの仮想マシンモニタのメモリマネージャによる変更されたメモリページのトラッキングを増やすステップとを含む、方法。
  18. 前記仮想マシンのうちの1つ又は複数を他の計算システムにライブマイグレートするステップであって、ライブマイグレートされている仮想マシンの現在のメモリ内容の前記他の計算システムに対する供給を含み、前記グラフィックス命令パーサにより増やされた、前記メモリマネージャによりトラッキングされる変更されたメモリページを利用する、ステップを更に含む、請求項17に記載の方法。
  19. 前記グラフィックス命令パーサにより、前記グラフィックス命令のうちの第1のグラフィックス命令が前記グラフィックス処理ユニットによりサポートされていないと判定すると、前記第1のグラフィックス命令が、前記グラフィックス処理ユニットによりサポートされる形式に変更されることができるか、又は前記グラフィックス処理ユニットによりサポートされる機能的に等価なグラフィックス命令によって置き換えられることができるかどうかを判定するステップを更に含む、請求項17に記載の方法。
  20. 前記グラフィックス命令パーサにより、前記第1のグラフィックス命令が前記グラフィックス処理ユニットによりサポートされる形式に変更されることができると判定すると、前記第1のグラフィックス命令を前記グラフィックス処理ユニットによりサポートされる形式に変更するステップか、又は前記グラフィックス処理ユニットによりサポートされる他の機能的に等価なグラフィックス命令の存在を判定すると、前記第1のグラフィックス命令を前記他の機能的に等価なグラフィックス命令によって置き換えるステップを更に含む、請求項19に記載の方法。
  21. 前記仮想マシンのうちの第1の仮想マシンにおけるグラフィックスプロキシライブラリにより、前記第1の仮想マシンのための前記グラフィックス処理ユニットを抽象化するグラフィックスアプリケーションプログラミングインタフェースのコンテキストを維持するステップを更に含む、請求項17に記載の方法。
  22. 前記グラフィックスプロキシライブラリにより、維持される前記コンテキストが、前記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニット用であるかどうかを検出するステップを更に含む、請求項21に記載の方法。
  23. 前記グラフィックスプロキシライブラリにより、維持される前記コンテキストが、前記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される異なるグラフィックス処理ユニット用であることを検出すると、前記第1の仮想マシンが前記計算システムにライブマイグレートされてしまう前に、前記グラフィックスアプリケーションプログラミングインタフェースにより抽象化される前記異なるグラフィックス処理ユニット用の前記グラフィックスプロキシライブラリにより維持されるコンテキストを使用して、前記グラフィックスアプリケーションプログラミングインタフェースの前記コンテキストを構成するステップを更に含む、請求項22に記載の方法。
  24. 命令を有する少なくとも1つのコンピュータプログラムであって、計算システムのプロセッサによる実行に応答して、前記命令が前記計算システムに、グラフィックス命令パーサを実施させて請求項17から請求項20のいずれか一項に記載の方法を実行させるか、又はグラフィックス命令パーサ及びグラフィックスプロキシライブラリを実施させて請求項21から請求項23のいずれか一項に記載の方法を実行させる、コンピュータプログラム。
  25. 計算のための装置であって、
    1つ又は複数の汎用プロセッサと、
    グラフィックス処理ユニットと、
    前記1つ又は複数の汎用プロセッサ及び前記グラフィックス処理ユニットに結合されたシステムメモリと、
    前記1つ又は複数の汎用プロセッサによりホストされる仮想マシンを管理するための仮想マシンモニタ手段とを備え、前記仮想マシンモニタ手段が、
    前記1つ又は複数の汎用プロセッサにより実行されるべき前記仮想マシンのアプリケーションの命令により前記システムメモリのアクセスを管理するためのメモリ管理手段であって、アクセスの管理が前記システムメモリの変更されたメモリページのトラッキングを含む、メモリ管理手段と、
    前記アプリケーションにより前記グラフィックス処理ユニットに対して発行されたグラフィックス命令を分析して、前記グラフィックス命令により引き起こされた前記システムメモリに対する書き込みを検出し、前記メモリ管理手段による変更されたメモリページの前記トラッキングを増やすためのグラフィックス命令パージング手段であって、前記グラフィックス命令のうちの第1のグラフィックス命令が前記グラフィックス処理ユニットによりサポートされていないと判定すると、前記第1のグラフィックス命令が、前記グラフィックス処理ユニットによりサポートされる形式に変更されることができるか、又は前記グラフィックス処理ユニットによりサポートされる機能的に等価なグラフィックス命令によって置き換えられることができるかどうかを判定するための手段を含む、グラフィックス命令パージング手段と、
    前記仮想マシンのうちの少なくとも第1の仮想マシンにおいてインスタンス化されるべきグラフィックスプロキシライブラリ手段であって、前記第1の仮想マシンのための前記グラフィックス処理ユニットを抽象化するグラフィックスアプリケーションプログラミングインタフェースのコンテキストを維持するためのグラフィックスプロキシライブラリ手段とを含む、装置。
  26. 請求項24に記載のコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
JP2017525532A 2014-11-12 2014-11-12 グラフィックス仮想化を用いたホストコンピュータからの/ホストコンピュータへの仮想マシンのライブマイグレーション Active JP6472881B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/090883 WO2016074166A1 (en) 2014-11-12 2014-11-12 Live migration of virtual machines from/to host computers with graphics virtualization

Publications (2)

Publication Number Publication Date
JP2018500646A JP2018500646A (ja) 2018-01-11
JP6472881B2 true JP6472881B2 (ja) 2019-02-20

Family

ID=55953571

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017525532A Active JP6472881B2 (ja) 2014-11-12 2014-11-12 グラフィックス仮想化を用いたホストコンピュータからの/ホストコンピュータへの仮想マシンのライブマイグレーション

Country Status (5)

Country Link
US (2) US9690615B2 (ja)
EP (1) EP3218803B1 (ja)
JP (1) JP6472881B2 (ja)
CN (1) CN107111498B (ja)
WO (1) WO2016074166A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10768959B2 (en) * 2015-11-24 2020-09-08 Red Hat Israel, Ltd. Virtual machine migration using memory page hints
EP3223456B1 (en) * 2016-03-24 2018-12-19 Alcatel Lucent Method for migration of virtual network function
CN109690482A (zh) * 2016-09-05 2019-04-26 华为技术有限公司 虚拟机图形处理器的分配
CN106648826B (zh) * 2016-09-09 2018-06-19 北京百度网讯科技有限公司 用于热迁移虚拟机的方法和装置
US10447752B2 (en) * 2016-11-22 2019-10-15 Vmware, Inc. Live migration of virtualized video stream decoding
WO2018176393A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Techniques for virtual machine transfer and resource management
US10375169B1 (en) * 2017-05-24 2019-08-06 United States Of America As Represented By The Secretary Of The Navy System and method for automatically triggering the live migration of cloud services and automatically performing the triggered migration
WO2019000358A1 (en) * 2017-06-30 2019-01-03 Intel Corporation LIVE MIGRATING ASSISTANCE TECHNIQUES FOR VIRTUALIZING GRAPHICS PROCESSING UNIT
WO2019061014A1 (en) 2017-09-26 2019-04-04 Intel Corporation METHODS AND APPARATUS FOR PROCESSING CONTROLS FROM VIRTUAL MACHINES
US10592271B1 (en) * 2018-03-05 2020-03-17 Cavium, Llc Methods and systems for tracking a virtual memory of a virtual machine
JP7314935B2 (ja) * 2018-06-05 2023-07-26 日本電気株式会社 システム、サーバ、検証方法及びプログラム
CN110968393B (zh) * 2018-09-30 2023-05-02 阿里巴巴集团控股有限公司 虚拟机的迁移处理方法、存储介质、计算设备
US11579942B2 (en) * 2020-06-02 2023-02-14 Vmware, Inc. VGPU scheduling policy-aware migration
US11915060B2 (en) * 2021-03-25 2024-02-27 Dell Products L.P. Graphics processing management system
US11966343B2 (en) 2021-07-19 2024-04-23 Samsung Electronics Co., Ltd. Universal mechanism to access and control a computational device

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US42034A (en) * 1864-03-22 Improvement in saws for felling trees
US7140024B2 (en) * 2002-07-29 2006-11-21 Silicon Graphics, Inc. System and method for managing graphics applications
US7119808B2 (en) * 2003-07-15 2006-10-10 Alienware Labs Corp. Multiple parallel processor computer graphics system
US6868874B2 (en) * 2003-07-21 2005-03-22 Deere & Company Locking fuel tank cover
WO2006117683A2 (en) * 2005-01-25 2006-11-09 Lucid Information Technology, Ltd. Graphics processing and display system employing multiple graphics cores on a silicon chip of monolithic construction
US7163470B2 (en) * 2004-06-25 2007-01-16 Callaway Golf Company Golf club head
US9058292B2 (en) * 2004-12-29 2015-06-16 Intel Corporation System and method for one step address translation of graphics addresses in virtualization
US8274518B2 (en) * 2004-12-30 2012-09-25 Microsoft Corporation Systems and methods for virtualizing graphics subsystems
US7650603B2 (en) * 2005-07-08 2010-01-19 Microsoft Corporation Resource management for virtualization of graphics adapters
US7545381B2 (en) * 2005-11-10 2009-06-09 Via Technologies, Inc. Interruptible GPU and method for context saving and restoring
US8065687B2 (en) * 2007-01-05 2011-11-22 Moka5, Inc. Bypass virtualization
US9153211B1 (en) * 2007-12-03 2015-10-06 Nvidia Corporation Method and system for tracking accesses to virtual addresses in graphics contexts
US8570333B2 (en) * 2008-12-11 2013-10-29 Nvidia Corporation Method and system for enabling managed code-based application program to access graphics processing unit
WO2010116402A1 (ja) * 2009-03-30 2010-10-14 富士通株式会社 情報処理装置
JP2010272055A (ja) * 2009-05-25 2010-12-02 Sony Corp 情報処理装置および方法、並びにプログラム
JP5515520B2 (ja) * 2009-08-31 2014-06-11 日本電気株式会社 サーバ装置及び画面データの送信方法
US8370560B2 (en) 2009-11-16 2013-02-05 International Business Machines Corporation Symmetric live migration of virtual machines
CN102081552A (zh) * 2009-12-01 2011-06-01 华为技术有限公司 一种物理机到虚拟机的在线迁移方法、装置和系统
EP3002683B1 (en) * 2009-12-14 2017-07-12 Citrix Systems Inc. Methods and systems for communicating between trusted and non-trusted virtual machines
JP2011221634A (ja) * 2010-04-06 2011-11-04 Hitachi Ltd 計算機システム、論理区画管理方法及び論理分割処理プログラム
CN102971706B (zh) * 2010-05-10 2016-08-10 思杰系统有限公司 将信息从安全虚拟机重定向到不安全虚拟机
US8621486B2 (en) * 2010-06-30 2013-12-31 Hewlett-Packard Development Company, L.P. Significance level automation
US8489699B2 (en) * 2010-08-13 2013-07-16 Vmware, Inc. Live migration of virtual machine during direct access to storage over SR IOV adapter
US20120056891A1 (en) * 2010-09-02 2012-03-08 Microsoft Corporation Migrating and save restoring a virtual 3d graphics device
US9069622B2 (en) * 2010-09-30 2015-06-30 Microsoft Technology Licensing, Llc Techniques for load balancing GPU enabled virtual machines
JP5808424B2 (ja) * 2010-12-15 2015-11-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ネットワーク対応アプリケーションのためのハードウェア・アクセラレーテッド・グラフィックス
US8830228B2 (en) * 2010-12-20 2014-09-09 Microsoft Corporation Techniques for enabling remote management of servers configured with graphics processors
US8356120B2 (en) * 2011-01-07 2013-01-15 Red Hat Israel, Ltd. Mechanism for memory state restoration of virtual machine (VM)-controlled peripherals at a destination host machine during migration of the VM
US9022875B2 (en) * 2011-03-31 2015-05-05 Dennis Wong Golf putter with clear alignment aid insert
US10310879B2 (en) * 2011-10-10 2019-06-04 Nvidia Corporation Paravirtualized virtual GPU
CN102681913A (zh) * 2011-12-21 2012-09-19 中兴通讯股份有限公司 一种虚拟机到虚拟机热迁移的方法及装置
CN103295147B (zh) * 2012-03-02 2017-02-15 华为技术有限公司 投放广告的方法、装置和系统
US9311169B2 (en) * 2012-05-02 2016-04-12 Nvidia Corporation Server based graphics processing techniques
JP5980335B2 (ja) * 2012-08-22 2016-08-31 株式会社日立製作所 仮想計算機システム、管理計算機及び仮想計算機管理方法
US9298490B2 (en) * 2012-12-20 2016-03-29 Vmware, Inc. Managing a data structure for allocating graphics processing unit resources to virtual machines
US9384522B2 (en) * 2012-12-28 2016-07-05 Qualcomm Incorporated Reordering of command streams for graphical processing units (GPUs)
US9317326B2 (en) * 2013-11-27 2016-04-19 Vmware, Inc. Consistent migration of a group of virtual machines using source and destination group messaging
US9563571B2 (en) * 2014-04-25 2017-02-07 Apple Inc. Intelligent GPU memory pre-fetching and GPU translation lookaside buffer management
US9898795B2 (en) * 2014-06-19 2018-02-20 Vmware, Inc. Host-based heterogeneous multi-GPU assignment
US9898794B2 (en) * 2014-06-19 2018-02-20 Vmware, Inc. Host-based GPU resource scheduling
GB201415796D0 (en) * 2014-09-07 2014-10-22 Technion Res & Dev Foundation Logical-to-physical block mapping inside the disk controller: accessing data objects without operating system intervention
US9811366B2 (en) * 2014-09-12 2017-11-07 Vmware, Inc. Dynamically using system memory as video memory for virtual graphics processing units

Also Published As

Publication number Publication date
US10324748B2 (en) 2019-06-18
WO2016074166A1 (en) 2016-05-19
JP2018500646A (ja) 2018-01-11
US20160299773A1 (en) 2016-10-13
CN107111498A (zh) 2017-08-29
EP3218803A4 (en) 2018-07-11
CN107111498B (zh) 2020-12-29
US9690615B2 (en) 2017-06-27
US20180024855A1 (en) 2018-01-25
EP3218803A1 (en) 2017-09-20
EP3218803B1 (en) 2021-01-06

Similar Documents

Publication Publication Date Title
JP6472881B2 (ja) グラフィックス仮想化を用いたホストコンピュータからの/ホストコンピュータへの仮想マシンのライブマイグレーション
JP6826586B2 (ja) 従属性に基づくコンテナ・デプロイメント方法、システム、およびプログラム
JP5960259B2 (ja) 仮想マシン・イメージ分析
CN107209705B (zh) 用于计算环境的活动回滚
US20130232501A1 (en) System and method to reduce memory usage by optimally placing vms in a virtualized data center
CN110737895A (zh) 使用静态和动态恶意软件分析来扩展恶意软件的动态检测
US9588793B2 (en) Creating new virtual machines based on post-boot virtual machine snapshots
US9535729B2 (en) Live application mobility from one operating system level to an updated operating system level and applying overlay files to the updated operating system
US9740519B2 (en) Cross hypervisor migration of virtual machines with VM functions
Saltaformaggio et al. {DSCRETE}: Automatic rendering of forensic information from memory images via application logic reuse
US20220035905A1 (en) Malware analysis through virtual machine forking
JP2015530662A5 (ja)
US20200272482A1 (en) Unikernel provisioning
US20150347166A1 (en) Paravirtualized migration counter for migrating a virtual cpu to a different physical cpu
US9898307B2 (en) Starting application processors of a virtual machine
US9336216B2 (en) Command-based data migration
US10503659B2 (en) Post-copy VM migration speedup using free page hinting
US20170199761A1 (en) Apparatus and method to correct an execution time of a program executed by a virtual machine
US9378057B2 (en) Paravirtualized migration counter
US9436489B2 (en) Virtual machine data replication with shared resources
US11500661B2 (en) Performing an application snapshot using process virtual machine resources
US11113049B2 (en) Deploying applications in a computing environment
US11500560B2 (en) Method to suggest best SCM configuration based on resource proportionality in a de-duplication based backup storage
US20210303316A1 (en) Unikernel provisioning
US20230080221A1 (en) Source code editing combining edit and continue with hot reload

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171013

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180723

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180731

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20181026

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181219

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: 20181225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190123

R150 Certificate of patent or registration of utility model

Ref document number: 6472881

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250