Brevet FR2805361A1 — publié le 20010824

La présente invention concerne de façon générale un traitement virgule flottante. La présente invention concerne en particulier un procédé d'addition de l'addande d'entrée dans une procédure d'accumulation-multiplication à virgule flottante ou de FMAC selon les initiales du terme anglo-saxon floating-point multiply accumulate. Dans la conception d'une architecture de microprocesseur, trois considérations très importantes sont la vitesse, la précision et le coût. Alors qu'il est souhaitable de concevoir un microprocesseur, ou CPU selon les initiales du terme anglo-saxon central processing unit, qui effectue des opérations de multiplication, d'addition et autres selon une précision supérieure et à une vitesse très élevée, il est également souhaitable de concevoir une CPU qui puisse être fabriquée de façon économique. La vitesse et la précision ont fortement augmenté dans les unités centrales de traitement des ordinateurs à ensemble d'instructions réduites, ou RISK selon les initiales du terme anglo-saxon reduced instruction set computer, en fusionnant les opérations de multiplication et d'addition dans l'opération d'accumulation- multiplication (A*B) + C. Lorsque seule une addition ou une multiplication de deux nombres est souhaitée, l'opération A*B peut être exécutée en posant C = 0 et l'opération A + C peut être exécutée en posant B = 1. Le composant d'une unité centrale de traitement qui exécute l'opération (A*B) + C est classiquement appelé une unité d'accumulation-multiplication à virgule flottante ou FMAC, ou une unité de multiplication et d'addition fusionnées à virgule flottante ou MAF/FPU selon les initiales du terme anglo-saxon multiply-add- fused floating-point unit. Les entrées d'une FMAC sont les opérandes suivants: le multiplicande A, le multiplicateur B et l'addande C, où A, B et C peuvent être des nombres fixes ou à virgule flottante, les nombres à virgule flottante étant des nombres exprimés en notation scientifique. Pour représenter sous une forme binaire des nombres à virgule flottante à précision unique, c'est-à-dire 32 bits, des nombres à double précision, c'est ' dire à 64 bits et des nombres à précision étendue, c'est-à-dire à 82 bits, les conventions IEEE sont E, M] où S est un bit unique représentant le signe d'un nombre, E est une valeur à bits multiples, par exemple 17 dans un nombre à précision étendue, qui correspond à un exposant qui peut être déporté d'un certain biais, et M est une mantisse, c'est-à-dire la partie fractionnaire d'une valeur normalisée où le de gauche en d'autres termes, de tête peut être enlevé ou inclus. Dans la présente description, il peut être supposé toute mantisse exprimée inclut son de tête. conséquent, la forme d'un nombre à virgule flottante est S*M*2 (E-déport) , M est représenté 24 bits pour une précision unique; M est représenté par 53 bits pour une précision double, et M est représenté par 64 bits pour une précision étendue,. Lorsque l'opération (A*B) + C est effectuée, l'unite de FMAC multiplie initialement A et B l' par l'autre pour former une valeur A*B qui est mémorisée dans un registre correspondant. Dans la plupart des systèmes, le trajet de données utilisé pour cette étape de multiplication est suffisamment large pour que le nombre de bits de la mantisse résultante A*B soit double de celui d'une mantisse à valeur unique. Par exemple, dans un système à précision étendue la largeur de la mantisse de A*B est normalement de 128 bits. La valeur A*B est ensuite ajoutée l'addande C. De façon particulièrement pertinente pour la présente invention, une étape cruciale dans l'addition de ces valeurs implique d'additionner la mantisse A*B à la mantisse de C pour acquérir la mantisse résultat. Le brevet des Etats Unis n 5 757 686 de Naffziger et al., qui est ainsi incorporé expressément par référence dans la présente description, enseigne un procédé valable qui minimise la largeur du trajet de données nécessaire pour effectuer l'étape d'addition des mantisses. L'étape finale du processus de FMAC est l'arrondissement du résultat de mantisse finale à la position souhaitée de bit. En précision étendue, la valeur de la mantisse est arrondie à 64 bits. De même, en cas de double précision (DP) la valeur est arrondie 53 bits et, en précision simple (SP), la mantisse est arrondie à 24 bits. Dans le cas de la précision double et simple, en format de fichier de registre qui inclut 64 créneaux de bits pour la mantisse, les créneaux inférieurs, c'est-à-dire 11 et 40 respectivement, sont remplis de 0. Tous les autres eléments qui sont éliminés par l'arrondissement de la mantisse résultante sont rebutés ou utilisés pour le calcul d'arrondissement, qui détermine s'il y a lieu ou non d'incrémenter ou de décrémenter les résultats la mantisse. Dans des techniques classiques d'arrondissement, trois valeurs, c'est-à-dire L, G et S sont typiquement utilisées pour exécuter le calcul d'arrondissement. La valeur L est le bit de poids faible de la mantisse résultante, avant l'arrondissement. La valeur G, qui est appelée le bit de garde, est le bit directement à droite de L. Tout ce qui se trouve à la droite de G passe dans la détermination de S qui est appelée la valeur "sticky" selon le terme anglo-saxon, c'est-à- dire littéralement la valeur "collante". La valeur collante est simplement constituée par le résultat d'une opération OU sur tous les bits situés droite de G, y compris ceux qui sont éliminés comme exposé plus loin. Fondamentalement, S est donc seulement une valeur à bit unique, qui est vraie si l'un quelconque des bits à droite de G est 1. La FIGURE 1 représente une FMAC 20 pour additionner les mantisses de A*B et de C où A, B et C, représentés par 22, 24 et 30, comprennent chacun une mantisse m bits et un exposant, et le résultat (A*B) 28 comprend une mantisse à "2m + 1" bits et un exposant, comme décrit ici. La FMAC 20 comprend généralement - un registre CHI 32 couplé à un moyen de transfert, vers un Résultat 44, des bits de la mantisse de C 30 qui dépassent une plage de la mantisse de (A*B) 28; - un registre OBUS 36 couplé à un dispositif de décalage d'alignement 34 pour placer, dans le registre CBUS 36, des bits de la mantisse de C 30 qui recouvrent la plage de la mantisse de (A*B) 28, les bits en recouvrement contenus à l'intérieur des registres (A*B) 28 et OBUS 36 étant alignés pour addition; - un additionneur 38 couplé aux registres (A*B) et CBUS 28, 36 et produisant une sortie (A*B) + OBUS 46; - un dispositif d'anticipation de bit de tête 40 connecté la sortie (A*B) + CBUS 46 de l'additionneur 38; - un dispositif de décalage de normalisation 42 couplé au dispositif d'anticipation de bit de tête 40 et produisant une sortie temporaire normalisée 48; et - un moyen destiné à fusionner, avec un ou plusieurs bits de poids fort de la sortie temporaire 48, les bits du registre CHI 32 qui comprennent des bits la mantisse de C 30 qui dépassent la plage de la mantisse de (A*B) 28, afin de produire une sortie accumulée (A*B) + C 44. se référant aux FIGURES 2 à 5, respectivement, il existe quatre cas généraux d'addition des mantisses A*B et C selon les différences relatives de leurs exposants associés: dans le premier cas, EXP(C) est suffisamment inférieur à EXP(AB) pour que les mantisses ne se recouvrent pas lorsqu'elles sont additionnées; dans le deuxième cas EXP(C) est inférieur à EXP(AB), mais les mantisses se recouvrent sorte qu'il existe une certaine interaction lors de l'addition;. dans le troisième cas EXP(C) est supérieur à EXP(AB), mais ils se recouvrent de sorte qu'ils interagissent lors d'une addition; dans le quatrième cas, finalement, est appelé le cas de "Grand C", EXP (C) est suffisamment supérieur à EXP(AB) pour qu'il n'existe aucun recouvrement, ni aucune interaction lors une addition. Lorsqu'un résultat (A*B) a été créé, l'amplitude des exposants de (A*B) 28 et C 30 sont compares pour déterminer lequel des quatre cas possibles existe. FIGURES 2 à 5 représentent les procédés d'addition pour les quatre cas décrits ci-dessus. Le procédé comprend généralement des étapes consistant à . comparer les exposants de (A*B) 28 et C pour déterminer s'il existe une plage de recouvrement des mantisses de (A*B) et de C; transférer vers un registre CHI 32 toute partie de la mantisse de C 30 qui dépasse une plage de la mantisse de (A*B) 28; - décaler vers le bus C 36 toute partie de la mantisse de C 30A qui recouvre la plage de la mantisse de (A*B) 28 et annuler la partie restante du bus C 36, de façon aligner les bits des mantisses de (A*B) et de C 30 en fonction de leurs amplitudes respectives; - s'il ne s'agit pas du cas 4, ajouter la mantisse de (A*B) 28 le bus C 36 pour engendrer un résultat temporaire ou, en abrégé résultat temp 46; - si une partie de la mantisse de C a été transférée au registre CHI 32, décaler le résultat temp 46 de façon à décaler hors du résultat temporaire un nombre de bits de poids faible correspondant au nombre de bits transférés vers le registre CHI, pour engendrer un résultat décalé 48; et - fusionner avec un masque de fusion 47 les bits du registre CHI 32 qui correspondent à l'excès de la mantisse de C par rapport à la mantisse A*B avec une ou plusieurs positions de bits de poids fort du résultat temporaire décalé 48 pour engendrer un résultat accumulé final 44. On va maintenant décrire successivement chacun des quatre cas, en se référant aux figures correspondantes 2 à 5. Le cas un est décrit en référence à la FIGURE 2. Dans ce cas un, EXP(C) est suffisamment inférieur à EXP(AB) pour qu'aucun recouvrement n'existe entre A*B 28 et C 30 lorsque leurs exposants sont comparés et que leurs mantisses sont alignées. Par conséquent, le résultat final 44 de mantisse ne contient aucune contribution de C, sauf pour le calcul de collante. Puisque C 30 est complètement à droite de A*B 28, le bus C 36 est rempli de 0. Le registre CHI 32 ne joue aucun rôle dans ce cas parce qu'aucune partie de C n'est supérieure à A*B 28, c'est-à-dire qu'aucune partie de C n'est à gauche de A*B 28. Les contenus du registre A*B 28 et du bus C 36 sont ajoutés et le résultat est placé dans le registre de Résultat Temp 46. Le Résultat Temp 46 d'une part et le registre CHI 32, qui n'exerce aucun rôle dans ce cas d'autre part, sont ensuite fusionnés avec le masque de fusion 47 pour produire le résultat final 44 de mantisse. Les valeurs contenues dans le masque 47 de fusion sont basées sur la différence entre les exposants de A*B et de C. Le masque de fusion est aligné avec le registre de Résultat Temp 46 et avec le registre CHI 32; dans chaque emplacement de bit, il inclut soit 0 pour sélectionner le bit correspondant du CHI, soit un 1 pour sélectionner le bit du Résultat Temp correspondant (A*B+C). Dans ce cas, aucune partie de C n'est gauche de A*B 28, le masque de fusion 47 ne comprend que des 1 pour sélectionner entièrement le registre de Résultat Temp 48. Seule la mantisse 28 de A*B contribue au Résultat Final 44 et la mantisse 30 de C est utilisée pour obtenir la valeur collante. On va maintenant décrire le cas 2 en référence à la FIGURE 3. Dans ce cas 2, EXP(C) est inférieur à EXP(AB), mais une partie 30A de C est en recouvrement avec A*B 28 après un décalage approprié en alignement d'addition. Comme dans le cas un, la partie 30B de C qui est en dehors, c'est-à-dire à droite dans ce cas, n'est utilisée que pour déterminer la valeur collante et est ensuite rebutée. Lorsque C 30 a été décalé de la manière représentée au dessin, le bus C 36 inclut, dans sa partie de poids faible, la partie de C 30A qui recouvre la mantisse A*B 28. Le reste du bus 36 est rempli de zéros. Dans ce cas également, le registre CHI 32 ne joue aucun rôle dans la détermination du Résultat Final 44. Les contenus du registre A*B 28 et du bus C 36 sont ensuite ajoutés et placés dans le registre de Résultat Temp 46. Le Résultat Temp 48 et le CHI 32 sont ensuite fusionnés avec le Masque 47 de Fusion pour produire le Résultat Final 44 de Mantisse. En raison de la différence des exposants de A*B et de C, le masque de fusion ne comprend ici aussi que des uns pour sélectionner entièrement le registre de Résultat Temp 48 pour le Résultat Final 44, puisque C est à l'intérieur ou à droite de C. On va maintenant décrire le cas en se référant à la FIGURE 4. Un nombre de bits 30C de C qui correspond à la différence entre les exposants de C 30 et de (A*B) 28 est transféré dans le registre de CHI 32 dans sa partie de poids fort. La partie de poids faible restante du registre CHI 32 est remplie de uns. Dès lors que les bits d'ordre supérieur de C 30 ont été transférés à CHI 32, ce qui reste dans les positions de bits d'ordre élevé de C 30 est sans importance. Les contenus restants C 30 sont transférés au bus C 36. Ils sont décalés vers la gauche d'un nombre de bits qui correspond à la différence entre les exposants de C 30 et (A*B) 28. On peut voir que la partie d'ordre élevé 30C de C 30 est masquée du bus C 36, et que les bits de recouvrement 30A de C 30 et de (A*B) 28 sont alignés. Les bits de poids faible du bus C 36 sont remplis de zéros. Lorsque la partie en recouvrement de a été alignée avec le résultat (A*B) 28, le Résultat Temp 46 est engendré par l'addition de A*B 28 et du bus C 36. L'information de bit collant peut être utilisée pour arrondir le Résultat Temp 46 et tout report du Résultat Temp 46 peut être utilisé pour incrémenter le CHI 32. Puisque les bits de poids faible CHI 32 sont remplis de uns, il faut noter qu'un report du Résultat Temp 46 se propage à travers les bits de poids faible du CHI 32 vers les bits de CHI 32 représentent la partie d'ordre élevé de C 30. Après l'obtention du Résultat Temp 46, le Résultat Temp 46 doit être décalé vers la droite, par l'intermédiaire du dispositif de décalage 42, d'un nombre de bits égal à la différence entre les exposants de C 30 et de (A*B) 28. Le registre de Résultat Temp décalé est représenté en 48. La partie d'ordre élevé de C 30 contenue dans CHI 32 et le Résultat Temp Décalé 48 sont maintenant fusionnes avec le masque 47 pour produire le Résultat Final 44. Cette fois, en raison de la différence entre les exposants de A*B C, les bits de poids fort qui correspondent au nombre de bits de C extérieurs à A*B sont zéros pour sélectionner le registre CHI 32, et les bits de poids faible restants sont des 1 pour sélectionner le Résultat Temp Décalé 48. On va maintenant traiter le cas 4 en se référant à la FIGURE 5. Ce cas, dans lequel C est suffisamment supérieur à A*B pour que toute la mantisse de résultat provienne de C, est appelé le cas du "Grand C". Comme exposé ci-dessous, le cas du Grand C est particulièrement spécial parce que les calculs d'arrondissement peuvent être effectués de façon plus efficace lorsqu'il est identifié. Puisque C 30 est complètement à gauche de A*B, la totalité de C est placée dans le registre CHI 32. Lorsque le cas du Grand C est identifié, le décalage et l'utilisation du bus C peuvent être contournés, et le contenu du CHI 32 est directement fusionné dans le Résultat Final 44 de mantisse. La mantisse A*B n'intervient que dans le calcul de collante. Dans l'art antérieur, les précisions d'entrée et de sortie concordent toujours. En d'autres termes, même dans des systèmes où les éléments matériels possèdent par exemple la capacité de traiter en double précision, c'est-à-dire 53 bits, il aurait pu être nécessaire d'arrondir la sortie à une précision unique. Ceci ne pose cependant aucun problème jusqu'ici car le système sait que la précision d'entrée doit aussi être simple puisque la concordance des précisions d'entrée et de sortie est garantie. La FIGURE 6A représente un exemple de ce type de situation. Dans cet exemple, il est connu que les deux valeurs d'entrée et de sortie sont des nombres virgule flottante à précision unique. La mantisse 130 de C est mémorisée dans le registre à 53 bits et la mantisse 128 de A*B est mémorisée dans un registre 106 bits. Les données pertinentes, c'est-à-dire chaque mantisse pertinente, sont placées sur les parties supérieures des registres d'opérandes et les bits de poids faibles sont remplis de 0. Par conséquent, dans l'exemple de la FIGURE 6A, les 24 bits supérieurs sont la mantisse de C, et les 29 bits inférieurs sont remplis de 0. Puisque la partie inférieure de C, qui est rendue égale à 0, est le seul élément en recouvrement avec A*B, on peut voir qu'il n'existe fondamentalement aucune interaction entre C et A*B, sauf les interactions d'arrondissement. Ceci peut donc être identifié comme un cas 4 ou cas de Grand C. Ce qui est important est qu'un classement dans l'un des quatre cas soit possible et qu'un traitement correspondant puisse être exécuté. Dans l' antérieur, connaître simplement la précision de sortie permet de connaître aussi la précision d'entrée, et le seuil du cas peut être fixé de façon appropriée pour identifier correctement le cas d'un calcul donné. Dans l'art antérieur, il est simple aussi de déterminer L, G et S. Par exemple, dans le cas du Grand C, L est toujours un bit particulier de C, c'est -dire le bit de poids faible de la mantisse. Dans l'exemple de la FIGURE 6A, ce serait toujours bit 30. I1 est garanti que G est toujours égal à 0, et la valeur collante est simplement le résultat d'une opération OU sur A*B. Si A*B n'est pas 0, S est vrai et, si A*B n'est pas 0, S est faux. Lorsque le cas du Grand C est identifié, il est facile de déterminer ces valeurs. Même dans un cas autre que celui du Grand C, L et et S peuvent encore être calculées facilement en utilisant des procédés classiques pour ces autres cas. conséquent, l'algorithme de Naffziger décrit ci-dessus qui supprime le besoin d'une largeur de trajet de données de 3 N + 1 dans les cas 3 et 4 est un excellent algorithme dans l'art antérieur, même lorsque des valeurs à précision unique sont traitées par des éléments matériels à double précision. Pour cette raison, L, G et S sont faciles à obtenir. Ces valeurs sont obtenues à partir du cas du Grand ou sont trouvées facilement à partir du registre de Résultat Temp (A*B + C). Mais la concordance des précisions d'entrée de sortie n'est malheureusement plus garantie maintenant, dans les cas de l'architecture IA64 qui utilise un format de fichiers de registres, c'est-à-dire une précision étendue. Les valeurs d'entrée sont toujours dans le format de fichiers de registre. Si la sortie est arrondie à une précision unique ou double les bits inférieurs des opérandes d'entrée ne sont pas nécessairement des 0. Par conséquent, lorsque la sortie est arrondie à une précision moindre, il est pas possible de supposer que la précision des entrées est correspondante. Puisque la précision de sortie est réduite, les bits inférieurs ne sont éliminés par arrondi qu'après l'exécution de l'opération d'addition. Par conséquent, les seuils de ne peuvent pas, comme dans l'art antérieur, être établis pour des précisions spécifiques de sortie parce qu'il existe par exemple encore une interaction entre les bits au-delà des 24 bits, c'est-à-dire les bits de précision unique, et le bus A*B. Par conséquent, L, G et S ne peuvent pas être déterminées facilement au moyen de l'algorithme classique en identifiant simplement le cas. Au lieu de ne provenir que du registre Résultat Temp dans des emplacements susceptibles d'être déterminés, L, G et une partie de la valeur collante peuvent maintenant provenir du bus CHI. FIGURE 6B représente un exemple qui illustre ce problème. L'exposant de la mantisse de C 170 est supérieur de 26 bits à l'exposant de la mantisse de A*B 168. Supposons dans ce cas que l'arrondissement est à précision unique. Dans ce cas, seuls 24 bits de mantisse de résultat sont gardés. Si les 40 bits inférieurs étaient connus égaux à zéro, ce cas pourrait être identifié comme un cas de Grand C parce la précision unique du nombre serait garantie. Mais il existe une interaction entre ces bits inférieurs, qui ne sont pas nécessairement des zéros, A*B. C'est donc le but de la présente invention que de fournir un procédé et un système permettant d'obtenir paramètres d'arrondissement L, G et S dans FMAC à précision de m bits dont la précision de sortie peut être inférieure à la précision d'entrée. Pour atteindre ce but, l'invention fournit procédé d'addition d'une valeur C à un résultat (A*B) pour acquérir un résultat final de mantisse qui est arrondi à une précision inférieure, procédé qui mis en oeuvre dans une unité d'accumulation multiplication à virgule flottante (20) pour exécuter 'opération d'accumulation (A*B) + C où A, B et comprennent chacun une mantisse à m bits et un exposant, et un résultat (A*B) comprend une mantisse à + 1" bits et un exposant, caractérisé en ce qu'il comprend les étapes consistant à: comparer les exposants de (A*B) et C pour determiner s'il existe une plage de recouvrement des mantisses de (A*B) et de C; transférer vers un registre CHI toute partie de mantisse de C qui dépasse une plage de la mantisse (A*B); décaler toute partie de la mantisse de C qui recouvre la plage de la mantisse de (A*B) , de façon à aligner les bits des mantisses de (A*B) et de C en fonction de leurs amplitudes respectives; ajouter à la mantisse de (A*B) la partie décalée la mantisse de C pour engendrer un Résultat Temp.; si une partie de la mantisse de a été transférée au registre CHI, décaler hors du Résultat Temp. un nombre de bits de poids faible correspondant au nombre de bits transférés vers le registre ; fusionner avec un masque de fusion les bits de la mantisse de C qui ont été transférés au registre CHI avec une ou plusieurs positions de bits de poids fort du Résultat Temp. décalé, pour engendrer un résultat mantisse accumulé; arrondir le résultat de mantisse à la precision inférieure en utilisant un ou plusieurs paramètres arrondissement, y compris un bit de gauche . et acquérir L en sélectionnant en fonction de la valeur de bit du masque de fusion correspondant à la position du bit L, soit une valeur du L du registre CHI, soit une valeur du bit L du Résultat Temp. La précision inférieure peut être une précision unique, le bit L d'un registre correspondant au bit (m-24) du registre, ou, en variante, la précision inférieure peut être double, le bit L d'un registre étant le bit (m-53). Le paramètre ou les paramètres d'arrondissement peuvent inclure un bit de garde G. procédé peut comprendre en outre 'étape consistant à: acquérir G en sélectionnant en fonction d'une valeur bit G sur le masque de fusion, soit une valeur de bit G du registre CHI, soit une valeur de bit G du Résultat Temp. Dans ce cas, la précision inférieure peut être une précision unique, le bit G d'un registre correspond au bit (m-23) du registre ou, en variante, la précision inférieure peut être double, le bit G d'un registre étant le bit (m-52). paramètre ou les paramètres d'arrondissement peuvent inclure une valeur collante (S). Dans ce cas, le procédé peut comprendre outre l'étape consistant à remplir de zéros les bits de poids faible du registre CHI en fonction du masque de fusion; paramètre S étant dérivé d'une opération OU entre les bits inférieurs du registre CHI en débutant au S du registre CHI, lorsque la valeur du bit S du registre CHI est fusionnée dans la mantisse de résultat. un cas de grand C réel est identifié, on peut alors prévoir de dériver S d'une opération OU sur les bits du Résultat Temp. Afin que la description détaillée de l'invention qui suit puisse être mieux comprise, les paragraphes précédents ont exposé de façon assez générale les particularités et les avantages techniques de la présente invention qui font l'objet de revendications. I1 ressort clairement à l'homme de l'art que la conception et le mode de réalisation spécifiques décrits peuvent être utilisés directement comme base pour modifier ou concevoir d'autres structures pour atteindre les mêmes buts que ceux de la présente invention. Il ressort également à l'homme de l'art que de telles constructions équivalentes ne s'écartent ni de l'esprit, ni du cadre de l'invention exposés dans les revendications annexées. Les buts, particularités et avantages de la présente invention exposés ci-dessus ainsi que d'autres ressortiront encore davantage de la description qui suit de modes de réalisation préféres en conjonction avec les dessins dans lesquels: FIGURE 1 est une représentation schématique d'une unité d'accumulation-multiplication à virgule flottante ou FMAC; FIGURE 2 représente le flux de données à travers une FMAC lorsque EXP(C) est sensiblement inférieur à EXP(A*B); FIGURE 3 représente le flux de données à travers une FMAC lorsque EXP(C) est inférieur à EXP(A*B) et qu'au moins une partie de C est recouvrement avec A*B; la FIGURE 4 représente le flux de données à travers une FMAC lorsque EXP(C) est supérieur à EXP(A*B) et qu'au moins une partie de C est en recouvrement avec A*B; FIGURE 5 représente le flux de données à travers une FMAC lorsque EXP(C) est sensiblement supérieur à EXP(A*B); FIGURE 6A représente C et A*B lorsque les entrées sont à précision unique, dans le cas d'éléments matériels à précision étendue; FIGURE 6B représente C et A*B lorsque entrées sont à précision étendue et que le résultat doit être arrondi à une précision unique; et FIGURE 7 représente un exemple de flux donnée lorsque le masque de fusion est utilisé pour sélectionner les paramètres d'arrondissement pour arrondir à une mantisse à précision unique, lorsque les entrées sont à précision étendue. La présente invention fournit une methode de détermination directe de L, G et S lorsque la précision de sortie est inférieure à la précision d'entrée. A l'exception du cas du Grand C, procédé est indépendant du cas particulier. L'opération de sélection de L, G et S est exécutée comme s'il s'agissait du cas 3 et L, G et S sont déterminés de la manière exposée ici. Lorsque C est supérieur à A*B et qu'une opération du cas 3 est exécutée, L, G et S sont fixes par rapport au bus de Résultat Final de Mantisse. Le bus de Résultat est dans la même position. Dès lors, le bus de CHI est lui aussi fixe par rapport bus de résultat. Par conséquent, L, G et S sont elles aussi fixes par rapport à CHI. Puisque L, G et S sont fixes par rapport à CHI, des bits particuliers provenant de CHI peuvent être utilisés pour déterminer L G et S, qu'ils soient ou non utilisés en fait. De même, le bus A*B + c'est-à-dire de Résultat Temp, peut être utilisé pour déterminer quels bits peuvent être L, G et S, même si les bits ne sont pas réellement utilisés. Le masque de fusion peut ensuite être utilisé. Non seulement il sélectionne quelles données sont utilisées pour le Résultat Final, mais il peut en outre etre utilisé pour identifier si L, G et S doivent être prélevées dans le bus CHI ou dans le bus de Résultat Temp (A*B + C). résumé, la base de la solution consiste à utiliser le masque de fusion, en sachant que bus de CHI doit être considéré comme une source pour une partie cette information, pour sélectionner les L, G et S, soit dans le bus de CHI, soit dans bus de Résultat Temp (A*B + C). Les valeurs L, G et S peuvent venir soit du bus de CHI, soit du bus de Résultat Temp. Le masque de fusion est utilisé pour identifier laquelle de ces sources doit être utilisée. Ici aussi, L est le bit de poids faible d'une valeur, G est le bit à droite de L, et S est le résultat d'une opération logique OU sur tous les bits la droite de G. Par conséquent, lors d'un arrondissement à une précision unique dans un système précision étendue, L correspond au bit 40, G correspond au bit 39, et S est le résultat d'une opération logique OU sur tous les bits situés la droite du bit 39. Lors d'un arrondissement à une précision double, L correspond à la positon de bit 11, G correspond à la position de bit 10 et S est le résultat d'une opération logique OU de bits la droite de la position de bit 10. Ces positions seront appelées respectivement le bit L, le bit G et les bits S, indépendamment de la précision qui serait prise en compte. Grâce à ces positions constantes de bits pour une précision donnée, L et G peuvent être déterminées en utilisant les formules suivantes: L = (CHI [bit L] NON ET Masque [bit L]) OU (Résultat Temp [bit L] ET Masque [bit L]); = (CHI [bit G] NON ET Masque [bit G]) OU (Résultat Temp [bit G] ET Masque [bit G]; S est déterminée de façon un peu différente. Elle peut venir tant du bus CHI que du bus de Résultat Temp. La valeur collante peut être calculée en observant le bit S et la partie inférieure du bus CHI qui faisaient partie de C. Afin d'obtenir ces bits à partir du bus CHI pour le calcul de la valeur collante, la partie inférieure de CHI qui correspond à partie de C où C recouvre A*B est remplie de zéros. Ceci est effectué par une opération ET de chaque bit de CHI avec l'inverse du bit correspondant dans le masque de fusion. En d'autres termes: CHI COLLANTE [N:0] = CHI [N:0] NON ET Masque [N:0] Ceci permet d'obtenir la contribution de valeurs collantes provenant du bus CHI par une simple opération OU sur le bus CHI COLLANTE à partir du bit S vers le bas. Pour une précision unique, ceci s'effectuerait vers le bas à partir du bit 38 et, pour une précision double, vers le bas à partir du bit 9. Pour la contribution du Résultat Temp, la logique normale de valeur collante peut être mise en application, c'est-à-dire une opération OU sur le bus de Résultat Temp. Par conséquent, le résultat final de valeur collante peut être acquis par une equation OU sur ces deux composants. Ceci est représenté dans la formule suivante: SCHI OU SResultat Temp Ce procédé de détermination de L, et S est également applicable pour les cas 1 à 3. Dans le cas où l'exposant de C est inférieur à l'exposant de A*B, les mêmes calculs sont exécutés; mais, en raison de la façon dont le masque sort, il ne contient que des uns de sorte que rien n'est choisi dans le bus de CHI. Dans le cas du Grand C, ce procédé est approprié pour sélectionner le bit L, puisque le masque ne comprend que des zéros, et le bit L est sélectionné dans le bus de CHI. Dans ce cas, G et S constituent des cas spéciaux. G est toujours égal à 0 ou 1 selon la relation de signe entre C et A*B, et S est égal au résultat d'une opération OU sur tous les bits du bus A*B. En d'autres termes, le procédé de l'invention peut etre utilisé généralement lors d'une addition d'un addande C au produit A*B pour les cas 1 à 3 et est applicable pour sélectionner le bit L dans le cas du Grand C. FIGURE 7 représente l'opération de dérivation de L, G et S pour l'exemple de la FIGURE 6B. Un registre 228 de A*B et un registre 230 de C sont représentés. Les registres sont des registres à précision étendue de 128 et 64 bits, respectivement, les numéros des positions de bits croissant de la droite vers la gauche. Le résultat doit être arrondi à une précision unique, c'est-à-dire 24 bits. Dans cet exemple, l'exposant de C est supérieur de 26 bits à l'exposant de A*B. Par conséquent, les bits 38 à 63 de C 230 sont à gauche de A*B 228. Ces bits sont mémorisés dans le registre CHI 232. Le bus C est décalé pour être aligné avec A*B afin d'y être additionné. Le résultat de cette addition est mémorisé dans Résultat Temp (A*B + C), et est ensuite décalé comme représenté à Résultat Temp Décalé 248. On peut voir que L et G proviennent de CHI et sont respectivement aux emplacements de bits 40 et 39, qui constituent les valeurs de bit L et de bit G pour une précision unique. La valeur collante provient tant du bus de CHI que du Résultat Temp et correspond à la position 38 de bit et aux positions inférieures. Par conséquent, compte tenu des formules précédentes pour L et G, L = (CHI [40] NON ET Masque [40]) OU (Résultat Temp [40] ET Masque [40]), et de même G = (CHI [39] NON ET Masque [39]) OU (Résultat Temp [39] ET Masque [39]. Puisque le masque de fusion 247 est 0 aux bits 40 et 39 pour sélectionner CHI, L est sélectionné dans CHI au bit 40 et G est sélectionné dans CHI au bit 39. La valeur collante S est le résultat d'une opération OU entre CHI[38] et la valeur collante calculée à partir du registre de Résultat Temp, qui est le résultat de l'opération OU de tous les bits du registre de Résultat Temp, correspondant aux bits 37 du résultat et à tous ceux qui sont à sa droite. I1 faut noter que les raccourcis classiques du cas du Grand C peuvent encore être utilisés lorsqu'il existe un cas réel de Grand C, c'est-à-dire lorsque tout le registre de C dépasse suffisamment le registre de A*B pour qu'il n'existe aucune interaction entre et A*B. Dans le cas d'éléments matériels à précision étendue, ceci se produit approximativement lorsque EXP(C) - (A*B) est supérieur à 65. Ceci peut ne être vrai, en fonction de la méthode réelle de mémorisation de la mantisse, par exemple des effets de signe, Dans un cas réel de Grand C, il préférable d'utiliser la solution de l'art antérieur dans laquelle L est le bit de poids faible du registre C, le C n'est pas décalé, G est 0 ou 1 selon relation de signe entre C et A*B et S est déterminée par une opération OU dans le registre A*B. Bien que la présente invention et ses avantages aient été décrits en détails, il faut comprendre que diverses modifications, substitutions et altérations peuvent y être apportées sans s'écarter de l'esprit et du cadre de l'invention définis dans les revendications annexées. En outre, le cadre de la présente demande ne doit pas être compris comme limité aux modes de réalisation particuliers du processus, de la machine, de la fabrication, de la composition des matières, des moyens, des procédés et des étapes décrits dans la présente demande. A partir de la description de la présente invention, il ressort clairement à l'homme de l'art, que des processus, des machines, une fabrication, des compositions de matières, des moyens, des procédés ou des étapes existant actuellement ou à développer ultérieurement qui exercent sensiblement la même fonction ou atteignent sensiblement le même résultat que les modes de réalisation correspondants décrits ici peuvent être utilisés conformément à la présente invention. Les revendications annexées doivent donc être comprises comme incluant dans leur cadre ces processus, machines, fabrication, compositions de matières, moyens, procédés, ou étapes. REVENDICATIONS 1. Procédé d'addition d'une valeur C un résultat (A*B) pour acquérir un résultat final de mantisse qui est arrondi à une précision inférieure, mis oeuvre dans une unité (20) d'accumulation- multiplication à virgule flottante pour exécuter l'opération d'accumulation (A*B) + C où A, B et C comprennent chacun une mantisse à m bits et un exposant, et un résultat (A*B) comprend une mantisse à "2m + 1" bits et un exposant, caractérisé en ce qu'il comprend les étapes consistant à: - comparer les exposants de (A*B) (28) et C (30) pour determiner s'il existe une plage de recouvrement (30A) des mantisses de (A*B) et de C; - transférer vers un registre CHI (32) toute partie de la mantisse de C (30) qui dépasse une plage de la mantisse de (A*B) (28); - décaler toute partie (30A) de la mantisse de C qui recouvre la plage de la mantisse de (A*B), de façon à aligner les bits des mantisses de (A*B) et de C en fonction de leurs amplitudes respectives; - ajouter à la mantisse de (A*B) la partie décalée de la mantisse de C pour engendrer un Résultat Temp. (46) ; - si une partie de la mantisse de C a été transférée au registre CHI (32), décaler hors du Résultat Temp. (46) un nombre de bits de poids faible correspondant au nombre de bits transférés vers le registre CHI (32); - fusionner avec un masque de fusion (47) les bits de la mantisse de C qui ont été transférés au registre CHI (32) avec une ou plusieurs positions de bits de poids fort du Résultat Temp. décalé (48), pour engendrer un résultat de mantisse accumulé; arrondir le résultat de mantisse à la précision inférieure en utilisant un ou plusieurs paramètres d'arrondissement, y compris un bit de gauche ; et acquérir L en sélectionnant en fonction de la valeur de bit du masque de fusion correspondant à la position du bit L, soit une valeur du L du registre CHI (32), soit une valeur du L du Résultat Temp (46). . Procédé selon la revendication 1, caractérisé en ce que la précision inférieure est une précision unique et le bit L d'un registre correspond au (m-24) du registre. 3. Procédé selon la revendication 1 caractérisé en ce que la précision inférieure est double et le bit L d'un registre est le bit (m-53). 4. Procédé selon la revendication 1, caractérisé en ce que le paramètre ou les paramètres d'arrondissement incluent un bit de garde G. 5. Procédé selon la revendication 4, caractérisé en ce qu'il comprend en outre l'étape consistant à: acquérir G en sélectionnant en fonction d'une valeur de bit G sur le masque de fusion, soit une valeur de bit G du registre CHI (32), soit une valeur de bit G du Résultat Temp. (46). 6. Procédé selon la revendication 5, caractérisé en ce que la précision inférieure est une précision unique et le bit G d'un registre correspond au bit (m-23) du registre. 7. Procédé selon la revendication 1 caractérisé en ce que la précision inférieure est double et le bit G d'un registre est le bit (m-52). 8. Procédé selon la revendication 1, caractérisé en ce que le paramètre ou les paramètres d'arrondissement incluent une valeur collante (S). 9. Procédé selon la revendication 8, caractérise en ce que comprend en outre l'étape consistant à remplir de zéros les bits de poids faible du registre CHI en fonction du masque de fusion; et en ce que paramètre S est dérivé d'une opération OU entre les bits inférieurs du registre CHI en débutant au du registre CHI, lorsque la valeur du bit S du registre CHI est fusionnée dans la mantisse de résultat . Procédé selon la revendication 9, caractérisé en ce que S est dérivé d'une opération OU sur les bits du Résultat Temp. (46) si un cas de grand C réel est identifié.