1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU1 IEEE Floating Point The IEEE Floating Point Standard and execution units for it
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU2 Lecture overview The standard Floating Point Basics A floating point adder design
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU3 The floating point standard Single Precision Value of bits stored in representation is: If e=255 and f /= 0, then v is NaN regardless of s If e=255 and f = 0, then v = (-1) s If 0 < e < 255, then v = (-1) s 2 e-127 (1.f) – normalized number If e = 0 and f /= 0, the v = (-1) s (0.f) Denormalized numbers – allow for graceful underflow If e = 0 and f = 0 the v = (-1) s 0 (zero)
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU4 The floating point standard Double Precision Value of bits in word representation is: If e=2047 and f /= 0, then v is NaN regardless of s If e=2047 and f = 0, then v = (-1) s If 0 < e < 2047, then v = (-1) s 2 e-1023 (1.f) – normalized number If e = 0 and f /= 0, the v = (-1) s (0.f) Denormalized numbers – allow for graceful underflow If e = 0 and f = 0 the v = (-1) s 0 (zero)
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU5 The floating point standard Notes on single and double precision The leading 1 of the fractional part is not stored for normalized numbers Representation allows for +0 and -0 indicating direction of 0 (allow determination that might matter if rounding was used) Denormalized numbers allow graceful underflow towards 0
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU6 Conversion Examples Converting from base 10 to the representation Single precision example Covert Step 1 – convert to binary In a binary representation form of 1.xxx have = x 2 6
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU7 Conversion Example Continued x 2 6 is binary for 100 Thus the exponent is a 6 Biased exponent will be 6+127=133 = Sign will be a 0 for positive Stored fractional part f will be 1001 Thus we have s e f …. 4 2 C in hexadecimal $42C is representation for 100
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU8 Another example Representation for = = Or x 2 7 S = 1 Exponent is = 134 = Fractional part f = Representation …. Or in Hex $C32F 0000
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU9 Converting back Convert $C32F 0000 into decimal Extract components from S = 1 Exponent = = = 134 unbias 134 – 127 =7 f = so mantissa is Adjust by exponent (move binary pt 7 places) Or = 175 Sign is negative so -175
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU10 Another example Convert $41C to decimal …. S is 0 so positive number Exponent = 128+3= =4 f = 1001 so mantissa is With 4 binary positions have as final number or a decimal 25
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU11 Arithmetic with floating point numbers Add op1 $42C and op2 $41C First divide into component parts Op1 $42C = …. S = 0 E = = 133 – 127 = 6 M op1 = … Op2 $41C = …. S = 0 E = = 131 – 127 = 4 M op2 = …
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU12 Now add the mantissas But first align the mantissas Op …. Op …. Which is the smaller number and needs to be aligned Exponent difference between op1 and op2 is 2 So shift op2 by 2 binary places or Op2 becomes …
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU13 Add Add op1 mantissa with the aligned op2 mantissa … … Result exponent is 6 Value is or =125 Values added were 100 and 25
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU14 Constructing Result Value Sign 0 Exponent 6 E = = 133 – 127 = 6 Mantissa of Result Fractional Part …. Constructed Value $4 2 F A (125)
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU15 Floating point representation of 125 Positive so s is 0 Exponent is = 133 = Fractional part from mantissa of or Constructed value $42FA 0000
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU16 Multiplication example Multiply op1 $42C & op2 $41C First divide into component parts Op1 $42C = …. S = 0 E = = 133 – 127 = 6 M op1 = … Op2 $41C = …. S = 0 E = = 131 – 127 = 4 M op2 = …
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU17 Multiplication basics Base 10 example 3x10 2 * 1.1x10 2 = 3.3 x 10 4 Have 2 numbers A x 2 ea and B x 2 eb Multiply and get result = A*B x 2 ea+eb
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU18 So here Have sign of both is + so result is + Exponent addition Both exponents are biased as stored If you add stored binary exponents you need to subtract the extra bias or 127 Or using pencil and paper (or powerpoint) can just add the unbiased exponent of one operand to the other biased exponent Here have = 137 =
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU19 The mantissas Do a binary multiplication and add Adjusting for binary point have
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU20 Final result Exponent is 137 or 10 Mantissa is Adjusted for exponent Value is Or = = 2500 And we were multiplying 100 * 25
More Examples A = 100$42C S = 0 E = = 133 – 127 = 6 F = ManA = B = 25$41C S = 0 E = = 131 – 127 = 4 F = ManB = /8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU21
Example Continued For A + B need to align binary pt by 2 places ManA = ShfManB = Sum is with a bin exp of $4 2 F A 0 0 1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU22
Subtraction example B = -25 $C1C S = 1 E = = = 4 F = ManB = C = 10 $41C S = 0 E = = = 3 F = ManC = /8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU23
Subtraction ex concluded For B+C need to subtract aligned mantissa of C from B ManB = ManCshftd = result and exp of 4 Normalized mantissa is exponent of 3 Result sign =1 Exp = 130 = Result Man = Result /8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU24
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU25 Specification of a FPA Floating Point Add/Subtract Unit Specification Inputs in IEEE 754 Double Precision Must perform both addition and subtraction Must handle the full floating point standard Normalized numbers Not a Numbers – NaNs +/- Infinity Denormalized numbers
9/25/08 – ECE764 L2a IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU26 Specifications continued Result will be a IEEE 754 Double Precision representation Unit will correctly handle the invalid operation of adding + and - = Nan per the standard Unit latches it inputs into registers from parallel 64-bit data busses. There is a separate signal line that indicates the operation add or subtract
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU27 Specifications continued Outputs The correctly represented result Flags that are output are Zero result Overflow to infinity from normalized numbers as inputs NaN result Overshift (result is the larger of the two operands) Denormalized result Inexact (result was rounded) Invalid operation for addition
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU28 High level block diagram Basic architecture interface Data – 64 bit A,B,& C Busses Control signals – Latch, Add/Sub, Asel, Drive Condition Flags Output – 7 Flag signals Clocks – Phi1 and Phi2 (a 2 phase clocked architecture
1/8/ L24 IEEE Floating Point Basics Copyright Joanne DeGroat, ECE, OSU29 Start the VHDL The entity interface In the next lecture