(57)【要約】  【課題】  外部の基準時計からの時刻通知を遅延なく検知し、そのときの比較対象であるシステム時計の時刻を遅延なく取得することにより、精度の高い同期を実現する。  【解決手段】  外部の基準時計から送出される時刻通知用の信号を検知し、その時点の内部時刻をシステム内部のシステム時計２０から取得する時刻情報入力部１２と、時刻通知用の信号と共に基準時計４０から送出される時刻情報とこの時刻通知用の信号を検知した時点の内部時刻とを比較し、比較結果に基づいてシステム時計２０の時刻を補正する時刻補正制御部１３とを備える。そして、時刻補正制御部１３は、時刻情報入力部１２にて取得された内部時刻に基づいて信号間隔を計算し、算出された信号間隔が過去の信号間隔を標本とする統計処理によって得られた一定の信頼区間に入っているか否かを評価して内部時刻の補正の要否を判断する。  【選択図】  図１
2005157946.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを用いたシステムの内部時刻を外部の基準時計に同期させる同期方法であって、
前記コンピュータが、前記基準時計から送出される時刻通知用の信号を検知し、その時点の内部時刻をシステム内部のシステム時計から取得するステップと、
前記コンピュータが、取得された前記内部時刻に基づいて連続する２つの前記時刻通知用の信号の前記システム時計における時間差である信号間隔を計算するステップと、
前記コンピュータが、算出された信号間隔を評価して前記内部時刻の補正の要否を判断するステップと、
前記コンピュータが、前記内部時刻の補正を要すると判断された場合に前記システム時計の時刻を補正するステップと
を含むことを特徴とする同期方法。
【請求項２】
前記内部時刻の補正の要否を判断するステップでは、前記コンピュータが、前記算出された信号間隔が過去の信号間隔を標本とする統計処理によって得られた一定の信頼区間に入っているか否かに基づいて前記補正の要否を判断することを特徴とする請求項１に記載の同期方法。
【請求項３】
前記コンピュータが、前記信号間隔を計算するステップにて算出された信号間隔を用いて統計処理を行い、前記内部時刻の補正の要否を判断するステップにおける評価のためのパラメータを置き換えるステップをさらに含むことを特徴とする請求項２に記載の同期方法。
【請求項４】
前記コンピュータが、前記時刻通知用の信号と共に前記基準時計から送出される時刻情報と当該時刻通知用の信号を検知した時点の前記内部時刻とを比較し、当該２つの時刻のずれを計算するステップをさらに含み、
前記システム時計の時刻を補正するステップでは、算出された前記時刻のずれを正す補正を行うことを特徴とする請求項１に記載の同期方法。
【請求項５】
コンピュータを用いたシステムの内部時刻を外部の基準時計に同期させる同期方法であって、
前記コンピュータが、前記基準時計から送出される時刻通知用の信号を検知し、その時点の内部時刻をシステム内部のシステム時計から取得するステップと、
前記コンピュータが、取得された前記内部時刻に基づいて連続する２つの前記時刻通知用の信号の前記システム時計における時間差である信号間隔を計算するステップと、
前記コンピュータが、計算された信号間隔を評価して、当該信号間隔に前記コンピュータにて実行された処理の影響による遅延が含まれているか否かを判断するステップと、
前記コンピュータが、前記時刻通知用の信号と共に前記基準時計から送出される時刻情報と当該時刻通知用の信号を検知した時点の前記内部時刻とを比較し、比較結果に基づいて前記内部時刻の補正の要否を判断するステップと、
前記コンピュータが、前記信号間隔に前記コンピュータにて実行された処理の影響による遅延が含まれていないと判断され、かつ前記内部時刻の補正を要すると判断された場合に、前記システム時計の時刻を補正するステップと
を含むことを特徴とする同期方法。
【請求項６】
前記遅延が生じているか否かを判断するステップでは、前記コンピュータが、前記算出された信号間隔が過去の信号間隔を標本とする統計処理によって得られた一定の信頼区間に入っている場合に、前記信号間隔に前記コンピュータにて実行された処理の影響による遅延が含まれていないと判断することを特徴とする請求項５に記載の同期方法。
【請求項７】
内部のシステム時計に同期して処理を実行するコンピュータシステムにおいて、
外部の基準時計から送出される時刻通知用の信号を検知し、その時点の内部時刻をシステム内部のシステム時計から取得する時刻情報入力部と、
前記時刻通知用の信号と共に前記基準時計から送出される時刻情報と当該時刻通知用の信号を検知した時点の前記内部時刻とを比較し、比較結果に基づいて前記システム時計の時刻を補正する時刻補正制御部とを備え、
前記時刻補正制御部は、前記時刻情報入力部にて取得された前記内部時刻に基づいて連続する２つの前記時刻通知用の信号の前記システム時計における時間差である信号間隔を計算し、算出された信号間隔を評価して前記内部時刻の補正の要否を判断することを特徴とするコンピュータシステム。
【請求項８】
前記時刻補正制御部は、前記信号間隔の評価において当該信号間隔に前記コンピュータにて実行された処理の影響による遅延が含まれていないと判断した場合に、前記システム時計の時刻を補正することを特徴とする請求項7に記載のコンピュータシステム。
【請求項９】
前記時刻補正制御部は、前記算出された信号間隔が過去の信号間隔を標本とする統計処理によって得られた一定の信頼区間に入っている場合に、当該信号間隔に前記コンピュータにて実行された処理の影響による遅延が含まれていないと判断することを特徴とする請求項８に記載のコンピュータシステム。
【請求項１０】
前記時刻補正制御部にて過去に算出された信号間隔を標本として統計処理を行い、前記信号間隔を評価するためのパラメータを計算する統計処理部をさらに備え、
前記時刻補正制御部は、前記統計処理部にて算出されたパラメータを用いて、前記信号間隔に前記コンピュータにて実行された処理の影響による遅延が含まれているか否かを判断することを特徴とする請求項８に記載のコンピュータシステム。
【請求項１１】
コンピュータに、
外部の基準時計から送出される時刻通知用の信号を検知し、その時点の内部時刻をシステム内部のシステム時計から取得する第１の機能と、
取得された前記内部時刻に基づいて連続する２つの前記時刻通知用の信号の前記システム時計における時間差である信号間隔を計算し、算出された信号間隔を評価して前記内部時刻の補正の要否を判断する第２の機能と、
前記時刻通知用の信号と共に前記基準時計から送出される時刻情報と当該時刻通知用の信号を検知した時点の前記内部時刻とを比較し、比較結果に基づいて前記システム時計の時刻を補正する第３の機能とを
実現させることを特徴とするプログラム。
【請求項１２】
前記第２の機能で、前記コンピュータは、前記信号間隔の評価において当該信号間隔に前記コンピュータにて実行された処理の影響による遅延が含まれていないと判断した場合に、前記システム時計の時刻の補正を要すると判断することを特徴とする請求項１１に記載のプログラム。
【請求項１３】
前記第２の機能で、前記コンピュータは、前記算出された信号間隔が過去の信号間隔を標本とする統計処理によって得られた一定の信頼区間に入っている場合に、当該信号間隔に前記コンピュータにて実行された処理の影響による遅延が含まれていないと判断することを特徴とする請求項１２に記載のプログラム。
【請求項１４】
前記第２の機能で過去に算出された信号間隔を標本として統計処理を行い、前記信号間隔を評価するためのパラメータを計算する第４の機能を前記コンピュータにて実現し、
前記第２の機能で、前記コンピュータは、前記第４の機能において算出されたパラメータを用いて、前記信号間隔に前記コンピュータにて実行された処理の影響による遅延が含まれているか否かを判断することを特徴とする請求項１２に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータを用いたシステムの内部時計を基準となる時計に同期させる仕組みおよびその方法に関する。
【背景技術】
【０００２】
コンピュータは、図６に示すように、システム内部のシステム時計（クロックジェネレータ）６０１にて生成されるシステムクロックに同期させて、ＣＰＵ６０２やチップセット６０３、入出力インターフェイス６０４等を動作させている。そこで、複数のコンピュータやその他の装置を協同させて処理を行うシステム等では、システム時計を基準となる時計（特に定められた外部時計や特定の装置のシステム時計等）に同期させることが必要となる。
【０００３】
複数の装置におけるシステム時計の同期をとる場合に要求される精度は、システムの構成や用途に応じて適宜定められるが、例えばデジタル放送のコンテンツ配信システムでは、１ミリ秒単位の精度を要求される。今日、ワークステーションクラスのコンピュータにおいても、システム時計には数十マイクロ秒程度の誤差が想定されるため、１ミリ秒単位の精度を保つには数秒〜数十秒ごとに補正を行うことが必要である。
【０００４】
複数の装置間で時刻同期を図る技術については、従来から種々の提案がなされている（例えば、特許文献１、２参照）。
これら従来の同期手法は、各装置のシステム時計の時刻を比較して同期させるものであり、各装置への時刻問い合わせ要求に対して各装置が時刻を応答するまでの遅延や、装置間の通信による遅延を統計処理にて解消し、同期精度を向上させている。
【０００５】
【特許文献１】特開平１０−３０３９８７号公報
【特許文献２】特開平９−４６３２５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述したように、複数の装置間の同期をとる場合、要求される同期精度はシステムの構成や用途に応じて決まるが、高精度な同期を行うには、基準となる時計（以下、基準時計）からの時刻通知を遅延なく検知し、そのときの比較対象であるシステム時計の時刻（以下、内部時刻）を遅延なく取得することが重要である。
これらの情報を遅延なく取得する手段としては、これらの情報を取得するＴＴＹ（teletype）デバイスのデバイスドライバを改造して対応するか、ＴＴＹデバイスドライバを置き換えるシステムコールを作る機能をシステムに持たせて対応することが考えられる。しかし、異なるハードウェアに用いたり、システムのバージョンアップに対応したりする場合に、多大なメンテナンスコストを要するという問題がある。
【０００７】
そこで、基準時計とシステム時計との同期手段をＯＳ（Operating System）のユーザプロセス（user process）として実装できれば、メンテナンスを容易にし、汎用性を高めることができる。
ところが、コンピュータは通常、様々なプロセスが随時動作しているため、同期手段をユーザプロセスとして実装すると、デーモンプロセス（daemon process）や他のデバイスの割り込みハンドラ等の影響を受け、基準時計からの時刻通知の検知やそれに続く処理に遅延が生じてしまう恐れがある。
【０００８】
また上述した特許文献１、２のような従来の時刻の同期方法では、時刻問い合わせ要求に対する応答や装置間通信の遅延への対応は考慮されているが、時刻通知の検知や内部時刻の取得を遅延することなく行うための工夫はなされていない。
【０００９】
そこで本発明は、外部の基準時計からの時刻通知を遅延なく検知し、そのときの比較対象であるシステム時計の時刻を遅延なく取得することにより、精度の高い同期を実現することを目的とする。
また本発明は、これらの情報の取得をＯＳに対するユーザプロセスとして提供することにより、メンテナンスが容易であり、汎用性の高い同期の仕組みを実現することを他の目的とする。
【課題を解決するための手段】
【００１０】
上記の目的を達成する本発明は、コンピュータを用いたシステムの内部時刻を外部の基準時計に同期させる、次のような同期方法として実現される。この同期方法は、コンピュータが、基準時計から送出される時刻通知用の信号を検知し、その時点の内部時刻をシステム内部のシステム時計から取得するステップと、取得された内部時刻に基づいて信号間隔（連続する２つの時刻通知用の信号のシステム時計における時間差）を計算するステップと、算出された信号間隔を評価して内部時刻の補正の要否を判断するステップと、内部時刻の補正を要すると判断された場合にシステム時計の時刻を補正するステップとを含むことを特徴とする。
【００１１】
より詳細には、補正の要否を判断するステップでは、算出された信号間隔が過去の信号間隔を標本とする統計処理によって得られた一定の信頼区間に入っているか否かに基づいて補正の要否が判断される。
さらに好ましくは、この同期方法は、信号間隔を計算するステップにて算出された信号間隔を用いて統計処理を行い、内部時刻の補正の要否を判断するステップにおける評価のためのパラメータを置き換えるステップを含む。
【００１２】
また、この同期方法において、時刻通知用の信号と共に基準時計から送出される時刻情報とこの時刻通知用の信号を検知した時点の内部時刻とを比較し、この２つの時刻のずれを計算するステップをさらに含むこととし、システム時計の時刻を補正するステップでは、算出された時刻のずれを正す補正を行う。
【００１３】
また、本発明による他の同期方法は、コンピュータが、基準時計から送出される時刻通知用の信号を検知し、その時点の内部時刻をシステム内部のシステム時計から取得するステップと、取得された内部時刻に基づいて連続する２つの時刻通知用の信号のシステム時計における時間差である信号間隔を計算するステップと、計算された信号間隔を評価して、この信号間隔にコンピュータにて実行された処理の影響による遅延が含まれているか否かを判断するステップと、時刻通知用の信号と共に基準時計から送出される時刻情報とこの時刻通知用の信号を検知した時点の内部時刻とを比較し、比較結果に基づいて内部時刻の補正の要否を判断するステップと、信号間隔に遅延が含まれていないと判断され、かつ内部時刻の補正を要すると判断された場合に、システム時計の時刻を補正するステップとを含むことを特徴とする。
より詳細には、算出された信号間隔が過去の信号間隔を標本とする統計処理によって得られた一定の信頼区間に入っている場合に、信号間隔にコンピュータにて実行された処理の影響による遅延が含まれていないと判断する。
【００１４】
また上記の目的を達成する他の本発明は、内部のシステム時計に同期して処理を実行する、次のように構成されたコンピュータシステムとしても実現される。このシステムは、外部の基準時計から送出される時刻通知用の信号を検知し、その時点の内部時刻をシステム内部のシステム時計から取得する時刻情報入力部と、時刻通知用の信号と共に基準時計から送出される時刻情報とこの時刻通知用の信号を検知した時点の内部時刻とを比較し、比較結果に基づいてシステム時計の時刻を補正する時刻補正制御部とを備える。そして、時刻補正制御部は、時刻情報入力部にて取得された内部時刻に基づいて信号間隔を計算し、算出された信号間隔を評価して内部時刻の補正の要否を判断することを特徴とする。
より好ましくは、このシステムに、時刻補正制御部にて過去に算出された信号間隔を標本として統計処理を行い、信号間隔を評価するためのパラメータを計算する統計処理部をさらに備える構成とし、時刻補正制御部は、統計処理部にて算出されたパラメータを用いて、信号間隔にコンピュータにて実行された処理の影響による遅延が含まれているか否かを判断することができる。
【００１５】
また本発明は、コンピュータを制御して上述した同期方法の各ステップに対応する処理を実行させるプログラム、あるいは、上記のシステムの各機能をコンピュータに実現させるプログラムとしても実現される。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより、提供することができる。
【発明の効果】
【００１６】
以上のように構成された本発明によれば、基準時計からの時刻通知用の信号の信号間隔を評価することによって、外部の基準時計からの時刻通知を遅延なく検知し、そのときの比較対象であるシステム時計の時刻（内部時刻）を遅延なく取得したかどうかを判断し、システム時計の時刻補正の要否を決定することができる。このため、遅延のないときを選んで時刻補正を実行することにより、精度の高い同期を実現することができる。
また、本発明は、時刻通知の検知や内部時刻の取得に遅延があったか否かの判断および時刻補正をＯＳに対するユーザプロセスとして提供することにより、メンテナンスが容易であり、汎用性の高い同期の仕組みを実現することができる。
【発明を実施するための最良の形態】
【００１７】
以下、添付図面を参照して、本発明を実施するための最良の形態（以下、実施形態）について詳細に説明する。
まず、本発明の概要について説明する。本発明では、コンピュータを用いたシステムが、外部の基準時計から信号を入力し、この入力信号に基づいてシステム時計を基準時計に同期させる。同期の精度は、基準時計に対する誤差を１ミリ秒以内とする。そして、この同期のために基準時計とシステム時計とを比較する処理を、ＯＳのユーザプロセスとして実現する。この場合、デーモンプロセスや割り込みプロセスによって、基準時計からの入力信号の検知やその後の処理に遅延が生じる可能性があるため、基準時計の時刻とシステム時計の時刻とを直接比較して同期させると高い精度を保証できない。そこで本発明では、基準時計からの入力信号の信号間隔（基準時計からの入力信号のうち連続する２つの信号のシステム時計における時間差）を計測し、計測値を統計処理してシステム時計の誤差を検知し、必要に応じて補正することとした。
【００１８】
図１は、本実施形態によるシステム時計の同期方法を実現するコンピュータの機能構成を示す図である。
図１に示す本実施形態のコンピュータは、プログラム制御により以下に示す本実施形態の機能を実現するＣＰＵ（Central Processing Unit：中央処理装置）１０と、システム時計２０と、外部の基準時計４０に接続するためのシリアルポート３０とを備える。なお、図１には、本実施形態による同期方法を実現するために必要な構成を示した。実際のシステムには、システム時計２０が生成するシステムクロックに同期して動作するチップセットや入出力インターフェイス、これらに接続された各種のデバイス等が搭載される。
【００１９】
本実施形態では、外部の基準時計４０の信号を、ＲＳ−２３２Ｃ（Recommended Standard 232-C）のシリアルインターフェイスを介して入力することとする。具体的には、基準時計４０は、図２に示すように、毎正秒のタイミングをＲＳ−２３２ＣのＤＣＤ（Data Carrier Detect）パルスで通知し、その直後に時刻データ（テキストデータ）を送信することとする。コンピュータは、シリアルポート３０を介して、ＤＣＤパルスによる時刻通知と時刻データとを受信すると共に、必要に応じてシステム時計２０の時刻を補正する。なお、これらの仕様は例示に過ぎず、ＤＣＤパルス以外のＲＳ−２３２Ｃのシグナルラインや、ＲＳ−２３２Ｃ以外のインターフェイスを用いて時刻通知や時刻データの送信を行うことができるのは言うまでもない。
【００２０】
図１を参照すると、本実施形態は、プログラム制御されたＣＰＵ１０による、ＴＴＹデバイスドライバ１１と、時刻情報入力部１２と、時刻補正制御部１３と、統計処理部１４の各機能にて実現される。ＣＰＵ１０を制御するプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供され、図１に示したコンピュータの図示しないメモリに読み込まれて、ＣＰＵ１０の動作を制御する。
【００２１】
ＴＴＹデバイスドライバ１１は、ＯＳの機能として提供され、シリアルポート３０を介して入力されるＤＣＤパルスの時刻通知と時刻データとを受け付けて、時刻情報入力部１２に渡す。
時刻情報入力部１２は、ユーザプロセスとして提供され、ＴＴＹデバイスドライバ１１からＤＣＤパルスの時刻通知と時刻データとを受信すると共に、システム時計２０からＤＣＤパルス受信時の内部時刻を取得する。
【００２２】
時刻補正制御部１３は、ユーザプロセスとして提供され、時刻情報入力部１２にて取得された時刻情報に基づいて基準時計４０に対するシステム時計２０の誤差を判断し、その判断結果に基づき必要に応じてシステム時計２０の時刻の補正を行う。システム時計２０の誤差を判断する手法の詳細については後述する。
統計処理部１４は、ユーザプロセスとして提供され、時刻補正制御部１３によるシステム時計２０の誤差の判断に必要な統計処理を実行する。
【００２３】
ここで、上述した本実施形態の機能をユーザプロセスとして実現する場合に発生し得る遅延の原因とその除去の可否について説明する。以下、本実施形態の機能を実現するユーザプロセスを時刻同期プロセスと呼ぶ。
コンピュータは割り込み処理を含む種々のプロセスが随時動作しているため、本実施形態の機能をユーザプロセスとして実現すると、
（１）ＤＣＤパルスによる時刻通知の検知、
（２）システム時計の内部時刻の取得、
（３）システム時計の補正
の３つの動作において遅延が発生する可能性がある。この遅延の原因としては、次のものが挙げられる。
・メモリのページング
・ＤＣＤパルス検知のシステムコールでの遅延
・プロセスの優先度（priority）
・他のデバイスの割り込み
【００２４】
メモリのページングは、上述した（１）〜（３）の全ての動作に影響し、遅延を発生させる原因となる。例えば、ページングの処理中にＤＣＤパルスを検知したことを示すＤＣＤパルス・オンの割り込みが発生した場合は、実行中であったページング処理が終わるまで、ＤＣＤパルス・オンの割り込み処理は待たされ、遅延が発生することとなる。また、ＤＣＤパルス・オンの割り込み発生時に時刻同期プロセスがページアウトされている場合は、この時刻同期プロセスがページインされるまでの時間が遅延となる。これらの遅延は、ユーザプロセスでは回避できない。
【００２５】
ＤＣＤパルス検知のシステムコールでの遅延は、上述した（１）の動作において遅延を発生させる原因となる。この遅延は、システムコールに基づくデバイスドライバの動作によって発生する遅延なので、ユーザプロセスでは回避することはできない。しかしながら、ＯＳのトレース機能を用いて実際に計測すると、このシステムコールでの遅延は、ある程度以上の性能を有するコンピュータでは１００〜２００マイクロ秒（μｓｅｃ）の範囲に納まる。したがって、そのようなコンピュータにて本実施形態を実現する場合は、基準時計の時刻との誤差を１ミリ秒以内に抑えるという目標に対しては障害とならない。
【００２６】
プロセスの優先度は、上述した（１）〜（３）の全ての動作に影響し、遅延を発生させる原因となる。複数のプロセスを実行する場合、どのプロセスを優先させるかに応じてプロセスの切り替え（コンテキストスイッチ）を行い、その際に一時的に中断するプロセスの状態保存を行う。このコンテキストスイッチにおける処理によって遅延が発生することとなる。しかし、本実施形態の機能を実現するプロセスの優先度を高く設定することによって、このプロセスの優先度に基づく遅延の発生を回避することが可能である。
【００２７】
他のデバイスの割り込みは、上述した（２）、（３）の動作に影響し、遅延を発生させる原因となる。ＣＰＵ１０に対してデバイスからの割り込み要求があった場合、ＣＰＵ１０は実行中のプロセスを中断して、その割り込みに対する割り込みハンドラを実行する。上述した３つの動作のうち、（１）ＤＣＤパルスによる時刻通知の検知は、ＲＳ−２３２Ｃの割り込み要求に対する割り込みハンドラにて実行されるが、（２）システム時計の内部時刻の取得、および（３）システム時計の補正の２つの動作はユーザプロセスからのシステムコールであるため、（１）の動作後に他のデバイスからの割り込み要求に対する割り込みハンドラが動作することによって遅延が発生し得る。そして、この遅延は、ユーザプロセスでは回避できない。
【００２８】
さて、基準時計４０に同期させるためにシステム時計２０の時刻を補正することを考える。この場合、上述した（１）〜（３）の動作に遅延がないときに時刻補正を行う必要がある。上記の遅延の原因のうち、メモリのページングによって生じる遅延と他のデバイスの割り込みによって生じる遅延とは除去することができないが、これらを原因とする遅延は常時発生するものではない。したがって、これらの遅延を検出することができれば、その遅延がないときにシステム時計２０の時刻補正を行うことが可能となる。
しかし、受信した個々のＤＣＤパルスに対して直接遅延の有無を検知することはユーザプロセスからは不可能である。そこで、本実施形態では、連続する２つのＤＣＤパルスのシステム時計２０による検知時刻の時間差、すなわちシステム時計２０で計測したＤＣＤパルスの間隔を処理して遅延を検出する。
【００２９】
次に、本実施形態による遅延検出方法について詳細に説明する。
図３は、基準時計４０によるパルスの発信タイミングとシステム時計２０の計時との関係を示す図である。
図３に示すように、基準時計４０は、毎正秒のタイミングで時刻通知のパルス（ＤＣＤパルス）を送出するので、Ｎ秒間にＮ個のパルスが送出されることとなる。コンピュータの時刻情報入力部１２がこのＮ個のパルスの受信に要した総時間をシステム時計２０で計測した値がＲ秒とする。システム時計２０で計測される個々のパルス間隔は、上述した他のプロセスや割り込みハンドラの影響で必ずしも正確に１秒にはならない。すなわち、本来は正確に１秒ごとに発信されるはずのパルスの間隔が、システム時計２０による検知時刻では１秒よりも長くなる場合がある。ただし、この遅延は頻繁に発生するものではないので、システム時計２０自体に遅れや進みがなく、かつパルスの消失がない場合、Ｎが十分に大きければ、これらの影響による誤差delta（＝｜Ｒ−Ｎ｜）は無視できる。したがって、システム時計２０で計測したパルス間隔Ｒ／Ｎの平均は、
Ｒ／Ｎ＝１，０００，０００［μｓｅｃ］
すなわち１秒となる。
【００３０】
ここで、システム時計２０が毎秒Ｔ［μｓｅｃ］遅れるとする。もし、他のプロセス、割り込みハンドラ等の影響がなければ、システム時計２０で測ったパルス間隔は、（１，０００，０００−Ｔ）［μｓｅｃ］となるはずである。実際には、上述した他のプロセスや割り込みハンドラの影響でパルスの検知および内部時刻の取得に遅延が生じるため、図４に示すように、システム時計２０にて計測された個々のパルス間隔は（１，０００，０００−Ｔ）［μｓｅｃ］に常に等しくなるわけではない（図において、αが遅延分の時間）。しかし、システム時計２０にて計測されたパルス間隔が（１，０００，０００−Ｔ）［μｓｅｃ］に十分近ければ、遅延なくパルスを検知できたと判断できる。そこで、具体的にシステム時計２０にて計測されたパルス間隔が（１，０００，０００−Ｔ）［μｓｅｃ］にどれくらい近ければ、パルスの検知に遅延がないと判断できるかを考える。
【００３１】
システム時計２０の遅れを示すＴ［μｓｅｃ］の値は、個々のコンピュータのシステム時計２０ごとに異なる。また、コンピュータの起動直後と安定的な稼働状態とのＣＰＵ１０の温度の違い等によってもその値は変化する。そのため、Ｔ［μｓｅｃ］に対して適当な固定値を設定することはできない。そこで、本実施形態は、統計的手法を用いてシステム時計２０のＴ［μｓｅｃ］の値を個別に判断することとする。
【００３２】
具体的には、システム時計２０で測ったパルス間隔の平均値と標準偏差とから、例えば９９％信頼区間を定期的に計算し、個々のパルス間隔がこの区間に入っていたならば、そのときのパルス検知および内部時刻の取得に関して遅延は発生していない、言い換えれば、そのパルス間隔には遅延が含まれていないと判断する。そして、検知したパルスの直後に受信した時刻データとパルスを検知したタイミングで取得した内部時刻とを比較し、差異があれば、それをシステム時計２０の遅れＴ［μｓｅｃ］とする。ここで、信頼区間とは、統計用語であり、ある区間の中に母数が存在することを一定の信頼性をもって示す場合の区間を指す。すなわち、９９％信頼区間とは、同じ調査を繰り返した場合に、真の値が９９％の確率で含まれるであろう区間を示す。なお、９９％信頼区間を計算するとしたのは一例にすぎず、システムに要求される同期精度などに応じて９５％信頼区間等、他の信頼区間を採用しても良い。
【００３３】
９９％信頼区間の計算に用いる標本数は、システムに要求される同期精度などに応じて任意に決めればよい。ただし、標準偏差および９９％信頼区間幅の計算に要する時間が長くなりすぎることを避けるため、前々回の時刻補正直後から前回の時刻補正までの間のパルスの個数とし、また最大で１２８個までといった制限を付加することもできる。９９％信頼区間の計算式を、下記の数１式に示す。
【数１】
2005157946.tif 000003
【００３４】
以上をまとめると、本実施形態によるシステム時計２０の時刻の同期方法では、次のようにして基準時計４０とシステム時計２０との同期を行う。
まず、基準時計４０から発信される時刻通知用のＤＣＤパルスを検知し、そのタイミングでシステム時計２０の時刻である内部時刻（検知時刻）を取得する。そして、ＤＣＤパルスの直後に基準時計から送出される当該ＤＣＤパルスの時刻データと検知時刻とを比較し、補正すべきずれが生じているか否かを判断する。一方、当該ＤＣＤパルスの検知時刻と直前のＤＣＤパルスの検知時刻との時間差であるパルス間隔を計算し、算出された値が過去のパルス間隔を標本とする統計処理によって得られた一定の信頼区間（例えば９９％信頼区間）に入っているかを判断する。すなわち、ＤＣＤパルスの時刻データと検知時刻とを比較するだけでなく、パルス間隔を評価して補正の要否を決定している。そして、パルス間隔が当該信頼区間に入っているならば、算出されたパルス間隔には遅延が含まれておらず、信頼できるものとみなして、ＤＣＤパルスの時刻データと検知時刻とのずれを正すように、システム時計２０の時刻を補正する。これにより、基準時計４０とシステム時計２０とを同期させることができる。
【００３５】
次に、図５に示すフローチャートを参照して、本実施形態によるシステム時計２０の同期処理の全体的な流れを説明する。
基準時計４０は、毎正秒に時刻を通知するＤＣＤパルスを発信しており、コンピュータは、シリアルポート３０を介してＤＣＤパルスを受信する。そして、時刻情報入力部１２がこのＤＣＤパルスを検知し、その時点のシステム時計２０の時刻ＴＲ(ｋ)を取得する。また、時刻情報入力部１２は、基準時計４０からＤＣＤパルスの発信直後に送出される時刻データＴＮ(ｋ)を、シリアルポート３０を介して受信する。取得されたこれらの時刻情報は、図示しないメインメモリ等の記憶手段に保持される（ステップ５０１）。
【００３６】
次に、時刻補正制御部１３が、ステップ５０１で取得したＤＣＤパルスの検知時刻ＴＲ(ｋ)と前回のＤＣＤパルスの検知時刻ＴＲ(ｋ-1)との差であるパルス間隔ΔＴ(ｋ)（＝ＴＲ(ｋ)−ＴＲ(ｋ-1)）を計算する。算出されたパルス間隔は、統計処理用の標本として、図示しないメインメモリ等の記憶手段に蓄積される（ステップ５０２）。
【００３７】
次に、時刻補正制御部１３は、ステップ５０１で取得したＤＣＤパルスの検知時刻ＴＲ(ｋ)と基準時計４０からの時刻データＴＮ(ｋ)との差ΔＴＲ（＝ＴＲ(ｋ)−ＴＮ(ｋ)）を計算する（ステップ５０３）。そして、算出された値ΔＴＲの絶対値と予め設定された許容値ΔＴ(critical)とを比較する（ステップ５０４）。ここで、許容値ΔＴ(critical)とは、システム時計２０の時刻を補正するか否かの判断基準として設定された時間を示す値である。許容値ΔＴ(critical)の具体的な値は、システムに要求される同期精度等に応じて任意に設定し得るが、例えばデジタル放送のコンテンツ配信システムのように１ミリ秒単位の精度を要求されるシステムでは、８００マイクロ秒程度とすることができる。
したがって、算出された値ΔＴＲが許容値ΔＴ(critical)以内であれば（ステップ５０４でＮｏ）、システム時計２０の時刻の補正を行わずにステップ５０１へ戻り、次のＤＣＤパルスの検知待ちとなる。
【００３８】
一方、算出された値ΔＴＲが許容値ΔＴ(critical)を越えている場合（ステップ５０４でＹｅｓ）、次に時刻補正制御部１３は、ステップ５０２で算出されたパルス間隔ΔＴ(ｋ)が９９％信頼区間に入っているか否かを判断する（ステップ５０５）。９９％信頼区間は、後述するステップで、過去に得られたパルス間隔を標本としてなされた統計処理にて予め計算されており、図示しないメインメモリ等の記憶手段に保持されている。パルス間隔ΔＴ(ｋ)が９９％信頼区間に入っていないならば（ステップ５０５でＮｏ）、このパルス間隔ΔＴ(ｋ)には、メモリのページングや割り込みハンドラ等の影響で生じた遅延が含まれていると考えられるので、システム時計２０の時刻の補正を行わずにステップ５０１へ戻り、次のＤＣＤパルスの検知待ちとなる。
【００３９】
これに対し、パルス間隔ΔＴ(ｋ)が９９％信頼区間に入っている場合（ステップ５０５でＹｅｓ）、このパルス間隔ΔＴ(ｋ)には、メモリのページングや割り込みハンドラ等の影響で生じた遅延が含まれていないと考えられるので、ＤＣＤパルスの検知時刻ＴＲ(ｋ)と時刻データＴＮ(ｋ)とのずれ（遅れまたは進み）を正すように、ΔＴＲだけシステム時計２０の時刻を補正する（ステップ５０６）。
【００４０】
次に、システム時計２０の時刻補正が行われたので、ステップ５０５の判断に用いられる９９％信頼区間を更新する（ステップ５０７）。すなわち、統計処理部１４が、ステップ５０２で所定の記憶手段に蓄積されたパルス間隔ΔＴの標本を用いて、パルス間隔ΔＴの平均値、標準偏差、９９％信頼区間を計算し、図示しないメインメモリ等の記憶手段に保持されているこれらのパラメータを、新たに計算された値に置き換える。これ以降のサイクルでは、時刻補正制御部１３は、この置き換えられたパラメータを用い、取得されたＤＣＤパルスのパルス間隔ΔＴ(ｋ)に対してステップ５０５の評価を行うこととなる。なお、記憶手段に蓄積されたパルス間隔ΔＴのうち、どのデータを９９％信頼区間の計算に用いるかについては、上述したように、前々回の時刻補正直後から前回の時刻補正までの間に検知したＤＣＤパルスによるデータとすることができ、処理効率を考えて標本の個数に適当な上限を設けることもできる。
システム時計２０の時刻を補正し、パルス間隔ΔＴ(ｋ)を評価するためのパラメータの更新を行った後は、ステップ５０１へ戻り、次のＤＣＤパルスの検知待ちとなる。
【００４１】
以上のようにして、本実施形態によれば、基準時計４０の時刻とシステム時計２０の時刻とにずれが生じた場合に、それらの時刻情報が信頼できる情報か否かを評価した上で、システム時計２０の時刻を補正することができる。
また本実施形態では、遅延の原因や調査対象を特定して、ＤＣＤパルスの検知や内部時刻の取得に遅延が生じているかを個別に判断するのではなく、統計処理によってパルス間隔の中に結果として何らかの遅延が含まれているかを評価する。そのため、本実施形態で除去できない遅延原因として挙げたメモリのページングや割り込みハンドラ以外にも、不規則に発生する種々の事態を原因とする遅延に対応することができる。
【００４２】
なお、図５を参照して説明した上記の本実施形態の動作において、パルス間隔ΔＴ(ｋ)に遅延が含まれておらず、ＤＣＤパルスの検知時刻ＴＲ(ｋ)と時刻データＴＮ(ｋ)とが信頼できる情報である場合にも、ステップ５０６の時刻補正の処理で遅延が生じる可能性がある。例えば、システム時計２０の時刻を補正値にセットする直前に他のデバイスの割り込みハンドラが実行された場合などである。しかし、システム時計２０の時刻を直接操作するコマンドを用いて補正を行うのではなく、システム時計２０の進み方を早くしたり遅くしたりするコマンドを用い、ある程度の時間をかけて補正を行うこととすれば、この段階の遅延が問題となることはない。
【図面の簡単な説明】
【００４３】
【図１】本実施形態によるシステム時計の同期方法を実現するコンピュータの機能構成を示す図である。
【図２】本実施形態における基準時計の出力信号の構成を示す図である。
【図３】基準時計によるパルスの発信タイミングとシステム時計の計時との関係を示す図である。
【図４】本実施形態で用いられるパルス間隔を説明する図である。
【図５】本実施形態によるシステム時計の同期処理の全体的な流れを示すフローチャートである。
【図６】システムクロックに同期させて動作するコンピュータの構成例を示す図である。
【符号の説明】
【００４４】
１０…ＣＰＵ（Central Processing Unit：中央処理装置）、１１…ＴＴＹデバイスドライバ、１２…時刻情報入力部、１３…時刻補正制御部、１４…統計処理部、２０…システム時計、３０…シリアルポート、４０…基準時計
【図１】
2005157946.tif 000004
【図２】
2005157946.tif 000005
【図３】
2005157946.tif 000006
【図４】
2005157946.tif 000007
【図５】
2005157946.tif 000008
【図６】
2005157946.tif 000009