La memoria asociativa (AP) o el dispositivo de almacenamiento asociativo (AMU) es un tipo especial de memoria informática que se utiliza en aplicaciones de búsqueda muy rápida. También conocida como memoria direccionable por contenido, almacenamiento asociativo, memoria direccionable por contenido o matriz asociativa , aunque este último término se usa más comúnmente en programación para referirse a una estructura de datos (Hannum et al., 2004).
A diferencia de la memoria de máquina convencional (memoria de acceso aleatorio o RAM), en la que el usuario especifica una dirección de memoria y la RAM devuelve la palabra de datos almacenada en esa dirección, la UA está diseñada para que el usuario especifique la palabra de datos y la UA la busque. para averiguar si está almacenado en algún lugar de la memoria. Si se encuentra una palabra de datos, el UA devuelve una lista de una o más direcciones de almacenamiento donde se encontró la palabra (y, en algunas arquitecturas, también devuelve la propia palabra de datos u otros datos relacionados). Por lo tanto, AP es una implementación de hardware de lo que en términos de programación se llamaría una matriz asociativa.
La definición de una interfaz básica para la UA y otros Elementos de Búsqueda de Red (NSE) se especificó en un Acuerdo de Interoperabilidad denominado Interfaz Look-Aside ( LA-1 y LA-1B ), que fue desarrollado por el Network Processing Forum, que fue luego se fusionó con el Optical Internetworking Forum (OIF). Numerosos dispositivos han sido fabricados por Integrated Device Technology, Cypress Semiconductor, IBM, Netlogic Micro Systems y otros bajo estos acuerdos de LA. El 11 de diciembre de 2007, OIF publicó el acuerdo de interfaz Serial Lookaside ( SLA ).
Debido a que el AP está diseñado para buscar en toda la memoria en una sola operación, esto es mucho más rápido que buscar en RAM en prácticamente todas las aplicaciones de búsqueda. Sin embargo, hay una desventaja en el costo más alto de AP. A diferencia del chip RAM, que tiene almacenes simples, cada bit individual de memoria en un AP completamente paralelo debe tener su propio circuito de comparación adjunto para detectar una coincidencia entre el bit almacenado y el bit de entrada. Además, las salidas de las comparaciones de cada celda en la palabra de datos deben combinarse para producir el resultado de comparación completo de la palabra de datos. El circuito adicional aumenta el tamaño físico del chip AP, lo que aumenta el costo de fabricación. El circuito adicional también aumenta la disipación de energía, ya que todos los circuitos de comparación están activos en cada ciclo de reloj. Como consecuencia, AM se usa solo en aplicaciones especializadas donde la velocidad de búsqueda no se puede lograr usando otros métodos menos costosos.
Para lograr un equilibrio diferente entre la velocidad, el tamaño de la memoria y el costo, algunas implementaciones emulan las funciones de AP mediante el uso de búsqueda de árbol estándar o algoritmos hash implementados por hardware, y también usan trucos de hardware como la replicación y la canalización para acelerar la operación eficiente. Estos diseños se utilizan a menudo en enrutadores.
Binary AA es el tipo más simple de memoria asociativa que utiliza palabras de búsqueda de datos compuestas completamente de 1 y 0. En la memoria ternaria de contenido direccionable (TCAM [1] ), se agrega un tercer valor para comparar "X" o "no importa" para uno o más bits en la palabra de datos almacenada, lo que agrega flexibilidad de búsqueda adicional.
Por ejemplo, un AU ternario podría almacenar la palabra "10XX0", que coincidiría con cualquiera de las cuatro palabras de búsqueda "10000", "10010", "10100" o "10110". La adición de flexibilidad a la búsqueda tiene el costo de una mayor complejidad de la memoria, ya que las celdas internas ahora tienen que codificar tres estados posibles en lugar de dos. Este estado adicional generalmente se implementa agregando un bit de máscara "importante" ("importante"/"no importante") a cada ubicación de memoria.
La memoria direccionable por contenido se usa a menudo en dispositivos de red informática. Por ejemplo, cuando un conmutador de red recibe una trama de datos en uno de sus puertos, actualiza una tabla interna con el origen de la dirección MAC de la trama y el puerto en el que se recibió. Luego busca la dirección MAC de destino en una tabla para determinar a qué puerto se debe enviar la trama y la envía a ese puerto. La tabla de direcciones MAC generalmente se implementa en un AP binario, por lo que el puerto de destino se puede encontrar muy rápidamente, lo que reduce la latencia del conmutador.
Los puntos de acceso ternarios se utilizan a menudo en aquellos enrutadores de red en los que cada dirección tiene dos partes: (1) la dirección de red, que puede cambiar de tamaño según la configuración de la subred, y (2) la dirección de host, que ocupa los bits restantes. Cada subred tiene una máscara de red que determina qué bits son la dirección de red y qué bits son la dirección del host. El enrutamiento se realiza comprobando la tabla de enrutamiento mantenida por el enrutador. Contiene todas las direcciones de red de destino conocidas, su máscara de red asociada y la información que necesitan los paquetes enrutados a ese destino. Un enrutador implementado sin UA compara la dirección de destino del paquete a dividir con cada entrada en la tabla de enrutamiento, haciendo un AND lógico con la máscara de red y comparando los resultados con la dirección de red. Si son iguales, se utiliza la información de dirección correspondiente para enviar el paquete. El uso de un UA ternario para la tabla de enrutamiento hace que el proceso de búsqueda sea muy eficiente. Las direcciones se almacenan utilizando el bit de indiferencia en la parte de la dirección del host, por lo que buscar la dirección de destino en el UA recupera inmediatamente la entrada correcta en la tabla de enrutamiento; ambas operaciones, aplicar la máscara y comparar, las realiza el hardware del AP.
En inglés:
![]() | |
---|---|
En catálogos bibliográficos |