(57)【要約】【課題】仮想化環境でＴＬＢがシャドウ化される場合において、ＴＬＢのエントリの競合を回避し、仮想化環境の性能を向上することができる計算機仮想化装置のＴＬＢ仮想化方法を提供する。【解決手段】計算機仮想化装置のＴＬＢ仮想化方法において、実計算機１００上でハイパバイザ１８０を実行させ、ハイパバイザ１８０による処理により生成される複数の仮想計算機上でＯＳを動作させ、ハイパバイザ１８０の処理により、仮想計算機上のＲＩＤ値を使用してＴＬＢのエントリ計算を行い、実計算機１００上のＴＬＢのエントリ計算に使用される仮想計算機上のＲＩＤ値を複数の仮想計算機において異なる値に変換し、さらに、変換されたＲＩＤ値のビット列の値を変更するものである。【選択図】図５
2009146344.tif 000002
【特許請求の範囲】
【請求項１】
実計算機上でハイパバイザを実行させ、前記ハイパバイザによる処理により生成される複数の仮想計算機上でＯＳを動作させ、前記ハイパバイザの処理により、前記仮想計算機上のＲＩＤ値を使用してＴＬＢのエントリ計算を行う計算機仮想化装置のＴＬＢ仮想化方法であって、
前記ハイパバイザの処理により、前記実計算機上のＴＬＢのエントリ計算に使用される前記仮想計算機上のＲＩＤ値を前記複数の仮想計算機において異なる値に変換し、さらに、変換された前記ＲＩＤ値のビット列の値を変更することを特徴とする計算機仮想化装置のＴＬＢ仮想化方法。
【請求項２】
請求項１記載の計算機仮想化装置のＴＬＢ仮想化方法において、
前記ハイパバイザの処理による前記ＲＩＤ値のビット列の値の変更は、前記ＲＩＤ値のビット列を反転することにより行われることを特徴とする計算機仮想化装置のＴＬＢ仮想化方法。
【請求項３】
請求項１記載の計算機仮想化装置のＴＬＢ仮想化方法において、
前記ハイパバイザの処理による前記ＲＩＤ値のビット列の値の変更は、前記ＲＩＤ値のビット列を１対１に変換するためのルックアップテーブルを参照することにより行われることを特徴とする計算機仮想化装置のＴＬＢ仮想化方法。
【請求項４】
請求項１記載の計算機仮想化装置のＴＬＢ仮想化方法において、
前記ハイパバイザの処理による前記ＲＩＤ値のビット列の値の変更は、前記ＲＩＤ値のビット列中の任意のビットの組の値を交換することにより行われることを特徴とする計算機仮想化装置のＴＬＢ仮想化方法。
【請求項５】
請求項４記載の計算機仮想化装置のＴＬＢ仮想化方法において、
前記ハイパバイザの処理による前記ＲＩＤ値のビット列の値の変更は、前記ハイパバイザの処理により前記ＲＩＤ値と仮想アドレスのビットの変化回数を測定し、前記ＴＬＢのエントリ計算に使用される前記ＲＩＤ値のビットのうちの変化回数が大きいビットは、前記ＴＬＢのエントリ計算に使用される前記仮想アドレスのビットのうちの変化回数の大きいビットとかけ合せられるように行われ、前記ＴＬＢのエントリ計算に使用される前記ＲＩＤ値のビットのうちの変化回数が小さいビットは、前記ＴＬＢのエントリ計算に使用される前記仮想アドレスのビットのうちの変化回数の大きいビットとかけ合せられるように行われることを特徴とする計算機仮想化装置のＴＬＢ仮想化方法。
【請求項６】
実計算機上で実行され、前記実計算機上に複数の仮想計算機を生成して、前記複数の仮想計算機上でＯＳを動作させ、前記仮想計算機上のＲＩＤ値を使用してＴＬＢのエントリ計算を行う計算機仮想化プログラムであって、
前記実計算機上のＴＬＢのエントリ計算に使用される前記仮想計算機上のＲＩＤ値を前記複数の仮想計算機において異なる値に変換し、さらに、変換された前記ＲＩＤ値のビット列の値を変更することを特徴とする計算機仮想化プログラム。
【請求項７】
請求項６記載の計算機仮想化プログラムにおいて、
前記ＲＩＤ値のビット列の値の変更は、前記ＲＩＤ値のビット列を反転することにより行うことを特徴とする計算機仮想化プログラム。
【請求項８】
請求項６記載の計算機仮想化プログラムにおいて、
前記ＲＩＤ値のビット列の値の変更は、前記ＲＩＤ値のビット列を１対１に変換するためのルックアップテーブルを参照することにより行うことを特徴とする計算機仮想化プログラム。
【請求項９】
請求項６記載の計算機仮想化プログラムにおいて、
前記ＲＩＤ値のビット列の値の変更は、前記ＲＩＤ値のビット列中の任意のビットの組の値を交換することにより行うことを特徴とする計算機仮想化プログラム。
【請求項１０】
請求項９記載の計算機仮想化プログラムにおいて、
前記ＲＩＤ値のビット列の値の変更は、前記ハイパバイザの処理により前記ＲＩＤ値と仮想アドレスのビットの変化回数を測定し、前記ＴＬＢのエントリ計算に使用される前記ＲＩＤ値のビットのうちの変化回数が大きいビットは、前記ＴＬＢのエントリ計算に使用される前記仮想アドレスのビットのうちの変化回数の大きいビットとかけ合せられるように行い、また、前記ＴＬＢのエントリ計算に使用される前記ＲＩＤ値のビットのうちの変化回数が小さいビットは、前記ＴＬＢのエントリ計算に使用される前記仮想アドレスのビットのうちの変化回数の大きいビットとかけ合せられるように行うことを特徴とする計算機仮想化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機仮想化装置のＴＬＢ仮想化技術に関し、特に、その計算機仮想化におけるＴＬＢエントリの競合回避に適用して有効な技術に関する。
【背景技術】
【０００２】
近年、ＰＣアーキテクチャをベースとした計算機上で、仮想的な計算機を同時に複数稼動させる計算機仮想化の技術が注目を浴びており、実稼動する計算機の台数の削減、ハードウエアの隠蔽による運用・構成変更の容易化などのメリットが市場に浸透しつつある。
【０００３】
計算機の仮想化はハードウエアとソフトウエアの連携により実現されているが、高性能かつ高機能な仮想計算機を実現するための技術がそれぞれに開発されている。
【０００４】
計算機の備える重要な機能の１つにアドレス変換がある。アドレス変換は現在のマルチタスキング機能を備えたオペレーティングシステム（以降、ＯＳと呼ぶ）を前提とした場合、必須の計算機の機能である。
【０００５】
アドレス変換とは、プログラムが動作する仮想アドレス空間のアドレス（仮想アドレス）を、計算機のメモリ空間のアドレス（物理アドレス）に変換することであり、現在のほとんどの計算機アーキテクチャで採用されているページング方式によるアドレス変換では、ページサイズによって定まる仮想アドレスの上位ビットを物理アドレスに対応する値に変換することを行う。
【０００６】
アドレス変換処理は全てのメモリアクセス動作に関わるため高速に実行する必要があり、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）と呼ばれる仮想アドレスと物理アドレスとのアドレス変換対を記憶するバッファメモリによってハードウエアが処理を行う。
【０００７】
仮想アドレス空間はプロセス毎に割当てられるので、異なったプロセスの仮想アドレスは別々の物理アドレスに変換されなければならない。これをハードウエアが（特に１つのＴＬＢ内で）区別するためにアドレス空間識別子（ＡＳＩＤ（Ａｄｄｒｅｓｓ  Ｓｐａｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）、ＲＩＤ（Ｒｅｇｉｏｎ  Ｉｄｅｎｔｉｆｉｅｒ）など）（以降、ＲＩＤと呼ぶ）がハードウエアに備わっているものがある。
【０００８】
この場合、アドレス変換とは、ＲＩＤレジスタの値（ＲＩＤ）で示される仮想アドレス空間の仮想アドレスを物理アドレスに変換することになり、ＴＬＢにはＲＩＤと仮想アドレスから物理アドレスへのアドレス変換対が格納されることになる。
【０００９】
計算機仮想化とは１つのハードウエア上に複数の仮想計算機を実現することであり、それぞれの仮想計算機毎に独立した物理メモリ空間を見せる必要があり、またそれぞれの仮想計算機で独立したアドレス変換機能をサポートする必要がある。
【００１０】
物理的には１つしかないメモリでこれを実現するために、それぞれの仮想計算機の物理アドレスは、それぞれがぶつからないように、もう一度変換される必要がある。具体的に言うと、ある仮想計算機のＲＩＤで示される仮想アドレス空間の仮想アドレスは、仮想計算機の物理アドレスに変換され、それがもう一度、実計算機の物理アドレスに変換されることになる。
【００１１】
この２回のアドレス変換を高速に行うために、ＴＬＢに仮想計算機の仮想アドレスから実計算機の物理アドレスへのアドレス変換対を格納するように、高性能な仮想計算機環境を実現するためのソフトウエア（以降、このソフトウエアをハイパバイザと呼ぶ）がアドレス変換を管理する方式がある。
【００１２】
この方法を用いれば、ＴＬＢにアドレス変換対がある限りは、各メモリアクセスに対する処理は非仮想化時と同様の実行時間での処理が期待できる。この方式をＴＬＢのシャドウ化と呼ぶ。ＴＬＢのシャドウ化を行う場合、ハイパバイザはアドレス変換対を実ＴＬＢに登録する場合、以下の変換を行う。
【００１３】
（１）各仮想計算機の物理アドレスを、実計算機の物理アドレスに変換する。
【００１４】
（２）各仮想計算機のＲＩＤの値を各仮想計算機間でぶつからないように変換する。
【００１５】
よく、行われる方法としては、ＶＭＩＤ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｉｄｅｎｔｉｆｉｅｒ）を、ＲＩＤの一部に入れることが行われる。
【００１６】
ここまでに述べた、計算機仮想化におけるアドレス変換機能の方法としては、非特許文献１および非特許文献２などで説明されている。
【非特許文献１】Ｊａｍｅｓ  Ｅ．  Ｓｍｉｔｈ，Ｒａｖｉ  Ｎａｉｎ，Ｒａｖｉ  Ｎａｉｒ：「Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅｓ：  Ｖｅｒｓａｔｉｌｅ  Ｐｌａｔｆｏｒｍｓ  Ｆｏｒ  Ｓｙｓｔｅｍｓ  Ａｎｄ  Ｐｒｏｃｅｓｓｅｓ」，Ｍｏｒｇａｎ  Ｋａｕｆｍａｎｎ  Ｓｅｒｉｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ａｎｄ  Ｄｅｓｉｇｎ，２００５年６月  Ｐ３９７〜Ｐ４０３
【非特許文献２】ＩＳＳＮ  １５３５−８６４Ｘ，Ｉｎｔｅｌ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ  Ｖｏｌｕｍｅ  １０  Ｉｓｓｕｅ  ０３
【発明の開示】
【発明が解決しようとする課題】
【００１７】
ＴＬＢのエントリ数（＝記憶できるアドレス変換対の数）は有限であるので、それを有効に使うことは性能の観点で重要である。
【００１８】
従来の計算機仮想化におけるアドレス変換機能においては、ＴＬＢエントリの競合が発生してしまい、性能の低下の原因となっていた。
【００１９】
仮想化環境においては、各仮想計算機のアドレス変換対を１つのＴＬＢに格納するため仮想計算機当たりのＴＬＢエントリ数は相対的に少なくなること、ＴＬＢミスが発生した場合の影響が大きい（非仮想化環境ではＴＬＢｍｉｓｓの場合のＯＳ処理がオーバヘッドとなるが、仮想化環境ではさらにハイパバイザの処理オーバヘッドも加わる）こと等を考えると、仮想化環境の場合はさらに重要視しなければならない状況もある。
【００２０】
そこで、本発明の目的は、仮想化環境でＴＬＢがシャドウ化される場合において、ＴＬＢのエントリの競合を回避し、仮想化環境の性能を向上することができる計算機仮想化装置のＴＬＢ仮想化方法および計算機仮想化プログラムを提供することにある。
【００２１】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００２２】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００２３】
すなわち、代表的なものの概要は、ハイパバイザの処理により、実計算機上のＴＬＢのエントリ計算に使用される仮想計算機上のＲＩＤ値を複数の仮想計算機において異なる値に変換し、さらに、変換されたＲＩＤ値のビット列の値を変更するものである。
【発明の効果】
【００２４】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００２５】
すなわち、代表的なものによって得られる効果は、仮想化環境でＴＬＢがシャドウ化される場合において、ＴＬＢのエントリの競合を回避し、仮想化環境の性能を向上することができる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００２７】
まず、本発明の適用対象について説明する。
【００２８】
本発明は、ＲＩＤにより複数の仮想アドレス空間を区別してＴＬＢに登録可能なアークテクチャを持った計算機を対象としている。また、その仮想化に関しては、ハイパバイザが、ＴＬＢのシャドウ化を行い、各仮想計算機の仮想アドレス空間をＴＬＢ内で区別するためにＲＩＤについて全仮想計算機でユニークな値となるように変更する方法も持ったものを対象としている。
【００２９】
この場合、ゲストＯＳによるＲＩＤ設定命令はトラップされハイパバイザに制御が移り、各仮想計算機で同じＲＩＤ値をとることがない様にその値をシャドウＲＩＤ値に変更してＲＩＤを保持するハードウエアレジスタに設定する。このことは、シャドウＲＩＤの値の決定に関してはハイパバイザが決定可能であることであり、本発明は仮想化環境に特有なこの操作を利用することにより、ＴＬＢのエントリの競合を回避し、仮想化環境の性能を向上させている。
【００３０】
次に、本発明の実施の形態を説明する前に、図１〜図４により、本発明の計算機仮想化装置のＴＬＢ仮想化方法の前提技術および概要について説明する。図１〜図４は本発明の計算機仮想化装置のＴＬＢ仮想化方法の前提技術および概要について説明するための説明図であり、図１は前提技術となるアドレス変換を説明するための説明図、図２は従来技術でのＴＬＢエントリの競合を説明するための説明図、図３はＴＬＢエントリの競合回避を説明するための説明図、図４はＴＬＢエントリの競合回避の原理を説明するための説明図である。
【００３１】
図１において、仮想計算機１（１１０）と仮想計算機２（１２０）は、実計算機（１００）の上で動作するハイパバイザ（１８０）によって生成される仮想計算機である。仮想計算機１（１１０）上ではＯＳ（１１１）の管理の基で、複数のプロセス（１１２，１１５）が独立した仮想アドレス空間で走行する。仮想計算機２（１２０）も仮想計算機１（１１０）と同様である。
【００３２】
ＯＳ（１１１）はそれぞれのプロセスに対するアドレス変換テーブル（１１３、１１６）を準備し、プロセス毎の仮想アドレス空間と仮想計算機の物理アドレス空間を管理する。また、それぞれの、アドレス空間に対してＲＩＤ（１１４、１１７）を設定する。
【００３３】
ハイパバイザ（１８０）は、仮想計算機管理情報（１８１）を持ち、各仮想計算機毎の、ＶＭＩＤと仮想計算機の物理アドレス空間の実計算機上でのメモリ位置を管理している。
【００３４】
実計算機（１００）にあるＴＬＢ（１０１）に設定される値は、仮想計算機の仮想アドレスから実計算機の物理アドレスのアドレス変換対となるように、ハイパバイザによってシャドウ化されている。ＴＬＢのシャドウ化によって、ＴＬＢ内にアドレス変換対がある場合は、仮想計算機の仮想アドレスは一気に実計算機の物理アドレスに変換される。
【００３５】
ＲＩＤレジスタ（１０２）に設定する値は、全仮想計算機の仮想アドレス空間がＴＬＢ内でユニークとなるように、ハイパバイザが、ＲＩＤの一部にＶＭＩＤを付け加えるように変更する。これをＲＩＤのシャドウ化と呼ぶ。
【００３６】
例えば、２つの仮想計算機はＲＩＤが００００１と同一の仮想アドレス空間を持つが、これはハイパバイザによりＶＭＩＤをＲＩＤの最初に追加するようにシャドウ化され、それぞれＴＬＢの中ではＲＩＤは１０００１，２０００１と区別される。この変換されたＲＩＤ値をシャドウＲＩＤ値（１０３）と呼ぶ。
【００３７】
図２において、仮想アドレス（以降ＶＡと表記することもある）を３２ｂｉｔ、ＲＩＤを２０ｂｉｔとする（アドレス等の値のｎビット目からｍビット目までの部分を表現するために［ｎ：ｍ］という表記を用いる）。
【００３８】
アドレス変換のページサイズは４０９６バイトとし、その場合、ＶＡ［３１：１２］がアドレス変換の変換対象のビットとなる。ＴＬＢのエントリ数は２５６エントリとし、アドレス変換において、参照するエントリ位置は、ＶＡ［１９：１２］の８ビットと、ＲＩＤ［７：０］の８ビットの排他的論理和をとった８ビットの値（ＴＬＢエントリアドレス）とする。
【００３９】
図１中にある８組のＲＩＤと仮想アドレスに対するＴＬＢエントリ位置を計算すると、エントリ２に３つ、エントリ３に２つの変換が対応することになる。これをＴＬＢエントリの競合というが、この場合、先に入っていた変換対は上書きされることになりＴＬＢから消え、性能低下の原因となる。
【００４０】
図３において、ＶＭＩＤを４ｂｉｔとし、ＲＩＤのシャドウ化ではＲＩＤ［１９：１６］の部分にＶＭＩＤを付加されるとする。この時に、ＲＩＤのＴＬＢ演算に使用されるビットを反転する操作を加える。同様にＴＬＢエントリ位置を計算すると、ＴＬＢエントリの競合が削減されることが判る。
【００４１】
次に、上記では、ＲＩＤのシャドウ化においてビットを反転することでＴＬＢのエントリ競合が削減される例を示したが、図４により、この方法が一般的に効果があることを説明する。
【００４２】
ＲＩＤが昇順に使用された場合など、ＲＩＤ［０］はよく変化するのに、ＲＩＤの上位ビットはあまり変化しないことによる。また、仮想アドレスも近隣のページが使用される場合などはＶＡ［１２］がよく変化し、上位ビットになるほど変化はされないことになる。
【００４３】
図４において、ＴＬＢエントリ位置の計算においてこの性質を考えてみた場合を、ＲＩＤのビットを変化しない場合（４０１）、ＲＩＤのビットを反転させる場合（４０２）について示す。図４では、仮想アドレス、ＲＩＤのビットのよく変化するビットを黒く塗りつぶしている。
【００４４】
ここで、ＲＩＤのビットを変化しない場合を見ると、排他的論理和の計算において、よく変化するビットが同じ位置にあり、ＴＬＢエントリ位置は演算において、よく変化するビットがＴＬＢエントリ位置へ反映されにくいことが判る。
【００４５】
一方、ＲＩＤのビットを反転させる場合は、よく変化するビットがＴＬＢエントリ位置へ反映されていることが判る。
【００４６】
以下の実施の形態１では、ここで示したように、仮想アドレスとＲＩＤの変化が大きいビットが判っている場合に、ハイパバイザで固定的にＲＩＤのビット位置を変更し、ＴＬＢのエントリ位置のビット毎の変化回数の高い部分を増やし、ＴＬＢを効率よく利用する例について説明し、実施の形態２では、これを色々な状況でも効果があるように、仮想アドレスとＲＩＤのビット毎の変化回数を観測することで、最適なビットシフト操作を自動的に行う例について説明する。
【００４７】
（実施の形態１）
図５および図６により、本発明の実施の形態１に係る計算機仮想化装置のＴＬＢ仮想化方法におけるハイパバイザの処理ついて説明する。図５は本発明の実施の形態１に係る計算機仮想化装置のＴＬＢ仮想化方法におけるハイパバイザの処理を説明するための説明図、図６は本発明の実施の形態１に係る計算機仮想化装置のＴＬＢ仮想化方法におけるルックアップテーブルを使って変換を行う処理を説明するための説明図である。
【００４８】
図５において、ハイパバイザ（１８０）は、実計算機（１００）上で動作するソフトウエアであり、実計算機（１００）上で発生する割り込みにより起動される処理を持つ。
【００４９】
ｓｅｔＲＩＤ命令（５０１）は、ＲＩＤレジスタ（１０２）にオペランドで指定した値を設定する命令である。
【００５０】
また、ＴＬＢｍｉｓｓ（５０２）は、ＴＬＢ（１０１）内にアドレス変換対が入っておらずアドレス変換ができない時に発生する割り込みで、変換不可であった仮想アドレスとＲＩＤの情報が一緒に報告される。
【００５１】
ＬＯＡＤ命令（５０３）は、オペランドに指定した仮想アドレスのデータを読む命令であり、使用される仮想アドレス空間はその時にＲＩＤレジスタ（１０２）に設定されているＲＩＤ値が示す空間である。
【００５２】
実計算機（１００）上のメモリにアクセスするために、ＴＬＢによってアドレス変換がなされる。
【００５３】
ＲＩＤ［７：０］と仮想アドレス［１９：１２］の排他的論理和をとることで演算されるＴＬＢエントリアドレスの示すＴＬＢエントリを参照して、そこに該当する変換対があれば、該当する実計算機の物理アドレスが求まりメモリアクセスができる。該当する変換対がない場合はＴＬＢｍｉｓｓが発生する。
【００５４】
ＴＬＢｍｉｓｓ（５０２）が発生すると、ハードウエアによって割り込みが発生し、ハイパバイザのＴＬＢｍｉｓｓ処理（５２０）へ処理が移る。ＴＬＢｍｉｓｓに対するハイパバイザの処理は、仮想アドレスとＲＩＤから仮想計算機の物理アドレスを求めるステップ（５２１）、仮想計算機の物理アドレスから実計算機の物理アドレスを求めるステップ（５２２）、仮想アドレスとＲＩＤとそれに対応する実計算機の物理アドレスをアドレス変換対としてＴＬＢに登録するステップ（５２３）からなる。この処理によってＴＬＢはシャドウ化される。
【００５５】
ｓｅｔＲＩＤ命令（５０１）が実行された場合も、ハードウエアによって割り込みが発生し、ハイパバイザのｓｅｔＲＩＤ命令エミュレーション（５１０）へ処理が移る。
【００５６】
ｓｅｔＲＩＤ命令エミュレーション処理は、ｓｅｔＲＩＤ命令で指定されたＲＩＤ値（ｒｉｄ）に仮想計算機の識別子（ｖｍｉｄ）を付与するステップ（５１１）、その値のＴＬＢのエントリ決定に使用されるビット位置を変更するステップ（５１２）、前２つのステップで計算されたシャドウＲＩＤ値をＲＩＤレジスタ（１０２）に設定するステップ（５１３）からなる。
【００５７】
ｓｅｔＲＩＤ命令で指定されたＲＩＤ値をｒｉｄ、仮想計算機の識別子をｖｍｉｄ、ＴＬＢのエントリ決定に使用されるビット位置はＲＩＤ［７：０］、変換のアルゴリズムはビット反転、シャドウＲＩＤを計算するまでのワーク変数をｒｉｄｗｋとした場合の計算式をステップ（５１１）〜ステップ（５１３）のそれぞれのステップに図示している。
【００５８】
このステップによって、ＲＩＤは全仮想計算機の全プロセスでユニークな値となり、また、ＴＬＢのエントリの選択に使用されるビット位置はそのエントリが分散されるようになる。
【００５９】
ステップ（５１２）では、ＲＩＤのビット位置の変換のアルゴリズムはビット反転とした。先に述べたとおり、この方法は仮想アドレスやＲＩＤが比較的小さい範囲で使用される場合に特に有効である。
【００６０】
また、ビット反転以外の任意のビット入れ替え操作も本変換アルゴリズムの候補となるので、仮想アドレスとＲＩＤの使われ方に応じて、ＴＬＢのエントリが分散されるようにそれを決定すればよい。
【００６１】
また、ステップ（５１２）の変換のアルゴリズムは、ＴＬＢのエントリのエントリ計算に使用される部分について、１対１の変換ができるものであれば、ビット入れ替え操作に限定されるものではない。
【００６２】
例えば、図６に示すように、２５６エントリのルックアップテーブル（６０１）を持って変換を行う（５１２−２）方法もある。この方法ではＲＩＤ［７：０］の値をランダムに変換することに対応ができる。
【００６３】
以上のように、本実施の形態によれば、仮想化環境でＴＬＢがシャドウ化される場合において、ＴＬＢのエントリの競合を回避し、仮想化環境の性能を向上することが可能である。
【００６４】
（実施の形態２）
図７および図８により、本発明の実施の形態２に係る計算機仮想化装置のＴＬＢ仮想化方法におけるハイパバイザの処理について説明する。図７は本発明の実施の形態２に係る計算機仮想化装置のＴＬＢ仮想化方法におけるハイパバイザの処理の原理を説明するための説明図、図８は本発明の実施の形態２に係る計算機仮想化装置のＴＬＢ仮想化方法におけるハイパバイザの処理を説明するための説明図であり、図５に示す実施の形態１との差異部分について示している。
【００６５】
図７において、ＴＬＢｍｉｓｓ（５０２）が発生すると、変換不可であった仮想アドレスとＲＩＤの情報を伴ってハイパバイザ（１８０）に対して割り込みが発生する。この時に、仮想アドレスとＲＩＤのビット毎の変化回数を測定する。
【００６６】
ビット毎の変化回数とは、１つのビットに着目した場合に、それが前回から変化（０から１、また、１から０）した回数である。
【００６７】
図７中では、ＴＬＢｍｉｓｓ５回分について、仮想アドレス［１９：１２］とＲＩＤ［７：０］の値を例として上げた。この場合、ＲＩＤ［０］の変化は４回、仮想アドレス［１９］の変化は０回である。
【００６８】
ＲＩＤ変換仕様テーブル（７００）は、ビット変化回数（７１０）と変換仕様（７２０）の情報を管理するテーブルである。ビット変化回数は、ＴＬＢｍｉｓｓの度にＲＩＤと仮想アドレスのビットの変化をカウントした値が入る。
【００６９】
変換仕様はある一定期間の変化回数観測の後、その変化回数の順位を付け、ＲＩＤの変化回数の高いビットが仮想アドレスの変化回数の低いビットになるように、ＲＩＤのビットシフトの仕様を決定するテーブルである。
【００７０】
この例では、変化回数の高いＲＩＤ［０］の値は仮想アドレス［１９］に対応するようにＲＩＤ［７］の位置へシフトされるように指示されている。
【００７１】
図８において、ＴＬＢｍｉｓｓ（５０２）が発生すると、仮想アドレスとＲＩＤのビット毎の変化回数を測定（８０１）し、ＲＩＤ変換テーブル（７００）のビット変化回数（７１０）を更新する。
【００７２】
一定の期間が経過した後に、仮想アドレスとＲＩＤのビット毎の変化回数の順位を求め変換仕様（７２０）を決定する。この時には、既にＴＬＢに入っていた変換対を無効とするためＴＬＢのパージを行う。
【００７３】
一方で、ｓｅｔＲＩＤ命令のエミュレーション処理（５１０）では、ＲＩＤ変換テーブル（７００）の変換仕様（７２０）に従ってビットシフトを行う（５１２−２）。
【００７４】
以上のように、本実施の形態によれば、仮想化環境でＴＬＢがシャドウ化される場合において、ＴＬＢのエントリの競合を回避し、仮想化環境の性能を向上することが可能である。
【００７５】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【００７６】
本発明は、計算機仮想化装置のＴＬＢ仮想化方法に関し、計算機仮想化にアドレス変換を用いる装置に広く適用可能である。
【図面の簡単な説明】
【００７７】
【図１】本発明の計算機仮想化装置のＴＬＢ仮想化方法の前提技術となるアドレス変換を説明するための説明図である。
【図２】本発明の計算機仮想化装置のＴＬＢ仮想化方法の従来技術でのＴＬＢエントリの競合を説明するための説明図である。
【図３】本発明の計算機仮想化装置のＴＬＢ仮想化方法のＴＬＢエントリの競合回避を説明するための説明図である。
【図４】本発明の計算機仮想化装置のＴＬＢ仮想化方法のＴＬＢエントリの競合回避の原理を説明するための説明図である。
【図５】本発明の実施の形態１に係る計算機仮想化装置のＴＬＢ仮想化方法におけるハイパバイザの処理を説明するための説明図である。
【図６】本発明の実施の形態１に係る計算機仮想化装置のＴＬＢ仮想化方法におけるルックアップテーブルを使って変換を行う処理を説明するための説明図である。
【図７】本発明の実施の形態２に係る計算機仮想化装置のＴＬＢ仮想化方法におけるハイパバイザの処理の原理を説明するための説明図である。
【図８】本発明の実施の形態２に係る計算機仮想化装置のＴＬＢ仮想化方法におけるハイパバイザの処理を説明するための説明図である。
【符号の説明】
【００７８】
１００…実計算機、１０１…ＴＬＢ、１０２…ＲＩＤレジスタ、１０３…シャドウＲＩＤ値、１１０…仮想計算機１、１１１…ＯＳ、１２０…仮想計算機２、１８０…ハイパバイザ、１８１…仮想計算機管理情報、５０１…ｓｅｔＲＩＤ命令、５０２…ＴＬＢｍｉｓｓ、５０３…ＬＯＡＤ命令、５１０…ｓｅｔＲＩＤ命令エミュレーション、５２０…ＴＬＢｍｉｓｓ処理、６０１…ルックアップテーブル、７００…ＲＩＤ変換テーブル。
【図１】
2009146344.tif 000003
【図２】
2009146344.tif 000004
【図３】
2009146344.tif 000005
【図４】
2009146344.tif 000006
【図５】
2009146344.tif 000007
【図６】
2009146344.tif 000008
【図７】
2009146344.tif 000009
【図８】
2009146344.tif 000010