(57)【要約】  本発明の一実施の形態は、ダイレクトメモリアクセスアドレス変換におけるフォールトを処理する技法である。レジスタセットが、入出力（Ｉ／Ｏ）デバイスによって要求されたＩ／Ｏトランザクションにより引き起こされたフォールトのフォールト処理のためのグローバル制御情報又はグローバルステータス情報を記憶する。アドレス変換構造体が、ゲスト物理アドレスをホスト物理アドレスに変換する。ゲスト物理アドレスは、Ｉ／Ｏトランザクションに対応し、ドメインにマッピングされる。アドレス変換構造体は、少なくとも、ドメインに関連付けられるエントリー及びフォールト処理用のドメイン特有の制御情報を有する。【選択図】図３
2008515057.tif 000002
【特許請求の範囲】
【請求項１】
入出力（Ｉ／Ｏ）デバイスによって要求されたＩ／Ｏトランザクションにより引き起こされるフォールトのフォールト処理のためのグローバル制御情報又はグローバルステータス情報を記憶するレジスタセットと、
ゲスト物理アドレスをホスト物理アドレスに変換するアドレス変換構造体であって、前記ゲスト物理アドレスは、前記Ｉ／Ｏトランザクションに対応し、且つ、ドメインにマッピングされ、該アドレス変換構造体は、少なくとも、前記ドメインに関連付けられるエントリー及び前記フォールト処理のためのドメイン特有の制御情報を有する、アドレス変換構造体と
を備える装置。
【請求項２】
前記レジスタセットは、
フォールト情報をフォールトログに記録するための記録制御情報を記憶するフォールトログレジスタと、
前記フォールトを報告するための報告制御情報を記憶するフォールト報告レジスタと、
を備える、請求項１に記載の装置。
【請求項３】
前記フォールトログレジスタは、
前記フォールト情報を記録することをイネーブルするフォールトログイネーブルフィールドと、
前記フォールト情報を記憶するメモリにおけるフォールトログ領域を指し示すフォールトログポインタと
を備える、請求項２に記載の装置。
【請求項４】
前記フォールト情報は、前記Ｉ／Ｏデバイスを識別するソース識別子、フォールト原因、アクセスタイプ、前記Ｉ／Ｏトランザクションにおけるデータの長さ、及び該Ｉ／Ｏトランザクションのアドレスのうちの少なくとも１つを含む、請求項２に記載の装置。
【請求項５】
前記フォールト報告レジスタは、
割り込みメッセージ制御情報を記憶するフォールトイベント制御レジスタと、
割り込みメッセージデータを記憶するフォールトイベントデータレジスタと、
割り込みメッセージ書き込みトランザクションのメモリのアドレスを記憶するフォールトイベントアドレスレジスタと
を備える、請求項４に記載の装置。
【請求項６】
前記レジスタセットは、
エラーステータス情報を記憶するエラーステータスレジスタをさらに備える、請求項２に記載の装置。
【請求項７】
前記アドレス変換構造体は、
前記Ｉ／Ｏデバイスを識別する前記ソース識別子によってインデックスされるルートエントリーを記憶するルートテーブルと、
前記ルートテーブルに結合されて、前記ルートエントリーによって参照されるコンテキストエントリーを記憶するコンテキストテーブルであって、前記コンテキストエントリーは、前記少なくともエントリーを含む、コンテキストテーブルと
を備える、請求項１に記載の装置。
【請求項８】
前記アドレス変換構造体は、
複数のマルチレベルページテーブルであって、各マルチレベルページテーブルは、構成可能なサイズを有し、且つ、ページテーブルエントリーを含み、該ページテーブルエントリーのそれぞれは、次のレベルのページテーブルのベース又は前記ホスト物理アドレスのページのベースを提供する、複数のマルチレベルページテーブルをさらに備える、請求項７に記載の装置。
【請求項９】
前記アドレス変換構造体は、
ページサイズ及びゲスト物理アドレスサイズに依存したサイズを有するシングルページテーブルであって、ページテーブルエントリーを含み、該ページテーブルエントリーのそれぞれは、前記ホスト物理アドレスのページのベースを提供する、シングルページテーブルをさらに備える、請求項７に記載の装置。
【請求項１０】
前記コンテキストエントリーのそれぞれは、
前記ドメインを識別するドメイン識別子と、
前記ドメインの前記ホスト物理アドレスのベース又は前記アドレス変換構造体のページテーブルのベースを定義するアドレス空間ルートと、
前記アドレス変換構造体によって使用される変換メカニズムを特徴付ける少なくとも変換属性と、
ドメイン指定子によって指定される前記ドメインの前記ドメイン特有の制御情報を特徴付ける少なくともフォールト処理属性と
を備える、請求項７に記載の装置。
【請求項１１】
前記アドレス変換構造体は、
前記ホスト物理アドレスのページのベースとして前記アドレス空間ルートを使用するベース／境界変換メカニズムをさらに備える、請求項１０に記載の装置。
【請求項１２】
前記ドメイン特有の制御情報は、フォールト保留ステータスフィールド、最初のフォールト上のブロックフィールド、最初のフォールト処理フィールド、及びフォールト処理ディセーブルフィールドを含む、請求項１０に記載の装置。
【請求項１３】
前記コンテキストエントリーのそれぞれは、
ビットマップテーブルを使用してアドレスフィルタリングをイネーブルするアドレスフィルタフィールドをさらに備える、請求項１０に記載の装置。
【請求項１４】
前記フォールトは、アドレス変換フォールト及びアドレスフィルタリングフォールトの一方である、請求項１３に記載の装置。
【請求項１５】
入出力（Ｉ／Ｏ）デバイスによって要求されたＩ／Ｏトランザクションにより引き起こされるフォールトのフォールト処理のためのグローバル制御情報又はグローバルステータス情報をレジスタセットに記憶すること、及び
アドレス変換構造体を使用して、ゲスト物理アドレスをホスト物理アドレスに変換することであって、前記ゲスト物理アドレスは、前記Ｉ／Ｏトランザクションに対応し、且つ、ドメインにマッピングされ、前記アドレス変換構造体は、少なくとも、前記ドメインに関連付けられるエントリー及び前記フォールト処理のためのドメイン特有の制御情報を有する、変換すること
を含む方法。
【請求項１６】
前記グローバル制御情報及び前記グローバルステータス情報を記憶することは、
フォールト情報をフォールトログに記録するための記録制御情報をフォールトログレジスタに記憶すること、及び
前記フォールトを報告するための報告制御情報をフォールト報告レジスタに記憶すること
を含む、請求項１５に記載の方法。
【請求項１７】
前記記録制御情報を記憶することは、
フォールトログイネーブルフィールドを使用して、前記フォールト情報を記録することをイネーブルすること、及び
フォールトログポインタを使用して、前記フォールト情報を記憶するメモリにおけるフォールトログ領域を指し示すこと
を含む、請求項１６に記載の方法。
【請求項１８】
前記フォールト情報は、前記Ｉ／Ｏデバイスを識別するソース識別子、フォールト原因、アクセスタイプ、前記Ｉ／Ｏトランザクションにおけるデータの長さ、及び該Ｉ／Ｏトランザクションのアドレスのうちの少なくとも１つを含む、請求項１６に記載の方法。
【請求項１９】
前記報告制御情報を記憶することは、
割り込みメッセージ制御情報をフォールトイベント制御レジスタに記憶すること、
割り込みメッセージデータをフォールトイベントデータレジスタに記憶すること、及び
割り込みメッセージ書き込みトランザクションのメモリのアドレスをフォールトイベントアドレスレジスタに記憶すること
を含む、請求項１８に記載の方法。
【請求項２０】
前記グローバル制御情報又は前記グローバルステータス情報を記憶することは、
エラーステータス情報をエラーステータスレジスタに記憶することをさらに含む、請求項１６に記載の方法。
【請求項２１】
前記変換することは、
前記Ｉ／Ｏデバイスを識別するソース識別子によってインデックスされるルートエントリーをルートテーブルに記憶すること、及び
前記ルートエントリーによって参照されるコンテキストエントリーをコンテキストテーブルに記憶することであって、前記コンテキストエントリーは、前記少なくともエントリーを含む、コンテキストエントリーをコンテキストテーブルに記憶すること
を含む、請求項１５に記載の方法。
【請求項２２】
前記変換することは、
複数のマルチレベルページテーブルのページテーブルエントリーのそれぞれを使用して、次のレベルのページテーブルのベース又は前記ホスト物理アドレスのページのベースを提供することであって、前記ページテーブルのそれぞれは、構成可能なサイズを有する、提供することをさらに含む、請求項２１に記載の方法。
【請求項２３】
前記変換することは、
ページサイズ及びゲスト物理アドレスサイズに依存したサイズを有するシングルページテーブルにおけるページテーブルエントリーのそれぞれを使用して、前記ホスト物理アドレスのページのベースを提供することをさらに含む、請求項２１に記載の方法。
【請求項２４】
前記コンテキストエントリーを記憶することは、
ドメイン識別子を使用して、前記ドメインを識別すること、
アドレス空間ルートを使用して、前記ドメインの前記ホスト物理アドレスのベース又は前記アドレス変換構造体のページテーブルのベースを定義すること、
少なくとも変換属性を使用して、前記アドレス変換構造体によって使用される変換メカニズムを特徴付けること、及び
少なくともフォールト処理属性を使用して、ドメイン指定子によって指定される前記ドメインの前記ドメイン特有の制御情報を特徴付けること
を含む、請求項２１に記載の方法。
【請求項２５】
前記変換することは、
ベース／境界変換メカニズムにおいて、前記ホスト物理アドレスのページのベースとして前記アドレス空間ルートを使用することをさらに含む、請求項２４に記載の方法。
【請求項２６】
前記ドメイン特有の制御情報は、フォールト保留ステータスフィールド、最初のフォールト上のブロックフィールド、最初のフォールト処理フィールド、及びフォールト処理ディセーブルフィールドを含む、請求項２４に記載の方法。
【請求項２７】
前記コンテキストエントリーを記憶することは、
アドレスフィルタフィールドのビットマップテーブルを使用して、アドレスフィルタリングをイネーブルすることをさらに含む、請求項２４に記載の方法。
【請求項２８】
前記フォールトは、アドレス変換フォールト及びアドレスフィルタリングフォールトの一方である、請求項２７に記載の方法。
【請求項２９】
メモリと、
前記メモリにアクセスする入出力（Ｉ／Ｏ）トランザクションのゲスト物理アドレスを生成するＩ／Ｏデバイスと、
回路を含む、前記Ｉ／Ｏデバイス及び前記メモリに結合されたチップセットであって、該回路は、
前記Ｉ／Ｏトランザクションにより引き起こされるフォールトのフォールト処理のためのグローバル制御情報又はグローバルステータス情報を記憶するレジスタセットと、
前記ゲスト物理アドレスをホスト物理アドレスに変換するアドレス変換構造体であって、前記ゲスト物理アドレスは、前記Ｉ／Ｏトランザクションに対応し、且つ、ドメインにマッピングされ、前記アドレス変換構造体は、少なくとも、前記ドメインに関連付けられるエントリー及び前記フォールト処理のためのドメイン特有の制御情報を有する、アドレス変換構造体と
を備える、チップセットと
を備えるシステム。
【請求項３０】
前記レジスタセットは、
フォールト情報をフォールトログに記録するための記録制御情報を記憶するフォールトログレジスタと、
前記フォールトを報告するための報告制御情報を記憶するフォールト報告レジスタと
を備える、請求項２９に記載のシステム。
【請求項３１】
前記フォールトログレジスタは、
前記フォールト情報を記録することをイネーブルするフォールトログイネーブルフィールドと、
前記フォールト情報を記憶するメモリにおけるフォールトログ領域を指し示すフォールトログポインタと
を備える、請求項３０に記載のシステム。
【請求項３２】
前記フォールト情報は、前記Ｉ／Ｏデバイスを識別するソース識別子、フォールト原因、アクセスタイプ、前記Ｉ／Ｏトランザクションにおけるデータの長さ、及び該Ｉ／Ｏトランザクションのアドレスのうちの少なくとも１つを含む、請求項３０に記載のシステム。
【請求項３３】
前記フォールト報告レジスタは、
割り込みメッセージ制御情報を記憶するフォールトイベント制御レジスタと、
割り込みメッセージデータを記憶するフォールトイベントデータレジスタと、
割り込みメッセージ書き込みトランザクションのメモリのアドレスを記憶するフォールトイベントアドレスレジスタと
を備える、請求項３２に記載のシステム。
【請求項３４】
前記レジスタセットは、
エラーステータス情報を記憶するエラーステータスレジスタをさらに備える、請求項３０に記載のシステム。
【請求項３５】
前記アドレス変換構造体は、
前記Ｉ／Ｏデバイスを識別する前記ソース識別子によってインデックスされるルートエントリーを記憶するルートテーブルと、
前記ルートテーブルに結合されて、前記ルートエントリーによって参照されるコンテキストエントリーを記憶するコンテキストテーブルであって、前記コンテキストエントリーは、前記少なくともエントリーを含む、コンテキストテーブルと
を備える、請求項２９に記載のシステム。
【請求項３６】
前記アドレス変換構造体は、
複数のマルチレベルページテーブルであって、各マルチレベルページテーブルは、構成可能なサイズを有し、且つ、ページテーブルエントリーを含み、該ページテーブルエントリーのそれぞれは、次のレベルのページテーブルのベース又は前記ホスト物理アドレスのページのベースを提供する、複数のマルチレベルページテーブルをさらに備える、請求項３５に記載のシステム。
【請求項３７】
前記アドレス変換構造体は、
ページサイズ及びゲスト物理アドレスサイズに依存したサイズを有するシングルページテーブルであって、ページテーブルエントリーを含み、該ページテーブルエントリーのそれぞれは、前記ホスト物理アドレスのページのベースを提供する、シングルページテーブルをさらに含む、請求項３５に記載のシステム。
【請求項３８】
前記コンテキストエントリーのそれぞれは、
前記ドメインを識別するドメイン識別子と、
前記ドメインの前記ホスト物理アドレスのベース又は前記アドレス変換構造体のページテーブルのベースを定義するアドレス空間ルートと、
前記アドレス変換構造体によって使用される変換メカニズムを特徴付ける少なくとも変換属性と、
ドメイン指定子によって指定される前記ドメインの前記ドメイン特有の制御情報を特徴付ける少なくともフォールト処理属性と
を備える、請求項３５に記載のシステム。
【請求項３９】
前記アドレス変換構造体は、
前記ホスト物理アドレスのページのベースとして前記アドレス空間ルートを使用するベース／境界変換メカニズムをさらに備える、請求項３８に記載のシステム。
【請求項４０】
前記ドメイン特有の制御情報は、フォールト保留ステータスフィールド、最初のフォールト上のブロックフィールド、最初のフォールト処理フィールド、及びフォールト処理ディセーブルフィールドを含む、請求項３８に記載のシステム。
【請求項４１】
前記コンテキストエントリーのそれぞれは、
ビットマップテーブルを使用してアドレスフィルタリングをイネーブルするアドレスフィルタフィールドをさらに備える、請求項３８に記載のシステム。
【請求項４２】
前記フォールトは、アドレス変換フォールト及びアドレスフィルタリングフォールトの一方である、請求項４１に記載のシステム。
【請求項４３】
マシンアクセス可能媒体であって、マシンによってアクセスされると、
入出力（Ｉ／Ｏ）デバイスによって要求されたＩ／Ｏトランザクションにより引き起こされるフォールトのフォールト処理のためのグローバル制御情報又はグローバルステータス情報をレジスタセットに記憶すること、及び
アドレス変換構造体を使用して、ゲスト物理アドレスをホスト物理アドレスに変換することであって、前記ゲスト物理アドレスは、前記Ｉ／Ｏトランザクションに対応し、且つ、ドメインにマッピングされ、前記アドレス変換構造体は、少なくとも、前記ドメインに関連付けられるエントリー及び前記フォールト処理のためのドメイン特有の制御情報を有する、変換すること
を含む動作を前記マシンに実行させるデータを含むマシンアクセス可能媒体
を備える製品。
【請求項４４】
前記グローバル制御情報及び前記グローバルステータス情報を記憶することを前記マシンに実行させる前記データは、
フォールト情報をフォールトログに記録するための記録制御情報をフォールトログレジスタに記憶すること、及び
前記フォールトを報告するための報告制御情報をフォールト報告レジスタに記憶すること
を含む動作を前記マシンに実行させるデータを含む、請求項４３に記載の製品。
【請求項４５】
前記記録制御情報を記憶することを前記マシンに実行させる前記データは、
フォールトログイネーブルフィールドを使用して、前記フォールト情報を記録することをイネーブルすること、及び
フォールトログポインタを使用して、前記フォールト情報を記憶するメモリにおけるフォールトログ領域を指し示すこと
を含む動作を前記マシンに実行させるデータを含む、請求項４４に記載の製品。
【請求項４６】
前記フォールト情報は、前記Ｉ／Ｏデバイスを識別するソース識別子、フォールト原因、アクセスタイプ、前記Ｉ／Ｏトランザクションにおけるデータの長さ、及び該Ｉ／Ｏトランザクションのアドレスのうちの少なくとも１つを含む、請求項４４に記載の製品。
【請求項４７】
前記報告制御情報を記憶することを前記マシンに実行させる前記データは、
割り込みメッセージ制御情報をフォールトイベント制御レジスタに記憶すること、
割り込みメッセージデータをフォールトイベントデータレジスタに記憶すること、及び
割り込みメッセージ書き込みトランザクションのメモリのアドレスをフォールトイベントアドレスレジスタに記憶すること
を含む動作を前記マシンに実行させるデータを含む、請求項４６に記載の製品。
【請求項４８】
前記グローバル制御情報又は前記グローバルステータス情報を記憶することを前記マシンに実行させる前記データは、
エラーステータス情報をエラーステータスレジスタに記憶することを含む動作を前記マシンに実行させるデータをさらに含む、請求項４４に記載の製品。
【請求項４９】
前記変換することを前記マシンに実行させる前記データは、
前記Ｉ／Ｏデバイスを識別するソース識別子によってインデックスされるルートエントリーをルートテーブルに記憶すること、及び
前記ルートエントリーによって参照されるコンテキストエントリーをコンテキストテーブルに記憶することであって、前記コンテキストエントリーは、前記少なくともエントリーを含む、コンテキストエントリーをコンテキストテーブルに記憶すること
を含む動作を前記マシンに実行させるデータを含む、請求項４３に記載の製品。
【請求項５０】
前記変換することを前記マシンに実行させる前記データは、
複数のマルチレベルページテーブルのページテーブルエントリーのそれぞれを使用して、次のレベルのページテーブルのベース又は前記ホスト物理アドレスのページのベースを提供することであって、前記ページテーブルのそれぞれは、構成可能なサイズを有する、提供することを含む動作を前記マシンに実行させるデータをさらに含む、請求項４９に記載の製品。
【請求項５１】
前記変換することを前記マシンに実行させる前記データは、
ページサイズ及びゲスト物理アドレスサイズに依存したサイズを有するシングルページテーブルにおけるページテーブルエントリーのそれぞれを使用して、前記ホスト物理アドレスのページのベースを提供することを含む動作を前記マシンに実行させるデータをさらに含む、請求項４９に記載の製品。
【請求項５２】
前記コンテキストエントリーを記憶することを前記マシンに実行させる前記データは、
ドメイン識別子を使用して、前記ドメインを識別すること、
アドレス空間ルートを使用して、前記ドメインの前記ホスト物理アドレスのベース又は前記アドレス変換構造体のページテーブルのベースを定義すること、
少なくとも変換属性を使用して、前記アドレス変換構造体によって使用される変換メカニズムを特徴付けること、及び
少なくともフォールト処理属性を使用して、ドメイン指定子によって指定される前記ドメインの前記ドメイン特有の制御情報を特徴付けること
を含む動作を前記マシンに実行させるデータを含む、請求項４９に記載の製品。
【請求項５３】
前記変換することを前記マシンに実行させる前記データは、
ベース／境界変換メカニズムにおいて、前記ホスト物理アドレスのページのベースとして前記アドレス空間ルートを使用することを含む動作を前記マシンに実行させるデータをさらに含む、請求項５２に記載の製品。
【請求項５４】
前記ドメイン特有の制御情報は、フォールト保留ステータスフィールド、最初のフォールト上のブロックフィールド、最初のフォールト処理フィールド、及びフォールト処理ディセーブルフィールドを含む、請求項５２に記載の製品。
【請求項５５】
前記コンテキストエントリーを記憶することを前記マシンに実行させる前記データは、
アドレスフィルタフィールドのビットマップテーブルを使用して、アドレスフィルタリングをイネーブルすることを含む動作を前記マシンに実行させるデータをさらに含む、請求項５２に記載の製品。
【請求項５６】
前記フォールトは、アドレス変換フォールト及びアドレスフィルタリングフォールトの一方である、請求項５５に記載の製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施の形態は、マイクロプロセッサの分野に関し、より具体的には、入出力（Ｉ／Ｏ）仮想化に関する。
【背景技術】
【０００２】
関連技術の説明
マイクロプロセッサアーキテクチャが、高性能アプリケーションをサポートするためにますます複雑になるにつれて、Ｉ／Ｏ管理は課題を提示する。
【０００３】
Ｉ／Ｏ管理の問題に対処する既存の技法は、複数の不都合を有する。或る技法は、ソフトウェアのみのＩ／Ｏ仮想化を使用して、仮想マシン（ＶＭ）Ｉ／Ｏをサポートする。この技法は、機能、性能、及びローバスト性を制限している。ゲストオペレーティングシステム（ＯＳ）及びアプリケーションに見える機能は、ＶＭモニタ（ＶＭＭ）ソフトウェアでエミュレーションされた仮想デバイスによりサポートされる機能によって制限される。ゲストＩ／Ｏオペレーションは、基盤となる物理デバイスハードウェアにサブミットされる前にＶＭＭによってトラップされ、プロキシ又はエミュレーションされ、その結果、性能が乏しくなる。加えて、ハードウェアデバイスのデバイスドライブのすべて又は一部は、特権を有するＶＭＭソフトウェアの一部として実行される。特権を有するＶＭＭソフトウェアは、プラットフォームの全体的なローバスト性に悪影響を与えるおそれがある。専用化された変換構造を使用する技法は、特定のデバイス又は限られた利用モデルしかサポートすることができない。一般的なＩ／Ｏメモリ管理ユニットは、限られたサイズ又は複雑さのＩ／Ｏ仮想アドレス空間のサポートしか提供しない。
【０００４】
本発明の実施の形態は、以下の説明、及び、本発明の実施の形態を示すのに使用される添付図面を参照することによって最も良く理解することができる。
【発明を実施するための最良の形態】
【０００５】
本発明の一実施の形態は、ダイレクトメモリアクセスアドレス変換におけるフォールトを処理する技法である。レジスタセットが、入出力（Ｉ／Ｏ）デバイスによって要求されたＩ／Ｏトランザクションにより引き起こされたフォールトのフォールト処理のためのグローバル制御情報又はグローバルステータス情報を記憶する。アドレス変換構造体が、ゲスト物理アドレスをホスト物理アドレスに変換する。ゲスト物理アドレスは、Ｉ／Ｏトランザクションに対応し、ドメインにマッピングされる。アドレス変換構造体は、少なくとも、ドメインに関連付けられるエントリー及びフォールト処理用のドメイン特有の制御情報を有する。
【０００６】
以下の説明では、多数の具体的な詳細が述べられる。しかしながら、本発明の実施の形態は、これらの具体的な詳細がなくても実施できることが理解される。それ以外の場合には、既知の回路、構造、及び技法は、本説明の理解を分かりにくくすることを回避するために示されていない。
【０００７】
図１は、本発明の一実施の形態を実施することができるシステム１００を示す図である。システム１００は、プロセッサ１１０、プロセッサバス１２０、メモリ制御ハブ（ＭＣＨ）１３０、システムメモリ１４０、入出力制御ハブ（ＩＣＨ）１５０、周辺バス１５５、マスストレージデバイス／インターフェース１７０、並びに入出力デバイス１８０１〜１８０Ｋ及び１８５を含む。システム１００は、上記よりも多くの要素又は少ない要素を含むことができることに留意されたい。
【０００８】
プロセッサ１１０は、任意のタイプのアーキテクチャの中央処理装置を表している。このアーキテクチャは、組み込みプロセッサ、モバイルプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、スーパースカラーコンピュータ、ベクトルプロセッサ、単一命令複数データ（ＳＩＭＤ）コンピュータ、複合命令セットコンピュータ（ＣＩＳＣ）、縮小命令セットコンピュータ（ＲＩＳＣ）、超長命令語（ＶＬＩＷ）、ハイブリッドアーキテクチャ等である。
【０００９】
プロセッサバス１２０は、プロセッサ１１０が他のプロセッサ又はデバイス（たとえばＭＣＨ１３０）と通信することを可能にするインターフェース信号を提供する。プロセッサバス１２０は、ユニプロセッサ構成又はマルチプロセッサ構成をサポートすることができる。プロセッサバス１２０は、並列、逐次、パイプライン化、非同期、同期、又はそれらの任意の組み合わせとすることができる。
【００１０】
ＭＣＨ１３０は、システムメモリ１４０等のメモリ及びＩＣＨ１５０等の入出力デバイスの制御及び構成を提供する。ＭＣＨ１３０は、分離実行モード（isolated execution mode）、ホスト対周辺バスインターフェース（host-to-peripheral bus interface）、メモリ制御等の複数の機能を統合するチップセット内に統合することができる。ＭＣＨ１３０は、周辺バス１５５に直接又はＩＣＨ１５０を介してインターフェースする。明確にするために、すべての周辺バスが示されているとは限らない。システム１００は、周辺機器相互接続（ＰＣＩ）、ＰＣＩエクスプレス、アクセラレイティッドグラフィックスポート（ＡＧＰ）、業界標準アーキテクチャ（ＩＳＡ）バス、ユニバーサルシリアルバス（ＵＳＢ）等の周辺バスも含むことができるものと予想される。
【００１１】
ＭＣＨ１３０は、ダイレクトメモリアクセス（ＤＭＡ）リマッピング回路１３５を含む。このＤＭＡリマッピング回路１３５は、Ｉ／Ｏトランザクションで、Ｉ／Ｏデバイス（たとえば、Ｉ／Ｏデバイス１８０１〜１８０Ｋ及び１８５の１つ）をシステムメモリ１４０のドメインにマッピングする。Ｉ／Ｏトランザクションは、通常、ＤＭＡ要求である。ＤＭＡリマッピング回路１３５は、Ｉ／Ｏデバイスの割り当て及び／又は管理を容易にするか又は高度化するハードウェアサポートを提供する。また、ＤＭＡリマッピング回路１３５は、ＩＣＨ１５０等、ＭＣＨ１３０以外の任意のチップセットに含めることもできる。また、ＤＭＡリマッピング回路１３５は、プロセッサ１１０に部分的又は全体的に実施することもできるし、別個のプロセッサとして、又は、他のプロセッサ若しくはデバイスのコプロセッサとして実施することもできる。
【００１２】
システムメモリ１４０は、システムコード及びシステムデータを記憶する。システムメモリ１４０は、通常、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）又はスタティックランダムアクセスメモリ（ＳＲＡＭ）で実施される。システムメモリは、本発明の一実施の形態を実施するプログラムコード又はコードセグメントを含むことができる。システムメモリは、オペレーティングシステム（ＯＳ）１４２、又は、ＯＳの一部、すなわちカーネル、及び、Ｉ／Ｏドライバ１４５を含む。ＯＳ１４２又はＩ／Ｏドライバ１４５のエレメントのいずれも、ハードウェア、ソフトウェア、ファームウェア、マイクロコード、又はそれらの任意の組み合わせによって実施することができる。また、システムメモリ１４０は、図示されていない他のプログラム又はデータを含むこともできる。
【００１３】
ＩＣＨ１５０は、Ｉ／Ｏ機能をサポートするように設計された複数の機能を有する。また、ＩＣＨ１５０は、ＭＣＨ１３０と共に又はＭＣＨ１３０とは別個に、チップセット内に統合されてＩ／Ｏ機能を実行することもできる。ＩＣＨ１５０は、複数のインターフェース機能及びＩ／Ｏ機能を含むことができる。これら複数のインターフェース機能及びＩ／Ｏ機能は、周辺バス１５５にインターフェースするＰＣＩバスインターフェース、プロセッサインターフェース、割り込みコントローラ、ダイレクトメモリアクセス（ＤＭＡ）コントローラ、電力管理ロジック、タイマ、システム管理バス（ＳＭＢｕｓ）、ユニバーサルシリアルバス（ＵＳＢ）インターフェース、マスストレージインターフェース、ローピンカウント（ＬＰＣ）インターフェース等である。
【００１４】
マスストレージデバイス／インターフェース１７０は、コード、プログラム、ファイル、データ、アプリケーション、オペレーティングシステム等のアーカイブ情報のストレージを提供する。マスストレージデバイス／インターフェース１７０は、コンパクトディスク（ＣＤ）ＲＯＭ１７２、デジタルビデオ／多用途ディスク（ＤＶＤ）１７３、フロッピードライブ１７４、及びハードドライブ１７６、並びに他のあらゆる磁気ストレージデバイス又は光ストレージデバイスにインターフェースすることができる。マスストレージデバイス／インターフェース１７０は、マシンアクセス可能媒体を読み出すメカニズムを提供する。マシンアクセス可能媒体は、以下で説明するようなタスクを実行するコンピュータ可読プログラムコードを含むことができる。
【００１５】
Ｉ／Ｏデバイス１８０１〜１８０Ｋには、ＤＭＡ要求を含むＩ／Ｏ機能を実行するあらゆるＩ／Ｏデバイスが含まれ得る。それらＩ／Ｏデバイスは、周辺バス１５５にインターフェースされている。Ｉ／Ｏデバイス１８０１〜１８０Ｋの例には、入力デバイス（たとえば、キーボード、マウス、トラックボール、ポインティングデバイス）、メディアカード（たとえば、オーディオ、ビデオ、グラフィックス）、ネットワークカードのコントローラ、及び、他のあらゆる周辺コントローラが含まれる。Ｉ／Ｏデバイス１８５は、ＩＣＨ１５０に直接インターフェースされている。周辺バス１５５は、Ｉ／Ｏトランザクションをサポート任意のバスである。周辺バス１５５の例には、ＰＣＩバス、ＰＣＩエクスプレス等が含まれる。
【００１６】
本発明の一実施の形態のエレメントは、ハードウェア、ファームウェア、ソフトウェア、又はそれらの任意の組み合わせによって実施することができる。ハードウェアという用語は、一般に、電子部品、電磁部品、光学部品、電気光学部品、機械部品、電気機械部品等の物理構造を有するエレメントを指す。ソフトウェアという用語は、一般に、論理構造体、メソッド、プロシージャ、プログラム、ルーチン、プロセス、アルゴリズム、公式、関数、数式等を指す。ファームウェアという用語は、一般に、ハードウェア構造体（たとえば、フラッシュメモリ、読み出し専用メモリ、消去可能読み出し専用メモリ）に実施又は具現化される論理構造体、メソッド、プロシージャ、プログラム、ルーチン、プロセス、アルゴリズム、公式、関数、数式等を指す。ファームウェアの例には、マイクロコード、書き込み可能制御ストア、マイクロプログラム式構造体が含まれ得る。本発明の一実施の形態のエレメントは、ソフトウェア又はファームウェアで実施される場合、基本的に、必要なタスクを実行するコードセグメントとなる。このソフトウェア／ファームウェアは、本発明の一実施の形態で説明される動作を実行する実際のコード、又は、それら動作をエミュレーション若しくはシミュレーションするコードを含むことができる。プログラム又はコードセグメントは、プロセッサアクセス可能媒体又はマシンアクセス可能媒体に記憶することもできる、また搬送波で具現化されたコンピュータデータ信号又は搬送波によって変調された信号によって伝送媒体上で伝送することもできる。「プロセッサ可読媒体若しくはプロセッサアクセス可能媒体」又は「マシン可読媒体若しくはマシンアクセス可能媒体」には、情報の記憶、伝送、又は転送が可能な任意の媒体が含まれ得る。プロセッサ可読媒体又はマシンアクセス可能媒体の例には、電子回路、半導体メモリデバイス、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ、消去可能ＲＯＭ（ＥＲＯＭ）、フロッピーディスケット、コンパクトディスク（ＣＤ）ＲＯＭ、光ディスク、ハードディスク、光ファイバ媒体、無線周波数（ＲＦ）リンク等が含まれる。コンピュータデータ信号には、電子ネットワークチャネル、光ファイバ、大気、電磁気、ＲＦリンク等の伝送媒体上で伝播できる任意の信号が含まれ得る。コードセグメントは、インターネット、イントラネット等のコンピュータネットワークを介してダウンロードすることができる。マシンアクセス可能媒体は、製品に具現化することができる。マシンアクセス可能媒体は、マシンによってアクセスされると、そのマシンに、以下で説明する動作を実行させるデータを含むことができる。また、マシンアクセス可能媒体は、そこに具現化されたプログラムコードも含むことができる。このプログラムコードは、以下で説明する動作を実行するマシン可読コードを含むことができる。「データ」という用語は、ここでは、マシン可読の目的でコード化された任意のタイプの情報を指す。したがって、データには、プログラム、コード、データ、ファイル等が含まれ得る。
【００１７】
本発明の一実施の形態のすべて又は一部は、ハードウェア、ソフトウェア、若しくはファームウェア、又はそれらの任意の組み合わせによって実施することができる。ハードウェアエレメント、ソフトウェアエレメント、又はファームウェアエレメントは、互いに結合されたいくつかのモジュールを有することができる。ハードウェアモジュールは、機械接続、電気接続、光接続、電磁接続、又は任意の物理接続によって別のモジュールに結合されている。ソフトウェアモジュールは、関数コール、プロシージャコール、メソッドコール、サブプログラムコール、又はサブルーチンコール、ジャンプ、リンク、パラメータ渡し、変数渡し、及び引数渡し、関数リターン等によって別のモジュールに結合されている。ソフトウェアモジュールは、変数、パラメータ、引数、ポインタ等を受け取り、且つ／又は、結果、更新された変数、ポインタ等を生成するか若しくは渡すために別のモジュールに結合されている。ファームウェアモジュールは、上記ハードウェア結合方法及びソフトウェア結合方法の任意の組み合わせによって別のモジュールに結合されている。ハードウェアモジュール、ソフトウェアモジュール、又はファームウェアモジュールは、別のハードウェアモジュール、ソフトウェアモジュール、又はファームウェアモジュールの任意のものに結合することができる。また、モジュールは、プラットフォーム上で実行されているオペレーティングシステムと相互作用するソフトウェアドライバ又はインターフェースとすることもできる。モジュールは、データの構成、データのセットアップ、データの初期化、ハードウェアデバイスへのデータの送信、及びハードウェアデバイスからのデータの受信を行うハードウェアドライバとすることもできる。装置は、ハードウェアモジュール、ソフトウェアモジュール、及びファームウェアモジュールの任意の組み合わせを含むことができる。
【００１８】
本発明の一実施の形態は、通常はフローチャート、フロー図、構造図、又はブロック図として示されるプロセスとして説明することができる。フローチャートは、逐次プロセスとして動作を記述することができるが、それら動作の多くは、並列又は同時に実行することができる。加えて、動作の順序は再配列することができる。プロセスは、その動作が完了した時に終了する。プロセスは、メソッド、プログラム、プロシージャ、製造方法又は組み立て方法等に対応することができる。
【００１９】
標準的なコンピューティングプラットフォームでは、Ｉ／Ｏサブシステムコンポーネントは、単一のドメインの一部として機能し、オペレーティングシステムソフトウェアによって管理される。本発明の一実施の形態は、コンピューティングプラットフォームのＩ／Ｏデバイスを複数のドメインに割り当てるのに必要とされるハードウェアサポートを提供する。
【００２０】
ドメインは、抽象的には、プラットフォームにおける分離環境として定義される。この分離環境には、ホスト物理メモリのサブセットがアロケートされる。ホスト物理メモリは、システムメモリ１４０に含まれる。ドメインにアロケートされた物理メモリへの直接アクセスが許可されたＩ／Ｏデバイスは、そのドメインの割り当てデバイス（assigned device）と呼ばれる。ドメインのこの分離特性は、そのドメインに割り当てられていない資源からのそのドメインの物理メモリへのアクセスをブロックすることによって達成される。複数の分離ドメインは、すべてのＩ／Ｏデバイスが或るドメイン（場合により、デフォルトドメイン）に確実に割り当てられるようにすること、及び、各割り当てデバイスからのアクセスを、その割り当てデバイスのドメインにアロケートされた物理メモリにのみ制限することによってサポートされる。
【００２１】
各ドメインは、物理メモリのシステムビューとは異なり得る物理メモリ、すなわち物理アクセス空間のビューを有する。ドメインの資源が当該ドメインの物理アドレス空間にアクセスするのに使用するアドレスは、そのドメインのゲスト物理アドレス（ＧＰＡ）と呼ばれる。ホスト物理アドレス（ＨＰＡ）は、メモリにアクセスするのに使用されるシステム物理アドレスを指す。ドメインのＧＰＡが、当該ドメインにアロケートされたシステム物理メモリにアクセスする新しいＨＰＡに変換された場合、そのドメインは、リロケートされたものとみなされる。ドメインのゲスト物理アドレス空間が、システムのホスト物理アドレス空間と同じである場合又はそのサブセットと同じである場合に、そのドメインは非リロケートと呼ばれる。ＧＰＡ及びＨＰＡを論理的に分離することによって、メモリ保護を実施する基礎が提供される。この論理的な分離には、ドメインの割り当てデバイスによって生成されるゲスト物理アドレスの有効性を確認でき、且つ、そのゲスト物理アドレスを有効なホスト物理アドレスに変換できる物理アドレス変換及び保護のメカニズムが必要とされる。ＤＭＡリマッピング回路１３５は、このハードウェアサポートを提供する。
【００２２】
Ｉ／Ｏデバイスをドメインに割り当てるために、物理アドレス変換及び保護は、プラットフォームのすべてのＩ／ＯデバイスからのＤＭＡ要求に適用される。簡単にするために、Ｉ／ＯデバイスのＤＭＡ要求のための物理アドレス変換機能をＤＭＡリマッピングと呼ぶ。
【００２３】
図２は、本発明の一実施の形態による入出力（Ｉ／Ｏ）デバイス割り当てを示す図である。Ｉ／Ｏデバイス割り当ては、システムメモリ１４０のドメインへのＩ／Ｏデバイスのマッピングである。このマッピングは、ＤＭＡリマッピング回路１３５によってサポートされる。一例として、デバイスＡ  ２１０は、システムメモリ１４０のドメイン１  ２４０にマッピングされる。ドメイン１は、デバイスＡ  ２１０のドライバ２４２を有することができる。２つ以上のドライバを使用することもできる。
【００２４】
ＤＭＡリマッピング回路１３５は、レジスタセット２２０、ＤＭＡリマッピング構造体２２２、及び論理回路２２４を含む。レジスタセット２２０は、複数のレジスタを含む。これら複数のレジスタは、ＤＭＡリマッピング構造体２２２、論理回路２２４、及びＩ／Ｏデバイスのプログラム又はドライバによって使用される制御情報又はステータス情報を提供する。ＤＭＡリマッピング構造体２２２は、適切なドメインにおけるホスト物理アドレスへのゲスト物理アドレスのリマッピング又はアドレス変換に使用される基本的な構造体、ストレージ、又はテーブルを提供する。論理回路２２４は、リマッピング動作又はアドレス変換動作、及び、他のインターフェース機能を実行する回路部を含む。ＤＭＡリマッピング回路１３５は、異なる構成をサポートする異なる実施態様、及び、リマッピング動作又はアドレス変換動作の異なる能力を提供する異なる実施態様を有することができる。
【００２５】
ＤＭＡリマッピング回路１３５を使用するＩ／Ｏデバイス割り当て及び／又は管理は、複数の利用法及び用途を提供する。２つの有用な用途は、ＯＳのローバスト性の用途及び仮想化の用途である。
【００２６】
ＯＳのローバスト性の用途：ドメイン分離は、オペレーティングシステムソフトウェアの複数の使用法を有する。たとえば、ＯＳは、そのクリティカルコード及びクリティカルデータ構造体を含むドメインをメモリに定義することができ、システムのすべてのＩ／Ｏデバイスからのこのドメインへのアクセスを制限することができる。これによって、ＯＳは、ＯＳのデータ及びコードが、デバイスドライバによるデバイスの不正確なプログラミングを通じて誤って破損されたり、意図されずに破損されたりすることを制限することが可能になり、それによって、ＯＳのローバスト性が改善される。
【００２７】
別の利用法では、ＯＳは、レガシーの３２ビットＰＣＩデバイスからハイメモリ（４ＧＢ以上）へのＤＭＡをより良く管理するのにドメインを使用することができる。これは、３２ビットデバイスを１つ又は複数のドメインにアロケートして、これらのデバイスからハイメモリへのＤＭＡをリマッピングするようにＩ／Ｏ物理アドレス変換メカニズムをプログラミングすることによって達成される。このようなサポートがない場合、ソフトウェアは、ＯＳバウンスバッファを通じたデータコピーに頼らなければならない。
【００２８】
より複雑な利用法では、ＯＳは、複数のドメインを作成して、個々のドメインに１つ又は複数のＩ／Ｏデバイスを割り当てることによってＩ／Ｏを管理することができる。この利用法では、デバイスドライバは、自身のＩ／ＯバッファをＯＳに明示的に登録し、ＯＳは、ＤＭＡドメイン保護を実施するハードウェアを使用して、これらのＩ／Ｏバッファを特定のドメインに割り当てる。このモデルでは、ＯＳは、Ｉ／Ｏアドレス変換及び保護のメカニズムを、Ｉ／Ｏメモリ管理ユニット（Ｉ／Ｏ  ＭＭＵ）として使用する。
【００２９】
仮想化の用途：仮想化技術によって、単一のシステム上で１つ又は複数の仮想マシン（ＶＭ）の作成が可能になる。各ＶＭを、基盤となる物理ハードウェア資源を利用して同時に実行することができる。仮想マシンによって、複数のオペレーティングシステムインスタンスを同じプロセッサ上で実行することが可能になり、システムコンソリデーション、レガシーマイグレーション、アクティビティ区画化、セキュリティ等の利点が提供される。
【００３０】
仮想化アーキテクチャは、通常、（ａ）仮想マシンモニタ（ＶＭＭ）及び（ｂ）仮想マシン（ＶＭ）の２つの主要な部類のソフトウェアコンポーネントを伴う。ＶＭＭソフトウェアレイヤは、最高特権レベルで実行され、基盤となるシステムハードウェアの完全な所有権を有する。ＶＭＭによって、ＶＭは、基盤となるハードウェアを共有することが可能になり、それにもかかわらず、ＶＭ間の分離を提供する。
【００３１】
Ｉ／Ｏ仮想化のソフトウェアのみの方法の限界は、ＤＭＡリマッピング回路１３５を使用してＩ／ＯデバイスをＶＭに直接割り当てることにより取り除くことができる。デバイスの直接割り当てによって、割り当てられたＩ／Ｏデバイスのドライバは、当該Ｉ／Ｏデバイスが割り当てられたＶＭにおいてのみ実行され、ＶＭＭに対するトラップを行うことなくデバイスハードウェアと直接相互作用することが可能にされる。ハードウェアサポートによって、ＶＭＭにおけるデバイス特有の知識がなくてもＤＭＭリマッピングが可能になる。
【００３２】
このモデルでは、ＶＭＭは、自己の機能を、ＶＭへのデバイス割り当てのセットアップ及びティアダウンを明示的に行う制御機能に制限する。Ｉ／Ｏ仮想化のソフトウェアのみの方法の場合と同様に、すべてのゲストＩ／ＯアクセスについてＶＭＭに対してトラップを行うのではなく、ＶＭＭは、システムの機能に影響を与えるデバイスコンフィギュレーション空間アクセス、割り込み管理等の特定の資源を保護するためにのみ、ゲストＩ／Ｏアクセスのトラップを必要とする。
【００３３】
ＶＭへのＩ／Ｏデバイスの直接割り当てをサポートするために、ＶＭＭは、Ｉ／ＯデバイスからのＤＭＡを管理する。ＶＭＭは、自身をドメインにマッピングすることができ、各ＶＭを独立したドメインにマッピングすることができる。Ｉ／Ｏデバイスは、ドメインに割り当て可能であり、ＤＭＡリマッピング回路１３５によって提供された物理アドレス変換ハードウェアは、Ｉ／Ｏデバイスから、その親ドメインに割り当てられた物理メモリのみへのＤＭＡを可能にするのに使用することができる。物理メモリにおいてリロケートすることができるＶＭ（すなわち、ＨＰＡと同一ではないＧＰＡ）について、必要なＧＰＡからＨＰＡへの変換を行うようにＤＭＡリマッピング回路１３５をプログラミングすることができる。
【００３４】
Ｉ／Ｏデバイス割り当てへのハードウェアサポートによって、ＶＭＭの実施態様は、ソフトウェアのみのＩ／Ｏ仮想化方法及びＩ／Ｏデバイス資源をＶＭに与えるための直接デバイス割り当ての組み合わせを選ぶことができる。
【００３５】
図３は、本発明の一実施の形態によるダイレクトメモリアクセス（ＤＭＡ）リマッピングを使用した仮想化を示す図である。この仮想化は、２つのデバイスＡ  ３１０及びＢ  ３１２、ＤＭＡリマッピング回路１３５、ＶＭＭ又はホスティングＯＳ３２０、ＶＭ０３４０及びＶＭｎ３６０を含む。
【００３６】
２つのデバイスＡ  ３１０及びＢ  ３１２は、２つのＶＭ３４０及び３６０によってそれぞれサポートされる２つのＩ／Ｏデバイスである。ＤＭＡリマッピング回路１３５は、ＶＭＭ又はホスティングＯＳ３２０の特定の知識なしで、これら２つのデバイスを各ＭＶ３４０及び３６０に直接マッピングする。
【００３７】
ＶＭＭ又はホスティングＯＳ３２０は、実行されているプラットフォーム又はシステムの基盤となるハードウェアのサポートを提供する。ＶＭ３４０及び３６０は、同様のアーキテクチャコンポーネントを有するが、互いに完全に分離されている。ＶＭ３４０及び３６０は、ＶＭＭ又はホスティングＯＳ３２０にインターフェースされて、システムハードウェアにアクセスする。ＶＭ３４０は、アプリケーション３４２及び３４４を含む。これよりも多くのアプリケーション又はこれよりも少ないアプリケーションをサポートすることができる。ＶＭ３４０は、ゲストＯＳ３４６及びデバイスＡドライバ３５０を有する。デバイスＡドライバ３５０は、デバイスＡ  ３１０の駆動、制御、インターフェース、又はサポートを行うドライバである。同様に、ＶＭ３６０は、アプリケーション３６２及び３６４を含む。これよりも多くのアプリケーション又はこれよりも少ないアプリケーションをサポートすることができる。ＶＭ３６０は、ゲストＯＳ３６６及びデバイスＢドライバ３７０を有する。ゲストＯＳ３６６は、ＶＭ３４０のゲストＯＳ３４６と同じものとすることもできるし、異なるものとすることもできる。デバイスＢドライバ３７０は、デバイスＢ  ３１２の駆動、制御、インターフェース、又はサポートを行うドライバである。
【００３８】
ＤＭＡリマッピング回路１３５を有しないソフトウェアのみの方法では、デバイスＡドライバ３５０及びデバイスＢドライバ３７０は、ＶＭＭ又はホスティングＯＳ３２０に存在することになる。これら２つのドライバの機能は、したがって、ＶＭＭにおいてエミュレーションされる機能によって制限される。ＤＭＡリマッピングサポートがない場合、ＶＭＭは、エミュレーション／プロキシドライバを提供しなければならず、ゲストＯＳは、ＶＭＭがエクスポーズすることを決定した仮想デバイスに特有のデバイスドライバを使用することになる。この仮想デバイスは、リアルプラットフォームデバイスに無関係のデバイスとすることもできるし、リアルプラットフォームデバイスと同じデバイスとすることもできる。後者の場合、ＶＭＭは、リアルデバイスをプロキシする。加えて、その性能は制限される場合がある。その理由は、ゲストＩ／Ｏ動作が、ＶＭＭ又はホスティングＯＳ３２０によってトラップされ、且つ、基盤となる物理デバイスハードウェアにサブミットされる前にプロキシ又はエミュレーションされるからである。最後に、デバイスＡドライバ３５０及びデバイスＢドライバ３７０のすべて又は一部は、特権を有するＶＭＭソフトウェアの一部として実行されるので、プラットフォームの全体的なローバスト性は、特に、これらのドライバがエラーを引き起こして、ＶＭＭ又はホスティングＯＳをクラッシュさせるおそれがある場合に損なわれるおそれがある。ＤＭＡリマッピング回路１３５を有する場合、デバイスＡドライバ３５０及びデバイスＢドライバ３７０は、各Ｉ／Ｏデバイス３１０及び３１２に直接相互作用することができ、したがって、上記限界のすべてを回避することができる。
【００３９】
ＤＭＡリマッピング回路１３５によって提供されたＤＭＡリマッピングアーキテクチャにより、任意の個数のドメインへのＩ／Ｏデバイスの割り当てが容易になる。各ドメインは、システムの物理アドレス空間とは異なり得る物理アドレス空間を有する。ＤＭＡリマッピングによって、Ｉ／ＯデバイスからのＤＭＡ要求のゲスト物理アドレス（ＧＰＡ）を、当該Ｉ／Ｏデバイスのドメインにアロケートされる対応するホスト物理アドレス（ＨＰＡ）に変換することが提供される。
【００４０】
これをサポートするために、プラットフォームは、１つ又は複数のＩ／Ｏ物理アドレス変換ハードウェアユニットをサポートすることができる。各変換ハードウェアユニットは、そのハードウェア範囲内を発信源とするＩ／Ｏトランザクションのリマッピングをサポートする。たとえば、デスクトップチップセットの一実施態様は、メモリコントローラハブ（ＭＣＨ）コンポーネントにおいてすべてのＩ／Ｏトランザクションを変換する単一のＤＭＡリマッピングハードウェアユニットをエクスポーズすることができる。１つ又は複数のコアチップセットコンポーネントを有するサーバプラットフォームは、各コンポーネントの独立した変換ハードウェアユニットをサポートすることができ、それぞれは、そのＩ／Ｏ階層内を発信源とするＤＭＡ要求を変換する。このアーキテクチャは、ソフトウェアプログラミングに応じて、これらのハードウェアユニットがシステムメモリの同じ変換データ構造体を共有できる構成、又は、独立した構造体を使用できる構成をサポートする。
【００４１】
チップセットＤＭＡリマッピング回路１３５は、ＤＭＡ要求のアドレスをゲスト物理アドレス（ＧＰＡ）として取り扱う。ＤＭＡリマッピング回路１３５は、プロセッサキャッシュのスヌープ又はメモリコントローラへの転送等のさらなるハードウェア処理の前に、入力するアドレスにアドレス変換機能を適用して、そのアドレスをホスト物理アドレス（ＨＰＡ）に変換することができる。
【００４２】
仮想化の状況では、ＤＭＡリマッピング回路１３５によって実施されるアドレス変換機能は、ＶＭＭによってサポートされた物理メモリ管理に依存する。たとえば、ソフトウェアがホスト物理メモリアロケーションを連続領域として行う利用法では、ＧＰＡをＨＰＡに変換するためのＤＭＡ変換は、簡単なオフセットの追加とすることができる。ＶＭＭが物理メモリをページの粒度で管理する利用法では、ＤＭＡリマッピング回路１３５は、メモリ常駐アドレス変換データ構造体を使用することができる。
【００４３】
図４は、本発明の一実施の形態によるＩ／Ｏアドレス変換を示す図である。Ｉ／Ｏアドレス変換は、２つのＩ／Ｏデバイス１  ４１０及び２  ４１２、ＤＭＡリマッピング回路１３５、物理メモリ４２０、並びにゲストビュー４４０を含む。
【００４４】
Ｉ／Ｏデバイス１  ４１０及び２  ４１２は、２つの別々のドメインに割り当てられる。それらＩ／Ｏデバイスは、アドレスＤＭＡ＿ＡＤＲへのＩ／Ｏ要求又はＤＭＡ要求を行う。ＤＭＡリマッピング回路１３５は、これら２つのデバイスを、物理メモリ４２０においてアロケートされた対応するドメインにマッピングする。物理メモリ４２０は、ドメイン１  ４２２及び４２４並びにドメイン２  ４２６及び４２８をアロケートする。これらのデバイスについてアロケートされるメモリ部分は、これよりも多くすることもできるし、少なくすることもできる。ドメイン１  ４２２及び４２４は、デバイス１  ４１０に対応し、ドメイン２  ４２４及び４２８は、デバイス１  ４１２に対応する。図４に示す例では、デバイス１  ４１０はドメイン１  ４２２にマッピングされ、デバイス２  ４１２はドメイン２  ４２８にマッピングされるか又は割り当てられる。
【００４５】
ゲストビュー４４０は、ゲストＩ／Ｏデバイスからの論理的なビューである。ゲストビュー４４０は、ドメイン１  ４４２及び２  ４４４を含む。ドメイン１  ４４２は、物理メモリ４２０の２つのドメイン１  ４２２及び４２４に対応する。ドメイン２  ４４４は、２つのドメイン２  ４２６及び４２８に対応する。ゲストビュー４４０からは、１つのＩ／Ｏデバイスに対応するドメインは１つしか存在しない。デバイス１  ４１０からのＤＭＡ＿ＡＤＲアドレスは、ドメイン１  ４４２の０〜Ｌのアドレス空間内に位置するＤＭＡ＿ＡＤＲ１にマッピングされる。同様に、デバイス２  ４１２からのＤＭＡ＿ＡＤＲアドレスは、ドメイン２  ４４４の０〜Ｋのアドレス空間内に位置するＤＭＡ＿ＡＤＲ２にマッピングされる。
【００４６】
ドメインの作成及び管理を担当するソフトウェアは、双方のドメインの物理メモリ４２０をアロケートし、ＤＭＡリマッピング回路１３５においてＧＰＡからＨＰＡへのアドレス変換機能をセットアップする。ＤＭＡリマッピング回路１３５は、デバイス４１０及び４１２によって生成されたＧＰＡを適切なＨＰＡに変換する。
【００４７】
図５は、本発明の一実施の形態によるＤＭＡリマッピング構造体２２２を示す図である。ＤＭＡリマッピング構造体２２２は、ソース識別子５１０を受け取り、ルートテーブル５２０、複数のコンテキストテーブル５３００〜５３０Ｕ、及び複数のアドレス変換構造体５４００〜５４０Ｖを含む。リマッピング構造体２２２は、Ｉ／Ｏデバイスからソース識別子５１０及びゲスト物理アドレスを受け取り、ゲスト物理デバイスを、割り当てドメインにおけるホスト物理デバイスに変換する。この変換は、階層形式で配列された変換テーブルを使用して実行することができる。この変換メカニズムは、ルートテーブル５２０から開始し、コンテキストテーブル５３００〜５３０Ｕ及びアドレス変換構造体５４００〜５４０Ｖをトラバースする、すなわちウォークする。
【００４８】
ＤＭＡリマッピング回路１３５に現れるＩ／Ｏトランザクションのリクエスタ識別情報は、発信源デバイス及び発信源のＩ／Ｏデバイスが割り当てられているドメインを決定する。ソース識別子５１０は、Ｉ／Ｏトランザクションの発信源を識別する属性である。ＤＭＡリマッピング回路１３５は、実施態様に特有の方法でトランザクションのソース識別子５１０を決定することができる。たとえば、いくつかのＩ／Ｏバスプロトコルは、各Ｉ／Ｏトランザクションの一部として、発信源デバイス識別情報を提供することができる。チップセット統合デバイスの場合等のそれ以外の場合には、チップセットの内部の実施態様に基づいてソース識別子５１０を暗に伝えることができる。
【００４９】
ＰＣＩエクスプレスデバイスの場合、ソース識別子５１０は、Ｉ／Ｏトランザクションヘッダの一部として設けられたリクエスタ識別子にマッピングされる。デバイスのリクエスタ識別子は、構成ソフトウェアによって割り当てられたそのデバイスのＰＣＩバス番号／デバイス番号／機能番号から成り、Ｉ／Ｏ要求を開始するハードウェア機能を一意に識別する。一実施の形態では、ソース識別子５１０は、機能番号５１２、デバイス番号５１４、及びバス番号５１６を含む。図５に示す例では、機能番号５１２はＫビット幅であり、デバイス番号５１４はＬビット幅であり、バス番号５１６はＭビット幅である。バス番号５１６は、Ｉ／Ｏトランザクションが生成されるバスを識別する。デバイス番号５１４は、識別されたバス上の特定のデバイスを識別する。機能番号５１２は、Ｉ／Ｏデバイスによって要求された特定の機能を識別する。ソース識別子５１０は、ルートテーブル５２０及びコンテキストテーブル５３００〜５３０Ｕをインデックス又は参照するのに使用される。図５に示す例では、バス０及びバスｍを使用する２つのＩ／Ｏトランザクションが存在する。
【００５０】
ＰＣＩエクスプレスデバイスの場合、ルートテーブル５２０は、ソース識別子５１０又はソース識別子５１０のバス番号５１６によってインデックスされるルートエントリー５２５０〜５２５Ｍ−１を記憶する。ルートエントリーは、特定のバス上のデバイスをその各親ドメインにマッピングする最上位レベル構造体として機能する。ルートエントリー０  ５２５０は、バス０を使用するＩ／Ｏトランザクションに対応する。ルートエントリーｍ  ５２０ｍは、バスｍを使用するＩ／Ｏトランザクションに対応する。ルートエントリー０  ５２５０及び５２５ｍは、コンテキストテーブル５３００〜５３０ｍをそれぞれ指し示す。一実施の形態では、これらのエントリーは、対応するコンテキストテーブルのベースアドレスを提供する。
【００５１】
コンテキストテーブル５３００〜５３０Ｕは、ルートエントリーによって参照されるコンテキストエントリー５３５ｋを記憶する。コンテキストエントリー５３５ｋは、Ｉ／Ｏデバイスをそれらの対応するドメイン（複数可）にマッピングする。デバイス番号５１４及び機能番号５１２は、Ｉ／Ｏトランザクションに対応するコンテキストエントリーを得るのに使用される。一実施の形態では、デバイス番号５１４及び機能番号５１２は、対応するルートエントリーによって参照されるコンテキストテーブルを指し示すか又は参照するインデックスを形成する。２Ｍ＊２Ｌ＊２Ｋ、すなわち２Ｍ＋Ｌ＋Ｋ個のコンテキストエントリーが存在する。一実施の形態では、Ｋ＝３、Ｌ＝５、及びＭ＝８であり、その結果、エントリーは全部で６４Ｋ個となり、２Ｍ（２８＝２５６）個のコンテキストエントリーテーブルとして編成される。図４に示す例では、２つのＩ／Ｏトランザクションの２つのコンテキストエントリーは、コンテキストテーブル５３００のコンテキストエントリー５３５０及びコンテキストテーブル５３０ｍのコンテキストエントリー５３５ｍである。コンテキストエントリー５３５０〜５３５ｍは、アドレス変換構造体５４００〜５４０ｍをそれぞれ指し示す。
【００５２】
アドレス変換構造体５４００〜５４０Ｖは、Ｉ／Ｏトランザクションに対応するゲスト物理アドレスを使用して、ホスト物理アドレスへのアドレス変換を提供する。アドレス変換構造体５４００〜５４０Ｖのそれぞれは、マルチテーブル変換、シングルテーブル変換、及びベース／境界変換を使用する３つの変換メカニズムにそれぞれ対応するマルチテーブル５５０、シングルテーブル５６０、又はベース／境界５７０とすることができる。以下の説明では、４ＫＢの通常のページサイズが使用される。当業者には既知のように、他の任意のサイズを使用することもできる。
【００５３】
ＤＭＡリマッピング回路１３５のソフトウェア柔軟制御を提供するために、ＤＭＡリマッピング回路１３５は、図２に示すレジスタセット２２０に含まれる複数のレジスタを有する。レジスタセット２２０は、ベースアドレス（ＢＡＲ）レジスタを通じてホスト物理アドレス空間に配置される。変換ハードウェアＢＡＲレジスタは、実施態様に依存した方法でソフトウェアにエクスポーズされる。これは、メモリコントローラデバイス等のチップセット統合デバイスの１つにおけるＰＣＩコンフィギュレーション空間レジスタとしてエクスポーズすることができる。一実施の形態では、ＢＡＲレジスタは、最小の４Ｋアドレスウィンドウを提供する。レジスタセット２２０のレジスタは、複数のフィールドを有することができる。フィールドは、アサート又はネゲートすることができる。フィールドが単一のビットのみから成る場合、アサートは、そのビットが、定義された論理状態（たとえば、ＴＲＵＥ、論理１）にセットされることを意味し、ネゲートは、そのビットが、アサートの状態に補完的な定義された論理状態（たとえば、ＦＡＬＳＥ、論理０）にリセットされることを意味する。以下では、アサート状態又はネゲート状態の使用は任意である。フィールドをアサートして第１の状態を示し、且つ、ネゲートして第２の状態を示すこともできるし、その逆も可能である。
【００５４】
レジスタのフィールドは、ＤＭＡリマッピング回路１３５及び／又はソフトウェアが、プログラミング、初期化、又は構成することができる。また、フィールドは、専用ハードウェア回路、又は、データ構造体、関数、ルーチン、若しくはメソッドによって実施される機能に対応することもできる。以下では、フィールドはレジスタにグループ化されている。以下のレジスタのこれらのフィールド又はビットのグループ化、フォーマット、又は編成は、例示の目的のためのである。これらのフィールドをグループ化、フォーマット、又は編成する他の方法を使用することができる。また、フィールドは、２つ以上のレジスタに複写することもできる。レジスタは、上述したようなフィールドよりも多くのフィールド又は少ないフィールドを有することができる。加えて、レジスタは、ストレージエレメント又はメモリエレメントとしての場合を含めて、複数の方法で実施することができる。
【００５５】
図６は、本発明の一実施の形態による共通レジスタを含むレジスタセットを示す図である。共通レジスタは、メモリタイプ報告レジスタ（ＭＴＹＰＥ＿ＲＥＧ）６１０、グローバルコマンドレジスタ（ＧＣＭＤ＿ＲＥＧ）６２０、ルートエントリーテーブルアドレスレジスタ（ＲＴＡＤＤＲ＿ＲＥＧ）６３０、及びデフォルトコンテキストレジスタ（ＤＥＦ＿ＲＥＧ）６４０を含む。
【００５６】
ＭＴＹＰＥ＿ＲＥＧ６１０は、変換データ構造体のメモリタイプを報告する。ＭＴＹＰＥ＿ＲＥＧ６１０は、フォールトログメモリタイプ（ＦＭＴ）フィールド６１２、ページテーブルメモリタイプ（ＰＭＴ）フィールド６１４、コンテキストエントリーテーブルメモリタイプ（ＣＭＴ）フィールド６１６、及びルートエントリーテーブルメモリタイプ（ＲＭＴ）フィールド６１８を含む。
【００５７】
ＦＭＴフィールド６１２は、フォールトログ領域がキャッシュ可能であるか否かを示す。ＦＭＴフィールド６１２は、ネゲートされている時、フォールトログ領域をアンキャッシュできることを示す。ＦＭＴフィールド６１２は、アサートされている時、フォールトログ領域がキャッシュ可能領域に存在できることを示す。ＰＭＴフィールド６１４は、ページテーブルがキャッシュ可能であるか否かを示す。ＰＭＴフィールド６１４は、ネゲートされている時、ページテーブルが、アンキャッシュされたメモリ領域に存在できることを示す。ＰＭＴフィールド６１４は、アサートされている時、ページテーブルがキャッシュ可能領域に存在できることを示す。ＣＭＴフィールド６１６は、コンテキストテーブルがキャッシュ可能であるか否かを示す。ＣＭＴフィールド６１６は、ネゲートされている時、コンテキストテーブルが、アンキャッシュされたメモリ領域に存在できることを示す。ＣＭＴフィールド６１６は、アサートされている時、コンテキストテーブルがキャッシュ可能領域に存在できることを示す。ＲＭＴフィールド６１８は、ルートテーブルがキャッシュ可能であるか否かを示す。ＲＭＴフィールド６１８は、ネゲートされている時、ルートテーブルが、アンキャッシュされたメモリ領域に存在できることを示す。ＲＭＴフィールド６１８は、アサートされている時、ルートテーブルがキャッシュ可能領域に存在できることを示す。
【００５８】
ＧＣＭＤ＿ＲＥＧ６２０は、変換の振る舞いを制御する。ＧＣＭＤ＿ＲＥＧ６２０は、変換ハードウェアイネーブル（ＨＥ）フィールド６２２及び書き込みバッファフラッシュ（ＷＢＦ）フィールド６２４を含む。
【００５９】
ＨＥフィールド６２２は、変換ハードウェアをイネーブル又はディセーブルするソフトウェアプログラマブル制御フィールドである。ＨＥフィールド６２２は、ネゲートされている時、変換ハードウェアをディセーブルしていることを示す。ＨＥフィールド６２２は、アサートされている時、変換ハードウェアをイネーブルしていることを示す。ソフトウェアは、このフィールドを更新する時、このフィールドをリードバックしてチェックし、イネーブル／ディセーブルステータスを確認すべきである。
【００６０】
ＷＢＦフィールド６２４は、チップセット内部書き込みバッファをフラッシュするのに使用される。これは、コンテキストテーブル又はページテーブルに対するあらゆる更新がどの内部書き込みポスティングバッファにも保持されないことを確実にするために行われる。ソフトウェアは、このフィールドをアサートして、書き込みバッファフラッシュコマンドを発行する。論理回路２２４は、このフィールドをネゲートして、書き込みバッファフラッシュ完了を示す。ソフトウェアは、フィールドをリードバックし、フィールドがネゲートされていることをチェックしてフラッシュ完了を確認すべきである。
【００６１】
ＲＴＡＤＤＲ＿ＲＥＧ６３０は、メモリ常駐ルートテーブルのベースアドレスをセットアップする。ソフトウェアは、下位のダブルワード（ＤＷＯＲＤ）に最後に書き込みを行うことによってこのレジスタをプログラミングすべきである。ＲＴＡＤＤＲ＿ＲＥＧ６３０は、ルートテーブルベースアドレス（ＲＴＡ）フィールド６３２及びイネーブルコンテキストエントリー（ＥＣＥ）フィールド６３４を含む。ＲＴＡフィールド６３２は、システムメモリの、ページアラインされた通常サイズのルートテーブルのベースを指し示す。通常サイズは、任意の便利な所定のサイズとすることができる。一実施の形態では、通常サイズは４ＫＢである。ＤＭＡリマッピング回路１３５は、最下位Ｎビットのみを実施することができる。ここで、Ｎは（ホストアドレス幅−１２）である。フィールドの残りは、読み出し専用として取り扱うことができる。ＥＣＥフィールド６３４は、コンテキストエントリーの使用をイネーブル又はディセーブルする制御フィールドである。これは、デフォルトコンテキストの使用に影響を与えない。ＥＣＥフィールド６３４は、ネゲートされている時、コンテキストエントリーの使用をディセーブルしていることを示す。ＤＭＡ要求は、デフォルトレジスタのプログラミングに基づいて処理される。ＥＣＥフィールド６３４は、アサートされている時、ＤＭＡ要求を処理するコンテキストエントリーの使用をイネーブルしていることを示す。ルートテーブル及びコンテキストテーブルは、メモリにセットアップされ、ルートテーブルのベースは、上位ビット（たとえば、ビット１２〜６３）に設けられる。
【００６２】
ＤＥＦ＿ＲＥＧ６４０は、デフォルトコンテキストを指定する。コンテキストテーブルの各コンテキストエントリーは、特定のデバイスからのＤＭＡ要求を管理する方法を指定する。デフォルトコンテキストは、ソフトウェアがそのデバイスをドメインマッピングテーブルにプログラミングして、これらのテーブルの参照を可能にするまで、ＤＭＡリマッピング回路１３５によって管理されるデバイスが最初に割り当てられるデフォルトドメインを表す。たとえば、Ｉ／Ｏデバイスのシステムへのホットプラグ時に、このデバイスのコンテキストがソフトウェアによって事前にプログラミングされていない場合には、ソフトウェアがデバイスを別のドメインに明示的に割り当てるまで、デバイスはデフォルトドメインに割り当てられる。デフォルトコンテキストは、ＤＥＦ＿ＲＥＧ６４０を通じてプログラミングされる。
【００６３】
変換ハードウェアは、次のようにＤＭＡ要求のソース識別子をチェックする。コンテキストエントリーが、（たとえば、グローバルコマンドレジスタを通じて）イネーブルされている場合、入力したＤＭＡ要求のソース識別子は、その対応するルートエントリーと、ルートエントリーを通じてコンテキストエントリーとを参照するのに使用される。この場合、ＤＭＡは、ルートエントリー及びコンテキストエントリーのプログラミングに従って処理される。コンテキストエントリーがイネーブルされていない場合、ＤＭＡ要求は、ＤＥＦ＿ＲＥＧ６４０に従って処理される。
【００６４】
他のコンテキストエントリーと同様に、デフォルトコンテキストも、ブロッキング、パススルー、アドレスフィルタリング、変換構造体を使用したアドレス変換等の特定のタイプの変換機能を実施するようにプログラミングすることができる。
【００６５】
ＤＥＦ＿ＲＥＧ６４０は、存在（Ｐ）フィールド６４２、シングル／マルチレベルテーブル（Ｍ）フィールド６５０、アドレス空間ルート（ＡＳＲ）フィールド６５４、ゲストアドレス幅（ＧＡＷ）フィールド６５６、フォールト処理フィールド６６０、及びドメイン識別子（ＤＩＤ）フィールド６６２を含む。通常、Ｐフィールド６４２及びＭフィールド６５０は、１ビット指示子である。
【００６６】
Ｐフィールド６４２は、トランザクションを処理する時は常にチェックされるべきである。Ｐフィールド６４２は、ネゲートされている時、このコンテキストエントリーを通るすべてのトランザクションがブロックされることを示す。Ｐフィールド６４２は、アサートされている時、他のフィールドのプログラミングに基づいてこのコンテキストエントリーを通るプロセストランザクションを示す。
【００６７】
Ｍフィールド６５０は、マルチレベルテーブル変換が使用されるか否かを示すのに使用される。Ｍフィールド６５０は、アサートされている時、このコンテキストエントリービットに使用されるシングルレベルページテーブルが、そのページテーブルのエントリーをインデックスするのに使用されるべきであることを示す。Ｍフィールド６５０は、ネゲートされている時、このコンテキストエントリーに使用されるマルチレベルページテーブルが、ルートテーブルのエントリーを参照するのに使用されるべきであることを示す。
【００６８】
ＡＳＲフィールド６５４は、アドレス空間ルートの、サイズアラインされた（size-aligned）ホスト物理アドレスである。連続アドレス空間を使用する場合、このフィールドは、ドメインの物理アドレス空間のベースアドレスを含む。ページテーブル（シングルレベル又はマルチレベル）を使用する場合、このフィールドは、ルートテーブルのベースを指し示す。
【００６９】
ＧＡＷフィールド６５６は、シングルレベルページテーブル又はマルチレベルページテーブルを指定するコンテキストエントリーについてのみ有効である。マルチレベルページテーブルを使用する場合、このフィールドは、ＤＭＡリマッピング回路１３５がページテーブルのウォークに使用する調整されたゲストアドレス幅（ＡＧＡＷ）を示す。このフィールドで指定された値は、ＤＭＡリマッピング回路１３５によってサポートされて能力レジスタ（capability register）で報告されるＡＧＡＷ値である。能力レジスタは、ＤＭＡリマッピング回路１３５によってサポートされる能力を示すレジスタである。シングルレベルページテーブルを使用する場合、このフィールドは、ドメインのゲストアドレス幅を示す。このフィールドで指定された値は、シングルレベルページテーブルの最小のＧＡＷとＤＭＡリマッピング回路１３５によって能力レジスタで報告されたＭＧＡＷ値との間にある。
【００７０】
ＤＭＡリマッピング回路１３５が、このフィールドにおいて、基盤となる実施態様によってサポートされていない値を検出した場合、このコンテキストエントリーを通るすべてのＤＭＡ要求はブロックされて、変換フォールトの結果となる。このコンテキストエントリーを通じて処理され、且つ、２ＧＡＷ−１（ここで、ＧＡＷはこのフィールドの値である）よりも上のゲスト物理アドレスにアクセスするどのＤＭＡ要求もブロックされて、その結果、変換フォールトとなる。
【００７１】
ＦＰフィールド６６０は、このコンテキストエントリーを通じて処理されるＤＭＡ要求によりフォールトの記録をイネーブル又はディセーブルする。
【００７２】
ＤＩＤフィールド６６２は、デフォルトドメインのドメイン識別子を示す。
【００７３】
アドレスフィルタリング：
マルチレベルページテーブル構造体ベースのアドレス変換は、通常（たとえば４ＫＢ）のページの粒度でメモリを管理することをソフトウェアに可能にすることによって最も高い柔軟性を提供する。しかしながら、マルチレベルページテーブル構造体は、ハードウェアがページテーブルをウォークすることを必要とするので、最も多くのアドレス変換待ち時間を招く。たとえ、ハードウェア実施態様が、変換キャッシュを利用して、変換オーバーヘッドを削減できるとしても、Ｉ／Ｏ変換索引バス（ＴＬＢ）のミスの時に被るページウォーク待ち時間は、一定のタイプのＩ／Ｏトラフィックには適していない場合がある。たとえば、アイソクロナスチャネル（isochronous channel）を使用する高品位オーディオ等のＰＣＩエクスプレスデバイスからのＤＭＡ要求、及び、統合グラフィックス等の一定のチップセット統合デバイスからのＤＭＡ要求は、非決定的なＤＭＡリマッピング待ち時間を招く可能性はない。
【００７４】
ＤＭＡリマッピング待ち時間によって悪影響を受けるおそれのあるＩ／Ｏデバイスをサポートするハードウェア実施態様の場合、アーキテクチャは、（アドレス変換の代わりに）ＤＭＡアドレスフィルタリングを通じて、非リロケートドメインへのデバイスの割り当てを規定する。非リロケートドメインは、ゲスト物理アドレス空間がシステムのホスト物理アドレス空間のサブセットであるドメインである。アドレスフィルタリングハードウェアは、ソフトウェア柔軟性を維持して、通常サイズ（たとえば４ＫＢ）のページでホストメモリを管理し、最小のオーバーヘッドしか招かない。
【００７５】
アドレスフィルタリングのサポートは、ＤＭＡリマッピング回路１３５によりレジスタセット２２０の能力レジスタを通じて報告される。アイソクロナスチャネルをサポートしていないハードウェア実施態様等、すべてのデバイスからのＤＭＡ要求をアドレス変換できるハードウェア実施態様は、アドレスフィルタリングをサポートする必要はない。プラットフォーム構成が、１つのチップセットコンポーネント当たり又は１つのＰＣＩエクスプレスルートポート当たり１つのＤＭＡリマッピングハードウェアユニットを必要とする等、複数のＤＭＡリマッピングハードウェアユニットを必要とし、且つ、アドレスフィルタリングサポートが、それらのユニットの１つによって必要とされる場合、アドレスフィルタリングは、すべてのハードウェアユニットによってサポートされる。
【００７６】
アドレスフィルタリングの場合、非リロケートドメインにアロケートされるメモリのページは、図７に示すようなフィルタビットマップテーブルと呼ばれるメモリ常駐テーブルを通じて示される。アーキテクチャは、単一の非リロケートドメインのみをサポートし、したがって、報告された１つのＤＭＡリマッピングハードウェア当たり単一のフィルタビットマップテーブルポインタのみをサポートする。フィルタビットマップテーブルのロケーション及びサイズは、図７に示すようなアドレスフィルタベース及びサイズレジスタを通じてプログラミングされる。ビットマップテーブルのサイズは、（４ＫＢ＊２Ｓ）として計算される。ここで、Ｓは、アドレスフィルタサイズレジスタにプログラミングされた値である。このテーブルの各ビットは４Ｋのホストページを表し、最初のビットは最初の４Ｋのホスト物理アドレス空間を表す。フィルタビットマップテーブルの最小サイズは４ＫＢである。これは、ホストメモリの最初の１２８ＭＢ領域をマッピングする。
【００７７】
ＤＭＡ要求がハードウェアによるアドレスフィルタリングしか受けることができないデバイスが、プラットフォームファームウェアによってソフトウェアに報告される。これらのデバイスのコンテキストエントリーのどのプログラミングも、ＤＭＡ要求をアドレスフィルタリングすることがセットアップされることを確実にすべきであり、ＤＭＡ要求をブロックすることも、ＤＭＡ要求をパススルーとして許可することも、ＤＭＡ要求をアドレス変換することもセットアップされないようにすることを確実にすべきである。
【００７８】
ＤＭＡ要求がアドレス変換又はアドレスフィルタリングも行うことができるＩ／Ｏデバイスは、対応するコンテキストエントリーを、アドレスフィルタリングを示すようにプログラミングすることによって、非リロケートドメインに割り当てることができる。同様に、非リロケートドメインは、デフォルトコンテキストレジスタを、アドレスフィルタリングを示すようにプログラミングすることによって、デフォルトドメインと同じものにすることができる。
【００７９】
コンテキストエントリーが、アドレスフィルタリングを示すようにプログラミングされている場合、コンテキストエントリーフィールドの残り（有効フィールド、存在フィールド、及びパススルーフィールド以外）は、ＤＭＡリマッピング回路１３５によって無視される。
【００８０】
アドレスフィルタリングを指定するコンテキストエントリーを通じて処理されるＤＭＡ要求は、ＤＭＡリマッピング回路１３５によって次のようにハンドリングされる：
１．ＤＭＡ要求は、通常のチップセットＤＭＡアドレス復号ロジックを通じてメモリに確実にアクセスしていることが確認される。ＤＭＡ要求がピアツーピアとして復号される場合、ＤＭＡ要求はブロックされる。
２．ＤＭＡ要求がメモリに対するものである場合、ＤＭＡ要求が対象とするメモリロケーションが４Ｋページ内であることが確認される。
３．上記２つのチェックを通過した場合、ＤＭＡ要求のＧＰＡは、非リロケートドメインのアドレス空間内であることが確認される。アドレス（２（Ｐ＋２７）−１）よりも上のメモリロケーションへのアクセスを試みるどのＤＭＡ要求もブロックされる。ここで、Ｐは、フィルタビットマップサイズレジスタにプログラミングされた値である。
４．上記チェックのすべてを通過した場合、ＤＭＡリマッピング回路１３５は、フィルタビットマップテーブルにおける）ビットオフセット［ＧＰＡ＞＞１２］でＤＭＡ要求によってアクセスされるページに対応するビットフィールドを参照する。そのビットがクリアされている場合、ＤＭＡ要求は通常通り処理される。そのビットがセットされている場合、ＤＭＡ要求はブロックされる。
【００８１】
図７は、本発明の一実施の形態によるアドレスフィルタリングレジスタを含むレジスタセット２２０を示す図である。レジスタセット２２０は、フィルタサイズレジスタ（ＦＳＩＺＥ＿ＲＥＧ）７１０、フィルタベースレジスタ（ＦＢＡＳＥ＿ＲＥＧ）７２０、フィルタ制御レジスタ（ＦＣＴＬ＿ＲＥＧ）７３０、及びフィルタフォールトレジスタ（ＦＦＬＴ＿ＲＥＧ）７４０を含む。
【００８２】
ＦＳＩＺＥ＿ＲＥＧ７１０は、アドレスフィルタリングビットマップテーブルのサイズを示す。ＤＭＡリマッピング回路１３５が、アドレスフィルタリングをサポートしていない場合、このレジスタは、予約として取り扱われる（たとえば、書き込みは無視され、読み出しは０を返す）。ＦＳＩＺＥ＿ＲＥＧ７１０は、フィルタテーブルサイズ（ＦＴＳ）フィルタ７１２及びフィルタビットマップメモリタイプ（ＢＭＴ）フィールド７１５を含む。ＢＭＴフィールド７１５は、ビットマップ領域がキャッシュ可能であるか否かを示す。ＢＭＴフィールド７１５は、ネゲートされている時、ビットマップ領域がアンキャッシュされていることを示す。このフィールドに対する書き込みは無視される。ＢＭＴフィールド７１５は、アサートされている時、ビットマップ領域がキャッシュ可能な領域に存在できることを示す。ＦＴＳフィールド７１２は、アドレスフィルタテーブルのサイズを示す。このサイズは、次の式によって計算される。テーブルサイズ＝４Ｋ＊２ＦＳＩＺＥ＿ＲＥＧバイト。たとえば、００００ｈ：１２８ＭＢメモリをサポートする４ＫＢテーブル、０００１ｈ：２５６ＭＢメインメモリをサポートする８ＫＢテーブル、０００５ｈ：４ＧＢメインメモリをサポートする１２８ＫＢテーブル等である。
【００８３】
ＦＢＡＳＥ＿ＲＥＧ７２０は、アドレスフィルタリングビットマップテーブルのベースアドレスへのポインタを保持する。ＤＭＡリマッピング回路１３５がアドレスフィルタリングをサポートしていない場合、このレジスタは予約として取り扱われる（たとえば、書き込みは無視され、読み出しは０を返す）。ＦＢＡＳＥ＿ＲＥＧ７２０は、フィルタテーブルベース（ＦＴＢ）フィールド７２５を含む。ＦＴＢフィールド７２５は、メモリにおけるアドレスフィルタテーブルのベースアドレスへのポインタである。このテーブルは、サイズアラインされている。最小のテーブルサイズは、４ＧＢのアドレス指定能力をサポートする１２８Ｋである。
【００８４】
ＦＣＴＬ＿ＲＥＧ７３０は、アドレスフィルタビットマップテーブルのキャッシュを制御する。ＤＭＡリマッピング回路１３５がアドレスフィルタリングをサポートしていない場合、このレジスタは予約として取り扱われる（たとえば、書き込みは無視され、読み出しは０を返す）。ＦＣＴＬ＿ＲＥＧ７３０は、フィルタハードウェアイネーブル（ＦＨＥ）フィールド７３２、書き込みバッファフラッシュ（ＷＢＦ）フィールド７３４、フィルタキャッシュ無効（ＦＣＩ）フィールド７３６、及びフィルタテーブル保護（ＦＴＰ）フィールド７３８を含む。ＦＨＥフィールド７３２は、アドレスフィルタリングハードウェアをイネーブル又はディセーブルするソフトウェアプログラマブル制御フィールドである。ＦＨＥフィールド７３２は、ネゲートされている時、アドレスフィルタリングハードウェアのディセーブルを示す。そうでなければアドレスフィルタリングされるどのＤＭＡ要求も、パススルーとして処理される。ＦＨＥフィールド７３２は、アサートされている時、アドレスフィルタリングハードウェアのイネーブルを示す。フィルタベースレジスタ及びフィルタサイズレジスタは、このフィールドを通じてアドレスフィルタリングハードウェアをイネーブルする前にプログラミングされる。ＷＢＦフィールド７３４は、チップセット内部書き込みバッファをフラッシュするのに使用される。これは、フィルタビットマップテーブルの更新が、どの内部書き込みポスティングバッファにも確実に保持されないようにするために行われる。ソフトウェアは、このフィールドをアサートして、書き込みバッファフラッシュコマンドを発行する。ＤＭＡリマッピング回路１３５は、このフィールドをネゲートして、書き込みバッファフラッシュの完了を示す。ソフトウェアは、このフィールドをリードバックし、このフィールドがネゲートされていることをチェックしてフラッシュ完了を確認すべきである。ＦＣＩフィールド７３６は、アドレスフィルタビットマップキャッシュを無効にする。ソフトウェアは、このフィールドをアサートして、アドレスフィルタキャッシュ無効を要求する。ＤＭＡリマッピング回路１３５は、このフィールドをネゲートして無効完了を示す。ソフトウェアは、このフィールドをリードバックし、このフィールドがネゲートされていることをチェックして無効完了を確認すべきである。ＦＴＰフィールド７３８は、アドレスフィルタビットマップ領域の保護を示す。ＦＴＰフィールド７３８がソフトウェアによってアサートされると、ハードウェアは、アドレスフィルタビットマップ領域のＤＭＡアクセスからの保護を開始する。ソフトウェアは、このフィールドを読み出し、このフィールドがアサートされていることをチェックして、アドレスフィルタビットマップ領域が保護されていることを確認すべきである。ＦＴＰフィールド７３８がソフトウェアによってネゲートされると、ＤＭＡリマッピング回路１３５は、アドレスフィルタビットマップ領域のＤＭＡアクセスからの保護を停止する。
【００８５】
ＦＦＬＴ＿ＲＥＧは、アドレスフィルタリングハードウェアによって検出されたフォールトを報告する。ＤＭＡリマッピング回路１３５が、アドレスフィルタリングをサポートしていない場合、このレジスタは、予約として取り扱われる（たとえば、書き込みは無視され、読み出しは０を返す）。ＦＦＬＴ＿ＲＥＧは、フォールティングアドレス（Faulting Address）（ＦＡ）フィールド７４２、タイプ（Ｔ）フィールド７４４、及び有効（Ｖ）フィールド７４６を含む。ＦＡフィールド７４２は、フォールトしているＤＭＡ要求によってアクセスされたロケーションのフレームアドレスである。Ｔフィールド７４４は、フォールトしたＤＭＡ要求のメモリアクセスタイプを示す。Ｔフィールド７４４は、ネゲートされている時、ＤＭＡ書き込みを示す。Ｔフィールド７４４は、アサートされている時、ＤＭＡ読み出し要求を示す。Ｖフィールド７４６は、フォールトしているＤＭＡ要求のページフレームアドレスがラッチされているか否かを示す。Ｖフィールド７４６がアサートされている時、フォールトしているＤＭＡ要求のページフレームアドレスは、フォールティングアドレスフィールドにラッチされ、それ以上のアドレスフィルタリングフォールトアドレスはラッチされない。ソフトウェアは、書き込みを通じてこのフィールドを明示的にネゲートして、アドレスフィルタリングフォールト記録を再イネーブルすべきである。
【００８６】
図８Ａは、本発明の一実施の形態によるルートエントリー５２０を示す図である。ルートエントリー５２０は、存在（Ｐ）フィールド８１０及びコンテキストエントリーテーブルポインタ（ＣＥＰ）フィールド８１５を含む。
【００８７】
Ｐフィールド８１０は、ルートエントリーが存在するか否かを示す。Ｐフィールド８１０は、ネゲートされている時、ルートエントリーが存在せず、使用されるべきでないことを示す。ＤＭＡリマッピング回路１３５は、このルートエントリーを通じて処理されたＤＭＡ要求をフォールトする。Ｐフィールド８１０は、アサートされている時、ルートエントリーが存在し、トランザクションを処理するのに使用できることを示す。
【００８８】
ＣＥＰフィールド８１５は、このバスのコンテキストテーブルへのポインタである。コンテキストテーブルは、サイズが４ＫＢであり、ページアラインされている。
【００８９】
図８Ｂは、本発明の一実施の形態によるコンテキストエントリー５３５を示す図である。コンテキストエントリー５３５は、存在（Ｐ）フィールド８２２、マルチレベル（Ｍ）フィールド８３０、アドレス空間ルート（ＡＳＲ）フィールド８３４、ゲストアドレス幅（ＧＡＷ）フィールド８３６、フォールト処理（ＦＰ）フィールド８４０、及びドメイン識別子（ＤＩＤ）フィールド８４２を含む。コンテキストエントリー５３５は、図６に示すデフォルトレジスタＤＥＦ＿ＲＥＧ６４０と同様のフィールドを有する。通常、Ｐフィールド８２２及びＭフィールド８３０は、１ビット指示子である。
【００９０】
Ｐフィールド８２２、Ｍフィールド８３０、ＡＳＲフィールド８３４、及びＧＡＷフィールド８３６は、それぞれ、図６に示すデフォルトレジスタ（ＤＥＦ＿ＲＥＧ６４０）のＰフィールド６４２、Ｍフィールド６５０、ＡＳＲフィールド６５４、及びＧＡＷフィールド６５６と同様である。
【００９１】
ＤＩＤフィールド８４２は、このコンテキストエントリーが属するドメインの識別子である。ソフトウェアは、すべてのデバイスが、同じページテーブル構造体を使用し、したがって、全く同一に変換されたアドレスを有し、それらのコンテキストエントリーには同じドメイン識別子を有することを確実にすべきである。ＤＭＡリマッピング回路１３５は、キャッシュサポートが使用される場合、そのキャッシュされたエントリーをタグ付けするためにドメイン識別子を使用することができる。
【００９２】
図８Ｃは、本発明の一実施の形態によるページテーブルエントリー（ＰＴＥ）５６５を示す図である。ＰＴＥ５６５は、読み出し可能（Ｒ）フィールド８５０、書き込み可能（Ｗ）フィールド８５２、コヒーレント（Ｃ）フィールド８５４、スーパページ（ＳＰ）フィールド８５６、及びアドレス（ＡＤＤＲ）フィールド８６０を含む。これらのフィールドよりも多くのフィールド又は少ないフィールドを定義できることに留意されたい。
【００９３】
Ｒフィールド８５０は、ページがＤＭＡにとって読み出し可能であるか否かを示す。Ｒフィールド８５０は、ネゲートされている時、ページがＤＭＡ読み出し要求に対してアクセス可能でないことを示す。このページテーブルエントリーを通じて処理されるＤＭＡ読み出し要求はブロックされる。フォールト報告がイネーブルされている場合、変換フォールトが引き起こされる。Ｒフィールド８５０は、アサートされている時、ページがＤＭＡ読み出し要求に対してアクセス可能であることを示す。
【００９４】
Ｗフィールド８５２は、ページがＤＭＡにとって書き込み可能であるか否かを示す。Ｗフィールド８５２は、ネゲートされている時、ページがＤＭＡ書き込み要求に対してアクセス可能でないことを示す。このページテーブルエントリーを通じて処理されるＤＭＡ書き込み要求はブロックされる。フォールト報告がイネーブルされている場合、変換フォールトが引き起こされる。Ｗフィールド８５２は、アサートされている時、ページがＤＭＡ書き込み要求に対してアクセス可能であることを示す。
【００９５】
Ｃフィールド８５４は、変換されたホスト物理アドレスへのアクセスがコヒーレントであるか否かを指定する。Ｃフィールド８５４は、ネゲートされている時、変換されたホスト物理アドレスへのＤＭＡアクセスが、Ｉ／Ｏトランザクションで指定されたコヒーレンシ属性に従うことを示す。たとえば、「スヌープなし（no-snoop）」属性セットを有するＰＣＩ−Ｘ要求又はＰＣＩエクスプレス要求は、スヌープされることなく、変換されたホスト物理アドレスにアクセスする。Ｃフィールド８５４は、アサートされている時、変換されたホスト物理アドレスへのＤＭＡアクセスが、コヒーレントとして処理されることを示す。ソフトウェアは、すべてのページテーブルエントリーにおいて、ＤＭＡリマッピング回路１３５が、（能力レジスタで報告されるように）Ｃフィールドのアサートされた設定をサポートしていない場合において、及び、ＳＰフィールドがネゲートされている非リーフページテーブルエントリーにおいて、このフィールドが予約（０）として取り扱われることを確実にすべきである。
【００９６】
ＳＰフィールド８５４は、これがリーフページテーブルエントリーであり、完了したページウォーク（complete page walk）であることをＤＭＡリマッピング回路１３５に示す。ＳＰフィールド８５６は、ネゲートされている時、ページウォークを続け、次のレベルのテーブルを使用することを示す。ＳＰフィールド８５６は、アサートされている時、テーブルウォークを停止し、ＡＤＤＲフィールド８６０で提供されるページベースアドレスの上位ビットと共に、ゲスト物理アドレスの未使用の下位ビットをページウォークに使用してホスト物理アドレスを形成することを示す。ＤＭＡリマッピング回路１３５は、能力レジスタで報告されるように、ＤＭＡリマッピング回路１３５がサポートするスーパページサイズに対応するページテーブルエントリーのみのＳＰフィールド８５４を評価する。ソフトウェアは、（１）マルチレベルページテーブルの４ＫＢリーフページテーブルエントリー、（２）ＤＭＡリマッピング回路１３５によってサポートされていないスーパページサイズに対応するマルチレベルページテーブルの非リーフページテーブルエントリー、及び（３）シングルレベルページテーブルのページテーブルエントリーでは、このフィールドを予約（たとえば０）として取り扱うべきである。
【００９７】
ＡＤＤＲフィールド８６０は、これがリーフノードである場合、ページフレームのホスト物理アドレスを含む。そうでない場合、ＡＤＤＲフィールド８６０は、次のレベルのページテーブルへのポインタを含む。このフィールドはサイズアラインされている。
【００９８】
アドレス変換メカニズムの属性をさらに特徴付ける追加フィールドを定義できることに留意されたい。たとえば、以下の属性、すなわち、ベース／境界（base/bound）変換をイネーブルするベース／境界属性、マルチレベルテーブル変換における最初のレベルのページテーブルのサイズを示すストライド属性、及びＩ／Ｏトランザクションが変換なしで通過することを許可されているか否かを示すパススルー属性を定義することができる。
【００９９】
アドレス変換メカニズム：
ソフトウェアによる物理メモリ管理サポートの変化する粒度をサポートするために、ＤＭＡリマッピングアーキテクチャは、３つのタイプのアドレス変換構造体を定義する。チップセットの実施態様は、これらの変換構造体の１つ又は複数をサポートすることができ、その能力レジスタを通じて、サポートされているタイプを報告することができる。これらのメカニズムは、変化するコスト、複雑さ、及び性能のトレードオフを呈する。複数のトランザクション構造体をサポートする実施態様の場合、各コンテキストエントリーは、異なる変換構造体のタイプを使用するようにプログラミングすることができる。
【０１００】
以下のアドレス変換構造体が定義される。すなわち、（１）ページサイズの領域内でそれぞれ、複数レベルのページサイズのページテーブルを通じてページ粒度の領域アロケーションを可能にするマルチレベルページテーブル構造体、（２）単一の連続ページテーブルを通じてページ粒度の領域アロケーションを可能にするシングルレベルページテーブル構造体、及び（３）ドメインへの連続的な領域アロケーションを可能にするベース／境界変換構造体が定義される。上記変換構造体のいずれか１つをデフォルト又はオプションとして選択することができる。
【０１０１】
図９Ａは、本発明の一実施の形態によるマルチレベルテーブルを使用するアドレス変換構造体５４０を示す図である。アドレス変換構造体５４０は、コンテキストエントリー５３５、調整されたゲスト物理アドレス（ＡＧＰＡ）９１０、第１レベルページテーブル９２０、中間テーブル９３０、リーフノードテーブル９４０、及びページ９５０を含む。マルチレベルテーブルは、階層形式で配列された多数の変換テーブルを含む。
【０１０２】
コンテキストエントリー５３５のＡＳＲフィールドは、第１レベルページテーブル９２０のベースアドレスを提供する。ＡＧＰＡ９１０は、オフセットフィールド９１２、リーフノードページテーブルフィールド９１４、中間ページテーブルフィールド９１６、及び第１レベルページテーブルフィールド９１８を含む。マルチレベルページテーブルのレベル数は、ＡＧＰＡ９１０の幅、メモリ空間、メモリ管理ポリシー、ワード長、及び他のあらゆる実施の要素（implementation factor）に応じた、任意の適した個数とすることができることに留意すべきである。
【０１０３】
第１レベルページテーブルフィールド９１８は、第１レベルページテーブル９２０をインデックスするために、ＡＳＲによって提供される第１レベルベースアドレスと結合される。一実施の形態では、各エントリーは８バイトであり、第１レベルページテーブルフィールド９１８は、シフタ９２２によって３ビットだけシフトされ、次に、加算器９２４により第１レベルベースアドレスに加算されて、第１レベルページテーブル９２０への第１レベルインデックスが提供される。インデックスされた第１レベルページテーブルエントリーは、中間レベルページテーブル９３０の中間ベースアドレスを提供する。
【０１０４】
中間ページテーブルフィールド９１６は、中間レベルページテーブル９３０をインデックスするために、中間ベースアドレスと結合される。各エントリーは８バイトであるので、中間ページテーブルフィールド９１８は、シフタ９３２によって３ビットだけシフトされ、次に、加算器９３４により中間レベルベースアドレスに加算されて、中間レベルページテーブル９３０への中間レベルインデックスが提供される。インデックスされた中間レベルページテーブルエントリーは、リーフノードページテーブル９４０のリーフノードベースアドレスを提供する。
【０１０５】
リーフノードページテーブルフィールド９１４は、リーフノードページテーブル９４０をインデックスするために、リーフノードベースアドレスと結合される。各エントリーは８バイトであるので、リーフノードページテーブルフィールド９１４は、シフタ９４２によって３ビットだけシフトされ、次に、加算器９４４によりリーフノードベースアドレスに加算されて、リーフノードページテーブル９４０へのリーフノードインデックスが提供される。インデックスされたリーフノードページテーブルエントリーは、ページ９５０のホストベースアドレスを提供する。
【０１０６】
次に、オフセット９１２が、ページ９５０のホスト物理アドレスを生成するために、ホストベースアドレスと結合される。
【０１０７】
マルチレベルページテーブルによって、ソフトウェアは、ページ（たとえば４Ｋ）の粒度でホスト物理メモリを管理することが可能になり、ページディレクトリ及びページテーブルで階層構造体をセットアップすることが可能になる。論理回路２２４は、ページウォークロジックを実施し、ＤＭＡトランザクションで提供されるＧＰＡを使用して、これらの構造体をトラバースする。ＤＭＡ要求のＧＰＡを変換するためにトラバースする必要のあるページテーブルレベルの最大数は、対応するコンテキストエントリーのゲストアドレス幅の関数である。ソフトウェアは、能力レジスタを通じてＤＭＡリマッピング回路１３５の所与のハードウェア実施態様によりサポートされる最大ゲストアドレス幅を問い合わせることができる。
【０１０８】
Ｐを通常ページサイズとする。Ｑを１つのエントリー当たりのバイト数とする。ｐ及びｑを、２ｐ＝Ｐ及び２ｑ＝Ｑとなるような数とする。ドメインの調整されたゲストアドレス幅（ＡＧＡＷ）は、（ＡＧＡＷ−ｐ）が（ｐ−ｑ）の倍数となるように調整されたそのドメインのゲストアドレス幅（ＧＡＷ）値である。ＡＧＡＷは、次のように求められる。
R = (GAW - p)MOD(p-q);
if (R == 0) {
AGAW = GAW;
} else {
AGAW = GAW + (p-q) -R;
}
【０１０９】
たとえば、Ｐ＝４Ｋであり、Ｑ＝８であると仮定すると、ｐ＝１２となり、ｑ＝３となる。２ＧＢのメモリがアロケートされるドメインは、３１のＧＡＷを有する。ＡＧＡＷは、
Ｒ＝（３１−１２）ｍｏｄ９＝１
ＡＧＡＷ＝３１＋９−１＝３９
として計算される。
【０１１０】
調整されたゲストアドレス幅（ＡＧＡＷ）は、ページウォークのレベル数を示す。ＤＭＡリマッピング回路１３５は、対応するＧＡＷがホストアドレス幅に等しい、定義されたＡＧＡＷをサポートする。ドメインのマルチレベルページテーブルを使用する場合、ソフトウェアは、上述のように、調整されたゲストアドレス幅（ＡＧＡＷ）を計算する。ソフトウェアは、マルチレベルページテーブル構造体をセットアップする時にＡＧＡＷを使用する。ソフトウェアは、ドメインのＧＡＷ及びＡＧＡＷを、このドメインに割り当てられたすべてのデバイスのコンテキストエントリーにプログラミングする。
【０１１１】
また、ＤＭＡリマッピング回路１３５は、より小さな調整されたゲストアドレス幅もサポートすることができる。ＤＭＡリマッピング回路１３５は、サポートされている調整されたゲストアドレス幅を能力レジスタを通じて報告することができる。ソフトウェアは、ドメインのマルチレベルページテーブルをセットアップする時に、基盤となるハードウェア実施態様によってサポートされているＡＧＡＷを確実に使用するようにすべきである。また、ソフトウェアは、ドメインのＡＧＡＷを、このドメインに割り当てられたデバイスのコンテキストエントリーにプログラミングすべきである。
【０１１２】
マルチレベルアドレス変換を指定するコンテキストエントリーを通じて処理されるＤＭＡ要求は、ＤＭＡリマッピング回路１３５によって次のようにハンドリングされる。
１．ＤＭＡ要求で指定されたＧＰＡ／長さの組み合わせは、ＤＭＡリマッピング回路１３５がページ境界交差（page boundary crossing）をサポートしているか否かに従って使用される。ＤＭＡリマッピング回路１３５が、ページ境界と交差するＤＭＡ要求をサポートし、且つ、ＧＰＡ／長さの組み合わせが、ＤＭＡ要求がページ境界と交差することを示している場合、ＤＭＡ要求が対象とする各ページ領域は、独立にアドレス変換される。ＤＭＡリマッピング回路１３５が、ページ境界と交差するＤＭＡ要求をサポートせず、且つ、ＧＰＡ／長さの組み合わせが、ＤＭＡ要求がページ境界と交差することを示している場合、アドレス変換フォールトの結果となる。
２．コンテキストエントリーにプログラミングされたＧＡＷフィールドが、ＤＭＡリマッピング回路１３５によってサポートされている調整されたゲストアドレス幅でない場合、ＤＭＡ要求はブロックされ、アドレス変換フォールトの結果となる。なお、この調整されたゲストアドレス幅は、能力レジスタで報告される。
３．ＤＭＡ要求のＧＰＡは、デバイスが割り当てられているドメインのゲスト物理アドレス空間内にあることが確認される。アドレス（２Ｘ−１）よりも上のメモリロケーションにアクセスしようと試みるどのＤＭＡ要求もブロックされる。ここで、Ｘは、このＤＭＡ要求を処理するのに使用されるコンテキストエントリーにプログラミングされたゲストアドレス幅である。
４．上記チェックに合格した場合、ＤＭＡ要求のＧＰＡは、Ｘビットに調整されて、調整されたゲスト物理アドレス（ＡＧＰＡ）が形成される。ここで、Ｘは、このＤＭＡ要求を処理するのに使用されるコンテキストエントリーにプログラミングされたゲストアドレス幅である。ＡＧＰＡに対するＤＭＡ要求は、マルチレベルページテーブル構造体のプログラミングに従って、ブロックされるか、又は、有効なＨＰＡに変換されるかのいずれかである。
５．ＤＭＡリマッピング回路１３５は、ステップ４によって生成されたＨＰＡの通常のチップセットアドレス復号を実行し、メモリへのアクセス又はピアツーピア要求のいずれかとしてＤＭＡ要求を処理する。
６．変換されたＨＰＡが、メモリに向かうように復号される場合、ＨＰＡは、コヒーレンシ（Ｃ）属性を設定するためのサポートに従ってアクセスされる。ＤＭＡリマッピング回路１３５が、ページテーブルエントリーのコヒーレンシ（Ｃ）属性のネゲート設定しかサポートしていない場合、メモリは、ＤＭＡ要求で指定される（又はＤＭＡ要求から推論される）コヒーレンシに従ってアクセスされる。たとえば、ＰＣＩエクスプレス要求が、非スヌープとしてＤＭＡ要求を指定した場合、メモリは、スヌープされることなくアクセスされる。ＤＭＡリマッピング回路１３５が、ページテーブルエントリーのコヒーレンシ（Ｃ）属性のアサート設定及びネゲート設定をサポートしている場合、メモリは、ＤＭＡ要求をアドレス変換するのに使用されるリーフページテーブルエントリーのコヒーレンシ属性のプログラミングに従ってアクセスされる。
【０１１３】
図９Ｂは、本発明の一実施の形態によるシングルテーブルを使用するアドレス変換構造体５４０を示す図である。アドレス変換構造体５４０は、コンテキストエントリー５３５、ゲスト物理アドレス（ＧＰＡ）９６０、シングルページテーブル９７０、及びページ９８０を含む。
【０１１４】
シングルレベルページテーブルは、大きな連続ページテーブル構造体を予約することを犠牲にして、長いページウォークなしで４Ｋの粒度のページアロケーションを提供する代替的なメカニズムをソフトウェアに提供する。シングルレベルページテーブルのページテーブルエントリーサイズ（たとえば、６４ビット）及びフォーマットは、ストライドフィールドが予約として取り扱われることを除いて、前節で説明したマルチレベル構造体のページテーブルエントリーのものと同様である。
【０１１５】
ページテーブルのサイズは、ゲストのアドレス空間のサイズによって決まる。たとえば、１ＧＢ（ＧＡＷ＝３０）のゲストアドレス指定能力の場合、ソフトウェアは、２１８個のページテーブルエントリーを有する２ＭＢのページテーブルをアロケートする必要がある。Ｉ／Ｏ変換索引バッファ（ＴＬＢ）も、シングルレベルページテーブルを使用するＤＭＡアドレス変換に適用可能である。
【０１１６】
シングルレベルアドレス変換を指定するコンテキストエントリーを通じて処理されるＤＭＡ要求は、ＤＭＡリマッピング回路１３５によって次のようにハンドリングされる。
１．ＤＭＡ要求で指定されたＧＰＡ／長さの組み合わせは、ＤＭＡリマッピング回路１３５がページ境界交差をサポートしているか否かに従って使用される。ＤＭＡリマッピング回路１３５が、ページ境界と交差するＤＭＡ要求をサポートし、且つ、ＧＰＡ／長さの組み合わせが、ＤＭＡ要求がページ境界と交差することを示している場合、ＤＭＡ要求が対象とする各ページ領域は、独立にアドレス変換される。ＤＭＡリマッピング回路１３５が、ページ境界と交差するＤＭＡ要求をサポートせず、且つ、ＧＰＡ／長さの組み合わせが、ＤＭＡ要求がページ境界と交差することを示している場合、アドレス変換フォールトの結果となる。
２．コンテキストエントリーにプログラミングされたＧＡＷフィールドが、最小値、たとえば２１と、ＤＭＡリマッピング回路１３５によって能力レジスタで報告された最大ゲストアドレス幅（ＭＧＡＷ）との間にない場合、ＤＭＡ要求はブロックされ、アドレス変換フォールトの結果となる。
３．ＤＭＡ要求は、デバイスが割り当てられているドメインのゲスト物理アドレス空間内のアドレスをアクセスしていることが確認される。（２Ｘ−１）よりも上のメモリロケーションにアクセスしようと試みるどのＤＭＡ要求もブロックされる。ここで、Ｘは、このＤＭＡ要求を処理するのに使用されるコンテキストエントリーにプログラミングされたゲストアドレス幅（ＧＡＷフィールド）である。
４．上記チェックに合格した場合、ＤＭＡリマッピング回路１３５は、ビット（Ｘ−１）：１２を使用して、シングルレベルページテーブルのページテーブルエントリーを参照する。ＤＭＡ要求は、ページテーブルエントリーのプログラミングに従って、ブロックされるか、又は、有効なＨＰＡに変換されるかのいずれかである。
５．ＤＭＡリマッピング回路１３５は、ステップ４によって生成されたＨＰＡの通常のチップセットアドレス復号を実行し、メモリへのアクセス又はピアツーピア要求のいずれかとしてＤＭＡ要求を処理する。
６．変換されたＨＰＡが、メモリに向かうように復号される場合、ＨＰＡは、コヒーレンシ（Ｃ）属性を設定するためのサポートに従ってアクセスされる。ＤＭＡリマッピング回路１３５が、ページテーブルエントリーのコヒーレンシ（Ｃ）属性のネゲート設定しかサポートしていない場合、メモリは、ＤＭＡ要求で指定される（又はＤＭＡ要求から推論される）コヒーレンシに従ってアクセスされる。たとえば、ＰＣＩエクスプレス要求が、非スヌープとしてＤＭＡ要求を指定した場合、メモリは、スヌープされることなくアクセスされる。ＤＭＡリマッピング回路１３５が、ページテーブルエントリーのコヒーレンシ（Ｃ）属性のアサート設定及びネゲート設定をサポートしている場合、メモリは、ＤＭＡ要求をアドレス変換するのに使用されるページテーブルエントリーのコヒーレンシ属性のプログラミングに従ってアクセスされる。
【０１１７】
コンテキストエントリー５３５のＡＳＲフィールドは、ページシングルテーブル９７０の位置を突き止めるベースアドレスを提供する。ＧＰＡ９６０は、オフセットフィールド９６２及びページテーブルフィールド９６４を含む。シングルページテーブル９７０は、ＧＰＡ９６０に対応するホスト物理アドレスのページを指し示すページテーブルエントリーを含む。
【０１１８】
対応するページテーブルエントリーを参照するために、ページテーブルフィールド９６４は、ＡＳＲフィールドによって提供されるベースアドレスと結合される。各エントリーは８バイトを占めるので、ページテーブルフィールド９６４は、シフタ９７２によって３ビットだけシフトされ、次に、加算器９７４によりＡＳＲに加算されて、シングルページテーブル９７０へのインデックスが提供される。
【０１１９】
次に、このインデックスに対応するページテーブルエントリーが、ページ９８０のベースアドレスを提供する。オフセットフィールド９６２は、加算器９８４によってこのベースアドレスに加算されて、その結果、ページ９８０のＨＰＡが提供される。
【０１２０】
図９Ｃは、本発明の一実施の形態によるベース／境界変換を使用するアドレス変換構造体５４０を示す図である。アドレス変換構造体５４０は、コンテキストエントリー５３５、ゲスト物理アドレス（ＧＰＡ）９６０、及び物理メモリ空間９９０を含む。
【０１２１】
ベース境界は、ＤＭＡ要求のＧＰＡが、そのドメインのベースアドレスからのオフセットとして使用されるアドレス変換の最も簡単な形態を提供する。ドメインのベースアドレスは、ホスト物理アドレスであり、コンテキストエントリー５３５のＡＳＲフィールド８３４（図８Ｂ）を通じてプログラミングされる。コンテキストエントリーのゲストアドレス幅（ＧＡＷ）は、オフセット制限を示す。ＧＡＷが示す制限を超えるゲストアドレスを有するどのＤＭＡ要求も、ＤＭＡリマッピング回路１３５によってブロックされる。
【０１２２】
一実施の形態では、ホスト物理アドレスは６４ビットである。有効なゲストアドレス（たとえば、ＧＡＷアドレス指定能力の範囲内のアドレス）の場合、ＤＭＡリマッピング回路１３５は、以下の動作を実行して、ホスト物理アドレスを生成する。
ホスト物理アドレス［６３：ＧＡＷ］＝アドレス空間ルート［６３：ＧＡＷ］
ホスト物理アドレス［ＧＡＷ−１：０］＝ゲスト物理アドレス［ＧＡＷ−１：０］
【０１２３】
フォールト処理：
ＤＭＡリマッピング回路１３５によってブロックされたＤＭＡ要求は、フォールトとなる。ＤＭＡリマッピング回路１３５は、（ａ）アドレス変換フォールト及び（ｂ）アドレスフィルタリングフォールトの２つのタイプのフォールトを定義する。ＧＰＡからＨＰＡへのアドレス変換のプロセスでブロックされるＤＭＡ要求は、アドレス変換フォールトとなる。非リロケートドメインに割り当てられ、したがって、アドレスフィルタリングされたデバイスからのブロックされたＤＭＡ要求は、アドレスフィルタリングフォールトとなる。
【０１２４】
アドレス変換フォールトは、ＧＰＡからＨＰＡへの変換のプロセスでＤＭＡリマッピング回路１３５によって検出されるフォールトである。アドレス変換フォールトは、次の状態のいずれかの下で発生し得る。すなわち、（１）ＤＭＡ要求を処理するのに使用されるコンテキストエントリーの存在（Ｐ）フィールドがネゲートされている状態。これは、コンテキストテーブルの１つ又はデフォルトコンテキストのコンテキストエントリーである可能性がある。（２）ＤＭＡ要求が、２ＧＡＷ−１のドメインのゲスト物理アドレス空間制限を超えてＧＰＡにアクセスしようと試みている状態。ここで、ＧＡＷは、ＤＭＡ要求を処理するのに使用されるコンテキストエントリーのゲストアドレス幅フィールド（たとえば、図８ＢのＧＡＷフィールド８３６）である。（３）ＤＭＡ要求が、４ＫＢのページ境界を横切ってゲスト物理アドレスにアクセスしようと試みている状態。（４）ＤＭＡ要求のＧＰＡからＨＰＡへの変換に使用されるページテーブルエントリーの存在（Ｐ）フィールドがネゲートされている状態。（５）ＤＭＡ要求のＧＰＡからＨＰＡへの変換に使用されるページテーブルエントリーの読み出し／書き込み（Ｒ／Ｗ）フィールド（たとえば、図８ＣのＲＷフィールド８５６）がネゲートされて、ＤＭＡ読み出しのみが許可されていることを示しており、且つ、ＤＭＡ要求が書き込みである状態。
【０１２５】
変換フォールトは、フォールト情報の記録及びソフトウェアへのフォールト情報の報告を行うことによって処理される。フォールトの記録は、メモリ常駐フォールトログを通じて規定される。ソフトウェアは、ページアラインされた４ＫＢサイズのフォールトログ領域のベースをフォールトログレジスタにプログラミングすることが予想される。
【０１２６】
ＤＭＡリマッピング回路１３５は、任意の個数のフォールト記録までフォールトログにログ記録することができる。一実施の形態では、この個数は２５６個である。各フォールト記録は以下のフィールドを含む。すなわち、（１）フォールト原因：フォールト原因フィールドは、変換フォールトを引き起こした特定の状況を示す。（２）タイプ：タイプフィールドは、フォールトしたＤＭＡ要求のタイプ（たとえば、書き込み要求又は読み出し要求）を提供する。（３）ソースＩＤ：ソースＩＤフィールドは、フォールトしたＤＭＡ要求のリクエスタ識別子を提供する。（４）アドレス：アドレスフィールドは、フォールトしたＤＭＡ要求のＧＰＡを提供する。（５）長さ：長さフィールドは、フォールトしたＤＭＡ要求のデータペイロードのサイズ（たとえば、ＤＷＯＲＤの個数）を提供する。
【０１２７】
ＤＭＡリマッピング回路１３５は、フォールトログの次の書き込み可能エントリーへの現在のポインタを管理する。フォールトログがフルである間に、ＤＭＡリマッピング回路１３５が新たなフォールトを検出した場合、そのフォールトは記録されず、エラーステータスレジスタのフォールトログオーバーフローステータス（ＦＬＯ）フィールドがアサートされる。ソフトウェアがフォールトログレジスタを再初期化するまで、その後のフォールトは記録されない。
【０１２８】
ソフトウェアは、フォールトログレジスタを通じてすべてのアドレス変換フォールトの記録をイネーブル又はディセーブルすることができる。フォールト記録がフォールトログレジスタでイネーブルされている時、フォールト記録は、ＤＭＡ要求を処理するのに使用されるコンテキストエントリーのフォールト処理フィールド（たとえば、図８Ｂのコンテキストエントリー５３５のフォールト処理フィールド８４０）を通じて制御される。
【０１２９】
フォールトイベントは、メッセージ信号割り込み（ＭＳＩ）を使用してソフトウェアへ報告される。フォールトイベントは、フォールトイベント制御レジスタを通じて制御される。割り込みベクトル、配信モード、アドレス等のフォールトイベント情報は、フォールトイベントデータ及びフォールトイベントアドレスレジスタを通じてプログラミングされる。
【０１３０】
ＤＭＡリマッピング回路１３５は、最初のフォールトがフォールトログに記録される時に、フォールトイベント割り込みメッセージを生成する。この割り込みメッセージは、オートディセーブルされ、ソフトウェアが割り込み発生を明示的に再準備（re-arm）することを必要とする。最初のフォールトからのフォールトイベントが、ソフトウェアにより受信されて処理される前に、ＤＭＡリマッピング回路１３５は、フォールトを処理して、フォールトをフォールトログにログ記録することができる。ＤＭＡリマッピング回路１３５がフォールトの記録を継続することを可能にするために、ソフトウェアは、フォールトログで報告されたフォールトを処理する前に、新たなフォールトログ領域を有するフォールトログレジスタをプログラミングすることが予想される。
【０１３１】
アドレスフィルタリングフォールトは、Ｉ／ＯデバイスからのアドレスフィルタリングするＤＭＡ要求が非リロケートドメインに割り当てられるときに、ＤＭＡリマッピング回路１３５によって検出されるフォールトである。アドレスフィルタ（ＡＦ）フィールドがアサートされているコンテキストエントリーを通じて処理されたＤＭＡ要求は、次の状態のいずれかの下でアドレスフィルタリングフォールトを引き起こす場合がある。
１．ＤＭＡ要求で示された物理アドレスのアドレス復号が、そのＤＭＡ要求をピアツーピア要求として識別している状態。
２．ＤＭＡ要求が、４ＫＢページ境界を横切ってメモリにアクセスしようと試みている状態。
３．ＤＭＡ要求が、フィルタビットマップテーブルをホスティングするメモリ領域にアクセスしており、且つ、フィルタテーブル保護（ＦＴＰ）フィールドが、フィルタ制御レジスタでアサートされている状態。
４．ＤＭＡ要求が、ドメインの（２（Ｐ＋２７）−１）のゲスト物理アドレス空間制限を超えてＧＰＡにアクセスしようと試みている状態。ここで、Ｐは、フィルタビットマップサイズレジスタにプログラミングされた値である。
５．ＤＭＡ要求によってアクセスされたページに対応するフィルタビットマップテーブルエントリーがアサートされて、ページへのアクセスがブロックされていることを示している状態。
【０１３２】
フォールトログに記録できるアドレス変換フォールトと異なり、アドレスフィルタリングフォールトは、フィルタフォールトレジスタを通じて報告される。フィルタフォールトレジスタは、最初に検出されたアドレスフィルタリングフォールトについての情報を記録する。
【０１３３】
変換フォールト及びアドレスフィルタリングフォールトに加えて、他のエラー状態も存在し得る。ＤＭＡリマッピング回路１３５は、以下の他のタイプのエラーに遭遇する場合がある。（１）ハードウェアによって検出された、ＤＭＡリマッピングレジスタのエラーを有するプログラミング。たとえば、能力レジスタを通じてサポートされないものとして報告された機能を使用するハードウェアレジスタのプログラミング。ＤＭＡリマッピング回路１３５は、これらの種類の一般的なプログラミングエラーを、エラーステータスレジスタを通じて報告することができる。１つ又は複数のデバイスからのＤＭＡ要求は、エラー状態が修復されるまで影響を受ける場合がある。（２）能力レジスタを通じて報告された機能以外の機能を使用する、コンテキストテーブルエントリー又はページテーブルエントリー等のデータ構造体のエラーを有するプログラミング。これらのタイプのエラーは、ＤＭＡリマッピング回路１３５が、コンテキストエントリーロードの一部として、又は、ページテーブルウォーク中に検出することができる。これらは、通常、ＤＭＡ要求の処理の一部として検出されるので、変換フォールトとして取り扱われる。フォールト記録におけるフォールト原因コードによって、これらのエラーのタイプが識別される。
【０１３４】
図１０は、本発明の一実施の形態によるフォールト処理レジスタを含むレジスタセット２２０を示す図である。レジスタセット２２０は、フォールトイベント制御レジスタ（ＦＥＶＥＮＴ＿ＣＴＬ＿ＲＥＧ）１０１０、フォールトイベントデータレジスタ（ＦＥＶＥＮＴ＿ＤＡＴ＿ＲＥＧ）１０２０、フォールトイベントアドレスレジスタ（ＦＥＶＥＮＴ＿ＡＤＤＲ＿ＲＥＧ）１０３０、フォールトイベント上位アドレスレジスタ（ＦＥＶＥＮＴ＿ＵＡＤＤＲ＿ＲＥＧ）１０４０、フォールトログレジスタ（ＦＬＯＧ＿ＲＥＧ）１０５０、エラーステータスレジスタ（ＥＲＲ＿ＲＥＧ）１０６０、及びフォールト処理フィールド１０７０を含む。
【０１３５】
ＲＥＶＥＮＴ＿ＣＴＬ＿ＲＥＧ１０１０は、フォールトイベント割り込みメッセージ制御ビットを指定する。ＦＥＶＥＮＴ＿ＣＴＬ＿ＲＥＧ１０１０は、割り込みメッセージイネーブル（ＩＥ）フィールド１０１２、割り込みメッセージ再準備（ＩＲ）フィールド１０１４、割り込みメッセージマスク（ＩＭ）フィールド１０１６、及び割り込みメッセージ保留（ＩＰ）フィールド１０１８を含む。
【０１３６】
割り込みメッセージイネーブル（ＩＥ）フィールドは、割り込みサービスが利用可能であるか否かを示す。ＩＥフィールドは、ネゲートされている時、ハードウェアが、割り込みメッセージ要求を発行することを禁止されていることを示す。このフィールドは、リセット時にネゲートされる。このフィールドは、アサートされている時、割り込みサービスが利用可能であることを示す。フォールト状態が検出されると、ＤＭＡリマッピング回路１３５は、割り込みマスクビット及び割り込み保留ビットの状態に応じて、フォールトイベントデータレジスタ値及びフォールトイベントアドレスレジスタ値を使用して割り込み要求を発行することができる。このフィールドの設定にかかわらず、ＤＭＡ要求の処理中の変換フォールトは、フォールトを処理するのに使用されるフォールト記録が、ネゲートされたフォールト記録制御（ＦＲＣ）フィールドを有する場合にのみ報告される。
【０１３７】
ＩＲフィールド１０１４は、フォールトイベント生成がオートディセーブルされるか否かを示す。割り込みメッセージが生成されると、ＤＭＡリマッピング回路１３５は、このフィールドをアサートして、フォールトイベント生成がオートディセーブルされることを示す。ソフトウェアは、このフィールドを明示的にネゲートして、フォールトイベントを再準備する必要がある。
【０１３８】
ＩＭフィールド１０１６フィールドは、割り込みマスクを示す。ＩＭフィールド１０１６は、ネゲートされている時、割り込みマスクが行われていないことを示す。ＩＭフィールド１０１６は、アサートされている時、ソフトウェアが割り込みをマスクしていることを示す。ＤＭＡリマッピング回路１３５は、割り込みメッセージを送信することを禁止される。
【０１３９】
ＩＰフィールド１０１８は、割り込み保留を示す。ＩＭフィールド１０１６がアサートされている時、ＤＭＡリマッピング回路１３５は、割り込みメッセージを送信することを禁止される。その代わり、ＤＭＡリマッピング回路１３５は、ＩＭフィールド１０１６がアサートされていないならば割り込みメッセージを送信していることになるが、その送信のたびに、ＤＭＡリマッピング回路１３５はＩＰフィールド１０１８をアサートする。ソフトウェアが割り込みマスクを解除する時に、ＩＰフィールド１０１８がアサートされている場合、ＤＭＡリマッピング回路１３５は、割り込みメッセージの送信をスケジューリングすべきであり、割り込みメッセージが送信されるとすぐに、このフィールドをネゲートすべきである。
【０１４０】
ＦＥＶＥＮＴ＿ＤＡＴ＿ＲＥＧ１０２０は、割り込みメッセージデータを指定する。ＦＥＶＥＮＴ＿ＤＡＴ＿ＲＥＧ１０２０は、割り込みメッセージデータ（ＩＤ）フィールド１０２５を含む。ＩＤフィールド１０２５は、フォールトイベント割り込みメッセージのデータ値を含む。
【０１４１】
ＦＥＶＥＮＴ＿ＡＤＤＲ＿ＲＥＧ１０３０は、割り込みメッセージアドレスを指定する。ソフトウェアは、下位のＤＷＯＲＤに最後に書き込みを行うことによってこのレジスタをプログラミングすべきである。ＦＥＶＥＮＴ＿ＡＤＤＲ＿ＲＥＧ１０３０は、メッセージアドレス（ＭＡ）フィールド１０３５を含む。フォールトイベントがイネーブルされている時、このレジスタの内容は、メッセージ信号割り込み（ＭＳＩ）メモリ書き込みトランザクションのＤＷＯＲＤアラインされたアドレスを指定する。
【０１４２】
ＦＥＶＥＮＴ＿ＵＡＤＤＲ＿ＲＥＧ１０４０は、割り込みメッセージアドレスを指定する。ソフトウェアは、下位のＤＷＯＲＤに最後に書き込みを行うことによってこのレジスタをプログラミングすべきである。ＤＭＡリマッピング回路１３５が６４ビットメッセージアドレスをサポートしている場合にのみ、メッセージ上位アドレス（ＭＵＡ）機能を実施する必要がある。実施される場合、このレジスタの内容は、６４ビットＭＳＩ書き込みトランザクションの上位３２ビットを指定する。ＤＭＡリマッピング回路１３５が６４ビットメッセージをサポートしていない場合、このレジスタは、読み出し専用として取り扱われる。
【０１４３】
ＦＬＯＧ＿ＲＥＧ１０５０は、メモリ常駐フォールトログ領域のベースアドレスをセットアップする。ソフトウェアは、下位のＤＷＯＲＤに最後に書き込みを行うことによってこのレジスタをプログラミングすべきである。ＦＬＯＧ＿ＲＥＧ１０５０は、フォールトログ領域ポインタ（ＦＬＰ）フィールド１０５２及びイネーブルフォールトログ（ＥＦＬ）フィールド１０５４を含む。ＦＬＰフィールド１０５２は、システムメモリにおける、ページアラインされた４ＫＢサイズのフォールトログ領域のベースを指し示す。ＥＦＬフィールド１０５４は、フォールトログをイネーブル又はディセーブルする制御フィールドである。ＥＦＬフィールド１０５４は、ネゲートされている時、フォールトログのディセーブルを示す。このフィールドがネゲートされている時、フォールトログ領域ポインタフィールドは無視され、フォールトしているＤＭＡ要求は記録されない。ＥＦＬフィールド１０５４は、アサートされている時、ＤＭＡ要求の処理にコンテキストエントリーの使用をイネーブルすることを示す。ルートテーブル及びコンテキストテーブルは、メモリにセットアップされるべきであり、ルートテーブルのベースは、ＦＬＰフィールド１０５２に設けられるべきである。
【０１４４】
ＥＲＲ＿ＲＥＧ１０６０は、ハードウェアエラーステータスを示す。このレジスタへ書き込みを行うことによって、このフィールドはネゲートされる。ＥＲＲ＿ＲＥＧ１０６０は、フォールトステータス（ＦＳ）フィールド１０６２、フォールトログオーバーフロー（ＦＬＯ）フィールド１０６４、及び無効プログラミング（ＩＮＶ）フィールド１０６８を有する。ＦＳフィールド１０６２は、フォールトログがイネーブルされていない時に、ＤＭＡリマッピング回路１３５によってアサートされてフォールトを示す。ＥＲＲ＿ＲＥＧ１０６０へのソフトウェア書き込みによって、このフィールドはネゲートされる。ＦＬＯフィールド１０６４は、ＤＭＡリマッピング回路１３５によってアサートされて、フォールトログオーバーフロー状態を示す。ＥＲＲ＿ＲＥＧ１０６０へのソフトウェア書き込みによって、このフィールドはネゲートされる。ＩＮＶフィールド１０６８は、アサートされて、ＤＭＡリマッピング回路１３５レジスタのうちの１つのレジスタにおける或るレジスタの無効なプログラミングを示す。ＥＲＲ＿ＲＥＧ１０６０へのソフトウェア書き込みによって、このフィールドはネゲートされる。
【０１４５】
フォールト処理フィールド１０７０は、フォールト処理ディセーブルフィールド（ＦＰＤ）１０７２、最初のフォールトのみの処理（ＰＦＦＯ）フィールド１０７４、最初のフォールト上のブロック（ＢＯＦＦ）フィールド１０７６、及びフォールト保留ステータス（ＦＰＳ）フィールド１０７８を含む。
【０１４６】
ＦＰＤフィールド１０７２は、対応するコンテキストエントリーを通じて処理されたＤＭＡ要求からのフォールトの処理をイネーブル又はディセーブルする。ＦＰＤフィールド１０７２は、ネゲートされている時、フォールト処理が、このコンテキストエントリーを通じて処理されたＤＭＡ要求についてイネーブルされていることを示す。ＤＭＡリマッピング回路１３５は、ＰＦＦＯフィールド１０７４のプログラミングに基づいてフォールトを処理する。ＦＰＤフィールド１０７２は、アサートされている時、フォールト処理が、このコンテキストエントリーを通じて処理されたＤＭＡ要求についてディセーブルされていることを示す。
【０１４７】
ＰＦＦＯフィールド１０７４は、対応するコンテキストエントリーを通じて処理されたＤＭＡ要求について最初のフォールトのみを記録して報告することをＤＭＡリマッピング回路１３５に指定するのに使用される。ＤＭＡリマッピング回路１３５は、フォールト保留ステータス（ＦＰＳ）フィールド１０７８を使用して、この振る舞いを提供する。ＰＦＦＯフィールド１０７４がネゲートされている時、ＤＭＡリマッピング回路１３５は、すべてのフォールトを記録する。ＰＦＦＯフィールド１０７４がアサートされている時、ＤＭＡリマッピング回路１３５は、ＦＰＳフィールド１０７８をチェックして、フォールトを記録すべきか否かを判断する。ＦＰＳフィールド１０７８がアサートされている場合、フォールトは無視される。ＦＰＳフィールド１０７８がネゲートされている場合、フォールトは次のように処理される。すなわち、ＦＰＳフィールド１０７８をアサートする；次に、フォールトログレジスタが、フォールトログがイネーブルされていることを指定し、且つ、フォールトログがフルでない場合、フォールトはフォールトログに記録される。フォールトログがフルである場合、エラーステータスレジスタ１０６０のＦＬＯフィールド１０６４がアサートされる。
【０１４８】
ＢＯＦＦフィールド１０７６は、ＰＦＦＯフィールド１０７４がアサートされている時にのみ有効である。フォールト時、ＤＭＡリマッピング回路１３５は、ＰＦＦＯフィールド１０７４を評価した後、このフィールドを評価する。ＢＯＦＦフィールド１０７６がネゲートされている時、フォールトは、ＰＦＦＯフィールド１０７４の設定に従って処理される。ＢＯＦＦフィールド１０７６がアサートされている時、ＰＦＦＯフィールド１０７４の処理が、ＦＰＳフィールド１０７８をアサートさせる場合、コンテキストエントリーのＰフィールドはネゲートされる。ＤＭＡリマッピング回路１３５は、このコンテキストエントリーを使用して、存在（Ｐ）フィールドに対する更新が、その後のすべてのＤＭＡ要求の処理に可視的であることを確実にする。
【０１４９】
ＦＰＳフィールド１０７８は、ＰＦＦＯフィールド１０７４と共に使用される。ＰＦＦＯフィールド１０７４がアサートされ、且つ、ＦＰＳフィールド０７８がアサートされている場合、ＤＭＡリマッピング回路１３５は、対応するコンテキストエントリーを使用してＤＭＡ要求を処理している時に検出されたすべてのフォールトを無視する。ソフトウェアは、このフィールドをネゲートし、コンテキストエントリーキャッシュをフラッシュして、このコンテキストエントリーを通じて処理されたＤＭＡ要求のフォールトの記録を再開する。ＰＦＦＯフィールド１０７４がアサートされ、且つ、ＦＰＳフィールド１０７８がネゲートされている場合、ＤＭＡリマッピング回路１３５は、コンテキストエントリーを通じて処理されたＤＭＡ要求から最初のフォールトが検出された時に、ＦＰＳフィールド１０７８をアサートする。
【０１５０】
図１１は、本発明の一実施の形態によるフォールト記録１１００を示す図である。フォールト記録１１００は、ＡＤＤＲフィールド１１１０、長さ（Ｌ）フィールド１１２０、タイプ（Ｔ）フィールド１１３０、フォールト原因（ＦＲ）フィールド１１４０、及びソース識別子（ＳＩＤ）フィールド１１６０を含む。
【０１５１】
ＡＤＤＲフィールド１１０は、フォールトしたＤＭＡ要求のアドレスである。最下位ホストアドレス幅ビットは、フォールトしたアドレスを含む。Ｌフィールド１１２０は、フォールトしたＤＭＡ要求のデータペイロードサイズ（たとえば、ＤＷＯＲＤの個数）である。Ｔフィールド１１３０は、フォールトしたＤＭＡ要求のメモリアクセスタイプである。Ｔフィールド１１３０は、ネゲートされている時、ＤＭＡ書き込みを示す。Ｔフィールド１１３０は、アサートされている時、ＤＭＡ読み出しを示す。ＦＲフィールド１１４０は、ＤＭＡ要求がフォールトした原因を示す。ＦＲフィールド１１４０は、コンテキストでブロックされたトランザクション１１４２、超過メモリ空間１１４４、ページテーブルでブロックされたトランザクション１１４６、禁止された読み出し／書き込み１１４８、無効コンテキストエントリープログラミング１１５０、無効ページテーブルエントリープログラミング１１５２、及び交差したページ境界１１５４を含む。ＳＩＤフィールド１１６０は、フォールトしたＤＭＡ要求のリクエスタ識別子である。
【０１５２】
図１２は、本発明の一実施の形態によるフォールト処理を実行するプロセス１２００を示すフローチャートである。
【０１５３】
ＳＴＡＲＴすると、プロセス１２００は、ソース識別子ＳＩＤを有する、アドレスＧＰＡに対するＩ／Ｏトランザクションのフォールトを検出する（ブロック１２１０）。次に、プロセス１２１０は、フォールトログ記録がイネーブルされているか否かを判断する（ブロック１２１５）。イネーブルされていない場合、プロセス１２００は終了する。イネーブルされている場合、プロセス１２００は、このフォールトが保留フォールトであるか否かを判断する（ブロック１２２０）。保留フォールトである場合、プロセス１２００は終了する。保留フォールトでない場合、プロセス１２００は、最初のフォールトのみをログ記録することが要求されているか否かを判断する（ブロック１２２５）。要求されていない場合、プロセス１２００はブロック１２５０に進む。要求されている場合、プロセス１２００は、フォールトが保留されていることを示すフラグ又はステータス指示子をセットする（ブロック１２３０）。
【０１５４】
次に、プロセス１２００は、最初のフォールトをブロックすることが要求されているか否かを判断する（ブロック１２３５）。要求されていない場合、プロセス１２００は、ブロック１２５０に進む。要求されている場合、プロセス１２００は、ページテーブルエントリーを「存在しない」ものとしてマーキングする（ブロック１２４０）。次に、プロセス１２００は、フォールト保留フィールド及び存在フィールドを有するコンテキストエントリーをメモリにライトバックする（ブロック１２４５）。次に、プロセス１２００は、フォールト記録をログ記録し（ブロック１２５０）、その後、終了する。
【０１５５】
図１３は、本発明の一実施の形態によるフォールト記録をログ記録するプロセス１２５０を示すフローチャートである。
【０１５６】
ＳＴＡＲＴすると、プロセス１２５０は、フォールトログがフルであるか否かを判断する（ブロック１３１０）。フルである場合、プロセス１２５０は、フォールトオーバーフローステータス又はフォールトオーバーフローフラグをアサートし（ブロック１３１５）、その後、終了する。フルでない場合、プロセス１２５０は、フォールトが同じデバイスによって引き起こされたか否か、又は、同じアドレスに対して引き起こされたか否かを判断する（ブロック１３２０）。これは、現在のＳＩＤを前に保存されたＳＩＤと比較することによるか、又は、現在のＧＰＡを前に保存されたＧＰＡと比較することによって行うことができる。フォールトが同じデバイスによって引き起こされるか、又は、同じアドレスに対して引き起こされる場合、プロセス１２５０は、そのデバイス又はそのアドレスのフォールトカウントをインクリメント又は更新する（ブロック１３２５）。次に、プロセス１２５０は、現在のフォールト記録のフォールトカウントを更新し（ブロック１３３０）、その後、終了する。フォールトが同じデバイスによっても、同じアドレスに対しても引き起こされたものでない場合、プロセス１２５０は、フォールトカウントを１にセットする（ブロック１３３５）。次に、プロセス１２５０は、ＳＩＤ、ＧＡＰ、及び現在のフォールトのフォールトログポインタを更新する（ブロック１３４０）。次に、プロセス１２５０は、フォールト記録をフォールトログに書き込み（ブロック１３４５）、その後、終了する。
【０１５７】
本発明をいくつかの実施の形態の点から説明してきたが、当業者は、本発明が、説明した実施の形態に限定されず、添付の特許請求の範囲の精神及び範囲内にある変更及び改変を伴って実施できることを認識する。この説明は、したがって、限定ではなく例示としてみなされるべきである。
【図面の簡単な説明】
【０１５８】
【図１】本発明の一実施の形態を実施できるシステムを示す図である。
【図２】本発明の一実施の形態による入出力（Ｉ／Ｏ）デバイス割り当てを示す図である。
【図３】本発明の一実施の形態によるダイレクトメモリアクセス（ＤＭＡ）リマッピングを使用した仮想化を示す図である。
【図４】本発明の一実施の形態によるＩ／Ｏアドレス変換を示す図である。
【図５】本発明の一実施の形態によるＤＭＡリマッピング構造体を示す図である。
【図６】本発明の一実施の形態による共通レジスタを含むレジスタセットを示す図である。
【図７】本発明の一実施の形態によるアドレスフィルタリングレジスタを含むレジスタセットを示す図である。
【図８Ａ】本発明の一実施の形態によるルートエントリーを示す図である。
【図８Ｂ】本発明の一実施の形態によるコンテキストエントリーを示す図である。
【図８Ｃ】本発明の一実施の形態によるページテーブルエントリーを示す図であるである。
【図９Ａ】本発明の一実施の形態によるマルチレベルテーブルを使用するアドレス変換構造体を示す図である。
【図９Ｂ】本発明の一実施の形態によるシングルテーブルを使用するアドレス変換構造体を示す図である。
【図９Ｃ】本発明の一実施の形態によるベース／境界変換を使用するアドレス変換構造体を示す図である。
【図１０】本発明の一実施の形態によるフォールト処理レジスタを含むレジスタセットを示す図である。
【図１１】本発明の一実施の形態によるフォールト記録を示す図である。
【図１２】本発明の一実施の形態によるフォールト処理を実行するプロセスを示すフローチャートである。
【図１３】本発明の一実施の形態によるフォールト記録をログ記録するプロセスを示すフローチャートである。
【図１】
2008515057.tif 000003
【図２】
2008515057.tif 000004
【図３】
2008515057.tif 000005
【図４】
2008515057.tif 000006
【図５】
2008515057.tif 000007
【図６】
2008515057.tif 000008
【図７】
2008515057.tif 000009
【図８Ａ】
2008515057.tif 000010
【図８Ｂ】
2008515057.tif 000011
【図８Ｃ】
2008515057.tif 000012
【図９Ａ】
2008515057.tif 000013
【図９Ｂ】
2008515057.tif 000014
【図９Ｃ】
2008515057.tif 000015
【図１０】
2008515057.tif 000016
【図１１】
2008515057.tif 000017
【図１２】
2008515057.tif 000018
【図１３】
2008515057.tif 000019
【国際調査報告】
2008515057.tif 000020
2008515057.tif 000021
2008515057.tif 000022