August 25, 2008 qatar.cmu/~msakr/15447-f08/

# August 25, 2008 qatar.cmu/~msakr/15447-f08/

## August 25, 2008 qatar.cmu/~msakr/15447-f08/

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
##### Presentation Transcript

1. CS 447 – Computer Architecture Lecture 3Computer Arithmetic (1) August 25, 2008 www.qatar.cmu.edu/~msakr/15447-f08/

2. 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?

3. 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.

4. 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)

5. ALU Inputs and Outputs

6. d3 d7 d5 d0 d4 d1 d6 d2 0 2 7 9 0 0 0 3 107 103 104 101 105 100 106 102 Review: Decimal Numbers • Integer Representation • number is sum of DIGIT * “place value” Range 0 to 10n - 1 379210 = 3  103 + 7  102 + 9  101 + 2  100 = 3000 + 700 + 90 + 2

7. 3792 + 531 ??? 1 “carry 1” because 9+3 = 12 0 4 3 2 3 Review: Decimal Numbers • Adding two decimal numbers • add by “place value”, one digit at a time 3 7 9 2 + 0 5 3 1

8. b5 b6 b0 b7 b3 b1 b4 b2 1 0 0 0 1 0 0 1 26 23 24 22 21 20 25 27 Binary Numbers • 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 011001002 = 26 + 25 + 22 = 64 + 32 + 4 = 10010 Range 0 to 2n - 1

9. 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

10. 4 0 How to convert from decimal to binary? • Find the biggest power of two smaller than the remaining number • Corresponding digit is one; subtract the number. • Other digits are zero 1 0 0 6 4 3 6 3 2 4 a7 a6 a5 a4 a3 a2 a1 a0 0 1 1 0 0 1 0 0 27 26 25 24 23 22 21 20

11. Binary Arithmetic • 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 A bits 1 1 1 0 B bits + 0 1 1 1 sum bits 0 1 0 1 carry-out bits 1 1 1 1 0 B A FA carry out carry in sum

12. 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

13. Sign-Magnitude Problems: • Need to consider both sign and magnitude in arithmetic • Two representations of zero (+0 and -0) • Left most bit is sign bit • 0 means positive • 1 means negative • +18 = 00010010 • -18 = 10010010

14. Two’s Complement • -3 = 11111101 • -2 = 11111110 • -1 = 11111111 • -0 = 00000000 • +3 = 00000011 • +2 = 00000010 • +1 = 00000001 • +0 = 00000000

15. Two’s Complement 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 • +3 = 00000011 • +2 = 00000010 • +1 = 00000001 • +0 = 00000000 • -3 = 11111101 • -2 = 11111110 • -1 = 11111111 • -0 = 00000000

16. Benefits • One representation of zero • Arithmetic works easily (see later) • Negating is fairly easy • 3 = 00000011 • Boolean complement gives 11111100 • Add 1 to LSB 11111101

17. -1 0 +1 -2 1111 0000 1110 0001 -3 +2 + 1101 0010 -4 +3 1100 0011 0 100 = + 4 -5 1011 +4 1 100 = - 4 0100 1010 0101 -6 +5 - 1001 0110 +6 -7 1000 0111 +7 -8 2's complement • Only one representation for 0 • One more negative number than positive numbers

18. Geometric Depiction of Two’s Complement Integers

19. Negation Special Case 1 • 0 = 00000000 • Bitwise NOT 11111111 • Add 1 to LSB +1 • Result 1 00000000 • Overflow is ignored, so: • - 0 = 0 

20. 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

21. 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

22. 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)

23. 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

24. 0 0 1 1 +1 0 1 1 1 1 1 0 0 1 0 1 +1 1 0 1 1 0 0 1 0 010110101011 flip +1 Binary Subtraction • 2’s complement subtraction: add negative 5 - 3 = 2 0101 001111001101 flip +1 2 ignoreoverflow -3 in 2’s complement form 3 - 5 = -2 0011 -2 00010010 flip -5 in 2’s complement form +1 (flip+1 also gives positive of negative number)

25. Hardware for Addition and Subtraction

26. 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?

27. 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?

28. Example of shift and add multiplication How many steps? How do we implement this in hardware?

29. Unsigned Binary Multiplication

30. Execution of Example

31. Flowchart for Unsigned Binary Multiplication

32. 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

33. 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)