FR3006786A1 - Accelerateur materiel pour la manipulation d'arbres rouges et noirs - Google Patents

Accelerateur materiel pour la manipulation d'arbres rouges et noirs Download PDF

Info

Publication number
FR3006786A1
FR3006786A1 FR1355181A FR1355181A FR3006786A1 FR 3006786 A1 FR3006786 A1 FR 3006786A1 FR 1355181 A FR1355181 A FR 1355181A FR 1355181 A FR1355181 A FR 1355181A FR 3006786 A1 FR3006786 A1 FR 3006786A1
Authority
FR
France
Prior art keywords
node
address
data
register
key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1355181A
Other languages
English (en)
Other versions
FR3006786B1 (fr
Inventor
Alexandre Carbon
Yves Lhuillier
Henri Pierre Charles
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Original Assignee
Commissariat a lEnergie Atomique CEA
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
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 Commissariat a lEnergie Atomique CEA, Commissariat a lEnergie Atomique et aux Energies Alternatives CEA filed Critical Commissariat a lEnergie Atomique CEA
Priority to FR1355181A priority Critical patent/FR3006786B1/fr
Priority to EP14725486.6A priority patent/EP3005107A1/fr
Priority to PCT/EP2014/060544 priority patent/WO2014195141A1/fr
Priority to US14/893,034 priority patent/US20160098434A1/en
Publication of FR3006786A1 publication Critical patent/FR3006786A1/fr
Application granted granted Critical
Publication of FR3006786B1 publication Critical patent/FR3006786B1/fr
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24562Pointer or reference processing operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Generation (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Accélérateur matériel pour la manipulation d'arbres rouges et noirs, chaque nœud d'un dit arbre comprenant un indicateur binaire de couleur, une clé et les adresses d'un nœud parent et de deux nœuds fils, ledit accélérateur comprenant - au moins deux registres dits registres de nœud (RN1, RN2), pouvant stocker l'ensemble des champs de données de deux nœuds d'un dit arbre ; et - des unités logiques (UC, UT) configurées pour recevoir d'un processeur (PROC) au moins une donnée d'entrée choisie parmi une adresse d'un nœud d'un dit arbre et une clé dite de référence, ainsi qu'au moins une instruction à exécuter ; pour exécuter ladite instruction en combinant des instructions élémentaires sur les données stockées dans lesdits registres de nœuds et pour fournir audit processeur au moins une donnée de sortie comprenant une adresse d'un dit nœud. Processeur et système informatique comprenant un tel accélérateur matériel.

Description

ACCELERATEUR MATERIEL POUR LA MANIPULATION D'ARBRES ROUGES ET NOIRS L'invention porte sur un accélérateur matériel - c'est-à-dire un circuit numérique dédié coopérant avec un processeur ou intégré à ce dernier pour accélérer certaines opérations de traitement de données - pour la manipulation de structures de données connues sous le nom de « arbres rouges et noirs ». L'invention porte également sur un processeur intégrant un tel accélérateur matériel et sur un système informatique comprenant un processeur, un tel accélérateur matériel et une mémoire.
Les arbres rouges et noirs, ou arbres colorés, sont des structures de données bien connues, permettant de stocker des données triés en fonction d'une clé de référence. Ces structures de données sont des arbres binaires auxquels est rajoutée une propriété de coloration des noeuds dans lesquels sont contenues les données manipulées. Cette propriété permet d'assurer une manipulation de ces arbres avec une complexité inférieure à celle des arbres binaires classiques, en O(log n), n correspondant au nombre total de noeuds dans l'arbre, aussi bien pour les opérations d'insertion que de suppression. Cette représentation est notamment fortement utilisée dans le cadre de l'implémentation des tableaux associatifs. Les tableaux associatifs, implémentées sous la forme d'arbres rouges et noirs constituent une collection de couples de clefs et de valeurs permettant l'association d'un ensemble de clés à un ensemble correspondant de valeurs. Il existe de nombreuses librairies de programmation optimisées pour la manipulation d'arbres rouges et noirs, par exemple dans le cadre de la libraire standard GNU C++. Néanmoins, il a été démontré que l'implémentation optimale des tableaux associatifs, au moins pour la réalisation d'allocateurs de mémoire, ne repose pas sur l'utilisation d'arbres rouges et noirs, mais de tables de hachage. Voir à ce propos Emery D. Berger, Benjamin G. Zorn et Kathryn S. McKinley. « Reconsidering custom memory allocation », Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (OOPSLA '02). ACM, New York, NY, USA, 1-12, 2012. L'article de Amir Roth, Andreas Moshovos et Gurindar S. Sohi « Dependence based prefetching for linked data structures » SIGOPS Oper. 5 Syst. Rev. 32, 5 (Octobre 1998), 115-126, décrit une unité de pré-chargement des structures de données chainées avec pointeurs. Une telle unité permet d'accélérer le parcours des chaines de pointeurs, et donc le traitement des arbres rouges et noirs qui, comme bien d'autres structures de données, utilisent de telles chaines. Une telle unité n'est cependant pas spécifique à la 10 manipulation des arbres rouges et noirs, et ne permet d'obtenir qu'un gain de temps d'exécution limité. L'invention vise à accélérer la manipulation des arbres rouges et noirs et, de ce fait, des tableaux associatifs implémentés au moyen de tels arbres. 15 Conformément à l'invention, un tel but est atteint grâce à un accélérateur matériel, utilisé conjointement à une représentation logicielle légèrement modifiée des arbres rouges et noirs. Un objet de l'invention est donc un accélérateur matériel pour la manipulation d'arbres rouges et noirs, chaque dit arbre 20 comprenant plusieurs noeuds, chaque dit noeud comprenant des champs de données de longueur prédéfinie représentant : un indicateur de couleur, prenant une valeur binaire ; une clé ; une adresse d'un autre noeud du même arbre, dit parent ; 25 une adresse d'un autre noeud du même arbre, dit enfant de gauche ; et une adresse d'un autre noeud du même arbre, dit enfant de droite ; ledit accélérateur matériel comprenant : 3 0 au moins deux registres dits registres de noeud, pouvant stocker l'ensemble des champs de deux noeuds d'un dit arbre ; et - des unités logiques configurées pour recevoir d'un processeur au moins une donnée d'entrée choisie parmi une adresse d'un noeud d'un dit arbre et une clé dite de référence, ainsi qu'au moins une instruction à exécuter ; pour exécuter ladite instruction en effectuant une combinaison des opérations suivantes : - envoyer vers ladite mémoire une adresse, recevoir de ladite mémoire l'ensemble des champs de données du noeud dudit arbre correspondant à ladite adresse et les écrire dans un dit registre en remplacement des champs de données ; - envoyer vers la mémoire l'ensemble des champs de données d'un noeud dudit arbre ainsi qu'une adresse de ladite mémoire à laquelle lesdits champs de données doivent être enregistrés ; - changer la valeur d'un indicateur de couleur stocké dans un dit registre de noeud ; et - échanger entre elles deux adresses stockées dans deux dits registres de noeud ; et pour fournir audit processeur au moins une donnée de sortie comprenant une adresse stockée dans un dit registre de noeud. Selon différentes caractéristiques avantageuses de 2 0 l'invention, prises séparément ou en combinaison : - L'accélérateur matériel peut comprendre également un registre, dit registre de référence, pouvant stocker soit une clé, dite de référence, reçue dudit processeur, soit une dite clé de référence et un indicateur de couleur. 25 - Lesdites unités logiques peuvent comprendre une unité de traitement et une unité de contrôle, ladite unité de contrôle étant configurée pour : recevoir une dite adresse d'un noeud d'un dit arbre en tant que donnée d'entrée et la transmettre à ladite mémoire ; recevoir une dite clé de référence en tant que donnée d'entrée et la stocker dans ledit registre de référence ; 3 0 recevoir une dite instruction à exécuter en tant que donnée d'entrée, ainsi qu'un ou plusieurs signaux de condition en provenance de ladite unité de traitement ; en réponse à ladite instruction à exécuter et à ladite ou à des dits signaux de condition, générer des signaux de contrôle de ladite unité de traitement ; et fournir, en tant que donnée de sortie, une adresse de noeud reçue de ladite unité de traitement. - Ladite unité de contrôle peut être un automate à état finis. - L'accélérateur matériel peut comprendre également un registre, dit registre temporaire, pouvant stocker une adresse, dite adresse temporaire, d'un noeud d'un dit arbre. - Ladite unité de traitement peut être configurée pour exécuter, en réponse à un dit signal de contrôle, au moins les opérations 10 suivantes : a. comparer la clé de référence stockée dans ledit registre de référence avec une clé stockée dans un champ de données d'un dit registre de noeud, et fournir le résultat de cette comparaison à ladite unité de contrôle en tant que signal de condition ; 15 b. comparer à une valeur prédéterminée une adresse stockée dans un champ de données d'un dit registre de noeud, et fournir le résultat de cette comparaison à ladite unité de contrôle en tant que signal de condition ; c. comparer à une valeur prédéterminée un indicateur 20 de couleur stocké dans un champ de données d'un dit registre de noeud, et fournir le résultat de cette comparaison à ladite unité de contrôle en tant que signal de condition ; d. changer la valeur d'un indicateur de couleur stocké dans un champ de données d'un dit registre de noeud ; 25 e. envoyer à ladite mémoire, pour écriture, l'ensemble des champs de données d'un dit registre de noeud ; f. recevoir de ladite mémoire l'ensemble des champs de données d'un noeud d'un dit arbre et les stocker dans un dit registre de noeud ; 30 g. écrire ladite adresse temporaire, stockée dans ledit registre temporaire, dans un champ de données d'un dit registre de noeud, en remplacement d'une adresse stockée dans ledit champ ; et h. écrire une adresse stockée un champ de données d'un dit registre de noeud dans ledit registre temporaire, en remplacement de ladite adresse temporaire. - - Ladite unité de traitement peut comprendre : une unité de sélection et soustraction configurée pour recevoir à une première entrée, par l'intermédiaire d'un premier multiplexeur, le contenu dudit registre temporaire ou dudit registre de référence, à une deuxième entrée, par l'intermédiaire d'un deuxième multiplexeur, un champ de données de clé ou de clé et d'indicateur de couleur issu d'un dit registre de noeud et à une entrée de contrôle, un signal de contrôle en provenance de ladite unité de contrôle, et pour fournie à sa sortie, en fonction dudit signal de contrôle, soit l'une desdites première et deuxième entrée, soit leur différence ; une unité de réorganisation configurée pour recevoir à une première entrée, la sortie de ladite unité de comparaison et soustractions, à une deuxième entrée, un champ de données de clé ou de clé et d'indicateur de couleur issu d'un dit registre de noeud, à une troisième, une quatrième et une cinquième entrée, par l'intermédiaire dudit deuxième multiplexeur, trois champs de données d'adresse issus d'un dit registre de noeud et à une entrée de contrôle, un signal de contrôle en provenance de ladite unité de contrôle ; et pour fournir : à une première sortie, un champ de données de clé, de clé et d'indicateur de couleur ou d'adresse présent à l'une de ses entrées, la valeur dudit indicateur de couleur pouvant être modifiée, à une deuxième sortie, un champ de données d'adresse présent à sa deuxième, sa troisième ou sa quatrième adresse ; et/ou à une troisième sortie, l'ensemble des champs de données représentatifs d'un noeud dudit arbre, obtenus par sélection et permutation des champs de données présents à ses entrées, avec modification éventuelle d'un indicateur de couleur ; un ensemble de comparateurs à zéro des champs de données fournis à la troisième, quatrième et cinquième entrée de ladite unité de réorganisation et d'un indicateur de couleur stocké dans ledit registre de référence, les sorties desdits comparateurs étant fournies à ladite unité de contrôle en tant que données de condition ; et un réseau de distribution des données configuré pour : fournir un champ de données issu de la première sortie de l'unité de réorganisation soit audit registre temporaire, soit audit registre de référence, en fonction d'un signal de contrôle en provenance de ladite unité de contrôle, ainsi qu'à ladite unité de contrôle, fournir un champ de données issu de la deuxième sortie de l'unité de réorganisation à ladite mémoire ; fournir des champs de données issus de la troisième sortie de l'unité de réorganisation à ladite mémoire ; fournir des champs de données issus de la troisième sortie de l'unité de réorganisation ou de ladite mémoire à l'un desdits registres de noeud, en fonction d'un signal de contrôle en provenance de ladite unité de contrôle. - Ladite unité de traitement peut être configurée pour générer, en réponse à une instruction reçue en tant que donnée d'entrée, une séquence de signaux de contrôle permettant l'exécution d'une opération choisie parmi les suivantes : A. Chercher, dans un arbre rouge et noir stocké dans ladite mémoire, le noeud dit successeur présentant une clé de valeur immédiatement supérieure à celle d'un noeud dont l'adresse est fournie en tant que donnée d'entrée, et fournir, en tant que donnée de sortie, l'adresse dudit noeud successeur ; B. Chercher, dans un arbre rouge et noir stocké dans ladite mémoire, le noeud dit prédécesseur présentant une clé de valeur immédiatement inférieure à celle d'un noeud dont l'adresse est fournie en tant que donnée d'entrée, et fournir, en tant que donnée de sortie, l'adresse dudit noeud successeur ; C. Chercher, dans un arbre rouge et noir stocké dans ladite mémoire et dont l'adresse d'un point d'accès est fournie en tant que première donnée d'entrée, le noeud dont l'adresse est fournie en tant que deuxième donnée d'entrée, le supprimer et modifier la structure de l'arbre rouge et noire en conséquence ; D. Insérer, dans un arbre rouge et noir stocké dans ladite mémoire et dont l'adresse d'un point d'accès est fournie en tant que première donnée d'entrée, un noeud dont l'adresse est fournie en tant que deuxième donnée d'entrée et modifier la structure de l'arbre rouge et noire en conséquence ; E. Chercher, dans un arbre rouge et noir stocké dans ladite mémoire et dont l'adresse d'un point d'accès est fournie en tant que première donnée d'entrée, le premier noeud dont la clé est supérieure ou égale à une clé de référence fournie en tant que deuxième donnée d'entrée et fournir, en tant que donnée de sortie, l'adresse de ce noeud ; et F. Chercher, dans un arbre rouge et noir stocké dans ladite mémoire et dont l'adresse d'un point d'accès est fournie en tant que première donnée d'entrée, le premier noeud dont la clé est strictement supérieure ou égale à une clé de référence fournie en tant que deuxième donnée d'entrée et fournir, en tant que donnée de sortie, l'adresse de ce noeud. - Lesdites unités logiques peuvent comprendre également un dispositif d'interface avec ladite mémoire configuré pour : recevoir de ladite unité de contrôle l'adresse d'une location de ladite mémoire ; et transférer le contenu de ladite location de mémoire dans un dit registre de noeud, ou inversement. - Un tel accélérateur peut comprendre exactement trois 20 registres de noeud. - L'indicateur de couleur et la clé de chaque dit noeud peuvent être représentés par des bits différents d'un même champ de données, ledit indicateur de couleur étant représenté par un seul bit dudit champ. 25 - Plus particulièrement, chaque dit noeud peut être représenté par : un champ de données dont un bit représente ledit indicateur de couleur et les bits restants représentent ladite clé ; et trois autres champs de données représentant les adresses desdits noeuds parent, enfant de gauche et enfant de droite ; lesdits champs de données présentant tous un 3 0 même nombre de bits.
Un autre objet de l'invention est un processeur comprenant un tel accélérateur matériel en tant qu'unité fonctionnelle ayant accès au premier niveau de mémoire cache. Encore un autre objet de l'invention est un système informatique comprenant un processeur, une mémoire et un tel accélérateur matériel reliés entre eux par un bus système, ledit processeur étant configuré ou programmé pour communiquer avec ledit accélérateur matériel par l'intermédiaire de requêtes de système et pour assurer une cohérence de cache.
D'autres caractéristiques, détails et avantages de l'invention ressortiront à la lecture de la description faite en référence aux dessins annexés donnés à titre d'exemple et qui représentent, respectivement : - les figures 1A et 1B, respectivement, une structure de données utilisée pour représenter un noeud d'un arbre rouge et noir selon l'art antérieur et selon l'invention ; - la figure 2, l'architecture d'un accélérateur matériel selon un mode de réalisation de l'invention ; - la figure 3, un processeur intégrant un accélérateur matériel selon un mode de réalisation de l'invention ; - la figure 4, un système informatique comprenant un processeur, un accélérateur matériel selon un autre mode de réalisation de l'invention et une mémoire ; et - la figure 5, un graphique illustrant le gain de performance obtenu grâce à un accélérateur matériel selon un mode de réalisation de l'invention par rapport à un traitement purement logiciel et « standard » des arbres rouges et noirs ainsi que par rapport à un traitement logiciel optimisé réalisé dans l'environnement LLVM. Un arbre rouge et noir est un arbre binaire dans lequel chaque noeud a une propriété dite « couleur », qui peut prendre deux valeurs - conventionnellement « rouge » et « noir ». Comme dans tout arbre binaire, chaque noeud a un noeud « parent » (sauf le noeud racine) et deux noeuds « enfants » (sauf les noeuds dits « feuilles », qui terminent les branches de l'arbre), et plus précisément un enfant « de gauche » et un enfant « de droite ». Chaque noeud d'un arbre rouge et noir (mais cela est vrai aussi pour un arbre binaire « générique ») est également caractérisé par une « clé ». Les clés des différents noeuds sont ordonnées, et la règle suivante s'applique : le noeud enfant de gauche de chaque noeud présente une clé de valeur inférieure à celle de la clé de son parent, le noeud enfant de droite de chaque noeud présente une clé de valeur supérieure à celle de la clé de son parent. Un arbre rouge et noir doit en outre satisfaire les propriétés suivantes : - le noeud racine est noir ; - les noeuds feuilles sont noirs ; - les enfants de chaque noeud rouge sont noirs ; - chaque chemin simple allant d'un noeud à l'un quelconque de ses descendants contient un même nombre de noeuds noirs. Ces propriétés assurent que l'arbre est au moins 15 approximativement équilibré, ce qui n'est pas le cas d'un arbre binaire générique. Un arbre rouge et noir est, dans le cadre d'un mode de réalisation préféré de l'invention comme dans le cadre d'autres implémentations logicielles telles que celle de la librairie standard GNU C++, 20 référencé à partir d'un noeud, dit « noeud entête » ou plus simplement « entête » (« header » en anglais). Ce noeud entête possède la même structure que les noeuds de l'arbre, mais son noeud parent est le noeud racine de l'arbre, son noeud enfant de gauche est le noeud feuille le plus à gauche de l'arbre, soit le noeud présentant la plus petite clé de tous les noeuds de l'arbre, 25 son noeud enfant de droite est le noeud feuille le plus à droite de l'arbre, soit le noeud présentant la plus grande clé de tous les noeuds de l'arbre. Enfin, le champ de couleur et celui de clé du noeud entête sont inutilisés. Le noeud entête est un point d'entrée de l'arbre utilisé pour accéder rapidement au noeud de l'arbre rouge et noir, lors des manipulations de ce dernier. Un autre 30 avantage de l'utilisation d'un noeud entête est lié à la stabilité de ce noeud durant toute la durée de vie de l'arbre, alors que le noeud racine peut être amené à changer au cours des manipulations de l'arbre.
Conventionnellement, un noeud d'un arbre binaire est représenté par une structure de données du type illustré sur la figure 1A. Cette structure comprend : - un champ de couleur COL, par exemple de type « long », 5 encodé sur 32 bits ; - trois champs contenant des adresses d'autres noeuds de l'arbre (PAR, EG, ED), respectivement le noeud parent, le noeud enfant de gauche et le noeud enfant de droite), par exemple encodés sur 32 bits chacun ; et 10 - un champ CLE contenant la clé du noeud, encodée sur un nombre variable de bits. Il s'ensuit que la taille globale de la structure de données représentant un noeud d'un arbre rouge et noir est de taille variable. Or, pour réaliser un accélérateur matériel il est nécessaire que 15 chaque noeud présente une taille constante et prédéfinie. Par conséquent, la clé CLE est remplacée par une « clé réduite » constituée par un nombre prédéterminé de bits. Le remplacement d'une clé de taille variable par une clé de taille fixe peut avoir par conséquence le passage d'un ordre total des noeuds à un ordre partiel dans lequel deux noeuds ayant des clés différentes 20 ont une même clé réduite. Il est toujours possible d'assurer que le passage de la clé à la clé réduite préserve l'ordre des noeuds, au moins au sens d'un ordre partiel ; ainsi si la clé du noeud n est supérieure à la clé du noeud m, alors la clé réduite du noeud n est supérieure ou égale à celle du noeud m. Dans le cas de l'égalité, on pourra avoir recours à un post-traitement logiciel 25 pour résoudre l'ambigüité d'ordonnancement en revenant (en dehors de l'accélérateur matériel) à une représentation complète de la clé. Etant donné que la couleur prend une valeur binaire, l'encodage sur 32 bits de l'implémentation conventionnelle est fortement redondante ; cela est sans conséquence grave dans le cas d'un traitement 30 purement logiciel, mais augmente inutilement le coût et la complexité d'un accélérateur matériel. Par conséquent, dans une structure de donnée 3006 786 11 optimisée pour la mise en oeuvre de l'invention la couleur est codée sur un seul bit. Enfin, pour la réalisation d'un accélérateur matériel il est préférable que tous les champs de données représentant un noeud aient une 5 même taille, par exemple 32 bits. On parvient ainsi à la structure de données de la figure 1 B, comprenant 4 champs de 32 bits : - un champ CRCO, contenant un sous-champ de clé réduite CR (dans la suite on parlera simplement de « clé »), à 31 bits, et un 10 sous-champ de couleur CO, à 1 seul bit ; - trois champs d'adresse à 32 bits chacun, comme dans la structure conventionnelle ; pour un total de 128 bits par noeud. Bien entendu, le nombre de bits de chaque champ de données peut être choisi différent de 32. 15 La représentation d'un arbre rouge et noir par la structure de données de la figure 1B (ou une structure équivalente, obtenue en modifiant l'ordre des différents champs) n'est pas essentielle, mais est préférée. La variable X, de type « rbtree_node_t* » (pointeur à un noeud d'arbre rouge et noir) contient l'adresse du premier champ de donnée 20 d'un tel noeud (ici, le champ CRCO, mais cela n'est pas essentiel). Un accélérateur matériel selon l'invention exécute, pour le compte d'un processeur, certaines instructions nécessaires à la manipulation des arbres rouges et noirs, et notamment : A. Chercher, dans un arbre rouge et noir stocké en mémoire, 25 le noeud « successeur » d'un noeud donné, c'est-à-dire le noeud présentant une clé de valeur immédiatement supérieure. Le paramètre de la fonction (donnée fournie en entrée à l'accélérateur matériel) est l'adresse du noeud dont le successeur doit être trouvé ; la valeur de sortie de la fonction et l'adresse dudit noeud successeur. 30 B. Chercher, dans un arbre rouge et noir stocké en mémoire, le noeud « prédécesseur » d'un noeud donné, c'est-à-dire le noeud présentant une clé de valeur immédiatement inférieure. Le paramètre de la fonction est l'adresse du noeud dont le successeur doit être trouvé ; la valeur de sortie de la fonction et l'adresse dudit noeud prédécesseur. C. Chercher, dans un arbre rouge et noir stocké en mémoire, un noeud dont l'adresse est fournie en entrée, le supprimer et modifier la structure de l'arbre rouge et noire en conséquence, de manière à respecter les règles énoncées plus haut. Les paramètres de la fonction sont l'adresse d'un point d'accès à l'arbre et celle du noeud à supprimer ; la valeur de sortie, optionnelle, est l'adresse du noeud de l'arbre supprimé, correspondant au deuxième paramètre de la fonction.
D. Insérer, dans un arbre rouge et noir stocké en mémoire, un noeud dont l'adresse est fournie en entrée, et modifier la structure de l'arbre rouge et noire en conséquence, de manière à respecter les règles énoncées plus haut. Les paramètres de la fonction sont l'adresse de l'entête de l'arbre et celle du noeud à ajouter.
E. Chercher, dans un arbre rouge et noir stocké dans ladite mémoire et dont l'adresse est fournie en tant que première donnée d'entrée, le premier noeud dont la clé est supérieure ou égale à une clé de référence fournie en tant que deuxième donnée d'entrée et fournir, en tant que donnée de sortie, l'adresse de ce noeud. Les paramètres de la fonction sont l'adresse d'un point d'accès à l'arbre et la clé de référence ; la valeur de sortie est l'adresse du noeud trouvé. F. Chercher, dans un arbre rouge et noir stocké dans ladite mémoire et dont l'adresse est fournie en tant que première donnée d'entrée, le premier noeud dont la clé est strictement supérieure ou égale à une clé de référence fournie en tant que deuxième donnée d'entrée et fournir, en tant que donnée de sortie, l'adresse de ce noeud. Les paramètres de la fonction sont l'adresse d'un point d'accès à l'arbre et la clé de référence ; la valeur de sortie est l'adresse du noeud trouvé. Le point d'accès à l'arbre est généralement son noeud entête.
L'accélérateur peut éventuellement exécuter également d'autres instructions. Il est également possible d'envisager d'autres jeux d'instructions équivalents, permettant eux aussi de manipuler des arbres rouges et noir. En tout cas, l'accélérateur doit avoir accès à une mémoire, partagée avec le processeur, stockant les structures de données à manipuler.
Cette mémoire doit être la cache de niveau 1 du processeur, ou une mémoire maintenue cohérente avec ladite cache par des mécanismes connus de l'art antérieur. L'accélérateur reçoit du processeur les instructions et leurs paramètres, et lui restitue la valeur de sortie.
Pour pouvoir exécuter ces instructions, un accélérateur selon un mode de réalisation de l'invention comprend au moins deux (de préférence trois) registres pouvant stocker l'ensemble des champs de données d'un noeud, et des circuits logiques pour exécuter des opérations plus simples, dans lesquelles les instructions ci-dessus peuvent être décomposées. Ces opérations sont les suivantes : - envoyer vers ladite mémoire un champ d'adresse, recevoir de ladite mémoire l'ensemble des champs de données du noeud dudit arbre correspondant à ladite adresse et les écrire dans un dit registre en remplacement des champs de données stockés dans ledit registre ; - envoyer vers la mémoire l'ensemble des champs de données d'un noeud dudit arbre ainsi qu'une adresse de ladite mémoire à laquelle lesdits champs de données doivent être enregistrés ; - changer la valeur d'un indicateur de couleur stocké dans un dit registre de noeud ; et - échanger entre elles deux adresses stockées dans deux dits registres de noeud. La valeur de sortie, fournie au processeur, est un champ d'adresse. 3 0 Dans un mode de réalisation préféré de l'accélérateur de l'invention, ces opérations se décomposent dans des opérations encore plus simples, dites « élémentaires ». La figure 2 illustre schématiquement l'architecture d'un tel accélérateur, qui comprend : - une unité de contrôle UC, modélisée par un automate à états finis ; une unité de traitement UT, comprenant à son tour une unité de sélection et soustraction SUB/SEL, une unité de réorganisation RORG, des multiplexeurs MUX1 et MUX2 situés aux entrées de ces unités, des comparateurs à zéro (ou, de manière équivalente, à un) CMP1, CMP2, CMP3 et un réseau de distribution des données RDD comprenant à son tour un multiplexeur MUX3 et des démultiplexeurs DEMUX1, DEMUX2 ; - une interface de mémoire IM ; et - trois registres de noeuds RN1, RN2, RN3 (comme mentionné plus haut, deux de ces registres pourraient suffire, trois est le nombre optimal tandis qu'un nombre plus élevé n'apporte pas d'avantage particulier), à 128 bits dans le cas de la représentation de la figure 1B, ainsi que deux registres additionnels pouvant stocker un seul champ de données (32 bits, dans le cas de la représentation de la figure 1 B) : un registre « temporaire » TEMP pour stocker un champ d'adresse et un registre « de référence REF pour stocker un champ de clé/couleur.
L'unité de contrôle peut être modélisée par un automate à états finis. Elle effectue les opérations suivantes : - Recevoir d'un processeur PROC (le cas échéant par l'intermédiaire d'un circuit d'interface, non représenté) une instruction à exécuter - par exemple une des instructions A à F décrites fonctionnellement ci-dessus - ainsi que ses arguments - typiquement, une ou deux adresses de noeuds respectifs d'un arbre rouge et noir stocké dans une mémoire MEM, et le cas échéant une valeur de clé de référence. Les paramètres de type adresse sont communiquées à l'interface de mémoire IM qui récupère les données correspondantes et les écrit dans un ou plusieurs registres de noeud par l'intermédiaire du réseau de distribution des données. Un éventuel paramètre de type clé de référence est enregistré dans ledit registre de référence REF. L'instruction détermine la séquence de contrôle exécutée par l'unité de contrôle. - Recevoir de l'unité de traitement - et plus précisément des comparateurs CMP1 - CMP3 et de l'unité de sélection et soustraction SUB/SEL - des signaux de condition. Les chemins de ces signaux ne sont pas représentés en entier pour ne pas surcharger la figure ; seules sont représentées des flèches sortant des unités générant ces signaux et des flèches entrant dans l'unité de contrôle. - En fonction de la séquence de contrôle sélectionnée (et donc de l'instruction en cours d'exécution), d'un état interne et des signaux de condition reçus, envoyer aux différents composants de l'unité de traitement des signaux de contrôle (comme pour les signaux de condition, les chemins de ces signaux ne sont pas représentés en entier). - Recevoir de l'unité de traitement (ou prélever d'un 15 registre) l'adresse d'un noeud et le transmettre au processeur en tant que résultat de l'instruction. En ce qui concerne l'unité de traitement UT : - Le premier multiplexeur MUX1 sélectionne, en fonction d'un signal de contrôle, soit le contenu ATEMP du registre temporaire TEMP, 20 soit celui (CREF) du registre de référence REF. La donnée sélectionnée (32 bits) est transmise à une première entrée de l'unité de sélection et soustraction SUB/SEL. - Le deuxième multiplexeur MUX2 sélectionne, en fonction d'un signal de contrôle, le contenu de l'un des registres de noeud RN1, RN2, 25 RN3. Les différents champs de la donnée (128) bits ainsi sélectionnée sont traités différemment : - le champ CRCO (clé réduite et couleur) est fourni à une deuxième entrée de l'unité de sélection et soustraction SUB/SEL et également fourni en entrée à l'unité de réorganisation; 30 - les autres champs (PAR, adresse du noeud parent ; EG, adresse de l'enfant de gauche ; ED, adresse de l'enfant de droite) sont comparés à zéro (ou, de manière équivalente, à un) par les comparateurs CMP1, CMP2, CMP3 pour générer des signaux de condition respectifs, et également fournis en entrée à l'unité de réorganisation RORG. - Comme son nom l'indique, l'unité de sélection et 5 soustraction SUB/SEL peut, en fonction d'un signal de contrôle, comparer ses entrées (soustraction) ou sélectionner l'une d'entre elles. Sa sortie est fournie en entrée à l'unité de réorganisation RORG. - L'unité de réorganisation RORG a trois sorties (qui ne sont pas nécessairement actives en même temps) : 10 - une première sortie à 32 bits, sur laquelle se retrouve l'un des champs de données présents à ses entrées ; si ce champs est un champ de clé et couleur, le bit indicatif de la couleur peut être changé ; la sélection de l'entrée qui se retrouve à la première sortie et le changement éventuel du bit de couleur dépendent d'un signal de contrôle ; 15 - une deuxième sortie à 32 bits, sur laquelle se retrouve l'un des champs d'adresse présents à ses entrées et provenant d'un registre de noeud via le deuxième multiplexeur ; la sélection du champ d'adresse qui se retrouve à la première sortie dépend d'un signal de contrôle ; - une troisième sortie à 128 bits, sur laquelle se 20 retrouve une structure de noeud reconstituée en sélectionnant et permutant quatre des champs de données présents aux entrées de l'unité ; la sélection et la permutation effectuée dépend d'un signal de contrôle. Concrètement, ladite troisième sortie comprend un champ de clé et couleur provenant de la première ou de la deuxième entrée, avec modification éventuelle du bit 25 indicateur de couleur, et trois champs d'adresse provenant de la troisième, quatrième et cinquième entrée (dont l'ordre peut être modifié). Ces sorties sont prises en charge par le réseau de distribution des données RDD. Plus précisément : - le premier démultiplexeur DEMUX1 permet de fournir la 30 donnée à la première sortie de l'unité de réorganisation à l'entrée du registre temporaire ou du registre de référence ; - la donnée à la deuxième sortie de l'unité de réorganisation (nécessairement une adresse) est fournie à l'interface de mémoire IM ; - la donnée à la troisième sortie de l'unité de réorganisation 5 est également fournie à l'interface de mémoire IM pour être enregistrée dans la mémoire MEM, à l'adresse spécifiée par la donné à la deuxième sortie; elle est également fournie en entrée au troisième multiplexeur MUX3. Ce troisième multiplexeur MUX3 reçoit également, à une autre entrée, une structure de données de noeud (128 bits) en provenance de la 10 mémoire MEM - le contenu de la cellule de mémoire dont l'adresse a été fournie soit par l'unité de contrôle, soit par la deuxième sortie précitée de l'unité de réorganisation. Le multiplexeur sélectionne l'une de ses entrées, et l'envoie au deuxième multiplexeur DEMUX2, qui la transfère à l'un des registres de noeuds RN1, RN2, RN3. 15 Tous ces multiplexeurs et démultiplexeurs sont pilotés par des signaux de contrôle respectifs. En outre, toujours par l'intermédiaire réseau de distribution des données : - la donnée à la première adresse de l'unité de 20 réorganisation (une adresse) peut être fournie à l'unité de contrôle, qui à son tour la transmet au processeur PROC en tant que donnée de sortie ; et - une clé de référence reçue en tant que paramètre d'instruction peut être transmise de l'unité de contrôle vers le registre de référence REF pour y être enregistrée. 25 L'unité de traitement UT peut donc réaliser, sous le contrôle de l'unité de contrôle UC, les opérations « élémentaires » suivantes : a. comparer une clé de référence stockée dans le registre de référence REF avec une clé stockée dans un champ de données d'un registre de noeud, et fournir le résultat de cette 30 comparaison à l'unité de contrôle en tant que signal de condition ; b. comparer à zéro (ou à une autre valeur prédéterminée) une adresse stockée dans un champ de données d'un registre de noeud, et fournir le résultat de cette comparaison à l'unité de contrôle en tant que signal de condition ; c. comparer à zéro (ou à un) un indicateur de couleur stocké dans un champ de données d'un registre de noeud, et fournir le résultat de cette comparaison à l'unité de contrôle en tant que signal de condition ; d. changer la valeur d'un indicateur de couleur stocké dans un champ de données d'un registre de noeud ; e. envoyer à la mémoire MEM pour écriture, via l'interface IM, l'ensemble des champs de données d'un dit registre de noeud ; f.recevoir de ladite mémoire l'ensemble des champs de données d'un noeud d'un dit arbre et les stocker dans un dit registre de noeud ; g. écrire l'adresse temporaire, stockée dans le registre temporaire TEMP, dans un champ de données d'un registre de noeud, en remplacement d'une adresse stockée dans ledit champ ; et h. écrire une adresse stockée un champ de données d'un registre de noeud dans ledit registre temporaire, en remplacement de ladite adresse temporaire. Chacune de ces opérations élémentaires est effectuée en deux étapes, correspondant chacune à un cycle d'horloge. La première étape comprend la sélection des entrées de l'unité de réorganisation et de l'unité de sélection et soustraction par les multiplexeurs MUX1 et MUX2, ainsi que le chargement de nouvelles données dans les registres, la deuxième étape correspond aux traitements effectués par l'unité de réorganisation et l'unité de sélection et soustraction. L'architecture de la figure 2 est optimisée de façon a réduire le coût, la complexité et la consommation de l'accélérateur en réutilisant les mêmes composants pour effectuer plusieurs opérations lorsque cela est possible. Une conséquence de cette optimisation est que des opérations sans utilité sont possibles en principe (par exemple : une comparaison entre une donnée de clé/couleur et une adresse dans l'unité SUB/SEL). Cela n'a pas d'importance car les séquences de contrôle de l'unité de contrôle rendent l'exécution de ces opérations impossibles. La décomposition des instructions A - F définies ci-dessus (ou des instructions d'un jeu équivalent) en opérations élémentaires pouvant être réalisées par l'unité de traitement ne pose pas de difficulté particulière. On remarquera qu'une opération aussi importante que l'échange de deux adresses stockées dans deux registres de noeud n'est pas élémentaire, mais s'effectue en trois temps en utilisant le registre temporaire pour un stockage intermédiaire. Il est également possible, sans sortir du cadre de l'invention, de concevoir une unité de traitement mettant en oeuvre un jeu différent d'instructions élémentaires. En tout cas, le passage d'une définition fonctionnelle de l'unité à une réalisation concrète par des composants électroniques ne pose pas de difficulté fondamentale. Un accélérateur matériel selon un mode de réalisation peut être intégré dans le « pipeline » d'un processeur de manière à constituer une unité fonctionnelle de ce dernier. Dans ce cas, l'accélérateur matériel bénéficie d'un accès direct à la mémoire cache de niveau 1 et son utilisation met en jeu des instructions spécifiques du processeur. La figure 3 illustre schématiquement la structure et le fonctionnement d'un tel processeur. Le pipeline comprend une unité « FETCH » chargée du chargement d'une instruction depuis la mémoire, une unité « DECODE » de décodage de l'instruction et de stockage de l'instruction décodée dans une queue Q, une unité ISSUE qui sélectionne une instructions prête (dont toutes les entrées sont disponibles) parmi les instructions de la queue Q et transmet cette instruction à une unité fonctionnelle choisie parmi : une unité INT (en charge des opérations dites entières), une unité MULT (en charge des opérations de multiplications), une unité L/S (« Load/Store » : en charge des lectures/écritures depuis/vers la mémoire) et l'accélérateur matériel RBT, ces deux dernières unités ayant accès direct à la mémoire cache de niveau 1, MC. Chaque unité transmet le résultat du traitement qu'elle exécute à l'unité WB. L'unité WB (« write-back ») est alors en charge de la mise à jour des registres du processeur. Ce mode de réalisation est préféré car il permet de bénéficier pleinement de l'accélération de la manipulation des arbres rouges et noirs. Cependant, il est lourd à mettre en oeuvre, car il nécessite une modification du processeur et de son jeu d'instruction. La figure 4 illustre très schématiquement un autre mode de réalisation, dans lequel l'accélérateur matériel est réalisé sous la forme d'un coprocesseur CPR, communiquant avec un processeur PROC et une mémoire MEM par l'intermédiaire d'un bus de système BUS. Le processeur traite l'accélérateur comme un périphérique, et communique avec lui au moyen de fonctions de système. Comme l'accélérateur n'a pas d'accès direct à la cache de niveau 1 du processeur, ces fonctions de système mettent en oeuvre des protocoles de cohérence de cache, connus en soi (en variante, d'autres mécanismes de cohérence de cache connus de l'homme du métier, autres que les protocoles de cohérence, peuvent être utilisés). Ce mode de réalisation est beaucoup plus simple à mettre en oeuvre, mais la communication processeur/accélérateur est plus lente, ce qui réduit l'avantage procuré par l'accélération des fonctions de manipulation des arbres rouges et noirs.
Quel que soit le mode de réalisation choisi, un utilisateur accède aux fonctionnalités de l'accélérateur matériel par l'intermédiaire de librairies de fonctions opportunes, remplaçant les librairies standard. Pour évaluer le résultat technique de l'invention, un simulateur a été réalisé en C++ modélisant un processeur ARM Cortex (marque déposée) et un accélérateur matériel du type illustré sur la figure 2. Ce simulateur a été utilisé pour mesurer les gains rendus possibles par l'utilisation d'un tel accélérateur matériel dans le cadre d'une implémentation des tableaux associatifs utilisés par la compilation dynamique dans l'environnement de compilation LLVM. La figure 5 illustre, sous la forme d'un histogramme, le rapport entre le temps passé dans la manipulation des tableaux associatifs (implémentés par des arbres rouges et noirs) par rapport au temps d'exécution total de compilation pour une pluralité de code sources indiqués en abscisses. Le temps d'exécution total de compilation de code source désigne le temps d'exécution du compilateur LLC, de l'environnement LLVM, passé à la compilation d'un code source donné. Les différents codes sources en entrée du compilateur LLC, proviennent d'un bouquet de code 5 source bien connu, nommé « MiBench ». Pour chaque compilation de code source par le compilateur LLC, ce rapport a été mesuré pour l'implémentation logicielle de la librairie standard C++ (barres en gris clair), pour une implémentation logicielle optimisée (barres en gris intermédiaire) et pour une implémentation utilisant l'accélérateur matériel selon l'invention, dans sa 10 réalisation intégrée au processeur (barres en gris foncé). Il apparait que ce rapport passe de 41 % pour la version librairie standard C++ à 24 % pour la version optimisée de manière logicielle et à seulement 12 % pour la version utilisant l'accélérateur matériel. En outre, il a été possible de mettre en évidence un gain brute d'environ un facteur 5 15 dans le temps de gestion des tableaux associatifs entre l'implémentation logicielle conventionnelle et celle utilisant l'accélérateur matériel. 20

Claims (14)

  1. REVENDICATIONS1. Accélérateur matériel pour la manipulation d'arbres rouges et noirs, chaque dit arbre comprenant plusieurs noeuds, chaque dit 5 noeud comprenant des champs de données de longueur prédéfinie représentant : un indicateur de couleur, prenant une valeur binaire ; une clé ; une adresse d'un autre noeud du même arbre, dit parent ; 10 une adresse d'un autre noeud du même arbre, dit enfant de gauche ; et une adresse d'un autre noeud du même arbre, dit enfant de droite ; ledit accélérateur matériel comprenant : 15 au moins deux registres dits registres de noeud (RN1, RN2, RN3), pouvant stocker l'ensemble des champs de deux noeuds d'un dit arbre ; et - des unités logiques (UC, UT) configurées pour recevoir d'un processeur (PROC) au moins une donnée d'entrée choisie parmi une 20 adresse d'un noeud d'un dit arbre et une clé dite de référence, ainsi qu'au moins une instruction à exécuter ; pour exécuter ladite instruction en effectuant une combinaison des opérations suivantes : - envoyer vers ladite mémoire une adresse, recevoir de ladite mémoire l'ensemble des champs de données du noeud dudit 25 arbre correspondant à ladite adresse et les écrire dans un dit registre en remplacement des champs de données ; - envoyer vers la mémoire l'ensemble des champs de données d'un noeud dudit arbre ainsi qu'une adresse de ladite mémoire à laquelle lesdits champs de données doivent être enregistrés ; 30 - changer la valeur d'un indicateur de couleur stocké dans un dit registre de noeud ; et- échanger entre elles deux adresses stockées dans deux dits registres de noeud ; et pour fournir audit processeur au moins une donnée de sortie comprenant une adresse stockée dans un dit registre de noeud.
  2. 2. Accélérateur matériel selon la revendication 1 comprenant également un registre (REF), dit registre de référence, pouvant stocker soit une clé, dite de référence, reçue dudit processeur, soit une dite clé de référence et un indicateur de couleur.
  3. 3. Accélérateur matériel selon la revendication 2, dans lequel lesdites unités logiques comprennent une unité de traitement (UT) et une unité de contrôle (UC), ladite unité de contrôle étant configurée pour : - recevoir une dite adresse d'un noeud d'un dit arbre en tant 15 que donnée d'entrée et la transmettre à ladite mémoire ; - recevoir une dite clé de référence en tant que donnée d'entrée et la stocker dans ledit registre de référence ; - recevoir une dite instruction à exécuter en tant que donnée d'entrée, ainsi qu'un ou plusieurs signaux de condition en provenance 2 0 de ladite unité de traitement ; - en réponse à ladite instruction à exécuter et à ladite ou à des dits signaux de condition, générer des signaux de contrôle de ladite unité de traitement ; et - fournir, en tant que donnée de sortie, une adresse de 25 noeud reçue de ladite unité de traitement.
  4. 4. Accélérateur matériel selon la revendication 3, dans lequel ladite unité de contrôle est un automate à état finis. 30
  5. 5. Accélérateur matériel selon l'une des revendications 3 ou 4 comprenant également un registre (TEMP), dit registre temporaire, pouvant stocker une adresse, dite adresse temporaire, d'un noeud d'un dit arbre.
  6. 6. Accélérateur matériel selon la revendication 5 dans lequel ladite unité de traitement est configurée pour exécuter, en réponse à un dit signal de contrôle, au moins les opérations suivantes : i. comparer la clé de référence stockée dans ledit registre de référence avec une clé stockée dans un champ de données d'un dit registre de noeud, et fournir le résultat de cette comparaison à ladite unité de contrôle en tant que signal de condition ; j. comparer à une valeur prédéterminée une adresse stockée dans un champ de données d'un dit registre de noeud, et fournir le résultat de cette comparaison à ladite unité de contrôle en tant que signal de condition ; k. comparer à une valeur prédéterminée un indicateur de couleur stocké dans un champ de données d'un dit registre de noeud, et fournir le résultat de cette comparaison à ladite unité de contrôle en tant que signal de condition ; I. changer la valeur d'un indicateur de couleur stocké dans un champ de données d'un dit registre de noeud ; m. envoyer à ladite mémoire, pour écriture, l'ensemble des champs de données d'un dit registre de noeud ; n. recevoir de ladite mémoire l'ensemble des champs de données d'un noeud d'un dit arbre et les stocker dans un dit registre de noeud ; o. écrire ladite adresse temporaire, stockée dans ledit registre temporaire, dans un champ de données d'un dit registre de noeud, en remplacement d'une adresse stockée dans ledit champ ; et p. écrire une adresse stockée un champ de données d'un dit registre de noeud dans ledit registre temporaire, en remplacement de ladite adresse temporaire.
  7. 7. Accélérateur matériel selon la revendication 6 dans lequel ladite unité de traitement comprend :- une unité de sélection et soustraction (SUB/SEL) configurée pour recevoir : à une première entrée, par l'intermédiaire d'un premier multiplexeur (MUX1), le contenu (ATEMP) dudit registre temporaire ou dudit registre de référence (CREF) ; à une deuxième entrée, par l'intermédiaire d'un deuxième multiplexeur (MUX2), un champ de données de clé ou de clé et d'indicateur de couleur issu d'un dit registre de noeud ; et à une entrée de contrôle, un signal de contrôle en provenance de ladite unité de contrôle ; et pour fournie à sa sortie, en fonction dudit signal de contrôle, soit l'une desdites première et deuxième entrée, soit leur différence ; - une unité de réorganisation (RORG) configurée pour recevoir : à une première entrée, la sortie de ladite unité de comparaison et soustractions ; à une deuxième entrée, un champ de données de clé ou de clé et d'indicateur de couleur issu d'un dit registre de noeud, à une troisième, une quatrième et une cinquième entrée, par l'intermédiaire dudit deuxième multiplexeur, trois champs de données d'adresse issus d'un dit registre de noeud ; et à une entrée de contrôle, un signal de contrôle en provenance de ladite unité de contrôle ; et pour fournir : o à une première sortie, un champ de données de clé, de clé et d'indicateur de couleur ou d'adresse présent à l'une de ses entrées, la valeur dudit indicateur de couleur pouvant être modifiée, o à une deuxième sortie, un champ de données d'adresse présent à sa deuxième, sa troisième ou sa quatrième adresse ; et/ou o à une troisième sortie, l'ensemble des champs de données représentatifs d'un noeud dudit arbre, obtenus par sélection et permutation des champs de données présents à ses entrées, avec modification éventuelle d'un indicateur de couleur ; - un ensemble de comparateurs à zéro (CMP1, CMP2, CMP3) des champs de données fournis à la troisième, quatrième et 3 0 cinquième entrée de ladite unité de réorganisation et d'un indicateur de couleur stocké dans ledit registre de référence, les sorties desditscomparateurs étant fournies à ladite unité de contrôle en tant que données de condition ; et - un réseau de distribution des données (RDD) configuré pour : o fournir un champ de données issu de la première sortie de l'unité de réorganisation soit audit registre temporaire, soit audit registre de référence, en fonction d'un signal de contrôle en provenance de ladite unité de contrôle, ainsi qu'à ladite unité de contrôle ; o fournir un champ de données issu de la deuxième sortie de l'unité de réorganisation à ladite mémoire ; o fournir des champs de données issus de la troisième sortie de l'unité de réorganisation à ladite mémoire ; o fournir des champs de données issus de la troisième sortie de l'unité de réorganisation ou de ladite mémoire à l'un desdits registres de noeud, en fonction d'un signal de contrôle en provenance de ladite unité de contrôle.
  8. 8. Accélérateur matériel selon l'une des revendications 6 ou 7 dans lequel ladite unité de traitement est configurée pour générer, en réponse à une instruction reçue en tant que donnée d'entrée, une séquence de signaux de contrôle permettant l'exécution d'une opération choisie parmi les suivantes : G. Chercher, dans un arbre rouge et noir stocké dans ladite mémoire, le noeud dit successeur présentant une clé de valeur immédiatement supérieure à celle d'un noeud dont l'adresse est fournie en tant que donnée d'entrée, et fournir, en tant que donnée de sortie, l'adresse dudit noeud successeur ; H. Chercher, dans un arbre rouge et noir stocké dans ladite mémoire, le noeud dit prédécesseur présentant une clé de valeur immédiatement inférieure à celle d'un noeud dont l'adresse est fournie en tant que donnée d'entrée, et fournir, en tant que donnée de sortie, l'adresse dudit noeud successeur ;I.Chercher, dans un arbre rouge et noir stocké dans ladite mémoire et dont l'adresse d'un point d'accès est fournie en tant que première donnée d'entrée, le noeud dont l'adresse est fournie en tant que deuxième donnée d'entrée, le supprimer et modifier la structure de l'arbre rouge et noire en conséquence ; J. Insérer, dans un arbre rouge et noir stocké dans ladite mémoire et dont l'adresse d'un point d'accès est fournie en tant que première donnée d'entrée, un noeud dont l'adresse est fournie en tant que deuxième donnée d'entrée et modifier la structure de l'arbre rouge et noire en conséquence ; K. Chercher, dans un arbre rouge et noir stocké dans ladite mémoire et dont l'adresse d'un point d'accès est fournie en tant que première donnée d'entrée, le premier noeud dont la clé est supérieure ou égale à une clé de référence fournie en tant que deuxième donnée d'entrée et fournir, en tant que donnée de sortie, l'adresse de ce noeud ; et L. Chercher, dans un arbre rouge et noir stocké dans ladite mémoire et dont l'adresse d'un point d'accès est fournie en tant que première donnée d'entrée, le premier noeud dont la clé est strictement supérieure ou égale à une clé de référence fournie en tant que deuxième donnée d'entrée et fournir, en tant que donnée de sortie, l'adresse de ce noeud.
  9. 9. Accélérateur matériel selon l'une des revendications précédentes dans lequel lesdites unités logiques comprennent également un 25 dispositif d'interface (IM) avec ladite mémoire configuré pour : recevoir de ladite unité de contrôle l'adresse d'une location de ladite mémoire ; et - transférer le contenu de ladite location de mémoire dans un dit registre de noeud, ou inversement. 30
  10. 10. Accélérateur matériel selon l'une des revendications précédentes, comprenant exactement trois registres de noeud.
  11. 11. Accélérateur matériel selon l'une des revendications précédentes, dans lequel l'indicateur de couleur et la clé de chaque dit noeud sont représentés par des bits différents d'un même champ de données (CRCO), ledit indicateur de couleur étant représenté par un seul bit dudit champ.
  12. 12. Accélérateur matériel selon la revendication 11 dans lequel chaque dit noeud est représenté par : - un champ de données (CRCO) dont un bit représente ledit indicateur de couleur et les bits restants représentent ladite clé ; et - trois autres champs de données (PAR, EG, ED) représentant les adresses desdits noeuds parent, enfant de gauche et enfant de droite ; lesdits champs de données présentant tous un même nombre de bits.
  13. 13. Processeur comprenant un accélérateur matériel selon l'une des revendications précédentes en tant qu'unité fonctionnelle (RBT) 20 ayant accès au premier niveau de mémoire cache (MC).
  14. 14. Système informatique comprenant un processeur (PROC), une mémoire (MEM) et un accélérateur matériel (CPR) selon l'une des revendications 1 à 12 reliés entre eux par un bus système (BUS), ledit 25 processeur étant configuré ou programmé pour communiquer avec ledit accélérateur matériel par l'intermédiaire de requêtes de système et pour assurer une cohérence de cache.
FR1355181A 2013-06-05 2013-06-05 Accelerateur materiel pour la manipulation d'arbres rouges et noirs Expired - Fee Related FR3006786B1 (fr)

Priority Applications (4)

Application Number Priority Date Filing Date Title
FR1355181A FR3006786B1 (fr) 2013-06-05 2013-06-05 Accelerateur materiel pour la manipulation d'arbres rouges et noirs
EP14725486.6A EP3005107A1 (fr) 2013-06-05 2014-05-22 Accelerateur materiel pour la manipulation d'arbres rouges et noirs
PCT/EP2014/060544 WO2014195141A1 (fr) 2013-06-05 2014-05-22 Accelerateur materiel pour la manipulation d'arbres rouges et noirs
US14/893,034 US20160098434A1 (en) 2013-06-05 2014-05-22 Hardware accelerator for handling red-black trees

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1355181A FR3006786B1 (fr) 2013-06-05 2013-06-05 Accelerateur materiel pour la manipulation d'arbres rouges et noirs

Publications (2)

Publication Number Publication Date
FR3006786A1 true FR3006786A1 (fr) 2014-12-12
FR3006786B1 FR3006786B1 (fr) 2016-12-30

Family

ID=49212804

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1355181A Expired - Fee Related FR3006786B1 (fr) 2013-06-05 2013-06-05 Accelerateur materiel pour la manipulation d'arbres rouges et noirs

Country Status (4)

Country Link
US (1) US20160098434A1 (fr)
EP (1) EP3005107A1 (fr)
FR (1) FR3006786B1 (fr)
WO (1) WO2014195141A1 (fr)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114341888A (zh) * 2019-07-03 2022-04-12 华夏芯(北京)通用处理器技术有限公司 用于操作加速器电路的指令
CN112000482B (zh) * 2020-08-25 2024-03-05 北京金山云网络技术有限公司 一种内存管理的方法、装置、电子设备及存储介质

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
"Internet Wayback Machine Information for "Lecture 10: Balanced Binary Search Trees CSCI 700 - Algorithms I"", 10 May 2012 (2012-05-10), XP055114024, Retrieved from the Internet <URL:https://web.archive.org/web/20120510133806/http://eniac.cs.qc.cuny.edu/andrew/csci700/syllabus.html> [retrieved on 20140414] *
ALEXANDRE CARBON ET AL: "Code specialization for red-black tree management algorithms", ADAPTIVE SELF-TUNING COMPUTING SYSTEMS, ACM, 2 PENN PLAZA, SUITE 701 NEW YORK NY 10121-0701 USA, 22 January 2013 (2013-01-22), pages 1 - 3, XP058018793, ISBN: 978-1-4503-2022-1, DOI: 10.1145/2484904.2484910 *
ALEXANDRE CARBON ET AL: "Hardware acceleration for Just-In-Time compilation on heterogeneous embedded systems", APPLICATION-SPECIFIC SYSTEMS, ARCHITECTURES AND PROCESSORS (ASAP), 2013 IEEE 24TH INTERNATIONAL CONFERENCE ON, IEEE, 5 June 2013 (2013-06-05), pages 203 - 210, XP032441623, ISBN: 978-1-4799-0494-5, DOI: 10.1109/ASAP.2013.6567576 *
ANDREW ROSENBERG: "Lecture 10: Balanced Binary Search Trees CSCI 700 -Algorithms I", CLASS SLIDES FROM OCTOBER 5TH, 20011: "BALANCED BINARY SEARCH TREES: RED-BLACK TREES", 5 October 2011 (2011-10-05), pages 1 - 57, XP055114023, Retrieved from the Internet <URL:http://eniac.cs.qc.cuny.edu/andrew/csci700/lecture8.pdf> [retrieved on 20140414] *
YI-HUA EDWARD YANG ET AL: "High throughput and large capacity pipelined dynamic search tree on FPGA", PROCEEDINGS OF THE 18TH ANNUAL ACM/SIGDA INTERNATIONAL SYMPOSIUM ON FIELD PROGRAMMABLE GATE ARRAYS, FPGA '10, 2010, New York, New York, USA, pages 83, XP055113535, ISBN: 978-1-60-558911-4, DOI: 10.1145/1723112.1723128 *

Also Published As

Publication number Publication date
US20160098434A1 (en) 2016-04-07
FR3006786B1 (fr) 2016-12-30
EP3005107A1 (fr) 2016-04-13
WO2014195141A1 (fr) 2014-12-11

Similar Documents

Publication Publication Date Title
US11106437B2 (en) Lookup table optimization for programming languages that target synchronous digital circuits
TWI512625B (zh) 程式化平行機及電腦實施方法、電腦可讀媒體、電腦及將原始程式碼轉換為機器碼以程式化一平行機之系統
US11093682B2 (en) Language and compiler that generate synchronous digital circuits that maintain thread execution order
CN107844301A (zh) 一种安卓应用渠道合包方法及装置
US10810343B2 (en) Mapping software constructs to synchronous digital circuits that do not deadlock
EP1290554B1 (fr) Systeme informatique modulaire et procede associe
US11275568B2 (en) Generating a synchronous digital circuit from a source code construct defining a function call
US20200225920A1 (en) Generating synchronous digital circuits from source code constructs that map to circuit implementations
Alam et al. Sorting in memristive memory
Baka Python Data Structures and Algorithms
FR3006786A1 (fr) Accelerateur materiel pour la manipulation d&#39;arbres rouges et noirs
FR3025334A1 (fr) Procede de determination par optimisation d&#39;une architecture multi-coeurs
EP2947563A1 (fr) Processeur à instructions conditionnelles
US11275713B2 (en) Bit-serial linear algebra processor
FR2687004A1 (fr) Architecture de memoire associative.
EP3814893A1 (fr) Accès mémoire de processeurs
EP0018238B1 (fr) Procédé et ensemble de calcul, aléatoirement par excès ou par défaut, pour fournir des résultats de calcul et en déterminer le nombre de chiffres significatifs exacts
Sherwin et al. Median filters on FPGAs for infinite data and large, rectangular windows
Charania Exploring and Benchmarking High Performance & Scientific Computing using RR HPC Packages and Lower level compiled languages A Comparative Study
FR3103594A1 (fr) Système et procédé pour la création assistée par ordinateur de code informatique
FR3132158A1 (fr) Procedes, systemes, articles manufactures et dispositifs pour traitement
CN112035459A (zh) 数据格式转换方法及装置
Forster et al. Software plug-ins for flexible test cell automation
CN113962397A (zh) 一种单比特多量子门融合优化的方法
FR2919081A1 (fr) Implementation de calculs pour processeurs

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

ST Notification of lapse

Effective date: 20200206