JP5584220B2 - コンフィギュレーション空間仮想化 - Google Patents

コンフィギュレーション空間仮想化 Download PDF

Info

Publication number
JP5584220B2
JP5584220B2 JP2011530201A JP2011530201A JP5584220B2 JP 5584220 B2 JP5584220 B2 JP 5584220B2 JP 2011530201 A JP2011530201 A JP 2011530201A JP 2011530201 A JP2011530201 A JP 2011530201A JP 5584220 B2 JP5584220 B2 JP 5584220B2
Authority
JP
Japan
Prior art keywords
space
memory
mapped
virtual machine
computer
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
JP2011530201A
Other languages
English (en)
Other versions
JP2012504821A5 (ja
JP2012504821A (ja
Inventor
オシンズ,ジェイコブ
オルソップ,ブランドン
ソーントン,アンドリュー・ジョン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2012504821A publication Critical patent/JP2012504821A/ja
Publication of JP2012504821A5 publication Critical patent/JP2012504821A5/ja
Application granted granted Critical
Publication of JP5584220B2 publication Critical patent/JP5584220B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/45558Hypervisor-specific management and integration aspects
    • 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/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Description

[0001] ここに開示する主題は、計算の分野に関し、更に特定すれば、コンピューターの仮想化に関するが、仮想化は非限定的分野の一例に過ぎない。
従来技術
[0002] 殆どの入力/出力(I/O)デバイスは、システムにおいてI/Oデバイスの全てを設定する(configure)信頼できるソフトウェアが1つ存在することを仮定して設計されている。また、通例では、これらのI/Oデバイスは、個々のデバイスの相違を抽象化するプラグイン・モジュールであるデバイス・ドライバーによって根本的に制御されることも仮定している。更に、これらのデバイス全てが1つのカーネルに含まれることも仮定している。
[0003] しかしながら、仮想マシンのコンテキストでは、以上の仮定がもはや有効ではない場合もある。各仮想マシンは、通例、それ自体のオペレーティング・システム・カーネルを含むが、このカーネルは、他の仮想マシン全てにおいて実行する全てのカーネルによって信頼されている場合も、されていない場合もある。物理ホスト内でデバイスを設定し制御するには、一方の仮想マシンからのアクションが他の仮想マシンにどのように影響を及ぼし得るかに関する方針を施行することができる何らかの中央オーソリティが必要となる。システムによっては、この中央オーソリティがホスト・オペレーティング・システムの中にある場合がある。他のシステムでは、そのオーソリティがハイパーバイザー内にあるかもしれず、更に他のシステムでは、オーソリティがハイパーバイザーの上で実行する仮想マシンの1つと共存する場合もある。
[0004] 仮想化システムを作るとき、1つの手法では、前述の中央オーソリティ内に全てのI/Oデバイスの完全な制御を維持することが考えられる。つまり、仮想マシンがI/Oサービスを必要とするとき、この仮想マシンは、I/Oを制御する中央オーソリティに要求を(直接または間接的に)渡すことができる。この手法は有効に作用することができるが、2つの問題がある。第1に、I/Oは、仮想マシンではなく物理ハードウェアにおいて実行するオペレーティング・システムと比較すると、動作する速度が遅い。第2に、仮想マシンに対して表現されるI/Oデバイスの範囲が、仮想化ソフトウェアによって限定される場合がある。物理コンピューター内にあるデバイスの各々を、その中で実行する仮想マシンの1つ以上に割り当てることができれば望ましいであろう。このようにすると、I/Oは、間接的な処置(indirection)に伴う性能低下を被ることなく、そして仮想化レイヤーが完全にその内部機能を理解することを必要とせずに、コンピューターに差し込むことができる任意のデバイスを仮想マシンによって用いることができるようになる。
[0005] したがって、当技術分野では、前述の問題を解決するために他の技法が求められている。
[0006] 本明細書では、(1)デバイスにおけるどの動作がシステム規模の効果を有する可能性があるか、および(2)どの動作がそのデバイスに対してローカルな効果を有するかを、特権オーソリティ(例えば、ハイパーバイザーまたは仮想化システムの他の特権態様)に示すデバイスの記述を作成するまたは受け取ることによって、デバイスと相互作用する非特権仮想マシン(デバイスに対してシステム規模の方針を所有していない仮想マシン)の挙動を制限する種々の態様を開示する。次いで、特権オーソリティはこれらのアクションを許可または拒否することができる。また、特権オーソリティはこれらのアクションを、適度な成果(benign consequences)が得られる他のアクションに変換することもできる。
[0007] 一実施形態では、デバイス毎に、コンフィギュレーション空間のマップを作ることができ、コンフィギュレーションにおける各ビットが、以下のプロパティの内1つ以上を有することができる。
i. 読み取りのみ。
ii. 常に0を読み取る。
iii. 常に1を読み取る。
iv. 書き込み−読み取り。
v. 1の書き込みをクリアし、0の書き込みのみを残す。
vi. 1の書き込みをセットし、0の書き込みのみを残す。
vii. 0の書き込みをクリアし、1の書き込みのみを残す。
viii.0の書き込みをセットし、1の書き込みのみを残す。
ix. 最初の読み取りの後0にクリアする。
x. 最初の書き込みの後1にセットする。
[0008] 以上の挙動は例であり、メモリー位置において許されるアクションを制限するために、他の挙動も含めることができる。また、MMIO空間のマップも作ることができ、各ページを仮想マシンにマッピングすることができる。仮想マシンのマップから除外されたページについて、特権オーソリティは、デバイスのように見える静止画像をそのページに収容することを選択することもできる。あるいは、特権オーソリティは、傍受を受け取り、コンフィギュレーション空間をこれらの特定のページに適用されるマップと共に用いてこれらの傍受を扱うことを選択することもできる。
[0009] 更に別の実施形態では、安全にデバイスを含めるための情報を交換する方法を開示する。実施形態によっては、マップの表現をドライバー・インストール・ファイルに埋め込むことができる。インストール・ファイルには、これらを製作した当事者によってディジタル署名することもできる。したがって、マシン・アドミニストレータは、実際にそのデバイスのドライバーを特権オーソリティにインストールすることなく、特権オーソリティにインストール・ファイルを処理させることができる。ドライバーを仮想マシンにインストールすることができ、デバイスは、仮想マシンにおいて作動可能になり、デバイスが他の仮想マシンや特権オーソリティに影響を及ぼさないように抑制する(contain)ことができる。
[0010] 以上のことに加えて、本開示の一部をなす特許請求の範囲、図面、および本文には、他の態様についても記載する。尚、本開示の1つ以上の種々の態様は、本開示の本明細書において参照した態様を実施するための回路および/またはプログラミングを含むがこれらには限定されないことは、当業者には認めることができよう。これらの回路および/またはプログラミングは、システム設計者の設計選択に応じて本明細書において参照する態様を実施するように構成されているハードウェア、ソフトウェア、および/またはファームウェアの事実上あらゆる組み合わせとすることができる。
[0011] 尚、この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられていることは注記してしかるべきである。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定する際に補助として用いられることを意図するのでもない。
[0012] 以上の摘要、および以下の詳細な説明は、添付図面と合わせて読むと一層深く理解することができる。本開示を例示するために、本開示の種々の態様を示す。しかしながら、本開示は示される具体的な態様に限定されるのではない。以下の図面が含まれる。
図1aは、複数の仮想プロセッサーおよび対応するゲスト・オペレーティング・システムを備えている、複数の仮想マシンがある仮想マシン環境を示す。これらの仮想マシンは、スケジューラーおよび他のコンポーネントを備えることができる仮想化レイヤーによって維持されており、この仮想化レイヤーが複数の仮想マシンのハードウェアを仮想化する。 図1bは、コンピューター・システムにおける仮想化環境のためのハードウェアおよびソフトウェア・アーキテクチャの論理階層(layering)を表す図を示す。 図1cは、本開示の態様を実現することができるコンピューター・システムの一例を示す。 図2は、仮想化計算システムの一例を示す。 図3は、代わりの仮想化計算システムを示す。 図4は、PCIデバイスに関する場合のIO空間およびMMIOを表すシステム図の一例を示す。 図5は、RAMが存在することができるアドレス空間を示す図の例である。 図6は、非特権仮想マシンとIOデバイスとの間におけるトランザクションのグローバルおよびローカル効果を管理するための動作手順の一例を示す。 図7は、非特権仮想マシンとIOデバイスとの間におけるトランザクションのグローバルおよびローカル効果を管理するための動作手順の一例を示す。 図8は、デバイスと相互作用する非特権仮想マシンのグローバルおよびローカル効果を管理するための動作手順の一例を示す。 図9は、デバイスと相互作用する非特権仮想マシンの挙動を制限するための動作手順の一例を示す。 図10は、先に図1から図9に関して論じたコンピューター実行可能命令を保つコンピューター読み取り可能媒体を示す。
一般的条件における仮想マシン
[0025] 以下の説明および図面において、本発明の種々の実施形態の完全な理解を得るために、一定の具体的な詳細を明記する。計算およびソフトウェア技術と関連のあることが多いある種の周知の詳細については、本発明の種々の実施形態を不必要に曖昧にすることを避けるために、以下の開示では明記しないこととする。更に、当業者は、以下に説明する詳細の内1つ以上がなくても、本発明の他の実施形態を実施できることを、当業者には理解できよう。最後に、以下の開示においてはステップおよびシーケンスを参照して種々の方法について説明するが、そのような説明は、本発明の実施形態の明確な実施態様を規定するためであり、これらのステップおよびステップのシーケンスが本発明を実施するために必須であると捉えてはならない。
[0026] 尚、本明細書において説明する種々の技法は、ハードウェアまたはソフトウェアによって、そして適切である場合には、双方の組み合わせによって実現できることは言うまでもない。つまり、本発明の方法および装置、あるいはそのある種の態様または部分は、フロッピー・ディスケット、CD−ROM、ハード・ドライブ、または任意の他のマシン読み取り可能記憶媒体というような、有形媒体に具体化されたプログラム・コード(即ち、命令)という形態をなすことができる。そして、このプログラム・コードをコンピューターのようなマシンにロードしそれによって実行すると、そのマシンは本発明を実施する装置となる。プログラマブル・コンピューターにおけるプログラム・コード実行の場合、計算機は、一般に、プロセッサー、このプロセッサーによって読み取り可能な記憶媒体(揮発性および不揮発性メモリーおよび/または記憶エレメントを含む)、少なくとも1つの入力デバイス、ならびに少なくとも1つの出力デバイスを含む。1つ以上のプログラムは、例えば、API、再利用可能な制御部等の使用によって、本発明と関連付けて説明するプロセスを実現または利用することができる。このようなプログラムは、好ましくは、コンピューター・システムと通信するために、高度手順プログラミング言語またはオブジェクト指向プログラミング言語で実装される。しかしながら、プログラム(1つまたは複数)は、望ましければ、アセンブリまたは機械語でも実装することができる。いずれの場合でも、言語はコンパイラまたはインタプリタ言語であればよく、ハードウェアの実施態様と組み合わせてもよい。
[0027] 図1aは、複数の仮想マシン120、121を有する仮想マシン環境100を示す。仮想マシン120、121は、複数の仮想プロセッサー110、112、114、116、および対応するゲスト・オペレーティング・システム130、132を備えている。仮想マシン120、121は、スケジューラー142および他のコンポーネント(図示せず)を備えることができる仮想化レイヤー140によって維持されており、この仮想化レイヤー140は、複数の仮想マシン120、121に合わせてハードウェア150を仮想化する。複数の仮想プロセッサー110、112、114、116は、基礎となるハードウェア物理プロセッサー160、162の仮想的な相当物となる。
[0028] 図1bは、コンピューター・システムにおける仮想化環境に合わせたハードウェアおよびソフトウェア・アーキテクチャの論理レイヤーリングを表す図である。図1bにおいて、仮想化プログラム180は、物理ハードウェア・アーキテクチャ182において直接または間接的に実行する。仮想化プログラム180は、(a)ホスト・オペレーティング・システムと共に実行する仮想マシン・モニター、(b)ハイパーバイザー・コンポーネントを有するホスト・オペレーティング・システムであって、ハイパーバイザー・コンポーネントが仮想化を実行する、ホスト・オペレーティング・システム、(c)ハードウェア、または(d)マイクロ・コードとすることができる。また、仮想化プログラムは、任意のオペレーティング・システムとは別個に実行するハイパーバイザーであってもよい。言い換えると、ハイパーバイザー仮想化プログラムは、いずれのオペレーティング・システムの一部として実行する必要はなく、いずれのオペレーティング・システムと共に実行する必要もない。ハイパーバイザー仮想化プログラムは、代わりに、「ルート・パーティション」(root partition)を含むあらゆるオペレーティング・システムの「下で」実行することができる。仮想化プログラム180は、ゲスト・ハードウェア・アーキテクチャ179)このコンポーネントは「パーティション」または「仮想マシン」であるという事実を示すために、破線で示されている)を仮想化する。即ち、実際には存在しないが代わりに仮想化プログラム180によって仮想化されているハードウェアである。ゲスト・オペレーティング・システム176は、ゲスト・ハードウェア・アーキテクチャ178において実行し、ソフトウェア・アプリケーション174がゲスト・オペレーティング・システム176において実行することができる。図1bの仮想化動作環境では、ソフトウェア・アプリケーション174が、ホスト・オペレーティング・システムやハードウェア・アーキテクチャ182とは一般に互換性のないオペレーティング・システムにおいて実行するように構成されているかのように、ソフトウェア・アプリケーション174はコンピューター・システムにおいて実行することができる。
[0029] 仮想マシンは、通例、オペレーティング・システム全体、および1組のアプリケーションを内蔵し、これらのアプリケーションが一緒になって多くのプロセスを構成する。仮想マシンのコンテキストでは、これらのプロセス全体を「ワークロード」または「プロセス」と呼ぶことができる。本開示では、「プロセス」および「ワークロード」という用語は、仮想マシンのコンテキストでは相互交換可能に用いることができ、「プロセス」とは仮想マシンにおいてインスタンス化することができるシステムおよびアプリケーションの全てを含む複数のプロセスに言及できることは、当業者には容易に理解できよう。
[0030] 次に、図2は、物理コンピューター・ハードウェア202の直接上(above)で実行するホスト・オペレーティング・システム(ホストOS)ソフトウェア・レイヤー204を備えている仮想化計算システムを示す。ここで、ホストOS204は、オペレーティング・システムA212およびB214による使用のために、それぞれ、インターフェースをパーティションA208およびB210に露出することによって、物理コンピューター・ハードウェア202のリソースへのアクセスを与える。これによって、ホストOS204が、その上で実行するオペレーティング・システム・レイヤー212および214に気付かれずに(unnoticed)動作することが可能になる。この場合も、仮想化を実行するために、ホストOS204は、ネーティブ仮想化能力を有する、特別に設計されたオペレーティング・システムとするとよく、あるいは仮想化を実行するためのハイパーバイザー・コンポーネント(図示せず)が組み込まれた標準的なオペレーティング・システムであってもよい。
[0031] 再度図2を参照すると、ホストOS204の上には、2つのパーティション、即ち、例えば、仮想化インテル386プロセッサーとすることができるパーティションA208、および例えば、モトローラ680X0ファミリー・プロセッサーの内の1つの仮想化バージョンとすることができるパーティションB210である。各パーティション208および210の中には、それぞれ、ゲスト・オペレーティング・システム(ゲストOS)A212およびB214がある。ゲストOS A212の上で実行するのは、2つのアプリケーションA1 216およびアプリケーションA2 218であり、ゲストOS B214の上で実行するのは、アプリケーションB1 220である。
[0032] 図2に関して、パーティションA208およびパーティションB214(破線で示されている)が仮想化コンピューター・ハードウェア表現であり、ソフトウェア構成としてのみ存在できることを注記するのは重要である。これらは、特殊な仮想化ソフトウェア(1つまたは複数)の実行によって可能になる。パーティションA208およびパーティションB210をゲストOS A212およびゲストOS B214にそれぞれ提示するだけでなく、ゲストOS A212およびゲストOS B214が実在の物理コンピューター・ハードウェア202と間接的に相互作用するために必要なソフトウェア・ステップの全てを実行する。
[0033] 図3は、代わりの仮想化計算システムを示し、ここでは、ホスト・オペレーティング・システム204”と共に実行する仮想マシン・モニター(VMM)204によって仮想化が実行される。ある種の場合、VMM204’は、ホスト・オペレーティング・システム204”の上で実行し、ホスト・オペレーティング・システム204”を通じてのみコンピューター・ハードウェア202と相互作用するアプリケーションとなることもある。他の場合では、図3に示すように、VMM204’は、代わりに、あるレベルではホスト・オペレーティング・システム204”を通じてコンピューター・ハードウェア202と間接的に相互作用する部分的に独立したソフトウェア・システムを備えることができるが、他のレベルでは、VMM204’は、コンピューター・ハードウェア202(ホスト・オペレーティング・システムが直接コンピューター・ハードウェアと相互作用する方法と同様)と直接相互作用する。そして更に別の場合では、VMM204’が完全に独立したソフトウェア・システムを備えることもでき、ホスト・オペレーティング・システム204”を利用することなく(コンピューター・ハードウェア202の使用を調整しコンフリクト等を回避するために、ホスト・オペレーティング・システム204”と相互作用することには変わりないが)全てのレベルでコンピューター・ハードウェア202と直接相互作用する(ホスト・オペレーティング・システムがコンピューター・ハードウェアと直接相互作用する方法と同様)。
[0034] 図4は、PCIデバイスに関する場合のI/O空間およびMMIOを表すシステム図の一例を示す。PCI仕様書では、3つのアドレス空間、即ち、メモリー、I/O、およびコンフィギュレーションが定められている。MMIOという用語は、本明細書では、PCI用語の「メモリー」をRAMと区別するために、PCI仕様書において定められている「メモリー」を指すために用いられる。図4は、システム・バス400、物理メモリー410、プロセッサー420、レジスタ460を有するPCIデバイス430、およびホスト−PCIブリッジ・デバイス440を含む。ホスト−PCIブリッジ・デバイス440に取り付けられているのはPCIバス450であり、PCIバスに取り付けられているのはPCIデバイス430である。PCIデバイス430は、デバイスを制御するためにシステム・プロセッサーから読み取られそして書き込まれなければならないメモリー位置において、1つ以上のレジスタ460を内蔵する。物理メモリー・アドレス空間は、別のアドレス空間とすることができるIOポート空間とは別個であってもよいことが分かる。IOリソースをMMIOリソースに変換することができ、これは、IOポート・アドレス空間をメモリー・マップドIOポート・アクセスを通じてマッピングできる1つの理由となる。
[0035] 図5を参照すると、RAMが存在することができるアドレス空間500を示す図が描かれている。図示のように、メモリー・マップド入力/出力(MMIO)エリア510が同じアドレス空間にも存在することができる。典型的な最近のアドレス空間に基づくハードウェア制御インターフェースが、このアドレス空間のMMIO部分に存在する。システムの物理アドレス空間は、一般に、仮想コンピューター・システムの「物理」アドレス空間500も指す「ゲスト物理アドレス空間」のように、物理コンピューター・システムの物理アドレス空間500も指す。物理メモリー・アドレス空間500は、IOポート空間とは別である。この別のIOポート空間は、より古いデバイスを制御するために用いることができ、またより新たなデバイスを設定し構成するためにも用いることができる。これは、PCIコンフィギュレーション空間が通例IOポート空間を通じてアクセスされるからである。更に、IOポート空間アドレスは、通例、32ビットや64ビットではなく、16ビットである。
[0036] 前述のパーティションを実現するためのこれらの変形は全て、単なる例示的な実施態様に過ぎず、本明細書では、本開示を任意のいずれかの仮想化態様に限定するように解釈すべきものはない。
コンフィギュレーション空間の仮想化
[0037] 殆どの入力/出力(I/O)デバイスは、システムにおいてI/Oデバイスの全てを設定する(configure)信頼できるソフトウェアが1つ存在することを仮定して設計されている。また、通例では、これらのI/Oデバイスは、個々のデバイスの相違を抽象化するプラグイン・モジュールであるデバイス・ドライバーによって究極的に制御されることも仮定している。更に、これらのデバイス全てが1つのカーネルに含まれることも仮定している。
[0038] しかしながら、仮想マシンのコンテキストでは、以上の仮定がもはや有効ではない場合もある。各仮想マシンは、通例、それ自体のオペレーティング・システム・カーネルを含み、このカーネルが、他の仮想マシン全てにおいて実行する全てのカーネルによって信頼されている場合も、されていない場合もある。物理ホスト内でデバイスを設定し制御するには、一方の仮想マシンからのアクションが他の仮想マシンにどのように影響を及ぼし得るかに関する方針を施行することができる何らかの中央オーソリティが必要となる。システムによっては、この中央オーソリティがホスト・オペレーティング・システムの中にある場合がある。他のシステムでは、そのオーソリティがハイパーバイザー内にあるかもしれず、更に他のシステムでは、オーソリティがハイパーバイザーの上で実行する仮想マシンの1つと共存する場合もある。
[0039] 仮想化システムを作るとき、1つの手法では、前述の中央オーソリティ内に全てのI/Oデバイスの完全な制御を維持することが考えられる。つまり、仮想マシンがI/Oサービスを必要とするとき、この仮想マシンは、I/Oを制御する中央オーソリティに要求を(直接または間接的に)渡すことができる。この手法は容認できる場合もあるが、2つの問題がある。第1に、I/Oは、仮想マシンではなく物理ハードウェアにおいて実行するオペレーティング・システムと比較すると、動作する速度が遅い。第2に、仮想マシンに対して表現されるI/Oデバイスの範囲が、仮想化ソフトウェアによって限定される場合がある。物理コンピューター内にあるデバイスの各々を、その中で実行する仮想マシンの1つ以上に割り当てることができれば望ましいであろう。このようにすると、間接的な処置(indirection)に伴う性能低下を被ることなく、そして仮想化レイヤーが完全にその内部機能を理解することを必要とせずに、コンピューターに差し込むことができる任意のデバイスを仮想マシンによってI/Oを用いることができるようになる。
[0040] 例えば、ネットワーク・インターフェース・コントローラ(NIC)を物理マシンに差し込む場合、仮想化ソフトウェアがNICを制御し操作すると仮定することは正当であろう。NICは、共通であり、NIC販売業者は、普及しているオペレーティング・システムおよび仮想化システムの双方にデバイス・ドライバー・ソフトウェアを提供することを望む場合もある。一方、もっと難解なデバイスがコンピューターに差し込まれた場合、対応する仮想化ソフトウェアが入手可能である可能性は低くなる。つまり、仮想マシンがデバイスをどのように用いるかについて全く理解することなく、この仮想マシンにそのデバイスに直接アクセスさせることができれば望ましいであろう。
[0041] 生憎、難解なデバイスのコンフィギュレーションおよびセットアップは、システム規模の成り行きを有する場合があり、これが他の仮想マシンの機能に影響を及ぼす可能性がある。例えば、デバイスをオンにすると、流入電流スパイクが発生し、この流入が他の流入スパイクと同時に発生した場合、コンピューター全体に電圧低下が発生する原因になる虞れがある。他の例では、デバイスを設定するには、メモリー・アドレス空間の範囲を要求するようにそのデバイスに命令することができるが、この範囲が他のデバイスまたは主メモリーによって占有されている可能性がある。最後の例として、多くの他のデバイスと共に、デバイスをチップ内にパッケージ化することができる。周辺素子相互接続(PCI)仕様の条件では、このようなデバイスを「機能」と呼び、チップを「パッケージ」と呼ぶ。パッケージは、バスに対して1つの接続(または、PCI−Expressの場合、ファブリックに対する接続)を有することができ、パッケージ内部にある各機能は、システムの残り部分に接続することに関連のあるハードウェアの一部を共有することができる。この場合、最も低い番号が付けられた機能(#0)のコンフィギュレーションが、それよりも高い番号が付けられた機能の動作において見ることができる副作用をしばしば有する可能性がある。機能0が仮想マシンの制御下にある場合、同じパッケージにおける他の機能は、その仮想マシンにおいて行われる選択によって影響を受ける可能性がある。このため、他の仮想マシンは、他のマシンの制御下にある機能からサービスを受けられなくなる可能性、または貧弱なサービスしか受けられなくなる可能性がある。
[0042] 本明細書において開示する種々の実施形態において、デバイスと相互作用する非特権仮想マシンの挙動は、そのデバイスの記述を作成することによって制限することができる。この記述は、(1)そのデバイスにおけるどの動作がシステム規模の副作用を有する可能性があるか、および(2)どの動作がそのデバイスにローカルな影響を有するかを特権オーソリティ(例えば、ハイパーバイザーまたは仮想化システムの他の特権態様)に示す。非特権仮想マシンとは、システムまたはデバイスに対してシステム規模の方針を所有しない仮想マシンを指す。言い換えると、非特権仮想マシンは、ハイパーバイザーやペアレント/ルート/ホストOSではない。そして、特権オーソリティはこれらのアクションを許可または拒否することができる。また、特権オーソリティはこれらのアクションを、適度な成果が得られる他のアクションに変換することもできる。
[0043] デバイスのドライバーを特権オーソリティのコンテキストにロードすることによって、以上の方法の一部を実現することが可能になると考えられるが、このような手法は、特権オーソリティにおいて余分なコードが必要になるため、通例では望ましくない。特権オーソリティ内部におけるコード量を最小限にすることは、仮想化システムを安全かつ効率的にするためには重要であることが多い。
[0044] 更に、PCI機能全体(例えば、単にデバイスの1部分集合ではなく)を非特権仮想マシンの管理下に置くことを許可するとき、デバイスのリソースを多くの仮想マシンに再割り当て(sub-allocate)するためのコードが特権オーソリティ内には全くない場合がある。この再割り当てプロセスは、多くの仮想マシン間でデバイスを共有するときには極普通である。対照的に、本開示は、ディスクリート・デバイス全体を仮想マシンの制御下に置く方法について記載する。
[0045] 一実施形態では、各PCI(またはPCI−X、またはPCI−Express)デバイスが2箇所または3カ所のアドレス空間を実装することができる。第1アドレス空間は、メモリー・マップドI/O空間として記述することができ、RAMアドレシングと同様に振る舞うことができる。デバイスに対する読み出しおよび書き込みは、RAMに対する読み出しおよび書き込みのように実行することができるが、異なるアドレスを用いる。図5を参照すると、RAMアドレス空間520は、例えば、メモリー・アドレス空間の最初の2GBを占有することができ、I/Oデバイスは3GB(アドレス3221225472)および4GB(アドレス4294978296)の間にあるアドレス空間510を占有する。MMIOアドレス空間は、デバイス・ドライバーによるデバイスとの刻々の相互作用に用いることができる。MMIOアドレス空間へのアクセスは通例素早く、通常そのデバイスのデバイス・ドライバー(通例、デバイス販売業者によって供給される)によって実行される。デバイスをオフにすると、デバイスはいずれのMMIO空間もデコードしないのが通例である。
[0046] 実装することができる第2アドレス空間は、PCIデバイスによって実装されるコンフィギュレーション空間である。このコンフィギュレーション空間には、デバイスを設定するためのメカニズム(例えば、レジスタ)を収容する(populate)ことができる。このようなメカニズムには、デバイスをオフおよびオンに切り換えること、リソースを割り当てること等を含むことができる。コンフィギュレーション空間は、通例、デバイスがオンになっているかまたはオフになっているかには係わらずデコードされる。PCI仕様は、この空間内にあるレジスタの一部の挙動を識別する。これらのレジスタは、包括的なコンフィギュレーション・ソフトウェア(デバイス販売業者によって供給されるのではない)が、デバイスを設定し、リソースをデバイスに割り当て(MMIO空間アドレスの指定範囲のように)、そしてデバイスをオンにすることを可能にする。コンフィギュレーション空間は、PCI仕様によって定義される意味を有さないデバイス特定レジスタを含むことができ、通常これらのレジスタを含む。このようなレジスタは、通例、デバイスに合ったデバイス・ドライバーによってでなければ操作することができない。最後に、「能力構造」(capability structures)と呼ばれるコンフィギュレーション空間に新たな範囲を定めることによって、新たな機構をPCI仕様に追加することもできる。
[0047] PCIデバイスが用いることができる第3アドレス空間は、「I/O」空間と呼ばれ、主に履歴的(historical)である。一般に、I/O空間はMMIO空間のプロパティを有する。
[0048] ハイパーバイザーまたは他の仮想化仲介物(intermediary)のような特権オーソリティは、コンフィギュレーション空間の内どの部分を非特権仮想マシンの制御下に置くことができるか判断する必要がある場合がある。以下に開示する実施形態では、ハイパーバイザーを特権オーソリティとして記述する。しかしながら、開示する実施形態は任意の他の仮想化仲介物とでも実現できることは、当業者には容易に明らかとなるはずである。
[0049] 更に、ハイパーバイザーは、非特権仮想マシンがアクセスすることができるMMIOおよびI/O空間の部分を含もうとすることができる。種々の実施形態において、本開示は非特権仮想マシンの挙動を含む方法について記載する。一実施形態では、デバイス毎に、コンフィギュレーション空間のマップを作り、このマップ内における各ビットが以下のプロパティの1つ以上を有する。
i. 読み取りのみ。
ii. 常に0を読み取る
iii. 常に1を読み取る
iv. 書き込み−読み取り
v. 1の書き込みをクリアし、0の書き込みのみを残す
vi. 1の書き込みをセットし、0の書き込みのみを残す
vii. 0の書き込みをクリアし、1の書き込みのみを残す
viii.0の書き込みをセットし、1の書き込みのみを残す
ix. 最初の読み取りの後0にクリアする
x. 最初の書き込みの後1にセットする
[0050] 以上の挙動は一例であり、メモリー位置において許されるアクションを制限するために、追加の挙動を含むこともできる。また、バイト、またはページのようなメモリーのもっと大きなセグメントというような、もっと高い粒度レベルで、メモリー位置に挙動をマッピングすることもできる。
[0051] MMIO空間のマップを作ることができ、各ページを仮想マシンにマッピングすることができ、または仮想マシンにマッピングしなくてもよい。このマップは、ビット粒度の代わりに、ページ粒度を用いて作ることができる。ビット粒度を用いる場合、MMIO空間のビットが多数になる可能性があり、その結果マップが不当に大きくなる虞れがある。更に、プロセッサーは通例ハイパーバイザーにページ粒度のみで傍受する(intercept)能力を与えるので、ビット・レベルのマップを作ることは、ハイパーバイザーがあらゆるMMIO動作を傍受し、マップによって暗示されている適正なフィルタを適用しなければならないことを必ず伴う。このようなデバイスの動作との一定の干渉は、デバイスの動作に負の影響を及ぼす可能性がある。
[0052] デバイスによっては、レジスタをそのコンフィギュレーション空間から2回目にそのI/OまたはMMIO空間にマッピングする場合もある。これを行うとよいのは、コンフィギュレーション空間へのアクセスは通例時間がかかり、デバイスを設定する前にレジスタへのアクセスを与えることが便利であると考えられるからであり、その場合、マッピングはコンフィギュレーション空間において行われることになる。また、レジスタへのアクセスは、後に実行時に、レジスタへの軽い経路(lightweight path)を通じて与えられなければならず、その場合も、マッピングはメモリー空間において行われなければならない。したがって、MMIO空間のページに対する挙動の1つは、そのページをコンフィギュレーション空間のエリアスとして設定することであり、そのページに対するいずれのアクセスをも捕獲して、コンフィギュレーション空間を扱うコードに誘導し直さなければならない。このようにページ全体をマッピングすることに加えて、ページ内にある個々のビットを、コンフィギュレーション空間内において特定のビットのエリアスとして印すこともできる。
[0053] 仮想マシンのマップから除外されたページでは、ハイパーバイザーが、この除外されたページに、デバイスのように見える静止画像を収容ことを選択することもできる。あるいは、ハイパーバイザーは傍受を受け入れ、これらの傍受を、これらの特定のページに適用されるマップを用いて、コンフィギュレーション空間のように扱うことを選択することもできる。言い換えると、MMIO空間のマップは2つのレベルを有することができる。一方のレベルは、仮想マシンにマッピングされるデバイスMMIO空間のページのリストのためのものとすることができる。第2のレイヤー・マップは、オプションとして、除外されたページ内においてビットを定めることができる。
[0054] デバイスのI/O空間は、コンフィギュレーション空間のように扱うことができる。あるいは、I/O空間を仮想マシンから除外することもできる。
[0055] 先に論じたように、開示する種々の実施形態は、ハイパーバイザーのようなオーソリティが、デバイス・ドライバーを採用していないデバイスを安全に含めることを可能にすることができる。つまり、ハイパーバイザーがこのようなマップに収容する情報を有していない可能性がある。したがって、この情報をデバイス販売業社から入手する方法が必要となる。一実施形態では、ドライバー・インストール・ファイルに埋め込むことができるマップの表現を作成することができる。一実施形態では、ドライバー・インストール・ファイルをINFと呼ぶことができる。INFは、ドライバー・インストール・パッケージに含めることができる。更に、パッケージを生成したエンティティによって、INFにディジタル署名することもできる。したがって、マシン・アドミニストレータは、デバイスのドライバーを実際にインストールすることなく、デバイス製造業者によって供給されたINFを、ハイパーバイザーに処理させることを決定することができる。次いで、仮想マシンにドライバーをインストールすることができ、デバイスが仮想マシンにおいて作動できるようになり、そしてドライバーが他の仮想マシンやハイパーバイザー自体に影響を及ぼすことがないように抑制することができる。
[0056] 現在開示している態様は、システム、方法、コンピューター読み取り可能媒体に存在するコンピューター実行可能命令等として実現することができる。つまり、いずれの特定のシステム、方法、またはコンピューター読み取り可能媒体のいずれの開示も、それに制約されるのではなく、逆に開示する主題を実現する他の方法に拡大する。
[0057] 図6から図8までは、仮想マシンとI/Oデバイスとの間における通信を管理する動作手順の一例を示す。この手順は、動作600、602、604、605、および606を含むことができる。図6を参照すると、動作600はこの動作手順を開始し、動作602において、コンフィギュレーション空間の表現をI/Oデバイスのために作り、仮想マシンによってI/Oデバイスにおいて実行することができるアクションを示す。このコンフィギュレーション空間には、デバイスを設定するためのメカニズム(例えば、レジスタ)を収容することができる。メモリー・マップドI/O空間の表現を作ることができ(603)、メモリー・マップドI/O空間の各ページが仮想マシンにマッピングされるか、または仮想マシンから除外される。動作604は、前記コンフィギュレーション空間の表現および前記メモリー・マップドI/O空間の表現にしたがって、前記I/Oデバイスへのアクセスを制御することを示す。動作605は、コンフィギュレーション空間の表現を作る前記動作が、前記コンフィギュレーション空間の表現における各ビットを、少なくとも1つの読み出しおよび書き込み動作と関連付けることを含むことを示す。動作606は、前記コンフィギュレーション空間の表現から除外された任意のメモリーについて、そして前記メモリー・マップドI/O空間から除外された任意のメモリーについて、前記任意のメモリーに前記I/Oデバイスを表すデーターを収容することを示す。例えば、仮想マシンのマップから除外されたページに対して、ハイパーバイザーは、デバイスのように見える静止画像を、その除外されたページに収容することを選択することができる。
[0058] 図7を参照すると、動作706は、読み出しおよび書き込み動作が以下を含むことを示す。読み取りのみ708、常に0を読み取る710、常に1を読み取る712、読み取り−書き込み714、1の書き込みをクリアし、0の書き込みのみを残す716、 1の書き込みをセットし、0の書き込みのみを残す718、0の書き込みをクリアし、1の書き込みのみを残す720、0の書き込みをセットし、1の書き込みのみを残す722、最初の読み取りの後0にクリアする724、最初の書き込みの後1にセットする726。
[0059] 図8を参照すると、動作802は、除外されたメモリーに対するページ内においてビットを定めることを示す。動作804は、傍受を受け取り、ビットが定められたページを用いてこれらの傍受を処理することを示す。例えば、ハイパーバイザーは、傍受を受け入れて、これらの特定のページに適用されるマップを用いて、これらの傍受をコンフィギュレーション空間のように扱うことを選択することができる。一実施形態806では、前記マップを作るために情報を受けることができ、前記情報は、前記I/Oデバイスの販売業者によって提供されるファイルにおいて受け取られる。別の実施形態では、このファイルに前記販売業者によってディジタル署名する(808)。動作810は、販売業者から受け取った情報にしたがって、表現を作ることを示す。
[0060] 定められたビットを有するページを用いて、仮想化レイヤー813によって管理を行うことができる。仮想マシン内にドライバーをインストールすることができ、デバイスは、この仮想マシンにおいて作動可能になり、ドライバーが他の仮想マシンやハイパーバイザー自体に影響を及ぼさないように抑制することができる。
[0061] 動作814において、I/O空間の表現を作る。動作815は、受け取った情報に基づいて、I/O空間の表現を収容することを示す。動作825は、I/O空間の表現にしたがって前記I/Oデバイスへのアクアセスを制御することを示す。動作830は、受け取った情報に基づいて、コンフィギュレーション空間の前記マップおよびメモリー・マップドI/O空間の前記マップの双方を収容することを示す。仮想マシンからのI/O空間を動作835において除外することができる。
[0062] 図9は、仮想マシンとデバイスとの間における通信を管理する動作手順例を示し、動作900、902、904、906、908、910、912、および914を含む。図9を参照すると、動作900はこの動作手順を開始し、動作902はデバイスの記述を受け取ることを示す。この記述は、デバイスにおけるどの動作がシステム規模の影響を有するか、そしてどの動作が当該デバイスにローカルな影響を有するかに関する情報を含む。動作904は、この記述の表現を作成することを示す。動作906は、このデバイスのドライバーのインストール・ファイルにこの表現を埋め込むことを示し、この表現は、このデバイスのコンフィギュレーション空間のマップおよびメモリー・マップドI/O空間のマップを作ることを可能にする。コンフィギュレーション空間のマップおよびメモリー・マップドI/O空間のマップは、デバイスにアクセスするために用いることができる。
[0063] 動作908は、前記マップ、またはコンフィギュレーション空間のマップのマップおよびメモリー・マップドI/O空間のマップと関連のあるページの中にある各ビットが、以下のプロパティの内少なくとも1つを含むことを示す。読み取りのみ910、常に0を読み取る912、常に1を読み取る914、読み取り−書き込み916、1の書き込みをクリアし、0の書き込みのみを残す918、1の書き込みをセットし、0の書き込みのみを残す920、0の書き込みをクリアし、1の書き込みのみを残す922、0の書き込みをセットし、1の書き込みのみを残す924、最初の読み取りの後0にクリアする926、最初の書き込みの後1にセットする928。動作930は、インストール・ファイルがINFであることを示し、動作932はINFにディジタル署名することを示す。
[0064] 前述の態様はいずれも、方法、システム、コンピューター読み取り可能媒体、または任意のタイプの生産物に実現することができる。例えば、図10では、コンピューター読み取り可能媒体はPCI、PCI−X、またはPCI−Expressデバイスへのアクセスを制御するためのコンピューター実行可能命令を格納することができ、デバイスは、仮想マシンをホストする物理マシンに通信するように結合されている。このような媒体は、デバイスのためのインストール・ファイルを受け取るための命令の第1部分集合を備えることができ、このインストール・ファイルは、デバイスにおけるどの動作がシステム規模の影響を有するか、そしてどの動作が当該デバイスにローカルな影響を有するかに関する情報1010を備えている。この媒体は、デバイスのコンフィギュレーション空間、メモリー・マップドI/O空間、およびI/O空間についての属性の少なくとも1つのマップを作るための命令の第2部分集合1012を備えており、少なくとも1つのマップと関連のある各ページまたは各ビットが、仮想マシンにマッピングされており、ビットの静止ページを仮想マシンにおいてデバイスの状態として提示することができる。この媒体は、前記受け取ったインストール・ファイルに基づいて少なくとも1つのマップを収容するための命令の第3部分集合1014、およびデバイスへのアクセスを管理するために少なくとも1つのマップを用いるための命令の第4部分集合1016を備えている。尚、本明細書において開示する種々の他の態様を把握するために、追加の命令集合も用いることができ、現在開示している3つの命令の部分集合は、本開示によれば、その詳細が変化する可能性があることは、当業者には認められよう。
[0065] 例えば、命令は更に命令1020を含むことができ、少なくとも1つのマップと関連のある前記マップまたはページの中にある各ビットが、以下のプロパティの内1つを含む。読み取りのみ、常に0を読み取る、常に1を読み取る、読み取り−書き込み、1の書き込みをクリアし、0の書き込みのみを残す、1の書き込みをセットし、0の書き込みのみを残す、0の書き込みをクリアし、1の書き込みのみを残す、0の書き込みをセットし、1の書き込みのみを残す、最初の読み取りの後0にクリアする、最初の書き込みの後1にセットする。
[0066] 再度、一例として、命令は、更に、コンフィギュレーション空間のメモリーから除外された任意のメモリーについての所定のデーター、またはメモリー・マップドI/O空間のマップから除外された任意のメモリーについての所定のデーターを、前記任意のメモリーに収容するための命令1021を含むことができ、所定のデーターは所定のデバイス1022に対応する。更に、命令は、除外されたメモリーのページ内においてビットを定めるための命令1023、および傍受を受け取り、ビットが定められたページを用いて傍受を処理するための命令1024を含むことができる。インストール・ファイルは、デバイスの販売業者によって提供されるINFであり、オプションとしてディジタル署名することができる(1026)。
[0067] 前述のように、本発明の態様は、プログラミングされたコンピューターにおいて実行することができる。図1cおよび以下の論述は、本開示の態様を実現することができる適した計算環境について端的な説明を行うことを意図している。尚、図1のコンピューター・システムは、実施形態によっては、図1aおよび図1bの種々の態様を実施できることを、当業者は認めることができよう。これらの実施形態例では、サーバーおよびクライアントは、図1cにおいて記載するコンポーネントの一部または全部を含むことができ、実施形態によっては、サーバーおよびクライアントの各々が、本開示の特定の態様をインスタンス化するように構成された回路を含むこともできる。
[0068] 回路(circuitry)という用語は、本開示全体において用いられる場合、特殊化されたハードウェア・コンポーネントを含むことができる。同じまたは他の実施形態において、回路は、ファームウェアまたはスイッチによって機能(1つまたは複数)を実行するように構成されているマイクロプロセッサーを含むことができる。同じまたは他の実施形態例において、回路は、1つ以上の汎用処理ユニットおよび/またはマルチコア処理ユニット等を含むことができ、これらは、機能(1つまたは複数)を実行するように動作可能なロジックを具体化したソフトウェア命令がメモリー、例えば、RAMおよび/または仮想メモリーにロードされるときに構成を設定することができる。回路がハードウェアおよびソフトウェアの組み合わせを含む実施形態例では、実施者(implementer)はロジックを具体化するソース・コードを書くことができ、このソース・コードをコンパイルしてマシン読み取り可能コードにし、これを汎用処理ユニット(1つまたは複数)によって処理することができる。
[0069] 図1cを参照すると、計算システムはコンピューター20等を含むことができる。コンピューター20は、処理ユニット21、システム・メモリー22、およびシステム・バス23を含む。システム・バス23は、システム・メモリーを含む種々のシステム・コンポーネントを処理ユニット21に結合する。システム・バス23は、数種類のバス構造の内任意のものでよく、メモリー・バスまたはメモリー・コントローラ、周辺バス、および種々のバス構造の内任意のものを用いるローカル・バスを含む。システム・メモリーは、リード・オンリ・メモリー(ROM)24およびランダム・アクセス・メモリー(RAM)25を含む。基本入出力システム26(BIOS)は、起動中のように、コンピューター20内にあるエレメント間における情報伝送を補助する基本的なルーティンを含み、ROM24内に格納されている。更に、コンピューター20は、図示しないハード・ディスクからの読み取りおよびこれへの書き込みを行なうハード・ディスク・ドライブ27、リムーバブル磁気ディスク29からの読み取りおよびこれへの書き込みを行なう磁気ディスク・ドライブ28、ならびにCD ROMまたはその他の光媒体のようなリムーバブル光ディスク31からの読み取りおよびこれへの書き込みを行なう光ディスク・ドライブ30を示す。実施形態例によっては、本発明の態様を具体化するコンピューター実行可能命令を、ROM24、ハード・ディスク(図示せず)、RAM25、リムーバブル磁気ディスク29、光ディスク31、および/または処理ユニット21のキャッシュに格納することができる。ハード・ディスク・ドライブ27、磁気ディスク・ドライブ28、および光ディスク・ドライブ30は、それぞれ、ハード・ディスク・ドライブ・インターフェース32、磁気ディスク・ドライブ・インターフェース33、および光ドライブ・インターフェース34によって、システム・バス23に接続されている。これらのドライブおよびそれらに関連するコンピューター読み取り可能媒体は、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、およびコンピューター20のための他のデーターの不揮発性格納に備えている。本明細書において記載した環境ではハード・ディスク、リムーバブル磁気ディスク29、およびリムーバブル光ディスク31を採用したが、磁気カセット、フラッシュ・メモリー・カード、ディジタル・ビデオ・ディスク、ベルヌーイ・カートリッジ、ランダム・アクセス・メモリー(RAM)、リード・オンリ・メモリー(ROM)等のような、コンピューターによってアクセス可能なデーターを格納することができる、他のタイプのコンピューター読み取り可能媒体も、本動作環境において用いることができることは、当業者には認められてしかるべきである。
[0070] ハード・ディスク、磁気ディスク29、光ディスク31、ROM24、またはRAM25には、複数のプログラム・モジュールを格納することができ、これらのプログラム・モジュールには、オペレーティング・システム35、1つ以上のアプリケーション・プログラム36、他のプログラム・モジュール37、およびプログラム・データー38が含まれる。ユーザは、キーボード40およびポインティング・デバイス42のような入力デバイスを通じて、コマンドおよび情報をコンピューター20に入力することができる。他の入力デバイス(図示せず)には、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星ディスク、スキャナー等を含むことができる。これらおよび他の入力デバイスは、多くの場合、システム・バスに結合されているシリアル・ポート・インターフェース46を介して処理ユニット21に接続されているが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス(USB)のような、他のインターフェースによって接続することもできる。また、ディスプレイ47または他のタイプのディスプレイ・デバイスも、ビデオ・アダプター48のようなインターフェースを介して、システム・バス23に接続することができる。ディスプレイ47に加えて、コンピューターは、通例、スピーカーおよびプリンターのような、他の周辺出力デバイス(図示せず)も含む。また、図1のシステムは、ホスト・アダプター55、スモール・コンピューター・システム・インターフェース(SCSI)バス56、およびSCSIバス56に接続されている外部記憶デバイス62も含む。
[0071] コンピューター20は、リモート・コンピューター49のような、1つ以上のリモート・コンピューターへの論理接続を用いて、ネットワーク型環境においても動作することができる。リモート・コンピューター49は、他のコンピューター、サーバー、ルーター、ネットワークPC、ピア・デバイス、または他の一般的なネットワーク・ノードとすることができ、通例、コンピューター20に関して先に説明したエレメントの多くまたは全てを含むことができるが、図1cにはメモリー記憶デバイス50しか示されていない。図1に図示されている論理接続は、ローカル・エリア・ネットワーク(LAN)51およびワイド・エリア・ネットワーク(WAN)52を含むことができる。このようなネットワーキング環境は、事務所、企業規模のコンピューター・ネットワーク、イントラネットおよびインターネットにおいては、極一般的である。
[0072] LANネットワーキング環境で用いる場合、コンピューター20は、ネットワーク・インターフェースまたはアダプター53を介してLAN51に接続する。WANネットワーキング環境で用いる場合、コンピューター20は、通例、モデム54、またはインターネットのようなワイド・エリア・ネットワーク52を通じて通信を確立するその他の手段を含む。モデム54は、内蔵でも外付けでもよく、シリアル・ポート・インターフェース46を介してシステム・バス23に接続することができる。ネットワーク型環境では、コンピューター20に関して図示したプログラム・モジュール、またはその一部は、離れたメモリー記憶装置に格納することもできる。尚、図示したネットワーク接続は一例であり、コンピューター間において通信リンクを確立する他の手段を用いてもよいことは認められよう。更に、本発明の複数の実施形態は特にコンピューター・システムに非常に適しているが、本文書は、本開示をこのような実施形態に限定することを意図するものは何もない。
[0073] 以上の詳細な説明では、例および/または動作図によって、システムおよび/またはプロセスの種々の実施形態を明記した。このようなブロック図、および/または例が1つ以上の機能および/または動作を含む限り、このようなブロック図、または例における各機能および/または動作は、広範囲のハードウェア、ソフトウェア、ファームウェア、または事実上その任意の組み合わせによって、個々におよび/または集合的に実現できることは、当業者には言うまでもないであろう。
[0074] 最後に、種々の図に示すように、好ましい態様と関連して本開示について説明したが、他の同様の態様も用いることもでき、本開示から逸脱することなく、それと同じ機能を実行するために、記載した態様に対して変更や追加を行うこともできることは言うまでもない。例えば、本開示の種々の態様では、仮想マシンと関連のあるメモリー位置を支持するハードウェアを、支持メカニズムと交換するための種々のメカニズムを開示した。しかしながら、これらの記載した態様と同等の他のメカニズムも、本明細書における教示によって想起されよう。したがって、本開示はいずれの1つの態様にも限定されることはなく、むしろ添付した特許請求の範囲にしたがってその幅(breadth)および範囲を解釈すべきである。

Claims (4)

  1. コンピューター上で実現される非特権仮想マシンと前記コンピューターのI/Oデバイスとの間における通信を管理する、前記コンピューターにより実行される方法であって、
    前記コンピューターが、前記I/Oデバイスの記述を受けるステップであって、前記記述が、前記I/Oデバイスにおいて実行可能な動作の内のどの動作を前記非特権仮想マシンが前記I/Oデバイスにおいて実行することができるかに関する情報を含む、ステップと、
    前記コンピューターが、前記記述に基づいて、前記I/Oデバイスのコンフィギュレーション空間の表現を作るステップであって、前記コンフィギュレーション空間は、前記I/Oデバイスを設定するためのメモリー・アドレス空間であり、前記表現が、少なくとも1つの読み出しおよび書き込み動作と関連したプロパティを定めるためのビットを有し、前記ビットは、前記コンフィギュレーション空間内のメモリー位置に対して実行することができる動作を制限するために前記コンピューターにより使用可能である、ステップと、
    前記コンピューターが、前記記述に基づいてメモリー・マップドI/O空間の表現を作るステップであって、前記メモリー・マップドI/O空間は、前記I/Oデバイスによって読み出しおよび書き込みができるメモリー・アドレス空間であり、前記表現が、
    前記非特権仮想マシンにマッピングされる前記メモリー・マップドI/O空間のページに基づいて構成される第1レベルのメモリー・マップドI/O空間と、
    非特権仮想マシンから除外される前記メモリー・マップドI/O空間のページに基づいて構成される第2レベルのメモリー・マップドI/O空間であって、該ページに静止ビットが収容された、第2レベルのメモリー・マップドI/O空間と、
    を含む、ステップと、
    前記コンピューターが、前記コンフィギュレーション空間の前記表現および前記メモリー・マップドI/O空間の前記表現にしたがって前記非特権仮想マシンによる前記I/Oデバイスへのアクセスを制御するステップと、
    を含む、方法。
  2. 請求項に記載の方法であって、前記記述が、前記I/Oデバイスの販売業者によって提供されるファイルで受け取られる、方法。
  3. 非特権仮想マシンとデバイスとの間における通信を管理するためのシステムであって、
    少なくとも1つのプロセッサーであって、前記非特権仮想マシンが該少なくとも1つのプロセッサー上で実現される、少なくとも1つのプロセッサーと、
    前記デバイスと、
    前記少なくとも1つのプロセッサーに対し通信できるように結合された少なくとも1つのメモリーであって、該メモリーが、コンピューター実行可能命令を格納し、該コンピューター実行可能命令が、前記プロセッサーで実行されると前記プロセッサーに、
    前記デバイスの記述を受け、前記記述が、前記デバイスにおけるどの動作がシステム規模の効果を有するか、およびどの動作が前記デバイスに対してローカルな効果を有するかに関する情報を含み、
    前記記述に基づいて、前記デバイスのコンフィギュレーション空間の表現を作成し、前記コンフィギュレーション空間は、前記デバイスを設定するためのメモリー・アドレス空間であり、前記表現が、少なくとも1つの読み出しおよび書き込み動作と関連したプロパティを定めるためのビットを有し、前記システムが、前記コンフィギュレーション空間内のメモリー位置に対し実行することができる動作を制限するため前記ビットを使用するように構成され、
    前記記述に基づいてメモリー・マップドI/O空間の表現を作り、前記メモリー・マップドI/O空間は、前記デバイスによって読み出しおよび書き込みができるメモリー・アドレス空間であり、前記表現が、
    前記非特権仮想マシンにマッピングされる前記メモリー・マップドI/O空間のページに基づいて構成される第1レベルのメモリー・マップドI/O空間と、
    非特権仮想マシンから除外される前記メモリー・マップドI/O空間のページに基づいて構成される第2レベルのメモリー・マップドI/O空間であって、前記ページに静止ビットが収容された、第2レベルのメモリー・マップドI/O空間と、
    を含み、
    前記コンフィギュレーション空間の前記表現および前記メモリー・マップドI/O空間の前記表現にしたがって、前記非特権仮想マシンによる前記I/Oデバイスへのアクセスを制御すること、
    を含む動作を実行させる、少なくとも1つのメモリーと、
    を含むシステム。
  4. デバイスへのアクセスを制御するコンピューター実行可能命令を格納したコンピューター読み取り可能記憶媒体であって、前記デバイスが、非特権仮想マシンをホストする物理マシンに対し通信できるように結合され、
    前記デバイスのインストール・ファイルを受け取る命令であって、前記インストール・ファイルが、前記デバイスにおけるどの動作がシステム規模の効果を有するか、およびどの動作が前記デバイスに対してローカルな効果を有するかに関する情報を含む、命令と、
    前記インストール・ファイルに基づいて、前記デバイスのコンフィギュレーション空間、メモリー・マップドI/O空間、およびI/O空間についての属性の少なくとも1つのマップを作るための命令であって、前記コンフィギュレーション空間は、前記デバイスを設定するためのメモリー・アドレス空間であり、前記メモリー・マップドI/O空間は、前記デバイスによって読み出しおよび書き込みができるメモリー・アドレス空間であり、前記少なくとも1つのマップが、メモリー・マップドI/O空間の表現を含み、該表現が、
    前記非特権仮想マシンにマッピングされる前記メモリー・マップドI/O空間のページに基づいて構成される第1レベルのメモリー・マップドI/O空間と、
    非特権仮想マシンから除外される前記メモリー・マップドI/O空間のページに基づいて構成される第2レベルのメモリー・マップドI/O空間であって、該ページに静止ビットが収容された、第2レベルのメモリー・マップドI/O空間と、
    前記コンフィギュレーション空間内のメモリー位置に対して実行することができる動作を制限するために仮想化システムにより使用可能である前記少なくとも1つのマップであって、前記少なくとも1つのマップと関連した各ページまたは各ビットが前記非特権仮想マシンにマッピングされ、ビットの静止ページを非特権仮想マシンに前記デバイスの状態として供給することができる、前記少なくとも1つのマップと、
    を含む、命令と、
    前記受け取ったインストール・ファイルに基づいて、前記少なくとも1つのマップを収容する命令と、
    前記非特権仮想マシンによる前記デバイスへのアクセスを管理するために前記少なくとも1つのマップを用いる命令と、
    を含む、コンピューター読み取り可能記憶媒体。
JP2011530201A 2008-10-03 2009-09-30 コンフィギュレーション空間仮想化 Active JP5584220B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/245,543 US8117346B2 (en) 2008-10-03 2008-10-03 Configuration space virtualization
US12/245,543 2008-10-03
PCT/US2009/059105 WO2010039887A2 (en) 2008-10-03 2009-09-30 Configuration space virtualization

Publications (3)

Publication Number Publication Date
JP2012504821A JP2012504821A (ja) 2012-02-23
JP2012504821A5 JP2012504821A5 (ja) 2012-11-22
JP5584220B2 true JP5584220B2 (ja) 2014-09-03

Family

ID=42074192

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011530201A Active JP5584220B2 (ja) 2008-10-03 2009-09-30 コンフィギュレーション空間仮想化

Country Status (6)

Country Link
US (2) US8117346B2 (ja)
EP (1) EP2335157B1 (ja)
JP (1) JP5584220B2 (ja)
CN (1) CN102171666B (ja)
ES (1) ES2737855T3 (ja)
WO (1) WO2010039887A2 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8117346B2 (en) 2008-10-03 2012-02-14 Microsoft Corporation Configuration space virtualization
US20100161879A1 (en) * 2008-12-18 2010-06-24 Lsi Corporation Efficient and Secure Main Memory Sharing Across Multiple Processors
US20100161929A1 (en) * 2008-12-18 2010-06-24 Lsi Corporation Flexible Memory Appliance and Methods for Using Such
US20100161909A1 (en) * 2008-12-18 2010-06-24 Lsi Corporation Systems and Methods for Quota Management in a Memory Appliance
US8762698B2 (en) * 2009-12-14 2014-06-24 Intel Corporation Virtual bus device using management engine
US8972611B2 (en) * 2011-08-11 2015-03-03 Cisco Technology, Inc. Multi-server consolidated input/output (IO) device
WO2013048422A1 (en) * 2011-09-30 2013-04-04 Hewlett-Packard Development Company, L.P. Virtualized device control in computer systems
US9924242B2 (en) 2012-04-20 2018-03-20 Itron Global Sarl Automatic network topology detection and fraud detection
US10027535B1 (en) * 2013-09-27 2018-07-17 Juniper Networks, Inc. Systems and methods for managing device configurations at various levels of abstraction
US10571493B2 (en) 2014-02-25 2020-02-25 Itron, Inc. Smart grid topology estimator
US11079417B2 (en) 2014-02-25 2021-08-03 Itron, Inc. Detection of electric power diversion
US9568522B2 (en) 2014-10-20 2017-02-14 Itron, Inc. Electrical phase identification
US9781231B2 (en) * 2014-11-19 2017-10-03 Itron, Inc. Application platform operable on network node
US9835662B2 (en) 2014-12-02 2017-12-05 Itron, Inc. Electrical network topology determination
US9727359B2 (en) * 2015-04-27 2017-08-08 Red Hat Israel, Ltd. Virtual machine function based sub-page base address register access for peripheral component interconnect device assignment
US10312681B2 (en) 2015-05-28 2019-06-04 Itron, Inc. Automatic network device electrical phase identification
US20180129440A1 (en) * 2016-11-09 2018-05-10 Western Digital Technologies, Inc. Self-virtualizing flash memory for solid state drive

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6763454B2 (en) * 1994-05-27 2004-07-13 Microsoft Corp. System for allocating resources in a computer system
US6049671A (en) * 1996-04-18 2000-04-11 Microsoft Corporation Method for identifying and obtaining computer software from a network computer
US6640278B1 (en) * 1999-03-25 2003-10-28 Dell Products L.P. Method for configuration and management of storage resources in a storage network
US7384300B1 (en) * 1999-12-22 2008-06-10 Xerox Corporation Method and apparatus for a connection sensing apparatus
US6629157B1 (en) * 2000-01-04 2003-09-30 National Semiconductor Corporation System and method for virtualizing the configuration space of PCI devices in a processing system
US6611912B1 (en) * 2000-02-04 2003-08-26 Advanced Micro Devices, Inc. Method and apparatus having a system BIOS write configuration data of a riser card to a controller configuration space when connecting the riser card to a motherboard
US6820164B2 (en) * 2001-04-17 2004-11-16 International Business Machines Corporation Peripheral component interconnect bus detection in logically partitioned computer system involving authorizing guest operating system to conduct configuration input-output operation with functions of pci devices
US7036122B2 (en) * 2002-04-01 2006-04-25 Intel Corporation Device virtualization and assignment of interconnect devices
US6907510B2 (en) 2002-04-01 2005-06-14 Intel Corporation Mapping of interconnect configuration space
US6820177B2 (en) * 2002-06-12 2004-11-16 Intel Corporation Protected configuration space in a protected environment
US7155379B2 (en) * 2003-02-25 2006-12-26 Microsoft Corporation Simulation of a PCI device's memory-mapped I/O registers
US7107382B2 (en) * 2003-04-03 2006-09-12 Emulex Design & Manufacturing Corporation Virtual peripheral component interconnect multiple-function device
JP4016396B2 (ja) * 2003-06-02 2007-12-05 日本電気株式会社 マルチセルシステム
US7155553B2 (en) * 2003-08-14 2006-12-26 Texas Instruments Incorporated PCI express to PCI translation bridge
US7234037B2 (en) * 2003-11-25 2007-06-19 International Business Machines Corporation Memory mapped Input/Output operations
US7146482B2 (en) * 2003-11-25 2006-12-05 International Business Machines Corporation Memory mapped input/output emulation
US7552436B2 (en) * 2003-11-25 2009-06-23 International Business Machines Memory mapped input/output virtualization
US7496495B2 (en) * 2005-05-12 2009-02-24 Microsoft Corporation Virtual operating system device communication relying on memory access violations
US7689800B2 (en) * 2005-05-12 2010-03-30 Microsoft Corporation Partition bus
US20070006178A1 (en) * 2005-05-12 2007-01-04 Microsoft Corporation Function-level just-in-time translation engine with multiple pass optimization
US20070016895A1 (en) * 2005-07-15 2007-01-18 Microsoft Corporation Selective omission of endian translation to enhance emulator performance
US7814496B2 (en) * 2005-08-19 2010-10-12 Intel Corporation Method and system for replicating schedules with regard to a host controller for virtualization
US7506121B2 (en) 2005-12-30 2009-03-17 Intel Corporation Method and apparatus for a guest to access a memory mapped device
US7613847B2 (en) * 2006-05-16 2009-11-03 Hewlett-Packard Development Company, L.P. Partially virtualizing an I/O device for use by virtual machines
CN100472452C (zh) * 2006-06-23 2009-03-25 联想(北京)有限公司 一种虚拟机系统及其硬件设备的切换方法
JP4810349B2 (ja) * 2006-08-11 2011-11-09 日本電気株式会社 I/o装置及び方法
US20080052431A1 (en) * 2006-08-22 2008-02-28 Freking Ronald E Method and Apparatus for Enabling Virtual Channels Within A Peripheral Component Interconnect (PCI) Express Bus
US9176765B2 (en) * 2006-09-25 2015-11-03 Lenovo (Beijing) Limited Virtual machine system and a method for sharing a graphics card amongst virtual machines
US7590817B2 (en) * 2006-10-17 2009-09-15 International Business Machines Corporation Communicating with an I/O device using a queue data structure and pre-translated addresses
US8650342B2 (en) 2006-10-23 2014-02-11 Dell Products L.P. System and method for distributed address translation in virtualized information handling systems
US7761612B2 (en) * 2006-12-07 2010-07-20 International Business Machines Corporation Migrating domains from one physical data processing system to another
JP4295783B2 (ja) * 2006-12-13 2009-07-15 株式会社日立製作所 計算機、仮想デバイスの制御方法
CN101241445B (zh) * 2007-02-08 2011-07-27 联想(北京)有限公司 虚拟机系统及其访问显卡的方法
US7689755B2 (en) * 2007-03-07 2010-03-30 Intel Corporation Apparatus and method for sharing devices between multiple execution domains of a hardware platform
US8527673B2 (en) 2007-05-23 2013-09-03 Vmware, Inc. Direct access to a hardware device for virtual machines of a virtualized computer system
US8060876B2 (en) * 2007-08-10 2011-11-15 Intel Corporation Methods and apparatus for creating an isolated partition for a virtual trusted platform module
US8141092B2 (en) * 2007-11-15 2012-03-20 International Business Machines Corporation Management of an IOV adapter through a virtual intermediary in a hypervisor with functional management in an IOV management partition
US8584229B2 (en) * 2007-12-21 2013-11-12 Intel Corporation Methods and apparatus supporting access to physical and virtual trusted platform modules
US8312461B2 (en) * 2008-06-09 2012-11-13 Oracle America, Inc. System and method for discovering and protecting allocated resources in a shared virtualized I/O device
US7904914B2 (en) * 2008-09-30 2011-03-08 Microsoft Corporation On-the-fly replacement of physical hardware with emulation
US8117346B2 (en) 2008-10-03 2012-02-14 Microsoft Corporation Configuration space virtualization

Also Published As

Publication number Publication date
CN102171666B (zh) 2014-09-24
EP2335157B1 (en) 2019-05-15
WO2010039887A3 (en) 2010-07-08
US20120144071A1 (en) 2012-06-07
EP2335157A4 (en) 2014-07-16
WO2010039887A2 (en) 2010-04-08
US8700816B2 (en) 2014-04-15
US20100088431A1 (en) 2010-04-08
JP2012504821A (ja) 2012-02-23
US8117346B2 (en) 2012-02-14
ES2737855T3 (es) 2020-01-16
EP2335157A2 (en) 2011-06-22
CN102171666A (zh) 2011-08-31

Similar Documents

Publication Publication Date Title
JP5584220B2 (ja) コンフィギュレーション空間仮想化
RU2398267C2 (ru) Иерархическая виртуализация посредством многоуровневого механизма виртуализации
US8196144B2 (en) System and method for accelerating input/output access operation on a virtual machine
EP2513789B1 (en) A secure virtualization environment bootable from an external media device
JP5042848B2 (ja) 仮想マシン・モニタの構成部分を特権化解除するためのシステム及び方法
US7975117B2 (en) Enforcing isolation among plural operating systems
IL283228B2 (en) Faster access to virtual computer memory backed by virtual memory of a host computer device
US20090164990A1 (en) Apparatus for and Method for Real-Time Optimization of virtual Machine Input/Output Performance
US20050132365A1 (en) Resource partitioning and direct access utilizing hardware support for virtualization
KR20060071307A (ko) 가상 기기들을 위한 프로세서 토폴로지를 노출시키는시스템 및 방법
US11163597B2 (en) Persistent guest and software-defined storage in computing fabric
KR20060097597A (ko) 가상 기계 환경에서의 멀티-레벨 인터셉트 처리를 위한시스템 및 방법
US10620985B2 (en) Transparent code patching using a hypervisor
US9292324B2 (en) Virtual machine supervision by machine code rewriting to inject policy rule
Zhou et al. Core slicing: closing the gap between leaky confidential {VMs} and bare-metal cloud
JP5819350B2 (ja) 計算機システム及び起動方法
US20240028361A1 (en) Virtualized cache allocation in a virtualized computing system
US20230036017A1 (en) Last-level cache topology for virtual machines

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121001

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121001

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130410

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130709

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131031

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140130

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: 20140618

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140717

R150 Certificate of patent or registration of utility model

Ref document number: 5584220

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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