工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial Internet of Things >> 埋め込み

より正確なタイムアプライアンスのオープンソーシング

Facebookのエンジニアは、最新のタイミングインフラストラクチャの重要なコンポーネントであるオープンコンピュートタイムアプライアンスを構築してオープンソース化しました。これを可能にするために、タイムカードを考案しました。これは、ほとんどすべてのコモディティサーバーをタイムアプライアンスに変えることができるPCI Express(PCIe)カードです。 OCPコミュニティの助けを借りて、Open Compute Time Appliance Projectを設立し、Open TimeServerのあらゆる側面をオープンソース化しました。この記事では、タイムカードの開発について概説します。

2020年3月に、データセンター内のサーバーを(消費者向け製品とともに)ネットワークタイムプロトコル(NTP)に基づく新しい計時サービスに切り替える過程にあることを発表しました。社内で構築され、後にオープンソース化された新しいサービスは、よりスケーラブルであり、Facebookインフラストラクチャの計時の精度を10ミリ秒から100マイクロ秒に改善しました。より正確な時間管理により、データセンター全体でより高度なインフラストラクチャ管理が可能になり、分散データベースのパフォーマンスが向上します。

新しいNTPベースの時間アーキテクチャは、Stratum 1を使用します。これは、以下に示すように、グローバルナビゲーション衛星システム(GNSS)やセシウム時計などの信頼できる時間ソースに直接リンクされている重要なコンポーネントです。

多くの企業は、Stratum 1として機能するためにtime.facebook.comなどのパブリックNTPプールに依存しています。ただし、このアプローチには欠点があります。これらのプールはインターネット接続への依存を追加し、システムの全体的なセキュリティと信頼性に影響を与える可能性があります。たとえば、接続が失われたり、外部サービスがダウンしたりすると、依存システムの停止やタイミングのずれが発生する可能性があります。

これらの依存関係を取り除くために、タイムアプライアンスと呼ばれる新しい専用ハードウェアを構築しました。これは、GNSS受信機と小型化された原子時計(MAC)で構成されています。タイムアプライアンスのユーザーは、GNSS接続が失われた場合でも、正確な時刻を維持できます。タイムアプライアンスを構築する際に、あらゆるコモディティサーバーをタイムアプライアンスに変えることができるPCIeカードであるタイムカードも発明しました。

新しいタイムデバイスが必要な理由

既製のタイムアプライアンスには、独自の利点があります。それらは箱から出してすぐに動作し、これらのデバイスの多くは何十年もの間市場に出回っているため、戦闘テストが行​​われ、一般に、長期間の監視なしで動作するのに十分安定しています。

ただし、これらのソリューションにはトレードオフもあります。

これまで、企業はこれらのトレードオフを受け入れ、上記の制約の範囲内で作業する必要がありました。別のことを試すときが来たと判断したので、新しいタイムアプライアンス、具体的にはx86アーキテクチャを使用したアプライアンスを構築するために何が必要かを真剣に検討しました。

タイムアプライアンスのプロトタイピング

これが私たちが想像したもののブロック図です:

それはすべて、時刻(ToD)と1秒あたり1パルス(PPS)を提供するGNSS受信機から始まります。受信機が高安定発振器(例えば、原子時計またはオーブン制御の水晶発振器)によって支えられている場合、それはナノ秒精度の時間を提供することができます。時間は、最初のアプライアンスで使用されたNVIDIA Mellanox ConnectX-6 Dxなど、パケットのPPSイン/アウトおよびハードウェアタイムスタンプをサポートする既製のネットワークカードを介してネットワーク全体に配信されます。

GPSDOの出力は、ConnectX-6DxネットワークカードのEXTタイムスタンプに送られました。さらに、GNSS受信機は、シリアルポートとNMEAと呼ばれる一般的なGPSレポートプロトコルを介してToDを提供します。 ts2phcツールを使用すると、以下に示すように、NICの物理ハードウェアクロックを数十ナノ秒まで同期させることができました。

私たちのプロトタイプは、そのようなアプライアンスの構築が可能であるという自信を与えてくれました。ただし、改善の余地はたくさんありました。

システムの信頼性を高めるために、システムをペイロードと配信の2つの主要部分に分割しました。ペイロードは、本質的に局部発振器によって駆動される補間システムである精密時間であり、GNSS受信機によって受信された連続するPPS信号間のナノ秒の時間測定を作成します。 GNSS受信機、高安定局部発振器、および必要な処理ロジックをPCIeフォームファクターに組み込むことを検討し、それをタイムカードと呼びました(以下を参照)。

ナプキンに最初に思い描いたタイムカードのスケッチは次のとおりです。

オンボードMAC、マルチバンドGNSS受信機、およびFPGAを使用して、タイムエンジンを実装しました。タイムエンジンの仕事は、連続するPPS信号間に必要な粒度をナノ秒単位で補間することです。 GNSS受信機は、1PPS信号に加えてToDも提供します。 GNSS受信が失われた場合、タイムエンジンは、連続するPPSパルスの平均アンサンブルに基づく原子時計の進行中の同期に依存します。

タイムエンジンは、タイムカードのFPGAに実装された一連の処理ブロックで構成されています。これらの処理ブロックには、さまざまなフィルタリング、同期、エラーチェック、タイムスタンプ、およびPCIe関連のサブシステムが含まれ、タイムカードがオープンタイムサーバーに正確な時間を提供するシステム周辺機器として機能できるようにします。

GNSS受信機の精度は数十ナノ秒以内であるのに対し、MACの必要な継続的な同期(キャリブレーション)は10ピコ秒以内(1,000倍正確)であることに注意してください。

最初は、これは不可能に聞こえます。ただし、GNSSシステムは、標準時間との継続的な通信に基づいてタイミングを提供します。この機能により、GNSSオンボードクロックは、そのコンステレーションに提供される時間のソースと常に同期することができ、実質的に長期的なドリフトエラーは発生しません。したがって、MACのキャリブレーションは、MAC駆動のカウンターとGNSSが提供するPPSパルスの比較を介して実行されます。比較に時間をかけることで、MACのキャリブレーションの精度を高めることができます。もちろん、これはMACが線形時不変システムであることを考慮したものです。

このブロック図では、ルビジウムクロックからの10MHz信号がタイムエンジンに入るのを見ることができます。このクロック信号は、10 MHzSMA入力に置き換えることができます。クロック信号は、デジタルクロックモジュールとデジタルPLL(25を2で割った結果の12.5x)に送られ、125MHzの周波数になります。 125 MHz(8ナノ秒周期)がToDユニットに供給されます。

ToDユニットは、LSB(最下位ビット)が250ピコ秒(gPTPの32ビットのサブセカンド精度から駆動)に関連付けられているため、0b000001のデジタル値の8ナノ秒の増分を関連付けます。

一方、GNSSからフィルタリングされたPPS信号は、増分の結果をスナップショットするために使用されます。 125 MHzが正確である場合、累積された増分は正確に1秒間隔になるはずです。ただし、実際には、累積値と理論上の1秒間隔の間には常に不一致があります。


値は、内部PI(比例および積分)制御ループを使用して調整できます。調整は、0b000001の値を250ピコ秒単位で変更するか、12.5xPPLを微調整することで実行できます。さらに、ルビジウム発振器を操作することにより、さらに(より細かく調整された)調整を適用できます。

GNSSが利用できない時間が長いほど、時間の精度が失われます。時間精度の低下率はホールドオーバーと呼ばれます。通常、ホールドオーバーは、精度とそれを超えるのにかかる時間の時間枠として説明されます。たとえば、MACのホールドオーバーは1マイクロ秒以内で24時間です。これは、24時間後、時間の精度は決定論的ではありませんが、1マイクロ秒以内に正確であることを意味します。

別のアプローチとして、PPS入力を受信する機能を備えた新世代のチップスケールおよび小型化された原子時計を期待しています。これにより、タイムカードのタイムエンジンは、デジタルリソースを使用してターゲットに到達するのではなく、高安定発振器の超高精度シントン化をコンポーネントに渡すことができます。

一般的な原則として、チューニングが正確であればあるほど、達成できるホールドオーバーパフォーマンスが向上します。配信に関しては、正確なタイミングでNICを使用すると、ネットワークパケットが非常に正確なタイムスタンプを受信することが保証されます。これは、ネットワーク全体で他のサーバーと共有されるため、正確な時間を維持するために重要です。このようなNICは、タイムカードから直接PPS信号を受信することもできます。

アイデアとさまざまな実装の反復を概念化した後、プロトタイプをまとめることができました。

動作中のタイムアプライアンス

タイムカードを使用すると、ハードウェアタイムスタンプが可能なNICを備えたx86マシンをタイムアプライアンスに変えることができます。このシステムは、NTP、PTP、SyncE、またはその他の時刻同期プロトコルで実行されるかどうかに依存しません。これは、タイムカードによって提供される精度と安定性がほとんどすべてのシステムで十分であるためです。

PCIeカードを使用する利点は、十分なPCIeスロットが利用可能である限り、家庭用PCでもセットアップを組み立てることができることです。

次のステップはLinuxをインストールすることです。タイムカードドライバは、Linuxカーネル5.15以降に含まれています。または、カーネル5.12以降のOCPGitHubリポジトリからビルドすることもできます。

ドライバーは、PHCクロック、GNSS、PPS、原子時計シリアルなど、いくつかのデバイスを公開します。

$ ls -l / sys / class / timecard / ocp0 /

lrwxrwxrwx。 1ルート08月319:49デバイス-> ../../../ 0000:04:00.0 /

-r–r–r–。 1ルート4096Aug 3 19:49 gnss_sync

lrwxrwxrwx。 1ルート08月3日19:49i2c-> ../../xiic-i2c.1024/i2c-2/

lrwxrwxrwx。 1ルート08月3日19:49pps-> ../../../../../virtual/pps/pps1/

lrwxrwxrwx。 1ルート08月3日19:49ptp-> ../../ptp/ptp2/

lrwxrwxrwx。 1ルート08月3日19:49ttyGNSS-> ../../tty/ttyS7/

lrwxrwxrwx。 1ルート08月3日19:49ttyMAC-> ../../tty/ttyS8/

このドライバーを使用すると、タイムカード、GNSSレシーバー、および原子時計のステータスを監視し、devlinkcliを使用して新しいFPGAビットストリームをフラッシュすることもできます。

あとは、タイムカードを基準クロックとして使用するようにNTPサーバーやPTPサーバーを構成するだけです。 chronyを構成するには、refclock属性を指定するだけです。

$ grep refclock /etc/chrony.conf
refclock PHC / dev / ptp2 tai poll 0 trust

そして、非常に正確で安定したNTP Stratum 1サーバーをお楽しみください:

$ chronycソース
210ソースの数=1
MS名/ IPアドレスStratumPoll ReachLastRx最後のサンプル
===============================================================================
#* PHC0 0 0 377 1 + 4ns [+ 4ns] +/- 36ns

PTPサーバー(たとえば、ptp4u)の場合、最初にタイムカードPHCをNICPHCと同期する必要があります。これは、phc2sysツールを使用して簡単に実行できます。このツールは、通常1桁のナノ秒以内にとどまる高精度でクロック値を同期します。

$ phc2sys -s / dev / ptp2 -c eth0 -O 0 -m

精度を高めるには、タイムカードとNICを同じCPUPCIeレーンに接続することをお勧めします。精度を高めるために、タイムカードのPPS出力をNICのPPS入力に接続できます。

精度を検証および確認するために、複数のスイッチと独立したGNSSアンテナを介して同じネットワークに接続されたCalnexSentinelと呼ばれる外部検証デバイスを使用しました。 PPSテストとNTPおよび/またはPTPプロトコルを実行できます:

青い線はNTP測定結果を表しています。精度は、48時間の測定間隔全体で±40マイクロ秒以内にとどまります。

オレンジ色の線はPTP測定結果を表しています。オフセットは実質的に0で、ナノ秒の範囲内です。

実際、タイムカード出力とCalnexSentinelの内部リファレンスの間で1PPSを比較すると、合計エラー範囲は±200ナノ秒以内であることがわかります。

しかし、さらに重要なのは、これらの測定値がタイムアプライアンスの出力の安定性を示していることです。

GNSS信号が失われた場合、アトミックバックタイムカードのタイムドリフト(別名ホールドオーバー)が24時間あたり1マイクロ秒以内にとどまるようにする必要があります。これは、24時間間隔での原子時計(SA.53s)のホールドオーバーを示すグラフです。ご覧のとおり、PPSドリフトは300ナノ秒以内にとどまります。これは、原子時計の仕様の範囲内です。

タイムカードのモジュラー設計により、原子時計をオーブン制御の水晶発振器(OCXO)または温度補償水晶発振器(TCXO)と交換して、ホールドオーバー機能を妥協した低価格のソリューションを実現できます。

タイムアプライアンスの設計をオープンソーシングする

非常に正確で、安価で、ベンダーロックインのないデバイスを構築することは、それ自体が成果でした。しかし、私たちは業界により大きな影響を与えたかったのです。真に無料で、研究者から大規模なクラウドデータセンターまで、すべての人がオープンで手頃な価格にできるようにしたかったのです。

そのため、私たちはOpen Compute Project(OCP)と協力して、まったく新しいTime Appliance Project(TAP)を作成しました。 OCPの傘下で、仕様、回路図、メカニズム、BOM、ソースコードなど、Time Appliance ProjectGitHubリポジトリでオープンソースを作成しました。現在、PCBの印刷と小さなコンポーネントのはんだ付けが怖く聞こえない限り、誰でも通常のタイムアプライアンスの数分の1のコストで独自のタイムカードを作成できます。また、タイムカードを作成および販売するOroliaや、高精度タイミング対応のConnectX-6 Dx(および高精度タイミング対応のBlueField-2 DPU)を販売するNvidiaなどのいくつかのベンダーとも協力しました。

Open Time Serverの仕様をwww.opentimeserver.comで公開しました。この仕様では、ハードウェア(タイムカード、ネットワークカード、およびコモディティサーバー)とソフトウェア(OSドライバー、NTP、および/またはPTPサーバー)を組み合わせる方法が詳細に説明されています。 )タイムアプライアンスを構築します。この仕様に基づいてアプライアンスを構築すると、デバイスを保守するエンジニアが完全に制御できるようになり、監視、構成、管理、およびセキュリティが向上します。

タイムアプライアンスは、すべての人のタイミングインフラストラクチャを改善するための旅の重要なステップですが、やるべきことはまだたくさんあります。今後も、自社サーバーの同期の精度と精度の向上など、他の要素に取り組み、この作業をオープンコンピュートコミュニティと共有していきます。


埋め込み

  1. 時定数方程式
  2. 砂時計
  3. Pythonスリープ()
  4. 時は金なり:メンテナンスソフトウェアを使用して時間を節約し、より効率的に使うためのヒント
  5. メーカーが在庫管理についての古いアイデアを捨てる時間
  6. サプライチェーンリーダー、攻撃を仕掛ける時が来た
  7. デジタルツイン:西海岸の列車が時間通りに走るのを助けますか?
  8. Python-日付と時刻
  9. HMIとは何ですか?
  10. Crescent Crownは、自動化を実装することで、コストと時間の効率が向上します
  11. 製造と出荷をより合理化する方法