Voyagerは交信していた。地球側がそれを読み取れなかっただけだった。
2023年11月14日、Voyager 1にとって深刻な通信障害が始まった。地球から150億マイル以上離れたこの歴史ある宇宙船は、指令の受信と実行を続けており、その運用上の完全性は健在であることを証明していた。しかし、かつては科学・工学データの豊富なストリームであったダウンリンクのテレメトリが、意味をなさない0と1の繰り返しパターンへと劣化してしまった。
この異常は、Voyager 1に搭載された3台のコンピュータのうちの1つであるFlight Data Subsystem (FDS)内で発生した。FDSは、すべての科学・工学データを宇宙船の送信機に中継する前にパッケージ化する役割を担っている。これは通信の途絶ではなく、地球はVoyagerに「話しかける」ことはできたが、宇宙船側が解読可能な言語で「返答」できなくなったという状況だった。
星間距離を超えてこのようなパラドックスを解決することは、途方もない挑戦であった。光速で移動する各信号は、片道で約22.5時間を要する。つまり、診断の各ステップ、試行された修正、そして確認作業のすべてに2日近くかかることになり、トラブルシューティングは太陽系の果てにある機械との、骨の折れる長期的なやり取りへと変貌した。
「突き(Poke)」がコンピュータの内部を暴く
2024年3月、NASAのエンジニアは重要な診断操作を開始した。彼らは「poke(突き)」と通称される指令を送信し、Voyager 1のFlight Data Subsystem (FDS)に異なるソフトウェアパスを実行させた。2日後、Deep Space Networkは新しい信号を受信した。それは、FDSの実行コードと変数を含む、メモリダンプの全データであった。
この新しいダンプと、故障前の初期ベースラインを比較することで、チームは4月に異常を特定した。1つのmemory chipが故障しており、FDSの全メモリの約3%が破損していた。これは単純で孤立したビットエラーではなく、そのチップ特有のアーキテクチャがより広範囲な問題を引き起こしていた。
FDSのメモリはデータを16-bit words単位で構成している。故障したチップは、連続する256ワードにわたる特定の1ビットを担当していた。その故障により、その256ワードのそれぞれで該当ビットが使用不能となり、結果としてFDSプログラム全体で呼び出される重要なシステムルーチンの大きなブロックが破損した。残された課題は、150億マイル離れた場所から、この修復不可能なハードウェア損傷を回避することであった。
パッチは隙間に適合しなければならなかった
150億マイル離れた場所から故障したチップを交換することは、当然ながら不可能であった。エンジニアたちは、損傷したメモリを回避することに注力した。問題は、故障したチップが連続する256個の16-bit wordsの各1ビットに影響を与え、重要なシステムルーチンを破損させていたことである。これらのルーチンを移動させるには、それらを収容できる十分な大きさの新しい連続したメモリブロックを見つける必要があったが、FDSにはそれほどの空き容量がどこにも存在しなかった。
エンジニアたちは巧妙な回避策を考案した。破損したルーチンを小さな断片に分割し、FDS内の利用可能な非連続的なメモリ領域のあちこちに分散させたのである。これには、これらのルーチンを呼び出すプログラムのすべての場所を細心の注意を払って更新し、システムが分散した各断片を確実に探し出せるようにする必要があった。
この全プロセスは、現代のツールの恩恵を受けることなく展開されました。Voyagerの1970年代のアーキテクチャでは、適切なアセンブラが存在しなかったためです。チームはコードの変更とメモリアドレスをすべて手作業でバイナリに変換するという、低レベルエンジニアリングの精度を証明するような苦労を重ねました。初期診断の詳細については、「Engineers Pinpoint Cause of Voyager 1 Issue, Are Working on Solution」をご覧ください。2024年4月18日、彼らはエンジニアリングデータ用の最初のパッチをアップリンクし、2日後に読み取り可能な状態に復旧させました。
この記事が気に入ったら、毎朝同じようなものをメールで受け取れます。
1日1通 · 2クリックで解除 · サードパーティのトラッキングなし
150億マイル先へのアップデート、ビット単位の挑戦
NASAのエンジニアは2024年4月18日にエンジニアリングデータのコードをアップリンクしました。その2日後の4月20日、読み取り可能なエンジニアリングテレメトリが戻り、5ヶ月間の通信途絶が終了しました。これは故障したメモリチップの物理的な修理ではなく、Deep Space Networkを介して150億マイルの彼方に届けられたソフトウェアによる回避策でした。
この修正には、FDSメモリのバイト単位での精密な操作が必要でした。エンジニアは破損したルーチンを手作業で分割し、その断片を空いているメモリ領域に分散させて配置しました。彼らはFDSファームウェア内でこれらのルーチンを呼び出すあらゆるアドレスを丹念に更新し、現代のアセンブラの助けを借りずに各変更をバイナリに変換しました。
Voyager 1の復旧は、レガシーシステムを維持するために必要な創意工夫を物語っています。この繊細なメモリ管理のダンスが、歴史ある探査機を存続させました。最初の修正に続き、エンジニアは科学機器のルーチンを再配置し、2024年6月までに4つのアクティブな科学機器すべてを復旧させました。
しかし、このミッションは人間の粘り強さと、絶え間なく流れる時間の両方を証明し続けています。電力の制約は依然として探査機を制限しており、2024年後半のメインXバンド送信機の問題のようなその後のハードウェアトラブルは、47年経過した探査機を星間空間で運用し続けることの継続的な課題を浮き彫りにしています。
よくある質問
Voyager 1が読み取り不可能なデータを送信した原因は何ですか?
メモリチップの故障により、Flight Data Subsystemのメモリの約3%が破損し、テレメトリをパッケージ化するために使用されるルーチンが損傷しました。
NASAはどのようにしてVoyager 1の損傷したメモリを回避しましたか?
エンジニアは影響を受けたコードを断片に分割し、空いているメモリ領域に分散配置した上で、それらを呼び出すルーチンのアドレスを更新しました。
なぜエンジニアはVoyager 1のソフトウェア変更をバイナリに手作業で変換したのですか?
チームはVoyagerの古い独自のコンピュータアーキテクチャに対応するアセンブラを持っていなかったため、変更内容を機械語に手作業で変換する必要がありました。
Voyager 1がエンジニアリングデータの送信を再開したのはいつですか?
NASAは2024年4月18日にエンジニアリングデータのパッチをアップリンクし、2日後に読み取り可能なデータが到着しました。

