36
EEM 486: Computer Architecture Lecture 3 Designing Single Cycle Control

EEM 486 : Computer Architecture Lecture 3 Designing Single Cycle Control

  • Upload
    micol

  • View
    41

  • Download
    1

Embed Size (px)

DESCRIPTION

EEM 486 : Computer Architecture Lecture 3 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

Citation preview

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

EEM 486: Computer Architecture

Lecture 3

Designing Single Cycle Control

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

Lec 3.2

The Big Picture: Where are We Now?

Control

Datapath

Memory

Processor

Input

Output

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

Lec 3.3

An Abstract View of the Implementation

DataOut

Clk

5

Rw Ra Rb

32 32-bitRegisters

Rd

ALU

Clk

Data In

DataAddress

IdealData

Memory

Instruction

InstructionAddress

IdealInstruction

Memory

Clk

PC

5Rs

5Rt

32

323232

A

B

Next

Ad

dre

ss

Control

Datapath

Control SignalsConditions

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

Lec 3.4

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

32

ALUctr

Clk

busW

RegWr

3232

busA

32busB

55 5

Rw Ra Rb32 32-bitRegisters

Rs

Rt

Rt

Rd

RegDst

Exte

nd

er

Mu

x

Mux

3216imm16

ALUSrc

ExtOp

Mu

x

MemtoReg

Clk

Data InWrEn

32Adr

DataMemory

32

MemWr

ALU

InstructionFetch Unit

Clk

Zero

Instruction<31:0>

0

1

0

1

01<

21

:25

>

<1

6:2

0>

<1

1:1

5>

<0

:15

>

Imm16RdRsRt

nPC_sel

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

Lec 3.5

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

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

Adr

InstMemory

Ad

der

Ad

der

PC

Clk

00

Mu

x

4

nPC_MUX_sel

PC

Extim

m1

6

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

Lec 3.6

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 5

Rw Ra Rb32 32-bitRegisters

Rs

Rt

Rt

RdRegDst

Exte

nd

er

Mu

x

3216imm16

ALUSrcExtOp

Mu

x

MemtoReg

Clk

Data InWrEn32 Adr

DataMemory

MemWr

ALU

Equal

0

1

0

1

01

=

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

Lec 3.7

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 funct

061116212631

6 bits 6 bits5 bits5 bits5 bits5 bits

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

Lec 3.8

Instruction Fetch Unit at the Beginning of Add

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

Same for all instructions Adr

InstMemory

Ad

der

Ad

der

PC

Clk

00

Mu

x4

nPC_MUX_selim

m1

6

Instruction<31:0>

0

1

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

Lec 3.9

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

32

ALUctr = Add

Clk

busW

RegWr = 1

3232

busA

32busB

55 5

Rw Ra Rb32 32-bitRegisters

Rs

Rt

Rt

RdRegDst = 1

Exte

nd

er

Mu

x

Mux

3216imm16

ALUSrc=0

ExtOp = x

Mu

x

MemtoReg = 0

Clk

Data InWrEn

32Adr

DataMemory

32

MemWr=0A

LU

InstructionFetch Unit

Clk

Zero

Instruction<31:0>

0

1

0

1

01<

21

:25

>

<1

6:2

0>

<1

1:1

5>

<0

:15

>

Imm16RdRsRt

nPC_sel= +4

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

Lec 3.10

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

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

Adr

InstMemory

Ad

der

Ad

der

PC

Clk

00

Mu

x

4

nPC_MUX_sel

imm

16

Instruction<31:0>

0

1

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

Lec 3.11

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

RegDst =

32

ALUctr =

Clk

busW

RegWr =

3232

busA

32busB

55 5

Rw Ra Rb32 32-bitRegisters

Rs

Rt

Rt

Rd

Exte

nd

er

Mu

x

Mux

3216imm16

ALUSrc =

ExtOp =

Mu

x

MemtoReg =

Clk

Data InWrEn

32Adr

DataMemory

32

MemWr = A

LU

InstructionFetch Unit

Clk

Zero

Instruction<31:0>

0

1

0

1

01<

21

:25

>

<1

6:2

0>

<1

1:1

5>

<0

:15

>

Imm16RdRsRt

nPC_sel =

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

Lec 3.13

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 5

Rw Ra Rb32 32-bitRegisters

Rs

Rt

Rt

RdRegDst = 0

Exte

nd

er

Mu

x

Mux

3216imm16

ALUSrc = 1

ExtOp = 1

Mu

x

MemtoReg = 1

Clk

Data InWrEn

32Adr

DataMemory

32

MemWr = 0A

LU

InstructionFetch Unit

Clk

Zero

Instruction<31:0>

0

1

0

1

01<

21

:25

>

<1

6:2

0>

<1

1:1

5>

<0

:15

>

Imm16RdRsRt

nPC_sel= +4

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

Lec 3.14

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 =

Exte

nd

er

Mu

x

Mux

3216imm16

ALUSrc =

ExtOp =

Mu

x

MemtoReg =

Clk

Data InWrEn

32Adr

DataMemory

32

MemWr = A

LU

InstructionFetch Unit

Clk

Zero

Instruction<31:0>

0

1

0

1

01<

21

:25

>

<1

6:2

0>

<1

1:1

5>

<0

:15

>

Imm16RdRsRt

nPC_sel =

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

Lec 3.15

The Single Cycle Datapath During Store

32

ALUctr= Add

Clk

busW

RegWr = 0

3232

busA

32busB

55 5

Rw Ra Rb32 32-bitRegisters

Rs

Rt

Rt

RdRegDst = x

Exte

nd

er

Mu

x

Mux

3216imm16

ALUSrc = 1

ExtOp = 1

Mu

x

MemtoReg = x

Clk

Data InWrEn

32Adr

DataMemory

32

MemWr = 1A

LU

InstructionFetch Unit

Clk

Zero

Instruction<31:0>

0

1

0

1

01<

21

:25

>

<1

6:2

0>

<1

1:1

5>

<0

:15

>

Imm16RdRsRt

nPC_sel= +4

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

Lec 3.16

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 5

Rw Ra Rb32 32-bitRegisters

Rs

Rt

Rt

RdRegDst = x

Exte

nd

er

Mu

x

Mux

3216imm16

ALUSrc = 0

ExtOp = x

Mu

x

MemtoReg = x

Clk

Data InWrEn

32Adr

DataMemory

32

MemWr = 0A

LU

InstructionFetch Unit

Clk

Zero

Instruction<31:0>

0

1

0

1

01<

21

:25

>

<1

6:2

0>

<1

1:1

5>

<0

:15

>

Imm16RdRsRt

nPC_sel= “Br”

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

Lec 3.17

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

Ad

der

Ad

der

PC

Clk

00

Mu

x

4

imm

16

0

1

Zero

nPC_MUX_sel

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

Lec 3.18

Step 4: Given Datapath: RTL -> Control

ALUctrRegDst ALUSrcExtOp MemtoRegMemWr Zero

Instruction<31:0><2

1:2

5>

<1

6:2

0>

<1

1:1

5>

<0

:15

>

Imm16RdRsRt

nPC_sel

Adr

InstMemory

DATA PATH

Control

Op

<2

1:2

5>

Fun

RegWr

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

Lec 3.19

Summary of Control Signalsinst Register Transfer

ADD 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 19: EEM 486 : Computer Architecture Lecture  3 Designing Single Cycle Control

Lec 3.20

Summary of the Control Signals

add sub ori lw sw beq

RegDst

ALUSrc

MemtoReg

RegWrite

MemWrite

nPCsel

ExtOp

ALUctr<2:0>

1

0

0

1

0

0

x

Add

1

0

0

1

0

0

x

Sub

0

1

0

1

0

0

0

Or

0

1

1

1

0

0

1

Add

x

1

x

0

1

0

1

Add

x

0

x

0

0

1

x

Sub

func

op 00 000000 000000 110110 0011 10 1011 00 0100Appendix A10 0000See 10 0010 We Don’t Care :-)

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

Lec 3.21

Concept of Local Decoding

MainControl

op

6

ALUControl(Local)

func

N

6ALUop

ALUctr

3

ALU

R-type ori lw sw beq

RegDst

ALUSrc

MemtoReg

RegWrite

MemWrite

Branch

ExtOp

ALUop<N:0>

1

0

0

1

0

0

x

“R-type”

0

1

0

1

0

0

0

Or

0

1

1

1

0

0

1

Add

x

1

x

0

1

0

1

Add

x

0

x

0

0

1

x

Sub

op 00 0000 00 1101 10 001110 1011 00 0100

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

Lec 3.22

Encoding of ALUop

In this exercise, ALUop has to be 2 bits wide to represent:

• (1) “R-type” instructions

• “I-type” instructions that require the ALU to perform:

- (2) Or, (3) Add, and (4) Subtract

To implement the full MIPS ISA, ALUop has to be 3 bits to represent:

• (1) “R-type” instructions

• “I-type” instructions that require the ALU to perform:

- (2) Or, (3) Add, (4) Subtract, (5) And, and (6) Xor

MainControl

op

6

ALUControl(Local)

func

N

6ALUop

ALUctr

3

R-type ori lw sw beq

ALUop (Symbolic) “R-type” Or Add Add SubALUop<2:0> 1 00 0 10 0 00 0 00 0 01

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

Lec 3.23

Decoding of the “func” Field

MainControl

op

6

ALUControl(Local)

func

N

6ALUop

ALUctr

3

op rs rt rd shamt funct

061116212631

R-type

funct<5:0>Instruction Operation

10 0000

10 0010

10 0100

10 0101

10 1010

add

subtract

and

or

set-on-less-than

ALUctr<2:0>ALU Operation

000

001

010

110

111

And

Or

Add

Subtract

Set-on-less-than

ALUctr

ALU

R-type ori lw sw beq

ALUop (Symbolic) “R-type” Or Add Add SubALUop<2:0> 1 00 0 10 0 00 0 00 0 01

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

Lec 3.24

Truth Table for ALUctr

R-type ori lw sw beqALUop(Symbolic) “R-type” Or Add Add Sub

ALUop<2:0> 1 00 0 10 0 00 0 00 0 01

ALUop func

bit<2>bit<1>bit<0> bit<2>bit<1>bit<0>bit<3>

0 0 0 x x x x

ALUctrALUOperation

Add 0 1 0

bit<2>bit<1>bit<0>

0 x 1 x x x x Subtract 1 1 0

0 1 x x x x x Or 0 0 1

1 x x 0 0 0 0 Add 0 1 0

1 x x 0 0 1 0 Subtract 1 1 0

1 x x 0 1 0 0 And 0 0 0

1 x x 0 1 0 1 Or 0 0 1

1 x x 1 0 1 0 Set on < 1 1 1

funct<3:0>Instruction Op.

0000

0010

0100

0101

1010

add

subtract

and

or

set-on-less-than

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

Lec 3.25

Logic Equation for ALUctr<2>

ALUctr<2> = !ALUop<2> & ALUop<0> +

ALUop<2> & !func<2> & func<1> & !func<0>

ALUop func

bit<2>bit<1>bit<0> bit<2>bit<1>bit<0>bit<3> ALUctr<2>

0 x 1 x x x x 1

1 x x 0 0 1 0 1

1 x x 1 0 1 0 1

This makes func<3> a don’t care

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

Lec 3.26

Logic Equation for ALUctr<1>

ALUop func

bit<2>bit<1>bit<0> bit<2>bit<1>bit<0>bit<3>

0 0 0 x x x x 1

ALUctr<1>

0 x 1 x x x x 1

1 x x 0 0 0 0 1

1 x x 0 0 1 0 1

1 x x 1 0 1 0 1

ALUctr<1> = !ALUop<2> & !ALUop<1> +

!ALUop<2> & ALUop<0> +

ALUop<2> & !func<2> & !func<0>

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

Lec 3.27

Logic Equation for ALUctr<0>

ALUop func

bit<2>bit<1>bit<0> bit<2>bit<1>bit<0>bit<3> ALUctr<0>

0 1 x x x x x 1

1 x x 0 1 0 1 1

1 x x 1 0 1 0 1

ALUctr<0> = !ALUop<2> & ALUop<1>

+ ALUop<2> & !func<3> & func<2> & !func<1> & func<0>

+ ALUop<2> & func<3> & !func<2> & func<1> & !func<0>

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

Lec 3.28

ALU Control Block

ALUControl(Local)

func

3

6ALUop

ALUctr

3

ALUctr<2> = !ALUop<2> & ALUop<0> +

ALUop<2> & !func<2> & func<1> & !func<0>

ALUctr<1> = !ALUop<2> & !ALUop<1> + !ALUop<2> & ALUop<0>

ALUop<2> & !func<2> & !func<0>

ALUctr<0> = !ALUop<2> & ALUop<1> + ALUop<2> & !

func<3> & func<2> & !

func<1> & func<0> + ALUop<2> &

func<3> & !func<2> & func<1> & !func<0>

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

Lec 3.29

Step 5: 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 functelseif (OP == ORi) then “OR”

elseif (OP == BEQ) then “sub” else “add”

ExtOp <= _____________

MemWr <= _____________

MemtoReg <= _____________

RegWr: <=_____________

RegDst: <= _____________

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

Lec 3.31

“Truth Table” for the Main Control

MainControl

op

6

ALUControl(Local)

func

3

6

ALUop

ALUctr

3

RegDst

ALUSrc

:

R-type ori lw sw beq

RegDst

ALUSrc

MemtoRegRegWrite

MemWrite

nPC_sel

ExtOp

ALUop (Symbolic)

1

0

01

0

0

x

“R-type”

0

1

01

0

0

0

Or

0

1

11

0

0

1

Add

x

1

x0

1

0

1

Add

x

0

x0

0

1

x

Subtract

op 00 0000 00 110110 001110 1011 00 0100

ALUop <2> 1 0 0 0 0ALUop <1> 0 1 0 0 0ALUop <0> 0 0 0 0 1

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

Lec 3.32

“Truth Table” for RegWrite

RegWrite = R-type + ori + lw

= !op<5> & !op<4> & !op<3> & !op<2> & !op<1> & !op<0> (R-type)

+ !op<5> & !op<4> & op<3> & op<2> & !op<1> & op<0>(ori)

+ op<5> & !op<4> & !op<3> & !op<2> & op<1> & op<0>(lw)

op<5>..<0>

op<5>..<0>

op<5>..<0>

op<5>..<0>

op<5>..<0>

R-type ori lw sw beq

RegWrite

R-type ori lw sw beq

RegWrite 1 1 1 0 0

op 00 0000 00 110110 001110 1011 00 0100

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

Lec 3.33

PLA Implementation of the Main Control. . . . .op<5> .

<0>

op<5> .<0>

op<5> .<0>

op<5> .<0>

op<5> .<0>

R-type ori lw sw beqRegWrite

ALUSrc

MemtoReg

MemWrite

Branch

RegDst

ExtOp

ALUop<2>

ALUop<1>

ALUop<0>

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

Lec 3.34

Putting it All Together: A Single Cycle Processor

32

ALUctr

Clk

busW

RegWr

3232

busA

32busB

55 5

Rw Ra Rb32 32-bitRegisters

Rs

Rt

Rt

RdRegDst

Exte

nd

er

Mu

x

Mux

3216imm16

ALUSrc

ExtOp

Mu

x

MemtoReg

Clk

Data InWrEn

32Adr

DataMemory

32

MemWrA

LU

InstructionFetch Unit

Clk

Zero

Instruction<31:0>

0

1

0

1

01<

21

:25

>

<1

6:2

0>

<1

1:1

5>

<0

:15

>

Imm16RdRsRt

MainControl

op6

ALUControlfunc

6

3

ALUopALUctr

3RegDst

ALUSrc

:Instr<5:0>

Instr<31:26>

Instr<15:0>

nPC_sel

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

Lec 3.35

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 Rb

32 32-bitRegisters

Rd

ALU

Clk

Data In

DataAddress

IdealData

Memory

Instruction

InstructionAddress

IdealInstruction

Memory

Clk

PC

5Rs

5Rt

16Imm

32

323232

A

B

Next

Ad

dre

ss

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

Lec 3.36

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

busB

ALU 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 35: EEM 486 : Computer Architecture Lecture  3 Designing Single Cycle Control

Lec 3.37

Drawback of this Single Cycle Processor

Long 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 36: EEM 486 : Computer Architecture Lecture  3 Designing Single Cycle Control

Lec 3.38

Single cycle datapath => CPI=1, CCT => long

5 steps to design a processor• 1. Analyze instruction set => datapath requirements

• 2. Select set of datapath components & establish clock methodology

• 3. Assemble datapath meeting the requirements

• 4. 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