JP5048940B2 - 仮想マシンについてのプロセッサ・トポロジをエクスポーズするためのシステムおよび方法 - Google Patents

仮想マシンについてのプロセッサ・トポロジをエクスポーズするためのシステムおよび方法 Download PDF

Info

Publication number
JP5048940B2
JP5048940B2 JP2005330704A JP2005330704A JP5048940B2 JP 5048940 B2 JP5048940 B2 JP 5048940B2 JP 2005330704 A JP2005330704 A JP 2005330704A JP 2005330704 A JP2005330704 A JP 2005330704A JP 5048940 B2 JP5048940 B2 JP 5048940B2
Authority
JP
Japan
Prior art keywords
operating system
processor
virtualizer
computer
shared memory
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
JP2005330704A
Other languages
English (en)
Other versions
JP2006178933A (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 JP2006178933A publication Critical patent/JP2006178933A/ja
Application granted granted Critical
Publication of JP5048940B2 publication Critical patent/JP5048940B2/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/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Numerical Control (AREA)

Description

本発明は、一般に(「プロセッサ仮想化(processor virtualization)」としても知られている)仮想マシン(virtual machine)の分野、および仮想マシン環境において実行されるオペレーティング・システムに関する。より詳細には、本発明は、仮想マシンのプロセッサ・トポロジを、そのトポロジがホスト・コンピュータ・システム・プロセッサおよびメモリ・リソースの割付けに基づいて動的である仮想マシン上で実行されるゲスト・オペレーティング・システムに対して、エクスポーズする(公開する)ためのシステムおよび方法を対象としている。
コンピュータは、汎用のCPU(central processing unit:中央演算処理装置)、または「プロセッサ」を含んでおり、これらは、特定の1組のシステム命令を実行するように設計されている。同様なアーキテクチャまたは設計仕様を有する1グループのプロセッサは、同じプロセッサ・ファミリのメンバであるものと考えることができる。現行のプロセッサ・ファミリの実施例には、アリゾナ州、フェニックス市のモトローラ社が製造するモトローラ680X0プロセッサ・ファミリ、カリフォルニア州、サニーベール市のインテル・コーポレーションが製造するインテル80X86プロセッサ・ファミリ、モトローラ社が製造し、カリフォルニア州、クパチーノ市のアップル・コンピュータ社が製造するコンピュータ中で使用されるパワーPCプロセッサ・ファミリが含まれる。1グループのプロセッサは、それらが同様なアーキテクチャおよび設計配慮がなされているので同じファミリ中に存在するが、ファミリ内のプロセッサは、それらのクロック速度および他の性能パラメータが広い範囲で異なっている。
マイクロ・プロセッサの各ファミリは、諸命令を実行するが、それらは、そのプロセッサ・ファミリに固有である。プロセッサまたはプロセッサ・ファミリが実行することができる集合的な1組の命令は、そのプロセッサの命令セット(instruction set)として知られている。一実施例として、インテル80X86プロセッサ・ファミリが使用する命令セットは、パワーPCプロセッサ・ファミリが使用する命令セットとは互換性がない。このインテル80X86命令セットは、CISC(Complex Instruction Set Computer:複雑命令セット・コンピュータ)フォーマットに基づいている。モトローラのパワーPC命令セットは、RISC(Reduced Instruction Set Computer:縮小命令セット・コンピュータ)フォーマットに基づいている。CISCプロセッサは、多数の命令を使用しており、これらの命令の一部は、かなり複雑なファンクションを実施することができるが、これらの命令は、一般に実行するために多数のクロック・サイクルを必要とする。RISCプロセッサは、ずっと高速に実行されるさらに簡単な1組のファンクションを実施するさらに少ない数の使用可能な命令を使用する。
コンピュータ・システムの中でもとりわけ、このプロセッサ・ファミリの固有性により、一般的にコンピュータ・システムのハードウェア・アーキテクチャの他のエレメントの間の非互換性がもたらされることにもなる。インテル80X86プロセッサ・ファミリからのプロセッサを用いて製造されるコンピュータ・システムは、パワーPCプロセッサ・ファミリからのプロセッサを用いて製造されるコンピュータ・システムのハードウェア・アーキテクチャとは異なるハードウェア・アーキテクチャを有することになる。このプロセッサ命令セットおよびコンピュータ・システムのハードウェア・アーキテクチャの固有性のために、アプリケーション・ソフトウェア・プログラムは、一般的に、特定のオペレーティング・システムを実行する特定のコンピュータ・システム上で実行されるように書かれることになる。
仮想マシン
コンピュータ製造業者は、その製造業者のマーケットシェアを最大にするために、少ないアプリケーションではなくて、より多いアプリケーションがそのコンピュータ製造業者の製品ラインに関連するマイクロ・プロセッサ・ファミリ上で実行されるようにすることを望んでいる。あるコンピュータ・システム上で実行することができるオペレーティング・システムおよびアプリケーション・プログラムの数を増大させるために、ある技術分野が発展してきており、この技術分野においては、ホストと呼ばれる、ある1つのタイプのCPUを有する所与のコンピュータがバーチャライザ・プログラム(virtualizer program)を含み、これは、ゲストと呼ばれる無関係のタイプのCPUの命令をそのホスト・コンピュータがエミュレートできるようにする。この結果、このホスト・コンピュータは、所与のゲスト命令に応答して1つまたは複数のホスト命令が呼び出されるようにするアプリケーションを実行することになり、この場合、このホスト・コンピュータは、それ自体のハードウェア・アーキテクチャ用に設計されたソフトウェアも、無関係のハードウェア・アーキテクチャを有するコンピュータ用に書かれたソフトウェアも、共に実行することができる。
より具体的な実施例としては、アップル・コンピュータが製造するコンピュータ・システムは、例えばPCベースのコンピュータ・システム用に書かれたオペレーティング・システムおよびプログラムを実行することができる。バーチャライザ・プログラムを使用して、1つのCPU上で複数の互換性のないオペレーティング・システムを同時に実行することも可能にすることができる。この後者の構成においては、各オペレーティング・システムは、互いに互換性がないが、バーチャライザ・プログラムは、いくつかのオペレーティング・システムのそれぞれをホストすることができ、それによって、他の方法では互換性のないオペレーティング・システムが、同じホスト・コンピュータ・システム上で同時に実行することができるようになる。
ゲスト・コンピュータ・システムがホスト・コンピュータ・システム上でエミュレートされるときに、このゲスト・コンピュータ・システムが、1つの特定のハードウェア・アーキテクチャのオペレーションについての純粋なソフトウェア表現として、このホスト・コンピュータ・システム中に存在するにすぎないので、このゲスト・コンピュータ・システムは、「仮想マシン」であると言われる。バーチャライザ、エミュレータ、ダイレクト−イグゼキュタ(direct-executor)、仮想マシン、およびプロセッサ・エミュレーションという用語は、当業者によって知られ理解されている1つまたは複数のアプローチを使用した機能で、コンピュータ・システム全体のハードウェア・アーキテクチャを模倣またはエミュレートする機能、を指し示すために、時に、区別せずに(交換可能に)使用される。さらに、どのような形式であれ、用語「エミュレーション」のすべての使用は、この広範な意味を伝えることを意図しており、この仮想マシンにおけるオペレーティング・システム命令の直接実行に対してエミュレーションの命令実行概念を区別することを意図してはいない。したがって、例えば、カリフォルニア州、サンマテオ市のConnectix Corporationが作成したVirtual PCソフトウェアは、(命令実行エミュレーションおよび/または直接実行により)インテル80X86ペンティアム(登録商標)プロセッサおよび様々なマザーボード・コンポーネントとカードを含むコンピュータ全体を「エミュレート」し、これらのコンポーネントのオペレーションは、このホスト・マシン上で実行されている仮想マシン内で「エミュレート」される。パワーPCプロセッサを有するコンピュータ・システムなどのホスト・コンピュータのオペレーティング・システム・ソフトウェアおよびハードウェア・アーキテクチャ上で実行されるバーチャライザ・プログラムは、このゲスト・コンピュータ・システム全体のオペレーションを模倣する。
このバーチャライザ・プログラムは、このホスト・マシンのハードウェア・アーキテクチャと、このエミュレートされた環境内で実行されるソフトウェア(例えば、オペレーティング・システム、アプリケーションなど)が伝送する命令との間の置き換えとしての役割を果たす。このバーチャライザ・プログラムは、HOS(host operating system:ホスト・オペレーティング・システム)とすることができ、このHOSは、この物理コンピュータ・ハードウェア上で直接に実行されるオペレーティング・システムである(また、このHOSは、本明細書中において以下でより詳細に説明するハイパーバイザ(hypervisor)を含むこともできる)。代わりに、このエミュレートされた環境はまた、VMM(virtual machine monitor:仮想マシン・モニタ)とすることもでき、このVMMは、多くの場合このホスト・オペレーティング・システムと並行して実行され、連動して動作する、このハードウェア上で直接に実行されるソフトウェア・レイヤであり、またこのVMMは、このVMMが仮想化しているハードウェアと同じインターフェースをエクスポーズする(公開する)ことにより、このホスト・マシンのすべてのリソース(ならびにある種の仮想リソース)を仮想化することができる。この仮想化により、このバーチャライザ(ならびにこのホスト・コンピュータ・システムそれ自体)は、それについて実行中のオペレーティング・システム・レイヤから気付かれずに済むことができるようになる。
要約すると、プロセッサ・エミュレーションは、ゲスト・オペレーティング・システムが、物理ハードウェアとホスト・オペレーティング・システムの両方を含むホスト・コンピュータ・システム上で実行されるバーチャライザによって作成される仮想マシン上で実行することが可能になる。
プロセッサおよびメモリのトポロジ
性能を最大にするため、現代のオペレーティング・システムのスケジューラは、このマシンのプロセッサとメモリのトポロジを考慮に入れている。これは、通常はスタートアップにおいて行われ、物理ハードウェア上で実行されるオペレーティング・システムでは、これは、物理ハードウェアのプロセッサ・トポロジが不変のままであるので通常は十分である。Windows(登録商標)オペレーティング・システム(Windows(登録商標) XP、Windows(登録商標) 2003)および他のオペレーティング・システムは、一般的にこのシステムのトポロジをブート時に2つの方法で、すなわち(a)BIOS SRAT(Static Resource Affinity Table:スタティック・リソース・アフィニティ・テーブル)中のメモリおよびプロセッサのノード・トポロジ情報を調べること、また(b)自己完結型のプロセッサ識別データ(x86/x64プロセッサにおけるCPUID)を読み取って、特定のSMT(Simultaneous Multithreading:同時マルチ・スレッディング、別名ハイパー・スレッディング(hyperthreading))およびマルチコア(multicore)トポロジを決定すること、により決定している。
本明細書中で使用しているように、この用語「プロセッサ・トポロジ」には、このプロセッサおよび関連するメモリの物理的特性を、またオペレーティング・システムによって知られている場合には、理論的に、オペレーティング・システムがこれらの関連するプロセッサ・リソースをより良好に利用できるようにすることが可能な、このプロセッサおよび関連するメモリの物理的特性を、意味するように広い意味をもたせている。プロセッサ・トポロジは、それだけには限定されないが、SMT、マルチコア、BIOSのSRATのデータおよび/または情報などの静的プロセッサ情報と、プロセッサ、メモリ、I/Oリソース構成などの静的NUMA情報と、前述のものに対するどのような変更も含むことができる。
しかし、仮想マシン環境においては、「ホスト・エージェント(hosting agent)」(ホスト・オペレーティング・システム、仮想マシン・モニタ、および/またはハイパーバイザ)についての物理プロセッサ・トポロジは、不変のままであるが、バーチャライザに割り当てられた物理リソース、したがってこの仮想マシンは、時間と共に急速に変化し、この仮想マシン上で実行されるゲスト・オペレーティング・システムによって行われるトポロジの条件(assumption)を不的確に、したがって非効率的にしてしまう可能性がある。
このトポロジの動的性質は、仮想プロセッサ用のこの同じ物理プロセッサの割当てを常に使用することにより、またはこれらの割当を特定のノードだけに制限することによって緩和することができるが、この動的性質は、すべてのホスト・リソースを最大限に活用するバーチャライザの機能に深刻な悪影響を与えることになる。したがって、すべてのホスト・リソースを最大限に活用するバーチャライザの機能に悪影響を与えることのない、変化する仮想トポロジの非効率を正す(矯正する)手段が、当技術分野において必要になっている。
本発明の様々な実施形態は、ゲスト・オペレーティング・システムに対して現在割り当てられている、サブセットのホスト・リソースのトポロジについて、ゲスト・オペレーティング・システムに知らせる(気付かせる)ためのシステムおよび方法を対象としている。ある種のこれらの実施形態では、仮想マシン・ブート時に、スタティック・リソース・アフィニティ・テーブル(SRAT)をバーチャライザが使用して、ゲスト物理メモリおよびゲスト仮想プロセッサを仮想ノード中にグループ分けすることになる。その後に仮想ノードの背後のホスト物理メモリは、必要に応じてこのバーチャライザが変更することができ、このバーチャライザは、このノード内のこれらの仮想プロセッサについての適切な物理プロセッサを提供することになる。
前述の概要、ならびに以下の好ましい実施形態の詳細な説明については、添付図面を併せ読むときにより良好に理解されよう。本発明を例証する目的で、これらの図面中には本発明の例示の構成が示されているが、本発明は、開示された特定の方法および手段だけには限定されない。
本発明の主題については、法令によって定められた要件を満たすように具体性をもって説明している。しかし、この説明それ自体が、本特許の範囲を限定することは意図していない。そうではなくて、本発明者は、この請求された主題を別の方法で実施して、他の現在または将来の技術と組み合わせて、この文書中で説明されるステップと同様な異なるステップ、またはステップの組合せを含むようにすることもできることを企図している。さらに、本明細書中では、用語「ステップ」を使用して、使用される方法の異なるエレメントを暗示しているが、この用語は、個別のステップの順序が明示的に説明されない限り、また明示的に説明される場合以外は、本明細書中で開示する様々なステップの間のどのような特定の順序も示唆するとは解釈すべきではない。
コンピュータ環境
本発明の多数の実施形態は、コンピュータ上で実行することができる。図1および以下の説明では、本発明を実施することができる適切なコンピューティング環境の一般的な簡潔な説明を提供することを意図している。必要ではないが、本発明については、クライアント・ワークステーションやサーバなどのコンピュータによって実行されるプログラム・モジュールなどコンピュータ実行可能命令の一般的な文脈で説明することにする。一般的に、プログラム・モジュールは、特定のタスクを実施し、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含んでいる。さらに、本発明は、ハンドヘルド・デバイス、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースのまたはプログラマブルな大衆消費電子製品、ネットワークPC、ミニ・コンピュータ、メインフレーム・コンピュータなどを含めて他のコンピュータ・システム・コンフィギュレーションを用いて実行することもできることが当業者には理解されよう。本発明は、分散コンピューティング環境中において実行することもでき、ここでは、タスクは、通信ネットワークを介してリンクされたリモート処理デバイスによって実施される。分散コンピューティング環境においては、プログラム・モジュールは、ローカル・メモリ・ストレージ・デバイス中にもリモート・メモリ・ストレージ・デバイス中にも配置することができる。
図1に示すように、例示の汎用コンピューティング・システムは、処理装置21、システム・メモリ22、およびこのシステム・メモリを含めて様々なシステム・コンポーネントを処理装置21に結合するシステム・バス23を含めて、従来のパーソナル・コンピュータ20などを含んでいる。このシステム・バス23は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、および様々なバス・アーキテクチャのうちのどれかを使用したローカル・バスを含めて、いくつかのタイプのバス構造のうちのいずれかにすることもできる。このシステム・メモリは、ROM(read only memory:読取り専用メモリ)24およびRAM(random access memory:ランダム・アクセス・メモリ)25を含んでいる。起動中などにパーソナル・コンピュータ20内のエレメント間で情報を転送する助けをする基本ルーチンを含むBIOS(basic input/output system:基本入出力システム)26は、ROM24に記憶される。パーソナル・コンピュータ20は、図示していないハードディスクから情報を読み取りそれに情報を書き込むハードディスク・ドライブ27、着脱可能な磁気ディスク29から情報を読み取りそれに情報を書き込む磁気ディスク・ドライブ28、およびCD−ROMや他の光媒体など着脱可能な光ディスク31から情報を読み取りそれに情報を書き込む光ディスク・ドライブ30をさらに含むことができる。ハードディスク・ドライブ27、磁気ディスク・ドライブ28、および光ディスク・ドライブ30は、それぞれハードディスク・ドライブ・インターフェース32、磁気ディスク・ドライブ・インターフェース33、および光ドライブ・インターフェース34によってシステム・バス23に接続される。これらのドライブおよびこれらの関連するコンピュータ読取り可能媒体は、パーソナル・コンピュータ20のためのコンピュータ読取り可能命令、データ構造、プログラム・モジュールおよび他のデータの不揮発性ストレージを提供する。本明細書中で説明している例示の環境は、ハードディスク、着脱可能磁気ディスク29、および着脱可能光ディスク31を使用しているが、磁気カセット、フラッシュ・メモリカード、デジタル・ビデオ・ディスク、ベルヌーイ・カートリッジ(Bernoulli cartridge)、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)などコンピュータによってアクセス可能なデータを記憶することができる、他のタイプのコンピュータ読取り可能媒体をこの例示の動作環境中において使用することもできることを当業者には理解されたい。
オペレーティング・システム35、1つまたは複数のアプリケーション・プログラム36、他のプログラム・モジュール37およびプログラム・データ38を含めて、いくつかのプログラム・モジュールをこのハードディスク、磁気ディスク29、光ディスク31、ROM24またはRAM25に記憶することができる。ユーザは、キーボード40やポインティング・デバイス42など入力デバイスを介してパーソナル・コンピュータ20中にコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)は、マイクロフォン、ジョイスティック、ゲームパッド、サテライト・ディスク、スキャナなどを含むことができる。これらおよび他の入力デバイスはしばしば、このシステム・バスに結合されるシリアル・ポート・インターフェース46を介して処理装置21に接続されるが、パラレルポート、ゲームポート、USB(universal serial bus:ユニバーサル・シリアル・バス)などの他のインターフェースによって接続することもできる。モニタ47または他のタイプのディスプレイ・デバイスもまた、ビデオ・アダプタ48などのインターフェースを介してシステム・バス23に接続することができる。モニタ47に加えて、パーソナル・コンピュータは、一般的にスピーカやプリンタなど他のペリフェラル出力デバイス(図示せず)を含んでいる。図1の例示のシステムはまた、ホスト・ダプタ55、SCSI(Small Computer System Interface:スモール・コンピュータ・システム・インターフェース)バス56、およびSCSIバス56に接続された外部ストレージ・デバイス62も含んでいる。
パーソナル・コンピュータ20は、リモート・コンピュータ49など1つまたは複数のリモート・コンピュータに対する論理接続を使用してネットワーク環境において動作することができる。リモート・コンピュータ49は、別のパーソナル・コンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の共通ネットワークノードであってもよく、一般的にパーソナル・コンピュータ20に対して前述したエレメントの多くまたはすべてを含んでいるが、メモリス・トレージ・デバイス50だけしか図1には示してはいない。図1に示す論理接続は、LAN(local area network:ローカルエリアネットワーク)51およびWAN(wide area network:ワイド・エリア・ネットワーク)52を含んでいる。かかるネットワーキング環境は、オフィス、企業規模のコンピュータ・ネットワーク、イントラネットおよびインターネットにおいては一般的である。
LANネットワーキング環境中で使用される場合には、パーソナル・コンピュータ20は、ネットワーク・インターフェースまたはアダプタ53を介してLAN51に接続される。WANネットワーキング環境中で使用される場合には、パーソナル・コンピュータ20は、一般的にインターネットなどのワイド・エリア・ネットワーク52上で通信を確立するモデム54または他の手段を含んでいる。モデム54は、内蔵でもよく、また外付けでもよいが、シリアル・ポート・インターフェース46を介してシステム・バス23に接続される。ネットワーク環境においては、パーソナル・コンピュータ20に対して示したプログラム・モジュール、またはその一部分は、このリモート・メモリ・ストレージ・デバイスに記憶することができる。図に示すネットワーク接続は、例示的であり、これらのコンピュータ間で通信リンクを確立する他の手段を使用することもできることが理解されよう。さらに、本発明の多数の実施形態がコンピュータ化されたシステムにとって特によく適していることが想定されているが、この文書中においては、本発明をかかる実施形態だけに限定することは全く意図していない。
仮想マシン
概念的な観点から、コンピュータ・システムは、一般的にハードウェアの基本レイヤ上で実行される1つまたは複数のソフトウェア・レイヤを含んでいる。この階層化は、抽象化の理由で行われる。所与のソフトウェア・レイヤについてのインターフェースを定義することにより、このレイヤは、その上の他の諸レイヤによって異なるように実装することができる。うまく設計されたコンピュータ・システムにおいては、各レイヤは、その直下の隣接したレイヤについてしか知らない(し、またそれにしか依存していない)。これにより、レイヤまたは「スタック」(複数の隣接レイヤ)は、そのレイヤまたはスタックの上のレイヤに悪影響を与えずに置き換えることができるようになる。例えば、ソフトウェア・アプリケーション(上位レイヤ)は、一般的にそのオペレーティング・システム(下位レイヤ)の下位レベルに依存して、ファイルをある形態の恒久的ストレージに書き込み、これらのアプリケーションは、データをフロッピー(登録商標)ディスクか、ハードドライブか、あるいはネットワーク・フォルダに書き込むことの間におけるその違いを理解する必要がない。この下位レイヤが、ファイルを書き込むための新しいオペレーティング・システムコンポーネントで置き換えられる場合にも、この上位レイヤ・ソフトウェア・アプリケーションのオペレーションは、影響を受けないままである。
階層化ソフトウェアの柔軟性により、仮想マシン(VM)が、実際には別のソフトウェア・レイヤである仮想ハードウェア・レイヤを提示することができるようになる。このようにして、VMは、その上のソフトウェア・レイヤにとって、前記ソフトウェア・レイヤがそれら自体のプライベート・コンピュータ・システム上で実行されているという錯覚を作り出すことができ、したがってVMにより、複数の「ゲスト・システム」を単一の「ホストシステム」上で同時に実行できるようにすることが可能になる。この抽象化レベルは図2の説明図によって表される。
図2は、コンピュータ・システムにおけるエミュレートされた動作環境についての、ハードウェア・アーキテクチャおよびソフトウェア・アーキテクチャの論理階層化を表す図である。この図において、エミュレーション・プログラム94は、物理ハードウェア・アーキテクチャ92上で、直接または間接に実行される。エミュレーション・プログラム94は、(a)ホスト・オペレーティング・システムと並行して実行される仮想マシン・モニタ、(b)ネイティブ・エミュレーション機能(native emulation capability)を有する専用のホスト・オペレーティング・システム、または(c)前記ハイパーバイザ・コンポーネントが前記エミュレーションを実施するハイパーバイザ・コンポーネントを有するホスト・オペレーティング・システムでもよい。エミュレーション・プログラム94は、(このコンポーネントが、「仮想マシン」、すなわち実際には存在しないが、代わりに前記エミュレーション・プログラム94によってエミュレートされるハードウェアであることを示すために破線として示している)ゲスト・ハードウェア・アーキテクチャ96をエミュレートする。ゲスト・オペレーティング・システム98は、前記ゲスト・ハードウェア・アーキテクチャ96上で実行され、ソフトウェア・アプリケーション100は、ゲスト・オペレーティング・システム98上で実行される。たとえソフトウェア・アプリケーション100が、ホスト・オペレーティング・システムおよびハードウェア・アーキテクチャ92とは一般的に互換性がないオペレーティング・システム上で実行されるように設計されているとしても、図2のエミュレートされた動作環境においては、(エミュレーション・プログラム94のオペレーションのために)ソフトウェア・アプリケーション100は、コンピュータ・システム90中で実行することができる。
図3Aは、物理コンピュータ・ハードウェア102上で直接に実行されるホストオペレーティング・システム・ソフトウェア・レイヤ104を含む仮想化コンピューティング・システムを示しており、ここではホストOS(host operating system:ホスト・オペレーティング・システム)104は、このホストOSがエミュレートしている(または「仮想化」している)ハードウェアと同じインターフェースをエクスポーズ(公開)する(それにより、次にこのホストOSが、その上で実行されるオペレーティング・システム・レイヤによって気付かれないまま進むことが可能になる)ことにより、物理コンピュータ・ハードウェア102のリソースに対するアクセスを実現する。この場合にも、このエミュレーションを実施するために、ホスト・オペレーティング・システム104は、ネイティブ・エミュレーション機能を有する専用に設計されたオペレーティング・システムとすることができ、あるいは代わりにこのホスト・オペレーティング・システムは、このエミュレーションを実施するための組み込まれたハイパーバイザ・コンポーネントを有する標準的なオペレーティング・システム(図示せず)とすることもできる。
もう一度、図3Aを参照すると、ホストOS104上には、2つのVM(virtual machine:仮想マシン)の実装形態、すなわち例えば仮想化されたインテル386プロセッサとすることができるVM A108と、例えばモトローラ680X0プロセッサ・ファミリのうちの1つのプロセッサの仮想化バージョンとすることができるVM B110とが存在する。各VM108および110の上には、それぞれゲストOS(guest operating system:ゲスト・オペレーティング・システム)A112およびB114が存在する。ゲストOS A112の上では2つのアプリケーション、すなわちアプリケーションA1 116およびアプリケーションA2 118が実行されており、ゲストOS B114上ではアプリケーションB1 120が実行されている。
図3Aに関して、(破線内に示される)VM A108およびVM B110は、ソフトウェア構成としてしか存在しない仮想化コンピュータ・ハードウェア表現であり、またこのソフトウェア構成は、VM A108およびVM B110をそれぞれゲストOS A112およびゲストOS B114に対して提示するだけでなく、この実際の物理コンピュータ・ハードウェア102と間接的に相互作用も行うゲストOS A112およびゲストOS B114について必要なソフトウェア・ステップのすべてを実施する、1つ(または複数)の専用化エミュレーション・ソフトウェアの実行により可能になることに留意することが重要である。
図3Bは、代替的な仮想化コンピューティング・システムを示し、この場合に、このエミュレーションは、ホスト・オペレーティング・システム104”と並行して実行されるVMM(virtual machine monitor:仮想マシン・モニタ)104’によって実施される。ある種の実施形態では、このVMMは、ホスト・オペレーティング・システム104上で実行され、前述のホスト・オペレーティング・システム104を介してしかこのコンピュータ・ハードウェアと相互作用しないアプリケーションとすることができる。他の実施形態においては、図3Bに示すように、このVMMはその代わりに、一部のレベル上では、コンピュータ・ハードウェア102とホスト・オペレーティング・システム104を介して間接に相互作用するが、他のレベル上では、このVMMが(このホスト・オペレーティング・システムがこのコンピュータ・ハードウェアと直接に相互作用する方法と同様に)コンピュータ・ハードウェア102と直接に相互作用する部分的に独立なソフトウェア・システム、を含むことができる。また、さらに他の実施形態においては、このVMMは、(前述のコンピュータ・ハードウェア102の使用を調整し、競合を回避するなどの範囲で前述のホスト・オペレーティング・システム104と依然として相互作用するが)ホスト・オペレーティング・システム104を利用せずに、(このホスト・オペレーティング・システムがこのコンピュータ・ハードウェアと直接に相互作用する方法と同様に)すべてのレベル上でコンピュータ・ハードウェア102と直接に相互作用する完全に独立なソフトウェア・システムを含むこともできる。
この仮想マシンを実装するためのこれらの変形形態のすべては、本明細書中で説明しているように本発明の代替実施形態を形成することが予想されており、それでも、任意の特定のエミュレーション実施形態に本発明を限定するものと解釈すべきではない。さらに、(おそらくハードウェア・エミュレーション・シナリオにおいて)それぞれVM A108および/またはVM B110を介したアプリケーション116と、118と、120の間の相互作用に対するどのような言及も、実際にはアプリケーション116、118、および120と、この仮想化を作成しているバーチャライザの間の相互作用であると解釈すべきである。同様に、(おそらくコンピュータ・ハードウェア102上で直接または間接にコンピュータ命令を実行するために)ホスト・オペレーティング・システム104および/またはコンピュータ・ハードウェア102を有するアプリケーションVM A108および/またはVM B110の間の相互作用に対するどのような言及も、実際には必要に応じてこの仮想化を作成しているバーチャライザと、ホスト・オペレーティング・システム104および/またはコンピュータ・ハードウェア102の間の相互作用であると解釈すべきである。
プロセッサ・トポロジ
一般に、「プロセッサ」は、コンピュータを駆動する基本命令に反応し、処理する論理回路であり、中央演算処理装置(CPU)についての省略表現としてしばしば使用される用語でもある。パーソナル・コンピュータ中における、または小型デバイス中に埋め込まれたプロセッサは、しばしばマイクロ・プロセッサと呼ばれる。
プロセッサ・トポロジに関しては、本明細書中で使用しているように、用語「プロセッサ」は、特に物理プロセッサ(physical processor)を意味する。「物理プロセッサ」とは、半導体ウェーハ(「シリケート(silicate)」)を含んでいる(時に、「チップ」または「マイクロチップ」と呼ばれる)IC(integrated circuit:集積回路)のことであり、この集積回路上では非常に多くの極めて小さな抵抗、キャパシタ、およびトランジスタが、少なくとも1つの論理プロセッサを含む少なくとも1つのプロセッサ・コア(processor core)を形成している。各プロセッサ・コアは、システム命令を実行する機能を有し、各論理プロセッサは、(対称性をもつマルチ・スレッディング、または「SMT」としても知られている)ハイパー・スレッディング機能を表し、このハイパー・スレッディング機能により、1つのプロセッサ・コアは、外見上2つのスレッドを並列に実行する(したがって、またこのシステムに2つのコアがあるように見える)。
各物理プロセッサは、CPUマザーボード上の1つのソケットに取り付けられる。物理プロセッサは、(それぞれ1つまたは複数の論理プロセッサを有する)複数のプロセッサ・コアを有することができる。各プロセッサ・コアは、一般的にそれ自体のレベル−1キャッシュを有するが、この物理プロセッサ上の他のプロセッサ・コアとレベル−2キャッシュを共有することになる。
「マルチコア・プロセッサ(multi-core processor)」は、向上した性能、削減された電力消費、および/または多重タスクのより効率の良い同時処理(例えば、並列処理)を目的に、複数のコアを有する物理プロセッサである。例えば、(その名前が示唆するように2つのプロセッサ・コアを有するマルチコア・プロセッサである)「デュアル・コア・プロセッサ(dual-core processor)」は、同じコンピュータ中にインストールされた2つの別々のプロセッサを有するものにある程度類似している。しかし、これらの2つのコアは、1つの物理プロセッサ上に存在し、基本的にその同じソケットにプラグ接続され、したがって、これら2つのプロセッサ・コアの間の接続は、別々のソケットにプラグ接続される2つの単一コア・プロセッサの場合に比べて速くなる。
これらの性能ゲインのために、単一コア・プロセッサが、可能な複雑性と速度の物理的限界に急速に到達しつつあるので、マルチコア処理は、人気が高まりつつある。マルチコア製品を開発している、またはマルチコア製品に取り組んでいる会社には、AMD、ARM、Broadcom、インテル、およびVIAが含まれる。AMDもインテルも共に、2005年までにデュアル・コア・プロセッサを市場に出す予定であると発表している。
図4は、本発明のいくつかの実施形態を利用することができるマルチコア・プロセッサおよびNUMA2ノード・システムを示すブロック図である。この図において、物理プロセッサ406は、それぞれが2つの論理プロセッサ402を含む2つのプロセッサ・コア404を含んでいる。物理プロセッサ406は、L3−キャッシュなどのメモリ408に結合され、このメモリは、物理プロセッサ406の両方のコア404によって共有され、利用される。この図については以下でさらに説明する。
メモリ・トポロジ
NUMA(non-uniform memory access:非一様メモリ・アクセス)は、マルチ・プロセッシング・システム中で物理プロセッサがメモリをローカルに共有することができ、性能を改善し、またこのシステムの能力が高められるように、物理プロセッサのノードを構成する方法である。NUMAは一般的に、SMP(symmetric multiprocessing:対称マルチ・プロセッシング)システム中において使用され、このSMPシステムは、1つのオペレーティング・システム下で動作する複数のプロセッサが、コモン・バス(common bus)または「相互接続」パス上で互いに他のメモリにアクセスする「密結合された、あらゆるものを共有する」システムである。通常は、SMPの限界は、マイクロ・プロセッサが追加されるにしたがって、共有バスまたはデータパスが、過負荷になり、性能的にボトルネックになってしまうことであり、しかし、NUMAは、すべてのデータ・アクセスが、この主要バス上を伝わる必要がないように、ノードのマイクロ・プロセッサ間で共有される中間レベルのメモリ(ノード・メモリ)を追加している。
図4を再び参照すると、この2ノード・システム416は、それぞれが4つの物理プロセッサ406を有する2つのノード414を含んでおり、各物理プロセッサ406は、前記各キャッシュの、プロセッサ・コア404によって共有されるそれ自体のL3キャッシュを有している。さらに、各物理プロセッサ406およびその関連するL3キャッシュ・メモリ408は、互いに結合され、共有されるノード・メモリ412に結合される。ノード414およびこれらに関連するノード・メモリ412はまた、図に示すようにこの2ノード・システム416中で一緒に結合される。
NUMAノードは、一般的に、共有メモリ(この「L3キャッシュ」)へのローカル・バスで相互接続された4つの物理プロセッサから構成され、これらはすべて1つのマザーボード上にある。このユニットを、同様なユニットに追加して、共通のSMPバスがすべてのノードを相互接続する対称的なマルチ・プロセッシング・システムを形成することができる。かかるシステムは、一般的に16個から256個のマイクロ・プロセッサを収容する。SMPシステム中で実行されるアプリケーション・プログラムにとって、これらのすべての個々のプロセッサ・メモリは、1つのメモリのように見える。
プロセッサ・コアが、ある種のメモリ・アドレスのデータを探すときに、このプロセッサ・コアは、まずそのL1キャッシュに向かい、次いでこの物理プロセッサ用のL2キャッシュに向かい、次いでこれらの他のマイクロ・プロセッサの近くに配置された「リモート・メモリ」中のデータをシークする前に、このNUMAコンフィギュレーションが提供するL3キャッシュに向かう。データは、NUMA SMPシステムのクラスタ間のバス上を、SCI(scalable coherent interface:スケーラブル・コヒーレント・インターフェース)技術を使用して、伝えられる。SCIは、複数のクラスタのノードにまたがる「キャッシュ・コヒーレンス(cache coherence)」または一貫性と呼ばれるものを調整する。
プロセッサ・トポロジを公開すること
本発明の様々な実施形態は、ゲスト・オペレーティング・システムに対して現在割り当てられている、サブセットのホスト・リソースのトポロジについて、ゲスト・オペレーティング・システムに知らせるためのシステムおよび方法を対象としている。ある種のこれらの実施形態では、仮想マシン・ブート時に、スタティック・リソース・アフィニティ・テーブル(SRAT)をバーチャライザが使用して、ゲスト物理メモリおよびゲスト仮想プロセッサを仮想ノード中にグループ分けすることになる。その後に仮想ノードの背後のホスト物理メモリは、必要に応じてこのバーチャライザが変更することができ、このバーチャライザは、このノード内のこれらの仮想プロセッサについての適切な物理プロセッサを提供することになる。このアプローチにより、この仮想マシン上で実行されるNUMAを認識しているオペレーティング・システムは、さらなる修正なしに最良の性能を得るようにスケジュールすることができるようになる。
ある種の代替実施形態では、このバーチャライザは、仮想マシン・メモリ中に、このゲスト・オペレーティング・システムについての動的プロセッサ・トポロジ情報を提供することもできる。この情報は、このゲスト・オペレーティング・システムの内部テーブルに直接に配置することもでき、あるいは代わりにこのゲスト・オペレーティング・システムは、追加のコードを実行して、共有メモリ・ロケーションからこの情報をピックする(取り出す)こともできる。「開示(disclosing)」と呼ばれるこの後者のアプローチ(ここでは、このVMが、このゲスト・オペレーティング・システムに対して定期的に情報を開示し、このゲスト・オペレーティング・システムが、アップデートされた情報を定期的にチェックし、それに応じて調整する)では、このゲスト・オペレーティング・システムに追加のコードを提供して、このゲスト・オペレーティング・システムが動的情報を定期的に獲得するようにすることが必要になる。
図5は、本発明のある種の実施形態について、バーチャライザが、このゲスト・オペレーティング・システムのための動的プロセッサ・トポロジ情報を仮想マシン・メモリ中に提供する一方法を示すプロセス・フロー図である。この図で、ステップ502において、このバーチャライザは、このゲスト・オペレーティング・システムに割り当てられた物理ハードウェア・リソースが変更されたことを知るようになる。ステップ504において、このバーチャライザは、それが仮想化しているプロセッサ・トポロジを再構成する。ステップ506において、このバーチャライザは、このゲスト・オペレーティング・システムについてのプロセッサ・トポロジ情報を直接にアップデートし、アップデートされたトポロジ情報をこのゲスト・オペレーティング・システムの内部テーブルに直接に配置する。
本発明のある種の実施形態では、このゲスト・オペレーティング・システムは、仮想マシンの物理メモリ・ページが、このバーチャライザとこのゲストOSの両方によって共有されるように指定する仮想マシン・コール(このバーチャライザに対するコール)を実行することになる。このページは、開示データ(disclosure data)を有する制御フィールド、を含むことができ、この開示データは、以下を決定する。例えば、(a)バーチャライザが、ホスト・コンピュータ・システム・リソース割付けにおける変更を前記仮想マシンにマッチングさせるようにこの仮想マシント・ポロジを変更する際に、このバーチャライザがこのゲスト・オペレーティング・システムに対して割込みを送るべきかどうか、(b)この通知割込みについて使用すべきベクトル、(c)ハイパーバイザがこのトポロジ・データをアップデートする際に、常に増分されるジェネレーション・カウンタ(generation counter)、(d)この同じSMTまたはハイパー・スレッド化プロセッサ・コア中のすべての仮想プロセッサのビット・マスク、および/または(e)この同じ物理プロセッサ、すなわち各物理プロセッサ中のすべてのコア内のすべての論理プロセッサ、内のすべての仮想プロセッサのビット・マスク。さらに、開示データは、以下の効率の態様のうちのいずれにも対処することができる。すなわち、(a)スレッド優先順位、(b)I/O優先順位、(c)保護されたメモリの範囲、(d)NUMAノード、(e)ニア・メモリ・アクセス(near memory access)および、フォア・メモリ・アクセス(far memory access)に関するデータ、(f)プロセッサ速度およびプロセッサ電力消費、(g)ソケット、およびコアごとのハイパー・スレッディング、および/または(h)物理プロセッサごとの共有レベル。
この「開示(disclosing)」アプローチが使用されるときなどに、動的プロセッサおよびNUMAトポロジ情報にアクセスすることができるオペレーティング・システムのスケジューラは、この情報を使用して、それ自体のリソース割付けメカニズム(例えば、プロセッサ・スケジューリング、メモリ割付けなど)およびリソース利用スキームを最適化することができる。本発明のある種の追加の実施形態では、(バーチャライザ/仮想マシン・コールを介して、または共有メモリ・ページを介して)このゲストOSは、(開示(disclosing)の論理的な逆である)「ヒンティング(hinting)」と呼ばれるプロセスで、このバーチャライザに対してリソース割付けプリファランスについてのヒントを提供することができる。例えば、このゲストOSが、効率を良くするために、この同じプロセッサ上の2つのコアに割り当てられた2つの仮想プロセッサ、またはこの同じNUMAノード内の2つのプロセッサを保持することを選ぶ場合には、このゲストOSは、かかるヒントをこのVMに提供することができ、任意の所与の時刻に前記VMに割り当てられるこれらの基礎となっている物理プロセッサにこれらの仮想化プロセッサが適切であるように、この仮想マシン・スケジューラは、これらの仮想化プロセッサに関するアカウントにこのヒントを利用することができる。より詳細には、かかるヒントは、以下の効率性の態様のいずれに対しても対処することができる。すなわち、(a)スレッド優先順位、(b)I/O優先順位、および/または(c)レイテンシ(latency)情報。したがって、本発明の実施形態では、このゲスト・オペレーション・システムについてのスケジューラと、このVMについてのスケジューラは、独立にリソースを管理し、協調して機能する「開示(disclosing)」および「ヒンティング」を利用し使用して、この全体システムの効率を最大にする。
図6は、本発明のいくつかの実施形態についての2層の開示(two-tier disclosing)およびヒンティング(hinting)のアプローチを示すブロック図である。この図において、ゲスト・オペレーティング・システム602は、OSスケジューラ604を含み、仮想マシン612は、VMスケジューラ614を含んでいる。かかる論理プロセッサが、例えば、前記物理ハードウェア・リソースの利用をスケジュールするホスト・オペレーティング・システムにより、この仮想マシンにとって使用可能にされる(またこれが、常に変化している)ときに、VMスケジューラ614は、この物理ハードウェアの様々な論理プロセッサ上で仮想マシンスレッドの実行をスケジュールする。この仮想マシンに割り付けられている共有メモリ622を、ゲストOSスケジューラ604が利用して、VMスケジューラ614に対して「ヒンティング」情報を提供し、またこの共有メモリ622を、VMスケジューラ614が利用して、ゲストOSスケジューラ604に対して「開示(disclosing)」情報を提供する。例えば、データ・フロー632に沿って、VMスケジューラ614は、開示する(disclosing)データ642を共有メモリ622に書き込み、またデータ・フロー634に沿って、このデータは、OSスケジューラ604によって読み取られ、またOSスケジューラ604がこのデータを使用して、使用可能な(また、折に触れて動的に変化する)これらの現行のプロセッサ・リソースをより効率的に使用する。逆に、データ・フロー636に沿って、OSスケジューラ604は、「ヒンティング」データ644を共有メモリ622に書き込み、データ・フロー638に沿って、このデータは、VMスケジューラ614によって読み取られ、VMスケジューラ614がこのデータを使用して、前記ゲスト・オペレーティング・システムに対して現行のプロセッサ・リソースのより効率的な割当(および/または要求)を行う。
結論
本明細書中で説明している様々なシステム、方法、および技法は、ハードウェアまたはソフトウェアに適切に、あるいはこれら両者の組合せを用いて実装することができる。したがって、本発明の方法および装置、またはある種の態様またはその一部分は、フロッピー(登録商標)ディスケット、CD−ROM、ハードドライブ、他の任意のマシン読取り可能ストレージ媒体など有形の媒体の形で実施されるプログラム・コード(すなわち、命令)の形態を取ることができ、この場合、このプログラム・コードが、コンピュータなどのマシンにロードされ、マシンによって実行されるときに、このマシンは、本発明を実行するための装置になる。プログラマブル・コンピュータ上におけるプログラム・コード実行の場合においては、このコンピュータは、一般に、プロセッサ、(揮発性および不揮発性のメモリおよび/またはストレージ・エレメントを含めて)このプロセッサによって読取り可能なストレージ媒体、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスを含むことになる。1つまたは複数のプログラムは、高レベルの手続き形言語またはオブジェクト指向プログラミング言語の形で実装して、コンピュータ・システムと情報をやりとりすることが好ましい。しかし、この1つまたは複数のプログラムは、必要に応じてアセンブリ言語または機械語で実装することができる。いずれにしても、この言語は、コンパイラ型言語またはインタープリタ型言語とすることができ、ハードウェア実装形態と組み合わせることができる。
本発明の方法および装置は、電気的な配線またはケーブル配線上で、光ファイバを介して、他の任意の伝送形態を介してなど、何らかの伝送媒体上で伝送されるプログラム・コードの形態で具現化することもでき、この場合、このプログラム・コードが、EPROM、ゲートアレイ、PLD(programmable logic device:プログラマブルロジックデバイス)、クライアント・コンピュータ、ビデオ・レコーダなどのマシンによって受信され、このマシンにロードされ、またこのマシンによって実行されるときに、このマシンは、本発明を実行するための装置になる。汎用プロセッサ上で実装されるときには、このプログラム・コードがこのプロセッサと組み合わされて、本発明のインデッックス付け機能を実施するように動作する固有の装置がもたらされる。
本発明を様々な形態の好ましい実施形態に関連して説明してきたが、他の同様な実施形態を使用することもでき、あるいは本発明を逸脱することなく本発明と同じファンクションを実施するために、この説明した実施形態に対して変更および追加を行うことができることを理解されたい。例えば、本発明の例示の実施形態は、パーソナル・コンピュータの機能をエミュレートするデジタル・デバイスのコンテクストで説明しているが、本発明は、本明細書で説明しているかかるデジタル・デバイスだけに限定されることなく、有線であれ無線であれ、ゲーミング・コンソール、ハンドヘルド・コンピュータ、ポータブル・コンピュータなど任意数の既存の、または出現しつつあるコンピューティング・デバイスまたはコンピューティング環境にも適用でき、また通信ネットワークを介して接続され、このネットワークを横切って相互に作用する任意数のかかるコンピューティング・デバイスにも適用できることが当業者には理解されよう。さらに、特に無線ネットワーク・デバイスの数が増え続けているので、ハンドヘルド・デバイス・オペレーティング・システム、および他の特定用途向けハードウェア/ソフトウェア・インターフェース・システムを含めて様々なコンピュータ・プラットフォームが、本明細書中では企図されていることについて強調しておくべきである。したがって、本発明は、どの1つの実施形態だけにも限定すべきではなく、特許請求の範囲による広がりと範囲で解釈すべきである。
最終的には、本明細書中で説明しているこれらの開示した実施形態は、他のプロセッサ・アーキテクチャ、コンピュータ・ベースのシステム、またはシステム仮想化に使用するために適合させることができ、かかる実施形態については、本明細書中で行われた開示によって明確に予想されており、したがって、本発明は、本明細書中で説明している特定の実施形態だけに限定すべきではなく、その代わりに最も広く解釈すべきである。同様に、プロセッサ仮想化以外の目的のための合成命令の使用もまた、本明細書中で行われたこの開示によって予想されており、プロセッサ仮想化以外の文脈における合成命令のかかるどのような利用についても、本明細書中で行われたこの開示に、最も広範囲に読み込むべきである。
本発明の態様を組み込むことができるコンピュータ・システムを表すブロック図である。 コンピュータ・システムにおけるエミュレートされた動作環境についてのハードウェア・アーキテクチャおよびソフトウェア・アーキテクチャの論理階層化を表すブロック図である。 ホスト・オペレーティング・システムによって、エミュレーションが(直接に、またはハイパーバイザを介して)実施される仮想化コンピューティング・システムを表すブロック図である。 ホスト・オペレーティング・システムと並行して実行される仮想マシン・モニタによって、エミュレーションが実施される代替的な仮想化コンピューティング・システムを表すブロック図である。 本発明のいくつかの実施形態を利用することができる対象のマルチコア・プロセッサおよびNUMA2ノード・システム(NUMA two-node system)を示すブロック図である。 本発明のある種の実施形態において、バーチャライザが、ゲスト・オペレーティング・システムについての動的プロセッサ・トポロジ情報を仮想マシン・メモリ中に提供する一方法を示すプロセス・フロー図である。 本発明のいくつかの実施形態についての2層の開示(disclosing)およびヒンティングのアプローチを示すブロック図である。
符号の説明
20 コンピュータ
21 処理装置
22 システム・メモリ
23 システム・バス
27 ハードドライブ
28 フロッピー(登録商標)ドライブ
29 着脱可能ストレージ
30 光ドライブ
32 ハードディスク・ドライブI/F
33 磁気ディスク・ドライブI/F
34 光ドライブI/F
36 アプリケーション・プログラム
36’ アプリケーション
37 他のプログラム
38 プログラム・データ
40 キーボード
42 マウス
46 シリアル・ポートI/F
47 モニタ
48 ビデオ・アダプタ
49 1つ(または複数)のリモート・コンピュータ
50 フロッピー(登録商標)ドライブ
53 ネットワークI/F
54 モデム
55 ホスト・アダプタ
56 SCSIバス
62 ストレージ・デバイス
90 コンピュータ・システム
102 物理コンピュータ・ハードウェア
104、104” ホスト・オペレーティング・システム
104’ 仮想マシン・モニタ
108 仮想マシンA
110 仮想マシンB
112 ゲストOS A
114 ゲストOS B
116 アプリケーションA1
118 アプリケーションA2
120 アプリケーションB1
402 論理プロセッサ
404 コア
406 物理プロセッサ
412 ノード・メモリ
414 ノード
416 2ノード・システム
602 ゲストOS
604 OSスケジューラ
612 仮想マシン
614 OSスケジューラ
622 メモリ
634、636,638 データ・フロー
644 「ヒンティング」データ

Claims (16)

  1. ホスト・コンピュータ・システム上のバーチャライザにより仮想化されたゲスト・コンピュータ・システムにおいて実行されるオペレーティング・システムの性能を最適化するための方法であって、
    前記方法は、
    前記バーチャライザにおいて、前記ゲスト・コンピュータ・システムプロセッサ・トポロジを再構成するステップと、
    前記バーチャライザから前記オペレーティング・システムに、前記再構成されたプロセッサ・トポロジの情報を提供するステップと、
    前記オペレーティング・システムのスケジューラにおいて、前記再構成されたプロセッサ・トポロジの情報に基いてプロセッサ・リソースの割り当てを行なうステップと、
    前記オペレーティング・システムから前記バーチャライザに、前記オペレーティング・システムにプロセッサ・リソースを効率的に割り当てるためのヒントデータを提供するステップと
    前記ゲスト・コンピュータ・システムのスケジューラにおいて、前記バーチャライザに提供された前記ヒントデータに基いて、前記オペレーティング・システムに対する前記プロセッサ・リソースの割り当てを行なうステップと
    含むことを、特徴とする方法。
  2. 前記再構成されたプロセッサ・トポロジの情報を提供するステップは、前記バーチャライザにおいて、前記オペレーティング・システムの少なくとも1つの内部テーブルを直接にアップデートするステップを含むことを特徴とする請求項1に記載の方法。
  3. 前記再構成されたプロセッサ・トポロジの情報を提供するステップは、前記バーチャライザにおいて、前記プロセッサ・トポロジの情報を共有メモリ・ロケーションに提供するステップを含み、前記方法は、
    前記オペレーティング・システムその後に前記共有メモリ・ロケーションにアクセスし、前記プロセッサ・トポロジの情報を取り出し、前記プロセッサ・トポロジの情報を適用するステップをさらに含むことを特徴とする請求項1に記載の方法。
  4. 前記オペレーティング・システムがその後に前記共有メモリ・ロケーションにアクセスする前記ステップは、スケジュールに従って実施されるか、または前記バーチャライザが生成する割込みに応答して実施されることを特徴とする請求項3に記載の方法。
  5. 前記ヒントデータを提供するステップは、前記オペレーティング・システムにおいてヒントデータ共有メモリ・ロケーションに提供するステップを含み、前記方法は、
    前記バーチャライザその後に前記共有メモリ・ロケーションにアクセスし、前記ヒントデータを取り出し、前記ヒントデータを適用するステップをさらに含むことを特徴とする請求項3に記載の方法。
  6. 前記方法の各ステップ実行する手段を備えるハードウェア制御デバイスによって実装されることを特徴とする請求項1に記載の方法。
  7. コンピュータ・デバイスにより実行されると、バーチャライザに、以下の方法を実行させる、コンピュータ読取り可能命令を記憶したコンピュータ読取り可能記録媒体であって、
    前記方法は、
    前記バーチャライザにより仮想化されたゲスト・コンピュータ・システムのプロセッサ・トポロジを再構成するステップと、
    前記オペレーティング・システムのスケジューラが前記再構成されたプロセッサ・トポロジの情報に基いてプロセッサ・リソースの割り当てを行なうように、前記ゲスト・コンピュータ・システム上のオペレーティング・システムに前記再構成されたプロセッサ・トポロジの情報を提供するステップと、
    前記オペレーティング・システムから、前記オペレーティング・システムにプロセッサ・リソースを効率的に割り当てるためのヒントデータを受け取るステップと、
    前記ゲスト・コンピュータ・システムのスケジューラを用いて、前記オペレーティング・システムに対し、前記ヒントデータに基いて前記プロセッサ・リソースの割り当てを行わせるステップと
    含むことを特徴とするコンピュータ読取り可能記録媒体。
  8. 前記提供するステップは、前記オペレーティング・システムの内部テーブルに直接前記プロセッサ・トポロジの情報を提供するステップ、または前記プロセッサ・トポロジの情報を共有メモリに提供して、前記オペレーティング・システムが、その後に前記共有メモリ・ロケーションにアクセスし、前記プロセッサ・トポロジの情報を取り出し、前記プロセッサ・トポロジの情報を適用することを可能にするステップを含むことを特徴とする請求項7に記載のコンピュータ読取り可能記録媒体。
  9. 前記コンピュータ・デバイスにより実行されると、前記オペレーティング・システムがその後に前記共有メモリ・ロケーションにアクセスする前記ステップを、スケジュールに従って実施するか、または前記仮想マシン中の前記バーチャライザが生成する割込みに応答して実施するための命令をさらに記憶したことを特徴とする請求項8に記載のコンピュータ読取り可能記録媒体。
  10. 前記コンピュータ・デバイスにより実行されると、前記オペレーティング・システムが、前記ヒントデータを用いて共有メモリ・ロケーションをアップデートすることにより前記バーチャライザに対して前記ヒントデータを提供し、前記バーチャライザが、その後に前記共有メモリ・ロケーションにアクセスし、前記ヒントデータを取り出し、前記ヒントデータを適用するための命令をさらに記憶したことを特徴とする請求項8に記載のコンピュータ読取り可能記録媒体。
  11. ホスト・コンピュータ・システムのバーチャライザにより仮想化されたゲスト・コンピュータ・システム上で実行されオペレーティング・システムの性能を最適化するためのシステムであって、
    前記ホスト・コンピュータ・システムはプロセッサと、前記システムが稼働中に、前記プロセッサと通信するメモリとを備え、前記メモリは前記プロセッサにより実行されたときに、以下の方法を実行するコンピュータ読取り可能命令を備え、前記方法は、
    前記バーチャライザにおいて、前記ゲスト・コンピュータ・システムのプロセッサ・トポロジを再構成するステップと、
    前記オペレーティング・システムのスケジューラが前記再構成されたプロセッサ・トポロジの情報に基いてプロセッサ・リソースの割り当てを行なうように、前記バーチャライザから前記オペレーティング・システムに、前記再構成されたプロセッサ・トポロジの情報を提供するステップと、
    前記バーチャライザにおいて、前記オペレーティング・システムから、前記オペレーティング・システムにプロセッサ・リソースを効率的に割り当てるためのヒントデータを受け取るステップと、
    前記バーチャライザにおいて、前記ゲスト・コンピュータ・システムのスケジューラを用いて、前記オペレーティング・システムに対し、前記ヒントデータに基いて前記プロセッサ・リソースの割り当てを行わせるステップと
    含むことを特徴とするシステム。
  12. 前記プロセッサ・トポロジの再構成は、前記ホスト・コンピュータ・システムによって動的に割り付けられる1組のリソースに対する変更に基づくことを特徴とする請求項11に記載のシステム。
  13. 前記バーチャライザは、前記オペレーティング・システムの前記内部テーブルに直接前記プロセッサ・トポロジの情報を提供する命令をさらに実行することを特徴とする請求項12に記載のシステム。
  14. 前記バーチャライザは、共有メモリ・ロケーションに前記プロセッサ・トポロジの情報を提供する命令を実行し、前記オペレーティング・システムが、その後に前記共有メモリ・ロケーションにアクセスし、前記プロセッサ・トポロジの情報を取り出し、前記プロセッサ・トポロジの情報を適用する命令をさらに実行することを特徴とする請求項12に記載のシステム。
  15. 前記オペレーティング・システムがその後に前記共有メモリ・ロケーションにアクセスする前記ステップを、スケジュールに従って実施するか、または前記バーチャライザが生成する割込みに応答して実施ることを特徴とする請求項14に記載のシステム。
  16. 前記オペレーティング・システムが、ヒントデータを用いて共有メモリ・ロケーションをアップデートすることにより前記バーチャライザに対してヒントデータを提供し、前記バーチャライザが、その後に前記共有メモリ・ロケーションにアクセスし、前記ヒントデータを取り出し、前記ヒントデータを適用する命令をさらに実行することを特徴とする請求項14に記載のシステム。
JP2005330704A 2004-12-21 2005-11-15 仮想マシンについてのプロセッサ・トポロジをエクスポーズするためのシステムおよび方法 Active JP5048940B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/018,337 2004-12-21
US11/018,337 US8621458B2 (en) 2004-12-21 2004-12-21 Systems and methods for exposing processor topology for virtual machines

Publications (2)

Publication Number Publication Date
JP2006178933A JP2006178933A (ja) 2006-07-06
JP5048940B2 true JP5048940B2 (ja) 2012-10-17

Family

ID=36406489

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005330704A Active JP5048940B2 (ja) 2004-12-21 2005-11-15 仮想マシンについてのプロセッサ・トポロジをエクスポーズするためのシステムおよび方法

Country Status (8)

Country Link
US (2) US8621458B2 (ja)
EP (1) EP1674987B1 (ja)
JP (1) JP5048940B2 (ja)
KR (1) KR20060071307A (ja)
CN (1) CN1794177B (ja)
AT (1) ATE554445T1 (ja)
ES (1) ES2382470T3 (ja)
PL (1) PL1674987T3 (ja)

Families Citing this family (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8621458B2 (en) * 2004-12-21 2013-12-31 Microsoft Corporation Systems and methods for exposing processor topology for virtual machines
US20060149899A1 (en) * 2004-12-30 2006-07-06 Zimmer Vincent J Method and apparatus for ongoing block storage device management
US7716638B2 (en) * 2005-03-04 2010-05-11 Microsoft Corporation Methods for describing processor features
US8028295B2 (en) 2005-09-30 2011-09-27 Intel Corporation Apparatus, system, and method for persistent user-level thread
US7406407B2 (en) * 2006-06-01 2008-07-29 Microsoft Corporation Virtual machine for operating N-core application on M-core processor
US8607228B2 (en) 2006-08-08 2013-12-10 Intel Corporation Virtualizing performance counters
JP2008152594A (ja) 2006-12-19 2008-07-03 Hitachi Ltd マルチコアプロセッサ計算機の高信頼化方法
US8381209B2 (en) * 2007-01-03 2013-02-19 International Business Machines Corporation Moveable access control list (ACL) mechanisms for hypervisors and virtual machines and virtual port firewalls
US8856782B2 (en) 2007-03-01 2014-10-07 George Mason Research Foundation, Inc. On-demand disposable virtual work system
US20080229053A1 (en) * 2007-03-13 2008-09-18 Edoardo Campini Expanding memory support for a processor using virtualization
CN101043380B (zh) * 2007-04-20 2010-07-21 北京航空航天大学 虚拟机网络拓扑信息的处理方法及装置
US8762999B2 (en) * 2007-09-27 2014-06-24 Oracle America, Inc. Guest-initiated resource allocation request based on comparison of host hardware information and projected workload requirement
US8521966B2 (en) * 2007-11-16 2013-08-27 Vmware, Inc. VM inter-process communications
US8881163B2 (en) * 2007-12-07 2014-11-04 Microsoft Corporation Kernel processor grouping
US8615757B2 (en) * 2007-12-26 2013-12-24 Intel Corporation Negotiated assignment of resources to a virtual machine in a multi-virtual machine environment
US7734900B2 (en) 2008-01-11 2010-06-08 International Business Machines Corporation Computer configuration virtual topology discovery and instruction therefore
US8352950B2 (en) * 2008-01-11 2013-01-08 International Business Machines Corporation Algorithm to share physical processors to maximize processor cache usage and topologies
US7739434B2 (en) * 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
JP2009266027A (ja) * 2008-04-25 2009-11-12 Toshiba Corp 情報処理装置および制御方法
US8291426B2 (en) * 2008-06-02 2012-10-16 Microsoft Corporation Memory allocators corresponding to processor resources
US9201673B2 (en) * 2008-07-30 2015-12-01 Microsoft Technology Licensing, Llc Efficient detection and response to spin waits in multi-processor virtual machines
US9098698B2 (en) * 2008-09-12 2015-08-04 George Mason Research Foundation, Inc. Methods and apparatus for application isolation
US20100138829A1 (en) * 2008-12-01 2010-06-03 Vincent Hanquez Systems and Methods for Optimizing Configuration of a Virtual Machine Running At Least One Process
KR101437122B1 (ko) 2008-12-03 2014-09-02 삼성전자 주식회사 Os 가상화를 이용하여 서비스를 제공하는 장치 및 방법
US8930953B2 (en) * 2009-01-16 2015-01-06 International Business Machines Corporation Dynamic checking of hardware resources for virtual environments
US8490094B2 (en) * 2009-02-27 2013-07-16 International Business Machines Corporation Non-uniform memory access (NUMA) enhancements for shared logical partitions
US8244955B2 (en) * 2009-03-17 2012-08-14 Hitachi, Ltd. Storage system and its controlling method
US9535767B2 (en) * 2009-03-26 2017-01-03 Microsoft Technology Licensing, Llc Instantiating a virtual machine with a virtual non-uniform memory architecture
US9529636B2 (en) * 2009-03-26 2016-12-27 Microsoft Technology Licensing, Llc System and method for adjusting guest memory allocation based on memory pressure in virtual NUMA nodes of a virtual machine
JP5035299B2 (ja) * 2009-06-15 2012-09-26 株式会社日立製作所 マルチコアプロセッサ制御方法、その計算機システム、及び管理計算機のプログラム
US8443376B2 (en) 2010-06-01 2013-05-14 Microsoft Corporation Hypervisor scheduler
US8898664B2 (en) * 2010-06-01 2014-11-25 Microsoft Corporation Exposure of virtual cache topology to a guest operating system
US8949499B2 (en) 2010-06-24 2015-02-03 International Business Machines Corporation Using a PCI standard hot plug controller to modify the hierarchy of a distributed switch
US8271710B2 (en) * 2010-06-24 2012-09-18 International Business Machines Corporation Moving ownership of a device between compute elements
US20120096462A1 (en) * 2010-10-18 2012-04-19 Electronics And Telecommunications Research Institute Dynamic virtualization technique for multicore processor system
WO2012083012A1 (en) * 2010-12-15 2012-06-21 Advanced Micro Devices, Inc. Device discovery and topology reporting in a combined cpu/gpu architecture system
US9489224B2 (en) 2010-12-28 2016-11-08 Nec Corporation Network virtualization system, physical node, and virtual interface identification method in virtual machine
US8812830B2 (en) 2011-08-31 2014-08-19 Microsoft Corporation Attestation protocol for securely booting a guest operating system
WO2013082437A1 (en) 2011-12-02 2013-06-06 Invincia, Inc. Methods and apparatus for control and detection of malicious content using a sandbox environment
CN103135964B (zh) * 2011-12-05 2015-09-23 联想(北京)有限公司 跨指令集调用函数的方法和电子设备
KR101850318B1 (ko) 2011-12-09 2018-04-20 삼성전자주식회사 가상 메모리 관리 장치 및 방법
ES2802173T3 (es) * 2012-03-29 2021-01-15 Hitachi Ltd Método de planificación de ordenador virtual
US9436493B1 (en) * 2012-06-28 2016-09-06 Amazon Technologies, Inc. Distributed computing environment software configuration
US9191435B2 (en) 2012-08-23 2015-11-17 TidalScale, Inc. Selective data migration or remapping of virtual processors to provide required data accessibility to processor cores
US9329880B2 (en) * 2013-02-13 2016-05-03 Red Hat Israel, Ltd. Counter for fast interrupt register access in hypervisors
US10331589B2 (en) 2013-02-13 2019-06-25 Red Hat Israel, Ltd. Storing interrupt location for fast interrupt register access in hypervisors
US9898475B1 (en) 2013-02-25 2018-02-20 EMC IP Holding Company LLC Tiering with pluggable storage system for parallel query engines
US9984083B1 (en) 2013-02-25 2018-05-29 EMC IP Holding Company LLC Pluggable storage system for parallel query engines across non-native file systems
US9342342B2 (en) * 2013-03-15 2016-05-17 International Business Machines Corporation Refreshing memory topology in virtual machine operating systems
WO2015034506A1 (en) * 2013-09-05 2015-03-12 TidalScale, Inc. Selective resource migration
US20150169363A1 (en) * 2013-12-18 2015-06-18 Qualcomm Incorporated Runtime Optimization of Multi-core System Designs for Increased Operating Life and Maximized Performance
US10261875B2 (en) 2013-12-18 2019-04-16 Qualcomm Incorporated Runtime optimization of multi-core system designs for increased operating life and maximized performance
US9606843B2 (en) 2013-12-18 2017-03-28 Qualcomm Incorporated Runtime optimization of multi-core system designs for increased operating life and maximized performance
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US9218185B2 (en) 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9354883B2 (en) 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US9804846B2 (en) 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
CN103995733B (zh) * 2014-05-27 2017-02-15 西安交通大学 一种基于物理资源穿透机制的轻量级嵌套虚拟化实现方法
US9384027B2 (en) 2014-06-06 2016-07-05 International Business Machines Corporation Selecting a host for a virtual machine using a hardware multithreading parameter
US9400672B2 (en) 2014-06-06 2016-07-26 International Business Machines Corporation Placement of virtual CPUS using a hardware multithreading parameter
US9304805B2 (en) * 2014-06-06 2016-04-05 Interinational Business Machines Corporation Provisioning virtual CPUs using a hardware multithreading parameter in hosts with split core processors
KR102295394B1 (ko) * 2014-08-27 2021-09-01 아씨아 에스피이, 엘엘씨 액세스 노드의 가상화 구현을 위한 시스템, 방법 및 장치
US9542320B2 (en) 2015-01-12 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Multi-node cache coherency with input output virtualization
US10853104B2 (en) * 2015-02-27 2020-12-01 Plasma Business Intelligence, Inc. Virtual environment for simulating a real-world environment with a large number of virtual and real connected devices
US9335982B1 (en) 2015-04-28 2016-05-10 Microsoft Technology Licensing, Llc Processor emulation using multiple translations
US11240334B2 (en) 2015-10-01 2022-02-01 TidalScale, Inc. Network attached memory using selective resource migration
US10091830B2 (en) * 2015-12-04 2018-10-02 T-Mobile Usa, Inc. Hub device
US10108462B2 (en) * 2016-02-12 2018-10-23 Microsoft Technology Licensing, Llc Virtualizing sensors
US10579421B2 (en) 2016-08-29 2020-03-03 TidalScale, Inc. Dynamic scheduling of virtual processors in a distributed system
CN106502760B (zh) * 2016-09-21 2019-06-21 华为技术有限公司 一种虚拟机亲和性策略可视化的方法及装置
US10891254B2 (en) * 2016-10-26 2021-01-12 Intel Corporation Switchable topology processor tile and computing machine
US10169069B2 (en) 2017-04-06 2019-01-01 International Business Machines Corporation System level update protection based on VM priority in a multi-tenant cloud environment
US10521273B2 (en) * 2017-06-08 2019-12-31 Cisco Technology, Inc. Physical partitioning of computing resources for server virtualization
US10579274B2 (en) 2017-06-27 2020-03-03 TidalScale, Inc. Hierarchical stalling strategies for handling stalling events in a virtualized environment
US11113088B2 (en) * 2017-07-26 2021-09-07 Dell Products, L.P. Generating and managing groups of physical hosts associated with virtual machine managers in an information handling system
US10817347B2 (en) 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
US11487574B2 (en) * 2017-09-19 2022-11-01 Microsoft Technology Licensing, Llc Targeted interrupts for virtual processors
US11175927B2 (en) 2017-11-14 2021-11-16 TidalScale, Inc. Fast boot
US10776150B2 (en) 2018-10-30 2020-09-15 Red Hat, Inc. Dynamically updating virtual central processing units
US11144326B2 (en) * 2019-02-19 2021-10-12 Cisco Technology, Inc. System and method of initiating multiple adaptors in parallel
US11249804B2 (en) 2019-10-07 2022-02-15 International Business Machines Corporation Affinity based optimization of virtual persistent memory volumes
US11954534B2 (en) 2021-06-21 2024-04-09 Red Hat, Inc. Scheduling in a container orchestration system utilizing hardware topology hints
US12069093B2 (en) * 2021-09-30 2024-08-20 Fortinet, Inc. Artificial virtual machine for preventing malware execution by applying virtual machine characteristics in real computing environments
KR20240125681A (ko) * 2022-01-13 2024-08-19 엘지전자 주식회사 신호 처리 장치, 및 이를 구비하는 차량용 디스플레이 장치

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5692193A (en) * 1994-03-31 1997-11-25 Nec Research Institute, Inc. Software architecture for control of highly parallel computer systems
EP0917056B1 (en) 1997-11-04 2008-01-09 Compaq Computer Corporation A multi-processor computer system and a method of operating thereof
US6247109B1 (en) 1998-06-10 2001-06-12 Compaq Computer Corp. Dynamically assigning CPUs to different partitions each having an operation system instance in a shared memory space
US6769076B1 (en) * 2000-02-07 2004-07-27 Freescale Semiconductor, Inc. Real-time processor debug system
JP2002041304A (ja) * 2000-07-28 2002-02-08 Hitachi Ltd 論理区画の予備リソース自動付与方法及び論理区画式計算機システム
JP2002202959A (ja) * 2000-12-28 2002-07-19 Hitachi Ltd 動的な資源分配をする仮想計算機システム
US7480911B2 (en) 2002-05-09 2009-01-20 International Business Machines Corporation Method and apparatus for dynamically allocating and deallocating processors in a logical partitioned data processing system
US7140021B2 (en) * 2002-09-13 2006-11-21 Microsoft Corporation Dynamic TCP partitioning
US7337442B2 (en) * 2002-12-03 2008-02-26 Microsoft Corporation Methods and systems for cooperative scheduling of hardware resource elements
US7103881B2 (en) 2002-12-10 2006-09-05 Intel Corporation Virtual machine to provide compiled code to processing elements embodied on a processor device
US7451459B2 (en) * 2003-05-05 2008-11-11 Microsoft Corporation Systems, methods, and apparatus for indicating processor hierarchical topology
US7430737B2 (en) * 2003-12-04 2008-09-30 Sun Microsystems, Inc. Processor and method for supporting compiler directed multithreading management
US20050132363A1 (en) 2003-12-16 2005-06-16 Vijay Tewari Method, apparatus and system for optimizing context switching between virtual machines
US7467381B2 (en) * 2003-12-16 2008-12-16 Intel Corporation Resource partitioning and direct access utilizing hardware support for virtualization
US7788670B2 (en) 2004-10-26 2010-08-31 Intel Corporation Performance-based workload scheduling in multi-core architectures
US8621458B2 (en) * 2004-12-21 2013-12-31 Microsoft Corporation Systems and methods for exposing processor topology for virtual machines
US7512826B2 (en) 2005-04-20 2009-03-31 International Business Machines Corporation Method, apparatus, and product for an efficient virtualized time base in a scaleable multi-processor computer
US8249853B2 (en) 2006-03-31 2012-08-21 Intel Corporation Exposing device features in partitioned environment

Also Published As

Publication number Publication date
KR20060071307A (ko) 2006-06-26
PL1674987T3 (pl) 2012-09-28
CN1794177B (zh) 2010-10-27
JP2006178933A (ja) 2006-07-06
EP1674987A3 (en) 2007-10-24
ATE554445T1 (de) 2012-05-15
US8621458B2 (en) 2013-12-31
US8972991B2 (en) 2015-03-03
EP1674987A2 (en) 2006-06-28
US20060136653A1 (en) 2006-06-22
EP1674987B1 (en) 2012-04-18
CN1794177A (zh) 2006-06-28
US20140115588A1 (en) 2014-04-24
ES2382470T3 (es) 2012-06-08

Similar Documents

Publication Publication Date Title
JP5048940B2 (ja) 仮想マシンについてのプロセッサ・トポロジをエクスポーズするためのシステムおよび方法
CN105830026B (zh) 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法
Chen et al. Enabling FPGAs in the cloud
JP5005191B2 (ja) 仮想マシン環境においてオペレーティングシステムを実施するためのシステムおよび方法
US9268394B2 (en) Virtualized application power budgeting
US9753754B2 (en) Enforcing deterministic execution of threads of guest operating systems running in a virtual machine hosted on a multiprocessor machine
EP1622014B1 (en) Systems and methods for inializing multiple virtual processors within a single virtual machine
RU2398267C2 (ru) Иерархическая виртуализация посредством многоуровневого механизма виртуализации
JP5584220B2 (ja) コンフィギュレーション空間仮想化
US12073242B2 (en) Microservice scheduling
Merritt et al. Shadowfax: scaling in heterogeneous cluster systems via GPGPU assemblies
US20120272235A1 (en) Consolidation of idle virtual machines
US20110296428A1 (en) Register allocation to threads
US20090133099A1 (en) Methods and systems for transparent software license suspension
Maas et al. The case for the holistic language runtime system
Avramidis et al. Live migration on ARM-based micro-datacentres
Lin et al. Improving GPOS real-time responsiveness using vCPU migration in an embedded multicore virtualization platform
Takagi et al. Operating System Design for Next Generation Many-core based Supercomputers
Kim et al. AuRORA: A Full-Stack Solution for Scalable and Virtualized Accelerator Integration
Karlsson Enea Hypervisor: Facilitating Multicore Migration with the Enea Hypervisor
Prades et al. GPGPU as a service: Providing GPU-acceleration services to federated cloud systems
Meghanathan Virtualization as the Catalyst for Cloud Computing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081106

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110817

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110902

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111228

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20120104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120104

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120327

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120626

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120720

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150727

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5048940

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250