(57)【要約】  仮想マシンの移行を介したメモリコヒーレンシのアクセラレーションのためのシステムと方法は、複数のプロセッサを備える。複数のプロセッサのうちの第1のプロセッサは、少なくとも1つの仮想マシンを実装するように構成される。モニタは、第1のプロセッサと、複数のプロセッサのうちの少なくとも第2のプロセッサとの間のメモリ要求の数を監視するように構成される。仮想マシンマネージャは、メモリ要求の数がしきい値を超えることに基づいて第1のプロセッサから第2のプロセッサに仮想マシンの少なくとも一部分を移行するように構成される。
2014530430.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシンの移行のためのシステムであって、
複数のプロセッサと、
少なくとも1つの仮想マシンを実装する前記複数のプロセッサのうちの第1のプロセッサと、
前記第1のプロセッサと、前記複数のプロセッサのうちの少なくとも第2のプロセッサとの間のメモリ要求の数を監視するように構成されるモニタと、
前記メモリ要求の数がしきい値を超えることに基づいて前記第1のプロセッサから前記第2のプロセッサに前記仮想マシンの少なくとも一部分を移行するように構成される仮想マシンマネージャと
を含むシステム。
【請求項２】
少なくとも前記第1のプロセッサと前記第2のプロセッサとの間のアクセスインターフェースであって、前記メモリ要求の数が、前記アクセスインターフェースにわたって監視される、アクセスインターフェース
をさらに含む、請求項1に記載のシステム。
【請求項３】
前記アクセスインターフェースがバスである、請求項2に記載のシステム。
【請求項４】
前記アクセスインターフェースが第1の処理環境と第2の処理環境とを結合しているネットワークであり、したがって、前記第1のプロセッサが前記第1の処理環境に組み込まれ、前記第2のプロセッサが前記第2の処理環境に組み込まれる、請求項2に記載のシステム。
【請求項５】
前記仮想マシンマネージャが、前記仮想マシンの全体を移行するように構成される、請求項1に記載のシステム。
【請求項６】
前記仮想マシンマネージャが、前記仮想マシンの一部分のみ、およびメモリ要求操作を完了するために必要とされる前記仮想マシンに関連付けられた状態情報を移行するように構成される、請求項1に記載のシステム。
【請求項７】
前記仮想マシンマネージャが、仮想マシンの移行の数を追跡し、前に実行された仮想マシンの移行の数に基づいて現在の仮想マシンの移行の状態を決定するように構成される、請求項1に記載のシステム。
【請求項８】
複数のタイプのメモリ要求と、
前記複数のタイプのメモリ要求に関連付けられた複数のしきい値と、
前記複数のタイプのメモリ要求のタイプごとに、前記第1のプロセッサと少なくとも前記第2のプロセッサとの間のメモリ要求の数を監視するためのロジックを含む前記モニタと、
前記複数のタイプのメモリ要求のうちの少なくとも1つの前記メモリ要求の数が、関連するしきい値を超えることに基づいて前記第1のプロセッサから前記第2のプロセッサに前記仮想マシンの少なくとも一部分を移行するためのロジックを含む前記仮想マシンマネージャと
をさらに含む、請求項1に記載のシステム。
【請求項９】
複数のプロセッサを備えるマルチコア処理環境において仮想マシンを管理する方法であって、
前記複数のプロセッサのうちの第1のプロセッサにおいて少なくとも1つの仮想マシンを実装するステップと、
前記第1のプロセッサと、前記複数のプロセッサのうちの少なくとも第2のプロセッサとの間のメモリ要求の数を監視するステップと、
前記メモリ要求の数がしきい値を超えることに基づいて前記第1のプロセッサから前記第2のプロセッサに1つの仮想マシンの少なくとも一部分を移行するステップと
を含む方法。
【請求項１０】
アクセスインターフェースが前記第1のプロセッサと前記第2のプロセッサとの間に構成され、前記メモリ要求の数が、前記アクセスインターフェースにわたって監視される、請求項9に記載の方法。
【請求項１１】
前記アクセスインターフェースがバスである、請求項10に記載の方法。
【請求項１２】
前記アクセスインターフェースが第1の処理環境と第2の処理環境とを結合しているネットワークであり、したがって、前記第1のプロセッサが前記第1の処理環境に組み込まれ、前記第2のプロセッサが前記第2の処理環境に組み込まれる、請求項10に記載の方法。
【請求項１３】
前記仮想マシンの全体が移行される、請求項9に記載の方法。
【請求項１４】
前記仮想マシンの一部分のみおよび関連する状態情報が移行される、請求項9に記載の方法。
【請求項１５】
前に実行された仮想マシンの移行の数に基づいて現在の仮想マシンの移行の状態を決定するステップをさらに含む、請求項9に記載の方法。
【請求項１６】
複数のタイプのメモリ要求を決定するステップと、
前記複数のタイプのメモリ要求に関連付けられた複数のしきい値を決定するステップと、
前記複数のタイプのメモリ要求のタイプごとに、前記第1のプロセッサと少なくとも前記第2のプロセッサとの間のメモリ要求の数を監視するステップと、
前記複数のタイプのメモリ要求のうちの少なくとも1つの前記メモリ要求の数が、関連するしきい値を超えることに基づいて前記第1のプロセッサから前記第2のプロセッサに前記仮想マシンの少なくとも一部分を移行するステップと
をさらに含む、請求項9に記載の方法。
【請求項１７】
複数のプロセッサを備えるマルチコア処理環境において仮想マシンを管理するためのシステムであって、
前記複数のプロセッサのうちの第1のプロセッサにおいて実装される少なくとも1つの仮想マシン手段と、
前記第1のプロセッサと、前記複数のプロセッサのうちの少なくとも第2のプロセッサとの間のメモリ要求の数を監視するための手段と、
前記メモリ要求の数がしきい値を超えることに基づいて前記第1のプロセッサから前記第2のプロセッサに前記仮想マシン手段の少なくとも一部分を移行するための手段と
を含むシステム。
【請求項１８】
インターフェース手段が前記第1のプロセッサと前記第2のプロセッサとの間に構成され、前記メモリ要求の数が、前記インターフェース手段にわたって監視される、請求項17に記載のシステム。
【請求項１９】
前記インターフェース手段が第1の処理環境と第2の処理環境とを結合するように構成され、したがって、前記第1のプロセッサが前記第1の処理環境に組み込まれ、前記第2のプロセッサが前記第2の処理環境に組み込まれる、請求項18に記載のシステム。
【請求項２０】
前記仮想マシンの全体が移行される、請求項17に記載のシステム。
【請求項２１】
前記仮想マシン手段の一部分のみおよび関連する状態情報が移行される、請求項17に記載のシステム。
【請求項２２】
前に実行された仮想マシンの移行の数に基づいて前記仮想マシン手段を移行するための手段をさらに含む、請求項17に記載のシステム。
【請求項２３】
複数のタイプのメモリ要求と、
前記複数のタイプのメモリ要求に関連付けられた複数のしきい値と、
前記複数のタイプのメモリ要求のタイプごとに、前記第1のプロセッサと少なくとも前記第2のプロセッサとの間のメモリ要求の数を監視するための手段と、
前記複数のタイプのメモリ要求のうちの少なくとも1つの前記メモリ要求の数が、関連するしきい値を超えることに基づいて前記第1のプロセッサから前記第2のプロセッサに前記仮想マシン手段の少なくとも一部分を移行するための手段と
をさらに含む、請求項17に記載のシステム。
【請求項２４】
複数のプロセッサのうちの管理プロセッサによって実行されると、前記複数のプロセッサのうちの第1のプロセッサから第2のプロセッサへの仮想マシンの移行を引き起こすコードを含む非一時的コンピュータ可読記憶媒体であって、
前記第1のプロセッサと前記第2のプロセッサとの間のメモリ要求の数を監視するためのコードと、
前記メモリ要求の数がしきい値を超えることに基づいて前記第1のプロセッサから前記第2のプロセッサに前記仮想マシンの少なくとも一部分を移行するためのコードと
を含む非一時的コンピュータ可読記憶媒体。
【請求項２５】
アクセスインターフェースが、前記第1のプロセッサと前記第2のプロセッサとの間に構成される、請求項24に記載の非一時的コンピュータ可読記憶媒体。
【請求項２６】
前記アクセスインターフェースが第1の処理環境と第2の処理環境とを結合しているネットワークであり、したがって、前記第1のプロセッサが前記第1の処理環境に組み込まれ、前記第2のプロセッサが前記第2の処理環境に組み込まれる、請求項25に記載の非一時的コンピュータ可読記憶媒体。
【請求項２７】
仮想マシン手段の全体が移行される、請求項24に記載の非一時的コンピュータ可読記憶媒体。
【請求項２８】
仮想マシン手段の一部分のみおよび関連する状態情報が移行される、請求項24に記載の非一時的コンピュータ可読記憶媒体。
【請求項２９】
前に実行された仮想マシン手段の移行の数に基づいて前記仮想マシン手段を移行するためのコードをさらに含む、請求項24に記載の非一時的コンピュータ可読記憶媒体。
【請求項３０】
複数のタイプのメモリ要求と、
前記複数のタイプのメモリ要求に関連付けられた複数のしきい値と、
前記複数のタイプのメモリ要求のタイプごとに、前記第1のプロセッサと少なくとも前記第2のプロセッサとの間のメモリ要求の数を監視するためのコードと、
前記複数のタイプのメモリ要求のうちの少なくとも1つの前記メモリ要求の数が、関連するしきい値を超えることに基づいて前記第1のプロセッサから前記第2のプロセッサに仮想マシン手段の少なくとも一部分を移行するためのコードと
をさらに含む、請求項24に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
開示する実施形態は、マルチコア処理システムにおけるメモリコヒーレンシ操作のアクセラレーションを対象とする。より詳細には、例示的な実施形態は、マルチコア処理システムにおける仮想マシンの移行（migration）技法を対象とする。
【背景技術】
【０００２】
マルチコア処理システムは、独立して動作することができる2つ以上のプロセッサ/プロセッサコアから構成され得る。複数のプロセッサは、単一のチップに統合され得る。各プロセッサは、その専用のメモリを有することができると同時に、他のプロセッサと共有される共用メモリにもアクセスすることができる。ネットワークインターフェースおよびシステムバスアーキテクチャは、プロセッサと共用メモリ構造との間のデータのフローを可能にする。マルチコア処理システムは、2つ以上の処理環境も含み得、各処理環境は、1つまたは複数のプロセッサおよび共用メモリ構造を含むことができ、2つ以上の処理環境は、ネットワークを介して接続され得る。
【０００３】
マルチコア処理環境内のプロセッサは、時々データをローカル専用メモリまたはキャッシュに記憶することを望み得、またある時には共用メモリへのアクセスも要求し得る。しかしながら、マルチプロセッサは、あたかもそれらがすべて統合された共用メモリにアクセスしているかのようにユーザおよびいくつかのプログラムには見えることを望む場合が多い。したがって、当技術分野では、共用メモリの一貫したイメージを維持するために、複雑なキャッシュおよびメモリコヒーレンシ技法が探求されている。時々、専用のハードウェアソリューションによってキャッシュコヒーレンシを実現することができる。ネットワークに結合された複数の処理環境の場合、コヒーレンシを実現するために、分散共用メモリ技法が使用される。上記のコヒーレンシ技法は、従来、ある処理環境から別の処理環境へのメモリブロックの移行を伴う。
【０００４】
さらに、各プロセッサは、1つまたは複数の仮想マシンを使用することができる。仮想マシンは、処理環境の抽象化である。これらの仮想マシンは、ソフトウェアにおいて部分的にまたは完全に実装され得る。仮想マシンの多くの適用例がある。たとえば、仮想マシンは、ホストプロセッサ上でソフトウェアアプリケーションを動作させる、またはユーザレベルのプログラムを動作させるために仮想環境を作り出すために使用され得る。また、仮想マシンは一般に、ホストプロセッサのオペレーティングシステムとは異なるオペレーティングシステムを動作させるために、またはホスト環境のものとは異なる命令セットを実行するために、ホストプロセッサによって使用される。さらに、仮想マシンは、単一の物理マシンにおいて多くの完全な処理環境を多重化するために使用される。仮想マシンの操作および使用の性質のために、仮想マシンは従来、異なるホストに動的にそれが再割り当てされ得る、または、ホスト上で動作しているいくつかの仮想マシンのうちの1つの間にホスト内の物理リソースが再割り当てされ得るという点で、仮想マシンが使用する物理リソースから分離されている。
【０００５】
キャッシュおよびメモリコヒーレンシを維持するために、仮想マシンは、しばしば、ホストプロセッサとは別個の処理環境にある共用メモリにデータ転送を要求し得る。たとえば、第1の処理環境におけるホストプロセッサに属する仮想マシンは、第2の処理環境にある共用メモリにデータを要求する可能性があり、これによって、共有ネットワークおよびシステムバスリソースにわたる大量のデータの移動がもたらされる。さらに、処理環境間のデータ転送は、いくつかの最小の転送サイズでサポートされるだけである。そのような最小の転送サイズは、上記の例の仮想マシンによって必要とされるデータ転送のサイズよりもはるかに大きくなり得る。その結果、多数の仮想マシンをサポートしているプロセッサを有するマルチコア環境では、大きいメモリブロックが共用システムリソースにおいて頻繁にトランスポートされるこの問題は、ネットワークインターフェースおよびシステムバスを事実上閉塞させる可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
仮想マシン自体のサイズが仮想マシンによって開始されるデータ転送のサイズよりもはるかに小さい場合が多いことを考慮に入れると、上記の問題は、なお一層顕著である。したがって、当技術分野では、仮想マシンによって生じる大規模のデータ転送のためにシステムリソースを犠牲にすることなくメモリコヒーレンシを改善する技法が必要である。
【課題を解決するための手段】
【０００７】
本発明の例示的な実施形態は、マルチコア処理システムにおいてメモリコヒーレンシ操作を加速するための仮想マシンの移行のシステムおよび方法を対象とする。
【０００８】
たとえば、例示的な実施形態は、複数のプロセッサを備える仮想マシンの移行のためのシステムを対象とする。複数のプロセッサのうちの第1のプロセッサは、少なくとも1つの仮想マシンを実装するように構成される。モニタは、第1のプロセッサと、複数のプロセッサのうちの少なくとも第2のプロセッサとの間のメモリ要求の数を監視するように構成される。仮想マシンマネージャは、メモリ要求の数がしきい値を超えることに基づいて第1のプロセッサから第2のプロセッサに仮想マシンの少なくとも一部分を移行するように構成される。
【０００９】
別の例示的な実施形態は、複数のプロセッサを備えるマルチコア処理環境において仮想マシンを管理する方法を対象とし、この方法は、複数のプロセッサのうちの第1のプロセッサにおいて少なくとも1つの仮想マシンを実装するステップを含む。この方法は、第1のプロセッサと、複数のプロセッサのうちの少なくとも第2のプロセッサとの間のメモリ要求の数を監視するステップと、メモリ要求の数がしきい値を超えることに基づいて第1のプロセッサから第2のプロセッサに仮想マシンの少なくとも一部分を移行するステップとをさらに含む。
【００１０】
さらに別の例示的な実施形態は、複数のプロセッサを備えるマルチコア処理環境において仮想マシンを管理するためのシステムを対象とし、このシステムは、複数のプロセッサのうちの第1のプロセッサにおいて実装される少なくとも1つの仮想マシン手段を含む。このシステムは、第1のプロセッサと、複数のプロセッサのうちの少なくとも第2のプロセッサとの間のメモリ要求の数を監視するための手段と、メモリ要求の数がしきい値を超えることに基づいて第1のプロセッサから第2のプロセッサに仮想マシン手段の少なくとも一部分を移行するための手段とを含む。
【００１１】
別の例示的な実施形態は、複数のプロセッサのうちの管理プロセッサによって実行されると、複数のプロセッサのうちの第1のプロセッサから第2のプロセッサへの仮想マシンの移行を引き起こすコードを含む非一時的コンピュータ可読記憶媒体を対象とし、非一時的コンピュータ可読記憶媒体は、第1のプロセッサと第2のプロセッサとの間のメモリ要求の数を監視するためのコードと、メモリ要求の数がしきい値を超えることに基づいて第1のプロセッサから第2のプロセッサに仮想マシンの少なくとも一部分を移行するためのコードとを含む。
【００１２】
添付の図面は、本発明の実施形態の説明を助けるために提示され、実施形態の限定ではなく、実施形態の例示のためのみに提供される。
【図面の簡単な説明】
【００１３】
【図１】従来の技法による、マルチコア処理システム100の実装形態を示す概念ブロック図である。
【図２】例示的な実施形態による、マルチコア処理システム200を示す図である。
【図３】マルチコア処理システム200の処理環境にわたる理論的なデータ転送を示す図である。
【図４】例示的な実施形態による、仮想マシンの移行を示す図である。
【図５】例示的な実施形態における仮想マシンに関連付けられた一連のイベントを示すフローチャートである。
【発明を実施するための形態】
【００１４】
本発明の特定の実施形態を対象とする以下の説明および関連する図面で、本発明の態様を開示する。本発明の範囲から逸脱することなく代替的な実施形態を考案することができる。さらに、本発明の関連する詳細を不明瞭にしないように、本発明のよく知られている要素は詳細に記載されないか、または省略される。
【００１５】
「例示的な」という語は、「例、実例、または具体例としての役割を果たすこと」を意味するように本明細書において用いられている。「例示的な」として本明細書で説明する任意の実施形態は、必ずしも他の実施形態よりも好ましいか、または有利であると解釈されるべきではない。同様に、「本発明の実施形態」という用語は、本発明のすべての実施形態が、論じられた特徴、利点または動作モードを含むことを必要としない。
【００１６】
本明細書で使用される用語は、特定の実施形態の説明のみを目的とするものであり、本発明の実施形態を限定するものではない。本明細書で使用する単数形「a」、「an」、および「the」は、文脈が別段に明確に示すのでなければ、複数形をも含むものとする。さらに、「備える(comprises)」、「備えている(comprising)」、「含む(includes)」、および/または「含んでいる(including)」という用語は、本明細書で使用されると、述べられた特徴、整数、ステップ、動作、要素、および/または構成要素の存在を明示するが、1つもしくは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことが理解されよう。
【００１７】
さらに、多くの実施形態が、たとえばコンピューティングデバイスの要素によって実施すべき、一連のアクションに関して説明される。本明細書で説明する様々なアクションは、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって、1つまたは複数のプロセッサによって実行されるプログラム命令によって、あるいは両方の組合せによって実行され得ることを認識されよう。さらに、本明細書で説明するこれらの一連のアクションは、実行時に、関連するプロセッサに本明細書で説明する機能を実行させるコンピュータ命令の対応するセットを記憶した、任意の形式のコンピュータ可読記憶媒体内で全体として具現化されるものと見なすことができる。したがって、本発明の様々な態様は、請求する主題の範囲内にすべて入ることが企図されているいくつかの異なる形式で具現化され得る。さらに、本明細書で説明する実施形態ごとに、任意のそのような実施形態の対応する形式について、本明細書では、たとえば、記載のアクションを実行する「ように構成された論理」として説明することがある。
【００１８】
図1は、従来の技法による、マルチコア処理システム100の実装形態を示す概念ブロック図である。システム100は、スタンドアロンシステムでもよく、またはネットワークを介して1つまたは複数の処理システムに結合されてもよい。システム100は、集積回路として実装することができ、または複数の集積回路にわたって分散されてもよい。システム100の適切な実装形態は、ワイヤレスデバイス、デスクトップコンピュータ、ラップトップコンピュータ、モデム、またはシステム100の処理能力を必要とする任意の他のデバイスなどのデバイス中に埋め込まれ得る。特定の適用例のためのシステム100の最高の可能な実装形態を、当業者であれば認識されよう。
【００１９】
ネットワーク140を介して互いに通信する2つの概念上の処理環境130aおよび130bを含むマルチコア処理システム100が示される。システム100の実装形態に基づいて、ネットワーク140は、たとえばローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、イーサネット（登録商標）、ワイヤレスLAN、光ファイバーなど、任意の適した通信ネットワークとすることができる。
【００２０】
1つまたは複数のプロセッサ、共用メモリシステム、ネットワークインターフェース、およびプロセッサ内に実装されている仮想マシンを含む各処理環境130aおよび130bが示されている。たとえば、処理環境130aは、プロセッサ104aおよび106aを備える。プロセッサ104aおよび106aは、図示のように、仮想マシン120a、122a、124a、および126aを実装するものとして示されている。メモリ102aは、バス相互接続108aを介してプロセッサ104aと106aとの間で共有されている。また、バス相互接続108aは、プロセッサ104a、106aおよびメモリ102aをネットワークインターフェース110aに接続する。ネットワークインターフェース110aは、ネットワーク140とインターフェースし、処理環境130aをネットワーク140に接続するための手段として働く。
【００２１】
同様に、処理環境130bは、図示のように、仮想マシン120b、122b、124bおよび126bを備えるプロセッサ104bおよび106bを含む。メモリ102bは、同じくネットワークインターフェース110bに接続するバス相互接続108bを介してプロセッサ104bと106bとの間で共有される。ネットワークインターフェース110bは、図示のように、ネットワーク140とインターフェースする。
【００２２】
プロセッサ104a、106a、104bおよび106bは、例として、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他のプログラム可能なロジックまたは処理エンティティなどを含む任意のプロセッサとして実装され得る。プロセッサ104a、106a、104bおよび106bの1つまたは複数は、オペレーティングシステム上で動作し、特定の命令セットアーキテクチャに関連する命令を実行するように構成され得る。プロセッサ104a、106a、104bおよび106bのうちの1つまたは複数は、図1に示されるように、1つまたは複数の仮想マシンに対するホストプロセッサとすることができる。
【００２３】
仮想マシン120a〜126aおよび120b〜126bの実装は、それらの所望の使用およびそれらの対応するホストプロセッサへの接続の程度に基づき得る。たとえば、仮想マシン124aは、ホストプロセッサ106aのものとは異なる命令セットにおいて動作するようにプログラムされ得る。代替または追加として、仮想マシン124aは、オペレーティングシステムまたは専用プログラムを動作させることができる。例として、Java（登録商標）仮想マシンは、ホストプロセッサ106aにおいてJava（登録商標）プログラミング言語を動作させるために実装され得る。本明細書で説明するように、当業者であれば、仮想マシンの様々な実装形態を認識するであろう。
【００２４】
次に図2を参照すると、システム200についての例示的な実施形態が示される。システム200は、それらのホスト環境における仮想マシンの操作を制御するために使用される仮想マシンマネージャ250aおよび250bを示す。プロセッサ204aおよび206aは、仮想マシン220a、222a、224a、および226aを実装するものとして示されている。同様に、プロセッサ204bおよび206bは、仮想マシン220b、222b、224b、および226bを実装するものとして示されている。仮想マシンマネージャ250aおよび250bが他の仮想マシンマネージャおよび/またはシステム200における仮想マシンを実装する様々なプロセッサとの通信を維持することができることを諒解されよう。仮想マシンマネージャ250aおよび250bは、新しい仮想マシンのプロビジョニングを可能にし、必要なリソースを仮想マシンに割り振り、個々の仮想マシンの状態および動作パラメータを記憶し、同じホストプロセッサ内の新しい位置、または新しいホスト環境に仮想マシン全体または仮想マシンの一部分の位置を転送するために使用され得る。仮想マシンマネージャ250aおよび250bは、ソフトウェアおよび/またはハードウェアに実装することができ、それらは、個々のホストプロセッサに専用でもよく、あるいは1つまたは複数のホスト環境によって共有されてもよい。仮想マシンマネージャ250aおよび250bは、スタンドアロンユニットとして示されているが、この例は限定として解釈されないものとし、1つまたは複数の処理環境と同じチップ内、さらには1つまたは複数のホストプロセッサ内に組み込まれてもよい。さらに、実施形態は、図示のように、各処理環境における別個の仮想マシンマネージャを必要とすることに限定されない。たとえば、一実施形態は、仮想マシンマネージャ250bの機能を統合することによって、仮想マシンマネージャ250aを実装することができ、したがって、仮想マシンマネージャ250bの別個のインスタンスの必要がなくなる。仮想マシンマネージャ250aおよび/または250bの適切な実装形態を、当業者であれば認識されよう。
【００２５】
引き続き図2を参照すると、ホストプロセッサ206bおよび処理環境230bに属する仮想マシン226bは、処理環境230aに属するメモリ202aにデータ転送を要求する。このデータ転送の要求が満たされるために、要求は、バス相互接続208bからネットワークインターフェース210b、ネットワーク240まで進んで行き、その後、ネットワークインターフェース210aおよびバス相互接続208aを介してメモリ202aに到達する必要がある。例示的な実施形態では、メモリ管理ユニット(図示せず)および/またはメモリコントローラ(同じく図示せず)は、メモリ202aへ/からのデータ転送を制御することができる。仮想マシンマネージャ250aおよび250bは、メモリ202aへの仮想マシン226bの要求の伝搬を容易にすることができる。
【００２６】
図3は、要求に応えるために、要求されたデータが転送されることになっている場合、要求に応えるための理論的なパス252を示しており、要求されたデータは、処理環境230aにおけるメモリ202aから処理環境230bにおけるメモリ202bに転送され、その後、バス相互接続208bを介して仮想マシン226bに利用可能となる。従来、そのように転送することができるデータの最小サイズは、ページ全体のサイズである。これは、ページ全体を転送することが、複数の処理環境にわたる分散された共用メモリ構造のメモリコヒーレンシを容易にするからである。ページサイズは、従来、4KB以上であるが、様々な実施形態は、任意の特定のページサイズに限定されない。したがって、メモリ202aは、仮想マシン226bからの要求に応答して少なくともサイズ4KBのページ全体を転送することになる。
【００２７】
前に説明したように、そのような大きいデータ転送は、帯域幅およびシステムリソースに悪影響を及ぼす。さらに、たいていの場合は、仮想マシン226bのような仮想マシンによって、データ転送のための頻繁な多数の要求が、その操作の間、同じメモリデバイスから行ったり来たりし、それによって問題が悪化する。
【００２８】
例示的な実施形態は、ホストプロセッサ全体の状態が4KBよりもしばしば小さいことを認識する。より詳細には、仮想マシンの状態は、256バイトによってしばしば表すことができる。実施形態は、仮想マシンが頻繁なデータ転送を要求しているメモリデバイスに近いことは、データがあまり遠くに移動する必要がないので、システムリソースへの圧力を低減することも認識する。
【００２９】
したがって、図4は、仮想マシン226bからの要求に応えるために、図3に示された理論的なパス252に沿ってデータを転送する代わりに、仮想マシン226b自体がホストプロセッサ206aに移行される例示的な実施形態を示す。移行は、仮想マシンマネージャ250aおよび250bの制御下で実行され得る。さらに、仮想マシン226bを全体として移行する代わりに、メモリ202aとの頻繁な通信を要求する仮想マシン226bの一部分のみが移行され得る。たとえば、仮想マシンは、マルチコア処理環境においてプロセッサのクラスタの通信機構に対する抽象化を行うことができる。そのような仮想マシンは、クラスタにおける1つまたは複数のプロセッサの個々のものに関連付けられた1つまたは複数のプロセスを備え得る。再び図4を参照すると、仮想マシン226bは、メモリ202aとの通信を要求するホストプロセッサ206aに関連付けられた特定のプロセスを備え得る。この場合、仮想マシン226b全体とは対照的に、特定のプロセスを実行している仮想マシン226bの一部分のみがホストプロセッサ206aに移行され得る。別の例では、整数レジスタを備える仮想マシン226bの一部分がホストプロセッサ206aに転送され得るが、特別に明記しない限り、すべての浮動小数点またはベクトルレジスタが転送されるとは限らない場合がある。
【００３０】
ホストプロセッサ206aへの仮想マシン226bの移行によって、仮想マシン226bは、バス相互接続208b、ネットワークインターフェース210aおよび210b、ならびにネットワーク240を通過する必要なしに、バス相互接続208aを介してメモリ202aと通信することができる。メモリコヒーレンシを維持することは、処理環境230a内でより容易であり得るので、バス相互接続208aを介したホストプロセッサ206aとメモリ202aとの間のデータ転送のために、より小さいデータ転送サイズがサポートされ得る。
【００３１】
したがって、要求されたデータは、最小の(たとえば4KB)ページサイズのブロックで転送される必要はなく、要求されるデータのサイズに比例して、適切にサイズ決定され得る。さらに、たとえば、ロックまたは偽共有の状況を争う間など、1つまたは複数のホストプロセッサが細粒度のデータを共有することを望むシナリオでは、異なるホストプロセッサにわたる仮想マシンが単一のホストプロセッサに転送され得、キャッシュ/メモリコヒーレンシの問題は回避され得る。コヒーレンシ操作のためにコヒーレンシバス構造または専用ハードウェアサポートを必要とすることなしに、メモリコヒーレンシを加速するために、仮想マシンの移行が使用され得ることも諒解されよう。仮想マシンの移行のこれらおよび他の利点は、当業者によって認識されよう。
【００３２】
さらに、図3〜図4に示すように、例示的な実施形態は、プロセッサの間のメモリ要求を監視するためのメモリ要求モニタ260も含み得る。モニタ260はネットワーク240と通信しているものとして示されているが、様々な他の実装形態が実施形態の範囲内に含まれる。たとえば、1つまたは複数のメモリ要求モニタが1つまたは複数のホストプロセッサ内に組み込まれ得る。別の例として、メモリ要求モニタが、たとえば250aおよび250bなどの仮想マシンマネージャの一部として構成され得る。さらに、メモリ要求モニタは、部分的にまたは完全にソフトウェアに実装されてもよい。メモリ要求モニタ260の様々な構成は、特定の適用例およびシステム構成に基づいて実装され得ることを諒解されよう。
【００３３】
例示的な実装形態では、モニタ260は、ある処理環境における1つまたは複数のプロセッサと別の処理環境における1つまたは複数のプロセッサに関連付けられたメモリとの間の要求を監視することができる。処理環境にわたるそのようなメモリ要求がプロセッサにある1つまたは複数の仮想マシンに関連付けられ得る場合が多い可能性がある。プロセッサ(またはプロセッサ内に常駐する仮想マシン)と異なるプロセッサに関連付けられたメモリ要素との間のデータ転送要求のしきい値数が決定され得る。そのようなメモリ要求の数が所定のしきい値数を超える場合、仮想マシンの移行が開始し得る。所定のしきい値数が「ゼロ」であり得る、すなわち、プロセッサ(またはプロセッサ内に常駐する仮想マシン)と異なるプロセッサに関連付けられたメモリ要素との間の任意のアクセスまたはデータ転送要求の検出は、仮想マシンの移行をトリガするように構成され得ることを理解されよう。
【００３４】
別のトリガ機構は、読取り専用データについての要求、書き込み可能データについての要求、異なるデータサイズおよび/または他の属性についての要求を含む様々なタイプのメモリ要求間を区別するようにモニタ260を構成することを伴い得る。所定のしきい値数は、各タイプのメモリ要求に関連付けられ得、個々のタイプのメモリ要求のメモリ要求数が関連する所定のしきい値数を超える場合、仮想マシンの移行がトリガされ得る。
【００３５】
例示的な実施形態は、仮想マシンの移行の数を追跡するために、1つまたは複数の仮想マシンマネージャ(たとえば250aおよび250b)を利用することもできる。仮想マシンを移行する旨の決定は、以前実行された仮想マシンの移行の数に部分的に基づき得る。仮想マシンマネージャ250aおよび250bによって仮想マシンを移行する旨の決定は、モニタ260からのメモリ要求の数の決定に関連して行われ得る。
【００３６】
したがって、多数の相互接続およびネットワーク手段にわたって大きいデータブロックを共用メモリ構造から転送する代わりに、例示的な実施形態は、有利には、仮想マシンの少なくとも一部分を移行する。仮想マシンが移行されたホスト環境にとどまる必要はもはやないことが、仮想マネージャ250aまたは250b、または任意の他の適切な監視手段によってひとたび決定されると、移行された仮想マシンは、仮想マシンに関連付けられた元のホストプロセッサ、または任意の新しい適切なホスト環境に戻され得る。説明した方法で、仮想マシン、または仮想マシンの状態を移行する利点を、当業者であれば諒解されよう。
【００３７】
実施形態は、本明細書で開示されるプロセス、機能および/またはアルゴリズムを実行するための様々な方法を含むことも諒解されよう。たとえば、図5に示すように、一実施形態は、複数のプロセッサのうちの少なくとも第1のプロセッサにおいて仮想マシンを実装する方法を含み得る(ブロック502)。第1のプロセッサと、複数のプロセッサのうちの少なくとも第2のプロセッサとの間のメモリ要求の数を監視することができる(ブロック504)。メモリ要求の数がしきい値を超えるかどうかを決定することができる(ブロック506)。しきい値を超える場合、仮想マシンの少なくとも一部分を、第1のプロセッサから第2のプロセッサに転送することができる(ブロック508)。
【００３８】
情報および信号は、多種多様な技術および技法のいずれかを使用して表すことができることを当業者は諒解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
【００３９】
さらに、本明細書で開示した実施形態に関連して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装できることを、当業者は諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈すべきではない。
【００４０】
本明細書で開示した実施形態と関連して説明した方法、シーケンス、および/またはアルゴリズムは、ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはその2つの組合せで直接実施され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体中に常駐し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。
【００４１】
したがって、本発明の実施形態は、仮想マシンの移行のための方法を具現化するコンピュータ可読媒体を含み得る。したがって、本発明は図示の例に限定されず、本明細書で説明した機能を実行するためのいかなる手段も、本発明の実施形態中に含まれる。
【００４２】
上記の開示は本発明の例示的な実施形態を示すが、添付の特許請求の範囲によって規定される本発明の範囲から逸脱することなく、本明細書において様々な変更および修正を行えることに留意されたい。本明細書で説明した本発明の実施形態による方法クレームの機能、ステップおよび/または動作は、特定の順序で実行されなくてもよい。さらに、本発明の要素は、単数形で説明または請求されていることがあるが、単数形に限定することが明示的に述べられていない限り、複数形が企図される。
【符号の説明】
【００４３】
200  マルチコア処理システム
202a  メモリ
202b  メモリ
204a  プロセッサ
204b  プロセッサ
206a  プロセッサ
206b  プロセッサ
208a  バス相互接続
208b  バス相互接続
210a  ネットワークインターフェース
220a  仮想マシン
220b  仮想マシン
222a  仮想マシン
222b  仮想マシン
224a  仮想マシン
224b  仮想マシン
226a  仮想マシン
226b  仮想マシン
230a  処理環境
230b  処理環境
240  ネットワーク
250a  仮想マシンマネージャ
250b  仮想マシンマネージャ
252  理論的なパス
260  メモリ要求モニタ
【図１】
2014530430.tif 000003
【図２】
2014530430.tif 000004
【図３】
2014530430.tif 000005
【図４】
2014530430.tif 000006
【図５】
2014530430.tif 000007
【国際調査報告】
2014530430.tif 000008
2014530430.tif 000009
2014530430.tif 000010