FR3022372A1 - Recherche de correspondance d'element dans une liste - Google Patents

Recherche de correspondance d'element dans une liste Download PDF

Info

Publication number
FR3022372A1
FR3022372A1 FR1455394A FR1455394A FR3022372A1 FR 3022372 A1 FR3022372 A1 FR 3022372A1 FR 1455394 A FR1455394 A FR 1455394A FR 1455394 A FR1455394 A FR 1455394A FR 3022372 A1 FR3022372 A1 FR 3022372A1
Authority
FR
France
Prior art keywords
module
list
modules
priority
content
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1455394A
Other languages
English (en)
Other versions
FR3022372B1 (fr
Inventor
Ghassan Chehaibar
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bull SAS
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Original Assignee
Bull SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bull SAS filed Critical Bull SAS
Priority to FR1455394A priority Critical patent/FR3022372B1/fr
Priority to PCT/FR2015/051484 priority patent/WO2015189505A1/fr
Priority to BR112016029056A priority patent/BR112016029056A2/pt
Priority to US15/318,476 priority patent/US20170124222A1/en
Priority to EP15733800.5A priority patent/EP3155526A1/fr
Priority to JP2016572727A priority patent/JP6495343B2/ja
Publication of FR3022372A1 publication Critical patent/FR3022372A1/fr
Application granted granted Critical
Publication of FR3022372B1 publication Critical patent/FR3022372B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90339Query processing by using parallel associative memories or content-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Dispositif de recherche de correspondance d'élément dans une liste, le dispositif comportant: - une pluralité de modules de mémoire adressable par contenu configurés pour comparer en parallèle un élément d'entrée avec leur contenu, ladite liste étant représentée par la concaténation du contenu valide desdites mémoires selon un ordre défini par une liste de priorité, - un module de de détermination, dans ladite liste de priorité, du premier module lequel l'élément d'entrée correspond à un élément stocké dans ledit module, et - un module de lecture du premier élément dudit module déterminé correspondant à l'élément d'entrée.

Description

La présente invention concerne le domaine de l'informatique. Plus particulièrement, elle concerne l'implémentation de la recherche d'éléments dans des listes de manière matérielle. L'implémentation de cartes réseau supportant l'interface MPI (sigle 5 de « Message Passing Interface » en anglais) nécessite la mise en oeuvre massive de recherche d'éléments dans des listes. Il s'agit par exemple, de lister les messages attendus par un noeud d'un réseau de communication avec une indication sur son lieu de stockage et de comparer tous les messages entrants du noeud à ceux de la liste. Ainsi, 10 lorsqu'un message arrive, il peut être acheminé vers son lieu de stockage pour être traité. Classiquement, chaque message dispose d'une étiquette qui doit être comparée à l'étiquette des messages dans la liste. Les étiquettes des messages de la liste sont éventuellement masquées pour que la comparaison 15 des étiquettes se fasse sur un nombre de bits réduit. Lorsqu'un message arrive, son étiquette est comparée à celle du premier élément de la liste, puis le deuxième, puis le troisième et ainsi de suite, jusqu'à ce qu'une correspondance d'étiquette soit trouvée. Dans ce cas, le message entrant est acheminé vers le lieu de 20 stockage et l'élément correspondant de la liste est supprimé. La liste est ensuite mise à jour. La liste des messages attendus est donc une liste dynamiquement modifiée avec des éléments pouvant être retirés, lorsqu'un message correspondant arrive ou pouvant être ajoutés lorsqu'un nouveau message est 25 attendu. Ce type de recherche dans une liste peut être mis en oeuvre de manière logicielle, avec des parcours de liste, mais ce type d'implémentation est très consommateur en ressources de calcul. En outre, le message entrant devant être séquentiellement comparé 30 à tous les éléments de la liste, le temps de traitement est proportionnel à la taille de liste. Dans les applications mettant en oeuvre un très grand nombre de processeurs, typiquement les supercalculateurs, l'implémentation logicielle peut retarder trop lourdement le système. Ainsi, les implémentations matérielles peuvent être préférées. Il a notamment été proposé de réaliser des recherches de correspondance en parallèle, par exemple en utilisant des arbres de recherche. Les recherches de correspondance parallèles sont cependant complexes car, dans le contexte des interfaces MPI par exemple, seul le premier élément correspondant au message entrant doit être retourné. La notion d'ordre des éléments de la liste doit être conservée, même dans les recherches de correspondance parallèles. Il existe donc un besoin pour améliorer les implémentations informatiques matérielles de recherche de correspondance d'éléments dans des listes. La présente invention s'inscrit dans ce cadre.
Un premier aspect de l'invention concerne un dispositif de recherche de correspondance d'élément dans une liste, le dispositif comportant: - une pluralité de modules de mémoire adressable par contenu configurés pour comparer en parallèle un élément d'entrée avec leur contenu, ladite liste étant représentée par la concaténation du contenu valide desdites mémoires selon un ordre défini par une liste de priorité, - un module de de détermination, dans ladite liste de priorité, du premier module lequel l'élément d'entrée correspond à un élément stocké dans ledit module, et - un module de lecture du premier élément dudit module déterminé correspondant à l'élément d'entrée. Un dispositif selon le premier aspect permet de réaliser des recherches de correspondance d'éléments en un nombre réduit de cycles d'horloge dans un système informatique. Par exemple, la recherche de correspondance d'un élément dans une liste de 1024 élément peut être réalisée en moins de 10 cycles. Par exemple, ce dispositif est une unité de traitement de liste associative (ALPU sigle de « Associative List Processing Unit » en anglais).
Selon des modes de réalisation, le dispositif comporte en outre : - un module d'invalidation dudit premier élément, et - un module de mise à jour d'un compteur d'éléments associé à ladite mémoire déterminée, ledit compteur d'élément représentant le nombre d'éléments stockés valides dans ladite mémoire. Selon des modes de réalisation, ledit module de mise à jour est en outre configuré pour lancer une mise à jour, lorsqu'un un module est vide, de ladite liste de priorité, ladite mise à jour permettant de placer ledit module à un niveau de priorité inférieur à celui des modules non vides. Par exemple, un indice de priorité associée auxdites mémoires est mis à jour. Par exemple, ladite mise à jour comporte un décalage dudit module et des modules suivants dans la liste.
Selon des modes de réalisation, ladite liste de priorité comporte un paramètre pour chaque module, indiquant si chaque module est vide ou non. Par exemple, les modules sont classés en fonction dudit paramètre. Par exemple encore, l'ordre des modules dans ladite liste de priorité reflète un ordre d'allocation.
Selon des modes de réalisation, ladite recherche de correspondance est effectuée par association d'une étiquette dudit élément avec une étiquette d'un élément de ladite liste. Par exemple, lesdits modules sont des modules à mémoire adressable par contenu ternaires.
Ce type de module consomme moins d'énergie que des registres (dits « flip-flops ») habituellement utilisés. Pour traiter une liste de SxN éléments, le dispositif peut contenir N modules de mémoire adressable par contenu, chaque module pouvant contenir S éléments.
Par exemple, au moins un module de traitement du dispositif est réalisé à partir de log2(N) étages de multiplexeurs (10g2 représentant le logarithme de base 2), N étant le nombre de modules de mémoire adressable par contenu. Par exemple une unité de traitement est un module de ré-ordonnancement, un module de sélection ou autre.
Un deuxième aspect de l'invention concerne un procédé de recherche de correspondance d'élément dans une liste, le procédé comportant les étapes suivantes : - de comparaison parallèle d'un élément d'entrée avec le contenu d'une pluralité de modules de mémoire adressable par contenu, ladite liste étant représentée par la concaténation du contenu valide desdites mémoires selon un ordre défini par une liste de priorité, - de détermination, dans ladite liste de priorité, du premier module lequel l'élément d'entrée correspond à un élément stocké dans ledit module, - de lecture du premier élément dudit module déterminé correspondant à l'élément d'entrée. Le procédé peut en outre comporter les étapes suivantes: - d'invalidation dudit premier élément, et - de mise à jour d'un compteur d'éléments associé à ladite mémoire déterminée, ledit compteur d'élément représentant le nombre d'éléments stockés valides dans ladite mémoire. Le procédé peut en outre comporter une étape de mise à jour, lorsqu'un un module est vide, de ladite liste de priorité, ladite mise à jour permettant de placer ledit module à un niveau de priorité inférieur à celui des modules non vides.
Par exemple, un indice de priorité associée audites mémoires est mis à jour. Par exemple, ladite mise à jour comporte un décalage dudit module et des modules suivants dans la liste. Par exemple, ladite liste de priorité comporte un paramètre pour chaque module, indiquant si chaque module est vide ou non. Selon des modes de réalisation, les modules sont classés en fonction dudit paramètre.
Par exemple, l'ordre des modules dans ladite liste de priorité reflète un ordre d'allocation. Selon des modes de réalisation, ladite recherche de correspondance est effectuée par association d'une étiquette dudit élément avec une étiquette d'un élément de ladite liste. Selon des modes de réalisation, lesdits modules sont des modules à mémoire adressable par contenu ternaires.. Un troisième aspect de l'invention concerne un programme d'ordinateur ainsi qu'un produit programme d'ordinateur et un support de stockage pour de tels programme et produit, permettant la mise en oeuvre d'un procédé selon le deuxième aspect de l'invention. D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la présente description détaillée qui suit, à titre d'exemple non limitatif, et des figures annexées parmi lesquelles : - la figure 1 illustre un objectif général de modes de réalisations de l'invention, - la figure 2 illustre le stockage d'une liste dans des modules de mémoire adressable par contenu selon des modes de réalisation, - les figures 3A-3B illustrent la mise à jour d'une liste de priorité selon des modes de réalisation, - la figure 4 illustre une table de comptage selon des modes de réalisation, et - la figure 5 illustre une implémentation matérielle selon des modes de réalisation.
Selon un objectif général illustré par la figure 1, une liste 100 comporte un certain nombre d'éléments 101, 102, 103 etc. ordonnés selon des indices respectifs « 0 », « 1 », « 2 » etc. Chaque élément de la liste comporte, comme l'élément 101, des données 104 (« 0 »), une étiquette 105 (« TAG ») et éventuellement un masque 106 (« MSK »).
Il s'agit de déterminer dans cette liste, le premier élément correspondant à un élément d'entrée 107 comportant des données 108 et une étiquette 109.
La correspondance se fait par comparaison entre l'étiquette de l'élément d'entrée et celles des éléments de la liste. Pour simplifier la recherche de correspondance, la comparaison peut se faire avec les masques des éléments de la liste. En comparant avec les masques, la correspondance peut se faire sur un nombre plus faible de bits. Plutôt que de réaliser la recherche de correspondance en parcourant la liste et faire les comparaisons une à une, il est proposé de réaliser une recherche parallèle. Pour cela, comme illustré par la figure 2, des modules de mémoire adressables par contenu sont utilisées (CAM, sigle de « Content Adressable Memory »). Par exemple, il s'agit de modules de mémoire adressables par contenu ternaires (TCAM, sigle de « Ternary Content Adressable Memory »). La liste 200 (« LIST ») dans laquelle doit se faire la recherche est stockée dans un ensemble de modules 201 (« TCAMO »), 202 (« TCAM1 ») 203 (« TCAM31 »). Par exemple, la liste 200 comporte 1024 éléments répartis dans 32 modules de 32 éléments. Les modules sont initialement alloués dans un ordre initial, par exemple selon leur valeur d'index. Ainsi, le module 201 (« TCAMO »), d'index « 0» est alloué en premier, suivi du module 202 (« TCAM1 »), d'index « 1 » et ainsi de suite jusqu'au module 203 (« TCAM31 ») d'index « 31 ». Un autre ordre d'allocation initial peut être prévu. Lorsqu'un élément de la liste correspond à l'élément d'entré, il est retiré de la liste. Ainsi, la ligne du module dans lequel il est stocké est invalidée. Par exemple, un bit de validité est mis à jour pour indiquer que la ligne est « vide ». Par exemple encore, la ligne est mise à zéro.
Lorsque la totalité des lignes d'un module est invalidée, le module redevient disponible pour y stocker de nouveau éléments. La concaténation des lignes valides des modules placés dans leur ordre d'allocation permet de reconstituer la liste dans son état courant. Afin de traiter une liste de NxS élements, on utilise par exemple N 30 TCAM, chacune pouvant contenir S entrées.
Afin de gérer l'allocation dynamique des modules, une liste de priorité (non représentée) recense les modules et permet de les ordonner pour permettre de reconstituer correctement la liste initiale. La figure 3A illustre une liste de priorité 300. Une première colonne 301 comporte l'index des modules, dans leur ordre de priorité. Une deuxième colonne 302 comporte un paramètre de validité (V) indiquant si le module est alloué (V=1), c'est-à-dire qu'au moins une ligne du module stocke un élément de la liste dans laquelle la correspondance est recherchée, ou si le module n'est pas alloué (V=0), c'est-à-dire que le module est libre pour y stocker de nouveaux éléments de la liste. Pour reconstituer la liste dans laquelle la correspondance est recherchée, il suffit de concaténer, dans l'ordre donné par la liste de priorité, les lignes valides des modules alloués. Ainsi, dans l'exemple de la figure 3, pour reconstituer la liste, il faut concaténer les lignes valides du module d'index « 5 », puis celui d'index « 2 », puis celui d'index « 4 ». Dans la liste de priorité, les modules alloués sont placés avant les modules non alloués. Si par exemple, le module d'index « 5 » (TCAM5) vient à être vidé, c'est-à-dire que toutes ses lignes sont invalidées (ou effacées) son paramètre de validité V passe à « 0» et toutes les lignes de la liste 300 sont décalées comme illustré par la figure 3B. Ainsi, le module d'index « 2 » passe en tête de la liste et le module d'index « 5 » passe en module non alloué à la fin de la liste de priorité. Les modules vidés au cours du processus de recherche de correspondance peuvent se trouver dans n'importe quelle position dans la liste de priorité, en fonction des correspondances trouvées. Pour déterminer si un module est vide ou non, une table de comptage 400, illustrée par la figure 4, est mise à jour en fonction des inscriptions et ou effacement (ou invalidation) dans les modules. La table 400 comporte une colonne 401 listant les modules, par exemple en fonction de leur index, le module d'index « 0» (TCAMO) étant listé en premier, suivi du module d'index « 1 » (TCAM1) etc. Une deuxième colonne comporte une valeur de comptage pour chaque module, représentant le nombre de lignes valides dans le module. Ainsi, par exemple, le module d'index « 0» (TCAMO) comporte 20 lignes valides, c'est-à-dire que 20 éléments de la liste dans laquelle la correspondance est recherchée sont stockés dans ce module. Le module d'index « 1 » (TCAM1) comporte 31 lignes valides. Le module d'index « 3» (TCAM3) comporte 0 ligne valides, c'est-à-dire qu'il est vide et donc disponible pour allocation. Chaque fois qu'un nouvel élément intègre la liste, le compteur d'un module est incrémenté. Chaque fois qu'une correspondance est trouvée entre un élément entrant et un élément de la liste, cet élément de la liste est supprimé et le compteur du module dans lequel il était stocké est décrémenté. La recherche de correspondance entre un élément d'entrée et les éléments d'une liste peut être mise en oeuvre dans une unité de traitement de liste associative (ALPU), par exemple dans un routeur mettant en oeuvre une interface M Pl.
Dans ce type d'interface, les messages arrivant à un noeud d'un réseau de communication doivent être acheminés pour être traités. Ainsi, une liste d'attente des messages à recevoir est établie et les adresses de stockage pour ces messages y sont associées. Lorsqu'un message arrive au noeud, il est comparé avec ceux de la liste d'attente (en utilisant une étiquette comme évoqué ci-dessus). Lorsqu'une correspondance est trouvée, le premier message correspondant dans l'ordre de la liste d'attente en est supprimé. Le message est alors acheminé en fonction de l'adresse associée. En référence à la figure 5, une implémentation matérielle pour une recherche de correspondance selon des modes de réalisation est décrite. Cette implémentation peut par exemple être faite sous la forme d'un circuit ASIC (acronyme de l'anglais « Application-Specific Integrated Circuit »). Une étiquette 500 (« hdr ») d'un élément est fournie parallèlement à une série de modules mémoire adressables par contenu. Dans cet exemple, il s'agit de N modules ternaires (modules TCAM) 501, ..., 502, nommés « TCAM 0 », ..., « TCAM N-1 » (par exemple N=32). Cette étiquette est ainsi comparée aux étiquettes (éventuellement masquées) des données stockées dans les modules. On le rappelle, les éléments stockés dans les modules sont ceux de la liste dans laquelle on recherche la correspondance avec l'élément de l'étiquette 500. Chaque module fournit en sortie un bit de correspondance 503, ..., 504 (nommés « hit_O », ..., « hit_N-1 ») dont la valeur est « 1 » si une correspondance a été trouvée et « O» si aucune correspondance n'a été trouvée dans le module. Chaque module fournit également un mot 505, ..., 506 (nommés « hit_addr_O », ..., « hit_addr_N-1 ») représentant l'adresse du premier élément dans le module à laquelle la correspondance a été trouvée. Les bits de correspondance fournis par les modules forment ainsi un 10 vecteur de résultat qui est donné en entrée à un module de ré-ordonnancement 507. On le rappelle, une correspondance peut être trouvée dans plusieurs modules, mais l'on ne souhaite conserver que la première. L'ordre dans lequel les bits de correspondance sont classés dans le vecteur de résultat est fixe alors que l'allocation des modules est dynamique. 15 Ainsi, le module 507donne en sortie, une liste de couples (V[K]&hit_[K] , T[K]) où T[K] et V[K] proviennent d'une liste de priorité telle que déjà décrite ci-avant en référence à la figure 3A d'un module 508 de gestion de liste de priorité. Dans cette liste de priorité, T[K] = Q si le module TCAM (TCAMQ) d'index Q a la priorité K dans la liste. 20 Cette liste ordonnée de couples permet à un module de sélection 509 de sélectionner le premier module TCAM de la liste vérifiant V[K] = hit_K = 1, c'est-à-dire le module TCAM de plus haute priorité, valide (V[K] = 1) et dans lequel une correspondance a été trouvée (hit_K = 1). Les modules 507 et 509 peuvent par exemple être réalisés au moyen 25 d'étages de multiplexeurs, log2(N+1) étages pour le module 507 et log2(N) étages pour le module 509 (10g2 représentant le logarithme de base 2). Il s'agit ici d'une mesure pouvant être généralisée à d'autres éléments de traitement du système. Ces éléments peuvent être réalisés au moyen d'étages de multiplexeurs dont le nombre (d'étages) peut être de l'ordre de log2(N), N étant 30 le nombre de TCAM utilisées (10g2 représentant le logarithme de base 2). Dans un exemple, on suppose que des correspondances sont trouvées dans les modules TCAM2 et TCAM5 (comme illustré par la figure 3A).
En prenant l'exemple d'un vecteur de résultat avec des positions de 0 à 31 de gauche à droite (de manière générale, dans l'architecture matérielle, la convention est inverse, comme représenté dans la figure 5) celui-ci a pour six premiers bits 0, 0, 1, 0, 0, 1, 0, ... Le module de ré-ordonnancement produit les couples suivants (en prenant les priorités schématisées dans la figure 3) : <1,5>, <1,2>, <0,4>, <0,10>, ... (chaque couple est de la forme <V[ K] & h it_[ K] ,T[ K]>). Le module 509 choisit le premier élément de cette liste (ou vecteur de couples) avec V[K]=hit_K=1, c'est-à-dire dans cet exemple, le couple <1,5>.
De retour à la figure 5, lorsque le module TCAM a été sélectionné par le module 509, le compteur associé à ce module TCAM est décrémenté. Ainsi, le module 509 fournit l'index de ce module TCAM à un module 510 de mise à jour. Ce module de mise à jour envoie un signal de décrémentation vers un module 511 de gestion de liste de priorité telle que décrite en référence à la figure 4 pour décrémenter la valeur de comptage associée au module TCAM sélectionné par le module 507. En réponse, le module 511 peut indiquer au module 510 que la valeur de comptage a atteint la valeur « 0 ». Dans ce cas, le module 510 envoie un signal de décalage vers un module 512 de décalage afin de placer le module TCAM en question (celui sélectionné par le module 509 et dont la valeur de comptage a atteint « 0 ») en queue de liste dans le module 508 et de décaler toutes les lignes de la liste comme décrit ci-avant en référence à la figure 3B. Ce signal de décalage indique aussi qu'il faut invalider le module en plaçant son bit de validité à « 0 ». Le module 512 se charge alors d'envoyer les signaux nécessaires au module 508 pour opérer ce décalage et cette invalidation. Dans l'exemple donné ci-avant où l'on a supposé que des correspondances sont trouvées dans les modules TCAM2 et TCAM5, on suppose en outre qu'il faut décrémenter le compteur du module TCAM5 car sa valeur de comptage a atteint « 0 ».
De retour à la figure 5, une fois le module TCAM sélectionné par le module de sélection 509, il convient de délivrer la valeur qu'elle stocke.
Ainsi, l'index du module TCAM est fourni à un multiplexeur 513 en tant que signal de sélection. Le multiplexeur reçoit par ailleurs en entrée les mots 505, ..., 506 (« hit_addr_O », ..., « hit_addr_N-1 ») délivrés par les modules TCAM 501, ..., 502.
Le multiplexeur fournit ainsi le mot correspondant au module TCAM indiqué par le module de sélection 509 à une module de lecture 514. Le module de lecture se charge de lire la valeur stockée dans la TCAM indiquée par le module 509 (il reçoit le même signal de sélection que le module 513) et d'invalider la ligne de mémoire stockant cette valeur.
L'invalidation se fait par exemple en mettant la ligne à zéro. L'invalidation peut aussi se faire en mettant un bit de validité associé à la ligne à zéro. La présente invention a été décrite et illustrée dans la présente description détaillée en référence aux figures jointes. Toutefois la présente invention ne se limite pas aux formes de réalisation présentées. D'autres variantes et modes de réalisation peuvent être déduits et mis en oeuvre par la personne du métier à la lecture de la présente description et des figures annexées. Dans les revendications, le terme "comporter" n'exclut pas d'autres éléments ou d'autres étapes. L'article indéfini « un » n'exclut pas le pluriel. Un seul processeur ou plusieurs autres unités peuvent être utilisées pour mettre en oeuvre l'invention. Les différentes caractéristiques présentées et/ou revendiquées peuvent être avantageusement combinées. Leur présence dans la description ou dans des revendications dépendantes différentes, n'exclut pas en effet la possibilité de les combiner. Les signes de référence ne sauraient être compris comme limitant la portée de l'invention.

Claims (17)

  1. REVENDICATIONS1. Dispositif de recherche de correspondance d'élément dans une liste, le dispositif comportant: - une pluralité de modules (501, 502) de mémoire adressable par contenu configurés pour comparer en parallèle un élément d'entrée avec leur contenu, ladite liste étant représentée par la concaténation du contenu valide desdites mémoires selon un ordre défini par une liste de priorité, - un module (509) de de détermination, dans ladite liste de priorité, du premier module lequel l'élément d'entrée correspond à un élément stocké dans ledit module, et - un module (514) de lecture du premier élément dudit module déterminé correspondant à l'élément d'entrée.
  2. 2. Dispositif selon la revendication 1, comportant en outre : - un module (514) d'invalidation dudit premier élément, et - un module (510) de mise à jour d'un compteur d'éléments associé à ladite mémoire déterminée, ledit compteur d'élément représentant le nombre d'éléments stockés valides dans ladite mémoire.
  3. 3. Dispositif selon la revendication 2, dans lequel ledit module de mise à jour est en outre configuré pour lancer une mise à jour, lorsqu'un un module est vide, de ladite liste de priorité, ladite mise à jour permettant de placer ledit module à un niveau de priorité inférieur à celui des modules non vides.
  4. 4. Dispositif selon la revendication 2 ou 3, dans lequel un indice de priorité associé auxdites mémoires est mis à jour.
  5. 5. Dispositif selon la revendication 4, dans lequel ladite mise à jour comporte un décalage dudit module et des modules suivants dans la liste.
  6. 6. Dispositif selon l'une des revendications 1 à 5, dans lequel ladite liste de priorité comporte un paramètre pour chaque module, indiquant si chaque module est vide ou non.
  7. 7. Dispositif selon la revendication 6, dans lequel les modules sont classés en fonction dudit paramètre.
  8. 8. Dispositif selon l'une des revendications 1 à 7, dans lequel l'ordre des modules dans ladite liste de priorité reflète un ordre d'allocation.
  9. 9. Dispositif selon l'une des revendications 1 à 8, dans lequel ladite recherche de correspondance est effectuée par association d'une étiquette dudit élément avec une étiquette d'un élément de ladite liste.
  10. 10. Dispositif selon l'une des revendications 1 à 9, dans lequel lesdits modules sont des modules à mémoire adressable par contenu ternaires.
  11. 11. Dispositif selon l'une des revendications précédentes, comportant, pour traiter une liste de SxN éléments, N modules de mémoire 20 adressable par contenu, chaque module pouvant contenir S éléments.
  12. 12. Dispositif selon l'une des revendications précédentes, comportant au moins un module de traitement réalisé à partir de log2(N) étages de multiplexeurs, N étant le nombre de modules de mémoire adressable par 25 contenu.
  13. 13. Procédé de recherche de correspondance d'élément dans une liste, le procédé comportant les étapes suivantes : - de comparaison parallèle d'un élément d'entrée avec le contenu 30 d'une pluralité de modules de mémoire adressable par contenu, ladite liste étant représentée par la concaténation du contenu valide desdites mémoires selon un ordre défini par une liste de priorité,- de détermination, dans ladite liste de priorité, du premier module lequel l'élément d'entrée correspond à un élément stocké dans ledit module, - de lecture du premier élément dudit module déterminé correspondant à l'élément d'entrée. 5
  14. 14. Procédé selon la revendication 13, comportant en outre les étapes suivantes: - d'invalidation dudit premier élément, et - de mise à jour d'un compteur d'éléments associé à ladite mémoire 10 déterminée, ledit compteur d'élément représentant le nombre d'éléments stockés valides dans ladite mémoire.
  15. 15. Procédé selon la revendication 14, comportant en outre une étape de mise à jour, lorsqu'un un module est vide, de ladite liste de priorité, 15 ladite mise à jour permettant de placer ledit module à un niveau de priorité inférieur à celui des modules non vides.
  16. 16. Procédé selon la revendication 14 ou 15, dans lequel un indice de priorité associée audites mémoires est mis à jour.
  17. 17. Procédé selon la revendication 16, dans lequel ladite mise à jour comporte un décalage dudit module et des modules suivants dans la liste. 20 25
FR1455394A 2014-06-13 2014-06-13 Recherche de correspondance d'element dans une liste Active FR3022372B1 (fr)

Priority Applications (6)

Application Number Priority Date Filing Date Title
FR1455394A FR3022372B1 (fr) 2014-06-13 2014-06-13 Recherche de correspondance d'element dans une liste
PCT/FR2015/051484 WO2015189505A1 (fr) 2014-06-13 2015-06-04 Recherche de correspondance d'élément dans une liste
BR112016029056A BR112016029056A2 (pt) 2014-06-13 2015-06-04 pesquisa de correspondência de elemento em uma lista
US15/318,476 US20170124222A1 (en) 2014-06-13 2015-06-04 Item match searching in a list
EP15733800.5A EP3155526A1 (fr) 2014-06-13 2015-06-04 Recherche de correspondance d'élément dans une liste
JP2016572727A JP6495343B2 (ja) 2014-06-13 2015-06-04 リスト内でのアイテム一致の検索

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1455394A FR3022372B1 (fr) 2014-06-13 2014-06-13 Recherche de correspondance d'element dans une liste

Publications (2)

Publication Number Publication Date
FR3022372A1 true FR3022372A1 (fr) 2015-12-18
FR3022372B1 FR3022372B1 (fr) 2016-06-24

Family

ID=52003896

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1455394A Active FR3022372B1 (fr) 2014-06-13 2014-06-13 Recherche de correspondance d'element dans une liste

Country Status (6)

Country Link
US (1) US20170124222A1 (fr)
EP (1) EP3155526A1 (fr)
JP (1) JP6495343B2 (fr)
BR (1) BR112016029056A2 (fr)
FR (1) FR3022372B1 (fr)
WO (1) WO2015189505A1 (fr)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7051078B1 (en) * 2000-07-10 2006-05-23 Cisco Technology, Inc. Hierarchical associative memory-based classification system
US7245623B1 (en) * 2002-01-08 2007-07-17 Cisco Technology, Inc. System and method using hierarchical parallel banks of associative memories
US20080183958A1 (en) * 2007-01-26 2008-07-31 Cheriton David R Hierarchical immutable content-addressable memory processor
US20120134360A1 (en) * 2010-11-30 2012-05-31 Cheng-Wei Du Device and method for processing network packet

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5455825A (en) * 1994-04-28 1995-10-03 Mitsubishi Electric Research Laboratories Tag-based scheduling system for digital communication switch
JP3623082B2 (ja) * 1997-09-26 2005-02-23 日本電信電話株式会社 連想メモリモジュール
US6853640B1 (en) * 1999-11-19 2005-02-08 Nippon Telegraph And Telephone Corporation Data selection apparatus
JP2001184871A (ja) * 1999-12-28 2001-07-06 Toshiba Corp 連想メモリおよびデータバッファ管理装置
US7107391B2 (en) * 2002-12-30 2006-09-12 Micron Technology, Inc. Automatic learning in a CAM
US8170041B1 (en) * 2005-09-14 2012-05-01 Sandia Corporation Message passing with parallel queue traversal
US8359428B1 (en) * 2007-10-02 2013-01-22 Sandia Corporation Associative list processing unit
US20150039823A1 (en) * 2013-07-30 2015-02-05 Mediatek Inc. Table lookup apparatus using content-addressable memory based device and related table lookup method thereof

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7051078B1 (en) * 2000-07-10 2006-05-23 Cisco Technology, Inc. Hierarchical associative memory-based classification system
US7245623B1 (en) * 2002-01-08 2007-07-17 Cisco Technology, Inc. System and method using hierarchical parallel banks of associative memories
US20080183958A1 (en) * 2007-01-26 2008-07-31 Cheriton David R Hierarchical immutable content-addressable memory processor
US20120134360A1 (en) * 2010-11-30 2012-05-31 Cheng-Wei Du Device and method for processing network packet

Also Published As

Publication number Publication date
BR112016029056A2 (pt) 2017-08-22
JP6495343B2 (ja) 2019-04-03
JP2017525079A (ja) 2017-08-31
US20170124222A1 (en) 2017-05-04
FR3022372B1 (fr) 2016-06-24
EP3155526A1 (fr) 2017-04-19
WO2015189505A1 (fr) 2015-12-17

Similar Documents

Publication Publication Date Title
CN107395659B (zh) 一种业务受理及共识的方法及装置
RU2009140391A (ru) Идентификация и сопоставление сообщений электронной почты
EP2783500A1 (fr) Procédé de traitement d&#39;une requête dans un réseau de communication centré sur les informations
FR2489578A1 (fr) Structure d&#39;organisation pour memoire tampon
FR2844613A1 (fr) Systeme pour le transfert rapide des donnees
FR2824160A1 (fr) Conteneur generique configurable de facon dynamique
US10133762B2 (en) Technology for providing content of a publish-subscribe topic tree
CN102308296A (zh) 哈希计算处理方法及装置
FR2645986A1 (fr) Procede pour accelerer les acces memoire d&#39;un systeme informatique et systeme pour la mise en oeuvre du procede
EP0878758B1 (fr) Dispositif de tri d&#39;éléments de données à arbre binaire et espaceur ATM comportant un tel dispositif
FR2902954A1 (fr) Systeme et procede de stockage d&#39;un inventaire des systemes et/ou services presents sur un reseau de communication
EP2666092B1 (fr) Systeme multi-coeurs et procede de coherence de donnees
US20160314155A1 (en) Data integration pipeline
FR3022372A1 (fr) Recherche de correspondance d&#39;element dans une liste
US9851902B2 (en) Searching memory for a search key
US20090063417A1 (en) Index attribute subtypes for LDAP entries
CN110659353A (zh) 搜索方法及装置
US11921690B2 (en) Custom object paths for object storage management
EP3403218B1 (fr) Dispositif de selection et description de points d&#39;interets dans une sequence d&#39;images, par exemple pour l&#39;appariement de points d&#39;interets
EP0306357A1 (fr) Unité de gestion d&#39;accès en mémoire, à identifiants logiques invariants, notamment pour la gestion de bases de données
FR3027434A1 (fr) Procede d&#39;identification unique d&#39;articles et de gestion de cette identification multi operateurs
EP2439659A1 (fr) Procédé de mise à jour d&#39;un index inversé et serveur mettant en oeuvre ce procédé
US20240289556A1 (en) Active communication recommendations
EP0878939A1 (fr) Espaceur de cellules ATM
CN117874786A (zh) 芯片数据加密方法、解密方法、装置和计算机设备

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20151218

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9

TQ Partial transmission of property

Owner name: LE COMMISSARIAT A L'ENERGIE ATOMIQUE ET AUX EN, FR

Effective date: 20221031

Owner name: BULL SAS, FR

Effective date: 20221031

PLFP Fee payment

Year of fee payment: 10

PLFP Fee payment

Year of fee payment: 11