There are some things that are hard to get your head around unless you can actually see them. Being a computer history fan I’ve often read of core memory but never quite got to grips with how it works. So one day recently I just thought, ‘the hell with it – I’ll go on eBay and buy some’. Which I did.
And here it is.
This is the photo posted on eBay by the vendor – I’m still waiting for the thing itself to arrive.
According to the seller’s description, it’s taken from a 1960s Soviet Saratov-2 (Саратов-2) minicomputer, a clone of the DEC PDP-8/M. Allegedly, the Soviets nabbed a PDP from a sunken US submarine and the computer was then reverse engineered by the Central Research Institute of Measuring Equipment (ЦНИИИА), in the city of Saratov. I’m taking all this on faith. I haven’t yet found much info online about this machine other than a thread in a Russian-language forum. Chrome has done it’s best to translate this for me, bless, and provided hours of amusement in the process. The forum has also led to some intriguing photos.
It’s generally referred to as a ‘control’ computer, so I assume it was used mostly in scientific and industrial environments. Not sure why a handful of the cores are off to one side with only one wire going through them, but hey ho – I bought this for a handful of dollars as an objet d’art, not a piece of technology I plan to use.
The plane has 64 x 64 cores, and so is capable of holding 4096 bits of data. That would be 512 bytes in old money, but the PDP-8 was a 12-bit machine. Alas, 12 doesn’t divide nicely into 4096. Hmm.
Core memory first came into use in the 1950s. It employs small rings (cores) of ferrite through which wires are laced. They’re called cores because the technology developed out of transformers, where wire is wound around a ferrite core.
Ferrite (at least if you have the right kind) has the property that, if it is exposed to a magnetic field in a certain way, it will itself become magnetised. A magnetic field operating in the opposite direction will ‘flip’ the polarisation of the magnet, if it was previously set. (This is my understanding of this arcane subject and it’s fragile. Feel free to put me straight.)
Here we’re talking about X/Y coincident core memory. There are, apparently, other types.
To create this magnetic field, you run a wire through the core and send a current down it. To create the opposite field, send the current the other way (ie, switch polarity).
To create a memory bank, you arrange the cores in a matrix. You run X and Y wires (drive lines) through them. Let’s say you have a matrix of 8 x 8 cores. Each X wire and each Y wire will run through 8 cores. To select a specific core, you put half the current required to affect the core through its X wire and half through its Y wire (a logical AND). That way, only one core – where the wires intersect – has enough current to be affected. By selecting which direction the current runs through the wires, you can flip a core ‘on’ or ‘off’ (or 1 and 0, although all these labels are just conventions we impose on the magnetic state).
To read the state of the cores, you thread a single ‘sense’ wire through all the cores. Select the relevant X and Y wires for the core you want to read then energise those wires, with the current flowing in the opposite direction used for writing – in other words, set the selected core to 0. If the core flips state then a current is induced in the sense wire and that current tells you the core was a ‘1’. If there’s no induced current, then the core was already set to ‘0’.
There’s an obvious problem with this. Whenever you read a core, its state always ends up as ‘0’. In other words, reading is destructive. With core memory, then, once you’ve read the state of the memory you need to write it out again to preserve the contents. Quick it ain’t.
Rings of ferrite (a ‘toroidal’ shape, if you prefer) work best because their magnetic fields are self-contained and have no poles. You can pack them reasonably close together without them interfering with each other too much. To reduce any clash of magnetic fields even further, neighbouring cores are angled in different directions.
This technology has one advantage that stems from the use of magnetism rather than electricity to hold the state of each bit – the memory remains even after all power is switched off. It’s non-volatile, rather like flash memory.
Is core memory still around? You bet, although only for geeks. Ben North and Oliver Nash created a DIY Arduino shield project to explore this technology. That site is worth checking out for the explanation of core memory alone.
The difficulty of obtaining the parts for the North & Nash product inspired a Tindie project by Jussi Kilpeläinen that provides an Arduino shield kit with all the parts. Its 4 x 8 matrix provides 32 bits of memory – or to look at it another way, four ASCII characters. At the time of writing, 34 people had bought it. Guess who’s one of them.