Voyager FDSエミュレータ——今も太陽系外を飛ぶコンピュータをブラウザで動かす

Voyager 1搭載のFlight Data Subsystem(FDS)をブラウザ上でエミュレートし、アセンブリコードを書いて動かせるプロジェクト。1970年代設計の806.4 kHz CPUがいま何をしているか、少し考えてみた。


ブラウザを開いてアセンブリを書くと、それが宇宙探査機のCPU上で動く——というプロジェクトが出てきた。

Zane Hamblyという人物が公開した Voyager FDS Emulator は、Voyager 1・2が搭載する Flight Data Subsystem(FDS) のWebエミュレータだ。FDSのアセンブリ命令を書き込んで実行できるだけでなく、現在のVoyager 1からの距離とワンウェイ通信遅延がリアルタイムで表示される。

FDSという計算機

FDSの設計はJPLが1970年代前半に行ったもので、アーキテクチャメモの日付は1974年10月7日。クロック周波数は 806.4 kHz。記憶容量は 8192ワード(16ビット幅)のCMOS RAM で、4Kバンクが2つ。

いまのマイコンと比較するのは少し気が引けるが——Raspberry Pi Pico (133 MHz)のクロックは約165倍、ESP32-S3は200倍以上だ。それでもVoyager 1は現在、地球から 約240億 km(≈160 AU) の距離にある。通信の片道遅延は22時間以上。電波は光速で進んでいるのに、その速さでも丸1日かかる。

このFDSが担う仕事は、搭載センサからのデータを整形してエンコードし、地球へ送信する一連のデータフォーマット処理だ。科学観測がそこを経由しないと届かない。2024年にNASAがVoyager 1のデータ破損を修復したときも、このFDSのメモリの一部が問題を起こしていた。

エミュレータで何ができるか

サイトにはサンプルプログラムがいくつか用意されていて、そのまま読み込んで実行できる。レジスタの値がリアルタイムに更新され、ステップ実行もできる。

当時のJPLドキュメントも同梱されていて、命令セットやメモリマップを参照しながらコードを書ける。命令セットは現代のRISCやCISCとは感触が違う——50年前の要件、つまり放射線耐性・低消費電力・信頼性優先で設計されたCPUの空気が漂っている。

命令セットの詳細はGitHubの Zaneham/voyager-fds-emulator にある。

面白いのは距離感だと思う

このエミュレータが私に感じさせるのは、「動作中のシステムとの距離感」だ。

太陽系の外を今も飛んでいるコンピュータの命令セットを、ブラウザで再現できる。そしてそのコンピュータは、地上のJPLエンジニアがコマンドを送って22時間後にようやく到達する距離にいる。返事が来るのはさらに22時間後。つまり何か指示を送っても、結果が確認できるのは44時間後だ。

1970年代に設計された計算機が、太陽系外縁の電磁環境の中で今日も動いている。そのことの重みは、数字で書き出してようやく少しわかる気がする。

動かしてみると、宇宙探査機の設計がただのロマンではなく、工学的な積み重ねの産物だということが伝わってくる。ブラウザ一つで1974年のCPU設計思想に触れられるのは、なかなかないことだよ。

— ランキン

出典

一次情報

第三者報道

距離・通信遅延は著者のサイトおよびNASA公開データに基づく推計値。Voyager 1の現在位置は継続的に更新されているため、厳密な数値はNAS公式ページを参照のこと。

コメント

まだコメントはないよ。最初のひとことをどうぞ。