(57)【要約】【課題】装置間における高精度な時刻同期を行なう。【解決手段】コンピュータに、マスタ装置２とスレーブ装置１との間の時刻同期処理を開始する前に、マスタ装置２及びスレーブ装置１のそれぞれにおける複数の時刻情報に基づき、マスタ装置２とスレーブ装置１との間のクロック偏差を算出し、時刻同期処理において、クロック偏差の差分を細分化してスレーブ装置１の時刻情報に反映させることで、クロック偏差を補正する、処理を実行させる。【選択図】図１
2020195056.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
マスタ装置とスレーブ装置との間の時刻同期処理を開始する前に、前記マスタ装置及び前記スレーブ装置のそれぞれにおける複数の時刻情報に基づき、前記マスタ装置と前記スレーブ装置との間のクロック偏差を算出し、
前記時刻同期処理において、前記クロック偏差の差分を細分化して前記スレーブ装置の時刻情報に反映させることで、前記クロック偏差を補正する、
処理を実行させる、時刻同期プログラム。
【請求項２】
前記時刻同期処理を開始する前に、前記マスタ装置と前記スレーブ装置との間の伝送路遅延を算出し、
算出された前記クロック偏差又は前記伝送路遅延の変動が前記時刻同期処理において検知された場合に、前記クロック偏差及び前記伝送路遅延の少なくともいずれかの算出を再び実行する、
処理を前記コンピュータに実行させる、請求項１に記載の時刻同期プログラム。
【請求項３】
前記時刻同期処理において、前記マスタ装置と前記スレーブ装置との間の時刻のずれを分割して補正する、
処理を前記コンピュータに実行させる、請求項１又は２に記載の時刻同期プログラム。
【請求項４】
前記マスタ装置と前記スレーブ装置との間に配置される回路に基づいて、前記時刻同期処理における時刻同期のタイミングを増加させる、
処理を前記コンピュータに実行させる、請求項１〜３のいずれか１項に記載の時刻同期プログラム。
【請求項５】
上位装置と接続される情報処理装置であって、
前記上位装置との間の時刻同期処理を開始する前に、前記上位装置及び当該情報処理装置のそれぞれにおける複数の時刻情報に基づき、前記上位装置との間のクロック偏差を算出する事前処理部と、
前記時刻同期処理において、前記クロック偏差の差分を細分化して当該情報処理装置の時刻情報に反映させることで、前記クロック偏差を補正するクロック偏差補正部と、
を備える、情報処理装置。
【請求項６】
マスタ装置とスレーブ装置との間の時刻同期処理を開始する前に、前記マスタ装置及び前記スレーブ装置のそれぞれにおける複数の時刻情報に基づき、前記マスタ装置と前記スレーブ装置との間のクロック偏差を算出し、
前記時刻同期処理において、前記クロック偏差の差分を細分化して前記スレーブ装置の時刻情報に反映させることで、前記クロック偏差を補正する、
時刻同期方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時刻同期プログラム，情報処理装置及び時刻同期方法に関する。
【背景技術】
【０００２】
近年、ネットワークに接続される様々な分野の装置では、データストリームの同期化が行なわれる。各装置の時刻情報を合わせるためにPrecision Time Protocol（ＰＴＰ）制御方式を用いた時刻同期が行なわれ、グランドマスタから発信される時刻情報に対して各スレーブ装置の時刻情報が合わせられる。特に、放送や通信，鉄道，金融，電力，Internet of Things（ＩｏＴ）等の高信頼性が求められる分野では、１００万分の１秒オーダでの高精度な装置間の時刻同期が行なわれる。
【０００３】
ＰＴＰによる時刻同期は、時刻の基準となる１つ以上のマスタ装置と、１つ以上のスレーブ装置との間で実行される。
【０００４】
マスタ装置とスレーブ装置との間で、ＰＴＰメッセージ内に自装置の時刻情報をタイムスタンプとして埋め込んだ、sync, FollowUp, Delay_Req及びDelay_Respの４つのメッセージが送受信される。これにより、マスタ装置とスレーブ装置との間の伝送路遅延が算出され、時刻の補正が行なわれる。
【０００５】
syncは、マスタ装置側から定期的に送られる遅延計測のためのメッセージである。FollowUpは、syncメッセージがネットワーク回線に送信された時刻を含み、マスタ装置側からスレーブ装置へ転送される。Delay_Reqは、スレーブ装置側からマスタ装置側へ不定期（別言すれば、ランダム間隔）に送られる遅延計測のためのメッセージである。Delay_Respは、Delay_Reqメッセージがネットワーク回線から受信された時刻を含み、マスタ装置側からスレーブ装置側へ転送される。
【０００６】
マスタ装置がスレーブ装置にsyncを時刻T1で送信し、スレーブ装置ではsyncを受信した時刻T2を取得する。マスタ装置のPHYからsyncが出力される時刻T1は、次のFollowUpに載せてマスタ装置からスレーブ装置へ送信され、スレーブ装置でsyncの送信時刻T1が取得される。そして、時刻T2と時刻T1との差分によって、マスタ装置からスレーブ装置への通信による遅延が算出される。また、スレーブ装置からマスタ装置への通信による遅延は、スレーブ装置が送信されるDelay_Reqとマスタ装置から送信されるDelay_Respによって、Delay_Reqの送信時刻T3及び受信時刻T4が取得され算出される。
【０００７】
マスタ装置からスレーブ装置への時刻差Δ１は以下の数式（１）で表わされ、スレーブ装置からマスタ装置への時刻差Δ２は以下の数式（２）で表わされる。
【０００８】
【数１】
2020195056.tif 000003
【０００９】
【数２】
2020195056.tif 000004
【００１０】
マスタ装置とスレーブ装置との間の伝送路遅延delayは、数式（１）及び（２）によって、以下の数式（３）で表わされる。
【００１１】
【数３】
2020195056.tif 000005
【００１２】
マスタ装置とスレーブ装置との間の時刻のずれoffsetは、数式（１）によって、以下の数式（４）で表わされる。
【００１３】
【数４】
2020195056.tif 000006
【００１４】
スレーブ装置の時刻が算出したoffset分補正されることで、マスタ装置とスレーブ装置との時刻を同期することができる。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２０１２−２３６５４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
マスタ装置及びスレーブ装置に備えられる発信器毎にクロック偏差は異なっており、装置間で時刻のずれが生じてしまう。
【００１７】
１つの側面では、装置間における高精度な時刻同期を行なうことを目的とする。
【課題を解決するための手段】
【００１８】
１つの側面では、時刻同期プログラムは、コンピュータに、マスタ装置とスレーブ装置との間の時刻同期処理を開始する前に、前記マスタ装置及び前記スレーブ装置のそれぞれにおける複数の時刻情報に基づき、前記マスタ装置と前記スレーブ装置との間のクロック偏差を算出し、前記時刻同期処理において、前記クロック偏差の差分を細分化して前記スレーブ装置の時刻情報に反映させることで、前記クロック偏差を補正する、処理を実行させる。
【発明の効果】
【００１９】
１つの側面では、装置間における高精度な時刻同期を行なうことができる。
【図面の簡単な説明】
【００２０】
【図１】実施形態の一例における情報処理システムの構成例を模式的に示すブロック図である。
【図２】図１に示したスレーブ装置のハードウェア構成例を模式的に示すブロック図である。
【図３】図２に示したＰＴＰプロトコルエンジンの機能構成例を模式的に示すブロック図である。
【図４】図１に示した情報処理システムにおけるスレーブ装置の時刻のずれの補正を説明する図である。
【図５】図１に示した情報処理システムにおけるスレーブ装置の時刻のずれの補正を説明するグラフである。
【図６】図１に示した情報処理システムにおけるクロック偏差による差分を説明するグラフである。
【図７】図１に示した情報処理システムにおけるクロック偏差による差分の補正を説明するグラフである。
【図８】図１に示したマスタ装置及びスレーブ装置の時刻の増加量の測定処理を説明するシーケンス図である。
【図９】図１に示したマスタ装置とスレーブ装置との時刻差の補正を説明するグラフである。
【図１０】図１に示したマスタ装置とスレーブ装置との時刻差の補正の細分化を説明するグラフである。
【図１１】図１に示したマスタ装置とスレーブ装置との時刻同期処理を説明するシーケンス図である。
【図１２】関連例における時刻情報の一括補正処理を説明するグラフである。
【図１３】図１に示した情報処理システムにおける時刻情報の分割補正処理を説明するグラフである。
【図１４】関連例におけるＰＴＰによる時刻同期処理を説明するシーケンス図である。
【図１５】図１に示した情報処理システムにおけるＰＴＰによる時刻同期処理を説明するシーケンス図である。
【図１６】図１に示した情報処理システムにおけるoffsetと伝送路遅延の変動検知カウントとを説明するグラフである。
【図１７】図１に示した情報処理システムにおける経年劣化によるクロック偏差の変動を説明するグラフである。
【図１８】図１に示したスレーブ装置における時刻同期処理を説明するフローチャートである。
【図１９】図１に示したスレーブ装置におけるキャリブレーション処理を説明するフローチャートである。
【図２０】図１に示したスレーブ装置におけるタイミング生成処理を説明するフローチャートである。
【図２１】図１に示したスレーブ装置におけるクロック偏差補正処理を説明するフローチャートである。
【図２２】図１に示したスレーブ装置におけるオフセット補正処理を説明するフローチャートである。
【図２３】図１に示したスレーブ装置における変動検知処理を説明するフローチャートである。
【図２４】関連例における装置間のマイナス方向の時刻差の最大値の一例を示すグラフである。
【図２５】関連例における装置間のプラス方向の時刻差の最大値の一例を示すグラフである。
【図２６】図１に示した情報処理システムにおける装置間のマイナス方向の時刻差の最大値の一例を示すグラフである。
【図２７】図１に示した情報処理システムにおける装置間のプラス方向の時刻差の最大値の一例を示すグラフである。
【図２８】関連例における装置間の時刻差の第１の例を示すグラフである。
【図２９】関連例における装置間の時刻差の第２の例を示すグラフである。
【図３０】図１に示した情報処理システムにおける装置間の時刻差の例を示すグラフである。
【図３１】変形例における情報処理システムの構成例を模式的に示すブロック図である。
【発明を実施するための形態】
【００２１】
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
【００２２】
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００２３】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【００２４】
〔Ａ〕実施形態の一例
〔Ａ−１〕システム構成例
図１は、実施形態の一例における情報処理システム１００の構成例を模式的に示すブロック図である。
【００２５】
情報処理システム１００は、複数のスレーブ装置１，マスタ装置２及びスイッチ３を備える。
【００２６】
スイッチ３は、マスタ装置２と各スレーブ装置１との間の通信を中継する。
【００２７】
マスタ装置２は、上位装置の一例であり、時刻管理部２０１を備え、ＰＴＰの規格に準拠したパケットを送信する。
【００２８】
スレーブ装置１は、情報処理装置の一例であり、クロック偏差が例えば±100ppmの汎用的なPeripheral Component Interconnect Express（ＰＣＩｅ）カードを搭載し、マスタ装置２から受信したパケットに基づき時刻補正処理を行なう。複数のスレーブ装置１間の時刻差は、±１μｓ以下になるように時刻同期が行なわれてよい。スレーブ装置１は、パケット受信部１０１，パケット送信部１０２，ＰＴＰによる時刻補正部１０３及び時刻管理部１０４を備える。
【００２９】
パケット受信部１０１は、マスタ装置２から送信されたパケットを受信する。パケット送信部１０２は、マスタ装置２に対してパケットを送信する。ＰＴＰによる時刻補正部１０３は、パケット受信部１０１によって受信したパケットに基づき、時刻管理部１０４が管理する時刻を補正する。
【００３０】
図２は、図１に示したスレーブ装置１のハードウェア構成例を模式的に示すブロック図である。
【００３１】
スレーブ装置１は、ＰＴＰプロトコルエンジン１１，ローカルクロック１２，タイムスタンプ生成部１３，アプリケーション機能部１４，イベントインタフェース１５，一般インタフェース１６，クロックデータセット１７及びポートデータセット１８を備える。
【００３２】
ＰＴＰプロトコルエンジン１１は、図３を用いて後述するように、ＰＴＰによる自装置の時刻補正を行なう。
【００３３】
ローカルクロック１２は、自装置における時刻を管理する。
【００３４】
タイムスタンプ生成部１３は、ローカルクロック１２から現在の時刻を取得し、タイムスタンプを生成する。
【００３５】
アプリケーション機能部１４は、センサやアクチュエータであり、種々の機能を提供する。
【００３６】
イベントインタフェース１５は、ネットワークに接続され、自装置とマスタ装置２との間の時刻のずれの発生等に関するパケットを送受信する。
【００３７】
一般インタフェース１６は、ネットワークに接続され、アプリケーション機能部１４で用いられるパケットの送受信を行なう。
【００３８】
クロックデータセット１７は、クロックに関する種々のデータを保持するメモリである。
【００３９】
ポートデータセット１８は、自装置の接続先のポートに関する情報を保持するメモリである。
【００４０】
図３は、図２に示したＰＴＰプロトコルエンジン１１の機能構成例を模式的に示すブロック図である。
【００４１】
ＰＴＰプロトコルエンジン１１は、時刻補正部１１０及びキャリブレーション処理部１１５として機能する。時刻補正部１１０は、タイミング生成部１１１，クロック偏差補正部１１２，オフセット補正部１１３及び変動検知部１１４としての機能を有する。
【００４２】
キャリブレーション処理部１１５は、マスタ装置２とスレーブ装置１との間におけるクロック偏差及び伝送路遅延を算出する。
【００４３】
別言すれば、キャリブレーション処理部１１５は、キャリブレーション処理において、マスタ装置２及びスレーブ装置１のそれぞれにおける複数の時刻情報に基づき、マスタ装置２とスレーブ装置１との間のクロック偏差を算出する事前処理部の一例として機能する。キャリブレーション処理は、マスタ装置２とスレーブ装置１との間の時刻同期処理（別言すれば、通常処理）を開始する前段階における処理である。
【００４４】
また、キャリブレーション処理部１１５は、時刻同期処理を開始する前に、マスタ装置２とスレーブ装置１との間の伝送路遅延を算出してよい。そして、キャリブレーション処理部１１５は、算出されたクロック偏差又は伝送路遅延の変動が時刻同期処理において検知された場合に、クロック偏差及び伝送路遅延の少なくともいずれかの算出を再び実行してよい。
【００４５】
タイミング生成部１１１は、ｍ（ｍは自然数）クロック経過した際にタイミングパルスを出力し、クロック偏差補正部１１２への補正タイミングを生成する。
【００４６】
クロック偏差補正部１１２は、タイミング生成部１１１が生成したタイミングを契機に、キャリブレーション処理部１１５で算出されたクロック偏差に基づき、クロック偏差の補正を行なう。
【００４７】
別言すれば、クロック偏差補正部１１２は、時刻同期処理において、クロック偏差の差分を細分化してスレーブ装置１の時刻情報に反映させることで、クロック偏差を補正する。
【００４８】
オフセット補正部１１３は、マスタ装置２からのsyncを受信し、offsetの値を算出する。また、オフセット補正部１１３は、算出したoffsetを分割して補正することで、スレーブ装置１間の時刻差を小さくする。
【００４９】
別言すれば、オフセット補正部１１３は、時刻同期処理において、マスタ装置２とスレーブ装置１との間の時刻のずれを分割して補正する時刻差補正部の一例として機能する。
【００５０】
変動検知部１１４は、伝送路遅延又はクロック偏差の変動を検知し、検知結果をキャリブレーション処理部１１５へ通知する。
【００５１】
図４は、図１に示した情報処理システム１００におけるスレーブ装置１の時刻のずれの補正を説明する図である。図５は、図１に示した情報処理システム１００におけるスレーブ装置１の時刻のずれの補正を説明するグラフである。
【００５２】
スレーブ装置１は、マスタ装置２と自装置との間のクロック偏差の差分を測定する。スレーブ装置１は、この差分量を細かく分割し、時刻情報を補正することでマスタ装置２とスレーブ装置１との時刻の増加量の差分が最小限に抑えられる。これにより、図４及び図５に示すように、スレーブ装置１における時刻の進み方がマスタ装置２と揃い、高精度な発信器を使用する場合と同様に、高精度な時刻同期が行なえる。
【００５３】
図４に示す例では、タイミング“１”〜“１０”のそれぞれにおいて、装置＃１に対する装置＃２の時刻のずれ（斜線部参照）が補正される。
【００５４】
図５に示す例では、符号Ａ１は装置＃１における経過時間と時刻との関係を示し、符号Ａ２は装置＃２における経過時間と時刻との関係を示す。装置＃２では、短い経過時間の度に、時刻補正が実施されている。
【００５５】
図６は、図１に示した情報処理システム１００におけるクロック偏差による差分を説明するグラフである。図７は、図１に示した情報処理システム１００におけるクロック偏差による差分の補正を説明するグラフである。
【００５６】
クロック偏差によりずれてしまった時刻が補正されるのではなく、クロック偏差によって時刻のずれが極小にされる。これにより、マスタ装置２とスレーブ装置１との間によるクロック偏差による一時的な時刻のずれ（別言すれば、時刻補正タイミング間に発生する時刻差）も低減できる。
【００５７】
図６に示す例ではマスタ装置２とスレーブ装置１との時刻差が経過時間の増加と共に大きくなっているが、図７に示すように時刻の増加量を補正してクロック偏差による時刻差を縮めることができる。
【００５８】
図８は、図１に示したマスタ装置２及びスレーブ装置１の時刻の増加量の測定処理を説明するシーケンス図である。
【００５９】
キャリブレーション処理では、offset補正は実施されず、クロック偏差の算出と伝送路遅延の測定とに限って実施される。
【００６０】
クロック偏差は、マスタ装置２とスレーブ装置１との時刻の増加量の差を測定することで算出できる。マスタ装置２からマスタ装置２の時刻情報が２回以上スレーブ装置１に送信されることで、マスタ装置２の時刻の増加量に対するスレーブ装置１の時刻の増加量を求めることができる。
【００６１】
図８に示す例では、時刻Ｔ１［０］〜Ｔ１［ｎ］において、マスタ装置２の時刻情報Ｔ１を載せたパケットがマスタ装置２からスレーブ装置１へ送信される。これにより、スレーブ装置１では、マスタ装置２の時刻Ｔ１の増加量と、スレーブ装置１の時刻Ｔ２の増加量とを算出できる。
【００６２】
マスタ装置２の時刻に対するスレーブ装置１の時刻の増加率δは、以下の数式（５）で表わされる。算出された増加率δは、通常処理のクロック偏差の補正で使用される。
【００６３】
【数５】
2020195056.tif 000007
【００６４】
伝送路遅延の測定は、通常のＰＴＰと同様に、sync, FollowUp, Delay_Req, Delay_Respの４つのメッセージを使用して実施される。この際にトラフィックの揺らぎが考慮され、通常処理で使用されるdelayは複数回の平均値が採用されてよい。
【００６５】
なお、クロック偏差の算出と伝送路遅延の測定とは、同時に実施されてよい。
【００６６】
キャリブレーション処理後の通常処理では、クロック偏差の補正とオフセットの補正とが実施される。また、キャリブレーション処理で測定されたクロック偏差及び伝送路遅延に変動がないかが監視される。
【００６７】
通常処理におけるクロック偏差の補正では、キャリブレーション処理で求められたクロック偏差が補正される。マスタ装置２とスレーブ装置１との間のクロック偏差による時刻差が算出され、複数回高頻度で補正が実施される。マスタ装置２の時刻の増加量に対するスレーブ装置１の時刻の増加率をδとすると、マスタ装置２でｍ秒経過したタイミングにおけるマスタ装置２とスレーブ装置１との時刻差DiffTime[m]は、以下の数式（６）で求められる。
【００６８】
【数６】
2020195056.tif 000008
【００６９】
ｍ秒間にDiffTime[m]だけずれるため、ｍ秒にDiffTime[m]分の時刻を補正することで異なる装置間での時刻の進み方を揃えることができる。クロック偏差の補正は、１クロック毎に時刻の補正を行なえることが望ましく、最低でも装置間で１μｓ以上のずれが生じないように補正が行なわれる。例えば、マスタ装置２とスレーブ装置１との間のクロック偏差による時刻のずれが１秒間に１ｍｓ有る場合には、１μｓ以下の時刻同期の精度を出すためには最低でも１秒間に１０００回以上の分割数でクロック偏差の補正が行なわれる。
【００７０】
図９は、図１に示したマスタ装置２とスレーブ装置１との時刻差の補正を説明するグラフである。図１０は、図１に示したマスタ装置２とスレーブ装置１との時刻差の補正の細分化を説明するグラフである。
【００７１】
図９に示されるように、１秒間に１回のクロック偏差の補正が実施されると、マスタ装置２とスレーブ装置１との時刻差が大きくなる（符号Ｂ１参照）。
【００７２】
一方、図１０に示されるように、１秒間に複数回のクロック偏差の補正が実施されると、マスタ装置２とスレーブ装置１との時刻差が小さくなる（符号Ｂ２参照）。
【００７３】
図１１は、図１に示したマスタ装置２とスレーブ装置１との時刻同期処理を説明するシーケンス図である。
【００７４】
オフセットの補正では、delayが算出済のため、sync及びFollowUpの算出によってoffsetが算出できる。図１１に示されるように、マスタ装置２からスレーブ装置１へsync及びFollowUpが送信され（符号Ｃ１及びＣ２参照）、offsetの値が算出される。スレーブ装置１側において、算出されたoffset分の時刻情報が補正されることで、マスタ装置２の時刻と同期される。
【００７５】
図１２は、関連例における時刻情報の一括補正処理を説明するグラフである。図１３は、図１に示した情報処理システム１００における時刻情報の分割補正処理を説明するグラフである。
【００７６】
システムによっては、マスタ装置２とスレーブ装置１との間の時刻同期精度よりも、複数のスレーブ装置１間の時刻情報に差分がないことが優先される場合がある。
【００７７】
複数のスレーブ装置１間で伝送路遅延が異なる場合は、各スレーブ装置１のoffset補正のタイミングが異なってしまうため、各スレーブ装置１間の時刻が一時的にずれてしまう。そこで、offsetを分割して補正することで、スレーブ間の時刻差を小さくできる。
【００７８】
図１２及び図１３において、符号Ｄ１はマスタ装置２の時刻情報を示し、符号Ｄ２はスレーブ装置＃１の時刻情報を示し、符号Ｄ３はスレーブ装置＃２の時刻情報を示す。
【００７９】
図１２に示されるように、時刻情報の一括補正処理が行なわれると、時刻差分が最大となる。一方、図１３に示されるように、時刻情報の分割補正処理が行なわれると、時刻差分が小さくなる。
【００８０】
図１４は、関連例におけるＰＴＰによる時刻同期処理を説明するシーケンス図である。図１５は、図１に示した情報処理システム１００におけるＰＴＰによる時刻同期処理を説明するシーケンス図である。
【００８１】
オフセットの補正タイミングにおいても、マスタ装置２からブロードキャストで送信されるsync又はFollowUpが受信されたタイミングで時刻の補正が行なわれるため、各スレーブ装置１同士で時刻の補正を行なうタイミングが同一となる。
【００８２】
図１４に示される関連例では、各スレーブ装置１におけるマスタ装置２からのDelay_Respの受信タイミングで補正が行なわれるため、スレーブ装置＃１とスレーブ装置＃２との間で補正タイミングが異なる（符号Ｅ１参照）。
【００８３】
一方、図１５に示される実施形態の一例では、各スレーブ装置１におけるマスタ装置２からブロードキャストされたFollowUpの受信タイミングで補正が行なわれるため、スレーブ装置＃１とスレーブ装置＃２との間で補正タイミングが同一となる（符号Ｅ２参照）。
【００８４】
図１６は、図１に示した情報処理システム１００におけるoffsetと伝送路遅延の変動検知カウントとを説明するグラフである。
【００８５】
ネットワークの構成が変わることによる伝送路遅延の変化に対応するため、offsetの値が監視され、変動が検知された場合に、delayの更新が実施される。
【００８６】
offsetの補正値に対して、プラス方向とマイナス方向とに一定の閾値が設定される。この閾値を超えた場合に、変動検知のためのカウンタがアップされ、スレーブ装置１からマスタ装置２へDelay_Reqが発行される（符号Ｆ１，Ｆ３及びＦ５〜Ｆ７参照）。
【００８７】
このDelay_Rea/Delay_Respで算出された伝送路遅延の値がDelay_Tempに保存される。カウンタ値が規定の値に達したら、それまでのDelay_Tempの平均値を算出してoffset計算のためのdelay値に設定される。
【００８８】
また、offsetの値が閾値を超えなかった場合や、反対方向の閾値を超えた場合には、カウントがリセットされる（符号Ｆ２及びＦ４参照）。
【００８９】
なお、変動を検知した場合に、変動検知時に算出されたdelay値が使用されてもよいし、キャリブレーション処理がやり直されてdelay値が再計測されてもよい。
【００９０】
図１７は、図１に示した情報処理システム１００における経年劣化によるクロック偏差の変動を説明するグラフである。
【００９１】
経年劣化により、クロック偏差は変動する場合がある。図１７に示されるように、クロックに質量が付着すると、周波数が低減する（符号Ｇ参照）。
【００９２】
このクロック偏差の変動が検知され、クロック偏差の補正量が変更される。変動検知の観測期間は、キャリブレーション期間以上の時間とし、一度観測が終わると、次の観測が開始されてよい。
【００９３】
測定期間分のoffset値を蓄積しておき、キャリブレーション処理の際と同様に、マスタ装置２の時刻の増加量とスレーブ装置１の時刻の増加量との差分が算出されることで、クロック偏差の差分が算出される。ここでの補正値の累計は、計測期間毎にリセットされる。
【００９４】
クロック偏差による補正値をCLK_Devとすると、ある期間における補正との累積CorrSumは以下の数式（７）で表わせる。
【００９５】
【数７】
2020195056.tif 000009
【００９６】
また、マスタ装置２の時刻に対するスレーブ装置１の時刻の増加率δは以下の数式（８）で表わせる。
【００９７】
【数８】
2020195056.tif 000010
【００９８】
ここで、新しく算出された増加率δと既存の増加率δとが比較され、１秒あたり1ns以上のずれが発生している場合には、クロック偏差が変動したとみなされ、クロック偏差の補正量が更新される。
【００９９】
〔Ａ−２〕動作例
図１に示したスレーブ装置１における時刻同期処理を、図１８に示すフローチャート（ステップＳ１〜Ｓ６）を用いて説明する。
【０１００】
時刻同期処理は、ステップＳ１及びＳ２におけるキャリブレーション処理フェーズと、ステップＳ３〜Ｓ６における通常処理フェーズとに分けられる。
【０１０１】
キャリブレーション処理フェーズにおいて、キャリブレーション処理部１１５は、マスタ装置２とスレーブ装置１とのクロック偏差を算出する（ステップＳ１）。
【０１０２】
キャリブレーション処理部１１５は、マスタ装置２とスレーブ装置１との間の伝送路遅延を測定する（ステップＳ２）。
【０１０３】
通常処理フェーズにおいて、クロック偏差補正部１１２は、キャリブレーション処理において算出されたクロック偏差を補正する（ステップＳ３）。
【０１０４】
オフセット補正部１１３は、スレーブ装置１におけるオフセットを算出して補正する（ステップＳ４）。
【０１０５】
変動検知部１１４は、マスタ装置２とスレーブ装置１との間の伝送路遅延の変動を検知する（ステップＳ５）。
【０１０６】
変動検知部１１４は、マスタ装置２とスレーブ装置１とのクロック偏差の変動を検知する（ステップＳ６）。そして、処理はステップＳ３に戻り、通常処理フェーズの処理が繰り返し実行される。
【０１０７】
次に、図１に示したスレーブ装置１におけるキャリブレーション処理を、図１９に示すフローチャート（ステップＳ１１〜Ｓ１５）を用いて説明する。
【０１０８】
キャリブレーション処理部１１５は、マスタ装置２及びスレーブ装置１における初回の時刻を保存する（ステップＳ１１）。
【０１０９】
キャリブレーション処理部１１５は、マスタ装置２とスレーブ装置１との間の伝送路遅延delayをｎ回算出する（ステップＳ１２）。
【０１１０】
キャリブレーション処理部１１５は、算出したｎ回分のdelayの平均値を算出する（ステップＳ１３）。
【０１１１】
キャリブレーション処理部１１５は、マスタ装置２及びスレーブ装置１における時刻を取得する（ステップＳ１４）。
【０１１２】
キャリブレーション処理部１１５は、マスタ装置２及びスレーブ装置１におけるステップＳ１１の時刻とステップＳ１４の時刻とに基づき、マスタ装置２の時刻に対するスレーブ装置１の時刻の増加率δを算出する（ステップＳ１５）。そして、キャリブレーション処理は終了する。
【０１１３】
次に、図１に示したスレーブ装置１におけるタイミング生成処理を、図２０に示すフローチャート（ステップＳ２１及びＳ２２）を用いて説明する。
【０１１４】
タイミング生成部１１１は、ｍクロック分待機する（ステップＳ２１）。
【０１１５】
タイミング生成部１１１は、タイミングパルスを生成して、クロック偏差補正部１１２に入力する（ステップＳ２２）。そして、タイミング生成処理は終了する。
【０１１６】
次に、図１に示したスレーブ装置１におけるクロック偏差補正処理を、図２１に示すフローチャート（ステップＳ３１及びＳ３２）を用いて説明する。
【０１１７】
クロック偏差補正部１１２は、キャリブレーション処理で算出されたマスタ装置２の時刻に対するスレーブ装置１の時刻の増加率δに基づき、ｍクロックでのマスタ装置２とスレーブ装置１との時刻差DiffTimeを算出する（ステップＳ３１）。
【０１１８】
クロック偏差補正部１１２は、スレーブ装置１において、算出した時刻差DiffTime分の時刻を補正する（ステップＳ３２）。そして、クロック偏差補正処理は終了する。
【０１１９】
次に、図１に示したスレーブ装置１におけるオフセット補正処理を、図２２に示すフローチャート（ステップＳ４１〜Ｓ４３）を用いて説明する。
【０１２０】
オフセット補正部１１３は、マスタ装置２からのsync及びFollowUpの受信に応じて、マスタ装置２とスレーブ装置１との時刻のずれoffsetを算出する（ステップＳ４１）。
【０１２１】
オフセット補正部１１３は、ｋ分割したoffsetについて、ｋ回時刻を補正する（ステップＳ４２）。これにより、複数のスレーブ装置１間で伝送路遅延が異なる場合に、各スレーブ装置１のoffset補正タイミングが異なることによる、各スレーブ装置１間の時刻の一時的なずれを防止できる。
【０１２２】
変動検知部１１４は、offset変動を検知する（ステップＳ４３）。そして、オフセット補正処理は終了する。
【０１２３】
次に、図１に示したスレーブ装置１における変動検知処理を、図２３に示すフローチャート（ステップＳ５１）を用いて説明する。
【０１２４】
変動検知部１１４は、オフセット補正部１１３によって算出されたoffsetが規定回数連続して閾値を超えた場合に、offsetの変動を検知する（ステップＳ５１）。そして、変動検知処理は終了する。
【０１２５】
〔Ａ−３〕効果
図２４は、関連例における装置間のマイナス方向の時刻差の最大値の一例を示すグラフである。図２５は、関連例における装置間のプラス方向の時刻差の最大値の一例を示すグラフである。
【０１２６】
図２４及び図２５では、１時間のうちにスレーブ装置１間の時刻差の最大値を計測した結果が例示されている。
【０１２７】
図２４の符号Ｇ１はスレーブ装置＃１の時刻を示し、符号Ｇ２はスレーブ装置＃２の時刻を示す。スレーブ装置＃１とスレーブ装置＃２とのマイナス方向の最大の時刻差は、符号Ｇ３で示されている。
【０１２８】
図２５の符号Ｈ１はスレーブ装置＃１の時刻を示し、符号Ｈ２はスレーブ装置＃２の時刻を示す。スレーブ装置＃１とスレーブ装置＃２とのプラス方向の最大の時刻差は、符号Ｈ３で示されている。
【０１２９】
図２４及び図２５に示すように、ＰＴＰによりマスタ装置とスレーブ装置との時刻を合せても、次の補正タイミングまでに時刻がずれてしまうおそれがある。
【０１３０】
スレーブ側の装置として汎用的なＰＣＩｅが使用される場合には、発信器のクロック偏差はEthernet（登録商標）の規格基準である±100ppmとなり、グランドマスタとスレーブ装置との間では１秒当たり最大１００μｓ程度のずれが生じる可能性がある。
【０１３１】
このため、複数のスレーブ間では、プラス側とマイナス側とにずれる装置間で１秒当たり最大200ppmのずれが生じる可能性がある。この様にクロック偏差による時刻のずれが、時刻同期の精度低下の要因の一つとなる。
【０１３２】
ＰＴＰの規格上、sync/FollowUpの発行間隔は、１〜６４回／ｓにすることができる。sync/FollowUpの発行間隔を短くすることで、スレーブの時刻補正間隔を短くすることができる。仮に１秒間に６４回の時刻補正を行なうとすると、クロック偏差±100ppmの場合には、マスタ装置とスレーブ装置との間の時刻のずれは約１．５７μｓになり、１μｓ以下の時刻同期を行なうことができない。
【０１３３】
また、一般的なＰＣＩｅカードには、高精度の発信器は搭載されていないものが一般的である。仮にクロック偏差を小さくするために高精度な発信器を搭載しようとしても、周辺回路を高精度な発信器に対応した構成にしなければならず、高精度な発信器は容易には搭載することができない。
【０１３４】
すなわち、ＰＴＰの規格に準拠したパケットを送信するグランドマスタに対して、汎用的なＰＣＩｅカードをスレーブ装置としたネットワーク構成で、装置間の時刻差を±１μｓ以下とする高精度な時刻同期を行なうことは容易ではない。
【０１３５】
図２６は、図１に示した情報処理システム１００における装置間のマイナス方向の時刻差の最大値の一例を示すグラフである。図２７は、図１に示した情報処理システム１００における装置間のプラス方向の時刻差の最大値の一例を示すグラフである。
【０１３６】
図２６及び図２７では、図２４及び図２５と同様に、１時間のうちにスレーブ装置１間の時刻差の最大値を計測した結果が例示されている。
【０１３７】
図２６の符号Ｉ１はスレーブ装置＃１の時刻を示し、符号Ｉ２はスレーブ装置＃２の時刻を示す。スレーブ装置＃１とスレーブ装置＃２とのマイナス方向の最大の時刻差は、符号Ｉ３で示されている。
【０１３８】
図２７の符号Ｊ１はスレーブ装置＃１の時刻を示し、符号Ｊ２はスレーブ装置＃２の時刻を示す。スレーブ装置＃１とスレーブ装置＃２とのプラス方向の最大の時刻差は、符号Ｊ３で示されている。
【０１３９】
図２６に示されるマイナス方向の時刻差は、図２４で示された関連例におけるマイナス方向の時刻差よりも小さくなる。また、図２７に示されるプラス方向の時刻差は、図２５で示された関連例におけるプラス方向の時刻差よりも小さくなる。
【０１４０】
図２８は、関連例における装置間の時刻差の第１の例を示すグラフである。
【０１４１】
図２８に示す例において、符号Ｋ１はスレーブ装置＃１の時刻を示し、符号Ｋ２はスレーブ装置＃２の時刻を示し、符号Ｋ３はマスタ装置２の時刻を示す。
【０１４２】
図２８に示す例では、補正直後から次の補正タイミングまでに時刻差が生じてしまい、補正直前に最大時刻差となる。また、スレーブ装置１毎に補正タイミングが異なるため、スレーブ装置１同士の時刻を高精度に同期することはできない。
【０１４３】
図２９は、関連例における装置間の時刻差の第２の例を示すグラフである。
【０１４４】
図２９に示す例において、符号Ｌ１はスレーブ装置＃１の時刻を示し、符号Ｌ２はスレーブ装置＃２の時刻を示し、符号Ｌ３はマスタ装置２の時刻を示す。
【０１４５】
図２９に例示するように、オフセット分割補正により時刻を分割して補正を行なった場合でも、補正を行なっている間にも装置間の時刻がずれていくため、各スレーブ装置１ではマスタ装置２に対して一定量の時刻差が生じてしまう。
【０１４６】
図３０は、図１に示した情報処理システム１００における装置間の時刻差の例を示すグラフである。
【０１４７】
図３０に示す例において、符号Ｍ１はスレーブ装置＃１の時刻を示し、符号Ｍ２はスレーブ装置＃２の時刻を示し、符号Ｍ３はマスタ装置２の時刻を示す。
【０１４８】
上述した実施形態の一例では、クロック偏差による時刻のずれが予測され、クロック偏差の補正を行なうことで、マスタ装置２とスレーブ装置１との間のクロック偏差による時刻のずれを低減できる。また、各スレーブ装置１がマスタ装置２に対してクロック偏差を補正することで、スレーブ装置１同士のクロック偏差によるずれもなくなり、スレーブ装置１同士の時刻も高精度に同期することができる。
【０１４９】
上述した時刻同期プログラム，スレーブ装置１及び時刻同期方法によれば、例えば以下の効果を奏することができる。
【０１５０】
キャリブレーション処理部１１５は、キャリブレーション処理において、マスタ装置２及びスレーブ装置１のそれぞれにおける複数の時刻情報に基づき、マスタ装置２とスレーブ装置１との間のクロック偏差を算出する。また、クロック偏差補正部１１２は、時刻同期処理において、クロック偏差の差分を細分化してスレーブ装置１の時刻情報に反映させることで、クロック偏差を補正する。
【０１５１】
これにより、装置間における高精度な時刻同期を行なうことができる。
【０１５２】
具体的には、時刻同期の精度低下の１つの要因であるクロック偏差を補正することで、汎用的なＰＣＩｅカードによって１μｓ以下の精度の時刻同期が可能になる。そして、汎用装置間の時刻同期において、高精度な発信器を搭載した装置間の時刻同期と同等の時刻同期の精度を実現できる。
【０１５３】
また、高精度な時刻同期により、情報処理システム１００を公平公正な取引システムに適用できる。
【０１５４】
更に、汎用的なサーバで高精度な時刻同期を行なうことができるため、専用装置の開発をすることなく、高精度な時刻同期を実施できる。
【０１５５】
キャリブレーション処理部１１５は、時刻同期処理を開始する前に、マスタ装置２とスレーブ装置１との間の伝送路遅延を算出する。そして、キャリブレーション処理部１１５は、算出されたクロック偏差又は伝送路遅延の変動が時刻同期処理において検知された場合に、クロック偏差及び伝送路遅延の少なくともいずれかの算出を再び実行する。
【０１５６】
これにより、経年劣化等によってクロック偏差や伝送路遅延が発生した場合にも、時刻同期を継続して実施できる。
【０１５７】
オフセット補正部１１３は、時刻同期処理において、マスタ装置２とスレーブ装置１との間の時刻のずれを分割して補正する。
【０１５８】
これにより、スレーブ装置１における時刻情報の補正による変化を緩やかにすることができ、複数のスレーブ装置１間における時刻差を低減できる。
【０１５９】
〔Ｂ〕変形例
図３１は、変形例における情報処理システム２００の構成例を模式的に示すブロック図である。
【０１６０】
情報処理システムの装置構成は、図１に示した例に限定されるものではない。
【０１６１】
図３１に示すように、汎用装置間で高精度な時刻同期を行なうことができる。情報処理システム２００は、スイッチ３，ｎ個のＦＰＧＡカード４（ＦＰＧＡカード＃１〜＃ｎ）及びGrand Master（ＧＭ）サーバ５を備える。
【０１６２】
ＧＭサーバ５は図１に示したマスタ装置２と同様の機能を有し、ＦＰＧＡカード４は図１に示したスレーブ装置１と同様の機能を有する。
【０１６３】
ＧＭサーバ５とＦＰＧＡカード＃１とが直接に接続され、ＦＰＧＡカード＃１とＦＰＧＡカード＃２〜＃ｎとがスイッチ３を介して接続される。
【０１６４】
すなわち、ＧＭサーバ５とスレーブ側のＦＰＧＡカード４との間に、時刻同期処理における時刻同期のタイミングを増加させるＦＰＧＡカード４が配置される。別言すれば、ＧＭサーバ５とスレーブ側のＦＰＧＡカード４との間に配置されるＦＰＧＡカード４に基づいて、時刻同期処理における時刻同期のタイミングを増加させる処理が実行される。
【０１６５】
ＦＰＧＡは高速な処理が可能なため、ＧＭサーバ５側のＦＰＧＡカード＃１からスレーブ側の各ＦＰＧＡカード＃２〜＃ｎに対して、sync/FollowUpを高頻度（例えば、１０００回／秒）に発行できる。
【０１６６】
このように、図３１に示される変形例における情報処理システム２００によれば、上述した実施形態の一例において奏することができる効果に加えて、例えば以下の効果を奏することができる。
【０１６７】
スレーブ側の各ＦＰＧＡカード＃２〜＃ｎは、ＧＭサーバ５側のＦＰＧＡカード＃１に対して高頻度に時刻の補正を行なうことが可能になり、ＧＭサーバ５側とスレーブ側とで高精度な時刻同期を実現できる。また、スレーブ側の各ＦＰＧＡカード＃２〜＃ｎ同士の時刻も高精度に同期できる。
【０１６８】
〔Ｃ〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【０１６９】
〔Ｄ〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０１７０】
（付記１）
コンピュータに、
マスタ装置とスレーブ装置との間の時刻同期処理を開始する前に、前記マスタ装置及び前記スレーブ装置のそれぞれにおける複数の時刻情報に基づき、前記マスタ装置と前記スレーブ装置との間のクロック偏差を算出し、
前記時刻同期処理において、前記クロック偏差の差分を細分化して前記スレーブ装置の時刻情報に反映させることで、前記クロック偏差を補正する、
処理を実行させる、時刻同期プログラム。
【０１７１】
（付記２）
前記時刻同期処理を開始する前に、前記マスタ装置と前記スレーブ装置との間の伝送路遅延を算出し、
算出された前記クロック偏差又は前記伝送路遅延の変動が前記時刻同期処理において検知された場合に、前記クロック偏差及び前記伝送路遅延の少なくともいずれかの算出を再び実行する、
処理を前記コンピュータに実行させる、付記１に記載の時刻同期プログラム。
【０１７２】
（付記３）
前記時刻同期処理において、前記マスタ装置と前記スレーブ装置との間の時刻のずれを分割して補正する、
処理を前記コンピュータに実行させる、付記１又は２に記載の時刻同期プログラム。
【０１７３】
（付記４）
前記マスタ装置と前記スレーブ装置との間に配置される回路に基づいて、前記時刻同期処理における時刻同期のタイミングを増加させる、
処理を前記コンピュータに実行させる、付記１〜３のいずれか１項に記載の時刻同期プログラム。
【０１７４】
（付記５）
上位装置と接続される情報処理装置であって、
前記上位装置との間の時刻同期処理を開始する前に、前記上位装置及び当該情報処理装置のそれぞれにおける複数の時刻情報に基づき、前記上位装置との間のクロック偏差を算出する事前処理部と、
前記時刻同期処理において、前記クロック偏差の差分を細分化して当該情報処理装置の時刻情報に反映させることで、前記クロック偏差を補正するクロック偏差補正部と、
を備える、情報処理装置。
【０１７５】
（付記６）
前記事前処理部は、
前記時刻同期処理を開始する前に、前記上位装置と当該情報処理装置との間の伝送路遅延を算出し、
算出された前記クロック偏差又は前記伝送路遅延の変動が前記時刻同期処理において検知された場合に、前記クロック偏差及び前記伝送路遅延の少なくともいずれかの算出を再び実行する、
付記５に記載の情報処理装置。
【０１７６】
（付記７）
前記時刻同期処理において、前記上位装置と当該情報処理装置との間の時刻のずれを分割して補正する時刻差補正部を更に備える、
付記５又は６に記載の情報処理装置。
【０１７７】
（付記８）
前記上位装置と当該情報処理装置との間に、前記時刻同期処理における時刻同期のタイミングを増加させる回路が配置される、
付記５〜７のいずれか１項に記載の情報処理装置。
【０１７８】
（付記９）
マスタ装置とスレーブ装置との間の時刻同期処理を開始する前に、前記マスタ装置及び前記スレーブ装置のそれぞれにおける複数の時刻情報に基づき、前記マスタ装置と前記スレーブ装置との間のクロック偏差を算出し、
前記時刻同期処理において、前記クロック偏差の差分を細分化して前記スレーブ装置の時刻情報に反映させることで、前記クロック偏差を補正する、
時刻同期方法。
【０１７９】
（付記１０）
前記時刻同期処理を開始する前に、前記マスタ装置と前記スレーブ装置との間の伝送路遅延を算出し、
算出された前記クロック偏差又は前記伝送路遅延の変動が前記時刻同期処理において検知された場合に、前記クロック偏差及び前記伝送路遅延の少なくともいずれかの算出を再び実行する、
付記９に記載の時刻同期方法。
【０１８０】
（付記１１）
前記時刻同期処理において、前記マスタ装置と前記スレーブ装置との間の時刻のずれを分割して補正する、
付記９又は１０に記載の時刻同期方法。
【０１８１】
（付記１２）
前記マスタ装置と前記スレーブ装置との間に配置される回路に基づいて、前記時刻同期処理における時刻同期のタイミングを増加させる、
付記９〜１１のいずれか１項に記載の時刻同期方法。
【符号の説明】
【０１８２】
１００      ：情報処理システム
１          ：スレーブ装置
１０１      ：パケット受信部
１０２      ：パケット送信部
１０３      ：ＰＴＰによる時刻補正部
１０４      ：時刻管理部
１１        ：ＰＴＰプロトコルエンジン
１１０      ：時刻補正部
１１１      ：タイミング生成部
１１２      ：クロック偏差補正部
１１３      ：オフセット補正部
１１４      ：変動検知部
１１５      ：キャリブレーション処理部
１２        ：ローカルクロック
１３        ：タイムスタンプ生成部
１４        ：アプリケーション機能部
１５        ：イベントインタフェース
１６        ：一般インタフェース
１７        ：クロックデータセット
１８        ：ポートデータセット
２          ：マスタ装置
２０１      ：時刻管理部
３          ：スイッチ
２００      ：情報処理システム
４          ：ＦＰＧＡカード
５          ：ＧＭサーバ
【図１】
2020195056.tif 000011
【図２】
2020195056.tif 000012
【図３】
2020195056.tif 000013
【図４】
2020195056.tif 000014
【図５】
2020195056.tif 000015
【図６】
2020195056.tif 000016
【図７】
2020195056.tif 000017
【図８】
2020195056.tif 000018
【図９】
2020195056.tif 000019
【図１０】
2020195056.tif 000020
【図１１】
2020195056.tif 000021
【図１２】
2020195056.tif 000022
【図１３】
2020195056.tif 000023
【図１４】
2020195056.tif 000024
【図１５】
2020195056.tif 000025
【図１６】
2020195056.tif 000026
【図１７】
2020195056.tif 000027
【図１８】
2020195056.tif 000028
【図１９】
2020195056.tif 000029
【図２０】
2020195056.tif 000030
【図２１】
2020195056.tif 000031
【図２２】
2020195056.tif 000032
【図２３】
2020195056.tif 000033
【図２４】
2020195056.tif 000034
【図２５】
2020195056.tif 000035
【図２６】
2020195056.tif 000036
【図２７】
2020195056.tif 000037
【図２８】
2020195056.tif 000038
【図２９】
2020195056.tif 000039
【図３０】
2020195056.tif 000040
【図３１】
2020195056.tif 000041