CS1104 – Computer Organization PART 2: Computer Architecture Lecture 5 MIPS ISA & Assembly Language Programming.

Slides:



Advertisements
Similar presentations
Henk Corporaal TUEindhoven 2011
Advertisements

1 Lecture 3: MIPS Instruction Set Today’s topic:  More MIPS instructions  Procedure call/return Reminder: Assignment 1 is on the class web-page (due.
Goal: Write Programs in Assembly
Review of the MIPS Instruction Set Architecture. RISC Instruction Set Basics All operations on data apply to data in registers and typically change the.
Lecture 5: MIPS Instruction Set
1 ECE462/562 ISA and Datapath Review Ali Akoglu. 2 Instruction Set Architecture A very important abstraction –interface between hardware and low-level.
1 ECE369 ECE369 Chapter 2. 2 ECE369 Instruction Set Architecture A very important abstraction –interface between hardware and low-level software –standardizes.
ELEN 468 Advanced Logic Design
1 INSTRUCTIONS: LANGUAGE OF THE MACHINE CHAPTER 3.
Chapter 2 Instructions: Language of the Computer
1 Chapter 3: Instructions: Language of the Machine More primitive than higher level languages e.g., no sophisticated control flow Very restrictive e.g.,
1 Instructions: Language of the Machine More primitive than higher level languages e.g., no sophisticated control flow Very restrictive e.g., MIPS Arithmetic.
CS325 Instructions: Language of the Machine MIPS ARCHITECTURE - AN INTRODUCTION TO THE INSTRUCTION SET by N. Guydosh 2/2/04+
MIPS Architecture CPSC 321 Computer Architecture Andreas Klappenecker.
1 Chapter Introduction Language of the Machine We’ll be working with the MIPS instruction set architecture –similar to other architectures developed.
ENEE350 Spring07 1 Ankur Srivastava University of Maryland, College Park Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005.”
Computer Architecture CPSC 321 E. J. Kim. Overview Logical Instructions Shifts.
1 CSE SUNY New Paltz Chapter 3 Machine Language Instructions.
S. Barua – CPSC 440 CHAPTER 2 INSTRUCTIONS: LANGUAGE OF THE COMPUTER Goals – To get familiar with.
1 Lecture 2: MIPS Instruction Set Today’s topic:  MIPS instructions Reminder: sign up for the mailing list cs3810 Reminder: set up your CADE accounts.
Lecture 5 Sept 14 Goals: Chapter 2 continued MIPS assembly language instruction formats translating c into MIPS - examples.
1  1998 Morgan Kaufmann Publishers Chapter 3 Text in blue is by N. Guydosh Updated 1/27/04 Instructions: Language of the Machine.
Text-book Slides Chapters 1-2 Prepared by the publisher (We have not necessarily followed the same order)
1  2004 Morgan Kaufmann Publishers Chapter 2. 2  2004 Morgan Kaufmann Publishers Instructions: Language of the Machine We’ll be working with the MIPS.
ECE 232 L5 Assembl.1 Adapted from Patterson 97 ©UCBCopyright 1998 Morgan Kaufmann Publishers ECE 232 Hardware Organization and Design Lecture 5 MIPS Assembly.
ISA-2 CSCE430/830 MIPS: Case Study of Instruction Set Architecture CSCE430/830 Computer Architecture Instructor: Hong Jiang Courtesy of Prof. Yifeng Zhu.
Computing Systems Instructions: language of the computer.
순천향대학교 정보기술공학부 이 상 정 1 2. Instructions: Language of the Computer.
1 EGRE 426 Fall 09 Handout Pipeline examples continued from last class.
1 CS/EE 362 Hardware Fundamentals Lecture 10 (Chapter 3: Hennessy and Patterson) Winter Quarter 1998 Chris Myers.
1 (Based on text: David A. Patterson & John L. Hennessy, Computer Organization and Design: The Hardware/Software Interface, 3 rd Ed., Morgan Kaufmann,
11/02/2009CA&O Lecture 03 by Engr. Umbreen Sabir Computer Architecture & Organization Instructions: Language of Computer Engr. Umbreen Sabir Computer Engineering.
1  1998 Morgan Kaufmann Publishers Machine Instructions: Language of the Machine Lowest level of programming, control directly the hardware Assembly instructions.
6.S078 - Computer Architecture: A Constructive Approach Introduction to SMIPS Li-Shiuan Peh Computer Science & Artificial Intelligence Lab. Massachusetts.
April 23, 2001Systems Architecture I1 Systems Architecture I (CS ) Lecture 9: Assemblers, Linkers, and Loaders * Jeremy R. Johnson Mon. April 23,
Computer Architecture (CS 207 D) Instruction Set Architecture ISA.
Small constants are used quite frequently (50% of operands) e.g., A = A + 5; B = B + 1; C = C - 18; Solutions? Why not? put 'typical constants' in memory.
 1998 Morgan Kaufmann Publishers MIPS arithmetic All instructions have 3 operands Operand order is fixed (destination first) Example: C code: A = B +
Computer Architecture CSE 3322 Lecture 3 Assignment: 2.4.1, 2.4.4, 2.6.1, , Due 2/3/09 Read 2.8.
Chapter 2 CSF 2009 The MIPS Assembly Language. Stored Program Computers Instructions represented in binary, just like data Instructions and data stored.
Computer Organization CS224 Fall 2012 Lessons 7 and 8.
Computer Organization Rabie A. Ramadan Lecture 3.
EE472 – Spring 2007P. Chiang, with Slide Help from C. Kozyrakis (Stanford) ECE472 Computer Architecture Lecture #3—Oct. 2, 2007 Patrick Chiang TA: Kang-Min.
Chapter 2 — Instructions: Language of the Computer — 1 Memory Operands Main memory used for composite data – Arrays, structures, dynamic data To apply.
CDA 3101 Spring 2016 Introduction to Computer Organization
Instruction Set Architecture Chapter 3 – P & H. Introduction Instruction set architecture interface between programmer and CPU Good ISA makes program.
1  1998 Morgan Kaufmann Publishers Instructions: Language of the Machine More primitive than higher level languages e.g., no sophisticated control flow.
Fall 2014, Aug ELEC / Lecture 3 1 ELEC / Computer Architecture and Design Fall 2014 Instruction Set Architecture.
Today’s Agenda MIPS ISA Microcomputer without Interlocked Pipeline Stages !
1 ECE3055 Computer Architecture and Operating Systems Lecture 3 MIPS ISA Prof. Hsien-Hsin Sean Lee School of Electrical and Computer Engineering Georgia.
MIPS Instruction Set Advantages
Instructions: Language of the Computer
Lecture 4: MIPS Instruction Set
ELEN 468 Advanced Logic Design
ECE3055 Computer Architecture and Operating Systems MIPS ISA
RISC Concepts, MIPS ISA Logic Design Tutorial 8.
Computer Architecture (CS 207 D) Instruction Set Architecture ISA
ECE/CS 552: Instruction Sets – MIPS
Instructions - Type and Format
Lecture 4: MIPS Instruction Set
Systems Architecture I (CS ) Lecture 5: MIPS Instruction Set*
Henk Corporaal TUEindhoven 2010
The University of Adelaide, School of Computer Science
ECE232: Hardware Organization and Design
September 24 Test 1 review More programming
Instruction encoding The ISA defines Format = Encoding
COMS 361 Computer Organization
COMS 361 Computer Organization
Machine Instructions.
Systems Architecture I (CS ) Lecture 5: MIPS Instruction Set*
Presentation transcript:

CS1104 – Computer Organization PART 2: Computer Architecture Lecture 5 MIPS ISA & Assembly Language Programming

MIPS Basics  The MIPS instruction set is typical of RISC architectures (MIPS, PowerPC, SPARC, ARM, etc.)  We will specifically look at the MIPS R2000 Assembly Language  32 Registers, each 32 bits long  Each word is 32 bits  Memory addresses are 32 bits long

MIPS Registers  $a0 - $a3 : argument regs for passing parameters  $v0 - $v1 : Value regs for return values  $ra : return address register  $s0 - $s7 : registers for storing variables  $t0 - $t9 : temporary registers For procedure calls

MIPS’s Addressing Modes °Under MIPS R2000, which is a load-store architecture: Mainly five types of addressing modes -Register -Immediate -Displacement (with a base register and a constant) -PC relative -Pseudodirect (with 26 bits concatenated with PC upper bits for jump address) Computation instructions operate only on values in registers or immediate values embedded in the instructions. Data in memory can be accessed through one memory addressing mode, C(Rx), where C is an immediate constant and Rx is a register.

MIPS’s Addressing Modes oprsrtrd immed register Register (direct) oprsrt register Displacement + Memory immedoprsrt Immediate immedoprsrt PC PC-relative + Memory

°Fixed instruction format. °simple instructions all 32 bits wide. °very structured. °only three instruction formats. op rs rt rd shamt funct op rs rt 16 bit address op 26 bit address RIJRIJ MIPS’s Instruction Format Fixed:

°Instructions with three register operands. Example: add $t0, $s1, $s2 registers have numbers, $t0=9, $s1=17, $s2=18 °E.g. Arithmetic instructions. °Instruction Format: op rs rt rd shamt funct FORMAT: R-Format

°Consider the load-word and store-word instructions, What kind of operands do they have? New principle: Good design demands a compromise °Introduce a new type of instruction format I-type for data transfer instructions One register operand and one memory operand (address specified by a constant and a register name) °Example: lw $t0, 32($s2) op rs rt 16 bit number FORMAT: I-Format

MIPS’s Opcodes Learn by examples Mainly on those simple ones, such as load, store, add, subtract, move register-register, and, shift, compare equal, compare not equal, branch, jump, call, return;

Basic MIPS Assembly Language

°Assembly provides convenient symbolic representation much easier than writing down numbers e.g., destination first °Machine language is the underlying reality e.g., destination is no longer first °Assembly can provide 'pseudoinstructions' e.g., “move $t0, $t1” exists only in Assembly would be implemented using “add $t0,$t1,$zero” °When considering performance you should count real instructions Assembly Language vs. Machine Language

MIPS Arithmetic °All instructions have 3 operands °Operand order is fixed (destination first) Example: C code: A = B + C MIPS code: add $s0, $s1, $s2 (associated with variables by compiler)

MIPS Arithmetic °Design Principle: simplicity favors regularity. Why? °Of course this complicates some things... C code: A = B + C + D; E = F - A; MIPS code: add $t0, $s1, $s2 add $s0, $t0, $s3 sub $s4, $s5, $s0 °Operands must be registers, only 32 registers provided.

MIPS Load/Store °Only Load and Store instructions can access memory data. °Example: C code: A[8] = h + A[8]; MIPS code: lw $t0, 32($s3) add $t0, $s2, $t0 sw $t0, 32($s3) °Store word has destination last. °Remember arithmetic operands are registers, not memory !

Our First Example °Can we figure out the code? swap(int v[], int k); { int temp; temp = v[k] v[k] = v[k+1]; v[k+1] = temp; } swap: muli $2, $5, 4 add $2, $4, $2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $31 k words = 4 * K bytes Base Address

So Far We’ve Learned: °MIPS — loading words but addressing bytes. — arithmetic on registers only. °InstructionMeaning add $s1, $s2, $s3$s1 = $s2 + $s3 sub $s1, $s2, $s3$s1 = $s2 – $s3 lw $s1, 100($s2)$s1 = Mem[$s2+100] sw $s1, 100($s2)Mem[$s2+100] = $s1

°Decision making instructions alter the control flow, i.e., change the "next" instruction to be executed. °MIPS conditional branch instructions: bne $t0, $t1, Label beq $t0, $t1, Label °Example: if (i==j) h = i + j; bne $s0, $s1, Label add $s3, $s0, $s1 Label:.... MIPS Conditional Control

°MIPS unconditional branch instructions: j label °Example: if (i!=j) beq $s4, $s5, Lab1 h=i+j;add $s3, $s4, $s5 else j Lab2 h=i-j;Lab1:sub $s3, $s4, $s5 Lab2:... MIPS Unconditional Control

So Far: °InstructionMeaning add $s1,$s2,$s3$s1 = $s2 + $s3 sub $s1,$s2,$s3$s1 = $s2 – $s3 lw $s1,100($s2)$s1 = Memory[$s2+100] sw $s1,100($s2)Memory[$s2+100] = $s1 bne $s4,$s5,LNext instr. is at Label if $s4  $s5 beq $s4,$s5,LNext instr. is at Label if $s4 = $s5 j LabelNext instr. is at Label °Formats: op rs rt rdshamtfunct op rs rt 16 bit address op 26 bit address RIJRIJ

°We have: beq, bne, what about Branch-if-less-than? °New instruction: if $s1 < $s2 then $t0 = 1 slt $t0, $s1, $s2 = else $t0 = 0 °Can use this instruction to build "blt $s1,$s2,Label”. slt $t0, $s1, $s2 bne $zero, $t0, Label °can now build general control structures. °Note that the assembler needs a register to do this, — there are policy of use conventions for registers. MIPS Control Flow

°Small constants are used quite frequently (50% of operands). e.g., A = A + 5; B = B + 1; C = C - 18; °Solutions: put 'typical constants' in memory and load them. create hard-wired registers (like $zero) for constants like one. Embed them into the instruction code. For MIPS Instructions, e.g. addi $29, $29, 4 slti $8, $18, 10 andi $29, $29, 6 ori $29, $29, 4 Constants

°We'd like to be able to load a 32 bit constant into a register. °Need to use two instructions, new "load upper immediate" instruction. lui $t0, °Then must get the lower order bits right, i.e., ori $t0, $t0, ori filled with zeros How About Larger Constants?

°Instructions: bne $t4,$t5,Label Next instruction is at Label if $t4  $t5 beq $t4,$t5,Label Next instruction is at Label if $t4 = $t5 j Label Next instruction is at Label °Formats: °How will the branch address be formed? °How does this differ from the address calculation in Load/Store instructions? op rs rt 16 bit address op 26 bit address IJIJ Addresses in Branches and Jumps

°Conditional Branch Instructions: bne $t4,$t5,Label Next instruction is at Label if $t4  $t5 beq $t4,$t5,Label Next instruction is at Label if $t4 = $t5 °Format I: °Could specify a register (like lw and sw) and add it to address use Instruction Address Register (PC = program counter) most branches are local (principle of locality) Address = PC + Shift_Left_2_Bits(16 bit address) Why Shift_Left_2_Bits? What is the value of these two bits? op rs rt 16 bit address I Addresses in Conditional Branches

°Unconditional Jump Instructions: j Label Next instruction is at Label °Format J: °Jump instructions just use high order bits of PC address = Bit of (PC) + Shift_Left_2_Bits (26 bits addr) address boundaries of 256 MB Addresses in Unconditional Jumps op 26 bit address

To Summarize