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

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

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

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

CPU Performance Pipelined CPU

The MIPS Instruction Set Architecture

M2 Instruction Set Architecture

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

CS 4200/5200 Computer Architecture I

Computer Architecture. The Language of the Machine

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

CS3350B Computer Architecture MIPS Instruction Representation

EE108B Lecture 3. MIPS Assembly Language II

Computer Architecture

Mips Code Examples Peter Rounce

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

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

F. Appendix 6 MIPS Instruction Reference

MIPS Instruction Reference

Reduced Instruction Set Computer (RISC)

Instructions: Language of the Computer

Laboratory Exercise 6 Pipelined Processors 0.0

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA

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

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

MIPS Instruction Set

Unsigned Binary Integers

Unsigned Binary Integers

INSTRUCTION SET COMPARISONS

are Softw Instruction Set Architecture Microarchitecture are rdw

MIPS Instruction Format

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

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

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

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

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

Computer Architecture Experiment

Reduced Instruction Set Computer (RISC)

Project Part A: Single Cycle Processor

ICS 233 COMPUTER ARCHITECTURE. MIPS Processor Design Multicycle Implementation

MIPS Reference Guide

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

CPS311 - COMPUTER ORGANIZATION. A bit of history

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

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

MIPS Assembly Language. Today s Lecture

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

Flow of Control -- Conditional branch instructions

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

EE 109 Unit 8 MIPS Instruction Set

Examples of branch instructions

Computer Architecture. MIPS Instruction Set Architecture

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

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

MIPS%Assembly% E155%

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

ECE260: Fundamentals of Computer Engineering

CS 61c: Great Ideas in Computer Architecture

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

Exam in Computer Engineering

CSc 256 Midterm 2 Fall 2011

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

Course Administration

Instruction Set Architecture part 1 (Introduction) Mehran Rezaei

ECE260: Fundamentals of Computer Engineering

RTL Model of a Two-Stage MIPS Processor

Reminder: tutorials start next week!

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

CS3350B Computer Architecture Quiz 3 March 15, 2018

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

Concocting an Instruction Set

ECE 154A Introduction to. Fall 2012

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

Final Project: MIPS-like Microprocessor

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

ece4750-parc-isa.txt

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

CS 61C: Great Ideas in Computer Architecture. Lecture 11: Datapath. Bernhard Boser & Randy Katz

Computer Organization MIPS ISA

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

Processor design - MIPS

TSK3000A - Generic Instructions

MIPS Instruction Set Architecture (2)

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

CS61CL Machine Structures. Lec 5 Instruction Set Architecture

CSCI 402: Computer Architectures

Thomas Polzer Institut für Technische Informatik

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

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

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

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

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

ISA: The Hardware Software Interface

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

ECE232: Hardware Organization and Design

Chapter 4. The Processor

ECE Exam I February 19 th, :00 pm 4:25pm

Computer Architecture Instruction Set Architecture part 2. Mehran Rezaei

ISA and RISCV. CASS 2018 Lavanya Ramapantulu

Transcription:

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

Understanding the basics of a processor We now have the technology to build a CPU! Putting it all together: Arithmetic Logic Unit (ALU) Register File Memory MIPS Instructions & how they are executed 2

for (i = 0; i < 10; i++) printf( go cucs ); High Level Language C, Java, Python, ADA, Loops, control flow, variables main: addi r2, r0, 10 addi r1, r0, 0 loop: slt r3, r1, r2... op=addi r0 r2 10 00100000000000100000000000001010 00100000000000010000000000000000 00000000001000100001100000101010 ALU, Control, Register File, Assembly Language No symbols (except labels) One operation per statement human readable machine language Machine Language Binary-encoded assembly Labels become addresses The language of the CPU Instruction Set Architecture Machine Implementation (Microarchitecture) 3

Prog Mem inst PC +4 Instructions: Reg. File 00100000000000100000000000001010 00100000000000010000000000000000 00000000001000100001100000101010 5 5 5 control stored in memory, encoded in binary ALU A basic processor fetches decodes Data Mem executes one instruction at a time 4

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

00000001000001100010000000100110 op rs rt rd - func 6 5 5 5 5 6 bits 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] ) example: r4 = r8 Å r6 # XOR r4, r8, r6 rd, rs, rt 6

XOR r4 r8 r6 Prog. Mem Reg. File ALU r8 Å r6 5 5 5 control Fetch Decode Execute WB Example: r4 = r8 Å r6 # XOR r4, r8, r6 7

00000000000001000100000110000000 op - rt rd shamt func 6 5 5 5 5 6 bits op func mnemonic description 0x0 0x0 SLL rd, rt, shamt R[rd] = R[rt] << shamt 0x0 0x2 SRL rd, rt, shamt R[rd] = R[rt] >>> shamt (zero ext.) 0x0 0x3 SRA rd, rt, shamt R[rd] = R[rt] >> shamt (sign ext.) example: r8 = r4 * 64 # SLL r8, r4, 6 r8 = r4 << 6 8

SLL r8 r4 6 Prog. Mem Reg. File ALU r4 << 6 5 5 5 control Fetch Decode Execute WB Example: r8 = r4 * 64 # SLL r8, r4, 6 r8 = r4 << 6 9

00100100101001010000000000000101 op rs rd immediate 6 5 5 16 bits op mnemonic description 0x9 ADDIU rd, rs, imm R[rd] = R[rs] + 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) example: r5 = r5 + 5 # ADDIU r5, r5, 5 r5 += 5 What if immediate is negative? r5 += -1 r5 += 65535 Unsigned means no overflow detection. The immediate can be negative! 10

ADDIU r5 r5 5 Prog. Mem Reg. File ALU r5 + 5 5 5 5 imm shamt control extend 16 32 Example: r5 = r5 + 5 # ADDIU r5, r5, 5 Fetch Decode Execute WB 11

To compile the code y = x + 1, assuming y is stored in R1 and x is stored in R2, you can use the ADDI instruction. What is the largest number for which we can continue to use ADDI? (a) 16 (b) 2 15-1 = 32,767 (c) 2 16-1 = 65,535 (d) 2 31-1 = ~2.1 billion (e) 2 32-1 = ~4.3 billion 12

00111100000001010000000000000101 op - rd immediate 6 5 5 16 bits op mnemonic description 0xF LUI rd, imm R[rd] = imm << 16 WORST NAME EVER! example: r5 = 0x50000 # LUI r5, 5 Example: LUI r5, 0xdead ORI r5, r5 0xbeef What does r5 =? 13

LUI r5 5 Prog. Mem Reg. File ALU 0x50000 5 5 5 control 16 imm shamt 16 extend 32 Example: r5 = 0x50000 # LUI r5, 5 Fetch Decode Execute WB 14

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

10101100101000010000000000000100 op rs rd offset 6 5 5 16 bits op mnemonic description base + offset addressing 0x23 LW rd, offset(rs) R[rd] = Mem[offset+R[rs]] 0x2b SW rd, offset(rs) Mem[offset+R[rs]] = R[rd] signed offsets Example: = Mem[4+r5] = r1 # SW r1, 4(r5) 16

SW r1 r5 4 Prog. Mem Reg. File ALU r5+4 5 5 5 control addr Data Mem imm ext Write Enable Example: = Mem[4+r5] = r1 # SW r1, 4(r5) 17

10101100101000010000000000000100 op rs rd offset 6 5 5 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] 18

# r5 contains 5 (0x00000005) SB r5, 0(r0) SB r5, 2(r0) SW r5, 8(r0) Two ways to store a word in memory. Endianness: ordering of bytes within a memory word 0xffffffff... 0x0000000b 0x0000000a 0x00000009 0x00000008 0x00000007 0x00000006 0x00000005 0x00000004 0x00000003 0x00000002 0x00000001 0x00000000 19

WHAT WE USE IN 3410 Little Endian = least significant part first (some MIPS, x86) Example: r5 contains 5 (0x00000005) SW r5, 8(r0) Clicker Question: After executing the store, which byte address contains the byte 0x05? a) 0x00000008 b) 0x00000008 c) 0x00000008 d) 0x00000008 e) I don t know 0xffffffff... 0x0000000b 0x0000000a 0x00000009 0x00000008 0x00000007 0x00000006 0x00000005 0x00000004 0x00000003 0x00000002 0x00000001 0x00000000 20

Big Endian = most significant part first (some MIPS, networks) Example: r5 contains 5 (0x00000005) SW r5, 8(r0) Clicker Question: After executing the store, which byte address contains the byte 0x05? a) 0x00000008 b) 0x00000008 c) 0x00000008 d) 0x00000008 e) I don t know 0xffffffff... 0x0000000b 0x0000000a 0x00000009 0x00000008 0x00000007 0x00000006 0x00000005 0x00000004 0x00000003 0x00000002 0x00000001 0x00000000 21

SB r5, 2(r0) LB r6, 2(r0) SW r5, 8(r0) LB r7, 8(r0) LB r8, 11(r0) r0... 0x00000005 r5 0x00000005 r6 0x00000000 0x00000005 r7 r8 0x05 0x00 0x00 0x00 0x05 0xffffffff... 0x0000000b 0x0000000a 0x00000009 0x00000008 0x00000007 0x00000006 0x00000005 0x00000004 0x00000003 0x00000002 0x00000001 0x00000000 22

Prog Mem inst PC +4 Reg. File 5 5 5 control ALU Data Mem What if the program is more than just a straight line of instructions? 23

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

00001001000000000000000000000001 op immediate 6 26 bits op Mnemonic Description = concatenate 0x2 J target PC = (PC+4) 31..28 target 00 (PC+4) 31..28 target 00 4 bits 26 bits 2 bits (PC+4) 31..28 01000000000000000000000001 00 MIPS Quirk: jump targets computed using already incremented PC 25

00000000011000000000000000001000 op rs - - - func 6 5 5 5 5 6 bits op func mnemonic description 0x0 0x08 JR rs PC = R[rs] Example: JR r3 26

What is a good trait about the Jump Register instruction? (A) Since registers are 32 bits, you can specify any address. (B) The address you re jumping to is programmable. It doesn t have to be hard-coded in the instruction because it lives in a register. (C) It allows you to jump to an instruction with an address ending in something other than 00, which is very useful. (D)Both A and B. (E) A, B, and C. 27

Can use Jump or Jump Register instruction to jump to 0xabcd1234 What about a jump based on a condition? # assume 0 <= r3 <= 1 if (r3 == 0) jump to 0xdecafe00 else jump to 0xabcd1234 28

00010000101000010000000000000011 op rs rd offset 6 5 5 16 bits signed op mnemonic description 0x4 BEQ rs, rd, offset if R[rs] == R[rd] then PC = PC+4 + (offset<<2) 0x5 BNE rs, rd, offset if R[rs]!= R[rd] then PC = PC+4 + (offset<<2) Example: BEQ r5, r1, 3 if(r[r5]==r[r1]) PC = PC+4 + 12 (i.e. 12 == 3<<2) A word about all these + s 29

00000100101000010000000000000010 op rs subop offset 6 bits 5 bits 5 bits 16 bits op subop mnemonic description signed 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) Example: BGEZ r5, 2 if(r[r5] 0) PC = PC+4 + 8 (i.e. 8 == 2<<2) 30

00001101000000000000000000000001 op immediate 6 bits 26 bits op mnemonic description Discuss later 0x3 JAL target r31 = PC+8 (+8 due to branch delay slot) PC = (PC+4) 31..28 target 00 Why? Function/procedure calls 31

Arithmetic/Logical R-type:result and two source registers, shift amount I-type: 16-bit immediate with sign/zero extension Memory Access I-type load/store between registers and memory word, half-word and byte operations Control flow J-type: fixed offset jumps, jump-and-link R-type: register absolute jumps I-type: conditional branches: pc-relative addresses Many other instructions possible: vector add/sub/mul/div, string operations manipulate coprocessor I/O 32

We have all that it takes to build a processor! Arithmetic Logic Unit (ALU) Register File Memory We now know the data path for the MIPS ISA: register, memory and control instructions 33

You will not need to implement control instructions in Logisim this semester, but if you re curious to know how they are implemented, here are the corresponding slides. Note: you are still responsible for knowing how to use loads, stores, and control instructions in MIPS assembly. 34

Prog. Mem Reg. File ALU PC +4 32 (PC+4) 31..28 0x4000004 imm target 5 5 5 control 16 J ext 26 (PC+4) 31..28 0x100000100 32 addr Data Mem Example: PC = (PC+4) 31..28 target 00 # J 0x1000001 35

Prog. Mem inst Reg. File R[r3] ALU PC +4 5 5 5 control JR addr Data Mem tgt imm ext ex: JR r3 op func mnemonic description 0x0 0x08 JR rs PC = R[rs] 36

Prog. Mem inst Reg. File R[r5] R[r1] ALU PC +4 offset 5 5 5 control =? BEQ addr Data Mem + (PC+4)+3<<2 tgt imm ext ex: BEQ r5, r1, 3 op mnemonic description 0x4 BEQ rs, rd, offset if R[rs] == R[rd] then PC = PC+4 + (offset<<2) 37

Prog. Mem inst Reg. File R[r5] ALU PC +4 (PC+4)+2<<2 offset + tgt ex: BGEZ r5, 2 5 5 5 control imm BEQZ =? cmp ext addr Data Mem op subop mnemonic description 0x1 0x1 BGEZ rs, offset if R[rs] 0 then PC = PC+4+ (offset<<2) 38

Prog. Mem PC +4 inst PC+8 +4 offset + tgt Reg. File 5 5 5 control imm ex: JAL 0x1000001 R[r31] =? cmp ext op mnemonic description ALU Could have used ALU for link add addr Data Mem r31 = PC+8 PC = (PC+4) 31..28 0x4000004 0x3 JAL target r31 = PC+8 (+8 due to branch delay slot) PC = (PC+4) 31..28 (target << 2) 39