Saturday, May 30, 2015

QuickSilver

The memory sizes of even cheap modern desktop and laptop computers would have been unthinkable to early computer builders.  Since I first started paying attention to the computer industry in the late 70s I have watched typical small computer memory go from 4 Kilobytes to 4 Gigabytes: an increase of over a million times.  I thought it would be interesting to look back at some of the technologies that have been used for computer memory and what their capacities were.

In the first post in this series I talked about the ENIAC memory.  The memory capacity of ENIAC was essentially 20 accumulator registers of ten decimal digits each.  They were made of vacuum tube flip flops and required 360 vacuum tubes for each accumulator.  The tubes were large, expensive, power-hungry, and unreliable.  To scale up memory sizes for larger stored-program computers, another solution was needed.

Radar had been developed during World War II to provide early warning of attacking aircraft.  Early systems had many problems, among them was "clutter" reflections.  A fixed object in view of the radar would create a "blip" on the screen every time the radar took a reading, causing a cluttered display that could make it hard to see incoming aircraft nearby.  One solution to the problem was to read the returned signal twice and subtract the second one from the first.  A reflection that occurred in both at the same place would be erased by the subtraction, but if the reflection had moved it would still show.  To do that required that the first signal be delayed by the time between signals so it would be available to subtract the second signal from it.

One way that was devised to delay the first signal was a "mercury delay line."  The reflection signal from the radar was sent to a transducer (basically a speaker) that was mated to one end of a tube filled with mercury.  The transducer would create a wave in the mercury that was a replica of the reflection signal.  At the other end of the mercury tube was another transducer (basically a microphone) that would pick up the wave and recreate the electrical signal.  The recreated signal would be delayed by the time it took the acoustic wave to travel the length of the mercury tube.  With careful design, a faithful reproduction could be created at exactly the right delay to match with the following reflection signal.  That reproduction could then have the second signal subtracted from it.

One of the researchers working on the radar problem was J. Presper Eckert from the Moore School of Electrical Engineering at the University of Pennsylvania.  If you paid attention in Computer History class in school that name probably sounds familiar.  That is the same J. Presper Eckert who was working on designing and building ENIAC at the same time.  Eckert realized that computers were going to need more storage space than ENIAC had and that the same mercury delay lines he was using in radar could be used.  He developed and patented the idea of not only using mercury delay lines, but also using other materials in a similar way.

Mercury delay line unit from Univac computer, 1951.
"Mercury memory". Licensed under CC BY-SA 3.0 via Wikimedia Commons - http://commons.wikimedia.org/wiki/File:Mercury_memory.jpg#/media/File:Mercury_memory.jpg

Eckert went on to use the mercury delay lines in later stored program computers like the EDVAC and Univac I.  Each delay line could typically hold between 500 and 1000 bits.  The biggest problem with them was they were not random access.  They were sequential.  That meant you couldn't just get any bit you wanted out of it.  The bits came out the far end in the same order they went in.  The computer had to wait for a bit to travel the full length of the line, typically about 200 to 500 microseconds.  The system was built to recirculate the bits back to the input as they came out allowing them to be stored indefinitely unless intentionally changed.  Interestingly, the data was not stored electronically but as a sequence of waves traveling through the mercury.  The systems were complicated by several factors.  One big factor was temperature.  The speed of sound in the mercury (or other material) would change with temperature.  To keep the timing just right, they were typically heated to a fixed temperature and kept there.

Other types of delay lines with different properties were used as well.  A popular type used a metal wire.  Some special alloys were used with various properties that gave them advantages.  Often they were able to be coiled into a small space so that they could be made much smaller while holding the same or more data.  The famous computer scientist and mathematician Alan Turing even proposed using gin.  To my knowledge that was never used.

As odd as it may sound to us now, mercury delay line memory solved the problems early computer builders had.  They provided a relatively large storage that matched the capabilities of the early computers using technology available at the time. Delay lines of various sorts are still used for some purposes, although not for the main memory of computers.  Digital shift registers are very similar to an analog delay line like the mercury delay lines.  The very first Apple product, the Apple I, used shift registers as display memory.  They fit that application well since the data needs to be sequential to the display.

The delay lines were an ingenious solution to the memory problem.  But engineers had more tricks up their sleeves.  I will be writing about some of them in later entries.  If you find these posts interesting please spread the word to other people who may be interested.  Thanks.

No comments:

Post a Comment