Turing's Cathedral
Page 20
The engineers were left without much of a choice. “There was a meeting of the engineers in the fall of ’48, I think,” remembers Bigelow, “in which we were told that the second contract would not allow us to have the same patent clause as the first. And I said—in my opinion—we’re giving up something very valuable. On the other hand, I personally can’t bring myself to go on strike against Johnny at this time. But I want you to understand what we’re giving up. And the voting was essentially ‘We’ll go ahead.’ ”25
“People who worked with von Neumann felt such enormous respect for him and such enormous gratitude to be allowed to be one of the people who were going to be building this machine,” Bigelow continues, “that we never pushed our rights very hard. The second thing that happened, and I didn’t know it at the time, is von Neumann started consulting for IBM.”26 All technical details of the MANIAC and its programming were placed in the public domain, and freely replicated around the world. A series of progress reports were issued that were models of clear thinking and technical detail. “The remarkable feature of the reports,” according to Turing’s wartime assistant, I. J. Good, “was that they gave lucid reasons for every design decision, a feature seldom repeated in later works.”27
“Many of us who are in the course of making copies of the IAS machine have a tendency to emphasize our deviations and forget the tremendous debt that we owe Julian Bigelow and others at the Institute,” wrote William F. Gunning, reviewing the development of the JOHNNIAC at RAND. “I think that the fact that so many of us have been able to make an arithmetic unit that works when first plugged in and which requires no fussing, is proof enough of the fundamental contribution that they have made.”28
By July of 1947 a prototype ten-stage adder was found to “function reliably for periods of several days,” performing a complete carry through all ten stages in 0.6 microseconds. In August a ten-stage shift register was put through a life test for the entire month, and in February of 1948 a prototype accumulator was run, “at a rate of about 100,000 additions per second,” through five billion operations without a mistake.29
The computer required some means of loading data (and programs) into memory, and for delivering results. In 1946, magnetic wire was the recording medium of choice. Bigelow’s crew spent several months building and debugging a high-speed wire drive that coiled and uncoiled steel recording wire at up to one hundred feet (or 90,000 bits) per second from a pair of bicycle wheels, differentially coupled side by side on a single concentric drive. The two wheels could be removed and inserted as a unit, just as a tape cartridge or removable disk is used today. Data and programs were punched onto paper Teletype tape, verified, and then transferred to recording wire, from where they could be loaded at high speed into memory as needed. “While this human-keyboard-typewriter operation is essentially slow and painstaking, it is entirely independent of the machine proper,” it was noted in the first interim progress report, “and any number of coding crews intimately or remotely located relative to the machine may be setting up problems while the machine is solving those coded earlier.” Von Neumann imagined a computer group being able “to work directly into and out of a machine which is situated elsewhere, possibly hundreds or thousands of miles away,” as he described it to Roger Revelle, at the Office of Naval Research.30
“It is now possible to type a numerical message, transfer it to magnetic wire together with all the associated marker and indexing pulses, read it into a shifting register after deleting the marker and indexing pulses and then to reverse the entire process and once again produce a typed copy of the message,” it was reported in March of 1948.31 Although the high-speed wire drive was eventually operated without breaks over periods of as long as three weeks, it was abandoned in favor of more reliable, if slower, input/output directly via standard 5-hole Teletypewriter tape. Much of what was learned in building the wire drive was later applied to an auxiliary 2,048-word magnetic drum, equivalent to a 40-channel wire drive running fixed loops of wire through independent read/write heads.
Teletype input/output was in turn replaced by IBM punched card equipment, once special dispensation from IBM to modify its equipment was obtained. Hewitt Crane rewired an IBM 516 reproducing punch to read 80-bit rows in parallel, rather than one 12-bit column at a time. This modification was soon adopted by IBM, precipitating a phase transition from alphanumeric characters to lines of code. The entire 1,024-word memory could be loaded in under one minute, and unloaded in two.
In April an eight-stage prototype binary multiplier was placed in operation and run at 70,000 multiplications per second. “It has done about 1010 such operations and appears reliable,” the official record noted, while unofficially, Oppenheimer informed the trustees that “the Electronic Computer was now multiplying.” Rosenberg devised a series of test calculations in which “repetitive multiplications without error will produce a stationary pattern of digits” so that you could see immediately whether the arithmetic unit was working or not.32
“The way that machine did multiplication, if you started with the right set of numbers in the registers, it would do the multiplying and come up with the same set of three numbers in the registers,” Ware explains. “We suddenly noticed the light pattern on the neon tubes was steady. Herman got very excited about all this. He runs down the hall, and he and Johnny—I don’t know how long they spent figuring out how to pick the right three numbers.… Meanwhile, Pomerene and I were finding these numbers experimentally just as fast as we could write them down!”33
Three 40-stage shift registers were soon completed, and “interconnected in two different arrangements to form closed loops of 120 binary digits and shifted a place at a time around the loop,” at a rate of 3 microseconds per shift. This test was run for 100 hours, for a total of 1011 shifts.34 All the required pieces, except the memory, were falling into place.
At first it appeared that Rajchman’s group at RCA was ahead of Bigelow’s group at IAS. “I have just got back from a visit to Jan who was quite encouraging,” Goldstine reported to von Neumann at the beginning of July 1947. “He promises us a 256-digit, square type, i.e. 4-cathode, Selectron in about 2 weeks—I don’t know what we’ll do with it when we get it.”35 At the end of the month, Goldstine made another visit, only to find more new problems than new memory tubes at RCA. Von Neumann, ever the game theorist, decided to hedge his bets. If all else failed, it was believed the computer could be operated (if at a hundred-fold reduction in speed) by coupling the arithmetic and control units directly to the forty-channel magnetic drum.
In spring of 1948, Douglas Hartree arrived from England bringing word—and a draft report, delivered by hand to Goldstine—from British radar pioneers Frederic C. Williams and Tom Kilburn, who were engaged, with assistance from Alan Turing and Max Newman, in building a prototype stored-program digital computer at Manchester University, based in part on the EDVAC report. In place of acoustic delay lines, they were developing a new form of storage, soon to become known as the Williams tube, using “the distribution of charge set up on the fluorescent screen of an ordinary cathode ray tube when it is scanned by an appropriately modulated electron beam.”36 Charged spots on the face of the tube could be preserved over brief periods of time, the way static electricity lingers for a few seconds after you turn off a cathode-ray television tube.
The Williams storage tube was Zworykin’s iconoscope turned inside out: reading a pattern of electric charge traced by an internal electron beam rather than a pattern of electric charge formed by an image from outside the tube. “Effectively such a tube is nothing more than a myriad of electrical capacitors which can be connected into the circuit by means of an electron beam,” Burks, Goldstine, and von Neumann had noted—before Williams and Kilburn’s implementation of the idea—in their preliminary report of June 1946. Williams and Kilburn, who had collaborated with the Americans on radar (and Identification Friend or Foe) during the war, were careful to acknowledge their sources. “The experimental discovery that
such tubes exhibit storage phenomena appears to have been made at the Radiation Laboratory, Boston, towards the end of the war,” they wrote.37
Williams and Kilburn were able to store a 32-by-32 array of charged spots on the face of a single cathode-ray tube. The data were stored and retrieved in serial mode, similar to an acoustic delay line, but at the speed of electrons rather than the speed of sound. The entire matrix had to be retraced to recall the state of any individual spot. They succeeded in storing data without errors for hours at a time, noting in their report “that if the memory had been imperfect there are roughly 10360 alternative patterns possible, any one of which it might have shown at the end of the storage period. By way of comparison it has been said that there are a mere 1074 electrons in the universe.”38
According to Williams and Kilburn, “the best overall test of the store would be the construction of a small machine.” The resulting “Small-Scale Experimental Machine” (SSEM) had a single 32-by-32-bit cathode-ray tube store, and could do nothing except subtract, but was nonetheless sufficient to establish “that in principle a universal machine could be based on the C.R.T. store.”39 One fifty-two-minute run executed 3.5 million instructions, generated by seventeen lines of code.
The news from Manchester electrified the Princeton group. Bigelow was dispatched to England, while Pomerene began experimental work. Williams and Kilburn welcomed Bigelow to their primitive laboratory on July 18. “As I stood there and watched his machine, part of it started to burn up because it was built in such a jerry-built fashion, but it didn’t bother him at all,” Bigelow recalls. “He just took some clip leads off and said: ‘This is no good.’ He took a soldering iron and took one piece out, and put some others there beside it, and put the clip leads back on, and got it back into operation again.”40 A more serious problem was electromagnetic interference from an electric streetcar line that ran nearby, despite the cathode-ray tubes being shielded within a metal box.
“The sample routine demonstrated to me was part of a code on Mersenne’s [prime] numbers, which it did twice; first with an error, and then correctly,” Bigelow reported. “The bit of routine consumed three or four minutes; Max Newman (who was present) and I calculated that the number of operations performed was in the high thousands.”41 Bigelow returned to New York a few days later aboard the Parthia, a Cunard liner, and by the time he arrived in Princeton, Pomerene had a working cathode-ray tube memory of 16 bits, expanded to 256 bits within another four weeks.
Instead of being forced to wait for the Selectron, and ending up with a machine whose core memory would be proprietary to RCA, the Williams approach allowed the IAS team to get to work immediately using inexpensive off-the-shelf oscilloscope tubes, with all the innovation being outside the tube. “The entire problem was one of circuit design and construction, fields in which we felt competent,” Bigelow explained.42
Williams and Kilburn had demonstrated how a sequence of pulses (in time) could be converted to a pattern of spots (in space) and stored indefinitely as long as the pattern were regenerated periodically by a trace from an electron beam. The spots become positively charged (i.e., deficient in electrons) as a result of secondary electron emission by the phosphor, so the state of an individual spot could be distinguished by “interrogating” that location with a short pulse (or “twitch”) of electrons and noting the character of a faint secondary current, of less than a millivolt, induced in a wire screen attached to the outside face of the tube. “Thus the phosphor containing the various charge distributions is capacitively coupled to the wire screen,” the IAS team explained, “and it is then possible by focusing the beam at a given point to produce a signal on the wire screen.”43
The secondary emission effect can be visualized by imagining a 32-by-32 array of beer glasses sitting in a big kitchen sink and being sprayed with water from a garden hose, with a very sensitive drain in the sink that produces a detectable signal when any water sloshes out. The glasses tend to fill up with water, but if you aim the hose at one particular glass for an instant, that glass becomes partly empty as water sloshes out of the glass. You have written one bit of information in that location and, by returning to that location with another squirt of water, and noting whether anything sloshes out or not, you can read the state of that particular bit. You can then either refresh that state, continuing to store the bit of information, or clear it and replace it with the alternate state.
Pomerene’s team developed timing and control circuits that governed the electron beam deflection voltages with enough precision to allow access to any location at any time, appropriating a few microseconds before resuming the normal scan/refresh cycles where they left off. The result was an electronically switched 32-by-32 array of capacitors, with a 24-microsecond access time, but was, as Bigelow noted, “one of mankind’s most sensitive detectors of electromagnetic environmental disturbances.” Errors were introduced by fields of as little as .005 gauss, or 1⁄40 the strength of the earth’s magnetic field. “It was confirmed by experiment that an AC magnetic field of about the strength of the earth’s field, 0.2 gauss, will produce a deflection of the beam in a Williams tube of about 12 spot diameters,” enough to turn any memory into complete garbage, it was reported in August 1949.44
The ability to distinguish a dot (0) from a dash (1) depended on the secondary emission characteristics of the phosphor coating, and the slightest imperfection, or a speck of dust inside the tube, would cause the memory to fail. The signal was amplified 30,000 times before being passed to a discriminator that made a decision as to whether the waveform represented a zero or a one. “The signals were way down in the noise level, I think one microwatt was the energy level, and that was a difficult problem,” remembers Rosenberg, “but I finally got the amplifiers, which were installed right next to the memory tubes inside these shields, debugged.” Placing individual amplifiers within each memory tube was in accordance with Bigelow’s Maxim for Ideal Prognosticators No. 5, which stipulated that “if noise is ever to be filtered from signal, it must be done at the earliest possible stage.”45
All forty memory tubes had to work perfectly at the same time, since each digit of a 40-bit word was assigned the same position in a different Williams tube. The 1,024 bits in each cylinder were visible to the naked eye, flickering from one machine cycle to the next—or frozen in time when a process was paused or came to a halt. What the operator observed was the digital universe, not the display of a process occurring somewhere else. The observer, however, had to be careful not to disturb the state of the memory being observed. “The front [of the tube] had a piece of copper gauze on it,” explains Morris Rubinoff, “and when you wanted to look in you looked in at the light spots through the copper gauze just to make sure it was completely shielded.”46
In modern (or once-modern) computers, a cathode-ray tube (CRT) displays the state of a temporary memory buffer whose contents are produced by the central processing unit (CPU). In the MANIAC, however, cathode-ray tubes were the core memory, storing the instructions that drove the operations of the CPU. The use of display for memory was one of those discontinuous adaptations of preexisting features for unintended purposes by which evolution leaps ahead.
A forty-first monitor stage, which could be switched over to mirror any of the forty memory stages, was added later, allowing the operator to inspect the contents of the memory remotely to see how a computation was progressing—or why it had come to a halt. This was later augmented by a separate 7-inch cathode-ray tube serving as a 7,000-points-per-second graphical display. “This device would take the data existing in one of the registers of the machine and translate its binary representation in the register into an amplitude representation in the deflection of the oscilloscope spot,” the engineers reported in 1948.47
The IAS group settled upon standard 5-inch 5CP1A oscilloscope tubes, available in quantity, although less than 20 percent proved acceptable, and in 1953 it was reported that “there had not been more than ten flaw-free tubes discovered in
the testing of over 1000 tubes in this laboratory during the past three years.”48 The manufacturers allowed the IAS to scan their inventory for unblemished specimens and ship the others back. Pomerene achieved a thirty-four-hour error-free test of a two-stage memory on July 28–29, 1949, and the final race to build a working forty-stage memory began. Parallel memory access would make the computer forty times as fast as a serial processor but, in the opinion of numerous skeptics, unlikely to work without one thing or another always going wrong.
“We learned, somewhat to our sorrow,” says Pomerene, “that one property a memory has that other vacuum tube circuits don’t have is that it remembers! Big surprise! But among other things, it remembers any noise that ever happened. Right? So it sits there and you’re hoping it remembers a one, and some noise comes along and it would turn from one to a zero, and it stays a zero because it’s remembering now a zero. So a memory turned out to be a very effective observer of noise.”49
There were two sources of noise: external noise, from stray electromagnetic fields; and internal noise, caused by leakage of electrons when reading from or writing to adjacent spots. External noise could, for the most part, be shielded against, and internal noise was controlled by monitoring the “read-around ratio” of individual tubes and trying to avoid running codes that revisited adjacent memory locations too frequently—an unwelcome complication to programmers at the time. The Williams tubes were a lot like Julian Bigelow’s old Austin. “They worked, but they were the devil to keep working,” Bigelow said.50
Each individual memory tube had its own logbook recording its health history and any idiosyncrasies that arose along the way. The difficulty in distinguishing memory problems from coding problems drove many early programmers to give up in disgust. “The presence of this leprous element in the machine [means] that everyone who sits down to do a problem must be aware of it and be prepared to be just a little cagey, depending on the problem,” noted Frank Gruenberger in explaining why RAND chose Selectron memory instead. “The blips fade in a fraction of a second and if the problem requires that you re-use a number before the blip is regenerated, you get the wrong answer. It is as if a desk calculator would fail any time the 7th, 8th, and 9th places in a fifteen-digit number happened to be a three-digit prime.… It just isn’t decent for the operator to have to worry about how the machine is built.”51