Brevet FR3107374A1 — publié le 20210820

Système sur puce de sommation en arbre binaire de nombres flottants comprenant : un automate (1) à pile configuré pour réaliser des opérations de décalage, de réduction, et d'acceptation ; une entrée (2) recevant en file des nombres flottants à additionner et une information (eof) représentative de la fin de la sommation des nombres flottants, traités par l'automate (1) ; une mémoire (3) de programmation de l'automate (1) comprenant une table de transition (3a) de l'automate (1) ; une mémoire (4) comprenant une pile d'états (4a) de l'automate (1) ; une mémoire (5) comprenant une pile de résultats (5a) des opérations effectuées par l'automate (1) ; un additionneur (6) en virgule flottante configuré pour additionner deux valeurs en virgule flottante et délivrer en sortie leur somme en virgule flottante ; et un désambigüiseur (7) configuré pour mettre en œuvre un critère de désambiguïsation permettant de réaliser l'opération de décalage lorsqu'il est faux et de réaliser l'opération de réduction lorsqu'il est vrai. Figure pour l’abrégé : Fig. 1 Système sur puce de sommation en arbre binaire de nombres flottants L’invention porte sur un système sur puce de sommation en arbre binaire de nombres flottants. L'invention se situe dans le domaine de la réalisation de composants matériels pour l’accélération du calcul. Toute opération en virgule flottante dans un ordinateur comporte un risque d’erreur ou de perte de précision, si les opérateurs arithmétiques standards (IEE754) sont utilisés. Il en est ainsi d'une somme naïve ou itérative, effectuée par accumulation et itération sur un ensemble de nombres. L'écriture d'un nombre en virgule flottante est une écriture sous la forme d'un signe, d'une matisse et d'une base avec un exposant. Par exemple, -1,3254=-13254 ×10 -4 (le signe est négatif, la matisse est 13254, la base est 10, mais souvent la base est 2 en informatique, et l'exposant est -4). Des algorithmes diminuant (ou supprimant) l’erreur existent, mais requièrent plus d’opérations ou tout du moins des opérations plus lentes. Le tri des données avant la somme (sommer du plus petit au plus grand) permet de limiter l’erreur, au prix d’avoir à effectuer ce tri. Un compromis proposé par la littérature peut être une somme en arbre binaire, qui donne une erreur réduite quelle que soit la distribution des valeurs dans l’ensemble, comme cela est illustré dans le document Doc1 : "Accuracy and Stability of Numerical Algorithms (2 ed)", SIAM, de Higham, Nicholas (2002). Mais l’état de l’art considère que cette somme en arbre binaire suppose la connaissance a priori du nombre de valeurs à additionner, comme dans le document Doc1, ainsi que dans le document Doc2 : "Sums: A summation algorithm balancing accuracy with throughput.", de Barnaby Dalton, Amy Wang, Bob Blainey; SIMDizing Pairwise WPMVP '14 : Proceedings of the 2014 Workshop on Programming models for SIMD/Vector processing February 2014 Pages 65–70 https://doi.org/10.1145/2568058.2568070 ; et dans le document Doc3 : "Implementation of a low round-off summation method" de Caprani, Ole; BIT Numerical Mathematics, Sept 1971. Les documents Doc1 et Doc2 décrivent un algorithme itératif de somme en arbre avec un automate et une pile. Cet algorithme nécessite une connaissance a priori du nombre d’éléments dans l’ensemble, ce qui constitue un problème lorsque cette taille n’est pas connue au début de la somme. Il est connu des techniques du domaine des langages algébriques, utilisées principalement pour le problème de l’appartenance d’une phrase à un langage, et la construction d’une structure abstraite sur une phrase, par exemple dans le document Doc4 : "Parsing Techniques, A Practical Guide", de Dick Grune et Ceriel J.H. Jacobs, 2nd Edition, 2007, Springer, et dans le document Doc5 : "Compilateurs: Principes, Techniques et Outils", de A. Aho, M. Lam, R. Sethi et J. Ullman, 2nd édition, 2007, Pearson. De telles approches ne sont pas utilisées habituellement pour le calcul, cependant elles constituent des éléments théoriques pour l’analyse de calculs. Un but de l'invention est de pallier les problèmes précédemment cités, et notamment de permettre de sommer une quantité de nombres flottants non connue a priori. Aussi, il est proposé, selon un aspect de l'invention, un système sur puce de sommation en arbre binaire de nombres flottants comprenant : un automate à pile (i.e. à pile d'états), configuré pour réaliser des opérations de décalage, de réduction, et d'acceptation ; une entrée recevant en file des nombres flottants à additionner et une information représentative de la fin de la sommation des nombres flottants, traités par l'automate ; une mémoire de programmation de l'automate comprenant une table de transition de l'automate ; une mémoire comprenant une pile d'états de l'automate ; une mémoire comprenant une pile de résultats des opérations effectuées par l'automate ; un additionneur en virgule flottante configuré pour additionner deux valeurs en virgule flottante et délivrer en sortie leur somme en virgule flottante ; et un désambigüiseur configuré pour mettre en œuvre un critère de désambiguïsation permettant de réaliser l'opération de décalage lorsqu'il est faux et de réaliser l'opération de réduction lorsqu'il est vrai. Un tel système permet de pouvoir additionner une quantité de nombres flottants suivant un arbre binaire sans connaître cette quantité a priori, et en effectuant le nombre minimum d’additions. Selon un mode de réalisation, le critère de désambiguïsation est vrai si la profondeur de la pile de résultats est supérieure au poids de Hamming du nombre de valeurs flottantes reçues en entrée et déjà traitées par l'automate. L'utilisation d'un tel critère de désambiguïsation permet de rendre déterministe cette somme et d’obtenir l’évaluation de la somme en arbre binaire telle que recherchée. Dans un mode de réalisation, le système comprend au moins un additionneur supplémentaire. L'utilisation de plusieurs additionneurs permet d’accélérer le système en effectuant plusieurs additions en même temps. Selon un mode de réalisation, la table de transition est de type LR(1) : une table d’un automate effectuant une reconnaissance de la suite de valeurs flottante, lue de gauche à droite et avec un élément de pré-vision ("lookahead" en langue anglaise). Une telle table de transition dispose dans l’état de l’art d’outils et d’algorithmes pour sa génération, et, dans cette réalisation, est très petite. Dans un mode de réalisation, l'automate est configuré pour terminer sa somme lorsqu'il doit traiter une information représentative de la fin de la sommation des nombres flottants. Ainsi le système sait quand arrêter la sommation sans savoir a priori la connaissance du nombre de flottants à additionner. Selon un mode de réalisation, le système comprend un module de commande pour contraindre le désambigüiseur pour contraindre la valeur du critère à vrai durant une sommation. Ainsi, le système effectue alors une somme naïve (itérative), et possède ainsi des propriétés de reproduction au bit près d’un code utilisant des sommes naïves. Pour les processeurs offrant, dans leur jeu d’instruction, deux types de sommes (naïve et en arbre) sur des vecteurs, le système originel implémente la somme en arbre, et cette amélioration implémente la somme naïve, avec le même système matériel. Dans un mode de réalisation, le système comprend un additionneur vectoriel en arbre disposé entre l'entrée et l'automate permettant d'effectuer la somme en arbre des nombres flottants d'un vecteur de nombres flottants successifs reçue en entrée, et délivrant leur somme en arbre à l'automate. Ainsi, le système peut être accéléré d’un facteur lié à la taille de cet additionneur vectoriel, et aussi diminuer la taille des piles utilisées par le système. L'invention sera mieux comprise à l'étude de quelques modes de réalisation décrits à titre d'exemples nullement limitatifs et illustrés par le dessin annexé sur lequel : illustre schématiquement un système sur puce de sommation, selon un aspect de l'invention ; illustre schématiquement une table de transition de l'automate du système de la figure 1, selon un aspect de l'invention ; illustre schématiquement le fonctionnement de l'automate du système des figures 1 et 2, selon un aspect de l'invention ; illustre schématiquement une étape de fonctionnement de l'automate du système des figures 1 et 2, selon un aspect de l'invention ; illustre schématiquement une étape de fonctionnement de l'automate du système des figures 1 et 2, selon un aspect de l'invention ; illustre schématiquement une étape de fonctionnement de l'automate du système des figures 1 et 2, selon un aspect de l'invention ; illustre schématiquement une étape de fonctionnement de l'automate du système des figures 1 et 2, selon un aspect de l'invention ; illustre schématiquement une étape de fonctionnement de l'automate du système des figures 1 et 2, selon un aspect de l'invention ; illustre schématiquement une étape de fonctionnement de l'automate du système des figures 1 et 2, selon un aspect de l'invention ; illustre schématiquement une étape de fonctionnement de l'automate du système des figures 1 et 2, selon un aspect de l'invention ; illustre schématiquement une étape de fonctionnement de l'automate du système des figures 1 et 2, selon un aspect de l'invention ; illustre schématiquement une étape de fonctionnement de l'automate du système des figures 1 et 2, selon un aspect de l'invention ; illustre schématiquement une étape de fonctionnement de l'automate du système des figures 1 et 2, selon un aspect de l'invention ; illustre schématiquement une étape de fonctionnement de l'automate du système des figures 1 et 2, selon un aspect de l'invention ; illustre schématiquement une étape de fonctionnement de l'automate du système des figures 1 et 2, selon un aspect de l'invention ; illustre schématiquement une étape de fonctionnement de l'automate du système des figures 1 et 2, selon un aspect de l'invention ; illustre schématiquement une étape de fonctionnement de l'automate du système des figures 1 et 2, selon un aspect de l'invention ; illustre schématiquement une étape de fonctionnement de l'automate du système des figures 1 et 2, selon un aspect de l'invention ; et illustre schématiquement une étape de fonctionnement de l'automate du système des figures 1 et 2, selon un aspect de l'invention. Sur l'ensemble des figures, les éléments ayant des références identiques sont similaires. Sur la figure 1 est illustré, selon un aspect de l'invention un système sur puce de sommation en arbre binaire de nombres flottants comprenant : un automate 1 à pile configuré pour réaliser des opérations de décalage, de réduction, et d'acceptation ; une entrée 2 recevant en file des nombres flottants à additionner et une information eof représentative de la fin de la sommation des nombres flottants, traités par l'automate 1 ; une mémoire 3 de programmation de l'automate 1 comprenant une table de transition 3a de l'automate 1 ; une mémoire 4 comprenant une pile d'états 4a de l'automate 1 ; une mémoire 5 comprenant une pile de résultats 5a des opérations effectuées par l'automate 1 ; un additionneur 6 en virgule flottante configuré pour additionner deux valeurs en virgule flottante et délivrer en sortie leur somme en virgule flottante ; et un désambigüiseur 7 configuré pour mettre en œuvre un critère de désambiguïsation permettant de réaliser l'opération de décalage lorsqu'il est faux et de réaliser l'opération de réduction lorsqu'il est vrai. La présente invention repose sur le principe suivant concernant une somme en arbre et un flux de valeurs numériques sous forme de nombres flottants. Une table de transition pour un automate à pile non-déterministe et un critère de levée de l’ambiguïté permet de construire une somme en arbre binaire au fur et à mesure que les valeurs sont reçues, et ceci sans connaître la taille de l’ensemble de données à sommer avant de recevoir le dernier élément. La définition d’un arbre d’additions binaires est la suivante: un nœud de l’arbre représente soit une addition et possède alors deux fils, soit une valeur numérique et n'a aucun fils. Il s’agit de la définition d’un arbre binaire strict ou localement complet. Une somme en arbre correspond à un arbre binaire d’additions de profondeur minimale. Si le nombre de valeurs dans la somme est une puissance de 2, alors cet arbre est un arbre binaire parfait. Si le nombre de valeurs n’est pas une puissance de 2, nous considérons l’arbre de profondeur minimale pour lequel la propriété suivante est respectée : chaque fils gauche est un arbre binaire parfait. L’arbre possède n-1 nœuds avec 2 fils, et donc correspond à n-1 additions pour obtenir le résultat final. L'entrée 2 reçoit les valeurs une à une ou en bloc, et on peut retirer la valeur la plus ancienne reçue (et décaler ainsi toutes les valeurs reçues), suivant un principe de première arrivée, première sortie (FIFO pour "First In First Out" en langue anglaise). Une donnée eof en entrée peut indiquer que la transmission est terminée et plus aucune valeur ne sera ajoutée à l’entrée. Ceci peut être réalisé par un signal qui, s’il est activé, signifie que la transmission de valeurs se poursuit. S’il est désactivé, alors la transmission est terminée et plus aucune valeur ne sera ajoutée à l’entrée. La table de transition 3a de l'automate 1 permet un accès en deux dimensions, et est suffisamment grande pour 3 lignes et 2 colonnes, numérotées à partir de 1, avec des éléments suffisants pour contenir 5 valeurs différentes par croisement ligne/colonne. La pile d’états 4a, de taille maximale prédéterminée, peut contenir 3 valeurs différentes par élément de la pile 4a, permettant la lecture du dernier élément, son retrait, et l’ajout d’un nouvel élément. La pile de résultats 5a, dont chaque élément peut contenir une valeur en virgule flottante. De même que la pile d'états 4a, les opérations de retrait des deux derniers éléments, et d’ajout d’un élément sont supportées, ainsi que l’accès à la taille de la pile. L'additionneur 6 en virgule flottante est conforme à la norme IEE754, prenant deux valeurs en virgule flottante et retournant le résultat de l’addition de ces deux valeurs. L'automate 1 à pile dit décalage/réduction ("shift/reduce" en langue anglaise), capable de trois opérations : décalage ("shift" en langue anglaise), réduction ("reduce" en langue anglaise) et acceptation ("accept" en langue anglaise). L’automate 1 peut effectuer trois opérations différentes qui sontles suivantes : Décalage S : l’automate 1 retire une valeur de l'entrée 2 et ajoute cette valeur sur la pile de résultats 5a. L’automate 1 lit la valeur d’état sur la pile d'états 4a, y ajoute 1 (avec un maximum de 3) et ajoute cette nouvelle valeur d’état sur la pile d'états 4a. Réduction R : l’automate 1 retire deux états de la pile d'états 4a, lit la valeur au sommet de la pile d'états 4a après le retrait, y ajoute 1 (avec un maximum de 3) et place cette nouvelle valeur sur la pile d'états 4a. L’automate 1 retire deux valeurs de la pile de résultats 5a, place ces deux valeurs en entrée de l’additionneur 6, active l'additionneur 6 pour faire l’addition, et place le résultat sur la pile de résultats 5a. Acceptation A : l’automate 1 retire un état de la pile d'états 4a et une valeur de la pile de résultats 5a. Il délivre cette valeur en sortie. La figure 2 représente schématiquement la table de transition 3a de l’automate 1 qui possède l’organisation d’une table d’un automate "décalage/réduction" de la littérature (Doc5, Fig 4.37 page 231), avec pour colonnes une action valeur flottante (Fi), une action fin de l’entrée (eof), et pas de colonne Aller_à. L’automate 1 respecte la structure donnée Fig 4.36, page 230 de Doc5 sous une forme optimisée compte tenu du petit nombre d’opérations à effectuer. La pile d'états 4a est initialisée en poussant la valeur 1 sur la pile d'états 4a vide. La pile de résultats 5a est initialisée comme une pile vide. Soit a le premier élément reçu (soit F initialement, soit eof lorsque la transmission est terminée) Lorsque le transfert est terminé et que toutes les données ont été traitées (la FIFO d'entrée 2 est vide), alors a est égal à eof. Sinon a est égal à F et a pour valeur associée le plus ancien élément retiré de la FIFO d'entrée 2. Cela est illustré dans l'algorithme de l'annexe 1. Le test de désambiguïsation du désambigüiseur 7 est calculé comme suit: soit i le nombre de valeurs flottantes traitées par l’automate 1 (c’est à dire que le dernier F absorbé est le i ème élément de la séquence); soit p le nombre de bits à 1 dans la représentation binaire de i (c’est à dire le poids de Hamming de i); le test de désambiguïsation du désambigüiseur 7 est vrai si la profondeur de la pile de résultats 5a est supérieure à p, sinon le test de désambiguïsation du désambigüiseur 7 est faux. Le fonctionnement de l’automate sur un flot de 5 valeurs, dénommées F 1 , F 2 , F 3 , F 4 , F 5 , est illustré sur la figure 3. Les figures 4 à 18 détaillent le fonctionnement étape par étape de la figure 3. La figure 4 représente l'état initial du système. La figure 5 représente la réception du nombre flottant F 1 sur la FIFO d'entrée 1. La figure 6 représente la prise en compte de F 1 , avec une action de décalage, et une réception d'un deuxième nombre flottant F 2 sur la FIFO d'entrée 1. La figure 7 représente le résultat de l’action de la figure 6, et la prise en compte du deuxième nombre flottant F 2 , avec une action de décalage, et la réception d'un troisième nombre flottant F 3 et d'un quatrième nombre flottant F 4 sur la FIFO d'entrée 1. La figure 8 représente le résultat de l’action de la figure 7, et la prise en compte du troisième nombre flottant F 3 , avec une action ambiguë de décalage ou réduction, résolue en réduction car le critère de désambiguïsation du désambigüiseur 7 est vrai. En outre, la figure 8 représente la réception d'un cinquième nombre flottant F 5 . La figure 9 représente le résultat de l’action de la figure 8 (avec calcul de N 1 = F 1 + F 2 ), et la prise en compte du troisième nombre flottant F 3 , avec une action de décalage. La figure 10 représente le résultat de l’action de la figure 9, et la prise en compte d'un quatrième nombre flottant F 4 , avec une action ambiguë de décalage ou réduction, résolue en décalage car le critère de désambiguïsation du désambigüiseur 7 est faux. La figure 11 représente le résultat de l’action de la figure 10, et la prise en compte du cinquième nombre flottant F 5 , avec une action ambiguë de décalage ou réduction, résolue en réduction car le critère de désambiguïsation du désambigüiseur 7 est vrai. Le transfert des valeurs F i est terminé. La figure 12 représente le résultat de l’action de la figure 11 (avec le calcul de N 2 = F 3 + F 4 ), et la prise en compte du cinquième nombre flottant F 5 . Une action ambiguë de décalage ou réduction, résolue en réduction car le critère de désambiguïsation du désambigüiseur 7 est vrai. La figure 13 représente le résultat de l’action de la figure 12 (et le calcul de N 3 = N 2 + N 1 ), et la prise en compte du cinquième nombre flottant F 5 , avec une action de décalage, et la présence d'une information eof représentative de la fin de la sommation des cinq nombres flottants F 1 , F 2 , F 3 , F 4 et F 5 . La figure 14 représente le résultat de l’action de la figure 13, et la fin de transmission des nombres flottants F 1 , F 2 , F 3 , F 4 et F 5 , avec prise en compte de l'information eof de fin de transmission de données à sommer. La FIFO 1 est vide. L'information eof est prise en compte par une action de réduction. La figure 15 représente le résultat de l’action de la figure 14 (et le calcul de N 4 = F 5 + N 3 ), l'action de prise en compte de eof étant : accepter. La figure 16 représente l'action d'accepter, dans laquelle N 4 est délivré en sortie de l'automate 1. Le système est revenu dans son état initial et peut redémarrer une nouvelle somme. Cette invention construit, au fur et à mesure de l’arrivée des valeurs flottantes, de manière itérative, sans connaître à l’avance leur nombre, le même résultat que le pseudo-code de l'annexe 2. La preuve de cette équivalence entre les deux algorithmes est la suivante. L’expression de tous les arbres de sommation binaires sur un ensemble de valeurs est la grammaire algébrique suivante : N → N N | F dans laquelle N est défini comme un nœud somme de ses deux fils ou une feuille F (contenant une valeur flottante). La compilation de cette grammaire par un générateur de parseurs GLR (par exemple Bison ou SmaCC) donne la table de transition d’un automate à pile non déterministe qui génère tous les arbres binaires de somme possibles depuis une entrée de valeurs flottantes traitées de gauche à droite avec une pré-vision (look-ahead) de 1 élément, le calcul se terminant à la réception du dernier élément. Le critère de désambiguïsation assure que nous construisons uniquement l’arbre dont chaque fils gauche est un arbre binaire équilibré parfait, et ceci de manière déterministe. La littérature sur les parseurs rappelle que la table de transition de l’automate à pile non déterministe est une compilation de la stratégie top-down exprimée par la grammaire algébrique de la somme en arbre (cf Doc4, page vii), et donc, que la table de transition de l’automate est équivalente à cette grammaire. La figure 17 représente un mode de réalisation de l'invention, permettant d'implémenter les instructions FADDA et FADDV du jeu d’instructions ARMv8 SVE, tel que décrit dans le document "ARM Architecture Reference Manual Supplement, The Scalable Vector Extension (SVE), for ARMv8-A", Copyright © 2017-2018 ARM Limited or its affiliate. FADDV est une instruction qui retourne la somme en arbre des valeurs d’un vecteur, ce vecteur contenant entre 2 et 64 valeurs. Le système de l'invention, sans modification implémente l’instruction FADDV. FADDA est une instruction qui retourne la somme naïve (itérative) sur les valeurs d’un vecteur, ce vecteur contenant entre 2 et 64 valeurs. La modification du système consiste à ajouter un module de commande 8 et un multiplexeur 11 entre le desambigüiseur 7 et l’automate 1. Le multiplexeur 11 possède une entrée en provenance du désambigüiseur 7 et une entrée en permanence à la valeur "vrai". Si l’entrée correspondante de l’automate est toujours à "vrai", le système effectue une somme itérative. Le résultat fonctionne ainsi: si le module 8 commande le multiplexeur 11 de sorte qu'il choisisse systématiquement son entrée "vrai" et pas la sortie du désambigüiseur 7, alors le système effectue l’instruction FADDA. Sinon le système effectue l’instruction FADDV qui est une somme en arbre. Ce même système étendu est en mesure d’implémenter les instructions fredosum et fredsum de l’extension vectorielle du jeu d'instructions RISC-V, suivant le même procédé: si le module 8 commande le multiplexeur 11 de sorte qu'il choisisse systématiquement son entrée "vrai", le système effectue l’instruction fredosum; sinon le système effectue l’instruction fredsum qui est une somme en arbre. Les instructions fredosum et fredsum de l’extension vectorielle du jeu d'instructions RISC-V est décrite dans le document "RISC-V "V" Vector Extension", Version 0.8-draft-20191117. Une modification permet aussi d’implémenter les instructions RISC-V qui élargissent le résultat (fwredosum et fwredsum), en considérant que l’entrée 2 est le largeur simple (ex: float sur 32bits), et la pile 5a et l’additionneur 6 sont en double précision (ex: double sur 64bits). La figure 18 représente un mode de réalisation de l'invention visant à accélérer les traitements en effectuant plusieurs sommes en parallèle, tout en gardant les mêmes caractéristiques. Un additionneur vectoriel de taille 2 k en arbre 9 est ajouté au système, disposé entre l'entrée 2 et l'automate 1, et prend en entrée un vecteur V (de longueur 2 K ) et produit en sortie une valeur F i , égale à la somme en arbre des valeurs contenues dans V. Un multiplexeur 10 choisit soit la valeur F i en sortie de l’additionneur 9, soit la valeur F i en sortie de l'entrée 2, et la transmet à l’automate 1. Ce multiplexeur 10 choisit systématiquement la sortie de l’additionneur 9 si ce dernier en présente une, sinon, il choisit la sortie F i de l’entrée 2. Le système se voit ajouter le comportement suivant dans l'entrée 2: tant que la transmission de données n’est pas terminée, l'entrée 2 attend d’avoir 2 k valeurs. Si l'entrée 2 contient 2 k valeurs ou plus, elle extrait les 2 k valeurs les plus anciennes sous la forme du vecteur V, envoie V à l'additionneur vectoriel en arbre 9, et présente le résultat Fi au multiplexeur 10. Si la FIFO d'entrée 2 n’a pas 2 k valeurs et que la transmission de données est terminée, alors il se comporte comme dans la version sans cette variante: il présente la valeur la plus ancienne Fi au multiplexeur 10. Si l’entrée 2 est vide et la transmission terminée, alors l’entrée 2 présente l'information eof au multiplexeur 10. Comme illustré sur la figure 19, le mode de réalisation de la figure 18 est combinable au mode de réalisation de la figure 17 avec le module de commande 8 permettant de contraindre la valeur du critère à vrai durant une sommation. Lorsque l'on souhaite effectuer une somme naïve (FADDA ou fredosum), il n'est pas possible de paralléliser donc d'utiliser l'additionneur vectoriel en arbre 9. Aussi, le module de commande 8 inhibe l'additionneur vectoriel en arbre 9 (le module de commande 8 est configuré pour indiquer à l’entrée 2 que l’additionneur vectoriel 9 doit être inhibé), et force le multiplexeur 11 à choisir systématiquement son entrée "vrai". En revanche, lorsque l'on souhaite réaliser une somme en arbre (FADDV ou fredsum), le module de commande 8 active l'additionneur vectoriel en arbre 9 (le module de commande 8 est configuré pour indiquer à l’entrée 2 que l’additionneur vectoriel 9 doit être activé), et force le multiplexeur 11 à choisir systématiquement l'entrée délivrée par le désambigüiseur 7. Ainsi le système de la figure 19 est capable de faire les deux sommes différentes de la figure 17 en fonction de l’état du module de commande 8. Annexe [Annexe1] Pour toujours [Annexe2] Système sur puce de sommation en arbre binaire de nombres flottants comprenant : - un automate (1) à pile configuré pour réaliser des opérations de décalage, de réduction, et d'acceptation ; - une entrée (2) recevant en file des nombres flottants à additionner et une information (eof) représentative de la fin de la sommation des nombres flottants, traités par l'automate (1) ; - une mémoire (3) de programmation de l'automate (1) comprenant une table de transition (3a) de l'automate (1) ; - une mémoire (4) comprenant une pile d'états (4a) de l'automate (1) ; - une mémoire (5) comprenant une pile de résultats (5a) des opérations effectuées par l'automate (1) ; - un additionneur (6) en virgule flottante configuré pour additionner deux valeurs en virgule flottante et délivrer en sortie leur somme en virgule flottante ; et - un désambigüiseur (7) configuré pour mettre en œuvre un critère de désambiguïsation permettant de réaliser l'opération de décalage lorsqu'il est faux et de réaliser l'opération de réduction lorsqu'il est vrai. Système selon la revendication 1, dans lequel le critère de désambiguïsation est vrai si la profondeur (pf) de la pile de résultats (5a) est supérieure au poids (p) de Hamming du nombre (i) de valeurs flottantes reçues en entrée (2) et déjà traitées par l'automate (1). Système selon l'une des revendications précédentes, comprenant au moins un additionneur (6) supplémentaire. Système selon l'une des revendications précédentes, dans lequel la table de transition (3a) est de type LR(1). Système selon l'une des revendications précédentes, dans lequel l'automate (1) est configuré pour terminer sa somme lorsqu'il doit traiter une information (eof) représentative de la fin de la sommation des nombres flottants. Système selon l'une des revendications précédentes, comprenant un module de commande (8) pour commander le désambigüiseur (7) à contraindre la valeur du critère à vrai durant une sommation. Système selon l'une des revendications précédentes, comprenant un additionneur vectoriel en arbre (9) disposé entre l'entrée (2) et l'automate (1) permettant d'effectuer la somme en arbre des nombres flottants d'un vecteur (V) de nombres flottants successifs reçues en entrée (2), et délivrant leur somme en arbre à l'automate (1).