JP5735070B2 - パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換 - Google Patents

パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換 Download PDF

Info

Publication number
JP5735070B2
JP5735070B2 JP2013199633A JP2013199633A JP5735070B2 JP 5735070 B2 JP5735070 B2 JP 5735070B2 JP 2013199633 A JP2013199633 A JP 2013199633A JP 2013199633 A JP2013199633 A JP 2013199633A JP 5735070 B2 JP5735070 B2 JP 5735070B2
Authority
JP
Japan
Prior art keywords
partition
address translation
address
memory
assigned
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013199633A
Other languages
English (en)
Other versions
JP2014017012A (ja
Inventor
スグマー スレーシュ
スグマー スレーシュ
エス パネサー キラン
エス パネサー キラン
エヌ アイヤー ナラヤン
エヌ アイヤー ナラヤン
Original Assignee
インテル コーポレイション
インテル コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by インテル コーポレイション, インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2014017012A publication Critical patent/JP2014017012A/ja
Application granted granted Critical
Publication of JP5735070B2 publication Critical patent/JP5735070B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本開示は、情報処理の分野に係り、より詳細には情報処理システムのパーティション分割の分野に係る。
一般に、情報処理システムにおけるパーティション分割(partitioning)の概念は、システムをパーティションに分けることをいう。ここで、各パーティションは、完全かつ独立なシステムとして運用されうるシステム資源の一群である。パーティションに割り当てられうるシステム資源は、プロセッサ、プロセッサ・コア(この場合、マルチコア・プロセッサの個々のコアが異なるパーティションに割り当てられうる)、システム・メモリの部分および入出力(「I/O」)装置を含む。
種々の型のパーティション分割が知られている。「ソフト」なパーティション分割では、システム資源はパーティション間で共有されてもよい。ソフト・パーティション分割の一つの形は仮想化である。これは、一つまたは複数のオペレーティング・システム(「OS」)の複数のインスタンスが単一のシステム上で走ることを許容するものであるが、各OSはシステムおよびその資源に対して完全で直接的な制御をもつよう設計される。仮想化は典型的には仮想機械モニタ(VMM: virtual machine monitor)として知られるソフトウェアを使って実装される。これは、システムの物理的な資源を直接制御し、各OSに対して、そのOSが完全かつ直接的に制御しうる、一つまたは複数の仮想プロセッサを含む仮想資源を有する「仮想機械」(VM: virtual machine)を呈示する。VMMは、VM間で物理的な資源を要求および/または割り振りするといった仮想化ポリシーを実装するためのシステム環境(「仮想化環境」)を維持する。VM上で走る各OS、そして他の任意のソフトウェアは、「ゲスト」または「ゲスト・ソフトウェア」と称され、一方、「ホスト」または「ホスト・ソフトウェア」は仮想化環境の外で走るVMMのようなソフトウェアであり、仮想化環境を認識していても、していなくてもよい。
ソフト・パーティション分割は典型的には、パーティション分割されたシステムのあるパーティション内で走るVMM、ハイパーバイザ、OSまたは他のそのようなソフトウェアが、物理的な資源の共有を実施するよう設計されることを要求する。これは、他のパーティション内で走っている任意のそのようなソフトウェアが物理的な資源を直接制御することを防ぐことを含んでいてもよい。
「ハード」なパーティション分割では、各システム資源は典型的にはそれぞれのパーティションの専用である。ハード・パーティション分割は、何らかのOS、VMM、ハイパーバイザまたは他のそのようなソフトウェアが各パーティション内で走らされるようにするが、該ソフトウェアはパーティション分割されたシステムのために設計されている必要はない。そのようなソフトウェアはそのパーティションの物理的な資源を直接制御してもよいからである。
本発明は、限定ではなく例として付属の図面において図解されている。
情報処理システムにおける本発明のある実施形態を示す図である。 デバイスのドメインへの割り当てを示す図である。 デバイスがシステム・メモリにアクセスするためのアドレス変換を示す図である。 メモリ・アクセス・データ構造中のある項目を示す図である。 図1の実施形態のパーティション分割論理を示す図である。 本発明の方法実施形態を示す図である。
従来技術の欠点を軽減または解消する。
請求項記載の手段によって解決する。
本発明は、のちに述べるようなパーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲストからホストへのアドレス変換のための装置、方法およびシステムにおいて具現されうる。本記載においては、本発明のより包括的な理解を与えるために、コンポーネントおよびシステム構成といった数多くの個別的な詳細が述べられることがあるが、当業者は、本発明がそうした個別的な詳細なしでも実施されうることを認識するであろう。さらに、いくつかのよく知られた構造、回路などは、本発明を無用にかすませるのを避けるために詳細に示しはしなかった。
本発明の実施形態は、パーティション分割されたシステムの仮想化機能を向上させるのに使用されうる。
本発明の実施形態の要素は、ハードウェア、ソフトウェア、ファームウェアまたはハードウェア、ソフトウェアもしくはファームウェアの任意の組み合わせで実装できる。ハードウェアという用語は一般に、電子的部品、電磁的部品、工学的部品、電気光学的部品、機械的部品、電気機械部品などといった物理的な構造を有する要素を指す。ソフトウェアという用語は一般に、論理構造、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、公式、表式(expression)などを指す。ファームウェアという用語は一般に、論理構造、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、公式または表式がハードウェア構造(たとえば、フラッシュメモリまたは読み出し専用メモリ)の中に実装または具現されたものを指す。ファームウェアの例はマイクロコード、書き込み可能制御記憶(writable control store)およびマイクロプログラムされた構造である。
図1は、情報処理システム100における本発明のある実施形態を示している。情報処理システム100は、裸のプラットフォーム・ハードウェア110を含む。これは何らかのOS、VMMまたはその他のソフトウェアを実行できるいかなる装置であってもよい。たとえば、裸のプラットフォーム・ハードウェア110は、パーソナル・コンピュータ、メインフレーム・コンピュータ、ポータブル・コンピュータ、ハンドヘルド機器、セットトップボックス、サーバーまたは他の任意のコンピュータ・システムのハードウェアでありうる。この実施形態では、裸のプラットフォーム・ハードウェア110は、一つまたは複数のプロセッサ・パッケージ120、チップセット(単数または複数)130、システム・メモリ140およびデバイス151、152、153および154を含む。
プロセッサ120は、一つまたは複数の実行コアをもついかなるコンポーネントであってもよい。ここで、各実行コアは、インテル(登録商標)ペンティアム(登録商標)プロセッサ・ファミリー、アイテニアム(登録商標)プロセッサ・ファミリーもしくはインテル(登録商標)・コーポレイションからの他のプロセッサ・ファミリーのプロセッサまたは他の会社からの他のプロセッサといった汎用マイクロプロセッサまたはデジタル信号プロセッサまたはマイクロコントローラを含む多様な異なる型のプロセッサのいずれに基づいていてもよいし、あるいは再構成可能コア(reconfigurable core)(たとえば現場プログラム可能なゲートアレイ[field programmable gate array])であってもよい。図1はそのようなプロセッサ120を一つしか示していないが、裸のプロセシング・ハードウェア110はプロセッサをいくつ含んでいてもよく、それにはそれぞれ実行コアの数がいくつでもよいマルチコア・プロセッサがいくつ含まれていてもよく、それぞれスレッドの数がいくつでもよいマルチスレッド・プロセッサがいくつ含まれていてもよい。
チップセット130は、メモリ動作、入出力動作、構成設定、制御、内部もしくは外部インターフェース、接続または通信機能(たとえば「グルー(glue)」ロジックおよびバス・ブリッジ)ならびに/またはプロセッサ120および/またはシステム100のための任意の同様の機能をサポートする回路および論理のいかなるグループであってもよい。チップセット130の個々の要素は、単一チップ、一対のチップ上にグループ化されてもよいし、複数のチップの間に分散されてもよいし、および/またはプロセッサ120を含む一つまたは複数のプロセッサに部分的に、全面的に、冗長にもしくは分散アプローチに従って統合されてもよい。
システム・メモリ140は、データおよび/またはプログラム・コードといった情報が保存されうるいかなる媒体であってもよく、静的もしくは動的ランダム・アクセス・メモリ、半導体ベースの読み出し専用メモリもしくはフラッシュメモリ、磁気もしくは光学式ディスク・メモリまたはプロセッサ120によって読むことのできる他の任意の型の媒体あるいはそのような媒体の任意の組み合わせといったものでありうる。
デバイス151、152、153および154はそれぞれ、任意の数の任意の型のI/Oデバイス、周辺デバイスまたはその他のデバイスを表しうる。キーボード、マウス、トラックボール、ポインティング・デバイス、モニタ、プリンタ、メディア・カード、ネットワーク・インターフェース、情報記憶デバイスなどといったものである。デバイス151、152、153および154のそれぞれは、離散コンポーネントとして具現されてもよいし、あるいはその任意の一つまたは複数が任意の他のデバイスと一緒に統合コンポーネントに含められていてもよい。ある実施形態では、デバイス151、152、153および154はそれぞれ、多機能I/Oデバイス、周辺デバイスまたはその他のデバイス内における異なる機能を表す。
プロセッサ120、チップセット130、システム・メモリ140ならびにデバイス151、152、153および154は、任意の既知のアプローチに従って互いと結合され、あるいは互いと通信してもよい。該既知のアプローチは、直接的または間接的に、一つまたは複数のパラレル、シーケンシャル、パイプライン式、非同期式、同期式、有線、無線または他のバスもしくはポイントツーポイントの接続を通じて、といったものである。たとえば、チップセット130は、デバイス151、152、153および154からのトランザクションを受信するインターフェース133を含む。裸のプラットフォーム・ハードウェア110はまた、追加的なデバイス、エージェント、コンポーネントまたは接続をいくつ含んでいてもよい。
裸のプラットフォーム・ハードウェア110は、パーティション分割技術に従って、パーティション111および112にパーティション分割される。マルチコア・プロセッサ120のコア121、チップセット130のアドレス変換(address translation)論理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)」または「非特権(non-privileged)」のいずれかとして分類されうる。特権資源については、VMMが、その資源に対する究極的な制御は保持しつつ、ゲストによって所望される機能を容易にする。非特権資源はVMMによって制御される必要はなく、ゲストが直接アクセスしてよい。
さらに、各ゲストOSは例外(たとえば、ページ・フォールトおよび一般保護違反)、割り込み(たとえばハードウェア割り込みおよびソフトウェア割り込み)ならびにプラットフォーム・イベント(たとえば初期化およびシステム管理割り込み)といったさまざまなイベントを扱うことを期待する。これらの例外、割り込みおよびプラットフォーム・イベントは、ここでは集団的および個別的に、「仮想化イベント(virtualization event)」と称される。これらの仮想化イベントのいくつかは、VMの適切な動作、ゲストからのVMMの保護およびゲストどうしの間の保護を保証するためにVMMによって扱われる必要があるので、「特権イベント」と称される。
任意の所与の時点において、プロセッサ・コアはVMMまたは任意のゲストからの命令を実行していることがありうる。VMMまたはゲストは、プロセッサ・コア上で走っていてもよいし、プロセッサ・コアの制御で走っていてもよい。特権イベントが発生するか、ゲストが特権資源にアクセスしようとしたとき、制御はゲストからVMMに移されうる。ゲストからVMMへの制御の移転はここでは「VMから出ること(VM exit)」と称される。VMMは、イベントを扱うか資源へのアクセスを容易にするかしたのち、制御をゲストに返しうる。VMMからゲストへの制御の移転はここでは「VMにはいること(VM entry)」と称される。
仮想化をサポートするため、I/Oトランザクションにおいて、デバイス(たとえばデバイス151、152、153または154)をシステム・メモリ140内のドメイン(後述)にマッピングするよう、アドレス変換論理(たとえばアドレス変換論理131または132)が使用されうる。I/Oトランザクションは典型的にはDMA要求(すなわちI/Oデバイスからの、システム・メモリ140に直接アクセスする要求)であるが、他のいかなる型のトランザクションでもよい。アドレス変換論理は、I/Oデバイス割り当ておよび/または管理を容易にするか向上させることをサポートする。アドレス変換論理は、図1に示されるようにチップセット130に含まれてもよいし、部分的または全体的にプロセッサ120または他の任意のプロセッサ、コプロセッサ、チップセットもしくはその他のコンポーネント内に実装されてもよい。
ドメインは、抽象的には、システム中で、システム・メモリ140のある部分集合が割り振られる孤立した環境として定義される。たとえば、VM161、162、163および164のそれぞれはドメインと考えてよい。あるドメインに割り振られたシステム・メモリ部分に直接アクセスすることが許されているデバイスは、そのドメインの割り当てデバイス(assigned device)と称される。ドメインの孤立は、その割り振られたメモリに対する、そのドメインに割り当てられたのでないデバイスからのアクセスを遮断することによって達成される。複数の孤立ドメインをサポートすることは、すべてのデバイスが何らかのドメインに割り当てられることを保証し、各割り当てデバイスからのアクセスをそのドメインに割り振られたメモリに対するアクセスのみに制限することによってできる。
各ドメインは、システム・メモリまたは物理的なアドレス空間のあるビューをもち、それはシステムにとってのメモリのビューとは異なることもある。システムにとってのメモリのビューに従ってシステム・メモリにアクセスするために使われるアドレスを、ホスト物理アドレス(HPA: host physical address)と称する。ドメインの資源によってその物理的なアドレス空間にアクセスするために使われるアドレスを、ゲスト物理アドレス(GPA: guest physical address)と称する。ドメインは、そのGPA空間がHPA空間と同じであるか、HPA空間の部分集合である場合には、非再配置である(non-relocated)と考えられる。ドメインは、その割り振られたHPA空間にアクセスするためにそのGPA空間が変換される場合には、再配置である(relocated)と考えられる。GPA空間とHPA空間の論理的な分離は、メモリ保護を実施する基礎を与える。それは、アドレス保護ならびに可能性としては、あるドメインの割り当てデバイスによって生成されたGPAを検証し、可能性としてはそのGPAを有効なHPAに変換することができる変換機構とを必要とする。アドレス変換論理131および132のようなアドレス変換論理は、時にDMA再マッピング(DMA remapping)と称されるこの機能のためのハードウェア・サポートを提供する。
図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を制御する。
一般に、ゲストは、たとえばI/O動作を試みるときに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に割り当てられている。各デバイスはI/O要求またはDMA要求をDMA_ADRに対して実行しうる。物理メモリのセクション341および345がドメインAに割り振られているが、アドレス変換論理131は、デバイス151からのDMA_ADRに対する要求を、物理メモリ140のセクション341にマッピングする。同様に、物理メモリのセクション343および347がドメインBに割り振られているが、アドレス変換論理131は、デバイス153からのDMA_ADRに対する要求を、物理メモリ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による変換の結果は、再マッピング構造または他のどこかにおけるトランスレーション・ルックアサイド(translation look-aside)などのバッファ内に保存されうる。
図4は、本発明のある実施形態に基づくメモリ・アクセス・データ構造内の項目400を示している。項目400は三つのフィールドを含んでおり、各フィールドはビット位置をいくつ含んでいてもよい。GPAフィールド410は、デバイスがシステム・メモリにアクセスするために使用しうるGPAまたはGPAの一部を保存するものである。HPAフィールド420は、上記のような何らかのメモリ・アドレス変換関数に従ってGPAフィールド410に保存されているGPAに対応する、HPAまたはHPAの一部を保存するものである。ある実施形態では、GPAフィールド410およびHPAフィールド420内に保存されているアドレスのそれぞれは、システム・メモリのあるページの基底アドレスを指定する。それにより、システム・メモリ内のある単一のページへのすべてのアクセスは、メモリ・アクセス・データ構造中においては一つの項目しか必要としない。そのような実施形態では、あるいは他の実施形態でも、メモリ・アクセス・データ構造における単一の項目は、単一のアドレスというよりはある範囲のアドレスを表しうる。
メモリ・アクセス属性フィールド430は、フィールド410および420内の項目に対応するメモリ・アクセス属性を保存するものである。たとえば、メモリ・アクセス・フィールド430を使って保存するものとしては、対応するアドレスもしくはアドレス範囲へのDMA(または他のI/O)トランザクションが許可されるかどうかを示す値、対応するアドレスもしくはアドレス範囲へのDMA(または他のI/O)トランザクションに際してプロセッサ・キャッシュが監視される(snooped)必要があるかどうかを示す値ならびに対応するアドレスもしくはアドレス範囲へのDMA(または他のI/O)トランザクションに関係した他の任意の値もしくは指標がありうる。
図1に戻ると、システム100はパーティション111および112にパーティション分割されている。パーティション分割は、いかなる既知のアプローチに従って実装されてもよい。たとえば、システム初期化の時点でパーティション分割ファームウェアまたはソフトウェアを実行して、デバイスを含むハードウェア資源を各パーティションに割り当てることによってシステムを構成設定するなどである。
デバイスのパーティションへの割り当てを達成および/または維持するのは、いくらでもある手法のいずれに従って行ってもよい。第一の手法では、ある特定のパーティションに対応するメモリ部分にデバイスが割り当てられうる。たとえば、メモリのある部分がある特定のパーティションに割り振られるのは、一つまたは複数の下位アドレス(lower addresses)、上位アドレス(upper addresses)および/またはオフセットを、そのパーティションに対応する一つまたは複数のメモリ範囲またはその他のレジスタ、その他の記憶位置もしくはデータ構造項目に保存することによってでありうる。その場合、デバイスを、メモリのその部分の中でトランザクションを発したりおよび/またはトランザクションに応答したりすることに制限するために、アクセス制御リスト、マップもしくはその他のデータ構造が使用されうる。アクセス制御リスト、マップもしくはその他のデータ構造では、デバイスは、いかなる一意的な識別子で識別されてもよい。識別子はたとえばバス、デバイス、機能番号(BDF: bus, device, function number)といったもので、これは、システム中のある特定のバス上のある特定のデバイス内の該デバイスの特定の機能に従ってデバイスを識別するものである。
第二の手法によれば、パーティションに直接デバイスが割り当てられてもよい。たとえば、システム中の各デバイスの識別子(たとえばBDF)および該デバイスが割り当てられたパーティションの識別子を保存するために、パーティション分割ファームウェアまたはソフトウェアによってあるデータ構造が生成および/または維持されてもよい。あるいはまた、ある種のデバイスは、自分が割り当てられたパーティションの識別子を保存するようプログラムされていてもよい。他のアプローチも本発明の範囲内で可能である。
そのようなデバイス割り当て手法のいずれかに従って、パーティション分割論理190は、あるトランザクションに関わるデバイスが割り当てられたのがどのパーティションであるかを判別する。ある実施形態では、パーティション分割論理190は、デバイスが割り当てられたパーティションを判別するのを、トランザクションに含まれるBDFのようなトランザクションに関連するデバイス識別子を、アクセス制御リストまたは他のそのようなデータ構造中で探索することによって行う。アクセス制御リストは、デバイスが割り当てられているメモリの部分を指示し、それが今度はデバイスが割り当てられているパーティションを指示する。別の実施形態では、トランザクションに関連するデバイス識別子を使って、テーブル、マップまたは他のデータ構造中で、そのデバイスが割り当てられたパーティションを直接示す項目がみつけられてもよい。別の実施形態では、トランザクション・プロトコルが、パーティションを直接特定する手段を含んでいてもよい。それはたとえば、要求元デバイスがトランザクション内にパーティション識別子を含めるようにすることによる。
図5は、図1の実施形態に基づくパーティション分割論理190を示している。探索(look-up)モジュール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にパーティション分割される。パーティション分割は、システム・メモリの諸部分、I/Oデバイスおよびアドレス変換論理といったシステム資源を各パーティションに割り振ることを含む。たとえば、デバイス151はパーティション111に割り振られてもよく、デバイス152はパーティション112に割り振られてもよい。デバイス151および152は、同じゲスト物理アドレス(たとえばDMA_ADR)を含む、システム・メモリのゲスト・ビューを有していてもよい。
ボックス620では、デバイス151が、システム・メモリにアクセスすることに関わるトランザクション、たとえばDMA要求を開始する。トランザクションはデバイス識別子、たとえばデバイス151のBDFおよびゲスト物理アドレス、たとえばDMA_ADRを含んでいる。
ボックス622では、デバイス識別子を使って、デバイスが割り当てられているパーティション、たとえばパーティション111を判別する。ボックス624では、ルックアサイド・キャッシュ項目が生成される。キャッシュ項目は、前記デバイス識別子およびパーティション111に割り振られているアドレス変換論理、たとえばアドレス変換論理131の識別子を含む。
ボックス630では、トランザクションがアドレス変換論理131に経路制御され、それによりデバイス151によって使用されるゲスト物理アドレスDMA_ADRとデバイス152によって使用されるゲスト物理アドレスDMA_ADRとの曖昧さが除去される。ボックス632では、アドレス変換論理131はゲスト物理アドレスDMA_ADRをパーティション111内のホスト物理アドレスに変換する。ボックス634では、ボックス632で見出されたホスト物理アドレスに対して、ボックス620で開始されたトランザクションが完遂される。
ボックス640では、デバイス151は、システム・メモリにアクセスすることに関わるもう一つのトランザクション、たとえばDMA要求を開始する。トランザクションはデバイス識別子、たとえばデバイス151のBDFおよびゲスト物理アドレス、たとえばDMA_ADRを含んでいる。
ボックス642では、デバイス識別子がルックアサイド・キャッシュ内でみつけられる。ボックス644では、トランザクションが、ルックアサイド・キャッシュ内にみつかった項目に基づいてアドレス変換論理131に経路制御される。ボックス646では、アドレス変換論理131がゲスト物理アドレスDMA_ADRをパーティション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記載のシステム。
100 システム
110 裸のプラットフォーム・ハードウェア
111 パーティション
112 パーティション
113 仮想化環境
114 仮想化環境
115 VMM
116 VMM
120 プロセッサ
121 コア
122 コア
130 チップセット
131 アドレス変換論理
132 アドレス変換論理
133 インターフェース
140 システム・メモリ
141 メモリ・アクセス・テーブル
141 メモリ部分
142 メモリ部分
151 デバイス
152 デバイス
153 デバイス
154 デバイス
161 VM
162 VM
163 VM
164 VM
171 ゲストOS
172 ゲストOS
173 ゲストOS
174 ゲストOS
181 ゲスト・アプリケーション
182 ゲスト・アプリケーション
183 ゲスト・アプリケーション
184 ゲスト・アプリケーション
185 デバイス・ドライバ
186 デバイス・ドライバ
187 デバイス・ドライバ
188 デバイス・ドライバ
190 パーティション分割論理
231 レジスタ・セット
232 再マッピング構造
233 論理回路
240 ドメイン
241 デバイス・ドライバ
341 セクション
343 セクション
345 セクション
347 セクション
350 ゲスト・ビュー
351 セクション
353 セクション
400 項目
410 GPA
420 HPA
430 メモリ・アクセス・属性
510 探索モジュール
520 経路制御モジュール
530 デバイス・アクセス・マップ
540 ルックアサイド・キャッシュ
550 ルックアサイド・キャッシュ・マネージャ
600 方法
610 システムのパーティション分割
620 DMA要求
622 パーティションを判別
624 キャッシュ項目を生成
630 要求をアドレス変換論理に経路制御
632 GPAをHPAに変換
634 DMA実行
640 別のDMA要求
642 キャッシュ項目を読む
644 要求をアドレス変換論理に経路制御
646 GPAをHPAに変換
648 DMA実行
650 デバイスを除去
652 キャッシュ項目を無効に

Claims (7)

  1. パーティション分割されたシステムにおいてメモリにアクセスする要求をデバイスから受信するインターフェースと;
    第一のパーティション中の第一のアドレス変換ハードウェアであって、ゲスト・アドレスを前記第一のパーティション中の第一のホスト・アドレスに変換する第一のアドレス変換ハードウェアと;
    第二のパーティション中の第二のアドレス変換ハードウェアであって、前記ゲスト・アドレスを前記第二のパーティション中の第二のホスト・アドレスに変換する第二のアドレス変換ハードウェアと;
    仮想機械から出て仮想機械モニタに移ることを引き起こすことなく前記デバイスが前記第一のパーティションに割り当てられているか前記第二のパーティションに割り当てられているかを判別し、前記デバイスが前記第一のパーティションに割り当てられていると判別するのに応答して前記要求を前記第一のアドレス変換ハードウェアに転送し、前記デバイスが前記第二のパーティションに割り当てられていると判別するのに応答して前記要求を前記第二のアドレス変換ハードウェアに転送するパーティション分割ハードウェアとを有する装置であって、
    前記パーティション分割ハードウェアが、デバイス対パーティション割り当てを決定する探索モジュールと、前記探索モジュールによる以前のデバイス対パーティション割り当てをそれぞれ記憶する複数のエントリーを含むキャッシュとを含む、
    装置。
  2. 前記パーティション分割ハードウェアがさらに、前記探索モジュールによって使用される情報を記憶するデバイス・アクセス・マップを含む、請求項1記載の装置。
  3. 前記パーティション分割ハードウェアがさらに、前記探索モジュールによる決定に応答してトランザクションを前記第一のアドレス変換ハードウェアに経路制御する経路制御モジュールをさらに含む、請求項1記載の装置。
  4. 前記第一のアドレス変換ハードウェアが、変換を実行するためにデータ構造を参照し、前記データ構造は、メモリ・アクセス属性を記憶するメモリ・アクセス属性フィールドを含む、請求項1記載の装置。
  5. 前記メモリ・アクセス属性フィールドが、対応するアドレスへのDMAトランザクションが許可されるかどうかを示す値を記憶する、請求項4記載の装置。
  6. 前記メモリ・アクセス属性フィールドが、前記対応するアドレスへのDMAトランザクションに際してキャッシュが監視されるべきかどうかを示す第二の値を記憶する、請求項5記載の装置。
  7. パーティション分割されたシステムにおいてメモリにアクセスする要求をデバイスから受信する段階と;
    前記デバイスが前記パーティション分割されたシステムにおける第一のパーティションに割り当てられているか第二のパーティションに割り当てられているかを判別する段階と;
    パーティション分割論理のキャッシュ中に記憶するキャッシュ・エントリーを生成する段階であって、各キャッシュ・エントリーはデバイスについてのデバイス識別子および判別されたパーティションに割り当てられたアドレス変換論理の識別子を含む、段階と;
    前記デバイスが前記第一のパーティションに割り当てられていると判別するのに応答して前記要求を前記第一のパーティションの第一のアドレス変換論理に転送する段階と;
    メモリにアクセスする第二の要求を前記デバイスから受信する段階と;
    前記キャッシュ中の前記キャッシュ・エントリーに基づいて前記第二の要求を前記第一のアドレス変換論理に経路制御する段階と;
    前記デバイスの前記システムからの除去に応答して前記キャッシュ・エントリーを無効化する段階とを含む、
    方法。
JP2013199633A 2006-12-27 2013-09-26 パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換 Active JP5735070B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/616,662 2006-12-27
US11/616,662 US7685401B2 (en) 2006-12-27 2006-12-27 Guest to host address translation for devices to access memory in a partitioned system

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2011176569A Division JP2012022694A (ja) 2006-12-27 2011-08-12 パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換

Publications (2)

Publication Number Publication Date
JP2014017012A JP2014017012A (ja) 2014-01-30
JP5735070B2 true JP5735070B2 (ja) 2015-06-17

Family

ID=39048237

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2007332036A Pending JP2008165789A (ja) 2006-12-27 2007-12-25 パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換
JP2011176569A Pending JP2012022694A (ja) 2006-12-27 2011-08-12 パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換
JP2013199633A Active JP5735070B2 (ja) 2006-12-27 2013-09-26 パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2007332036A Pending JP2008165789A (ja) 2006-12-27 2007-12-25 パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換
JP2011176569A Pending JP2012022694A (ja) 2006-12-27 2011-08-12 パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換

Country Status (8)

Country Link
US (1) US7685401B2 (ja)
EP (1) EP1959348B1 (ja)
JP (3) JP2008165789A (ja)
KR (1) KR100914081B1 (ja)
CN (1) CN101236529B (ja)
DE (2) DE102007062744B4 (ja)
FR (1) FR2910985B1 (ja)
GB (1) GB2445831B (ja)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US9317309B2 (en) * 2006-12-28 2016-04-19 Hewlett-Packard Development Company, L.P. Virtualized environment allocation system and method
US7673113B2 (en) * 2006-12-29 2010-03-02 Intel Corporation Method for dynamic load balancing on partitioned systems
US20080229053A1 (en) * 2007-03-13 2008-09-18 Edoardo Campini Expanding memory support for a processor using virtualization
US7979869B2 (en) * 2007-09-28 2011-07-12 Oracle America, Inc. Method and system for performing I/O operations using a hypervisor
US20090217280A1 (en) * 2008-02-21 2009-08-27 Honeywell International Inc. Shared-Resource Time Partitioning in a Multi-Core System
US8442059B1 (en) 2008-09-30 2013-05-14 Gridiron Systems, Inc. Storage proxy with virtual ports configuration
US8838850B2 (en) * 2008-11-17 2014-09-16 Violin Memory, Inc. Cluster control protocol
US8417895B1 (en) * 2008-09-30 2013-04-09 Violin Memory Inc. System for maintaining coherency during offline changes to storage media
US8910169B2 (en) 2008-09-30 2014-12-09 Intel Corporation Methods and systems to perform a computer task in a reduced power consumption state
US8788758B1 (en) 2008-11-04 2014-07-22 Violin Memory Inc Least profitability used caching scheme
US8775741B1 (en) 2009-01-13 2014-07-08 Violin Memory Inc. Using temporal access patterns for determining prefetch suitability
US8443150B1 (en) 2008-11-04 2013-05-14 Violin Memory Inc. Efficient reloading of data into cache resource
US8285961B2 (en) * 2008-11-13 2012-10-09 Grid Iron Systems, Inc. Dynamic performance virtualization for disk access
US8667366B1 (en) 2009-04-17 2014-03-04 Violin Memory, Inc. Efficient use of physical address space for data overflow and validation
US8417871B1 (en) 2009-04-17 2013-04-09 Violin Memory Inc. System for increasing storage media performance
US8713252B1 (en) 2009-05-06 2014-04-29 Violin Memory, Inc. Transactional consistency scheme
US9069676B2 (en) 2009-06-03 2015-06-30 Violin Memory, Inc. Mapping engine for a storage device
US8402198B1 (en) 2009-06-03 2013-03-19 Violin Memory, Inc. Mapping engine for a storage device
JP5491102B2 (ja) * 2009-08-27 2014-05-14 ルネサスエレクトロニクス株式会社 データプロセッサ
US8402246B1 (en) 2009-08-28 2013-03-19 Violin Memory, Inc. Alignment adjustment in a tiered storage system
WO2011044154A1 (en) * 2009-10-05 2011-04-14 Marvell Semiconductor, Inc. Data caching in non-volatile memory
US8688897B2 (en) * 2010-05-28 2014-04-01 International Business Machines Corporation Cache memory management in a flash cache architecture
US8863117B2 (en) 2010-07-19 2014-10-14 International Business Machines Corporation Optimizing a file system interface in a virtualized computing environment
US9229757B2 (en) 2010-07-19 2016-01-05 International Business Machines Corporation Optimizing a file system interface in a virtualized computing environment
US8832384B1 (en) 2010-07-29 2014-09-09 Violin Memory, Inc. Reassembling abstracted memory accesses for prefetching
US8959288B1 (en) 2010-07-29 2015-02-17 Violin Memory, Inc. Identifying invalid cache data
US8954959B2 (en) * 2010-09-16 2015-02-10 Red Hat Israel, Ltd. Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU
US8972689B1 (en) 2011-02-02 2015-03-03 Violin Memory, Inc. Apparatus, method and system for using real-time performance feedback for modeling and improving access to solid state media
US8635416B1 (en) 2011-03-02 2014-01-21 Violin Memory Inc. Apparatus, method and system for using shadow drives for alternative drive commands
WO2013100959A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Processor accelerator interface virtualization
US9355032B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Supporting multiple types of guests by a hypervisor
US9280488B2 (en) * 2012-10-08 2016-03-08 International Business Machines Corporation Asymmetric co-existent address translation structure formats
US9355040B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Adjunct component to provide full virtualization using paravirtualized hypervisors
US9600419B2 (en) 2012-10-08 2017-03-21 International Business Machines Corporation Selectable address translation mechanisms
US9740624B2 (en) * 2012-10-08 2017-08-22 International Business Machines Corporation Selectable address translation mechanisms within a partition
US9348757B2 (en) * 2012-10-08 2016-05-24 International Business Machines Corporation System supporting multiple partitions with differing translation formats
GB2511794B (en) * 2013-03-13 2020-12-02 Advanced Risc Mach Ltd A Protection Unit and Method for Controlling Access by Plural Processes to a Storage Unit
WO2014174580A1 (ja) * 2013-04-22 2014-10-30 富士通株式会社 情報処理装置、方法、及びプログラム
US9411765B2 (en) * 2013-12-20 2016-08-09 Qualcomm Incorporated Methods of using a peripheral component interconnect express (PCIE) device in a virtual environment
US20170075816A1 (en) * 2014-04-24 2017-03-16 Hitachi, Ltd. Storage system
US10089238B2 (en) 2014-07-17 2018-10-02 Qualcomm Incorporated Method and apparatus for a shared cache with dynamic partitioning
US9612970B2 (en) 2014-07-17 2017-04-04 Qualcomm Incorporated Method and apparatus for flexible cache partitioning by sets and ways into component caches
US10180908B2 (en) 2015-05-13 2019-01-15 Qualcomm Incorporated Method and apparatus for virtualized control of a shared system cache
US11163682B2 (en) * 2015-12-29 2021-11-02 Intel Corporation Systems, methods, and apparatuses for distributed consistency memory
US20180203807A1 (en) * 2017-01-13 2018-07-19 Arm Limited Partitioning tlb or cache allocation
CN110336563A (zh) * 2019-05-09 2019-10-15 核芯互联(北京)科技有限公司 一种工作模式选择方法、装置、系统及存储介质
CN112667354B (zh) * 2020-12-30 2022-05-06 上海壁仞智能科技有限公司 计算机可读取存储介质、虚拟化寄存器装置及访问该装置的方法

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0619747B2 (ja) * 1984-01-18 1994-03-16 株式会社日立製作所 I/o命令実行方法、i/o割込処理方法およびそれらを用いた計算機システム
US4843541A (en) * 1987-07-29 1989-06-27 International Business Machines Corporation Logical resource partitioning of a data processing system
US5426748A (en) * 1992-01-03 1995-06-20 International Business Machines Corporation Guest/host extended addressing method and means with contiguous access list entries
US6381682B2 (en) * 1998-06-10 2002-04-30 Compaq Information Technologies Group, L.P. Method and apparatus for dynamically sharing memory in a multiprocessor system
US6976083B1 (en) * 1999-02-19 2005-12-13 International Business Machines Corporation Apparatus for providing direct data processing access using a queued direct input-output device
US6438671B1 (en) * 1999-07-01 2002-08-20 International Business Machines Corporation Generating partition corresponding real address in partitioned mode supporting system
JP2001051900A (ja) * 1999-08-17 2001-02-23 Hitachi Ltd 仮想計算機方式の情報処理装置及びプロセッサ
US7003771B1 (en) * 2000-06-08 2006-02-21 International Business Machines Corporation Logically partitioned processing system having hypervisor for creating a new translation table in response to OS request to directly access the non-assignable resource
JP2002132518A (ja) * 2000-10-25 2002-05-10 Fujitsu Ltd 仮想計算機システムおよび仮想計算機間の入出力装置交換方法
JP4018900B2 (ja) * 2001-11-22 2007-12-05 株式会社日立製作所 仮想計算機システム及びプログラム
US20030110205A1 (en) * 2001-12-07 2003-06-12 Leith Johnson Virtualized resources in a partitionable server
US7124273B2 (en) * 2002-02-25 2006-10-17 Intel Corporation Method and apparatus for translating guest physical addresses in a virtual machine environment
US6834296B2 (en) * 2002-03-01 2004-12-21 International Business Machines Corporation Apparatus and method of multicasting or broadcasting data from one partition of a partitioned computer system to a plurality of other partitions
US7054985B2 (en) * 2002-07-23 2006-05-30 Hewlett-Packard Development Company, L.P. Multiple hardware partitions under one input/output hub
US6895491B2 (en) * 2002-09-26 2005-05-17 Hewlett-Packard Development Company, L.P. Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching
US20040098544A1 (en) * 2002-11-15 2004-05-20 Gaither Blaine D. Method and apparatus for managing a memory system
US7076634B2 (en) * 2003-04-24 2006-07-11 International Business Machines Corporation Address translation manager and method for a logically partitioned computer system
US7424709B2 (en) 2003-09-15 2008-09-09 Intel Corporation Use of multiple virtual machine monitors to handle privileged events
US7200687B2 (en) * 2003-09-25 2007-04-03 International Business Machines Coporation Location-based non-uniform allocation of memory resources in memory mapped input/output fabric
CN1253829C (zh) * 2003-10-15 2006-04-26 大唐微电子技术有限公司 一种优化存储器逻辑分区结构的非cpu集成电路卡
US7467381B2 (en) * 2003-12-16 2008-12-16 Intel Corporation Resource partitioning and direct access utilizing hardware support for virtualization
US7426625B2 (en) * 2004-03-31 2008-09-16 International Business Machines Corporation Data processing system and computer program product for support of system memory addresses with holes
US7257811B2 (en) * 2004-05-11 2007-08-14 International Business Machines Corporation System, method and program to migrate a virtual machine
US8914606B2 (en) * 2004-07-08 2014-12-16 Hewlett-Packard Development Company, L.P. System and method for soft partitioning a computer system
JP4982971B2 (ja) * 2004-09-29 2012-07-25 ソニー株式会社 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US8843727B2 (en) * 2004-09-30 2014-09-23 Intel Corporation Performance enhancement of address translation using translation tables covering large address spaces
US7340582B2 (en) * 2004-09-30 2008-03-04 Intel Corporation Fault processing for direct memory access address translation
US7302547B2 (en) * 2004-09-30 2007-11-27 Hewlett-Packard Development Company, L.P. Method and system for supporting virtual mappings for shared firmware
US9058292B2 (en) * 2004-12-29 2015-06-16 Intel Corporation System and method for one step address translation of graphics addresses in virtualization
US7395405B2 (en) 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US20060288130A1 (en) 2005-06-21 2006-12-21 Rajesh Madukkarumukumana Address window support for direct memory access translation
US7987464B2 (en) * 2006-07-25 2011-07-26 International Business Machines Corporation Logical partitioning and virtualization in a heterogeneous architecture

Also Published As

Publication number Publication date
DE102007062744B4 (de) 2018-09-06
FR2910985A1 (fr) 2008-07-04
EP1959348B1 (en) 2018-05-16
GB2445831A (en) 2008-07-23
US20080162864A1 (en) 2008-07-03
JP2012022694A (ja) 2012-02-02
KR20080063125A (ko) 2008-07-03
KR100914081B1 (ko) 2009-08-27
JP2008165789A (ja) 2008-07-17
DE102007063946B4 (de) 2024-04-25
GB2445831B (en) 2010-03-31
DE102007062744A1 (de) 2008-08-14
EP1959348A2 (en) 2008-08-20
CN101236529B (zh) 2013-02-06
CN101236529A (zh) 2008-08-06
US7685401B2 (en) 2010-03-23
GB0724597D0 (en) 2008-01-30
FR2910985B1 (fr) 2015-09-04
EP1959348A3 (en) 2009-07-22
JP2014017012A (ja) 2014-01-30

Similar Documents

Publication Publication Date Title
JP5735070B2 (ja) パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換
JP5214611B2 (ja) 仮想マシン環境におけるゲスト間での情報の共有
US7467381B2 (en) Resource partitioning and direct access utilizing hardware support for virtualization
JP4668166B2 (ja) ゲストがメモリ変換されたデバイスにアクセスする方法及び装置
US8041920B2 (en) Partitioning memory mapped device configuration space
KR101179341B1 (ko) 메모리 액세스 데이터 구조에 기초하는 직접 캐시 액세스트랜잭션의 수행
US7376949B2 (en) Resource allocation and protection in a multi-virtual environment
US8225071B2 (en) Accessing multiple page tables in a computer system
CN109074316B (zh) 页面错误解决方案
US8473565B2 (en) Abstracting special file interfaces to concurrently support multiple operating system levels
US9875132B2 (en) Input output memory management unit based zero copy virtual machine to virtual machine communication
US10430221B2 (en) Post-copy virtual machine migration with assigned devices
US20110264841A1 (en) Sharing of class data among virtual machine applications running on guests in virtualized environment using memory management facility
US20200073691A1 (en) Secure and efficient memory sharing for guests
US20070220231A1 (en) Virtual address translation by a processor for a peripheral device
CN113626148A (zh) 一种基于混合虚拟化的终端虚拟机生成系统及方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140612

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140805

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141029

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150317

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150415

R150 Certificate of patent or registration of utility model

Ref document number: 5735070

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250