CS3350B Computer Architecture Winter Lecture 5.7: Single-Cycle CPU: Datapath Control (Part 2)

Similar documents
CS 110 Computer Architecture Single-Cycle CPU Datapath & Control

CS 61C: Great Ideas in Computer Architecture (Machine Structures) Single- Cycle CPU Datapath & Control Part 2

UC Berkeley CS61C : Machine Structures

Lecture #17: CPU Design II Control

UC Berkeley CS61C : Machine Structures

CS 61C: Great Ideas in Computer Architecture Control and Pipelining

COMP303 Computer Architecture Lecture 9. Single Cycle Control

Working on the Pipeline

COMP303 - Computer Architecture Lecture 8. Designing a Single Cycle Datapath

The Big Picture: Where are We Now? EEM 486: Computer Architecture. Lecture 3. Designing a Single Cycle Datapath

361 control.1. EECS 361 Computer Architecture Lecture 9: Designing Single Cycle Control

CS 61C: Great Ideas in Computer Architecture Lecture 12: Single- Cycle CPU, Datapath & Control Part 2

361 datapath.1. Computer Architecture EECS 361 Lecture 8: Designing a Single Cycle Datapath

CS61C : Machine Structures

CS 61C: Great Ideas in Computer Architecture. MIPS CPU Datapath, Control Introduction

CpE242 Computer Architecture and Engineering Designing a Single Cycle Datapath

MIPS-Lite Single-Cycle Control

CS61C : Machine Structures

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

ECE468 Computer Organization and Architecture. Designing a Single Cycle Datapath

CS 61C: Great Ideas in Computer Architecture Datapath. Instructors: John Wawrzynek & Vladimir Stojanovic

inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 19 CPU Design: The Single-Cycle II & Control !

The Processor: Datapath & Control

CPU Organization (Design)

CS 61C: Great Ideas in Computer Architecture (Machine Structures) Lecture 28: Single- Cycle CPU Datapath Control Part 1

CS359: Computer Architecture. The Processor (A) Yanyan Shen Department of Computer Science and Engineering

Single Cycle CPU Design. Mehran Rezaei

CS61C : Machine Structures

Outline. EEL-4713 Computer Architecture Designing a Single Cycle Datapath

ECE170 Computer Architecture. Single Cycle Control. Review: 3b: Add & Subtract. Review: 3e: Store Operations. Review: 3d: Load Operations

How to design a controller to produce signals to control the datapath

CPU Design Steps. EECC550 - Shaaban

Full Datapath. CSCI 402: Computer Architectures. The Processor (2) 3/21/19. Fengguang Song Department of Computer & Information Science IUPUI

Instructor: Randy H. Katz hcp://inst.eecs.berkeley.edu/~cs61c/fa13. Fall Lecture #18. Warehouse Scale Computer

CSCI 402: Computer Architectures. Fengguang Song Department of Computer & Information Science IUPUI. Today s Content

UC Berkeley CS61C : Machine Structures

Designing a Multicycle Processor

Review. N-bit adder-subtractor done using N 1- bit adders with XOR gates on input. Lecture #19 Designing a Single-Cycle CPU

Major CPU Design Steps

Recap: The MIPS Subset ADD and subtract EEL Computer Architecture shamt funct add rd, rs, rt Single-Cycle Control Logic sub rd, rs, rt

CS61C : Machine Structures

University of California College of Engineering Computer Science Division -EECS. CS 152 Midterm I

Lecture 6 Datapath and Controller

Midterm I March 3, 1999 CS152 Computer Architecture and Engineering

CS3350B Computer Architecture Quiz 3 March 15, 2018

inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 18 CPU Design: The Single-Cycle I ! Nasty new windows vulnerability!

CS152 Computer Architecture and Engineering Lecture 10: Designing a Single Cycle Control. Recap: The MIPS Instruction Formats

CS 61C: Great Ideas in Computer Architecture (Machine Structures) Single- Cycle CPU Datapath Control Part 1

CS 152 Computer Architecture and Engineering. Lecture 10: Designing a Multicycle Processor

CS 61C: Great Ideas in Computer Architecture (Machine Structures) Single- Cycle CPU Datapath & Control Part 2. Clk

add rd, rs, rt Review: A Single Cycle Datapath We have everything Lecture Recap: Meaning of the Control Signals

Ch 5: Designing a Single Cycle Datapath

CSE 141 Computer Architecture Summer Session Lecture 3 ALU Part 2 Single Cycle CPU Part 1. Pramod V. Argade

Chapter 4. The Processor. Computer Architecture and IC Design Lab

Adding Support for jal to Single Cycle Datapath (For More Practice Exercise 5.20)

If you didn t do as well as you d hoped

Lecture 12: Single-Cycle Control Unit. Spring 2018 Jason Tang

CS 110 Computer Architecture Review Midterm II

EECS150 - Digital Design Lecture 10- CPU Microarchitecture. Processor Microarchitecture Introduction

CS 61C: Great Ideas in Computer Architecture (Machine Structures) Single Cycle MIPS CPU

361 multipath..1. EECS 361 Computer Architecture Lecture 10: Designing a Multiple Cycle Processor

Guerrilla Session 3: MIPS CPU

Recap: A Single Cycle Datapath. CS 152 Computer Architecture and Engineering Lecture 8. Single-Cycle (Con t) Designing a Multicycle Processor

Midterm I March 12, 2003 CS152 Computer Architecture and Engineering

Midterm I October 6, 1999 CS152 Computer Architecture and Engineering

The MIPS Processor Datapath

Processor (I) - datapath & control. Hwansoo Han

EECS150 - Digital Design Lecture 9- CPU Microarchitecture. Watson: Jeopardy-playing Computer

CS152 Computer Architecture and Engineering. Lecture 8 Multicycle Design and Microcode John Lazzaro (

CPSC614: Computer Architecture

COMPUTER ORGANIZATION AND DESIGN. The Hardware/Software Interface. Chapter 4. The Processor: A Based on P&H

ELEC 5200/6200 Computer Architecture and Design Spring 2017 Lecture 4: Datapath and Control

ECE 361 Computer Architecture Lecture 11: Designing a Multiple Cycle Controller. Review of a Multiple Cycle Implementation

CpE 442. Designing a Multiple Cycle Controller

ECE468 Computer Organization and Architecture. Designing a Multiple Cycle Controller

CS61c Final Review Fall Andy Carle 12/12/2004

CENG 3420 Lecture 06: Datapath

COMP303 - Computer Architecture Lecture 10. Multi-Cycle Design & Exceptions

CS3350B Computer Architecture Winter 2015

Pipeline design. Mehran Rezaei

ECE 361 Computer Architecture Lecture 10: Designing a Multiple Cycle Processor

CSE 141 Computer Architecture Summer Session I, Lecture 3 Performance and Single Cycle CPU Part 1. Pramod V. Argade

Systems Architecture

ECE468. Computer Organization and Architecture. Designing a Multiple Cycle Processor

CENG 3420 Computer Organization and Design. Lecture 06: MIPS Processor - I. Bei Yu

Midterm I March 1, 2001 CS152 Computer Architecture and Engineering

EECS 151/251A Fall 2017 Digital Design and Integrated Circuits. Instructor: John Wawrzynek and Nicholas Weaver. Lecture 13 EE141

COMPUTER ORGANIZATION AND DESIGN The Hardware/Software Interface 5 th Edition. Chapter 4. The Processor

Lecture 7 Pipelining. Peng Liu.

Laboratory 5 Processor Datapath

ECE4680. Computer Organization and Architecture. Designing a Multiple Cycle Processor

Initial Representation Finite State Diagram Microprogram. Sequencing Control Explicit Next State Microprogram counter

Computer Science 61C Spring Friedland and Weaver. The MIPS Datapath

Chapter 4. The Processor

CPU Organization Datapath Design:

The Processor. Z. Jerry Shi Department of Computer Science and Engineering University of Connecticut. CSE3666: Introduction to Computer Architecture

Lecture 10: Simple Data Path

ECE232: Hardware Organization and Design

Midterm I March 12, 2003 CS152 Computer Architecture and Engineering

CS 61C Summer 2016 Guerrilla Section 4: MIPS CPU (Datapath & Control)

Transcription:

CS335B Computer Architecture Winter 25 Lecture 5.7: Single-Cycle CPU: Datapath Control (Part 2) Marc Moreno Maza www.csd.uwo.ca/courses/cs335b [Adapted from lectures on Computer Organization and Design, Patterson & Hennessy, 5 th edition, 23]

Review: Processor Design 5 steps Step : Analyze instruction set to determine datapath requirements Meaning of each instruction is given by register transfers Datapath must include storage element for ISA registers Datapath must support each register transfer Step 2: Select set of datapath components & establish clock methodology Step 3: Assemble datapath components that meet the requirements Step 4: Analyze implementation of each instruction to determine setting of control points that realizes the register transfer Step 5: Assemble the control logic 2

Processor Design: 5 steps Step : Analyze instruction set to determine datapath requirements Meaning of each instruction is given by register transfers Datapath must include storage element for ISA registers Datapath must support each register transfer Step 2: Select set of datapath components & establish clock methodology Step 3: Assemble datapath components that meet the requirements Step 4: Analyze implementation of each instruction to determine setting of control points that realizes the register transfer Step 5: Assemble the control logic 3

Register-Register Timing: One Complete Cycle (Add/Sub) Clk PC Old Value Rs,, Rd, Op, Func ALUctr New Value Old Value Old Value Instruction Memory Access Time New Value Delay through Control Logic New Value RegWr Old Value New Value Register File Access Time busa, B Old Value New Value ALU Delay busw Old Value New Value RegWr busw Rd 5 5 Rw Rs Ra Rb RegFile 5 busa busb ALUctr ALU Register Write Occurs Here 4

Register-Register Timing: One Complete Cycle Clk PC Old Value Rs,, Rd, Op, Func ALUctr New Value Old Value Old Value Instruction Memory Access Time New Value Delay through Control Logic New Value RegWr Old Value New Value Register File Access Time busa, B Old Value New Value ALU Delay busw Old Value New Value RegWr busw Rd 5 5 Rw Rs Ra Rb RegFile 5 busa busb ALUctr ALU Register Write Occurs Here 5

3c: Logical Op (or) with Immediate R[rt] = R[rs] op ZeroExt[imm6] RegDst RegWr Rd 5 5 Rw imm6 Rs Ra Rb RegFile 6 5 3 26 2 op rs rt immediate 3 6 bits 5 bits 5 bits 6 5 6 bits ZeroExt busa busb 6 bits ALUSrc ALUctr 6 immediate 6 bits Writing to register (not Rd)!! ALU What about Read? 6

3d: Load Operations R[rt] = Mem[R[rs] + SignExt[imm6]] Example: lw rt,rs,imm6 3 26 2 6 op rs rt immediate 6 bits 5 bits 5 bits 6 bits RegDst Rd RegWr 5 5 Rs Rw Ra Rb RegFile 5 busa busb ALUctr ALU imm6 6 ZeroExt ALUSrc 7

3d: Load Operations R[rt] = Mem[R[rs] + SignExt[imm6]] Example: lw rt,rs,imm6 3 26 2 6 op rs rt immediate 6 bits 5 bits 5 bits 6 bits RegDst RegWr busw Rd 5 5 Rw imm6 Rs Ra Rb RegFile 6 ExtOp 5 Extender busa busb ALUSrc ALUctr ALU MemtoReg Adr Data Memory 8

3e: Store Operations Mem[ R[rs] + SignExt[imm6] ] = R[rt] Ex.: sw rt, rs, imm6 3 26 2 6 op rs rt immediate 6 bits 5 bits 5 bits 6 bits RegDst RegWr busw Rd 5 5 imm6 Rs Rw Ra Rb RegFile 6 ExtOp 5 Extender busa busb ALUSrc ALUctr ALU Data In MemWr WrEn Adr Data Memory MemtoReg 9

3e: Store Operations Mem[ R[rs] + SignExt[imm6] ] = R[rt] Ex.: sw rt, rs, imm6 3 26 2 6 op rs rt immediate 6 bits 5 bits 5 bits 6 bits RegDst RegWr busw Rd 5 5 imm6 Rs Rw Ra Rb RegFile 6 ExtOp 5 Extender busa busb ALUSrc ALUctr ALU Data In MemWr WrEn Adr Data Memory MemtoReg

3f: The Branch Instruction beq rs, rt, imm6 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(imm6) x 4 ) else 3 PC = PC + 4 26 op 2 rs 6 rt immediate 6 bits 5 bits 5 bits 6 bits

Datapath for Branch Operations beq rs, rt, imm6 3 26 2 6 op rs rt immediate 6 bits 5 bits 5 bits 6 bits Datapath generates condition (Equal) Inst Address 4 PC Ext imm6 Adder Adder npc_sel Mux PC RegWr busw 5 5 Rs Rw Ra Rb RegFile busa busb ALUctr Already have mux, adder, need special sign extender for PC, need equal compare (sub?) 5 Equal = ALU 2

Instruction Fetch Unit including Branch 3 26 2 6 op rs rt immediate if (Zero == ) then PC = PC + 4 + SignExt[imm6]*4 ; else PC = PC + 4 npc_sel Inst Memory Adr Instruction<3:> Equal MUX ctrl npc_sel How to encode npc_sel? Direct MUX select? imm6 4 PC Ext Adder Adder Mux PC Branch inst. / not branch inst. Let s pick 2nd option npc_sel zero? MUX x Q: What logic gate? 3

Putting it All Together: A Single Cycle Datapath 4 PC Ext imm6 Adder Adder npc_sel Mux Inst Memory PC Adr Rs RegDst RegWr busw Rd <2:25> 5 5 imm6 <6:2> Rs Rw Ra Rb RegFile 6 Rd 5 <:5> Extender busa busb ExtOp <:5> Imm6 Equal Instruction<3:> ALUSrc ALUctr = ALU Data In MemWr WrEn Adr Data Memory MemtoReg 4

Datapath Control Signals ExtOp: zero, sign ALUsrc: regb; immed ALUctr: ADD, SUB, OR MemWr: write memory MemtoReg: ALU; Mem RegDst: rt ; rd RegWr: write register 4 PC Ext imm6 Adder Adder Inst Address npc_sel & Equal Mux PC RegDst RegWr busw Rd 5 5 Rw imm6 Rs Ra Rb RegFile 6 ExtOp 5 Extender busa busb ALUSrc ALUctr Data In ALU MemWr WrEn Adr Data Memory MemtoReg 5

Given Datapath: RTL Control Instruction<3:> Inst Memory Adr <26:3> <:5> <2:25> <6:2> <:5> <:5> Op Fun Rs Rd Imm6 Control npc_sel RegWr RegDst ExtOp ALUSrc ALUctr MemWr MemtoReg DATA PATH 6

RTL: The Add Instruction 3 26 2 6 6 op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits 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 7

Instruction Fetch Unit at the Beginning of Add Fetch the instruction from Instruction memory: Instruction = MEM[PC] same for all instructions Inst Memory Instruction<3:> 4 PC Ext npc_sel Mux Adder Adder PC Inst Address imm6 8

Single Cycle Datapath during Add 3 26 2 op rs rt rd shamt funct R[rd] = R[rs] + R[rt] RegDst= Rd RegWr= busw 6 npc_sel=+4 5 5 Rw imm6 Rs Ra Rb RegFile 6 5 ExtOp=x Extender busa busb instr fetch unit zero ALUSrc= 6 Instruction<3:> <2:25> Rs Rd Imm6 ALUctr=ADD MemtoReg= = Data In ALU <6:2> <:5> MemWr= WrEn Adr Data Memory <:5> 9

Instruction Fetch Unit at End of Add PC = PC + 4 Same for all instructions except: Branch and Jump Inst Memory 4 PC Ext npc_sel=+4 Mux Adder Adder PC Inst Address imm6 2

P&H Figure 4.7 2

Summary of the Control Signals (/2) inst 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(imm6); PC PC + 4 ALUsrc=Im, Extop= Z, ALUctr= OR, RegDst=rt,RegWr, npc_sel= +4 lw R[rt] MEM[ R[rs] + sign_ext(imm6)]; PC PC + 4 ALUsrc=Im, Extop= sn, ALUctr= ADD, MemtoReg, RegDst=rt, RegWr, npc_sel = +4 sw MEM[ R[rs] + sign_ext(imm6)] R[rs]; PC PC + 4 ALUsrc=Im, Extop= sn, ALUctr = ADD, MemWr, npc_sel = +4 beq if (R[rs] == R[rt]) then PC PC + sign_ext(imm6)] else PC PC + 4 npc_sel = br, ALUctr = SUB 22

Summary of the Control Signals (2/2) See func We Don t Care :-) Appendix A op RegDst ALUSrc MemtoReg RegWrite MemWrite npcsel Jump ExtOp ALUctr<2:> add sub ori lw sw beq jump x Add x Subtract Or Add x x Add x x x Subtract x x x? x x R-type 3 26 2 6 6 op rs rt rd shamt funct add, sub I-type op rs rt immediate ori, lw, sw, beq J-type op target address jump 23

Boolean Expressions for Controller RegDst = add + sub ALUSrc = ori + lw + sw MemtoReg = lw RegWrite = add + sub + ori + lw MemWrite = sw npcsel = beq Jump = jump ExtOp = lw + sw ALUctr[] = sub + beq (assume ALUctr is ADD, SUB, OR) ALUctr[] = or Where: rtype = ~op 5 ~op 4 ~op 3 ~op 2 ~op ~op, ori = ~op 5 ~op 4 op 3 op 2 ~op op lw = op 5 ~op 4 ~op 3 ~op 2 op op sw = op 5 ~op 4 op 3 ~op 2 op op beq = ~op 5 ~op 4 ~op 3 op 2 ~op ~op jump = ~op 5 ~op 4 ~op 3 ~op 2 op ~op How do we implement this in gates? add = rtype func 5 ~func 4 ~func 3 ~func 2 ~func ~func sub = rtype func 5 ~func 4 ~func 3 ~func 2 func ~func 24

Controller Implementation opcode func AND logic add sub ori lw sw beq jump OR logic RegDst ALUSrc MemtoReg RegWrite MemWrite npcsel Jump ExtOp ALUctr[] ALUctr[] 25

Summary: Single-cycle Processor Five steps to design a processor:. Analyze instruction set datapath requirements 2. Select set of datapath components & establish clock methodology 3. Assemble datapath meeting the requirements Processor Control Datapath Memory 4. Analyze implementation of each instruction to determine setting of control points that effects the register transfer. 5. Assemble the control logic Formulate Logic Equations Design Circuits Input Output 26