WO2015189505A1 - Recherche de correspondance d'élément dans une liste - Google Patents

Recherche de correspondance d'élément dans une liste Download PDF

Info

Publication number
WO2015189505A1
WO2015189505A1 PCT/FR2015/051484 FR2015051484W WO2015189505A1 WO 2015189505 A1 WO2015189505 A1 WO 2015189505A1 FR 2015051484 W FR2015051484 W FR 2015051484W WO 2015189505 A1 WO2015189505 A1 WO 2015189505A1
Authority
WO
WIPO (PCT)
Prior art keywords
module
list
modules
priority
content
Prior art date
Application number
PCT/FR2015/051484
Other languages
English (en)
Inventor
Ghassan Chehaibar
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 EP15733800.5A priority Critical patent/EP3155526A1/fr
Priority to US15/318,476 priority patent/US20170124222A1/en
Priority to JP2016572727A priority patent/JP6495343B2/ja
Priority to BR112016029056A priority patent/BR112016029056A2/pt
Publication of WO2015189505A1 publication Critical patent/WO2015189505A1/fr

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

Definitions

  • the present invention relates to the field of computing. More particularly, it relates to the implementation of the search for elements in lists in a material way.
  • each message has a label that must be compared to the message label in the list.
  • the labels of the messages of the list are possibly masked so that the comparison of the labels is done on a reduced number of bits.
  • the incoming message is routed to the storage location and the corresponding item in the list is deleted.
  • the list is then updated.
  • the list of expected messages is therefore a dynamically modified list with items that can be removed, when a corresponding message arrives or can be added when a new message is expected.
  • This type of search in a list can be implemented in a software way, with list routes, but this type of implementation is very consumer in computing resources.
  • the incoming message must be sequentially compared to all items in the list, the processing time is proportional to the list size.
  • the software implementation may delay the system too heavily.
  • Parallel matching searches are however complex because, in the context of MPI interfaces for example, only the first element corresponding to the incoming message must be returned. The notion of order of the elements of the list must be preserved, even in parallel correspondence searches.
  • the present invention falls within this framework.
  • a first aspect of the invention relates to an item matching search device in a list, the device comprising:
  • a plurality of content-addressable memory modules configured to compare in parallel an input element with their content, said list being represented by the concatenation of the valid content of said memories according to an order defined by a priority list,
  • a device makes it possible to perform item matching searches in a reduced number of clock cycles in a computer system.
  • searching for correspondence of an item in an item list can be done in less than 10 cycles.
  • this device is an associative list processing unit (ALPU acronym for "Associative List Processing Unit").
  • the device further comprises: a module for invalidating said first element, and
  • said update module is further configured to initiate an update, when a module is empty, of said priority list, said update making it possible to place said module at a level of lower priority than non-empty modules.
  • a priority index associated with said memories is updated.
  • said update includes an offset of said module and subsequent modules in the list.
  • said priority list includes a parameter for each module, indicating whether each module is empty or not.
  • the modules are classified according to said parameter.
  • the order of the modules in said priority list reflects an allocation order.
  • said correspondence search is performed by associating a label of said element with a label of an element of said list.
  • said modules are memory modules addressable by ternary content.
  • the device can contain N memory modules addressable by content, each module can contain S elements.
  • each module can contain S elements.
  • at least one device processing module is made from log 2 (N) multiplexer stages (log 2 representing the base logarithm 2), where N is the number of addressable memory modules per content.
  • a processing unit is a reordering module, a selection module or the like.
  • a second aspect of the invention relates to a method of searching for element correspondence in a list, the method comprising the following steps:
  • the method may further comprise the following steps:
  • the method may further comprise an update step, when a module is empty, of said priority list, said update making it possible to place said module at a level of priority lower than that of non-empty modules.
  • a priority index associated with the memories is updated.
  • said update includes an offset of said module and subsequent modules in the list.
  • said priority list includes a parameter for each module, indicating whether each module is empty or not.
  • the modules are classified according to said parameter.
  • the order of the modules in said priority list reflects an allocation order.
  • said correspondence search is performed by associating a label of said element with a label of an element of said list.
  • said modules are ternary content addressable memory modules.
  • a third aspect of the invention relates to a computer program as well as a computer program product and a storage medium for such a program and product, allowing the implementation of a method according to the second aspect of the invention. invention.
  • FIG. 1 illustrates a general objective of embodiments of the invention
  • FIG. 2 illustrates the storage of a list in content-addressable memory modules according to embodiments
  • FIGS. 3A-3B illustrate the updating of a priority list according to embodiments
  • FIG. 4 illustrates a counting table according to embodiments
  • FIG. 5 illustrates a hardware implementation according to embodiments.
  • a list 100 comprises a certain number of elements 101, 102, 103 etc. ordered according to respective indexes "0", "1", “2” etc.
  • Each element of the list comprises, like the element 101, data 104 ("0"), a label 105 ("TAG”) and possibly a mask 106 ("MSK"). It is a question of determining in this list, the first element corresponding to an input element 107 comprising data 108 and a label 109.
  • the correspondence is made by comparison between the label of the input element and those of the elements of the list.
  • the comparison can be done with the masks of the elements of the list. Comparing with the masks, the correspondence can be done on a smaller number of bits.
  • memory modules addressable by content are used (CAM, acronym for “Content Adressable Memory”).
  • CAM Concept Adressable Memory
  • TCAM ternary addressable memory modules
  • the list 200 (“LIST”) to be searched is stored in a set of modules 201 ("TCAM0”), 202 ("TCAM1"), 203 (“TCAM31”).
  • the list 200 comprises 1024 elements distributed in 32 modules of 32 elements.
  • the modules are initially allocated in an initial order, for example according to their index value.
  • the module 201 (“TCAM0"), index “0” is allocated first, followed by module 202 (“TCAM1”), index “1” and so on until module 203 (“TCAM31 ”) Index” 31 ".
  • Another initial allocation order may be provided.
  • the line of the module in which it is stored is invalidated. For example, a validity bit is updated to indicate that the line is "empty". For example again, the line is set to zero.
  • N TCAM N TCAM
  • a priority list (not shown) lists the modules and allows them to be ordered to allow the initial list to be correctly reconstructed.
  • FIG. 3A illustrates a priority list 300.
  • a first column 301 includes the index of the modules, in their order of priority.
  • V validity parameter
  • the index module "5" (TCAM5) is emptied, that is to say that all its lines are invalidated (or deleted) its validity parameter V goes to "0" and all 300 list lines are shifted as shown in Figure 3B.
  • the index module "2" goes to the top of the list and the index module "5" passes in unallocated module at the end of the priority list. Modules that are emptied during the match search process can be in any position in the priority list based on the matches found.
  • a counting table 400 is updated according to the inscriptions and or deletion (or invalidation) in the modules.
  • the table 400 comprises a column 401 listing the modules, for example according to their index, the index module "0" (TCAM0) being listed first, followed by index module “1” (TCAM1) etc.
  • a second column has a count value for each module, representing the number of valid rows in the module.
  • the index module "0" (TCAMO) comprises 20 valid lines, that is to say that 20 elements of the list in which the correspondence is sought are stored in this module.
  • the index module "1" (TCAM1) has 31 valid lines.
  • the index module “3” (TCAM3) has 0 valid lines, that is to say it is empty and therefore available for allocation.
  • the counter of a module is incremented. Whenever a match is found between an incoming element and an element of the list, this element of the list is deleted and the counter of the module in which it was stored is decremented.
  • the search for correspondence between an input element and the elements of a list can be implemented in an associative list processing unit (ALPU), for example in a router implementing an MPI interface.
  • APU associative list processing unit
  • FIG. 5 a hardware implementation for correspondence search according to embodiments is described.
  • This implementation can for example be made in the form of an ASIC (acronym for "Application-Specific Integrated Circuit").
  • a tag 500 (“hdr") of an element is provided in parallel with a series of content addressable memory modules.
  • TCAM modules N ternary modules
  • TCAM 0 TCAM 0
  • This label is thus compared the labels (possibly hidden) of the data stored in the modules. It is recalled that the elements stored in the modules are those of the list in which correspondence with the element of the tag 500 is sought.
  • Each module outputs a bit of correspondence 503,
  • Each module also provides a word 505, 506 (named “hit_addr_0", “hit_addr_N-1") representing the address of the first item in the module to which the match was found.
  • the correspondence bits provided by the modules thus form a result vector which is inputted to a reordering module 507. It is recalled that a correspondence can be found in several modules, but it is desired to keep only the first.
  • the module 507 outputs, a list of pairs (V [K] & hit_ [K], T [K]) where T [K] and V [K] come from a priority list as already described above. before with reference to FIG. 3A of a priority list management module 508.
  • T [K] Q if the index TCAM (TCAMQ) module has the priority K in the list.
  • the modules 507 and 509 can for example be made by means of multiplexer stages, log 2 (N + 1) stages for the module 507 and log 2 (N) stages for the module 509 (log 2 representing the base logarithm 2 ).
  • log 2 (N + 1) stages for the module 507 and log 2 (N) stages for the module 509 log 2 representing the base logarithm 2 ).
  • This is a measure that can be generalized to other system processing elements. These elements can be realized by means of stages of multiplexers whose number (of stages) can be of the order of log 2 (N), N being the number of TCAM used (log 2 representing the logarithm of base 2) .
  • the reordering module produces the following pairs (taking the schematic priorities in figure 3): ⁇ 1, 5>, ⁇ 1 , 2>, ⁇ 0.4>, ⁇ 0.10>, ... (each pair has the form ⁇ V [K] & hit_ [K], T [K]>).
  • the module 509 provides the index of this TCAM module to an update module 510.
  • This update module sends a decrement signal to a priority list management module 51 1 as described with reference to FIG. 4 in order to decrement the count value associated with the module TCAM selected by the module 507.
  • the module 51 1 may indicate to the module 510 that the count value has reached the value "0".
  • the module 510 sends an offset signal to an offset module 512 in order to place the TCAM module in question (that selected by the module 509 and whose count value has reached "0") at the end of the list in the module 508 and shift all the lines of the list as described above with reference to Figure 3B.
  • This offset signal also indicates that the module must be invalidated by setting its validity bit to "0".
  • the module 512 is then responsible for sending the necessary signals to the module 508 to operate this shift and this invalidation.
  • the index of the TCAM module is supplied to a multiplexer 513 as a selection signal.
  • the multiplexer also receives as input the words 505, 506 ("hit_addr_0", “hit_addr_N-1") delivered by the TCAM modules 501, ..., 502.
  • the multiplexer thus provides the word corresponding to the TCAM module indicated by the selection module 509 to a reading module 514.
  • the read module is responsible for reading the value stored in the TCAM indicated by the module 509 (it receives the same selection signal as the module 513) and for invalidating the memory line storing this value.
  • the invalidation is done for example by setting the line to zero.
  • the invalidation can also be done by putting a validity bit associated with the line to zero.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software 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 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

Recherche de correspondance d'élément dans une liste
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 de « Message Passing Interface » en anglais) nécessite la mise en œuvre massive de recherche d'éléments dans des listes.
Il s'agit par exemple, de lister les messages attendus par un nœud d'un réseau de communication avec une indication sur son lieu de stockage et de comparer tous les messages entrants du nœud à ceux de la liste. Ainsi, 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 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 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 attendu.
Ce type de recherche dans une liste peut être mis en œuvre 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é à tous les éléments de la liste, le temps de traitement est proportionnel à la taille de liste. Dans les applications mettant en œuvre 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 (log2 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 œuvre 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 (« TCAM0 »), 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 (« TCAM0 »), 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 éléments, on utilise par exemple N 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 » (TCAM0) é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 œuvre dans une unité de traitement de liste associative (ALPU), par exemple dans un routeur mettant en œuvre une interface MPI.
Dans ce type d'interface, les messages arrivant à un nœud 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 nœud, 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 0 », « hit_N-1 ») dont la valeur est « 1 » si une correspondance a été trouvée et « 0 » si aucune correspondance n'a été trouvée dans le module. Chaque module fournit également un mot 505, 506 (nommés « hit_addr_0 », « 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 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. 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.
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 d'étages de multiplexeurs, log2(N+1 ) étages pour le module 507 et log2(N) étages pour le module 509 (log2 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 le nombre de TCAM utilisées (log2 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]&hit_[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 51 1 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 51 1 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_0 », « 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 œuvre 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 œuvre 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

REVENDICATIONS
1 . 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. 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. 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. Dispositif selon la revendication 2 ou 3, dans lequel un indice de priorité associé auxdites mémoires est mis à jour.
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. 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. Dispositif selon la revendication 6, dans lequel les modules sont classés en fonction dudit paramètre.
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. 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. Dispositif selon l'une des revendications 1 à 9, dans lequel lesdits modules sont des modules à mémoire adressable par contenu ternaires.
1 1 . Dispositif selon l'une des revendications précédentes, comportant, pour traiter une liste de SxN éléments, N modules de mémoire adressable par contenu, chaque module pouvant contenir S éléments.
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 contenu.
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 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.
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 déterminée, ledit compteur d'élément représentant le nombre d'éléments stockés valides dans ladite mémoire.
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é, ladite mise à jour permettant de placer ledit module à un niveau de priorité inférieur à celui des modules non vides.
16. Procédé selon la revendication 14 ou 15, dans lequel un indice de priorité associée audites mémoires est mis à jour.
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.
PCT/FR2015/051484 2014-06-13 2015-06-04 Recherche de correspondance d'élément dans une liste WO2015189505A1 (fr)

Priority Applications (4)

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

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
WO2015189505A1 true WO2015189505A1 (fr) 2015-12-17

Family

ID=52003896

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2015/051484 WO2015189505A1 (fr) 2014-06-13 2015-06-04 Recherche de correspondance d'élément 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
EP3155526A1 (fr) 2017-04-19
JP2017525079A (ja) 2017-08-31
BR112016029056A2 (pt) 2017-08-22
FR3022372A1 (fr) 2015-12-18
JP6495343B2 (ja) 2019-04-03
US20170124222A1 (en) 2017-05-04
FR3022372B1 (fr) 2016-06-24

Similar Documents

Publication Publication Date Title
EP2783500B1 (fr) Procédé de traitement d&#39;une requête dans un réseau de communication centré sur les informations
RU2452023C2 (ru) Идентификация и сопоставление сообщений электронной почты
CN113766035A (zh) 一种业务受理及共识的方法及装置
US6490279B1 (en) Fast data base research and learning apparatus
WO1999012099A1 (fr) Procede d&#39;allocation de memoire dans un systeme de traitement de l&#39;information multiprocesseur
FR2824160A1 (fr) Conteneur generique configurable de facon dynamique
US20090265303A1 (en) Identifying superphrases of text strings
US10133762B2 (en) Technology for providing content of a publish-subscribe topic tree
WO2018068524A1 (fr) Établissement de table de routage et procédé, dispositif et support d&#39;informations de routage ip
WO2023179433A1 (fr) Procédé et appareil de stockage de table de flux, procédé et appareil de transfert de message, dispositif informatique et support
FR3045183A1 (fr) Procede de prediction d&#39;une donnee a precharger dans une memoire cache
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
US20220231945A1 (en) Message matching table lookup method, system, storage medium, and terminal
WO2015189505A1 (fr) Recherche de correspondance d&#39;élément dans une liste
EP1939767A1 (fr) Construction d&#39;un fichier de données de cooccurrence de grande taille
EP1175122A1 (fr) Dispositif de gestion de mémoire permettant l&#39;inscription de blocs de données par substitution
EP2666092B1 (fr) Systeme multi-coeurs et procede de coherence de donnees
WO2016095450A1 (fr) Procédé de mise à jour d&#39;élément, dispositif, et support de stockage, basés sur une recherche de route
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
EP1052573B1 (fr) Procédé et dispositif pour commander l&#39;ordre de départ d&#39;informations ou d&#39;objets stockés temporairement
FR2496314A1 (fr) Procede et dispositif pour permettre l&#39;echange d&#39;information entre des systemes de traitement d&#39;information a vitesses de traitement differentes
EP2439659A1 (fr) Procédé de mise à jour d&#39;un index inversé et serveur mettant en oeuvre ce procédé
EP2556435A1 (fr) Mémoire cache segmentée
CN116244402A (zh) 基于双数组ac自动机的匹配方法和装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15733800

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2016572727

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 15318476

Country of ref document: US

REG Reference to national code

Ref country code: BR

Ref legal event code: B01A

Ref document number: 112016029056

Country of ref document: BR

REEP Request for entry into the european phase

Ref document number: 2015733800

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2015733800

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 112016029056

Country of ref document: BR

Kind code of ref document: A2

Effective date: 20161212