How does core memory work?
Magnetic core memory
technology relies on the
physics of
electromagnetism.
Core memory is made up of tiny iron or ferrite rings.
These rings are actually called cores although I'm going to refer
to them as rings because I find that things get too confusing otherwise.
Consider one such ferrite ring.
If we run a wire through this ring and send a strong enough DC electrical
current through the wire then the ring will become magnetized
in a circular fashion.
Specifically, if you were to put the ring down flat on a table and look at
it from above and then run the current through the ring from above to below
then the ring would become magnetized in a clockwise direction.
Important: once an iron ring has been magnetized in either a clockwise
or counterclockwise direction, it will remain magnetized in the same
direction indefinitely if it isn't interfered with.
If we then run a strong enough current but in the opposite direction
through the ring, we can cause the ring to become magnetized in the other
direction.
If we run a strong enough current through the ring sometime later
and in the same direction that the last "strong enough" current was sent
through the ring then nothing happens because the ring is already magnetized
in the direction appropriate for the direction of the current.
If a ring is currently magnetized in the "wrong" direction for the current
that is about to be sent through the ring then there is a certain minimum
amount of current which must be sent through the ring to make the ring's
magnetic field flip directions.
How are we doing?
Make sure that that's clear before continuing.
Onwards!
Let's put our single ring aside and consider the following diagram:
x y z
| | |
/-|-\ /-|-\ /-|-\
A/ | \ D/ | \ G/ | \
p--|--------------|--------------|--------p
\ | / \ | / \ | /
\---/ \---/ \---/
| | |
| | |
| | |
/-|-\ /-|-\ /-|-\
B/ | \ E/ | \ H/ | \
q--|--------------|--------------|--------q
\ | / \ | / \ | /
\---/ \---/ \---/
| | |
| | |
| | |
/-|-\ /-|-\ /-|-\
C/ | \ F/ | \ I/ | \
r--|--------------|--------------|--------r
\ | / \ | / \ | /
\---/ \---/ \---/
| | |
| | |
x y z
This diagram contains nine rings which are organized into a grid
(the vaguely octagonal things in the picture are the ferrite or
iron rings).
The horizontal and vertical lines are wires (three vertical wires and three
horizontal wires).
Each horizontal wire runs through each of the rings in a row.
Each vertical wire runs through each of the rings in a column.
Important:
The wires in a horizontal row always enter each ring in the row from the
bottom as it enters the ring from the left and out the top as it exits the
ring to the right (notice how each horizontal wire is always hidden
by the left side of each ring and how the right side of each ring is
always hidden by the wire).
Similarily, as the vertical wire in a row travels upwards (i.e. towards
the top of your screen), it enters each ring from the bottom and exits out
the top.
Each of these rings represents a single bit of memory or storage
and every ring is
currently magnetized in either a clockwise or a counterclockwise direction
(we don't know which direction but we know it is one or the other).
Let's assume that a ring which is magnetized in a clockwise direction is
considered to be set to 0 and a ring which is magnetized in a counterclockwise
direction is considered to be set to 1.
Now, if we wanted to set ring E to 0 (i.e. magnetize it in a clockwise
direction)
then we could send half of the required current down along
wire y and the other half of the required current from right to
left along wire q.
Rings B, D, F and H would each get half the current required to flip
them.
Since this isn't enough current, none of these rings will flip.
But, ring E gets a full dose of current because it gets half a dose from
each wire.
Consequently, ring E will flip if the magnetism of ring E isn't
currently clockwise.
Ok. Now we've got ring E set to 0 (i.e. magnetized in a clockwise direction).
Let's now let's find out which direction ring C is magnetized in.
If it is magnetized in a clockwise direction then it is currently 0, otherwise
it is magnetized in a counterclockwise direction and is currently 1.
In order to determine how a ring is currently magnetized, we need to
run a third wire through every ring in the grid (i.e. one wire which travels
through all nine rings).
This new wire, which we'll call the sense wire, is always run through each
ring in the same direction (i.e. top to bottom or bottom to top).
Now, we magnetize ring C in a clockwise direction (i.e. set ring C to 0)
by running a current down on wire x and right to left on wire
r.
If ring C was previously set to 1 (i.e. magnetized in a counterclockwise
direction) then the flip in magnetic field will induce a small but
detectable pulse of electricity on our sense wire.
If ring C was already set to 0 (i.e. magnetized in the same clockwise
direction that we are setting it to) then there is no flip in the magnetic
field on ring C and there is no pulse of electricity on our sense wire.
Well, we've managed to figure out what was in ring C but we had to
force ring C to be 0 in order to do it (this method of having to destroy
what was in ring C in order to find out what ring C was set to was called
"destructive reading").
That's not an insurmountable problem because we can restore ring C's old
value by using the information we just got
off the sense wire to send a pulse through wires x and r
again.
The direction we send the pulse on each wire is determined by whether we
want to set ring C back to 1 or leave it at 0 (it is simplest to always
set ring C to the correct value even if it happens to already be the
correct value).
So . . . where are we?
We've got a way to set any one of the nine rings to either 0 or 1 and we've
got a way to determine whether any one of the nine rings is currently 0
or 1.
The method for setting a ring is reasonably clean but the method for
reading a ring is a bit ugly.
That's ok - that which works is better than that which doesn't!
The bottom line is that we've got a way to implement a memory device
(i.e. a device that remembers values) and that's what we set out
to do.
Of course, we're not quite done yet because we're going to need more than
nine bits of memory.
We can increase the number of bits by simply making the grid larger.
For example, if we make the grid 32 by 32 cores then there will be 1024
bits in a single grid.
Now, if we construct eight grids then we can have 1024 bytes of memory.
In order to be able to read or write all of the bits for a specific byte
at the same time, we spread the bits in each byte across all eight grids.
Oops! Sorry!!
One of the dinosaurs at the back of the room is starting to
make rude noises.
We'd better clean up our terms:
- what we've been calling a grid of cores was actually called a
core plane, a plane of cores or a bit plane.
- the amount of time that it takes to write a value into a ring
(you have to leave the current on long enough for the magnetic field
to flip) is called the cycle time of the memory.
The dinosaur looks happier now so let's continue (it is never wise to
upset a dinosaur and it is downright foolish to allow one to remain
upset).
We've now explained how core memory works.
Now let's look at some other issues:
- the amount of current that it takes to flip the magnetic field
in one of these core rings depends on how much iron or ferrite is
in the ring.
If the ring is large and thick then it takes much more current than
if the ring is small and dainty.
- the power that we're using gets turned into heat as it passes
through the core subsystem.
Unless we want to spend a fortune on cooling and electricity, we better
make the rings as small as possible.
In the early days of core memory, the core planes were assembled by hand
(the lower labour costs in Mexico and other less developed countries
were exploited to keep costs down).
The process of stringing the wires through the cores was call knitting.
As technology improved, the size of the core rings became smaller and
smaller.
It eventually became impossible for a human to knit core rings together.
Consequently, workers in Mexico and other less developed countries lost their jobs and automatic core memory knitting machines were developed (does any of this sound familiar?).
I have some core memory from the early days in which each ring is about one millimeter in diameter.
This core memory was made by hand and there are 1024 bits per plane.
I've also got some core memory that dates from the later days of core memory in which the individual rings are so small that I need a magnifying glass to make out the individual rings (this core memory has 65,536 bits
per plane and was almost certainly machine knitted).
Ready for a strange thought . . .
the sets of core memory that I have probably (possibly?) (certainly?) still have
the data that was last written to them just before the machines that they
came out of were powered down!
As the 1960s were coming to an end, the technology for automatically making core memory was really becoming quite impressive.
Unfortunately for the manufacturers of core memory, there was a new technology starting to appear - solid state memory.
Although it took a while, eventually all computer memory was made out of solid state devices and the days of core memory were over.
Well . . . not quite!
I've heard that there are still devices made today which use core memory because core memory has one major advantage over most if not all of the other memory technologies - once you set a core to a particular value, the value remains unchanged without you having to expend any energy (i.e. power) to preserve the value.
Again, I'm not certain but I've heard that such devices are still manufactured and sold today for certain very specialized applications.
Trivia point: IBM announced the System/370 product line in 1970.
One of the machines that they announced was the Model 145 which was their first computer to use solid state memory.
The also announced a faster Model 155 on the same day. This faster model used core memory!
Note: I don't know whether or not the 145's solid state memory was slower than the 155's core memory as the 155 also had a cache and other enhancements which improved its performance.
The inventor of core memory
The next two paragraphs are derived (with heavy quoting as indicated by the use of quotation marks) from an article on the Forbes.com web site titled
85 Innovations (see reference below).
I don't currently have any more information on the invention of core memory than this although I intend to try to dig more out (i.e. drop back in a month or three for more info).
Core memory was invented in 1949 by An Wang (1920-1990).
According to the Forbes article that this paragraph is derived from,
he also invented the "pulse transfer controlling device" which was "the first method of storing information on a computer without large magnetic drums".
An Wang sold his patent to IBM for $400,000 in order to be able to concentrate on another of his endeavours - Wang Laboratories.
Some may remember Wang as the company that made a bundle selling early word processors.
The company crashed and burned after An Wang's death.
The Forbes article goes on to say that Jay W. Forrester modified Wang's invention and the result "became the basis for all high-speed computer memory, lasting until microchips displaced it".
Some photos of my older set of core memory are available at
http://www.bouletfermat.com/danny/core.html
Sources:
- Computer Architecture by Caxton C. Foster;
Copyright © 1970 Litton Educational Publishing, Inc.;
ISBN 0-442-15639-1.
- Article titled 85 Innovations and dated 2002/12/23
on Forbes.com web site at http://forbes.com/2002/11/01/85.html (last accessed 2002/12/20)
- personal recollections (not personal experience - the recollections
are of things that I've heard while fraternizing with friendly
dinosaurs).