(57)【特許請求の範囲】
【請求項１】
外部時計の時刻である外部時刻を取得する時刻取得部と、
前記時刻取得部によって取得された前記外部時刻を時刻変換装置に送信して、前記外部時刻が内部時計の管理範囲外の時刻である場合に前記外部時刻を前記内部時計の管理範囲内の時刻である固有時刻に変換させ、前記固有時刻を前記内部時計に設定する内部時計設定部と
を備える時刻同期装置。
【請求項２】
前記内部時計は、前記外部時刻と一定時間の間隔を保つ
請求項１記載の時刻同期装置。
【請求項３】
前記内部時計は、３２ｂｉｔ版のＬｉｎｕｘ（登録商標）の時刻管理変数の範囲で動作する
請求項１又は２に記載の時刻同期装置。
【請求項４】
前記時刻同期装置は、さらに、
前記内部時計が示す時刻である内部時刻を前記時刻変換装置に送信して、前記外部時刻を前記固有時刻に変換した処理の逆の処理を行うことにより、前記内部時刻を参照時刻に変換させる内部時計参照部
を備える請求項１から３までのいずれか１項に記載の時刻同期装置。
【請求項５】
前記外部時刻と前期固有時刻との差を変換時間とし、
前記変換時間は、前記外部時刻の時刻系によらない定期的な時刻の変動である定期変動の回数が同じになるように設定される
請求項１から４までのいずれか１項に記載の時刻同期装置。
【請求項６】
前記固有時刻は、前記外部時刻との間に不定期な時刻の変動である不定期変動が発生する場合には、前記不定期変動により変動する時間分、前記外部時刻が変換されて得られる
請求項３から５までのいずれか１項に記載の時刻同期装置。
【請求項７】
時刻取得部が、外部時計の時刻である外部時刻を取得し、
内部時計設定部が、前記外部時刻を時刻変換装置に送信して、前記外部時刻が内部時計の管理範囲外の時刻である場合に前記外部時刻を前記内部時計の管理範囲内の時刻である固有時刻に変換させ、前記固有時刻を前記内部時計に設定する時刻同期方法。
【請求項８】
外部時計の時刻である外部時刻を取得する時刻取得処理と、
前記時刻取得処理によって取得された前記外部時刻を時刻変換装置に送信して、前記外部時刻が内部時計の管理範囲外の時刻である場合に前記外部時刻を前記内部時計の管理範囲内の時刻である固有時刻に変換させ、前記固有時刻を前記内部時計に設定する内部時計設定処理と
を行う時刻同期装置としてコンピュータを機能させる時刻同期プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、外部時計から取得された外部時刻に内部時計を同期させる技術に関する。
【背景技術】
【０００２】
外部時計から取得された外部時刻により内部時計を更新することにより、外部時計に内部時計を同期させる技術がある。【０００３】
特許文献１には、外部時計から取得された外部時刻と、内部時計の時刻との比較結果に基づいて時刻修正することが記載されている。特許文献１では、これにより、内部時計の信頼性の向上を図っている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−１７８６６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
装置が管理可能な時刻の範囲である管理範囲に制限がある場合がある。具体例としては、３２ｂｉｔ版のＬｉｎｕｘ（登録商標）では、２０３８年を迎えると時刻管理変数がオーバフローしてしまい、管理範囲外になってしまう。この３２ｂｉｔ版のＬｉｎｕｘ（登録商標）において２０３８年を迎えると時刻管理変数がオーバフローしてしまう問題は２０３８年問題と呼ばれる。【０００６】
管理範囲に制限がある場合に、単純に外部時刻により内部時計を更新してしまうと、内部時計が正しく更新されない場合がある。内部時計が正しく更新されないと、装置が正しい動作を継続できなくなってしまう。
この発明は、管理範囲に制限がある場合にも、適切に時刻を同期可能にすることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係る時刻同期装置は、
外部時計の時刻である外部時刻を取得する時刻取得部と、
前記時刻取得部によって取得された前記外部時刻を時刻変換装置に送信して、前記外部時刻を内部時計の管理範囲内の時刻である固有時刻に変換させ、前記固有時刻を前記内部時計に設定する内部時計設定部と
を備える。
【発明の効果】
【０００８】
この発明では、外部時刻を内部時計の管理範囲内の時刻である固有時刻に変換させた上で、内部時計に設定する。これにより、内部時計に管理範囲外の時刻が設定されることがなく、適切に時刻を同期可能になる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係る時刻同期装置１０のハードウェア構成図。
【図２】実施の形態１に係る時刻同期装置１０の機能構成図。
【図３】実施の形態１に係る時刻同期装置１０の変形例についての機能構成図。
【図４】実施の形態１に係る時刻同期装置１０が内部時計１４の時刻を外部時計５１の時刻と同期させる処理のフローチャート。
【図５】実施の形態１に係る時刻変換処理のフローチャート。
【図６】実施の形態１に係る時刻同期装置１０が内部時計１４の時刻を使用する処理のフローチャート。
【図７】実施の形態１に係る時刻逆変換処理のフローチャート。
【図８】実施の形態１に係る時刻同期装置１０の効果の説明図。
【図９】実施の形態２に係る時刻変換処理のフローチャート。
【図１０】実施の形態２に係る時刻同期装置１０が内部時計１４の時刻をＮＴＰサーバの外部ＮＴＰ時刻と同期させる処理の説明図。
【図１１】実施の形態２に係る変換時間の設定方法の説明図。
【図１２】ＮＴＰ（Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）時刻及びＵＮ時刻の説明図。
【図１３】実施の形態２に係る時刻逆変換処理のフローチャート。
【図１４】実施の形態２に係る時刻同期装置１０の効果の説明図。
【図１５】実施の形態３に係る時刻同期装置１０が内部時計１４の時刻をＰＴＰ（Ｐｒｅｃｉｓｉｏｎ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）マスタの外部ＰＴＰ時刻と同期させる処理のフローチャート。
【図１６】実施の形態３に係る時刻同期装置１０が内部時計１４の時刻をＰＴＰマスタの外部ＰＴＰ時刻と同期させる処理の説明図。
【図１７】実施の形態３に係る時刻変換処理のフローチャート。
【図１８】ＮＴＰ時刻とＵＮ時刻とＰＴＰ時刻との説明図。
【発明を実施するための形態】
【００１０】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１を参照して、実施の形態１に係る時刻同期装置１０のハードウェア構成を説明する。
時刻同期装置１０は、時刻配信装置５０から時刻情報を取得し、時刻同期を行う装置である。時刻同期装置１０は、クロック発信機１１と、プロセッサ１２と、ＮＩＣ１３（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）と、内部時計１４と、メインメモリ１５と、ペリフェラル１６とのハードウェアを備える。プロセッサ１２は、他のハードウェアと信号線１７を介して接続されている。
【００１１】
クロック発信機１１は、プロセッサ１２に動作クロックを供給する素子又は装置である。プロセッサ１２は、時刻同期等のソフトウェアの処理を行う素子又は装置である。ＮＩＣ１３は、時刻配信装置５０といった外部の装置とパケットの送受信を行う素子又は装置である。内部時計１４は、時刻同期装置１０における内部時刻を保持する素子又は装置である。メインメモリ１５は、ソフトウェアの処理に必要な命令及びデータを保持する素子又は装置である。ペリフェラル１６は、時刻同期装置１０の入出力を行う素子又は装置である。
【００１２】
時刻配信装置５０は、外部時計５１を備え、伝送路６１を介して接続された装置からの要求に応じて、外部時計５１の時刻である外部時刻を配信する装置である。外部時計５１は、正確な時間を常に保持している素子又は装置である。
【００１３】
図２を参照して、実施の形態１に係る時刻同期装置１０の機能構成を説明する。
時刻同期装置１０は、機能構成要素として、時刻取得部２１と、内部時計設定部２２と、時刻管理部２３と、内部時計参照部２４と、時刻使用部２５と、時刻変換部２６と、時刻逆変換部２７とを備える。内部時計設定部２２は、変換後取得部２２１を備える。また、内部時計参照部２４は、逆変換後取得部２４１を備える。
各機能構成要素の機能は、ソフトウェアによって実現される。具体的には、各機能構成要素の機能を実現するプログラムがプロセッサ１２によってメインメモリ１５に読み込まれ、プロセッサ１２によって実行される。これにより、各機能構成要素の機能が実現される。なお、各機能構成要素の機能を実現するプログラムは、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）といった記憶媒体に記憶されており、ペリフェラル１６を介して読み込まれる。
【００１４】
時刻変換部２６と時刻逆変換部２７とは、時刻変換装置４０の機能構成要素である。図２では、時刻同期装置１０が時刻変換装置４０を備える構成になっている。しかし、図３に示すように、時刻変換装置４０は、時刻同期装置１０と別の装置として構成されてもよい。この場合には、時刻同期装置１０と時刻変換装置４０とは伝送路６２を介して接続される。
【００１５】
時刻取得部２１は、時刻配信装置５０から外部時計５１の外部時刻を取得する機能である。内部時計設定部２２は、時刻取得部２１によって取得された外部時刻が時刻変換部２６によって変換されて得られた固有時刻を内部時計１４に設定する機能である。変換後取得部２２１は、内部時計設定部２２と時刻変換部２６との間で時刻を受け渡す機能である。時刻管理部２３は、内部時計１４を管理する機能である。
内部時計参照部２４は、内部時計１４を参照し、内部時計が示す時刻である内部時刻が時刻逆変換部２７によって変換されて得られた参照時刻を取得する機能である。逆変換後取得部２４１は、内部時計参照部２４と時刻逆変換部２７との間で時刻を受け渡す機能である。時刻使用部２５は、内部時計参照部２４によって取得された参照時刻を使用する機能である。
時刻変換部２６は、時刻を変換時間だけずらす変換を行う機能である。時刻逆変換部２７は、時刻変換部２６とは逆方向に、時刻を変換時間だけずらす逆変換を行う機能である。
【００１６】
＊＊＊動作の説明＊＊＊
図４から図７を参照して、実施の形態１に係る時刻同期装置１０の動作を説明する。
実施の形態１に係る時刻同期装置１０の動作手順は、実施の形態１に係る時刻同期方法に相当する。また、実施の形態１に係る時刻同期装置１０の動作を実現するプログラムは、実施の形態１に係る時刻同期プログラムに相当する。
【００１７】
図４を参照して、実施の形態１に係る時刻同期装置１０が内部時計１４の時刻を外部時計５１の時刻と同期させる処理を説明する。
（ステップＳ１１：時刻取得処理）
時刻取得部２１は、ＮＩＣ１３を介して、時刻配信装置５０から外部時計５１の外部時刻を取得する。時刻取得部２１は、取得された外部時刻をメインメモリ１５に書き込む。
【００１８】
（ステップＳ１２：時刻変換処理）
内部時計設定部２２は、変換後取得部２２１を介して、ステップＳ１１で取得された外部時刻を時刻変換部２６に送信して、外部時刻を内部時計１４の管理範囲内の時刻である固有時刻に変換させる。
【００１９】
（ステップＳ１３：内部時計設定処理）
内部時計設定部２２は、ステップＳ１２で変換されて得られた固有時刻を時刻管理部２３に受け渡すことにより、固有時刻を内部時計１４に設定する。
【００２０】
一定時間経過後に、処理が再びステップＳ１１に戻される。これにより、一定時間経過後に再び内部時計１４の時刻が外部時計５１の時刻と同期される。
【００２１】
図５を参照して、実施の形態１に係る時刻変換処理（図４のステップＳ１２）を説明する。
（ステップＳ２１：時刻送信処理）
内部時計設定部２２は、ステップＳ１１で取得された外部時刻をメインメモリ１５から読み出す。内部時計設定部２２は、変換後取得部２２１を介して、外部時刻を時刻変換部２６に送信する。時刻変換部２６は、送信された外部時刻を取得する。
【００２２】
（ステップＳ２２：変換処理）
時刻変換部２６は、ステップＳ２１で取得された外部時刻に、変換時間を加算することにより、外部時刻を固有時刻に変換する。変換時間は、時刻を未来に進める場合は正の時間であり、時刻を過去に戻す場合は負の時間である。
【００２３】
（ステップＳ２３：時刻返却処理）
時刻変換部２６は、ステップＳ２２で変換されて得られた固有時刻を変換後取得部２２１に送信する。内部時計設定部２２は、変換後取得部２２１を介して、送信された固有時刻を取得する。
【００２４】
図６を参照して、実施の形態１に係る時刻同期装置１０が内部時計１４の時刻を使用する処理を説明する。
（ステップＳ３１：時刻読出処理）
内部時計参照部２４は、時刻管理部２３に要求することにより、内部時計１４が示す時刻である内部時刻を読み出す。内部時計参照部２４は、読み出された内部時刻をメインメモリ１５に書き込む。
【００２５】
（ステップＳ３２：時刻逆変換処理）
内部時計参照部２４は、逆変換後取得部２４１を介して、ステップＳ３１で読み出された内部時刻を時刻逆変換部２７に送信して、外部時刻を固有時刻に変換した処理の逆の処理を行うことにより、内部時刻を参照時刻に変換させる。
【００２６】
（ステップＳ３３：時刻使用処理）
時刻使用部２５は、ステップＳ３２で変換されて得られた参照時刻を用いて処理を行う。これにより、時刻使用部２５は、内部時計１４が示す内部時刻ではなく、内部時刻が変換されて得られた参照時刻を用いて処理を行うことになる。
【００２７】
図７を参照して、実施の形態１に係る時刻逆変換処理（図６のステップＳ３２）を説明する。
（ステップＳ４１：時刻送信処理）
内部時計参照部２４は、ステップＳ３１で読み出された内部時刻をメインメモリ１５から読み出す。内部時計参照部２４は、逆変換後取得部２４１を介して、内部時刻を時刻逆変換部２７に送信する。時刻逆変換部２７は、送信された内部時刻を取得する。
【００２８】
（ステップＳ４２：逆変換処理）
時刻逆変換部２７は、ステップＳ４１で取得された内部時刻から、変換時間を減算することにより、内部時刻を参照時刻に変換する。
【００２９】
（ステップＳ４３：時刻返却処理）
時刻逆変換部２７は、ステップＳ４２で変換されて得られた参照時刻を逆変換後取得部２４１に送信する。内部時計参照部２４は、逆変換後取得部２４１を介して、送信された参照時刻を取得する。
【００３０】
＊＊＊実施の形態１の効果＊＊＊
以上のように、実施の形態１に係る時刻同期装置１０は、外部時刻を内部時計の管理範囲内の時刻である固有時刻に変換させた上で、内部時計１４に設定する。これにより、内部時計に管理範囲外の時刻が設定されることがなく、適切に時刻を同期可能になる。
【００３１】
また、実施の形態１に係る時刻同期装置１０は、内部時計１４が示す時刻である内部時刻を、外部時刻を固有時刻に変換した処理の逆の処理を行うことにより、参照時刻に変換した上で使用する。これにより、外部時刻と同期した時刻を用いて処理を行うことができる。
【００３２】
図８を参照して、実施の形態１に係る時刻同期装置１０の効果を説明する。
図８では、時刻同期装置１０が外部時計５１と時刻同期を行っている場合における、外部時計５１の外部時刻と内部時計１４の内部時刻との関係が示されている。図８では、内部時刻が外部時刻より変換時間だけ過去になるように変換が行われている。そして、内部時計１４は、外部時計５１に同期しつつ、外部時計５１の外部時刻と一定時間（変換時間）の間隔を保ちながら動作する。
これにより、時刻同期装置１０が管理可能な時刻に制約がある場合でも、時刻を時刻同期装置１０が管理可能な範囲に設定でき、装置が正しい動作を継続することができる。
【００３３】
＊＊＊他の構成＊＊＊
＜変形例１＞
実施の形態１では、各機能構成要素がソフトウェアで実現された。しかし、変形例１として、各機能構成要素はハードウェアで実現されてもよい。この変形例１について、実施の形態１と異なる点を説明する。
【００３４】
各機能構成要素がハードウェアで実現される場合には、時刻同期装置１０は、プロセッサ１２とメインメモリ１５とに代えて、電子回路を備える。電子回路は、各機能構成要素と、メインメモリ１５との機能とを実現する専用の回路である。
【００３５】
電子回路としては、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）が想定される。
各機能構成要素を１つの電子回路で実現してもよいし、各機能構成要素を複数の電子回路に分散させて実現してもよい。
【００３６】
＜変形例２＞
変形例２として、一部の各機能構成要素がハードウェアで実現され、他の各機能構成要素がソフトウェアで実現されてもよい。
【００３７】
実施の形態２．
実施の形態２では、実施の形態１で説明した時刻同期装置１０の動作の具体例を説明する。実施の形態２では、時刻同期装置１０が管理可能な時刻の範囲である管理範囲に制限がある場合の例として、２０３８年問題を用いる。
【００３８】
２０３８年問題は、３２ｂｉｔ版のＬｉｎｕｘ（登録商標）において２０３８年を迎えると時刻管理変数がオーバフローしてしまう問題である。Ｌｉｎｕｘ（登録商標）は、ＵＮＩＸ（登録商標）時刻をシステム内部時計に持つことで時刻を管理している。以下、ＵＮＩＸ（登録商標）時刻をＵＮ時刻と呼ぶ。ＵＮ時刻は、１９７０年１月１日午前０時を基準年とし、基準年からの経過秒数で表される時刻である。システム内部時計は符号付き整数型で定義されているため、３２ｂｉｔ版のＬｉｎｕｘ（登録商標）の場合は２０３８年１月１９日３時１４分７秒を過ぎると時刻管理変数がオーバフローしてしまう。
【００３９】
＊＊＊構成の説明＊＊＊
時刻同期装置１０のハードウェア構成は、図１に示す実施の形態１に係る時刻同期装置１０のハードウェア構成と同じである。
ここでは、プロセッサ１２は、３２ビットのプロセッサである。また、時刻配信装置５０は、ＮＴＰ（Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）サーバ、又は、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）衛星といった、Ｌｉｎｕｘ（登録商標）システムが受信可能な時刻情報を配信する装置である。実施の形態２では、時刻配信装置５０は、ＮＴＰサーバとして説明する。
【００４０】
時刻同期装置１０の機能構成は、図２に示す実施の形態１に係る時刻同期装置１０の機能構成と同じである。
ここでは、時刻取得部２１と内部時計設定部２２と時刻変換部２６とは、ＮＴＰクライアントによって実現される。時刻管理部２３は、Ｌｉｎｕｘ（登録商標）のＫｅｒｎｅｌによって実現される。内部時計設定部２２は、ＮＴＰサーバから取得された外部時刻であるＮＴＰ時刻を固有時刻に変換した上で、ＵＮ時刻を計算して、内部時計１４に設定する。
【００４１】
＊＊＊動作の説明＊＊＊
図９から図１３を参照して、実施の形態２に係る時刻同期装置１０の動作を説明する。
実施の形態２に係る時刻同期装置１０の動作手順は、実施の形態２に係る時刻同期方法に相当する。また、実施の形態２に係る時刻同期装置１０の動作を実現するプログラムは、実施の形態２に係る時刻同期プログラムに相当する。
【００４２】
実施の形態２における以下の説明では、ＮＴＰサーバから取得される外部時刻を外部ＮＴＰ時刻と呼ぶ。外部ＮＴＰ時刻が変換された固有時刻を固有ＮＴＰ時刻と呼ぶ。外部ＮＴＰ時刻が変換されたＵＮ時刻を外部ＵＮ時刻と呼ぶ。固有ＮＴＰ時刻が変換されたＵＮ時刻を固有ＵＮ時刻と呼ぶ。
【００４３】
図９及び図１０を参照して、実施の形態２に係る時刻変換処理（図４のステップＳ１２）を説明する。
（ステップＳ５１：時刻送信処理）
内部時計設定部２２は、ステップＳ１１で取得された外部時刻である外部ＮＴＰ時刻をメインメモリ１５から読み出す。内部時計設定部２２は、変換後取得部２２１を介して、外部ＮＴＰ時刻を時刻変換部２６に送信する。時刻変換部２６は、送信された外部ＮＴＰ時刻を取得する。
【００４４】
（ステップＳ５２：固有変換処理）
時刻変換部２６は、ステップＳ５１で取得された外部ＮＴＰ時刻に、変換時間を加算することにより、外部ＮＴＰ時刻を固有ＮＴＰ時刻に変換する。具体的には、時刻変換部２６は、変換時間を加算することにより、外部ＮＴＰ時刻を内部時計１４の管理範囲内の時刻である固有ＮＴＰ時刻に変換する。
【００４５】
この際、時刻変換部２６は、固有ＮＴＰ時刻が管理範囲内のうちできるだけ早い時刻になるように変換時間を設定する。これにより、変換時間を変更することなく、管理範囲内で時刻を管理できる期間を長くすることが可能になる。ここでは、時刻変換部２６は、固有ＮＴＰ時刻がＵＮ時刻の基準年である１９７０年１月１日午前０時にできるだけ近い時刻になるように、変換時間を設定する。
【００４６】
また、この際、時刻変換部２６は、外部時刻の時刻系によらない定期的な時刻の変動である定期変動の回数が同じになるように変換時間を設定する。ここでは、定期変動は、閏年である。閏年は、原則として４年に１度訪れる。したがって、図１１に示すように、時刻変換部２６は、４年及び４０年といった４の倍数の年数を変換時間に設定する。例えば、変換時間が−４０年の場合には、変換時間は、−４０年（ＵＴＣ）＝−（６０秒×６０分×２４時間×（３６５日×３０年＋３６６日×１０年））＝−１，２６２，３０４，０００秒になる。これにより、変換時間をその都度計算し直す必要がなくなる。一方、変換時間を２年といった時間にしてしまうと、閏年を含む場合と含まない場合とが発生してしまい、外部ＮＴＰ時刻に応じて変換時間を計算し直さなければならない。
なお、西暦年が１００で割り切れる年は閏年にならず、西暦年が４００で割り切れる年は閏年になる。そこで、時刻変換部２６は、必要に応じてこの規則も考慮して変換時間を設定してもよい。
【００４７】
（ステップＳ５３：ＵＮ変換処理）
時刻変換部２６は、ステップＳ５２で変換されて得られた固有ＮＴＰ時刻を固有ＵＮ時刻に変換する。
図１２に示すように、ＮＴＰ時刻とＵＮ時刻とは、基準年は異なる。しかし、ＮＴＰ時刻とＵＮ時刻とは、いずれも閏秒を考慮するＵＴＣ（協定世界時）を時刻系として用いている。したがって、ＮＴＰ時刻をＵＮ時刻に変換する場合には、基準年の違いによる固定の時間を加算すればよい。
【００４８】
（ステップＳ５４：時刻返却処理）
時刻変換部２６は、ステップＳ５３で変換されて得られた固有ＵＮ時刻を変換後取得部２２１に送信する。内部時計設定部２２は、変換後取得部２２１を介して、送信された固有ＵＮ時刻を取得する。
これにより、図４のステップＳ１３で、固有ＵＮ時刻が内部時計１４に設定される。
【００４９】
図１３を参照して、実施の形態２に係る時刻逆変換処理（図６のステップＳ３２）を説明する。
（ステップＳ６１：時刻送信処理）
内部時計参照部２４は、ステップＳ３１で取得された内部時計１４が示す時刻である内部ＵＮ時刻をメインメモリ１５から読み出す。内部時計参照部２４は、逆変換後取得部２４１を介して、内部ＵＮ時刻を時刻逆変換部２７に送信する。時刻逆変換部２７は、送信された内部ＵＮ時刻を取得する。
【００５０】
（ステップＳ６２：逆変換処理）
時刻逆変換部２７は、ステップＳ６１で取得された内部ＵＮ時刻から、変換時間を減算することにより、内部ＵＮ時刻を参照ＵＮ時刻に変換する。例えば、変換時間が４０年の場合には、時刻逆変換部２７は、内部ＵＮ時刻から−１，２６２，３０４，０００秒を減算する。
【００５１】
（ステップＳ６３：時刻返却処理）
時刻逆変換部２７は、ステップＳ６２で変換されて得られた参照ＵＮ時刻を逆変換後取得部２４１に送信する。内部時計参照部２４は、逆変換後取得部２４１を介して、送信された参照ＵＮ時刻を取得する。
これにより、図６のステップＳ３３で、内部ＵＮ時刻が変換時間分ずらされた参照ＵＮ時刻が使用される。
【００５２】
なお、ここでは、時刻使用部２５は、ＵＮ時刻を用いるものとして説明した。しかし、時刻使用部２５がＮＴＰ時刻を用いる場合には、参照ＵＮ時刻に、さらにＮＴＰ時刻とＵＮ時刻との基準年の違いによる固定の時間を減算する必要がある。
【００５３】
＊＊＊実施の形態２の効果＊＊＊
以上のように、実施の形態２に係る時刻同期装置１０は、外部ＮＴＰ時刻を固有ＮＴＰ時刻に変換した上で、固有ＵＮ時刻に変換する。これにより、図１４に示すように、３２ｂｉｔ版のＬｉｎｕｘ（登録商標）において、外部時刻が２０３８年を越えて管理不可な時刻の範囲に入った場合であっても、内部時計１４の時刻を管理範囲内の時刻として動作させることが可能である。
なお、図１０に示すように、変換時間による変換を行わない場合には、外部ＮＴＰ時刻が外部ＵＮ時刻に変換される。そのため、外部時刻が２０３８年を越えて管理不可な時刻の範囲に入った場合には、内部時計１４の時刻が管理不可な時刻になってしまう。
【００５４】
実施の形態３．
実施の形態３は、ＮＴＰサーバに代えて、ＰＴＰ（Ｐｒｅｃｉｓｉｏｎ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）マスタを時刻配信装置５０として用いる点が実施の形態２と異なる。実施の形態３では、この異なる点を説明し、同一の点については説明を省略する。
【００５５】
＊＊＊構成の説明＊＊＊
時刻同期装置１０のハードウェア構成は、図１に示す実施の形態１に係る時刻同期装置１０のハードウェア構成と同じである。ここでは、時刻配信装置５０は、ＰＴＰマスタである。
【００５６】
時刻同期装置１０の機能構成は、図２に示す実施の形態１に係る時刻同期装置１０の機能構成と同じである。
ここでは、時刻取得部２１と内部時計設定部２２と時刻変換部２６とは、ＰＴＰスレーブによって実現される。時刻管理部２３は、Ｌｉｎｕｘ（登録商標）のＫｅｒｎｅｌによって実現される。内部時計設定部２２は、ＰＴＰマスタから取得された外部時刻であるＰＴＰ時刻を固有時刻に変換した上で、ＵＮ時刻を計算して、内部時計１４に設定する。
【００５７】
＊＊＊動作の説明＊＊＊
図１５から図１７を参照して、実施の形態３に係る時刻同期装置１０の動作を説明する。
実施の形態３に係る時刻同期装置１０の動作手順は、実施の形態３に係る時刻同期方法に相当する。また、実施の形態３に係る時刻同期装置１０の動作を実現するプログラムは、実施の形態３に係る時刻同期プログラムに相当する。
【００５８】
実施の形態３における以下の説明では、ＰＴＰマスタから取得される外部時刻を外部ＰＴＰ時刻と呼ぶ。外部ＰＴＰ時刻が変換されたＵＮ時刻を外部ＵＮ時刻と呼ぶ。外部ＵＮ時刻が変換されたＵＮ時刻を固有ＵＮ時刻と呼ぶ。
【００５９】
図１５及び図１６を参照して、実施の形態３に係る時刻同期装置１０が内部時計１４の時刻をＰＴＰマスタの外部ＰＴＰ時刻と同期させる処理を説明する。
以下で説明するように、外部ＰＴＰ時刻をＮＩＣ時計に設定する処理と、ＮＩＣ時計が示す外部ＰＴＰ時刻をＵＮ時刻に変換して内部時計１４に設定する処理とが並行して動作する。
【００６０】
（ステップＳ７１：時刻取得処理）
時刻取得部２１は、時刻配信装置５０であるＰＴＰマスタから外部ＰＴＰ時刻を取得する。時刻取得部２１は、取得された外部ＰＴＰ時刻をメインメモリ１５に書き込む。
【００６１】
（ステップＳ７２：ＮＩＣ設定処理）
内部時計設定部２２は、ステップＳ７１で取得された外部ＰＴＰ時刻をＮＩＣ１３に内蔵されたＮＩＣ時計に設定する。
【００６２】
（ステップＳ７３：時刻変換処理）
内部時計設定部２２は、ＮＩＣ時計が示す外部ＰＴＰ時刻を読み出す。内部時計設定部２２は、変換後取得部２２１を介して、読み出された外部ＰＴＰ時刻を時刻変換部２６に送信して、外部ＰＴＰ時刻を内部時計１４の管理範囲内の時刻である固有ＵＮ時刻に変換させる。
【００６３】
（ステップＳ７４：内部時計設定処理）
内部時計設定部２２は、ステップＳ７３で変換されて得られた固有ＵＮ時刻を時刻管理部２３に受け渡すことにより、固有ＵＮ時刻を内部時計１４に設定する。
【００６４】
図１６及び図１７を参照して、実施の形態３に係る時刻変換処理（図１５のステップＳ７３）を説明する。
（ステップＳ８１：時刻送信処理）
内部時計設定部２２は、ＮＩＣ時計が示す外部ＰＴＰ時刻を読み出す。内部時計設定部２２は、変換後取得部２２１を介して、外部ＰＴＰ時刻を時刻変換部２６に送信する。時刻変換部２６は、送信された外部ＰＴＰ時刻を取得する。
【００６５】
（ステップＳ８２：ＵＮ変換処理）
時刻変換部２６は、ステップＳ８１で取得された外部ＰＴＰ時刻を外部ＵＮ時刻に変換する。
図１８に示すように、ＰＴＰマスタで用いられるＰＴＰ時刻は、閏秒を考慮しないＴＡＩ（国際原子時）を時刻系として用いている。これに対して、ＵＮ時刻は、閏秒を考慮するＵＴＣを時刻系として用いている。そのため、ＰＴＰ時刻をＵＮ時刻に変換する場合には、閏秒を考慮して変換を行う必要がある。但し、閏秒は、閏年と異なり不定期に発生する。
ここで、ＴＡＩとＵＴＣとのずれは、ＵｔｃＯｆｆｓｅｔとして定義されている。このＵｔｃＯｆｆｓｅｔは、時刻同期装置１０の外部のサーバで管理されている。そこで、時刻変換部２６は、外部のサーバからＵｔｃＯｆｆｓｅｔを取得し、外部ＰＴＰ時刻からＵｔｃＯｆｆｓｅｔを差し引くことにより、外部ＰＴＰ時刻を外部ＵＮ時刻に変換する。
【００６６】
（ステップＳ８３：固有変換処理）
時刻変換部２６は、ステップＳ８２で変換されて得られた外部ＵＮ時刻に、変換時間を加算することにより、外部ＵＮ時刻を固有ＵＮ時刻に変換する。具体的には、時刻変換部２６は、変換時間を加算することにより、外部ＵＮ時刻を内部時計１４の管理範囲内の時刻である固有ＵＮ時刻に変換する。
【００６７】
（ステップＳ８４：時刻返却処理）
時刻変換部２６は、ステップＳ８３で変換されて得られた固有ＵＮ時刻を変換後取得部２２１に送信する。内部時計設定部２２は、変換後取得部２２１を介して、送信された固有ＵＮ時刻を取得する。
これにより、図１５のステップＳ７４で、固有ＵＮ時刻が内部時計１４に設定される。
【００６８】
つまり、固有時刻と外部時刻との間に不定期な時刻の変動である不定期変動が発生する場合がある。ここでは、不定期変動は、閏秒である。このように、不定期変動が発生する場合には、時刻変換部２６は、不定期変動により変動する時間を特定し、特定された時間分、外部時刻を変換して固有時刻が計算される。
【００６９】
実施の形態３に係る時刻逆変換処理は、図１３を参照して説明した実施の形態２に係る時刻逆変換処理と同じである。
【００７０】
＊＊＊実施の形態３の効果＊＊＊
以上のように、実施の形態３に係る時刻同期装置１０は、時刻同期装置１０で用いられる時刻系と、時刻配信装置５０で用いられる時刻系との間で、閏秒のように不定期変動が発生する場合であっても、適切な変換が可能である。
【符号の説明】
【００７１】
１０  時刻同期装置、１１  クロック発信機、１２  プロセッサ、１３  ＮＩＣ、１４  内部時計、１５  メインメモリ、１６  ペリフェラル、２１  時刻取得部、２２  内部時計設定部、２２１  変換後取得部、２３  時刻管理部、２４  内部時計参照部、２４１  逆変換後取得部、２５  時刻使用部、２６  時刻変換部、２７  時刻逆変換部、４０  時刻変換装置、５０  時刻配信装置、５１  外部時計、６１  伝送路、６２  伝送路。
【要約】
時刻同期装置（１０）では、時刻取得部（２１）は、時刻配信装置（５０）から外部時計（５１）の時刻である外部時刻を取得する。内部時計設定部（２２）は、時刻取得部（２１）によって取得された外部時刻を時刻変換装置（４０）に送信する。時刻変換部（２６）は、外部時刻を内部時計（１４）の管理範囲内の時刻である固有時刻に変換する。内部時計設定部（２２）は、時刻変換部（２６）によって変換されて得られた固有時刻を内部時計（１４）に設定する。【図１】
0006682055.tif 000002
【図２】
0006682055.tif 000003
【図３】
0006682055.tif 000004
【図４】
0006682055.tif 000005
【図５】
0006682055.tif 000006
【図６】
0006682055.tif 000007
【図７】
0006682055.tif 000008
【図８】
0006682055.tif 000009
【図９】
0006682055.tif 000010
【図１０】
0006682055.tif 000011
【図１１】
0006682055.tif 000012
【図１２】
0006682055.tif 000013
【図１３】
0006682055.tif 000014
【図１４】
0006682055.tif 000015
【図１５】
0006682055.tif 000016
【図１６】
0006682055.tif 000017
【図１７】
0006682055.tif 000018
【図１８】
0006682055.tif 000019