18
CS61C L26 CPU Design : Designing a Single-Cycle CPU II (1) Garcia, Fall 2006 © UC Lecturer SOE Dan Garcia www.cs.berkeley.edu/ ~ddgarcia UC Berkeley CS61C : Machine Structures Lecture 26 – CPU Design: Designing a Single-cycle CPU, pt 2 2006-10-30 Halloween plans? Try the Castro, SF! halloweeninthecastro.com Tomorrow 2005-10-31, runs until 11pm …go at least once… Happy Halloween, everyone!

Lecturer SOE Dan Garcia cs.berkeley/~ddgarcia

Embed Size (px)

DESCRIPTION

inst.eecs.berkeley.edu/~cs61c UC Berkeley CS61C : Machine Structures Lecture 26 – CPU Design: Designing a Single-cycle CPU, pt 2 2006-10-30. Lecturer SOE Dan Garcia www.cs.berkeley.edu/~ddgarcia. Halloween plans?  Try the Castro, SF!. - PowerPoint PPT Presentation

Citation preview

CS61C L26 CPU Design : Designing a Single-Cycle CPU II (1) Garcia, Fall 2006 © UCB

Lecturer SOE Dan Garcia

www.cs.berkeley.edu/~ddgarcia

inst.eecs.berkeley.edu/~cs61c UC Berkeley CS61C : Machine Structures

Lecture 26 – CPU Design: Designing a Single-cycle CPU, pt 2

2006-10-30

Halloween plans? Try the Castro, SF!

halloweeninthecastro.com

Tomorrow 2005-10-31,runs until 11pm

…go at least once…

Happy Halloween, everyone!

CS61C L26 CPU Design : Designing a Single-Cycle CPU II (2) Garcia, Fall 2006 © UCB

How to Design a Processor: step-by-step1. Analyze instruction set architecture (ISA)

=> datapath requirements•meaning of each instruction is given by the register transfers• datapath must include storage element for ISA registers• datapath must support each register transfer

2. Select set of datapath components and establish clocking methodology

3. Assemble datapath meeting requirements4. Analyze implementation of each instruction to determine setting of control points that effects the register transfer.

5. Assemble the control logic

CS61C L26 CPU Design : Designing a Single-Cycle CPU II (3) Garcia, Fall 2006 © UCB

Step 3: Assemble DataPath meeting requirements

• Register Transfer Requirements Datapath Assembly

• Instruction Fetch

• Read Operands and Execute Operation

CS61C L26 CPU Design : Designing a Single-Cycle CPU II (4) Garcia, Fall 2006 © UCB

3a: Overview of the Instruction Fetch Unit

• Common to all instructions:• Fetch the Instruction: mem[PC]•Update the program counter:

Sequential Code: PC PC + 4 Branch and Jump: PC “something else”

32

Instruction WordAddress

InstructionMemory

PCclk

Next AddressLogic

CS61C L26 CPU Design : Designing a Single-Cycle CPU II (5) Garcia, Fall 2006 © UCB

3b: Add & Subtract• R[rd] R[rs] op R[rt] Ex.: addU rd,rs,rt

•Ra, Rb, and Rw come from instruction’s Rs, Rt, and Rd fields

•ALUctr and RegWr: control logic after decoding the instruction

op rs rt rd shamt funct061116212631

6 bits 6 bits5 bits5 bits5 bits5 bits

Already defined the register file & ALU

32

ALUctr

clk

busW

RegWr

32busA

32

busB

5 5

Rw Ra Rb

RegFile

Rs Rt

AL

U

5Rd

CS61C L26 CPU Design : Designing a Single-Cycle CPU II (6) Garcia, Fall 2006 © UCB

Clocking Methodology

• Storage elements clocked by same edge• Being physical devices, flip-flops (FF) and

combinational logic have some delays • Gates: delay from input change to output change • Signals at FF D input must be stable before active clock

edge to allow signal to travel within the FF (set-up time), and we have the usual clock-to-Q delay

• “Critical path” (longest path through logic) determines length of clock period

Clk

.

.

.

.

.

.

.

.

.

.

.

.

CS61C L26 CPU Design : Designing a Single-Cycle CPU II (7) Garcia, Fall 2006 © UCB

Register-Register Timing: One complete cycleClk

PCRs, Rt, Rd,Op, Func

ALUctr

Instruction Memory Access Time

Old Value New Value

RegWr Old Value New Value

Delay through Control Logic

busA, BRegister File Access TimeOld Value New Value

busWALU Delay

Old Value New Value

Old Value New Value

New ValueOld Value

Register WriteOccurs Here

32

ALUctr

clk

busW

RegWr

32busA

32

busB

5 5

Rw Ra Rb

RegFile

Rs Rt

AL

U

5Rd

CS61C L26 CPU Design : Designing a Single-Cycle CPU II (8) Garcia, Fall 2006 © UCB

3c: Logical Operations with Immediate• R[rt] = R[rs] op ZeroExt[imm16] ]

op rs rt immediate

016212631

6 bits 16 bits5 bits5 bits

immediate

016 1531

16 bits16 bits

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

32

ALUctr

clk

busW

RegWr

32busA

32

busB

5 5

Rw Ra Rb

RegFile

Rs RtA

LU

5Rd

CS61C L26 CPU Design : Designing a Single-Cycle CPU II (9) Garcia, Fall 2006 © UCB

3c: Logical Operations with Immediate• R[rt] = R[rs] op ZeroExt[imm16] ]

op rs rt immediate

016212631

6 bits 16 bits5 bits5 bits

immediate

016 1531

16 bits16 bits

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

• Already defined 32-bit MUX; Zero Ext?

What about Rt register read??

32

ALUctr

clk

RegWr

32

32busA

32

busB

5 5

Rw Ra Rb

RegFile

Rs

Rt

Rt

Rd

ZeroE

xt 3216imm16

ALUSrc

01

0

1

AL

U

5

RegDst

CS61C L26 CPU Design : Designing a Single-Cycle CPU II (10) Garcia, Fall 2006 © UCB

3d: Load Operations• R[rt] = Mem[R[rs] + SignExt[imm16]]Example: lw rt,rs,imm16

op rs rt immediate

016212631

6 bits 16 bits5 bits5 bits

32

ALUctr

clk

RegWr

32

32busA

32

busB

5 5

Rw Ra Rb

RegFile

Rs

Rt

Rt

Rd

ZeroE

xt 3216imm16

ALUSrc

01

0

1

AL

U

5

RegDst

CS61C L26 CPU Design : Designing a Single-Cycle CPU II (11) Garcia, Fall 2006 © UCB

3d: Load Operations• R[rt] = Mem[R[rs] + SignExt[imm16]]Example: lw rt,rs,imm16

op rs rt immediate

016212631

6 bits 16 bits5 bits5 bits

32

ALUctr

clk

busW

RegWr

32

32busA

32

busB

5 5

Rw Ra Rb

RegFile

Rs

Rt

Rt

RdRegDst

Exten

der 3216imm16

ALUSrcExtOp

MemtoReg

clk

Data In

32

MemWr01

0

1

AL

U 0

1

WrEn Adr

DataMemory

5

?

CS61C L26 CPU Design : Designing a Single-Cycle CPU II (12) Garcia, Fall 2006 © UCB

3e: Store Operations• Mem[ R[rs] + SignExt[imm16] ] = R[rt]

Ex.: sw rt, rs, imm16

op rs rt immediate016212631

6 bits 16 bits5 bits5 bits

32

ALUctr

clk

busW

RegWr

32

32busA

32

busB

5 5

Rw Ra Rb

RegFile

Rs

Rt

Rt

RdRegDst

Exten

der 3216imm16

ALUSrcExtOp

MemtoReg

clk

Data In

32

MemWr01

0

1

AL

U 0

1

WrEn Adr

DataMemory

5

CS61C L26 CPU Design : Designing a Single-Cycle CPU II (13) Garcia, Fall 2006 © UCB

3e: Store Operations• Mem[ R[rs] + SignExt[imm16] ] = R[rt]

Ex.: sw rt, rs, imm16

op rs rt immediate016212631

6 bits 16 bits5 bits5 bits

32

ALUctr

clk

busW

RegWr

32

32busA

32

busB

5 5

Rw Ra Rb

RegFile

Rs

Rt

Rt

RdRegDst

Exten

der 3216imm16

ALUSrcExtOp

MemtoReg

clk

Data In

32

MemWr01

0

1

AL

U 0

1

WrEn Adr

DataMemory

5

CS61C L26 CPU Design : Designing a Single-Cycle CPU II (14) Garcia, Fall 2006 © UCB

3f: The Branch Instruction

beq rs, rt, imm16•mem[PC] Fetch the instruction from memory

•Equal = R[rs] == R[rt] Calculate branch condition

• if (Equal) Calculate the next instruction’s address PC = PC + 4 + ( SignExt(imm16) x 4 )

else PC = PC + 4

op rs rt immediate016212631

6 bits 16 bits5 bits5 bits

CS61C L26 CPU Design : Designing a Single-Cycle CPU II (15) Garcia, Fall 2006 © UCB

Datapath for Branch Operations• beq rs, rt, imm16

Datapath generates condition (equal)

op rs rt immediate016212631

6 bits 16 bits5 bits5 bits

Already have mux, adder, need special sign extender for PC, need equal compare (sub?)imm16

clk

PC

00

4nPC_sel

PC

Ext

Ad

derA

dder

Mu

x

Inst Address

32

ALUctr

clk

busW

RegWr

32busA

32

busB

5 5

Rw Ra Rb

RegFile

Rs Rt

AL

U

5

=

Equal

CS61C L26 CPU Design : Designing a Single-Cycle CPU II (16) Garcia, Fall 2006 © UCB

Putting it All Together:A Single Cycle Datapath

imm16

32

ALUctr

clk

busW

RegWr

32

32busA

32

busB

5 5

Rw Ra Rb

RegFile

Rs

Rt

Rt

RdRegDst

Exten

der

3216imm16

ALUSrcExtOp

MemtoReg

clk

Data In32

MemWrEqual

Instruction<31:0><21:25>

<16:20>

<11:15>

<0:15>

Imm16RdRtRs

clk

PC

00

4

nPC_sel

PC

Ext

Adr

InstMemory

Ad

derA

dder

Mu

x

01

0

1

=

AL

U 0

1

WrEn Adr

DataMemory

5

CS61C L26 CPU Design : Designing a Single-Cycle CPU II (17) Garcia, Fall 2006 © UCB

An Abstract View of the Implementation

DataOut

clk

5

Rw Ra Rb

RegisterFile

Rd

Data In

DataAddr Ideal

DataMemory

Instruction

InstructionAddress

IdealInstruction

Memory

PC

5Rs

5Rt

32

323232

A

B

Nex

t A

dd

ress

Control

Datapath

Control Signals Conditions

clk clk

AL

U

CS61C L26 CPU Design : Designing a Single-Cycle CPU II (19) Garcia, Fall 2006 © UCB

°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

°Next time!

Summary: Single cycle datapath

Control

Datapath

Memory

ProcessorInput

Output