(57)【要約】【課題】仮想マシンのページ・テーブル・キャッシュ・ラインをプリロードする方法、システム、およびコンピュータ・プログラムを提供する。【解決手段】本明細書における実施形態は、仮想マシン（ＶＭ）の間で切り換えるコンピューティング・システムにおいて仮想−物理メモリ変換を実行するのに使用されるメモリ変換をプリロードする。プロセッサが現在のＶＭを実行することから新たなＶＭを実行することに切り換わる前に、ハイパーバイザが、その新たなＶＭのための以前に保存されたメモリ変換を取り出し、それらのメモリ変換をキャッシュまたはメイン・メモリにロードしてよい。このため、新たなＶＭが実行することを開始するとき、対応するメモリ変換は、ストレージ内にではなく、キャッシュ内にある。このため、これらのメモリ変換が、仮想−物理アドレス変換を実行するのに必要とされる場合、プロセッサは、遅いストレージ・デバイス（例えば、ハードディスク・ドライブ）からメモリ変換をプルするのを待つ必要がない。【選択図】図２
2018536219.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
第１の期間にわたってプロセッサを使用して第１の仮想マシン（ＶＭ）に対応する第１のオペレーティング・システム（ＯＳ）を実行することと、
前記第１の期間が終了する前に、第２のＶＭの第２のＯＳに対応するページ・テーブル・エントリをメモリ階層のより低いレベルからより高いレベルに移動させることによって前記ページ・テーブル・エントリをプリロードすることであって、前記より高いレベルは、前記より低いレベルと比べて前記メモリ階層において前記プロセッサにより近い、前記プリロードすることと、
前記第１の期間が終了した後、第２の期間にわたって前記プロセッサを使用して前記第２のＶＭに対応する前記第２のＯＳを実行することと
を含む方法。
【請求項２】
前記第１の期間は、前記第１のＶＭに割り当てられた事前定義された期間に対応し、前記第２の期間は、前記第２のＶＭに割り当てられた事前定義された期間に対応する、請求項１に記載の方法。
【請求項３】
前記第１の期間中に前記第１のＯＳを実行しているとき前記第２のＯＳはアイドルであり、前記第２の期間中に前記第２のＯＳを実行しているとき前記第１のＯＳはアイドルである、請求項２に記載の方法。
【請求項４】
前記ページ・テーブル・エントリを前記より低いレベルから前記より高いレベルに移動させることは、
前記ページ・テーブル・エントリをストレージ・デバイス内のログ・ファイルからランダム・アクセス・メモリ（ＲＡＭ）デバイスに移動させることを含む、請求項１に記載の方法。
【請求項５】
前記第１の期間および前記第２の期間の前に、第３の期間中に前記プロセッサを使用して前記第２のＯＳを実行することと、
前記第１の期間の前に、前記メモリ階層の前記より低いレベルに保存すべく、前記第２のＯＳに対応する１つまたは複数のページ・テーブル・エントリを選択することと
をさらに含む、請求項１に記載の方法。
【請求項６】
前記第２のＯＳに対応する前記１つまたは複数のページ・テーブル・エントリを選択することは、
前記第３の期間中に前記プロセッサ上で前記第２のＯＳを実行するとき、メモリ・アドレス変換を実行すべく、最後に使用されてから経つ時間が最も短い（ＭＲＵ）前記１つまたは複数のページ・テーブル・エントリを特定することを含む、請求項５に記載の方法。
【請求項７】
前記第１の期間中に前記第１のＯＳを実行することを開始する前に、前記選択された１つまたは複数のページ・テーブル・エントリを不揮発性ストレージ・デバイスに保存することをさらに含む、請求項５に記載の方法。
【請求項８】
前記第２のＶＭの前記第２のＯＳに対応する前記ページ・テーブル・エントリをプリロードすることは、
前記ページ・テーブル・エントリを前記より低いレベルから前記より高いレベルに移動させる前に、Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ（最後に使用されてから経つ時間が最も長い）（ＬＲＵ）アルゴリズムを使用して前記第１のＯＳに対応する前記より高いレベルにおける１つまたは複数のページ・テーブル・エントリを選択することと、
前記ページ・テーブル・エントリを前記より低いレベルから前記より高いレベルに移動させる前に、前記第１のＯＳに対応する前記選択された１つまたは複数のページ・テーブル・エントリを前記メモリ階層の前記より高いレベルから退去させることと
を含む、請求項１に記載の方法。
【請求項９】
コンピューティング・システムであって、
第１の期間にわたって第１の仮想マシン（ＶＭ）に対応する第１のオペレーティング・システム（ＯＳ）を実行するように構成されたプロセッサと、
ハイパーバイザと
を備え、前記ハイパーバイザは、
前記第１の期間が終了する前に、第２のＶＭの第２のＯＳに対応するページ・テーブル・エントリをメモリ階層のより低いレベルからより高いレベルに移動させることによって前記ページ・テーブル・エントリをプリロードすることであって、前記より高いレベルは、前記より低いレベルと比べて前記メモリ階層において前記プロセッサにより近い、前記プリロードすること、および
前記第１の期間が終了した後、第２の期間にわたって前記第２のＶＭに対応する前記第２のＯＳを実行することを開始するよう前記プロセッサに命令すること
を行うように構成される、コンピューティング・システム。
【請求項１０】
前記第１の期間は、前記第１のＶＭに割り当てられた事前定義された期間に対応し、前記第２の期間は、前記第２のＶＭに割り当てられた事前定義された期間に対応する、請求項９に記載のコンピューティング・システム。
【請求項１１】
前記第１の期間中に前記第１のＯＳを実行しているとき前記第２のＯＳはアイドルであり、前記第２の期間中に前記第２のＯＳを実行しているとき前記第１のＯＳはアイドルである、請求項１０に記載のコンピューティング・システム。
【請求項１２】
前記ハイパーバイザは、前記ページ・テーブル・エントリを前記より低いレベルから前記より高いレベルに移動させる場合、前記ページ・テーブル・エントリをストレージ・デバイス内のログ・ファイルからランダム・アクセス・メモリ（ＲＡＭ）デバイスに移動させるように構成される、請求項９に記載のコンピューティング・システム。
【請求項１３】
前記ハイパーバイザは、
前記第１の期間および前記第２の期間の前に、第３の期間中に前記第２のＯＳを実行するよう前記プロセッサに命令すること、および
前記第１の期間の前に、前記メモリ階層の前記より低いレベルに保存すべく、前記第２のＯＳに対応する１つまたは複数のページ・テーブル・エントリを選択すること
を行うように構成される、請求項９に記載のコンピューティング・システム。
【請求項１４】
前記第２のＯＳに対応する前記１つまたは複数のページ・テーブル・エントリを選択することは、
前記第３の期間中に前記プロセッサ上で前記第２のＯＳを実行するとき、メモリ・アドレス変換を実行すべく、最後に使用されてから経つ時間が最も短い（ＭＲＵ）前記１つまたは複数のページ・テーブル・エントリを特定することを含む、請求項１３に記載のコンピューティング・システム。
【請求項１５】
前記ハイパーバイザは、前記第１の期間中に前記第１のＯＳを実行することを開始する前に、前記選択された１つまたは複数のページ・テーブル・エントリを不揮発性ストレージ・デバイスに保存するように構成される、請求項１３に記載のコンピューティング・システム。
【請求項１６】
仮想マシン（ＶＭ）の間で切り換えるためのコンピュータ・プログラム製品であって、
コンピュータ可読プログラム・コードが具現化されているコンピュータ可読記憶媒体を備え、前記コンピュータ可読プログラム・コードは、
第１の期間にわたって第１の仮想マシン（ＶＭ）に対応する第１のオペレーティング・システム（ＯＳ）を実行するようプロセッサに命令すること、
前記第１の期間が終了する前に、第２のＶＭの第２のＯＳに対応するページ・テーブル・エントリをメモリ階層のより低いレベルからより高いレベルに移動させることによって前記ページ・テーブル・エントリをプリロードすることであって、前記より高いレベルは、前記より低いレベルと比べて前記メモリ階層において前記プロセッサにより近い、前記プリロードすること、および
前記第１の期間が終了した後、第２の期間にわたって前記プロセッサを使用して前記第２のＶＭに対応する前記第２のＯＳを実行するよう前記プロセッサに命令すること
を行うように、１つまたは複数のコンピュータ・プロセッサによって実行可能である、コンピュータ・プログラム製品。
【請求項１７】
前記第１の期間は、前記第１のＶＭに割り当てられた事前定義された期間に対応し、前記第２の期間は、前記第２のＶＭに割り当てられた事前定義された期間に対応する、請求項１６に記載のコンピュータ・プログラム製品。
【請求項１８】
前記第１の期間中に前記第１のＯＳを実行しているとき前記第２のＯＳはアイドルであり、前記第２の期間中に前記第２のＯＳを実行しているとき前記第１のＯＳはアイドルである、請求項１７に記載のコンピュータ・プログラム製品。
【請求項１９】
前記コンピュータ可読プログラム・コードは、
前記第１の期間および前記第２の期間の前に、第３の期間中に前記第２のＯＳを実行するよう前記プロセッサに命令すること、および
前記第１の期間の前に、前記メモリ階層の前記より低いレベルに保存すべく、前記第２のＯＳに対応する１つまたは複数のページ・テーブル・エントリを選択すること
を行うようにさらに実行可能である、請求項１６に記載のコンピュータ・プログラム製品。
【請求項２０】
前記第２のＶＭに対応する前記第２のＯＳに対応する前記ページ・テーブル・エントリをプリロードすることは、
前記ページ・テーブル・エントリを前記より低いレベルから前記より高いレベルに移動させる前に、Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ（最後に使用されてから経つ時間が最も長い）（ＬＲＵ）アルゴリズムを使用して前記第１のＯＳに対応する前記より高いレベルにおける１つまたは複数のページ・テーブル・エントリを選択すること、および
前記ページ・テーブル・エントリを前記より低いレベルから前記より高いレベルに移動させる前に、前記第１のＯＳに対応する前記選択された１つまたは複数のページ・テーブル・エントリを前記メモリ階層の前記より高いレベルから退去させること
を含む、請求項１６に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン（ＶＭ）間の切換えの際にコンピューティング・システムをウォームアップすることに関する。より詳細には、本開示は、保存されたメモリ変換を、新たなＶＭを実行する前にプリロード（pre-load）することに関する。
【背景技術】
【０００２】
通常、プロセッサは、仮想−物理アドレス変換（virtual to physicaladdress translation）を実行するための少なくとも１つのメモリ管理ユニット（ＭＭＵ）を含む。例えば、プロセッサは、仮想メモリのブロックを、そのプロセッサ上で実行されている異なるプロセス（例えば、オペレーティング・システムまたはユーザ・アプリケーション）に割り当ててよい。仮想アドレスのそれぞれは、メモリ内の物理メモリ・アドレスに対応する。仮想アドレスと物理アドレスの間のマッピングは、ページ・テーブル・エントリとしてページ・テーブルに記憶される。ページ・テーブルは、通常、メイン・メモリに記憶される。
【０００３】
プロセスが、特定の仮想アドレスからデータを読み取る、または特定の仮想アドレスにデータを書き込む要求を処理コアに送信すると、ＭＭＵは、ページ・テーブル（またはトランスレーション・ルックアサイド・バッファ（translation lookaside buffer））に問合せを行って、対応する物理アドレスを識別する。次に、処理コアが、その物理アドレスを使用して、プロセスによって要求された読取りまたは書込みを実行する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
仮想マシンのページ・テーブル・キャッシュ・ラインをプリロードする方法、コンピューティング・システム、およびコンピュータ・プログラムを提供する。
【課題を解決するための手段】
【０００５】
本発明の一実施形態は、第１の期間にわたってプロセッサを使用して第１のＶＭに対応する第１のオペレーティング・システム（ＯＳ）を実行することを含む方法である。方法は、第１の期間が終了する前に、第２のＶＭの第２のＯＳに対応するページ・テーブル・エントリをメモリ階層のより低いレベルからより高いレベルに移動させることによってそのページ・テーブル・エントリをプリロードすることであって、より高いレベルは、より低いレベルと比べて、メモリ階層においてプロセッサにより近い、プリロードすることを含む。第１の期間が終了した後、方法は、第２の期間にわたってプロセッサを使用して第２のＶＭに対応する第２のＯＳを実行することを含む。
【０００６】
本発明の別の実施形態は、第１の期間にわたって第１のＶＭに対応する第１のＯＳを実行するように構成されたプロセッサと、ハイパーバイザとを含むコンピューティング・システムである。ハイパーバイザは、第１の期間が終了する前に、第２のＶＭの第２のＯＳに対応するページ・テーブル・エントリをメモリ階層のより低いレベルからより高いレベルに移動させることによってそのページ・テーブル・エントリをプリロードすることであって、より高いレベルは、より低いレベルと比べて、メモリ階層においてプロセッサにより近い、プリロードすることを行うように構成される。また、ハイパーバイザは、第１の期間が終了した後、第２の期間にわたって第２のＶＭに対応する第２のＯＳを実行することを開始するようプロセッサに命令することも行う。
【０００７】
本発明の別の実施形態は、ＶＭの間で切り換えるためのコンピュータ・プログラムであって、コンピュータ・プログラムは、第１の期間にわたって第１のＶＭに対応する第１のＯＳを実行すること、および第１の期間が終了する前に、第２のＶＭの第２のＯＳに対応するページ・テーブル・エントリをメモリ階層のより低いレベルからより高いレベルに移動させることによってそのページ・テーブル・エントリをプリロードすることであって、より高いレベルは、より低いレベルと比べて、メモリ階層においてプロセッサにより近い、プリロードすることを行うようプロセッサに命令するように実行可能なコンピュータ・コードを含む。第１の期間が終了した後、コンピュータ・コードは、第２の期間にわたってプロセッサを使用して第２のＶＭに対応する第２のＯＳを実行するようプロセッサに命令するように実行可能である。
【図面の簡単な説明】
【０００８】
【図１】本明細書において説明される一実施形態による、仮想マシンを切り換えるときにメモリ変換をプリロードするコンピューティング・システムを示すブロック図である。
【図２】本明細書において説明される一実施形態による、仮想マシンを切り換えるときにメモリ変換をプリロードすることに関するフローチャートである。
【図３】本明細書において説明される一実施形態による、仮想マシンから切り換える（switchout）ときにメモリ変換を記憶するコンピューティング・システムを示すブロック図である。
【図４】本明細書において説明される一実施形態による、異なる仮想マシンの間で切り換えるコンピューティング・システムを示すブロック図である。
【図５】本明細書において説明される一実施形態による、仮想マシンを切り換える前にメモリ変換をプリロードするコンピューティング・システムを示すブロック図である。
【図６】本明細書において説明される一実施形態による、異なる仮想マシンの間で切り換えるコンピューティング・システムを示すブロック図である。
【発明を実施するための形態】
【０００９】
理解を容易にするのに、可能な場合、図に共通する同一の要素を示すのに同一の参照符号が使用されている。一実施形態において開示される要素は、特に明記することなく他の実施形態において有利に利用され得ることが企図される。
【００１０】
本明細書における実施形態は、仮想マシン（ＶＭ）の間で切り換えるコンピューティング・システムにおいて仮想−物理メモリ変換（またはその逆の変換）を実行するのに使用されるメモリ変換をプリロードする。例えば、コンピューティング・システムにおけるプロセッサ（またはＣＰＵ）が、異なる時点で異なるＶＭを実行してよい。言い換えれば、プロセッサの処理時間は、複数のＶＭの間で割り振られてよい、または分割されてよい。一実施形態において、プロセッサは、第１の期間中、第１のＶＭのための命令を実行し、次に、第２の期間中、第２のＶＭのための命令を実行することに切り換わる。
【００１１】
いくつかの状況において、それらのＶＭは、無関係である。より具体的には、第１のＶＭにおいて実行されているプロセスによって使用されるメモリ変換は、第２のＶＭにおいて実行されているプロセスによって使用されるメモリ変換と異なってよい。例えば、第１のＶＭと第２のＶＭが、異なる仮想メモリ・アドレスを割り当てられた異なるプロセスを実行してよい。この事例において、第１のＶＭにおいて実行されているプロセスのために仮想−物理アドレス変換を実行するのに必要とされるページ・テーブル・エントリは、第２のＶＭにおいて実行されているプロセスのためにアドレス変換を実行するのに必要とされるページ・テーブル・エントリとは異なる。プロセッサがそれらのＶＭの間で切り換わる場合、以前のＶＭを実行しているときにキャッシュされたページ・テーブル・エントリは、新たなＶＭに対応するページ・テーブル・エントリによってキャッシュ内で置き換えられる。しかし、そうすることには、新たなＶＭの実行を遅くさせる、より遅いストレージ・デバイス（例えば、ハードディスク）にアクセスすることが要求され得る。
【００１２】
本明細書における実施形態は、実行されるべき新たなＶＭのためのメモリ変換をプリロードする。言い換えれば、プロセッサが現在のＶＭから新たなＶＭに切り換わる前に、ハイパーバイザが、その新たなＶＭのための以前に保存されたメモリ変換を取り出し、それらのメモリ変換をキャッシュまたはメイン・メモリにロードしてよい。このため、新たなＶＭが実行することを開始するとき、対応するメモリ変換は、ストレージ内にではなく、キャッシュ内にある。これらのメモリ変換が、仮想−物理アドレス変換を実行するのに必要とされる場合、コンピューティング・システムは、遅いストレージ・デバイス（例えば、ハードディスク・ドライブ）からメモリ変換を取り出す必要がなく、このことは、数十万プロセッサ・サイクルを節約し得る。
【００１３】
一実施形態において、コンピューティング・システムは、仮想−物理メモリ変換を実行するためのトランスレーション・ルックアサイド・バッファ（ＴＬＢ）を含む。ＴＬＢは、ＭＭＵによってページ・テーブル・エントリのサブセットを記憶するのに使用されるキャッシュである。アドレスがＴＬＢに入っていない（すなわち、ＴＬＢミス（TLB miss））場合、コンピューティング・システムは、ページ・ウォークを実行して、別のキャッシュ内またはメイン・メモリ内でそのアドレスを見出す。本明細書における実施形態は、以前に保存されたメモリ変換をキャッシュにプリロードするので、ＴＬＢミスがある場合、その所望されるアドレスは、キャッシュに保存されていることが可能である。前述したとおり、このことは、ストレージからそのアドレス情報を取り出すのに要求される時間を節約する。言い換えると、ＶＭの間で切り換えるとき、ＴＬＢに既に記憶されているメモリ変換は、新たなＶＭにあまり役立たない可能性が高く、このため、本明細書における実施形態は、新たなＶＭに対応するメモリ変換をキャッシュまたはメイン・メモリにプリロードする。ＴＬＢミスの後にストレージからページ・テーブル・エントリを取り出す必要があるのではなく、このデータがキャッシュ内で見出され得る。このようにして、メモリ変換をキャッシュにプリロードすることによって、ＴＬＢミスの解決時間を短縮し得るので、新たなＶＭのためのＴＬＢを「ウォームアップする」。
【００１４】
図１は、本明細書において説明される一実施形態による、ＶＭを切り換えるときにメモリ変換をプリロードするコンピューティング・システム１００のブロック図である。具体的には、左端のコンピューティング・システム１００Ａが、メモリ変換がキャッシュ１２０にプリロードされる前のコンピューティング・システムの状態を示すのに対して、右端のコンピューティング・システム１００Ｂは、メモリ変換がキャッシュ１２０にプリロードされた後のコンピューティング・システムの状態を示す。
【００１５】
コンピューティング・システム１００は、ハイパーバイザ１０５と、ＶＭ１０７Ａと、ＶＭ１０７Ｂと、プロセッサ１１５と、キャッシュ１２０と、ストレージ１２５とを含む。ハイパーバイザ１０５（すなわち、仮想マシン・モニタ）は、コンピューティング・システム１００においてＶＭ１０７（論理パーティションまたはＬＰＡＲとも呼ばれる）を管理し、実行するソフトウェアまたはハードウェアあるいはその両方である。一般に、ハイパーバイザ１０５は、ＶＭ１０７とコンピューティング・システム１００におけるハードウェア、例えば、プロセッサ１１５との間の仲介役である。図示されるとおり、ＯＳ１１０Ａは、ＶＭ１０７Ａのためのオペレーティング・システムである一方で、ＯＳ１１０Ｂは、ＶＭ１０７Ｂのためのオペレーティング・システムである。
【００１６】
一実施形態において、ハイパーバイザ１０５は、いずれのＶＭ１０７（およびそのＶＭ１０７に対応するＯＳ１１０）がプロセッサ１１５によって現在、実行されているかを管理する。言い換えれば、ハイパーバイザ１０５は、処理時間の異なるブロックがコンピューティング・システム１００における異なるＶＭ１０７に割り当てられるようにプロセッサ１１５の処理時間をスケジュールすることができる。この例において、ＶＭ１０７Ａが、プロセッサ１１５を使用するように現在、スケジュールされている。このため、プロセッサ１１５は、プロセッサ１１５における破線のボックスによって示されるＯＳ１１０Ａにおいて動作するプロセスによって与えられる命令を実行する。図１は、２つだけのＶＭ１０７を示すものの、コンピューティング・システム１００は、プロセッサ１１５上の処理時間を分割する任意の数のＶＭを含んでよい。
【００１７】
プロセッサ１１５は、１つまたは複数の処理コアをそれぞれが含み得る任意の数の処理要素を表す。プロセッサ１１５が複数のコアを含む場合、一実施形態において、ＶＭ１０７は、時間の異なるブロックにおいて個々のコアを使用するようにスケジュールされ得る。例えば、ＶＭ１０７ＡのＯＳ１１０Ａが、プロセッサ１１５における第１のコアを使用するようにスケジュールされ得る一方で、ＶＭ１０７ＢのＯＳ１１０Ｂが、プロセッサ１１５における第２のコアを使用するようにスケジュールされる。代替として、ＶＭ１０７は、ＶＭ１０７のスケジュールされた期間中、プロセッサ１１５全体（複数のコアを含む）を使用してよい。例えば、プロセッサ１１５におけるすべてのコアが、ＯＳ１１０Ａによって発行された命令を実行していてよい。ＶＭ１０７Ａは、プロセッサ１１５を使用するようにスケジュールされる一方で、ＶＭ１０７ＢのＯＳ１１０Ｂは、アイドルであることが可能である、すなわち、ハイパーバイザ１０５が、それらのプロセスがＯＳ１１０Ｂ上で実行されるのを、プロセッサ１１５を使用すべきそれらのプロセスのスケジュールされた時間まで延期する。
【００１８】
キャッシュ１２０は、プロセッサ１１５とストレージ１２５の間にある任意のメモリ要素であってよい。キャッシュ１２０とストレージ１２５は、コンピューティング・システム１００Ａに関するメモリ階層の一部を形成する。いくつかの実施形態において、キャッシュ１２０は、ストレージ１２５に記憶されたデータのより小さい部分を記憶する。読取り要求または書込み要求を実行するとき、プロセッサ１１５は、ストレージ１２５内のデータを探索する前に、キャッシュ１２０内のデータをまず探索することが可能である。キャッシュ１２０は、通常、ストレージ１２５より小さいものの、キャッシュ１２０を形成するメモリ要素は、アクセスするのがより高速であり得る。例えば、キャッシュ１２０は、ＲＡＭまたはフラッシュ・メモリから形成され得る一方で、ストレージ１２５は、ハードディスク・ドライブ、テープ・ドライブ、外部データ・ストレージ・サーバ、クラウド・ストレージ、または他の不揮発性ストレージ・デバイスであり得る。
【００１９】
一実施形態において、キャッシュ１２０は、プロセッサ１１５を形成する集積回路（ＩＣ）内のメモリ要素、例えば、Ｌ１キャッシュ、Ｌ２キャッシュ、Ｌ３キャッシュ、その他であってよい。別の実施形態において、キャッシュ１２０は、コンピューティング・システム１００のマザーボード上に配置されたメイン・メモリ（例えば、ＤＲＡＭまたはＳＲＡＭを含むランダム・アクセス・メモリ（ＲＡＭ）デバイス）であってよい。図示されないものの、キャッシュ１２０は、ＯＳ１１０Ａによって実行されるプロセスに対応するページ・テーブル・エントリを含むページ・テーブルを記憶し得る。プロセッサ１１５は、これらのページ・テーブル・エントリを使用して、仮想アドレスを物理アドレスにマップすること（および物理アドレスを仮想アドレスにマップすること）が可能である。
【００２０】
図１において、ストレージ１２５は、ＯＳ１１０Ｂに関するメモリ変換１３０を含む。すなわち、プロセッサ１１５が、現在、ＯＳ１１０Ａを実行してはいるものの、コンピューティング・システム１００は、ＯＳ１１０Ｂに対応する以前に記憶されたメモリ変換１３０を有する。後段でより詳細に説明されるとおり、コンピューティング・システム１００は、プロセッサ１１５がＯＳ１１０Ｂを以前に実行していた場合、メモリ変換１３０を保存していることが可能である。
【００２１】
右端のコンピューティング・システム１００Ｂに示されるように、ハイパーバイザ１０５は、ＯＳ１１０Ｂに関するメモリ変換１３０をキャッシュ１２０に移動させる。一実施形態において、ハイパーバイザ１０５は、ＶＭ１０７Ａがプロセッサ１１５を使用するようにスケジュールされた時間がもうすぐ終わり、次はＶＭ１０７Ｂがプロセッサ１１５を使用する番であると判定したことに応答して、メモリ変換１３０を移動させる。言い換えれば、プロセッサ１１５がＯＳ１１０Ａを実行することからＯＳ１１０Ｂを実行することに切り換わる前に、ハイパーバイザ１０５が、メモリ変換１３０を、メモリ階層においてプロセッサ１１５のより近くに移動させることを開始する。ＯＳ１１０ＡとＯＳ１１０Ｂは、異なる仮想アドレス空間を使用する異なるプロセスを実行し得るので、メモリ変換１３０をストレージからキャッシュ１２０内に移動させる前、キャッシュ１２０は、ＯＳ１１０Ａに関するメモリ変換情報しか記憶していない可能性がある。すなわち、ＯＳ１１０Ａがプロセッサ１１５上で実行される間、ＯＳ１１０Ｂに関するメモリ変換は、キャッシュ１２０から既に除去されている可能性がある。
【００２２】
一実施形態において、コンピューティング・システム１００は、Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ（最後に使用されてから経つ時間が最も長い）（ＬＲＵ）ポリシーを使用して、いずれのメモリ変換をキャッシュ１２０内に保ち、いずれを無効にするか、すなわち、ストレージ１２５に移動させるかを判定してよい。ＯＳ１１０Ｂによって使用される仮想アドレスに対応するメモリ変換は、ＯＳ１１０Ａがプロセッサ１１５において実行されているとき、使用されないので、これらのメモリ変換は、ハイパーバイザによってフラグが立てられて、キャッシュ１２０から除去される。このため、ハイパーバイザ１０５がＯＳ１１０Ａを実行することからＯＳ１１０Ｂを実行することに切り換えたとき、キャッシュ１２０は、ＯＳ１１０Ａに関するメモリ変換しか包含しない可能性がある。しかし、図１に示されるとおり、ハイパーバイザ１０５は、ＯＳ１１０Ｂに関する選択されたメモリ変換１３０をキャッシュ１２０にプリロードする。このため、ＯＳ１１０Ｂがプロセッサ１１５において実行されることが始まるとき、ＯＳ１１０Ｂに対応する少なくともいくつかのメモリ変換はキャッシュ１２０内にあり、したがって、メモリ変換がストレージ１２５から取り出されるまでプロセッサ１１５が待たなければならない場合と比べて、より迅速にアクセスされ得る。このため、メモリ変換１３０をプリロードすることは、メモリ変換をキャッシュ１２０にプリロードしないコンピューティング・システムと比べて、ＯＳ１１０Ａを実行することからＯＳ１１０Ｂを実行することに切り換える場合のプロセッサ１１５のスループットを向上させ得る。
【００２３】
図２は、本明細書において説明される一実施形態による、ＶＭを切り換えるときにメモリ変換をプリロードするための方法２００のフローチャートである。説明を容易にするため、方法２００の異なるブロックは、方法２００に対応する異なる例を示す図３〜図６に関連して説明される。ブロック２０５において、ハイパーバイザが、第１のＶＭに対応するページ・テーブルにおけるメモリ変換をログ・ファイルに保存する。一実施形態において、ハイパーバイザは、第１のＶＭがコンピューティング・デバイスにおけるプロセッサを使用するようにスケジュールされた時間中にそれらのメモリ変換を保存する。第１のＶＭがプロセッサを使用する時間の事前定義されたブロックを与えられているものと想定すると、ハイパーバイザが、第１のＶＭに、例えば、１０％しか残っている時間がないと判定した後、ハイパーバイザは、第１のＶＭに関するＯＳに関連付けられたメモリ変換を保存することを開始する。
【００２４】
図３は、本明細書において説明される一実施形態による、ＶＭから切り換えるときにメモリ変換を記憶するコンピューティング・システム３００のブロック図である。この例に示されるとおり、プロセッサ１１５は、現在、ＶＭ１０７Ｂに対応するＯＳ１１０Ｂを実行している。ＶＭ１０７Ｂのためのスケジュールされた時間がもうすぐ終わるので、ハイパーバイザ１０５が、ＯＳ１１０Ｂに関するページ・テーブルのエントリ３１０のうちのいくつかを保存することを開始する。具体的には、ハイパーバイザ１０５は、ＯＳ１１０Ｂに関する選択された１つまたは複数のページ・テーブル・エントリ３２０をログ３１５に保存する。ログ３１５は、ストレージ１２５内に示されるものの、ログ３１５は、キャッシュ１２０と比べて、階層においてプロセッサ１１５からより離れたキャッシュ内に配置されてもよい。例えば、キャッシュ１２０が、ページ・テーブルを記憶するために使用される特別なキャッシュであり得る一方で、ログ３１５は、メイン・メモリに記憶される。一実施形態において、ハイパーバイザ１０５は、実行されている現在のＯＳに関する選択されたページ・テーブル・エントリ３２０を、次のＶＭがプロセッサ１１５上で実行されることが始まるときに上書きされないメモリ・ロケーションに保存する。
【００２５】
また、コンピューティング・システム３００は、プロセッサ１１５によって要求された仮想−物理アドレス変換を実行するためのＴＬＢ３０５も含む。一実施形態において、ＴＬＢ３０５は、ＯＳ１１０Ｂに関するページ・テーブルにおけるエントリ３１０の一部分だけを記憶するキャッシュの一種であると見なされ得る。例えば、ＴＬＢ３０５は、メモリ階層においてキャッシュ１２０より上位にある連想メモリ（例えば、Ｃｏｎｔｅｎｔ  ＡｄｄｒｅｓｓａｂｌｅＭｅｍｏｒｙ（ＣＡＭ））であってよく、すなわち、ＴＬＢ３０５は、キャッシュ１２０と比べて、プロセッサ１１５のより近くにある。このため、メモリ変換を実行する場合、プロセッサ１１５はまず、ＴＬＢ３０５に問合せを行って、仮想−物理マッピングがそこに記憶されているかどうかを判定する。記憶されていない場合、プロセッサ１１５は次に、キャッシュ１２０内のページ・テーブル・エントリ３１０をウォークスルーする。しかし、キャッシュ１２０（例えば、メイン・メモリ）は、コンピューティング・システム３００の仮想アドレス空間全体に対応するすべてのページ・テーブルを記憶する十分なメモリ要素を有しない可能性がある。例えば、キャッシュ１２０は、ＴＬＢ３０５と同様に、コンピューティング・システム３００に関するページ・テーブル・エントリの一部分しか記憶しない可能性がある。したがって、キャッシュ１２０が所望されるマッピングを有しない場合、プロセッサ１１５は、コンピューティング・システム３００におけるすべてのページ・テーブルのコピーを包含し得るストレージ１２５から仮想アドレスを取り出すことが可能である。
【００２６】
ハイパーバイザ１０５は、様々な技法を使用して、ＶＭ１０７Ｂにスケジュールされた時間が終わる前に、ページ・テーブルのいずれのエントリ３１０がログ３１５に記録されなければならないかを判定してよい。一実施形態において、ハイパーバイザ１０５は、ＴＬＢ３０５に記憶されたページ・テーブル・エントリを、ログ３１５に記憶されるページ・テーブル・エントリ３２０として選択する。すなわち、多くのコンピューティング・システムにおいて、ＴＬＢ３０５が、メモリ変換を実行するのに将来、必要とされる可能性が最も高いとコンピューティング・システムが予期する、または予測するページ・テーブル・エントリを記憶するので、ハイパーバイザ１０５は、ＴＬＢ３０５のページ・テーブル・エントリをログ３１５に記憶してよい。このため、ＶＭ１０７Ｂがプロセッサ１１５を使用するように再びスケジュールされる場合、エントリのこのリストは、ログ３１５の中に保存されている。
【００２７】
別の実施形態において、ハイパーバイザ１０５は、ログ３１５に記憶すべきアドレス変換を実行するとき、プロセッサ１１５によって最後に使用されてから経つ時間が最も短い（ＭＲＵ）ページ・テーブル・エントリを識別する。例えば、ハイパーバイザ１０５は、最後の５０ミリ秒内にプロセッサ１１５によってアクセスされたページ・テーブル・エントリだけを選択して、メモリ変換を実行してよい。代替として、ハイパーバイザ１０５は、ＯＳ１１０Ｂが実行されている間、メモリ変換を実行するのに各エントリが何回、使用されたかを示すページ・テーブル・エントリ３１０の各エントリのカウントを保持してよい。ハイパーバイザ１０５は、最低限のカウントより大きいカウントを有するページ・テーブル・エントリだけを選択してよい。別の例において、ハイパーバイザ１０５は、選択されたページ・テーブル・エントリ３２０の数を固定された量（例えば、５メガバイト）に制限し、その固定された量が満たされるまで、最高のカウントを有するエントリを選択してよく、すなわち、最高のカウントを有する最初の５メガバイトのエントリを選択してよい。
【００２８】
現在、実行されているＯＳに関するページ・テーブル・エントリ３２０を選択することに関する前段で与えられた例は、非限定的な例であることが意図されている。対応するＶＭがプロセッサ１１５上で実行されるように再びスケジュールされる場合にオペレーティング・システムによってアクセスされる可能性が最も高いページ・テーブル・エントリを選択するための多くの異なる技法が存在することが、当業者には認識されよう。さらに、一実施形態において、ハイパーバイザ１０５は、キャッシュ１２０に記憶されるページ・テーブル・エントリのより小さい部分を選択するのではなく、ＯＳ１１０Ｂに関するページ・テーブルのすべてのエントリ３１０をログ３１５に記憶してもよい。
【００２９】
図３において、ログ３１５に記憶された選択されたページ・テーブル・エントリ３２０は、ＶＭ１０７Ｂのためのスケジュールされた時間が終わる前に識別されるものの、別の実施形態において、ハイパーバイザ１０５は、その時間が終わった後に１つまたは複数のページ・テーブル・エントリ３２０を選択してよい。例えば、プロセッサ１１５がＯＳ１１０Ｂを実行することを停止する時点とＯＳ１１０Ａを実行することを開始する時点の間にいくらかのダウンタイムが存在してよい。この時間の後、ハイパーバイザ１０５は、ページ・テーブル・エントリ３２０のいずれをログ３１５に記憶するかを選択することができる。さらに、ハイパーバイザ１０５は、プロセッサ１１５がＯＳ１１０Ａを実行することを開始した後、ページ・テーブル・エントリ３２０のうちのいくつか、またはすべてをログ３１５に記憶することを選択してよい。プロセッサ１１５が、現在、ＴＬＢ３０５内、およびキャッシュ１２０内にあるページ・テーブル・エントリを、ＯＳ１１０Ａに対応するページ・テーブル・エントリで置き換えるまでにいくらかの時間がかかり得るので、ハイパーバイザ１０５は、ＴＬＢ３０５内、またはキャッシュ１２０内、あるいはその両方の中のエントリを評価して、いずれのエントリをログ３１５に記憶するかを判定する時間を有し得る。
【００３０】
方法２００に戻ると、ブロック２１０において、プロセッサが、第１のＶＭを実行することから第２のＶＭを実行することに切り換わる。前述したとおり、コンピューティング・システムにおける各ＶＭには、実行すべき時間の特定のブロックが割り当てられ得る。このため、そのＶＭに割り当てられた時間のブロックにわたって、プロセッサは、そのＶＭに対応するＯＳに関して受け取られる命令を実行する一方で、他方のＶＭは、アイドルである。すなわち、プロセッサは、スケジュールされていないＶＭに関する命令を実行しない。
【００３１】
図４は、本明細書において説明される一実施形態による、ＶＭ１０７の間で切り換えられたコンピューティング・システム３００のブロック図である。図３とは異なり、コンピューティング・システム３００において、プロセッサ１１５は、現時点で、ＯＳ１１０Ｂではなく、ＯＳ１１０Ａから受け取られた命令を実行する。ＴＬＢ３０５は、ＯＳ１１０Ｂ、すなわち、プロセッサ１１５上で以前に実行されていたオペレーティング・システムに関するページ・テーブル・エントリをキャッシュするので、ＯＳ１１０Ａのためにプロセッサ１１５によってサブミットされる変換要求のすべてではないとしても多くは、キャッシュ・ミスをもたらす。これに応答して、コンピューティング・システム３００は、キャッシュ１２０、例えば、コンピューティング・システム３００のメイン・メモリに記憶されたページ・テーブル・エントリにおいてページ・ウォークを実行する。しかし、キャッシュ１２０は、限られた記憶容量しか有することできず、例えば、所定の量のページ・テーブル・エントリしか記憶することができない。一実施形態において、コンピューティング・システム３００は、ページ・テーブル・エントリを記憶するのに使用され得るキャッシュ１２０のメモリの量を制限し得る。例えば、キャッシュ１２０は、キャッシュ１２０の２％がページ・テーブル・エントリのために確保される一方で、残りの９８％は、ＯＳ１１０によって要求されるデータのために確保されたメイン・メモリであり得る。このため、コンピューティング・システム３００は、異なるすべてのＶＭ１０７に関するページ・テーブル・エントリをキャッシュ１２０に記憶することはできない可能性がある。
【００３２】
例えば、図３において、キャッシュ１２０は、主として、ＯＳ１１０Ｂに関するページ・テーブル・エントリ３１０を記憶し得る。その結果、プロセッサ１１５におけるＭＭＵによってサブミットされるメモリ変換要求の多くは、キャッシュ１２０においてミスをもたらす。これに応答して、コンピューティング・システム３００は、ＯＳ１１０Ａに対応するページ・テーブル・エントリをストレージ１２５から取り出すことが可能であり、このことは、数十万プロセッサ・サイクルを要し得る。
【００３３】
図４は、キャッシュ１２０に以前に記憶されたエントリをＯＳ１１０Ａに関するページ・テーブル・エントリ４０５で置き換えるコンピューティング・システム３００の結果を示す。図示されないものの、ＴＬＢ３０５におけるエントリは、ＯＳ１１０Ｂの代わりにＯＳ１１０Ａに関するページ・テーブル・エントリを含むように更新されてもよい。今や、プロセッサ１１５によってサブミットされる変換要求は、ＴＬＢ３０５またはキャッシュ１２０においてヒットをもたらす可能性がより高く、その結果、ストレージ１２５に問合せを行う必要性を取り除く。このことによって、ＴＬＢ３０５およびキャッシュ１２０に記憶されたページ・テーブル・エントリにアクセスすることには、ストレージ１２５からのデータにアクセスすることと比べて、はるかに少ない処理サイクルしか要求されないようにすることが可能であるので、プロセッサ１１５が命令を完了する速度を高めることが可能である。
【００３４】
方法２００に戻ると、ブロック２１５において、ハイパーバイザが、第２のＶＭの時間制限が終わる前に、第１のＶＭに対応するメモリ変換を、プロセッサにより近いメモリ・レベルにロードする。すなわち、プロセッサが、第２のＶＭに対応するＯＳに関する命令を依然として実行している間、ハイパーバイザが、第１のＶＭのＯＳに対応するメモリ変換を、メモリ階層のより低いレベルからより高いレベルに、例えば、ストレージからメイン・メモリにロードすることを開始する。
【００３５】
図５は、本明細書において説明される一実施形態による、ＶＭを切り換える前にメモリ変換をプリロードするコンピューティング・システムのブロック図である。図５において、プロセッサ１１５は、ＯＳ１１０Ａから受け取られた命令を依然として実行している。しかし、ハイパーバイザ１０５は、ＯＳ１１０Ｂに関する選択されたページ・テーブル・エントリ３１０を、ストレージ１２５におけるログ３１５からキャッシュ１２０に移動させている。一実施形態において、ハイパーバイザ１０５は、ＶＭ１０７ＡがＶＭ１０７Ｂに切り換えられるのに所定の時間先立って、例えば、切換えの１マイクロ秒前、またはＶＭ１０７Ａに５％しか残っている時間がない時点で、選択されたページ・テーブル・エントリ３２０をキャッシュ１２０に移動させることを開始してよい。一例において、ハイパーバイザ１０５は、プロセッサ１１５がＯＳ１１０Ｂを実行することに切り換わる前にすべてのエントリ３２０をキャッシュ１２０に移動させることができない可能性がある。それでも、ハイパーバイザ１０５は、ＯＳ１１０Ｂが実行されることが始まる前にエントリ３２０をキャッシュ１２０に移動させることが終わらない場合でさえ、プロセッサ１１５がＯＳ１１０Ａに関する命令を実行することを止める前に、ＯＳ１１０Ｂに関するページ・テーブル・エントリ３２０をキャッシュ１２０に移動させることを少なくとも開始する。言い換えると、ハイパーバイザ１０５は、ＶＭ１０７Ａのための処理時間が終わる前に、ＯＳ１１０Ｂに関するページ・テーブル・エントリ３２０をキャッシュ１２０にコピーするプロセスを開始する。
【００３６】
一実施形態において、ハイパーバイザ１０５は、プロセッサ１１５がＯＳ１１０Ａを依然として実行している間に、選択されたページ・テーブル・エントリ３２０をキャッシュ１２０に移動させることを終えることが可能である。キャッシュ１２０のサイズは限られている可能性がある（またはページ・テーブル・エントリのために確保されたキャッシュ内のエントリの数が固定されている可能性がある）ので、ハイパーバイザ１０５は、ＯＳ１１０Ｂに関するページ・テーブル・エントリ３２０のためのメモリ・ロケーションを解放するためにＯＳ１１０Ａに関するページ・エントリ４０５のいずれを退去させるかを選択的に判定することが可能である。言い換えれば、ハイパーバイザ１０５は、ＯＳ１１０Ａに関するページ・エントリ４０５のいずれをＯＳ１１０Ｂに関するページ・エントリ３２０で置き換えるかを選択する。
【００３７】
一実施形態において、ハイパーバイザ１０５は、ＶＭ１０７Ａに割り当てられた残りの時間にわたってＯＳ１１０Ａを実行するとき、ページ・テーブル・エントリ４０５のいずれがプロセッサ１１５によって使用される可能性が最も低いかを判定することが可能である。そうすることによって、ハイパーバイザ１０５は、その後、ストレージ１２５からフェッチされなければならないＯＳ１１０Ａに関するページ・テーブル・エントリ４０５を退去させて、その結果、ＯＳ１１０Ａの実行を遅くすることを、望ましくは、回避する。言い換えれば、ハイパーバイザ１０５は、ＯＳ１１０Ａを実行するとき、いずれのページ・テーブル・エントリ４０５がプロセッサ１１５によって使用される可能性が最も低いかを予測し、ＯＳ１１０Ｂに関するページ・テーブル・エントリ３２０のためのスペースをつくるために、ページ・テーブルからそれらのエントリ４０５だけを退去させることが可能である。
【００３８】
一実施形態において、ハイパーバイザ１０５は、Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ（最後に使用されてから経つ時間が最も長い）（ＬＲＵ）アルゴリズムを使用して、キャッシュ１２０から退去させるページ・テーブル・エントリ４０５を選択する。そうするとき、ハイパーバイザ１０５は、メモリ変換を実行するのにプロセッサ１１５によって使用される頻度の最も低いページ・テーブル・エントリ４０５を選択し、それらのエントリを、ＯＳ１１０Ｂに関するページ・テーブル・エントリ３２０で置き換える。別の例において、履歴データを監視することによって、ハイパーバイザ１０５は、プロセッサ１１５がＯＳ１１０Ａを実行することを停止するとき、いずれのページ・テーブル・エントリが通常、アクセスされるか（およびいずれがアクセスされないか）を識別し、頻繁に使用されることのないエントリだけを退去させることが可能である。例えば、プロセッサ１１５は、同一のページ・テーブル・エントリを使用するＶＭ１０７の間で切り換える場合、同一の保持動作を実行してよい。それらの保持動作中、ページ・テーブル・エントリ４０５のいずれが使用されるかを識別することによって、ハイパーバイザ１０５は、これらのエントリを、その他のエントリを退去させながら、キャッシュ１２０内に保つことができる。これらの例は、本明細書において説明される実施形態に適用され得る、将来、いずれのページ・テーブル・エントリが使用されるか（またはされないか）を予測するための様々な技法のうちのいくつかに過ぎないことが、当業者には認識されよう。
【００３９】
図５は、ＯＳ１１０Ｂに関するページ・テーブル・エントリ３２０をストレージ１２５からキャッシュ１２０に移動させることを示すものの、別の実施形態において、ページ・テーブル・エントリ３２０は、ハイパーバイザ１０５がＶＭ１０７ＡからＶＭ１０７Ｂに切り換える前にＴＬＢ３０５に移動させてよい。すなわち、ハイパーバイザ１０５は、ＴＬＢ３０５内のエントリのうちの１つまたは複数を、ＯＳ１１０Ｂに関するページ・テーブル・エントリ３２０のうちの１つまたは複数に切り換えてよい。ＴＬＢ３０５内のエントリのすべてをＯＳ１１０Ｂに関するエントリ３２０で置き換えることは、そうすることが、ＯＳ１１０Ａを実行している間にサブミットされた変換がＴＬＢミスをもたらす確率を大幅に高めるので、望ましくない可能性があるものの、それらのエントリのうちのいくつかを置き換えることは、プロセッサ１１５がＯＳ１１０Ｂを実行することを開始したときにページ・テーブル・エントリに関してストレージ１２５に問合せを行わなければならない可能性を低減し得る。
【００４０】
さらに、一実施形態において、プロセッサ１１５が、ＯＳ１１０Ａを実行することからＯＳ１１０Ｂを実行することに切り換わると、ハイパーバイザ１０５は、ＯＳ１１０Ａに関する残りのページ・テーブル・エントリ４０５をキャッシュ１２０またはＴＬＢ３０５あるいはその両方から退去させてよい。例えば、ハイパーバイザ１０５が、ＯＳ１１０Ｂが実行されているとき、ＯＳ１１０Ａに関するページ・テーブル・エントリが使用されることが決してない、またはほとんどないことを認識している場合、ハイパーバイザ１０５は、キャッシュ１２０内、またはＴＬＢ３０５内の残っているエントリを退去させて、それらのエントリを選択されたページ・テーブル・エントリ３２０で置き換えることにとりかかってよい。一実施形態において、ハイパーバイザ１０５は、プロセッサ１１５がＯＳ１１０Ａを実行することを停止し、ＯＳ１１０Ｂを実行することを開始すると、ＯＳ１１０Ａがプロセッサ１１５上でまだ実行されていた間にキャッシュ１２０に保存されたページ・テーブル・エントリ３２０を、ＴＬＢ３０５に移動させてよい。
【００４１】
ページ・テーブル・エントリ３２０をキャッシュ１２０に移動させている間、コンピューティング・システム３００は、キャッシュ１２０またはＴＬＢ３０５あるいはその両方に記憶されたＯＳ１１０Ａに関するページ・テーブル・エントリ５０５を選択し、これらのエントリをログ３１５に保存する。そのようにして、ＶＭ１０７Ａに再び切り換えるとき、ハイパーバイザ１０５は、前述したとおり、ＯＳ１１０に関するエントリ５０５をログ３１５からキャッシュ１２０またはＴＬＢ３０５に移動させることができる。一例において、ハイパーバイザ１０５は、ＯＳ１１０Ｂに関する選択されたページ・テーブル・エントリ３２０をログ３１５からメモリ階層のより上のレベル、すなわち、キャッシュ１２０またはＴＬＢ３０５に移動させることと並行して、ＯＡ１１０Ａに関するエントリ５０５のいずれをログ３１５に保存するかを選択してよい。
【００４２】
方法２００に戻ると、ブロック２２０において、プロセッサが、第１のＶＭに切り換えた後、ロードされたメモリ変換に問合せを行って、第１のＶＭに関する仮想−物理アドレス変換を実行する。言い換えれば、第１のＶＭに対応するページ・テーブル・エントリをストレージから移動させる前にＴＬＢミスおよびキャッシュ・ミスまで待たなければならないのではなく、コンピューティング・システムは、第１のＶＭに関するページ・テーブル・エントリの少なくともいくつかを、ストレージからプロセッサにより近いメモリのレベル、例えば、メイン・メモリまたはＴＬＢに移動させることを既に開始している。一実施形態において、第１のＶＭに関するページ・テーブル・エントリのうちのいくつかは、メイン・メモリまたはＴＬＢに既に記憶されており、その結果、コンピューティング・システムが、第１のＶＭに関するＯＳによってサブミットされた命令を実行するとき、サブミットされたメモリ変換要求を満たすためにストレージに向かわなくてもよい確率を高める。第１のＶＭに関するページ・テーブル・エントリをストレージからメモリ階層のより高いレベルに移動させることは、本明細書ではＴＬＢをウォームアップすることと呼ばれる。プロセッサが第１のＶＭのＯＳを実行することを開始する前に第１のＶＭに関するページ・テーブル・エントリをＴＬＢに実際に移動させない場合でさえ、そうすることは、プロセッサがＯＳを実行することを開始した時点からＴＬＢを依然としてウォームアップし、本明細書における実施形態は、ＴＬＢミスにはストレージに問合せを行うことが要求されない見込みを向上させる。代わりに、第１のＶＭに関するページ・テーブル・エントリの少なくともいくつかは、アクセスするのがはるかに高速であるキャッシュ、例えば、メイン・メモリに配置され得る。
【００４３】
図６は、本明細書において説明される一実施形態による、異なるＶＭの間で切り換えるコンピューティング・システム３００のブロック図である。図示されるとおり、プロセッサ１１５は、ＯＳ１１０Ａを実行すること（図５に示されるとおり）からＯＳ１１０Ｂを実行することに切り換わっている。この例において、ＯＳ１１０Ａに関するページ・テーブル・エントリは、キャッシュ１２０から退去させられており、ＯＳ１１０Ｂに関するページ・テーブル・エントリ６０５で置き換えられている。一実施形態において、十分な時間にわたってＯＳ１１０Ｂを実行した後、キャッシュ１２０内のＯＳ１１０Ａに関するすべてのページ・テーブル・エントリ４０５は、ＯＳ１１０Ｂに関するページ・テーブル・エントリ６０５だけで置き換えられていることが可能である。同様に、図示されないものの、ＴＬＢ３０５におけるエントリも、図５によって表される時点におけるＴＬＢ３０５のエントリに対して置き換わっていることが可能である。
【００４４】
ＯＳ１１０Ｂに関するページ・テーブル・エントリ６０５のうちのいくつかは、図５に示されるとおりキャッシュ１２０にプリロードされていることが可能であるものの、エントリ６０５の残りの部分は、プロセッサ１１５がＯＳ１１０Ｂを実行することを開始した後に、すなわち、コンピューティング・システム３００がＶＭ１０７Ａを実行することからＶＭ１０７Ｂを実行することに切り換えたときにロードされてよい。例えば、処理要素１１５が、プリロードされたページ・テーブル・エントリのうちの１つに対応しない仮想アドレスを含む変換要求をサブミットすることが可能である。この事例において、コンピューティング・システム３００は、ストレージ１２５から対応するページ・テーブル・エントリを取り出す。このため、ページ・テーブル・エントリ６０５のうちのいくつかは、キャッシュ１２０（またはＴＬＢ３０５あるいはその両方）にプリロードされていることが可能であるが、コンピューティング・システム３００は、プロセッサ１１５がＯＳ１１０Ｂを実行することを開始した後、メモリからＯＳ１１０Ｂに関する他のページ・テーブル・エントリを取り出してよい。
【００４５】
ＶＭ１０７Ｂのための処理時間が終わり始めると、方法２００は、繰り返されてよい。すなわち、ＶＭ１０７Ａに再び切り換える前に、ハイパーバイザ１０５は、図３に示されるとおり、ページ・テーブル・エントリ６０５からの選択されたエントリをログ３１５に保存してよい。さらに、ハイパーバイザ１０５は、ＶＭ１０７ＢからＶＭ１０７Ａに切り換えることを予期して、ログ３１５に記憶されたＯＳ１１０Ａに関する選択されたページ・テーブル・エントリ５０５をキャッシュ１２０にプリロードすることを開始してよい。前述したとおり、ハイパーバイザ１０５は、キャッシュ１２０内のＯＳ１１０Ｂに関するページ・テーブル・エントリ６０５のうちのいくつかを退去させて、選択されたページ・テーブル・エントリ５０５のためのスペースをつくってよい。
【００４６】
本発明の様々な実施形態の説明は、例示の目的で提示されてきたが、網羅的であることも、開示される実施形態に限定されることも意図されない。説明される実施形態の範囲および思想を逸脱することなく、多くの変更形態および変形形態が当業者には明白となろう。本明細書において使用される術語は、実施形態の原理、実際的な用途、または市場で見られる技術に優る技術的改良を最もよく説明するように、または他の当業者が本明細書において開示される実施形態を理解することを可能にするように選択されている。
【００４７】
前段において、本開示において提示される実施形態が参照されている。しかし、本開示の範囲は、説明される特定の実施形態に限定されない。そうではなく、前段で説明されている特徴および要素の任意の組合せが、異なる実施形態と関係するか否かにかかわらず、企図される実施形態を実装し、実施するように企図される。さらに、本明細書において開示される実施形態は、他の可能なソリューションに優る、または従来技術に優る利点を実現し得るものの、特定の利点が所与の実施形態によって実現されるか否かは、本開示の範囲を限定するものではない。このため、本明細書において説明される態様、特徴、実施形態、および利点は、単に例示的であり、特許請求の範囲に明示的に記載される場合を除いて、添付の特許請求の範囲の要素であるとも、限定であるとも見なされない。同様に、「本発明」は、本明細書において開示されるいずれかの発明対象の一般化であると解釈されるべきではなく、特許請求の範囲に明示的に記載される場合を除いて、添付の特許請求の範囲の要素であるとも、限定であるとも見なされるべきではない。
【００４８】
本発明の態様は、完全にハードウェア実施形態の形態をとっても、完全にソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロコード、その他を含む）の形態をとっても、あるいは「回路」、「モジュール」、または「システム」と本明細書ですべて一般的に呼ばれ得るソフトウェア態様とハードウェア態様を組み合わせる実施形態の形態をとってもよい。
【００４９】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有する（１つまたは複数の）コンピュータ可読記憶媒体を含み得る。
【００５０】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるように命令を保持し、記憶することができる有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、以下のものに限定されないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または以上の任意の適切な組合せであってよい。コンピュータ可読記憶媒体のより具体的な例の網羅的でないリストは、以下、すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能なプログラマブル読取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル・バーサタイル・ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、命令が記録されているパンチカードもしくは溝の中の隆起構造などの機械的に符号化されたデバイス、および以上の任意の適切な組合せを含む。本明細書において使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝達媒体を介して伝播する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、または配線を介して伝送される電気信号などの一時的な信号そのものであると解釈されるべきではない。
【００５１】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備え得る。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に記憶されるようにコンピュータ可読プログラム命令を転送する。
【００５２】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはＳｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋、もしくは類似したものなどのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくは類似したプログラミング言語などの従来の手続き型プログラミング言語を含め、１つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行されても、一部がユーザのコンピュータ上で実行されても、スタンドアロンのソフトウェア・パッケージとして実行されても、一部がユーザのコンピュータ上で、かつ一部が遠隔コンピュータ上で実行されても、全体が遠隔コンピュータもしくは遠隔サーバ上で実行されてもよい。全体が遠隔コンピュータもしくは遠隔サーバ上で実行されるシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてよく、または接続は、外部コンピュータに対して行われてもよい（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）。いくつかの実施形態において、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路が、本発明の態様を実行するために、電子回路をカスタマイズするようにコンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行することが可能である。
【００５３】
本発明の態様は、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャートまたはブロック図あるいはその両方を参照して本明細書において説明される。フローチャートまたはブロック図あるいはその両方の各ブロック、ならびにフローチャートまたはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実施され得ることが理解されよう。
【００５４】
これらのコンピュータ可読プログラム命令は、そのコンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行されるそれらの命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。また、これらのコンピュータ可読プログラム命令は、命令が記憶されているコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実施する命令を含む製造品を備えるべく、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せに特定の様態で機能するように指示することができるものであってもよい。
【００５５】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施するように、コンピュータによって実行されるプロセスを作り出すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【００５６】
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施様態のアーキテクチャ、機能、および動作を例示する。これに関して、フローチャートまたはブロック図における各ブロックは、指定された論理機能を実施するための１つまたは複数の実行可能命令を備える、命令のモジュール、セグメント、または部分を表し得る。いくつかの代替の実施様態において、ブロックに記載される機能は、図に記載される順序を外れて生じてよい。例えば、連続して示される２つのブロックが、実際には、実質的に同時に実行されてよく、またはそれらのブロックが、時として、関与する機能に依存して、逆の順序で実行されてよい。また、ブロック図またはフローチャートあるいはその両方の各ブロック、ならびにブロック図またはフローチャートあるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行する、または専用ハードウェア命令とコンピュータ命令の組合せを実行する専用ハードウェア・ベースのシステムによって実施され得ることにも留意されたい。
【００５７】
以上は、本発明の実施形態を対象とするが、本発明の他の実施形態、およびさらなる実施形態が、本発明の基本的範囲を逸脱することなく考案されることが可能であり、本発明の範囲は、添付の特許請求の範囲によって定められる。
【図１】
2018536219.tif 000003
【図２】
2018536219.tif 000004
【図３】
2018536219.tif 000005
【図４】
2018536219.tif 000006
【図５】
2018536219.tif 000007
【図６】
2018536219.tif 000008
【手続補正書】
【提出日】平成30年5月30日(2018.5.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
方法であって、
第１の期間にわたってプロセッサを使用して第１の仮想マシン（ＶＭ）に対応する第１のオペレーティング・システム（ＯＳ）を実行することと、
前記第１の期間が終了する前に、第２のＶＭの第２のＯＳに対応するページ・テーブル・エントリをメモリ階層のより低いレベルからより高いレベルに移動させることによって前記ページ・テーブル・エントリをプリロードすることであって、前記より高いレベルは、前記より低いレベルと比べて前記メモリ階層において前記プロセッサにより近い、前記プリロードすることと、
前記第１の期間が終了した後、第２の期間にわたって前記プロセッサを使用して前記第２のＶＭに対応する前記第２のＯＳを実行することと
を含む方法。
【請求項２】
前記第１の期間は、前記第１のＶＭに割り当てられた事前定義された期間に対応し、前記第２の期間は、前記第２のＶＭに割り当てられた事前定義された期間に対応する、請求項１に記載の方法。
【請求項３】
前記第１の期間中に前記第１のＯＳを実行しているとき前記第２のＯＳはアイドルであり、前記第２の期間中に前記第２のＯＳを実行しているとき前記第１のＯＳはアイドルである、請求項２に記載の方法。
【請求項４】
前記ページ・テーブル・エントリを前記より低いレベルから前記より高いレベルに移動させることは、
前記ページ・テーブル・エントリをストレージ・デバイス内のログ・ファイルからランダム・アクセス・メモリ（ＲＡＭ）デバイスに移動させることを含む、請求項１に記載の方法。
【請求項５】
前記第１の期間および前記第２の期間の前に、第３の期間中に前記プロセッサを使用して前記第２のＯＳを実行することと、
前記第１の期間の前に、前記メモリ階層の前記より低いレベルに保存すべく、前記第２のＯＳに対応する１つまたは複数のページ・テーブル・エントリを選択することと
をさらに含む、請求項１に記載の方法。
【請求項６】
前記第２のＯＳに対応する前記１つまたは複数のページ・テーブル・エントリを選択することは、
前記第３の期間中に前記プロセッサ上で前記第２のＯＳを実行するとき、メモリ・アドレス変換を実行すべく、最後に使用されてから経つ時間が最も短い（ＭＲＵ）前記１つまたは複数のページ・テーブル・エントリを特定することを含む、請求項５に記載の方法。
【請求項７】
前記第１の期間中に前記第１のＯＳを実行することを開始する前に、前記選択された１つまたは複数のページ・テーブル・エントリを不揮発性ストレージ・デバイスに保存することをさらに含む、請求項５に記載の方法。
【請求項８】
前記第２のＶＭの前記第２のＯＳに対応する前記ページ・テーブル・エントリをプリロードすることは、
前記ページ・テーブル・エントリを前記より低いレベルから前記より高いレベルに移動させる前に、Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ（最後に使用されてから経つ時間が最も長い）（ＬＲＵ）アルゴリズムを使用して前記第１のＯＳに対応する前記より高いレベルにおける１つまたは複数のページ・テーブル・エントリを選択することと、
前記ページ・テーブル・エントリを前記より低いレベルから前記より高いレベルに移動させる前に、前記第１のＯＳに対応する前記選択された１つまたは複数のページ・テーブル・エントリを前記メモリ階層の前記より高いレベルから退去させることと
を含む、請求項１に記載の方法。
【請求項９】
コンピューティング・システムであって、
第１の期間にわたって第１の仮想マシン（ＶＭ）に対応する第１のオペレーティング・システム（ＯＳ）を実行するように構成されたプロセッサと、
ハイパーバイザと
を備え、前記ハイパーバイザは、
前記第１の期間が終了する前に、第２のＶＭの第２のＯＳに対応するページ・テーブル・エントリをメモリ階層のより低いレベルからより高いレベルに移動させることによって前記ページ・テーブル・エントリをプリロードすることであって、前記より高いレベルは、前記より低いレベルと比べて前記メモリ階層において前記プロセッサにより近い、前記プリロードすること、および
前記第１の期間が終了した後、第２の期間にわたって前記第２のＶＭに対応する前記第２のＯＳを実行することを開始するよう前記プロセッサに命令すること
を行うように構成される、コンピューティング・システム。
【請求項１０】
前記第１の期間は、前記第１のＶＭに割り当てられた事前定義された期間に対応し、前記第２の期間は、前記第２のＶＭに割り当てられた事前定義された期間に対応する、請求項９に記載のコンピューティング・システム。
【請求項１１】
前記第１の期間中に前記第１のＯＳを実行しているとき前記第２のＯＳはアイドルであり、前記第２の期間中に前記第２のＯＳを実行しているとき前記第１のＯＳはアイドルである、請求項１０に記載のコンピューティング・システム。
【請求項１２】
前記ハイパーバイザは、前記ページ・テーブル・エントリを前記より低いレベルから前記より高いレベルに移動させる場合、前記ページ・テーブル・エントリをストレージ・デバイス内のログ・ファイルからランダム・アクセス・メモリ（ＲＡＭ）デバイスに移動させるように構成される、請求項９に記載のコンピューティング・システム。
【請求項１３】
前記ハイパーバイザは、
前記第１の期間および前記第２の期間の前に、第３の期間中に前記第２のＯＳを実行するよう前記プロセッサに命令すること、および
前記第１の期間の前に、前記メモリ階層の前記より低いレベルに保存すべく、前記第２のＯＳに対応する１つまたは複数のページ・テーブル・エントリを選択すること
を行うように構成される、請求項９に記載のコンピューティング・システム。
【請求項１４】
前記第２のＯＳに対応する前記１つまたは複数のページ・テーブル・エントリを選択することは、
前記第３の期間中に前記プロセッサ上で前記第２のＯＳを実行するとき、メモリ・アドレス変換を実行すべく、最後に使用されてから経つ時間が最も短い（ＭＲＵ）前記１つまたは複数のページ・テーブル・エントリを特定することを含む、請求項１３に記載のコンピューティング・システム。
【請求項１５】
前記ハイパーバイザは、前記第１の期間中に前記第１のＯＳを実行することを開始する前に、前記選択された１つまたは複数のページ・テーブル・エントリを不揮発性ストレージ・デバイスに保存するように構成される、請求項１３に記載のコンピューティング・システム。
【請求項１６】
仮想マシン（ＶＭ）の間で切り換えるためのコンピュータ・プログラムであって、
前記コンピュータ・プログラムのコンピュータ可読プログラム・コードは、
第１の期間にわたって第１の仮想マシン（ＶＭ）に対応する第１のオペレーティング・システム（ＯＳ）を実行するようプロセッサに命令すること、
前記第１の期間が終了する前に、第２のＶＭの第２のＯＳに対応するページ・テーブル・エントリをメモリ階層のより低いレベルからより高いレベルに移動させることによって前記ページ・テーブル・エントリをプリロードすることであって、前記より高いレベルは、前記より低いレベルと比べて前記メモリ階層において前記プロセッサにより近い、前記プリロードすること、および
前記第１の期間が終了した後、第２の期間にわたって前記プロセッサを使用して前記第２のＶＭに対応する前記第２のＯＳを実行するよう前記プロセッサに命令すること
を行うように、１つまたは複数のコンピュータ・プロセッサによって実行可能である、コンピュータ・プログラム。
【請求項１７】
前記第１の期間は、前記第１のＶＭに割り当てられた事前定義された期間に対応し、前記第２の期間は、前記第２のＶＭに割り当てられた事前定義された期間に対応する、請求項１６に記載のコンピュータ・プログラム。
【請求項１８】
前記第１の期間中に前記第１のＯＳを実行しているとき前記第２のＯＳはアイドルであり、前記第２の期間中に前記第２のＯＳを実行しているとき前記第１のＯＳはアイドルである、請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
前記コンピュータ可読プログラム・コードは、
前記第１の期間および前記第２の期間の前に、第３の期間中に前記第２のＯＳを実行するよう前記プロセッサに命令すること、および
前記第１の期間の前に、前記メモリ階層の前記より低いレベルに保存すべく、前記第２のＯＳに対応する１つまたは複数のページ・テーブル・エントリを選択すること
を行うようにさらに実行可能である、請求項１６に記載のコンピュータ・プログラム。
【請求項２０】
前記第２のＶＭに対応する前記第２のＯＳに対応する前記ページ・テーブル・エントリをプリロードすることは、
前記ページ・テーブル・エントリを前記より低いレベルから前記より高いレベルに移動させる前に、Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ（最後に使用されてから経つ時間が最も長い）（ＬＲＵ）アルゴリズムを使用して前記第１のＯＳに対応する前記より高いレベルにおける１つまたは複数のページ・テーブル・エントリを選択すること、および
前記ページ・テーブル・エントリを前記より低いレベルから前記より高いレベルに移動させる前に、前記第１のＯＳに対応する前記選択された１つまたは複数のページ・テーブル・エントリを前記メモリ階層の前記より高いレベルから退去させること
を含む、請求項１６に記載のコンピュータ・プログラム。
【国際調査報告】
2018536219.tif 000009
2018536219.tif 000010