SlideShare a Scribd company logo
1 of 44
Embedded Systems Design: A Unified
Hardware/Software Introduction
1
Chapter 3 General-Purpose Processors:
Software
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
2
Introduction
• General-Purpose Processor
– Processor designed for a variety of computation tasks
– Low unit cost, in part because manufacturer spreads NRE
over large numbers of units
• Motorola sold half a billion 68HC05 microcontrollers in 1996 alone
– Carefully designed since higher NRE is acceptable
• Can yield good performance, size and power
– Low NRE cost, short time-to-market/prototype, high
flexibility
• User just writes software; no processor design
– a.k.a. “microprocessor” – “micro” used when they were
implemented on one or a few chips rather than entire rooms
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
3
Basic Architecture
• Control unit and
datapath
– Note similarity to
single-purpose
processor
• Key differences
– Datapath is general
– Control unit doesn’t
store the algorithm –
the algorithm is
“programmed” into the
memory
Processor
Control unit Datapath
ALU
Registers
IR
PC
Controller
Memory
I/O
Control
/Status
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
4
Datapath Operations
• Load
– Read memory location
into register
• ALU operation
– Input certain registers
through ALU, store
back in register
• Store
– Write register to
memory location
Processor
Control unit Datapath
ALU
Registers
IR
PC
Controller
Memory
I/O
Control
/Status
10
...
...
10
+1
11
11
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
5
Control Unit
• Control unit: configures the datapath
operations
– Sequence of desired operations
(“instructions”) stored in memory –
“program”
• Instruction cycle – broken into
several sub-operations, each one
clock cycle, e.g.:
– Fetch: Get next instruction into IR
– Decode: Determine what the
instruction means
– Fetch operands: Move data from
memory to datapath register
– Execute: Move data through the
ALU
– Store results: Write data from
register to memory
Processor
Control unit Datapath
ALU
Registers
IR
PC
Controller
Memory
I/O
Control
/Status
10
...
...
load R0, M[500]
500
501
100
inc R1, R0
101
store M[501], R1
102
R0 R1
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
6
Control Unit Sub-Operations
• Fetch
– Get next instruction
into IR
– PC: program
counter, always
points to next
instruction
– IR: holds the
fetched instruction
Processor
Control unit Datapath
ALU
Registers
IR
PC
Controller
Memory
I/O
Control
/Status
10
...
...
load R0, M[500]
500
501
100
inc R1, R0
101
store M[501], R1
102
R0 R1
100
load R0, M[500]
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
7
Control Unit Sub-Operations
• Decode
– Determine what the
instruction means
Processor
Control unit Datapath
ALU
Registers
IR
PC
Controller
Memory
I/O
Control
/Status
10
...
...
load R0, M[500]
500
501
100
inc R1, R0
101
store M[501], R1
102
R0 R1
100
load R0, M[500]
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
8
Control Unit Sub-Operations
• Fetch operands
– Move data from
memory to datapath
register
Processor
Control unit Datapath
ALU
Registers
IR
PC
Controller
Memory
I/O
Control
/Status
10
...
...
load R0, M[500]
500
501
100
inc R1, R0
101
store M[501], R1
102
R0 R1
100
load R0, M[500]
10
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
9
Control Unit Sub-Operations
• Execute
– Move data through
the ALU
– This particular
instruction does
nothing during this
sub-operation
Processor
Control unit Datapath
ALU
Registers
IR
PC
Controller
Memory
I/O
Control
/Status
10
...
...
load R0, M[500]
500
501
100
inc R1, R0
101
store M[501], R1
102
R0 R1
100
load R0, M[500]
10
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
10
Control Unit Sub-Operations
• Store results
– Write data from
register to memory
– This particular
instruction does
nothing during this
sub-operation
Processor
Control unit Datapath
ALU
Registers
IR
PC
Controller
Memory
I/O
Control
/Status
10
...
...
load R0, M[500]
500
501
100
inc R1, R0
101
store M[501], R1
102
R0 R1
100
load R0, M[500]
10
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
11
Instruction Cycles
Processor
Control unit Datapath
ALU
Registers
IR
PC
Controller
Memory
I/O
Control
/Status
10
...
...
load R0, M[500]
500
501
100
inc R1, R0
101
store M[501], R1
102
R0 R1
PC=100
10
Fetch
ops
Exec. Store
results
clk
Fetch
load R0, M[500]
Decode
100
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
12
Instruction Cycles
Processor
Control unit Datapath
ALU
Registers
IR
PC
Controller
Memory
I/O
Control
/Status
10
...
...
load R0, M[500]
500
501
100
inc R1, R0
101
store M[501], R1
102
R0 R1
10
PC=100
Fetch Decode Fetch
ops
Exec. Store
results
clk
PC=101
inc R1, R0
Fetch Fetch
ops
+1
11
Exec. Store
results
clk
101
Decode
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
13
Instruction Cycles
Processor
Control unit Datapath
ALU
Registers
IR
PC
Controller
Memory
I/O
Control
/Status
10
...
...
load R0, M[500]
500
501
100
inc R1, R0
101
store M[501], R1
102
R0 R1
11
10
PC=100
Fetch Decode Fetch
ops
Exec. Store
results
clk
PC=101
Fetch Decode Fetch
ops
Exec. Store
results
clk
PC=102
store M[501], R1
Fetch Fetch
ops
Exec.
11
Store
results
clk
Decode
102
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
14
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
Registers
IR
PC
Controller
Memory
I/O
Control
/Status
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
15
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
Registers
IR
PC
Controller
Memory
I/O
Control
/Status
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
16
Pipelining: Increasing Instruction Throughput
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
Fetch-instr.
Decode
Fetch ops.
Execute
Store res.
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
Wash
Dry
Time
Non-pipelined Pipelined
Time
Time
Pipelined
pipelined instruction execution
non-pipelined dish cleaning pipelined dish cleaning
Instruction 1
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
17
Superscalar and VLIW Architectures
• Performance can be improved by:
– Faster clock (but there’s a limit)
– Pipelining: slice up instruction into stages, overlap stages
– Multiple ALUs to support more than one instruction stream
• Superscalar
– Scalar: non-vector operations
– Fetches instructions in batches, executes as many as possible
• May require extensive hardware to detect independent instructions
– VLIW: each word in memory has multiple independent instructions
• Relies on the compiler to detect and schedule instructions
• Currently growing in popularity
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
18
Two Memory Architectures
Processor
Program
memory
Data memory
Processor
Memory
(program and data)
Harvard Princeton
• Princeton
– Fewer memory
wires
• Harvard
– Simultaneous
program and data
memory access
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
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
Processor
Memory
Cache
Fast/expensive technology, usually on
the same chip
Slower/cheaper technology, usually on
a different chip
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
20
Programmer’s View
• Programmer doesn’t need detailed understanding of architecture
– Instead, needs to know what instructions can be executed
• Two levels of instructions:
– Assembly level
– Structured languages (C, C++, Java, etc.)
• Most development today done using structured languages
– But, some assembly level programming may still be necessary
– Drivers: portion of program that communicates with and/or controls
(drives) another device
• Often have detailed timing considerations, extensive bit manipulation
• Assembly level may be best for these
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
21
Assembly-Level Instructions
opcode operand1 operand2
opcode operand1 operand2
opcode operand1 operand2
opcode operand1 operand2
...
Instruction 1
Instruction 2
Instruction 3
Instruction 4
• 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
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
22
A Simple (Trivial) Instruction Set
opcode operands
MOV Rn, direct
MOV @Rn, Rm
ADD Rn, Rm
0000 Rn direct
0010 Rn
0100 Rm
Rn
Rn = M(direct)
Rn = Rn + Rm
SUB Rn, Rm 0101 Rm Rn = Rn - Rm
MOV Rn, #immed. 0011 Rn immediate Rn = immediate
Assembly instruct. First byte Second byte Operation
JZ Rn, relative 0110 Rn relative PC = PC+ relative
(only if Rn is 0)
Rn
MOV direct, Rn 0001 Rn direct M(direct) = Rn
Rm M(Rn) = Rm
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
23
Addressing Modes
Data
Immediate
Register-direct
Register
indirect
Direct
Indirect
Data
Operand field
Register address
Register address
Memory address
Memory address
Memory address Data
Data
Memory address
Data
Addressing
mode
Register-file
contents
Memory
contents
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
24
Sample Programs
int total = 0;
for (int i=10; i!=0; i--)
total += i;
// next instructions...
C program
MOV R0, #0; // total = 0
MOV R1, #10; // i = 10
JZ R1, Next; // Done if i=0
ADD R0, R1; // total += i
MOV R2, #1; // constant 1
JZ R3, Loop; // Jump always
Loop:
Next: // next instructions...
SUB R1, R2; // i--
Equivalent assembly program
MOV R3, #0; // constant 0
0
1
2
3
5
6
7
• Try some others
– Handshake: Wait until the value of M[254] is not 0, set M[255] to 1, wait
until M[254] is 0, set M[255] to 0 (assume those locations are ports).
– (Harder) Count the occurrences of zero in an array stored in memory
locations 100 through 199.
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
25
Programmer Considerations
• Program and data memory space
– Embedded processors often very limited
• e.g., 64 Kbytes program, 256 bytes of RAM (expandable)
• Registers: How many are there?
– Only a direct concern for assembly-level programmers
• I/O
– How communicate with external signals?
• Interrupts
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
26
Microprocessor Architecture Overview
• If you are using a particular microprocessor, now is a
good time to review its architecture
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
27
Example: parallel port driver
• Using assembly language programming we can configure a PC
parallel port to perform digital I/O
– write and read to three special registers to accomplish this table provides
list of parallel port connector pins and corresponding register location
– Example : parallel port monitors the input switch and turns the LED
on/off accordingly
PC Parallel port
Pin 13
Pin 2
Switch
LED
LPT Connection Pin I/O Direction Register Address
1 Output 0th bit of register #2
2-9 Output 0th bit of register #2
14,16,17 Output 1,2,3th bit of register #2
10,11,12,13,15 Input 6,7,5,4,3th bit of register #1
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
28
Parallel Port Example
; This program consists of a sub-routine that reads
; the state of the input pin, determining the on/off state
; of our switch and asserts the output pin, turning the LED
; on/off accordingly
.386
CheckPort proc
push ax ; save the content
push dx ; save the content
mov dx, 3BCh + 1 ; base + 1 for register #1
in al, dx ; read register #1
and al, 10h ; mask out all but bit # 4
cmp al, 0 ; is it 0?
jne SwitchOn ; if not, we need to turn the LED on
SwitchOff:
mov dx, 3BCh + 0 ; base + 0 for register #0
in al, dx ; read the current state of the port
and al, f7h ; clear first bit (masking)
out dx, al ; write it out to the port
jmp Done ; we are done
SwitchOn:
mov dx, 3BCh + 0 ; base + 0 for register #0
in al, dx ; read the current state of the port
or al, 01h ; set first bit (masking)
out dx, al ; write it out to the port
Done: pop dx ; restore the content
pop ax ; restore the content
CheckPort endp
extern “C” CheckPort(void); // defined in
// assembly
void main(void) {
while( 1 ) {
CheckPort();
}
}
LPT Connection Pin I/O Direction Register Address
1 Output 0th bit of register #2
2-9 Output 0th bit of register #2
14,16,17 Output 1,2,3th bit of register #2
10,11,12,13,15 Input 6,7,5,4,3th bit of register
#1
PC Parallel port
Pin 13
Pin 2
Switch
LED
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
29
Operating System
• Optional software layer
providing low-level services to
a program (application).
– File management, disk access
– Keyboard/display interfacing
– Scheduling multiple programs for
execution
• Or even just multiple threads from
one program
– Program makes system calls to
the OS
DB file_name “out.txt” -- store file name
MOV R0, 1324 -- system call “open” id
MOV R1, file_name -- address of file-name
INT 34 -- cause a system call
JZ R0, L1 -- if zero -> error
. . . read the file
JMP L2 -- bypass error cond.
L1:
. . . handle the error
L2:
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
30
Development Environment
• Development processor
– The processor on which we write and debug our programs
• Usually a PC
• Target processor
– The processor that the program will run on in our embedded
system
• Often different from the development processor
Development processor Target processor
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
31
Software Development Process
Compiler
Linker
C File C File Asm.
File
Binary
File
Binary
File
Binary
File
Exec.
File
Assemble
r
Library
Implementation Phase
Debugger
Profiler
Verification Phase
• Compilers
– Cross compiler
• Runs on one
processor, but
generates code for
another
• Assemblers
• Linkers
• Debuggers
• Profilers
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
32
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
– Another method: Instruction set simulator (ISS)
• Runs on development processor, but executes instructions of target
processor
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
33
Instruction Set Simulator For A Simple
Processor
#include <stdio.h>
typedef struct {
unsigned char first_byte, second_byte;
} instruction;
instruction program[1024]; //instruction memory
unsigned char memory[256]; //data memory
void run_program(int num_bytes) {
int pc = -1;
unsigned char reg[16], fb, sb;
while( ++pc < (num_bytes / 2) ) {
fb = program[pc].first_byte;
sb = program[pc].second_byte;
switch( fb >> 4 ) {
case 0: reg[fb & 0x0f] = memory[sb]; break;
case 1: memory[sb] = reg[fb & 0x0f]; break;
case 2: memory[reg[fb & 0x0f]] =
reg[sb >> 4]; break;
case 3: reg[fb & 0x0f] = sb; break;
case 4: reg[fb & 0x0f] += reg[sb >> 4]; break;
case 5: reg[fb & 0x0f] -= reg[sb >> 4]; break;
case 6: pc += sb; break;
default: return –1;
}
}
return 0;
}
int main(int argc, char *argv[]) {
FILE* ifs;
If( argc != 2 ||
(ifs = fopen(argv[1], “rb”) == NULL ) {
return –1;
}
if (run_program(fread(program,
sizeof(program) == 0) {
print_memory_contents();
return(0);
}
else return(-1);
}
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
34
Testing and Debugging
Implementation
Phase
Implementation
Phase
Verification
Phase
Verification
Phase
Emulator
Debugger
/ ISS
Programmer
Development processor
(a) (b)
External tools
• ISS
– Gives us control over time –
set breakpoints, look at
register values, set values,
step-by-step execution, ...
– But, doesn’t interact with real
environment
• Download to board
– Use device programmer
– Runs in real environment, but
not controllable
• Compromise: emulator
– Runs in real environment, at
speed or near
– Supports some controllability
from the PC
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
35
Application-Specific Instruction-Set
Processors (ASIPs)
• General-purpose processors
– Sometimes too general to be effective in demanding
application
• e.g., video processing – requires huge video buffers and operations
on large arrays of data, inefficient on a GPP
– But single-purpose processor has high NRE, not
programmable
• ASIPs – targeted to a particular domain
– Contain architectural features specific to that domain
• e.g., embedded control, digital signal processing, video processing,
network processing, telecommunications, etc.
– Still programmable
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
36
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
– On-chip program and data memory
– Direct programmer access to many of the chip’s pins
– Specialized instructions for bit-manipulation and other low-level
operations
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
37
Another Common ASIP: Digital Signal
Processors (DSP)
• For signal processing applications
– Large amounts of digitized data, often streaming
– Data transformations must be applied fast
– e.g., cell-phone voice filter, digital TV, music synthesizer
• 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.
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
38
Trend: Even More Customized ASIPs
• In the past, microprocessors were acquired as chips
• Today, we increasingly acquire a processor as Intellectual
Property (IP)
– e.g., synthesizable VHDL model
• Opportunity to add a custom datapath hardware and a few
custom instructions, or delete a few instructions
– Can have significant performance, power and size impacts
– Problem: need compiler/debugger for customized ASIP
• Remember, most development uses structured languages
• One solution: automatic compiler/debugger generation
– e.g., www.tensillica.com
• Another solution: retargettable compilers
– e.g., www.improvsys.com (customized VLIW architectures)
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
39
Selecting a Microprocessor
• Issues
– Technical: speed, power, size, cost
– Other: development environment, prior expertise, licensing, etc.
• Speed: how evaluate a processor’s speed?
– Clock speed – but instructions per cycle may differ
– Instructions per second – but work per instr. may differ
– Dhrystone: Synthetic benchmark, developed in 1984. Dhrystones/sec.
• MIPS: 1 MIPS = 1757 Dhrystones per second (based on Digital’s VAX
11/780). A.k.a. Dhrystone MIPS. Commonly used today.
– So, 750 MIPS = 750*1757 = 1,317,750 Dhrystones per second
– SPEC: set of more realistic benchmarks, but oriented to desktops
– EEMBC – EDN Embedded Benchmark Consortium, www.eembc.org
• Suites of benchmarks: automotive, consumer electronics, networking, office
automation, telecommunications
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
40
General Purpose Processors
Processor Clock speed Periph. Bus Width MIPS Power Trans. Price
General Purpose Processors
Intel PIII 1GHz 2x16 K
L1, 256K
L2, MMX
32 ~900 97W ~7M $900
IBM
PowerPC
750X
550 MHz 2x32 K
L1, 256K
L2
32/64 ~1300 5W ~7M $900
MIPS
R5000
250 MHz 2x32 K
2 way set assoc.
32/64 NA NA 3.6M NA
StrongARM
SA-110
233 MHz None 32 268 1W 2.1M NA
Microcontroller
Intel
8051
12 MHz 4K ROM, 128 RAM,
32 I/O, Timer, UART
8 ~1 ~0.2W ~10K $7
Motorola
68HC811
3 MHz 4K ROM, 192 RAM,
32 I/O, Timer, WDT,
SPI
8 ~.5 ~0.1W ~10K $5
Digital Signal Processors
TI C5416 160 MHz 128K, SRAM, 3 T1
Ports, DMA, 13
ADC, 9 DAC
16/32 ~600 NA NA $34
Lucent
DSP32C
80 MHz 16K Inst., 2K Data,
Serial Ports, DMA
32 40 NA NA $75
Sources: Intel, Motorola, MIPS, ARM, TI, and IBM Website/Datasheet; Embedded Systems Programming, Nov. 1998
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
41
Designing a General Purpose Processor
• Not something an embedded
system designer normally
would do
– But instructive to see how
simply we can build one top
down
– Remember that real processors
aren’t usually built this way
• Much more optimized, much
more bottom-up design
Declarations:
bit PC[16], IR[16];
bit M[64k][16], RF[16][16];
Aliases:
op IR[15..12]
rn IR[11..8]
rm IR[7..4]
dir IR[7..0]
imm IR[7..0]
rel IR[7..0]
Reset
Fetch
Decode
IR=M[PC];
PC=PC+1
Mov1 RF[rn] = M[dir]
Mov2
Mov3
Mov4
Add
Sub
Jz
0110
0101
0100
0011
0010
0001
op = 0000
M[dir] = RF[rn]
M[rn] = RF[rm]
RF[rn]= imm
RF[rn] =RF[rn]+RF[rm]
RF[rn] = RF[rn]-RF[rm]
PC=(RF[rn]=0) ?rel :PC
to Fetch
to Fetch
to Fetch
to Fetch
to Fetch
to Fetch
to Fetch
PC=0;
from states
below
FSMD
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
42
Architecture of a Simple Microprocessor
• Storage devices for each
declared variable
– register file holds each of the
variables
• Functional units to carry out the
FSMD operations
– One ALU carries out every
required operation
• Connections added among the
components’ ports
corresponding to the operations
required by the FSM
• Unique identifiers created for
every control signal
Datapath
IR
PC
Controller
(Next-state and
control
logic; state register)
Memory
RF (16)
RFwa
RFwe
RFr1a
RFr1e
RFr2a
RFr2e
RFr1 RFr2
RFw
ALU
ALUs
2x1 mux
ALUz
RFs
PCld
PCinc
PCclr
3x1 mux
Ms
Mwe
Mre
To all
input
control
signals
From all
output
control
signals
Control unit
16
Irld
2
1
0
A D
1
0
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
43
A Simple Microprocessor
FSM operations that replace the FSMD
operations after a datapath is created
RFwa=rn; RFwe=1; RFs=01;
Ms=01; Mre=1;
RFr1a=rn; RFr1e=1;
Ms=01; Mwe=1;
RFr1a=rn; RFr1e=1;
Ms=10; Mwe=1;
RFwa=rn; RFwe=1; RFs=10;
RFwa=rn; RFwe=1; RFs=00;
RFr1a=rn; RFr1e=1;
RFr2a=rm; RFr2e=1; ALUs=00
RFwa=rn; RFwe=1; RFs=00;
RFr1a=rn; RFr1e=1;
RFr2a=rm; RFr2e=1; ALUs=01
PCld= ALUz;
RFrla=rn;
RFrle=1;
MS=10;
Irld=1;
Mre=1;
PCinc=1;
PCclr=1;
Reset
Fetch
Decode
IR=M[PC];
PC=PC+1
Mov1 RF[rn] = M[dir]
Mov2
Mov3
Mov4
Add
Sub
Jz
0110
0101
0100
0011
0010
0001
op = 0000
M[dir] = RF[rn]
M[rn] = RF[rm]
RF[rn]= imm
RF[rn] =RF[rn]+RF[rm]
RF[rn] = RF[rn]-RF[rm]
PC=(RF[rn]=0) ?rel :PC
to Fetch
to Fetch
to Fetch
to Fetch
to Fetch
to Fetch
to Fetch
PC=0;
from states
below
FSMD
Datapath
IR
PC
Controller
(Next-state and
control
logic; state
register)
Memory
RF (16)
RFwa
RFwe
RFr1a
RFr1e
RFr2a
RFr2e
RFr1 RFr2
RFw
ALU
ALUs
2x1 mux
ALUz
RFs
PCld
PCinc
PCclr
3x1 mux
Ms
Mwe
Mre
To all
input
contro
l
signals
From all
output
control
signals
Control unit
16
Irld
2
1
0
A D
1
0
You just built a simple microprocessor!
Embedded Systems Design: A Unified
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
44
Chapter Summary
• General-purpose processors
– Good performance, low NRE, flexible
• Controller, datapath, and memory
• Structured languages prevail
– But some assembly level programming still necessary
• Many tools available
– Including instruction-set simulators, and in-circuit emulators
• ASIPs
– Microcontrollers, DSPs, network processors, more customized ASIPs
• Choosing among processors is an important step
• Designing a general-purpose processor is conceptually the same
as designing a single-purpose processor

More Related Content

Similar to UNIT-III ES.ppt

Computer Organisation & Architecture (chapter 1)
Computer Organisation & Architecture (chapter 1) Computer Organisation & Architecture (chapter 1)
Computer Organisation & Architecture (chapter 1) Subhasis Dash
 
Basics of embedded system design
Basics of embedded system designBasics of embedded system design
Basics of embedded system designK Senthil Kumar
 
Introduction to embedded System.pptx
Introduction to embedded System.pptxIntroduction to embedded System.pptx
Introduction to embedded System.pptxPratik Gohel
 
Automated Out-of-Band management with Ansible and Redfish
Automated Out-of-Band management with Ansible and RedfishAutomated Out-of-Band management with Ansible and Redfish
Automated Out-of-Band management with Ansible and RedfishJose De La Rosa
 
EE6602 Embedded System
EE6602 Embedded SystemEE6602 Embedded System
EE6602 Embedded Systemrmkceteee
 
embededsystemfinal1-170130182030 (1).ppt
embededsystemfinal1-170130182030 (1).pptembededsystemfinal1-170130182030 (1).ppt
embededsystemfinal1-170130182030 (1).pptkimavathmukeshnaik
 
Ch2 embedded processors-i
Ch2 embedded processors-iCh2 embedded processors-i
Ch2 embedded processors-iAnkit Shah
 
Visão geral do hardware do servidor System z e Linux on z - Concurso Mainframe
Visão geral do hardware do servidor System z e Linux on z - Concurso MainframeVisão geral do hardware do servidor System z e Linux on z - Concurso Mainframe
Visão geral do hardware do servidor System z e Linux on z - Concurso MainframeAnderson Bassani
 
2e062d07-4a72-4792-af77-5e53147d4c81.pdf
2e062d07-4a72-4792-af77-5e53147d4c81.pdf2e062d07-4a72-4792-af77-5e53147d4c81.pdf
2e062d07-4a72-4792-af77-5e53147d4c81.pdfkimavathmukeshnaik
 
2e062d07-4a72-4792-af77-5e53147d4c81.pdf
2e062d07-4a72-4792-af77-5e53147d4c81.pdf2e062d07-4a72-4792-af77-5e53147d4c81.pdf
2e062d07-4a72-4792-af77-5e53147d4c81.pdfkimavathmukeshnaik
 
SYBSC IT SEM IV EMBEDDED SYSTEMS UNIT I Core of Embedded Systems
SYBSC IT SEM IV EMBEDDED SYSTEMS UNIT I   Core of Embedded SystemsSYBSC IT SEM IV EMBEDDED SYSTEMS UNIT I   Core of Embedded Systems
SYBSC IT SEM IV EMBEDDED SYSTEMS UNIT I Core of Embedded SystemsArti Parab Academics
 
An Entire Concept of Embedded systems
An Entire Concept of Embedded systems An Entire Concept of Embedded systems
An Entire Concept of Embedded systems Prabhakar Captain
 
An entire concept of embedded systems entire ppt
An entire concept of embedded systems entire pptAn entire concept of embedded systems entire ppt
An entire concept of embedded systems entire pptPrabhakar Captain
 

Similar to UNIT-III ES.ppt (20)

Computer Organisation & Architecture (chapter 1)
Computer Organisation & Architecture (chapter 1) Computer Organisation & Architecture (chapter 1)
Computer Organisation & Architecture (chapter 1)
 
5120224.ppt
5120224.ppt5120224.ppt
5120224.ppt
 
Cpu
CpuCpu
Cpu
 
Basics of embedded system design
Basics of embedded system designBasics of embedded system design
Basics of embedded system design
 
Introduction to embedded System.pptx
Introduction to embedded System.pptxIntroduction to embedded System.pptx
Introduction to embedded System.pptx
 
Automated Out-of-Band management with Ansible and Redfish
Automated Out-of-Band management with Ansible and RedfishAutomated Out-of-Band management with Ansible and Redfish
Automated Out-of-Band management with Ansible and Redfish
 
Agnostic Device Drivers
Agnostic Device DriversAgnostic Device Drivers
Agnostic Device Drivers
 
Introduction to Blackfin BF532 DSP
Introduction to Blackfin BF532 DSPIntroduction to Blackfin BF532 DSP
Introduction to Blackfin BF532 DSP
 
EE6602 Embedded System
EE6602 Embedded SystemEE6602 Embedded System
EE6602 Embedded System
 
embededsystemfinal1-170130182030 (1).ppt
embededsystemfinal1-170130182030 (1).pptembededsystemfinal1-170130182030 (1).ppt
embededsystemfinal1-170130182030 (1).ppt
 
Ch2 embedded processors-i
Ch2 embedded processors-iCh2 embedded processors-i
Ch2 embedded processors-i
 
Processors selection
Processors selectionProcessors selection
Processors selection
 
Embedded system
Embedded systemEmbedded system
Embedded system
 
Visão geral do hardware do servidor System z e Linux on z - Concurso Mainframe
Visão geral do hardware do servidor System z e Linux on z - Concurso MainframeVisão geral do hardware do servidor System z e Linux on z - Concurso Mainframe
Visão geral do hardware do servidor System z e Linux on z - Concurso Mainframe
 
2e062d07-4a72-4792-af77-5e53147d4c81.pdf
2e062d07-4a72-4792-af77-5e53147d4c81.pdf2e062d07-4a72-4792-af77-5e53147d4c81.pdf
2e062d07-4a72-4792-af77-5e53147d4c81.pdf
 
2e062d07-4a72-4792-af77-5e53147d4c81.pdf
2e062d07-4a72-4792-af77-5e53147d4c81.pdf2e062d07-4a72-4792-af77-5e53147d4c81.pdf
2e062d07-4a72-4792-af77-5e53147d4c81.pdf
 
SYBSC IT SEM IV EMBEDDED SYSTEMS UNIT I Core of Embedded Systems
SYBSC IT SEM IV EMBEDDED SYSTEMS UNIT I   Core of Embedded SystemsSYBSC IT SEM IV EMBEDDED SYSTEMS UNIT I   Core of Embedded Systems
SYBSC IT SEM IV EMBEDDED SYSTEMS UNIT I Core of Embedded Systems
 
CAO.pptx
CAO.pptxCAO.pptx
CAO.pptx
 
An Entire Concept of Embedded systems
An Entire Concept of Embedded systems An Entire Concept of Embedded systems
An Entire Concept of Embedded systems
 
An entire concept of embedded systems entire ppt
An entire concept of embedded systems entire pptAn entire concept of embedded systems entire ppt
An entire concept of embedded systems entire ppt
 

Recently uploaded

Unit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdfUnit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdfDr Vijay Vishwakarma
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxheathfieldcps1
 
dusjagr & nano talk on open tools for agriculture research and learning
dusjagr & nano talk on open tools for agriculture research and learningdusjagr & nano talk on open tools for agriculture research and learning
dusjagr & nano talk on open tools for agriculture research and learningMarc Dusseiller Dusjagr
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsMebane Rash
 
Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jisc
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...Nguyen Thanh Tu Collection
 
latest AZ-104 Exam Questions and Answers
latest AZ-104 Exam Questions and Answerslatest AZ-104 Exam Questions and Answers
latest AZ-104 Exam Questions and Answersdalebeck957
 
SOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning PresentationSOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning Presentationcamerronhm
 
Details on CBSE Compartment Exam.pptx1111
Details on CBSE Compartment Exam.pptx1111Details on CBSE Compartment Exam.pptx1111
Details on CBSE Compartment Exam.pptx1111GangaMaiya1
 
Single or Multiple melodic lines structure
Single or Multiple melodic lines structureSingle or Multiple melodic lines structure
Single or Multiple melodic lines structuredhanjurrannsibayan2
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Pooja Bhuva
 
FICTIONAL SALESMAN/SALESMAN SNSW 2024.pdf
FICTIONAL SALESMAN/SALESMAN SNSW 2024.pdfFICTIONAL SALESMAN/SALESMAN SNSW 2024.pdf
FICTIONAL SALESMAN/SALESMAN SNSW 2024.pdfPondicherry University
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17Celine George
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxDenish Jangid
 
Spellings Wk 4 and Wk 5 for Grade 4 at CAPS
Spellings Wk 4 and Wk 5 for Grade 4 at CAPSSpellings Wk 4 and Wk 5 for Grade 4 at CAPS
Spellings Wk 4 and Wk 5 for Grade 4 at CAPSAnaAcapella
 
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxHMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxmarlenawright1
 
How to Add a Tool Tip to a Field in Odoo 17
How to Add a Tool Tip to a Field in Odoo 17How to Add a Tool Tip to a Field in Odoo 17
How to Add a Tool Tip to a Field in Odoo 17Celine George
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxJisc
 
21st_Century_Skills_Framework_Final_Presentation_2.pptx
21st_Century_Skills_Framework_Final_Presentation_2.pptx21st_Century_Skills_Framework_Final_Presentation_2.pptx
21st_Century_Skills_Framework_Final_Presentation_2.pptxJoelynRubio1
 

Recently uploaded (20)

Unit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdfUnit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdf
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
dusjagr & nano talk on open tools for agriculture research and learning
dusjagr & nano talk on open tools for agriculture research and learningdusjagr & nano talk on open tools for agriculture research and learning
dusjagr & nano talk on open tools for agriculture research and learning
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
Call Girls in Uttam Nagar (delhi) call me [🔝9953056974🔝] escort service 24X7
Call Girls in  Uttam Nagar (delhi) call me [🔝9953056974🔝] escort service 24X7Call Girls in  Uttam Nagar (delhi) call me [🔝9953056974🔝] escort service 24X7
Call Girls in Uttam Nagar (delhi) call me [🔝9953056974🔝] escort service 24X7
 
Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
 
latest AZ-104 Exam Questions and Answers
latest AZ-104 Exam Questions and Answerslatest AZ-104 Exam Questions and Answers
latest AZ-104 Exam Questions and Answers
 
SOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning PresentationSOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning Presentation
 
Details on CBSE Compartment Exam.pptx1111
Details on CBSE Compartment Exam.pptx1111Details on CBSE Compartment Exam.pptx1111
Details on CBSE Compartment Exam.pptx1111
 
Single or Multiple melodic lines structure
Single or Multiple melodic lines structureSingle or Multiple melodic lines structure
Single or Multiple melodic lines structure
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
 
FICTIONAL SALESMAN/SALESMAN SNSW 2024.pdf
FICTIONAL SALESMAN/SALESMAN SNSW 2024.pdfFICTIONAL SALESMAN/SALESMAN SNSW 2024.pdf
FICTIONAL SALESMAN/SALESMAN SNSW 2024.pdf
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
 
Spellings Wk 4 and Wk 5 for Grade 4 at CAPS
Spellings Wk 4 and Wk 5 for Grade 4 at CAPSSpellings Wk 4 and Wk 5 for Grade 4 at CAPS
Spellings Wk 4 and Wk 5 for Grade 4 at CAPS
 
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxHMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
 
How to Add a Tool Tip to a Field in Odoo 17
How to Add a Tool Tip to a Field in Odoo 17How to Add a Tool Tip to a Field in Odoo 17
How to Add a Tool Tip to a Field in Odoo 17
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptx
 
21st_Century_Skills_Framework_Final_Presentation_2.pptx
21st_Century_Skills_Framework_Final_Presentation_2.pptx21st_Century_Skills_Framework_Final_Presentation_2.pptx
21st_Century_Skills_Framework_Final_Presentation_2.pptx
 

UNIT-III ES.ppt

  • 1. Embedded Systems Design: A Unified Hardware/Software Introduction 1 Chapter 3 General-Purpose Processors: Software
  • 2. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 2 Introduction • General-Purpose Processor – Processor designed for a variety of computation tasks – Low unit cost, in part because manufacturer spreads NRE over large numbers of units • Motorola sold half a billion 68HC05 microcontrollers in 1996 alone – Carefully designed since higher NRE is acceptable • Can yield good performance, size and power – Low NRE cost, short time-to-market/prototype, high flexibility • User just writes software; no processor design – a.k.a. “microprocessor” – “micro” used when they were implemented on one or a few chips rather than entire rooms
  • 3. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 3 Basic Architecture • Control unit and datapath – Note similarity to single-purpose processor • Key differences – Datapath is general – Control unit doesn’t store the algorithm – the algorithm is “programmed” into the memory Processor Control unit Datapath ALU Registers IR PC Controller Memory I/O Control /Status
  • 4. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 4 Datapath Operations • Load – Read memory location into register • ALU operation – Input certain registers through ALU, store back in register • Store – Write register to memory location Processor Control unit Datapath ALU Registers IR PC Controller Memory I/O Control /Status 10 ... ... 10 +1 11 11
  • 5. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 5 Control Unit • Control unit: configures the datapath operations – Sequence of desired operations (“instructions”) stored in memory – “program” • Instruction cycle – broken into several sub-operations, each one clock cycle, e.g.: – Fetch: Get next instruction into IR – Decode: Determine what the instruction means – Fetch operands: Move data from memory to datapath register – Execute: Move data through the ALU – Store results: Write data from register to memory Processor Control unit Datapath ALU Registers IR PC Controller Memory I/O Control /Status 10 ... ... load R0, M[500] 500 501 100 inc R1, R0 101 store M[501], R1 102 R0 R1
  • 6. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 6 Control Unit Sub-Operations • Fetch – Get next instruction into IR – PC: program counter, always points to next instruction – IR: holds the fetched instruction Processor Control unit Datapath ALU Registers IR PC Controller Memory I/O Control /Status 10 ... ... load R0, M[500] 500 501 100 inc R1, R0 101 store M[501], R1 102 R0 R1 100 load R0, M[500]
  • 7. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 7 Control Unit Sub-Operations • Decode – Determine what the instruction means Processor Control unit Datapath ALU Registers IR PC Controller Memory I/O Control /Status 10 ... ... load R0, M[500] 500 501 100 inc R1, R0 101 store M[501], R1 102 R0 R1 100 load R0, M[500]
  • 8. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 8 Control Unit Sub-Operations • Fetch operands – Move data from memory to datapath register Processor Control unit Datapath ALU Registers IR PC Controller Memory I/O Control /Status 10 ... ... load R0, M[500] 500 501 100 inc R1, R0 101 store M[501], R1 102 R0 R1 100 load R0, M[500] 10
  • 9. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 9 Control Unit Sub-Operations • Execute – Move data through the ALU – This particular instruction does nothing during this sub-operation Processor Control unit Datapath ALU Registers IR PC Controller Memory I/O Control /Status 10 ... ... load R0, M[500] 500 501 100 inc R1, R0 101 store M[501], R1 102 R0 R1 100 load R0, M[500] 10
  • 10. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 10 Control Unit Sub-Operations • Store results – Write data from register to memory – This particular instruction does nothing during this sub-operation Processor Control unit Datapath ALU Registers IR PC Controller Memory I/O Control /Status 10 ... ... load R0, M[500] 500 501 100 inc R1, R0 101 store M[501], R1 102 R0 R1 100 load R0, M[500] 10
  • 11. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 11 Instruction Cycles Processor Control unit Datapath ALU Registers IR PC Controller Memory I/O Control /Status 10 ... ... load R0, M[500] 500 501 100 inc R1, R0 101 store M[501], R1 102 R0 R1 PC=100 10 Fetch ops Exec. Store results clk Fetch load R0, M[500] Decode 100
  • 12. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 12 Instruction Cycles Processor Control unit Datapath ALU Registers IR PC Controller Memory I/O Control /Status 10 ... ... load R0, M[500] 500 501 100 inc R1, R0 101 store M[501], R1 102 R0 R1 10 PC=100 Fetch Decode Fetch ops Exec. Store results clk PC=101 inc R1, R0 Fetch Fetch ops +1 11 Exec. Store results clk 101 Decode
  • 13. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 13 Instruction Cycles Processor Control unit Datapath ALU Registers IR PC Controller Memory I/O Control /Status 10 ... ... load R0, M[500] 500 501 100 inc R1, R0 101 store M[501], R1 102 R0 R1 11 10 PC=100 Fetch Decode Fetch ops Exec. Store results clk PC=101 Fetch Decode Fetch ops Exec. Store results clk PC=102 store M[501], R1 Fetch Fetch ops Exec. 11 Store results clk Decode 102
  • 14. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 14 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 Registers IR PC Controller Memory I/O Control /Status
  • 15. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 15 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 Registers IR PC Controller Memory I/O Control /Status
  • 16. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 16 Pipelining: Increasing Instruction Throughput 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 Fetch-instr. Decode Fetch ops. Execute Store res. 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 Wash Dry Time Non-pipelined Pipelined Time Time Pipelined pipelined instruction execution non-pipelined dish cleaning pipelined dish cleaning Instruction 1
  • 17. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 17 Superscalar and VLIW Architectures • Performance can be improved by: – Faster clock (but there’s a limit) – Pipelining: slice up instruction into stages, overlap stages – Multiple ALUs to support more than one instruction stream • Superscalar – Scalar: non-vector operations – Fetches instructions in batches, executes as many as possible • May require extensive hardware to detect independent instructions – VLIW: each word in memory has multiple independent instructions • Relies on the compiler to detect and schedule instructions • Currently growing in popularity
  • 18. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 18 Two Memory Architectures Processor Program memory Data memory Processor Memory (program and data) Harvard Princeton • Princeton – Fewer memory wires • Harvard – Simultaneous program and data memory access
  • 19. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 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 Processor Memory Cache Fast/expensive technology, usually on the same chip Slower/cheaper technology, usually on a different chip
  • 20. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 20 Programmer’s View • Programmer doesn’t need detailed understanding of architecture – Instead, needs to know what instructions can be executed • Two levels of instructions: – Assembly level – Structured languages (C, C++, Java, etc.) • Most development today done using structured languages – But, some assembly level programming may still be necessary – Drivers: portion of program that communicates with and/or controls (drives) another device • Often have detailed timing considerations, extensive bit manipulation • Assembly level may be best for these
  • 21. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 21 Assembly-Level Instructions opcode operand1 operand2 opcode operand1 operand2 opcode operand1 operand2 opcode operand1 operand2 ... Instruction 1 Instruction 2 Instruction 3 Instruction 4 • 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. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 22 A Simple (Trivial) Instruction Set opcode operands MOV Rn, direct MOV @Rn, Rm ADD Rn, Rm 0000 Rn direct 0010 Rn 0100 Rm Rn Rn = M(direct) Rn = Rn + Rm SUB Rn, Rm 0101 Rm Rn = Rn - Rm MOV Rn, #immed. 0011 Rn immediate Rn = immediate Assembly instruct. First byte Second byte Operation JZ Rn, relative 0110 Rn relative PC = PC+ relative (only if Rn is 0) Rn MOV direct, Rn 0001 Rn direct M(direct) = Rn Rm M(Rn) = Rm
  • 23. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 23 Addressing Modes Data Immediate Register-direct Register indirect Direct Indirect Data Operand field Register address Register address Memory address Memory address Memory address Data Data Memory address Data Addressing mode Register-file contents Memory contents
  • 24. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 24 Sample Programs int total = 0; for (int i=10; i!=0; i--) total += i; // next instructions... C program MOV R0, #0; // total = 0 MOV R1, #10; // i = 10 JZ R1, Next; // Done if i=0 ADD R0, R1; // total += i MOV R2, #1; // constant 1 JZ R3, Loop; // Jump always Loop: Next: // next instructions... SUB R1, R2; // i-- Equivalent assembly program MOV R3, #0; // constant 0 0 1 2 3 5 6 7 • Try some others – Handshake: Wait until the value of M[254] is not 0, set M[255] to 1, wait until M[254] is 0, set M[255] to 0 (assume those locations are ports). – (Harder) Count the occurrences of zero in an array stored in memory locations 100 through 199.
  • 25. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 25 Programmer Considerations • Program and data memory space – Embedded processors often very limited • e.g., 64 Kbytes program, 256 bytes of RAM (expandable) • Registers: How many are there? – Only a direct concern for assembly-level programmers • I/O – How communicate with external signals? • Interrupts
  • 26. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 26 Microprocessor Architecture Overview • If you are using a particular microprocessor, now is a good time to review its architecture
  • 27. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 27 Example: parallel port driver • Using assembly language programming we can configure a PC parallel port to perform digital I/O – write and read to three special registers to accomplish this table provides list of parallel port connector pins and corresponding register location – Example : parallel port monitors the input switch and turns the LED on/off accordingly PC Parallel port Pin 13 Pin 2 Switch LED LPT Connection Pin I/O Direction Register Address 1 Output 0th bit of register #2 2-9 Output 0th bit of register #2 14,16,17 Output 1,2,3th bit of register #2 10,11,12,13,15 Input 6,7,5,4,3th bit of register #1
  • 28. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 28 Parallel Port Example ; This program consists of a sub-routine that reads ; the state of the input pin, determining the on/off state ; of our switch and asserts the output pin, turning the LED ; on/off accordingly .386 CheckPort proc push ax ; save the content push dx ; save the content mov dx, 3BCh + 1 ; base + 1 for register #1 in al, dx ; read register #1 and al, 10h ; mask out all but bit # 4 cmp al, 0 ; is it 0? jne SwitchOn ; if not, we need to turn the LED on SwitchOff: mov dx, 3BCh + 0 ; base + 0 for register #0 in al, dx ; read the current state of the port and al, f7h ; clear first bit (masking) out dx, al ; write it out to the port jmp Done ; we are done SwitchOn: mov dx, 3BCh + 0 ; base + 0 for register #0 in al, dx ; read the current state of the port or al, 01h ; set first bit (masking) out dx, al ; write it out to the port Done: pop dx ; restore the content pop ax ; restore the content CheckPort endp extern “C” CheckPort(void); // defined in // assembly void main(void) { while( 1 ) { CheckPort(); } } LPT Connection Pin I/O Direction Register Address 1 Output 0th bit of register #2 2-9 Output 0th bit of register #2 14,16,17 Output 1,2,3th bit of register #2 10,11,12,13,15 Input 6,7,5,4,3th bit of register #1 PC Parallel port Pin 13 Pin 2 Switch LED
  • 29. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 29 Operating System • Optional software layer providing low-level services to a program (application). – File management, disk access – Keyboard/display interfacing – Scheduling multiple programs for execution • Or even just multiple threads from one program – Program makes system calls to the OS DB file_name “out.txt” -- store file name MOV R0, 1324 -- system call “open” id MOV R1, file_name -- address of file-name INT 34 -- cause a system call JZ R0, L1 -- if zero -> error . . . read the file JMP L2 -- bypass error cond. L1: . . . handle the error L2:
  • 30. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 30 Development Environment • Development processor – The processor on which we write and debug our programs • Usually a PC • Target processor – The processor that the program will run on in our embedded system • Often different from the development processor Development processor Target processor
  • 31. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 31 Software Development Process Compiler Linker C File C File Asm. File Binary File Binary File Binary File Exec. File Assemble r Library Implementation Phase Debugger Profiler Verification Phase • Compilers – Cross compiler • Runs on one processor, but generates code for another • Assemblers • Linkers • Debuggers • Profilers
  • 32. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 32 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 – Another method: Instruction set simulator (ISS) • Runs on development processor, but executes instructions of target processor
  • 33. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 33 Instruction Set Simulator For A Simple Processor #include <stdio.h> typedef struct { unsigned char first_byte, second_byte; } instruction; instruction program[1024]; //instruction memory unsigned char memory[256]; //data memory void run_program(int num_bytes) { int pc = -1; unsigned char reg[16], fb, sb; while( ++pc < (num_bytes / 2) ) { fb = program[pc].first_byte; sb = program[pc].second_byte; switch( fb >> 4 ) { case 0: reg[fb & 0x0f] = memory[sb]; break; case 1: memory[sb] = reg[fb & 0x0f]; break; case 2: memory[reg[fb & 0x0f]] = reg[sb >> 4]; break; case 3: reg[fb & 0x0f] = sb; break; case 4: reg[fb & 0x0f] += reg[sb >> 4]; break; case 5: reg[fb & 0x0f] -= reg[sb >> 4]; break; case 6: pc += sb; break; default: return –1; } } return 0; } int main(int argc, char *argv[]) { FILE* ifs; If( argc != 2 || (ifs = fopen(argv[1], “rb”) == NULL ) { return –1; } if (run_program(fread(program, sizeof(program) == 0) { print_memory_contents(); return(0); } else return(-1); }
  • 34. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 34 Testing and Debugging Implementation Phase Implementation Phase Verification Phase Verification Phase Emulator Debugger / ISS Programmer Development processor (a) (b) External tools • ISS – Gives us control over time – set breakpoints, look at register values, set values, step-by-step execution, ... – But, doesn’t interact with real environment • Download to board – Use device programmer – Runs in real environment, but not controllable • Compromise: emulator – Runs in real environment, at speed or near – Supports some controllability from the PC
  • 35. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 35 Application-Specific Instruction-Set Processors (ASIPs) • General-purpose processors – Sometimes too general to be effective in demanding application • e.g., video processing – requires huge video buffers and operations on large arrays of data, inefficient on a GPP – But single-purpose processor has high NRE, not programmable • ASIPs – targeted to a particular domain – Contain architectural features specific to that domain • e.g., embedded control, digital signal processing, video processing, network processing, telecommunications, etc. – Still programmable
  • 36. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 36 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 – On-chip program and data memory – Direct programmer access to many of the chip’s pins – Specialized instructions for bit-manipulation and other low-level operations
  • 37. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 37 Another Common ASIP: Digital Signal Processors (DSP) • For signal processing applications – Large amounts of digitized data, often streaming – Data transformations must be applied fast – e.g., cell-phone voice filter, digital TV, music synthesizer • 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.
  • 38. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 38 Trend: Even More Customized ASIPs • In the past, microprocessors were acquired as chips • Today, we increasingly acquire a processor as Intellectual Property (IP) – e.g., synthesizable VHDL model • Opportunity to add a custom datapath hardware and a few custom instructions, or delete a few instructions – Can have significant performance, power and size impacts – Problem: need compiler/debugger for customized ASIP • Remember, most development uses structured languages • One solution: automatic compiler/debugger generation – e.g., www.tensillica.com • Another solution: retargettable compilers – e.g., www.improvsys.com (customized VLIW architectures)
  • 39. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 39 Selecting a Microprocessor • Issues – Technical: speed, power, size, cost – Other: development environment, prior expertise, licensing, etc. • Speed: how evaluate a processor’s speed? – Clock speed – but instructions per cycle may differ – Instructions per second – but work per instr. may differ – Dhrystone: Synthetic benchmark, developed in 1984. Dhrystones/sec. • MIPS: 1 MIPS = 1757 Dhrystones per second (based on Digital’s VAX 11/780). A.k.a. Dhrystone MIPS. Commonly used today. – So, 750 MIPS = 750*1757 = 1,317,750 Dhrystones per second – SPEC: set of more realistic benchmarks, but oriented to desktops – EEMBC – EDN Embedded Benchmark Consortium, www.eembc.org • Suites of benchmarks: automotive, consumer electronics, networking, office automation, telecommunications
  • 40. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 40 General Purpose Processors Processor Clock speed Periph. Bus Width MIPS Power Trans. Price General Purpose Processors Intel PIII 1GHz 2x16 K L1, 256K L2, MMX 32 ~900 97W ~7M $900 IBM PowerPC 750X 550 MHz 2x32 K L1, 256K L2 32/64 ~1300 5W ~7M $900 MIPS R5000 250 MHz 2x32 K 2 way set assoc. 32/64 NA NA 3.6M NA StrongARM SA-110 233 MHz None 32 268 1W 2.1M NA Microcontroller Intel 8051 12 MHz 4K ROM, 128 RAM, 32 I/O, Timer, UART 8 ~1 ~0.2W ~10K $7 Motorola 68HC811 3 MHz 4K ROM, 192 RAM, 32 I/O, Timer, WDT, SPI 8 ~.5 ~0.1W ~10K $5 Digital Signal Processors TI C5416 160 MHz 128K, SRAM, 3 T1 Ports, DMA, 13 ADC, 9 DAC 16/32 ~600 NA NA $34 Lucent DSP32C 80 MHz 16K Inst., 2K Data, Serial Ports, DMA 32 40 NA NA $75 Sources: Intel, Motorola, MIPS, ARM, TI, and IBM Website/Datasheet; Embedded Systems Programming, Nov. 1998
  • 41. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 41 Designing a General Purpose Processor • Not something an embedded system designer normally would do – But instructive to see how simply we can build one top down – Remember that real processors aren’t usually built this way • Much more optimized, much more bottom-up design Declarations: bit PC[16], IR[16]; bit M[64k][16], RF[16][16]; Aliases: op IR[15..12] rn IR[11..8] rm IR[7..4] dir IR[7..0] imm IR[7..0] rel IR[7..0] Reset Fetch Decode IR=M[PC]; PC=PC+1 Mov1 RF[rn] = M[dir] Mov2 Mov3 Mov4 Add Sub Jz 0110 0101 0100 0011 0010 0001 op = 0000 M[dir] = RF[rn] M[rn] = RF[rm] RF[rn]= imm RF[rn] =RF[rn]+RF[rm] RF[rn] = RF[rn]-RF[rm] PC=(RF[rn]=0) ?rel :PC to Fetch to Fetch to Fetch to Fetch to Fetch to Fetch to Fetch PC=0; from states below FSMD
  • 42. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 42 Architecture of a Simple Microprocessor • Storage devices for each declared variable – register file holds each of the variables • Functional units to carry out the FSMD operations – One ALU carries out every required operation • Connections added among the components’ ports corresponding to the operations required by the FSM • Unique identifiers created for every control signal Datapath IR PC Controller (Next-state and control logic; state register) Memory RF (16) RFwa RFwe RFr1a RFr1e RFr2a RFr2e RFr1 RFr2 RFw ALU ALUs 2x1 mux ALUz RFs PCld PCinc PCclr 3x1 mux Ms Mwe Mre To all input control signals From all output control signals Control unit 16 Irld 2 1 0 A D 1 0
  • 43. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 43 A Simple Microprocessor FSM operations that replace the FSMD operations after a datapath is created RFwa=rn; RFwe=1; RFs=01; Ms=01; Mre=1; RFr1a=rn; RFr1e=1; Ms=01; Mwe=1; RFr1a=rn; RFr1e=1; Ms=10; Mwe=1; RFwa=rn; RFwe=1; RFs=10; RFwa=rn; RFwe=1; RFs=00; RFr1a=rn; RFr1e=1; RFr2a=rm; RFr2e=1; ALUs=00 RFwa=rn; RFwe=1; RFs=00; RFr1a=rn; RFr1e=1; RFr2a=rm; RFr2e=1; ALUs=01 PCld= ALUz; RFrla=rn; RFrle=1; MS=10; Irld=1; Mre=1; PCinc=1; PCclr=1; Reset Fetch Decode IR=M[PC]; PC=PC+1 Mov1 RF[rn] = M[dir] Mov2 Mov3 Mov4 Add Sub Jz 0110 0101 0100 0011 0010 0001 op = 0000 M[dir] = RF[rn] M[rn] = RF[rm] RF[rn]= imm RF[rn] =RF[rn]+RF[rm] RF[rn] = RF[rn]-RF[rm] PC=(RF[rn]=0) ?rel :PC to Fetch to Fetch to Fetch to Fetch to Fetch to Fetch to Fetch PC=0; from states below FSMD Datapath IR PC Controller (Next-state and control logic; state register) Memory RF (16) RFwa RFwe RFr1a RFr1e RFr2a RFr2e RFr1 RFr2 RFw ALU ALUs 2x1 mux ALUz RFs PCld PCinc PCclr 3x1 mux Ms Mwe Mre To all input contro l signals From all output control signals Control unit 16 Irld 2 1 0 A D 1 0 You just built a simple microprocessor!
  • 44. Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis 44 Chapter Summary • General-purpose processors – Good performance, low NRE, flexible • Controller, datapath, and memory • Structured languages prevail – But some assembly level programming still necessary • Many tools available – Including instruction-set simulators, and in-circuit emulators • ASIPs – Microcontrollers, DSPs, network processors, more customized ASIPs • Choosing among processors is an important step • Designing a general-purpose processor is conceptually the same as designing a single-purpose processor