(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-20
(45)【発行日】2023-03-01
(54)【発明の名称】時刻同期プログラム,情報処理装置及び時刻同期方法
(51)【国際特許分類】
H04L 7/00 20060101AFI20230221BHJP
G04G 5/00 20130101ALI20230221BHJP
【FI】
H04L7/00 990
G04G5/00 J
(21)【出願番号】P 2019099444
(22)【出願日】2019-05-28
【審査請求日】2022-02-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100092978
【氏名又は名称】真田 有
(72)【発明者】
【氏名】大江 至流
(72)【発明者】
【氏名】野口 勉
(72)【発明者】
【氏名】深野 晴久
(72)【発明者】
【氏名】桑原 章紘
【審査官】北村 智彦
(56)【参考文献】
【文献】特開2017-022526(JP,A)
【文献】特開2011-023788(JP,A)
【文献】特開2015-119257(JP,A)
【文献】特開平03-296684(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 7/00
G04G 5/00
(57)【特許請求の範囲】
【請求項1】
スレーブ装置に備えられるコンピュータに、
マスタ装置と
前記スレーブ装置との間の時刻同期処理を開始する前に、前記マスタ装置及び前記スレーブ装置のそれぞれにおける複数の時刻情報に基づき、前記マスタ装置と前記スレーブ装置との間のクロック偏差を算出し、
前記時刻同期処理において、前記クロック偏差の差分を細分化して前記スレーブ装置の時刻情報に反映させることで、前記クロック偏差を補正
し、
前記クロック偏差の変動が前記時刻同期処理において検知された場合に、前記マスタ装置及び前記スレーブ装置のそれぞれにおける複数の時刻情報に基づき、前記マスタ装置と前記スレーブ装置との間のクロック偏差を算出する、
処理を実行させる、時刻同期プログラム。
【請求項2】
前記時刻同期処理を開始する前に、前記マスタ装置と前記スレーブ装置との間の伝送路遅延を算
出する、
処理を前記コンピュータに実行させる、請求項1に記載の時刻同期プログラム。
【請求項3】
前記マスタ装置および前記スレーブ装置のそれぞれにおける複数の時刻情報と、時刻の進み方の増加率とに基づいて、前記マスタ装置と前記スレーブ装置との間のクロック偏差を計算し、
前記複数の時刻情報を含む時間単位ごとに前記クロック偏差を算出し、
算出された前記時間単位ごとに前記クロック偏差を前記スレーブ装置の時刻情報に組み込み、前記マスタ装置と前記スレーブ装置との間の時刻情報の差を修正する、
処理を前記コンピュータに実行させる、請求項1又は2に記載の時刻同期プログラム。
【請求項4】
前記マスタ装置と前記スレーブ装置との間に配置される回路
の処理能力に基づいて、前記時刻同期処理における時刻同期のタイミングを増加させる、
処理を前記コンピュータに実行させる、請求項1~3のいずれか1項に記載の時刻同期プログラム。
【請求項5】
上位装置と接続される情報処理装置であって、
前記上位装置との間の時刻同期処理を開始する前に、前記上位装置及び当該情報処理装置のそれぞれにおける複数の時刻情報に基づき、前記上位装置との間のクロック偏差を算出する事前処理部と、
前記時刻同期処理において、前記クロック偏差の差分を細分化して当該情報処理装置の時刻情報に反映させることで、前記クロック偏差を補正するクロック偏差補正部と、
を備え
、
前記事前処理部は、前記クロック偏差の変動が前記時刻同期処理において検知された場合に、前記上位装置及び前記情報処理装置のそれぞれにおける複数の時刻情報に基づき、前記上位装置と前記情報処理装置との間のクロック偏差を算出する、
情報処理装置。
【請求項6】
マスタ装置とスレーブ装置との間の時刻同期処理を開始する前に、前記マスタ装置及び前記スレーブ装置のそれぞれにおける複数の時刻情報に基づき、前記マスタ装置と前記スレーブ装置との間のクロック偏差を算出し、
前記時刻同期処理において、前記クロック偏差の差分を細分化して前記スレーブ装置の時刻情報に反映させることで、前記クロック偏差を補正
し、
前記クロック偏差の変動が前記時刻同期処理において検知された場合に、前記マスタ装置及び前記スレーブ装置のそれぞれにおける複数の時刻情報に基づき、前記マスタ装置と前記スレーブ装置との間のクロック偏差を算出する、
時刻同期方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、時刻同期プログラム,情報処理装置及び時刻同期方法に関する。
【背景技術】
【0002】
近年、ネットワークに接続される様々な分野の装置では、データストリームの同期化が行なわれる。各装置の時刻情報を合わせるためにPrecision Time Protocol(PTP)制御方式を用いた時刻同期が行なわれ、グランドマスタから発信される時刻情報に対して各スレーブ装置の時刻情報が合わせられる。特に、放送や通信,鉄道,金融,電力,Internet of Things(IoT)等の高信頼性が求められる分野では、100万分の1秒オーダでの高精度な装置間の時刻同期が行なわれる。
【0003】
PTPによる時刻同期は、時刻の基準となる1つ以上のマスタ装置と、1つ以上のスレーブ装置との間で実行される。
【0004】
マスタ装置とスレーブ装置との間で、PTPメッセージ内に自装置の時刻情報をタイムスタンプとして埋め込んだ、sync, FollowUp, Delay_Req及びDelay_Respの4つのメッセージが送受信される。これにより、マスタ装置とスレーブ装置との間の伝送路遅延が算出され、時刻の補正が行なわれる。
【0005】
syncは、マスタ装置側から定期的に送られる遅延計測のためのメッセージである。FollowUpは、syncメッセージがネットワーク回線に送信された時刻を含み、マスタ装置側からスレーブ装置へ転送される。Delay_Reqは、スレーブ装置側からマスタ装置側へ不定期(別言すれば、ランダム間隔)に送られる遅延計測のためのメッセージである。Delay_Respは、Delay_Reqメッセージがネットワーク回線から受信された時刻を含み、マスタ装置側からスレーブ装置側へ転送される。
【0006】
マスタ装置がスレーブ装置にsyncを時刻T1で送信し、スレーブ装置ではsyncを受信した時刻T2を取得する。マスタ装置のPHYからsyncが出力される時刻T1は、次のFollowUpに載せてマスタ装置からスレーブ装置へ送信され、スレーブ装置でsyncの送信時刻T1が取得される。そして、時刻T2と時刻T1との差分によって、マスタ装置からスレーブ装置への通信による遅延が算出される。また、スレーブ装置からマスタ装置への通信による遅延は、スレーブ装置が送信されるDelay_Reqとマスタ装置から送信されるDelay_Respによって、Delay_Reqの送信時刻T3及び受信時刻T4が取得され算出される。
【0007】
マスタ装置からスレーブ装置への時刻差Δ1は以下の数式(1)で表わされ、スレーブ装置からマスタ装置への時刻差Δ2は以下の数式(2)で表わされる。
【0008】
【0009】
【0010】
マスタ装置とスレーブ装置との間の伝送路遅延delayは、数式(1)及び(2)によって、以下の数式(3)で表わされる。
【0011】
【0012】
マスタ装置とスレーブ装置との間の時刻のずれoffsetは、数式(1)によって、以下の数式(4)で表わされる。
【0013】
【0014】
スレーブ装置の時刻が算出したoffset分補正されることで、マスタ装置とスレーブ装置との時刻を同期することができる。
【先行技術文献】
【特許文献】
【0015】
【発明の概要】
【発明が解決しようとする課題】
【0016】
マスタ装置及びスレーブ装置に備えられる発信器毎にクロック偏差は異なっており、装置間で時刻のずれが生じてしまう。
【0017】
1つの側面では、装置間における高精度な時刻同期を行なうことを目的とする。
【課題を解決するための手段】
【0018】
1つの側面では、時刻同期プログラムは、スレーブ装置に備えられるコンピュータに、マスタ装置と前記スレーブ装置との間の時刻同期処理を開始する前に、前記マスタ装置及び前記スレーブ装置のそれぞれにおける複数の時刻情報に基づき、前記マスタ装置と前記スレーブ装置との間のクロック偏差を算出し、前記時刻同期処理において、前記クロック偏差の差分を細分化して前記スレーブ装置の時刻情報に反映させることで、前記クロック偏差を補正し、前記クロック偏差の変動が前記時刻同期処理において検知された場合に、前記マスタ装置及び前記スレーブ装置のそれぞれにおける複数の時刻情報に基づき、前記マスタ装置と前記スレーブ装置との間のクロック偏差を算出する、処理を実行させる。
【発明の効果】
【0019】
1つの側面では、装置間における高精度な時刻同期を行なうことができる。
【図面の簡単な説明】
【0020】
【
図1】実施形態の一例における情報処理システムの構成例を模式的に示すブロック図である。
【
図2】
図1に示したスレーブ装置のハードウェア構成例を模式的に示すブロック図である。
【
図3】
図2に示したPTPプロトコルエンジンの機能構成例を模式的に示すブロック図である。
【
図4】
図1に示した情報処理システムにおけるスレーブ装置の時刻のずれの補正を説明する図である。
【
図5】
図1に示した情報処理システムにおけるスレーブ装置の時刻のずれの補正を説明するグラフである。
【
図6】
図1に示した情報処理システムにおけるクロック偏差による差分を説明するグラフである。
【
図7】
図1に示した情報処理システムにおけるクロック偏差による差分の補正を説明するグラフである。
【
図8】
図1に示したマスタ装置及びスレーブ装置の時刻の増加量の測定処理を説明するシーケンス図である。
【
図9】
図1に示したマスタ装置とスレーブ装置との時刻差の補正を説明するグラフである。
【
図10】
図1に示したマスタ装置とスレーブ装置との時刻差の補正の細分化を説明するグラフである。
【
図11】
図1に示したマスタ装置とスレーブ装置との時刻同期処理を説明するシーケンス図である。
【
図12】関連例における時刻情報の一括補正処理を説明するグラフである。
【
図13】
図1に示した情報処理システムにおける時刻情報の分割補正処理を説明するグラフである。
【
図14】関連例におけるPTPによる時刻同期処理を説明するシーケンス図である。
【
図15】
図1に示した情報処理システムにおけるPTPによる時刻同期処理を説明するシーケンス図である。
【
図16】
図1に示した情報処理システムにおけるoffsetと伝送路遅延の変動検知カウントとを説明するグラフである。
【
図17】
図1に示した情報処理システムにおける経年劣化によるクロック偏差の変動を説明するグラフである。
【
図18】
図1に示したスレーブ装置における時刻同期処理を説明するフローチャートである。
【
図19】
図1に示したスレーブ装置におけるキャリブレーション処理を説明するフローチャートである。
【
図20】
図1に示したスレーブ装置におけるタイミング生成処理を説明するフローチャートである。
【
図21】
図1に示したスレーブ装置におけるクロック偏差補正処理を説明するフローチャートである。
【
図22】
図1に示したスレーブ装置におけるオフセット補正処理を説明するフローチャートである。
【
図23】
図1に示したスレーブ装置における変動検知処理を説明するフローチャートである。
【
図24】関連例における装置間のマイナス方向の時刻差の最大値の一例を示すグラフである。
【
図25】関連例における装置間のプラス方向の時刻差の最大値の一例を示すグラフである。
【
図26】
図1に示した情報処理システムにおける装置間のマイナス方向の時刻差の最大値の一例を示すグラフである。
【
図27】
図1に示した情報処理システムにおける装置間のプラス方向の時刻差の最大値の一例を示すグラフである。
【
図28】関連例における装置間の時刻差の第1の例を示すグラフである。
【
図29】関連例における装置間の時刻差の第2の例を示すグラフである。
【
図30】
図1に示した情報処理システムにおける装置間の時刻差の例を示すグラフである。
【
図31】変形例における情報処理システムの構成例を模式的に示すブロック図である。
【発明を実施するための形態】
【0021】
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
【0022】
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0023】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【0024】
〔A〕実施形態の一例
〔A-1〕システム構成例
図1は、実施形態の一例における情報処理システム100の構成例を模式的に示すブロック図である。
【0025】
情報処理システム100は、複数のスレーブ装置1,マスタ装置2及びスイッチ3を備える。
【0026】
スイッチ3は、マスタ装置2と各スレーブ装置1との間の通信を中継する。
【0027】
マスタ装置2は、上位装置の一例であり、時刻管理部201を備え、PTPの規格に準拠したパケットを送信する。
【0028】
スレーブ装置1は、情報処理装置の一例であり、クロック偏差が例えば±100ppmの汎用的なPeripheral Component Interconnect Express(PCIe)カードを搭載し、マスタ装置2から受信したパケットに基づき時刻補正処理を行なう。複数のスレーブ装置1間の時刻差は、±1μs以下になるように時刻同期が行なわれてよい。スレーブ装置1は、パケット受信部101,パケット送信部102,PTPによる時刻補正部103及び時刻管理部104を備える。
【0029】
パケット受信部101は、マスタ装置2から送信されたパケットを受信する。パケット送信部102は、マスタ装置2に対してパケットを送信する。PTPによる時刻補正部103は、パケット受信部101によって受信したパケットに基づき、時刻管理部104が管理する時刻を補正する。
【0030】
図2は、
図1に示したスレーブ装置1のハードウェア構成例を模式的に示すブロック図である。
【0031】
スレーブ装置1は、PTPプロトコルエンジン11,ローカルクロック12,タイムスタンプ生成部13,アプリケーション機能部14,イベントインタフェース15,一般インタフェース16,クロックデータセット17及びポートデータセット18を備える。
【0032】
PTPプロトコルエンジン11は、
図3を用いて後述するように、PTPによる自装置の時刻補正を行なう。
【0033】
ローカルクロック12は、自装置における時刻を管理する。
【0034】
タイムスタンプ生成部13は、ローカルクロック12から現在の時刻を取得し、タイムスタンプを生成する。
【0035】
アプリケーション機能部14は、センサやアクチュエータであり、種々の機能を提供する。
【0036】
イベントインタフェース15は、ネットワークに接続され、自装置とマスタ装置2との間の時刻のずれの発生等に関するパケットを送受信する。
【0037】
一般インタフェース16は、ネットワークに接続され、アプリケーション機能部14で用いられるパケットの送受信を行なう。
【0038】
クロックデータセット17は、クロックに関する種々のデータを保持するメモリである。
【0039】
ポートデータセット18は、自装置の接続先のポートに関する情報を保持するメモリである。
【0040】
図3は、
図2に示したPTPプロトコルエンジン11の機能構成例を模式的に示すブロック図である。
【0041】
PTPプロトコルエンジン11は、時刻補正部110及びキャリブレーション処理部115として機能する。時刻補正部110は、タイミング生成部111,クロック偏差補正部112,オフセット補正部113及び変動検知部114としての機能を有する。
【0042】
キャリブレーション処理部115は、マスタ装置2とスレーブ装置1との間におけるクロック偏差及び伝送路遅延を算出する。
【0043】
別言すれば、キャリブレーション処理部115は、キャリブレーション処理において、マスタ装置2及びスレーブ装置1のそれぞれにおける複数の時刻情報に基づき、マスタ装置2とスレーブ装置1との間のクロック偏差を算出する事前処理部の一例として機能する。キャリブレーション処理は、マスタ装置2とスレーブ装置1との間の時刻同期処理(別言すれば、通常処理)を開始する前段階における処理である。
【0044】
また、キャリブレーション処理部115は、時刻同期処理を開始する前に、マスタ装置2とスレーブ装置1との間の伝送路遅延を算出してよい。そして、キャリブレーション処理部115は、算出されたクロック偏差又は伝送路遅延の変動が時刻同期処理において検知された場合に、クロック偏差及び伝送路遅延の少なくともいずれかの算出を再び実行してよい。
【0045】
タイミング生成部111は、m(mは自然数)クロック経過した際にタイミングパルスを出力し、クロック偏差補正部112への補正タイミングを生成する。
【0046】
クロック偏差補正部112は、タイミング生成部111が生成したタイミングを契機に、キャリブレーション処理部115で算出されたクロック偏差に基づき、クロック偏差の補正を行なう。
【0047】
別言すれば、クロック偏差補正部112は、時刻同期処理において、クロック偏差の差分を細分化してスレーブ装置1の時刻情報に反映させることで、クロック偏差を補正する。
【0048】
オフセット補正部113は、マスタ装置2からのsyncを受信し、offsetの値を算出する。また、オフセット補正部113は、算出したoffsetを分割して補正することで、スレーブ装置1間の時刻差を小さくする。
【0049】
別言すれば、オフセット補正部113は、時刻同期処理において、マスタ装置2とスレーブ装置1との間の時刻のずれを分割して補正する時刻差補正部の一例として機能する。
【0050】
変動検知部114は、伝送路遅延又はクロック偏差の変動を検知し、検知結果をキャリブレーション処理部115へ通知する。
【0051】
図4は、
図1に示した情報処理システム100におけるスレーブ装置1の時刻のずれの補正を説明する図である。
図5は、
図1に示した情報処理システム100におけるスレーブ装置1の時刻のずれの補正を説明するグラフである。
【0052】
スレーブ装置1は、マスタ装置2と自装置との間のクロック偏差の差分を測定する。スレーブ装置1は、この差分量を細かく分割し、時刻情報を補正することでマスタ装置2とスレーブ装置1との時刻の増加量の差分が最小限に抑えられる。これにより、
図4及び
図5に示すように、スレーブ装置1における時刻の進み方がマスタ装置2と揃い、高精度な発信器を使用する場合と同様に、高精度な時刻同期が行なえる。
【0053】
図4に示す例では、タイミング“1”~“10”のそれぞれにおいて、装置#1に対する装置#2の時刻のずれ(斜線部参照)が補正される。
【0054】
図5に示す例では、符号A1は装置#1における経過時間と時刻との関係を示し、符号A2は装置#2における経過時間と時刻との関係を示す。装置#2では、短い経過時間の度に、時刻補正が実施されている。
【0055】
図6は、
図1に示した情報処理システム100におけるクロック偏差による差分を説明するグラフである。
図7は、
図1に示した情報処理システム100におけるクロック偏差による差分の補正を説明するグラフである。
【0056】
クロック偏差によりずれてしまった時刻が補正されるのではなく、クロック偏差によって時刻のずれが極小にされる。これにより、マスタ装置2とスレーブ装置1との間によるクロック偏差による一時的な時刻のずれ(別言すれば、時刻補正タイミング間に発生する時刻差)も低減できる。
【0057】
図6に示す例ではマスタ装置2とスレーブ装置1との時刻差が経過時間の増加と共に大きくなっているが、
図7に示すように時刻の増加量を補正してクロック偏差による時刻差を縮めることができる。
【0058】
図8は、
図1に示したマスタ装置2及びスレーブ装置1の時刻の増加量の測定処理を説明するシーケンス図である。
【0059】
キャリブレーション処理では、offset補正は実施されず、クロック偏差の算出と伝送路遅延の測定とに限って実施される。
【0060】
クロック偏差は、マスタ装置2とスレーブ装置1との時刻の増加量の差を測定することで算出できる。マスタ装置2からマスタ装置2の時刻情報が2回以上スレーブ装置1に送信されることで、マスタ装置2の時刻の増加量に対するスレーブ装置1の時刻の増加量を求めることができる。
【0061】
図8に示す例では、時刻T1[0]~T1[n]において、マスタ装置2の時刻情報T1を載せたパケットがマスタ装置2からスレーブ装置1へ送信される。これにより、スレーブ装置1では、マスタ装置2の時刻T1の増加量と、スレーブ装置1の時刻T2の増加量とを算出できる。
【0062】
マスタ装置2の時刻に対するスレーブ装置1の時刻の増加率δは、以下の数式(5)で表わされる。算出された増加率δは、通常処理のクロック偏差の補正で使用される。
【0063】
【0064】
伝送路遅延の測定は、通常のPTPと同様に、sync, FollowUp, Delay_Req, Delay_Respの4つのメッセージを使用して実施される。この際にトラフィックの揺らぎが考慮され、通常処理で使用されるdelayは複数回の平均値が採用されてよい。
【0065】
なお、クロック偏差の算出と伝送路遅延の測定とは、同時に実施されてよい。
【0066】
キャリブレーション処理後の通常処理では、クロック偏差の補正とオフセットの補正とが実施される。また、キャリブレーション処理で測定されたクロック偏差及び伝送路遅延に変動がないかが監視される。
【0067】
通常処理におけるクロック偏差の補正では、キャリブレーション処理で求められたクロック偏差が補正される。マスタ装置2とスレーブ装置1との間のクロック偏差による時刻差が算出され、複数回高頻度で補正が実施される。マスタ装置2の時刻の増加量に対するスレーブ装置1の時刻の増加率をδとすると、マスタ装置2でm秒経過したタイミングにおけるマスタ装置2とスレーブ装置1との時刻差DiffTime[m]は、以下の数式(6)で求められる。
【0068】
【0069】
m秒間にDiffTime[m]だけずれるため、m秒にDiffTime[m]分の時刻を補正することで異なる装置間での時刻の進み方を揃えることができる。クロック偏差の補正は、1クロック毎に時刻の補正を行なえることが望ましく、最低でも装置間で1μs以上のずれが生じないように補正が行なわれる。例えば、マスタ装置2とスレーブ装置1との間のクロック偏差による時刻のずれが1秒間に1ms有る場合には、1μs以下の時刻同期の精度を出すためには最低でも1秒間に1000回以上の分割数でクロック偏差の補正が行なわれる。
【0070】
図9は、
図1に示したマスタ装置2とスレーブ装置1との時刻差の補正を説明するグラフである。
図10は、
図1に示したマスタ装置2とスレーブ装置1との時刻差の補正の細分化を説明するグラフである。
【0071】
図9に示されるように、1秒間に1回のクロック偏差の補正が実施されると、マスタ装置2とスレーブ装置1との時刻差が大きくなる(符号B1参照)。
【0072】
一方、
図10に示されるように、1秒間に複数回のクロック偏差の補正が実施されると、マスタ装置2とスレーブ装置1との時刻差が小さくなる(符号B2参照)。
【0073】
図11は、
図1に示したマスタ装置2とスレーブ装置1との時刻同期処理を説明するシーケンス図である。
【0074】
オフセットの補正では、delayが算出済のため、sync及びFollowUpの算出によってoffsetが算出できる。
図11に示されるように、マスタ装置2からスレーブ装置1へsync及びFollowUpが送信され(符号C1及びC2参照)、offsetの値が算出される。スレーブ装置1側において、算出されたoffset分の時刻情報が補正されることで、マスタ装置2の時刻と同期される。
【0075】
図12は、関連例における時刻情報の一括補正処理を説明するグラフである。
図13は、
図1に示した情報処理システム100における時刻情報の分割補正処理を説明するグラフである。
【0076】
システムによっては、マスタ装置2とスレーブ装置1との間の時刻同期精度よりも、複数のスレーブ装置1間の時刻情報に差分がないことが優先される場合がある。
【0077】
複数のスレーブ装置1間で伝送路遅延が異なる場合は、各スレーブ装置1のoffset補正のタイミングが異なってしまうため、各スレーブ装置1間の時刻が一時的にずれてしまう。そこで、offsetを分割して補正することで、スレーブ間の時刻差を小さくできる。
【0078】
図12及び
図13において、符号D1はマスタ装置2の時刻情報を示し、符号D2はスレーブ装置#1の時刻情報を示し、符号D3はスレーブ装置#2の時刻情報を示す。
【0079】
図12に示されるように、時刻情報の一括補正処理が行なわれると、時刻差分が最大となる。一方、
図13に示されるように、時刻情報の分割補正処理が行なわれると、時刻差分が小さくなる。
【0080】
図14は、関連例におけるPTPによる時刻同期処理を説明するシーケンス図である。
図15は、
図1に示した情報処理システム100におけるPTPによる時刻同期処理を説明するシーケンス図である。
【0081】
オフセットの補正タイミングにおいても、マスタ装置2からブロードキャストで送信されるsync又はFollowUpが受信されたタイミングで時刻の補正が行なわれるため、各スレーブ装置1同士で時刻の補正を行なうタイミングが同一となる。
【0082】
図14に示される関連例では、各スレーブ装置1におけるマスタ装置2からのDelay_Respの受信タイミングで補正が行なわれるため、スレーブ装置#1とスレーブ装置#2との間で補正タイミングが異なる(符号E1参照)。
【0083】
一方、
図15に示される実施形態の一例では、各スレーブ装置1におけるマスタ装置2からブロードキャストされたFollowUpの受信タイミングで補正が行なわれるため、スレーブ装置#1とスレーブ装置#2との間で補正タイミングが同一となる(符号E2参照)。
【0084】
図16は、
図1に示した情報処理システム100におけるoffsetと伝送路遅延の変動検知カウントとを説明するグラフである。
【0085】
ネットワークの構成が変わることによる伝送路遅延の変化に対応するため、offsetの値が監視され、変動が検知された場合に、delayの更新が実施される。
【0086】
offsetの補正値に対して、プラス方向とマイナス方向とに一定の閾値が設定される。この閾値を超えた場合に、変動検知のためのカウンタがアップされ、スレーブ装置1からマスタ装置2へDelay_Reqが発行される(符号F1,F3及びF5~F7参照)。
【0087】
このDelay_Rea/Delay_Respで算出された伝送路遅延の値がDelay_Tempに保存される。カウンタ値が規定の値に達したら、それまでのDelay_Tempの平均値を算出してoffset計算のためのdelay値に設定される。
【0088】
また、offsetの値が閾値を超えなかった場合や、反対方向の閾値を超えた場合には、カウントがリセットされる(符号F2及びF4参照)。
【0089】
なお、変動を検知した場合に、変動検知時に算出されたdelay値が使用されてもよいし、キャリブレーション処理がやり直されてdelay値が再計測されてもよい。
【0090】
図17は、
図1に示した情報処理システム100における経年劣化によるクロック偏差の変動を説明するグラフである。
【0091】
経年劣化により、クロック偏差は変動する場合がある。
図17に示されるように、クロックに質量が付着すると、周波数が低減する(符号G参照)。
【0092】
このクロック偏差の変動が検知され、クロック偏差の補正量が変更される。変動検知の観測期間は、キャリブレーション期間以上の時間とし、一度観測が終わると、次の観測が開始されてよい。
【0093】
測定期間分のoffset値を蓄積しておき、キャリブレーション処理の際と同様に、マスタ装置2の時刻の増加量とスレーブ装置1の時刻の増加量との差分が算出されることで、クロック偏差の差分が算出される。ここでの補正値の累計は、計測期間毎にリセットされる。
【0094】
クロック偏差による補正値をCLK_Devとすると、ある期間における補正との累積CorrSumは以下の数式(7)で表わせる。
【0095】
【0096】
また、マスタ装置2の時刻に対するスレーブ装置1の時刻の増加率δは以下の数式(8)で表わせる。
【0097】
【0098】
ここで、新しく算出された増加率δと既存の増加率δとが比較され、1秒あたり1ns以上のずれが発生している場合には、クロック偏差が変動したとみなされ、クロック偏差の補正量が更新される。
【0099】
〔A-2〕動作例
図1に示したスレーブ装置1における時刻同期処理を、
図18に示すフローチャート(ステップS1~S6)を用いて説明する。
【0100】
時刻同期処理は、ステップS1及びS2におけるキャリブレーション処理フェーズと、ステップS3~S6における通常処理フェーズとに分けられる。
【0101】
キャリブレーション処理フェーズにおいて、キャリブレーション処理部115は、マスタ装置2とスレーブ装置1とのクロック偏差を算出する(ステップS1)。
【0102】
キャリブレーション処理部115は、マスタ装置2とスレーブ装置1との間の伝送路遅延を測定する(ステップS2)。
【0103】
通常処理フェーズにおいて、クロック偏差補正部112は、キャリブレーション処理において算出されたクロック偏差を補正する(ステップS3)。
【0104】
オフセット補正部113は、スレーブ装置1におけるオフセットを算出して補正する(ステップS4)。
【0105】
変動検知部114は、マスタ装置2とスレーブ装置1との間の伝送路遅延の変動を検知する(ステップS5)。
【0106】
変動検知部114は、マスタ装置2とスレーブ装置1とのクロック偏差の変動を検知する(ステップS6)。そして、処理はステップS3に戻り、通常処理フェーズの処理が繰り返し実行される。
【0107】
次に、
図1に示したスレーブ装置1におけるキャリブレーション処理を、
図19に示すフローチャート(ステップS11~S15)を用いて説明する。
【0108】
キャリブレーション処理部115は、マスタ装置2及びスレーブ装置1における初回の時刻を保存する(ステップS11)。
【0109】
キャリブレーション処理部115は、マスタ装置2とスレーブ装置1との間の伝送路遅延delayをn回算出する(ステップS12)。
【0110】
キャリブレーション処理部115は、算出したn回分のdelayの平均値を算出する(ステップS13)。
【0111】
キャリブレーション処理部115は、マスタ装置2及びスレーブ装置1における時刻を取得する(ステップS14)。
【0112】
キャリブレーション処理部115は、マスタ装置2及びスレーブ装置1におけるステップS11の時刻とステップS14の時刻とに基づき、マスタ装置2の時刻に対するスレーブ装置1の時刻の増加率δを算出する(ステップS15)。そして、キャリブレーション処理は終了する。
【0113】
次に、
図1に示したスレーブ装置1におけるタイミング生成処理を、
図20に示すフローチャート(ステップS21及びS22)を用いて説明する。
【0114】
タイミング生成部111は、mクロック分待機する(ステップS21)。
【0115】
タイミング生成部111は、タイミングパルスを生成して、クロック偏差補正部112に入力する(ステップS22)。そして、タイミング生成処理は終了する。
【0116】
次に、
図1に示したスレーブ装置1におけるクロック偏差補正処理を、
図21に示すフローチャート(ステップS31及びS32)を用いて説明する。
【0117】
クロック偏差補正部112は、キャリブレーション処理で算出されたマスタ装置2の時刻に対するスレーブ装置1の時刻の増加率δに基づき、mクロックでのマスタ装置2とスレーブ装置1との時刻差DiffTimeを算出する(ステップS31)。
【0118】
クロック偏差補正部112は、スレーブ装置1において、算出した時刻差DiffTime分の時刻を補正する(ステップS32)。そして、クロック偏差補正処理は終了する。
【0119】
次に、
図1に示したスレーブ装置1におけるオフセット補正処理を、
図22に示すフローチャート(ステップS41~S43)を用いて説明する。
【0120】
オフセット補正部113は、マスタ装置2からのsync及びFollowUpの受信に応じて、マスタ装置2とスレーブ装置1との時刻のずれoffsetを算出する(ステップS41)。
【0121】
オフセット補正部113は、k分割したoffsetについて、k回時刻を補正する(ステップS42)。これにより、複数のスレーブ装置1間で伝送路遅延が異なる場合に、各スレーブ装置1のoffset補正タイミングが異なることによる、各スレーブ装置1間の時刻の一時的なずれを防止できる。
【0122】
変動検知部114は、offset変動を検知する(ステップS43)。そして、オフセット補正処理は終了する。
【0123】
次に、
図1に示したスレーブ装置1における変動検知処理を、
図23に示すフローチャート(ステップS51)を用いて説明する。
【0124】
変動検知部114は、オフセット補正部113によって算出されたoffsetが規定回数連続して閾値を超えた場合に、offsetの変動を検知する(ステップS51)。そして、変動検知処理は終了する。
【0125】
〔A-3〕効果
図24は、関連例における装置間のマイナス方向の時刻差の最大値の一例を示すグラフである。
図25は、関連例における装置間のプラス方向の時刻差の最大値の一例を示すグラフである。
【0126】
図24及び
図25では、1時間のうちにスレーブ装置1間の時刻差の最大値を計測した結果が例示されている。
【0127】
図24の符号G1はスレーブ装置#1の時刻を示し、符号G2はスレーブ装置#2の時刻を示す。スレーブ装置#1とスレーブ装置#2とのマイナス方向の最大の時刻差は、符号G3で示されている。
【0128】
図25の符号H1はスレーブ装置#1の時刻を示し、符号H2はスレーブ装置#2の時刻を示す。スレーブ装置#1とスレーブ装置#2とのプラス方向の最大の時刻差は、符号H3で示されている。
【0129】
図24及び
図25に示すように、PTPによりマスタ装置とスレーブ装置との時刻を合せても、次の補正タイミングまでに時刻がずれてしまうおそれがある。
【0130】
スレーブ側の装置として汎用的なPCIeが使用される場合には、発信器のクロック偏差はEthernet(登録商標)の規格基準である±100ppmとなり、グランドマスタとスレーブ装置との間では1秒当たり最大100μs程度のずれが生じる可能性がある。
【0131】
このため、複数のスレーブ間では、プラス側とマイナス側とにずれる装置間で1秒当たり最大200ppmのずれが生じる可能性がある。この様にクロック偏差による時刻のずれが、時刻同期の精度低下の要因の一つとなる。
【0132】
PTPの規格上、sync/FollowUpの発行間隔は、1~64回/sにすることができる。sync/FollowUpの発行間隔を短くすることで、スレーブの時刻補正間隔を短くすることができる。仮に1秒間に64回の時刻補正を行なうとすると、クロック偏差±100ppmの場合には、マスタ装置とスレーブ装置との間の時刻のずれは約1.57μsになり、1μs以下の時刻同期を行なうことができない。
【0133】
また、一般的なPCIeカードには、高精度の発信器は搭載されていないものが一般的である。仮にクロック偏差を小さくするために高精度な発信器を搭載しようとしても、周辺回路を高精度な発信器に対応した構成にしなければならず、高精度な発信器は容易には搭載することができない。
【0134】
すなわち、PTPの規格に準拠したパケットを送信するグランドマスタに対して、汎用的なPCIeカードをスレーブ装置としたネットワーク構成で、装置間の時刻差を±1μs以下とする高精度な時刻同期を行なうことは容易ではない。
【0135】
図26は、
図1に示した情報処理システム100における装置間のマイナス方向の時刻差の最大値の一例を示すグラフである。
図27は、
図1に示した情報処理システム100における装置間のプラス方向の時刻差の最大値の一例を示すグラフである。
【0136】
図26及び
図27では、
図24及び
図25と同様に、1時間のうちにスレーブ装置1間の時刻差の最大値を計測した結果が例示されている。
【0137】
図26の符号I1はスレーブ装置#1の時刻を示し、符号I2はスレーブ装置#2の時刻を示す。スレーブ装置#1とスレーブ装置#2とのマイナス方向の最大の時刻差は、符号I3で示されている。
【0138】
図27の符号J1はスレーブ装置#1の時刻を示し、符号J2はスレーブ装置#2の時刻を示す。スレーブ装置#1とスレーブ装置#2とのプラス方向の最大の時刻差は、符号J3で示されている。
【0139】
図26に示されるマイナス方向の時刻差は、
図24で示された関連例におけるマイナス方向の時刻差よりも小さくなる。また、
図27に示されるプラス方向の時刻差は、
図25で示された関連例におけるプラス方向の時刻差よりも小さくなる。
【0140】
図28は、関連例における装置間の時刻差の第1の例を示すグラフである。
【0141】
図28に示す例において、符号K1はスレーブ装置#1の時刻を示し、符号K2はスレーブ装置#2の時刻を示し、符号K3はマスタ装置2の時刻を示す。
【0142】
図28に示す例では、補正直後から次の補正タイミングまでに時刻差が生じてしまい、補正直前に最大時刻差となる。また、スレーブ装置1毎に補正タイミングが異なるため、スレーブ装置1同士の時刻を高精度に同期することはできない。
【0143】
図29は、関連例における装置間の時刻差の第2の例を示すグラフである。
【0144】
図29に示す例において、符号L1はスレーブ装置#1の時刻を示し、符号L2はスレーブ装置#2の時刻を示し、符号L3はマスタ装置2の時刻を示す。
【0145】
図29に例示するように、オフセット分割補正により時刻を分割して補正を行なった場合でも、補正を行なっている間にも装置間の時刻がずれていくため、各スレーブ装置1ではマスタ装置2に対して一定量の時刻差が生じてしまう。
【0146】
図30は、
図1に示した情報処理システム100における装置間の時刻差の例を示すグラフである。
【0147】
図30に示す例において、符号M1はスレーブ装置#1の時刻を示し、符号M2はスレーブ装置#2の時刻を示し、符号M3はマスタ装置2の時刻を示す。
【0148】
上述した実施形態の一例では、クロック偏差による時刻のずれが予測され、クロック偏差の補正を行なうことで、マスタ装置2とスレーブ装置1との間のクロック偏差による時刻のずれを低減できる。また、各スレーブ装置1がマスタ装置2に対してクロック偏差を補正することで、スレーブ装置1同士のクロック偏差によるずれもなくなり、スレーブ装置1同士の時刻も高精度に同期することができる。
【0149】
上述した時刻同期プログラム,スレーブ装置1及び時刻同期方法によれば、例えば以下の効果を奏することができる。
【0150】
キャリブレーション処理部115は、キャリブレーション処理において、マスタ装置2及びスレーブ装置1のそれぞれにおける複数の時刻情報に基づき、マスタ装置2とスレーブ装置1との間のクロック偏差を算出する。また、クロック偏差補正部112は、時刻同期処理において、クロック偏差の差分を細分化してスレーブ装置1の時刻情報に反映させることで、クロック偏差を補正する。
【0151】
これにより、装置間における高精度な時刻同期を行なうことができる。
【0152】
具体的には、時刻同期の精度低下の1つの要因であるクロック偏差を補正することで、汎用的なPCIeカードによって1μs以下の精度の時刻同期が可能になる。そして、汎用装置間の時刻同期において、高精度な発信器を搭載した装置間の時刻同期と同等の時刻同期の精度を実現できる。
【0153】
また、高精度な時刻同期により、情報処理システム100を公平公正な取引システムに適用できる。
【0154】
更に、汎用的なサーバで高精度な時刻同期を行なうことができるため、専用装置の開発をすることなく、高精度な時刻同期を実施できる。
【0155】
キャリブレーション処理部115は、時刻同期処理を開始する前に、マスタ装置2とスレーブ装置1との間の伝送路遅延を算出する。そして、キャリブレーション処理部115は、算出されたクロック偏差又は伝送路遅延の変動が時刻同期処理において検知された場合に、クロック偏差及び伝送路遅延の少なくともいずれかの算出を再び実行する。
【0156】
これにより、経年劣化等によってクロック偏差や伝送路遅延が発生した場合にも、時刻同期を継続して実施できる。
【0157】
オフセット補正部113は、時刻同期処理において、マスタ装置2とスレーブ装置1との間の時刻のずれを分割して補正する。
【0158】
これにより、スレーブ装置1における時刻情報の補正による変化を緩やかにすることができ、複数のスレーブ装置1間における時刻差を低減できる。
【0159】
〔B〕変形例
図31は、変形例における情報処理システム200の構成例を模式的に示すブロック図である。
【0160】
情報処理システムの装置構成は、
図1に示した例に限定されるものではない。
【0161】
図31に示すように、汎用装置間で高精度な時刻同期を行なうことができる。情報処理システム200は、スイッチ3,n個のFPGAカード4(FPGAカード#1~#n)及びGrand Master(GM)サーバ5を備える。
【0162】
GMサーバ5は
図1に示したマスタ装置2と同様の機能を有し、FPGAカード4は
図1に示したスレーブ装置1と同様の機能を有する。
【0163】
GMサーバ5とFPGAカード#1とが直接に接続され、FPGAカード#1とFPGAカード#2~#nとがスイッチ3を介して接続される。
【0164】
すなわち、GMサーバ5とスレーブ側のFPGAカード4との間に、時刻同期処理における時刻同期のタイミングを増加させるFPGAカード4が配置される。別言すれば、GMサーバ5とスレーブ側のFPGAカード4との間に配置されるFPGAカード4に基づいて、時刻同期処理における時刻同期のタイミングを増加させる処理が実行される。
【0165】
FPGAは高速な処理が可能なため、GMサーバ5側のFPGAカード#1からスレーブ側の各FPGAカード#2~#nに対して、sync/FollowUpを高頻度(例えば、1000回/秒)に発行できる。
【0166】
このように、
図31に示される変形例における情報処理システム200によれば、上述した実施形態の一例において奏することができる効果に加えて、例えば以下の効果を奏することができる。
【0167】
スレーブ側の各FPGAカード#2~#nは、GMサーバ5側のFPGAカード#1に対して高頻度に時刻の補正を行なうことが可能になり、GMサーバ5側とスレーブ側とで高精度な時刻同期を実現できる。また、スレーブ側の各FPGAカード#2~#n同士の時刻も高精度に同期できる。
【0168】
〔C〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【0169】
〔D〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【0170】
(付記1)
コンピュータに、
マスタ装置とスレーブ装置との間の時刻同期処理を開始する前に、前記マスタ装置及び前記スレーブ装置のそれぞれにおける複数の時刻情報に基づき、前記マスタ装置と前記スレーブ装置との間のクロック偏差を算出し、
前記時刻同期処理において、前記クロック偏差の差分を細分化して前記スレーブ装置の時刻情報に反映させることで、前記クロック偏差を補正する、
処理を実行させる、時刻同期プログラム。
【0171】
(付記2)
前記時刻同期処理を開始する前に、前記マスタ装置と前記スレーブ装置との間の伝送路遅延を算出し、
算出された前記クロック偏差又は前記伝送路遅延の変動が前記時刻同期処理において検知された場合に、前記クロック偏差及び前記伝送路遅延の少なくともいずれかの算出を再び実行する、
処理を前記コンピュータに実行させる、付記1に記載の時刻同期プログラム。
【0172】
(付記3)
前記時刻同期処理において、前記マスタ装置と前記スレーブ装置との間の時刻のずれを分割して補正する、
処理を前記コンピュータに実行させる、付記1又は2に記載の時刻同期プログラム。
【0173】
(付記4)
前記マスタ装置と前記スレーブ装置との間に配置される回路に基づいて、前記時刻同期処理における時刻同期のタイミングを増加させる、
処理を前記コンピュータに実行させる、付記1~3のいずれか1項に記載の時刻同期プログラム。
【0174】
(付記5)
上位装置と接続される情報処理装置であって、
前記上位装置との間の時刻同期処理を開始する前に、前記上位装置及び当該情報処理装置のそれぞれにおける複数の時刻情報に基づき、前記上位装置との間のクロック偏差を算出する事前処理部と、
前記時刻同期処理において、前記クロック偏差の差分を細分化して当該情報処理装置の時刻情報に反映させることで、前記クロック偏差を補正するクロック偏差補正部と、
を備える、情報処理装置。
【0175】
(付記6)
前記事前処理部は、
前記時刻同期処理を開始する前に、前記上位装置と当該情報処理装置との間の伝送路遅延を算出し、
算出された前記クロック偏差又は前記伝送路遅延の変動が前記時刻同期処理において検知された場合に、前記クロック偏差及び前記伝送路遅延の少なくともいずれかの算出を再び実行する、
付記5に記載の情報処理装置。
【0176】
(付記7)
前記時刻同期処理において、前記上位装置と当該情報処理装置との間の時刻のずれを分割して補正する時刻差補正部を更に備える、
付記5又は6に記載の情報処理装置。
【0177】
(付記8)
前記上位装置と当該情報処理装置との間に、前記時刻同期処理における時刻同期のタイミングを増加させる回路が配置される、
付記5~7のいずれか1項に記載の情報処理装置。
【0178】
(付記9)
マスタ装置とスレーブ装置との間の時刻同期処理を開始する前に、前記マスタ装置及び前記スレーブ装置のそれぞれにおける複数の時刻情報に基づき、前記マスタ装置と前記スレーブ装置との間のクロック偏差を算出し、
前記時刻同期処理において、前記クロック偏差の差分を細分化して前記スレーブ装置の時刻情報に反映させることで、前記クロック偏差を補正する、
時刻同期方法。
【0179】
(付記10)
前記時刻同期処理を開始する前に、前記マスタ装置と前記スレーブ装置との間の伝送路遅延を算出し、
算出された前記クロック偏差又は前記伝送路遅延の変動が前記時刻同期処理において検知された場合に、前記クロック偏差及び前記伝送路遅延の少なくともいずれかの算出を再び実行する、
付記9に記載の時刻同期方法。
【0180】
(付記11)
前記時刻同期処理において、前記マスタ装置と前記スレーブ装置との間の時刻のずれを分割して補正する、
付記9又は10に記載の時刻同期方法。
【0181】
(付記12)
前記マスタ装置と前記スレーブ装置との間に配置される回路に基づいて、前記時刻同期処理における時刻同期のタイミングを増加させる、
付記9~11のいずれか1項に記載の時刻同期方法。
【符号の説明】
【0182】
100 :情報処理システム
1 :スレーブ装置
101 :パケット受信部
102 :パケット送信部
103 :PTPによる時刻補正部
104 :時刻管理部
11 :PTPプロトコルエンジン
110 :時刻補正部
111 :タイミング生成部
112 :クロック偏差補正部
113 :オフセット補正部
114 :変動検知部
115 :キャリブレーション処理部
12 :ローカルクロック
13 :タイムスタンプ生成部
14 :アプリケーション機能部
15 :イベントインタフェース
16 :一般インタフェース
17 :クロックデータセット
18 :ポートデータセット
2 :マスタ装置
201 :時刻管理部
3 :スイッチ
200 :情報処理システム
4 :FPGAカード
5 :GMサーバ