1. 12ふんかんで、なにを けいさん したの?
1. 月に降りる約12分間、コンピューターは何を計算していたのか
1. 降下約12分間の計算 ── 減速・レーダー・スロットル・表示
月に おりる のは、およそ 12ふんの できごとです[3]。この あいだ、コンピューターは いろいろな しごとを しました。
まず、はやさを おとす けいさん。月を まわって いた ときの はやさは、じそく 3800マイル(およそ 6100キロ)でした。それを、おりる ときの じそく 2マイル(およそ 3キロ)まで へらします[3]。
ほかにも、ふねの むきを きめる。エンジンの ちからを つづけて かえる。レーダーが はかった ものを とりいれる。ひょうじを あたらしくする。これらを ぜんぶ、コンピューターが やりました[3]。
ひこうしは、ひょうじと ボタンの ついた きかい(ディスキー)で コンピューターに はなしかけました。「どうし」と「めいし」の 2けたの ばんごうを うちこむ やり方です[4]。
ドン・アイルズさんと アラン・クランプさんは、3ねん かけて、つきに おりる ための しきを プログラムに かきなおしました[3]。
はやさを落とし、姿勢を決める
降下の約12分のあいだ、誘導コンピューターは、軌道を回る速さ(時速約3,800マイル、約6,100キロ)を、着陸の速さ(時速約2マイル、約3キロ)まで落とす誘導の計算をしました。着陸レーダーの測定値を航法に取り入れ、エンジンの出力を連続して調整し、船の向きを指示し、表示を更新する仕事も重なっていました[3]。
降下の最初の段階(P63)は、水平方向の速さを落とすことだけが目的でした[2]。エンジンの出力を決めるには、まず船の質量を計算します。質量が分かれば、加速度計で測った加速を、誘導の式が求める加速に変えるのに必要な推力の補正量が出ます[2]。
飛行士との会話は、番号で
飛行士との窓口は、表示とキーボードをもつDSKY(ディスキー)です。「動詞」と「名詞」の2桁の番号を打つと、コンピューターに指示を出したり、数字を見たりできました[4]。
誘導の式をプログラムに書き起こしたのは、MITのドン・アイルズさんとアラン・クランプさんたちで、3年がかりの仕事でした[3]。
降下で、AGCは何を計算していたのか。MITの記事によれば、約12分間に軌道速度(約3,800mph=約6,100km/h)から着陸速度(約2mph=約3km/h)まで減速させる誘導計算を行い、そのうえで着陸レーダーの測定を航法に取り込み、スロットルを連続制御し、姿勢を指示し、表示を更新した[3]。時速で約2,000分の1に落とす計算を、同時に複数の仕事とともにこなしたことになる(6,100÷3≒2,000、概算)。
では、その中身はどうなっていたか。降下の最初のP63(ピー63)は、水平方向の速度を落とすことだけを目的とする制動フェーズだった[2]。スロットル制御では、まず機体の質量を計算し、その質量から、加速度計の測定値を誘導式が指令する加速度へ変えるのに必要な推力の補正量を求める[2]。質量が減ると同じ推力でも加速が変わるため、補正が要る。
人との接点はDSKY(ディスキー)で、2桁の動詞(Verb)と名詞(Noun)の番号を打つ形式だった。大きさは8×8×7インチ(約20×20×18cm)、17.5ポンド(約7.9kg)である[4]。誘導式のプログラム化は、MITのドン・アイルズとアラン・クランプが3年にわたって進めた[3]。
2. その あたまは、どれくらい ちいさかったの?
2. 作り替えられる記憶は、2048語だけだった
2. 記憶容量と大きさ ── 2048語のRAMと36,864語のROM
コンピューターの きおくには、2しゅるい ありました。かきかえが できる きおくは、2048ご。かきかえが できない きおくは、36,864ごです[1]。
「ご」は、コンピューターが ひとまとめに あつかう かずの たんいです。「ご」の かずで くらべると、かきかえが できない ほうが、かきかえが できる ほうの 18ばい あります。
おもさは、およそ 70ポンド(およそ 32キロ)でした[4]。おとなの 人 ひとりぶん ほどの おもさで、あたまの かわりに しては、なかなか おもい きかいです。
2種類の記憶
AGCの記憶は2つに分かれていました。書き換えできるコアメモリが2048語、読み出し専用のコアロープメモリが36,864語です。1語は15ビットとパリティ(検査用)の1ビットでできています[1][5]。
検査用を除いて計算すると、書き換えできる側は約3万ビット(2048×15=30,720)、読み出し専用は約55万ビット(36,864×15=552,960)です。語数で比べると、読み出し専用は書き換えできる側の18倍です。今のスマホやパソコンの単位への換算は資料ごとに違うので、ここでは語数とビット数で示します。
重さと速さ
NASAの史料では、AGCの重さは70.1ポンド(約32キロ)、クロックは約1メガヘルツです[4]。
書き換えできる記憶が2048語ということは、いちどに「覚えておける」ことがとても少ないということです。大きなプログラムは読み出し専用の側に置き、書き換える数字は少しだけにする。この制約が、あとで「仕事を捨てる」設計と結びついていきます。
AGCの記憶は、書き換え可能なコアメモリ(RAM)2048語と、読み出し専用のコアロープメモリ(ROM)36,864語からなる。1語は15ビットにパリティ1ビットを加えた構成だ[1][5]。パリティを除いて数えると、RAMは30,720ビット、ROMは552,960ビットで、語数でもビット数でも、ROMはRAMの18倍(36,864÷2048)になる。
現代のバイトやKBへの換算は資料によって違いが出るため、語数とビット数で示すのが安全だ。同じ数を別の資料が示していることから、容量そのものは複数の資料で一致している[1][5]。
重さは70.1ポンド(約31.8kg)、クロックは1MHz程度である[4]。NASAは75台の製造を認め、57台が最終設計のBlock IIだった[4]。RAMが小さいので、同時に持てる仕事の数も、途中経過の数字も限られる。ROMの大きさは、プログラム側の余裕を示すが、書き換えはできない。この非対称が、のちの警報の章で効いてくる。
3. プログラムは、どうして はいせんで おられたの?
3. プログラムを、配線で織って作った
3. コアロープの原理 ── 芯に線を通す・よける
かきかえが できない ほうの きおくは、「コアロープ」と いいます。ちいさな 丸い しん(コア)に、ほそい 線を とおす か、よけるか して つくります。この 線を「はいせん」と いいます。
線を とおすと「1」、よけると「0」を あらわします[6]。これが ぶんしょうの 文字の かわりに なります。
ぬのを おる ように、はいせんで おって つくる ので、アメリカの ウォルサムという まちでは、ぬう わざを もった じょせいたちが あつめられました。まちの ぬのを つくる しごとで、その わざを みがいた 人たちです[7]。
1つの モジュールを つくるのに、およそ 8しゅうかん かかりました[6]。いちど つくったら かきかえは できません。だから、プログラムは おる まえに しあげて おく ひつようが ありました。
芯に通すか、よけるか
コアロープでは、小さな磁性体の芯に線を通すと1、線が芯をよけると0を表します。1つの芯に最大192本分の検出線が対応し、1つの芯が12語ぶんのデータをもつので、同じ重さに多くの情報を入れられました。いちど作ると書き換えられません[6]。
織り手は、地元の「ぬう」名人たち
コアロープは、アメリカのマサチューセッツ州ウォルサムにあるレイセオン社で作られました。織り手の女性たちは、地元の繊維産業で身につけた縫う技術を買われて集められました[7]。
針に通した線を、板の両側にすわった人が行き来させて、決まった模様をつくる工程です[7]。1モジュールの配線には約8週間かかったと書かれています[6]。
プログラムを配線で織って作るので、書き換えがききません。だから、ソフトは織りはじめる前に仕上げておく必要がありました。1本の線の通し方まちがいが、そのまま命令のまちがいになるからです。
コアロープの原理は、芯(コア)に検出線を通せば1、よければ0、というものだ。1つの芯に最大192本分の検出線が対応し、1つの芯が12語分のデータを保持するため、同じ重さにより多くの情報を詰められた。一度作ると書き換えはできない[6]。
「配線がそのままプログラム」の方式では書き換えができないので、プログラムは織りはじめる前に確定していなければならない。実際、レイセオン社(米マサチューセッツ州ウォルサム)の織り手の女性たちは、地元の繊維産業から縫う技術を買われて集められ、針に通した線を板の両側から行き来させる作業で配線した[7]。1モジュールに約8週間かかった[6]。
ソフトを「織る」という言い方は、資料の筆者による比喩とみられる。ただ、書き換えできないという制約は、設計者が完成後の修正に頼れないことを意味する。その分、事前の試験が大切だったと考えられる(これは筆者の推論で、資料が直接述べたものではない)。
4. おりる とちゅうで、どうして けいほうが なったの?
4. 降下の途中、警報が5回鳴った
4. 1201/1202警報 ── レーダーのスイッチが計算時間を奪った
けいほうが なった のは、おりる とちゅうの 4ふんかんの ことです。1かい めから 5かい めまで、4ふん 36びょうの あいだに、5かい なりました[10]。
どうして なったのでしょう。レーダーの スイッチが、のぞんだ ばしょと ちがう ところに あったのが きっかけでした。いらない しごとが コンピューターに つぎつぎ はいって、けいさんの 時間の 1わり ちょっとが つかわれて しまいました[1]。
コンピューターの 時間は、しごとを する ための「もちじかん」です。いらない しごとで うまると、たいせつな しごとの 時間が たりなく なります。
4分半に5回
アポロ11号の降下中の警報は、ミッション経過時間で102時間38分22秒、102時間39分02秒、102時間42分18秒(これが1201警報)、102時間42分43秒、102時間42分58秒の計5回でした[10]。最初から最後まで約4分36秒です。
原因は、スイッチの位置
コンピューターを設計・プログラムした側の説明では、ランデブーレーダー(着陸レーダーとは別のレーダー)の切りかえスイッチの位置のせいで、存在しないレーダーデータの処理が繰り返し予定に入りました。それが、処理が最大の速さで進んだとき、使える計算時間の約15%を使ったと書かれています[1]。当時の保守的な見積もりは約13%でしたので、「約1割強」と読むのが安全です。
そのあとレーダーのデータが入り、飛行士がモニター表示(V16N68)を足したことで、計算の余裕は10%以下になりました[1]。余裕がここまで減ると、新しい仕事を置く場所が足りなくなります。
この警報は、プログラムが「これ以上、仕事を置く場所がない」と知らせる合図でもあります。ではコンピューターは、そのあと何をしたのでしょうか。
警報の回数は、降下の途中でどう並んだのか。Discoverの整理では、ミッション経過時間の102:38:22、102:39:02、102:42:18(1201警報)、102:42:43、102:42:58の計5回である[10]。最初から最後までの差は4分36秒だ。ほかの4回は1202警報で、MITニュースが「4回の1202」と書くのと整合する。
原因は、ランデブーレーダーの切りかえスイッチの位置だった。そのため、存在しないレーダーデータの処理が繰り返し予定に入り、計算時間の約15%を使った(担当プログラマEylesの記述。当時の見積もりは保守的に約13%だった)[1]。15%は処理が最大の速さで進んだときの値、13%は当時の保守的な見積もりで、条件がちがう。どちらも約1割強の負担だったと読める。
さらに、レーダーのデータ取得後は余裕が減り、モニター表示V16N68を足すと余裕は10%以下になった[1]。NASAのアポロ月面ジャーナルは、1201警報を「空きのVAC領域がない」、1202警報を「空きのコアセットがない」状態とし、プログラムは警報/中止ルーチンに分岐すると説明する[8]。ただし1201と1202の割り当ては資料で入れ替わって読める箇所があるので、名称より動作を重視する。
5. けいほうが なっても、どうして おりつづけられたの?
5. 警報のあとコンピューターは「大事な仕事だけ」を再開した
5. 再起動と優先度 ── 何を再開し、何を捨てたか
けいほうが なった とき、コンピューターは いちど やりなおし(さいきどう)を しました。それから、だいじな しごとだけを やりなおしました[8]。
だいじな しごとは、エンジンを あやつる こと と、ひょうじを だす こと です。まちがって はいった レーダーの しごとは、やりなおしませんでした[8]。
たとえば、ごはんを つくりながら、せんたくと そうじと しゅくだいの まるつけまで たのまれて、てが いっぱいに なったと します。そこで、ごはんだけ のこして、ほかは「あとで」にする。コンピューターが やったのは、これに にて います。ただし ほんとうは、「あとで」では なく、しごとを すてて いました。
プログラムは、しごとごとに だいじさの ばんごうを つけて つくられて いました[9]。
再起動のあと、残したもの
NASAのアポロ月面ジャーナルによると、警報で再起動したコンピューターは、降下エンジンの操縦とDSKYの表示のような大事な仕事を再開しました。まちがって予定された余計なレーダー処理は、再開しませんでした[8]。
プログラマのアイルズさんは、再起動が、たまった仕事のうち最新の1つだけを作り直し、未完了の「断片」を捨てたと説明しています。もともとは機器の一時的な誤作動のための仕組みでしたが、ソフトが渋滞したときに負荷を捨てる役にもなりました[2]。
仕事に優先度をつける設計
MITのマーガレット・ハミルトンさんの回想では、ソフトは優先度の高い仕事が低い仕事に割りこめる設計で、すべての処理に固有の優先度がつけられていました。1201/1202の警報はふだんの表示に割りこんで出て、飛行士にレーダースイッチを正しい位置にするよう促し、地上にも状況を伝えました[9]。
ハミルトンさんの文章は本人の回想で、多くの技術者が関わった仕事の一部です。「一人で救った」とは読めません。
警報のあと、コンピューターは何を再開したのか。NASAのアポロ月面ジャーナルは、警報で再起動したコンピューターが降下エンジンの操縦やDSKYの表示のような重要な仕事を再開し、誤って予定されたレーダー処理は再開しなかったと述べる[8]。つまり警報は故障の合図ではなく、仕事を整理し直す合図として働いた。
この「捨てる」動きの出どころを、Eylesは次のように説明する。ソフトウェアの再起動は、SERVICERという仕事の最新のものだけを作り直し、たまっていた未完了の「断片」を捨てた。もとは機器の一時的な誤作動に備えた保護機能だったが、結果としてソフト側の渋滞で負荷を捨てる手段にもなった[2]。設計の目的と、実際に役立った場面が一致していなかった点が面白い。
これを支えたのが、非同期の設計だった。ハミルトンの回想では、優先度の高い仕事が低い仕事に割りこめるようにし、すべての処理に固有の優先度を与えた。警報はふだんの表示に割りこむ優先表示として出て、飛行士にレーダースイッチを正しい位置にするよう促し、地上にも状況を知らせた[9]。ただしこれは本人の回想で、他の多くの技術者の仕事を含むため、一人の功績としては書かない。
6. ちじょうの 人は、どうして「ゴー」と いえたの?
6. 地上はなぜ「続行(ゴー)」と言えたのか
6. 地上の判断とP66 ── 「ゴー」を支えた事前の試験
ちじょうの かんせい室でも、けいほうが なると すぐ しらせが とどきました。ステーブ・ベイルズさんが「ゴー」を 出したと つたえられて います[11]。「たまにしか 出なければ だいじょうぶ」という きまりを ふまえた はんだんだった、と いわれます。
チャーリー・デュークさんは、アームストロングさんに「その けいほうは ゴー」と つたえました[10]。
MITの ぎじゅつしゃたちは、やりなおしの きのうを じゅうぶんに ためして いました[11]。ちじょうの 人は、その ことを しって いたと つたえられて います。
アームストロングさんは、たかさ 500フィート(およそ 150メートル)ぐらいで、手うごきに ちかい モード(P66)に はいりました[2]。P66に はいって から ちゃくりくまでの 2ふん 20びょうは、けいほうが 出ずに かじを とって、ふねは おりました[2]。
管制室に伝わった判断
MITの技術者たちは再起動の機能を十分に試験していました。地上の管制室は、そのことを知っていた、と伝えられます[11]。誘導担当のステーブ・ベイルズさんが「ゴー」を出し、地上のチャーリー・デュークさんが船のアームストロングさんに「その警報はゴー」と伝えました[10]。
最後の2分20秒
アームストロングさんは、高度約500フィート(約150メートル)で、手動に近いモードP66に入りました。P66では計算の負担がさらに軽くなります。P66に入ってから着陸までの約2分20秒は、警報なしで操縦され、月着陸船は着陸しました[2]。
高度は、MITニュースの記述にもとづく約の数字です[3]。
地上はなぜ続行を言えたのか。MITの技術者たちが再起動機能を十分に試験しており、地上の管制室はそのことを知っていた、と伝えられる[11]。誘導担当のステーブ・ベイルズ(Steve Bales)が「ゴー」を出した。地上のチャーリー・デュークは、船へ「その警報はゴー」と伝えた[10]。
ここで言えるのは、再起動の動きが事前に試験され、管制室にも知られていたという点だ。ベイルズが訓練での経験をどう判断に使ったかは、資料で食いちがうため踏みこまない。
降下の終盤、アームストロングは高度約500フィート(約150m)で半手動のP66に入った。P66は、飛行士が降下率スイッチで指示し、コンピューターが推力を制御して降下率を保つモードで[2]、計算の負担はまだ軽い。P66に入ってから着陸までの約2分20秒は警報なしで操縦され、月着陸船は着陸した[2]。500フィートはMITニュース、2分20秒はEylesの記述で、出典が分かれるため「約」で示した[3]。
7. 「やる ことカード」で、すてる しごとを きめて みよう
7. 「やることカード」で、手放す順番を決めてみる
7. 出口 ── 優先度を家で試す、資料の読みどころ
よるの 「やる こと」を、かみに 5つ かいて みましょう。たとえば、しゅくだい、おふろ、はみがき、あしたの じゅんび、えほん です。
つぎに、いちばん だいじな ものに 1、そのつぎに 2…と ばんごうを つけます。じかんが たりない 日は、ばんごうの おおきい ものから あと まわしに します。
ただし、アポロの コンピューターは、人が きめた ばんごうで うごいて いました。じぶんの ばんごうは、おうちの 人と そうだん して きめましょう。
夜の「やること」を紙に5つ書いて、いちばん大事なものから1、2、3…と番号をつけてみます。たとえば、宿題、おふろ、はみがき、明日の準備、絵本です。
時間が足りない日は、番号の大きいほうから手放します。手放したことで何が困るかを考えると、AGCが仕事に優先度をつけた理由が少しだけ見えてきます。用事は、頭の中で作った架空のものでかまいません。
もうひとつ、読んでいて残る問いがあります。手放した仕事の中に、あとで必要な仕事が混じっていたら、どうなるのでしょうか。設計者たちは、何を残し、何を手放すかを、飛ぶ前に決めておく必要がありました。コアロープが書き換えできなかったことと、この問いは、つながっているように見えます。
家で優先度を試すなら、夜のやることを紙に5つ書き、重要な順に番号をつけ、時間が足りない日は番号の大きい順に手放す。人が決めた番号に従って動くという点は、AGCの優先度の設計と同じ考え方だ。番号は家族と相談して決める。
読み進めたい人のために、原典を挙げる。Eyles, Tales from the Lunar Module Guidance Computer(英語)[2]は、再起動と優先度の説明のもとになった。NASAのアポロ月面ジャーナル[8]は、1201/1202警報の表示と通信記録が読める。Hamiltonの回想[9]は、非同期設計のねらいを本人の言葉で述べる。いずれも英語で、日本語の一次資料は今回は使っていない。
残る問いは、次のとおりだ。優先度の決め方は設計者がどう決めたのか。再起動のしくみは、一時的な誤作動のために作られたのに、なぜ負荷を捨てる役にも立ったのか。手放した仕事の中に、あとで要る仕事が混じる危険は、どう見積もられたのか。ここは、原典に当たって確かめる価値がある。
しらべた もとの じょうほう
参考にした情報源
参考にした情報源と、その使い方
出典について:NASAの史料、MITのニュース、技術者本人の記述、記憶装置の解説サイト、報道を使った。何に使ったかは、それぞれの項目の最後に書いている。
- Don Eyles, Tales from the Lunar Module Guidance Computer (2004). https://klabs.org/history/apollo_11_alarms/eyles_2004/eyles_2004_z.htm (記憶容量、警報の原因と計算時間の数字について。一次資料)
- Don Eyles, Tales from the Lunar Module Guidance Computer. https://www.doneyles.com/LM/Tales.html (P63・P66、スロットル制御、再起動の説明について。一次資料)
- MIT News, 2009年「Apollo 11の誘導コンピューター」(Eylesの話)。https://news.mit.edu/2009/apollo-eyles-0717 (降下約12分間の計算の内容、開発者について)
- NASA History, Computers in Spaceflight, Ch.2-5. https://www.nasa.gov/wp-content/uploads/static/history/computers/Ch2-5.html (重さ・クロック・DSKY・製造台数について)
- Ken Shirriff, Inside the Apollo Guidance Computer's core memory (righto.com, 2019). https://www.righto.com/2019/01/inside-apollo-guidance-computers-core.html (記憶容量の照合について。二次資料)
- Ken Shirriff, Software woven into wire (righto.com, 2019). https://www.righto.com/2019/07/software-woven-into-wire-core-rope-and.html (コアロープの原理と作業の長さについて。二次資料)
- Science News, 配線で織るコアメモリと織り手たちの記事。https://www.sciencenews.org/article/core-memory-weavers-navajo-apollo-raytheon-computer-nasa (織り手と作業の工程について。報道)
- NASA, Apollo 11 Lunar Surface Journal, 1201/1202 program alarms. https://www.nasa.gov/wp-content/uploads/static/history/alsj/a11/a11.1201-pa.html (1201/1202警報と再起動後の動きについて。一次資料)
- Margaret Hamilton, What the Errors Tell Us, IEEE Software (2018). https://wehackthemoon.com/sites/default/files/2019-07/what-the-errors-tell-us-3%20%281%29.pdf (優先度つきの非同期設計について。本人の回想)
- Discover, Apollo 11's 1202 Alarm Explained. https://www.discovermagazine.com/the-sciences/apollo-11s-1202-alarm-explained (警報の時刻と地上の返答について。報道)
- Space.com, ジャック・ガーマンの訃報記事。https://www.space.com/34135-jack-garman-apollo-11-obituary.html (地上の判断について。報道)
なおした ところ
更新履歴
更新履歴(改版の記録)
- 初版を公開。
このサイトでは、公開した記事の本文は原則として書き直しません。誤りが見つかったときや、内容が古くなったときだけ手を入れ、その理由をこの欄に残します。