MIPS Instruction Set Architecture

Slides:



Advertisements
Similar presentations
Review of the MIPS Instruction Set Architecture. RISC Instruction Set Basics All operations on data apply to data in registers and typically change the.
Advertisements

Lecture 5: MIPS Instruction Set
CS/COE0447 Computer Organization & Assembly Language
ECE 15B Computer Organization Spring 2010 Dmitri Strukov Lecture 5: Data Transfer Instructions / Control Flow Instructions Partially adapted from Computer.
The University of Adelaide, School of Computer Science
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.
MIPS Instructions Instructions: Language of the Machine
Chapter 2 — Instructions: Language of the Computer — 1 Memory Operands Main memory used for composite data – Arrays, structures, dynamic data To apply.
MIPS Instruction Set Architecture Prof. Sirer CS 316 Cornell University.
COM181 Computer Hardware Lecture 6: The MIPs CPU.
CS Computer Organization Numbers and Instructions Dr. Stephen P. Carl.
COMPUTER ARCHITECTURE & OPERATIONS I Instructor: Yaohang Li.
Memory Access Instructions Load and Store Addressing Modes Memory Addressing. Base addressing mode. Load byte and store byte: lb, lbu, sb Address alignment.
Instructor: Prof. Hany H Ammar, LCSEE, WVU
/ Computer Architecture and Design
CS/COE 0447 (term 2181) Jarrett Billingsley
CS 230: Computer Organization and Assembly Language
Prof. Hsien-Hsin Sean Lee
Memory Access Instructions
Morgan Kaufmann Publishers
Introduction CPU performance factors
Computer Organization and Design Instruction Sets - 2
RISC Concepts, MIPS ISA Logic Design Tutorial 8.
Prof. Sirer CS 316 Cornell University
32-bit MIPS ISA.
ENGR 3410 – Computer Architecture Mark L. Chang Fall 2006
Computer Architecture (CS 207 D) Instruction Set Architecture ISA
Computer Organization and Design Instruction Sets
ECE/CS 552: Instruction Sets – MIPS
Instructions - Type and Format
Appendix A Classifying Instruction Set Architecture
Han Wang CS3410, Spring 2012 Computer Science Cornell University
Control Flow and Arrays
MPIS Instructions Functionalities of instructions Instruction format
Systems Architecture I (CS ) Lecture 5: MIPS Instruction Set*
CSCI206 - Computer Organization & Programming
The University of Adelaide, School of Computer Science
Computer Architecture & Operations I
The University of Adelaide, School of Computer Science
ECE232: Hardware Organization and Design
Hakim Weatherspoon CS 3410 Computer Science Cornell University
Rocky K. C. Chang 6 November 2017
Instruction encoding The ISA defines Format = Encoding
MIPS Assembly.
MIPS Microarchitecture Multicycle Processor
COMS 361 Computer Organization
Computer Instructions
Computer Architecture
Instruction encoding The ISA defines Format = Encoding
Access the Instruction from Memory
Prof. Sirer CS 316 Cornell University
Instruction encoding The ISA defines Format = Encoding
ECE 463/563 Fall `18 RISC-V instruction formats
Review Fig 4.15 page 320 / Fig page 322
Reading and writing to data memory
Datapath and Control Exceptions
MIPS Assembly.
Instruction encoding The ISA defines Format = Encoding
Hakim Weatherspoon CS 3410 Computer Science Cornell University
CS352H Computer Systems Architecture
Reduced Instruction Set Computer (RISC)
Systems Architecture I (CS ) Lecture 5: MIPS Instruction Set*
The Processor: Datapath & Control.
COMS 361 Computer Organization
CS 3410, Spring 2014 Computer Science Cornell University
7/6/
9/13/
Processor: Datapath and Control
Control Flow and Arrays
Presentation transcript:

MIPS Instruction Set Architecture Prof. Sirer CS 316 Cornell University

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 Types Arithmetic/Logical three operands: result + two sources operands: registers, 16-bit immediates signed and unsigned versions Memory Access load/store between registers and memory half-word and byte operations Control flow conditional branches: pc-relative addresses jumps: fixed offsets

Arithmetic Instructions (1) op rs rt rd shamt func 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits if op == 0 && func == 0x21 R[rd] = R[rs] + R[rt] if op == 0 && func == 0x23 R[rd] = R[rs] - R[rt] if op == 0 && func == 0x25 R[rd] = R[rs] | R[rt] ADD rd, rs, rt ADDU rd, rs, rt AND rd, rs, rt OR rd, rs, rt NOR rd, rs, rt

Arithmetic Ops 00 inst alu memory register file pc new pc calculation 32 2 00 5 5 5 pc new pc calculation control

Arithmetic Instructions (2) op rs rd immediate 6 bits 5 bits 5 bits 16 bits if op == 8 R[rd] = R[rs] + sign_extend(immediate) if op == 12 R[rd] = R[rs] & immediate ADDI rs, rt, val ADDIU rs, rt, val ANDI rs, rt, val ORI rs, rt, val

Sign Extension Often need to convert a small (8-bit or 16-bit) signed value to a larger (16-bit or 32-bit) signed value “1” in 8 bits: 00000001 “1” in 16 bits: 0000000000000001 “-1” in 8 bits: 11111111 “-1” in 16 bits: 1111111111111111 Conversion from small to larger numbers involves replicating the sign bit

Arithmetic Ops with Immediates inst alu memory register file mux 32 2 00 5 5 5 32 16 sign extend pc new pc calculation control

Memory Operations lb, lbu, lh, lhu, lw sb, sh, sw Examples op rs rt immediate 6 bits 5 bits 5 bits 16 bits lb, lbu, lh, lhu, lw sb, sh, sw Examples lw r3, 0(r4) int array[32]; x = array[0] lw r3, 16(r4) int array[32]; x = array[4]

Load 00 inst alu register file memory pc new pc control calculation 32 addr d out 5 5 5 32 16 sign extend data memory control

Store 00 inst alu register file memory pc new pc control calculation 32 pc 2 00 new pc calculation alu register file addr d out 5 5 5 32 16 sign extend d in data memory control

Endianness Take a 32-bit hexadecimal value e.g. 0x01020304 Store the word at location 0x1000 Read the byte at location 0x1000 What do you get? Little endian Big endian 0x1003 0x1002 0x1001 0x1000 01 02 03 04 01 02 03 04 0x1000 0x1001 0x1002 0x1003

Endianness The way the bytes are ordered within a word generally does not matter, except when casting between integral data types casting four bytes to an int casting two bytes to a short casting two shorts to an int Such casting is typically required when sending data from one host to another networks use big-endian representation for ints x86’s use little-endian representation for ints

Control Flow (Absolute Jump) op target 6 bits 26 bits j, jal Absolute addressing new PC = high 3 bits of current PC || target || 00 Cannot jump from 0xffff000000000000 to 0x0000100000000000 Better to make all instructions fit in 32 bits than to support really large absolute jumps Examples j L01 goto L01

Absolute Jump 00 inst alu register file memory pc new pc control 32 pc 2 00 new pc calculation alu register file addr d out 5 5 5 32 16 sign extend d in data memory control

Control Flow (Jump Register) op rs 000 000 000 000 000 func 6 bits 5 bits 15 bits 6 bits new PC = R[rs] Can jump to any address stored in a register

Jump Register 00 inst alu register file memory pc new pc control 32 pc 2 00 new pc calculation alu register file addr d out 5 5 5 32 16 sign extend d in data memory control

Control Flow (Branches) op rs rt immediate 6 bits 5 bits 5 bits 16 bits Some branches depend on the relative values of two registers if op == 4 # BEQ if R[rs] == R[rt] new PC = old PC + sign_extend(immediate << 2) BEQ, BNE

Branch 00 inst alu register file memory pc new pc control calculation =? memory inst 32 pc 2 00 new pc calculation alu register file addr d out 5 5 5 32 16 sign extend d in data memory control

Control Flow (Branches) op rs subop immediate 6 bits 5 bits 5 bits 16 bits Some branches depend on the value of a single register if op == 1 && subop == BLTZ if R[rs] < 0 new PC = old PC + sign_extend(immediate << 2) BGEZ, BGTZ, BLTZ, BLEZ

Branch 00 inst alu register file memory pc new pc control calculation =? <=0? memory inst 32 pc 2 00 new pc calculation alu register file addr d out 5 5 5 32 16 sign extend d in data memory control

Summary Full-blown processor Next time: we’ll make it go faster