WO2005024840A1 - Dispositif de memoire trie avec compression en etendue - Google Patents

Dispositif de memoire trie avec compression en etendue Download PDF

Info

Publication number
WO2005024840A1
WO2005024840A1 PCT/FR2003/002507 FR0302507W WO2005024840A1 WO 2005024840 A1 WO2005024840 A1 WO 2005024840A1 FR 0302507 W FR0302507 W FR 0302507W WO 2005024840 A1 WO2005024840 A1 WO 2005024840A1
Authority
WO
WIPO (PCT)
Prior art keywords
cell
stage
register
analysis
memory
Prior art date
Application number
PCT/FR2003/002507
Other languages
English (en)
Inventor
Valery Laspreses
Joel Lattman
Christian Duret
Francis Rischette
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/002507 priority Critical patent/WO2005024840A1/fr
Priority to AU2003274245A priority patent/AU2003274245A1/en
Publication of WO2005024840A1 publication Critical patent/WO2005024840A1/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, 67AB, 788A and 788BD are respectively represented in the table of FIG. 1 by the paths: T [0.4] ⁇ T [1, 5] ⁇ T [2, A] ⁇ T [3, 4J; T [0.4J - * T [1, 5] - * T [2, A] - T [3, B]; 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.7J - »T [7.8] - 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.
  • ] 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.
  • 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 multi-protocol.
  • 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 to 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 are only between 10% and 15% of useful cells in the memory.
  • - 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 ..2) which are descendants of this node Y when each of these nodes of stages i to i + j-1 has a unique non-descendant empty (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 ⁇ 5) 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 TB. 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.
  • An object of the present invention is to provide an efficient method for compressing a TRIE memory, which facilitates high speed processing of strings of data to be analyzed.
  • the invention thus proposes a TRIE memory device, comprising means for storing binary patterns associated with respective references, and means for analyzing data strings by successive binary slices to extract one of the references during a concordance between an analyzed data string and a stored binary pattern associated with this reference.
  • the storage means comprise several successive stages, each stage comprising at least one register of memory cells.
  • the analysis means have access to a cell with a stage i> 0 in relation to the analysis of the (i + 1) th section of a data chain.
  • Each non-empty memory cell of a stage i> 0 contains data comprising either a further analysis pointer designating a register of stage i + 1, or a reference associated with a stored binary pattern.
  • At least one pointer contained in a cell of a stage i> 0 includes on the one hand addressing information from the register of the stage i + 1 designated by said pointer, and on the other hand map data for the location a cell within said register designated on the basis of the (i + 2) -th section of a data chain.
  • This organization of the data in the TRIE memory is based on an extended compression type scheme. It has the advantages in terms of reducing the memory space required. As this scheme does not impose modifications to the length of the slices analyzed, it is also compatible with a pipeline organization of the analysis means.
  • the invention provides the advantage of allowing the processing of a pointer with a single read cycle in the memory.
  • map data (bitmap) describing the distribution of cells in a memory register is not stored in this register, but in the cell of the register (node-father) which points to this register. Consequently, the bitmap can be read at the same time as the address of the register to which it relates, so that it is not necessary to provide for a specific reading cycle for obtaining this bitmap.
  • the data map of a pointer contained in a cell of a stage i> 0 comprise a vector of 2 K bits of rows 0 to 2 K -1, where K denotes the number of bits of said (i + 2) -th slice, each bit of rank j (0 ⁇ j ⁇ 2 K ) having a first value if at least one memorized pattern begins with a prefix associated with said pointer and continues with a slice of K bits forming the binary representation of rank j, and otherwise a second complementary value of the first value.
  • the analysis of the (i + 2) th section of a data chain can then include, after reading the cell of stage i containing the pointer, the extraction of a bit from the vector included in the data map of said pointer, at a rank whose content of the (i + 2) -th section forms the binary representation, and, when the bit extracted has the first value, the determination of an address offset within the designated register of stage i + 1 on the basis of the number of bits having the first value among the bits of rank lower than j of said vector. This address offset is combined with the address information of the designated register to form the address of a cell to be read from the storage means.
  • the analysis of the (i + 2) -th slice gives rise to the issuance of a reference for the analyzed data chain. It can be a default reference. Obtaining the reference issued may also require access to the memory.
  • the analysis of the (i + 2) -th tranche comprises in this case, when the bit extracted has the second value, the determination on the basis of the pointer of the address of a cell to be read in the storage means, containing a reference associated with a stored binary pattern which is the longest stored pattern forming a prefix of the analyzed data chain.
  • the storage means are divided into N distinct memory areas of levels 0 to N-1, N being less than a maximum number of stages of the storage means, and the analysis means are organized in pipeline in relation to the N memory areas.
  • FIG. 1 previously commented, 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 shows in two diagrams an example of the content of a memory cell in an embodiment of the invention
  • - Figure 7 is a diagram illustrating logical operations carried out in an embodiment of the device according to the invention.
  • 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 VPIA CI ("Virtual Path Identifier / Virtual Channel Identifier"), the merging of the virtual channels according to the conduits virtual, and the delivery of 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 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.
  • FIG. 5 shows a TRIE memory device according to the invention.
  • each elementary cell of the TRIE memory occupies
  • the TRIE memory comprises a memory plane 14, advantageously produced in SRAM ("Static Random Access Memory") technology.
  • This memory plane comprises a data bus D of width 32 bits, as well as an address bus AD, the width of which depends on the quantity of data to be stored in the memory TRIE.
  • the analysis unit 13 comprises a cell type detection circuit 20, connected to the data bus D, logic 21-25 for processing cartographic data (bitmap vector) and a module 26 for address calculation.
  • This coding is operated by logic 27 independently of the content of the TRIE memory 14, so that it can be carried out without undergoing the time constraints linked to the rhythm of accesses to the memory.
  • FIG. 7 illustrates this coding in the particular case where the quartet V corresponds to the number C in hexadecimal notation.
  • the 16-bit word Wi has bits at 0 everywhere except at the position corresponding to the value of the quartet V.
  • the 16-bit word words W 2 has bits at 0 at positions of weight equal to or greater than the value of the quartet and bits at 1 at the other positions.
  • the logic 27 includes an adequate assembly of logic gates to carry out this coding.
  • FIG. 6 shows the content of a memory cell in a particular exemplary embodiment.
  • the first four bits of the cell represent a P flag whose value indicates in particular the type (status or pointer) of the data stored in the cell.
  • the remaining 28 bits of the cell constitute the reference S used in the operation of routing packets and / or commands intended for the automaton 16.
  • the flag P is followed by a field containing the address A in the memory 14 of the register of the next stage designated by the pointer.
  • This address A is 12 bits in the example considered.
  • the reference S which has been read is delivered by the unit 13 as a result of the analysis of the current chain. This status detection also frees the buffer register 15 so that it can receive a next data string to be analyzed.
  • the circuit 20 When the circuit 20 detects that the data received from the memory 14 is of the pointer type, it supplies the bitmap vector B extracted from these data to the processing logic 21-25, and the address A of the register designated to the calculation module d address 26.
  • the cells of the same register are contiguous, that is to say stored at consecutive addresses.
  • the address A of the register corresponds to the position of the first cell of this register, associated with the smallest valid value of the quartet V.
  • the cells follow one another in the register in ascending order of the valid values of this quartet V.
  • the operation performed by the address calculation module 26 consists in combining the address A of the designated register with an offset calculated by the processing logic 21-25 to obtain the address presented on the bus AD for the next cycle of reading from memory 14.
  • this operation consists simply in concatenating the address A with the bits representing the value of the offset ⁇ , with A at the most significant positions and ⁇ at the least significant positions.
  • the offset ⁇ is represented on 4 bits
  • the processing logic 21-25 calculates two 16-bit words R-
  • the first word R 1 results from a logical AND operation carried out bit by bit between the word W 1 and the bitmap vector B by 16 parallel AND gates, diagrammed collectively by gate 21. If the word R 1 has a bit at 1
  • the quartet (at the position given by the quartet V), it means that the quartet is valid, that is to say included in a path recorded in the TRIE memory. Otherwise, it is a default status which will be returned by the analysis unit 13.
  • the word R 2 results from a logical AND operation carried out bit by bit between the word W 2 and the bitmap vector B by 16 parallel AND gates, shown diagrammatically by gate 23.
  • the gate 22 (FIG. 5) calculates the logical OR between the 16 bits of the word R.,.
  • the weighing module 25 counts the number of bits at 1 in the 16-bit word presented to it, which gives the value of the offset ⁇ .
  • bitmap vector B presented at gates 21, 23 with the first quartet of the chain is initialized to a value describing the occupation of the gatekeeper register. This value is for example read in a specific initialization register.
  • the mode of compression and storage of the data of the TRIE memory which has just been described makes it possible to perform the analysis of the chains of data in pipeline mode in order to increase the rate of analysis of the data, the memory 14 being distributed in N distinct memory zones of levels 0 to N-1, as indicated above.

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 pour extraire une des références lors d'une concordance avec un motif binaire mémorisé associé à cette référence. La mémoire est organisée en plusieurs étages successifs comportant chacun des registres de cellules de mémoire, l'analyse de la (i+1)-ième tranche d'une chaîne comportant un accès à une cellule d'un étage i ≥0 inclut d'une part une information d'adressage du registre de l'étage i+1 désigné par ce pointeur, et d'autre part des données cartographiques pour la localisation d'une cellule au sein du registre désigné sur la base de la (i+2)-ième tranche d'une chaîne de données.

Description

DISPOSITIF DE MEMOIRE TRIE AVEC COMPRESSION EN ETENDUE
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. Fred in 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 24=16 cellules. Soit à reconnaître les routes qui débutent par les motifs 45A4, 45AB,
67AB, 788A et 788BD, auxquels on attribue 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 45A4, 45AB, 67AB, 788A et 788BD sont respectivement représentés dans la table de la figure 1 par les chemins : T[0,4] ^ T[1 ,5] ^ T[2,A] ^ T[3,4J ; T[0,4J -* T[1 ,5] -* T[2,A] - T[3,B] ; 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,7J -» T[7,8] - 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 {R 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,V|] 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 oeuvre 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 des 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 multi-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 ..2) 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 par j; - 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 Ξ5) 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 par j; - 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 en é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 Pi, un autre opérateur peut accéder au plan mémoire P:_1 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.
Un but de la présente invention est de proposer une méthode efficace de compression d'une mémoire TRIE, qui facilite des traitements à grande vitesse de chaînes de données à analyser. 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 binaires successives 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. Les moyens de mémorisation comportent plusieurs étages successifs, chaque étage comportant au moins un registre de cellules de mémoire. Les moyens d'analyse ont accès à une cellule d'un étage i >0 en relation avec l'analyse de la (i+1 )-ième tranche d'une chaîne de données. Chaque cellule de mémoire non vide d'un étage i >0 contient des données comportant soit un pointeur de poursuite d'analyse désignant un registre de l'étage i+1 , soit une référence associée à un motif binaire mémorisé. Au moins un pointeur contenu dans une cellule d'un étage i >0 inclut d'une part une information d'adressage du registre de l'étage i+1 désigné par ledit pointeur, et d'autre part des données cartographiques pour la localisation d'une cellule au sein dudit registre désigné sur la base de la (i+2)-ième tranche d'une chaîne de données.
Cette organisation des données dans la mémoire TRIE repose sur un schéma de type compression en étendue. Elle en présente les avantages en termes de réduction de l'espace mémoire requis. Comme ce schéma n'impose pas de modifications de la longueur des tranches analysées, il est d'autre part compatible avec une organisation en pipeline des moyens d'analyse.
Par rapport aux méthodes connues de compression en étendue, l'invention procure l'avantage de permettre le traitement d'un pointeur avec un seul cycle de lecture dans la mémoire. La raison en est que les données cartographiques (bitmap) décrivant la répartition des cellules dans un registre de la mémoire ne sont pas stockées dans ce registre, mais dans la cellule du registre (nœud-père) qui pointe vers ce registre. En conséquence, le bitmap peut être lu en même temps que l'adresse du registre auquel il se rapporte, de sorte qu'il n'est pas nécessaire de prévoir un cycle de lecture spécifique pour l'obtention de ce bitmap.
Dans une réalisation particulière du dispositif, les données cartographiques d'un pointeur contenu dans une cellule d'un étage i >0 comprennent un vecteur de 2K bits de rangs 0 à 2K-1 , où K désigne le nombre de bits de ladite (i+2)-ième tranche, chaque bit de rang j (0 ≤j < 2K) ayant une première valeur si au moins un motif mémorisé commence par un préfixe associé audit pointeur et continue par une tranche de K bits formant la représentation binaire du rang j, et sinon une seconde valeur complémentaire de la première valeur.
L'analyse de la (i+2)-ième tranche d'une chaîne de données peut alors comporter, après lecture de la cellule de l'étage i contenant le pointeur, l'extraction d'un bit du vecteur compris dans les données cartographiques dudit pointeur, à un rang dont le contenu de la (i+2)-ième tranche forme la représentation binaire, et, lorsque le bit extrait a la première valeur, la détermination d'un décalage d'adresse au sein du registre désigné de l'étage i+1 sur la base du nombre de bits ayant la première valeur parmi les bits de rang inférieur à j dudit vecteur. Ce décalage d'adresse est combiné avec l'information d'adressage du registre désigné pour former l'adresse d'une cellule à lire dans les moyens de mémorisation. Lorsque le bit extrait a la seconde valeur, l'analyse de la (i+2)-ième tranche donne lieu à la délivrance d'une référence pour la chaîne de données analysée. Il peut s'agir d'une référence par défaut. L'obtention de la référence délivrée peut aussi requérir un accès à la mémoire. L'analyse de la (i+2)-ième tranche comporte dans ce cas, lorsque le bit extrait a la seconde valeur, la détermination sur la base du pointeur de l'adresse d'une cellule à lire dans les moyens de mémorisation, contenant une référence associée à un motif binaire mémorisé qui est le plus long motif mémorisé formant préfixe de la chaîne de données analysée.
Dans un mode de réalisation avantageux, les moyens de mémorisation sont répartis en N zones de mémoire distinctes de niveaux 0 à N-1 , N étant inférieur à un nombre maximum d'étages des moyens de mémorisation, et les moyens d'analyse sont organisés en pipeline en relation avec les N zones de mémoire.
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 montre en deux diagrammes un exemple de contenu d'une cellule de mémoire dans une réalisation de l'invention; et - la figure 7 est un diagramme illustrant des opérations logiques effectuées dans une 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 VPIA CI ("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 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 destinée à recevoir une chaîne de données à analyser par tranches de K = 4 bits.
La mémoire TRIE comporte un plan mémoire 14, avantageusement réalisé en technologie SRAM ("Static Random Access Memory"). Ce plan mémoire comporte un bus de données D de largeur 32 bits, ainsi qu'un bus d'adresse AD, dont la largeur dépend de la quantité de données à stocker dans la mémoire TRIE. La plan mémoire 14 est organisé sous forme d'un ensemble de registres correspondant chacun à un nœud d'un arbre tel que celui illustré par la figure 3. Ces registres sont donc logiquement distribués en étages i = 0, 1 , 2, ...etc.. Chaque registre comporte une ou plusieurs cellules de mémoire de taille 32 bits, adressables par le bus AD. L'unité d'analyse 13 comporte un circuit 20 de détection de type de cellule, relié au bus de données D, une logique 21-25 de traitement de données cartographiques (vecteur bitmap) et un module 26 de calcul d'adresse.
Une logique de codage 27 associée au registre tampon 15 fournit à l'unité 13 les quartets successifs des chaînes de données analysées sous forme de deux mots W.,, W2 de 2K = 16 bits. Ce codage est opéré par la logique 27 indépendamment du contenu de la mémoire TRIE 14, de sorte qu'il peut être effectué sans subir les contraintes temporelles liées au rythme des accès à la mémoire. La figure 7 illustre ce codage dans le cas particulier où le quartet V correspond au nombre C en notation hexadécimale. Le mot de 16 bits Wi a des bits à 0 partout sauf à la position correspondant à la valeur du quartet V. Le mot de 16 bits mots W2 a des bits à 0 aux positions de poids égal ou supérieur à la valeur du quartet et des bits à 1 aux autres positions. La logique 27 comprend un assemblage adéquat de portes logiques pour exécuter ce codage.
La figure 6 montre le contenu d'une cellule de mémoire dans un exemple particulier de réalisation. Dans cet exemple, les quatre premiers bits de la cellule représentent un drapeau P dont la valeur indique notamment le type (status ou pointeur) des données stockées dans la cellule. Dans le cas d'un status, les 28 bits restants de la cellule constituent la référence S utilisée dans l'opération d'acheminement des paquets et/ou des commandes destinées à l'automate 16.
Dans le cas où la cellule est de type pointeur, le drapeau P est suivi par un champ contenant l'adresse A dans la mémoire 14 du registre de l'étage suivant désigné par le pointeur. Cette adresse A est de 12 bits dans l'exemple considéré. Le reste de la cellule est occupé par un vecteur bitmap B de 2K = 16 bits décrivant l'occupation du registre désigné par l'adresse A.
Le bit de rang j de ce vecteur B (0 ≤j < 2K = 16) a la valeur 0 si au moins un motif mémorisé commence par un préfixe associé au pointeur et continue par un quartet formant la représentation binaire du rang j, c'est-à-dire si la mémoire TRIE contient un ou plusieurs motifs dont l'analyse passe par le registre désigné par le pointeur. Sinon, le bit de rang j a la valeur 1.
Le drapeau P est examiné par le circuit de détection de type de cellule
20 de l'unité d'analyse 13. Si la cellule est de type status, la référence S qui a été lue est délivrée par l'unité 13 en tant que résultat de l'analyse de la chaîne courante. Cette détection de status libère en outre le registre tampon 15 pour qu'il puisse recevoir une prochaine chaîne de données à analyser.
Lorsque le circuit 20 détecte que les données reçues de la mémoire 14 sont de type pointeur, il fournit le vecteur bitmap B extrait de ces données à la logique de traitement 21-25, et l'adresse A du registre désigné au module de calcul d'adresse 26.
Dans la mémoire 14, les cellules d'un même registre sont contiguës, c'est-à-dire stockées à des adresses consécutives. L'adresse A du registre correspond à la position de la première cellule de ce registre, associée à la plus petite valeur valide du quartet V. Les cellules se suivent dans le registre dans l'ordre croissant des valeurs valides de ce quartet V. Le registre comporte donc au maximum 2K = 16 cellules, dans le cas où toutes les valeurs du quartet s'inscrivent dans des motifs différents enregistrés dans la mémoire TRIE. L'opération effectuée par le module de calcul d'adresse 26 consiste à combiner l'adresse A du registre désigné avec un décalage calculé par la logique de traitement 21-25 pour obtenir l'adresse présentée sur le bus AD pour le prochain cycle de lecture dans la mémoire 14. Dans une réalisation possible, cette opération consiste simplement à concaténer l'adresse A avec les bits représentant la valeur du décalage Δ, avec A aux positions de poids fort et Δ aux positions de poids faible. Dans notre exemple, si le décalage Δ est représenté sur 4 bits, l'adresse résultante présentée sur le bus AD est de 12+4 = 16 bits.
La logique de traitement 21-25 calcule deux mots de 16 bits R-| , R2 servant à calculer le décalage Δ pour le (i+2)-ième cycle d'analyse de la chaîne (i 0) à partir du vecteur bitmap B qui a été lu au (i+1)-ième cycle et des mots
W1 ( W2 résultant du codage du (i+1 )-ième quartet. La production de ces deux mots R1 , R2 est illustrée par la figure 7.
Le premier mot R1 résulte d'une opération logique ET effectuée bit à bit entre le mot W1 et le vecteur bitmap B par 16 portes ET parallèles, schématisées collectivement par la porte 21. Si le mot R1 comporte un bit à 1
(à la position donnée par le quartet V), c'est que le quartet est valide, c'est-à- dire inclus dans un chemin enregistré dans la mémoire TRIE. Sinon, c'est un status par défaut qui sera retourné par l'unité d'analyse 13.
Le mot R2 résulte d'une opération logique ET effectuée bit à bit entre le mot W2 et le vecteur bitmap B par 16 portes ET parallèles, schématisées par la porte 23. On voit que le nombre de bits à 1 du mot R2 mesure le décalage Δ lorsque la valeur du quartet V est valide. Pour évaluer cette condition de validité, la porte 22 (figure 5) calcule le OU logique entre les 16 bits du mot R., .
Le bit résultant commande le multiplexeur 24 pour adresser au module de pesage 25 soit le mot R2 si R1 ≠ 0000000000000000, soit le vecteur bitmap B si R., = 0000000000000000. Le module de pesage 25 compte le nombre de bits à 1 dans le mot de 16 bits qui lui est présenté, ce qui donne la valeur du décalage Δ.
Pour le premier cycle d'analyse, le vecteur bitmap B présenté aux portes 21 , 23 avec le premier quartet de la chaîne est initialisé à une valeur décrivant l'occupation du registre portier. Cette valeur est par exemple lue dans un registre d'initialisation spécifique.
Le mode de compression et de stockage des données de la mémoire TRIE qui vient d'être décrit permet d'effectuer l'analyse des chaînes de données en mode pipeline afin d'accroître le rythme d'analyse des données, la mémoire 14 étant répartie en N zones de mémoire distinctes de niveaux 0 à N-1 , comme indiqué plus haut.

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 binaires successives 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, chaque étage comportant au moins un registre de cellules de mémoire, et les moyens d'analyse (13) ont accès à une cellule d'un étage i >0 en relation avec l'analyse de la (i+1 )-ième tranche d'une chaîne de données, dans lequel chaque cellule de mémoire non vide d'un étage i 0 contient des données comportant soit un pointeur de poursuite d'analyse désignant un registre de l'étage i+1 , soit une référence (S) associée à un motif binaire mémorisé, et dans lequel au moins un pointeur contenu dans une cellule d'un étage i >0 inclut d'une part une information (A) d'adressage du registre de l'étage i+1 désigné par ledit pointeur, et d'autre part des données cartographiques (B) pour la localisation d'une cellule au sein dudit registre désigné sur la base de la (i+2)-ième tranche d'une chaîne de données.
2. Dispositif selon la revendication 1 , dans lequel les données cartographiques d'un pointeur contenu dans une cellule d'un étage i >0 comprennent un vecteur (B) de 2K bits de rangs 0 à 2K-1 , où K désigne le nombre de bits de ladite (i+2)-ième tranche, chaque bit de rang j (0 ≤j < 2K) ayant une première valeur si au moins un motif mémorisé commence par un préfixe associé audit pointeur et continue par une tranche de K bits formant la représentation binaire du rang j, et sinon une seconde valeur complémentaire de la première valeur.
3. Dispositif selon la revendication 2, dans lequel l'analyse de ladite (i+2)-ième tranche d'une chaîne de données comporte, après lecture de la cellule de l'étage i contenant le pointeur, l'extraction d'un bit du vecteur compris dans les données cartographiques dudit pointeur, à un rang dont le contenu de ladite (i+2)-ième tranche forme la représentation binaire, et, lorsque le bit extrait a la première valeur, la détermination d'un décalage d'adresse au sein du registre désigné de l'étage i+1 sur la base du nombre de bits ayant la première valeur parmi les bits de rang inférieur à j dudit vecteur, ledit décalage d'adresse étant combiné avec ladite information d'adressage du registre désigné pour former l'adresse d'une cellule à lire dans les moyens de mémorisation.
4. Dispositif selon la revendication 3, dans lequel l'analyse de ladite (i+2)-ième tranche comporte, lorsque le bit extrait a la seconde valeur, la délivrance d'une référence par défaut pour la chaîne de données analysée.
5. Dispositif selon la revendication 3, dans lequel l'analyse de ladite (i+2)-ième tranche comporte, lorsque le bit extrait a la seconde valeur, la détermination sur la base du pointeur de l'adresse d'une cellule à lire dans les moyens de mémorisation, contenant une référence associée à un motif binaire mémorisé qui est le plus long motif mémorisé formant préfixe de la chaîne de données analysée.
6. Dispositif selon l'une quelconque des revendications précédentes, dans lequel l'analyse de chaque tranche d'une chaîne de données comporte une unique opération de lecture d'une cellule des moyens de mémorisation.
7. Dispositif selon l'une quelconque des revendications précédentes, dans lequel les moyens de mémorisation sont répartis en N zones de mémoire distinctes (P0, P-j) de niveaux 0 à N-1 , N étant inférieur à un nombre maximum d'étages des moyens de mémorisation, et dans lequel les moyens d'analyse sont organisés en pipeline en relation avec les N zones de mémoire.
PCT/FR2003/002507 2003-08-11 2003-08-11 Dispositif de memoire trie avec compression en etendue WO2005024840A1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/FR2003/002507 WO2005024840A1 (fr) 2003-08-11 2003-08-11 Dispositif de memoire trie avec compression en etendue
AU2003274245A AU2003274245A1 (en) 2003-08-11 2003-08-11 Trie memory device with width compression

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/FR2003/002507 WO2005024840A1 (fr) 2003-08-11 2003-08-11 Dispositif de memoire trie avec compression en etendue

Publications (1)

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

Family

ID=34259338

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2003/002507 WO2005024840A1 (fr) 2003-08-11 2003-08-11 Dispositif de memoire trie avec compression en etendue

Country Status (2)

Country Link
AU (1) AU2003274245A1 (fr)
WO (1) WO2005024840A1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107798117A (zh) * 2017-11-08 2018-03-13 杭州迪普科技股份有限公司 一种数据存储与读取的方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020040361A1 (en) * 1999-06-02 2002-04-04 Nokia Corporation Memory based on a digital trie structure
US6560610B1 (en) * 1999-08-10 2003-05-06 Washington University Data structure using a tree bitmap and method for rapid classification of data in a database

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020040361A1 (en) * 1999-06-02 2002-04-04 Nokia Corporation Memory based on a digital trie structure
US6560610B1 (en) * 1999-08-10 2003-05-06 Washington University Data structure using a tree bitmap and method for rapid classification of data in a database

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107798117A (zh) * 2017-11-08 2018-03-13 杭州迪普科技股份有限公司 一种数据存储与读取的方法和装置
CN107798117B (zh) * 2017-11-08 2020-12-04 杭州迪普科技股份有限公司 一种数据存储与读取的方法和装置

Also Published As

Publication number Publication date
AU2003274245A1 (en) 2005-03-29

Similar Documents

Publication Publication Date Title
Eatherton et al. Tree bitmap: hardware/software IP lookups with incremental updates
US7237058B2 (en) Input data selection for content addressable memory
US8780926B2 (en) Updating prefix-compressed tries for IP route lookup
US7177978B2 (en) Generating and merging lookup results to apply multiple features
US7765183B2 (en) Hierarchical tree of deterministic finite automata
US6728732B1 (en) Data structure using a tree bitmap and method for rapid classification of data in a database
US5546390A (en) Method and apparatus for radix decision packet processing
US7281085B1 (en) Method and device for virtualization of multiple data sets on same associative memory
EP1030493B1 (fr) Procédé pour associer des références d&#39;acheminement à des paquets de données au moyen d&#39;une mémoire TRIE, et dispositif de traitement de paquets appliquant ce procédé
US20060155875A1 (en) Hierarchical associative memory-based classification system
Huang et al. A fast IP routing lookup scheme for gigabit switching routers
EP0552384B1 (fr) Procédé pour réduire le nombre de bits d&#39;un mot binaire représentant une suite d&#39;adresses
US20040254909A1 (en) Programming routes and access control lists in comparison tree data structures and their use such as in performing lookup operations
US20080186974A1 (en) System and method to process data packets in a network using stateful decision trees
Le et al. Scalable tree-based architectures for IPv4/v6 lookup using prefix partitioning
EP0639013A1 (fr) Procédé et dispositif d&#39;analyse d&#39;informations contenues dans des structures de données
US7249149B1 (en) Tree bitmap data structures and their use in performing lookup operations
EP1335565B1 (fr) Procédé et dispositif pour le traitement de paquets de données
US9900409B2 (en) Classification engine for data packet classification
Waldvogel Multi-dimensional prefix matching using line search
EP1678632A1 (fr) Dispositif de memoire de type trie avec mecanisme de compression
WO2005024840A1 (fr) Dispositif de memoire trie avec compression en etendue
EP0857005B1 (fr) Procédé pour associer des données à des cellules ATM
EP1702275A1 (fr) Dispositif de memoire trie a mecanisme de pipeline circulaire
EP0989502B1 (fr) Procede de mise a jour d&#39;une memoire associative de type trie, et routeur mettant en oeuvre un tel procede

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
122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP