A parametric error analysis of Goldschmidt's division algorithm

Back in the 1960s Goldschmidt presented a variation of Newton--Raphson iterations for division that is well suited for pipelining. The problem in using Goldschmidt's division algorithm is to present an error analysis that enables one to save hardware by using just the right amount of precision for intermediate calculations while still providing correct rounding. Previous implementations relied on combining formal proof methods (that span thousands of lines) with millions of test vectors. These techniques yield correct designs but the analysis is hard to follow and is not quite tight.We present a simple parametric error analysis of Goldschmidt's division algorithm. This analysis sheds more light on the effect of the different parameters on the error. In addition, we derive closed error formulae that allow to determine optimal parameter choices in four practical settings.We apply our analysis to show that a few bits of precision can be saved in the floating-point division (FP-DIV) micro-architecture of the AMD-K7TMmicroprocessor. These reductions in precision apply to the initial approximation and to the lengths of the multiplicands in the multiplier. When translated to cost, the reductions reflect a savings of 10.6% in the overall cost of the FP-DIV micro-architecture.

[1]  Kurt Mehlhorn,et al.  Area-Time Optimal Division for T=Omega((log n)^1+ epsilon) , 1987, Inf. Comput..

[2]  Stuart F. Oberman,et al.  Floating point division and square root algorithms and implementation in the AMD-K7/sup TM/ microprocessor , 1999, Proceedings 14th IEEE Symposium on Computer Arithmetic (Cat. No.99CB36336).

[3]  Otto Spaniol Computer Arithmetic: Logic and Design , 1981 .

[4]  Peter-Michael Seidel,et al.  A parametric error analysis of Goldschmidt's division algorithm , 2003, Proceedings 2003 16th IEEE Symposium on Computer Arithmetic.

[5]  Peter W. Markstein,et al.  Correctness proofs outline for Newton-Raphson based floating-point divide and square root algorithms , 1999, Proceedings 14th IEEE Symposium on Computer Arithmetic (Cat. No.99CB36336).

[6]  Debjit Das Sarma,et al.  Faithful bipartite ROM reciprocal tables , 1995, Proceedings of the 12th Symposium on Computer Arithmetic.

[7]  Stephen A. Cook,et al.  Log Depth Circuits for Division and Related Problems , 1986, SIAM J. Comput..

[8]  E. V. Krishnamurthy,et al.  On Optimal Ierative Schemes for High-Speed Division , 1970, IEEE Transactions on Computers.

[9]  Stephen R. Tate,et al.  Optimal Size Integer Division Circuits , 1990, SIAM J. Comput..

[10]  Robert E Goldschmidt,et al.  Applications of division by convergence , 1964 .

[11]  Michael J. Flynn On Division by Functional Iteration , 1970, IEEE Transactions on Computers.

[12]  Ramesh C. Agarwal,et al.  Series approximation methods for divide and square root in the Power3/sup TM/ processor , 1999, Proceedings 14th IEEE Symposium on Computer Arithmetic (Cat. No.99CB36336).

[13]  Wolfgang J. Paul,et al.  Computer architecture - complexity and correctness , 2000 .

[14]  Gary Wayne Bewick Fast Multiplication: Algorithms and Implementations , 1994 .

[15]  Peter-Michael Seidel On the design of IEEE compliant floating point units and their quantitative analysis , 1999 .

[16]  Thomas J. McPherson,et al.  CMOS floating-point unit for the S/390 Parallel Enterprise Server G4 , 1997, IBM J. Res. Dev..

[17]  David M. Russinoff A Mechanically Checked Proof of IEEE Compliance of the Floating Point Multiplication, Division and Square Root Algorithms of the AMD-K7™ Processor , 1998, LMS J. Comput. Math..

[18]  Natarajan Shankar,et al.  Efficient Parallel Circuits and Algorithms for Division , 1988, Inf. Process. Lett..

[19]  Wolfgang J. Paul,et al.  To Booth or not to Booth , 2002, Integr..

[20]  Domenico Ferrari,et al.  A Division Method Using a Parallel Multiplier , 1967, IEEE Trans. Electron. Comput..

[21]  Miriam Leeser,et al.  Area and performance tradeoffs in floating-point divide and square-root implementations , 1996, CSUR.

[22]  Donald Ervin Knuth,et al.  The Art of Computer Programming , 1968 .