| Reckoners, ENIAC, page 0104
|
5
Faster, Faster: The ENIAC
| .
|
| In 1746. . .I met a Dr. Spence, who was lately arrived from Scotland, and who
show'd me some electric experiments. They were imperfectly perform'd, as he
was not very expert, but being on a subject quite new to me, they equally
surpris'd and pleased me. Soon after my return to Philadelphia, our library
company receiv'd from Mr. P. Collinson, Fellow of the Royal Society of
London, a present of a glass tube, with some account of the use of it in
making such experiments.
| | -Benjamin Franklin, Autobiography
|
|
People often speak of computers as belonging to one of several "generations" beginning not
with the machines discussed in this book but rather with the first commercial computers.
That term implies a linear evolution of machines and technology. But it is a misleading
analogy: the computer did not descend from one or two ancestors. The first ones
incorporated bits and pieces from this and that machine: punched tape from telegraphs,
relays from telephones, punched cards from accounting machines, vacuum tubes from radios.
And so it goes today. Living creatures do not evolve that way. (Mythical creatures like the
Centaur combined the best qualities of the man and the horse; but among living animals
maybe only the Missouri mule is close to illustrating how machines evolve.)
But if there is a "granddaddy" of all the generations of digital computers, it would have to
be the ENIAC, the first working electronic numeric digital computer. It was not a "first
generation" computer, since it was not used commercially. Perhaps it belongs to the "zero"
generation, since nearly every computer built thereafter owes something to it. What they
owe is the subject of this chapter.
| Reckoners, ENIAC, page 0105
|
The ENIAC was an electronic computer: it was the only early computer except for the
British Colossus that computed at electronic speeds. But like all the machines of its day it
was a transitional device. It had some relay circuits. It was programmed like an IBM
accounting machine. It was a computer, a powerful
and fast computer at that, but its design and programming did not become the basis for any
computers thereafter. Nothing quite like it was ever built again. Like the Harvard Mark 1,
the most important thing about the ENIAC was that it existed: it proved to the world that
computing at electronic speeds was indeed possible, just as Howard Aiken had proved that
Babbage's dream was more than just a dream. In 1945, when the ENIAC ran its first
programs, that was important.
What is so important about computing at electronic speeds? The ENIAC computed
about 500 times faster than any of the electromechanical computers, a difference of scale
that made it an entirely different type of machine. With a relay machine it was always
possible to measure computing power in terms of the number of human beings it could
replace-that was the measure used in the published accounts of the Bell Labs machines and
the Mark 1. But the ENIAC was built precisely to tackle a job that by nature was beyond
the capabilities of human-or electromechanical-computers.
That was not the first time the pace of technology outran its conceptual understanding.
The first steam engines were measured by their "horsepower" -how many horses they
could replace for a given task. Matthew Boulton and James Watt charged for their
machines accordingly. But a modern diesel locomotive, developing hundreds ofhorsepower, could never be replaced by an equivalent number of horses. (The problem is
not getting all those horses hitched together; it is getting them all to pull in the same
direction: to coordinate each horse's power in a meaningful way.) The same is true
regarding the ENIAC: it broke through the limits of human computing power, power
limited by the fact that if a computing team was too large, its work could not effectively be
coordinated. (Incidentally, although little information about the British Colossus has been
made public, it is clear that its designers also recognized the absolute importance of
electronic speeds for the job of breaking the German codes the British had intercepted. No
electromechanical machine could have done it.)1
By 1943 Helmut Schreyer in Germany and engineers at IBM and RCA had designed
electronic calculating circuits. National Cash Register was looking into the possibility of
using vacuum tubes in its machines. There were no doubt many other examples from that
time which have not yet come to light; using electronic circuits for all-or-nothing switching
was fast becoming an accepted idea.2
In the late 1930's, Professor John V. Atanasoff of the physics department of Iowa State
College (now Iowa State University) conceived of the idea of using vacuum tube computing
circuits to solve systems of linear equations. He got pretty far with that idea-farther than
Schreyer, to be sure-but the machine was stalled in its final stage of construction and never
did any useful work. Around the same time, at Ursinus College in Collegeville,
Pennsylvania (near Philadelphia), Professor John Mauchly was also thinking about
computing with electronic elements. He built a few test circuits, and after meeting
Atanasoff in 1940 at a meeting of the American Association for the Advancement of
Science, he stepped up his efforts to build a digital computer.
| Reckoners, ENIAC, page 0106
|
Mauchly moved from Ursinus to the Moore School of Electrical Engineering
(part of the University of Pennsylvania), at first to learn more about electronics, then
staying on as an instructor. There he teamed up with J. Presper Eckert, who had been one
of his instructors. From that point the story is not clear, but it seems that Atanasoff's
machine was the spark-a small one, but a spark nonethelessthat ignited Mauchly's
enthusiasm about electronic digital computers. He and Eckert transformed that enthusiasm
into a working computer: the ENIAC. And from the ENIAC came almost everything
else.3
Well, not quite. That progression from Atanasoff to the ENIAC to the modern
computer is not untrue, but the story is hardly so neat and tidy as it implies. An elaborate
genealogical chart of the evolution of the computer, full of begettings like the Book of
Genesis, obscures the tortuous paths that were really taken.
The question of just who really invented the ENIAC (and by implication, who invented
the electronic computer) is fraught with controversy; it has even been the subject of a
lawsuit. (The lawsuit has been settled, but the controversy remains.) But there is no doubt
as to why the ENIAC was invented: it was designed for one specific wartime problem: the
preparation and printing of firing tables. Had there not been such a need for those tables,
the ENIAC would not have been built. Eventually of course someone would have built an
electronic digital computer, but it would not have been the ENIAC,4
(Computer designers today often do not care about what their creations are used for; they
build a machine that can execute certain general "benchmark" programs that test the
machine's overall abilities. But that was certainly not true in the 1940's.)
FIRING TABLES
The heavy artillery used in World War Two had remarkable range: some guns could fire
a shell twenty miles and more. But that range was useless if the shell could not hit its
target. At short ranges the gunner can see the target and make adjustments on the spot; at
longer ranges he can station a forward observer to radio back some of that information. But
even in those cases he needs a firing table: a table of numbers telling him how to set the
firing angle to give him the range he needs. A firing table is simply a table of angle settings
and the corresponding ranges they give for a given piece of artillery. The table also gives
the velocity of the projectile at impact (needed if it is to pierce an armored target) and
perhaps also the angle of fall at impact (needed if the projectile is to clear a rampart or
other obstruction).5
An analysis of the trajectory of a shell quickly leads to higher-order differential
equations, as is so common in describing physical phenomena. The basic physical law is of
course Isaac Newton's: an object in the earth's gravitational field falls with a constant
acceleration. Acceleration is the rate of change in the velocity of an object; the velocity is
the rate of change of the object's position. To find the position of a shell at the end of its
trajectory thus requires the solution of a second-order differential equation; to find its
terminal velocity requires solving a first-order equation.
That relationship is only a starting point for the preparation of a firing table. The most
important additional factor is the resistance of the air. It in turn varies according to the
temperature, humidity, and altitude through which the projectile travels; it also varies
according to the shape of the projectile. But in the main the air resistance is a function of
the velocity of the projectile: the greater the velocity the greater the resistance. So an
analysis of the air resistance also leads to a differential equation.
The gunnery officer in the field could not be expected to do the math required to
compute a trajectory. Instead he consulted a table for the type of gun and shell he was
using. That table could not be so complicated as to be unreadable under battle conditions.
Firing tables usually listed just the range and velocity for a given firing angle, with
supplemental tables of correction factors for things like crosswinds, other weather
conditions, even for drift caused by the rotation of the earth.
What all that meant was that a lot of computation was required for the preparation of
even one firing table, and for the many types of guns and projectiles being developed for
the war, a lot of tables were needed. The differential equations derived for a trajectory were
of the type that could only be solved numerically: that is, it was not possible to find
analytic solutions that yielded the trajectory of the shell directly. As with the equations
faced by Howard Aiken, trajectories were computed by combinations of elementary
operations of arithmetic together with temporary storage of intermediate results and the
consulting of tables of mathematical data.6 The computations were long, tedious, and
prone to error, even when done with the aid of desk calculators.
In the 1930's, Vannevar Bush had built an analog computer that could solve differential
equations, using a mechanical integrator similar to the familiar device that computes a
household electric bill. The basic computing element of his "Differential Analyzer" was a
rotating disk, upon which rested another smaller disk whose rotation corresponded to the
integral of the desired function. (The watt-hour meter measures the integral of the power a
household consumes with respect to time. The power is the product of the voltage, which
is a constant 110 volts in America, times the current, which varies from moment to
moment depending on what electrical appliances the customer is using. The meter performs
that integration by translating those functions into analogous motions of the rotating disk,
thereby computing the kilowatt-hours for which the customer is charged. Bush's
Differential Analyzer used a more primitive mechanical version of that disk
integrator.)7
It was an enormously complex machine. By 1942 Bush's Analyzer had been rebuilt and
fitted with a number of improvements that gave it more speed and power. Eventually its
size and cost put it on a par with the first digital computers such as the Harvard Mark I,
although it worked on entirely different principles.
| Reckoners, ENIAC, page 0108
|
The Differential Analyzer was faster than teams of human computers using desk
calculators, but it was still not fast enough. The Moore School of Electrical Engineering at
the University of Pennsylvania built a copy of one, and used both
it and human computers (mostly recent graduates from women's colleges up and down the
Eastern Seaboard) to compute trajectories. Humans took at least several hours to compute
a trajectory. The Differential Analyzer could compute one in about twenty minutes. But it
was a complicated, unique piece of machinery, and setting it up to compute a specific
trajectory took time, during which the machine could do no work. By mid-1942 Ballistic
Research Laboratory (BRL) officers realized that neither method could keep up with the
ever-increasing demand for firing tables.
So it was against that background in 1942 that John W. Mauchly of the Moore School
wrote a memorandum entitled "The Use of Vacuum Tube Devices for Calculating," in
which he proposed that an electronic computing device be built to solve differential
equations, not by the analog method of the Differential Analyzer, but by the numerical
methods used by the teams of human beings with their desk calculators. The difference
would be that electronic, not mechanical, devices would perform those calculations, and
electronic circuits would furthermore coordinate the elementary arithmetic operations and
transfer and store intermediate results automatically. With that approach, Mauchly said,
the time needed to compute a trajectory would drop to a minute or two.8
In April, 1943, that memorandum grew into a formal proposal by Mauchly, J. Presper
Eckert, and John Grist Brainerd for a machine which would retain the automatic operation
of the Differential Analyzer, yet use the numerical method that humans used, and do the
job much faster than both. They called the machine an "Electronic Diff.*
Analyzer," with a footnote referring to the abbreviation "Diff." as meaning not
"differential" a la Bush's analog computer, but rather "difference,"
as in the use of finite
differences manipulated by ordinary arithmetic. (The term "digital" had not yet come into
common use, but that is clearly what they meant.) Soon after the project received funding,
Colonel Paul Gillon of the BRL gave it the name ENIAC, for "Electronic Numerical
Integrator and Computer."9
The idea of building the digital electronic computer was Mauchly's. He was an
instructor at the Moore School, but his primary interest was not electronics but
meteorology. From 1933 to 1940, while he taught physics at Ursinus College (he was a
one-man physics department), he recognized the need to automate the process of
computation to advance the art of weather prediction. Weather prediction was at that time
just getting a theoretical foundation that showed great promise. Led by Lewis F.
Richardson in England, meteorologists had developed sets of equations that, while only a
crude approximation of the immensely complex patterns of the weather, nevertheless
offered a chance of making reasonably accurate predictions. But their advances required
large numbers of computations, and their work was held up in the 1930s's by a lack of
computing power.1O
| Reckoners, ENIAC, page 0109
|
Mauchly explored the familiar computing techniques of his day: mechanical calculators,
punched card equipment, and electronic circuits, both digital and analog. To learn more
about electronics he enrolled in a special course at the
Moore School designed to acquaint people with that fast-developing technology, and
ended up staying on. J. Presper Eckert was a graduate student at the Moore School who
was an instructor in that course. He had been working on various war-related projects,
including work on the copy of the Differential Analyzer the Moore School had. Eckert had
helped convert some of the machine's units from mechanical to electronic operation, but
other than that he had not done much work in computing. But Mauchly's enthusiasm was
enough to convince him; his facility with electronics was the perfect complement to
Mauchly's vision of high-speed computing machinery.
In December, 1940, Mauchly met John V. Atanasoff and learned that the physics
professor from Iowa State had already gone a long way toward building an electronic
digital computer. Atanasoff was building a machine that could solve systems of
simultaneous linear equations-the same sort of problem that Konrad Zuse was tackling in
Germany. But Atanasoff had proposed doing it with electronic circuits, not
relays. What
was more, Atanasoff had quickly seen the advantages of a digital machine-that is, one that
would solve those equations by numerical processes, not by representing the quantities by
electrical analogs of voltage or current levels. Other physicists had developed
special-purpose machines that could solve systems of linear equations. But Atanasoff's was far
more advanced than any of them, both by his use of high-speed electronic circuits, and by
his adoption of digital methods of solution.11
By the time Mauchly learned of Atanasoff's project, a prototype model had been
completed and was almost completely functional. It could handle equations having up to
thirty variables, and performed arithmetic on all the variables in an equation
simultaneously (reminiscent of punched-card methods). The machine represented numbers
in the binary system, with a word length of fifty binary digits, corresponding to about
fifteen decimal digits. It did not use floating point. Atanasoff has said recently that he had
known of the binary system ever since grade school; in any case, he chose the binary scale
for his machine after carefully considering several number bases from the standpoint of
maximum theoretical efficiency.
The only part of the machine not working was the input/output device, which was to
have coded and read binary digits on cards at very high speed, much faster than commercial
punched-card machines could. Mauchly saw that prototype on a visit to Ames, Iowa, in
1940, after meeting Atanasoff in Philadelphia.
Did John V. Atanasoff invent the electronic digital computer? That was the decision of
Judge Earl Larson, whose 1974 judgement in a suit against Sperry Univac Corporation
declared Eckert and Mauchly's ENIAC patent (which Sperry Univac had acquired) invalid
for just that reason.12
| Reckoners, ENIAC, page 0110
|
Atanasoff's machine had two features absolutely central to any modern conception of a
computer: high-speed digital electronic circuits, and the binary system. We have already
seen why electronic speeds are important. And while it is certainly possible to build a
computer using the base ten (or any other base, for that matter), the advantages of the
binary scale are overwhelming, especially so
at electronic speeds. (The binary system is central to modern computer science; for
freshmen computer science students binary arithmetic is the first thing they learn: it is the
portal through which all must pass.) Konrad Zuse certainly recognized the practical
advantages of the binary system. Atanasoff chose it after proving that it was the best
system in theory as well.
Mauchly examined Atanasoff's machine carefully during his visit to Ames, and from his
correspondence with the Iowa physics professor there is little doubt that he was
impressed by what he saw. Mauchly was thinking about building an electronic computer,
but it was only after seeing Atanasoff's machine (and after collaborating with Eckert) that
his ideas crystallized into a practical proposal.
The ENIAC grew out of the proposal for an electronic "difference" analyzer. It was a
digital machine, and it computed with electronic circuits. It did not use the binary system
but rather used electronic versions of the familiar decimal wheels of punched card
equipment. In that last regard it was far behind Atanasoff's concept (and Zuse's, and
Schreyer's).
But unlike Atanasoff's machine, the ENIAC was programmable. It could compute firing
tables, as it was designed to do, but it could also do a lot more-including solving systems
of linear equations. Atanasoff stressed the fact that many problems of physics could be
cast in the form of systems of simultaneous linear equations, and thus be solved with his
machine, but there was no way that he could alter the sequence of operations that it went
through. If in fact Mauchly derived his ideas for the ENIAC from Atanasoff, as Judge Earl
Larson concluded, then he took an important step forward in proposing a machine whose
sequence of operations could be altered by plugboards. But at the same time he and Eckert
took a step backward in rejecting Atanasoff's decision to use the binary system.
But there is one final aspect to the story that clinches the argument. The ENIAC
worked. Atanasoff's computer was never reliable enough to be put into routine use solving
practical problems. If Howard Aiken's Mark I put Babbage's ghost to rest, then the
ENIAC, which not only worked but worked well, silenced the many skeptics who said
that no computer using vacuum tubes could ever be made to work reliably. Atanasoff's
computer, had it been better publicized at the time, might only have added fuel to the
skeptics' arguments. And in the 1940's, those arguments were taken very seriously.
Charles Babbage first conceived of the idea of an automatic digital computer. John V.
Atanasoff, together with Helmut Schreyer and perhaps others, first conceived of an
electronic digital computer. John Mauchly and J. Presper Eckert, as leaders of a skilled
team at the Moore School, invented the first working electronic numeric digital computer.
| Reckoners, ENIAC, page 0111
|
BUILDING THE ENIAC
On April 9, 1943, Mauchly, Eckert (whose twenty-fourth birthday it was), and John
Grist Brainerd submitted their proposal to the Army; it was approved not long afterward.
Their first priority was to design the machine's accumulators
the devices that would both add and store numbers like those in the Harvard Mark I, only
at electronic speeds. They had to be designed before any other parts of the computer.
Eckert was already familiar with high-speed electronic counting circuits, which by the
1940's were coming into wide use for counting cosmic rays and nuclear particles emitted
from radioactive materials. In both cases the counter must run fast enough to keep up with
the events it is counting. At the same time, because they counted large aggregates of
events, accuracy was not too critical: it did not matter if they missed a particle now and
then. (Absolute accuracy is generally not required in counters. Who cares if an automobile
odometer is off by a mile or two?)
Most of the discussion about electronic counting circuits appeared in experimental
physics journals, which discussed counting cosmic rays or other nuclear events. (Mauchly
especially remembered many articles on counting devices that appeared between 1935 and
1941 in the Review of Scientific Instruments.) Those counters either used a gas-filled
vacuum tube called a thyratron or else they were descendants of the so-called Eccles-
Jordan "flip-flop," first published in 1919. That circuit contained a pair of
"triodes"-three-element vacuum tubes-only one of which conducted current at any one time.
When the
circuit was triggered by an external pulse of current, each tube in it "flipped" into its
opposite state: conducting or nonconducting. (H. J. Reich of the University of Illinois
called the Eccles-Jordan circuit a "trigger" circuit in his writings, which were widely read.
The IBM engineers working on electronic calculators in the 1940's remember the circuit by
Reich's name; after the war the term flip-flop came into common use.)13
The flip-flop was thus fundamentally a binary device, but it worked on different
principles from the bi-stable circuit that Helmut Schreyer developed for his doctoral
thesis. Schreyer's device used a neon lamp instead of two triodes to maintain the state of
the circuit. The Eccles-Jordan device was considerably faster. (Incidentally, Mauchly also
investigated neon tube circuits while he was at Ursinus.)
The problem became one of choosing a counting circuit, of which there were plenty of
examples described in the technical literature, and making it absolutely reliable. Remember
that in a digital computer the loss of even one digit can spoil the results of a
computation.14
The counters then in existence used a variety of number bases. Some counted cosmic rays
in the binary system; others used rings of tubes that counted decimally by groups of four
binary flip-flops, like George Stibitz's binary-coded-decimal circuits in the Complex
Number Computer. Other counters used the bi-quinary system, like the later Bell Labs
relay computers, using a total of seven tubes to count a decimal digit.
| Reckoners, ENIAC, page 0112
|
The circuit Eckert and Mauchly chose for the ENIAC's accumulators coded a decimal
number by ten flip-flops, one for each decimal digit. So it took twenty triodes to represent
a single decimal number. Those ten flip-flops formed a ring that recorded a number just
like the engraved wheels of a mechanical adding machine did. An adding machine's wheel
indicated a number by whatever digit
was visible through a window. The ENIAC's ring counters indicated their digits by
whichever of the ten flip-flops had a different state than the other nine. When a pulse was
sent to the ring, it turned off that flip-flop and turned on the one next to it. And when the
ring received a series of pulses, they triggered a succession of flip-flops corresponding to
an addition of that number. If, say, the fifth flip-flop was "on," and the ring received a
train of three pulses, the ring would move from state 5 to states 6 and 7, and finally come
to rest with the eighth flip-flop on, representing the sum of five and three. If a train of
pulses passed through the nine's position, a carry pulse would be sent to the neighboring
ring counter as well.15 The ENIAC's ring counter worked like the accumulators of Howard
Aiken's Mark I, using tubes instead of wheels. (Eckert and Mauchly knew of the Bell Labs
computers but not of the Mark I when they began designing the ENIAC.)
Writing a few years after the machine's completion, Eckert said that he rejected the
binary and binary-coded-decimal systems because he felt they could not be made reliable
enough.16 The biquinary code was rejected because "it required stable resistors, which
were then much more expensive than they are now." More recently, he and Mauchly have
given other reasons.17 The price they paid for their code was that to count a decimal
number required many more tubes than, say, Atanasoff's or Schreyer's circuits needed. No
other electronic computer after the ENIAC used that coding scheme. Many have represented
numbers in base ten, but they usually have used a binary-coded-decimal circuit
that requires far fewer flip-flops.
A bank of ten such ring counters (called decade counters) could store and add ten-digit
decimal numbers. They were called, appropriately, accumulators, and they formed the
backbone of the computer. Like the Harvard Mark 1, the ENIAC's arithmetic was
distributed throughout the machine: the accumulators did the addition and subtraction; a
separate unit did multiplication, division, and extraction of square roots.
The 1943 proposal called for a machine with ten accumulators, but once preliminary
work showed the design was feasible, the BRL asked for a machine with twenty. Each
accumulator could store and add ten-digit numbers plus their signs. They were mounted in
a series of panels arranged in a long U-shaped configuration which, together with the other
parts of the machine, filled a large room (Figures 5.1, 5.2).
| Reckoners, ENIAC, page 0113
|
In the accumulators, the two triodes of each flip-flop were enclosed in the single tube
6SN7, so there were at least ten such tubes for each ring, 100 for an accumulator. Besides
those, there were others needed to ensure that the ring functioned correctly. In fact, each
accumulator had 550 tubes, for a total of 550 x 20 or 11,000 tubes for the accumulators
alone. The original plans called for the ENIAC to contain 5,000 tubes; as finished it had
over 18,000.18 Recall that in Germany at that time Helmut Schreyer was proposing a
computer that would use about 2,000 tubes, a proposal rejected as being too ambitious.
The British Colossus, the electronic code-breaking computer completed in 1943, also had
2,000 tubes. By the end of the war ten versions of the Colossus had been built. The
ENIAC was by far the most complex piece of electronic equipment built up to that time.
Probably no other machine with that many tubes in it has ever been built since, or ever will
be built, either. Nowadays all that computing is done with solid-state flip-flops crammed
onto chips the size of a fingernail. Tubes still have their place, but not in computers. The
circuits of the ENIAC appear more
| Reckoners, ENIAC, page 0114
|
| Reckoners, ENIAC, page 0115
|
Figure 5.2. One of the ENIAC's Accumulators
and more arcane with the passage of years, although its logical structure can still be
deciphered with little difficulty.
| Reckoners, ENIAC, page 0116
|
STRUCTURE OF THE ENIAC
Besides the twenty accumulators, the ENIAC had a cycling unit, programming units,
constant transmitters for the values of functions like the drag function of a projectile, and
input/output facilities. In one respect the ENIAC was very different from any of the
electromechanical computers. Its program, the sequence of elementary instructions that it
was to carry out, was not supplied by punched cards or tape or filmstrip. The reason is
clear: the ENIAC's circuits did arithmetic at electronic speeds. That speed would be
wasted if the machine had to
wait for instructions that were being supplied at mechanical speeds. If a paper tape
supplied its programs or function data, as in the Mark I, the ENIAC's accumulators would
spend a lot of their time idly waiting to be told what to do next. (The only other electronic
computer from that era, the British Colossus, did use paper tape for the input of
alphabetic data. Those tapes were mounted on specially designed transport mechanisms
that moved with incredible speed. Accounts of the Colossus in action describe tapes
flying through the machine, feeding in up to five thousand characters per second. The tape
itself quickly wore grooves in the steel guide pins, and since no take-up reel could handle
that kind of speed, the tape simply was allowed to pile up at the side of the machine,
describing eerie rainbow arcs in the air before settling to the ground in a
heap.)19
So the ENIAC's instructions were wired into the machine by cables that connected its
various parts to one another. Programs were changed by plugging in the cables in a
different configuration. I shall have more to say on its programming later.
The ENIAC was a synchronous machine: that is, a central clock coordinated all its
actions. Times for all elementary operations were precisely specified as a number of pulses
sent out by the cycling unit. At each basic cycle, the cycling unit sent out a set of pulses,
each of which had a specific role in controlling the computer. All numbers, algebraic signs,
instructions, etc., originated as combinations of pulses from the cycling unit. That is, if the
number 5 was to be sent from one accumulator to another, the first accumulator would not
transmit five pulses to the other one, but it would rather open a "gate" at the second
accumulator long enough for five pulses originating at the cycling unit to be passed
through. The reason is that pulses lose their shape and intensity quickly. If a pulse that
originated at one accumulator traveled through various other parts of the machine, it would
soon be so weak that it could not do its job. Therefore all information in the ENIAC was
transferred by sets of pulses freshly generated 5,000 times a second by the cycling unit.
Even with that arrangement, the accumulators also had "pulse-reshaping" circuits that
restored the strength of signals as they arrived.
The basic cycle was 200 microseconds, one addition time. During a cycle ten parallel
pulse trains went out. Each had a specific role in controlling the machine. The first, for
example, consisted of one pulse 2 microseconds long that came near the end of the 200
microsecond cycle. Its job was to advance the programming units of the computer to their
next program step, as specified by the setting of program switches and the plugging of
program cables. The second of the ten trains consisted of ten 2-microsecond pulses that
came at the beginning of the cycle. Its job was to cycle a ring counter whenever a number
was to be read. In this way the contents of an accumulator could be read out by cycling the
counters one full revolution, after which each would have returned to its original position.
| Reckoners, ENIAC, page 0117
|
The next eight trains had similar roles. All but one of them consisted of strings of pulses
that were 2 microseconds long, separated from each other by a space of
8 microseconds. Thus the shortest sub-cycle of the ENIAC was 10 microseconds, or a
clock frequency of 100 khz (that is, 100,000 cycles per second). For diagnostic purposes
it was possible to slow the machine down so that it executed just one of those pulses at a
time, or one full addition cycle (twenty pulses long) at a time.
One of the pulses, the "carry-clear" pulse, was 70 microseconds instead of 2
microseconds long, as were the other nine. The reason for that was that during an addition,
all ten digits of a number were transmitted simultaneously. Should one of those transfers
cause a carry of ten to the next ring counter, that carry had to be held until the next counter
was finished with its addition; otherwise it would be receiving two pulses at once and
would not know how to sort them out. Recall that the ten-pulse mentioned above came at
the beginning of an addition cycle. Once all the digit pulses were sent, the carry-clear pulse
opened up a gate and held it open long enough for any carries to take place. In the extreme
case where a carry propagated itself through all ten decimal places (for example, 1 +
9,999,999,999), that could take up to 25 microseconds, as determined by experiment. So
the carry-clear pulse held the gate open long enough to make sure that all the carries got
through. An addition therefore took ten short pulse-times to cycle the ring counters, one
70-microsecond pulse-time for the carries, and three short pulse-times for complementing,
resetting, and control, for a total of 200 microseconds that made one addition cycle
(Figure 5.3). The ENIAC could add 5,000 numbers per second.20
A computation proceeded by gating appropriate pulses from the cycling unit around the
various arithmetic units of the machine, ending at an accumulator connected to a printer or
other output device. So the basic flow was clockwise around the U-shaped configuration,
but for all but the most trivial problems there would be multiple paths of number-routing,
looping of operations, and branching back to a previous sequence of operations. All that
was controlled by the programming units, described next.
The solution of, say, a differential equation implied a combination of elementary
arithmetic operations, storage and retrieval of intermediate results, and consulting tables of
functions or other data. Machines like the Z3 supplied those operations in a linear
sequence, coded into perforated film that passed through a reading device. The ENIAC's
program was supplied by rewiring the machine for each specific problem, then directing a
programming unit to step through those operations in the proper order.
| Reckoners, ENIAC, page 0118
|
One implication of that scheme is that there is no reason why the steps have to be
executed one at a time in a sequence. The programming unit could send out a pulse to
several accumulators at once, directing one to perform an addition, another to read a value
from a function table, a third to transmit results to a printer, and so on. Of course those
operations could not be ones that needed results of any other operations being performed
at the same time, but except for that, the ENIAC could telescope a long sequence of
operations into a more compact form, if programmed carefully to do so. In that regard it
was like the
The cycling unit delivered the following trains of pulses:
1) program pulse (1 pulse at the 17th cycle)
2) ten-pulse (10 pulses at the first 10 cycles, shifted a half-cycle in phase)
3) nine-pulse (9 pulses at the first 9 cycles)
4) one-pulse (1 pulse at the first cycle)
5) two-pulse (2 pulses, at the 2nd and 3rd cycles)
6) two'-pulse (2 pulses, at the 4th and 5th cycles)
7) four-pulse (at the 6th, 7th, 8th, and 9th cycles)
8) complement pulse (one pulse at the 10th cycle)
9) carry-clear pulse (one long pulse from the 11th to the 17th cycle)
10) reset-pulse (2 pulses, one at the 13th and one at the 19th cycle).
Figure 5.3. Timing Pulses in the ENIAC
Complex Number Computer, which had a permanently wired program that computed the
real and the imaginary parts of a complex product in parallel. (Recall that the Automatic
Sequence Controlled Calculator also had a limited parallel capability: to interleave additions
between the steps of a multiplication. But it was basically a sequential calculator, as its
name implied.)
The team at the Moore School always referred to the ENIAC as a "parallel" machine,
for another reason besides its programming. Whenever a number was transferred in or out
of the accumulators, all ten digits plus the sign were transferred at once, in parallel, by an
eleven-wire "trunk" cable. That was no different from the early electromechanical
computers examined thus far: the Mark I, the Bell Labs machines, and the Zuse computers.
In its initial configuration, the ENIAC was also capable of parallel program execution as
well, within the limits of the problem being solved. But the machine's parallel design was
stressed in the initial reports because as the ENIAC neared completion, Eckert and
Mauchly were already looking ahead to a new, more powerful computer, eventually called
the EDVAC, that would have far fewer tubes than the ENIAC. It would have fewer tubes
by doing all its arithmetic serially, that is, numbers would be
transmitted one digit at a time, not all at once. At the same time it would execute program steps
sequentially, not in parallel, as well, but that was not the major issue facing the computer's
designers at the time.
| Reckoners, ENIAC, page 0119
|
Programming the ENIAC to execute a number of program steps in parallel proved to be
exceedingly difficult and time-consuming, although it made the machine very fast. After it
was moved from Philadelphia to the Ballistic Research Lab at Aberdeen, Maryland, it was
modified so that it could be programmed by setting switches on a function table instead of
by plugging in a configuration of cables. That modification made programming a lot easier,
but it forever ended the ENIAC's parallel operating capability, a loss lamented by
some.21
So the descriptions of the ENIAC as a "parallel" machine refer to its parallel transfer of
numbers. The concept of parallel program execution has reappeared in modern
"supercomputers," which are optimized to do the same kinds of complex numerical
problems involving differential equations that the ENIAC was built for. Functionally,
supercomputers like the ILLIAC IV are the true descendants of the ENIAC.
Programming devices were attached to each accumulator and to the other units of the
machine. Program pulses travelled from one to the other along program trunks located just
below the trunks carrying numbers. The program trunk contained eleven independent
program lines; each line could carry a separate programming signal. The program trunk was
a mirror image of the digit trunks, which also had eleven lines for the ten digits plus the
sign of a single number. As with the digit signals, all program pulses originated from the
cycling unit.
The program device associated with each accumulator or other unit was called a
"transceiver" (transmitter-receiver). If, for example, the program called for the contents of
accumulator 10 to be added to the contents of accumulator 11, and at the same time be sent
to the multiplier unit, the programmer would set switches on accumulator 10 to transmit
its contents out on to the digit trunks upon the receipt of a program pulse. Digit trunks to
the other accumulator and to the multiplier would be plugged in manually, like a telephone
switchboard. Switches on the other units would be set to accept numbers from the digit
trunks upon the receipt of a program pulse. There were five possible input paths (labeled
with Greek letters in Figure 5.1), and two output paths (labeled "A" and "S," for the
number or for its complement if a subtraction was needed).
| Reckoners, ENIAC, page 0120
|
The transceiver switches could be set to repeat the above operation, if desired, up to
nine times, after which it would send out a program pulse to initiate the next set of
operations. In this way short loops of instructions were possible by using these so-called
stepper switches. The stepper of one accumulator could be connected to the stepper of
another, as well. The 1945 report on the ENIAC describes these subsequences as
"sub-routines," possibly the first use of that term; it was a feature that gave the ENIAC far
greater programming flexibility than the electromechanical computers which, if they had
subroutines at all, had to add them by endless loops of tape or film that were separate
from the main
sequence tape. It was just not practical to have loops of sequences when the program was
fed into the machine by a single long strip of tape.
It is clear that using transceivers to set up sequences at each accumulator made parallel
execution possible, provided the programmer kept track of the times required for all the
sequences. But the limited number of switch settings (perhaps 300 at most) meant that
long sequences were not possible.22
A separate unit called the Master Programmer, located next to the cycling unit, solved
that problem. The Master Programmer also contained steppers, which in turn could direct
the steppers on the individual transceivers throughout the computer. It also contained
other switches that could alter the entire path of the program depending on the results of a
previous calculation. All these switches were electronic, and so operated at the same
speed as the arithmetic units.
Thus the ENIAC had full conditional branching capability as well as a flexible
programming scheme. It truly was a general-purpose numeric computer, not restricted to
any one mathematical problem. The way it was programmed made it unlikely that it would
be used for short problems, since for every new problem someone had to unplug and
replug a tangled nest of cables and reset banks of switches. But it certainly could solve
short problems if someone wanted it to.
Programming it hardly seemed like programming at all in the usual sense of the word;
indeed, the people at the Moore School called it "setting up" the machine for a problem,
using a term borrowed from the operation of the Differential Analyzer. Setting up the
ENIAC meant a literal rewiring of the computercreating a special-purpose machine-to
solve a given problem. Compare that with the Bell Labs Complex Number Computer: a
special-purpose machine that was "hard-wired" to do complex arithmetic, and nothing
more. Each time the ENIAC was set up, it transformed itself into something like that, only
its wires were not soldered in but could be unplugged and rewired for a new problem.
All computer programming is a reconfiguration of the circuits to turn the machine into a
special-purpose device that solves the specific problem at hand. For the ENIAC, that
wiring was literally done by plugboards (and setting switches); computers programmed by
paper tapes do the same thing, only the rewiring is abstracted by one level: the code on the
tape represents the internal rewiring of the computer in such a way as to solve a given
problem.
Setting up the ENIAC was a slow and tedious process, taking at least a day for a typical
problem. It meant that the computer was best suited for long problems requiring lots of
runs using different input data. Setting up a short sequence took almost as long, during
which time the machine could do no work, so those kinds of problems were seldom done.
This certainly put the ENIAC at a disadvantage compared to the other electromechanical
computers, such as the Bell Labs Model V, also built to do ballistics work.23
| Reckoners, ENIAC, page 0121
|
Eckert and Mauchly recognized this drawback. In their plans for the EDVAC, the
successor to the ENIAC, they considered the idea of storing the computer's program
internally in a high-speed magnetic drum or disk memory, so that the set-up could be
rapidly changed, while still allowing instructions to be supplied
to the arithmetic units as fast as the data. That was the genesis of the storedprogram
principle, which is absolutely central to any modern concept of a digital computer.
"Calculations can be performed at high speed only if instructions are supplied at high
speed," Mauchly said.24 Supplying the program by a paper tape could not achieve that
speed. (Modern computers are often programmed by paper tape, but the instructions on
that tape are not directly executed as they pass through the machine, as was the case with
the pre-1945 machines. Instead the program is read from the tape into an internal memory,
from which it is then executed by the machine at electronic speeds.)
The ENIAC did not store program instructions in its memory, but the effect of plugging
in its cables and of setting its switches was the same. Its "program" was integral to the
computer; it did not exist as an entity outside of it somehow. From the machine's point of
view, the next instruction was always right "there," whenever it was needed.
The ENIAC stayed at the Moore School through 1946; then it was moved to the
Ballistic Research Lab at Aberdeen. The people who used it there, many having had no
contact with the Moore School, modified its programming method to make setting up
problems much easier.
Recall that digit trunks had eleven wires for the ten decimal digits plus their sign, while
program trunks also had eleven wires for eleven separate program channels. Both program
pulses and digit pulses came from the same initiating and cycling units, and were of similar
shape and intensity. In the ENIAC, a pulse was a pulse: all circuits handled pulses of the
same shape and intensity. That philosophy reflected the ENIAC's debt to cosmic ray and
other pulse-counting devices.
At Aberdeen R. H. Clippinger modified the ENIAC so that numerical data stored on
one of the functions tables were routed along the program trunks, thus allowing the
machine to be programmed much faster. One person could be setting up a program on a
function table not connected to the computer, while the computer was executing another
program. That made programming much faster and easier. Eckert has said recently that he
and Mauchly provided for that modification in the initial design of the ENIAC; the fact
that the program trunks were mirror images of the digit trunks seems to suggest that. But
while the ENIAC was in Philadelphia it was always programmed by the method of
plugging cables and setting switches. After 1948 that programming method was
abandoned. This meant that parallel execution of program steps was no longer possible,
since the machine could execute only one coded instruction from the function table at a
time. That slowed down the machine quite a bit, but it reduced set-up time from a whole
day to a few hours.25
| Reckoners, ENIAC, page 0122
|
OTHER UNITS: THE MULTIPLIER
Since the ENIAC was a decimal machine, its designers had to decide whether to
implement multiplication by either repeated addition or table look-up.
Although electronic
speeds would have made the former method quite fast, they
rejected it. While there were twenty places in the ENIAC where addition and subtraction
could take place, there was only one multiplier. The multiplier had to handle every
multiplication in a problem, so it had to be as fast as possible. And given the types of
problems the computer was designed for, multiplications could appear as frequently as
additions in the problem set-up.
The ENIAC's multiplier consisted of several panels, and with it were associated six of
the accumulators: two for storing the operands, two for the partial products, and two for
the final product. The product contained up to twenty digits, from which the operator
could select ten for further computation.
A matrix of resistors formed the multiplier's times table. When that matrix received
pulses corresponding to two decimal digits, it returned two pulses that represented the
product of those two digits. (Many products do not contain two digits, for example, 2 x 3
= 6, but the matrix always returned two, in that case 2 x 3 = 06.) One accumulator
received the units part of a product; another received the tens part. When all digits had
been multiplied, those partial products were summed up to give the answer. That method
of splitting each product into its units and tens parts was inspired by the IBM's 601
electromechanical multiplier, which also was the basis for the multiplier in the Harvard
Mark I (see Chapter 3).
The entire process of multiplying two ten-digit numbers together took fourteen addition
cycles, or 2.8 milliseconds. The ENIAC could therefore multiply 357 numbers per second,
often reported in the popular press as 360 per second. It was hundreds of times faster
than any other computer of its day.
THE FUNCTION TABLES AND OTHER UNITS
Like the multiplier, a grid of resistors also made up the function tables, but their values
could be changed by setting dial switches. These tables were vital to the ENIAC's overall
design, as in numerical integration the values of a function being integrated have to be
supplied at high speed. Each table stored up to 100 values, for arguments ranging from - 2
to 101. (The "extra" values at each end allowed the function to be interpolated throughout
its range.) Three tables were built, but only one could be attached to the computer at any
one time. While the machine was solving a problem, an operator could set up the other
tables for the next problem-it was a tedious and error-prone job, so having extra tables
kept idle time to a minimum. That was even more the case after one of the tables was used
to store coded instructions. For some frequently used functions, pre-wired assemblies
replaced a few banks of switches. Each function value could have up to twelve digits of
accuracy, or the whole table could be split up to give 200 function values at six-digit
precision.26
| Reckoners, ENIAC, page 0123
|
The input/output facilities were standard IBM card readers and punches modified to
accept program pulses from the cycling unit. Their speeds were grossly out of balance
with those of the rest of the machine, but early in the project it had been decided that the
risks of developing faster devices from scratch were too great. Recall that a high-speed
input/output device was the only part of Atanasoff's
computer that did not work. The ENIAC's users had to program around that speed
imbalance by carefully interleaving printing and card reading with other operations. In that
way, the computer's electronic units would not lie idle waiting for the electromechanical
units to finish printing or reading in data.
Obviously that required that the accumulators not be tied up holding a number while it
was being printed. So a "buffer" register built of telephone relays took the number from
the accumulator for delivery to the printer, leaving the electronic units free to go on with
other business. That buffer was built by Sam Williams, the same man who collaborated
with George Stibitz on the Bell Labs series of relay computers. So both IBM and Bell
Labs, besides having their own large-scale electromechanical computing projects during the
war, also were involved with the ENIAC, but only "peripherally."
The buffer relays did perform one calculation. A negative number was represented in
the accumulators by its tens-complement form, but IBM equipment printed a negative
number by its absolute value preceded by a minus sign. The buffer relays performed that
conversion. That was the only piece of computing on the ENIAC not done electronically.
Table 5.1 lists the full specifications for the machine as it existed in 1946.
Table 5.1. THE ENIAC
| Builders: | J. Presper Eckert, John W. Mauchly. Also Arthur Burks,
Kite Sharpless, John Davis, Robert Shaw, and others
| | Place: | Moore School of Electrical Engineering, University of Pennsylvania,
Philadelphia. Later moved to the Ballistic Research Laboratory, Aber-
deen, Maryland.
| | Dates: | Proposed April, 1943; authorized June, 1943; completed by November,
1945; first problem run December, 1945.
Dedicated February 16, 1946; moved to Aberdeen November, 1946;
dismantled October 2, 1955. Parts now in various museums, including
the Smithsonian, Washington, D.C., and the Science Museum, London.
| | Cost: | $500,000 (exactly $486,804.22, according to Goldstine),
funded by the Army.
| | Technology: | Vacuum tubes for computing; electromechanical input and output:
card readers, card punches, printers; telephone relay buffer store.
| Physical
specifications: |
40 panels, each 9' x 2' x 1', arranged in a U-shape; other units on
casters could be positioned at various places. 18,000 tubes, 1,500 relays.
80 different DC voltages, ranging from -920 to + 550 volts; main power
240 volts, 60 Hz. Power consumption: 150 kW, 80 kW for tube heaters,
45 kW for other electronic circuits, 5 kW for input/output devices, 20
kW for ventilating and cooling.
| | Architecture: | Word length: 10 decimal digits plus sign;
ten's complement for negative
numbers and subtraction; fixed decimal point-switch- selected;
multiplication by table look-up. Addition and subtraction done in
accumulators; separate unit for multiplication, division, and
square-rooting. Other units for cycling (timing), pulse generation, and programming.
| Reckoners, ENIAC, page 0124
|
| | Memory: | 20 numbers in the accumulators: 100 read-only numbers in a function
table; other storage by punched cards; also twenty 10-digit constant switches.
| | Speed: | Pulse frequency, 100 kHz, or one pulse every 10 microseconds. Basic
cycle was one addition time, 20 pulses, or 200 microseconds (5,000 additions/second).
Multiplication time, 14 addition times, or 2,800 microseconds (357 multiplications/second). Division time varied, up to 38 divisions/second.
The ENIAC could be run at slower speeds, including a single pulse at a
time, or a single cycle at a time, for diagnostic purposes.
| | Programming: | Plugboards and switch settings. Full conditional branching and
subroutine capability; also the ability to perform parallel sequences of operations.
Slow to set up: a day or two for each new problem.
| | Input: | 80-channel IBM punched-card reader; could read 2 numbers/second.
| | Output: | Standard IBM printer. Each accumulator also had a bank of neon lights
showing its contents; at normal speeds these were of course illegible, but
at diagnostic speeds they could be read.
| | Miscellaneous: | Much of the metalwork and other physical construction done by
Livingston & Conway, Inc., a Philadelphia construction firm. Cooling
system designed and built by Eggly Engineers, also of Philadelphia. RCA
of Camden, New Jersey, supplied the tubes.
|
EVALUATION OF THE ENIAC
The ENIAC was a pioneering machine. But it had an inelegant design, was
hard to program, had a limited memory capacity, and had slow input/output facilities.
That much was frankly acknowledged by its builders in their reports on the machine
written in 1945 as the machine was being completed.27
Those reports devote much space to the ENIAC's successor, the EDVAC, in
which Eckert and Mauchly hoped to overcome most of the ENIAC's deficiencies. The
EDVAC (Electronic Discrete VAriable Computer) would use binary arithmetic, would
have a high-speed read-write memory of large capacity, and would execute programs that
were internally stored in its memory.
| Reckoners, ENIAC, page 0125
|
In the EDVAC there would also be a separation of memory functions and
arithmetic. It needed a fast and large memory, which would be much more
difficult to achieve if each memory cell also had to be capable of performing
addition, as the ENIAC's accumulators did. Thus its designers returned to the
overall structure for a computer that Charles Babbage had decided upon a
hundred years earlier for his Analytical Engine (and which Konrad Zuse independently
rediscovered in the late 1930's).
Aside from those design shortcomings, the ENIAC's biggest drawback was that
it had
far too many tubes. That was the chief reason why some government and
military
officials, including George Stibitz, were reluctant to fund the project at
all. No one was
sure that the ENIAC would run long enough between tube failures to do any
useful work.28
Tubes are inherently less reliable than other electronic components; that
is why they are
not soldered into a circuit the way resistors or capacitors are, but are
rather mounted in
sockets for easy replacement. Even after the ENIAC was unveiled to the
public and
demonstrated its reliability, other computer designers (including Zuse and
Aiken)
continued to use the slower relay technology.
But the ENIAC was actually quite reliable in absolute terms, and much more
reliable
than the relay computers when its speed is taken into account. If the ENIAC
could be
made to run without a tube failure for only one hour, it could in that hour
do more
computing than the Bell Labs Model V could do in fifteen days of
round-the-clock
operation, based on their relative multiplication speeds. The claim that
the relay
computers could, and often were, operated unattended through the night
(something the
ENIAC never could do) must be tempered by that fact.
A graph of failure rates of electronic components looks like the letter U.
Failure are high
when the components are new, then follows a long period of trouble-free
operation,
followed by a gradual increase in failures as the components age. Whenever
the ENIAC
was turned on it would usually blow a tube. When a tube is cold, its
filament has a
different resistance and physical shape than when it is hot, so it is more
likely to burn out
when it is first turned on.29 So the ENIAC was hardly ever turned off.
Surprisingly few
cases of wiring mistakes turned up, and there were a few malfunctions due
to "cold-soldered" connections, where the solder did not receive enough heat to form
a good
electrical bond. But those were quickly located and fixed.
After the tubes were left on all the time, the ENIAC could run about twenty
hours
between tube failures-a remarkably good record, due mainly to the
conservative ratings at
which the tubes and all other components in the computer were run. After it
was moved
from Philadelphia to Aberdeen, failures were more frequent, but eventually
there, too, a
good in-service record was established.
Besides the oft-mentioned fact that all the components were run well below
their rated
capacity, the design of the ENIAC was such that when a failure did occur,
it could be
isolated and repaired quickly. Indeed, at no time while it was in
Philadelphia was the
ENIAC ever shut down for more than a few days. The increased complexity of
its design
actually made it more reliable: by having a complicated power supply
delivering many
different voltages to the circuits, the machine could be run at slower
speeds, down to one
pulse at a time, to track down a problem. Neon bulbs revealed the contents
of the
accumulators; normally they blinked too fast to be readable but at
single-step speeds they
were.30
| Reckoners, ENIAC, page 0126
|
The ENIAC's ring counters were designed to be unplugged as a unit. If one
malfunctioned, an identical spare, known to be in good working order, could
be plugged in,
while the defective one was brought to a bench where it could be repaired
without tying
up the whole computer. This sort of "modular" approach to systems
reliability is taken
for granted in the computer industry today, but it was hardly known at that
time.
There was no provision for the kind of elaborate internal checking
pioneered by Bell
Labs in their relay computers. Before working on a problem, at intervals
during the
solution, and after running the problem, its programmers ran special
diagnostic programs
to test the circuits.31
But it was still clear that the ENIAC had too many tubes. Eckert and
Mauchly stressed
that in the EDVAC they would have the same computing power with one-sixth
the
number of tubes. They had made the ENIAC a reliable computer, but just
barely. In a
sense the skeptics were right in being pessimistic about vacuum tubes. The
reliability
problem was always a serious one until tubes were replaced by transistors
after 1960-
thereby lifting the whole question of computer engineering, and with it
reliability, to a new
level of sophistication.
HOW THE MACHINE WAS USED
The acronym ENIAC stood for Electronic Numeric Integrator and Computer, and
that
is a good description of what kind of work it did. If Bessel functions were
the Mark I's
bread and butter, then the solution of differential equations by numeric
methods was the
ENIAC's. Its original goal was to compute and tabulate firing tables, and
that goal remained
central throughout its design, development, and construction. But the way
it was built
meant that it could do much more than that. By the time the computer was
ready for
testing late in 1945, the war was over, and the need for firing tables had
lost some of its
urgency; but that did not really matter. Differential equations of the kind
encountered in
ballistics are also found throughout physics, and if the ENIAC could be
programmed to
solve them, it would be kept busy.
The first problem it attacked linked the ENIAC with that other great
project of the
Second World War, the Manhattan Project. In July of 1945 the world's first
atomic bomb
exploded over the forbidding deserts of New Mexico. Building that bomb
required, among
many other things, a lot of computation. Its fissionable material was
ignited by an
implosion of a carefully shaped and timed firing of TNT, and the scientists
who designed it
had to calculate the geometry of the shock wave to an exacting tolerance.
Most of the
computing at Los Alamos was done by mechanical desk calculators and IBM
punched card
equipment.
| Reckoners, ENIAC, page 0127
|
But even as the atomic explosions at Hiroshima and Nagasaki hastened the
end of the
war, the scientists at Los Alamos were looking toward the hydrogen bomb,
the "Super,"
which would have a much higher yield than the fission bomb. Designing it
required even
more calculations, far too many to be done manually or even with an
electromechanical
computer. Right then along came news of the ENIAC's nearing completion.
Nicholas
Metropolis and Stanley Frankel went to
Philadelphia late in 1945 and arranged that the first problem the ENIAC
would run would
be a classified problem to test the feasibility of the Super's design.32
Few people at the
Moore School, including Eckert and Mauchly, could even be told of the
nature of the
problem, but of course they were given the mathematical equations the ENIAC
was to
solve. It was a very large partial differential equation whose set-up
required a million
punched cards for input and transfer of numeric data. The problem
overwhelmed the
ENIAC's internal memory, so it was divided into sections, with intermediate
results
punched onto cards and reentered into the machine.
The ENIAC solved the problem-without ever having the chance to go through
any
shakedown or test phase. Actually, the Super computation was the shakedown
cruise for
the ENIAC. Right from the beginning it proved itself to be a fine machine
indeed.33 The problem itself remains classified to this day, but
it is known
that the answer computed by the ENIAC showed that the Super would not work
as
designed. It was a design based on freezing the heavier isotopes of
hydrogen and
detonating them by the compression from a fission bomb. Even after the
negative results
of the ENIAC's computation, a test of the so-called wet bomb design was
conducted at
Eniwetok in the Pacific in 1951. In that test, fusions of hydrogen nuclei
did take place, but
there was no thermonuclear explosion. (Early in 1951, Stanislaw Ulam and
Edward Teller
conceived of a different approach, one using not the blast wave but rather
the x-ray
emission of the fission bomb to fuse the hydrogen. That approach led to
America's first
hydrogen bomb shortly thereafter.)
The ENIAC proved its worth so quickly that it was busy from that moment on.
There
never was any time for testing or "running in" the machine. Its move to
Aberdeen was
postponed until late 1946 because of the urgency of the first problems it
solved. When it
finally was moved, it was turned off in November, 1946, and not started up
again until late
summer, 1947. So for most of the year 1947 the world had to get along once
again without
any electronic numeric computers.
Questions of whether or not the ENIAC was truly a general-purpose numeric
computer
are best answered by looking at some of the problems it did in that first
year. Herman
Goldstine, who with his wife Adele did much of the programming of the
ENIAC, has
documented problems in computing tables of trigonometric series, another
simulation of a
nuclear reaction, problems concerning the propagation of shock waves in
compressible
fluids, and even a problem in number theory submitted by D. H. Lehmer. The
ENIAC also
tackled a problem in weather forecasting-Mauchly's old dream-though it was
not Mauchly
but John von Neumann who submitted it.
| Reckoners, ENIAC, page 0128
|
The British physicist D. R. Hartree used the ENIAC between April and July,
1946, for
a problem involving the flow of a compressible fluid over a surface, such
as air over the
surface of a wing travelling faster than the speed of sound. Hartree had
already used the
Differential Analyzer for that problem. He found the ENIAC's memory too
limited for its
solution by an iterative method, but he
tried a different approach more suitable for the ENIAC's structure, and it
worked well.
He divided the area to be computed into 250 intervals, and the machine
computed and
punched answers to seven-place decimal accuracy.
Hartree's work is especially interesting because it was a full-scale
problem that taxed
the ENIAC's full capabilities, but it was not a ballistics calculation.
Although it involved
the numerical solution of an ordinary differential equation, its set-up was
very different
from the kinds of set-ups Eckert and Mauchly had envisioned for computing
firing tables.
So from the very beginning, the ENIAC showed that it had a broad range of
applicability.34
Another consequence of Hartree's work was that he published an account
of it in a
series of notes in the British journal Nature, in 1946, as well as in a
longer paper in the
Philosophical Transactions of the Royal Society in 1948. Those articles
helped publicize the
speed and power of the new invention. In general, the ENIAC never strayed
far from
numerical integration of differential equations. That was what it did best.
But at least it
could do other things, easily enough for some persons to make the attempt.
After it was
installed at Aberdeen, it finally got a chance to compute firing tables,
which it did reliably
and well for many years.
By the end of 1945 the new computer had scarcely begun running, yet it was
already
clear that the whole project was going to be a success. The war was over,
and those who
had been working so hard on the computer wanted to share their excitement
with others. A
public dedication was held in February, 1946, during which the machine
demonstrated its
ability to sum and multiply numbers at speeds few people could adequately
comprehend.
Representatives of the press watched as the machine computed a full
trajectory in twenty
seconds-faster than the shell itself travelled from the gun to its target.
That seems like a
silly comparison by today's standards of measuring computer speeds, but it
was enough to
convince the more skeptical members of the audience.
With the lifting of wartime secrecy the development of the digital computer
entered a
new phase. Communication barriers were not lifted entirely or immediately,
but the
published descriptions of the various projects meant that subsequent
computer projects
would proceed more along common lines. The "pre-historic" age ended, and
there followed
a more direct line of descent to the present day. From 1945 to 1950 a
consensus emerged:
the computer's future lay in machines that were electronic, not
electromechanical, and
digital, not analog. They would compute in the binary scale, and they would
have as much
high-speed read-write memory as possible. The memory would be restricted to
storage and
retrieval of data; all arithmetic would be concentrated in a separate unit
specially built for
that purpose. Most important, future computers would store not only
numerical data but
also their own programs in that same internal high-speed memory. How those
concepts,
especially the last one, emerged, will be discussed next.
NOTES
- 1. J. Good, "Early Work on Computers at Bletchly," Cryptologiia, 3
(1979), 65-77;
Simon Lavington, Early British Computers (Bedford, Mass.: Digital Press,
1980), Chapters 1, 2.
| Reckoners, ENIAC, page 0129
|
- Cuthbert Hurd, "Early IBM Computers: Edited Testimony," Annals of the
History of
Computing, 3 (1981), 163-182.
- Herman H. Goldstine, The Computer from Pascal to von Neumann (Princeton:
Princeton University Press, 1972), Part Two; Nancy Stern, From ENIAC to
UNIVAC
(Bedford, Mass: Digital Press, 1981); Arthur Burks, "The ENIAC: First
General-Purpose
Electronic Computer," Annals of the History of Computing, 3 (1981), 310-389.
- John Brainerd, "Genesis of the ENIAC," Technology and Culture, 17
(1976), 482-488;
Goldstine, Computer, pp. 127-139.
- Gilbert A. Bliss, Mathematics for Exterior Ballistics (New York, 1944);
Edward
McShane, John Kelley, and Franklin Reno, Exterior Ballistics (Denver:
University of Denver
Press, 1953), especially the Appendix on its history, pp. 742-799; Forest
Moulton, New
Methods in Exterior Ballistics (Chicago: University of Chicago Press,
1926); Thomas J.
Hayes, Exterior Ballistics (New York: Wiley, 1938).
- Goldstine, Computer, pp. 146, 137-138.
- Burks, "The ENIAC."
- John Mauchly, "The ENIAC," in N. Metropolis, J. Howlett, and G. -C.
Rota, eds., A
History of Computing in the Twentieth Century (New York: Academic Press,
1980), pp. 541-
550.
- Nancy Stern, "From ENIAC to UNIVAC: A Case Study in the History of
Technology,"
Dissertation, SUNY, Stony Brook, New York, 1978, pp. 41-48; Goldstine,
Computer, p. 150.
- Nancy Stern, "John W. Mauchly: 1907-1980," Annals of the History of
Computing, 2
(1980), 100-103; Lewis F. Richardson, Weather Prediction by Numerical
Methods
(Cambridge, England, 1922).
- Burks, "The ENIAC"; letter from John V. Atanasoff to the author, May
25, 1980; for
an example of a special-purpose mechanical device that solved systems of
linear equations, see
the description of the "Wilbur Equation-solver" in Charles and Ray Eames, A
Computer
Perspective (Cambridge, Mass.: Harvard), p. 113.
- The Industrial Reorganization Act: Hearings Before the Subcommittee of
the
Judiciary, U.S. Senate, 93rd Congress, Part 7: The Computer Industry, July
23-26, 1974; Earl
R. Larson, Findings of Fact, Conclusions of Law and Order for Judgement,
File No. 4-67
Civ. 138, Honeywell, Inc., vs. Sperry Rand Corporation and Illinois
Scientific Developments,
Inc., U.S. District Court, District of Minnesota, Fourth Division, October
19, 1973.
- H. J. Reich, "Trigger Circuits," Electronics, August, 1939, pp. 14-17;
Hurd, "IBM
Computers"; W. H. Eccles and F. W. Jordan, "A Trigger Relay Utilising
ThreeElement
Thermionic Vacuum Tubes," The Radio Review, 1 (1919), 143-146.
- J. Presper Eckert, "The ENIAC," in Metropolis, Howlett, and Rota, A
History of
Computing, pp. 525-539; Mauchly, "The ENIAC," in Metropolis, Howlett, and
Rota, pp. 541-
550; J. Presper Eckert, "A Survey of Digital Computer Memory Systems,"
Proceedings, IRE,
41 (1953), 1393-1406.
- Arthur Burks, "Computing Circuits of the ENIAC," Proceedings, IRE, 35
(1947), 756-
767.
- Eckert, "Survey of Memory Systems."
- Eckert, "Survey of Memory Systems"; Mauchly, "The ENIAC."
- Burks, "Computing Circuits of the ENIAC"; Burks, "The ENIAC."
- For a popular account of the Colossus, based on interviews with some of
the
participants, see Christopher Evans, The Micro Millennium (New York, 1980),
pp. 34-36.
Evans's interviews are available as the "Pioneers of Computing" series from
the Science
Museum, London.
| Reckoners, ENIAC, page 0130
|
- Burks, "Computing Circuits"; J. G. Brainerd and T. K. Sharpless, "The
ENIAC,"
Electrical Engineering (February, 1948), pp. 163-172; J. P. Eckert, et al.,
"Electronic
Numerical Integrator and Computer," U.S. Patent No. 3,120,606 (June 26,
1947); Herman
Goldstine and Adele Goldstine, "The Electronic Numerical Integrator and
Computer,"
Mathematical Tables and Other Aids to Computation, 2 (1946), 97-110.
- D. H. Lehmer, "A History of the Sieve Process," in A History of
Computing in the
Twentieth Century, N. Metropolis, J. Howlett, and G. -C. Rota, eds. (New
York: Academic
Press, 1980), pp. 445-456.
- U.S. National Defense Research Committee, Applied Mathematics Panel, "De
scription of the ENIAC and Comments on Electronic Computing Machines,"
Report 171.28,
November 30, 1945.
- Franz Alt, "A Bell Laboratories Computing Machine, Part II," in Brian
Randell,
ed., Origins of Digital Computers, p. 527.
- John Mauchly, "Preparation of Problems for EDVAC-type Machines," in
Randell,
Origins, p. 366.
- Burks, "Computing Circuits of the ENIAC"; National Defense Research
Commit
tee, "Description of the ENIAC," p. 3/9; N. Metropolis and W. J. Worlton,
"A Trilogy on
Errors in the History of Computing," First USA-Japan Computer Conference,
October 3-5,
1972 (Tokyo), pp. 683-691; J. P. Eckert, "ENIAC," in Metropolis, Howlett,
and Rota,
History of Computing.
- For this and the following descriptions of the ENIAC's structure I have
relied
mostly on Burks, "The ENIAC," cited above.
- National Defense Research Committee, "Description of the ENIAC," pp.
2/4-2/5,
also section 4.
- J. Presper Eckert, "Thoughts on the History of Computing," Computer
(Decem
ber, 1976), pp. 58-65.
- Goldstine, The Computer, p. 145; Brainerd and Sharpless, "The ENIAC,"
pp.
168-169.
- Industrial Reorganization Act, p. 5810; Eckert, "Survey of Digital
Memory," p.
1394.
- Brainerd and Sharpless, "The ENIAC," p. 169.
- Burks, "The ENIAC."
- Nancy Stern, ENIAC to UNIVAC, pp. 62-63; Goldstine, The Computer, p.
234.
- Hartree published several accounts of his experience with the ENIAC:
"The ENIAC:
An Electronic Computing Machine," Nature, 157 (April 20, 1946), p. 527; and
158 (October
12, 1946), pp. 500-506; a description of the problem he ran on it appears
in Calculating
Instruments and Machines (Urbana: University of Illinois Press, 1949).
|