CA2006228C - Multiplier - Google Patents

Multiplier

Info

Publication number
CA2006228C
CA2006228C CA002006228A CA2006228A CA2006228C CA 2006228 C CA2006228 C CA 2006228C CA 002006228 A CA002006228 A CA 002006228A CA 2006228 A CA2006228 A CA 2006228A CA 2006228 C CA2006228 C CA 2006228C
Authority
CA
Canada
Prior art keywords
bits
carry
sum
partial end
significant
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.)
Expired - Fee Related
Application number
CA002006228A
Other languages
French (fr)
Other versions
CA2006228A1 (en
Inventor
Son Dao-Trong
Klaus Joerg Getzlaff
Klaus Helwig
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CA2006228A1 publication Critical patent/CA2006228A1/en
Application granted granted Critical
Publication of CA2006228C publication Critical patent/CA2006228C/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction 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/5336Reduction 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/5338Reduction 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

Abstract

A multiplier for multiplying two binary operands comprising an encoding unit, a multiplying unit composed of two multiplying arrays and a logic unit. The encoding unit to which a second operand is supplied generates factors following the Booth algorithm. The two multiplying arrays are respectively supplied with a first operand and factors belonging to the higher significance digits, respectively, of the second operand. Both multiplying arrays simultaneously multiply the factors with the first operand into respective partial end products. Both partial end products are applied to the logic unit which generates therefrom the end product in accordance with the algorithm used at the beginning.

Description

2~6Z28 MULTIPLIER

DESCR I PTION

The invention relates to a multiplier such as that described in U.S. Patent No. 4,638,449, issued January 20, 1987 and assigned to the present assignee. In the multiplier disclosed there, an encoding unit operating in accordance with the Booth algorithm receives an operand Y
and subsequently forms a sequence of figure pairs therefrom. These figure pairs are applied to a following multiplying-adding unit which is supplied with a second operand X. In this multiplying-adding unit, operand Y is multiplied with the figure pairs formed by the encoding unit to form partial products. These partial products are subsequently added up to form a final product.
As specified in the embodiments cited in the patent, the multiplier described is particularly suitable for operands with a smaller number of digits, e.g. for ten-digit operands. For operands with a high number of digits such as sixty-digit operands, the multiplier described has the disadvantage that the successive addition of partial products causes very high processing times.
It is the object of the invention to provide a multiplier which, even with a higher number of operand digits, requires a minimum processing time for the multiplication thereof.

26~62Z8 -By dividing the multiplying unit into two multiplying arrays, and by correspondingly applying the factors formed of the second operand to the two multiplying arrays it is possible to multiply the first operand with the respective factors at the same time in the two multiplying arrays, and subsequently add the partial products obtained. As a consequence, one respective partial end product is available at the outputs of the two multiplying arrays at approximately the same time. The partial end products are logically combined into an end product in a logic unit.
Through this time-parallel processing of the two operands, the number of successive additions of partial products is reduced, causing a considerable reduction of the time required to perform the multiplication.
In an embodiment of the multiplier, the logic unit comprises several adding arrays for implementing the logic digit combination of the two partial end products formed by the multiplying arrays.
The carry adder array provided in a further embodiment of the multiplier generates the final product from the sums and carries partly generated by the adding arrays.
A further embodiment of the multiplier provides a carry modifying unit which, depending on the algorithm used in the encoding unit, is supplied with predetermined signals. With the Booth algorithm being applied, the carry modifying unit is supplied with the sign of the less significant partial end product as well as with the carry 2C)i[~6Z28 _, of that particular added of the second and third adding array which is associated with the most significant digit of the less significant partial end product.
The algorithm used initially in the encoding unit is thus considered in the logic combination of the two partial end products.
In a still further embodiment of the multiplier the encoding unit generates, by using the Booth algorithm, the figures of the second operand predetermined output signals according to which the multiplying unit selects the figures of the first operand. By fixing the output signals as described, and by logically combining them with the figures of the first and second operand in a specified manner, the space requirement for the selecting circuits executing the multiplications is reduced owing to a smaller number of transistors required.
In a further embodiment of the multiplier the partial products generated in the multiplying arrays are successively added and the signs of the partial sums obtained are respectively propagated by two digits, thus making sure that for the adding of the partial products a smaller number of adders and thus, with an integrated structure, a reduced surface requirement is needed.
In a still further embodiment of the multiplier, the multiplying arrays are designed in such a manner that the presenting of the partial end products by means of a feedback of the carry are generated from the most significant digit of the partial end product. Thus, a 2~1~6228 further step in the generation of the partial end products is avoided and consequently the time delay caused by multiplication is reduced.
In another embodiment of the multiplier, buffers are associated with the multiplying arrays. It is thus possible to supply the multiplying arrays with the next operands while the logic unit is still logically combining the preceding operands.
Further developments and advantages of the invention are specified in the subsequent description of a multiplier according to the invention as depicted in the drawings. The drawings show the following:
FIGURE 1 is a schematic block diagram of the multiplier structure;
FIGURE 2A is a table giving the connection between the figures of the second operand and the factor applied to the multiplying arrays;
FIGURE 2B is an example for a multiplication of two operands, with the factor generation of Figure 2A being used;
FIGURE 3A is a schematic block diagram of a selecting circuit;
FIGURE 3B is a table giving the output signal of the selecting circuit as a function of the factors formed in accordance with Figure 2A;
FIGURES 3C to 3F show two schematic logic circuit diagrams as well as their circuit realization of the respective selecting circuit;

Z0~228 -FIGURE 4 is a schematic block diagram of one of the two multiplying arrays;
FIGURES 5A and 5B show the logical combination of the two partial end products formed by the multiplying arrays in a survey diagram and a block diagram;
FIGURE 6A (on the sheet of drawings bearing Figure 5A), shows a schematic logic circuit diagram of the modifying unit;
FIGURE 6B is a schematic logic circuit diagram of parts of the carry adding array, and FIGURES 6C and 6D are schematic logic circuit diagrams of embodiments of the carry modifying unit depicted in Figure 6A.
The multiplier depicted in Figure 1 as a schematic block diagram is composed of a multiplying unit MULT 10, and encoding unit ENCODE 12, and a carry adder array CPA
15. Multiplying unit 10 is supplied with a multiplicand MAND as a first operand consisting of binary figures DO
and D59. Encoding unit 12 is applied by a multiplier MIER, the second operand consisting of binary figures CO
to C57 in such a manner that the figures CO to C28 and C29 to C57 of the multiplier are respectively combined. The figures marked with the index "O" are the most significant bits.
As will be explained below, encoding unit 12 generates from figures CO to C28 and C29 to C57 of the multiplier specific output signals in accordance with the Booth algorithm. The output signals are marked in Figure ZC)~228 1 with the reference numbers lX, 2X, TX, TlX, one set of these output signals being respectively associated to figures CO to C1, Cl to C3, etc., and C29 to C30, C30 to C32, etc. These output signals derived from figures CO
to C28 and C29 to C57 of the multiplier are applied to multiplying unit 10.
Multiplying unit 10 is composed of two multiplying arrays ARRAY A 20 and ARRAY B 22, two buffers 21, 23 associated to multiplying arrays 20, 22, and a logic unit 25. The output signals of encoding unit 12 which belong to figures CO to C28 of the multiplier are applied to multiplying array 20, whereas the output signals of encoding unit 12 which belong to figures C29 to C57 of the multiplier are applied to multiplying array 22. As will be described below, figures CO to C28 and C29 to C57 of the multiplier are multiplied with figures DO to D59 of the multiplicand in the two multiplying arrays 20, 22.
Results of these multiplications is a partial end product consisting of figures ATO to AT88 available at the output of multiplying array 20, and a partial end product consisting of the figures BTO to BT88 available at the output of multiplying array 22.
These two partial end products ATO to AT88, BTO to BT88 are stored in buffers 21, 23.
Partial end products AtO to AT88 and BTO to BT88 are applied to logic unit 25 which comprises a first, a second, a third, and a fourth adding array CSAl 27, CSA2 28, CSA3 29 and HA4 30. These four adding arrays 27, 28, ;~01~6228 _.
29, 30 generate from the input signals supplied to logic unit 25 a number of output signals identified in Fig. 1 with the reference number SCO to SC117.
Furthermore logic unit 25 comprises a carry modifying unit CMC 32 by means of which an output signal CPCTRL is produced.
Output signals SCO to SC117 and CPCTRL of logic unit 25 are applied to carry adding array 15 which from the above listed signals generates an output signal PROD
consisting of binary figures PO to P117 which corresponds to the product of multiplicand and multiplier.
By means of the table in Fig. 2A and the arithmetic example given in Fig. 2B, the Booth algorithm used will be explained in the following. In this algorithm, figure pairs are formed as follows-C56 to C57, C54 to C55, etc., and C27 to C28, C25 to C26 etc..
Generally expressed, these figure pairs are asfollows:
Ci - 1 to Ci, with i = 57, 55, 53, etc.
i = 28, 26, 24, etc..
Added to these figure pairs is the respective subsequent figure Ci + 1. From these three figures Ci -1, Ci, Ci + 1 specific factors are obtained as a function of the respective binary values, in accordance with the table of Fig. 2A.

With these factors the multiplicand is multiplied, as represented in an example in Fig. 2B. There, the multiplier is divided in figure pairs, with an additional figure being associated with each figure pair. In accordance with the table of Fig. 2A there results one respective factor with which the multiplicand is to be multiplied, making sure that the partial result obtained is to be shifted by the respective number of figures by which the associated figure pair in the multiplier has been shifted, too. In Fig. 2B, the partial products associated to the respective factors are marked with the reference number PPl to PP5. The "1" surrounded by a circle in the partial products PP3 and PP4 indicates that these partial products have a negative sign.
Partial products PPl to PP5 are successively added, forming partial sums Sl to S3. A negative sign of a partial product is considered in that the sum or the carry of the most significant digit of the partial sum is propagated by another two digits. If in the addition of partial sum S3 and of partial product PP5 into end product EP there is a carry this is ignored as the consequence of the Booth algorithm being used. This is indicated in Fig.
2B by the reference "x". Final product EP without the digit marked "x" will then represent the product of the multiplicand with the multipier.
The encoding of figures CO to C28 and C29 to C57 of the multiplier in factors according to the table of Fig.
2A is implemented in encoding unit 12. The factors are .
represented in the form of the above mentioned output signals lX, 2X, TX, TlX, with one set of output signals being associated to each group of figures belonging to an i, in accordance with the above given specifications.
The multiplication of the factors generated by the encoding unit with the multiplicand are implemented in multiplying arrays 20, 22. Multiplying array 20 is supplied with the factors associated to figures CO to C28 of the multiplier, and multiplying array 22 with the factors associated to figures C29 to C57 of the multiplier. The multiplications are effected by means of selecting circuits MUX35 contained in multiplying arrays 20, 22, one being depicted in Fig. 3A.
Selecting circuit 35 represented in Fig. 3A as a schematic block is supplied with output signals lX, 2X, TX, TlX of encoding unit 12, as well as with two successive figures Di and Di + 1 of the multiplicand, these output signals and the given figures of the multiplicand being respectively associated to a multiplier figure group belonging to an i. From these input signals selecting circuit 35 generates an output signal OUT in the manner given in the table of Fig. 3B.
If output signals lX and 2X both equal 0, the multiplicand is to be multiplied with the factor "O". If the output signal lX equals 1, the multiplicand is to be multiplied with the factor "1" or with the factor "-1".
If, however, the output signal 2X equals 1, the multiplicand is to be multiplied with the factor "2" or -with the factor "-2". Output signals TX and TlX decide whether the above mentioned factors are positive or negative. If TX equals 1, the factor "-1" is selected;
if factor TlX e~uals 1, the same applies to the factor "-2".
As will be explained below, each digit of the multiplicand has an associated selecting circuit 35. If this selecting circuit is supplied with input signals which represent the factor "1", selecting circuit 35 switches digit Di of the multiplicand to the output. This corresponds to a multiplication of this digit of the multiplicand with 1. If, on the other hand, the input signals of selecting circuit 35 represents the factor "2"
the figure Di + 1 of the multiplicand is passed on as an output signal. The figure Di + 1 has a value that is lower by one digit than the figure Di of the multiplicand. The switching of the figure Di + 1 to the output of selecting circuit 35 thus represents a shifting of the multiplicand by one digit toward a higher value, which in turn corresponds to a multiplication of the multiplicand with 2. If the input signals of selecting circuit 35 represent the factors "-1" or "-2", the corresponding negated figures DiF and Di + lF of the multiplicand are generated as output signals at the output.
Figs. 3C and 3D as well as 3E and 3F give two embodiments for realizations of selecting circuit 35.
In the embodiment according to fig. 3C, signals Di and TX as well as signals Di + 1 and TlX are respectively applied to an XOR gate 37, 38 whose output signals are respectively applied to an AND gate 39, 40. AND gate 39 is furthermore supplied with signal lX and AND gate 40 with signal 2X. the outputs of AND gates 39, 40 are connected to a negated OR gate 41 at whose output the negated signal OUTF is available.
Selecting circuit 35 of Fig. 3C can be realized in the form of a circuit in accordance with Fig. 3D in CMOS
technology. Transistors 50, 51, 52, 53 form one series arranged circuit and transistors 55, 56, 57, 58 form a second series-arranged circuit. Transistors 50, 51, 55, 56 are P-transistors and transistors 52, 53, 57, 58 are N-transistors.
Figure Di of the multiplicand is supplied to transistor 50 and to the gate of transistor 51. Negated figure DiF is supplied to the gate of transistor 52 and to transistor 53. Figure Di + 1 and negated figure Di +
lF is connected to transistors 55, 56 and is connected to transistors 57, 58. Signal TX is applied to the gates of the two transistors 50, 53 and the point of connection between transistors 51 and 52. Signal TlX is applied to the gates of transistors 55 and 58 and to the point of connection between transistors 56 and 57. Transistors 60, 61, 62, 63 and transistors 65, 66, 67, 68, respectively, form series-arranged circuits from a positive supply voltage to ground. Transistors 60, 61, 65, 66 are P-type transistors and transistors 62, 63, 67, 68 are N-type transistors. The gates of transistors 60, 62 are Z(~ 62Z8 connected to the point of connection of transistors 50, 51 and transistors 52, 53. The gates of transistors 66, 68 are connected to the points of connection of transistors 55, 56 and transistors 57, 58. The gates of transistors 61, 67 are supplied with the signal 2X and the gates of transistors 63, 65 with signal lX. The point of connection of transistors 62, 63 and of transistors 67, 68 are interconnected. Similarly, the points of connection of transitors 61, 62 and of transistors 66, 67 are interconnected, with output signal OUTF being available at that point.
In the embodiment of selecting circuit 35 as shown in Fig. 3E signals Di and TX as well as signals Di + 1 and TlX are respectively applied to an XNOR gate 43, 44 whose output signals are respectively applied to an OR gate 45, 46. The negated signals lXF and 2XF are applied to OR
gates 45, 46. The outputs of both OR gates 45, 46 are connected to a negated AND gate 47 at whose output signal OUT is available.
This selecting circuit 35 of Fig. 3E can be realized by the cirucit depicted in Fig. 3F. This circuit comprises transistors 70 to 73, 75 to 78, 80 to 83 and 85 to 88. The interconnection of these transistors corresponds to that of the circuit of Fig. 3D. Signals TX and TlX are also applied to the circuit of Fig. 3F as in the circuit of Fig. 3D.
In the circuit of Fig. 3F, the signals Di, DiF, Di +
1, Di + lF are always negated compared with the circuit ._ of Fig. 3D. Instead of signals 2X and lX in the circuit of Fig. 3D, the negated signals lXF and ZXF are applied in the circuit of Fig. 3F in an analogous position. As an output signal, signal OUT is available in the circuit according to Fig. 3F.
In Fig. 4, one of the multiplying arrays 20, 22 is generally depicted as a schematic block diagram. Each of these multiplying arrays 20, 22 is composed of a multitude of adders 90 arranged in rows and columns. A number of adders 90 is shown in Fig. 4 with specific reference numbers 91 to 98.
Each column of the multiplying array of Fig. 4 is associated with a binary digit, with the most significant digit being arranged at the left in Fig. 4. In each row of the given multiplying array figures D0 to D59 of the multiplicand are multiplied with the factors belonging to figures C0 to C57 of the multiplier, and respectively added to the preceding partial product. For that purpose, one respective selecting circuit 35 is arranged in series to an input of adders 90, the multiplication in the respective position being implemented therewith, whereas the other input of adders 90 is respectively applied with the corresponding digit of the preceding partial products.
The rows succeeding each other from top to bottom in Fig. 4 are shifted with respect to their adders 90 in accordance with the correlation of rows to the figures of the multiplier by two respective digits toward higher values. The propagation mentioned in connection with the 2~6228 arithmetic example of Fig. 2, by two digits in the event of a negative partial product is achieved for the multiplier array of Fig. 4 in that the output signals of adder 92, i.e. sum and carry, are applied to the corresponding inputs of adders 94, 95 and 96.
In the multiplier array of Fig. 4, the result obtained from the addition of the partial products is available at the outputs of those adders 90 which are arranged in the individual columns in the last bottom line. The end product consists in each column, i.e. in each digit, of one sum figure S and one carry figure C
obtained from the next lower significance digit. As mentioned above, multiplying array 20 creates the partial end product AT0 to AT88, and multiplying array 22 the partial end product BT0 to BT88.
As another output signal the multiplier array depicted in Fig. 4, i.e. by adder 98, generates a signal SP. This signal SP is only a logical "1" if there is either a carry from adder 97, or if one of the output signals of adder 93 is a logical "l". These two output signals can never be a logical "1" simultaneously since adder 91 is supplied with a logical "0" as an input signal. Consequently, the result of the addition in adder 91 can never exceed the value 2. Due to the propagation of the output signals of adder 91 by two digits one of the input signals of adder 92 is in any event a logical "0", so that the addition in adder 92 can never exceed the value 2, either. This function is continued over the 20~iZZ8 -successive lines down to adder 93. As specified above, one of the two output signals of adder 93 is in any case a logical "O". Output signal SP of adder 98 thus represents an ORing of the sign of the last but one line comprising adder 93 with the carry from the last line comprising adder 97.
The derivation of the two partial end products ATO
to AT88 and BTO to BT88 from the multiplicand and the factors of the multiplier are computed in the two multiplying arrays 20, 22 in a time-parallel mode, i.e.
roughly simultaneously. Partial end products ATO to AT88 and BTO to BT88 are thus available almost simultaneously at the outputs of multiplying arrays 20, 22 for buffering in buffers 21, 23 and for further processing.
Figs. 5A and 5B show schematically the logical combination of the two partial end products ATO to AT88 and BTO to BT88 into final product PO to P117. The two partial end products are respectively composed of sum figures O to 88 and carry figures O to 62.
Sum figures 63 to 88 of partial end product BTO to BT88 are the direct representation of figures P92 to Pl17 of end product PO to P117.
Sum and carry figures 60 to 62 of partial end product BTO to BT88 are applied to carry adding array 15 and are transformed there into figures P89 to P91 of end product PO to P117. Carry adding field 15 comprises a plurality of adders by means of which the carries from individual Z~6228 -digits are respectively added to the next more significant digit.
- Sum figures 63 to 88 of partial end products AT0 to AT88, as well as sum and carry figures 34 to 59 of partial end product BT0 to BT88 are applied to the first adding array CSAl, 27 containing a multitude of adders 101.
Supplied to each adder 101 are sum figures corresponding to each other according to their digits, of the partial end products AT0 to AT88 and BT0 to BT88, and the carry figure of the next-lower significant digit of the partial end product. Adders 101 of the first adding array 27 form thereof a first intermediate result SC63 to SC88 which in each digit consists of a sum and of a carry. This first intermediate result is processed further in carry adding array 15 into figures P63 to P88 of end product P0 to P117.
The sum and carry figures 28 to 62 of partial end product AT0 to AT88, as well as sum and carry figures 0 to 33 of partial end product BT0 to BT88 are applied to the second and third adding arrays CSA2, 28 and CSA3, 29.
Adding arrays 28, 29 comprise a plurality of adders 102, 103 associated to the individual digits. In adders 102 of adding array 28 sum figures corresponding to each other according to their digits, of the two partial end products AT0 to AT88 and BT0 to BT88, as well as the next lower significance carry figure of partial end product BT0 to BT88 are added to a second intermediate result consisting in each digit of sum and carry. In adders 103 of third adding array 29 the digit- corresponding sum of the second ~6228 intermediate result, the next lower carry of the second partial result, and the next lower carry figure of partial end product AT0 to AT88 are added up, forming a third intermediate result SC28 to SC62 which in each digit consists of a sum and a carry, and which in the subsequent carry adding array 15 is transformed into figures P28 to P62 of final product P0 to P117.
Sum and carry figures 0 to 27 of partial end product AT0 to AT88 are applied to the fourth adding array HA4, 30. It comprises a multitude of half-adders 104. In each of half-adders 104 the next lower significance carry figure is added to the sum figure. Fourth adding array 30 forms a fourth intermediate result SC0 to SC27 which in each digit consists of a sum and a carry. This fourth intermediate result is transformed in carry adding array 15 into figures P0 to P27 of end product P0 to P117.
As explained in connection with the arithmetic example of Fig. 2B, a carry marked "x" there has to be ignored in the most significant digit of end product EP.
This is achieved in the circuit according to Fig. 5B by means of carry modifying unit CMC 32.
This carry modifying unit 32 is supplied with signal SP generated by multiplying array 22, the carry marked CF
from the most significant adder 102 of second adding array 28, and the carry marked CS of digit- corresponding adder 103 of third adding array 29. These input signals are modified by carry modifying unit 32 into signals SPM =
CPCTRL, CFM and CSM. Signal CPCTRL is applied to carry -adding array 15, signal CMF to most significant adder 103 of the third adding array 29, and signal CMS is applied as carry of the third adding array 29 to carry adding array 15.
The logical combination of the above given input and output signals of carry modifying unit 32 is shown in the schematic block diagram of Fig. 6A. There, an inverter 110 is supplied with signal SP. The output of inverter 110 is connected to one respective input of an AND gate 111, an OR gate 112 and another OR gate 114. Signal CF
is respectively applied to another input of the last-mentioned components. Signal CS is applied to a third input of OR gate 14 and another AND gate 113. A
further input of this AND gate 113 is connected to the output of OR gate 112. At the output of AND gate 111 signal CFM, at the output of AND gate 113 signal CSM, and at the output of OR gate 114 signal CPCTRL are available.
Carry modifying unit 32 thus performs the following functions:
CFM = SPF . CE, CSM = (SPF + CF) . CS and SPM = CPCTRL = SPF + CF + CS, where "." = and, "+" = OR.
If carry modifying unit 32 indicates that the carry marked "x" and explained with reference to the arithmetic example of Fig. 2B has to be ignored, this is achieved by signal CPCTRL. For that purpose, an AND gate 118 is provided in carry adding array 15, according to the ~6ZZ8 _ circuit of Fig. 6B, which modifies bit position 29 as a function of input signal CPCTRL.
Fig. 6C and 6D show two embodiments of carry modifying unit 32 in the form of schematic block diagrams.
The circuit of Fig. 6C comprises two negating OR
gates 120, 122, an AND gate 121 as well as another negating AND gate 123. Signal SP is applied to OR gate 120, AND gate 121 and AND gate 123. Negated signal CFF
is supplied correspondingly. Negated signal CSF is applied to OR gate 122 and to AND gate 123. The further input of OR gate 122 is joined to the output of AND gate 121. At the output of OR gate 120 signal CFM, at the output of OR gate 122 signal csm, and at the output of AND
gate 123 signal CPCTRL are available.
The circuit of Fig. 6B comprises four AND gates 130, 131, 132, 133, one respective input being switched in an inverting mode. Signal SP is applied to the non-inverting input of AND gate 130 and to the inverting input of AND
gate 133. Signal CF is supplied to the inverting input of AND gate 130 and to the non-inverting input of AND gate 133. The output of AND gate 130 is connected to the non-inverting input of AND gate 131 and to the inverting input of AND gate 132. Signal CS is connected to the inverting input of AND gate 131 and to the non- inverting input of AND gate 132. At the output of AND gate 131 signal CPCTRL, at the output of AND gate 132 signal CSM, and at the output of AND gate 133 signal CFM are available.

Claims (17)

1. A multiplier for multiplying a first digital operand with a second digital operand, comprising:
encoding means, coupled to said second operand, for identifying factors corresponding to groups of bits of said second operand according to an algorithm, and multiplying means, coupled to said first operand and supplied with said factors created by said encoding means, for multiplying said first operand with said factors and adding partial end products resulting from the multiplications to yield an end product, said multiplying means comprising two multiplying arrays, each of said multiplying arrays being supplied with said first operand, and one of said multiplying arrays being supplied with the factors corresponding to the most significant bits of said second operand and the other one of said multiplying arrays being supplied with the factors corresponding to the least significant bits of the second operand, each of said multiplying arrays simultaneously multiplying said first operand with said corresponding factors and adding resultant partial products to yield a partial end product comprising sum bits and respective carry bits for at least some of said sum bits, each of said respective carry bits having corresponding significance to the respective sum bit and being derived from addition of next less significant bits, said multiplying means further comprising logic means, supplied with said partial end products for logically adding said sum bits and respective carry bits of said partial end products into said end product, said logic means including carry modifying means, supplied with a carry bit generated by one or more logical operations involving the most significant bit of the less significant partial end product and a sign generated by said other multiplying array, for influencing a next most significant bit of the end product based on said carry bit and said sign.
2. Multiplier as claimed in claim 1, wherein said logic means comprises a first adding array to which is applied some sum bits and respective carry bits of the less significant partial end product and sum bits of the more significant partial end product and a second adding array to which is applied other sum bits and respective carry bits of the less significant partial end product, said first and second adding arrays forming first and second intermediate results, respectively, consisting of sum and carry bits.
3. Multiplier as claimed in claim 2, wherein the multiplying arrays include means for forming the signs of the partial end products by a feedback of the carry of the most significant bit of the partial end products.
4. Multiplier as claimed in claim 2, wherein lower significant carry bits of the less significant partial end product are applied to the first adding array and higher significant carry bits of the less significant partial end product are applied to the second adding array.
5. Multiplier as claimed in claim 4, further comprising a third adding array to which is applied each sum bit and respective carry bit of the second intermediate result, each of said respective carry bits having a corresponding significance as the respective sum bit and being derived from addition of next less significant bits forming the second intermediate result, and each sum bit of the more significant partial end product having the same significance as any of said sum bits and respective carry bits of the second intermediate result which are applied to said third adding array, said third adding array forming third intermediate results consisting of sum and carry bits.
6. Multiplier as claimed in claim 5, further comprising a fourth adding array to which is applied other sum bits and respective carry bits of the more significant partial end product, said fourth adding array forming fourth intermediate results respectively consisting a sum and carry bits.
7. Multiplier as claimed in claim 6, further comprising a carry adding array to which is applied the sum bits and respective carry bits of the first, third and fourth intermediate results, and sum bits and respective carry bits of lower significance bits of the less significant partial end product, said carry adding array forming part of the end product.
8. Multiplier as claimed in claim 7, wherein said algorithm is a Booth algorithm; and said carry bit generated by one or more logical operations involving the most significant bit of the less significant partial end product and supplied to said carry modifying means is a carry bit associated with the most significant bit of the less significant partial end product of the second and third adding arrays.
9. Multiplier as claimed in claim 8, wherein said carry modifying means performs the following functions:
CFM=SPF-CF
CSM=(SPF+CF)-CF, and SPM=SPF+CF+CS; where SP= sign generated by said multiplying array which is supplied with the least significant bits of the second operand, SPF= negated sign, CF= carry bit of a most significant adder of the second adding array, CS= carry bit of a most significant adder of the third adding array, SPM= modified sign SP, CFM= modified carry CF, CSM= modified carry CS, and "-"=AND, and "+"=OR.
10. Multiplier as claimed in claim 1, wherein said algorithm is a Booth algorithm, and by applying the Booth algorithm the encoding means generates out of the bits of the second operand the following output signals representing the factors:

output signals bit pair addi- factors belonging to i of the second tional belonging to bit operand bit bit pair i Ci - 1 Ci Ci + 1 pair i 1X 2X TX T1X
0 0 0 *0 0 0 - -0 0 1 *1 1 0 0 -0 1 0 *1 1 0 0 -0 1 1 *2 0 1 - 0 1 0 0 *(-2) 0 1 - 1 1 0 1 *(-1) 1 0 1 -1 1 0 *(-1) 1 0 1 -1 1 1 *0 0 0 - -
11. Multiplier as claimed in claim 10, wherein the multiplying means selects from output signals of the encoding means the bits of the first operand as follows:

output signals selected belonging to bits of the first bit pair operand which i of the second factors belong to operand belonging to bit pair i of the 1X 2X TX T1X bit pair i second operand 0 0 - - *0 0 1 0 0 - *1 Di 0 1 - 0 *2 Di + 1 1 0 1 - *(-1) DiF
0 1 - 1 *(-2) Di + 1F
12. Multiplier as claimed in claim 1 wherein said algorithm is a Booth Algorithm, and the multiplying arrays include means for successfully adding the partial end products and propagating the respective sign of the partial sums obtained.
13. Multiplier as claimed in claim 1 wherein the multiplying arrays include associated buffer means for buffering the two partial end products.
14. Multiplier as claimed in claim 1 wherein said logic means comprises a plurality of adding arrays for adding said sum bits and respective carry bits of the less significant partial end products, said respective carry bits having the same significance as the respective sum bits, and sum bits and respective carry bits of the more significant partial end products, said respective carry bits having the same significance as the respective sum bits, and wherein each of said adding arrays consists of adding elements, substantially all of which adding elements within one adding array being supplied with and adding the same number of said bits.
15. Multiplier as claimed in claim 14 wherein said adding array comprises:
a first adding array which is supplied with and adds the most significant sum bits and respective carry bits of the more significant partial end product;
a second adding array which is supplied with and adds the least significant sum bits of the more significant partial end product, and sum bits and respective carry bits of the less significant partial end product which have corresponding significance as said least significant sum bits of the more significant partial end product; and a third adding array which is supplied with sum bits and respective carry bits of the less significant partial end product of lower significance than those applied to said second adding array.
16. Multiplier as claimed in claim 15 wherein:
said first adding array is not supplied with any sum or respective carry bits of the less significant partial end product; and said third adding array is not supplied with any sum or respective carry bits of the more significant partial end product.
17. Multiplier as claimed in claim 16 wherein said second adding array is not supplied with any carry bits of the more significant partial end product.
CA002006228A 1989-02-21 1989-12-20 Multiplier Expired - Fee Related CA2006228C (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP89102956A EP0383965A1 (en) 1989-02-21 1989-02-21 Multiplier
EP89102956.3 1989-02-21

Publications (2)

Publication Number Publication Date
CA2006228A1 CA2006228A1 (en) 1990-08-21
CA2006228C true CA2006228C (en) 1994-10-25

Family

ID=8200985

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002006228A Expired - Fee Related CA2006228C (en) 1989-02-21 1989-12-20 Multiplier

Country Status (5)

Country Link
US (1) US5070471A (en)
EP (1) EP0383965A1 (en)
JP (1) JPH02247727A (en)
BR (1) BR9000776A (en)
CA (1) CA2006228C (en)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2838326B2 (en) * 1991-04-16 1998-12-16 三菱電機株式会社 Digital multiplier
KR950001055B1 (en) * 1992-05-26 1995-02-08 삼성전자 주식회사 Multiplication method and circuit
JP2859779B2 (en) * 1992-06-17 1999-02-24 三菱電機株式会社 Multiplier
US5375078A (en) * 1992-12-15 1994-12-20 International Business Machines Corporation Arithmetic unit for performing XY+B operation
US5661673A (en) * 1995-08-31 1997-08-26 National Semiconductor Corporation Power efficient booth multiplier using clock gating
US6134574A (en) * 1998-05-08 2000-10-17 Advanced Micro Devices, Inc. Method and apparatus for achieving higher frequencies of exactly rounded results
US6144980A (en) * 1998-01-28 2000-11-07 Advanced Micro Devices, Inc. Method and apparatus for performing multiple types of multiplication including signed and unsigned multiplication
US6269384B1 (en) 1998-03-27 2001-07-31 Advanced Micro Devices, Inc. Method and apparatus for rounding and normalizing results within a multiplier
EP1031073B1 (en) * 1997-10-23 2003-09-24 Advanced Micro Devices, Inc. A method and apparatus for multi-function arithmetic
US6115733A (en) * 1997-10-23 2000-09-05 Advanced Micro Devices, Inc. Method and apparatus for calculating reciprocals and reciprocal square roots
US6223198B1 (en) 1998-08-14 2001-04-24 Advanced Micro Devices, Inc. Method and apparatus for multi-function arithmetic
US6085213A (en) * 1997-10-23 2000-07-04 Advanced Micro Devices, Inc. Method and apparatus for simultaneously multiplying two or more independent pairs of operands and summing the products
US6115732A (en) * 1998-05-08 2000-09-05 Advanced Micro Devices, Inc. Method and apparatus for compressing intermediate products
US6393554B1 (en) 1998-01-28 2002-05-21 Advanced Micro Devices, Inc. Method and apparatus for performing vector and scalar multiplication and calculating rounded products
US6523055B1 (en) 1999-01-20 2003-02-18 Lsi Logic Corporation Circuit and method for multiplying and accumulating the sum of two products in a single cycle
US7225217B2 (en) * 2001-10-09 2007-05-29 The Regents Of The University Of California Low-power Booth-encoded array multiplier
US9607586B2 (en) 2014-02-18 2017-03-28 Apple Inc. Asymmetric circuitry

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57134774A (en) * 1981-02-13 1982-08-20 Hitachi Ltd Vector operating device
US4484301A (en) * 1981-03-10 1984-11-20 Sperry Corporation Array multiplier operating in one's complement format
JPS60205746A (en) * 1984-03-30 1985-10-17 Toshiba Corp Array multiplier
JPS6297033A (en) * 1985-10-24 1987-05-06 Hitachi Ltd Multiplier
JPS62229440A (en) * 1986-03-31 1987-10-08 Toshiba Corp Array multiplier
GB2189630B (en) * 1986-04-23 1990-02-14 Stc Plc Multiplier
JPS6355627A (en) * 1986-08-27 1988-03-10 Toshiba Corp Semiconductor logic arithmetic unit
US4831577A (en) * 1986-09-17 1989-05-16 Intersil, Inc. Digital multiplier architecture with triple array summation of partial products
US4817029A (en) * 1987-05-11 1989-03-28 United Technologies Corporation Multiple-precision Booth's recode multiplier

Also Published As

Publication number Publication date
BR9000776A (en) 1991-01-22
EP0383965A1 (en) 1990-08-29
CA2006228A1 (en) 1990-08-21
US5070471A (en) 1991-12-03
JPH02247727A (en) 1990-10-03

Similar Documents

Publication Publication Date Title
CA2006228C (en) Multiplier
US5465226A (en) High speed digital parallel multiplier
EP0239899B1 (en) Multiplier array circuit
US5278783A (en) Fast area-efficient multi-bit binary adder with low fan-out signals
US6240438B1 (en) Multiplier circuit for reducing the number of necessary elements without sacrificing high speed capability
US6301600B1 (en) Method and apparatus for dynamic partitionable saturating adder/subtractor
US20060059222A1 (en) Logic entity with two outputs for efficient adder and other macro implementations
US5805491A (en) Fast 4-2 carry save adder using multiplexer logic
US4706211A (en) Digital multiplying circuit
Stelling et al. Implementing multiply-accumulate operation in multiplication time
US7024445B2 (en) Method and apparatus for use in booth-encoded multiplication
US6173304B1 (en) Joint optimization of modified-booth encoder and partial product generator
US4890127A (en) Signed digit adder circuit
US4935892A (en) Divider and arithmetic processing units using signed digit operands
US6484193B1 (en) Fully pipelined parallel multiplier with a fast clock cycle
EP0326414B1 (en) High speed multiplier
US20060242219A1 (en) Asynchronous multiplier
JPH07160476A (en) Partial product generating circuit
JPH11126157A (en) Method and circuit for multiplication
Babu et al. FPGA Implementation of Energy Efficient Approximate Multiplier with Image Processing Applications
US6301597B1 (en) Method and apparatus for saturation in an N-NARY adder/subtractor
JP2553162B2 (en) Adder circuit
JP2681968B2 (en) Arithmetic processing unit
US6272514B1 (en) Method and apparatus for interruption of carry propagation on partition boundaries
JPH0326857B2 (en)

Legal Events

Date Code Title Description
EEER Examination request
MKLA Lapsed