(57)【特許請求の範囲】
【請求項１】
仮想化コンピューティング装置であって、
一以上のプロセッサコアと、
前記一以上のプロセッサコアに結合したキャッシュと、
前記一以上のプロセッサコアにより動作され、当該装置上の複数の仮想マシンの動作を管理するハイパーバイザであって、前記キャッシュの一部を選択して、該ハイパーバイザ又は該仮想マシンの一つの選択データ又はコードを記憶すること、及び、該キャッシュの一部をロックして、該選択データ又はコードが該キャッシュから退去させられるのを防ぐことを含む、ハイパーバイザと、を含み、
前記ハイパーバイザは、前記仮想マシンの一つよりも、自分自身を優先して、前記キャッシュの一部にデータ又はコードを記憶する、装置。
【請求項２】
前記ハイパーバイザは、前記仮想マシンの一つのゲストオペレーティングシステムのためのインタフェースを有し、該ゲストオペレーティングシステムの前記選択データ又はコードをロックする要求を、前記キャッシュの一部に要求する、請求項1に記載の装置。
【請求項３】
前記ゲストオペレーティングシステムは、リアルタイムオペレーティングシステムである、請求項2に記載の装置。
【請求項４】
前記ハイパーバイザは、直接データ入出力により使用されない一以上のウェイを選択することによって、前記キャッシュの一部を選択する、請求項１に記載の装置。
【請求項５】
前記ハイパーバイザからの前記選択データ又はコードは、ディスパッチ機能、スケジューラ及び割り込みハンドラの少なくとも一つを含む、請求項1に記載の装置。
【請求項６】
前記ハイパーバイザは、前記仮想マシンの一つのメモリ領域を前記キャッシュにロックする要求をするハイパーコールを含むハイパーコールインタフェースを含む、請求項1に記載の装置。
【請求項７】
前記ハイパーバイザは、前記仮想マシンの一つのメモリ領域を前記キャッシュからアンロックする要求をするハイパーコールを含むハイパーコールインタフェースを含む、請求項1に記載の装置。
【請求項８】
仮想化コンピューティング装置であって、
一以上のプロセッサコアと、
前記一以上のプロセッサコアに結合したキャッシュと、
前記一以上のプロセッサコアにより動作され、当該装置上の複数の仮想マシンの動作を管理するハイパーバイザであって、前記キャッシュの一部を選択して、該ハイパーバイザ又は該仮想マシンの一つの選択データ又はコードを記憶すること、及び、該キャッシュの一部をロックして、該選択データ又はコードが該キャッシュから退去させられるのを防ぐことを含む、ハイパーバイザと、を含み、
前記ハイパーバイザは、直接データ入出力により使用されない一以上のウェイを選択することによって、前記キャッシュの一部を選択する、装置。
【請求項９】
前記キャッシュは、前記キャッシュへのアクセスを制御するビットマスクを含むキャッシュサービス品質クラスに関連づけられる、請求項1から8のいずれか一項に記載の装置。
【請求項１０】
前記ハイパーバイザは、前記キャッシュサービス品質クラスの設定を通じて、前記キャッシュの部分をロックする、請求項9に記載の装置。
【請求項１１】
前記ハイパーバイザは、前記仮想マシンの一つから前記キャッシュサービス品質クラスへの直接接触をトラップする、請求項9に記載の装置。
【請求項１２】
仮想化コンピューティング方法であって、
コンピューティングシステムのハイパーバイザによって、共有キャッシュの一部を選択して、該ハイパーバイザ又は該ハイパーバイザの管理下において該コンピューティングシステム上で動作する仮想マシンの選択データ又はコードを記憶することと、
前記ハイパーバイザによって、前記共有キャッシュの一部をロックして、前記ハイパーバイザ又は前記仮想マシンの前記選択データ又はコードが前記共有キャッシュから退去させられることを防ぐことと、
前記ハイパーバイザが、前記仮想マシンよりも優先して、前記共有キャッシュの一部を用いることと、を含む方法。
【請求項１３】
前記ハイパーバイザが、前記仮想マシンのゲストオペレーティングシステムから、該ゲストオペレーティングシステムの前記選択データ又はコードをロックする、前記共有キャッシュへの要求を受信することを、さらに含む請求項12に記載の方法。
【請求項１４】
前記受信することは、ハイパーコールインタフェースを通じて、前記ゲストオペレーティングシステムによって管理される仮想メモリの領域を前記共有キャッシュ内でロックすることを要求するハイパーコールを受信することを含む、請求項13に記載の方法。
【請求項１５】
前記ハイパーバイザが、前記ハイパーコールインタフェースを通じて、前記ゲストオペレーティングシステムによって管理される仮想メモリの領域を前記共有キャッシュ内でアンロックすることを要求するハイパーコールを受信することをさらに含む、請求項14に記載の方法。
【請求項１６】
前記ゲストオペレーティングシステムは、リアルタイムオペレーティングシステムである、請求項15に記載の方法。
【請求項１７】
前記ロックすることは、キャッシュサービス品質クラス内で前記共有キャッシュの一部を無効化することを含む、請求項12に記載の方法。
【請求項１８】
前記キャッシュサービス品質クラスは、前記共有キャッシュへのアクセスを制御するビットマスクを含む、請求項17に記載の方法。
【請求項１９】
前記ロックすることは、前記ハイパーバイザによって、前記仮想マシンから前記共有キャッシュのキャッシュサービス品質クラスへの直接接触をトラップすることを含む、請求項12に記載の方法。
【請求項２０】
前記ハイパーバイザからの前記選択データ又はコードは、ディスパッチ機能、スケジューラ及び割り込みハンドラの少なくとも一つを含む、請求項12に記載の方法。
【請求項２１】
前記共有キャッシュの一部を選択することは、直接データ入出力により使用されない一以上のウェイ選択することを含む、請求項12に記載の方法。
【請求項２２】
仮想化コンピューティング方法であって、
コンピューティングシステムのハイパーバイザによって、共有キャッシュの一部を選択して、該ハイパーバイザ又は該ハイパーバイザの管理下において該コンピューティングシステム上で動作する仮想マシンの選択データ又はコードを記憶することと、
前記ハイパーバイザによって、前記共有キャッシュの一部をロックして、前記ハイパーバイザ又は前記仮想マシンの前記選択データ又はコードが前記共有キャッシュから退去させられることを防ぐことと、
前記共有キャッシュの一部を選択することは、直接データ入出力により使用されない一以上のウェイ選択することと、を含む方法。
【請求項２３】
仮想化コンピューティング装置であって、
コンピューティングシステムのハイパーバイザによって、共有キャッシュの一部を選択して、該ハイパーバイザ又は該ハイパーバイザの管理下において該コンピューティングシステム上で動作する仮想マシンの選択データ又はコードを記憶する手段と、
前記ハイパーバイザによって、前記共有キャッシュの一部をロックして、前記ハイパーバイザ又は前記仮想マシンの前記選択データ又はコードが前記共有キャッシュから退去させられるのを防ぐ手段と、を含み、
前記ハイパーバイザは、前記仮想マシンの一つよりも、自分自身を優先して、前記共有キャッシュの一部にデータ又はコードを記憶する、装置。
【請求項２４】
前記ハイパーバイザが、前記仮想マシンのゲストオペレーティングシステムから、前記共有キャッシュの一部について、前記ゲストオペレーティングシステムの前記選択データ又はコードをロック又はアンロックする要求を受信する手段と、
前記ハイパーバイザが、前記仮想マシンから前記共有キャッシュのキャッシュサービス品質クラスへの直接接触をトラップする手段と、をさらに含む請求項23の装置。
【請求項２５】
コンピューティング装置による実行により、請求項12から22のいずれか一項に記載の方法を、該コンピューティング装置に行わせるプログラム。
【請求項２６】
請求項25に記載の前記プログラムを有する、一以上のコンピュータ読み取り可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、2014年3月21日に出願された”APPARATUS  AND  METHOD  FOR  VIRTUALIZED  COMPUTING”と題する、米国特許出願番号14/222,416号に基づく優先権を主張する。
【０００２】
本開示は、一般的に、コンピューティングの技術分野に関し、より詳細には、仮想化コンピューティング装置及び方法に関する（が、これらには限られない）。
【背景技術】
【０００３】
本明細書で提供する背景技術の記載は、本開示の背景を一般的に提示することを目的とする。本明細書で別段定めのない限り、このセクションで記載されるものは、本願の特許請求の範囲に対する先行技術とはならないし、先行技術であるとも認められないし、このセクションの内容を含めることによって先行技術の示唆であるとも認められない。
【０００４】
コンピュータ仮想化には、コンピュータハードウェアの仮想化が含まれる。ユーザの側からすると、コンピュータ仮想化は、抽象的コンピューティングプラットフォーム(例えば、仮想マシン(VM))を提供し得る。この抽象的コンピューティングプラットフォームは、下層のハードウェアを共有しつつ、他のプログラムセット又は他の抽象的コンピューティングプラットフォームの実行とは独立してプログラムセットを実行するものである。典型的には、各VMは、自己のオペレーティングシステムを有する。このオペレーティングシステムは、他のVMのオペレーティングシステムと同一又は異なり得る。仮想化は、仮想マシンモニタとしても知られる(VMM)、ハイパーバイザにより制御され得る。
【０００５】
ジッタ(Jitter)がVMエグジット(Exit)及びVMエントリ(Entry)時間で起き得る。VMエグジットが起きるとき、ハイパーバイザのいくらかのデータ又はコードをメインメモリからフェッチする必要があり得る。同様に、他方、ハイパーバイザがVMの制御に戻るとき(例えば、VMエントリの後)、VMのいくらかのデータ又はコードをメインメモリからフェッチする必要があり得る。ジッタの影響はマルチコアの実行状況ではより厳しくなり得る。ここでは、データ又はコードを、互いのキャッシュから、又は共有キャッシュから退避させ得る。ジッタは、二つのシステムが単一又はマルチコアのシステム上で独立して動作しようとするとき(例えば、同一のマルチコアプロセッサ上でリアルタイムオペレーティングシステム及び汎用オペレーティングシステムを動作するとき)、負荷集約(workload  consolidation)についての重要な課題となり得る。
【図面の簡単な説明】
【０００６】
実施形態は、添付の図面と供せて、次の詳細な説明により容易に理解できるものである。この記載を容易にするため、類似の参照番号は類似の構造要素を示す。実施形態は、添付の図面における限定としてではなく、例として説明される。
【図１】図1は、種々の実施形態に従った、本開示の観点を組み込んでいる仮想化コンピューティング装置の実装例を示す概略図である。
【図２】図2は、種々の実施形態に従った、本開示の観点を組み込んでいる装置例により実施し得る仮想化コンピューティングプロセス例のフロー図である。
【図３】図３は、種々の実施形態に従った、本開示の観点を組み込んでいる装置例により実施し得るキャッシュサービス品質クラスを示す概略図である。
【図４】図4は、種々の実施形態に従った、本開示の実施形態を実施するのに好適なコンピューティング装置例を示す。
【図５】図5は、種々の実施形態に従った、本開示の観点を組み込んでいるプログラム命令を有する製品を示す。
【発明を実施するための形態】
【０００７】
仮想化コンピューティング装置及び方法の実施形態を本明細書に記載する。実施形態においては、装置は、一以上のプロセッサコアと、一以上のプロセッサコアに結合したキャッシュと、を含み得る。以下、プロセッサコアは単にコアと呼び得る。装置は、さらに、装置上にある仮想マシンの動作を管理する、一以上のプロセッサコアによって動作されるハイパーバイザを有する。管理には、キャッシュの一部を選択して、ハイパーバイザ又は一の仮想マシンの選択データ又はコードを記憶すること、キャッシュの一部をロックして、選択データ又はコードがキャッシュから退去(evicted)させられるのを防止することが含まれる。本開示のこれらの及び他の観点を以下により詳細に記載することにする。
【０００８】
次の詳細な説明においては、参照番号を詳細な説明の一部を形成する添付の図面に付し、類似の参照番号は全体を通して類似の部分を示し、実施され得る実施形態が図示により図面に示される。他の実施形態を利用し得るし、構造的又は論理的変更を、本願の開示範囲から逸脱することなくなし得ることが理解される。従って、次の詳細な説明は、限定的な意味で捉えられることなく、実施形態の範囲は添付の特許請求の範囲と、その均等物によって規定される。
【０００９】
種々の動作が、次々に複数の個別の活動又は動作として記載され得る。その記載の仕方が、特許請求の範囲に記載された主題を理解するのに最も有益である。しかし、記載の順序は、これらの動作が順序依存であることが必要であると示唆するものとして解釈されるべきではない。特に、これらの動作は、提示の順序で実行されなくてもよい。記載する動作は、記載する実施形態のものとは異なる順序で実行し得る。種々の付加的な動作を実行してもよく、及び/又は記載する処理を付加的な実施形態において省略してもよい。
【００１０】
本開示上、表現「A及び/又はB」は、(A)、(B)又は(A及びB)を意味する。本開示上、表現「A、B、及び/又はC」は、(A)、(B)、(C)、(A及びB)、(A及びC)、(B及びC)又は(A、B及びC)を意味する。本開示は「ある(a)」若しくは「第一(a  first)」要素又はそれらの均等物を規定する場合、そのような開示は、一以上のそのような要素を含むのであって、二以上のそのような要素を必要ともしないし、排除もしない。さらに、特定された要素についての順序の指示(例えば、第一、第二又は第三)は、複数の要素を区別するのに用いられ、そのような要素の数が必要、又は数に限られることを示す又は示唆しておらず、特に言及されない限りは、そのような要素の特定の位置又は順序を示していない。
【００１１】
記載において、一の実施形態又はある実施形態に対する参照は、その実施形態に関連して記載された特定の特徴、構造、特性が、本発明の少なくとも一の実施形態に含まれることを意味する。記載では、表現「一の実施形態において」、「別の実施形態において」、「(複数)実施形態において」、「種々の実施形態において」等を用い得るが、それぞれ、同一又は異なる実施形態の一つ以上を示し得る。さらに、用語「含む(comprising)」、「含む(including)」、「有する(having)」等は、本開示の実施形態に関して用いるように、同義である。
【００１２】
実施形態において、用語「モジュール」は、特定用途向け集積回路(ASIC)、電子回路、一以上のソフトウェア若しくはファームウェアプログラムを実行するプロセッサ(共有、専用若しくはグループ)及び/若しくはメモリ(共有、専用若しくはグループ)、組み合わせ論理回路並びに/又は記載の機能性を提供する他の好適なコンポーネント、の一部である又はそれらを含むこと示し得る。実施形態においては、モジュールは、ファームウェア、ソフトウェア又はファームウェア、ハードウェア及びソフトウェアの任意の組み合わせで実装し得る。実施形態において、用語「インタフェース」は、ソフトウェア又はコンピュータハードウェアとの相互作用点を示してよく、ソフトウェアとソフトウェア、ソフトウェアとハードウェア及びハードウェアとハードウェアの相互作用を含む。
【００１３】
ここで図1を参照して、種々の実施形態に従った、仮想化コンピューティング装置の実装例を示す。図のように、装置100は、ハイパーバイザ120の管理下で、一以上の仮想マシン130の実行を主催する(host)ホスト110を含み得る。いくつかの実施形態においては、装置100は、モバイルコンピューティング装置であり得る。いくつかの実施形態においては、装置100は、静的コンピューティング装置であり得る。いくつかの実施形態においては、装置100は、種々のウェアラブル装置、モバイル装置又は静的デバイスが分散した種々のコンポーネント又はサブシステムを有する分散型システムであり得る。
【００１４】
実施形態において、装置100は、ハードウェア仮想化又はプラットフォーム仮想化に好適であり得る。ここでは、VM130がゲストオペレーティングシステム(GOS)132を有するコンピュータのようにふるまう。GOS132はホスト110上で実行しているホストオペレーティングシステムとは異なるものである。ハイパーバイザ120は仮想マシンモニタでよく、VM130を生成する及び/又はホスト110上でVM130が動作することを可能にし得る。ハイパーバイザ120は、種々の実施形態において、コンピュータソフトウェア、ファームウェア又はハードウェアの部品であり得る。ハイパーバイザ120は、仮想オペレーティングプラットフォームでVM130上にGOS132を提示し、VM130の動作を管理し得る。一のVM130上で実行するアプリケーション134及びGOS132は、ホスト110上の下層のハードウェアリソースを他のVM130と共有し得る。
【００１５】
いくつかの実施形態においては、ハイパーバイザ120は完全仮想化を可能にし得る。これにより、VM130の修正されていないGOS132をホスト110上で(他のVM130の他のGOS132から)切り離して実行することができる。いくつかの実施形態においては、ハイパーバイザ120は直接的にホスト110のハードウェアを制御し、VM130と下層のハードウェアリソースとの間の仲介としてふるまい得る。いくつかの実施形態においては、ハイパーバイザ120は、VM130とホスト110の元からある(native)オペレーティングシステムの間のソフトウェア層としてのハイパーバイザ120を有する、ホスト110の元からあるオペレーティングシステム内で動作し得る。
【００１６】
いくつかの実施形態においては、ホスト110はキャッシュ112及びプロセッサ114を含み得る。プロセッサ114はマルチコアプロセッサで、二つ以上の独立したコアを有し得る。キャッシュ112は、ホスト110のための特別高速な記憶機構である。いくつかの実施形態においては、キャッシュ112は、実行可能な命令フェッチを高速化する命令キャッシュを含み得る。いくつかの実施形態においては、キャッシュ112は、データフェッチ及び記憶を高速化するデータキャッシュを含み得る。さらに、いくつかの実施形態では、キャッシュ112は、キャッシュ112が実行可能な命令及びデータの両方について、仮想・物理アドレス変換を高速化するのに用いられるトランスレーションルックアサイドバッファ(TLB)を含み得る。
【００１７】
実施形態において、キャッシュ112は、キャッシュレベルの階層で組織化され得る。例えば、第一レベルキャッシュ(L1)、第二レベルキャッシュ(L2)等、最終レベルキャッシュ(LLC)まであり、キャッシュのレイテンシとヒット率とのバランスを取って(より大きいキャッシュではヒット率はよりよいが、待ち時間がより長くなるので)いる。実施形態においては、キャッシュ112の全ての又はいくつかのレベルのものをプロセッサ114のアーキテクチャに組み入れる、又はプロセッサ114とメインメモリとの間に置く。実施形態においては、キャッシュ112は特定の機能(データキャッシュ、命令キャッシュ等)を有し得る。実施形態においては、キャッシュ112はプロセッサ114の異なるコア間で共有され得る。実施例として、各コアが自己の命令又はデータL1及び共有命令/データL2を有し、命令/データL3は全てのコアで共有され得る、とする。
【００１８】
実施形態において、キャッシュ112は、キャッシュサービス品質クラス(CQoS)116をサポートするように構成され得る。各コアにはCQoSクラスが割り当てられ得る。種々のCQoSクラスは共有キャッシュへのアクセスの優先付けに用いられ得る。実施形態においては、キャッシュ112は共有キャッシュ内にある記憶データをロックするCQoSクラスを含み得る。実施形態においては、CQoＳクラスは、コアによりアクセスされるメモリ位置の内容(content  of  memory  locations)をキャッシュするのに、共有キャッシュ内のどのウェイが利用されるかを制御するビットマスクを含み得る。実施形態においては、キャッシュ内でロックされたデータ又はコードは、退去されないようにし得る。実施形態においては、ハイパーバイザ120は、例えば、CQoSクラスのビットマスクを所望のように設定することによって、CQoSクラスに関連づけて、キャッシュの一部をロックするように構成され得る。
【００１９】
実施形態においては、ハイパーバイザ120は、主なディスパッチルーチン(ディスパッチ機能、スケジューラ、割り込みハンドラ等)を選択して、キャッシュ112内に記憶及びロックし得る。割り込みハンドラは、ルートの内容及び/又は仮想マシンの内容のためのものであり得る。実施形態においては、GOS132は、リアルタイムアプリケーション要求を提供することを意図したリアルタイムゲストオペレーティングシステムであり得る。GOS132は、その重要なデータ又はコード(ディスパッチャ、割り込みハンドリングコード等)を選択して、キャッシュ112内に記憶及びロックし得る。実施形態においては、ハイパーバイザ120は、VM130よりも自己を優先して、キャッシュ112にデータ又はコードを記憶及びロックし得る。
【００２０】
実施形態においては、ハイパーバイザ120は、ハイパーコールインタフェース(HI)122及びデータ124を含み得る。実施形態においては、ハイパーバイザ120は、プロセッサ114により動作されて、VM130の動作を管理し得る。キャッシュ112の一部を選択して、ハイパーバイザ120の選択データ若しくはコード(例えば、データ124の一部)又はVM130の選択データ若しくはコード(例えば、GOS132の一部)を記憶すること、キャッシュの一部をロックして、選択データ又はコードがキャッシュ112から退去させられることを防ぐ等がある。
【００２１】
実施形態においては、HI122により、VM130がハイパーコールを介して特権動作を要求できるようにし得る。現代のオペレーティングシステム(UNIX（登録商標）、LINUX、Windows、Mac  OS  X等)においては、システムコールは、特権(スーパバイザ)モードでのオペレーティングシステムのサービスと同期的に通信する、より低い特権モードで実行するプロセスのための機構を提供する。ハイパーコールは、同様の通信機構を提供する。システム内でプロセス空間とカーネル空間とを通信させる(communicate  between)システムコールと対比して、ハイパーコールは、仮想マシンとハイパーバイザとを通信を許容する。
【００２２】
実施形態においては、ハイパーコールは、VM130からハイパーバイザ120へのソフトウェアトラップであり得る。例として、GOS132は、GOS132又はアプリケーション134の選択データ又はコードをキャッシュ112でロックすることをハイパーバイザ120に要求し得る。他の例としては、GOS132は、GOS132又はアプリケーション134の選択データ又はコードをキャッシュ112でアンロックすることを、ハイパーバイザ120に要求し得る。実施形態においては、HI122を介したハイパーコールは、同期的であり得るが、ハイパーバイザ120からVM130へのリターンパスは、非同期通知のキューを用い得るイベントチャネルを用い得る。
【００２３】
いくつかの実施形態においては、GOS130は、ハイパーコールを介して、所定の領域をキャッシュ内でロックすることハイパーバイザ120に知らせ得る。そのハイパーコールは、ゲストの物理的メモリアドレス空間内の開始アドレス及び、目標メモリ領域の長さを提供し得る。いくつかの実施形態においては、GOS132は、ハイパーコールを介して、所定のメモリ領域のキャッシュロックを無効化することをハイパーバイザ120に知らせ得る。これは、同様に、ゲストの物理的メモリアドレス空間内の開始アドレス及び、アンロックする目標メモリ領域の長さを特定することによる。いくつかの実施形態においては、GOS132は、リセットハイパーコールを介して特定のメモリ領域を特定することなく、これまでの全てのキャッシュロック要求をリセットすることを、ハイパーバイザ120に知らせ得る。
【００２４】
いくつかの実施形態においては、ハイパーバイザ120又はVM130の重要なデータ又はコードはキャッシュ内でロックされ得る。ロックされたデータ又はコードは、キャッシュ112の少なくともLLCから退去させられることを防ぎ得る。ロックされたデータ又はコードは、キャッシュ112のL1及びL2から退去させられることも防ぎ得る。いくつかの実施形態においては、CQoSクラス116を介したキャッシュロッキング機構は、ハイパーバイザ120内だけで実行され得る。実施形態においては、VM130は、種々のオペレーティングシステム及び異なるオペレーティングシステムのバージョンを実行し得る。ゆえに、VM130は、キーとなる機能(ディスパッチャ、割り込みハンドリングコード等)について異なるプロパティを有し得る。CQoSクラス116を介したキャッシュロッキング機構は、例えば、ハイパーバイザ120によって、VM130に知らされ、これにより、GOS132はVM130の動作要件と内部構造に基づいて、ハイパーコールインタフェース122を介してキャッシュ112にその重要なデータ又はコードをロックすることができ得る。
【００２５】
実施形態においては、装置100は図1に示したものとは異なるように実装され得る。例として、キャッシュ112はプロセッサ114に集積され得る。実施形態において、図1に示したコンポーネントは、図1に示されていない、直接的又は間接的な接続を有し得る。実施形態において、装置100のいくつか又は全てのコンポーネントを、ハードウェア、ソフトウェア又はこれらの組み合わせで実装してよく、任意の数の異なる装置又はネットワークに分散(spread)し得る。
【００２６】
本開示の改善により、装置は、ジッタ及び最悪のレイテンシを低減することを含む、ハイパーバイザの性能を改善するように構成され得る。例として、ディスパッチ機能又は、ハイパーバイザ120におけるスケジューリング用のディスパッチ機能により呼び出される機能の一部又は全ては、キャッシュ112内にロックされて、アクセスレイテンシを低下させ(例えば、低いジッタ)、高い性能を達成する。他の例として、ハイパーバイザ120のテキスト又はデータの全て又は一部は、キャッシュ112にロックされて、アクセスレイテンシを低下させ、高い性能を達成する。
【００２７】
本開示の改善により、二つのVMの分離性(separation)、VMとハイパーバイザの分離性、VMとホストの分離性、仮想化でのキャッシュロッキングと負荷集約の組み合わせを備えたリアルタイム性能を改善するように構成され得る。リアルタイムシステムは、最悪の場合である、VMエグジット及びVMエントリのレイテンシ及び/又はジッタを考慮する必要があり得る。実施形態においては、CQoSを用いて、所定の方法でキャッシュにあるデータ又はコードが退去させられるの防いでよく、ハイパーバイザは、ゲストにインタフェースを提供して、ゲストの重要なデータ又はコードをキャッシュ内にロックし、さらに、ゲストオペレーティングシステムからアクティブなQCoSクラスに書き込むモデル固有レジスタ(MSR)をトラッピングすることによって、全てのゲストが、専用ウェイ(way)を用いることを防ぎ得る。例として、リアルタイムオペレーティングシステムの性能は、VMコンテンツ情報の一部又は全て(仮想マシン制御構造(VMCS)、汎用目的のレジスタ等)がキャッシュ内でロックされることにより、改善し、低下したアクセスレイテンシーにより高い性能を達成することになり得る。別の例として、同様に、VMゲストの割り込みハンドラの一部又は全てがキャッシュにロックされることにより、リアルタイム性能を改善し得る。
【００２８】
ここで、図2を参照して、仮想化コンピューティングのプロセス200の例のフロー図を示す。プロセス200は、ハードウェア(回路、専用論理、プログラマブル論理、マイクロコード等)、ソフトウェア(処理装置上で動作して、ハードウェアシミュレーションを行う命令)又はこれらの組み合わせを含む処理論理によって行われ得る。処理論理は、仮想化コンピューティングのために構成され得る。このため、プロセス200はコンピューティング装置(例えば、図1に関連した装置100)によって行われて、本開示の一以上の実施形態を実装し得る。実施形態においては、図2の種々のブロックを任意の好適な順序で(例えば、仮想化コンピューティングを実施する装置100の特定の実施形態に従って)組み合わせ、又は並べ得る。
【００２９】
実施形態において、プロセスはブロック210で開始し得る。ここでは、共有キャッシュの一部が選択されて、ハイパーバイザ又は、ハイパーバイザ(例えば、図1に関連したハイパーバイザ120)により管理された仮想マシンのゲストオペレーティングシステムの選択データ又はコードを記憶し得る。ハイパーバイザは、直接データ入出力(DDIO)により使用されない一以上のウェイを選択することによってキャッシュの一部を選択する。直接データ入出力は、周辺コンポーネント相互接続エクスプレス(PCI  Express又はPCIe)装置から共有キャッシュに直接的に書き込み得るものである。図1に関連して説明したように、実施形態においては、ハイパーバイザは、キャッシュ内でロックされるのに好適な主なディスパッチルーチンの既知又は推定のサイズに少なくとも部分的に基づいて、選択キャッシュのサイズを決定し得る。
【００３０】
次に、ブロック220で、例えば、図1に関連したハイパーバイザ120によって、共有キャッシュの一部がロックされて、ハイパーバイザ又はゲストオペレーティングシステムの選択データ又はコードが、共有キャッシュから退去させられるのを防ぎ得る。実施形態においては、ハイパーバイザは、キャッシュ内の選択したウェイで、ハイパーバイザの主なディスパッチルーチン(ディスパッチ機能、スケジューラ、割り込みハンドラ等)をフェッチし得る。それから、ハイパーバイザは選択ウェイをロックして、共有キャッシュに関連づけられた任意のアクティブQCoSクラスでウェイが使用されるのを防ぎ得る。実施形態においては、CQoSクラスは共有キャッシュ内のどのウェイがコアによってアクセスされ得るかを制御するビットマスクを含み得る。したがって、ハイパーバイザは、ロッキング機構として、選択ウェイに関連づけられた対応ビットをセット又はリセットする。
【００３１】
実施形態において、VM内のゲストオペレーティングシステムは、リアルタイム又は汎用オペレーティングシステムであり得る。ハイパーバイザは、そのゲストオペレーティングシステムにハイパーコールインタフェースを提供し、そこで、ゲストオペレーティングシステムは、ハイパーコールインタフェースを介して、その重要なデータ又はコードを、キャッシュ内にロックするように要求し得る。いくつかの実施形態においては、ハイパーバイザはVMのゲストオペレーティングシステムよりも、自分自身を優先して、データ又はコードを選択キャッシュの一部に記憶し得る。ゆえに、ブロック210に関連して選択されたウェイに予備がある場合には、ハイパーバイザは予備ウェイを準備して、ゲストオペレーティングシステムによって要求されるデータ又はコードを記憶し得る。さらに、ハイパーバイザは上記のようにロック機構を用いて全てのアクティブQCoSクラスでこれらのウェイを無効化し得る。いくつかの実施形態においては、ハイパーバイザは、特定のタイプのVMからの特定のタイプのデータ又はコードを優先し得る。これにより、例えば、リアルタイムオペレーティングシステムからの特定のタイプのデータ又はコードが常に、キャッシュ内でロックされる機会を有し得る。
【００３２】
実施形態においては、ゲストオペレーティングシステムが、例えば、ハイパーコールを介して、共有キャッシュ内にある同システムのデータ又はコードのロックを、例えば、ゲストの物理的メモリアドレス空間の開始アドレスと、アンロックされる目標メモリ領域の長さを特定することによって解放することを、ハイパーバイザに要求し得る。実施形態においては、ゲストオペレーティングシステムは、例えば、リセットハイパーコールを介して、ゲストオペレーティングシステムに関連した、共有キャッシュ内の全てのロックを取り外すことを、ハイパーバイザに知らせ得る。
【００３３】
実施形態においては、ハイパーバイザは、仮想マシンからキャッシュサービス品質クラスへの直接接触(direct  contact)をトラップし得る。例として、アクティブなCQoSセットへの全てのMSR書き込みをトラップして、ゲストオペレーティングシステムが、ブロック210に関連して予約されたCQoSクラスを用いるのを防ぎ得る。
【００３４】
共有キャッシュ内で選択ウェイをロックすることで、共有キャッシュ内ででの利用可能なウェイの数が減少することによって、競合性ミス(conflict  miss)が増加し得る。実施形態においては、競合性ミスを低減するのにキャッシュカラーリングが用いられ得る。キャッシュカラーリングは、キャッシュ内で隣接するフリーページを割り当てて、プロセッサによりキャッシュされる総ページ数を最大化し得る。
【００３５】
ここで、図3を参照して、CQoSクラスを図示する概略図を示す。これは、種々の実施形態に従った、装置例により実施され得る。実施形態においては、CQoSクラスは、図2におけるブロック220又は図1のCQoSクラス116に関連して用いられ得る。
【００３６】
実施形態においては、CQoSはCQoSクラスを各コアに割り当て得る。CQoSクラスは、共有キャッシュへのアクセスに優先付けするのに用いられ得る。CQoSクラスは、共有キャッシュ内にあるデータ又はコードをロックするのにも用いられ得る。実施形態においては、CQoSクラスは、供給キャッシュ内のどのウェイがコアによりアクセスされ得るかを制御するビットマスクを有し得る。例として、CQoSクラス310は、コアによるアクセスのためにウェイ2から11を許容する。図2に関連して、CQoSクラス310内の複数のウェイが選択され、データ又はコードに関して準備され、ロックされ得る。しかし、いくつかの実施形態においては、CQoSクラス内のウェイ0及び1は、DDIOのために用いられるので、選択され得ない。結果として、CQoSクラス320には、ウェイ2から9をロックした(これらのビットは、1から0に反転されている)後に、コアによるアクセスのためにウェイ10及び11のみを許容するCQoSが図示されている。CQoS320により、全てのコアが、共有キャッシュ内でロックされたこれらのウェイを用いることが許容されないのではないかもしれない。ロックされたデータ又はコードは、依然として例えば、L1及びL2から、データ又はコードをロックした同じコアによって退去され得るのであるが、ロックされたデータ又はコードは、少なくともLLC内にとどまり得る。
【００３７】
図4は、本開示の実施形態を実施するのに好適なコンピューティング装置400の実施形態を示す。図示のように、コンピューティング装置400は、一以上のプロセッサ410、メモリ430、不揮発性メモリ(NVM)/ストレージ440及び一以上の周辺機器450に結合したシステム制御論理420を含み得る。種々の実施形態においては、一以上のプロセッサ410は、一以上のプロセッサコア及びキャッシュ412を含み得る。実施形態においては、キャッシュ412は、CQoSクラス416がキャッシュ412内に記憶されたデータ又はコードをロックするのをサポートするように構成され得る。キャッシュ412及びCQoSクラス416は、それぞれ、図1に関連したキャッシュ112及びCQoS116と同様に機能し得る。
【００３８】
実施形態においては、周辺機器450は任意の好適なハードウェア及び/又はファームウェア(ネットワークアダプタ、一以上のアンテナ、無線インタフェース等)を有し得る。周辺機器450には、幅広い有線又は無線インタフェース(I2Cバス、ユニバーサルシリアルバス(USB)、Bluetooth(登録商標),無線ネットワークインタフェースコントローラ(WNIC)等があるが、これらには限られない)が含まれ得る。周辺機器450は、コンピューティング装置400が一以上のネットワークで通信する、及び/又は任意の他の好適な装置と通信するインタフェースを含み得る。種々の実施形態においては、周辺機器450は、近距離無線通信(NFC)、光学通信、他の装置と直接通信する(例えば、中継なし)その他の同様の技術を利用する、コンピューティング装置400のためのインタフェースを含み得る。種々の実施形態では、周辺機器450は、無線通信技術(例えば、広帯域符号分割多元接続(WCDMA（登録商標）)、グローバル移動通信システム(GSM（登録商標）)、ロングタームエボリューション(LTE)、WiFi、Bluetooth、Zigbee等)と相互運用し得る。
【００３９】
実施形態においては、システム制御論理420には、プロセッサ410及び/又はシステム制御論理420と通信する任意の好適な装置若しくはコンポーネントへの、任意の好適なインタフェースを提供する任意の適切なインタフェースコントローラを有し得る。実施形態においては、システム制御論理420は、コンピューティング装置400上で実行する一以上のVMの動作を管理するハイパーバイザ422を有し得る。ハイパーバイザ422は、図1に関連したハイパーバイザ120と同様に機能し得る。
【００４０】
実施形態においては、システム制御論理420は、ユーザなどに情報を表示するディスプレイ(図示せず)とも相互運用し得る。種々の実施形態においては、ディスプレイには、種々の構成及び形式(例えば、液晶ディスプレイ、ブラウン管ディスプレイ、e-inkディスプレイ、プロジェクションディスプレイ等)の一つが含まれ得る。種々の実施形態において、ディスプレイはタッチ画面を含み得る。
【００４１】
実施形態においては、システム制御論理420は、システムメモリ430へのインタフェースを提供する一以上のメモリコントローラ(図示せず)を含み得る。システムメモリ430は、例えば、コンピューティング装置400のため、データ及び/又は命令を読み込む及び記憶するのに用いられ得る。システムメモリ430は任意の好適な揮発性メモリ(例えば、好適なダイナミックランダムアクセスメモリ(DRAM)など)を含み得る。
【００４２】
いくつかの実施形態においては、システム制御論理420は、NVM/ストレージ440及び周辺機器450へのインタフェースを提供する一以上の入出力(I/O)コントローラ(図示せず)を含み得る。NVM/ストレージ440は、例えば、データ及び/又は命令を記憶するのに用い得る。NVM/ストレージ440は、任意の好適な不揮発性メモリ(例えば、フラッシュメモリ)を含み得る、並びに/又は、任意の好適な不揮発性ストレージ装置(例えば、一以上のハードディスクドライブ(HDD)、一以上のソリッドステートドライブ、一以上のコンパクトディスク(CD)ドライブ、及び/若しくは、一以上のデジタル多用途ディスク(DVD)ドライブ等)を含み得る。NVM/ストレージ440は、コンピューティング装置400が搭載される、又はアクセス可能な装置の物理的な一部(コンピューティング装置400の一部である必要はない)であるストレージリソースを含み得る。例えば、NVM/ストレージ440は、通信インタフェース480を介してネットワークでコンピューティング装置400によりアクセスされ得る。
【００４３】
実施形態においては、システムメモリ430、NVM/ストレージ440及びシステム制御論理420は、特に、ハイパーバイザ422の一時的及び永続的コピーを含み得る。ハイパーバイザ422は、少なくとも一のプロセッサ410により実行されると、コンピューティング装置400が仮想化コンピューティング(プロセス200等であるが、これには限られない)を行うすることになる命令を含み得る。
【００４４】
いくつかの実施形態においては、少なくとも一のプロセッサ410を、システム制御論理420及び/又はハイパーバイザ422を有するメモリとともにパッケージし得る。いくつかの実施形態においては、少なくとも一のプロセッサ410を、システム制御論理420及び/又はハイパーバイザ422を有するメモリとともにパッケージして、システムインパッケージ(SiP)を形成し得る。いくつかの実施形態においては、少なくとも一のプロセッサ410を、システム制御論理420及び/又はハイパーバイザ422を有するメモリとともに同一のダイに集積し得る。いくつかの実施形態においては、少なくとも一のプロセッサ410を、システム制御論理420及び/又はハイパーバイザ422を有するメモリとともに同一のダイに集積して、システムオンチップ(SoC)を形成し得る。
【００４５】
図1に関連した装置100のどのモジュールがコンピューティング装置400によってホストされる(hosted)かに依拠して、プロセッサ、システムメモリ430等の可用性及び/又は性能特性が変わり得る。種々の実施形態においては、演算装置400は、本開示の教示により強化された、ウェアラブルコンピューティング装置、スマートフォン、タブレット、モバイルコンピューティング装置、サーバ等であり得る。実施形態においては、図4での様々なモジュールの配置及び/又は他のモジュールとの結合方法が、図4に示したものとは異なり得る。
【００４６】
図5は、種々の実施形態に従って、本開示の観点を組み込んでいるプログラム命令を有する製品510を示す。種々の実施形態においては、製品は、本開示の種々の実施形態を実装するのに用いられ得る。図のように、製品510は命令530を有するコンピュータ読み取り可能記憶媒体520を含んでよく、、命令530が本明細書で記載した任意の一のプロセスの実施形態又は実施形態の観点を実施するように構成されている。記憶媒体520は本技術分野で既知の、幅広い永続的な記憶媒体(フラッシュメモリ、ダイナミックランダムアクセスメモリ、スタティックランダムアクセスメモリ、光学ディスク、磁気ディスク等を含むが、これらに限られない)を表し得る。命令530により、装置が命令を実行することに応じて、装置に本明細書に記載した種々の動作を実行することができる。本開示の実施形態に従って、例えば、記憶媒体520は、装置(例えば、装置100)に、図1から図4に関連した仮想化コンピューティング(例えば、ハイパーバイザ120)のいくつか又は全ての観点を実行させるように構成された命令530を含み得る。実施形態においては、コンピュータ読み取り可能記憶媒体520は、非一時的な一以上のコンピュータ読み取り可能記憶媒体を含み得る。他の実施形態においては、コンピュータ読み取り可能記憶媒体は一時的なもの(命令530で符号化された信号等)であり得る。
【００４７】
所定の実施形態の説明を目的として図示及び記載したが、同一の目的を達成するように計画された多様な代替の及び/又は均等な実施形態又は実装形態が、本開示の範囲を逸脱することなく、及び記載された実施形態の代用となり得る。本願は、本明細書で説明した実施形態の任意の改作態様又は変形態様を含むことを意図している。したがって、本明細書で記載した実施形態は、特許請求の範囲によってのみ限定されることを明確に意図している。
【００４８】
以下の段落は種々の実施形態の実施例を記載する。
【００４９】
実施例1は、仮想化コンピューティング装置であって、一以上のプロセッサコアと、前記一以上のプロセッサコアに結合したキャッシュとを含み得る。当該装置は、前記一以上のプロセッサコアにより動作され、当該装置上の複数の仮想マシンの動作を管理するハイパーバイザであって、前記キャッシュの一部を選択して、該ハイパーバイザ又は該仮想マシンの一つの選択データ又はコードを記憶すること、及び、該キャッシュの一部をロックして、該選択データ又はコードがキャッシュから退去させられるのを防ぐことを含む、ハイパーバイザも含み得る。
【００５０】
実施例2は、実施例1の主題を含んでよく、前記ハイパーバイザは、前記仮想マシンの一つのゲストオペレーティングシステムのためのインタフェースを有し、該ゲストオペレーティングシステムの前記選択データ又はコードをロックする要求を、前記キャッシュの一部に要求する、ことをさらに特定し得る。
【００５１】
実施例3は、実施例2の主題を含んでよく、、前記ゲストオペレーティングシステムは、リアルタイムオペレーティングシステムである、ことをさらに特定し得る。
【００５２】
実施例4は、実施例1から3のいずれか一つの主題を含んでよく、、前記ハイパーバイザは、前記仮想マシンの一つよりも、自分自身を優先して、前記キャッシュの一部にデータ又はコードを記憶する、ことをさらに特定し得る。
【００５３】
実施例5は、実施例1から4のいずれか一つの主題を含んでよく、、前記ハイパーバイザは、直接データ入出力により使用されない一以上のウェイを選択することによって、前記キャッシュの一部を選択する、ことをさらに特定し得る。
【００５４】
実施例6は、実施例1から5のいずれか一つの主題を含んでよく、、前記ハイパーバイザからの前記選択データ又はコードは、ディスパッチ機能、スケジューラ及び割り込みハンドラの少なくとも一つを含む、ことをさらに特定し得る。
【００５５】
実施例7は、実施例1から6のいずれか一つの主題を含んでよく、、前記ハイパーバイザは、前記仮想マシンの一つのメモリ領域を前記キャッシュにロックする要求をするハイパーコールを含むハイパーコールインタフェースを含む、ことをさらに特定し得る。
【００５６】
実施例8は、実施例1から7のいずれか一つの主題を含んでよく、、前記ハイパーバイザは、前記仮想マシンの一つのメモリ領域を前記キャッシュからアンロックする要求をするハイパーコールを含むハイパーコールインタフェースを含む、ことをさらに特定し得る。
【００５７】
実施例9は、実施例1から8のいずれか一つの主題を含んでよく、前記キャッシュは、前記キャッシュのラストレベルキャッシュへのアクセスを制御するビットマスクを含むキャッシュサービス品質クラスに関連づけられる、ことをさらに特定し得る。
【００５８】
実施例10は、実施例9の主題を含んでよく、前記ハイパーバイザは、前記キャッシュサービス品質クラスの設定を通じて、前記キャッシュの部分をロックする、ことをさらに特定し得る。
【００５９】
実施例11は、実施例9又は10の主題を含んでよく、、前記ハイパーバイザは、前記仮想マシンの一つから前記キャッシュサービス品質クラスへの直接接触をトラップする、ことをさらに特定し得る。
【００６０】
実施例12は、仮想化コンピューティング方法であって、コンピューティングシステムのハイパーバイザによって、共有キャッシュの一部を選択して、該ハイパーバイザ又は該ハイパーバイザの管理下において該コンピューティングシステム上で動作する仮想マシンの選択データ又はコードを記憶する工程と、前記ハイパーバイザによって、前記共有キャッシュの一部をロックして、前記ハイパーバイザ又は前記仮想マシンの前記選択データ又はコードが前記共有キャッシュから退去させられることを防ぐ工程と、を含み得る。
【００６１】
実施例13は、実施例12の主題を含んでよく、、前記ハイパーバイザが、前記仮想マシンのゲストオペレーティングシステムから、該ゲストオペレーティングシステムの前記選択データ又はコードをロックする、前記共有キャッシュへの要求を受信する工程を、さらに含み得る。
【００６２】
実施例14は、実施例13の主題を含んでよく、、前記受信する工程は、ハイパーコールインタフェースを通じて、前記ゲストオペレーティングシステムによって管理される仮想メモリの領域を前記共有キャッシュ内でロックすることを要求するハイパーコールを受信する工程を含む、ことをさらに特定し得る。
【００６３】
実施例15は、実施例13又は14の主題を含んでよく、、前記ハイパーバイザが、前記ハイパーコールインタフェースを通じて、前記ゲストオペレーティングシステムによって管理される仮想メモリの領域を前記共有キャッシュ内でアンロックすることを要求するハイパーコールを受信する工程を、さらに含み得る。
【００６４】
実施例16は、実施例13から15のいずれか一つの主題を含んでよく、、前記ゲストオペレーティングシステムは、リアルタイムオペレーティングシステムである、ことをさらに特定し得る。
【００６５】
実施例17は、実施例12から16のいずれか一つの主題を含んでよく、、前記ハイパーバイザは、前記仮想マシンよりも優先して、前記共有キャッシュの一部を用いる工程を、さらに含み得る。
【００６６】
実施例18は、実施例12から17のいずれか一つの主題を含んでよく、、前記ロックする工程は、キャッシュサービス品質クラス内で前記共有キャッシュの一部を無効化する工程を含む、ことをさらに特定し得る。
【００６７】
実施例19は、実施例18の主題を含んでよく、、前記キャッシュサービス品質クラスは、前記共有キャッシュのラストレベルキャッシュへのアクセスを制御するビットマスクを含む、ことをさらに特定し得る。
【００６８】
実施例20は、実施例12から19のいずれか一つの主題を含んでよく、、前記ロックする工程は、前記ハイパーバイザによって、前記仮想マシンから前記共有キャッシュのキャッシュサービス品質クラスへの直接接触をトラップする工程を含む、ことをさらに特定し得る。
【００６９】
実施例21は、実施例12から20のいずれか一つの主題を含んでよく、、前記ハイパーバイザからの前記選択データ又はコードは、ディスパッチ機能、スケジューラ及び割り込みハンドラの少なくとも一つを含む、ことをさらに特定し得る。
【００７０】
実施例22は、実施例12から21のいずれか一つの主題を含んでよく、、前記共有キャッシュの一部を選択する工程は、直接データ入出力により使用されない一以上のウェイを選択する工程を含む、ことをさらに特定し得る。
【００７１】
実施例23は、装置に、該装置による命令の実行に応じて、実施例12から22のいずれか一つの主題を実施させるように構成された該命令をそこに記憶したコンピュータ読み取り可能記憶媒体である。記憶媒体は、非一時的なものであり得る。
【００７２】
実施例24は、仮想化コンピューティング装置であって、コンピューティングシステムのハイパーバイザによって、共有キャッシュの一部を選択して、該ハイパーバイザ又は該ハイパーバイザの管理下において該コンピューティングシステム上で動作する仮想マシンの選択データ又はコードを記憶する手段と、前記ハイパーバイザによって、前記共有キャッシュの一部をロックして、前記ハイパーバイザ又は前記仮想マシンの前記選択データ又はコードが前記共有キャッシュから退去させられるのを防ぐ手段と、を含み得る。
【００７３】
実施例25は、実施例24の主題を含んでよく、、前記ハイパーバイザが、前記仮想マシンのゲストオペレーティングシステムから、前記共有キャッシュの一部について、前記ゲストオペレーティングシステムの前記選択データ又はコードをロック又はアンロックする要求を受信する手段をさらに含み得る。
【００７４】
実施例26は、実施例24又は25の主題を含んでよく、前記ハイパーバイザが、前記仮想マシンから前記共有キャッシュのキャッシュサービス品質クラスへの直接接触をトラップする手段をさらに含み得る。
【図１】
0006273034.tif 000002
【図２】
0006273034.tif 000003
【図３】
0006273034.tif 000004
【図４】
0006273034.tif 000005
【図５】
0006273034.tif 000006