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

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

CS 110 Computer Architecture Single-Cycle CPU Datapath & Control

UC Berkeley CS61C : Machine Structures

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

Lecture #17: CPU Design II Control

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

UC Berkeley CS61C : Machine Structures

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

Working on the Pipeline

COMP303 Computer Architecture Lecture 9. Single Cycle Control

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

CS61C : Machine Structures

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

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

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

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

CS61C : Machine Structures

CpE242 Computer Architecture and Engineering Designing a Single Cycle Datapath

MIPS-Lite Single-Cycle Control

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

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

ECE468 Computer Organization and Architecture. Designing a Single Cycle Datapath

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

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

The Processor: Datapath & Control

CPU Organization (Design)

CS61C : Machine Structures

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

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

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

Single Cycle CPU Design. Mehran Rezaei

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

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

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

CPU Design Steps. EECC550 - Shaaban

UC Berkeley CS61C : Machine Structures

If you didn t do as well as you d hoped

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

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

CS61C : Machine Structures

Designing a Multicycle Processor

Midterm I March 3, 1999 CS152 Computer Architecture and Engineering

Major CPU Design Steps

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

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

Lecture 6 Datapath and Controller

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

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

Ch 5: Designing a Single Cycle Datapath

CS3350B Computer Architecture Quiz 3 March 15, 2018

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

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

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

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

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

Guerrilla Session 3: MIPS CPU

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

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

CS 110 Computer Architecture Review Midterm II

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

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

The MIPS Processor Datapath

Processor (I) - datapath & control. Hwansoo Han

Midterm I October 6, 1999 CS152 Computer Architecture and Engineering

Midterm I March 12, 2003 CS152 Computer Architecture and Engineering

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

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

CPSC614: Computer Architecture

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

CS61c Final Review Fall Andy Carle 12/12/2004

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

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

ECE468 Computer Organization and Architecture. Designing a Multiple Cycle Controller

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

CpE 442. Designing a Multiple Cycle Controller

Laboratory 5 Processor Datapath

Pipeline design. Mehran Rezaei

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

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

CENG 3420 Lecture 06: Datapath

Midterm I March 1, 2001 CS152 Computer Architecture and Engineering

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

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

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

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

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

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

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

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

Lecture 7 Pipelining. Peng Liu.

Systems Architecture

The Processor (1) Jinkyu Jeong Computer Systems Laboratory Sungkyunkwan University

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

Chapter 4. The Processor

Chapter 4. The Processor

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

LECTURE 5. Single-Cycle Datapath and Control

CPE 335 Computer Organization. Basic MIPS Architecture Part I

Midterm I March 12, 2003 CS152 Computer Architecture and Engineering

Transcription:

CS 6C: Great Ideas in Computer Architecture (Machine Structures) Single- Cycle CPU Datapath & Control Part 2 Instructors: Krste Asanovic & Vladimir Stojanovic hfp://inst.eecs.berkeley.edu/~cs6c/

Review: Processor Design 5 steps Step : Analyze instrucqon set to determine datapath requirements Meaning of each instrucqon 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 implementaqon of each instrucqon to determine sewng of control points that realizes the register transfer Step 5: Assemble the control logic

Processor Design: 5 steps Step : Analyze instrucqon set to determine datapath requirements Meaning of each instrucqon 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 implementaqon of each instrucqon to determine sewng of control points that realizes the register transfer Step 5: Assemble the control logic

Register- Register Timing: One Complete Cycle (Add/Sub) Clk PC Old Value Rs,, Rd, Op, Func ALUctr New Value Old Value Old Value InstrucQon 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 Rd Rs ALUctr 5 5 5 Register Write Rw Ra Rb busa busw Occurs Here RegFile busb ALU

Register- Register Timing: One Complete Cycle Clk PC Old Value Rs,, Rd, Op, Func ALUctr New Value Old Value Old Value InstrucQon 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 Rd Rs ALUctr 5 5 5 Register Write Rw Ra Rb busa busw Occurs Here RegFile busb ALU

3c: Logical Op (or) with Immediate R[rt] = R[rs] op ZeroExt[imm6] RegDst RegWr Rd Rs 5 5 Rw imm6 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 Wri/ng to register (not Rd)!! ALU What about Read?

3d: Load OperaQons 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 Rs 5 5 5 Rw Ra Rb RegFile imm6 6 ZeroExt busa busb ALUSrc ALUctr ALU

3d: Load OperaQons 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 Rs 5 5 Rw imm6 Ra Rb RegFile 6 ExtOp 5 Extender busa busb ALUSrc ALUctr ALU MemtoReg Adr Data

3e: Store OperaQons 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 imm6 Rs 5 5 Rw Ra Rb RegFile 6 ExtOp 5 Extender busa busb ALUSrc ALUctr ALU Data In MemWr WrEn Adr Data MemtoReg

3e: Store OperaQons 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 imm6 Rs 5 5 Rw Ra Rb RegFile 6 ExtOp 5 Extender busa busb ALUSrc ALUctr ALU Data In MemWr WrEn Adr Data MemtoReg

3f: The Branch InstrucQon 3 26 op 2 rs 6 rt immediate 6 bits 5 bits 5 bits 6 bits beq rs, rt, imm6! mem[pc] Fetch the instrucqon from memory Equal = (R[rs] == R[rt]) Calculate branch condiqon if (Equal) Calculate the next instrucqon s address PC = PC + 4 + ( SignExt(imm6) x 4 ) else PC = PC + 4

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

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

PuWng it All Together:A Single Cycle Datapath 4 PC Ext imm6 Adder Adder npc_sel Mux Inst PC Adr Rs RegDst Rd RegWr busw <2:25> imm6 <6:2> Rs 5 5 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 MemtoReg

Clickers/Peer InstrucQon What new (pseudo)instrucqon would need no new datapath hardware? A: branch if reg==immediate B: add two registers and branch if result zero C: store with auto- increment of base address: sw rt, rs, offset // rs incremented by offset ater store D: shit let logical by one bit 4 PC Ext imm6 Adder Adder Inst Adr Rs npc_sel RegDst Rd Mux PC RegWr Rs 5 5 busw <2:25> imm6 <6:2> Rw Ra Rb RegFile 6 5 <:5> Rd Extender busa busb ExtOp <:5> Imm6 Equal Instruction<3:> ALUSrc ALUctr = ALU Data In MemtoReg MemWr WrEn Adr Data

Administrivia 6

imm6 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 Adder Adder Inst Address npc_sel & Equal Mux PC RegDst RegWr busw Rd Rs 5 5 Rw imm6 Ra Rb RegFile 6 ExtOp 5 Extender busa busb ALUSrc ALUctr Data In ALU MemWr WrEn Adr Data MemtoReg

Given Datapath: RTL à Control InstrucQon<3:> Inst 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

RTL: The Add InstrucQon 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 instrucqon from memory R[rd] = R[rs] + R[rt] The actual operaqon PC = PC + 4 Calculate the next instrucqon s address

InstrucQon Fetch Unit at the Beginning of Add! Fetch the instrucqon from InstrucQon memory: InstrucQon = MEM[PC] same for all instrucqons Inst InstrucQon<3:> 4 PC Ext Adder Adder npc_sel PC Mux Inst Address imm6

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 Rs 5 5 Rw imm6 Ra Rb RegFile 6 5 ExtOp=x Extender busa busb instr fetch unit zero ALUSrc= 6 InstrucQon<3:> <2:25> Rs Rd Imm6 ALUctr=ADD MemtoReg= = Data In ALU <6:2> <:5> MemWr= WrEn Adr Data <:5>

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

J- type RegDst = RegWr = busw Single Cycle Datapath during Jump 3 Clk op Rd imm6 26 Mux 25 New PC = { PC[3..28], target address, } 5 5 Rs 5 Rw Ra Rb x - bit Registers 6 ExtOp = Jump= npc_sel= busb Extender Clk busa target address ALUctr = Mux ALUSrc = InstrucOon Fetch Unit ALU Data In Clk Zero InstrucQon<3:> <2:25> WrEn <6:2> Rs Rd Imm6 TA26 MemtoReg = MemWr = Adr Data <:5> jump <:5> Mux <:25>

Single Cycle Datapath during Jump J- type 3 RegDst = x RegWr = busw Clk op Rd 26 Mux imm6 25 New PC = { PC[3..28], target address, } 5 5 Rs 5 Rw Ra Rb x - bit Registers 6 Jump= npc_sel=? busb Extender ExtOp = x Clk busa target address ALUctr =x Mux ALUSrc = x InstrucOon Fetch Unit ALU Data In Clk Zero InstrucQon<3:> <2:25> WrEn <6:2> Rs Rd Imm6 TA26 MemtoReg = x MemWr = Adr Data <:5> jump <:5> Mux <:25>

Instruc3on Fetch Unit at the End of Jump J- type New PC = { PC[3..28], target address, } Jump npc_sel Zero 3 op 26 25 Inst Adr target address InstrucQon<3:> jump npc_mux_sel 4 Adder PC Mux How do we modify this to account for jumps? imm6 Adder Clk

Instruc3on Fetch Unit at the End of Jump J- type New PC = { PC[3..28], target address, } Jump npc_sel Zero imm6 3 4 op 26 Adder 25 npc_mux_sel Adder Mux TA 26 target address 4 (MSBs) Mux Inst Clk PC Adr jump InstrucQon<3:> Query Can Zero sqll get asserted? Does npc_sel need to be? If not, what?

In The News: Tile- Mx 64- bit ARM cores on one chip EZChip (bought Tilera) 64-bit ARM Cortex A53 Dual-issue, in-order 27

P&H Figure 4.7

inst Summary of the Control Signals (/2)!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!

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

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!

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

Summary: Single- cycle Processor Five steps to design a processor:. Analyze instrucqon set à datapath requirements 2. Select set of datapath components & establish clock methodology 3. Assemble datapath meeqng the requirements Processor Control Datapath 4. Analyze implementaqon of each instrucqon to determine sewng of control points that effects the register transfer. 5. Assemble the control logic Formulate Logic EquaQons Design Circuits Input Output