WO2005024659A1 - Dispositif de memoire trie a mecanisme de pipeline circulaire - Google Patents

Dispositif de memoire trie a mecanisme de pipeline circulaire Download PDF

Info

Publication number
WO2005024659A1
WO2005024659A1 PCT/FR2003/002508 FR0302508W WO2005024659A1 WO 2005024659 A1 WO2005024659 A1 WO 2005024659A1 FR 0302508 W FR0302508 W FR 0302508W WO 2005024659 A1 WO2005024659 A1 WO 2005024659A1
Authority
WO
WIPO (PCT)
Prior art keywords
analysis
memory
data
cell
chain
Prior art date
Application number
PCT/FR2003/002508
Other languages
English (en)
Inventor
Joel Lattmann
Jacques Le Moal
Christian Duret
Original Assignee
France Telecom
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 France Telecom filed Critical France Telecom
Priority to PCT/FR2003/002508 priority Critical patent/WO2005024659A1/fr
Priority to EP03758229A priority patent/EP1702275A1/fr
Priority to AU2003274246A priority patent/AU2003274246A1/en
Publication of WO2005024659A1 publication Critical patent/WO2005024659A1/fr

Links

Classifications

    • 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
    • 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

Definitions

  • the present invention relates to associative memories, and in particular memories of the "TRIE" type (from the English verb "reTRIEve”).
  • the register assigned to the first section of the chain which is also the entry point of the table, is called a porter.
  • the data to be analyzed in the form of bit strings, that is to say to compare with the content of the TRIE memory, will also be called routes below.
  • the succession of chained cells associated with a route will be called path in the table.
  • Each register of the table will be said to be of order i> 0 if it is assigned to the (i + 1) th section of one or more stored routes.
  • the gatekeeper register is therefore of order 0.
  • the TRIE memory associates with each of its registers of order i> 0 a unique sequence of iK bits corresponding to the first iK bits of each route whose path in the table passes through a cell of the register in question.
  • TRIE can be presented as shown in Figure 1, where the underlined data is ' status.
  • the patterns 45A4, 45AB, 67 AB, 788A and 788BD are respectively represented in the table from there Figure 1 by the paths: T [0.4] - T [, 5] -> T [2, A] ⁇ T [3 , 4]; T [0.4] ⁇ T [1, 5] ⁇ T [2, A] ⁇ T [3, BJ; T [0.6] - »T [4.7] ⁇ T [5, A] ⁇ T [6, B]; T [0.7] ⁇ T [7.8] ⁇ T [8.8] - »T [9, A]; T [0.7] - »T [7.8J - T [8.8] -» T [9, B] ⁇ T [10, D].
  • the analysis rank i is set to 0 and the gate register R 0 is selected as register R.
  • the content C of the cell T [R, V j ] designated by the (i + 1) -th slice V j of the route in the selected order register i is read in step 2. If this cell contains a pointer for further analysis, as indicated in test 3 the value 1 of a bit FP (C) stored in the cell, the order register i + 1 designated by this pointer Ptr (C) is selected as register R for the next iteration in step 4, and rank i is incremented.
  • the status Ref (C) read in the cell concerned is returned to step 5 as a result of consulting the table.
  • This algorithm allows the analysis of routes comprising any number of sections.
  • the same table can be used for several types of analyzes by managing the data from different gatekeepers.
  • it allows to control the time of data analysis: the analysis of a number
  • N of K-bit slices will last at most N times the duration of an iteration.
  • the algorithm of FIG. 2 can be implemented very quickly by a hardware component managing access to the memory table.
  • a hardware component managing access to the memory table.
  • the packet header is analyzed on the fly by the component, and the status associated with a route designates for example an output port of the router to which the packets carrying a destination address conforming to this route must be routed.
  • Such a router can be mufti-protocols.
  • This first analysis provides a reference which, although corresponding to a logical end of analysis, can be materialized in the TRIE memory by a pointer for further analysis designating another gatekeeper register to be used to analyze the rest of the head.
  • the reference in question can also trigger timers or jumps of a determined number of bits in the analyzed header in order to be able to choose which portion of the header should then be analyzed.
  • a certain number of analyzes are generally executed successively, to trigger the operations required by the supported protocols according to the content of the headers.
  • One of these analyzes will relate to the destination address to perform the routing function proper.
  • TRIE tables Another advantage of the TRIE tables is that it allows routing constraints to be taken into account on the basis of the longest recorded path corresponding to a prefix of the route to be recognized, a constraint encountered in particular in the context of IP routing (see EP-A-0 989 502).
  • EP-A-1 030 493 describes a TRIE memory, the content of which includes, in addition to the references proper associated with the packet headers, a program consisting of the sequence of elementary analyzes to be carried out according to the different configurations taken into account by Memory. These sequences are fully programmable. The user can arbitrarily define, at each step of the process, which portion of the header should be examined and from which register of the TRIE memory, which provides great processing flexibility.
  • a TRIE memory can also be described in tree form, with nodes distributed in several successive stages corresponding to the analysis orders i previously mentioned. Each node of a stage i represents a decision to be made during the analysis of the (i + 1) th section of a route.
  • the root node of the tree corresponds to the gatekeeper register, the leaf nodes to the status, and the intermediate nodes to the registers designated by the further analysis pointers.
  • the tree representation makes it easy to visualize the paths.
  • the tree in FIG. 3 thus shows the paths recorded in the table in FIG. 1, the root and the intermediate nodes being represented by circles (registers) and the leaves by rectangles (status).
  • the tree representation makes it possible to design compression methods aimed at reducing the memory size required to implement a TRIE table. This reduction is particularly useful for rapid implementations of large tables using static memory circuits (SRAM).
  • SRAM static memory circuits
  • a hardware implementation in the form of a table where each register contains 2 K cells is ineffective in terms memory occupation since such a table has many empty cells, as shown in Figure 1.
  • the nodes close to the root have a number of valid descendants close the number of possible descendants (2 K ).
  • the average number of valid descendants of a given node decreases considerably and tends towards 1 (or 2 if we take into account a default status). In this case, there is only between 10% and 15% in the memory. useful cells.
  • - path compression (path compression) consists in aggregating at a node Y a stage i the non-empty nodes of stages i + 1 to i + j-1 (j _ ⁇ ) which are descendants of this node Y when each of these nodes of stages i to i + j-1 has a single non-empty descendant (register or status). See also US-A-6,014,659 or US-A-6,505,206.
  • the length of the slice to be analyzed in relation to the compressed node Y is multiplied by j; - level compression (“level compression”) consists in aggregating at a node Z of a stage i the non-empty nodes of stages i + 1 to i + j-1 (j _ ⁇ ) which are descendants of this node Z when each of these nodes of stages i + 1 to i + j-1 itself has at least one non-empty descendant (register or status).
  • the length of the slice to be analyzed in relation to the compressed node Z is multiplied by j; - the compression in extent (“width compression” or "pointer compression”) consists in eliminating the empty descendants of a given node.
  • a TRIE table is suitable for parallel processing in pipeline mode, as mentioned in the article "Putting Routing Tables in Silicon", by T-B. Pei et al., IEEE Network Magazine, January 1992, pages 42-50.
  • M the maximum number of stages in the tree
  • K the available memory space
  • N the available memory space
  • Each memory plane P: of level j (0 ⁇ j ⁇ N) is reserved for the nodes of one or more consecutive stages of the tree.
  • N operators operate in parallel with each a respective buffer containing a data chain to analyze.
  • This pipeline processing by the N operators increases the maximum rate of processing of the device.
  • N M (one stage per pipeline level)
  • the memory plane associated with the gatekeeper only processes one. single node while the following stages have many nodes and therefore require much larger memory plans, with wider address buses and access times increased accordingly.
  • the invention thus provides a TRIE memory device, comprising means for storing binary patterns associated with respective references, and means for analyzing data strings by successive K bit slices (K ⁇ 1) to extract one of the references during a match between an analyzed data string and a stored binary pattern associated with said reference.
  • the storage means comprise several successive stages of memory cells, and the analysis means have access to a cell of a stage i ⁇ O in relation to the analysis of the (i + 1) -th section of a data chain.
  • the invention enriches this structure by a circular pipeline mechanism according to which, N and p being two integers such that N ⁇ 2, p ⁇ 1 and Np is less than a maximum number of stages of the storage means, the storage means are divided into N separate memory areas of levels 0 to N-1, and the analysis means comprise at most N parallel analysis modules, each cell of a stage i ⁇ O belonging to the memory area of level
  • the TRIE memory is divided into N memory zones or planes to which the analysis means access in a circular manner.
  • Each zone contains stages or groups of stages distributed regularly in the tree associated with the TRIE memory, so that the memory can be shared in a relatively uniform manner between the N memory planes.
  • N 2
  • N 3
  • M the maximum number of stages of the tree
  • the increase in the speed of the device is maximum when the analysis means comprise N parallel modules.
  • a smaller number of analysis modules could be provided (at most only one), for example to reserve one or more pipeline levels for operations of inserting or deleting paths in the TRIE memory.
  • Another advantage of the device according to the invention is its compatibility with various compression schemes of the * TRIE memory, in particular with the schemes which, such as compression in extent, do not modify the length of the slices to be analyzed on each stage. The implementation of such a compression scheme essentially affects the calculation performed by each analysis module, but not the general architecture of the pipeline.
  • the parallel analysis modules are associated with respective data buffers to each receive a chain of data to be analyzed.
  • Each memory area has a data bus and an address bus respectively.
  • the analysis means comprise data multiplexing means connected to the N data buses and to the analysis modules and address multiplexing means connected to the N address buses and to the analysis modules. These multiplexing means are controlled to supply to each analysis module during the analysis of the (i + 1) th section of a data chain, the content of a cell whose address in the area of level memory
  • the device comprises a buffer memory for receiving up to N strings of data to be analyzed.
  • the analysis means comprise N parallel modules each associated with one of the N memory areas, and multiplexing means for distributing the slices of said chains to the N analysis modules so that, for all i ⁇ O, the ( i + 1) -th slice of each data string is addressed to the module associated with the level memory area
  • FIG. 1, previously commented on, shows an example of the content of a TRIE memory
  • FIG. 2, previously commented on is a flow diagram of a conventional analysis procedure executed to consult the TRIE memory
  • - Figure 3, previously commented on is a tree representation of the TRIE memory having the content illustrated in Figure 1
  • - Figure 4 is a block diagram of a packet router incorporating a device according to the invention
  • - Figure 5 is a diagram of a circuit forming a device according to the invention
  • - Figure 6 is a timing diagram of signals involved in the operation of the circuit of Figure 5
  • - Figure 7 is a diagram of an alternative embodiment of the device according to the invention.
  • ATM asynchronous transfer mode
  • the router 10 shown in FIG. 4 operates with a host computer 11.
  • the host computer 11 can send and receive packets, in particular for managing the routing process. For this, it has a virtual channel (VC) at the input and output of router 10.
  • VC virtual channel
  • the router 10 comprises a forwarding module 12 which routes the received packets according to instructions, hereinafter called “routing references” or "final status", obtained by an analysis module 13 from of a memory 14 organized as a TRIE memory table.
  • the routing module 12 can essentially carry out a translation of the virtual path identifiers VPI / VCI (Virtual Path Identifier / Virtual Channel Identifier), the fusion of the virtual channels according to the virtual paths, and the delivery of the packets on the output ports of the router. For this, it needs to know the VPI / VCI pairs of outgoing packets, which can constitute the routing references stored in the memory. TRIE 14.
  • Each ATM cell containing the header of a packet to be routed passes through a buffer memory 15 to which the analysis unit 13 has access to analyze portions of these headers by means of the TRIE memory 14.
  • Configuring the router 10 consists in recording the relevant data in the TRIE memory 14. This operation is carried out by a unit (not shown) for managing the TRIE memory under the control of the host computer 11.
  • the configuration commands can be received in packets transmitted over the network and intended for router 10.
  • the analysis unit 13 cooperates with an automaton 16 programmed to perform certain checks and certain actions on the headers of the packets, in a manner dependent on the communication protocols supported. through the router. Apart from this automaton 16, the operation of the router 10 is independent of the packet transport protocols.
  • each elementary cell of the TRIE memory occupies 32 bits.
  • the analysis unit 13 the TRIE memory 14, as well as the buffer memory 15, subdivided into two buffer registers 15 a , 15 b each intended to receive a chain of data to be analyzed in slices of K bits.
  • Each memory plane P 0 , P 1 comprises a data bus D 0 , D 1 of width 32 bits, as well as an address bus A 0 , A., the width of which depends on the quantity of data to be stored in TRIE memory.
  • a slice of K bits of the data chain contained in the register 15 a , 15 b is supplied to the operator OP a , OP b .
  • the analysis unit 13 also comprises multiplexers 18 a , 18 b , 19 0 , 19 1 for managing the communication of the buses D 0 , Dj, A 0 , A 1 with the two operators OP a , OP b under the control of a periodic clock signal
  • the clock signal CK alternately has a high voltage and a low voltage, with a duty cycle 1/2.
  • the multiplexer 18 a puts the data bus D 1 of the memory plane P 1 into communication with an input bus D a of the operator OP a
  • the multiplexer 18 puts the bus into communication of data D 0 of the memory plane P 0 with an input bus D b of the operator OP
  • the multiplexer 19 0 puts an output bus A a of the operator OP a in communication with the address bus A 0 of the memory plane P 0
  • the multiplexer 19 1 communicates an output bus A b of the operator OP b with the address bus A 1 of the memory plane P ⁇
  • the multiplexer 18 a communicates the data bus D 0 of the memory plane P 0 with the input bus D a of the operator OP a
  • the multiplexer 18 b connects the data bus D
  • the operator OP ⁇ performs the following elementary processing: '' - the "status" or "pointer" type of the node received on the bus D ⁇ is determined, by examining the value of a flag of one or more bits provided by example at the head of each cell; - if the node, ud is of type status, the operator OP x extracts the reference contained in the node, presents it on the output bus A X , and warns the automaton 16 so that the latter retrieves the reference extracted from the output marked S a or S in FIG.
  • LA combination consists for example of a simple concatenation, the slice V ⁇ forming the K least significant bits of the address.
  • the data field presented on the input bus D x is initialized as being of pointer type, with a pointer value DP designating the location of the register gatekeeper in the memory plane P 0 .
  • the first section V x (0) of the chain completes this address to provide the address of the gatekeeper's cell which should be read.
  • the processing then continues cyclically as indicated above.
  • the buffer register 15 x is made available to receive a next data string to be analyzed.
  • the following analysis can only start when the operator OP x associated with this buffer 15 x has access to the memory plane P 0 containing the gatekeeper.
  • FIG. 6 illustrates the operation of the circuit according to FIG. 5, by showing the information circulating on the various buses.
  • the arrows in dashed lines illustrate the analysis of two routes successively introduced into the buffer register 15 a associated with the operator
  • FIG. 6 clearly shows the parallelism between the two operators, capable of accessing the two memory planes alternately to process simultaneously, in circular pipeline mode, the data strings presented in the two buffer registers.
  • FIG. 5 is easily transposable to a case where N> 2: it suffices to add memory planes P j and operators OP x , by increasing the number of inputs of the multiplexers 18 ⁇ , 19 j and controlling them by means of mutually offset clock signals, for example generated using modulo N counters.
  • each operator OP 0 , OP.,, ..., OP N _., is associated with a respective memory plane P 0 , P. ,, ..., P t ⁇ .
  • the output bus of each operator OP j (0 ⁇ i ⁇ N) directly serves as the address bus for the memory plane P j
  • the data bus D, of each memory plane P j serves as the input bus for the operator OP (i + 1) mod N.
  • the buffer memory 15 is shared between the N operators OP j , instead of having the buffer register / operator association as in the embodiment illustrated by FIG. 5.
  • This buffer memory 15 has a matrix organization, with N rows and N columns.
  • the column of rank j (0 ⁇ j ⁇ N) receives a string of data to be analyzed, so that the buffer memory 15 is capable of receiving simultaneously up to N strings, one per column.
  • the row of rank i (0 ⁇ i ⁇ N) each contains slices of rows i, i + N, i + 2N, etc. of each chain to analyze.
  • a multiplexing module 20 distributes the data present in the matrix buffer 15 so that each operator OP j successively receives the slices present in the row of rank i, cyclically by column.
  • This module 20 is clocked so that the analysis of a chain is always started by the operator OP 0 associated with the memory plane containing the gatekeeper (at this time the initialization data word DP is provided on the bus input D N _ 1 of the operator OP 0 ), and that each analysis cycle of order q ⁇ O is executed q cycles later by the operator OP q mod then commanding a reading in the memory plane P q mod N.
  • An operator OP j who falls on a status signals it so that the corresponding reference is retrieved on its output bus A j , which frees column j from the matrix 15 from which the chain whose analysis ends ends.
  • a new chain inserted in this column j will only begin to be analyzed when it is the turn of a section of column j to be addressed to the operator OP 0 by the multiplexing module 20.

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

La mémoire stocke des motifs binaires associés à des références respectives. Des chaînes de données sont analysées par tranches successives de K bits (K ≥1) pour extraire une des références lors d'une concordance entre une chaîne de données analysée et un motif binaire mémorisé associé à cette référence. La mémoire est organisée en plusieurs étages successifs de cellules de mémoire, l'analyse de la (i+1)-ième tranche d'une chaîne de données donnant lieu à un accès à une cellule de l'étage i ≥0. Pour N ≥2, p ≥1 et N.p inférieur au nombre maximum d'étages, la mémoire est répartie en N zones de mémoire distinctes de niveaux 0 à N-1, chaque cellule d'un étage i ≥0 appartenant à la zone de niveau [i/p], modulo N, où [i/p] désigne le quotient de la division euclidienne de i par p. Les analyses sont effectuées à l'aide d'au plus N modules parallèles.

Description

DISPOSITIF DE MEMOIRE TRIE A MECANISME DE PIPELINE CIRCULAIRE
La présente invention concerne les mémoires associatives, et particulièrement les mémoires de type "TRIE" (du verbe anglais "reTRIEve").
Le principe de la mémoire "TRIE" a été proposé par R. de la Briandais et E. Fredkin vers la fin des années 1950 (voir E. Fredkin et al.: . "Trie Memory", Communications of the ACM, Vol. 3, No. 9, septembre 1960, pages 490-499). Il consiste à découper les chaînes de bits à reconnaître en tranches successives de longueur fixe (de K bits) et à les intégrer dans un tableau T à deux dimensions. Chaque ligne du tableau constitue un registre de 2K cellules élémentaires. Un registre (R) est attribué à chaque tranche de la chaîne et on associe une cellule dans le registre à la valeur (V), comprise entre 0 et 2K-1 de cette tranche. Le contenu (C = T[R, V]) de la cellule ainsi déterminée représente soit le registre attribué à la tranche suivante (ou pointeur), soit une référence de fin d'analyse (ou "status") si l'analyse de la chaîne doit se terminer sur cette tranche.
Le registre attribué à la première tranche de la chaîne, qui est aussi le point d'entrée de la table, est appelé portier. Les données à analyser sous forme de chaînes de bits, c'est-à-dire à comparer avec le contenu de la mémoire TRIE, seront également nommées routes ci-après. On appellera chemin dans la table la succession des cellules chaînées associées à une route. Chaque registre de la table sera dit d'ordre i>0 s'il est attribué à la (i+1 )-ième tranche d'une ou plusieurs routes mémorisées. Le registre portier est donc d'ordre 0. La mémoire TRIE associe à chacun de ses registres d'ordre i>0 une unique séquence de iK bits correspondant aux iK premiers bits de chaque route dont le chemin dans la table passe par une cellule du registre en question.
L'exemple suivant montre une représentation du stockage des données dans une mémoire TRIE dans le cas particulier où K = 4. La valeur de chaque tranche est représentée par un digit en numérotation hexadécimale (0,1 ,...,E,F), et les registres contiennent chacun 2 =16 cellules. Soit à reconnaître les routes qui débutent par les motifs 45A4, 45AB,
67 AB, 788A et 788BD, auxquels on attribué respectivement les status S0, S1,
S2, S3 et S0 (un même status peut être partagé par plusieurs routes). En portant le registre R en indice de ligne, la valeur V des tranches en indice de colonne, et en prenant comme portier le registre R0 = 0, la table de la mémoire
TRIE peut se présenter comme représenté sur la figure 1 , où les données soulignées sont'des status. Les motifs 45À4, 45AB, 67 AB, 788A et 788BD sont respectivement représentés dans la table de là figure 1 par les chemins : T[0,4] - T[ ,5] -> T[2,A] ^ T[3,4] ; T[0,4] ^ T[1 ,5] ^ T[2,A] ^ T[3,BJ ; T[0,6] -» T[4,7] ^ T[5,A] ^ T[6,B] ; T[0,7] ^ T[7,8] ^ T[8,8] -» T[9,A] ; T[0,7] -» T[7,8J - T[8,8] -» T[9,B] ^ T[10,D].
On voit sur cet exemple que tous les motifs commençant par une partie commune de iK bits sont représentés par un début de chemin commun dans la mémoire, menant au registre d'ordre i auquel est associée la séquence formée par ces iK bits.
Si l'on considère une route à analyser, découpée en une suite de tranches binaires de valeurs Vj avec 0 < i < N et {Rj} la suite des registres associés aux valeurs Vj( R0 désignant encore le registre portier, l'algorithme d'analyse mis en œuvre peut être celui représenté sur la figure 2.
A l'initialisation 1 de cet algorithme, le rang d'analyse i est mis à 0 et le registre portier R0 est sélectionné comme registre R. Dans chaque itération de rang i, le contenu C de la cellule T[R,Vj] désignée par la (i+1 )-ième tranche Vj de la route dans le registre d'ordre i sélectionné est lu à l'étape 2. Si cette cellule contient un pointeur de poursuite d'analyse, ce qu'indique au test 3 la valeur 1 d'un bit FP(C) mémorisé dans la cellule, le registre d'ordre i+1 désigné par ce pointeur Ptr(C) est sélectionné comme registre R pour l'itération suivante à l'étape 4, et le rang i est incrémenté. Quand le test 3 révèle une cellule qui ne contient pas un pointeur (FP(C)=0), le status Ref(C) lu dans la cellule concernée est retourné à l'étape 5 comme résultat de la consultation de la table.
Cet algorithme permet l'analyse de routes comportant un nombre quelconque de tranches. Une même table peut être utilisée pour plusieurs types d'analyses en gérant les données à partir de portiers différents. De plus, il permet de maîtriser le temps d'analyse des données : l'analyse d'un nombre
N de tranches de K bits durera au plus N fois la durée d'une itération.
L'algorithme de la figure 2 peut être mis en œuvre de façon très rapide par un composant matériel gérant les accès au tableau de mémoire. Il permet notamment la réalisation de routeurs de haute performance pour des réseaux de télécommunications à commutation de paquets. L'en-tête dés paquets est analysé au vol par le composant, et le status associé à une route désigne par exemple un port de sortie du routeur vers lequel doivent être acheminés les paquets portant une adresse de destination conforme à cette route. Un tel routeur peut être mufti-protocoles. Pour cela, on analyse des portions différentes de l'en-tête à partir de portiers différents. Par exemple, une première analyse d'un (ou plusieurs) champ de l'en-tête désignant le protocole employé et/ou la version de ce protocole peut être analysée à partir d'un premier portier. Cette première analyse fournit une référence qui, bien que correspondant à une fin logique d'analyse, peut être matérialisée dans la mémoire TRIE par un pointeur de poursuite d'analyse désignant un autre registre portier à utiliser pour analyser la suite de l'en-tête. La référence en question peut également déclencher des temporisations ou des sauts d'un nombre déterminé de bits dans l'en-tête analysé afin de pouvoir choisir quelle portion de l'en-tête doit être ensuite analysée. Dans la pratique, un certain nombre d'analyses sont généralement exécutées successivement, pour déclencher les opérations requises par les protocoles supportés en fonction du contenu des en-têtes. L'une de ces analyses portera sur l'adresse de destination pour accomplir la fonction de routage proprement dite. Le fait de pouvoir enchaîner plusieurs analyses élémentaires avec entre elles des sauts programmables procure une grande souplesse au procédé, particulièrement pour le traitement de protocoles encapsulés suivant plusieurs couches du modèle ISO. L'analyse au vol des tranches de l'en-tête au fur et à mesure de leur arrivée procure par ailleurs une grande rapidité.
Un autre avantage des tables TRIE est de permettre la prise en compte de contraintes de routage sur la , base du plus long chemin enregistré correspondant à un préfixe de la route à reconnaître, contrainte qu'on rencontre notamment dans le contexte du routage IP (voir EP-A-0 989 502).
EP-A-1 030 493 décrit une mémoire TRIE dont le contenu intègre, outre les références proprement dites associées aux en-têtes de paquets, un programme consistant en l'enchaînement des analyses élémentaires à effectuer en fonction des différentes configurations prises en compte par la mémoire. Ces enchaînements sont entièrement programmables. L'utilisateur peut définir arbitrairement, et à chaque étape du processus, quelle portion de l'en-tête doit être examinée et à partir de quel registre de la mémoire TRIE, ce qui procure une grande souplesse de traitement. Une mémoire TRIE peut aussi être décrite sous forme arborescente, avec des nœuds répartis en plusieurs étages successifs correspondant aux ordres d'analyse i précédemment mentionnés. Chaque nœud d'un étage i représente une décision à prendre lors de l'analyse de la (i+1)-ième tranche d'une route. Le nœud-racine de l'arbre correspond au registre portier, les nœuds-feuilles aux status, et les nœuds intermédiaires aux registres désignés par les pointeurs de poursuite d'analyse. La représentation arborescente permet de visualiser aisément les chemins. L'arbre de la figure 3 montre ainsi les chemins enregistrés dans la table de la figure 1 , la racine et les nœuds intermédiaires étant représentés par des cercles (registres) et les feuilles par des rectangles (status).
La représentation arborescente permet de concevoir des méthodes de compression visant à réduire la taille mémoire requise pour mettre en œuvre une table TRIE. Cette réduction est particulièrement utile pour des implémentations rapides de tables de taille importante au moyen de circuits de mémoire statique (SRAM). Une réalisation matérielle sous forme de table où chaque registre comporte 2K cellules est en effet peu efficace en termes d'occupation de mémoire puisqu'une telle table comporte de nombreuses cellules vides, comme le montre la figure 1. Quand l'arbre est occupé par un grand nombre de données aléatoires, les nœuds proches de la racine ont un nombre de descendants valides proche du nombre de descendants possibles (2K). Par contre, lorsque l'on s'éloigne de le racine, le nombre moyen de descendants valides d'un noeud donné diminue considérablement et tend vers 1 (ou 2 si l'on prend en compte un status par défaut). Dans ce cas, il n'y a dans la mémoire qu'entre 10% et 15%. de cellules utiles.
L'article "An Expérimental Study of Compression Methods for Functional Tries" de J-P. livonen, et al., soumis à la conférence WAAPL'99 (1999) passe en revue plusieurs méthodes de compression connues, combinables entre elles: - la compression de chemin ("path compression") consiste à agréger à un nœud Y d'un étage i les nœuds non vides des étages i+1 à i+j-1 (j _^) qui sont des descendants de ce nœud Y lorsque chacun de ces nœuds des étages i à i+j-1 possède un unique descendant non vide (registre ou status). Voir aussi US-A-6 014 659 ou US-A-6 505 206. La longueur de la tranche à analyser en relation avec le nœud comprimé Y est multipliée parj; - la compression de niveau ("level compression") consiste à agréger à un nœud Z d'un étage i les nœuds non vides des étages i+1 à i+j-1 (j _≤) qui sont des descendants de ce nœud Z lorsque chacun de ces nœuds des étages i+1 à i+j-1 possède lui-même au moins un descendant non vide (registre ou status). La longueur de la tranche à analyser en relation avec le nœud comprimé Z est multipliée parj; - la compression en étendue ("width compression" ou "pointer compression") consiste à éliminer les descendants vides d'un nœud donné. Voir aussi US-A-5 781 772, EP-A-0 458 698 ou WO 00/75804. Il est inutile de réserver un registre de 2K cellules pour analyser une tranche n'ayant que L<2K valeurs valides dans des chemins enregistrés dans la mémoire TRIE: on peut se contenter d'une zone comprimée de L cellules, associée à des données cartographiques indiquant les valeurs valides de la tranche. Ces données cartographiques prennent typiquement la forme d'un vecteur bitmap de 2K bits mis à 1 aux L positions correspondant aux L valeurs valides de la tranche et à 0 aux 2K-L autres positions. Dans les méthodes de compression de chemin et de niveau, la modification en,, cours d'analyse de la longueur des tranches découpées dans les données à analyser se prête mal à une, implémentation rapide dans un composant matériel spécifique. Elle permet essentiellement de réduire la taille mémoire requise par une implémentation logicielle, par nature moins rapide. La méthode de compression eη. étendue ne souffre pas de cette limitation. Elle requiert cependant que l'analyse proprement dite d'une tranche soit précédée par l'analyse du bitmap associé pour valider la valeur de la tranche et localiser la cellule correspondante.
Par ailleurs, une table TRIE se prête à un traitement parallèle en mode pipeline, comme évoqué dans l'article "Putting Routing Tables in Silicon", de T-B. Pei et al., IEEE Network Magazine, janvier 1992, pages 42-50. Si le nombre maximum d'étages de l'arbre est égal à M, c'est-à-dire si les chaînes de données à analyser peuvent aller jusqu'à M*K bits, on peut répartir l'espace mémoire disponible en N plans mémoire, avec N <M. Chaque plan mémoire P: de niveau j (0 ≤j < N) est réservé aux nœuds d'un ou plusieurs étages consécutifs de l'arbre. N opérateurs fonctionnent en parallèle avec chacun un tampon respectif contenant une chaîne de données à analyser. Pendant qu'un des N opérateurs effectue une analyse à l'ordre ou aux ordres consécutifs du niveau j, en accédant au plan mémoire P:, un autre opérateur peut accéder au plan mémoire P:^ pour effectuer l'analyse d'une chaîne de données suivante à l'ordre ou aux ordres consécutifs du niveau j-1. Ce traitement en pipeline par les N opérateurs augmente la cadence maximum de traitement du dispositif.
Cependant, une telle gestion en pipeline de la mémoire TRIE présente des limitations: - le nombre N de plans mémoire et d'opérateurs à utiliser dépend de la longueur potentielle (M*K bits) des chaînes de données à analyser. Cette dépendance limite fortement la capacité d'adapter un dispositif donné à différents types d'analyse, notamment pour prendre en compte de nouveaux protocoles ou des extensions de protocoles existants. Une telle évolution impose souvent de modifier profondément la structure matérielle du dispositif; - l'ordre de grandeur du volume de données gérées à chaque niveau j varie d'un niveau à un autre. Dans l'exemple où N = M (un étage par niveau de pipeline), le plan mémoire associé au portier ne traite qu'un . seul nœud tandis que les étages suivants comportent de nombreux nœuds et requièrent donc des plans mémoire beaucoup plus gros, avec des bus d'adresse plus larges et des temps d'accès augmentés en conséquence. Ceci réduit la performance du mode pipeline, dont le temps de cycle est proportionnel au temps de traitement du niveau le plus lent. Pour un volume de données et un nombre N d'opérateurs parallèles fixés, la performance optimale du mode pipeline est meilleure lorsque la mémoire tend à être uniformément partagée entre les niveaux, pour minimiser l'effet de goulot d'étranglement.
Un but de la présente invention est de surmonter ces limitations pour optimiser les mémoires TRIE gérées en pipeline. L'invention propose ainsi un dispositif de mémoire TRIE, comprenant des moyens de mémorisation de motifs binaires associés à des références respectives, et des moyens d'analyse de chaînes de données par tranches successives de K bits (K ≥1 ) pour extraire une des références lors d'une concordance entre une chaîne de données analysée et un motif binaire mémorisé associé à ladite référence. Conformément à la structure TRIE, les moyens de mémorisation comportent plusieurs étages successifs de cellules de mémoire, et les moyens d'analyse ont accès à une cellule d'un étage i ≥O en relation avec l'analyse de la (i+1)-ième tranche d'une chaîne de données. L'invention enrichit cette structure par un mécanisme de pipeline circulaire suivant lequel, N et p étant deux entiers tels que N ≥2, p ≥1 et N.p soit inférieur à un nombre maximum d'étages des moyens de mémorisation, les moyens de mémorisation sont répartis en N zones de mémoire distinctes de niveaux 0 à N-1 , et les moyens d'analyse comprennent au plus N modules d'analyse parallèles, chaque cellule d'un étage i ≥O appartenant à la zone de mémoire de niveau |_ï / p J . modulo N, où [_i / p J désigne le quotient de la division euclidienne de i par p. La mémoire TRIE est partagée en N zones ou plans mémoire auxquels les moyens d'analyse accèdent de façon circulaire. Chaque zone contient des étages ou groupes d'étages répartis de façon régulière dans l'arbre associé à la mémoire TRIE, de sorte que la mémoire peut être partagée de manière relativement uniforme entre les N plans mémoire. L'entier p est le nombre d'étages auxquels un module d'analyse, ou opérateur, accède à un niveau du traitement en pipeline. Il y a avantage à prendre p = 1 pour répartir de la façon la plus uniforme possible les données dans les N plans mémoire. Dans ce cas, chaque cellule d'un étage i ≥O appartiendra à la zone de mémoire de niveau i, modulo N. On peut cependant, dans certaines implémentations, prendre p ≥2, c'est-à-dire grouper des étages de l'arbre par niveaux de pipeline.
Les valeurs basses du nombre N contribuent à mélanger finement les nœuds de l'arbre dans les plans mémoire. Une réalisation de l'invention se situe ainsi dans le cas où N = 2. Cependant, l'accroissement de la rapidité du dispositif est proportionnel à N, ce qui ferait préférer les valeurs plus élevées de N. Pour que le pipeline reste circulaire, il faut obéir à la condition que N.p soit inférieur au nombre maximum d'étages de l'arbre (noté M ci-dessus), ce qui autorisera ultérieurement l'analyse de chaînes encore plus longues si ce nombre maximum vient à augmenter avec l'évolution de l'usage du dispositif. Pour que le parallélisme soit le plus efficace, il convient de choisir N et p tels que leur produit soit nettement inférieur à M.
Pour N > 2, l'accroissement de la rapidité du dispositif est maximal quand les moyens d'analyse comportent N modules parallèles. On pourrait cependant prévoir un nombre plus faible de modules d'analyse (à la limite un seul), par exemple pour réserver un ou plusieurs niveaux de pipeline à des opérations d'insertion ou de suppression de chemins dans la mémoire TRIE. Un autre avantage du dispositif selon l'invention est sa compatibilité avec divers schémas de compression de la* mémoire TRIE, notamment avec les schémas qui, tels la compression en étendue, ne modifient pas la longueur des tranches à analyser à chaque étage. La mise en œuvre d'un tel schémas de compression affecte essentiellement le calcul effectué par chaque module d'analyse, mais non l'architecture générale du pipeline.
Dans un premier mode de réalisation de l'invention, les modules d'analyse parallèles sont associés à des tampons de données respectifs pour recevoir chacun une chaîne de données à analyser. Chaque zone de mémoire a respectivement un bus de données et un bus d'adresse. Les moyens d'analyse comprennent des moyens de multiplexage de données reliés aux N bus de données et aux modules d'analyse et des moyens de multiplexage d'adresses reliés aux N bus d'adresse et aux modules d'analyse. Ces moyens de multiplexage sont commandés pour fournir à chaque module d'analyse lors de l'analyse de la (i+1 )-ième tranche d'une chaîne de données, le contenu d'une cellule dont l'adresse dans la zone de mémoire de niveau |_î/ pj a été déterminée par ce module d'analyse lors de l'analyse de la i-ième tranche de ladite chaîne de données.
Dans un second mode de réalisation de l'invention, le dispositif comprend une mémoire tampon pour recevoir jusqu'à N chaînes de données à analyser. Les moyens d'analyse comprennent N modules parallèles associés chacun à l'une des N zones de mémoire, et des moyens de multiplexage pour distribuer les tranches desdites chaînes aux N modules d'analyse de façon que, pour tout i ≥O, la (i+1)-ième tranche de chaque chaîne de données soit adressée au module associé à la zone de mémoire de niveau |_i / p J
D'autres particularités et avantages de la présente invention apparaîtront dans la description ci-après d'exemples de réalisation non limitatifs, en référence aux dessins annexés, dans lesquels: - la figure 1 , précédemment commentée, montre un exemple de contenu d'une mémoire TRIE; - la figure 2, précédemment commentée, est un organigramme d'une procédure d'analyse classique exécutée pour consulter la mémoire TRIE; - la figure 3, précédemment commentée, est une représentation arborescente de la mémoire TRIE ayant le contenu illustré par la figure 1 ; - la figure 4 est un schéma synoptique d'un routeur de paquets incorporant un dispositif selon l'invention; - la figure 5 est un schéma d'un circuit formant un dispositif selon l'invention; - la figure 6 est un chronogramme de signaux intervenant dans le fonctionnement du circuit de la figure 5; et - la figure 7 est un schéma d'une variante de réalisation du dispositif selon l'invention.
Pour illustrer la description ci-après, on considère le cas où des paquets à acheminer par un routeur sont transportés sur un réseau à mode de transfert asynchrone (ATM), et on suppose que l'en-tête de chaque paquet est toujours contenu dans une cellule ATM.
Le routeur 10 représenté par la figure 4 fonctionne avec un ordinateur- hôte 11. L'ordinateur hôte 11 peut émettre et recevoir des paquets, notamment pour la gestion du processus de routage. Il dispose pour cela d'une voie virtuelle (VC) en entrée et en sortie du routeur 10.
Le routeur 10 comprend un module d'acheminement ("forwarding") 12 qui achemine les paquets reçus selon des instructions, ci-après appelées "références d'acheminement" ou "status final", obtenues par un module d'analyse 13 à partir d'une mémoire 14 organisée comme un tableau de mémoire TRIE. Dans le cas d'un équipement de réseau ATM, le module d'acheminement 12 peut réaliser essentiellement une traduction des identifiants de conduits et de voies virtuels VPI/VCI ("Virtual Path Identifier / Virtual Channel Identifier"), la fusion des voies virtuelles selon les conduits virtuels, et la délivrance des paquets sur les ports de sortie du routeur. Pour cela, il a besoin de connaître les couples VPI/VCI des paquets sortants, qui peuvent constituer les références d'acheminement stockées dans la mémoire TRIE 14.
Chaque cellule ATM contenant l'en-tête d'un paquet à router transite par une mémoire tampon 15 à laquelle l'unité d'analyse 13 a accès pour analyser des portions de ces en-têtes au moyen de la mémoire TRIE 14. Cette analyse est par exemple effectuée par quartets (K=4).
Configurer le routeur 10 consiste à enregistrer les données pertinentes dans la mémoire TRIE 14. Cette opération est réalisée par une unité (non représentée) de gestion de la mémoire TRIE sous le contrôle de l'ordinateur- hôte 11. Les commandes de configuration peuvent être reçues dans des paquets transmis sur le réseau et destinés au routeur 10. Pour une façon de gérer dynamiquement le contenu de la mémoire TRIE 14, on pourra se reporter à EP-A-0 989 502.
Dans l'exemple de routeur représenté sur la figure 4, l'unité d'analyse 13 coopère avec un automate 16 programmé pour effectuer certains contrôles et certaines actions sur les en-têtes des paquets, d'une manière dépendante des protocoles de communication supportés par le routeur. En dehors de cet automate 16, le fonctionnement du routeur 10 est indépendant des protocoles de transport des paquets.
La figure 5 montre un dispositif de mémoire TRIE selon l'invention, dans le cas particulier où N = 2 et p = 1. Dans cet exemple, chaque cellule élémentaire de la mémoire TRIE occupe 32 bits. On retrouve sur la figure 5 l'unité d'analyse 13, la mémoire TRIE 14, ainsi que la mémoire tampon 15, subdivisée en deux registres tampons 15a, 15b destinés à recevoir chacun une chaîne de données à analyser par tranches de K bits. La mémoire TRIE 14 comporte N = 2 plans mémoires P0, P1 de niveaux 0 et 1 , avantageusement réalisés en technologie SRAM ("Static Random Access Memory"). Chaque plan mémoire P0, P1 comporte un bus de données D0, D1 de largeur 32 bits, ainsi qu'un bus d'adresse A0, A., , dont la largeur dépend de la quantité de données à stocker dans la mémoire TRIE. L'unité d'analyse 13 comporte N = 2 modules d'analyse, ou opérateurs, OPa, OPb identiques, associés chacun à un registre tampon respectif 15a, 15b.
A chaque cycle d'analyse, une tranche de K bits de la chaîne de données contenue dans le registre 15a, 15b est fournie à l'opérateur OPa, OPb.
L'unité d'analyse 13 comporte d'autre part des multiplexeurs 18a, 18b, 190, 191 pour gérer la mise en communication des bus D0, Dj, A0, A1 avec les deux opérateurs OPa, OPb sous le contrôle d'un signal d'horloge périodique
CK. Dans l'exemple considéré (voir aussi figure 6), le signal d'horloge CK présente alternativement une tension haute et une tension basse, avec un rapport cyclique 1/2. Lorsqu'il est à une tension haute, le multiplexeur 18a met en communication le bus de données D1 du plan mémoire P1 avec un bus d'entrée Da de l'opérateur OPa, le multiplexeur 18 met en communication le bus de données D0 du plan mémoire P0 avec un bus d'entrée Db de l'opérateur OP , le multiplexeur 190 met en communication un bus de sortie Aa de l'opérateur OPa avec le bus d'adresse A0 du plan mémoire P0, et le multiplexeur 191 met en communication un bus de sortie Ab de l'opérateur OPb avec le bus d'adresse A1 du plan mémoire P^ Lorsque le signal d'horloge CK est à une tension basse, le multiplexeur 18a met en communication le bus de données D0 du plan mémoire P0 avec le bus d'entrée Da de l'opérateur OPa, le multiplexeur 18b met en communication le bus de données D1 du plan mémoire P1 avec le bus d'entrée D de l'opérateur OPb, le multiplexeur 190 met en communication le bus de sortie Aa de l'opérateur OPa avec le bus d'adresse A0 du plan mémoire P0, et le multiplexeur 191 met en communication le bus de sortie Aa de l'opérateur OPa avec le bus d'adresse A1 du plan mémoire P.,. A chaque cycle d'horloge, l'opérateur OPx (x = a ou b) reçoit sur son bus d'entrée Dχ un champ de données de 32 bits pouvant venir d'une cellule du plan mémoire P0 ou d'une cellule du plan mémoire P1 et correspondant à un nœud de l'arbre. Il reçoit également une tranche Vx de K bits issue du registre tampon 15X. L'opérateur OPχ effectue le traitement élémentaire suivant : ' ' - le type "status" ou "pointeur" du nœud reçu sur le bus Dχ est déterminé, en examinant la valeur d'un drapeau d'un ou plusieurs bits prévu par exemple en tête de chaque cellule;. - si le nœ,ud est de type status, l'opérateur OPx extrait la référence contenue dans le nœud, la présente sur le bus de sortie AX, et avertit l'automate 16 pour que celui-ci récupère la référence extraite sur la sortie notée Sa ou S sur la figure 5; et - si le nœud est de type pointeur, l'opérateur OPχ extrait le pointeur contenu dans le nœud et le combine les K bits de la tranche Vx pour construire une adresse présentée sur le bus de sortie Ax. LA combinaison consiste par exemple en une simple concaténation, la tranche Vχ formant les K bits de poids les plus faibles de l'adresse. Pour le traitement de la première tranche d'une nouvelle chaîne de données à analyser, le champ de données présenté sur le bus d'entrée Dx est initialisé comme étant de type pointeur, avec une valeur de pointeur DP désignant l'emplacement du registre portier dans le plan mémoire P0. La première tranche Vx(0) de la chaîne complète cette adresse pour fournir l'adresse de la cellule du portier qui devra être lue. Le traitement se poursuit alors de façon cyclique comme indiqué ci-dessus. Lorsque le status est délivré sur la sortie Sx, le registre tampon 15x est rendu disponible pour recevoir une prochaine chaîne de données à analyser. L'analyse suivante ne pourra démarrer que quand l'opérateur OPx associé à ce tampon 15x aura accès au plan mémoire P0 contenant le portier.
La figure 6 illustre le fonctionnement du circuit selon la figure 5, en montrant les informations circulant sur les différents bus. Sur cette figure, la notation Pj(Aχ) désigne le contenu de la cellule stockée à l'adresse Ax, présentée sur le bus de sortie de l'opérateur OPx, dans le plan mémoire Pj de niveau i = 0 ou i = 1 , et la notation A(D,V) désigne, dans le cas d'un pointeur, le résultat du calcul d'adresse effectué par l'un des opérateurs OPχ recevant une tranche V lorsqu'un champ de données D est présenté sur son bus d'entrée Dx. Les flèches en traits interrompus illustrent l'analyse de deux routes successivement introduites dans le registre tampon 15a associé à l'opérateur
OPa, tandis que les signaux représentés avec des hachures se rapportent à l'analyse de deux routes successivement introduites dans le registre tampon 15b associé à l'opérateur OPb.
La figure 6 montre bien le parallélisme entre les deux opérateurs, capables d'accéder alternativement aux deux plans mémoire pour traiter simultanément, en mode de pipeline circulaire, des chaînes de données présentées dans les deux registres tampon.
On observera que le schéma de la figure 5 est aisément transposable à un cas où N > 2: il suffit d'ajouter des plans mémoire Pj et des opérateurs OPx, en augmentant le nombre d'entrées des multiplexeurs 18χ, 19j et en les contrôlant aux moyens de signaux d'horloge mutuellement décalés, par exemple générés à l'aide de compteurs modulo N.
Dans le mode de réalisation illustré par la figure 5, les N opérateurs, OPχ coopèrent à tour de rôle avec les N plans mémoire Pj. Ceci n'est pas la seule façon possible de réaliser le mécanisme de pipeline circulaire proposé par l'invention. Une autre possibilité est illustrée par la figure 7.
Dans ce mode de réalisation, chaque opérateur OP0, OP., , ..., OPN_., , semblable à ceux décrits en référence à la figure 5, est associé à un plan mémoire respectif P0, P.,, ..., Pt^^. Le bus de sortie de chaque opérateur OPj (0 ≤i < N) sert directement de bus d'adresse pour le plan mémoire Pj, tandis que le bus de données D, de chaque plan mémoire Pj sert de bus d'entrée pour l'opérateur OP(i+1 ) mod N.
La mémoire tampon 15 est partagée entre les N opérateurs OPj, au lieu d'avoir l'association registre tampon / opérateur comme dans la réalisation illustrée par la figure 5. Cette mémoire tampon 15 a une organisation matricielle, avec N lignes et N colonnes. La colonne de rang j (0 ≤j < N) reçoit une chaîne de données à analyser, de sorte que la mémoire tampon 15 est capable de recevoir simultanément jusqu'à N chaînes, une par colonne. La ligne de rang i (0 ≤i < N) contient chacune des tranches de rangs i, i+N, i+2N, etc. de chaque chaîne à analyser.
Un module de multiplexage 20 distribue les données présentes dans la mémoire tampon matricielle 15 de façon telle que chaque opérateur OPj reçoive successivement les tranches présentes dans la ligne de rang i, de façon cyclique par colonne. Ce module 20 est cadencé de façon que l'analyse d'une chaîne soit toujours commencée par l'opérateur OP0 associé au plan mémoire contenant le portier (on fournit à ce moment le mot de données d'initialisation DP sur le bus d'entrée DN_1 de l'opérateur OP0), et que chaque cycle d'analyse d'ordre q ≥O soit exécuté q cycles plus tard par l'opérateur OPq mod commandant alors une lecture dans le plan mémoire Pq mod N. Un opérateur OPj qui tombe sur un status le signale pour que la référence correspondante soit récupérée sur son bus de sortie Aj, ce qui libère la colonne j de la matrice 15 d'où provient la chaîne dont l'analyse se termine. Une nouveau chaîne insérée dans cette colonne j ne commencera à être analysée que quand ce sera le tour d'une tranche de la colonne j d'être adressée à l'opérateur OP0 par le module de multiplexage 20.

Claims

R E V E N D I C A T I O N S
1. Dispositif de mémoire TRIE, comprenant des moyens de mémorisation de motifs binaires associés à des références respectives, et des moyens d'analyse de chaînes de données par tranches successives de K bits (K ≥1 ) pour extraire une des références lors d'une concordance entre une chaîne de données analysée et un motif binaire mémorisé associé à ladite référence, dans lequel les moyens de mémorisation (14) comportent plusieurs étages successifs de cellules de mémoire, et les moyens d'analyse (13) ont accès à une cellule d'un étage i ≥O en relation avec l'analyse de la (i+1 )-ième tranche d'une chaîne de données, et dans lequel, pour deux entiers N et p tels que N ≥2, p ≥1 et N.p soit inférieur à un nombre maximum d'étages des moyens de mémorisation, les moyens de mémorisation sont répartis en N zones de mémoire distinctes (P0, P.,, ..., PN_.,) de niveaux 0 à N-1 , et les moyens d'analyse comprennent au plus N modules d'analyse parallèles (OPa, OP ; OP0, OP.,, ..., OPN_.,), chaque cellule d'un étage i ≥O appartenant à la zone de mémoire de niveau |_i / p J , modulo N, où |_ï/ pj désigne le quotient de la division euclidienne dé i par p.
2. Dispositif selon la revendication 1 , dans lequel p = 1.
3. Dispositif selon la revendication 2, dans lequel N = 2.
4. Dispositif selon l'une quelconque des revendications précédentes, dans lequel les moyens d'analyse (13) comprennent N modules d'analyse parallèles (OPa, OPb; OP0, OP., , ..., OPN_.,).
5. Dispositif selon l'une quelconque des revendications précédentes, dans lequel les modules d'analyse parallèles (OPa, OP ) sont associés à des tampons de données respectifs (15a, 15b) pour recevoir chacun une chaîne de données à analyser, dans lequel chaque zone de mémoire (P0, P-,) a respectivement un bus de données (D0, D.,) et un bus d'adresse (A0, A.,), et dans lequel les moyens d'analyse (13) comprennent en outre des moyens de multiplexage de données (18a, 18b) reliés aux N bus de données et aux modules d'analyse et des moyens de multiplexage d'adresses (190, 19.,) reliés aux N bus d'adresse et aux modules d'analyse, commandés pour fournir à chaque module d'analyse lors de l'analyse de la (i+1 )-ième tranche d'une chaîne de données, le contenu d'une cellule dont l'adresse dans la zone de mémoire de niveau |_i / p J a été déterminée par ledit module d'analyse lors de l'analyse de la i-ième tranche de ladite chaîne de données.
6. Dispositif selon l'une quelconque des revendications précédentes, comprenant en outre une mémoire tampon (15) pour recevoir jusqu'à N chaînes de données à analyser, dans lequel les moyens d'analyse, (13) comprennent N modules d'analyse parallèles (OP0, OP.,, .:., OPN-1) associés chacun à l'une des N zones de mémoire (P0, P.,, ..., PN_-|), et des moyens de multiplexage (20) pour distribuer les tranches desdites chaînes aux N modules d'analyse de façon que, pour tout i ≥O, la (i+1 )-ième tranche de chaque chaîne de données soit adressée au module associé à la zone de mémoire de niveau
PCT/FR2003/002508 2003-08-11 2003-08-11 Dispositif de memoire trie a mecanisme de pipeline circulaire WO2005024659A1 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/FR2003/002508 WO2005024659A1 (fr) 2003-08-11 2003-08-11 Dispositif de memoire trie a mecanisme de pipeline circulaire
EP03758229A EP1702275A1 (fr) 2003-08-11 2003-08-11 Dispositif de memoire trie a mecanisme de pipeline circulaire
AU2003274246A AU2003274246A1 (en) 2003-08-11 2003-08-11 Trie memory device with a circular pipeline mechanism

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/FR2003/002508 WO2005024659A1 (fr) 2003-08-11 2003-08-11 Dispositif de memoire trie a mecanisme de pipeline circulaire

Publications (1)

Publication Number Publication Date
WO2005024659A1 true WO2005024659A1 (fr) 2005-03-17

Family

ID=34259339

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2003/002508 WO2005024659A1 (fr) 2003-08-11 2003-08-11 Dispositif de memoire trie a mecanisme de pipeline circulaire

Country Status (3)

Country Link
EP (1) EP1702275A1 (fr)
AU (1) AU2003274246A1 (fr)
WO (1) WO2005024659A1 (fr)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102739550A (zh) * 2012-07-17 2012-10-17 中山大学 基于随机副本分配的多存储器流水路由体系结构
CN103365991A (zh) * 2013-07-03 2013-10-23 深圳市华傲数据技术有限公司 一种基于一维线性空间实现Trie树的词典存储管理方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103365992B (zh) * 2013-07-03 2017-02-15 深圳市华傲数据技术有限公司 一种基于一维线性空间实现Trie树的词典检索方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0639013A1 (fr) * 1993-07-12 1995-02-15 France Telecom Procédé et dispositif d'analyse d'informations contenues dans des structures de données
WO2002082322A1 (fr) * 2001-04-04 2002-10-17 Cypress Semiconductor Corporation Structures de donnees compactes pour des consultations en pipeline de transmission de messages

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0639013A1 (fr) * 1993-07-12 1995-02-15 France Telecom Procédé et dispositif d'analyse d'informations contenues dans des structures de données
WO2002082322A1 (fr) * 2001-04-04 2002-10-17 Cypress Semiconductor Corporation Structures de donnees compactes pour des consultations en pipeline de transmission de messages

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
TANAKA Y ET AL INTERNATIONAL FEDERATION FOR INFORMATION PROCESSING: "PIPELINE SEARCHING AND SORTING MODULES AS COMPONENTS OF A DATA FLOW DATABASE COMPUTER", INFORMATION PROCESSING. TOKYO OCTOBER 6- 9 1980, PROCEEDINGS OF THE IFIP CONGRESS, AMSTERDAM, NORTH HOLLAND PUBL. COMP, NL, vol. PROC. 1980, 1 October 1980 (1980-10-01), pages 427 - 432, XP000744720 *
TONG-BI PEI ET AL: "PUTTING ROUTING TABLES IN SILICON", IEEE NETWORK, IEEE INC. NEW YORK, US, vol. 6, no. 1, 1992, pages 42 - 50, XP000262202, ISSN: 0890-8044 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102739550A (zh) * 2012-07-17 2012-10-17 中山大学 基于随机副本分配的多存储器流水路由体系结构
CN103365991A (zh) * 2013-07-03 2013-10-23 深圳市华傲数据技术有限公司 一种基于一维线性空间实现Trie树的词典存储管理方法

Also Published As

Publication number Publication date
EP1702275A1 (fr) 2006-09-20
AU2003274246A1 (en) 2005-03-29

Similar Documents

Publication Publication Date Title
Eatherton et al. Tree bitmap: hardware/software IP lookups with incremental updates
US8780926B2 (en) Updating prefix-compressed tries for IP route lookup
EP0639013B1 (fr) Procédé et dispositif d&#39;analyse d&#39;informations contenues dans des structures de données
US7237058B2 (en) Input data selection for content addressable memory
US6744652B2 (en) Concurrent searching of different tables within a content addressable memory
US7281085B1 (en) Method and device for virtualization of multiple data sets on same associative memory
Huang et al. A fast IP routing lookup scheme for gigabit switching routers
US7177978B2 (en) Generating and merging lookup results to apply multiple features
Le et al. Scalable tree-based architectures for IPv4/v6 lookup using prefix partitioning
Pao et al. Efficient hardware architecture for fast IP address lookup
FR2789778A1 (fr) Procede pour associer des references d&#39;acheminement a des paquets de donnees au moyen d&#39;une memoire trie, et routeur de paquets appliquant ce procede
Le et al. Memory-efficient and scalable virtual routers using FPGA
Luo et al. A hybrid IP lookup architecture with fast updates
US20110255544A1 (en) System and method for an exact match search using pointer based pipelined multibit trie traversal technique
Le et al. Scalable high throughput and power efficient ip-lookup on fpga
Sun et al. An on-chip IP address lookup algorithm
WO2005024659A1 (fr) Dispositif de memoire trie a mecanisme de pipeline circulaire
EP0857005B1 (fr) Procédé pour associer des données à des cellules ATM
Smiljanić et al. A comparative review of scalable lookup algorithms for IPv6
US20060018142A1 (en) Concurrent searching of different tables within a content addressable memory
EP1678632A1 (fr) Dispositif de memoire de type trie avec mecanisme de compression
WO2005024840A1 (fr) Dispositif de memoire trie avec compression en etendue
EP0989502A1 (fr) Procede de mise a jour d&#39;une memoire associative de type trie, et routeur mettant en oeuvre un tel procede
Venkatesh et al. A high performance, parallel IP lookup technique using distributed memory organization
Smiljanić et al. Scalable Lookup Algorithms for IPv6

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2003758229

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2003758229

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: JP