JP2020150356A - カウンタ装置、システム時刻算出装置、情報処理装置、制御方法、時刻の算出方法及びプログラム - Google Patents

カウンタ装置、システム時刻算出装置、情報処理装置、制御方法、時刻の算出方法及びプログラム Download PDF

Info

Publication number
JP2020150356A
JP2020150356A JP2019044609A JP2019044609A JP2020150356A JP 2020150356 A JP2020150356 A JP 2020150356A JP 2019044609 A JP2019044609 A JP 2019044609A JP 2019044609 A JP2019044609 A JP 2019044609A JP 2020150356 A JP2020150356 A JP 2020150356A
Authority
JP
Japan
Prior art keywords
counter
count value
time
conversion coefficient
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019044609A
Other languages
English (en)
Other versions
JP6951019B2 (ja
Inventor
俊一 高瀬
Shunichi Takase
俊一 高瀬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Platforms Ltd
Original Assignee
NEC Platforms Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Platforms Ltd filed Critical NEC Platforms Ltd
Priority to JP2019044609A priority Critical patent/JP6951019B2/ja
Publication of JP2020150356A publication Critical patent/JP2020150356A/ja
Application granted granted Critical
Publication of JP6951019B2 publication Critical patent/JP6951019B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Electric Clocks (AREA)
  • Computer And Data Communications (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

【課題】CPUに同期して動作するクロックカウンタに基づいて、精度良く所望の周期で動作するカウンタを提供する。【解決手段】カウンタ装置は、CPUのクロックに同期して動作するCPUクロックカウンタのカウント値に換算係数を乗じて、特定の周期で動作する第1カウンタによる第1カウント値を算出し、時刻情報を、特定の周期で動作する第2カウンタによる第2カウント値に変換し、記第1カウント値と第2カウント値の差分の経時的変動が所定の範囲内となるように換算係数を調整する。【選択図】図1

Description

本発明は、カウンタ装置、システム時刻算出装置、情報処理装置、制御方法、時刻の算出方法及びプログラムに関する。
情報処理装置は、CPUクロックによって動作するカウンタを基にシステムタイマを生成している。この情報処理装置で動作するオペレーティングシステムやタスク間で共有するシステム時刻は、1つのシステムタイマによって時刻情報が管理されている。システムタイマは、NTPサーバから取得した時刻によって更新される。システムタイマが更新されると、タイマ割り込みや時刻参照のタイミングによって、タスクの実行順序が逆転したり、処理が急に進んだりするなど、システムの時間事象に狂いが生じることがある。
このような事象を回避するため情報処理装置の中には、精度の高いオシレータを搭載し、システム起動時のみNTPサーバから時刻情報を取得して、システム起動後はオシレータを利用することでシステム時刻を管理するものが存在する。この方法の場合、NTPサーバから継続的に時刻情報を取得してシステムタイマを更新することをしない為、システム上の時間事象の逆転などは生じないが、システム起動後の経過時間が長くなるとNTPサーバの時刻とシステム時刻との差が少しずつ開いてしまう。
関連する技術として、特許文献1には、自機が備える水晶振動子に基づいてシステム時刻の管理を行うプリンタが開示されている。このプリンタは、水晶振動子が所定回数振動する度に1回の基準クロック信号を出力し、この基準クロック信号が所定回数出力されると時刻を1秒進めるようにしてシステム時刻を管理する。このプリンタは、NTPサーバから時刻を取得すると、取得した時刻と自機の時刻とを比較して両者の差分を計算し、差分に相当する補正量を計算する。そして、水晶振動子が(所定回数+補正量)だけ振動すると1回の基準クロック信号を出力するように動作を変更し、これによってシステム時刻の調整を行う。
また、特許文献2には、NTPサーバ装置とNTPクライアント端末装置との間の通信が最小時間で行われた場合のみ、NTPサーバ装置から取得した時刻情報でNTPクライアント端末装置の時刻を更新することにより、サーバ・クライアント間の通信時間の変動に関わらず、NTPサーバ装置とNTPクライアント端末装置との間で、安定した時刻同期を実現する方法が開示されている。
特開2003−207586号公報 特開2018−098711号公報
精度の高いオシレータが無くても、一定の精度を保ちつつ特定の周期でカウントする、CPUクロックに基づいて動作するカウンタが求められている。
そこでこの発明は、上述の課題を解決するカウンタ装置、システム時刻算出装置、情報処理装置、制御方法、時刻の算出方法及びプログラムを提供することを目的としている。
本発明の一態様によれば、カウンタ装置は、CPUのクロックに同期して動作するCPUクロックカウンタのカウント値に換算係数を乗じて、特定の周期で動作する第1カウンタによる第1カウント値を算出する第1カウンタ生成部と、時刻情報を、前記特定の周期で動作する第2カウンタによる第2カウント値に変換する第2カウンタ変換部と、前記第1カウント値と前記第2カウント値の差分の経時的変動が所定の範囲内となるように、前記換算係数を調整する換算係数算出部と、を備える。
また、本発明の他の一態様によれば、システム時刻算出装置は、上記のカウンタ装置と、前記第1カウント値をカレンダ時刻に変換するカレンダ時刻変換部と、を備える。
また、本発明の他の一態様によれば、情報処理装置は、上記のカウンタ装置と、NTPサーバから時刻情報を取得するNTP時刻取得部と、を備える。
また、本発明の他の一態様によれば、CPUのクロックに同期して動作するCPUクロックカウンタに基づいて動作する第1カウンタの制御方法であって、前記CPUクロックカウンタのカウント値に換算係数を乗じて、特定の周期で動作する前記第1カウンタによる第1カウント値を算出するステップと、時刻情報を、前記特定の周期で動作する第2カウンタによる第2カウント値に変換するステップと、前記第1カウント値と前記第2カウント値の差分の経時的変動が所定の範囲内となるように、前記換算係数を調整するステップと、を有する制御方法である。
また、本発明の他の一態様によれば、上記の制御方法で前記第1カウンタを制御し、前記第1カウント値に基づいてカレンダ時刻を算出する、カレンダ時刻の算出方法である。
また、本発明の他の一態様によれば、プログラムは、コンピュータを、CPUのクロックに同期して動作するCPUクロックカウンタのカウント値に換算係数を乗じて、特定の周期で動作する第1カウンタによる第1カウント値を算出する手段、時刻情報を、前記特定の周期で動作する第2カウンタによる第2カウント値に変換する手段、前記第1カウント値と前記第2カウント値の差分の経時的変動が所定の範囲内となるように、前記換算係数を調整する手段、として機能させる。
本発明によれば、精度よく所定の目標周期でカウントし続けるカウンタを得ることができる。また、このカウンタを用いることにより情報処理装置のシステム時刻の精度を保つことができる。
本発明の第一実施形態に係る情報処理装置の一例を示す図である。 本発明の第一実施形態による1μ秒カウンタの制御を説明する第1の図である。 本発明の第一実施形態による1μ秒カウンタの制御を説明する第2の図である。 本発明の第一実施形態による1μ秒カウンタの制御の一例を示すフローチャートである。 本発明の第二実施形態に係る情報処理装置の一例を示す図である。 本発明の第二実施形態による1μ秒カウンタの制御の一例を示すフローチャートである。 本発明の一実施形態におけるカウンタ装置の最小構成を示す図である。 本発明の一実施形態における情報処理装置のハードウェア構成の一例を示す図である。
以下、本発明の第一実施形態に係る1μ秒カウンタの制御方法について図面を参照して説明する。図1は、本発明の第一実施形態に係る情報処理装置の一例を示す図である。
図示するように情報処理装置301は、CPUクロックカウンタ10と、1μ秒カウンタ生成部200と、カレンダ時刻変換部201と、NTP時刻取得部202と、NTP時刻取得部202と、1μ秒カウンタ変換部203と、カウント値比較部204と、換算係数算出部205と、設定時刻取得部206と、を備える。
CPUクロックカウンタ10は、図示しないCPUに同期して動作し、CPUのクロック周期でカウント値を出力する。CPUクロックカウンタ10は、一般的にCPUの機能としてCPUチップ内部に設けられている。
1μ秒カウンタ生成部200は、CPUクロックカウンタ10が出力するカウント値に予め設定された換算係数15を乗じて、1μ秒周期でカウント値11を生成する。本実施形態では、1μ秒カウンタ生成部200が動作することによって1μ秒カウンタを実現し、この1μ秒カウンタを時刻計算の基となるシステムクロックとして利用する。1μ秒カウンタは1秒間で1000000回カウントするので、1000000をCPUクロックカウンタ10による1秒間あたりのカウント値で割った値が換算係数15となる。つまり、1μ秒カウンタ生成部200は、CPUクロックカウンタ10が出力するカウント値が、換算係数15の値だけ増加する毎に、1カウントアップしたカウント値11を生成する。例えば、カウント値11はシステム起動時から現時点までの経過時間をμ秒単位で表した値である。
カレンダ時刻変換部201は、1μ秒カウンタ生成部200が算出した1μ秒単位のカウント値をカレンダ時刻に変換する。
NTP時刻取得部202は、NTPサーバ300から時刻情報(カレンダ時刻16)を取得する。
1μ秒カウンタ変換部203は、NTP時刻取得部202が取得したカレンダ時刻16を、1μ秒周期で動作するカウンタによるカウント値に変換する。1μ秒カウンタ変換部203が変換する1μ秒単位のカウント値は、1μ秒カウンタ生成部200が実現する1μ秒カウンタの精度を保つために参照する目的で利用する。NTPサーバ300から取得したカレンダ時刻16のままでは、1μ秒カウンタ生成部200が生成するカウント値11と比較することができない。そこで、1μ秒カウンタ変換部203は、NTP時刻取得部202が取得した時刻情報を1μ秒ごとにカウントアップされるカウント値12に変換する。例えば、カウント値12は特定の日時から現時点までの経過時間をμ秒単位で表した値を示しており、カウント値12とカレンダ時刻の間の相互変換が可能である。また、カウント値12とカウント値11は、共にある時刻を基準として、その時刻からの経過時間を示す値であるから比較可能である。
カウント値比較部204は、1μ秒カウンタ生成部200で生成されたカウント値11と1μ秒カウンタ変換部203で変換されたカウント値12の差を求める。1μ秒カウンタ生成部200が生成するカウント値11と1μ秒カウンタ変換部203が変換するカウント値12が、ともに正確に1μ秒ごとに1ずつカウントアップされるならば、カウント値11とカウント値12の差は一定である。しかし、CPUクロックカウンタ10のクロック周期は変動するため、実際には、CPUクロックカウンタ10の動作に基づいて算出されるカウント値11と、カウント値12の差は変動する。徐々にカウント値11がカウント値12より大きくなる傾向が検出されれば、1μ秒カウンタ生成部200による1μ秒カウンタは、実際の1μ秒よりも短い間隔でカウントしていることになる。この場合、カレンダ時刻変換部201が算出する時刻情報は、実際の時刻に比べ進みがちになる。反対にシステム起動時に比べて、徐々にカウント値11がカウント値12より小さくなる傾向が検出されれば、1μ秒カウンタは、実際の1μ秒よりも長い間隔でカウントしていることになり、カレンダ時刻変換部201が算出する時刻情報は、実際の時刻に比べ遅れがちになる。次に説明する換算係数算出部205は、カウント値11の遅延や先行を補正するように換算係数15を調整する。
換算係数算出部205は、システム起動時にカウント値比較部204から得られる差分値13と、システム起動時から一定時間経過後にカウント値比較部204から得られる差分値14とを比較し、その差が許容範囲(補正指示判断時間17)を上回っていれば、その差が小さくなるように換算係数15の値を更新する。
設定時刻取得部206は、ユーザから情報処理装置301のシステム時刻の設定を受け付ける。システム時刻は、NTPサーバ300が提供する実際の現在時刻であってもよいし、過去や未来の任意の時刻であってもよい。情報処理装置301のシステム時刻には、設定時刻取得部206が受け付けた日時が設定され、設定後のシステム時刻は、1μ秒カウンタ生成部200が生成したカウント値11とカレンダ時刻変換部201によって、精度よく管理される。
一般にサーバ装置などに使用されるCPUクロックカウンタ10のクロック周期の精度は、十分ではないことが多く、例えば、情報処理装置301自身の発熱や周囲の環境の影響などによっても変動することがある。上記の通り、CPUクロックカウンタ10の動作精度は、そのまま1μ秒カウンタ生成部200が生成するカウント値11の精度となり、カレンダ時刻変換部201で変換されるシステム時刻の精度となる。そのため、CPUクロックカウンタ10のクロック周期が変動すると、情報処理装置301のシステム時刻にも狂いが生じ、タスクの実行などにも影響が及ぶ可能性がある。これに対し、本実施形態では、精度の高いオシレータなどを用いずに、情報処理装置301の稼働中にNTPサーバ300から定期的に時刻情報を取得し、時刻情報に基づいて、換算係数15の値を調整する。そして、CPUクロックカウンタ10のクロック周期に換算係数15を乗じた時間がある程度以上の精度で1μ秒を保つように制御する。
次に換算係数15の調整方法について図2および図3を参照して説明する。
図2は、本発明の第一実施形態によるカウンタの制御を説明する第1の図である。
図3は、本発明の第一実施形態によるカウンタの制御を説明する第2の図である。
システム起動直後を最初の測定ポイントの時刻T0とする。まず、カウント値比較部204が、1μ秒カウンタ変換部203が時刻T0に変換したカウント値12(Tb0)と、1μ秒カウンタ生成部200が時刻T0に生成したカウント値11(Ta0)との差分値13(Tc0)を、Ta0−Tb0によって算出する。この差分値13(Tc0)を時間補正の基準値とする。
その後、時刻Tc0から一定時間が経過し、次の測定ポイント(時刻Tx)を迎えると、カウント値比較部204は、時刻Txにおけるカウント値11(Tax)およびカウント値12(Tbx)の差分値14(差分値Tcx)を、Tax−Tbxによって算出する。そして、換算係数算出部205が、差分値13(Tc0)と差分値14(Tcx)の比較を行う。差分値13(Tc0)と差分値14(Tcx)の差が補正指示判断時間17の示す値(Ts)の範囲内であれば(図3の3行目の設定)、1μ秒カウンタ生成部200のカウント周期は、ほぼ1μ秒を維持しているとみなし、換算係数算出部205は、換算係数15の補正は行わない。
差分値13(Tc0)よりも差分値14(Tcx)が小さく、かつその差が、補正指示判断時間17が示す時間差(Ts)よりも大きい場合(図3の1行目の設定)、1μ秒カウンタ生成部200が生成するカウント値11が遅れていると判断し、換算係数算出部205は、1μ秒カウンタ生成部200が生成するカウント値11が進むように換算係数15を新たに求める。つまり、換算係数算出部205は、換算係数15をシステム起動時に設定した値よりも大きな値に更新する。
また、差分値13(Tc0)よりも差分値14(Tcx)が大きく、かつその差が、補正指示判断時間17が示す時間差(Ts)よりも大きい場合(図3の2行目の設定)、カウント値11が進んでいると判断し、換算係数算出部205は、1μ秒カウンタ生成部200が生成するカウント値11が遅れるように換算係数15を新たに求める。つまり、換算係数算出部205は、換算係数15を、システム起動時に設定した値よりも小さな値に更新する。
このようにして1μ秒カウンタ生成部200が算出するカウント値11の精度を保つことができる。また、カレンダ時刻変換部201がカウント値11を変換して算出するシステム時刻は、上記の換算係数15の補正により、NTPサーバ300から取得したカレンダ時刻16との差が一定時間内に収まるように補正される。つまり、換算係数15の更新および更新後の換算係数15による時刻補正を定期的に行うことにより、システム時刻の精度を保つことが可能となる。
次に第一実施形態における1μ秒カウンタの制御方法について説明する。
図4は、本発明の第一実施形態による1μ秒カウンタ(カウント値11)の制御の一例を示すフローチャートである。
前提として、CPUクロックカウンタ10の設計値などに基づいて、CPUクロックカウンタ10のクロック周期を1μ秒に変換する換算係数15の初期値Kが予め算出され、1μ秒カウンタ生成部200は、このKをCPUクロックカウンタ10のカウント値に乗じてカレンダ時刻変換部201へ出力するよう構成されているとする。
まず、ユーザが情報処理装置301を起動する。カウント値比較部204は、システム起動時に基準となる差分値(Tc0)を算出する(ステップS11)。具体的には、NTP時刻取得部202は、NTPサーバ300からカレンダ時刻16を取得する。1μ秒カウンタ変換部203は、カレンダ時刻16を1μ秒単位のカウント値12に変換する。例えば、カウント値12は、特定の日時から取得したカレンダ時刻16が示す時点までの経過時間を1μ秒単位でカウントしたときのカウント値を示している。1μ秒カウンタ変換部203は、カウント値12をカウント値比較部204へ出力する。
一方、1μ秒カウンタ生成部200は、CPUクロックカウンタ10からカウント値を取得し、換算係数15の初期値Kを乗じてカウント値11を生成する。1μ秒カウンタ生成部200は、カウント値11をカウント値比較部204へ出力する。
カウント値比較部204は、カウント値11の初期値(Ta0)から、カウント値12の初期値(Tb0)を減じて両者の差分値(Tc0)を算出する。カウント値比較部204は、基準となる差分値(Tc0)を記憶する。
これらの処理と並行して、1μ秒カウンタ生成部200は、カウント値11をカレンダ時刻変換部201へ出力する。また、ユーザは、情報処理装置301のシステム時刻として設定する時刻を情報処理装置301へ入力する。ユーザが入力する設定時刻は、任意の日時でもよいし、NTPサーバ300から取得した現在の時刻に情報処理装置301のシステム時刻を合わせることを指示する情報でもよい。設定時刻取得部206は、ユーザが入力した設定時刻を取得し、カレンダ時刻変換部201へ出力する。カレンダ時刻変換部201は、最新のカウント値11をユーザが指定した設定時刻に変換してシステム時刻を設定する。
また、NTP時刻取得部202は、所定の時間間隔でNTPサーバ300からカレンダ時刻16を取得し、そのたびに1μ秒カウンタ変換部203はカウント値12を算出する。また、1μ秒カウンタ生成部200は、CPUクロックカウンタ10の動作に基づいて1μ秒ごとにカウント値11を算出し、カレンダ時刻変換部201は、そのカウント値11に基づいてシステム時刻に変換する処理を継続して行う。また、カウント値比較部204は、1μ秒カウンタ生成部200と1μ秒カウンタ変換部203から、それぞれカウント値11とカウント値12を取得しつつ、測定ポイントの到来を待機する(ステップS12)。
測定ポイントが到来すると(ステップS12;Yes)、カウント値比較部204は、最新のカウント値11(Tax)から、カウント値12(Tbx)を減じて、両者の差分値(Tcx)を算出する。そして、カウント値比較部204は、最新の差分値(Tcx)と基準となる差分値(Tc0)とを換算係数算出部205へ出力する。
換算係数算出部205は、最新の差分値(Tcx)と基準となる差分値(Tc0)を比較し、両者の大小関係と差の絶対値を算出する。換算係数算出部205は、算出した大小関係と差の絶対値に基づいて換算係数15の値を調整する。Tc0とTcxの差が所定の範囲内(差が補正指示判断時間17以下)の場合(ステップS13;Yes)、換算係数算出部205は、換算係数15を更新しない(ステップS14)。1μ秒カウンタ生成部200は、CPUクロックカウンタ10が出力するカウント値に、これまでと同じ換算係数15を乗じて生成したカウント値11をカレンダ時刻変換部201へ出力する。
Tc0とTcxの差が補正指示判断時間17以上の場合(ステップS13;No)、換算係数算出部205は、換算係数15を更新する(ステップS15)。より具体的には、図3を参照して説明したようにTcx>Tc0ならば、換算係数15を小さくし、Tcx<Tc0ならば、換算係数15を大きくする。例えば、システム起動時に設定した換算係数15の値をKとした場合、1時間でt秒遅らせるようにするための換算係数KnはKn=(1−t/3600)×Kで算出する。1時間でt秒進むようにするための換算係数15の値KnはKn=(1+t/3600)×Kで算出する。
換算係数算出部205は、更新後の換算係数15を、1μ秒カウンタ生成部200へ出力する。1μ秒カウンタ生成部200は、CPUクロックカウンタ10が出力するカウント値に、更新後の新たな換算係数15を乗じて生成したカウント値11をカレンダ時刻変換部201へ出力する。
次にカレンダ時刻変換部201は、カウント値11をシステム時刻に変換する(ステップS16)。次に情報処理装置301のシステムを停止するかどうかを判定する(ステップS17)。停止しない場合(ステップS17;No)、ステップS12以降の処理を繰り返す。これにより、システムの起動中、カウント値11が遅延しすぎたり、先行しすぎたりすると換算係数15の値が調整され、カウント値11は、一定の精度で1μ秒ごとに出力される。また、情報処理装置301のシステム時刻も一定の精度に保たれる。
システム停止する場合(ステップS17;Yes)、一連の処理を停止する。そして、再度、システムが起動されると、ステップS11からの処理が実行される。
本実施形態によれば、高精度のオシレータなど専用のハードウェアを必要とせず、高精度なCPUクロックに基づくカウンタを生成することができる。また、例えば、NTPサーバ300が提供する時刻とのずれが検出された場合に、急激にNTPサーバ300の時刻に同期させるのではなく、換算係数15を調整することにより、少しずつNTPサーバ300の時刻に近づけていくことができるため、タスク間の実行順の逆転などが生じない。従って、システム運用中にシステムの動作に影響を与えることなく、NTPサーバ300の時刻に同期させることができる。
なお、カレンダ時刻16は、NTPサーバ300とNTP時刻取得部202の間でインターネットを利用して取得するため、通信による遅れなどのタイムラグが考えられるが、本実施形態では、NTPサーバ300との時間差が広がらないように常時1秒程度の補正ができればよく、NTPサーバ300との時間差が、例えば、数百ミリ秒程存在してもよい。
<第二実施形態>
以下、本発明の第二実施形態による1μ秒カウンタの制御方法について図5〜図6を参照して説明する。
第一実施形態では、NTPサーバ300との通信が可能であることを前提とした。しかし、通信障害などにより、NTPサーバ300から最新の時刻情報(カレンダ時刻16)が取得できない状況も生じ得る。この場合、1μ秒カウンタ変換部203は、NTPサーバ300から取得した時刻情報に基づいてカウント値12を生成することができず、第一実施形態の方法でカウント値11を補正することができない。すると、1μ秒カウンタ生成部200が参照する換算係数15の値は、通信回線が正常になるまで固定される。このとき、カウント値11の値は完全にCPUクロックカウンタ10のクロック数に比例した値となるが、CPUクロックカウンタ10のクロック周期には揺らぎがあり、そのクロック周期も装置によって個体差があるため、それを利用して生成されるカウント値11の精度は低くなる可能性がある。これを回避するため、第二実施形態に係る情報処理装置301aは、通信回線が正常な時にあらかじめ長時間CPUクロックカウンタ10のカウント値およびカウント値12の測定を行い、CPUクロックカウンタ10のクロック周期を平均化した値に基づいて換算係数15aを算出しておく。そして、NTPサーバ300から時刻情報が取得できない間は、CPUクロックカウンタ10の揺らぎを考慮して設定された換算係数15aを用いるようにし、1μ秒カウンタの精度を一定以上に保つ。
図5は、本発明の第二実施形態に係る情報処理装置の一例を示す図である。
情報処理装置301aは、第一実施形態の構成に加え、事前換算係数算出部400と、時刻同期異常検出部401と、換算係数切り替え部402と、換算係数保持部403と、を備える。第二実施形態に係る構成のうち、第一実施形態と同じ構成には同じ符号を付し、それらの説明を省略する。
事前換算係数算出部400は、システム起動時から所定時間が経過するまでにCPUクロックカウンタ10が出力するカウント値と、システム起動時から所定時間が経過するまでに1μ秒カウンタ変換部203が出力するカウント値12に基づいて、NTPサーバ300から時刻情報を取得できない状況で用いる換算係数15aを算出する。
時刻同期異常検出部401は、NTP時刻取得部202によるNTPサーバ300からの時刻情報の取得が回線などの異常によって正常にできなくなったことを検出する。
換算係数切り替え部402は、時刻同期異常検出部401が異常を検出した場合、通常動作時に使用している換算係数15から換算係数15aに切り替え、通信が正常に戻った場合は元の換算係数15に戻す切り替え制御を行う。
換算係数保持部403は、事前換算係数算出部400が算出した換算係数15aの値を保持する。
次に事前換算係数算出部400による換算係数15aの算出方法について説明する。
システム起動時の時刻をT0とする。事前換算係数算出部400は、時刻T0にCPUクロックカウンタ10が出力するカウント値Td0と、時刻T0に1μ秒カウンタ変換部203が出力するカウント値12の値Tn0を記憶する。さらに事前換算係数算出部400は、CPUクロックカウンタ10のクロックのゆらぎが平均化できるよう長時間(T1時間)待つ。T1時間が経過すると、事前換算係数算出部400は、T1時間後にCPUクロックカウンタ10が出力するカウント値Td1と、T1時間後に1μ秒カウンタ変換部203が出力するカウント値12の値Tn1を記憶する。そして、事前換算係数算出部400は、CPUクロックカウンタ10のクロックのゆらぎを平均化した換算係数15aの値Kaを、下記の式(1)によって算出する。
Ka=(Tn1−Tn0)/(Td1−Td0)・・・(1)
事前換算係数算出部400は、算出した値Kaを換算係数保持部403へ出力する。換算係数保持部403は、値Kaを記憶する。
次に第二実施形態における1μ秒カウンタ(カウント値11)の制御方法について説明する。
図6は、本発明の第二実施形態による1μ秒カウンタの制御の一例を示すフローチャートである。
システム起動後、T1時間が経過するまでの間、NTPサーバ300との通信が可能であるとして説明を行う。
まず、ユーザの操作により情報処理装置301aのシステムが起動する(ステップS21)。事前換算係数算出部400は、システム起動直後(時刻T0)におけるCPUクロックカウンタ10のカウント値Td0と、1μ秒カウンタ変換部203のカウント値12の値Tn0を記憶する。
次に時刻同期異常検出部401は、NTPサーバ300との通信が正常かどうかを判定する(ステップS22)。通信が正常な場合(ステップS22;Yes)、換算係数切り替え部402は、1μ秒カウンタ生成部200が使用する換算係数に、換算係数15を設定する(ステップS23)。すると、図4を参照して説明した処理によって、換算係数算出部205が、換算係数15を更新等し、1μ秒カウンタ生成部200が生成するカウント値11の精度を維持する(ステップS24)。
また、事前換算係数算出部400は、システム起動後、時間T1が経過し、且つ、換算係数15aが未算出かどうかを判定する(ステップS25)。これらの条件を満たす場合(ステップS25;Yes)、事前換算係数算出部400は、時間T1経過後におけるCPUクロックカウンタ10のカウント値Td1と、1μ秒カウンタ変換部203のカウント値12の値Tn1と、先に記憶した値Td0、Tn1とを用いて、換算係数15aの値Kaを、上記の式(1)により算出する(ステップS26)。換算係数保持部403は、事前換算係数算出部400が算出した値Kaを保持する。時間T1が経過していない場合や換算係数15aが算出済みの場合(ステップS25;No)、換算係数15aの算出は行わず、ステップS28の処理に進む。
次にカレンダ時刻変換部201は、カウント値11をカレンダ時刻に変換する(ステップS28)。情報処理装置301のシステムを停止する場合(ステップS28;Yes)、本フローチャートの処理を終了する。システムを停止しない場合(ステップS28;No)、ステップS22以降の処理を繰り返す。例えば、ステップS22で時刻同期異常検出部401が、通信異常を検出すると、換算係数切り替え部402は、1μ秒カウンタ生成部200が使用する換算係数を、換算係数15から換算係数保持部403が保持する換算係数15aに切り替える(ステップS27)。換算係数15aは、クロック周期の揺らぎを平均化したCPUクロックカウンタ10のカウント値を、実際の時刻情報に基づく1μ秒周期で動作するカウンタが出力するカウント値に変換する係数である。通信異常が検出される間、1μ秒カウンタ生成部200は、CPUクロックカウンタ10が出力するカウント値に換算係数15aを乗じて生成したカウント値11を、カレンダ時刻変換部201へ出力する。カレンダ時刻変換部201は、カウント値11をカレンダ時刻に変換する(ステップS28)。
そして、NTPサーバ300との通信が回復すると、換算係数切り替え部402は、1μ秒カウンタ生成部200が使用する換算係数を、換算係数15aから換算係数15に切り替える。そして、第一実施形態と同様の制御を行う。
本実施形態によれば、何らかの障害でNTPサーバ300と通信ができない状態を想定して予めCPUクロックカウンタ10の揺らぎを平均化した換算係数15aを求めておき、回線障害が発生した場合は換算係数15aを利用することができる。これにより、第一実施形態の効果に加え、NTPサーバ300から時刻情報が取得できない状況でも、ある程度の精度を保持した状態でカウント値11を生成することができる。従って、時刻補正用のオシレータなどの専用ハードウェアを必要とすることなく、専用ハードウェアに近い精度でシステムタイマを構成することが可能となる。
なお、ステップS25では、一度換算係数15aを算出した後は、更新しないこととしたが、例えば、時間T1が経過する度に、最新の時間T1の開始と終了時点におけるCPUクロックカウンタ10のカウント値とカウント値12に基づいて、換算係数15aを算出してもよい。
また、近年のコンピューティング環境では、複数の情報処理装置をネットワーク接続し、複数システムを協調して運用することが求められる場面が増加している。このようなシステムでは、各情報処理装置のシステム時刻を一致させる必要があるが、システム運用中にNTPサーバから取得した時刻情報に基づいて、瞬間的に時刻を変更するとオペレーティングシステムやタスク間の時間関係が逆転してしまう可能性がある。これに対し、第一実施形態、第二実施形態が提供する1μ秒カウンタ(1μ秒カウンタ生成部200)によれば、各情報処理装置が自律的に、NTPサーバ300からの時刻情報に基づいてシステム時刻を少しずつ早めたり、遅らせたりすることで、NTPサーバ300の時刻に合わせることができる。また、その際、時刻同期によって、情報処理装置301内のタスク間の時間関係に矛盾が生じないようにシステム時刻の調整を行うことができる。
図7は、本発明の一実施形態におけるカウンタ装置の最小構成を示す図である。
図7に示すようにカウンタ装置100は、少なくとも第1カウンタ生成部101と、第2カウンタ変換部102と、換算係数算出部103を備える。
第1カウンタ生成部101は、CPUのクロックに同期して動作するCPUクロックカウンタのカウント値に換算係数を乗じて、特定の周期で動作する第1カウンタによる第1カウント値を算出する。
第2カウンタ変換部102は、時刻情報を、前記特定の周期で動作する第2カウンタによる第2カウント値に変換する。
換算係数算出部103は、第1カウント値と第2カウント値の差分の経時的変動が所定の範囲内となるように、換算係数を調整する。
上記の第一実施形態、第二実施形態の構成と対比すると、第1カウンタ生成部101は1μ秒カウンタ生成部200に対応し、第2カウンタ変換部102は1μ秒カウンタ変換部203に対応し、換算係数算出部103は換算係数算出部205に対応する。
一つの実施形態では、第1カウンタ生成部101のカウント値から第2カウンタ変換部102のカウント値を減じた差分値について、システム起動時における差分値Tc0と、システム起動後所定時間経過してからの差分値Tcxとの差が所定の範囲内に収まらない場合、換算係数算出部103は、その差が正である場合は第1カウンタ生成部101が進んでいると判断し、第1カウンタ生成部101のカウントを遅らせるように、換算係数を算出する。また差が負である場合は、第1カウンタ生成部101が遅れていると判断し、第1カウンタ生成部101のカウントを進めるように換算係数を算出する。
図8は、本発明の一実施形態における情報処理装置のハードウェア構成の一例を示す図である。
コンピュータ900は、CPU901、主記憶装置902、補助記憶装置903、入出力インタフェース904、通信インタフェース905を備える。上述の情報処理装置301,301aは、コンピュータ900に実装される。そして、上述した1μ秒カウンタ生成部200、カレンダ時刻変換部201、NTP時刻取得部202、NTP時刻取得部202、1μ秒カウンタ変換部203、カウント値比較部204、換算係数算出部205、設定時刻取得部206、事前換算係数算出部400、時刻同期異常検出部401、換算係数切り替え部402、換算係数保持部403の各機能は、プログラムの形式で補助記憶装置903に記憶されている。CPU901は、プログラムを補助記憶装置903から読み出して主記憶装置902に展開し、当該プログラムに従って上記処理を実行する。また、CPU901は、プログラムに従って、記憶領域を主記憶装置902に確保する。また、CPU901は、プログラムに従って、処理中のデータを記憶する記憶領域を補助記憶装置903に確保する。
なお、少なくとも1つの実施形態において、補助記憶装置903は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例としては、入出力インタフェース904を介して接続される磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM、半導体メモリ等が挙げられる。また、このプログラムが通信回線によってコンピュータ900に配信される場合、配信を受けたコンピュータ900が当該プログラムを主記憶装置902に展開し、上記処理を実行しても良い。また、当該プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、当該プログラムは、前述した機能を補助記憶装置903に既に記憶されている他のプログラムとの組み合わせで実現するもの、いわゆる差分ファイル(差分プログラム)であっても良い。
その他、本発明の趣旨を逸脱しない範囲で、上記した実施の形態における構成要素を周知の構成要素に置き換えることは適宜可能である。また、この発明の技術範囲は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲において種々の変更を加えることが可能である。
例えば、実施形態では、カウンタの周期を1μ秒としたが、他の周期でもよい。
10・・・CPUクロックカウンタ
200・・・1μ秒カウンタ生成部
201・・・カレンダ時刻変換部
202・・・NTP時刻取得部
203・・・1μ秒カウンタ変換部
204・・・カウント値比較部
205・・・換算係数算出部
206・・・設定時刻取得部
300・・・NTPサーバ
301、301a・・・情報処理装置
400・・・事前換算係数算出部
401・・・時刻同期異常検出部
402・・・換算係数切り替え部
403・・・換算係数保持部

Claims (10)

  1. CPUのクロックに同期して動作するCPUクロックカウンタのカウント値に換算係数を乗じて、特定の周期で動作する第1カウンタによる第1カウント値を算出する第1カウンタ生成部と、
    時刻情報を、前記特定の周期で動作する第2カウンタによる第2カウント値に変換する第2カウンタ変換部と、
    前記第1カウント値と前記第2カウント値の差分の経時的変動が所定の範囲内となるように、前記換算係数を調整する換算係数算出部と、
    を備えるカウンタ装置。
  2. 前記換算係数算出部は、システム起動時における前記差分である初期差分値を基準として、その後の前記差分が、前記初期差分値より所定の閾値以上乖離すると前記換算係数を更新する、
    請求項1に記載のカウンタ装置。
  3. 前記差分が前記初期差分値より所定の閾値以上乖離した場合であって、前記差分が、前記初期差分値より小さい場合、
    前記換算係数算出部は、前記換算係数の値をより大きな値に更新する、
    請求項2に記載のカウンタ装置。
  4. 前記差分が前記初期差分値より所定の閾値以上乖離した場合であって、前記差分が、前記初期差分値より大きい場合、
    前記換算係数算出部は、前記換算係数の値をより小さな値に更新する、
    請求項2から請求項3の何れか1項に記載のカウンタ装置。
  5. 前記時刻情報を外部の装置から取得する場合に、前記時刻情報の取得における障害を検出する障害検出部と、
    前記障害検出部が障害を検出した場合に、前記CPUクロックカウンタのカウント値に乗じる第2の換算係数を、前記障害が検出されない間の複数の時刻に計測した前記CPUクロックカウンタのカウント値および前記第2カウント値に基づいて算出する事前換算係数算出部と、
    をさらに備える請求項1から請求項4の何れか1項に記載のカウンタ装置。
  6. 請求項1から請求項5の何れか1項に記載のカウンタ装置と、
    前記第1カウント値をカレンダ時刻に変換するカレンダ時刻変換部と、
    を備えるシステム時刻算出装置。
  7. 請求項1から請求項5の何れか1項に記載のカウンタ装置と、
    NTPサーバから時刻情報を取得するNTP時刻取得部と、
    を備える情報処理装置。
  8. CPUのクロックに同期して動作するCPUクロックカウンタに基づいて動作する第1カウンタの制御方法であって、
    前記CPUクロックカウンタのカウント値に換算係数を乗じて、特定の周期で動作する前記第1カウンタによる第1カウント値を算出するステップと、
    時刻情報を、前記特定の周期で動作する第2カウンタによる第2カウント値に変換するステップと、
    前記第1カウント値と前記第2カウント値の差分の経時的変動が所定の範囲内となるように、前記換算係数を調整するステップと、
    を有する制御方法。
  9. 請求項8に記載の制御方法で前記第1カウンタを制御し、
    前記第1カウント値に基づいてカレンダ時刻を算出する、
    時刻の算出方法。
  10. コンピュータを、
    CPUのクロックに同期して動作するCPUクロックカウンタのカウント値に換算係数を乗じて、特定の周期で動作する第1カウンタによる第1カウント値を算出する手段、
    時刻情報を、前記特定の周期で動作する第2カウンタによる第2カウント値に変換する手段、
    前記第1カウント値と前記第2カウント値の差分の経時的変動が所定の範囲内となるように、前記換算係数を調整する手段、
    として機能させるためのプログラム。
JP2019044609A 2019-03-12 2019-03-12 カウンタ装置、時刻算出装置、情報処理装置、制御方法、時刻の算出方法及びプログラム Active JP6951019B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019044609A JP6951019B2 (ja) 2019-03-12 2019-03-12 カウンタ装置、時刻算出装置、情報処理装置、制御方法、時刻の算出方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019044609A JP6951019B2 (ja) 2019-03-12 2019-03-12 カウンタ装置、時刻算出装置、情報処理装置、制御方法、時刻の算出方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2020150356A true JP2020150356A (ja) 2020-09-17
JP6951019B2 JP6951019B2 (ja) 2021-10-20

Family

ID=72430808

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019044609A Active JP6951019B2 (ja) 2019-03-12 2019-03-12 カウンタ装置、時刻算出装置、情報処理装置、制御方法、時刻の算出方法及びプログラム

Country Status (1)

Country Link
JP (1) JP6951019B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114499732A (zh) * 2022-02-09 2022-05-13 中央广播电视总台 一种时钟校准方法、装置、计算机设备及可读存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003029868A (ja) * 2001-07-16 2003-01-31 Citizen Watch Co Ltd 情報携帯端末
JP2003207586A (ja) * 2002-01-16 2003-07-25 Seiko Epson Corp 電子機器、及び、その内部時刻情報制御方法
JP2005283278A (ja) * 2004-03-29 2005-10-13 Toshiba Elevator Co Ltd 情報表示システム
WO2010143381A1 (ja) * 2009-06-10 2010-12-16 パナソニック株式会社 トレース処理装置およびトレース処理システム
JP2013118491A (ja) * 2011-12-02 2013-06-13 Fujitsu Ltd 発振器の周波数誤差補正装置、周波数誤差補正方法、周波数誤差補正プログラム及び周波数誤差補正システム
JP2014127982A (ja) * 2012-12-27 2014-07-07 Nec Saitama Ltd 周波数ずれ検出システム、周波数ずれ検出装置、及び周波数ずれ検出方法
US20170070969A1 (en) * 2014-02-28 2017-03-09 Telefonaktiebolaget Lm Ericsson (Publ) Clock Synchronization With Hysteresis State Switching
JP2018098711A (ja) * 2016-12-15 2018-06-21 日本電信電話株式会社 時刻同期システム、クライアント端末装置、時刻同期方法及び時刻同期プログラム

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003029868A (ja) * 2001-07-16 2003-01-31 Citizen Watch Co Ltd 情報携帯端末
JP2003207586A (ja) * 2002-01-16 2003-07-25 Seiko Epson Corp 電子機器、及び、その内部時刻情報制御方法
JP2005283278A (ja) * 2004-03-29 2005-10-13 Toshiba Elevator Co Ltd 情報表示システム
WO2010143381A1 (ja) * 2009-06-10 2010-12-16 パナソニック株式会社 トレース処理装置およびトレース処理システム
JP2013118491A (ja) * 2011-12-02 2013-06-13 Fujitsu Ltd 発振器の周波数誤差補正装置、周波数誤差補正方法、周波数誤差補正プログラム及び周波数誤差補正システム
JP2014127982A (ja) * 2012-12-27 2014-07-07 Nec Saitama Ltd 周波数ずれ検出システム、周波数ずれ検出装置、及び周波数ずれ検出方法
US20170070969A1 (en) * 2014-02-28 2017-03-09 Telefonaktiebolaget Lm Ericsson (Publ) Clock Synchronization With Hysteresis State Switching
JP2018098711A (ja) * 2016-12-15 2018-06-21 日本電信電話株式会社 時刻同期システム、クライアント端末装置、時刻同期方法及び時刻同期プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114499732A (zh) * 2022-02-09 2022-05-13 中央广播电视总台 一种时钟校准方法、装置、计算机设备及可读存储介质
CN114499732B (zh) * 2022-02-09 2023-11-17 中央广播电视总台 一种时钟校准方法、装置、计算机设备及可读存储介质

Also Published As

Publication number Publication date
JP6951019B2 (ja) 2021-10-20

Similar Documents

Publication Publication Date Title
US11316605B2 (en) Method, device, and computer program for improving synchronization of clocks in devices linked according to a daisy-chain topology
EP2369438B1 (en) Calibration method of a real time clock signal
CN102347814B (zh) 基于主时钟频率差值的从时钟调整方法
US10594424B2 (en) Time synchronization slave apparatus capable of adjusting time synchronization period, and method of determining time synchronization period
US20200382233A1 (en) Information processing apparatus and time synchronization method
JP6951019B2 (ja) カウンタ装置、時刻算出装置、情報処理装置、制御方法、時刻の算出方法及びプログラム
US8281177B2 (en) Distributed control system
US11689350B2 (en) Synchronization between devices for PWM waveforms
US11310026B2 (en) Communication system, communication device, and program
CN113157047B (zh) 一种时间调整方法、装置、计算机设备及存储介质
JP2007251925A (ja) クロック生成回路
JP6581254B1 (ja) クロック調整装置及びプログラム
US11853116B2 (en) Clock error-bound tracker
JP4616054B2 (ja) 測定システム
WO2013078105A1 (en) Metrology timekeeping systems and methods
US11137794B2 (en) Systems and methods for synchronization of multiple processors
JP4651988B2 (ja) 時計精度修正装置
JP2013033374A (ja) 分散型監視制御システム
JP7382980B2 (ja) コントローラ、機器制御システム、時刻同期方法、および時刻同期プログラム
US9746876B2 (en) Drift compensation for a real time clock circuit
JP2016225880A (ja) 時刻同期装置、時刻同期方法及び時刻同期プログラム
US20180373495A1 (en) Method and apparatus for controlling an average fill level of an asynchronous first-in-first-out, fifo
CN105323057B (zh) 一种irig106系统的时钟同步方法
JP2023122681A (ja) 基準パルス補正装置及び基準パルス補正方法
KR19990020307A (ko) 망동기장치의 주파수 안정화 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200707

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210420

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210707

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210824

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210916

R150 Certificate of patent or registration of utility model

Ref document number: 6951019

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150