mips: microprocessor without interlocked pipeline stages · 2015-09-15 · ece473 2 mips...

42
1 ECE473 MIPS: Microprocessor without Interlocked Pipeline Stages ECE473 Computer Architecture and Organization Lecturer: Prof. Yifeng Zhu Fall, 2015 Portions of these slides are derived from: Dave Patterson © UCB

Upload: hoangdieu

Post on 30-Jul-2018

238 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

1ECE473

MIPS: Microprocessor without Interlocked Pipeline Stages

ECE473 Computer Architecture and Organization

Lecturer: Prof. Yifeng Zhu

Fall, 2015

Portions of these slides are derived from:

Dave Patterson © UCB

Page 2: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

2ECE473

MIPS Architecture

• MIPS: Microprocessor

without Interlocked

Pipeline Stages

• Why MIPS instead of Intel 80x86?– MIPS is simple, elegant.

Design not hampered by backward compatibility considerations.

– MIPS and Advanced RISC Machine (ARM) processors are widely used in embedded apps, x86 little used in embedded, and more embedded computers than PCs

1400

1300

1200

1100

1000

900

800

700

600

500

400

300

200

100

0

1998 2000 2001 20021999

Other

SPARC

Hitachi SH

PowerPC

Motorola 68K

MIPS

IA-32

ARM

Page 3: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

3ECE473

von-Neumann Architecture

• Store program and data in memory

• Bring instructions and data into CPU for program execution

• Store results back in memory

• Memory/CPU tightly coupled through memory bus for high performance– All other components look like I/O to them:

» networks, secondary storage, multimedia, keyboard, monitor, ...

Page 4: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

4ECE473

MIPS Registers and Memory

Memory4GB Max

(Typically 64MB-1GB)

0x00000000

0x00000004

0x00000008

0x0000000C

0x00000010

0x00000014

0x00000018

0x0000001C

0xfffffff4

0xfffffffc

0xfffffffc

PC = 0x0000001C

Registers

32 General Purpose Registers

R0R1R2

R30R31

32 bits

Page 5: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

5ECE473

Policy of Use Conventions

Name Register number Usage0 the constant value 01 reserved for assembler

2-3 values for results and expression evaluation4-7 arguments8-15 temporary registers16-23 saved registers24-25 more temporary registers26-27 reserved for Operating System kernel

28 global pointer29 stack pointer30 frame pointer31 return address

Each register can be referred to by number or name.

Page 6: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

6ECE473

More about MIPS Memory Organization

• Two views of memory:– 232 bytes with addresses 0, 1, 2, …, 232-1

– 230 4-byte words* with addresses 0, 4, 8, …, 232-4

• Both views use byte addresses

• Word address must be multiple of 4 (aligned)

8 bits

0x00000000

0x00000001

0x00000002

0x00000003

0x00000000

0x00000004

0x00000008

0x0000000C

32 bits

0 1 2 3

*Word sizes vary in

other architectures

Not all architectures require this

Page 7: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

7ECE473

MIPS Instruction Types

• Arithmetic & Logical - manipulate data in registers

add $s1, $s2, $s3 $s1 = $s2 + $s3or $s3, $s4, $s5 $s3 = $s4 OR $s5

• Data Transfer - move register data to/from memory

lw $s1, 100($s2) $s1 = Memory[$s2 + 100]sw $s1, 100($s2) Memory[$s2 + 100] = $s1

• Branch - alter program flow

beq $s1, $s2, 25 if ($s1==$s2) PC = PC + 4 + 4*25

Page 8: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

8ECE473

MIPS Arithmetic & Logical Instructions

• Instruction usage (assembly)

add dest, src1, src2 dest = src1 + src2sub dest, src1, src2 dest = src1 - src2and dest, src1, src2 dest = src1 AND src2

• Instruction characteristics– Always 3 operands: destination + 2 sources

– Operand order is fixed

– Operands are always general purpose registers

Page 9: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

9ECE473

MIPS Instructions

• All instructions exactly 32 bits wide

• Different formats for different purposes

• Similarities in formats ease implementation

op rs rt offset

6 bits 5 bits 5 bits 16 bits

op rs rt rd functshamt

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

R-Format

I-Format

op address

6 bits 26 bits

J-Format

31 0

31 0

31 0

Page 10: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

10ECE473

Arithmetic & Logical Instructions -Binary Representation

• Used for arithmetic, logical, shift instructions– op: Basic operation of the instruction (opcode)

– rs: first register source operand

– rt: second register source operand

– rd: register destination operand

– shamt: shift amount (more about this later)

– funct: function - specific type of operation

• Also called “R-Format” or “R-Type” Instructions

op rs rt rd functshamt

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

031

Page 11: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

11ECE473

op rs rt rd functshamt

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

Decimal

Binary

Arithmetic & Logical Instructions -Binary Representation Example

• Machine language for add $8, $17, $18

• See reference card for op, funct values

000000

0

10001

17

10010

18

01000

8

00000

0

100000

32

031

Page 12: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

12ECE473

MIPS Data Transfer Instructions

• Transfer data between registers and memory

• Remember arithmetic operands are registers, not memory!

• Instruction formatlw $dest, offset($addr) load wordsw $src, offset($addr) store word

• Example C code: A[8] = h + A[8];– MIPS code: Assume the value of h is saved in $s2 and

$s3 contains address of A[0];

lw $t0, 32($s3)

add $t0, $s2, $t0

sw $t0, 32($s3)

Page 13: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

13ECE473

Example - Loading a Simple Variable

lw R5,8(R2) Memory

0x00

Variable Z = 692310

Variable XVariable Y

0x04

0x08

0x0c

0x10

0x14

0x18

0x1c

8

+

Registers

R0=0 (constant)R1

R2=0x10

R30R31

R3R4R5R5

R2=0x10

R5 = 629310Variable Z = 692310

Page 14: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

14ECE473

Data Transfer Example –Array Variable

Registers

R0=0 (constant)R1

R2=0x08

R30R31

R3R4

R5=105

C Program: int a[5];

a[3] = z;

Assembly: sw $5,12($2)

12=0xc

+

Memory

0x00

a[0]

a[4]

a[2]a[1]

a[3]

0x04

0x08

0x0c

0x10

0x14

0x18

0x1c

Base Address

R5=105

R2=0x08

a[3]=105

scaled offset

Page 15: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

15ECE473

Data Transfer Instructions -Binary Representation

• Used for load, store instructions– op: Basic operation of the instruction (opcode)

– rs: first register source operand

– rt: second register source operand or register destination operand

– offset: 16-bit signed address offset (-32,768 to +32,767)

• Also called “I-Format” or “I-Type” instructions

op rs rt offset

6 bits 5 bits 5 bits 16 bits

Page 16: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

16ECE473

I-Format vs. R-Format Instructions

• Compare with R-Format

offset

6 bits 5 bits 5 bits 16 bits

I-Formatop rs rt

rd functshamt

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

R-Formatop rs rt

Note similarity!

Page 17: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

17ECE473

I-Format Example

• Machine language for lw $9, 1200($8) == lw $t1, 1200($t0)

op rs rt offset

6 bits 5 bits 5 bits 16 bits

Binary

Decimal35 8 9 1200

100011 01000 01001 0000010010110000

031

Page 18: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

18ECE473

MIPS Conditional Branch Instructions

• Conditional branches allow decision makingbeq R1, R2, LABEL if R1==R2 goto LABELbne R3, R4, LABEL if R3!=R4 goto LABEL

• ExampleC Code if (i==j) goto L1;

f = g + h;L1: f = f - i;

Assembly beq $s3, $s4, L1add $s0, $s1, $s2

L1: sub $s0, $s0, $s3

Page 19: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

19ECE473

Example: Compiling C if-then-else

• ExampleC Code if (i==j) f = g + h;

else f = g - h;

Assembly bne $s3, $s4, Elseadd $s0, $s1, $s2j Exit; # new: unconditional jump

Else: sub $s0, $s0, $s3Exit:

• New Instruction: Unconditional jumpj LABEL # goto Label

Page 20: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

20ECE473

Binary Representation - Branch

• Branch instructions use I-Format

• offset is added to PC when branch is taken

beq r0, r1, offset

has the effect:

if (r0==r1) pc = pc + 4 + (offset << 2)else pc = pc + 4;

• Offset is specified in instruction words (why?)

• What is the range of the branch target addresses?

op rs rt offset

6 bits 5 bits 5 bits 16 bits

Page 21: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

21ECE473

Branch Example

• Machine language for beq $s3, $s4, L1add $s0, $s1, $s2

L1: sub $s0, $s0, $s3

op rs rt offset

6 bits 5 bits 5 bits 16 bits

Binary

Decimal4 19 20 1

000100 10011 10100 0000000000000001

$19 $20

PC

PC+4Target

of beq

1-instruction

offset

031

Page 22: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

22ECE473

Comparisons - What about <, <=, >, >=?

• bne, beq provide equality comparison

• slt provides magnitude comparisonslt $t0,$s3,$s4 # if $s3<$s4 $t0=1;

# else $t0=0;

• Combine with bne or beq to branch:slt $t0,$s3,$s4 # if (a<b)bne $t0,$zero, Less # goto Less;

• Why not include a blt instruction in hardware?

– Supporting in hardware would lower performance

– Assembler provides this function if desired (by generating the two instructions)

condition register

Page 23: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

23ECE473

Binary Representation - Jump

• Jump Instruction uses J-Format (op=2)

• What happens during execution?PC = PC[31:28] : (IR[25:0] << 2)

op address

6 bits 26 bits

Conversion to

word offset

Concatenate

upper 4 bits

of PC to form

complete

32-bit address

Page 24: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

24ECE473

Jump Example

• Machine language for j L5

Assume L5 is at address 0x00400020

and

PC <= 0x03FFFFFF

Binary

Decimal/Hex

op address

6 bits 26 bits

2 0x0100008

000010 00000100000000000000001000

>>2

lower 28

bits

0x010000831 0

Page 25: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

25ECE473

Constants / Immediate Instructions

• Small constants are used quite frequently (50% of operands)

e.g., A = A + 5;B = B + 1;C = C - 18;

• MIPS Immediate Instructions (I-Format):addi $29, $29, 4slti $8, $18, 10andi $29, $29, 6ori $29, $29, 4

• Allows up to 16-bit constants

• How do you load just a constant into a register?

ori $5, $zero, 666

Arithmetic instructions sign-extend immed.

Logical instructions don’t sign extend immed.

Page 26: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

26ECE473

MIPS Logical Instructions

• and, andi - bitwise AND

• or, ori - bitwise OR

• Example

and $s2,$s0,$s1

ori $s3,s2,252

11011111010110100100100011110101

11110000111100001111000011110000

$s0

$s1

$s2 11010000010100000100000011110000

$s3 11010000010100000100000011111100

00000000000000000000000011111100 (25210)

Page 27: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

27ECE473

(original contents)$t0

32-Bit Immediate and Address

• Immediate operations provide for 16-bit constants.

• What about when we need larger constants?

• Use "load upper immediate - lui” (I-Format) to set the upper 16 bits of a constant in a register.

lui $t0, 1010101010101010

• Then use ori to fill in lower 16 bits:ori $t0, $t0, 1010101010101010

1010101010101010 0000000000000000

filled with zeros

$t0 1010101010101010 00000000000000001010101010101010

Page 28: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

28ECE473

MIPS Shift Instructions

• MIPS Logical Shift Instructions– Shift left: sll (shift-left logical) instruction

– Right shift: srl (shift-right logical) instruction

sll $s1,$s0,8

srl $s2,$s1,401011010010010001111010100000000

Zeros shift in

00000101101001001000111101010000

Zeros shift in

11011111010110100100100011110101$s0

$s1

$s2

Page 29: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

29ECE473

Shift Instruction Encodings

• Applications– Bitfield access (see book)

– Multiplication / Division by power of 2

– Example: array accesssll $t0,$t1,2 # $t0=$t1*4add $t3,$t1,$t2lw $t3, 0($t3)

op rs rt rd functshamt

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

srl

0 rs rt rd 0shamtsll

0 rs rt rd 6shamt

unused

Page 30: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

30ECE473

Endian

• Endian refers to “Byte Order”

• Little Endian: A byte at a lower address has lower significance

• Big Endian: A Byte at a lower address has higher significance

msb lsb

3 2 1 0 little endian byte 0

0 1 2 3

big endian byte 0

Page 31: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

31ECE473

Little Endian

Byte 3 Byte 2 Byte 1 Byte 0

For example, an integer requiring 4 bytes:

Base Address + 0 = Byte 0

Base Address + 1 = Byte 1

Base Address + 2 = Byte 2

Base Address + 3 = Byte 3

Page 32: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

32ECE473

Big Endian

Byte 3 Byte 2 Byte 1 Byte 0

For example, an integer requiring 4 bytes:

Base Address + 0 = Byte 3

Base Address + 1 = Byte 2

Base Address + 2 = Byte 1

Base Address + 3 = Byte 0

Page 33: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

33ECE473

Example

LW r11, [r0]

; r0 = 0x8000

Memory

Address

Memory

Data

0x8000 0xEE

0x8001 0x8C

0x8002 0x90

0x8003 0xA7

r11 before load

0x12345678

r11 after load

0xA7908CEE

If little endian is used

Page 34: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

34ECE473

Example

LW r11, [r0]

; r0 = 0x8000

Memory

Address

Memory

Data

0x8000 0xEE

0x8001 0x8C

0x8002 0x90

0x8003 0xA7

r11 before load

0x12345678

r11 after load

0xEE8C90A7

If big endian is used

Page 35: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

35ECE473

How to Decode?

• What is the assembly language statement corresponding to this machine instruction?

0x00af8020

• Convert to binary0000 0000 1010 1111 1000 0000 0010 0000

• Decode– op: 00000

– rs: 00101

– rt: 01111

– rd: 10000

– shamt: 00000

– funct: 100000

• Solution: add $s0, $a1, $t7

Page 36: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

36ECE473

Summary - MIPS Instruction Set

• simple instructions all 32 bits wide

• very structured, no unnecessary baggage

• only three instruction formats

op rs rt offset

6 bits 5 bits 5 bits 16 bits

op rs rt rd functshamt

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

R-Format

I-Format

op address

6 bits 26 bits

J-Format

Page 37: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

37ECE473

Example Pseudoinstructions

• Register Movemove reg2,reg1

Expands to:add reg2,$zero,reg1

• Load Immediateli reg,value

if value fits in 16 bits:addi reg,$zero,value

else:lui reg,upper 16 bits of value

ori reg,$zero,lower 16 bits

Page 38: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

38ECE473

True Assembly Language (2/3)

• Problem:–When breaking up a pseudoinstruction, the

assembler may need to use an extra reg.

– If it uses any regular register, it’ll overwrite whatever the program has put into it.

• Solution:–Reserve a register ($1, called $at for “assembler

temporary”) that assembler will use to break up pseudo-instructions.

–Since the assembler may use this at any time, it’s not safe to code with it.

Page 39: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

39ECE473

Example Pseudoinstructions

• Rotate Right Instructionror reg, value

Expands to:srl $at, reg, value

sll reg, reg, 32-value

or reg, reg, $at 0

0

• “No OPeration” instructionnop

Expands to instruction = 0ten,sll $0, $0, 0

Page 40: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

40ECE473

Example Pseudoinstructions

• Wrong operation for operandaddu reg,reg,value # should be addiu

If value fits in 16 bits, addu is changed to:addiu reg,reg,value

else:lui $at,upper 16 bits of value

ori $at,$at,lower 16 bits

addu reg,reg,$at

• How do we avoid confusion about whether we are talking about MIPS assembler with or without pseudoinstructions?

Page 41: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

41ECE473

True Assembly Language (3/3)

• MAL (MIPS Assembly Language): the set of instructions that a programmer may use to code in MIPS; this includespseudoinstructions

• TAL (True Assembly Language): set of instructions that can actually get translated into a single machine language instruction (32-bit binary string)

• A program must be converted from MAL into TAL before translation into 1s & 0s.

Page 42: MIPS: Microprocessor without Interlocked Pipeline Stages · 2015-09-15 · ECE473 2 MIPS Architecture •MIPS: Microprocessor without Interlocked Pipeline Stages •Why MIPS instead

42ECE473

Questions on Pseudoinstructions

• Question:–How does MIPS recognize pseudo-instructions?

• Answer:– It looks for officially defined pseudo-instructions,

such as ror and move

– It looks for special cases where the operand is incorrect for the operation and tries to handle it gracefully