SHARC programming model

Download Report

Transcript SHARC programming model

Instruction sets
Computer architecture taxonomy.
Assembly language.
ARM processor PDA’s, video games, telephones
SHARC  DSP
© 2000 Morgan
Kaufman
Overheads for Computers as
Components
von Neumann architecture
Memory holds data, instructions.
Central processing unit (CPU) fetches
instructions from memory.
Separate CPU and memory distinguishes
programmable computer.
CPU registers help out: program counter
(PC), instruction register (IR), generalpurpose registers, etc.
© 2000 Morgan
Kaufman
Overheads for Computers as
Components
CPU registers
Program counter (PC):
 bit-width represents processor’s address size
 address size M  address space =?
 PC holds next instruction
 Instruction Register (IR):
 holds fetched instruction
Other registers serve as processor’s shortterm memory (index register, accumulator,
status register, …)  fast access time compared to external
memory
© 2000 Morgan
Kaufman
Overheads for Computers as
Components
CPU + memory
Address bus
200
ADD r5,r1,r3
200
PC
Data bus
CPU
Memory
© 2000 Morgan
Kaufman
ADD IR
r5,r1,r3
Overheads for Computers as
Components
Program
Counter
Harvard architecture
address
data memory
data
address
program memory
© 2000 Morgan
Kaufman
data
Overheads for Computers as
Components
PC
CPU
Points to
Program
memoryNot data
memory
von Neumann vs. Harvard
Harvard allows two simultaneous memory
fetches: DATA & PROGRAM
Most DSPs use Harvard architecture for
streaming data:
greater memory bandwidth;
Data and program do not compete for the
same port
(Telephone calls  speech processing  DSP)
© 2000 Morgan
Kaufman
Overheads for Computers as
Components
RISC vs. CISC
Early computers: Complex instruction set
computer (CISC):
many addressing modes;
many operations, e.g., string search, division, block transfer, …
Reduced instruction set computer (RISC):
load/store;
pipelinable instructions.
 Question: Any advantage of using RISC vs
CISC?
© 2000 Morgan
Kaufman
Overheads for Computers as
Components
Instruction set
characteristics
Fixed vs. variable length instructions.
Addressing modes: Immediate, register
addressing (direct: for regular variables, indirect: to
implement pointers), implicit addressing (accumulator),
relative, …
Number of operands.
Types of operands.
© 2000 Morgan
Kaufman
Overheads for Computers as
Components
Programming model
Programming model: Set of registers
visible to the programmer and available
for use.
Some registers are not visible (IR).
© 2000 Morgan
Kaufman
Overheads for Computers as
Components
Selecting a processor:
Achieve a desired speed with certain
power/cost requirements
Clock speed
 Number of instructions per clock cycle is different among
processors
Instructions per second (MIPS)
 Complexity of instructions may be different (for the same
function one my require less instructions)
Dhrystone benchmark: C program to exercise
processor’s integer arithmetic and string handling speed
 VAX 11/780 executes 1757 Dhrystones/sec (1MIPS machine)
 Number of Dhrystones/sec is compiler dependent
© 2000 Morgan
Kaufman
Overheads for Computers as
Components
Assembly language:
Textual description  Binary representation
Basic features:
One instruction per line.
Labels provide names for addresses (usually
in first column).
Instructions often start in later columns.
Columns run to end of line.
© 2000 Morgan
Kaufman
Overheads for Computers as
Components
ARM assembly language
example
label1 ADR
LDR
Address or
ADR
memory
location
LDR
SUB
r4,c
r0,[r4] ; a comment
r4,d
r1,[r4]
r0,r0,r1 ; comment
[c] – [d]
© 2000 Morgan
Kaufman
Overheads for Computers as
Components
SHARC assembly language
Algebraic notation terminated by
semicolon:
DAG1 and DAG2
registers
R1=DM(M0,I0), R2=PM(M8,I8);!comment
label:
R3=R1+R2;
data memory access
© 2000 Morgan
Kaufman
program memory access
Overheads for Computers as
Components
Pseudo-ops
Some assembler directives don’t
correspond directly to instructions:
Define current address.
Reserve storage.
Constants.
NEXT
© 2000 Morgan
Kaufman
ARM assembly
language
Overheads for Computers as
Components