(57)【要約】【課題】  仮想プロセッサがシミュレーションを要する特権命令を実行する際に発生していた特権違反割り込みによるオーバヘッドを解消することのできる仮想計算機システムおよび仮想計算機システムの制御プログラムを提供する。【解決手段】  仮想プロセッサ３４００，３４１０が第１種の特権レベルにある状態でシミュレーションを要する特権命令を実行する際に、仮想プロセッサ３４００，３４１０を実行している実プロセッサ３００，３０１に、前記命令の代わりに前記命令のシミュレーションを行うコードへの分岐命令、割り込み処理内で前記命令のシミュレーションを行うコードが実行されるような実プロセッサへの割り込みを発生させる命令、あるいは前記命令のシミュレーションを行う命令、のいずれかの命令を実行させる命令変更手段３２００を備えた。【選択図】  図１ 
2005149361.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置と１台以上の実プロセッサを備え、１台以上の仮想計算機を動作させることができ、
少なくとも１台の前記仮想計算機では、その仮想計算機で動作する仮想プロセッサの命令は、その実行時における前記仮想プロセッサの動作が前記命令を実プロセッサによって直接実行することによって実現される直接実行可能な命令と、その実行時における前記仮想プロセッサの動作が実プロセッサによって直接実行することによっては実現できず、シミュレーションのためのコードを実行することにより実現されるシミュレーションを要する命令の２種類の命令からなり、
前記実プロセッサおよび前記仮想プロセッサは、少なくとも第１種の特権レベルおよび第２種の特権レベルで動作可能であり、
前記実プロセッサおよび前記仮想プロセッサは、命令実行時の前記特権レベルが前記第２種の特権レベルにある場合には自身に対して所定の割り込みを発生させる動作を行い、前記特権レベルが前記第１種の特権レベルにある場合には前記所定の割り込みを発生させる動作以外の命令ごとに定められた動作を行う特権命令を実行可能であり、
前記特権命令の一部はシミュレーションを要する命令である仮想計算機システムであって、
前記仮想プロセッサが前記第１種の特権レベルにある状態でシミュレーションを要する特権命令を含む命令列を実行する際に、前記仮想プロセッサを実行している前記実プロセッサに、前記命令の代わりに、
前記命令のシミュレーションを行うコードへの分岐命令、割り込み処理内で前記命令のシミュレーションを行うコードが実行されるような実プロセッサへの割り込みを発生させる命令、あるいは前記命令のシミュレーションを行う命令、のいずれかの命令を実行させる命令変更手段を備えたことを特徴とする仮想計算機システム。
【請求項２】
請求項１記載の仮想計算機システムにおいて、
前記命令列の実行に際し、前記命令変更手段の動作する仮想プロセッサが、前記第１種の特権レベルにある状態で、直接実行可能な前記特権命令の実行を開始した時に、前記仮想プロセッサを実行している前記実プロセッサが前記第１種の特権レベルにあるように前記実プロセッサの特権レベルを制御する制御手段を備えたことを特徴とする仮想計算機システム。
【請求項３】
記憶装置と１台以上の実プロセッサを備え、１台以上の仮想計算機を動作させることができ、前記記憶装置に振られたアドレスの特定の範囲に配置された命令の読み出しを試みた前記実プロセッサへ所定の割り込みを発生させる命令実行禁止手段を備え、
少なくとも１台の前記仮想計算機では、その仮想計算機で動作する仮想プロセッサの命令は、その実行時における前記仮想プロセッサの動作が前記命令を実プロセッサによって直接実行することによって実現される直接実行可能な命令と、その実行時における前記仮想プロセッサの動作が実プロセッサによって直接実行することによっては実現できず、シミュレーションのためのコードを実行することにより実現されるシミュレーションを要する命令の２種類の命令からなり、
前記実プロセッサおよび前記仮想プロセッサは、少なくとも第１種の特権レベルおよび第２種の特権レベルで動作可能であり、
前記実プロセッサおよび前記仮想プロセッサは、命令実行時の特権レベルが第２種の特権レベルにある場合には自身に対して所定の割り込みを発生させる動作を行い、前記特権レベルが第１種の特権レベルにある場合には前記所定の割り込みを発生させる動作以外の命令ごとに定められた動作を行う特権命令を実行可能であり、
前記特権命令の一部はシミュレーションを要する命令である仮想計算機システムで動作する仮想計算機システムの制御プログラムであって、
前記仮想計算機システムを、
前記命令実行禁止手段を用いて前記仮想プロセッサで実行される命令の配置されたアドレスの範囲からの命令読み出しを実プロセッサが試みた時に前記所定の割り込みを発生させ、前記所定の割り込みの割り込み処理内で、前記アドレス範囲に配置されたシミュレーションを要する特権命令を、前記命令のシミュレーションを行うコードへの分岐命令、割り込み処理内で前記命令のシミュレーションを行うコードが実行されるような実プロセッサへの割り込みを発生させる命令、あるいは前記命令のシミュレーションを行う命令、のいずれかの命令に書き換える手段として機能させることを特徴とする仮想計算機システムの制御プログラム。
【請求項４】
請求項３記載の仮想計算機システムの制御プログラムにおいて、
前記仮想計算機システムを、
前記仮想プロセッサが第１種の特権レベルにある状態で、直接実行可能な前記特権命令の実行を開始した時に、前記仮想プロセッサを実行している実プロセッサが第１種の特権レベルにあるように実プロセッサの特権レベルを制御する手段として機能させることを特徴とする仮想計算機システムの制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機上で仮想的な計算機を動作させる仮想計算機システムおよび仮想計算機システムの制御プログラムに関する。
【背景技術】
【０００２】
仮想計算機システムとは、１台の計算機ハードウェア上で単数または複数の計算機を仮想的に動作させるシステムである。仮想計算機システムにおいて仮想的に実行される計算機は仮想計算機と呼ばれ、仮想計算機内で動作するプロセッサは仮想プロセッサと呼ばれる。仮想プロセッサによる命令の実行は、命令実行時の仮想プロセッサの動作を実プロセッサによって擬似的に実行することによって行われる。
【０００３】
仮想プロセッサの命令は、実プロセッサによる擬似的な実行のされ方によって以下の２種類に分類される。第１の種類の命令は、実プロセッサによって命令を直接実行することにより命令実行時の仮想プロセッサの動作を実現可能な命令であり、第２の種類の命令は、実プロセッサによって命令を直接実行することでは仮想プロセッサの動作を実現できず、代わりに仮想プロセッサでの命令の動作をシミュレーションするコードを実行することによって仮想プロセッサの動作を実現する命令である。以下、前記第１の種類の命令を直接実行可能な命令と呼び、前記第２の種類の命令をシミュレーションを要する命令と呼ぶ。
【０００４】
現在のプロセッサの多くは、プロセッサの実行権限を表す状態を保持するように設計されている。プロセッサの実行権限を表す状態は、特権レベル、実行レベル、プログラム状態などと呼ばれるが、以下では特権レベルと表すことにする。
【０００５】
特権レベルを保持するプロセッサは、通常、第１種の特権レベルと、第２種の特権レベルとの少なくとも２種類の特権レベルで動作可能であり、また、特権命令を実行可能である。特権命令とは、命令実行時の特権レベルが前記第２種の特権レベルにある場合には所定の割り込み（例外、と表される場合もある）を発生させる動作を行い、特権レベルが前記第１種の特権レベルにある場合には前記所定の割り込みを発生させる動作以外の命令ごとに定められた動作を行う命令である。以下、前記所定の割り込みを特権違反割り込みと呼ぶことにする。
【０００６】
特権レベルを保持するプロセッサでは、通常、ユーザが不正にアクセスするとシステムに重大な障害を引き起こす可能性のあるシステム資源へのアクセスを行う命令は特権命令であるように定義されている。
【０００７】
近年のオペレーティングシステム（以下、ＯＳと呼ぶ）は、このことを利用し、システム資源への不正なアクセスを防止している。具体的には、特権命令を使用してはいけない状況ではプロセッサが第２種の特権レベルになるようにプロセッサの特権レベルを制御し、不正な特権命令の実行時に特権違反割り込みを発生させることによってシステム資源への不正なアクセスを防いでいる。
【０００８】
ところが、仮想計算機システムは、単一の計算機ハードウェア上で複数の仮想計算機を動作させ、それぞれの仮想計算機でＯＳを独自に動作させることが可能であるため、上述したプロセッサの機能およびＯＳの機能だけでは、システム資源の不正なアクセスを防ぐことができない場合がある。例えば、割り込みを禁止する命令は、通常、特権命令であり、ＯＳ上のユーザが不正に割り込み禁止にすることはＯＳによって防がれるが、仮想計算機システム上で複数のＯＳが同時に動作する場合、複数のＯＳは１台の実プロセッサに対してそれぞれ勝手に割り込みを禁止する命令を実行する可能性があり、あるＯＳで割込み禁止にすべきでない状況で他のＯＳにより割り込みが禁止されてしまうという不具合が起こり得る。
【０００９】
このため、通常、仮想計算機では、仮想プロセッサで実行される特権命令の少なくとも一部は、実プロセッサで直接実行するのでなくシミュレーションにより実行し、シミュレーションを行うコード内でシステム資源の仮想化や、複数の仮想計算機間の調停を行う必要がある。すなわち、特権命令の少なくとも一部はシミュレーションを要する命令である。以下、特権命令でかつシミュレーションを要する命令である命令を、シミュレーションを要する特権命令と呼ぶ。また、特権命令でかつ直接実行可能な命令である命令を、直接実行可能な特権命令と呼ぶ。
【００１０】
シミュレーションを要する特権命令に対しては、何らかの方法で仮想プロセッサによって命令が実行されることを検出し、実プロセッサにシミュレーションのためのコードを実行させる必要がある。従来の仮想計算機システムでは、実プロセッサに特権命令のシミュレーションを行うコードを実行させる方式として、仮想プロセッサが特権命令を実行する時点で実プロセッサが第２種の特権レベルにあるように実プロセッサの特権レベルを制御し、実プロセッサが特権命令を読み出して実行する際に特権違反割り込みを発生させ、その割り込みの割り込み処理内でシミュレーションのためのコードを実行する方式が用いられている（例えば、非特許文献１を参照）。
【００１１】
以下、図１１を用いてこの方式を詳しく説明する。図１１は従来の仮想計算機システムにおいて仮想プロセッサが特権命令を含むプログラム実行する時の実プロセッサの動作を表す図であり、仮想プロセッサが図中の命令２００、２０１、２０２を順番に実行する時に、仮想プロセッサを実行している実プロセッサがどのように動作するかを示している。
【００１２】
図１１において、矢印は実プロセッサの動作のステップを表している。下向きの矢印は実プロセッサによるコードの実行を表し、右向きの矢印は割り込み処理への制御の移行、左向きの矢印は割り込みからの復帰を表している。
【００１３】
図中の命令２０１はシミュレーションを要する特権命令である。以下、図１１に示された実プロセッサの動作を追い、どのように命令２０１のシミュレーションが行われるかを見てゆく。
【００１４】
まず、実プロセッサは命令２００を読み出し、実行する。実プロセッサは命令２００を読み出した時点で第２種の特権レベルにある。命令２００は特権レベルを第１種の特権レベルに設定する命令であるが、通常、このような命令は一定の条件の下で実行された場合に所定の割り込みを発生するように定義されており、仮想計算機システムは実プロセッサで命令２００が実行される時点で前記一定の条件が成り立ち、割り込みが発生するように設計されている。よって割り込みが発生（ステップＳ２１０）し、割り込み処理に実プロセッサの制御が移行する（ステップＳ２１１）。
【００１５】
次に、実プロセッサは割り込み処理内で命令２００のシミュレーションを行うコードを実行（ステップＳ２１２）した後、割り込み処理から復帰する（ステップＳ２１３）。ステップＳ２１３によって、仮想プロセッサは第１種の特権レベルに設定されるが、実プロセッサは第２種の特権レベルに保たれる。
【００１６】
次に、実プロセッサは命令２０１を読み出し実行する（ステップＳ２１４）。命令２０１は特権命令であり、実プロセッサは依然として第２種の特権レベルにあるため、特権違反割り込みが発生し、割り込み処理に実プロセッサの制御が移行する（ステップＳ２１５）。
【００１７】
次に、実プロセッサは割り込み処理内で命令２０１のシミュレーションを行うコードを実行（ステップＳ２１６）した後、割り込み処理から復帰する（ステップＳ２１７）。
【００１８】
以上に説明したように、仮想計算機システムは、仮想プロセッサが第１種の特権レベルに遷移した後も実プロセッサを第２種の特権レベルのままに保つことにより、仮想プロセッサが特権命令の実行を開始する時点で常に実プロセッサは第２種の特権レベルにあるように制御する。これにより、仮想プロセッサが第１種の特権レベルにあるか第２種の特権レベルにあるかにかかわらず、特権命令の実行時に特権違反割り込みが発生することになり、割り込み処理内でシミュレーションを要する特権命令に対しシミュレーションのためのコードを実行することが可能となっている。
【非特許文献１】岡崎世雄、金先実著「ＯＳシリーズ１１  ＶＭ」共立出版株式会社、１９９０年１０月２０日発行、第３９−４４頁
【発明の開示】
【発明が解決しようとする課題】
【００１９】
一般に、割り込み処理では、レジスタの退避、復帰を行う必要があり、またパイプラインを持つプロセッサでは割り込み発生時に実行途中であった命令を中断する必要があるため、割り込み処理にかかるコストは大きい。従って、上記のような特権違反割り込みを発生させてシミュレーションのためのコードを実行する方式では、割り込み処理によるオーバヘッドのため仮想計算機システムの性能が低下するという問題点がある。
【００２０】
特に、直接実行可能な特権命令に対しても特権違反割り込みが発生するが、これは本来必要のない割り込みである。図２を用いて説明すると、命令２０１のシミュレーションが行われた後、実プロセッサは第２種の特権レベルにある状態のまま命令２０２を読み出して実行する（ステップＳ２１８）。命令２０２は直接実行可能な命令であるが、特権命令であるため特権違反割り込みが発生し、割り込み処理への制御の移行（ステップＳ２０９）、シミュレーションを行うコードの実行（ステップＳ２１０）、および割り込み処理からの復帰（ステップＳ２１１）によって本来必要のない命令２０２のシミュレーションが行われ、オーバヘッドとなっている。
【００２１】
また、特権違反割り込みは、元々ＯＳがシステム資源への不正なアクセスを検出し、例外処理を行うためにも使用されているものであるので、特権違反割り込みの割り込み処理内で、発生した特権違反割り込みに対してＯＳの例外処理と命令のシミュレーションのどちらを行うべきかを判断する処理を行わねばならない。また、一般にシミュレーションを要する特権命令は複数存在するため、割り込みを発生させた命令を特定し、適切なシミュレーションのためのコードを選択する処理を行う必要がある。これらの処理の実行時間もオーバヘッドとなっている。
【００２２】
本発明の目的は、仮想プロセッサがシミュレーションを要する特権命令を実行する際に発生していた特権違反割り込みによるオーバヘッドを解消することのできる仮想計算機システムおよび仮想計算機システムの制御プログラムを提供することにある。
【課題を解決するための手段】
【００２３】
本発明による仮想計算機システムは、記憶装置と１台以上の実プロセッサを備え、１台以上の仮想計算機を動作させることができ、少なくとも１台の仮想計算機では、その仮想計算機で動作する仮想プロセッサの命令は、その実行時における仮想プロセッサの動作が命令を実プロセッサによって直接実行することによって実現される直接実行可能な命令と、その実行時における仮想プロセッサの動作が実プロセッサによって直接実行することによっては実現できず、シミュレーションのためのコードを実行することにより実現されるシミュレーションを要する命令の２種類の命令からなり、実プロセッサおよび仮想プロセッサは、少なくとも第１種の特権レベルおよび第２種の特権レベルで動作可能であり、実プロセッサおよび仮想プロセッサは、命令実行時の特権レベルが第２種の特権レベルにある場合には自身に対して所定の割り込みを発生させる動作を行い、特権レベルが第１種の特権レベルにある場合には所定の割り込みを発生させる動作以外の命令ごとに定められた動作を行う特権命令を実行可能であり、特権命令の一部はシミュレーションを要する命令である仮想計算機システムであって、仮想プロセッサが第１種の特権レベルにある状態でシミュレーションを要する特権命令を含む命令列を実行する際に、仮想プロセッサを実行している実プロセッサに、命令の代わりに、命令のシミュレーションを行うコードへの分岐命令、割り込み処理内で命令のシミュレーションを行うコードが実行されるような実プロセッサへの割り込みを発生させる命令、あるいは命令のシミュレーションを行う命令、のいずれかの命令を実行させる命令変更手段を備えたものである。
【００２４】
また、本発明による仮想計算機システムは、命令列の実行に際し、命令変更手段の動作する仮想プロセッサが、第１種の特権レベルにある状態で、直接実行可能な特権命令の実行を開始した時に、仮想プロセッサを実行している実プロセッサが第１種の特権レベルにあるように実プロセッサの特権レベルを制御する制御手段を備えたものである。
【００２５】
また、本発明による仮想計算機システムの制御プログラムは、記憶装置と１台以上の実プロセッサを備え、１台以上の仮想計算機を動作させることができ、記憶装置に振られたアドレスの特定の範囲に配置された命令の読み出しを試みた実プロセッサへ所定の割り込みを発生させる命令実行禁止手段を備え、少なくとも１台の仮想計算機では、その仮想計算機で動作する仮想プロセッサの命令は、その実行時における仮想プロセッサの動作が命令を実プロセッサによって直接実行することによって実現される直接実行可能な命令と、その実行時における仮想プロセッサの動作が実プロセッサによって直接実行することによっては実現できず、シミュレーションのためのコードを実行することにより実現されるシミュレーションを要する命令の２種類の命令からなり、実プロセッサおよび仮想プロセッサは、少なくとも第１種の特権レベルおよび第２種の特権レベルで動作可能であり、実プロセッサおよび仮想プロセッサは、命令実行時の特権レベルが第２種の特権レベルにある場合には自身に対して所定の割り込みを発生させる動作を行い、特権レベルが第１種の特権レベルにある場合には所定の割り込みを発生させる動作以外の命令ごとに定められた動作を行う特権命令を実行可能であり、特権命令の一部はシミュレーションを要する命令である仮想計算機システムで動作する仮想計算機システムの制御プログラムであって、仮想計算機システムを、命令実行禁止手段を用いて仮想プロセッサで実行される命令の配置されたアドレスの範囲からの命令読み出しを実プロセッサが試みた時に所定の割り込みを発生させ、所定の割り込みの割り込み処理内で、アドレス範囲に配置されたシミュレーションを要する特権命令を、命令のシミュレーションを行うコードへの分岐命令、割り込み処理内で命令のシミュレーションを行うコードが実行されるような実プロセッサへの割り込みを発生させる命令、あるいは命令のシミュレーションを行う命令、のいずれかの命令に書き換える手段として機能させるものである。
【００２６】
また、本発明による仮想計算機システムの制御プログラムは、仮想計算機システムを、仮想プロセッサが第１種の特権レベルにある状態で、直接実行可能な特権命令の実行を開始した時に、仮想プロセッサを実行している実プロセッサが第１種の特権レベルにあるように実プロセッサの特権レベルを制御する手段として機能させるものである。
【００２７】
また、本発明による仮想計算機システムは、実プロセッサからの命令読み出し要求を受信して記憶装置から命令を読み出し、読み出された命令をその内容に基づき他の命令に変換し、変換した命令を命令読み出し要求の応答データとして実プロセッサに送信する回路を備え、命令変更手段は、回路によって特権命令であってシミュレーションを要する命令を変換することにより代わりの命令を実プロセッサに実行させるものである。
【００２８】
また、本発明による仮想計算機システムは、記憶装置に振られたアドレスの特定の範囲に配置された命令の読み出しを試みた実プロセッサへ所定の割り込みを発生させる命令実行禁止手段を備え、命令変更手段は、命令実行禁止手段を用いて仮想プロセッサで実行される命令の配置されたアドレスの範囲からの命令読み出しを実プロセッサが試みた時に所定の割り込みを発生させ、所定の割り込みの割り込み処理内で、アドレス範囲に配置された特権命令であってシミュレーションを要する命令を含む命令列を書き換えることにより代わりの命令を実プロセッサに実行させるものである。
【００２９】
また、本発明による仮想計算機システムは、命令変更手段を動作させる仮想計算機をユーザに設定させる設定手段を備え、設定手段で設定されている仮想計算機に対してのみ命令変更手段により実プロセッサに代わりの命令列を実行させるものである。
【発明の効果】
【００３０】
本発明によれば、命令変更手段によって、特権違反割り込みを発生させることなく実プロセッサに特権命令のシミュレーションを行わせることができる。これにより、従来の方式で仮想プロセッサがシミュレーションを要する特権命令を実行する際に発生していた特権違反割り込みによるオーバヘッドが解消される。なお、命令変更手段が、シミュレーションを要する特権命令の代わりに、割り込み処理内で前記命令のシミュレーションを行うコードが実行されるような実プロセッサへの割り込みを発生させる命令を実行させる場合、特権違反割り込みによりシミュレーションを行うのと比べ、割り込みによるオーバヘッドが発生することは変わらない。しかし、割り込みを発生させる命令はＯＳが使用しない場合も多く、このような場合は割り込み発生後にシミュレーション要否の判断をせず即座にシミュレーションのためのコードを即座に実行させることができる。また、割り込みを発生させる命令が特定の命令に対してのみ実行されるように命令変更手段を設計すれば、割り込みを発生させた命令に基づいてシミュレーションのためのコードを選択する処理が不要となる。よって、特権命令違反割り込みによって命令のシミュレーションを行うのに比べ、割り込み処理全体の実行コストが削減される。
【００３１】
また、命令変更手段によって特権違反割り込みを用いずにシミュレーションを要する特権命令全てのシミュレーションを実行できれば、従来の方式のように実プロセッサの特権レベルを第２種の特権レベルに保つ必要が無くなるが、実際に本発明の計算機システムは、仮想プロセッサが第１種の特権レベルにある状態で直接実行可能な特権命令の実行を開始した時に、前記仮想プロセッサを実行している実プロセッサが第１種の特権レベルにあるように制御することで、直接実行可能な特権命令の実行に際して割り込みを発生させないようにしている。これにより、従来の方式で仮想プロセッサが直接実行可能な特権命令を実行する際に発生していた特権違反割り込みによるオーバヘッドが解消される。具体的な例を述べると、一般に、ＯＳは割込み処理のたびにプロセッサへの割り込みを禁止あるいは許可する命令を実行する。これらの命令は多くのプロセッサで特権命令であるが、仮想計算機システムの設計によってはこれらの命令は直接実行可能な命令であることも多い。このような場合、割り込みのたびにプロセッサへの割り込みを禁止あるいは許可する命令の実行により発生していたオーバヘッドが解消されることになり、大量のＩ／Ｏ処理などにより割り込みの頻発するシステムでは特に大きな性能の向上がもたらされる。
【発明を実施するための最良の形態】
【００３２】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【００３３】
（実施の形態１）
図１により、本発明の実施の形態１における仮想計算機システムの構成を説明する。図１は本発明の実施の形態１における仮想計算機システムの構成を表す図である。
【００３４】
本発明の実施の形態１における仮想計算機システムでは、実プロセッサ３００、３０１とメモリ・Ｉ／Ｏバスコントローラ３２０がプロセッサバス３１０を介して接続され、メモリ・Ｉ／Ｏバスコントローラ３２０はバス３１１、３１２を介して記憶装置３２１、Ｉ／Ｏバスブリッジ３２２と接続されており、Ｉ／Ｏバスブリッジ３２２はＩ／Ｏバス３１３を介してコンソール装置３３０と接続されている。
【００３５】
メモリ・Ｉ／Ｏバスコントローラ３２０は内部に命令変更手段３２００を回路として備えており、命令変更手段３２００は連想記憶３２０１とアドレス検査回路３２０２、およびプロセッサＩＤ検査回路３２０３を有する。
【００３６】
連想記憶３２０１は、記憶装置３２１から読み出した命令を入力として記憶を探索し、実プロセッサ３００、３０１の命令を出力する連想記憶であり、実プロセッサ３００、３０１でプログラムを実行することによって記憶内容の書き換えを行うことができる。
【００３７】
アドレス検査回路３２０２は、記憶装置３２１のアドレス範囲を示す情報を複数保持し、記憶装置のアドレスが入力されると、保持しているいずれかのアドレス範囲にそのアドレスが含まれる場合に正、そうでない場合に負と出力する。アドレス検査回路３２０２の保持する記憶装置３２１のアドレス範囲を示す情報は、実プロセッサ３００、３０１でプログラムを実行することによって設定可能である。
【００３８】
プロセッサＩＤ検査回路３２０３は、実プロセッサの識別子である複数のプロセッサＩＤを保持しており、プロセッサＩＤが入力されると、それが保持しているプロセッサＩＤのいずれかである場合には正、そうでない場合には負と出力する。プロセッサＩＤ検査回路３２０３の保持するプロセッサＩＤは、実プロセッサ３００、３０１でプログラムを実行することによって設定可能である。
【００３９】
命令変更手段３２００は、実プロセッサ３００、３０１からの命令読み出し要求を受信すると、記憶装置３２１から要求された命令を読み出す。その後、命令読み出し要求の要求先アドレスをアドレス検査回路３２０２に入力し、命令読み出し要求に含まれる読み出し元のプロセッサＩＤをプロセッサＩＤ検査回路３２０３に入力する。アドレス検査回路３２０２およびプロセッサＩＤ検査回路３２０３の出力が共に正であった場合には、読み出した命令を連想記憶３２０１に入力し、探索が成功した場合は出力された命令を命令読み出し要求の応答データとして実プロセッサに送信する。アドレス検査回路３２０２またはプロセッサＩＤ検査回路３２０３が負と出力するか、連想記憶３２０１の探索が失敗した場合は記憶装置３２１から読み出した命令をそのまま応答データとして送信する。
【００４０】
本発明の実施の形態１における仮想計算機システムでは、仮想計算機３４０、３４１の２つの仮想計算機が動作しており、仮想計算機３４０は仮想プロセッサ３４００を備え、仮想計算機３４１は仮想プロセッサ３４１０、３４１１を備える。
【００４１】
記憶装置３２１内には、仮想計算機３４０、３４１の制御のために用いられる仮想計算機モニタ用領域３２１０があり、仮想計算機モニタ用領域３２１０内には、仮想プロセッサのスケジューリングやハードウェア資源の仮想化など仮想計算機システムを制御するための処理を行うプログラムである制御手段となる仮想計算機モニタ３２１１が配置され、命令変更手段３２００を動作させる仮想計算機を設定する設定手段３２１２が仮想計算機モニタ３２１１の一部として実現されている。
【００４２】
また、仮想計算機モニタ４２１１のプログラムは、実プロセッサ３００、３０１で実行されることにより、その動作が実現されている。
【００４３】
また、記憶装置３２１内にはそれぞれ仮想計算機３４０、３４１で使用される領域である仮想計算機用領域３２１３、３２１４が存在する。
【００４４】
本発明の実施の形態１において、仮想プロセッサ３４００、３４１０、３４１１の実行可能な命令は実プロセッサ３００、３１０で実行可能である。
【００４５】
また、仮想プロセッサ３４００、３４１０、３４１１の命令は、実プロセッサ３００、３０１によって直接実行可能な命令と、実プロセッサ３００、３０１によるシミュレーションを要する命令の２種類の命令からなる。
【００４６】
また、実プロセッサ３００、３０１と仮想プロセッサ３４００、３４１０、３４１１は第１種の特権レベルと第２種の特権レベルとの２種類の特権レベルで動作可能であり、実プロセッサ３００、３０１と仮想プロセッサ３４００、３４１０、３４１１は、命令実行時の特権レベルが第２種の特権レベルにある場合には自身に対して特権違反割り込みを発生させる動作を行い、特権レベルが第１種の特権レベルにある場合には前記特権違反割り込みを発生させる動作以外の命令ごとに定められた動作を行う命令（以下、特権命令と呼ぶ）を共通に実行可能である。
【００４７】
また、上記特権命令の一部は、シミュレーションを要する命令であり、一部は直接実行可能な命令である。
【００４８】
設定手段３２１２は、仮想計算機の起動時に、コンソール装置３３０に起動する仮想計算機に対しユーザに命令変更手段３２００を動作させるか否かの設定を求めるメッセージ（例えば「この仮想計算機で命令の変更を行いますか（Ｙ／Ｎ）？」など。）を表示し、ユーザに希望の設定を入力させる。
【００４９】
命令変更手段３２００を動作させる設定が入力された場合、設定手段３２１２は、連想記憶３２０１の記憶内容の書き換えおよびアドレス検査回路３２０２の設定を行う。
【００５０】
連想記憶３２０１の記憶内容は、起動する仮想計算機内の仮想プロセッサの命令であってかつシミュレーションを要する特権命令である命令が入力された場合に記憶の探索が成功し、そのとき出力される命令は、変換前の命令のシミュレーションを行うコードへの分岐、割り込み処理内で変換前の命令のシミュレーションを行うコードが実行されるような実プロセッサへの割り込みの発生、変換前の命令の仮想プロセッサでの動作のシミュレーション、のいずれかの動作を行う命令であるように書き換えられる。これにより、特権違反割り込みを発生させることなく、シミュレーションを要する特権命令のシミュレーションが実行される。
【００５１】
アドレス検査回路３２０２は、起動する仮想計算機の使用する仮想計算機使用領域のアドレスのうち、命令変換を行うべきプログラムの配置されるアドレス範囲内のアドレスが入力されると正と出力するように設定される。
【００５２】
仮想計算機の仮想プロセッサを実プロセッサに割り当てる処理および解放する処理は仮想計算機モニタ３２１１によって行われるが、仮想計算機モニタ３２１１は命令変更手段３２００を動作させる設定の仮想計算機の仮想プロセッサを実プロセッサに割り当てる直前に、実プロセッサＩＤ検査回路３２０３を割り当てる実プロセッサのＩＤを保持するように設定する。また、命令変更手段３２００を動作させる設定の仮想計算機の仮想プロセッサを実プロセッサから解放した直後に、実プロセッサＩＤ検査回路３２０３が解放した実プロセッサのＩＤを保持しないように設定する。これにより、実プロセッサＩＤ検査回路３２０３は、命令変更手段３２００を動作させる設定の仮想計算機の仮想プロセッサを実行している実プロセッサのＩＤが入力された場合のみ正と出力することになる。
【００５３】
本発明の実施の形態１において、仮想計算機３４０は命令変更手段３２００を動作させない設定であり、仮想計算機３４１は命令変更手段３２００を動作させる設定であるとする。上に述べたことから、この設定の下では、実プロセッサ３００、３０１が仮想計算機用領域３２１４のアドレス範囲のうち、命令変換を行うべきプログラムの配置されるアドレス範囲内からシミュレーションを要する特権命令の命令読み出しを行ったときに、またそのときのみ、命令変更手段３２００により変換された命令を読み出すことになる。
【００５４】
以下、図２を用いて、仮想計算機モニタ３２１１による実プロセッサ３００、３０１の特権レベルの制御方式を説明する。図２は本発明の実施の形態１における命令変更手段の働き、および仮想プロセッサが特権命令を実行する時の実プロセッサの動作を表す図であり、仮想プロセッサ３４１０、３４１１のいずれかが、仮想計算機用領域３２１４中の命令変換を行うべきプログラムの配置されるアドレス範囲内に配置された命令１００、１０１、１０２、１０３、１０４を含むプログラムを実行する時の命令変更手段の働きと、前記仮想プロセッサを実行する実プロセッサがどのように動作するかを示している。
【００５５】
図２において、命令１００は特権レベルを第１種の特権レベルに設定する命令であり、仮想計算機モニタ３２１１は、実プロセッサ３００が命令１００を実行すると所定の割り込みが発生するように仮想計算機システムの制御を行う。
【００５６】
命令１０１、１０２、１０３はシミュレーションを要する特権命令であり、連想記憶３２０１は、命令１０１、１０２、１０３を入力した場合に探索が成功し、それぞれ命令１０５、１０６、１０７を出力するように設定されているものとする。
【００５７】
また、命令１０４は直接実行可能な特権命令である。
【００５８】
以下、命令１００、１０１、１０２、１０３、１０４を実行する仮想プロセッサは図１に示す仮想プロセッサ３４１０であり、仮想プロセッサ３４１０を実行する実プロセッサは、図１に示す実プロセッサ３００である場合を説明する。他の場合も同様である。
【００５９】
まず、命令１００の実行では、まず実プロセッサ３００が記憶装置３２１から命令１００を読み出し実行する（ステップＳ１１０）。命令１００を実行すると所定の割り込みが発生し、仮想計算機モニタ３２１１によって配置された割り込み処理コードに制御が移行する（ステップＳ１１１）。
【００６０】
割り込み処理コードは、命令１００の仮想プロセッサでの動作をシミュレーションするコードと、実行している仮想計算機が命令変更手段３２００を動作させる設定の場合に実プロセッサの特権レベルを第１種の特権レベルに設定するコードからなり、これらが実行される（ステップＳ１１２）。その後、割り込み処理から復帰する（ステップＳ１１３）。この時点で実プロセッサ３００は第１種の特権レベルにある。
【００６１】
命令１０１の実行では、まず実プロセッサ３００が記憶装置３２１に対し命令１０１の読み出し要求を発行するが、命令変更手段３２００により、読み出される命令は命令１０５となり、実プロセッサ３００は命令１０５を実行することになる（ステップＳ１１４）。命令１０５は分岐命令であり、命令１０１のシミュレーションを行うコードへの分岐（ステップＳ１１５）、分岐先でのコードの実行（ステップＳ１１６）、分岐先からの復帰（ステップＳ１１７）が行われる。
【００６２】
命令１０２の実行では、まず実プロセッサ３００が記憶装置３２１に対し命令１０２の読み出し要求を発行するが、命令変更手段３２００により、読み出される命令は命令１０６となり、実プロセッサ３００は命令１０６を実行する（ステップＳ１１８）。命令１０６は実プロセッサ３００への割り込みを発生させる命令であり、命令１０６の実行（ステップＳ１１８）により割り込みが発生して割り込み処理に制御が移行（ステップＳ１１９）し、割り込み処理内で命令１０２のシミュレーションを行うコードが実行（ステップＳ１２０）され、分岐先からの復帰（ステップＳ１２１）が行われる。
【００６３】
命令１０３の実行では、まず実プロセッサ３００が記憶装置３２１に対し命令１０３の読み出し要求を発行するが、命令変更手段３２００により、読み出される命令は命令１０７となり、実プロセッサ３００は命令１０７を実行することにより、命令１０３のシミュレーションを行う（ステップＳ１２２）。
【００６４】
命令１０４の実行では、実プロセッサ３００は記憶装置３２１から命令１０４を読み出し実行する（ステップＳ１２３）。命令１０４は特権命令であるが、実プロセッサ３００は命令１０４を読み出した時点で第１種の特権レベルにあるため、特権違反割り込みは発生せず、実プロセッサ３００が命令１０４を直接実行することで仮想プロセッサ３４１０での命令１０４の実行が実現される。
【００６５】
以上のように、仮想計算機モニタ３２１１は、命令１００の実行時に発生する割り込みの割り込み処理のコードとして、命令１００を実行している仮想計算機３４１が命令変更手段３２００を動作させる設定の場合に、実プロセッサの特権レベルを第１種の特権レベルに設定する処理を含むコードを配置することで、仮想プロセッサ３４１０が第１種の特権レベルにあって直接実行可能な特権命令の実行を開始する時に、前記仮想プロセッサ３４１０を実行している実プロセッサ３００が第１種の特権レベルにあるように実プロセッサ３００の特権レベルを制御する。このことにより、直接実行可能な特権命令が第１種の特権レベルにある仮想プロセッサ３４１０で実行される際に特権違反割り込みが発生しないことが保証される。
【００６６】
なお、実プロセッサの種類によっては、命令１００のような特権レベルを第１種の特権レベルに設定する命令は、その命令が特定のアドレス範囲に置かれている場合には、その命令の実行時に割り込みを発生しないように定義されていることもある。そのような場合は、仮想計算機モニタ３２１１は命令１００のような特権レベルを第１種の特権レベルに設定する命令を前記特定のアドレス範囲に配置することによっても同様な実プロセッサの特権レベルの制御を行うことができる。
【００６７】
（実施の形態２）
本発明の実施の形態２は、実施の形態１に示したような命令を変換する回路（命令変更手段３２００）を使用せずに、本発明を実施したものである。
【００６８】
図３により、本発明の実施の形態２における仮想計算機システムの構成を説明する。図３は本発明の実施の形態２における仮想計算機システムの構成を表す図である。
【００６９】
本発明の実施の形態２における仮想計算機システムでは、実プロセッサ４００、４０１とメモリ・Ｉ／Ｏバスコントローラ４２０がプロセッサバス４１０を介して接続され、メモリ・Ｉ／Ｏバスコントローラ４２０はバス４１１、４１２を介して記憶装置４２１、Ｉ／Ｏバスブリッジ４２２と接続されており、Ｉ／Ｏバスブリッジ４２２はＩ／Ｏバス４１３を介してコンソール装置４３０と接続されている。
【００７０】
実プロセッサ４００、４０１は、それぞれＭＭＵ４０００、４０１０を有している。実プロセッサ４００、４０１は、記憶装置４２１の連続したアドレス領域であるページのそれぞれに対し、そのページに対する自身による命令読み出し、データ読み出し、データ書き込みのそれぞれの操作を許可するか禁止するかを設定する命令を実行可能であり、ＭＭＵ４０００、４０１０は、禁止された操作の実行が試みられた場合に、試みられた操作に応じて異なる種類の割り込みを実プロセッサに対して発行する機能を有し、命令読み出しに関して、所定の割り込みを実プロセッサに対して発行する機能は命令実行禁止手段の機能である。以下、禁止された命令読み出し、データ読み出し、データ書き込みが試みられた場合に発行される割り込みを、それぞれ命令読み出し違反割り込み、データ読み出し違反割り込み、データ書き込み違反割り込みと呼ぶことにする。
【００７１】
本発明の実施の形態２における仮想計算機システムでは、仮想計算機４４０、４４１の２つの仮想計算機が動作しており、仮想計算機４４０は仮想プロセッサ４４００を備え、仮想計算機４４１は仮想プロセッサ４４１０、４４１１を備える。
【００７２】
本発明の実施の形態２において、仮想プロセッサ４４００、４４１０、４４１１の実行可能な命令は実プロセッサ４００、４１０で実行可能である。
【００７３】
また、仮想プロセッサ４４００、４４１０、４４１１の命令は、実プロセッサ４００、４０１によって直接実行可能な命令と、実プロセッサ４００、４０１によるシミュレーションを要する命令の２種類の命令からなる。
【００７４】
また、実プロセッサ４００、４０１と仮想プロセッサ４４００、４４１０、４４１１は第１種の特権レベルと第２種の特権レベルとの２種類の特権レベルで動作可能であり、実プロセッサ４００、４０１と仮想プロセッサ４４００、４４１０、４４１１は、命令実行時の特権レベルが第２種の特権レベルにある場合には自身に対して特権違反割り込みを発生させる動作を行い、特権レベルが第１種の特権レベルにある場合には前記特権違反割り込みを発生させる動作以外の命令ごとに定められた動作を行う特権命令を共通に実行可能である。
【００７５】
また、上記特権命令の一部は、シミュレーションを要する命令であり、一部は直接実行可能な命令である。
【００７６】
仮想プロセッサ４４００、４４１０、４４１１は実プロセッサ４００、４０１と同様に、記憶装置４２１の連続したアドレス領域であるページのそれぞれに対し、そのページに対する自身による命令読み出し、データ読み出し、データ書き込みのそれぞれの操作を許可するか禁止するかを設定する命令を実行可能である。
【００７７】
なお、命令読み出し、データ読み出し、データ書き込みのそれぞれの操作を許可するか禁止するかを設定する命令は特権命令である。
【００７８】
記憶装置４２１内には、仮想計算機４４０、４４１の制御のために用いられる仮想計算機モニタ用領域４２１０があり、仮想計算機モニタ用領域４２１０内には、仮想プロセッサのスケジューリングやハードウェア資源の仮想化など仮想計算機システムを制御するための処理を行う制御プログラムである仮想計算機モニタ４２１１が配置されている。また、命令変更手段４２１５と、命令変更手段４２１５を動作させる仮想計算機を設定する設定手段４２１２が仮想計算機モニタ４２１１のプログラムの一部として実現されている。
【００７９】
また、命令変更手段４２１５を含む仮想計算機モニタ４２１１のプログラムは、実プロセッサ４００、４０１で実行されることにより、その動作が実現されている。
【００８０】
また、仮想計算機モニタ用領域４２１０内には、命令変更手段４２１５を動作させる仮想計算機を示す情報を保存する設定保存部４２１６が存在する。
【００８１】
また、仮想計算機モニタ用領域４２１０内には、記憶領域４２１の各ページが仮想計算機モニタ４２１１によって書き換えられているか否かを示すページ書き換え状態保存部４２１７が存在する。
【００８２】
また、記憶装置４２１内にはそれぞれ仮想計算機４４０、４４１で使用される領域である仮想計算機用領域４２１３、４２１４が存在する。
【００８３】
本発明の実施の形態２において、設定手段４２１２は、仮想計算機の起動時に、コンソール装置４３０に、起動する仮想計算機に対しユーザに命令変更手段４２１５を動作させるか否かの設定を求めるメッセージ（例えば「この仮想計算機で命令の変更を行いますか（Ｙ／Ｎ）？」など。）を表示し、ユーザに希望の設定を入力させる。
命令変更手段４２１５を動作させる設定が入力された場合、設定手段４２１２は、起動する仮想計算機で命令変更手段４２１５を動作させることを示す情報を設定保存部４２１６に書き込む。
【００８４】
命令変更手段４２１５は、命令読み出し違反割り込み、データ読み出し違反割り込み、データ書き込み違反割り込みの各割り込みの割り込み処理コードをその一部としている。
【００８５】
また、命令変更手段４２１５は、命令読み出し、データ読み出し、データ書き込みの各操作を許可する命令のシミュレーションを行うコードをその一部としている。
【００８６】
さらに、命令変更手段４２１５は、ＤＭＡ完了時に発生するＤＭＡ完了割り込みの割り込み処理コードをその一部としている。
【００８７】
命令変更手段４２１５は、これらの処理コードにより実プロセッサ４００、４０１の命令読み出し、データ読み出し、データ書き込みの各操作の許可／禁止設定を適切に制御することにより、命令変更手段４２１５を動作させるように設定された仮想計算機の仮想プロセッサでシミュレーションを要する特権命令が実行される前にその命令の書き換えを行う。
【００８８】
以下、図４〜図１０により、本発明の実施の形態２の命令変更手段４２１５による各処理について説明する。図４は命令読み出し違反割り込み処理の流れを示すフローチャート、図５はデータ読み出し違反割り込み処理の流れを示すフローチャート、図６はデータ書き込み違反割り込み処理の流れを示すフローチャート、図７は命令読み出し許可命令のシミュレーション処理の流れを示すフローチャート、図８はデータ読み出し許可命令のシミュレーション処理の流れを示すフローチャート、図９はデータ書き込み許可命令のシミュレーション処理の流れを示すフローチャート、図１０はＤＭＡ完了割り込みの割り込み処理の流れを示すフローチャートである。
【００８９】
まず、命令読み出し違反割り込み処理では、図４に示すように、まず、割り込みを発生させたアドレスを含むページに対し仮想プロセッサが命令読み出し禁止であるか否か判定する（ステップＳ５００）。
【００９０】
ステップＳ５００で仮想プロセッサが命令読み出し禁止である場合は、割り込みは仮想計算機で命令読み出し違反が発生したことを示すので、仮想計算機の割り込み処理コードを実行（ステップＳ５０１）し復帰する。
【００９１】
ステップＳ５００で仮想プロセッサが命令読み出し許可である場合は、割り込みは命令が書き換えられていないページ内の命令が実行されようとしたことを示すので、割り込みを発生させたアドレスを含むページ内のシミュレーションを要する特権命令を、その命令のシミュレーションを行うコードへの分岐、割り込み処理内でその命令のシミュレーションを行うコードが実行されるような実プロセッサへの割り込みの発生、その命令の仮想プロセッサでの動作のシミュレーション、のいずれかの動作を行う命令に書き換える（ステップＳ５０２）。
【００９２】
その後、ページ書き換え状態保存部４２１７に前記ページが書き換えられたことを記録し（ステップＳ５０３）、前記ページに対する命令読み出しを許可し（ステップＳ５０４）、そのページに対するデータ読み出しを禁止（ステップＳ５０５）して復帰する。
【００９３】
また、データ読み出し違反割り込み処理では、図５に示すように、まず、割り込みを発生させたアドレスを含むページに対し仮想プロセッサがデータ読み出し禁止であるか否か判定する（ステップＳ６００）。
【００９４】
ステップＳ６００で仮想プロセッサがデータ読み出し禁止である場合は、割り込みは仮想計算機でデータ読み出し違反が発生したことを示すので、仮想計算機の割り込み処理コードを実行（ステップＳ６０１）し復帰する。
【００９５】
ステップＳ６００で仮想プロセッサがデータ読み出し許可である場合には、割り込みは命令が書き換えられたページの内容が読み出されようとしたことを示すので、割り込みを発生させたアドレスを含むページ内の書き換えられた命令を元に戻す（ステップＳ６０２）。
【００９６】
その後、ページ書き換え状態保存部４２１７に前記ページが書き換えられていないことを記録し（ステップＳ６０３）、前記ページに対する命令読み出しを禁止し（ステップＳ６０４）、前記ページに対するデータ読み出しを許可する（ステップＳ６０５）。その後、仮想プロセッサが前記ページに対しデータ書き込み許可であるか否かを判定（ステップＳ６０６）し、データ書き込み許可である場合のみ実プロセッサを前記ページに対しデータ書き込み許可であるように設定（ステップＳ６０７）し、復帰する。
【００９７】
また、データ書き込み違反割り込み処理では、図６に示すように、まず、割り込みを発生させたアドレスを含むページに対し仮想プロセッサがデータ書き込み禁止であるか否か判定する（ステップＳ７００）。
【００９８】
ステップＳ７００で仮想プロセッサがデータ書き込み禁止である場合は、割り込みは仮想計算機でデータ書き込み違反が発生したことを示すので、仮想計算機の割り込み処理コードを実行（ステップＳ７０１）し復帰する。
【００９９】
ステップＳ７００で仮想プロセッサがデータ書き込み許可である場合には、割り込みは命令が書き換えられたページに新たな内容が書き込まれようとしたことを示すので、割り込みを発生させたアドレスを含むページ内の書き換えられた命令を元に戻し（ステップＳ７０２）、ページ書き換え状態保存部４２１７に前記ページが書き換えられていないことを記録（ステップＳ７０３）し、前記ページに対する命令読み出しを禁止（ステップＳ７０４）した後、前記ページに対するデータ書き込みを許可する（ステップＳ７０５）。
【０１００】
その後、仮想プロセッサが前記ページに対しデータ読み出し許可であるか否かを判定（ステップＳ７０６）し、データ読み出し許可である場合のみ実プロセッサを前記ページに対しデータ読み出し許可であるように設定（ステップＳ７０７）し、復帰する。
【０１０１】
また、命令読み出し許可命令のシミュレーション処理では、図７に示すように、まず、仮想プロセッサでの命令実行時の動作を擬似的に実行（ステップＳ８００）する。
【０１０２】
その後、実プロセッサの命令読み出し許可／禁止設定を仮想プロセッサの設定と同じに設定する（ステップＳ８０１）。
【０１０３】
その後、設定保存部４２１６、ページ書き換え状態保存部４２１７を参照し、実行している仮想計算機で命令変更手段４２１５を動作させる設定であり、かつ命令読み出しを許可しようとしているページが書き換えられていないと分かった場合、実プロセッサの命令読み出しを禁止（ステップＳ８０２〜Ｓ８０４）して終了する。
【０１０４】
また、データ読み出し許可命令のシミュレーション処理では、図８に示すように、まず、仮想プロセッサでの命令実行時の動作を擬似的に実行（ステップＳ９００）する。
【０１０５】
その後、実プロセッサのデータ読み出し許可／禁止設定を仮想プロセッサの設定と同じに設定する（ステップＳ９０１）。
【０１０６】
その後、設定保存部４２１６、ページ書き換え状態保存部４２１７を参照し、実行している仮想計算機で命令変更手段４２１５を動作させる設定でありかつデータ読み出しを許可しようとしているページが書き換えられている場合、実プロセッサのデータ読み出しを禁止（ステップＳ９０２〜Ｓ９０４）して終了する。
【０１０７】
また、データ書き込み許可命令のシミュレーション処理では、図９に示すように、まず、仮想プロセッサでの命令実行時の動作を擬似的に実行（ステップＳ１００００）する。
【０１０８】
その後、実プロセッサのデータ書き込み許可／禁止設定を仮想プロセッサの設定と同じに設定する（ステップＳ１０００１）。
【０１０９】
その後、設定保存部４２１６、ページ書き換え状態保存部４２１７を参照し、実行している仮想計算機で命令変更手段４２１５を動作させる設定でありかつデータ書き込みを許可しようとしているページが書き換えられている場合、実プロセッサのデータ読み出しを禁止（ステップＳ１０００２〜Ｓ１０００４）して終了する。
【０１１０】
また、ＤＭＡ完了割り込みの割り込み処理では、図１０に示すように、まず、ＤＭＡによりデータ転送が行われたページ全てに対し、実プロセッサからの命令読み出しを禁止する（ステップＳ１１０００）。その後、ＤＭＡによりデータ転送が行われたページ全てに対し、ページの書き換えが行われていないことを記録（ステップＳ１１００１）し、仮想計算機のＤＭＡ完了割り込み処理を実行（ステップＳ１１００２）して復帰する。
【０１１１】
以上に示した処理により、命令変更手段４２１５を動作させると設定した仮想計算機では、仮想プロセッサで実行されるプログラムがあるページに配置されると、仮想プロセッサが前記ページ内の命令に対して命令読み出しを行う前に前記ページは命令読み出し禁止にされる。よって、実プロセッサが前記ページ内の命令の読み出しを試みた際に命令違反読み出し割り込みが発生し、割り込み処理の中で命令の書き換えが行われる。
【０１１２】
以上により、特権違反割り込みを発生させることなく、シミュレーションを要する特権命令のシミュレーションが実行される。
【０１１３】
仮想計算機モニタ４２１１は、命令変更手段４２１５を動作させる設定の行われた仮想計算機内の仮想プロセッサが第１種の特権レベルにある状態で直接実行可能な特権命令を開始する時に、前記仮想プロセッサを実行している実プロセッサが第１種の特権レベルにあるように実プロセッサ４００、４０１の特権レベルを制御する。この制御方式については本発明の実施の形態１に示したものと同じなので説明を省略する。
【０１１４】
以上により、命令変更手段４２１５を動作させる設定の行われた仮想計算機内の仮想プロセッサが第１種の特権レベルにある状態で直接実行可能な特権命令を実行する際に特権違反割り込みが発生しないことが保証される。
【０１１５】
なお、本発明の実施の形態２では、ステップＳ５０２でページ内の命令の書き換えを行っているが、仮想計算機で動作させるＯＳによっては、同一ページ内の命令は、第１種と第２種のどちらか一方の特権レベルでのみ実行されることが保証されていることもある。このような場合は、ステップＳ５０２において仮想プロセッサが第１種の特権レベルにあるときのみ命令の書き換えを行うようにし、命令の書き換えのコストを削減することも可能である。
【図面の簡単な説明】
【０１１６】
【図１】本発明の実施の形態１における仮想計算機システムの構成を表す図である。
【図２】本発明の実施の形態１における命令変更手段の働き、および仮想プロセッサが特権命令を実行する時の実プロセッサの動作を表す図である。
【図３】本発明の実施の形態２における仮想計算機システムの構成を表す図である。
【図４】本発明の実施の形態２における命令読み出し違反割り込み処理の流れを示すフローチャートである。
【図５】本発明の実施の形態２におけるデータ読み出し違反割り込み処理の流れを示すフローチャートである。
【図６】本発明の実施の形態２におけるデータ書き込み違反割り込み処理の流れを示すフローチャートである。
【図７】本発明の実施の形態２における命令読み出し許可命令のシミュレーション処理の流れを示すフローチャートである。
【図８】本発明の実施の形態２におけるデータ読み出し許可命令のシミュレーション処理の流れを示すフローチャートである。
【図９】本発明の実施の形態２におけるデータ書き込み許可命令のシミュレーション処理の流れを示すフローチャートである。
【図１０】本発明の実施の形態２におけるＤＭＡ完了割り込みの割り込み処理の流れを示すフローチャートである。
【図１１】従来の仮想計算機システムにおいて仮想プロセッサが特権命令を含むプログラム実行する時の実プロセッサの動作を表す図である。
【符号の説明】
【０１１７】
１００，２００…特権レベルを第１種の特権レベルに設定する命令、１０１，１０２，１０３，２０１…シミュレーションを要する特権命令、１０４，２０２…直接実行可能な特権命令、１０５…分岐命令、１０６…実プロセッサへの割り込みを発生させる命令、１０７…シミュレーションを要する特権命令のシミュレーションを行う命令、３００，３０１，４００，４０１…実プロセッサ、３１０，４１０…プロセッサバス、３１１，３１２，４１１，４１２…バス、３１３，４１３…Ｉ／Ｏバス、３２０，４２０…メモリ・Ｉ／Ｏバスコントローラ、３２１，４２１…記憶装置、３２２，４２２…Ｉ／Ｏバスブリッジ、３３０，４３０…コンソール装置、３４０，３４１，４４０，４４１…仮想計算機、３２００，４２１５…命令変更手段、３２０１…連想記憶、３２０２…アドレス検査回路、３２０３…プロセッサＩＤ検査回路、３２１０，４２１０…仮想計算機モニタ用領域、３２１１，４２１１…仮想計算機モニタ、３２１２，４２１２…設定手段、３２１３，３２１４，４２１３，４２１４…仮想計算機用領域、３４００，３４１０，３４１１，４４００，４４１０，４４１１…仮想プロセッサ、４０００，４０１０…ＭＭＵ、４２１６…設定保存部、４２１７…ページ書き換え状態保存部。
【図１】
2005149361.tif 000003
【図２】
2005149361.tif 000004
【図３】
2005149361.tif 000005
【図４】
2005149361.tif 000006
【図５】
2005149361.tif 000007
【図６】
2005149361.tif 000008
【図７】
2005149361.tif 000009
【図８】
2005149361.tif 000010
【図９】
2005149361.tif 000011
【図１０】
2005149361.tif 000012
【図１１】
2005149361.tif 000013