同期クロックが必要な理由を考えてみた

仕事上、Synchronous Ethernet, IEEE1588, NTPなどの同期技術の話を聞くことが多いのですが、「そもそも、なぜ同期が必要となるのか?」という素朴な疑問を抱き続けてました。Iこういう世界では良くあることですが、同期技術の専門家は、同期の仕組みについては詳しいのですが、その技術が要求される理由についてはあまり考えたことがないようで、こういう素朴な疑問にうまく答えられないのです。

「それなら、自分で考えてみよう!」ということで、出て来た答えをここにまとめてみました。

周波数同期が必要なのは、リアルタイム通信システム


周波数同期が必要となるのは、リアルタイム応答 (real time response) が要求される通信システム、つまり、「リアルタイム通信システム」です。

リアルタイム通信システムでは、入力に対して即時の応答(=出力)が要求されます。つまり、入力から出力までの応答時間(レイテンシ)が非常に小さいことが要件となります。

そのようなリアルタイム性が要求されるものは、身近なところでは「電話」があります。電話は、リアルタイム性が求められる、通信システムです。音声が相手に伝わるのに10秒もかかってしまうと、会話が成立しません。理想的には、電話のレイテンシはゼロであってほしいのです。

電話と同じ理由で、テレビ会議システムもリアルタイム性が求められます。

オンラインのビデオゲームも、ネットワーク上で複数のプレーヤーが対戦するアクション系のものは、リアルタイム性が必須です。

音声やビデオのストリーミングにおいても、生放送のように、「同時性」が重要なシステムの場合には、リアルタイム性が求められます。

そのほか、高度なリアルタイム応答が求められるのは、工場の製造ライン、発電所や変電所などの制御システム、金融業界での高頻度裁定取引システムなどがあげられます。

【リアルタイム応答が要求される通信システム】

  • 電話
  • テレビ会議
  • オンラインビデオゲーム
  • 工場制御システム
  • 変電所制御システム
  • 金融取引システム


なぜリアルタイム通信システムで周波数同期が必要なのか


リアルタイム通信システムで周波数同期が必要な理由は、送信側と受信側で周波数が一致していないと、必ずデータの取りこぼしやデータの欠損が発生するからです。リアルタイム性が求められないのであれば、データの再送が可能ですが、リアルタイム性が求められる場合には、「やり直し」の時間はありません。再送している間にも次々とデータが送られてきてしまいます。

送信側周波数>受信側周波数のときは、データの取りこぼし(バッファ・オーバーフロー)が発生します。

送信側周波数<受信側周波数のときは、データの欠損(バッファ・アンダーフロー)が発生します。

この問題を解決する手段は、大きく二つあります。1) データレート変換(フレームレート変換)と、2) 周波数同期です。

データレート変換は、受信側が一定時間に受け取ったデータ数が多かったり、少なかったりした場合には、データを補正してデータ数を合わせる調整を行います。ある意味、受信側がデータを捏造することになります。

音声やビデオの場合には、このような補正をしても、さほど気にならないかもしれませんが、変電所の電流モニタ値や、金融取引の金額は、このような補正は許されないでしょう。また、データレート変換をするためには、ある程度の深さのバッファが必要になりますが、これはレイテンシを大きくすることになりますので、採用できないケースもあります。

レート変換が使えない場合には、周波数同期を選択するしかありません。送信側が送るデータレートと受信側が取り込むデータレートを一致させるのです。

周波数同期には3つのケースが考えられます。
1) 受信側へ同期
2) 送信側へ同期
3) 第三者の供給する周波数に同期

同期の手段はいろいろあります。

たとえば、受信側が送信側にデータ要求を送る方法は、受信側へ同期する手段の一つです。この方法の長所は、送信側と受信側がそれぞれ複数あるシステムでも問題なく機能することです。一方で、レイテンシが大きくなる欠点があります。

高いリアルタイム性が要求され、かつ、送信側と受信側が複数ある場合にも対応する必要がある場合には、第三者(マスタークロック)の供給する周波数に同期するのがよいでしょう。マスタークロックは、GPSであったり、原子時計だったりします。そして、同期の実現は Synchronous Ethernet や IEEE1588 などで行います。

周波数の揺らぎ(ジッタ、ワンダー)も重要


低レイテンシが求められるリアルタイム通信システムでは、バッファも極力浅くすることが重要です。

バッファを浅くすると、吸収可能な送信側と受信側の間の周波数の揺らぎ(ジッタ、ワンダー)が小さくなります。そのため、周波数が一致しているだけでなく、周波数の揺らぎの幅(ジッタ量)も一定量に抑える必要があるのです。

同期の精度について


同期の精度については、どれくらいの頻度ならば、データの取りこぼしや欠損の発生が許容されるかで決まります。用途によっては半年に一回はメンテナンスを実施するので、1年に1回までなら許されるでしょうし、電話であれば、1日に1回くらいなら許してもらえそうです(規格で定められているので、調べればわかります)。

試しに、100Hzのフレームレートで、1日に1回までなら許される場合の、周波数の同期精度を求めてみます。送信側と受信側の周波数差を Fdiff [Hz]とおくと、1秒間に Fdiff 回のエラーが発生することになります。1日を秒に直すと、86,400 [s]ですから、1日に 86400 x Fdiff 回になります。これが 1以下になることが条件なので、Fdiff は 1/86400 以下である必要があります。これを、送信側と受信側で半分にすると、それぞれに許容される周波数誤差は 1/172800 以下となります。これをフレームレートの周波数で割ると約10億分の1(= 1ppb)になります。これが、このシステムに要求される同期の精度になります。

コメント

匿名 さんのコメント…
同期ということが不明でしたが 羽岡さんのおかげでかなりわかりました
仕事上クロック同期とかシステムの同期とか設定作業するのですが
ただ、指示されたとおりにしているだけで、なんで必要なのか理論がわかりませんでした
ありあとうございます

このブログの人気の投稿

Gbps でなく GT/s

PowerShellによるExcel/PowerPointの操作

TV視聴サーバー