510 likes | 789 Views
Computer Arithmetic. See Stallings Chapter 9. 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
E N D
Computer Arithmetic See Stallings Chapter 9 SYSC 2001 - F09. SYSC2001-Ch9.ppt
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 SYSC 2001 - F09. SYSC2001-Ch9.ppt
ALU Inputs and Outputs requested arithmetic operation Status e.g overflow? operands (in) operands (out) SYSC 2001 - F09. SYSC2001-Ch9.ppt
Integer Representation • Positive numbers stored in binary • e.g. 41=00101001 • 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!) SYSC 2001 - F09. SYSC2001-Ch9.ppt
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 = 00010010 • -18 = 10010010 • Problems!! • Need to consider both sign and magnitude in arithmetic • Two representations of zero (+0 and -0) SYSC 2001 - F09. SYSC2001-Ch9.ppt
Two’s Complement • +3 = 00000011 • +2 = 00000010 • +1 = 00000001 • +0 = 00000000 00000000 • -1 = 11111111 11111111 • -2 = 11111110 • -3 = 11111101 subtract 1 subtract 1 ???? add 1 SYSC 2001 - F09. SYSC2001-Ch9.ppt
Aside re Binary Arithmetic You should already know that • 02+12 = 12 • 012+ 012 = 102 (or 12+12 = 02 carry 1) • 112 + 12 = 002 carry 1 • 12 – 12 = 02 (no borrow), 02 – 12 = 12 borrow 1 • 00..002 – 12 = 11..112 borrow 1 • 000112 = 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 SYSC 2001 - F09. SYSC2001-Ch9.ppt
Two’s Complement Benefits • One representation of zero • Arithmetic works easily (see later) • Negating is fairly easy: • 310 = 000000112 • bitwise complement gives 11111100 • Add 1 11111101 = –310 one’s complement two’s complement SYSC 2001 - F09. SYSC2001-Ch9.ppt
Two’s Complement Benefits • What about negating a negative number ? • – 310 = 111111012 • bitwise complement gives 00000010 • Add 1 00000011 =310 GOOD! – ( – 3 ) = 3 SYSC 2001 - F09. SYSC2001-Ch9.ppt
Two’s Complement Integers In n bits, can store integers from –2n-1 to + 2n-1 – 1 neg pos SYSC 2001 - F09. SYSC2001-Ch9.ppt
Range of Numbers • 8 bit 2s complement • +127 = 01111111 = 27 -1 • -128 = 10000000 = -27 • 16 bit 2s complement • +32767 = 01111111 11111111 = 215 - 1 • -32768 = 10000000 00000000 = -215 • N bit 2s complement • 011111111..11111111 = 2N-1 - 1 • 100000000..00000000 = -2N-1 Largest positive Smallest (?) negative SYSC 2001 - F09. SYSC2001-Ch9.ppt
Negation Special Case 1 0 = 00000000 Bitwise not 11111111 Add 1 +1 Result 1 00000000 if this bit is ignored: – 0 = 0 hmmm . . . OK SYSC 2001 - F09. SYSC2001-Ch9.ppt
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! SYSC 2001 - F09. SYSC2001-Ch9.ppt
Overflow is Implementation Dependent! • recall example: negation of 0 • binary addition is performed – regardless of interpretation 11111111 +1 1 00000000 for this addition the answer is: 0 with carry = 1 fixed number of bits to represent values carry SYSC 2001 - F09. SYSC2001-Ch9.ppt
Unsigned Interpretation Overflow • consider values as unsigned integers 11111111 +1 1 00000000 • but . . . 255 + 1 = 256 ?? • answer = 0 ??? • OVERFLOW occurred! • WHY? cannot represent 256 as an 8-bit unsigned integer! 25510 SYSC 2001 - F09. SYSC2001-Ch9.ppt
Signed Interpretation No Overflow • consider values as signed integers 11111111 +1 1 00000000 • –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 SYSC 2001 - F09. SYSC2001-Ch9.ppt
Negation Special Case 2 – 128 = 10000000 bitwise not 01111111 Add 1 to lsb +1 Result 10000000 • Whoops! – (– 128) = – 128 • Need to monitor msb (sign bit) • It should change during negation? Problem! OVERFLOW! what about negating zero? SYSC 2001 - F09. SYSC2001-Ch9.ppt
Conversion Between Lengths, e.g. 8 16 • Positive number: add leading zeros • +18 = 00010010 • +18 = 00000000 00010010 • Negative numbers: add leading ones • -18 = 11101110 • -18 = 11111111 11101110 • i.e. pack with msb (sign bit) called “sign extension” SYSC 2001 - F09. SYSC2001-Ch9.ppt
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 SYSC 2001 - F09. SYSC2001-Ch9.ppt
Hardware for Addition and Subtraction 2’s A – B = ? CF SYSC 2001 - F09. SYSC2001-Ch9.ppt
Adders Murdocca, Figure 3-2 Ripple-Carry Adder Murdocca, Figure 3-6 Addition/Subtraction Unit SYSC 5704: Elements of Computer Systems
Multiplication • Complicated • Work out partial product for each digit • Take care with place value (column) • Add partial products • Aside: Multiply by 2? (shift?) SYSC 2001 - F09. SYSC2001-Ch9.ppt
Multiplication Example 1011 Multiplicand (1110) x 1101 Multiplier (1310) 1011 Partial products 0000 Note: if multiplier bit is 1 1011 copy multiplicand (place value) 1011 otherwise zero 10001111 Product (14310) • Note: need double length result – could easily overflow single word SYSC 2001 - F09. SYSC2001-Ch9.ppt
Unsigned Binary Multiplication SYSC 2001 - F09. SYSC2001-Ch9.ppt
Execution of 4-Bit ExampleM x Q = A,Q 1 add 0 no add 1 add 1 add SYSC 2001 - F09. SYSC2001-Ch9.ppt
Flowchart for Unsigned Binary Multiplication number of bits SYSC 2001 - F09. SYSC2001-Ch9.ppt
SystolicArray Multiplier Murdocca, Figure 3-23 SYSC 5704: Elements of Computer Systems
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) SYSC 2001 - F09. SYSC2001-Ch9.ppt
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. SYSC 5704: Elements of Computer Systems
Division • More complex than multiplication • Negative numbers are really bad! • Based on long division • Aside: Divide by 2? (shift?) SYSC 2001 - F09. SYSC2001-Ch9.ppt
Division of Unsigned Binary Integers Quotient 00001101 Divisor 1011 10010011 Dividend 1011 001110 Partial Remainders 1011 001111 1011 Remainder 100 SYSC 2001 - F09. SYSC2001-Ch9.ppt
Divisor Flowchart for Unsigned Binary Division Subtract Shift left Quotient Remainder / Dividend differences with multiply? shift left subtract? no “C” add SYSC 2001 - F09. SYSC2001-Ch9.ppt
Division is somewhat more complex than multiplication; based on the same general principles SYSC 5704: Elements of Computer Systems
Real Numbers • Numbers with fractions • Could be done in pure binary • 1001.1010 = 23 + 20 + 2-1 + 2-3 = 9.625 • Where is the binary point? • Fixed? • Very limited representation ability • Moving? • How do you show where it is? fixed point floating point SYSC 2001 - F09. SYSC2001-Ch9.ppt
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. 3.123 x 103 SYSC 2001 - F09. SYSC2001-Ch9.ppt
Floating Point (Scientific Notation) • +/ – 1.significand x 2exponent • Floating point misnomer: Point is actually fixed after first digit of the significand: 1.xxxxxx • xxxxxx is stored signficand • Exponent indicates place value (point position) (Biased) exponent (stored) significand Sign bit SYSC 2001 - F09. SYSC2001-Ch9.ppt
Floating Point Examples Typo here! What's wrong? SYSC 2001 - F09. SYSC2001-Ch9.ppt
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 SYSC 2001 - F09. SYSC2001-Ch9.ppt
FP Ranges • Range: The range of numbers that can be represented • For a 32 bit number • 8 bit exponent • +/- 2127 +/- 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 SYSC 2001 - F09. SYSC2001-Ch9.ppt
Expressible Numbers 2 2 SYSC 2001 - F09. SYSC2001-Ch9.ppt
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 SYSC 2001 - F09. SYSC2001-Ch9.ppt
IEEE 754 Formats SYSC 2001 - F09. SYSC2001-Ch9.ppt
FP Arithmetic +/- • Check for zeros • Align significands (adjusting exponents) denormalize! • Add or subtract significands • Normalize result SYSC 2001 - F09. SYSC2001-Ch9.ppt
FP Addition & Subtraction Flowchart SYSC 2001 - F09. SYSC2001-Ch9.ppt
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 SYSC 2001 - F09. SYSC2001-Ch9.ppt
Floating Point Multiplication 1.xxxxx x 2bias+a x 1.yyyyy x 2bias+b SYSC 2001 - F09. SYSC2001-Ch9.ppt
Floating Point Division SYSC 2001 - F09. SYSC2001-Ch9.ppt