PowerPoint PresentationExample: Representing 1/3 in MIPSRepresentation for ± ∞Representation for 0Special NumbersRepresentation for Not a NumberRepresentation for Denorms (1/2)Representation for Denorms (2/2)RoundingIEEE Four Rounding ModesInteger Multiplication (1/3)Integer Multiplication (2/3)Integer Multiplication (3/3)Integer Division (1/2)Integer Division (2/2)Unsigned Instructions & OverflowFP Addition & SubtractionMIPS Floating Point Architecture (1/4)MIPS Floating Point Architecture (2/4)MIPS Floating Point Architecture (3/4)MIPS Floating Point Architecture (4/4)Peer InstructionAs Promised, the way to remember #s“And in conclusion…”CS 61C L16 : Floating Point II (1)Garcia, Fall 2004 © UCBLecturer PSOE Dan Garciawww.cs.berkeley.edu/~ddgarciainst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 16 – Floating Point II 2004-10-06VP debate… Cheney & Edwardstook off their gloves and both came out strong. Will you just answer the question, please? Both are seasoned orators…cnn.com/2004/ALLPOLITICS/10/05/debate.main/CS 61C L16 : Floating Point II (3)Garcia, Fall 2004 © UCBExample: Representing 1/3 in MIPS•1/3 = 0.33333…10= 0.25 + 0.0625 + 0.015625 + 0.00390625 + … = 1/4 + 1/16 + 1/64 + 1/256 + …= 2-2 + 2-4 + 2-6 + 2-8 + …= 0.0101010101… 2 * 20= 1.0101010101… 2 * 2-2•Sign: 0•Exponent = -2 + 127 = 125 = 01111101•Significand = 0101010101…0 0111 1101 0101 0101 0101 0101 0101 010CS 61C L16 : Floating Point II (4)Garcia, Fall 2004 © UCBRepresentation for ± ∞•In FP, divide by 0 should produce ± ∞, not overflow.•Why?•OK to do further computations with ∞ E.g., X/0 > Y may be a valid comparison•Ask math majors•IEEE 754 represents ± ∞•Most positive exponent reserved for ∞•Significands all zeroesCS 61C L16 : Floating Point II (5)Garcia, Fall 2004 © UCBRepresentation for 0•Represent 0?•exponent all zeroes•significand all zeroes too•What about sign?•+0: 0 00000000 00000000000000000000000•-0: 1 00000000 00000000000000000000000•Why two zeroes?•Helps in some limit comparisons•Ask math majorsCS 61C L16 : Floating Point II (6)Garcia, Fall 2004 © UCBSpecial Numbers•What have we defined so far? (Single Precision)Exponent Significand Object0 0 00 nonzero ???1-254 anything +/- fl. pt. #255 0 +/- ∞255 nonzero ???•Professor Kahan had clever ideas; “Waste not, want not”•Exp=0,255 & Sig!=0 …CS 61C L16 : Floating Point II (7)Garcia, Fall 2004 © UCBRepresentation for Not a Number•What is sqrt(-4.0)or 0/0?•If ∞ not an error, these shouldn’t be either.•Called Not a Number (NaN)•Exponent = 255, Significand nonzero•Why is this useful?•Hope NaNs help with debugging?•They contaminate: op(NaN, X) = NaNCS 61C L16 : Floating Point II (8)Garcia, Fall 2004 © UCBRepresentation for Denorms (1/2)•Problem: There’s a gap among representable FP numbers around 0•Smallest representable pos num:a = 1.0… 2 * 2-126 = 2-126•Second smallest representable pos num:b = 1.000……1 2 * 2-126 = 2-126 + 2-149a - 0 = 2-126b - a = 2-149ba0+-Gaps!Normalization and implicit 1is to blame!RQ answer!CS 61C L16 : Floating Point II (9)Garcia, Fall 2004 © UCBRepresentation for Denorms (2/2)•Solution:•We still haven’t used Exponent = 0, Significand nonzero•Denormalized number: no leading 1, implicit exponent = -126.•Smallest representable pos num:a = 2-149 •Second smallest representable pos num:b = 2-1480+-CS 61C L16 : Floating Point II (10)Garcia, Fall 2004 © UCBRounding•Math on real numbers we worry about rounding to fit result in the significant field.•FP hardware carries 2 extra bits of precision, and rounds for proper value•Rounding occurs when converting…•double to single precision•floating point # to an integerRQ answer!CS 61C L16 : Floating Point II (11)Garcia, Fall 2004 © UCBIEEE Four Rounding Modes•Round towards + ∞•ALWAYS round “up”: 2.1 3, -2.1 -2•Round towards - ∞•ALWAYS round “down”: 1.9 1, -1.9 -2•Truncate•Just drop the last bits (round towards 0)•Round to (nearest) even (default)•Normal rounding, almost: 2.5 2, 3.5 4•Like you learned in grade school•Insures fairness on calculation•Half the time we round up, other half downCS 61C L16 : Floating Point II (13)Garcia, Fall 2004 © UCBInteger Multiplication (1/3)•Paper and pencil example (unsigned):Multiplicand 1000 8Multiplier x1001 9 1000 0000 0000 +1000 01001000•m bits x n bits = m + n bit productCS 61C L16 : Floating Point II (14)Garcia, Fall 2004 © UCBInteger Multiplication (2/3)•In MIPS, we multiply registers, so:•32-bit value x 32-bit value = 64-bit value•Syntax of Multiplication (signed):• mult register1, register2•Multiplies 32-bit values in those registers & puts 64-bit product in special result regs:-puts product upper half in hi, lower half in lo•hi and lo are 2 registers separate from the 32 general purpose registers•Use mfhi register & mflo register to move from hi, lo to another registerCS 61C L16 : Floating Point II (15)Garcia, Fall 2004 © UCBInteger Multiplication (3/3)•Example:•in C: a = b * c;•in MIPS:-let b be $s2; let c be $s3; and let a be $s0 and $s1 (since it may be up to 64 bits)mult $s2,$s3 # b*c mfhi $s0 # upper half of # product into $s0mflo $s1 # lower half of # product into $s1•Note: Often, we only care about the lower half of the product.CS 61C L16 : Floating Point II (16)Garcia, Fall 2004 © UCBInteger Division (1/2)•Paper and pencil example (unsigned): 1001 Quotient Divisor 1000|1001010 Dividend -1000 10 101 1010 -1000 10Remainder (or Modulo result)•Dividend = Quotient x Divisor + RemainderCS 61C L16 : Floating Point II (17)Garcia, Fall 2004 © UCBInteger Division (2/2)•Syntax of Division (signed):•div register1, register2•Divides 32-bit register 1 by 32-bit register 2: •puts remainder of division in hi, quotient in lo•Implements C division (/) and modulo (%)•Example in C: a = c / d;b = c % d;•in MIPS: a$s0;b$s1;c$s2;d$s3div $s2,$s3 # lo=c/d, hi=c%d mflo $s0 # get quotientmfhi $s1 # get remainderCS 61C L16 : Floating Point II (18)Garcia, Fall 2004 © UCBUnsigned Instructions & Overflow•MIPS also has versions of mult, div for unsigned operands:multudivu•Determines whether or not the product and quotient are changed if the operands are signed or unsigned.•MIPS does not check overflow on ANY signed/unsigned multiply, divide
View Full Document