Brevet FR2689989A1 — publié le 19931015

i La présente invention concerne des systèmes de traitement de données et plus particulièrement un appareil de calcul d'un bit appelé "sticky bit" en langage anglo-saxon, que nous appellerons "bit adhérent" dans ce qui suit, dans une unité à virgule flottante d'un microprocesseur. La présente demande est liée, d'une part, au Brevet US-A-5 195 051 de Krishnan J Palaniswami publié le 16 Mars 1993, intitulé "Computation of Sign bit and Sign Extension in the Partial Products in a Floating Point Multiplier Unit" (ou Calcul d'un bit de signe et d'une extension de signe dans les produits partiels d'une unité multiplicatrice à virgule flottante) et, d'autre part, à la demande de brevet en cours d'examen- Numéro de série 07/860 897, déposée le 31 Mars 1992, de Jack T Poon et intitulée "Floating Point to Integer Conversion in a Floating Point Adder", c'est-à-dire Virgule flottante pour conversion à un entier dans un additionneur à virgule flottante, tous deux cédés à Intel Corporation, le cessionnaire de la présente invention. Dans des opérations à virgule flottante, l'opérateur est limité par le nombre de bits qu'il peut mémoriser pour un nombre particulier Arrondir est donc nécessaire pour ajuster un nombre d'une manière qu'il soit exact selon une certaine précision spécifiée cohérente avec les capacités de mémorisation de nombre de l'ordinateur. Par exemple, arrondir au nombre pair est réalisé en additionnant une moitié de la position du chiffre de poids faible de la précision souhaitée au chiffre de poids fort de la partie qui sera finalement rejetée. Considérons, par exemple, le nombre 38,5 XXX (o XXX sont des chiffres additionnels dans le nombre) Si XXX > O (cas 1) arrondir au nombre 39 est correct parce que 39 est le plus voisin de 38,5 XXX Mais, si XXX 0 (cas 2), l'arrondissement est incorrect parce qu'il s'agit d'une situation d'égalité qui exige que le résultat soit arrondi au nombre pair ( 38) Un bit est utilisé pour distinguer entre le cas 1 et le cas 2 et c'est le OU logique des bits XXX Ce bit est appelé le bit adhérent et il lui est donné une valeur de 1 pour le cas 1 et une valeur de O pour le cas 2 Ce bit adhérent est utilisé pour distinguer entre les deux cas o un nombre, comme 38,5, est arrondi au nombre entier le plus voisin Les exemples ci-dessus sont tirés du livre "Introduction to Arithmetic for Digital Systems Designers", c'est-à-dire Introduction à l'arithmétique pour les concepteurs de systèmes numériques, de Waser and Flynn, 1982, CBS College Publishing. Dans une opération de multiplication, le bit adhérent ne peut ordinairement par être calculé avant que le résultat de la multiplication n'ait été déterminé Il en résulte qu'il faut prendre des cycles additionnels d'horloge, pendant une opération de multiplication, afin de déterminer le bit adhérent à la suite du calcul des produits partiels. C'est un but de la présente invention que d'accélérer l'opération de l'unité multiplicatrice à virgule flottante en calculant le bit adhérent en parallèle avec la génération du produit partiel. Le but ci-dessus est, en bref, atteint selon l'invention au moyen d'une logique de multiplication dans laquelle un bit adhérent est calculé en parallèle avec une génération et une réduction de produit partiel pour trois précisions différentes d'arrondissement et deux plages différentes d'opérandes. Il faut calculer deux bits adhérents pendant l'opération en parallèle parce que le résultat peut être une valeur quelconque comprise entre O et 4 et le résultat correct ne sera connu que lorsque le résultat de la multiplication aura été calculé Si le résultat est compris entre O et 2, un premier bit adhérent est engendré Lorsque le résultat est compris entre 2 et 4, un deuxième bit adhérent est engendré C'est seulement lorsque l'addition finale a été exécutée que le bit adhérent correct peut être déterminé. Dès lors que les résultats de l'addition finale sont connus, le bit adhérent correct est choisi en utilisant un report de l'additionneur, le bit de débordement Si le bit de débordement est un 1, le premier bit adhérent est choisi; si le bit de débordement est un 0, le deuxième bit adhérent est choisi. De façon plus spécifique, l'invention réalise, selon un premier aspect, un générateur de bit adhérent dans un multiplicateur à virgule flottante fonctionnant selon une précision choisie afin de multiplier des nombres à virgule flottante, comprenant un champ de mantisse et un champ d'exposant o les positions relatives du bit de faible poids de la mantisse avant arrondissement sont un bit rond et des bits adhérents, caractérisé en ce qu'il comprend: un moyen additionneur d'un compte de multiplicande à zéros suiveurs et d'un compte de multiplicateur à zéros suiveurs afin de produire un compte de somme à zéros suiveurs; un moyen de choix d'une constante correcte, à comparer audit compte de somme à zéros suiveurs en fonction d'une précision choisie afin de déterminer un bit adhérent; et un premier moyen comparateur pour comparer à une première constante basée sur ladite commande de précision, afin d'engendrer un premier bit adhérent dont la valeur est zéro à la condition que la sortie dudit comparateur soit un et dont la valeur est un à la condition que la sortie dudit comparateur soit zéro; un deuxième moyen comparateur pour comparer à une deuxième constante basée sur ladite commande de précision, afin d'engendrer un deuxième bit adhérent dont la valeur est zéro à la condition que la sortie dudit comparateur est un et donc la valeur est un à condition que la sortie dudit comparateur est zéro; ladite première et la deuxième constantes étant déterminées à partir du nombre de bits placés à droite du bit rond; et un moyen sensible audit bit de débordement pour choisir ledit premier bit adhérent et pour choisir en variante ledit deuxième bit adhérent. Selon un deuxième aspect, l'invention fournit un procédé de génération d'un bit adhérent dans un multiplicateur à virgule flottante fonctionnant selon une précision choisie pour multiplier des nombres à virgule flottante comprenant un champ de mantisse et un champ d'exposant o les positions relatives du bit de moindre poids de la mantisse avant arrondissement sont un bit rond et des bits adhérents caractérisé en ce qu'il comprend les étapes consistant à: A additionner un compte de multiplicande à zéros suiveurs et un compte de multiplicateur à zéros suiveurs afin de fournir une première somme; B choisir, dans un premier multiplexeur 3:1, une première constante à comparer à ladite somme de compte de zéros suiveurs en fonction de la précision choisie afin de déterminer un premier bit adhérent et, dans un deuxième multiplexeur 3:1, une deuxième constante à comparer avec ladite somme de compte de zéros suiveurs en fonction de la précision choisie afin de déterminer un deuxième bit adhérent; C comparer dans un premier comparateur la première somme à ladite première constante; D engendrer un premier bit adhérent de un si la. sortie du premier comparateur est un et un premier bit adhérent de zéro dans le cas contraire; E comparer dans un deuxième comparateur ladite deuxième somme à une deuxième constante; F engendrer un deuxième bit adhérent de un si la sortie du deuxième comparateur est un, et un deuxième bit adhérent de zéro dans le cas contraire; G choisir ledit premier bit adhérent, à la ligne de sortie d'un sas, si un résultat non arrondi de l'addition est compris entre zéro et deux, et H choisir ledit deuxième bit adhérent, à la ligne de sortie d'un autre sas, si un résultat non arrondi de l'addition est compris entre deux et quatre. Ces buts, particularités et avantages de l'invention, ainsi que d'autres, ressortiront mieux de la description qui suit d'un mode de réalisation préféré illustré aux dessins annexés dans lesquels: la figure 1 est un schéma fonctionnel d'une unité multiplicatrice à virgule flottante illustrant un mode de réalisation préféré de l'invention; la figure 2 est un schéma fonctionnel du générateur de bit adhérent représenté à la figure 1; et la figure 3 est un schéma logique d'un générateur de bit adhérent représenté à la figure 2. On décrira en premier lieu de façon concise, en se référant à la figure 1, le multiplicateur à virgule flottante, objet d'une autre demande de brevet comme indiqué plus haut, et on décrira ensuite de façon plus détaillée, en se référant à la figure 2, le générateur de bit adhérent, et, en se référant à la figure 3, le procédé de génération correspondant. En se référant en premier lieu à la figure 1, l'unité multiplicatrice à virgule flottante calcule le pro- duit d'un multiplicande à 67 bits par un multiplicateur à 64 bits, de la manière décrite de façon plus détaillée dans le brevet US-A-5 195 051 qui est incorporé ici par référence Le multiplicateur à virgule flottante est susceptible d'engendrer, en trois cycles d'horloge qui sont conformes aux normes IEEE, des résultats arrondis selon une précision unique, double, et étendue Il est également susceptible d'exécuter une multiplication d'entiers signés/non signés de 32 bits par 32 bits Le délai de l'opération de multiplication est de trois signaux d'horloge Le débit de multiplication est, en revanche, de deux cycles d'horloge Le multiplicateur à virgule flottante présente un fort effet de pipe-line et il peut atteindre ces valeurs d'exécution en utilisant une technique de multiplication parallèle et un nouvel additionneur à 129 bits. A l'étage Xl, le multiplicateur à virgule flottante engendre 22 produits partiels en encodant en cabine le multiplicateur à 64 bits A l'étage X 2, les produits partiels sont amenés dans un arbre 112 d'additionneur à sauvegarde de report, ou CSA, 4:2 en vue d'une poursuite de la réduction, en produisant finalement deux vecteurs appelés les vecteurs de somme et de report Dans l'étage WF, ces vecteurs de somme et de report sont additionnés pour calculer le produit final De plus, un arrondissement a été exécuté (selon la commande de précision et le mode d'arrondissement) en utilisant un arrondisseur spécialisé 134 Le résultat arrondi est ensuite écrit en retour sur le bus des résultats FMMZBUS à la fin du cycle d'horloge WF. L'étage Xl est constitué par des encodeurs en cabine 110 et des générateurs de produits partiels 108. Les entrées de ces deux blocs sont le multiplicande 100 à 67 bits et le multiplicateur 102 à 64 bits. L'étage X 2 consiste en un arbre 112 de CSA 4:2 et un générateur 114 de bit adhérent Les entrées de l'arbre de CSA sont les produits partiels Le générateur de bit adhérent calcule le bit adhérent pour différentes précisions de l'étage X 2 Deux valeurs différentes de bit adhérent sont calculées, l'une FMWSFKTKA lorsque la valeur du produit non arrondi est comprise entre 2 et O et l'autre FMWFSTKV lorsque cette valeur est comprise entre 4 et 2, inclusivement La sortie de ce bloc 114 est la valeur réelle de bits adhérents à utiliser dans l'étage WF. La logique de l'étage WF consiste en un bloc 112 de sommation à 129 bits, un normalisateur, un incrémenteur 130 à 64 bits, deux blocs différents de multiplexeur, et une logique d'arrondissement 134. L'unité 112 de sommation à 129 bits calcule la somme à 129 bits en utilisant la sortie du bloc 116 génération/propagation de groupe, qui est entrée dans le sas 118 lors de l'élévation du signal d'horloge WF. Le normalisateur est un dispositif 124 de décalage à droite de 1 bit qui décale le résultat arrondi si la valeur du résultat non arrondi est comprise entre 4 et 2, inclusivement L'incrémenteur de 64 bits engendre un résultat égal au résultat non arrondi plus un. L'un des blocs du multiplexeur est utilisé pour remplacer les bits inférieurs non significatifs à l'entrée de l'incrémenteur par des bits basés sur le mode de précision L'autre bloc de multiplexeur remplace dans le résultat normalisé les bits inférieurs non significatifs par des zéros sur la base du mode de précision de l'opération de multiplication à virgule flottante. La logique d'arrondissement 134 évalue une condition ronde sur la base de la précision et du mode d'arrondissement, du signe du résultat du multiplicateur à virgule flottante du signe, de la valeur du bit de poids faible ou LSB, du bit rond et des bits adhérents, et du type d'opération de multiplication Le signal FMMROVFNN indique un débordement d'arrondissement Le multiplexeur 3:1 132 à la sortie de la logique de l'étage WF choisit, soit le résultat normalisé provenant du multiplexeur 2:1 126, soit le résultat incrémenté venant de l'incrémenteur , soit le résultat FRMZBUS envoyé par l'intermédiaire du bus de résultat à partir de la logique (non représentée) qui exécute l'arrondissement et la normalisation pour la logique d'addition et de division. On se réfère maintenant à la Figure 2 qui est un schéma du générateur 114 du bit adhérent représenté à la Figure 1 FIMXBUS est le bus de source de multiplicande qui alimente l'encodeur 200 à zéros suiveurs et FIMYBUS est le bus de source du multiplicateur qui alimente l'encodeur 202 à zéros suiveurs, respectivement La sortie de l'encodeur 200 à zéros suiveurs et la sortie de l'encodeur 202 à zéros suiveurs sont entrées dans un sas 204. Le résultat de la multiplication qui s'effectue dans la logique de la Figure 1 peut être une valeur quelconque entre O et 4 Deux plages d'opérandes sont impliquées Lorsque l'opérande est compris entre 2 et 0, il existe un type de bit adhérent qui est utilisé pour calculer le résultat final Lorsque l'opérande est compris entre 2 et 4, il existe un autre type de bit adhérent qui est utilisé pour calculer le résultat final. Le microprocesseur Intel 80486 mémorise des nombres réels dans un format binaire à trois champs semblable à une notation exponentielle Les bits significatifs du nombre sont mémorisés dans le champ significatif Un champ d'exponentiel positionne la virgule binaire à l'intérieur des chiffres significatifs afin de déterminer la grandeur du nombre. Un champ de signe indique si le nombre est positif ou négatif Il existe trois types différents de précisions pour la virgule flottante: la précision unique, la précision double et la précision étendue. Dans le cas de la position unique représentée ci- dessous, les positions relatives du bit de faible poids L de la mantisse avant arrondissement, du bit rond R et des bits adhérents S sont représentées ci-dessous. bit de débor virgule dement binaire mantisse bits adhérents 1 1 1 * 1 | I IL|RISI l Le bit adhérent S est calculé en parallèle avec le reste du matériel La logique n'attend pas, comme représenté à la Figure 1, que le résultat final soit disponible alors que, dans les machines antérieures, le bit adhérent est calculé après le calcul du résultat, la sortie du multiplicateur 3:1 de la Figure 1. Le bit adhérent est engendré dans le multiplicateur à virgule flottante en regardant le compte de zéros suiveurs du multiplicande du multiplicateur Dans le schéma fonctionnel du générateur de bit adhérent représenté à la Figure 2, le multiplicateur 3:2, 208 ou 110, choisit la constante correcte à comparer la somme de compte de zéros suiveurs selon la précision choisie pour déterminer le bit adhérent. Il faut calculer deux bits adhérents pendant l'opération parallèle parce que le résultat peut être une valeur quelconque comprise entre O et 4 et l'on ne saura lequel est correct qu'après la fin du calcul de résultat de la multiplication Si le résultat est compris entre O et 2, la ligne de sortie FMWSFTKA est engendrée Lorsque le résultat est compris entre 2 et 4, la ligne de sortie FMWFSTKV est engendrée C'est seulement lorsque l'addition finale est exécutée que l'on sait quel bit adhérent est le bit correct à utiliser. 2689989 Dès lors que les résultats de l'addition finale sont connus, le bit adhérent correct peut être choisi. Le report de l'additionneur 122, le bit de débordement FMSOV, est utilisé pour choisir le bit adhérent en excitant le multiplexeur 2:1 220 Si le bit de débordement est 1, le bit FMWFSTKV est choisi Si le bit de débordement est zéro, le bit FMWSFTKA est choisi Le bit adhérent final FMWFSTK est ensuite pris à partir de la sortie du multiplexeur 2:1. On exposera d'abord le principe de l'opération, et on donnera ensuite un exemple pour faciliter la compréhension. Le nombre de zéros suiveurs, dans le produit, est exactement égal à la somme des nombres de zéros suiveurs des opérandes pour toute représentation dans laquelle la base est un nombre premier (par exemple, base deux). Les deux comptes de zéros suiveurs, du multiplicande et du multiplicateur, sont additionnés dans un additionneur 206 et sont comparés dans des comparateurs 121 et 214 à une constante basée sur la précision de commande Cette constante est déterminée à partir du nombre de bits situés à droite du bit rond R. Si le résultat de la comparaison est un, le bit adhérent est zéro Dans le cas contraire, le bit adhérent est un. L'exemple donné ici concerne le cas d'une précision unique Dans ce cas, Constante = somme des bits de zéros suiveurs + 3 (pour prendre en compte 3 bits additionnels de zéros suiveurs dans le multiplicateur) = 105 + 3 = 108 Si (somme à zéros suiveurs 2 constante), alors bit adhérent = O sinon il bit adhérent = 1 Il faut deux constantes différentes pour la même précision. (i) constantes pour O de bit adhérent. Le schéma logique du générateur de bit adhérent est représenté à la Figure 3. A l'étape 302, le compteur de zéros suiveurs 200 du multiplicateur et le compteur de zéros suiveurs 202 du multiplicateur sont entrés en sas 204 et sont additionnés dans l'additionneur 206 pour fournir une première somme: FMTZTC. A l'étape 304, un premier multiplexeur 3:1 210 choisit, en fonction de la précision choisie, la constante correcte à comparer à la somme des comptes de zéros suiveurs afin de déterminer le bit adhérent; et un deuxième multiplexeur 3:1 210 choisit, en fonction de la précision choisie, la constante correcte à comparer à la somme des comptes de zéros suiveurs afin de déterminer le bit adhérent. A l'étape 306, la première somme FMTZTC est comparée dans un comparateur 121 à une première constante FMTZCSTV. A l'étape 308, si la sortie de la première comparaison est un, alors à l'étape 310, un premier bit adhérent FMX 25 TKA de un est engendré; dans le cas contraire à l'étape 312 un premier bit adhérent FMX 25 TKA de zéro est engendré. A l'étape 314, la deuxième somme FMTZTC est comparée dans le deuxième comparateur 214 à une deuxième constante FMTZCSTA. A l'étape 316, si la sortie de la deuxième comparaison est un, alors à l'étape 318, un deuxième bit adhérent FMX 25 TKV de zéro est engendré;, et dans le cas contraire, à l'étape 320, un deuxième bit adhérent FMX 25 TKV de un est engendré. A l'étape 322, si le résultat non arrondi de l'addition est compris entre O et 2, alors à l'étape 324, le premier bit adhérent, la ligne de sortie FMWFSTKA est choisie alors que, à l'étape 326, si le résultat non arrondi de l'addition est compris entre 2 et 4, alors à l'étape 330, le deuxième bit adhérent, la ligne de sortie FMXFSTK, est choisie. Alors que l'invention a été représentée et décrite en particulier en se référant à des modes de réalisation préférés de celle- ci, l'homme de l'art comprendra que des modifications de forme et de détails peuvent être apportées à ce qui précède sans s'écarter du cadre de l'invention. Revendications 1 Un générateur de bit adhérent dans un multiplicateur à virgule flottante fonctionnant selon une précision choisie afin de multiplier des nombres à virgule flottante, comprenant un champ de mantisse et un champ d'exposant o les positions relatives du bit de faible poids de la mantisse avant arrondissement sont un bit rond (R) et des bits adhérents (S), caractérisé en ce qu'il comprend: un moyen additionneur ( 206) d'un compte de multiplicande à zéros suiveurs et d'un compte de multiplicateur à zéros suiveurs afin de produire un compte de somme (FMTZTC) de zéros suiveurs; un moyen de choix ( 210) d'une constante correcte, à comparer audit compte de somme (FMTZTC) de zéros suiveurs en fonction d'une précision choisie afin de déterminer un bit adhérent (S); et un premier moyen comparateur ( 212) pour comparer à une première constante (FMTZCSTV) basée sur ladite commande de précision, afin d'engendrer un premier bit adhérent (FMX 2STKA) dont la valeur est zéro à la condition que la sortie dudit comparateur ( 212) soit un et dont la valeur est un à la condition que la sortie dudit comparateur soit zéro; un deuxième moyen comparateur ( 214) pour comparer à une deuxième constante (FMTZCSTA) basée sur ladite commande de précision, afin d'engendrer un deuxième bit adhérent (FMX 2STKV) dont la valeur est zéro à la condition que la sortie dudit comparateur ( 214) est un et donc la valeur est un à condition que la sortie dudit comparateur ( 214) est zéro; ladite première et la deuxième constantes (FMTZCSTA et FMTZCSTV) étant déterminées à partir du nombre de bits placés à droite du bit rond (R); et un moyen ( 220) sensible audit bit de débordement (FMSOV) pour choisir comme bit adhérent, soit ledit premier bit adhérent (FMX 2STKA), soit ledit deuxième bit adhérent (FMX 25 TKV). 2 Procédé de génération d'un bit adhérent dans un multiplicateur à virgule flottante fonctionnant selon une précision choisie pour multiplier des nombres à virgule flottante comprenant un champ de mantisse et un champ d'exposant o les positions relatives du bit de moindre poids de la mantisse avant arrondissement sont un bit rond (R) et des bits adhérents (S) caractérisé en ce qu'il comprend les étapes consistant à: A additionner un compte de multiplicande à zéros suiveurs et un compte de multiplicateur à zéros suiveurs afin de fournir une première somme (FMTZTC); B choisir, dans un premier multiplexeur 3:1, une première constante(FMTZCSTV) à comparer à ladite somme (FMTZTC) de compte de zéros suiveurs en fonction de la précision choisie afin de déterminer un premier bit adhérent et, dans un deuxième multiplexeur 3:1, une deuxième constante (FMTZCSTA) à comparer avec ladite somme (FMTZTC) de compte de zéros suiveurs en fonction de la précision choisie afin de déterminer un deuxième bit adhérent; C comparer dans un premier comparateur la première somme (FMTZTC) à ladite première constante (FMTZCSTV); D engendrer un premier bit adhérent (FMX 25 TKA) de un si la sortie du premier comparateur est un et un premier bit adhérent (FMX 2STKA) de zéro dans le cas contraire; E comparer dans un deuxième comparateur ladite deuxième somme (FMTZTC) à une deuxième constante (FMTZCSTA); F engendrer un deuxième bit adhérent (FMX 25 TKV) de un si la sortie du deuxième comparateur est un, et un deuxième bit adhérent (FMX 2STKV) de zéro dans le cas contraire; G choisir ledit premier bit adhérent (FMX 25 TKA), à la ligne de sortie (FMWFSTKA) d'un sas, si un résultat non arrondi de l'addition est compris entre zéro et deux, et H choisir ledit deuxième bit adhérent (FMX 2STKV), à la ligne de sortie (FMWFSTKV) d'un autre sas, si un résultat non arrondi de l'addition est compris entre deux et quatre.