A Processor! Hakim Weatherspoon CS 3410, Spring 2010 Computer Science Cornell University. See: P&H Chapter , 4.1-3

Similar documents
A Processor. Kevin Walsh CS 3410, Spring 2010 Computer Science Cornell University. See: P&H Chapter , 4.1-3

Processor. Han Wang CS3410, Spring 2012 Computer Science Cornell University. See P&H Chapter , 4.1 4

Anne Bracy CS 3410 Computer Science Cornell University. [K. Bala, A. Bracy, E. Sirer, and H. Weatherspoon]

Anne Bracy CS 3410 Computer Science Cornell University. See P&H Chapter: , , Appendix B

CPU Performance Pipelined CPU

The MIPS Instruction Set Architecture

CS 4200/5200 Computer Architecture I

EEM 486: Computer Architecture. Lecture 2. MIPS Instruction Set Architecture

Computer Architecture. The Language of the Machine

101 Assembly. ENGR 3410 Computer Architecture Mark L. Chang Fall 2009

CS3350B Computer Architecture MIPS Instruction Representation

M2 Instruction Set Architecture

Computer Architecture

EE108B Lecture 3. MIPS Assembly Language II

Character Is a byte quantity (00~FF or 0~255) ASCII (American Standard Code for Information Interchange) Page 91, Fig. 2.21

Reduced Instruction Set Computer (RISC)

Mips Code Examples Peter Rounce

Reduced Instruction Set Computer (RISC)

Instructions: Language of the Computer

Instruction Set Architecture of. MIPS Processor. MIPS Processor. MIPS Registers (continued) MIPS Registers

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA

Midterm. Sticker winners: if you got >= 50 / 67

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA MIPS ISA. In a CPU. (vonneumann) Processor Organization

MIPS Assembly Language. Today s Lecture

Today s Lecture. MIPS Assembly Language. Review: What Must be Specified? Review: A Program. Review: MIPS Instruction Formats

F. Appendix 6 MIPS Instruction Reference

CSCI 402: Computer Architectures. Instructions: Language of the Computer (3) Fengguang Song Department of Computer & Information Science IUPUI.

MIPS Instruction Reference

Introduction to the MIPS. Lecture for CPSC 5155 Edward Bosworth, Ph.D. Computer Science Department Columbus State University

Prof. Hakim Weatherspoon CS 3410, Spring 2015 Computer Science Cornell University. See P&H Appendix , and 2.21

MIPS Instruction Set

Computer Architecture. MIPS Instruction Set Architecture

MIPS Reference Guide

Course Administration

INSTRUCTION SET COMPARISONS

Instruction Set Architecture part 1 (Introduction) Mehran Rezaei

MIPS Instruction Format

Lecture 2. Instructions: Language of the Computer (Chapter 2 of the textbook)

Laboratory Exercise 6 Pipelined Processors 0.0

EE 109 Unit 13 MIPS Instruction Set. Instruction Set Architecture (ISA) Components of an ISA INSTRUCTION SET OVERVIEW

ICS 233 Computer Architecture & Assembly Language. ICS 233 Computer Architecture & Assembly Language

Mark Redekopp, All rights reserved. EE 357 Unit 11 MIPS ISA

CS 351 Exam 2 Mon. 11/2/2015

MIPS ISA. 1. Data and Address Size 8-, 16-, 32-, 64-bit 2. Which instructions does the processor support

Chapter 2. Instructions: Language of the Computer. Adapted by Paulo Lopes

ECE260: Fundamentals of Computer Engineering

Computer Architecture Experiment

Overview. Introduction to the MIPS ISA. MIPS ISA Overview. Overview (2)

CPS311 - COMPUTER ORGANIZATION. A bit of history

CS 61C: Great Ideas in Computer Architecture. MIPS Instruction Formats

ECE 154A Introduction to. Fall 2012

MIPS R-format Instructions. Representing Instructions. Hexadecimal. R-format Example. MIPS I-format Example. MIPS I-format Instructions

MIPS%Assembly% E155%

Project Part A: Single Cycle Processor

ECE260: Fundamentals of Computer Engineering

ECE232: Hardware Organization and Design. Computer Organization - Previously covered

ICS 233 COMPUTER ARCHITECTURE. MIPS Processor Design Multicycle Implementation

Processor design - MIPS

Mark Redekopp, All rights reserved. EE 352 Unit 3 MIPS ISA

Concocting an Instruction Set

Pipeline Control Hazards and Instruction Variations

ECE468 Computer Organization & Architecture. MIPS Instruction Set Architecture

are Softw Instruction Set Architecture Microarchitecture are rdw

CS3350B Computer Architecture Quiz 3 March 15, 2018

RTL Model of a Two-Stage MIPS Processor

CSc 256 Midterm 2 Fall 2011

ENGN1640: Design of Computing Systems Topic 03: Instruction Set Architecture Design

EE 109 Unit 8 MIPS Instruction Set

Exam in Computer Engineering

Lectures 3-4: MIPS instructions

Final Project: MIPS-like Microprocessor

A General-Purpose Computer The von Neumann Model. Concocting an Instruction Set. Meaning of an Instruction. Anatomy of an Instruction

Reminder: tutorials start next week!

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

Computer Architecture Instruction Set Architecture part 2. Mehran Rezaei

CS3350B Computer Architecture MIPS Introduction

Instruction Set Architectures Part I: From C to MIPS. Readings:

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

Chapter 2. Instructions: Language of the Computer. HW#1: 1.3 all, 1.4 all, 1.6.1, , , , , and Due date: one week.

Instructions: MIPS ISA. Chapter 2 Instructions: Language of the Computer 1

Grading: 3 pts each part. If answer is correct but uses more instructions, 1 pt off. Wrong answer 3pts off.

Unsigned Binary Integers

Unsigned Binary Integers

Hakim Weatherspoon CS 3410 Computer Science Cornell University

MIPS Instruction Set Architecture (2)

CENG 3420 Lecture 06: Datapath

CS 61c: Great Ideas in Computer Architecture

ECE 331 Hardware Organization and Design. Professor Jay Taneja UMass ECE - Discussion 3 2/8/2018

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

Examples of branch instructions

CS3350B Computer Architecture

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

TSK3000A - Generic Instructions

Computer Organization and Structure. Bing-Yu Chen National Taiwan University

ECE232: Hardware Organization and Design

Programmable Machines

RISC, CISC, and Assemblers

ENCM 369 Winter 2013: Reference Material for Midterm #2 page 1 of 5

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

Today s topics. MIPS operations and operands. MIPS arithmetic. CS/COE1541: Introduction to Computer Architecture. A Review of MIPS ISA.

Transcription:

A Processor! Hakim Weatherspoon CS 3410, Spring 2010 Computer Science Cornell University See: P&H Chapter 2.16-20, 4.1-3

Announcements! HW2 available later today HW2 due in one week and a half Work alone Use your resources FAQ, class notes, book, SecKons, office hours, newsgroup, CSUGLab Make sure you Registered for class, can access CMS, have a SecKon, and have a project partner Check online syllabus/schedule, review slides and lecture notes, Office Hours, early homework and programming assignments 2

Announcements! Prelims: Evening of Thursday, March 10 and April 28 th Late Policy 1) Each person has a total of four slip days 2) For projects, slip days are deducted from all partners 3) 10% deducted per day late a\er slip days are exhausted 3

Basic Computer System! Let s build a MIPS CPU but using (modified) Harvard architecture Registers Control ALU CPU data, address, control 10100010000 10110000011 00100010101... Program Memory 00100000001 00100000010 00010000100... Data Memory 4

for (i = 0; i < 10; i++) printf( go cucs ); Instructions! High Level Language C, Java, Python, Ruby, Loops, control flow, variables main: addi r2, r0, 10 addi r1, r0, 0 loop: slt r3, r1, r2... Assembly Language No symbols (except labels) One operakon per statement 00100000000000100000000000001010 00100000000000010000000000000000 00000000001000100001100000101010 Machine Langauge Binary- encoded assembly Labels become addresses 5

Instruction Types! ArithmeKc add, subtract, shi\ le\, shi\ right, mulkply, divide Memory load value from memory to a register store value to memory from a register Control flow uncondikonal jumps condikonal jumps (branches) jump and link (subroukne call) Many other instruckons are possible vector add/sub/mul/div, string operakons manipulate coprocessor I/O 6

Complexity! MIPS = Reduced InstrucKon Set Computer (RlSC) 200 instruckons, 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 InstrucKon Set Computer (ClSC) > 1000 instruckons, 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] 7

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 W 32 clk r1 r2 r31 5 5 5 32 32 A B Read ports indexed via R A, R B WE R W R A R B 8

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

Basic CPU execukon loop 1. fetch one instruckon 2. increment PC 3. decode 4. execute Instruction Usage! 10

InstrucKon Fetch Circuit Fetch instruckon from memory Instruction Fetch! Calculate address of next instruckon Repeat Program Memory 32 inst PC 32 2 00 +4 11

Arithmetic Instructions! 00000001000001100010000000100110 op rs rt rd - func 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits R- Type op func mnemonic description 0x0 0x21 ADDU rd, rs, rt R[rd] = R[rs] + R[rt] 0x0 0x23 SUBU rd, rs, rt R[rd] = R[rs] R[rt] 0x0 0x25 OR rd, rs, rt R[rd] = R[rs] R[rt] 0x0 0x26 XOR rd, rs, rt R[rd] = R[rs] R[rt] 0x0 0x27 NOR rd, rs rt R[rd] = ~ ( R[rs] R[rt] ) 12

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

Example Programs! r4 = (r1 + r2) r3 r8 = 4*r3 + r4 1 ADDU rd, rs, rt SUBU rd, rs, rt OR rd, rs, rt XOR rd, rs, rt NOR rd, rs rt r9 = 9 14

InstrucKon fetch + decode + ALU = Babbage s engine + speed + reliability hand crank 15

Arithmetic Instructions: Shift! 00000000000001000100000110000011 op - rt rd shamt func 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits R- Type op func mnemonic description 0x0 0x0 SLL rd, rs, shamt R[rd] = R[rt] << shamt 0x0 0x2 SRL rd, rs, shamt R[rd] = R[rt] >>> shamt (zero ext.) 0x0 0x3 SRA rd, rs, shamt R[rd] = R[rs] >> shamt (sign ext.) ex: r5 = r3 * 8 16

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

Arithmetic Instructions: Immediates! 00100100101001010000000000000101 op rs rd immediate 6 bits 5 bits 5 bits 16 bits I- Type op mnemonic description 0x9 ADDIU rd, rs, imm R[rd] = R[rs] + imm sign_extend(imm) 0xc ANDI rd, rs, imm R[rd] = R[rs] & zero_extend(imm) 0xd ORI rd, rs, imm R[rd] = R[rs] zero_extend(imm) ex: r5 += 5 ex: r9 = - 1 ex: r9 = 65535 18

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

Arithmetic Instructions: Immediates! 00111100000001010000000000000101 op - rd immediate 6 bits 5 bits 5 bits 16 bits I- Type op mnemonic description 0xF LUI rd, imm R[rd] = imm << 16 ex: r5 = 0xdeadbeef 20

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

MIPS Instruction Types! ArithmeKc/Logical R- type: result and two source registers, shi\ amount I- type: 16- bit immediate with sign/zero extension Memory Access load/store between registers and memory word, half- word and byte operakons Control flow condikonal branches: pc- relakve addresses jumps: fixed offsets, register absolute 22

Memory Instructions! 10100100101000010000000000000010 op rs rd offset 6 bits 5 bits 5 bits 16 bits op mnemonic description 0x20 LB rd, offset(rs) R[rd] = sign_ext(mem[offset+r[rs]]) 0x24 LBU rd, offset(rs) R[rd] = zero_ext(mem[offset+r[rs]]) 0x21 LH rd, offset(rs) R[rd] = sign_ext(mem[offset+r[rs]]) 0x25 LHU rd, offset(rs) R[rd] = zero_ext(mem[offset+r[rs]]) 0x23 LW rd, offset(rs) R[rd] = Mem[offset+R[rs]] 0x28 SB rd, offset(rs) Mem[offset+R[rs]] = R[rd] 0x29 SH rd, offset(rs) Mem[offset+R[rs]] = R[rd] 0x2b SW rd, offset(rs) Mem[offset+R[rs]] = R[rd] I- Type base + offset addressing signed offsets 23

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

Example! int h, A[]; A[12] = h + A[8]; 25

Examples: # r5 contains 0x5 sb r5, 2(r0) lb r6, 2(r0) sw r5, 8(r0) lb r7, 8(r0) lb r8, 11(r0) Memory Layout! 0x00000000 0x00000001 0x00000002 0x00000003 0x00000004 0x00000005 0x00000006 0x00000007 0x00000008 0x00000009 0x0000000a 0x0000000b... 0xffffffff 26

Endianness! Endianness: Ordering of bytes within a memory word Li le Endian = least significant part first (MIPS, x86) as 4 bytes as 2 halfwords 1000 1001 1002 1003 as 1 word 0x12345678 Big Endian = most significant part first (MIPS, networks) as 4 bytes as 2 halfwords 1000 1001 1002 1003 as 1 word 0x12345678 27

Control Flow: Absolute Jump! 00001010100001001000011000000011 op immediate 6 bits 26 bits J- Type op mnemonic description 0x2 J target PC = target (PC+4) 32..29 00 target 00 Absolute addressing for jumps Jump from 0x30000000 to 0x20000000? NO Reverse? NO But: Jumps from 0x2FFFFFFF to 0x3xxxxxxx are possible, but not reverse Trade- off: out- of- region jumps vs. 32- bit instruckon encoding MIPS Quirk: jump targets computed using already incremented PC 28

Absolute Jump! Prog. Mem inst Reg. File ALU PC +4 5 5 5 control addr Data Mem tgt imm ext 29

Control Flow: Jump Register! 00000000011000000000000000001000 op rs - - - func 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits R- Type op func mnemonic description 0x0 0x08 JR rs PC = R[rs] 30

Jump Register! Prog. Mem inst Reg. File ALU PC +4 5 5 5 control addr Data Mem tgt imm ext 31

Examples (2)! jump to 0xabcd1234 32

jump to 0xabcd1234 Examples (2)! # assume 0 <= r3 <= 1 if (r3 == 0) jump to 0xdecafe0 else jump to 0xabcd1234 33

jump to 0xabcd1234 Examples (2)! # assume 0 <= r3 <= 1 if (r3 == 0) jump to 0xdecafe0 else jump to 0xabcd1234 34

Control Flow: Branches! 00010000101000010000000000000011 op mnemonic op rs rd offset 6 bits 5 bits 5 bits 16 bits 0x4 BEQ rs, rd, offset 0x5 BNE rs, rd, offset description I- Type signed offsets if R[rs] == R[rd] then PC = PC+4 + (offset<<2) if R[rs]!= R[rd] then PC = PC+4 + (offset<<2) 35

Examples (3)! if (i == j) { i = i * 4; } else { j = i - j; } 36

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

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

Control Flow: More Branches! 00000100101000010000000000000010 op rs subop offset 6 bits 5 bits 5 bits 16 bits op subop mnemonic description signed offsets almost I- Type 0x1 0x0 BLTZ rs, offset if R[rs] < 0 then PC = PC+4+ (offset<<2) 0x1 0x1 BGEZ rs, offset if R[rs] 0 then PC = PC+4+ (offset<<2) 0x6 0x0 BLEZ rs, offset if R[rs] 0 then PC = PC+4+ (offset<<2) 0x7 0x0 BGTZ rs, offset if R[rs] > 0 then PC = PC+4+ (offset<<2) 39

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

Control Flow: Jump and Link! 00001100000001001000011000000010 op immediate 6 bits 26 bits op mnemonic description 0x3 JAL target r31 = PC+8 PC = (PC+4) 32..29 target 00 J- Type 41

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

Next Time! CPU Performance Pipelined CPU 43