Date post: | 02-Jan-2016 |
Category: |
Documents |
Upload: | jinelle-taylor |
View: | 24 times |
Download: | 0 times |
Computer Architecture Fall 2008 ©
August 25, 2008
www.qatar.cmu.edu/~msakr/15447-f08/
CS 447 – Computer Architecture
Lecture 3
Computer Arithmetic (1)
Computer Architecture Fall 2008 ©
Computers and Arithmetic operations°How do computers represent numbers?•How about negative numbers?
°How do computers add? subtract? multiply? etc…•Hardware or software?
•What happens if the resulting number is bigger than the space we have for it?
°How about fractions?
Computer Architecture Fall 2008 ©
Chapter objectives
In this lecture we will focus on the representation of
numbers and techniques for implementing
arithmetic operations. Processors typically
support two types of arithmetic: integer (or fixed
point), and floating point. For both cases, we first
examine the representation of numbers and then
discusses arithmetic operations.
Computer Architecture Fall 2008 ©
Arithmetic & Logic Unit°Does the calculations
°Everything else in the computer is there to service this unit
°Handles integers
°May handle floating point (real) numbers
°May be separate (math co-processor)
Computer Architecture Fall 2008 ©
ALU Inputs and Outputs
Computer Architecture Fall 2008 ©
Review: Decimal Numbers
° Integer Representation• number is sum of DIGIT * “place value”
2
100
d0
9
101
d1
7
102
d2
3
103
d3
0
104
d4
0
105
d5
0
106
d6
0
107
d7
379210= 3 103 + 7 102 + 9 101 + 2 100
= 3000 + 700 + 90 + 2
Range0 to 10n - 1
Computer Architecture Fall 2008 ©
Review: Decimal Numbers
3 7 9 2 + 0 5 3 1
° Adding two decimal numbers• add by “place value”, one digit at a time
3792 + 531
???
1 “carry 1” because9+3 = 12
0 4 3 2 3
Computer Architecture Fall 2008 ©
Binary Numbers
0
20
b0
0
21
b1
1
22
b2
0
23
b3
0
24
b4
1
25
b5
1
26
b6
0
27
b7
011001002 = 26 + 25 + 22
= 64 + 32 + 4 = 10010 Range
0 to 2n - 1
• Humans can naturally count up to 10 values, but computers can count only up to 2 values (0 and 1)
• (Unsigned) Binary Integer Representation “base” of place values is 2, not 10
Computer Architecture Fall 2008 ©
Binary Representation
If a number is represented in n = 8-bits
Value in Binary:
Value in Decimal:
27.a7 + 26.a6 + 25.a5 + 24.a4 + 23.a3 + 22.a2 + 21.a1 + 20.a0
Value in Binary:
Value in Decimal:
2n-1.an-1 + 2n-2.an-2 + … + 24.a4 + 23.a3 + 22.a2 + 21.a1 + 20.a0
a7 a6 a5 a4 a3 a2 a1 a0
an-1 an-2… a4 a3 a2 a1 a0
Computer Architecture Fall 2008 ©
How to convert from decimal to binary?
4236346001
0
20
a0
0
21
a1
1
22
a2
0
23
a3
0
24
a4
1
25
a5
1
26
a6
0
27
a7
04
1. Find the biggest power of two
smaller than the remaining number
2. Corresponding digit is one; subtract
the number.
3. Other digits are zero
Computer Architecture Fall 2008 ©
Binary Arithmetic
A bits 1 1 1 0B bits + 0 1 1 1
° Add up to 3 bits at a time per place value• A and B
• “carry in”
° Output 2 bits at a time• sum bit for that place value
• “carry out” bit(becomes carry-in of next bit)
° Can be done using a function with 3 inputs, 2 outputs
carry-in bits 1 1 1 0 0
sum bits 0 1 0 1carry-out bits 1 1 1 1 0
FA carry in
carry out
sum
AB
Computer Architecture Fall 2008 ©
Integer Representation
°Only have 0 & 1 to represent everything
°Positive numbers stored in binary
•e.g. 41=00101001
°No minus sign
°No period
°Sign-Magnitude
°Two’s complement
Computer Architecture Fall 2008 ©
Sign-Magnitude
°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)
Computer Architecture Fall 2008 ©
Two’s Complement°+3 = 00000011
°+2 = 00000010
°+1 = 00000001
°+0 = 00000000
° -3 = 11111101
° -2 = 11111110
° -1 = 11111111
° -0 = 00000000
Computer Architecture Fall 2008 ©
Two’s Complement
°+3 = 00000011
°+2 = 00000010
°+1 = 00000001
°+0 = 00000000
° -3 = 11111101
° -2 = 11111110
° -1 = 11111111
° -0 = 00000000
If a number is represented in n = 8-bits
Value in Binary:
Value in Decimal:
27.a7 + 26.a6 + 25.a5 + 24.a4 + 23.a3 + 22.a2 + 21.a1 + 20.a0
a7 a6 a5 a4 a3 a2 a1 a0
Computer Architecture Fall 2008 ©
Benefits
°One representation of zero
°Arithmetic works easily (see later)
°Negating is fairly easy• 3 = 00000011
•Boolean complement gives11111100
•Add 1 to LSB 11111101
Computer Architecture Fall 2008 ©
2's complement
° Only one representation for 0
° One more negative number than positive numbers
0000
0111
0011
1011
11111110
1101
1100
1010
1001
1000
0110
0101
0100
0010
0001
0+1
+2
+3
+4
+5
+6
+7-8
-7
-6
-5
-4
-3
-2
-1
0 100 = + 4 1 100 = - 4
+
-
Computer Architecture Fall 2008 ©
Geometric Depiction of Two’s Complement Integers
Computer Architecture Fall 2008 ©
Negation Special Case 1
° 0 = 00000000
°Bitwise NOT 11111111
°Add 1 to LSB +1
°Result 1 00000000
°Overflow is ignored, so:
° - 0 = 0
Computer Architecture Fall 2008 ©
Negation Special Case 2
° -128 = 10000000
°bitwise NOT 01111111
°Add 1 to LSB +1
°Result 10000000
°So:
° -(-128) = -128 X
°Monitor MSB (sign bit)
° It should change during negation
Computer Architecture Fall 2008 ©
Range of Numbers
°8 bit 2’s complement• +127 = 01111111 = 27 -1
• -128 = 10000000 = -27
°16 bit 2’s complement• +32767 = 011111111 11111111 = 215 - 1
• -32768 = 100000000 00000000 = -215
Computer Architecture Fall 2008 ©
Conversion Between Lengths°Positive number pack with leading zeros
°+18 = 00010010
°+18 = 00000000 00010010
°Negative numbers pack with leading ones
° -18 = 10010010
° -18 = 11111111 10010010
° i.e. pack with MSB (sign bit)
Computer Architecture Fall 2008 ©
Addition and Subtraction
°Normal binary addition
°Monitor sign bit for overflow
°Take two’s complement of subtrahend and add to minuend• i.e. a - b = a + (-b)
°So we only need addition and complement circuits
Computer Architecture Fall 2008 ©
Binary Subtraction
° 2’s complement subtraction: add negative
0 1 0 1 +1 1 0 1
1 0 0 1 0
5 - 3 = 2
0101 001111001101
flip+1
-3 in 2’s complement form
2ignoreoverflow
0 0 1 1 +1 0 1 1
1 1 1 0
3 - 5 = -2
0011
-5 in 2’s complement form
010110101011
flip+1
-200010010
flip+1
(flip+1 also gives positive of negative number)
Computer Architecture Fall 2008 ©
Hardware for Addition and Subtraction
Computer Architecture Fall 2008 ©
Multiplication° How about this algorithm:
result = 0;
While first number > 0 {
add second number to result;
decrement first number;
}
° Does it work? What is the complexity?
° Can you think of a better approach?
° Lets do an example 1001 x 100 • What is this in decimal?
Computer Architecture Fall 2008 ©
Multiplication – longhand algorithm°Just like you learned in school
°For each digit, work out partial product (easy for binary!)
°Take care with place value (column)
°Add partial products
°How to do it efficiently?
Computer Architecture Fall 2008 ©
Example of shift and add multiplication
1 0 1 1x 1 1 0 1
1 0 1 10 0 0 00 1 0 1 1
1 0 1 11 1 0 1 1 1
1 0 1 11 0 0 0 1 1 1 1
°How many steps?
°How do we implement this in hardware?
Computer Architecture Fall 2008 ©
Unsigned Binary Multiplication
Computer Architecture Fall 2008 ©
Execution of Example
Computer Architecture Fall 2008 ©
Flowchart for Unsigned Binary Multiplication
Computer Architecture Fall 2008 ©
Multiplying Negative Numbers°This does not work!
°Solution 1•Convert to positive if required
•Multiply as above
• If signs were different, negate answer
°Solution 2•Booth’s algorithm
Computer Architecture Fall 2008 ©
Aside – cost of these operations°We’d like to be able to finish these operations quickly•Usually in one cycle!
°How do we implement add?•Remember the 1 bit full adder?
°How many adds do we need for a multiply?
°Specialized logic circuits are used to implement these functionalities quickly (e.g., carry look-ahead adders, loop unrolled multiplication)