chapter7 Instruction Set Architecture (ISA)

Download Report

Transcript chapter7 Instruction Set Architecture (ISA)

Chapter7:
Instruction Sets:
Characteristics
Functions
Addressing Modes
Formats
What is an Instruction Set?
The complete collection of instructions
that are understood by a CPU
Machine Code
Binary
Usually represented by assembly
codes
What is the Instruction Set Architecture?
It contains instructions to use and
manipulate programmer-accessible
hardware in a computer.
in terms of
place in a
computer
What is the relationship between the
Instruction Set Architecture and
Assembly / Machine language?
An assembly / machine program is made up
of the instructions in the ISA and makes
use of registries in the ISA.
Here’s how it works
Higher level languages (Java, C++, etc…)
are translated into assembly / machine
language by compilers.
When a user calls the program, the
compiled program is loaded into RAM.
The program then executes, line by line,
until the Operating System takes back
control of the computer.
Elements of an Instruction
Operation code (Op code)
 Do this
Source Operand reference
 To this
Result Operand reference
 Put the answer here
Next Instruction Reference
 When you have done that, do this...
Where have all the Operands Gone?
Main memory (or virtual memory or
cache)
CPU register
I/O device
Instruction Cycle State Diagram
Instruction Representation
In machine code each instruction has a
unique bit pattern
For human consumption (well,
programmers anyway) a symbolic
representation is used
 e.g. ADD, SUB, LOAD
Operands can also be represented in this
way
 ADD A,B
Simple Instruction Format
Instruction Types
Data processing
Data storage (main memory)
Data movement (I/O)
Program flow control
Number of Addresses (a)
3 addresses
 Operand 1, Operand 2, Result
 a = b + c;
 May be a forth - next instruction (usually
implicit)
 Not common
 Needs very long words to hold everything
Number of Addresses (b)
2 addresses




One address doubles as operand and result
a=a+b
Reduces length of instruction
Requires some extra work
– Temporary storage to hold some results
Number of Addresses (c)
1 address
 Implicit second address
 Usually a register (accumulator)
 Common on early machines
Number of Addresses (d)
0 (zero) addresses
 All addresses implicit
 Uses a stack
 e.g. push a
push b
add
pop c
 c=a+b
How Many Addresses
More addresses
 More complex (powerful?) instructions
 More registers
– Inter-register operations are quicker
 Fewer instructions per program
Fewer addresses
 Less complex (powerful?) instructions
 More instructions per program
 Faster fetch/execution of instructions
Design Decisions (1)
Operation repertoire
 How many ops?
 What can they do?
 How complex are they?
Data types
Instruction formats
 Length of op code field
 Number of addresses
Design Decisions (2)
Registers
 Number of CPU registers available
 Which operations can be performed on which
registers?
Addressing modes
RISC v CISC
Types of Operand
Addresses
Numbers
 Integer/floating point
Characters
 ASCII etc.
Logical Data
 Bits or flags
x86 Data Types
8 bit Byte
16 bit word
32 bit double word
64 bit quad word
128 bit double quadword
Addressing is by 8 bit unit
Words do not need to align at evennumbered address
Data accessed across 32 bit bus in units
of double word read at addresses divisible
by 4
Little endian
SMID Data Types
 Integer types
— Interpreted as bit field or integer
 Packed byte and packed byte integer
— Bytes packed into 64-bit quadword or 128-bit double
quadword
 Packed word and packed word integer
— 16-bit words packed into 64-bit quadword or 128-bit double
quadword
 Packed doubleword and packed doubleword integer
— 32-bit doublewords packed into 64-bit quadword or 128-bit
double quadword
 Packed quadword and packed qaudword integer
— Two 64-bit quadwords packed into 128-bit double quadword
 Packed single-precision floating-point and packed doubleprecision floating-point
— Four 32-bit floating-point or two 64-bit floating-point values
packed into a 128-bit double quadword
x86 Numeric Data Formats
ARM Data Types
 8 (byte), 16 (halfword), 32 (word) bits
 Halfword and word accesses should be word aligned
 Nonaligned access alternatives
— Default
–
–
–
–
Treated as truncated
Bits[1:0] treated as zero for word
Bit[0] treated as zero for halfword
Load single word instructions rotate right word aligned data transferred by
non word-aligned address one, two or three bytesAlignment checking
— Data abort signal indicates alignment fault for attempting unaligned
access
— Unaligned access
— Processor uses one or more memory accesses to generate transfer of
adjacent bytes transparently to the programmer
 Unsigned integer interpretation supported for all types
 Twos-complement signed integer interpretation supported for all
types
 Majority of implementations do not provide floating-point
hardware
—
—
—
—
Saves power and area
Floating-point arithmetic implemented in software
Optional floating-point coprocessor
Single- and double-precision IEEE 754 floating point data types
ARM Endian Support
E-bit in system control register
Under program control
Types of Operation
Data Transfer
Arithmetic
Logical
Conversion
I/O
System Control
Transfer of Control
Types of Operation: Data Transfer
Specify
—Source
—Destination
—Amount of data
May be different instructions for different
movements
—e.g. IBM 370
Or one instruction and different addresses
—e.g. VAX
Note: VAX was an ISA developed by Digital Equipment Corporation (DEC) in the
mid-1970s. A 32-bit instruction set computer (CISC) ISA, it was designed to
extend or replace DEC's various Programmed Data Processor (PDP) ISAs.
The VAX name was also used by DEC for a family of computer systems
based on this processor architecture.
Types of Operation: Arithmetic
Add, Subtract, Multiply, Divide
Signed Integer
Floating point ?
May include
—Increment (a++)
—Decrement (a--)
—Negate (-a)
Types of Operation:
Shift and Rotate Operations
Types of Operation: Logical
Bitwise operations
 AND, OR, NOT
Types of Operation: Conversion
E.g. Binary to Decimal
Types of Operation: Input / Output
May be specific instructions
May be done using data movement
instructions (memory mapped)
May be done by a separate controller
(DMA)
Types of Operation: Systems Control
Privileged instructions
CPU needs to be in specific state
—Ring 0 on 80386+
—Kernel mode
For operating systems use
Transfer of Control
Branch
—e.g. branch to x if result is zero
Skip
—e.g. increment and skip if zero
—ISZ Register1
—Branch xxxx
—ADD A
Subroutine call
—c.f. interrupt call
Transfer of Control: Branch Instruction
Nested Procedure Calls
Use of Stack
Stack Frame Growth Using Sample
Procedures P and Q
Byte Order (A portion of chips?)
What order do we read numbers that
occupy more than one byte
e.g. (numbers in hex to make it easy to
read)
12345678 can be stored in 4x8bit
locations as follows
Byte Order (example)
Address
184
185
186
186
Value (1)
12
34
56
78
Value(2)
78
56
34
12
i.e. read top down or bottom up?
Byte Order Names
The problem is called Endian
The system on the left has the least
significant byte in the lowest address and
this is called big-endian
The system on the right has the least
significant byte in the highest address and
this is called little-endian
Example of C Data Structure
Alternative View of Memory Map
Standard…What Standard?
Pentium (x86), VAX are little-endian
IBM 370, Motorola 680x0 (Mac), and most
RISC are big-endian
Internet is big-endian
—Makes writing Internet programs on PC more
awkward!
—WinSock provides htoi and itoh (Host to
Internet & Internet to Host) functions to
convert
Addressing Modes
Immediate
Direct
Indirect
Register
Register Indirect
Displacement (Indexed)
Stack
Addressing Modes: Immediate Addressing
Operand is part of instruction
Operand = address field
e.g. ADD 5
—Add 5 to contents of accumulator
—5 is operand
No memory reference to fetch data
Fast
Limited range
Addressing Modes:
Immediate Addressing Diagram
Instruction
Opcode
Operand
Addressing Modes: Direct Addressing
Address field contains address of operand
Effective address (EA) = address field (A)
e.g. ADD A
—Add contents of cell A to accumulator
—Look in memory at address A for operand
Single memory reference to access data
No additional calculations to work out
effective address
Limited address space
Addressing Modes:
Direct Addressing Diagram
Instruction
Opcode
Address A
Memory
Operand
Addressing Modes:
Indirect Addressing (1)
Memory cell pointed to by address field
contains the address of (pointer to) the
operand
EA = (A)
—Look in A, find address (A) and look there for
operand
 e.g. ADD (A)
—Add contents of cell pointed to by contents of
A to accumulator
Addressing Modes:
Indirect Addressing (2)
Large address space
2n where n = word length
May be nested, multilevel, cascaded
—e.g. EA = (((A)))
– Draw the diagram yourself
Multiple memory accesses to find operand
Hence slower
Addressing Modes:
Indirect Addressing Diagram
Instruction
Opcode
Address A
Memory
Pointer to operand
Operand
Addressing Modes:
Register Addressing (1)
Operand is held in register named in
address filed
EA = R
Limited number of registers
Very small address field needed
—Shorter instructions
—Faster instruction fetch
Addressing Modes:
Register Addressing (2)
No memory access
Very fast execution
Very limited address space
Multiple registers helps performance
—Requires good assembly programming or
compiler writing
—N.B. C programming
– register int a;
c.f. Direct addressing
Addressing Modes:
Register Addressing Diagram
Instruction
Opcode
Register Address R
Registers
Operand
Addressing Modes :
Register Indirect Addressing
C.f. indirect addressing
EA = (R)
Operand is in memory cell pointed to by
contents of register R
Large address space (2n)
One fewer memory access than indirect
addressing
Addressing Modes :
Register Indirect Addressing Diagram
Instruction
Opcode
Register Address R
Memory
Registers
Pointer to Operand
Operand
Addressing Modes:
Displacement Addressing
EA = A + (R)
Address field hold two values
—A = base value
—R = register that holds displacement
—or vice versa
Addressing Modes :
Displacement Addressing Diagram
Instruction
Opcode Register R Address A
Memory
Registers
Pointer to Operand
+
Operand
Addressing Modes :
Relative Addressing
A version of displacement addressing
R = Program counter, PC
EA = A + (PC)
i.e. get operand from A cells from current
location pointed to by PC
c.f locality of reference & cache usage
Addressing Modes:
Base-Register Addressing
A holds displacement
R holds pointer to base address
R may be explicit or implicit
e.g. segment registers in 80x86
Addressing Modes:
Indexed Addressing
A = base
R = displacement
EA = A + R
Good for accessing arrays
—EA = A + R
—R++
Addressing Modes:
Combinations
Postindex
 EA = (A) + (R)
Preindex
 EA = (A+(R))
Addressing Modes:
Stack Addressing
Operand is (implicitly) on top of stack
e.g.
—ADD
Pop top two items from stack
and add
Addressing Modes:
x86 Addressing Modes
 Virtual or effective address is offset into segment
— Starting address plus offset gives linear address
— This goes through page translation if paging enabled
 12 addressing modes available
— Immediate
— Register operand
— Displacement
— Base
— Base with displacement
— Scaled index with displacement
— Base with index and displacement
— Base scaled index with displacement
— Relative
Addressing Modes:
x86 Addressing Mode Calculation
ARM Addressing Modes Load/Store
 Only instructions that reference memory
 Indirectly through base register plus offset
 Offset
— Offset added to or subtracted from base register contents to
form the memory address
 Preindex
— Memory address is formed as for offset addressing
— Memory address also written back to base register
— So base register value incremented or decremented by offset
value
 Postindex
— Memory address is base register value
— Offset added or subtracted
Result written back to base register
 Base register acts as index register for preindex and
postindex addressing
 Offset either immediate value in instruction or another
register
 If register scaled register addressing available
— Offset register value scaled by shift operator
— Instruction specifies shift size
ARM Indexing Methods
ARM Data Processing Instruction Addressing
& Branch Instructions
Data Processing
 Register addressing
– Value in register operands may be scaled using a
shift operator
 Or mixture of register and immediate
addressing
Branch
 Immediate
 Instruction contains 24 bit value
 Shifted 2 bits left
– On word boundary
– Effective range +/-32MB from PC.
ARM Load/Store Multiple Addressing
Load/store subset of general-purpose
registers
16-bit instruction field specifies list of
registers
Sequential range of memory addresses
Increment after, increment before,
decrement after, and decrement before
Base register specifies main memory
address
Incrementing or decrementing starts
before or after first memory access
ARM Load/Store Multiple Addressing Diagram
Instruction Formats
Layout of bits in an instruction
Includes op code
Includes (implicit or explicit) operand(s)
Usually more than one instruction format
in an instruction set
Instruction Length
Affected by and affects:





Memory size
Memory organization
Bus structure
CPU complexity
CPU speed
Trade off between powerful instruction
repertoire and saving space
Allocation of Bits
Number of addressing modes
Number of operands
Register versus memory
Number of register sets
Address range
Address granularity
PDP-8 Instruction Format
PDP-10 Instruction Format
PDP-11 Instruction Format
VAX Instruction Examples
x86 Instruction Format
ARM Instruction Formats






S = For data processing instructions, updates condition codes
S = For load/store multiple instructions, execution restricted to supervisor
mode
P, U, W = distinguish between different types of addressing mode
B = Unsigned byte (B==1) or word (B==0) access
L = For load/store instructions, Load (L==1) or Store (L==0)
L = For branch instructions, is return address stored in link register
ARM Immediate Constants Fig 11.11
Thumb Instruction Set
Re-encoded subset of ARM instruction set
Increases performance in 16-bit or less
data bus
Unconditional (4 bits saved)
Always update conditional flags
—Update flag not used (1 bit saved)
Subset of instructions
—2 bit op code, 3 bit type field (1 bit saved)
—Reduced operand specifications (9 bits saved)
Expanding Thumb ADD Instruction to ARM
Equivalent Fig 11.12
Assembler
Machines store and understand binary
instructions
E.g. N= I + J + K initialize I=2, J=3, K=4
Program starts in location 101
Data starting 201
Code:
Load contents of 201 into AC
Add contents of 202 to AC
Add contents of 203 to AC
Store contents of AC to 204
Tedious and error prone
Improvements
Use hexadecimal rather than binary
—Code as series of lines
– Hex address and memory address
—Need to translate automatically using program
Add symbolic names or mnemonics for
instructions
Three fields per line
—Location address
—Three letter op code
—If memory reference: address
Need more complex translation program
Program in:
Binary
Address
Hexadecimal
Contents
Address
Contents
101
0010
0010
101
2201
101
2201
102
0001
0010
102
1202
102
1202
103
0001
0010
103
1203
103
1203
104
0011
0010
104
3204
104
3204
201
0000
0000
201
0002
201
0002
202
0000
0000
202
0003
202
0003
203
0000
0000
203
0004
203
0004
204
0000
0000
204
0000
204
0000
Symbolic Addresses
First field (address) now symbolic
Memory references in third field now
symbolic
Now have assembly language and need
an assembler to translate
Assembler used for some systems
programming
—Compliers
—I/O routines
Symbolic Program
Address
Instruction
101
LDA
201
102
ADD
202
103
ADD
203
104
STA
204
201
DAT
2
202
DAT
3
203
DAT
4
204
DAT
0
Assembler Program
Label
Operation
Operand
FORMUL
LDA
I
ADD
J
ADD
K
STA
N
I
DATA
2
J
DATA
3
K
DATA
4
N
DATA
0
END OF ISA