アポロ誘導
コンピュータ(Apollo Guidance Computer、AGC)は、
アポロ計画において宇宙船の全航行機能を自動制御するために開発されたリアルタイム
組み込みシステムです。
宇宙飛行士が飛行情報を確認したり、必要に応じて修正したりするために使用されました。
特徴
ワード長: 16ビット(データ15ビット、パリティ1ビット)
メモリ:
コアロープメモリ(ROM):ソフトウェアの大部分を格納
磁気コアメモリ(RAM):データ格納用
ユーザインタフェース: DSKY(display and keyboard)と呼ばれる数値表示部とキーパッドを使用
開発: MIT器械工学研究所で開発
集積回路: 初期の集積回路を採用
アポロ計画では、月への飛行ごとに2つのAGCが使用されました。1つは司令船に、もう1つは月着陸船に搭載されました。
司令船: 誘導/航行システム (G&C) の中央部にAGCが配置
*
月着陸船: アポロPGNCS(Primary Guidance, Navigation and Control System、一次誘導/航行/制御システム)がAGC上で動作
各ミッションでは、サターンV型ロケットのS-IVBにあるIBM製の航行
[コンピュータ]や、月着陸船のAbort Guidance System(AGS)といった他の
コンピュータも使用されていました。
設計
AGCの設計は、
チャールズ・スターク・ドレイパー率いるMIT器械工学研究所で行われました。ハードウェア設計責任者はエルドン・C・ホール、アーキテクチャ設計はJ.H. Laning Jr.、Albert Hopkins、Ramon Alonso、Hugh Blair-Smithが担当しました。ハードウェアは
レイセオンが製造し、ソフトウェアの監督・指導はマーガレット・ハミルトンが行いました。
AGCは初期の
[集積回路]を使用して作られました。Block I バージョンは4,100個のICを使用し、それぞれのICは3入力の
NORゲートをひとつ構成していました。次の Block II バージョンは2つの3入力
NORゲートをひとつのICで構成したものを2,800個使っています。
DSKY (display and keyboard) は、AGCとのインタフェースとして使用されました。指示灯、数値表示ディスプレイ、キーボードから構成され、Verb(動作の種類を指定)とNoun(Verbコマンドによって変更されるデータを指定)という2つの数値を入力してコマンドを実行しました。
タイミング
AGCの駆動クリスタル周波数は2.048MHzで、分周された信号がAGC内部やアポロ宇宙船の他のシステムを同期させるために使用されました。
命令セット
AGCは、3ビットの
オペコードと12ビットのアドレスを持つ命令フォーマットを採用していました。Block Iは11種類の命令を持っていました。命令の実装はグループ化された12のステップで行われ、そのステップを「タイミングパルス」と呼びます。
メモリ
Block I AGCのメモリは1024ワードのバンクから成り、最も低いバンク(バンク0)はRAM、それ以外はROMでした。Block II は32KワードのROMと4KワードのRAMを持っていました。
割り込みと強制的カウンタ
AGCは5種類の割り込みを扱い、20個の強制カウンタを持っていました。割り込みが発生すると、それまで実行していたプログラムの実行を中断し、割り込みサービスルーチンを実行して、割り込まれたプログラムに復帰しました。
スタンバイモード
AGCはスタンバイモードに移行することで、電力消費を抑えることができました。しかし、実際にはAGCは飛行中ずっと使われ、スタンバイモードが使われることはありませんでした。
データバス
AGCは
16ビットのリードバスと
16ビットのライトバスを持ち、セントラルレジスタや他の内部レジスタの内容は制御信号によってリードバスに出力されました。
ソフトウェア
AGCのソフトウェアはAGC
アセンブリ言語で書かれ、コアロープメモリに格納されました。
リアルタイムオペレーティングシステムとして機能し、複数のジョブを並行して実行することができました。
Block II
Block II バージョンのAGCは1966年に設計され、RAMやROMの容量拡張、命令セットの拡張が行われました。実際に最初に月まで行ったAGCは Block II です。
PGNCSの障害
アポロ11号の月面着陸時、PGNCSの動作不良によりAGCがアラームを発しましたが、優先度制御により重要なタスクを完了させることができ、着陸は成功しました。
アポロ以外での利用
AGCは、F-8クルセイダーを使った
フライ・バイ・ワイヤシステム実証実験機や、
アメリカ海軍の
深海救難艇でも使用されました。
その他
AGCは、当時の地上用の制御用
コンピュータよりも性能は劣るものの、信頼性を重視した設計となっていました。