A survey of hardware designs for decimal arithmetic

Decimal data and decimal arithmetic operations are ubiquitous in daily life. Although microprocessors normally use binary arithmetic for computations, decimal arithmetic is often required in financial and commercial applications. Due to the increasing importance of and demand for decimal arithmetic, decimal floating-point (DFP) formats and operations are specified in the revised IEEE Standard for Floating-Point Arithmetic (IEEE 754-2008). This paper provides a survey of hardware designs for decimal arithmetic. It gives an overview of DFP arithmetic in IEEE 754-2008, describes processors that provide hardware and instruction set support for decimal arithmetic, and provides a survey of hardware designs for decimal addition, subtraction, multiplication, and division. Finally, it describes potential areas for future research.

[1]  Timothy J. Slegel,et al.  Custom S/390 G5 and G6 microprocessors , 1999, IBM J. Res. Dev..

[2]  Ali Y. Duale,et al.  Decimal floating-point in z9: An implementation and testing perspective , 2007, IBM J. Res. Dev..

[3]  F.Y. Busaba,et al.  The IBM z900 decimal arithmetic unit , 2001, Conference Record of Thirty-Fifth Asilomar Conference on Signals, Systems and Computers (Cat.No.01CH37256).

[4]  Michael J. Schulte,et al.  Decimal multiplication with efficient partial product generation , 2005, 17th IEEE Symposium on Computer Arithmetic (ARITH'05).

[5]  Frederick P. Brooks,et al.  Architecture of the IBM System/360 , 2000, IBM J. Res. Dev..

[6]  Michael F. Cowlishaw,et al.  Decimal floating-point: algorism for computers , 2003, Proceedings 2003 16th IEEE Symposium on Computer Arithmetic.

[7]  J.E. Stine,et al.  Decimal partial product generation architectures , 2008, 2008 51st Midwest Symposium on Circuits and Systems.

[8]  Michael J. Schulte,et al.  Processor support for decimal floating-point arithmetic , 2007 .

[9]  Amir Kaivani,et al.  Improving the Speed of Parallel Decimal Multiplication , 2009, IEEE Transactions on Computers.

[10]  Elmer C. Kubie,et al.  The IBM Magnetic Drum Calculator Type 650 , 1954, JACM.

[11]  Y. Farouk,et al.  A decimal fully parallel and pipelined floating point multiplier , 2008, 2008 42nd Asilomar Conference on Signals, Systems and Computers.

[12]  M. Cowlishaw Densely packed decimal encoding , 2002 .

[13]  Eric M. Schwarz,et al.  Decimal floating-point support on the IBM System z10 processor , 2009, IBM J. Res. Dev..

[14]  Michael J. Schulte,et al.  A Decimal Floating-Point Adder with Decoded Operands and a Decimal Leading-Zero Anticipator , 2009, 2009 19th IEEE Symposium on Computer Arithmetic.

[15]  Timothy J. Slegel,et al.  The IBM eServer z990 microprocessor , 2004, IBM J. Res. Dev..

[16]  Paolo Montuschi,et al.  A New Family of High.Performance Parallel Decimal Multipliers , 2007, 18th IEEE Symposium on Computer Arithmetic (ARITH '07).

[17]  Antonin Svoboda Decimal Adder with Signed Digit Arithmetic , 1969, IEEE Transactions on Computers.

[18]  Ghassem Jaberipur,et al.  Fully Redundant Decimal Arithmetic , 2009, 2009 19th IEEE Symposium on Computer Arithmetic.

[19]  Michael J. Schulte,et al.  High-speed multioperand decimal adders , 2005, IEEE Transactions on Computers.

[20]  Michael J. Schulte,et al.  Decimal Floating-Point Adder and Multifunction Unit with Injection-Based Rounding , 2007, 18th IEEE Symposium on Computer Arithmetic (ARITH '07).

[21]  David Y. Y. Yun,et al.  RBCD: redundant binary coded decimal adder , 1989 .

[22]  Michael J. Schulte,et al.  Performance analysis of decimal floating-point libraries and its impact on decimal hardware and software solutions , 2009, 2009 IEEE International Conference on Computer Design.

[23]  Tomás Lang,et al.  A Radix-10 Digit-Recurrence Division Unit: Algorithm and Architecture , 2007, IEEE Transactions on Computers.

[24]  Michael J. Schulte,et al.  A parallel IEEE P754 decimal floating-point multiplier , 2007, 2007 25th International Conference on Computer Design.

[25]  Gaurav Mittal,et al.  Design of the Power6 Microprocessor , 2007, 2007 IEEE International Solid-State Circuits Conference. Digest of Technical Papers.

[26]  Michael J. Schulte,et al.  Hardware Designs for Decimal Floating-Point Addition and Related Operations , 2009, IEEE Transactions on Computers.

[27]  Herman H. Goldstine,et al.  The Electronic Numerical Integrator and Computer (ENIAC) , 1996, IEEE Ann. Hist. Comput..

[28]  Neil Burgess Prenormalization rounding in IEEE floating-point operations using a flagged prefix adder , 2005, IEEE Transactions on Very Large Scale Integration (VLSI) Systems.

[29]  Paolo Montuschi,et al.  A radix-10 SRT divider based on alternative BCD codings , 2007, 2007 25th International Conference on Computer Design.

[30]  C. N. Zhang,et al.  VLSI designs for redundant binary-coded decimal addition , 1988, Seventh Annual International Phoenix Conference on Computers an Communications. 1988 Conference Proceedings.

[31]  Michael J. Schulte,et al.  Decimal Floating-Point Multiplication Via Carry-Save Addition , 2007, 18th IEEE Symposium on Computer Arithmetic (ARITH '07).

[32]  Michael J. Schulte,et al.  A 64-bit decimal floating-point adder , 2004, IEEE Computer Society Annual Symposium on VLSI.

[33]  A. Nannarelli,et al.  A Radix-10 Combinational Multiplier , 2006, 2006 Fortieth Asilomar Conference on Signals, Systems and Computers.

[34]  R. K. Richards,et al.  Arithmetic operations in digital computers , 2013 .

[35]  Milos D. Ercegovac,et al.  Digital Arithmetic , 2003, Wiley Encyclopedia of Computer Science and Engineering.

[36]  Thomas E. Hull,et al.  CADAC: A Controlled-Precision Decimal Arithmetic Unit , 1983, IEEE Transactions on Computers.

[37]  Michael J. Schulte,et al.  A high-frequency decimal multiplier , 2004, IEEE International Conference on Computer Design: VLSI in Computers and Processors, 2004. ICCD 2004. Proceedings..

[38]  Michael J. Schulte,et al.  Improved combined binary/decimal fixed-point multipliers , 2008, 2008 IEEE International Conference on Computer Design.

[39]  Eric M. Schwarz,et al.  A decimal floating-point specification , 2001, Proceedings 15th IEEE Symposium on Computer Arithmetic. ARITH-15 2001.

[40]  Michael J. Schulte,et al.  Multioperand decimal addition , 2004, IEEE Computer Society Annual Symposium on VLSI.

[41]  A. Weinberger,et al.  High Speed Decimal Addition , 1971, IEEE Transactions on Computers.

[42]  Peter-Michael Seidel,et al.  Delay-optimized implementation of IEEE floating-point addition , 2004, IEEE Transactions on Computers.

[43]  Michael J. Schulte,et al.  A Decimal Floating-Point Divider Using Newton–Raphson Iteration , 2007, J. VLSI Signal Process..

[44]  Charles F. Webb IBM z10: The Next-Generation Mainframe Microprocessor , 2008, IEEE Micro.

[45]  Eric M. Schwarz,et al.  IBM POWER6 microarchitecture , 2007, IBM J. Res. Dev..

[46]  Braden Phillips,et al.  A decimal carry-free adder , 2005, SPIE Micro + Nano Materials, Devices, and Applications.

[47]  Michael J. Schulte,et al.  Decimal multiplication via carry-save addition , 2003, Proceedings IEEE International Conference on Application-Specific Systems, Architectures, and Processors. ASAP 2003.

[48]  Michael J. Schulte,et al.  Benchmarks and performance analysis of decimal floating-point applications , 2007, 2007 25th International Conference on Computer Design.

[49]  Michael J. Schulte,et al.  Decimal floating-point division using Newton-Raphson iteration , 2004 .

[50]  R. Sacks-Davis,et al.  Applications of Redundant Number Representations to Decimal Arithmetic , 1982, Comput. J..

[51]  T. Koehler,et al.  The microarchitecture of the IBM eServer z900 processor , 2002, IBM J. Res. Dev..

[52]  Álvaro Vázquez,et al.  A High-Performance Significand BCD Adder with IEEE 754-2008 Decimal Rounding , 2009, 2009 19th IEEE Symposium on Computer Arithmetic.

[53]  Braden Phillips,et al.  Fast Decimal Floating-Point Division , 2006, IEEE Transactions on Very Large Scale Integration (VLSI) Systems.

[54]  Naofumi Takagi Powering by a Table Look-Up and a Multiplication with Operand Modification , 1998, IEEE Trans. Computers.