EP3155526A1 - Recherche de correspondance d'élément dans une liste - Google Patents
Recherche de correspondance d'élément dans une listeInfo
- Publication number
- EP3155526A1 EP3155526A1 EP15733800.5A EP15733800A EP3155526A1 EP 3155526 A1 EP3155526 A1 EP 3155526A1 EP 15733800 A EP15733800 A EP 15733800A EP 3155526 A1 EP3155526 A1 EP 3155526A1
- Authority
- EP
- European Patent Office
- 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.)
- Ceased
Links
- 230000015654 memory Effects 0.000 claims abstract description 36
- 238000000034 method Methods 0.000 claims description 15
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90339—Query processing by using parallel associative memories or content-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement 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)
- 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
Description
Claims
Applications Claiming Priority (2)
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 |
Publications (1)
Publication Number | Publication Date |
---|---|
EP3155526A1 true EP3155526A1 (fr) | 2017-04-19 |
Family
ID=52003896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP15733800.5A Ceased EP3155526A1 (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) |
Family Cites Families (12)
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 | 連想メモリおよびデータバッファ管理装置 |
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 |
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 |
CN103473181B (zh) * | 2007-01-26 | 2017-06-13 | 英特尔公司 | 分级式不可变内容可寻址存储器处理器 |
US8359428B1 (en) * | 2007-10-02 | 2013-01-22 | Sandia Corporation | Associative list processing unit |
CN102480424A (zh) * | 2010-11-30 | 2012-05-30 | 瑞昱半导体股份有限公司 | 处理网络封包的装置及方法 |
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 |
-
2014
- 2014-06-13 FR FR1455394A patent/FR3022372B1/fr active Active
-
2015
- 2015-06-04 BR BR112016029056A patent/BR112016029056A2/pt not_active Application Discontinuation
- 2015-06-04 JP JP2016572727A patent/JP6495343B2/ja not_active Expired - Fee Related
- 2015-06-04 EP EP15733800.5A patent/EP3155526A1/fr not_active Ceased
- 2015-06-04 US US15/318,476 patent/US20170124222A1/en not_active Abandoned
- 2015-06-04 WO PCT/FR2015/051484 patent/WO2015189505A1/fr active Application Filing
Non-Patent Citations (2)
Title |
---|
None * |
See also references of WO2015189505A1 * |
Also Published As
Publication number | Publication date |
---|---|
JP6495343B2 (ja) | 2019-04-03 |
US20170124222A1 (en) | 2017-05-04 |
BR112016029056A2 (pt) | 2017-08-22 |
FR3022372A1 (fr) | 2015-12-18 |
JP2017525079A (ja) | 2017-08-31 |
WO2015189505A1 (fr) | 2015-12-17 |
FR3022372B1 (fr) | 2016-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2783500B1 (fr) | Procédé de traitement d'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 | |
EP0935781A1 (fr) | Procede d'allocation de memoire dans un systeme de traitement de l'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'informations de routage ip | |
CN114780537A (zh) | 流表存储及报文转发方法、装置、计算设备及介质 | |
FR3045183A1 (fr) | Procede de prediction d'une donnee a precharger dans une memoire cache | |
CN102308296A (zh) | 哈希计算处理方法及装置 | |
FR2645986A1 (fr) | Procede pour accelerer les acces memoire d'un systeme informatique et systeme pour la mise en oeuvre du procede | |
EP0878758B1 (fr) | Dispositif de tri d'éléments de données à arbre binaire et espaceur ATM comportant un tel dispositif | |
FR2902954A1 (fr) | Systeme et procede de stockage d'un inventaire des systemes et/ou services presents sur un reseau de communication | |
US20220231945A1 (en) | Message matching table lookup method, system, storage medium, and terminal | |
EP3155526A1 (fr) | Recherche de correspondance d'élément dans une liste | |
EP2666092A1 (fr) | Systeme multi-coeurs et procede de coherence de donnees | |
EP2227755A1 (fr) | Procede d'analyse d'un contenu multimedia, produit programme d'ordinateur et dispositif d'analyse correspondants | |
EP1175122A1 (fr) | Dispositif de gestion de mémoire permettant l'inscription de blocs de données par substitution | |
WO2016095450A1 (fr) | Procédé de mise à jour d'élément, dispositif, et support de stockage, basés sur une recherche de route | |
US20090063417A1 (en) | Index attribute subtypes for LDAP entries | |
CN110659353A (zh) | 搜索方法及装置 | |
EP3403218B1 (fr) | Dispositif de selection et description de points d'interets dans une sequence d'images, par exemple pour l'appariement de points d'interets | |
EP1052573B1 (fr) | Procédé et dispositif pour commander l'ordre de départ d'informations ou d'objets stockés temporairement |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE |
|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE |
|
17P | Request for examination filed |
Effective date: 20170112 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
AX | Request for extension of the european patent |
Extension state: BA ME |
|
DAV | Request for validation of the european patent (deleted) | ||
DAX | Request for extension of the european patent (deleted) | ||
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: EXAMINATION IS IN PROGRESS |
|
17Q | First examination report despatched |
Effective date: 20190425 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: EXAMINATION IS IN PROGRESS |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R003 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION HAS BEEN REFUSED |
|
18R | Application refused |
Effective date: 20210314 |