Vous êtes sur la page 1sur 44

Processeurs de Traitement Numrique du Signal (DSP)

Processeurs de Traitement Numrique du Signal (DSP)

Olivier Sentieys IRISA Universit de Rennes I ENSSAT Lannion sentieys@irisa.fr http://www.irisa.fr/R2D2

I. II. III. IV.

Introduction Architectures MAC/Harvard Evolutions des DSP Flot de dveloppement

Merci Daniel Mnard pour son support

Exemples dapplications
I. Introduction
Tlphonie cellulaire Communications sans-fil Contrle de moteur Modems Photo et camra numriques Voix sur IP, rseau Audio grand public Navigation Vidoconfrence Jouets, consoles vido Synthse musicale, effets

Performances Faible cot Faible nergie

1. 2. 3. 4.

Contexte applicatif Caractristiques algorithmiques Solutions architecturales March des DSP

Communications satellite Analyse sismique Scurit Mdical Reconnaissance vocale Sonar, radar Dbruitage, cho Anticollision et pleins dautres venir

ARCHI07 - 4

Tches lmentaires
Compression de signal (parole, audio, vido) Filtrage Modulation et dmodulation Dtection et correction derreurs Contrle Traitements audio (e.g. rduction bruit, galisation, annulation dcho, conversion de frquence) Reconnaissance vocale Synthse de signaux
ARCHI07 - 5

Algorithmes de TdSI1
1Traitement

du signal et de limage

Signaux numriques
o Temps et amplitude discrets o Flot de donnes o Scalaires, vectorielles, matricielles,

Traitement temps rel


o Temps d'excution Tex guid par flots de donnes o Priode d'chantillonnage Te priode des sorties Tf > Tex
e(t) Te

s(t)

Algorithme

ex. s(n) = max(moy(e), s(n-1))

ARCHI07 - 6

Tf

Diversits
Complexit des algorithmes de TdSI
< 5 MOPS Faible
mesure/contrle

Fonctions typiques de TdSI


Convolution, filtrage (RIF, RII), corrlation, DCT
o y = y + x.h : MAC (multiplication-accumulation)
10-30 MOPS > 100-1000 MOPS Elev

Adaptation (LMS) FFT, multiplication complexe


o xr=xr.wr-xi.wi; xi=xr.wi+xi.wr o yn = yn-1 + x.h : MAD (multiplication-addition)

Format des donnes


Application PWM, mesures, contrle convertisseurs sigma -delta radio HF/VHF, radar sonar parole audio imagerie / vido analyseurs de s ang

Compression Compression ADSL UMTS parole modemsaudio GSM Compression Imagerie vido mdicale
Taille des donnes 1 4 - 18 22 bits 6 - 14 bits 10 - 12 bits 8 - 14 bits 16 - 20 bits 8 - 36 bits (par pixel) 16 - 18 bits

Viterbi
o a1 = x1 + x2; a2 = y1 + y2; o y = (a1>a2) ? a1 : a2 : ACS (addition-comparaison-slection)

Estimation de mouvement
o sad += |xi,j - yi+u,j+v| : SAD (sum-of-absolute-difference)
ARCHI07 - 8

ARCHI07 - 7

Exemple Fil Rouge


Filtre Numrique RIF sur N points

Fonctions typiques de TdSI


Filtre Numrique RIF symtrique sur N points

D
x(n)

+ x +
h(1)

+ x +

+ x
y(n)

h(0)

x +

h(2)

x +

h(3)

x +

h(4)

x
y(n)

+
ARCHI07 - 10

h(0)

h(1)

h(2)

TAP
ARCHI07 - 9

Fonctions typiques de TdSI


FFT Fast Fourier Transform
Butterfly (DIF)
X Y W X = X + W.Y Y = X - W.Y

Fonctions typiques de TdSI


Filtrage adaptatif LMS

x x x x
ARCHI07 - 11

+ + -

DLMS
xn(i-1)

x
en hn(i)

hn-1(i) xn(i)

x
y

ARCHI07 - 12

Fonctions typiques de TdSI


Estimation de mouvement
Codage vido MPEGx, H26x
N+2p

Caractristiques algorithmiques
Charge de calcul importante
o Nids de boucles o Multiplications-accumulations (convolution) o Multiplications-additions (FFT, DCT, adaptation, distances, ...)

Matched Block Motion Vector NxN (u,v)

p Reference Block NxN

Search Window

ARCHI07 - 13

sadmin = MAXINT; mvx=0; mvy=0; for (u=-p; u<=p; u++) for (v=-p; v<=p; v++) { sad = 0; for (i=0; i<N; i++) { for (j=0; j<N; j++) { sad = sad + ABS[BR(i,j)-FR(i+u,j+v)] /* if (sad>=sadmin) break; */ } } if (sad<sadmin) { sadmin = sad; mvx = u; mvy = v; } }

Prcision des calculs


o Virgule fixe ou flottante o Compromis cot prcision des calculs

Bande passante mmoire Calculs d'adressage complexes


o Gestion signal, accs image, bit-reverse (FFT), ...

Boucles de traitement courtes


o Les instructions peuvent tre places en interne o Pas besoin de grande taille de cache (donnes ou instructions)
ARCHI07 - 14

Solutions architecturales
Efficacit nergtique
Spcialisation, paralllisme
2 V DSP 3 MOPS/mW

March des DSP (1)


Sans fils domine : 75% des revenus en 2004 Systmes grand public : DVD, TV et radio numrique, ... Contrle de moteurs, ...
Multipurpose 6% Automotive 3% Consumer 9% Wireline (modem, xDSL) 6%

Embedded Processor
100 -1000 MOPS/mW

ASIC ASIP/DSP
Embedded FPGA
ARCHI07 - 15 100

SA110 0.4 MIPS/mW PowerPC 1 MIPS/mW


Cellular phone 62% Wireless (other) 2%

Flexibility

Flexibilit

Pleiades, DART 10-50 MOPS/mW

Reconfigurable Processor

EE : MOPS / mW

10

Computer 6% Cellular infrastructure 5% Wirless short range 1%

ARCHI07 - 16

March des DSP (2)


En haut de la liste des plus fortes croissances du march de lindustrie des semi-conducteurs
14000 12000 10000 8000 6000 4000 2000 0 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007

March des DSP (3)


Place dans le march des processeurs embarqus

DSP Market (M$)

Prvisions Forward Concept Co. ARCHI07 - 17 ARCHI07 - 18

II. Architecture MAC/Harvard

Architecture Von Neumann


E.g. processeurs RISC
MEMORY DATA BUS

1. Gense des DSP : MAC/Harvard 2. Modlisation des gnrations 1 et 2 Panorama des DSP 3. Performances

MUX ADDRESS REGISTER

Code example: multiply & accumulate r2 = r2 + #imm * r1 mov #imm,r3 mul r1,r3 add r3,r2
3 instructions, plus de 3 cycles d'horloge

REGISTER FILE

PC

MEMORY ADDRESS BUS ARCHI07 - 20

MEM. DATA REGISTER

ALU

FIR sur machine Von Neumann


Problmes
Bande passante avec la mmoire Code pour le contrle et la gestion de l'adressage Multiplication lente
loop: mov mov mpy add mov inc inc inc dec tst jnz ARCHI07 - 21 *r0,x0 *r1,x1 x0,y0,a a,b y0,*r2 r0 r1 r2 ctr ctr loop

Gnralits sur les DSPs


Proprits du traitement numrique du signal Calculs intensifs et rptitifs Consquences sur les architectures Fonctionnement pipeline Architecture Harvard Structures de contrle volues Units de traitement spcialises cbles Gestion dadressage complexes

Data Path

Memory

Primitives simples

Le tout dans un environnement temps rel


Excution en N.(15 20) cycles
ARCHI07 - 22

Architecture Harvard (1)


PROGRAM ADDRESS BUS DATA ADDRESS BUS

Unit de traitement
DATA BUS - A DATA BUS - B 24 24 X0 X1 Y0 Y1 24 24

PROGRAM RAM/ROM

DATA RAM-A

DATA RAM-B DATA BUS - A DATA BUS - B PROGRAM DATA BUS


56

Operand Registers

Multiplier
56

Shifter
(-1, 0, +1)

ALU
56 A (56) B (56) 56 56 24 24

Accumulators

PROGRAM CONTROL

AGU-A AGU-B
Address Generation

MULTIPLIER ALU REGISTERS ACCUMULATORS

Shifter/Limiter

Motorola DSP 5600x


Processing Unit

(-1, 0, +1) 24 24

ARCHI07 - 23

ARCHI07 - 24

Architecture Harvard (2)


Bus et mmoires donnes/instructions spares Unit de traitement de type mpy-acc Registres distribus ( RISC register file)
Chaque module (ALU) possde ses propres registres locaux

FIR sur DSP conventionnel


Instructions complexes sexcutant en 1 cycle
T=DM(*r1+); P=T*PM(*r0+) || T=DM(*r1+); loop: acc=acc+P || P=T*PM(*r0+) || T=DM(*r1+) jnz loop; acc=acc+P || P=T*PM(*r0+); acc=acc+P Excution en N+ cycles
ARCHI07 - 26

T Program Memory Data Path P Data Memory

MULT

Gnration adresses efficaces (AGUs)


Modes dadressage spciaux : auto incr-decr, circular buffering (delay line) ... in@2 in@1
ARCHI07 - 25

ALU
ACC

in

II. Architecture MAC/Harvard

Processeur : modlisation
Unit de contrle (IP : Instruction Processor)
Unit fonctionnelle (UF) qui interprte les instructions et les passe lunit de traitement (DP)

1. Gense des DSP : MAC/Harvard 2. Modlisation des gnrations 1 et 2 Panorama des DSP 3. Performances

Unit de traitement (DP : Data Processor)


UF qui modifie ou transforme les donnes

Unit de mmorisation
IM : Instruction Memory : stocke les instructions DM : Data Memory : stocke les donnes traites par le DP

Unit de communication (EIU : External Interface Unit)


Contrle les accs aux donnes ou instructions externes, ou d'autres processeurs
ARCHI07 - 28

[Flynn72] [Skillicorn88]

Architecture Harvard de base


IP : Instruction Processor, DP : Data Processor IM : Instruction Memory, DM : Data Memory

Processeur : modlisation
IP
IM
Address from PC Request Instruc

IM
Receive Intstruc.

DP

IP

Receive State from DP

Determine Oper. Add.

Decode Send to DP

DP

DP IP
Receive Oper. Address

DP DM
Request Operand

DP
DM IM

IP
Receive Instruc.

DM e.g. TMS320C10
ARCHI07 - 29 Return State Store Results

Receive Operand

Exec. Instruction

Classification de E. Lee [Lee89]

ARCHI07 - 30

IP

DM

Architecture Harvard de base


TMS320C10 (1982)
2N+4 cycles 2N+4 instructions!

Optimisations des performances


Comment amliorer larchitecture Harvard ?
Transformations du diagramme d'tats
rarrangement des tats excution en parallle d'tats (e.g. Store Results et Return State)

Pipeline de l'excution des tats


mise en parallle d'tats appartenant des instructions successives

Augmentation du nombre de FUs et/ou de DMs


plusieurs DPs peuvent excuter des instructions en parallle sur des donnes indpendantes FUs spcialises pour la gnration dadresses
ARCHI07 - 31

[Verbauwhede00]

ARCHI07 - 32

Interconnexions entre FUs


Les interconnexions suivantes sont valables pour toutes les FUs prcdentes (DP, IP, IM, DM).
1 - vers - 1
o une FU est connecte une autre FU

Modification 1
Autorisation de mmorisation de donnes dans l'IM En un cycle : fetch deux oprandes de la mmoire, excute MAC, criture du rsultat en I/O ou mmoire
DP IP

n - vers - n
o une FUi d'un ensemble de FUs est connecte une autre FUi

1-vers-2

1 - vers - n
o une FU est connecte n autres FUs d'un ensemble de FUs

DM

IM/DM

n - par - n
o toute FUi d'un ensemble est connecte chaque autre FUj

e.g. AT&T DSP32 et DSP32C


ARCHI07 - 33 ARCHI07 - 34

Modification 2
DM est une mmoire multi-ports, plusieurs accs aux donnes par cycle Utilisable pour des mmoires internes
DP IP

Modification 3
Cache pour charger les instructions frquentes vite les conflits d'accs donnes et instructions de la modification 1

DP

IP

1-vers-2

cache

DM

IM TMS320C25 : cache 1 instruction (boucles) DSP16 : cache 15 instructions ADSP-2100 : cache 16 instructions
ARCHI07 - 36

DM

IM/DM

e.g. Fujitsu MB86232 (3 ports en mmoire interne)


ARCHI07 - 35

FIR sur DSP conventionnel


TMS320C2x (1986)
ZAC || LTD; LTD || MPY; RPTK N-1 MACD APAC || MPY; APAC;

Deuxime gnration (Modification 4)


Deux mmoires donnes DM spares En un cycle : fetch deux oprandes et une instruction si le cycle mmoire est le mme que le cycle d'instruction de base
Motorola DSP 56001 et 96002 TMS320C30, C40, C50 ADSP-2100
ARCHI07 - 38

DP

IP

1-vers-2

DM 1

DM 2

IM

Excution en N cycles
ARCHI07 - 37

Architecture Analog Devices


TIMER
INSTRUCTION CACHE
BLOCK 1

SHARC
DUAL-PORTED SRAM
JTAG TEST & EMULATION

Modification 5
Bancs mmoire multiples Instruction multioprandes en parallle avec accs I/O Problme de partition des donnes sur un grand nombre de bancs (FFT)
Hitachi DSPi (6 bancs mmoire)
ARCHI07 - 41

TWO INDEPENDENT DUAL PORT BLOCKS


PROCESSOR PORT ADDR DATA ADDR DATA

DATA ADDR ADDR DATA

BLOCK 0

CORE PROCESSOR

DP

IP

DAG 1
8x4x32

DAG 2
8x4x24

PROGRAM SEQUENCER 24

EXTERNA L PORT
ADDR BUS MUX
MULTIPROCESSOR INTERFACE

32

1-vers-4 DM DM DM DM

2-vers-2

PM ADDRESS BUS DM ADDRESS BUS

32

48 BUS CONNECT (PX) 40/32

PM DATA BUS

48 DATA BUS MUX

IM

DM DATA BUS HOST PORT

1-vers-4 EIU IOM

MULTIPLIER

DATA REGISTER FILE

IOP REGISTERS (MEMORY MAPPED)

DMA CONTROLLER SERIAL PORTS (2) LINK PORTS (6)

4 6 6 36

BARREL SHIFTER

ALU

I/O PROCESSOR

CONTROL, STATUS & DATA BUFFERS

ARCHI07 - 39

Gnrations
10000

Caractristiques complmentaires
4me gnration

Performances normalises (BDTImark)

1000

StareCore(300MHz) TMS320C62x (300MIPS) Carmel (300 MHz)

100

DSP16210 (100 MIPS) DSP56301 TMS320C54x (50-100MIPS) ADSP2183 (50MIPS)

Localisation des donnes Modle registre-mmoire, Load-Store Codage des instructions complexes Stationnarit temporelle ou par les donnes Format des instructions
Type dencodage, compromis consommation/efficacit

2me gnration
10

DSP56001 (13MIPS) ADSP21xx (13MIPS) TMS320C50

3me gnration

Structures de contrle
Boucles matrielles, branchement

1re

gnration

TMS320C20 (5 MIPS) TMS320C10 (2.5 MIPS)


1 1980 1982 1984 1986 1988 1990 1992 1994 1996 1998 2000 2002

Modes dadressage
Anne
ARCHI07 - 43

ARCHI07 - 42

[cf. Annexes]

Rsum (1)
Calcul FUs spcialises pour les fonctions classiques de TdSI en parallle, MAC simple cycles Bits de garde, saturation, arrondis, multiplication 16-24 bits, addition 32-40 bits Harvard, bancs et bus adresses/donnes multiples

Rsum (2)
Accs aux donnes Localit temporelle dexcution Flots de donnes (streaming) Temps rel Modes dadressage complexes Boucles matrielles (zerooverhead), caches dinstructions spcifiques Pas de cache de donnes, DMA puissants, mmoires SRAM internes Gestion des interruptions

Prcision

Bande passante mmoire

ARCHI07 - 44

ARCHI07 - 45

II. Architecture MAC/Harvard

Puissance de calcul
MIPS (Millions of instructions per second)
Mesure facile mais peu reprsentatif des performances relles

1. Gense des DSP : MAC/Harvard 2. Modlisation des gnrations 1 et 2 Panorama des DSP 3. Performances

o VLIW, gnration des adresse

MOPS (Millions of operations per second) MMACS (Millions of MAC per second)
Prise en compte de laspect traitement du signal Les autres oprations ne sont pas prises en compte

MOPS/W : Efficacit nergtique


ARCHI07 - 47

Mtriques de performance
Comparaison prcision - effort dimplantation

Contenu dun benchmark


Diffrents niveaux
Applications complte
o Systme de vido-confrence, metteur/rcepteur radiomobile, player MP3 ...

Prcision de la mtrique

Applications Taches

Taches d'une application


o Codeur ou dcodeur audio ou vido, codeur de parole, dcodeur de Viterbi

Curs dalgorithme

Benchmarking
MMACS/MOPS MIPS Disponibilit Effort dimplantation

Curs d'algorithme
o FIR, IIR, FFT, Control, ..

Oprations
o ADD, Mult/MAC, Dcalage, Transfert mmoire
ARCHI07 - 49

ARCHI07 - 48

BDTImark2000
o o o o o o o o o o o

http://www.bdti.com

BDTIMARK

Bas sur des curs dalgorithme de traitement du signal


Filtre FIR rel, traitement par blocs Filtre FIR rel, traitement par chantillons Filtre FIR complexe, traitement par blocs Filtre adaptif LMS Filtre IIR, 2 cellules d'ordre 2 cascades Produit de vecteurs Addition de vecteurs Recherche de la valeur maximale dun vecteur Dcodeur de Viterbi FFT 256 points Manipulation de bits

Code optimis manuellement


ARCHI07 - 50 ARCHI07 - 51

Temps dexcution (FFT)


Zoran ZR3800x Texas Instruments TMS320C80 Texas Instruments TMS320C541 Texas Instruments TMS320C52 Texas Instruments TMS320C44 Texas Instruments TMS320C31 Texas Instruments TMS320C209 SGS-Thomson D950-CORE NEC PD77015 Motorola DSP56166 Motorola DSP56002 IBM MDSP2780 DSP Group OAK DSP Group PINE Lucent Technologies DSP 3207 Lucent Technologies DSP32C Lucent Technologies DSP 1627 Analog Devices ADSP-21062 Analog Devices ADSP-2171 0 100 200 300 400 500 600 700 800 900

Cot
Important pour une production fort volume
Faible cot
o Les DSPs sont efficaces en MIPS/mW et en MIPS/mm2 o Cela se paye sur la flexibilit et la programmabilit
M68K $200

mW/MIPS

I286 $200 DSP1 $150 I386 $300 Pentium $500 Pentium MMX $700 DSP32C $250 DSP16A $15 DSP16210 <$10 DSP1600 $10

Execution Tim e ( s)
ARCHI07 - 52 ARCHI07 - 53

[Ackland ISLPD98]

Cot performance (FFT)


Zoran ZR3800x Texas Instruments TMS320C541 Texas Instruments TMS320C52

nergie
Filtrage numrique RIF
18

C549
100 MHz, 2.5V

Watt-microsecondes

Texas Instruments TMS320C44 Texas Instruments TMS320C31 Texas Instruments TMS320C209 NEC PD77015 Motorola DSP56166 Motorola DSP56002 IBM MDSP2780 Lucent Technologies DSP 3207 Lucent Technologies DSP32C Lucent Technologies DSP 1627 Analog Devices ADSP-21062 Analog Devices ADSP-2171 0 10000 20000 30000 40000 50000 60000 70000

16 14 12 10 8 6 4 2 0
C5 49

Virgule Fixe Virgule Flottante

C6201
200 MHz, 1.8V

DSP16210
100 MHz, 3.3V

ZSP16401
200 MHz, 2.5V

ADSP-21160
100 MHz, 2.5V

C6701
C6 20 1 DS P1 62 10 ZS P1 64 01 AD SP -2 11 60 C6 70 1

167 MHz, 1.8V

Cost-Time Product (s$)


ARCHI07 - 54 ARCHI07 - 55

volution des DSP


III. volution des DSP
1. 2. 3. 4. 5. 6. DSP conventionnels amliors Capacits SIMD DSP hybride MCU VLIW Superscalaire Comparaison de performances Amliorer les performances au del de l'augmentation lie la vitesse d'horloge ? Augmenter le paralllisme
Augmentation du nombre d'oprations excutes dans chaque instruction Augmentation du nombre d'instructions excutes par cycle d'horloge

Ajouter des units spcialises Amliorer le contrle


ARCHI07 - 57

Plus doprations par instruction


Augmenter le nombre d'oprations qui peuvent tre excutes dans chaque instruction
Ajouter des units d'excution
o o o o multiplieur, additionneur, ... jeu d'instruction enrichir taille de l'instruction augmenter bus de transfert mmoire augmenter

Plus dinstructions par cycle


L'objectif est ici de profiter du paralllisme au niveau instruction (ILP) d'une application Deux techniques sont bien connues :
VLIW : empaquetage de plusieurs instructions de type RISC dans une seule "super-instruction" Superscalaire : excution parallle de plusieurs instructions slectionnes dynamiquement par le processeur

Augmenter les capacits SIMD (ou SWP)

Dans le mme ordre d'ides


Utiliser des units fonctionnelles spcialises Utiliser un coprocesseur Architectures hybrides DSP/MCU
ARCHI07 - 58

ARCHI07 - 59

Gnrations
10000

DSP conventionnels amliors


4me gnration

Performances normalises (BDTImark)

1000

StareCore(300MHz) TMS320C62x (300MIPS) Carmel (300 MHz)

Troisime gnration (1995) Ajout dunits spcialiss ou utilisation de coprocesseurs


TMS320C54x

100

DSP16210 (100 MIPS) DSP56301 TMS320C54x (50-100MIPS) ADSP2183 (50MIPS)

Architectures multi-MAC
Lucent DSP 16xxx

2me gnration
10

DSP56001 (13MIPS) ADSP21xx (13MIPS) TMS320C50

3me gnration

Multiprocesseurs sur une puce


Principalement pour image/vido TMS320C80, MC68356

1re gnration
TMS320C20 (5 MIPS) TMS320C10 (2.5 MIPS)
1 1980 1982 1984 1986 1988 1990 1992 1994 1996 1998 2000 2002

ARCHI07 - 60

Anne

ARCHI07 - 62

Architecture C54x
C54x
40-100-160 MIPS 1000-2000-3000 MIPS/W 60% of cellular handsets $5 for C5402 100MIPS - $75 Dual cores (C5420)

C54x
17x17b mult. 40b ALU 40b adder ACS unit Viterbi,LMS FIRS, FFT

DB

CB PB DB

DB CB DB CB EB

ARCHI07 - 63

ARCHI07 - 64

C54x
FIR symtrique

C54x
A B Bus1 A Bus1 Bus2 Bus3 A Bus1

Mult Add
A B 0

A B ALU

A B

A B Bus4

MAC

x(N-i-1) x(i)

+
h(i)

x
y

A B Bus1 Bus2

DFG du coeur de la boucle


A B Bus1 T ARCHI07 - 65 ARCHI07 - 66

ALU

ALU

C54x
e.g. N=20
+ x + + x + + x + + x + + x + 1 2 3 4 5 6 + x + + x + + x + 7 8 9 10

C54x
Ressources du C54x
T A B Mul/Add ALU Bus 1 Bus 2 Bus 3 Bus 4 + x(0) x(15) + + + + + + + + +

ARCHI07 - 67

ARCHI07 - 68

Architectures multi-MAC
FIR sur DSP conventionnel
e.g. Lucent DSP 16xx
Bus X 16b Bus I 16b

Architectures multi-MAC
FIR sur DSP dual-MAC
e.g. Lucent DSP 16xxx
o 400 MIPS, 380mW o $5 - $80
DO N/2 TIME: acc=acc+P0+P1 // P0=X0*Y0 // P1=X1*Y1 // Y=*r0++ // X=*r1++ Excution en N/2 cycles
2 ACC 8 ACC
ARCHI07 - 70

Bus X 32b Bus I 32b

DO N TIME: acc=acc+P // P=X*Y // Y=*r0++ // X=*r1++ Excution en N cycles

MULT

MULT

MULT

ALU

ALU

ADDER

ARCHI07 - 69

Architecture C55x
C55x
Jusqu' 20 MIPS/mW C54x
o Consommation -85% o Performances 5x

C55x
FIR sur C55x dual-MAC

C5510
160 MHz, 320 MIPS 80mW 4 MIPS/mW 160 KW SRAM

C5502
400 MIPS 160 mW 2.5 MIPS/mW
ARCHI07 - 71

rptblocal sample_loop-1 mov *AR0+,*AR1 ; Put new sample to signal buffer x[n] mov *AR0+,*AR3 ; Put next new sample to location x[n+1] mpy *AR1+,*CDP+,AC0 ; The first operation :: mpy *AR3+,*CDP+,AC1 || rpt CSR mac *AR1+,*CDP+,AC0 ; The rest MAC iterations :: mac *AR3+,*CDP+,AC1 macr *AR1,*CDP+,AC0 :: macr *AR3,*CDP+,AC1 ; The last MAC operation mov pair(hi(AC0)),dbl(*AR2+); Store two output data sample_loop
ARCHI07 - 72

Capacits SIMD (ou SWP)


Oprations parallles sur diffrentes largeurs de chemins de donnes (16 bit, 8 bit, ...)
Split units d'excution Units d'excution multiples

Avantages et inconvnients
Mthode Augmenter le nombre d'UE Augmenter les capacits SIMD Matriel ddi
ARCHI07 - 74

Avantages
Augmentation limite de la consommation, du cot et de la densit de code

Inconvnients

Exemples
Lucent DSP16xxx, ADI ADSP-2116x, ADI TigerSHARC, TI C64x
16 bits 16 bits 16 bits 16 bits

Augmentation importante de la complexit Difficult programmer et compiler Compatibilit maintenue Perspectives limites Gain en performance trs Ncessit d'avoir un important pour des paralllisme au niveau des traitements par blocs donnes important Modifications architecturales limites Gain en performance important Consommation mmoire importante Ncessite une bonne connaissance de l'application

x,+,-

x,+,-

ARCHI07 - 73

16 bits

16 bits

Architecture hybride DSP/MCU


III. volution des DSP
1. 2. 3. 4. 5. 6. DSP conventionnels amliors Capacits SIMD DSP hybride MCU VLIW Superscalaire Comparaison de performances Associer des fonctionnalits MCU
gestion efficace des ITs manipulation de bits excution conditionnelle

des fonctionnalits DSP,


calcul intensif

pour obtenir un code performant et efficace


limiter la taille du code et donc du circuit
ARCHI07 - 76

Architecture hybride DSP/MCU


Mthodes de couplage
Mthode
Multiprocesseur

Architecture Hybride DSP/MCU


ST100, ST122, ST140 (STMicroelectronics)
32 bits MCU / 16 bits DSP Fonctionnalits DSP
o MAC, architecture Harvard, modes dadressages complexes

Avantages
2 jeux d'instructions Les 2 curs travaillent en // Pas de conflits de ressources Les 2 curs travaillent en //

Inconvnients
Duplication de ressources Deux outils de dveloppement Modle de programmation plus complexe Transferts de donnes

et microcontrleur
o architecture load/store, large espace dadressage, code compact
Contrleur mmoire instruction

Coprocesseur

Extension Solution Hybride


ARCHI07 - 77

Modle de programmation plus simple Architecture plus "propre"

Contraintes imposes par l'architecture initiale Dveloppement plus risqu


ARCHI07 - 78 Mmoire UT

d
UC

UA

Contrleur mmoire donne

ST 140
Compatible ST100 Compatible ST122 (dualMAC) Flexible 16-bit/32-bit Load/Store architecture 4-MAC/4-ALU Two data clusters Double data memory bandwidth ST140-DSP Core in 0.13m process Frequency up to 600 MHz Intensive Processing 2.4 GMAC/s Large Data Bandwidth 9.6 Gbytes/s Power Consumption down to 0.180 mW/MHz 100 mW, 24 MMAC/mW

III. volution des DSP


1. 2. 3. 4. 5. 6. DSP conventionnels amliors Capacits SIMD DSP hybride MCU VLIW Superscalaire Comparaison de performances

ARCHI07 - 79

Paralllisme niveau instructions


INS 1 INS 2 INS 3 . . INS N ALU MAC MU ? INS3
Ordonnancement des instructions compilation Run-time Unit de dispatch

Very Long Instruction Word


Caractristiques
Plusieurs instructions par cycle, empaquetes dans une "super-instruction" large Architecture plus rgulire, plus orthogonale, plus proche du RISC Jeu de registres uniforme, plus large Time

...

INS1 INS2 INS4 INS6 INS5

...

Exemples
TI TMS320 C62x et C64x ADI TigerSHARC ADS-TS20x Freescale (Motorola) MSC71xx et MSC81xx StarCore SC1400 Agere/Motorola (DSP core)

ARCHI07 - 81

ARCHI07 - 82

VLIW : C62xx
256

Texas Instruments TMS 320C6x


ADD SUB LDW ADD MV STW B STW STW STW MVK STW ADD ADDK NOP ADDK ADD B NOP NOP

MPY MPY ADD MPY

MPY SHL SUB MPY

ADD ADD LDW ADD

Fetch

VLIW CPU with eight functional units (RISC-like code) 2400 MIPS @ 300MHz 1M-bit on-chip memory 32-bit ext. mem. interface 2 enhanced-buffered serial ports 16-bit host access port (Host processor access to on-chip data memory) Flexible PLL clock generator (x ext. clock rate for 2 or 4) Price: $9-$102

CPU
Two sets of functional units including:
o Two multipliers o Six arithmetic logic units (ALUs) o 32 registers with 32-bit wordlength each o Data-addressing units .D1 and .D2 exclusively responsible for data transfers between memory and the register files

32x8=256 bits
Dispatch Unit

L:ALU S:Shift+ALU M:Multplier D:Address

Functional Unit

Functional Unit

Functional Unit

Functional Unit

Functional Unit

Functional Unit

Functional Unit

Functional Unit

.L1

.S1

.M1

.D1

.D2

.M2

.S2

.L2

Register File A
Data Memory Controller
Data Address 1

Register File B

8-/16-/32-bit data support 40-bit arithmetic options Saturation and normalisation Bit-field manipulation and instruction: extract, set, clear, bit counting

Data Address 2

ARCHI07 - 83

Internal Memory

ARCHI07 - 84

Exploitation du paralllisme
Droulage des boucles : augmente l'ILP
For(i=0;i<N;i++) { ACC=ACC + x[i].h[i] } For(i=0;i<N;i+=3) { ACC=ACC + x[i].h[i] ACC=ACC + x[i+1].h[i+1] ACC=ACC + x[i+2].h[i+2] }

Exploitation du paralllisme
Pipeline logiciel : maximiser lIPC
Optimisation du code assembleur
LOAD

Prologue

MULT LOAD MULT LOAD MULT ACC LOAD

LOAD

ACC

MULT

LOAD

N/3

ACC

ACC MULT ACC


Taux dutilisation du processeur 100%

MULT

pilogue
ARCHI07 - 86

ACC
100% Taux dutilisation du processeur

ARCHI07 - 85

C6x

Functional Unit

Functional Unit

Functional Unit

Functional Unit

Functional Unit

Functional Unit

Functional Unit

Functional Unit

Exploitation du paralllisme
Filtre FIR sur DSP VLIW C6x
x[0] = input; acc = 0; for (i=0; i<8; i++) { prod = h[i] * x[i]; acc = acc + prod; } output = (short) (acc >> 15); 1 Start 2 3 Loop 4 5 6 7 8 9 [B0] 10 [B0] ARCHI07 - 88 MVKL .S2 8, B0 MVKL .S1 0, A5 LDH .D1 *A8++,A2 LDH .D1 *A9++,A3 NOP 4 MPY .M1 A2,A3,A4 NOP ADD .L1 A4,A5,A5 SUB .L2 B0,1,B0 B .S1 loop // Update most recent sample // Zero accumulator // 8 taps // perform Q.15 multiplication // Update 32-bit accumulator // Cast output to 16 bits ; ; ; ; ; ; ; ; ; ; Intialize the loop counter (B0) to 8 Intialize the accumulator (A5) to 0 Load x(i) in A2 Load h(i) in A3 LDH has a latency of 5 cycles Multiply x(i) and h(i) in A4 MPY has a latency of 2 Add A4 to the accumulator A5 Sub 1 to the counter B0 Branch to loop if B0 <> 0

.L1

.S1

.M1

.D1

.D2

.M2

.S2

.L2

Register File A

Register File B

Data Memory Controller


Instruction LDH Description Charge une donne 16 bits venant de la mmoire dans un registre Charge deux donnes 16 bits conscutives venant de la mmoire Multiplication entre 2 registres, rsultat dans un troisime Addition Soustraction Branchement aucune opration Nombre de cycles 5 Units .M Units .L Units .S Units .D .D1 .D2 .D1 .D2 -

LDW

MPY

.M1 .M2 -

ADD SUB B NOP

1 1 6 1

.L1 .L2 .L1 .L2 -

.S1 .S2 .S1 .S2 .S1 .S2 -

.D1 .D2 .D1 .D2 -

ARCHI07 - 87

Mthodes doptimisation
Depuis le code RISC Instructions en parallle Enlever les NOP Droulage de boucle Pipeline logiciel Lecture mmoire de paquets de donnes 2 LDH 1 LDW 2 LDW 1 LDDW

Code non optimis


loop: loop: ldh.d1 ldh.d1 ldh.d1 ldh.d1 nop mpy.m1 mpy.m1 nop add.l1 add.l1 sub.l2 sub.l2 [b0] b.s1 nop *A8++,A2 *A9++,A3 4 A2,A3,A4 A4,A6,A6 B0,1,B0 loop 5 Code RISC 40 itrations 16*40 = 640 cycles

ARCHI07 - 89

ARCHI07 - 90

Instructions parallles
loop: ldh.d1 || ldh.d2 ldh.d2 nop mpy.m1x mpy.m1x nop add.l1 sub.l2 [b0] b.s1 nop *A8++,A2 *B9++,B3 4 A2,B3 ,A4 A2,B3,A4 A4,A6,A6 B0,1,B0 loop 5 Paralllisme ? 40 itrations 15*40 = 600 cycles

Remplacer les NOP


loop: ldh.d1 || ldh.d2 ldh.d2 nop mpy.m1x mpy.m1x nop add.l1 sub.l2 [b0] b.s1 nop *A8++,A2 *B9++,B3 4 A2,B3 ,A4 A2,B3,A4 A4,A6,A6

Not Optimized Properly Instructions la place des NOP Dpendances interinstructions LDH a
5

LDH b
5 2

B0,1,B0 loop 5

MPY * ADD
1

count SUB
1

loop
6

ARCHI07 - 91

ARCHI07 - 92

Remplacer les NOP


loop: ldh.d1 || ldh.d2 ldh.d2 sub.l2 [b0] b.s1 nop mpy.m1x mpy.m1x nop add.l1 *A8++,A2 *B9++,B3 B0,1,B0 loop 2 A2,B3 ,A4 A2,B3,A4 A4,A6,A6 Instructions la place des NOP 40 itrations 8*40 = 320 cycles

Droulage de boucles
Droulage + r-ordonnancement des instructions
Cycle 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 .D1 LDH LDH LDH LDH LDH LDH LDH LDH LDH .D2 LDH LDH LDH LDH LDH LDH LDH LDH LDH .L1 .L2 .M1 .M2 .S1 .S2 NOP

ADD ADD ADD ADD ADD ADD ADD ADD ADD

MPY MPY MPY MPY MPY MPY MPY MPY MPY

N=40 itrations 7 + (N-7) +7 = 47 cycles 47 instructions VLIW!

ARCHI07 - 93

ARCHI07 - 94

Pipeline logiciel
Rintroduction de la boucle sur le motif rpt
Cycle 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 .D1 LDH LDH LDH LDH LDH LDH LDH LDH LDH .D2 LDH LDH LDH LDH LDH LDH LDH LDH LDH .L1 .L2 SUB SUB SUB SUB SUB SUB SUB .M1 .M2 .S1 .S2 NOP

Accs mmoire multiples


a1 a0 A0 A1
LDW.D1 *A5++,A0

x
x1 A7 a1 * x1 x0
LDW.D1 *A6++,A1

ADD ADD ADD ADD ADD ADD ADD ADD ADD

MPY MPY MPY MPY MP Y MPY MPY MPY MPY MPY

B B B B B B

= +

A3 a0 * x0

MPY.M1 A0, A1, A3 MPYH.M1 A0, A1, A7

47 cycles 15 instructions

a1x1 + a0x0 A4
ARCHI07 - 96

ADD.L1

A3, A7, A4

ARCHI07 - 95

Accs mmoire multiples


Lecture de 4 donnes + 2 MAC en parallle
Cycle 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 .D1 LDW LDW LDW LDW LDW LDW LDW LDW .D2 LDW LDW LDW LDW LDW LDW LDW LDW .L1 .L2 .M1 .M2 .S1 .S2 NOP

StarCore SC1400 core


Processeur VLIW 16 bits dvelopp en commun par Agere (Lucent) et Freescale (Motorola) 300 MHz, faible tension Optimis pour faible consommation
Meilleure densit de code (16 bits) que C6x Pipeline plus simple (5 tages contre 11) N=40 itrations 7 + (N/2-7) +8 = 28 cycles
ARCHI07 - 98

ADD ADD ADD ADD ADD ADD ADD ADD ADD

ADD ADD ADD ADD ADD ADD ADD ADD

MPY MPY MPY MPY MPY MPY MPY MPY

MPYH MPYH MPYH MPYH MPYH MPYH MPYH MPYH

BMU

MAC ALU Shift

MAC ALU Shift

MAC ALU Shift

MAC ALU Shift

ARCHI07 - 97

VLIW combin au SIMD


ADI TigerSHARC
Combine le VLIW au SIMD afin d'atteindre un paralllisme massif SIMD hirarchique
o Le TigerSHARC peut excuter 8 multiplications 16x16 en virgule fixe par cycle (4x le C62xx)

VLIW combin au SIMD


C64x
Jusqu 1.1 GHz, ~9 GOPS Six ALUs (32/40-Bit)
o une 32/40-Bit, deux 16-Bit, ou quatre 8-Bit oprations arithmtiques par cycle et par ALU

Instruction SIMD
ALU MAC Shift ALU MAC Shift

Deux multiplieurs, quatre 16x16-Bit ou huit 8x8-Bit multiplications par cycle Coprocesseurs VCP (Viterbi) et TCP (Turbo)

'C6411: 300 MHz, $39, 1.0 V, 250mW, 2400 MIPS, 1200 MMACS
ARCHI07 - 100

4 MAC 16 bits
ARCHI07 - 99

4 MAC 16 bits

C64x

Superscalaire
Techniques drives des processeurs gnraux hautes-performances
Prdiction de branchement Cache dynamique

Plusieurs (2-4) instructions par cycle Jeu d'instructions de type RISC Paralllisme important LOOP // LDDU Exemple
LSI Logic LSI40x
o 4-way, 260MHz
(ZSP400 core)

FIR on LSI40x R4, R14, 2 LDDU R8, R15, 2 MAC2.A R4,R8 AGN0 LOOP

ARCHI07 - 101

ARCHI07 - 102

Avantages et inconvnients
Mthode Avantages
Grand bon dans les performances

Gnrations : bilan

Inconvnients
Bande passante vers la mmoire importante Forte consommation Squencement dlicat Augmentation de la taille du code importante Bande passante vers la mmoire importante Plus forte consommation Temps d'excution difficilement prdictible

VLIW

Architectures plus orthogonales meilleures cibles pour les compilateurs Grand bon dans les performances Architectures plus orthogonales meilleures cibles pour les compilateurs Pas de problmes de squencement

Superscalaire

ARCHI07 - 103

ARCHI07 - 104

ARCHI07 - 105

ARCHI07 - 106

Processeurs rcents (2006)


DSP
Analog Devices BF53x (Blackfin) Analog Devices TS20x (TigerSHARC) Freescale MC1xx/81xx Texas Instruments C55x Texas Instruments C64x Intel PXA255/26x (XScale) Intel PXA27x (XScale + Wireless MMX) Samsung S3C24xx (ARM9) Texas Instruments OMAP 591x (ARM9 + C55x)

Vitesse (BDTImark2000)

Processeurs applicatifs

ARCHI07 - 107

ARCHI07 - 108

Cot performance (mark/$)

Efficacit nergtique (mark/mW)

ARCHI07 - 109

ARCHI07 - 110

Efficacit mmoire (memmark)

BDTIMark

ARCHI07 - 111

ARCHI07 - 112

Flot de dveloppement gnral


III. Flot de dveloppement
Dveloppement (actuel) d'applications (signal)
Mise au point de l'algorithme
Matlab/Simulink SPW, Ptolemy, CoCentric VCC

Algorithme 1

1. Flot gnral de dveloppement 2. Compilation pour DSP 3. Arithmtique virgule fixe

Gnration manuelle ou automatique Code C "flottant"


Compilateur C, debugger Utilisation de vecteurs de test issus de la simulation systme

Gnration manuelle Code C "fixe"


ARCHI07 - 114 Compilateur C, debugger Utilisation de vecteurs de test issus de la simulation systme

Flot gnral (suite)


Algorithme 1 Code C Implantation logicielle
Compilateur C pour DSP Simulation assembleur

Outils de dveloppement
Spcifications flots de donnes du TS, prototypage rapide, simulation, validation
Matlab/Simulink, Cadence SPW, Synopsys Cossap, Ptolemy

Outils de profiling
Systme d'Exploitation Temps Rel Algorithme 2 Code C Implantation Matrielle
Traduction en VHDL Synthse du circuit Simulation VHDL

gprof, ...

Compilateurs depuis des langages de haut-niveau


DSP en virgule fixe ou flottante

Optimisations de l'assembleur Critres de slection des outils et du langage


Compilateurs : taille et vitesse du code Simulateurs : vitesse
ARCHI07 - 116

Algorithme N Code C

ARCHI07 - 115

Compilation
Compilation C vs optimisation assembleur Conception de code enfoui dans l'industrie
e.g. STMicrolectronics
Assembl er MCU 28% Code C DSP 8% Code C Ctrl 9%
Assembler MCU 25% Code C MCU 5%

Inefficacit des compilateurs C


Surcot associ au compilateur
Facteur 4 10 (virgule fixe) Facteur 2 4 (flottants) Orthogonalit
VLIW
0 ADSP21xx/ ADI DSP56002/ Motorola TMS320C51/ TI TMS320C54/ TI TMS320C62/ TI

Sur cot temps d'execution


1200

1000

800

ANSI C C modifi

Sur cot (%)

600

400

Assembl er DSP 55%

Assembler DSP 25%

Code C DSP 45%

200

[Paulin97]
ARCHI07 - 117

[Paulin00]
ARCHI07 - 118

Processeurs

Inefficacit des compilateurs C


Surcot associ au compilateur
Taille du code
Sur cot (%)
Sur cot taille du code
400 350

Raisons de linefficacit
Absence de support de larithmtique virgule fixe Inefficacit des techniques classiques de dveloppement des compilateurs
o dveloppement de l'architecture puis du compilateur compilateurs reciblables

ANSI C
300

C modifi
250

200

150

100

Inefficacit des techniques classiques de compilation


o architecture non orthogonale, units spcialises, instructions complexes

50

-50

Absence de support des spcificits des DSP


o registres dtat, modes dadressage (modulo, bit invers)...
ADSP21xx/ ADI DSP56002/ Motorola TMS320C51/ TI TMS320C54/ TI TMS320C62/ TI

-100

Processeurs

Extensions du langage C : e.g. Embedded C


ARCHI07 - 120

ARCHI07 - 119

Formats de codage
III. Flot de dveloppement
Virgule fixe
Reprsentation : signe - partie entire - partie fractionnaire
mx nx
b1 b0 b-1 b-2 bn-2 bn-1 bn

1. Flot gnral de dveloppement 2. Compilation pour DSP 3. Arithmtique virgule fixe

S bm-1 bm-1

x = (2) m S + bi 2i CA2
i = n

m 1

o bx = m x + n x + 1 o le format dune donne ne varie pas au cours du temps

Virgule flottante
Reprsentation : exposant - mantisse
Exposant e bits Mantisse M+1 bits SE d1 d2 de-1 SE C1 C2 C3 Cm-2 Cm-1 Cm

1 M x = 2u (1) S E + Ci 2i 1 2 i =1 avec u = (1) S E d i 2i


i =1 E 1

ARCHI07 - 122

Comparaison fixe - flottant


Virgule fixe (>90% des ventes des DSP)
Prcision importante mais problmes de dbordement
o ncessit de recadrer les donnes

Elments de lUT
Multiplieur cbl Additionneur U.A.L.
(1 Op/cycle)
A
N

B
N

Temps de dveloppement plus long Efficacit nergtique plus importante, plus rapide et moins cher Consommation moins importante March : applications grand public
C5x > $5


2N

MAC

Registres dcalage
recadrage des donnes
2N+bg

+
Accumulateur Sat /Arr

Virgule flottante
Temps de dveloppement plus rapide, compilateurs plus efficaces Plus grande portabilit, pas de recadrage Pas de dbordements : dynamique de 1500dB (32 bits) Plus cher, consomme plus
C67x > $30
ARCHI07 - 123

Gestion des dbordements Bits de garde Registres daccumulation


stockage des donnes en double prcision
ARCHI07 - 124

Rgles de larithmtique virgule fixe


mA nA b1 b0 b-1 b-2 mBnB nB bnA

Codage en virgule fixe : objectifs


Objectifs pour le codage en virgule fixe
Garantir labsence de dbordements
o Connaissance du domaine de dfinition des donnes

Addition: a+b
Format de a et b identique Choix dun format commun
o Alignement de la virgule o Extension de bits

SA bmA

+
SR bmR b1

mB

SB SB SB bmB S b0 b b-1 b b b0 b0 B mB b-2 0 bnB -1 -2 nB

b0 b-1 b-2

bnA

Maximiser la prcision
Minimiser le nombre de bits de poids fort non utiliss

m R = max(m A , m B ) + 1

n R = max(n A , n B )

Multiplication: a b
Reprsentation identique Doublement du bit de signe
SR SR bmR

mA

nA b0 b-1 b-2 bnA mB nB

SA bmA b1

Minimiser le pas de quantification

SB bmB b0 b-1 bnB

S bm-1 bm-1
b1
mR = m A + mB

b1

b0 b-1 b-2

bn-2 bn-1 bn PLSB

b0 b-1 b-2
nR = nA + nB

bnR

PMSB
ARCHI07 - 126

ARCHI07 - 125

Codage en virgule fixe : tapes


1. Dtermination de la dynamique des donnes
Mthodes statistiques ou analytiques

Fil rouge : filtre FIR


N 1

y ( n ) = ai x ( n i )
i =0
x (n) z-1 z-1 z-1

2. Dtermination de la position de la virgule 3. Dtermination de la largeur des donnes


Oprateurs SIMD, prcision multiple Mthodes par simulation ou analytiques

a0

a1


+

aN-2


+

aN-1


+
y (n)

4. Evaluation de la prcision des calculs

ARCHI07 - 127

ARCHI07 - 128

Fil rouge : filtre FIR


float x[N] = {0.123, -0.569,...} /* Signal dentre du filtre */ float h[N] = {-0.0295, 0.0364,.., -0.0295 }; /* Coefficients du filtre */ int main() { float x[N], y[M], acc; int i,j; for(i=0; i<N; i++){x[i] = 0;} /* Initialisation variables internes */

Dynamique des donnes


Normes utilises en TS Norme L1
z max1 = max n (x(n) ) . h( m)
m =

Mthode garantissant labsence de dbordements

for(j=0; j<M; j++) { /* Filtrage du vecteur d'entre input */ x[0] = Input[j]; acc = x[0]*h[0] ; for(i=N-1; i>0; i--) { acc = acc + x[i]*h[i]; /* Calcul d'une cellule du filtre */ x[i] = x[i-1]; /* Vieillissement du signal */ } y[j] = acc; } } ARCHI07 - 129

Norme Chebychev
z max 2 = max n , (x(n) )max(H ( ) )

Mthode garantissant labsence de dbordements pour un signal dentre bande troite e.g. x(n)=cos(wt)

Arithmtique dintervalle (non rcursifs)


ARCHI07 - 130

Filtre FIR
Propagation de la dynamique (intervalles) des entres au sein du GFS reprsentant lapplication
[-1,1] x (n) z-1 z-1 z-1

Filtre FIR
Dtermination de la position de la virgule pour les donnes Insertion des oprations de recadrage pour aligner la virgule
Dx = 0.99 mx = 0
x[i] z-1 x[i-1]

Da = 0,4
a0

a1


+

aN-2


+

aN-1


+

ma = 1
N 1 N 1 ai , ai i =0 i =0

ai

mMULT = mb + mx + 1 = 0 mMULT = 0

[- |a0|, |a0| ]

[- |a1|, |a1| ]

> > 1

Norme L1

y (n)

m'MULT ' = 1

DACC = 1,65

ACC

ACC

max n (y (n) )= max n (x(n) ) . h(m) = ai = 1.65


ARCHI07 - 131

N 1

m ACC = 1

m ADD = max(mMULT , m ACC , m ACC ) = 1


ARCHI07 - 132

m =

m =0

Graphe flot de donnes dune cellule du FIR

Recadrage des donnes dans un FIR


Recadrage externe Recadrage des coefficients

Sources de bruit dans un FIR


Bruit de quantification associ lentre Bruit li au recadrage externe Bruit li au renvoi en mmoire du rsultat z-1 z-1 z-1

[ xm , xm ]
x (n) >> z-1 z-1 z-1 Renvoi en mmoire du rsultat x (n)

bx
+

b0

>>


>>

b1

>>


>>

bN-2

>>


>>

bN-1

>>


>>

b0

b1

bN-2 +

b0
bgm0 +

b1
bgm1 +

bN-1 +


bg mem

b N-2
bgm N-2+

b N-1
bgm N-1+

y (n)

+
Filtre FIR

+
Recadrage interne

>>

[ K .xm , K .xm ]

+
Biais li au codage des coefficients
ARCHI07 - 134

+
Filtre FIR

+ y (n)

K=

m =

b

Bruit li au recadrage interne

ARCHI07 - 133

k = log 2 ( K )

Filtre FIR
Architecture du processeur cible
Donnes en mmoire sur 16 bits Multiplication 16 bits 16 bits 32 bits Addition 32 bits + 32 bits 32 bits
(16,0,15) x (n) z-1 z-1 z-1 x[i] h[i]
MULT bmult + ADD ACC

Filtre FIR : code C virgule fixe


int x[M] = {-809, -6180, -1570, ...} int h[N] = {-1933, 2386, 3631,}; int main() { int x[N]; y[M]; long acc; int i,j;
/* Signal x, codage (16,0,15)*/ /* Coefficients (16,-1,16) */ Le signal dentre et les coefficients sont spcifis au niveau du code C en entiers sur 16 bits (absence de type virgule fixe en C) : lentier reprsentant x (16,0,15) est obtenu en multipliant x par 215 lentier reprsentant h (16,-1,16) est obtenu en multipliant h par 216

for(i=0; i<N; i++){x[i] = 0;} for(j=0; j<M; j++) { x[0] = Input[j]; acc = (long)(x[0]*h[0])>>1;

/* Initialisation des variables internes du filtre */ /* Filtrage du vecteur d'entree input */

a0 (16,-1,16)


> > 1

a1 (32,0,31)


> > 1

aN-2


> > 1

aN-1


> > 1 (16,1,14)

+
(32,1,30)
ARCHI07 - 135

(32,1,30)

+
y (n)
}

for(i=N-1; i>0; i--) { acc = acc + ((long)(x[i]*h[i])>>1); x[i] = x[i-1]; } y[j] = (int)(acc>>16); } ARCHI07 - 136

Recadrage de la sortie de la multiplication : changement de format : (32,0,31) (32,1,30) /* Calcul d'une cellule du filtre */ /* Vieillissement des variables internes */

Rduction de la largeur de la variable 32 bits 16 bits Rcupration des 16 bits les plus significatifs de la donne
(l opration de cast sur acc permet de rcuprer les bits de poids faible uniquement)

Renvoi de la donne en mmoire

Filtre rcursif (IIR)


Cascade de cellules dordre 2
ADD 0 ADD 1

Filtre IIR dordre 2 (cellule i)


(entre) x(n)

ADD0

+
a2,i

+
a1,i

xn

wn z-1 a1 a2 z-1

b0 b1 b2

+yn

wn z-1 a1 a2 z-1

b0 b1 b2

yn

yi-1(n) sortie cellule prcdente


wi(n-2)


wi(n-1) wi(n)

b2,i b1,i


b0,i

+
ADD1

+
y (n) (sortie) yi(n) (entre cellule suivante)
ARCHI07 - 137 ARCHI07 - 138

Dynamique des donnes (IIR)


Sources de dbordements : additionneurs
IIR : 2 sources ADD0 et ADD1
ADD 1

Dynamique des donnes (IIR)


Exemple
2

x [1,1] H ( z) = 0.5 0.2428 z 1 + 0.5 1 0.85 z 1 + 0.8417 z 2


y

1.5 1 0.5 0

H(jw)
0 0.5 1 1.5 2 2.5 3 3.5

ADD 0

xn

wn
z-1


b0

yn

xmax xmax

m = m =

m h(m) = 2.5645

=2



a1
z-1

h
a1 a2 b2 b0 b1

( m) = 9 mw = 4 k1 = 4

HD(jw)

wmax1 = xmax . hD (m)


m =

b1

ymax1 = xmax . h(m)


m =

Codage des coefficients


2

H D ( z) =

1 1 + a1 z + a2 z 2
1


a2


H ( z) =
b2

b0 + b1 z + b2 z 1 + a1 z 1 + a2 z 2

1

= -27951 = 27581 = 16384 = 16384 = -7956

Fonction de transfert des filtres H(z) et HD(z)

ARCHI07 - 139

ARCHI07 - 140

Dynamique des donnes (IIR)


Cellules dordre 2 cascades
H1 ( z ).H 2 ( z )
H1 ( z )
x(n)

Position de la virgule (IIR)

H1 ( z ).H 2 ( z ).H 3 ( z )

)= 0 mx = log 2 ( max n (x(n) ) )= 4 mwi = log 2 ( max n (wi (n) )
y3(n)

H1(z)
H 1D ( z )
w1(n)

y1(n)

H2(z)
w2(n)

y2(n)

)= 2 m yi = log 2 ( max n (yi (n) )


maij = log 2 ( max j (ai mbij = log 2 max j bij

H3(z)

))= 0

H1 ( z ).H 2 D ( z )

w3(n)

( )) = 0

H1 ( z ).H 2 ( z ).H 3 D ( z )
1 b + b z 1 + b2i z 2 H iD ( z ) = H i ( z ) = 0i 1i 1 1 + a1i z 1 + a2i z 2 1 + a z + a z 2
1i 2i

m ADD 0 = MAX (mx , mai + mwi + 1, mwi ) = 5 m ADD1 = MAX (mbi + mwi + 1, m yi ) = 5
ARCHI07 - 142

ARCHI07 - 141

Codage des donnes (IIR)


(16,mx,,nx) (16,0,15) x(n) a2,i
A
16

Conversion flottant-fixe (IRISA)


(32, madd0 , nadd0) (32,5,16)
C source code
#define pi 3.1416 #define pi 3.1416 main() { float x,h,z for(i=1;i<n;i++) { *z= *y++ + *h++ } for(i=1;i<n;i++) { *z= *y++ + *h++ } C orrelator.C

ADD0

#define pi 3.1416
#define pi 3.1416 main() { float x,h,z for(i=1;i<n;i++) { *z= *y++ + *h++ } for(i=1;i<n;i++) { *z= *y++ + *h++ } C orrelator.C

+
wi(n-2) b2,i b1,i a1,i

+
wi(n-1) wi(n)

define pi 3.1416 #define pi 3.1416 main() { float x,h,z for(i=1;i<n;i++) { *z= *y++ + *h++ } for(i=1;i<n;i++) { *z= *y++ + *h++ } C orrelator.C

Floating-point specification

(16,mw,nw) (16,4,11)

Fixed-point conversion Binary-point position determination

B
16

32


ADD1
b0,i

+

High level synthesis tool BSS


Selection Scheduling Allocation

32

Fixed-point specification optimization

Accuracy evaluation

Fixed-point specification optimization

Code generation tool CALIFE


Selection Scheduling Allocation

Acc

+
(32, madd1, nadd1) (32,5,16) (16,my,ny) (16,2,13) y (n)

Precision constraint

ARCHI07 - 143

ARCHI07 - 144

[Mnard02, Mnard04]

Conclusions
Processeurs spcialiss garantissent :
efficacit nergtique, rapport performances/cot autres exemples probants
o Processeurs multimdia o Network Processor NPU

Conclusions
Les processeurs gnraux ont maintenant des performances qui concurrencent les DSPs
Mais le prix ... et la consommation ne sont pas applicables aux applications embarques grand public

Les performances des processeurs DSPs ont augment de 150x sur 15 ans (40% par an) Les nouvelles architectures sont nombreuses
Mais les DSPs conventionnels dominent toujours le volume

La facilit de compilation est un facteur important


time-to-market...

Choisir un DSP requiert une analyse fine


qui dpend de l'application...
ARCHI07 - 146

ARCHI07 - 145

Perspectives
Quelle sera larchitecture pour le traitement du signal et de limage de demain (ou daprs demain) ?

Piste 1 : DSP conventionnel


DSP conventionnel multi-MAC Units spcialiss
Viterbi Turbo FFT ALU CDMA
ACC ACC MULT MULT MULT MULT

Programmation ?

ALU

ALU

ALU

ARCHI07 - 147

ARCHI07 - 148

Piste 1 : DSP conventionnel


DSP spcialiss
Texas Instruments OMAP 591x
o Mobile 2-3G o ARM9 + C55x

Piste 2 : ULIW
Ultra Large Instruction Word
e.g. Silicon Hive AVISPA+ Compilation ?

SMT ?

Digital Media System-on-Chip (DMSoC): DaVinci


o Codec vido o ARM926EJ-S Core
202.5-MHz at 1.05 V or 256-MHz at 1.2 V

o C64x+TM
405-MHz at 1.05 V or 513-MHz at 1.2 V

o Blocs ddis au codage vido o Interface imager/DAC/HD


ARCHI07 - 149 ARCHI07 - 150

Piste 3 : multiprocesseur
PicoArray (picoChip)
~320 PE (VLIW 3-way) 160 MHz 190 GIPS

PicoArray
Static Interconnect PE: 16-bit 3-way VLIW

VHDL: structure C/Assembly: PE


ARCHI07 - 151 ARCHI07 - 152

Piste 4 : FPGA
e.g. Altera Stratix
Multiplieurs 9x9 18x18, 2 GMAC/s par bloc, 250 MHz

Piste 5 : processeur reconfigurable


RDP1 Segmented Network RDP2

Architecture DART
Data. Mem.

Ctrl
Ctrl DMA

RDP3 RDP4 RDP5

3G/UMTS Mobile Terminal 802.11a (Channel Est.) IRISA/R2D2 STMicroelectronics CEA LIST/LETI

Config Mem.

FPGA

RDP6

Loop Managment

AG1
Data mem1

AG2
Data mem2

AG3
Data mem3

AG4
Data mem4

Performances
5-10 GOPS/cluster@0.13m 200MHz, 11mm2 300 mW @ 5 GOPS 16 MOPS/mW @ 5 GOPS Circuit en juin 2005

Fully Connected Network

reg

reg

FU1

FU2

FU3

FU4

ARCHI07 - 153

ARCHI07 - 154

Bibliographie
DSP Processor Fundamentals : Architectures and Features (IEEE Press Series on Signal Processing) by Phil Lapsley, Jeff Bier, Amit Shoham, Edward A. Lee, Wiley-IEEE Press, 1997 Digital Signal Processors : Architectures, Implementations, and Applications by Sen M. Kuo, Woon-Seng S. Gan, Prentice Hall, 2004
ARCHI07 - 155

Bibliographie
Programmable Digital Signal Processors by Yu Hen Hu (Editor), Marcel Dekker, 2001 VLSI Digital Signal Processors: An Introduction to Rapid Prototyping and Design Synthesis by Vijay Madisetti, Butterworth-Heinemann, 1995 Mthodes et architectures pour le TSI en temps rel, de Didier Demigny, Herms, 2002
ARCHI07 - 156

Bibliographie
Digital Signal Processing Applications With Motorola's DSP56002 Processor by Mohammed El-Sharkawy, Prentice Hall, 1996 Digital Signal Processing Implementation Using the TMS320C6000 DSP Platform (With CD-ROM) by Naim Dahnoun, Prentice Hall, 2000 DSP Applications Using C and the TMS320C6x DSK by Rulph Chassaing, Wiley-Interscience, 2002

Rfrences
[David00] R. David, Etat de l'art des curs de DSP, Rapport DEA, ENSSAT, 2000. [Sentieys00] O. Sentieys, Etat de l'art des DSP, cole thmatique du CNRS - Conception de systmes enfouis, Seix (Arige), 20-23 novembre 2000. [Sentieys01] O. Sentieys, DSP et processeur superscalaire : la convergence ?, Symposium en Architectures Nouvelles de Machines, Paris, 2001. [Mnard04] D. Mnard, Processeur de traitement du signal, ENSSAT/EII, 2004. [ICE97] B. McClean, Status 1997: A Report on the Integrated Circuit Industry, Integrated Circuit Engineering Corporation (ICE), Scottsdale, 1997 [Bhaskaran95] V. Bhaskaran & K. Konstantinides, Image and Video Compression Standards Algorithms and Architectures, Kluwer Academic Publishers, Boston, 1995. [Bier97] J. Bier, P. Lapsley & G. Blalock, Choosing a DSP Processor, Berkeley Design Technology (BDT), 1997. [DeMan97] H. De Man and al., Language Based Design of Digital Systems, AI Course, KU Leuven/IMEC, april 1997. [Lapsley96] P. Lapsley and G. Blalock, How to Estimate DSP Processor Performance, IEEE Spectrum, July 1996. [Pirsch97] P. Pirsch: Video and Image Processing Architectures - Dedicated and Programmable Solutions, NFWO Symposium on Video Processing Architectures, January 1997. [Ackland98] B. Ackland and C. Nicol, "High Performance DSPs - What's Hot and What's Not?", IEEE Int. Symposium on Low Power Electronic Design ISLPED, 1998. [Ropers99] A. Ropers and al., "DSPstone : TI C54x" Report IISPS AAchen University of Technology, 1999.

ARCHI07 - 157

ARCHI07 - 158

Webographie
http://www.bdti.com http://dsprelated.com/ http://www.ti-training.com/courses http://www.eg3.com/dsp/index.htm

Annexes

BDTIMark Caractristiques complmentaires Gnration de code pour DSP

ARCHI07 - 159

BDTIMARK

ARCHI07 - 161

ARCHI07 - 162

ARCHI07 - 163

ARCHI07 - 164

ARCHI07 - 165

ARCHI07 - 166

Localisation des oprandes


Modle registre-mmoire
Oprandes situes en mmoire et dans les registres
o Temps d excution de linstruction tinst = tacc+ texec
tacc
Oprateur A

Codage des instructions


Mmoire
R

Stationnarit temporelle
texec

Une instruction dfinit lensemble des oprations raliser pour chaque unit fonctionnelle
MULT R1,R2,T ADD T,A,A
i
Transfert mmoire .U.T. LOAD

LD R1,AR1
i+2
LOAD MULT ADD MULT ADD

LD R2,AR2
i+4

Modle Load-Store
Oprandes situes uniquement dans des registres o tinst = max(texec,,tacc)
ARCHI07 - 167

Mmoire
tacc
RX RY

i+1
LOAD MULT

i+3

Oprateur A

texec

Unit Multiplieur Unit Accumulateur

ADD

ARCHI07 - 168

Codage des instructions


Stationnarit des donnes
Une instruction dfinit une squence complte d oprations raliser sur un ensemble de donnes.
MAC *AR1,*AR2
i
Transfert mmoire .U.T. Unit Multiplieur Unit Accumulateur ARCHI07 - 169 LOAD

Structures de contrle
Boucle matrielle
Optimiser le traitement des boucles de petite taille
o Initialisation des paramtres de la boucle en 1 instruction o Pas d'instructions supplmentaires pour la gestion de la fin de la boucle

Instructions de branchement
i+1
LOAD MULT

i+2
LOAD MULT ADD

i+3

i+4

Branchement multi-cycles: ajout de NOP entre BR et 1re instruction Branchement retard

Instructions prdicat
MULT ADD ADD

Instructions conditionnelles

If Then Else

[R1] [!R1]

INF R1,R5,10 ADD R3,R2,3 ADD R3,R2,3

ARCHI07 - 170

Modes dadressage
Adressage immdiat :
stockes dans des registres directement dans linstruction la donne est stocke
(Ex C54x: LD #248, A)

Modes dadressage
Adressage indirecte par registre :
Registre dadresse (AR) pointant sur les donnes
LD *AR1, A
addr = AR1 (A *AR1) addr = AR1 AR1 = AR1 + 1 addr = AR1 AR1 = AR1 + AR0 addr = AR1 AR1 = circ(AR1 + 1)

Adressage registre directe :


donne est stocke dans linstruction

les donnes sont ladresse de la

Possibilits de post modifications:


o linaire : AR:= AR 1 o index : AR:= AR MR LD *AR1+, A LD *ARx+0, A

(Ex C54 : SUB A, B)

Adressage mmoire directe :

Pour limiter le nombre de bits stocks dans linstruction un adressage pagin est utilis. Ladresse est compose de deux parties :
a15 a11 A10 a9 a8 a0 x5

MR: registre dindex


x0 x1 x2 x3

o modulo : (AR:= AR 1)N

LD *AR1+% ,A

(%) specifies the size of the circular buffer.

partie stocke dans un pointeur de page DP


ARCHI07 - 171

9 bits

TMS320C54x

7 bits

partie stocke dans linstruction

o bit invers : FFT

LD *ARx+0B ,A

addr = ARx ARx = B(ARx + AR0)

After access, AR0 is added to ARx with reverse carry (rc) propagation. ARCHI07 - 172

Gnration de code pour DSP


Gnration dun code de qualit
o rapide (Texec faible) o compacte (Tcode faible) o sr de fonctionnement

Partie frontale
But: transformation du code source en une reprsentation intermdiaire (I.R.)
Analyse lexicale
y = k + 60 * x

id1= id2+60*id3 Analyse syntaxique


Table des symboles
y id1 rels . k id2 rels . x id3 rels . id1 id2 = + * id3 + id2 * id3 = id1 + id2 id3 * 60.0
Entier Rel

Intgration des spcificits des DSP


o arithmtique virgule fixe o spcificits des units de mmoire et de contrle

Analyse smantique
id1

60

Flexibilit du compilateur
o compilateur reciblable
ARCHI07 - 173

Gnration I.R.

60

Optimisation I.R. [Leupers97,Marwedel99]


ARCHI07 [SUIF] - 174

Partie finale
But: gnration dun code cible partir de la reprsentation intermdiaire Slection dinstructions [SPAM, CHESS, CodeSyn, Calife]
o Reconnaissance de motifs [Leupers97, Leupers99] o Couverture darbre Programmation dynamique

Slection de code
Principe :
dcoupage du problme de production de code optimal pour E en sous-problmes optimaux de production de code pour les sous-expressions E1 et E2
Ri = Rj Rj = Ri op Rj Ri = Ri op Mj Ri = Rj Mi = Ri
C =1 C =1 C =1 C =1 C =1

E:= E1 Op E2
Op

E1

E2

Allocation et assignation de registres


o allocation de registres Coloration de graphe o assignation de registres [Araujo95, Wess95]

C=2+4+1

(8,8,7) +

Rj = Ri op Rj Ri = Ri op Mj

Jeu d instructions

(C[0], C[1], C[2])

(3,2,2) +

S1 b c

S2

(5,4,4)

Ordonnancement
Ordonnancement par liste, ILP, de traces

2 registres : R0, R1 3 oprateurs : *,+,/ tlatence_op = 1 cycle


Architecture de la machine

(0,1,1)

(0,1,1)

(0,1,1)

(3,2,2)

(0,1,1) d e

Optimisations dpendantes de larchitecture


ARCHI07 - 175

(0,1,1)

Hypothses

o adresses mmoire [Liao96, Sudarsanam95]

ARCHI07 - 176

Post-optimisations
Post-optimisations
instructions de changement de mode assignation des bancs de mmoire lallocation mmoire et la gnration des adresses

Gnration des adresses : exploiter les U.G.A.


registres dadresse : ARi post-modifications (ARi++, ARi--) registres doffset : MRk (ARi= ARi MRk )
Optimiser le placement des donnes en mmoire afin dutiliser efficacement les UGA ARCHI07 - 177