(57)【要約】  本発明の一実施例は、アドレス変換の性能を拡張するための手法である。レジスタは、チップセット内の回路によってサポートされる、ゲスト物理アドレスからホスト物理アドレスへのアドレス変換のケーパビリティを示すためのケーパビリティ・インディケータを記憶する。複数のマルチレベル・ページ・テーブルを、アドレス変換におけるページ・ウォークに用いる。ページ・テーブルそれぞれは、ページ・エントリを有している。ページ・テーブル・エントリそれぞれは、ケーパビリティ・インディケータによって示されるケーパビリティに対応する少なくとも１つのエントリ指定子を有している。
2008515093.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
チップセット内の回路によってサポートされる、ゲスト物理アドレスからホスト物理アドレスへのアドレス変換のケーパビリティを示すためのケーパビリティ・インディケータを記憶するためのレジスタと、
前記アドレス変換におけるページ・ウォークのための複数のマルチレベル・ページ・テーブルとを備えており、前記ページ・テーブルそれぞれはページ・テーブル・エントリを有しており、前記ページ・テーブル・エントリそれぞれは、少なくとも、前記ケーパビリティ・インディケータによって示される前記ケーパビリティに対応する１つのエントリ指定子を有している装置。
【請求項２】
請求項１記載の装置であって、前記ケーパビリティ・インディケータは、単一レベル・ページ・テーブル・サポート、マルチレベル・ページ・テーブル・サポート、要求される書き込みバッファ・フラッシュ、高度障害記録サポート、コヒーレンシ制御サポート、サポートされる調節ゲスト・アドレス幅、スーパーページ・サポート、及び最大ゲスト・アドレス幅（MGAW）のうちの少なくとも１つを含む装置。
【請求項３】
請求項２記載の装置であって、スーパーページ・インディケータは、前記アドレス変換に用いられる通常ページ容量及びスーパーページ容量のうちの一方を示す装置。
【請求項４】
請求項２記載の装置であって、スーパーページ容量は、最大１２８ペタバイト（PB）に及ぶ装置。
【請求項５】
請求項３記載の装置であって、前記少なくとも１つのエントリ指定子は、ストライド・フィールド及びスーパーページ・フィールドの一方を有しており、前記ストライド・フィールドは、前記マルチレベル・ページ・テーブル内の次レベル・テーブルをインデクス化するのに用いるゲスト・アドレス・ビット数を定め、前記スーパーページ・フィールドは、前記ページ・テーブル・エントリそれぞれがリーフ・ページ・テーブル・エントリであるかを示す装置。
【請求項６】
請求項５記載の装置であって、前記ページ・テーブル・エントリそれぞれが非リーフ・ページ・テーブル・エントリであることをスーパーページが示す場合にページ・ウォークが続けられる装置。
【請求項７】
請求項５記載の装置であって、前記ページ・テーブル・エントリそれぞれがリーフ・ページ・テーブル・エントリである場合に、前記ページ・ウォークが停止させられ、前記ホスト物理アドレスが、前記スーパーページ・インディケータによって示されるページ容量を有するページにおいて構成される装置。
【請求項８】
請求項５記載の装置であって、複数のページ容量がサポートされることを大容量ページ・テーブル・インディケータが示す場合に前記ストライド・フィールドの値が求められる装置。
【請求項９】
請求項５記載の装置であって、次レベル・ページ・テーブルをインデクス化するのに用いる前記ゲスト・アドレス・ビット数が、通常ページ容量又は大ページ容量に対応する装置。
【請求項１０】
請求項１記載の装置であって、前記ケーパビリティ・インディケータが読み出し専用である装置。
【請求項１１】
チップセット内の回路によってサポートされる、ゲスト物理アドレスからホスト物理アドレスへのアドレス変換のケーパビリティを示すためのケーパビリティ・インディケータをレジスタに記憶する工程と、
前記アドレス変換において複数のマルチレベル・ページ・テーブルを通してウォークする工程とを備えており、前記ページ・テーブルそれぞれはページ・テーブル・エントリを有しており、前記ページ・テーブル・エントリそれぞれは、少なくとも、前記ケーパビリティ・インディケータによって示される前記ケーパビリティに対応する１つのエントリ指定子を有している方法。
【請求項１２】
請求項１１記載の方法であって、前記ケーパビリティ・インディケータは、単一レベル・ページ・テーブル・サポート、マルチレベル・ページ・テーブル・サポート、要求される書き込みバッファ・フラッシュ、高度障害記録サポート、コヒーレンシ制御サポート、サポートされる調節ゲスト・アドレス幅、スーパーページ・サポート、及び最大ゲスト・アドレス幅（MGAW）のうちの少なくとも１つを含む方法。
【請求項１３】
請求項１２記載の方法であって、スーパーページ・インディケータは、前記アドレス変換に用いられる通常ページ容量及びスーパーページ容量のうちの一方を示す方法。
【請求項１４】
請求項１２記載の方法であって、スーパーページ容量は、最大１２８ペタバイト（PB）に及ぶ方法。
【請求項１５】
請求項１３記載の方法であって、前記少なくとも１つのエントリ指定子は、ストライド・フィールド及びスーパーページ・フィールドの一方を有しており、前記ストライド・フィールドは、前記マルチレベル・ページ・テーブル内の次レベル・テーブルをインデクス化するのに用いるゲスト・アドレス・ビット数を定め、前記スーパーページ・フィールドは、前記ページ・テーブル・エントリそれぞれがリーフ・ページ・テーブル・エントリであるかを示す方法。
【請求項１６】
請求項１５記載の方法であって、ウォークする工程は、
前記ページ・テーブル・エントリそれぞれが非リーフ・ページ・テーブル・エントリであることをスーパーページが示す場合にウォークを続ける工程を備える方法。
【請求項１７】
請求項１５記載の方法であって、ウォークする工程は、
前記ページ・テーブル・エントリそれぞれがリーフ・ページ・テーブル・エントリであることを前記スーパーページ・フィールドが示す場合に、前記スーパーページ・インディケータによって示されるページ容量を有するページにおいて前記ホスト物理アドレスを構成する方法。
【請求項１８】
請求項１５記載の方法であって、ウォークする工程は、
複数のページ容量がサポートされることを大容量ページ・テ―ブル・インディケータが示す場合に前記ストライド・フィールドの値を求める工程を備える方法。
【請求項１９】
請求項１５記載の方法であって、次レベル・ページ・テーブルをインデクス化するのに用いる前記ゲスト・アドレス・ビット数が、通常ページ容量又は大ページ容量に対応する方法。
【請求項２０】
請求項１１記載の方法であって、記憶する工程は、
読み出し専用の前記ケーパビリティ・インディケータを記憶する方法。
【請求項２１】
システムであって、
メモリと、
前記メモリをアクセスする旨の要求においてゲスト物理アドレスを生成する入出力（Ｉ／Ｏ）装置と、
前記Ｉ／Ｏ装置及び前記メモリに結合されたチップセットであって、回路を含むチップセットとを備えており、
前記回路は、
前記チップセットによってサポートされる、前記ゲスト物理アドレスからホスト物理アドレスへのアドレス変換のケーパビリティを示すためのケーパビリティ・インディケータを記憶するためのレジスタと、
前記アドレス変換におけるページ・ウォークのための複数のマルチレベル・ページ・テーブルとを備えており、前記ページ・テーブルそれぞれはページ・テーブル・エントリを有しており、前記ページ・テーブル・エントリそれぞれは、少なくとも、前記ケーパビリティ・インディケータによって示される前記ケーパビリティに対応する１つのエントリ指定子を有しているシステム。
【請求項２２】
請求項２１記載のシステムであって、前記ケーパビリティ・インディケータは、単一レベル・ページ・テーブル・サポート、マルチレベル・ページ・テーブル・サポート、要求される書き込みバッファ・フラッシュ、高度障害記録サポート、コヒーレンシ制御サポート、サポートされる調節ゲスト・アドレス幅、スーパーページ・サポート、及び最大ゲスト・アドレス幅（MGAW）のうちの少なくとも１つを含むシステム。
【請求項２３】
請求項２２記載のシステムであって、スーパーページ・インディケータは、前記アドレス変換に用いられる通常ページ容量及びスーパーページ容量のうちの一方を示すシステム。
【請求項２４】
請求項２２記載のシステムであって、スーパーページ容量は、最大１２８ペタバイト（PB）に及ぶシステム。
【請求項２５】
請求項２３記載のシステムであって、前記少なくとも１つのエントリ指定子は、ストライド・フィールド及びスーパーページ・フィールドの一方を有しており、前記ストライド・フィールドは、前記マルチレベル・ページ・テーブル内の次レベル・テーブルをインデクス化するのに用いるゲスト・アドレス・ビット数を判定し、前記スーパーページ・フィールドは、前記ページ・テーブル・エントリそれぞれがリーフ・ページ・テーブル・エントリであるかを示すシステム。
【請求項２６】
請求項２５記載のシステムであって、前記ページ・テーブル・エントリそれぞれが非リーフ・ページ・テーブル・エントリであることをスーパーページが示す場合に前記ページ・ウォークが続けられるシステム。
【請求項２７】
請求項２５記載のシステムであって、前記ページ・テーブル・エントリそれぞれがリーフ・ページ・テーブル・エントリであることを前記スーパーページ・フィールドが示す場合に、前記ページ・ウォークが停止させられ、前記スーパーページ・インディケータによって示されるページ容量を有するページにおいて前記ホスト物理アドレスが構成されるシステム。
【請求項２８】
請求項２５記載のシステムであって、複数のページ容量がサポートされることを大容量ページ・テーブル・インディケータが示す場合に前記ストライド・フィールドの値が求められるシステム。
【請求項２９】
請求項25記載のシステムであって、次レベル・ページ・テーブルをインデクス化するのに用いる前記ゲスト・アドレス・ビット数が、通常ページ容量又は大ページ容量に対応するシステム。
【請求項３０】
請求項２１記載のシステムであって、前記ケーパビリティ・インディケータが読み出し専用であるシステム。
【請求項３１】
製造物品であって、
チップセット内の回路によってサポートされる、ゲスト物理アドレスからホスト物理アドレスへのアドレス変換のケーパビリティを示すためのケーパビリティ・インディケータをレジスタに記憶することと、前記アドレス変換において複数のマルチレベル・ページ・テーブルを通してウォークすることであって、前記ページ・テーブルそれぞれはページ・テーブル・エントリを有しており、前記ページ・テーブル・エントリそれぞれは、少なくとも、前記ケーパビリティ・インディケータによって示される前記ケーパビリティに対応する１つのエントリ指定子を有していることと
を備える動作をマシンによってアクセスされると前記マシンに行わせるデータを有しているマシン・アクセス可能な媒体を備える製造物品。
【請求項３２】
請求項３１記載の製造物品であって、前記ケーパビリティ・インディケータは、単一レベル・ページ・テーブル・サポート、マルチレベル・ページ・テーブル・サポート、要求される書き込みバッファ・フラッシュ、高度障害記録サポート、コヒーレンシ制御サポート、サポートされる調節ゲスト・アドレス幅、スーパーページ・サポート、及び最大ゲスト・アドレス幅（MGAW）のうちの少なくとも１つを含む製造物品。
【請求項３３】
請求項３２記載の製造物品であって、スーパーページ・インディケータは、前記アドレス変換に用いられる通常ページ容量及びスーパーページ容量のうちの一方を示す製造物品。
【請求項３４】
請求項３２記載の製造物品であって、スーパーページ容量は、最大１２８ペタバイト（PB）に及ぶ製造物品。
【請求項３５】
請求項３３記載の製造物品であって、前記少なくとも１つのエントリ指定子は、ストライド・フィールド及びスーパーページ・フィールドの一方を有しており、前記ストライド・フィールドは、前記マルチレベル・ページ・テーブル内の次レベル・テーブルをインデクス化するのに用いるゲスト・アドレス・ビット数を定め、前記スーパーページ・フィールドは、前記ページ・テーブル・エントリそれぞれがリーフ・ページ・テーブル・エントリであるかを示す製造物品。
【請求項３６】
請求項３５記載の製造物品であって、ウォークが、
前記ページ・テーブル・エントリそれぞれが非リーフ・ページ・テーブル・エントリであることをスーパーページが示す場合にウォークを続けることを備える製造物品。
【請求項３７】
請求項３５記載の製造物品であって、ウォークを前記マシンに行わせる前記データは、
前記ページ・テーブル・エントリそれぞれがリーフ・ページ・テーブル・エントリであることを前記スーパーページ・フィールドが示す場合に、前記スーパーページ・インディケータによって示されるページ容量を有するページにおいて前記ホスト物理アドレスを構成すること
を備える動作を前記マシンに行わせるデータを備えている製造物品。
【請求項３８】
請求項３５記載の製造物品であって、ウォークを前記マシンに行わせる前記データは、
複数のページ容量がサポートされることを前記大容量ページ・テ―ブル・インディケータに示す場合に前記ストライド・フィールドの値を求めること
を備える動作を前記マシンに行わせるデータを備えている製造物品。
【請求項３９】
請求項３５記載の製造物品であって、次レベル・ページ・テーブルをインデクス化するのに用いる前記ゲスト・アドレス・ビット数が、通常ページ容量又は大ページ容量に対応する製造物品。
【請求項４０】
請求項３１記載の製造物品であって、ウォークを前記マシンに行わせる前記データは、
読み出し専用の前記ケーパビリティ・インディケータを記憶すること
を備える動作を前記マシンに行わせるデータを備えている製造物品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、マイクロプロセッサの分野に関し、特に入出力（I／O）仮想化に関する。
【背景技術】
【０００２】
高性能アプリケーションをサポートするうえでマイクロプロセッサ・アーキテクチャが一層複雑になるにつれ、I／O管理には、チャレンジがもたらされている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
I／O管理の課題を解決するための既存の手法はいくつかの欠点を有している。一手法は、ソフトウェアのみのI／O仮想化を用いて仮想マシン（VM）のI／Oをサポートする。この手法は、限られた機能、性能及びロバスト性を有している。ゲスト・オペレーティング・システム（OS）及びアプリケーションによってみられる機能は、VMモニタ（VMM）ソフトウェアにおいてエミュレートされる仮想装置によってサポートされる機能によって制限される。ゲストI／O動作はVMMによってトラップされ、下にある物理装置ハードウェアに投入される前にプロキシ又はエミュレートされる。それによって性能が劣悪になる。更に、ハードウェア装置の装置ドライバの全部又は一部が、特権ＶＭＭソフトウェアの一部として実行される。このことは、プラットフォームの全体的なロバスト性にマイナスの影響を及ぼし得る。専用の変換構造を用いた手法は、専用の装置、又は限定された使用法モデルをサポートすることが可能であるに過ぎない。一般的なＩ／Ｏメモリ管理装置は、限定されたサイズ又は複雑度のＩ／Ｏ仮想アドレス空間へのサポートを提供するに過ぎない。
【課題を解決するための手段】
【０００４】
本発明の実施例は、本発明の実施例を例証するのに用いる以下の説明及び添付図面を参照することによって最もよく理解することができる。
【０００５】
本発明の一実施例は、アドレス変換の性能を向上させるための手法である。レジスタは、チップセット内の回路によってサポートされる、ゲスト物理アドレスからホスト物理アドレスへのアドレス変換のケーパビリティを示すためのケーパビリティ・インディケータを記憶する。複数のマルチレベル・ページ・テーブルを、アドレス変換におけるページ・ウォークに用いる。ページ・テーブルそれぞれは、ページ・テーブル・エントリを有している。ページ・テーブル・エントリそれぞれは、ケーパビリティ・インディケータによって示されるケーパビリティに対応する少なくとも１つのエントリ指定子を有している。
【発明を実施するための最良の形態】
【０００６】
以下の記載では、数多くの特定の詳細を表している。しかし、本発明の実施例は、前述の特定の詳細なしで実施することができる。一方、周知の回路、構造及び手法は、本明細書の理解を不明瞭にすることを回避するために示していない。
【実施例】
【０００７】
図１は、本発明の一実施例を実施することが可能なシステム１００を示す図である。システム１００は、プロセッサ１１０と、プロセッサ・バス１２０と、メモリ制御ハブ（MCH）１３０と、システム・メモリ１４０と、入出力制御ハブ（ICH）１５０と、周辺バス１５５と、大容量記憶装置／インタフェース１７０と、入出力装置１８０１乃至１８０K及び１８５とを備えている。システム１００は、上記よりも多くのエレメントを備えていても、上記よりも少ないエレメントを備えていてもよい。
【０００８】
プロセッサ１１０は、何れかのタイプのアーキテクチャの中央処理装置（組込みプロセッサ、モバイル・プロセッサ、マイクロコントローラ、ディジタル信号プロセッサ、スーパースケーラー・コンピュータ、ベクター・プロセッサ、単一命令多重データ（SIMD）コンピュータ、複雑命令セット・コンピュータ（CISC）、縮小命令セット・コンピュータ（RISC）、長大命令語（VLIW）、又はハイブリッド・アーキテクチャなど）を表す。
【０００９】
プロセッサ・バス１２０は、プロセッサ１１０が他のプロセッサ又は装置（例えば、MCH１３０）と通信することを可能にするためのインタフェース信号を供給する。プロセッサ・バス１２０は、ユニプロセッサ構成又はマルチプロセッサ構成をサポートすることができる。プロセッサ・バス１２０は、パラレル、シーケンシャル、パイプライン、非同期、同期、又はそれらの何れかの組み合わせであり得る。
【００１０】
MCH１３０は、メモリ及び入出力装置（システム・メモリ１４０やICH１５０など）の制御及び構成を提供する。MCH１３０は、複数の機能（分離実行モード、ホスト・周辺間バス・インタフェース、メモリ制御など）を一体化したチップセットに一体化することができる。MCH１３０は、周辺バス１５５に直接、又はICH１５０を介してインタフェースする。明確にするために、周辺バス全てを示している訳でない。システム１００は、周辺バス（周辺装置相互接続（PCI）、PCIエクスプレス、アクセラレィティッド・グラフィックス・ポート（AGP）、アイサ（ISA）バスやユニバーサル・シリアル・バス（USB）等など）も含み得る。
【００１１】
MCH１３０は、直接メモリ・アクセス（DMA）再マッピング回路１３５を含む。DMA再マッピング回路１３５はI／O装置（例えば、I／O装置１８０１乃至１８０K及び１８５のうちの１つ）を、I／Oトランザクションにおけるシステム・メモリ140内のドメインにマッピングする。I／Oトランザクションは通常、DMA要求である。DMA再マッピング回路１３５は、I／O装置の割り当て及び／又は管理を容易にするか、又は拡張するためのハードウェア・サポートを提供する。DMA再マッピング回路１３５は、MCH１３０以外の何れかのチップセット（ICH１５０など）に含まれることもあり得る。プロセッサ１１０内で部分的若しくは全体的に、又は、他のプロセッサ若しくは装置に対する、別個のプロセッサ、又はコプロセッサとして実現されることもあり得る。
【００１２】
システム・メモリ１４０はシステムのコード及びデータを記憶する。システム・メモリ１４０は通常、ダイナミック・ランダム・アクセス・メモリ（DRAM）又はスタティック・ランダム・アクセス・メモリ（SRAM）によって実現される。システム・メモリは、本発明の一実施例を実現するプログラム・コード（又はコード・セグメント）を含み得る。システム・メモリは、オペレーティング・システム（OS）１４２、あるいはOSの一部分、あるいはカーネル、及びI／Oドライバ１４５を含む。OS１４２の構成要素又はI／Oドライバ１４５は何れも、ハードウェア、ソフトウェア、マイクロコード、又はそれらの組み合わせによって実現することができる。システム・メモリ１４０は、図示していない他のプログラム又はデータも含み得る。
【００１３】
ICH１５０は、I／O機能をサポートするよう企図された、いくつかの機能を有する。ICH１５０は、I／O機能を行うためにMCH１３０と一緒に、又はMCH１３０とは別個にチップセットに一体化することもできる。ICH１５０は、いくつかのインタフェース機能及びI／O機能（周辺バス１５５にインタフェースするためのPCIバス・インタフェース、プロセッサ・インタフェース、割り込みコントローラ、直接メモリ・アクセス（DMA)コントローラ、電力管理ロジック、タイマ、システム管理バス（SMBus）、ユニバーサル・シリアル・バス（USB）インタフェース、大容量記憶装置インタフェース、低ピン・カウント（LPC）インタフェース等など）を含み得る。
【００１４】
大容量記憶装置／インタフェース１７０は、アーカイブ情報（コード、プログラム、ファイル、データ、アプリケーションやオペレーティング・システムなど）の記憶を提供する。大容量記憶装置／インタフェース１７０は、コンパクト・ディスク（CD）ROM１７２、ディジタル・ビデオ／多用途ディスク（DVD）１７３、フロッピー（登録商標）・ドライブ１７４、及びハード・ドライブ１７６、並びに何れかの他の磁気記憶装置又は光学記憶装置にインタフェースし得る。大容量記憶装置／インタフェース１７０は、マシン・アクセス可能な媒体を読み取るための機構を提供する。マシン・アクセス可能な媒体は、以下に説明するようなタスクを行うためのコンピュータ読み取り可能プログラム・コードを含み得る。
【００１５】
I／O装置１８０１乃至１８０Kは、DMA要求を含むI／O機能を行うための何れかのI／O装置を含み得る。これらは周辺バス１５５にインタフェースされる。I／O装置１８０１乃至１８０Kの例は、入力装置（例えば、キーボード、マウス、トラックボール、ポインティング・デバイス）、メディア・カード（例えば、オーディオ、ビデオ、グラフィックス）、ネットワーク・カード、及び何れかの他の周辺コントローラを含む。I／O装置１８５はICH１５０に直接インタフェースされる。周辺バス１５５は、I／Oトランザクションをサポートする何れかのバスである。周辺バス１５５の例は、PCIバス、PCIエクスプレス等を含む。
【００１６】
本発明の一実施例の構成要素は、ハードウェア、ファームウェア、ソフトウェア、又はそれらの何れかの組み合わせによって実現することができる。ハードウェアの語は一般に、物理的構造（電子的部分、電磁気的部分、光学的部分、光電的部分、機械的部分、電気機械的部分など）を有する構成要素を表す。ソフトウェアの語は一般に、論理構造、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、公式、ファンクション、数式等を表す。ファームウェアの語は一般に、ハードウェア構造（例えば、フラッシュ・メモリ、リード・オンリ・メモリ、消去可能なリード・オンリ・メモリ）において実現又は実施される論理構造、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、公式、ファンクション、数式等を表す。ファームウェアの例は、マイクロコード、書き込み可能な制御記憶装置、マイクロプログラムされた構造を含み得る。ソフトウェア又はファームウェアにおいて実現されると、本発明の実施例の構成要素は事実上、必要なタスクを行うためのコード・セグメントである。ソフトウェア／ファームウェアは、本発明の一実施例に記載された動作を行うための実際のコード、又は動作をエミュレート又はシミュレートするコードを含み得る。プログラム又はコードのセグメントは、プロセッサ、若しくはマシン・アクセス可能媒体に記憶することが可能であるか、又は搬送波において実施されるコンピュータ・データ信号、若しくは、伝送媒体を介して搬送波によって変調される信号によって伝送することが可能である。「プロセッサ読み取り可能な、若しくはアクセス可能な媒体」又は「マシン読み取り可能な、若しくはアクセス可能な媒体」は、情報を記憶し、伝送し、又は転送することが可能な何れかの媒体を含み得る。プロセッサ読み取り可能な媒体又はマシン・アクセス可能な媒体の例は、電子回路、半導体メモリ・デバイス、リード・オンリ・メモリ（ROM）、フラッシュ・メモリ、消去可能ROM（EROM）、フロッピー（登録商標）・ディスク、コンパクト・ディスク（CD）ROM、光ディスク、ハード・ディスク、光ファイバ媒体、無線周波数（RF）リンク等を含む。コード・セグメントは、インターネット、イントラネット等などのコンピュータ・ネットワークを介してダウンロードすることができる。マシン・アクセス可能な媒体は、製造物品において実施することができる。マシン・アクセス可能な媒体は、マシンによってアクセスされると、下記の動作をマシンに行わせるデータを含み得る。マシン・アクセス可能な媒体は、その中に埋め込まれたプログラム・コードも含み得る。プログラム・コードは、下記の動作を行うためのマシン読み取り可能なコードを含み得る。「データ」の語は本明細書及び特許請求の範囲では、マシン読み取り可能である目的でコード化された何れかのタイプの情報を表す。よって、プログラム、コード、データ、ファイル等を含み得る。
【００１７】
本発明の実施例の全部及び一部は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの何れかの組み合わせによって実現することができる。ハードウェア、ソフトウェア、又はファームウェアの構成要素は、互いに結合された、いくつかのモジュールを有し得る。ハードウェア・モジュールは、機械的接続、電気的接続、光学的接続、電気機械的接続、又は何れかの物理的接続によって別のモジュールに結合される。ソフトウェア・モジュールは、ファンクション、手続、方法、サブプログラム、又はサブルーチン・コール、ジャンプ、リンク、パラメータ、変数、及び引数渡し、ファンクション・リターン等によって別のモジュールに結合される。ソフトウェア・モジュールは、変数、パラメータ、引数、ポインタ等を受け取り、かつ／又は、結果、更新された変数、ポインタ等を生成若しくは転送するために別のモジュールに結合される。ファームウェア・モジュールは、前述のハードウェアの結合手法及びソフトウェアの結合手法の何れかの組み合わせによって別のモジュールに結合される。ハードウェア・モジュール、ソフトウェア・モジュール又はファームウェア・モジュールは、別のハードウェア・モジュール、ソフトウェア・モジュール又はファームウェア・モジュールの何れか１つに結合することができる。モジュールは、プラットフォーム上で実行しているオペレーティング・システムと相互作用するためのソフトウェア・ドライバ又はソフトウェア・インタフェースでもあり得る。モジュールは、ハードウェア装置の構成、設定、初期化を行い、ハードウェア装置との間でデータを送受信するためのハードウェア・ドライバでもあり得る。装置は、ハードウェア・モジュール、ソフトウェア・モジュール及びファームウェア・モジュールの何れかの組み合わせを含み得る。
【００１８】
本発明の一実施例は、フローチャート、フロー図、構造図、又はブロック図として通常表されるプロセスとして表すことができる。フローチャートは、動作を順次のプロセスとして表し得るが、動作の多くは、並列に、又は同時に行うことが可能である。更に、動作の順序は再配列することができる。プロセスは、その動作が完了すると終結される。プロセスは、方法、プログラム、手順、製造(又はファブリケーション)の方法等に対応し得る。
【００１９】
標準的なコンピューティング・プラットフォームでは、I／Oサブシステム構成部分は、単一のドメインの一部として機能し、オペレーティング・システム・ソフトウェアによって管理される。本発明の一実施例は、コンピューティング・プラットフォーム内のI／O装置を複数のドメインに割り当てるのに必要なハードウェア・サポートを提供する。
【００２０】
ドメインは、ホスト物理メモリの部分集合が割り当てられる、プラットフォーム内の分離環境として抽象的に定義される。ホスト物理メモリは、システム・メモリ１４０に含まれている。ドメインに割り当てられる物理メモリを直接アクセスすることが可能なI／O装置は、ドメインの、割り当てられた装置として表される。ドメインの分離特性は、それに割り当てられていないリソースからの、その物理メモリへのアクセスを阻止することによって達成される。複数の分離ドメインは、特定のドメイン（場合によっては、デフォールト・ドメイン）にI／O装置全てが確実に割り当てられるようにすることによって、かつ、割り当てられた装置それぞれから、そのドメインに割り当てられた物理メモリへのみにアクセスを制限することによってサポートされる。
【００２１】
各ドメインは、物理メモリのシステム・ビューとは異なり得る、物理メモリのビュー、又は物理アドレス空間を有する。その物理アドレス空間をアクセスするためにドメインのリソースによって用いられるアドレスは、そのゲスト物理アドレス（GPA）として表す。ホスト物理アドレス（HPA）とは、メモリのアクセスに用いるシステム物理アドレスのことである。ドメインは、その割り当てられたシステム物理メモリをアクセスするためにそのGPAが新たなHPAに変換された場合、移動させられたものとみなされる。ドメインは、そのゲスト物理アドレス空間が、システムのホスト物理アドレス空間と同じであるか、又はシステムのホスト物理アドレス空間の部分集合である場合、移動させられていないものとして表される。GPA及びHPAの論理的分離は、メモリ保護の強化の基礎を提供する。これは、ドメインの、割り当てられた装置によって生成されたゲスト物理アドレスを検証し、有効なホスト物理アドレスにこれを変換することが可能な物理アドレス変換及び保護の機構を必要とする。DMA再マッピング回路１３５はこのハードウェア・サポートを提供する。
【００２２】
I／O装置をドメインに割り当てるために、物理アドレスの変換及び保護が、プラットフォーム内のI／O装置全てからのDMA要求に施される。単純にするために、I／O装置DMA要求の物理アドレス変換機能は、DMA再マッピングとして表す。
【００２３】
図２は、本発明の一実施例による、入出力（I／O）装置の割り当てを示す図である。I／O装置の割り当ては、システム・メモリ140内のドメインへのI／O装置のマッピングである。マッピングは、DMA再マッピング回路１３５によってサポートされる。例として、装置A２１０は、システム・メモリ１４０内のドメイン1（２４０）にマッピングされる。ドメイン１は、装置A２１０用ドライバ２４２を有し得る。2つ以上のドライバを用いることもできる。
【００２４】
DMA再マッピング回路１３５は、レジスタ組２２０、DMA再マッピング構造２２２及び論理回路２２４を含む。レジスタ組２２０は、DMA再マッピング構造２２２、論理回路２２４、及び、I／O装置用のプログラム又はドライバによって用いられる制御情報又はステータス情報を供給するいくつかのレジスタを含む。DMA再マッピング構造２２２は、適切なドメイン内のゲスト物理アドレスからホスト物理アドレスへの再マッピング又はアドレス変換において用いる基本的な構造、記憶装置又はテーブルを提供する。論理回路２２４は、再マッピング動作又はアドレス変換動作やその他のインタフェース機能を行う回路を含んでいる。DMA再マッピング回路１３５は、種々の構成をサポートし、再マッピング動作又はアドレス変換動作に種々のケーパビリティを提供するために種々の実現形態を有し得る。
【００２５】
DMA再マッピング回路１３５を用いたI／O装置の割り当て及び／又は管理は、いくつかの使用法又はアプリケーションを提供する。２つの有用なアプリケーションは、OSのロバスト性のアプリケーション及び仮想化のアプリケーションである。
【００２６】
OSのロバスト性のアプリケーション。ドメイン分離は、オペレーティングシステム・ソフトウェアの複数の用途を有している。例えば、OSは、その重要なコード構造及びデータ構造をメモリ内に含んでいるドメインを規定し、システム内のI／O装置全てからのこのドメインへのアクセスを制限し得る。これによって、装置ドライバによる装置の誤ったプログラミングによるそのデータ及びコードの異常な、又は意図されていない破損をOSが制限することが可能になる。それによって、そのロバスト性が改善される。
【００２７】
別の使用法では、OSは、ドメインを用いて、レガシーの３２ビットPCI装置から大容量（４GBを超える）メモリへのDMAをよりうまく管理することができる。このことは、１つ又は複数のドメインに３２ビット装置を割り当て、前述の装置から大容量メモリにI／O物理アドレス変換機能が再マッピングするようプログラミングすることによって達成される。前述のサポートなしでは、ソフトウェアは、OSバウンス・バッファによるデータ複製に頼らなければならない。
【００２８】
より複雑な使用法では、OSは、複数のドメインを作成し、１つ又は複数のI／O装置を個々のドメインに割り当てることによってI／Oを管理することができる。この使用法では、装置ドライバはそのI／Oバッファを明示的にOSに登録し、OSは、DMAドメインの保護を強化するためのハードウェアを用いて前述のI／Oバッファを特定のドメインに割り当てる。このモデルでは、OSは、I／Oアドレス変換及び保護機構をI／Oメモリ管理装置（I／O  MMU）として用いる。
【００２９】
仮想化のアプリケーション。仮想化手法によって、単一のシステム上に１つ又は複数の仮想マシン（VM）を作成することが可能になる。各VMは、下にある物理ハードウェア・リソースを利用して同時に実行し得る。仮想マシンによって、同じプロセッサ上で複数のオペレーティング・システム・インスタンスが実行することが可能になる。それによって、システム統合、レガシー・マイグレーション、アクティビティのパーティショニングや、セキュリティなどの利点が提供される。
【００３０】
仮想化アーキテクチャには通常、２つの主要ソフトウェア構成部分クラスが関係している。(a)仮想マシン・モニタ（VMM）及び(b)仮想マシン（VM）。VMMソフトウェア層は、最高の特権レベルで実行し、下にあるシステム・ハードウェアの完全な所有権を有する。VMMは、下にあるハードウェアをVMが共有することを可能にし、しかも、VM間の分離を設ける。
【００３１】
I／O仮想化のソフトウェアのみの手法の制約は、DMA再マッピング回路１３５を用いてI／O装置のVMへの直接割り当てによって除去することが可能である。装置の直接割り当てによって、割り当てられたI／O装置のドライバは、それが割り当てられているVMにおいてのみ実行し、VMMへのトラッピングなしで装置ハードウェアと直接相互作用することが可能である。ハードウェア・サポートによって、VMM内の装置特有の知識なしでのDMA再マッピングが可能になる。
【００３２】
このモデルでは、VMMはそれ自体を制御機能（明示的に、VMへの装置割り当ての設定及び分解を行う）に制限している。I／O仮想化のソフトウェアのみの手法の場合のように、ゲストI／Oアクセス全ての場合に、VMMにトラッピングするかわりに、VMMは、システム機能に影響を及ぼす、特定のリソースの保護のためにのみゲストI／Oアクセス・トラッピング（装置構成空間アクセス、割り当て管理等など）を必要とする。
【００３３】
VMへのI／O装置の直接割り当てをサポートするために、VMMはI／O装置からのDMAを管理する。VMMはそれ自体をドメインにマッピングし、各VMを独立ドメインにマッピングすることができる。I／O装置はドメインに割り当てることができる。DMA再マッピング回路１３５によって設けられる物理アドレス変換ハードウェアを用いて、その親ドメインに割り当てられた物理メモリにのみI／O装置からのDMAを可能にすることができる。物理メモリ内で移動させることができるVM（すなわち、HPAと同一でないGPA）の場合、DMA再マッピング回路１３５は、必要なGPA・HPA間変換を行うようプログラムすることが可能である。
【００３４】
I／O装置割り当てのハードウェア・サポートによって、VMMの実現形態は、ソフトウェアのみのI／O仮想化手法、及びI／O装置リソースをVMに提示するための直接装置割り当ての組み合わせを選ぶことが可能である。
【００３５】
図３は、本発明の一実施例による、直接メモリ・アクセス（DMA）再マッピングを用いた仮想化を示す図である。仮想化は、２つの装置A及びB（３１０及び３１２）と、DMA再マッピング回路１３５と、VMM又はホストOS３２０と、VM0３４０及びVMn３６０とを有している。
【００３６】
２つの装置A及びB（３１０及び３１２）は、２つのVM３４０及び３６０それぞれによってサポートされる２つのI／O装置である。DMA再マッピング回路１３５は、VMM又はホストOS（３２０）の特定の知識なしでそれぞれのVM３４０及び３６０に前述の２つの装置を直接マッピングする。
【００３７】
VMM又はホストOS（３２０）は、その上で実行しているそのプラットフォーム又はシステムの下にあるハードウェアのサポートを提供する。VM３４０及び３６０は、同様なアーキテクチャの構成部分を有しているが、互いに完全に分離されている。これらは、システム・ハードウェアをアクセスするためにVMM又はホストOS（３２０）にインタフェースされる。VM３４０は、アプリケーション３４２及び３４４を含んでいる。より多くのアプリケーション又はより少ないアプリケーションをサポートすることができる。それは、ゲストOS３４６及び装置Aドライバ３５０を有している。装置Aドライバ３５０は、装置A３１０を駆動させ、制御し、インタフェースし、又はサポートするドライバである。同様に、VM３６０はアプリケーション３６２及び３６４を含む。より多くのアプリケーション又はより少ないアプリケーションをサポートすることができる。それはゲストOS３６６及び装置Bドライバ３７０を有している。ゲストOS３６６は、VM３４０内のゲストOS３４６と同じであっても違っていてもよい。装置Bドライバ３７０は、装置B３１２を駆動させ、制御し、インタフェースし、又はサポートするドライバである。
【００３８】
DMA再マッピング回路１３５なしのソフトウェアのみの手法では、装置Aドライバ３５０及び装置Bドライバ３７０は、VMM又はホストOS（３２０）に存在する。前述の２つのドライバの機能は、よって、VMMにおいてエミュレートされる機能によって制限される。DMA再マッピングのサポートなしでは、VMMはエミュレーション／プロキシ・ドライバを提供しなければならず、ゲストOSは、VMMが露呈させることにした仮想装置に特有の装置ドライバを用いる。それは、実際のプラットフォーム装置に無関係の装置、又は実際のプラットフォーム装置と同じ装置であり得る。後者の場合、VMMは、実際の装置をプロキシする。更に、性能は制限され得る。ゲストI／O動作はVMM又はホストOS（３２０）によってトラップされ、下にある物理装置ハードウェアに投入される前にプロキシ又はエミュレートされるからである。最後に、装置Aドライバ３５０及び装置Bドライバ３７０の全部又は一部は特権VMMソフトウェアの一部として実行されるので、特にVMM又はホストOS３２０をクラッシュして前述のドライバがエラーをもたし得る場合に、プラットフォームの全体のロバスト性が損なわれ得る。DMA再マッピング回路１３５によって、装置Aドライバ３５０及び装置Bドライバ３７０は、それぞれのI／O装置３１０及び３１２と直接相互作用することができ、よって、前述の制約全てを回避する。
【００３９】
DMA再マッピング回路１３５によって備えられるDMA再マッピング・アーキテクチャによって、任意数のドメインにI／O装置を割り当てることが容易になる。各ドメインは、システム物理アドレス空間とは異なり得る物理アドレス空間を有している。DMA再マッピングは、I／O装置からのDMA要求におけるゲスト物理アドレス（GPA）から、そのドメインに割り当てられた対応するホスト物理アドレス（HPA）への変換を実現する。
【００４０】
このことをサポートするために、プラットフォームは、1つ又は複数のI／O物理アドレス変換ハードウェア装置をサポートし得る。各変換ハードウェア装置は、そのハードウェアの範囲内から生じるI／Oトランザクションの再マッピングをサポートする。例えば、デスクトップ・チップセットの実現形態は、メモリ・コントローラ・ハブ（MCH）構成部分におけるI／Oトランザクション全てを変換する単一のDMA再マッピング・ハードウェア装置を露呈させ得る。１つ又は複数のコア・チップセット構成部分を有するサーバ・プラットフォームは、各構成部分において別個の変換ハードウェア装置をサポートし得る。各変換DMA要求は、そのI／O階層内から生じる。上記アーキテクチャは、前述のハードウェア装置が、ソフトウェア・プログラミングに応じて、システム・メモリ内の同じ変換データ構造を共有するか、又は、別個の構造を用い得る構成をサポートする。
【００４１】
チップセットDMA再マッピング回路１３５は、DMA要求内のアドレスをゲスト物理アドレス（GPA）として扱う。DMA再マッピング回路１３５はアドレス変換機能を、入ってくるアドレスに施して、それをホスト物理アドレス（HPA）に、更なるハードウェア処理（プロセッサ・キャッシュのスヌーピングや、メモリ・コントローラへの転送）の前に変換する。
【００４２】
仮想化の意味合いでは、DMA再マッピング回路１３５によって実現されるアドレス変換機能は、VMMによってサポートされる物理メモリ管理によって変わってくる。例えば、ソフトウェアがホスト物理メモリ割り当てを、連続した領域として行う使用法では、GPAをHPAに変換するDMA変換は、単純なオフセット加算であり得る。VMMが、ページ粒度で物理メモリを関する使用法では、DMA再マッピング回路１３５は、メモリに常駐しているアドレス変換データ構造を用いることができる。
【００４３】
図４は、本発明の一実施例によるI／Oアドレス変換を示す図である。I／Oアドレス変換は、２つのI／O装置１及び２（４１０及び４１２）と、DMA再マッピング回路１３５と、物理メモリ４２０と、ゲスト・ビュー４４０とを含む。
【００４４】
I／O装置１及び２（４１０及び４１２）は、２つの別個のドメインに割り当てられる。それらは、アドレスDMA_ADRに対するI／O要求又はDMA要求を行う。DMA再マッピング回路１３５は、物理メモリ４２０において割り当てられた対応するドメインに前述の２つの装置をマッピングする。物理メモリ４２０は、ドメイン１（４２２及び４２４）並びにドメイン２（４２６及び４２８）を割り当てる。前述の装置に割り当て得る割当てメモリ部分はより多くてもより少なくてもよい。ドメイン１（４２２及び４２４）は装置１（４１０）に対応し、ドメイン２（４２４及び４２８）は装置１（４１２）に対応する。図４に示す例では、装置１（４１０）がドメイン１（４２２）にマッピングされ、装置２（４１２）がドメイン２（４２８）にマッピングされるか、又は割り当てられる。
【００４５】
ゲスト・ビュー４４０は、ゲストI／O装置からの論理ビューである。これは、ドメイン１（４４２）及びドメイン２（４４４）を含んでいる。ドメイン１（４４２）は、物理メモリ４２０内の２つのドメイン１（４２２及び４２４）に対応する。ドメイン２（４４４）は、２つのドメイン２（４２６及び４２８）に対応する。ゲスト・ビュー４４０から、１つのI／O装置に対応するドメインは１つだけである。装置１（４１０）からのDMA_ADRアドレスが、ドメイン１（４４２）の0以上L以下のアドレス空間内にあるDMA_ADR1にマッピングされる。同様に、装置２（４１２）からのDMA_ADRアドレスが、ドメイン２（４４４）の0以上K以下のアドレス空間内にあるDMA_ADR2にマッピングされる。
【００４６】
ドメインの作成及び管理の役割を果たすソフトウェアは、両方のドメインの物理メモリ４２０を割り当て、DMA再マッピング回路１３５におけるGPA・HPA間アドレス変換機能を設定する。DMA再マッピング装置１３５は、装置４１０及び４１２によって生成されるGPAを適切なHPAに変換する。
【００４７】
図5は、本発明の一実施例によるDMA再マッピング構造２２２を示す図である。DMA再マッピング構造２２２は、ソース識別子５１０を受け取り、ルート・テーブル５２０と、いくつかのコンテキスト・テーブル５３０0乃至５３０Uと、いくつかのアドレス変換構造５４０0乃至５４０Vとを有している。再マッピング構造２２２は、ソース識別子５１０及びゲスト物理アドレスをI／O装置から受け取り、割り当てられたドメイン内のホスト物理装置にゲスト物理装置を変換する。変換は、階層的に配置された変換テーブルを用いて行うことができる。変換機構は、ルート・テーブル５２０から始め、コンテキスト・テーブル５３０0乃至５３０U及びアドレス変換構造５４０0乃至５４０vにわたって横断又はウォークする。
【００４８】
DMA再マッピング回路１３５に現れる、I／Oトランザクションの要求者識別情報は、発信元装置と、発信元I／O層がそれに割り当てられるそのドメインとを判定する。ソース識別子５１０は、I／Oトランザクションの発信元を識別する属性である。DMA再マッピング回路１３５は、実現形態特有のやり方でトランザクションのソース識別子５１０を判定することができる。例えば、一部のI／Oバス・プロトコルは、各I／Oトランザクションの一部として発信元装置の識別情報を供給することができる。一方、チップセット統合装置の場合などでは、ソース識別子５１０は、チップセットの内部の実現形態に基づいて示唆され得る。
【００４９】
PCIエクスプレス装置の場合、ソース識別子５１０は、I／Oトランザクション・ヘッダの一部として供給される要求者識別子にマッピングされる。装置の要求者識別子は、構成ソフトウェアによって割り当てられたそのPCIバス／装置／ファンクションの番号から成り、I／O要求を起動させるハードウェア機能を一意に識別する。一実施例では、ソース識別子５１０は、ファンクション番号５１２と、装置番号５１４と、バス番号５１６とを有している。図５に示す例では、ファンクション番号５１２は、幅がKビットであり、装置番号５１４は、幅がLビットであり、バス番号５１６は幅がMビットである。バス番号５１６は、その上にI／Oトランザクションが生成されるそのバスを識別する。装置番号５１４は、識別されたバス上の特定の装置を識別する。ファンクション番号５１２は、I／O装置によって要求される特定のファンクションを識別する。ソース識別子５１０を用いて、ルート・テーブル５２０及びコンテキスト・テーブル5300乃至530Uのインデクス化又はルックアップを行う。図５に示す例では、バス0及びバスmを用いた２つのI／Oトランザクションが存在している。
【００５０】
PCIエクスプレス装置の場合、ルート・テーブル５２０は、ソース識別子５１０によってインデクス化されたルート・エントリ5250乃至525M−1、又はソース識別子５１０のバス番号５１６を記憶する。ルート・エントリは、特定のバス上の装置をその個別の親ドメインにマッピングするための最上位レベルの構造として機能する。ルート・エントリ0（5250）はバス0を用いたI／Oトランザクションに対応する。ルート・エントリm（525m）はバスmを用いたI／Oトランザクションに対応する。ルート・エントリ0（5250）及び525mはコンテキスト・テーブル5300及び530mそれぞれを指し示す。一実施例では、前述のエントリは、対応するコンテキスト・テーブルのベース・アドレスを提供する。
【００５１】
コンテキスト・テーブル530o乃至530uは、ルート・エントリによって参照されるコンテキスト・エントリ535kを記憶する。コンテキスト・エントリ535kは、I／O装置をその対応するドメインにマッピングする。装置番号５１４及びファンクション番号５１２を用いて、I／Oトランザクションに対応するコンテキスト・エントリを得る。一実施例では、それらは、対応するルート・エントリによって参照されるコンテキスト・テーブルを指し示すか、又は前述のコンテキスト・テーブルを参照するためのインデクスを構成する。２M＊２L＊２K個すなわち２M＋L＋K個のコンテキスト・エントリが存在している。一実施例では、K＝３、L＝５、及びM＝８である。その結果、合計６４K個のエントリになる（２M（２８＝２５６）個のコンテキスト・エントリのテーブルとして編成される）。図４に示す例では、２つのI／Oトランザクションの２つのコンテキスト・エントリは、コンテキスト・テーブル5300内のコンテキスト・エントリ5350、及びコンテキスト・テーブル530m内のコンテキスト・エントリ535mである。コンテキスト・エントリ5350及び535mは、アドレス変換構造5400及び540mそれぞれを指し示す。
【００５２】
アドレス変換構造5400乃至540vは、I／Oトランザクションに対応するゲスト物理アドレスを用いてホスト物理アドレスにアドレス変換を備える。アドレス変換構造5400乃至540vそれぞれは、マルチテーブル、単一のテーブル、及びベース／バウンド変換それぞれを用いた３つの変換機構に対応するマルチテーブル５５０、単一のテーブル５６０、及びベース／バウンド５７０であり得る。以下の記載には、４KBの通常ページ容量を用いる。当業者によって知られているように、何れかの他の容量も用いることができる。
【００５３】
DMA再マッピング回路１３５の柔軟な制御をソフトウェアに与えるために、DMA再マッピング回路１３５は、図２に示すレジスタ組２２０に含まれるいくつかのレジスタを有している。レジスタ組２２０は、ホスト物理アドレス空間においてベース・アドレス（BAR）レジスタを介して位置特定される。変換ハードウェアBARレジスタを、実現形態に応じてソフトウェアに露呈させる。これは、チップ統合装置のうちの１つ（メモリ・コントローラ装置など）におけるPCI構成空間レジスタとして露呈されられ得る。一実施例では、BARレジスタは、最低４Kのアドレス・ウィンドウを備える。レジスタ組２２０内のレジスタは、いくつかのフィールドを有し得る。フィールドは、アサート又は否定することができる。フィールドが単一ビットのみから成る場合、アサートは、規定された論理状態（例えば、TRUE、論理１）にビットが設定されることを示唆しており、否定は、アサートの状態（例えば、FALSE、論理0）と相補的な規定された論理状態にビットがリセットされることを示唆している。以下では、アサートされた状態又は否定された状態の使用法は任意である。フィールドは、第１の状態を示すためにアサートすることができ、第２の状態を示すために否定することができる。逆も同様である。
【００５４】
レジスタ内のフィールドは、DMA再マッピング回路１３５によって、かつ／又はソフトウェアによってプログラム、初期化又は構成することができる。これは、専用ハードウェア回路、又は、データ構造、機能、ルーチン若しくは方法によって実現される機能にも対応し得る。以下では、フィールドはレジスタにグループ化される。以下のレジスタにおける前述のフィールド又はビットのグループ化、フォーマッティング又は編成は、例証の目的のためである。前述のフィールドのグループ化、フォーマッティング又は編成の他のやり方を用いることができる。フィールドは、2つ以上のレジスタに複製することもできる。レジスタが有するフィールドの数は、前述のフィールドの数よりも多くても少なくてもよい。更に、レジスタは、いくつかのやり方（記憶エレメントやメモリ・エレメントをはじめとする）で実現することができる。
【００５５】
図6は、本発明の一実施例による、共通レジスタを有するレジスタ組を示す図である。共通レジスタは、メモリ・タイプ通知レジスタ（MTYPE_REG）６１０と、グローバル・コマンド・レジスタ（GCMD_REG）６２０と、ルート・エントリ・テーブル・アドレス・レジスタ（RTADDR_REG）６３０と、デフォールト・コンテキスト・レジスタ（DEF_REG）６４０とを含む。
【００５６】
MTYPE_REG６１０は、変換データ構造のメモリ・タイプを通知する。これは、障害ログメモリ・タイプ（FMT）フィールド６１２と、ページ・テーブル・メモリ・タイプ（PMT）フィールド６１４と、コンテキスト・エントリ・テーブル・メモリ・タイプ（CMT）フィールド６１６と、ルート・エントリ・テーブル・メモリ・タイプ（RMT）フィールド６１８とを含む。
【００５７】
FMTフィールド６１２は、障害ログ領域がキャッシュ可能な否かを示す。否定されていると、これは、障害ログ領域がアンキャッシュされていることがあり得ることを示す。アサートされていると、これは、キャッシュ可能な領域に障害ログ領域があり得ることを示す。PMTフィールド６１４は、ページ・テーブルがキャッシュ可能か否かを示す。否定されていると、これは、アンキャッシュ・メモリ領域内にページ・テーブルがあり得ることを示す。アサートされていると、これは、キャッシュ可能な領域内にページ・テーブルがあり得ることを示す。CMTフィールド616は、コンテキスト・テーブルがキャッシュ可能か否かを示す。否定されていると、これは、アンキャッシュ・メモリ領域内にコンテキスト・テーブルがあり得ることを示す。アサートされていると、これは、キャッシュ可能な領域内にコンテキスト・テーブルがあり得ることを示す。RMTフィールド618は、ルート・テーブルがキャッシュ可能か否かを示す。否定されていると、これは、アンキャッシュ・メモリ領域内にルート・テーブルがあり得ることを示す。アサートされていると、これは、キャッシュ可能な領域内にルート・テーブルがあり得ることを示す。
【００５８】
GCMD_REG６２０は、変換特性を制御する。これは、変換ハードウェア・イネーブル（HE）フィールド６２２及び書き込みバッファ・フラッシュ（WBF）フィールド６２４を含む。
【００５９】
HEフィールド６２２は、変換ハードウェアをイネーブル又はディセーブルするためのソフトウェア・プログラム可能な制御フィールドである。否定されていると、これは、変換ソフトウェアをディセーブルする旨を示す。アサートされていると、これは、変換ソフトウェアをイネーブルする旨を示す。このフィールドを更新する場合、ソフトウェアは、このフィールドをリードバックし、検査してイネーブル／ディセーブル・ステータスを確認する。
【００６０】
WBFフィールド６２４は、チップセット内部書き込みバッファをフラッシュするのに用いる。これは、コンテキスト・テーブル又はページ・テーブルへの更新が、内部書き込みポスティング・バッファに保持されていないことを確実するために行われる。ソフトウェアは、このフィールドをアサートして書き込みバッファ・フラッシュ・コマンドを出す。論理回路２２４はこれを否定して、書き込みバッファ・フラッシュの完了の示標を備える。ソフトウェアは、否定する対象のフィールドをリードバックし、検査してフラッシュの完了を確認する。
【００６１】
RTADDR_REG６３０は、メモリに常駐しているルート・テーブルのベース・アドレスを設定する。ソフトウェアは、下位のダブルワード（DWORD）を最後に書き込むことによってこのレジスタをプログラムする。これは、ルート・テーブル・ベース・アドレス（RTA）フィールド６３２と、イネーブル・コンテキスト・エントリ（ECE）フィールド６３４とを含む。RTAフィールド６３２は、システム・メモリ内の、ページの底部が合わせられており、通常の容量のルート・テーブルを指し示す。通常の容量とは、何れかの好都合な予め規定された容量である。一実施例では、通常の容量は４KBである。DMA再マッピング回路１３５は、最下位のN（Nは（ホスト・アドレス幅-１２）である）ビットのみを実現することができる。フィールドの残りは、読み出しのみとして扱うことができる。ECEフィールド６３４は、コンテキスト・エントリの使用をイネーブル又はディセーブルするための制御フィールドである。これは、デフォールト・コンテキストの使用に影響を及ぼすものでない。否定されていると、これは、コンテキスト・エントリの使用のディセーブルを示す。DMA要求は、デフォールト・レジスタのプログラミングに基づいて処理される。アサートされていると、これは、コンテキスト・エントリを用いてDMA要求を処理することをイネーブルする旨を示す。ルート・テーブル及びコンテキスト・テーブルはメモリ内に設定され、ルート・テーブルのベースは、上位ビット（例えば、ビット１２乃至６３）において設けられる。
【００６２】
DEF_REG６４０はデフォールト・コンテキストを規定する。コンテキスト・テーブル内の各コンテキスト・エントリは、特定の装置からのDMA要求を管理する方法を規定する。デフォールト・コンテキストは、ソフトウェア・プログラムが装置をドメイン・マッピング・テーブルにプログラムし、前述のテーブルのルックアップをイネーブルするまで、DMA再マッピング回路１３５によって管理される装置が当初割り当てられるデフォールト・ドメインを表す。例えば、I／O装置がシステムにホットプラグすると、この装置のコンテキストがソフトウェアによって、予めプログラムされていない場合、装置は、ソフトウェアが別のドメインにそれを明示的に割り当てるまでデフォールト・ドメインに割り当てられる。デフォールト・コンテキストは、DEF_REG６４０によってプログラムされる。
【００６３】
変換ハードウェアは、DMA要求内のソース識別子を以下のように検査する。コンテキスト・エントリがイネーブルされた（グローバル・コマンド・レジスタによって）場合、入ってくるDMA要求内のソース識別子を用いて、その対応するルート・エントリをルックアップし、ルート・エントリを介して、コンテキスト・エントリをルックアップする。この場合、DMAは、ルート・エントリ及びコンテキスト・エントリのプログラミングによって処理される。コンテキスト・エントリがイネーブルされない場合、DMA要求は、DEF-REG６４０によって処理される。
【００６４】
他のコンテキスト・エントリと同様に、デフォールト・コンテキストは、特定のタイプの変換機能（ブロッキング、パススルー、フィルタリングされたアドレス、変換構造を用いて変換されたアドレス等など）を実施するようプログラムすることが可能である。
【００６５】
DEF_REG６４０は、存在（P）フィールド６４２と、単一レベル／マルチレベルのテーブル（M）フィールド６５０と、アドレス空間ルート（ASR）フィールド６５４と、ゲスト・アドレス幅（GAW）フィールド６５６と、障害処理フィールド６６０と、ドメイン識別子（DID）フィールド６６２とを含む。通常、Pフィールド６４２及びMフィールド６５０は、1ビットのインディケータである。
【００６６】
Pフィールド６４２は、トランザクションを処理する際に必ず検査すべきである。否定されていると、これは、このコンテキスト・エントリを介したトランザクション全てが阻止されることを示す。アサートされていると、これは、他のフィールドのプログラミングに基づいてこのコンテキスト・エントリを介した処理トラザクションを示す。
【００６７】
Mフィールド６５０は、マルチレベル・テーブル変換を用いるか否かを示すのに用いる。アサートされていると、これは、このコンテキスト・エントリ・ビットに用いる単一レベルのページ・テーブルを用いてページ・テーブル内のエントリをインデクス化する旨を示す。否定されていると、これは、このコンテキスト・エントリに用いるマルチレベルのページ・テーブルを用いてルート・テーブル内のエントリをルックアップする旨を示す。
【００６８】
ASRフィールド６５４は、アドレス空間ルートの、容量を合わせたホスト物理アドレスである。連続したアドレス空間を用いる場合、このフィールドは、ドメインの物理アドレス空間のベース・アドレスを含んでいる。ページ・テーブル（単一レベル又はマルチレベル）を用いる場合、このフィールドは、ルート・テーブルのベースを指し示す。
【００６９】
GAWフィールド６５６は、単一のページ・テーブル又はマルチレベルのページ・テーブルを規定するコンテキスト・エントリの場合にのみ有効である。マルチレベル・ページ・テーブルを用いる場合、このフィールドは、ページ・テーブル・ウォークのためにDMA再マッピング回路１３５によって用いる対象の調節されたゲスト・アドレス幅（AGAW）を示す。このフィールドにおいて規定される値は、DMA再マッピング回路１３５によってサポートされ、ケーパビリティ・レジスタにおいて通知されるAGAW値である。ケーパビリティ・レジスタは、DMA再マッピング回路１３５によってサポートされるケーパビリティを示すレジスタである。単一レベルのページ・テーブルを用いる場合、このフィールドは、ドメインのゲスト・アドレス幅を示す。このフィールドに規定された値は、単一レベルのページ・テーブルの最小GAWと、ケーパビリティ・レジスタ内のDMA再マッピング回路１３５によって通知されるMGAW値との間である。
【００７０】
DMA再マッピング回路１３５が、下にある実現形態によってサポートされない値をこのフィールド内で検出した場合、このコンテキスト・エントリを介したDMA要求は全て阻止され、変換障害が生じる。このコンテキスト・エントリを介して処理され、２GAW（GAWはこのフィールドにおける値である）-１を超えるゲスト物理アドレスをアクセスするDMA要求は阻止され、変換障害が生じる。
【００７１】
FPフィールド６６０は、このコンテキスト・エントリを介して処理されるDMA要求による障害の記録をイネーブル又はディセーブルする。
【００７２】
DIDフィールド６６２は、デフォールト・ドメインのドメイン識別子を示す。
【００７３】
アドレス・フィルタリング
マルチレベル・ページ・テーブル構造ベースのアドレス変換は、通常（例えば、４KB）のページ粒度でソフトウェアがメモリを管理することを可能にすることによって最大の柔軟性を実現する。しかし、マルチレベル・ページ・テーブル構造は、ページ・テーブルをウォークするためにハードウェアを必要とするので、最も大きなアドレス変換レーテンシを受ける。ハードウェアの実現形態は、変換キャッシュを利用して変換オーバヘッドを削減することができるが、I／O変換ルックアサイド・バス（TLB）ミス上で受けるページ・ウォークレーテンシは、特定のタイプのI／Oトラフィックの場合、適切でないことがあり得る。例えば、アイソクロナス・チャネルを用いたPCIエクスプレス装置（高品位オーディオなど）からのDMA要求や、統合グラフィックスなどの特定のチップセット統合装置は、非決定的DMA再マッピング・レーテンシを受け得るものでない。
【００７４】
DMA再マッピング・レーテンシによってマイナスの影響を受け得るI／O装置をサポートするハードウェア実現形態の場合、アーキテクチャは、（アドレス変換のかわりに）DMAアドレス・フィルタリングによって、装置の非移動ドメインへの割り当てを規定する。非移動ドメインは、ゲスト物理アドレス空間がシステムのホスト物理アドレス空間の部分集合であるドメインである。アドレス・フィルタリングのハードウェアは、通常の容量（例えば、４KB）のページにおいてホスト・メモリを管理するうえでのソフトウェアの柔軟性を確保し、最小のオーバヘッドしか受けない。
【００７５】
アドレス・フィルタリングのサポートは、レジスタ組220内のケーパビリティ・レジスタを介してDMA再マッピング回路１３５によって通知される。装置全てからのDMA要求をアドレス変換することができるハ―ドウェア実現形態（アイソクロナス・チャネルをサポートしないハードウェア実現形態など）は、アドレス・フィルタリングのサポートには必要でない。プラットフォーム構成が複数のDMA再マッピング・ハードウェア装置（チップセット構成部分やPCIエクスプレス・ルート・ポート毎のDMA再マッピング・ハードウェア装置など）を必要としており、アドレス・フィルタリングのサポートが装置のうちの１つによって要求される場合、これは、ハードウェア装置全てによってサポートされる。
【００７６】
アドレス・フィルタリングの場合、非移動ドメインに割り当てられたメモリ内ページは、図７に示すフィルタ・ビットマップ・テーブルとして表す、メモリに常駐しているテーブルによって示す。このアーキテクチャは、単一の非移動ドメイン及び、よって、単一のフィルタ・ビットマップ・テーブルしか（通知DMA再マッピング・ハードウェア毎に）サポートしない。フィルタ・ビットマップ・テーブルの位置及び容量は、図７に示すアドレス・フィルタ・ベース・レジスタ及びアドレス・フィルタ容量レジスタによってプログラムされる。ビットマップ・テーブルの容量は、（４KB*２S）として計算される。ここで、Sは、アドレス・フィルタ容量レジスタにプログラムされた値である。上記テーブル内の各ビットは、４Kのホスト・ページを表す。最初のビットは、第１の４Kホスト物理アドレス空間を表す。フィルタ・ビットマップ・テーブルの最小容量は４KBである。これは、ホスト・メモリの第１の１２８MB領域をマッピングする。
【００７７】
そのDMA要求がハードウェアによってのみアドレス・フィルタリングすることが可能なその装置は、プラットフォーム・ファームウェアによってソフトウェアに通知される。前述の装置のコンテキスト・エントリのプログラミングによって、アドレス・フィルタリングし、かつ、DMA要求を阻止しないか、パススルーとして認めるか、又はアドレス変換するよう設定されることが確実になる。
【００７８】
そのDMA要求もアドレス変換又はアドレス・フィルタリングすることが可能なI／O装置は、アドレス・フィルタリングを示すよう、対応するコンテキスト・エントリをプログラムすることによって非移動ドメインに割り当てることができる。同様に、非移動ドメインは、アドレス・フィルタリングを示すようデフォールト・コンテキスト・レジスタをプログラミングすることによってデフォールト・ドメインと同様にすることが可能である。
【００７９】
コンテキスト・エントリが、アドレス・フィルタリングを示すようプログラムされた場合、コンテキスト・エントリ・フィールドの残り（有効フィールド、存在フィールド及びパススルー・フィールド以外）はDMA再マッピング回路１３５によって無視される。
【００８０】
アドレス・フィルタリングを規定するコンテキスト・エントリを介して処理されたDMA要求は、以下のようにDMA再マッピング回路１３５によって扱われる。
1.  DMA要求は、通常のチップセットDMAアドレス・デコード論理によってメモリをアクセスすることを確実にするよう検証される。DMA要求は、ピアツーピアとしてデコードされた場合、阻止される。
2.  DMA要求がメモリに対するものである場合、DMA要求が対象とするメモリ位置が４Kページ内であるよう検証される。
3.  前述の２つの検査に合格した場合、DMA要求内のGPAが、非移動ドメインのアドレス空間内にあるよう検証される。アドレス（２（P+２７）−１）を上回るメモリ位置をアクセスしようとするDMA要求は何れも阻止される。ここで、Pは、フィルタ・ビットマップ容量レジスタにおいてプログラムされる値である。
4.  前述の検査全てに合格した場合、DMA再マッピング回路１３５は、フィルタ・ビットマップ・テーブル内のビット・オフセット（GPA＞＞１２）でDMA要求によってアクセスされたページに対応するビット・フィールドをルックアップする。ビットがクリアされている場合、DMA要求は、正常であるものとして処理される。ビットがセットされている場合、DMA要求は阻止される。
【００８１】
図7は、本発明の一実施例による、アドレス・フィルタリング・レジスタを有するレジスタ組２２０を示す図である。レジスタ組２２０は、フィルタ容量レジスタ（FSIZE_REG）７１０と、フィルタ・ベース・レジスタ（FBASE_REG）７２０と、フィルタ制御レジスタ（FCTL_REG）７３０と、フィルタ障害レジスタ（FFLT_REG）７４０とを含む。
【００８２】
FSIZE_REG７１０は、アドレス・フィルタリング・ビットマップ・テーブルの容量を示す。DMA再マッピング回路１３５がアドレス・フィルタリングをサポートしない場合、このレジスタは、予約済として扱われる（例えば、書き込みは無視され、読み出しによって0が戻される）。これは、フィルタ・テーブル容量（FTS）フィールド７１２と、フィルタ・ビットマップ・メモリ・タイプ（BMT）フィールド７１５とを含む。BMTフィールド７１５は、ビットマップ領域がキャッシュ可能か否かを示す。否定されていると、これは、ビットマップ領域が、キャッシュされていないことを示す。このフィールドへの書き込みは無視される。アサートされていると、これは、キャッシュ可能な領域内にビットマップ領域があり得ることを示す。FTSフィールド７１２は、アドレス・フィルタ・テーブルの容量を示す。容量は、以下の公式によって計算される。TableSize=4K*2FSIZE_REGバイト。例えば、0000h:１２８MBメモリをサポートする４KBテーブル、0001h:256MB主メモリをサポートする８KBテーブル、0005h:4GB主メモリをサポートする128KBテーブル等。
【００８３】
FBASE_REG720は、アドレス・フィルタリング・ビットマップ・テーブルのベース・アドレスへのポインタを保持している。DMA再マッピング回路１３５がアドレス・フィルタリングをサポートしない場合、このレジスタは、予約済として扱われる（例えば、書き込みは無視され、読み出しによって0が戻される）。これは、フィルタ・テーブル・ベース（FTB）フィールド７２５を含む。FTBフィールド７２５は、メモリ内のアドレス・フィルタ・テーブルのベース・アドレスへのポインタである。テーブルは容量が合わせられている。最小のテーブル容量は、４GBのアドレス指定能力をサポートする１２８Kである。
【００８４】
FCTL_REG７３０は、アドレス・フィルタ・ビットマップ・テーブルのキャッシングを制御する。DMA再マッピング回路１３５がアドレス・フィルタリングをサポートしない場合、このレジスタは、予約済として扱われる（例えば、書き込みは無視され、読み出しによって0が戻される）。これは、フィルタ・ハードウェア・イネーブル（FHE）フィールド７３２と、書き込みバッファ・フラッシュ（WBF）フィールド７３４と、フィルタ・キャッシュ無効化（FCI）フィールド７３６と、フィルタ・テーブル保護（FTP）フィールド７３８とを含む。FHEフィールド７３２は、アドレスフィルタリング・テーブルをイネーブル又はディセーブルするためのソフトウェア・プログラム可能な制御フィールドである。否定されていると、それは、アドレス・フィルタリング・ハードウェアのディセーブルを示す。ＤＭＡ要求であって、それがなければアドレス・フィルタリングされるＤＭＡ要求は、パススルーとして処理される。アサートされていると、それは、アドレス・フィルタリング・ハードウェアのイネーブルを示す。フィルタ・ベース・レジスタ及びフィルタ容量レジスタは、このフィールドを介してアドレス・フィルタリング・ハードウェアをイネーブルする前にプログラムされる。WBFフィールド734は、チップセット内部書き込みバッファをフラッシュするのに用いる。これは、フィルタ・ビットマップ・テーブル更新が、内部の書き込みポスティング・バッファに保持されていないことを確実にするために行われる。ソフトウェアは、このフィールドをアサートして書き込みバッファ・フラッシュ・コマンドを出す。DMA再マッピング回路135はこれを否定して、書き込みバッファ・フラッシュの完了の示標を備える。ソフトウェアは、否定する対象のフィールドをリードバックし、検査してフラッシュの完了を確認する。FCIフィールド７３６は、アドレス・フィルタ・ビットマップ・キャッシュを無効化する。ソフトウェアはこのフィールドをアサートして、アドレス・フィルタ・キャッシュ無効化を要求する。DMA再マッピング回路１３５はこれを否定して、無効化の完了を示す。ソフトウェアは、否定する対象のこのフィールドをリードバックし、検査してフラッシュの完了を確認する。FTPフィールド７３８は、アドレス・フィルタ・ビットマップ領域の保護を示す。これがソフトウェアによってアサートされていると、ハードウェアは、アドレス・フィルタ・ビットマップ領域をDMAアクセスから保護し始める。ソフトウェアは、このフィールドを読み出し、アサートされている旨を検査してアドレス・フィルタ・ビットマップ領域が保護されていることを確認する。これがソフトウェアによって否定されていると、DMA再マッピング回路１３５は、アドレス・フィルタ・ビットマップ領域をDMAアクセスから保護することを停止する。
【００８５】
FFLT_REGは、アドレス・フィルタリング・ハードウェアによって検出された障害を通知する。DMA再マッピング回路１３５がアドレス・フィルタリングをサポートしない場合、このレジスタは、予約済として扱われる（例えば、書き込みは無視され、読み出しによって0が戻される）。これは、障害アドレス（FA）フィールド７４２と、タイプ（T）フィールド７４４と、有効（V）フィールド７４６とを含む。FAフィールド７４２は、障害DMA要求によってアクセスされる場所のフレーム・アドレスである。Tフィールド７４４は、障害DMA要求のメモリ・アクセス・タイプを示す。否定されていると、これはDMA書き込みを示す。アサートされていると、これはDMA読み出し要求を示す。Vフィールド７４６は、障害DMA要求のページ・フレーム・アドレスがラッチされたかを示す。これがアサートされていると、障害DMA要求のページ・フレーム・アドレスが障害アドレス・フィールドにおいてラッチされ、更なるアドレス・フィルタリング障害アドレスは何らラッチされない。ソフトウェアは、アドレス・フィルタリング障害記録を再イネーブルするための書き込みによってこのフィールドを明示的に否定する。
【００８６】
図8Aは、本発明の一実施例によるルート・エントリ５２０を示す図である。ルート・エントリ５２０は、存在（P）フィールド８１０とコンテキスト・エントリ・テーブル・ポインタ（CEP）フィールド８１５とを含む。
【００８７】
Pフィールド８１０は、ルート・エントリが存在しているかを示す。否定されていると、これは、ルート・エントリが存在しておらず、用いるべきでないことを示す。DMA再マッピング回路１３５は、このルート・エントリを介して処理されたDMA要求を阻止する。アサートされていると、それは、ルート・エントリが存在しており、トランザクションを処理するのに用いることが可能であることを示す。
【００８８】
CEPフィールド８１５は、このバスのコンテキスト・テーブルへのポインタである。コンテキスト・テーブルは、容量が４KBであり、ページが合わせられている。
【００８９】
図8Bは、本発明の一実施例によるコンテキスト・エントリ535を示す図である。コンテキスト・エントリ５３５は、存在（P）フィールド８２２と、マルチレベル（M）フィールド８３０と、アドレス空間ルート（ASR）フィールド８３４と、ゲスト・アドレス幅（GAW）フィールド８３６と、障害処理（FP）フィールド８４０と、ドメイン識別子（DID）フィールド８４２とを含む。コンテキスト・エントリ５３５は、図6に示すデフォールト・レジスタDEF_REG６４と同様のフィールドを有する。通常、Pフィールド８２２及びMフィールド８３０は、1ビットのインディケータである。
【００９０】
Pフィールド８２２、Mフィールド８３０、ASRフィールド８３４及びGAWフィールド８３６はそれぞれ、図６に示すデフォールト・レジスタ（DEF_REG６４０）におけるPフィールド６４２、Mフィールド６５０、ASRフィールド６５４及びGAWフィールド６５６と同様である。
【００９１】
DIDフィールド８４２は、コンテキスト・エントリが属するドメインの識別子である。装置全てが、同じページ・テーブル構造を用い、よって、アドレスを同一に変換させ、そのコンテキスト・エントリに同じドメイン識別子を有することをソフトウェアが確実にすべきである。DMA再マッピング回路１３５は、キャッシュ・サポートを用いる場合にそのキャッシュ・エントリをタギングするためのドメイン識別子を用いることができる。
【００９２】
図8Cは、本発明の一実施例によるページ・テーブル・エントリ（PTE）５６５を示す図である。PTE５６５は、読み取り可能（R）フィールド８５０と、書き込み可能（W）フィールド８５２と、コヒーレント（C）フィールドと、スーパーページ（SP）フィールド８５６と、アドレス（ADDR）フィールド８６０とを含む。規定することができるフィールドは前述のフィールドよりも多くても少なくてもよい。
【００９３】
Rフィールド８５０は、ページがDMAに読み出し可能かを示す。否定されていると、ページはDMA読み出し要求にアクセス可能でないことを示す。このページ・テーブル・エントリによって処理されるDMA読み出し要求は阻止される。障害通知がイネーブルされた場合、変換障害が生成される。アサートされていると、それは、ページがDMA読み出し要求にアクセス可能であることを示す。
【００９４】
Wフィールド852は、ページがDMAに書き込み可能かを示す。否定されていると、それは、ページがDMA書き込み要求にアクセス可能でないことを示す。このページ・テーブル・エントリによって処理されるDMA書き込み要求は阻止される。障害通知がイネーブルされた場合、変換障害が生成される。アサートされていると、それは、ページがDMA書き込み要求にアクセス可能であることを示す。
【００９５】
Cフィールド８５４は、変換ホスト物理アドレスへのアクセスがコヒーレントかを規定する。否定されていると、それは、変換ホスト物理アドレスへのDMAアクセスが、I／Oトランザクションに規定されたコヒーレンシ属性に従うことを示す。例えば、「スヌープなし」属性組を有するPCI-X要求又はPCIエクスプレス要求は、スヌープされることなく変換ホスト物理アドレスをアクセスする。アサートされていると、それは、変換ホスト物理アドレスへのDMAアクセスがコヒーレントであるとして処理されることを示す。このフィールドが（ページ・テーブル・エントリ全てにおいて、DMA再マッピング回路１３５が、（ケーパビリティ・レジスタにおいて通知された）Cフィールドのアサート設定をサポートしない場合、及びSPフィールドが否定された非リーフ・ページ・テーブル・エントリにおいて）予約済(0)として扱われることをソフトウェアは確実にすべきである。
【００９６】
SPフィールド８５４は、これがリーフ・ページ・テーブル・エントリ及び完全なページ・ウォークであることをＤＭＡ再マッピング回路１３５に示す。否定されていると、これは、ページ・ウォークを続行し、次のレベルのテーブルを用いることを示す。アサートされていると、それは、テーブル・ウォークの停止と、ＡＤＤＲフィールド８６０において設けられたページ・ベース・アドレスの上位ビットとともにページ・ウォークのゲスト物理アドレス内の未使用下位ビットを用いたホスト物理アドレスの構成とを示す。ＤＭＡ再マッピング回路１３５は、ケーパビリティ・レジスタにおいて通知された、それがサポートするスーパーページ容量に対応するページ・テーブル・エントリにおいてのみＳＰフィールド８５４を求める。（１）マルチレベル・ページ・エントリにおける４ＫＢリーフ・ページ・テーブル・エントリ、（２）ＤＭＡ再マッピング回路１３５によってサポートされないスーパーページ・サイズに対応するマルチレベル・ページ・テーブルにおける非リーフ・ページ・テーブル・エントリ、及び（３）単一レベル・ページ・エントリにおけるページ・テーブル・エントリにおいてこのフィールドを予約済（例えば、0）としてソフトウェアは扱うべきである。
【００９７】
ＡＤＤＲフィールド８６０は、これがリーフ・ノードである場合にページ・フレームのホスト物理アドレスを含む。さもなければ、これは次レベル・ページ・テーブルへのポインタを含む。このフィールドは容量が合わせられる。
【００９８】
アドレス変換機構の属性を更に特徴付けるために更なるフィールドを定義することができる。例えば、以下の属性（すなわち、ベース／バウンド変換をイネーブルするためのベース／バウンド属性、マルチレベル・テーブル変換における第１レベル・ページ・テーブルの容量を示すためのストライド属性、及び、変換なしでI／Oトランザクションのパススルーが可能であるかを示すためのパススルー属性）を定義することができる。
【００９９】
アドレス変換機構
ソフトウェアによる物理メモリ管理サポートの種々の粒度をサポートするために、DMA再マッピング・アーキテクチャは、３つのタイプの変換構造を規定する。チップセット実現形態は、前述の変換構造の１つ又は複数をサポートし、サポートされるタイプをそのケーパビリティ・レジスタによって通知することができる。前述の機構は、種々のコスト、複雑度、及び性能のトレードオフを提供する。複数の変換構造をサポートする実現形態の場合、各コンテキスト・エントリは、種々の変換構造タイプを用いるようプログラムされ得る。
【０１００】
以下のアドレス変換構造（すなわち、（１）複数レベルのページ容量のページ・テーブル（それぞれが、ページの容量の領域内にある）にわたる領域のページ粒度割り当てをイネーブルするためのマルチレベル・ページ・テーブル構造、（２）単一の連続したページ・テーブルによって領域のページ粒度割り当てをイネーブルするための単一レベル・ページ・テーブル構造、及び（３）ドメインへの連続領域割り当てをイネーブルするためのベース／バウンド変換構造）を規定する。前述の変換構造の何れも、デフォールト又は任意として選択することができる。
【０１０１】
図９Aは、本発明の一実施例による、マルチレベル・テーブルを用いたアドレス変換構造５４０を示す図である。アドレス変換構造５４０は、コンテキスト・エントリ５３５と、調節ゲスト物理アドレス（AGPA）９１０と、第１レベル・ページ・テーブル９２０と、中間テーブル９３０と、リーフ・ノード・テーブル９４０と、ページ９５０とを含む。マルチレベル・テーブルは、階層的に配置された、いくつかの変換テーブルを含む。
【０１０２】
コンテキスト・エントリ５３５内のASRフィールドは、第１レベル・ページ・テーブル９２０のベース・アドレスを備える。AGPA９１０は、オフセット・フィールド９１２と、リーフ・ノード・ページ・テーブル・フィールド９１４と、中間ページ・テーブル・フィールド９１６と、第１レベル・ページ・テーブル・フィールド９１８とを含む。マルチレベル・ページ・テーブル内のレベル数は、AGPA９１０の幅と、メモリ空間と、メモリ管理ポリシーと、ワード長と、何れかの他の実現要因とに応じた何れかの適切な数であり得る。
【０１０３】
第１レベル・ページ・テーブル・フィールド９１８をASRによって供給される第１レベル・ベース・アドレスと合成して第１レベル・ページ・テーブル９２０をインデクス化する。一実施例では、各エントリは８バイトであり、第１レベル・ページ・テーブル・フィールド９１８を、シフタ９２２によって3ビット分シフトさせ、次いで、加算器９２４によって第１レベル・ベース・アドレスに加算して第１レベル・インデクスを第１レベル・ページ・テーブル９２０に供給する。インデクス化された第１レベル・ページ・エントリは、中間レベル・ページ・テーブル９３０の中間ベース・アドレスを供給する。
【０１０４】
中間ページ・テーブル・フィールド９１６を中間ベース・アドレスと合成して中間レベル・ページ・テーブル９３０をインデクス化する。各エントリは8バイトであるため、中間ページ・テーブル・フィールド９１８をシフタ９３２によって3ビット分シフトさせ、次いで、加算器９３４によって中間レベル・ベース・アドレスに加算して中間レベル・インデクスを中間レベル・ページ・テーブル９３０に供給する。インデクス化された中間レベル・ページ・テーブル・エントリは、リーフ・ノード・ページ・テーブル９４０のリーフ・ノード・ベース・アドレスを備える。
【０１０５】
リーフ・ノード・ページ・テーブル・フィールド914をリーフ・ノード・ベース・アドレスと合成してリーフ・ノード・ページ・テーブル940をインデクス化する。各エントリは8バイトであるため、リーフ・ノード・ページ・テーブル・フィールド914をシフタ９４２によって3ビット分シフトさせ、次いで、加算器944によってリーフ・ノード・ベース・アドレスに加算してリーフ・ノード・インデクスをリーフ・ノード・ページ・テーブル940に供給する。インデクス化されたリーフ・ノード・ページ・テーブル・エントリは、ページ９５０のホスト・ベース・アドレスを備える。
【０１０６】
オフセット９１２を次いでホスト・ベース・アドレスと合成して、ページ９５０内にホスト物理アドレスを生成する。
【０１０７】
マルチレベル・ページ・テーブルによって、ソフトウェアが、ホスト物理メモリをページ（例えば、４Ｋ）の粒度で管理し、ページ・ディレクトリ及びページ・テーブルを有する階層構造を設定することが可能になる。論理回路２２４は、ページ・ウォーク論理を実現し、DMAトランザクションにおいて供給されるGPAを用いて前述の構造を横断する。DMA要求内のGPAを変換するために横断しなければならない最大数のページテーブル・レベルは、対応するコンテキスト・エントリのゲスト・アドレス幅の関数である。ソフトウェアは、ケーパビリティ・レジスタを介したDMA再マッピング回路１３５の特定のハードウェア実現形態によってサポートされる最大ゲスト・アドレス幅を照会することが可能である。
【０１０８】
Pを通常ページ容量とする。Qをエントリ毎のバイト数とする。p及びqは、2P=Pであり、2q=Qであるようなものとする。ドメインの調節ゲスト・アドレス幅（AGAW）は、（AGAW-p）が(p-q)の倍数であるように調節されたそのゲスト・アドレス幅（GAW）値である。AGAWは以下のように判定される。
【０１０９】
【数１】
2008515093.tif 000003
例えば、P=４Kであり、Q=８であるとする。その場合、p=１２であり、ｑ=３である。２GBのメモリが割り当てられているドメインは３１のGAWを有している。AGAWは、
R=（31-12）mod  9=1
AGAW=31+9-1=39
である。
【０１１０】
調節されたゲスト・アドレス幅（AGAW）は、ページ・ウォークのレベルの数を示す。DMA再マッピング回路１３５は、対応するGAWがホスト・アドレス幅に等しい規定AGAWをサポートする。ドメインにマルチレベル・ページ・テーブルを用いる場合、ソフトウェアは、前述の通り、調節されたゲスト・アドレス幅（AGAW）を計算する。ソフトウェアは、マルチレベル・ページ・テーブル構造を設定する場合にAGAWを用いる。それは、このドメインに割り当てられた装置全てのコンテキスト・エントリにおけるドメインのGAW及びAGAWをプログラムする。
【０１１１】
DMA再マッピング回路１３５は、より小さな調節ゲスト・アドレス幅をサポートすることもできる。それは、ケーパビリティ・レジスタによって、サポートされた調節ゲスト・アドレス幅を通知することができる。ソフトウェアは、ドメインのマルチレベル・ページ・テーブルの設定の際に、下にあるハードウェア実現形態によってサポートされるAGAWを用いることを確実にする。ソフトウェアは、このドメインに割り当てられた装置のコンテキスト・エントリにおいてドメインのAGAWをプログラムすべきでもある。
【０１１２】
マルチレベル・アドレス変換を規定するコンテキスト・エントリを介して処理されたDMA要求は、以下のようにDMA再マッピング回路１３５によって扱われる。
1.  DMA要求において規定されたGPA／長さの組み合わせを、DMA再マッピング回路１３５がページ境界の横断をサポートするか否かによって用いる。DMA再マッピング回路１３５が、ページ境界を横断するDMA要求をサポートし、GPA／長さの組み合わせが、ページ境界を横断するDMA要求を示す場合、DMA要求が対象とする各ページ領域は別個にアドレス変換される。DMA再マッピング回路１３５が、ページ境界を横断するDMA要求をサポートせず、GPA／長さの組み合わせが、ページ境界を横断するDMA要求を示す場合、アドレス変換障害が生じる。
2.  コンテキスト・エントリにおいてプログラムされたGAWフィールドが、DMA再マッピング回路１３５によってサポートされた調節ゲスト・アドレス幅でない（これは、ケーパビリティ・レジスタにおいて通知される）場合、DMA要求は阻止され、アドレス変換障害が生じる。
3.  DMA要求内のGPAは、装置が割り当てられるドメインのゲスト物理アドレス空間内にあるよう検証される。アドレス（2x-１）を上回るメモリ位置をアクセスしようとするDMA要求は阻止される。ここで、Xは、このDMA要求の処理に用いるコンテキスト・エントリにおいてプログラムされるゲスト・アドレス幅である。
4.  前述の検査が首尾良く行われた場合、DMA要求内のGPAをXビットに調節して、調節ゲスト物理アドレス（AGPA）を構成する。ここで、Xは、このDMA要求の処理に用いるコンテキスト・エントリにおいてプログラムされたゲスト・アドレス幅である。AGPAへのDMA要求は、マルチレベル・ページ・テーブル構造のプログラミングによって、阻止されるか、又は有効なHPAに変換される。
5.  DMA再マッピング回路１３５は、工程４によって生成されたHPAの通常のチップセット・アドレス・デコードを行い、メモリへのアクセス、又はピアツーピア要求としてDMA要求を処理する。
6.  変換HPAが、メモリ宛であるようにデコードされた場合、HPAは、コヒーレンシ（C）属性の設定のサポートによってアクセスされる。DMA再マッピング回路１３５が、ページ・テーブル・エントリ内のコヒーレンシ（C)属性の否定された設定のみをサポートする場合、メモリは、DMA要求において規定される（か、又はDMA要求から推定される）コヒーレンシによってアクセスされる。例えば、PCIエクスプレス要求がDMA要求を非スヌープとして規定した場合、メモリはスヌープされることなくアクセスされる。DMA再マッピング回路１３５が、ページ・テーブル・エントリ内のコヒーレンシ（C）属性のアサート設定及び否定設定をサポートする場合、メモリは、DMA要求をアドレス変換するのに用いるリーフ・ページテーブル・エントリ内のコヒーレンシ属性のプログラミングによってアクセスされる。
【０１１３】
図9Bは、本発明の一実施例による、単一のテーブルを用いたアドレス変換構造５４０を示す図である。アドレス変換構造５４０は、コンテキスト・エントリ５３５と、ゲスト物理アドレス（GPA）９６０と、単一ページ・テーブル９７０と、ページ９８０とを含む。
【０１１４】
単一レベル・ページ・テーブルは、長いページ・ウォークなしではあるが、大容量の連続したページ・テーブル構造を予約することを犠牲にして、４K粒度のページ割り当てを備えるための別の機構をソフトウェアに提供する。単一レベル・ページ・テーブルのページ・テーブル・エントリ容量（例えば、64ビット）及び形式は、ストライド・フィールドが予約済として扱われる以外は、前述のマルチレベル構造のページ・テーブル・エントリのものと同様である。
【０１１５】
ページ・テーブルの容量は、ゲストのアドレス空間の容量によって変わってくる。例えば、１GB（GAW=30）のゲスト・アドレス指定能力の場合、ソフトウェアは、218個のページ・テーブル・エントリを有する２MBのページ・テーブルを割り当てる必要がある。I／O変換ルックアサイド・バッファ（TLB）も、単一レベルのページ・テーブルを用いたDMAアドレス変換に適用可能である。
【０１１６】
単一レベル・アドレス変換を規定するコンテキスト・エントリを介して処理されたDMA要求は、以下のようにDMA再マッピング回路１３５によって扱われる。
1.  DMA要求において規定されたGPA／長さの組み合わせを、DMA再マッピング回路１３５がページ境界の横断をサポートするか否かによって用いる。DMA再マッピング回路１３５が、ページ境界を横断するDMA要求をサポートし、GPA／長さの組み合わせが、ページ境界を横断するDMA要求を示す場合、DMA要求が対象とする各ページ領域は別個にアドレス変換される。DMA再マッピング回路１３５が、ページ境界を横断するDMA要求をサポートせず、GPA／長さの組み合わせが、ページ境界を横断するDMA要求を示す場合、アドレス変換障害が生じる。
2.  コンテキスト・エントリにおいてプログラムされたGAWフィールドが、最小値（例えば、２１）と、ケーパビリティ・レジスタ内のDMA再マッピング回路１３５によって通知される最大ゲスト・アドレス幅（MGAW）との間にない場合、DMA要求は阻止され、アドレス変換障害が生じる。
3.  DMA要求は、装置が割り当てられるドメインのゲスト物理アドレス空間内のアドレスをアクセスするよう検証される。アドレス（2x-１）を上回るメモリ位置をアクセスしようとするDMA要求は阻止される。ここで、Xは、このDMA要求の処理に用いるコンテキスト・エントリにおいてプログラムされるゲスト・アドレス幅（GAWフィールド）である。
4.  前述の検査が首尾良く行われた場合、DMA再マッピング回路１３５はビット（X-１）：１２を用いて、単一レベル・ページ・テーブル内のページ・テーブル・エントリをルックアップする。DMA要求は、ページ・テーブル・エントリのプログラミングによって、阻止されるか、又は有効なＨＰＡに変換される。
5.  DMA再マッピング回路１３５は、工程４によって生成されたHPAの通常のチップセット・アドレス・デコードを行い、メモリへのアクセス、又はピアツーピア要求としてDMA要求を処理する。
6.  変換HPAが、メモリ宛であるようデコードされた場合、HPAは、コヒーレンシ（C）属性の設定のサポートによってアクセスされる。DMA再マッピング回路１３５が、ページ・テーブル・エントリ内のコヒーレンシ（C)属性の否定された設定のみをサポートする場合、メモリは、DMA要求において規定される（か、又はDMA要求から推定される）コヒーレンシによってアクセスされる。例えば、PCIエクスプレス要求がDMA要求を非スヌープとして規定した場合、メモリはスヌープされることなくアクセスされる。DMA再マッピング回路１３５が、ページ・テーブル・エントリ内のコヒーレンシ（C）属性のアサート設定及び否定設定をサポートする場合、メモリは、DMA要求をアドレス変換するのに用いるページ・テーブル・エントリ内のコヒーレンシ属性のプログラミングによってアクセスされる。
【０１１７】
コンテキスト・エントリ５３５のＡＳＲフィールドは、ページ単一テーブル９７０を位置特定するためのベース・アドレスを備える。ＧＰＡ９６０は、オフセット・フィールド９６２とページ・テーブル・フィールド９６４とを含む。単一ページ・テーブル９７０は、ＧＰＡ９６０に対応するホスト物理アドレスのページを指し示すためのページ・テーブル・エントリを含む。
【０１１８】
対応するページ・テーブル・エントリをルックアップするために、ページ・テーブル・フィールド９６４が、ＡＳＲフィールドによって備えられるベース・アドレスと合成される。各エントリは8バイトを占めるので、ページ・テーブル・フィールド９６４をシフタ９７２によって3ビット分シフトさせ、次いで、加算器９７４によってASRに加算してインデクスを単一ページ・テーブル９７０に供給する。
【０１１９】
インデクスに対応するページ・テーブル・エントリはその場合、ページ９８０のベース・アドレスを備える。オフセット・フィールド９６２をこのベース・アドレスに加算器９８４によって加算して、ページ９８０において、結果として生じるHPAを供給する。
【０１２０】
図９Cは、本発明の一実施例による、ベース／バウンド変換を用いたアドレス変換構造５４０を示す図である。アドレス変換構造５４０は、コンテキスト・エントリ５３５と、ゲスト物理アドレス（GPA）９６０と、物理メモリ空間９９０とを含む。
【０１２１】
ベース・バウンドは、アドレス変換の最も単純な形式を実現する（DMA要求におけるGPAを、そのドメインのベース・アドレスからのオフセットとして用いる）。ドメインのベース・アドレスは、ホスト物理アドレスであり、コンテキスト・エントリ５３５のASRフィールド８３４を介してプログラムされる（図８B）。コンテキスト・エントリ内のゲスト・アドレス幅（GAW）はオフセット限度を示す。GAWによって示す限度を上回るゲスト・アドレスを有するDMA要求は何れも、DMA再マッピング回路１３５によって阻止される。
【０１２２】
一実施例では、ホスト物理アドレスは64ビットである。有効なゲスト・アドレス（例えば、GAWアドレス指定能力内のアドレス）の場合、DMA再マッピング回路１３５は、ホスト物理アドレスを生成するために以下の演算を行う。
【０１２３】
ホスト物理アドレス［６３：GAW］=アドレス空間ルート［６３：GAW］
ホスト物理アドレス［GAW-1：0］=ゲスト物理アドレス［GAW-1：0］
【０１２４】
性能の拡張
前述のアドレス変換機構は、性能及び／又は柔軟性を向上させるよう拡張することができる。一拡張手法は、マルチレベル・ページ・テーブルにおいて用いる種々の容量の変換テーブル（小容量テーブル及び大容量テーブルをはじめとする）を有することである。これは、ページ・テーブル・エントリ又はデフォールト・コンテキスト・レジスタ６４０内のストライド（S）フィールドを用いることによって達成することができる。Sフィールドは、何れかの数のテーブル容量及び何れかの適切なテーブル容量を規定することができる。一実施例では、２つのテーブル容量（４KB及び２MB）を用いる。４KBテーブルは9ビットのストライドに対応し、２MBテーブルは１８ビットのストライドに対応する。小さなストライド及び大きなストライドは、特定の順序なしでページ・テーブルのウォーク中又は横断中に混ぜ合わせることができる。これらは、先のページ・テーブル・エントリ内のストライド・フィールドによって規定される。
【０１２５】
別の拡張手法は、チップセット・ハードウェアによってサポートすることができるいくつかのページ容量を規定することである。２ＭＢを超える数多くのスーパーページ容量を可能にするために、一般化されたスーパーページ・フィールドをページ・テーブル・エントリにおいて規定する。一般化されたスーパーページ・フィールドは、ブーティング処理の初期段階でメモリがＶＭに割り当てられる使用法モデルに適している。変換工程の数をかなり削減することによって、性能上の便益を即時に達成することができる。更に、ページ・テーブルに関連したメモリ・オーバヘッドをかなり削減することができる。
【０１２６】
ページ・テーブル・エントリ内のスーパーページ・フィールドによって、容量が更に大きなページ割り当てが可能になる。アサートされたスーパーページ・フィールドを有するページ・テーブル・エントリがページ・テーブル・ウォークで生起する場合、ページ・テーブル・エントリ内のページ・ベース・アドレスを、未使用ゲスト物理アドレス・ビットと合成することによって、変換アドレスが直ちに構成される。スーパーページ・フィールドを有するページ・テーブル・エントリがアサートされたページ・テーブル構造レベルに基づいて、アーキテクチャは、容量２MB、１GB、５１２GB、２５６TB及び１２８PBのスーパーページを規定する。当業者によって知られているように、何れかの他のスーパーページ容量を用いることができる。
【０１２７】
前述の拡張やその他の再マッピング動作をサポートするためのＤＭＡ再マッピング回路１３５を含むチップセットのケーパビリティは、ケーパビリティ・レジスタにおいて通知することができる。ソフトウェアは、このケーパビリティ・レジスタを読み出して、チップセット又はＤＭＡ再マッピング回路１３５によってサポートされる種々のケーパビリティを調べることができる。
【０１２８】
図10は、本発明の一実施例による、ケーパビリティ・レジスタを有するレジスタ組２２０を示す図である。レジスタ組２２０は、ケーパビリティ・レジスタ（CAP_REG）１０１０を含む。
【０１２９】
CAP_REG１０１０は、一般的な変換ハードウェア・ケーパビリティを通知する。これは、DMA再マッピング回路１３５によってサポートされるケーパビリティを示すためのいくつかのインディケータを含む。前述のインディケータは、単一レベル・ページ・テーブル・サポート（SL）フィールド１０１２と、マルチレベル・ページ・テーブル・サポート（ML）フィールド１０１４と、要求書き込みバッファ・フラッシング（RWBF）フィールド１０１６と、高度障害記録サポート（AFL）フィールド１０１８と、コヒーレンシ制御サポート（CC）フィールド１０２０と、サポートされる調節ゲスト・アドレス幅（SAGAW）フィールド１０２２と、スーパーページ・サポート（SPS）フィールド１０２４と、最大ゲスト・アドレス幅（MGAW）フィールド１０２６とを含む。
【０１３０】
SLフィールド１０１２は、単一レベル・ページ・テーブルがサポートされるかを示す。否定されていると、単一レベル・ページ・テーブルは何らサポートされない。アサートされていると、単一レベル・ページ・テーブルはサポートされる。
【０１３１】
MLフィールド1014は、マルチレベル・ページ・テーブルがサポートされるかを示す。否定されていると、マルチレベル・ページ・テーブルは何らサポートされない。アサートされていると、マルチレベル・ページ・テーブルはサポートされる。
【０１３２】
RWBFフィールド１０１６は、必要な書き込みバッファ・フラッシュを示す。否定されていると、それは、メモリ常駐構造への変更をDMA再マッピング回路１３５に反映するのに書き込みバッファ・フラッシュが何ら必要ないことを示す。アサートされていると、それは、DMA再マッピング回路１３５の実現形態が、メモリ常駐構造に行われる更新をDMA再マッピング回路１３５に反映するために書き込みバッファのフラッシュを（例えば、グローバル・コマンド・レジスタを介して）必要とすることをソフトウェアに示す。
【０１３３】
AFLフィールド１０１８は、高度障害記録サポートを示す。否定されていると、それは、メモリ常駐障害記録を介した高度障害記録がサポートされないことを示す。最初に検出された障害のみが、障害記録レジスタを介して記録される。アサートされていると、それは、高度障害記録がサポートされることを示す。高度障害記録は、障害記録レジスタを介してイネーブルされる。
【０１３４】
CCフィールド１０２０は、コヒーレンシ制御サポートを示す。否定されていると、それは、ページ・テーブル・エントリ内のコヒーレンシ（C）フィールドの否定された設定のみがDMA再マッピング回路１３５によってサポートされることを示す。アサートされていると、それは、ページ・テーブル・エントリ内のコヒーレンシ（C）フィールドの否定された設定及びアサートされた設定がともにDMA再マッピング回路１３５によってサポートされることを示す。
【０１３５】
ＳＡＧＡＷフィールド１０２２は、サポートされる調節ゲスト・アドレス幅を示し、これは同様に、ＤＭＡ再マッピング回路１３５の下にある実現形態によってサポートされるページ・テーブル・ウォークのレベルを表す。前述のフィールドは、マルチレベル・ページ・テーブル・サポートが、MLフィールド１０１４のアサート設定を介して示される場合にのみ有効である。
【０１３６】
前述のビットのうちの何れかにおけるアサート値は、対応するゲスト・アドレス幅がサポートされることを示す。一実施例では、このフィールド内の種々のビット位置に対応するゲスト・アドレス幅は、
0:  21ビットのゲスト・アドレス幅（1レベル・ページ・テーブル）
1:  30ビットのゲスト・アドレス幅（２レベル・ページ・テーブル）
2:  39ビットのゲスト・アドレス幅（３レベル・ページ・テーブル）
3:  48ビットのゲスト・アドレス幅（４レベル・ページ・テーブル）
4:  57ビットのゲスト・アドレス幅（５レベル・ページ・テーブル）
【０１３７】
DMA再マッピング回路１３５は、下にあるホスト・アドレス幅に及ぶゲスト・アドレス幅をサポートする。例えば、40ビットのホスト・アドレス幅をサポートする実現形態は、４８ビットのアドレス幅をサポートする。DMA再マッピング回路１３５は、任意的には、より小さなゲスト・アドレス幅をサポートすることもできる。ページ・テーブルの設定に用いる調節ゲスト・アドレス幅が、このフィールドにおいて通知されるサポートされるゲスト・アドレス幅の１つであることをソフトウェアは確実にすべきである。
【０１３８】
SPSフィールド１０２４は、DMA再マッピング回路１３５の下にある実現形態によってサポートされる、サポートされるスーパーページの容量を示す。フィールドは、サポートされるマルチレベル・ページ・テーブルが、MLフィールド１０１４のアサートを介して示される場合にのみ有効である。
【０１３９】
前述のビットの何れかにおけるアサート値は、対応するスーパーページ容量がサポートされることを示す。一実施例では、このフィールドを有する種々のビット位置に対応するスーパーページ容量は、
0:  ２ＭＢのスーパーページ（ページ・フレームに対する21ビットのオフセット）
1:  １ＧＢのスーパーページ（ページ・フレームに対する30ビットのオフセット）
2:  ５１２ＧＢのスーパーページ（ページ・フレームに対する39ビットのオフセット）
3:  ２５６ＴＢのスーパーページ（ページ・フレームに対する48ビットのオフセット）
4:  １２８ＰＢのスーパーページ（ページ・フレームに対する57ビットのオフセット）
である。
【０１４０】
ビット全てが否定されている場合、通常ページ容量がサポートされる。DMA再マッピング回路１３５は任意的には、1つ又は複数のスーパーページ容量をサポートすることができる。
【０１４１】
MGAWフィールド１０２６は、単一レベル・ページ・テーブル変換を用いる場合にDMA再マッピング回路１３５によってサポートされる最大ゲスト・アドレス幅を示す。このフィールドは、単一レベル・ページ・テーブル・サポートが、SLフィールド１０１２のアサート設定を介して示される場合にのみ有効である。
【０１４２】
図１１Aは、本発明の一実施例による、マルチレベル・テーブル及びストライドを用いたアドレス変換構造５４０を示す図である。アドレス変換構造５４０は、コンテキスト・エントリ５３５と、調節ゲスト物理アドレス（AGPA）９１０と、第１レベル・ページ・テーブル１１２０と、リーフ・ノード・ページ・テーブル１１３０と、ページ１１４０とを含む。
【０１４３】
コンテキスト・エントリ５３５内のASRフィールドは、第１レベル・ページ・テーブル１１２０のベース・アドレスを備える。AGPA９１０は、オフセット・フィールド９１２と、リーフ・ノード・ページ・テーブル・フィールド９１４と、第１レベル・ページ・テーブル・フィールド９１６とを含む。
【０１４４】
第１レベル・ページ・テーブル・フィールド９１６を、ASRフィールドによって供給される第１レベル・ベース・アドレスと合成して第１レベル・ページ・テーブル１１２０をインデクス化する。各エントリは８バイトであるため、第１レベル・ページ・テーブル・フィールド９１６をシフタ１１２２によって3ビット分シフトさせ、次いで、加算器１１２４によって第１レベル・ベース・アドレスに加算して第１レベル・インデクスを第１レベル・ページ・テーブル１１２０に供給する。インデクス化された第１レベル・ページ・テーブル・エントリは、リーフ・ノード・ページ・テーブル１１３０のリーフ・ノード・ベース・アドレスを備える。更に、インデクス化された第１レベル・ページ・テーブル・エントリ内のSフィールドは、次のテーブルのストライドが大容量テーブル（例えば、２MB）であることを示すようアサートされる（例えば、１にセットされる）。
【０１４５】
リーフ・ノード・ページ・テーブル１１３０は、インデクス化された第１レベル・ページ・テーブル・エントリ内のSフィールドによって示される容量を有する。図１１Aに示す例では、Sフィールドがアサートされている（リーフ・ノード・ページ・テーブル１１３０の容量が大容量（例えば、２MB）である）ことを示す。リーフ・ノード・ページ・テーブル・フィールド914をリーフ・ノード・ベース・アドレスと合成してリーフ・ノード・ページ・テーブル1130をインデクス化する。各エントリは8バイトであるため、リーフ・ノード・ページ・テーブル・フィールド914をシフタ1132によって3ビット分シフトさせ、次いで、加算器1134によってリーフ・ノード・ベース・アドレスに加算してリーフ・ノード・インデクスをリーフ・ノード・ページ・テーブル1130に供給する。インデクス化されたリーフ・ノード・ページ・テーブル・エントリは、ページ1140のホスト・ベース・アドレスを備える。
【０１４６】
オフセット９１２を次いでホスト・ベース・アドレスと合成してページ１１４０においてホスト物理アドレスを生成する。
【０１４７】
図１１Bは、本発明の一実施例による、マルチレベル・テーブル及びスーパーページを用いたアドレス変換構造を示す図である。アドレス変換構造５４０は、コンテキスト・エントリ５３５と、調節ゲスト物理アドレス（AGPA）９１０と、第１レベル・ページ・テーブル1150と、リーフ・ノード・ページ・テーブル1160と、ページ1170とを含む。
【０１４８】
コンテキスト・エントリ５３５内のASRフィールドは、第１レベル・ページ・テーブル1150のベース・アドレスを備える。AGPA９１０は、オフセット・フィールド９１２と、リーフ・ノード・ページ・テーブル・フィールド９１４と、第１レベル・ページ・テーブル・フィールド９１６とを含む。
【０１４９】
第１レベル・ページ・テーブル・フィールド９１６を、ASRフィールドによって供給される第１レベル・ベース・アドレスと合成して第１レベル・ページ・テーブル1150をインデクス化する。各エントリは８バイトであるため、第１レベル・ページ・テーブル・フィールド９１６をシフタ1152によって3ビット分シフトさせ、次いで、加算器1154によって第１レベル・ベース・アドレスに加算して第１レベル・インデクスを第１レベル・ページ・テーブル1150に供給する。インデクス化された第１レベル・ページ・テーブル・エントリは、リーフ・ノード・ページ・テーブル1160のリーフ・ノード・ベース・アドレスを備える。更に、インデクス化された第１レベル・ページ・テーブル・エントリ内のSフィールドは、次のテーブルのストライドが小容量テーブル（例えば、４KB）であることを示すようアサートされる（例えば、0にセットされる）。
【０１５０】
リーフ・ノード・ページ・テーブル1160は、インデクス化された第１レベル・ページ・テーブル・エントリ内のSフィールドによって示される容量を有する。図１１Bに示す例では、Sフィールドが否定されている（リーフ・ノード・ページ・テーブル1160の容量が小容量（例えば、4KB）である）ことを示す。リーフ・ノード・ページ・テーブル・フィールド914をリーフ・ノード・ベース・アドレスと合成してリーフ・ノード・ページ・テーブル1160をインデクス化する。各エントリは8バイトであるため、リーフ・ノード・ページ・テーブル・フィールド914をシフタ1162によって3ビット分シフトさせ、次いで、加算器1164によってリーフ・ノード・ベース・アドレスに加算してリーフ・ノード・インデクスをリーフ・ノード・ページ・テーブル1160に供給する。インデクス化されたリーフ・ノード・ページ・テーブル・エントリは、ページ1170のホスト・ベース・アドレスを備える。更に、インデクス化されたリーフ・ノード・ページ・テーブル・エントリのSPフィールドがアサートされる（それがリーフ・ノード・テーブルであることを示す）。
【０１５１】
ページ１１７０の容量は、ケーパビリティ・レジスタにおいて備えられる、チップセットによってサポートされるケーパビリティによって判定される。図１１Bに示す例では、ケーパビリティ・レジスタは、２MBのスーパーページ容量がサポートされることを示す。オフセット９１２を次いで、加算器１１４４によってホスト・ベース・アドレスと合成してページ１１７０においてホスト物理アドレスを生成する。
【０１５２】
本発明はいくつかの実施例によって説明したが、本発明が、前述の実施例に限定されないが、特許請求の範囲の趣旨及び範囲の範囲内の修正及び改変によって実施することが可能であることを当業者は認識するであろう。本明細書はよって、限定するものでなく、例証的なものとして解されるものとする。 
【図面の簡単な説明】
【０１５３】
【図１】本発明の一実施例を実施することが可能なシステムを示す図である。
【図２】本発明の一実施例による、入出力（I／O）装置の割り当てを示す図である。
【図３】本発明の一実施例による、直接メモリ・アクセス（DMA）再マッピングを用いた仮想化を示す図である。
【図４】本発明の一実施例によるI／Oアドレス変換を示す図である。
【図５】本発明の一実施例によるDMA再マッピング構造を示す図である。
【図６】本発明の一実施例による、共通レジスタを有するレジスタ組を示す図である。
【図７】本発明の一実施例による、アドレス・フィルタリング・レジスタを有するレジスタ組を示す図である。
【図８Ａ】本発明の一実施例によるルート・エントリを示す図である。
【図８Ｂ】本発明の一実施例によるコンテキスト・エントリを示す図である。
【図８Ｃ】本発明の一実施例によるページ・テーブル・エントリを示す図である。
【図９Ａ】本発明の一実施例による、マルチレベル・テーブルを用いたアドレス変換構造を示す図である。
【図９Ｂ】本発明の一実施例による、単一のテーブルを用いたアドレス変換構造を示す図である。
【図９Ｃ】本発明の一実施例による、ベース／バウンド変換を用いたアドレス変換構造を示す図である。
【図１０】本発明の一実施例による、ケーパビリティ・レジスタを有するレジスタ組を示す図である。
【図１１Ａ】本発明の一実施例による、マルチテーブル及びストライドを用いたアドレス変換構造を示す図である。
【図１１Ｂ】本発明の一実施例による、マルチテーブル及びスーパーページを用いたアドレス変換構造を示す図である。
【図１】
2008515093.tif 000004
【図２】
2008515093.tif 000005
【図３】
2008515093.tif 000006
【図４】
2008515093.tif 000007
【図５】
2008515093.tif 000008
【図６】
2008515093.tif 000009
【図７】
2008515093.tif 000010
【図８Ａ】
2008515093.tif 000011
【図８Ｂ】
2008515093.tif 000012
【図８Ｃ】
2008515093.tif 000013
【図９Ａ】
2008515093.tif 000014
【図９Ｂ】
2008515093.tif 000015
【図９Ｃ】
2008515093.tif 000016
【図１０】
2008515093.tif 000017
【図１１Ａ】
2008515093.tif 000018
【図１１Ｂ】
2008515093.tif 000019
【国際調査報告】
2008515093.tif 000020
2008515093.tif 000021
2008515093.tif 000022