Wie ein Computerfehler fast die Mondlandung verhinderte

20.07.2009 von Jürgen Hill
Vor 40 Jahren landeten mit Apollo 11 die ersten Menschen auf dem Mond. Wenige Sekunden zuvor hätten Fehlermeldungen des Bordrechners beinahe zum Abbruch geführt.

Am 20. Juli um 20.17:58 Coordinated Universal Time (UTC) schrieb er Geschichte. Mit "Houston, Tranquility Base here. The Eagle has landed!", funkte Apollo-11-Kommandant Neil Armstrong die erlösenden Worte von der geglückten Mondlandung zur Erde.

Angesichts des erfolgreichen Manövers und der faszinierenden Bilder von Armstrongs ersten Schritten auf dem Mond am 21. Juli um 2.56 UTC (in den USA war noch der 20. Juli) geriet schnell in Vergessenheit, dass das Projekt nur Sekunden vor der Landung an einem seidenen Faden hing. Der Computer des Lunar Module (LM), wie die Mondfähre im Fachjargon korrekt bezeichnet wird, spuckte beim Anflug auf den Mond mehrere Fehlermeldungen aus.

Overflow bei der Landung

Mit den wiederholten Fehlern "1201" und "1202" sorgte der Apollo Guidance Computer (AGC) fast für einen Abbruch der Landung. Dass die Mondlandung dennoch stattfand, ist dem damals 24-jährigen Computerwissenschaftler Jack Garman zu verdanken. Er gab dem zuständigen Guidance Officer die Entwarnung "That‚Äôs ok", man könne weiter dem Computer vertrauen, solange die Fehlermeldung nicht ständig komme. Auf Anraten von Houston setzte Armstrong dann die Landung manuell fort.

Die Ursache des Problems, das fast zum Abbruch der Mondlandung führte, war relativ einfach und ist heute fast jedem Windows-Benutzer bekannt.

Der Apollo Guidance Computer war schlicht überlastet, und das entsprechende Programm reagierte nicht, oder um es neudeutsch zu formulieren, der Computer hatte ein "overflow problem". Die Ursache hierfür war relativ schnell ausgemacht: Obwohl eigentlich unnötig, waren die Astronauten darauf trainiert, bei der Landung sowohl den Lande- als auch den Rendezvous-Radar (der eigentlich zur Ankoppelung des LM an das Command/Service Module (CSM), die eigentliche Apollo-11-Kapsel, diente) zu benutzen. Mit der Verarbeitung der Daten von zwei Radarsystemen war der Computer nun überfordert.

Mit 4 KB RAM zum Mond

Aus heutiger Sicht, in einer Zeit, in der Handys mit 1-Gigahertz-Prozessor gebaut werden, Grafikkarten mit 1 GB RAM ausgestattet sind und PCs Zwei-, wenn nicht gar Vier-Kern-CPUs besitzen, mag dies verwundern. Doch der Apollo Guidance Computer hatte gerade einmal 72 KB ROM sowie 4 KB RAM und eine Taktfrequenz von rund einem Megahertz. Das Eingabe- und Ausgabemodul DSKY (von Display und Keyboard abgeleitet) erinnerte mehr an einen wissenschaftlichen Taschenrechner als an ein User Interface für einen Computer.

Trotzdem war der AGC zu seiner Zeit ein Meilenstein im Rechnerbau: Er war der erste Rechner mit einem Echtzeit-Betriebssystem, dem Menschen ihr Leben anvertrauten. Das Betriebssystem konnte bis zu acht Prozesse gleichzeitig in einem nichtpräemptiven Multitasking-Verfahren verarbeiten und hatte zudem eine Prioritätenliste für die einzelnen Programme. Um Totalabstürze zu vermeiden, besaß das System die Fähigkeit, sich automatisch neu zu starten und die Tasks weiterzuverarbeiten.

Ferner hatte die Hardware, wenn sie mehr Register benötigte, eine höhere Priorität als die eigentlichen Programminstruktionen. Und genau dies geschah bei der Mondlandung: Der Rendezvous-Radar forderte immer mehr Register an, so dass sich die Ausführung der anderen Programme um 15 Prozent verlangsamte. Da diese nun nicht mehr genügend Rechenzeit bekamen, wurden sie vom System wiederholt neu gestartet, was zu den bekannten Fehlermeldungen führte.

Die eigentliche Recheneinheit des AGC war dabei keine CPU aus einem Chip, sondern bestand aus einem Verbund von rund 5000 Logik-Gattern mit NOR-Logik. Als Bauteile verwendete die Nasa erstmals integrierte Schaltkreise (Integrated Circuits = ICs). 1963 gingen beispielsweise 60 Prozent der gesamten US-amerikanischen IC-Produktion in die Entwicklung der Apollo-Computer. Auch ROM und RAM hatten keine Gemeinsamkeiten mit den heute in PCs verbauten Bauteilen, denn es wurden so genannte Ringkernspeicher verwendet. Diese bestanden aus hartmagnetischen Ferritringen (Magnetic Core Memory), die per Strom ummagnetisiert wurden, wobei je nach Magnetisierung der Wert des Speichers dann 0 oder 1 betrug.

Fest verdrahtete Programme

Im ROM (Core Rope Memory) hatten die Ferritkerne eine feste Magnetisierung, die von Arbeiterinnen in Fabriken in den Leitungsverbund "eingewoben" wurde. Bei der Nasa trug diese Art von Speicher deshalb den Spitznamen LOL Memory (Little Old Ladies Memory). Der zeitaufwändige Prozess wirkte sich direkt auf die Softwareentwicklung aus. Die Programme für den Apollo-Computer mussten zirka vier Monate vor dem Start gewoben, also hart verdrahtet werden. Erschwerend kam hinzu, dass die Programme nur unzureichend per Softwaresimulation überprüft werden konnten. Selbst ein Honeywell-1800-Minicomputer konnte die AGC-Programme nur mit einem Zehntel der eigentlichen Geschwindigkeit ablaufen lassen. Wohl oder übel wurden die Nasa und ihr Partner, das MIT, damit zu Pionieren in Sachen Softwarequalitätssicherung.