IT 251 Computer Organization and Architecture More MIPS Control Instructions Chia-Chi Teng.

Slides:



Advertisements
Similar presentations
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.
Advertisements

Lecturer PSOE Dan Garcia
CENG 311 Decisions in C/Assembly Language
4.
Lecture 5: MIPS Instruction Set
CS/COE0447 Computer Organization & Assembly Language
Branches Two branch instructions:
©UCB CS 161 Lecture 4 Prof. L.N. Bhuyan
ECE 15B Computer Organization Spring 2010 Dmitri Strukov Lecture 5: Data Transfer Instructions / Control Flow Instructions Partially adapted from Computer.
cs61c L5 Decisions 9/13/00 1 CS61C - Machine Structures Lecture 5 - Decisions in C/Assembly Language September 13, 2000 David Patterson
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 6 – Introduction to MIPS Data Transfer & Decisions I Pieter Abbeel’s recent.
CS61C L8 Introduction to MIPS : Decisions II & Procedures I (1) Pearce, Summer 2010 © UCB inst.eecs.berkeley.edu/~cs61c UCB CS61C.
CS61C L09 Introduction to MIPS: Data Transfer & Decisions I (1) Garcia © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS61CL L03 MIPS I: Registers, Memory, Decisions (1) Huddleston, Summer 2009 © UCB Jeremy Huddleston inst.eecs.berkeley.edu/~cs61c CS61CL : Machine Structures.
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 – Introduction to MIPS Decisions II In what may be regarded as the most.
CS61C L11 Introduction to MIPS: Procedures I (1) Garcia © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C.
CS61C L10 Introduction to MIPS : Decisions II (1) Garcia, Fall 2006 © UCB Lecturer SOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS 61C L09 Introduction to MIPS: Data Transfer & Decisions I (1) Garcia, Fall 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 10 Introduction to MIPS : Decisions II People are wondering what the next.
Lecture 4: Loads, Logic, Loops. Review Memory is byte-addressable, but lw and sw access one word at a time. These instructions transfer the contents of.
ENEE350 Spring07 1 Ankur Srivastava University of Maryland, College Park Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005.”
CS61C L7 MIPS Decisions (1) Garcia, Fall 2005 © UCB Lecturer PSOE, new dad Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C.
CS61C L10 Introduction to MIPS : Decisions II (1) Garcia, Spring 2007 © UCB Lecturer SOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
Decisions in C/Assembly Language Jen-Chang Liu, Spring 2006 Adapted from
CS61C L7 MIPS: Load & Store, Decisions (1) Chae, Summer 2008 © UCB Albert Chae, Instructor inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture.
CS61C L7 MIPS Decisions (1) Beamer, Summer 2007 © UCB Scott Beamer, Instructor inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture #7 – MIPS.
CS61C L11 Introduction to MIPS : Procedures I (1) Garcia, Spring 2007 © UCB Lecturer SOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS 61C L07 MIPS Memory (1) A Carle, Summer 2005 © UCB inst.eecs.berkeley.edu/~cs61c/su05 CS61C : Machine Structures Lecture #7: MIPS Memory & Decisions.
EEM 486 EEM 486: Computer Architecture Lecture 2 MIPS Instruction Set Architecture.
1 CS 430 Computer Architecture Clap if you like pizza! Pointless Poll.
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 07 Introduction to MIPS : Decisions II Researchers at Microsoft and UW.
CS61C L8 Decisions(2), Procedures(1) (1) Chae, Summer 2008 © UCB Albert Chae, Instructor inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture.
Data Transfer & Decisions I (1) Fall 2005 Lecture 3: MIPS Assembly language Decisions I.
CS61C L11 Introduction to MIPS : Procedures I (1) Garcia, Fall 2006 © UCB Lecturer SOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
Lecture 5: Procedures. Function call book-keeping in C main() { int i,j,k,m;... i = mult(j,k);... m = mult(i,i);... } /* really dumb mult function */
CS61C L09 Introduction to MIPS : Data Transfer and Decisions (1) Garcia, Spring 2007 © UCB Lecturer SOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS 61C L10 Introduction to MIPS: Decisions II (1) Garcia, Fall 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS 61C L10 Introduction to MIPS: Decisions II (1) Garcia, Spring 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
More decisions and logic (1) Fall 2010 Lecture 4: Loads, Logic, Loops.
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 11 – Introduction to MIPS Procedures I Internet2, a non-profit advanced.
9/29: Lecture Topics Memory –Addressing (naming) –Address space sizing Data transfer instructions –load/store on arrays on arrays with variable indices.
Intel has developed a new technique to generate random numbers that is suitable for integration directly into the CPU! This circuit can turn out 2.4 billion.
CS 61C: Great Ideas in Computer Architecture Lecture 5: Intro to Assembly Language, MIPS Intro Instructor: Sagar Karandikar
CS 61C: Great Ideas in Computer Architecture Intro to Assembly Language, MIPS Intro Instructors: Krste Asanovic & Vladimir Stojanovic
IT253: Computer Organization Lecture 5: Assembly Language and an Introduction to MIPS Tonga Institute of Higher Education.
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
11/02/2009CA&O Lecture 03 by Engr. Umbreen Sabir Computer Architecture & Organization Instructions: Language of Computer Engr. Umbreen Sabir Computer Engineering.
Lecture 4: MIPS Instruction Set
Chapter 2 Decision-Making Instructions (Instructions: Language of the Computer Part V)
Computer Organization Instructions Language of The Computer (MIPS) 2.
Inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 07 Introduction to MIPS : Decisions II Guest Lecturer Alan Christopher.
Chapter 2 — Instructions: Language of the Computer — 1 Conditional Operations Branch to a labeled instruction if a condition is true – Otherwise, continue.
IT 251 Computer Organization and Architecture Introduction to MIPS Procedures Chia-Chi Teng.
CS 61C L11 Introduction to MIPS: Procedures I (1) Garcia, Fall 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CDA 3101 Spring 2016 Introduction to Computer Organization
1. CS 61C: Great Ideas in Computer Architecture More MIPS, MIPS Functions 2 Instructors: Vladimir Stojanovic & Nicholas Weaver
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
MIPS: Load & Store, Decisions. Memory management review Three 3’s Picking blocks off free list  best-, first-, next-fit Attempts to solve external fragmentation.
Decisions (cont), Procedures. Review Memory transfer: lw, sw, lb, sb A Decision allows us to decide what to execute at run-time rather than compile-time.
CS 102 Computer Architecture Lecture 4: Intro to Assembly Language, MIPS Intro Instructor: Sören Schwertfeger School of Information.
Rocky K. C. Chang Version 0.3, 14 September 2017
CS2100 Computer Organisation
RISC Concepts, MIPS ISA Logic Design Tutorial 8.
ECE232: Hardware Organization and Design
Part II Instruction-Set Architecture
Instructions and Conditional Execution
3.
Reduced Instruction Set Computer (RISC)
Pointless Poll Clap if you like pizza!.
Presentation transcript:

IT 251 Computer Organization and Architecture More MIPS Control Instructions Chia-Chi Teng

Review Memory is byte-addressable, but lw and sw access one word at a time. A pointer (used by lw and sw ) is just a memory address, so we can add to it or subtract from it (using offset). A Decision allows us to decide what to execute at run-time rather than compile-time. C Decisions are made using conditional statements within if, while, do while, for. MIPS Decision making instructions are the conditional branches: beq and bne. New Instructions: lw, sw, beq, bne, j

Last time: Loading, Storing bytes 1/2 In addition to word data transfers ( lw, sw ), MIPS has byte data transfers: – load byte: lb – store byte: sb same format as lw, sw E.g., lb $s0, 3($s1) – contents of memory location with address = sum of “3” + contents of register s1 is copied to the low byte position of register s0.

x Loading, Storing bytes 2/2 What do with other 24 bits in the 32 bit register? – lb : sign extends to fill upper 24 bits byte loaded …is copied to “sign-extend” This bit xxxx xxxx xxxx zzz zzzz  Normally don’t want to sign extend chars  MIPS instruction that doesn’t sign extend when loading bytes:  load byte unsigned: lbu

Overflow in Arithmetic (1/2) Reminder: Overflow occurs when there is a mistake in arithmetic due to the limited precision in computers. Example (4-bit unsigned numbers): – But we don’t have room for 5-bit solution, so the solution would be 0010, which is +2, and wrong.

Overflow in Arithmetic (2/2) Some languages detect overflow (Ada), some don’t (C) MIPS solution is 2 kinds of arithmetic instructs: – These cause overflow to be detected add ( add ) add immediate ( addi ) subtract ( sub ) – These do not cause overflow detection add unsigned ( addu ) add immediate unsigned ( addiu ) subtract unsigned ( subu ) Compiler selects appropriate arithmetic

Two “Logic” Instructions Here are 2 more new instructions Shift Left: sll $s1,$s2,2 #s1=s2<<2 – Store in $s1 the value from $s2 shifted 2 bits to the left, inserting 0’s on right; << in C – Before: hex two – After: hex two – What arithmetic effect does shift left have? Shift Right: srl is opposite shift; >> in C

Loops in C/Assembly (1/3) Simple loop in C; A[] is an array of int s do {g= g + A[i]; i= i + j; } while (i != h); Rewrite this as: Loop:g = g + A[i]; i = i + j; if (i != h) goto Loop; Use this mapping: g, h, i, j, base of A $s1, $s2, $s3, $s4, $s5

Loops in C/Assembly (2/3) Final compiled MIPS code: Loop: sll $t1,$s3,2 # $t1= 4*I addu $t1,$t1,$s5 # $t1=addr A+4i lw $t1,0($t1) # $t1=A[i] addu $s1,$s1,$t1 # g=g+A[i] addu $s3,$s3,$s4 # i=i+j bne $s3,$s2,Loop # gotoLoop if i!=h Original code: Loop:g = g + A[i]; i = i + j; if (i != h) goto Loop;

Loops in C/Assembly (3/3) There are three types of loops in C: – while – do… while – for Each can be rewritten as either of the other two, so the method used in the previous example can be applied to these loops as well. Key Concept: Though there are multiple ways of writing a loop in MIPS, the key to decision-making is conditional branch

Administrivia HW3 due Monday! – Learn jal, jr Quiz2 next week. How am I doing?

Inequalities in MIPS (1/4) Until now, we’ve only tested equalities ( == and != in C). General programs need to test as well. Introduce MIPS Inequality Instruction: – “Set on Less Than” – Syntax: slt reg1,reg2,reg3 – Meaning: if (reg2 < reg3) reg1 = 1; else reg1 = 0; “set” means “change to 1”, “reset” means “change to 0”. reg1 = (reg2 < reg3); Same thing…

Inequalities in MIPS (2/4) How do we use this? Compile by hand: if (g<h) goto Less; # g:$s0, h:$s1 Answer: compiled MIPS code… slt $t0,$s0,$s1 # $t0 = 1 if g<h bne $t0,$0,Less # goto Less if $t0!=0 # (if (g<h)) Less: Register $0 always contains the value 0, so bne and beq often use it for comparison after an slt instruction. A slt  bne pair means if(… < …)goto…

Inequalities in MIPS (3/4) Now we can implement, ≤ and ≥ ? We could add 3 more instructions, but: – MIPS goal: Simpler is Better Can we implement ≤ in one or more instructions using just slt and branches? – What about > ? – What about ≥ ?

Inequalities in MIPS (4/4) # a:$s0, b:$s1 slt $t0,$s0,$s1 # $t0 = 1 ifa = b # do if a<b skip: Two independent variations possible: Use slt $t0,$s1,$s0 instead of slt $t0,$s0,$s1 Use bne instead of beq

Immediates in Inequalities There is also an immediate version of slt to test against constants: slti – Helpful in for loops if (g>= 1) goto Loop Loop:... slti $t0,$s0,1 # $t0=1 if $s0<1 (g<1) beq $t0,$0,Loop # goto Loop if $t0==0 # (if (g>=1)) C MIPSMIPS An slt  beq pair means if(… ≥ …)goto…

What about unsigned numbers? Also unsigned inequality instructions: sltu, sltiu …which sets result to 1 or 0 depending on unsigned comparisons What is value of $t0, $t1 ? ( $s0 = FFFF FFFA hex, $s1 = 0000 FFFA hex ) slt $t0, $s0, $s1 sltu $t1, $s0, $s1

MIPS Signed vs. Unsigned – diff meanings! MIPS terms Signed/Unsigned “overloaded”: – Do/Don't sign extend (lb, lbu) – Do/Don't overflow (add, addi, sub, mult, div) (addu, addiu, subu, multu, divu) – Do signed/unsigned compare (slt, slti/sltu, sltiu)

Peer Instruction What C code properly fills in the blank in loop below? do {i--;} while(__); Loop: addi $s0,$s0,-1 # i = i - 1 slti $t0,$s1,2 beq $t0,$0,Loop slt $t0,$s1,$s0 bne $t0,$0,Loop 0: j 2 && j 2 || j < i ($s0=i, $s1=j)

Peer Instruction What C code properly fills in the blank in loop below? do {i--;} while(__); Loop: addi $s0,$s0,-1 # i = i - 1 slti $t0,$s1,2 # $t0 = (j< 2) beq $t0,$0,Loop # goto Loop if $t0 == 0 slt $t0,$s1,$s0 # $t0 = (j<i) bne $t0,$0,Loop # goto Loop if $t0 != 0 0: j 2 && j 2 || j < i ($s0=i, $s1=j)

“And in conclusion…” To help the conditional branches make decisions concerning inequalities, we introduce: “Set on Less Than” called slt, slti, sltu, sltiu One can store and load (signed and unsigned) bytes as well as words with lb, lbu Unsigned add/sub don’t cause overflow New MIPS Instructions: sll, srl, lb, lbu slt, slti, sltu, sltiu addu, addiu, subu

BONUS SLIDES

Preview: Instruction Support for Functions (1/2) Syntax for jal (jump and link) is same as for j (jump): jallabel It’s actually Link & Jump – Step 1 (link): Save address of next instruction into register $ra Why next instruction? Why not current one? – Step 2 (jump): Jump to the given label

Preview: Instruction Support for Functions (2/2) Syntax for jr (jump register): jr register Instead of providing a label to jump to, the jr instruction provides a register which contains an address to jump to. Very useful for function calls: – jal stores return address in register ($ra ) – jr $ra jumps back to that address

Preview: Function Call Book Keeping Registers play a major role in keeping track of information for function calls. Register conventions: – Return address $ra – Arguments $a0, $a1, $a2, $a3 – Return value $v0, $v1 – Local variables $s0, $s1, …, $s7 The stack is also used; more later.

Example: The C Switch Statement (1/3) Choose among four alternatives depending on whether k has the value 0, 1, 2 or 3. Compile this C code: switch (k) { case 0: f=i+j; break; /* k=0 */ case 1: f=g+h; break; /* k=1 */ case 2: f=g–h; break; /* k=2 */ case 3: f=i–j; break; /* k=3 */ }

Example: The C Switch Statement (2/3) This is complicated, so simplify. Rewrite it as a chain of if-else statements, which we already know how to compile: if(k==0) f=i+j; else if(k==1) f=g+h; else if(k==2) f=g–h; else if(k==3) f=i–j; Use this mapping: f:$s0, g:$s1, h:$s2, i:$s3, j:$s4, k:$s5

Example: The C Switch Statement (3/3) Final compiled MIPS code: bne$s5,$0,L1# branch k!=0 add $s0,$s3,$s4 #k==0 so f=i+j jExit # end of case so Exit L1:addi $t0,$s5,-1 # $t0=k-1 bne $t0,$0,L2# branch k!=1 add $s0,$s1,$s2#k==1 so f=g+h jExit # end of case so Exit L2:addi $t0,$s5,-2 # $t0=k-2 bne $t0,$0,L3# branch k!=2 sub $s0,$s1,$s2 #k==2 so f=g-h jExit# end of case so Exit L3:addi $t0,$s5,-3 # $t0=k-3 bne $t0,$0,Exit# branch k!=3 sub $s0,$s3,$s4 #k==3 so f=i-j Exit: