140 likes | 275 Views
Lecture 12-13 notes. Reading: Section 3.4, 3.5, 3.6 Multiplication Unsigned multiplication Hardware implementation Division Floating point. Unisigned shift-add multiplier (version 1). 64-bit Multiplicand reg, 64-bit ALU, 64-bit Product reg, 32-bit multiplier reg. Shift Left.
E N D
Lecture 12-13 notes • Reading: Section 3.4, 3.5, 3.6 • Multiplication • Unsigned multiplication • Hardware implementation • Division • Floating point
Unisigned shift-add multiplier (version 1) • 64-bit Multiplicand reg, 64-bit ALU, 64-bit Product reg, 32-bit multiplier reg Shift Left Multiplicand 64 bits Multiplier Shift Right 64-bit ALU 32 bits Write Product Control 64 bits Multiplier = datapath + control
MULTIPLY HARDWARE Version 2 • 32-bit Multiplicand reg, 32 -bit ALU, 64-bit Product reg, 32-bit Multiplier reg Multiplicand 32 bits Multiplier Shift Right 32-bit ALU 32 bits Shift Right Product Control Write 64 bits
A3 A2 A1 A0 A3 A2 A1 A0 A3 A2 A1 A0 A3 A2 A1 A0 What’s going on? 0 0 0 0 B0 • Multiplicand stay’s still and product moves right B1 B2 B3 P7 P6 P5 P4 P3 P2 P1 P0
Multiplier is Negative • Convert to positive->mult->sign conversion • Sign extended algorithm: 1 0 0 1 1 (-13) x 0 1 0 1 1 (11) 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 (-143)
Fast Hardware • Use multiple hardware ALUs • Binary tree type structured • Parallel binary addition
Long Divide: Paper & Pencil 1001 Quotient Divisor 1000 1001010 Dividend–1000 10 101 1010 –1000 10 Remainder Dividend = Quotient x Divisor + Remainder
DIVIDE HARDWARE Version 1 • 64-bit Divisor reg, 64-bit ALU, 64-bit Remainder reg, 32-bit Quotient reg Shift Right Divisor 64 bits Quotient Shift Left 64-bit ALU 32 bits Write Remainder Control 64 bits
Initialization: • Set 32-bit Quotient reg to 0 • Place the divisor in the high half of the 64-bit divisor reg • Remainder reg initialized with dividend
Binary representation of fraction • (1001.1001)2 = 1 x 2 3 + 0 x 2 2 + 0 x 2 1 +1 x 2 0 + 1 x 2-1 + 0 x 2-2 + 0 x 2-3 +1 x 2-4 = (9.5625)10 (0.625) 10 = (0.5 + 0.125) 10 = 1 x 2-1 + 0 x 2-2 + 1 x 2-3 = (0.101) 2
Scientific Notation exponent decimal point Sign, magnitude 23 -24 6.02 x 10 1.673 x 10 • Issues: • Arithmetic (+, -, *, / ) • Representation, Normal form • Range and Precision • Rounding • Exceptions (e.g., divide by zero, overflow, underflow) radix (base) Mantissa Sign, magnitude
IEEE 754 Floating-Point 1 8 23 single precision S E F fraction: sign + magnitude, normalized binary significand w/ hidden integer bit: 1.F exponent: excess 127 binary integer actual exponent is e = E - 127 0 < E < 255 S E-127 N = (-1) 2 (1.F) 0 = 0 00000000 0 . . . 0 -1.5 = 1 01111111 10 . . . 0 Magnitude of numbers that can be represented is in the range: -126 127 23 ) 2 (1.0) (2 - 2 to 2 which is approximately: -38 38 to 3.40 x 10 1.8 x 10 (integer comparison valid on IEEE Fl.Pt. numbers of same sign!)
Example: -0.75 in float point • -0.75=-(0.5+0.25)= -(0.11)2 • In scientific notation, the value is -0.112 x 20 • normalized scientific notation: -1.12 x 2-1 • In single precision: • (-1) S x (1 + fraction) x 2 (exponent-127) • S = 1 • fraction = 10000000000000000000000 • Exponent = 126 = 01111110 1 01111110 10000000000000000000000
Floating Point Addition Algorithm • Add x=0.5 and y=– 0.4375 in binary • (2) x= 1.000 x 2-1, y= -1.110 x 2-2. right shift the smaller exponent (y) so that both have same exponent value • y= -0.111 x 2-1 • (3) Add the fraction parts: • 1.000 x 2-1 + -0.111 x 2-1 = 0.001 x 2-1 • (4) left shift result to normalize • 0.001 x 2-1=1.000 x 2-4 • (5) Round (not needed in this example)