(57)【要約】      （修正有）【課題】仮想計算機における保護例外処理によりデバイスの仮想化を行う制御方法において、例外発生原因になった命令の仮想計算機上の仮想アドレスから物理アドレスの算出と、命令のバイナリコードからの命令解析、及び物理計算機でその命令が実行された場合と同等の動作を擬似的に実行する処理量を低減して、仮想化していないデバイスに比べて、処理量の増大を低減する。【解決手段】保護例外処理を実行する場合、最適化された擬似命令を格納している保護例外情報が保護例外保存手段に存在して再利用可能か否かを命令アドレスから判定し、存在した場合、格納されている擬似命令を参照して実施する。【選択図】図６
2010198398.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つ以上の物理プロセッサと、物理メモリと、前記物理プロセッサ及び物理メモリを論理的に分割して仮想プロセッサ及び仮想計算機物理メモリとして用いる仮想計算機と、前記仮想計算機を制御する仮想計算機制御部とを備える計算機装置において、
前記仮想計算機は、前記仮想プロセッサと、前記仮想計算機物理メモリと、前記仮想計算機物理メモリのアドレス空間のアドレス情報と前記物理メモリのアドレス空間のアドレス情報との対応関係を有するページテーブルと、前記仮想計算機物理メモリのうち保護されているアドレス空間のアドレス情報を管理する保護対象テーブルとを備え、
前記仮想計算機制御部は、前記保護対象テーブルで管理されるアドレス空間がアクセスされた場合に保護例外処理を実行する保護例外処理部と、実行された保護例外処理に関する保護例外情報を保存する保護例外保存領域と、前記仮想計算機物理メモリのアドレスと物理メモリのアドレスとを変換するアドレス変換部と、命令解析部とを備え、
前記保護例外処理を実行するに際し、前記保護例外処理部は、保護例外処理を発生させた命令アドレスと前記保護例外保存領域に保存される保護例外情報の命令アドレスとを比較し、
前記保護例外処理を発生させた命令アドレスと前記保護例外情報の命令アドレスとが一致する場合、
前記保護例外処理部は、前記一致する命令アドレスの保護例外情報が有する擬似命令を用いて、前記保護例外処理を実行することを特徴とする計算機装置。
【請求項２】
前記保護例外処理を発生させた命令アドレスと前記保護例外情報の命令アドレスとが一致しない場合、
前記保護例外処理部は、前記保護例外処理を発生させた命令アドレスに基づき、前記ページテーブルから前記仮想計算機物理メモリのアドレスを取り出し、
前記アドレス変換部は、前記取り出した仮想計算機物理メモリのアドレスを、命令の物理メモリのアドレスに変換し、
前記保護例外処理部は、前記変換した命令の物理メモリのアドレスを用いて、前記物理メモリから命令を読み出し、
前記命令解析部は、前記命令を解析して擬似命令を生成し、
前記保護例外処理部は、前記擬似命令を用いて保護例外処理を実行することを特徴とする請求項１記載の計算機装置。
【請求項３】
前記保護例外処理部は、保護例外処理を発生させた命令アドレスと前記保護例外情報の命令アドレスとが一致しない場合、前記保護例外処理を発生させた命令アドレスに基づき生成された前記擬似命令を、前記保護例外情報に格納することを特徴とする請求項２記載の計算機装置。
【請求項４】
前記保護例外処理部は、更に、前記保護例外処理を発生させた命令アドレス、前記ページテーブルから取り出した前記仮想計算機物理メモリのアドレス、前記命令の物理メモリのアドレス及び前記命令を、前記保護例外情報に格納することを特徴とする請求項３記載の計算機装置。
【請求項５】
前記ページテーブルは、命令アドレスの少なくとも一部がインデックスとして連なった複数のテーブルを有し、
前記保護例外処理部は、前記ページテーブルのあるテーブルから読み出された仮想計算機物理アドレスと前記一致する命令アドレスの保護例外情報が有する仮想計算機物理アドレスとを比較し、
前記比較の結果、等価である場合、前記一致する命令アドレスの保護例外情報が有する物理アドレスを用いて、前記あるテーブルに連なる次のテーブルを読み、
前記比較の結果、等価でない場合、前記保護例外情報を取り消す、
ことを特徴とする請求項１記載の計算機装置。
【請求項６】
前記保護例外情報を取り消した後、
前記保護例外処理部は、前記保護例外処理を発生させた命令アドレスに基づき、前記ページテーブルから前記仮想計算機物理メモリのアドレスを取り出し、
前記アドレス変換部は、前記取り出した仮想計算機物理メモリのアドレスを、命令の物理メモリのアドレスに変換し、
前記保護例外処理部は、前記変換した命令の物理メモリのアドレスを用いて、前記物理メモリから命令を読み出し、
前記命令解析部は、前記命令を解析して擬似命令を生成し、
前記保護例外処理部は、前記擬似命令を用いて保護例外処理を実行することを特徴とする請求項５記載の計算機装置。
【請求項７】
前記保護例外処理部は、前記命令の物理アドレスを用いて、前記物理メモリから命令のバイナリを取り出し、
前記物理メモリから取り出した命令のバイナリと前記保護例外情報内に保持される命令のバイナリと比較し、
前記比較の結果、等価である場合、前記保護例外情報内に保持してある擬似命令を用いて擬似命令を実行し、
前記比較の結果、等価でない場合、前記保護例外情報を取り消す、
ことを特徴とする請求項５記載の計算機装置。
【請求項８】
前記保護例外情報を取り消した後、
前記命令解析部は、前記命令のバイナリを解析して擬似命令を生成し、
前記保護例外処理部は、前記擬似命令を用いて保護例外処理を実行することを特徴とする請求項７記載の計算機装置。
【請求項９】
前記物理プロセッサおよび物理メモリは、前記仮想計算機制御部により、複数の仮想計算機上に、前記仮想プロセッサおよび前記仮想計算機物理メモリとして分割されていることを特徴とする請求項１記載の計算機装置。
【請求項１０】
少なくとも１つ以上の物理プロセッサと、物理メモリと、前記物理プロセッサ及び物理メモリを論理的に分割して仮想プロセッサ及び仮想計算機物理メモリとして用いる仮想計算機と、前記仮想計算機を制御する仮想計算機制御部とを備える計算機装置における制御方法であって、
前記仮想計算機は、前記仮想プロセッサと、前記仮想計算機物理メモリと、前記仮想計算機物理メモリのアドレス空間のアドレス情報と前記物理メモリのアドレス空間のアドレス情報との対応関係を有するページテーブルと、前記仮想計算機物理メモリのうち保護されているアドレス空間のアドレス情報を管理する保護対象テーブルとを備え、
前記仮想計算機制御部は、前記保護対象テーブルで管理されるアドレス空間がアクセスされた場合に保護例外処理を実行する保護例外処理部と、実行された保護例外処理に関する保護例外情報を保存する保護例外保存領域と、前記仮想計算機物理メモリのアドレスと物理メモリのアドレスとを変換するアドレス変換部と、命令解析部とを備え、
前記保護例外処理を実行するに際し、前記保護例外処理部は、保護例外処理を発生させた命令アドレスと前記保護例外保存領域に保存される保護例外情報の命令アドレスとを比較し、
前記保護例外処理を発生させた命令アドレスと前記保護例外情報の命令アドレスとが一致する場合、
前記保護例外処理部は、前記一致する命令アドレスの保護例外情報が有する擬似命令を用いて、前記保護例外処理を実行することを特徴とする制御方法。
【請求項１１】
前記保護例外処理を発生させた命令アドレスと前記保護例外情報の命令アドレスとが一致しない場合、
前記保護例外処理部は、前記保護例外処理を発生させた命令アドレスに基づき、前記ページテーブルから前記仮想計算機物理メモリのアドレスを取り出し、
前記アドレス変換部は、前記取り出した仮想計算機物理メモリのアドレスを、命令の物理メモリのアドレスに変換し、
前記保護例外処理部は、前記変換した命令の物理メモリのアドレスを用いて、前記物理メモリから命令を読み出し、
前記命令解析部は、前記命令を解析して擬似命令を生成し、
前記保護例外処理部は、前記擬似命令を用いて保護例外処理を実行することを特徴とする請求項１０記載の制御方法。
【請求項１２】
前記保護例外処理部は、保護例外処理を発生させた命令アドレスと前記保護例外情報の命令アドレスとが一致しない場合、前記保護例外処理を発生させた命令アドレスに基づき生成された前記擬似命令を、前記保護例外情報に格納することを特徴とする請求項１１記載の制御方法。
【請求項１３】
前記保護例外処理部は、更に、前記保護例外処理を発生させた命令アドレス、前記ページテーブルから取り出した前記仮想計算機物理メモリのアドレス、前記命令の物理メモリのアドレス及び前記命令を、前記保護例外情報に格納することを特徴とする請求項１２記載の制御方法。
【請求項１４】
前記ページテーブルは、命令アドレスの少なくとも一部がインデックスとして連なった複数のテーブルを有し、
前記保護例外処理部は、前記ページテーブルのあるテーブルから読み出された仮想計算機物理アドレスと前記一致する命令アドレスの保護例外情報が有する仮想計算機物理アドレスとを比較し、
前記比較の結果、等価である場合、前記一致する命令アドレスの保護例外情報が有する物理アドレスを用いて、前記あるテーブルに連なる次のテーブルを読み、
前記比較の結果、等価でない場合、前記保護例外情報を取り消す、
ことを特徴とする請求項１０記載の制御方法。
【請求項１５】
前記保護例外情報を取り消した後、
前記保護例外処理部は、前記保護例外処理を発生させた命令アドレスに基づき、前記ページテーブルから前記仮想計算機物理メモリのアドレスを取り出し、
前記アドレス変換部は、前記取り出した仮想計算機物理メモリのアドレスを、命令の物理メモリのアドレスに変換し、
前記保護例外処理部は、前記変換した命令の物理メモリのアドレスを用いて、前記物理メモリから命令を読み出し、
前記命令解析部は、前記命令を解析して擬似命令を生成し、
前記保護例外処理部は、前記擬似命令を用いて保護例外処理を実行することを特徴とする請求項１４記載の制御方法。
【請求項１６】
前記保護例外処理部は、前記命令の物理アドレスを用いて、前記物理メモリから命令のバイナリを取り出し、
前記物理メモリから取り出した命令のバイナリと前記保護例外情報内に保持される命令のバイナリと比較し、
前記比較の結果、等価である場合、前記保護例外情報内に保持してある擬似命令を用いて擬似命令を実行し、
前記比較の結果、等価でない場合、前記保護例外情報を取り消す、
ことを特徴とする請求項１４記載の制御方法。
【請求項１７】
前記保護例外情報を取り消した後、
前記命令解析部は、前記命令のバイナリを解析して擬似命令を生成し、
前記保護例外処理部は、前記擬似命令を用いて保護例外処理を実行することを特徴とする請求項１６記載の制御方法。
【請求項１８】
前記物理プロセッサおよび物理メモリは、前記仮想計算機制御部により、複数の仮想計算機上に、前記仮想プロセッサおよび前記仮想計算機物理メモリとして分割されていることを特徴とする請求項１０記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機環境において物理的な計算機装置上で実行する擬似命令に関し、命令の読込みに伴う仮想アドレス(以下リニアアドレスと略称)、物理アドレスの変換、及び命令解析の処理速度を高める方法に関するものである。 
【背景技術】
【０００２】
近年、集積回路に集積可能な素子数の増大と、それらを結合する高密度実装技術の発展とに伴い、１つの物理計算機の筐体に収められるプロセッサ数、Ｉ／Ｏデバイス数、メモリ量等の計算資源が増大する傾向にある。また、複数の物理計算機の筐体をネットワークにより結合し、１つの物理計算機として扱う技術も発展しており、それに伴い、１つの物理計算機に収められる計算資源はさらに増大する傾向にある。このように１つの物理計算機に多くの計算資源が納められた物理計算機は、計算資源が少ない物理計算機に比べて、電源を入れてから利用可能になるまでに多くの時間を必要とする。このため、物理計算機の電源は、常時、投入されたままの状態であることが好まれる傾向にある。
【０００３】
このような大規模物理計算機を効率的に使用するために、１つの物理計算機の資源を仮想的に複数に分割する方法である論理区間分割（ＬＰＡＲ：Logical PARtition)を行って、仮想計算機システムとして構成する技術が普及しつつある。論理区間分割された各区間は、仮想計算機としてそれぞれ独立したＯＳが動作可能である。論理区間分割される物理計算機は、常時、電源が入っている状態にあり、論理分割された各区間は、仮想計算機として、それぞれ擬似的に電源を入れたり落としたりすることができる。このように、論理区間分割を適用すると大規模な物理計算機においても、ノード資源の利用効率と可用性との向上を図ることができる。
【０００４】
前述したような仮想計算機システムは、ある仮想計算機が、同一物理計算機内の他の仮想計算機との間での独立性を確保するため、仮想計算機システムの制御のためのプログラムである仮想計算機制御部が必要である。
【０００５】
この仮想計算機制御部は、独立した仮想計算機に、物理計算機の各プロセッサ、Ｉ／Ｏデバイス等を分割し、独占または共有して使用させるための制御機能やデバイス仮想化機能を、提供することが必要である。また、仮想計算機制御部は、各仮想計算機に独立したメモリ空間を使用させるために、仮想計算機が物理メモリとして認識している仮想計算機上の物理メモリ空間(以下、仮想計算機物理メモリと略称)に対するアドレス(以下、仮想計算機物理アドレスと略称)を物理メモリのアドレス(以下、物理アドレスと略称)にアドレス変換設定機能を提供することが必要である。
【０００６】
一般的に、ＯＳは、物理メモリ空間とは異なる仮想メモリ空間を構築する。ＯＳ及びＯＳ上で稼動するプロセスは、仮想メモリ空間のアドレス(リニアアドレス)を指定してメモリ操作を行う。また、ＣＰＵは、多段ページテーブル(以下ＰＴと略称する)機能を有する。ＰＴ機能とは、仮想メモリ空間と物理メモリ空間とのアドレス変換やメモリの保護を行う機能として、変換前アドレス(リニアアドレス)と変換後アドレス(物理アドレス)との対応を規定するメモリ管理方式のことである。
【０００７】
ＰＴでは、まずＰＴのベースとなるアドレスがあり、これが最上位テーブルを指している。このテーブルに対して、リニアアドレスの一部がインデックスとなり、このテーブルの中の一部分を指定する。指定された部分には、次のテーブルのアドレスが入っており、アドレスを用いてテーブルを参照する。次のテーブルでも、同じようにリニアアドレスの一部がインデックスとなり、テーブルの中の一部分を指定する。このように、テーブルが連なった構造をＰＴという。ＰＴに対して、上述の動作を繰り替えす事で、リニアアドレスは、最終テーブルの中の特定のアドレスを、一意に指定できる。ＯＳは、物理メモリをアクセスする時に、このＰＴの恒等変換を利用してリニアアドレスを指定する事で、物理メモリ空間にアクセスする。
【０００８】
仮想計算機制御部は、物理メモリ空間を分割して、仮想計算機毎に物理メモリ空間を作成し、各仮想計算機に割り当てる。ここで、各仮想計算機に割り当てられた仮想計算機物理メモリ空間は、物理メモリ空間ではアドレス０が基点とは限らないが、仮想計算機上のＯＳはアドレス０を基点とする物理メモリを前提に、作られている。そこで仮想計算機制御部は、各仮想計算機が想定するアドレス０を基点とするメモリ空間を作成し、これを仮想計算機物理メモリ空間とする。仮想計算機で作られるプロセスは、この仮想計算機物理メモリ空間を基準にしているので、仮想計算機上で生成したＰＴのテーブル内の情報は全て仮想計算機物理アドレスで保持される。
【０００９】
さて、仮想計算機が仮想計算機物理アドレスを用いて仮想計算機物理メモリ空間をから物理メモリを読む場合、仮想計算機物理アドレスを物理メモリ空間の物理アドレスに変換して、物理メモリにアクセスする必要がある。つまり、仮想計算機上のＯＳ及びＯＳ上で稼動するプロセスは、仮想計算機用の仮想計算機物理メモリ空間にアクセスするとき、リニアアドレスから仮想計算機のＰＴを読み、ＰＴの１テーブルを読む度に、仮想計算機物理アドレスに対応する物理アドレスに変換することで最終的な物理アドレスを算出して、物理メモリにアクセスすることになる。
【００１０】
また、一般的にＣＰＵが発行する命令は物理メモリ空間に格納されている値ではバイナリコードとなっている。仮想計算機制御部が、仮想計算機上のＯＳやプログラムが発行した命令の擬似命令を実行するためには、この命令バイナリコードから命令の種類や命令の引数、命令長などの意味のある情報に命令解析を行うことが必要となる。そのためには、ＣＰＵが持つ全ての命令のパターンマッチングとＣＰＵのアーキテクチャに沿った命令解析機能を仮想計算機制御部によって解析機能を実現する必要がある。
【００１１】
また、前述したようなデバイス仮想化には、特定のアドレス空間を保護することができるプロセッサが、用いられる。保護機能を持ったプロセッサは、アクセス空間の保護された領域（以下、保護領域と称する）の読み込みまたは書き込みが行われると、例外が起こり、仮想計算機制御部の例外処理プログラムが実行される。この保護例外のための保護例外処理プログラムにより、デバイスの仮想化が実現される。保護例外処理プログラムは、読み書きを行った命令を特定し、その命令が物理計算機で実行される場合と同等の動作を擬似的に実行することにより、仮想デバイスを実現する制御である。
【００１２】
なお、前述のような仮想デバイスを実現する制御に関する従来技術として、例えば、特許文献１、２等に記載された技術が知られている。
【００１３】
ある種のプロセッサにおいて、割り込み処理装置のレジスタは、物理メモリアドレス空間内の定められたアドレス領域（物理フレーム）に、割り当てられる。この割り当てられた個々のアドレスの読み込みまたは書き込みを行うことにより、レジスタへの読み書きが行われる。割り込みデバイスを仮想化する場合、割り込み装置のレジスタが割り当てられた物理フレームを、アクセス保護が可能な仮想計算機物理アドレス領域（ページ）に関連付け、このページを保護対象扱いにし、書き込みまたは読み込み例外処理の一部を仮想計算機制御部で処理する。この例外の処理により、割り込み処理装置が仮想化される。
【００１４】
従って、割り込み処理装置のレジスタへの読み書きは、読み書きを行った命令の特定及び読み書きの命令を擬似的に実行する例外処理を、必要とする。割り込み処理プログラムが割り込み処理終了を報告するためのレジスタも、この保護領域に割り当てられるレジスタであるので、同様に命令の特定と擬似的に命令を実行する処理とが必要である。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００３−１６７７５８号公報
【特許文献２】特開２００６−０８５５４３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
前述したように、保護領域にレジスタを割り当て、保護例外処理によりデバイスの仮想化を行う制御方法による従来技術は、例外発生原因になった仮想計算機上の命令のリニアアドレスから物理計算機用物理アドレスの特定と、命令のバイナリコードからの命令解析、及び物理計算機でその命令が実行された場合と同等の動作を擬似的に実行する処理とが必要であり、仮想化していないデバイスに比べて、処理量が増大するという問題点を有している。また、前述の従来技術は、使用頻度の多いレジスタが保護対象となるようなデバイス（例えば、前述の割り込み処理装置）の仮想化の場合、その保護例外処理が、システム全体の処理量に対して、無視できない程、増大してしまうという問題を生じさせてしまう。
【課題を解決するための手段】
【００１７】
上記課題を解決するために、本発明に係る計算機装置及び制御方法では、少なくとも１つ以上の物理プロセッサと、物理メモリと、前記物理プロセッサ及び物理メモリを論理的に分割して仮想プロセッサ及び仮想計算機物理メモリとして用いる仮想計算機と、前記仮想計算機を制御する仮想計算機制御部とを備える計算機装置において、前記仮想計算機は、前記仮想プロセッサと、前記仮想計算機物理メモリと、前記仮想計算機物理メモリのアドレス空間のアドレス情報と前記物理メモリのアドレス空間のアドレス情報との対応関係を有するページテーブルと、前記仮想計算機物理メモリのうち保護されているアドレス空間のアドレス情報を管理する保護対象テーブルとを備え、前記仮想計算機制御部は、前記保護対象テーブルで管理されるアドレス空間がアクセスされた場合に保護例外処理を実行する保護例外処理部と、実行された保護例外処理に関する保護例外情報を保存する保護例外保存領域と、前記仮想計算機物理メモリのアドレスと物理メモリのアドレスとを変換するアドレス変換部と、命令解析部とを備え、前記保護例外処理を実行するに際し、前記保護例外処理部は、保護例外処理を発生させた命令アドレスと前記保護例外保存領域に保存される保護例外情報の命令アドレスとを比較し、前記保護例外処理を発生させた命令アドレスと前記保護例外情報の命令アドレスとが一致する場合、前記保護例外処理部は、前記一致する命令アドレスの保護例外情報が有する擬似命令を用いて、前記保護例外処理を実行することを特徴とする。
【００１８】
即ち、本発明では、少なくとも１つのＣＰＵとメモリとを共有し、複数のプログラムを切り替えて実行する複数の仮想計算機が構成された仮想計算機システムにおいて、前記仮想計算機の制御のための仮想計算機制御手段を備え、該仮想計算機制御手段は、例外を発生させるか否かを決定するため保護対象アドレスを格納した保護対象保持手段と、再利用可能な保護例外処理のための最適化された擬似命令を格納する保護例外保存手段とを有し、前記仮想計算機制御手段は、前記ＣＰＵにより実行されるプログラムが特定のアドレス領域に対して読み込みまたは書き込みを行ったとき、保護対象保持手段を参照して、保護例外処理を実行するか否かを決定し、保護例外処理を実行する場合、保護例外の原因となったアドレスによる保護例外情報が、前記再利用可能な保護例外処理のための最適化された擬似命令を格納する保護例外保存手段に存在するか否かを保護例外情報の中の命令アドレスと、保護例外処理の発生原因となった命令のアドレスとを比較して判定する。
【００１９】
命令アドレスが一致する保護例外情報が保護例外保存領域中に存在しない場合は、命令アドレス(リニアアドレス)の物理アドレスの算出において、仮想計算機用物理アドレスから物理アドレスへの変換処理を、ＰＴの多段テーブルの各テーブルを参照する度に行い、算出した物理アドレスから読み出した命令を命令解析を行い、命令解析で得られた擬似命令を持って保護例外処理を行う。この際、多段テーブルの参照で行ったアドレス変換の情報や命令の解析情報を、保護例外情報として保護例外保存領域に保持しておく。
【００２０】
一方、命令アドレスが一致する保護例外情報が保護例外保存領域中に存在する場合、命令アドレス(リニアアドレス)からＰＴを用いた物理アドレスの算出において、仮想計算機用物理アドレスから物理アドレスへの変換処理を、保護例外情報内の変換情報を用いて省略し、物理アドレスから読み出した命令が保護例外情報内の命令と一致するか判定する。これにより、命令解析のオーバヘッド削減し、前記保護例外情報に保持された擬似命令を用いて保護例外処理を行う。このように、変換処理を省略したり、オーバヘッドを削減する事により、保護例外処理の処理量を低減する。
【発明の効果】
【００２１】
本発明によれば、物理計算機でのデバイス操作で、命令の仮想計算機用仮想計算機物理アドレスから物理計算機用物理アドレスにおけるオーバヘッドと、擬似命令処理と命令解析処理の処理量を低減することが可能となり、処理速度の向上した仮想計算機及びその制御方法を実現できる。
【図面の簡単な説明】
【００２２】
【図１】本発明を適用した仮想計算機システムの構成を示すブロック図。
【図２】本発明における仮想計算機及び仮想計算機制御部の構成を示すブロック図。
【図３】保護例外保存領域と保護例外情報の関係とを示す模式図。
【図４】保護例外情報に保護例外処理の情報を保持する動作を説明する図。
【図５】保持した保護例外情報を用いて保護例外処理を実行する動作を説明する図。
【図６】図４及び図５に示す動作のフローチャート。
【発明を実施するための形態】
【実施例１】
【００２３】
以下、本発明による仮想計算機システム及び、仮想計算機システムの制御方法の実施形態を図面により説明する。
【００２４】
図１は本発明の一実施形態による仮想計算機システムの構成を示すブロック図である。図１に示すシステムは、複数の仮想計算機及び仮想計算機制御部が動作する物理計算機の構成を示したものである。
【００２５】
物理計算機１００には、複数のプロセッサ１０１０〜１０１１が収められており、プロセッサは１つ以上であれば、いくつ収められていてもよい。これらのプロセッサ１０１０〜１０１１は、バス１０２を介して物理メモリ１０３やＰＣＩ Ｄｅｖｉｃｅ１０４に接続されている。物理メモリ１０３は仮想計算機制御部１０７や、仮想計算機１０５〜１０６上のプログラムを記憶する。
【００２６】
物理計算機１００の中に構成される仮想計算機１０５〜１０６は、仮想計算機制御部１０７によって制御される。各仮想計算機１０５〜１０６上では、ＯＳ１０５３、１０６３がそれぞれ独立して動作可能である。仮想計算機１０５〜１０６は仮想ＰＣＩ  Ｄｅｖｉｃｅ１０５４、１０６４等の仮想デバイス１０５５、１０６５から構成され、これらの仮想デバイスは、例えば仮想ＰＣＩ  Ｄｅｖｉｃｅ１０５４、１０６４の場合、各仮想計算機１０５〜１０６上で動作するＯＳ１０５３、１０６３にとって、物理計算機１００で提供されるＰＣＩ  Ｄｅｖｉｃｅ１０４と同等の動作をする。仮想計算機１０５〜１０６はそれぞれ、仮想プロセッサ１０５１〜１０６１、仮想計算機物理メモリ１０５２〜１０６２、仮想デバイス１０５５、１０６５を備えて構成される。
【００２７】
図２は仮想計算機を実現するプログラムについて説明する図であり、次にこれについて説明する。
【００２８】
物理計算機の中に構成される仮想計算機２００は、仮想計算機制御部２０１によって制御される。
【００２９】
仮想計算機２００には、前述したようにプロセッサがアドレス変換とメモリ保護を行う機構として提供する仮想計算機物理アドレスを用いたＰＴ２００４の情報が、保持されている。前述したような仮想ＰＣＩ  Ｄｅｖｉｃｅ等の仮想デバイスの機能情報２００２は、仮想計算機制御部２０１に割り当てられた仮想計算機物理メモリ２００１のアドレスに対応付けられている。
【００３０】
また、仮想計算機２００は、プロセッサが提供する保護対象テーブル２００３の情報を有し、割り当てたアドレスを保護対象アドレスとするか否かを決定し、保護対象テーブルに定義する(２００５)。仮想計算機上で動作するプログラムが、保護対象テーブルで保護対象になっているアドレスに割り当てられた仮想デバイスを参照すると、保護例外割り込みを発生させる(２０２０)。これにより、仮想計算機制御部の保護例外処理２０１０を呼び出す。
【００３１】
仮想計算機制御部２０１は、物理計算機１００の物理メモリ１０３にロードされた仮想計算機制御プログラムにより実現され、仮想計算機１０５、１０６を制御するものである。
【００３２】
仮想計算機制御部２０１は、保護例外割り込みの処理を行う保護例外処理２０１０の他に、再利用可能な擬似命令を保護例外情報２０１３〜２０１５として保持している(２０２３〜２０２５)保護例外保存領域２０１２を有する。また、仮想計算機制御部２０１は、仮想計算機物理メモリのアドレスと物理アドレスとを変換するためのアドレス変換部２０１６、保護例外処理に通知された例外情報が何の命令によって呼び出されたのか解析する命令解析部２０１１を有する。これらは、保護例外処理２０１０が保護例外情報を参照する時(２０２２)、保護例外がどのような命令か解析する時(２０２１)、仮想計算機物理メモリのアドレスから物理アドレスに変換する時(２０２６)等に、呼び出される。
【００３３】
仮想計算機２００上のＯＳ及びＯＳ上で稼動するプロセスが実行される命令は殆どが仮想計算機２００上で直接実行されるが、仮想計算機２００上の制御レジスタを操作する特権命令や前述の通り仮想デバイスに割り当てられた仮想計算機物理メモリ２００１を操作する命令等は実行する際に仮想計算機制御部２０１を呼び出して、代わりに実行させる。これは、物理計算機の制御にも関わる制御レジスタや複数の仮想計算機上で共有して利用している仮想デバイスを、各仮想計算機上でそれぞれが勝手に操作する事が出来ないためである。
【００３４】
次に、図３を用いて、仮想計算機制御部に格納されている保護例外に関係する情報（以下、保護例外情報と称する）について、説明する。
【００３５】
仮想計算機制御部２０１には、保護例外保存領域３００がある。この保護例外保存領域３００に登録されていない保護例外が発生する度に、新たに保護例外情報３０１，３０２を生成し、保護例外保存領域３００の保護例外情報リスト３００１に、保護例外情報３０１，３０２を追加する。登録された情報の参照を容易にするため、保護例外保存領域３００は、他に、保護例外情報３０１，３０２を整頓する保護例外情報整理データ３００２を持つ。
【００３６】
保護例外情報３０１，３０２は、保護例外の情報を保持するため、保護例外の命令アドレス(リニアアドレス)３０１１，３０２１と、この命令アドレス(リニアアドレス)を物理アドレスに変換するときに読むＰＴのテーブル毎のテーブル仮想計算機物理アドレス（３０１２、３０２２、３０１４、３０２４、３０１４、３０２４）と、この仮想計算機物理アドレスを物理アドレスに変換した結果であるテーブル物理アドレス（３０１３、３０２３、３０１５、３０２５、３０１７、３０２７）とを持つ。
【００３７】
これらのテーブル仮想計算機物理アドレス及びテーブル物理アドレスは、テーブル毎に存在するため、ＰＴの２番目のテーブルのテーブルアドレスをT2仮想計算機物理アドレス３０１２，３０２２とT2物理アドレス３０１３，３０２３、３番目のテーブルのテーブルアドレスをT3仮想計算機物理アドレス３０１４，３０２４とT3物理アドレス３０１５，３０２５、４番目のテーブルのテーブルアドレスをT4仮想計算機物理アドレス３０１６，３０２６とT4物理アドレス３０１７，３０２７として、保持する。また、ＰＴによって命令アドレス(リニアアドレス)を変換した物理アドレスを用いて読み込んだ命令３０１８，３０２８と、その命令を擬似的に実行するための擬似命令情報３０１９，３０２９も保持する。
【００３８】
次に、図４及び図５を用いて、保護例外処理が発生した後の動作について、説明する。保護例外処理が発生して仮想計算機制御部に命令アドレスが渡される時、まず、命令アドレス（リニアアドレス）で渡される。しかし、仮想計算機制御部は物理メモリしか直接には参照することが出来ない。そこで、命令アドレス（リニアアドレス）を命令アドレス（物理アドレス）に変換する必要がある。その変換処理の一連の流れを、以下に説明する。
【００３９】
まず、保護例外処理が発生すると、保護例外の原因となった命令アドレス(リニアアドレス)に一致する保護例外情報の有無について、保護例外保存領域（３００）を対象として、検索する。
【００４０】
図４は、一致する保護例外情報が存在しない場合を示している。この場合、保護例外情報を使わずに、仮想計算機物理アドレスを物理アドレスに変換してＰＴを読む。また、この時に処理する保護例外の情報を、次に同じ命令がきた時に参照するため、保護例外情報に格納する。
【００４１】
図５は、一致する保護例外情報が存在する場合を示している。この場合、その保護例外情報を使って、仮想計算機物理アドレスと物理アドレスを変換してＰＴを読む。
【００４２】
ここでは、まず、図４を用いて、保護例外保存領域（３００）に保護例外の原因となった命令アドレス(リニアアドレス)に一致する保護例外情報が無い場合、即ち保護例外となった命令の保護例外情報が未登録の場合の動作について、説明する。なお、保護例外情報が保護例外保存領域に存在しない状況とは、例えば計算機システムの初動時である。
【００４３】
まず、命令アドレス(リニアアドレス)４０１を、保護例外情報４００の命令アドレス４００１に格納する(４００６)。
【００４４】
次に、命令アドレス(リニアアドレス)４０１を使って、命令の物理アドレスが求まるまで、仮想計算機上のＯＳ及びＯＳ上で稼動するプロセスが生成したＰＴ４０２を読む。
【００４５】
次に、第一のテーブル(T1)４０３の先頭から命令アドレス(リニアアドレス)４０１の一部をインデックス４０１１として読みとったエントリ情報４０６に基づき、次のテーブル(T2)４０４の先頭アドレス４０９を取り出す(４０３１)。
【００４６】
この先頭アドレスは、仮想計算機物理アドレス４０９なので、そのままではテーブル(T2)４０４を参照する事は出来ない。そのため、この仮想計算機物理アドレス４０９を物理アドレス４１０に変換(４１０１)する。４１０１における変換には、全ての仮想計算機物理メモリと全ての物理メモリとの対応表を、引く必要がある。このため、この変換に要する処理量は非常に大きい。
【００４７】
変換して得られた物理アドレス４１０及び変換前の仮想計算機物理アドレス４０９を、テーブル(T2)４０４の先頭アドレスとして、保護例外情報４００のT2物理アドレス４００２及びT2仮想計算機物理アドレス４００１に、格納する(４０９１、４０９２)。
【００４８】
次に、テーブル(T2)４０４の先頭を示す(４０４１)物理アドレス４１０から命令アドレス(リニアアドレス)４０１の一部をインデックス４０１２として読みとったエントリ情報４０７に基づき、次のテーブル(T3)４０５の先頭アドレス４１１を取り出す。
【００４９】
この先頭アドレス４１１は、仮想計算機物理アドレス４１１なので、物理アドレス４１２に変換する(４１０２)。この変換方法は、テーブル(T2)４０４の先頭アドレスを求めた時と同様である。ここでも、４１０２における変換には、全ての仮想計算機物理メモリと全ての物理メモリとの対応表を、引く必要がある。このため、この変換に要する処理量が常に増加する。
【００５０】
次に、変換して得られた物理アドレス４１２及び変換前の仮想計算機物理アドレス４１１を、テーブル(T3)４０５の先頭アドレスとして、保護例外情報４００のT3物理アドレス４００４及びT3仮想計算機物理アドレス４００３に、格納する(４０９３、４０９４)。
【００５１】
次にテーブル(T3)４０５の先頭を示す（４０４２）物理アドレス４１２から命令アドレス(リニアアドレス)４０１の一部をインデックス４０１３として読みとったエントリ情報４０８に基づき、次のテーブルの先頭アドレスを取り出しす(４０３３)。以上の処理を、最終的に命令アドレス(リニアアドレス)に対応する物理アドレスが算出されるまで、繰り返す。
【００５２】
次に、図５を用いて、保護例外保存領域３００に保護例外の原因となった命令アドレス(リニアアドレス)に一致する保護例外情報が有る場合、即ち保護例外となった命令の保護例外情報が登録されている場合の動作について、説明する。すなわち、図４において、保護例外情報４００に保護例外の情報が格納された後の動作である。
【００５３】
保護例外保存領域３００に保護例外の原因となった命令アドレス(リニアアドレス)に一致する保護例外情報が有る場合、その保護例外情報を使って、仮想計算機物理アドレス及び物理アドレスを変換して、ＰＴを読む。
【００５４】
なお、この時に物理アドレスを算出する場合、保護例外情報と今回参照するＰＴが一致しているか確認するため、保護例外情報に格納されている仮想計算機物理アドレスとＰＴのテーブルに登録されている仮想計算機物理アドレスを比較して一致するかどうか判定する必要がある。この判定で一箇所でも一致しなかった場合は、この保護例外情報は利用せずに仮想計算機物理アドレスを物理アドレスに変換してＰＴを読み、改めて保護例外情報を登録する。
【００５５】
さて、命令アドレス(リニアアドレス)５０１が保護例外情報５００の命令アドレス５００１と比較して、一致することを確認(５００８)した後、命令アドレス(リニアアドレス)５０１を使って命令の物理アドレスが求まるまで、仮想計算機上のＯＳ及びＯＳ上で稼動するプロセスが生成したＰＴ５０２を、読む。
【００５６】
第一のテーブル(T1)５０３の先頭から命令アドレス(リニアアドレス)の一部をインデックス５０１１として読みとったエントリ情報５０６から、次のテーブル(T2)５０４の先頭アドレス５０９を、取り出す(５０３１)。
【００５７】
この先頭アドレス５０９は仮想計算機物理アドレスであり、保護例外情報５００に保存されているT2仮想計算機物理アドレス５００２と比較する。(T2)５０４の先頭アドレスである仮想計算機物理アドレス５０９と保護例外情報５００に保存されているT2仮想計算機物理アドレス５００２とが一致したら、保護例外情報５００に保存されているT2物理アドレス５００３を、次のテーブル(T2)５０４の先頭アドレスとして用いる。これにより、仮想計算機物理アドレスから物理アドレスへの変換を、省略(５１０１)する。
【００５８】
次に、テーブル(T2)５０４の先頭を示す(５０４１)物理アドレス５１０から命令アドレス(リニアアドレス)５０１の一部をインデックス５０１２として読みとったエントリ情報５０７から、次のテーブル(T3)５０５の先頭アドレス５１１を取り出す（５０３２）。
【００５９】
この先頭アドレス５１１は仮想計算機物理アドレスであり、保護例外情報５００に保存されているT3仮想計算機物理アドレス５００４と比較する。(T3)５０５の先頭アドレスである仮想計算機物理アドレス５１１と保護例外情報５００に保存されているT3仮想計算機物理アドレス５００４とが一致したら、保護例外情報５００に保存されているT3物理アドレス５００５を、次のテーブル(T3)５０５の先頭アドレスとして用いる。これにより、仮想計算機物理アドレスから物理アドレスへの変換を省略する。
【００６０】
次に、テーブル(T3)５０５の先頭を示す(５０４２)物理アドレス５１２から命令アドレ
命令アドレス(リニアアドレス)の一部をインデックス５０１３として読みとったエントリ情報５０８から、次のテーブルの先頭アドレスを取り出す。(５０３３)。これを最終的に命令アドレス(リニアアドレス)に対応する物理アドレスが算出されるまで、繰り返す。
【００６１】
ここで、図６に示されるフローチャートを用いて、図４及び図５を用いて説明した本発明を適応した計算機システムにおける保護例外処理での処理動作を、詳細に説明する。
【００６２】
まず、保護例外処理が発生したら、その例外を発生せた命令のアドレスをキーに、保護例外情報が保護例外領域の中に存在するかどうかを検索する(Ｓ６０１、５００８)。保護例外領域に登録されていない命令は、命令アドレス(リニアアドレス)をキーに、仮想計算機上でＯＳ及びＯＳ上で稼動するプロセスが生成したＰＴを読む。
【００６３】
この時、仮想計算機内で用いている物理アドレスと、実際の計算機上の物理アドレスが異なるため、前述のとおりＰＴの各テーブルを読む度に全仮想計算機物理メモリと全物理メモリとの対応表を引いて、仮想計算機物理アドレスと物理アドレスを変換する。この変換を繰り返して、仮想計算機のＰＴを読み、命令アドレス(リニアアドレス)から命令の物理アドレスを算出する(Ｓ６０８)。
【００６４】
命令の物理アドレスから、物理メモリ上に格納された命令を読み出す(Ｓ６０９)。
【００６５】
次に、読み出した命令はバイナリなので、仮想計算機制御部によりＣＰＵが持つ全ての命令のパターンマッチングとＣＰＵアーキテクチャに沿った命令解析を命令のバイナリに対して実施し、例外を発生させた命令を仮想計算機制御部が実行できる形式に変換する(Ｓ６１０)。この変換結果を擬似命令という。
【００６６】
この擬似命令と、命令アドレス(リニアアドレス)、命令、ＰＴの各テーブルを読む時に用いた仮想計算機物理アドレスとその変換結果の物理アドレスを新しく保護例外情報として保持する(Ｓ６１１)。その後、擬似命令を実行する。保護例外情報の検索及び保護例外情報の保持以外の動作は、本発明が適用されていない場合の動作と同じである。
【００６７】
次に、保護例外処理が発生した時、その例外を発生せた命令のアドレスを持つ保護例外情報が保護例外領域の中の検索(Ｓ６０１、５００８)で見付かった場合について説明する。
【００６８】
例外を発生せた命令のアドレスと等しい情報を持つ保護例外情報が見付かったら、命令アドレス(リニアアドレス)から命令の物理アドレスを算出する（Ｓ６０２，６０３）。
【００６９】
命令アドレス(リニアアドレス)から命令の物理アドレスを算出するためには、前述の通り仮想計算機上で生成されたＰＴを、仮想計算機物理アドレスと物理アドレスを変換しながら、読まなければならない。そのため、ＰＴのテーブルから実際に読み出された仮想計算機物理アドレスと、保護例外情報内のこのテーブルに関係する仮想計算機物理アドレスとが等価ならば、保護例外情報内のこのテーブルに関係する物理アドレスを利用して次のテーブルを読んでいく。(Ｓ６０２、５０９１〜５０９４)
この過程を繰り返して、仮想計算機のＰＴを読み、命令アドレス(リニアアドレス)から命令の物理アドレスを算出する。これにより、テーブルの仮想計算機物理アドレスと物理アドレスを変換を行い、テーブルを読んで、命令アドレス(リニアアドレス)から命令の物理アドレスを算出する。(Ｓ６０３、５０３１〜５０３３、５０４１〜５０４２)。
【００７０】
なお、ＰＴのテーブルから実際に読み出された仮想計算機物理アドレスと、保護例外情報内のこのテーブルに関係する仮想計算機物理アドレスとが等価でない場合、この保護例外情報に対して取り消しを行う(Ｓ６１２)。
【００７１】
命令の物理アドレスから、物理メモリを読み込み、命令のバイナリを取り出す(Ｓ６０４)。
【００７２】
次に取り出した命令バイナリと、保護例外情報内に保持してある命令のバイナリと比較する(Ｓ６０５)。
【００７３】
一致すれば、この命令の解析結果の擬似命令も等価であるため、保護例外情報内に保持してある擬似命令を用いて(Ｓ６０６)、擬似命令を実行する(Ｓ６０７)。
【００７４】
保護例外情報内の命令のバイナリと等価でない場合、この保護例外情報に対して取り消し（Ｓ６１３）、この命令のバイナリの命令解析を行う（Ｓ６１０）。
【００７５】
以上、本発明を適用した計算機システムによれば、アドレス変換や命令解析に使用する時間が仮想計算機制御部の処理時間に対し支配的なシステムであっても、Ｓ６０１〜６０７を実行し、保護例外領域に登録されている保護例外情報を用いるので、Ｓ６０８のように全ての仮想計算機物理メモリと全ての物理メモリとの対応表を引くという実行処理量が膨大な処理を省くことができ、システム全体の処理量を低減することができる。特に、使用頻度が多く繰り返し参照される事が多い仮想デバイスに関しては、この効果をより大きく享受することができる。
【００７６】
前述した本発明の実施形態での処理は、プログラムにより構成し、本発明が備えるＣＰＵに実行させることができ、また、それらのプログラムは、ＦＤ、ＣＤＲＯＭ、ＤＶＤ等の記録媒体に格納して提供することができ、また、ネットワークを介してディジタル情報により提供することができる。
【００７７】
本発明を、例えば仮想化ソフトウェアを搭載するハイエンドサーバで採用されているＨｉｇｈ Ｐｒｅｃｉｓｉｏｎ Ｅｖｅｎｔ Ｔｉｍｅｒ(ＨＰＥＴ)の仮想化に適用した場合、ＨＰＥＴは仮想計算機物理メモリ空間にＨＰＥＴテーブルとタイマレジスタを構成しているが、タイマであるＨＰＥＴへのアクセスは一定周期で大量に同じ命令で繰り返されるため、保護例外情報の再利用率が高く、処理量の大きいアドレス変換や命令解析を省略できる。このように、処理量の大きい処理を省略することで、保護例外処理部分の処理量を大幅に削減する事が可能である。また、Memory Mapped ＩＯ等のレジスタの読書きでも、同じ命令が複数のプロセスに共有で発行される事が多く、本発明を適用により処理量を削減することができる。
【００７８】
以上説明した要因により、本発明を適応した場合、仮想計算機上で発生した保護例外の処理に、従来技術と比較して、約２〜８倍程度の処理速度の向上を確認出来た。
【符号の説明】
【００７９】
１００  物理計算機
１０１０〜１０１１  プロセッサ
１０２  バス
１０３  物理メモリ
１０４  ＰＣＩ  Ｄｅｖｉｃｅ
１０５〜１０６    仮想計算機
１０５１  仮想プロセッサ
１０５２  仮想計算機物理メモリ
１０５３  ＯＳ
１０５４  仮想ＰＣＩ  Ｄｅｖｉｃｅ
１０５５  仮想デバイス
１０６１  仮想プロセッサ
１０６２  仮想計算機物理メモリ
１０６３  ＯＳ
１０６４  仮想ＰＣＩ  Ｄｅｖｉｃｅ
１０６５  仮想デバイス
１０７  仮想計算機制御部
２００  仮想計算機
２００１  仮想計算機物理メモリ
２００２  仮想デバイス機能情報
２００３  保護対象テーブル
２００４  ＰＴ
２００５  仮想デバイス機能情報登録
２０１  仮想計算機制御部
２０１０  保護例外処理
２０１１  命令解析部
２０１２  保護例外保存領域
２０１３〜２０１５  保護例外情報
２０１６  アドレス変換部
２０２０  例外通知
２０２１  命令解析要求
２０２２  保護例外情報請求・登録
２０２３〜２０２５  保護例外情報管理
２０２６  アドレス変換要求
３００    保護例外保存領域
３００１  保護例外情報リスト
３００２  保護例外管理データ
３０１、３０２   保護例外情報
３０１１、３０２１  命令アドレス
３０１２、３０２２  Ｔ２仮想計算機物理アドレス
３０１３、３０２３  Ｔ２物理アドレス
３０１４、３０２４  Ｔ３仮想計算機物理アドレス
３０１５、３０２５  Ｔ３物理アドレス
３０１６、３０２６  Ｔ４仮想計算機物理アドレス
３０１７、３０２７  Ｔ４物理アドレス
３０１８、３０２８  命令
３０１９、３０２９  擬似命令情報
４００   保護例外情報
４００１  命令アドレス
４００２  Ｔ２仮想計算機物理アドレス
４００３  Ｔ２物理アドレス
４００４  Ｔ３仮想計算機物理アドレス
４００５  Ｔ３物理アドレス
４００５  Ｔ３物理アドレス
４００６  命令アドレスを保護例外情報に格納
４０１    命令アドレス
４０１１〜４０１３  テーブルのインデックス
４０２   ＰＴ
４０３  テーブル(Ｔ１)
４０４  テーブル(Ｔ２)
４０５  テーブル(Ｔ３)
４０３１〜４０３３ エントリから次のテーブルの先頭アドレスを取り出す
４０４１、４０４２  物理アドレスが次のテーブルの先頭を示す
４０６〜４０８  エントリ
４０９、４１１  次のテーブルの先頭を指している仮想計算機物理アドレス
４０９１〜４０９４  アドレスを保護例外情報に格納
４１０、４１２  次のテーブルの先頭を指している物理アドレス
４１０１、４１０２  仮想計算機物理アドレスと物理アドレスを変換
５００   保護例外情報
５００１  命令アドレス
５００２  Ｔ２仮想計算機物理アドレス
５００３  Ｔ２物理アドレス
５００４  Ｔ３仮想計算機物理アドレス
５００５  Ｔ３物理アドレス
５００５  Ｔ３物理アドレス
５００６  保護例外情報の情報と命令アドレスを比較
５０１    命令アドレス
５０１１〜５０１３  テーブルのインデックス
５０２   ＰＴ
５０３  テーブル(Ｔ１)
５０４  テーブル(Ｔ２)
５０５  テーブル(Ｔ３)
５０３１〜５０３３ エントリから次のテーブルの先頭アドレスを取り出す
５０４１、５０４２  物理アドレスが次のテーブルの先頭を示す
５０６〜５０８  エントリ
５０９、５１１  次のテーブルの先頭を指している仮想計算機物理アドレス
５０９１、５０９３  保護例外情報の情報と仮想計算機物理アドレスを比較
５０９２、５０９４  保護例外情報の情報から物理アドレスを参照
５１０、５１２  次のテーブルの先頭を指している物理アドレス
５１０１、５１０２  仮想計算機物理アドレスと物理アドレスを変換を省略
【図１】
2010198398.tif 000003
【図２】
2010198398.tif 000004
【図３】
2010198398.tif 000005
【図４】
2010198398.tif 000006
【図５】
2010198398.tif 000007
【図６】
2010198398.tif 000008