CS 35101 Computer Architecture Spring 2008 Chapter 3 Part 1 - - PowerPoint PPT Presentation

cs 35101 computer architecture spring 2008 chapter 3 part
SMART_READER_LITE
LIVE PREVIEW

CS 35101 Computer Architecture Spring 2008 Chapter 3 Part 1 - - PowerPoint PPT Presentation

CS 35101 Computer Architecture Spring 2008 Chapter 3 Part 1 (3.1-3.3) Taken from Mary Jane Irwin (www.cse.psu.edu/~mji) and Kevin Schaffer [ adapted from D. Patterson slides ] CS35101 Ch3.Part1 1 Steinfadt SP08 KSU Heads Up Last


slide-1
SLIDE 1

CS35101 Ch3.Part1 1 Steinfadt SP08 KSU

CS 35101 Computer Architecture Spring 2008 Chapter 3 Part 1 (3.1-3.3)

Taken from Mary Jane Irwin (www.cse.psu.edu/~mji) and Kevin Schaffer [adapted from D. Patterson slides]

slide-2
SLIDE 2

CS35101 Ch3.Part1 2 Steinfadt SP08 KSU

Head’s Up

 Last week’s material

 Addressing modes; Assemblers, linkers and loaders

 This week’s material

 MIPS arithmetic and ALU design

  • Reading assignment – PH 3.1-3.5

 Reminders

 Project 1 is due Thursday, Feb 21st (by 11:55pm)  Exam 1 is Thursday, Feb 21st

slide-3
SLIDE 3

CS35101 Ch3.Part1 3 Steinfadt SP08 KSU

Architects write the checks that the design engineers have to cash. If the amount is too high, the whole project goes bankrupt. Design engineers must constantly juggle many conflicting demands: schedule, performance, power dissipation, features, testing, documentation, training and hiring. The Pentium Chronicles, Colwell, pg. 64 & 63

slide-4
SLIDE 4

CS35101 Ch3.Part1 4 Steinfadt SP08 KSU

Data Types

 Integers

 Unsigned integers  Signed integers

 Real numbers

 Floating-point numbers  Fixed-point numbers

 Strings

slide-5
SLIDE 5

CS35101 Ch3.Part1 5 Steinfadt SP08 KSU

Machine Number Representation

 Bits are just bits (have no inherent meaning)

 conventions define the relationships between bits and

numbers

 Binary numbers (base 2) - integers

0000 → 0001 → 0010 → 0011 → 0100 → 0101 → . . .

 in decimal from 0 to 2n-1 for n bits

 Of course, it gets more complicated

 storage locations (e.g., register file words) are finite, so

have to worry about overflow (i.e., when the number is too big to fit into 32 bits)

 have to be able to represent negative numbers, e.g., how

do we specify -8 in addi $sp, $sp, -8 #$sp = $sp - 8

slide-6
SLIDE 6

CS35101 Ch3.Part1 6 Steinfadt SP08 KSU

Unsigned Integers

 Each bit bi has value bi × 2i

 Count from right to left starting at zero  Leftmost is most significant bit (MSB)  Rightmost is least significant bit (LSB)

 To convert from binary to decimal, sum those values

together

 Repeated division by two can convert decimal to binary; the

remainders form the binary number from right to left

slide-7
SLIDE 7

CS35101 Ch3.Part1 7 Steinfadt SP08 KSU

Unsigned Integers

 At least lg n bits are

required to represent an integer n

 With k bits you can

represent integers from 0 to 2k – 1

7 111 6 110 5 101 4 100 3 011 2 010 1 001 000 Value Representation

slide-8
SLIDE 8

CS35101 Ch3.Part1 8 Steinfadt SP08 KSU

Signed Integers

 Many ways to encode signed integers

 Signed-magnitude  Biased  One's complement  Two's complement

 In practice, two's complement is the most

commonly used

slide-9
SLIDE 9

CS35101 Ch3.Part1 9 Steinfadt SP08 KSU

Signed-Magnitude

 Explicit sign bit  Remaining bits encode

unsigned magnitude

 Two representations for

zero (+0 and -0)

 Addition and subtraction

are more complicated

  • 3

111

  • 2

110

  • 1

101

100 +3 011 +2 010 +1 001 +0 000 Value Representation

slide-10
SLIDE 10

CS35101 Ch3.Part1 10 Steinfadt SP08 KSU

Biased

 Add a bias to the signed

number in order to make it unsigned

 Subtract the bias to return

the original value

 Typically the bias is 2k-1 for

a k-bit representation

3 111 2 110 1 101 100

  • 1

011

  • 2

010

  • 3

001

  • 4

000 Value Representation

slide-11
SLIDE 11

CS35101 Ch3.Part1 11 Steinfadt SP08 KSU

Two's Complement

 Most significant bit has a

negative weight

 To negate: invert bits and

add one

 Implicit sign bit  One negative number that

has no positive

 Handles overflow well

  • 1

111

  • 2

110

  • 3

101

  • 4

100 +3 011 +2 010 +1 001 000 Value Representation

slide-12
SLIDE 12

CS35101 Ch3.Part1 12 Steinfadt SP08 KSU

Possible Representations

1000 = -8 0111 = +7 0111 = +7 0111 = +7 0110 = +6 0110 = +6 0110 = +6 0101 = +5 0101 = +5 0101 = +5 0100 = +4 0100 = +4 0100 = +4 0011 = +3 0011 = +3 0011 = +3 0010 = +2 0010 = +2 0010 = +2 0001 = +1 0001 = +1 0001 = +1 0000 = +0 0000 = 0 0000 = +0 1111 = -0 1000 = -0 1110 = -1 1111 = -1 1001 = -1 1101 = -2 1110 = -2 1010 = -2 1100 = -3 1101 = -3 1011 = -3 1011 = -4 1100 = -4 1100 = -4 1010 = -5 1011 = -5 1101 = -5 1001 = -6 1010 = -6 1110 = -6 1000 = -7 1001= -7 1111 = -7

One’s Comp. Two’s Comp. Sign Mag.  Issues:

 balance  number of zeros  ease of operations

 Which one is best?

Why?

slide-13
SLIDE 13

CS35101 Ch3.Part1 13 Steinfadt SP08 KSU

 32-bit signed numbers (2’s complement):

0000 0000 0000 0000 0000 0000 0000 0000two = 0ten 0000 0000 0000 0000 0000 0000 0000 0001two = + 1ten 0000 0000 0000 0000 0000 0000 0000 0010two = + 2ten ... 0111 1111 1111 1111 1111 1111 1111 1110two = + 2,147,483,646ten 0111 1111 1111 1111 1111 1111 1111 1111two = + 2,147,483,647ten 1000 0000 0000 0000 0000 0000 0000 0000two = – 2,147,483,648ten 1000 0000 0000 0000 0000 0000 0000 0001two = – 2,147,483,647ten 1000 0000 0000 0000 0000 0000 0000 0010two = – 2,147,483,646ten ... 1111 1111 1111 1111 1111 1111 1111 1101two = – 3ten 1111 1111 1111 1111 1111 1111 1111 1110two = – 2ten 1111 1111 1111 1111 1111 1111 1111 1111two = – 1ten

 What if the bit string represented addresses?

 need operations that also deal with only positive (unsigned)

integers

maxint minint

MIPS Representations

slide-14
SLIDE 14

CS35101 Ch3.Part1 14 Steinfadt SP08 KSU

 Negating a two's complement number –

complement all the bits and then add a 1

 remember: “negate” and “invert” are quite different!

 Converting n-bit numbers into numbers with more

than n bits:

 MIPS 16-bit immediate gets converted to 32 bits for

arithmetic

 sign extend - copy the most significant bit (the sign bit)

into the other bits

0010 -> 0000 0010 1010 -> 1111 1010

 sign extension versus zero extend (lb vs. lbu)

Two's Complement Operations

slide-15
SLIDE 15

CS35101 Ch3.Part1 15 Steinfadt SP08 KSU

Zero/Sign Extension

 Extension takes a number represented in m bits

and converts it to n bits (m < n) while preserving its value

 MIPS Load byte sign extends lb $s1, 100($s2)  MIPS Load half word sign extends lh $s1, 100($s2)

 For unsigned numbers just add zeros to the left

(zero extension)

 lbu $s1, 100($s2)#C programs use for

ASCII almost exclusive of lb

 lhu $s1, 100($s2)

 For two's complement signed numbers, replicate

the sign bit (sign extension)

slide-16
SLIDE 16

CS35101 Ch3.Part1 16 Steinfadt SP08 KSU

Design the MIPS Arithmetic Logic Unit (ALU)

 Must support the Arithmetic/Logic

  • perations of the ISA

add, addi, addiu, addu sub, subu mult, multu, div, divu sqrt and, andi, nor, or, ori, xor, xori beq, bne, slt, slti, sltiu, sltu

32 32 32 m (operation) result A B ALU 4 zero ovf 1 1

 With special handling for

 sign extend – addi, addiu, slti, sltiu  zero extend – andi, ori, xori  overflow detection – add, addi, sub

slide-17
SLIDE 17

CS35101 Ch3.Part1 17 Steinfadt SP08 KSU

MIPS Arithmetic and Logic Instructions

R-type: I-Type: 31 25 20 15 5

  • p

Rs Rt Rd funct

  • p

Rs Rt Immed 16

Type

  • p

funct ADDI 001000 xx ADDIU 001001 xx SLTI 001010 xx SLTIU 001011 xx ANDI 001100 xx ORI 001101 xx XORI 001110 xx LUI 001111 xx Type

  • p

funct ADD 000000 100000 ADDU 000000 100001 SUB 000000 100010 SUBU 000000 100011 AND 000000 100100 OR 000000 100101 XOR 000000 100110 NOR 000000 100111 Type op funct 000000 101000 000000 101001 SLT 000000 101010 SLTU 000000 101011 000000 101100

slide-18
SLIDE 18

CS35101 Ch3.Part1 18 Steinfadt SP08 KSU

Design Trick: Divide & Conquer

 Break the problem into simpler problems, solve

them and glue together the solution

 Example: assume the immediates have been

taken care of before the ALU

 now down to 10 operations  can encode in 4 bits

add 1 addu 2 sub 3 subu 4 and 5

  • r

6 xor 7 nor a slt b sltu

slide-19
SLIDE 19

CS35101 Ch3.Part1 19 Steinfadt SP08 KSU

 Just like in grade school (carry/borrow 1s)

0111 0111 0110 + 0110

  • 0110
  • 0101

 Two's complement operations are easy

 do subtraction by negating and then adding

0111 → 0111

  • 0110 → + 1010

 Overflow (result too large for finite computer word)

 e.g., adding two n-bit numbers does not yield an n-bit number

0111 + 0001

Addition & Subtraction

slide-20
SLIDE 20

CS35101 Ch3.Part1 21 Steinfadt SP08 KSU

Building a 1-bit Binary Adder

1 bit Full Adder A B S carry_in carry_out

S = A xor B xor carry_in carry_out = A&B | A&carry_in | B&carry_in (majority function)

 How can we use it to build a 32-bit adder?  How can we modify it easily to build an adder/subtractor? 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 S

carry_out carry_in

B A

slide-21
SLIDE 21

CS35101 Ch3.Part1 22 Steinfadt SP08 KSU

Building 32-bit Adder

1-bit FA A0 B0 S0 c0=carry_in c1 1-bit FA A1 B1 S1 c2 1-bit FA A2 B2 S2 c3 c32=carry_out 1-bit FA A31 B31 S31 c31 . . .  Just connect the carry-out of

the least significant bit FA to the carry-in of the next least significant bit and connect . . .

 Ripple Carry Adder (RCA)

 advantage: simple logic, so small

(low cost)

 disadvantage: slow and lots of

glitching (so lots of energy consumption)

slide-22
SLIDE 22

CS35101 Ch3.Part1 23 Steinfadt SP08 KSU

A 32-bit Ripple Carry Adder/Subtractor

 Remember 2’s

complement is just

 complement all the bits  add a 1 in the least

significant bit A 0111 → 0111 B - 0110 → +

1-bit FA S0 c0=carry_in c1 1-bit FA S1 c2 1-bit FA S2 c3 c32=carry_out 1-bit FA S31 c31 . . . A0 A1 A2 A31 B0 B1 B2 B31 add/sub

B0 control (0=add,1=sub) B0 if control = 0, !B0 if control = 1

slide-23
SLIDE 23

CS35101 Ch3.Part1 25 Steinfadt SP08 KSU

Overflow Detection and Effects

 Overflow: the result is too large to represent in the

number of bits allocated

 When adding operands with different signs, overflow

cannot occur! Overflow occurs when

 adding two positives yields a negative  or, adding two negatives gives a positive  or, subtract a negative from a positive gives a negative  or, subtract a positive from a negative gives a positive

 On overflow, an exception (interrupt) occurs

 Control jumps to predefined address for exception  Interrupted address (address of instruction causing the

  • verflow) is saved for possible resumption

 Don't always want to detect (interrupt on) overflow

slide-24
SLIDE 24

CS35101 Ch3.Part1 26 Steinfadt SP08 KSU

New MIPS Instructions

$s1 = Mem($s2+25) lhu $s1, 25($s2) 25 ld half unsigned Cond. Branch (I & R format) if ($s2<6) $s1=1 else $s1=0 sltiu $s1, $s2, 6 b set on less than imm unsigned if ($s2<$s3) $s1=1 else $s1=0 sltu $s1, $s2, $s3 0 and 2b set on less than unsigned $s1 = Mem($s2+25) lbu $s1, 25($s2) 24 ld byte unsigned $s1 = $s2 + 6 addiu $s1, $s2, 6 9 add imm.unsigned 0 and 23 0 and 21

Op Code

Data Transfer $s1 = $s2 - $s3 subu $s1, $s2, $s3 sub unsigned $s1 = $s2 + $s3 addu $s1, $s2, $s3 add unsigned Arithmetic (R & I format)

Meaning Example Instr Category

 Sign extend – addiu, addiu, slti, sltiu  Zero extend – andi, ori, xori  Overflow detected – add, addi, sub