Presentation is loading. Please wait.

Presentation is loading. Please wait.

Computer Arithmetic See Stallings Chapter 9 Sep 10, 2009

Similar presentations


Presentation on theme: "Computer Arithmetic See Stallings Chapter 9 Sep 10, 2009"— Presentation transcript:

1 Computer Arithmetic See Stallings Chapter 9 Sep 10, 2009
SYSC F09. SYSC2001-Ch9.ppt

2 Arithmetic & Logic Unit (ALU)
ALU does the calculations “Everything else in the computer is there to service this unit” (!) Handles integers May handle floating point (real) numbers there may be a separate floating point unit (FPU) (“math co-processor”) or an on-chip separate FPU (486DX +) on Pentium (earlier slides) multiple ALUs and FPUs Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

3 requested arithmetic operation
ALU Inputs and Outputs requested arithmetic operation Status e.g overflow? operands (in) operands (out) Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

4 Integer Representation
Positive numbers stored in binary e.g. 41= Only have 0 & 1 to represent everything No minus sign! No period! Exponent? Two approaches to integers Sign-Magnitude Twos complement unsigned integers? “counting numbers”? Is zero positive? (NO!) Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

5 Sign-Magnitude Approach
Leftmost bit is most significant bit (msb) Rightmost bit is least significant bit (lsb) Left most bit is sign bit 0 means positive 1 means negative +18 = -18 = Problems!! Need to consider both sign and magnitude in arithmetic Two representations of zero (+0 and -0) Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

6 Two’s Complement +3 = 00000011 +2 = 00000010 subtract 1 +1 = 00000001
+0 = -1 = -2 = -3 = subtract 1 subtract 1 ???? add 1 Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

7 Aside re Binary Arithmetic
You should already know that 02+12 = 12 = 102 (or = 02 carry 1) = 002 carry 1 12 – 12 = 02 (no borrow), 02 – 12 = 12 borrow 1 – 12 = borrow 1 = 0•24 + 0•23 + 0•22 + 1•21 + 1•20 =  bi 2i K bit binary number, e.g. K = 5 K-1 i=0 b2 Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

8 Two’s Complement Benefits
One representation of zero Arithmetic works easily (see later) Negating is fairly easy: 310 = bitwise complement gives Add = –310 two’s complement one’s complement Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

9 Two’s Complement Benefits
What about negating a negative number ? – 310 = bitwise complement gives Add = 310 GOOD! – ( – 3 ) = 3 Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

10 Two’s Complement Integers
In n bits, can store integers from –2n-1 to + 2n-1 – 1 neg pos Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

11 Range of Numbers Largest positive Smallest (?) negative
8 bit 2s complement +127 = = 27 -1 -128 = = -27 16 bit 2s complement = = = = -215 N bit 2s complement = 2N-1 - 1 = -2N-1 Largest positive Smallest (?) negative Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

12 Negation Special Case 1 0 = 00000000 Bitwise not 11111111 Add 1 +1
0 = Bitwise not Add Result if this bit is ignored: – 0 = 0 hmmm . . . OK Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

13 Carry vs. Overflow So what about the ignored bit on the last slide? CARRY: is an artifact of performing addition always happens: for binary values, carry = 0 or 1 exists independently of computers! OVERFLOW: an exception condition that results from using computers to perform operations caused by restricting values to fixed number of bits occurs when result exceeds range for the number of bits important limitation of using computers! e.g. Y2K bug! Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

14 Overflow is Implementation Dependent!
recall example: negation of 0 binary addition is performed – regardless of interpretation +1 for this addition the answer is: with carry = 1 fixed number of bits to represent values carry Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

15 Unsigned Interpretation  Overflow
consider values as unsigned integers +1 but = 256 ?? answer = 0 ??? OVERFLOW occurred! WHY? cannot represent 256 as an 8-bit unsigned integer! 25510 Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

16 Signed Interpretation  No Overflow
consider values as signed integers +1 –1 + 1 = 0 answer is correct! OVERFLOW did not occur (even though carry =1!) WHY? can represent 0 as an 8-bit signed integer! – 110 Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

17 what about negating zero?
Negation Special Case 2 – 128 = bitwise not Add 1 to lsb Result Whoops! – (– 128) = – 128 Need to monitor msb (sign bit) It should change during negation? Problem! OVERFLOW! what about negating zero? Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

18 Conversion Between Lengths, e.g. 8  16
Positive number: add leading zeros +18 = +18 = Negative numbers: add leading ones -18 = -18 = i.e. pack with msb (sign bit) called “sign extension” Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

19 Addition and Subtraction
a – b = ? Normal binary addition Monitor sign bit of result for overflow Take twos complement of b and add to a i.e. a – b = a + (– b) So we only need addition and 2’s complement circuits Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

20 Hardware for Addition and Subtraction
A – B = ? CF Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

21 SYSC 5704: Elements of Computer Systems
Adders Murdocca, Figure 3-2 Ripple-Carry Adder Murdocca, Figure 3-6 Addition/Subtraction Unit Fall 2008 SYSC 5704: Elements of Computer Systems

22 Multiplication Complicated Work out partial product for each digit
Take care with place value (column) Add partial products Aside: Multiply by 2? (shift?) Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

23 Multiplication Example
Multiplicand (1110) x Multiplier (1310) Partial products Note: if multiplier bit is 1 copy multiplicand (place value) otherwise zero Product (14310) Note: need double length result – could easily overflow single word Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

24 Unsigned Binary Multiplication
Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

25 Execution of 4-Bit Example M x Q = A,Q
1 add 0 no add 1 add 1 add Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

26 Flowchart for Unsigned Binary Multiplication
number of bits Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

27 SYSC 5704: Elements of Computer Systems
Array Multiplier Murdocca, Figure 3-23 The serial method we used for multiplying two unsigned integers in Section requires only a small amount of hardware, but the time required to multiply two numbers of length w grows as w2. We can speed the multiplication process so that it completes in just 2wsteps by implementing the manual process shown in Figure 3-10 in parallel. The general idea is to form a one-bit product between each multiplier bit and each multiplicand bit, and then sum each row of partial product elements from the top to the bottom in systolic (row by row) fashion. The structure of a systolic array multiplier is shown in Figure A partial product (PP) element is shown at the bottom of the figure. A multiplicand bit (mi) and a multiplier bit (qj) are multiplied by the AND gate, which forms a partial product at position (i, j) in the array. This partial product is added to the partial product from the previous stage (bj) and any carry that is generated in the previous stage (aj). The result has a width of 2w and appears at the bottom of the array (the high-order wbits) and at the right of the array (the low-order w bits). Fall 2008 SYSC 5704: Elements of Computer Systems

28 Multiplying Negative Numbers
Multiplying negative numbers by this method does not work! Solution 1 Convert to positive if required Multiply as above If signs were different, negate answer Solution 2 Booth’s algorithm – not in scope of course? (Page 322) Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

29 Computer Architecture: Arithmetic
Booth’s Algorithm : Increase speed of a multiplication when there are consecutive ones or zeros in the multiplier. Based on shifting of multiplier from right-to-left If at boundary of a string of 0’s, add multiplicand to product (in proper column) If at boundary of a string of 1’s, subtract multiplicand to product (in proper column) If within string, just shift. The computer architecture shown so far is simple and straightforward. But there are considerable study areas in the field of computer architecture as it pertains to computer arithmetic. New algorithms, new hardware implementations for fast addition, subtraction, multiplication and division as well as FPP are under work. Fast carry look ahead Residue Arithmetic Booth’s algorithm: The book shows the weakness of this algorithm (if the multiplier is made up of alternating bits, you end up adding and subtracting more than in the simplifier version) The book then shows the modified. Fall 2008 SYSC 5704: Elements of Computer Systems

30 Booth’s Algorithm

31 Example of Booth’s Algorithm

32 Murdocca Example: Booth
Figure 3-19 (21) (14) (1st transition) So the number of additions is reduced. Why do we subtract ? = – … So we add a bigger number and subtract the extra. But we do it in the opposite order because we are scanning from right to left. The text has further modifications of the Booth algorithm (which further reduces the number of additions) as well as an array multiplier (which uses parallelism in order to reduce the impact of wider buses). You are left to consider these yourselves. Fall 2008 SYSC 5704: Elements of Computer Systems

33 Division More complex than multiplication
Negative numbers are really bad! Based on long division Aside: Divide by 2? (shift?) Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

34 Division of Unsigned Binary Integers
Quotient Divisor 1011 Dividend 1011 001110 Partial Remainders 1011 001111 1011 Remainder 100 Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

35 Flowchart for Unsigned Binary Division
Divisor Flowchart for Unsigned Binary Division Subtract Shift left Quotient Remainder / Dividend differences with multiply? shift left subtract? no “C” add Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

36 SYSC 5704: Elements of Computer Systems
Division is somewhat more complex than multiplication; based on the same general principles Fall 2008 SYSC 5704: Elements of Computer Systems

37 Real Numbers Numbers with fractions Could be done in pure binary
= = Where is the binary point? Fixed? Very limited representation ability Moving? How do you show where it is? fixed point floating point Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

38 Normalization Floating Point (FP) numbers are usually normalized
i.e. exponent is adjusted so that leading bit (msb) of significand is always 1 Since msb is always 1 there is no need to store it Recall scientific notation where numbers are normalized to give a single digit before the decimal point e.g x 103 Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

39 Floating Point (Scientific Notation)
(Biased) exponent Sign bit (stored) significand +/ – 1.significand x 2exponent Floating point misnomer: Point is actually fixed after first digit of the significand: xxxxxx xxxxxx is stored signficand Exponent indicates place value (point position) Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

40 Floating Point Examples
Typo here! What's wrong? Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

41 Signs for Floating Point
Significand: explicit sign bit (msb) rest of bits are magnitude (sort of) Exponent is in excess or biased notation 8 bit exponent field binary value range 0-255 Excess (bias) 127 means Subtract 127 to get correct value Range -127 to +128 for k bit exponent: bias = 2k–1 –1 Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

42 FP Ranges Range: The range of numbers that can be represented
For a 32 bit number 8 bit exponent +/  +/- 1.5 x 1038 Accuracy: The effect of changing lsb of significand 23 bit significand 2-23  1.2 x 10-7 About 6 decimal places Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

43 Expressible Numbers 2 2 Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

44 IEEE 754 Standard for floating point storage 32 and 64 bit standards
8 and 11 bit exponent respectively Extended formats (both significand and exponent) for intermediate results special cases: (table 9.4, page 318) 0 (how to normalize?) denormalized (for arithmetic)  (how to quantify?) Not a number (NaN  exception) How? use exponent = all 0’s  zero, denormalized use exponent = all 1’s infinity, NAN reduces range! 2 –126 to 2127 Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

45 IEEE 754 Formats Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

46 FP Arithmetic +/- Check for zeros
Align significands (adjusting exponents)  denormalize! Add or subtract significands Normalize result Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

47 FP Addition & Subtraction Flowchart
Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

48 FP Arithmetic x /  Check for zero Add/subtract exponents
Multiply/divide significands (watch sign) Normalize Round All intermediate results should be in double length storage Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

49 Floating Point Multiplication
1.xxxxx x 2bias+a x 1.yyyyy x 2bias+b Floating Point Multiplication Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt

50 Floating Point Division
Sep 10, 2009 SYSC F09. SYSC2001-Ch9.ppt


Download ppt "Computer Arithmetic See Stallings Chapter 9 Sep 10, 2009"

Similar presentations


Ads by Google