stringtranslate.com

Memoria direccionable por contenido

Memoria direccionable por contenido

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 la 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]

CAM se utiliza con frecuencia en dispositivos de red , donde acelera el reenvío de información de operaciones de base y tabla de enrutamiento . Este tipo de memoria asociativa también se utiliza en la memoria caché. En la memoria caché asociativa, tanto la dirección como el contenido se almacenan uno al lado del otro. Cuando la dirección coincide, el contenido correspondiente se recupera 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 de computadora estándar, 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 algún lugar 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 encarnación de hardware de lo que en términos de software se llamarí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]

Normas

Una definición de interfaz importante 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] Integrated Device Technology , Cypress Semiconductor , IBM , Broadcom y otros han producido numerosos dispositivos que cumplen con el acuerdo de interoperabilidad . El 11 de diciembre de 2007, el OIF publicó el acuerdo de interfaz de look-aside serial (SLA). [ cita requerida ]

Implementaciones de semiconductores

Celda CAM binaria CMOS que consta de una celda SRAM de 6T más 4 transistores de comparación. Cuando los datos en las líneas de búsqueda (SL) difieren de los datos almacenados en la celda a través de las líneas de bit (BL), la línea de coincidencia (ML) se bajará para indicar una falta de coincidencia. Si ninguna de las celdas en una línea de coincidencia indica un bit no coincidente, la línea de coincidencia permanecerá alta en el nivel de precarga para indicar una coincidencia de palabra. Ambas líneas de búsqueda se pueden mantener en lógica '0' como una condición de búsqueda sin importancia. Las líneas de búsqueda y las líneas de bit se pueden fusionar en un solo par de líneas de datos.

El CAM es mucho más rápido que la RAM en aplicaciones de búsqueda de datos. Sin embargo, el CAM tiene desventajas en términos de costo. A diferencia de un chip RAM , que tiene celdas de almacenamiento simples, cada bit de memoria individual en un CAM completamente paralelo 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 producir una señal de coincidencia de palabra de datos completa. Los circuitos adicionales aumentan el tamaño físico y el costo de fabricación del chip CAM. Los circuitos adicionales también aumentan la disipación de energía ya que cada circuito de comparación está activo en cada ciclo de reloj. En consecuencia, el CAM se usa solo en aplicaciones especializadas donde la velocidad de búsqueda no se puede lograr utilizando un método menos costoso. Una implementación temprana exitosa fue un sistema y circuito integrado 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 destinados a aplicaciones de redes. Estos productos se denominaban motores de búsqueda de red (NSE), aceleradores de búsqueda de red (NSA) y procesadores basados ​​en el conocimiento (KBP), pero eran esencialmente CAM con interfaces especializadas y funciones 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 el uso de diseños de búsqueda de árbol o hash estándar en hardware, utilizando trucos de hardware como replicación o canalización para acelerar el rendimiento efectivo. Estos diseños se utilizan a menudo en enrutadores . [ cita requerida ] El algoritmo Lulea es una implementación eficiente para búsquedas de coincidencias de prefijo más largo como se requiere en las tablas de enrutamiento de Internet.

CAM ternarias

Celda CAM ternaria CMOS que consta de dos celdas SRAM de 6T más 4 transistores de comparación. Normalmente, los niveles lógicos opuestos, ya sea '0' y '1' o '1' y '0' se almacenarán en las dos celdas. En una condición de indiferencia, se almacenará '0' en ambas celdas para que la línea de coincidencia ML no se reduzca a un nivel bajo para ninguna combinación de datos de línea de búsqueda (SL).

El CAM binario es el tipo más simple de CAM y utiliza palabras de búsqueda de datos que consisten completamente en 1 y 0. El CAM ternario ( TCAM ) [8] permite un tercer estado coincidente de X o no importa para uno o más bits en la palabra almacenada, agregando así flexibilidad a la búsqueda. Por ejemplo, una palabra almacenada de 10XX0 en un CAM ternario coincidirá con cualquiera de las cuatro palabras de búsqueda 10000 , 10010 , 10100 o 10110. La flexibilidad de búsqueda agregada tiene un costo adicional sobre el CAM binario ya que la celda de memoria interna ahora debe codificar tres estados posibles en lugar de los dos para el CAM binario. Este estado adicional generalmente se implementa agregando un bit de máscara ( bit de cuidado o no importa ) a cada celda de memoria. En 2013, IBM fabricó un TCAM no volátil utilizando celdas de 2 transistores/2 almacenamientos resistivos (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 se utiliza a menudo 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 en el que se recibió. A continuación, busca la dirección MAC de destino en la tabla para determinar a qué puerto se debe reenviar la trama y la envía por ese puerto. La tabla de direcciones MAC suele implementarse con un CAM binario para que se pueda encontrar el puerto de destino muy rápidamente, lo que reduce la latencia del conmutador.

Los CAM ternarios se utilizan a menudo en enrutadores de red , donde cada dirección tiene dos partes: el prefijo de red , que puede variar en tamaño según la configuración de la subred , y la dirección de host, que ocupa los bits restantes. Cada subred tiene una máscara de red que especifica qué bits de la dirección son el prefijo de red y qué bits son la dirección de 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 en la tabla de enrutamiento, realizando un AND bit a bit con la máscara de red y comparándolo con el prefijo de red. Si son iguales, se utiliza la información de enrutamiento correspondiente para reenviar el paquete. El uso de un CAM ternario para la tabla de enrutamiento hace que el proceso de búsqueda sea muy eficiente. Las direcciones se almacenan sin importar la parte de host de la dirección, por lo que buscar la dirección de destino en el CAM recupera inmediatamente la entrada de enrutamiento correcta; tanto el enmascaramiento como la comparación los realiza el hardware del 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:

Véase también

Referencias

  1. ^ "K. Pagiamtzis* y A. Sheikholeslami, Circuitos y arquitecturas de memoria direccionable por contenido (CAM): un tutorial y una encuesta, IEEE Journal of Solid-State Circuits, págs. 712-727, marzo de 2006" (PDF) . Archivado (PDF) desde el original el 15 de marzo de 2007.
  2. ^ División de Computación de TRW. (1963). Primer informe provisional sobre la utilización óptima de las computadoras y las técnicas de computación en los sistemas de control de armas de a bordo. (BuWeps-Project RM1004 M88-3U1). Alexandria, Virginia: Centro de Documentación de Defensa para Información Científica y Técnica.
  3. ^ TRW Computer Division Archivado el 5 de agosto de 2011 en Wayback Machine , 1963, pág. 17.
  4. ^ Acuerdo de implementación de la interfaz Look-Aside (LA-1B) (PDF) , 4 de agosto de 2004
  5. ^ Stormon, CD; Troullinos, NB; Saleh, EM; Chavan, AV; Brule, MR; Oldfield, JV (diciembre de 1992). "Un sistema y circuito integrado de procesador asociativo CMOS de propósito general". IEEE Micro . 12 (6): 68–78. doi :10.1109/40.180249. S2CID  206432751.
  6. ^ "Sibercore Technologies - Soluciones de silicio para el ciberespacio". Archivado desde el original el 19 de abril de 2003.
  7. ^ "Procesadores heterogéneos basados ​​en conocimiento (KBP) de 16 nm". Archivado desde el original el 19 de mayo de 2017.
  8. ^ Hucaby, David (2004). Guía de certificación del examen CCNP BCMSN: autoaprendizaje CCNP. Cisco Press. ISBN 9781587200779.
  9. ^ 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.
  10. ^ Xunzhao Yin, Yu Qian, M. Imani, K. Ni, Chao Li, Grace Li Zhang, Bing Li, Ulf Schlichtmann, Cheng Zhuo, "Memorias direccionables por contenido ternario ferroeléctrico para búsqueda asociativa energéticamente eficiente", Transacciones IEEE sobre diseño asistido por computadora de circuitos y sistemas integrados, abril de 2023.
  11. ^ Varghese, George , Algoritmos de red: un enfoque interdisciplinario para diseñar dispositivos en red rápidos , Morgan Kaufmann, 2005
  12. ^ Smith, Alan Jay (septiembre de 1982). "Cache Memories" (PDF) . Computing Surveys . 14 (3): 473–530. doi :10.1145/356887.356892. S2CID  6023466. Archivado desde el original (PDF) el 2022-04-03 . Consultado el 3 de abril de 2022 . La TLB es una pequeña memoria asociativa que asigna direcciones virtuales a direcciones reales.
  13. ^ Hinton, Geoffrey E. (1984). «Representaciones distribuidas». Archivado desde el original el 2 de mayo de 2016. Consultado el 14 de diciembre de 2017 .

Bibliografía

Enlaces externos