| Reckoners, Bell Labs, page 0073
|
4
Number, Please
Computers at Bell Labs
| .
|
| The Bell Telephone Laboratories general-purpose relay computer is probably
the best mechanical brain made up to the end of 1947 . . . .
| | -Edmund Berkeley, 1949
|
|
A telephone network does two things. First, it transmits voices from one person's
phone to another's. Second, it allows a person to select the caller he or she
wishes to speak with-by letting the caller "dial" a phone connection. Obviously
the first is the essence of what a telephone is-that was what Alexander Graham
Bell invented in 1875. But the second is just as important to the telephone system
as it is used today. The two functions are basically different: one is concerned
with continuously varying signals generated by the human voice, the other is a
cascading of yes-or-no switches that establishes a path between two subscribers.
One is an analog process, the other digital.
Between 1937 and 1946 engineers and scientists at Bell Telephone Laboratories
built a number of digital relay computers, among the first working
programmable machines anywhere. Their experience with the technology of
switching-that second aspect of telephony-was the basis for Bell's entry into digital
computing. But the first aspect-the transmission of analog voice signals-played
a role too, as we shall see. The invention of the computer at Bell Laboratories,
like its invention elsewhere, resulted from a convergence of technical skill,
social need, and talent. Those preconditions were there by the mid-1930's. It
remained for one of Bell's employees, Dr. George Stibitz, to serve as the catalyst
to bring them together.
| Reckoners, Bell Labs, page 0074
|
BACKGROUND: BELL LABORATORIES
A telephone codes information (the sound of the human voice) into electrical
signals, transmits those signals over wires, and decodes them into sound at the
other end. The engineers who worked on this form of "data processing" (of
course they did not use that term) in the early days had little theory to
guide
them. For short distances it was easy enough to send voice signals; indeed Alexander
Graham Bell's original circuit was terribly inefficient from a modern standpoint, yet it
worked well enough to launch the industry.
But for long distances the problem of keeping the signal intelligible became acute. The
first circuits were limited to a range of a few miles before the signal faded out.
With that restriction on the telephone's use, it did not compete with Western Union, the
dominant telecommunications company of the late 19th century. Western Union handled
digital information (dots and dashes) that could be regenerated by "repeaters" along a line,
thereby allowing coast-to-coast communication. But telephone signals vary continuously
over a large spectrum. As they lose their strength they cannot be regenerated by a repeater.
They have to be amplified instead.
So the telephone coexisted with the telegraph in its first few decades of existence. Its
personal service, using the human voice and not a code, suited it well for local urban traffic.
Western Union's telegraph handled long-distance messages.
The Bell company was not satisfied with that state of affairs. It introduced a number of
improvements to increase the distances over which telephone signals could be sent: the
two-wire circuit in the 1880's, the "loading coil" after 1900, and others. But it was the
adoption and perfection of the vacuum-tube amplifier after 1912 that finally made
amplification, and hence transcontinental service, practical. (The first transcontinental call
was made in July, 1914.)1 Establishing reliable (and cheap) long distance
service launched
Bell into a period of steady growth until it had all but relegated the telegraph to a back
corner of the telecommunications world.
So the success of the Bell System depended on its ability to transmit and amplify
telephone messages over long distances. That success in turn came from recognizing the
potential value of the "audion" vacuum tube (invented by Lee DeForest in 1906) and
improving it to the point where it would function as a reliable amplifier. DeForest had not
really understood the fundamentals of his own invention; a strong research effort by Bell
Telephone revealed the nature of the tube's function-and turned it into a practical device.
It was for that purpose that a laboratory for basic research was established in 1911,
as a branch of Western Electric, Bell's manufacturing company.2 In 1925 the lab was
incorporated as the Bell Telephone Laboratories, and given charge of basic research for the
Bell System, which by then had become a powerful monopoly under the leadership of
Theodore N. Vail. Thus began an institution that has become synonymous with
fundamental and exciting research at the frontiers of physics, chemistry, and other
branches of modern science.
| Reckoners, Bell Labs, page 0075
|
Research on the physical problems of long-distance telephony was what started Bell
Laboratories, but by the 1930's it was busy with that other aspect of telephony,
switching, as well. The earliest networks used human operators to route a caller to the
desired callee, and indeed there are places in rural America
where calls are still placed that way.3 But from the beginning of personal phone
service there was an effort to automate the call-selection process. Many historical
accounts mention that an undertaker named Almon B. Strowger invented the
automatic rotary dial in 1891 to prevent operators from being bribed to divert
business to his competitors.4 Whether or not that story is accurate, it does show
that the telephone system was closely linked to automatic switching from the
start. After 1921 the dial began replacing operators in significant numbers. It is
still in wide use today, although the push-button "dial" is now replacing it.
The engineers who designed the first switching circuits were, in effect, using
electromagnetic relays to implement "logical networks," although they did not
consider their work in those abstract terms. Some of the circuits they developed
were quite sophisticated: for example, if all the major trunk lines between two
cities were busy, a call would be automatically rerouted through another line,
perhaps through a third city, all automatically. While the switching equipment
was setting up this path, other banks of relays would store the dialed number and
then retrieve it when the call was ready to go through. These two functions-
automatic selection of a circuit depending on the present condition of the
net-work, and temporary storage and retrieval of numbers-are of course also central
to the operation of computers.5
In retrospect it seems inevitable that someone at Bell Laboratories would adapt
that switching equipment to function as a digital computer. But for what
purpose? The switching circuits were already doing their job well; why adapt them
to function as a general-purpose computer unless there was an obvious need for
one? The Laboratories were committed to basic research in a variety of fields,
and in 1925 that was something remarkable for an industrial laboratory in
America. Nevertheless they were always mindful of the original purpose for which the
labs were set up: in Theodore N. Vail's memorable phrase, "one system, one
policy, and universal service."6 Bell's engineers would build a digital computer
only if they believed it would further those goals.
By the 1930's they saw the possibility of using relay circuits to perform
ordinary arithmetic, as commonly performed with mechanical calculators.7
Telephone switching circuits did not perform arithmetic in the ordinary sense, but
they did convert numbers from their dialed code of pulses into other pulses that
actually did the switching. It would have been an easy matter to have those
conversions mimic the familiar laws of addition and subtraction of numbers. But
there was no point in building a calculator out of relays, since existing
mechanical calculators already worked well, and there was no reason to believe that relay
calculators would be better--or cheaper. But a calculator that took advantage of
the relay's ability to perform logical switching as well-something mechanical
calculators could not do-would be justified, if there was a mathematical
problem demanding that capability.
As it turned out, such a problem was being faced by the other division of Bell
Labs-the division that worked with long-distance transmission of analog voice
signals. Dr. George Stibitz, a research mathematician at the Labs, was the
pivotal figure who matched the needs of that group with the capabilities known to the
switching engineers. The result of this marriage was the Complex Number Computer,
completed in 1939, which though not a programmable general-purpose computer,
nonetheless inaugurated Bell's involvement in the computing field.
| Reckoners, Bell Labs, page 0076
|
COMPLEX NUMBERS
The Complex Number Computer performed the four ordinary operations of arithmetic,
but on complex rather than simple numbers. Complex numbers were used in the design of
filters and amplifiers for long-distance telephone lines. The function of those devices was
to maintain the strength of the desired voice signal, while at the same time keeping the level
of unwanted signals (for example "noise") low. But the engineers had to be concerned with
more than just the amplitudes of the signal and noise. They were also concerned with the
"phase" of the signal-the relationship of the ever-varying voice signal with time. Filters and
amplifiers introduced time-delays into the circuit, and unless those delays were accounted
for, the resulting signal might be reduced rather than increased in strength. (One familiar
example of phase effects is found in home stereo Systems. The two loudspeakers, which
deliver the left and right components of the reproduced sound, must be in phase with each
other. If the phase is incorrect, the sound from one speaker will cancel out the sound from
the other, regardless of the power of the amplifier. A similar situation occurs in telephone
circuits.)
Engineers found that they had to represent a signal by a pair of numbers, one
corresponding to its amplitude, the other to its phase, in any mathematical model of the
physical processes they were dealing with. The key to the success of this method was that
by following certain rules for the addition, subtraction, multiplication, and division of these
pairs of numbers, the mathematical results corresponded closely to what happened when
electrical signals combined with one another in a circuit.
Long before the first telephone line had been built, mathematicians had devised rules for
working with pairs of numbers that arose in the solutions of certain algebraic equations. In
devising those rules for "complex numbers," they wanted something useful for the work
they were doing, but they were also concerned with making those rules logically consistent.
That is, the rules for complex arithmetic were an extension of, and did not contradict, those
of ordinary simple arithmetic.8
Historically the study of complex numbers arose from the study of quadratic equations,
in which certain solutions could only be gotten by taking the square root of a negative
number. Thus the "imaginary" quantity i, the square route of -1, was introduced. The
second number of the pair that makes up a complex number was thought of as being
multiplied by this quantity.
| Reckoners, Bell Labs, page 0077
|
For electrical engineers it did not matter how this theory arose, or even what i
stood for, for that matter. (They did not use the letter i either, since it might be
confused with the
symbol for electrical current, so they used j instead.) What did
matter was that the rules for manipulating those numbers were consistent with ordinary
arithmetic, and that they were useful for the analysis of electrical signals. The history of
mathematics has many other examples of a theory finding unexpected applications that its
creators never anticipated. (Probably the most famous example was Apollonius's study of
the conic sections, written in the third century B.C.: it was lost to the West for centuries,
then in a breathtaking leap-twenty centuries later-Johannes Kepler used those curves to
explain the motions of the planets around the sun.)
The mathematicians who developed complex arithmetic lived too early to see its
application to telephone circuits, but at least one of them, Carl Friedrich Gauss, would not
have been surprised-he built Europe's first telegraph in 1833, connecting his house with
his laboratory at Gottingen!
Incidentally, the use of complex arithmetic as a tool for the analysis of electrical
circuits was pioneered by Charles P. Steinmetz, an immigrant to America who worked
at the General Electric Laboratories on power distribution. Years later the analysis
of telephone
signals yielded to that same theory (despite their being more complicated than power
currents).9
The engineer used a pair of numbers to represent the amplitude and phase of a signal,
not the real and imaginary parts of the solution to an equation. When two signals were
combined their addition corresponded to the addition of the two complex numbers:
(a, b) + (c, d) = (a + c, b + d)
Similarly for subtraction:
(a, b) - (c, d) = (a - c, b - d)
In physical terms, when two signals are added to each other, their amplitudes and phases
are added separately.
Multiplication and division are less easy to visualize, but they represent what happens
to signals when they pass through various stages of amplification and filtering. In
establishing a coast-to-coast telephone line in the 1930's, Bell Labs was engaged in the
design of filters and amplifying circuits, whose operation introduced phase delays into a
signal. The analysis of those circuits required complex multiplication and
division.10
The rules for multiplication and division are:
(a, b) x (c, d) = (ac-bd, ad + bc)
(a,b) / (c,d) = [(ac+bd)/(c2+d2), (bc-ad)/(c2+d2)]
Note that in each of the above rules, when the second (phase) term is zero, the rules reduce
to those of ordinary arithmetic. Complex arithmetic extends the range of arithmetic; it does
not replace it.
| Reckoners, Bell Labs, page 0078
|
Bell Labs employed a staff of about five to ten women who worked full-time
computing products and quotients of complex numbers. (Addition and subtraction were
presumably simple enough for the engineers to do for themselves.) For the arithmetic they
used electromechanical desk calculating machines.
We see from the above formulas that multiplication of complex numbers requires four
simple multiplications, one simple subtraction, and one simple addition. Complex division
requires six multiplications, two additions, one subtraction, and two divisions of ordinary
numbers. In each case several intermediate results appear-they have to be written down
and retrieved later on.
George Stibitz saw that the switching circuits the relay engineers were working on in
one part of the Labs could compute complex products for the voice circuit engineers in
another part of the Labs. That relays could do arithmetic was already known; Stibitz had
constructed a simple adder out of binary relays as early as 1937. That alone meant little.
But if the relays could also perform the sequencing and temporary storage that complex
arithmetic demanded (and which ordinary calculators could not do), then such a calculator
would have a practical use. He later remarked that as a research mathematician he was
familiar with complex numbers but not with relay circuits. On the other hand relay
engineers were probably less familiar with complex numbers since these did not arise in
their work very often.11 That may be an exaggeration, but remember that switching
circuits
were designed in a trial-and-error fashion; there was little theory for them in 1935.
Complex arithmetic was a child of pure mathematics-the nomenclature "complex,"
"imaginary," and "square root of minus one" does not help make this tool more accessible
to someone not mathematically sophisticated. In any case, Stibitz made the connection.
GEORGE R. STIBITZ
George Robert Stibitz was born on April 20, 1904, in York, Pennsylvania, and spent his
childhood in Dayton, Ohio, where his father was a professor of theology at a local college.
He showed a talent for engineering and science at an early age, and so he attended an
experimental high school set up in Dayton by Charles Kettering, the inventor of the
automobile starting system.12 He attended Denison University in Granville,
Ohio, receiving
a B.Phil., and then went on to Union College in Schenectady, New York, where he received
an M.S. in 1927. Schenectady was of course the home of General Electric's research
laboratory (cf. Steinmetz's work with complex numbers), and for a while Stibitz worked
there. He returned to school, however, and received a Ph.D. in mathematical physics from
Cornell in 1930, after which he went to New York City to work for Bell Labs. His doctoral
dissertation concerned the study of the vibrations of nonplanar membranes.13
| Reckoners, Bell Labs, page 0079
|
From 1930 to 1941 Stibitz worked for Bell Laboratories-that was when he pioneered
the use of relays for automatic computation. During World War Two
he was a member of the National Defense Research Committee (NDRC), where he worked
on computing and other projects. At the end of the war he moved to northern New
England, where he has lived ever since. He worked as a private consultant in Burlington,
Vermont, and since 1964 he has been a professor of physiology at the Dartmouth Medical
School in Hanover, New Hampshire. He is still active there in projects involving the use of
computers in medicine.
In the fall of 1937 Stibitz was working with a group of mathematicians who were
designing relay switching equipment. He took a few relays home one evening and
assembled a device that could add two binary digits as indicated by lamps which glowed
for the digit 1 and were dark for the digit 0. (In later years the computer world would take
notice of these milestones, and so just as the mechanical devices Zuse built in his parents'
flat would later take on the name "V1," and then "Z1," Stibitz's "breadboard" circuit
would later be given the whimsical name "Model K"-for the kitchen table on which it was
assembled. Neither Stibitz nor Zuse knew of each other's relay circuits until after the end
of the war, by the way.)14
Years later Stibitz was asked to recount his first steps toward building a relay computer.
He said he first learned of binary arithmetic from an algebra textbook he read as a
schoolboy in Ohio-a textbook that his mother, who had taught algebra, gave him.15
Of course binary arithmetic follows naturally from the on-or-off nature of a telephone
relay, as Zuse recognized, but remember that telephone networks also used a number of
ten-position relays that Stibitz certainly knew of. The few other contemporaries of Stibitz
(and Zuse) who were modifying telephone equipment to do arithmetic also regarded the
relay as a substitute for the ten-position decimal wheels of a mechanical calculator; so they
used multi-position relays.16
Only after he had built some of these test circuits for binary arithmetic did Stibitz
seriously think of applying them to a complex number machine. Another Bell Labs
mathematician, T. C. Fry, mentioned the problem of complex arithmetic to him later that
year, and that was how the project got going.17
BUILDING THE COMPLEX NUMBER COMPUTER
Consider once again the formula for multiplying two complex numbers:
(a, b) x (c, d) = (ac-bd, ad + bc)
where the letters a, b, c, and d stand for ordinary decimal numbers of up to eight digits
precision. For the moment disregard the position of the decimal point in each number.
(Another way of writing the complex number (a, b) is (a+ bi), where
i is the square root of
-1. If one were to carry out the product of (a + bi) x (c+di)
just like an ordinary polynomial,
the result would be:
| Reckoners, Bell Labs, page 0080
|
a + bi
x c + di
-----------------
ac + bci
+ adi + bdi2
----------------------
ac + (bc+ad)i + bdi2
But since i2 = -1, we have ac + (bc+ad )i - bd, or (ac -bd ) +
(bc+ad )i, which is the equivalent of the other definition of the complex product.)
Carrying out that multiplication on a machine would require the following steps, in a
similar order:
Operator's actions:
1. Key in a, store in machine.
2. Key in b, same way.
3. Key in c, same way.
4. Key in d, same way.
Machine's actions:
5. Multiply a by d, store product temporarily.
6. Multiply a by c, same way.
7. Multiply b by d, same way.
8. Multiply b by c, same way.
9. Add the results of steps (5) and (8), above,
giving the imaginary part of the product.
Store this result temporarily.
10. Subtract the result of step (7) from step (6), giving the real part.
11. Display or print the real part, above.
12. Display or print the imaginary part, from step (9).
13. Stop the machine, and prepare it to accept new input data, if necessary.
There are, then, thirteen basic steps in multiplying two complex numbers automatically.
Note that the above order can be varied: by careful attention to detail it is possible to
telescope some of those steps together, and minimize the number of temporary storage
registers needed.
One important aspect of complex multiplication is that there are no choices involved in
the computation: the sequence proceeds the same way each time regardless of the outcome
of previous steps. Another aspect is that, of the thirteen steps outlined above, six involve
input or output operations-almost half the total. That is a much higher ratio than was
found in either the Zuse computers or the Harvard Mark I.
That aspect of complex multiplication meant that if the machine were to handle numbers
in the binary scale, a considerable amount of computing would be required to convert
numbers to and from the decimal scale for each input or output step. For the Zuse
computers that was less of a problem, since they were
designed to handle arbitrarily long sequences in which the numbers were "among
their [binary] fellows."18
The Complex Number Computer was not programmable. A combination of
relay circuits permanently controlled its sequence of operations. Those relays
were of the same type as the ones used to handle the numbers, but the machine
did not have a separate, clearly defined part that handled the "control" of the
computing sequence. (Later Bell Labs computers did.) The concept of programmability
arose at Bell Labs only after the Complex Number Computer was built,
after its builders saw that its basic computing elements were unduly restricted by
its marriage to control circuits tying it to nothing but complex arithmetic.
(Besides complex arithmetic, they tried to get the machine to perform polynomial
arithmetic, of which complex arithmetic is a special case, cf. above. But the
machine was too restricted for that.)
| Reckoners, Bell Labs, page 0080
|
The practical consequence of the machine's permanent program was that it
would not make sense to convert numbers into binary for internal handling. So
although the first relay circuits Stibitz built were binary, he retained decimal
arithmetic for his proposed complex number machine. But he did not want to
abandon the simplicity of the binary relay and go over to ten-position relays. So
he chose to represent each decimal digit by a tetrad of binary digits. (Four binary
digits can express quantities up to 24 = 16.) In this way a group of only four
binary relays handled each digit, thereby retaining the simplicity of the binary
system at least in the physical construction of the machine. By using the
socalled Binary Coded Decimal (BCD) form, Stibitz said, "most of the advantages
of the binary system are retained without its disadvantages."19
At one time he thought of training the machine's operators to think in binary,
but Stibitz quickly saw that the difficulties of training human beings to work in a
different number base would defeat the whole purpose of automating the process
in the first place. A few modern computers, especially the very small ones, still
must be programmed in binary or a related base, such as 8 or 16.20
Actually, telephone engineers had hit upon binary coding before Stibitz gave it
a formal treatment. Switchboards have panels of lights that indicate telephone
numbers. The easiest way to construct the panel is to have one wire for each
light, or a total of ten wires for each decimal digit, seventy wires for a seven-digit
telephone number. But engineers realized that the same information could be
carried by only twenty-eight wires, coding each digit on a group of four wires.
By the 1930's such an arrangement was standard for the design of telephone
switchboards.21
| Reckoners, Bell Labs, page 0082
|
Four wires can code more than ten digits-they can represent up to sixteen.
For decimal digits there is a choice of which codes to use and which to ignore.
The obvious code would be to have each decimal digit represented by its
binary
value, that is:
0 coded as 0000
1 coded as 0001
2 coded as 0010
3 coded as 0011
9 coded as 1001
The decimal number 345, for example, would be coded as:
0011 0100 0101
Translating each digit into its BCD equivalent is simple and direct. Each digit key can
have a set of four contacts that make the proper coded connection whenever the key is
pressed (see Figure 4.1).
The disadvantage of BCD is that it is slightly less efficient than pure binary.
Representing a decimal number in pure binary requires a little over three times the number
of binary digits, but it takes four times the digits with BCD.
Since 24 = 16, there are many other ways of encoding a decimal digit by a
tetrad of binary digits besides the obvious one of using the direct binary
equivalent. In fact there are over 29 billion possible ways (the permutation of sixteen
items taken ten at a time, which
is exactly 29,059,430,400). Whether or not any of those codes offer advantages that the
direct binary code does not has been intensively studied in recent years, but in 1938 Stibitz
had little theory to guide him.22
| Reckoners, Bell Labs, page 0083
|
One factor that influenced his choice was the need to have a carry signal; when the sum
of the decimal digits was greater than 9, he wanted the code to indicate that somehow. The
binary code for 10 is 1010. To have that code initiate a carry would require extra circuits,
it seemed.
In a pure binary register, a carry would occur after the number 1111 (decimal 15). That
is six greater than the corresponding BCD value of decimal 9 (binary 1001). So Stibitz
proposed distributing this difference for his decimal code. In other words, he coded each
decimal number by the binary representation of three greater than that number, leaving a
gap of three binary numbers at the beginning and at the end of the scheme,viz.:
nothing coded as binary 0000 to 0010
0 coded as 0011 (0 + 3 = 3)
1 coded as 0100 (1 + 3 = 4)
2 coded as 0101 (2 + 3 = 5)
3 coded as 0110 (3 + 3 = 6)
...
...
9 coded as 1100 (9 + 3 =12)
nothing coded as 1101 to 1111
Adding 1 to 9 now looks like:
1100
+ 0100
----
0000 plus a carry signal
That is a much easier way to detect a carry than one in which some digits are converted
but others are not, depending on the particulars of a specific computation. Since 0000 has
no numerical value in excess-three coding, it is easy to recognize when a carry has taken
place.
Another advantage to using the excess-three code is that the complement of each digit
(the difference between the digit and nine) is obtained simply by exchanging all the ones
and zeros:
0011 = the code for 0; its complement is 9, coded as 1100
0100 = the code for 1; its complement is 8, coded as 1011
0101 = the code for 2; its complement is 7, coded as 1010
...
1100 = the code for 9; its complement is 0, coded as 0011
| Reckoners, Bell Labs, page 0084
|
As we have seen with the Harvard Mark I, most machines do subtraction by adding
complements. With the excess-three code those complements are easily obtained, by
inverting the state of each relay. So with one stroke, Stibitz preserved a lot of the
simplicity of the binary system, while gaining the advantages of handling decimal
numbers.23
The remarkable advantages of excess-three arithmetic are not due to any deeper
mathematical property of numbers, as far as I know. Modern electronic calculators use
BCD, for the same reasons Stibitz used it-calculators have to display their results and
receive new numbers frequently. And most of them use the excess-three coding.
(Computers, on the other hand, use pure binary, although many of them can be set up to
handle binary-coded decimal as well.)
THE COMPLEX NUMBER COMPUTER
Sometime in the fall of 1937 Stibitz drew up plans for a complex number computer
using the above coding scheme. Bell Labs approved, and construction began in November,
1938, under the direction of Samuel B. Williams. Stibitz's role was one of developing the
logical flow of numbers and operations that the machine was to carry out, and of
translating those expressions into designs for relay circuits. Williams in turn applied his
knowledge of relay technology to decide how best to construct the circuits that Stibitz had
designed. The two men's skills complemented each other. But their roles were not so
specialized that each did not help out with the other's work.
Besides deciding on the excess-three, binary-coded-decimal representation, Stibitz also
chose to fix the decimal point at the beginning of each number, for example, -.xxxxxxxx. The
operator would have to adjust the decimal points of the inputs accordingly. At first he
proposed that the machine have a precision of seven decimal digits, but later he increased it
to ten digits, of which eight were displayed and the other two were used as "guard digits"
and thrown away.24
Most of Stibitz's work at that time consisted of writing out the logical expressions for
binary arithmetic, then simplifying them until they were in a form suitable for relay
implementation.
He did not know that in Berlin Konrad Zuse was doing almost the exact same thing,
only for a pure binary, not a decimal, computer. Stibitz did know that Claude Shannon
also had studied the correspondence of statements of symbolic logic with binary relay
circuits while a graduate student at MIT. Shannon wrote his graduate thesis (published in
1938) on that subject, and then went to Bell Labs, where he and Stibitz learned of each
other's work. But Shannon was not actively involved in the design of the Complex Number
Computer. Clearly the idea of using relays to implement binary logic was common in the
late 1930's. (Also in the 1930's there was a similar discovery in Japan, but that, too, was
unknown in both Germany and America.)25
| Reckoners, Bell Labs, page 0085
|
Sam Williams implemented those designs using the latest relay technology
available to him. He adapted ordinary ten-digit keyboards for the numerical input, another
bank of keys for the control commands, and an ordinary teletype machine for the printed
output (Figure 4.2).
Probably his most important contribution was to use the newly-developed crossbar
switch to store the four numbers that comprised the input. Crossbars were developed to
replace the Strowger rotary switches then in common use; instead of the six or eight
contacts that a binary relay could handle, a crossbar had a matrix of switching elements
that could switch up to 2,000 individual contacts.26
Construction of the Complex Number Computer began in April, 1939, at the old Bell
Laboratories Building at 463 West Street in Manhattan. (Bell Labs moved to New Jersey
after World War Two. The old buildings in Lower Manhattan have since become artists'
lofts, and the dreary industrial neighborhood now goes by the fashionable name of
Westbeth.) The machine was completed in October of that year. It began doing routine
calculations for the Labs in January, 1940, and remained in service until 1949. As Bell Labs
built other relay computers during the war, its name changed from Complex Number
Computer (or "Complex Computer") to "Model 1."27 Table 4.1 lists the full specifications
of the machine.
| Reckoners, Bell Labs, page 0086
|
Table 4.1 THE BELL LABS MODEL I
| Builders: | George R. Stibitz, Samuel B. Williams.
| | Place: | Bell Laboratories, 463 West Street, New York.
| | Dates: | Authorized 1938.
Construction begun April, 1939.
Completed October, 1939.
Began operation January 8, 1940.
Demonstrated to the public September 11, 1940, Dartmouth College.
Dismantled 1949.
| | Cost: | Approx. $20,000.
| | Technology: | 400-450 relays, 10 crossbar switches.
6-8 panels (approx. 8' x 5' x 1').
| | Arithmetic: | 8-digit precision (10 internally), range ±0.99999999.
Binary-coded-decimal, excess-three code.
Fixed decimal point at beginning of number.
| | Programming: | Fixed program to perform the four operations of complex
arithmetic.
Sequential operation; i.e., each relay or set of relays would commence
its operation immediately after the relays before it in the sequence were
finished. There was no synchronizing clock.
| | Speed: | Approximately one minute per multiplication.
| | Input/Output: | Ordinary teletype with a modified keyboard. Teletype
connected to processor by a multiple-wire buss; therefore remote operation was possible.
Up to three teletypes were connected to the arithmetic unit; an interlock
permitted only one to be active at a time.
|
EVALUATION OF THE MACHINE-ANATOMY
The Complex Computer used relays as its basic building block-that was its "anatomy."
Its appearance was deceptively simple: a metal rack for the relays, teletype keyboards for
the input and output.
In a relay computer the structure is in the way the wiring is routed from one relay
in the
cabinet to another. One cannot discern the functions of those relays simply by looking at
their position on the rack. The Harvard Mark I's layout by contrast was constrained by the
need to have its elements arranged along a common driveshaft. Its structure was more
revealing of the way it functioned, but at the same time it was not easy to modify that
structure later on.
| Reckoners, Bell Labs, page 0087
|
The Complex Computer was originally designed to compute only complex products and
quotients; sums and differences were thought easy enough to be done manually. But soon
after the machine was completed Williams realized that if the machine's registers were not
cleared immediately after a multiplication it could accumulate sums as well. He added that
modification with little difficulty
to add or subtract complex numbers the operator disabled the clearing function, keyed in
the number to be added or subtracted, then "multiplied" it by either + 1 or-1 (in complex
form (1, 0) or (-1, 0)) to add or subtract.
Stibitz and Williams made another modification to the machine shortly after it was
completed. They found that by disabling another clearing relay, the machine would
multiply a number by a list of other numbers without having to key in the first number
again and again. Stibitz first improvised this constant function by jamming a toothpick (!)
in the relay that did the clearing; later the function was permanently wired in, with an
appropriate button on the keyboard to activate it.28 (It is surprising how
frequently computer users today modify their million-dollar machines in the same kind of
ad hoc ways, not always with the blessings of the computer manufacturer-recall Thomas
Watson's desire to have the Harvard Mark I enclosed in steel and glass. But mechanical
brains are, after all, machines, and there is no reason why their brass cannot be bent to
serve man's will. Just the same, it takes some courage to make a so-called kluge
modification to a computer, as Stibitz did.)
Using crossbar switches as number registers no doubt simplified the computer's
construction, but it also limited its flexibility. Crossbar switches were much more complex
than simple relays; they were also slower. All of the later Bell Labs relay computers used
only simple relays for their construction.29
The binary-coded-decimal scheme is a hybrid, and it shares some of the properties of
both binary and decimal arithmetic. Fundamentally, a decimal machine is a decimal
machine, regardless of the code used for the individual decimal digits, since that is the way
arithmetic is done internally. For example, the registers of the Complex Number Computer
initiated a carry after the number 9, not after 1. The machine performed multiplication by
repeated addition, but in its preliminary design phase there was some discussion over
whether or not a table look-up might be better (cf. the Mark I). We have already seen with
the Zuse computers that with a pure binary representation there is no difference between
the two methods.
Some aspects of the machine's number handling were more suggestive of the binary
system, however. When two numbers were added to each other, the register proceeded
immediately to their sum, as a binary register does (and as human beings do). It did not
pass through all the intermediate numbers before arriving at the sum. The Complex
Number Computer thus computed sums in registers; it did not accumulate them like the
Harvard Mark 1. That was in part a consequence of the binary nature of the relays used in
the machine; like the Zuse computers it handled numbers by applying the rules of
symbolic logic. That is one step further removed from our ordinary intuitive concept of
number.30
Figure 4.3 shows the structure of the Model I in block form. Of course the machine had
no separate programming unit, so the circuits that directed the sequences of operations do
not show up in the diagram, as they were scattered throughout the other units.
| Reckoners, Bell Labs, page 0088
|
Figure 4.3. Block Diagram of the Complex Number Computer
| Reckoners, Bell Labs, page 0089
|
EVALUATION OF THE MACHINE-PHYSIOLOGY
The best way to see how the Complex Computer worked is to follow a typical problem
and trace the steps it takes to solve it.
Assume the operator wants to divide the complex number (0.33 + 0.99i) by (-0.370 +
0.91i). This example is one Stibitz himself gave in a public demonstration,
using the letter
i to indicate the "imaginary" part of the number. Note also that he had already put
the numbers in "normalized" form, with the decimal point at the beginning, since that was
where the machine assumed it would be. In most problems the operator had to mentally
scale the numbers until they were in that form-that was a limitation of the machine's
power, and one which Stibitz and Williams recognized as being a serious one. But they
chose not to modify the machine to let the decimal point float, as that would have required
too much redesign. But even as the Complex Number Computer was performing its first
calculations, they were working on a proposed "Model Two" that would have floating
point.31
The operator was seated at a modified teletype terminal (see Figure 4.2, above). In the
Bell Labs Building there were three of those terminals, each connected to the computer.
The computing unit itself was kept in an unattended room in the building; few persons
who used the machine actually saw it. The operator connected her terminal to the
computer by flipping a switch on the left of the keyboard (I use the feminine pronoun
because men seldom operated the computer). If another terminal was already in use, hers
would be "locked out" -access denied-as a telephone caller gets a busy signal when the
person being called is already on the line to someone else. As a rule, they used the machine
only for brief sessions, perhaps a few multiplications or so, so the operator would usually
wait a few minutes and try again. This early example of remote, multiple access illustrates
the kind of flexibility and easy access that relay computers often had.
Having gained access to the machine, the operator would key in the problem
as follows:
Note that the order is not the same as that in which the problem is usually stated. Pressing
the key D told the machine that a division was to be performed, and would close certain
relays that prepared the machine for that operation. The Complex Number Computer used
"Prefix" notation-the operation was keyed in before the operands, not in between them,
as a division is usually written, nor after them, as the Zuse computers did.
| Reckoners, Bell Labs, page 0090
|
| Reckoners, Bell Labs, page 0091
|
In a division the operator keyed in the denominator before the numerator, as
the example shows-again the opposite of the way it is usually written. That was because
in the formula for complex division, the quantity (c2 + d2) is
required for both parts of the answer. Keying in the denominator first got those numbers
into the machine first, so that it could begin computing the "norm" (CZ +
d2 while the operator was keying in the numerator. Like the Mark
I, the Complex Computer had quite a bit of parallel computing capability, and that helped
speed up the operation of division. By keying the (@ key, the operator alerted the
machine that she was finished keying in the real part, that the imaginary part was to
follow, and that the imaginary part was positive. The decimal point after the i
appeared on all the sign keys, since all numbers had to begin with a decimal point.
After keying in the imaginary part of the denominator, the operator keyed +O. ,
which told the machine that the real part of the numerator was to follow. As soon as she
pressed that key the machine would begin computing the norm, since it "knew" that all the
digits of the denominator were in the machine. (It automatically added trailing zeros into
the registers; for instance, -.37 was stored as -.37000000, but the operator did not have to
key the trailing zeros in.)
Finally the operator pressed the (E) key, upon which the machine would immedately
begin printing the quotient in the following format:
- .37000000 + i.91000000 \ + .33000000 + i.99000000
= + 0.80704663 -i.0.69077720
Note the special reversed division sign. I say that the machine began rinting its answer
immediately because as soon as the first number, -.37 was entered, printing began. The
input numbers were printed while the answer was being computed. The average speed was
estimated as "three times as fast as a human being equipped with a desk calculator," or
about half a minute for a division.32
Some other samples of the machine's abilities were published in Science
News Letter in
September, 1940, including the following:
+ .45632450 + i.45367899 \ + .31612848 + i.20028853
= +0.56785431 -i.0.12564532
The machine truncated, not rounded, its results to eight digits; otherwise
the last digit of
the complex part of the answer would be a 3, not a 2.
The article also showed how the machine would multiply 2 x 2:
+ .20000000 + i.00000000 x + .20000000 + i.00000000
= 0.04000000 +i.00000000
| Reckoners, Bell Labs, page 0092
|
The operator had to adjust the decimal points accordingly.33
THE DARTMOUTH DEMONSTRATION
The Complex Computer was not really a computer by the definition I have been using
throughout this book; it was not programmable. Nonetheless it rightly belongs among the
early computing devices because of other things that made up for that deficiency. First of
all, it marked the beginning of Bell Labs in the computing field; later on they would build
relay devices that did have flexible programming facilities, including conditional branching
and subroutines, as we shall see. Second, the "Model I" just described introduced the idea
of automatic digital computing to the mathematics community at an early date, well before
the Z3 or the Harvard Mark I were operational. That was in the summer of 1940, at a
meeting of the American Mathematical Society at Dartmouth College in Hanover, New
Hampshire. This public demonstration was a pivotal moment in the history of computing-
it not only was a demonstration of a working digital calculating machine; it was also the
first example of remote access to a computer, something that would not be repeated for
another ten years. It marks a beginning of "telecommunications"-the use of telephone lines
to carry not voice messages, but coded computer data.
The computer was finished by January, 1940. After it had demonstrated its worth for a
while, T. C. Fry at the Labs suggested that Stibitz present a paper on it at the summer
meeting of the American Mathematical Society. Fry further suggested that Stibitz actually
demonstrate the machine at the meeting by having someone dictate problems over the
phone to New York, then receiving the answers as the machine computed them.34
Gradually through the summer of 1940 that idea progressed to the notion of having one
of the teletype machines actually set up in Hanover, so that the participants could key in
the problems themselves. The summer meeting was not to be held until September, so
there was time to make the necessary modifications.
Stibitz was not sure he would be able to demonstrate the machine without some human
intervention in New York, but that was his goal. He and Fry worked up to the eleventh
hour completing the necessary circuits. AT&T set up a twentyeight-wire teletype link
between Hanover and New York, and coders and decoders were built at each end. Williams
remained in New York during the meeting in case anything went wrong, but everything
worked fine without his help.35
The Society met in McNutt Hall on the Dartmouth campus from the 10th to the 12th of
September, 1940. New Hampshire is usually at its prettiest in September, but in 1940 the
events in Europe dampened everyone's spirits. The meeting was attended by most of the
prominent American mathematicians of the day-John von Neumann, G. D. Birkhoff,
Norbert Wiener-as well as by John Mauchly and many others who would later be involved
in computing projects. (Many participants were, strictly speaking, foreign mathematicians
who had taken refuge in America-for example, Richard Courant, Paul Erdos, and John von
Neumann. By 1940 many of them had obtained American citizenship. As far as I
can tell, there were no German mathematicians who returned to Germany before America's
entry into the war.)
| Reckoners, Bell Labs, page 0093
|
On September 11 Stibitz delivered a paper which briefly described how he came to
build the Complex Computer, and why there was a need for it at Bell Laboratories. After
reading the paper, he and Fry showed how problems were entered on the keyboard by
running a few sample ones. The machine took about a minute for each, and it ran without
error. Following that demonstration, the audience was invited to submit their own
problems via the keyboard. It was available to all from 11:00 A.M. to 2:00 P.M. that
day.36
There is no doubt that this demonstration made an impression on many who witnessed
it. Norbert Wiener, for example, played with it for a while, testing its logic by trying to
divide by zero and the like. But he was unable to get the machine to give an incorrect
answer, and later, in his autobiography, he recounted that experience at length. It must
have been one of his first exposures to the "thinking" properties of machines. Later on he
submitted his own proposal to Vannevar Bush for a digital computer, but he was turned
down. He spent the war years at MIT doing work that was related more to analog than to
digital computing.37 The Hanover demonstration was also reported in the
popular press, but it is clear that Bell wanted most of all to introduce its computer to the
mathematics community.
Remote access to computers is common today, but after the Dartmouth demonstration
it was not done again until 1950, with the SEAC in Washington, D.C. The demonstration
also foreshadowed a time when high-speed data (as opposed to voice) communications
would be an integral part of the Bell System's trafficnot to mention that of Bell's
competitors. In fact, it is in the area of telecommunications, not voice traffic, where Bell is
presently most seriously threatened by competition. But that is another story.
AFTER THE MODEL I: LATER DEVELOPMENTS
Bell Labs took only a moderate interest in Stibitz's work. They were interested in
machines that could solve specific problems, but they did not see building general-purpose
computers as a worthwhile goal in itself. As the Complex Number Computer was nearing
completion, Stibitz was designing machines with more advanced features such as floating
point and suppression of leading and trailing zeros. Above all he recognized that it would
not be difficult to program future relay computers by paper tape and so not restrict them
to only one specific problem.
His proposal to build a successor to the Model I, a relay computer that would be
programmable by paper tape, was at first rejected. Then the United States entered World
War Two in December, 1941. Bell Labs found itself facing a new set of priorities.
Domestic phone service was not among them, but projects involving computing
were.38
Bell Labs began working on devices that aimed antiaircraft fire. The result was
| Reckoners, Bell Labs, page 0094
|
the famous M-9 Gun Director, an ingenious combination of electronic circuits (rugged
enough for the battlefield), electric motors, electrical sensors, and mechanical linkages that
helped a gunner track a moving target in the sky and hit it (like shooting ducks only a lot
more complicated). The M-9 was ingenious, and it worked well. It was especially effective
in blunting the effect of the German V-1 "buzzbomb" over England and the Low Countries
in the later years of the war-the buzzbomb had no pilot and so could not take evasive
action against Allied antiaircraft fire.39
In this and other computing projects the government was willing to underwrite
development costs for new and untried technology. Stibitz moved to the National Defense
Research Committee (NDRC), under the supervision of Warren Weaver, but he still kept
close ties with Bell. For the duration of the war his main job concerned the design and use
of programmable digital calculating machines.
Bell Labs paralleled IBM's building of the Mark I in its first steps into the large-scale
computer world: both considered the computer as being far outside their normal sphere of
business, but both entered that field and built computers that contributed to the war effort.
But the projects themselves were funded mostly by the United States government.
The machines designed by Stibitz and built by Bell Labs after 1940 exhibited two
significant qualities: programmability and reliability. All in all, Bell Labs built six more
relay computers after the Complex Number Computer, and a chronicle of their
development shows a steady progression toward more flexible programming and better
techniques for detecting and correcting errors.
For the testing of the M-9 Gun Director it was necessary to run it through a simulated
firing, then see whether it in fact kept the gun aimed as it was supposed to. That led to a
lot of calculations, especially ones involving the reading of tables of function values and the
interpolation of intermediate values from those tables. Stibitz proposed building a relay
machine to interpolate function values, and in 1943 the so-called Relay Interpolator was
the result. (Later it would be called the Bell Labs Model II.)
The relay interpolator performed only addition and subtraction but by repeated addition
it could multiply a number by a small integer as well. However, it could be programmed by
paper tape, unlike the Model I, so it had quite a general capability. After the war it was
kept in service and used for a few other problems besides interpolation.40
Stibitz then desgned two more special-purpose relay machines for the NDRC: the
Ballistic Computer and the Error Detector Mark 22. Both machines were concerned with
detecting and minimizing the error in aiming antiaircraft fire at a moving target and having
the shell explode at precisely the right moment. (They were later renamed the Bell Labs
Models III and IV respectively.) Like the Model Il, they used a standard five-channel
paper tape for the input of data and instructions; unlike the Model II, they were often used
for many other problems besides the specific ones they were built to solve. Their memory
and arithmetic units had modest capabilities: only six decimal digits of precision, a memory
of
| Reckoners, Bell Labs, page 0095
|
ten numbers for each machine. They performed multiplication by referring to an internal
table of decimal products, unlike the slower method of repeated addition used on all other
Bell Labs machines. The result was that they were well-balanced machines whose power,
speed, reliability, and ease of programming allowed them to tackle tough problems. Those
who used the Models III and IV always spoke well of them; the machines seemed to have
just the right balance of features for their relay technology-in contrast to the Models I and
11, which were too limited in power, or to the Model V, which was designed for work that
was really more appropriate for electronic computers.41
Stibitz built one more machine for the NDRC: the Model V, a large-scale
general-purpose relay computer in the same league as the Zuse Z4 or the Harvard
Mark 1. It was
not completed until after the war, in 1946, after which Stibitz left that government agency.
Two identical copies of the Model V were built, one installed at the Aberdeen Proving
Ground in Maryland, the other at the National Advisory Committee on Aeronautics'
laboratory at Langley Field, Virginia.
Bell Labs built one more machine, the Model VI, which was a simpler version of the
Model V. The Model VI was the only relay machine besides the Complex Number
Computer that they kept for their own use; the others were for the military. Table 4.2
summarizes the specifications of the Models 11 through V.
Table 4.2. BELL LABS MODELS 11 THROUGH V
| . | Model 11 | Model III | Model IV | Model V
(two copies)
| | Date completed | 7-1943 | 6-1944 | 3-1945 | 12-1946, 8-1947
| | Date dismantled | 1961 | 1958 | 1961 | 1958
| | Place installed | Wash., D.C. | Ft. Bliss, Texas | Wash., D.C. | Langley, Va.
Aberdeen, Md.
| | Also known as | Relay Interpolator
| Ballistic Computer
| Error Detector
Mark 22
| | No. relays | 440 | 1,400 | 1,425 | 9,000+
| | Word length | 2 to 5 fixed decimal
| 1 to 6 fixed pt.
| 1 to 6 fixed pt.
| 1 to 7 floating pt.
| | Memory cap. | 7 numbers | 10 | 10 | 30 total
| | Mult. speed | 4 sec. | 1 sec. | 1 sec. | 0.8 sec.
| | Mult. method | repeated add. | table look-up | table look-up | rep. add.
| | Cost | . | $65,000 | $65,000 | $500,000
| | Size | 2 panels | 5 panels | 5 panels | 27 panels 10 tons
|
| Reckoners, Bell Labs, page 0096
|
The Model V was a powerful machine. But by the time it was finished in 1946
attention was turning toward the much faster vacuum tube technology. So it represents in
many ways the limit to what can be done with relay technology. Because of its flexible
programming power and its built-in reliability circuits it was able to keep up with the
much faster electronic computers for many applications, but those kinds of features could
also be added to future electronic machines, whereas there was no way to increase the
intrinsic speed of relay computers much beyond what the Model V's relays
had.42
The most interesting aspect of the Model V's design was that it had two separate
arithmetic units, each capable of operating as an independent computer with its own
memory registers and input-output devices. Small-scale problems could be run in pairs on
the machine, saving time, while bigger problems could take over both processors. (Some
confusion has arisen about the Model V because of this arrangement: each processor was
called a "computer" in the literature describing the Model V. Today they would be called
"processors.") Associated with each processor (using the modern term) were fifteen
memory registers, for a total of thirty for the whole machine. A master control unit
directed instructions to one or both processors according to their availability. This control
unit was separate from the control units in the processor that directed the sequence of
arithmetic, memory, and input/output operations; it controlled the control, so to speak.
(Stibitz called it a "superbranching" capability.) Thus in a very real sense the Model V had
what is now called an "operating system"-a control unit that supervises and manages the
flow of work through a computer. (Operating systemsmuch more sophisticated, of course-
became commonplace in the third generation of large computers, after 1965.)
The flexibility provided by superbranching allowed the Model V to out-perform the
much faster electronic computers for certain problems. It obviously added to the machine's
cost and complexity. Its successor, the Model VI, designed for Bell Labs' internal use, had
only one processor.43
RELIABILITY
Besides programming power, the later Bell computers stressed extraordinary reliability.
The Model I was checked by running selected problems whose answers were known
beforehand at the beginning and end of each day. (That was also done on the Harvard Mark
I every few hours.) If the machine gave correct answers to those "diagnostic" problems
(which were specially formulated to put all the pieces of the machine through their paces),
then its users could be reasonably sure that the answers it gave between those diagnostic
sessions also were correct.44
| Reckoners, Bell Labs, page 0097
|
But that approach had its obvious drawbacks. Long problems had to be interrupted
every so often, intermediate data saved, then a diagnostic run. And if the diagnostic
program revealed a mechanical failure, all the work going back to the
last diagnostic session had to be discarded, since there was no way of knowing exactly
when the failure occurred.
For very fast machines which execute long programs that is a serious drawback. It is
even more serious for machines like the Bell computers that used telephone relays. In
contrast to mechanical devices or to electronic tubes, relays have a tendency to fail
intermittently. Should a piece of dust lodge itself between two relay contacts, that circuit
will fail, though the rest of the relay will be fine. After a few cycles, the dust particle may
shake itself loose, after which everything will return to normal. Thus an entire
computation may be way off without any machine failure showing up during a diagnostic
session. By contrast, when a vacuum tube or a mechanical cam fails, it (usually) stays that
way, so a failure is more easily isolated and corrected.
Other than that kind of intermittent failure, relays are reliable devices. They are well
suited for ordinary telephone circuits, where the loss of a few seconds of a conversation or
an occasional bad connection is tolerable. But for a computer that is intolerable. Bell's
engineers recognized that a computer system should shut down completely when any of
its circuits failed, as that usually meant the machine was delivering wrong answers. (By
contrast, telephone users do not like their phone service shut down at all if it can be
avoided-even if that means accepting poorer service.)45
So a philosophy of reliability emerged at Bell Labs that reflected the difference between
computing and telephony. Bell's engineers designed computer circuits that checked
themselves at every step of a computation, like policemen looking over everyone's
shoulder. The circuits were designed not only to add, subtract, store numbers, and so on;
they were also designed to check that they had done those things correctly, and to stop the
machine otherwise.
Bell's engineers were also guided by their experience in designing telephone circuits that
had to operate long hours unattended in often hostile environments. Those circuits were
designed to be repaired by semi-skilled technicians; telephone service would be terribly
costly if an engineer had to be called in every time a phone line went down or a customer's
phone went dead.
The Bell Labs Models II through VI used a system whereby not four but seven binary
relays coded each decimal digit. They were divided into two groups of two and five relays;
the decimal code was as follows:
Decimal digit Relays
0 01 00001
1 01 00010
2 01 00100
3 01 01000
4 01 10000
5 10 00001
6 10 00010
7 10 00100
8 10 01000
9 10 10000
| Reckoners, Bell Labs, page 0098
|
A special circuit checked to see that two and only two relays were energized for each
decimal digit. Another circuit checked that for each group one and only one relay was on-
that prevented two separate errors from canceling each other out, although certain unusual
combinations of malfunctions could go undetected.
Bell Labs called this system a "bi-quinary" notation, since the relays had a weight of
either one or five. Actually, it is not a combination of those number bases; rather, it is a
seven-bit, mixed decimal code. All the Bell Labs relay computers worked in decimal
arithmetic.46
Note the similarity of the bi-quinary code to the weights of the beads on a Chinese
abacus: beads above the divider bar have a weight of five, those below a weight of one.
(Stibitz has said recently that he first realized that the bi-quinary code was similar to the
Chinese abacus only after he had designed the relay codes, when someone else pointed it
out to him.)47
The bi-quinary system was an empirical way of adding redundancy to a circuit to give it
more reliability. It worked well for representing decimal numbers but it could not easily be
generalized to other types of machines or to other number bases, including binary. Using
Stibitz's work as a starting point, Richard Hamming of Bell Labs generalized the concept
of error checking and developed a theory that guided computer designers thereafter. That
was the so-called paritychecking scheme, which is valid for any coded information in any
number base. Using parity checking, an extra binary element (relay or whatever) is added
to each code, and that element is turned on or off to make the total number of binary
elements "on" an even or odd number, as specified in advance. A separate circuit checks
whether that sum is even or odd, and stops the machine if the sum is wrong.
Hamming went on to show that if more redundancy was added to a number code, it
could not only detect errors but also correct them as well. He worked out the trade-offs of
each redundant bit added, and his work has formed the basis for nearly all computer circuit
design ever since. It is so integral to modern computers that "only the old-timers are still
conscious that somebody once invented it."48 (One consequence of parity checking
is that
commercial computers today cannot, strictly speaking, err. They may malfunction, but
they cannot deliver the erroneous result 2 + 2 = 5 unless programmed to do so. What is so
often called "computer error" in the popular press is more correctly the result of human
errors of programming or of giving the machine the wrong input data. That misperception
is unfortunately too current among the lay public today. Only a few specialpurpose or
experimental computers, like the ILLIAC IV, do not use parity checking.)
In a discussion of the Model V, Hamming said that it had on the average two to five
relay malfunctions per day, or the equivalent of one failure for every two to three million
relay cycles. If a failure occurred during the day, when an operator was present, the
machine would stop; otherwise it would automatically transfer control to its other
processor and take up whatever problem was residing there. Thus there was almost no
down-time for the Model V.49
| Reckoners, Bell Labs, page 0099
|
POSTWAR ACTIVITIES AT BELL LABS
Bell Labs built the Model VI for its own use after the war. (When it was placed in
service at their new headquarters in Murray Hill, New Jersey, in 1949, they dismantled the
Model I.) The Model VI used the bi-quinary number code, had full conditional branching
and subroutine capability, but lacked the dual processors and superbranching power of the
Model V. The Model VI marked the end of Bell's role as a builder of relay computers. By
1950 the trend was clearly toward vacuum tubes for computing elements, and that was a
technology less familiar to Bell's engineers. The two Model V's and the Model VI were
unmatched for their reliability and flexibility in programming, but their speed was on a
plateau at least an order of magnitude below even the slowest electronic computers, and
that more than offset their advantages.50
A tremendous backlog of domestic telephone orders had built up during the war. It was
the time of suburban sprawl, as returning G.I.'s and their families moved into Levittowns
and other housing tracts across the country. Those suburbs needed telephone service, and
until the early fifties Bell's resources were strained to the utmost in providing it. Stibitz left Bell Labs during the war and did not return. It was not at all clear where digital computers
fit into Vail's dictum of "one system, one policy, and universal service."
Bell was (and is) a regulated monopoly whose every action was always noticed by the government
and by its competitors. Whatever the reason, Bell Labs chose not to go into the
business of making and selling electronic digital computers.51
But the company was active in other ways, one of which was revolutionary. That was
the invention of the transistor in 1948, by William Shockley, John Bardeen, and Walter
Brattain. Bell Labs had been working on a solid state amplifier to replace their vacuum tube
circuits for a long time. The transistor was the result of that search.
Bell intended to use the transistor as an amplifying device for long-distance lines. But
like the tube, it could also be used as a digital switch and thus replace
their relays as well. But there was little need for that in 1948.
So while the transistor was successfully employed in telephone amplifiers, it was in the
commercial computing industry and not in the Bell System where it first found application
as a digital switching device. The first transistors were no more reliable than the tubes or
relays they were supposed to replace, but by the late 1950's computer manufacturers
adopted them wholeheartedly. They were smaller and less prone to fail than tubes; above
all they gave off little heat, and that was a big advantage over tubes.
Bell Labs had a lot of capital invested in their relay technology; they embarked
on a plan of slow and gradual
replacement by transistors as the relay circuits wore out. Relay switching
is still common today in the telephone system.
Bell Labs saw the potential advantages of transistors for computers-they built one of
the first transistorized computers in the world, the TRADIC, in 1955. But they did not go
into the commercial computer business.52
| Reckoners, Bell Labs, page 0100
|
In 1949 AT&T began fighting an antitrust suit brought against them by the Justice
Department, which sought to allow other equipment manufacturers besides Bell's own
Western Electric to supply equipment to the Bell System. AT&T fought the suit
vigorously, contending that as a regulated monopoly it was exempt from antitrust laws
concerning such tie-in agreements. The suit was settled by a Consent Decree between Bell
and the Justice Department in January, 1956, by which the Bell System's monopoly
structure, including its ownership of Western Electric, remained intact. In return, Bell
agreed to enter into no "business other than the furnishing of common carrier
communications services."53
Going into the computer business seemed to be just the sort of non-communications
activity that they agreed to stay out of-although the boundaries between computing and
communications are much less clear today. The Bell System continued to supply
telephone service; other, nonregulated companies built and sold computers commercially.
As the technologies of both evolved, the two activities grew closer to each other, but Bell
found itself restrained from moving aggressively into new areas of telecommunications that
ironically it had pioneered. (In 1981 that Consent Decree was overturned; in exchange the
Bell System will be broken up. Among other consequences, Bell Labs in now free to design
and market commercial computers. Whether they will or not is hardly clear; but they
certainly have the technical ability to do so. In fact, they may be the only company today
with the financial strength to compete with IBM head-to-head.)
Another provision of the 1956 Consent Decree was that Bell Labs agreed to make its
patents on the transistor freely available to companies who wanted to manufacture and sell
them. A number of companies responded, and within a short time transistors became
widely available, more reliable, and cheaper.53 The next phase of the computer revolution
began-the phase in which computers have become dramatically cheaper, smaller, and more
integrated into all parts of modern American life. That phase is still going on apace.
Today's telephone system uses a variety of special-purpose digital computers for things
like switching, while for other jobs like billing it uses ordinary commercial computers.
AT&T is one of IBM's best customers; it also buys a lot of computers from the other
manufacturers as well. Bell Labs designs and builds computer chips for their own use, and
for those chips they have developed powerful and sophisticated programming tools (for
example, the "C" programming language and the UNIX operating system). Whatever else
may be said about Bell Labs' position in the modern computing world, they were involved
in computing from the start of the age, they still are involved, and there is little question
they will continue to be involved.
In conclusion, the story of Bell Laboratories' role in the invention of the computer is one
of significant contributions in many areas. These are:
- The coding of information as a subject of theoretical interest in itself. From Stibitz and
Claude Shannon came a notion of information as a quantity that can be treated like any
other abstract quantity, as it is processed, transmitted, and coded in machinery.
| Reckoners, Bell Labs, page 0101
|
- The binary-coded-decimal system of coding numbers, still widely used where
information is input or output frequently by a machine.
- The design philosophy of incorporating redundancy in a computer code to ensure
error-free operation, thus relieving the user of the burden of testing the
integrity of the system's hardware.
At the same time it is clear that Bell Labs stands outside of the direct ancestral line that
leads to the modern computer. In part that is because they were a regulated monopoly, in
part because the relay technology they knew best was seen as unsuitable for computers
after 1950. But they were, and are, pioneers just the same.
NOTES
- Gerald Brock, The Telecommunications Industry: The Dynamics of Market Structure
(Cambridge, Mass.: Harvard, 1981), chapter 4; John Brooks, Telephone: The
First Hundred Years (New York: Harper & Row, 1976), pp. 138-139.
- Lillian Hoddeson, "The Emergence of Basic Research in the Bell Telephone System,"
Technology and Culture, 22 (1981), 512-544.
- A few phone systems around the country still have no dial of any type:
the user must turn a crank which signals an operator at a central switchboard.
Those few that survive may ironicallybe preserved as living museum pieces;
see "Save Crank Phones? Mainers Split at Hearing," Boston Globe, February 12, 1982,
pp. 15, 17.
- Melvin Kranzberg and Carroll Pursell, eds., Technology in Western Civilization, vol. 1
(New York: Oxford, 1967), pp. 644-645; Brooks, Telephone, pp. 100-101.
- E. G. Andrews, "Telephone Switching and the Early Bell Laboratories Computers," Bell
System Technical Journal, 42 (1963), 341-353.
- Hoddeson, "Basic Research," p. 530; Brock, Telecommunications, p. 102.
- E. G. Andrews, "Telephone Switching," p. 343.
- Jagit Singh, Great Ideas of Modern Mathematics (New York: Dover, 1959), pp. 12-13.
- Norbert Wiener, 1 Am a Mathematician (Cambridge, Mass.: MIT, 1956), p. 75; David E.
Smith, History of Mathematics, vol. 2 (New York: Dover, 1958), pp. 261-268.
- Wiener, Mathematician, p. 247; Andrews, "Telephone Switching," p. 343; George Stibitz,
memo of August 19, 1938, Box 1, Stibitz Papers, Baker Library, Hanover, N. H.
- George Stibitz, memo of August 26, 1938, Stibitz Papers, Box 1.
- "An Inventory of the Papers of George Robert Stibitz, Concerning the Invention and
Development of the Digital Computer" (Hanover, N. H.: Dartmouth College,
1973; Henry Tropp,
"The Effervescent Years: A Retrospective," IEEE Spectrum, 11 (February,
1974), 70-81.
- Published in part as "Potentials in Curved Surfaces," Philosophical Magazine, 7th ser., 25
(1938), 783-785.
- Tropp, "Effervescent Years," p. 71; Konrad Zuse, Der Computer, Mein Lebenswerk
(Munich: 1970), pp. 52-53.
- George Stibitz, letter to the author, December 12, 1978.
- See, for example, A. Weygandt, "Die Elektromechanische Detenninantenmaschine,"
Zeitschrift fur Instrumentenkunde, 53 (1933), 114-121.
| Reckoners, Bell Labs, page 0102
|
- G. R. Stibitz and Evelyn Loveday, "The Relay Computers at Bell Labs," Datamation,
13 (April, 1967), 35-44; 14 (May 1967), 45-49.
- Konrad Zuse, "Method for Automatic Execution of Calculations with the Aid of
Computers," German Patent Application Z-23139 IX/42m, 1939, translated and
reprinted in Brian Randell, ed., The Origins of Digital Computers: Selected Papers,
2nd ed. (New York: Springer, 1975), pp. 159-166.
- Stibitz, memo of March 28, 1938, Stibitz Papers, Box 1; E. G. Andrews, "Telephone
Switching," pp. 342-344.
- Stibitz, memo of March 28, 1938, Stibitz Papers, Box 1.
- Andrews, "Telephone Switching," pp. 342-344.
- Anton Glaser, History of Binary and Other Non-decimal Numeration (Southhampton,
Pa.: privately printed, 1971), pp. 135-140.
- Stibitz and Loveday, "Relay Computers," p. 35; Glaser, History of Binary, pp. 129-
153; Evelyn Loveday, "George Stibitz and the Bell Labs Relay Computers,"
Datamation, 24 (September, 1977), 80-85.
- Andrews, "Telephone Switching."
- Claude Shannon, "A Symbolic Analysis of Switching Circuits," Transactions AIEE, 57
(1938), 713; Hidetosi Takahasi, "Some Important Computers of Japanese Design,"
Proceedings, First USA-Japan Computer Conference, October 3-5, 1972, Tokyo,
pp. 692-697.
- Andrews, "Telephone Switching," p. 344; Malcolm Stevenson, "Bell Labs: A Pioneer in
Computing Technology," Bell Labs Record, 51 (1973), 344-351.
- Stibitz and Loveday, "Relay Computers," pp. 45-48.
- Ibid., p. 41; Stibitz, memo of August 19, 1940, Box 1, Stibitz Papers.
- Stevenson, "Bell Labs," pp. 345-346.
- Glaser, History of Binary, p. 132.
- Stibitz, memo of November 1, 1939, Box 1, Stibitz Papers.
- Stevenson, "Bell Labs," p. 346.
- "Electric Calculating Machine Devised for Complex Problems," Science News Letter,
September 14, 1940, p. 163.
- Stibitz and Loveday, "Relay Computers," pp. 39, 43.
- There are at least five separate drafts of the Hanover paper in Box 1 of the Stibitz
Papers, each with a slightly different description of what was to be demonstrated.
One draft has been published in Brian Randell, Origins of Digital Computers, pp.
241-246.
- Wiener, Mathematician, pp. 229; T. R. Hollcroft, "The Summer Meeting in Hanover,"
Bulletin, American Mathematical Society, 46 (1940), 861; Andrews, "Telephone Switching,"
p. 353.
- Wiener, Mathematician, pp. 229-240. Wiener gives the date of the meeting as August,
1940, which is incorrect.
- Stibitz, memo of August 19, 1940, Box 1, Stibitz Papers; Stibitz and Loveday, "Relay
Computers," p. 44; Andrews, "Telephone Switching," pp. 347-348.
- Charles and Ray Eames, A Computer Perspective (Cambridge, Mass.: Harvard, 1973),
p. 128.
- George Stibitz and Jules A. Larrivee, Mathematics and Computers (New York: McGraw
Hill), pp. 138-139; Randell, Origins, p. 239.
- E. G. Andrews, "A Review of Bell Laboratories Digital Computer Developments,"
Review of Electronic Digital Computers, Joint AIEE-IRE Computer Conference,
December 10-12, 1951, Philadelphia, pp. 101-132.
| Reckoners, Bell Labs, page 0103
|
- Franz Alt, Electronic Digital Computers (New York: Academic Press, 1958), pp. 63ff.
- Andrews, "A Review," pp. 103-104; Andrews, "Telephone Switching," p. 348; Stibitz and
Larrivee, Mathematics and Computers, p. 148.
- Stibitz, text of speech delivered at Hanover, dated September 11, 1940, Stibitz Papers,
Box 1.
- This theme is discussed at length in Brock, Telecommunications Industry.
- Edmund Berkeley, Giant Brains, or Machines that Think (New York: Wiley, 1949), pp.
132-133.
- Stibitz, letter to the author, August, 1979.
- Martin Mayer, "Computers on the Brain," Esquire, January, 1969, p. 102.
- R. W. Hamming, "Error Detecting and Error Correcting Codes," Bell System Technical
Journal, 26 (1950), 147-160.
- E. G. Andrews, "A Review," p. 103; Andrews, "The Bell Computer, Model Vl," Annals of
the Harvard Computation Laboratory, 26 (1949), 20-31.
- Berkeley, Giant Brains, p. 143.
- Brock, Telecommunications Industry, pp. 191-192.
- Ibid., pp. 187-194.
|