William Stallings Computer Organization and Architecture

43
Rev. 3 (2005-06) by Enrico Na rdelli 1 8 - William Stallings Computer Organization and Architecture Chapter 9 Computer Arithmetic

description

William Stallings Computer Organization and Architecture. Chapter 9 Computer Arithmetic. Arithmetic & Logic Unit. Does the calculations Almost everything else in the computer is there to service this unit Handles integers May handle floating point (real) numbers. ALU Inputs and Outputs. - PowerPoint PPT Presentation

Transcript of William Stallings Computer Organization and Architecture

Page 1: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 18 -

William Stallings Computer Organization and Architecture

Chapter 9Computer Arithmetic

Page 2: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 28 -

Arithmetic & Logic Unit

• Does the calculations• Almost everything else in the computer is

there to service this unit• Handles integers• May handle floating point (real) numbers

Page 3: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 38 -

ALU Inputs and Outputs

Page 4: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 48 -

Reminder

• Let A=an-1an-2…a1a0 be a binary number

• Its (decimal) value is:

1

0

2n

ii

i aA

Example: 10010 = 24 + 21 = 16 + 2 = 18

Page 5: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 58 -

Conversion of integer to binary

• Represent (111)10 in pure binary• Repeat division by 2

111:2= 55 remainder 1 55:2= 27 remainder 1 27:2= 13 remainder 1 13:2= 6 remainder 1 6:2= 3 remainder 0 3:2= 1 remainder 1 1:2= 0 remainder 1

• RESULT: 1101111

Page 6: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 68 -

Integer Representation

• Only have 0 & 1 to represent everything• Positive numbers stored in binary

e.g. 41=00101001 Binary digit = Bit

• No minus sign• Negative integer representations:

Sign-Magnitude Two’s complement

Page 7: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 78 -

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 8: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 88 -

A better representation:Two’s Complement

• Let A=an-1an-2…a1a0 be a n-length binary string

• It’s value is in Two’s Complement representation is:

2

01

1 22n

ii

in

n aaA

if an-1=0 then A is a non-negative number

if an-1=1 then A is a negative number

Page 9: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 98 -

Two’s Complement: examples

-128 64 32 16 8 4 2 1

0 1 0 0 0 1 1 0

-128 64 32 16 8 4 2 1

1 0 0 0 0 0 1 1

-128 64 32 16 8 4 2 1

1 0 0 0 1 0 0 0

+64 +4 +2 = 70

-128 +2 +1 = -125

-128 +8 = -120

Page 10: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 108 -

Benefits

• Only one representation of zero+0 = 0000 -1 = 1111+1 = 0001 -2 = 1110+2 = 0010 -3 = 1101+3 = 0011 -4 = 1100+4 = 0100 -5 = 1011+5 = 0101 -6 = 1010+6 = 0110 -7 = 1001+7 = 0111 -8 = 1000

• Arithmetic works easily (see later)

Page 11: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 118 -

Geometric Depiction of Two’s Complement Integers

Page 12: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 128 -

Range of Numbers

• 8 bit 2’s complement+127 = 01111111 = 27 -1 -128 = 10000000 = -27

• 16 bit 2’s complement+32767 = 01111111 11111111 = 215 - 1 -32768 = 10000000 00000000 = -215

Page 13: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 138 -

2’s Complement representation for negative numbers

• To represent a negative number using the “two’s complement” technique:1. First decide how many bits are used for

representation2. Then write the modulo of the negative number3. Then, change each 0 in 1, each 1 in 0

(Boolean Complement or “one’s complement”)

4. Finally, add 1 (as the result of Step 3 was a pure binary number)

Page 14: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 148 -

Examples• E.g.: how to represent -3 with 4 bits:

Start from +3 = 0011 Boolean complement gives 1100 Add 1 to LSB gives -3 1101

• Represent -20 with 8 bits: Start from +20 = 00010100 Bolean complement gives 11101011 Add 1 11101100

• Negation works in the same way, e.g. negation of -3 is obtained by the “two’s complement” of -3: Representation of -3 1101 Boolean complement gives 0010 Add 1 to LSB gives -(-3)=+3 0011

Page 15: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 158 -

Negation Special Case 1

• 0 = 0000• Bitwise NOT 1111 (Boolean

complement)• Add 1 to LSB +1• Result 1 0000• Carry is ignored, so:• - 0 = 0 OK !

Page 16: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 168 -

Negation Special Case 2

• -8 = 1000• Bitwise NOT 0111 (Boolean

complement)• Add 1 to LSB +1• Result 1000• So:• -(-8) = -8 WRONG !• Monitor MSB (sign bit)• If it does not change during negation there

is a mistake (but for 0!)

Page 17: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 178 -

Conversion Between Lengths

• Positive number: pack with leading zeroes+18 = 00010010+18 = 00000000 00010010

• Negative number: pack with leading ones-18 = 11101110-18 = 11111111 10010010

• i.e. pack with MSB (sign bit)

Page 18: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 188 -

Addition and Subtraction

• Addition: standard• Overflow: when the result needs more bits to be

represented• Monitor MSB: if it changes there may be an

overflow When Pos + Pos or Neg + Neg the sign bit should not

change: if it does there is an overflow

• Subtraction: 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 19: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 198 -

Addition: examples

1001 + -70101 = 51110 -2

0011 + 30100 = 40111 7

1100 + -40100 = 40000 01

1100 + -41111 = -11011 -51

1001 + -71010 = -60011 overflow1

0101 + 50100 = 41001 overflow

Page 20: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 208 -

Hardware for Addition and Subtraction

Page 21: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 218 -

Multiplication

• Complex• Work out partial

product for each digit• Take care with place

value (column)• Add partial products

1 0 1 1 X

1 1 0 1 =

1 0 1 1 +

0 0 0 0 - +

1 0 1 1 - - +

1 0 1 1 - - - =

1 0 0 0 1 1 1 1

Page 22: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 228 -

Multiplication Example

• Multiplicand (11 dec)• Multiplier (13 dec)• Sum partial products• Note: if multiplier bit is

1 copy multiplicand (place value) otherwise put all zeroes

• Product (143 dec)• Note: need double

length

1 0 1 1 X

1 1 0 1 =

1 0 1 1 +

0 0 0 0 - =

0 1 0 1 1 +

1 0 1 1 - - =

1 1 0 1 1 1 +

1 0 1 1 - - - =

1 0 0 0 1 1 1 1

Page 23: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 238 -

Flowchart for Unsigned Binary Multiplication

A stores the most significant bits of the result

C is the carry bit for A Q initially stores the multiplier but

at the end stores the less significant bits of the result

C, A, Q are right shifted as a whole

Page 24: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 248 -

Execution of Example

Page 25: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 258 -

Unsigned Binary Multiplication

Page 26: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 268 -

Multiplying Negative Numbers

• Previous approach does not work!• Solution 1

Convert to positive if required Multiply as above If signs were different, negate answer

• Solution 2 Booth’s algorithm

• Uses two’s complement representation• More efficient

Page 27: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 278 -

Real Numbers

• …very informally, numbers with the fractional point

• Actually, only finite precision real numbers

• we need to code the binary point• we need to code the binary point

position• Solution: floating point numbers

Page 28: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 288 -

Reminder

• Let A=an-1an-2…a1a0 ,a-1,a-2,…,a-m be a binary number

• Its (decimal) value is:

11

0

22mj

jj

n

ii

i aaA

Example:1001,1011 = 23 + 20 +2-1 + 2-3 + 2-4 =9,6875

2-1 2-2 2-3 2-4 2-5

0,5 0,250 0,125 0,0625 0,03125

Page 29: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 298 -

Decimal to binary conversion (1)

• Represent (11,6875)10 in pure binary

• Integer part: iterate division taking the remainders

• Binary representation for (11)10 ?11:2 = 5 remainder 1 Least Significant Bit 5:2 = 2 remainder 1 2:2 = 1 remainder 0 1:2 = 0 remainder 1 Most Significant Bit

• Result: 1011• N.B.: Result bits are produced in reverse order

Page 30: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 308 -

Decimal to binary conversion (2)

• Fractional part: iterate multiplication taking the integer parts

• Binary representation for 0,6875 ?0,6875 x 2 = 1,375 take 1 MSB0,375 x 2 = 0,75 take 00,750 x 2 = 1,5 take 1

0,5 x 2 = 1,0 take 1 LSB

• Result: 0,1011• N.B.: Result bits here are produced MSB to LSB• the procedure sometimes does not converge

stop when the desired precision is reached

Page 31: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 318 -

Real Numbers

• Where is the binary point? Fixed?

• Very limited

Moving?• How do you show where it is?

• Example:

976.000.000.000.000

0,0000000000000976

= 9,76 * 1014

= 9,76 * 10-14

Page 32: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 328 -

Floating Point

• Represents the value+/- .<significand> * <base><exponent>

• “Floating” refers to the fact that the true position of the point “floats” according to the value of the exponent

Sig

n bi

t

BiasedExponent

Significand or Mantissa

Page 33: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 338 -

Normalization

• Floating Point numbers are usually normalized exponent is adjusted so that there is a single bit equal

to 1 before the binary point

• Similar to scientific notation for decimal numbers where numbers are normalized to give a single digit before the decimal point

3123 = 3.123 x 103

(10,0101)2 = 10010,1 * 2-3

= 1001010 * 2-5

= 0,00100101 * 24

Page 34: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 348 -

Normalization

• A normalized number ( 0) has the following form:

• The base (or radix) for the exponent is suppose to be 2 (so it is not represented)

• Since MSB of the mantissa is always 1 there is no need to represent it

+/- 1,bbb…b * 2 +/- E

where b {0,1}

Page 35: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 358 -

Representation of Floating Point(IEEE Standard)

• Mantissa uses 23 bits to store a 24 bits number in the interval [1,2)

• Sign is stored in the first bit• Exponent value is represented in excess or biased notation with 8 bits

• Excess (bias) 127 means 8 bit exponent field Nominal exponent value has range 0-255 Subtract 127 (= 28-1-1) to get correct exponent value Real range of exponent value is -127 to +128

Page 36: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 368 -

excess (bias) notation

• Two parameters are specified: the number of bits n the bias value K

(usually, K=2n -1 -1)

• the string consisting of all 0s represents the value –K

• the string consisting of all 1s represents the value –K + 2n-1

n = 4 K=7

0000 = -70001 = -60010 = -50011 = -40100 = -30101 = -20110 = -10111 = 0

1000 = 11001 = 21010 = 31011 = 41100 = 51101 = 61110 = 71111 = 8

Page 37: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 378 -

Floating Point Examples

147 = 127+20

107 = 127-20

Page 38: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 388 -

Expressible Numbers

2-127-2-127 (2-2-23)*2128-(2-2-23)*2128

Page 39: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 398 -

density• Precision decreases with the increase of modulo

(representation is denser for smaller numbers)• How many numbers can we represent in the

interval [2,4)?• And in the range [4,8)?• they are the same: 223

Note: Finite precision: (10.0/3.0)*3.0 may be different from 10.0

Page 40: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 408 -

Special cases

• Some strings are interpreted as special strings• Two representations for zero (posit. and negat.)

+/- 0 = 0/1 00000000 00000000000000000000000

• Able to represent infinity (posit. and negat.) +/- = 0/1 11111111 00000000000000000000000

• Non-normalized numbers: 0/1 00000000 (string different to all 0s)

• NAN = Not A Number Result of an operation which has no solution Propagated as NAN through subsequent operations representation: 0/1 11111111 (string different to all 0s)

Page 41: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 418 -

FP Arithmetic: addition and subtraction

• Check for zero• Align significands (adjusting exponents)• Add or subtract significands• Normalize result

Page 42: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 428 -

FP Arithmetic: multiplication and division

• Check for zero• Add/subtract exponents • Multiply/divide significands (watch sign)• Normalize• Round• All intermediate results should be in

double length storage

Page 43: William Stallings  Computer Organization  and Architecture

Rev. 3 (2005-06) by Enrico Nardelli 438 -

Hexadecimal representation

• A compact representation for binary numbers

• A byte (8 bit) is represented by 2 hex values

• Examples:0011 1100 => 3C0111 1111 1100 1001 -> 7FC9

• Used for numbers and code

0000 00001 10010 20011 30100 40101 50110 60111 71000 81001 91010

A (10)1011

B (11)1100

C (12)1101

D (13)1110 E

(14)1111 F

(15)