MIPS arithmetic n n All instructions have 3

  • Slides: 21
Download presentation
MIPS arithmetic n n All instructions have 3 operands Operand order is fixed (destination

MIPS arithmetic n n All instructions have 3 operands Operand order is fixed (destination first) Example: C code: A = B + C MIPS code: add $s 0, $s 1, $s 2 (associated with variables by compiler) Ó 1998 Morgan Kaufmann Publishers

MIPS arithmetic n n Design Principle: simplicity favours regularity. Of course this complicates some

MIPS arithmetic n n Design Principle: simplicity favours regularity. Of course this complicates some things. . . C code: Why? A = B + C + D; E = F - A; MIPS code: add $t 0, $s 1, $s 2 add $s 0, $t 0, $s 3 sub $s 4, $s 5, $s 0 n n Operands must be registers, only 32 registers provided Design Principle: smaller is faster. Why? Ó 1998 Morgan Kaufmann Publishers

Registers vs. Memory n n n Arithmetic instructions operands must be registers, — only

Registers vs. Memory n n n Arithmetic instructions operands must be registers, — only 32 registers provided Compiler associates variables with registers What about programs with lots of variables Control Input Memory Datapath Processor Output I/O Ó 1998 Morgan Kaufmann Publishers

Instructions n n Load and store instructions Example: C code: A[8] = h +

Instructions n n Load and store instructions Example: C code: A[8] = h + A[8]; MIPS code: lw $t 0, 32($s 3) add $t 0, $s 2, $t 0 sw $t 0, 32($s 3) n n Store word has destination last Remember arithmetic operands are registers, not memory! Ó 1998 Morgan Kaufmann Publishers

Our First Example n Can we figure out the code? swap(int v[], int k);

Our First Example n Can we figure out the code? swap(int v[], int k); { int temp; temp = 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 Ó 1998 Morgan Kaufmann Publishers

Machine Language n Instructions, like registers and words of data, are also 32 bits

Machine Language n Instructions, like registers and words of data, are also 32 bits long n n n Example: add $t 0, $s 1, $s 2 registers have numbers, $t 0=9, $s 1=17, $s 2=18 Instruction Format: 000000 10001 10010 01000 00000 op n rs rt rd 100000 shamt funct Can you guess what the field names stand for? Ó 1998 Morgan Kaufmann Publishers

Machine Language n Consider the load-word and store-word instructions, n n n Introduce a

Machine Language n Consider the load-word and store-word instructions, n n n Introduce a new type of instruction format n n What would the regularity principle have us do? New principle: Good design demands a compromise I-type for data transfer instructions other format was R-type for register Example: lw $t 0, 32($s 2) 35 18 9 op rs rt 32 16 bit number Where's the compromise? Ó 1998 Morgan Kaufmann Publishers

Control n Decision making instructions n n n alter the control flow, i. e.

Control n Decision making instructions n n n alter the control flow, i. e. , change the "next" instruction to be executed MIPS conditional branch instructions: bne $t 0, $t 1, Label beq $t 0, $t 1, Label n Example: if (i==j) h = i + j; bne $s 0, $s 1, Label add $s 3, $s 0, $s 1 Label: . . Ó 1998 Morgan Kaufmann Publishers

Control n n MIPS unconditional branch instructions: j label Example: if (i!=j) h=i+j; else

Control n n MIPS unconditional branch instructions: j label Example: if (i!=j) h=i+j; else h=i-j; n beq $s 4, $s 5, Lab 1 add $s 3, $s 4, $s 5 j Lab 2 Lab 1: sub $s 3, $s 4, $s 5 Lab 2: . . . Can you build a simple for loop? Ó 1998 Morgan Kaufmann Publishers

Control Flow n n We have: beq, bne, what about Branch-if-less-than? New instruction: if

Control Flow n n We have: beq, bne, what about Branch-if-less-than? New instruction: if $s 1 < $s 2 then $t 0 = 1 slt $t 0, $s 1, $s 2 else $t 0 = 0 Can use this instruction to build "blt $s 1, $s 2, 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 2 Ó 1998 Morgan Kaufmann Publishers

Policy of Use Conventions Ó 1998 Morgan Kaufmann Publishers

Policy of Use Conventions Ó 1998 Morgan Kaufmann Publishers

Constants n n Small constants are used quite frequently (50% of operands) e. g.

Constants n n Small constants are used quite frequently (50% of operands) e. g. , A = A + 5; B = B + 1; C = C - 18; Solutions? Why not? n n n put 'typical constants' in memory and load them. create hard-wired registers (like $zero) for constants like one. MIPS Instructions: addi $29, 4 slti $8, $18, 10 andi $29, 6 ori $29, 4 n How do we make this work? Ó 1998 Morgan Kaufmann Publishers

How about larger constants? n n We'd like to be able to load a

How about larger constants? n n We'd like to be able to load a 32 bit constant into a register Must use two instructions, new "load upper immediate" instruction lui $t 0, 1010101010101010 n ori filled with zeros 00000000 Then must get the lower order bits right, i. e. , ori $t 0, 1010101010101010 0000000000000000 1010101010101010 Ó 1998 Morgan Kaufmann Publishers

Assembly Language vs. Machine Language n Assembly provides convenient symbolic representation n Machine language

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

Addresses in Branches n Instructions: bne $t 4, $t 5, Label beq $t 4,

Addresses in Branches n Instructions: bne $t 4, $t 5, Label beq $t 4, $t 5, Label Formats: op n rs rt 16 bit address Could specify a register (like lw and sw) and add it to address n n n Next instruction is at Label if $t 4°$t 5 Next instruction is at Label if $t 4=$t 5 use Instruction Address Register (PC = program counter) most branches are local (principle of locality) Jump instructions just use high order bits of PC n address boundaries of 256 MB Ó 1998 Morgan Kaufmann Publishers

To summarize:

To summarize:

Ó 1998 Morgan Kaufmann Publishers

Ó 1998 Morgan Kaufmann Publishers

Alternative Architectures n n Design alternative: n goal is to reduce number of instructions

Alternative Architectures n n Design alternative: n goal is to reduce number of instructions executed n provide more powerful operations n danger is a slower cycle time and/or a higher CPI Sometimes referred to as “RISC vs. CISC” n n n virtually all new instruction sets since 1982 have been RISC VAX: minimize code size, make assembly language easy instructions from 1 to 54 bytes long! We’ll look at Power. PC and 80 x 86 Ó 1998 Morgan Kaufmann Publishers

Power. PC n Indexed addressing n n n #$t 1=Memory[$a 0+$s 3] Update addressing

Power. PC n Indexed addressing n n n #$t 1=Memory[$a 0+$s 3] Update addressing n n example: lw $t 1, $a 0+$s 3 What do we have to do in MIPS? update a register as part of load (for marching through arrays) example: lwu $t 0, 4($s 3) #$t 0=Memory[$s 3+4]; $s 3=$s 3+4 What do we have to do in MIPS? Others: n n load multiple/store multiple a special counter register “bc Loop” decrement counter, if not 0 goto loop Ó 1998 Morgan Kaufmann Publishers

80 x 86 n n n 1978: The Intel 8086 is announced (16 bit

80 x 86 n n n 1978: The Intel 8086 is announced (16 bit architecture) 1980: The 8087 floating point coprocessor is added 1982: The 80286 increases address space to 24 bits, +instructions 1985: The 80386 extends to 32 bits, new addressing modes 1989 -1995: The 80486, Pentium Pro add a few instructions (mostly designed for higher performance) 1997: MMX is added “This history illustrates the impact of the “golden handcuffs” of compatibility “adding new features as someone might add clothing to a packed bag” Ó 1998 Morgan Kaufmann Publishers “an architecture that is difficult to explain and impossible to love”

A dominant architecture: 80 x 86 n n See your textbook for a more

A dominant architecture: 80 x 86 n n See your textbook for a more detailed description Complexity: n n n Instructions from 1 to 17 bytes long one operand must act as both a source and destination one operand can come from memory complex addressing modes e. g. , “base or scaled index with 8 or 32 bit displacement” Saving grace: n n the most frequently used instructions are not too difficult to build compilers avoid the portions of the architecture that are slow “what the 80 x 86 lacks in style is made up in quantity, making it beautiful from the right perspective” Ó 1998 Morgan Kaufmann Publishers