William Stallings Computer Organization and Architecture
-
Upload
yuli-wiggins -
Category
Documents
-
view
22 -
download
0
description
Transcript of William Stallings Computer Organization and Architecture
![Page 1: William Stallings Computer Organization and Architecture](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/1.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/2.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/3.jpg)
Rev. 3 (2005-06) by Enrico Nardelli 38 -
ALU Inputs and Outputs
![Page 4: William Stallings Computer Organization and Architecture](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/4.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/5.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/6.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/7.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/8.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/9.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/10.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/11.jpg)
Rev. 3 (2005-06) by Enrico Nardelli 118 -
Geometric Depiction of Two’s Complement Integers
![Page 12: William Stallings Computer Organization and Architecture](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/12.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/13.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/14.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/15.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/16.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/17.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/18.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/19.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/20.jpg)
Rev. 3 (2005-06) by Enrico Nardelli 208 -
Hardware for Addition and Subtraction
![Page 21: William Stallings Computer Organization and Architecture](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/21.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/22.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/23.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/24.jpg)
Rev. 3 (2005-06) by Enrico Nardelli 248 -
Execution of Example
![Page 25: William Stallings Computer Organization and Architecture](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/25.jpg)
Rev. 3 (2005-06) by Enrico Nardelli 258 -
Unsigned Binary Multiplication
![Page 26: William Stallings Computer Organization and Architecture](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/26.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/27.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/28.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/29.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/30.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/31.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/32.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/33.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/34.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/35.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/36.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/37.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/38.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/39.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/40.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/41.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/42.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022032612/56813214550346895d986d55/html5/thumbnails/43.jpg)
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)