Certainly one of the most outstanding achievements of the 20th century was the landing of a human on the moon on July 20, 1969. The use of computing technology to get there is frequently alluded to, but exactly kind of hardware and software was required?
Vast amounts of computational power in the form of mainframes and minicomputers performed essential mission-planning calculations on the ground before, during, and after the trip. Less well known is the story of a 70-lb box of integrated circuitry and an attached control panel that performed real-time guidance and control and which served as a lifeline to the astronauts descending to the lunar surface.
|Assemblers at Raytheon testing building AGC modules.|
The Apollo Guidance Computer (AGC) was built by Raytheon and used approximately 4000 discrete integrated circuits from Fairchild Semiconductor. Spanning nearly a decade of project development, the AGC began as a research project at the MIT Instrumentation Lab in Cambridge, Massachusetts. The lab was home to the world's foremost experts in guidance and control, where Polaris and Poseidon missile guidance programs were developed. However, until Apollo, all computations for the equations of motion in these systems were performed by analog computers. In April 1961, NASA contracted with MIT to study the feasibility of a digital control system for the Apollo program.
If They Had Known...
At that time, integrated circuits were rudimentary (perhaps an AND gate or two per chip) and very expensiveTexas Instruments, for example, was selling such ICs to the military for about $1000 each. Like so many projects, hindsight reveals a complexity not appreciated at the time. Eldon Hall, lead designer of the AGC, notes that if they "...had known what they learned later, or had a complete set of specifications been available... they probably would have concluded that there was no solution with the technology of the early sixties."
|AGC lead designer Eldon Hall testing the computer.|
Nonetheless, work proceeded on the general mission computation requirements (simulated on mainframes and minis) at the same time as development of ICs resulted in dramatic (even then) improvements in cost, functionality, and reliability. By 1964, when Philco-Ford was chosen to supply the ICs, the price had dropped to $25 each.
Rope Core Memory
The AGC used a unique form of Read Only Memory (ROM) known as "rope core memory" to store its operating program. This technology was a derivative of magnetic core memory but worked in a slightly different way: rather than magnetizing individual cores clockwise or counter-clockwise in order to store a 1 or a 0, rope core memory treated each core as a transformer core within a matrix of discrete wires. Wires running through the core stored a 1, those bypassing the core represented a 0.
Interaction with the AGC was via a DSKY (Display Keyboard), pronounced "diskey," in which astronauts used a noun + verb syntax. The nouns and verb were entered using a lookup table that cross-referenced a specific word with a numeric value. A typical entry might therefore be: DISPLAY + VELOCITY or LOAD + ANGLE. The system ran an executive that handled (typically) about 40 concurrent processes and allowed interrupts from various system sensors as well as astronaut input. It was capable of failing gracefully, which it did during the lunar descent as a radar subsystem began sending too much data to it. It was also robust enough to handle a lightning strike while Apollo 12 was on the launch pad just prior to liftoff.
|Apollo Guidance Computer Logic Unit and DSKY|
Advent of Software Engineering
Software development took place on a Honeywell 1800 minicomputer running at one tenth the real-time speed of the eventual AGC. As every module in the AGC was "potted," that is, dipped in a waterproof epoxy compound to protect it in space, there was great pressure on the software team to be especially dedicated to error-free development. Unfortunately, there were few procedures for ensuring consistency and the MIT software team was learning both the coding and the software management aspects of the project on the job. The concept of "Software Engineering," coined in 1968well into the programsought to apply hardware engineering concepts to the coding. Specifically, the concept of a software "life cycle" (definition, design, coding, testing, maintenance) was just emerging as a paradigm at NASA for producing software of the high reliability expected in such a system in which human lives were at stake. Even as the Apollo 11 crewArmstrong, Aldrin, and Collinswere sitting on the launch pad, the only "documentation" on the AGC program was the listing itself. One such listing is shown in Figure 1.
Instruction Set: Approximately 20 instructions; 100 noun-verb pairs, data up to triple-precision
Word Length: 16 bits (14 bits + sign + parity)
Memory: ROM (rope core) 36K words; RAM (core) 2K words
I/O: DSKY (two per spacecraft)
Performance: approx. Add time - 20s
Basic machine cycle: 2.048 MHz
Technology: RTL bipolar logic (flat pack)
Size: AGC - 24" x 12.5" x 6" (HWD); DSKY - 8" x 8" x 7" (HWD)
Weight: AGC - 70 lbs; DSKY - 17.5 lbs
Number produced: AGC - 75; DSKY: 138
Power consumption: Operating: 70W @ 28VDC; Standby 15.0 watts
Since the AGC flew with imperfect software, the solution was extensive astronaut training in simulators. To complete a mission, some 10,500 DSKY keystrokes were required. Still, the astronauts reported that interacting with the AGC was intuitive and simple, even remarking that incorrect keystrokes "just felt wrong." The AGC could also receive commands from earth-based computers via a telemetry channel, allowing in-flight adjustments to be made. Lastly, the mission could also be flown using two other on-board systems-an inertial navigation unit and an optical one.
It's a frequently cited truth that the space program resulted in the accelerated development of integrated circuitry. It was the AGC more than any other single part of this program that drove IC development, an observation Eldon Hall makes in his book Journey to the Moon. In fact, in the early stages, a significant proportion of all ICs manufactured in the world were going to the AGC. Computationally, the AGC was behind contemporary technology by the time of Apollo 11, but this is a common feature of space programs that have multi-year timetables and systems of extreme complexity. In October of 1969, the computer industry journal, Datamation, noted that DEC's PDP-11 was much more powerful than the AGC, but this is beside the point. Simpler systems are inherently easier to program, maintain, and fail less often. As Gordon Bell, father of the minicomputer at DEC has often noted: "The most reliable components are the ones you leave out." The Apollo Guidance Computer program was a landmark both in terms of hardware design and software management and laid the foundation for SpaceLab and Shuttle computer systems development. The speed, power, and size requirements for the AGC drove an entire industry that was just taking its first steps along the breathtaking curve of Moore's Law.
Apollo Operations Handbook, GUIDANCE AND NAVIGATION SYSTEM (G&N), Basic Date: 12 November 1966, URL: http://www.digitalmist.com/plethorama/apollogc.htm
For a summary of NASA flight computers and software reliability, see: http://www.dfrc.nasa.gov/History/Publications/f8ctf/chap3.html
Eldon Hall interview, The Computer Museum Report, Fall 1982, p.3.
Hall, Eldon, Journey to the Moon: The History of the Apollo Guidance Computer, Washington: American Inst of Aeronautics, 1996.