Transcript ISA

Instruction Set Architecture
1
CHAPTER 6
4/10/2016
Topics for Discussion
2
 Instruction set architecture






Stored program computer
Interface between software and hardware
Instructions
Design principles
Instructions, registers, and memory
Simple instructions types and formats
4/10/2016
Where do you go from here (CSE241):
Computer Organization
3
 Is the study of major components of a modern digital
computer, their organization and assembly, and the
architecture and inner workings of these
components.
 It also deals with design principles for a good
performance.
4/10/2016
Mother Board
4
 Contains packages of integrated circuit chips (IC
chips) including a processor, cache (several),
memory (DRAM), connections for IO devices
(networks, disks)
4/10/2016
Central Processing Unit (CPU)
5
 Example: Intel 80386 80486Pentium
 Main components of a CPU are datapath and control
unit
 Datapath is the component of the processor that
performs (arithmetic) operations
 Control is the component of the processor that
commands the datapath, memory , IO device according
to instruction of the program
 Cache provides but fast memory that acts as a buffer for
slower /larger memory outside the chip.
4/10/2016
Instruction set Architecture
6
 An important abstraction between hardware and




software.
Lets discuss this concept.
Computer operation is historically called an
instruction.
Instructions stored similar to data in a memory give
rise to an important foundational concept called the
stored program computer.
Lets look at MIPS: Microprocessor without
Interlocked Pipelined Stages
4/10/2016
C to MIPS instruction
7
Consider a
C language
statement:
f = (g + h) – ( i + j)
Compile
• add t0, g, h
• add t1,i, j
• sub f,t0,t1
Design principle 1: simplicity favors regularity
In the above example: all instructions have 3 operands
4/10/2016
Register set
8
 Where do the data get stored in the CPU?
 Named locations called registers? How many?
Typical small compared to memory sizes.
 Registers: MIPS-32 has 32 register
 Denoted by s0, s1, etc. $s0, $s5
 Temporary registers are denoted by $t0, $t1
4/10/2016
C to MIPS instruction (Take 2 with registers)
9
Consider a C
language
statement:
f = (g + h) – ( i + j)
Compile
•add $t0, $s1, $s2
•add $t1,$s3,$s4
•sub $s0,$t0,$t1
Design principle 2: Smaller is faster
Memory available as registers is 32 in number
4/10/2016
Memory Operations
10
 Data and instructions are stored in memory outside





the CPU.
Data is loaded from memory and stored in memory.
Load word (lw)
Store word (sw)
32 resgiters
230 words or 232 addressable locations or bytes
4/10/2016
C language to Memory instructions
11
g = h + A[8]
Compile
• lw $t0, 32($s3)
• add $s1, $s2, $t0
• sw $t0,48($s3)
Base register concept: base register is $s3 and
Offset of 32 for 8 words and offset of 48 for 12 words
4/10/2016
Instruction Types
12
add and sub
lw and sw
Now lets see how we can deal with a constant value data.
Consider C language statement: x = x +4
Too complex:
lw $t0, AddrConst($s1)
add $s3,$s3,$t0
 Instead how about:
addi $s3,$s3,4





 Design principle 3: Make the common case fast.
Example “addi” instead of add an constant from memory.
4/10/2016
Instruction format –R type
13
Op
•6
bits
RS
Rt
Rd
Shamt
• 5 bits
• 5 bits
• 5 bits
• 5 bits
funct
•6
bits
Can we use the same format for addi and add? Then we will
Have only 11 bit constant
4/10/2016
Instruction format – I type
14
Op
• 6 bits
Rs
• 5 bits
Rt
• 5 bits
Constant or
address
• 16 bits
Design principle 4: good design demands good compromise;
Keep instruction length same needing different formats ; I and R type are
examples
4/10/2016
Logical operations
 Shift left


Example: sll $t2,$so,4
Reg t2 = $so << 4
 Shift right


Example: srl $t2,$so,4
Reg t2 = $so >> 4
 Bit-wise AND


Example: and $t0,$t1, $t2
Reg t0 = reg t1 & reg t2
 Bit-wise OR


Example: or $t0,$t1,$t2
Reg $t0 = $t1 | $t2
Instructions for Selection (if..else)
 If (i == j) then f = g + h; else f = g – h;
bne
add
j
else: sub
done:
$s3,$s4, else
$s0,$s1,$s2
done
$s0,$s1,$s2
Instructions for Iteration (while)
 while (save[i] == k)

i = i + 1;
Let i be in reg $s3
Let k be in reg $s5
Let $t1 have the address of Save array element
Loop: sll $t1,$s3,2
add $t1,$t1$s6
lw $t0,0($t1)
bne $t0,$s5,Exit
addi $s3,$s3,1
j
Loop
Compiling C procedures
int leaf_example (int g, int h, int i, int j)
{ int f;
f = (g + h) – (i + j);
return f;
}
How do you pass the parameters? How does compiler
transport the parameters?
Passing Parameters/arguments
Special registers for arguments: a0, a1, a2, a3
Save temp register on the stack
Perform operations
And return value
Restore values stored on the stack
Jump back to return address
Summary
20
 MIPS operands
 MIPS memory
 MIPS Assembly language
 MIPS instructions type and formats
 And of course, the four design principles.
4/10/2016