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

Similar documents
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

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

The MIPS Instruction Set Architecture

CPU Performance Pipelined CPU

Computer Architecture. The Language of the Machine

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

M2 Instruction Set Architecture

CS3350B Computer Architecture MIPS Instruction Representation

CS 4200/5200 Computer Architecture I

Computer Architecture

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

Mips Code Examples Peter Rounce

Reduced Instruction Set Computer (RISC)

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

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

Reduced Instruction Set Computer (RISC)

EE108B Lecture 3. MIPS Assembly Language II

MIPS Instruction Set

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

CISC 662 Graduate Computer Architecture. Lecture 4 - ISA

F. Appendix 6 MIPS Instruction Reference

MIPS Instruction Reference

Computer Architecture. MIPS Instruction Set Architecture

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

Instructions: Language of the Computer

Course Administration

MIPS Assembly Language. Today s Lecture

MIPS Instruction Format

MIPS Reference Guide

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

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

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

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

INSTRUCTION SET COMPARISONS

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

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

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

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

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

CPS311 - COMPUTER ORGANIZATION. A bit of history

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

Instruction Set Architecture part 1 (Introduction) Mehran Rezaei

CS 351 Exam 2 Mon. 11/2/2015

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

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

ECE 154A Introduction to. Fall 2012

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

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

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

ECE260: Fundamentals of Computer Engineering

Unsigned Binary Integers

Unsigned Binary Integers

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

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

MIPS Instruction Set Architecture (2)

Laboratory Exercise 6 Pipelined Processors 0.0

EE 109 Unit 8 MIPS Instruction Set

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

TSK3000A - Generic Instructions

Examples of branch instructions

Exam in Computer Engineering

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

ECE468 Computer Organization & Architecture. MIPS Instruction Set Architecture

Flow of Control -- Conditional branch instructions

Chapter 2. Computer Abstractions and Technology. Lesson 4: MIPS (cont )

Chapter 2A Instructions: Language of the Computer

CS 61c: Great Ideas in Computer Architecture

Project Part A: Single Cycle Processor

ece4750-parc-isa.txt

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

CSc 256 Midterm 2 Fall 2011

Computer Organization MIPS ISA

ECE 2035 Programming HW/SW Systems Fall problems, 7 pages Exam Two 23 October 2013

RTL Model of a Two-Stage MIPS Processor

Concocting an Instruction Set

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

Computer Architecture Experiment

Computer Architecture Instruction Set Architecture part 2. Mehran Rezaei

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

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

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

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

Processor design - MIPS

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

ICS 233 COMPUTER ARCHITECTURE. MIPS Processor Design Multicycle Implementation

ECE232: Hardware Organization and Design

Final Project: MIPS-like Microprocessor

COMPSCI 313 S Computer Organization. 7 MIPS Instruction Set

ELEC / Computer Architecture and Design Fall 2013 Instruction Set Architecture (Chapter 2)

Reminder: tutorials start next week!

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

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

ISA and RISCV. CASS 2018 Lavanya Ramapantulu

Lectures 3-4: MIPS instructions

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

COMPUTER ORGANIZATION AND DESIGN

Transcription:

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

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

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 operation per statement 00100000000000110000000000000011 00100000000001010000000000000000 00010000100001010000000000000011 Machine Langauge Binary-encoded assembly Labels become addresses 3

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 Types 4

MIPS = Reduced Instruction Set Computer (RlSC) 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] Complexity 5

MIPS register file 32 registers, 32-bits each (with r0 wired to zero) Write port indexed via RW Writes occur on falling edge but only if WE is high Read ports indexed via RA, RB W 32 clk r1 r2 r31 5 5 WE RW RA MIPS Register file A 32 32 B 5 RB 6

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 MIPS Memory 7

Basic CPU execution loop 1. fetch one instruction 2. increment PC 3. decode 4. execute Instruction Usage 8

Instruction Fetch Instruction Fetch Circuit Fetch instruction from memory Calculate address of next instruction Repeat Program Memory 32 inst PC 32 2 00 +4 9

00000001000001100010000000100110 op rs rt rd - func 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits Arithmetic Instructions 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] ) 10

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

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

Instruction fetch + decode + ALU = Babbage s engine + speed + reliability hand crank 13

00000000000001000100000110000011 op - rt rd shamt func 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits Arithmetic Instructions: Shift 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 14

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

00100100101001010000000000000101 op rs rd immediate 6 bits 5 bits 5 bits 16 bits Arithmetic Instructions: Immediates 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 16

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

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

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

Arithmetic/Logical R-type: result and two source registers, shift amount I-type: 16-bit immediate with sign/zero extension MIPS Instruction Types 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 20

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] Memory Instructions I-Type base + offset addressing signed offsets 21

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

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

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

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

00001010100001001000011000000011 op immediate 6 bits 26 bits Control Flow: Absolute Jump 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 instruction encoding MIPS Quirk: jump targets computed using already incremented PC 26

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

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

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

jump to 0xabcd1234 Examples (2) 30

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

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

00010000101000010000000000000011 Control Flow: Branches op rs rd offset 6 bits 5 bits 5 bits 16 bits op mnemonic description I-Type signed offsets 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) 33

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

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 35

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 36

00000100101000010000000000000010 Control Flow: More Branches 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) 37

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 38

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

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 40