This paper presents a floating-point addition algorithm and adder pipeline design employing a packet forwarding pipeline paradigm. The packet forwarding format and the proposed algorithms constitute a new paradigm for handling data hazards in deeply pipelined floating-point pipelines. The addition and rounding algorithms employ a four stage execution phase pipeline with each stage suitable for implementation in a short clock period, assuming about 15 logic levels per cycle. The first two cycles are related to addition proper and are the focus of this paper. The last two cycles perform the rounding and have been covered in a paper by D.W. Matula and A.M. Nielsen (1997). The addition algorithm accepts one operand in a standard binary floating-point formal at the start of cycle one. The second operand is represented in the packet forwarding floating-point format: namely, it is divided into four parts: the sign bit, the exponent string, the principal part of the significant, and the carry-round packet. The first three parts of the second operand are input at the start of cycle one and the carry-round packet is input at the start of cycle two. The result is output in two formats that both represent the rounded result as required by the IEEE 754 standard. The result is output in the packet forwarding floating-point format at the end of cycles two and three to allow forwarding with an effective latency of two cycles. The result is also format at the end of cycle four for retirement to a register. The packet forwarding result is thus available with an effective two cycle latency for forwarding to the start of the adder pipeline or to a cooperating multiplier pipeline accepting a packet forwarding operand. The effective latency of the proposed design is two cycles for successive dependent operations while perceiving IEEE 754 binary floating-point compatibility.
[1]
David W. Matula,et al.
Recoders for Partial Compression and Rounding
,
1997
.
[2]
Paul Michael Farmwald,et al.
On the design of high performance digital arithmetic units
,
1981
.
[3]
Michael J. Flynn,et al.
Design And Implementation Of The Snap Floating-Point Adder
,
1991
.
[4]
Michael J. Flynn,et al.
An improved algorithm for high-speed floating-point addition
,
1990
.
[5]
Guy Even,et al.
Pipelined packet-forwarding floating point. II. An adder
,
1997,
Proceedings 13th IEEE Sympsoium on Computer Arithmetic.
[6]
Asger Munk Nielsen,et al.
Number systems and Digit Serial Arithmetic
,
1997
.
[7]
Ansi Ieee,et al.
IEEE Standard for Binary Floating Point Arithmetic
,
1985
.
[8]
Jean-Michel Muller,et al.
JANUS, an on-line multiplier/divider for manipulating large numbers
,
1989,
Proceedings of 9th Symposium on Computer Arithmetic.
[9]
David W. Matula,et al.
Pipelined packet-forwarding floating point. I. Foundations and a rounder
,
1997,
Proceedings 13th IEEE Sympsoium on Computer Arithmetic.
[10]
Jean-Michel Muller,et al.
Some results about on-line computation of functions
,
1989,
Proceedings of 9th Symposium on Computer Arithmetic.
[11]
IEEE standard for binary floating-point arithmetic - IEEE standard 754-1985
,
1985
.
[12]
Michael J. Flynn,et al.
The SNAP project: design of floating point arithmetic units
,
1997,
Proceedings 13th IEEE Sympsoium on Computer Arithmetic.