Robuster Begleiter zum Mond: Der Apollo Guidance Computer

Die Computer-Hardware und die Software, mit der die Apollo-Missionen zum Mond flogen, setzen einige Meilensteine in der IT-Entwicklung.

In Pocket speichern vorlesen Druckansicht 136 Kommentare lesen
Robuster Begleiter zum Mond: Der Apollo Guidance Computer
Lesezeit: 14 Min.
Von
Inhaltsverzeichnis

Am 16. Juli 1969 war es soweit: Apollo 11 brach zur ersten Mondlandung auf - und am 20. Juli landete die Mondfähre Eagle mit Neil Armstrong und Buzz Aldrin auf dem Mond, während Michael Collins in der Apollo-Kapsel den Mond umkreiste. Am 21. Juli setzte dann Neil Armstrong als erster Mensch seinen Fuß auf den Mond. In einem Schwerpunkt zur Mondlandung beleuchtet heise online die Ereignisse rund um die Apollo-Missionen.

Der Apollo Guidance Computer (AGC) war ein Meilenstein für die Computerentwicklung. Und er brachte nicht nur die Apollo-Mission zum Mond und wieder zur Erde, sondern auch die Landefähre mit zwei Mann Besatzung sicher auf die Oberfläche des Erdtrabanten – und die Astronauten mit Mondgepäck natürlich auch wieder davon zurück.

Der Rechner war knapp 32 Kilo schwer und bildete erstmals überhaupt ein integriertes System mit IC-Technik und digitaler fly-by-wire-Steuerung. Bis das Gerät eingesetzt werden konnte, bedurfte es aber einer enormen Kraftanstrengung aller Beteiligten.

"Ein groĂźer Schritt fĂĽr die Menschheit": 50 Jahre Mondlandung

Die NASA trieb mit dem Apollo-Programm die Entwicklung der Mikrochips entscheidend voran. Erst 1959 hatte der spätere Intel-Gründer Robert Noyce gezeigt, wie man auf einem monolithischen Silizium-Substrat mithilfe fotochemischer Lithografie Transistoren, Dioden und Widerstände auftragen kann. Seitdem waren die Firmen Fairchild und Texas Instruments mit der Umsetzung für die industrielle Massenproduktion beschäftigt. 1962 konnte der Division Director of Digital Computer Development, Eldon C. Hall, die NASA davon überzeugen, dass man für den Bordcomputer zur Mondlandung auf die neuen integrierten Schaltungen setzen sollte.

Elementar wichtig war die Zusammenarbeit mit dem Massachusetts Institute of Technology (MIT) in Boston. Doch die Entscheidung war umstritten: Das MIT galt einigen NASA-Managern als zu akademisch. Man einigte sich darauf, die Designs des MIT von Industrieexperten ĂĽberprĂĽfen zu lassen, etwa von der Elektronik-Sparte von General Motors.

Bei der Entwicklung der Rechner-Hardware arbeitete man ansonsten mit der erfahrenen Rüstungs- und Elektronikfirma Raytheon zusammen. Die hatte in den 50er Jahren nicht nur militärische, sondern auch wichtige zivile Meilensteine gesetzt, darunter den ersten Mikrowellenherd oder den ersten kommerziell erhältlichen Transistor. Und so war es Raytheon, die die ersten Computer mit integrierten Schaltungen fertigten. Raytheon konnte zwar selbst integrierte Chips backen, die meisten Chips kamen aber von Fairchild, wo die späteren Intel-Gründer wie Robert Noyce, Gordon Moore und Andrew Grove wirkten.

Als zweite Lieferquelle diente Philco (ab 1961 Philco Ford), eine alteingesessene amerikanische Radio- und Fernsehfirma, die schon früh Transistoren einführte, etwa 1955 das erste transistorisierte Autoradio. Philco Ford war zudem für alle Konsolen in den NASA Control Centers verantwortlich, insbesondere im Lyndon B. Johnson Center in Houston. Die Zusammenarbeit mit der NASA ging in den 60ern beim Mercury-Programm los und zog sich über Gemini, Apollo und Space Shuttle bis hin zur ISS. Zwischendurch wechselte Philco den Besitzer. Seit Anfang der 80er gehört die Firma zum Philips-Konzern, was auch vom Namen her gut passt.

Die Computer in Apollo-Raumkapseln (5 Bilder)

Der Apollo Guidance Computer mit der DSKY-Bedieneinheit.

FĂĽr den Einbau aller Komponenten inklusive der Guidance-Systeme waren erfahrene Flugzeugbauer vorgesehen: fĂĽr die Apollo-Kapsel die Space and Information Division of North American Aviation und fĂĽr das Luna Excursion Module (LEM) die Grumman Aicraft Engineering Corporation.

So modern der Schritt zur Mikrochip-Architektur in der damaligen Zeit schon war, so ehrgeizig war das Softwareprojekt, das das MIT Instrumentation Lab für die NASA realisierte. Quasi in der Computer-Steinzeit konzipierte man dort bereits ein Multitasking-Betriebssystem mit Zeitscheiben und Prioritäten-Zuweisung.

Für das Design der IT- und Navigationstechnik sowie die Software des Apollo-Programms war Dr. Charles Stark Draper vom MIT Instrumentation Lab verantwortlich, der daraufhin sein ohnehin schon großes Entwicklerteam auf mehrere hundert Ingenieure ausweitete. Seine Mitarbeiter Richard Battin und Hal Laning hatten – Jahrzehnte vor Windows – ein kooperatives Multitasking-Betriebssystem mit Time Slices und Prioritäten entwickelt, dass dann später für das Apollo-Programm von der Softwarechefin Margaret Hamilton weiterentwickelt wurde. Als Hardware-Spezialist war MIT-Ingenieur Eldon C. Hall für den Apollo Guidance Computer verantwortlich.

Für das Apollo-Programm arbeitete Hamilton dieses Betriebssystem zu einer stabilen On-Board-Flugsoftware aus. Damit diese selbst beim Landeanflug stets alle wichtigen Prozesse sicher ausführen konnte, entwarf Hamilton mit ihrem Team Job-Prioritäten und Wartelisten. Das Multithreading geschah wie später bei Windows 95 kooperativ – jeder Job musste dafür sorgen, dass er Rechenzeit an die anderen wieder abgibt.

Hamilton entwickelte als Pionierin ganz neue Ansätze beispielsweise in der Softwareentwicklung, Prozessmodellierung, Systemarchitektur, Fehlervermeidung und Qualitätssicherung sowie zu prioritätsgesteuerter Programmausführung. Angesichts der Herausforderungen des Apollo-Programms wurde sie zur Ersten, die den Begriff des Software-Engineering prägte.

Das Ziel hatte John F. Kennedy in seiner Rede am 25. Mai 1961 gesteckt – Menschen innerhalb eines Jahrzehnts zum Mond zu bringen. Der Weg dahin war aber noch lange nicht klar. Es mussten unter enormen Zeitdruck Technologien erforscht und zur praktischen Anwendung entwickelt werden. Koste es, was es wolle.

Einer der wichtigsten Aspekte betraf die Navigation zum Mond. Daher ging der erste Auftrag des Apollo-Programms an das MIT Instrumentation Laboratory fĂĽr die Entwicklung eines Navigationssystems zum Erdtrabanten. Die Planer unter der Leitung von Charles Stark Draper (der bereits Erfahrungen mit der von ihm entwickelten gyroskopischen Steuerung einbrachte) mussten dabei sehr viel Pionierarbeit leisten.

Die beiden Trays eines AGC mit den Modulen. Hier fehlen rechts das Erasable Memory und die sechs Module mit dem Fädelspeicher.

Ihnen war jedenfalls schnell bewusst, dass sie Rechentechnik vor Ort benötigten, da sich beispielsweise eine Landefähre auf der erdabgewandten Seite nicht von der Erde aus steuern ließ. Außerdem wollte man gegen mögliche Störaktionen der Sowjets gewappnet sein. Ein Rechner durfte dabei nicht zu schwer werden, sollte aber auch genug Ressourcen bereitstellen, um alle an ihn gerichteten Aufgaben erfüllen zu können. Diese Technik gab es zuvor noch nicht und musste komplett neu entwickelt werden.

Zum Start von Apollo 11 am 16. Juli 1969 gab es verschiedene miteinander vernetzte Computersysteme. Der Real-Time Computer Complex (RTCC) bestand aus mehreren IBM-360-Mainframes und war hauptsächlich für die komplizierten Berechnungen der Umlaufbahnen verantwortlich. Er schickte von der Erde aus die Daten per Funk an die Apollo-Systeme weiter. Der Launch Vehicle Digital Computer (LVDC) war die Steuerungseinheit für die Saturn-V-Rakete, maßgeblich vom Start bis zur Erdumlaufbahn. Am Wichtigsten war innerhalb der Apollo Raumschiffe der Apollo Guidance Computer (AGC), der in zwei Varianten dabei war:

  • Die erste Variante des AGC bestand aus dem Command Guidance Computer (CGC) im Kommandomodul fĂĽr die Navigation bis zur Mondumlaufbahn und zurĂĽck. Der CGC musste die Signale der Gyroskop-Steuerung verarbeiten, aber auch die Position des Raumfahrzeugs anhand von Referenzhimmelsobjekten wie Sterne und Planeten abgleichen, um die Bahn ggf. zu korrigieren. Er sammelte permanent Flugdaten und kommunizierte mit der Bodenstation, empfing Navigationsdaten und ĂĽberprĂĽfte diese.
  • Der zweite AGC werkelte als Lunar Module Guidance Computer (LGC) in der Mondlandefähre und war primär fĂĽr die sichere Landung auf dem Mond und das Rendezvous mit dem Kommandomodul mit der RĂĽckkehr der Aufstiegsstufe verantwortlich.

Beide Systeme unterschieden sich prinzipiell nur in der Software, die Hardware bestand bei Apollo 11 aus 2800 IC mit jeweils zwei NOR-3-Gattern als Prozessor; diese waren auf 24 Logikmodule mit je zwei Boards verteilt, jedes Board mit zwei Reihen à 30 Chips bestückt. Nicht alle Reihen waren immer voll besetzt – Platz wäre für 5760 Gatter gewesen. Dazu kamen Ringkernspeicher als RAM und Core Rope Memory als ROM. Außerdem waren die AGC Bestandteil des Primary Guidance, Navigation and Control System (PGNCS), das die Navigation unabhängig von Vebindungsabbrüchen sicherstellen sollte.

UrsprĂĽnglich geplant war eine vollautomatische Steuerung und Navigation, was aber bei den Astronauten auf Ablehnung stieĂź, da man sich nicht blind auf die Technik verlassen wollte.

Im Apollo Guidance Computer lief der Quarzoszillator mit einer Taktfrequenz von 2,048 MHz, welche durch 2 geteilt wurde, um die internen Operationen mit 1,024 MHz abzuarbeiten. Dieser Takt wurde ebenfalls durch 2 geteilt, um mit 512 kHz die externen Systeme anzusteuern. Das ROM vermochte 36.864 16-Bit-Worte (14 Bit Daten + 1 Vorzeichenbit, 1 PrĂĽfbit) zu speichern, das RAM wiederum 2048 Worte.

Der AGC-Prozessor entspricht im Prinzip der Harvard-Architektur mit getrennten Daten- und Programmwegen -- mit einigen Ausnahmen. So gibt es einen etwas urigen Index-Befehl, der es erlaubt, den nächsten Opcode und/oder dessen nächste Adresse zu ändern. Selbstveränderlicher Code ist eigentlich kein Bestandteil der Harvard-Architektur. Außerdem liegen Code und Daten im gemeinsamen Festwertspeicher -- ist dann also doch eher eine Mischarchitektur.

Das ROM arbeitete nicht über magnetische Zustände von Kernen, sondern über Drähte, die mehrfach entweder in Ringkerne herein- oder vorbeigeführt wurden (Ein Draht in den Kern hinein entsprach dabei einer logischen 1, am Kern vorbei einer logischen 0). Das sogenannte Core Rope Memory erforderte zwar einen enormen Aufwand und Genauigkeit in der Produktion, bot aber dafür auch eine hohe Unempfindlichkeit gegenüber Erschütterungen – ideal für eine Raketenmission.

Der AGC-II-Rechner – sowohl der in der Apollo-Kapsel (CGC) als auch der in der Landefähre (LGC) – bestand aus zwei zusammengeschraubten Laden (Trays) mit Steckplätzen für die zahlreichen Module. Er war 6 Zoll hoch, 12,5 Zoll breit, 24 Zoll tief und wog 32 kg. Hinzu kam das Ein/Ausgabesystem DSKY mit dem Keyboard und den numerischen Anzeigen.

Das CPU-Tray enthielt 24 Logic-, 5 Interface- und 2 Powermodule. Das Speicher-Tray beherbergte neben dem Oszillator- und dem Alarm-Modul insgesamt 8 Speichertreiber-Module und natürlich den Speicher selber: das zwei Slots umfassende Modul für Erasable Memory (ist im Unterschied zu allen anderen schwarz) und die mit einem völlig anderen Formfaktor daherkommenden sechs Module für den Fädelspeicher.

Dem Rechner zur Seite stand eine fast gleichgroße Coupling Data Unit (CDU) mit all den Digital-zu-Analog und Analog-zu-Digitalwandlern, Verstärkern, der Navigationshardware et cetera. Die CDUs in der Apollokapsel und in der Landefähre waren etwas unterschiedlich bestückt.

Die Software (in Assembler geschrieben) sollte eine Schlüsselrolle einnehmen. Dabei war dafür zunächst kein eigenes Budget geplant. Unter der Führung von Mathematikerin Margaret Hamilton (erst eher durch Zufall zum Apollo-Programm gekommen, übernahm sie aber bald die Leitung des Entwicklerteams) entwarfen die Entwickler ein prioritätengesteuertes Multiprozesssystem, das dank eines zuverlässigen Designs die Mondlandung sicher und stabil gestaltete.

Die Mathematikerin Margaret Hamilton (hier mit dem Ausdruck des AGC-Quellcodes) leitete die Softwareentwicklung fĂĽr den Apollo Guidance Computer

Display and Keyboard (DSKY) hieß die Benutzerschnittstelle, mit der die Astronauten den Computer über Eingabeparameter "Verb – Noun – Enter" für die damalige Zeit enorm komfortabel steuern konnten. Das Betriebssystem "Executive“ ermöglichte mit Scheduling über kooperatives Multitasking bis zu 8 Prozesse gleichzeitig (einer davon als Leerlaufprozess). Mit der Night-Watchman-Funktion war sogar eine präemptive Überwachung eingebunden, die blockierende Prozesse einfach via Restart erneuerte. Dank Restart-Tables waren dabei die bisher berechneten Daten nicht komplett verloren und der Rechner arbeitete fast ohne Verzögerung weiter.

Diese prioritätengesteuerte Systemarchitektur (von Computeringenieur J. Halcombe Laning erdacht) sollte ihre wichtigste Bewährungsprobe ausgerechnet wenige Minuten vor der geplanten Landung von Apollo 11 bestehen. In den letzten Minuten vorm Aufsetzen des Landemoduls auf der Mondoberfläche meldete der AGC einen 1202-Alarm. Die Ursache lag an dem fälschlich arbeitenden Rendezvous-Radar, welcher den Rechner mitten im Landevorgang mit nutzlosen Daten speiste, statt im Standby zu verharren.

Eine Fehlersuche zum denkbar ungünstigsten Zeitpunkt – schließlich war man kurz vor der Landung. Guidance Officer Steve Bales reagierte am Schnellsten und gab innerhalb weniger Sekunden dem Missionsleiter zu verstehen, dass es kein schwerwiegender Fehler sei.

Bales hatte sich nach umfangreichen Tests die Fehlercodes aufgeschrieben und deren Konsequenzen. Der 1202-Alarm war ein "executive overflow – no core sets". Damit signalisierte der Computer, dass er ausgelastet war und die niederpriorisierten Tasks nun verwerfen wird. Auch der kurz darauf folgende 1201-Alarm war ebenso ungefährlich.

Mit der Ăśbernahme des SteuerknĂĽppels, weil die vorgesehene Landestelle sehr uneben war, bewies Armstrong zudem das Funktionieren der fly-by-wire-Steuerung unter Teilautomatik.

Die Landung war ein voller Erfolg. Steve Bales erhielt sogar für seine schnelle Unbedenklichkeitserklärung angesichts der Fehlermeldungen eine Medaille, stellvertretend für das gesamte Bodenpersonal.

Die 1202/1201-Alarme wurden als Computerfehler abgetan, dabei haben sie einen Ablauffehler erfolgreich abgefangen. Daher geriet die Leistung des besonderen Computersystems unter der Entwicklung von Margaret Hamilton fast in Vergessenheit. Erst 2003 besann sich die NASA auf ihren Anteil am Gelingen der Apollo-Missionen und zeichnete sie mit dem Exceptional Space Act Award aus.

Der Quellcode des AGC (mit herrlich nerdigen Kommentierungen der Entwickler) wurde bereits veröffentlicht. Und dieser Meilenstein der Computertechnik, der als integriertes System alle nachfolgenden Entwicklungen beeinflusst haben dürfte (das fly-by-wire-System sogar direkt beim Space Shuttle und auch im Flugzeugbereich) lässt sich auch online nachspielen.

Viele weitere Details zu den Innereien des Apollo Guidance Computer und der von Margaret Hamilton und ihrem Team entwickelten Software bringt ein Artikel von Andreas Stiller in c't Retro 2019: "Programm-Alarm? Kein Problem! Wie der Bordcomputer der Apollo-Kapsel die ersten Menschen zum Mond brachte". (jk)