Processor Hakim Weatherspoon CS 3410, Spring 2013 Computer Science Cornell University See P&H Chapter 2.16-20, 4.1-4.

Slides:



Advertisements
Similar presentations
ELEN 468 Advanced Logic Design
Advertisements

Chapter 2 Instructions: Language of the Computer
Chapter 2.
331 W08.1Spring :332:331 Computer Architecture and Assembly Language Spring 2006 Week 8: Datapath Design [Adapted from Dave Patterson’s UCB CS152.
1 RISC Pipeline Han Wang CS3410, Spring 2010 Computer Science Cornell University See: P&H Chapter 4.6.
1 CS3410 Guest Lecture A Simple CPU: remaining branch instructions CPU Performance Pipelined CPU Tudor Marian.
Kevin Walsh CS 3410, Spring 2010 Computer Science Cornell University A Processor See: P&H Chapter ,
CS 3410, Spring 2014 Computer Science Cornell University See P&H Chapter: , 1.4, Appendix A.
The Processor: Datapath & Control
Computer ArchitectureFall 2007 © October 3rd, 2007 Majd F. Sakr CS-447– Computer Architecture.
CS61C L25 CPU Design : Designing a Single-Cycle CPU (1) Garcia, Fall 2006 © UCB T-Mobile’s Wi-Fi / Cell phone  T-mobile just announced a new phone that.
The Processor 2 Andreas Klappenecker CPSC321 Computer Architecture.
Lecture 5 Sept 14 Goals: Chapter 2 continued MIPS assembly language instruction formats translating c into MIPS - examples.
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 25 CPU design (of a single-cycle CPU) Intel is prototyping circuits that.
Prof. Hakim Weatherspoon CS 3410, Spring 2015 Computer Science Cornell University See P&H Chapter: , 1.6, Appendix B.
Prof. Hakim Weatherspoon CS 3410, Spring 2015 Computer Science Cornell University See P&H Chapter: , , Appendix B.
Hakim Weatherspoon CS 3410, Spring 2010 Computer Science Cornell University A Processor See: P&H Chapter ,
Processor Hakim Weatherspoon CS 3410, Spring 2013 Computer Science Cornell University See P&H Chapter ,
CS3350B Computer Architecture Winter 2015 Lecture 5.6: Single-Cycle CPU: Datapath Control (Part 1) Marc Moreno Maza [Adapted.
COSC 3430 L08 Basic MIPS Architecture.1 COSC 3430 Computer Architecture Lecture 08 Processors Single cycle Datapath PH 3: Sections
Prof. Hakim Weatherspoon CS 3410, Spring 2015 Computer Science Cornell University See P&H Chapter: , 1.6, Appendix B.
CPU Performance Pipelined CPU Hakim Weatherspoon CS 3410, Spring 2013 Computer Science Cornell University See P&H Chapters 1.4 and 4.5.
Hakim Weatherspoon CS 3410, Spring 2012 Computer Science Cornell University CPU Performance Pipelined CPU See P&H Chapters 1.4 and 4.5.
Module : Algorithmic state machines. Machine language Machine language is built up from discrete statements or instructions. On the processing architecture,
Computer Organization CS224 Fall 2012 Lesson 22. The Big Picture  The Five Classic Components of a Computer  Chapter 4 Topic: Processor Design Control.
EEM 486: Computer Architecture Designing a Single Cycle Datapath.
Computer Organization & Programming Chapter 6 Single Datapath CPU Architecture.
CPS3340 COMPUTER ARCHITECTURE Fall Semester, /08/2013 Lecture 10: MIPS Instructor: Ashraf Yaseen DEPARTMENT OF MATH & COMPUTER SCIENCE CENTRAL STATE.
CS2100 Computer Organisation The Processor: Datapath (AY2015/6) Semester 1.
Computer Architecture and Design – ECEN 350 Part 6 [Some slides adapted from A. Sprintson, M. Irwin, D. Paterson and others]
Datapath and Control Unit Design
Computer Organization CS224 Fall 2012 Lessons 7 and 8.
DR. SIMING LIU SPRING 2016 COMPUTER SCIENCE AND ENGINEERING UNIVERSITY OF NEVADA, RENO Session 7, 8 Instruction Set Architecture.
MIPS Instruction Set Architecture Prof. Sirer CS 316 Cornell University.
Hakim Weatherspoon CS 3410, Spring 2012 Computer Science Cornell University A Processor See: P&H Chapter ,
COM181 Computer Hardware Lecture 6: The MIPs CPU.
CPU Performance Pipelined CPU Hakim Weatherspoon CS 3410, Spring 2013 Computer Science Cornell University See P&H Chapters 1.4 and 4.5.
CS 61C: Great Ideas in Computer Architecture MIPS Datapath 1 Instructors: Nicholas Weaver & Vladimir Stojanovic
Computer Architecture Lecture 6.  Our implementation of the MIPS is simplified memory-reference instructions: lw, sw arithmetic-logical instructions:
MIPS Assembly.
Electrical and Computer Engineering University of Cyprus
CS 230: Computer Organization and Assembly Language
COMPUTER ARCHITECTURE & OPERATIONS I
Morgan Kaufmann Publishers
IT 251 Computer Organization and Architecture
Introduction CPU performance factors
ELEN 468 Advanced Logic Design
Prof. Sirer CS 316 Cornell University
The University of Adelaide, School of Computer Science
Processor (I).
CS/COE0447 Computer Organization & Assembly Language
Instructions - Type and Format
Han Wang CS3410, Spring 2012 Computer Science Cornell University
CSCI206 - Computer Organization & Programming
Computer Architecture & Operations I
The University of Adelaide, School of Computer Science
Hakim Weatherspoon CS 3410 Computer Science Cornell University
Rocky K. C. Chang 6 November 2017
The Processor Lecture 3.1: Introduction & Logic Design Conventions
Guest Lecturer TA: Shreyas Chand
COMS 361 Computer Organization
Prof. Sirer CS 316 Cornell University
UCSD ECE 111 Prof. Farinaz Koushanfar Fall 2018
MIPS Instruction Set Architecture
Hakim Weatherspoon CS 3410 Computer Science Cornell University
The Processor: Datapath & Control.
The RISC-V Processor Hakim Weatherspoon CS 3410 Computer Science
CS 3410, Spring 2014 Computer Science Cornell University
Processor: Datapath and Control
Presentation transcript:

Processor Hakim Weatherspoon CS 3410, Spring 2013 Computer Science Cornell University See P&H Chapter , 4.1-4

Big Picture: Building a Processor PC imm memory target offset cmp control =? new pc memory d in d out addr register file inst extend +4 A Single cycle processor alu

Goal for Today Understanding the basics of a processor We now have enough building blocks to build machines that can perform non-trivial computational tasks Putting it all together: Arithmetic Logic Unit (ALU)—Lab0 & 1, Lecture 2 & 3 Register File—Lecture 4 and 5 Memory—Lecture 5 –SRAM: cache –DRAM: main memory Instruction-types Instruction Datapaths

MIPS Register File PC imm memory target offset cmp control =? new pc memory d in d out addr register file inst extend +4 A Single cycle processor alu

MIPS Register file MIPS register file 32 registers, 32-bits each (with r0 wired to zero) Write port indexed via R W –Writes occur on falling edge but only if WE is high Read ports indexed via R A, R B Dual-Read-Port Single-Write-Port 32 x 32 Register File QAQA QBQB DWDW RWRW RARA RBRB WE

MIPS Register file MIPS register file 32 registers, 32-bits each (with r0 wired to zero) Write port indexed via R W –Writes occur on falling edge but only if WE is high Read ports indexed via R A, R B A B W RWRW RARA RBRB WE r1 r2 … r31

MIPS Register file Registers Numbered from 0 to 31. Each register can be referred by number or name. $0, $1, $2, $3 … $31 Or, by convention, each register has a name. –$16 - $23  $s0 - $s7 –$8 - $15  $t0 - $t7 –$0 is always $zero. –Patterson and Hennessy p121.

MIPS Memory PC imm memory target offset cmp control =? new pc memory d in d out addr register file inst extend +4 A Single cycle processor alu

MIPS Memory Up to 32-bit address 32-bit data (but byte addressed) Enable + 2 bit memory control (mc) 00: read word (4 byte aligned) 01: write byte 10: write halfword (2 byte aligned) 11: write word (4 byte aligned) memory 32 addr 2 mc 32 E

Putting it all together: Basic Processor PC imm memory target offset cmp control =? new pc memory d in d out addr register file inst extend +4 A Single cycle processor alu

Putting it all together: Basic Processor Let’s build a MIPS CPU …but using (modified) Harvard architecture CPU Registers Data Memory data, address, control ALU Control Program Memory

Takeaway A processor executes instructions Processor has some internal state in storage elements (registers) A memory holds instructions and data Harvard architecture: separate insts and data von Neumann architecture: combined inst and data A bus connects the two

Next Goal How do we create computer programs and execute machine instructions?

Levels of Interpretation: Instructions Programs written in a High Level Language C, Java, Python, Ruby, … Loops, control flow, variables for (i = 0; i < 10; i++) printf(“go cucs”); main:addi r2, r0, 10 addi r1, r0, 0 loop:slt r3, r1, r Need translation to a lower- level computer understandable format Assembly is human readable machine language Processors operate on Machine Language ALU, Control, Register File, … Machine Implementation

Levels of Interpretation: Instructions High Level Language C, Java, Python, Ruby, … Loops, control flow, variables for (i = 0; i < 10; i++) printf(“go cucs”); main:addi r2, r0, 10 addi r1, r0, 0 loop:slt r3, r1, r Assembly Language No symbols (except labels) One operation per statement Machine Langauge Binary-encoded assembly Labels become addresses ALU, Control, Register File, … Machine Implementation

Instruction Usage Instructions are stored in memory, encoded in binary A basic processor fetches decodes executes one instruction at a time pc adder cur inst decode regs execute addrdata op=addi r0 r2 10

Instruction Types Arithmetic add, subtract, shift left, shift right, multiply, divide Memory load value from memory to a register store value to memory from a register Control flow unconditional jumps conditional jumps (branches) jump and link (subroutine call) Many other instructions are possible vector add/sub/mul/div, string operations manipulate coprocessor I/O

Instruction Set Architecture The types of operations permissible in machine language define the ISA MIPS: load/store, arithmetic, control flow, … VAX: load/store, arithmetic, control flow, strings, … Cray: vector operations, … Two classes of ISAs Reduced Instruction Set Computers (RISC) Complex Instruction Set Computers (CISC) We’ll study the MIPS ISA in this course

Instruction Set Architecture Instruction Set Architecture (ISA) Different CPU architecture specifies different set of instructions. Intel x86, IBM PowerPC, Sun Sparc, MIPS, etc. MIPS ≈ 200 instructions, 32 bits each, 3 formats –mostly orthogonal all operands in registers –almost all are 32 bits each, can be used interchangeably ≈ 1 addressing mode: Mem[reg + imm] x86 = Complex Instruction Set Computer (ClSC) > 1000 instructions, 1 to 15 bytes each operands in special registers, general purpose registers, memory, on stack, … –can be 1, 2, 4, 8 bytes, signed or unsigned 10s of addressing modes –e.g. Mem[segment + reg + reg*scale + offset]

Instructions Load/store architecture Data must be in registers to be operated on Keeps hardware simple Emphasis on efficient implementation Integer data types: byte: 8 bits half-words: 16 bits words: 32 bits MIPS supports signed and unsigned data types

MIPS instruction formats All MIPS instructions are 32 bits long, has 3 formats R-type I-type J-type oprsrtrdshamtfunc 6 bits5 bits 6 bits oprsrtimmediate 6 bits5 bits 16 bits opimmediate (target address) 6 bits 26 bits

MIPS Design Principles Simplicity favors regularity 32 bit instructions Smaller is faster Small register file Make the common case fast Include support for constants Good design demands good compromises Support for different type of interpretations/classes

Takeaway

Next Goal How are instructions executed? What are the datapaths for different instruction-types

Five Stages of MIPS Datapath 5 ALU 55 control Reg. File PC Prog. Mem inst +4 Data Mem Fetch DecodeExecute MemoryWB A Single cycle processor

Five Stages of MIPS datapath Basic CPU execution loop 1.Instruction Fetch 2.Instruction Decode 3.Execution (ALU) 4.Memory Access 5.Register Writeback Instruction types/format Arithmetic/Register:addu $s0, $s2, $s3 Arithmetic/Immediate:slti $s0, $s2, 4 Memory:lw $s0, 20($s3) Control/Jump:j 0xdeadbeef

Stages of datapath (1/5) Stage 1: Instruction Fetch Fetch 32-bit instruction from memory. (Instruction cache or memory) Increment PC accordingly. –+4, byte addressing –+N PC Prog. Mem +4 inst

Stages of datapath (2/5) Stage 2: Instruction Decode Gather data from the instruction Read opcode to determine instruction type and field length Read in data from register file –for addu, read two registers. –for addi, read one registers. –for jal, read no registers. 555 control Reg. File

Stages of datapath (2/5) All MIPS instructions are 32 bits long, has 3 formats R-type I-type J-type oprsrtrdshamtfunc 6 bits5 bits 6 bits oprsrtimmediate 6 bits5 bits 16 bits opimmediate (target address) 6 bits 26 bits

Stages of datapath (3/5) Stage 3: Execution (ALU) Useful work is done here (+, -, *, /), shift, logic operation, comparison (slt). Load/Store? –lw $t2, 32($t3) –Compute the address of the memory. ALU

Stages of datapath (4/5) Stage 4: Memory access Used by load and store instructions only. Other instructions will skip this stage. This stage is expected to be fast, why? Data Mem Target addr from ALU R/W Data from memory

Stages of datapath (5/5) Stage 5: For instructions that need to write value to register. Examples: arithmetic, logic, shift, etc, load. Store, branches, jump?? Reg. File PC WriteBack from ALU or Memory New instruction address If branch or jump

Datapath and Clocking 5 ALU 55 control Reg. File PC Prog. Mem inst +4 Data Mem Fetch DecodeExecute MemoryWB

Takeaway

Next Goal MIPS Instruction datapaths

MIPS Instruction Types Arithmetic/Logical R-type: result and two source registers, shift amount I-type: 16-bit immediate with sign/zero extension Memory Access load/store between registers and memory word, half-word and byte operations Control flow conditional branches: pc-relative addresses jumps: fixed offsets, register absolute

MIPS instruction formats All MIPS instructions are 32 bits long, has 3 formats R-type I-type J-type oprsrtrdshamtfunc 6 bits5 bits 6 bits oprsrtimmediate 6 bits5 bits 16 bits opimmediate (target address) 6 bits 26 bits

Arithmetic Instructions oprsrtrd-func 6 bits5 bits 6 bits opfuncmnemonicdescription 0x00x21ADDU rd, rs, rtR[rd] = R[rs] + R[rt] 0x00x23SUBU rd, rs, rtR[rd] = R[rs] – R[rt] 0x00x25OR rd, rs, rtR[rd] = R[rs] | R[rt] 0x00x26XOR rd, rs, rt R[rd] = R[rs]  R[rt] 0x00x27NOR rd, rs rtR[rd] = ~ ( R[rs] | R[rt] ) R-Type

Instruction Fetch Instruction Fetch Circuit Fetch instruction from memory Calculate address of next instruction Repeat Program Memory inst 32 PC

Arithmetic and Logic 5 ALU 55 Reg. File PC Prog. Mem inst +4 control

Arithmetic Instructions: Shift op-rtrdshamtfunc 6 bits5 bits 6 bits opfuncmnemonicdescription 0x0 SLL rd, rs, shamtR[rd] = R[rt] << shamt 0x00x2SRL rd, rs, shamtR[rd] = R[rt] >>> shamt (zero ext.) 0x00x3SRA rd, rs, shamtR[rd] = R[rs] >> shamt (sign ext.) ex: r5 = r3 * 8 R-Type

Shift 5 ALU 55 Reg. File PC Prog. Mem inst +4 shamt control

opmnemonicdescription 0x9ADDIU rd, rs, immR[rd] = R[rs] + imm 0xcANDI rd, rs, immR[rd] = R[rs] & imm 0xdORI rd, rs, immR[rd] = R[rs] | imm Arithmetic Instructions: Immediates oprsrdimmediate 6 bits5 bits 16 bits I-Type ex: r5 += 5 ex: r9 = -1ex: r9 = opmnemonicdescription 0x9ADDIU rd, rs, immR[rd] = R[rs] + sign_extend(imm) 0xcANDI rd, rs, immR[rd] = R[rs] & zero_extend(imm) 0xdORI rd, rs, immR[rd] = R[rs] | zero_extend(imm)

Immediates 5 imm 55 extend +4 shamt Reg. File PC Prog. Mem ALU inst control

Immediates 5 imm 55 extend +4 shamt Reg. File PC Prog. Mem ALU inst control

Arithmetic Instructions: Immediates opmnemonicdescription 0xFLUI rd, immR[rd] = imm << 16 op-rdimmediate 6 bits5 bits 16 bits I-Type ex: r5 = 0xdeadbeef

Immediates 5 imm 55 extend +4 shamt Reg. File PC Prog. Mem ALU inst 16 control

MIPS Instruction Types Arithmetic/Logical R-type: result and two source registers, shift amount I-type: 16-bit immediate with sign/zero extension Memory Access load/store between registers and memory word, half-word and byte operations Control flow conditional branches: pc-relative addresses jumps: fixed offsets, register absolute

Memory Instructions opmnemonicdescription 0x20LB rd, offset(rs)R[rd] = sign_ext(Mem[offset+R[rs]]) 0x24LBU rd, offset(rs)R[rd] = zero_ext(Mem[offset+R[rs]]) 0x21LH rd, offset(rs)R[rd] = sign_ext(Mem[offset+R[rs]]) 0x25LHU rd, offset(rs)R[rd] = zero_ext(Mem[offset+R[rs]]) 0x23LW rd, offset(rs)R[rd] = Mem[offset+R[rs]] 0x28SB rd, offset(rs)Mem[offset+R[rs]] = R[rd] 0x29SH rd, offset(rs)Mem[offset+R[rs]] = R[rd] 0x2bSW rd, offset(rs)Mem[offset+R[rs]] = R[rd] oprsrdoffset 6 bits5 bits 16 bits base + offset addressing I-Type signed offsets

Memory Operations Data Mem addr ext +4 5 imm 55 control Reg. File PC Prog. Mem ALU inst

MIPS Instruction Types Arithmetic/Logical R-type: result and two source registers, shift amount I-type: 16-bit immediate with sign/zero extension Memory Access load/store between registers and memory word, half-word and byte operations Control flow conditional branches: pc-relative addresses jumps: fixed offsets, register absolute

Control Flow: Absolute Jump Absolute addressing for jumps Jump from 0x to 0x ? NO Reverse? NO –But: Jumps from 0x2FFFFFFF to 0x3xxxxxxx are possible, but not reverse Trade-off: out-of-region jumps vs. 32-bit instruction encoding MIPS Quirk: jump targets computed using already incremented PC opmnemonicdescription 0x2J targetPC = target opimmediate 6 bits26 bits J-Type opmnemonicdescription 0x2J targetPC = target || 00 opmnemonicdescription 0x2J targetPC = (PC+4) || target || 00

Absolute Jump tgt +4 || Data Mem addr ext 555 Reg. File PC Prog. Mem ALU inst control imm

Control Flow: Jump Register op rs---func 6 bits5 bits 6 bits opfuncmnemonicdescription 0x00x08JR rsPC = R[rs] R-Type

Jump Register +4 || tgt Data Mem addr ext 555 Reg. File PC Prog. Mem ALU inst control imm

Control Flow: Branches opmnemonicdescription 0x4BEQ rs, rd, offsetif R[rs] == R[rd] then PC = PC+4 + (offset<<2) 0x5BNE rs, rd, offsetif R[rs] != R[rd] then PC = PC+4 + (offset<<2) oprsrdoffset 6 bits5 bits 16 bits signed offsets I-Type

Absolute Jump tgt +4 || Data Mem addr ext 555 Reg. File PC Prog. Mem ALU inst control imm offset + Could have used ALU for branch add =? Could have used ALU for branch cmp

Absolute Jump tgt +4 || Data Mem addr ext 555 Reg. File PC Prog. Mem ALU inst control imm offset + Could have used ALU for branch add =? Could have used ALU for branch cmp

Control Flow: More Branches oprssubopoffset 6 bits5 bits 16 bits signed offsets almost I-Type opsubopmnemonicdescription 0x10x0BLTZ rs, offsetif R[rs] < 0 then PC = PC+4+ (offset<<2) 0x1 BGEZ rs, offsetif R[rs] ≥ 0 then PC = PC+4+ (offset<<2) 0x60x0BLEZ rs, offsetif R[rs] ≤ 0 then PC = PC+4+ (offset<<2) 0x70x0BGTZ rs, offsetif R[rs] > 0 then PC = PC+4+ (offset<<2)

Absolute Jump tgt +4 || Data Mem addr ext 555 Reg. File PC Prog. Mem ALU inst control imm offset + Could have used ALU for branch cmp =? cmp

Control Flow: Jump and Link opmnemonicdescription 0x3JAL targetr31 = PC+8 PC = (PC+4) || target || 00 opimmediate 6 bits 26 bits J-Type

Absolute Jump tgt +4 || Data Mem addr ext 555 Reg. File PC Prog. Mem ALU inst control imm offset + =? cmp Could have used ALU for link add +4

Next Time CPU Performance Pipelined CPU