(57)【要約】【課題】  ホスト計算機上では更新間隔の短いタイマの時刻が得られない場合に更新間隔の短い仮想計算機上のタイマを実現する。【解決手段】  仮想計算機上の仮想タイマを制御するための情報として、仮想タイマの時刻の更新時に利用される第１の値及び第２の値を予め記憶手段に用意しておく。仮想タイマを更新する際、ホスト計算機上のタイマの時刻と仮想タイマの時刻を比較し、仮想タイマの値がホスト計算機のタイマ装置の時刻より所定一定以上進んでいるか否かを判断して、第１の値又は第２の値を選択的に用いて仮想タイマを更新する。【選択図】  図１
2008181392.tif 000002
【特許請求の範囲】
【請求項１】
時刻を計時するタイマ装置を有するホスト計算機上に仮想計算機を構築した計算機における仮想タイマ制御方法であって、
該仮想タイマの時刻がホスト計算機のタイマ装置の時刻より所定以上進んでいない場合に使用する第１の値と、該仮想タイマの時刻が該ホスト計算機のタイマ装置の時刻より所定以上進んでいる場合に使用する第２の値を予め記憶手段に用意しておき、
該仮想タイマを更新する際に、該仮想タイマの時刻と、該ホスト計算機のタイマ装置から取得した時刻を比較して、該仮想タイマの時刻が該ホスト計算機の該タイマ装置の時刻より所定以上進んでいるか否かを判断し、該記憶手段に記憶された該第１の値又は第２の値を選択的に用いて該仮想タイマの時刻を更新することを特徴とする仮想タイマ制御方法。
【請求項２】
該ホスト計算機の該タイマ装置の時刻と、該仮想タイマの時刻とを比較することにより両者の差を計算し、該仮想タイマの遅れが一定値以上の場合に、該第１の値又は第２の値を該仮想タイマの値に加算することで、該仮想タイマの時刻を該ホスト計算機のタイマ装置の時刻に合わせることを特徴とする請求項１の仮想タイマ制御方法。
【請求項３】
該仮想タイマの更新時に、次回タイマ割り込み時刻を過ぎると判断される場合に、該仮想タイマの時刻をタイマ割り込み時刻に合わせるように調整することを特徴とする請求項１又は２の仮想タイマ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は仮想タイマ制御方法に係り、特に仮想計算機上の仮想タイマをホスト計算機のタイマ装置に同期させながら動作させる仮想タイマ制御方法に関するものである。
【背景技術】
【０００２】
計算機はタイマを有し、そのタイマを用いて時刻の表示や時間の測定、タイマ割り込み処理などの機能を実現することができる。ホスト計算機上で動作する仮想計算機においても、タイマの機能は不可欠である。
ホスト計算機と仮想計算機のタイマの時刻を同期させる必要がない場合、仮想計算機上のタイマはホスト計算機のタイマとは独立して動作させることができる。この場合、仮想計算機ではソフトウェアでタイマをシミュレートすることによって実現できる。
【０００３】
従来、仮想計算機のタイマ制御に関して、例えばタイマの動作を実計算機で動かした場合の能力と一致させるもの（特開平１−２２９３２８号公報（特許文献１））や、仮想計算機上で動作させるソフトウェアのデバッグ効率を向上させるもの（特開平１１−３０６０３６号公報（特許文献２））が知られている。これらの場合、仮想計算機のタイマが実際の時刻と一致しないため、デバッグ用途に用いられている。
【０００４】
また、ホスト計算機と仮想計算機のタイマの時刻を同期させる必要がある場合、仮想計算機上で時刻が必要になった際に、ホスト計算機のタイマの時刻を取得してそのまま使用することが多い。これに関して、例えば、特開平２−２７８４１０号公報（特許文献３）には、仮想タイマがホスト計算機から取得したタイマの時刻を基にタスク切り替えの影響を排除してタスク毎に経過時間を正確に計測する技術が開示されている。
【０００５】
【特許文献１】特開平１−２２９３２８号公報
【特許文献２】特開平１１−３０６０３６号公報
【特許文献３】特開平２−２７８４１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、ホスト計算機と仮想計算機の構成が異なる場合、ホスト計算機において技術的あるいは性能上の問題によって仮想計算機で必要としている精度と同等以上のタイマの時刻が使用できないことがある。
ホスト計算機で取得できるタイマの更新間隔が仮想計算機のタイマの更新間隔（例えば１マイクロ秒）より長い（例えば１ミリ秒）場合、短い間隔でホスト計算機のタイマの時刻を取得すると同一の値が取得されることがある。仮想計算機上で動作させるソフトウェアが、更新間隔が短く、時刻が単調に増加するタイマを期待していた場合、タイマから同一の時刻が取得されると誤動作の原因となることがある。そのため、ホスト計算機のタイマから取得した時刻をそのまま使用することができない。
【０００７】
そこで、時刻が単調に増加することを保障し、かつホスト計算機のタイマと時刻を同期させた仮想タイマをソフトウェアで実現する必要がある。
【０００８】
本発明の目的は、ホスト計算機上に仮想計算機を構築した計算機において、ホスト計算機上で更新間隔の短いタイマの時刻が得られない場合に更新間隔の短い仮想計算機上のタイマを実現することにある。
【課題を解決するための手段】
【０００９】
本発明は、好ましくは、時刻を計時するタイマ装置を有するホスト計算機上に仮想計算機を構築した計算機における仮想タイマ制御方法であって、
仮想タイマの時刻がホスト計算機のタイマ装置の時刻より所定以上進んでいない場合に使用する第１の値と、仮想タイマの時刻がホスト計算機のタイマ装置の時刻より所定以上進んでいる場合に使用する第２の値を予め記憶手段に用意しておき、
仮想タイマを更新する際に、仮想タイマの時刻と、ホスト計算機のタイマ装置から取得した時刻を比較して、仮想タイマの時刻がホスト計算機のタイマ装置の時刻より所定以上進んでいるか否かを判断し、記憶手段に記憶された第１の値又は第２の値を選択的に用いて仮想タイマの時刻を更新する仮想タイマ制御方法として構成される。
【００１０】
好ましい例では、ホスト計算機のタイマ装置の時刻と、仮想タイマの時刻とを比較することにより両者の差を計算し、仮想タイマの遅れが一定値以上の場合に、第１の値又は第２の値を仮想タイマの値に加算することで、仮想タイマの時刻をホスト計算機のタイマ装置の時刻に合わせる。
また、好ましくは、仮想タイマの更新時に、次回タイマ割り込み時刻を過ぎると判断される場合に、仮想タイマの時刻をタイマ割り込み時刻に合わせるように調整する。
【発明の効果】
【００１１】
本発明によれば、ホスト計算機のタイマより更新間隔の短い仮想タイマをホスト計算機上で実現することができる。また、それぞれの加算値と閾値を変更することで、様々な特性を持つ仮想タイマを実現することができる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を用いて本発明の実施例を詳細に説明する。
[実施例１]
図１は、一実施例による仮想タイマ制御を実現する計算機のシステム構成を示す。
ホスト計算機１０１は、タイマの制御に関する処理部として、タイマ装置１０２を有し、そのホスト計算機１０１上には仮想計算機１０３が構築される。
ホスト計算機上１０１で動作する仮想計算機１０３は、命令シミュレーション部１０４、タイマ割込み制御部１０５、仮想タイマ制御部１０６、及びデータベース（ＤＢ）１０７を有する。ここで、命令シミュレーション部１０４は仮想計算機１０３上で命令を実行する処理部である。タイマ割込み制御部１０５は一定のタイミングで命令の処理を切替えるためにタイマ割り込み処理を行う。仮想タイマ制御部１０６は仮想タイマ１１０の更新処理のための制御を行う。仮想タイマ１１０の制御動作については、図２以降を参照して詳述する。
【００１３】
ＤＢ１０７は仮想タイマ制御情報１１を記憶する記憶手段である。仮想タイマ制御情報１１としては、仮想タイマ（Ｔ１）１１０、第１の加算値（Ｕ１）１１１、第２の加算値（Ｕ２）１１２、及び閾値（Ｖ）１１２を有する。仮想タイマ１１０は仮想計算機１０３上で使用されるタイマであり、後述するように特徴的な処理動作を行う。第１の加算値Ｕ１（１１０）は、仮想タイマ１１０の時刻がホスト計算機のタイマ装置１０２の時刻より進んでいない場合に使用される。加算値Ｕ２（１１１）は、仮想タイマ１１０の時刻がホスト計算機のタイマ装置１０２の時刻より進んでいる場合に使用される。閾値Ｖ（１１２）は、仮想タイマ１１０とホスト計算機のタイマ装置１０２の差異が許容できる程度の誤差の場合に使用される閾値である。
【００１４】
図２は、一実施例における仮想タイマ更新処理のフローチャートを示す。
ホスト計算機１０１のタイマ装置１０２の時刻Ｔ０、ホスト計算機のタイマの更新間隔ΔＴ０とすれば、仮想タイマ１１０の時刻Ｔ１を以下のように更新する。
ホスト計算機１０１のタイマ装置１０２の時刻Ｔ０を取得し（２０１）、次の処理を行う。
【００１５】
（１）仮想タイマ１１０の時刻Ｔ１がＴ０−ＶからＴ０＋ΔＴ０の範囲ならば、仮想タイマの誤差は許容範囲内であると判断し（２０２、２０３）、仮想タイマの時刻Ｔ１にＵ１を加算する（２０４）。
（２）仮想タイマ１１０の時刻Ｔ１がＴ０＋ΔＴ０以上ならば仮想タイマは進んでいると判断し（２０３）、仮想タイマの時刻Ｔ１にＵ２を加算する（２０５）。
（３）仮想タイマ１１０の時刻Ｔ１がＴ０−Ｖ以下ならば仮想タイマは遅れていると判断し（２０２）、仮想タイマの時刻Ｔ１をＴ０に合わせる（２０６）。
【００１６】
ここで、第１の加算値Ｕ１を平均的な更新間隔、第２の加算値Ｕ２を仮想タイマの更新が頻繁に起こった場合でも時刻が進みすぎないような十分に小さい正の値（例えば１）とすれば、仮想タイマの時刻は進みすぎず、かつ単調に増加することが保障される。
【００１７】
仮想タイマ１１０の更新の頻度が少なかった場合には仮想タイマの時刻に遅れが発生する。閾値Ｖより遅れが大きくなった場合には仮想タイマの時刻をホストの時刻に合わせる。よって、閾値Ｖ以上の遅れは発生せず、かつ仮想タイマは増加する方向に調整されるため単調増加であることは保障される。
【００１８】
仮想タイマ１１０を参照したとき、および仮想計算機１０３上で一定命令数実行したときに上記の更新処理を行うことにより、仮想タイマ１１０はホスト計算機１０１のタイマ装置１０２に同期して動作することができる。
【００１９】
[実施例２]
本実施例は、単調に増加するタイマに加えて、タイマ割り込みを発生させるためにカウントダウンタイマを備えた仮想計算機における仮想タイマ制御について説明するものである。このタイマは時間の経過によって単調に減少するタイマであり、値が０以下の場合に場合にタイマ割り込みを発生させる。このタイマを仮想タイマで実現する。以下、ホスト計算機のタイマの時刻Ｔ０、単調増加する仮想タイマの時刻Ｔ１、単調減少する仮想タイマの時刻Ｔ２とする。
本実施例では、誤差の累積値Ｄ（以下、累積誤差と呼ぶ）を計算してホスト計算機のタイマと仮想タイマの同期状況を判断する。ここで、Ｄ＝Ｔ１−Ｔ０である。
【００２０】
図３に仮想計算機１０３の初期設定のための処理のフローチャートを示す。初期設定時には、ホスト計算機１０１のタイマ装置１０２の時刻Ｔ０’を取得して、保存しておく（３０１）。また、累積誤差Ｄを０に初期化しておく（３０２）。
図４に示すように、タイマの時刻の更新処理では、ホスト計算機１０１のタイマ装置１０２の時刻Ｔ０を取得して（４０１）、前回取得した時刻Ｔ０’との差を累積誤差Ｄから減算し、取得したホスト計算機１０１のタイマ装置１０２の時刻をＴ０’として保存しておく（４０２）。
【００２１】
ステップ４０３、４０４の比較結果によって以下のように加算値Ｕを設定する。
（１）累積誤差Ｄの値が−ＶからΔＴ０の範囲ならば仮想タイマの誤差は許容範囲内であると判断して、加算値Ｕに第１の加算値Ｕ１を設定する（４０５）。
（２）累積誤差Ｄの値がΔＴ０以上ならば、仮想タイマは進んでいると判断し、加算値Ｕに第２の加算値Ｕ２を設定する（４０６）。
（３）累積誤差Ｄの値が−Ｖ以下ならば仮想タイマは遅れていると判断し、加算値Ｕに−Ｄを設定する（４０７）。
【００２２】
ここで、加算値Ｕの値が仮想タイマの時刻Ｔ２より大きければ（４０８）、加算値Ｕに仮想タイマの時刻Ｔ２を設定する（４０９）。これにより、仮想タイマの時刻がタイマ割り込み発生時刻を行き過ぎてしまうことを防ぐことができる。
その後、仮想タイマの時刻Ｔ２から加算値Ｕを減算し、仮想タイマの時刻Ｔ１及び累積誤差Ｄに加算値Ｕを加算することで仮想タイマの時刻を更新する（４１０）。
【００２３】
タイマ割り込み制御部１０５では、仮想タイマの時刻Ｔ２を参照し、０以下ならばタイマ割り込みを検知し、タイマ割り込み処理を行う。タイマ割り込みが発生するときカウントダウンタイマの時刻は常に０のため、仮想計算機１０３上のソフトウェアには設定した通りの時刻にタイマ割り込みが発生しているように見える。
【００２４】
以下、カウントダウンタイマの動作の例について説明する。
ホスト計算機のタイマの更新間隔が1ミリ秒、仮想タイマの更新間隔が１マイクロ秒であり、第１の加算値Ｕ１＝２００、第２の加算値Ｕ２＝１５、閾値Ｖ＝１０００とした場合について説明する。
このとき、１マイクロ秒を１単位として考えれば、ホスト計算機１０１のタイマ更新間隔ΔＴ０＝１０００と考えられる。このときの流れを図５に従って説明する。
【００２５】
仮想計算機１０３の開始時に、ホスト計算機１０１のタイマ装置１０２の時刻Ｔ０’＝１０００００を取得し、Ｄ＝０に初期化する。仮想タイマの時刻をホスト計算機のタイマに合わせ、Ｔ１＝１０００００とする。このときタイマ割り込みを２５００マイクロ秒後に発生させるため、Ｔ２＝２５００が設定されたとする。
第１回の仮想タイマの更新事象発生時、Ｔ０＝１０００００で更新されておらず、Ｄ＜ΔＴ０であるから加算値Ｕ１を選択し、仮想タイマＴ２から減算する。その結果、Ｔ２＝２３００となる。以降、第２回から第５回の更新事象発生時も同様に加算値Ｕ１が選択され、第５回更新事象発生後はＴ２＝１５００、Ｄ＝１０００となる。
【００２６】
第６回の更新事象発生時、Ｔ０＝１０００００で更新されておらず、Ｄ≧ΔＴ０であるから加算値Ｕ２が選択され、仮想タイマの時刻Ｔ２から減算される。結果Ｔ２＝１４８５、Ｄ＝１０１５となる。第７回も同様に第２の加算値Ｕ２が選択され、結果Ｔ２＝１４７０、Ｄ＝１０３０となる。
【００２７】
第８回の更新事象発生時、ホスト計算機のタイマが更新されＴ０＝１０１０００となる。よって累積誤差Ｄからホスト計算機のタイマ更新間隔ΔＴ０を減算し、Ｄ＝３０となる。このとき、Ｄ＜ΔＴ０であるから第１の加算値Ｕ１が選択され、Ｔ２＝１２７０、Ｄ＝２３０となる。第９回から第１１回の更新事象発生時は、ホスト計算機のタイマが更新される時もあるが、−Ｖ＜Ｄ＜ΔＴ０であるため第１の加算値Ｕ１が選択される。
【００２８】
第１２回の更新事象発生時、ホスト計算機のタイマが更新され、累積誤差Ｄからホスト計算機のタイマ更新間隔ΔＴ０を減算した際にＤ＝−１１７０となりＤ≦−Ｖが満たされる。このとき、まずＵ＝−Ｄが選択されるが、Ｔ２＜Ｕのため、Ｕ＝Ｔ２が設定される。その結果、Ｔ２＝０、Ｄ＝−５００となる。Ｔ２＝０のため、タイマ割り込み制御部でタイマ割り込みが検知され、タイマ割り込みが発生する。
【００２９】
第１３回の更新事象発生時は、Ｕ＝２００が選択され、Ｔ２＝２３００、Ｄ＝−３００となる。
第１４回の更新事象発生時は、ホスト計算機のタイマが更新され、累積誤差Ｄからホスト計算機のタイマ更新間隔ΔＴ０を減算した際にＤ＝−１３００となり、Ｄ＜−Ｖが満たされる。そのため、Ｕ＝−Ｄが選択される。結果、Ｔ２＝１０００、Ｄ＝０となる。
このように仮想タイマ１１０の時刻はホスト計算機１０１のタイマ装置１０２の時刻と大きな差が発生せず、同期して動作させることができる。
【００３０】
本実施例によれば、ホスト計算機のタイマ装置より更新間隔の短い仮想タイマをホスト計算機上で実現することができる。また、それぞれの加算値と閾値を変更することで、様々な特性を持つ仮想タイマを実現することができる。また、浮動小数点演算や、乗算・除算等を必要としないため、高速に動作させることができる。
【００３１】
本実施例（請求項２）によれば、ホスト計算機のタイマ装置の時刻より仮想タイマの時刻が一定の閾値Ｖ以上遅れた場合には、第１の加算値又は第２の加算値を用いて、仮想タイマの時刻をホスト計算機のタイマ装置の時刻に合わせる。これにより、仮想タイマの遅れが一定以上にならず、ホスト計算機のタイマ装置の時刻に同期して動作することが保障される。
【００３２】
一定タイミングごとに割込みを発生させるタイマ割込み処理では、仮想計算機の処理速度が実計算機の処理速度と比較して極端に遅い場合、割込みを起こす間隔を非常に短く設定するソフトウェアを動作させると実計算機上で動作させている場合より割込み処理を行っている時間が多くなり、その他の処理に割り当てられる時間が少なくなるという問題が生じる場合がある。そのような場合は、第１の加算値および第２の加算値を小さな値（例えば１）、閾値Ｖをタイマ割り込みを発生させたい最小の間隔に設定すれば、ホスト計算機のタイマ装置の値がおよそＶだけ進んだ時に大きく時刻が進み、そのときにタイマ割り込みが発生することになるため、タイマ割込み間隔を制御することができる。
仮想タイマの第１の加算値および第２の加算値、および閾値Ｖを０とすれば、常にホスト計算機のタイマの時刻と一致した時刻をとることになる。
【００３３】
また、本実施例（請求項３）によれば、仮想タイマにおいて設定したタイマ割り込みの時刻を過ぎると判断された場合に、タイマ割り込みの時刻に合わせる処理を追加している。これによって、設定した時刻ちょうどにタイマ割り込みを発生させることを保障したまま時刻を同期させることが可能となる。
【００３４】
ここで、仮想タイマを更新する機会は、仮想計算機の命令で仮想タイマの値を参照した場合、仮想計算機上で一定命令数を実行した場合、ホスト計算機のタイマが一定時間経過した場合などが含まれるが、これに限定されない。
なお、第１および第２の加算値を仮想タイマの時刻から減算すれば、同様の考え方で単調減少するタイマ（カウントダウンタイマ）を実現できることは明らかである。
【図面の簡単な説明】
【００３５】
【図１】一実施例（実施例１）によるタイマ制御のための計算機のシステム構成を示す図。
【図２】実施例１によるタイマの時刻更新処理のフローチャート。
【図３】実施例２による初期設定のフローチャート。
【図４】実施例２によるタイマの時刻更新処理のフローチャート。
【図５】実施例２による仮想タイマの動作例を示す図。
【符号の説明】
【００３６】
１０１：ホスト計算機、１０２：タイマ装置、  １０３：仮想計算機、  １０４：命令シミュレーション部、  １０５：タイマ割込み制御部、  １０６：仮想タイマ制御部、  １０７：ＤＢ，  １１：仮想タイマ制御情報、  １１０：仮想タイマ、  １１１：第１の加算値、  １１２：第２の加算値  １１２：閾値。
【図１】
2008181392.tif 000003
【図２】
2008181392.tif 000004
【図３】
2008181392.tif 000005
【図４】
2008181392.tif 000006
【図５】
2008181392.tif 000007