TEKNOLOJİCİ15

1969コンピューター4 KB4 分

アポロ11号のコンピューター: 「4KBのメモリ」は実際には何を意味する?

アポロ11号を月に着陸させたコンピューターのRAMは約4KBでした。プログラムは、編み込まれた約72KBのROMに収められていました。

「月へ行ったコンピューターのメモリは、1枚の写真よりも小さかった」という話は、きっと聞いたことがあるでしょう。動画でも私たちは「4KB」と言いました。この数字は正しいのですが、それだけでは不十分です。アポロ誘導コンピューター(Apollo Guidance Computer、略してAGC)には実は2つの別々のメモリがあり、「4KB」はそのうち小さいほうだけを指しているからです。

では、この有名な数字の中身を一緒に開けてみましょう。

「4KB」は正確には何を指す?

AGCの作業用メモリ、つまり今でいうRAMにあたる書き換え可能なメモリは、2,048「ワード」でできていました。1ワードは16ビットの長さで、15ビットがデータ、1ビットがエラー検出のためのパリティでした。1ワードを2バイトと数えると、2,048ワードは約4KBになります。つまり「4KB」とは、コンピューターが飛行中に計算に使うメモ用紙の大きさのことです。

プログラムは、このメモリの中にはありませんでした。そこにあったのは、現在位置、速度、カウンター、そしてタスク間で受け渡される途中経過の結果です。メモリは磁気コア(core)と呼ばれる小さなリングでできていて、電源が切れても内容を保持しました。

プログラムはまったく別の場所、36,864ワードの固定メモリ、つまりROMにありました。同じ計算で、これは約72KBです。要するに、より正確な言い方はこうです。アポロ11号は、約4KBのRAMと約72KBのROMで月に降りたのです。

プログラムは編み込まれていた

AGCのROMは「コアロープ」(core rope)メモリで、文字どおり手で編まれていました。ワイヤーが磁気コアの中を通っていればそのビットは1、コアのそばを回っていれば0になります。つまりソフトウェアは、布のように織られることでハードウェアに変換されたのです。

この作業を行ったのは、マサチューセッツ州ウォルサムのRaytheonの従業員たちでした。Ken Shirriffさんの詳しい調査によれば、採用された人の多くは、裁縫の技術を買われた地元の繊維産業出身の女性たちでした。1つのモジュールを編むのに約8週間かかり、費用は1万5,000ドルでした。各モジュールは6千ワードを保持し、6つのモジュールで合計36,864ワードになりました。

この副作用は重大でした。ソフトウェアは、飛行の何か月も前に凍結しなければなりませんでした。直前のパッチというものはありません。バグを直すことは、編み直すことを意味したからです。

着陸の数分前に鳴った警報

1969年7月20日の着陸中、月着陸船のコンピューターは画面にまず1202、続いて1201の警報を出しました。どちらも「エグゼクティブ・オーバーフロー」を意味していて、コンピューターが処理できる以上の仕事を負わされていたのです。Wikipediaの詳しい説明によれば、原因は、待機状態にされていたランデブーレーダーからの偽の信号がプロセッサを占有したことでした。問題は、プログラムのミスでも、パイロットのミスでも、ハードウェアの故障でもありませんでした。根本的には、2つのシステムの間のインターフェース文書の不備から生まれたものでした。

本当に興味深いのは、このときソフトウェアが何をしたかです。AGCは優先度ベースのスケジューラで動いていました。過負荷になると素早く自分を再起動し、優先度の低い仕事を手放して、着陸の制御のような重要なタスクを続けました。つまり、あの有名な小さなメモリは、賢く管理されていたからこそ足りたのです。

さらに事態を難しくした細部がもう1つありました。バズ・オルドリンが着陸中にコンピューターに入力した1668コマンドが、すでに苦しんでいたプロセッサに追加の負荷をかけ、もう1つの1202警報を引き起こしたのです。ソフトウェアはこれも同じように乗り切り、イーグル(Eagle)は月面に降り立ちました。

ソフトウェアはMIT計測研究所で開発されました。司令船のソフトウェア(COLOSSUS)と月着陸船のソフトウェア(LUMINARY)は、別々のチームが担当しました。細部の実装は、マーガレット・ハミルトンが率いるチームが行いました。

当時と今

アポロ誘導コンピューター(1969年) 今のスマートフォン
約4KBの書き換え可能メモリ(RAM) ギガバイト級のRAM
約72KB、手で編まれたROM 数百ギガバイトのストレージ
ソフトウェア更新に数か月の編み込み 夜のうちに勝手に入るアップデート
約32kg 手のひらに収まる

数字が教える本当のこと

「4KB」という数字は、たいてい「なんて原始的だったんだ」という文脈で語られます。しかし物語の本質は、その正反対です。限られたメモリが、エンジニアたちに、すべてのビットの使い道を説明させたのです。タスクに優先順位をつけ、過負荷のときに自力で立て直すソフトウェアは、そうして生まれました。

いま私たちのポケットにある機器は、比べものにならないほど多くのメモリを持っていますが、多くのアプリはそこまで丁寧には書かれていません。メッセージアプリの1回のアップデートが、アポロのソフトウェア全体よりずっと大きいことさえあります。

あなたはどう思いますか。制約のほうがよいエンジニアを育てるのでしょうか、それとも豊かさのほうでしょうか?

出典

  1. Apollo Guidance Computer (Wikipedia)
  2. Software woven into wire: Core rope and the Apollo Guidance Computer (Ken Shirriff, righto.com)

同じ棚から

年1969