Content-addressable memory (CAM) architectures and methods of use are
disclosed for enabling multiple concurrent lookups within a CAM array. One
implementation arranges CAM arrays into multiple banks and enables
parallel lookups of multiple key strings in multiple CAM banks. For a
given input key, simultaneous parallel lookups in a plurality of CAM banks
are performed by each bank using a bank key consisting of a subset of the
bits of the input key. The multiple bank CAM is instructed to extract one
or more distinct subsets of input key bits for use as bank lookup keys.
Each bank key is passed to the appropriate bank according to the
instruction received. Multiple bank sizes, depending on the key width and
overall size of the CAM array, are also possible. Each bank produces a
single output result, and each bank is returned to the host device that
initially issued the lookup instruction.