
La memoria direccionable por contenido ( CAM ) es un tipo especial de memoria de computadora que se utiliza en ciertas aplicaciones de búsqueda de muy alta velocidad. También se conoce como memoria asociativa o almacenamiento asociativo , y compara los datos de búsqueda de entrada con una tabla de datos almacenados, y devuelve la dirección de los datos coincidentes. [ 1 ]
La memoria CAM se utiliza frecuentemente en dispositivos de red, donde acelera las operaciones de reenvío de información y de la tabla de enrutamiento . Este tipo de memoria asociativa también se emplea en la memoria caché. En la memoria caché asociativa , la dirección y el contenido se almacenan uno al lado del otro. Cuando la dirección coincide, se recupera el contenido correspondiente de la memoria caché.
Historia
Dudley Allen Buck inventó el concepto de memoria direccionable por contenido en 1955. A Buck se le atribuye la idea de la unidad de reconocimiento . [ 2 ]
Matriz asociativa de hardware
A diferencia de la memoria estándar de computadora, la memoria de acceso aleatorio (RAM), en la que el usuario proporciona una dirección de memoria y la RAM devuelve la palabra de datos almacenada en esa dirección, una CAM está diseñada de tal manera que el usuario proporciona una palabra de datos y la CAM busca en toda su memoria para ver si esa palabra de datos está almacenada en alguna parte de ella. Si se encuentra la palabra de datos, la CAM devuelve una lista de una o más direcciones de almacenamiento donde se encontró la palabra. Por lo tanto, una CAM es la implementación de hardware de lo que en términos de software se denominaría una matriz asociativa .
Un concepto similar se puede encontrar en la unidad de reconocimiento de palabras de datos , tal como lo propuso Dudley Allen Buck en 1955. [ 3 ]
Estándares
Una definición de interfaz principal para CAM y otros motores de búsqueda de red se especificó en un acuerdo de interoperabilidad llamado Interfaz Look-Aside (LA-1 y LA-1B) desarrollado por el Network Processing Forum . [ 4 ] Numerosos dispositivos que cumplen con el acuerdo de interoperabilidad han sido producidos por Integrated Device Technology , Cypress Semiconductor , IBM , Broadcom y otros. El 11 de diciembre de 2007, la OIF publicó el acuerdo de interfaz serial look-aside (SLA).
Implementaciones de semiconductores

La memoria CAM es mucho más rápida que la RAM en aplicaciones de búsqueda de datos. Sin embargo, presenta desventajas en cuanto a costos. A diferencia de un chip RAM , que cuenta con celdas de almacenamiento simples, cada bit de memoria individual en una CAM totalmente paralela debe tener su propio circuito de comparación asociado para detectar una coincidencia entre el bit almacenado y el bit de entrada. Además, las salidas de coincidencia de cada celda en la palabra de datos deben combinarse para generar una señal de coincidencia completa de la palabra de datos. El circuito adicional aumenta el tamaño físico y el costo de fabricación del chip CAM. Este circuito extra también incrementa la disipación de potencia, ya que cada circuito de comparación está activo en cada ciclo de reloj. Por consiguiente, la CAM se utiliza únicamente en aplicaciones especializadas donde la velocidad de búsqueda no puede lograrse mediante un método menos costoso. Una implementación temprana exitosa fue un circuito integrado y sistema de procesador asociativo de propósito general. [ 5 ]
A principios de la década de 2000, varias empresas de semiconductores, entre ellas Cypress , IDT , Netlogic , Sibercore [ 6 ] y MOSAID, introdujeron productos CAM orientados a aplicaciones de redes. Estos productos se denominaron Motores de Búsqueda de Red (NSE), Aceleradores de Búsqueda de Red (NSA) y Procesadores Basados en Conocimiento (KBP), pero eran esencialmente CAM con interfaces y características especializadas optimizadas para redes. Actualmente, Broadcom ofrece varias familias de KBP [ 7 ] .
Implementaciones alternativas
Para lograr un equilibrio diferente entre velocidad, tamaño de memoria y costo, algunas implementaciones emulan la función de CAM mediante búsquedas en árbol estándar o diseños de hash en hardware, utilizando técnicas como la replicación o la segmentación para acelerar el rendimiento efectivo. Estos diseños se utilizan frecuentemente en enrutadores . El algoritmo de Luleå es una implementación eficiente para búsquedas de coincidencia de prefijo más largo, como las requeridas en las tablas de enrutamiento de Internet.
CAM ternarios

La CAM binaria es el tipo más simple de CAM y utiliza palabras de búsqueda de datos que consisten únicamente en 1s y 0s . La CAM ternaria ( TCAM ) [ 8 ] permite un tercer estado de coincidencia de X o no importa para uno o más bits en la palabra almacenada, lo que agrega flexibilidad a la búsqueda. Por ejemplo, una palabra almacenada de 10XX0 en una CAM ternaria coincidirá con cualquiera de las cuatro palabras de búsqueda 10000 , 10010 , 10100 o 10110. La flexibilidad de búsqueda adicional tiene un costo adicional con respecto a la CAM binaria, ya que la celda de memoria interna ahora debe codificar tres estados posibles en lugar de los dos de la CAM binaria. Este estado adicional generalmente se implementa agregando un bit de máscara ( bit de interés o indiferencia ) a cada celda de memoria. En 2013, IBM fabricó una TCAM no volátil utilizando celdas de 2 transistores/2 de almacenamiento resistivo (2T-2R). [ 9 ] Un grupo de científicos internacionales publicó recientemente un diseño de TCAM que utiliza FeFET ferroeléctrico híbrido. [ 10 ]
Ejemplos de aplicaciones
La memoria direccionable por contenido (CAM) se utiliza frecuentemente en dispositivos de redes informáticas . Por ejemplo, cuando un conmutador de red recibe una trama de datos de uno de sus puertos, actualiza una tabla interna con la dirección MAC de origen de la trama y el puerto de recepción. A continuación, busca la dirección MAC de destino en la tabla para determinar a qué puerto debe reenviarse la trama y la envía por ese puerto. La tabla de direcciones MAC suele implementarse con una CAM binaria, lo que permite encontrar el puerto de destino rápidamente y reduce la latencia del conmutador.
Las CAM ternarias se utilizan a menudo en enrutadores de red , donde cada dirección tiene dos partes: el prefijo de red , cuyo tamaño puede variar según la configuración de la subred , y la dirección del host, que ocupa los bits restantes. Cada subred tiene una máscara de red que especifica qué bits de la dirección corresponden al prefijo de red y cuáles a la dirección del host. El enrutamiento se realiza consultando una tabla de enrutamiento mantenida por el enrutador, que contiene cada prefijo de red de destino conocido, la máscara de red asociada y la información necesaria para enrutar los paquetes a ese destino. En una implementación de software simple, el enrutador compara la dirección de destino del paquete que se va a enrutar con cada entrada de la tabla de enrutamiento, realizando una operación AND bit a bit con la máscara de red y comparándola con el prefijo de red. Si son iguales, se utiliza la información de enrutamiento correspondiente para reenviar el paquete. El uso de una CAM ternaria para la tabla de enrutamiento hace que el proceso de búsqueda sea muy eficiente. Las direcciones se almacenan utilizando la parte del host de la dirección, por lo que la búsqueda de la dirección de destino en la CAM recupera inmediatamente la entrada de enrutamiento correcta; tanto el enmascaramiento como la comparación los realiza el hardware de la CAM. Esto funciona si (a) las entradas se almacenan en orden decreciente de longitud de máscara de red, y (b) el hardware devuelve solo la primera entrada coincidente; por lo tanto, se utiliza la coincidencia con la máscara de red más larga ( coincidencia de prefijo más larga ). [ 11 ]
Otras aplicaciones CAM incluyen:
- Controladores de caché totalmente asociativos y búferes de búsqueda de traducción [ 12 ]
- Motores de bases de datos
- Hardware de compresión de datos
- Redes neuronales artificiales [ 13 ]
- Sistemas de prevención de intrusiones
- procesadores de red
- Se fabricaron varios ordenadores personalizados, como el Goodyear STARAN , para implementar CAM.
Véase también
Referencias
- ↑ "K. Pagiamtzis* y A. Sheikholeslami, Circuitos y arquitecturas de memoria direccionable por contenido (CAM): Un tutorial y revisión, IEEE Journal of Solid-State Circuits, págs. 712-727, marzo de 2006" (PDF) . Archivado (PDF) del original el 15 de marzo de 2007.
- ↑ División de Computación de TRW. (1963). Primer informe provisional sobre la utilización óptima de computadoras y técnicas de computación en sistemas de control de armas a bordo de buques . (BuWeps-Proyecto RM1004 M88-3U1). Alexandria, Virginia: Centro de Documentación de Defensa para Información Científica y Técnica.
- ↑ División de Computadoras TRW Archivado el 5 de agosto de 2011 en Wayback Machine , 1963, pág. 17.
- ↑ Acuerdo de implementación de la interfaz Look-Aside (LA-1B) (PDF) , 4 de agosto de 2004
- ↑ Stormon, CD; Troullinos, NB; Saleh, EM; Chavan, AV; Brule, MR; Oldfield, JV (diciembre de 1992). "Un circuito integrado y sistema de procesador asociativo CMOS de propósito general". IEEE Micro . 12 (6): 68–78 . doi : 10.1109/40.180249 . S2CID 206432751 .
- ↑ "Sibercore Technologies - Soluciones de silicio para el ciberespacio" . Archivado del original el 19 de abril de 2003.
- ↑ "Procesadores heterogéneos basados en el conocimiento (KBP) de 16 nm" . Archivado del original el 19 de mayo de 2017.
- ↑ Hucaby, David (2004). Guía de certificación para el examen CCNP BCMSN: Autoaprendizaje CCNP . Cisco Press. ISBN 9781587200779.
- ↑ Jing Li, R. Montoye, M. Ishii, K. Stawiasz, T. Nishida, K. Maloney, G. Ditlow, S. Lewis, T. Maffitt, R. Jordan, Leland Chang, P. Song, "TCAM no volátil de celda 2T-2R de 1 Mb y 0,41 μm2 con codificación de dos bits y detección autorreferenciada sincronizada", Simposio IEEE sobre Tecnología VLSI, 2013.
- ↑ Xunzhao Yin, Yu Qian, M. Imani, K. Ni, Chao Li, Grace Li Zhang, Bing Li, Ulf Schlichtmann, Cheng Zhuo, "Memorias ferroeléctricas ternarias de contenido direccionable para búsqueda asociativa de bajo consumo energético", IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, abril de 2023.
- ↑ Varghese, George , Algoritmos de red: un enfoque interdisciplinario para el diseño de dispositivos de red rápidos , Morgan Kaufmann, 2005
- ↑ Smith, Alan Jay (septiembre de 1982). "Memorias caché" (PDF) . Computing Surveys . 14 (3): 473– 530. doi : 10.1145/356887.356892 . S2CID 6023466. Archivado del original (PDF) el 3 de abril de 2022. Recuperado el 3 de abril de 2022. La
TLB es una pequeña memoria asociativa que asigna direcciones virtuales a direcciones reales.
- ↑ Hinton, Geoffrey E. (1984). "Representaciones distribuidas" . Archivado del original el 2 de mayo de 2016. Recuperado el 14 de diciembre de 2017 .
Bibliografía
- Anargyros Krikelis, Charles C. Weems (editores) (1997). Procesamiento asociativo y procesadores , IEEE Computer Science Press. ISBN 0-8186-7661-2
- US 6823434 , Hannum et al., "Sistema y método para restablecer e inicializar una matriz totalmente asociativa a un estado conocido al encenderla o a través de un estado específico de la máquina", publicado en 2004.
- Pagiamtis, K.; Sheikholeslami, A. (2006). "Circuitos y arquitecturas de memoria direccionable por contenido (CAM): un tutorial y una revisión" (PDF) . IEEE Journal of Solid-State Circuits . 41 (3): 712– 727. Bibcode : 2006IJSSC..41..712P . doi : 10.1109/JSSC.2005.864128 . S2CID 11178331 .
- Stormon, CD; Troullinos, NB; Saleh, EM; Chavan, AV; Brule, MR; Oldfield, JV; Un circuito integrado y sistema de procesador asociativo CMOS de propósito general, Coherent Research Inc., East Syracuse, NY, EE. UU., IEEE Micro, diciembre de 1992, Volumen: 12 Número: 6.
Enlaces externos
- Introducción a la CAM
- Procesamiento aritmético mediante memoria asociativa
- Matrices asociativas
- Memoria de computadora
- redes informáticas