Computers in Spaceflight: The NASA Experience

Computing and Spaceflight: An Introduction


[2] When the National Aeronautics and Space Administration came into existence in 1958, the stereotypical computer was the "UNIVAC," a collection of spinning tape drives, noisy printers, and featureless boxes, filling a house-sized room. Expensive to purchase and operate, the giant computer needed a small army of technicians in constant attendance to keep it running. Within a decade and a half, NASA had one of the world's largest collections of such monster computers, scattered in each of its centers. Moreover, to the amazement of anyone who knew the computer field in 1958, NASA also flew computers in orbit, to the moon, and to Mars, the latter machines running unattended for months on end. Within another 10 years the giant groundbased mainframe would be supplanted by clusters of medium-sized computers in spaceflight operations, and the single on-board computer would be replaced by multiple machines. These remarkable changes mirror developments in the commercial arena. Where there were giant computers, small computers now do similar tasks. Where there were no computers, such as on aircraft or in automobiles, computers now ride along. Where once the only solution was the large, centralized computing center, distributed computers now share the load.
Since NASA is well known as an extensive user of computers- mainly because spaceflight would not be possible without them- there is a common sense that at least part of the reason for the rapid growth and innovation in the computer industry is that NASA has served as a main driver due to its requirements. Actually, the situation is not so straightforward. In most cases, because of the need for reliability and safety, NASA deliberately sought to use proven equipment and techniques. Thus, the agency often found itself in the position of having to seek computer solutions that were behind the state of the art by flight time. However, in other cases, some use of nearly leading edge technology existed, mostly for ground systems, but occasionally when no extensively proven equipment or techniques were adequate in a flight situation. This was especially true on unmanned spacecraft, because the absence of human pilots allowed greater chances to be taken. Thus generalizations cannot be made, other than that there was no conscious attempt on the part of NASA in its flight programs to improve the technology of computing. Any ways in which NASA contributed to the development of computer techniques were side effects of specific requirements.
NASA uses computers on the ground and in manned and unmanned spacecraft. These three areas have quite different requirements, and the nature of the tasks assigned to them resulted in varying types of computers and software. Thus, the impact of NASA on computing differs in extent as a result of the separate requirements for each field of computer use, which is one reason why the three fields are considered in separate parts of this volume.
Computers are an integral part of all current spacecraft. Today they are used for guidance and navigation functions such as [3] rendezvous, re-entry, and mid-course corrections, as well as for system management functions, data formatting, and attitude control. However, Mercury, the first manned spacecraft, did not carry a computer. Fifteen years of unmanned earth orbital and deep space missions were carried out without general-purpose computers on board. Yet now, the manned Shuttle and the unmanned Galileo spacecraft simply could not function without computers. In fact, both carry many computers, not just one. This transition has made it possible for current spacecraft to be more versatile. Increased versatility is the result of the power of software to change the abilities of the computer in which it resides and, by extension, the hardware that it controls. As missions change and become more complex, using software to adjust for the changes is much cheaper and faster than changing the hardware.
On-board computers and ground-based computers store data and do their calculations in the same way, but they handle processes and input and output differently. A typical ground computer of the early 1960s, when the first computers flew on manned spacecraft, would process programs one at a time, right after each other. This sort of processing, in which the entire program must be loaded into memory and data must be available in discrete form, is called "batch." Over time, computer systems were changed to make them more efficient than batch computing allowed. In a batch process, if the computer is doing a calculation, the input and output devices are idle. If it is using a peripheral device, the calculating circuits are not used. One way to improve on efficiency of the batch process would be to develop an operating system for computers that could permit one program to use resources currently unneeded by another program. Another method is to limit each program to a fraction of a second running time before going on to the next program, running it for a fraction and then going on until the original program gets picked up again. This cyclic, timesliced method permits many users to be connected to the computer or many jobs to run on the computer in such a way that it appears that the machine is processing one at a time. The computer is so fast that no one notices that his or her job is being done in small segments. Each of these methods presupposes that data for the program are available and processed, and then the program stops. So even though lots more programs are run through the system in a period of time, each is still handled as a batch process. When the computer runs through all the processes waiting for execution, it stands idle.
Spacecraft computers operate in a radically different processing environment. They are in "real-time" mode, handling essentially asynchronous inputs and outputs and continuous processing, similar to a telephone operator who does not know on which line the next call will come. For example, computers used for controlling the descending Shuttle can hardly process commands to the aerodynamic surfaces in batch mode. The spacecraft would go out of control or at least lose [4] track of where it was if data were only utilized in small bunches. The requirement for real-time processing leads to other requirements for spacecraft computers not normally found on earth-based systems. Software must not "crash" or have an abnormal end. If the software stops, the vehicle ceases to be controllable. Hardware must also be highly reliable, or reliability can be obtained through redundancy If the latter course is chosen, overhead in the form of redundancy management hardware and software will be high. Memories must be nonvolatile in most applications, so if power is lost then the program in storage will not disappear. Since modern semiconductor, random-access memories are usually volatile, older technology memories such as ferrite core continue to be used on spacecraft. Weight, size and power are other considerations, just as with all components on a spacecraft.
Even though both manned and unmanned spacecraft have similar requirements, until very recently they could not use the same computers. No computer with sufficient calculating capability to control the Shuttle flew on an unmanned spacecraft. Conversely, the Shuttle computers are so large and power hungry they would overwhelm the power supply of a deep space probe. Modern powerful microprocessors make it possible to overcome these deficiencies, but systems described herein predate most microprocessor technology. Also, computers on manned spacecraft are oriented toward relatively short-term missions lasting up to a few weeks (which will change in the Space Station and Mars Mission eras). Computers on unmanned earth orbital missions and deep space probes need to run reliably for years, yet must have low power requirements. Even though both need to be trustworthy, the different mission conditions dictate how reliability is to be attained.
NASA's challenge in the 1960s and 1970s was to develop computer systems for spacecraft that could survive the stress of a rocket launch, operate in the space environment, and thus provide payloads with the increased power and sophistication needed to achieve increasingly ambitious mission objectives. NASA found itself both encouraging new technology and adapting proven equipment. In manned spacecraft the tendency was to use what was available. On unmanned spacecraft innovation had a freer hand.
In contrast, NASA's ground computer systems reflected the need for large-scale data processing similar to many commercial applications, but in a real-time environment, until recently not normally a requirement of business computing. Therefore, commercially available computers could be procured for most of the ground-based processing, with any innovation confined to software that handled the real-time needs. Preflight checkout, mission control, simulations, and image processing all have used varying combinations of standard mainframe and minicomputers. So NASA's impact on computing driven by ground support requirements was largely in the area of operating systems [5] and other software and not as much in hardware, whereas many of the on-board computers had to be custom built. Some of the software innovations needed on the ground have naturally had greater impact on the wider world than those made for on-board computers. The techniques of software development learned by NASA while doing both flight and support programming have advanced the state of the art of software engineering, which comprise the management and technical principles that make it possible to build large, reliable software systems.
Even though the requirements and solutions to computing problems in the manned on-board, unmanned on-board, and ground arenas are different, several common themes bind the three together. In nearly all cases, NASA managers failed to adequately allow for system growth, often causing expensive software and hardware additions to be made to meet scaled-down objectives. More positively, recent developments are designed to enable proven computer systems and techniques to fly or support more than one mission, reducing the costs associated with customized solutions. Also, there is a continuing reliance on multiple smaller computers operating in a network as opposed to large single computers, enabling task distribution and more economical means of ensuring reliability. This last trend also underscores the dependence on communications that has characterized NASA's far-flung flight operations since the beginning. These themes appear in varying strengths throughout the stories of the individual projects.
Regardless of NASA's impact on computing, its many uses of computing technology from 1958 on provide valuable examples of the growth in power, diversity, and effectiveness of the applications of computers. The late 1950s marked the beginning of the computer industry as an indispensable contributor to American science and business. NASA's insatiable desire to make the most of what the industry could offer resulted in many interesting and innovative applications of the ever-improving technology of computing.

link to previous pagelink to indexlink to next page