
La mémoire adressable par contenu ( CAM ) est un type particulier de mémoire informatique utilisé dans certaines applications de recherche à très haute vitesse. Également connue sous le nom de mémoire associative ou stockage associatif , elle compare les données de recherche saisies à une table de données stockées et renvoie l'adresse des données correspondantes.
La mémoire associative (CAM) est fréquemment utilisée dans les équipements réseau où elle accélère les opérations de transfert de données et de routage . Ce type de mémoire associative est également utilisé dans la mémoire cache. Dans une mémoire cache associative , l'adresse et le contenu sont stockés côte à côte. Lorsque l'adresse correspond, le contenu correspondant est récupéré de la mémoire cache.
Dudley Allen Buck a inventé le concept de mémoire adressable par contenu en 1955. Buck est crédité de l'idée d' unité de reconnaissance .réseau associatif matériel
Contrairement à la mémoire vive (RAM) classique , où l'utilisateur fournit une adresse mémoire et où la RAM renvoie le mot de données stocké à cette adresse, une mémoire associative (CAM) est conçue de telle sorte que l'utilisateur fournisse un mot de données et que la CAM parcoure l'intégralité de sa mémoire pour vérifier si ce mot de données y est stocké. Si le mot de données est trouvé, la CAM renvoie une liste d'une ou plusieurs adresses mémoire où il a été trouvé. Ainsi, une CAM est l'implémentation matérielle de ce que l'on appellerait, en termes logiciels, un tableau associatif .
Un concept similaire peut être trouvé dans l' unité de reconnaissance de mots de données , telle que proposée par Dudley Allen Buck en 1955.
normes
Une définition d'interface majeure pour les CAM et autres moteurs de recherche réseau a été spécifiée dans un accord d'interopérabilité appelé Look-Aside Interface (LA-1 et LA-1B), développé par le Network Processing Forum . De nombreux dispositifs conformes à cet accord d'interopérabilité ont été produits par Integrated Device Technology , Cypress Semiconductor , IBM , Broadcom et d'autres. Le 11 décembre 2007, l'OIF a publié l'accord d'interface Serial Look-Aside (SLA).
La mémoire CAM est beaucoup plus rapide que la RAM pour la recherche de données. Cependant, elle présente des inconvénients en termes de coût. Contrairement à une puce RAM , qui possède de simples cellules de stockage, chaque bit de mémoire d'une CAM entièrement parallèle nécessite son propre circuit de comparaison pour détecter une correspondance entre le bit stocké et le bit d'entrée. De plus, les signaux de correspondance de chaque cellule du mot de données doivent être combinés pour obtenir un signal de correspondance complet. Ces circuits supplémentaires augmentent la taille physique et le coût de fabrication de la puce CAM. Ils accroissent également la dissipation de puissance, car chaque circuit de comparaison est actif à chaque cycle d'horloge. Par conséquent, la CAM est utilisée uniquement dans des applications spécialisées où la vitesse de recherche ne peut être atteinte par une méthode moins coûteuse. Une des premières implémentations réussies fut un circuit intégré et un système de processeur associatif à usage général
Au début des années 2000, plusieurs entreprises de semi-conducteurs, dont Cypress , IDT , Netlogic , Sibercore et MOSAID, ont lancé des produits CAM destinés aux applications réseau. Ces produits, commercialisés sous les appellations de moteurs de recherche réseau (NSE), d'accélérateurs de recherche réseau (NSA) et de processeurs à base de connaissances (KBP), étaient en réalité des CAM dotés d'interfaces et de fonctionnalités spécialisées, optimisées pour les réseaux. Broadcom propose actuellement plusieurs familles de KBP .
implémentations alternatives
Pour obtenir un compromis différent entre vitesse, taille mémoire et coût, certaines implémentations émulent la fonction de CAM en utilisant des algorithmes de recherche arborescente ou de hachage standard au niveau matériel, et en exploitant des techniques matérielles telles que la réplication ou le pipeline pour optimiser les performances. Ces algorithmes sont fréquemment utilisés dans les routeurs . L' algorithme de Luleå constitue une implémentation efficace pour la recherche de correspondance de préfixe le plus long, une opération requise dans les tables de routage Internet.
CAM ternaires

La mémoire CAM binaire est le type de mémoire CAM le plus simple et utilise des mots de recherche composés uniquement de 1 et de 0. La mémoire CAM ternaire ( TCAM ) autorise un troisième état de correspondance ( X ou indifférent ) pour un ou plusieurs bits du mot stocké, ce qui accroît la flexibilité de la recherche. Par exemple, un mot stocké de 10XX0 dans une mémoire CAM ternaire correspondra à n'importe lequel des quatre mots de recherche suivants : 10000 , 10010 , 10100 ou 10110. Cette flexibilité accrue a un coût supplémentaire par rapport à la mémoire CAM binaire, car la cellule mémoire interne doit désormais encoder trois états possibles au lieu de deux. Cet état supplémentaire est généralement implémenté en ajoutant un bit de masque ( bit d'intérêt ou d'indifférence ) à chaque cellule mémoire. En 2013, IBM a fabriqué une TCAM non volatile utilisant des cellules à 2 transistors et 2 résistances (2T-2R). Une conception de TCAM utilisant un FeFET ferroélectrique hybride a été récemment publiée par un groupe de scientifiques internationaux.
Exemples d'applications
La mémoire adressable par contenu (CAM) est fréquemment utilisée dans les équipements de réseau informatique . Par exemple, lorsqu'un commutateur réseau reçoit une trame de données depuis l'un de ses ports, il met à jour une table interne avec l' adresse MAC source de la trame et le port de réception. Il recherche ensuite l'adresse MAC de destination dans cette table afin de déterminer le port de destination et envoie la trame sur ce port. La table d'adresses MAC est généralement implémentée avec une CAM binaire, ce qui permet de trouver très rapidement le port de destination et de réduire ainsi la latence du commutateur.
Les modules d'accès réseau ternaires (CAM) sont fréquemment utilisés dans les routeurs de réseau , où chaque adresse comporte deux parties : le préfixe réseau , dont la taille peut varier selon la configuration du sous-réseau , et l'adresse de l'hôte, qui occupe les bits restants. Chaque sous-réseau possède un masque de réseau qui spécifie quels bits de l'adresse constituent le préfixe réseau et quels bits constituent l'adresse de l'hôte. Le routage s'effectue en consultant une table de routage gérée par le routeur, qui contient chaque préfixe réseau de destination connu, le masque de réseau associé et les informations nécessaires pour acheminer les paquets vers cette destination. Dans une implémentation logicielle simple, le routeur compare l'adresse de destination du paquet à acheminer avec chaque entrée de la table de routage, en effectuant un ET bit à bit avec le masque de réseau et en comparant le résultat avec le préfixe réseau. S'ils sont égaux, les informations de routage correspondantes sont utilisées pour transmettre le paquet. L'utilisation d'un module CAM ternaire pour la table de routage rend le processus de recherche très efficace. Les adresses sont stockées de manière à ne pas tenir compte de la partie hôte de l'adresse ; ainsi, la recherche de l'adresse de destination dans le module CAM permet de récupérer immédiatement l'entrée de routage correspondante. Le masquage et la comparaison sont tous deux effectués par le matériel CAM. Cela fonctionne si (a) les entrées sont stockées par ordre décroissant de longueur de masque réseau, et (b) le matériel ne renvoie que la première entrée correspondante ; ainsi, la correspondance avec le masque réseau le plus long ( correspondance de préfixe la plus longue ) est utilisée.
Parmi les autres applications de la FAO, on peut citer :
- Contrôleurs de cache entièrement associatifs et tampons de consultation de traduction
- Moteurs de base de données
- Matériel de compression de données
- Réseaux neuronaux artificiels
- Systèmes de prévention des intrusions
- processeurs réseau
- Plusieurs ordinateurs personnalisés, comme le Goodyear STARAN , ont été construits pour implémenter la FAO.