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