(57)【要約】【解決手段】  Ｉ／Ｏデバイスによるシステムメモリへの要求を制御するように構成される入力／出力メモリ管理ユニット（ＩＯＭＭＵ）は、システムメモリ内に記憶されるトランスレーションデータを用いてＩ／Ｏデバイス生成の要求に関連するアドレスをトランスレートするために２レベルのゲストトランスレーションを行い得る制御論理を含む。トランスレーションデータは、幾つかのエントリを有するデバイステーブルを含む。制御論理は、所与の要求を生成するＩ／Ｏデバイスに対応するデバイス識別子を用いることによって、その要求に対するデバイステーブルエントリを選択してよい。トランスレーションデータはまた、ゲストページテーブルのセットと、入れ子にされたページテーブルのセットとを含むＩ／Ｏページテーブルの第１のセットを含んでいてよい。所与の要求に対して選択されたデバイステーブルエントリは、ゲストトランスレーションテーブルのセットへのポインタを含んでいてよく、そして最後のゲストトランスレーションテーブルは、入れ子にされたページテーブルのセットへのポインタを含む。【選択図】図５
2013500525.tif 000002
【特許請求の範囲】
【請求項１】
Ｉ／Ｏデバイスによるメモリへの要求を制御するように構成される入力／出力（Ｉ／Ｏ）メモリ管理ユニット（ＩＯＭＭＵ）であって、
システムメモリ内に記憶されるトランスレーションデータを用いてＩ／Ｏデバイス生成の要求に関連するアドレスをトランスレートするために２レベルのゲストトランスレーションを行うように構成される制御論理を備え、
前記トランスレーションデータは、デバイステーブル内の１つ以上のデバイステーブルエントリと、ゲストページテーブルのセット及び入れ子にされたページテーブルのセットを含んでいるページテーブルの第１のセットとを含み、
所与の要求に対する前記デバイステーブルエントリはデバイス識別子に基づいて選択され、所与の要求に対して選択されたデバイステーブルエントリはゲストトランスレーションテーブルのセットへのポインタを含み、ゲストページテーブルは入れ子にされたページテーブルのセットへのポインタを含むＩＯＭＭＵ。
【請求項２】
ゲストトランスレーションテーブルの前記セットへの前記ポインタは、コンピュータシステムのプロセッサで実行中の仮想メモリモニタ（ＶＭＭ）によってマッピングされるアドレス空間に対応するシステム物理アドレス（ＳＰＡ）を備え、所与のＳＰＡは前記メモリ内の物理メモリページにアクセスするために用いられる請求項１に記載のＩＯＭＭＵ。
【請求項３】
入れ子にされたページテーブルの前記セットへの前記ポインタは、前記コンピュータシステムのプロセッサ上の仮想マシン（ＶＭ）で実行中のゲストオペレーティングシステムによってマッピングされるアドレス空間に対応するゲスト物理アドレス（ＧＰＡ）を備えており、前記制御論理は、前記ＧＰＡを前記メモリ内の物理メモリページにアクセスするためのＳＰＡへトランスレートするように更に構成される請求項２に記載のＩＯＭＭＵ。
【請求項４】
前記Ｉ／Ｏ要求に関連する前記アドレスは、前記コンピュータシステムのプロセッサ上の仮想マシン（ＶＭ）で実行中のゲストアプリケーションによってマッピングされるアドレス空間に対応するゲスト仮想アドレス（ＧＶＡ）を備えており、前記制御論理は、２レベルのゲストトランスレーションを用いて前記ＧＶＡをＳＰＡへトランスレートするように構成される請求項２に記載のＩＯＭＭＵ。
【請求項５】
前記ゲストページテーブルの少なくとも幾つかは、それぞれの次のゲストページテーブルへのポインタを含む少なくとも１つのエントリを含む請求項１に記載のＩＯＭＭＵ。
【請求項６】
ゲストページテーブルの前記セットの最後のゲストページテーブルは、入れ子にされたページテーブルの前記セットのそれぞれの第１のページテーブルへのポインタを含む少なくとも１つのエントリを含む請求項１に記載のＩＯＭＭＵ。
【請求項７】
入れ子にされたページテーブルの前記セットの最後のページテーブルは、前記メモリ内のそれぞれの物理ページに対応するアドレスを有するポインタを含む少なくとも１つのエントリを含む請求項３に記載のＩＯＭＭＵ。
【請求項８】
前記メモリ内のそれぞれの物理ページに対応するアドレスを有する前記ポインタはＧＰＡを備えている請求項７に記載のＩＯＭＭＵ。
【請求項９】
前記制御論理は前記メモリ内のそれぞれの物理ページに対応するＧＰＡポインタを前記それぞれの物理ページのＳＰＡへトランスレートするように更に構成される請求項８に記載のＩＯＭＭＵ。
【請求項１０】
前記制御論理は前記Ｉ／Ｏ要求に関連する前記アドレスのビットのサブセットを前記それぞれの物理ページの前記ＳＰＡと連結して最終的なトランスレーションアドレスを提供するように更に構成される請求項９に記載のＩＯＭＭＵ。
【請求項１１】
前記所与の要求に対する前記デバイステーブルエントリは、ホストトランスレーションページテーブルのセットを含むＩ／Ｏページテーブルの第２のセットへの第２のポインタを更に備える請求項１に記載のＩＯＭＭＵ。
【請求項１２】
前記ホストトランスレーションテーブルの少なくとも幾つかは次の連続的なホストトランスレーションテーブルへのポインタを有するエントリを含み、各ポインタは前記コンピュータシステムのプロセッサで実行中の仮想メモリモニタ（ＶＭＭ）によってマッピングされるアドレス空間に対応するシステム物理アドレス（ＳＰＡ）を備え、所与のＳＰＡは前記メモリ内の物理メモリページにアクセスするために用いられる請求項１１に記載のＩＯＭＭＵ。
【請求項１３】
プロセッサと、
前記プロセッサに結合され、１つ以上のエントリを含んでいるデバイステーブルとゲストページテーブルのセット及び入れ子にされたページテーブルのセットを含んでいるページテーブルのセットとを含むトランスレーションデータを記憶するように構成されるメモリと、
システムメモリにアクセスするための要求を生成するように構成される少なくとも１つの入力／出力（Ｉ／Ｏ）デバイスと、
前記Ｉ／Ｏデバイス及び前記メモリに結合され、前記トランスレーションデータを用いてＩ／Ｏデバイス生成の要求に関連するアドレスをトランスレートするために２レベルのゲストトランスレーションを行うように構成されるＩ／Ｏメモリ管理ユニット（ＩＯＭＭＵ）とを備えたシステムであって、
前記ＩＯＭＭＵは、
デバイス識別子に基づいて所与の要求に対するデバイステーブルエントリを選択し、
選択されたデバイステーブルエントリからのポインタを用いてゲストトランスレーションデータ構造のセットにアクセスし、
ゲストページテーブルからのポインタを用いて、入れ子にされたページテーブルの前記セットにアクセスするように構成されるシステム。
【請求項１４】
前記ＩＯＭＭＵは、前記デバイステーブルとゲストページテーブルの前記セットとを第１のゲストトランスレーションレベルで用い、入れ子にされたページテーブルの前記セットを第２のゲストトランスレーションレベルで用いて最終的なトランスレーションアドレスを得るように構成される請求項１３に記載のシステム。
【請求項１５】
前記メモリは、前記プロセッサで実行中の仮想メモリモニタ（ＶＭＭ）によってマッピングされるアドレス空間に対応するシステム物理アドレス（ＳＰＡ）と、前記プロセッサ上の仮想マシン（ＶＭ）で実行中のゲストオペレーティングシステムによってマッピングされるアドレス空間に対応するゲスト物理アドレス（ＧＰＡ）と、前記プロセッサ上の仮想マシン（ＶＭ）で実行中のゲストアプリケーションによってマッピングされるアドレス空間に対応するゲスト仮想アドレス（ＧＶＡ）とを含む複数のアドレス空間内へマッピングされる請求項１３に記載のシステム。
【請求項１６】
ゲストトランスレーションテーブルのセットへのポインタはＳＰＡを備え、所与のＳＰＡは前記メモリ内の物理メモリページにアクセスするために用いられる請求項１５に記載のシステム。
【請求項１７】
入れ子にされたページテーブルの前記セットへの前記ポインタはＧＰＡを備え、前記ＩＯＭＭＵは前記ＧＰＡを前記メモリ内の物理メモリページにアクセスするためのＳＰＡへトランスレートするように更に構成される請求項１５に記載のシステム。
【請求項１８】
前記Ｉ／Ｏ要求に関連する前記アドレスはＧＶＡを備え、前記ＩＯＭＭＵは前記２レベルのゲストトランスレーションを用いて前記ＧＶＡをＳＰＡへトランスレートするように構成される請求項１４に記載のシステム。
【請求項１９】
前記ＩＯＭＭＵは、前記Ｉ／Ｏ要求に関連する処理識別子を用いてゲストページテーブルの前記セットの少なくとも一部分内へと索引付け、前記Ｉ／Ｏ要求に関連する前記ＧＶＡを用いてゲストページテーブルの前記セットの別の部分内へと索引付けるように更に構成される請求項１５に記載のシステム。
【請求項２０】
前記処理識別子を含む前記Ｉ／Ｏデバイス生成の要求に応答して、前記ＩＯＭＭＵは前記Ｉ／Ｏデバイス生成の要求に関連する前記ＧＶＡをトランスレートするために前記２レベルのゲストトランスレーションを行うように構成される請求項１９に記載のシステム。
【請求項２１】
前記処理識別子を含まない前記Ｉ／Ｏデバイス生成の要求に応答して、前記ＩＯＭＭＵは前記Ｉ／Ｏデバイス生成の要求に関連する前記アドレスをトランスレートするために１レベルのトランスレーションを行うように構成され、前記アドレスはＧＰＡを備える請求項１９に記載のシステム。
【請求項２２】
コンピュータシステムのメモリへの入力／出力Ｉ／Ｏ要求を制御するための方法であって、
デバイステーブル内の１つ以上のデバイステーブルエントリと、ゲストページテーブルのセット及び入れ子にされたページテーブルのセットを含んでいるページテーブルの第１のセットとを含むトランスレーションデータをコンピュータシステムのメモリ内に記憶することと、
デバイス識別子に基づいて所与の要求に対してデバイステーブルエントリを選択することと、ゲストトランスレーションテーブルの前記セットにアクセスするために選択されたデバイステーブルエントリからのポインタを用いることとによって、Ｉ／Ｏ要求において受信されるアドレスに対して２レベルのゲストトランスレーションの第１のトランスレーションレベルを制御論理が実行することと、
入れ子にされたページデータ構造の前記セットにアクセスするためにゲストページテーブルからのポインタを用いることによって前記２レベルのゲストトランスレーションの第２のトランスレーションレベルを前記制御論理が実行することとを備えた方法。
【請求項２３】
前記制御論理は前記Ｉ／Ｏ要求における処理識別子を受信することに応答して前記２レベルのゲストトランスレーションを実行する請求項２２に記載の方法。
【請求項２４】
前記Ｉ／Ｏ要求において受信される前記アドレスは、前記コンピュータシステムのプロセッサ上の仮想マシン（ＶＭ）で実行中のゲストアプリケーションによってマッピングされるアドレス空間に対応するゲスト仮想アドレス（ＧＶＡ）を備える請求項２２に記載の方法。
【請求項２５】
前記制御論理は処理識別子を含まないＩ／Ｏ要求を受信することに応答して１レベルのトランスレーションを実行する請求項２３に記載の方法。
【請求項２６】
処理識別子を含まない前記Ｉ／Ｏ要求において受信される前記アドレスは、前記コンピュータシステムのプロセッサ上の仮想マシン（ＶＭ）で実行中のゲストオペレーティングシステムによってマッピングされるアドレス空間に対応するゲスト物理アドレス（ＧＰＡ）を備える請求項２５に記載の方法。
【請求項２７】
データ構造を備えたコンピュータ可読記憶媒体であって、コンピュータシステム上で実行可能なプログラムによって前記データ構造が動作させられる場合に、前記プログラムが前記データ構造に基づいて動作して前記データ構造によって記述される回路を含む集積回路を製造するための処理の一部を実行し、
前記データ構造において記述される前記回路は、
メモリ内に記憶されるトランスレーションデータを用いてＩ／Ｏデバイス生成の要求に関連するアドレスをトランスレートするために２レベルのゲストトランスレーションを行うように構成される制御論理を含み、
前記トランスレーションデータは、デバイステーブル内の１つ以上のデバイステーブルエントリと、ゲストページテーブルのセット及び入れ子にされたページテーブルのセットを含んでいるページテーブルの第１のセットとを含み、
所与の要求に対する前記デバイステーブルエントリはデバイス識別子に基づいて選択され、所与の要求に対して選択されたデバイステーブルエントリはゲストトランスレーションテーブルのセットへのポインタを含み、ゲストページテーブルは入れ子にされたページテーブルの前記セットへのポインタを含むコンピュータ可読記憶媒体。
【請求項２８】
前記制御論理に結合され完了したトランスレーションを記憶するように構成されるキャッシュメモリを更に備えた請求項１に記載のＩＯＭＭＵ。
【請求項２９】
完了したトランスレーションを前記制御論理がキャッシュメモリ内に記憶することを更に備えた請求項２４に記載の方法。
【請求項３０】
入力／出力（Ｉ／Ｏ）メモリ管理ユニット（ＩＯＭＭＵ）であって、
メモリ内に記憶されるトランスレーションデータを用いてＩ／Ｏデバイス生成の要求に関連するゲストアドレスをトランスレートするために多重レベルの階層的トランスレーションを行うように構成される制御論理を備え、
前記トランスレーションデータは、デバイスデータ構造内の１つ以上のデバイステーブルエントリと、ゲストページデータ構造のセット及び入れ子にされたページデータ構造のセットを含んでいるページデータ構造の第１のセットとを含み、
前記制御論理は、
所与の要求を生成するＩ／Ｏデバイスに対応するデバイス識別子に基づいて前記所与の要求に対するデバイスデータ構造エントリを選択し、
選択されたデバイスデータ構造エントリからのポインタを用いてゲストトランスレーションデータ構造のセットにアクセスし、
ゲストページデータ構造からのポインタを用いて、入れ子にされたページデータ構造の前記セットにアクセスするように更に構成されるＩＯＭＭＵ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータシステムの分野に関し、より特定的には入力／出力（Ｉ／Ｏ）デバイスのためのメモリ管理ユニットに関する。
【背景技術】
【０００２】
現代社会では、パーソナルコンピュータ（ＰＣ）、ワークステーション、サーバ、種々のパーソナルデジタルアシスタント（ＰＤＡ）デバイス等を含む様々な種類のコンピュータシステムが遍在している。全てではないにしろこれらコンピュータシステムの多くは、プロセッサがメモリにアクセスするために実装されるメモリ管理機能を有している。一般に、メモリ管理機能は、各処理によって用いられる仮想アドレス空間から実際のシステムメモリに広がる物理アドレス空間へアドレスをトランスレートすることや、種々のメモリ保護（例えばリードオンリ、リード／ライト、特権レベル要求、等）を含んできた。メモリ管理機能は、各処理によって用いられるメモリを他の処理による権限のないアクセスから保護すること、物理メモリシステムが大きくない場合であっても大きな仮想空間が処理によって用いられることを可能にすること、利用可能な物理メモリへ仮想アドレスを処理に関与することなしに再配置すること等のような種々の用途を有している。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
プロセッサアドレスはしばしばトランスレートされるが、コンピュータシステムにおける入力／出力（Ｉ／Ｏ）デバイスによって用いられるアドレスは、一般にはトランスレートされない。即ち、Ｉ／Ｏデバイスはメモリにアクセスするために物理アドレスを用いる。多くのＰＣのような単一オペレーティングシステム（ＯＳ）コンピュータシステムにおいては、他の処理（アプリケーション及びＯＳサービス）によるＩ／ＯデバイスへのアクセスをＯＳが制御する。従ってＯＳは、任意の所与の時点で所与のデバイスへのアクセスをどの処理が有するかを制御することができ、またそのデバイスによってアクセスされるアドレスを少なくとも多少は制御することができる。しかし、そのようなメカニズムは、仮想マシンモニタ上で動作している多重ゲストＯＳを有するであろう仮想マシンシステムにおいては、より複雑で且つ扱いにくいものになる。加えて、不正デバイス（又は悪意のあるソフトウエアエージェントによってプログラムされたデバイス）が妨げられずにメモリにアクセス可能であることから、デバイスが物理アドレスを使用することは、システムの全体的なセキュリティを低下させる。
【０００４】
仮想化されたシステムにおいては、多くのアプリケーションが仮想メモリ内で動作するであろう一方で、Ｉ／Ｏデバイスは物理メモリにアクセスする。幾つかのシステムでは、仮想マシンマネージャが、Ｉ／Ｏデバイスによって用いられることになるアドレスをインターセプトすると共にトランスレートするかもしれない。しかし、この手法は、面倒であると共に命令集約的であろうから、システム性能を低下させ、あるいは少なくとも計算負荷軽減エンジン(computational offload engine)のようなＩ／Ｏデバイスを用いることによって得られる任意の利益を減らしてしまうかもしれない。
【課題を解決するための手段】
【０００５】
多重レベルアドレストランスレーションを含むＩＯＭＭＵの種々の実施形態が開示される。１つの実施形態においては、ＩＯＭＭＵは、Ｉ／Ｏデバイスによるシステムメモリへの要求を制御するように構成される。ＩＯＭＭＵは、システムメモリ内に記憶されるトランスレーションデータを用いてＩ／Ｏデバイス生成の要求に関連するアドレスをトランスレートするために２レベルのゲストトランスレーションを行い得る制御論理を含む。トランスレーションデータは、幾つかのエントリを有するデバイステーブルを含んでいてよい。所与の要求に対するデバイステーブルエントリは、その要求を生成するＩ／Ｏデバイスに対応するデバイス識別子を用いて制御論理によって選択されてよい。トランスレーションデータはまた、ゲストページテーブルのセットと、入れ子にされたページテーブルのセットとを含むＩ／Ｏページテーブルの第１のセットを含んでいてよい。ゲストページテーブルは、例えば制御レジスタＣＲ３エントリに類似していてよいエントリを含む。所与の要求に対して選択されたデバイステーブルエントリは、ゲストトランスレーションテーブルのセットへのポインタを含んでいてよく、そして最後のゲストトランスレーションテーブルは、入れ子にされたページテーブルのセットへのポインタを含む。ＩＯＭＭＵはまた、将来の要求に対して用いられるであろう完了したトランスレーションを記憶するように構成され得るキャッシュメモリを含んでいてよい。
【０００６】
１つの特定の実装においては、トランスレーションデータはまた、ホストトランスレーションページテーブルのセットを含むＩ／Ｏページテーブルの第２のセットを含んでいてよい。制御論理は、Ｉ／Ｏ要求が処理識別子を含む場合には、Ｉ／Ｏページテーブルの第１のセットを用いて２レベルのトランスレーションを行ってよく、またＩ／Ｏ要求が処理識別子を含まない場合には、Ｉ／Ｏページテーブルの第２のセットを用いて１レベルのトランスレーションを行ってよい。
【図面の簡単な説明】
【０００７】
【図１】図１はコンピュータシステムの１つの実施形態の高位レベルのブロック図である。
【０００８】
【図２】図２はコンピュータシステムの別の実施形態のブロック図である。
【０００９】
【図３】図３は図１のＩ／Ｏトランスレーションテーブルのセットの１つの実施形態を示す図である。
【００１０】
【図４】図４は図３に示されるデバイステーブルに対するデバイステーブルエントリの１つの実施形態の図である。
【００１１】
【図５】図５はゲスト仮想アドレストランスレーションメカニズムの更に詳細な態様を示す図である。
【００１２】
【図６】図６は図１〜図５に示されるコンピュータシステムの実施形態の動作を説明するフロー図である。
【００１３】
本発明は種々の修正及び代替的形態を許容する一方で、その具体的な実施形態は、例示として図面に示され、またここに詳細に説明されることになる。但し、図面及びそれに対する詳細な説明は、開示される特定の形態に本発明を限定することを意図しているのではなく、むしろ逆に、添付の特許請求の範囲によって画定される本発明の精神及び範囲内に含まれる全ての修正、均等なもの、及び代替を網羅することが意図されている。尚、「〜であってよい、〜であろう、〜ことがある、〜し得る、〜かもしれない(may)」の語は、この出願を通して、必須の意味（即ち、〜しなければならない）の意味ではなく、許容の意味（即ち、〜する可能性がある、〜することができる）で用いられている。
【発明を実施するための形態】
【００１４】
図１を参照すると、コンピュータシステム１０の１つの実施形態の単純化された高位レベルのブロック図が示されている。図示される例では、システム１０は、１つ以上のプロセッサ１２と、１つ以上のトランスレーションルックアサイドバッファ（ＴＬＢ）１６を備えているメモリ管理ユニット（ＭＭＵ）１４と、メモリ制御器（ＭＣ）１８と、メモリ２０と、１つ以上のＩ／Ｏ＿ＴＬＢ（ＩＯＴＬＢ）２４を備えていてよい１つ以上のＩ／Ｏデバイス２２と、テーブルウォーカ２８、キャッシュ３０、制御レジスタ３２、及び制御論理３４を備えていてよいＩ／Ｏ＿ＭＭＵ（ＩＯＭＭＵ）２６とを含む。プロセッサ１２はＭＭＵ１４に結合され、ＭＭＵ１４はメモリ制御器１８に結合される。Ｉ／Ｏデバイス２２はＩＯＭＭＵ２６に結合され、ＩＯＭＭＵ２６はメモリ制御器１８に結合される。ＩＯＭＭＵ２６内においては、テーブルウォーカ２８、キャッシュ３０、制御レジスタ３２、及び制御論理３４は互いに結合される。
【００１５】
後で更に説明されるように、ＩＯＭＭＵ２６はシステム１０における仮想化を単純化するための種々の特徴を含んでいてよい。以下の説明は、仮想マシンを管理（基礎となるハードウエア上でのそれらの実行をスケジューリングすること）し、種々のシステム資源へのアクセスを制御する等の仮想マシンモニタ（ＶＭＭ）を参照することになる。尚、ＶＭＭはしばしばハイパーバイザとも称される。図示される実施形態においては、単一又は複数のプロセッサ１２が仮想環境でソフトウエアを実行している。従って、３つの仮想マシン１００Ａ、１００Ｂ、及び１００Ｃ（例えばＶＭゲスト１〜３）並びにＶＭＭ１０６が図示されている。所与の実施形態における仮想マシンの数は変化してよく、また仮想マシンがユーザによって起動され停止されるのに従って動的に変化してよい。図示される実施形態においては、仮想マシン１００Ａは、１つ以上のゲストアプリケーション１０２と、ゲストオペレーティングシステム（ＯＳ）１０４とを含む。ＯＳ１０４は、システム１０の物理的なハードウエアよりはむしろ、ＶＭＭ１０６によってＯＳ１０４のために作り出される仮想マシンを制御するので、ＯＳ１０４は「ゲスト」ＯＳと称される。同様にＶＭ１００Ｂ及び１００Ｃもまた、１つ以上のゲストアプリケーション、及びゲストＯＳを各々が含む。
【００１６】
一般に仮想マシン内のアプリケーションは、ゲスト仮想アドレス空間、及びこれに伴いゲスト仮想アドレス（ＧＶＡ）を用いる。各仮想マシン内のゲストＯＳは、その仮想マシン内でのゲスト「物理」アドレス（ＧＰＡ）へのＧＶＡのマッピングを管理してよい。ゲストＯＳがＶＭＭなしに直接システム１０ハードウエア上で動作している場合には、ゲストＯＳによって生成される物理アドレスが、実際にはシステム１０内のメモリロケーションのシステム物理アドレス（ＳＰＡ）になるであろう。しかし、仮想マシン環境においては、ＧＰＡからＳＰＡへのマッピングをＶＭＭ１０６が管理してよい。このように、プロセッサ１２がメモリ要求を実行する場合には、ゲストＯＳ１０４がＧＰＡ（ＶＭＭ１０６によってＳＰＡへと更にマッピングされ得る）へのＧＶＡのマッピングを管理してよい。
【００１７】
図１に示されるように、Ｉ／Ｏデバイス２２からメモリ２０へのパスは、少なくとも部分的にはプロセッサ１２からメモリ２０へのパスからは分離されている。具体的には、Ｉ／Ｏデバイス２２からメモリ２０へのパスは、ＭＭＵ１４を通過しないが、その代わりにＩＯＭＭＵ２６を経由している。従って、ＭＭＵ１４は、Ｉ／Ｏデバイス２２から供給されるメモリ要求に対してはメモリ管理を提供しないであろう。一般にメモリ管理は、１つの種類の仮想アドレス（即ちソフトウエアによって用いられるであろうアドレス）から物理アドレス（即ちメモリ制御器によって用いられるであろうアドレス）へのアドレストランスレーションとメモリ保護とからなる。メモリ保護は、なんらかのレベルの精度（例えばページ）に加えて、種々の他の属性、例えば特権レベル要求、キャッシュ能力及びキャッシュ制御（例えばライトスルー又はライトバック）、コヒーレンシ等でメモリに対する読み出し及び／又は書き込みを制御してよい。任意の一連のメモリ保護が種々の実施形態において実装され得る。幾つかの実施形態においては、ＩＯＭＭＵ２６によって実装されるメモリ保護は、少なくともなんらかの点においてＭＭＵ１４によって実装されるメモリ保護とは異なることがある。１つの実施形態では、ＩＯＭＭＵ２６によって実装されるメモリ保護は、ＩＯＭＭＵ２６及びＭＭＵ１４によって用いられるトランスレーションデータを記憶しているトランスレーションテーブルが共有され得るように定義されてよい（議論の容易化のために図１では別個に図示されているが）。他の実施形態は、要望に応じてＩＯＭＭＵ２６とＭＭＵ１４の間でトランスレーションテーブルを共有しなくてよい。
【００１８】
概してＩ／Ｏデバイス２２は、メモリ２０内のメモリロケーションにアクセスするメモリ読み出し及び書き込み要求のようなメモリ要求を、そして幾つかのケースではトランスレーション要求を発行するように構成されてよい。メモリ要求は、例えば、直接メモリアクセス（ＤＭＡ）読み出し又は書き込み動作の一部であってよい。ＤＭＡ動作はプロセッサ１２によって実行されているソフトウエアによって開始されてよく、ソフトウエアは、ＤＭＡ動作を直接的に又は間接的に実行するようにＩ／Ｏデバイス２２をプログラミングしている。プロセッサ上で実行中のソフトウエアが動作しているアドレス空間に応じて、メモリ２０にアクセスするための当該アドレス空間に対応するアドレスがＩ／Ｏデバイス２２へ提供されてよい。例えば、プロセッサ１２上で実行中のゲストアプリケーション（例えばＡｐｐ１０２）は、Ｉ／Ｏデバイス２２にＧＶＡを提供してよい一方で、プロセッサ１２上で実行中のゲストＯＳ（例えばＯＳ１０４）は、Ｉ／Ｏデバイス２２にＧＰＡを提供してよい。いずれの場合においても、Ｉ／Ｏデバイス２２がメモリアクセスを要求するときには、ゲストアドレスは、ＩＯＭＭＵ２６によって、メモリにアクセスするための対応するシステム物理アドレス（ＳＰＡ）へとトランスレートされるであろうし、そしてシステム物理アドレスがアクセスのためにメモリ制御器１８に提供されるであろう。即ちＩＯＭＭＵ２６は、Ｉ／Ｏデバイス２２によって供給されるメモリ要求を修正して、要求における受信したアドレスをＳＰＡへと変化させて（即ちトランスレートして）よく、そしてメモリ要求は、メモリ制御器１８がメモリ２０にアクセスするためにメモリ制御器１８へと転送されてよい。
【００１９】
種々の実施形態において、ＩＯＭＭＵ２６は、それがＩ／Ｏデバイスから受け取るアドレスの種類に応じて、１レベル若しくは２レベルのトランスレーションを提供し又はトランスレーションを提供しなくてよい。より特定的には、ＩＯＭＭＵ２６は、１レベルの入れ子にされた(nested)トランスレーション又は２レベルのゲストトランスレーションを実行してよい。つまり、ＩＯＭＭＵ２６は、ＧＰＡからＳＰＡへのトランスレーション（１レベル）及びＧＶＡからＳＰＡへのトランスレーション（２レベル）の両方を提供することができる。このように、ゲストアプリケーションは、メモリアクセスを要求する場合には、上述の通りＧＶＡアドレスを直接Ｉ／Ｏデバイスに供給することができ、それにより従来のＶＭＭインターセプション及びトランスレーションを不要にすることができる。この機能性は、進歩的な計算アーキテクチャ、例えば計算から解放された(compute offload)デバイス、ユーザレベルのＩ／Ｏデバイス、及び加速されたＩ／Ｏデバイスが、仮想化されたシステムにおいてより途切れなく用いられることを可能にするであろう。尚、１レベル若しくは２レベルのトランスレーション又はトランスレーションなしが説明されているが、他の実施形態においては、追加的なアドレス空間が用いられ得ることが検討される。そのような実施形態においては、追加のレベルのトランスレーション（即ち多重レベルトランスレーション）は、ＩＯＭＭＵ２６が追加的なアドレス空間に適合することによって行われてよい。
【００２０】
ＩＯＭＭＵ２６は、メモリのアドレス及びＩ／Ｏデバイス２２からのトランスレーション要求をトランスレートするために、幾つかのデータ構造、例えばメモリ２０内に記憶されているＩ／Ｏトランスレーションテーブル３６の１つ以上のセットを用いてよい。一般にトランスレーションテーブルは、アドレスを１つの種類から別の種類へとトランスレートするために用いられ得るトランスレーションデータのテーブルであってよい。トランスレーションテーブルは、トランスレーションデータを任意の方法で記憶していてよい。例えば１つの実施形態においては、Ｉ／Ｏトランスレーションテーブル３６は、ｘ８６及びＡＭＤ６４（商標）命令セットアーキテクチャにおいて定義されるのと同様のページテーブルを含んでいてよい。トランスレーションレベルに応じて、ゲスト仮想アドレスビットの種々のサブセット又はゲスト物理アドレスがテーブルのレベルを索引付けるために用いられてよく、そして各レベルは、トランスレーションの終点（即ちトランスレーションに対する実際のページ番号を記憶している）又は別のテーブルへの点（別のセットのアドレスビットによって索引付けられている）のいずれかであってよい。ページはトランスレーションの単位であってよい（即ち仮想ページ内の各アドレスは同じ物理ページへトランスレートする）。ページは４キロバイトからメガバイト又はギガバイトまで変化するサイズを有していてよい。
【００２１】
また、Ｉ／Ｏトランスレーションテーブル３６は、Ｉ／Ｏデバイスをページテーブルのセットにマッピングする（例えばデバイス識別子によって）デバイステーブル（図３に図示）を含んでいてよい。デバイス識別子（ＩＤ）は種々の方法において定義されてよく、またデバイスが接続される周辺相互接続に依存するであろう。例えば、周辺コンポーネント相互接続(Peripheral Component Interconnect)（ＰＣＩ）デバイスは、バス番号、デバイス番号、及び機能番号（ＢＤＦ）からデバイスＩＤを形成してよい。ハイパートランスポート(HyperTransport)（ＨＴ）デバイスは、バス番号及びユニットＩＤを用いてデバイスＩＤを形成してよい。後で更に説明されるように、デバイステーブルはデバイスＩＤによって索引付けられる複数のエントリを含んでいてよく、そして各エントリは、対応するデバイスＩＤを有するデバイスによって用いられるページテーブルのセットへのポインタを含んでいてよい。また、Ｉ／Ｏデバイスが処理に直接割り当てられており又はユーザ処理と同じアドレス空間において計算を実行する可能性がある場合には、メモリ隔離保護を強化するために、処理アドレス空間が識別されると共にＩＯＭＭＵ２６へ提供されてよい。幾つかの実施形態においては、デバイステーブルは、デバイスのインターラプトを再マッピングするために、インターラプト再マッピングテーブル（図３に図示）へのポインタを更に含んでいてよい。このように、概して、ゲスト仮想アドレス又はゲスト物理アドレスからシステム物理アドレスへのトランスレーションは、１つ以上のトランスレーションテーブルにおける１つ以上のエントリ内に記憶されてよく、そして幾つかのエントリは、他のトランスレーションと共有されてよい。エントリからエントリへとテーブルを横断すること又は「ウォーキングすること」が、仮想アドレスに対するトランスレーションを識別することの一部であってよい。１つの実施形態においては、トランスレーションテーブル３６は、上述のインターラプト再マッピングテーブルを含んでいてよい。
【００２２】
具体的には、図１に示されるＩＯＭＭＵ２６は、所与のメモリ要求に対するトランスレーションのためにＩ／Ｏトランスレーションテーブル３６を検索するテーブルウォーカ２８を含んでいてよい。テーブルウォーカ２８は、トランスレーションテーブル３６からトランスレーションデータを読み出すために、メモリ要求、例えば読み出しメモリ要求を生成してよい。トランスレーションテーブル読み出しは、図１において点線矢印３８及び４０によって示されている。
【００２３】
より迅速なトランスレーションを容易にするために、ＩＯＭＭＵ２６はいくらかのトランスレーションデータをキャッシュしてよい。例えばキャッシュ３０は、ＴＬＢと類似したキャッシュの形態であってよく、先行するトランスレーションの結果をキャッシュし、ゲスト仮想ページ番号及びゲスト物理ページ番号をシステム物理ページ番号及び対応するトランスレーションデータへとマッピングする。トランスレーションが所与のメモリ要求に対してキャッシュ３０内で見つからない場合、テーブルウォーカ２８が起動されてよい。種々の実施形態において、テーブルウォーカ２８は、ハードウエアにおいて、又はマイクロ制御器若しくは他のプロセッサ及び対応する実行可能なコードにおいて（例えばＩＯＭＭＵ２６内のリードオンリメモリ（ＲＯＭ）において）実装され得る。また、キャッシュページテーブル若しくはその部分、及び／又はデバイステーブル若しくはその部分に対して他のキャッシュがキャッシュ３０の一部として含まれていてよい。従って、ＩＯＭＭＵ２６は、メモリ２０内に記憶されているトランスレーションデータから読み出される又は派生するトランスレーションデータを記憶する１つ以上のメモリを含んでいてよい。
【００２４】
制御論理３４は、キャッシュ３０にアクセスして所与のメモリ要求に対するトランスレーションのヒット／ミスを検出するように構成されてよく、またテーブルウォーカ２８を起動することができる。制御論理３４はまた、トランスレートされたアドレスを伴うＩ／Ｏデバイスからのメモリ要求を修正すると共にその要求をメモリ制御器１８に向けて上流へ転送するように構成されてよい。また、制御論理３４は、制御レジスタ３２内へプログラムされるようなＩＯＭＭＵ２６における種々の機能性を制御してよい。例えば制御レジスタ３２は、この実施形態においては、メモリ管理ソフトウエアが制御コマンドをＩＯＭＭＵ２６へと伝達するためのコマンドキュー４２となるべきメモリの領域を画定してよい。制御論理３４は、コマンドキュー４２からの制御コマンドを読み込むと共にそれらの制御コマンドを実行するように構成されてよい。同様に制御レジスタ３２は、イベントログバッファ４４となるべきメモリの別の領域を画定してよい。制御論理３４は種々のイベントを検出することができ、そしてそれらをイベントログバッファ４４へ書き込んでよい。イベントは、トランスレーション及び／又はＩＯＭＭＵ２６の他の機能に関して制御論理３４によって検出される種々のエラーを含んでいてよい。制御論理３４はＩＯＭＭＵ２６の他の特徴を実装していてもよい。
【００２５】
Ｉ／Ｏデバイス２２は、コンピュータシステム１０と他のデバイスの間で通信し、コンピュータシステム１０に対してヒューマンインタフェースを提供し、記憶装置（例えばディスクドライブ、コンパクトディスク（ＣＤ）又はデジタルビデオディスク（ＤＶＤ）のドライブ、ソリッドステート記憶装置、等）を提供し、且つ／又は強化された機能性をコンピュータシステム１０に対して提供する任意のデバイスを備えていてよい。例えばＩ／Ｏデバイス２２は、ネットワークインタフェースカード、集積化ネットワークインタフェース機能性、モデム、ビデオアクセラレータ、オーディオカード又は集積化オーディオハードウエア、ハード若しくはフロッピー(登録商標)ディスクドライブ又はドライブ制御器、ユーザ入力デバイス例えばキーボード、マウス、タブレット等とインタフェースするハードウエア、ビデオディスプレイのためのビデオ制御器、プリンタインタフェースハードウエア、１つ以上の周辺インタフェース例えばＰＣＩ、ＰＣＩエクスプレス(PCI express)（ＰＣＩｅ）、ＰＣＩ−Ｘ、ＵＳＢ、ファイヤワイヤ(firewire)、ＳＣＳＩ（小型コンピュータシステムインタフェース(Small Computer System Interface)等へのブリッジ、サウンドカード、及び種々のデータ収集カード例えばＧＰＩＢ又はフィールドバスインタフェースカード、等の１つ以上を備えていてよい。「周辺デバイス」の用語は、何らかのＩ／Ｏデバイスを記述するものとしても用いられる。
【００２６】
場合によっては、１つ以上のＩ／Ｏデバイス２２は、ＩＯＴＬＢ、例えばＩＯＴＬＢ２４及び／又はＭＭＵ（例えば図２のプライベートＭＭＵ２３Ｄ）を備えていてよい。これらのＩＯＴＬＢは、それらがＩＯＭＭＵ２６に対して外部にあることから、「リモートＩＯＴＬＢ」と称されることがある。そのような場合には、既にトランスレートされたアドレスは、ＩＯＭＭＵ２６がメモリ要求を再びトランスレートすることを試みないように、何らかの方法で印を付されてよい。１つの実施形態においては、トランスレートされたアドレスは、「事前トランスレート済み(pretranslated)」と印を付されてよい。
【００２７】
メモリ制御器１８は、メモリ２０とシステム１０の残りとの間でインタフェースするように設計された任意の回路を備えていてよい。メモリ２０は、１つ以上のＲＡＭＢＵＳ＿ＤＲＡＭ（ＲＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、ＤＤＲ＿ＳＤＲＡＭ、スタティックＲＡＭ等の任意の半導体メモリを備えていてよい。メモリ２０はシステム内で分散されていてよく、これに伴い多重メモリ制御器１８があってよい。
【００２８】
ＭＭＵ１４はプロセッサ１２からのメモリ要求のためのメモリ管理ユニットを備えていてよい。ＭＭＵはＴＬＢ１６に加えてテーブルウォーク機能性を含んでいてよい。トランスレーションがＭＭＵ１４によって行われる場合、ＭＭＵ１４はＣＰＵトランスレーションテーブル５０に対してトランスレーションメモリ要求（例えば図１において点線矢印４６及び４８によって示される）を生成してよい。ＣＰＵトランスレーションテーブル５０は、プロセッサ１２によって実装される命令セットアーキテクチャにおいて定義されるようなトランスレーションデータを記憶していてよい。
【００２９】
プロセッサ１２は、任意の所望の命令セットアーキテクチャを実装している任意のプロセッサハードウエアを備えていてよい。１つの実施形態においては、プロセッサ１２は、ｘ８６アーキテクチャ、より特定的にはＡＭＤ６４（商標）アーキテクチャを実装している。種々の実施形態は、スーパーパイプライン化されており(superpipelined)且つ／又はスーパースカラ(superscalar)であってよい。２つ以上のプロセッサ１２を含む実施形態は、個別的に、又はチップ多重プロセッサ(chip multiprocessors)（ＣＭＰ）として且つ／若しくはチップ多重スレッド化された(chip multithreaded)（ＣＭＴ）ものとして実装されてよい。
【００３０】
システム１０はシステムの高位レベルの機能性を示しており、実際の物理的な実装は多くの形態をとり得る。例えばＭＭＵ１４は、各プロセッサ１２内に共通に一体化されている。１つのメモリ２０が示されているが、幾つかの実施形態では、メモリシステムは分散されたメモリシステムであってよく、この場合、メモリアドレス空間は、物理的に別個のメモリ制御器に結合される物理的に別個の多重化されたメモリにマッピングされる。ＩＯＭＭＵ２６は、Ｉ／Ｏソースのメモリ要求とメモリ２０の間のパスに沿ってどこにあってもよく、また２つ以上のＩＯＭＭＵがあってもよい。更に、複数のＩＯＭＭＵはシステムの異なる部分内の異なる点にあってよい。
【００３１】
図２は、複数のプロセッサノード間のＨｙｐｅｒＴｒａｎｓｐｏｒｔ（商標）（ＨＴ）コヒーレントリンク６１と、プロセッサノード及びＩ／Ｏデバイスの間のＨＴ＿Ｉ／Ｏリンク（例えば７０Ａ及び７０Ｂ）とを用いるシステムの実施形態の１つの例である。より特定的には、１つの実施形態においては、ＨＴ＿Ｉ／Ｏリンク（例えば７１Ａ）が、Ｉ／Ｏハブと他の周辺相互接続にブリッジするＩ／Ｏデバイスとの間で用いられてよい。加えて、任意の他のコヒーレント相互接続が複数のプロセッサノードの間で用いられてよく、且つ／又は任意の他のＩ／Ｏ相互接続がプロセッサノードとＩ／Ｏデバイスの間で用いられてよい。例えば、Ｉ／Ｏリンク７１Ｂ、７１Ｃ、及び７１Ｄは種々の実施形態においてＰＣＩｅリンクであってよい。また、別の例はノースブリッジに結合されるプロセッサを含んでいてよく、ノースブリッジは、伝統的なＰＣ設計においてはメモリ及び１つ以上のＩ／Ｏ相互接続に更に結合される。
【００３２】
図２に示される実施形態を参照すると、システム１０ａは処理ノード６０Ａ〜６０Ｂを備えており、処理ノード６０Ａ〜６０Ｂはそれぞれプロセッサ１２Ａ〜１２Ｂを備えており、更にプロセッサ１２Ａ〜１２ＢはそれぞれＭＭＵ１４Ａ〜１４Ｂを備えている。処理ノード６０Ａ〜６０Ｂはまた、メモリ制御器１８Ａ〜１８Ｂを含む。プロセッサ１２Ａ〜１２Ｂの各々は、上述したプロセッサ１２の例であってよい。同様にＭＭＵ１４Ａ〜１４Ｂ及びメモリ制御器１８Ａ〜１８Ｂの各々は、図１におけるＭＭＵ１４及びメモリ制御器１８の例であってよい。図示される実施形態においては、ＭＭＵ機能性はプロセッサ内に組み込まれている。
【００３３】
システム１０ａは、メモリ２０Ａ〜２０Ｂを備えている分散メモリシステムを含む。システム物理アドレス空間は、メモリ２０Ａ〜２０Ｂにわたって分散されていてよい。従って、所与のアドレスを指定している所与のメモリ要求は、その所与のアドレスが割り当てられているメモリ２０Ａ又は２０Ｂに結合されるメモリ制御器１８Ａ又は１８Ｂに経路付けられる。
【００３４】
Ｉ／Ｏデバイス（例えば図２に示されるＩ／Ｏハブ６２Ａ〜６２Ｂに結合されるＩ／Ｏデバイス２２Ａ〜２２Ｄ）からのメモリ要求は、当該メモリ要求をサービスすることになるメモリ制御器１８Ａ〜１８Ｂに到達するのに全て同じパスをとらなくてよい。例えばＩ／Ｏデバイス２２Ａ〜２２Ｂはメモリ要求をＩ／Ｏハブ６２Ａへ送信してよく、Ｉ／Ｏハブ６２Ａはそれらの要求を処理ノード６０Ａへ送信する。所与のメモリ要求のアドレスがメモリ２０Ｂに割り当てられている場合、処理ノード６０Ａはその所与のメモリ要求を処理ノード６０Ｂへ送信してよく、その結果、メモリ制御器１８Ｂがその要求を受信して処理することができる。Ｉ／Ｏデバイス２２Ｃ〜２２Ｄはメモリ要求をＩ／Ｏハブ６２Ｂへ送信してよく、Ｉ／Ｏハブ６２Ｂはそれらの要求を処理ノード６０Ｂへ送信してよい。所与のメモリ要求のアドレスがメモリ２０Ａに割り当てられている場合、処理ノード６０Ｂはその所与のメモリ要求を処理ノード６０Ａへ送信してよい。
【００３５】
ＩＯＭＭＵは、Ｉ／Ｏソースのメモリ要求とメモリ２０の間のパスに沿ってどこにあってもよい。図示される実施形態においては、ＩＯＭＭＵ２６Ａ〜２６Ｂは、Ｉ／Ｏハブ６２Ａ〜６２Ｂ内に含まれている。従って、対応するハブに結合されるＩ／Ｏデバイスによって供給される任意のメモリ要求は、そのＩ／Ｏハブ内のＩＯＭＭＵによってトランスレートされてよい。他の実施形態は、ＩＯＭＭＵを、Ｉ／Ｏデバイス内のＩＯＴＬＢから処理ノード６０Ａ〜６０Ｂ内のＩＯＭＭＵまでの、更にはメモリ制御器１８Ａ〜１８ＢにおけるＩＯＭＭＵまでの異なる場所に置いてよい。更に、ＩＯＭＭＵは、システムの異なる部分における異なる点に位置していてよい。例えば幾つかの実施形態においては、Ｉ／Ｏデバイスは、図示されるようなローカルメモリ２４Ｄを含み得るデバイスであってよい。従ってＩ／Ｏデバイス２２Ｄはまた、ローカル／プライベートＭＭＵ２３Ｄを含む。
【００３６】
図３を参照すると、Ｉ／Ｏトランスレーションテーブル３６の１つの実施形態を説明する図が示されている。具体的には、Ｉ／Ｏトランスレーションテーブル３６は、デバイステーブル３６Ａ、インターラプト再マッピングテーブル３６Ｂ、及び２セットのＩ／Ｏページテーブル（例えば３６Ｃ及び３６Ｄ）を含んでいてよい。制御レジスタ３２の１つ（制御レジスタ３２Ａ）もまた、図３に示されている。制御レジスタ３２Ａは、デバイステーブル３６Ａのベースアドレスを記憶していてよい。
【００３７】
デバイステーブル３６Ａは、デバイスに割り当てられたデバイスＩＤによって索引付けられる複数のエントリを含む。従って、所与のデバイスはデバイステーブル３６Ａ内のエントリの１つに対応する（但し、デバイスが多重デバイスＩＤを有する場合を除き、又はデバイスがブリッジデバイスで他と集約されたトラフィックを有し且つそのトラフィックがそのブリッジのデバイスＩＤの下で送信される場合を除く）。デバイステーブルエントリは種々のデータを含み得る。例示的なデバイステーブルエントリ３２５の部分が図４に示されており、以下に更に詳細に説明される。
【００３８】
所与のデバイステーブルエントリ３２５は、Ｉ／Ｏページテーブル３６Ｃ及び３６Ｄへのポインタ（矢印３０１及び３０２によって示される）を含んでいてよい。ポインタは、Ｉ／Ｏページテーブル３６Ｃ又は３６Ｄ内でトランスレーション検索するための開始点であるページテーブルを指し示すことができる。図示されるように、開始ページテーブルは、上述したように、他のページテーブルへのポインタを階層的な形態で含んでいてよい。以下に更に説明されるように、実装されたトランスレーション処理に従って、幾つかのテーブルは処理識別子によって索引付けられていてよい一方で、他のテーブルは、トランスレートされるべきゲスト仮想アドレス又はゲスト物理アドレスのいずれかの種々のビットを用いて索引付けられてよい。
【００３９】
デバイステーブルエントリ３２５はまた、インターラプト再マッピングテーブル３６Ｂへのポインタを含んでいてよい（矢印３０４によって示される）。インターラプト再マッピングデータは、あるデバイスによってインターラプト要求が送信される場合に用いられてよく、そしてインターラプトＩＤによって索引付けられてよい。インターラプトＩＤは、要求されたインターラプトを識別するデータを備えていてよく、そしてインターラプト要求を送信するのに用いられるメカニズムに基づいて異なっていてよい。
【００４０】
尚、１つのデバイステーブル３６Ａが示されているが、所望により多重デバイステーブルが維持されていてもよい。制御レジスタ３２Ａ内のデバイステーブルベースアドレスは、他のデバイステーブルを指し示すために変化し得る。更に、デバイステーブルは、必要に応じて上述のページテーブルと同様に階層的であってよい。同様に、１つのインターラプト再マッピングテーブル３６Ｂが示されているが、多重インターラプトマッピングテーブルが、例えばデバイステーブル３６Ａ内のエントリ毎に１つまであってよい。また、ページテーブルの多重セットが、例えばデバイステーブル３６Ａ内のエントリ毎に１つまであってよい。尚、互いに独立しているが、他の実施形態は、インターラプト再マッピング機能性なしにＩ／Ｏトランスレーション機能性を実装し得る。
【００４１】
図示される実施形態においては、Ｉ／Ｏトランスレーションテーブル３６Ｃ及び３６Ｄは、１レベル及び２レベルのゲストトランスレーションの種々の組み合わせをサポートし得る。点線によって示されるように、トランスレーションがゲスト（即ち２レベル）トランスレーションである場合（破線によって示される）、矢印３０１で始まるパスをたどる。一方、ゲストトランスレーションが有効でない場合には、矢印３０２で始まる実線のパスをたどる。
【００４２】
より特定的には、ＧＶＡを含むメモリアクセス要求又はトランスレーション要求がＩ／Ｏデバイスから受信されると、当該要求のデバイスＩＤに対応するデバイステーブルエントリがアクセスされる。図５の説明と共に後で更に詳細に説明されるように、ＧＣＲ３テーブル３０７のベースアドレスへのＳＰＡポインタ（例えば３０１）が用いられ、またＧＣＲ３テーブル３０７内へ索引付けるために処理ＩＤ（例えばＰＡＳＩＤ）が用いられてよい。ＧＣＲ３テーブル３０７内のエントリは、ＧＣＲ３ページテーブル３１１のベースへのＧＰＡポインタを含んでいてよい。しかし、テーブル内のこのＧＰＡポインタ及び後続の全てのＧＰＡポインタは、例えばメモリ内の次のページテーブルにアクセスするために、トランスレーション論理及びページテーブルのセット、例えばテーブル３３３及び３３５を用いてＳＰＡへとトランスレートされてよい。このトランスレーションメカニズムは、図３においてＧＰＡ／ＳＰＡトランスレーションユニット３０９Ａ、３０９Ｂ、３０９Ｃ、及び３０９Ｄによって表されている。要求のＧＶＡの幾つかの数のビットが、ＧＣＲ３ページテーブル３１１内へ索引付けるために用いられてよい。１つの実施形態においては、３１１内の対応するエントリは、ページマップレベル４（ＰＭＬ４）ページテーブル３１３のベースへのＧＰＡポインタを含んでいてよい。入れ子にされたページテーブルの各々におけるその後のアドレスもまた、次のページのベースアドレスを指し示すＧＰＡであってよく、あるいは最後のテーブル（例えば３１５）である場合には、エントリは物理メモリページへのＧＰＡポインタを含んでいてよい。これらのテーブルの各々（例えば３１３，３１５）はまた、Ｉ／Ｏ要求のＧＶＡによって索引付けられていてよい。最終的なトランスレーション（ＳＰＡ）は、ＧＶＡの一部分（例えば最後の数ビット）とメモリ３１７内の物理ページのＳＰＡとを連結させることによって得られるであろう。
【００４３】
このように、ゲストトランスレーションテーブル及び入れ子にされたトランスレーションテーブルの両方が２レベルのゲストトランスレーションにおいて用いられてよい。しかし、ＧＰＡがＩ／Ｏデバイスによって提供される場合には、ホストトランスレーションページテーブル３６Ｄのベースアドレスを提供するポインタ３０２を用いることによって、１レベルのトランスレーションが行われてもよい。より特定的には、デバイステーブルエントリにおけるゲスト情報は無視され、そして他のページテーブル経路付けエントリ情報（図４に示される）が、対応するホストトランスレーションページテーブルにアクセスするために用いられてよい。トランスレーションの種々のレベルにおいて、各連続するページテーブル内へ索引付けるために、ＧＰＡの異なるサブセットのビットが用いられ得る。特に、ポインタ３０２は、ＰＭＬ４ページテーブル３３３のベースへのＳＰＡポインタであってよい。ゲストテーブル３６Ｃとは対照的に、ホストページテーブル３６Ｄ内の各ポインタは、次のテーブルのベースを指し示すＳＰＡであってよい。ＰＭＬ４ページテーブル３３３内のＧＰＡによって索引付けられるエントリは、ＰＭＬ３／２ページテーブル３３５のベースへのＳＰＡポインタを含む。実際のページテーブルレベル（即ち３又は２）に応じて、ページテーブル３３５のエントリ内のポインタは、次のテーブルへのＳＰＡポインタ又は物理メモリページ３３７のＳＰＡであってよい。従って、最終的なトランスレーション（ＳＰＡ）は、ＧＰＡの一部分（例えば最後の数ビット）とメモリ３３７内の物理ページのＳＰＡとを連結させることによって得られるであろう。
【００４４】
メモリ隔離を保つために、１つの実施形態では、各後続のページテーブルにアクセスするときに、許可がチェックされてよく、そして許可矛盾があり又はページが存在しない場合には、ＩＯＭＭＵ２６は、トランスレーション及び／又はルックアップを停止し、そしてページフォールトを内部的に発行すると共にエラーを記録してよい。他の実施形態においては、各段階で、ＩＯＭＭＵは任意のエラーを単純に累積して、トランスレーションの最後にトランスレーションを破棄し、ページフォールトを発行し、そしてエラーを記録してよく、あるいはこれらの何らかの組み合わせを行ってよい。
【００４５】
図４を参照すると、例示的なデバイステーブルエントリの１つの実施形態の図が示されている。尚、図４の実施形態において示されるフィールドは、インターラプト再マッピング及び／又はアドレストランスレーションに関係していてよく、そして種々の実施形態において他の目的のために他のフィールドが提供されてよい。図示される実施形態においては、デバイステーブルエントリ３２５は２５６ビットエントリである。しかし、他の実施形態は、フィールド及び他のフィールドのスーパーセット、フィールドのサブセット、又は他のフィールドとの組み合わせにおけるサブセットを実装していてよい。従ってデバイステーブルエントリ３２５は、所望に応じて任意の数のビットであってよい。フィールドは１つ以上のビットを備えていてよく、そのエンコーディングは、ＩＯＭＭＵ２６によって解釈されるときに特定の意味を割り当てられている。この実施形態に対してフィールドが単一ビットである場合には、それは１ビット(a bit)と称されることがある。しかし、他の実施形態においては、同様の目的のために多重ビットフィールドが用いられてよい。この実施形態のために、図４に示されるビット範囲を有する多重ビットフィールドが示されている。
【００４６】
特定のインターラプトがブロックされ又は修正されずに通過させられるのかを制御するために、種々の特定のインターラプト制御ビットがＲｅｓａｅｖｅｄ＿ａｎｄ＿Ｏｔｈｅｒフィールド内に設けられていてよい。インターラプトテーブルポインタフィールド（ＩｎｔＴａｂｌｅＰｔｒ）は、上述のインターラプト再マッピングテーブルのベースアドレスを記憶していてよい。インターラプトテーブル長（ＩｎｔＴａｂｌｅＬｅｎ）は、インターラプトテーブルの範囲を指定する。インターラプトテーブル長フィールドは、様々な可能な長さ（例えば１つの実施形態のためには、２のべき乗で１〜２０４８）に対してエンコードされ得る。インターラプトメッセージに対してＩ／Ｏページフォールトが検出された場合に、イベントログバッファ４４内のイベントログエントリが作成されるか否かを表示するために、ＩＧビットが用いられてよい。インターラプト有効（ＩＶ）ビットは、インターラプト関連フィールドが有効であるか否かを表示してよい。フィールドが有効でない場合には、ＩＯＭＭＵ２６は全てのインターラプトを修正せずに通過させてよい。
【００４７】
ゲストＣＲ３（ＧＣＲ３）テーブルルートポインタ（ＧＣＲ３ＴａｂｌｅＲｔＰｔｒ）フィールドは、Ｉ／Ｏデバイスに対するＣＲ３テーブルのＳＰＡを含んでいてよい。周辺ページサービス要求（ＰＰＲ）ビットは、ＩＯＭＭＵが周辺ページサービス要求ログエントリへ変換する周辺ページサービス要求を周辺機器が発行してよいかどうか、あるいは要求がエラーとして取り扱われるかどうかを表示する。尚、ＧＣＲ３ＴａｂｌｅＲｔＰｔｒは、図示される実施形態においては多重フィールドに分解されているが、他の実施形態においては、ＧＣＲ３ＴａｂｌｅＲｔＰｔｒは、１つの連続的なフィールドであってよく、あるいは所望に応じて異なるように分解されてよい。
【００４８】
ＳｙｓＭｇｔフィールドは、システム管理範囲における通信の更なる制御を提供するためにエンコードされてよい。具体的には、１つの実施形態においては、ＳｙｓＭｇｔフィールドは、当該範囲内の要求をブロックし、当該範囲内の要求を修正せずに転送し（ポストされた書き込みのみ）、ＩＮＴｘメッセージへマッピングしている要求を修正せずに転送し（ポストされた書き込みのみ）、又はＩ／Ｏページテーブルを用いて要求をトランスレートするようにエンコードされてよい。ＩｏＣｔｌフィールドは、Ｉ／Ｏ空間範囲における通信の更なる制御を提供するためにエンコードされてよい。具体的には、１つの実施形態においては、ＩｏＣｔｌフィールドは、当該範囲内の要求をブロックし、要求を修正せずに転送し、又はＩ／Ｏページテーブルを用いて要求をトランスレートするようにエンコードされてよい。しかし、１つの実施形態においては、これらのフィールドの幾つか（例えばＳｙｓＭｇｔ、ＩｏＣｔｌ）は、ＧＰＡ−ＳＰＡトランスレーションのみに関連していてよい一方、ＧＶＡ−ＳＰＡトランスレーションには適用されなくてよい。
【００４９】
ＤｏｍａｉｎＩＤは、異なるデバイスがそれらのトランスレーションデータを区別するように、キャッシュ３０エントリとＩＯＭＭＵ２６内の任意の他のキャッシュエントリとをタグ付けるために用いられる。複数のデバイスがトランスレーションテーブルを共有する場合に、それらは同じＤｏｍａｉｎＩＤを用いてキャッシュエントリを共有することができる。ＤｏｍａｉｎＩＤは完全にソフトウエアの制御の支配下にあり、従って制御ソフトウエア（例えば仮想マシンモニタ、又は非仮想マシン実装におけるオペレーティングシステム）に対する柔軟性を許容して、Ｉ／Ｏデバイスを、トランスレーションデータを共有する又はデバイスを隔てるドメインへとグループ化することができる。例えば、所与の仮想マシンに割り当てられたデバイスは同じＤｏｍａｉｎＩＤを有していてよく、そして異なるＤｏｍａｉｌＩＤは異なる仮想マシンに対して用いられてよい。従って、隔てられた複数のデバイス及びグループ化された複数のデバイスの任意の組み合わせが創出されてよい。
【００５０】
１つの実施形態においては、ゲストＣＲ３レベル（ＧＬＸ）ビットは、ＩＯＭＭＵによって実行されることになるＧＣＲ３ルックアップの種類（即ち１レベル又は２レベルのＧＣＲ３テーブル）を指定する。ゲストトランスレーション有効（ＧＶ）ビットは、２レベル（即ち入れ子にされ且つゲストのレベル）トランスレーション又は１レベル（例えばホスト）トランスレーションのどちらが実行されることになるかを決定する。１つの実施形態においては、ＧＶビットがクリアである場合、ＧＬＸビットフィールド及びＧＣＲ３ＴａｂｌｅＲｔＰｔｒフィールドは無視される。
【００５１】
ページテーブルポインタ（ＰａｇｅＴａｂｌｅＰｔｒ）は、ホストトランスレーションページテーブル３６Ｄへのポインタである。このポインタは、Ｉ／ＯデバイスがＧＰＡを提供する場合に用いられてよい。モードフィールド（Ｍｏｄｅ）は、デバイスのＩ／Ｏページテーブルの深さ、及びトランスレーションが完全に無効にされているかどうかを表示するためにコード化されてよい。例えば、ＳＰＡを提供し且つ要求が事前にトランスレートされたものとしてマークしているデバイスに対して、対応するデバイスエントリは、トランスレーションを無効にするためにエンコードされたこのフィールドを有していてよい。他のエンコーディングは、このエントリにマッピングされている要求に対してトランスレーションが開始することになるページテーブル階層内のレベルを表示してよい。ＴＶビットは、ページトランスレーションデータが有効であるか否かを表示し、そしてＶビットはエントリ８０が有効であるかどうかを表示する。
【００５２】
図５を参照すると、ゲスト仮想アドレストランスレーションメカニズムの更に詳細な態様を表す図が示されている。上述したように、デバイステーブル３６Ａは、各々がＧＣＲ３ＴａｂｌｅＲｔＰｔｒフィールドを含む幾つかのエントリ（ＤＴＥ）を含んでいてよい。当該エントリに対してゲストトランスレーションが有効である場合、フィールドはメモリ内のゲストＣＲ３テーブル５０１へのＳＰＡポインタを含むことになる。図示されるように、ＧＣＲ３テーブル５０１は、デバイスの要求に関連するＰＡＳＩＤ値によって索引付けられていてよい。上述したように、デバイスＰＡＳＩＤは、用いられているＩ／Ｏ相互接続の種類に応じて種々の方法で得られてよい。図示されるようにＧＣＲ３テーブル５０１は、各々がＧＣＲ３ベースポインタを含む２つのエントリを有しており、ＧＣＲ３ポインタは、上述したようにゲストページテーブル５０３及び５０５へのＧＰＡポインタであってよい。図示される実施形態においては、ゲストページテーブル５０３及び５０５は、Ｉ／Ｏ要求のＧＶＡによって索引付けられていてよい。更に、ゲストページテーブル５０３及び５０５内の各有効なエントリは、それぞれのページマップレベル４テーブルのベースアドレスへのＧＰＡポインタを含んでいてよい。
【００５３】
１つの実施形態においては、ＧＣＲ３テーブル５０１はメモリ内で連続的である必要がある。従って、多数のＰＡＳＩＤを有するシステムにおいては、メモリ管理が煩わしいものになる場合がある。そこで、代替的な実施形態では、ＧＣＲ３テーブルは階層的な方法で実装されてよい。例えば、１つ以上の第２レベルＧＣＲ３テーブル（図示せず）が用いられてよい。そのような実施形態においては、第１レベルＧＣＲ３テーブルがＧＣＲ３ベーステーブルであってよく、そしてＰＡＳＩＤビットの第１のサブセットを用いて索引付けられてよい。第１レベルＧＣＲ３テーブル内の所与のエントリは、それぞれの第２レベルＧＣＲ３テーブルへのＧＰＡポインタを含んでいてよい。第２レベルＧＣＲ３テーブルは、ＰＡＳＩＤの第２のサブセットを用いて索引付けられてよい。第２レベルＧＣＲ３テーブルの各エントリは、テーブル５０３又は５０５のようなゲストページテーブルへのＧＰＡポインタを含んでいてよい。このように、１レベル又は２レベルのＧＣＲ３テーブルのいずれを実装するかの選択は、用いられるＰＡＳＩＤの数に依存する。尚、種々の実施形態において、ＰＡＳＩＤビットのサブセットは、所望に応じて重複していなくてよく、あるいはそれらは重複していてよい。
【００５４】
図６を参照すると、図１〜図５に示されるシステムの実施形態の動作態様を説明するフロー図が示されている。図１〜図６を集合的に参照すると共に図６のブロック６０１において開始すると、Ｉ／Ｏ要求がＩＯＭＭＵ２６によって受信される。例えば、要求は、例えばＶＭアプリケーションの１つを代表して、ＤＭＡアクセスのようなＩ／Ｏメモリアクセス要求であってよい。代替的には、要求は、例えばリモートＩＯＴＬＢを伴うＩ／Ｏデバイスによるトランスレーション要求であってよい。要求がメモリ要求でない場合には、動作はブロック６０４に示されるように進んでよい。一方、要求がメモリ要求である場合には、ＩＯＭＭＵ２６は、例えばオンボードＭＭＵを有しているＩ／Ｏデバイスの場合のように要求が事前にトランスレートされているものとマークされているかどうかを決定してよい（ブロック６０２）。マークされている場合には、アドレスはＳＰＡであろうから、なんらトランスレーションは必要ない。要求が事前にトランスレートされているものとマークされている場合には、ＩＯＭＭＵ２６は要求をメモリ制御器１８へ提供してよい（ブロック６０３）。
【００５５】
ブロック６０２に戻り、要求が事前にトランスレートされているものとマークされていない場合、又は要求がトランスレーション要求である場合には、ＩＯＭＭＵ２６は、トランスレーションのためにキャッシュ３０内でルックアップを行ってよい（ブロック６０４）。トランスレーションが存在する場合には、ＩＯＭＭＵ２６は、そのトランスレーションを要求側へ返送してよく、又はそのトランスレーションをその要求と共にメモリ制御器１８へ供給してよい（ブロック６０３）。
【００５６】
一方、トランスレーションがキャッシュ３０内に存在しない場合（ブロック６０４）、制御論理３４と共にテーブルウォーカ２８がＩ／Ｏトランスレーションテーブル３６にアクセスしてよい。より特定的には、テーブルウォーカ３４が、デバイステーブルベースレジスタ３２Ａにアクセスしてメモリ２０内のデバイステーブルベースアドレスを獲得してよい。テーブルウォーカ２８は、デバイステーブル３６Ａ内へ索引付けるためのデバイスＩＤを用いてよい（ブロック６０５）。要求がＰＡＳＩＤ値を含んでいる場合（ブロック６０６）、テーブルウォーカ２８は、メモリ内のＧＣＲ３テーブルを見つけるために、デバイステーブルエントリ内のＧＣＲ３制御ビット及びＧＣＲ３ＴａｂｌｅＲｔＰｔｒアドレスを用いて２レベルのゲストトランスレーションを実行してよい（ブロック６０７）。上述したように、１つの実施形態においては、ＧＣＲ３ＴａｂｌｅＲｔＰｔｒアドレスはＳＰＡであってよい。テーブルウォーカ２８は、ＧＰＡポインタを用いて対応するＧＣＲ３テーブル及びゲストテーブルを見つけてよく、またＰＡＳＩＤを用いてＧＣＲ３テーブルを索引付けてよい。ブロック６１４に示されるように、また上述したように、各ＧＰＡポインタは、例えばホストトランスレーションページテーブル３６Ｄを用いるＩＯＭＭＵ２６によってトランスレートされてよい。要求のＧＶＡビットの幾つかのサブセットが、単一又は複数のゲストページテーブルを索引付けるために用いられてよい。最後のゲストページテーブルは、ホストページマップレベル４テーブルのベースアドレスへのＧＰＡポインタを含んでいてよい。１つの実施形態においては、各連続するゲストテーブルがアクセスされるのに従って許可がチェックされ、そして任意の失敗した許可は、ページフォールト又は他のエラーを生成してよい（ブロック６０８）。
【００５７】
テーブルウォーカ２８は次いで、各先行するテーブルの各エントリ内のＧＰＡポインタを用いて、ホストトランスレーションテーブル３６Ｄを連続的に見つけることができる。ページテーブルの種々のレベルで、要求のＧＶＡビットの異なるサブセットが、各ホストトランスレーションページテーブル内へ索引付けるために用いられてよい。上述したように、最後のページテーブルが一旦アクセスされると、対応するエントリは、メモリ内の物理ページのＧＰＡを含むであろう。制御論理３４は、そのＧＰＡをＳＰＡへとトランスレートしてよい（ブロック６０９）。制御論理３４は次いで、物理メモリページのＳＰＡをＧＶＡの最後の幾つかのビットと連結させて、最終的なトランスレーションアドレスを獲得することができる（ブロック６１０）。制御論理３４は、要求がメモリ要求である場合には、トランスレーションアドレスを要求と共にメモリ制御器１８へ提供してよい。代替的には、制御論理３４は、要求がトランスレーション要求であった場合には、要求しているＩ／Ｏデバイスへトランスレーションを提供してよい。制御論理３４はまた、将来のトランスレーションルックアップでの使用のために、キャッシュ３０内のトランスレーションを記憶してよい（ブロック６１１）。
【００５８】
ブロック６０６に戻り、要求がＰＡＳＩＤを含んでいない場合には、要求におけるアドレスはＧＰＡである。この場合、制御論理３４は、メモリ内のホストトランスレーションページテーブル３６Ｄを見つけるために、デバイステーブルエントリ内のＰａｇｅＴａｂｌｅＲｔＰｔｒアドレスを用いて１レベルのトランスレーションを実行してよい（ブロック６１２）。上述したのと同様の方法において、テーブルウォーカ２８は、Ｉ／Ｏデバイスに対するホストページマップレベル４テーブルのベースアドレスへのＳＰＡポインタを用いることができる。ゲストトランスレーションとは対照的に、ホストトランスレーションページテーブルにおいては、次のページテーブル／メモリ物理ページへの各ポインタはＳＰＡである。従って、テーブルウォーカ２８は、各先行するテーブルの各エントリ内のＳＰＡポインタを用いて、ホストトランスレーションテーブルを連続的に見つけることができる。ホストページテーブルの各レベルで、要求のＧＰＡビットの異なるサブセットが、各ホストトランスレーションページテーブル内へ索引付けるために用いられてよい。上述したように、最後のページテーブルが一旦アクセスされると、対応するエントリは、メモリ内の物理ページのＳＰＡを含むであろう（ブロック６１３）。制御論理３４は、物理メモリページのＳＰＡを要求のＧＰＡの最後の幾つかのビットと連結させて、最終的なトランスレーションアドレスを獲得することができる（ブロック６１０）。動作はブロック６１１と共に上述のように進行してよい。
【００５９】
尚、上述の実施形態は、ハードウエア、ソフトウエア、又は両方の組み合わせにおいて実装され得る。また、上述のハードウエア構成部品の種々のものは、ハードウエア記述（定義）言語で書かれたソフトウエアを用いて最初に設計され得る。従って、上述の実施形態を実装するために用いられる任意の命令は、種々のタイプの記憶装置に記憶されてよい。このように、種々の実施形態は、以上の説明に従って実装される命令及び／又はデータをコンピュータ可読記憶媒体に記憶することを更に含み得る。一般的に言えば、コンピュータ可読記憶媒体は、磁気媒体又は光学媒体のような記憶媒体又はメモリ媒体、例えばディスク、ＣＤ−ＲＯＭ、ＤＶＤ、揮発性又は不揮発性媒体、例えばＲＡＭ（例えばＳＤＲＡＭ、ＤＤＲ＿ＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭ等）、ＲＯＭ等を含んでいてよい。
【００６０】
上述の実施形態はかなり詳細に説明されてきたが、上述の開示が完全に理解されるならば、多くの変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲は全てのそのような変形及び修正を包含するものとして解釈されることが意図されている。
【図１】
2013500525.tif 000003
【図２】
2013500525.tif 000004
【図３】
2013500525.tif 000005
【図４】
2013500525.tif 000006
【図５】
2013500525.tif 000007
【図６】
2013500525.tif 000008
【手続補正書】
【提出日】平成24年4月4日(2012.4.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
Ｉ／Ｏデバイスによるメモリへの要求を制御するように構成される入力／出力（Ｉ／Ｏ）メモリ管理ユニット（ＩＯＭＭＵ）であって、
前記システムメモリ内に記憶されるトランスレーションデータを用いてＩ／Ｏデバイス生成の要求に関連するアドレスをトランスレートするために２レベルのゲストトランスレーションを行うように構成される制御論理を備え、
前記トランスレーションデータは、デバイステーブル内の１つ以上のデバイステーブルエントリと、ゲストページテーブルのセット及び入れ子にされたページテーブルのセットを含んでいるページテーブルの第１のセットとを含み、
所与の要求に対する前記デバイステーブルエントリはデバイス識別子に基づいて選択され、所与の要求に対して選択されたデバイステーブルエントリはゲストトランスレーションテーブルのセットへのポインタを含み、ゲストページテーブルは入れ子にされたページテーブルのセットへのポインタを含むＩＯＭＭＵ。
【請求項２】
ゲストトランスレーションテーブルの前記セットへの前記ポインタは、コンピュータシステムのプロセッサで実行中の仮想メモリモニタ（ＶＭＭ）によってマッピングされるアドレス空間に対応するシステム物理アドレス（ＳＰＡ）を備え、所与のＳＰＡは前記メモリ内の物理メモリページにアクセスするために用いられる請求項１に記載のＩＯＭＭＵ。
【請求項３】
入れ子にされたページテーブルの前記セットへの前記ポインタは、前記コンピュータシステムのプロセッサ上の仮想マシン（ＶＭ）で実行中のゲストオペレーティングシステムによってマッピングされるアドレス空間に対応するゲスト物理アドレス（ＧＰＡ）を備えており、前記制御論理は、前記ＧＰＡを前記メモリ内の物理メモリページにアクセスするためのＳＰＡへトランスレートするように更に構成される請求項２に記載のＩＯＭＭＵ。
【請求項４】
前記Ｉ／Ｏ要求に関連する前記アドレスは、前記コンピュータシステムのプロセッサ上の仮想マシン（ＶＭ）で実行中のゲストアプリケーションによってマッピングされるアドレス空間に対応するゲスト仮想アドレス（ＧＶＡ）を備えており、前記制御論理は、２レベルのゲストトランスレーションを用いて前記ＧＶＡをＳＰＡへトランスレートするように構成される請求項２に記載のＩＯＭＭＵ。
【請求項５】
前記所与の要求に対する前記デバイステーブルエントリは、ホストトランスレーションページテーブルのセットを含むＩ／Ｏページテーブルの第２のセットへの第２のポインタを更に備える請求項１に記載のＩＯＭＭＵ。
【請求項６】
前記ホストトランスレーションテーブルの少なくとも幾つかは次の連続的なホストトランスレーションテーブルへのポインタを有するエントリを含み、各ポインタは前記コンピュータシステムのプロセッサで実行中の仮想メモリモニタ（ＶＭＭ）によってマッピングされるアドレス空間に対応するシステム物理アドレス（ＳＰＡ）を備え、所与のＳＰＡは前記メモリ内の物理メモリページにアクセスするために用いられる請求項５に記載のＩＯＭＭＵ。
【請求項７】
プロセッサと、
前記プロセッサに結合され、１つ以上のエントリを含んでいるデバイステーブルとゲストページテーブルのセット及び入れ子にされたページテーブルのセットを含んでいるページテーブルのセットとを含むトランスレーションデータを記憶するように構成されるメモリと、
前記システムメモリにアクセスするための要求を生成するように構成される少なくとも１つの入力／出力（Ｉ／Ｏ）デバイスと、
前記Ｉ／Ｏデバイス及び前記メモリに結合され、前記トランスレーションデータを用いてＩ／Ｏデバイス生成の要求に関連するアドレスをトランスレートするために２レベルのゲストトランスレーションを行うように構成されるＩ／Ｏメモリ管理ユニット（ＩＯＭＭＵ）とを備えたシステムであって、
前記ＩＯＭＭＵは、
デバイス識別子に基づいて所与の要求に対するデバイステーブルエントリを選択し、
選択されたデバイステーブルエントリからのポインタを用いてゲストトランスレーションデータ構造のセットにアクセスし、
ゲストページテーブルからのポインタを用いて、入れ子にされたページテーブルの前記セットにアクセスするように構成されるシステム。
【請求項８】
前記ＩＯＭＭＵは、前記デバイステーブルとゲストページテーブルの前記セットとを第１のゲストトランスレーションレベルで用い、入れ子にされたページテーブルの前記セットを第２のゲストトランスレーションレベルで用いて最終的なトランスレーションアドレスを得るように構成される請求項７に記載のシステム。
【請求項９】
前記メモリは、前記プロセッサで実行中の仮想メモリモニタ（ＶＭＭ）によってマッピングされるアドレス空間に対応するシステム物理アドレス（ＳＰＡ）と、前記プロセッサ上の仮想マシン（ＶＭ）で実行中のゲストオペレーティングシステムによってマッピングされるアドレス空間に対応するゲスト物理アドレス（ＧＰＡ）と、前記プロセッサ上の仮想マシン（ＶＭ）で実行中のゲストアプリケーションによってマッピングされるアドレス空間に対応するゲスト仮想アドレス（ＧＶＡ）とを含む複数のアドレス空間内へマッピングされる請求項７に記載のシステム。
【請求項１０】
ゲストトランスレーションテーブルのセットへのポインタはＳＰＡを備え、所与のＳＰＡは前記メモリ内の物理メモリページにアクセスするために用いられる請求項９に記載のシステム。
【請求項１１】
コンピュータシステムのメモリへの入力／出力Ｉ／Ｏ要求を制御するための方法であって、
デバイステーブル内の１つ以上のデバイステーブルエントリと、ゲストページテーブルのセット及び入れ子にされたページテーブルのセットを含んでいるページテーブルの第１のセットとを含むトランスレーションデータをコンピュータシステムのメモリ内に記憶することと、
デバイス識別子に基づいて所与の要求に対してデバイステーブルエントリを選択することと、ゲストトランスレーションテーブルの前記セットにアクセスするために選択されたデバイステーブルエントリからのポインタを用いることとによって、Ｉ／Ｏ要求において受信されるアドレスに対して２レベルのゲストトランスレーションの第１のトランスレーションレベルを制御論理が実行することと、
入れ子にされたページデータ構造の前記セットにアクセスするためにゲストページテーブルからのポインタを用いることによって前記２レベルのゲストトランスレーションの第２のトランスレーションレベルを前記制御論理が実行することとを備えた方法。
【請求項１２】
前記制御論理は前記Ｉ／Ｏ要求における処理識別子を受信することに応答して前記２レベルのゲストトランスレーションを実行する請求項１１に記載の方法。
【請求項１３】
前記Ｉ／Ｏ要求において受信される前記アドレスは、前記コンピュータシステムのプロセッサ上の仮想マシン（ＶＭ）で実行中のゲストアプリケーションによってマッピングされるアドレス空間に対応するゲスト仮想アドレス（ＧＶＡ）を備える請求項１２に記載の方法。
【請求項１４】
前記制御論理は処理識別子を含まないＩ／Ｏ要求を受信することに応答して１レベルのトランスレーションを実行する請求項１３に記載の方法。
【請求項１５】
処理識別子を含まない前記Ｉ／Ｏ要求において受信される前記アドレスは、前記コンピュータシステムのプロセッサ上の仮想マシン（ＶＭ）で実行中のゲストオペレーティングシステムによってマッピングされるアドレス空間に対応するゲスト物理アドレス（ＧＰＡ）を備える請求項１４に記載の方法。
【国際調査報告】
2013500525.tif 000009
2013500525.tif 000010
2013500525.tif 000011