FR 2544105 A1 19841012 FR 8305600 A 19830406 MULTIPLIEUR DU TYPE EN CASCADE UTILISANT UN ENSEMBLE D'OPERATEURS ELEMENTAIRES La présente invention se rapporte aux multiplieurs du type en cascade utilisant un ensemble d'opérateurs élémentaires du même type. Chacun de ces opérateurs élémentaires permet d'effectuer très rapi- dement la multiplication d'un nombre binaire (multiplicande) par une petite partie d'un autre nombre binaire (multiplicateur) En les associant en cascade, selon la structure connue sous le nom anglo-saxon de "pipe- line", on obtient en sortie du dernier étage de cette structure le produit complet du multiplicande par le multiplicateur. Le problème de la multiplication en binaire est compliqué par l'usage quasi général de la représentation des nombres négatifs en complément à deux. Dans son ouvrage "Automatic Digital Calculators" (London, Butterworths Scientific Publications, 1953) Booth a décrit un algorithme qui permet de résoudre ce problème en procédant à une suite d'opérations élémentaires entre le multiplicande et chacun des bits successifs du multiplicateur, compte tenu de la valeur du bit précédent. Cet algorithme a depuis été généralisé pour pouvoir diviser le multiplicateur en groupes de bits et non plus en bits isolés Un tel groupement complique bien entendu les opérations, et ceci d'autant plus que le nombre de bits groupés est important Aussi dans la pratique on se contente de diviser le multiplicateur en groupes de deux bits. Un opérateur élémentaire permettant d'effectuer une multiplication 7 x 2 avec conservation du signe, a été décrit dans la demande de brevet NI 82 21 627 déposée par la demanderesse le 23 décembre 1982 et dont les éléments suivant sont repris pour la compréhension de l'invention. Selon l'algorithme de Booth, une multiplication partielle de rang j entre un multiplicande X et un groupe de deux bits Y 2 j+ 1 Y 2 j du multiplicateur, se fait en ajoutant au résultat intermédiaire précédent 1 j 1 l'un des cinq nombres 0, X, 2 X, -X, -2 X, et en décalant de deux bits vers la droite le résultat S* de cette opération pour obtenir un nouveau résultat intermédiaire 1 Le choix entre ces cinq nombres se fait selon la valeur des deux bits Y 2 j+l, Y 2 j, selon la table suivante: Y 2 j+l Y 2 j Y 2 j- O O O o O o I et du bit Y 2 j-1 de groupe précédent, Nombre a ajouter X X 2 X 2 X X X En traduisant cette table en fonctions logiques on obtient: Sj = Ijl A UA ( 4 + x) B) U (j 1 + 2 X) (B C) U (j 1 X) (B C) U 1 1 2 X) (B C" avec: A = (Y 2 j O Y 2 j-l) U (Y 2 j+ 1 Q Y 2 j) B = (Y 2 j Y 2 j_ 1) C = Y 2 j+I Dans ces expressions Q désigne l'opérateur OU-exclusif. L'opérateur élémentaire représenté sur la figure I permet de réaliser une telle multiplication partielle entre un nombre X comportant sept bits (dont le signe) et deux bits Y 2 j+ et Y 21 d'un nombre Y, soit une multiplication 7 x 2 avec conservation du signe. L'opérateur de la figure I comprend trois registres d'entrée 101, 102, 103 qui permettent de recevoir les données en entrée. Le registre 101 comprend sept cases qui permettent tout d'abord de mémoriser les bits de poids forts de Y non utilisés dans l'opérateur j ni dans ceux qui le précédent Les cases libérées par l'utilisation des bits de Y permettent de mémoriser les bits de poids faibles de la somme S, qui j 2544 1 05 n'interviennent plus dans les calculs partiels ultérieurs par suite du décalage à droite dans l'algorithme de Booth. Le registre est muni d'une sortie sur laquelle on trouve une recopie de l'entrée après le pas d'horloge H appliqué au registre par quatre dispositifs de retard 104 à 107 en série destinés à améliorer le comportement du circuit Pour simplifier, la figure représente le cas o l'on a en entrée, et donc en sortie, du registre les six bits de poids forts de Y. Le registre 102 comprend neuf cases qui permettent de mémoriser les neuf bits de poids forts du résultat intermédiaire l; l Celui-ci est obtenu par décalage de deux bits vers la droite de la somme S Jl en sortie de l'étage précédent et adjonction de deux bits de poids forts égaux au bit de poids fort de Sj l Les deux bits de poids faibles qui débordent-dans ce décalage sont rangés dans le registre 101 o ils remplacent Y 2 j et Y 2 j l qui arrivent dans l'opérateur par d'autres entrées Le registre 102 est aussi muni d'une sortie qui recopie son entrée sous la commande de H en sortie du dispositif à retard 104. Ces différents décalages sont obtenus par câblage entre les deux opérateurs mis en cascade pour former deux étages successifs d'un multiplieur complet. Le registre 103 comprend dix cases qui permettent de mémoriser les sept bits du nombre X, ainsi que trois bits supplémentaires Ces bits supplémentaires comprennent un bit de poids faible, dit de recoupe Les deux autres bits supplémentaires sont deux bits de poids forts qui recopient le bit de signe de X et permettent lors des opérations de garder ce signe En effet l'opération 2 X (ou -2 X) se traduit par un décalage d'un bit à gauche, et il est de plus nécessaire de prévoir le cas o l'addition des signes délivre une retenue et donc nécessite encore un autre bit à gauche. Ce registre 103 est également muni d'une sortie qui recopie son entrée sous la commande de H en sortie du dispositif à retard 105. Cette sortie du registre 103 est appliquée à un dispositif de calcul 108 suivi d'un multiplexeur 109 Ce dispositif de calcul effectue sur l'ensemble des dix bits les opérations X (transfert direct), K (complé- mentation bit à bit de X), 2 X (décalage d'un bit à gauche), et 2 X (complémentation suivie d'un décalage à gauche) Le multiplexeur 109 sélectionne le résultat de l'une de ces quatre opérations sous la commande de deux signaux binaires qui représentent respectivement Y 2 j+l et B Ces signaux sont obtenus d'une manière décrite plus loin Le multiplexeur est conçu pour ne sélectionner que les neuf bits de poids fort en éliminant ainsi le bit de recoupe qui a servi dans la multiplication par 2 et qui n'est plus utile ensuite. Le nombre en sortie du multiplexeur 109 est additionné à Ij 11 disponible en sortie du registre 102, dans un additionneur de neuf bits 110. Cet additionneur est muni d'une entrée et d'une sortie de retenue Pour l'usage de l'opérateur en multiplieur 7 x 2 on applique, par câblage externe, le bit Y 2 j+l sur l'entrée de retenue de l'additionneur En effet, comme on peut le voir dans le tableau ci-dessus définissant l'algorithme de Booth, l'addition de -X et -2 X est à faire seulement lorsque Y 2 j+l = 1 Comme on dispose de X et 2, en sortie du multiplexeur 109 dans ce cas, le fait de rajouter 1 par l'entrée de retenue donne bien -X et -2 X en complément à 2, qui est le code utilisé. La sortie de l'additionneur, ainsi que 1 I, sont appliqués à un multiplexeur 111 qui sélectionne l'un de ces deux signaux sous la commande du signal A, obtenu de la manière expliquée plus loirn, et délivre le signal Sj. Les deux bits Y 21-I et Y 2 j, en provenance de l'étage précédent, sont appliqués à une porte OU-exclusif 112 qui délivre le signal B défini plus haut Ce signal B est mémorisé dans une bascule maître-esclave 113 pour être appliqué au multiplexeur 109 Cette bascule est commandée par l'horloge H en sortie du dispositif à retard 107. Le bit Y 2 j+l en provenance de l'étage précédent est mémorisé dans une bascule maître-esclave 114 pour être appliqué au multiplexeur 109. Cette bascule est commandée par l'horloge I-H directement. Les deux bits Y 2 j et Y 2 j+l sont également appliqués à une porte OUexclusif 115 dont la sortie est connectée à -une porte OU 116 L'autre entrée de cette porte reçoit le signal B, et sa sortie délivre le signal A défini plus haut Ce signal A est mémorisé dans une bascule maître- esclave 117 pour être appliqué au multiplexeur 111 Cette bascule est commandée par l'horloge H en sortie du dispositif à retard 106. Les signaux X et Y 2 j+l, nécessaires pour l'étage suivant, sont disponibles en sortie du registre 103 et de la bascule 114, avec le retard d'un pas d'horloge qui correspond au chargement du registre et de la bascule Il en est de même pour les signaux Y et y (contenus dans Y) et SY Pour simplifier la figure on a représenté X sur neuf bits, ce qui inclut les deux bits de signe SX Par contre le bit de recoupe R n'est pas disponible, parce qu'il n'y a pas d'utilité à le transmettre. Un tel opérateur peut être intégré dans un circuit intégré prédiffusé du commerce, contenu dans un seul boîtier. En cascadant quatre de ces circuits intégrés on obtient, avec seulement quatre boîtiers, un multiplieur 7 x 8 avec conservation du signe sans aucun circuit supplémentaire Le résultat sera obtenu avec un retard de quatre coups d'horloge, mais la vitesse de sortie de ces résultats sera égale à celle d'un multiplieur parallèle. Une multiplication 7 x 8 est toutefois relativement limitée, et il est souhaitable de pouvoir effectuer des calculs plus importants, tout en gardant la vitesse de sortie et en ayant une structure la plus modulaire possible. Pour cela, l'invention propose un multiplieur du type en cascade utilisant un ensemble d'opérateurs élémentaires, chaque opérateur élé- mentaire ayant un premier registre Y pour recevoir et délivrer un premier signal d'au moins deux bits et au plus m bit (m Y du quatrième opérateur, que les autres bits de ce signal de multi- plication ainsi que le signal de multiplication du deuxième opérateur sont- transmis aux registres RI du deuxième étage avec décalage à droite et double répétition du bit de poids fort, que les (m-4) sorties de poids fort du registre Y du premier opérateur et les sorties du registre Y du deuxième opérateur sont reliées aux entrées-du registre Y du troisième opérateur et aux (m-4) entrées de poids faible du registre Y du quatrième opérateur, et que la sortie de retenue du troisième opérateur est reliée à l'entrée de retenue du quatrième opérateur. D'autres particularités et avantages de l'invention apparaîtront clairement dans la description suivante présentée à titre d'exemple non limitatif et faite en regard des figures annexées qui représentent: la figure 1, le schéma d'un opérateur connu de la demande de brevet 82 21 627; la figure 2, un premier étage d'un multiplieur en cascade; la figure 3, l'interconnexion entre un premier et un deuxième étage d'un multiplieur en cascade. Pour faciliter la description, on a représenté sur la figure 2 le premier étage d'un multiplieur 16 x 16 entre deux nombres entiers signés. Ce multiplieur réalise donc une multiplication 16 x 2 entre un nombre X comprenant 16 bits X O à X 15, et les deux premiers bits Y O et Y 1 d'un nombre Y comprenant 16 bits Y 0 à Y 15. Cet étage comprend deux opérateurs identiques numérotés 0 et 1. Le schéma interne de ces opérateurs est celui de la figure 1 et pour faciliter la compréhension-du dessin on a représenté schématiquement les circuits en entrée et en sortie en séparant en deux parties certains d'entre eux (X, Y, 10). Ces deux opérateurs fonctionnent en parallèle pour multiplier chacun une moitié du multiplicande X par les deux bits de poids faible du multiplicateur Y. Pour cela l'opérateur 0, qui travaille sur les poids faibles du multiplicande, reçoit sur son registre d'entrée X les neuf bits de poids faible X 0 à X 8 appliqués sur les entrées du registre X autres que celle de recoupe L'entrée R du bit de recoupe est maintenue à zéro pour avoir en cas de décalage à gauche un bit de poids faible à zéro. L'opérateur O reçoit également sur son registre d'entrée RI les neuf bits de poids faible I 1 à 18 du résultat intermédiaire de l'étage précédent, qui dans ce cas sont à zéro puisque nous décrivons le premier étage. Il reçoit aussi sur son registre d'entrée Y les sept bits de poids faible Y 2 à Y 8 qui ne sont pas utilisés pour la multiplication, et sont simplement transmis sur la sortie de ce registre pour être appliqués à l'étage suivant. Les deux premiers bits de poids faible Y O et Y 1 du multiplicateur (effectivement utilisés dans cet étage) sont appliqués aux divers circuits de décodage détaillés sur la figure 1 et rassemblés sur la figure 2 dans un circuit d'entrée appelé D Y est également appliqué à l'entrée de retenue de l'additionneur de l'opérateur 0. Le circuit D devrait recevoir également un bit Y 1 Comme celui-ci n'existe pas, on lui substitue un bit Q qui est maintenu à zéro. En sortie de Popérateur O on trouve, outre Y 2 à Y 8 déjà vus, les neuf bits de poids faible X O à X 8 en sortie du registre X, les neuf bits de poids faible S O à So 8 du résultat de la multiplication 16 x 2 en sortie du multiplexeur 111 appelé S sur la figure, et le bit Y 1 en sortie de la bascule 114 appelée Q sur la figure puisque ce bit va jouer pour l'étage suivant le rôle du bit Q. On a également en sortie de l'opérateur O la retenue de l'addi- tionneur de celui-ci. L'opérateur 1, qui travaille sur les poids forts du multiplicande, reçoit sur son registre d'entrée X les huit bits de poids fort X 8 à X 15 X 9 à X 15 sont appliqués sur les sept entrées de poids faible et X 15, qui représente le signe, est recopié sur les deux entrées de poids fort pour les raisons données dans la description de l'opérateur X 8 est appliqué à Pentrée du bit de recoupe, ce qui explicite plus particulièrement lintérêt de ce bit En effet si l'on effectue un décalage à gauche (représentant une multiplication par 2), il faut disposer du bit précédent à droite puisque ce décalage s'opère sur la totalité du nombre, lequel est présent en deux morceaux dans les deux opérateurs. L'opérateur 1 reçoit également sur son registre d'entrée RI les neuf bits de poids fort Ii à 117 (dans ce cas à zéro), et sur son registre d'entrée Y les sept bits de poids fort Y 9 à Y 15, qui sont transmis sur la sortie de ce registre. Pour effectuer la multiplication, les bits Y 0 et Y 1, ainsi que Q, sont appliqués à l'opérateur 1 de la même manière qu'à l'opérateur 0, sauf pour la retenue entrante qui reçoit le bit de retenue sortante de l'opérateur 0, ce qui assure la continuité entre les deux morceaux de la multiplication. En sortie de cet opérateur 1 on trouve, outre Y 9 à Y 15 déjà vus, les sept bits de poids fort X à X et les deux bits de signe supplémentaires, les neuf bits de poids fort 51 à 518 du résultat de la multiplication 16 x 2, et le bit Y 1 La sortie de retenue est disponible, mais n'est pas utile ici puisqu'elle représente le signe du résultat, lequel est déjà contenu au moins une fois dans le nombre en sortie de S. Pour effectuer une multiplication avec un multiplicateur de plus de deux bits, il faut mettre en cascade plusieurs étages identiques à celui de la figure 2, avec un câblage inter-étage adéquat pour obtenir notamment les décalages nécessaires et ranger les résultats qui débordent. On a représenté sur la figure 3 la mise en cascade d'un deuxième étage comprenant deux opérateurs 2 et 3, avec le premier étage de la figure 1, représenté partiellement, pour pouvoir effectuer une multi- plication 16 x 4. Ce deuxième étage utilise donc les trois bits Y 1 à Y 3 du multi- plicateur, qui sont appliqués sur les circuits D des deux opérateurs, avec î, Y 3 appliqué en plus à l'entrée de retenue de l'opérateur 2 Y 2 et Y 3 sont pris en sortie du registre Y de l'opérateur 0, et dans la version représentée Y 1 en sortie respectivement des deux circuits Q des opérateurs O et 1. Des variantes éventuelles consisteraient à relier la sortie de l'un de ces circuits Q aux deux entrées correspondantes des circuits D. Les sorties des registres X du premier étage sont directement reliées aux entrées des registres X du deuxième étage, puisque le multiplicande est transmis sans changement le long des étages avec simplement le retard dû à chaque étage De même l'entrée R de Popérateur 2 est maintenue à zéro. Dans une multiplication à plusieurs chiffres (plusieurs bits pour un nombre binaire), le résultat intermédiaire correspondant à la multi- plication par un chiffre du multiplicateur doit être décalé d'un chiffre vers la droite avant d'être additionné au résultat intermédiaire suivant. Donc le nombre formé des bits 500 à S 8 doit être décalé de deux bits vers la droite (puisque le premier étage a utilisé deux bits du mult- plicateur) pour être transmis au deuxième étage. Pour cela on stocke les deux bits So et S t qui forment les deux bits de poids faible M O et M 1 du résultat final, dans les deux étages de poids fort du registre Y de l'opérateur 3, en réunissant les entrées et sorties correspondantes Ces deux étages sont libérés en décalant le multiplicande de deux bits vers la droite, en connectant d'abord les sorties Yl à Y 15 de l'opérateur 1 aux cinq entrées de poids faible du registre Y de l'opérateur 3, puis en connectant les sorties Y 10 et Y 9 de cet opérateur 1, et Y 8 à Y 4 de l'opérateur 0, aux entrées du registre Y de l'opérateur 2 On a vu plus haut que Y 3 et Y 2 sont utilisés dans les circuits D pour le calcul, et n'ont donc plus à être transmis aux registres Y du deuxième étage. On a donc Y 4 à Y 10 disponibles en sortie du registre Y de l'opérateur 2, et Yil à Y 15 avec M 0 et M 1 en sortie du registre Y de l Popérateur 3 Par ailleurs Y 3 (nécessaire pour le troisième étage) est disponible en sortie des deux circuits Q du deuxième étage, comme on l'a vu. Les bits 502 à SO deviennent donc les bits de résultat intermédiaire à 16, et les bits S à Sl les bits intermédiaires 17 à 11 a I O à I 8 sont appliqués au registre d'entrée RI de Popérateur 2, et 19 à I 15 au registre d'entrée RI de l'operateur 3 Comme 19 à 15 ne représentent que sept bits, 115 est également recopié sur les deux entrées de poids fort de ce dernier registre. Le résultat de la multiplication 16 x 4 effectuée par ces deux étages est composé des deux bits de poids faible M et M 1 déjà vus, et des 18 bits de poids fort 520 à 528 et S$ O a 53 disponibles en sortie des registres S des deux opérateurs du second étage. Pour obtenir une multiplication complète de deux nombres de 16 bits entre eux, il faut six étages supplémentaires par rapport aux deux déj décrits. Entre deux étages successifs j et j+ 1 le nombre X est transmis sans changement, comme décrit entre les deux premiers. Les deux bits Y 2 j+ 3 et Y 2 j+ 2 nécessaires pour la multiplication dans l'étage j+l, sont pris en sortie du registre Y de l'opérateur j de poids faible, et l'ensemble des bits restants de Y, ainsi que les bits de résultat M déjà obtenus, sont décalés à droite de deux pas pour être appliqués en entrée des registres Y de l'étage j+l Ceci libère à gauche la place pour les deux nouveaux bits de poids faible du résultat en sortie des circuits S de l'étage j. il Les seize bits restants en sortie dés circuits S de l'étage j sont décalés à droite de deux pas pour être appliqués aux registres RI de l'étage j+l, et celui de poids fort est appliqué également aux deux entrées de RI ainsi libérées. Il est remarquable que cette règle de câblage, identique entre tous les étages, conduise à remplacer pas à pas le nombre Y par le nombre M représentant les poids faibles du résultat final de la-multiplication 16 x 16. En sortie du dernier étage on aura donc le résultat de la multiplication, avec les 14 bits de poids faible dans les deux registres Y du dernier étage, et les 18 bits de poids fort dans les deux registres S de celui-ci, soit donc 32 bits, nombre maximum pour un produit 16 x 16. Il est aisé en effectuant pas à pas à la main les calculs corres- pondant aux huit étages successifs de montrer que le résultat est toujours correct, en particulier quant à la conservation du signe pour les produits extrêmes concernant les plus grands nombres positifs et négatifs. 2544 1 05 REVENDICATIONS 1 Multiplieur du type en cascade utilisant un ensemble d'opérateurs élémentaires, chaque opérateur élémentaire ayant un premier registre Y ( 101) pour recevoir et délivrer un premier signal d'au moins deux bits, un deuxième registre RI ( 102) pour recevoir un signal intermédiaire de N bits, un troisième registre X ( 103) pour recevoir un signal multiplicande de n bits et un bit de recoupe et délivrer ce signal multiplicande, des circuits de décodage D et Q ( 112-117) pour recevoir un signal multiplicateur de trois bits et délivrer le bit de poids fort de ce signal, un additionneur ( 110) muni d'une entrée de retenue et d'une sortie de retenue, et un circuit S ( 111) pour délivrer un signal de multiplication de neuf bits obtenu selon l'algorithme de Booth entre le multiplicande, le signal intermédiaire et le multiplicateur, caractérisé en ce que, pour effectuer au moins une multiplication entre un multiplicande de 2-(n-l) bits et un multiplicateur de quatre bits, il comprend un premier étage comportant un premier opérateur ( 0) et un deuxième opérateur ( 1) et un deuxième étage com- portant un troisième opérateur ( 2) et un quatrième opérateur ( 3), que le bit de recoupe et le bit de poids faible du signal multiplicateur du premier opérateur sont à zéro, que les deux autres bits de ce signal multiplicateur sont les deux bits de poids faible du multiplicateur, que le bit de poids le plus fort de ceux-ci est appliqué à Pentrée de retenue du premier opérateur, que le signal multiplicateur du deuxième opérateur 'est le même que celui du premier, que le registre X du premier opérateur reçoit les N bits de poids faible du multiplicande, que le bit de recoupe du deuxième opérateur recopie le bit de poids fort reçu par ce registre X, que le registre X du deuxième opérateur reçoit les autres bits du multiplicande dont celui de poids fort est recopié deux fois, que le signal intermédiaire du premier étage est égal à zéro, que le registre Y du premier opérateur reçoit les deux bits de poids fort du multiplicateur, que la sortie de retenue du premier opérateur est reliée à l'entrée de retenue du deuxième opérateur, que les circuits D du troisième et du quatrième opérateur reçoivent du registre Y du premier opérateur les deux bits de poids fort du multiplicateur et d'un circuit Q du premier étage de poids 2544 105 faible précédant ces deux bits, que l'entrée de retenue du troisième opérateur reçoit le bit de poids fort du multiplicateur, que le multi- plicande est transmis directement entre les sorties des circuits X des premier et deuxième opérateurs et les entrées des circuits X des troisième et quatrième opérateurs, que le bit de recoupe du troisième opérateur est maintenu à zéro et celui du quatrième opérateur recopie le bit de poids fort du registre X du troisième opérateur, que les deux bits de poids faible du signal de multiplication du premier opérateur sont transmis aux deux entrées de poids fort du registre Y du quatrième opérateur, que les autres bits de ce signal de multiplication ainsi que le signal de multiplication du deuxième opérateur sont transmis aux registres RI du deuxième étage avec décalage à droite et double répétition du bit de poids fort, que les (m-4) sorties de poids fort du registre Y du premier opérateur et les sorties du registre Y du deuxième opérateur sont reliées aux entrées du registre Y du troisième opérateur et aux (m-4) entrées de poids faible du registre Y du quatrième opérateur, et que la sortie de retenue du troisième opérateur est reliée à l'entrée de retenue du quatrième opérateur. 2 Multiplieur selon la revendication 1, pour effectuer une multipli- cation entre un multiplicande de 2 (n-1) bits et un multiplicateur de 16 bits, caractérisé en ce qu'il comprend en outre six étages supplémentaires ayant chacun deux opérateurs, que les registres Y peuvent mémoriser au moins sept bits, et que les liaisons entre ces étages sont identiques à celles entre les deux premiers étages; le résultat de la multiplication étant donné sur 14 bits de poids faibles dans les registres Y du dernier étage, et sur de 2 N bits de poids fort dans les circuits S de cet étage. 3 Multiplieur selon l'une quelconque des revendications 1 et 2, caractérisé en ce que N = 9.