02-General Purpose Processors
02-General Purpose Processors
General-Purpose
Processors
Introduction
General-Purpose Processor
Basic Architecture
Processor
Control unit
Datapath
ALU
Controller
Control
/Status
Datapath is general.
Control unit doesnt
store the algorithm
the algorithm is
programmed into
the memory
Registers
PC
IR
I/O
Memory
Datapath Operations
Load
Processor
Read memory
location into register
Control unit
Datapath
ALU
ALU operation
Controller
Registers
Store
Write register to
memory location
+1
Control
/Status
10
PC
11
IR
I/O
Memory
...
10
11
...
4
Control Unit
Processor
Control unit
Datapath
ALU
Controller
Control
/Status
Registers
PC
IR
R0
I/O
100 load R0, M[500]
101
inc R1, R0
102 store M[501], R1
Memory
500
501
R1
...
10
...
5
Processor
Control unit
Datapath
ALU
Controller
Control
/Status
Registers
PC
100
IR
load R0, M[500]
R0
I/O
100 load R0, M[500]
101
inc R1, R0
102 store M[501], R1
Memory
500
501
R1
...
10
...
6
Processor
Control unit
Determine
what the
instruction
means
Datapath
ALU
Controller
Control
/Status
Registers
PC
100
IR
load R0, M[500]
R0
I/O
100 load R0, M[500]
101
inc R1, R0
102 store M[501], R1
Memory
500
501
R1
...
10
...
7
Processor
Control unit
Datapath
ALU
Controller
Control
/Status
Registers
10
PC
100
IR
load R0, M[500]
R0
I/O
100 load R0, M[500]
101
inc R1, R0
102 store M[501], R1
Memory
500
501
R1
...
10
...
8
Processor
Control unit
Datapath
ALU
Controller
Control
/Status
Registers
10
PC
100
IR
load R0, M[500]
R0
I/O
100 load R0, M[500]
101
inc R1, R0
102 store M[501], R1
Memory
500
501
R1
...
10
...
9
Processor
Control unit
Datapath
ALU
Controller
Control
/Status
Registers
10
PC
100
IR
load R0, M[500]
R0
I/O
100 load R0, M[500]
101
inc R1, R0
102 store M[501], R1
Memory
500
501
R1
...
10
...
10
Instruction Cycles
PC=100
Processor
Fetch
Exec.
Store
results
Control unit
Datapath
ALU
clk
Controller
Control
/Status
Registers
10
PC 100
IR
load R0, M[500]
R0
I/O
100 load R0, M[500]
101
inc R1, R0
102 store M[501], R1
Memory
500
501
R1
...
10
...
11
Instruction Cycles
PC=100
Processor
Fetch
Exec.
Store
results
Control unit
Datapath
ALU
clk
PC=101
Controller
Fetch
Exec.
+1
Control
/Status
Store
results
Registers
clk
10
PC 101
IR
inc R1, R0
R0
I/O
100 load R0, M[500]
101
inc R1, R0
102 store M[501], R1
Memory
500
501
11
R1
...
10
...
12
Instruction Cycles
PC=100
Processor
Fetch
Exec.
Store
results
Control unit
Datapath
ALU
clk
PC=101
Controller
Fetch
Exec.
Control
/Status
Store
results
Registers
clk
10
PC 102
PC=102
Fetch
Exec.
IR
store M[501], R1
Store
results
R0
I/O
100 load R0, M[500]
101
inc R1, R0
102 store M[501], R1
Memory
11
R1
...
500 10
501 11
...
13
Architectural Considerations
N-bit processor
N-bit ALU,
registers, buses,
memory data
interface
Embedded: 8-bit,
16-bit, 32-bit
common
Desktop/servers:
32-bit, even 64
PC size
determines
address space
Processor
Control unit
Datapath
ALU
Controller
Control
/Status
Registers
PC
IR
I/O
Memory
14
Architectural Considerations
Clock frequency
Inverse of clock
period
Must be longer
than longest
register to
register delay in
entire processor
Memory access
is often the
longest
Processor
Control unit
Datapath
ALU
Controller
Control
/Status
Registers
PC
IR
I/O
Memory
15
Pipelining: Increasing
Instruction Throughput
1
Non-pipelined
1
Decode
Fetch ops.
Time
Instruction 1
pipelined
Execute
Store res.
Pipelined
non-pipelined
Fetch-instr.
Time
Pipelined
Time
16
Superscalar Vs VLIM
SuperscalarCPUs use hardware to decide
which operations can run in parallel at runtime
VLIW CPUs use software (the compiler) to
decide which operations can run in parallel in
advance.
f12 = f0 * f4,
f8 = f8 + f12,
f0 = f7-f4;
Because the complexity of instruction
scheduling is pushed off onto the compiler,
complexity of the hardware can be
substantially reduced.
18
Princeton
Processor
Fewer memory
wires
Harvard
Simultaneous
program and
data memory
access
Program
memory
Data memory
Harvard
Memory
(program and data)
Princeton
19
Cache Memory
Memory access may
be slow
Cache is small but
fast memory close
to processor
Holds copy of part of
memory
Hits and misses
Cache
Memory
20
Programmers View
Programmer doesnt need detailed understanding of
architecture
Instead, needs to know what instructions can be executed
21
Assembly-Level Instructions
Instruction 1
opcode
operand1
operand2
Instruction 2
opcode
operand1
operand2
Instruction 3
opcode
operand1
operand2
Instruction 4
opcode
operand1
operand2
...
Instruction Set
Defines the legal set of instructions for that processor
Data transfer: memory/register, register/register, I/O, etc.
Arithmetic/logical: move register through ALU and back
Branches: determine next PC value when not just PC+1
22
Addressing Modes
Addressing
mode
Operand field
Immediate
Data
Register-direct
Register-file
contents
Memory
contents
Register address
Data
Register
indirect
Register address
Memory address
Direct
Memory address
Data
Indirect
Memory address
Memory address
Data
Data
24
Sample Programs
C program
1
2
3
Loop:
int total = 0;
for (int i=10; i!=0; i--)
total += i;
// next instructions...
6
7
Next:
// total = 0
// i = 10
// constant 1
// constant 0
JZ R1, Next;
ADD R0, R1;
SUB R1, R2;
JZ R3, Loop;
// Done if i=0
// total += i
// i-// Jump always
// next instructions...
25
Programmer Considerations
Program and data memory space
Embedded processors often very limited
e.g., 64 Kbytes program, 256 bytes of RAM
(expandable)
I/O
How communicate with external signals?
Interrupts
26
Software Development
Process
Compilers
C File
C File
Compiler
Binary
File
Cross compiler
Asm.
File
Runs on one
processor, but
generates
code for
another
Assembler
Binary
File
Binary
File
Linker
Library
Exec.
File
Implementation Phase
Debugger
Profiler
Verification Phase
Assemblers
Linkers
Debuggers
Profilers
27
Running a Program
If development processor is different than
target, how can we run our compiled code?
Two options:
Download to target processor
Simulate
Simulation
One method: Hardware description language
But slow, not always available
Application-Specific
Instruction-Set Processors
(ASIPs)
General-purpose processors
Still programmable
29
A Common ASIP:
Microcontroller
For embedded control applications
Reading sensors, setting actuators
Mostly dealing with events (bits): data is present, but not
in huge amounts
e.g., VCR, disk drive, digital camera (assuming SPP for
image compression), washing machine, microwave oven
Microcontroller features
On-chip peripherals
Timers, analog-digital converters, serial communication, etc.
Tightly integrated for programmer, typically part of register
space
DSP features
Several instruction execution units
Multiple-accumulate single-cycle instruction,
other instrs.
Efficient vector operations e.g., add two arrays
Vector ALUs, loop buffers, etc.
31
Selecting a Microprocessor
Issues
Technical: speed, power, size, cost
Other: development environment, prior expertise, licensing, etc.
33
Clock speed
Intel PIII
1GHz
IBM
PowerPC
750X
MIPS
R5000
StrongARM
SA-110
550 MHz
Intel
8051
Motorola
68HC811
250 MHz
233 MHz
12 MHz
3 MHz
TI C5416
160 MHz
Lucent
DSP32C
80 MHz
Periph.
2x16 K
L1, 256K
L2, MMX
2x32 K
L1, 256K
L2
2x32 K
2 way set assoc.
None
Bus Width
MIPS
General Purpose Processors
32
~900
Power
Trans.
Price
97W
~7M
$900
32/64
~1300
5W
~7M
$900
32/64
NA
NA
3.6M
NA
32
268
1W
2.1M
NA
Microcontroller
~1
~0.2W
~10K
$7
~.5
~0.1W
~10K
$5
NA
NA
$34
32
NA
NA
$75
40
Sources: Intel, Motorola, MIPS, ARM, TI, and IBM Website/Datasheet; Embedded Systems Programming, Nov. 1998
34
Designing a General
Purpose Processor
Not something an
embedded system
designer normally
would do
FSMD
Declarations:
bit PC[16], IR[16];
bit M[64k][16], RF[16][16];
PC=0;
Fetch
IR=M[PC];
PC=PC+1
Decode
Reset
from states
below
Mov1
RF[rn] = M[dir]
to Fetch
Mov2
M[dir] = RF[rn]
to Fetch
Mov3
M[rn] = RF[rm]
to Fetch
Mov4
RF[rn]= imm
to Fetch
op = 0000
0001
0010
0011
0100
dir IR[7..0]
imm IR[7..0]
rel IR[7..0]
0101
0110
Add
RF[rn] =RF[rn]+RF[rm]
to Fetch
Sub
RF[rn] = RF[rn]-RF[rm]
to Fetch
Jz
35
Architecture of a Simple
Microprocessor
Control unit
Controller
(Next-state and
control
logic; state register)
Connections added
among the components
ports corresponding to
the operations required
by the FSM
Unique identifiers created
for every control signal
To all
input
control
signals
16
PCld
PCinc
PC
IR
From all
output
control
signals
Irld
RFs
2x1 mux
RFwa
RFw
RFwe
RF (16)
RFr1a
RFr1e
RFr2a
RFr2e
RFr1
RFr2
ALUs
PCclr
2
Ms
Datapath
3x1 mux
ALUz
ALU
Mre Mwe
Memory
36
A Simple Microprocessor
Reset
PC=0;
PCclr=1;
Fetch
IR=M[PC];
PC=PC+1
MS=10;
Irld=1;
Mre=1;
PCinc=1;
Decode
from states
below
op = 0000
0001
0010
0011
0100
0101
0110
Mov1
RF[rn] = M[dir]
to Fetch
Mov2
M[dir] = RF[rn]
to Fetch
RFr1a=rn; RFr1e=1;
Ms=01; Mwe=1;
Mov3
M[rn] = RF[rm]
to Fetch
RFr1a=rn; RFr1e=1;
Ms=10; Mwe=1;
RF[rn]= imm
to Fetch
RF[rn] =RF[rn]+RF[rm]
to Fetch
Sub
RF[rn] = RF[rn]-RF[rm]
to Fetch
Jz
PCld= ALUz;
RFrla=rn;
RFrle=1;
Mov4
Add
FSMD
Control unit
To all
input
control
signals
Controller
(Next-state and
control
logic; state
register)
16
PCld
PCinc
PC
IR
From all
output
control
signals
Irld
RFs
2x1 mux
RFwa
RFwe
RFr1a
RFw
RF (16)
RFr1e
RFr2a
RFr2e
RFr1
RFr2
ALUs
PCclr
2
Ms
Datapath
3x1 mux
ALUz
ALU
Mre Mwe
Memory
Chapter Summary
General-purpose processors
Good performance, low NRE, flexible
ASIPs
Microcontrollers, DSPs, network processors, more customized
ASIPs