(57)【特許請求の範囲】
【請求項１】
時刻情報を含む同期メッセージを送出する同期メッセージ送出装置であって、
ＣＰＵによって実行され、前記同期メッセージの送出間隔の情報を取得するＳｙｎｃ登録処理部と、
前記ＣＰＵが用いるクロック信号よりも高精度なクロック信号を用いて動作し、前記同期メッセージ、及び、前記同期メッセージ以外のメッセージである一般メッセージを送出する送出部と、
前記ＣＰＵが用いるクロック信号よりも高精度なクロック信号を用いて動作し、前記Ｓｙｎｃ登録処理部が取得した前記同期メッセージの送出間隔の情報に基づいて、前記同期メッセージの送出タイミングか否かを判定するスケジューラ部と、
を備え、
前記送出部は、前記スケジューラ部が、前記同期メッセージの送出タイミングであると判定すると、新たな一般メッセージの送出を抑制して当該同期メッセージを送出する、
同期メッセージ送出装置。
【請求項２】
前記同期メッセージを生成する同期メッセージ生成部と、
前記同期メッセージ以外のメッセージである一般メッセージを生成する一般メッセージ生成部と、
を備え、
前記同期メッセージ生成部が、前記一般メッセージ生成部よりも下位層に設けられている、
請求項１に記載の同期メッセージ送出装置。
【請求項３】
同一の時刻同期対象機器に対する同期メッセージ送信間隔の最小値として規定されている間隔毎にカウントする第１カウンターと、
前記同一の時刻同期対象機器に対する同期メッセージ送信間隔の最小値を時刻同期対象機器の数でさらに分割した間隔毎にカウントする第２カウンターと
を備え、
前記スケジューラ部は、前記時刻同期対象機器毎に設定された同期メッセージ送出タイミングの情報のうち、前記第２カウンターの値によって特定される時刻同期対象機器の同期メッセージ送出タイミングの情報と、前記第１カウンターの値との比較に基づいて、その時刻同期対象機器に対して同期メッセージを送出するタイミングか否かを判定し、
前記送出部は、前記スケジューラ部が同期メッセージを送出するタイミングであると判定すると当該同期メッセージを送出する、
請求項１または請求項２に記載の同期メッセージ送出装置。
【請求項４】
前記送出部が前記同期メッセージを送出するモードとして、前記スケジューラ部が同期メッセージの送出タイミングであると判定すると、新たな一般メッセージの送出を抑制するモードと、前記スケジューラ部が同期メッセージの送出タイミングであると判定すると、前記一般メッセージを送出中である場合は、当該一般メッセージの送出を中断して、前記同期メッセージを送出するモード、および、前記スケジューラ部が同期メッセージの送出タイミングであると判定すると、新たな同期メッセージ及び一般メッセージの送出を抑制し、前記一般メッセージの送出に要する時間として規定されている規定時間が経過した後、前記同期メッセージを送出するモードのいずれかまたは両方と、のうちいずれかのモードの選択を受け付ける、請求項１から３の何れか一項に記載の同期メッセージ送出装置。
【請求項５】
同期メッセージ送出装置と、時刻同期対象装置とを備え、
前記同期メッセージ送出装置は、
時刻情報を含む同期メッセージを送出する同期メッセージ送出装置であって、
ＣＰＵによって実行され、前記同期メッセージの送出間隔の情報を取得するＳｙｎｃ登録処理部と、
前記ＣＰＵが用いるクロック信号よりも高精度なクロック信号を用いて動作し、前記同期メッセージ、及び、前記同期メッセージ以外のメッセージである一般メッセージを送出する送出部と、
前記ＣＰＵが用いるクロック信号よりも高精度なクロック信号を用いて動作し、前記Ｓｙｎｃ登録処理部が取得した前記同期メッセージの送出間隔の情報に基づいて、前記同期メッセージの送出タイミングか否かを判定するスケジューラ部と、
を備え、
前記送出部は、前記スケジューラ部が、前記同期メッセージの送出タイミングであると判定すると、新たな一般メッセージの送出を抑制して当該同期メッセージを送出し、
前記時刻同期対象装置は、
前記同期メッセージ送出装置が送出する前記同期メッセージに基づいて、当該同期メッセージ送出装置との時刻同期を行う、
時刻同期システム。
【請求項６】
時刻情報を含む同期メッセージを送出する同期メッセージ送出装置の同期メッセージ送出方法であって、
ＣＰＵによって実行され、前記同期メッセージの送出間隔の情報を取得するステップと、
前記ＣＰＵが用いるクロック信号よりも高精度なクロック信号を用いて動作し、前記同期メッセージ、及び、前記同期メッセージ以外のメッセージである一般メッセージを送出する送出ステップと、
前記ＣＰＵが用いるクロック信号よりも高精度なクロック信号を用いて動作し、前記同期メッセージの送出間隔の情報に基づいて、前記同期メッセージの送出タイミングか否かを判定する判定ステップと、
を有し、
前記送出ステップでは、前記判定ステップにて前記同期メッセージの送出タイミングであると判定すると、新たな一般メッセージの送出を抑制して当該同期メッセージを送出する、
同期メッセージ送出方法。
【請求項７】
時刻情報を含む同期メッセージを送出する同期メッセージ送出装置を制御するコンピュータに、
ＣＰＵによって実行され、前記同期メッセージの送出間隔の情報を取得するステップと、
前記ＣＰＵが用いるクロック信号よりも高精度なクロック信号を用いて動作し、前記同期メッセージ、及び、前記同期メッセージ以外のメッセージである一般メッセージを送出する送出ステップと、
前記ＣＰＵが用いるクロック信号よりも高精度なクロック信号を用いて動作し、前記同期メッセージの送出間隔の情報に基づいて、前記同期メッセージの送出タイミングか否かを判定する判定ステップと、
を実行させ、
前記送出ステップでは、前記判定ステップにて前記同期メッセージの送出タイミングであると判定すると、新たな一般メッセージの送出を抑制して当該同期メッセージを送出させる
ためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同期メッセージ送出装置、時刻同期システム、同期メッセージ送出方法およびプログラムに関する。
【背景技術】
【０００２】
Ｅｔｈｅｒｎｅｔ（登録商標）をはじめとする非同期ネットワークにおいて、時刻同期手段としてＩＥＥＥ１５８８ｖ２（プレシジョンタイムプロトコル（Precision Time Protocol）。以下、ＰＴＰと称する）が知られている。ＰＴＰでは、グランドマスタークロック（Grandmaster Clock；ＧＭＣ）はＧＮＳＳ（Global Navigation Satellite System(s)、全地球航法衛星システム）等から得た極めて精度の高い時刻情報を、ＰＴＰにて規定されているフォーマットの時刻同期パケットに打刻し、時刻同期対象装置であるスレーブに対し送信する。スレーブは、ＧＭＣからのパケットを受信し、ＰＴＰの規定にて決められた演算をすることで、ＧＭＣと同期した周波数、位相、及び、絶対時刻情報を得ることができる。
【０００３】
ＰＴＰにてＧＭＣとスレーブとの時刻同期を取る際、ネットワークにおける伝送時間の遅延及び揺らぎと、ＧＭＣにおける時刻同期パケットの送信間隔の揺らぎとが、時刻同期の精度を低下させる要因となる。
これらのうち、ネットワークにおける伝送時間の遅延及び揺らぎに関しては、ＩＥＥＥ１５８８ｖ２にてトランスペアレントクロック（Transparent Clock、ＴＣ）やバウンダリークロック（Boundary Clock、ＢＣ）を用いた対応策が提案されている。
【０００４】
また、時刻同期の精度の向上に関連して、特許文献１に記載の時刻同期システムは、時刻同期パケットの通信を行って時刻同期の処理を行う時刻同期処理部と時刻同期以外の処理を行うメイン処理部とを有し、時刻同期処理部とメイン処理部とに異なるＩＰアドレスを付与したマスタと、マスタのうちメイン処理部と通信を行うときにはメイン処理部のＩＰアドレスに通常パケットの通信を行い、時刻同期の通信を行うときには時刻同期処理部のＩＰアドレスに時刻同期パケットの通信を行う複数のスレーブと、マスタとスレーブとの間を接続し、ＩＰアドレスごとに通信されるパケットを振り分け、ＩＰアドレスごとに第１バッファ、第２バッファを設けた中継装置と、を備えている。
特許文献１では、かかる構成により、パケットが集中したときでも、ネットワーク遅延のバラツキを減少させることで、時刻同期精度を向上させる、とされている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−１４３７４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＧＭＣとスレーブとの時刻同期の精度を高めるためには、ＧＭＣにおける時刻同期パケットの送信間隔の揺らぎについても対応策が求められる。特に、時刻同期パケットの送信タイミングが到来したときにＧＭＣが時刻同期パケット以外のパケットを送信中であった場合、送信中のパケットの送信完了を待って時刻同期パケットを送信することで時刻同期パケットの送信に遅延が生じ、また、時刻同期パケットの送信間隔に揺らぎが生じる。
かかる同期パケットの送信遅延及び送信間隔の揺らぎへの対策として、特許文献１に記載の技術を用いて、同期パケットと同期パケット以外のパケットとを別々のＩＰアドレスにて送信する方法が考えられる。しかしながら、この方法では、ＧＭＣに複数のＩＰアドレスを割り当てる必要があり、ＩＰアドレスの管理が煩雑になる。
【０００７】
本発明は、時刻同期パケットの送信と時刻同期パケット以外のパケットの送信とで別々のＩＰアドレスを用いる必要無しに、ＧＭＣ（グランドマスタークロック装置）における時刻同期パケットの送信間隔の揺らぎを低減させることができる同期メッセージ送出装置、時刻同期システム、同期メッセージ送出方法およびプログラムを提供する。
【課題を解決するための手段】
【０００８】
本発明の第１の態様によれば、同期メッセージ送出装置は、時刻情報を含む同期メッセージを送出する同期メッセージ送出装置であって、ＣＰＵによって実行され、前記同期メッセージの送出間隔の情報を取得するＳｙｎｃ登録処理部と、前記ＣＰＵが用いるクロック信号よりも高精度なクロック信号を用いて動作し、前記同期メッセージ、及び、前記同期メッセージ以外のメッセージである一般メッセージを送出する送出部と、前記ＣＰＵが用いるクロック信号よりも高精度なクロック信号を用いて動作し、前記Ｓｙｎｃ登録処理部が取得した前記同期メッセージの送出間隔の情報に基づいて、前記同期メッセージの送出タイミングか否かを判定するスケジューラ部と、を備え、前記送出部は、前記スケジューラ部が、前記同期メッセージの送出タイミングであると判定すると、新たな一般メッセージの送出を抑制して当該同期メッセージを送出する。
前記同期メッセージを生成する同期メッセージ生成部と、前記同期メッセージ以外のメッセージである一般メッセージを生成する一般メッセージ生成部と、を備え、前記同期メッセージ生成部が、前記一般メッセージ生成部よりも下位層に設けられていてもよい。
【０００９】
同一の時刻同期対象機器に対する同期メッセージ送信間隔の最小値として規定されている間隔毎にカウントする第１カウンターと、前記同一の時刻同期対象機器に対する同期メッセージ送信間隔の最小値を時刻同期対象機器の数でさらに分割した間隔毎にカウントする第２カウンターとを備え、前記スケジューラ部は、前記時刻同期対象機器毎に設定された同期メッセージ送出タイミングの情報のうち、前記第２カウンターの値によって特定される時刻同期対象機器の同期メッセージ送出タイミングの情報と、前記第１カウンターの値との比較に基づいて、その時刻同期対象機器に対して同期メッセージを送出するタイミングか否かを判定し、前記送出部は、前記スケジューラ部が同期メッセージを送出するタイミングであると判定すると当該同期メッセージを送出する、ようにしてもよい。
【００１０】
前記送出部が前記同期メッセージを送出するモードとして、前記スケジューラ部が同期メッセージの送出タイミングであると判定すると、前記一般メッセージを送出中である場合は、当該一般メッセージの送出を中断して、前記同期メッセージを送出するモードと、前記スケジューラ部が同期メッセージの送出タイミングであると判定すると、新たな一般メッセージの送出を抑制するモードと、前記スケジューラ部が同期メッセージの送出タイミングであると判定すると、新たな同期メッセージ及び一般メッセージの送出を抑制し、前記一般メッセージの送出に要する時間として規定されている規定時間が経過した後、前記同期メッセージを送出するモードとのうち少なくとも２つのモードからいずれかの選択を受け付ける、ようにしてもよい。
【００１１】
本発明の第２の態様によれば、時刻同期システムは、同期メッセージ送出装置と、時刻同期対象装置とを備え、前記同期メッセージ送出装置は、時刻情報を含む同期メッセージを送出する同期メッセージ送出装置であって、ＣＰＵによって実行され、前記同期メッセージの送出間隔の情報を取得するＳｙｎｃ登録処理部と、前記ＣＰＵが用いるクロック信号よりも高精度なクロック信号を用いて動作し、前記同期メッセージ、及び、前記同期メッセージ以外のメッセージである一般メッセージを送出する送出部と、前記ＣＰＵが用いるクロック信号よりも高精度なクロック信号を用いて動作し、前記Ｓｙｎｃ登録処理部が取得した前記同期メッセージの送出間隔の情報に基づいて、前記同期メッセージの送出タイミングか否かを判定するスケジューラ部と、を備え、前記送出部は、前記スケジューラ部が、前記同期メッセージの送出タイミングであると判定すると、新たな一般メッセージの送出を抑制して当該同期メッセージを送出し、前記時刻同期対象装置は、前記同期メッセージ送出装置が送出する前記同期メッセージに基づいて、当該同期メッセージ送出装置との時刻同期を行う。
【００１２】
本発明の第３の態様によれば、同期メッセージ送出方法は、時刻情報を含む同期メッセージを送出する同期メッセージ送出装置の同期メッセージ送出方法であって、ＣＰＵによって実行され、前記同期メッセージの送出間隔の情報を取得するステップと、前記ＣＰＵが用いるクロック信号よりも高精度なクロック信号を用いて動作し、前記同期メッセージ、及び、前記同期メッセージ以外のメッセージである一般メッセージを送出する送出ステップと、前記ＣＰＵが用いるクロック信号よりも高精度なクロック信号を用いて動作し、前記同期メッセージの送出間隔の情報に基づいて、前記同期メッセージの送出タイミングか否かを判定する判定ステップと、を有し、前記送出ステップでは、前記判定ステップにて前記同期メッセージの送出タイミングであると判定すると、新たな一般メッセージの送出を抑制して当該同期メッセージを送出する。
【００１３】
本発明の第４の態様によれば、プログラムは、時刻情報を含む同期メッセージを送出する同期メッセージ送出装置を制御するコンピュータに、ＣＰＵによって実行され、前記同期メッセージの送出間隔の情報を取得するステップと、前記ＣＰＵが用いるクロック信号よりも高精度なクロック信号を用いて動作し、前記同期メッセージ、及び、前記同期メッセージ以外のメッセージである一般メッセージを送出する送出ステップと、前記ＣＰＵが用いるクロック信号よりも高精度なクロック信号を用いて動作し、前記同期メッセージの送出間隔の情報に基づいて、前記同期メッセージの送出タイミングか否かを判定する判定ステップと、を実行させ、前記送出ステップでは、前記判定ステップにて前記同期メッセージの送出タイミングであると判定すると、新たな一般メッセージの送出を抑制して当該同期メッセージを送出させるためのプログラムである。
【発明の効果】
【００１４】
本発明によれば、時刻同期パケットの送信と時刻同期パケット以外のパケットの送信とで別々のＩＰアドレスを用いる必要無しに、ＧＭＣにおける時刻同期パケットの送信間隔の揺らぎを低減させることができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態における時刻同期システムの装置構成を示す概略構成図である。
【図２】ＩＥＥＥ１５８８ｖ２時刻同期プロセスにおける階層構造を示す説明図である。
【図３】従来のグランドマスタークロック装置の構成例を示す概略ブロック図である。
【図４】従来のグランドマスタークロック装置が送出する同期メッセージにおける遅延および揺らぎの例を示す説明図である。
【図５】同実施形態の時刻同期プロセスにおける階層構造を示す説明図である。
【図６】同実施形態におけるグランドマスタークロック装置の構成例を示す概略ブロック図である。
【図７】同実施形態におけるグランドマスタークロック装置が送出する同期メッセージにおける遅延の例を示す説明図である。
【図８】ＩＥＥＥ１５８８ｖ２の同期メッセージのフォーマットを示す説明図である。
【図９】同実施形態におけるグローバルプロファイル記憶部が記憶するグローバルプロファイルのデータ構造の例を示す説明図である。
【図１０】同実施形態におけるＳＭＩＤプロファイル記憶部が記憶するＳＭＩＤプロファイルのデータ構造の例を示す説明図である。
【図１１】同実施形態におけるＳＭＩＤテーブル記憶部が記憶するＳＭＩＤテーブルのデータ構造の例を示す説明図である。
【図１２】同実施形態におけるＭＡＣ部の機能構成を示す概略ブロック図である。
【図１３】同実施形態における同期メッセージのデータ構造の例を示す説明図である。
【図１４】同実施形態で、複数のスレーブ装置が存在するネットワークにおける同期メッセージの送出間隔の例を示す説明図である。
【図１５】同実施形態におけるＳＭＩＤテーブルのデータ構造の例を示す説明図である。
【図１６】同実施形態におけるスケジューラの動作の例を示す説明図である。
【図１７】同実施形態における同期メッセージ送出時のデータの流れの例を示す説明図である。
【図１８】同実施形態において、強制廃棄方式の場合にＳｙｎｃ送出部が行う動作の例を示す説明図である。
【図１９】同実施形態において、高優先送出方式の場合にＳｙｎｃ送出部が行う動作の例を示す説明図である。
【図２０】同実施形態において、送信時刻予約方式の場合にＳｙｎｃ送出部が行う動作の例を示す説明図である。
【図２１】同実施形態において、送信時刻予約方式にて送信待ち受けがどの程度発生するかを示す説明図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図１は、本発明の一実施形態における時刻同期システムの装置構成を示す概略構成図である。同図において、時刻同期システム１は、グランドマスタークロック（Grandmaster Clock）装置１００と、アンテナ２００と、トランスペアレントクロック（Transparent Clock）装置３００と、１つ以上のスレーブ（Slave）装置４００とを備える。
【００１７】
グランドマスタークロック装置１００とトランスペアレントクロック装置３００とは、ネットワーク８１０を介して接続されている。トランスペアレントクロック装置３００とスレーブ装置４００とも、ネットワーク８１０を介して接続されている。トランスペアレントクロック装置３００とスレーブ装置４００とが、ネットワーク８１０に加えてＬ２スイッチ８２０を介して接続されていてもよい。グランドマスタークロック装置１００及びスレーブ装置４００との関係では、トランスペアレントクロック装置３００、Ｌ２スイッチ８２０及びネットワーク８１０が、グランドマスタークロック装置１００とスレーブ装置４００とを接続する通信経路８００に含まれる。
また、アンテナ２００は測位システム９００から得られる測位情報を受信し、アンテナ２００はグランドマスタークロック装置１００に接続されている。
【００１８】
ネットワーク８１０は、例えばＥｔｈｅｒｎｅｔ（登録商標）による通信ネットワークなど、非同期の通信ネットワークである。
測位システム９００は、衛星を用いた測位システム（Global Navigation Satellite System；ＧＮＳＳ、全地球航法衛星システム）である。測位システム９００の例として、ＧＰＳ（Global Positioning System）、ＱＺＳＳ（Quasi Zenith Satellite System）又はＧＬＯＮＡＳＳ（Global Navigation Satellite System）を上げることができるが、これに限らない。測位システム９００は、測位の原理として高精度の時刻と衛星の航法情報を元に三角測量を行うシステムであり、地上に設置された数台のセシウム原子時計と時刻が一致するように、常に時刻情報の補正を行っている。時刻同期システム１では、測位システム９００を時刻源として利用する。具体的には、時刻同期システム１は、測位システム９００の人工衛星が送信する高精度の時刻情報を利用して時刻を検出する。
【００１９】
アンテナ２００は、測位システム９００の衛星が送信する測位情報を受信し、得られた測位情報をグランドマスタークロック装置１００へ出力する。
グランドマスタークロック装置１００は、時刻同期システム１の中枢となる時刻同期源であり、アンテナ２００を介して測位システム９００から受信した測位情報に基づいて時刻を検出し、検出した時刻に基づいて、時刻同期パケットの形式による時刻情報を生成してスレーブ装置４００の各々へ送信する。グランドマスタークロック装置１００は、時刻同期対象であるスレーブ装置４００の時刻を測位システム９００の時刻に同期させることを目的として、時刻情報のスレーブ装置４００への送信を行う。なお、送信を送出とも称する。グランドマスタークロック装置１００は、同期メッセージ送出装置の例に該当する。
【００２０】
トランスペアレントクロック装置３００、Ｌ２スイッチ８２０は、いずれも、グランドマスタークロック装置１００とスレーブ装置４００との通信を中継する。
トランスペアレントクロック装置３００は、グランドマスタークロック装置１００からの時刻同期パケットを受信して送信先のスレーブ装置４００へ送信する。その際、トランスペアレントクロック装置３００は、送信時刻から受信時刻を減算してトランスペアレントクロック装置３００内での遅延時間を算出し、算出した遅延時間を時刻同期パケット内に書き込む（打刻する）。当該時刻同期パケットを受信したスレーブ装置４００では、時刻同期パケット内に書き込まれた遅延時間に基づく補正を行うことで、時刻同期に対するトランスペアレントクロック装置３００における伝送時間の遅延（Delay）や揺らぎ（Jitter）の影響を低減させることができる。
一方、Ｌ２スイッチ８２０は、一般的な多ポートスイッチであり、時刻同期パケットの識別等の処理は行わない。時刻同期パケットがＬ２スイッチ８２０を通過するのに要する時間は、通信経路８００における伝送時間の遅延や揺らぎの一因となる。
【００２１】
スレーブ装置４００は、時刻同期システム１における時刻同期対象の装置である。スレーブ装置４００は、通信経路８００を介してグランドマスタークロック装置１００から受信した時刻同期パケットを用いて、スレーブ装置４００内部の時刻をグランドマスタークロック装置１００内部の時刻に同期させる処理を行う。ここでいう装置内部の時刻とは、当該装置が備えるクロックを時刻同期パケットにて補正したものである。
【００２２】
図１に示す装置構成は、従来の時刻同期システムにおける装置構成と同様である。本実施形態において特別な装置を追加する必要は無く、後述するようにグランドマスタークロック装置１００内部の構成が従来の時刻同期システムの場合と異なる。
また、時刻同期対象であるスレーブ装置４００を識別するために、グランドマスタークロック装置１００がスレーブ装置４００にＳＭＩＤ（ＳＹＮＣ  ｍｅｓａｇｅ  ＩＤ）を付与する。ＳＭＩＤは、スレーブ装置４００毎に固有の値を有する整数の通し番号である。
但し、ＳＭＩＤはスレーブ装置４００内に保管されるものではなく、グランドマスタークロック装置１００が、スレーブ装置４００を識別するためにグランドマスタークロック装置１００内部に記憶しておく。
【００２３】
本実施形態では、グランドマスタークロック装置１００に、最大５００台のスレーブ装置４００を登録可能である場合を例に説明する。グランドマスタークロック装置１００は、５００台のスレーブ装置４００に対して０〜４９９のＳＭＩＤを付与する。
但し、グランドマスタークロック装置１００に登録可能なスレーブ装置４００の台数は５００台以下に限らない。グランドマスタークロック装置１００が、１０００台のｓｌａｖｅに対し時刻同期を実施する場合は、５００台の場合よりもＳＭＩＤビットを１ビット増やすことで、ＳＭＩＤを容易にスケールアップすることができる。なお、一台のグランドマスタークロック装置１００が大量のスレーブ装置４００を時刻同期する場合、通信経路８００構成が複雑になり、トランスペアレントクロック装置３００など時刻同期をサポートしたスイッチ以外のＬ２スイッチ８２０が多段に挟まる可能性がある点について留意が必要である。
【００２４】
なお、グランドマスタークロック装置１００とスレーブ装置４００との接続関係は、図１に示すものに限らない。例えば、グランドマスタークロック装置１００とスレーブ装置４００とが１対１で接続されていてもよい。また、グランドマスタークロック装置１００とスレーブ装置４００とが、トランスペアレントクロック装置３００やＬ２スイッチ８２０を介さずに、単にネットワーク８１０を介して接続されていてもよい。
【００２５】
ここで、図２〜４を参照して、ＩＥＥＥ１５８８ｖ２時刻同期プロセスによるグランドマスタークロック装置における時刻同期パケットの送信間隔の揺らぎについて説明する。一般には、グランドマスタークロック装置はＩＥＥＥ１５８８ｖ２時刻同期プロセスに従って動作する。
図２は、ＩＥＥＥ１５８８ｖ２時刻同期プロセスにおける階層構造を示す説明図である。同図において、グランドマスタークロック装置１１００とスレーブ装置１４００とが示されており、グランドマスタークロック装置１１００とスレーブ装置１４００とは通信経路１８００で接続されている。
【００２６】
また、グランドマスタークロック装置１１００、スレーブ装置１４００とも、５層の階層構造をなすプロトコルに従って動作する。５つの階層構造は下位から順に物理層（ＰＨＹ層）、メディアアクセスコントローラ（Media Access Controller；ＭＡＣ）層、インターネットプロトコル（Internet Protocol；ＩＰ）層、ユーザデータグラムプロトコル（User Datagram Protocol；ＵＤＰ）層、プレシジョンタイムプロトコル（Precision Time Protocol；ＰＴＰ）層である。メディアアクセスコントローラ層にはタイムスタンプユニット（Timestamp Unit；ＴＳＵ）が含まれる。
【００２７】
グランドマスタークロック装置１１００は時刻同期源であり、スレーブ装置１４００は時刻同期対象である。グランドマスタークロック装置１１００、スレーブ装置１４００ともに、時刻同期に必要なプロトコルであるＰＴＰ層は最上位層に位置し、通常はＣＰＵ（Central Processing Unit、中央処理装置）にて処理が行われる。時刻同期パケットに関しても、ＰＴＰ層の処理において一定間隔でスケジュールされたタイミングにて下位層に伝達される。
【００２８】
ＵＤＰ層、ＩＰ層は、いずれもプロトコルスタック層であり、ＯＳ（Operating System）に実装される。ＰＴＰ層にて生成される時刻同期パケットはＵＤＰパケットであることから、通常、ＵＤＰ層およびＩＰ層を経由して更に下位層へと伝達される。
ＭＡＣ層は、ＰＴＰ層、ＵＤＰ層およびＩＰ層のプロトコルスタックによってカプセル化されたＰＴＰパケットにＭＡＣアドレス情報の付与、ＦＣＳ（Frame Check Sequence）演算処理等の処理を行い、また、物理層とのインタフェースとして機能する。また、ＭＡＣ層に含まれるタイムスタンプユニットは、ＰＴＰ層の重要な要素であるタイムスタンプを実施する。
【００２９】
ＩＥＥＥ１５８８ｖ２が他の時刻同期方式に対して優位な点として、ＭＡＣ層にタイムスタンプユニットを有することが挙げられる。これにより、ＰＴＰ層から発行されたＰＴＰパケットは、タイムスタンプの打刻に関して、ＭＡＣ層より上位のＰＴＰ層、ＵＤＰ層及びＩＰ層における遅延（Delay）や揺らぎ（Jitter）の影響を受けない。
一方、従来のグランドマスタークロック装置では、パケットの送信タイミングについて、ＰＴＰ層、ＵＤＰ層およびＩＰ層における遅延（Delay）や揺らぎ（Jitter）の影響を受ける。この点について図３を参照して説明する。
【００３０】
図３は、従来のグランドマスタークロック装置の構成例を示す概略ブロック図である。
同図において、グランドマスタークロック装置１１００は、ＧＮＳＳ同期型周波数発振器（ＧＮＳＳＤＯ）１１１０と、物理層チップ（ＰＨＹ）１１２０と、メディアアクセスコントローラ（Media Access Controller；ＭＡＣ）部１１３０と、水晶振動子１１５０と、メインメモリ１１６０と、ＣＰＵ（Central Processing Unit、中央処理装置）１１７０とを備える。ＧＮＳＳ同期型周波数発振器１１１０は、ＧＮＳＳ受信機１１１１と、クロック調整器１１１２と、水晶振動子１１１３とを備える。ＭＡＣ部１１３０は、受信タイムスタンプユニット（Receive Timestamp Unit；ＲＴＳＵ）１１３１と、受信ＦＩＦＯ（First-in First-out）１１３２と、送信ＦＩＦＯ１１３３と、送信タイムスタンプユニット（Transmit Timestamp Unit；ＴＴＳＵ）１１３７と、プレシジョンタイムカウンターユニット（Precision Time Counter Unit；ＰＲＴＣＵ）１１４２とを備える。ＣＰＵ１１７０は、ハードウェア（ＨＷ）アクセス部１１７１と、ドライバ１１７２と、ＯＳ（Operating System）カーネル１１７３と、ＧＮＳＳ管理デーモン（ＧＮＳＳＤ）１１７４と、プロトコルスタック１１７５と、Ｄｅｌａｙｒｅｑ送出処理部１１７６と、Ｓｙｎｃ送出処理部１１７７と、スケジューラ（Scheduler）１１７８とメモリコントローラ１１８１とを備える。
【００３１】
ＣＰＵ１１７０は、グランドマスタークロック装置１１００が備える記憶デバイスからプログラムを読み出して実行することで、ＣＰＵ１１７０内の各部を実現する。一方、ＧＮＳＳ同期型周波数発振器１１１０、物理層チップ１１２０、及びＭＡＣ部１１３０は、ハードウェアにて構成されている。
また、物理層チップ１１２０が物理層の処理を実行し、ＭＡＣ部１１３０がＭＡＣ層の処理を実行し、ＣＰＵ１１７０が、ＩＰ層、ＵＤＰ層及びＰＴＰ層の処理を実行する。
【００３２】
グランドマスタークロック装置１１００は、測位システムからの測位情報を受信するためのアンテナ（ＡＮＴ）１２００と接続されている。具体的には、アンテナ１２００は、同軸ケーブルにてＧＮＳＳ同期型周波数発振器１１１０と接続されており、受信した測位情報から抽出した時刻情報をＧＮＳＳ同期型周波数発振器１１１０へ出力する。
ＧＮＳＳ同期型周波数発振器１１１０は、アンテナ１２００から得たＧＮＳＳの信号から、ＴｏＤ（Time Of Day、年・月・日・時・分・秒の時刻情報）、１ＰＰＳ（正確な毎一秒を通知するパルス信号）、及び、１２５メガヘルツ（ＭＨｚ）周波数信号を取得してグランドマスタークロック装置１１００内部に提供する。
【００３３】
ＧＮＳＳ受信機１１１１はアンテナ１２００にて受信するＧＮＳＳ信号から時刻情報、及び、ＧＮＳＳの航法情報を抽出する。そして、ＧＮＳＳ受信機１１１１は、ＧＮＳＳの航法情報と、定期的にＧＮＳＳから送付される時刻情報とに基づいて、三角測量の原理で衛星の現在位置（衛星とグランドマスタークロック装置１１００との相対位置）の特定を行う。現在位置が確定すると、ＧＮＳＳ受信機１１１１は、時刻情報の換算を実施する。
【００３４】
ＧＮＳＳに含まれる時刻情報は、地上に配置されたセシウム原子時計により定期的に補正されているためＧＮＳＳ信号から得られた時刻情報は非常に正確な時刻を示す。ＧＮＳＳ信号から得られた時刻情報は、いわば、この世で唯一の絶対時刻に同期していると見做すことができる。時刻情報は同時に周波数と位相に関する情報であるため、クロック調整器１１１２は、毎秒のパルスの投入を受けて水晶振動子１１１３に対して補正をかける。これにより、クロック調整器１１１２は、水晶振動子１１１３の周波数が１２５メガヘルツに高精度に一致するように補正をかける。なお、本実施形態では１２５メガヘルツを基本周波数とする場合を例に説明しているが、１０メガヘルツまたは２５メガヘルツ等、基本周波数を予め決定した周波数に置き換えることが可能である。
【００３５】
ＭＡＣ部１１３０において、受信タイムスタンプユニット１１３１は、受信パケット（グランドマスタークロック装置１１００が受信したパケット）に受信時刻を書き込む（受信タイムスタンプを打刻する）。
受信ＦＩＦＯ１１３２は、受信パケットを一時的に格納する。
送信ＦＩＦＯ１１３３は、送信パケット（グランドマスタークロック装置１１００が送信するパケット）を一時的に格納する。
送信タイムスタンプユニット１１３７は、送信パケットに送信時刻を書き込む（送信タイムスタンプを打刻する）。
【００３６】
水晶振動子１１５０は、水晶振動子１１１３よりも周波数精度が低い水晶振動子である。水晶振動子１１５０は、ＣＰＵ１１７０の基準クロックとして用いられる。
メインメモリ１１６０は、グランドマスタークロック装置１１００が備える記憶デバイスを用いて構成され、各種情報を記憶する。
【００３７】
ＣＰＵ１１７０において、ハードウェアアクセス部１１７１は、バスとドライバ１１７２とを接続し、ドライバ１１７２がハードウェアを制御する。バスは、一般にＰＣＩバスまたはローカルバスにて提供される。
ＣＰＵ１１７０は、ハードウェアアクセス部１１７１を経由してＴｏＤの取得及び送受信パケットのハンドリングを行う。送受信パケットのハンドリングにおいて、ＣＰＵ１１７０は、送信パケットについては、ＯＳカーネル１１７３から指示のあったメインメモリアドレスをメインメモリコントローラ１１８１に出力して、メインメモリ１１６０から送信パケット情報を読み込む。そして、ＣＰＵ１１７０は、読み込んだ送信パケット情報をＭＡＣ部１１３０に出力する。ＣＰＵ１１７０は、受信パケットについては送信パケットの場合と逆に、ＭＡＣ部１１３０から受信したパケットを、メインメモリ１１６０の、ＯＳカーネル１１７３が指示したメインメモリアドレスに蓄積する。
【００３８】
ここで、送受信パケット処理ではＤＭＡ（ダイレクトメモリアクセス）を利用してＣＰＵ１１７０の演算ユニットを利用することなく、メインメモリ１１６０およびメインメモリコントローラ１１８１とＭＡＣ部１１３０とで直接実施する方式が主流である。図３に示すグランドマスタークロック装置１１００では、メモリコントローラ１１８１内にＤＭＡが内蔵されており、このＤＭＡを利用して送受信パケット処理を行う。
【００３９】
ＯＳカーネル１１７３は、Ｌｉｎｕｘ（登録商標）やＵＮＩＸ（登録商標）、ｗｉｎｄｏｗｓなどオペレーティングシステムの中枢であり、各種プロセスの実行管理を行うスケジューラ１１７８の制御やメモリ空間の割り当てなどを行う。
ＧＮＳＳＤ１１７４は、ＧＮＳＳ同期型周波数発振器１１１０を制御する制御デーモンであり、ＧＮＳＳから得たＴｏＤ情報を元に、ＭＡＣ部１１３０のプレシジョンタイムカウンターユニット１１４２の秒粒度以上の時刻合わせ、および、ＧＮＳＳ同期型周波数発振器１１１０の状態監視を実施する。具体的には、ＧＮＳＳＤ１１７４は、ＧＮＳＳ同期型周波数発振器１１１０が前回行った時刻合わせ（水晶振動子１１１３の発振の補正）に基づいて時刻合わせを行う。そして、ＧＮＳＳＤ１１７４は、ＧＮＳＳ電波の受信状況などによりＧＮＳＳ同期型周波数発振器１１１０内の水晶振動子１１１３が自走状態（Ｈｏｌｄｏｖｅｒ）になったことなどの状態変化を管理し、各プロセスからの被参照処理を実施する。
【００４０】
プロトコルスタック１１７５は、ＵＤＰ、ＩＰの各層の処理を実施する。プロトコルスタック１１７５は、ＯＳカーネル１１７３と共にコンパイルされて実装されるか、あるいは、追加で導入することが可能である。ユーザがプロトコルスタック１１７５を実装する負担を軽減させるために、一般的には標準的なプロトコルが、ＯＳカーネル１１７３と共にコンパイルされて実装されている。
【００４１】
スケジューラ１１７８は、上記のような各種プロセスの実行管理を行う。
Ｓｙｎｃ送出処理部１１７７は、スレーブ装置１４００とＰＴＰプロトコルにて事前に取り決め（ネゴシエーション）を行った同期間隔（Ｓｙｎｃ間隔、Ｓｙｎｃ  ｉｎｔｅｒｖａｌ）を基に、スケジューラ１１７８に対し、送信対象となるスレーブ装置のＩＤ（以下、スレーブＩＤと称する）を登録する。スケジューラ１１７８は、一定の粒度（例えば５００ｕｓ）にてスレーブＩＤ領域（スレーブ装置のＩＤが登録された領域）を参照し、スレーブＩＤが存在すれば、Ｓｙｎｃ送出処理部１１７７にスレーブＩＤを伝達する。Ｓｙｎｃ送出処理部１１７７は、当該スレーブＩＤに関する同期メッセージ（Synchronous message（Ｓｙｎｃ  ｍｅｓｓａｇｅ））を時刻同期パケットにて生成し、プロトコルスタック１１７５に対して付加情報と共に出力する。
【００４２】
ここでスケジューラ１１７８の粒度が時刻同期システムに関して大きな問題となり得る。例えば、５００ｕｓの粒度で同期メッセージを送出する時刻同期システムにおいて、１秒間に１２８個の同期メッセージを送出したい場合、正しい間隔は１／１２８＝７，８１２マイクロ秒（μｓ）であり、５００ｕｓの近傍である数値は８，０００マイクロ秒又は７，５００マイクロ秒となる。８，０００マイクロ秒、７，５００マイクロ秒のいずれも、正しい間隔である７，８１２マイクロ秒と差があり、この差によって揺らぎ（Jitter）が発生する。
【００４３】
また、ＣＰＵ１１７０が、ＧＮＳＳから抽出された時刻と同期する高精度の水晶振動子１１１３と同期していないこともｊｉｔｔｅｒや一方向へのｄｅｌａｙを発生させる要因となり得る。さらにＣＰＵ１１７０は様々なプロセスを実行しているため、スケジューラ１１７８が指定する時刻にＳｙｎｃ送出処理（同期メッセージの送出処理）を開始できる保証が無い。さらにＳｙｎｃ送出タイミング（同期メッセージの送出タイミング）が到来した際に、既に同期メッセージ以外の一般メッセージのパケットの送信処理を実施していた場合には、その送出処理終了を待つ必要が生じる。
ここで、一般メッセージは、例えば、ＣＰＵ１１７０において送出処理を実施する、例えば管理メッセージや後述するｄｅｌａｙｒｅｓｐメッセージなど、同期メッセージ以外のメッセージを示す。
【００４４】
Ｄｅｌａｙｒｅｑ送出処理部１１７６は、グランドマスタークロック装置１１００が、スレーブ装置からｄｅｌａｙｒｅｑメッセージ（ｄｅｌａｙｒｅｑ  ｍｅｓｓａｇｅ）を受信すると、受信時刻を記録し、記録した受信時刻をｄｅｌａｙｒｅｓｐメッセージ内に記録する。そして、Ｄｅｌａｙｒｅｑ送出処理部１１７６は、ＩＥＥＥ１５８８ｖ２規定のフォーマットにて、ｄｅｌａｙｒｅｑメッセージを送出したスレーブ装置に対してｄｅｌａｙｒｅｓｐメッセージ（ｄｅｌａｙｒｅｓｐ  ｍｅｓｓａｇｅ）を送出する処理を行う。このｄｅｌａｙｒｅｓｐメッセージは、スレーブ装置がネットワーク遅延時間を算出するのに用いられる。
【００４５】
上記のように、ＣＰＵ処理には多数の揺らぎ要因があり、正確なＳｙｎｃ  ｉｎｔｅｒｖａｌ（同期メッセージの送出間隔）を保つのは困難である。一方、ＭＡＣ部１１３０は、受信ＦＩＦＯ１１３２及び送信ＦＩＦＯ１１３３と、ＧＮＳＳと同等の正確な時刻源であるプレシジョンタイムカウンターユニット１１４２とによって、受信タイムスタンプユニット１１３１および送信タイムスタンプユニット１１３７にてＰＴＰパケットに対し正確な時刻を打刻する。
物理層チップ（ＰＨＹ）１１２０は、ネットワークを介してスレーブ装置１４００と通信を行う。
【００４６】
図４は、従来のグランドマスタークロック装置が送出する同期メッセージにおける遅延および揺らぎの例を示す説明図である。同図において、横軸は時刻を表しており、図に向かって右側ほど後の時刻を示している。また、同図の縦には、同期メッセージ送出経路における各部を示している。
図４において、Ｓｙｎｃ送出処理部１１７７は、毎正秒（１ＰＰＳ）等間隔で同期メッセージを送出するものとしてスレーブ装置１４００とネゴシエーションしており、スケジューラ１１７８に対して１秒毎のタイミングで同期メッセージＩＤを書き込む。
なお、図４では、同期メッセージの送出間隔が１ＰＰＳである場合の例を示しているため、図３を参照して説明した粒度の問題については言及しない。
【００４７】
スケジューラ１１７８は、ＣＰＵの基準クロックである低精度の水晶振動子１１５０にて動作するため、スケジューラ１１７８の動作は絶対時刻軸に対して揺らぎを有する。すなわち、水晶振動子１１５０によるクロックの誤差により、スケジューラ１１７８が示す同期メッセージの送出タイミングは、１秒間隔に対して誤差を含み得る。
次に、スケジューラ１１７８が同期メッセージの送出タイミングを検出すると、Ｓｙｎｃ送出処理部１１７７が送出タイミングとなった同期メッセージをメインメモリ１１６０へと書き込む。この際、メインメモリ１１６０への書込による遅延が生じる。また、同期メッセージの書込中に他のプロセスが同一のメインメモリに対してアクセスすると、揺らぎ（Jitter）が発生し得る。
【００４８】
メインメモリ１１６０に格納された同期メッセージは、高精度の水晶振動子１１１３にて動作するＭＡＣ１１３０内のＴＴＳＵ１１３７によって、グランドマスタークロック装置１１００からの正確な送出時刻を打刻される。そして、送出時刻を打刻された同期メッセージは、グランドマスタークロック装置１１００から送出される。
【００４９】
ここで、ネットワーク遅延をΔｄｅｌａｙｉ（ｉは、正整数）と表記すると、スレーブ装置１４００に到達するパケットの到着時刻は、図中に示した「Δｄｅｌａｙ１＋１００ｎｓ」、「Δｄｅｌａｙ２＋３００，５００ｎｓ」、・・・のように分散する。特に、ネットワーク遅延の揺らぎが小さい場合、グランドマスタークロック装置１１００内で発生した揺らぎ成分が、同期メッセージの到着間隔に大きな影響を及ぼす。
また、図３を参照して説明した粒度の問題の問題が生じると、同期メッセージのスレーブ装置１４００への到着間隔の精度がさらに低下する。
【００５０】
図５は、本実施形態の時刻同期プロセスにおける階層構造を示す説明図である。同図において、グランドマスタークロック装置１００とスレーブ装置４００とが示されており、グランドマスタークロック装置１００とスレーブ装置４００とは通信経路８００で接続されている。
【００５１】
また、グランドマスタークロック装置１００、スレーブ装置４００とも、５層の階層構造をなすプロトコルに従って動作する。５つの階層構造は下位から順に物理層（ＰＨＹ層）、メディアアクセスコントローラ（Media Access Controller；ＭＡＣ）層、インターネットプロトコル（Internet Protocol；ＩＰ）層、ユーザデータグラムプロトコル（User Datagram Protocol；ＵＤＰ）層、プレシジョンタイムプロトコル（Precision Time Protocol；ＰＴＰ）層である。メディアアクセスコントローラ層にはタイムスタンプユニット（Timestamp Unit；ＴＳＵ）が含まれる。
【００５２】
グランドマスタークロック装置１００は時刻同期源であり、スレーブ装置４００は時刻同期対象である。スレーブ装置４００は時刻同期に必要なプロトコルであるＰＴＰを最上位層にてＣＰＵを用いて処理する。
一方、グランドマスタークロック装置１００は、同期メッセージの送出処理を、ＣＰＵからプロファイルで指定された間隔、及び、スレーブ装置４００に関する情報などに基づいて、ＭＡＣ層内のプロセスにて実行する。このように、グランドマスタークロック装置１００は、同期メッセージの送出処理をＣＰＵから分離して実行する。
【００５３】
ＰＴＰはＵＤＰパケットであることから、通常、ＯＳに実装されたＵＤＰ、ＩＰプロトコルスタックを経由して更に下位層へと伝達される。一方、同期メッセージに特化した場合、そのパケットのサイズ及びフィールド位置は全てのスレーブ装置４００に対し一定であり、相手アドレスがスレーブ装置４００毎に異なり、シーケンス番号やＵＤＰチェックサム等が送信時に一意に決定するデータとなる。
【００５４】
グランドマスタークロック装置１００は、ＭＡＣ層において、ＰＴＰ、ＵＤＰ及びＩＰの各プロトコルスタックが出力する情報をプロファイルとして記憶する。その際、ＭＡＣ層では、グローバルプロファイル、ＳＭＩＤプロファイル（同期メッセージプロファイル）、ＳＭテーブル（同期メッセージテーブル）に分割して記憶する。後述するように、グローバルプロファイルは、全てのスレーブ装置４００に対して一定のデータを纏めたものである。また、ＳＭＩＤプロファイルは、スレーブ装置４００毎に異なるデータを纏めたものである。ＳＭＩＤテーブルは、送信時に一意に決定するデータ（同期メッセージ毎に値が異なるデータ）を纏めたものである。
そして、グランドマスタークロック装置１００はＭＡＣ層において、ＧＮＳＳを起源とする極めて高精度のクロックによってスケジュールされた時刻に同期メッセージを送出することで、ＣＰＵ層での処理による送出タイミングの揺らぎを排除し、一定の遅延のみで同期メッセージ送出を実現する。
【００５５】
図６は、本実施形態におけるグランドマスタークロック装置の構成例を示す概略ブロック図である。
同図において、グランドマスタークロック装置１００は、ＧＮＳＳ同期型周波数発振器（ＧＮＳＳＤＯ）１１０と、物理層チップ（ＰＨＹ）１２０と、メディアアクセスコントローラ（Media Access Controller；ＭＡＣ）部１３０と、水晶振動子１５０と、メインメモリ１６０と、ＣＰＵ（Central Processing Unit、中央処理装置）１７０とを備える。ＧＮＳＳ同期型周波数発振器１１０は、ＧＮＳＳ受信機１１１と、クロック調整器１１２と、水晶振動子１１３とを備える。ＭＡＣ部１３０は、受信タイムスタンプユニット（Receive Timestamp Unit；ＲＴＳＵ）１３１と、受信ＦＩＦＯ（First-in First-out）１３２と、送信ＦＩＦＯ１３３と、Ｓｙｎｃプロファイル記憶部１３４と、Ｓｙｎｃ生成部１３５と、Ｓｙｎｃ送出部１３６と、送信タイムスタンプユニット（Transmit Timestamp Unit；ＴＴＳＵ）１３７と、スケジューラ（Scheduler）１４１と、プレシジョンタイムカウンターユニット（Precision Time Counter Unit；ＰＲＴＣＵ）１４２とを備える。なお、ＭＡＣ部１３０の、より詳細な構成については後述する。
ＣＰＵ１７０は、ハードウェア（ＨＷ）アクセス部１７１と、ドライバ１７２と、ＯＳ（Operating System）カーネル１７３と、ＧＮＳＳ管理デーモン（ＧＮＳＳＤ）１７４と、プロトコルスタック１７５と、Ｄｅｌａｙｒｅｑ送出処理部１７６と、Ｓｙｎｃ登録処理部１７７と、メモリコントローラ１８１とを備える。
【００５６】
ＣＰＵ１７０は、グランドマスタークロック装置１００が備える記憶デバイスからプログラムを読み出して実行することで、ＣＰＵ１７０内の各部を実現する。一方、ＧＮＳＳ同期型周波数発振器１１０、物理層チップ１２０、及びＭＡＣ部１３０は、ハードウェアにて構成されている。
また、物理層チップ１２０が物理層の処理を実行し、ＭＡＣ部１３０がＭＡＣ層の処理を実行し、ＣＰＵ１７０が、ＩＰ層、ＵＤＰ層及びＰＴＰ層の処理を実行する。
【００５７】
ＧＮＳＳ同期型周波数発振器１１０の構成及び機能は、図３のＧＮＳＳ同期型周波数発振器１１１０の構成及び機能と同様であり、説明を省略する。
ＭＡＣ部１３０において、受信タイムスタンプユニット１３１、送信タイムスタンプユニット１３７の機能は、それぞれ図３の受信タイムスタンプユニット１１３１、送信タイムスタンプユニット１１３７の機能と同様であり、説明を省略する。
また、水晶振動子１５０、メインメモリ１６０の機能も、それぞれ図３の水晶振動子１１５０、メインメモリ１１６０の機能と同様であり、説明を省略する。
ＣＰＵ１７０は、図３のＳｙｎｃ送出処理部１１７７及びスケジューラ１１７８に代えてＳｙｎｃ登録処理部１７７を備える点以外は、図３のＣＰＵ１１７０と同様である。なお、ＣＰＵ１７０もＯＳのスケジューラ機能を実行するが、同期メッセージの送出において、当該機能を直接には使用しないので、図６にはＣＰＵのスケジューラを記載していない。ＣＰＵ１７０は、一般メッセージ生成部の例に該当し、図６のＣＰＵ１１７０と同様、一般メッセージを生成する。
【００５８】
Ｓｙｎｃ登録処理部１７７は、スレーブ装置４００とネゴシエーションを行った同期メッセージ間隔及び相手先アドレスなどを、ハードウェアアクセス部１７１を経由してＭＡＣ部１３０へと通知する。これにより、同期メッセージの送出に際してＣＰＵ１７０のスケジューラ機能を用いる必要が無くなる。このため、同期メッセージの送出において、低精度の水晶振動子１５０に起因する送出タイミングの揺らぎや、スケジューラ粒度に起因する送出タイミングの揺らぎが生じない。
またＣＰＵ１７０が、定期的な同期メッセージ送出処理から解放されることによりＧＮＳＳＤ処理，Ｄｅｌａｙｒｅｑ送出処理など他処理に多くの時間を割くことが可能となり装置のパフォーマンス向上が期待できる。Ｄｅｌａｙｒｅｑ送出処理部１７６の機能は、図３のＤｅｌａｙｒｅｑ送出処理部１１７６の機能と同様であり、説明を省略する。
【００５９】
ＭＡＣ部１３０は、Ｓｙｎｃ登録処理部１７７から指示を受け、Ｓｙｎｃプロファイル記憶部１３４に、スレーブ装置４００毎のＳｙｎｃ特性を格納する。具体的には、ＭＡＣ部１３０は、Ｓｙｎｃ  ｉｎｔｅｒｖａｌ（同期メッセージの送出間隔）、スレーブ装置４００に至るアドレス情報、及び、同期メッセージを構成する各要素を取得し、Ｓｙｎｃプロファイル記憶部１３４内の３つの要素に分解し格納する。３つの要素については後述する。
【００６０】
ＭＡＣ部１３０は、さらにスケジューラ１４１を有し、スケジューラ１４１は、後述するようにＳＭＩＤを有する。ＳＭＩＤは、７，８１２，５００ナノ秒をさらに５００分割した１５，６２５ナノ秒間隔でカウントアップする。
【００６１】
スケジューラ１４１は、毎秒パルスである１ＰＰＳ受信後はＳＭＩＤをカウントアップし、現時刻において送出すべき同期メッセージが存在するか否かをＳＭＩＤ＿ｔａｂｅｌ内のｎｅｘｔＩｎｔｅｒｖａｌとＳＹＮＣＩＤ  ｃｏｕｎｔｅｒとを比較することにより判定する。ｎｅｘｔＩｎｔｅｒｖａｌとＳＹＮＣＩＤ  ｃｏｕｎｔｅｒとが等しいと判定した場合、スケジューラ１４１は、ｓｙｎｃ送出パルス（Ｔｒａｎｓｍｉｔ  ｐｕｌｓｅ）をＳｙｎｃ送出部１３６に対して出力する。
スケジューラ１４１は、スケジューラ部の例に該当する。
【００６２】
Ｓｙｎｃ生成部１３５は、ＣＰＵ１７０のＳｙｎｃ登録処理部１７７が予め設定した、同期メッセージを構成する３つの要素をマージ処理して同期メッセージを生成し得られた同期メッセージをＳｙｎｃ送出部１３６に提示する。Ｓｙｎｃ生成部１３５は同期メッセージ生成部の例に該当する。
Ｓｙｎｃ送出部１３６は、後述する３方式のいずれかにより、同期メッセージの送出を行う。Ｓｙｎｃ送出部１３６は、送出部の例に該当する。
【００６３】
なお、同期メッセージの送信を行う部分はＭＡＣ部１３０に限らない。例えば、ＭＡＣ部１３０とは別のＦＰＧＡにて同期メッセージの送信を行う部分を構成するようにしてもよい。この場合、下位側の層から順に物理層チップ、ＦＰＧＡ、ＭＡＣという構成になり、ＦＰＧＡでタイムスタンプの打刻を行う。
【００６４】
図７は、本実施形態におけるグランドマスタークロック装置が送出する同期メッセージにおける遅延の例を示す説明図である。同図において、横軸は時刻を表しており、図に向かって右側ほど後の時刻を示している。また、同図の縦には、同期メッセージ送出経路における各部を示している。
図７において、Ｓｙｎｃ登録処理部１７７は、毎正秒（１ＰＰＳ）等間隔で同期メッセージを送出するものとしてスレーブ装置４００とネゴシエーションしており、ＭＡＣ部１３０のＳｙｎｃプロファイル記憶部１３４に、送信間隔、同期メッセージを構成する各要素を登録する。ＣＰＵ１７０が同期メッセージの送出に関して行う処理は、Ｓｙｎｃプロファイル記憶部１３４への登録処理に限定される。これにより、ＣＰＵ１７０は、その他のＰＴＰ処理並びに装置管理に必要なプロセスの実行に専念することができる。
【００６５】
１ＰＰＳでの同期メッセージの送出は、ＳＹＮＣプロファイル記憶部１３４に登録され、しかも後述するＳＭＩＤ（Ｓｙｎｃ  ｍｅｓｓａｇｅ  ＩＤ）単位でプロファイルを管理する。ＭＡＣ部１３０では、ＧＮＳＳを起源とする高精度の水晶振動子１１３によって内部の論理回路が動作する。ＭＡＣ部１３０は、ＳＭＩＤを定期監視するとともに、送出すべきＳＭＩＤが存在する場合に同期メッセージを組み立て、送出を実施する。
【００６６】
Ｓｙｎｃ送出部１３６は、後述する３つのルールのいずれかに基づいて同期メッセージの送出処理を行う。特に、後述する強制廃棄方式および送信時刻予約方式では、毎正秒に同期メッセージを送出することが可能となる。従ってグランドマスタークロック装置１００における同期メッセージ送出タイミングの揺らぎ成分が無くなり、スレーブ装置４００に対して通信経路における遅延成分や揺らぎ成分のみで同期メッセージを伝達することが可能になる。特に、通信経路における遅延成分Δｄｅｌａｙｉ（ｉは正整数）が一定である場合、同期メッセージが正確に一定間隔でスレーブ装置４００に到達する。このように、ＣＰＵにおける揺らぎ成分を排除することで、スレーブ装置４００における時刻精度の向上と時刻同期時間の短縮を図ることか可能となる。
【００６７】
図８は、ＩＥＥＥ１５８８ｖ２の同期メッセージのフォーマットを示す説明図である。同図では、横方向に３２ビット（ｂｉｔ）、つまり４バイト（ＢＹＴＥ）を示しており、左端のビットから回線に送出される。
また、同図の下方向に向けては、３２ビットの集合が連続したデータとして表しており、上の行のデータから下の行のデータへと順に、回線に送信される。
また、同図の左端に記載している１、５、９、・・・は、３２ビットの集合の左端、すなわち、ネットワークに最初に送出されるバイト位置を示している。例えば、上から１行目の左端のビットは、１バイト目に含まれており、上から２行目の左端のビットは、５バイト目に含まれている。
【００６８】
図８に示されるように、同期メッセージはＦＣＳ（Frame Check Sequence）を含まない場合で８６バイトの固定長である。ＶＬＡＮ  ｔａｇなどでその長さが変更になる可能性はあるが、グランドマスタークロック装置１００内において固定長となる。
同期メッセージは複数のプロトコルにて構成される。
【００６９】
Ｅｔｈｅｒ  ｈｅａｄｅｒはＥｔｈｅｒｎｅｔ（登録商標）を伝搬するすべてのパケットに付与される領域であり、宛先ＭＡＣアドレスであるＭＡＣ−ＤＡ、送信元ＭＡＣアドレス（グランドマスタークロック装置１００のＭＡＣアドレス）であるＭＡＣ−ＳＡ、継続するプロトコル種別を示すＥｔｈｅｒＴｙｐｅで構成される。なお同期メッセージの場合はＩＰｖ４であるため、Ｅｔｈｅｒｔｙｐｅ＝０ｘ０８００で固定である。
【００７０】
ＩＰ  ｈｅａｄｅｒはＩＰのバージョン番号（version、＝４）、ＩＰヘッダ長（length、＝５）、サービス・タイプ（ＴＯＳ）、データグラム長（data length、＝７２）、ＩＤ（ランダム値）、フラグフィールド（flag）およびフラグメントオフセット（fragment offset、＝０ｘ００）、ＴＴＬ（＝１）、プロトコル番号（protocol No、＝１７：ＵＤＰ）、ヘッダチェックサム（header checksum、ＩＰヘッダ部のチェックサム値、計算方式はＲＦＣ１０７１にて規定されている）で構成される。
【００７１】
ＵＤＰ  ｈｅａｄｅｒは、送信元（グランドマスタークロック装置１００）ＵＤＰポート番号（UDP-SP、＝３１９：ＩＥＥＥ１５８８ｖ２にて規定されている固定値）、相手先（スレーブ装置４００）ＵＤＰポート番号（UDP-DP、＝３１９：ＩＥＥＥ１５８８ｖ２にて規定されている固定値）、ＵＤＰパケット長（UDP-length、＝５２）、ＵＤＰチェックサム（UDP-checksum、ＵＤＰ疑似ヘッダ１２ｂｙｔｅ＋ＵＤＰヘッダ＋ＵＤＰペイロード）の３つの部分の１の補数の和によって算出される値である。なおＵＤＰチェックサムの値を０とすることで、相手先装置にてＵＤＰチェックサム計算が無効化されチェックが実施されない。グランドマスタークロック装置の実装においてはタイムスタンプがリアルタイムに変化するため、ＵＤＰチェックサム領域を０とする実装が簡易であり多くグランドマスタークロック装置やソフトウェアベースのグランドマスタークロック装置に実装されている、しかしながらネットワーク上もしくは装置内の何らかの問題で時刻同期において最も重要なタイムスタンプの信頼度を損なうことは望ましくない。そこで、グランドマスタークロック装置１００は、パケット毎にＵＤＰチェックサムを演算し、ＵＤＰチェックサム領域内に格納する。
【００７２】
ＰＴＰ  ｈｅａｄｅｒは、ＩＥＥＥ１５８８ｖ２にて規定された時刻同期パケット用のヘッダフォーマットであり同期メッセージも含まれる。Ｔｒａｎｓｍｉｔｓｐｅｃｉｆｉｃは今後の拡張のためにグランドマスタークロック装置１００の管理者が自由に設定可能な４ビット値である（ｄｅｆａｕｌｔ＝１）。メッセージタイプ（MessageType）は同期メッセージである（＝０）。ｖｅｒｓｉｏｎＰＴＰは本願ではＰＴＰｖ２を前提としているため（＝２）である。
【００７３】
ｍｅｓｓａｇｅ  ｌｅｎｇｔｈは、同期メッセージの場合（＝４４）固定である。ｄｏｍａｉｎ  Ｎｕｍｂｅｒは、グランドマスタークロック装置が所属する時刻同期グループ＝ドメインをグランドマスタークロック装置の管理者が設定する。ＦｌａｇＦｉｅｌｄはグランドマスタークロック装置の特性を設定するフィールドでありグランドマスタークロック装置の管理者が設定する。ｃｏｒｒｅｃｔｉｏｎ  Ｆｉｅｌｄは、グランドマスタークロック装置では使用しない領域である。ｃｌｏｃｋＩｄｅｎｔｉｔｙは、グランドマスタークロック装置を一意に示す識別子でありネットワーク上に複数のグランドマスタークロック装置が存在する場合等に有効な領域であるＩＥＥＥ１５８８ｖ２において、ＭＡＣＳＡつまりネットワーク上に１個しか存在しないＭＡＣアドレスを３バイト毎に分割し、その間にＦＦ−ＦＦを挿入することで計８バイトとすることが規定されている。ｓｏｕｒｃｅＰｏｒｔＩＤはグランドマスタークロック装置の何番目のポートから出力されたメッセージであるかを示す領域である。ｓｅｑｕｅｎｃｅＩＤは同期メッセージの送信に対しシーケンシャルに振られる番号であり、単一のスレーブ装置から見た場合、１ずつインクリメント（increment）するように見える。このＩＤにおいて同期メッセージの抜けを発見し何らかの対処をすることが可能となる。また経路によるＩＤの逆転など時刻同期を阻害する要因を削除することが可能となる。ｃｏｎｔｒｏｌＦｉｅｌｄは同期メッセージを表す（＝０）。ｌｏｇＭｅｓｓａｇｅＰｅｒｉｏｄは、通常は０である。同期メッセージ  ｐａｙｌｏａｄは同期メッセージの場合、ｏｒｉｇｉｎＴｉｍｅｓｔａｍｐで構成される。ｏｒｉｇｉｎＴｉｍｅｓｔａｍｐは、４８ビットの秒領域と、３２ビットのナノ秒領域で構成され、ｏｒｉｇｉｎＴｉｍｅｓｔａｍｐは同期メッセージがグランドマスタークロック装置１００から送出される際にＧＮＳＳを起源とする絶対時刻を打刻する領域である。以上のように同期メッセージが送付したい情報である時刻情報以外にも多数の情報を送付する必要がある。また、図８では、生成する情報を４種類に分類している。第１は、同一のグランドマスタークロック装置から送信する全ての同期メッセージで同一の値になる領域である。第２は、同一のグランドマスタークロック装置から送付され、かつ、同一のスレーブ装置に送出する同期メッセージで同一の値となる領域である。第３は、同期メッセージ毎に異なる値を有する領域である。第４は、リザーブ領域であり将来の拡張用である。
【００７４】
図９は、Ｓｙｎｃプロファイル記憶部１３４（グローバルプロファイル記憶部１３４−１）が記憶するグローバルプロファイル（Ｇｌｏｖａｌ  ｐｒｏｆｉｌｅ）のデータ構造の例を示す説明図である。
グローバルプロファイルは、図８に示す各領域のうち、同一のグランドマスタークロック装置から送信する全ての同期メッセージで同一の値になる領域（第１の領域）のデータを纏めたものである。
【００７５】
図９に示す４８バイトは、リザーブ領域（ＲＳＶＤ）も含めて常に同一の値（各同期メッセージに共通の値）であり、Ｓｙｎｃプロファイル記憶部１３４は、１つのグローバルプロファイルを記憶する。単一のメモリ領域で管理することは装置コストの面から有効な手段である。
例外は、ＩＤ（ｒａｎｄｏｍ  ｖａｌｕｅ）領域であり、ＩＤ（ｒａｎｄｏｍ  ｖａｌｕｅ）領域の値は毎パケット異なる。ＩＤ（ｒａｎｄｏｍ  ｖａｌｕｅ）領域の値は文字通りランダムであり一意の値をＧｌｏｖａｌ  ｐｒｏｆｉｌｅ内に保持する必要は無い。ただし、図９の例では、ランダム値を生成するｓｅｅｄ値（初期値）を設定するなどの利用のために領域を確保している。なお、ＩＤ（ｒａｎｄｏｍ  ｖａｌｕｅ）領域のランダム値生成方式として、公知のランダム値生成方式を用いることができる。
【００７６】
図１０は、Ｓｙｎｃプロファイル記憶部１３４（ＳＭＩＤプロファイル記憶部１３４−２）が記憶するＳＭＩＤプロファイル（ＳＭＩＤ＿ｐｒｏｆｉｌｅ）のデータ構造の例を示す説明図である。
ＳＭＩＤプロファイルは、図８に示す各領域のうち、同一のグランドマスタークロック装置から送出され、かつ、同一のスレーブ装置に送出される同期メッセージで同一の値となる領域（第２の領域）のデータを纏めたものである。なお、図１０に示すように、リザーブ領域（ＲＳＶＤ）を含んでいる。
Ｓｙｎｃプロファイル記憶部１３４は、スレーブ装置４００毎にＳＭＩＤプロファイルを記憶する。図１０に示すＳＭＩＤプロファイルは、２８バイトで構成されている。５００個のスレーブ装置４００を時刻同期する場合、Ｓｙｎｃプロファイル記憶部１３４は、２８×５００＝１４，０００バイトの領域を用いてＳＭＩＤプロファイルを記憶する。
【００７７】
図１１は、Ｓｙｎｃプロファイル記憶部１３４（ＳＭＩＤテーブル記憶部１３４−３）が記憶するＳＭＩＤテーブル（ＳＭＩＤ＿ｔａｂｌｅ）のデータ構造の例を示す説明図である。
ＳＭＩＤテーブルは、図８に示す各領域のうち、同期メッセージ毎に異なる値を有する領域（第３の領域）のデータを纏めたものである。なお、図１１に示すように、リザーブ領域（ＲＳＶＤ）を含んでいる。
図１１に示すＳＭＩＤテーブルは、８バイトで構成されている。５００個のスレーブ装置４００を時刻同期する場合、Ｓｙｎｃプロファイル記憶部１３４は、８×５００＝４，０００バイトの領域を用いてＳＭＩＤテーブルを記憶する。
【００７８】
以上より、Ｓｙｎｃプロファイル記憶部１３４がＧｌｏｖａｌ  ｐｒｏｆｉｌｅ、ＳＭＩＤプロファイル、及びＳＭＩＤテーブルを記憶するのに必要な記憶容量は式（１）で求めることができる。
【００７９】
４８＋１４，０００＋４，０００＝１８，０４８（バイト）    ・・・  （１）
【００８０】
約１８キロバイト（ｋ  ＢＹＴＥ）の領域は昨今のメモリ技術においては極めて小さく、ＡＳＩＣやＦＰＧＡ内に搭載するにあたって障害とならない。
【００８１】
図１２は、ＭＡＣ部１３０の機能構成を示す概略ブロック図である。同図において、ＭＡＣ部１３０は、受信タイムスタンプユニット（ＲＴＳＵ）１３１と、受信ＦＩＦＯ１３２と、送信ＦＩＦＯ１３３と、Ｓｙｎｃプロファイル記憶部１３４と、Ｓｙｎｃ生成部１３５と、Ｓｙｎｃ送出部１３６と、送信タイムスタンプユニット（ＴＴＳＵ）１３７と、ＳＹＮＣメッセージＦＩＦＯ１３９と、スケジューラ１４１と、プレシジョンタイムカウンターユニット（ＰＲＴＣＵ）１４２とを備える。Ｓｙｎｃプロファイル記憶部１３４は、グローバルプロファイル記憶部１３４−１と、ＳＩＭＤプロファイル記憶部１３４−２と、ＳＭＩＤテーブル記憶部１３４−３とを備える。
【００８２】
ＭＡＣ部１３０は、ＧＮＳＳを起源とする高精度の１ＰＰＳ（秒パルス）および１２５メガヘルツのクロック信号を受信する。そして、ＭＡＣ部１３０の内部の各プロセスは、１２５メガヘルツにて極めて正確なタイミングで動作を行う。またＴｏＤは日付および時刻情報である。
【００８３】
プレシジョンタイムカウンターユニット１４２は、装置内時刻源であり、現在時刻の年月日時分秒の情報を４８ビットで記憶するＳｅｃ領域と、１２５メガヘルツの逆数である８ナノ秒を最小単位として秒未満の時刻情報を３０ビットで記憶するＮｓｅｃ領域とを有する。プレシジョンタイムカウンターユニット１４２は、ＴｏＤを取得して秒情報を確定し、１２５ＭＨｚの逆数である８ｎｓにてＮｓｅｃ領域をカウントアップする。また、プレシジョンタイムカウンターユニット１４２は、１ＰＰＳパルスにてＮｓｅｃカウンターを０リセットし毎正秒にてＮｓｅｃを微調整する機構を有する。プレシジョンタイムカウンターユニット１４２によって生成された秒情報、ナノ秒情報は受信タイムスタンプユニット（ＲＴＳＵ）１３１及び送信タイムスタンプユニット（ＴＴＳＵ）１３７に通知され同期メッセージ生成時にｏｒｉｇｉｎａｌＴｉｍｅｓｔａｍｐ領域に打刻される。
【００８４】
Ｓｙｎｃプロファイル記憶部１３４はＤＰＲＡＭ（デュアルポートＲＡＭ）にて構成されている。これにより、ＣＰＵ１７０とＭＡＣ部１３０の各プロセスとが、非同期にＳｙｎｃプロファイル領域１３４にアクセスすることによる待ち合わせを排除することができる。Ｓｙｎｃプロファイル記憶部１３４は、図９、図１０及び図１１にて前述したグローバルプロファイル、ＳＭＩＤプロファイル＜０〜４９９＞およびＳＭＩＤテーブル＜０〜４９９＞を記憶するメモリ空間である。具体的には、グローバルプロファイル記憶部１３４−１は、グローバルプロファイルを記憶する。ＳＭＩＤプロファイル記憶部１３４−２は、ＳＭＩＤプロファイルを記憶する。ＳＭＩＤテーブル記憶部１３４−３は、ＳＭＩＤテーブルを記憶する。
Ｓｙｎｃプロファイル記憶部１３４へのアクセスでは、ＣＰＵ１７０が、アドレス（ＡＤＤＲ）およびデータ（ＤＡＴＡ）を指定して各データの書込を行う。ＣＰＵ１７０が書き込んだデータは、ＭＡＣ部１３０の各プロセスからは固定値として扱われる。また、リード機能を利用することで現在の同期メッセージの送出状態を監視することが可能である。
【００８５】
受信ＦＩＦＯ１３２は、物理層チップ１２０がネットワーク８１０から受信したＰＴＰおよびＰＴＰ以外のパケットを記憶するメモリ空間である。受信ＦＩＦＯ１３２は、受信タイムスタンプユニット１３１から到達した受信データを、ＤａｔａＥｎａｂｌｅ（データ有りを示す信号）がアサート（assert）されている間ＦＩＦＯ形式で格納する。また、受信ＦＩＦＯ１３２はＥｍｐｔｙＦｌａｇを有し、データが存在する場合、ＥｍｐｔｙＦｌａｇをネゲート（negate）する。これにより、有効な受信データが存在することをＣＰＵ１７０に伝達することができる。
【００８６】
ＣＰＵ１７０は、ＥｍｐｔｙＦｌａｇを定期的に監視し（低精度の水晶振動子１５０を用いた）ＣＰＵクロックに同期して、受信ＤＡＴＡのＣＰＵ１７０への取込処理を行う。なお、ＣＰＵ１７０が取得するデータは、ＰＴＰ以外にも様々なものがあってもよい。
【００８７】
送信ＦＩＦＯ１３３は、ＣＰＵ１７０がＭＡＣ部１３０へ出力するパケットを保存するメモリ空間である。ＣＰＵ１７０がＭＡＣ部１３０へ出力するパケットは、同期メッセージ以外のパケット（一般メッセージのパケット）である。ＣＰＵ１７０は、ＦｕｌｌＦｌａｇがネゲートされている場合に、送信ＤＡＴＡを送信ＦＩＦＯ１３３に対して出力する。一方、ＦｕｌｌＦｌａｇがアサートされている場合、ＣＰＵ１７０はパケット送出処理を行わず、送出すべきデータをメインメモリ等に保管する。送信ＦＩＦＯ１３３はまた、ＥｍｐｔｙＦｌａｇ、ＲｅａｄＰｕｌｓｅ、送信ＤＡＴＡの各パスにてＳｙｎｃ送出部１３６と接続される。
Ｓｙｎｃ送出部１３６は、同期メッセージが存在しない場合にはＲｅａｄＰｕｌｓｅ（ＦＩＦＯからデータを読み込むための信号）を出力し、送信ＤＡＴＡの読み込みを実行する。
【００８８】
ＳＹＮＣメッセージＦＩＦＯ１３９は、同期メッセージのみが格納される領域でありＳｙｎｃ生成部１３５が生成した同期メッセージを格納する。ＳＹＮＣメッセージＦＩＦＯ１３９が格納する同期メッセージは、常に１個以下である。また、ＳＹＮＣメッセージＦＩＦＯ１３９は、ＥｍｐｔｙＦｌａｇ、ＲｅａｄＰｕｌｓｅ、送信ＤＡＴＡにてＳｙｎｃ送出部１３６と接続される。ＳＹＮＣメッセージＦＩＦＯ１３９は、ＥｍｐｔｙＦｌａｇ（データ無しを示す信号）がアサートされた際にＳｙｎｃ送出部１３６のルールに従っていずれかの時刻タイミング後にＲｅａｄＰｕｌｓｅに従って送信ＤＡＴＡを送出する。
【００８９】
スケジューラ１４１は、１秒／１２８でカウントアップするＳＹＮＣＩＤを備える。ＳＹＮＣＩＤは、同期メッセージ送出におけるＳｙｎｃＩｎｔｅｒｖａｌと対応する。
また、スケジューラ１４１は、ＳＹＮＣＩＤの１サイクルをさらに５００に分割したタイミングでカウントアップするカウンターであるＳＭＩＤを備える。
【００９０】
また、スケジューラ１４１は、ＳＭＩＤの値を、ＳＭＩＤテーブルのアドレス及びＳＭＩＤプロファイルのアドレスへと変換し、アドレス情報をＳｙｎｃプロファイルに設定する。スケジューラ１４１は、アドレスが決定したＳＭＩＤテーブルから、ｎｅｘｔＩｎｔｅｒｖａｌ情報、ｓｙｎｃＩｎｔｅｒｖａｌおよびｓｅｑｕｅｎｃｅＩＤを読み出す。ｎｅｘｔＩｎｔｅｒｖａｌがＳＹＮＣＩＤと一致した場合、スケジューラ１４１は、同期メッセージを送出するタイミングであると判定し、ＴｒａｎｓｍｉｔＰｕｌｓｅをＳｙｎｃ生成部１３５およびＳｙｎｃ送出部１３６に対して出力する。また、ｎｅｘｔＩｎｔｅｒｖａｌがＳＹＮＣＩＤと一致した場合、スケジューラ１４１は、ｎｅｘｔＩｎｔｅｒｖａｌの値とｓｅｑｕｅｎｃｅＩＤの値とを更新する。具体的には、スケジューラ１４１は、ｎｅｘｔＩｎｔｅｒｖａｌの値を、ｓｙｎｃＩｎｔｅｒｖａｌの値から算出した次回の送出タイミングに更新する。また、スケジューラ１４１は、ｓｅｑｕｅｎｃｅＩＤに１をインクリメントした数値をＳＭＩＤテーブルに対して書き込む。
【００９１】
ここで、ｎｅｘｔＩｎｔｅｒｖａｌは、スレーブ装置４００毎に設定されている同期メッセージ送出間隔に対応するための情報である。同期メッセージ送出間隔が１２８ＰＰＳに設定されているスレーブ装置４００に対しては、グランドマスタークロック装置１００は、ＳｙｎｃＩＤが１インクリメントする間隔と同じ間隔で同期メッセージを送出すればよい。一方、同期メッセージ送出間隔が６４ＰＰＳに設定されているスレーブ装置４００に対しては、グランドマスタークロック装置１００は、ＳｙｎｃＩＤが２インクリメントする間隔と同じ間隔で同期メッセージを送出する必要がある。
【００９２】
そこで、スケジューラ１４１はスレーブ装置４００毎にＳｙｎｃプロファイル記憶部１３４に格納しているｎｅｘｔＩｎｔｅｒｖａｌとＳＭＩＤとを比較する。ｎｅｘｔＩｎｔｅｒｖａｌの値とＳＭＩＤの値とが同じであると判定した場合、スケジューラ１４１は、同期メッセージを送出するタイミングが到来したと判定する。
さらに、スケジューラ１４１は、スレーブ装置４００毎にＳｙｎｃプロファイル記憶部１３４に格納しているｓｙｎｃＩｎｔｅｒｖａｌから次回の送出タイミングを算出しｎｅｘｔＩｎｔｅｒｖａｌに書き込む。１２８ＰＰＳが規格上の最小間隔であるため、算出式を１２８÷ＳｙｎｃＩｎｔｅｒｖａｌとし、現在のｎｅｘｔＩｎｔｅｒｖａｌ値に上記算出結果を加算することとする。
例えば、同期メッセージ送出間隔が６４ＰＰＳに設定されているスレーブ装置４００の場合、１２８÷６４＝２となり、ｎｅｘｔＩｎｔｅｒｖａｌに記憶されていた値に２を加算しｎｅｘｔＩｎｔｅｒｖａｌ領域への書き込み（更新）を行う。
また、同期メッセージ送出間隔が３２ＰＰＳに設定されているスレーブ装置４００の場合、１２８÷３２＝４となり、ｎｅｘｔＩｎｔｅｒｖａｌに記憶されていた値に４を加算しｎｅｘｔＩｎｔｅｒｖａｌ領域への書き込み（更新）を行う。
【００９３】
Ｓｙｎｃ生成部１３５は、スケジューラ１４１からのＴｒａｎｓｍｉｔ  ｐｕｌｓｅを受信すると、ＳＭＩＤテーブルおよびＳＭＩＤプロファイルからデータを読み出す。なお、アドレスについては既にスケジューラ１４１にて決定しているため、読み出す必要は無い。また、Ｓｙｎｃ生成部１３５は、全ての同期メッセージに共通のグローバルプロファイルを読み出し、図８にて示した同期メッセージを組み立てる。組み立て処理は単純なフィールドの移動のみで完了する。またＩＤ領域に関してはランダムの値が期待されるので、Ｓｙｎｃ生成部１３５は、ランダム値ジェネレータにてランダム値を挿入する。Ｓｙｎｃ生成部１３５が用いるランダム値ジェネレータは、ランダム値を生成可能なものであればよく、公知のランダム値ジェネレータを用いることができる。
Ｓｙｎｃ生成部１３５は、同期メッセージの組み立てが完了すると、直ちに当該同期メッセージをＳＹＮＣメッセージＦＩＦＯ１３９へ出力する。
【００９４】
Ｓｙｎｃ送出部１３６は、同期メッセージ送信ルール（Ｓｙｎｃ  ｔｒａｎｓｍｉｔ  ｒｕｌｅ）をＣＰＵ１７０から設定可能なレジスタ領域を有する。当該レジスタにて、（１）強制廃棄方式（Ｄｉｓｃａｒｄ）、（２）高優先送出方式（Ｈ．Ｐｒｉｏｒｉｔｙ）、（３）送信時刻予約方式（Ｒｅｓｅｒｖｅｄ）の３種の送出方式のいずれかを設定可能である。同期メッセージ送信ルールの設定は、例えば、グランドマスタークロック装置１００の管理者が、グランドマスタークロック装置１００を適用するネットワークの特性を考慮して行う。
【００９５】
（１）強制廃棄方式では、同期メッセージの送出タイミングが到来すると、現在送信中の全ての同期メッセージ以外のパケット（一般メッセージのパケット。以後、ＣＰＵパケットと称する）の送出を中断して同期メッセージを送出する方式である。送出を中断したパケットについては、当該パケットの終了まで廃棄処理を行う。
相手装置はエラーを検知するが上位層による再送が期待できる場合に、特に有効な方式である。
（２）高優先送出方式では、同期メッセージの送出タイミングが到来すると、現在送信中のＣＰＵパケットが完了するのを待ち、次回の送出では必ず同期メッセージを送出する。仮にＣＰＵパケットが連続して発行されている場合においても最優先で同期メッセージを送信する。
（３）送信時刻予約方式では、ＣＰＵパケットの最大値がＥｔｈｅｒｎｅｔ（登録商標）の規定で１５１８バイトと決まっていることに着目して、同期メッセージの送出タイミングから１５１８バイト分前（実際にはＩＦＧやＦＣＳが存在するため１５４２オクテット（ｏｃｔｅｔ）時間前）の時刻になると、新たなＣＰＵパケットの送出を抑制する。これにより、１５４２オクテット経過後に、確実に同期メッセージを送出することができる。なお、１５４２オクテットは一般メッセージの送出に要する時間として規定されている規定時間の例に該当する。また、ＣＰＵパケットは、同期メッセージ及び一般メッセージの例に該当する。
送信時刻予約方式では、１５４２オクテット時間が経由した時点で同期メッセージの送出を開始することで、メッセージの送出間隔は常に一定となる。時刻同期においては、メッセージの到着速度は問題ではなく、メッセージの間隔ならびにメッセージ内のタイムスタンプの正確度が重要であるため、送信時刻予約方式が有効である。また、送信時刻予約方式では同期メッセージが存在する場合にのみＣＰＵパケットの送出を停止するため、スレーブ装置４００の台数が少ない場合など、同期メッセージの送出間隔（Ｓｙｎｃ  ｉｎｔｅｒｖａｌ）が長い場合でも、ＣＰＵメッセージを効率的に送出することができる。
なお、ここでは一般メッセージの送出に要する最長時間を規定時間としているが、これに限らず、規定時間は一般メッセージの送出に要する時間であればよい。この場合でも、同期メッセージの送出間隔は一定となる。
【００９６】
受信タイムスタンプユニット１３１は、受信した時刻同期パケットに対し、プレシジョンタイムカウンターユニット１４２から得た時刻情報を打刻する処理を行う。
送信タイムスタンプユニット１３７は、送信する時刻同期パケットに対し、プレシジョンタイムカウンターユニット１４２から得た時刻情報を打刻する処理を行う。
受信タイムスタンプユニット１３１、送信タイムスタンプユニット１３７共に、時刻同期パケットを認識して時刻情報を打刻する。同期メッセージも時刻同期パケットであることから、送信タイムスタンプユニット１３７は、同期メッセージにも正確な時刻情報を打刻する。
【００９７】
物理層チップ１２０は、ネットワーク８１０の物理インタフェースと、ＭＡＣ部１３０の物理インタフェースとの変換処理を行う。
【００９８】
図１３は、同期メッセージのデータ構造の例を示す説明図である。同図に向かって左がＭＳＢであり、ネットワーク８１０に対して最初に送信されるデータである。Ｅｔｈｅｒｎｅｔ（登録商標）の規定でインターフレームギャップ（ＩＦＧ）は最低１２オクテット必要である。インターフレームギャップは、フレーム間を分離するために設けられている。
ｐｒｅａｍｂｌｅ＋ＦＳＤは７オクテットのｐｒｅａｍｂｌｅと１オクテットのＦＳＤ（フレームスタートデリミタ）にて構成されている。ｐｒｅａｍｂｌｅ＋ＦＳＤは、それ以後、Ｅｔｈｅｒパケットのペイロードがスタートすることを示すフラグ領域である。
【００９９】
ＩＥＥＥ１５８８ｖ２同期メッセージ（Ｓｙｎｃ  ｍｅｓｓａｓｇｅ）は、ＩＥＥＥ１５８８ｖ２にて規定されたフォーマットの同期メッセージが格納される領域である。ＩＥＥＥ１５８８ｖ２同期メッセージは、図８で示した複数の要素によって構成され、時刻情報をグランドマスタークロック装置１００からスレーブ装置４００に対して伝達する。ＩＥＥＥ１５８８ｖ２同期メッセージのサイズは固定長であり、ＵＤＰで同期メッセージを構成す場合は８６バイトである。
【０１００】
ＦＣＳはフレームチェックシーケンスであり、Ｅｔｈｅｒパケットのデータ領域から一意に算出されるチェックサム領域である。ＦＣＳは、伝送路上で何らかの障害が発生し、パケットのデータ領域を信頼できない場合に、当該パケットを破棄できるように設けられている。また、ＦＣＳは回線の品質を示す指標として用いられることもある。
【０１０１】
同期メッセージの要素を全て合わせると１１０オクテットのサイズとなる。また１オクテットは８ビットにて構成されるため、１１０オクテットは８８０ビットとなる。ここで８８０ビットがどの程度帯域に対する影響を及ぼすかを換算するために、１０ギガビット毎秒（Ｇｂｐｓ）、１ギガビット毎秒それぞれの回線レートで送信した場合のパケット占有時間を算出すると、１０ギガビット毎秒の場合は８８ナノ秒、１ギガビット毎秒の場合は８８０ナノ秒となる。ここで、同期メッセージは秒間最大１２８回発行可能であることがＩＴＵ−Ｔ  Ｇ．８２６５で規定されており、１秒／１２８回＝７，８１２，５００ナノ秒の間隔となる。従って、単一のスレーブ装置４００に対して時刻同期を行う場合、１０ギガビット毎秒、１ギガビット毎秒のいずれの回線レートにおいても問題なく同期メッセージを送出可能である。
【０１０２】
図１４は、複数のスレーブ装置４００が存在するネットワークにおける同期メッセージの送出間隔の例を示す説明図である。同図では、同期メッセージの送信間隔のワーストケースを示している。具体的には、最もネットワーク帯域がひっ迫する場合の例を示している。上記のように、各同期メッセージは、最短で７，８１２，５００ナノ秒の間隔となる。図１４では、この同期メッセージを５００個のスレーブ装置４００に対して送出するケースを示している。
【０１０３】
７，８１２，５００ナノ秒をさらにスレーブ装置４００の数である５００に分割する。１つのスレーブ装置４００に割り当て可能な同期メッセージの送信間隔は、７，８１２，５００ナノ秒÷５００＝１５，６２５ナノ秒である。この１５，６２５ナノ秒を同期メッセージに関する最小時間間隔として定義する。図１３を参照して説明したパケット占有時間のうち、回線速度が最も低速であり１つの同期メッセージの送信時間が最長となる１ギガビット毎秒においても、１５，６２５ナノ秒＞８８０ナノ秒となる。従って、同期メッセージに着目した場合、帯域を確保可能である。ただし、同期メッセージ以外の通信量に応じて、グランドマスタークロック装置１００が一度に制御するスレーブ装置４００の数×各スレーブ装置４００のＳＹＮＣ  ｉｎｔｅｒｖａｌの積を適切な値に配分することが必要である。なお、ＳＹＮＣ  ｉｎｔｅｒｖａｌは、スレーブ装置４００毎に設定可能である。
【０１０４】
図１４では、１秒の最初に１番目のＳｙｎｃスロットにＳｙｎｃＩＤ０を割り当て、最大１２７までＳｙｎｃＩＤがカウントアップする。ＳｙｎｃＩＤは、１２７となった後０になる。また同期メッセージを送出するタイミングを生成するためにＳＭＩＤを導入し、各ＳＭＩＤと対応付けて、スレーブ装置４００に関する情報を格納するエリアを設ける。
ＳＭＩＤは０〜４９９の正整数の値をとり、１５，６２５ナノ秒でカウントアップする構成とする。なお、同一のスレーブ装置４００に対する同期メッセージ情報には、必ず同一のＳＭＩＤを対応付ける必要がある。どのＳＭＩＤを利用するかは例えば、グランドマスタークロック装置１００の管理者が決定する。同期メッセージ間隔を一定にするために１つのスレーブ装置４００に対応するＳＭＩＤは一意である必要がある。
なお、ＳｙｎｃＩＤは、第１カウンターの例に該当する。ＳＭＩＤは、第２カウンターの例に該当する。
【０１０５】
図１５は、ＳＭＩＤテーブルのデータ構造の例を示す説明図である。
ＳＭＩＤテーブルはＳＭＩＤを登録する１１ビットの領域と、同期メッセージの送信間隔であるＳｙｎｃＩｎｔｅｒｖａｌ領域と、当該ＳＭＩＤに該当する同期メッセージを送出した際に次回の送出タイミングを決定するためのＮｅｘｔＩｎｔｅｒｖａｌと、１ずつデータがインクリメントされるｓｅｑｕｅｎｃｅＩＤとを含んで構成される。ＮｅｘｔＩｎｔｅｒｖａｌは、１２８÷ＳｙｎｃＩｎｔｅｒｖａｌによって決定される値であり同期メッセージの送出後にアップデートされる。ｓｅｑｕｅｎｃｅＩＤは読み込んだ値に１インクリメントして書き込まれるだけである。スレーブ装置４００では、このｓｅｑｕｅｎｃｅＩＤを用いてＳＹＮＣ  ｍｅｓｓｇｅの抜けや順序逆転が生じていないことを確認するために利用する。
【０１０６】
図１６は、スケジューラ１４１の動作の例を示す説明図である。スケジューラ１４１はハードウェアで構成されており、図１６のステップＳ１０１〜Ｓ１１０の処理と、ステップＳ１２０〜Ｓ１３０の処理とを並列に実行する。
プレシジョンタイムカウンターユニット１４２からの毎秒パルスを取得すると、スケジューラ１４１は、ステップＳ１０１を実行する。ステップＳ１０１では、スケジューラ１４１は、ＳｙｎｃＩＤ、ＳＭＩＤ、ＳＭＩＤ．ｃｏｕｎｔｅｒの３つのカウンターの０クリアを実行する。ＳＭＩＤ．ｃｏｕｎｔｅｒは、ＳＭＩＤを１インクリメントするタイミングを検出するためのカウンターである。
【０１０７】
ステップＳ１０２では、スケジューラ１４１は、同期メッセージを送信するタイミングが到来したか否かを判定する。具体的には、スケジューラ１４１は、ＳＭＩＤ．ｃｏｕｎｔｅｒの値が、ＳＭＩＤの時刻境界である１５，６２５ナノ秒か否かを判定する。ＳＭＩＤ．ｃｏｕｎｔｅｒの値が時刻境界であることは、同期メッセージを送信するタイミングであることを示している。
時刻境界であると判定した場合（ステップＳ１０２：ＹＥＳ）、ステップＳ１０３にて、スケジューラ１４１は、ＳＭＩＤを１インクリメントする。これにより、次のＳＭＩＤの処理へと移行する。
ステップＳ１０４では、スケジューラ１４１は、ＳＭＩＤ.ｃｏｕｎｔｅｒを０クリアし、ステップＳ１２０での処理のためにＳＭＩＤｐｕｌｓｅを発生させる。このＳＭＩＤｐｕｌｓｅは同期メッセージを送出する最小周期（１２８ＰＰＳ）が経過したことを示している。ステップＳ１０４の後、ステップＳ１０５へ遷移する。
【０１０８】
一方、ステップＳ１０２において、ＳＭＩＤ．ｃｏｕｎｔｅｒが１５，６２５ナノ秒に達していないと判定した場合（ステップＳ１０２：ＮＯ）、スケジューラ１４１は、ステップＳ１１０にて、ＳＭＩＤ．ｃｏｕｎｔｅｒを１インクリメントし、ステップＳ１０２へ遷移する。
ステップＳ１０５では、スケジューラ１４１は、ＳＭＩＤがその最大値である４９９に達したか否かを判定する。
【０１０９】
ＳＭＩＤが４９９に達していないと判定した場合（ステップＳ１０５：ＮＯ）、まだ未処理のＳＭＩＤが存在するためステップＳ１０２へ遷移する。
一方、ＳＭＩＤが４９９に達していると判定した場合（ステップＳ１０５：ＹＥＳ）、全てのＳＭＩＤ処理を完了したことを意味するので、スケジューラ１４１は、ステップＳ１０６にて、ＳＭＩＤ＝０つまり初期値に設定する。
【０１１０】
ステップＳ１０７では、スケジューラ１４１は、ＳｙｎｃＩＤを１インクリメントする。これにより、次のＳｙｎｃＩＤの処理へ進む。
ステップＳ１０８では、スケジューラ１４１は、全てのＳｙｎｃＩＤ処理が完了したか否かを判定する。具体的には、スケジューラ１４１は、ＳｙｎｃＩＤが１２７か否かを判定する。
ＳｙｎｃＩＤが１２７であると判定した場合（ステップＳ１０８：ＹＥＳ）、ステップＳ１０９にて、スケジューラ１４１は、ＳｙｎｃＩＤ＝０とする。ステップＳ１０９の後、ステップＳ１０２へ遷移する。
一方、ステップＳ１０８において、ＳｙｎｃＩＤが１２７以外であると判定した場合（ステップＳ１０８：Ｎｏ）、処理すべきＳｙｎｃＩＤが存在するため、ステップＳ１０２へ遷移する。
【０１１１】
ステップＳ１２０では、スケジューラ１４１は、ＳＭＩＤｐｕｌｓｅが発生しているか、つまり同期メッセージ送出タイミングが到来しているか否かを判定する。
同期メッセージ送出タイミングが到来していると判定した場合（ステップＳ１２０：ＹＥＳ）、ステップＳ１２１へ遷移する。
ステップＳ１２１では、スケジューラ１４１は、ＤＰＲＡＭのアドレスを、該ＳＭＩＤが格納されている先頭アドレスへと変換する。
【０１１２】
ステップＳ１２２では、スケジューラ１４１は、先頭アドレスが確定したオフセット値を元にＮｅｘｔＩｎｔｅｒｖａｌを取得する。
ステップＳ１２３では、スケジューラ１４１は、ステップＳ１２２で取得したＮｅｘｔＩｎｔｅｒｖａｌとＳｙｎｃＩＤとが同じか否かを判定する。同じではないと判定した場合（ステップＳ１２３：Ｎｏ）、ステップＳ１２０へ遷移する。これにより、ＳＭＩＤｐｕｌｓｅ待ち状態になる。
【０１１３】
一方、ＳｙｎｃＩＤとＮｅｘｔＩｎｔｅｒｖａｌとが同じであると判定した場合（ステップＳ１２３：Ｙｅｓ）、同期メッセージを送出するタイミングであり、ステップＳ１２４へ遷移する。
ステップＳ１２４では、スケジューラ１４１は、ＳＭＩＤテーブルよりＳｙｎｃＩｎｔｅｒｖａｌを読み込む。
ステップＳ１２５では、スケジューラ１４１は、現在のＮｅｘｔＩｎｔｅｒｖａｌを更新するために１２８÷ＳｙｎｃＩｎｔｅｒｖａｌを演算する。
【０１１４】
ステップＳ１２６では、スケジューラ１４１は、ＮｅｘｔＩｎｔｅｒｖａｌに１２８÷ＳｙｎｃＩｎｔｅｒｖａｌを加算した値をＳＭＩＤテーブルに書き込む。なお、加算の結果、ＮｅｘｔＩｎｔｅｒｖａｌの値が１２７よりも大きくなった場合は、当該値から１２８を減算した値を、ＳＭＩＤテーブルに書き込む。
ステップＳ１２７では、スケジューラ１４１は、ＳＭＩＤテーブルからｓｅｑｕｅｎｃｅＩＤを読み込む。
ｓｅｑｕｅｎｃｅＩＤは１ずつインクリメントされることがＩＥＥＥ１５８８ｖ２にて規定されているため、ステップＳ１２８では、スケジューラ１４１は、ｓｅｑｕｅｎｃｅＩＤのインクリメント処理を行う。
【０１１５】
ステップＳ１２９では、スケジューラ１４１は、ｓｅｑｕｅｎｃｅＩＤをＳＭＩＤテーブルへ書き戻す。
以上で一連の同期メッセージに関する処理が完了したので、ステップＳ１３０において、スケジューラ１４１は、同期メッセージ送信ＰｕｌｓｅをＳｙｎｃ生成部に送信し、ステップＳ１２０へ遷移する。
【０１１６】
図１７は、同期メッセージ送出時のデータの流れの例を示す説明図である。
同図において、送信ＦＩＦＯ１３３は、グランドマスタークロック装置１００からの全ての送信パケットのうち同期メッセージ以外のパケット（ＣＰＵパケット）が一時格納されるＦＩＦＯメモリである。
各パケットでは、パケット情報に加えてＳＯＦ（スタートオブフレーム）、ＥＯＦ（エンドオブフレーム）を前後に付けることでパケット間の切れ目を明確にしている。
ＴＦＩＦＯ.ＥｍｐｔｙＦｌａｇは送信ＦＩＦＯ１３３が空の状態を通知するフラグである。
【０１１７】
ＴＦＩＦＯ.ＲｅａｄＰｕｌｓｅは、ＦＩＦＯのリード側のビット幅（以後１ライン）を読み込むための１クロック（ＣＬＫ）のパルス信号である。連続してデータを送出する場合は、ＴＦＩＦＯ.ＲｅａｄＰｕｌｓｅを連続してアサートする場合もある。
ＴＦＩＦＯ．ＤＡＴＡは、ＴＦＩＦＯ.ＲｅａｄＰｕｌｓｅのパルス信号の１サイクル後に出力される、ＥＯＦ、ＳＯＦもしくは同期メッセージ以外のパケットデータである。
【０１１８】
ＳＹＮＣメッセージＦＩＦＯ１３９は、同期メッセージが格納される領域である。具体的には、ＳＹＮＣ生成部１３５が生成した同期メッセージが、ＳＹＮＣメッセージＦＩＦＯ１３９に格納される。
ＳＦＩＦＯ.ＥｍｐｔｙＦｌａｇは、同期メッセージの有無を示すフラグである。
ＳＦＩＦＯ．ＲｅａｄＰｕｌｓｅは、ＴＦＩＦＯ.ＲｅａｄＰｕｌｓｅと同一の動作をＳＹＮＣメッセージＦＩＦＯに対して行うリードパルスである。
【０１１９】
ＳＦＩＦＯ．ＤＡＴＡはリードパルスの１サイクル後に出力される、同期メッセージを構成する１ラインのデータである。
Ｓｙｎｃ送出部１３６は、（１）強制廃棄方式、（２）高優先送出方式、（３）送信時刻予約方式のいずれかを選択するＳｙｎｃ  Ｔｒａｎｓｍｉｔ  ｒｕｌｅ  ＩＤ領域を有する。そして、ＳＹＮＣ送出部１３６は、Ｓｙｎｃ  Ｔｒａｎｓｍｉｔ  ｒｕｌｅ  ＩＤ領域に設定されているルールに従って送信ＦＩＦＯ１３３もしくはＳＹＮＣメッセージＦＩＦＯ１３９の何れかからパケットデータを読み出す。そして、Ｓｙｎｃ送出部１３６は、送信データと、送信データが有効であることを示すＤａｔａＥｎａｂｌｅとを、後段の処理ブロックである送信タイムスタンプユニット１３７へ出力する。
【０１２０】
図１８は、強制廃棄方式の場合にＳｙｎｃ送出部１３６が行う動作の例を示す説明図である。
ステップＳ２０１では、Ｓｙｎｃ送出部１３６は、カウンター等のリセットを行い、ＯＳからのＳＹＮＣ送信開始信号を待ち受ける。
次に、ステップＳ２０２へ遷移し、ＳＹＮＣ送出部１３６は、ＤａｔａＥｎａｂｌｅ＝０を設定する。以上が前処理である。
【０１２１】
ステップＳ２０３では、ＳＹＮＣ送出部１３６は、ＳＦＩＦＯ.ＥｍｐｔｙＦｌａｇを参照して同期メッセージの有無を判定する。同期メッセージが存在すると判定した場合（ステップＳ２０３：Ｎｏｔ  Ｅｍｐｔｙ）、ステップＳ２０４へ遷移し、と進み、送信データとして、同期メッセージであるＳＦＩＦＯ．ＤＡＴＡを選択する。
Ｓ２０５にて、ＳＹＮＣ送出部１３６は、ＤａｔａＥｎａｂｌｅ＝１を設定する。
その後、ステップＳ２０３へと進み、同期メッセージの送出完了まで送出処理を継続する。
【０１２２】
一方、ステップＳ２０３において同期メッセージが存在しないと判定した場合（ステップＳ２０３：Ｅｍｐｔｙ）、ステップＳ２１０へと進み、ＴＦＩＦＯ．ＥｍｐｔｙＦｌａｇを参照して送信ＦＩＦＯ１３３が空か否かを判定する。
送信ＦＩＦＯ１３３が空であると判定した場合（ステップＳ２１０：Ｅｍｐｔｙ）、ステップＳ２０２へ遷移する。
【０１２３】
一方、送信ＦＩＦＯ１３３が空でないと判定した場合（ステップＳ２１０：Ｎｏｔ  Ｅｍｐｔｙ）、ステップＳ２１１へ遷移し、ＳＹＮＣ送出部１３６は、送信データ＝ＴＦＩＦＯ．ＤＡＴＡとする。
ステップＳ２１２では、ＳＹＮＣ送出部１３６は、ＤＡＴＡＥｎａｂｌｅ＝１とし同期メッセージ以外のパケット送信処理（すなわち、ＣＰＵパケットの送信処理）を実行する。
【０１２４】
ステップＳ２１３では、ＳＹＮＣ送出部１３６は、ＳＦＩＦＯ.ＥｍｐｔｙＦｌａｇを参照して同期メッセージの有無を判定する。
同期メッセージが存在しないと判定した場合（ステップＳ２１３：Ｅｍｐｔｙ）、ＳＹＮＣ送出部１３６は、同期メッセージ以外のパケット送出処理を継続する。
一方、同期メッセージが存在すると判定した場合（ステップＳ２１３：Ｎｏｔ  Ｅｍｐｔｙ）、ステップＳ２０４とステップＳ２１３とに処理を分岐する。なお、ステップＳ２０４以降の処理とステップＳ２１３以降の処理をと同時並行処理にて実行する。
【０１２５】
ステップＳ２１４において、ＳＹＮＣ送出部１３６は、送信ＦＩＦＯ１３３のデータを廃棄する（ＴＦＩＦＯ．ＤＡＴＡ＝廃棄）。
ステップＳ２１５において、ＳＹＮＣ送出部１３６は、送信ＦＩＦＯ１３３からのデータリードは継続処理する。
ステップＳ２１６において、ＳＹＮＣ送出部１３６は、送信ＦＩＦＯ１３３から読み出したデータがＥＯＦ（ＴＦＩＦＯ.ＤＡＴＡ＝ＥＯＦ）か否かを判定する。
【０１２６】
ＥＯＦであったと判定した場合（ステップＳ２１６：ＥＯＦ）、ステップＳ２０３へ遷移する。
一方、ＥＯＦ以外であったと判定した場合（ステップＳ２１６：Ｎｏｔ  ＥＯＦ）、ステップＳ２１４へ遷移する。この場合、送信ＦＩＦＯ１３３から１パケットのデータを読み出すまで（ＥＯＦまで）、ステップＳ２１４〜Ｓ２１６のループにて廃棄処理を継続する。
【０１２７】
図１９は、高優先送出方式の場合にＳｙｎｃ送出部１３６が行う動作の例を示す説明図である。
ステップＳ３０１では、Ｓｙｎｃ送出部１３６は、カウンター等のリセットを行い、ＯＳからのＳＹＮＣ送信開始信号を待ち受ける。
ステップＳ３０２では、ＳＹＮＣ送出部１３６は、ＤａｔａＥｎａｂｌｅ＝０とする。
【０１２８】
ステップＳ３０３では、ＳＹＮＣ送出部１３６は、ＳＦＩＦＯ．ＥｍｐｔｙＦｌａｇを参照して同期メッセージが存在するか否かを判定する。同期メッセージが存在すると判定した場合（ステップＳ３０３：Ｎｏｔ  Ｅｍｐｔｙ）、ステップＳ３０４〜Ｓ３０５にて同期メッセージの送信を実施する。
一方、ステップＳ３０３において同期メッセージが存在しないと判定した場合（ステップＳ３０３：Ｅｍｐｔｙ）、ステップＳ３１０へ遷移する。
【０１２９】
ステップＳ３１０では、ＳＹＮＣ送出部１３６は、ＴＦＩＦＯ．ＥｍｐｔｙＦｌａｇを参照して送信ＦＩＦＯ１３３にデータ（同期メッセージ）が存在するか否かを判定する。送信ＦＩＦＯ１３３が空である（同期メッセージが存在しない）と判定した場合（ステップＳ３１０：Ｅｍｐｔｙ）、ステップＳ３０３へと移行する。
一方、送信ＦＩＦＯ１３３にデータが存在すると判定した場合（ステップＳ３１０：Ｎｏｔ  Ｅｍｐｔｙ）、ステップＳ３１１、Ｓ３１２及びＳ３１３にて一般メッセージを送出処理する。
【０１３０】
ステップＳ３１３では、ＳＹＮＣ送出部１３６は、ＴＦＩＦＯ．ＤＡＴＡを参照してＥＯＦか否かを判定する。ＥＯＦであると判定した場合（ステップＳ３１３：ＥＯＦ）、ステップＳ３０２へ遷移する。
一方、ＥＯＦ以外であると判定した場合（ステップＳ３１３：Ｎｏｔ  ＥＯＦ）、ステップＳ３１０へ遷移する。
【０１３１】
図２０は、送信時刻予約方式の場合にＳｙｎｃ送出部１３６が行う動作の例を示す説明図である。
送信時刻予約方式では、同期メッセージを、ＩＰｖ４の最大パケットサイズである１５４２オクテット時間待ちの後に送出開始する。同期メッセージが存在するｗａｉｔ状態ではＷａｉｔＦｌａｇ＝１となる。ＷａｉｔＦｌａｇは、通常パケット（ＣＰＵパケット）の送出開始時にのみ評価が実施され、ＷａｉｔＦｌａｇ＝１の場合は、通常パケットは送信抑制状態となる。一方、通常パケットの送信中にはＷａｉｔＦｌａｇの評価は行われない。また、送信時刻予約方式では、同期メッセージの状態監視と、ＷａｉｔＦｌａｇの操作とを行う第１のルーチンと、通常パケットの送信開始時にＷａｉｔＦｌａｇ＝０であれば送出を開始する第２のルーチンとが同時に実行される。
【０１３２】
図２０の処理において、ステップＳ４０１、ステップＳ４２０のそれぞれでは、Ｓｙｎｃ送出部１３６は、カウンター等のリセットを行い、ＯＳからのＳＹＮＣ送信開始信号を待ち受ける。なお、ステップＳ４０１のＳＴＡＲＴ１ステートと、ステップＳ４２０のＳＴＡＲＴ２ステートは同時に開始されるものとする。
【０１３３】
ステップＳ４０２では、ＳＹＮＣ送出部１３６は、ＤａｔａＥｎａｂｌｅ＝０とする。
ステップＳ４０３では、ＳＹＮＣ送出部１３６は、ＷａｉｔＦｌａｇ＝０とする。
ステップＳ４０４では、ＳＹＮＣ送出部１３６は、ＳＦＩＦＯ．ＥｍｐｔｙＦｌａｇを参照し、同期メッセージが存在するか否かを判定する。
同期メッセージが存在すると判定した場合（ステップＳ４０４：Ｎｏｔ  Ｅｍｐｔｙ）、ステップＳ４０５へ遷移する。
【０１３４】
一方、同期メッセージが存在しない（ＳＹＮＣメッセージＦＩＦＯ１３９が空である）と判定した場合（ステップＳ４０４：Ｅｍｐｔｙ）、ステップＳ４０４へ遷移する。すなわち、ステップＳ４０４を再評価するループ処理を実行する。
【０１３５】
ステップＳ４０５では、ＳＹＮＣ送出部１３６は、ＳｅｎｄＷａｉｔ＝１５４２を代入し、処理をステップＳ４０６へと進める。
ステップＳ４０６では、ＳＹＮＣ送出部１３６は、ＷａｉｔＦｌａｇ＝１をセットし処理をステップＳ４０７へと進める。
ステップＳ４０７では、ＳＹＮＣ送出部１３６は、ＳｅｎｄＷａｉｔを１減算する。
ステップＳ４０８では、ＳＹＮＣ送出部１３６は、ＳｅｎｄＷａｉｔが０か否かを判定する。ＳｅｎｄＷａｉｔが０でないと判定した場合（ステップＳ４０８：Ｎｏ）、ステップＳ４０７へ遷移する。この場合、ＳｅｎｄＷａｉｔ＝０となるまでステップＳ４０７〜Ｓ４０８のループ処理を実行する。
【０１３６】
ステップＳ４０８においてＳｅｎｄＷａｉｔ＝０となったと判定した場合（ステップＳ４０８：Ｙｅｓ）、ステップＳ４０９へ遷移する。
ステップＳ４０９では、ＳＹＮＣ送出部１３６は、送信データとして同期メッセージを選択する（送信データ＝ＳＦＩＦＯ．ＤＡＴＡ）。
ステップＳ４１０では、ＳＹＮＣ送出部１３６は、ＤａｔａＥｎａｂｌｅ＝１とする。
【０１３７】
ステップＳ４１１では、ＳＹＮＣ送出部１３６は、ＳＦＩＦＯ．ＥｍｐｔｙＦｌａｇを参照して送信ＦＩＦＯ１３３が空か否かを判定する。
送信ＦＩＦＯ１３３が空であると判定した場合（ステップＳ４１１：Ｅｍｐｔｙ）、ステップＳ４０２遷移する。
一方、送信ＦＩＦＯ１３３が空でない（同期メッセージが存在する）と判定した場合（ステップＳ４１１：Ｎｏｔ  Ｅｍｐｔｙ）、ステップＳ４０８へと遷移する。この場合、同期メッセージの送信を継続する。
【０１３８】
ステップＳ４２１では、ＳＹＮＣ送出部１３６は、ＴＦＩＦＯ．ＥｍｐｔｙＦｌａｇを参照して送信ＦＩＦＯ１３３が空か否かを判定する。
送信ＦＩＦＯ１３３が空であると判定した場合（ステップＳ４２１：Ｅｍｐｔｙ）、ステップＳ４２１へ遷移する。すなわち、ステップＳ４２１を再評価するループ処理を実行する。
【０１３９】
一方、送信ＦＩＦＯ１３３が空でないと判定した場合（ステップＳ４２１：Ｎｏｔ  Ｅｍｐｔｙ）、すなわち一般メッセージが存在すると判定した場合は、ステップＳ４２２へ遷移する。
ステップＳ４２２では、ＳＹＮＣ送出部１３６は、ＷａｉｔＦｌａｇが０か否かを判定する。ＷａｉｔＦｌａｇが０でない（ＷａｉｔＦｌａｇ＝１）と判定した場合（ステップｓ４２２：Ｎｏ）、すなわち同期メッセージの送出待ち時間となっている場合、ステップＳ４２１へ遷移する。
ＷａｉｔＦｌａｇ＝０であると判定した場合（ステップＳ４２２：Ｙｅｓ）、すなわち同期メッセージの送出待ち時間ではないと判定した場合、ステップＳ４２３へと進む。
ステップＳ４２３において、ＳＹＮＣ送出部１３６は、送信データとして、一般メッセージであるＴＦＩＦＯ．ＤＡＴＡを選択する。
ステップＳ４２４において、ＤａｔａＥｎａｂｌｅ＝１とする。
その後、ステップＳ４２５において、ＳＹＮＣ送出部１３６は、ＴＦＩＦＯ．ＤＡＴＡ＝ＥＯＦか否かを判定する。
ＥＯＦであると判定した場合（ステップＳ４２５：ＥＯＦ）、ステップＳ４２６へ遷移する。一方、ＥＯＦ以外であると判定した場合（ステップＳ４２５：Ｎｏｔ  ＥＯＦ）、ステップＳ４２３へ遷移する。この場合、ＣＰＵパケット（同期メッセージ以外のパケット）の送出を継続する。
ステップＳ４２６では、ＳＹＮＣ送出部１３６は、ＤａｔａＥｎａｂｌｅ＝０をセットし、ステップＳ４２１へ遷移する。
【０１４０】
図２１は、送信時刻予約方式にて送信待ち受けがどの程度発生するかを示す説明図である。
同図に示すパケットの構成要素は図１３の場合と同様であり、説明を省略する。
図２１において、ＳＭＩＤｓｌｏｔ長とは、秒間１２８発の同期メッセージを５００台のｓｌａｖｅに送信することを想定した場合に、１つの同期メッセージに割り当てることが可能な時間間隔である。ＳＭＩＤｓｌｏｔ長＝１５，６２５ｎｓは、同期メッセージ送信間隔の最小値が１５，６２５ナノ秒であることを表す。
また１５４２オクテットのパケットはＩＰｖ４の最大パケット長を有するパケットを示している。１５４２オクテットは、１２３３６ビットであり、回線速度が１０Ｇｂｐｓの場合、送信に要する時間は１２３４ナノ秒である。また、回線速度が１０Ｇｂｐｓの場合、当該パケットの送信に要する時間は１２３３６ナノ秒である。いずれも、１５６２５ナノ秒よりも短く、同期メッセージ送信間隔にて送信可能である。
【０１４１】
以上のように、Ｓｙｎｃ送出部１３６は、スケジューラ１４１が同期メッセージの送出タイミングであると判定すると、同期メッセージ以外メッセージである一般メッセージの新たな送出を抑制する。
これにより、Ｓｙｎｃ送出部１３６は、送出対象の一般メッセージが複数ある場合でも、同期メッセージを優先的に送出することができる。この点において、グランドマスタークロック装置１００は、同期メッセージ（例えば、時刻同期パケット）の送信と一般メッセージ（例えば、時刻同期パケット以外のパケット）の送信とで別々のネットワークアドレス（例えば、ＩＰアドレス）を用いる必要無しに、同期メッセージの送出間隔の揺らぎを低減させることができる。
【０１４２】
また、ＳｙｎｃＩＤは、同一のスレーブ装置４００に対する同期メッセージ送信間隔の最小値として規定されている間隔毎にカウント（１インクリメント）する。ＳＭＩＤは、同一のスレーブ装置４００に対する同期メッセージ送信間隔の最小値を時刻同期対象機器の数でさらに分割した間隔毎にカウント（１インクリメント）する。そして、スケジューラ１４１は、ＳＭＩＤが示すスレーブ装置４００に対して同期メッセージを送出するタイミングか否かをＳｙｎｃＩＤの値に基づいて判定する。
これにより、スケジューラ１４１は、ＳｙｎｃＩＤの値と、ＳＭＩＤが示すスレーブ装置４００に対応付けられた値とを比較するという簡単な処理で、同期メッセージ送出タイミングを検出することができる。
【０１４３】
また、Ｓｙｎｃ送出部１３６が同期メッセージを送出するモードとして、スケジューラ１４１が同期メッセージの送出タイミングであると判定すると、新たな一般メッセージの送出を抑制するモードと、スケジューラ１４１が同期メッセージの送出タイミングであると判定すると、一般メッセージを送出中である場合は、当該一般メッセージの送出を中断して、同期メッセージを送出するモード、および、スケジューラ１４１が同期メッセージの送出タイミングであると判定すると、新たな同期メッセージ及び一般メッセージの送出を抑制し、一般メッセージの送出に要する時間として規定されている規定時間が経過した後、同期メッセージを送出するモードのいずれかまたは両方と、のうちいずれかのモードを選択可能である。なお、規定時間は、メッセージの送出に要する最長時間であってもよい。
これにより、ユーザは、グランドマスタークロック装置１００の運用状況に応じて、上記のモードのいずれかを選択することができる。
【０１４４】
なお、以上では図１２に示すように、同期メッセージ送出タイミングの検出と、同期メッセージの生成と、同期メッセージおよび一般メッセージの送出と、の各処理をＭＡＣ部１３０が行う場合を例に説明したが、これらの処理の全部または一部をＣＰＵ１７０（図６）が行うようにしてもよい。例えば、ＯＳカーネル１７３が、これらの処理の全部または一部を行うようにしてもよい。
【０１４５】
なお、本発明は、いろいろな時刻同期の場面に適用可能である。例えば、以下に本発明を適用するようにしてもよい。
１．携帯基地局間の時刻同期、周波数同期に用いる本願記載のＧＭＣ装置
２．センサーネットワークの各センサの時刻、周波数同期に用いる本願記載のＧＭＣ装置
３．電力変電所の保護リレー装置の作動時刻同期に用いる本願記載のＧＭＣ装置
４．オーディオ、ビデオなどＡＶ分野におけるカメラ、記録機器、映像、ビデオ信号伝送装置、管理コンソール、サーバ群の時刻と、周波数の同期に用いつ本願記載のＧＭＣ装置
５．自動車内ネットワークにおける時刻、周波数同期に用いる本願記載のＧＭＣ装置
６．ＳＤＮ，ＮＦＶなど複数装置で構成され中央集権設定が実行される環境における時刻、周波数同期に用いる本願記載のＧＭＣ装置
７．ＱｏＳ（Quality Of Service）を実現するための機構に用いる本願記載のＧＭＣ装置
【０１４６】
なお、グランドマスタークロック装置１００の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
【０１４７】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【０１４８】
１００  グランドマスタークロック装置
１１０  ＧＮＳＳ同期型周波数発振器
１１１  ＧＮＳＳ受信機
１１２  クロック調整器
１１３  水晶振動子
１２０  物理層チップ
１３０  メディアアクセスコントローラ部
１３１  受信タイムスタンプユニット
１３２  受信ＦＩＦＯ
１３３  送信ＦＩＦＯ
１３４  Ｓｙｎｃプロファイル記憶部
１３４−１  グローバルプロファイル記憶部
１３４−２  ＳＭＩＤプロファイル記憶部
１３４−３  ＳＭＩＤテーブル記憶部
１３５  Ｓｙｎｃ生成部
１３６  Ｓｙｎｃ送出部
１３７  送信タイムスタンプユニット
１３９  Ｓｙｎｃ  ｍｅｓｓａｇｅ  ＦＩＦＯ
１４１  スケジューラ
１４２  プレシジョンタイムカウンターユニット
１５０  水晶振動子
１６０  メインメモリ
１７０  ＣＰＵ
１７１  ハードウェアアクセス部
１７２  ドライバ
１７３  ＯＳカーネル
１７４  ＧＮＳＳ管理デーモン
１７５  プロトコルスタック
１７６  Ｄｅｌａｙｒｅｑ送出処理部
１７７  Ｓｙｎｃ登録処理部
１８１  メモリコントローラ
【図１】
0006516215.tif 000002
【図２】
0006516215.tif 000003
【図３】
0006516215.tif 000004
【図４】
0006516215.tif 000005
【図５】
0006516215.tif 000006
【図６】
0006516215.tif 000007
【図７】
0006516215.tif 000008
【図８】
0006516215.tif 000009
【図９】
0006516215.tif 000010
【図１０】
0006516215.tif 000011
【図１１】
0006516215.tif 000012
【図１２】
0006516215.tif 000013
【図１３】
0006516215.tif 000014
【図１４】
0006516215.tif 000015
【図１５】
0006516215.tif 000016
【図１６】
0006516215.tif 000017
【図１７】
0006516215.tif 000018
【図１８】
0006516215.tif 000019
【図１９】
0006516215.tif 000020
【図２０】
0006516215.tif 000021
【図２１】
0006516215.tif 000022