(57)【要約】  物理計算機の計算機リソースを１以上の論理区画に割り当てるハイパバイザは、記論理区画に割り当てる計算機リソースを前記論理区画に割り当て、前記計算機リソースのメモリに関してゲスト物理アドレスとホスト物理アドレスの関係をアドレス変換情報として生成し、アドレス変換情報でプロセッサの第１のアドレス変換部を有効化し、ゲストＯＳの起動が完了した後に、前記第１のアドレス変換部を無効化し、アプリケーションを実行させる。
2016067429.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとメモリを含む物理計算機の計算機リソースを１以上の論理区画に割り当てるハイパバイザが、前記論理区画上で稼動するゲストＯＳとアプリケーションを制御する仮想計算機システムの制御方法であって、
前記プロセッサは、
前記論理区画に割り当てるユニークなゲスト物理アドレスを、前記仮想計算機システムでユニークなホスト物理アドレスに変換する第１のアドレス変換部と、
前記アプリケーションが認識する仮想アドレスを、前記ゲスト物理アドレスへ変換する第２のアドレス変換部とを含み、
前記制御方法は、
前記ハイパバイザが、前記論理区画に割り当てる前記計算機リソースのサブセットを決定し、当該サブセットを前記論理区画に割り当てる第１のステップと、
前記ハイパバイザが、前記サブセットのメモリに関して前記ゲスト物理アドレスとホスト物理アドレスの関係をアドレス変換情報として生成する第２のステップと、
前記ハイパバイザが、前記アドレス変換情報で前記第１のアドレス変換部を有効化する第３のステップと、
前記ハイパバイザが、前記ゲストＯＳの起動開始を指令する第４のステップと、
前記ゲストＯＳが起動する第５のステップと、
前記ハイパバイザが、前記ゲストＯＳの起動完了を取得する第６のステップと、
前記ハイパバイザが、前記ゲストＯＳの起動が完了した後に、前記第１のアドレス変換部を無効化する第７のステップと、
前記アプリケーションが実行を開始する第８のステップと、
を含むことを特徴とする仮想計算機システムの制御方法。
【請求項２】
請求項１に記載の仮想計算機システムの制御方法であって、
前記ハイパバイザが、前記アプリケーションの終了を検出する第９のステップと、
前記ハイパバイザが、前記第１のアドレス変換部を再度有効化する第１０のステップと、
前記ゲストＯＳが、シャットダウンの指令を受け付けて終了する第１１のステップと、をさらに含むことを特徴とする仮想計算機システムの制御方法。
【請求項３】
請求項１に記載の仮想計算機システムの制御方法であって、
前記第２のステップは、
前記ゲスト物理アドレスと前記ホスト物理アドレスが同一の値であるアドレス対を前記アドレス変換情報として生成することを特徴とする仮想計算機システムの制御方法。
【請求項４】
請求項１に記載の仮想計算機システムの制御方法であって、
前記物理計算機は、所定のホスト物理アドレスにマップされた物理Ｉ／Ｏデバイスをさらに有し、
前記第１のステップは、
前記物理Ｉ／Ｏデバイスと同一の番号のゲスト物理アドレスに仮想Ｉ／Ｏデバイスをマップして前記論理区画に割り当てるステップを含み、
前記第７のステップは、
前記仮想Ｉ／Ｏデバイスに設定された状態を前記物理Ｉ／Ｏデバイスに設定するステップを含むことを特徴とする仮想計算機システムの制御方法。
【請求項５】
請求項４に記載の仮想計算機システムの制御方法であって、
前記物理Ｉ／Ｏデバイスは、グローバルタイマカウンタを有する高精度イベントタイマで、仮想Ｉ／Ｏデバイスは、グローバルタイマカウンタを有する仮想高精度イベントタイマであって、
前記第７のステップは、
前記ハイパバイザが、前記仮想高精度イベントタイマのグローバルタイマカウンタの値を取得し、前記高精度イベントタイマのグローバルタイマカウンタに設定することを特徴とする仮想計算機システムの制御方法。
【請求項６】
請求項１に記載の仮想計算機システムの制御方法であって、
前記プロセッサは、
Ｉｎｔｅｌ社ＣＰＵ規定のＥＰＴ（Ｅｘｔｅｎｄｅｄ  Ｐａｇｅ  Ｔａｂｌｅ）、もしくはＡＭＤ社ＣＰＵ規定のＮＰＴ（Ｎｅｓｔｅｄ  ＰａｇｅＴａｂｌｅ）に準拠し、
前記第３のステップは、
前記ＥＰＴまたはＮＰＴに対応するホストページテーブルを指定することを特徴とする仮想計算機システムの制御方法。
【請求項７】
請求項１に記載の仮想計算機システムの制御方法であって、
前記仮想計算機システムは、前記アプリケーションの実行開始および終了を管理するアプリケーションマネージャをさらに有し、
前記第７のステップは、
前記アプリケーションマネージャが、前記ゲストＯＳの起動が完了したことを検出して、前記ハイパバイザに前記ゲストＯＳの起動完了を通知するステップと、
前記ハイパバイザが、前記通知を受け付けて、前記第１のアドレス変換部を無効化するステップと、
を含むことを特徴とする仮想計算機システムの制御方法。
【請求項８】
請求項７に記載の仮想計算機システムの制御方法であって、
前記ハイパバイザが、前記通知を受け付けて、前記第１のアドレス変換部を無効化するステップは、
前記ハイパバイザが、前記第１のアドレス変換部に設定されたアドレス対の内部の、前記ゲスト物理アドレスと前記ホスト物理アドレスの値が同一であるか否かを判定するステップと、
前記ハイパバイザが、前記判定が同一でない場合に、前記ゲスト物理アドレスと同一のホスト物理アドレスのメモリ領域を新たに確保するステップと、
前記ハイパバイザが、前記論理区画に割り当てられたメモリのサブセットのデータを、前記新たに確保されたメモリ領域にコピーするステップと、
前記ハイパバイザが、前記第１のアドレス変換部に対して、前記ゲスト物理アドレスと同一の値を前記ホスト物理アドレスに対して設定するステップと、
を含むことを特徴とする仮想計算機システムの制御方法。
【請求項９】
請求項８に記載の仮想計算機システムの制御方法であって、
前記ハイパバイザが、前記判定が同一でない場合に、前記ゲスト物理アドレスと同一のホスト物理アドレスのメモリ領域を新たに確保するステップは、
確保対象のメモリ領域が、他の論理区画に対して割り当て済みか否かを判定するステップと、
前記判定結果が割り当て済みの場合に、前記論理区画を他の物理計算機に移動させるステップと、
を含むことを特徴とする仮想計算機システムの制御方法。
【請求項１０】
プロセッサとメモリを含む物理計算機と、
前記物理計算機の計算機リソースを１以上の論理区画に割り当てるハイパバイザと、
前記論理区画上で稼動するゲストＯＳとアプリケーションとを有する仮想計算機システムであって、
前記プロセッサは、
前記論理区画に割り当てるユニークなゲスト物理アドレスを、前記仮想計算機システムでユニークなホスト物理アドレスに変換する第１のアドレス変換部と、
前記アプリケーションが認識する仮想アドレスを、前記ゲスト物理アドレスへ変換する第２のアドレス変換部とを含み、
前記ハイパバイザは、
前記論理区画に割り当てる前記計算機リソースのサブセットを決定し、当該サブセットを前記論理区画に割り当て、前記サブセットのメモリに関して前記ゲスト物理アドレスとホスト物理アドレスの関係をアドレス変換情報として生成し、
前記アドレス変換情報で前記第１のアドレス変換部を有効化し、
前記ゲストＯＳの起動開始を指令して、前記ゲストＯＳを起動させ、
前記ゲストＯＳの起動完了を取得し、前記ゲストＯＳの起動が完了した後に、前記第１のアドレス変換部を無効化し、
前記アプリケーションが実行を開始することを特徴とする仮想計算機システム。
【請求項１１】
請求項１０に記載の仮想計算機システムであって、
前記ハイパバイザが、
前記アプリケーションの終了を検出した後に、前記第１のアドレス変換部を再度有効化し、
前記ゲストＯＳが、
シャットダウンの指令を受け付けて終了することを特徴とする仮想計算機システム。
【請求項１２】
請求項１０に記載の仮想計算機システムであって、
前記ハイパバイザが、
前記ゲスト物理アドレスと前記ホスト物理アドレスが同一の値であるアドレス対を前記アドレス変換情報として生成することを特徴とする仮想計算機システム。
【請求項１３】
請求項１０に記載の仮想計算機システムであって、
前記物理計算機は、所定のホスト物理アドレスにマップされた物理Ｉ／Ｏデバイスをさらに有し、
前記ハイパバイザが、
前記物理Ｉ／Ｏデバイスと同一の番号のゲスト物理アドレスに仮想Ｉ／Ｏデバイスをマップして前記論理区画に割り当て、
前記仮想Ｉ／Ｏデバイスに設定された状態を前記物理Ｉ／Ｏデバイスに設定することを特徴とする仮想計算機システム。
【請求項１４】
請求項１３に記載の仮想計算機システムであって、
前記物理Ｉ／Ｏデバイスは、グローバルタイマカウンタを有する高精度イベントタイマで、仮想Ｉ／Ｏデバイスは、グローバルタイマカウンタを有する仮想高精度イベントタイマであって、
前記ハイパバイザが、
前記仮想高精度イベントタイマのグローバルタイマカウンタの値を取得し、前記高精度イベントタイマのグローバルタイマカウンタに設定することを特徴とする仮想計算機システム。
【請求項１５】
請求項１０に記載の仮想計算機システムであって、
前記プロセッサは、
Ｉｎｔｅｌ社ＣＰＵ規定のＥＰＴ（Ｅｘｔｅｎｄｅｄ  Ｐａｇｅ  Ｔａｂｌｅ）、もしくはＡＭＤ社ＣＰＵ規定のＮＰＴ（Ｎｅｓｔｅｄ  ＰａｇｅＴａｂｌｅ）に準拠し、
前記ハイパバイザは、
前記ＥＰＴまたはＮＰＴに対応するホストページテーブルを指定することを特徴とする仮想計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機システムに関する。
【背景技術】
【０００２】
近年の半導体技術の進歩とプロセス微細化の進展により、ＣＰＵに搭載される演算コア（以下、ＣＰＵコア）は増加する傾向にあり、サーバ機向けのＣＰＵでは１５コア／ソケット以上の製品も存在する。１つの物理サーバでは、４ソケットの場合６０コアとなり、また、８ソケットの場合は１２０コアものＣＰＵコアが搭載される。【０００３】
しかし、ユーザの用途やアプリケーションは単一、もしくは少数のコアにしか対応しない場合が多い。そこで、１つの物理サーバを複数の論理的な区画（Ｌｏｇｉｃａｌ  Ｐａｒｔｉｔｉｏｎ，以下、ＬＰＡＲ）に分割し、ＬＰＡＲ毎にＯＳ（ゲストＯＳ）を稼働させる論理分割が普及している。【０００４】
また、半導体の進歩はメモリの大容量化を招き、インメモリＤＢと呼ばれる新しいタイプのデータベースが台頭した。インメモリＤＢは、従来のＤＢと異なりＤＢデータをすべてメモリ上に格納するため、検索クエリに対して高速に応答することができる。このため、インメモリＤＢは、ビッグデータに対する多様な検索とＢＩ（ｂｕｓｉｎｅｓｓ  ｉｎｔｅｌｌｉｇｅｎｃｅ）の高度化を実現している。今後は、ＬＰＡＲ上でインメモリＤＢを動作させるケースも増えると考えられる。【０００５】
上述論理分割では、ハイパバイザと呼ばれるコンポーネントがＣＰＵやメモリ、ＩＯ等の計算機資源を管理し、各ＬＰＡＲに計算機資源を分配している。ハイパバイザによる計算機資源の分配方法に着目すると、計算機資源は大別して、以下の２種類に分けられる。
（１）アドレス等により空間的に分配される占有資源（例：システムメモリ）。
（２）時間的に分割して複数のゲストＯＳで利用される共有資源（例：タイマ等のレガシーＩ／Ｏ）。【０００６】
上記（１）に分類される占有資源の分配に関し、通常のゲストＯＳはゼロアドレスから開始されるメモリマップでないとブートできないＯＳが普及している。そこでサーバの論理分割においては、アプリケーションが認識する仮想アドレス（ＶＡ：Ｖｉｒｔｕａｌ  Ａｄｄｒｅｓｓ）からゲストＯＳが認識するゲスト物理アドレス（ＧＰＡ：Ｇｕｅｓｔ  Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ）への変換（ＶＡ−＞ＧＰＡ）に加えて、ゲスト物理アドレスの物理的なメモリ位置を指定するホスト物理アドレス（ＨＰＡ：Ｈｏｓｔ  Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ）への変換（ＧＰＡ−＞ＨＰＡ）の２段階のアドレス変換を行う必要がある。【０００７】
一方、上記（２）の共有資源の分配に関して、ゲストＯＳからの共有資源に対応するアクセスを検出し、複数のＯＳから共有されるデバイスを保護する必要がある。そこでハイパバイザは、共有資源に対応したアドレスへのアクセスを検出し、ゲストＯＳからの読み書き模擬（エミュレーション）する。【０００８】
上記（２）の共有資源へのアクセスでは、ハイパバイザがゲスト物理アドレスＧＰＡの特定範囲へのアクセスを検出する。特定範囲へのアクセスを検出すると、ハイパバイザは制御をエミュレーションに移して実行する機能を提供している。この呼び出し機能は、ハイパバイザのみが制御可能な特定のページテーブルの属性であるｐｒｅｓｅｎｔビット（＝０  ｏｒ  １）を参照することで実現される。【０００９】
上記（１）の２段階のアドレス変換については、ＣＰＵのハードウェアで支援する機能（仮想化支援機能ＶＴ−ｘ等）が知られている。仮想化支援機能としては、例えば、ｘ８６系ＣＰＵでは、ＩＮＴＥＬ社のＥＰＴ（Ｅｘｔｅｎｄｅｄ  Ｐａｇｅ  Ｔａｂｌｅｓ）や、ＡＭＤ社のＮＰＴ（Nested Page Table）が知られている。【００１０】
ｘ８６系ＣＰＵでは、まず、ＴＬＢ（Translation Lookaside Buffer）で仮想アドレスからホスト物理アドレスへの変換を行うが、ＴＬＢミスが発生するとハードウェア（ＥＰＴ）がページテーブルをたどって物理アドレスを得て、ＴＬＢに対して変換するアドレスをセットする。【００１１】
ｘ８６系ＣＰＵを６４ｂｉｔ化したｘ６４アーキテクチャ（またはＡＭＤ６４アーキテクチャ）ではアドレス空間が拡張されており、ｘ６４アーキテクチャのＥＰＴでは、４段の多段ページテーブルを用いる。ｘ６４アーキテクチャでＴＬＢミスが発生すると、ＥＰＴによるゲストＯＳのテーブルウォークは、各段ごとにハイパバイザのページテーブルを用いて物理アドレスに変換してからメモリアクセスを行う必要がある。このため。多段ページテーブル（ＰＭＬ４、ＰＤＰ、ＰＤＥ、ＰＴＥ）が各４段（Ｌ１〜Ｌ４）場合は、ゲストＯＳのページテーブルの起点（先頭アドレス＝ＣＲ３）の変換を含めると、最大で（１＋４）×４＝２０回のメモリアクセスが必要である。【００１２】
なお、ＰＭＬ４＝Page Map Level 4、ＰＤＰ＝Page Directory Pointer、ＰＤＥ＝Page Directory entry、ＰＴＥ＝Page Table Entryである。また、ＡＭＤ６４アーキテクチャのＣＰＵで、ＴＬＢミスが発生すると、ＮＰＴのハードウェアはゲストＯＳのページテーブルをたどってゲスト空間のアドレスを得る。ＮＰＴのハードウェアは、このアドレス空間を入力として、再度、ＶＭＭのページテーブルをたどって物理アドレスに変換する。ＮＰＴのハードウェアは、変換された物理アドレスをＴＬＢに書き込む。このＡＭＤ６４アーキテクチャのＮＰＴについても、上述のＥＰＴと同様であり、アドレス変換のオーバヘッドが発生する。【００１３】
上記ＥＰＴでＴＬＢミスした場合に、２段階のアドレス変換に起因するオーバヘッドを削減する方法として、パラバーチャル仮想化技術（Ｘｅｎ／ＤｏｍＵカーネル）や特許文献１が知られている。【００１４】
パラバーチャル仮想化技術では、ゲストＯＳのメモリ管理モジュールを改変し、非ゼロアドレスから開始されるＧＰＡアドレス空間でもゲストＯＳを起動可能とする。本技術によれば、ゲストＯＳが管理するページテーブルにＶＡ−＞ＨＰＡの変換内容を格納し、上記ＥＰＴを無効化することができ、２段階のアドレス変換に関連するオーバヘッドを削減できる。【００１５】
一方、特許文献１は、レジスタ常駐型変換技術であり、ＣＰＵがレジスタベースで少数のアドレス変換情報を保持する。ハイパバイザが本レジスタに対してＧＰＡ−＞ＨＰＡのアドレス変換情報をセットアップすることで、ＥＰＴのページテーブル参照なしにＶＡ−＞ＨＰＡのアドレス変換を実現できる。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】米国特許第５０７７６５４号
【発明の概要】
【発明が解決しようとする課題】
【００１７】
上述したＥＰＴのページテーブル参照は、ＣＰＵのＴＬＢミスを契機に発生する。そのため、参照するアドレス範囲が広いインメモリＤＢをＬＰＡＲ上で稼働させる際には、ＴＬＢミスが発生しやすく、ＥＰＴのページテーブル参照によるオーバヘッドで、処理性能が低下する場合があった。なお、インメモリＤＢに限らず、メモリ上で広大なアドレス範囲をアクセスするアプリケーションをＬＰＡＲ上で稼働させると、同様に処理性能を低下させる場合があった。【００１８】
ＥＰＴのページテーブル参照のオーバヘッドを回避するには、ゲストＯＳのメモリ管理モジュールを改変するか、ＣＰＵにレジスタ常駐型変換技術を適用する必要がある。しかし、メモリ管理モジュールを改変するには、ソースコードが開示されて、かつ、改変が許可されている必要があり、バイナリ形式で提供されるＯＳには適用できない。また、上記ｘ６４アーキテクチャやＡＭＤ６４アーキテクチャ等の既存のＣＰＵに、上記特許文献１の技術を実装することは難しい。【００１９】
したがって、既存のプロセッサである上記ＩＮＴＥＬ社のｘ６４アーキテクチャのＣＰＵを使用し、かつ、ＯＳのメモリ管理モジュールの改変が許可されていないＯＳ（または、物理サーバで使用可能なＯＳ＝０番地を含むアドレス空間で起動）を利用する場合、インメモリＤＢ等のアクセス範囲の広いアプリケーションをＬＰＡＲ上で稼働させると、処理性能を低下させる場合があった。【００２０】
そこで本発明は、既存のＣＰＵを使用する仮想計算機システムでゲストＯＳを改変することなく稼働させて、２段階のアドレス変換に起因するオーバヘッドを削減することを目的とする。
【課題を解決するための手段】
【００２１】
本発明は、プロセッサとメモリを含む物理計算機の計算機リソースを１以上の論理区画に割り当てるハイパバイザが、前記論理区画上で稼動するゲストＯＳとアプリケーションを制御する仮想計算機システムの制御方法であって、前記プロセッサは、前記論理区画に割り当てるユニークなゲスト物理アドレスを、前記仮想計算機システムでユニークなホスト物理アドレスに変換する第１のアドレス変換部と、前記アプリケーションが認識する仮想アドレスを、前記ゲスト物理アドレスへ変換する第２のアドレス変換部とを含み、前記制御方法は、前記ハイパバイザが、前記論理区画に割り当てる前記計算機リソースのサブセットを決定し、当該サブセットを前記論理区画に割り当てる第１のステップと、前記ハイパバイザが、前記サブセットのメモリに関して前記ゲスト物理アドレスとホスト物理アドレスの関係をアドレス変換情報として生成する第２のステップと、前記ハイパバイザが、前記アドレス変換情報で前記第１のアドレス変換部を有効化する第３のステップと、前記ハイパバイザが、前記ゲストＯＳの起動開始を指令する第４のステップと、前記ゲストＯＳが起動する第５のステップと、前記ハイパバイザが、前記ゲストＯＳの起動完了を取得する第６のステップと、前記ハイパバイザが、前記ゲストＯＳの起動が完了した後に、前記第１のアドレス変換部を無効化する第７のステップと、前記アプリケーションが実行を開始する第８のステップと、を含む。
【発明の効果】
【００２２】
本発明によれば、ゲストＯＳを改変することなく、既存のプロセッサを含む物理計算機でゲストＯＳをハイパバイザ上で稼働させて、２段階のアドレス変換に起因するオーバヘッドを削減することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施例を示し、仮想計算機システムの一例を示すブロック図である。
【図２】本発明の実施例を示し、ハイパバイザで行われる処理の一例を示すフローチャートである。
【図３】本発明の実施例を示し、物理アドレス空間及び仮想アドレス空間の一例を示すメモリマップである。
【図４Ａ】本発明の実施例を示し、資源割当情報の一例を示す図である。
【図４Ｂ】本発明の実施例を示し、ＬＰＡＲ属性情報の一例を示す図である。
【図５Ａ】本発明の実施例を示し、ゲストページテーブルと仮想アドレスの関係を示すブロック図である。
【図５Ｂ】本発明の実施例を示し、ゲストページテーブルのフォーマットを示す図の前半部である。
【図５Ｃ】本発明の実施例を示し、ゲストページテーブルのフォーマットを示す図の後半部である。
【図６Ａ】本発明の実施例を示し、ホストページテーブルと仮想アドレスの関係を示すブロック図である。
【図６Ｂ】本発明の実施例を示し、ホストページテーブルのフォーマットを示す図の前半部である。
【図６Ｃ】本発明の実施例を示し、ホストページテーブルのフォーマットを示す図の後半部である。
【図７】本発明の実施例を示し、ハイパバイザで行われるＥＰＴの無効化処理の一例を示すフローチャートである。
【図８】本発明の実施例を示し、ＨＰＥＴレジスタのフォーマットの一例を示す図である。
【図９】本発明の実施例を示し、ＬＰＡＲを設定する画面の一例を示す画面イメージである。
【図１０】本発明の実施例を示し、ＬＰＡＲのマイグレーションを行った後の物理計算機のメモリマップである。
【発明を実施するための形態】
【００２４】
以下、本発明の実施例について添付図面を用いて説明する。
【００２５】
図１は、本発明の実施例を示し、仮想計算機システムの一例を示すブロック図である。物理計算機２４１ａ〜２４１ｃでは、ハイパバイザ２１０上で稼働するゲストＯＳ２２６ａ、２２６ｂが仮想計算機として提供される。物理計算機２４１ａ〜２４１ｃはデータセンタ（図中、ＤＣ）内ネットワーク２３１に接続される。
【００２６】
データセンタ内ネットワーク２３１は外部ネットワーク２３３に接続される。外部ネットワーク２３３に接続された図示しない計算機から、物理計算機２４１ａ〜２４１ｃのゲストＯＳ２２６ａ、２２６ｂまたはアプリケーション２２７ａ、２２７ｂを利用することができる。
【００２７】
また、データセンタ内ネットワーク２３１には、物理計算機２４１ａ〜２４１ｃの論理区画（ＬＰＡＲ）２２１ａ、２２１ｂやゲストＯＳ２２６ａ、２２６ｂを制御するＬＰＡＲマネージャ２３２と、ゲストＯＳ２２６ａ、２２６ｂ上で稼働するアプリケーション２２７ａ、２２７ｂを制御するアプリケーションマネージャ２３０と、プログラムやデータを格納するストレージサブシステム２４５が接続される。なお、ＬＰＡＲマネージャ２３２と、アプリケーションマネージャ２３０は、それぞれ入力装置と表示装置を備えた計算機で構成される。
【００２８】
以下の説明では、物理計算機２４１ａ〜２４１ｃの総称を、添え字ａ〜ｃのない符号２４１で表す。他の構成要素についても同様であり、構成要素の総称を、添え字のない符号で表す。
【００２９】
＜計算機の構成＞
本発明を実施する物理計算機２４１ａ〜２４１ｃについて、図１を参照しながら説明する。なお、物理計算機２４１ａ〜２４１ｃは同様の構成であるので、以下では物理計算機２４１ａについて説明する。
【００３０】
物理計算機２４１ａは、物理計算機資源２０１として物理ＣＰＵ２０２ａ〜２０２ｄと、物理メモリ２０３ａ〜２０３ｄと、ＬＰＡＲ２２１へ占有割当を行うＩ／Ｏデバイス２０４ａ、２０４ｃと、複数のＬＰＡＲ２２１で共有割当を行うＩ／Ｏデバイス２０５と、を含む。
【００３１】
占有割当を行うＩ／Ｏデバイス２０４ａ、２０４ｃは、例えば、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）やＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）である。また、複数のＬＰＡＲ２２１で共有割当を行うＩ／Ｏデバイス２０５としては、物理計算機資源２０１に含まれるＨＰＥＴ（Ｈｉｇｈ  Ｐｒｅｃｉｓｉｏｎ  Ｅｖｅｎｔ  Ｔｉｍｅｒ：高精度イベントタイマ）等のタイマが含まれる。
【００３２】
なお、物理ＣＰＵ２０２ａは、１つのソケットに複数のＣＰＵコアを含むマルチコアＣＰＵで構成され、物理ＣＰＵ２０２ｂ〜２０２ｄもそれぞれソケット単位で示す。以下では、物理ＣＰＵ２０２ａ〜２０２ｄとして、前記従来例に示したｘ６４アーキテクチャの仮想化支援機能（ＥＰＴ等）を有するＣＰＵを採用した例を示す。
【００３３】
本実施例では、物理計算機２４１ａの物理計算機資源２０１を２つのＬＰＡＲ２２１ａ、２２１ｂへ割り当てる。このため、ＬＰＡＲ２２１ａ（ＬＰＡＲ＃１）に割り当てる物理計算機資源２０１をサブセット２０６ａとし、ＬＰＡＲ２２１ｂ（ＬＰＡＲ＃２）に割り当てる物理計算機資源２０１をサブセット２０６ｂとする。
【００３４】
サブセット２０６ａは、物理ＣＰＵ２０２ａ、２０２ｂと、物理メモリ２０３ａ、２０３ｂと、占有割当を行うＩ／Ｏデバイス２０４ａと、共有割当を行うＩ／Ｏデバイス２０５と、を含む。サブセット２０６ｂは、物理ＣＰＵ２０２ｃ、２０２ｄと、物理メモリ２０３ｂ、２０３ｄと、占有割当を行うＩ／Ｏデバイス２０４ｃと、複数のＬＰＡＲ２２１に共有割当を行うＩ／Ｏデバイス２０５と、を含む。
【００３５】
なお、物理メモリ２０３ａ〜２０３ｄの所定の予約領域にはハイパバイザ２１０がロードされて、所定の契機で物理ＣＰＵ２０２ａ〜２０２ｄによって実行される。ハイパバイザ２１０は、ＬＰＡＲマネージャ２３２からの指令に応じて、物理計算機資源２０１からサブセット２０６ａ、２０６ｂを取得して、ＬＰＡＲ２２１ａ、２２１ｂへ割り当てる。そして、ハイパバイザ２１０は、ＬＰＡＲ２２１ａ、２２１ｂでそれぞれゲストＯＳ２２６ａ、２２６ｂを起動させる。
【００３６】
各ＬＰＡＲ２２１ａ、２２１ｂのゲストＯＳ２２６ａ、２２６ｂは、アプリケーションマネージャ２３０からの指令に応じてアプリケーション２２７ａ、２２７ｂをそれぞれ稼働させる。なお、本実施例では、２つのＬＰＡＲ２２１をハイパバイザ２１０が物理計算機資源２０１に割り当てる例を示したが、任意の数のＬＰＡＲ２２１及びゲストＯＳ２２６と、任意の数のアプリケーション２２７を稼働させることができる。
【００３７】
ここで、ハイパバイザ２１０の各機能部はプログラムとして物理メモリ２０３にロードされ、物理ＣＰＵ２０２によって実行される。物理ＣＰＵ２０２は、各機能部のプログラムに従って処理を実行することによって、所定の機能を提供する機能部として稼働する。例えば、物理ＣＰＵ２０２は、ハイパバイザプログラムに従って処理を実行することでハイパバイザ２１０として機能する。他のプログラムについても同様である。さらに、物理ＣＰＵ２０２は、各プログラムで実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
【００３８】
ハイパバイザ２１０の各機能を実現するプログラム、テーブル等の情報は、ストレージサブシステム２４５や不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
【００３９】
＜ハイパバイザ及びＬＰＡＲの構成＞
次に、ハイパバイザ２１０は、ゲストＯＳ２２６及びアプリケーション２２７の実行を制御するＣＰＵ仮想化制御部２１１と、物理計算機資源２０１のサブセット２０６をＬＰＡＲ２２１に割り当てるリソース管理部２１２とを含む。
【００４０】
リソース管理部２１２は、サブセット２０６ａの物理ＣＰＵ２０２ａ、２０２ｂを仮想ＣＰＵ２２２ａ、２２２ｂとしてＬＰＡＲ２２１ａに割り当てる。リソース管理部２１２は、物理メモリ２０３ａ、２０３ｂを仮想メモリ２２３ａ、２２３ｂとしてＬＰＡＲ２２１ａに割り当てる。リソース管理部２１２は、Ｉ／Ｏデバイス２０４ａをＬＰＡＲ２２１ａに占有させて割り当てる。また、リソース管理部２１２は、物理的なＩ／Ｏデバイス２０５を仮想Ｉ／Ｏデバイス２２５ａとしてＬＰＡＲ２２１ａとＬＰＡＲ２２１ｂに共有させて割り当てる。同様に、リソース管理部２１２は、サブセット２０６ｂの物理資源を、仮想化した資源としてＬＰＡＲ２２１ｂに割り当てる。
【００４１】
リソース管理部２１２は、物理計算機資源２０１とＬＰＡＲ２２１に割り当てた仮想計算機資源を管理する資源割当情報２１５（図４Ａ）と、ＬＰＡＲ２２１の属性を管理するＬＰＡＲ属性２１８（図４Ｂ）とを含む。
【００４２】
本発明では、ハイパバイザ２１０がいずれかひとつのＬＰＡＲ２２１を高速モード（Ｆａｓｔ  ｍｏｄｅ）で稼働させることができ、ＬＰＡＲ属性２１８によって高速モードで稼働させるＬＰＡＲ２２１を特定する。
【００４３】
ＣＰＵ仮想化制御部２１１は、物理ＣＰＵ２０２のハードウェアによる仮想化支援機能を利用してゲストＯＳ２２６及びアプリケーション２２７を管理する仮想化制御部２１６と、仮想化支援機能のＥＰＴ（Ｅｘｔｅｎｄｅｄ  Ｐａｇｅ  Ｔａｂｌｅｓ）を利用してゲスト物理アドレス（ＧＰＡ：Ｇｕｅｓｔ  Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ）をホスト物理アドレス（ＨＰＡ：Ｈｏｓｔ  Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ）に変換するホストページテーブル制御部２１３と、を含む。
【００４４】
仮想化制御部２１６は、ゲスト状態エリアとホスト状態エリアを含むＶＭＣＳ（Virtual Machine Control Structure）２１７によって、ハイパバイザ２１０と、ゲストＯＳ２２６またはアプリケーション２２７の状態を管理する。なお、ＶＭＣＳ２１７の詳細については、Intel(R) 64 and IA-32 Architectures Software Developer Manuals (Sep 2014, 253668-052US)に記載されているとおりである。
【００４５】
ホストページテーブル制御部２１３は、上述のＥＰＴの生成、メンテナンスを行い、物理ＣＰＵがホストページテーブル２１４（第１のアドレス変換部）に格納したゲスト物理アドレス（ＧＰＡ）とホスト物理アドレス（ＨＰＡ）によってアドレス変換を行う。
【００４６】
また、ホストページテーブル制御部２１３は、前記従来例で述べたように、共有割当とした仮想Ｉ／Ｏデバイス２２５ａ、２２５ｂにゲストＯＳ２２６ａ、２２６ｂからのアクセスを検知すると、所定のエミュレーションを行って物理的なＩ／Ｏデバイス２０５に対する操作を実行する。
【００４７】
具体的には、ハイパバイザ２１０は、ホストページテーブル２１４において、共有資源のＩ／Ｏデバイス２０５のＭＭＩＯを割り当てたアドレスのプレゼンスビットを"０"に設定する。ゲストＯＳ２２６が当該アドレスにアクセスすると例外となって、ハイパバイザ２１０に制御が移るＶＭ−ｅｘｉｔが発生する。仮想化支援技術を適用した物理ＣＰＵ２０２では、ハイパバイザ２１０に制御が移るモードを、ＶＭＸルートモードとし、ゲストＯＳ２２６に制御が移るモードを、ＶＭＸノンルートモード（またはゲストモード）とする。
【００４８】
ハイパバイザ２１０の仮想化制御部２１６は、ＶＭ−ｅｘｉｔの発生要因がＭＭＩＯの例外であるので、Ｉ／Ｏデバイス２０５でエミュレーションを実行する。これにより、複数のＬＰＡＲ２２１に直接Ｉ／Ｏデバイス２０５を操作させるのを防いで、共有を実現する。
【００４９】
なお、ハイパバイザ２１０からゲストＯＳ２２６へ制御を移す契機は、ＶＭ−ｅｎｔｒｙ命令の実行である。
【００５０】
図１において、ハイパバイザ２１０がサブセット２０６ａを割り当てたＬＰＡＲ２２１ａでは、ゲストページテーブル２２８ａを含むゲストＯＳ２２６ａが稼働する。そして、ゲストＯＳ２２６ａではアプリケーション２２７ａが稼働する。
【００５１】
ゲストページテーブル２２８ａ（第２のアドレス変換部）は、アプリケーション２２７ａが認識する仮想アドレス（ＶＡ：Ｖｉｒｔｕａｌ  Ａｄｄｒｅｓｓ）とゲストＯＳ２２６ａが認識するゲスト物理アドレス（ＧＰＡ）を変換する。ゲストＯＳ２２６ａは、２２９論理Ｆ／Ｗ（ＦｉｒｍＷａｒｅ：ＢＩＯＳもしくはＥＦＩ）からゲスト物理アドレスの配置情報を取得する。
【００５２】
同様に、ハイパバイザ２１０がサブセット２０６ｂを割り当てたＬＰＡＲ２２１ｂでは、ゲストページテーブル２２８ｂを含むゲストＯＳ２２６ｂが稼働する。そして、ゲストＯＳ２２６ｂではアプリケーション２２７ｂが稼働する。
【００５３】
上述したハイパバイザ２１０のホストページテーブル制御部２１３は、ＥＰＴの生成、メンテナンスを行う。物理ＣＰＵはＥＰＴが有効の場合には、ゲストＯＳ２２６からゲスト物理アドレス（ＧＰＡ）を受け付けると、ホストページテーブル２１４を参照して、ホスト物理アドレス（ＨＰＡ）を取得して物理メモリ２０３へのアクセスを実現する。
【００５４】
なお、物理ＣＰＵ２０２のＥＰＴを利用するには、ＶＭＣＳ２１７のＶＭ−ｅｘｅｃｕｔｉｏｎ  ｃｏｎｔｒｏｌ  ｆｉｅｌｄの"ｅｎａｂｌｅ  ＥＰＴ"に所定値、例えば、"１"をセットすることで利用可能となる。なお、"ｅｎａｂｌｅ  ＥＰＴ"に"０"を設定した場合、ＥＰＴは無効化される。
【００５５】
＜アドレス空間＞
図３は、ハイパバイザ２１０が管理する物理アドレス空間及び仮想アドレス空間の一例を示すメモリマップである。図３は、物理計算機２４１ａのアドレス空間の一例を示す。
【００５６】
ハイパバイザ２１０は、物理メモリ２０３のアドレス空間であるホスト物理アドレス（ＨＰＡ）の０〜６２ＧＢまでをＬＰＡＲ２２１ａ、２２１ｂに割り当てる。また、ハイパバイザ２１０は、ホスト物理アドレスの６２ＧＢ以降６４ＧＢまでを、自身が使用する予約領域とする。
【００５７】
なお、ハイパバイザ２１０は、ＬＰＡＲ２２１ｂのホスト物理アドレス＝２ＧＢ〜４ＧＢの領域をゲスト物理アドレス＝２ＧＢ〜４ＧＢの領域に割り当てて共有させる。ゲスト物理アドレス＝２ＧＢ〜４ＧＢの領域のうち、共有資源のアドレスに関しては後述のホストＰＴ中の存在ビット（ｐｒｅｓｅｎｃｅ  ｂｉｔ）を無効化（０）に設定し直接のアクセスを禁止する。
【００５８】
ハイパバイザ２１０は、ＬＰＡＲ２２１ａをホスト物理アドレスの０〜２ＧＢと４ＧＢ〜３２ＧＢまでの範囲に割り当てる。ホスト物理アドレスの２ＧＢ以降４ＧＢ未満の領域は、共有資源のＭＭＩＯなどに割り当てるＩ／Ｏ空間（非メモリ領域）として設定し、Ｉ／Ｏデバイス２０５のＭＭＩＯ等が割り当てられる。上記非メモリの領域（ゲスト物理アドレス＝２〜４ＧＢ）の領域のうち、共有資源のアドレスに関しては後述のホストＰＴ中の存在ビット（ｐｒｅｓｅｎｃｅ  ｂｉｔ）を無効化（０）に設定し直接のアクセスを禁止する。そして、ハイパバイザ２１０は、ＬＰＡＲ２２１をホスト物理アドレスの２ＧＢ以降６２ＧＢまでの範囲に割り当てる。
【００５９】
次に、ゲストＯＳ２２６ａが認識するゲスト物理アドレス（ＧＰＡ）は、０〜２ＧＢと４ＧＢ〜３２ＧＢまでの範囲に割り当てられる。ゲストＯＳ２２６ａのゲスト物理アドレスは、ホスト物理アドレスと同一となる。そして、ゲスト物理アドレスの２ＧＢ以降４ＧＢ未満の領域はＩ／Ｏ空間として設定される。
【００６０】
ゲストＯＳ２２６ｂが認識するゲスト物理アドレスは、０〜２ＧＢと４ＧＢ〜３２ＧＢまでの範囲に割り当てられる。ゲストＯＳ２２６ｂのゲスト物理アドレスは、ホストページテーブル２１４で変換されて、ＬＰＡＲ２２１ａが使用する終端アドレスの３２ＧＢ以降から６２ＧＢまでのホスト物理アドレスとなる。ゲストＯＳ２２６ｂに割り当てられた共有資源のＩ／Ｏ空間（２ＧＢ〜４ＧＢ）は、ゲストＯＳ２２６ａと同一のホスト物理アドレスの２ＧＢ〜４ＧＢである。
【００６１】
次に、ＬＰＡＲ２２１ａのアプリケーション２２７ａが認識する仮想アドレス（ＶＡ）は、ゲストＯＳ２２６ａが割り当てた０〜最大値までの領域となる。仮想アドレス（ＶＡ）とゲスト物理アドレスの変換は、ゲストＯＳ２２６ａのゲストページテーブル２２８ａによって変換される。ＬＰＡＲ２２１ｂのアプリケーション２２７ｂが認識する仮想アドレスも、ＬＰＡＲ２２１ａのアプリケーションと同様であり、ゲストＯＳ２２６ｂが割り当てた０〜最大値までの領域となる。
【００６２】
図３において、ホスト物理アドレス＝０から割り当てられたゲストＯＳ２２６ａは、ゲスト物理アドレス＝ホスト物理アドレスであるので、ホストページテーブル２１４を使用せずに物理メモリ２０３へアクセスすることになる。
【００６３】
一方、ゲストＯＳ２２６ｂは、ホスト物理アドレスに割り当てられるホスト物理アドレスの領域は、ＬＰＡＲ２２１ａの分だけオフセットする。このため、ゲスト物理アドレスとホスト物理アドレスの変換は、ホストページテーブル制御部２１３のホストページテーブル２１４を用いて行われる。
【００６４】
以上のように、ＬＰＡＲ２２１ａは、ゲスト物理アドレスとホスト物理アドレスが同一でホストページテーブル２１４による変換が不要なアドレス空間に割り当てられる。一方、ＬＰＡＲ２２１ｂは、ゲスト物理アドレスに対応するホスト物理アドレスは、ホストページテーブル２１４による変換が必要なアドレス空間に割り当てられる。
【００６５】
したがって、ホスト物理アドレスが０から割り当てられたＬＰＡＲ２２１ａのゲストＯＳ２２６ａ及びアプリケーション２２７ａは、物理ＣＰＵ２０２のＥＰＴによるオーバヘッドのない高速なメモリアクセスを実現することが可能である。
【００６６】
また、共有割当を行う物理的なＩ／Ｏデバイス２０５のＭＭＩＯは、ホスト物理アドレスの共有資源のＩ／Ｏ空間（２ＧＢ〜４ＧＢ）に割り当てられる。各ＬＰＡＲ２２１ａ、２２１ｂの仮想Ｉ／Ｏデバイス２２５ａ、２２５ｂは同一のゲスト物理アドレスに割り当てることで共有割当が行われる。ただし、共有割り当てされたＩ／Ｏデバイス２０５については、ＬＰＡＲ＃２（２２１ｂ）からの直接アクセスは許可しない。本制御は、後述するホストＰＴ（２１４）中の存在ビット（ｐｒｅｓｅｎｃｅ  ｂｉｔ）で実現される。
【００６７】
＜テーブル＞
次に、ハイパバイザ２１０が管理する情報について説明する。図４Ａは、資源割当情報２１５の一例を示す図である。ハイパバイザ２１０が管理する資源割当情報２１５は、ＣＰＵ割当情報４１０と、メモリ割当情報４２０と、Ｉ／Ｏ割当情報４３０の３つのテーブルを含む。
【００６８】
ＣＰＵ割当情報４１０は、物理ＣＰＵ２０２とＬＰＡＲ２２１の割り当ての関係を保持する。ＣＰＵ割当情報４１０は、物理ＣＰＵ２０２のソケット番号を格納するＣＰＵ  Ｓｏｃｋｅｔ＃４１０１と、物理ＣＰＵコアの番号を格納するＣＰＵｃｏｒｅ＃４１０２と、割り当ての状態を格納するＭｏｄｅ４１０３と、当該物理ＣＰＵ２０２が割り当てられたＬＰＡＲ２２１の番号を格納するＬＰＡＲ＃４１０４がひとつのエントリに含まれる。
【００６９】
図示の例では、ソケット番号０、１の物理ＣＰＵ２０２ａ、２０２ｂの全てのコア０〜７がＬＰＡＲ＃１（２２１ａ）に割り当てられ、ソケット番号２、３の物理ＣＰＵ２０２ｃ、２０２ｄの全てのコア８〜１５がＬＰＡＲ＃２（２２１ｂ）に割り当てられたことを示す。
【００７０】
メモリ割当情報４２０は、ホスト物理アドレスに割り当てたＬＰＡＲ２２１等を管理する。メモリ割当情報４２０は、ゲスト物理アドレスのベースアドレスを格納するＧＰＡ  ｂａｓｅ４２０１と、ホスト物理アドレスのベースアドレスを格納するＨＰＡ  ｂａｓｅ４２０２と、割り当てられた領域の長さを格納するＬｅｎｇｔｈ４２０３と、当該ホスト物理アドレスに割り当てられたＬＰＡＲ２２１の番号を格納するＬＰＡＲ＃４２０４をひとつのエントリに含む。図示の例では、図３に示したホスト物理アドレス及ぶゲスト物理アドレスのアドレス空間を示す。
【００７１】
ＧＰＡ  ｂａｓｅ４２０１が"−１"のエントリは、ＬＰＡＲ２２１以外に割り当てられた領域を示し、例えば、共有資源のＩ／Ｏ空間やハイパバイザ２１０のプライベート領域である。
【００７２】
なお、ＬＰＡＲ＃４２０４が"０"のエントリは、ＬＰＡＲ２２１を割り当てない領域を示し、例えば、共有資源のＩ／Ｏ空間である。なお、ＬＰＡＲ＃４２０４が"−１"のエントリは、ＬＰＡＲ２２１を割り当てない予約領域で、例えば、ハイパバイザ２１０のプライベート領域である。
【００７３】
Ｉ／Ｏ割当情報４３０は、物理計算機２４１ａのＩ／Ｏデバイス２０４ａ、２０４ｃ、２０５を割り当てたＬＰＡＲ２２１を管理する情報である。Ｉ／Ｏ割当情報４３０は、Ｉ／ＯデバイスのＰＣＩデバイス番号を格納するＢＤＮ＃４３０１と、Ｉ／Ｏデバイスの種別を格納するＴｙｐｅ４３０２と、当該Ｉ／Ｏデバイスに割り当てたＭＭＩＯのアドレスを格納するＭＭＩＯ４３０３と、当該Ｉ／Ｏデバイスの割り当て状態を格納するＭｏｄｅ４３０４と、当該Ｉ／Ｏデバイスを割り当てたＬＰＡＲ２２１の番号を格納するＬＰＡＲ＃４３０５とをひとつのエントリに含む。
【００７４】
なお、Ｍｏｄｅ４３０４には、占有または共有の他、未割当の状態のいずれかが設定される。
【００７５】
図示の例では、ＬＰＡＲ＃４３０５＝１（２２１ａ）に占有で割り当てられたＩ／Ｏデバイス２０４ａがＦＣ−ＮＩＣで、ＬＰＡＲ＃４３０５＝２（２２１ｂ）に占有で割り当てられたＩ／Ｏデバイス２０４ｃがＦＣ−ＮＩＣであることを示す。また、ＨＰＥＴは、物理計算機２４１ａの特定の共有資源で、ＬＰＡＲ＃１、２に共有割当されたことを示す。また、ＨＰＥＴは、物理計算機２４１ａのオンボードデバイスであるので、ＢＤＮ＃４３０１は"−"となる。
【００７６】
図４Ｂは、ＬＰＡＲ属性２１８の一例を示す図である。ＬＰＡＲ属性２１８は、ハイパバイザ２１０が生成したＬＰＡＲ番号４４０のエントリと、高速モードを示すエントリ４４１を含む。図示の例では、エントリ４４１に"１"が設定されたＬＰＡＲ＃１（２２１ａ）が高速モードで稼働することを示す。なお、高速モードは、後述するように，ＥＰＴを無効化してゲストＯＳ２２６がホスト物理アドレスに直接アクセス可能な稼働モードである。一方、エントリ４４１の値が"０"ＬＰＡＲ２２１は、ＥＰＴを有効にしてホストページテーブル２１４を利用する通常モードで稼働する。
【００７７】
ただし、高速モードでは、ゲストＯＳ２２６のゲスト物理アドレスに対応するホスト物理アドレスに直接アクセス可能ではあるが、共有資源を割り当てるＩ／Ｏ空間についてはハイパバイザ２１０の管理下にある。このため、ゲストＯＳ２２６はＩ／Ｏ空間への直接のアクセスが制限される。
【００７８】
図５Ａは、ゲストＯＳ２２６ａが管理するゲストページテーブル２２８ａと仮想アドレスの関係を示すブロック図である。なお、ゲストＯＳ２２６ｂのゲストページテーブル２２８ｂも同様であるので、重複した説明を省略する。
【００７９】
図示の例は、４Ｋバイトのページでアドレスを管理する場合であり、アプリケーション２２７ａが認識する仮想アドレス（ＶＡ）５０１は、４８ビットで表現される。仮想アドレス（ＶＡ）５０１をゲスト物理アドレス（ＧＰＡ）５１１に変換するゲストページテーブル２２８ａは、前記従来例でも述べたように、４段のテーブルを有する。
【００８０】
ゲストページテーブル２２８ａのゲスト物理アドレス（先頭アドレス）は、ＶＭＣＳ２１７のゲスト状態エリアのＣＲ３制御レジスタ５３１に格納される。ゲストページテーブル２２８ａでは、このアドレスをゲストページテーブル２２８ａの起点として仮想アドレス（ＶＡ）５０１からゲスト物理アドレス（ＧＰＡ）５１１への変換が行われる。
【００８１】
仮想アドレス（ＶＡ）５０１は、３９〜４７ビットのＰＭＬ４（Page Map Level 4）と、３０〜３８ビットのPage Directory Pointerと、２１〜２９ビットのPage Directoryと、１２〜２０ビットのPage Tableと、０〜１１ビットのOffsetを含む。
【００８２】
ゲストページテーブル２２８ａは、ＣＲ３制御レジスタ５３１のアドレスを起点として、ＰＭＬ４＝Page Map Level 4のエントリ（ＰＭＬ４Ｅ）からPage Directory Pointer Tableのエントリ（ＰＤＰＴＥ）と、Page Directoryのエントリ（ＰＤＥ）と、Page Tableのエントリ（ＰＴＥ）を辿って、ゲスト物理アドレス（ＧＰＡ）５１１を得る。なお、ＣＲ３制御レジスタ５３１〜ページテーブルの参照はNested Pagingと呼ばれ、各テーブルがＬ１〜Ｌ４の４段で構成される。このため、前記従来例で述べたように、全てのテーブルを辿ると２０回のメモリアクセスが発生することになる。
【００８３】
図５Ｂ、図５Ｃは、ゲストページテーブル２２８ａのフォーマットを示す図である。ＰＭＬ４エントリフォーマット５５１と、ＰＤＰＴＥフォーマット５５２と、ＰＤＥフォーマット５５３と、ＰＴＥフォーマット５５４は、６４ビットの内、０ビットがプレゼンスビット５４１で、１〜６３ビットが制御情報５４２である。
【００８４】
プレゼンスビット５４１は、上述のように"０"を設定しておくことで、ゲストＯＳ２２６のアクセス時にＶＭ−ｅｘｉｔを発生させて、ハイパバイザ２１０でエミュレーションを実施させることができる。また、制御情報５４２は、アドレスオフセットや、リードやライトの可否などを設定することができる。
【００８５】
なお、上記ページモードは、物理ＣＰＵ２０２のＣＲ０．ＰＧ、ＣＲ４．ＰＡＥ、ＩＡ３２＿ＥＦＥＲ．ＬＭＥの制御レジスタ（図示省略）によって有効化することができる。
【００８６】
図６Ａは、ハイパバイザ２１０が管理するホストページテーブル２１４とゲスト物理アドレス（ＧＰＡ）の関係を示すブロック図である。
【００８７】
図示の例は、４Ｋバイトのページでアドレスを管理する場合であり、ゲストＯＳ２２６ａが認識するゲスト物理アドレス（ＧＰＡ）６０１は、４８ビットで表現される。ゲスト物理アドレス（ＧＰＡ）６０１をホスト物理アドレス（ＨＰＡ）６１１に変換するホストページテーブル２１４は、前記従来例でも述べたように、４段のテーブルを有する。
【００８８】
ホストページテーブル２１４のホスト物理アドレス（先頭アドレス）は、ＶＭＣＳ２１７のホスト状態エリアのＥＰＴポインタに格納される。ホストページテーブル２１４では、このアドレスを起点としてゲスト物理アドレス（ＧＰＡ）６０１からホスト物理アドレス（ＨＰＡ）６１１への変換が行われる。
【００８９】
ゲスト物理アドレス（ＧＰＡ）６０１は、上記図５Ａの仮想アドレスと同様に、３９〜４７ビットのＰＭＬ４と、３０〜３８ビットのPage Directory Pointerと、２１〜２９ビットのPage Directoryと、１２〜２０ビットのPage Tableと、０〜１１ビットのOffsetを含む。
【００９０】
ホストページテーブル２１４は、ＥＰＴポインタのアドレスを起点として、ＰＭＬ４のエントリ（ＰＭＬ４Ｅ）からＰＤＰＴのエントリ（ＰＤＰＴＥ）と、ＰＤのエントリ（ＰＤＥ）と、ＰＴのエントリ（ＰＴＥ）を辿って、ホスト物理アドレス（ＨＰＡ）６１１を得る。なお、ＥＰＴポインタ〜ページテーブルの参照は上述のNested Pagingであり、ゲストページテーブル２２８と同様に、各テーブルがＬ１〜Ｌ４の４段で構成される。このため、前記従来例で述べたように、全てのテーブルを辿ると２０回のメモリアクセスが発生することになる。
【００９１】
図６Ｂ、図６Ｃは、ホストページテーブル２１４のフォーマットを示す図である。ＰＭＬ４エントリフォーマット６５１と、ＰＤＰＴＥフォーマット６５２と、ＰＤＥフォーマット６５３と、ＰＴＥフォーマット６５４は、６４ビットの内、０ビットがプレゼンスビット６４１で、１〜６３ビットが制御情報６４２である。これらの情報は図５Ｂ，図５Ｃのゲストページテーブル２２８ａと同様である。
【００９２】
なお、上記ＥＰＴは、ＶＭＣＳ２１７内のＶＭ−ｅｘｅｃｕｔｉｏｎ  ｃｏｎｔｒｏｌ  ｆｉｅｌｄの"ｅｎａｂｌｅ  ＥＰＴ"に"１"をセットしてホストページテーブル２１４を指定することで有効化される。
【００９３】
＜ハイパバイザの処理＞
図２は、ハイパバイザ２１０で行われる処理の一例を示すフローチャートである。この処理は、ＬＰＡＲ２２１を生成または稼働（activate）させるときに実行される。例えば、ハイパバイザ２１０がＬＰＡＲマネージャ２３２からＬＰＡＲの生成要求（または稼働要求）と設定ファイルを受け付けたときに、本処理が開始される（１０１）。なお、本実施例では、設定ファイルにはＬＰＡＲに必要なリソースの情報に加えて、ＬＰＡＲの稼働モード（ＬＰＡＲ属性）が高速モードと通常モードの何れであるかを示す情報が付加される。
【００９４】
ステップ１０２では、ハイパバイザ２１０が設定ファイルを読み込んで、ＬＰＡＲに必要なリソースとＬＰＡＲの稼働モードを取得する。ステップ１０３で、ハイパバイザ２１０は上記取得したリソースと稼働モードに基づいて、ハードウェアリソースとソフトウェアリソースを決定する。ハイパバイザ２１０は、資源割当情報２１５を参照して、空きリソースから新たなＬＰＡＲへ割り当てるリソースを決定する。
【００９５】
ハイパバイザ２１０は、新たにＬＰＡＲを割り当てる場合、稼働モードが高速モードであれば、ホスト物理アドレスが０番地から開始されるアドレス空間を当該ＬＰＡＲに割り当てる。一方、稼働モードが高速モードで、ホスト物理アドレスが０番地から割り当てることができない場合は、この段階では、空いているホスト物理アドレスに当該ＬＰＡＲを割り当てる。
【００９６】
ハイパバイザ２１０は、新たなＬＰＡＲに割り当てたリソースを資源割当情報２１５に設定し、また、当該ＬＰＡＲの稼働モードをＬＰＡＲ属性２１８に設定する。
【００９７】
次に、ステップ１０４で、ハイパバイザ２１０は、新たなＬＰＡＲを割り当てたホスト物理アドレスとゲスト物理アドレスの関係を、ホストページテーブル２１４に設定する。ここで、ハイパバイザ２１０は、新たなＬＰＡＲに割り当てる物理計算機資源２０１のサブセット２０６の物理メモリ２０３に関するゲスト物理アドレスとホスト物理アドレスのアドレス変換情報を生成し、ページテーブル（ＰＴＥ）とする。
【００９８】
また、新たなＬＰＡＲにＩ／Ｏデバイス２０５を共有で割り当てる場合には、ハイパバイザ２１０が当該Ｉ／Ｏデバイス２０５のＭＭＩＯに対応するホスト物理アドレスのプレゼンスビットを"０"に設定する。
【００９９】
そして、ステップ１０５で、ハイパバイザ２１０はＶＭＣＳ２１７のＶＭ−ｅｘｅｃｕｔｉｏｎ  ｃｏｎｔｒｏｌ  ｆｉｅｌｄの"ｅｎａｂｌｅ  ＥＰＴ"に"１"を設定し、ホストページテーブル２１４を指定することでＥＰＴを有効化する。すなわち、ハイパバイザ２１０は、ステップ１０４で生成したアドレス変換情報でホストページテーブル２１４を有効化する。
【０１００】
ステップ１０６で、ハイパバイザ２１０は、ストレージサブシステム２４５からゲストＯＳ２２６のブートイメージを読み込んで、ゲストＯＳ２２６のローダを起動する。ハイパバイザ２１０はＶＭ−ｅｎｔｒｙ命令を実行してＶＭＸノンルートモードに切り替えて、新たなＬＰＡＲでゲストＯＳ２２６を起動させる。
【０１０１】
ゲストＯＳ２２６は、論理ファームウェア２２９から提供されるシステムメモリの配置情報にしたがってゲストページテーブル２２８ａを生成し、ゲスト物理アドレス空間中の２ＧＢ〜４ＧＢの領域をＩ／Ｏ空間として、０〜２ＧＢ、４〜３２ＧＢをシステムメモリ領域として認識する。
【０１０２】
次に、ステップ１０７では、ハイパバイザ２１０が、新たなＬＰＡＲでゲストＯＳ２２６の起動が完了したかを判定する。この判定は、アプリケーションマネージャ２３０が物理計算機２４１ａのゲストＯＳ２２６を監視して、起動が完了したことを検出するとハイパバイザ２１０に通知する。ハイパバイザ２１０がこの通知を受信したときにゲストＯＳ２２６の起動が完了したと判定することができる。
【０１０３】
あるいは、起動が完了した後のゲストＯＳ２２６に、ＶＭＣＡＬＬ命令を実行させてＶＭＸルートモードへ移行させることで、ハイパバイザ２１０にゲストＯＳ２２６の起動完了を検知させても良い。
【０１０４】
次に、ステップ１０８では、ゲストＯＳ２２６からハイパバイザ２１０へ制御を移して、ハイパバイザ２１０が物理ＣＰＵ２０２のＥＰＴを無効化する。まず、ゲストＯＳ２２６にＶＭＣＡＬＬ命令等を実行させてＶＭＸルートモードへ移行させる。その後、ハイパバイザ２１０は、ＶＭＣＳ２１７のＶＭ−ｅｘｅｃｕｔｉｏｎ  ｃｏｎｔｒｏｌ  ｆｉｅｌｄの"ｅｎａｂｌｅ  ＥＰＴ"に"０"を設定し、ＥＰＴを無効化する。この処理については、図７で詳述する。
【０１０５】
ＥＰＴを無効化することで、ホスト物理アドレスの０番地から割り当てられた高速モードのＬＰＡＲ２２１は、ゲスト物理アドレスからホスト物理アドレスへの変換を行う必要がないので、ゲストＯＳ２２６やアプリケーション２２７がメモリアクセスを高速に行うことができる。特に、ＴＬＢミスが発生してもホストページテーブルへのアクセスがなくなるため、前記従来例のようなＥＰＴによる処理性能の低下を防ぐことができる。
【０１０６】
また、ＥＰＴを有効化している期間でゲストＯＳ２２６の起動を行うことにより、共有割当を行うＩ／Ｏデバイス２０５へのＭＭＩＯアドレスをハイパバイザが処理（エミュレーション）することができ、他のゲストからのアクセスと競合することなく、物理計算機２４１の仮想化環境を正確に設定することができる。
【０１０７】
次に、ステップ１０９では、ハイパバイザ２１０がＶＭ−ｅｎｔｒｙ命令を実行してＶＭＸノンルートモードへ移行した後、ゲストＯＳ２２６は、アプリケーションマネージャ２３０からの指令に応じてアプリケーション２２７の実行を開始する。
【０１０８】
なお、アプリケーション２２７の実行開始の指令は、アプリケーションマネージャ２３０だけではなく、ゲストＯＳ２２６やハイパバイザ２１０が指令するようにしてもよい。
【０１０９】
ステップ１１０では、アプリケーションマネージャ２３０が、高速モードで稼働するＬＰＡＲ２２１上のアプリケーション２２７の終了を検知する。アプリケーションマネージャ２３０は、ゲストＯＳ２２６上のアプリケーション２２７が終了すると、ゲストＯＳ２２６にＶＭＣＡＬＬ命令等を実行させてＶＭＸルートモードへ移行させ、ハイパバイザ２１０に制御を移す。
【０１１０】
なお、アプリケーションマネージャ２３０によるアプリケーション２２７の終了の検知は、処理が終了するとアプリケーション２２７がアプリケーションマネージャ２３０へ通知するようにしてもよい。あるいは、アプリケーションマネージャ２３０が周期的にアプリケーション２２７の終了を監視するようにしても良い。
【０１１１】
また、アプリケーション２２７の終了後にハイパバイザ２１０へ制御を移す際には、処理が終了するとアプリケーション２２７がゲストＯＳ２２６にＶＭＣＡＬＬ命令等を実行させてＶＭＸルートモードへ移行させてもよい。
【０１１２】
次に、ステップ１１１では、ハイパバイザ２１０が、ＥＰＴを再度有効化させる。すなわち、ハイパバイザ２１０はＶＭＣＳ２１７のＶＭ−ｅｘｅｃｕｔｉｏｎ  ｃｏｎｔｒｏｌ  ｆｉｅｌｄの"ｅｎａｂｌｅ  ＥＰＴ"に"１"を設定し、ホストページテーブル２１４を指定して再度有効化する。
【０１１３】
ステップ１１２では、ハイパバイザ２１０がゲストＯＳ２２６をシャットダウンさせて、当該ＬＰＡＲを不活性化する（１１３）。換言すれば、ゲストＯＳ２２６は、ハイパバイザ２１０からシャットダウンの指令を受け付けて終了する。
【０１１４】
なお、ゲストＯＳ２２６のシャットダウンは、ＬＰＡＲマネージャ２３２からの指令に応じて行うことができる。例えば、ハイパバイザ２１０がＥＰＴの再有効化が完了したことをＬＰＡＲマネージャ２３２に通知し、ＬＰＡＲマネージャ２３２はこの通知の受信後に、ゲストＯＳ２２６にシャットダウンを指令することができる。
【０１１５】
次に、上記ステップ１０８で行われるＥＰＴの無効化処理の詳細について説明する。図７は、ハイパバイザ２１０で行われるＥＰＴの無効化処理の一例を示すフローチャートである。
【０１１６】
ステップ８１１では、ハイパバイザ２１０が新たなＬＰＡＲ（以下、当該ＬＰＡＲ）のＬＰＡＲ属性２１８を参照し、エントリ４４１が"１"に設定された高速モードであるかを判定する。ＬＰＡＲ属性２１８のエントリ４４１が"１"であればステップ８１２へ進み、"０"であれば図７のフローチャートを終了する。
【０１１７】
ステップ８１２では、ハイパバイザ２１０が当該ＬＰＡＲに割り当てたゲスト物理アドレス（ＧＰＡ）とホスト物理アドレス（ＨＰＡ）が同一（図３のＬＰＡＲ２２１ａ）であるかを判定する。当該ＬＰＡＲに割り当てたゲスト物理アドレスとホスト物理アドレスが同一であればステップ８１８へ進む。一方、当該ＬＰＡＲに割り当てたゲスト物理アドレスとホスト物理アドレスが同一でない場合はステップ８１３へ進む。
【０１１８】
ステップ８１３で、ハイパバイザ２１０は、当該ＬＰＡＲが認識するゲスト物理アドレス（ＧＰＡ）のアドレスと同一のホスト物理アドレス（ＨＰＡ）領域に存在するＬＰＡＲを特定する。
【０１１９】
すなわち、当該ＬＰＡＲのＬＰＡＲ属性２１８が高速モードの場合、割り当てられたホスト物理アドレスが０番地を含んでいなければ、ＥＰＴを無効化できない。このため、ハイパバイザ２１０は、当該ＬＰＡＲをホスト物理アドレスの０番地から割り当てたときに、アドレスが重複する他のＬＰＡＲ２２１を特定する。
【０１２０】
ステップ８１４では、ハイパバイザ２１０が上記特定された他のＬＰＡＲを他の物理計算機２４１ｂ、２４１ｃにマイグレーションし、特定したＬＰＡＲに割り当てられていたホスト物理アドレスを解放する。ハイパバイザ２１０は、資源割当情報２１５のメモリ割当情報４２０のうち、マイグレーションしたＬＰＡＲのＬＰＡＲ＃４２０４に０（not allocated）を設定する。
【０１２１】
なお、特定されたＬＰＡＲのマイグレーションについては、ハイパバイザ２１０が、ＬＰＡＲマネージャ２３２へマイグレーションを依頼しても良い。あるいは、物理計算機２４１にリソースの余裕がある場合には、同一の物理計算機２４１内でマイグレーションを実施しても良い。また、他の物理計算機２４１でホスト物理アドレスの０番地から割り当てが可能であれば、高速モードで稼働させるＬＰＡＲを他の物理計算機２４１へマイグレーションしてもよい。
【０１２２】
ステップ８１５では、ハイパバイザ２１０が、上記解放されたホスト物理アドレスに、当該ＬＰＡＲのゲスト物理アドレスのデータをコピーする。つまり、ハイパバイザ２１０は、当該ＬＰＡＲのゲスト物理アドレスと同一のホスト物理アドレスにデータをコピーする。これにより、当該ＬＰＡＲは、ホスト物理アドレスの０番地からアドレス空間が割り当てられる。
【０１２３】
ステップ８１６で、ハイパバイザ２１０は、資源割当情報２１５のメモリ割当情報４２０を更新する。ハイパバイザ２１０は、まず、メモリ割当情報４２０で当該ＬＰＡＲが当初割り当てられていた領域を解放する。その後、ハイパバイザ２１０は、当該ＬＰＡＲを再度割り当てるアドレス空間として、ゲスト物理アドレス（ＧＰＡ）＝ホスト物理アドレス（ＨＰＡ）をメモリ割当情報４２０に設定する。そして、ＬＰＡＲ＃４２０４には当該ＬＰＡＲの番号を設定する。
【０１２４】
ステップ８１７では、ハイパバイザ２１０が、ホストページテーブル２１４を更新する。ハイパバイザ２１０は、ホストページテーブル２１４のうち、当該ＬＰＡＲが当初割り当てられていた変換情報（ＧＰＡとＨＰＡの対）を削除する。その後、ハイパバイザ２１０は、当該ＬＰＡＲを再度割り当てるアドレスとして、ゲスト物理アドレス（ＧＰＡ）＝ホスト物理アドレス（ＨＰＡ）をホストページテーブル２１４に設定する。
【０１２５】
ステップ８１８では、ハイパバイザ２１０が、ＶＭＣＳ２１７の設定を変更してホストページテーブル２１４によるアドレス変換（ＥＰＴ）を無効化する。これは、上述したように、ハイパバイザ２１０が、ＶＭＣＳ２１７のＶＭ−ｅｘｅｃｕｔｉｏｎ  ｃｏｎｔｒｏｌ  ｆｉｅｌｄの"ｅｎａｂｌｅ  ＥＰＴ"に"０"を設定することである。
【０１２６】
ステップ８１９では、ハイパバイザ２１０が、ホストページテーブル２１４に依存する機能をＯＦＦにする。ホストページテーブル２１４に依存するＶＭＣＳ２１７の機能としては、ＶＰＩＤ  ｅｎａｂｌｅやｕｎｒｅｓｔｒｉｃｔｉｏｎ  ｇｕｅｓｔ等である。
【０１２７】
ステップ８２０では、ハイパバイザ２１０が、特定のＩ／Ｏデバイス２０５（ＨＰＥＴ）について、仮想Ｉ／Ｏデバイス２０４とＩ／Ｏデバイス２０５の状態を同期させる。当該ＬＰＡＲがＬＰＡＲ＃１（２２１ａ）の場合、ハイパバイザ２１０は、共有資源の仮想Ｉ／Ｏデバイス２２５ａの内容を、Ｉ／Ｏデバイス２０５にコピーして同期させる。
【０１２８】
Ｉ／Ｏデバイス２０５が、ＨＰＥＴの場合、図８で示すように、ｏｆｆｓｅｔ＝０Ｆ０−０Ｆ７ｈのメインカウンタ値レジスタ（グローバルタイマカウンタ）が同期対象８０１である。ハイパバイザ２１０は、このグローバルタイマカウンタの値を仮想Ｉ／Ｏデバイス２２５ａから読み込んで、Ｉ／Ｏデバイス２０５のグローバルタイマカウンタへ書き込むことで同期させる。なお、図８はＨＰＥＴのレジスタフォーマット８００を示す図である。
【０１２９】
以上の処理によって、活性化するＬＰＡＲのＬＰＡＲ属性２１８が高速モードの場合、ゲスト物理アドレスとホスト物理アドレスが同一の領域に割り当てられ、さらに、共有資源のＩ／Ｏデバイス２０５と仮想Ｉ／Ｏデバイス２０４の同期も行われる。そして、ＥＰＴを無効化してゲストＯＳ２２６及びアプリケーション２２７を実行することで、ＴＬＢミス時の２段アドレス変換のオーバヘッドを回避できる。
【０１３０】
すなわち、当該ＬＰＡＲがＬＰＡＲ＃１（２２１ａ）の場合、図３で示すように、ゲスト物理アドレスとホスト物理アドレスが同一のアドレス空間にマップされる。このため、ＥＰＴを無効にしても、ゲストＯＳ２２６ａはホスト物理アドレスにアクセスすることができる。そして、ホスト物理アドレスの起点が０番地であるので、物理計算機２４１で起動可能なＯＳであればゲストＯＳ２２６として採用することができる。したがって、前記従来例のように、ＯＳの改変を行う必要はない。
【０１３１】
また、物理計算機２４１では、ｘ６４アーキテクチャの物理ＣＰＵ２０２で、ＥＰＴを無効化するだけである。したがって、前記特許文献１のようにＣＰＵに特別な要素を組み込む必要はなく、既存のｘ６４アーキテクチャの物理ＣＰＵを採用することができる。
【０１３２】
また、当該ＬＰＡＲを活性化する時点で、既にホスト物理アドレスの０番地から他のＬＰＡＲが割り当てられていた場合には、ホスト物理アドレスの０番地から割り当てられていた他のＬＰＡＲをマイグレーションする。その後、当該ＬＰＡＲをホスト物理アドレスの０番地から割り当てる。これにより、ホスト物理アドレスの０番地が既に他のＬＰＡＲに割り当てられていた場合でも、当該ＬＰＡＲをホスト物理アドレスの０番地から割り当てることが可能となって、ＥＰＴを無効化した高速モードでゲストＯＳ２２６及びアプリケーション２２７を稼働させることが可能となる。
【０１３３】
例えば、図３に示したＬＰＡＲ＃２（２２１ｂ）を高速モードとする場合、ハイパバイザ２１０は、物理計算機２４１ａの０番地から割り当てられていたＬＰＡＲ＃１（２２１ａ）を物理計算機２４１ｂへマイグレーションする。そして、ハイパバイザ２１０は、ＬＰＡＲ＃１が割り当てられていたホスト物理アドレスを解放する。
【０１３４】
次に、図３に示したＬＰＡＲ＃２（２２１ｂ）の３２ＧＢ〜６２ＧＢの内容を、図１０で示すように、ホスト物理アドレスの０番地から２ＧＢ及び４ＧＢ〜３２ＧＢの領域にコピーする。また、ＬＰＡＲ＃２（２２１ｂ）で共有割当されている仮想Ｉ／Ｏデバイス２２５ｂの内容を、Ｉ／Ｏデバイス２０５にコピーしておく。なお、図１０はＬＰＡＲ＃１のマイグレーション１１０１を行った後の物理計算機２４１ａ、２４１ｂのメモリマップである。
【０１３５】
これにより、高速モードのＬＰＡＲ＃２（２２１ｂ）へ物理計算機２４１ａのリソースを割り当てて、ＥＰＴを無効化した高速モードでゲストＯＳ２２６ａとアプリケーション２２７ａを稼働させることができる。
【０１３６】
また、高速モードのＬＰＡＲでアプリケーション２２７ａの実行が終了すると、ハイパバイザ２１０は、再びＥＰＴを有効化する。これにより、他のＬＰＡＲ＃２がホストページテーブル２１４を利用して２段のアドレス変換を実施することができる。
【０１３７】
なお、本実施例ではＬＰＡＲ＃１をマイグレーションさせる例を示したが、ＬＰＡＲ＃２をマイグレーションさせる方法も考えられる。しかし、いずれも本技術分野に精通した技術者であれば容易に類推可能であり、本発明の範疇に含めるものである。
【０１３８】
＜ＬＰＡＲの設定＞
上記図３に示したＬＰＡＲ２２１ａ、２２１ｂを設定する画面の一例を図９に示す。図９は、ＬＰＡＲ２２１ａ、２２１ｂの設定画面９０１の一例を示す画面イメージである。この画面イメージは、例えば、ＬＰＡＲマネージャ２３２の表示装置に出力される。ＬＰＡＲマネージャ２３２の利用者は、当該設定画面でＬＰＡＲに必要なリソースを決定し、物理計算機２４１のハイパバイザ２１０へ設定ファイルとして送信することができる。
【０１３９】
設定画面９０１は、ＬＰＡＲ＃１（２２１ａ）、ＬＰＡＲ＃２（２２１ｂ）毎の領域９１０、９１１を有する。ＬＰＡＲ  ｎａｍｅ９２１は、ＬＰＡＲの番号または識別子あるいは名称を入力する。
【０１４０】
ＣＰＵ割り当て９２２は、当該ＬＰＡＲに割り当てる物理ＣＰＵコアの数を入力する。割り当てスイッチ９２３は、ＣＰＵ割り当て９２２の物理ＣＰＵコアを占有と共有の何れで割り当てるかを設定する。
【０１４１】
メモリ割り当て９２４は、当該ＬＰＡＲに割り当てるメモリの容量を入力する。アドレスビュー９２５は、アドレスマップ（ＧＰＡ−ＨＰＡ）を別画面で表示するためのハイパーリンクである。
【０１４２】
Ｉ／Ｏ割り当て９２６は、当該ＬＰＡＲに割り当てるＩ／Ｏデバイスを選択するプルダウンメニューである。割り当てスイッチ９２７は、Ｉ／Ｏ割り当て９２６で選択したＩ／Ｏデバイスを占有と共有の何れで割り当てるかを設定する。
【０１４３】
共有資源割り当て９２８は、物理計算機２４１ａの特定の共有資源（例えば、ＨＰＥＴ）を選択するプルダウンメニューである。
【０１４４】
Ｐｅｒｆｏｒｍａｎｃｅ  Ｅｘｔｅｎｓｉｏｎ９２９は、当該ＬＰＡＲを高速モードで稼働させるか通常モードで稼働させるかを設定する。このＰｅｒｆｏｒｍａｎｃｅ  Ｅｘｔｅｎｓｉｏｎ９２９は排他的であり、ひとつのＬＰＡＲで"Ｅｎａｂｌｅｄ"に設定すると、ＬＰＡＲ＃２（９１１）のように他のＬＰＡＲでは"Ｄｉｓａｂｌｅｄ"となる。なお、ＬＰＡＲ＃２の領域９１１も上記領域９１０と同様に構成される。
【０１４５】
＜まとめ＞
以上のように、本発明では、ＥＰＴを有効にした状態でＬＰＡＲの割り当てを行い、ホストページテーブル２１４や共有資源の初期化を行って、仮想化環境を構築する。このとき、高速モードのＬＰＡＲについては、ホスト物理アドレスを０番地から割り当てておく。そして、ＥＰＴを無効化してから高速モードのＬＰＡＲでアプリケーション２２７を実行させることで、ゲストＯＳ２２６は前記従来例のような２段のアドレス変換を行うことがなくなって、処理性能を向上させることができる。
【０１４６】
また、前記従来例のようにゲストＯＳ２２６の改変を必要とせず、また、ｘ６４アーキテクチャの物理ＣＰＵを利用できるので、既存のＣＰＵを含む物理計算機２４１でゲストＯＳ２２６をハイパバイザ２１０上で稼働させて、２段階のアドレス変換に起因するオーバヘッドを削減することができる。
【０１４７】
さらに、高速モードのＬＰＡＲでアプリケーション２２７の実行が完了すると、ハイパバイザ２１０は再びＥＰＴを有効化するので、通常の仮想化環境へ復帰することができる。
【０１４８】
なお、上記実施例では、ｘ６４アーキテクチャの物理ＣＰＵについて述べたが、ＡＭＤ６４アーキテクチャの物理ＣＰＵを用いてもよい。この場合、ｘ６４アーキテクチャのＥＰＴを、ＡＭＤ６４アーキテクチャのＮＰＴに置き換えれば良い。
【０１４９】
また、上記実施例では、物理ＣＰＵ２０２をマルチコアＣＰＵで構成した例を示したが、ヘテロジニアスマルチコアプロセッサで構成してもよい。
【０１５０】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
【０１５１】
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【０１５２】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【０１５３】
＜補足＞
１６．
請求項１０に記載の仮想計算機システムであって、
前記仮想計算機システムは、前記アプリケーションの実行開始および終了を管理するアプリケーションマネージャをさらに有し、
前記アプリケーションマネージャが、
前記ゲストＯＳの起動が完了したことを検出して、前記ハイパバイザに前記ゲストＯＳの起動完了を通知し、
前記ハイパバイザが、
前記通知を受け付けて、前記第１のアドレス変換部を無効化することを特徴とする仮想計算機システム。
【０１５４】
１７．
１６．に記載の仮想計算機システムであって、
前記ハイパバイザが、前記通知を受け付けて、前記第１のアドレス変換部を無効化する際に、
前記ハイパバイザが、
前記第１のアドレス変換部に設定されたアドレス対の内部の、前記ゲスト物理アドレスと前記ホスト物理アドレスの値が同一であるか否かを判定し、前記判定が同一でない場合に、前記ゲスト物理アドレスと同一のホスト物理アドレスのメモリ領域を新たに確保し、前記論理区画に割り当てられたメモリのサブセットのデータを、前記新たに確保されたメモリ領域にコピーし、前記第１のアドレス変換部に対して、前記ゲスト物理アドレスと同一の値を前記ホスト物理アドレスに対して設定することを特徴とする仮想計算機システム。
【０１５５】
１８．
１７．に記載の仮想計算機システムであって、
前記ハイパバイザが、前記判定が同一でない場合に、前記ゲスト物理アドレスと同一のホスト物理アドレスのメモリ領域を新たに確保する際に、
確保対象のメモリ領域が、他の論理区画に対して割り当て済みか否かを判定し、前記判定結果が割り当て済みの場合に、前記論理区画を他の物理計算機に移動させることを特徴とする仮想計算機システム。
【図１】
2016067429.tif 000003
【図２】
2016067429.tif 000004
【図３】
2016067429.tif 000005
【図４Ａ】
2016067429.tif 000006
【図４Ｂ】
2016067429.tif 000007
【図５Ａ】
2016067429.tif 000008
【図５Ｂ】
2016067429.tif 000009
【図５Ｃ】
2016067429.tif 000010
【図６Ａ】
2016067429.tif 000011
【図６Ｂ】
2016067429.tif 000012
【図６Ｃ】
2016067429.tif 000013
【図７】
2016067429.tif 000014
【図８】
2016067429.tif 000015
【図９】
2016067429.tif 000016
【図１０】
2016067429.tif 000017
【国際調査報告】
2016067429.tif 000018
2016067429.tif 000019