Saturday, June 23, 2012

Read-Only Memory...

This post at NYC Resistor, about EPROMs, set me off on a little trip down memory lane this morning...

“EPROM” stands for Eraseable, Programmable Read-Only Memory.  The “ROM” part just means some memory (a place to store information) that can be read, but not written (modified, erased, etc.).  However, they can be programmed one time.  You could think of them as being analagous to a printed book – you can read the information in the book, but you can't actually change what's been printed on the page, once it's been printed.

This sort of memory is essential in virtually every electronics design that includes a computer, and in many other areas as well.  I designed a lot of electronic gadgets that included a finite state machine, and these often included a ROM as well.  EPROMs, like the 1702A (at right) and it's many descendants, were an enormous improvement over the previous forms of ROMs – you could erase and reprogram them (like being able to magically erase a printed book and replace the text with text of your choice).  If you're an engineer developing a design of some sort, you might go through many cycles of design/build/test during the course of finishing a product, and the EPROM made it easy to do that.

The 1702A EPROM was the first of these I'd ever run into.  I first started using it in the mid-'70s, and it was a huge improvement over previous ROM technology.  The way you erased one of these EPROMs is to shine a very bright, short-wave ultraviolet light through the clear window for an hour or so.  We bought specially little light-tight boxes to do this in, as the short-wave ultraviolet light is dangerous for people.  When I first heard about these things, I thought the idea very odd – no other electronic device I'd ever heard of worked with UV light.  But the convenience was undeniable.

Today the idea of a UV-erasable EPROM seems quite quaint.  EEPROMs (Electrically-Eraseable Read-Only Memory) have completely taken over.  These ROMs require That's what's in your USB memory stick, or your Solid-State Disk.  The laptop I'm writing this on has a 512GB SSD – that's an EEPROM with 4,398,046,511,104 bits of information in it.  The 1702A held 2,048 bits, roughly 2 billionths as much information as my laptop's SSD.  But what came before EPROMs?

The first kind of ROM that I ever ran into personally was built from a matrix of capacitors made from a double-sided printed circuit board.  Once side of the board had a series of parallel lines etched in one direction, while the other side had orthoganal parallel lines (at 90° direction).  Each intersection of lines from the two sides represented one bit of information.  To make a “1”, there was a small, square pad of copper on both sides of that intersection.  These pads formed a tiny capacitor, and appropriate electronics could detect these.  That first ROM I saw had 16 lines on each side of the circuit board, making 256 intersections – so it was a 256 bit (or 32 byte) ROM.  It was most definitely not eraseable – nor was it programmable.  The only way you could change the value of this ROM was to manufacture a new one from scratch!  The electronics that “read” that ROM was roughly the size of a shoebox, and quite unreliable – I spent many hours “tuning” those darned things back in the early '70s, on U.S. Navy cryptographic equipment.

The next kind of ROM I saw was used as the “bootstrap” (a small, simple program that loaded a bigger, more complex program) for the 642-A and 642-B computers I worked on, again in the U.S. Navy in the early '70s.  This ROM was made with a “plug-board” – essentially a big connector with some of the pins wired together.  Each pair of pins wired together was a single “1” bit, and each pair of pins not wired together was a “0” bit.  This particular ROM had 32 words of information, with each word being 30 bits long – so 960 bits all together.  This was implemented with four connectors, each having 480 pins (that's a big connector!).  This ROM was programmable – with a really skinny pair of pliers and a magnifying glass, you could plug or unplug wires to change bits from “1” to “0” and vice versa.  Just once I had to do this, when a field modification came out.  I remember that it took me several days of quite painstaking work to change the bootstrap programs for all four of the affected computers on my ship.

When I first started doing digital design work in the mid '70s, there was a kind of PROM (programmable, but not eraseable) available at fairly low cost.  These were little integrated circuits (chips, or ICs) that you could program by blowing microscopic little fuses that were actually constructed of silicon on the chip.  One did this with a PROM “programmer” – a little electronic gadget that you “talked” to through a serial port.  These parts were readily available with up to a few thousand bits, and in the smaller sizes were fairly economical.  Still, in each design/build/test cycle you'd have to throw the old one away and “burn” a new one – a process that was not only potentially expensive, but was annoyingly slow.  The 1702A EPROM was an enormous improvement over that, and really quite revolutionized the way that I did my design work, as I no longer had to worry much about either the cost or the time of the ROM in a design/build/test cycle...