Die Entwicklung des Apollo Guidance Computers

Dr. Charles Stark Draper vom Massachusetts Institute of Technology (MIT) hat in den 1950er-Jahren ein Gyroskop-basiertes Navigationssystem entwickelt, das „inertial guidance system”. In einem Testflug im Jahre 1953 hat dieses Navigationssystem ein Flugzeug ohne Bezugnahme auf äußere Landmarken sicher von Boston nach Los Angeles geleitet. Charles Draper war bei diesem Flug mit an Bord, da er stets ein großes Vertrauen in seine Entwicklungen hatte. Durch dieses Navigationssystem wurde Draper bekannt als „Vater der Inertialnavigation”. Daher war es naheliegend für die NASA, Charles Draper für ein so ambitioniertes Projekt wie Apollo an Bord zu nehmen. Er erhielt den Auftrag, das Leitsystem für die Apollo Missionen zu entwickeln, dies war der erste Auftrag der NASA im Rahmen des Apollo-Programms, unterzeichnet am 10. August 1961.

Charles Draper konnte dabei auf seine Erfahrungen mit dem „inertial guidance system” zurückgreifen. Auch bei der Arbeit am Navigationscomputer für das Apollo-Programm zeigte sich wieder sein Vertrauen in die eigene Arbeit und in die seines Teams.

Charles Stark Draper (1901 - 1987) [NAP1994]

Zu Beginn des Projektes im Jahre 1961 gab es bei der NASA-Führung wiederholt Zweifel daran, dass das MIT ein Navigationssystem entwickeln könne, das Menschen zum Mond und zurück bringen kann. Hugh L. Dryden, Deputy Administrator der NASA, beorderte Draper zu dem verantwortlichen NASA-Administrator James E. Webb, um vor diesem Stellung zu nehmen. Draper betonte nicht nur seine Überzeugung und sein Vertrauen in die Arbeit seines Teams und in die Technik, nein, er ging noch einen Schritt weiter: Am 21. November 1961 schrieb er an den Deputy Administrator Robert Seamans eine Bewerbung als Astronaut im Apollo-Programm. Darin versicherte er nicht nur sein Vertrauen in seine Mitarbeiter am MIT, sondern zeigte mit dem Brief auch, dass er als Apollo-Astronaut sein Leben dem Navigationscomputer anvertrauen würde, den das MIT entwickelte.

Charles Drapers Team bestand natürlich aus zahlreichen Mitarbeitern, die hier nicht alle vorgestellt werden können. Dennoch sollen zumindest einige der Personen, die für bestimmte Aspekte der Entwicklung des AGC von besonderer Bedeutung waren, etwas näher betrachtet werden:

Ein weiterer Wissenschaftler von besonderer Bedeutung für die Entwicklung des AGC in Drapers Team war Hal Laning:

Die Computer der 1960er Jahre arbeiteten mit gleich verteilten Zeitfenstern (Time-Slices), um mehrere Aufgaben (quasi-) parallel zu bearbeiten. Die einzelnen Aufgaben (Tasks) erhielten dabei jeweils einen gleichgroßen Anteil an der Rechenkapazität. Das funktionierte zwar, konnte jedoch dazu führen, dass eine einzelne Aufgabe, die nicht mehr reagierte, das ganze System blockierte. Für kritische Anwendungen war dieses Verfahren bei Weitem nicht sicher genug. Bei einem bemannten Flug zum Mond könnte ein solcher „Systemabsturz” die Astronauten in unmittelbare Lebensgefahr bringen. Eine bessere Lösung als die Aufteilung in gleichgroße Zeitscheiben musste her.

Hal Laning hatte nun die Idee, Prioritäten für die einzelnen Aufgaben einzuführen. Im Apollo Guidance Computer setzte er diese Idee um: Kritische Aufgaben wurden bei Engpässen in der Rechenkapazität vorrangig behandelt, weniger kritische Aufgaben wurden zurückgestellt.

J. Halcombe „Hal” Laning, Jr. (1920 - 2012) [NAT2018]

Die einzelnen Prozesse überprüften dabei ihre jeweiligen Prioritäten selbst (kooperatives Multitasking). Prioritätenbasiertes Scheduling wurde später zum Bestandteil zahlreicher Betriebssysteme, wie z.B. Linux, MS-Windows (in den Varianten bis einschließlich Windows 3x, also in den 16-Bit-Versionen, wurde kooperatives Multitasking für das Scheduling verwendet) und Solaris. Das im AGC eingesetzte Scheduling-Verfahren war jedoch kein reines kooperatives Multitasking, sondern eine Mischung aus kooperativem und preemptivem Multitasking; somit wurden hier bereits Techniken eingesetzt, die noch über das Scheduling-Verfahren von Systemen wie Windows 3x hinausgingen und bereits preemptive Komponenten beinhalteten.

Die hohe Bedeutung von Lanings prioritätenbasiertem Scheduling zeigte sich bei der Landung von Apollo 11 auf dem Mond, als der AGC durch zahlreiche Radardaten außerordentlich stark belastet wurde.

Hal Laning hatte zu Beginn seiner Arbeit am Apollo-Programm bereits umfangreiche Erfahrungen mit der Entwicklung von Softwaresystemen; bereits 1952 entwickelte er einen Compiler für den MIT Whirlwind, der die Eingaben von Gleichungen in den Computer gegenüber der Programmierung in Assembler vereinfachte. In den 1950er-Jahren arbeitete er mit Richard Battin zusammen. Battin wurde im Rahmen des Apollo-Programms „Director of Mission Development” des AGC und war damit verantwortlich für das Softwaredesign des Navigationssystems.

Leiter der Hardwareentwicklung des AGC war Eldon C. Hall (Division Director of Digital Computer Development). Er überzeugte die NASA im Jahr 1962 davon, Integrierte Schaltkreise (Integrated Circuit - IC) für den Navigationscomputer zu verwenden. Der IC wurde, wie bereits dargelegt, erst 1958 entwickelt. Dieser IC bestand jedoch noch aus zwei Bipolartransistoren (Transistoren, bei denen sowohl negative als auch positive Ladungsträger zum Ladungstransport Verwendung finden), die auf einen Träger aus Germanium aufgebracht und durch Golddrähte verbunden waren, was zu hohen Produktionskosten führte. 1959 entwickelte Robert Noyce, Mitbegründer der Firma Fairchild Semiconductor, den ersten aus einem einzelkristallinen Stück gefertigten IC. Robert Noyce entwickelte jedoch nicht nur diesen IC, sondern auch das fotografische Fertigungsverfahren zur Herstellung. Bereits wenige Jahre später wurde die NASA durch die Entwicklung des AGC der erste Großabnehmer dieser noch jungen Technologie und förderte dadurch auch die Weiterentwicklung von IC-Produktionsstätten. Eine solche Förderung war auch dringend nötig, denn Hall schreibt in seinem Buch „Journey to the Moon”, dass die IC-Technologie zunächst keine besondere Begeisterung bei der Industrie hervorrief, da für die industrielle Produktion sowohl Leistungsmerkmale als auch Kosten wichtiger als die Miniaturisierung mittels ICs waren.

Wenn man bedenkt, dass in der Zeit, da die Entscheidung zugunsten der ICs fiel, diese erst seit etwa einem Jahr auf dem Markt verfügbar waren, scheint es eine riskante Entscheidung gewesen zu sein, sich bei einem so bedeutenden Projekt wie das Apollo-Programm auf eine derart neue Technologie einzulassen.

Eldon C Hall [HAL2000]

Doch es war nicht nur der Wunsch nach Miniaturisierung, der zu dieser Entscheidung führten, sondern auch die Zuverlässigkeit: Zwar gab es noch keine längerfristigen Erfahrungen mit ICs, aber bereits die Tatsache, dass hierbei weniger Bauteile zur Erzielung eines bestimmten Schaltkreises benötigt wurden als bei der Verwendung einzelner Transistoren, bedeutete auch, dass weniger Fehlerpotential bestand.

Außerdem war bereits zu Beginn der 1960er-Jahre eine Verringerung der Preise für ICs in den kommenden Jahren absehbar, da die Preise bereits zu sinken begonnen hatten. In einem Brief von Charles Draper an Charles W. Frick, Manager des Apollo Spacecraft Project Office (ASPO), legte Draper die Vor- und Nachteile der IC-Technologie für den Apollo Guidance Computer dar. In diesem Brief stellte Draper schon im November 1962 fest, dass die Verwendung von ICs bereits innerhalb eines Jahres zu einer kostengünstigeren Produktion führen könnte als unter Verwendung separater Komponenten, da der Bau des Computers mit ICs einfacher wäre als ohne. Darüber hinaus machte Draper auch gleich den Vorschlag, ICs in den Geräten der Bodenunterstützung einzusetzen; dies würde natürlich den Absatz an ICs weiter erhöhen und dadurch schließlich auch einen Einfluss auf die Preisentwicklung haben.

Die IC-Technologie führte auch dazu, dass sich die Designarbeit für neue Systeme von den Computerherstellern zu den Chipherstellern hin verschob, was wiederum Ängste bei den Computerherstellern auslöste, da diese befürchteten, ihre Arbeit würde nicht mehr benötigt. Heute, im 21. Jahrhundert, wird die Designarbeit nun auch hauptsächlich von den Prozessorherstellern, wie z.B. Intel oder AMD, durchgeführt. Designer werden also immer noch gebraucht, auch wenn sich das Arbeitsgebiet verschoben hat. Der Computer ist als PC heute ein Alltagsgegenstand, der meist nur noch „zusammengeschraubt” wird. Designarbeit spielt dabei sicher nur eine untergeordnete Rolle. Aber dennoch werden auch heute noch neue Computer entworfen, man denke nur an die unterschiedlichen Mainframes, wie sie in der Industrie eingesetzt werden, oder auch an Hochleistungsrechner wie diejenigen von Seymour Cray; bei diesen ist die Designarbeit ein wesentlicher Faktor auf dem Weg zum fertigen Rechner. Darüber hinaus werden auch heute, im 21. Jahrhundert, zahlreiche neue miniaturisierte Computer entworfen, die in Form von Handys oder Armbanduhren auf den Markt kommen. Die Befürchtungen der Computerdesigner in den 1960er-Jahren waren also größtenteils unbegründet.

Wie waren nun die eingesetzten ICs bestückt? Wie aus der Booleschen Logik bekannt ist, lassen sich sämtliche logischen Funktionen aus NOR-Gattern zusammenstellen. Diesen Umstand machten sich die Entwickler des AGC zunutze: Die gesamte Logik des AGC basiert auf NOR-Gattern.

NOR-Gatter mit drei Eingängen (ANSI-Symbol)

Der AGC Block I, die auf unbemannten Testflügen eingesetzte Version des AGC, enthielt 4100 ICs, jedes davon bestückt mit einem Drei-Eingangs-NOR-Gatter. Der Block II, die Version, die in den bemannten Raumflügen eingesetzt wurde, enthielt zwar „nur” 2800 ICs, dafür enthielt jedes davon aber zwei NOR-Gatter mit drei Eingängen. Der Block I war jedoch keineswegs die erste Version des AGC, vor diesem gab es bereits mehrere Entwicklerversionen, wie folgende Tabelle zeigt:

Version Jahr Kommentar
Mod 1A 1959 Als „Christmas-Computer” bezeichnet, da er bis
Weihnachten 1959 fertig sein sollte. Der Assembler dafür
wurde deshalb auch „YUL-Sytem” genannt
Mod 1B 1961 Aus Mars-Mission-Study
Mod 3C 1962 Erster AGC-Prototyp (AGC3)
AGC4 1963 Sollte Prototyp für Flugversion werden,
wurde jedoch ein weiterer Versuchsaufbau
AGC4B 1963/64 Prototyp für Block I
AGC5 Mai 1964 Weiterentwicklung
AGC6 August 1964 Erster Block I AGC von Raytheon
AGC Block II 1966 Die in den bemannten Flügen eingesetzte Version

AGC-Entwicklerversionen

Übersicht IC-Bestückung:

  • Block I (4,100 ICs, )

  • Block II (2,800 ICs, jedes davon mit zwei Drei-Eingangs-NOR-Gattern)

Schema der doppelten NOR-Gatter des AGC (1965) [HAL1965]

Eine weitere Entscheidung, die möglichst früh in der Designphase getroffen werden musste, war die der Wortlänge: Durch größere Wortlängen könnten größere (bzw. genauere) Dateneinheiten in einem Arbeitsschritt verarbeitet werden sowie größere Mengen an Speicherplätzen direkt angesprochen werden. Doch auch die Hardware würde mit wachsender Wortgröße umfangreicher werden. Da bei der Entwicklung des AGC die Größe ein entscheidender Faktor war, fiel die Entscheidung zugunsten eines relativ kleinen beschreibbaren Speichers (RAM), aber eines umfangreicheren Read-only Memory (ROM) und einer relativ geringen Wortlänge. Die gewählte Wortlänge betrug schließlich 16 Bit (14 Datenbit, 1 Vorzeichenbit, 1 Prüfbit). Genauere Berechnungsergebnisse, wie sie für Navigationsberechnungen nötig waren, konnten durch Double-Precision-Berechnungen durchgeführt werden. Als Größen für den Speicher sahen die ursprünglichen Planungen nur 120 Wörter für den RAM und 4000 Wörter ROM vor. Dies erwies sich später als zu klein dimensioniert; die Entwickler hatten zunächst zu sehr die Miniaturisierung in den Vordergrund gestellt, anstatt sich einen umfassenden Überblick über die Anforderungen zu verschaffen, wie Hall es in seinem Buch Journey to the Moon beschreibt.