(57)【要約】【課題】  ゲストプログラムが複数のアドレス変換モードで動作可能であり且つ各アドレス変換モードにおいて同一ゲスト仮想アドレスが別ホスト実アドレスへ変換される場合、同一のページテーブルに重複登録され不正なアドレス変換によりホスト実アドレスにアクセスするのを避けかつアドレス変換機構を効率よく動作させる。【解決手段】  主記憶に複数のホストページテーブル作成し、ゲストプログラムのアドレス変換モードが替わるのに応じてホストページテーブルの１つを選択し、ＰＴＡレジスタへ該選択したテーブルの先頭アドレスを設定してホストページテーブルを切り替える。【選択図】  図1
2007122305.tif 000002
【特許請求の範囲】
【請求項１】
主記憶及びプロセッサを論理的に分割して複数の仮想計算機を構築してそれぞれの仮想計算機上でゲストプログラムを動作させるホストプログラム(以下、ＶＭＭと呼ぶ)を備え、前記プロセッサは仮想アドレスを実アドレスに変換するアドレス変換機構として、変換ルックアサイドバッファ（以下、ＴＬＢと呼ぶ）と、該ＴＬＢにアドレス変換情報がないときに主記憶上のページテーブルを検索してアドレス変換情報をＴＬＢに挿入する機構(以下、ページテーブル探索機構と呼ぶ)と、ページテーブルの先頭アドレスを保持するレジスタ(以下、ＰＴＡレジスタと呼ぶ)とを有する仮想計算機システムであって、
前記ＶＭＭは複数のホストページテーブルを生成し、ゲスト仮想アドレスとホスト実アドレスとを対応付ける変換情報を作成して前記ホストページテーブルに登録し、前記ゲストプログラムの状態に応じてその中から一つのホストページテーブルを選択して、該選択したホストページテーブルの先頭アドレスを前記ＰＴＡレジスタに設定することを特徴とする仮想計算機システム。
【請求項２】
前記アドレス変換機構は、多重アドレス空間モデルをサポートするためのリージョン識別子を保持するレジスタを備え、前記ＶＭＭが前記レジスタのビット幅を仮想化して、ゲストプログラムが前記レジスタのビット幅より小さいビット幅で指定可能なリージョン識別子を使用するように制御し、ゲストプログラムが使用しない残りのビットを前記ＶＭＭがゲストプログラムのアドレス変換モードを識別するのに使用することを特徴とする請求項１記載の仮想計算機システム。
【請求項３】
ゲストプログラムが実アドレスモードで動作するとき、前記ＶＭＭはゲスト実アドレスをゲスト仮想アドレスの一種として取り扱い、複数あるホストページテーブルのうちの１つをゲスト実アドレスとホスト実アドレスの対応を保持するのに使用することを特徴とする請求項１記載の仮想計算機システム。
【請求項４】
ゲストプログラムがＴＬＢ挿入命令によりゲスト仮想アドレスとゲスト実アドレスを対応付ける変換情報をゲストページテーブルに登録しようとした際に前記ＶＭＭに対する割り込みを発生させる手段を有し、前記ＶＭＭは前記割り込みを検出すると、前記ＴＬＢ挿入命令のゲスト実アドレスに対応するホスト実アドレスを取得し、前記ＴＬＢ挿入命令のゲスト仮想アドレスと前記ホスト実アドレスを対応付ける変換情報を前記ホストページテーブルに登録することを特徴とする請求項１記載の仮想計算機システム。
【請求項５】
複数のプロセッサで共有するホストページテーブルと、各プロセッサが占有するホストページテーブルとを有することを特徴とする請求項１記載の仮想計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物理計算機システム上でホストプログラム（仮想計算機モニタとも称する）の制御下に複数の仮想計算機を構築し各仮想計算機上でゲストプログラムが動作する仮想計算機システムに係り、特にゲスト仮想アドレスをホスト実アドレスに変換するページテーブルをホストプログラムが管理する仮想計算機システムに関する。
【背景技術】
【０００２】
実主記憶を論理的に分割して１つまたは複数の仮想計算機に割り当てる仮想計算機システムにおいて、特許文献１のようにゲスト仮想アドレスとホスト実アドレスの対応を示す変換テーブルを使用する技術がある。ゲストプログラムが複数のアドレス変換モードで動作でき且つそれぞれのアドレス変換モードにおいて同一ゲスト仮想アドレスが別のホスト実アドレスに変換するページテーブルが存在する場合、特許文献１の技術単体では性能オーバーヘッドが発生する。
【０００３】
仮想計算機システムにおいて、特許文献２のようにゲストプログラムの切替の際に切替前のアドレス変換バッファの登録内容を退避し切替後のゲストプログラム用の専属退避領域からアドレス変換情報を読出してアドレス変換バッファの登録内容を置き換える技術がある。
【０００４】
【特許文献１】特開２００１−０５１９００号公報
【特許文献２】特開平０７−０９３２２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
解決しようとする問題点は、仮想計算機のアドレス変換機構に関してハードウェアアシストの無いプラットフォームで仮想計算機システムを構築する場合で、仮想計算機上で動作するゲストプログラムが複数のアドレス変換モードで動作可能であり且つ各アドレス変換モードにおいて同一ゲスト仮想アドレスが別ホスト実アドレスへ変換される場合、同一のページテーブルに重複登録され不正なアドレス変換によりホスト実アドレスにアクセスするのを避ける為、ゲストアドレス変換モードに応じてページテーブルの全エントリを無効化しページテーブルのエントリを入れ替える必要があり時間がかかってしまうという点である。
【課題を解決するための手段】
【０００６】
本発明は、仮想計算機毎に複数のホストページテーブルを用意し仮想計算機上で動作するゲストプログラムのアドレス変換モードが替わるのに応じてホストページテーブルの１つを選択し、ページテーブルの先頭をポイントするレジスタへ該選択したホストページテーブルの先頭アドレスを設定することでホストページテーブルの選択を実施することを特徴とする。また複数のホストページテーブルの一部を複数のプロセッサで共有することを特徴とする。
【発明の効果】
【０００７】
本発明は、ゲストプログラムのアドレス変換モードの切り替えに応じての迅速なページテーブルの切り替えを少ない主記憶使用量で実現できるため、仮想計算機システムの性能が向上するという効果がある。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の実施例について図面を用いて詳述する。
【実施例１】
【０００９】
図１は本発明を適用した仮想計算機システムの一実施例を示す構成図である。図１において、プロセッサ１００及びプロセッサ１０１はそれぞれアドレス変換機構１１０を有する。
【００１０】
アドレス変換機構１１０は、ゲスト仮想アドレスとホスト実アドレスの対応が登録されるＴＬＢ１１２と、ＴＬＢ１１２に対応が登録されていない場合、主記憶２００上に作成されたホストページテーブル２１０（又はホストページテーブル２２０）を探索して、ゲスト仮想アドレスとホスト実アドレスの対応をＴＬＢ１１２に登録するページテーブル探索機構１１１と、ホストページテーブルの先頭アドレスを示すＰＴＡレジスタ１１３からなる。ホストページテーブルはホストページテーブル２１０とホストページテーブル２２０以外にも主記憶２００条に複数あるが、その先頭アドレスが、ＰＴＡレジスタ１１３に設定されている場合にのみ、ページテーブル探索機構１１１の探索対象となる。
【００１１】
ＶＭＭ３００はプロセッサ１００が実行するホストプログラムであり主記憶２００の全体をアクセスすることができる。ＶＭＭ３００はプロセッサ１００および主記憶２００を論理的に分割して割り当てて仮想計算機４００、４０１を構築し制御する。ＶＭＭ３００が論理的に分割して仮想計算機４００、４０１に割り当てた主記憶２００の一部をゲスト領域２３０、２３１と呼ぶ。
【００１２】
仮想計算機４００上で動作するゲストプログラムは当該仮想計算機４００に割り当てられたゲスト領域２３０にゲストプログラが仮想アドレス空間をアクセスできるようにするために、ＴＬＢ１１２にゲスト仮想アドレスとゲスト実アドレスの対応をゲストページテーブルに登録しようとする。
【００１３】
ゲストプログラムがＴＬＢ１１２にゲスト仮想アドレスとゲスト実アドレスの対応をゲストページテーブルに登録しようとするのを契機にＶＭＭ３００が起動し、ゲスト仮想アドレスとホスト実アドレスの対応を、ＴＬＢ１１２とホストページテーブル２１０に登録しゲストプログラムを起動する。
【００１４】
図３はゲストプログラムが動作する仮想プロセッサ５３０が、ある場合には複数あるアドレス変換モードのひとつであるモードＡ５３１で動作してゲスト仮想アドレス空間５００を使用し、ある場合には他のアドレス変換モードであるモードＢ５３２で動作してゲスト仮想アドレス空間５１０を使用する場合で、異なるゲスト仮想アドレス空間５００とゲスト仮想アドレス空間５１０の同じゲスト仮想アドレスＶ５０１とゲスト仮想アドレスＶ５１１が、ホスト実アドレス空間５２０の異なるホスト実アドレスＡ５２１とホスト実アドレスＢ５２２と対応していることを示す。
【００１５】
ＶＭＭ３００はゲストプログラムがアドレス変換モードＡ５３１で動作するときは第１のホストページテーブル２１０のアドレスをＰＴＡレジスタ１１３に設定し、ページテーブル探索機構１１１が第１のホストページテーブル２１０を探索するようにする。また、ＶＭＭ３００はゲストプログラムがモードＡ５３１で使用するゲスト仮想アドレスＶ５０１とホスト実アドレスＡ５２１の対応を第１のホストページテーブル２１０のエントリ２１１に設定する。
【００１６】
更に、ＶＭＭ３００はゲストプログラムがアドレス変換モードＢ５３２で使用するゲスト仮想アドレスＶ５１１とホスト実アドレスＢ５２２の対応を第２のホストページテーブル２２０のエントリ２２１に設定する。
【００１７】
図４はアドレス変換モードＡ５３１で動作していたゲストプログラムが、ゲスト仮想アドレスＶ５０１により対応するホスト実アドレスＡ５２１の主記憶をアクセスしたあと、アドレス変換モードをモードＢ５３２に変更し、ゲスト仮想アドレスＶ５１１により対応するホスト実アドレスＢ５２２の主記憶をアクセスする処理を繰り返す場合のゲストプログラムとＶＭＭの処理を示すフローである。
【００１８】
ゲストプログラムがアドレス変換モードをモードＢ５３２に切り替える時（ステップ６００）に制御がＶＭＭに移行する（ステップ６２１）。ＶＭＭはＴＬＢに登録されているモードＡ５３１の変換情報をパージし（ステップ６１０）、第２のホストページテーブル２２０のアドレスをＰＴＡレジスタ１１３に設定し（ステップ６１１）、ゲストプログラムに制御を移行する（ステップ６２２）。
ゲストプログラムが仮想アドレスＶ５１１をアクセスしようとすると、ページテーブル探索機構１１１がＰＴＡレジスタ１１３で指定されるホストページテーブル２２０を探索しゲスト仮想アドレスＶ５１１とホスト実アドレスＢ５２２の対応づけをＴＬＢに登録する。これによりゲストプログラムの処理ステップ６０１ではホスト実アドレスＢの主記憶領域を正しくアクセスできる。
【００１９】
次に、ゲストプログラムがアドレス変換モードをモードＡに切り替える時（ステップ６０２）に制御がＶＭＭに移行する（ステップ６２３）。ＶＭＭはＴＬＢに登録されているモードＢの変換情報をパージし（ステップ６１２）、第１のホストページテーブル２１０のアドレスをＰＴＡレジスタ１１３に設定し（ステップ６１３）、ゲストプログラムに制御を移行する（ステップ６２４）。
ゲストプログラムがゲスト仮想アドレスＶ５０１をアクセスしようとすると、ページテーブル探索機構１１１がＰＴＡレジスタ１１３で指定されるホストページテーブル２１０を探索しゲスト仮想アドレスＶ５０１とホスト実アドレスＡ５２１の対応づけをＴＬＢに登録する。これによりゲストプログラムの処理ステップ６０３ではホスト実アドレスＡの主記憶領域を正しくアクセスできる。
【００２０】
以上のようにＶＭＭがゲストプログラムのアドレス変換モードに応じて、複数あるホストページテーブルから適切なものを選択し、ページテーブル探索機構の探索対象となるようにそのホストページテーブルの先頭アドレスをＰＴＡレジスタに設定することにより、短い実行時間でゲストプログラムのアドレス変換モードの変更に対応できる。また、アドレス変換モードの変更によりホストページテーブルの無効化を実行する必要が無いので、ホストページテーブルエントリの再利用率が高まり、ゲスト仮想アドレスとホスト実アドレスの対応がＴＬＢにもページテーブルにも無いことによるアドレス変換例外の発生頻度が少なくなり、結果としてゲストプログラムの実行性能が高まる。
【実施例２】
【００２１】
図１のリージョンレジスタ１１４は、アドレス変換機構１１０が多重アドレス空間モデルをサポートし、個々のアドレス空間に対応する仮想アドレスがリージョン識別子でタグ付けされる場合に、現リージョン識別子を保持するレジスタである。現リージョン識別子はアドレス変換機構１１０によるＴＬＢ１１２の探索および、ホストページテーブル２１０，２２０のうちのうちＰＴＡレジスタにその先頭アドレスが設定されている方の探索に使用される。
【００２２】
図２は、リージョンレジスタ１１４のビット幅がｎビットである場合で、ゲストプログラムが取得するリージョンレジスタのビット幅をＶＭＭがｍ（ｍ＜ｎ）ビットと仮想化し、ビットｍより上位にゲストプログラムのアドレス変換モードを識別する識別子(以下、アドレス変換モード識別子と呼ぶ)を設定する実施例を示す図である。
【００２３】
実施例１でゲストプログラムのアドレス変換モードがモードＡであるとき、アドレス変換モード識別子にＡを、モードＢであるとき、アドレス変換モード識別子にＢを設定すれば、たとえＴＬＢ１１２にモードＡとモードＢの変換データが混在していたとしても、アドレス変換機構１１０によるＴＬＢ１１２の探索により正しいモードの変換情報を取得することができる。したがって、図４に示す実施例１の処理フローのＴＬＢパージ処理６１０，６１２が不要になり、ＴＬＢエントリの再利用率が高まり、ゲスト仮想アドレスとホスト実アドレスの対応がＴＬＢにもページテーブルにも無いことによるアドレス変換例外の発生頻度が少なくなり、結果としてゲストプログラムの実行性能が高まる。
【実施例３】
【００２４】
図５のプロセッサ１００及びプロセッサ１０１には図１で示すアドレス変換機構と同等のアドレス変換機構１１０及びアドレス変換機構１１５があるが簡略化して記載してある。図１から図４で説明した内容と同様にプロセッサ１００及びプロセッサ１０１で動作するゲストプログラムのアドレス変換モードが、あるときはモードＡで、あるときはモードＢであり、ＶＭＭはそのモードに応じてページテーブル探索機構が探索するホストページーブルを切り替えるものとする。ホストページテーブルをプロセッサ１００とプロセッサ１０１とで共有するとエントリの書き換えにおいて排他制御が必要になり速やかに処理できない。しかし全てのホストページテーブルをプロセッサ毎に個別なものとすると主記憶を消費してしまう。
そこで書き換え頻度の少ないホストぺージテーブルはプロセッサ間で共有して使用し、書き換え頻度の多いホストぺージテーブルは各プロセッサが占有して使用する。図５ではホストページテーブル２３０をプロセッサ１００とプロセッサ１０１が共有して使用し、ホストページテーブル２１０をプロセッサ１００が、ホストページテーブル２４０をプロセッサ１０１が占有して使用することを示す。
【実施例４】
【００２５】
図６の２３０、２３１はＶＭＭが主記憶を分割して図１の２つの仮想計算機４００、４０１に割り当てるゲスト領域であり、ゲスト領域２３０、２３１のホスト実アドレスがそれぞれＨＲＡａ７３０、ＨＲＡｂ７３１である。ゲスト領域２３０、２３１は仮想計算機４００、４０１の主記憶である７００、７０１に対応し、仮想計算機４００、４０１それぞれで動作するゲストプログラムは、それぞれの主記憶７００，７０１のゲスト実アドレスをＧＲＡa７１０、ＧＲＡb７１１と認識して動作する。
【００２６】
ゲスト実アドレスと対応するホスト実アドレスは等しい場合もあり、等しくない場合もある。ホスト実アドレスとゲスト実アドレスの差分である値をベース値とよびその関係は、ホスト実アドレス＝ゲスト実アドレス＋ベース値  によって現される。図６ではＢＡＳＥa７４０がゲスト実アドレスＧＲＡa７１０と対応するホスト実アドレスＨＲＡa７３０との差分を示すベース値であり、ＨＲＡa＝ＧＲＡa+ＢＡＳＥaの関係がある。
図６ではＧＲＡa７１１＝ＨＲＡｂ７３１であるものとして記載しているがこれはゲスト実アドレスとホスト実アドレスの差分であるベース値が０である場合として同様にＧＲＡb＝ＨＲＡb+ＢＡＳＥb（ＢＡＳＥｂ＝０）と現すことができＶＭＭによる取り扱いの方法に違いはない。以下、ゲスト領域２３０を割り当てられた仮想計算機４００について実施例を述べる。
【００２７】
仮想計算機４００で動作するゲストプログラムが実アドレスモードで動作するとき、ＶＭＭはゲスト実アドレスＧＲＡa７１０とホスト実アドレスＨＲＡa７３０を対応付ける変換を複数あるホストページテーブルのひとつに登録し、ゲストプログラムを仮想アドレスモードで動作させる。つまりゲスト実アドレスをゲスト仮想アドレスのひとつとして扱うのである。これにより、ＧＲＡa７１０とホスト実アドレスＨＲＡa７３０との対応づけはＶＭＭのみの制御で実行でき、実計算機システムで動作するプログラムをそのままゲストプログラムとして利用できる利点がある。また、実施例１，２，３をゲスト実アドレスモードに対しても適用することがでるので、ゲストプログラムが、実アドレスモードと仮想アドレスモードを切り替えながら動作する場合において、実施例１，２，３を適用することができる。
【実施例５】
【００２８】
図７、図８ではホストページテーブルを作成する２つの方法について述べる。ＶＭＭは図７、図８のどちらか一方 または両方を使ってホストページテーブルエントリを作成する。
【００２９】
ＶＭＭは割り込みハンドラレジスタにＶＭＭの割り込みハンドラのアドレスを登録(ステップ８００)し、ゲストプログラム実行中の割り込みをＶＭＭがキャッチでるようにする。更に必要に応じて、ゲストプログラムがＴＬＢ操作命令を実行したときに実行が中断され割り込みが発生するようにプログラムステータスレジスタを設定する（ステップ８０１）。その後、ＶＭＭがゲストプログラムを起動する(ステップ８０２)と、物理プロセッサ上でゲスト命令が実行される(ステップ８１０)。
【００３０】
以降の処理について先ず図７で示す第１の方法を説明する。ゲストがゲストＴＬＢ挿入命令によりゲスト仮想アドレス（ＧＶＡa）とゲスト実アドレス（ＧＲＡa）を対応付ける変換情報をゲストページテーブルに挿入しようとした場合(ステップ８１１)、ステップ８００，８０１の設定により割り込みが発生しＶＭＭの割り込みハンドラが動作する(ステップ８０３)。ＶＭＭの割り込みハンドラではゲストＴＬＢ挿入命令のオペランドを解析しＧＶＡaとＧＲＡaを取得する(ステップ８０４)。次にＶＭＭ自身が持つ仮想計算機に対するメモリ割り当て情報を参照し、ゲスト実アドレスＧＲＡaに対応するホスト実アドレスＨＲＡaを取得する(ステップ８０５)。ＶＭＭはホストページテーブルにＧＶＡaをＨＲＡaに対応付ける変換情報を登録する(ステップ８０６)。ここでベース値ＢＡＳＥaは（ＨＲＡa―ＧＲＡa）になる。このあとゲストＴＬＢ挿入命令の次の命令からゲストプログラムを再起動し(ステップ８０７)、ゲストプログラムが実行される(ステップ８１２)。ゲストプログラムが仮想アドレスＧＶＡaをアクセスすると、ホストページテーブルの内容をＴＬＢに登録するハードウェア機構が動作し、ＧＶＡaをＨＲＡaに対応付ける変換情報がＴＬＢに登録され、ゲストプログラムのＧＶＡaの参照・更新に応じてＨＲＡaが参照・更新される。
【００３１】
次に図８で示す第２の方法を説明する。ゲストプログラム実行中にＴＬＢおよびホストページテーブルのどちらにも登録されていない仮想アドレスＧＶＡaをアクセスした場合(ステップ８３０)、ＴＬＢフォルト割り込みが発生しＶＭＭの割り込みハンドラが動作する(ステップ８３１)。ＶＭＭの割り込みハンドラではゲスト領域にあるゲストページテーブルを検索し、ＧＶＡaに対応するゲスト実アドレスＧＲＡaを取得する（ステップ８２０）。この後は前述した図７で示す第１の方法と同じようにＧＲＡaに対応するホスト実アドレスＨＲＡaを取得し（ステップ８０５）、ホストページテーブルにＧＶＡaをＨＲＡaに対応付ける変換を登録し（ステップ８０６）、ゲストプログラムを再起動する（ステップ８０７）と、ゲストプログラムが実行を再開する(ステップ８１２)。ゲストプログラムが仮想アドレスＧＶＡaをアクセスすると、ホストページテーブルの内容をＴＬＢに登録するハードウェア機構が動作し、ＧＶＡaをＨＲＡaに対応付ける変換情報がＴＬＢに登録され、ゲストプログラムのＧＶＡaの参照・更新に応じてＨＲＡaが参照・更新される。
【００３２】
なお、上記実施例ではプロセッサおよび仮想計算機を２個、ホストページテーブルを２個または３個として記述しているが、システムの構成要素の数はこれに限定されるものではない。
【図面の簡単な説明】
【００３３】
【図１】本発明による仮想計算機システムの１実施例の構成図である。
【図２】リージョン識別子の１部にゲストアドレス変換モードを付加する場合の１実施例を示す図である。
【図３】ゲストのアドレス変換モードに応じて同じゲスト仮想アドレスが、異なるホスト実アドレスに対応付けられることを示す図である。
【図４】ゲストのアドレス変換モードに応じてホストページテーブルを切替える処理フロー図である。
【図５】ホストページテーブルの１部をプロセッサが共有し、他のホストページテーブルをプロセッサが占有することを示す図である。
【図６】仮想計算機の主記憶と実主記憶の対応を示す図である。
【図７】ホストページテーブルの第１の作成方法を示すフロー図である。
【図８】ホストページテーブルの第２の作成方法を示すフロー図である。
【符号の説明】
【００３４】
１００，１０１  プロセッサ
１１０  アドレス変換機構
１１１  ページテーブル探索機構
１１２  ＴＬＢ
１１３  ＰＴＡレジスタ
１１４  リージョンレジスタ
２００  主記憶
２１０、２２０  ホストページテーブル
２１１、２２１  ホストページテーブルエントリ
２３０，２３１  ゲスト領域
３００  ＶＭＭ
４００、４０１  仮想計算機
５００  ゲスト仮想アドレス空間Ａ
５１０  ゲスト仮想アドレス空間Ｂ
５０１  ゲスト仮想アドレス空間Ａ内の仮想アドレス
５１１  ゲスト仮想アドレス空間Ｂ内の仮想アドレス
５２０  ホスト実アドレス空間
５２１、５２２  ホスト実アドレス
１００，１０１  プロセッサ
１１０、１１５  アドレス変換機構
１１３、１１４  ＰＴＡレジスタ
２００  主記憶
２１０、２３０、２４０  ホストページテーブル
７００、７１０  仮想計算機の主記憶
７１０、７１１  ゲスト実アドレス
７２０、７２１  仮想計算機上の主記憶に対応する実主記憶
７３０、７３１  ホスト実アドレス
７４０  ベース値
【図１】
2007122305.tif 000003
【図２】
2007122305.tif 000004
【図３】
2007122305.tif 000005
【図４】
2007122305.tif 000006
【図５】
2007122305.tif 000007
【図６】
2007122305.tif 000008
【図７】
2007122305.tif 000009
【図８】
2007122305.tif 000010