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

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

Embed Size (px)

DESCRIPTION

CS 447 – Computer Architecture Lecture 3 Computer Arithmetic (1). August 25, 2008 www.qatar.cmu.edu/~msakr/15447-f08/. Computers and Arithmetic operations. How do computers represent numbers? How about negative numbers? How do computers add? subtract? multiply? etc… Hardware or software? - PowerPoint PPT Presentation

Citation preview

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

Computer Architecture Fall 2008 ©

August 25, 2008

www.qatar.cmu.edu/~msakr/15447-f08/

CS 447 – Computer Architecture

Lecture 3

Computer Arithmetic (1)

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

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?

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

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.

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

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)

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

Computer Architecture Fall 2008 ©

ALU Inputs and Outputs

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

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

Computer Architecture Fall 2008 ©

Two’s Complement°+3 = 00000011

°+2 = 00000010

°+1 = 00000001

°+0 = 00000000

° -3 = 11111101

° -2 = 11111110

° -1 = 11111111

° -0 = 00000000

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

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

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

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

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

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

+

-

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

Computer Architecture Fall 2008 ©

Geometric Depiction of Two’s Complement Integers

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

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

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

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

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

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

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

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)

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

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

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

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)

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

Computer Architecture Fall 2008 ©

Hardware for Addition and Subtraction

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

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?

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

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?

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

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?

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

Computer Architecture Fall 2008 ©

Unsigned Binary Multiplication

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

Computer Architecture Fall 2008 ©

Execution of Example

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

Computer Architecture Fall 2008 ©

Flowchart for Unsigned Binary Multiplication

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

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

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

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)