The EDSAC rebuild team at The National Museum of Computing has posted a video about building some Nickel Delay Lines - you might be interested in watching. Look out for the wonderful jigs that are built to facilitate the work - the museum is full of these types of things!
They are using Nickel Delay Lines because of the difficulty of using Mercury Delay Lines. I love the whole idea of those things and I wrote a short article about them - for the TNMoC Members' Club - a little while ago which I thought you might also be interested in. With all acknowledgements to J. Lyons & Company Ltd and the Leo Computers Society, information used in this post first appeared in a paper (part A of three altogether) produced for the J. Lyons management board.
We take storage, in a variety of forms and plenty of it, for granted today but when EDSAC was being designed this wasn’t the case. Instead, the choice had to be made from existing technology and adapted for purpose. Mercury delay lines were first used in radar during WW2 to hold previous reflection data in order to compare against new reflection data, identify reflections of static objects, ‘subtract’ them from reflections of ‘moving’ objects, to remove noise from the radar console (e.g. remove the trees, leaving the bombers.) EDSAC (and LEO 1) used this technology as main storage – how it works and how it is used is fascinating and I will try and convey this in a simple way. Note that some of the terminology used wasn’t contemporary to the build but is now part of common parlance and so should make it easier to follow.
It’s worth giving some contextual background first. Numbers, letters and orders (instructions) used by EDSAC are represented as trains of electrical pulses, and gaps, of one-millionth of a second duration (a micro-second); a binary 0 is represented as the absence of a pulse in a position where a pulse could be.
Each pulse is travelling at nearly 200,000 miles per second around the machine’s circuitry. A single pulse passing any point on a wire takes one millionth of a second to do so, thus the front of that pulse will be one-fifth of a mile (one third of a KM) past that point when the back of it reaches that same point. This means that to store one pulse of information, a wire one-fifth of a mile long is required: somewhat impracticable.
EDSAC uses its store to hold:
- All orders to be executed
- The data to be worked on
- Intermediate results of order execution
- Final results of order execution
Each of these are represented by a series of pulses, and each pulse needs to be slowed down by a ‘delay circuit’ in order to store them. This is achieved with mechanical vibrations in mercury.
A quartz crystal will vibrate when it receives an electrical pulse; conversely, when it receives a vibration it will create an electrical pulse. By placing crystals at either end of a tube filled with mercury, the vibration will travel as a wave in the mercury from one crystal to the other:
When a circulating pulse arrives at the entry crystal, it is converted to a mechanical vibration through the mercury to hit the exit crystal, which reproduces it as an electrical pulse that circulates back to the entry crystal. Thus, the pulse is maintained and reproduced through each cycle; the key point is that the information is not affected by travelling through the delay circuit but it is slowed down to the speed of mechanical vibrations – actually 4,760 feet per second.
This reduced speed means that multiple pulses can be circulating through the delay line, termed a ‘pulse train’; remember that a bit of data is represented by a pulse of one micro-second followed by a gap of one micro-second (a binary 1) or an absent pulse of one micro-second followed by a gap of one micro-second (a binary 0.)
How many pulses can be stored? The length of the pulse train in a single tube was sized at 16 numbers, each representing a 10 decimal position number. Although EDSAC uses 17-bit half words (from a programmer’s perspective), the actual number of pulse positions for each number is 36* so 16 groups of 36 pulses = 576 pulses.
Now, this is where it gets really interesting in a QI** sort of way. Each pulse is just under 2 micro-seconds (the pulse position plus the gap), actually produced at 514,000 to the second, so the 576 pulses will enter the tube over a period of 576/514,000 seconds. We can’t lose information though, so the first pulse must be leaving the tube as the last pulse enters. Which is why each tube is (576 pulses * 4,760 ft per sec) / 514,000 secs = 5ft 4in long. Not some arbitrary or aesthetically pleasing length, but 5ft 4in. It’s bound to come up in a pub-quiz sooner or later!
Delay Storage tubes were arranged in two batteries of 16 tubes, each battery enclosed in a long box called a Tank, aka Coffin, of about 6ft x 2ft x 2ft to mitigate temperature changes.
* Rather than 34; hardware engineers will see 36-bit long words. For reasons you are better off asking the EDSAC rebuild team, but to paraphrase somewhat, by which I mean a lot, the extra 2 bits get lost in the operation of the machine so only 34 reliably hold data.
** For non-UK readers, who may miss the reference, this is a TV show based around arcane knowledge that no one in their right minds would, or should, possibly know.
EDSAC uses the concepts of Major Cycle, Minor Cycle and Compartments to access storage. A Major Cycle is the time taken for a pulse to pass once around the storage tube circuit – 576/514,000 seconds = 1.12 milli-seconds. A Minor Cycle is the time taken between the passage of the first pulse of one group of 36 pulses and the first pulse of the next group = 70 micro-seconds. There are 16 minor cycles in a major cycle.
The minor cycle is divided into 2 compartments, each of which can hold a number of half the size of that stored in the whole minor cycle, or an Order. Thus, there are 16 x 2 = 32 compartments altogether each holding 18 pulses. Data is written into a compartment and read out of a compartment as it recirculates to the tube.
It is necessary, then, to be able to identify the compartment. EDSAC has a ‘Clock Pulse Generator’ which is responsible for producing the regular pulses acting as a clock. Using this, the machine can count elapsed minor cycles since it was started and this identifies to the Co-ordinator (the main control of EDSAC, co-ordinating the other parts of the machine to do their job) the moment a particular compartment leaves a particular storage tube.
Each tube (32) has a unique address to identify it: 00000 to 11111; each of the minor cycles (16) in a tube has its own address: 0000 to 1111; each of the two compartments in a minor cycle has its own address: 0 to 1. The full address of a compartment is identified as a 10-bit number:
Orders must (where relevant) specify the compartment where data to be used is held, or where intermediate or final results are to be stored. In fact, orders themselves are held in compartments along with the data. From the perspective of the Co-ordinator, that reads orders and data out of store but sees them only as pulses, the program (programmer) must ensure that the pulses read out of a compartment are sequenced so as to be treated as an order or a number (or letter.) Maurice Wilkes, the chief engineer for EDSAC at Cambridge University, said
As soon as we started programming, we found to our surprise that it wasn't as easy to get programs right as we had thought. Debugging had to be discovered. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs.
The Design and Use of the EDSAC". Lecture delivered at the Digital Computer Museum, September 23, 1979.)
Mercury delay lines were difficult to work with. Filling the tubes was a careful process: any ‘sloshing’ could damage the wafer-thin crystals rendering the tube useless. They were temperature sensitive, with the mercury expanding and contracting as ambient temperatures rose and fell. This required regular, during-the-day, realignment of the clock pulses and store pulses – a potentiometer was provided for this purpose – otherwise programmes would run amok with bogus instructions being executed. The tanks were later replaced with thermostatically controlled versions which helped somewhat. For the rebuild the hazardous nature of mercury and its exorbitant cost make it impracticable to reproduce, hence the Nickel Delay lines shown in the video above.
Mercury delay lines didn’t have a long shelf life but were part of an eclectic mix of storage technologies used at the time - delay lines, dekatrons, Williams Tubes and drum storage – all of which gave way to Core Storage technology. It's worth bearing in mind that EDSAC, and indeed other machines of the period, were being built many years before standards emerged so the engineers were working with what they knew and the material they were familiar with. It's a far, far cry from the Arduinos, RPIs and OLED displays we play with today but just as interesting.
For more information on how EDSAC worked, and the source of much of this post's information, you can access a copy of the original paper at the Leo Computer Society website. It's QI.