(57)【要約】  いくつかの実施例において、仮想化をサポートするシステムにおいて仮想マシンにアサインされた入力／出力（Ｉ／Ｏ）装置に対するゲストグラフィックスメモリアドレス要求を受け取ることと、物理ゲストグラフィックスメモリアドレスからホスト物理メモリアドレスへの変換をグラフィックスメモリ変換テーブルにインストールすることとを含むシステムおよび方法である。【選択図】図７
2008527508.tif 000002
【特許請求の範囲】
【請求項１】
仮想化をサポートするシステムにおいて仮想マシンにアサインされた入力／出力（Ｉ／Ｏ）装置に対するゲストグラフィックスメモリアドレス要求を受け取ることと、
物理ゲストグラフィックスメモリアドレスからホスト物理メモリアドレスへの変換をグラフィックスメモリ変換テーブルにインストールすることと
を含む方法。
【請求項２】
前記グラフィックスメモリ変換テーブルは、グラフィックス変換テーブルおよびグラフィックスアドレスリマッピングテーブルの少なくとも１つを含む、請求項１に記載の方法。
【請求項３】
前記Ｉ／Ｏ装置はグラフィックス装置を含む、請求項１に記載の方法。
【請求項４】
前記Ｉ／Ｏ装置はプロセッサまたはコントローラを含む、請求項１に記載の方法。
【請求項５】
前記Ｉ／Ｏ装置は、前記プロセッサまたはその前記コントローラに関連付けられたローカルメモリを含む、請求項４に記載の方法。
【請求項６】
前記変換テーブルは、少なくとも１つの付加的なチップセットアドレスリマッピング方法を含む、請求項１に記載の方法。
【請求項７】
前記インストールをバッチオペレーションで行うことをさらに含む、請求項１に記載の方法。
【請求項８】
ゲストオペレーティングシステム（ＯＳ）ドライバがホストアドレスの前記グラフィックスメモリ変換テーブルへのエントリを容易にする、請求項１に記載の方法。
【請求項９】
仮想マシンモニタ（ＶＭＭ）がホストアドレスの前記グラフィックスメモリ変換テーブルへのエントリを容易にする、請求項１に記載の方法。
【請求項１０】
ゲストオペレーティングシステム（ＯＳ）ドライバが、前記変換を前記変換テーブルにインストールするために前記ＶＭＭを呼び出す、請求項９に記載の方法。
【請求項１１】
前記ＶＭＭは、前記グラフィックス変換テーブルに対してアップデートを阻止する、請求項９に記載の方法。
【請求項１２】
前記ＶＭＭによって、前記ホスト物理アドレスの少なくとも利用およびアサインを有効化することをさらに含む、請求項９に記載の方法。
【請求項１３】
前記グラフィックスメモリ変換テーブルはゲストＯＳドライバに対してリードオンリーである、請求項９に記載の方法。
【請求項１４】
前記インストールはチップセット内のハードウェアメカニズムによって容易にされる、請求項１に記載の方法。
【請求項１５】
前記チップセット内のアドレスデコーダによって容易にされる、請求項１４に記載の方法。
【請求項１６】
仮想化をサポートするシステム内の仮想マシンにアサインされた入力／出力（Ｉ／Ｏ）装置と、
物理ゲストグラフィックスメモリアドレスをホスト物理アドレスに関連付けるグラフィックスメモリ変換テーブルと、
グラフィックスメモリユニットと、
前記グラフィックスメモリユニットに関連付けられたメモリであって、機械によって実行される場合に、物理ゲストグラフィックスメモリアドレスからホスト物理メモリアドレスへの変換を前記グラフィックスメモリ変換テーブルにインストールすることという結果を生じる命令を格納するメモリと
を含むシステム。
【請求項１７】
前記グラフィックスメモリ変換テーブルは、グラフィックス変換テーブルおよびグラフィックスアドレスリマッピングテーブルの少なくとも１つを含む、請求項１６に記載のシステム。
【請求項１８】
前記Ｉ／Ｏ装置はグラフィックス装置を含む、請求項１６に記載のシステム。
【請求項１９】
Ｉ／Ｏ装置はプロセッサまたはコントローラを含む、請求項１６に記載のシステム。
【請求項２０】
前記Ｉ／Ｏ装置は、前記プロセッサおよびその前記コントローラに関連付けられたローカルメモリを含む、請求項１９に記載のシステム。
【請求項２１】
仮想マシンモニタ（ＶＭＭ）が、ホストアドレスの前記グラフィックスメモリ変換テーブルへのエントリを容易にする、請求項１６に記載のシステム。
【請求項２２】
前記ＶＭＭは、前記ホスト物理アドレスの少なくとも利用およびアサインを有効化する、請求項２１に記載のシステム。
【請求項２３】
前記グラフィックスメモリ変換テーブルはゲストＯＳドライバに対してリードオンリーである、請求項２１に記載のシステム。
【請求項２４】
ホストアドレスの前記グラフィックスメモリ変換テーブルへのエントリを容易にするゲストオペレーティングシステム（ＯＳ）ドライバをさらに含む、請求項１６に記載のシステム。
【請求項２５】
前記インストールは、バッチオペレーションで行われる、請求項１６に記載のシステム。
【請求項２６】
仮想化をサポートするシステム内の仮想マシンにアサインされた入力／出力（Ｉ／Ｏ）装置と、
物理ゲストグラフィックスメモリアドレスをホスト物理アドレスに関連付けるグラフィックスメモリ変換テーブルを格納するメモリと、
機械によって実行される場合に、物理ゲストグラフィックスメモリアドレスからホスト物理メモリアドレスへの変換を前記グラフィックスメモリ変換テーブルにインストールすることという結果を生じる命令を格納するグラフィックスメモリユニットと
を含むシステム。
【請求項２７】
前記グラフィックスメモリ変換テーブルは、グラフィックス変換テーブルおよびグラフィックスアドレスリマッピングテーブルの少なくとも１つを含む、請求項２６に記載のシステム。
【請求項２８】
前記Ｉ／Ｏ装置はグラフィックス装置を含む、請求項２６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
グラフィックス装置には、グラフィックスデータを格納するための連続したメモリ範囲が要求される。グラフィックスデータには、例えばパーソナルコンピュータのグラフィックスサブシステムによって使用される例えば３次元データおよび命令が含まれる。連続グラフィックスメモリは、グラフィックス変換テーブルを使用して物理メモリに相関付けられる。しかし、物理メモリは連続ではない。
【０００２】
いくつかの側面において、仮想化は、同じホストハードウェア上で１つ以上のゲストオペレーティングシステム（ＯＳ）を動作させる技法であり、ホストハードウェア・ソフトウェアインターフェイスのコピーを各ゲストＯＳに提示することによって行われる。仮想化をサポートするシステムにおいては、ゲストに対するメモリアドレスはホスト物理メモリアドレスに相関付けられる。物理ホストメモリは、物理ゲストメモリをバックアップする。
【０００３】
さらに、グラフィックス装置を有して仮想化をサポートするシステムにおいては、２つのメモリアドレス変換を与える必要がある。１つの変換はグラフィックスアドレスを物理ゲストアドレスにマッピングし、２つ目の変換は物理ゲストアドレスを物理ホストアドレスに変換する。
【０００４】
したがって、仮想化をサポートするコンテキストでグラフィックスアドレスを効率的に変換するためのシステムおよび方法を与える技術的必要性が存在する。
【発明の開示】
【０００５】
図１は、いくつかの実施例で使用され、参照番号１００によって一般的に表されるコンピュータシステムの物理ハードウェアを示す例示的なブロック図である。コンピュータシステム１００はプロセッサ１０５を含む。プロセッサ１０５は、任意のタイプのアーキテクチャの中央処理装置を表す。いくつかの実施例は、マルチプロセッサを有するコンピュータシステムによって実施される。コンピュータシステム１００は、プロセッサ１０５のシステムメモリ１１５へのアクセスを可能にするいくつかの制御回路およびいくつかのインターフェイス回路を有するチップセット１１０、システムバス１５０（例えば、周辺コンポーネント相互接続（ＰＣＩ）エクスプレスバス）、ならびにグラフィックス装置１６０を含む。
【０００６】
いくつかの周辺コンポーネント相互接続（ＰＣＩエクスプレス）装置１５５１から１５５ｎは、「ＰＣＩエクスプレスベース仕様書バージョン１.０」（２００２年７月）においてＰＣＩスペシャルインタレストグループ（ＰＣＩ−ＳＩＧ）によって定義されたエクスプレスバス１５０に接続される。ＰＣＩエクスプレス装置１５５１から１５５ｎは、例えば、ディスクコントローラ／カード、ローカルエリアネットワークコントローラ／カード等のような入力／出力（Ｉ／Ｏ）ハードウェア装置である。
【０００７】
いくつかの実施例においては、チップセット１１０は、例えばバス１５０、グラフィックス装置１６０、システムメモリ１１５、プロセッサ１０５等のような様々なコンポーネント間のデータアクセスを制御する１つ以上のバスコントローラ（例えば、ＰＣＩエクスプレスバス）、グラフィックスコントローラ、ＣＰＵコントローラおよびメモリコントローラを有する。
【０００８】
留意すべきなのは、コンピュータシステム１００は、ここでの様々な実施例の範囲からの逸脱または変更なしに、他のコンポーネント、付加的なコンポーネント、または図１に示すよりも少ないコンポーネントを含んでよいことである。
【０００９】
システムメモリ１１５は、情報を格納するための１つ以上のメカニズムを表す。例えば、システムメモリ１１５は不揮発性または揮発性メモリを含む。いくつかの実施例においては、システムメモリ１１５は、グラフィックスメモリユニット１１８、グラフィックスアパチャ１２０およびメインメモリ１２５を含む。メインメモリ１２５は、オペレーティングシステム（ＯＳ）１３０、メモリマネジャ１３５、グラフィックスメモリ変換テーブル１４０、および、例えば他のプログラムおよびデータのような他の情報に対して割り当てられる付加的メインメモリ１４５を含んでよい。
【００１０】
グラフィックス装置１６０はアドイン装置でもよく、またはコンピュータシステム１００に統合されてもよい。いくつかの実施例において、グラフィックス装置１６０は、グラフィックスプロセッサ１６５およびグラフィックスローカルメモリ１７０を含む。メモリは、ランダムアクセスメモリ（ＲＡＭ）（例えば、拡張データ出力ダイナミックランダムアクセスメモリ（ＥＤＯ）、シンクロナスグラフィックランダムアクセスメモリ（ＳＧＲＡＭ）、ビデオランダムアクセスメモリ（ＶＲＡＭ））であってよい。メモリが含まれるのは、ビデオカードは、任意の時刻において完全なスクリーン画像を記憶し、グラフィックスプログラムのローカルコピーならびに三角形およびテクスチャのようなグラフィックスオブジェクトを保持する必要があるからである。なお、ここでのいくつかの実施例はまた、ローカルメモリを有しないグラフィックス装置およびＩ／Ｏ装置に対しても適用可能である。
【００１１】
グラフィックスプロセッサ１６０は、３−Ｄレンダリングオペレーション、描画等のようなグラフィックス機能を実行する。グラフィックスプロセッサ１６５は、それ自体のグラフィックスローカルメモリ１６０にアクセスする。グラフィックス装置１６０は、アクセラレーテッドグラフィクスポート（ＡＧＰ）１７５を介してチップセット１１０に接続される。ＡＧＰ１７５は、システムメモリ１１５からグラフィックス装置１６０までデータを直接移動させるための高速バスを与える。システムメモリ１１５が直接参照される。システムメモリ１１５への直接参照により、グラフィックス装置１６０とシステムメモリ１１５との間の情報の効率的な伝達にとって、システムメモリ１１５の連続的なビューが必須となる。
【００１２】
いくつかの実施例において、グラフィックス装置１６０は、ＰＣＩエクスプレスバス１５０を介してチップセットに接続される。
【００１３】
いくつかの実施例において、グラフィックスアパチャ１２０を含むグラフィックスメモリユニット１１８のためにシステムメモリ１１５の範囲が確保される。グラフィックスアパチャ１２０は、ＡＧＰ１７５によって例えば３−Ｄフィーチャおよびテクスチャのようなグラフィックス情報に対して使用されるメモリアドレスの範囲を与える。しかし、システムメモリ１１５はグラフィックスデータに対して動的に割り当てられるので、システムメモリ１１５のランダムなセグメントを、グラフィックスアパチャ１２０に対する１つの連続な物理空間にマッピングするためには、グラフィックスマッピングテーブルのメカニズムを与える必要がある。
【００１４】
直接メモリアクセス（ＤＭＡ）変換に対してシステムメモリ内の散乱したページの物理的に連続なビューを与えるために、グラフィックスアドレスリマッピングテーブル（ＧＡＲＴ）またはグラフィックス変換テーブル（ＧＴＴ）のようなグラフィックスメモリ変換テーブルが使用される。ＡＧＰ１７５によれば、テクスチャ、アルファバッファおよびＺバッファのようなアドバンスト３次元フィーチャのためにメインメモリが特定的に使用される。上述のように、ＡＧＰはシステムメモリ内への直接参照を生成するので、その空間の連続的なビューが必須となる。しかし、システムメモリは例えばランダム４Ｋページに動的に割り当てられるので、ランダム４Ｋページを１つの連続的な物理アドレス空間にマッピングするアドレスマッピングメカニズムを与える必要がある。
【００１５】
図２は、参照番号２００によって一般的に表される例示的なグラフィックスメモリ変換テーブルマップを示す。いくつかの実施例において、システムメモリ１１５は、アドレスゼロ（０）からトップまでのアドレス範囲を有するメインメモリ１２５を含む。グラフィックスアパチャ１２０は、メインメモリ１２５のトップから始まるアドレス範囲を有してよい。グラフィックスアパチャ１２０は仮想メモリであり、メインメモリ１２５の物理アドレス空間へのマッピングを行う。
【００１６】
グラフィックスアパチャ１２０は、オペレーティングシステム１３０によってグラフィックス装置１６０のために割り当てられるシステムメモリ１１５の一部である。グラフィックス装置１６０には、高速なグラフィックスデータ処理を目的としてテクスチャデータ、フロントバッファデータまたは他のグラフィックスデータを格納するために確保されたグラフィックスアパチャ１２０へのアクセスが与えられる。グラフィックスアパチャ１２０の各アドレスＰａは、メインメモリ１２５の物理アドレス空間Ｐｇ内にマッピングされた対応エントリを有する。
【００１７】
オペレーティングシステム１３０は、（システムメモリ１１５の）メインメモリ１２５内の複数のページを、それらが見つかるところならどこにでも割り当て、グラフィックス装置１６０に対してそれらをアサインする。したがって、グラフィックス装置１６０にはグラフィックスアパチャ１２０の連続ブロックが与えられる。ここで、グラフィックスアパチャ１２０アドレスＰａからメインメモリ１２５の対応アドレスＰｇへ向けられる参照は、グラフィックスメモリ変換テーブル１４０内にページテーブルエントリ（ＰＴＥ）として格納される。
【００１８】
いくつかの側面において、仮想化は、ホストハードウェア・ソフトウェアインターフェイスの複数のコピーを各ゲストＯＳに提示することによって、１つ以上のゲストオペレーティングシステム（ＯＳ）を同じネイティブハードウェア上で動作させる技法である。ネイティブハードウェアはホストと称してよい。複数のゲストＯＳは同時に動作してもよい。仮想化コンテキストにおいては、グラフィックス装置またはサブシステムによって使用されるメモリを管理することはさらに複雑になる。というのは、ホストハードウェアの仮想化に起因してゲストメモリアドレスを物理ホストアドレスに変換する必要があるからである。
【００１９】
図３は、仮想化をサポートするシステム３００の例を示す。システム３００は、物理ホストハードウェア３０５、いくつかのゲスト仮想マシンＶＭ０３１００およびＶＭ１３１０１、ならびに仮想マシンモニタ（ＶＭＭ）３３０を含む。ここで、ＶＭ０３１００およびＶＭ１３１０１の各々は、物理ホストハードウェア３０５に関連するゲストと称してよい。いくつかの実施例において、物理ホストハードウェア３０５は、図１に示すシステム１００に類似するコンピュータシステムおよび／またはそのコンポーネントを含んでよい。ここでも、物理ホストハードウェア３０５は、ホストと称してもよい。
【００２０】
留意すべきなのは、ホスト３０５に含まれる特定の物理ホストハードウェアは様々であり、システム１００は、ここでの様々な実施例の範囲からの逸脱および／または変更なしに、図１の説明に関連して述べられたように変更されてよいということである。
【００２１】
いくつかの実施例において、物理ホストハードウェア３０５は、プロセッサ、メモリ、様々なＩ／Ｏ装置（例えば、キーボード、モニタ、ＵＳＢコントローラ、ネットワークコントローラ等）、およびグラフィックス装置を含んでよい。
【００２２】
２つの仮想マシンＶＭ０３１００およびＶＭ１３１０１がシステム３００に示されている。留意すべきなのは、システム３００にはこれよりも多いまたは少ない仮想マシンが含まれまたはサポートされてよいということである。ＶＭ０３１００およびＶＭ１３１０１は、類似するコンポーネントとして示される。例えば、ＶＭ０３１００はいくつかのアドレス３１５、ゲストＯＳ  Ｇ１  ３２０、およびそれらに関連するコンポーネント３２５を有する。同様に、ＶＭ１３１０１は、いくつかのアドレス３１７、ゲストＯＳ  Ｇ２  ３２２、および仮想コンポーネント３２７を有する。当業者にとって留意すべきことは、システム３００によってサポートされる仮想マシン間には機能性の違いが存在してよいということである。
【００２３】
いくつかの実施例において、ＶＭＭ３３０は、ＶＭ０３１００およびＶＭ１３１０１の各々に対するハードウェア・ソフトウェアインターフェイスを与える。ハードウェア・ソフトウェアインターフェイスの各インスタンスはホスト３０５の効率的なレプリカを与えてよい。これは、システム３００に接続されるまたはそれによってサポートされる仮想マシンに対する処理、メモリ、命令およびその他のリソース（例えば、メモリおよびＩ／Ｏ装置）を含む。いくつかの実施例において、ゲストＯＳ  Ｇ１  ３２０およびゲストＯＳ  Ｇ２  ３２２は同時に動作してよい。その理由の１つは、各ゲストＯＳはそれ自体の仮想マシンで動作するからである。
【００２４】
仮想化をサポートするシステムにおいて、ゲストメモリアドレスはホスト物理アドレスに変換またはマッピングされる必要がある。というのは、物理ゲストメモリアドレス（Ｐｇ）は、物理ホストアドレス（Ｐｈ）に実際に配置される仮想メモリアドレスだからである。すなわち、メモリを含むゲストのリソースはハードウェア、またはホストのハードウェア環境全体の仮想化なので、物理ホストアドレス（Ｐｈ）にメモリアドレス（Ｐｇ）を関連付ける相関が確立される必要がある。
【００２５】
したがって、仮想化システムまたは仮想化をサポートするシステムにおいては、仮想のゲストマシンのグラフィックスアドレスを実際の物理ホストアドレス位置に変換する必要がある。ここでのいくつかの実施例によれば、仮想化をサポートするコンテキストにおいてグラフィックスアドレスを効率的に変換する方法およびシステムが与えられる。
【００２６】
仮想化をサポートする計算システムにおいては、ゲストメモリアドレスＰｇは、物理ホストアドレスＰｈによってバックアップされる（すなわち物理ホストアドレスＰｈに配置される）。図４は、仮想化をサポートするシステムのホストメモリにマッピングされたゲストＯＳメモリを示す図である。図示のように、ゲストＧ１のアドレス空間４１０は１２８ＭＢであり、ゲストＧ１のアドレス空間は４０５２５６ＭＢである。ゲストＯＳ  Ｇ１（Ｐｇ１）およびゲストＯＳ  Ｇ２（Ｐｇ２）に対する物理メモリアドレス空間がそれぞれ、ホスト物理アドレス空間（Ｐｈ１）および（Ｐｈ２）にマッピングされることが示される。例えば、ゲストメモリアドレス４１５はホストアドレス４２０にマッピングされ、ゲストアドレス４２５は４３０にマッピングされる。
【００２７】
留意すべきことは、図４に示すアドレス位置およびサイズは例として与えられるものであり、必ずしも実際のメモリアドレスというわけではないことである。さらに、図４に示すメモリの例は、本開示へのなんらの限定も表すものでもなければ暗示するものでもない。
【００２８】
留意すべきなのは、本開示の様々な実施例および側面が、仮想マシンにアサインされてメモリアドレスを物理ホストアドレスに関連付けるグラフィックス装置のコンテキストで説明されるが、本開示の様々な側面および実施例は他のタイプのデバイスも包含してよいということである。すなわち、ここでの様々な側面および実施例は、グラフィックス装置以外の装置、システムおよびサブシステムを含んでよい。例えば、ローカルプロセッサおよびローカルメモリを有し、かつ、仮想化をサポートする仮想マシンまたはシステムの一部をなすＩ／Ｏ装置もまた、本開示のシステムおよび方法から利益が得られる。例えば、グラフィックス装置またはグラフィックスサブシステムに類似するが必ずしもそのものではないプロセッサおよびローカルメモリを有する仮想マシンＩ／Ｏ装置に対するメモリアドレスは、本開示の側面とともに使用されおよび／またはその側面を含んでよい。
【００２９】
図５は、ホストシステムのメインメモリに配置された実際の物理ホストメモリアドレス（Ｐｈ）によってバックアップされた物理ゲストアドレス（Ｐｇ）にグラフィックス装置のグラフィックスアパチャアドレス（Ｐａ）をマッピングするために使用される２ステップ変換プロセス５００を例示する図を与える。例えば、グラフィックスアパチャアドレス（Ｐａ）は、チップセット１１０によってゲスト物理アドレス（Ｐｇ）に変換される。チップセット１１０は、ＧＴＴおよびページテーブルエントリ（ＰＴＥ）のようなグラフィックスメモリ変換テーブルメカニズムを使用してグラフィックスアパチャアドレス（Ｐａ）を物理ゲストアドレス（Ｐｇ）にマッピングする。しかし、ゲスト物理アドレス（Ｐｇ）は依然としてホスト物理アドレス（Ｐｈ）に関連付けられる必要がある。というのは、ホスト物理ハードウェアは実際の物理メモリ位置が存在するところだからである。ＤＭＡリマッピングメカニズムのオペレーション５１０によって、物理ゲストアドレス（Ｐｇ）から物理ホストアドレス（Ｐｈ）への変換が与えられる。ＤＭＡリマッピングメカニズム５１０は、ハードウェアまたはソフトウェアで実行されてよい。
【００３０】
ここでのいくつかの実施例によれば、図６は、ゲスト仮想マシンのグラフィックスメモリ（例えばアパチャ）アドレス（Ｐａ）を１つのプロセスまたはオペレーションで物理ホストアドレス（Ｐｈ）にマッピングするプロセス６０５の例示的な図を与える。オペレーション６０５によると、ゲストグラフィックスメモリアドレス（Ｐａ）を物理ホストアドレス（Ｐｈ）にマッピングするためにＰＴＥを使用するグラフィックス変換テーブルが与えられる。
【００３１】
いくつかの実施例においては、グラフィックスメモリ変換テーブルはＧＡＲＴまたはＧＴＴであってよい。さらに、グラフィックスメモリ変換テーブルは、例えば図１に示すチップセット１１０のようなチップセットにおいて実行されてよい。
【００３２】
図７は、ここでのいくつかの実施例に係るプロセス７００の例示的なフロー図である。図７をよりよく理解するためおよびその説明のために、図７に関連して図８が参照される。図８は、参照番号８００によって一般的に表される論理メモリマップの例示的な図である。ゲストグラフィックスメモリアドレス（Ｐａ）からホスト物理アドレス（Ｐｈ）への変換が示される。この変換は、グラフィックスメモリ変換テーブル８１０に対するＰＴＥによって容易にされる。グラフィックスメモリ変換テーブル８１０（例えばＧＴＴ）は、ゲストグラフィックスメモリアドレス（Ｐａ）８０５をホスト物理アドレス（Ｐｈ）８１５に変換またはマッピングすることを容易にするために使用される。変換は、ＤＭＡリマッピングによって容易にされてもよい。
【００３３】
オペレーション７０５では、仮想化をサポートするシステムにおいて仮想マシン（すなわちゲスト）にアサインされたグラフィックス装置（または他のＩ／Ｏ装置）に対するメモリ要求が行われる。
【００３４】
オペレーション７１０で、ゲストグラフィックスメモリアドレス（Ｐａ）のホスト物理アドレス（Ｐｈ）へのマッピングまたは変換が与えられる。ホスト物理アドレスＰｈは、物理ホストハードウェア４１０のシステムメモリ内の物理メモリの実際位置である。ゲストグラフィックスメモリアドレス（Ｐａ）は、ＤＭＡリマッピング技法を使用してＧＴＴ８１０内のホスト物理アドレス（Ｐｈ）にマッピングされてよい。仮想化によってアサインまたはサポートされたプロセッサおよびローカルメモリを含むグラフィックス装置、さらに一般的にはＩ／Ｏ装置は、物理ホストハードウェア３３０のメインメモリ１２５からのＤＭＡデータに対してホスト物理アドレス（８１５）を使用する。
【００３５】
ここでのいくつかの実施例においては、グラフィックスメモリ変換テーブル８１０を使用してゲストグラフィックスメモリアドレス（Ｐａ）をホスト物理アドレス（Ｐｈ）にマッピングするプロセスはソフトウェアに実装されてよい。ここでのいくつかの実施例においては、グラフィックスメモリ変換テーブル８１０を使用してゲストグラフィックスメモリアドレス（Ｐａ）をホスト物理アドレス（Ｐｈ）にマッピングするプロセスはハードウェアに実装されてよい。ハードウェアメカニズムは、チップセットハードウェア内のページテーブル変換ロジックを使用してよい。
【００３６】
グラフィックスメモリ変換テーブル８１０を使用してゲストグラフィックスメモリアドレス（Ｐａ）をホスト物理アドレス（Ｐｈ）にマッピングするプロセスのソフトウェアへの実装を含むいくつかの実施例に関しては、ゲストＯＳドライバおよび（例えば３３０）は協働してグラフィックスメモリ変換テーブルへのエントリを管理する。ゲストＯＳドライバは、物理ホストアドレス（Ｐｈ）をグラフィックスメモリ変換テーブルに直接与える。ホスト物理アドレス（Ｐｈ）をグラフィックスメモリ変換テーブルにインストールする前に、ゲストＯＳドライバは、有効な物理ホストアドレスをＶＭＭに問い合わせる。ゲストＯＳによる問い合わせに応じて、ＶＭＭは有効な（例えば利用できる）ホスト物理アドレス（Ｐｈ）を与える。すなわち、ＶＭＭは、ゲストＯＳによって有効に使用されるホスト物理アドレスのみを返す。次に、ゲストＯＳドライバは、有効な物理ホストアドレス（Ｐｈ）をＧＴＴにインストールする。
【００３７】
ソフトウェアに実装されるいくつかの実施例において、ゲストＯＳドライバおよびＶＭＭは、グラフィックスメモリ変換テーブルに対するエントリを協働して管理する。ここで、ゲストＯＳドライバはゲストからホストへのマッピングを認識している。グラフィックスメモリ変換テーブル８１０は、ゲストＯＳに対してはリードオンリーであってよい。このため、ゲストＯＳは、ＧＴＴ８１０からの読み取りのみを行うことができる。これらの実施例において、ゲストＯＳドライバは、ゲストグラフィックスメモリアドレスをＧＴＴ８１０に書き込もうとしてもよい。ＶＭＭは、物理ホストアドレスを有効化するサービスを与えてもよい。これは、有効化された物理ホストアドレス（Ｐｈ）をグラフィックスメモリ変換テーブルにエントリする前に行われる。すなわち、ＶＭＭは物理ホストアドレスを有効化し、有効化された物理ホストアドレスをグラフィックスメモリ変換テーブルにエントリする。ＶＭＭの物理ホストアドレスの有効化およびＧＴＴ８１０へのエントリが与えられて、ゲストＯＳが例えば別のゲストＯＳによって必要とされる物理ホストアドレスにアクセスすることを防止するためのセキュリティレベルが与えられる。
【００３８】
ここでのソフトウェアに実装されるいくつかの実施例において、物理ホストメモリをＧＴＴ８１０に書き込みまたはインストールすることは、バッチプロセスの一部として達成されてもよい。これにより、システムリソースのオーバーヘッドが償却される。
【００３９】
ここでのソフトウェアに実装されるいくつかの実施例において、ＶＭＭは、グラフィックスメモリ変換テーブルＧＴＴ８１０において使用されるページテーブルをセットアップする。これらの実施例において、ゲストＯＳは、ここでのゲストからホストへのマッピングの機能またはプロセスを認識しない。ゲストＯＳドライバによってＧＴＴ８１０のために意図されたいずれの書き込みもＶＭＭ（例えば３３０）によって捕捉される。ＶＭＭはゲストグラフィックスメモリアドレス（Ｐａ）を対応物理ホストアドレス（Ｐｈ）に変換し、対応ホスト物理アドレス（Ｐｈ）をグラフィックスメモリ変換テーブルにインストールする。これらの実施例において、ゲストからホストへの変換に対応するようにゲストＯＳドライバを変更、適合または修正する必要がない。というのは、ＯＳドライバは  ＧＴＴに対して変換またはエントリを行わないからである。さらに、ゲストＯＳは、他のＶＭの物理ホストアドレスにアクセスまたはモニタを行うことができない。
【００４０】
ここでのいくつかの実施例において、プロセス７００の機能はハードウェアに実装される。ＧＴＴ８１０への書き込みを検知するために、アドレスデコーダまたは他のハードウェア装置が使用されてよい。ゲストＯＳドライバがＧＴＴへの書き込みを行おうとしていることが検知されると、ハードウェアは、有効な物理ホストアドレスを決定する問い合わせを行い、有効な物理ホストアドレスエントリをＧＴＴにインストールする。ここで、ゲストからホストへのマッピング（すなわち変換）の機能はＯＳドライバに依存しないので、ソフトウェアに実装される上述のいくつかの実施例と同様に、ゲストＯＳは変更または修正される必要がない。上述のいくつかのソフトウェア実施例と同様に、セキュリティ手段が与えられる。というのは、ゲストＯＳドライバはＧＴＴをセットアップして他のＶＭＭの物理メモリからのエントリをマッピングすることができない（すなわち、ゲストＯＳＳは、別のＶＭメモリの稼動時にスヌープすることができない）からである。
【００４１】
このため、１つの変換オペレーションが与えれて、ゲストグラフィックスメモリアドレスがホスト物理アドレスに変換されてよい。このようにして、仮想化をサポートするシステムの、例えばグラフィックス装置のようなＩ／Ｏ装置に必要な変換の数および頻度が低減され得る。
【００４２】
上述の開示によれば、グラフィックスメモリ変換テーブルが利用されてゲストグラフィックスアパチャアドレスはホスト物理アドレスにマッピングされる。このため、ゲストアドレスをホストアドレスに変換するための個別のＤＭＡリマッピングの必要性および関連ハードウェアのコストおよび／または変更は低減されるかまたはなくなる。さらに、ここに開示された変換機能を実装するまたは含むハードウェアおよび／またはソフトウェア（例えばチップセット）は、いくつかの実施例において、仮想化をサポートするシステムで一般化されて使用することができる。
【００４３】
ここでのいくつかの実施例において、グラフィックスは、上述に開示されたリマッピング方法に加えて少なくとも１つのチップセットアドレスリマッピングを含んでもよい。例えば、Ｉ／Ｏメモリ管理ユニット（図示せず）が含まれてもよい。
【００４４】
ここで記載されたいくつかの実施例は説明を目的としたものにすぎない。ここで記載されたさまざまな特徴がすべてともに使用される必要はなく、任意の１つ以上のそれらの特徴が１つの実施例に組み込まれてもよい。したがって、当業者であれば、様々な修正例および変形例によって他の実施例が実施できることが本明細書からわかるだろう。
【図面の簡単な説明】
【００４５】
【図１】ここでのいくつかの実施例に係るコンピュータシステムのブロック図である。
【図２】ここでのいくつかの実施例に係るグラフィックス変換テーブルの例示的な図である。
【図３】ここでのいくつかの実施例に係る仮想マシンの例示的な図である。
【図４】ここでのいくつかの実施例に係る仮想マシン上にマッピングされた物理メモリの例示的な図である。
【図５】２つの変換を含むメモリ変換のフロー図である。
【図６】ここでのいくつかの実施例に係る１つの変換オペレーションを含むメモリ変換スキームの例である。
【図７】ここでのいくつかの実施例に係るプロセスの例示的なフロー図である。
【図８】ここでのいくつかの実施例に係るゲストグラフィックスメモリアドレスからホスト物理アドレスへの変換を示す、論理メモリマップの例示的な図である。
【図１】
2008527508.tif 000003
【図２】
2008527508.tif 000004
【図３】
2008527508.tif 000005
【図４】
2008527508.tif 000006
【図５】
2008527508.tif 000007
【図６】
2008527508.tif 000008
【図７】
2008527508.tif 000009
【図８】
2008527508.tif 000010
【国際調査報告】
2008527508.tif 000011
2008527508.tif 000012