# Memoria de contenido direccionable

La memoria de contenido direccionable (Content-Addressable Memory, o CAM, en inglés), es un tipo de memoria de computador empleada en determinadas aplicaciones que requieren velocidades de búsqueda muy elevadas.
Al contrario de las memorias estándar (memorias de acceso aleatorio o RAM) en las que el usuario introduce una dirección de memoria y la RAM devuelve los datos almacenados en esa dirección, una CAM está diseñada de manera que el usuario proporciona los datos y la CAM busca en toda la memoria para ver si esos datos están almacenados en alguna posición. Si los datos son encontrados, la CAM devuelve una lista de una o varias direcciones en las que la información fue encontrada (en algunas arquitecturas, también devuelve los propios datos buscados, u otros tipos de información). Es decir, una CAM es la expresión en hardware de lo que en términos de software se denominaría un array asociativo.
Puesto que una CAM está diseñada para buscar en toda la memoria mediante una simple operación, es mucho más rápida que la RAM en prácticamente todas las operaciones de búsqueda. En contraprestación, la CAM presenta costes más elevados. Al contrario que un chip de RAM, que tiene celdas de almacenamiento simple, cada bit de memoria en una CAM completamente paralela debe incorporar su propio circuito de comparación asociado para detectar una coincidencia entre el bit guardado y el bit solicitado. Además, las coincidencias detectadas en cada celda de la palabra (word) de datos debe ser combinada para componer la señal de coincidencia de toda la palabra. La circuitería adicional incrementa las dimensiones físicas del chip de CAM, lo que aumenta el coste de producción. Esa circuitería extra también hace crecer el consumo de potencia, ya que cada circuito de comparación se activa en cada ciclo del reloj. Por todo ello, las CAM sólo se utilizan en aplicaciones específicas en las que la velocidad de búsqueda requerida no puede ser alcanzada con un método menos costoso.
Para llegar a diferentes compromisos entre velocidad, coste y tamaño de memoria, algunas implementaciones emulan el funcionamiento de las CAM implementando métodos de búsqueda estándar en árbol o diseños hash en hardware, usando trucos de hardware como replicación o segmentación (pipelining) para mejorar el rendimiento efectivo. Estos diseños son usados frecuentemente en los routers.
Puede hallarse una mayor definición de interfaz de las CAM y otros elementos de búsqueda en red (Network Search Elements) en un Acuerdo de Interoperabilidad denominado Look-Aside Interface (LA-1 y LA-2), desarrollado por el Network Processing Forum. Numerosos dispositivos producidos por Integrated Device Technology, Cypress Semiconductor y otros siguen el acuerdo de interfaz LA.

## Otras denominaciones

Las memorias CAM son conocidas bajo otras denominaciones. Entre ellas, se pueden señalar: memorias asociativas (associative memories), memorias de búsqueda asociativa (associative search memories), memorias de búsqueda paralela (parallel search memories), memorias de búsqueda (search memories), etc.

## Historia

Dudley Allen Buck inventó el concepto de memoria de contenido direccionable en 1955. A Buck se le atribuye la idea de la unidad de reconocimiento.