sep 10, 2009sysc 2001 - f09. sysc2001-ch9.ppt1 see stallings chapter 9 computer arithmetic
TRANSCRIPT
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 1
See Stallings Chapter 9
Computer Arithmetic
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 2
Arithmetic & Logic Unit (ALU)
ALU does the calculations
“Everything else in the computer is there to service this unit” (!)
Handles integers
May handle floating point (real) numbers
• there may be a separate floating point unit (FPU) (“math co-processor”)
• or an on-chip separate FPU (486DX +)
• on Pentium (earlier slides) multiple ALUs and FPUs
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 3
ALU Inputs and Outputs
requested arithmetic operation
operands (in) operands (out)
Status e.g overflow?
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 4
Integer Representation Positive numbers stored in binary
• e.g. 41=00101001
Only have 0 & 1 to represent everything
• No minus sign!
• No period!
• Exponent?
Two approaches to integers• Sign-Magnitude
• Twos complement
unsigned integers?
“counting numbers”?
Is zero positive?
(NO!)
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 5
Sign-Magnitude Approach
Left most bit is sign bit
• 0 means positive
• 1 means negative
+18 = 00010010
-18 = 10010010
Problems!!
• Need to consider both sign and magnitude in arithmetic
• Two representations of zero (+0 and -0)
• Leftmost bit is most significant bit (msb)• Rightmost bit is least significant bit (lsb)
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 6
Two’s Complement
+3 = 00000011
+2 = 00000010
+1 = 00000001
+0 = 00000000 00000000
-1 = 11111111 11111111
-2 = 11111110
-3 = 11111101
subtract 1
subtract 1 ???? add 1
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 7
Aside re Binary ArithmeticYou should already know that
02+12 = 12
012+ 012 = 102 (or 12+12 = 02 carry 1)
112 + 12 = 002 carry 1
12 – 12 = 02 (no borrow), 02 – 12 = 12 borrow 1
00..002 – 12 = 11..112 borrow 1
000112 = 0•24 + 0•23 + 0•22 + 1•21 + 1•20 = bi 2ii=0
K-1
K bit binary number, e.g. K = 5
b2
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 8
Two’s Complement Benefits
One representation of zero
Arithmetic works easily (see later)
Negating is fairly easy:
• 310 = 000000112
• bitwise complement gives 11111100
• Add 1 11111101 = –310
one’s complementtwo’s complement
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 9
Two’s Complement Benefits
What about negating a negative number ?
• – 310 = 111111012
• bitwise complement gives 00000010
• Add 1 00000011 = 310
GOOD! – ( – 3 ) = 3
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 10
Two’s Complement Integers
In n bits, can store integers from
–2n-1 to + 2n-1 – 1
neg pos
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 11
Range of Numbers
8 bit 2s complement
• +127 = 01111111 = 27 -1
• -128 = 10000000 = -27
16 bit 2s complement
• +32767 = 01111111 11111111 = 215 - 1
• -32768 = 10000000 00000000 = -215
N bit 2s complement
• 011111111..11111111 = 2N-1 - 1
• 100000000..00000000 = -2N-1
Largest positive
Smallest (?) negative
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 12
Negation Special Case 1
0 = 00000000
Bitwise not 11111111
Add 1 +1
Result 1 00000000
if this bit is ignored:
– 0 = 0 OK
hmmm . . .
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 13
Carry vs. Overflow So . . . what about the ignored bit on the last slide?
CARRY: is an artifact of performing addition
• always happens: for binary values, carry = 0 or 1
• exists independently of computers!
OVERFLOW: an exception condition that results from using computers to perform operations
• caused by restricting values to fixed number of bits
• occurs when result exceeds range for the number of bits
• important limitation of using computers!e.g. Y2K bug!
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 14
Overflow is Implementation Dependent!
recall example: negation of 0
binary addition is performed – regardless of interpretation
11111111
+1
1 00000000
carryfixed number
of bits torepresent
values
for this additionthe answer is:
0 with carry = 1
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 15
Unsigned Interpretation Overflow
consider values as unsigned integers
11111111
+1
1 00000000
but . . . 255 + 1 = 256 ??
answer = 0 ???
OVERFLOW occurred!
WHY? cannot represent 256 as an 8-bit unsigned integer!
25510
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 16
Signed Interpretation No Overflow
consider values as signed integers
11111111
+1
1 00000000
–1 + 1 = 0
answer is correct!
OVERFLOW did not occur (even though carry =1!)
WHY? can represent 0 as an 8-bit signed integer!
– 110
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 17
Negation Special Case 2
– 128 = 10000000
bitwise not 01111111
Add 1 to lsb +1
Result 10000000
Whoops!
– (– 128) = – 128
Need to monitor msb (sign bit)
It should change during negation?
Problem! OVERFLOW!
what about negating zero?
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 18
Conversion Between Lengths, e.g. 8 16
Positive number: add leading zeros
• +18 = 00010010
• +18 = 00000000 00010010
Negative numbers: add leading ones
• -18 = 11101110
• -18 = 11111111 11101110
i.e. pack with msb (sign bit) called “sign extension”
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 19
Addition and Subtraction
a – b = ?
Normal binary addition
Monitor sign bit of result for overflow
Take twos complement of b and add to a
• i.e. a – b = a + (– b)
So we only need addition and 2’s complement circuits
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 20
Hardware for Addition and Subtraction
A – B = ?2’s
CF
Adders
Fall 2008 SYSC 5704: Elements of Computer Systems
21
Murdocca, Figure 3-2Ripple-Carry Adder
Murdocca, Figure 3-6Addition/Subtraction Unit
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 22
Multiplication
Complicated
1. Work out partial product for each digit
2. Take care with place value (column)
3. Add partial products
Aside: Multiply by 2? (shift?)
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 23
Multiplication Example
1011 Multiplicand (1110)
x 1101 Multiplier (1310)
1011 Partial products
0000 Note: if multiplier bit is 1
1011 copy multiplicand (place value)
1011 otherwise zero
10001111 Product (14310)
Note: need double length result – could easily overflow single word
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 24
Unsigned Binary Multiplication
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 25
Execution of 4-Bit ExampleM x Q = A,Q
1 add
0 no add
1 add
1 add
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 26
Flowchart for Unsigned Binary Multiplication
number of bits
Fall 2008 SYSC 5704: Elements of Computer Systems
27
Array Multiplier
Murdocca,Figure 3-23
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 28
Multiplying Negative Numbers
Multiplying negative numbers by this method does not work!
Solution 1
• Convert to positive if required
• Multiply as above
• If signs were different, negate answer
Solution 2
• Booth’s algorithm – not in scope of course? (Page 322)
Fall 2008 SYSC 5704: Elements of Computer Systems
29
Computer Architecture: Arithmetic
Booth’s Algorithm : Increase speed of a multiplication when there are consecutive ones or zeros in the multiplier.
• Based on shifting of multiplier from right-to-left
1. If at boundary of a string of 0’s, add multiplicand to product (in proper column)
2. If at boundary of a string of 1’s, subtract multiplicand to product (in proper column)
3. If within string, just shift.
Booth’s Algorithm
Example of Booth’s Algorithm
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 33
Division
More complex than multiplication
Negative numbers are really bad!
Based on long division
Aside: Divide by 2? (shift?)
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 34
001111
Division of Unsigned Binary Integers
1011
00001101
100100111011001110
1011
1011100
Quotient
Dividend
Remainder
PartialRemainders
Divisor
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 35
Flowchart for Unsigned Binary Division
differences with multiply?
shift left
subtract?
no “C”
add
Quotient
Remainder
Divisor
Subtract
Shift left
/ Dividend
Fall 2008 SYSC 5704: Elements of Computer Systems
36
• Division is somewhat more complex than multiplication; based on the same general principles
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 37
Real Numbers
Numbers with fractions
Could be done in pure binary
• 1001.1010 = 23 + 20 + 2-1 + 2-3 = 9.625
Where is the binary point?
Fixed?
• Very limited representation ability
Moving?
• How do you show where it is?
fixed point
floating point
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 38
Normalization
Floating Point (FP) numbers are usually normalized
• i.e. exponent is adjusted so that leading bit (msb) of significand is always 1
Since msb is always 1 there is no need to store it
Recall scientific notation where numbers are normalized to give a single digit before the decimal point
e.g. 3.123 x 103
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 39
Floating Point (Scientific Notation)
+/ – 1.significand x 2exponent
Floating point misnomer: Point is actually fixed after first digit of the significand: 1.xxxxxx
• xxxxxx is stored signficand
Exponent indicates place value (point position)
Sig
n bi
t
(Biased)exponent
(stored) significand
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 40
Floating Point Examples
Typo here!What's wrong?
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 41
Signs for Floating Point
Significand: explicit sign bit (msb)
• rest of bits are magnitude (sort of)
Exponent is in excess or biased notation
• 8 bit exponent field
• binary value range 0-255
• Excess (bias) 127 means
– Subtract 127 to get correct value
– Range -127 to +128
for k bit exponent:bias = 2k–1 –1
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 42
FP Ranges
Range: The range of numbers that can be represented
• For a 32 bit number
• 8 bit exponent
• +/- 2127 +/- 1.5 x 1038
Accuracy: The effect of changing lsb of significand
• 23 bit significand 2-23 1.2 x 10-7
• About 6 decimal places
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 43
Expressible Numbers
22
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 44
IEEE 754
Standard for floating point storage
32 and 64 bit standards
8 and 11 bit exponent respectively
Extended formats (both significand and exponent) for intermediate results
special cases: (table 9.4, page 318)
• 0 (how to normalize?)
• denormalized (for arithmetic)
(how to quantify?)
• Not a number (NaN exception)
How?use exponent = all 0’s zero, denormalized use exponent = all 1’sinfinity, NAN reduces range! 2 –126 to 2127
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 45
IEEE 754 Formats
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 46
FP Arithmetic +/-
Check for zeros
Align significands (adjusting exponents)
denormalize!
Add or subtract significands
Normalize result
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 47
FP Addition & Subtraction Flowchart
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 48
FP Arithmetic x /
Check for zero
Add/subtract exponents
Multiply/divide significands (watch sign)
Normalize
Round
All intermediate results should be in double length storage
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 49
Floating Point Multiplication
1.xxxxx x 2bias+a
1.yyyyy x 2bias+b
x
Sep 10, 2009 SYSC 2001 - F09. SYSC2001-Ch9.ppt 50
Floating Point Division