(57)【特許請求の範囲】
【請求項１】
インターバルタイマの周期的割り込みからシステム時刻を生成し該システム時刻に基づいて各種処理を実行する計算機システムにおいて、システム時刻の分解能よりも低い分解能である外部時計から外部時刻を取り込む手段と、該外部時刻と前記システム時刻とをシステム時刻の周期毎に比較する比較手段と、インターバルタイマ周期変換手段とを備えると共に、該変換手段は、
システム時刻の周期における外部時刻とシステム時刻の関係が前記比較結果に対して反転する方向にシステム時刻の周期を補正し、前記補正した周期を繰り返し、その度にシステム時刻の周期における外部時刻とシステム時刻を比較し、反転を特定する第１の手段と、
前記補正前のシステム時刻の周期の情報、前記補正に相当する情報、及び、前記繰返しに相当する情報に基づいて第１のインターバル周期を求める第２の手段と、
システム時刻の周期における外部時刻とシステム時刻の関係が前記反転に対して再度反転する方向にシステム時刻の周期を再度補正し、前記再度補正した周期を繰り返し、その度にシステム時刻の周期における外部時刻とシステム時刻を比較し、再度の反転を特定する第３の手段と、
前記補正前のシステム時刻の周期の情報、前記補正に相当する情報、前記再度の補正に相当する情報、及び、前記繰返しに相当する情報に基づいて第２のインターバル周期を求める第４の手段と、
前記第１のインターバルと前記第２のインターバルを切換えてインターバルタイマの周期的割込みをする第５の手段と、を具えるものとすることを特徴とする計算機システム。
【請求項２】
周期的に割込みを発生させるタイマ割り込み発生手段と、割り込みを起こす周期を表す値であるインターバルタイマ周期を有するインターバルタイマと、当該インターバルタイマの割り込みからシステム時刻を生成するシステム時刻生成手段と、前記システム時刻を読み込むシステム時刻読み込み手段と、前記インターバルタイマより精度が優れ且つ分解能が、それよりも低い外部時計から時刻を読み出す外部時刻読み込み手段と、該外部時刻と前記システム時刻とを連続して読み込むための外部時計及びシステム時刻連続読み込み手段と、前記外部時刻と前記システム時刻との差を計算する時刻比較手段と、インターバルタイマ周期変換手段とを備えると共に、該変換手段は、
システム時刻の周期における外部時刻とシステム時刻の関係が前記比較結果に対して反転する方向にシステム時刻の周期を補正し、前記補正した周期を繰り返し、その度にシステム時刻の周期における外部時刻とシステム時刻を比較し、反転を特定する第１の手段と、
前記補正前のシステム時刻の周期の情報、前記補正に相当する情報、及び、前記繰返しに相当する情報に基づいて第１のインターバル周期を求める第２の手段と、
システム時刻の周期における外部時刻とシステム時刻の関係が前記反転に対して再度反転する方向にシステム時刻の周期を再度補正し、前記再度補正した周期を繰り返し、その度にシステム時刻の周期における外部時刻とシステム時刻を比較し、再度の反転を特定する第３の手段と、
前記補正前のシステム時刻の周期の情報、前記補正に相当する情報、前記再度の補正に相当する情報、及び、前記繰返しに相当する情報に基づいて第２のインターバル周期を求める第４の手段と、
前記第１のインターバルと前記第２のインターバルを切換えてインターバルタイマの周期的割込みをする第５の手段と、を具えるものとすることを特徴とする計算機システム。
【請求項３】
インターバルタイマの周期的割り込みからシステム時刻を生成し該システム時刻に基づいて各種処理を実行する計算機システムにおいて、
外部時計から取り込んだシステム時刻の分解能よりも低い分解能である外部時刻と前記システム時刻とをシステム時刻の周期毎に比較するステップと、
システム時刻の周期における外部時刻とシステム時刻の関係が前記比較結果に対して反転する方向にシステム時刻の周期を補正し、前記補正した周期を繰り返し、その度にシステム時刻の周期における外部時刻とシステム時刻を比較し、反転を特定するステップと、
前記補正前のシステム時刻の周期の情報、前記補正に相当する情報、及び、前記繰返しに相当する情報に基づいて第１のインターバル周期を求めるステップと、
システム時刻の周期における外部時刻とシステム時刻の関係が前記反転に対して再度反転する方向にシステム時刻の周期を再度補正し、前記再度補正した周期を繰り返し、その度にシステム時刻の周期における外部時刻とシステム時刻を比較し、再度の反転を特定するステップと、
前記補正前のシステム時刻の周期の情報、前記補正に相当する情報、前記再度の補正に相当する情報、及び、前記繰返しに相当する情報に基づいて第２のインターバル周期を求めるステップと、
前記第１のインターバルと前記第２のインターバルを切換えてインターバルタイマの周期的割込みをするステップとを有するを特徴とする計算機システムのシステム時刻調整方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は計算機システムとそのシステム時刻調整方法に係り、特に、正確な時刻を示す外部時計に対しシステム時刻が経過時間に拘わらず或る一定誤差内で時刻を刻むようにシステム時刻を自動調整するのに好適な計算機システムとそのシステム時刻調整方法に関する。
【０００２】
【従来の技術】
リアルタイムで監視や制御を行う従来の監視制御装置等の計算機システムでは、インターバルタイマなどのシステム内時計の刻むシステム時刻に基づいて、スケジューリング制御やデータ収集管理などの各種タスクの起動を行っている。
【０００３】
監視制御装置のシステム時計が誤差を持つのは避けられないが、その誤差が大きく蓄積した状態で例えばデータ収集を行った場合、そのデータ収集時刻（システム時刻）が実際の正確な時刻（外部時計）と大きく異なってしまい、監視制御に支障を来すことになる。このため、システム時刻を外部からの時刻変更操作により時刻合わせする必要が生じる。
【０００４】
そこで例えば、特開平１１―２０２９７２号公報記載の従来技術では、インターバルタイマからのタイマ割込みにより時刻を生成し更新するシステム時刻の他に、正確な時刻をもつ外部時計を計算機システムに設け、一定周期毎に正確な外部時計を読取り、その時のシステム時刻との差分でシステム時刻を補正するようにしている。
【０００５】
この差分の補正を、外部時計の正確な時刻にシステム時刻を瞬時に合せることで行うと、システム内の実行中のプロセスに多大な影響を与えるため、差分の時間を一定の時刻調整量で割り、正確な時刻に戻るまでの時間すなわち補正時間を計算する。そして、その補正時間内は、タイマ割込みに対して時刻を更新する時間をその時刻調整量づつ制御し、補正時間が経過した時に正確な時刻に一致するようにしている。
【０００６】
具体的に数値を使って従来技術を説明すると、例えば、タイマ割込み間隔が１０ミリ秒、タイマ割込み当りの時刻調整量が１ミリ秒の場合、システム時刻が外部時計より１秒遅れていたとすると、補正時間は１秒を１ミリ秒ずつ補正するので、タイマ割込み１０００回分、つまり１０秒となる。この補正時間内はタイマ割込み間隔を通常の１０ミリ秒ではなく、９ミリ秒とする。そして補正時間後はまた１０ミリ秒に戻す。そうすることで、補正時間が終了した時にシステム時刻は正確な時刻と一致する。
【０００７】
【発明が解決しようとする課題】
上述した従来技術には下記２点の問題がある。その第１は、インターバルタイマからのタイマ割込みに対する時刻更新時間が、補正時間内では通常時間のときと異なってしまうことである。アプリケーションソフトにおいて、何時間何分後に起動したり何秒周期で動作しようとする場合、そのプロセスは一時的に他のプロセスにＣＰＵを明け渡して待つことになる。しかし、この待ち状態はオペレーティングシステムがタイマ割込みが発生した回数をカウントすることによって作り出しているため、タイマ割込みに対する時刻の更新時間が異なる従来技術で補正を行うと、アプリケーションソフトの期待した時間で起動や動作をしないということが起こる可能性がある。
【０００８】
第２の問題は、誤差の算出を、単純に外部時計から読み取った値とシステム時刻の値とを比較して行っているため、補正可能な誤差が外部時計の分解能に依存してしまい、外部時計が低分解能であると、高精度なシステム時刻を実現することができないという問題である。例えば、外部時計が１秒刻みで更新される時計であるとすると、読込んだ時刻は１秒未満の誤差を含むため、誤差が１秒以上にならないとシステム時刻との差が生じない。このため、外部時計が１秒刻みで更新する時計しか持たないシステムにおいて、常に１秒以内の誤差で抑える必要のある場合はこの従来の時刻合わせ方法を採用することはできない。
【０００９】
本発明の目的は、高精度，低分解能な外部時計と、低精度，高分解能なシステム時刻を持つシステムであっても、システム時刻の進みをユーザの期待する誤差以内で外部時計の進みにすばやく合せることを可能とし、また、経過時間によらずに、システムに影響を与えることなくシステム時刻をある所定の誤差内に保つことが可能な計算機システムとそのシステム時刻調整方法を提供することにある。
【００１０】
【課題を解決するための手段】
上記目的は、インターバルタイマの周期的割り込みからシステム時刻を生成し該システム時刻に基づいて各種処理を実行する計算機システムにおいて、外部時計から外部時刻を取り込む手段と、該外部時刻と前記システム時刻とを比較する比較手段と、該システム時刻が前記外部時刻に対して進み或いは遅れている場合には前記インターバルタイマの周期的割り込みタイミングを遅らせ或いは進ませるインターバルタイマ周期変換手段とを備えることで、達成される。
【００１１】
上記目的は、また、周期的に割込みを発生させるタイマ割り込み発生手段と、割り込みを起こす周期を表す値であるインターバルタイマ周期を有するインターバルタイマと、当該インターバルタイマの割り込みからシステム時刻を生成するシステム時刻生成手段と、前記システム時刻を読み込むシステム時刻読み込み手段と、前記インターバルタイマより精度が優れた外部時計から時刻を読み出す外部時刻読み込み手段と、該外部時刻と前記システム時刻とを連続して読み込むための外部時計及びシステム時刻連続読み込み手段と、前記外部時刻と前記システム時刻との差を計算する時刻比較手段と、外部時刻とシステム時刻を読み出す時間間隔を調整する読み込みタイミング調整手段と、前記外部時刻と前記システム時刻との差の誤差範囲の最大値と最小値とを計算する誤差範囲計算手段と、外部時刻とシステム時刻との比較からシステム時刻の進み／遅れ方向を求めてインターバルタイマ周期の変更指示を行う切替手段と、外部時刻に基づいて補正方向を決定し該補正方向を基に発振器のパルスをカウントするインターバルタイマ周期を所定調整量で調節する調整手段とを備えることで、達成される。
【００１２】
好適には、上記において、高精度であるが分解能が低い外部時計と分解能は高いが低精度であるシステム時刻を持つ場合に、外部時計から外部時刻を読込むタイミングを所定調整量で調節することによって誤差の範囲を速く特定する手段を備える。
【００１３】
上記目的はまた、インターバルタイマの周期的割り込みからシステム時刻を生成し該システム時刻に基づいて各種処理を実行する計算機システムにおいて、外部時計から取り込んだ外部時刻と前記システム時刻とを比較し、該システム時刻が前記外部時刻に対して進み或いは遅れている場合には、前記インターバルタイマの周期的割り込みタイミングを遅らせ或いは進ませて、システム時刻を外部時刻に所定誤差内で合わせることで、達成される。好適には、上記おいて、前記所定誤差を、ユーザ指定の期待誤差とする。
【００１４】
本発明では、タイマ割込みを発生させるインターバルタイマの持つインターバルタイマ周期という値を調整する方式をとる。これにより、タイマ割込みによるシステム時刻の更新時間は常に一定となり、プロセスの動作に影響を与えない。また、外部時計とシステム時刻の誤差を求める本発明は、外部時計を読み込むタイミングをうまく調整して外部時計の更新部分を検出することによって誤差を求める方式のため、外部時計の分解能分の読込み誤差がなくなり、高精度なシステム時刻を実現することができる。
【００１５】
【発明の実施の形態】
以下、本発明の一実施形態を図面を参照して説明する。
【００１６】
図１は、本発明の一実施形態に係る計算機システムにおけるシステム時刻調整機能の構成図である。このシステム時刻調整機能は、オペレーティングシステム（ＯＳ）１と、外部時計２と、インターバルタイマ３とを備える。外部時計２は、高精度・低分解能な時計とし、インターバルタイマ３は、低精度・高分解能なタイマ割込みを起こし、システム時刻を更新するものとする。尚、外部時計は、時報放送などを出力するものを含む。
【００１７】
先ず、この実施形態の概略を説明すると、インターバルタイマ３は、インターバルタイマ周期４という値を持ち、この周期４毎にタイマ割込みを起こす。このシステム時刻調整においては、第一に、ＯＳ１に設けられた誤差検出機構５により誤差範囲を検出する。そして、第二に、検出した誤差範囲の最大値と最小値を、ＯＳ１に設けられたインターバルタイマ周期変換機構６により、２つの新たなインターバルタイマ周期へ変換する。そして、第三に、誤差検出機構５により検出した誤差範囲をもとに、ＯＳ１の切替機構７が、インターバルタイマ周期変換機構６で求めた２つの新たなインターバルタイマ周期を、ユーザから設定された切替周期で必要に応じて切り替える。これらによって、一定の誤差以内にシステム時刻が進む。
【００１８】
図２は、従来技術とこの実施形態の時刻調整法の概略を説明するグラフである。前述した従来技術では、図２の上段に示す様に、時間経過に対する誤差の推移は、補正周期時間内に誤差が蓄積されていき、補正時間内でその蓄積された誤差を解消していく。それに対し、本実施形態のシステム時刻調整方法では、図２の下段に示すように、ユーザの期待誤差範囲内に収まる誤差範囲の最大値と最小値を検出し、それをもとに算出したインターバルタイマ周期を切替周期毎に設定する。これにより、蓄積される誤差は常にユーザの期待誤差範囲内で収まることとなる。以下、本実施形態の時刻調整を詳述する。尚、図２下段におけるＭＡＣ、ＭＩＣについては後述する。
【００１９】
図３は、誤差範囲の特定処理手順を示すフローチャートである。まず、図１の誤差検出機構５における外部時計及びシステム時刻連続読込み部１０が、周期的に、外部時刻読込み機構１１を介して外部時計２から外部時刻１２を読み込み、またその際に、システム時刻読取り機構１３を介してシステム時刻１４も読み込む（図３のステップＳ１）。このシステム時刻１４は、インターバルタイマ３のタイマ割り込み発生機構８からの信号によりシステム時刻生成機構１５が生成している。
【００２０】
次のステップＳ２では、誤差検出機構５の時刻比較部１７が、読込んだシステム時刻１４と外部時刻１２とを比較し、システム時刻１４が外部時刻１２に対して遅れているか或いは進んでいるかを判定して、「進み」か「遅れ」かのどちらかを結果とし、補正する方向を出力する。ここで、補正する方向とは、時刻比較部１７の結果によって、システム時刻が遅れている場合にはその遅れを補正する方向（システム時刻を進ませる方向。これを以下“＋”方向とする。）とし、逆に、進んでいる場合にはその進みを補正する方向（システム時刻を遅らせる方向。これを以下“−”方向とする。）とする。
【００２１】
次のステップＳ３では、時刻比較部１７の結果を受けた読込みタイミング調整部１８が、補正する方向と読込み調整量（この読込み調整量とは、外部時計及びシステム時刻連続読込み部１０における外部時計２の読込みタイミングを変更するための変数である。）に基づいて、外部時刻１２の読込みタイミングを決定する。次のステップＳ４では、誤差が検出済みであるか否かを判定し、誤差が検出済みでなければ前述のステップＳ１に戻り、誤差が検出済みであれば、次のステップＳ５に進む。
【００２２】
ステップＳ５では、時刻比較部１７の結果を受けた誤差範囲計算部１９が、読込み調整量および誤差検出中に通常の読込みタイミングで読込んだ回数（この回数は、通常読込カウンタＣＣで計数する。）と読込み調整量で調節した読込みタイミングで読込んだ回数（この回数は、補正読込カウンタＡＣで計数する。）と読込み調整量の合計（この合計値は、補正積算カウンタＡＳＣで計数する。）により誤差範囲の最大値と最小値とを特定する。本実施形態では、これらの仕組みにより、誤差範囲を特定し、この誤差検出機構５での処理を終了する。
【００２３】
図４は、誤差範囲を特定する原理の一例を説明する図である。外部時計から外部時刻を読込むタイミングをｓｔ、システム時刻のｓｔ内で持つ誤差をｇ、前述の読込むタイミングを調節する読込み調整量をαとする。先ず、同図（ａ）に示す様に、一回目に読込んだ外部時刻ｒｔをもとに補正方向を認識する。この図示の例では、システム時刻ｓｔで読み込んだ外部時刻ｒｔが誤差ｇだけ遅れている（即ち、実際にはシステム時刻が進んでいる）ため、システム時刻を遅らせる方向に補正する必要があると認識し、次に読込むタイミングを（ｓｔ−α）とする。
【００２４】
次の同図（ｂ）では、このタイミング（ｓｔ−α）で読込んだ値が、前回の外部時刻ｒｔの２倍よりも大きいか否かを判断する。図示の例では、
ｒｔ×２＞ｓｔ＋（ｓｔ−α）
となるため、２回蓄積された誤差２ｇはαよりも小さいことが分かる。そして、次に読込むタイミングをｓｔとする。
【００２５】
次の同図（ｃ）では、このタイミングｓｔで読込んだ結果、読込み値が、外部時刻ｒｔの３倍よりも大きいか否かを判断する。図示の例では、
ｒｔ×３＜ｓｔ＋（ｓｔ−α）＋ｓｔ
となり、３回蓄積された誤差３ｇは調整値αよりも大きいことがわかる。
【００２６】
このようにすることで、誤差ｇは、３／αより大きく２／αよりも小さいことが特定できる。そして、斯かる誤差の特定処理を行なった後、誤差の最大を調整値αとすることで、複数回この誤差の特定処理を実行することにより徐々に誤差範囲を小さくしていくことが可能となる。
【００２７】
図４で説明したような原理で誤差範囲を特定するに際し、αで調節した読込みタイミングが固定値であると、その値以上のシステム時刻の誤差があった場合、この読込みタイミングで外部時刻を読込んだとしても、図４（ｂ）のような外部時刻の更新部分を特定することはできない。即ち、ｓｔ−αのタイミングで読み込んだ外部時刻が２ｒｔより大きいと、更新部分の誤差範囲の上限，下限（最大値，最小値）を特定することができないこととなる。このため、この読込みタイミングを可変とし、調節した読込みタイミングで読んだ回数がＫ回目の場合、Ｋαでこの読込みタイミングを調節することとする。Ｋ回目までの調節された読込みタイミングの合計は、補正する方向が“＋”の場合、Ｋ×ｓｔ＋α×ＳＵＭ（Ｋ）である。ＳＵＭ（Ｋ）は１〜Ｋまでの合計である。補正する方向が“−”の場合は、Ｋ×ｓｔ−α×ＳＵＭ（Ｋ）である。
【００２８】
図５は、図３のステップＳ１すなわち外部時刻及びシステム時刻連続読込部の詳細処理手順を示すフローチャートである。先ず、ステップＳ１０で、誤差検出が初回であるかどうかを判定し、初回の場合にはステップＳ１１に進んで読込みタイミングをデフォルト値に設定し、その後にステップＳ１２に進む。初回で無い場合はステップＳ１２に進む。ステップＳ１２では前システム時刻を読み込み、次のステップＳ１３では前外部時刻を読み込み、次のステップＳ１４では読込みタイミングを待ち、次のステップＳ１５で外部時刻を読み込み、次のステップＳ１６でシステム時刻を読み込む。そして、次のステップＳ１６で、読込みタイミングが「通常読込みタイミング」か「調整された読込みタイミング」かを判定し、通常読込みタイミングであればステップＳ１８に進み、通常読込みカウンタＣＣの内容を＋１し、調整された読込みタイミングであればステップＳ１９に進み、補正読込みカウンタＣＣの内容を＋１して、この外部時刻及びシステム時刻連続読込み部の処理を終了する。
【００２９】
図６は、図３のステップＳ２すなわち時刻比較部の詳細処理手順を示すフローチャートである。図３のステップＳ１で読込んだシステム時刻と外部時刻の値を基に、先ず、ステップＳ２０で、前回の外部時刻と今回の外部時刻との差分（外部時刻差分）を求め、次のステップＳ２１で、前回のシステム時刻と今回のシステム時刻との差分（システム時刻差分）を求める。次のステップＳ２２では、外部時刻の差分とシステム時刻の差分の大小を比較判定を行い、外部時刻の方がシステム時刻よりも大きい場合、つまりシステム時刻が遅れている場合は、ステップＳ２３に進んで、比較結果を“＋”とする。逆に、システム時刻が進んでいる場合は、ステップＳ２４に進み、比較結果を“−”とし、この時刻比較部での処理を終了する。
【００３０】
図７は、図３のステップＳ３すなわち読込みタイミング調節部での詳細処理手順を示すフローチャートである。先ず、ステップＳ３１で、外部時計の読み込みが２回以上であるか否かを判定し、外部時計の読込みが一回のみの場合はステップＳ３２に進み、図６のステップＳ２３またはＳ２４で求められた比較結果を、補正する方向としてセットし、その後に、後述するステップＳ４１に進む。
【００３１】
外部時計の読み込みが２回以上の場合には、ステップＳ３３に進み、補正方向と前記の比較結果とが同じか否かを判定する。即ち、外部時刻更新部分を既に一度特定をしたか否かを判定する。ステップＳ３３の判定結果が否定つまり補正方向と比較結果とが異なる場合には、既に特定したことを示し（図４（ｂ）に相当する状態）、ステップＳ３４に進んで通常タイミングに戻し、このタイミング調節部の処理を終了する。
【００３２】
ステップＳ３３の判定結果が肯定つまり補正方向と比較結果とが同じである場合は、ステップＳ３５に進む。このステップＳ３５では、現在の読込みタイミングが、通常読込みタイミングであるか、調節された読込みタイミングであるかを判定する。これは、外部時刻更新部分を既に一度特定しているかどうかを知るためである。特定している場合には通常読込みタイミングである（図４（ｃ）に相当する状態）のでステップＳ３６に進み、誤差検出終了フラグをＯＮにして処理を終了する。
【００３３】
ステップＳ３５で、調節された読込みタイミング（補正タイミング）であると判定された場合には、まだ一度も外部時刻更新部分を特定していない状態であるので、読込み調整量を調節するためにステップＳ３７に進む。ステップＳ３７では、補正方向が“＋”であるか否かを判定し、違う場合つまり補正方向が“−”であるときはステップＳ３８に進み、“−”の場合の読込み調整量を採用してステップＳ４０に進み、補正方向が“＋”である場合にはステップＳ３９に進み、“＋”の場合の読込み調整量を採用してステップＳ４０に進む。
【００３４】
そして、ステップＳ４０では、調節された読込みタイミング（補正読込みタイミング）を計算する。補正読込みタイミングは、補正方向が“＋”の場合、（通常読込みタイミング）＋（読込み調整量）×（外部時刻を読込んだ回数）となる。補正方向が“−の”場合は、（通常読込みタイミング）−（読込み調整量）×（外部時刻を読込んだ回数）となる。
【００３５】
次のステップＳ４１では、補正積算カウンタの更新を行う。補正積算カウンタは、現状の値に、読込んだ回数を足していく。次のステップＳ４２では、この補正読込みタイミングを次の読込みタイミングとして設定し、読込みタイミング調節部の処理を終了する。
【００３６】
図８は、図３のステップＳ５すなわち誤差範囲計算部での詳細処理手順を示すフローチャートである。誤差範囲計算部では、読込み調整量α、通常読込みカウンタＣＣ、補正読込みカウンタＡＣ、補正積算カウンタＡＳＣを基に、誤差範囲の最大値と最小値を計算する。先ず、ステップＳ５１で、誤差範囲の最大値を後述するように算出し、次のステップＳ５２で、誤差範囲の最小値を後述するように算出する。そして、次のステップＳ５３で、最大値と最小値の差分、つまり読込みタイミング当りの最大誤差を計算する。次のステップＳ５４では、ユーザから設定された期待誤差および切替周期をもとに算出した読込みタイミング当りの期待誤差と、ステップＳ５３で求めた最大誤差との大小を比較判定する。そして、最大誤差の方が小さい場合はこの誤差範囲計算部の処理を終了し、大きい場合はステップＳ５５に進み、誤差範囲の最大値を読込み調整量とし、次にステップＳ５６に進んで、誤差検出処理をもう一度行う。
【００３７】
上述したステップＳ５１，Ｓ５２における最大値，最小値の算出方法を次に説明する。補正方向が“−”の場合（つまり、システム時刻が外部時刻に対して進んでいた場合）は、読込みタイミングｓｔは（ｒｔ＋ｇ）である。最初に外部時刻の更新部分が特定された時（一つの例として図４（ｂ）のような場合）、外部時刻の合計は１回の通常の読込みタイミングと複数回（この時の補正読込カウンタＡＣの内容）の調節された読込みタイミングの合計よりも大きくなる。
【００３８】
つまり
（ＡＣ＋１）×ｒｔ ≧ ｓｔ＋ＡＣ×ｓｔ−α×ＳＵＭ（ＡＣ）
となる。この式に
ｓｔ=ｒｔ＋ｇ
を代入すると、
（ＡＣ＋１）×ｒｔ ≧ （ＡＣ＋１）（ｒｔ＋ｇ）−α×ＡＳＣ
である。よって、
ｇ ≦ ＡＳＣ×α／（ＡＣ＋１）
となり、最大値が求まる。
【００３９】
次に、通常読込みタイミングに戻して更新部分の特定を行う。更新部分が特定された時（一つの例として図４（ｃ）のような場合）、これまでの外部時刻の合計は複数回（この時の通常読込カウンタＣＣの内容）の通常読込みタイミングと複数回（この時の補正読込カウンタＡＣの内容）の調節された読込みタイミングの合計よりも小さい。つまり、
（ＣＣ＋ＡＣ）×ｒｔ ≦ ＣＣ×ｓｔ＋ＡＣ×ｓｔ−α×ＳＵＭ（ＡＣ）
となる。先程と同様の手順でこれを計算すると、
ｇ ≧ ＡＳＣ×α／（ＡＣ＋ＣＣ）
となり、最小値が求まる。
【００４０】
補正方向が“＋”の場合は、読込みタイミングｓｔは（ｒｔ−ｇ）である。最初に外部時刻の更新部分が特定された時、外部時刻の合計は１回の通常の読込みタイミングと複数回（この時の補正読込カウンタＡＣの内容）の調節された読込みタイミングの合計よりも小さくなる。
【００４１】
つまり
（ＡＣ＋１）×ｒｔ ≦ ｓｔ＋ＡＣ×ｓｔ＋α×ＳＵＭ（ＡＣ）
となる。この式に
ｓｔ=ｒｔ−ｇ
を代入すると、
（ＡＣ＋１）×ｒｔ ≦ （ＡＣ＋１）（ｒｔ−ｇ）＋α×ＡＳＣ
である。よって、
ｇ ≦ ＡＳＣ×α／（ＡＣ＋１）
となり、最大値が求まる。
【００４２】
次に、通常読込みタイミングに戻して更新部分の特定を行う。更新部分が特定された時、これまでの外部時刻の合計は複数回（この時の通常読込カウンタＣＣの内容）の通常読込みタイミングと複数回（この時の補正読込カウンタＡＣの内容）の調節された読込みタイミングの合計よりも大きくなる。
【００４３】
つまり、
（ＣＣ＋ＡＣ）×ｒｔ ≧ ＣＣ×ｓｔ＋ＡＣ×ｓｔ＋α×ＳＵＭ（ＡＣ）
となる。先程と同様の手順でこれを計算すると、
ｇ ≧ ＡＳＣ×α／（ＡＣ＋ＣＣ）
となり、最小値が求まる。求まった最大値・最小値は補正方向が“−”の場合と同じである。
【００４４】
図２で示した「ユーザ期待誤差」および「切替周期」はユーザが設定する。この設定された２つの値から、読込みタイミング当りの許容誤差を算出する。前述したように求めた誤差範囲の「最大値」「最小値」から、システム時刻を補正していくこととなる。しかし、外部時刻に正確に合せるための誤差は誤差範囲内にあるので、この誤差範囲の最大値・最小値で補正を行うと、読込みタイミング当りの最大誤差は（最大値−最小値）となる。この最大誤差が、前述の許容誤差よりも大きい場合、誤差範囲の最大値を読込み調整値αとしてもう一度誤差検出を行う。誤差範囲の最大値がαよりも小さい場合は、最大誤差がαに比例することから、もう一度行うことで最大誤差を小さくすることができる。最大誤差が許容誤差よりも小さい場合は、求めた誤差範囲の最大値・最小値によって補正を行うことで、図２下段のように、誤差をユーザ期待誤差範囲内に抑えることが可能となる。
【００４５】
インターバルタイマ周期変換機構６（図１）は、誤差範囲の最大値・最小値を、インターバルタイマのタイマ割込みの発生周期であるインターバルタイマ周期へ変換し、変換した２つの値を、補正する方向に基づき選択し、選択した新たなインターバルタイマ周期をインターバルタイマ内に持つ値であるインターバルタイマ周期に代入する。これにより、タイマ割込みによるシステム時刻の更新を常に一定に保つことが可能となる。
【００４６】
インターバルタイマ周期変換機構６は、インターバルタイマ周期を誤差範囲の最大値および最小値の夫々から求める。最大値から求めたインターバルタイマ周期を、図２下段に示す“ＭＡＣ”、最小値から求めたインターバルタイマ周期を“ＭＩＣ”とする。補正方向が“＋”の場合、図２下段に示す様に、ＭＡＣを採用するとシステム時刻の進みは外部時刻にくらべ誤差分だけ速く進み、この誤差は、最大誤差が（ＭＡＣ−ＭＩＣ）／２となる。また、ＭＩＣを採用すると、逆に、システム時刻は誤差分だけ遅く進む。補正方向が“−”の場合、ＭＡＣを採用するとシステム時刻の進みは遅く進み、ＭＩＣを採用するとシステム時刻は速く進む。この特徴を利用し、切替機構７は、周期毎に外部時計とシステム時刻の大小を比較して、ＭＩＣとＭＡＣを切り替える。
【００４７】
図２下段において、切替タイミング▲１▼では、システム時刻が外部時刻に対して進んでいる状態で、かつインターバルタイマ周期にＭＡＣを設定している。この場合は切替えを行い、誤差を抑える方向にする。切替タイミング▲２▼ではシステム時刻が外部時刻に対して進んでいる状態で、かつインターバルタイマ周期にＭＩＣを設定している。この場合は切替を行わないことで次の切替タイミングまでに期待誤差を越えないようにする。切替タイミング▲３▼では、切替タイミング▲１▼の場合と反対のケースであるので、同様に切替を行い、誤差を抑える方向にする。この切替機構７により、経過時間によらずに期待誤差範囲内で誤差を抑えながらシステム時刻が調節される。
【００４８】
このように、インターバルタイマ周期変換機構６は誤差検出機構５により求められた誤差範囲の最大値・最小値と補正方向から、最大・最小それぞれの誤差をインターバルタイマ周期誤差へ変換して新しいインターバルタイマ周期を設定し、切替機構を起動する。
【００４９】
図９は、新インターバルタイマ周期を設定するインターバルタイマ周期変換機構６の機能構成図である。誤差は、通常読込みタイミング６１内での誤差であるので、通常読込みタイミング６１をＲＴとし、現在のインターバルタイマの周期６２をＩＴとし、誤差をＲＧとすると、比率による算出部６６は、補正方向６３が“＋”の場合は
（ＲＴ＋ＲＧ）×ＩＲ/ＲＴ
“−”の場合は
（ＲＴ−ＲＧ）×ＩＲ/ＲＴ
を誤差検出機構５により検出した誤差範囲の最大値６４，最小値６５についてそれぞれ計算する。
【００５０】
補正方向６３が“＋”の場合、最大値６４ら算出したインターバルタイマ周期を増加型インターバルタイマ周期６７とし、最小値６５から算出したインターバルタイマ周期を減少型インターバルタイマ周期６８とする。また、補正方向６３が“−”の場合、最小値から算出したインターバルタイマ周期を増加型インターバルタイマ周期６７とし、最大値６４から算出したインターバルタイマ周期を減少型インターバルタイマ周期６８とする。
【００５１】
補正方向６３が“＋”の場合、減少型インターバルタイマ周期６８を新しいインターバルタイマ周期とし、補正方向６３が“−”の場合、増加型インターバルタイマ周期６７を新しいインターバルタイマ周期とする。この新しいインターバルタイマ周期を、インターバルタイマ３（図１）の持つインターバルタイマ周期４に代入し、切替周期機構７の切替部を起動する設定処理６９を行い、インターバルタイマ周期設定機構６の処理を終了する。
【００５２】
切替機構７は、ユーザによって設定された切替周期の際に外部時刻とシステム時刻を比較し、その結果と誤差検出機構によって求められた補正方向および現在のインターバルタイマ周期により切替判定を行い、その判定により必要に応じてインターバルタイマ周期を設定する。
【００５３】
図１０は、切替機構７の処理手順を示すフローチャートである。ステップＳ６１では、切替周期の時間待ちを行い、次のステップＳ６２では、外部時計を読み込む。そして、ステップＳ６３で、その時のシステム時刻と外部時刻との大小判定を行う。この判定によって、システム時刻が遅れていることが判った場合は、ステップＳ６４に進み、現在のインターバルタイマ周期が減少型インターバルタイマ周期であるか否かを判定し、減少型であればステップＳ６１に戻り、増加型であれば、ステップＳ６６に進んで、インターバルタイマ周期を減少型に切替える。
【００５４】
また、ステップＳ６３によりシステム時刻が進んでいることが判った場合は、ステップＳ６５に進み、現在のインターバルタイマ周期が増加型インターバルタイマ周期であるか否かを判定し、増加型であればステップＳ６７に進んでインターバルタイマ周期を減少型に切替え、減少型であれば切替え処理を行わずにステップＳ６１に戻る。
【００５５】
【発明の効果】
本発明によれば、高精度・低分解能な外部時計、低精度・高分解能なシステム時刻をもつシステムにおいても、システム時刻の進みをユーザの期待する誤差以内で外部時計の進みにすばやく合せることが可能となり、また、経過時間によらずに、システムに影響を与えることなくシステム時刻がある一定の誤差を保つことを可能とする効果がある。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る計算機システムの構成図である。
【図２】従来技術（上段）と本発明の一実施形態（下段）のシステム時間の経過に対する外部時刻との誤差の積算状態を示す図である。
【図３】図１に示す誤差検出機構の処理手順を示すフローチャートである。
【図４】従来（上段）と本発明の一実施形態（下段）における時刻調整方法の原理説明図である。
【図５】図３に示す外部時刻及びシステム時刻連続読込み部（ステップＳ１）の詳細処理手順を示すフローチャートである。
【図６】図３に示す時刻比較部（ステップＳ２）の詳細処理手順を示すフローチャートである。
【図７】図３に示す読込みタイミング調節部（ステップＳ３）の詳細処理手順を示すフローチャートである。
【図８】図３に示す誤差範囲計算部（ステップＳ５）の詳細処理手順を示すフローチャートである。
【図９】図１に示すインターバルタイマ周期変換機構の機能構成図である。
【図１０】図１に示す切替機構の処理手順を示すフローチャートである。
【符号の説明】
１  オペレーティングシステム（ＯＳ）
２  外部時計
３  インターバルタイマ
５  誤差検出機構
６  インターバルタイマ周期変換機構
７  切替機構
１０  外部時計及びシステム時刻連続読込部
１２  外部時刻
１４  システム時刻
１７  時刻比較部
１８  読込タイミング調整部
１９  誤差範囲計算部
【図１】
0003694225.tif 000002
【図２】
0003694225.tif 000003
【図３】
0003694225.tif 000004
【図４】
0003694225.tif 000005
【図５】
0003694225.tif 000006
【図６】
0003694225.tif 000007
【図７】
0003694225.tif 000008
【図８】
0003694225.tif 000009
【図９】
0003694225.tif 000010
【図１０】
0003694225.tif 000011