Source: http://www.google.com/patents/US5185713?dq=5,646,839
Timestamp: 2015-07-04 21:11:19
Document Index: 152944233

Matched Legal Cases: ['art=12', 'art=12', 'arts 00', 'art 0', 'art 01', 'art 6', 'art 7', 'art 35', 'art 36', 'art 6', 'art 7', 'art 43', 'art 43', 'art 44']

Patent US5185713 - Product adder for perfoming multiplication of floating point data and ... - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inAdvanced Patent SearchPatentsA product adder includes a data input memory, a multiplier, a shifter, a full adder, an accumulator, and a normalizing circuit. The memory stores two floating-point data. The multiplier performs multiplication of the floating-point data stored in the memory. The shifter converts the product of the multiplier...http://www.google.com/patents/US5185713?utm_source=gb-gplus-sharePatent US5185713 - Product adder for perfoming multiplication of floating point data and addition of fixed point dataAdvanced Patent SearchPublication numberUS5185713 APublication typeGrantApplication numberUS 07/756,922Publication dateFeb 9, 1993Filing dateSep 9, 1991Priority dateSep 19, 1990Fee statusLapsedAlso published asEP0476558A2, EP0476558A3Publication number07756922, 756922, US 5185713 A, US 5185713A, US-A-5185713, US5185713 A, US5185713AInventorsHideki KobunayaOriginal AssigneeNec CorporationExport CitationBiBTeX, EndNote, RefManPatent Citations (6), Non-Patent Citations (2), Referenced by (32), Classifications (7), Legal Events (7) External Links: USPTO, USPTO Assignment, EspacenetProduct adder for perfoming multiplication of floating point data and addition of fixed point data
US 5185713 AAbstract
A product adder includes a data input memory, a multiplier, a shifter, a full adder, an accumulator, and a normalizing circuit. The memory stores two floating-point data. The multiplier performs multiplication of the floating-point data stored in the memory. The shifter converts the product of the multiplier into fixed-point data. The full adder performs cumulative addition of the fixed-point data output from the shifter. The accumulator holds output data from the full adder. The normalizing circuit converts the output data from the accumulator into floating-point data and outputting the converted data.
1. A product adder comprising:a data input memory for storing floating-point data; a multiplier for performing multiplication of the floating-point data stored in said memory; a shifter for converting the product of said multiplier into fixed-point data; a full adder for performing cumulative addition of the fixed-point data output from said shifter; a register for holding output data from said full adder; and a normalizing circuit for converting the output data from said register into floating-point data and outputting the converted data. 2. An adder according to claim 1, wherein said data input memory is constituted by first and second memories each for storing floating-point data.
3. An adder according to claim 1, further comprising a third memory for storing the floating-point data output from said normalizing circuit.
4. An adder according to claim 3, wherein said data input memory and said third memory are constituted by a single common memory.
5. An adder according to claim 4, further comprising first and second registers for temporarily holding the two floating-point data stored in said common memory and supplying the data to said multiplier.
6. An adder according to claim 1, wherein said shifter is a barrel shifter.
The present invention relates to a product adder of a computer and, more particularly, to a product adder for performing multiplication of floating-point data and addition of fixed-point data.
FIG. 5 shows an arrangement of blocks of a conventional product adder, and FIG. 6 shows an arrangement of blocks of another conventional product adder.
Conventionally, a product adder for processing fixed-point data in both multiplication and addition has an arrangement as shown in FIG. 5. An example of execution of
AX1+BX2 (A=0.1100000B, X1=0.1110000B, B=0.1010000B, and X2=0.1010000B where B represents binary notation)
will be described below with reference to FIG. 5.
When addresses of data as inputs to a multiplier are set in pointers 19 and 20, two 8-bit fixed-point data
A=0.1100000, X1=0.1110000
are read out from memories 17 and 18, respectively. A multiplier 16 performs multiplication of the readout fixed-point data and outputs 16-bit fixed-point data
AX1=0.101010000000000B.
Eight upper bits 01010100 of the output data are stored in a register 21, and its eight lower bits 00000000 are stored in a register 22. The contents of the register 22, i.e., the eight lower bits 00000000 are selected by a multiplexer 23 and added to a value (initially, 00000000) stored in an accumulator 25 by a full adder 24. The sum is stored in the accumulator 25.
Subsequently, the contents of the register 21, i.e., the eight upper bits 01010100 are selected by the multiplexer 23 and added to a value (initially, 00000000) stored in an accumulator 26 by the full adder 24. The sum is stored in the accumulator 26. When addresses of data for performing multiplication are set in the pointers 19 and 20, two 8-bit fixed-point data
B=0.1010000B, X2=0.1010000B
are read out from the memories 17 and 18, respectively, and the multiplier 16 performs multiplication of the readout fixed-point data and outputs 16-bit fixed-point data
BX2=0.011001000000000B.
Eight upper bits 00110010 of the output data are stored in the register 21, and its eight lower bits 00000000 are stored in the register 22.
The contents of the register 22, i.e., the eight lower bits 00000000 are selected by the multiplexer 23 and added to 00000000 stored in the accumulator 25 by the full adder 24, i.e., addition 0000000+00000000 is executed by the full adder 24. The sum 00000000 is stored in the accumulator 25. The contents of the register 21, i.e., the eight upper bits 00110010 are selected by the multiplexer 23 and similarly added to 01010100 stored in the accumulator 26 by the full adder 24, i.e., addition 00110010+01010100 is executed by the full adder 24. The sum causes an overflow. Therefore, as overflow processing, a positive maximum value 01111111 is taken as the sum and stored in the accumulator 26. A sum of the values of the accumulators 25 and 26, i.e., 0.111111100000000B is stored as a product sum in the memory 18.
An example of execution of product addition
AX1+BX2 (A=0.11000�200, X1=0.11100�200, B=0.10100�200, and X2=0.10100�200)
performed in a conventional product adder for processing floating-point data in both multiplication and addition will be described below with reference to FIG. 6.
When addresses of input data to a multiplexer 1 are set in pointers 4 and 5, two 8-bit floating-point data
A=0.11000�200, X1=0.11100�200 each having a two-bit exponential part and a six-bit mantissa part are read out from memories 2 and 3, and a multiplier 1 performs multiplication of the readout floating-point data. The product
AX1=0.10101000000�200 (exponential part=two bits, mantissa part=12 bits)
is stored in a register 27. The product AX1 is stored in an accumulator 33 via a switch 30, a barrel shifter 31, and a full adder 32.
When addresses of input data to the multiplier 1 are set in the pointers 4 and 5, two 8-bit floating-point data
B=0.10100�200, X2=0.10100�200 each having a two-bit exponential part and a six-bit mantissa part are read out from the memories 2 and 3, respectively, and the multiplier 1 performs multiplication of the readout floating-point data. The product
BX2=0.01100100000�200 (exponential part=two bits, mantissa part=12 bits)
is stored in the register 27. The value
AX1=0.10101000000�200 (exponential part=two bits, mantissa part=four bits)
of the accumulator 33 is stored in the register 28.
Subsequently, an EAU (Exponent Arithmetic Unit) 29 compares the exponential parts 00B of the data BX2 and AX1 stored in the registers 27 and 28, and the barrel shifter 31 shifts the digits of the mantissa parts of the data AX1 and BX2 so that a smaller exponential part becomes equal to a larger exponential part. In this embodiment, no shifting is performed by the barrel shifter 31 because the two exponential parts are the same.
The full adder 32 performs addition of the mantissa parts of the data AX1 and BX2. That is, 0.10101000000B+0.01100100000B is executed. This sum of the mantissa parts is 1.0001100000B, i.e., causes an overflow. Therefore, the following compensation of floating-point addition is performed. That is, the mantissa part is shifted to the right by one bit by the shifter 34, and "1" is added to the output 00B from the EAU 29 as the exponential part to obtain 01B. The mantissa part 0.10000110000B is stored in 12 lower bits of the accumulator 33, and the exponential part 01B is stored in its two upper bits. The value of the accumulator 33, i.e., 0.10000110000�201 is stored as a product sum in the memory 3.
However, in the above conventional product adder for processing fixed-point data in both multiplication and addition, the number of bits as an output result of the 6-bit x 6-bit multiplier is 12. Therefore, addition is performed twice for the upper and lower bits in the 12-bit full adder, resulting in a low operation speed. In addition, since the number of bits of a product sum is doubled, the size of a memory for storing the sum is increased. Furthermore, the dynamic range of data to be processed is limited to degrade accuracy.
In the above conventional product adder for processing floating-point data in both multiplication and addition, the circuit size is increased, and the size of a memory for storing data is increased.
It is an object of the present invention to provide a product adder in which a circuit size is decreased to increase an operation speed.
It is another object of the present invention to provide a product adder in which a dynamic range can be widened to realize high-accuracy product addition.
It is still another object of the present invention to provide a product adder in which the size of a memory for storing data is decreased.
In order to achieve the above objects of the present invention, there is provided a product adder comprising a data input memory for storing two floating-point data, a multiplier for performing multiplication of the floating-point data stored in the memory, a shifter for converting the product of the multiplier into fixed-point data, a full adder for performing cumulative addition of the fixed-point data output from the shifter, an accumulator for holding output data from the full adder, and a normalizing circuit for converting the output data from the accumulator into floating-point data and outputting the converted data.
FIG. 1 is a block diagram showing an arrangement of a product adder according to an embodiment of the present invention;
FIGS. 2A to 2D are views for explaining an operation of a barrel shifter of the product adder of the present invention;
FIGS. 3A to 3C are views for explaining an operation of a normalizing circuit of the product adder of the present invention;
FIG. 4 is a block diagram showing an arrangement of a product adder according to another embodiment of the present invention;
FIG. 5 is a block diagram showing an arrangement of a conventional product adder; and
FIG. 6 is a block diagram showing an arrangement of a conventional product adder.
Embodiments of the present invention will be described below with reference to the accompanying drawings. FIG. 1 shows an arrangement of blocks of a product adder according to an embodiment of the present invention. Referring to FIG. 1, the product adder comprises memories 2 and 3 as first and second storage devices for storing two floating-point data, and a multiplier 1 for performing multiplication of the floating-point data stored in the memories 2 and 3.
The present invention is characterized by comprising a barrel shifter 8 as a shifter for converting the product of the multiplier 1 into fixed-point data, a full adder 9 for performing cumulative addition of the fixed-point data output from the barrel shifter 8, an register 10 for holding output data from the full adder 9, a normalizing circuit 11 for converting output data from the register 10 into floating-point data, and a third storage circuit for storing the floating-point data output from the normalizing circuit 11.
The memory 3 includes means serving as the third storage circuit for storing the floating-point data output from the normalizing circuit 11.
An operation of the product adder having the above arrangement will be described below. FIGS. 2A to 2D explain an operation of the barrel shifter of the product adder of the present invention, and FIGS. 3A to 3C explain an operation of the normalizing circuit of the product adder of the present invention.
An example of execution of
AX1+BX2 (A=0.11000�200, X1=0.11100�200, B=1.10100�200, and X2=0.10100�200)
in the arrangement shown in FIG. 1 will be described below. In this case, the exponential part represents a negative number. For example, A=0.75�2-0. When addresses of input data to the multiplier 1 are set in the pointers 4 and 5, two 8-bit floating-point data
A=0.11000�200, X1=0.11100�200 each having a two-bit exponential part and a six-bit mantissa part are read out from the memories 2 and 3, respectively, and the multiplier 1 performs multiplication of the readout floating-point data. The product is given by:
AX1=0.10101000000�2000.
This product AX1 {a three-bit (including a carry) exponential part 6 and a 12-bit mantissa part 7} is converted into 12-bit fixed-point data by the barrel shifter 8.
An operation of the barrel shifter 8 will be described below with reference to FIGS. 2A to 2D.
Assume that an exponential part 35 and a mantissa part 36 as shown in FIG. 2A are inputs to the barrel shifter 8. The exponential part is assumed to represent a decimal number n. When the mantissa part is shifted to right by n bits, a shift result 37 is obtained as shown in FIG. 2B. However, the value of the MSB (sign bit) is held. "1" is added by a most significant bit In-1 of round-off bits 38 to perform a carry operation, thereby determining an output from the barrel shifter 8. That is, the output from the barrel shifter is output data 39 shown in FIG. 2C when
In-1 =1
or is output data 40 shown in FIG. 2D otherwise.
As described above, the product
AX1=0.10101000000�200 is converted into 12-bit fixed-point data
AX1=0.10101000000
by the barrel shifter 8, and this data AX1 is subjected to cumulative addition by the full adder 9. The product is stored in the register 10 to set the value of the register 10 to be 0.10101000000. When addresses of input data to the multiplier 1 are set in the pointers 4 and 5, two 8-bit floating-point data
B=1.10100�200, X2=0.10100�200 each having a two-bit exponential part and a six-bit mantissa part are read out from the memories 2 and 3, respectively, and the multiplier 1 performs multiplication of the readout floating-point data. The product is given by:
BX2=1.11000100000�2000.
Similar to the data AX1, this product BX2 {a three-bit (including a carry) exponential part 6 and a 12-bit mantissa part 7} is converted into 12-bit fixed-point data
BX2=1.11000100000
by the barrel shifter 8. The data BX2 converted into the 12-bit fixed-point data is added to the data
stored in the accumulator 10 by the full adder 9. The sum
AX1+BX2=0.01101100000
is stored in the accumulator 10. The data (AX1+BX2) stored in the accumulator 10 is normalized into 8-bit floating-point data having two bits of an exponential part and six bits of a mantissa part by the normalizing circuit 11.
An operation of the normalizing circuit 11 will be described below with reference to FIGS. 3A to 3C.
Assume that 12-bit fixed-point data 41 or fixed-point data 42 as shown in FIG. 3A or 3B is an input to the normalizing circuit 11. If n+1 (n≦3) "1"s or "0"s continue, n is represented by a 2-bit binary number as an exponential part 43, as shown in FIG. 3C. The 12-bit fixed-point data 41 or 42 is barrel-shifted to the left by n bits, and six upper bits are taken as a mantissa part. When round-off bits are present, a carry operation is performed. If the MSB of the round-off bits is "1", "1" is added to the mantissa part. As a result, the exponential part 43 and a mantissa part 44 are obtained as an output.
is converted into 0.11011�201 by the normalizing circuit 11 and stored in the memory 3.
FIG. 4 shows an arrangement of blocks of another embodiment of the present invention. Referring to FIG. 4, a multiplier 1 is connected to registers 13 and 14 for storing input data to the multiplier 1. The output terminal of a memory 12 is connected to the registers 13 and 14.
In the arrangement shown in FIG. 4, when addresses of two input data to the multiplier are set and transferred to the registers 13 and 14 by a pointer 15, data input is started, and an output from a normalizing circuit 11 is stored in the memory 12. In this embodiment, data as an object to be arithmetically operated and an arithmetic operation result are stored in a single common memory.
As has been described above, according to the present invention, since a dynamic range can be widened without increasing a circuit size, product addition can be effectively performed with high accuracy. In addition, since an arithmetic operation result is stored in a memory after it is normalized and converted into floating-point data, the size of a memory can be advantageously decreased.
Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS4683547 *Oct 25, 1984Jul 28, 1987International Business Machines CorporationSpecial accumulate instruction for multiple floating point arithmetic units which use a putaway bus to enhance performanceUS4841467 *Oct 5, 1987Jun 20, 1989General Electric CompanyArchitecture to implement floating point multiply/accumulate operationsUS4866652 *Sep 1, 1987Sep 12, 1989Weitek CorporationFloating point unit using combined multiply and ALU functionsUS4991131 *Oct 6, 1987Feb 5, 1991Industrial Technology Research InstituteMultiplication and accumulation deviceUS4999802 *Jan 13, 1989Mar 12, 1991International Business Machines CorporationFloating point arithmetic two cycle data flowFR2541795A1 * Title not available* Cited by examinerNon-Patent CitationsReference1 *Bernd Wolgast and Manfred Haverland, Schneller Gleitkommarechner fur Vektoroperationen, Elektronik 5, Mar. 6, 1987, pp. 91 100.2Bernd Wolgast and Manfred Haverland, Schneller Gleitkommarechner fur Vektoroperationen, Elektronik 5, Mar. 6, 1987, pp. 91-100.* Cited by examinerReferenced byCiting PatentFiling datePublication dateApplicantTitleUS5400271 *Dec 3, 1992Mar 21, 1995Sony CorporationApparatus for and method of calculating sum of productsUS5666301 *Jun 5, 1995Sep 9, 1997Mitsubishi Denki Kabushiki KaishaMultiplier carrying out numeric calculation at high speedUS5809323 *Sep 19, 1995Sep 15, 1998International Business Machines CorporationMethod and apparatus for executing fixed-point instructions within idle execution units of a superscalar processorUS6205462 *Oct 6, 1999Mar 20, 2001Cradle TechnologiesDigital multiply-accumulate circuit that can operate on both integer and floating point numbers simultaneouslyUS6256655 *Sep 14, 1998Jul 3, 2001Silicon Graphics, Inc.Method and system for performing floating point operations in unnormalized format using a floating point accumulatorUS6631392Jul 30, 1999Oct 7, 2003Mips Technologies, Inc.Method and apparatus for predicting floating-point exceptionsUS6697832Jul 30, 1999Feb 24, 2004Mips Technologies, Inc.Floating-point processor with improved intermediate result handlingUS6714197Jul 30, 1999Mar 30, 2004Mips Technologies, Inc.Processor having an arithmetic extension of an instruction set architectureUS6732259Jul 30, 1999May 4, 2004Mips Technologies, Inc.Processor having a conditional branch extension of an instruction set architectureUS6904446 *Aug 24, 2001Jun 7, 2005Freescale Semiconductor, Inc.Floating point multiplier/accumulator with reduced latency and method thereofUS6912559Jul 30, 1999Jun 28, 2005Mips Technologies, Inc.System and method for improving the accuracy of reciprocal square root operations performed by a floating-point unitUS6996596May 23, 2000Feb 7, 2006Mips Technologies, Inc.Floating-point processor with operating mode having improved accuracy and high performanceUS7080111 *Jun 4, 2001Jul 18, 2006Intel CorporationFloating point multiply accumulatorUS7159100Dec 30, 1998Jan 2, 2007Mips Technologies, Inc.Method for providing extended precision in SIMD vector arithmetic operationsUS7181484Feb 21, 2001Feb 20, 2007Mips Technologies, Inc.Extended-precision accumulation of multiplier outputUS7197625Sep 15, 2000Mar 27, 2007Mips Technologies, Inc.Alignment and ordering of vector elements for single instruction multiple data processingUS7225212Jul 16, 2002May 29, 2007Mips Technologies, Inc.Extended precision accumulatorUS7242414Jul 30, 1999Jul 10, 2007Mips Technologies, Inc.Processor having a compare extension of an instruction set architectureUS7346643 *Jul 30, 1999Mar 18, 2008Mips Technologies, Inc.Processor with improved accuracy for multiply-add operationsUS7546443Jan 24, 2006Jun 9, 2009Mips Technologies, Inc.Providing extended precision in SIMD vector arithmetic operationsUS7599981Feb 21, 2001Oct 6, 2009Mips Technologies, Inc.Binary polynomial multiplierUS7617388Dec 22, 2006Nov 10, 2009Mips Technologies, Inc.Virtual instruction expansion using parameter selector defining logic operation on parameters for template opcode substitutionUS7711763Feb 21, 2001May 4, 2010Mips Technologies, Inc.Microprocessor instructions for performing polynomial arithmetic operationsUS7724261Jun 4, 2007May 25, 2010Mips Technologies, Inc.Processor having a compare extension of an instruction set architectureUS7793077Feb 6, 2007Sep 7, 2010Mips Technologies, Inc.Alignment and ordering of vector elements for single instruction multiple data processingUS7860911Apr 25, 2006Dec 28, 2010Mips Technologies, Inc.Extended precision accumulatorUS8024393Dec 3, 2007Sep 20, 2011Mips Technologies, Inc.Processor with improved accuracy for multiply-add operationsUS8074058Jun 8, 2009Dec 6, 2011Mips Technologies, Inc.Providing extended precision in SIMD vector arithmetic operationsUS8447958Mar 6, 2009May 21, 2013Bridge Crossing, LlcSubstituting portion of template instruction parameter with selected virtual instruction parameterUS20110153995 *Dec 16, 2010Jun 23, 2011Electronics And Telecommunications Research InstituteArithmetic apparatus including multiplication and accumulation, and dsp structure and filtering method using the sameWO2001009712A1 *Jul 24, 2000Feb 8, 2001Mips Tech IncProcessor with improved accuracy for multiply-add operationsWO2001025898A1 *Sep 11, 2000Apr 12, 2001Cradle TechnologiesDigital multiply-accumulate circuit that can operate on both integer and floating point numbers simultaneously* Cited by examinerClassifications U.S. Classification708/501, 708/603International ClassificationG06F17/10, G06F7/544Cooperative ClassificationG06F7/49936, G06F7/5443European ClassificationG06F7/544ALegal EventsDateCodeEventDescriptionSep 9, 1991ASAssignmentOwner name: NEC CORPORATION, JAPANFree format text: ASSIGNMENT OF ASSIGNORS INTEREST.;ASSIGNOR:KOBUNAYA, HIDEKI;REEL/FRAME:005838/0689Effective date: 19910829Aug 9, 1996FPAYFee paymentYear of fee payment: 4Jul 31, 2000FPAYFee paymentYear of fee payment: 8Feb 25, 2003ASAssignmentOwner name: NEC ELECTRONICS CORPORATION, JAPANFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:NEC CORPORATION;REEL/FRAME:013758/0440Effective date: 20021101Aug 25, 2004REMIMaintenance fee reminder mailedFeb 9, 2005LAPSLapse for failure to pay maintenance feesApr 5, 2005FPExpired due to failure to pay maintenance feeEffective date: 20050209RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services