Computer Organization and Design Addressing Modes Montek Singh Sep 30, 2015 Lecture 7.

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
4.
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
CS/COE0447 Computer Organization & Assembly Language
Branches Two branch instructions:
The University of Adelaide, School of Computer Science
1 Procedure Calls, Linking & Launching Applications Lecture 15 Digital Design and Computer Architecture Harris & Harris Morgan Kaufmann / Elsevier, 2007.
ECE 15B Computer Organization Spring 2010 Dmitri Strukov Lecture 5: Data Transfer Instructions / Control Flow Instructions Partially adapted from Computer.
CS1104 – Computer Organization PART 2: Computer Architecture Lecture 5 MIPS ISA & Assembly Language Programming.
Systems Architecture Lecture 5: MIPS Instruction Set
Chapter 2 Instructions: Language of the Computer
ITCS 3181 Logic and Computer Systems 2015 B. Wilkinson slides3.ppt Modification date: March 16, Addressing Modes The methods used in machine instructions.
1 Today’s lecture  Last lecture we started talking about control flow in MIPS (branches)  Finish up control-flow (branches) in MIPS —if/then —loops —case/switch.
The University of Adelaide, School of Computer Science
L5 – Addressing Modes 1 Comp 411 – Spring /29/08 Operands and Addressing Modes Where is the data? Addresses as data Names and Values Indirection.
ENEE350 Spring07 1 Ankur Srivastava University of Maryland, College Park Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005.”
Computer Structure - The Instruction Set (2) Goal: Implement Functions in Assembly  When executing a procedure (function in C) the program must follow.
RISC Concepts, MIPS ISA and the Mini–MIPS project
Lecture 5 Sept 14 Goals: Chapter 2 continued MIPS assembly language instruction formats translating c into MIPS - examples.
ECE 232 L5 Assembl.1 Adapted from Patterson 97 ©UCBCopyright 1998 Morgan Kaufmann Publishers ECE 232 Hardware Organization and Design Lecture 5 MIPS Assembly.
CS 300 – Lecture 6 Intro to Computer Architecture / Assembly Language Instructions.
MIPS Instruction Set Advantages
9/29: Lecture Topics Memory –Addressing (naming) –Address space sizing Data transfer instructions –load/store on arrays on arrays with variable indices.
1 Branches and Procedure Calls Lecture 14 Digital Design and Computer Architecture Harris & Harris Morgan Kaufmann / Elsevier, 2007.
April 23, 2001Systems Architecture I1 Systems Architecture I (CS ) Lecture 9: Assemblers, Linkers, and Loaders * Jeremy R. Johnson Mon. April 23,
Lecture 4: MIPS Instruction Set
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.
MIPS coding. Review Shifting – Shift Left Logical (sll) – Shift Right Logical (srl) – Moves all of the bits to the left/right and fills in gap with 0’s.
 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.
©These slides may be freely used, distributed, and incorporated into other works. 1 Addressing Modes For speed… we want fixed-size instructions, and they.
Computer Organization and Design Addressing Modes Montek Singh Wed, Sep 19, 2012 Lecture 6.
Chapter 2 CSF 2009 The MIPS Assembly Language. Stored Program Computers Instructions represented in binary, just like data Instructions and data stored.
Computer Organization Instructions Language of The Computer (MIPS) 2.
ECE 15B Computer Organization Spring 2011 Dmitri Strukov Partially adapted from Computer Organization and Design, 4 th edition, Patterson and Hennessy,
Computer Organization CS224 Fall 2012 Lessons 7 and 8.
Chapter 2 — Instructions: Language of the Computer — 1 Conditional Operations Branch to a labeled instruction if a condition is true – Otherwise, continue.
Addressing Modes. Register Addressing Immediate Addressing Base Addressing Indexed Addressing PC-Relative Addressing.
Computer Organization Instructions Language of The Computer (MIPS) 2.
Instruction Set Architecture Chapter 3 – P & H. Introduction Instruction set architecture interface between programmer and CPU Good ISA makes program.
Lecture 16: 10/29/2002CS170 Fall CS170 Computer Organization and Architecture I Ayman Abdel-Hamid Department of Computer Science Old Dominion University.
Control Structures Computer Organization I 1 October 2009 © McQuain, Feng & Ribbens Conditional Control Structure if ( i < j ) goto A; else.
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
MIPS Instruction Set Advantages
Lecture 4: MIPS Instruction Set
These are slides from Comp411
RISC Concepts, MIPS ISA Logic Design Tutorial 8.
The University of Adelaide, School of Computer Science
Instructions - Type and Format
Lecture 4: MIPS Instruction Set
Computer Organization and Design Addressing Modes
Henk Corporaal TUEindhoven 2010
These are slides from Comp411
Operands and Addressing Modes
Instruction encoding The ISA defines Format = Encoding
Computer Organization and Design Assembly & Compilation
Instruction encoding The ISA defines Format = Encoding
COMS 361 Computer Organization
COMS 361 Computer Organization
Instruction encoding The ISA defines Format = Encoding
Instruction encoding The ISA defines Format = Encoding
MIPS e pipelining Tecniche di base.
Addressing Modes Don Porter.
Computer Organization and Design Addressing Modes
Operands and Addressing Modes
9/27: Lecture Topics Memory Data transfer instructions
Conditional Branching (beq)
Presentation transcript:

Computer Organization and Design Addressing Modes Montek Singh Sep 30, 2015 Lecture 7

Operands and Addressing Modes Where is the data? Addresses as data Names and Values Indirection 2

Please Review Review the Lab 5 slide supplement: Pointers, Arrays and Strings in C

Addressing Modes  What are all of the different ways to specify operands? Operands = the variables needed to perform an instruction’s operation Operands = the variables needed to perform an instruction’s operation  Let us look more generally across various CPUs first, then focus on MIPS

MIPS can do these with appropriate choices for Reg and const Common “Addressing Modes” in various CPUs Absolute (Direct): lw $8, 0x1000($0) –Value = Mem[constant] –Use: accessing static data Register-Indirect: lw $8, 0($9) –Value = Mem[Reg[x]] –Use: pointer accesses Displacement: lw $8, 16($9) –Value = Mem[Reg[x] + constant] –Use: access to local variables Indexed: –Value = Mem[Reg[x] + Reg[y]] –Use: array accesses (base+index) Memory indirect: –Value = Mem[Mem[Reg[x]]] –Use: access thru pointer in mem Autoincrement: –Value = Mem[Reg[x]]; Reg[x]++ –Use: sequential pointer accesses Autodecrement: –Value = Reg[X]--; Mem[Reg[x]] –Use: stack operations Scaled: –Value = Mem[Reg[x] + c + d*Reg[y]] –Use: array accesses (base+index) Is the complexity worth the cost? Need a cost/benefit analysis! 5

Revisiting Operands in MIPS  Operands = the variables needed to perform an instruction’s operation  Three types in the MIPS ISA: Register: Register: add $2, $3, $4# operands are the “contents” of a register Immediate: Immediate: addi $2,$2,1# 2nd source operand is part of the instruction Register-Indirect: Register-Indirect: lw $2, 12($28)# source operand is in memory sw $2, 12($28)# destination operand is memory  Simple enough, but is it enough? 6

Relative popularity of address modes  Most common ones are Displacement/Absolute (combined under “Displacement” in graph) Displacement/Absolute (combined under “Displacement” in graph) Register-Indirect Register-Indirect Immediate (i.e., constants within instructions) Immediate (i.e., constants within instructions) From Hennessy & Patterson (graduate architecture book) 7

Absolute (Direct) Addressing  What we want: Contents of a specific memory location, i.e. at a given address Contents of a specific memory location, i.e. at a given address  Example:  Caveat: Sometimes generates a two instruction sequence Sometimes generates a two instruction sequence  If the address for x chosen by the programmer/compiler/assembler is too large to fit within the 16-bit immediate field “C” int x = 10; main() { x = x + 1; } “MIPS Assembly”.data x:.word 10.text main: lw $2,x($0) addi $2,$2,1 sw $2,x($0) lui $1,xhighbits lw $2,xlowbits($1) Allocates space for a single integer (4- bytes) and initializes its value to 10 8 ‘x’ here means address of x lui $1,0x1234 lw $2,0x5678($1) e.g., if x is at address 0x

Absolute (Direct) Addressing: More detail “C” int x = 10; main() { x = x + 1; } “MIPS Assembly”.data x:.word 10.text main: lw $2,x($0) addi $2,$2,1 sw $2,x($0) “After Compilation”.data 0x0100 x:.word 10.text main: lw $2,0x100($0) addi $2,$2,1 sw $2,0x100($0)  Assembler replaces “ x ” by its address e.g., here the data part of the code (.data ) starts at 0x100 e.g., here the data part of the code (.data ) starts at 0x100 x is the first variable, so starts at 0x100 x is the first variable, so starts at 0x100  this mode works in MIPS only if the address fits in 16 bits 9

Indirect Addressing  What we want: The contents at a memory address held in a register The contents at a memory address held in a register  Examples:  Caveats You must make sure that the register contains a valid address (double, word, or short aligned as required) You must make sure that the register contains a valid address (double, word, or short aligned as required) “C” int x = 10; main() { int *y = &x; *y = 2; } “MIPS Assembly”.data x:.word 10.text main: la $2,x addi $3,$0,2 sw $3,0($2) lui $2,xhighbits ori $2,$2,xlowbits “la” is not a real instruction, It’s a convenient pseudoinstruction that constructs a constant via either a 1 instruction or 2 instruction sequence ori $2,$0,x $2 performs the role of y, i.e., it is a pointer to x 10

Note on la pseudoinstruction  la is a pseudoinstruction: la $r, x stands for “load the address of” variable x into register r stands for “load the address of” variable x into register r not an actual MIPS instruction not an actual MIPS instruction but broken down by the assembler into actual instructions but broken down by the assembler into actual instructions  if address of x is small (fits within 16 bits), then a single ori –one could also use a single addiu  if address of x is larger, use the lui + ori combo “MIPS Assembly”.data x:.word 10.text.global main main: la $2,x addi $3,$0,2 sw $3,0($2) lui $2,0x8000 ori $2,$2,0x0010 ori $2,$0,0x100 0x01000x

Displacement Addressing  What we want: contents of a memory location at an offset relative to a register contents of a memory location at an offset relative to a register  the address that is the sum of a constant and a register value  Examples:  Remember: Must multiply (shift) the “index” to be properly aligned Must multiply (shift) the “index” to be properly aligned “C” int a[5]; main() { int i = 3; a[i] = 2; } “MIPS Assembly”.data 0x0100 a:.space 20.text main: addi $2,$0,3 // i in $2 addi $3,$0,2 sll $1,$2,2 // i*4 in $1 sw $3,a($1) Allocates space for a 5 uninitialized integers (20- bytes) 12

Displacement Addressing: 2 nd example  What we want: The contents of a memory location at an offset relative to a register The contents of a memory location at an offset relative to a register  Examples:  Note: offsets to the various fields within a structure are constants known to the assembler/compiler offsets to the various fields within a structure are constants known to the assembler/compiler “C” struct p { int x, y; } main() { p.x = 13; p.y = 12; } “MIPS Assembly”.data p:.space 8.text main: la $1,p addi $2,$0,13 sw $2,0($1) addi $2,$0,12 sw $2,4($1) Allocates space for 2 uninitialized integers (8-bytes) 13

Assembly Coding Templates For common C program fragments

Conditionals: if-else C code: if (expr) { STUFF1 } else { STUFF2 } MIPS assembly: (compute expr in $rx) beq $rx, $0, Lelse (compile STUFF1) beq $0, $0, Lendif Lelse: (compile STUFF2) Lendif: C code: if (expr) { STUFF } MIPS assembly: (compute expr in $rx) beq $rx, $0, Lendif (compile STUFF) Lendif: There are little tricks that come into play when compiling conditional code blocks. For instance, the statement: if (y > 32) { x = x + 1; } compiles to: lw $24, y ori $15, $0, 32 slt $1, $15, $24 beq $1, $0, Lendif lw $24, x addi $24, $24, 1 sw $24, x Lendif: 15

Loops: while MIPS assembly: Lwhile: (compute expr in $rx) beq $rX,$0,Lendw (compile STUFF) beq $0,$0,Lwhile Lendw: C code: while (expr) { STUFF } Alternate MIPS assembly: beq $0,$0,Ltest Lwhile: (compile STUFF) Ltest: (compute expr in $rx) bne $rX,$0,Lwhile Lendw: Compilers spend a lot of time optimizing in and around loops - moving all possible computations outside of loops - unrolling loops to reduce branching overhead - simplifying expressions that depend on “loop variables” 16

Loops: for  Most high-level languages provide loop constructs that establish and update an iteration variable, which is used to control the loop’s behavior MIPS assembly: sum:.word 0x0 data:.word 0x1, 0x2, 0x3, 0x4, 0x5.word 0x6, 0x7, 0x8, 0x9, 0xa add $30,$0,$0 Lfor: lw $24,sum($0) sll $15,$30,2 lw $15,data($15) addu $24,$24,$15 sw $24,sum addi $30,$30,1 slti $24,$30,10 bne $24,$0,Lfor Lendfor: C code: int sum = 0; int data[10] = {1,2,3,4,5,6,7,8,9,10}; int i; for (i=0; i<10; i++) { sum += data[i] } 17