This Article 
 Bibliographic References 
 Add to: 
Decimal Floating-Point Multiplication
July 2009 (vol. 58 no. 7)
pp. 902-916
Mark A. Erle, IBM and Lehigh University, Macungie
Brian J. Hickmann, University of Wisconsin - Madison, Madison
Michael J. Schulte, University of Wisconsin - Madison, Madison
Decimal multiplication is important in many commercial applications including financial analysis, banking, tax calculation, currency conversion, insurance, and accounting. This paper presents the design of two decimal floating-point multipliers: one whose partial product accumulation strategy employs decimal carry-save addition and one that employs binary carry-save addition. The multiplier based on decimal carry-save addition favors a nonpipelined iterative implementation. The multiplier utilizing binary carry-save addition allows for an efficient pipelined implementation when latency and throughput are considered more important than area. Both designs comply with specifications for decimal multiplication given in the IEEE 754 Standard for Floating-Point Arithmetic (IEEE 754-2008). The multipliers extend previously published decimal fixed-point multipliers by adding several features, including exponent generation, sticky bit generation, shifting of the intermediate product, rounding, and exception detection and handling. Novel features of the multipliers include support for decimal floating-point numbers, on-the-fly generation of the sticky bit in the iterative design, early estimation of the shift amount, and efficient decimal rounding. Iterative and parallel decimal fixed-point and floating-point multipliers are compared in terms of their area, delay, latency, and throughput based on verified Verilog register-transfer-level models.

[1] M.A. Erle, M.J. Schulte, and J.M. Linebarger, “Potential Speedup Using Decimal Floating-Point Hardware,” Proc. 36th Asilomar Conf. Signals, Systems and Computers (ACSSC '02), vol. 2, pp.1073-1077, Nov. 2002.
[2] L.-K. Wang, C. Tsen, M.J. Schulte, and D. Jhalani, “Benchmarks and Performance Analysis for Decimal Floating-Point Applications,” Proc. 25th IEEE Int'l Conf. Computer Design (ICCD '07), pp.164-170, Oct. 2007.
[3] L. Eisen, J.W. Ward III, H.-W. Tast, N. Mäding, J. Leenstra, S.M. Mueller, C. Jacobi, J. Preiss, E.M. Schwarz, and S.R. Carlough, “IBM POWER6 Accelerators: VMX and DFU,” IBM J. Research and Development, vol. 51, no. 6, pp. 663-684, Nov. 2007.
[4] IEEE Standard for Floating-Point Arithmetic, IEEE Working Group of the Microprocessor Standards Subcommittee, IEEE, 2008.
[5] ANSI/IEEE Std 854-1987: IEEE Standard for Radix-Independent Floating-Point Arithmetic, Floating-Point Working Group, IEEE, Oct. 1987.
[6] R.H. Larson, “High Speed Multiply Using Four Input Carry Save Adder,” IBM Technical Disclosure Bull., pp. 2053-2054, Dec. 1973.
[7] R.L. Hoffman and T.L. Schardt, “Packed Decimal Multiply Algorithm,” IBM Technical Disclosure Bull., vol. 18, no. 5, pp.1562-1563, Oct. 1975.
[8] T. Ohtsuki, Y. Oshima, S. Ishikawa, K. Yabe, and M. Fukuta, Apparatus for Decimal Multiplication, US patent 4,677,583, June 1987.
[9] M.A. Erle and M.J. Schulte, “Decimal Multiplication via Carry-Save Addition,” Proc. 14th IEEE Int'l Conf. Application-Specific Systems, Architectures, and Processors (ASAP '03), pp. 348-358, June 2003.
[10] T. Lang and A. Nannarelli, “A Radix-10 Combinational Multiplier,” Proc. 40th Asilomar Conf. Signals, Systems, and Computers (ACSSC '06), pp. 313-317, Oct./Nov. 2006.
[11] R.K. Richards, Arithmetic Operations in Digital Computers. D.Van Nostrand, 1955.
[12] A. Vazquez, E. Antelo, and P. Montuschi, “A New Family of High-Performance Parallel Decimal Multipliers,” Proc.18th IEEE Symp. Computer Arithmetic (ARITH '07), pp. 195-204, June 2007.
[13] M.A. Erle, M.J. Schulte, and B.J. Hickmann, “Decimal Floating-Point Multiplication via Carry-Save Addition,” Proc. 18th IEEE Symp. Computer Arithmetic (ARITH '07), pp. 46-55, June 2007.
[14] B.J. Hickmann, A. Krioukov, M.A. Erle, and M.J. Schulte, “A Parallel IEEE P754 Decimal Floating-Point Multiplier,” Proc. 25th IEEE Int'l Conf. Computer Design (ICCD '07), pp. 296-303, Oct. 2007.
[15] M.S. Cohen, T.E. Hull, and V.C. Hamacher, “CADAC: A Controlled-Precision Decimal Arithmetic Unit,” IEEE Trans. Computers, vol. 32, no. 4, pp. 370-377, Apr. 1983.
[16] G. Bohlender and T. Teufel, “BAP-SC: A Decimal Floating-Point Processor for Optimal Arithmetic,” Computer Arithmetic: Scientific Computation and Programming Languages. B.G. Teubner, pp. 31-58, 1987.
[17] M.F. Cowlishaw, “Decimal Floating-Point: Algorism for Computers,” Proc. 16th IEEE Symp. Computer Arithmetic (ARITH '03), pp.104-111, June 2003.
[18] M.S. Schmookler and A.W. Weinberger, “High Speed Decimal Addition,” IEEE Trans. Computers, vol. 20, no. 2 pp. 862-867, Aug. 1971.
[19] M.F. Cowlishaw, “Densely Packed Decimal Encoding,” IEEE Proc.—Computers and Digital Techniques, vol. 149, no. 3, pp.102-104, May 2002.
[20] M.F. Cowlishaw, E.M. Schwarz, R.M. Smith, and C.F. Webb, “A Decimal Floating-Point Specification,” Proc. 15th IEEE Symp. Computer Arithmetic (ARITH '01), pp. 147-154, July 2001.
[21] N.T. Quach, N. Takagi, and M.J. Flynn, “Systematic IEEE Rounding Method for High-Speed Floating-Point Multipliers,” IEEE Trans. VLSI Systems, vol. 12, no. 5, pp. 511-521, May 2004.
[22] L.-K. Wang and M. Schulte, “Decimal Floating-Point Adder and Multifunction Unit with Injection-Based Rounding,” Proc. 18th IEEE Symp. Computer Arithmetic (ARITH '07), pp. 55-65, June 2007.
[23] G. Even and P.-M. Seidel, “A Comparison of Three Rounding Algorithms for IEEE Floating-Point Multiplication,” IEEE Trans. Computers, vol. 49, no. 7, pp. 638-650, July 2000.
[24] M.S. Schmookler and K.J. Nowka, “Leading Zero Anticipation and Detection—A Comparison of Methods,” Proc. 15th IEEE Symp. Computer Arithmetic (ARITH '01), pp. 7-12, July 2001.
[25] R.M.M. Aharoni, R. Maharik, and A. Ziv, “Solving Constraints on the Intermediate Result of Decimal Floating-Point Operations,” Proc. 18th IEEE Symp. Computer Arithmetic (ARITH '07), pp. 38-45, June 2007.
[26] General Decimal Arithmetic Testcases, IBM, http://www2.hursley. , 2007.

Index Terms:
Decimal multiplication, binary coded decimal, floating-point arithmetic, serial multiplication, parallel multiplication, pipelined multiplication.
Mark A. Erle, Brian J. Hickmann, Michael J. Schulte, "Decimal Floating-Point Multiplication," IEEE Transactions on Computers, vol. 58, no. 7, pp. 902-916, July 2009, doi:10.1109/TC.2008.218
Usage of this product signifies your acceptance of the Terms of Use.