Content-addressable memory (CAM) is a special type of computer memory used in certain very high speed searching applications. It is also known as associative array.One of its application is in caches for faster tag searching.
Normally memories are accessed using an address which is used to retrieve data(which is the output you get) from the memory.But in CAM the user supplies a data word and the CAM searches its entire memory to see if that data word is stored anywhere in it. If the data word is available, then CAM returns a list of one or more storage addresses where the word was found.
Because CAM is used to search the entire memory in a single clock cycle it is much faster than RAM in all search applications.But this makes CAM more complicated.The extra hardware cost required for parallel searching within the hardware makes it more expensive.Also the comparators are ON all the time in a CAM and hence the power dissipation is high.This may be a problem in mobile devices.
There are two CAM's : Binary and Ternary CAM.Binary CAM is the simplest type which can search for words consisting only of ones and zeros. Ternary CAM (TCAM) allows a third matching state of "X" or "Don't Care" for one or more bits in the stored dataword. For example, we can search for "1X1" in a ternary CAM which will search for "101" and "111" in the memory.This requires more hardware circuit and more expensive.
CAM type memories are used in caches,routers,Data compression hardware,Artificial neural networks etc.