パーティション分割されたシステムにおいてメモリにアクセスする要求をデバイスから受信するインターフェースと;第一のパーティション中の第一のアドレス変換ハードウェアであって、ゲストアドレスを前記第一のパーティション中の第一のホストアドレスに変換する第一のアドレス変換ハードウェアと;第二のパーティション中の第二のアドレス変換ハードウェアであって、前記ゲストアドレスを前記第二のパーティション中の第二のホストアドレスに変換する第二のアドレス変換ハードウェアと;仮想機械から出て仮想機械モニタに移ることを引き起こすことなく前記デバイスが前記第一のパーティションに割り当てられているか前記第二のパーティションに割り当てられているかを判別し、前記デバイスが前記第一のパーティションに割り当てられていると判別するのに応答して前記要求を前記第一のアドレス変換ハードウェアに転送し、前記デバイスが前記第二のパーティションに割り当てられていると判別するのに応答して前記要求を前記第二のアドレス変換ハードウェアに転送するパーティション分割論理とを有する装置。従来技術の欠点を軽減または解消する。請求項記載の手段によって解決する。本発明は、のちに述べるようなパーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲストからホストへのアドレス変換のための装置、方法およびシステムにおいて具現されうる。本記載においては、本発明のより包括的な理解を与えるために、コンポーネントおよびシステム構成といった数多くの個別的な詳細が述べられることがあるが、当業者は、本発明がそうした個別的な詳細なしでも実施されうることを認識するであろう。さらに、いくつかのよく知られた構造、回路などは、本発明を無用にかすませるのを避けるために詳細に示しはしなかった。本発明の実施形態は、パーティション分割されたシステムの仮想化機能を向上させるのに使用されうる。本発明の実施形態の要素は、ハードウェア、ソフトウェア、ファームウェアまたはハードウェア、ソフトウェアもしくはファームウェアの任意の組み合わせで実装できる。ハードウェアという用語は一般に、電子的部品、電磁的部品、工学的部品、電気光学的部品、機械的部品、電気機械部品などといった物理的な構造を有する要素を指す。ソフトウェアという用語は一般に、論理構造、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、公式、表式expressionなどを指す。ファームウェアという用語は一般に、論理構造、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、公式または表式がハードウェア構造たとえば、フラッシュメモリまたは読み出し専用メモリの中に実装または具現されたものを指す。ファームウェアの例はマイクロコード、書き込み可能制御記憶writablecontrolstoreおよびマイクロプログラムされた構造である。図1は、情報処理システム100における本発明のある実施形態を示している。情報処理システム100は、裸のプラットフォームハードウェア110を含む。これは何らかのOS、VMMまたはその他のソフトウェアを実行できるいかなる装置であってもよい。たとえば、裸のプラットフォームハードウェア110は、パーソナルコンピュータ、メインフレームコンピュータ、ポータブルコンピュータ、ハンドヘルド機器、セットトップボックス、サーバーまたは他の任意のコンピュータシステムのハードウェアでありうる。この実施形態では、裸のプラットフォームハードウェア110は、一つまたは複数のプロセッサパッケージ120、チップセット単数または複数130、システムメモリ140およびデバイス151、152、153および154を含む。プロセッサ120は、一つまたは複数の実行コアをもついかなるコンポーネントであってもよい。ここで、各実行コアは、インテル登録商標ペンティアム登録商標プロセッサファミリー、アイテニアム登録商標プロセッサファミリーもしくはインテル登録商標コーポレイションからの他のプロセッサファミリーのプロセッサまたは他の会社からの他のプロセッサといった汎用マイクロプロセッサまたはデジタル信号プロセッサまたはマイクロコントローラを含む多様な異なる型のプロセッサのいずれに基づいていてもよいし、あるいは再構成可能コアreconfigurablecoreたとえば現場プログラム可能なゲートアレイ[fieldprogrammablegatearray]であってもよい。図1はそのようなプロセッサ120を一つしか示していないが、裸のプロセシングハードウェア110はプロセッサをいくつ含んでいてもよく、それにはそれぞれ実行コアの数がいくつでもよいマルチコアプロセッサがいくつ含まれていてもよく、それぞれスレッドの数がいくつでもよいマルチスレッドプロセッサがいくつ含まれていてもよい。チップセット130は、メモリ動作、入出力動作、構成設定、制御、内部もしくは外部インターフェース、接続または通信機能たとえばグルーglueロジックおよびバスブリッジならびに/またはプロセッサ120および/またはシステム100のための任意の同様の機能をサポートする回路および論理のいかなるグループであってもよい。チップセット130の個々の要素は、単一チップ、一対のチップ上にグループ化されてもよいし、複数のチップの間に分散されてもよいし、および/またはプロセッサ120を含む一つまたは複数のプロセッサに部分的に、全面的に、冗長にもしくは分散アプローチに従って統合されてもよい。システムメモリ140は、データおよび/またはプログラムコードといった情報が保存されうるいかなる媒体であってもよく、静的もしくは動的ランダムアクセスメモリ、半導体ベースの読み出し専用メモリもしくはフラッシュメモリ、磁気もしくは光学式ディスクメモリまたはプロセッサ120によって読むことのできる他の任意の型の媒体あるいはそのような媒体の任意の組み合わせといったものでありうる。デバイス151、152、153および154はそれぞれ、任意の数の任意の型のIOデバイス、周辺デバイスまたはその他のデバイスを表しうる。キーボード、マウス、トラックボール、ポインティングデバイス、モニタ、プリンタ、メディアカード、ネットワークインターフェース、情報記憶デバイスなどといったものである。デバイス151、152、153および154のそれぞれは、離散コンポーネントとして具現されてもよいし、あるいはその任意の一つまたは複数が任意の他のデバイスと一緒に統合コンポーネントに含められていてもよい。ある実施形態では、デバイス151、152、153および154はそれぞれ、多機能IOデバイス、周辺デバイスまたはその他のデバイス内における異なる機能を表す。プロセッサ120、チップセット130、システムメモリ140ならびにデバイス151、152、153および154は、任意の既知のアプローチに従って互いと結合され、あるいは互いと通信してもよい。該既知のアプローチは、直接的または間接的に、一つまたは複数のパラレル、シーケンシャル、パイプライン式、非同期式、同期式、有線、無線または他のバスもしくはポイントツーポイントの接続を通じて、といったものである。たとえば、チップセット130は、デバイス151、152、153および154からのトランザクションを受信するインターフェース133を含む。裸のプラットフォームハードウェア110はまた、追加的なデバイス、エージェント、コンポーネントまたは接続をいくつ含んでいてもよい。裸のプラットフォームハードウェア110は、パーティション分割技術に従って、パーティション111および112にパーティション分割される。マルチコアプロセッサ120のコア121、チップセット130のアドレス変換addresstranslation論理131、システムメモリ140の部分141ならびにデバイス151と153がパーティション111に割り振られる。マルチコアプロセッサ120のコア122、チップセット130のアドレス変換論理132、システムメモリ140の部分142ならびにデバイス152と154がパーティション112に割り振られる。各パーティションはまた、追加的なプロセッサ、コア、チップセットもしくはその他の論理、メモリの部分、デバイスまたは上記したかさもなくば情報処理の分野で知られている他の任意の物理的な資源も含んでいてもよい。裸のプラットフォームハードウェア110に加えて、図1は、パーティション111内にVMM115によって維持される仮想化環境113と、パーティション112内にVMM116によって維持される仮想化環境114を示している。VMM115および116は、VM、すなわち裸のプラットフォームハードウェア110の抽象化をゲストに呈示するために、あるいはさもなくばVMを生成し、VMを管理し、仮想化ポリシーを実装するために、裸のプラットフォームハードウェア110にインストールされた、あるいは裸のプラットフォームハードウェア110にとってアクセス可能な、任意のソフトウェア、ファームウェアまたはハードウェアホストでありうる。VMM115および116はそれぞれ、同じVMMのインスタンスであってもよいし、あるいは二つの異なるVMMのインスタンスであってもよい。ゲストは、VMM115または116の別のインスタンスも含めいかなるOS、いかなるVMMでも、いかなるハイパーバイザでも、あるいはいかなるアプリケーションもしくはその他のソフトウェアであってもよい。各ゲストは、VM内に呈示されるプロセッサおよびプラットフォームのアーキテクチャに従って、プロセッサおよびプラットフォームレジスタ、メモリおよび入出力デバイスといった裸のプラットフォームハードウェア110の物理的な資源にアクセスすることを期待する。図1は4つのVMを示している。VM161にはゲストOS171およびゲストアプリケーション181およびデバイスドライバ185がインストールされており、VM163にはゲストOS173およびゲストアプリケーション183およびデバイスドライバ187がインストールされており、VM162にはゲストOS172およびゲストアプリケーション182およびデバイスドライバ186がインストールされており、VM164にはゲストOS174およびゲストアプリケーション184およびデバイスドライバ188がインストールされている。図1は4つのVMおよびVM当たり一つのアプリケーションと一つのドライバしか示していないが、本発明の範囲内で、いくつのVMが生成されてもよいし、各VM上でいくつのアプリケーションおよび/またはドライバが走ってもよい。ゲストがアクセスできる資源は、特権privilegedまたは非特権nonprivilegedのいずれかとして分類されうる。特権資源については、VMMが、その資源に対する究極的な制御は保持しつつ、ゲストによって所望される機能を容易にする。非特権資源はVMMによって制御される必要はなく、ゲストが直接アクセスしてよい。さらに、各ゲストOSは例外たとえば、ページフォールトおよび一般保護違反、割り込みたとえばハードウェア割り込みおよびソフトウェア割り込みならびにプラットフォームイベントたとえば初期化およびシステム管理割り込みといったさまざまなイベントを扱うことを期待する。これらの例外、割り込みおよびプラットフォームイベントは、ここでは集団的および個別的に、仮想化イベントvirtualizationeventと称される。これらの仮想化イベントのいくつかは、VMの適切な動作、ゲストからのVMMの保護およびゲストどうしの間の保護を保証するためにVMMによって扱われる必要があるので、特権イベントと称される。任意の所与の時点において、プロセッサコアはVMMまたは任意のゲストからの命令を実行していることがありうる。VMMまたはゲストは、プロセッサコア上で走っていてもよいし、プロセッサコアの制御で走っていてもよい。特権イベントが発生するか、ゲストが特権資源にアクセスしようとしたとき、制御はゲストからVMMに移されうる。ゲストからVMMへの制御の移転はここではVMから出ることVMexitと称される。VMMは、イベントを扱うか資源へのアクセスを容易にするかしたのち、制御をゲストに返しうる。VMMからゲストへの制御の移転はここではVMにはいることVMentryと称される。仮想化をサポートするため、IOトランザクションにおいて、デバイスたとえばデバイス151、152、153または154をシステムメモリ140内のドメイン後述にマッピングするよう、アドレス変換論理たとえばアドレス変換論理131または132が使用されうる。IOトランザクションは典型的にはDMA要求すなわちIOデバイスからの、システムメモリ140に直接アクセスする要求であるが、他のいかなる型のトランザクションでもよい。アドレス変換論理は、IOデバイス割り当ておよび/または管理を容易にするか向上させることをサポートする。アドレス変換論理は、図1に示されるようにチップセット130に含まれてもよいし、部分的または全体的にプロセッサ120または他の任意のプロセッサ、コプロセッサ、チップセットもしくはその他のコンポーネント内に実装されてもよい。ドメインは、抽象的には、システム中で、システムメモリ140のある部分集合が割り振られる孤立した環境として定義される。たとえば、VM161、162、163および164のそれぞれはドメインと考えてよい。あるドメインに割り振られたシステムメモリ部分に直接アクセスすることが許されているデバイスは、そのドメインの割り当てデバイスassigneddeviceと称される。ドメインの孤立は、その割り振られたメモリに対する、そのドメインに割り当てられたのでないデバイスからのアクセスを遮断することによって達成される。複数の孤立ドメインをサポートすることは、すべてのデバイスが何らかのドメインに割り当てられることを保証し、各割り当てデバイスからのアクセスをそのドメインに割り振られたメモリに対するアクセスのみに制限することによってできる。各ドメインは、システムメモリまたは物理的なアドレス空間のあるビューをもち、それはシステムにとってのメモリのビューとは異なることもある。システムにとってのメモリのビューに従ってシステムメモリにアクセスするために使われるアドレスを、ホスト物理アドレスHPAhostphysicaladdressと称する。ドメインの資源によってその物理的なアドレス空間にアクセスするために使われるアドレスを、ゲスト物理アドレスGPAguestphysicaladdressと称する。ドメインは、そのGPA空間がHPA空間と同じであるか、HPA空間の部分集合である場合には、非再配置であるnonrelocatedと考えられる。ドメインは、その割り振られたHPA空間にアクセスするためにそのGPA空間が変換される場合には、再配置であるrelocatedと考えられる。GPA空間とHPA空間の論理的な分離は、メモリ保護を実施する基礎を与える。それは、アドレス保護ならびに可能性としては、あるドメインの割り当てデバイスによって生成されたGPAを検証し、可能性としてはそのGPAを有効なHPAに変換することができる変換機構とを必要とする。アドレス変換論理131および132のようなアドレス変換論理は、時にDMA再マッピングDMAremappingと称されるこの機能のためのハードウェアサポートを提供する。図2は、ドメインへのデバイスの割り当てまたはマッピングの例を示す図である。図2では、デバイス151はシステムメモリ140内のドメイン240にマッピングされている。ドメイン240はデバイスドライバ241を含みうる。デバイスドライバ241は、デバイス151を制御するか、他の仕方でサポートするいかなるソフトウェアでもよい。ドメイン240へのデバイス151のマッピングは、アドレス変換論理131によってサポートされる。アドレス変換論理131は、レジスタセット231、再マッピング構造232および論理回路233を含む。レジスタセット231はいくつかのレジスタを含み、それらのレジスタは、再マッピング構造232、論理回路233および諸デバイスのためのプログラムまたはドライバによって使用される制御または状態情報のための記憶を提供する。再マッピング構造232は、GPAからHPAへの再マッピングまたはアドレス変換において使用される基本構造、記憶またはテーブルを提供する。論理回路233は、再マッピングまたはアドレス変換動作を実行するための回路を含む。図1に戻ると、デバイス151、152、153および154のそれぞれは、異なるドメインに割り当てられているものとして示されている。パーティション111内のアドレス変換論理131はVM161のドメインへのデバイス151のマッピングおよびVM163のドメインへのデバイス153のマッピングをサポートする。VM161のドメイン内のデバイスドライバ185はデバイス151を制御する。VM163のドメイン内のデバイスドライバ187はデバイス153を制御する。パーティション112内のアドレス変換論理132はVM162のドメインへのデバイス152のマッピングおよびVM164のドメインへのデバイス154のマッピングをサポートする。VM162のドメイン内のデバイスドライバ186はデバイス152を制御する。VM164のドメイン内のデバイスドライバ188はデバイス154を制御する。一般に、ゲストは、たとえばIO動作を試みるときにVMから出ることを引き起こすことによって、VMMを通じてシステム資源にアクセスする。しかしながら、デバイス151はVM161に割り当てられ、そのドライバ185はVM161上で走るので、ゲストOS171およびアプリケーション181は、VMから出てVMM420に移ることを引き起こすことなく、デバイス151にアクセスできる。さらに、デバイス151はVM161のドメインに割り当てられたメモリに、たとえばDMA要求を通じて、VMから出ることを引き起こすことなくアクセスしうる。アドレス変換論理131はこの機能を、デバイス151によって使われるGPAを対応するHPAに変換し、デバイス151からその割り振られたドメイン外のメモリ位置へのアクセスを拒否することによってサポートする。同様に、ゲストOS172およびアプリケーション182は、デバイス152にアクセスしうる。デバイス152はVM162のドメインに割り振られたメモリにアクセスしうる。ゲストOS173およびアプリケーション183は、デバイス153にアクセスしうる。デバイス153はVM163のドメインに割り振られたメモリにアクセスしうる。ゲストOS174およびアプリケーション184は、デバイス154にアクセスしうる。デバイス154はVM164のドメインに割り振られたメモリにアクセスしうる。これらはみな、VMから出ることを引き起こすことなくできる。図3は、DMA再マッピングのためのアドレス変換の例を示している。図3では、デバイス151はドメインAに割り当てられ、デバイス153はドメインBに割り当てられている。各デバイスはIO要求またはDMA要求をDMAADRに対して実行しうる。物理メモリのセクション341および345がドメインAに割り振られているが、アドレス変換論理131は、デバイス151からのDMAADRに対する要求を、物理メモリ140のセクション341にマッピングする。同様に、物理メモリのセクション343および347がドメインBに割り振られているが、アドレス変換論理131は、デバイス153からのDMAADRに対する要求を、物理メモリ140のセクション347にマッピングする。セクション341、343、345および347は、システムのメモリ管理モデルに従ったページのサイズであってもよいし、物理メモリの一部分の他のいかなるサイズであってもよい。システムメモリのゲストビュー350は、デバイス151および153の観点から論理的に見たものである。デバイス151はセクション351をシステムのアドレス空間として見る一方、デバイス153はセクション353をシステムのアドレス空間として見る。ドメインの生成および管理を担うVMM115または他のソフトウェアは、各ドメインのために物理メモリ140を割り振り、アドレス変換論理131内にGPAからHPAへの変換関数を構築する。アドレス変換論理131によって実装されるアドレス変換関数は、システムの物理メモリ管理モデルに依存する。たとえば、ホスト物理メモリが連続的な領域としてドメインに割り振られる場合には、変換関数は単純なオフセット加算でもよい。代替的に、アドレス変換論理131は、アドレス変換を実行するためにあるデータ構造を参照してもよい。たとえば、ホスト物理メモリは、ページの粒度で管理される。他の実施形態は、個々のデバイスがアクセスすることを許されるアドレス範囲を定義するデータ構造を使用しうる。他の実施形態は、これらまたはその他の技法の任意の組み合わせを使用しうる。アドレス変換論理131によって参照されるデータ構造メモリアクセスデータ構造は、一レベルのテーブルまたは多レベルのテーブルといった、いかなる形のデータ構造であってもよい。メモリアクセスデータ構造または該メモリアクセスデータ構造の任意の部分は、再マッピング構造232またはシステムメモリ140内のメモリアクセステーブル141のように、アドレス変換論理131にとってアクセス可能であるいかなる記憶スペースに保存されていてもよい。メモリアクセスデータ構造内の情報の全部または一部は、一つまたは複数の記憶スペース内にコピーまたは複製されうる。たとえば、メモリアクセステーブル141からの項目またはアドレス変換論理131による変換の結果は、再マッピング構造または他のどこかにおけるトランスレーションルックアサイドtranslationlookasideなどのバッファ内に保存されうる。図4は、本発明のある実施形態に基づくメモリアクセスデータ構造内の項目400を示している。項目400は三つのフィールドを含んでおり、各フィールドはビット位置をいくつ含んでいてもよい。GPAフィールド410は、デバイスがシステムメモリにアクセスするために使用しうるGPAまたはGPAの一部を保存するものである。HPAフィールド420は、上記のような何らかのメモリアドレス変換関数に従ってGPAフィールド410に保存されているGPAに対応する、HPAまたはHPAの一部を保存するものである。ある実施形態では、GPAフィールド410およびHPAフィールド420内に保存されているアドレスのそれぞれは、システムメモリのあるページの基底アドレスを指定する。それにより、システムメモリ内のある単一のページへのすべてのアクセスは、メモリアクセスデータ構造中においては一つの項目しか必要としない。そのような実施形態では、あるいは他の実施形態でも、メモリアクセスデータ構造における単一の項目は、単一のアドレスというよりはある範囲のアドレスを表しうる。メモリアクセス属性フィールド430は、フィールド410および420内の項目に対応するメモリアクセス属性を保存するものである。たとえば、メモリアクセスフィールド430を使って保存するものとしては、対応するアドレスもしくはアドレス範囲へのDMAまたは他のIOトランザクションが許可されるかどうかを示す値、対応するアドレスもしくはアドレス範囲へのDMAまたは他のIOトランザクションに際してプロセッサキャッシュが監視されるsnooped必要があるかどうかを示す値ならびに対応するアドレスもしくはアドレス範囲へのDMAまたは他のIOトランザクションに関係した他の任意の値もしくは指標がありうる。図1に戻ると、システム100はパーティション111および112にパーティション分割されている。パーティション分割は、いかなる既知のアプローチに従って実装されてもよい。たとえば、システム初期化の時点でパーティション分割ファームウェアまたはソフトウェアを実行して、デバイスを含むハードウェア資源を各パーティションに割り当てることによってシステムを構成設定するなどである。デバイスのパーティションへの割り当てを達成および/または維持するのは、いくらでもある手法のいずれに従って行ってもよい。第一の手法では、ある特定のパーティションに対応するメモリ部分にデバイスが割り当てられうる。たとえば、メモリのある部分がある特定のパーティションに割り振られるのは、一つまたは複数の下位アドレスloweraddresses、上位アドレスupperaddressesおよび/またはオフセットを、そのパーティションに対応する一つまたは複数のメモリ範囲またはその他のレジスタ、その他の記憶位置もしくはデータ構造項目に保存することによってでありうる。その場合、デバイスを、メモリのその部分の中でトランザクションを発したりおよび/またはトランザクションに応答したりすることに制限するために、アクセス制御リスト、マップもしくはその他のデータ構造が使用されうる。アクセス制御リスト、マップもしくはその他のデータ構造では、デバイスは、いかなる一意的な識別子で識別されてもよい。識別子はたとえばバス、デバイス、機能番号BDFbusdevicefunctionnumberといったもので、これは、システム中のある特定のバス上のある特定のデバイス内の該デバイスの特定の機能に従ってデバイスを識別するものである。第二の手法によれば、パーティションに直接デバイスが割り当てられてもよい。たとえば、システム中の各デバイスの識別子たとえばBDFおよび該デバイスが割り当てられたパーティションの識別子を保存するために、パーティション分割ファームウェアまたはソフトウェアによってあるデータ構造が生成および/または維持されてもよい。あるいはまた、ある種のデバイスは、自分が割り当てられたパーティションの識別子を保存するようプログラムされていてもよい。他のアプローチも本発明の範囲内で可能である。そのようなデバイス割り当て手法のいずれかに従って、パーティション分割論理190は、あるトランザクションに関わるデバイスが割り当てられたのがどのパーティションであるかを判別する。ある実施形態では、パーティション分割論理190は、デバイスが割り当てられたパーティションを判別するのを、トランザクションに含まれるBDFのようなトランザクションに関連するデバイス識別子を、アクセス制御リストまたは他のそのようなデータ構造中で探索することによって行う。アクセス制御リストは、デバイスが割り当てられているメモリの部分を指示し、それが今度はデバイスが割り当てられているパーティションを指示する。別の実施形態では、トランザクションに関連するデバイス識別子を使って、テーブル、マップまたは他のデータ構造中で、そのデバイスが割り当てられたパーティションを直接示す項目がみつけられてもよい。別の実施形態では、トランザクションプロトコルが、パーティションを直接特定する手段を含んでいてもよい。それはたとえば、要求元デバイスがトランザクション内にパーティション識別子を含めるようにすることによる。図5は、図1の実施形態に基づくパーティション分割論理190を示している。探索lookupモジュール510はあるデバイスに関わるトランザクションを受け取り、そのデバイスがどのパーティションに割り当てられているかを、上記のようにして、あるいは他の任意の手法に従って判別する。経路制御routingモジュール520は、そのデバイスが割り当てられたパーティションを見出すために、そのトランザクションをアドレス変換論理に経路制御する。たとえば、デバイス151からのDMA要求のために、デバイス151がパーティション111に割り当てられていることを探索モジュール510が判別し、よって経路制御モジュール520はDMA要求をアドレス変換論理131に経路制御する。探索モジュール510は、デバイスがどのパーティションに割り当てられているかを、上記のようにして、あるいは他の任意の手法に従って判別するために、アクセス制御リスト、デバイスアクセスマップ、メモリ範囲レジスタまたはその他の記憶位置もしくはデータ構造のうちいかなる一つまたはいかなる組み合わせを参照してもよい。図5の実施形態では、パーティション分割論理190はデバイスアクセスマップ530を含んでいる。デバイスアクセスマップ530は、デバイス対パーティションの割り当てを判別するために探索モジュール510が使用する情報のための記憶位置を表す。そのような情報は、デバイス対パーティション割り当てを直接判別するために使われる情報であってもよい。デバイスからメモリ、メモリからパーティションのテーブルもしくはリストまたは他の任意のシステム資源マッピングといったといったものである。そのような情報はまた、そのような情報が保存されうるシステム100内の任意の位置単数または複数へのポインタまたは参照であってもよい。デバイスアクセスマップ530および/またはそれが参照する任意のレジスタ、メモリアドレスまたはその他の記憶位置もしくはデータ構造は、先述したパーティション分割ファームウェアまたはソフトウェアによって初期化および/または維持されても、他の任意のOS、VMMもしくは他のそのようなソフトウェアによって初期化および/または維持されてもよい。図5の実施形態では、パーティション分割論理190は、探索モジュール510による任意の前の判別からの結果を保存するためのルックアサイドキャッシュ540をも含む。たとえば、探索モジュール510がデバイスが割り振られているパーティションを判別するためにBDFを使う場合、そのパーティションに割り当てられているアドレス変換論理の識別子がルックアサイドキャッシュ項目中に保存されることがある。その後、そのBDFからアドレス変換論理へのマッピングは、探索モジュール510によって判別されるのではなく、ルックアサイドキャッシュ540中に見出されうる。パーティション分割論理190は、システム100から除去されたデバイスに対応するルックアサイドキャッシュ項目を無効化するためにルックアサイドキャッシュマネージャ550をも含む。たとえば、取り外し可能なデバイスボードまたはカードが周辺バススロットから除去される場合、キャッシュマネージャ550は、そのデバイスボードまたはカードに対応するルックアサイドキャッシュ540中の全項目を無効にする。すると、新しいデバイスボードまたはカードがそのスロットに挿入され、異なるパーティションに割り当てられることができる。図6は、本発明のある実施形態を方法600において示している。方法600は、パーティション分割されたシステムにおいてデバイスがメモリにアクセスするためのゲストからホストへのアドレス変換のための方法である。方法実施形態は、この点において限定されるものではないが、図6の方法実施形態を記述するために、図1のシステム100の記載が参照される。ボックス610では、システム、たとえばシステム100が二つのパーティション、たとえばパーティション111および112にパーティション分割される。パーティション分割は、システムメモリの諸部分、IOデバイスおよびアドレス変換論理といったシステム資源を各パーティションに割り振ることを含む。たとえば、デバイス151はパーティション111に割り振られてもよく、デバイス152はパーティション112に割り振られてもよい。デバイス151および152は、同じゲスト物理アドレスたとえばDMAADRを含む、システムメモリのゲストビューを有していてもよい。ボックス620では、デバイス151が、システムメモリにアクセスすることに関わるトランザクション、たとえばDMA要求を開始する。トランザクションはデバイス識別子、たとえばデバイス151のBDFおよびゲスト物理アドレス、たとえばDMAADRを含んでいる。ボックス622では、デバイス識別子を使って、デバイスが割り当てられているパーティション、たとえばパーティション111を判別する。ボックス624では、ルックアサイドキャッシュ項目が生成される。キャッシュ項目は、前記デバイス識別子およびパーティション111に割り振られているアドレス変換論理、たとえばアドレス変換論理131の識別子を含む。ボックス630では、トランザクションがアドレス変換論理131に経路制御され、それによりデバイス151によって使用されるゲスト物理アドレスDMAADRとデバイス152によって使用されるゲスト物理アドレスDMAADRとの曖昧さが除去される。ボックス632では、アドレス変換論理131はゲスト物理アドレスDMAADRをパーティション111内のホスト物理アドレスに変換する。ボックス634では、ボックス632で見出されたホスト物理アドレスに対して、ボックス620で開始されたトランザクションが完遂される。ボックス640では、デバイス151は、システムメモリにアクセスすることに関わるもう一つのトランザクション、たとえばDMA要求を開始する。トランザクションはデバイス識別子、たとえばデバイス151のBDFおよびゲスト物理アドレス、たとえばDMAADRを含んでいる。ボックス642では、デバイス識別子がルックアサイドキャッシュ内でみつけられる。ボックス644では、トランザクションが、ルックアサイドキャッシュ内にみつかった項目に基づいてアドレス変換論理131に経路制御される。ボックス646では、アドレス変換論理131がゲスト物理アドレスDMAADRをパーティション111内のホスト物理アドレスに変換する。ボックス648では、ボックス646で見出されたホスト物理アドレスに対して、ボックス640で開始されたトランザクションが完遂される。ボックス650では、デバイス151がシステム100から除去される。ボックス652では、デバイス151に対応するルックアサイドキャッシュ項目が無効にされる。本発明の範囲内で、方法600は図示されているボックスが省略されて実行されたり、追加的なボックスが加えられて実行されたり、あるいは並べ替え、省略もしくは追加されたボックスの組み合わせをもって実行されたりしてもよい。たとえば、トランザクションがパーティション識別子を含む場合には、ボックス622および624は省略されうる。本発明のある実施形態に基づいて設計されているコンポーネントまたはコンポーネントの一部は、創造creationからシミュレーションへ、さらに製造へとさまざまな段階で設計されうる。ある設計を表すデータは、該設計をいくつかの仕方で表しうる。第一に、シミュレーションにおいて有用なように、ハードウェアは、ハードウェア記述言語または別の機能記述言語を使って表されてもよい。追加的または代替的に、論理および/またはトランジスタゲートをもつ回路レベルのモデルが設計プロセスの何らかの段階で生成されてもよい。さらに、たいていの設計は、何らかの段階で、さまざまなデバイスの物理的な配置を表すデータでモデル化されうるレベルに達しうる。通常の半導体製造技法が使用される場合、デバイス配置モデルを表すデータは、集積回路を製造するために使われる諸マスクのための異なるマスク層の上のさまざまな特徴の存在または不在を指定するデータであってもよい。設計のいかなる表現においても、データはいかなる形の機械可読媒体に保存されてもよい。該機械可読媒体は、変調されているか他の仕方で情報を伝達するよう生成されている光学的もしくは電気的な波、メモリまたはディスクのような磁気的もしくは光学的記憶であってもよい。これらの媒体のいずれも、前記設計または本発明の実施形態で使用される他の情報を運ぶcarryあるいは指示するindicateことができる。前記情報を示すか運ぶかする電気的搬送波が送信されるとき、その電気信号のコピー、バッファリングまたは再送信が実行される限りにおいて、新たなコピーが作られている。こうして、通信プロバイダーまたはネットワークプロバイダーは、本発明の技術を具現する物、たとえば搬送波のコピーを作ることを構成しうる。こうして、パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲストからホストへのアドレス変換のための装置、方法およびシステムを開示してきた。ある種の実施形態について記述し、付属の図面で示してきたが、そのような実施形態が単に例示的なものであり、広い本発明を制限するものでないこと、本発明は図示および記述された個別的な構築および構成に限定されるものではないことは理解されるものとする。本開示を検討すれば、当業者にはさまざまな修正が思いつきうるからである。成長が速く、さらなる進歩が簡単には予見されないこのような技術分野においては、開示された実施形態は、本開示の原理や付属の請求項の範囲から外れることなく、実施を可能にする技術的進歩によって容易にされるように、構成および詳細においてすぐ修正可能でありうる。いくつかの態様を記載しておく。態様1パーティション分割されたシステムにおいてメモリにアクセスする要求をデバイスから受信するインターフェースと;仮想機械から出て仮想機械モニタに移ることを引き起こすことなく前記パーティション分割されたシステムにおいて前記デバイスが第一のパーティションに割り当てられているか第二のパーティションに割り当てられているかを判別するパーティション分割論理と;第一のゲストアドレスを前記第一のパーティション中の第一のホストアドレスに変換する第一のアドレス変換論理と;第二のゲストアドレスを前記第二のパーティション中の第二のホストアドレスに変換する第二のアドレス変換論理とを有する装置。態様2前記パーティション分割論理が、前記デバイスが前記第一のパーティションに割り当てられていると判別するのに応答して、前記要求を前記第一のアドレス変換論理に転送し、前記デバイスが前記第二のパーティションに割り当てられていると判別するのに応答して、前記要求を前記第二のアドレス変換論理に転送することもする、態様1記載の装置。態様3前記パーティション分割論理が、前記要求に含まれているデバイス識別子を使ってパーティション識別子を決定する探索モジュールを含んでいる、態様1記載の装置。態様4前記探索モジュールが前記デバイス識別子を、あるデータ構造中で項目をみつけるために使う、態様3記載の装置。態様5前記項目が、前記デバイスがアクセスを有するメモリ範囲を示す、態様4記載の装置。態様6前記項目がパーティション識別子を示す、態様4記載の装置。態様7前記パーティション分割論理が、前記判別の結果を保存するキャッシュを含む、態様1記載の装置。態様8前記デバイスが、前記要求に含まれているパーティション識別子に基づいて、前記デバイスが第一のパーティションに割り当てられているか第二のパーティションに割り当てられているかを判別する、態様2記載の装置。態様9前記パーティション分割論理がさらに、キャッシュ項目に対応するデバイスがシステムから除去されるのに応答して前記キャッシュ項目を無効にする、態様7記載の装置。態様10インターフェースによって、パーティション分割されたシステムにおいてメモリにアクセスする要求をデバイスから受信する段階と;パーティション分割論理によって、仮想機械から出て仮想機械モニタに移ることを引き起こすことなく前記パーティション分割されたシステムにおいて前記デバイスが第一のパーティションに割り当てられているか第二のパーティションに割り当てられているかを判別する段階と;前記パーティション分割論理によって、前記デバイスが前記第一のパーティションに割り当てられていると判別するのに応答して、前記要求を第一のアドレス変換論理に転送する段階と、前記パーティション分割論理によって、前記デバイスが前記第二のパーティションに割り当てられていると判別するのに応答して、前記要求を第二のアドレス変換論理に転送する段階とを有する方法。態様11前記パーティション分割論理に含まれる探索モジュールによって、前記要求に含まれているデバイス識別子を使ってパーティション識別子を決定する段階をさらに有する、態様10記載の方法。態様12前記探索モジュールによって、前記デバイス識別子を、あるデータ構造中で項目をみつけるために使う段階をさらに有する、態様11記載の方法。態様13前記項目が、前記デバイスがアクセスを有するメモリ範囲を示す、態様12記載の方法。態様14前記項目がパーティション識別子を示す、態様12記載の方法。態様15前記パーティション分割論理によって、前記判別の結果をキャッシュに保存する段階をさらに有する、態様10記載の方法。態様16前記パーティション分割論理によって、前記判別する段階が、前記デバイスが前記第一のパーティションに割り当てられているか前記第二のパーティションに割り当てられているかの以前の判別の結果を保存しているキャッシュ項目を読むことを含む、態様10記載の方法。態様17前記パーティション分割論理によって、前記デバイスがシステムから除去されるのに応答して、前記キャッシュ項目を無効にする段階をさらに有する、態様16記載の方法。態様18メモリの第一の部分;第一のデバイス;および前記メモリの第一の部分における第一のゲストアドレスを第一のホストアドレスに変換する第一のアドレス変換論理を含む第一のパーティションと;メモリの第二の部分;第二のデバイス;および前記メモリの第二の部分における第二のゲストアドレスを第二のホストアドレスに変換する第二のアドレス変換論理を含む第二のパーティションと;仮想機械から出て仮想機械モニタに移ることを引き起こすことなく前記第一のデバイスからの第一の要求を前記第一のアドレス変換論理に転送し、前記第二のデバイスからの第二の要求を前記第二のアドレス変換論理に転送するパーティション分割論理とを有するシステム。態様19前記パーティション分割論理が前記第一の要求を転送するのが、第一のデバイス識別子を使って、前記第一のデバイスが前記第一のパーティションに割り当てられていることを示す項目をデータ構造中でみつけるのに応答してである、態様18記載のシステム。態様20前記メモリが動的ランダムアクセスメモリである、態様18記載のシステム。