MIPS Datapath CMSC 301 Prof Szajda Goal Build an architecture to - - PowerPoint PPT Presentation

mips datapath
SMART_READER_LITE
LIVE PREVIEW

MIPS Datapath CMSC 301 Prof Szajda Goal Build an architecture to - - PowerPoint PPT Presentation

MIPS Datapath CMSC 301 Prof Szajda Goal Build an architecture to support the following instructions w Arithmetic: add, sub, addi, slt w Memory references: lw, sw w Branches: j, beq Process 1) Design basic framework that is needed by all


slide-1
SLIDE 1

MIPS Datapath

CMSC 301 Prof Szajda

slide-2
SLIDE 2

Goal

  • Build an architecture to support the

following instructions

w Arithmetic: add, sub, addi, slt w Memory references: lw, sw w Branches: j, beq

slide-3
SLIDE 3

Process

1) Design basic framework that is needed by all instructions 2) Build a computer for each operation individually 3) Add MUXs to choose between different operations 4) Add control signals to control the MUXs

slide-4
SLIDE 4

MIPS Steps

  • Get an instruction from memory using the

Program Counter (PC)

  • Read one or two registers each instruction

w One register: addi, lw w Two registers: add, sub, slt, sw, beq

  • All instructions use ALU after reading regs
  • Some instructions also access Memory
  • Write result to Register file
slide-5
SLIDE 5

Get instruction from memory

Framework

slide-6
SLIDE 6

Read from register file Get instruction from memory

Framework

slide-7
SLIDE 7

Read from register file Use ALU Get instruction from memory

Framework

slide-8
SLIDE 8

Read from register file Use ALU Get instruction from memory Access memory

Framework

slide-9
SLIDE 9

Read from register file Use ALU Get instruction from memory Access memory Write register file

Framework

slide-10
SLIDE 10

Get Instruction

Where do we store instructions?

slide-11
SLIDE 11

Get Instruction

Instruction Memory Address Data Where do we store instructions? Memory

slide-12
SLIDE 12

Get Instruction

Instruction Memory Address Data How do we know at what address to fetch instruction?

slide-13
SLIDE 13

Get Instruction

Instruction Memory Program Counter (PC) Data How do we know at what address to fetch instruction? Program Counter

slide-14
SLIDE 14

Get Instruction

Instruction Memory Program Counter (PC) Data What do we end up with?

slide-15
SLIDE 15

Get Instruction

Instruction Memory Program Counter (PC) Instruction What do we end up with? Instruction

slide-16
SLIDE 16

Get Instruction

Instruction Memory Program Counter (PC) Instruction What happens to the PC each instruction?

slide-17
SLIDE 17

Get Instruction

Instruction Memory Program Counter (PC) Instruction What happens to the PC each instruction? Increment by 4B 4

slide-18
SLIDE 18

Read from register file Use ALU Get instruction from memory Write register file

“Add” Instruction

slide-19
SLIDE 19

Read from register file Use ALU Write register file

Read Addr Out Data

Instruction Memory PC Inst 4

  • p/fun

rs rt rd imm

Operation rs rt rd shamt funct # meaning add 3 5 2 32 # $2 <- $3 + $5

“Add” Instruction

slide-20
SLIDE 20

Use ALU

“Add” Instruction

Write register file

Read Addr Out Data

Instruction Memory PC Inst 4 Register File

  • p/fun

rs rt rd imm

Operation rs rt rd shamt funct # meaning add 3 5 2 32 # $2 <- $3 + $5

How many registers do we need to read?

slide-21
SLIDE 21

Use ALU

“Add” Instruction

Write register file

Read Addr Out Data

Instruction Memory PC Inst 4 Register File

  • p/fun

rs rt rd imm

Operation rs rt rd shamt funct # meaning add 3 5 2 32 # $2 <- $3 + $5

How many registers do we need to read? 2

slide-22
SLIDE 22

Use ALU

“Add” Instruction

Write register file

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

  • p/fun

rs rt rd imm

Operation rs rt rd shamt funct # meaning add 3 5 2 32 # $2 <- $3 + $5

What part of instruction tells us the register number?

slide-23
SLIDE 23

Use ALU

“Add” Instruction

Write register file

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

  • p/fun

rs rt rd imm

Operation rs rt rd shamt funct # meaning add 3 5 2 32 # $2 <- $3 + $5

What part of instruction tells us the register number? rs & rt

slide-24
SLIDE 24

“Add” Instruction

  • p/fun

rs rt rd imm Write register file

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

Operation rs rt rd shamt funct # meaning add 3 5 2 32 # $2 <- $3 + $5

slide-25
SLIDE 25

“Add” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destdata

  • p/fun

rs rt rd imm

Operation rs rt rd shamt funct # meaning add 3 5 2 32 # $2 <- $3 + $5

How do we know which register to write?

slide-26
SLIDE 26

“Add” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt rd shamt funct # meaning add 3 5 2 32 # $2 <- $3 + $5

How do we know which register to write? rd

slide-27
SLIDE 27

“Add” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt rd shamt funct # meaning add 3 5 2 32 # $2 <- $3 + $5

slide-28
SLIDE 28

What happens if instruction reads and writes same register?

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt rd shamt funct # meaning add 3 5 3 32 # $3 <- $3 + $5

slide-29
SLIDE 29

What happens if instruction reads and writes same register?

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt rd shamt funct # meaning add 3 5 3 32 # $3 <- $3 + $5

What would happen if we allowed write to occur at any time? Clock is dependent on longest path (lw) Quick operations may loop twice through machine, getting incorrect result.

slide-30
SLIDE 30

Reading/Write Registers

  • When does register get written?

w At the end of the clock cycle w Edge-triggered circuits

slide-31
SLIDE 31

“Addi” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning addi $5,$3,6 3 5 6 # $5 <- $3 + 6

What registers do we read?

slide-32
SLIDE 32

“Addi” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning addi $5,$3,6 3 5 6 # $5 <- $3 + 6

What registers do we read? rs

slide-33
SLIDE 33

“Addi” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning addi $5,$3,6 3 5 6 # $5 <- $3 + 6

Where do we get the second input?

slide-34
SLIDE 34

“Addi” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm 16 bits 32 bits

Operation rs rt imm # meaning addi $5,$3,6 3 5 6 # $5 <- $3 + 6

Where do we get the second input? imm (16 bits)

slide-35
SLIDE 35

Sign Extension

  • How do we go from 16-bit number to

32-bit number?

  • How about 4-bit to 8-bit.

w 0111 = 7 = 00000111 w 1110 = -2 = 11111110

  • Take the top bit and copy it to all the
  • ther bits
slide-36
SLIDE 36

“Addi” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm 16 32 Sign Ext

Operation rs rt imm # meaning addi $5,$3,6 3 5 6 # $5 <- $3 + 6

Sign extend immediate value

slide-37
SLIDE 37

“Addi” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm 16 32 Sign Ext

Operation rs rt imm # meaning addi $5,$3,6 3 5 6 # $5 <- $3 + 6

How do we know which register to write?

slide-38
SLIDE 38

“Addi” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm 16 32 Sign Ext

Operation rs rt imm # meaning addi $5,$3,6 3 5 6 # $5 <- $3 + 6

How do we know which register to write? rt

slide-39
SLIDE 39

Putting them Together

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm 16 32 Sign Ext

slide-40
SLIDE 40

Putting them Together

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm 16 32 Sign Ext Two wires to the same input

slide-41
SLIDE 41

Putting them Together

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm 16 32 Sign Ext Two wires to the same input Add MUXs

slide-42
SLIDE 42

Putting them Together

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm 16 32 Sign Ext

What determines which to take?

slide-43
SLIDE 43

Putting them Together

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm 16 32 Sign Ext What determines which to take? Op/Func code Control Unit

RegDest ALUSrc ALUOp

slide-44
SLIDE 44

Load Operation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning lw $5,8($3) 3 5 8 # $5 <- M[$3 + 8]

Addr Out Data

Data Memory

In Data

slide-45
SLIDE 45

Load Operation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning lw $5,8($3) 3 5 8 # $5 <- M[$3 + 8]

Addr Out Data

Data Memory

In Data

How many source regs? What part of instruction?

slide-46
SLIDE 46

Load Operation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning lw $5,8($3) 3 5 8 # $5 <- M[$3 + 8]

Addr Out Data

Data Memory

In Data

How many source regs? 1 What part of instruction? rs

slide-47
SLIDE 47

Load Operation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning lw $5,8($3) 3 5 8 # $5 <- M[$3 + 8]

Addr Out Data

Data Memory

In Data

Where do we get the second input?

slide-48
SLIDE 48

Load Operation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning lw $5,8($3) 3 5 8 # $5 <- M[$3 + 8]

Addr Out Data

Data Memory

In Data

16 32 Sign Ext

Where do we get the second input? Sign extended imm

slide-49
SLIDE 49

Load Operation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Addr Out Data

Data Memory

In Data

16 32 Sign Ext

Operation rs rt imm # meaning lw $5,8($3) 3 5 8 # $5 <- M[$3 + 8]

What do we do with the ALU

  • utput?
slide-50
SLIDE 50

Load Operation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning lw $5,8($3) 3 5 8 # $5 <- M[$3 + 8]

Addr Out Data

Data Memory

In Data

16 32 Sign Ext

What do we do with the ALU

  • utput? Memory Address
slide-51
SLIDE 51

Load Operation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning lw $5,8($3) 3 5 8 # $5 <- M[$3 + 8]

Addr Out Data

Data Memory

In Data

32 Sign Ext 16

slide-52
SLIDE 52

Load Operation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning lw $5,8($3) 3 5 8 # $5 <- M[$3 + 8]

Addr Out Data

Data Memory

In Data

32 Sign Ext 16

Where do we write the result?

slide-53
SLIDE 53

Load Operation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning lw $5,8($3) 3 5 8 # $5 <- M[$3 + 8]

Addr Out Data

Data Memory

In Data

32 Sign Ext 16

Where do we write the result? rt

slide-54
SLIDE 54

Store Operation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning sw $5,8($3) 3 5 8 # M[$3 + 8] <- $5

Addr Out Data

Data Memory

In Data

32 Sign Ext 16

slide-55
SLIDE 55

Store Operation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning sw $5,8($3) 3 5 8 # M[$3 + 8] <- $5

Addr Out Data

Data Memory

In Data

Address calculation identical to load word

32 Sign Ext 16

slide-56
SLIDE 56

Store Operation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning sw $5,8($3) 3 5 8 # M[$3 + 8] <- $5

Addr Out Data

Data Memory

In Data

32 Sign Ext 16

Is $5 read or written? Which register?

slide-57
SLIDE 57

Store Operation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning sw $5,8($3) 3 5 8 # M[$3 + 8] <- $5

Addr Out Data

Data Memory

In Data

32 Sign Ext 16

Is $5 read or written? read Which register?

slide-58
SLIDE 58

Store Operation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning sw $5,8($3) 3 5 8 # M[$3 + 8] <- $5

Addr Out Data

Data Memory

In Data

32 Sign Ext 16

Is $5 read or written? read Which register? rt

slide-59
SLIDE 59

Store Operation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning sw $5,8($3) 3 5 8 # M[$3 + 8] <- $5

Addr Out Data

Data Memory

In Data

32 Sign Ext 16

What do we do with the value?

slide-60
SLIDE 60

Store Operation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning sw $5,8($3) 3 5 8 # M[$3 + 8] <- $5

Addr Out Data

Data Memory

In Data

32 Sign Ext 16

What do we do with the value? In Data for memory

slide-61
SLIDE 61

Store Operation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning sw $5,8($3) 3 5 8 # M[$3 + 8] <- $5

Addr Out Data

Data Memory

In Data

32 Sign Ext 16

What do we do with OutData?

slide-62
SLIDE 62

Store Operation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning sw $5,8($3) 3 5 8 # M[$3 + 8] <- $5

Addr Out Data

Data Memory

In Data

32 Sign Ext 16

What do we do with OutData? Nothing.

slide-63
SLIDE 63

Putting them together

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Addr Out Data

Data Memory

In Data

32 Sign Ext 16 Control Unit

ALUOp

slide-64
SLIDE 64

Putting them together

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Addr Out Data

Data Memory

In Data

32 Sign Ext 16 Control Unit

ALUOp

What do we NOT want it to do for a store?

slide-65
SLIDE 65

Putting them together

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Addr Out Data

Data Memory

In Data

32 Sign Ext 16 Control Unit

ALUOp

What do we NOT want it to do for a store? Write to destreg

RegWrite

slide-66
SLIDE 66

Putting them together

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Addr Out Data

Data Memory

In Data

32 Sign Ext 16 Control Unit

ALUOp

Do we want it to read or write?

RegWrite

slide-67
SLIDE 67

Putting them together

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Addr Out Data

Data Memory

In Data

32 Sign Ext 16 Control Unit

ALUOp

Do we want it to read or write? Depends on

  • pcode

RegWrite MemRd MemWr

slide-68
SLIDE 68

“beq” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning beq $3,$5,lp 3 5 6 # if ($3 == $5) goto lp

slide-69
SLIDE 69

“beq” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning beq $3,$5,lp 3 5 6 # if ($3 == $5) goto lp

slide-70
SLIDE 70

“beq” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning beq $3,$5,lp 3 5 6 # if ($3 == $5) goto lp

What operation?

slide-71
SLIDE 71

“beq” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning beq $3,$5,lp 3 5 6 # if ($3 == $5) goto lp

What operation? Subtraction, compared with 0

Zero?

slide-72
SLIDE 72

“beq” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning beq $3,$5,lp 3 5 6 # if ($3 == $5) goto lp How do we go anywhere?

Zero?

slide-73
SLIDE 73

“beq” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning beq $3,$5,lp 3 5 6 # if ($3 == $5) goto lp How do we go anywhere? Change the PC

Zero?

slide-74
SLIDE 74

“beq” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning beq $3,$5,lp 3 5 6 # if ($3 == $5) goto lp Where do we want to go?

Zero?

slide-75
SLIDE 75

“beq” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning beq $3,$5,lp 3 5 6 # if ($3 == $5) goto lp Where do we want to go? Advance imm instructions

Zero? 32 Sign Ext 16

slide-76
SLIDE 76

“beq” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning beq $3,$5,lp 3 5 6 # if ($3 == $5) goto lp Where do we want to go? Advance imm instructions

Zero? 32 Sign Ext 16

But the PC is in bytes.

slide-77
SLIDE 77

“beq” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning beq $3,$5,lp 3 5 6 # if ($3 == $5) goto lp

Zero? 32 Sign Ext 16 << 2

But the PC is in bytes. PC = (PC + 4)+ Imm<<2

Where do we want to go? Advance imm instructions

slide-78
SLIDE 78

“beq” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning beq $3,$5,lp 3 5 6 # if ($3 == $5) goto lp

Zero? 32 Sign Ext 16 << 2 How do we use our Zero bit?

slide-79
SLIDE 79

“beq” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation rs rt imm # meaning beq $3,$5,lp 3 5 6 # if ($3 == $5) goto lp

Zero? 32 Sign Ext 16 << 2 How do we use our Zero bit? Choose between PC+4 and PC+4+(Imm<<2)

slide-80
SLIDE 80

“j” Instruction

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation Target address # meaning j loop 0x0174837 # goto loop

Where do we go?

slide-81
SLIDE 81

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation Target address # meaning j loop 0x0174837 # goto loop

Where do we go? To this absolute

address

“j” Instruction

slide-82
SLIDE 82

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation Target address # meaning j loop 0x0174837 # goto loop

Where do we go? To this absolute

address

But this is only ______ bits, when the PC is _____ bits.

“j” Instruction

slide-83
SLIDE 83

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation Target address # meaning j loop 0x0174837 # goto loop

Where do we go? To this absolute

address

But this is only 26 bits, when the PC is 32 bits.

“j” Instruction

slide-84
SLIDE 84

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation Target address # meaning j loop 0x0174837 # goto loop

Where do we go? To this absolute

address

But this is only 26 bits, when the PC is 32 bits. Shift left, Concatenate PC’s upper bits

“j” Instruction

slide-85
SLIDE 85

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Operation Target address # meaning j loop 0x0174837 # goto loop

But this is only 26 bits, when the PC is 32 bits. Shift left, Concatenate current PC’s upper bits

“j” Instruction

4 bits 26 bits << 2 28 bits

slide-86
SLIDE 86

The Whole Shebang

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Addr Out Data

Data Memory

In Data

32 Sign Ext 16 << 2 << 2

slide-87
SLIDE 87

Control Unit

  • Set of control line values cause appropriate

actions to be taken at each step

  • Finite state machine determines what needs

to be done at each step

w Fetch w Decode w Execute w Memory w Writeback ACTIONS DEPEND ON OPCODE

slide-88
SLIDE 88
slide-89
SLIDE 89

Single Cycle Latency

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Addr Out Data

Data Memory

In Data

32 Sign Ext 16 << 2 << 2

slide-90
SLIDE 90

Time Diagram

slide-91
SLIDE 91

Cycle Time

  • Not all instructions must go through

all steps

w add doesn’t need to go to memory

  • Single long clock cycle makes add take

as long as load

  • Can we change this?

w Break single instruction execution into small execution steps

slide-92
SLIDE 92

Five Cycle Implementation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Addr Out Data

Data Memory

In Data

32 Sign Ext 16 << 2 << 2

slide-93
SLIDE 93

Five Cycle Implementation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Addr Out Data

Data Memory

In Data

32 Sign Ext 16 << 2 << 2 FETCH FETCH

slide-94
SLIDE 94

Five Cycle Implementation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Addr Out Data

Data Memory

In Data

32 Sign Ext 16 << 2 << 2 DE DECODE CODE

slide-95
SLIDE 95

Five Cycle Implementation

EXEC EXECUTE TE

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Addr Out Data

Data Memory

In Data

32 Sign Ext 16 << 2 << 2

slide-96
SLIDE 96

Five Cycle Implementation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Addr Out Data

Data Memory

In Data

32 Sign Ext 16 << 2 << 2 ME MEMO MORY RY

slide-97
SLIDE 97

Five Cycle Implementation

Read Addr Out Data

Instruction Memory PC Inst 4

src1 src1data src2 src2data

Register File

destreg destdata

  • p/fun

rs rt rd imm

Addr Out Data

Data Memory

In Data

32 Sign Ext 16 << 2 << 2 WRI WRITE TEBACK CK

slide-98
SLIDE 98

How Many Cycles For:

  • add
  • sw
  • lw
  • blt
  • j