(The picture above is of Maurice Wilkes, EDSAC visionary. Thanks to the Computer Laboratory at the University of Cambridge, CC BY 2.0 UK.)
The group huddled expectantly around a teleprinter in the hot room tucked in a Cambridge campus building. Only a few minutes earlier, they had loaded the machine with a short paper tape. Now that the vacuum tubes--”valves,” as they were known--were working silently in the background, all they could do was wait for the print mechanism to begin its clatter."
They glanced at the ominous wooden boxes referred to as coffins, each tucked between the racks of tubes. The moniker probably related to the room’s use before the Mathematical Laboratory took it over, when the medical school occupied the buildings.
Their wait wasn’t long.
Suddenly the printer mechanism came alive as if a ghost’s invisible hand, perhaps one from a coffin, typed out a sequence of numbers.
This wasn’t a haunting, of course. It was the very first computer output in 1949.
Maurice Wilkes was the visionary behind operational stored program electronic computers. He became an amateur radio operator at the beginning of the technology and worked at the Mathematical Laboratory until 1939. During the Second World War, he left Cambridge to help develop radar for the military. In 1945, Wilkes returned to the laboratory, only this time, he was in charge.
“Mathematics Laboratory” is something of a misnomer. Today he would have been known as the director of a computer center. But of course, “computer” meant something entirely different in the 40s. The analog Differential Analyser was still cutting edge technology at the time.
Differential Analysers were massive machines that looked as if they came out of a Terry Gilliam movie. They produced answers to differential equations using a system of wheels and discs. It was a time-consuming setup, and they could only solve a limited set of problems. As you might expect from the tolerance of a mechanical mechanism, precision was limited as well.
Wilkes received word of a new way to solve computational problems that came from the Moore School of Engineering at the University of Pennsylvania. Somehow, a small team had built a gigantic, electronic differential analyser. Instead of gears and platters, they’d connected vacuum tubes in such a way that calculations could be done by actually expressing digits.
You might have heard of the machine that grabbed Wilkes’ attention. It was known as the ENIAC.
The Electronic Numerical Integrator and Calculator didn’t run programs, not at first anyway. Just like a differential analyser, it could be set up to run a sequence of calculations, one leading to the next. Its first operation was in December of 1945, too late to help the war effort, but it could do in 30 seconds what a human would take 20 hours to do. The ENIAC could do this with the power of 20,000 vacuum tubes and dozens of racks of equipment that filled a large room.
The 20,000 tubes weren’t what interested Wilkes. During the process of the development of the ENIAC, its creators had envisioned a new way to do mathematics with a machine.
J. Presper Eckert and John Mauchly were the primary developers of the ENIAC. They had help from the very famous John von Neumann, a lifetime member of Princeton’s Institute for Advanced Study. If inventing the ENIAC wasn’t impressive enough, the three of them, along with Herman Goldstine, had also created something else.
Instead of arranging the single problem by hooking up wires that defined the operation, they decided to put the orders for the calculations into “registers” that held numbers. Envisioned too late for the ENIAC, they realized that, by creating a general purpose arithmetical unit, a calculator that worked on the machine’s data, and electronics that could fetch instructions from “memory,” they could arrange for the machine to solve any computable problem. They had figured out how to get around the ENIAC’s limitations.
They decided to name the stored program technique after von Neumann, and we call it the von Neumann architecture to this day.
As you might expect, the Moore School was excited to share these ideas with the world. The Institute for Advanced Study at Princeton started a program to build just such a machine, and with the help of the Moore School, invited people to a series of lectures about it in the summer of 1946, the first computer science lecture program. One of the invitees was Maurice Wilkes, and it would change his life forever.
Sea passage across the Atlantic was problematic at the time. With all the US and Canadian troops being mustered out of the service, there was almost no way for Maurice to get the Philadelphia that summer. He patiently waited.
The classes had already begun by the time he booked a seat on the Drakensberg Castle, a rust bucket of a cargo ship that only had accommodations for 12. He was passenger 36! It was cramped, hot, and often broken down at a standstill. Nonetheless, Maurice made his way slowly across the ocean.
Upon his arrival, he was relieved to find that he hadn’t missed much. He hadn’t been around for the ENIAC tour but arranging another was simple. He probably got a better walkthrough than the one he’d missed because John Mauchly himself conducted it. The rest of the early lectures covered numerical methods with which Wilkes was more than familiar. The fun part was toward the end of the lectures series.
Wilkes enjoyed learning these new ideas and coming up with ways to implement them. He slowly realized that despite the limited resources of post-war Cambridge, he could construct one of these machines.
An outline of a plan began to form in his mind, an idea for a machine he would call the Electronic Delay Storage Automatic Calculator. The EDSAC. It was a slightly different wording of the EDVAC, the Electronic Discrete Variable Automatic Computer, that von Neumann was building in Princeton.
After returning to Cambridge, Wilkes organized the effort to build the machine. At first, he tackled the design alone, approaching from a high level and working his way down to puzzle through the problem of building flip-flops out of the available vacuum tubes. He was soon joined by Bill Renwick, who would handle most of the design.
The ENIAC’s registers used walls of vacuum tubes, but the stored program computer would need a lot more memory than even the ENIAC used. This ruled out the possibility of using tubes for memory. There were two possible alternative technologies: electrostatic memory and mercury delay lines.
Electrostatic memory worked using the observation that dots could be read on a cathode-ray tube’s screen, just like when an old-fashioned television “remembers” a picture it produced.
Wilkes was well acquainted with the other technology, mercury delay lines, from his radar days. A tube of slightly heated mercury slowed the propagation of a sound wave to the extent that a reasonably short tube could hold some bits. A click at such and such a time was a one. Zero was the absence of a click. At the end of each tube was the same crystals that our cell phones use today as microphones and speakers.
In radar devices, mercury delay lines were used to remove the repeated ground clutter from the echos. The wooden “coffins” mentioned at the beginning of this post held banks of long tubes. They were the EDSAC’s main memory. Some shorter ones held the machine’s three registers.
The EDSAC is known as a “serial” binary computer because it did it calculations in bit series, not in parallel like computers do today. This paired well with the serial nature of delay line memory. It was also thought to take fewer tubes, which turned out not to be the case.
A research student by the name of Gold came up with the delay line design, and it worked perfectly. Wilkes and Renwick planned a number of modules, small shelves that spanned the one-meter racks used to build the machine. All total there were 142 of these chassis, each containing up to 28 vacuum tubes.
Wiring between the chassis was a bit of a mess. They were simply soldered at one end, ran to wherever the wire needed to go, and soldered into place. Some wires ran to another chassis in the same rack, some to nearby racks, and others looped overhead to entirely different rows.
Loading the initial software into the machine also presented a problem. Today, a flash chip contains all the code needed to bring up a system. On PCs, this is called the BIOS. On other machines, it is merely the boot firmware. In 1949 there was no flash or any other kind of Read Only Memory.
A brilliant engineer by the name of David Wheeler came to the rescue. The pre-computer telephone system used a variety of electromechanical devices to place phone calls, one of which was the “uniselector.” Wheeler discovered that he could send a sequence of pulses to a group of uniselectors prewired with the ones and zeros needed for the initial instructions, and by doing so load those values into the delay line memory.
Wheeler’s true genius proved to be the instructions themselves. The instructions read the program from paper tape. In a way, it was the first assembler, loader, and operating system all rolled into one thirty-step program.
So, on the hot spring day of May 6th, 1949, the world’s first operational stored-program computer clattered out a table of squares.
Not long after, Wilkes was climbing the stairs to the EDSAC room with yet another paper tape, trying to solve the same problem. Writing code, it turns out, was not as easy as people had thought. Not much thought was given to coding at all. Folks assumed code would just work.
As he chugged up the stairs yet another time, Maurice Wilkes realized that he would be spending much of the rest of his life debugging code.
Fast forward to 1999 at the International Symposium of Computer Architecture in Atlanta, Georgia. I’d come to the conference and decided to participate in the outing they’d organized to the Fernbank Science Center. The exhibit hall has a hands-on section geared toward children featuring a pair of chairs in a parabolic sound reflector. An elderly gentleman had looked at me from across the room, and as we were both standing near the sound chairs, we decided to have a seat and start a conversation.
The soft, gentle voice from the jovial, heavyset man was that of a calm and knowing octogenarian. I introduced myself as a local programmer. He introduced himself as Maurice Wilkes.
I don’t know how it is that I’ve been so blessed to know, even if in such a casual and limited way, several people so instrumental in the development of my calling. But, even in my ignorance, I am grateful.