US5757686A
Expired / Lapsed
US
⏱️ 0.0 years remaining
Method of decoupling the high order portion of the addend from the multiply result in an FMAC
Assignee: Hewlett Packard Enterprise Development LP
•
Filing: 1995-11-30
•
Granted: 1998-05-26
•
Expires: 2015-11-30
Abstract
Abstract A method and apparatus for decoupling the high order portion of the addend from the multiply result in an FMAC (floating-point multiply accumulate unit) such that the FMAC's datapath width is bounded to "2m+1"-bits, and the maximum width of required adders, shifters and leading bit anticipators is also bounded to "2m+1"-bits. The method and apparatus 1) reduce the necessary chip area for implementing an FMAC, and 2) reduce the length of routing paths through adders and shifters.
Inventors
- 👤 Samuel D. Naffziger
- 👤 David R. Smentek
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-11-09 19:26
CPC Classifications
G; G06; G06F; G06F7/00; G06F7/38; G06F7/48; G06F7/544; G06F7/5443; G06F7/483; G06F7/499; G06F7/49936
Claims Analysis
Total Claims: 13
Claim 1
Independent Claim
198 words
A floating-point multiply accumulate unit (FMAC) for performing the accumulate operation (A*B)+C, wherein each of inputs A, B and C comprise a mantissa and an exponent, and wherein a multiply unit places an (A*B) mantissa in an (A*B) register, the unit comprising: a) a CHI register, coupled to means for transferring bits of the C mantissa which exceed a range of the (A*B) mantissa to the CHI register; b) a CBUS register, coupled to a first shifter for placing bits of the C mantissa which overlap the range of the (A*B) mantissa into the CBUS register, the overlapping bits of the mantissas contained within the (A*B) and CBUS registers being aligned for adding; c) an adder, coupled to the (A*B) and CBUS registers, and providing an (A*B)+CBUS output; d) a leading bit anticipator connected to the (A*B)+CBUS output of the adder; e) a second shifter, coupled to the leading bit anticipator, and providing a temporary output; and f) means for merging those bits of the CHI register comprising bits of the C mantissa which exceed the range of the (A*B) mantissa with one or more most significant bits of the temporary output to produce an (A*B)+C accumulate output.
Claim 2
Dependent Claim
198 words
A floating-point multiply accumulate unit (FMAC) for performing the accumulate operation (A*B)+C, wherein each of inputs A, B and C comprise a mantissa and an exponent, and wherein a multiply unit places an (A*B) mantissa in an (A*B) register, the unit comprising: a) a CHI register, coupled to means for transferring bits of the C mantissa which exceed a range of the (A*B) mantissa to the CHI register; b) a CBUS register, coupled to a first shifter for placing bits of the C mantissa which overlap the range of the (A*B) mantissa into the CBUS register, the overlapping bits of the mantissas contained within the (A*B) and CBUS registers being aligned for adding; c) an adder, coupled to the (A*B) and CBUS registers, and providing an (A*B)+CBUS output; d) a leading bit anticipator connected to the (A*B)+CBUS output of the adder; e) a second shifter, coupled to the leading bit anticipator, and providing a temporary output; and f) means for merging those bits of the CHI register comprising bits of the C mantissa which exceed the range of the (A*B) mantissa with one or more most significant bits of the temporary output to produce an (A*B)+C accumulate output.
Claim 3
Dependent Claim
29 words
An FMAC as in claim 1, wherein: a) the A×B mantissa comprises "2m+1"-bits; b) the (A*B)+CBUS output comprises "2m+1"-bits; and c) the adder has a maximum width of "2m+1"-bits.
Claim 4
Dependent Claim
17 words
An FMAC as in claim 2, wherein the first and second shifters have maximum widths of "2m+1"-bits.
Claim 5
Dependent Claim
17 words
An FMAC as in claim 3, wherein the leading bit anticipator has a maximum width of "2m+1"-bits.
Claim 6
Dependent Claim
16 words
An FMAC as in claim 4, wherein the FMAC has a mantissa datapath width of "2m+1"-bits.
Claim 7
Dependent Claim
212 words
In a floating-point multiply accumulate unit for performing the accumulate operation (A*B)+C, wherein A, B, and C each comprise an m-bit mantissa and an exponent, and an (A*B) result comprises a "2m+1"-bit mantissa and an exponent, a method of adding C to the (A*B) result, comprising the steps of: a) comparing the exponents of (A*B) and C to determine whether there is an overlapping range of the (A*B) and C mantissas; b) transferring any part of the C mantissa which exceeds a range of the (A*B) mantissa to a CHI register; c) shifting any part of the C mantissa which overlaps the range of the (A*B) mantissa, so as to align the bits of the (A*B) and C mantissas according to their respective magnitudes; d) adding the shifted part of the C mantissa to the (A*B) mantissa to generate a temporary result; e) if a portion of the C mantissa was transferred to the CHI register, shifting one or more least significant bits corresponding to a number of bits transferred to the CHI register out of the temporary result; and f) merging the bits of the C mantissa which were transferred to the CHI register with one or more most significant bit positions of the temporary result to generate an accumulate result.
Claim 8
Dependent Claim
212 words
In a floating-point multiply accumulate unit for performing the accumulate operation (A*B)+C, wherein A, B, and C each comprise an m-bit mantissa and an exponent, and an (A*B) result comprises a "2m+1"-bit mantissa and an exponent, a method of adding C to the (A*B) result, comprising the steps of: a) comparing the exponents of (A*B) and C to determine whether there is an overlapping range of the (A*B) and C mantissas; b) transferring any part of the C mantissa which exceeds a range of the (A*B) mantissa to a CHI register; c) shifting any part of the C mantissa which overlaps the range of the (A*B) mantissa, so as to align the bits of the (A*B) and C mantissas according to their respective magnitudes; d) adding the shifted part of the C mantissa to the (A*B) mantissa to generate a temporary result; e) if a portion of the C mantissa was transferred to the CHI register, shifting one or more least significant bits corresponding to a number of bits transferred to the CHI register out of the temporary result; and f) merging the bits of the C mantissa which were transferred to the CHI register with one or more most significant bit positions of the temporary result to generate an accumulate result.
Claim 9
Dependent Claim
14 words
A method as in claim 6, wherein the temporary result comprises a "2m+1"-bit mantissa.
Claim 10
Dependent Claim
23 words
A method as in claim 7, further comprising the step of truncating the accumulate result so as to create an "m-1"-bit accumulate result.
Claim 11
Dependent Claim
52 words
A method as in claim 8, wherein the step of truncating the accumulate result is performed simultaneously with the step of merging the bits of the C mantissa which were transferred to the CHI register with one or more most significant bit positions of the temporary result to generate the accumulate result.
Claim 12
Dependent Claim
44 words
A method as in claim 6, further comprising the steps of: a) filling less significant bits of the CHI register with ones; and b) if adding the shifted part of the C mantissa to the (A*B) mantissa generates a carry, incrementing the CHI register.
Claim 13
Dependent Claim
39 words
A method as in claim 10, further comprising the step of using any bits of C shifted out of the range of the (A*B) mantissa, and any bits shifted out of the temporary result, to round the merged result.
References Cited (Backward Citations)
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 2001-05-25 | 2001-11-24 | 2002-05-26 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 2005-05-25 | 2005-11-24 | 2006-05-26 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 2009-05-25 | 2009-11-24 | 2010-05-26 | $7700.00 | Window Closed / Lapsed |