WO2004019534A2 - Method and system for multiplication of binary numbers - Google Patents

Method and system for multiplication of binary numbers Download PDF

Info

Publication number
WO2004019534A2
WO2004019534A2 PCT/IB2003/004524 IB0304524W WO2004019534A2 WO 2004019534 A2 WO2004019534 A2 WO 2004019534A2 IB 0304524 W IB0304524 W IB 0304524W WO 2004019534 A2 WO2004019534 A2 WO 2004019534A2
Authority
WO
WIPO (PCT)
Prior art keywords
signal
triangle array
equal
array
line
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.)
Ceased
Application number
PCT/IB2003/004524
Other languages
French (fr)
Other versions
WO2004019534A3 (en
Inventor
Clemens M. Zierhofer
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.)
MED EL Elektromedizinische Geraete GmbH
Original Assignee
MED EL Elektromedizinische Geraete GmbH
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 MED EL Elektromedizinische Geraete GmbH filed Critical MED EL Elektromedizinische Geraete GmbH
Priority to AU2003269332A priority Critical patent/AU2003269332A1/en
Publication of WO2004019534A2 publication Critical patent/WO2004019534A2/en
Publication of WO2004019534A3 publication Critical patent/WO2004019534A3/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Definitions

  • the present invention relates to an efficient method and system for multiplying binary numbers.
  • the product A*B is the sum of single partial products at particular binary positions.
  • the single partial products are either number B or zero, dependent on the associated bit within number A.
  • the neighboring bit ai 0, and thus the associated partial product is [0 0 0 0 0 000].
  • the array of partial products 102 formed by this common method of multiplication shall be referred to as a "diamond-array".
  • the diamond-array 102 depicted in Fig. 1 requires that 64 digits be added to form the product.
  • Fig. 2 shows multiplication using a well-known Booth scheme.
  • Multiplication using the Booth methodology reduces the number of partial products in a diamond-array by a factor of 2. This is accomplished by representing one of the multiplicands by numbers whose binary weights differ by at least a factor 4.
  • the Booth scheme disadvantageously requires that negative numbers be introduced.
  • the number A is instead represented as 2 8 -2 6 -2*2 2 +2°.
  • the negative partial sums have to be represented as twos compliment numbers. Note that at least every second binary position of A is necessarily zero.
  • the multiplier includes a first port for receiving a first signal representing the binary number a, and a second port for receiving a second signal representing the binary number b.
  • a triangle array is operatively coupled to the first signal and the second signal.
  • An adder adds elements of the triangle array to produce a third signal representing a product of the first signal and the second signal.
  • the processor includes input means for receiving the first signal and the second signal.
  • the processor also includes means for forming a triangle array as a function of the first signal and the second signal.
  • An adder adds elements of the triangle array to form a third signal representing a product of the first signal and the second signal.
  • the method includes receiving the first signal and the second signal.
  • the computer program product includes a computer usable medium having computer readable program code thereon.
  • the triangle array thus formed may be represented by a number of digits that is approximately 20-50% less than the number of digits required in a diamond array.
  • Fig. 1 depicts prior art multiplication of two N-bit binary numbers A and B;
  • Fig. 2 depicts prior art multiplication of the binary numbers A and B employing Booth's algorithm
  • Fig. 3 depicts diamond arrays with rotated V's, in accordance with one embodiment of the invention
  • Fig. 4 is a table that shows possible peak-bit and branch configurations of a V, in accordance with one embodiment of the invention.
  • Fig. 5 depicts the addition of two branch numbers without the most significant bit, resulting in a sum sequence and a carry sequence, in accordance with one embodiment of the invention
  • Fig. 6 depicts lower branch values when multiplying the numbers A and B, in accordance with one embodiment of the invention
  • Fig. 7 depicts a resulting multiplication scheme prior to removal of zero bits positioned above pairs of peak-bits, in accordance with one embodiment of the invention
  • Fig. 8 depicts a resulting multiplication scheme with zero bits positioned above the pairs of peak-bits removed, in accordance with one embodiment of the invention
  • Fig. 9 is a table depicting the switching of bit sequences based on bits a k and b , in accordance with one embodiment of the invention
  • Fig. 10 is a block diagram of a multiplier for multiplying a first binary number and a second binary number, in accordance with one embodiment of the invention.
  • a method and system for efficiently multiplying binary numbers is presented.
  • the method and system includes reducing the number of digits used in connection with partial products formed during multiplication. Details of various embodiments are discussed below.
  • Fig. 3 shows an advantageous way of looking at the diamond-array 102 of Fig.l, in accordance with one embodiment of the invention.
  • the array can be regarded as composed of structures similar to "rotated N's", whose peaks are looking to the left-lower corner.
  • the N's have the following general properties:
  • Each N has one peak-bit 301 and two branches 303 and 304 with an equal number of bits, respectively.
  • the number of bits within a branch can also be zero.
  • a N may consists of only the peak-bit.
  • the peak-bit 301 of each N is the product of the bits of equal binary position within numbers A and B, respectively.
  • two N's 301 are highlighted.
  • the branches 303 and 304 include either truncated versions of numbers A or B, or zeros only.
  • the N 301 with peak-bit "1" has an upper branch containing 7 bits of A (i.e., [a 6 ...
  • aj a 0 ] [0 1 0 1 00 1])
  • Fig. 4 is a table that shows these four configurations, in accordance with one embodiment of the invention.
  • bits a and b can be regarded as switches, where bits a k activate or deactivate the truncated versions of number B, and bits b activate or deactivate the truncated versions of number A.
  • upper and lower branches of the N's can be flipped arbitrarily, without changing the overall sum. For example, all zero-branches can be flipped such that they become upper branches. This causes a concentration of zeros in the upper left area of the diamond-array, that is, the region above the line of peak-bit elements. Only branches of N's whose peak-bit is "1" may contain non-zero elements in this region. To also remove these, the two branches are added, and the sum positioned in the lower branches. This addition does not need to be done individually for each N of particular length. Instead, it can be done once by adding sequences [a ⁇ - • • ⁇ ai ao] and [b ⁇ - ...
  • the multiplication scheme looks like Fig.7, in accordance with one embodiment of the invention. Note that the single peak-bits are replaced by a pair of bits (bold).
  • Fig. 10 shows a block diagram of a multiplier 1000 for multiplying a first signal and a second signal, in accordance with one embodiment of the invention.
  • Multiplier may be, without limitation, a device such as a communications device, a signal processor, a microprocessor, central processor, and/or computer for operating on data signals.
  • the multiplier includes a first port 1001 for receiving the first signal 1005.
  • a second port 1002 receives the second signal 1006.
  • the triangle array 1003 may be represented in, without limitation, a tangible medium, such as a register and/or computer readable medium.
  • the triangle- array 1003 may be stored, without limitation, on a diskette, CD-ROM, ROM, RAM, or fixed disk.
  • Each digit in the triangle-array below the pairs of peak-bits may be controlled by bits a and b k according to the table shown in Fig. 9, in accordance with one embodiment of the invention.
  • Such control may be implemented using a multiplexer for each digit, which may be a 4 to 1 multiplexer.
  • the inputs into the multiplexer can be [0 0 . . . 0], [a k - ⁇ ... ai a 0 ], [b - ⁇ ... bj bo], or [s k - 2 ... si so], which are controlled by a and b k .
  • An adder 1004 adds the lines k in the triangle-array 1003 to produce a third signal 1007.
  • the third signal 1007 represents a product of the first signal 1005 and the second signal 1006.
  • the multiplier may include an additional (k-l)-bit adder for addition of numbers A and B without most significant bit's to compute the sum sequence [SN- 2 ... si so], and the carry-sequence [CN-I ⁇ • • c 2 c ⁇ ]. See Fig. 5 and accompanying text for details regarding the sum and carry sequence. Squaring of binary numbers represents a special case of the method and system described herein.
  • N's In a squaring scheme, only symmetrical N's occur, that is, they are composed of either 2 branches of zeros, or 2 branches each containing a truncated version of the number to be squared.
  • the adder to compute the sum-sequence [S ⁇ - 2 ... si So] and the carry-sequence [CN- I ⁇ .. C 2 ci] can be omitted, since the addition of two equal numbers can trivially be achieved by shifting the number to the left and adding a tailing zero.
  • the 4-to-l multiplexers can be replaced by simple AND-gates.
  • the disclosed system and method for multiplying binary numbers may be implemented as a computer program product for use with a computer system or processor.
  • Such implementation may include a series of computer instructions fixed either on a tangible medium, such as a computer readable medium (e.g., a diskette, CD-ROM, ROM, or fixed disk) or transmittable to a computer system, via a modem or other interface device, such as a communications adaptor connected to a network over a medium.
  • the medium may be either a tangible (e.g., optical or analog communications lines) or a medium implemented with wireless techniques (e.g., microwave, infrared, or other transmission techniques).
  • the series of computer instructions embodies all or part of the functionality previously described herein with respect to the system and method.
  • Those skilled in the art should appreciate that such computer instructions can be written in a number of programming languages for use with may computer architectures or operating systems. Further, such instructions may be stored in any memory device, such as a semiconductor, magnetic, optical or other memory devices, and may be transmitted using any communications technology, such as optical, infrared, microwave, or other transmission technologies.
  • Such a computer program product may be distributed as a removable medium with accompanying printed or electronic documentation (e.g., shrink wrapped software), pre-loaded with a computer system (e.g., on system ROM or fixed disk), or distributed from a server or electronic bulletin board over a network (e.g., the Internet or World Wide Web).
  • a computer system e.g., on system ROM or fixed disk
  • a server or electronic bulletin board e.g., the Internet or World Wide Web
  • some embodiments of the invention may be implemented as a combination of both software (e.g., a computer program product) and hardware. Still other embodiments of the invention are implemented as entirely hardware, as discussed previously, or entirely software (e.g., a computer program product).

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)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

A multiplier for multiplying a first signal representing a first binary number a = [aN_1 ... al ao] and a second signal representing a second binary number b = [bN_1 ... bl bo]. The multiplier includes a first port for receiving the first signal, and a second port for receiving the second signal. A triangle array is operatively coupled to the first signal and the second signal. An adder adds elements of the triangle array to produce a third signal representing a product of the first signal and the second signal.

Description

Attorney Docket: 1941/164WO
Method and System for Multiplication of Binary Numbers
Technical Field
The present invention relates to an efficient method and system for multiplying binary numbers.
Background Art
Two N-bit binary numbers A = [a>j-ι ajM-2 ... ai a0] and B = [bN-i bN-2 ... bi b0] are commonly multiplied as shown in Fig.l (prior art). Here, the multiplication of two 8-bit numbers A = 185dec = [1 0 1 1 1 0 0 1] and B = 237dec = [1 1 1 0 1 1 0 1] to form a product 104 is depicted.
The product A*B is the sum of single partial products at particular binary positions. The single partial products are either number B or zero, dependent on the associated bit within number A. For example, the LSB of A, a0 = 1, and thus the partial product at binary position 2° is number B = [1 1 1 0 1 1 0 1]. The neighboring bit ai = 0, and thus the associated partial product is [0 0 0 0 0 000]. As used in this description and the accompanying claims, the array of partial products 102 formed by this common method of multiplication shall be referred to as a "diamond-array". The diamond-array 102 depicted in Fig. 1 requires that 64 digits be added to form the product. Fig. 2 (prior art) shows multiplication using a well-known Booth scheme.
Multiplication using the Booth methodology reduces the number of partial products in a diamond-array by a factor of 2. This is accomplished by representing one of the multiplicands by numbers whose binary weights differ by at least a factor 4. However, the Booth scheme disadvantageously requires that negative numbers be introduced. For example, number A = 185dec = [1 0 1 1 1 0 0 1] is commonly regarded as a sum of positive terms: 27+25+24+23+2°. Following the Booth scheme, the number A is instead represented as 28-26-2*22+2°. Thus, the negative partial sums have to be represented as twos compliment numbers. Note that at least every second binary position of A is necessarily zero. However, the representation of negative numbers by twos compliment requires leading sequences of ones, which significantly reduce the benefit of the approximately 50% reduction in the number of partial products 201. For N = 8, 60 digits remain to be added using the Booth methodology.
Summary
In accordance with one aspect of the invention, a multiplier for multiplying a first binary number a = [a -i ... &ι a0] and a second binary number b = [b^.\ ... bi bn] is presented. The multiplier includes a first port for receiving a first signal representing the binary number a, and a second port for receiving a second signal representing the binary number b. A triangle array is operatively coupled to the first signal and the second signal. An adder adds elements of the triangle array to produce a third signal representing a product of the first signal and the second signal.
In accordance with another aspect of the invention, a processor for multiplying a first signal representing a first binary number a = [an-i • • • ai a0] and a second signal representing a second binary number b = [bn-i ■ • • bi b0] is presented. The processor includes input means for receiving the first signal and the second signal. The processor also includes means for forming a triangle array as a function of the first signal and the second signal. An adder adds elements of the triangle array to form a third signal representing a product of the first signal and the second signal.
In accordance with still another aspect of the invention, a method for performing digital signal processing that requires multiplication of a first signal representing a first binary number a = [aκ-ι ... &\ a0] and a second signal representing a second binary number b = [DN-I • • • bi bo] is presented. The method includes receiving the first signal and the second signal. A triangle array is formed from the first binary number and the second binary number, the triangle array including lines k = 0 to N-l. The lines k = 0 to N-l are added to produce a third signal representing a product of the first signal and the second signal.
In accordance with yet another aspect of the invention, a computer program product for use on a computer system for multiplying a first binary number a =
Figure imgf000003_0001
... ai a0] and a second binary number b = [b -1 • ■ • bi b0] is presented. The computer program product includes a computer usable medium having computer readable program code thereon. The computer readable program code includes program code for forming a triangle array from the first binary number and the second binary number, the triangle array including lines k = 0 to N-l . The computer readable program code also includes program code for adding lines k = 0 to N-l . In accordance with embodiments related to the above-described embodiments of the invention, the triangle array includes lines k = 0 to N-l, such that line k = 0 of the triangle array is equal to [0 (a0 *b0)]; and the lines k = 1 to N-l of the triangle array are equal to [pi pO d -ι ... di d0]. The peak bits [p] pO] for each line k are determined by [pi pO] = [0 0] if ak *bk ≠ 1; [pi pO] = [1 0] if [ak *bk = 1 AND ck = 1]; and [pi pO] = [0 1] if [ak * bk = 1 AND c = 0]. The bits [dk-1 ... di do] for each line k are determined by: [d -ι ■ ■ • di d0] = [0k-ι ...Oo] if [ak bk] = [0 0]; [dk-ι ... di d0] = [aM ... at a0] if [ak bj = [0 1]; [dk-ι ... di do] = [bk-ι ... bi b0] if [ak bk] = [1 0]; and [dk-ι ... di d0] = [sk-ι ... si s0] if [ak b ] = [1 1]. The sequence s = [SN- ... SI so] is equal to the sum sequence [(aN_ + b -2) ■ • • (aι+bι) (a0+bo)] and c = [CN-I • . • ci] is equal to the carry sequence associated with the sum sequence s. The triangle array thus formed may be represented by a number of digits that is approximately 20-50% less than the number of digits required in a diamond array.
Brief Description of the Drawings
The foregoing features of the invention will be more readily understood by reference to the following detailed description, taken with reference to the accompanying drawings, in which:
Fig. 1 depicts prior art multiplication of two N-bit binary numbers A and B;
Fig. 2 depicts prior art multiplication of the binary numbers A and B employing Booth's algorithm; Fig. 3 depicts diamond arrays with rotated V's, in accordance with one embodiment of the invention;
Fig. 4 is a table that shows possible peak-bit and branch configurations of a V, in accordance with one embodiment of the invention;
Fig. 5 depicts the addition of two branch numbers without the most significant bit, resulting in a sum sequence and a carry sequence, in accordance with one embodiment of the invention;
Fig. 6 depicts lower branch values when multiplying the numbers A and B, in accordance with one embodiment of the invention; Fig. 7 depicts a resulting multiplication scheme prior to removal of zero bits positioned above pairs of peak-bits, in accordance with one embodiment of the invention;
Fig. 8 depicts a resulting multiplication scheme with zero bits positioned above the pairs of peak-bits removed, in accordance with one embodiment of the invention; Fig. 9 is a table depicting the switching of bit sequences based on bits ak and b , in accordance with one embodiment of the invention;
Fig. 10 is a block diagram of a multiplier for multiplying a first binary number and a second binary number, in accordance with one embodiment of the invention.
Description A method and system for efficiently multiplying binary numbers is presented. In particular, the method and system includes reducing the number of digits used in connection with partial products formed during multiplication. Details of various embodiments are discussed below.
Fig. 3 shows an advantageous way of looking at the diamond-array 102 of Fig.l, in accordance with one embodiment of the invention. Instead of looking at the lines of the array, the array can be regarded as composed of structures similar to "rotated N's", whose peaks are looking to the left-lower corner. The N's have the following general properties:
(1) Each N has one peak-bit 301 and two branches 303 and 304 with an equal number of bits, respectively. The number of bits within a branch can also be zero. For example, a N may consists of only the peak-bit.
(2) The peak-bit 301 of each N is the product of the bits of equal binary position within numbers A and B, respectively. In Fig.3, two N's 301 are highlighted. The corresponding peak-bits (bold) 301 are the products of the first bits (MSB) a7b7 = 1, and bits a3b3 = 0, respectively (see Fig. 4, discussed below). (3) The branches 303 and 304 include either truncated versions of numbers A or B, or zeros only. In Fig.3, the N 301 with peak-bit "1" has an upper branch containing 7 bits of A (i.e., [a6 ... aj a0]= [0 1 0 1 00 1]), and a lower branch consisting of 7 bits of B (i.e., [b6 ... bi bo] = [1 1 0 1 1 0 1]). The N 301 with peak bit "0" shows an upper branch 303 composed of 4 zeros (i.e., [0000] ) and a lower branch 304 composed of 4 bits of A (i.e., [b3 b2 bi b0] = [1 1 0 1]). (4) Four possible configurations can occur, determined by the two bits within A and B, that can be used to determine the peak-bit. Fig. 4 is a table that shows these four configurations, in accordance with one embodiment of the invention.
(5) The overall diamond-array is fully covered by exactly N non-overlapping Vs.
The N's are defined by bits ak and b at binary position k in numbers A and B, as summarized in Fig. 4. If both bits a and bk are zero, both branches contain only zeros. For ak = 0 and b = 1, bit sequence [ak-ι ... ai ao] appears in the upper branch, and for ak = 1 and bk = 0, sequence [b -ι ... bi bo] appears in the lower branch. For ak = 1 and b = 1, both sequences [ak-ι ... ai ao] and [bk-ι ... bi bo] have to be considered. In general, bits a and b can be regarded as switches, where bits ak activate or deactivate the truncated versions of number B, and bits b activate or deactivate the truncated versions of number A.
Using the commutative law, upper and lower branches of the N's can be flipped arbitrarily, without changing the overall sum. For example, all zero-branches can be flipped such that they become upper branches. This causes a concentration of zeros in the upper left area of the diamond-array, that is, the region above the line of peak-bit elements. Only branches of N's whose peak-bit is "1" may contain non-zero elements in this region. To also remove these, the two branches are added, and the sum positioned in the lower branches. This addition does not need to be done individually for each N of particular length. Instead, it can be done once by adding sequences [aκ- • • ■ ai ao] and [bΝ- ... bi bo], for example, numbers A and B without the most significant bit, respectively. The results are sum-sequence [SN-2 ... si so], and the carry-sequence [CN-I • ■ • c2 ci]. For the present example, these sequences are shown in Fig.5. The carries at each bit position are of interest, since different N's have different lengths of branches. If the overall carry after addition of the two branches is "1", the binary position of this carry is equal to the binary position of the peak-bit "1". Addition of the two "l's" results in "10". This leads to the following simple rule: if a carry appears, the peak-bit "1" is shifted one position to the left. In the following, single peak-bits are replaced by pairs of peak-bits [pi po]. The resulting "lower branches" 602 are summarized for all branch-lengths in Fig. 6, in accordance with one embodiment of the invention. Note that the first two bits in each line of lower branches 602 in Fig. 6 represent the pair of peak-bits [pi pO] (bold), which are either "01" (no carry) or "10" (with carry). The remaining bits are bit sequences from the sum in Fig. 5, ranging from lengths 1 to 7.
After flipping branches of N's with peak-bit "0" as described above, and representing N's with peak-bit "1" as lower branches 602 according to Fig.6, the multiplication scheme looks like Fig.7, in accordance with one embodiment of the invention. Note that the single peak-bits are replaced by a pair of bits (bold).
Now all bits above the pairs of peak-bits are zero and thus can be omitted as shown in Fig.8, in accordance with one embodiment of the invention. As used in this description and the accompanying claims, the resulting array shall generally be referred to as a "triangle-array."
As compared to the scheme depicted in Fig.l, the diamond-array 102 with exactly
2 N(N + 3) N = 64 digits has changed to the triangle-array 801 with exactly = 44 digits, a
bit-reduction of approximately 30%. For larger N, a bit-reduction of roughly 50% may be achieved. This reduction also compares favorably to the Booth-algorithm, which requires 60 digits to be added for N = 8, considerably more than the 44 digits required for N = 8 in the present invention.
Fig. 10 shows a block diagram of a multiplier 1000 for multiplying a first signal and a second signal, in accordance with one embodiment of the invention. The first signal represents a first binary number a = [aN-i ... ai ao], and the second signal represents a second binary number b = [DN-I ... bi bo] . Multiplier may be, without limitation, a device such as a communications device, a signal processor, a microprocessor, central processor, and/or computer for operating on data signals.
The multiplier includes a first port 1001 for receiving the first signal 1005. A second port 1002 receives the second signal 1006.
Operatively coupled to the first port 1001 and the second port 1002 is a triangle- array 1003. The triangle array 1003 may be represented in, without limitation, a tangible medium, such as a register and/or computer readable medium. For example, the triangle- array 1003 may be stored, without limitation, on a diskette, CD-ROM, ROM, RAM, or fixed disk.
The triangle array 1003 includes lines k = 0 to N-l. Line k = 0 of the triangle array is equal to [0 (a0 *b0)]. Line k = 0 equal to [pi po] = [1 1] cannot occur. Lines k = 1 to N-l of the triangle array are equal to [pi pO dκ-ι ... i do]. The pair of peak-bits [pi po] in each line k = 1 to N-l is different from [00], only if ak*b = 1 • When a *bk = 1, [pi p0] = [0 1] for ck = 0, and [pi p0] = [1 0] for ck = 1.
Each digit in the triangle-array below the pairs of peak-bits (i.e., [d -ι ... di d0]) may be controlled by bits a and bk according to the table shown in Fig. 9, in accordance with one embodiment of the invention. In particular, for each line k, [dk-ι ... di do] is set to: all zeros, if [ak bk] = [0 0]; [ak_ι ... ai a0] if [ak bk] = [0 1]; [bk-ι ... bi b0] if [ak bk] = [1 0]; or [sk-ι ... si so] if [a bk] = [1 1]. Such control may be implemented using a multiplexer for each digit, which may be a 4 to 1 multiplexer. The inputs into the multiplexer can be [0 0 . . . 0], [ak-ι ... ai a0], [b -ι ... bj bo], or [sk-2 ... si so], which are controlled by a and bk.
An adder 1004 adds the lines k in the triangle-array 1003 to produce a third signal 1007. The third signal 1007 represents a product of the first signal 1005 and the second signal 1006. In accordance with various embodiments of the invention, the multiplier may include an additional (k-l)-bit adder for addition of numbers A and B without most significant bit's to compute the sum sequence [SN-2 ... si so], and the carry-sequence [CN-I ■ • • c2cι]. See Fig. 5 and accompanying text for details regarding the sum and carry sequence. Squaring of binary numbers represents a special case of the method and system described herein. In a squaring scheme, only symmetrical N's occur, that is, they are composed of either 2 branches of zeros, or 2 branches each containing a truncated version of the number to be squared. The adder to compute the sum-sequence [SΝ-2 ... si So] and the carry-sequence [CN-I ■ .. C2 ci] can be omitted, since the addition of two equal numbers can trivially be achieved by shifting the number to the left and adding a tailing zero. Additionally, the 4-to-l multiplexers can be replaced by simple AND-gates.
In various embodiments of the invention, the disclosed system and method for multiplying binary numbers may be implemented as a computer program product for use with a computer system or processor. Such implementation may include a series of computer instructions fixed either on a tangible medium, such as a computer readable medium (e.g., a diskette, CD-ROM, ROM, or fixed disk) or transmittable to a computer system, via a modem or other interface device, such as a communications adaptor connected to a network over a medium. The medium may be either a tangible (e.g., optical or analog communications lines) or a medium implemented with wireless techniques (e.g., microwave, infrared, or other transmission techniques). The series of computer instructions embodies all or part of the functionality previously described herein with respect to the system and method. Those skilled in the art should appreciate that such computer instructions can be written in a number of programming languages for use with may computer architectures or operating systems. Further, such instructions may be stored in any memory device, such as a semiconductor, magnetic, optical or other memory devices, and may be transmitted using any communications technology, such as optical, infrared, microwave, or other transmission technologies. It is expected that such a computer program product may be distributed as a removable medium with accompanying printed or electronic documentation (e.g., shrink wrapped software), pre-loaded with a computer system (e.g., on system ROM or fixed disk), or distributed from a server or electronic bulletin board over a network (e.g., the Internet or World Wide Web). Of course, some embodiments of the invention may be implemented as a combination of both software (e.g., a computer program product) and hardware. Still other embodiments of the invention are implemented as entirely hardware, as discussed previously, or entirely software (e.g., a computer program product).
The present invention may be embodied in still other specific forms without departing from the true scope of the invention. The described embodiments are to be considered in all respects only as illustrative and not restrictive.

Claims

What is claimed is:
1. A multiplier for multiplying a first signal and a second signal, the first signal representing a first binary number a = [a -i ... ai a0], the second signal representing a second binary number b = [bκr-ι ■ • • bi bo], the multiplier comprising: a first port for receiving the first signal; a second port for receiving the second signal; a triangle array operatively coupled to the first signal and the second signal; and an adder for adding elements of the triangle array to produce a third signal representing a product of the first signal and the second signal.
2. The multiplier according to claim 1, wherein the triangle array includes lines k = 0 to N-l, such that: the line k = 0 of the triangle array is equal to [0 (a0 * bo)] ; and the lines k = 1 to N-l of the triangle array are equal to [pi pO dk-ι ... di do], wherein the peak bits [pi pO] for each line k are determined by:
[pl P0] = [0 0] if ak *bk ≠ l,
[pi pO] = [1 0] if [ak *b = 1 AND ck = 1], and
[pi pO] = [0 1] if [ak *bk = 1 AND ck = 0], wherein [dk-ι ... di do] for each line k are determined by:
[dk-i ... di do] = [ k-i ...00] if [ak bk] = [0 0],
[d -! ... di do] = [ak-ι ... ai a0] if [ak bk] = [0 1],
[d -j ... di do] = [bk-ι ... bi b0] if [ak bk] = [1 0], and
[dk-! ... di d0] = [sk-i ... si s0] if [ak bk] = [1 1], and wherein s = [S -2 ... SI so] is equal to the sum sequence [(a^.2 + bN-2) ... (aι+bι) (ao+bo)] and c = [CN-I ... ci] is equal to the carry sequence associated with the sum sequence s.
3. The multiplier according to claim 2, further comprising a second adder for producing the sum sequence s and the carry sequence c.
4. The multiplier according to claim 2, further comprising at least one multiplexer for producing [dk-ι ... di d0] for each line k.
5. The multiplier according to claim 4, wherein the multiplexer is a four to one multiplexer having as inputs 0, the first signal, the second signal, and the sum sequence s, the multiplexer controlled by [ak bk].
6. The multiplier according to claim 1, wherein the triangle array is represented by a number of digits that is substantially 30% less than the number of digits required in a diamond array.
7. The multiplier according to claim 1, wherein the triangle array is represented by a number of digits that is substantially 50% less than the number of digits required in a diamond array.
8. A processor for multiplying a first signal and a second signal, the first signal representing a first binary number a = [aκ-ι ... ai a0], the second signal representing a second binary number b = [bπ-i ... bi bo], the processor comprising: input means for receiving the first signal and the second signal; means for forming a triangle array as a function of the first signal and the second signal; and an adder for adding elements of the triangle array to form a third signal representing a product of the first signal and the second signal.
9. The processor according to claim 8, wherein the triangle array includes lines k = [0 1 ... N-l], such that: the line k = 0 of the triangle array is equal to [0 (ao *bo)] ; and the lines k = 1 to N-l of the triangle array are equal to [pi pO dk-ι ... di do], wherein the peak bits [pi pO] for each line k are determined by:
[pι p0] = [0 0] if ak ,bk ≠ l,
[pi pO] = [1 0] if [ak *bk = 1 AND ck = 1], and
[pi pO] = [0 1] if [ak , bk = 1 AND ck = 0], wherein [dk-ι ... di do] for each line k are determined by:
[dk-t ... dt do] = [0k-t ...Oo] if [ak bk] = [0 0],
[dk-ι ... di do] = [ak-ι ... ai a0] if [ak bk] = [0 1],
[dk-! ... dϊ do] = [bk-i ... bi b0] if [ak bj = [1 0], and
[dk-ι ... di d0] = [sk-ϊ ... S! so] if [ak bk] = [1 1], and wherein s = [s>j-2 . ■ • Si so] equal to the sum sequence [(aχ-2 + bN-2) ... (aι+bι) (ao+bo)] and c = [cN-ι ... ci] is equal to the carry sequence associated with the sum sequence s.
10. The processor according to claim 9, wherein the means for forming the triangle array include a second adder for producing the sum sequence s and the carry sequence c.
11. The processor according to claim 9, wherein the means for forming the triangle array includes at least one multiplexer for producing [dk-ι ... di do] for each line k.
12. The processor according to claim 11, wherein the multiplexer is a four to one multiplexer having as inputs 0, the first signal, the second signal, and the sum sequence s, the multiplexer controlled by [a bk] .
13. The processor according to claim 8, wherein the triangle array is represented by a number of digits that is substantially 30% less than the number of digits required in a diamond array.
14. The processor according to claim 8, wherein the triangle array is represented by a number of digits that is substantially 50% less than the number of digits required in a diamond array.
15. A computer program product for use on a computer system for multiplying a first binary number a = [aN-i ... ai a0] and a second binary number b = [bw-j ... bj bo], the computer program product comprising a computer usable medium having computer readable program code thereon, the computer readable program code comprising: program code for forming a triangle array from the first binary number and the second binary number, the triangle array including lines k = 0 to N-l; and program code for adding lines k = 0 to N-l.
16. The computer program product according to claim 15, wherein the program code for forming the triangle array includes: program code for producing line k = 0, wherein line k=0 is equal to [0 (ao * bo)] ; program code for producing lines k = 1 to N-l of the triangle array, wherein lines k=l to N-l are equal to [pi pO d -ι ... di do], wherein the peak bits [p] pO] for each line k are determined by: tpι p0] = [0 0] if ak *bk ≠ l,
[pi pO] = [1 0] if [ak *bk = 1 AND ck = 1], and
[pi pO] = [0 1] if [ak *bk = 1 AND ck = 0], wherein [d -ι ... di d0] for each line k are determined by:
[dk-ι ... di d0] = [0k-ι ...00] if [ak bk] = [00],
[dk-ι ... di d0] = [a -ι ... ai a0] if [ak bj = [0 1],
[dk-ι ... di d0] = [b -ι ... bi b0] if [ak bk] = [1 0], and
[dk-ι ... di do] = [sk-ι ... si s0] if [ak bk] = [1 1], and wherein s = [SN-2 ... si so] is equal to the sum sequence [(aN-2 + bκ-2) ■ • ■ (ai+bi) (ao+bo)] and c = [CN-I ... Ci] is equal to the carry sequence associated with the sum sequence s.
17. A method for performing signal processing that requires multiplication of a first signal representing a binary number a = [a -ι ... ai ao] and a second signal representing a second binary number b = [bN-i ... bi bo], the method comprising: receiving the first signal; receiving the second signal; forming a triangle array from the signal and the second signal, the triangle array including lines k = 0 to N-l; and adding lines k = 0 to N-l .
18. The method according to claim 17, wherein forming the triangle array includes: producing line k = 0 of the triangle array such that line k = 0 is equal to [0 (a0 * bo)] ; producing lines k = 1 to N-l of the triangle array such that lines k = 1 to N-l are equal to [pi pO d -! ... d] do], wherein the peak bits [pi po] for each line k are determined by:
[pι p0] = [0 0] if ak *bk ≠ l,
[pi pO] = [1 0] if [ak , bk = 1 AND ck = 1], and
[pi P0] = [0 1] if [ak , bk = 1 AND ck = 0], wherein [dk-ι ... di do] for each line k are determined by: [dk_χ ... di do] = [On ...Oo] if [ak bj = [0 0],
[dk-i ... di d0] = [ak-ι ... ai a0] if [ak bj = [0 1],
[dk-i ... di d0] = [bk-i ... bi b0] if [ak bk] = [1 0], and
[dk.i ... di do] = [Sk-i ... si so] if [ak bk] = [1 1], and wherein s = [SN-2 ... si So] is equal to the sum sequence [(aκ-2 + bk-2) ... (ai+bi) (ao+bo)] and c = [CN-I ... CJ Co] is equal to the carry sequence associated with the sum sequence s.
PCT/IB2003/004524 2002-08-22 2003-08-22 Method and system for multiplication of binary numbers Ceased WO2004019534A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2003269332A AU2003269332A1 (en) 2002-08-22 2003-08-22 Method and system for multiplication of binary numbers

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US40524102P 2002-08-22 2002-08-22
US60/405,241 2002-08-22

Publications (2)

Publication Number Publication Date
WO2004019534A2 true WO2004019534A2 (en) 2004-03-04
WO2004019534A3 WO2004019534A3 (en) 2004-10-28

Family

ID=31946833

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2003/004524 Ceased WO2004019534A2 (en) 2002-08-22 2003-08-22 Method and system for multiplication of binary numbers

Country Status (2)

Country Link
AU (1) AU2003269332A1 (en)
WO (1) WO2004019534A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116263745A (en) * 2021-12-15 2023-06-16 铠侠股份有限公司 operating system

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4831577A (en) * 1986-09-17 1989-05-16 Intersil, Inc. Digital multiplier architecture with triple array summation of partial products
US5285271A (en) * 1991-05-14 1994-02-08 Hewlett-Packard Company Digital color matrixing circuit
US5343416A (en) * 1992-11-02 1994-08-30 Intel Corporation Method and apparatus for re-configuring a partial product reduction tree

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116263745A (en) * 2021-12-15 2023-06-16 铠侠股份有限公司 operating system

Also Published As

Publication number Publication date
AU2003269332A1 (en) 2004-03-11
WO2004019534A3 (en) 2004-10-28
AU2003269332A8 (en) 2004-03-11

Similar Documents

Publication Publication Date Title
EP0018519B1 (en) Multiplier apparatus having a carry-save/propagate adder
US5844826A (en) Leading zero count circuit
CN104423926A (en) Floating-point adder circuitry
US6754689B2 (en) Method and apparatus for performing subtraction in redundant form arithmetic
US10037189B2 (en) Distributed double-precision floating-point multiplication
US5761104A (en) Computer processor having a pipelined architecture which utilizes feedback and method of using same
KR100302093B1 (en) How to multiply the binary input signal with the tap coefficient in the crossover digital finite impulse response filter and design the circuit arrangement and crossover digital filter
US4346451A (en) Dual moduli exponent transform type high speed multiplication system
JP4210378B2 (en) Galois field multiplier and Galois field multiplication method
EP1866741B1 (en) Canonical signed digit multiplier
US5862068A (en) Arithmetic circuit for calculating a square-root of a sum of squares
CN100440136C (en) arithmetic unit
WO1995005633A2 (en) Carry-look-ahead adder with reduces number of stages
WO2004019534A2 (en) Method and system for multiplication of binary numbers
KR0146656B1 (en) Multi-nary or logic device
US5696986A (en) Computer processor utilizing logarithmic conversion and method of use thereof
US20040128336A1 (en) Method and system for multiplication of binary numbers
RU2316042C1 (en) Device for multiplying numbers with arbitrary modulus
EP3073369B1 (en) Combined adder and pre-adder for high-radix multiplier circuit
JPH0519170B2 (en)
KR0129751B1 (en) Apparatus and Method for Encoding and Decoding Data in Surplus Water Systems
JP2645422B2 (en) Floating point processor
JPH067375B2 (en) Arithmetic circuit
EP0353041A2 (en) Signal processing apparatus and method using modified signed digit arithmetic
RU2837596C1 (en) Multichannel accumulator by arbitrary modules

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP