EEM 486 : Computer Architecture Designing Single Cycle Control

Post on 23-Feb-2016

57 views 1 download

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

EEM 486: Computer Architecture

Designing Single Cycle Control

The Big Picture: Where are We Now?

Control

Datapath

Memory

ProcessorInput

Output

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

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

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

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

=

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

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

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

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

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 =

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

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

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 =

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

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”

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

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

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”

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: <= _____________

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

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

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

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

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

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