(57)【要約】仮想入出力メモリ管理ユニット（ＩＯＭＭＵ）は、入出力（Ｉ／Ｏ）装置に関連するメモリ要求の周辺にファイアウォールを提供するように構成されている。仮想ＩＯＭＭＵは、ゲストページテーブル、ホストページテーブルおよびゼネラルコントロールレジスタ（すなわちＧＣＲ３）テーブルを含むデータ構造を使用する。ゲストページテーブルは、仮想ＩＯＭＭＵの要求速度をサポートするために、ハードウェア内で実行される。ＧＣＲ３テーブルは、デバイステーブル内に記憶された仮想デバイスＩＤパラメータを用いて索引付けられている。【選択図】図１
2015526829.tif 000002
【特許請求の範囲】
【請求項１】
仮想Ｉ／Ｏメモリ管理ユニット（ＩＯＭＭＵ）が、入出力（Ｉ／Ｏ）装置によるメモリ要求を受信することであって、前記メモリ要求はゲスト仮想アドレスを含む、ことと、
前記仮想ＩＯＭＭＵが、ゲストページテーブルを用いて前記ゲスト仮想アドレスをゲスト物理アドレスに変換することであって、前記ゲストページテーブルはゲストＯＳ（オペレーティングシステム）によって維持されている、ことと、
前記仮想ＩＯＭＭＵが、ホストページテーブルを用いて前記ゲスト物理アドレスをシステム物理アドレスに変換することであって、前記ホストページテーブルはハイパーバイザによって維持されている、ことと、
を含む、方法。
【請求項２】
前記ゲストページテーブルはハードウェアの形態で実装されている、請求項１に記載の方法。
【請求項３】
前記Ｉ／Ｏ装置に関連する仮想デバイスＩＤによって索引付けられたゼネラルコントロールレジスタ（ＧＣＲ３）テーブル内のエントリを識別することであって、前記仮想デバイスＩＤは前記仮想ＩＯＭＭＵ内のデバイステーブルに記憶されている、ことをさらに含む、請求項１に記載の方法。
【請求項４】
前記ＧＣＲ３テーブル内の前記エントリに基いて、前記ゲストページテーブルにアクセスすることをさらに含む、請求項３に記載の方法。
【請求項５】
ソフトウェアを用いて前記仮想ＩＯＭＭＵ内のデバイステーブルを仮想化することをさらに含む、請求項１に記載の方法。
【請求項６】
前記仮想ＩＯＭＭＵに関連するコントロールレジスタ、構成レジスタ、エラーレポートレジスタ、ログおよび割り込み再マッピングテーブルのうち少なくとも１つを、ソフトウェアを用いて仮想化することをさらに含む、請求項１に記載の方法。
【請求項７】
前記ホストページテーブルおよび前記ゲストページテーブルに同一のフォーマットを使用することと、
仮想化モードにおいてホストテーブルとして前記ゲストページテーブルの使用を区別するように、デバイステーブル内のコントロールビットを使用することと、をさらに含む、請求項１に記載の方法。
【請求項８】
前記ゲスト仮想アドレスが、前記Ｉ／Ｏ装置について前記ゲストＯＳによって権限が与えられたアドレスの有効範囲内であるかどうかを判断するために、前記仮想ＩＯＭＭＵが、前記ゲスト仮想アドレスを検証することと、
前記ゲスト仮想アドレスが、前記Ｉ／Ｏ装置について前記ゲストＯＳによって権限が与えられたアドレスの有効範囲内でない場合には、前記メモリ要求を、前記ゲスト仮想アドレスのアクセスから除外することと、をさらに含む、請求項１に記載の方法。
【請求項９】
前記ハイパーバイザが、仮想マシンを管理することであって、前記仮想マシンは前記ゲストＯＳの動作をサポートするように構成されていることをさらに含む、請求項１に記載の方法。
【請求項１０】
Ｉ／Ｏ装置により送信されたメモリ要求を受信するように構成された仮想ＩＯＭＭＵを備える装置であって、
前記メモリ要求はゲスト仮想アドレスを含み、
前記仮想ＩＯＭＭＵは、
前記ゲスト仮想アドレスをゲスト物理アドレスに変換するように構成されたゲストページテーブルであって、ゲストＯＳによって維持されるゲストページテーブルと、
前記ゲスト物理アドレスをシステム物理アドレスに変換するように構成されたホストページテーブルであって、ハイパーバイザによって維持されるホストページテーブルと、
を含むデータ構造を備える、
装置。
【請求項１１】
前記ゲストページテーブルはハードウェアの形態で実装されている、請求項１０に記載の装置。
【請求項１２】
前記Ｉ／Ｏ装置に関連する仮想デバイスＩＤによって索引付けられるように構成されたＧＣＲ３テーブルをさらに備え、前記仮想デバイスＩＤは前記仮想ＩＯＭＭＵ内のデバイステーブルに記憶されている、請求項１０に記載の装置。
【請求項１３】
前記ゲストページテーブルは、前記ＧＣＲ３テーブル内の索引付けられたエントリに基いてアクセスされるように構成されている、請求項１２に記載の装置。
【請求項１４】
デバイステーブルは、ソフトウェアを用いて前記仮想ＩＯＭＭＵ内に仮想化されるように構成されている、請求項１０に記載の装置。
【請求項１５】
前記仮想ＩＯＭＭＵに関連するコントロールレジスタ、構成レジスタ、エラーレポートレジスタ、ログおよび割り込み再マッピングテーブルのうち少なくとも１つは、ソフトウェアを用いて仮想化されている、請求項１０に記載の装置。
【請求項１６】
前記ホストページテーブルおよび前記ゲストページテーブルは同一のフォーマットを使用しており、
デバイステーブルは、仮想化モードにおいてホストテーブルとして前記ゲストページテーブルの使用を区別するように、コントロールビットを使用する、請求項１０に記載の装置。
【請求項１７】
前記仮想ＩＯＭＭＵは、前記ゲスト仮想アドレスが、前記Ｉ／Ｏ装置について前記ゲストＯＳによって権限が与えられたアドレスの有効範囲内であるかどうかを判断するために、前記ゲスト仮想アドレスを検証するように構成されている、請求項１０に記載の装置。
【請求項１８】
前記ゲスト仮想アドレスが、前記Ｉ／Ｏ装置について前記ゲストＯＳによって権限が与えられたアドレスの有効範囲内でない場合に、前記ゲストＯＳは、前記メモリ要求の実行を除外する、請求項１０に記載の装置。
【請求項１９】
前記ゲストＯＳの動作をサポートするように構成された仮想マシンをさらに備え、前記仮想マシンは前記ハイパーバイザによって管理される、請求項１０に記載の装置。
【請求項２０】
記憶された命令を有するコンピュータ可読記憶装置であって、計算装置によって前記命令が実行されると、前記計算装置に、
Ｉ／Ｏ装置が送信したメモリ要求を受信するように構成された仮想ＩＯＭＭＵを備える装置であって、
前記メモリ要求はゲスト仮想アドレスを含み、
前記仮想ＩＯＭＭＵは、
前記ゲスト仮想アドレスをゲスト物理アドレスに変換するように構成されたゲストページテーブルであって、ゲストＯＳによって維持されるゲストページテーブルと、
前記ゲスト物理アドレスをシステム物理アドレスに変換するように構成されたホストページテーブルであって、ハイパーバイザによって維持されるホストページテーブルと、
を含むデータ構造を備える、装置をエミュレートさせる、
コンピュータ可読記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
開示された実施形態は、概してコンピュータシステム、特に入主力（Ｉ／Ｏ）装置のためのメモリ管理ユニットに関する。
【背景技術】
【０００２】
現代社会では、パーソナルコンピュータ（ＰＣ）、ワークステーション、サーバ、種々の携帯情報端末（ＰＤＡ）装置などを含む種々のタイプのコンピュータシステムが至る所に存在する。全てでなくとも多くのこれらのコンピュータシステムは、プロセッサのメモリアクセスについてのメモリ管理機能を実装してきた。通常、メモリ管理機能は、種々のメモリ保護（例えば、読み出しのみ、読み出し／書き込み、特権レベル必要条件など）とともに、各プロセスにより使用される仮想アドレス空間から実際のシステムメモリに及ぶ物理アドレス空間へのアドレス変換を含む。メモリ管理機能は、各プロセスによって使用されるメモリを、権限が与えられていない他のプロセスによるアクセスから保護し、物理メモリシステムがそれ程大きくない場合でもプロセスが大きな仮想空間を使用することを可能にし、仮想アドレスを、プロセスが関与することなく利用可能な物理メモリへ再配置する、などのように様々な使用法を有する。
【０００３】
また、コンピュータシステムの入出力（Ｉ／Ｏ）装置が使用するアドレスは、頻繁に変換されるプロセッサアドレスと同様に、変換され得る。すなわち、Ｉ／Ｏ装置は、メモリにアクセスするために、物理アドレスではなく仮想アドレスを用いることができる。装置が物理アドレスではなく仮想アドレスを使用することは、今日のシステムにおいて、システム全体のセキュリティを向上するので望ましい。悪意のある装置（または、悪意のあるソフトウェアエージェントによりプログラムされた装置）の物理アドレスの使用は、メモリアクセスが阻止される結果となるであろう。
【０００４】
多くのＰＣなどのシングルオペレーティングシステム（ＯＳ）のコンピュータシステムでは、ＯＳは、他のプロセス（アプリケーションおよびＯＳサービス）によるＩ／Ｏ装置へのアクセスを制御する。従って、ＯＳは、どのプロセスが所定の装置へのアクセスを有しているのかを常時制御可能であり、装置によってアクセスされるアドレスを少なくとも幾らか制御可能である。仮想マシンシステムは、仮想マシンモニタ上で実行中の複数のゲストＯＳを有し得るので、より複雑である。仮想化されたシステムでは、多数のアプリケーションおよびＩ／Ｏ装置が、仮想アドレスの使用を通して物理メモリにアクセスする。Ｉ／Ｏメモリユニットは、Ｉ／Ｏ装置およびシステムメモリに接続されており、ＩＯＭＭＵは、装置メモリ要求内の仮想アドレスを物理アドレスに変換して、物理システムメモリにアクセスするように構成されている。
【０００５】
今日のコンピューティング環境は、仮想マシン（ＶＭ）環境を有し、ＶＭ環境では、複数のＶＭが分離した論理オペレーティングエンティティとしてシングルプロセッサシステム上で実行可能である。通常、論理的に分離されたＶＭは、ハードウェア装置およびデバイスドライバなどのようなプロセッサシステムの共用リソースを共有する。これらの複数のＶＭの共存を管理し、共用リソースとの情報交換およびＶＭ間の情報交換を可能にするため、ＶＭ環境は、多くの場合、仮想マシンモニタ（ＶＭＭ）またはハイパーバイザを使用する。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
セキュリティおよび安定性は、多くのコンピュータシステム、特にＶＭ環境で重要な問題である。従来のコンピュータシステムでは、周辺装置およびこれらに関連するデバイスドライバは、自由で拘束されないメモリアクセスを有する。このような拘束されないアクセスは、破損し、または、正常に機能しない装置またはデバイスドライバが、周辺装置の使用のためにメモリ位置が確保されていたかどうかにかかわらず、メモリ内のあらゆる位置に書き込み可能であることを意味する。オペレーティングシステムの使用のために確保されたメモリ位置が、正常に機能しない装置によって上書きされる場合には、システムクラッシュがほぼ避けられない結果になる。コンピュータシステムのユーザは安定性を要求しており、メモリ破損によるシステムクラッシュの最小化が求められる。
【０００７】
各周辺装置およびこれに関連するドライバに割り当てられたメモリ周辺にファイアウォールを構成し、不適切なメモリアクセスを防ぐことが必要である。また、ＶＭ環境内の不適切なメモリアクセスを防ぐ、ＶＭ内の仮想ＩＯＭＭＵが必要である。さらに、結果として生じる入出力応答が十分迅速であるように、かかるファイアウォールが実行されることが必要である。
【課題を解決するための手段】
【０００８】
いくつかの実施形態では、ゲストＶＭ内の仮想化されたＩＯＭＭＵが提供される。仮想ＩＯＭＭＵは、ゲストページテーブル、ホストページテーブルおよびゼネラルコントロールレジスタ（例えばＧＣＲ３）テーブルを含むデータ構造を用いる。ゲストページテーブルは、仮想ＩＯＭＭＵの要求速度をサポートするために、ハードウェアに実装されている。ＧＣＲ３テーブルは、デバイステーブルに記憶された仮想デバイスＩＤパラメータを用いて索引付けられる。ゲストページテーブルのフォーマットはホストページテーブルのフォーマットと同一であり、デバイステーブル内のコントロールビットは、ゲストページテーブルの異なる使用間を区別するのに用いられる。
【０００９】
さらなる実施形態、開示された実施形態の機能および利点、ならびに、種々の実施形態の構造および動作を、添付の図面を参照して詳細に後述する。
【００１０】
本明細書に含まれ、本明細書の一部を構成する添付の図面は、開示された実施形態を示し、開示された実施形態の原理を本明細書の記載とともに説明し、当業者が、開示された実施形態を実施および使用するのを可能にするように機能する。
【図面の簡単な説明】
【００１１】
【図１】いくつかの実施形態によるコンピュータシステムを示す図である。
【図２】いくつかの実施形態によるＩＯＭＭＵアーキテクチャを示す図である。
【図３】いくつかの実施形態による、仮想ＩＯＭＭＵを用いた入出力（Ｉ／Ｏ）装置によるメモリアクセスの方法を示すフローチャートである。
【発明を実施するための形態】
【００１２】
開示された実施形態の特徴および利点は、図面と併せて後述の詳細な記載を参照することで明らかになり、図面の同一の参照符号は、図面全体にわたって対応する構成要素を示す。図面の同一の参照番号は、通常、同一の、機能的に同様の、および／または、構造的に同様の構成要素を示す。構成要素が最初に表れる図は、対応する参照番号の一番左の桁で示されている。
【００１３】
背景として、仮想化および仮想などの用語は、計算技術の意味に従って使用する。特に、仮想化とは、システム、アプリケーションおよびエンドユーザによるアプローチが基本的なリソースと簡単に対話できるように、当該リソースの物理的特性を隠すために使用される技術をいう。例えば、仮想化は、１つの物理リソース（例えばメモリ）が複数の論理リソースとして見えることを可能にする。よって、仮想化技術は、１つのコンピュータが多数の仮想マシンを実行可能であることを許可し、各仮想マシンは、利用可能なリソースを完全に補足しているように見え、他の仮想マシンに対するリソースの明らかな重複がないように見える。
【００１４】
図１を参照すると、いくつかの実施形態によるコンピュータシステム１０の簡略化されたハイレベル図を表すブロック図が示されている。図１に示すように、システム１０は、１つ以上のプロセッサ１２と、１つ以上の変換索引バッファ（ＴＬＢ）１６を有するメモリ管理ユニット（ＭＭＵ）１４と、メモリコントローラ（ＭＣ）１８と、メモリ２０と、１つ以上のＩ／ＯＴＬＢ（ＩＯＴＬＢ）２４を有する１つ以上のＩ／Ｏ装置２２と、テーブルウォーカ２８、キャッシュ３０、制御レジスタ３２および制御ロジック３４を有するＩ／ＯＭＭＵ（ＩＯＭＭＵ）２６と、を備える。プロセッサ１２は、ＭＭＵ１４に接続されており、ＭＭＵ１４は、メモリコントローラ１８に接続されている。Ｉ／Ｏ装置２２は、ＩＯＭＭＵ２６に接続されており、ＩＯＭＭＵ２６は、メモリコントローラ１８に接続されている。ＩＯＭＭＵ２６内では、テーブルウォーカ２８、キャッシュ３０、制御レジスタ３２および制御ロジック３４は、互いに接続されている。
【００１５】
さらに後述するように、ＩＯＭＭＵ２６は、システム１０の仮想化を単純化する種々の機能を有してもよい。仮想マシンの管理（基本的なハードウェア上での仮想マシンの実行のスケジューリング）や、種々のシステムリソースへのアクセスの制御などを行う仮想マシンモニタ（ＶＭＭ）については後述する。ＶＭＭは、たまにハイパーバイザとも呼ばれることを述べておく。開示された実施形態では、プロセッサ１２は、仮想化環境においてソフトウェアを実行中である。従って、３つの仮想マシン１００Ａ，１００Ｂ，１００Ｃ（例えばＶＭ１〜３）と、ＶＭＭ１０６とが示されている。所定の実施形態の仮想マシン１００の数は変化してもよく、仮想マシンがユーザにより開始および停止する場合、使用中に動的に変化し得る。開示された実施形態では、仮想マシン１００Ａは、１つ以上のゲストアプリケーション（Ａｐｐ）１０２と、ゲストオペレーティングシステム（ＯＳ）１０４とを有する。ＯＳ１０４は、システム１０の物理ハードウェアではなく、ＯＳ１０４のためにＶＭＭ１０６によって生成された仮想マシン１００を制御するので、「ゲスト」ＯＳと呼ぶ。また、同様に、ＶＭ１００ＢおよびＶＭ１００Ｃの各々は、１つ以上のゲストアプリケーション１０２と、ゲストＯＳ１０４とを有してもよい。
【００１６】
通常、仮想マシン１００内のアプリケーション１０２は、ゲスト仮想アドレス空間、つまりゲスト仮想アドレス（ＧＶＡ）を使用する。各仮想マシン１００のゲストＯＳ１０４は、仮想マシン１００内のゲスト「物理」アドレス（ＧＰＡ）に対するＧＶＡのマッピングを管理してもよい。ゲストＯＳ１０４が、ＶＭＭなしにシステム１０のハードウェア上で直接実行している場合には、ゲストＯＳ１０４によって生成される物理アドレスは、実際、システム１０内のメモリ位置のシステム物理アドレス（ＳＰＡ）であるだろう。しかし、仮想マシン環境では、ＶＭＭ１０６は、ＧＰＡからＳＰＡへのマッピングを管理してもよい。よって、プロセッサ１２がメモリ要求を実行する場合、ゲストＯＳ１０４は、ＧＶＡからＧＰＡへのマッピング（ＶＭＭ１０６によってさらにＳＰＡにマッピングしてもよい）を管理してもよい。
【００１７】
図１に示すように、Ｉ／Ｏ装置２２からメモリ２０へのパスは、プロセッサ１２からメモリ２０へのパスと少なくとも部分的に分離している。特に、Ｉ／Ｏ装置２２からメモリ２０へのパスは、ＭＭＵ１４を通過しない代わりに、ＩＯＭＭＵ２６を通過する。従って、ＭＭＵ１４は、Ｉ／Ｏ装置２２からのメモリ要求に対するメモリ管理を提供することができない。通常、メモリ管理は、１つのタイプの仮想アドレス（すなわち、ソフトウェアが使用してもよいアドレス）から物理アドレス（すなわち、メモリコントローラが使用してもよいアドレス）へのアドレス変換と、メモリ保護と、を含んでもよい。メモリ保護は、例えば、特権レベル要求、キャッシュ可能性およびキャッシュ制御（例えばライトスルーまたはライトバック）、コヒーレンシなどの種々の他の属性とともに、あるレベルの細分性（例えばページ）で、メモリの読み出しおよび／または書き込みアクセスを制御してもよい。種々の実施形態では、あらゆるセットのメモリ保護が実行されてもよい。いくつかの実施形態では、ＩＯＭＭＵ２６によって実行されるメモリ保護は、ＭＭＵ１４によって実行されるメモリ保護と、少なくともいくつかの点で異なってもよい。１つの実施形態では、ＩＯＭＭＵ２６によって実行されるメモリ保護を、ＩＯＭＭＵ２６およびＭＭＵ１４が使用する変換データを記憶する変換テーブルが共有され得るように、定義してもよい（しかし、説明を容易にするために、図１では分離して示す）。さらに後述するように、変換テーブル情報を共有するいくつかの実施形態では、特権を変更する場合などのように特定のページのレベルが上がった場合に、現時点では信頼できない可能性のある変換ページテーブルを更新するために、テーブルの再ウォークが必要となり得る。他の実施形態では、所望に応じて、ＩＯＭＭＵ２６とＭＭＵ１４との間で変換テーブルを共有しなくてもよい。
【００１８】
通常、Ｉ／Ｏ装置２２は、メモリ２０内のメモリ位置にアクセスするために、メモリ読み出しおよび書き込み要求などのメモリ要求を発行し、一部のケースでは変換要求を発行するように構成され得る。メモリ要求は、例えば、ダイレクトメモリアクセス（ＤＭＡ）読み出し動作または書き込み動作の一部であってもよい。ＤＭＡ動作は、プロセッサ１２によって実行されるソフトウェアによって開始され、ＤＭＡ動作を直接または間接的に実行するようにＩ／Ｏ装置２２をプログラムしてもよい。プロセッサ上で実行するソフトウェアが実行しているアドレス空間によっては、メモリ２０にアクセスするために、当該アドレス空間に対応するアドレスをＩ／Ｏ装置２２に提供してもよい。例えば、プロセッサ１２上で実行中のゲストアプリケーション（例えばＡｐｐ１０２）が、ＧＶＡをＩ／Ｏ装置２２に提供してもよく、一方で、プロセッサ１２上で実行中のゲストＯＳ（例えばＯＳ１０４）が、ＧＰＡをＩ／Ｏ装置２２に提供してもよい。何れの場合も、Ｉ／Ｏ装置２２がメモリアクセスを要求する場合には、メモリにアクセスするために、ＩＯＭＭＵ２６によってゲストアドレスを対応するＳＰＡに変換してもよく、アクセスのために、システム物理アドレスをメモリコントローラ１８に提供してもよい。すなわち、ＩＯＭＭＵ２６は、Ｉ／Ｏ装置２２によって発せられたメモリ要求を修正して、要求内の受信したアドレスをＳＰＡに変更（すなわち、変換）してもよく、メモリ２０にアクセスするために、メモリ要求をメモリコントローラ１８に転送してもよい。
【００１９】
種々の実施形態では、ＩＯＭＭＵ２６は、Ｉ／Ｏ装置から受信するアドレスのタイプによって、１レベル変換、２レベル変換または無変換を提供してもよい。より具体的には、ＩＯＭＭＵ２６は、１レベルのネストされた変換、または、２レベルのゲスト変換を実行してもよい。すなわち、ＩＯＭＭＵ２６は、ＧＰＡからＳＰＡへの変換（１レベル）と、ＧＶＡからＳＰＡへの変換（２レベル）と、の両方を提供してもよい。よって、上述したように、ゲストアプリケーション１０２は、メモリアクセスを要求する場合にＧＶＡアドレスをＩ／Ｏ装置２２に直接提供し、それによって、従来のＶＭＭの遮断および変換を不要にしてもよい。この機能は、例えば、オフロード計算、ユーザレベルのＩ／ＯおよびＩ／Ｏ装置の加速などの高度な計算アーキテクチャが、仮想化システムでよりシームレスに使用されるのを可能にしうる。１レベル変換、２レベル変換または無変換について記載しているが、他の実施形態では、レベルを追加したアドレス空間を使用してもよいと考えられる。そのような実施形態では、追加レベルの変換（すなわち、複数レベルの変換）は、追加のアドレス空間に適応するように、ＩＯＭＭＵ２６により実行されてもよい。
【００２０】
詳細に後述するように、ＩＯＭＭＵ２６は、所定の要求においてどのタイプのアドレスを受信しているか認識する手段を有する。従って、Ｉ／Ｏ装置２２がＰＣＩエクスプレス（ＰＣＩｅ）相互接続などの標準の周辺バスを介してＩＯＭＭＵ２６に接続されている実施形態では、例えば、プロセスアドレス空間識別子（ＰＡＳＩＤ）は、トランザクション層プロトコル（ＴＬＰ）プレフィックスを用いてＩＯＭＭＵ２６へ送信されてもよい。
【００２１】
ＩＯＭＭＵ２６は、メモリのアドレスとＩ／Ｏ装置２２からの変換要求とを変換するために、例えばメモリ２０に記憶された１つ以上のセットのＩ／Ｏ変換テーブル３６などのように、いくつかのデータ構造を使用してもよい。通常、変換テーブル３６は、１つのタイプのアドレスから他のタイプのアドレスへ変換するのに使用可能な変換データのテーブルであってもよい。変換テーブル３６は、任意の方法で変換データを記憶し得る。例えば、１つの実施形態では、Ｉ／Ｏ変換テーブル３６は、ｘ８６およびＡＭＤ６４（商標）命令セットアーキテクチャで定義されたページテーブルと同様のページテーブルを有してもよい。変換レベルによって、ゲスト仮想アドレスビットまたはゲスト物理アドレスの種々のサブセットが、テーブル３６のインデックスレベルに用いられてもよく、各レベルは、変換の終了（すなわち、変換に関する実際のページ番号の記憶）であってもよいし、（他のセットのアドレスビットで索引付けされた）他のテーブルを指してもよい。ページは、変換の単位であってもよい（すなわち仮想ページ内のそれぞれのアドレスが同一の物理ページに変換する）。ページは、例えば、４キロバイトから、メガバイトまたはギガバイトにまで及ぶ様々なサイズを有してもよい。
【００２２】
また、Ｉ／Ｏ変換テーブル３６は、（例えば、装置識別子によって）Ｉ／Ｏ装置をページテーブルのセットにマッピングするデバイステーブル（例えば、図２に示す）を有してもよい。装置識別子（ＩＤ）は、様々な方法で定義されてもよく、装置が取り付けられた周辺の相互接続によって決められてもよい。例えば、周辺構成機器相互接続（ＰＣＩ）装置は、バス番号、デバイス番号および機能番号（ＢＤＦ（登録商標））からデバイスＩＤを形成してもよい。ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（商標）（ＨＴ）装置は、バス番号およびユニットＩＤを使用してデバイスＩＤを形成してもよい。さらに後述するように、デバイステーブルは、デバイスＩＤによって索引付けられた複数のエントリを有してもよく、各エントリは、対応するデバイスＩＤを有する装置によって使用されるページテーブルのセットへのポインタを有してもよい。また、Ｉ／Ｏ装置２２がプロセスに直接割り当てられた状況、または、Ｉ／Ｏ装置２２がユーザプロセスと同一のアドレス空間内で計算を実行し得る状況では、メモリの分離保護を強化するために、過程アドレス空間がＩＯＭＭＵ２６によって識別および提供される。いくつかの実施形態では、デバイステーブルは、装置の割り込みを再マッピングするために、（例えば図２に示す）割り込み再マッピングテーブルへのポインタをさらに有してもよい。よって、一般には、ＧＶＡまたはＧＰＡからＳＰＡへの変換が、１つ以上の変換テーブル３６内の１つ以上のエントリ内に記憶されてもよく、いくつかのエントリは、他の変換と共有されてもよい。エントリからエントリへテーブルを横断または「ウォーク」することは、仮想アドレスに関する変換を識別する一部であってよい。１つの実施形態では、変換テーブル３６は、上記の割り込み再マッピングテーブルを有してもよい。
【００２３】
特に、図１に示すＩＯＭＭＵ２６は、所定のメモリ要求を変換するためにＩ／Ｏ変換テーブル３６を検索するテーブルウォーカ２８を有してもよい。テーブルウォーカ２８は、メモリ要求（例えば、変換テーブル３６から変換データを読み出すためのメモリ読み出し要求）を生成してもよい。変換テーブルの読み出しは、図１の点線の矢印３８，４０で示されている。
【００２４】
より迅速な変換を促進するために、ＩＯＭＭＵ２６は、いくつかの変換データをキャッシュしてもよい。例えば、キャッシュ３０は、ＴＬＢ（またはＩＯＴＬＢ）と同様の形態のキャッシュであってよく、以前の変換の結果や、システム物理ページ番号へのゲスト仮想ページ番号およびゲスト物理ページ番号のマッピングや、対応する変換データをキャッシュする。所定のメモリ要求に対する変換がキャッシュ３０内で検出されない場合には、テーブルウォーカ２８が起動され得る。種々の実施形態では、テーブルウォーカ２８は、ハードウェア内、または、マイクロコントローラもしくは他のプロセッサおよび対応する実行可能コード（例えば、ＩＯＭＭＵ２６内の読み出し専用メモリ（ＲＯＭ））内で実行されてもよい。また、他のキャッシュは、ページテーブルもしくはその一部、および／または、デバイステーブルもしくはその一部をキャッシュするように、キャッシュ３０の一部として含まれてもよい。従って、ＩＯＭＭＵ２６は、メモリ２０に記憶された変換データから読み出されまたは取得された変換データを記憶する、１つ以上のメモリを有してもよい。
【００２５】
図２は、いくつかの実施形態によるＩＯＭＭＵアーキテクチャのさらなる詳細を示す図である。例えばキャッシュ３０は、Ｉ／Ｏページテーブル２５２、デバイステーブル２２８および割り込み再マッピングテーブル（ＩＲＴ）２２６のキャッシュバージョンを有し得る。また、キャッシュ３０は、ＧＣＲ３テーブル２４２のキャッシュバージョンを有し得る。制御レジスタ３２は、デバイステーブルベースレジスタ（ＤＴＢＲ）２０４と、システム管理割り込み（ＳＭＩ）フィルタレジスタ２０６と、ハードウェアエラーレジスタ２０８と、イベントカウンタレジスタ２１２と、コマンドバッファベースレジスタ（ＣＢＢＲ）２１４と、イベントログベースレジスタ（ＥＬＢＲ）２１６と、ページ要求ログベースレジスタ（ＰＲＬＢＲ）２１８と、を有し得る。キャッシュ３０は、ＩＯＭＭＵ２６の内部に示されているが、実施形態の範囲は係る位置に限定されない。また、実施形態では、ＩＯＭＭＵ２６の外部に設置されたキャッシュ３０を含む。Ｉ／Ｏ装置の接続時にＩＯＭＭＵ２１０が検出されている場合には、ソフトウェアは、必要な制御およびデータ構造を確立するプロセスを開始する。例えば、ＩＯＭＭＵ２１０が設定された場合、ＩＯＭＭＵ２６は、ゲスト仮想高度プログラム可能な割り込みコントローラ（ＡＰＩＣ）ログ２０２と、デバイステーブルベースレジスタ（ＤＴＢＲ）２０４と、システム管理割り込み（ＳＭＩ）フィルタレジスタ２０６と、ハードウェアエラーレジスタ２０８と、イベントカウンタレジスタ２１２と、コマンドバッファベースレジスタ（ＣＢＢＲ）２１４と、イベントログベースレジスタ（ＥＬＢＲ）２１６と、ページ要求ログベースレジスタ（ＰＲＬＢＲ）２１８と、を有し得る。さらに、初期の設定の間、ＩＯＭＭＵ２１０は、適切なゲストページテーブルのベースポインタレジスタテーブルを選択するためのオペレータ（operator）を有し得る。ベースポインタレジスタテーブルは、例えば、現在のタスクに関するページディレクトリおよびページテーブルの両方を取り付けることによって仮想アドレスから物理アドレスを変換するために、ｘ８６マイクロプロセッサプロセスによって用いられるコントロールレジスタ３（ＣＲ３）２４２であり得る。
【００２６】
１つの例では、ゲストＣＲ３（ＧＣＲ３）変更は、変換の新たなセットを確立することが可能であり、従って、プロセッサ１２は、以前のコンテキストに関連するＴＬＢエントリを自動的に無効にしてもよい。また、ＩＯＭＭＵ２１０は、ページテーブルのウォークを実行する必要なしにその後の変換を行うのに用いられるアドレス変換をキャッシュするために１つ以上のＴＬＢ（図示せず）に関連付けられ得る。デバイステーブルからのアドレスは、ＩＯＭＭＵ２１０に通信可能である。
【００２７】
ＩＯＭＭＵ２１０は、データ構造が設定されると、ＤＭＡ動作アクセス、割り込み再マッピング、アドレス変換などの制御を開始してもよい。
【００２８】
ＩＯＭＭＵ２１０は、２レベル変換がサポートされるのを示すように、メモリ管理Ｉ／Ｏ（ＭＭＩＯ）を使用可能である。２レベル変換がサポートされると決定された場合、２レベル変換は、適切なデバイステーブルエントリ（ＤＴＥ）をプログラムすることによって始動される。ネストされたページングでは、ＤＴＥに関連するトランザクションは、ページテーブルルートポインタを有してもよく、ページテーブルルートポインタは、メモリ２２０内のＩ／Ｏページテーブル２５２についてのデータ構造のルートを指す。
【００２９】
いくつかの実施形態では、ＩＯＭＭＵ２１０は、ゲスト仮想高度プログラム可能な割り込みコントローラ（ＡＰＩＣ）構成２２４を有する。他の実施形態では、仮想化されたゲストＡＰＩＣをサポートするように設計されたアーキテクチャ機能を有するＩＯＭＭＵを含む。
【００３０】
また、システム２００はメモリ２２０を有し、メモリ２２０は追加のメモリブロック（図示せず）を有する。メモリコントローラ（図示せず）は、分離したチップ上に存在することが可能であり、または、プロセッサのシリコンに一体化され得る。メモリ２２０は、ＤＭＡおよびプロセッサアクティビティがメモリコントローラと通信するように構成されている。
【００３１】
１つの例では、メモリ２２０は、Ｉ／Ｏページテーブル２５２と、デバイステーブル２２８と、割り込み再マッピングテーブル（ＩＲＴ）２２６と、コマンドバッファ２３２と、イベントログ２３４と、ハイパーバイザなどのホスト変換モジュールと、を有する。また、Ｉ／Ｏページテーブル２５２、デバイステーブル２２８、割り込み再マッピングテーブル（ＩＲＴ）２２６のキャッシュされたバージョンは、ＩＯＭＭＵ２１０に含まれている。いくつかの実施形態では、ＧＣＲ３テーブル２４２は、ＩＯＭＭＵ２１０内にキャッシュされることが可能であり、一方、仮想ＡＰＩＣ２２４もキャッシュされてもよい。また、メモリ２２０は、例えばゲストＯＳ１およびゲストＯＳ２のように、同時に実行する１つ以上のゲストＯＳを有することが可能である。ハイパーバイザと、ゲストＯＳ１およびゲストＯＳ２とは、システムを仮想化するように動作するソフトウェア構造である。
【００３２】
ＩＯＭＭＵ２１０、ハードウェア装置が、従来のアプローチではハイパーバイザがしなければならない動作を行うことを許可されるので、ゲストＯＳは、システム２００のＩ／Ｏ装置に対してより直接に接続されている。
【００３３】
さらに、ＩＯＭＭＵ２１０およびメモリ２２０は、ＤＴＢＲ２０４がデバイステーブル２２８の開始インデックスを指すように初期化されてもよい。さらに、ＣＢＢＲ２１４は、コマンドバッファ２３２に記憶されたコマンドをＩＯＭＭＵ２１０が読み出しおよび実行可能となるように、コマンドバッファ２３２の開始インデックスに関連付けられている。ＥＬＢＲ２１６は、イベントログ２３４の開始インデックスを指す。ＰＲＬＢＲ２１８は、周辺ページサービス要求（ＰＰＳＲ）テーブル２３６の開始インデックスを指す。
【００３４】
ＩＯＭＭＵ２１０は、ＩＯＭＭＵ２１０と、ＣＰＵなどのシステムプロセッサとの間のコマンドおよびステータス情報の交換のために、メモリベースのキューを使用可能である。コマンドキューは、図２のコマンドバッファ２３２によって表わされている。コマンドバッファ２３２およびイベントログ２３４は、アクティブなＩＯＭＭＵ２１０の各々によって実装される。また、各ＩＯＭＭＵ２１０は、Ｉ／Ｏページサービス要求キューを実装してもよい。
【００３５】
１つの例では、ＩＯＭＭＵ２１０は、有効になると、下流の装置から到着する要求（例えば、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（商標）リンクまたはＰＣＩベースの通信を用いて通信してもよい）を傍受し、要求のパーミッションチェックおよびアドレス変換を実行し、変換されたバージョンを、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（商標）リンクを介して上流に、メモリ２２０のスペースへ送信する。他の要求は、変更されることなく通過してもよい。
【００３６】
ＩＯＭＭＵ２１０は、メモリ２２０のテーブルから読み出し、パーミッションチェック、割り込み再マッピングおよびアドレス変換を実行することが可能である。デッドロックがない動作を保証するために、デバイステーブル２２８、Ｉ／Ｏページテーブル２５２および割り込み再マッピングテーブル２２６に対するＩＯＭＭＵ２１０によるメモリアクセスは、等時性の仮想チャネルを使用可能であり、メモリ２２０内のアドレスを単に参照してもよい。ＩＯＭＭＵ２１０により生じたコマンドバッファ２３２、イベントログエントリ２３４および任意の要求キューエントリ（図示せず）への他のメモリ読み出しは、通常の仮想チャネルを使用可能である。
【００３７】
ＩＯＭＭＵ２１０が扱う全ての任意の装置要求について全体のテーブルルックアップ過程を実行する場合には、システム性能が実質的に低下する可能性がある。従って、ＩＯＭＭＵ２１０の実装は、ＩＯＭＭＵ２１０のメモリ内のテーブルの内容についての内部のキャッシュを保持すると予想される。動作中、ＩＯＭＭＵ２１０は、ＩＯＭＭＵ２１０によりキャッシュされたテーブルエントリを更新する場合、システムソフトウェアを使用して適切な無効化コマンドを送信可能である。
【００３８】
１つの例では、ＩＯＭＭＵ２１０は、通常の仮想チャネルを使用する可能性を伴って、メモリ２２０内のイベントログ２３４へ書き込む。ＩＯＭＭＵ２１０は、任意に、メモリ２２０内の周辺ページサービス要求キュー２３６に書き込み可能である。また、メモリ内の周辺ページサービス要求キュー２３６への書き込みは、通常の仮想チャネルを使用可能である。
【００３９】
１つの例では、ＩＯＭＭＵ２１０は、周辺ページ要求にサービスするためにメモリ内の要求キューを提供し、一方で、システムプロセッサＣＰＵは、故障メカニズムを使用する。何れかのＩ／Ｏ装置は、ＩＯＭＭＵ２１０からの変換を要求でき、ＩＯＭＭＵ２１０は、正常変換またはページフォルトで応答してもよい。
【００４０】
また、ホストＯＳは、Ｉ／Ｏ装置が開始したアクセスについて変換を実行してもよい。ＩＯＭＭＵ２１０がＩ／Ｏ装置によりアクセスされたメモリアドレスを変換する一方で、ホストＯＳは、所望の変換を特定するＩ／Ｏページテーブルを構成することによって、自身のページテーブルを設定してもよい。ホストＯＳは、新たに構成されたＩ／Ｏページテーブルを指すエントリをデバイステーブル内に生成してもよく、新たに更新されたデバイスエントリをＩＯＭＭＵに通知可能である。この時点で、（例えば、グラフィックスまたは他のＩ／Ｏ装置からの）対応するＩＯＭＭＵのＩ／ＯテーブルおよびホストＯＳのＩ／Ｏテーブルを、同一のテーブルにマッピングしてもよい。
【００４１】
ページ保護または変換上ホストＯＳが実行する任意の変更を、プロセッサＩ／ＯページテーブルおよびメモリＩ／Ｏページテーブルの両方で更新してもよい。
【００４２】
１つの例では、ＩＯＭＭＵ２１０は、典型的なハイパーバイザにより従来実行された
Ｉ／Ｏタスクを実行するように構成されている。この構成は、ハイパーバイザが保護、分離、割り込み再マッピングおよびアドレス変換のために介入する必要をなくす。しかし、ＩＯＭＭＵ２１０が処理不可能なページフォルトが起こる場合、ＩＯＭＭＵ２１０は、解決のために、ハイパーバイザによる介入を要求する場合がある。しかし、矛盾が解決されると、ＩＯＭＭＵ２１０は、再度のハイパーバイザの介入なしに元のタスクを続行可能である。
【００４３】
ハイパーバイザは、ゲストＶＭ１およびゲストＶＭ２を分離し隔離するために、ネストされた変換レイヤを使用可能である。Ｉ／Ｏ装置が何れかのＶＭのメモリスペースに含まれるように、Ｉ／Ｏ装置は、同時に実行中のゲストＶＭの何れかに直接割り当てられ得る。さらに、Ｉ／Ｏ装置２２は、ハイパーバイザまたは他のＶＭに属するメモリまたは他のＩ／Ｏ装置を破損または検査できない。ゲストＶＭ内には、カーネルアドレス空間およびいくつかのプロセス（ユーザ）アドレス空間が存在する。ゲストＶＭメモリの内容全体に比較的自由なアクセスをＩ／Ｏ装置が有するように、ネストされた変換情報を用いて、ゲスト変換レイヤを用いることなく、カーネル特権をＩ／Ｏ装置に与えることが可能である。
【００４４】
ユーザレベルの（プロセス）Ｉ／Ｏおよび高度の計算モデルを可能にするように、ゲスト変換レイヤは、ゲストプロセスおよびＩ／Ｏの分離および切り離しのために実行され得る。ＩＯＭＭＵ２１０内のゲスト変換を用いて任意のＩ／Ｏ装置をゲストＶＭ内のプロセスに直接割り当てることが可能であり、また、Ｉ／Ｏ装置は、ユーザプロセスと同一のアドレス空間で計算を実行可能である。適切な変換テーブルが使用されるように、プロセスアドレス空間は、ＩＯＭＭＵ２１０に識別され得る。すなわち、各メモリトランザクションは、プロセスアドレス空間ＩＤ（ＰＡＳＩＤ）でタグ付け可能である。より具体的には、１つの例のＰＡＳＩＤは、ｘ８６基準のゲストＶＭ内のアプリケーションアドレス空間を識別するのに使用されてもよい。ＰＡＳＩＤは、共有されたローカルメモリ内に常駐する並行したコンテキストを隔離するために、Ｉ／Ｏ装置上で使用可能である。
【００４５】
デバイスＩＤは、アドレス変換または割り込み再マッピング動作のためにネストされたマッピングテーブルを選択するように、ＩＯＭＭＵ２１０によって使用可能である。アプリケーションアドレス空間を一意的に識別するために、ＰＡＳＩＤおよびデバイスＩＤは共に使用される。
【００４６】
上述したように、安定性およびセキュリティ上の理由で、Ｉ／Ｏ装置２２のアクセスを、当該Ｉ／Ｏ装置２２について権限が与えられたメモリの一部にのみ限定することが望ましい。この普遍的な要望は、仮想化環境内でも同様によくあてはまる。仮想化環境では、ハイパーバイザは、ソフトウェアスタックの下部に（すなわち、ハードウェアの近くに）位置し、実際の物理ハードウェアを制御するのはハイパーバイザである。実際の物理ハードウェアの制御を通して、ハイパーバイザは、ハードウェアが実際に存在しない場合があるにもかかわらず、ハイパーバイザの上方のソフトウェアのピースに対するハードウェア専用のピースがあるという錯覚を生成する。従って、ハイパーバイザに基いて、それぞれのオペレーティングシステムが必要とされるハードウェアへの自身の所望のアクセスを有し、このため、それぞれのオペレーティングシステムが正常に動作するように見える。それぞれのオペレーティングシステムのハードウェア必要条件を満たすのに加え、ハイパーバイザは、ハードウェアの特定の部分をそれぞれのオペレーティングシステムから秘密にして隠す状態を維持することが可能である。よって、ハイパーバイザは、これらのオペレーティングシステムのそれぞれについて重ならないビューを保持することが可能である。
【００４７】
ゲストオペレーティングシステムとも呼ばれるオペレーティングシステムは、同一のデバイスドライバアクセスの懸念（すなわちセキュリティおよび安定性）を有するが、１つの重要な特質がある。その特質とは、ゲストオペレーティングシステムが直接のハードウェアアクセスまたは制御を有しないことである。むしろ上述したように、ハイパーバイザは、ＩＯＭＭＵ２１０内のホストハードウェア変換の責任を有する。言い換えれば、ハイパーバイザは、ホストハードウェア変換情報を利用可能であるが、係る情報は、ゲストオペレーティングシステムには利用可能でない。結果として、仮想化環境では、ハードウェアアクセスを権限の与えられた領域に限定するために、ゲストオペレーティングシステムは、Ｉ／Ｏ装置およびＩ／Ｏデバイスドライバ周辺でファイアウォールを形成できない。
【００４８】
仮想化環境のＩ／Ｏ装置についてのファイアウォール構造の１つのアプローチは、仮想化技術を用いてＩＯＭＭＵ２１０のソフトウェアバージョンを生成することである。しかし、係るアプローチは、係るソフトウェア実行の著しいオーバーヘッドによって、受け入れられない低速の解決結果をもたらすであろう。ファイアウォールのソフトウェア実行の受け入れ難さにさらに加わるのは、ソフトウェアが単に介在不可能な特定のイベントがあることである。例えば、デバイスドライバが正しく機能しているが、装置自身が正常に機能しないかウイルスにより破損されているなどの想定では、ソフトウェアは介在不可能である。特に、ソフトウェアは、係る保護メカニズムを形成する制御メカニズムを単に有しないので、結果として生じるハードウェアアクセスを隔離することができない。
【００４９】
図１を再度参照すると、いくつかの実施形態において、ゲストＯＳ１０４には、ゲストＶＭ１００内の仮想ＩＯＭＭＵについてハードウェアサポートが提供される。Ｉ／Ｏ装置２２が権限の与えられたメモリにのみ読み出しおよび書き込み可能で、それによって任意の他のメモリを破損できないように、係るハードウェアアプローチは、ゲストＶＭ１００がＩ／Ｏ装置２２周辺に所望のファイアウォールを設定することを可能にする。ハイパーバイザ１０６は、ゲストＶＭ１００を分離し隔離するために、通常、ネストされた変換レイヤを使用する。ゲストＶＭ１００に直接割り当てられたＩ／Ｏ装置２２は、仮想マシンのメモリ空間に制限される。Ｉ／Ｏ装置２２は、ハイパーバイザまたは他の仮想マシンに属するメモリまたは周辺装置を破損または検査するのが不可能である。ゲスト仮想マシン内には、カーネルアドレス空間およびいくつかのプロセス（ユーザ）アドレス空間が存在する。Ｉ／Ｏ装置がゲスト仮想マシンメモリの内容全体に比較的自由なアクセスを有するように、ネストされた変換情報を用いて、Ｉ／Ｏ装置には、通常、カーネル特権が与えられる。ユーザレベルの（プロセス）Ｉ／Ｏおよび高度の計算モデルを可能にするように、ゲストプロセスおよびＩ／Ｏの分離および切り離しのためにゲスト変換レイヤが導入される。仮想ＩＯＭＭＵ２１０内のゲスト変換を用いて、Ｉ／Ｏ装置２２をゲスト仮想マシン内のプロセスに直接割り当て可能であり、また、ＧＰＵは、ユーザプロセスと同一のアドレス空間で計算を実行可能である。
【００５０】
いくつかの実施形態では、仮想ＩＯＭＭＵは、ゲストページテーブル２５４と、ホストページテーブル２５６と、ＧＣＲ３テーブル２４２と、を含むデータ構造を使用する。仮想ＩＯＭＭＵは、Ｉ／Ｏ装置２２からメモリ要求を受信する。係るメモリ要求は、Ｉ／Ｏ装置２２に関連するゲスト仮想アドレスを含む。ゲスト仮想アドレスは、ゲストページテーブル２５４の使用を通してゲスト物理アドレスに変換される。ゲストＯＳ１０４は、ゲストページテーブル２５４を維持する。ゲスト物理アドレスは、ホストページテーブル２５６の使用を通してシステム物理アドレスに変換される。ハイパーバイザ１０６は、ホストページテーブル２５６を維持する。
【００５１】
よって、ゲストページテーブル２５４は、Ｉ／Ｏ装置２２のメモリ要求において、Ｉ／Ｏ装置２２による正しいゲスト仮想アドレスの使用を強制または検証する。特に、ゲストページテーブル２５４は、ゲスト仮想アドレスがＩ／Ｏ装置２２に関連するゲストＯＳ１０４によって権限が与えられたアドレスの有効範囲内にあることを保証する。ゲスト仮想アドレスが、Ｉ／Ｏ装置２２に関連するゲストＯＳ１０４によって権限が与えられたアドレスの有効範囲内にない場合には、メモリ要求は、ゲストページテーブル２５４によって、誤ったゲスト仮想アドレスにアクセスするのを阻止される。
【００５２】
ゲストページテーブル２５４は、ハードウェア内で仮想ＩＯＭＭＵの要求速度をサポートするよう実行され、ハードウェア内でファイアウォールを強制する。ＧＣＲ３テーブル２４２は、デバイステーブル２２８に記憶された仮想デバイスＩＤパラメータを用いて索引付けられている。仮想デバイスＩＤパラメータは、Ｉ／Ｏ装置２２に関連付けられている。ゲストページテーブル２５４は、仮想ＩＯＭＭＵのＧＣＲ３テーブル２４２内の索引付けられたエントリに基いてアクセスされる。
【００５３】
いくつかの実施形態では、ゲストページテーブル２５４およびホストページテーブル２５６のフォーマットは同一であり、デバイステーブル２２８内のコントロールビットは、仮想ＩＯＭＭＵ内のゲストページテーブル２５４の異なる使用間で区別するのに使用される。
【００５４】
仮想ＩＯＭＭＵのこの実施形態では、構成部分の仮想化は、ハードウェアアプローチおよびソフトウェアアプローチの両方を用いて実現される。上述したように、ゲストページテーブル２５４は、満足できる時間フレームでアドレス変換が実行されるのを確実にするように、ハードウェアを用いて実現される。仮想ＩＯＭＭＵの他の構成部分（例えば、ホストページテーブル２５６と、デバイステーブル２２８と、制御、構成およびエラーレポートレジスタ２０４，２０６，２０８，２１２，２１４，２１６，２１８と、ログ２０２，２２２，２３４，２３６と、割り込み再マッピングテーブル２２６）の仮想化は、従来のソフトウェアアプローチを用いて達成される。これらの特定の構成要素は、特に性能の影響を受けず、従って、ソフトウェア仮想化の使用に潜在するオーバーヘッドは、仮想ＩＯＭＭＵの実行において困難を全く示さない。
【００５５】
ＧＣＲ３テーブル２４２の変更に関して、このテーブルは、仮想ＧＣＲ３テーブルとなるように再利用される。従来の構成において、ＧＣＲ３テーブル２４２は、ＧＰＧＰＵ計算（すなわち、グラフィック処理ユニット上の汎用計算）をサポートするように設計される。従来の構成では、ＧＣＲ３テーブル２４２は、ＰＡＳＩＤ（プロセスアドレス空間ＩＤ）により索引付けられる。いくつかの実施形態では、ＧＣＲ３テーブル２４２は、仮想デバイスＩＤにより索引付けられる。係る索引付け処置は、デバイステーブル２２８内に仮想デバイスＩＤを配置することにより実現可能である。また、当業者が理解し得るように、他の索引付けアプローチも使用可能である。
【００５６】
図３は、いくつかの実施形態による、Ｉ／Ｏ装置２２から発したメモリ要求の周辺にファイアウォールを設ける方法のフローチャートである。図示される動作は異なる順序で実行されてもよく、場合によっては、全ての動作が必要とされない場合があることを理解すべきである。この方法は、機械可読な媒体に記憶された命令を読み出しおよび実行する１つ以上のプロセッサによって実行されてもよいことをさらに理解すべきである。
【００５７】
プロセスは、ステップ３１０で開始する。ステップ３１０では、仮想ＩＯＭＭＵは、入出力（Ｉ／Ｏ）装置によるメモリ要求を受信する。メモリ要求は、ゲスト仮想アドレスを含む。いくつかの実施形態では、仮想ＩＯＭＭＵは、ＩＯＭＭＵ２１０の仮想実行である。いくつかの実施形態では、アドレス変換情報は、Ｉ／Ｏページテーブルエントリ、デバイステーブルエントリおよび割り込み再マッピングテーブル情報のうち１つ以上を含む。
【００５８】
ステップ３２０では、仮想ＩＯＭＭＵ（例えば、ＩＯＭＭＵ２１０の仮想実行）内のゲストページテーブル（例えばゲストページテーブル２５４）は、ゲスト仮想アドレスをゲスト物理アドレスに変換する。ゲストページテーブル２５４は、ゲストＯＳ（例えば、ＯＳ１０４）により維持される。
【００５９】
ステップ３３０では、仮想ＩＯＭＭＵ２１０内のホストページテーブル（例えば、ホストページテーブル２５６）は、ゲスト物理アドレスをシステム物理アドレスに変換する。ホストページテーブル２５６は、ハイパーバイザ（例えば、ハイパーバイザ１０６）により維持される。
【００６０】
ステップ３４０では、ゲスト仮想アドレスは、Ｉ／Ｏ装置（例えば、Ｉ／Ｏ装置２２）についてゲストＯＳ１０４により権限が与えられたアドレスの有効範囲内であるかどうかを判断するために、検証される。
【００６１】
ステップ３５０では、ゲスト仮想アドレスがＩ／Ｏ装置２２についてゲストＯＳ１０４により権限が与えられたアドレスの有効範囲内でない場合には、仮想マシン上のメモリ要求の実行を阻止することが可能である。
【００６２】
ステップ３６０では、方法３００が終了する。
【００６３】
記載された実施形態、および、「いくつかの実施形態」との明細書内の記述は、記載された実施形態が、特定の機能、構造、特性を有し得ることを示しているが、全ての実施形態が、その特定の機能、構造、特性を必ずしも有していない場合がある。また、係る表現は、必ずしも同一の実施形態に言及していない。さらに、特定の機能、構造または特性が、特定の実施形態と関連して記載された場合には、明確に記載されたか否かにかかわらず、他の実施形態と関連して係る機能、構造または特性をもたらすことは、当業者の知識の範囲内であることが理解される。
【００６４】
本発明の実施形態は、ハードウェア、ファームウェア、ソフトウェア、または、それらの任意の組み合わせで実施されてもよい。本発明の実施形態は、機械可読な媒体に記憶された命令として実行されてもよく、命令は、１つ以上のプロセッサによって読み出しおよび実行されてもよい。例えば、仮想ＩＯＭＭＵを、機械可読な媒体に記憶された命令によりエミュレートしてもよく、命令は、１つ以上のプロセッサによって読み出しおよび実行されてもよい。機械可読な媒体は、機械（例えば、計算装置）により読み出し可能な形態の情報を記憶または送信するあらゆるメカニズムを有してもよい。例えば、機械可読な媒体は、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリ装置、電気、光、音、または、他の形態の伝搬された信号（例えば、搬送波、赤外線信号、デジタル信号など）などを含んでもよい。また、ファームウェア、ソフトウェア、ルーチン、命令は、特定のアクションを実行するものとして本明細書に記載されている場合がある。しかし、係る記載は、単に便宜上のものであり、係るアクションは、計算装置、プロセッサ、コントローラ、または、ファームウェア、ソフトウェア、ルーチン、命令などを実行する他の装置から実際にもたらされることを理解すべきである。
【００６５】
特定の機能の実行およびその関係を示す機能構造ブロックを活用して、実施形態を説明した。これらの機能構造ブロックの境界は、記載の簡便性のために本明細書内で独断で定義した。特定の機能およびその関係が適切に実行される限り、別の境界を定義することが可能である。
【００６６】
当業者の技能範囲内の知識を加えることによって、第三者が、発明の主題の全般的な概念から逸脱することなく、過度の実験なしに種々の適用そのような特定の実施形態を容易に変更および／または適合するように、特定の実施形態の上記の記載は、発明の主題の全般的な性質を十分に公開している。従って、係る適合および変更は、本明細書に示された教示および手引きに基き、開示された実施形態の意味および均等物の範囲内にあると意図される。本明細書の語句または用語が教示および手引きに照らして当業者に解釈されるように、本明細書内の用語または語句は、記載を目的としたものであって、限定するものではないと理解すべきである。
【図１】
2015526829.tif 000003
【図２】
2015526829.tif 000004
【図３】
2015526829.tif 000005
【手続補正書】
【提出日】平成27年5月14日(2015.5.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
仮想Ｉ／Ｏメモリ管理ユニット（ＩＯＭＭＵ）が、入出力（Ｉ／Ｏ）装置によるメモリ要求を受信することであって、前記メモリ要求はゲスト仮想アドレスを含む、ことと、
前記仮想ＩＯＭＭＵが、ゲストページテーブルを用いて前記ゲスト仮想アドレスをゲスト物理アドレスに変換することであって、前記ゲストページテーブルはゲストＯＳ（オペレーティングシステム）によって維持されている、ことと、
前記仮想ＩＯＭＭＵが、ホストページテーブルを用いて前記ゲスト物理アドレスをシステム物理アドレスに変換することであって、前記ホストページテーブルはハイパーバイザによって維持されている、ことと、
前記ゲスト仮想アドレスが、前記Ｉ／Ｏ装置について前記ゲストＯＳによって権限が与えられたアドレスの有効範囲内であるかどうかを判断するために、前記仮想ＩＯＭＭＵが、前記ゲスト仮想アドレスを検証することと、
前記ゲスト仮想アドレスが、前記Ｉ／Ｏ装置について前記ゲストＯＳによって権限が与えられたアドレスの有効範囲内でない場合には、前記メモリ要求を、前記ゲスト仮想アドレスのアクセスから除外することと、
を含む、方法。
【請求項２】
前記ゲストページテーブルはハードウェアの形態で実装されている、請求項１に記載の方法。
【請求項３】
前記Ｉ／Ｏ装置に関連する仮想デバイスＩＤによって索引付けられたゼネラルコントロールレジスタ（ＧＣＲ３）テーブル内のエントリを識別することであって、前記仮想デバイスＩＤは前記仮想ＩＯＭＭＵ内のデバイステーブルに記憶されている、ことをさらに含む、請求項１に記載の方法。
【請求項４】
前記ＧＣＲ３テーブル内の前記エントリに基いて、前記ゲストページテーブルにアクセスすることをさらに含む、請求項３に記載の方法。
【請求項５】
ソフトウェアを用いて前記仮想ＩＯＭＭＵ内のデバイステーブルを仮想化することをさらに含む、請求項１に記載の方法。
【請求項６】
前記仮想ＩＯＭＭＵに関連するコントロールレジスタ、構成レジスタ、エラーレポートレジスタ、ログおよび割り込み再マッピングテーブルのうち少なくとも１つを、ソフトウェアを用いて仮想化することをさらに含む、請求項１に記載の方法。
【請求項７】
前記ホストページテーブルおよび前記ゲストページテーブルに同一のフォーマットを使用することと、
仮想化モードにおいてホストテーブルとして前記ゲストページテーブルの使用を区別するように、デバイステーブル内のコントロールビットを使用することと、をさらに含む、請求項１に記載の方法。
【請求項８】
前記ハイパーバイザが、仮想マシンを管理することであって、前記仮想マシンは前記ゲストＯＳの動作をサポートするように構成されていることをさらに含む、請求項１に記載の方法。
【請求項９】
Ｉ／Ｏ装置により送信されたメモリ要求を受信するように構成された仮想ＩＯＭＭＵを備える装置であって、
前記メモリ要求はゲスト仮想アドレスを含み、
前記仮想ＩＯＭＭＵは、
前記ゲスト仮想アドレスをゲスト物理アドレスに変換するように構成されたゲストページテーブルであって、ゲストＯＳによって維持されるゲストページテーブルと、
前記ゲスト物理アドレスをシステム物理アドレスに変換するように構成されたホストページテーブルであって、ハイパーバイザによって維持されるホストページテーブルと、
を含むデータ構造を備え、
前記仮想ＩＯＭＭＵは、前記ゲスト仮想アドレスが、前記Ｉ／Ｏ装置について前記ゲストＯＳによって権限が与えられたアドレスの有効範囲内であるかどうかを判断するために、前記ゲスト仮想アドレスを検証するように構成されており、
前記ゲスト仮想アドレスが、前記Ｉ／Ｏ装置について前記ゲストＯＳによって権限が与えられたアドレスの有効範囲内でない場合に、前記ゲストＯＳは、前記メモリ要求の実行を除外する、
装置。
【請求項１０】
前記ゲストページテーブルはハードウェアの形態で実装されている、請求項９に記載の装置。
【請求項１１】
前記Ｉ／Ｏ装置に関連する仮想デバイスＩＤによって索引付けられるように構成されたＧＣＲ３テーブルをさらに備え、前記仮想デバイスＩＤは前記仮想ＩＯＭＭＵ内のデバイステーブルに記憶されている、請求項９に記載の装置。
【請求項１２】
前記ゲストページテーブルは、前記ＧＣＲ３テーブル内の索引付けられたエントリに基いてアクセスされるように構成されている、請求項１１に記載の装置。
【請求項１３】
デバイステーブルは、ソフトウェアを用いて前記仮想ＩＯＭＭＵ内に仮想化されるように構成されている、請求項９に記載の装置。
【請求項１４】
前記仮想ＩＯＭＭＵに関連するコントロールレジスタ、構成レジスタ、エラーレポートレジスタ、ログおよび割り込み再マッピングテーブルのうち少なくとも１つは、ソフトウェアを用いて仮想化されている、請求項９に記載の装置。
【請求項１５】
前記ホストページテーブルおよび前記ゲストページテーブルは同一のフォーマットを使用しており、
デバイステーブルは、仮想化モードにおいてホストテーブルとして前記ゲストページテーブルの使用を区別するように、コントロールビットを使用する、請求項９に記載の装置。
【請求項１６】
前記ゲストＯＳの動作をサポートするように構成された仮想マシンをさらに備え、前記仮想マシンは前記ハイパーバイザによって管理される、請求項９に記載の装置。
【請求項１７】
記憶された命令を有するコンピュータ可読記憶装置であって、計算装置によって前記命令が実行されると、前記計算装置に、
Ｉ／Ｏ装置が送信したメモリ要求を受信するように構成された仮想ＩＯＭＭＵを備える装置であって、
前記メモリ要求はゲスト仮想アドレスを含み、
前記仮想ＩＯＭＭＵは、
前記ゲスト仮想アドレスをゲスト物理アドレスに変換するように構成されたゲストページテーブルであって、ゲストＯＳによって維持されるゲストページテーブルと、
前記ゲスト物理アドレスをシステム物理アドレスに変換するように構成されたホストページテーブルであって、ハイパーバイザによって維持されるホストページテーブルと、
を含むデータ構造を備え、
前記仮想ＩＯＭＭＵは、前記ゲスト仮想アドレスが、前記Ｉ／Ｏ装置について前記ゲストＯＳによって権限が与えられたアドレスの有効範囲内であるかどうかを判断するために、前記ゲスト仮想アドレスを検証するように構成されており、
前記ゲスト仮想アドレスが、前記Ｉ／Ｏ装置について前記ゲストＯＳによって権限が与えられたアドレスの有効範囲内でない場合に、前記ゲストＯＳは、前記メモリ要求の実行を除外する、装置をエミュレートさせる、
コンピュータ可読記憶装置。
【国際調査報告】
2015526829.tif 000006
2015526829.tif 000007
2015526829.tif 000008