29
Computer Architecture Fall 2007 © August 29, 2007 Karem Sakallah [email protected] www.qatar.cmu.edu/~msakr/15447-f07/ CS 447 – Computer Architecture Lecture 2 Computer Arithmetic (1)

Computer ArchitectureFall 2007 © August 29, 2007 Karem Sakallah [email protected] msakr/15447-f07/ CS 447 – Computer Architecture

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

Computer Architecture Fall 2007 ©

August 29, 2007

Karem [email protected]

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

CS 447 – Computer Architecture

Lecture 2

Computer Arithmetic (1)

Computer Architecture Fall 2007 ©

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, the

lecture first examines the representation of

numbers and then discusses arithmetic

operations.

Computer Architecture Fall 2007 ©

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 (maths co-processor)

Computer Architecture Fall 2007 ©

ALU Inputs and Outputs

Computer Architecture Fall 2007 ©

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 2007 ©

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 2007 ©

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 2007 ©

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 2007 ©

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 2007 ©

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 2007 ©

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 2007 ©

Two’s Complement°+3 = 00000011

°+2 = 00000010

°+1 = 00000001

°+0 = 00000000

° -3 = 11111101

° -2 = 11111110

° -1 = 11111111

° -0 = 00000000

Computer Architecture Fall 2007 ©

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 2007 ©

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 2007 ©

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 2007 ©

Geometric Depiction of Two’s Complement Integers

Computer Architecture Fall 2007 ©

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 2007 ©

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 2007 ©

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 2007 ©

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 2007 ©

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 2007 ©

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 2007 ©

Hardware for Addition and Subtraction

Computer Architecture Fall 2007 ©

Multiplication

°Complex

°Work out partial product for each digit

°Take care with place value (column)

°Add partial products

Computer Architecture Fall 2007 ©

Multiplication Example

° 1011 Multiplicand (11 dec)

° x 1101 Multiplier (13 dec)

° 1011 Partial products

° 0000 Note: if multiplier bit is 1 copy

° 1011 multiplicand (place value)

° 1011 otherwise zero

° 10001111 Product (143 dec)

° Note: need double length result

Computer Architecture Fall 2007 ©

Unsigned Binary Multiplication

Computer Architecture Fall 2007 ©

Execution of Example

Computer Architecture Fall 2007 ©

Flowchart for Unsigned Binary Multiplication

Computer Architecture Fall 2007 ©

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