450 likes | 563 Views
Chapter 3:. 22444 - Computer Architecture & Organization (1). Arithmetic For Computers. Signed Number Representations. Sign-Magnitude Example : + 5 = – 5 = Range: 2’s Complement Example : + 5 = – 5 =. –7 ≤ N ≤ +7. –(2 n –1 –1) ≤ N ≤ +( 2 n –1 –1). S Magnitude. 0 Magnitude.
E N D
Chapter 3: 22444 - Computer Architecture & Organization (1) Arithmetic For Computers
Signed Number Representations • Sign-Magnitude Example: + 5 = – 5 = Range: • 2’s Complement Example: + 5 = – 5 = –7 ≤ N ≤ +7 –(2n –1 –1) ≤ N ≤ +(2n –1 –1) SMagnitude 0Magnitude 12’s Complement
Signed Number Representations • 2’s Complement Range: Exercise: Calculate the range for 8 bits 8 Combinations –(2n –1) ≤ N ≤ +(2n –1 –1) 8 Combinations
2’s Complement System • Used to represent integers, both positive & negative • Distinguish: “2’s Comp. System” from “2’s Comp. Operation” Example: Represent the number +5 in 2’s Comp. System Correct: Incorrect: +5 = ( )2 +5 = ( )2 ( )2
2’s Complement System Example: Given a number represented in 2’s comp. system, write an algorithm to square it. Answer
Addition • Bit-by-bit addition, with carry propagation. • Unsigned Binary Operands: • Produces unsigned binary • Possible overflow (Cy = 1) • Signed 2’s Comp. Operands: • Produces 2’s complement • Possible overflow Cy Cy-1 + . + . + .
Subtraction • 2’s Complement Addition • Unsigned Binary Operands: • If Cy = 1, result is unsigned binary • If Cy = 0, result is negative (2’s comp) • No overflow • Signed 2’s Comp. Operands: • Produces 2’s complement • Possible overflow Cy Cy-1 –. . + . – . . + .
Multiplication • Bit-by-bit Multiplication • Unsigned Binary Operands • Unsigned result • 2n-bit result from n × n bits operands • No overflow • Partial Sum ×. + . + . . + ... Partial Sum 0 1 1 0 × 0 1 0 1 0 1 1 0 0 0 0 0 . 0 1 1 0 . . 0 0 0 0 ... + 0 0 0 0 0 0 0 0 =
Sequential Multiplication Multiplicand Multiplier 1 1 1 1 × 0 1 0 1 1 1 1 1 0 0 0 0 . 0 1 1 0 . . 0 0 0 0 ... 0 0 0 0 1 1 1 1 0 1 0 1 ALU Product Control Unit 0 0 0 0 0 0 0 0
Sequential Multiplication Multiplicand Multiplier 1 1 1 1 ×0 1 0 1 1 1 1 1 0 0 0 0 . 1 1 1 1 . . 0 0 0 0 ... 0 0 0 0 1 1 1 1 0 1 0 1 1 Add ALU Product Control Unit Load 0 0 0 0 0 0 0 0
Sequential Multiplication Multiplicand Multiplier 1 1 1 1 ×0 1 0 1 1 1 1 1 0 0 0 0 . 1 1 1 1 . . 0 0 0 0 ... Shift Left Shift Right 0 0 0 0 1 1 1 1 0 1 0 1 ALU Product Control Unit 0 0 0 0 1 1 1 1
Sequential Multiplication Multiplicand Multiplier 1 1 1 1 ×0 1 0 1 1 1 1 1 0 0 0 0 . 1 1 1 1 . . 0 0 0 0 ... Shift Left Shift Right 0 0 0 11 1 1 0 0 0 1 0 0 ALU Product Control Unit 0 0 0 0 1 1 1 1
Sequential Multiplication Multiplicand Multiplier 1 1 1 1 ×0 1 0 1 1 1 1 1 0 0 0 0 . 1 1 1 1 . . 0 0 0 0 ... Shift Left Shift Right 0 0 111 1 00 00 0 1 1 Add ALU Product Control Unit Load 0 0 0 0 1 1 1 1
Sequential Multiplication Multiplicand Multiplier 1 1 1 1 × 0 1 0 1 1 1 1 1 0 0 0 0 . 1 1 1 1 . . 0 0 0 0 ... Shift Left Shift Right 0 1111 000 000 0 0 ALU Product Control Unit 0 1001 0 1 1
Sequential Multiplication • Delay: Number of Clocks = . . . . Clocks Multiplicand Multiplier 1 1 1 1 ×0 1 0 1 1 1 1 1 0 0 0 0 . 1 1 1 1 . . 0 0 0 0 . .. 1 0 0 1 0 1 1 1111 0000 0000 ALU Product Control Unit 0 1001 0 1 1
Sequential Multiplication • Delay: Number of Clocks = . . . . Clocks Multiplicand Multiplier 0000 M M M M m m m m ALU Product Control Unit 0 0 0 0 0 0 0 0 Clock
Sequential Multiplication • Delay: Number of Clocks = . . . . Clocks Multiplicand Multiplier 000 M M M M0 0 m m m ALU Product Control Unit 0 0 0 0 p p p p Clock
Sequential Multiplication • Delay: Number of Clocks = . . . . Clocks Multiplicand Multiplier 00M M M M 00 00 m m ALU Product Control Unit 0 0 p p p p p p Clock
Sequential Multiplication • Delay: Number of Clocks = . . . . Clocks Multiplicand Multiplier 0M M M M 000 000 m ALU Product Control Unit 0 pp p p p p p Clock
Sequential Multiplication • Delay: Number of Clocks = . . . . Clocks Multiplicand Multiplier M M M M 0000 0000 ALU Product Control Unit ppp p p p p p Clock
Multiplication • ALU Size? 0 1 1 0 × 0 1 0 1 Partial Sum: 0 0 0 0 0 0 0 0 + 0 1 1 0 Partial Sum: 0 0 1 1 0 0 0 1 1 0 + 0 0 0 0 Partial Sum: 0 0 1 1 0 0 0 1 1 0 + 0 1 1 0 Partial Sum: 0 0 1 1 1 1 0
Signed Multiplication • Signed 2’s Comp. Operands: • Convert negative operands to positive values • Perform unsigned multiplication • Negate the result if the two operands differ in sign
Division • Subtract Divisor & Drop a Bit • Unsigned Binary Operands • Unsigned result • 2n-bit Dividend by n-bit divisor n-bit quotient and n-bit remainder • Possible overflow (big quotient) • Divide by zero • Quotient ≥ 2n .. .│ 0 0 0 0 0 0 0 0 0
Sequential Division .0 1 1 0 1 0 1 1 0│0 1 0 1 0 0 1 0 – 0 1 1 0 0 + 0 1 1 0 0 1 0 1 0 0 – 0 1 1 0 0 0 1 0 0 0 0 – 0 1 1 0 0 0 0 1 0 1 0 – 0 1 1 0 0 + 0 1 1 0 0 0 1 0 1 0 – 0 1 1 0 0 1 0 0 Divisor Quotient 0 1 1 0 0 0 0 0 0 0 0 0 ALU Control Unit 0 1 0 1 0 0 1 0 Remainder (Dividend)
Sequential Division .0 1 1 0 1 0 1 1 0│0 1 0 1 0 0 1 0 – 0 1 1 0 0 + 0 1 1 0 0 1 0 1 0 0 – 0 1 1 0 0 0 1 0 0 0 0 – 0 1 1 0 0 0 0 1 0 1 0 – 0 1 1 0 0 + 0 1 1 0 0 0 1 0 1 0 – 0 1 1 0 0 1 0 0 Divisor Quotient 0 1 1 0 0 0 0 0 0 0 0 0 Subtract ALU Load Control Unit 0 1 0 1 0 0 1 0 Remainder (Dividend)
Sequential Division . 0 1 1 0 1 0 1 1 0│0 1 0 1 0 0 1 0 – 0 1 1 0 0 + 0 1 1 0 0 1 0 1 0 0 – 0 1 1 0 0 0 1 0 0 0 0 – 0 1 1 0 0 0 0 1 0 1 0 – 0 1 1 0 0 + 0 1 1 0 0 0 1 0 1 0 – 0 1 1 0 0 1 0 0 Divisor Shift Right Quotient 0 1 1 0 0 0 0 0 0 0 0 0 0 Shift Left Add ALU Load Control Unit 1 1 1 1 0 0 1 0 Remainder
Sequential Division . 0 1 1 0 1 0 1 1 0│0 1 0 1 0 0 1 0 – 0 1 1 0 0 + 0 1 1 0 0 1 0 1 0 0 – 0 1 1 0 0 0 1 0 0 0 0 – 0 1 1 0 0 0 0 1 0 1 0 – 0 1 1 0 0 + 0 1 1 0 0 0 1 0 1 0 – 0 1 1 0 0 1 0 0 Divisor Quotient 0 0 1 1 0 0 0 0 0 0 0 0 Subtract ALU Load Control Unit 0 1 0 1 0 0 1 0 Remainder
Sequential Division . 0 1 1 0 1 0 1 1 0│0 1 0 1 0 0 1 0 – 0 1 1 0 0 + 0 1 1 0 0 1 0 1 0 0 – 0 1 1 0 0 0 1 0 0 0 0 – 0 1 1 0 0 0 0 1 0 1 0 – 0 1 1 0 0 + 0 1 1 0 0 0 1 0 1 0 – 0 1 1 0 0 1 0 0 Divisor Shift Right Quotient 0 0 1 1 0 0 0 0 0 0 0 0 1 Shift Left ALU Control Unit 00 1 0 0 0 1 0 Remainder
Sequential Division . 0 1 1 0 1 0 1 1 0│0 1 0 1 0 0 1 0 – 0 1 1 0 0 + 0 1 1 0 0 1 0 1 0 0 – 0 1 1 0 0 0 1 0 0 0 0 – 0 1 1 0 0 0 0 1 0 1 0 – 0 1 1 0 0 + 0 1 1 0 0 0 1 0 1 0 – 0 1 1 0 0 1 0 0 Divisor Quotient 00 0 1 10 0 0 0 0 01 Subtract ALU Load Control Unit 00 1 0 0 0 1 0 Remainder
Sequential Division . 0 1 1 0 1 0 1 1 0│0 1 0 1 0 0 1 0 – 0 1 1 0 0 + 0 1 1 0 0 1 0 1 0 0 – 0 1 1 0 0 0 1 0 0 0 0 – 0 1 1 0 0 0 0 1 0 1 0 – 0 1 1 0 0 + 0 1 1 0 0 0 1 0 1 0 – 0 1 1 0 0 1 0 0 Divisor Shift Right Quotient 00 0 1 10 0 0 0 0 01 1 Shift Left ALU Control Unit 000 0 1 0 1 0 Remainder
Sequential Division . 0 1 1 0 1 0 1 1 0│0 1 0 1 0 0 1 0 – 0 1 1 0 0 + 0 1 1 0 0 1 0 1 0 0 – 0 1 1 0 0 0 1 0 0 0 0 – 0 1 1 0 0 0 0 1 0 1 0 – 0 1 1 00 + 0 1 1 0 0 0 1 0 1 0 – 0 1 1 0 0 1 0 0 Divisor Quotient 000 0 110 0 0 011 Subtract ALU Load Control Unit 000 0 1 0 1 0 Remainder
Sequential Division . 0 1 1 0 1 0 1 1 0│0 1 0 1 0 0 1 0 – 0 1 1 0 0 + 0 1 1 0 0 1 0 1 0 0 – 0 1 1 0 0 0 1 0 0 0 0 – 0 1 1 0 0 0 0 1 0 1 0 – 0 1 1 00 + 0 1 1 00 0 1 0 1 0 – 0 1 1 0 0 1 0 0 Divisor Shift Right Quotient 000 0 110 0 0 011 0 Shift Left Add ALU Load Control Unit 000 1 1 1 1 0 Remainder
Sequential Division . 0 1 1 0 1 0 1 1 0│0 1 0 1 0 0 1 0 – 0 1 1 0 0 + 0 1 1 0 0 1 0 1 0 0 – 0 1 1 0 0 0 1 0 0 0 0 – 0 1 1 0 0 0 0 1 0 1 0 – 0 1 1 00 + 0 1 1 00 1 0 1 0 – 0 1 1 0 0 1 0 0 Divisor Quotient 0000 0110 0110 Subtract ALU Load Control Unit 000 0 1 0 1 0 Remainder
Sequential Division . 0 1 1 0 1 0 1 1 0│0 1 0 1 0 0 1 0 – 0 1 1 0 0 + 0 1 1 0 0 1 0 1 0 0 – 0 1 1 0 0 0 1 0 0 0 0 – 0 1 1 0 0 0 0 1 0 1 0 – 0 1 1 00 + 0 1 1 00 1 0 1 0 – 0 1 1 0 0 1 0 0 Divisor Shift Right Quotient 0000 0110 0110 1 Shift Left ALU Control Unit 0000 0 1 00 Remainder
Sequential Division . 0 1 1 01 0 1 1 0│0 1 0 1 0 0 1 0 – 0 1 1 0 0 + 0 1 1 0 0 1 0 1 0 0 – 0 1 1 0 0 0 1 0 0 0 0 – 0 1 1 0 0 0 0 1 0 1 0 – 0 1 1 00 + 0 1 1 00 1 0 1 0 – 0 1 1 0 0 1 0 0 Divisor Quotient 00000 011 1101 ALU Control Unit 0000 0 1 00 Remainder How many times was the Divisor & Quotient shifted? How many clocks?
Signed Division • Signed 2’s Comp. Operands: • Convert negative operands to positive values • Perform unsigned division • Negate the result (?) if the two operands differ in sign • Which result? Quotient or remainder or both? • Dividend = Quotient × Divisor + Remainder • Example: 16 ÷ 3 • Rule: Dividend & Remainder must have the same sign
Floating Point • Scientific Notation Example: (10.5 × 10 – 7 is not good) • Normalized Scientific Notation Example: (0.105 × 10 – 5 is not good) • Binary Numbers Example: (0.0101 × 2 – 5 is not good) (Normalized) . × 10 . × 2
Floating Point • Sign & Magnitude • Overflow:The exponent is too large to be represented • Underflow:The exponent is too small to be represented • Single & Double Precision ± ? S Exponent Fraction 32 bits ± . × 2
IEEE 754 Floating Point Standard • Single Precision: • Biased Exponent 32 bits S Exponent Fraction 1 bit 8 bits 23 bits 255 0 • • • • • = 0111 1111 (biased by 127) • • + 0 256 –
IEEE 754 Floating Point Standard • Implicit ‘1’ 1.01 × 2 0 Examples: 75 = – 0.75 = 0.0 = ? This bit is always 1 No need to store it, hence implicit S Exponent Fraction 0 1000 0101 0 0 1 0 1 1 0 • • • • 0 1 0111 1110 1 0 0 0 • • • • • • • 0 ( )2 – ( )2
IEEE 754 Floating Point Standard • Reserved Bit Patterns • Zero: • ± Infinity: • Others like denormalized number and Not-a-Number 0 0000 0000 0 0 0 0 • • • • • • • 0 1111 1111 0 0 0 0 • • • • • • • 0
Floating-Point Addition / Subtraction • Need to Align Decimal Points Example: Add 0.5 + 0.4375 Normalized Forms: Align Decimal Point: Perform Addition: Normalize Result: 0 0111 1110 0 0 0 • • • 0 0 0111 1101 1 1 0 • • • 0 0 0111 1110 1.0 0 0 • • 0 0 0111 1101 1.1 1 0 • • 0 0 0111 1110 0.1 1 1 • • 0 0 0111 1110 1.1 1 1 • • 0 0 0111 1110 1 1 1 • • • 0 0.5 = ( )2 = 0.4375 = ( )2 = × 2 –1 × 2 –1 0 0 × 2 –1 × 2 –1
Floating-Point Multiplication • Need to Account for Biased Exponents Example: Multiply 0.5 × 0.4375 Normalized Forms: Multiply Fractions: Add Exponents: Sub Extra Bias: Round & Normalize: 0 0111 1110 0 0 0 • • • 0 0 0111 1101 1 1 0 • • • 0 0 0111 11101.0 0 0 • • 0 0 0111 1101 1.1 1 0 • • 0 0 0111 1101 1.1 1 0 • • 0 0 0111 1100 1 1 0 • • • 0 0.5 = ( )2 = 0.4375 = ( )2 = ×. + – .
Chapter 3 The End
Chapter 3 Exercise 1 • Determine the magnitude of (10001000)2 in:a) sign-magnitude and b) 2’s complement system • Determine if there was an overflow error in: unsigned int a, b; // Assume 8-bit registers a= (10001000) 2 ; b = a + a; • Show how the CPU computes b: int a, b; // Assume 8-bit registers a= (10001000) 2 ; b = a – a; • How many addition are done in (1001)2.