Floating point split multiply/add system which has infinite precision
Abstract
A method and system for an infinite precision split multiply and add operation which has increased speed. The method and system for providing a split multiply and add of a plurality of operands include a multiplier and an adder means. The multiplier multiplies a first portion of the plurality of operands, thereby providing a product. The adder, which combines the remaining operands and the product, comprise at least one pair of data paths. Each pair of data paths comprises a first data path and a second data path. The first data path comprises a first aligner, a first adder, and a first normalizer capable of shifting a mantissa by a substantially fewer number digits than the aligner. The second data path comprises a second aligner, a second adder, and a second normalizer capable of shifting a mantissa by a substantially larger number of digits than the aligner. Accordingly, the present invention includes split multiply and add data paths which, individually, are faster than a fused multiply and add. In addition, the split multiply and add data paths can preserve the appearance of infinite precision. Consequently, overall system performance is increased.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1. A system for calculating a floating point split multiply and add/subtract of a plurality of operands comprising: a multiplier means for calculating a product of a first portion of the plurality of operands; and an adding means coupled to the multiplier means, for combining a remaining portion of the plurality of the operands and the product, the adding means further comprising at least one pair of data paths, the at least one pair data paths comprising a first data path and a second data path; the first data path further comprising: a first aligner, a first adder coupled to the first aligner, and a first normalizer coupled to the first adder, the first normalizer being capable of shifting a mantissa by a substantially fewer number of digits than the first aligner; the second data path further comprising: a second aligner, a second adder coupled to the second aligner, and a second normalizer coupled to the second adder, the second normalizer being capable of shifting a mantissa by a substantially greater number of digits than the second aligner.
2. The system of claim 1 wherein in each pair of data paths, the first normalizer provides a normalized first resultant; and the second normalizer provides a normalized second resultant; the system further comprising: at least one chooser, each chooser being coupled to the first data path and the second data path of a corresponding pair of data paths, each chooser for providing a resultant, the resultant being the normalized first resultant of the corresponding pair of data paths when a pair of inputs to the corresponding pair of data paths are more than a predetermined number of digits apart and the resultant being the normalized second resultant of the corresponding pair of data paths when the pair of inputs to the corresponding pair of data paths are no more than the predetermined number of digits apart; thereby ensuring that the resultant has the appearance of infinite precision.
3. The system of claim 2 wherein the predetermined number of digits is one digit.
4. The system of claim 2 wherein each chooser further comprises a multiplexer.
5. The system of claim 2 wherein each chooser and each first normalizer of the corresponding pair of data paths comprise a single multiplexer.
6. The system of claim 1 wherein the mantissa of the product is input to the second data path of an associated pair of data paths in the form of a plurality of sums and a plurality of carries.
7. The system of claim 1 wherein each first data path further comprises a comparer coupled to the first aligner, each comparer for comparing a pair of inputs to the first data path and providing the smaller of inputs to the first aligner.
8. The system of claim 1 wherein each first normalizer comprises a multiplexer and each second aligner comprises at least one multiplexer.
9. The system of claim 1 wherein in each pair of data paths, the width of the first adder and the width of the second adder are optimized to increase data flow rates; and wherein a second data path of a pair of data paths which combine the product and one of the remaining operands further comprises: a leading zero detector coupled to the second adder and the second normalizer, and a multiply output, the multiply output being coupled to the leading zero detector, for forwarding a plurality of the lower significant digits of the mantissa of a the product to the leading zero detector.
10. A system for calculating a floating point split multiply and add/subtract of a first operand, a second operand, and a third operand comprising: a multiplier means for calculating a product of the first operand and the second operand; and an adding means coupled to the multiplier means, for combining the third operand and the product, the adding means further comprising a first data path and a second data path; the first data path further comprising: a first aligner, a first adder coupled to the first aligner, and a first normalizer coupled to the first adder, the first normalizer being capable of shifting a mantissa by a substantially fewer number digits than the first aligner; the second data path further comprising: a second aligner, a second adder coupled to the second aligner, and a second normalizer coupled to the second adder, the second normalizer being capable of shifting a mantissa by a substantially greater number of digits than the second aligner.
11. The system of claim 10 wherein the first normalizer provides a first normalized resultant, and the second normalizer provides a second normalized resultant; the system further comprising: a chooser for providing a resultant, the chooser being coupled to the second data path and the first data path, the resultant being the normalized first resultant when the product and the third operand are more than a predetermined number of digits apart, and the resultant being the normalized second resultant when the product and the third operand are no more than the predetermined number of digits apart; thereby ensuring that the resultant has the appearance of infinite precision.
12. The system of claim 11 wherein the predetermined number of digits is one digit.
13. The system of claim 11 wherein the chooser further comprises a multiplexer.
14. The system of claim 11 wherein the chooser and the first normalizer comprise a single multiplexer.
15. The system of claim 11 wherein the mantissa of the product is input to the second data path in the form of a plurality of sums and a plurality of carries.
16. The system of claim 10 wherein the first data path further comprises a comparer coupled to the first aligner, the comparer for comparing the third operand to the product and providing the smaller of the third operand and the product to the first aligner.
17. The system of claim 10 wherein the mantissa of the product is input to the second data path in the form of a plurality of sums and a plurality of carries.
18. The system of claim 10 wherein the first data path further comprises a comparer coupled to the first aligner, the comparer for comparing the third operand to the product and providing the smaller of the third operand and the product to the first aligner.
19. The system of claim 10 wherein the first normalizer comprises a multiplexer and the second aligner comprises at least one multiplexer.
20. The system of claim 10 wherein the width of the first adder and the width of the second adder are optimized to increase data flow rates; and wherein the second data path further comprises: a leading zero detector coupled to the second adder and the second normalizer, for detecting leading zeroes in the mantissa of the second resultant; and a multiply output coupled to the leading zero detector, for forwarding a plurality of the lower significant digits of the mantissa of the product to the leading zero detector.
21. The system of claim 15 wherein the first normalizer comprises a multiplexer and the second aligner comprises at least one multiplexer.
22. The system of claim 16 wherein the width of the first adder and the width of the second adder are optimized to increase data flow rates; and wherein the second data path further comprises: a leading zero detector coupled to the second adder and the second normalizer, for detecting leading zeroes in the mantissa of the second resultant; and a multiply output coupled to the leading zero detector, for forwarding a plurality of the lower significant digits of the mantissa of the product to the leading zero detector.
23. A system for calculating a floating point multiply and add/subtract of a first operand, a second operand, and a third operand, and for calculating a floating point add/subtract of the third operand and the first operand comprising: a multiply for calculating a product of the first operand and the second operand; and adding means coupled to the multiply, for combining the third operand and the product and for combining the third operand and the first operand; the adding means further comprising a first data path and a second data path; the first data path further comprising: a first aligner, a first adder coupled to the first aligner, and a first normalizer coupled to the first adder, the first normalizer being capable of shifting a mantissa by substantially fewer digits than the first aligner; the second data path further comprising: a second aligner, a second adder coupled to the second aligner, and a second normalizer coupled to the second adder, the second normalizer being capable of shifting a mantissa substantially more digits than the second aligner; wherein when the first operand, the second operand and the third operand are input to the system, the system calculates a multiply and add/subtract of the first operand the second operand and third operand; and wherein when only the first operand and the third operand are input to the system, the system calculates the add/subtract of the first operand and the fourth operand.
24. The system of claim 23 wherein the first normalizer provides a first normalized resultant, and the second normalizer provides a second normalized resultant, the system further comprising: a chooser coupled to the first data path and the second data path for providing a resultant, the resultant being the normalized first resultant when the product and the third operand or the third operand and the first operand are more than a predetermined number of digits apart, and the resultant being the second resultant when the product and the third operand or the third operand and the first operand are no more than the predetermined number of digits apart, thereby ensuring that the resultant has the appearance of infinite precision.
25. The system of claim 24 wherein the predetermined number of digits of is one digit.
26. The system of claim 23 wherein the product is input to the second data path in the form of a plurality of sums and a plurality of carries.
27. The system of claim 23 wherein the first data path further comprises: a comparer coupled to the first aligner, for comparing the product to the third operand and providing to the first aligner the smaller of the product and the third operand, and for comparing the third operand to the first operand and providing to the first aligner the smaller of the third operand and the first operand.
28. The system of claim 23 wherein the width of the first adder and the width of the second adder are optimized to increase data flow rates; and wherein the second data path further comprises: a leading zero detector coupled to the second adder and the second normalizer for detecting leading zeroes in the second resultant; and a multiply output coupled to the leading zero detector for forwarding a plurality of the lower significant digits of the mantissa of the product to the leading zero detector.
29. A method for calculating a floating point multiply and add/subtract of a plurality of operands comprising the steps of: providing a first portion of the operands to a multiplier means; multiplying the first portions of the operands to provide a product; providing the product and a remaining portion of the plurality of operands of a plurality of pairs of data paths; in each pair of data paths, providing a pair of inputs to a first data path and a second data path; in the first data path: providing one input of the pair of inputs to an aligner, aligning the pair of inputs, combining the aligned pair of inputs to provide a first resultant, detecting any leading zeros of the first resultant, providing the first resultant to a first normalizer capable of shifting a mantissa by a substantially smaller number of digits than the first normalizer, and normalizing the first resultant by shifting the mantissa of the first resultant left, thereby providing a normalized first resultant; in the second data path: providing one input of the pair of inputs to a second aligner, aligning the pair of inputs, combining the aligned pair of inputs to provide a second resultant, detecting any leading zeroes of the second resultant, providing the second resultant to a second normalizer capable of shifting a mantissa a substantially greater number of digits than the second aligner, and normalizing the second resultant to remove any leading zeroes by shifting the second resultant left, thereby providing a normalized second resultant.
30. The method of claim 29 wherein in the first data path, the step of providing one input of the pair of inputs to the first aligner comprises the steps of: providing the pair of inputs to a comparer, comparing the pair of inputs to determine which input is smaller, and providing the smaller of the pair of inputs to a first aligner; and the step of aligning the pair of inputs comprises the steps of: aligning the smaller of the pair of inputs to the larger of the pair of inputs by equalizing the exponents of the pair of inputs, and shifting the mantissa of the smaller of pair of inputs right.
31. The method of claim 30 further comprising the additional steps of: providing the normalized first resultant and the normalized second resultant to a chooser; choosing the normalized first resultant as a resultant if the pair of inputs are more than a predetermined number of digits apart and choosing the normalized second resultant as the resultant if the pair of inputs are less than the predetermined number of digits apart, thereby ensuring that the resultant has the appearance of infinite precision.
32. The method of claim 29 further comprising the additional steps of: providing the normalized first resultant and the normalized second resultant to a chooser; choosing the normalized first resultant as a resultant if the pair of inputs are more than a predetermined number of digits apart and choosing the normalized second resultant as the resultant if the pair of inputs are less than the predetermined number of digits apart, thereby ensuring that the resultant has the appearance of infinite precision.
33. A method for calculating a floating point split multiply and add/subtract of a first operand, a second operand, and a third operand comprising the steps of: providing the first operand and the second operand to a multiplier means; multiplying the first operand and the second operand to provide a product; providing the product and the third operand to a first data path and a second data path; in the first data path: providing the product to a first aligner, aligning the product and the third operand, combining the aligned product and third operand to provide a first resultant, detecting any leading zeros of the first resultant, providing the first resultant to a first normalizer capable of shifting a mantissa by a substantially smaller number digits than the first aligner, and normalizing the first resultant by removing any leading zeroes by shifting the first resultant left, thereby providing a normalized first resultant, in the second data path: providing the product and the third operand to an aligner, aligning the product and the third operand, combining the aligned product and third operand to provide a second resultant, detecting any leading zeroes of the second resultant, providing the second resultant to a second normalizer capable of shifting a mantissa by a substantially greater number of digits than the second aligner, and normalizing the second resultant to remove any leading zeroes by shifting the second resultant left, thereby providing a normalized second resultant.
34. The method of claim 33 wherein the step of aligning the product and the third operand in the first data path comprises equalizing the exponents and shifting the mantissa of the product right or left.
35. The method of claim 33 wherein the step of aligning the product and the third operand in the first data path comprises equalizing the exponents and shifting the mantissa of the third operand right or left.
36. The method of claim 33 wherein the step of aligning the product and the third operand in the second data path comprises equalizing the exponents and shifting the mantissa of the product right or left.
37. The method of claim 33 further comprising the additional steps of: providing the normalized first resultant and the normalized second resultant to a chooser; choosing the normalized first resultant as a resultant if the product and the third operand are more than a predetermined number of digits apart and choosing the normalized second resultant as the resultant if the product and the third operand are less than the predetermined number of digits apart, thereby ensuring that the resultant has the appearance of infinite precision.
38. The method of claim 33 wherein the step of providing the product to the second data path further comprises providing the sums and carries representing the mantissa of the product to the second data path.
39. A method for calculating a floating point split multiply and add/subtract of a first operand, a second operand, and a third operand comprising the steps of: providing the first operand and the second operand to a multiplier means; multiplying the first operand and the second operand to provide a product; providing the product and the third operand to a first data path and a second data path; in the first data path: comparing the product and the third operand to determine which is smaller; providing the smaller of the product and the third operand to a first aligner, aligning the smaller of the product and the third operand to the larger by equalizing the exponents and shifting the mantissa of the smaller of the product and the third operand right, thereby providing an aligned smaller operand, combining the aligned smaller of the product and the third operand with the larger of the product and the third operand to provide a first resultant, detecting any leading zeros of the first resultant, providing the first resultant to a first normalizer capable of shifting a mantissa by a substantially smaller number digits than the first aligner, and normalizing the first resultant to remove any leading zeroes by shifting the mantissa of the first resultant left, thereby providing a normalized first resultant; in the second data path: providing the product and the third operand to an aligner, aligning the product to the third operand by shifting the mantissa of the product right or left, thereby providing an aligned product, combining the aligned product and the third operand to provide a second resultant, detecting any leading zeroes of the second resultant, providing the second resultant to a second normalizer capable of shifting a mantissa a substantially greater number of digits than the second aligner, and normalizing the second resultant to remove any leading zeroes by shifting the second resultant left, thereby providing a normalized second resultant.
40. The method of claim 39 further comprising the additional steps of: providing the normalized first resultant and the normalized second resultant to a chooser; choosing the normalized first resultant as a resultant if the product and the third operand are more than a predetermined number of digits apart and choosing the normalized second resultant as the resultant if the product and the third operand are less than the predetermined number of digits apart, thereby ensuring that the resultant has the appearance of infinite precision.
41. The method of claim 39 wherein the step of providing the product to the second data path further comprises providing the sums and carries representing the mantissa of the product to the second data path.
42. A method for calculating a floating point split multiply and add/subtract of a first operand, a second operand, and a third operand, and for calculating a floating point add/subtract of the third operand and the first operand comprising the following steps of: when the first operand, the second operand and the third operand are input: providing the first operand and the second operand to a multiplier means; multiplying the first operand and the second operand to provide a product; providing the product and the third operand to a first data path and a second data path; in the first data path: comparing the product and the third operand to determine which is smaller; providing the smaller of the product and the third operand to a first aligner, aligning the smaller of the product and the third operand to the larger by equalizing the exponents and shifting the mantissa of the smaller of the product and the third operand right, thereby providing an aligned smaller operand, combining the aligned smaller of the product and the third operand with the larger of the product and the third operand to provide a first resultant, detecting any leading zeros of the first resultant, providing the first resultant to a first normalizer capable of shifting a mantissa by a substantially smaller number digits than the first aligner, and normalizing the first resultant to remove any leading zeroes by shifting the mantissa of the first resultant left, thereby providing a normalized first in the second data path: providing the product and the third operand to an aligner, aligning the product to the third operand by shifting the mantissa of the product right or left, thereby providing an aligned product, combining the aligned product and the third operand to provide a second resultant, detecting any leading zeroes of the second resultant, providing the second resultant to a second normalizer capable of shifting a mantissa a substantially greater number of digits than the second aligner, and normalizing the second resultant to remove any leading zeroes by shifting the second resultant left, thereby providing a normalized second resultant; when only the first operand and the third operand are input: providing the first operand and the third operand to a first data path and a second data path; in the first data path: comparing the first operand and the third operand to determine which is smaller; providing the smaller of the first operand and the third operand to a first aligner, aligning the smaller of the first operand and the third operand to the larger by equalizing the exponents and shifting the mantissa of the smaller of the first operand and the third operand right, thereby providing an aligned smaller operand, combining the aligned smaller of the first operand and the third operand with the larger of the first operand and the third operand to provide a first resultant, detecting any leading zeros of the first resultant, providing the first resultant to a first normalizer capable of shifting a mantissa by a substantially smaller number digits than the first aligner, and normalizing the first resultant to remove any leading zeroes by shifting the mantissa of the first resultant left, thereby providing a normalized first resultant; in the second data path: providing the first operand and the third operand to an aligner, aligning the first operand to the third operand by shifting the mantissa of the first operand right or left, thereby providing an aligned first operand, providing free zeroes to disable any portion of the aligner not used, combining the aligned first operand and the third operand to provide a second resultant, detecting any leading zeroes of the second resultant, providing the second resultant to a second normalizer capable of shifting a mantissa a substantially greater number of digits than the second aligner, and normalizing the second resultant to remove any leading zeroes by shifting the second resultant left, thereby providing a normalized second resultant.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.