Content addressable memory (CAM) is a special type of computer memory used in certain high speed searching applications. Unlike standard computer memory (Random Access Memory or RAM) in which the user supplies a memory address and the RAM returns the data word stored at that address, a CAM is designed such that 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 found, the CAM returns a list of one or more storage addresses where the word was found (in some architectures, it also returns the data word, or other associated pieces of data). Thus, a CAM may also be referred to as an associative array.
Because a CAM is designed to search its entire memory in a “single” operation, it is much faster than RAM in virtually all search applications. However, there are cost disadvantages associated with CAM. Unlike a RAM chip, which has simple storage cells, each individual memory bit in a fully parallel CAM must have its own associated comparison circuit to detect a match between the stored bit and the input bit. Additionally, match outputs from each cell in the data word must be combined to yield a complete data word match signal. The extra circuitry generally increases power dissipation since every comparison circuit is active on every clock cycle. Energy per search and search speed are two important criteria used to evaluate CAM performance. In general, two types of CAM architecture are used. A not AND (NAND)-type CAM array generally has lower power consumption, but it is generally slower because the match line is charged/discharged through many transistors in series. A not OR (NOR)-type CAM array is generally a faster type of CAM array, but it dissipates a larger amount of power because all high-charged match lines except one are discharged through many transistors in parallel.