1 / 43

William Stallings Computer Organization and Architecture

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.

Download Presentation

William Stallings Computer Organization and Architecture

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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 Rev. 3 (2005-06) by Enrico Nardelli

  3. ALU Inputs and Outputs Rev. 3 (2005-06) by Enrico Nardelli

  4. Reminder • Let A=an-1an-2…a1a0 be a binary number • Its (decimal) value is: Example: 10010 = 24 + 21 = 16 + 2 = 18 Rev. 3 (2005-06) by Enrico Nardelli

  5. 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 Rev. 3 (2005-06) by Enrico Nardelli

  6. 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 Rev. 3 (2005-06) by Enrico Nardelli

  7. 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) Rev. 3 (2005-06) by Enrico Nardelli

  8. 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: if an-1=0 then A is a non-negative number if an-1=1 then A is a negative number Rev. 3 (2005-06) by Enrico Nardelli

  9. Two’s Complement: examples = 70 +64 +4 +2 = -125 -128 +2 +1 = -120 -128 +8 Rev. 3 (2005-06) by Enrico Nardelli

  10. 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) Rev. 3 (2005-06) by Enrico Nardelli

  11. Geometric Depiction of Two’s Complement Integers Rev. 3 (2005-06) by Enrico Nardelli

  12. 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 Rev. 3 (2005-06) by Enrico Nardelli

  13. 2’s Complement representation for negative numbers • To represent a negative number using the “two’s complement” technique: • First decide how many bits are used for representation • Then write the modulo of the negative number • Then, change each 0 in 1, each 1 in 0 (Boolean Complement or “one’s complement”) • Finally, add 1 (as the result of Step 3 was a pure binary number) Rev. 3 (2005-06) by Enrico Nardelli

  14. 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 Rev. 3 (2005-06) by Enrico Nardelli

  15. 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 ! Rev. 3 (2005-06) by Enrico Nardelli

  16. 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!) Rev. 3 (2005-06) by Enrico Nardelli

  17. 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) Rev. 3 (2005-06) by Enrico Nardelli

  18. 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 Rev. 3 (2005-06) by Enrico Nardelli

  19. Addition: examples 1100 + -4 0100 = 4 0000 0 1100 + -4 1111 = -1 1011 -5 • + -7 • 0101 = 5 • 1110 -2 1 1 0011 + 3 0100 = 4 0111 7 0101 + 5 0100 = 4 1001 overflow 1001 + -7 1010 = -6 0011 overflow 1 Rev. 3 (2005-06) by Enrico Nardelli

  20. Hardware for Addition and Subtraction Rev. 3 (2005-06) by Enrico Nardelli

  21. Multiplication • Complex • Work out partial product for each digit • Take care with place value (column) • Add partial products Rev. 3 (2005-06) by Enrico Nardelli

  22. 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 Rev. 3 (2005-06) by Enrico Nardelli

  23. 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       Rev. 3 (2005-06) by Enrico Nardelli

  24. Execution of Example Rev. 3 (2005-06) by Enrico Nardelli

  25. Unsigned Binary Multiplication Rev. 3 (2005-06) by Enrico Nardelli

  26. 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 Rev. 3 (2005-06) by Enrico Nardelli

  27. 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 Rev. 3 (2005-06) by Enrico Nardelli

  28. Reminder • Let A=an-1an-2…a1a0 ,a-1,a-2,…,a-m be a binary number • Its (decimal) value is: Example: 1001,1011 = 23 + 20 +2-1 + 2-3 + 2-4 =9,6875 Rev. 3 (2005-06) by Enrico Nardelli

  29. 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 Rev. 3 (2005-06) by Enrico Nardelli

  30. 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 MSB 0,375 x 2 = 0,75 take 0 0,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 Rev. 3 (2005-06) by Enrico Nardelli

  31. Real Numbers • Where is the binary point? • Fixed? • Very limited • Moving? • How do you show where it is? • Example: 976.000.000.000.000 = 9,76 * 1014 = 9,76 * 10-14 0,0000000000000976 Rev. 3 (2005-06) by Enrico Nardelli

  32. 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 Biased Exponent Significand or Mantissa Sign bit Rev. 3 (2005-06) by Enrico Nardelli

  33. Normalization (10,0101)2 = 10010,1 * 2-3 • 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 = 1001010 * 2-5 = 0,00100101 * 24 Rev. 3 (2005-06) by Enrico Nardelli

  34. 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} Rev. 3 (2005-06) by Enrico Nardelli

  35. 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 Rev. 3 (2005-06) by Enrico Nardelli

  36. 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 1000 = 1 1001 = 2 1010 = 3 1011 = 4 1100 = 5 1101 = 6 1110 = 7 1111 = 8 n = 4 K=7 0000 = -7 0001 = -6 0010 = -5 0011 = -4 0100 = -3 0101 = -2 0110 = -1 0111 = 0 Rev. 3 (2005-06) by Enrico Nardelli

  37. Floating Point Examples 147 = 127+20 107 = 127-20 Rev. 3 (2005-06) by Enrico Nardelli

  38. Expressible Numbers 2-127 -2-127 -(2-2-23)*2128 (2-2-23)*2128 Rev. 3 (2005-06) by Enrico Nardelli

  39. 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 Rev. 3 (2005-06) by Enrico Nardelli

  40. 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) Rev. 3 (2005-06) by Enrico Nardelli

  41. FP Arithmetic: addition and subtraction • Check for zero • Align significands (adjusting exponents) • Add or subtract significands • Normalize result Rev. 3 (2005-06) by Enrico Nardelli

  42. 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 Rev. 3 (2005-06) by Enrico Nardelli

  43. Hexadecimal representation 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A (10) 1011 B (11) 1100 C (12) 1101 D (13) 1110 E (14) 1111 F (15) • A compact representation for binary numbers • A byte (8 bit) is represented by 2 hex values • Examples: 0011 1100 => 3C 0111 1111 1100 1001 -> 7FC9 • Used for numbers and code Rev. 3 (2005-06) by Enrico Nardelli

More Related