Exemples d`applications

publicité
Processeurs de Traitement
Numérique du Signal (DSP)
Processeurs de Traitement
Numérique du Signal (DSP)
I.
II.
III.
IV.
Olivier Sentieys
IRISA/ENSSAT Lannion
Université de Rennes I
[email protected]
http://www.irisa.fr/R2D2
Introduction
Architectures MAC/Harvard
Evolutions des DSP
Flot de développement
Merci à Daniel Ménard pour son support
Exemples d’applications
I. Introduction
1.
2.
3.
4.
Contexte applicatif
Caractéristiques algorithmiques
Solutions architecturales
Marché des DSP
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
Téléphonie cellulaire
Communications sans-fil
Contrôle de moteur
Modems
Voix sur Internet
Audio grand public
Navigation
Vidéoconférence
Jouets, consoles vidéo
Synthèse musicale, effets
Médical
ARCHI’05 - 4
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
• Performances
• Faible coût
• Faible énergie
Communications satellite
Analyse sismique
Sécurité
Reconnaissance vocale
Sonar, radar
Photo et caméra
numériques
Débruitage, écho
Anticollision
…
et pleins d’autres à venir
Tâches élémentaires
Algorithmes de TdSI1
Compression de signal (parole, audio, vidéo)
Filtrage
Modulation et démodulation
Détection et correction d’erreurs
Contrôle
Traitements audio (e.g. réduction bruit,
égalisation, annulation d’écho, conversion de
fréquence)
ƒ Reconnaissance vocale
ƒ Synthèse de signaux
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ARCHI’05 - 5
1Traitement
du signal et de l’image
ƒ Signaux numériques
o Temps et amplitude discrets
o Flot de données
o Scalaires, vectorielles, matricielles, …
ƒ Traitement temps réel
o Temps d'exécution Tex guidé par flots de données
o Période d'échantillonnage Te période des sorties Tf > Tex
e(t)
Te
s(t)
ARCHI’05 - 6
Algorithme
ex. s(n) = max(moy(e), s(n-1))
Tf
Diversités
Caractéristiques algorithmiques
ƒ Complexité des algorithmes de TdSI
ƒ Charge de calcul importante
< 5 MOPS
10-30 MOPS
Faible
mesure/contrôle
Compression ADSL
Compression
UMTS
parole modemsaudio GSM Compression
Imagerie
vidéo
médicale
ƒ Format des données
Application
Taille des données
PWM, mesures, contrôle
1 à 4 - 18 à 22 bits
o Nids de boucles
o Multiplications-accumulations (convolution)
o Multiplications-additions (FFT, DCT, adaptation, distances, ...)
> 100-1000 MOPS
Elevé
ƒ Précision des calculs
o Virgule fixe ou flottante
o Compromis coût – précision des calculs
ƒ Bande passante mémoire
ƒ Calculs d'adressage complexes
o Gestion signal, accès image, bit-reverse (FFT), ...
convertisseurs sigma-delta
ARCHI’05 - 7
radio HF/VHF, radar
6 - 14 bits
sonar
10 - 12 bits
parole
8 - 14 bits
audio
16 - 20 bits
imagerie / vidéo
8 - 36 bits (par pixel)
analyseurs de sang
16 - 18 bits
ƒ Boucles de traitement courtes
o Les instructions peuvent être placées en interne
o Pas besoin de grande taille de cache (données ou instructions)
ARCHI’05 - 8
Fonctions typiques de TdSI
Exemple Fil Rouge
ƒ Convolution, filtrage
ƒ Filtre Numérique RIF sur N points
o y = y + x.h : MAC (multiplication-accumulation)
ƒ Adaptation (LMS)
o yn = yn-1 + x.h : MAD (multiplication-addition)
ƒ FFT, multiplication complexe
D
o xr=xr.wr-xi.wi; xi=xr.wi+xi.wr
D
ƒ Viterbi
o a1 = x1 + x2; a2 = y1 + y2;
o y = (a1>a2) ? a1 : a2 : ACS (addition-comparaison-sélection)
h(0)
x
h(1)
D
x
h(2)
x
x
h(3)
h(4)
x
y(n)
ƒ Estimation de mouvement
+
+
o sad += |xi,j - yi+u,j+v| : SAD (sum-of-absolute-difference)
ARCHI’05 - 9
D
x(n)
+
+
TAP
ARCHI’05 - 10
Fonctions typiques de TdSI
Fonctions typiques de TdSI
ƒ FFT Fast Fourier Transform
ƒ Filtrage adaptatif LMS
• Butterfly (DIF)
X
X’ = X + W.Y
Y
x
x
x
x
ARCHI’05 - 11
Y’ = X - W.Y
W
-
+
-
+
+
-
ƒ DLMS
xn(i-1)
x
en
ARCHI’05 - 12
+
hn(i)
hn-1(i)
xn(i)
x
+
y
y
Fonctions typiques de TdSI
Solutions architecturales
ƒ Estimation de mouvement
ƒ Efficacité énergétique
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;
}
}
N+2p
Motion Vector
(u,v)
• Spécialisation, parallélisme
Matched Block
NxN
p
Reference Block
NxN
Search Window
ARCHI’05 - 13
ƒ Flexibilité
2 V DSP
3 MOPS/mW
Pleiades, DART
10-50 MOPS/mW
Embedded
Processor
100 -1000 MOPS/mW
SA110
0.4 MIPS/mW
ASIC
ASIP/DSP
Embedded
FPGA
100
ARCHI’05 - 14
PowerPC
1 MIPS/mW
Reconfigurable
Processor
EE : MOPS / mW
10
1
Marché des DSP (1)
Marché des DSP (2)
ƒ Sans fils domine : 75% des revenus en 2004
ƒ Systèmes grand public : DVD, TV et radio
numérique, ...
ƒ Asservissement des moteurs pour les disques
Multipurpose Automotive Consumer
durs, ...
ƒ En haut de la liste des plus fortes croissances du
marché de l’industrie des semi-conducteurs
6%
3%
Cellular phone
62%
ARCHI’05 - 15
Wireless (other)
2%
9%
Wireline
(modem, xDSL)
6%
Computer
6%
Cellular
infrastructure
5%
Wirless short
range
1%
14000
Flexibility
• Codage vidéo MPEGx, H26x
DSP Market (M$)
12000
10000
8000
6000
4000
2000
0
1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007
Prévisions Forward Concept Co.
ARCHI’05 - 16
Marché des DSP (3)
ƒ Place dans le marché des processeurs embarqués
II. Architecture
MAC/Harvard
1. Genèse des DSP : MAC/Harvard
2. Modélisation des générations 1 et 2
Panorama des DSP
3. Performances
ARCHI’05 - 17
Architecture Von Neumann
FIR sur machine Von Neumann
ƒ E.g. processeurs RISC
ƒ Problèmes
MEMORY DATA BUS
MEM. DATA
REGISTER
PC
ADDRESS
REGISTER
REGISTER
FILE
ALU
MUX
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
MEMORY ADDRESS BUS
ARCHI’05 - 19
• Bande passante avec la mémoire
• Code pour le contrôle et la gestion de l'adressage
• Multiplication lente
loop:
mov
mov
mpy
add
mov
inc
inc
inc
dec
tst
jnz
ARCHI’05 - 20
*r0,x0
*r1,x1
x0,y0,a
a,b
y0,*r2
r0
r1
r2
ctr
ctr
loop
Data Path
Exécution en N.(15 à 20) cycles
Memory
Architecture Harvard (1)
Généralités sur les DSPs
PROGRAM ADDRESS BUS
Propriétés du traitement
numérique du signal
Conséquences sur les
architectures
„ Fonctionnement pipeline
„ Architecture Harvard
„ Structures de contrôle
évoluées
„ Unités de traitement
spécialisées câblées
„ Gestion d’adressage
complexes
Calculs intensifs et
répétitifs
Primitives simples
DATA ADDRESS BUS
PROGRAM
RAM/ROM
DATA BUS - B
PROGRAM DATA BUS
PROGRAM
CONTROL
AGU-A
AGU-B
Address Generation
MULTIPLIER
ALU
REGISTERS
ACCUMULATORS
Processing Unit
ARCHI’05 - 22
Unité de traitement
Architecture Harvard (2)
DATA BUS - A
DATA BUS - B
24
ƒ Bus et mémoires données/instructions séparées
ƒ Unité de traitement de type mpy-acc
ƒ Registres distribués (≠ RISC register file)
24
X0
X1
Y0
Y1
Operand
Registers
24
24
• Chaque module (ALU) possède ses propres registres
locaux
Multiplier
56
56
ALU
Shifter
56
(-1, 0, +1)
Accumulators
24
A (56)
B (56)
56
24
56
ƒ Génération adresses efficaces (AGUs)
• Modes d’adressage spéciaux : auto incr-decr, circular
buffering (delay line) ...
Shifter/Limiter
Motorola DSP 5600x
ARCHI’05 - 23
DATA
RAM-B
DATA BUS - A
Le tout dans un environnement temps réel
ARCHI’05 - 21
DATA
RAM-A
(-1, 0, +1)
24
in@2 in@1
24
ARCHI’05 - 24
in
FIR sur DSP conventionnel
ƒ Instructions complexes s’exécutant 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
II. Architecture
MAC/Harvard
T
1. Genèse des DSP : MAC/Harvard
2. Modélisation des générations 1 et 2
Panorama des DSP
3. Performances
Program
Memory
MULT
Data Path
P
Data
Memory
ALU
ACC
Exécution en N+ε cycles
ARCHI’05 - 25
Processeur : modélisation
Architecture Harvard de base
ƒ Unité de contrôle (IP : Instruction Processor)
ƒ IP : Instruction Processor, DP : Data Processor
ƒ IM : Instruction Memory, DM : Data Memory
• Unité fonctionnelle (UF) qui interprète les instructions et les passe
à l’unité de traitement (DP)
ƒ Unité de traitement (DP : Data Processor)
• UF qui modifie ou transforme les données
DP
IP
DM
IM
ƒ Unité de mémorisation
• IM : Instruction Memory : stocke les instructions
• DM : Data Memory : stocke les données traitées par le DP
ƒ Unité de communication (EIU : External Interface Unit)
• Contrôle les accès aux données ou instructions externes, ou à
d'autres processeurs
ARCHI’05 - 27
[Flynn72] [Skillicorn88]
e.g. TMS320C10
ARCHI’05 - 28
Classification de E. Lee [Lee89]
Architecture Harvard de base
ƒ TMS320C10 (1982)
• 2N+4 cycles
• 2N+4 instructions!
Optimisations des performances
Comment améliorer l’architecture Harvard ?
ƒ Transformations du diagramme d'états
• réarrangement des états pour augmenter le temps de cycle
• exécution en parallèle d'états (e.g. Store Results et Return State)
ƒ Pipeline de l'exécution des états
• mise en parallèle d'états appartenant à des instructions
successives
ƒ Augmentation du nombre de FU
• plusieurs DP peuvent exécuter des instructions en parallèle sur des
données indépendantes
[Verbauwhede00]
ARCHI’05 - 29
ARCHI’05 - 30
Interconnexions entre FUs
Modification 1
ƒ Les interconnexions suivantes sont valables pour
toutes les FUs précédentes (DP, IP, IM, DM).
ƒ Autorisation de
mémorisation de
données dans l'IM
ƒ En un cycle : fetch deux
opérandes de la
mémoire, exécute MAC,
écriture du résultat en
I/O ou mémoire
• 1 - vers - 1
o une FU est connectée à une autre FU
• n - vers - n
o une FUi d'un ensemble de FUs est connectée à une autre FUi
• 1 - vers - n
o une FU est connectée à n autres FUs d'un ensemble de FUs
• n - par - n
o toute FUi d'un ensemble est connectée à chaque autre FUj
e.g. AT&T DSP32 et DSP32C
ARCHI’05 - 31
ARCHI’05 - 32
DP
IP
1-vers-2
DM
IM/DM
Modification 2
Modification 3
ƒ DM est une mémoire
multi-ports, plusieurs
accès aux données par
cycle
ƒ Utilisable pour des
mémoires internes
ƒ Cache pour charger
les instructions
fréquentes
ƒ Évite les conflits
d'accès données et
instructions de la
modification 1
DP
DM
IP
IM
e.g. Fujitsu MB86232 (3 ports en mémoire interne)
TMS320C25 : cache 1 instruction (boucles)
DSP16 : cache 15 instructions
ADSP-2100 : cache 16 instructions
ARCHI’05 - 33
ARCHI’05 - 34
DP
IP
1-vers-2
cache
DM
IM/DM
FIR sur DSP conventionnel
Deuxième génération (Modification 4)
ƒ TMS320C2x (1986)
ƒ Deux mémoires
données DM séparées
ƒ En un cycle : fetch
deux opérandes et une
instruction si le cycle
mémoire est le même
que le cycle
d'instruction de base
ZAC || LTD;
LTD || MPY;
RPTK N-1
MACD
APAC || MPY;
APAC;
Exécution en N cycles
ARCHI’05 - 35
Motorola DSP 56001 et 96002
TMS320C30, C40, C50
ADSP-2100
ARCHI’05 - 36
DP
IP
1-vers-2
DM 1
DM 2
IM
CORE PROCESSOR
DUAL-PORTED
SRAM
TIMER
DAG 1
DAG 2
8x4x32
8x4x24
TWO INDEPENDENT
DUAL PORT BLOCKS
INSTRUCTION
CACHE
PROCESSOR PORT
ADDR
DATA
DATA
ADDR
BLOCK 0
SHARC
BLOCK 1
Architecture Analog Devices
JTAG
DATA
ADDR
ADDR
DATA
TEST &
EMULATION
PROGRAM
SEQUENCER
EXTERNA
L
PORT
24
PM ADDRESS BUS
ADDR BUS
MUX
32
DM ADDRESS BUS
48
BUS
CONNECT
(PX)
48
DATA BUS
MUX
DM DATA BUS
HOST PORT
MULTIPLIER
IOP
REGISTERS
(MEMORY MAPPED)
BARREL
SHIFTER
32
MULTIPROCESSOR
INTERFACE
PM DATA BUS
40/32
DATA
REGISTER
FILE
Modification 5
ALU
I/O PROCESSOR
CONTROL,
STATUS &
DATA BUFFERS
DMA
CONTROLLER
ƒ Bancs mémoire
multiples
ƒ Instruction multiopérandes en parallèle
avec accès I/O
ƒ Problème de partition
des données sur un
grand nombre de
bancs (FFT)
DP
IP
DM
DM
DM
LINK PORTS
(6)
DM
IM
EIU
IOM
1-vers-4
4
6
SERIAL PORTS
(2)
2-vers-2
1-vers-4
6
Hitachi DSPi (6 bancs mémoire)
36
ARCHI’05 - 37
ARCHI’05 - 39
Générations
Caractéristiques complémentaires
Performances normalisées (BDTImark)
10000
4ème génération
StareCore(300MHz)
TMS320C62x (300MIPS)
Carmel (300 MHz)
1000
DSP16210 (100 MIPS)
100
DSP56301
TMS320C54x (50-100MIPS)
ADSP2183 (50MIPS)
2ème génération
DSP56001 (13MIPS)
ADSP21xx (13MIPS)
TMS320C50
10
1ère
• Type d’encodage, compromis consommation/efficacité
ƒ Structures de contrôle
3ème génération
• Boucles matérielles, branchement
génération
ƒ Modes d’adressage
TMS320C20 (5 MIPS)
TMS320C10 (2.5 MIPS)
1
1980
ARCHI’05 - 40
1982
1984
1986
ƒ Localisation des données
• Modèle registre-mémoire, Load-Store
ƒ Codage des instructions complexes
• Stationnarité temporelle ou par les données
ƒ Format des instructions
1988
1990
1992
Année
1994
1996
1998
2000
2002
ARCHI’05 - 41
[cf. Annexes]
Résumé (1)
ƒ Calcul
ƒ Précision
ƒ Bande passante mémoire
Résumé (2)
ƒ FUs spécialisées pour les
fonctions classiques de
TdSI en parallèle, MAC
simple cycles
ƒ Bits de garde, saturation,
arrondis, multiplication
16-24 bits, addition 32-40
bits
ƒ Harvard, bancs et bus
adresses/données
multiples
ARCHI’05 - 42
ƒ Accès aux données
ƒ Localité temporelle
d’exécution
ƒ Flots de données
(streaming)
ƒ Temps réel
ƒ Modes d’adressage
complexes
ƒ Boucles matérielles (zerooverhead), caches
d’instructions spécifiques
ƒ Pas de cache de données,
DMA puissants, mémoires
SRAM internes
ƒ Gestion des interruptions
ARCHI’05 - 43
II. Architecture
MAC/Harvard
Puissance de calcul
ƒ MIPS (Millions of instructions per second)
• Mesure facile mais…
• …peu représentatif des performances réelles
1. Genèse des DSP : MAC/Harvard
2. Modélisation des générations 1 et 2
Panorama des DSP
3. Performances
o VLIW, génération des adresse
ƒ MOPS (Millions of operations per second)
ƒ MMACS (Millions of MAC per second)
• Prise en compte de l’aspect traitement du signal
• Les autres opérations ne sont pas prises en compte
ƒ MOPS/W : Efficacité énergétique
ARCHI’05 - 45
Métriques de performance
Contenu d’un benchmark
ƒ Comparaison précision - effort d’implantation
ƒ Différents niveaux
Précision de la métrique
• Applications complète
Applications
Taches
o Système de vidéo-conférence, émetteur/récepteur radiomobile, player MP3 ...
• Taches d'une application
o Codeur ou décodeur audio ou vidéo, codeur de parole,
décodeur de Viterbi
Cœurs d’algorithme
Benchmarking
• Cœurs d'algorithme
o FIR, IIR, FFT, Control, ..
• Opérations
MMACS/MOPS
MIPS
o ADD, Mult/MAC, Décalage, Transfert mémoire
Disponibilité … Effort d’implantation
ARCHI’05 - 46
ARCHI’05 - 47
BDTImark2000
http://www.bdti.com
BDTIMARK
ƒ Basé sur des cœurs d’algorithme de traitement du signal
o
o
o
o
o
o
o
o
o
o
o
Filtre FIR réel, traitement par blocs
Filtre FIR réel, traitement par échantillons
Filtre FIR complexe, traitement par blocs
Filtre adaptif LMS
Filtre IIR, 2 cellules d'ordre 2 cascadées
Produit de vecteurs
Addition de vecteurs
Recherche de la valeur maximale d’un vecteur
Décodeur de Viterbi
FFT 256 points
Manipulation de bits
ƒ Code optimisé manuellement
ARCHI’05 - 48
ARCHI’05 - 49
Temps d’exécution (FFT)
BDTIMARK
BDTImark
Zoran ZR3800x
62
Motorola - IBM PowerPC604e 333 MHz
Intel Pentium 200 MHz
Texas Instruments TMS320C80
Texas Instruments TMS320C541
23
Texas Instruments TMS320C52
17
Analog Device ADSP 2106x 60 MHz
Texas Instruments TMS320C44
65
Texas Instruments TMS320C67xx 167 MHz
Texas Instruments TMS320C31
9
Texas Instruments TMS320C3x 80 MHz
Texas Instruments TMS320C209
SGS-Thomson D950-CORE
Processeurs
NEC µPD77015
56
Intel MMX Pentium 266 MHz
Motorola DSP56166
14
ARM7 TDMI/picolo 70 MHz
Motorola DSP56002
7
ARM7 TDMI 80 MHz
IBM MDSP2780
15
Motorola DSP 566xx 60 MHz
DSP Group OAK
Motorola DSP 563xx 100 MHz
25
DSP Group PINE
Lucent Technologies DSP 3207
37
Lucent technologies DSP 16xxx 100MHz
Lucent technologies DSP 16xx 120MHz
Lucent Technologies DSP32C
22
Analog device ADSP21xx 75 MHz
Lucent Technologies DSP 1627
19
Analog Devices ADSP-21062
Texas Instruments TMS320C80 60 MHz
26
Analog Devices ADSP-2171
25
Texas Instruments TMS320C54x 100 MHz
0
Texas Instruments TMS320C62x 200 MHz
100
200
300
400
500
600
700
800
900
99
0
20
40
60
ARCHI’05 - 50
80
100
Execution Time (µs)
120
ARCHI’05 - 51
Score
Coût – performance (FFT)
Coût
ƒ Important pour une production à fort volume
• Faible coût
Zoran ZR3800x
Texas Instruments TMS320C541
Texas Instruments TMS320C52
o Les DSPs sont efficaces en MIPS/mW et en MIPS/mm2
o Cela se paye sur la flexibilité et la programmabilité
100000
Texas Instruments TMS320C44
Texas Instruments TMS320C31
Texas Instruments TMS320C209
NEC µPD77015
mW/MIPS
Motorola DSP56166
10000
M68K $200
Motorola DSP56002
IBM MDSP2780
I286 $200
1000
I386 $300
DSP1 $150
Lucent Technologies DSP 3207
Pentium $500
100
Pentium MMX $700
Analog Devices ADSP-21062
DSP32C $250
10
Lucent Technologies DSP32C
Lucent Technologies DSP 1627
Analog Devices ADSP-2171
DSP16A $15
0
1
1980
ARCHI’05 - 52
1985
1990
DSP16210 <$10
DSP1600 $10
1995
2000
[Ackland ISLPD98]
10000
20000
30000
40000
Cost-Time Product (µs$)
ARCHI’05 - 53
50000
60000
70000
Énergie
III. Évolution des DSP
ƒ Filtrage numérique RIF
ƒ C549
• 100 MHz, 2.5V
16
12
C6201
1.
2.
3.
4.
5.
6.
• 200 MHz, 1.8V
ƒ DSP16210
• 100 MHz, 3.3V
10
ƒ ZSP16401
8
6
• 200 MHz, 2.5V
4
ƒ ADSP-21160
2
• 100 MHz, 2.5V
0
1
70
C6
DSP conventionnels améliorés
Capacités SIMD
DSP hybride MCU
VLIW
Superscalaire
Comparaison de performances
• 167 MHz, 1.8V
AD
SP
-2
11
60
01
64
10
ZS
P1
62
P1
DS
C6
20
1
ƒ C6701
C5
ARCHI’05 - 54
ƒ
Virgule Fixe
Virgule Flottante
14
49
Watt-microsecondes
18
Évolution des DSP
Plus d’opérations par instruction
ƒ Améliorer les performances au delà de
l'augmentation liée à la vitesse d'horloge ?
ƒ Augmenter le nombre d'opérations qui peuvent
être exécutées dans chaque instruction
• Ajouter des unités d'exécution
o
o
o
o
ƒ Augmenter le parallélisme
• Augmentation du nombre d'opérations exécutées
dans chaque instruction
• Augmentation du nombre d'instructions exécutées
par cycle d'horloge
ƒ Ajouter des unités spécialisées
ƒ Améliorer le contrôle
ARCHI’05 - 56
multiplieur, additionneur, ...
jeu d'instruction à enrichir
taille de l'instruction à augmenter
bus de transfert mémoire à augmenter
• Augmenter les capacités SIMD (ou SWP)
ƒ Dans le même ordre d'idées
• Utiliser des unités fonctionnelles spécialisées
• Utiliser un coprocesseur
• Architectures hybrides DSP/MCU
ARCHI’05 - 57
ƒ L'objectif est ici de profiter du parallélisme 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 : exécution parallèle de plusieurs
instructions sélectionnées dynamiquement par le
processeur
Générations
10000
Performances normalisées (BDTImark)
Plus d’instructions par cycle
4ème génération
DSP16210 (100 MIPS)
100
DSP56301
TMS320C54x (50-100MIPS)
ADSP2183 (50MIPS)
2ème génération
DSP56001 (13MIPS)
ADSP21xx (13MIPS)
TMS320C50
10
3ème génération
1ère génération
TMS320C20 (5 MIPS)
TMS320C10 (2.5 MIPS)
1
1980
ARCHI’05 - 58
StareCore(300MHz)
TMS320C62x (300MIPS)
Carmel (300 MHz)
1000
1982
1984
1986
ARCHI’05 - 59
1988
1990
1992
Année
DSP conventionnels améliorés
Architecture C54x
ƒ Troisième génération (1995)
ƒ Ajout d’unités spécialisés ou utilisation de
coprocesseurs
ƒ C54x
• TMS320C54x
ƒ Architectures multi-MAC
• Lucent DSP 16xxx
ƒ Multiprocesseurs sur une puce
• Principalement pour image/vidéo
• TMS320C80, MC68356
ARCHI’05 - 61
• 40-100-160 MIPS
• 1000-2000-3000 MIPS/W
• 17x17b multiplier, 40b ALU,
40b adder, ACS unit
• Viterbi, LMS, FIRS, FFT
• 60% of cellular handsets
• $5 for C5402 100MIPS - $75
• Dual cores (C5420)
ARCHI’05 - 62
1994
1996
1998
2000
2002
DB
C54x
CB
PB DB
DB
CB DB CB EB
C54x
ƒ FIR symétrique
x(N-i-1)
+
x(i)
x
h(i)
x(i+1)
A
Bus1
ƒ FIR sur DSP conventionnel
T
Mult
A
B
Add
A
B
0
A
B
Bus1
Bus2
ALU
ARCHI’05 - 65
x
h(i+1)
+
y
Architectures multi-MAC
A
Bus1
Bus2
Bus3
A
B
Bus1
T
+
ARCHI’05 - 64
C54x
A
B
Bus1
y
y
x(N-i)
ARCHI’05 - 63
+
ALU
A
B
• e.g. Lucent DSP 16xx
A
B
Bus X 16b
Bus I 16b
Bus4
MAC
DO N TIME:
acc=acc+P
// P=X*Y
// Y=*r0++
// X=*r1++
ALU
MULT
ALU
Exécution en N cycles
2 ACC
ARCHI’05 - 66
Architectures multi-MAC
ƒ C55x
ƒ FIR sur DSP dual-MAC
Bus X 32b
• e.g. Lucent DSP 16xxx
o Consommation -85%
o Performances 5x
ƒ C5510
MULT
ALU
MULT
ADDER
Exécution en N/2 cycles
8 ACC
ARCHI’05 - 67
• Jusqu'à 20 MIPS/mW
• C54x
Bus I 32b
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++
Architecture C55x
•
•
•
•
160 MHz, 320 MIPS
80mW
4 MIPS/mW
160 KW SRAM
ƒ C5502
• 400 MIPS
• 160 mW
• 2.5 MIPS/mW
ARCHI’05 - 68
Architecture C55x
Capacités SIMD (ou SWP)
ƒ FIR symétrique
ƒ Opérations parallèles sur différentes largeurs de chemins
de données (16 bit, 8 bit, ...)
• Split unités d'exécution
• Unités d'exécution multiples
ƒ Exemples
• Lucent DSP16xxx, ADI ADSP-2116x, ADI TigerSHARC, TI C64x
16 bits
16 bits
x,+,-
ARCHI’05 - 69
ARCHI’05 - 70
16 bits
16 bits
x,+,-
16 bits
16 bits
Avantages et inconvénients
III. Évolution des DSP
Méthode
Augmenter le
nombre d'UE
Augmenter
les capacités
SIMD
Matériel
dédié
Avantages
Inconvénients
Augmentation limitée de
la consommation, du
coût et de la densité de
code
Augmentation importante de la
complexité
Difficulté à programmer et à
compiler
Compatibilité maintenue Perspectives limitées
Gain en performance très Nécessité d'avoir un
important pour des
parallélisme au niveau des
traitements par blocs
données important
Modifications
architecturales limitées
Consommation mémoire
importante
Gain en performance
important
Nécessite une bonne
connaissance de l'application
1.
2.
3.
4.
5.
6.
DSP conventionnels améliorés
Capacités SIMD
DSP hybride MCU
VLIW
Superscalaire
Comparaison de performances
ARCHI’05 - 71
Architecture hybride DSP/MCU
Architecture hybride DSP/MCU
ƒ Associer des fonctionnalités MCU…
ƒ Méthodes de couplage
• gestion efficace des ITs
• manipulation de bits
• exécution conditionnelle
ƒ à des fonctionnalités DSP,
• calcul intensif
ƒ pour obtenir un code performant et efficace
• limiter la taille du code et donc du circuit
ARCHI’05 - 73
Méthode
Multiprocesseur
Coprocesseur
Avantages
2 jeux d'instructions ≠
Les 2 cœurs travaillent en //
Pas de conflits de ressources
Les 2 cœurs travaillent en //
Inconvénients
Duplication de ressources
Deux outils de
développement
Modèle de programmation
plus complexe
Transferts de données
Extension
Solution Hybride
ARCHI’05 - 74
Modèle de programmation plus
simple
Contraintes imposées par
l'architecture initiale
Architecture plus "propre"
Développement plus
risqué
Architecture Hybride DSP/MCU
ST 140
ƒ ST100, ST122, ST140 (STMicroelectronics)
ƒ Compatible ST100
ƒ Compatible ST122 (dualMAC)
• 32 bits MCU / 16 bits DSP
• Fonctionnalités DSP
o MAC, architecture Harvard, modes d’adressages complexes
• et microcontrôleur
o architecture load/store, large espace d’adressage, code
compact
Contrôleur mémoire instruction
@
d
UC
ƒ Flexible 16-bit/32-bit
Load/Store architecture
ƒ 4-MAC/4-ALU
ƒ Two data clusters
ƒ Double data memory
bandwidth
Mémoire
UT
ƒ ST140-DSP Core in
0.13µm 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
UA
Contrôleur mémoire donnée
ARCHI’05 - 75
ARCHI’05 - 76
Parallélisme niveau instructions
III. Évolution des DSP
DSP conventionnels améliorés
Capacités SIMD
DSP hybride MCU
VLIW
Superscalaire
Comparaison de performances
.
.
INS N
ALU MAC MU
INS1 INS2
?
INS3
– Ordonnancement
des instructions
– compilation
– Run-time
– Unité de dispatch
ARCHI’05 - 78
...
Time
1.
2.
3.
4.
5.
6.
INS 1
INS 2
INS 3
INS4
INS6 INS5
...
Very Long Instruction Word
VLIW : C62xx
256
ƒ Caractéristiques
• Plusieurs instructions par cycle, empaquetées dans
une "super-instruction" large
• Architecture plus régulière, plus orthogonale, plus
proche du RISC
• Jeu de registres uniforme, plus large
ƒ Exemples
•
•
•
•
TI TMS320 C62x et C64x
ADI TigerSHARC ADS-TS20x
Freescale (Motorola) MSC71xx et MSC81xx
StarCore SC1400 Agere/Motorola (DSP core)
ARCHI’05 - 79
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
MPY
ADD
ADD
MV
STW
ADD
MPY
SHL
ADD
SUB
STW
STW
ADDK
B
ADD
SUB
LDW
LDW
B
MVK
NOP
NOP
MPY
MPY
ADD
ADD
STW
STW
ADDK
NOP
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
Register File B
Data Memory Controller
Data Address 1
Data Address 2
Internal Memory
Exploitation du parallélisme
• Two sets of functional units
including:
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]
}
For(i=0;i<N;i++)
{
ACC=ACC + x[i].h[i]
}
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
•
•
•
•
Fetch
ƒ Déroulage des boucles : augmente l'ILP
ƒ CPU
ƒ
ƒ
ƒ
ƒ
ADD
32x8=256 bits
ARCHI’05 - 80
Texas Instruments TMS 320C6x
ƒ VLIW CPU with eight functional
units (RISC-like code)
ƒ 2400 MIPS @ 300MHz
MPY
LOAD
MULT
8-/16-/32-bit data support
40-bit arithmetic options
Saturation and normalisation
Bit-field manipulation and
instruction: extract, set, clear, bit
counting
N/3
ACC
LOAD
MULT
ACC
LOAD
MULT
ACC
Taux d’utilisation
du processeur
100%
ARCHI’05 - 81
ARCHI’05 - 82
Exploitation du parallélisme
C6x
ƒ Pipeline logiciel : maximiser l’IPC
Functional
Unit
Functional
Unit
Functional
Unit
Functional
Unit
Functional
Unit
Functional
Unit
Functional
Unit
Functional
Unit
.L1
.S1
.M1
.D1
.D2
.M2
.S2
.L2
• Optimisation du code assembleur
Register File A
Data Memory Controller
Prologue
LOAD
MULT
Instruction
Description
LDH
ADD
Charge une donnée
16 bits venant de la
mémoire dans un
registre
Charge deux données
16 bits consécutives
venant de la mémoire
Multiplication entre 2
registres, résultat
dans un troisième
Addition
SUB
Soustraction
B
NOP
LOAD
LDW
N
ACC
MULT
LOAD
MPY
ACC
MULT
ACC
Épilogue
Register File B
Nombre de
cycles
5
Unités .M Unités .L
Unités .S Unités .D
-
-
-
.D1
.D2
5
-
-
-
.D1
.D2
2
.M1
.M2
-
-
-
.S1
.S2
.S1
.S2
.S1
.S2
-
.D1
.D2
.D1
.D2
-
1
-
1
-
Branchement
6
-
.L1
.L2
.L1
.L2
-
aucune opération
1
-
-
100%
Taux d’utilisation
du processeur
ARCHI’05 - 83
Exploitation du parallélisme
ƒ 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]
ARCHI’05 - 85
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
ARCHI’05 - 84
Méthodes d’optimisation
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
Depuis le code “RISC”
Instructions en parallèle
Enlever les NOP
Déroulage de boucle
Pipeline logiciel
Lecture mémoire de paquets de données
2 LDH
→
1 LDW
2 LDW
→
1 LDDW
ARCHI’05 - 86
-
Code non optimisé
loop:
loop:
ldh.d1
ldh.d1
nop
*A8++,A2
*A9++,A3
4
mpy.m1
nop
add.l1
A2,A3,A4
sub.l2
[b0] b.s1
nop
Instructions parallèles
loop:
ƒ Code RISC
ldh.d1
|| ldh.d2
ldh.d2
nop
ƒ 40 itérations
ƒ 16*40 = 640 cycles
mpy.m1x
mpy.m1x
nop
add.l1
A4,A6,A6
B0,1,B0
loop
5
sub.l2
[b0] b.s1
nop
ARCHI’05 - 87
A2,B3
,A4
A2,B3,A4
ƒ Parallélisme ?
ƒ 40 itérations
ƒ 15*40 = 600 cycles
A4,A6,A6
B0,1,B0
loop
5
ARCHI’05 - 88
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
B0,1,B0
loop
5
Remplacer les NOP
Not Optimized Properly
loop:
ƒ Instructions à la
place des NOP
ƒ Dépendances interinstructions
LDH
ldh.d1
|| ldh.d2
ldh.d2
sub.l2
[b0] b.s1
nop
LDH
a
b
5
5
MPY *
2
ADD
mpy.m1x
mpy.m1x
nop
add.l1
count SUB
1
+
1
ARCHI’05 - 89
*A8++,A2
*B9++,B3
4
loop
B
6
ARCHI’05 - 90
*A8++,A2
*B9++,B3
B0,1,B0
loop
2
A2,B3
,A4
A2,B3,A4
A4,A6,A6
ƒ Instructions à la
place des NOP
ƒ 40 itérations
ƒ 8*40 = 320 cycles
Déroulage de boucles
Pipeline logiciel
ƒ Déroulage + ré-ordonnancement des instructions
ƒ Réintroduction de la boucle sur le motif répété
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
MPY
MPY
MPY
MPY
MPY
MPY
MPY
MPY
MPY
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
.M2
.S1
.S2
NOP
ƒ N=40 itérations
ƒ 7 + (N-7) +7 =
47 cycles
ƒ 47 instructions
VLIW!
ARCHI’05 - 91
.D1
LDH
LDH
LDH
LDH
LDH
LDH
LDH
LDH
LDH
.D2
LDH
LDH
LDH
LDH
LDH
LDH
LDH
LDH
LDH
.L1
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
.L2
SUB
SUB
SUB
SUB
SUB
SUB
SUB
.M1
MPY
MPY
MPY
MPY
MPY
MPY
MPY
MPY
MPY
.M2
.S1
.S2
NOP
B
B
B
B
B
B
ƒ 47 cycles
ƒ 15 instructions
ARCHI’05 - 92
Accès mémoire multiples
a1
a0
A0
LDW.D1
Accès mémoire multiples
*A5++,A0
x
x1
A7
a1 * x1
x0
=
A1
A3
a0 * x0
LDW.D1
*A6++,A1
MPY.M1 A0, A1, A3
MPYH.M1 A0, A1, A7
+
a1x1 + a0x0 A4
ARCHI’05 - 93
Cycle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ADD.L1
A3, A7, A4
ƒ Lecture de 4 données + 2 MAC en parallèle
Cycle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ARCHI’05 - 94
.D1
LDW
LDW
LDW
LDW
LDW
LDW
LDW
LDW
.D2
LDW
LDW
LDW
LDW
LDW
LDW
LDW
LDW
.L1
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
.L2
ADD
ADD
ADD
ADD
ADD
ADD
ADD
ADD
.M1
.M2
MPY
MPY
MPY
MPY
MPY
MPY
MPY
MPY
MPYH
MPYH
MPYH
MPYH
MPYH
MPYH
MPYH
MPYH
.S1
.S2
NOP
ƒ N=40 itérations
ƒ 7 + (N/2-7) +8
= 28 cycles
StarCore SC1400 core
VLIW combiné au SIMD
ƒ Processeur VLIW 16 bits développé en commun
par Agere (Lucent) et Freescale (Motorola)
ƒ 300 MHz, faible tension
ƒ Optimisé pour faible consommation
ƒ ADI TigerSHARC
• Combine le VLIW au SIMD afin d'atteindre un
parallélisme massif
• SIMD hiérarchique
o Le TigerSHARC peut exécuter 8 multiplications 16x16 en
virgule fixe par cycle (4x le C62xx)
• Meilleure densité de code (16 bits) que C6x
• Pipeline plus simple (5 étages contre 11)
BMU
MAC
ALU
Shift
MAC
ALU
Shift
MAC
ALU
Shift
Instruction SIMD
MAC
ALU
Shift
ALU
MAC
Shift
4 MAC 16 bits
ARCHI’05 - 95
ARCHI’05 - 96
VLIW combiné au SIMD
C64x
ƒ C64x
• Jusqu’à 1.1 GHz, ~9 GOPS
• Six ALUs (32/40-Bit)
o une 32/40-Bit, deux 16-Bit, ou quatre 8-Bit opérations
arithmétiques par cycle et par ALU
• 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
ARCHI’05 - 97
ARCHI’05 - 98
ALU
MAC
Shift
4 MAC 16 bits
Superscalaire
Avantages et inconvénients
ƒ Techniques dérivées des processeurs généraux
hautes-performances
VLIW
Plusieurs (2-4) instructions par cycle
Jeu d'instructions de type RISC
Parallélisme important
LOOP
//
LDDU
Exemple
• LSI Logic LSI40x
(ZSP400 core)
o 4-way, 260MHz
ARCHI’05 - 99
FIR on LSI40x
R4, R14, 2
LDDU
R8, R15, 2
MAC2.A R4,R8
AGN0
LOOP
Superscalaire
Architectures plus orthogonales
⇒ meilleures cibles pour les
compilateurs
Grand bon dans les
performances
Architectures plus orthogonales
⇒ meilleures cibles pour les
compilateurs
Pas de problèmes de
séquencement
ARCHI’05 - 100
Générations : bilan
ARCHI’05 - 101
Avantages
Grand bon dans les
performances
• Prédiction de branchement
• Cache dynamique
ƒ
ƒ
ƒ
ƒ
Méthode
ARCHI’05 - 102
Inconvénients
Bande passante vers la
mémoire importante
Forte consommation
Séquencement délicat
Augmentation de la taille du
code importante
Bande passante vers la
mémoire importante
Plus forte consommation
Temps d'exécution
difficilement prédictible
Processeurs récents (2005)
ƒ DSP
•
•
•
•
•
Analog Devices BF53x (Blackfin)
Analog Devices TS20x (TigerSHARC)
Freescale MC1xx/81xx
Texas Instruments C55x
Texas Instruments C64x
ƒ Processeurs applicatifs
•
•
•
•
ARCHI’05 - 103
Vitesse (BDTImark2000)
ARCHI’05 - 106
Intel PXA255/26x (XScale)
Intel PXA27x (XScale + Wireless MMX)
Samsung S3C24xx (ARM9)
Texas Instruments OMAP591x (ARM9 + C55x)
ARCHI’05 - 105
Coût – performance (mark/$)
ARCHI’05 - 107
Efficacité énergétique (mark/mW)
ARCHI’05 - 108
Efficacité mémoire (memmark)
ARCHI’05 - 109
BDTIMark
III. Flot de développement
1. Flot général de développement
2. Compilation pour DSP
3. Arithmétique virgule fixe
ARCHI’05 - 110
Flot de développement général
Flot général (suite)
ƒ Développement (actuel) d'applications (signal)
Algorithme 1
Mise au point
de l'algorithme
– Matlab/Simulink
– SPW, Ptolemy, CoCentric
– VCC
Génération manuelle ou automatique
Code C
"flottant"
– Compilateur C, debugger
– Utilisation de vecteurs de
test issus de la simulation
système
Génération manuelle
– Compilateur C, debugger
– Utilisation de vecteurs de
test issus de la simulation
système
Code C
"fixe"
ARCHI’05 - 112
Algorithme 1
Code C
Implantation
logicielle
Système d'Exploitation
Temps Réel
Implantation
Matérielle
Algorithme 2
Code C
– Compilateur C pour DSP
– Simulation assembleur
– Traduction en VHDL
– Synthèse du circuit
– Simulation VHDL
Algorithme N
Code C
ARCHI’05 - 113
Compilation
Inefficacité des compilateurs C
ƒ Compilation C vs optimisation assembleur
ƒ Surcoût
associé au
compilateur
• e.g. STMicrolectronics
Assembl
er MCU
28%
Assembl
er DSP
55%
Code C
DSP
8%
Code C
µCtrl
9%
Code C
MCU
5%
Assembler
MCU
25%
Assembler
DSP
25%
Code C
DSP
45%
ƒ Facteur 4 à 10
(virgule fixe)
ƒ Facteur 2 à 4
(flottants)
ƒ Orthogonalité
1000
800
Sur coût (%)
ƒ Conception de code enfoui dans l'industrie
Sur coût temps d'execution
1200
ANSI C
C modifié
600
400
200
• VLIW
0
[Paulin97]
ARCHI’05 - 115
ADSP21xx/
ADI
[Paulin00]
DSP56002/
Motorola
TMS320C51/ TMS320C54/ TMS320C62/
TI
TI
TI
Processeurs
ARCHI’05 - 116
Inefficacité des compilateurs C
Raisons de l’inefficacité
ƒ Surcoût associé
au compilateur
ƒ Absence de support de l’arithmétique virgule fixe
ƒ Inefficacité des techniques classiques de
développement des compilateurs
Sur coût taille du code
400
350
ANSI C
• Taille du code
300
o développement de l'architecture puis du compilateur
¿ compilateurs reciblables
C modifié
Sur coût (%)
250
200
ƒ Inefficacité des techniques classiques de
compilation
150
100
o architecture non orthogonale, unités spécialisées, instructions
complexes
50
0
ƒ Absence de support des spécificités des DSP
-50
o registres d’état, modes d’adressage (modulo, bit inversé)...
-100
ADSP21xx/
ADI
DSP56002/
Motorola
TMS320C51/
TI
TMS320C54/
TI
Processeurs
ARCHI’05 - 117
TMS320C62/
TI
¾Extensions du langage C : e.g. Embedded C
ARCHI’05 - 118
Formats de codage
III. Flot de développement
ƒ Virgule fixe
• Représentation : signe - partie entière - partie fractionnaire
nx
mx
1. Flot général de développement
2. Compilation pour DSP
3. Arithmétique virgule fixe
S bm-1 bm-1
b1
b0 b-1 b-2
m−1
bn-2 bn-1 bn
x = (−2)m S + ∑bi 2i CA2
i =− n
o bx = mx + nx + 1
o le format d’une donnée ne varie pas au cours du temps
ƒ Virgule flottante
• Représentation : exposant - mantisse
Exposant e bits
SE
d1
d2
Mantisse M+1 bits
de-1
SE
C1
C2
C3
Cm-2 Cm-1 Cm
⎛1 M
⎞
x = 2u (−1)SE ⎜ + ∑Ci 2i −1 ⎟
⎝ 2 i =1
⎠
E −1
avec u = (−1)SE ∑ di 2i
i =1
ARCHI’05 - 120
Comparaison fixe - flottant
Comparaison fixe - flottant
Dynamique virgule fixe/flottante
ƒ Virgule fixe (>90% des ventes des DSP)
ƒ Dynamique
⎛ max(x ) ⎞
⎟=
DN (dB) = 20. log⎜⎜
⎟
⎝ min( x ) ⎠
D ynamique en dB
1500
• Précision importante mais problèmes de débordement
1000
o nécessité de recadrer les données
500
•
•
•
•
flottant
fixe
0
10
⎛P ⎞
ρdB = 10. log⎜⎜ s ⎟⎟ =
⎝ Pe ⎠
30
Rapport Signal à Bruit virgule fixe/flottante
100
• C5x > $5
ƒ Virgule flottante
•
•
•
•
flottant
80
RSB en dB
ƒ Rapport signal à bruit
de quantification (SQNR)
15
20
25
Nombre de bits
60
40
(16 bits)
20
Temps de développement plus long
Efficacité énergétique plus importante, plus rapide et moins cher
Consommation moins importante
Marché : applications grand public
Temps de développement plus rapide, compilateurs plus efficaces
Plus grande portabilité, pas de recadrage
Pas de débordements : dynamique de 1500dB (32 bits)
Plus cher, consomme plus
• C67x > $30
fixe
0
-50
ARCHI’05 - 121
0
Dynamique du signal d entré e en dB
50
ARCHI’05 - 122
Eléments de l’UT
Règles de l’arithmétique virgule fixe
ƒ Multiplieur câblé
ƒ Additionneur
ƒ U.A.L.
ƒ Addition: a+b
mA
BB
AA
(1 Op/cycle)
N
• Format de a et b identique
• Choix d’un format commun
N
×
2N
MAC
ƒ Registres à décalage
Ö recadrage des données
o Alignement de la virgule
o Extension de bits
nA
b1
+
Accumulateur
Accumulateur
Sat
/Arr
SR bmR
b1
bnA
nB
b0 b-1 b-2
m R = max(m A , m B ) + 1
×
bnA
n R = max(n A , n B )
mA
• Représentation identique
• Doublement du bit de signe
SA bmA b1
nA
b0 b-1 b-2 bnA
mB
nB
SB bmB b0 b-1 bnB
SR SR bmR
b1
mR = m A + mB
ARCHI’05 - 124
mBnB
SB SB SB bmB Sb0 bb-1 bb-2 bbnB b0 b0
B
mB
0
-1
-2
nB
ƒ Multiplication: a × b
Ö stockage des données en double précision
b0 b-1 b-2
mB
+
2N+bg
ƒ Gestion des débordements
ƒ Bits de garde
ƒ Registres d’accumulation
ARCHI’05 - 123
SA bmA
b0 b-1 b-2
nR = nA + nB
bnR
Codage en virgule fixe : objectifs
Codage en virgule fixe : étapes
ƒ Objectifs pour le codage en virgule fixe
1. Détermination de la dynamique des données
• Garantir l’absence de débordements
ƒ
o Connaissance du domaine de définition des données
2. Détermination de la position de la virgule
• Maximiser la précision
3. Détermination de la largeur des données
Minimiser le nombre
de bits de poids fort
non utilisés
Minimiser le pas de
quantification
S bm-1 bm-1
b1
b0 b-1 b-2
ƒ
Opérateurs SIMD, précision multiple
4. Evaluation de la précision des calculs
ƒ
bn-2 bn-1 bn
PMSB
Méthodes par simulation ou analytiques
PLSB
ARCHI’05 - 125
ARCHI’05 - 126
Filtre récursifs (IIR)
Filtre IIR d’ordre 2 (cellule i)
ƒ Cascade de cellules d’ordre 2
wn
+
×
×
a1
z-1
a2
b1
+
b0
…
yn
yi-1(n)
sortie cellule
précédente
+
+
a2,i
×
a1,i
wi(n-2)
×
wi(n-1)
wi(n)
×
a1
z-1
b1
×
×
b2
×
z-1
×
×
×
wn
+yn
b0
z-1
×
+
ADD0
(entrée) x(n)
ADD 1
ADD 0
xn
Méthodes statistiques ou analytiques
a2
b1,i
×
b2,i
+
b2
×
b0,i
×
ADD1
+
y (n) (sortie)
yi(n) (entrée cellule suivante)
ARCHI’05 - 127
ARCHI’05 - 128
Dynamique des données
Dynamique des données (IIR)
ƒ Normes utilisées en TS
ƒ Norme L1
ƒ Sources de débordements : additionneurs
• IIR : 2 sources ADD0 et ADD1
∞
z max1 = max n ( x(n) ). ∑ h(m)
¾ Méthode garantissant
l’absence de débordements
m = −∞
ƒ Norme Chebychev
¾ Méthode garantissant l’absence
de débordements pour un signal
d’entrée à bande étroite e.g.
z max 2 = max n ,ω ( x(n) ) max ( H (ω ) )
x(n)=cos(wt)
b0
×
a1
z-1
∞
b1
a2
ymax1 = xmax . ∑ h(m)
m = −∞
×
×
H ( z) =
b2
mx = ⎡log 2 (max n ( x(n) ))⎤ = 0
Filtre1 Num (z )/Den(z )
mwi = ⎡log 2 (max n ( wi (n) ))⎤ = 4
2
x ∈ [−1,1]
1.5
0.5 − 0.2428 z −1 + 0.5
H ( z) =
1 − 0.85 z −1 + 0.8417 z − 2
∑ h(m) = 2.5645 ⎯⎯→ m
m = −∞
H(jw)
1
m yi = ⎡log 2 (max n ( yi (n) ))⎤ = 2
0.5
∞
y
=2
0
0
0.5
1
1.5
2
2.5
3
3.5
Filtre 1/Den(z )
8
∞
∑h
D
( m) = 9 ⎯
⎯→ mw = 4 → k1 = 4
(
HD(jw)
4
Codage des coefficients
= -27951
= 27581
= 16384
= 16384
= -7956
0
0
0.5
1
1.5
2
2.5
3
maij = ⎡log 2 (max j ( ai
))⎤ = 0
( ))⎤ = 0
mbij = ⎡log 2 max j bij
6
2
ARCHI’05 - 131
×
∞
wmax1 = xmax . ∑ hD (m)
yn
Position de la virgule (IIR)
ƒ Exemple
a1
a2
b2
b0
b1
×
+
ARCHI’05 - 130
Dynamique des données (IIR)
m = −∞
ADD 1
z-1
1
H D ( z) =
1 + a1 z −1 + a2 z − 2
ARCHI’05 - 129
xmax
+
m = −∞
ƒ Arithmétique d’intervalle (non récursifs)
xmax
wn
ADD 0
xn
3.5
Fonction de transfert des filtres H(z) et HD(z)
m ADD 0 = MAX (mx , mai + mwi + 1, mwi ) = 5
m ADD1 = MAX (mbi + mwi + 1, m yi ) = 5
ARCHI’05 - 133
b0 + b1 z −1 + b2 z − 2
1 + a1 z −1 + a2 z − 2
Codage des données (IIR)
Conversion flottant-fixe (IRISA)
ADD0
(16,mx,,nx)
x(n)
(16,0,15)
(32, madd0 , nadd0)
+
+
C source
code
(32,5,16)
#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++
}
Correlator.C
#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++
}
#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++
}
Floating-point
specification
Correlator.C
Correlator.C
×
a2,i
a1,i
×
(16,mw,nw)
BB
AA
wi(n-2)
16
16
32
×
b1,i
wi(n-1)
b2,i
+
wi(n)
×
b0,i
ADD1
×
+
(32, madd1, nadd1)
(32,5,16)
Binary-point
position
determination
High level
synthesis tool
BSS
Selection
Scheduling
Allocation
32
Acc
Acc
Fixed-point conversion
(16,4,11)
Fixed-point
specification
optimization
Accuracy
evaluation
Fixed-point
specification
optimization
Code generation
tool
CALIFE
Selection
Scheduling
Allocation
(16,my,ny)
(16,2,13)
Precision
constraint
y (n)
ARCHI’05 - 134
ARCHI’05 - 135
[Ménard02, Ménard04]
Conclusions
Conclusions
ƒ Processeurs spécialisés garantissent :
ƒ Les processeurs généraux ont maintenant des
performances qui concurrencent les DSPs
• efficacité énergétique, rapport performances/coût
• autres exemples probants
o Processeurs multimédia
o Network Processor NPU
ƒ 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
• Mais le prix ... et la consommation ne sont pas
applicables aux applications embarquées grand public
ƒ La facilité de compilation est un facteur
important
• time-to-market...
ƒ Choisir un DSP requiert une analyse fine
• qui dépend de l'application...
ARCHI’05 - 136
ARCHI’05 - 137
Perspectives
Piste 1 : DSP conventionnel
ƒ Quelle sera l’architecture
pour le traitement du
signal et de l’image de
demain (ou d’après
demain) ?
ƒ DSP conventionnel multi-MAC
ƒ Unités spécialisés
Programmation ?
Viterbi
Turbo
MULT
MULT
MULT
MULT
FFT
ALU
ALU
ALU
CDMA
ACC
ARCHI’05 - 138
ARCHI’05 - 139
Piste 2 : ULIW
ƒ Ultra Large Instruction Word
• e.g. Silicon Hive AVISPA+
Piste 3 : multiprocesseur
Compilation ?
ƒSMT ?
ARCHI’05 - 140
ACC
ƒ PicoArray (picoChip)
• ~320 PE (VLIW 3-way)
• 160 MHz
• 190 GIPS
ARCHI’05 - 141
ALU
PicoArray
Piste 4 : FPGA
ƒ Static Interconnect
ƒ PE: 16-bit 3-way VLIW
ƒ e.g. Altera Stratix
• Multiplieurs 9x9 – 18x18, 2
GMAC/s par bloc, 250 MHz
ƒ VHDL: structure
ƒ C/Assembly: PE
ARCHI’05 - 142
ARCHI’05 - 143
Piste 5 : processeur reconfigurable
ƒ Architecture DART
RDP1
Segmented Network
RDP2
Ctrl
RDP3
RDP4
Ctrl
DMA
RDP5
Config
Mem.
FPGA
Data.
Mem.
• 3G/UMTS Mobile Terminal
• 802.11a (Channel Est.)
• IRISA/R2D2
• STMicroelectronics
• CEA LIST/LETI
RDP6
Loop Managment
AG1
AG2
AG3
AG4
Data
mem1
Data
mem2
Data
mem3
Data
mem4
ƒ Performances
Fully Connected Network
reg
reg
ARCHI’05 - 144
FU1
FU2
FU3
FU4
•
•
•
•
•
5-10 GOPS/[email protected]
200MHz, 11mm2
300 mW @ 5 GOPS
16 MOPS/mW @ 5 GOPS
Circuit en juin 2005
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
ARCHI’05 - 145
Bibliographie
Bibliographie
ƒ Programmable Digital Signal
Processors
by Yu Hen Hu (Editor), Marcel
Dekker, 2001
ƒ Digital Signal Processing
Applications With Motorola's
DSP56002 Processor
by Mohammed El-Sharkawy,
Prentice Hall, 1996
ƒ VLSI Digital Signal Processors:
An Introduction to Rapid
Prototyping and Design
Synthesis
by Vijay Madisetti,
Butterworth-Heinemann, 1995
ƒ Digital Signal Processing
Implementation Using the
TMS320C6000 DSP Platform
(With CD-ROM) by Naim
Dahnoun, Prentice Hall, 2000
ƒ Méthodes et architectures pour
le TSI en temps réel, de Didier
Demigny, Hermès, 2002
ARCHI’05 - 146
Références
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
[David00] R. David, Etat de l'art des cœurs de DSP, Rapport DEA, ENSSAT, 2000.
[Sentieys00] O. Sentieys, Etat de l'art des DSP, École thématique du CNRS - Conception de
systèmes enfouis, Seix (Ariège), 20-23 novembre 2000.
[Sentieys01] O. Sentieys, DSP et processeur superscalaire : la convergence ?, Symposium en
Architectures Nouvelles de Machines, Paris, 2001.
[Ménard04] D. Ménard, 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.
ARCHI’05 - 148
ƒ DSP Applications Using C and
the TMS320C6x DSK by Rulph
Chassaing, Wiley-Interscience,
2002
ARCHI’05 - 147
Webographie
ƒ
ƒ
ƒ
ƒ
http://www.bdti.com
http://dsprelated.com/
http://www.ti-training.com/courses
http://www.eg3.com/dsp/index.htm
ARCHI’05 - 149
Téléchargement