What is a Content-Addressable Memory (CAM)?

This is not the kind of CAM the post is about!What is a Content-Addressable Memory (CAM)?  The Memory Guy decided to post this after having recently run across a very strange web post HERE that erroneously inferred that CAM chips from NEC could be a threat to NAND-based SSDs.  The article was based on a press release from NEC and Tohoku University that can be read HERE.

It’s not at all surprising that the release was misunderstood – it’s very awkwardly written:

The new CAM utilizes the vertical magnetization of vertical domain wall elements in reaction to magnetic substances in order to enable data that is processing within the CAM to be stored on a circuit without using power.

In fact, The Memory Guy personally challenges any and all readers to go to this press release, read it, then tell him, without lying, that they understood every word of it.

I will clarify two things:

First – The NEC release never said anything about this CAM replacing SSDs.  It will do what all CAMs do, and that is to tell you whether or not there’s a copy of something inside the CAM – that’s all.  Believe it or not, there’s a CAM inside the main processor in every PC in the world.

Second – The NEC/Tohoku CAM’s distinction is that it doesn’t lose its information when power is removed (in other words, it’s nonvolatile), and it is smaller than other nonvolatile CAMs that the researchers had run across up to the date of the press release (June 13, 2011.)  Crocus announced an alternative technology in August that appears to afford a smaller (and therefore less expensive) chip.

But that doesn’t fully answer the question – What is a CAM?  A CAM is a very strange chip.  You tell it to remember a piece of data.  It might hold 256, or 1,024, or 16,384, or some other number of such pieces of data.  In a normal memory you tell it where to keep that data.  In a CAM you don’t – the CAM stores it wherever it wants to.

In a normal memory you then ask: “What’s at address thus and so?”  The memory then returns the stored data.  In a CAM you ask: “Have you got any entries that match this number?” and you give it a number.  The CAM replies: “Yes!”

Where on earth would you use something like this?  Well, network bridges are a very good example.  A CAM stores the IP addresses of all the devices on one side of the bridge, and another CAM stores all the addresses on the other side of the bridge.  When a computer on one side wants to send a message to a computer on the other side of the bridge, the CAM on the receiving end will say: “That computer’s on my side of the bridge,” and the bridge uses that information to allow the message to pass through.

If the CAM loses its information every time there’s a power outage then it will have to re-learn which devices are on its side of the bridge.  It would be nice if the CAM were nonvolatile, so that it would maintain its information in the case of a power outage.  Today’s commercial CAMs don’t.

What’s this comment The Memory Guy said about the processors in all PCs having CAMs?  Without going into a lot of detail I will simply explain that compute processors all have a Memory Management Unit – or MMU, that helps to… well… manage memory!  All processor MMUs use a CAM to tell whether or not a range of memory addresses is, or is not, being managed.

That’s CAMs in a nutshell.  Those who want to really understand CAMs are directed to a Wikipedia article detailing CAMs from a networking perspective, but drink two cups of coffee before reading it.