Channels ▼
RSS

Design

One Giant Leap: The Apollo Guidance Computer


History of Computing History of Computing #6

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
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 expensive—Texas 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."

Eldon Hall
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.

Logic Unit and DSKY
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 1968—well into the program—sought 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 crew—Armstrong, Aldrin, and Collins—were sitting on the launch pad, the only "documentation" on the AGC program was the listing itself. One such listing is shown in Figure 1.

 

Specifications:

 
 

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

Disk: None

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

Cost: Unknown.

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.

Further Reading

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.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Video