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.