FR2545957A1 - High-throughput binary multiplier - Google Patents
High-throughput binary multiplier Download PDFInfo
- Publication number
- FR2545957A1 FR2545957A1 FR8307793A FR8307793A FR2545957A1 FR 2545957 A1 FR2545957 A1 FR 2545957A1 FR 8307793 A FR8307793 A FR 8307793A FR 8307793 A FR8307793 A FR 8307793A FR 2545957 A1 FR2545957 A1 FR 2545957A1
- Authority
- FR
- France
- Prior art keywords
- bits
- multiplier
- group
- latches
- multiplicand
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/533—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
- G06F7/5334—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
- G06F7/5336—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
- G06F7/5338—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/386—Special constructional features
- G06F2207/3884—Pipelining
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
Description
TÇLTIPLIEUR BINAIRE A DEBIT ELEVE
La présente invention concerne les multiplieurs binaires.HIGH RATE BINARY TICKER
The present invention relates to bit multipliers.
Le principe de la multiplication de nombres binaires est classique : le multiplicande est multiplie par le chiffre de poids le plus faible du multiplicateur, puis par le chiffre de poids im- mediatement superieur, et ainsi de suite jusqu'au poids le plus fort ; il en résulte-à chaque fois un produit partiel, et les dif férents produits partiels sont additionnes avec un décalage lateral d'un chiffre vers la gauche entreqehaque produit partiel et le suivant. La somme de tous les produits partiels progressivement décalés, constitue le résultat de la multiplication. The principle of the multiplication of binary numbers is classical: the multiplicand is multiplied by the lowest weight digit of the multiplier, then by the immediately higher weight figure, and so on up to the strongest weight; this results in a partial product each time, and the different partial products are added with a lateral shift of one digit to the left between each partial product and the next one. The sum of all partial products gradually shifted, is the result of the multiplication.
On cherche de plus en plus à trouver des solutions pour accélérer 11 obtention de ce resultat alors que le nombre d'operations erementaires à effectuer est d'autant plus long que le nomr bre de bits du multiplicande et du multiplicateur est élevé (16 bits pour chacun constitue actuellement un chiffre courant pour des circuits avancés). More and more attempts are being made to find solutions to accelerate obtaining this result while the number of operations to be performed is longer as the number of bits of the multiplicand and the multiplier is high (16 bits per second). each is currently a current figure for advanced circuits).
De nombreuses solutions ont été envisage os jusqu'a maintenant, pour augmenter la vitesse de travail, soit en réduisant le temps d'addition des produits partiels, soit on réduisant le nombre de ces produits partiels. Numerous solutions have been envisaged so far, to increase the working speed, either by reducing the addition time of the partial products, or by reducing the number of these partial products.
Le temps d'addition peut être rouit graco à l'utilisation d'additionneurs perfectionnés tels que :
- des additionneurs à sauvegarde de retenue où les retenues des additions élémentaires des chiffres d'un nombre ne sont pas propagées d'un chiffre au suivant sais sont conservées pour être additionne os globalement ;
- des additionneurs à retenue anticipée, dans lesquels on prévoit la valeur de la retenue en fonction des entrées au lieu d'attendre sa propagation.The addition time can be rouillo graco with the use of advanced adders such as:
- Backup save adders where the holdings of the elementary additions of the digits of a number are not propagated from one digit to the next know are retained to be added together;
- Advance hold adders, in which one predicts the value of the restraint according to the entries instead of waiting for its propagation.
Le nombre de produits partiels à additionner peut, quant à lui, être réduit grâce à un décodage approprie des bits du mul tiplicateur : l'algorithme de Booth et des variantes de cet algorithme permettent de ne générer que n/2 produits partiels au lieu de n pour un multiplicateur a n chiffres, chacun de ces produits partiels ayant comme valeurs possibles non pas simplement O ou X (X étant le multiplicande) mais 0, Xç -X, 2X et éventuellement -2X. The number of partial products to be added can, for its part, be reduced by appropriate decoding of the multiplier bits: Booth's algorithm and variants of this algorithm make it possible to generate only n / 2 partial products instead of n for a number multiplier, each of these partial products having as possible values not simply O or X (X being the multiplicand) but 0, Xc -X, 2X and possibly -2X.
La présente invention propose une solution différente qui n'exclut d'ailleurs pas l'utilisation des solutions décrites ci-dessus, pour accélérer liobtentlon du résultat de la multiplication lorsqu'on a besoin d'effectuer des multiplications successives avec un grand débit. The present invention proposes a different solution which does not exclude the use of the solutions described above, to accelerate the attainment of the result of the multiplication when it is necessary to carry out successive multiplications with a large flow rate.
Cette nouvelle solution stinspire de l'idée de traite ment numérique en pipeline : si le traitement à faire subir à un nombre consiste à le faire passer dans des opérateurs connectes on cascade les s derrière les autres et non rebouclés les uns sur les autres, il est possible d'introduire des nombres successifs à traiter à l'ontree, à un débit plus rapide que la vitesse du traitement global d'un nombre : on n'attend pas la fin du traitement d'un nombre pour introduire de nouveaux nombres à traiter.Le débit des résultats à la sortie peut otre beaucoup plus rapide que si on introduisait un nombre à la fois en attendant la fin du traitement pour introduire le nombre suivant. This new solution comes from the idea of digital processing in pipeline: if the treatment to be applied to a number is to pass it through connected operators we cascade the s behind the others and not looped back on each other, he It is possible to introduce successive numbers to be treated at the ontree, at a rate faster than the speed of the overall processing of a number: we do not wait for the end of the processing of a number to introduce new numbers to The flow of the output results can be much faster than if one number was added at a time until the end of the treatment to introduce the next number.
Une telle solution suppose
- que les nombres ne repassent pas plusieurs fois dans le même opérateur, ou, s'ils y repassent, que les passages successifs s'effectuent et se terminent tous avant l'arrivée du nombre suivant dans cet opérateur
- et que des variables modifiant le traitement ne soient pas introduites alors que plusieurs nombres sont en cours de traitement, car alors on ne saurait pas exactement à partir de quel moment les nombres traites prennent en compte la modification.Such a solution presupposes
- that the numbers do not go back several times in the same operator, or, if they go back there, that the successive passages are carried out and all finish before the arrival of the following number in this operator
and that variables modifying the processing are not introduced while several numbers are being processed, because then it would not be exactly from when the numbers processed take into account the modification.
Dans le cas d'un multiplieur numérique, la structure gé nérale se présente sous forme de lignes successives d'additionneurs, chaque ligne recevant comme entrées à additionner notamment les sorties de la ligne précédente ; c'est donc d'une certaine ma- nière une structure en cascade et, si des multiplications succes sives nombreuses doivent être effectuées toujours avec le même multiplicateur Y, il peut être intéressant de faire fonctionner le multiplieur avec une structure en pipeline : un premier multiplicande Xl est introduit ; il subit une multiplication par les bits de poids le plus faible du multiplicateur ; il en résulte des premiers produits partiels qui sont additionnés entre eux dans une première ligne d'additionneurs ; puis, le multiplicande est multiplié par des bits de poids un peu plus elovo et il en résulte d'autres produits partiels additionnés au résultat de l'addition précédente dans une autre ligne d'additionneur ; pendant ce-temps, on peut, à condition de garder en mémoire la valeur du multiplicande X1, introduire un autre multiplicande X2 qui peut déjà subir une multiplication par les bits de poids faible du multiplicateur
Y et une addition dans la première ligne d'additionneurs, car celle-ci s'est libérée à la fin de son opération sur X1.In the case of a digital multiplier, the general structure is in the form of successive rows of adders, each line receiving as inputs to add in particular the outputs of the previous line; it is thus in some way a cascading structure and, if many successive multiplications must always be made with the same multiplier Y, it may be interesting to operate the multiplier with a pipeline structure: a first one. multiplicand X1 is introduced; it is multiplied by the least significant bits of the multiplier; this results in first partial products which are added together in a first line of adders; then, the multiplicand is multiplied by bits of weight a little more elovo and it results in other partial products added to the result of the previous addition in another adder line; during this time, it is possible, provided that the value of the multiplicand X1 is kept in memory, to introduce another multiplicand X2 which can already be multiplied by the low-order bits of the multiplier.
Y and an addition in the first row of adders, because it was released at the end of its operation on X1.
Cependant, si le multiplicateur Y doit changer après-une une série de multiplications, il faut interrompre l'introduction régulière de multiplicandes X et terminer toutes les multiplications sur les multiplicandes deji introduits avant de modifier Y et d'introduire à nouveau un premier multiplicande puis un deux#e- me, etc. Si on ne le faisait pas, le résultat de la multiplication n'aurait plus aucun sens, un multiplicande X pouvant être multiplié par un nombre fictif qui serait compose des premiers bits d'un multiplicateur Y1 et des derniers bits d'autres multiplicateurs Y2, Y3, etc.. However, if the multiplier Y must change after a series of multiplications, the regular introduction of multiplicands X must be interrupted and all the multiplications on the introduced multipliers must be terminated before modifying Y and introducing a first multiplicand again. a second, and so on. If it were not done, the result of the multiplication would be meaningless, a multiplicand X could be multiplied by a notional number which would be composed of the first bits of a multiplier Y1 and the last bits of other multipliers Y2, Y3, etc.
Il ne s'agit donc pas alors d'une veritable structure en pipeline car la regularito du déroulement des opérations doit ttre interrompue à chaque modification du multiplicateur. Si X et Y doivent varier aussi souvent l'un que l'autre, le fonctionnement en pipeline dans ces conditions n'a évidemment plus aucun intérêt. It is not therefore a real pipeline structure because the regularity of the workflow must be interrupted each time the multiplier is changed. If X and Y are to vary as often as they are, pipeline operation under these conditions is obviously no longer of interest.
La présente invention propose une nouvelle structure de multiplieur capable de fonctionner effectivement en pipeline même lorsque le multiplicateur varie et en particulier lorsqu'il peut varier aussi souvent que le multiplicande. The present invention provides a novel multiplier structure capable of effectively operating in pipeline even when the multiplier varies and in particular when it can vary as often as the multiplicand.
Le multiplieur comprend un étage d'entrée de bits de multiplicande (X), compose de bascules de verrouillage des bits du multiplicande, ces bascules étant actionnées par une horloge générale, un étage d'entrée de bits du multiplicateur (Y), composé de bascules de verrouillage des bits du multiplicateur, actionnées par la même horloge générale, et des moyens de formation de produits partiels et d'addition entre eux de ces produits partiels, ces moyens recevant d'une part les bits du multiplicande, et d'autre part les bits du multiplicateur ; il est prévu selon l'invention des bascules de verrouillage supplémentaires, en cascade en aval des bascules d'entrée de bit du. multiplicateur, actionnées par l'horloge générale, le nombre de bascules en cascade pour chaque bit allant en croissant par paliers, à mesure que le rang des bits du multiplicateur augmente ; il est prévu aussi plusieurs bascules de verrouillage en cascade naval de chaque entrée de bit du multiplicande, ces bascules etant-encore actionnées par l'horloge générale ; les moyens de formation et d'addition de produits partiels sont agencés pour former un produit partiel de rang déterminé à partir des sorties de n bascules en cascade en aval des entrées du multiplicande et de n bascules en cascade en aval des entrées du multiplicateur, n croissant par paliers avec le rang du produit partiel i former. The multiplier comprises a multiplicand bit input stage (X), composed of multiplicand bit lock latches, these latches being actuated by a general clock, a bit input stage of the multiplier (Y), composed of multiplier bit latches, actuated by the same general clock, and means for forming partial products and adding together these partial products, these means receiving on the one hand the bits of the multiplicand, and on the other hand share the bits of the multiplier; additional latching latches are provided according to the invention in cascade downstream of the bit input latches of the. multiplier, actuated by the general clock, the number of cascaded flip-flops for each incrementally increasing bit as the rank of the multiplier bits increases; there are also provided several naval cascade locking latches of each bit input of the multiplicand, these flip-flops being again actuated by the general clock; the formation and partial product addition means are arranged to form a partial product of predetermined rank from the outputs of n flip-flops in cascade downstream of the inputs of the multiplicand and n flip-flops in cascade downstream of the inputs of the multiplier, n growing in stages with the rank of the partial product i form.
La structure la plus habituelle d'un multiplieur binaire comprend, en sortie de l'otage de bascules de verrouillage des bits du multiplicateur, un étage de décodeurs des bits du multiplicateur, et, de plus, les moyens de formation et d'addition de produits partiels sont agencés en réseau de plusieurs lignes d'additionneurs élémentaires et de plusieurs lignes d'aiguillages élémentaires, chaque additionneur recevant des sorties d'aiguillages et des sorties d'autres additionneurs de lignes précédentesj les aiguillages recevant comme -signaux à aiguiller des bits du multiplicande, et comme signaux de commande d'aiguillage des signaux issus des décodeurs ; dans ces conditions, les décodeurs sont répartis en groupes correspondant également à une répartition en groupes de lignes d'additionneurs et d'aiguillages, chaque groupe correspondant à un ou plusieurs décodeurs, aux aiguillages commandés par ces décodeurs et aux additionneurs recevant les sorties de ces aiguillages, le premier groupe correspondant aux décodeurs des bits de poids le plus faible du multiplicateur, le second groupe à des bits de rang immédiatement supérieur, etc., jusqu'au dernier groupe correspondant aux poids les plus forts ; les entrées de signaux à aiguiller sur les aiguillages du noème groupe reçoivent des signaux correspondant à ceux qui sont reçus sur les entrées correspondantes des aiguillages du (n - 1)ième groupe, mais chacun à travers une bascule de verrouillage actionnée par l'horloge gé normale ; les entrées d'additionneurs du nième groupe, recevant des signaux issus d'additionneurs du (n - 1)ième groupe, reçoivent chacun de ces signaux à travers une bascule do verrouillage respective actionnée par l'horloge générale p les entrées de commande d'aiguillage du nièce groupe reçoivent les sorties des décodeurs du nieme groupe, chacune i travers une se rie de bascules de ver rouillage en cascade, le nombre de ces bascules en se rie croissant d'une unité quand on passe d'un groupe au suivant
D'autres caractéristiques et avantages de l'invention apparaitront à la lecture de la description détaillée qui suit et qui est faite en référence aux dessins annexes dans lesquels
- la figure 1 représente une structure schématique de multiplieurs sans le perfectionnement selon l'invention
- la figure 2 représente une structure de multiplieur avec le perfectionnement selon l'invention.The most usual structure of a binary multiplier comprises, at the output of the host of multiplier bit locks, a decoder stage of the multiplier bits, and, in addition, the multiplier bit and formation means. partial products are arranged in a network of several lines of elementary adders and of several elementary switching lines, each adder receiving switching outputs and outputs of other adders of preceding lines, the switches receiving as signals to switch bits multiplicand, and as control signals for switching signals from the decoders; under these conditions, the decoders are divided into groups that also correspond to a distribution in groups of adders and switches, each group corresponding to one or more decoders, to the switches controlled by these decoders and to the adders receiving the outputs of these decoders. switches, the first group corresponding to the decoders of the least significant bits of the multiplier, the second group to bits of the next highest rank, etc., to the last group corresponding to the highest weights; the signal inputs to be switched on the switches of the nth group receive signals corresponding to those received on the corresponding inputs of the switches of the (n - 1) th group, but each through a latching latch actuated by the clock normal; the nth group add-on inputs, receiving signals from the (n-1) th group adders, receive each of these signals through a respective latch latch actuated by the general clock p the control inputs of switching of the niece group receive the outputs of the decoders of the nth group, each through a series of cascading flip-flops, the number of these flip-flops increases by one unit when we go from one group to the next
Other features and advantages of the invention will appear on reading the detailed description which follows and which is made with reference to the accompanying drawings in which
FIG. 1 represents a schematic structure of multipliers without the improvement according to the invention
FIG. 2 represents a multiplier structure with the improvement according to the invention.
La structure de multiplieur à 16 bits qui est schémati- quement représentée à la figure 1 repose sur un algorithme mottant en Jeu quatre produits partiels 0, X, -X, 2X, X 2X,étant le multiplicande à 16 chiffres x0 à x15. The 16-bit multiplier structure which is schematically represented in FIG. 1 is based on an algorithm operating in four partial products 0, X, -X, 2X, X 2X, being the 16-digit multiplicand x0 to x15.
Cet algorithme consiste à examiner deux à deux les bits yO à y15 du multiplicateur (sauf yQ et y15) et à engendrer pour chaque groupe de deux bits consécutifs un produit partiel qui peut être 0, X, -X, ou 2X. This algorithm consists of examining in pairs the y0 to y15 of the multiplier (except y0 and y15) and to generate for each group of two consecutive bits a partial product which can be 0, X, -X, or 2X.
Le décodage, qui détermine, pour un groupe de deux bits, lequel de ces produits partiels est à obtenir, tient compte non seulement de la valeur des deux bits, mais aussi d'une indications analogue à une retenue d'addition, issue du décodage du groupe de deux bits immédiatement précédent. The decoding, which determines, for a group of two bits, which of these partial products is to be obtained, takes into account not only the value of the two bits, but also an indication similar to an addition hold, resulting from the decoding. of the two-bit group immediately preceding.
Plus précisément, si un groupe de deux bits a les va leurs suivantes 00, 01, 10, 11, on voit que les produits partiels à engendrer sont respectivement 09 X, 2X, 3X ; en fait, on fera 0,
X, 2X et (-X + 4X), ce dernier terme se décomposant en -X pour le produit partiel considéré, et 4X qui est équivalent à +X sur le produit partiel de rang immédiatement supérieur (correspondant au groupe de deux bits de rang immédiatement supérieur). On engendre donc, dans ce decodage de deux bits un choix entre quatre produits partiels 0, X, 2X, -X et une retenue 0 ou +X sur le do codage de rang supérieur.More precisely, if a group of two bits has the following values 00, 01, 10, 11, it can be seen that the partial products to be generated are respectively 09 X, 2X, 3X; in fact, we will do 0,
X, 2X and (-X + 4X), the latter term decomposing in -X for the partial product under consideration, and 4X which is equivalent to + X on the partial product of rank immediately higher (corresponding to the group of two bits of rank immediately higher). Thus, in this two-bit decoding, there is a choice between four partial products 0, X, 2X, -X and a retaining 0 or + X on the higher rank encoding.
S'il y a retenue X, le décodage de rang supérieur don nera, pour les deux bits correspondants les produits partiels suivants : X+0, X+X, X+2X, X+3X, soit X, 2X, 3X, 4X selon que les bits ont les valeurs 00, 01, 10, 11.Là encore, 3X peut s'écrire -X, +4X ; pour les deux derniers cas, on remplace 4X par X sur le produit partiel de rang supérieur 9 on engendre donc encore une retenue X, ce qui signifie qu'il y a propagation possible de la retenue d'un groupe de bits au suivant Les produits partiels sus ceptibles d'etre réalisés en présence d'une retenue venant du rang inférieur seront donc X, 2x, -X ou 0 avec production d'une nouvelle retenue pour les deux derniers cas. If X is retained, the higher order decoding will give, for the two corresponding bits, the following partial products: X + 0, X + X, X + 2X, X + 3X, ie X, 2X, 3X, 4X depending on whether the bits have the values 00, 01, 10, 11. Again, 3X can be written as -X, + 4X; for the last two cases, we replace 4X by X on the partial product of higher rank 9 so we still generate a restraint X, which means that there is possible spread of the retention of a group of bits to the following products Partials that can be made in the presence of a hold from the lower rank will therefore be X, 2x, -X or 0 with production of a new hold for the last two cases.
Les produits partiels réalisés sont additionnés successivement ; on élabore le premier produit partiel (qui est yO.X, donc 0 ou X), puis le deuxième (qui est O ou X ou 2X ou -X selon les valeurs des bits y2 et yl) et on l'additionne au premier ; le troisième (qui est O ou X ou 2X ou -X) est additionne au résultat de la première addition, et ainsi de suite jusqu'au dernier produit partiel. The partial products produced are added successively; we develop the first partial product (which is yO.X, so 0 or X), then the second (which is O or X or 2X or -X depending on the values of the bits y2 and yl) and we add it to the first one; the third (which is O or X or 2X or -X) is added to the result of the first addition, and so on to the last partial product.
Au résultat d'une addition quelconque, on voit qu'il faudra ajouter soit 0, soit X, soit 2X, soit -X, c'est-à-dire que pour un bit de rang i du résultat de l'addition, il faudra ajouter soit 0, soit le bit xi du multiplicande, soit le bit xi-1, soit le complément xi* du bit xi. At the result of any addition, we see that it will be necessary to add either 0, or X, or 2X, or -X, that is to say that for a bit of rank i of the result of the addition, it add either 0, or the xi bit of the multiplicand, or the bit xi-1, or the complement xi * of the bit xi.
L'addition du bit xi-1 pour le rang i correspond à l'équivalent d'un décalage i gaucho du multiplicande avant l'addition, donc à l'addition de 2X au lieu de X. The addition of the bit xi-1 for the rank i corresponds to the equivalent of a left shift of the multiplicand before the addition, therefore to the addition of 2X instead of X.
L'addition du complément xi* correspond essentiellement l'addition du terme -X. The addition of the complement xi * corresponds essentially to the addition of the term -X.
De cet ensemble de particularités découle la structure de multiplieur schématisée à la figure 1, sur laquelle on a représenté essentiellement quelques motifs élémentaires du réseau d'éléments destinés à l'accomplissement des opérations de formation et d'addition des produits partiels successifs. From this set of features follows the multiplier structure schematized in FIG. 1, in which there are shown essentially a few elementary patterns of the network of elements intended to perform the operations of forming and adding the successive partial products.
Le multiplieur comprend un premier étage d'entrée 10 recevant les bits xO à x15 du multiplicande X et un deuxième otage d'entrée 12 recevant les bits yO à y15 du multiplicateur. Ces étages sont constitués essentiellement chacun d'une rangée de bascules de verrouillage, une pour chaque bit de multiplicande ou multiplicateur, actionnées par une horloge commune 14 de sorte qu a la sortie de ces étages on retrouve les bits du multiplicande et du multiplicateur bloqués à des valeurs qui sont figées pendant toute une période de l'horloge. A la période suivant, si de nouvelles valeurs de X et Y ont eté appliquées aux entrées, ces valeurs sont transmises aux sorties des bascules de verrouillage des étapes d'entrée pour effectuer une nouvelle multiplication
X.Y.The multiplier comprises a first input stage 10 receiving the bits x 0 to x 15 of the multiplicand X and a second input host 12 receiving the bits y 0 to y 15 of the multiplier. These stages consist essentially each of a row of latches, one for each multiplicand bit or multiplier, actuated by a common clock 14 so that at the output of these stages we find the bits of the multiplicand and the multiplier blocked at values that are frozen during a whole period of the clock. In the following period, if new values of X and Y have been applied to the inputs, these values are transmitted to the outputs of the latch latches of the input steps to carry out a new multiplication.
XY
Les sorties des étages d'entrée, fournissant les valeurs verrouillées des bits xO à x15 et yO à y15, sont appliquées au réseau de formation et d'addition de produits partiels de la manière suivante
Les bits du multiplicateur sont appliqués deux à deux à des décodeurs qui contrôlent chacun la formation d'un produit partiel et l'addition aux produits partiels précédent.The outputs of the input stages, providing the locked values of bits x0 to x15 and y0 to y15, are applied to the partial product formation and addition network as follows
The bits of the multiplier are applied two by two to decoders which each control the formation of a partial product and the addition to the previous partial products.
Un décodeur 16j, de rang j reçoit les bits Y2j-1 et
Y2j ainsi que la retenue du décodeur de rang immodiatomont inférieur. De même, un décodeur 16 > +1 reçoit les bits Y2jt1 et
Y2j+2 ainsi que la retenue du décodeur 16j. Pour les bits yO et y15 le décodage est différent ou éliminé compte tenu de l'algorithme indique plus haut.A decoder 16j, of rank j receives the bits Y2j-1 and
Y2j as well as retention of decoder of rank immodiatomont inferior. Similarly, a decoder 16> +1 receives the bits Y2jt1 and
Y2j + 2 and the retention of the decoder 16j. For the bits y0 and y15 the decoding is different or eliminated considering the algorithm indicated above.
Chaque décodeur possède quatre sorties de commande destinées à contrôler une rangée d'aiguillages repérés par la référence 18 affectée d'indices indiquant leur position en colonne (i) et leur position en ligne (j). Ainsi, l'aiguillage 18i,j reçoit comme signaux de commande les sorties du décodeur de rang j, et comme signaux d'entrée à aiguiller les bits Xi-1 et Xi du multiplicande X. Each decoder has four control outputs intended to control a row of points marked by the reference 18 assigned indices indicating their position in column (i) and their position in line (j). Thus, the switch 18i, j receives as control signals the outputs of the decoder of rank j, and as input signals to switch bits Xi-1 and Xi of the multiplicand X.
La sortie de l'aiguillage 18i,j fournit soit 0, soit xi, soit le complément xi*, soit xi#l selon l'état des commandes issues du décodeur de rang j. The output of the switch 18i, j provides either 0, or xi, or the complement xi *, or xi # 1 depending on the state of the orders from the decoder row j.
Cette sortie est appliquée à une entrée d'un additionneur 20i j qui reçoit par ailleurs sur une autre entrée la sortie de somme de l'additionneur 20i+2,j-1, c'est-à-dire d'un addition neur de rang i+2 de la rangée précédente de rang j-l ; enfin, l'additionneur 20i,; reçoit sur une entrée de retenue la sortie de retenue d'un additionneur 20 1 c'est-a-dire d'un additionneur de rang 1+1 de la rangée précédente de rang j-l. This output is applied to an input of an adder 20i j which also receives on another input the sum output of the adder 20i + 2, j-1, that is to say a neural addition of rank i + 2 of the previous row of rank jl; finally, the adder 20i; receives on a retaining input the retaining output of an adder 20 1 that is to say, an adder of rank 1 + 1 of the previous row of rank j-1.
L'additionneur 20i j a deux sorties ; l'une est la sortie somme (résultat de l'addition des niveaux logiques présents sur les trois entrées de l'additionneur) et l'autre une sortie retenue (retenue de cette addition). La sortie somme est appliquée à l'entée de l'additionneur 20i-2,j+1 ; la sortie retenue est appliquée à l'entrée de l'additionneur 20i-1,j+1. Adder 20i has two outputs; one is the sum output (result of the addition of the logic levels present on the three inputs of the adder) and the other a selected output (hold of this addition). The sum output is applied to the input of the adder 20i-2, j + 1; the retained output is applied to the input of the adder 20i-1, j + 1.
Le motif essentiel des moyens de formation des produits partiels a ainsi etc décrit. Bien entendu, ce motif doit être adapté pour les rangs extrêmes O et 7 puisque les bits yO et y15 ne subissent pas un décodage de la même manière que les autres. The essential motive of the means for forming the partial products has thus been described. Of course, this pattern must be adapted for the extreme ranks O and 7 since the bits y0 and y15 do not undergo a decoding in the same way as the others.
La modification apportée selon l'invention est représentée à la figure 2 : le réseau d'aiguillages et d'additionneurs est décomposé en plusieurs groupes. Par exemple, chaque groupe comporte trois rangées d'aiguillages et d'additionneurs. On a représenté sur la figure 2 la dernière rangée d'aiguillages et d'additionneurs d'un groupe, cette rangée correspondant à un produit partiel de rang j, ainsi que les deux premières rangées d'aiguillages et d'additionneurs du groupe immédiatement consécutif, ces deux premières rangées correspondant à des produits partiels de rang j+1 et j+2. La limite entre les deux groupes est désignée par une ligne pointillée. The modification made according to the invention is shown in FIG. 2: the network of switches and adders is broken down into several groups. For example, each group has three rows of switches and adders. FIG. 2 shows the last row of switches and adders of a group, this row corresponding to a partial product of rank j, as well as the first two rows of switches and adders of the immediately consecutive group. , these first two rows corresponding to partial products of rank j + 1 and j + 2. The boundary between the two groups is designated by a dotted line.
Les éléments communs à ceux de la figure 1 sont désignés par la même référence. The elements common to those of Figure 1 are designated by the same reference.
Les éléments rajoutés sont des bascules de verrouillage de type D, toutes actionnées par l'horloge commune 14 (dont la fréquence est plus élevée que dans le cas de la figure 1). The added elements are type D latches, all actuated by the common clock 14 (whose frequency is higher than in the case of Figure 1).
Une bascule de verrouillage 22 est interposee entre chacune des entrées de signaux à aiguiller des aiguillages 18 du dernier rang (j) d'un groupe et les entrées correspondantes des aiguillages du premier rang (j+1) du groupe suivant (les entrées correspondantes sont celles qui doivent recevoir les mêmes bits du multiplicande). A latching lever 22 is interposed between each of the signal inputs to be turned 18 of the last row (j) of a group and the corresponding inputs of the first row switches (j + 1) of the next group (the corresponding inputs are those which must receive the same bits of the multiplicand).
Par conséquent, un aiguillage de la premiers rangée du groupe (par exemple l'aiguillage 18i,j+1), reçoit sur ses entrées les mêmes signaux que l'aiguillage correspondant (18i,j) de la dernière range du groupe précédent (c'est-à-dire les bits xi et xi-1), mais a travers des bascules de verrouillage respectives (22i,j+l et 22î#î,j+î) qui les retardent d'une période d'horloge. Therefore, a turnout of the first row of the group (for example the switch 18i, j + 1), receives on its inputs the same signals as the corresponding switch (18i, j) of the last range of the previous group (c ie bits xi and xi-1), but through respective latches (22i, j + 1 and 22i # 1, j + 1) which delay them by one clock period.
Les aiguillages correspondants (même indice i) des autres rangées d'un même groupe reçoivent les mêmes signaux, non retardés, que les aiguillages de la première rangée de ce groupe, car, à l'intérieur d'un groupe, la structure est essentiellement la même qu'à la figure 1 comme le montrent les connexions entre aiguillages et additionneurs des rangs j+1 et f+2 de la figure 2. The corresponding switches (same index i) of the other rows of the same group receive the same signals, not delayed, as the referrals of the first row of this group, because, within a group, the structure is essentially the same as in Figure 1 as shown by the connections between switches and adders rows j + 1 and f + 2 of Figure 2.
La sortie d'un aiguillage de rang quelconque est reliez directement à une première entrée de l'additionneur de meme rang. The output of a switch of any rank is connected directly to a first input of the adder of the same rank.
Par ailleurs, on prevoit, on amont do la seconde entrée, ainsi qu'en amont de l'entre de retenue, d'un additionneur de la première range d'un groupe (par exemple la rangée de rang j+1), des bascules de verrouillage respectives 24 et 26, toujours de type D, actionnées par l'horloge principale 14. Autrement dit, des bascules 24 et 26 sont interposées entre les sorties d'additionneurs de la dernière rangée d'un groupe et les entrées d'additionneurs de la première rangée du groupe suivant. Furthermore, upstream of the second input, as well as upstream of the holding gap, there is provided an adder of the first range of a group (for example the row of rank j + 1), respective latching latches 24 and 26, always of type D, actuated by the main clock 14. In other words, latches 24 and 26 are interposed between the addator outputs of the last row of a group and the inputs of adders of the first row of the next group.
Mais il n'y a pas de bascule interposée entre des sorties d'additionneurs et des entrées d'autres additiouneurs du même groupe. But there is no rocker interposed between outputs of adders and inputs of other additiouneurs of the same group.
La bascule interposée entre la sortie de l'additionneur 20i, j et la seconde entrée de l'additionneur 20i-2, j+1, est désignée par 24i-2,j+1. Celle qui est interposez entre la sortie de retenue de l'additionneur 20i,j et l'entrée de retenue de l'additionneur 20i-1, j+1, est désignée par 26i-1,j+1. The flip-flop interposed between the output of the adder 20i, j and the second input of the adder 20i-2, j + 1, is designated by 24i-2, j + 1. That which is interposed between the retaining output of the adder 20i, and the holding input of the adder 20i-1, j + 1, is denoted by 26i-1, j + 1.
En ce qui concerne les bits du multiplicateur Y, ils subissent quant a eux non pas un retard progressif simultané pour tous les bits à mesure de la progression de la multiplication, mais un retard qui augmente d'un groupe de bits au groupe suivant (un groupe de bits étant défini comme l'ensemble des bits servant à commander les aiguillages d'un groupe d'aiguillages et d'additionneurs tel que défini précédemment). As for the bits of the multiplier Y, they do not undergo a simultaneous progressive delay for all the bits as the multiplication progresses, but a delay that increases from one group of bits to the next group (a group of bits being defined as the set of bits used to control the referrals of a group of points and adders as defined above).
Ainsi, dans l'exemple représenté on peut dire que les bits #2j-l et Y2j (qui commandent le#decodeur 169 de rang j) sont les derniers bits d'un groupe, et que les bits Y2j+1 et Y2j+2 sont les premiers bits du groupe suivant. Thus, in the example shown it can be said that the bits # 2j-1 and Y2j (which control the decoder 169 of rank j) are the last bits of a group, and that the bits Y2j + 1 and Y2j + 2 are the first bits of the next group.
Les bits de multiplicateur t'un groupe sont retardés, par une série de bascules 28 an cascade, d'autant de périodes d'horloge que les bits de multiplicande parvenant aux entrées des aiguillages du momie groupe, c'est-i-dire des aiguillages commandes à partir de ces bits du multiplicateur. The multiplier bits of a group are delayed, by a series of cascaded flip-flops, by as many clock periods as the multiplicand bits reaching the inputs of the group mummy switches, i.e. command points from these bits of the multiplier.
En fait, on retardera non pas les bits du multiplicateur eux-mêmes mais plutôt les quatre sorties de chaque décodeur (sorties qui sont appliquées aux entrées de commande des aiguillages). In fact, we will not delay the bits of the multiplier themselves but rather the four outputs of each decoder (outputs that are applied to the control inputs of the switches).
En particulier, si n bascules de verrouillage 28 sont en cascade en sortie du décodeur 16j (dernier décodeur d'un groupe), alors, d'une part n bascules seront en cascade en sortie des autres décodeurs en cascade-du même groupe, et d'autre part n+l bascules seront en cascade en sortie du décodeur l6j+î, premier décodeur du groupe suivant, ainsi d'ailleurs qu'en sortie des autres décodeurs de ce groupe suivant (s'il y a plusieurs décodeurs par groupe). In particular, if n locking latches 28 are cascaded at the output of the decoder 16j (last decoder of a group), then, on the one hand, n flip-flops will be cascaded at the output of the other cascaded decoders-of the same group, and on the other hand n + 1 flip-flops will be in cascade at the output of the decoder l6j + i, first decoder of the following group, as well as at the exit of the other decoders of this following group (if there are several decoders by group ).
Pour ne pas alourdir le schéma de la figure 2, on n'a pas représenté des bascules sur chacune des quatre sorties des décodeurs mais une bascule unique pour quatre sorties, qui symbolise la transmission des signaux de sortie du de codeur avec un retard d'une période d'horloge (ou de n s'il y a n bascules en cascade). De toute façon, il faut comprendre que la figure 2 ne représente qu'un exemple particulier de réalisation et que les décodeurs pourraient très bien avoir un nombre de sorties différent de quatre. In order not to weigh down the diagram of FIG. 2, flip-flops on each of the four outputs of the decoders have not been represented, but a single flip-flop for four outputs, which symbolizes the transmission of the encoder output signals with a delay of a clock period (or n if there are flip-flops in cascade). In any case, it should be understood that FIG. 2 represents only a particular example of embodiment and that the decoders could very well have a number of outputs different from four.
Grâce à la structure ainsi décrite, on peut introduire simultanément un premier multiplicande X et un premier multiplicateur Y au front de montée d'une première période d'horloge. Thanks to the structure thus described, it is possible to simultaneously introduce a first multiplicand X and a first multiplier Y at the rising edge of a first clock period.
Si les bits yO à y4 du multiplicateur définissent trois produits partiels à effectuer dans un premier groupe, ces produits sont effectués et cumulés à partir du front de descente de cette première période d'horloge ; les bits x8 à x15 et yO à y4 parviennent en effet aux aiguillages après ee front de descente. If the bits y0 to y4 of the multiplier define three partial products to be performed in a first group, these products are made and accumulated from the falling edge of this first clock period; the bits x8 to x15 and y0 to y4 indeed reach the points after the descent front.
Lors du front de montée de la seconde période d'horloge, au cours de laquelle sont par ailleurs introduits dans les étages d'entrée un nouveau multiplicande X' et un nouveau multiplicateur Y', on a
- d'une part, stockage des résultats des cumuls partiels (sorties des additionneurs du dernier rang de chaque groupe) dans les bascules 24 et 26 placées en sortie de ces additionneurs,
- d'autre part, stockage dans les bascules 22 des valeurs de bits xi ayant servi aux cumuls partiels effectues durant la première période,
- enfin stockage, dans les bascules 28 connectées en sortie des décodeurs 16, des signaux do commande d'aiguillages ayant servi aux calculs de produits partiels effectués durant la premier période, et bien entendu stockage dans les autres bascules 28 (en cascade avec ces premières bascules) du contenu de la bascule immédiatement en amont.At the rising edge of the second clock period, during which a new multiplicand X 'and a new multiplier Y' are introduced into the input stages,
on the one hand, storing the results of the partial accumulations (outputs of the adders of the last rank of each group) in the latches 24 and 26 placed at the output of these adders,
on the other hand, storage in the flip-flops 22 of the bit values xi having served for the partial accumulations effected during the first period,
finally, in the latches 28 connected at the output of the decoders 16, storage signals for switching commands used for the partial product calculations carried out during the first period, and of course storage in the other latches 28 (in cascade with these first flip-flops) of the contents of the flip-flop immediately upstream.
Lors du front de descente de la seconde période d'horloge, tous les signaux qui viennent d'être stockés dans les bascules sont transmis aux sorties de ces bascules et des calculs de produits partiels et cumuls de produits partiels sont effectués dans chaque groupe à partir de ces signaux. During the falling edge of the second clock period, all the signals that have just been stored in the flip-flops are transmitted to the outputs of these flip-flops and partial product and cumulate partial product calculations are performed in each group from of these signals.
Dans chaque groupe on ne multiplie les bits d'un multiplicande X qu'avec des bits d'un multiplicateur Y introduit dans l'otage d'entrée en même temps que ce multiplicande X, et on peut obtenir l'equivalent d'une structure en pipeline permettant une augmentation importante du rythme d'introduction de données i multiplier et du débit des résultats à la sortie. In each group we multiply the bits of a multiplicand X only with bits of a multiplier Y introduced into the input hostage at the same time as this multiplicand X, and we can obtain the equivalent of a structure in pipeline allowing a significant increase in the rate of introduction of data i multiply and output rate of output.
Bien entendu, ce qui vient d'être décrit pour une structure particulière de multiplieur est adaptable à d'autres structures, mais il faut prévoir la position des bascules de verrouillage en fonction des nécessités de concordance temporelle entre les différents signaux utilisés dans un groupe d'additionneurs et d'aiguillages. Of course, what has just been described for a particular multiplier structure is adaptable to other structures, but it is necessary to predict the position of the latch latches according to the time matching requirements between the different signals used in a group of modules. adders and switches.
Claims (2)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR8307793A FR2545957A1 (en) | 1983-05-10 | 1983-05-10 | High-throughput binary multiplier |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR8307793A FR2545957A1 (en) | 1983-05-10 | 1983-05-10 | High-throughput binary multiplier |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2545957A1 true FR2545957A1 (en) | 1984-11-16 |
FR2545957B1 FR2545957B1 (en) | 1989-01-13 |
Family
ID=9288750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR8307793A Granted FR2545957A1 (en) | 1983-05-10 | 1983-05-10 | High-throughput binary multiplier |
Country Status (1)
Country | Link |
---|---|
FR (1) | FR2545957A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2611286A1 (en) * | 1987-02-23 | 1988-08-26 | Dassault Electronique | Multiplier integrated circuit, and its method of composition |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4189767A (en) * | 1978-06-05 | 1980-02-19 | Bell Telephone Laboratories, Incorporated | Accessing arrangement for interleaved modular memories |
-
1983
- 1983-05-10 FR FR8307793A patent/FR2545957A1/en active Granted
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4189767A (en) * | 1978-06-05 | 1980-02-19 | Bell Telephone Laboratories, Incorporated | Accessing arrangement for interleaved modular memories |
Non-Patent Citations (1)
Title |
---|
IEEE TRANSACTIONS ON COMPUTERS, volume C-24, no. 9, septembre 1975 (NEW YORK, US) C.I. TOMA "Cellular logic array for high-speed signed binary number multiplication", pages 932-935 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2611286A1 (en) * | 1987-02-23 | 1988-08-26 | Dassault Electronique | Multiplier integrated circuit, and its method of composition |
Also Published As
Publication number | Publication date |
---|---|
FR2545957B1 (en) | 1989-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0322966B1 (en) | Neural network circuit and structure | |
FR2788867A1 (en) | Arithmetic method and implementation for cryptographic processing | |
EP0692762B1 (en) | Parallel multiplication logical circuit | |
EP0262032B1 (en) | Binary adder having a fixed operand, and a parallel/serial multiplier comprising such an adder | |
FR2593620A1 (en) | ARITHMETIC CIRCUIT AND MULTIFUNCTION LOGIC | |
EP0437876B1 (en) | Programmable serial multiplier | |
EP0773499B1 (en) | Fastmultiplier for multiplying a digital signal to a periodic signal | |
EP0110767A1 (en) | Fast binary multiplier | |
EP0020185B1 (en) | Method and apparatus for the serial-parallel addition of a great number of words | |
EP0939363B1 (en) | Method for implementing modular multiplication according to the Montgomery method | |
FR2648585A1 (en) | METHOD AND DEVICE FOR RAPID MULTIPLICATION OF COMPLEMENT A 2 CODES IN A DIGITAL SIGNAL PROCESSING SYSTEM | |
FR2545957A1 (en) | High-throughput binary multiplier | |
EP0242258B1 (en) | Device for the execution of an algorithm (leroux-gueguen) for the coding of a signal by linear prediction | |
EP0341097B1 (en) | Recursive adder to calculate the sum of two operands | |
WO2000026790A1 (en) | Memory with vectorial access | |
FR2599526A1 (en) | MOS adder and MOS binary multiplier comprising at least one such adder | |
EP0175623A1 (en) | Device for the real-time processing of a digital signal by convolution | |
FR2559285A1 (en) | ARITHMETIC AND LOGIC UNIT WITH OVERFLOW INDICATOR | |
EP0112768B1 (en) | Elemental operator, especially for a cascade-type multiplier | |
EP0128072B1 (en) | Binary multiplier with sign extension for the multiplication of signed and unsigned numbers | |
EP0718755B1 (en) | Electronic component, more particularly capable of performing a radix 4 division of two numbers | |
EP0655685B1 (en) | Parity bit calculation device associated with a sum of two numbers | |
FR2585150A1 (en) | MULTIPLIER FOR MULTIPLICATION OF TWO COMPLEX NUMBERS | |
FR2540261A1 (en) | Parallel multiplier in MOS integrated circuit of the pipe-line type | |
FR2650088A1 (en) | Method for generating logic diagrams of parametrable multiplier circuits with a booth decoder, by means of a computer and corresponding multiplier circuits |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ST | Notification of lapse |