EEM 486 : Computer Architecture Designing Single Cycle Control

26
EEM 486: Computer Architecture Designing Single Cycle Control

description

EEM 486 : Computer Architecture Designing Single Cycle Control. Processor. Input. Control. Memory. Datapath. Output. The Big Picture: Where are We Now?. ALU. PC. Clk. An Abstract View of the Implementation. Control. Ideal Instruction Memory. Control Signals. Conditions. - PowerPoint PPT Presentation

Transcript of EEM 486 : Computer Architecture Designing Single Cycle Control

Page 1: EEM  486 :  Computer Architecture Designing Single Cycle Control

EEM 486: Computer Architecture

Designing Single Cycle Control

Page 2: EEM  486 :  Computer Architecture Designing Single Cycle Control

The Big Picture: Where are We Now?

Control

Datapath

Memory

ProcessorInput

Output

Page 3: EEM  486 :  Computer Architecture Designing Single Cycle Control

An Abstract View of the Implementation

DataOut

Clk

5

Rw Ra Rb32 32-bitRegisters

Rd

ALU

Clk

Data In

DataAddress Ideal

DataMemory

Instruction

InstructionAddress

IdealInstruction

Memory

Clk

PC

5Rs

5Rt

32

323232A

B

Nex

t Ad

dres

s

Control

Datapath

Control SignalsConditions

Page 4: EEM  486 :  Computer Architecture Designing Single Cycle Control

Recap: A Single Cycle Datapath We have everything except control signals (underline)

32

ALUctr

Clk

busW

RegWr

3232

busA

32busB

55 5Rw Ra Rb32 32-bitRegisters

Rs

Rt

Rt

RdRegDst

Extender

Mux

Mux

3216imm16

ALUSrc

ExtOp

Mux

MemtoReg

Clk

Data InWrEn

32Adr

DataMemory

32

MemWrALU

InstructionFetch Unit

Clk

Zero

Instruction<31:0>

0

1

0

1

01<21:25>

<16:20>

<11:15>

<0:15>

Imm16RdRsRt

nPC_sel

Page 5: EEM  486 :  Computer Architecture Designing Single Cycle Control

Recap: Meaning of the Control Signals nPC_MUX_sel: 0 PC PC + 4

1 PC PC + 4 + SignExt(Im16) || 00

AdrInst

Memory

AdderAdder

PC

Clk

00Mux

4

nPC_MUX_sel

PC Extimm

16

Page 6: EEM  486 :  Computer Architecture Designing Single Cycle Control

Recap: Meaning of the Control Signals ExtOp: “zero”, “sign” ALUsrc: 0 regB; 1 immed ALUctr: “add”, “sub”, “or”

MemWr: 1 write memory

MemtoReg: 0 ALU; 1 Mem

RegDst: 0 “rt”; 1 “rd”

RegWr: 1 write register

32

ALUctr

Clk

busW

RegWr

3232

busA

32busB

55 5Rw Ra Rb32 32-bitRegisters

Rs

Rt

Rt

RdRegDst

Extender

Mux

3216imm16

ALUSrcExtOp

Mux

MemtoReg

Clk

Data InWrEn32 Adr

DataMemory

MemWrALU

Equal

0

1

0

1

01

=

Page 7: EEM  486 :  Computer Architecture Designing Single Cycle Control

RTL: The Add Instruction

add rd, rs, rt

◦ mem[PC] Fetch the instruction from memory

◦ R[rd] R[rs] + R[rt] The actual operation

◦ PC PC + 4 Calculate the next instruction’s address

op rs rt rd shamt funct061116212631

6 bits 6 bits5 bits5 bits5 bits5 bits

Page 8: EEM  486 :  Computer Architecture Designing Single Cycle Control

Instruction Fetch Unit at the Beginning of Add

Fetch the instruction from Instruction memory: Instruction mem[PC]

Same for all instructions Adr

InstMemory

AdderAdder

PC

Clk

00Mux

4

nPC_MUX_selim

m16

Instruction<31:0>

0

1

Page 9: EEM  486 :  Computer Architecture Designing Single Cycle Control

The Single Cycle Datapath During Add R[rd] R[rs] + R[rt]

32

ALUctr = Add

Clk

busW

RegWr = 1

3232

busA

32busB

55 5Rw Ra Rb32 32-bitRegisters

Rs

Rt

Rt

RdRegDst = 1

Extender

Mux

Mux

3216imm16

ALUSrc=0

ExtOp = x

Mux

MemtoReg = 0

Clk

Data InWrEn

32Adr

DataMemory

32

MemWr=0ALU

InstructionFetch Unit

Clk

Zero

Instruction<31:0>

0

1

0

1

01<21:25>

<16:20>

<11:15>

<0:15>

Imm16RdRsRt

nPC_sel= +4

Page 10: EEM  486 :  Computer Architecture Designing Single Cycle Control

Instruction Fetch Unit at the End of Add PC PC + 4

◦ This is the same for all instructions except: Branch and Jump

Adr

InstMemory

AdderAdder

PC

Clk

00Mux

4

nPC_MUX_sel

imm

16Instruction<31:0>

0

1

Page 11: EEM  486 :  Computer Architecture Designing Single Cycle Control

The Single Cycle Datapath During Or Immediate R[rt] R[rs] or ZeroExt[Imm16]

RegDst =

32

ALUctr =

Clk

busW

RegWr =

3232

busA

32busB

55 5Rw Ra Rb32 32-bitRegisters

Rs

Rt

Rt

Rd

Extender

Mux

Mux

3216imm16

ALUSrc =

ExtOp =

Mux

MemtoReg =

Clk

Data InWrEn

32Adr

DataMemory

32

MemWr = ALU

InstructionFetch Unit

Clk

Zero

Instruction<31:0>

0

1

0

1

01<21:25>

<16:20>

<11:15>

<0:15>

Imm16RdRsRt

nPC_sel =

Page 12: EEM  486 :  Computer Architecture Designing Single Cycle Control

The Single Cycle Datapath During Or Immediate

32

ALUctr = Or

Clk

busW

RegWr = 1

3232

busA

32busB

55 5Rw Ra Rb32 32-bitRegisters

Rs

Rt

Rt

RdRegDst = 0

Extender

Mux

Mux

3216imm16

ALUSrc = 1

ExtOp = 0

Mux

MemtoReg = 0

Clk

Data InWrEn

32Adr

DataMemory

32

MemWr = 0

ALU

InstructionFetch Unit

Clk

Zero

Instruction<31:0>

0

1

0

1

01<21:25>

<16:20>

<11:15>

<0:15>

Imm16RdRsRt

nPC_sel= +4

Page 13: EEM  486 :  Computer Architecture Designing Single Cycle Control

The Single Cycle Datapath During Load R[rt] Data Memory [ R[rs] + SignExt[imm16] ]

32

ALUctr=Add

Clk

busW

RegWr = 1

3232

busA

32busB

55 5Rw Ra Rb32 32-bitRegisters

Rs

Rt

Rt

RdRegDst = 0

Extender

Mux

Mux

3216imm16

ALUSrc = 1

ExtOp = 1

Mux

MemtoReg = 1

Clk

Data InWrEn

32Adr

DataMemory

32

MemWr = 0ALU

InstructionFetch Unit

Clk

Zero

Instruction<31:0>

0

1

0

1

01<21:25>

<16:20>

<11:15>

<0:15>

Imm16RdRsRt

nPC_sel= +4

Page 14: EEM  486 :  Computer Architecture Designing Single Cycle Control

The Single Cycle Datapath During Store Data Memory [ R[rs] + SignExt[imm16] ] R[rt]

32

ALUctr =

Clk

busW

RegWr =

3232

busA

32busB

55 5

Rw Ra Rb32 32-bitRegisters

Rs

Rt

Rt

RdRegDst=

Extender

Mux

Mux

3216imm16

ALUSrc =

ExtOp =

Mux

MemtoReg =

Clk

Data InWrEn

32Adr

DataMemory

32

MemWr = ALU

InstructionFetch Unit

Clk

Zero

Instruction<31:0>

0

1

0

1

01<

21:25>

<16:20>

<11:15>

<0:15>

Imm16RdRsRt

nPC_sel =

Page 15: EEM  486 :  Computer Architecture Designing Single Cycle Control

The Single Cycle Datapath During Store

32

ALUctr= Add

Clk

busW

RegWr = 0

3232

busA

32busB

55 5Rw Ra Rb32 32-bitRegisters

Rs

Rt

Rt

RdRegDst = x

Extender

Mux

Mux

3216imm16

ALUSrc = 1

ExtOp = 1

Mux

MemtoReg = x

Clk

Data InWrEn

32Adr

DataMemory

32

MemWr = 1ALU

InstructionFetch Unit

Clk

Zero

Instruction<31:0>

0

1

0

1

01<21:25>

<16:20>

<11:15>

<0:15>

Imm16RdRsRt

nPC_sel= +4

Page 16: EEM  486 :  Computer Architecture Designing Single Cycle Control

The Single Cycle Datapath During Branch if (R[rs] - R[rt] == 0) then Zero 1 ; else Zero 0

32

ALUctr= Sub

Clk

busW

RegWr = 0

3232

busA

32busB

55 5Rw Ra Rb32 32-bitRegisters

Rs

Rt

Rt

RdRegDst = x

Extender

Mux

Mux

3216imm16

ALUSrc = 0

ExtOp = x

Mux

MemtoReg = x

Clk

Data InWrEn

32Adr

DataMemory

32

MemWr = 0ALU

InstructionFetch Unit

Clk

Zero

Instruction<31:0>

0

1

0

1

01<21:25>

<16:20>

<11:15>

<0:15>

Imm16RdRsRt

nPC_sel= “Br”

Page 17: EEM  486 :  Computer Architecture Designing Single Cycle Control

Instruction Fetch Unit at the End of Branch

What is encoding of nPC_sel?• Direct MUX select?• Branch / not branch

nPC_sel zero? MUX0 x 01 0 01 1 1

Instruction<31:0>nPC_sel Adr

InstMemory

AdderAdder

PC

Clk

00Mux

4

imm

16

0

1

Zero

nPC_MUX_sel

Page 18: EEM  486 :  Computer Architecture Designing Single Cycle Control

Step 4: Given Datapath: RTL Control

ALUctrRegDst ALUSrcExtOp MemtoRegMemWr Zero

Instruction<31:0><21:25>

<16:20>

<11:15>

<0:15>

Imm16RdRsRt

nPC_sel

Adr

InstMemory

DATA PATH

Control

Op

<21:25>

Fun

RegWr

Page 19: EEM  486 :  Computer Architecture Designing Single Cycle Control

Summary of Control Signalsinst Register TransferADD R[rd] <– R[rs] + R[rt]; PC <– PC + 4 ALUsrc = RegB, ALUctr = “add”, RegDst = rd, RegWr, nPC_sel = “+4”SUB R[rd] <– R[rs] – R[rt]; PC <– PC + 4 ALUsrc = RegB, ALUctr = “sub”, RegDst = rd, RegWr, nPC_sel = “+4”ORi R[rt] <– R[rs] + zero_ext(Imm16); PC <– PC + 4 ALUsrc = Im, Extop = “Z”, ALUctr = “or”, RegDst = rt, RegWr, nPC_sel = “+4”LOAD R[rt] <– MEM[ R[rs] + sign_ext(Imm16)]; PC <– PC + 4 ALUsrc = Im, Extop = “Sn”, ALUctr = “add”, MemtoReg, RegDst = rt, RegWr, nPC_sel = “+4”STORE MEM[ R[rs] + sign_ext(Imm16)] <– R[rt]; PC <– PC + 4 ALUsrc = Im, Extop = “Sn”, ALUctr = “add”, MemWr, nPC_sel = “+4”BEQ if (R[rs] == R[rt]) then PC <– [PC + sign_ext(Imm16)] || 00 else PC <– PC + 4 nPC_sel = “Br”, ALUctr = “sub”

Page 20: EEM  486 :  Computer Architecture Designing Single Cycle Control

Logic For Each Control Signal nPC_sel <= if (OP == BEQ) then “Br” else “+4” ALUsrc <= if (OP == “Rtype”) then “regB” else

“immed” ALUctr <= if (OP == “Rtype”) then funct

elseif (OP == ORi) then “OR” elseif (OP ==

BEQ) then “sub” else “add”

ExtOp <= _____________ MemWr <= _____________ MemtoReg <= _____________ RegWr: <=_____________ RegDst: <= _____________

Page 21: EEM  486 :  Computer Architecture Designing Single Cycle Control

Logic for Each Control Signal nPC_sel <= if (OP == BEQ) then “Br” else “+4” ALUsrc <= if (OP == “Rtype”) then “regB” else

“immed” ALUctr <= if (OP == “Rtype”) then funct

elseif (OP == ORi) then “OR” elseif (OP == BEQ)

then “sub” else “add” ExtOp <= if (OP == ORi) then “zero” else “sign” MemWr <= (OP == Store) MemtoReg<= (OP == Load) RegWr: <= if ((OP == Store) || (OP == BEQ)) then 0 else 1 RegDst: <= if ((OP == Load) || (OP == ORi)) then 0 else 1

Page 22: EEM  486 :  Computer Architecture Designing Single Cycle Control

Putting it All Together: A Single Cycle Processor

32

ALUctr

Clk

busW

RegWr

3232

busA

32busB

55 5Rw Ra Rb32 32-bitRegisters

Rs

Rt

Rt

RdRegDst

Extender

Mux

Mux

3216imm16

ALUSrc

ExtOp

Mux

MemtoReg

Clk

Data InWrEn

32Adr

DataMemory

32

MemWrALU

InstructionFetch Unit

Clk

Zero

Instruction<31:0>

0

1

0

1

01<21:25>

<16:20>

<11:15>

<0:15>

Imm16RdRsRt

MainControlop 6

ALUControlfunc

6

3ALUop

ALUctr3RegDst

ALUSrc:

Instr<5:0>

Instr<31:26>

Instr<15:0>

nPC_sel

Page 23: EEM  486 :  Computer Architecture Designing Single Cycle Control

Recap: An Abstract View of the Critical Path (Load)

Critical Path (Load Operation) = PC’s Clk-to-Q + Instruction Memory’s Access Time + Register File’s Access Time + ALU to Perform a 32-bit Add + Data Memory Access Time + Setup Time for Register File Write + Clock Skew

Clk

5

Rw Ra Rb32 32-bitRegisters

RdALU

Clk

Data In

DataAddress Ideal

DataMemory

Instruction

InstructionAddress

IdealInstruction

Memory

Clk

PC

5Rs

5Rt

16Imm

32

323232A

B

Nex

t Ad

dres

s

Page 24: EEM  486 :  Computer Architecture Designing Single Cycle Control

Worst Case Timing (Load)

Clk

PC

Rs, Rt, Rd,Op, Func

Clk-to-Q

ALUctr

Instruction Memory Access Time

Old Value New Value

RegWr Old Value New Value

Delay through Control Logic

busARegister File Access Time

Old Value New Value

busBALU Delay

Old Value New Value

Old Value New Value

New Value

Old Value

ExtOp Old Value New Value

ALUSrc Old Value New Value

MemtoReg

Old Value New Value

Address Old Value New Value

busW Old Value New

Delay through Extender & Mux

RegisterWrite Occurs

Data Memory Access Time

Page 25: EEM  486 :  Computer Architecture Designing Single Cycle Control

Drawback of this Single Cycle ProcessorLong cycle time:

◦ Cycle time must be long enough for the load instruction:PC’s Clock -to-Q +Instruction Memory Access Time +Register File Access Time +ALU Delay (address calculation) +Data Memory Access Time +Register File Setup Time +Clock Skew

Cycle time for load is much longer than needed for all other instructions

Page 26: EEM  486 :  Computer Architecture Designing Single Cycle Control

Single cycle datapath => CPI=1, CCT => long 5 steps to design a processor

1. Analyze instruction set => datapath requirements2. Select set of datapath components & establish clock methodology3. Assemble datapath meeting the requirements4. Analyze implementation of each instruction to determine setting of control points that effects the register transfer. 5. Assemble the control logic

Control is the hard part MIPS makes control easier

• Instructions same size• Source registers always in same place• Immediates same size, location• Operations always on registers/immediates

Summary

Control

Datapath

Memory

ProcessorInput

Output