/ «2003-09-29 (Mon) ^ 2003-10-01 (Wed)» ?
   西田 亙の本:GNU 開発ツール -- hello.c から a.out が誕生するまで --

Categories Books | Hard | Hardware | Linux | MCU | Misc | Publish | Radio | Repository | Thoughts | Time | UNIX | Writing | プロフィール


2003-09-30 (Tue)

[Time] GPS 時計のコストはいくら?

本メモを読み返すと、9/14 に DJB 氏の clockspeed に着目したことが分かる(記録は偉大だ)。clockspeed に目が止まったのは、簡単な理由からだ。新サーバー設定にあたり、Red Hat 9 デフォルトの sendmail を引っこ抜いて、qmail に入れ替える最中、DJB site 中に発見したのである。

ちなみに、今回 qmail の解説書4〜5冊を購入したが、ベストは与儀丈二氏による「qmail で作るメールサーバ徹底攻略」であった。daemontools などへの言及も含め、実によく書き込まれており、無駄がない。qmail ファンは、これ1冊を買えば「十分ですよ、十分」だ。

話を元に戻そう。白状すると、clockspeed そのものについては、この1ページしか読んでいない。ソースターボールもまだ解凍すらしていない。しかし、Bernstein 氏によるこの「ぶっきらぼう」とも言える、短い文章を読むだけで、同氏が目指したことはおおよそ理解できたような気がする。

  • ひとつは、氏が従来の Golden-standard とされてきた NTP に限界を感じていたということ。これは、NTP の時刻精度管理がミリ秒オーダーであることを考えれば当然だ。
  • ふたつめは、氏がこの問題を打破するために Pentium の RDTSC 命令に目を付けた点である。

つまり、clockspeed のエッセンスを一言で表現すれば、「RDTSC 命令を PC/AT の時刻精度管理に応用した」点にあると言える。この点さえ理解できれば、後は細かなソースなど読む必要もない。

しかし、ここから「閏秒とはなになのか?」、「そもそも時刻とは何なのか?」、「究極の時計とは何なのか?」という、放浪の旅が始まった。

まだ、現時点では上記の問いに対する正確な答えは出ていないけれど、2万円程度の投資で愛機の時刻精度を数十ナノ秒のオーダーまで引き上げるための方法は、ほぼ目処がついたように思う。GPS の出力データと RDTSC 命令とを組み合わせれば、さらなる改善も見込めそうだ。

ちなみに NOVASTAR 衛星は、セシウムおよびルビジウム原子時計をそれぞれ2台、計4台搭載している。さらに、これらの原子時計はアメリカ海軍天文台(USNO)に安置されている60台以上にもおよぶ原子時計をリファレンスに用い、相対論的効果まで考慮された補正(GPS 衛星上での時間は地球表面上とは異なる)を、通常1日3回受けている。参考までに、原子時計のお値段は一台10万ドル級らしい。

安全保障と同じく、時刻管理にはお金がかかるのである。古来、「日本人は水と安全をタダと考えている」と揶揄されてきたが、この中に「時報」も加えるべきであろう。

さて、時間城の全体像も掴めたことであるし、いよいよ実践に挑戦してみよう。とりあえずは、小手調べに RDTSC 命令に挑戦だ。CPU 内部における、クロックの進み具合をこの目で確かめてみる。