Apollo 11ミッションのコードに使用される開発プロセスは?


57

アポロの任務には、電卓ほど複雑な技術はなかった。

こちらのリンクから、Apollo Guidance Computer(AGC)に関する情報があります

オンボードのApollo Guidance Computer(AGC)は約1立方フィートで、2Kの16ビットRAMと36Kのハードコアコアロープメモリで、銅線は小さな磁気コアに通されているか、通されていません。16ビットワードは通常、14ビットのデータ(または2つのオペコード)、1符号ビット、1パリティビットでした。サイクルタイムは11.7マイクロ秒でした。プログラミングはアセンブリ言語と逆ポーランド語の解釈言語で行われました。

そのため、そこにあるものを調査したときにいくつかのソースコードに出くわし、素晴らしいコメントに気付きました(たとえば、TEMPORARY、I HOPE HOPE HOPE)

VRTSTART    TS  WCHVERT
# Page 801
        CAF TWO     # WCHPHASE = 2 ---> VERTICAL: P65,P66,P67
        TS  WCHPHOLD
        TS  WCHPHASE
        TC  BANKCALL    # TEMPORARY, I HOPE HOPE HOPE
        CADR    STOPRATE    # TEMPORARY, I HOPE HOPE HOPE
        TC  DOWNFLAG    # PERMIT X-AXIS OVERRIDE
        ADRES   XOVINFLG
        TC  DOWNFLAG
        ADRES   REDFLAG
        TCF VERTGUID

宇宙船の実際のプログラムはコアロープメモリに格納されていました。コアメモリは、(文字通り)布/ロープを織り込んで作られた古代のメモリ技術で、ビットはフェライト材料の物理的なリングでした。「コア」メモリは宇宙線に耐性があります。宇宙空間で放射線が照射されても、コアビットの状態は変わりません。

Virtual Apollo Guidance Computer(AGC)ソフトウェアもGITHUBにあります!

ドキュメントの一部はここにあります。

すばらしいコメント付きのソースコードの別のサンプル。

033911,000064: 32,3017    06037        FLAGORGY        TC       INTPRET      #  DIONYSIAN FLAG WAVING

    034090,000243: 32,3241    13247        BZF      P63SPOT4               #  BRANCH IF ANTENNA ALREADY IN POSITION 1
    034091,000244: 
    034092,000245: 32,3242    33254        CAF      CODE500                #  ASTRONAUT:     PLEASE CRANK THE
    034093,000246: 32,3243    04616        TC       BANKCALL               #                 SILLY THING AROUND
    034094,000247: 32,3244    20623        CADR     GOPERF1                               
    034095,000248: 32,3245    16001        TCF      GOTOP00H               #  TERMINATE
    034096,000249: 32,3246    13235        TCF      P63SPOT3               #  PROCEED        SEE IF HE'S LYING


    034101,000254: 32,3251    04635        TC       POSTJUMP               #  OFF TO SEE THE WIZARD ...
    034102,000255: 32,3252    74126        CADR     BURNBABY

ここに私の質問はこれです:

  • 当時のツールを考えると、チームはどのくらいこの量のコードを書いて機能させることができましたか?

Apollo 11で使用されたコードを大量にコンパイルすると...数日、数週間もかかるからです。私は、プログラマーが当時のすべてを偶然に残していたことを真剣に疑っています。


4
できればこれをもっと話題にするために、かなり重要な編集を行いました。それは魅力的な質問だと思うし、人々が効果的に答えられることを望んでいる!
エンダーランド

3
ハッカー神話男月間を読んでください。そこにはかなりの量の資料があります-ここで答えに合うかどうかはわかりません。

2
Stack Exchangeでは、「タグ-質問」スタイルの質問タイトルは推奨されていません。タイトルはそのままにしてください。

4
あなたの質問が示唆するようなコンパイル/修正サイクルはありませんでした。ロープメモリを作成せずにテストし、動作しない場合はやり直します。あなたは最初にそれを正しくしました。
ロバートハーベイ

7
@RobertHarveyあなたHOPE HOPE HOPEは最初にそれを正しく取得します。

回答:


13

John 'Jack' Garmanが "優先度がスケジュールされたマルチプログラミングオペレーティングシステム"を "発明"しなければならなかったことを追い詰めようとしている素敵なドキュメンタリーがありました。ただし、これは着陸船モジュールに関連している可能性があります。ストーリーは、着陸機を着陸させるとき、次の15秒間のキャビン内の温度など、他の事柄がクラッシュして火傷しても実際には問題にならないため、ガイダンスを優先する方が良いということでした。最初のショットでは、コンピューターが過負荷になり、一部のサブルーチンが実行されなかったためにアラームが発生し始めました。あまりにも多くの負荷がありましたが、ガーマンはそれが良いアイデアだと思ったので、それを予見して組み込んだ優先度の概念のおかげで、優先度の低いルーチンは優先度の高い着陸ルーチンを動かしませんでした。

当時のドキュメンタリーを見て、経営陣に伝えることなくコードの主要なリファクタリングを行い、作業に遅れていたために解雇されそうになったことに感銘を受けました。ただし、この場合、アラームの理由が調査されたときにリファクタリングが明らかになりました。(そして管理はまだ怒っていました!:-)

いくつかのリンク:

いいえ、「チェックリストエラー」は最初の月面着陸をほとんど妨げませんでした

LUNAR MODULE GUIDANCEコンピューターからの物語

構築方法:Apollo 11のソフトウェア

NASAジョンソン宇宙センターオーラルヒストリープロジェクト編集オーラルヒストリートランスクリプト

NASAのアポロ計画 抜粋の簡単な歴史:降下火傷から5分、月面から1,800 m の地点で、LMナビゲーションおよびガイダンスコンピューターは、いくつかの予期しない「1202」および「1201」プログラムアラームの最初を生成しました。ヒューストンのミッションコントロールセンターのジャックガーマンのコンピューターエンジニアは、降下を続けるのは安全だと指導官のスティーブベールズに語った。これらのアラームは「エグゼクティブオーバーフロー」の兆候でした。つまり、ガイダンスコンピューターはリアルタイムですべてのタスクを完了できず、それらの一部を延期しなければなりませんでした。

「Giant Leap」の 抜粋を思い出してください:私たちはそれが何であり、起こってはならないことを知っていました。しかし、過負荷状態からの回復を懸命に試みるシステムを設計しました。だから、[NASAコンピューターエンジニア]ジャックガーマンが「ゴー、ゴー!」と叫ぶのを聞いたことを覚えています。そして、彼らは行きました。その後、ニールがLEMを飛行し、着陸するのに適した場所を見つけようとするのを聞きました。私たちの新しい心配は、燃料が残っていないことでした。しかし、ついに連絡先の通知を聞いた後、「ワシが上陸しました」。

ジャック・ガーマンインタビュー

編集:たぶんこれはドキュメンタリーだった:アポロ11:未定物語(2006)

キャスト:ジョンR.ガーマン...
自身-アポロ11コンピューターエンジニア(ジャックガーマンとして)

(とりわけ)。

更新: 南アフリカのハッカーが宇宙で最初のNASAコンピューターを救出したばかり


その話はおなじみのように聞こえました!「Apollo 11」セクションでは、en.wikipedia.org
wiki / Margaret_Hamilton_(科学者

31

私が正しく理解していれば、開発プロセスはピアレビューと実験でした。

チームは「数学博士」のような人々で構成されていました-非常に献身的で、知的で、情熱的で、詳細志向の人々で、その人生は仕事に捧げられました。ピアレビューとは、数か月(1年以上)の間に多くのピアレビューを意味します。

これらの開発者は「シミュレーションを頭の中で実行」し、「ソフトウェアを紙の上でデバッグ」し、多くの開発者が正しいと確信するまで何度も同じコードを見てグループで作業しました。複数のチームがあり、それぞれが全体の一部に取り組んでいます。

オハイオ州立大学の私の数値法教授('96年春)は、ブースターロケットのステージを開始するタイミングを決定するコードを記述しました。彼は、Fortranコードのプリントアウトが電話帳のサイズであると説明しました(したがって、8.5 x 11インチの用紙の2.5〜3.5インチの厚さ-フォントサイズは説明しませんでした)。

納得すると、彼らは定期的にビープ音を発するラジオを搭載した無人ミサイル(ロケットには技術的にジャイロスコープがない)を発射しました。彼らは、ラジオが月に衝突し(月に衝突し、それ自体を破壊する)、ビープ音を止めると予想するポイントまでビープ音を聞きました。彼らは、逃した場合、計算された衝撃時間を過ぎても無線がビープ音を出し続けることを知っていました。計算された時間の15秒後に衝撃が発生しました。

この明らかに逸話的な話は、医者とのオフィス訪問からの私の思い出です。彼は非常に年をとっていました、そして、それはずっと前でした。これは私の最高の思い出です。


2
彼は、プリントアウトが電話帳のサイズであると説明しました(したがって、8.5 x 11インチの用紙の厚さは2.5〜3.5インチである可能性があります。プリントアウト紙は、約1.75インチの厚さである。
ギルバートルブラン

@GilbertLeBlanc連は通常500枚です。(時々480)
joshp

@joshp:そのとおりです。500枚の印刷用紙の厚さは約1.75インチです。
ギルバートルブラン

15

AGCは動詞と名詞で制御されます

Apolloコマンドソフトウェアは、今日ユーザーが認識する構文で記述されていません。宇宙飛行士はコマンドを数値で入力し、各2桁の数字は動詞または名詞を表します。動詞は実行されるアクションを記述し、名詞は動詞のアクションの影響を受けるデータを指定しました。

宇宙飛行士は動詞と名詞の設定が嫌いだった

元のAGCハードウェア開発者の1人であるRamónAlonso氏は、このインターフェースは研究室への訪問者に感銘を与えるために考案されたものの、より良いインターフェースを開発する人がいないとフライトにこだわったと言いました。批評家は、それは「科学的」ではなく、最初の宇宙飛行士-すべてのエリートジェットパイロット-は飛行機のコントロールパネルに似たダイヤルとスイッチを好んだと言いました。

「AGCは非常に低速でしたが、デジタルコンピューターの歴史の中で非常に信頼性が高く、非常に小さなものでした。集積回路を使用したのは最も早いものでした。」

設計されたソフトウェアは、基本的にMITによってゼロから構築されました。

Apollo Guidance Computerエミュレータープログラムをダウンロードして、パーソナルコンピューターにインストールできます。問題ありません。Mac OS Xでは次のようになります。

ここに画像の説明を入力してください


8

他のほとんどすべてのソフトウェアプロジェクトと同様に、厳しい期限と品質のプレッシャーの下で行われました。幸いなことに、ソフトウェアプロジェクトマネージャーのHoward W.“ Bill” Tindall、Jr.からの大量の資料がここから入手できます

メモをサンプリングすると、時間、機能、および欠陥の通常の競合を非常によく理解できます。プロジェクトの残りの部分と同様に、開発が数にわたって進行したことは注目に値します。

システムの設計は1961年の第2四半期に始まり、NASAは1965年9月22日に宇宙船にBlock Iバージョンをインストールしました。元のソフトウェア(コロナ)は1966年1月にリリースされ、 1966年。その後3年以内に、設計者は最終的なプログラム目標を達成しました(http://history.nasa.gov/computers/Ch2-5.html

ソフトウェアの作成方法に関する特定の参照は見つかりませんが、日付を考えると、「シミュレーション」を手動で行って、その大部分がペンと紙で行われたと推測できます。おそらくロープメモリを製造する必要なく、地上で「迅速な」テストを行うために、パンチカードを使用してAGCにプログラムをロードするシステムがあったようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.