4-8-01_ISA-Part I-0408

33
1 Instruction Set  Architectures Part I: From C to MIPS

Transcript of 4-8-01_ISA-Part I-0408

Page 1: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 1/33

1

Instruction Set Architectures

Part I: From C toMIPS

Page 2: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 2/33

Test l: Do you have a clicker?

 A: Yes

B: No

2

Page 3: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 3/33

Reading Quiz•

5 Questions• 1 minute each

3

Page 4: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 4/33

During execution where does the programin a “stored program computer” reside?

Letter Answer 

 A The hard disk.

B Memory

C The “cloud”

D The register file

E Instructions

4

Page 5: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 5/33

What are two of three operands types inMIPS?

Letter Answer 

 A Push and Pop

B Stack and Disk

C Memory and registers

D Immediate and Appropriate

E Implicit and explicit

5

Page 6: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 6/33

Page 7: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 7/33

 Arguments are passed first ______ andthen, if more space is needed, ______.

Letter Answer 

 A On disk; in the cloud

B In registers, on the stack

C On the stack, in registers

D Uncompressed, compressed

E Backwards, upwards

7

Page 8: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 8/33

Page 9: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 9/33

Fair questions?

 A. Very

B. Sort of C. Not reallyD. Not at all.

9

Page 10: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 10/33

10

Goals for this Class• Understand how CPUs run programs

• How do we express the computation the CPU?

• How does the CPU execute it?

• How does the CPU support other system components (e.g., the OS)?

• What techniques and technologies are involved and how do they work?

• Understand why CPU performance (and other metrics)varies• How does CPU design impact performance?

• What trade-offs are involved in designing a CPU?

• How can we meaningfully measure and compare computer systems?

• Understand why program performance varies• How do program characteristics affect performance?

• How can we improve a programs performance by considering the CPUrunning it?

• How do other system components impact program performance?

Page 11: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 11/33

11

Goals• Understand how we express programs to the

computer.• The stored-program model

• The instruction set architecture

• Learn to read and write MIPS assembly

• Prepare for your 141L Project and 141 homeworks• Your book (and my slides) use MIPS throughout

• You will implement a subset of MIPS in 141L

• Learn to “see past your code” to the ISA• Be able to look at a piece of C code and know what kinds of

instructions it will produce.

• Begin to understand the compiler’s role

• Be able to roughly estimate the performance of code based onthis understanding (we will refine this skill throughout the quarter.)

H h d CSE30?

Page 12: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 12/33

Have you had CSE30?

Select Statement

A Yes, this year.

B Yes, last year.

C Yes, an equivalent course at another school.

D No.

Page 13: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 13/33

13

The Idea of the CPU

Page 14: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 14/33

History Slides

14

Page 15: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 15/33

15

The Stored Program Computer

• The program is data

• It is a series of bits

• It lives in memory

• A series of discrete

“instructions”

• The program counter(PC) control execution• It points to the current

instruction• Advances through the

program

Page 16: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 16/33

Which of the following statement is

Page 17: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 17/33

Which of the following statement isgenerally true about ISAs?

Select StatementA Many models of processors can support one

ISA.

B An ISA is unique to one model of processor.

C Every processor supports multiple ISAs.

D Each processor manufacturer has its ownunique ISA.

E None of the above

Page 18: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 18/33

18

The MIPS ISA

Page 19: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 19/33

19

We Will Study Two ISAs• MIPS

• Simple, elegant, easy to implement

• Designed with the benefit many years ISA designexperience

• Designed for modern programmers, tools, andapplications

•The basis for your implementation project in 141L

• Not widely used in the real world (but similar ISAsare pretty common, e.g. ARM)

• x86• Ugly, messy, inelegant, crufty, arcane, very

difficult to implement.

• Designed for 1970s technology

• Nearly the last in long series of unfortunate ISAdesigns.

• The dominant ISA in modern computer systems.

You will learnto write MIPS

code andimplement a

MIPSprocessor 

You will learnto read acommon

subset of x86

Page 20: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 20/33

20

MIPS Basics•

Instructions• 4 bytes (32 bits)

• 4-byte aligned (i.e., they start at addresses that are a multiple of 4 --0x0000, 0x0004, etc.)

• Instructions operate on memory and registers

•Memory Data types (also aligned)• Bytes -- 8 bits

• Half words -- 16 bits

• Words -- 32 bits

• Memory is denote“M” (e.g., M[0x10] is the byte at address 0x10)

•Registers• 32 4-byte registers in the “register file”

• Denoted“R” (e.g., R[2] is register 2)

• There’s a handy reference on the inside cover of yourtext book and a detailed reference in Appendix B.

Page 21: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 21/33

Page 22: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 22/33

22

The MIPS Register File

•All registers are the same• Where a register is needed

any register will work

• By convention, we use themfor particular tasks

• Argument passing• Temporaries, etc.

• These rules (“the registerdiscipline”) are part of the

ISA• $zero is the“zero register”

• It is always zero.

• Writes to it have no effect.

Name number useCalleesaved

$zero 0 zero n/a

$at 1 Assemble Temp no

$v0 - $v1 2 - 3 return value no

$a0 - $a3 4 - 7 arguments no

$t0 - $t7 8 - 15 temporaries no

$s0 - $s7 16 - 23 saved temporaries yes

$t8 - $t9 24 - 25 temporaries no

$k0 - $k1 26 - 27 Res. for OS yes

$gp 28 global ptr yes

$sp 29 stack ptr yes

$fp 30 frame ptr yes

$ra 31 return address yes

Page 23: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 23/33

In each column we have which - reg ormem - is better. Which row is correct?

Faster

access

Fewer bits to

specify

More

locationsA Mem Mem Reg

B Mem Reg Mem

C Reg Mem RegD Reg Reg Mem

E None of the above

Page 24: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 24/33

25

MIPS R-Type Arithmetic Instructions

• R-Type instructions encodeoperations of the form“a = b OP c” where ‘OP’ is +, -,

<<, &, etc.• More formally, R[rd] = R[rs] OP R[rt]

• Bit fields•   “opcode” encodes the operation type.

•   “funct” specifies the particular operation.

•   “rs” are “rt” source registers;“rd” is

the destination register• 5 bits can specify one of 32 registers.

•   “shamt” is the “shift amount” forshift operations• Since registers are 32 bits, 5 bits are

sufficient

Examples• add $t0, $t1, $t2

• R[8] = R[9] + R[10]

• opcode = 0, funct = 0x20

• nor $a0, $s0, $t4

• R[4] = ~(R[16] | R[12])

• opcode = 0, funct = 0x27

• sll $t0, $t1, 4• R[4] = R[16] << 4

• opcode = 0, funct =

0x0, shamt = 4

MIPS R T C l I i

Page 25: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 25/33

26

MIPS R-Type Control Instructions

• R-Type encodes“register-indirect” jumps

• Jump register•

 jr rs: PC = R[rs]• Jump and link register

•  jalr rs, rd: R[rd] = PC + 8; PC = R[rs]

• rd default to $ra (i.e., the assembler will fill itin if you leave it out)

Examples• jr $t2

• PC = r[10]• opcode = 0, funct = 0x8

• jalr $t0

• PC = R[8]

• R[31] = PC + 8

• opcode = 0, funct = 0x9

• jalr $t0, $t1

• PC = R[8]

• R[9] = PC + 8

• opcode = 0, funct = 0x9

MIPS I T A i h i I i

Page 26: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 26/33

27

MIPS I-Type Arithmetic Instructions

• I-Type arithmetic instructions encodeoperations of the form “a = b OP#”

•  ‘OP

’is +, -, <<, &, etc and # is aninteger constant

• More formally, e.g.: R[rt] = R[rs] + 42

• Components•   “opcode” encodes the operation type.

•   “rs” is the source register

•   “rd” is the destination register

•   “immediate” is a 16 bit constantused as an argument for theoperation

Examples• addi $t0, $t1, -42

R[8] = R[9] + -42• opcode = 0x8

• ori $t0, $zero, 42

• R[4] = R[0] | 42

• opcode = 0xd

• Loads a constant into $t0

MIPS I T B h I i

Page 27: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 27/33

28

MIPS I-Type Branch Instructions

• I-Type also encode branches• if (R[rd] OP R[rs])

PC = PC + 4 + 4 * Immediateelse

PC = PC + 4• Components

•   “rs” and “rt” are the two registers to becompared

•   “rt” is sometimes used to specify branchtype.

•   “immediate” is a 16 bit branchoffset• It is the signed offset to the target of the

branch

• Limits branch distance to 32K instructions

• Usually specified as a label, and the

assembler fills it in for you.

Examples• beq $t0, $t1, -42

if R[8] == R[9]PC = PC + 4 + 4*-42

• opcode = 0x4

• bgez $t0, -42

• if R[8] >= 0

PC = PC + 4 + 4*-42

• opcode = 0x1• rt = 1

MIPS I T M I t ti

Page 28: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 28/33

29

MIPS I-Type Memory Instructions

• I-Type also encode memory access• Store: M[R[rs] + Immediate] = R[rt]

• Load: R[rt] = M[R[rs] + Immediate]

•MIPS has load/stores for byte, halfword, and word

• Sub-word loads can also be signed orunsigned• Signed loads sign-extend the value to fill a 32

bit register.

• Unsigned zero-extend the value.

•   “immediate” is a 16 bit offset• Useful for accessing structure components

• It is signed.

Examples• lw $t0, 4($t1)

R[8] = M[R[9] + 4]• opcode = 0x23

• sb $t0, -17($t1)

• M[R[12] + -17] = R[4]

• opcode = 0x28

MIPS J T I t ti

Page 29: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 29/33

30

MIPS J-Type Instructions

• J-Type encodes the jump instructions

• Plain Jump• JumpAddress = {PC+4[31:28],Address,2’b0}

•Address replaces most of the PC

• PC = JumpAddress

• Jump and Link• R[$ra] = PC + 8; PC = JumpAddress;

• J-Type also encodes miscinstructions• syscall, interrupt return, and break

(more later)

Examples• j $t0

PC = R[8]• opcode = 0x2

• jal $t0

• R[31] = PC + 8

• PC = R[8]

Consider a hypothetical ISA that supports 16

Page 30: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 30/33

yp ppinstructions and 16 registers (0-15), and 16 bitinstructions. It will have just one instruction format.

How many register operands can the instructionformat encode?

Selection operands

A <= 1

B <= 2

C <= 3

D <= 4

E None of the

above

How many of these instruction formats would work for

Page 31: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 31/33

How many of these instruction formats would work foran ISA with 36 instructions and 32 registers?

opcode register register register 

6

bits

4

bits

4

bits

4

bits

opcode register register  

6bits

5bits

5bits

opcode register register register 

5

bits

5

bits

5

bits

5

bits

opcode register register  

7bits

5bits

5bits

I

.

II

.

III.

IV.

opcode register register register  

V

.

6

bits

6

bits

6

bits

6

bits

33

Selection operands

A 1

B 2C 3

D 4

E 5

Convert this MIPS machine instruction to

Page 32: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 32/33

Convert this MIPS machine instruction toassembly:

0010 0001 0001 0000 0000 0000 0010 0010

Selection InstructionA addi r16, r8, #34

B addi r8, r16, #34

C sub r8, r16, r31D sub r31, r8, r16

E None of the above

E ec ting a MIPS program

Page 33: 4-8-01_ISA-Part I-0408

8/12/2019 4-8-01_ISA-Part I-0408

http://slidepdf.com/reader/full/4-8-01isa-part-i-0408 33/33

35

Executing a MIPS program• All instructions have• <= 1 arithmetic op

• <= 1 memory access

• <= 2 register reads

• <= 1 register write

• <= 1 branch

• All instructions gothrough all the steps

• As a result• Implementing MIPS is

(sort of) easy!

• The resulting HW is(relatively) simple!

Usually PC + 4

Get the next instruction

Determine what to doand read input registers

Execute the instruction

Update the register file

Read or write memory

(if needed)