(57)【要約】【課題】パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換の装置、方法およびシステムの実施形態が開示される。【解決手段】ある実施形態では、装置がインターフェース、パーティション分割論理、第一のアドレス変換論理および第二のアドレス変換論理を含む。インターフェースがパーティション分割されたシステムにおいてメモリにアクセスする要求をデバイスから受け取る。パーティション分割論理は、前記デバイスが第一のパーティションに割り当てられているか、第二のパーティションに割り当てられているかを判別する。第一のアドレス変換論理は、第一のパーティション内の第一のゲスト・アドレスを第一のホスト・アドレスに変換する。第二のアドレス変換論理は、第二のパーティション内の第二のゲスト・アドレスを第二のホスト・アドレスに変換する。【選択図】図１
2014017012.tif 000002
【特許請求の範囲】
【請求項１】
パーティション分割されたシステムにおいてメモリにアクセスする要求をデバイスから受信するインターフェースと；
第一のパーティション中の第一のアドレス変換ハードウェアであって、ゲスト・アドレスを前記第一のパーティション中の第一のホスト・アドレスに変換する第一のアドレス変換ハードウェアと；
第二のパーティション中の第二のアドレス変換ハードウェアであって、前記ゲスト・アドレスを前記第二のパーティション中の第二のホスト・アドレスに変換する第二のアドレス変換ハードウェアと；
仮想機械から出て仮想機械モニタに移ることを引き起こすことなく前記デバイスが前記第一のパーティションに割り当てられているか前記第二のパーティションに割り当てられているかを判別し、前記デバイスが前記第一のパーティションに割り当てられていると判別するのに応答して前記要求を前記第一のアドレス変換ハードウェアに転送し、前記デバイスが前記第二のパーティションに割り当てられていると判別するのに応答して前記要求を前記第二のアドレス変換ハードウェアに転送するパーティション分割ハードウェアとを有する装置であって、
前記パーティション分割ハードウェアが、デバイス対パーティション割り当てを決定する探索モジュールと、前記探索モジュールによる以前のデバイス対パーティション割り当てをそれぞれ記憶する複数のエントリーを含むキャッシュとを含む、
装置。
【請求項２】
前記パーティション分割ハードウェアがさらに、前記探索モジュールによって使用される情報を記憶するデバイス・アクセス・マップを含む、請求項１記載の装置。
【請求項３】
前記パーティション分割ハードウェアがさらに、前記探索モジュールによる決定に応答してトランザクションを前記第一のアドレス変換ハードウェアに経路制御する経路制御モジュールをさらに含む、請求項１記載の装置。
【請求項４】
前記第一のアドレス変換ハードウェアが、変換を実行するためにデータ構造を参照し、前記データ構造は、メモリ・アクセス属性を記憶するメモリ・アクセス属性フィールドを含む、請求項１記載の装置。
【請求項５】
前記メモリ・アクセス属性フィールドが、対応するアドレスへのDMAトランザクションが許可されるかどうかを示す値を記憶する、請求項４記載の装置。
【請求項６】
前記メモリ・アクセス属性フィールドが、前記対応するアドレスへのDMAトランザクションに際してキャッシュが監視されるべきかどうかを示す第二の値を記憶する、請求項５記載の装置。
【請求項７】
パーティション分割されたシステムにおいてメモリにアクセスする要求をデバイスから受信する段階と；
前記デバイスが前記パーティション分割されたシステムにおける第一のパーティションに割り当てられているか第二のパーティションに割り当てられているかを判別する段階と；
パーティション分割論理のキャッシュ中に記憶するキャッシュ項目を生成する段階であって、各キャッシュ項目はデバイスについてのデバイス識別子および判別されたパーティションに割り当てられたアドレス変換論理の識別子を含む、段階と；
前記デバイスが前記第一のパーティションに割り当てられていると判別するのに応答して前記要求を前記第一のパーティションの第一のアドレス変換論理に転送する段階と；
メモリにアクセスする第二の要求を前記デバイスから受信する段階と；
前記キャッシュ中の前記キャッシュ・エントリーに基づいて前記第二の要求を前記第一のアドレス変換論理に経路制御する段階と；
前記デバイスの前記システムからの除去に応答して前記キャッシュ・エントリーを無効化する段階とを含む、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理の分野に係り、より詳細には情報処理システムのパーティション分割の分野に係る。
【背景技術】
【０００２】
一般に、情報処理システムにおけるパーティション分割（partitioning）の概念は、システムをパーティションに分けることをいう。ここで、各パーティションは、完全かつ独立なシステムとして運用されうるシステム資源の一群である。パーティションに割り当てられうるシステム資源は、プロセッサ、プロセッサ・コア（この場合、マルチコア・プロセッサの個々のコアが異なるパーティションに割り当てられうる）、システム・メモリの部分および入出力（「I/O」）装置を含む。
【０００３】
種々の型のパーティション分割が知られている。「ソフト」なパーティション分割では、システム資源はパーティション間で共有されてもよい。ソフト・パーティション分割の一つの形は仮想化である。これは、一つまたは複数のオペレーティング・システム（「OS」）の複数のインスタンスが単一のシステム上で走ることを許容するものであるが、各OSはシステムおよびその資源に対して完全で直接的な制御をもつよう設計される。仮想化は典型的には仮想機械モニタ（VMM:  virtual  machine  monitor）として知られるソフトウェアを使って実装される。これは、システムの物理的な資源を直接制御し、各OSに対して、そのOSが完全かつ直接的に制御しうる、一つまたは複数の仮想プロセッサを含む仮想資源を有する「仮想機械」（VM:  virtual  machine）を呈示する。VMMは、VM間で物理的な資源を要求および／または割り振りするといった仮想化ポリシーを実装するためのシステム環境（「仮想化環境」）を維持する。VM上で走る各OS、そして他の任意のソフトウェアは、「ゲスト」または「ゲスト・ソフトウェア」と称され、一方、「ホスト」または「ホスト・ソフトウェア」は仮想化環境の外で走るVMMのようなソフトウェアであり、仮想化環境を認識していても、していなくてもよい。
【０００４】
ソフト・パーティション分割は典型的には、パーティション分割されたシステムのあるパーティション内で走るVMM、ハイパーバイザ、OSまたは他のそのようなソフトウェアが、物理的な資源の共有を実施するよう設計されることを要求する。これは、他のパーティション内で走っている任意のそのようなソフトウェアが物理的な資源を直接制御することを防ぐことを含んでいてもよい。
【０００５】
「ハード」なパーティション分割では、各システム資源は典型的にはそれぞれのパーティションの専用である。ハード・パーティション分割は、何らかのOS、VMM、ハイパーバイザまたは他のそのようなソフトウェアが各パーティション内で走らされるようにするが、該ソフトウェアはパーティション分割されたシステムのために設計されている必要はない。そのようなソフトウェアはそのパーティションの物理的な資源を直接制御してもよいからである。
本発明は、限定ではなく例として付属の図面において図解されている。
【図面の簡単な説明】
【０００６】
【図１】情報処理システムにおける本発明のある実施形態を示す図である。
【図２】デバイスのドメインへの割り当てを示す図である。
【図３】デバイスがシステム・メモリにアクセスするためのアドレス変換を示す図である。
【図４】メモリ・アクセス・データ構造中のある項目を示す図である。
【図５】図１の実施形態のパーティション分割論理を示す図である。
【図６】本発明の方法実施形態を示す図である。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来技術の欠点を軽減または解消する。
【課題を解決するための手段】
【０００８】
請求項記載の手段によって解決する。
【発明を実施するための形態】
【０００９】
本発明は、のちに述べるようなパーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲストからホストへのアドレス変換のための装置、方法およびシステムにおいて具現されうる。本記載においては、本発明のより包括的な理解を与えるために、コンポーネントおよびシステム構成といった数多くの個別的な詳細が述べられることがあるが、当業者は、本発明がそうした個別的な詳細なしでも実施されうることを認識するであろう。さらに、いくつかのよく知られた構造、回路などは、本発明を無用にかすませるのを避けるために詳細に示しはしなかった。
本発明の実施形態は、パーティション分割されたシステムの仮想化機能を向上させるのに使用されうる。
本発明の実施形態の要素は、ハードウェア、ソフトウェア、ファームウェアまたはハードウェア、ソフトウェアもしくはファームウェアの任意の組み合わせで実装できる。ハードウェアという用語は一般に、電子的部品、電磁的部品、工学的部品、電気光学的部品、機械的部品、電気機械部品などといった物理的な構造を有する要素を指す。ソフトウェアという用語は一般に、論理構造、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、公式、表式（expression）などを指す。ファームウェアという用語は一般に、論理構造、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、公式または表式がハードウェア構造（たとえば、フラッシュメモリまたは読み出し専用メモリ）の中に実装または具現されたものを指す。ファームウェアの例はマイクロコード、書き込み可能制御記憶（writable  control  store）およびマイクロプログラムされた構造である。
【００１０】
図１は、情報処理システム１００における本発明のある実施形態を示している。情報処理システム１００は、裸のプラットフォーム・ハードウェア１１０を含む。これは何らかのOS、VMMまたはその他のソフトウェアを実行できるいかなる装置であってもよい。たとえば、裸のプラットフォーム・ハードウェア１１０は、パーソナル・コンピュータ、メインフレーム・コンピュータ、ポータブル・コンピュータ、ハンドヘルド機器、セットトップボックス、サーバーまたは他の任意のコンピュータ・システムのハードウェアでありうる。この実施形態では、裸のプラットフォーム・ハードウェア１１０は、一つまたは複数のプロセッサ・パッケージ１２０、チップセット（単数または複数）１３０、システム・メモリ１４０およびデバイス１５１、１５２、１５３および１５４を含む。
【００１１】
プロセッサ１２０は、一つまたは複数の実行コアをもついかなるコンポーネントであってもよい。ここで、各実行コアは、インテル（登録商標）ペンティアム（登録商標）プロセッサ・ファミリー、アイテニアム（登録商標）プロセッサ・ファミリーもしくはインテル（登録商標）・コーポレイションからの他のプロセッサ・ファミリーのプロセッサまたは他の会社からの他のプロセッサといった汎用マイクロプロセッサまたはデジタル信号プロセッサまたはマイクロコントローラを含む多様な異なる型のプロセッサのいずれに基づいていてもよいし、あるいは再構成可能コア（reconfigurable  core）（たとえば現場プログラム可能なゲートアレイ［field  programmable  gate  array］）であってもよい。図１はそのようなプロセッサ１２０を一つしか示していないが、裸のプロセシング・ハードウェア１１０はプロセッサをいくつ含んでいてもよく、それにはそれぞれ実行コアの数がいくつでもよいマルチコア・プロセッサがいくつ含まれていてもよく、それぞれスレッドの数がいくつでもよいマルチスレッド・プロセッサがいくつ含まれていてもよい。
【００１２】
チップセット１３０は、メモリ動作、入出力動作、構成設定、制御、内部もしくは外部インターフェース、接続または通信機能（たとえば「グルー（glue）」ロジックおよびバス・ブリッジ）ならびに／またはプロセッサ１２０および／またはシステム１００のための任意の同様の機能をサポートする回路および論理のいかなるグループであってもよい。チップセット１３０の個々の要素は、単一チップ、一対のチップ上にグループ化されてもよいし、複数のチップの間に分散されてもよいし、および／またはプロセッサ１２０を含む一つまたは複数のプロセッサに部分的に、全面的に、冗長にもしくは分散アプローチに従って統合されてもよい。
【００１３】
システム・メモリ１４０は、データおよび／またはプログラム・コードといった情報が保存されうるいかなる媒体であってもよく、静的もしくは動的ランダム・アクセス・メモリ、半導体ベースの読み出し専用メモリもしくはフラッシュメモリ、磁気もしくは光学式ディスク・メモリまたはプロセッサ１２０によって読むことのできる他の任意の型の媒体あるいはそのような媒体の任意の組み合わせといったものでありうる。
【００１４】
デバイス１５１、１５２、１５３および１５４はそれぞれ、任意の数の任意の型のI/Oデバイス、周辺デバイスまたはその他のデバイスを表しうる。キーボード、マウス、トラックボール、ポインティング・デバイス、モニタ、プリンタ、メディア・カード、ネットワーク・インターフェース、情報記憶デバイスなどといったものである。デバイス１５１、１５２、１５３および１５４のそれぞれは、離散コンポーネントとして具現されてもよいし、あるいはその任意の一つまたは複数が任意の他のデバイスと一緒に統合コンポーネントに含められていてもよい。ある実施形態では、デバイス１５１、１５２、１５３および１５４はそれぞれ、多機能I/Oデバイス、周辺デバイスまたはその他のデバイス内における異なる機能を表す。
【００１５】
プロセッサ１２０、チップセット１３０、システム・メモリ１４０ならびにデバイス１５１、１５２、１５３および１５４は、任意の既知のアプローチに従って互いと結合され、あるいは互いと通信してもよい。該既知のアプローチは、直接的または間接的に、一つまたは複数のパラレル、シーケンシャル、パイプライン式、非同期式、同期式、有線、無線または他のバスもしくはポイントツーポイントの接続を通じて、といったものである。たとえば、チップセット１３０は、デバイス１５１、１５２、１５３および１５４からのトランザクションを受信するインターフェース１３３を含む。裸のプラットフォーム・ハードウェア１１０はまた、追加的なデバイス、エージェント、コンポーネントまたは接続をいくつ含んでいてもよい。
【００１６】
裸のプラットフォーム・ハードウェア１１０は、パーティション分割技術に従って、パーティション１１１および１１２にパーティション分割される。マルチコア・プロセッサ１２０のコア１２１、チップセット１３０のアドレス変換（address  translation）論理１３１、システム・メモリ１４０の部分１４１ならびにデバイス１５１と１５３がパーティション１１１に割り振られる。マルチコア・プロセッサ１２０のコア１２２、チップセット１３０のアドレス変換論理１３２、システム・メモリ１４０の部分１４２ならびにデバイス１５２と１５４がパーティション１１２に割り振られる。各パーティションはまた、追加的なプロセッサ、コア、チップセットもしくはその他の論理、メモリの部分、デバイスまたは上記したかさもなくば情報処理の分野で知られている他の任意の物理的な資源も含んでいてもよい。
【００１７】
裸のプラットフォーム・ハードウェア１１０に加えて、図１は、パーティション１１１内にVMM１１５によって維持される仮想化環境１１３と、パーティション１１２内にVMM１１６によって維持される仮想化環境１１４を示している。VMM１１５および１１６は、VM、すなわち裸のプラットフォーム・ハードウェア１１０の抽象化をゲストに呈示するために、あるいはさもなくばVMを生成し、VMを管理し、仮想化ポリシーを実装するために、裸のプラットフォーム・ハードウェア１１０にインストールされた、あるいは裸のプラットフォーム・ハードウェア１１０にとってアクセス可能な、任意のソフトウェア、ファームウェアまたはハードウェア・ホストでありうる。VMM１１５および１１６はそれぞれ、同じVMMのインスタンスであってもよいし、あるいは二つの異なるVMMのインスタンスであってもよい。
【００１８】
ゲストは、VMM１１５または１１６の別のインスタンスも含めいかなるOS、いかなるVMMでも、いかなるハイパーバイザでも、あるいはいかなるアプリケーションもしくはその他のソフトウェアであってもよい。各ゲストは、VM内に呈示されるプロセッサおよびプラットフォームのアーキテクチャに従って、プロセッサおよびプラットフォーム・レジスタ、メモリおよび入出力デバイスといった裸のプラットフォーム・ハードウェア１１０の物理的な資源にアクセスすることを期待する。図１は４つのVMを示している。VM１６１にはゲストOS１７１およびゲスト・アプリケーション１８１およびデバイス・ドライバ１８５がインストールされており、VM１６３にはゲストOS１７３およびゲスト・アプリケーション１８３およびデバイス・ドライバ１８７がインストールされており、VM１６２にはゲストOS１７２およびゲスト・アプリケーション１８２およびデバイス・ドライバ１８６がインストールされており、VM１６４にはゲストOS１７４およびゲスト・アプリケーション１８４およびデバイス・ドライバ１８８がインストールされている。図１は４つのVMおよびVM当たり一つのアプリケーションと一つのドライバしか示していないが、本発明の範囲内で、いくつのVMが生成されてもよいし、各VM上でいくつのアプリケーションおよび／またはドライバが走ってもよい。
【００１９】
ゲストがアクセスできる資源は、「特権（privileged）」または「非特権（non-privileged）」のいずれかとして分類されうる。特権資源については、VMMが、その資源に対する究極的な制御は保持しつつ、ゲストによって所望される機能を容易にする。非特権資源はVMMによって制御される必要はなく、ゲストが直接アクセスしてよい。
【００２０】
さらに、各ゲストOSは例外（たとえば、ページ・フォールトおよび一般保護違反）、割り込み（たとえばハードウェア割り込みおよびソフトウェア割り込み）ならびにプラットフォーム・イベント（たとえば初期化およびシステム管理割り込み）といったさまざまなイベントを扱うことを期待する。これらの例外、割り込みおよびプラットフォーム・イベントは、ここでは集団的および個別的に、「仮想化イベント（virtualization  event）」と称される。これらの仮想化イベントのいくつかは、VMの適切な動作、ゲストからのVMMの保護およびゲストどうしの間の保護を保証するためにVMMによって扱われる必要があるので、「特権イベント」と称される。
【００２１】
任意の所与の時点において、プロセッサ・コアはVMMまたは任意のゲストからの命令を実行していることがありうる。VMMまたはゲストは、プロセッサ・コア上で走っていてもよいし、プロセッサ・コアの制御で走っていてもよい。特権イベントが発生するか、ゲストが特権資源にアクセスしようとしたとき、制御はゲストからVMMに移されうる。ゲストからVMMへの制御の移転はここでは「VMから出ること（VM  exit）」と称される。VMMは、イベントを扱うか資源へのアクセスを容易にするかしたのち、制御をゲストに返しうる。VMMからゲストへの制御の移転はここでは「VMにはいること（VM  entry）」と称される。
【００２２】
仮想化をサポートするため、I/Oトランザクションにおいて、デバイス（たとえばデバイス１５１、１５２、１５３または１５４）をシステム・メモリ１４０内のドメイン（後述）にマッピングするよう、アドレス変換論理（たとえばアドレス変換論理１３１または１３２）が使用されうる。I/Oトランザクションは典型的にはDMA要求（すなわちI/Oデバイスからの、システム・メモリ１４０に直接アクセスする要求）であるが、他のいかなる型のトランザクションでもよい。アドレス変換論理は、I/Oデバイス割り当ておよび／または管理を容易にするか向上させることをサポートする。アドレス変換論理は、図１に示されるようにチップセット１３０に含まれてもよいし、部分的または全体的にプロセッサ１２０または他の任意のプロセッサ、コプロセッサ、チップセットもしくはその他のコンポーネント内に実装されてもよい。
【００２３】
ドメインは、抽象的には、システム中で、システム・メモリ１４０のある部分集合が割り振られる孤立した環境として定義される。たとえば、VM１６１、１６２、１６３および１６４のそれぞれはドメインと考えてよい。あるドメインに割り振られたシステム・メモリ部分に直接アクセスすることが許されているデバイスは、そのドメインの割り当てデバイス（assigned  device）と称される。ドメインの孤立は、その割り振られたメモリに対する、そのドメインに割り当てられたのでないデバイスからのアクセスを遮断することによって達成される。複数の孤立ドメインをサポートすることは、すべてのデバイスが何らかのドメインに割り当てられることを保証し、各割り当てデバイスからのアクセスをそのドメインに割り振られたメモリに対するアクセスのみに制限することによってできる。
【００２４】
各ドメインは、システム・メモリまたは物理的なアドレス空間のあるビューをもち、それはシステムにとってのメモリのビューとは異なることもある。システムにとってのメモリのビューに従ってシステム・メモリにアクセスするために使われるアドレスを、ホスト物理アドレス（HPA:  host  physical  address）と称する。ドメインの資源によってその物理的なアドレス空間にアクセスするために使われるアドレスを、ゲスト物理アドレス（GPA:  guest  physical  address）と称する。ドメインは、そのGPA空間がHPA空間と同じであるか、HPA空間の部分集合である場合には、非再配置である（non-relocated）と考えられる。ドメインは、その割り振られたHPA空間にアクセスするためにそのGPA空間が変換される場合には、再配置である（relocated）と考えられる。GPA空間とHPA空間の論理的な分離は、メモリ保護を実施する基礎を与える。それは、アドレス保護ならびに可能性としては、あるドメインの割り当てデバイスによって生成されたGPAを検証し、可能性としてはそのGPAを有効なHPAに変換することができる変換機構とを必要とする。アドレス変換論理１３１および１３２のようなアドレス変換論理は、時にDMA再マッピング（DMA  remapping）と称されるこの機能のためのハードウェア・サポートを提供する。
【００２５】
図２は、ドメインへのデバイスの割り当てまたはマッピングの例を示す図である。図２では、デバイス１５１はシステム・メモリ１４０内のドメイン２４０にマッピングされている。ドメイン２４０はデバイス・ドライバ２４１を含みうる。デバイス・ドライバ２４１は、デバイス１５１を制御するか、他の仕方でサポートするいかなるソフトウェアでもよい。ドメイン２４０へのデバイス１５１のマッピングは、アドレス変換論理１３１によってサポートされる。
【００２６】
アドレス変換論理１３１は、レジスタ・セット２３１、再マッピング構造２３２および論理回路２３３を含む。レジスタ・セット２３１はいくつかのレジスタを含み、それらのレジスタは、再マッピング構造２３２、論理回路２３３および諸デバイスのためのプログラムまたはドライバによって使用される制御または状態情報のための記憶を提供する。再マッピング構造２３２は、GPAからHPAへの再マッピングまたはアドレス変換において使用される基本構造、記憶またはテーブルを提供する。論理回路２３３は、再マッピングまたはアドレス変換動作を実行するための回路を含む。
【００２７】
図１に戻ると、デバイス１５１、１５２、１５３および１５４のそれぞれは、異なるドメインに割り当てられているものとして示されている。パーティション１１１内のアドレス変換論理１３１はVM１６１のドメインへのデバイス１５１のマッピングおよびVM１６３のドメインへのデバイス１５３のマッピングをサポートする。VM１６１のドメイン内のデバイス・ドライバ１８５はデバイス１５１を制御する。VM１６３のドメイン内のデバイス・ドライバ１８７はデバイス１５３を制御する。パーティション１１２内のアドレス変換論理１３２はVM１６２のドメインへのデバイス１５２のマッピングおよびVM１６４のドメインへのデバイス１５４のマッピングをサポートする。VM１６２のドメイン内のデバイス・ドライバ１８６はデバイス１５２を制御する。VM１６４のドメイン内のデバイス・ドライバ１８８はデバイス１５４を制御する。
【００２８】
一般に、ゲストは、たとえばI/O動作を試みるときにVMから出ることを引き起こすことによって、VMMを通じてシステム資源にアクセスする。しかしながら、デバイス１５１はVM１６１に割り当てられ、そのドライバ１８５はVM１６１上で走るので、ゲストOS１７１およびアプリケーション１８１は、VMから出てVMM４２０に移ることを引き起こすことなく、デバイス１５１にアクセスできる。さらに、デバイス１５１はVM１６１のドメインに割り当てられたメモリに、たとえばDMA要求を通じて、VMから出ることを引き起こすことなくアクセスしうる。アドレス変換論理１３１はこの機能を、デバイス１５１によって使われるGPAを対応するHPAに変換し、デバイス１５１からその割り振られたドメイン外のメモリ位置へのアクセスを拒否することによってサポートする。同様に、ゲストOS１７２およびアプリケーション１８２は、デバイス１５２にアクセスしうる。デバイス１５２はVM１６２のドメインに割り振られたメモリにアクセスしうる。ゲストOS１７３およびアプリケーション１８３は、デバイス１５３にアクセスしうる。デバイス１５３はVM１６３のドメインに割り振られたメモリにアクセスしうる。ゲストOS１７４およびアプリケーション１８４は、デバイス１５４にアクセスしうる。デバイス１５４はVM１６４のドメインに割り振られたメモリにアクセスしうる。これらはみな、VMから出ることを引き起こすことなくできる。
【００２９】
図３は、DMA再マッピングのためのアドレス変換の例を示している。図３では、デバイス１５１はドメインＡに割り当てられ、デバイス１５３はドメインＢに割り当てられている。各デバイスはI/O要求またはDMA要求をDMA_ADRに対して実行しうる。物理メモリのセクション３４１および３４５がドメインＡに割り振られているが、アドレス変換論理１３１は、デバイス１５１からのDMA_ADRに対する要求を、物理メモリ１４０のセクション３４１にマッピングする。同様に、物理メモリのセクション３４３および３４７がドメインＢに割り振られているが、アドレス変換論理１３１は、デバイス１５３からのDMA_ADRに対する要求を、物理メモリ１４０のセクション３４７にマッピングする。セクション３４１、３４３、３４５および３４７は、システムのメモリ管理モデルに従ったページのサイズであってもよいし、物理メモリの一部分の他のいかなるサイズであってもよい。
【００３０】
システム・メモリのゲスト・ビュー３５０は、デバイス１５１および１５３の観点から論理的に見たものである。デバイス１５１はセクション３５１をシステムのアドレス空間として見る一方、デバイス１５３はセクション３５３をシステムのアドレス空間として見る。ドメインの生成および管理を担うVMM１１５または他のソフトウェアは、各ドメインのために物理メモリ１４０を割り振り、アドレス変換論理１３１内にGPAからHPAへの変換関数を構築する。
【００３１】
アドレス変換論理１３１によって実装されるアドレス変換関数は、システムの物理メモリ管理モデルに依存する。たとえば、ホスト物理メモリが連続的な領域としてドメインに割り振られる場合には、変換関数は単純なオフセット加算でもよい。代替的に、アドレス変換論理１３１は、アドレス変換を実行するためにあるデータ構造を参照してもよい。たとえば、ホスト物理メモリは、ページの粒度で管理される。他の実施形態は、個々のデバイスがアクセスすることを許されるアドレス範囲を定義するデータ構造を使用しうる。他の実施形態は、これらまたはその他の技法の任意の組み合わせを使用しうる。
【００３２】
アドレス変換論理１３１によって参照されるデータ構造（「メモリ・アクセス・データ構造」）は、一レベルのテーブルまたは多レベルのテーブルといった、いかなる形のデータ構造であってもよい。メモリ・アクセス・データ構造または該メモリ・アクセス・データ構造の任意の部分は、再マッピング構造２３２またはシステム・メモリ１４０内のメモリ・アクセス・テーブル１４１のように、アドレス変換論理１３１にとってアクセス可能であるいかなる記憶スペースに保存されていてもよい。メモリ・アクセス・データ構造内の情報の全部または一部は、一つまたは複数の記憶スペース内にコピーまたは複製されうる。たとえば、メモリ・アクセス・テーブル１４１からの項目またはアドレス変換論理１３１による変換の結果は、再マッピング構造または他のどこかにおけるトランスレーション・ルックアサイド（translation  look-aside）などのバッファ内に保存されうる。
【００３３】
図４は、本発明のある実施形態に基づくメモリ・アクセス・データ構造内の項目４００を示している。項目４００は三つのフィールドを含んでおり、各フィールドはビット位置をいくつ含んでいてもよい。GPAフィールド４１０は、デバイスがシステム・メモリにアクセスするために使用しうるGPAまたはGPAの一部を保存するものである。HPAフィールド４２０は、上記のような何らかのメモリ・アドレス変換関数に従ってGPAフィールド４１０に保存されているGPAに対応する、HPAまたはHPAの一部を保存するものである。ある実施形態では、GPAフィールド４１０およびHPAフィールド４２０内に保存されているアドレスのそれぞれは、システム・メモリのあるページの基底アドレスを指定する。それにより、システム・メモリ内のある単一のページへのすべてのアクセスは、メモリ・アクセス・データ構造中においては一つの項目しか必要としない。そのような実施形態では、あるいは他の実施形態でも、メモリ・アクセス・データ構造における単一の項目は、単一のアドレスというよりはある範囲のアドレスを表しうる。
【００３４】
メモリ・アクセス属性フィールド４３０は、フィールド４１０および４２０内の項目に対応するメモリ・アクセス属性を保存するものである。たとえば、メモリ・アクセス・フィールド４３０を使って保存するものとしては、対応するアドレスもしくはアドレス範囲へのDMA（または他のI/O）トランザクションが許可されるかどうかを示す値、対応するアドレスもしくはアドレス範囲へのDMA（または他のI/O）トランザクションに際してプロセッサ・キャッシュが監視される（snooped）必要があるかどうかを示す値ならびに対応するアドレスもしくはアドレス範囲へのDMA（または他のI/O）トランザクションに関係した他の任意の値もしくは指標がありうる。
【００３５】
図１に戻ると、システム１００はパーティション１１１および１１２にパーティション分割されている。パーティション分割は、いかなる既知のアプローチに従って実装されてもよい。たとえば、システム初期化の時点でパーティション分割ファームウェアまたはソフトウェアを実行して、デバイスを含むハードウェア資源を各パーティションに割り当てることによってシステムを構成設定するなどである。
【００３６】
デバイスのパーティションへの割り当てを達成および／または維持するのは、いくらでもある手法のいずれに従って行ってもよい。第一の手法では、ある特定のパーティションに対応するメモリ部分にデバイスが割り当てられうる。たとえば、メモリのある部分がある特定のパーティションに割り振られるのは、一つまたは複数の下位アドレス（lower  addresses）、上位アドレス（upper  addresses）および／またはオフセットを、そのパーティションに対応する一つまたは複数のメモリ範囲またはその他のレジスタ、その他の記憶位置もしくはデータ構造項目に保存することによってでありうる。その場合、デバイスを、メモリのその部分の中でトランザクションを発したりおよび／またはトランザクションに応答したりすることに制限するために、アクセス制御リスト、マップもしくはその他のデータ構造が使用されうる。アクセス制御リスト、マップもしくはその他のデータ構造では、デバイスは、いかなる一意的な識別子で識別されてもよい。識別子はたとえばバス、デバイス、機能番号（BDF:  bus,  device,  function  number）といったもので、これは、システム中のある特定のバス上のある特定のデバイス内の該デバイスの特定の機能に従ってデバイスを識別するものである。
【００３７】
第二の手法によれば、パーティションに直接デバイスが割り当てられてもよい。たとえば、システム中の各デバイスの識別子（たとえばBDF）および該デバイスが割り当てられたパーティションの識別子を保存するために、パーティション分割ファームウェアまたはソフトウェアによってあるデータ構造が生成および／または維持されてもよい。あるいはまた、ある種のデバイスは、自分が割り当てられたパーティションの識別子を保存するようプログラムされていてもよい。他のアプローチも本発明の範囲内で可能である。
【００３８】
そのようなデバイス割り当て手法のいずれかに従って、パーティション分割論理１９０は、あるトランザクションに関わるデバイスが割り当てられたのがどのパーティションであるかを判別する。ある実施形態では、パーティション分割論理１９０は、デバイスが割り当てられたパーティションを判別するのを、トランザクションに含まれるBDFのようなトランザクションに関連するデバイス識別子を、アクセス制御リストまたは他のそのようなデータ構造中で探索することによって行う。アクセス制御リストは、デバイスが割り当てられているメモリの部分を指示し、それが今度はデバイスが割り当てられているパーティションを指示する。別の実施形態では、トランザクションに関連するデバイス識別子を使って、テーブル、マップまたは他のデータ構造中で、そのデバイスが割り当てられたパーティションを直接示す項目がみつけられてもよい。別の実施形態では、トランザクション・プロトコルが、パーティションを直接特定する手段を含んでいてもよい。それはたとえば、要求元デバイスがトランザクション内にパーティション識別子を含めるようにすることによる。
【００３９】
図５は、図１の実施形態に基づくパーティション分割論理１９０を示している。探索（look-up）モジュール５１０はあるデバイスに関わるトランザクションを受け取り、そのデバイスがどのパーティションに割り当てられているかを、上記のようにして、あるいは他の任意の手法に従って判別する。経路制御（routing）モジュール５２０は、そのデバイスが割り当てられたパーティションを見出すために、そのトランザクションをアドレス変換論理に経路制御する。たとえば、デバイス１５１からのDMA要求のために、デバイス１５１がパーティション１１１に割り当てられていることを探索モジュール５１０が判別し、よって経路制御モジュール５２０はDMA要求をアドレス変換論理１３１に経路制御する。
【００４０】
探索モジュール５１０は、デバイスがどのパーティションに割り当てられているかを、上記のようにして、あるいは他の任意の手法に従って判別するために、アクセス制御リスト、デバイス・アクセス・マップ、メモリ範囲レジスタまたはその他の記憶位置もしくはデータ構造のうちいかなる一つまたはいかなる組み合わせを参照してもよい。図５の実施形態では、パーティション分割論理１９０はデバイス・アクセス・マップ５３０を含んでいる。デバイス・アクセス・マップ５３０は、デバイス対パーティションの割り当てを判別するために探索モジュール５１０が使用する情報のための記憶位置を表す。そのような情報は、デバイス対パーティション割り当てを直接判別するために使われる情報であってもよい。デバイスからメモリ、メモリからパーティションのテーブルもしくはリストまたは他の任意のシステム資源マッピングといったといったものである。そのような情報はまた、そのような情報が保存されうるシステム１００内の任意の位置（単数または複数）へのポインタまたは参照であってもよい。デバイス・アクセス・マップ５３０および／またはそれが参照する任意のレジスタ、メモリ・アドレスまたはその他の記憶位置もしくはデータ構造は、先述したパーティション分割ファームウェアまたはソフトウェアによって初期化および／または維持されても、他の任意のOS、VMMもしくは他のそのようなソフトウェアによって初期化および／または維持されてもよい。
【００４１】
図５の実施形態では、パーティション分割論理１９０は、探索モジュール５１０による任意の前の判別からの結果を保存するためのルックアサイド・キャッシュ５４０をも含む。たとえば、探索モジュール５１０がデバイスが割り振られているパーティションを判別するためにBDFを使う場合、そのパーティションに割り当てられているアドレス変換論理の識別子がルックアサイド・キャッシュ項目中に保存されることがある。その後、そのBDFからアドレス変換論理へのマッピングは、探索モジュール５１０によって判別されるのではなく、ルックアサイド・キャッシュ５４０中に見出されうる。
【００４２】
パーティション分割論理１９０は、システム１００から除去されたデバイスに対応するルックアサイド・キャッシュ項目を無効化するためにルックアサイド・キャッシュ・マネージャ５５０をも含む。たとえば、取り外し可能なデバイス・ボードまたはカードが周辺バス・スロットから除去される場合、キャッシュ・マネージャ５５０は、そのデバイス・ボードまたはカードに対応するルックアサイド・キャッシュ５４０中の全項目を無効にする。すると、新しいデバイス・ボードまたはカードがそのスロットに挿入され、異なるパーティションに割り当てられることができる。
【００４３】
図６は、本発明のある実施形態を方法６００において示している。方法６００は、パーティション分割されたシステムにおいてデバイスがメモリにアクセスするためのゲストからホストへのアドレス変換のための方法である。方法実施形態は、この点において限定されるものではないが、図６の方法実施形態を記述するために、図１のシステム１００の記載が参照される。
【００４４】
ボックス６１０では、システム、たとえばシステム１００が二つのパーティション、たとえばパーティション１１１および１１２にパーティション分割される。パーティション分割は、システム・メモリの諸部分、I/Oデバイスおよびアドレス変換論理といったシステム資源を各パーティションに割り振ることを含む。たとえば、デバイス１５１はパーティション１１１に割り振られてもよく、デバイス１５２はパーティション１１２に割り振られてもよい。デバイス１５１および１５２は、同じゲスト物理アドレス（たとえばDMA_ADR）を含む、システム・メモリのゲスト・ビューを有していてもよい。
【００４５】
ボックス６２０では、デバイス１５１が、システム・メモリにアクセスすることに関わるトランザクション、たとえばDMA要求を開始する。トランザクションはデバイス識別子、たとえばデバイス１５１のBDFおよびゲスト物理アドレス、たとえばDMA_ADRを含んでいる。
【００４６】
ボックス６２２では、デバイス識別子を使って、デバイスが割り当てられているパーティション、たとえばパーティション１１１を判別する。ボックス６２４では、ルックアサイド・キャッシュ項目が生成される。キャッシュ項目は、前記デバイス識別子およびパーティション１１１に割り振られているアドレス変換論理、たとえばアドレス変換論理１３１の識別子を含む。
【００４７】
ボックス６３０では、トランザクションがアドレス変換論理１３１に経路制御され、それによりデバイス１５１によって使用されるゲスト物理アドレスDMA_ADRとデバイス１５２によって使用されるゲスト物理アドレスDMA_ADRとの曖昧さが除去される。ボックス６３２では、アドレス変換論理１３１はゲスト物理アドレスDMA_ADRをパーティション１１１内のホスト物理アドレスに変換する。ボックス６３４では、ボックス６３２で見出されたホスト物理アドレスに対して、ボックス６２０で開始されたトランザクションが完遂される。
【００４８】
ボックス６４０では、デバイス１５１は、システム・メモリにアクセスすることに関わるもう一つのトランザクション、たとえばDMA要求を開始する。トランザクションはデバイス識別子、たとえばデバイス１５１のBDFおよびゲスト物理アドレス、たとえばDMA_ADRを含んでいる。
【００４９】
ボックス６４２では、デバイス識別子がルックアサイド・キャッシュ内でみつけられる。ボックス６４４では、トランザクションが、ルックアサイド・キャッシュ内にみつかった項目に基づいてアドレス変換論理１３１に経路制御される。ボックス６４６では、アドレス変換論理１３１がゲスト物理アドレスDMA_ADRをパーティション１１１内のホスト物理アドレスに変換する。ボックス６４８では、ボックス６４６で見出されたホスト物理アドレスに対して、ボックス６４０で開始されたトランザクションが完遂される。
【００５０】
ボックス６５０では、デバイス１５１がシステム１００から除去される。ボックス６５２では、デバイス１５１に対応するルックアサイド・キャッシュ項目が無効にされる。
【００５１】
本発明の範囲内で、方法６００は図示されているボックスが省略されて実行されたり、追加的なボックスが加えられて実行されたり、あるいは並べ替え、省略もしくは追加されたボックスの組み合わせをもって実行されたりしてもよい。たとえば、トランザクションがパーティション識別子を含む場合には、ボックス６２２および６２４は省略されうる。
【００５２】
本発明のある実施形態に基づいて設計されているコンポーネントまたはコンポーネントの一部は、創造（creation）からシミュレーションへ、さらに製造へとさまざまな段階で設計されうる。ある設計を表すデータは、該設計をいくつかの仕方で表しうる。第一に、シミュレーションにおいて有用なように、ハードウェアは、ハードウェア記述言語または別の機能記述言語を使って表されてもよい。追加的または代替的に、論理および／またはトランジスタ・ゲートをもつ回路レベルのモデルが設計プロセスの何らかの段階で生成されてもよい。さらに、たいていの設計は、何らかの段階で、さまざまなデバイスの物理的な配置を表すデータでモデル化されうるレベルに達しうる。通常の半導体製造技法が使用される場合、デバイス配置モデルを表すデータは、集積回路を製造するために使われる諸マスクのための異なるマスク層の上のさまざまな特徴の存在または不在を指定するデータであってもよい。
【００５３】
設計のいかなる表現においても、データはいかなる形の機械可読媒体に保存されてもよい。該機械可読媒体は、変調されているか他の仕方で情報を伝達するよう生成されている光学的もしくは電気的な波、メモリまたはディスクのような磁気的もしくは光学的記憶であってもよい。これらの媒体のいずれも、前記設計または本発明の実施形態で使用される他の情報を「運ぶ（carry）」あるいは「指示する（indicate）」ことができる。前記情報を示すか運ぶかする電気的搬送波が送信されるとき、その電気信号のコピー、バッファリングまたは再送信が実行される限りにおいて、新たなコピーが作られている。こうして、通信プロバイダーまたはネットワーク・プロバイダーは、本発明の技術を具現する物、たとえば搬送波のコピーを作ることを構成しうる。
【００５４】
こうして、パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲストからホストへのアドレス変換のための装置、方法およびシステムを開示してきた。ある種の実施形態について記述し、付属の図面で示してきたが、そのような実施形態が単に例示的なものであり、広い本発明を制限するものでないこと、本発明は図示および記述された個別的な構築および構成に限定されるものではないことは理解されるものとする。本開示を検討すれば、当業者にはさまざまな修正が思いつきうるからである。成長が速く、さらなる進歩が簡単には予見されないこのような技術分野においては、開示された実施形態は、本開示の原理や付属の請求項の範囲から外れることなく、実施を可能にする技術的進歩によって容易にされるように、構成および詳細においてすぐ修正可能でありうる。
【００５５】
いくつかの態様を記載しておく。
（態様１）
パーティション分割されたシステムにおいてメモリにアクセスする要求をデバイスから受信するインターフェースと；
仮想機械から出て仮想機械モニタに移ることを引き起こすことなく前記パーティション分割されたシステムにおいて前記デバイスが第一のパーティションに割り当てられているか第二のパーティションに割り当てられているかを判別するパーティション分割論理と；
第一のゲスト・アドレスを前記第一のパーティション中の第一のホスト・アドレスに変換する第一のアドレス変換論理と；
第二のゲスト・アドレスを前記第二のパーティション中の第二のホスト・アドレスに変換する第二のアドレス変換論理とを有する装置。
（態様２）
前記パーティション分割論理が、前記デバイスが前記第一のパーティションに割り当てられていると判別するのに応答して、前記要求を前記第一のアドレス変換論理に転送し、前記デバイスが前記第二のパーティションに割り当てられていると判別するのに応答して、前記要求を前記第二のアドレス変換論理に転送することもする、態様１記載の装置。
（態様３）
前記パーティション分割論理が、前記要求に含まれているデバイス識別子を使ってパーティション識別子を決定する探索モジュールを含んでいる、態様１記載の装置。
（態様４）
前記探索モジュールが前記デバイス識別子を、あるデータ構造中で項目をみつけるために使う、態様３記載の装置。
（態様５）
前記項目が、前記デバイスがアクセスを有するメモリ範囲を示す、態様４記載の装置。
（態様６）
前記項目がパーティション識別子を示す、態様４記載の装置。
（態様７）
前記パーティション分割論理が、前記判別の結果を保存するキャッシュを含む、態様１記載の装置。
（態様８）
前記デバイスが、前記要求に含まれているパーティション識別子に基づいて、前記デバイスが第一のパーティションに割り当てられているか第二のパーティションに割り当てられているかを判別する、態様２記載の装置。
（態様９）
前記パーティション分割論理がさらに、キャッシュ項目に対応するデバイスがシステムから除去されるのに応答して前記キャッシュ項目を無効にする、態様７記載の装置。
（態様１０）
インターフェースによって、パーティション分割されたシステムにおいてメモリにアクセスする要求をデバイスから受信する段階と；
パーティション分割論理によって、仮想機械から出て仮想機械モニタに移ることを引き起こすことなく前記パーティション分割されたシステムにおいて前記デバイスが第一のパーティションに割り当てられているか第二のパーティションに割り当てられているかを判別する段階と；
前記パーティション分割論理によって、前記デバイスが前記第一のパーティションに割り当てられていると判別するのに応答して、前記要求を第一のアドレス変換論理に転送する段階と、
前記パーティション分割論理によって、前記デバイスが前記第二のパーティションに割り当てられていると判別するのに応答して、前記要求を第二のアドレス変換論理に転送する段階とを有する方法。
（態様１１）
前記パーティション分割論理に含まれる探索モジュールによって、前記要求に含まれているデバイス識別子を使ってパーティション識別子を決定する段階をさらに有する、態様１０記載の方法。
（態様１２）
前記探索モジュールによって、前記デバイス識別子を、あるデータ構造中で項目をみつけるために使う段階をさらに有する、態様１１記載の方法。
（態様１３）
前記項目が、前記デバイスがアクセスを有するメモリ範囲を示す、態様１２記載の方法。
（態様１４）
前記項目がパーティション識別子を示す、態様１２記載の方法。
（態様１５）
前記パーティション分割論理によって、前記判別の結果をキャッシュに保存する段階をさらに有する、態様１０記載の方法。
（態様１６）
前記パーティション分割論理によって、前記判別する段階が、前記デバイスが前記第一のパーティションに割り当てられているか前記第二のパーティションに割り当てられているかの以前の判別の結果を保存しているキャッシュ項目を読むことを含む、態様１０記載の方法。
（態様１７）
前記パーティション分割論理によって、前記デバイスがシステムから除去されるのに応答して、前記キャッシュ項目を無効にする段階をさらに有する、態様１６記載の方法。
（態様１８）
メモリの第一の部分；
第一のデバイス；および
前記メモリの第一の部分における第一のゲスト・アドレスを第一のホスト・アドレスに変換する第一のアドレス変換論理を含む第一のパーティションと；
メモリの第二の部分；
第二のデバイス；および
前記メモリの第二の部分における第二のゲスト・アドレスを第二のホスト・アドレスに変換する第二のアドレス変換論理を含む第二のパーティションと；
仮想機械から出て仮想機械モニタに移ることを引き起こすことなく前記第一のデバイスからの第一の要求を前記第一のアドレス変換論理に転送し、前記第二のデバイスからの第二の要求を前記第二のアドレス変換論理に転送するパーティション分割論理とを有するシステム。
（態様１９）
前記パーティション分割論理が前記第一の要求を転送するのが、第一のデバイス識別子を使って、前記第一のデバイスが前記第一のパーティションに割り当てられていることを示す項目をデータ構造中でみつけるのに応答してである、態様１８記載のシステム。
（態様２０）
前記メモリが動的ランダム・アクセス・メモリである、態様１８記載のシステム。
【符号の説明】
【００５６】
１００  システム
１１０  裸のプラットフォーム・ハードウェア
１１１  パーティション
１１２  パーティション
１１３  仮想化環境
１１４  仮想化環境
１１５  VMM
１１６  VMM
１２０  プロセッサ
１２１  コア
１２２  コア
１３０  チップセット
１３１  アドレス変換論理
１３２  アドレス変換論理
１３３  インターフェース
１４０  システム・メモリ
１４１  メモリ・アクセス・テーブル
１４１  メモリ部分
１４２  メモリ部分
１５１  デバイス
１５２  デバイス
１５３  デバイス
１５４  デバイス
１６１  VM
１６２  VM
１６３  VM
１６４  VM
１７１  ゲストOS
１７２  ゲストOS
１７３  ゲストOS
１７４  ゲストOS
１８１  ゲスト・アプリケーション
１８２  ゲスト・アプリケーション
１８３  ゲスト・アプリケーション
１８４  ゲスト・アプリケーション
１８５  デバイス・ドライバ
１８６  デバイス・ドライバ
１８７  デバイス・ドライバ
１８８  デバイス・ドライバ
１９０  パーティション分割論理
２３１  レジスタ・セット
２３２  再マッピング構造
２３３  論理回路
２４０  ドメイン
２４１  デバイス・ドライバ
３４１  セクション
３４３  セクション
３４５  セクション
３４７  セクション
３５０  ゲスト・ビュー
３５１  セクション
３５３  セクション
４００  項目
４１０  GPA
４２０  HPA
４３０  メモリ・アクセス・属性
５１０  探索モジュール
５２０  経路制御モジュール
５３０  デバイス・アクセス・マップ
５４０  ルックアサイド・キャッシュ
５５０  ルックアサイド・キャッシュ・マネージャ
６００  方法
６１０  システムのパーティション分割
６２０  DMA要求
６２２  パーティションを判別
６２４  キャッシュ項目を生成
６３０  要求をアドレス変換論理に経路制御
６３２  GPAをHPAに変換
６３４  DMA実行
６４０  別のDMA要求
６４２  キャッシュ項目を読む
６４４  要求をアドレス変換論理に経路制御
６４６  GPAをHPAに変換
６４８  DMA実行
６５０  デバイスを除去
６５２  キャッシュ項目を無効に
【図１】
2014017012.tif 000003
【図２】
2014017012.tif 000004
【図３】
2014017012.tif 000005
【図４】
2014017012.tif 000006
【図５】
2014017012.tif 000007
【図６】
2014017012.tif 000008