DSP - Caroline Petitjean

Transcription

DSP - Caroline Petitjean
2006-2007
Les processeurs de
traitement du signal
Caroline Petitjean
[email protected]
DSP : Digital Signal
Processor
000
• Produits utilisant des DSP:
Lecteur codes barres
CCD ScanPLus 1800 SR Interscan
Amplificateur home
cinéma Denon AVR3806
Téléphone portable
Ericsson R600
Autoradio MP3
KD-SHX851 JVC
Console de mixage
Allen&Heath
2
1
Applications des DSP
000
• Communications
• Image / Vidéo
– Modem, téléphonie
– Télévision & radio
numérique
– Cryptage
– Compression/Codage
– Traitement
• Militaire
• Audio
–
–
–
–
– Imagerie (radar,
sonar)
– Cryptographie
– Guidage de missiles
– Navigation
Mixage et édition
Effets
Suppression de bruit
Annulation d’écho
3
Applications des DSP
000
• Médical
– Equipements de
monitoring (EEG,
ECG)
– Imagerie (IRM…)
• Instrumentation
– Analyseurs de
spectre
– Générations de
fonctions
• Automatisation
– Commande de
machines
– Contrôle de moteurs
– Robots
• Automobile
–
–
–
–
–
Contrôle du moteur
Assistance au freinage
Aide à la navigation
Commandes vocales
Tableau de bord
4
2
Principaux constructeurs de DSP
000
autres
13,1%
6,8%
7,7%
49,7%
9,8%
Achats de DSP en
millions de dollars
12,9%
ex-Lucent
ex-Motorola
Source : EETimes.com, 2004
5
Plan de l’exposé
000
• Le Traitement Numérique du
Signal (TNS) et les DSP
• Architecture des DSP :
CPU, mémoire…
• Performances des DSP :
augmentation,
mesure de performances, gamme de DSP…
• Développement d’applications sur
un DSP : programmation…
6
3
Plan de l’exposé
000
• Le Traitement Numérique du
Signal (TNS) et les DSP
• Architecture des DSP :
CPU, mémoire…
• Performances des DSP :
augmentation,
mesure de performances, gamme de DSP…
• Développement d’applications sur
un DSP : programmation…
7
Le TNS : pourquoi ?
000
Stabilité
• Insensibilité à
l’environnement
• Précision
connue et
contrôlée
• Reproductibilité
Souplesse
• Programmation
flexible
• Développement
rapide
• Facilité pour
certains
traitements
8
4
Le TNS : comment ?
000
• Chaîne classique de traitement
numérique du signal :
Signal
analogique
d’entrée
Filtre anti
repliement
Mémoire
CAN
?
CNA
Ports d’E/S
numérique
Filtre de
reconstruction
Signal
analogique
de sortie
9
Solutions pour le TNS
000
• Classification des processeurs
ASIC
ASSP
FPGA
Source : d’après [1]
ASIC : Application Specific Integrated Circuit
ASSP : Application Specific Standard Product
FPGA : Field Programmable Gate Array
10
5
Classification des processeurs
000
• Le processeur généraliste (GPP)
• Coût relativement élevé
• Forte consommation électrique
• Bonnes performances en calcul numérique
– Certains surpassent les DSP en puissance brute
• GPP moins bons que les DSP pour :
– la consommation électrique
– la gestion des entrées-sorties
– le prix
11
Classification des processeurs
000
• Le microcontrôleur
• Faible coût
• Faible consommation électrique
• Mémoire limitée
• Peu adapté aux signaux numériques
• Adapté aux tâches de contrôle
• Programmation bas niveau
12
6
Classification des processeurs
000
• ASIC/ASSP (Application-Specific…)
• Circuit intégré dédié à une application
– dans une entreprise : ASIC
– pour un marché (ex: téléphonie) : ASSP
• Ne sont pas programmables
• Mise en œuvre complexe et longue
• Coût élevé
• FPGA : sorte de ASIC programmable
13
Classification des processeurs
000
• DSP
• Coût relativement faible
• Faible consommation électrique
• Jeu d'instruction spécialisé
• Calculs numériques
• Entrée-sortie de données à grand débit
• Mémoire limitée
14
7
Le TNS : besoins
000
• Algorithmes de TNS :
– filtrage
– transformées
– codage/décodage
– reconnaissance de la parole
– synthèse de signaux
– élimination d’écho
– estimation spectrale…
15
Le TNS : besoins
000
• Contrainte de temps réel
• Ex : taux d’échantillonnage 48kHz
Te = 20.833 µs
Arrivée de
l’échantillon x(n)
Arrivée de
l’échantillon x(n+1)
t
t
t+Te
Temps de traitement T
doit être <Te
pour le temps réel
16
8
Le TNS : besoins
000
• Cahier des charges :
1. Calculs rapides
2. Contraintes temps réel (entrées/sorties à débit fixe)
3. Contraintes systèmes embarqués (taille limitée,
faible consommation d’énergie)
4. Production de masse
Les DSP ont une architecture
matérielle et logicielle dédiée
permettant de répondre à ces besoins
17
Exemples d’applications
000
• Lecteur MP3 dictaphone
Source : ti.com
18
9
Exemples d’applications
000
• Scanner de codes barres
Source : ti.com
19
Exemples d’applications
000
• Appareil photo numérique
Source : ti.com
20
10
Exemples d’applications
000
• Imagerie par Résonance Magnétique
Source : ti.com
21
Exemples d’applications
000
• Console de mixage
Source : ti.com
22
11
Exemples d’applications
000
• Récepteur GPS
Source : ti.com
23
Exemples d’applications
000
• TV à écran LCD
Source : ti.com
24
12
Exemples d’applications
000
• Kit mains libres
Source : ti.com
25
Spécificités des DSP
000
Opérations les
+ courantes
dans les algos
de TNS
imposent
Contraintes
matérielles sur
l’architecture
DSP
• Plan de cette partie :
– 2 algorithmes classiques de TNS :
• Filtre à Réponse Impulsionnelle Finie
(RIF)
• Transformée de Fourier rapide (FFT)
Spécificités des DSP
26
13
Spécificités des DSP
000
• Algo n°1 : Filtre RIF
N −1
Une équation aux différences finies y (n) = a (i ) x(n − i )
∑
i =0
spécifie la sortie y(n)
27
Spécificités des DSP
000
N −1
• Pour chaque cellule a(i)x(n-i) :
y (n) = ∑ a (i ) x(n − i)
i =0
– Recherche de l’instruction
– Recherche du coefficients a(i)
– Recherche de la donnée x(n-i)
– Multiplication a(i)x(n-i)
– Accumulation a(i-1)x(n-i-1) + a(i)x(n-i)
– Décalage en mémoire x(n-i) Æ x(n-i-1)
4 accès en mémoire
2 accès à l’unité
de calcul
28
14
Spécificités des DSP
000
• Objectifs :
– Réduire les accès mémoire
– Augmenter les accès mémoire simultanés
– Réduire le temps passé à faire des calculs
Instruction MAC
(multiplication-accumulation)
en 1 seul cycle d’instruction
29
Spécificités des DSP
000
• Objectifs :
– Réduire les accès mémoire
– Augmenter les accès mémoire simultanés
Architecture
Von Neuman
(microcontrôleur)
Architecture
Harvard
(DSP)
Source images : [1]
30
15
Spécificités des DSP
000
• Objectifs :
– Réduire les accès mémoire
Mode d’adressage circulaire
Buffer circulaire : Segment
mémoire contenant des données
L+N L
(échantillons, cœfficients…)
Accès par pointeurs générés et
incrémentés automatiquement
– Pas de test sur les pointeurs
– Pas de reset nécessaire
…
L+1
…
L+2
…
…
31
Spécificités des DSP
000
• Buffer linéaire
nouvel échantillon
x(n)
Xtab(t-1)
y(n)
Xtab(t)
déc
alag
e1
x(n)
a0
x(n-1)
a1
2
x(n-2)
a2
…
…
…
…
…
…
…
…
…
0
x(n-1)
1
x(n-2)
…
0
N-2 x(n-N+1)
N-2 x(n-N+2)
aN-2
N-1
N-1 x(n-N+1)
aN-1
x(n-N)
N −1
y (n) = ∑ a (i ) x(n − i )
i =0
x(n-N)
source image : [9]
Mise à jour du buffer
Calcul de y(n)
32
16
Spécificités des DSP
000
• Buffer circulaire
nouvel échantillon
Xtab(t)
x(n)
0 x(n-k+1)
x(n-k+1)
y(n)
Xtab(t-1)
0
1
1
…
…
x(n-N+1)
…
aN-1
x(n-N+1)
x(n)
a0
x(n-1)
x(n-1)
a1
x(n-2)
x(n-2)
a2
x(n-N)
idx
ak+1
idx
N-2
…
N-2
…
…
N-1
x(n-k)
N-1
x(n-k)
ak
Mise à jour du buffer
N −1
y (n) = ∑ a (i ) x(n − i )
i =0
Calcul de y(n)
source image : [9]
33
Spécificités des DSP
000
• Algo n°2 : FFT (Fast Fourier Transform)
in
sur N points
N −1
− 2πj
y (n) = ∑ x(i )e
N
pour 0 ≤ n ≤ N − 1
i =0
Calcul des N
échantillons y(n)
Nombre de
multiplications
Sans
optimisation
Algorithme de
Cooley-Tukey
Séquentiel
Simultané
N²
N/2 log2(N)
34
17
Spécificités des DSP
000
• Algo n°2 : FFT par Cooley-Tukey
N −1
y (n) = ∑ x (i )e
− 2πj
i =0
in
N
x0
y0
N −1
x4
y1
i =0
x2
y2
x6
y3
x1
y4
x5
y5
x3
y6
x7
y7
= ∑ x(i )WNin
Ex : N = 8
Besoin d’accéder aux
échantillons dans
cet ordre
Source : [5]
35
Spécificités des DSP
000
• Mode
d’adressage
spécifique :
“Bit reverse”
Ordre naturel
Ordre pour la FFT
des échantillons
Cooley-Tuckey
0
000
000
0
1
001
100
4
2
010
010
2
3
011
110
6
4
100
001
1
5
101
101
5
6
110
011
3
7
111
111
7
36
18
Spécificités des DSP
000
• Résumé :
Organisation
mémoire
Jeu
d’instructions
Architecture Harvard
MAC en 1 cycle
Modes
d’adressage
Entrées/sorties
spécifiques
Bit reverse, circulaire
Flot continu de données
37
Plan de l’exposé
000
• Le Traitement Numérique du
Signal (TNS) et les DSP
• Architecture des DSP :
CPU, mémoire…
• Performances des DSP :
augmentation,
mesure de performances, gamme de DSP…
• Développement d’applications sur
un DSP : programmation…
38
19
Architecture des DSP
000
• Plan de cette partie :
– Représentation des nombres
– CPU
Æ Unité de calcul
Æ Unité de commande (pipeline)
Æ Unité de génération d’adresses
– Unité de mémoire
– Périphériques
39
Représentation des nombres
000
• Les valeurs traitées (coefficients, échantillons…)
sont représentées sous 2 formes :
Virgule fixe
Virgule flottante
• Format courant : 16/24 bits
• Idéal avec CAN/CNA 12/14 bits
• Applications : Contrôle industriel,
communications, instrumentation,
parole, médical, militaire…
40
20
Représentation des nombres
000
• Les valeurs traitées (coefficients, échantillons…)
sont représentées sous 2 formes :
Virgule fixe
Virgule flottante
• Format courant : 32 bits
• Idéal pour le traitement sur une
grande dynamique
• Applications : Audio professionnel,
vidéo, médical…
41
Représentation des nombres
000
• Virgule fixe : Complément à 2 (C2)
Nombre Codage
2
N −1
−1
− 2 N −1
3
2
1
0
-1
-2
-3
-4
0
0
0
0
1
1
1
1
1
1
0
0
1
1
0
0
1
0
1
0
1
0
1
0
Nombre positif :
codé comme un
binaire naturel
Nombre négatif :
Inversion des
bits puis ajout
de 1
Signe
Le codage C2 convient bien aux opérations maths.
42
21
Représentation des nombres
000
• Virgule fixe : Complément à 2
• Représentation “circulaire”
– En ajoutant 1 à la plus grande valeur
positive on obtient la valeur négative
extrême
0
-1
1
000
111
– Ex sur 3 bits :
001
-2 110
010 2
101
011 3
100
-3
-4
43
Représentation des nombres
000
• Virgule fixe : Codage des entiers
Exemple sur 8 bits
6
x = −b7 27 + ∑ bi 2i
− 27 ≤ x ≤ 27 − 1
i =0
Poids
-27
26
25
24
23
22
21
20
27
0
0
0
1
1
0
1
1
0
0
0
0
0
0
0
0
0
-4
1
1
1
1
1
1
0
0
Bit de signe
44
22
Représentation des nombres
000
• Virgule fixe : Codage des réels
Æ Format Qk
Ex : 2,3125
Partie fractionnaire
Partie entière
sur k bits
sur N-k bits en C2
• Cas particulier : k = 0 Æ entiers
45
Représentation des nombres
000
• Virgule fixe : Codage des réels
Æ Format Qk
– Pour coder le réel x, trouver les bi tels que :
x = −bn 2
n−k
+
n − k −1
∑b
i+k
i=− k
– Ex : format Q5 sur 8 bits
2i
(n=8, k=5)
Partie entière : 3 bits / fractionnaire : 5 bits
Poids
-22
21
20
2-1
2-2
2-3
2-4
2-5
2,3125
0
1
0
0
1
0
1
0
46
23
Représentation des nombres
000
• Virgule fixe : Codage des réels
Æ Format Qk
– Correspond à la représentation C2 de
l'entier y tel que :
k
y = round(2 x)
– Ex : y = round(25.2,3125)
= 74 = (0100 1010)b
Poids
-22
21
20
2-1
2-2
2-3
2-4
2-5
2,3125
0
1
0
0
1
0
1
0
47
Représentation des nombres
000
• Exemple : Format Q5 sur 8 bits
– Dynamique : -2N-k-1 … 2N-k-1-2-k
Poids
min
-22 21
-4
1
-3.96875 1
20
,2
-1
2-2
2-3
2-4
2-5
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
3.9375 0
max 3.96875 0
1
1
1
1
1
1
1
1
1
1
1
1
0
1
0
48
24
Représentation des nombres
000
• Exemple : Format Q5 sur 8 bits
– Précision : q = 2-k
– Erreur maximale : q/2 = 2-(k+1)
– Ex : 010.01010 = 2,3125
010.01011 = 2,3438
+q = +2-k
– Si on doit coder 2,33, l’erreur sera de 2-6
max.
49
Représentation des nombres
000
• Un format très classique :
Q15 sur 16 bits : réels entre -1 et 1
14
x = −b15 20 + ∑ bi 2i −15 , q = 215 , − 1 ≤ x ≤ 0.99997
15
14
±20
2-1
i =0
0
2-15
signe
Exemple
15
14
13
12
11
10
1
1
0
0
1
1
9
0
8
0
7
0
6
5
0
0
4
0
3
0
22
0
1
0
0
0
-1+0,5+2-4+2-5 = -0,40625
50
25
Représentation des nombres
000
•
Ecrire le mot binaire 8 bits signé
au format Q7 :
•
+0.5
•
+1.0
•
-1.0
•
+1/3
•
-1/3
51
Représentation des nombres
000
•
Si l’on veut D chiffres
fractionnaires significatifs en
décimal, quelle doit être le format
Qk ?
52
26
Représentation des nombres
000
Si l’on veut D chiffres fractionnaires
significatifs en décimal, quel doit être le
format Qk ?
•
Il faut avoir q ≤ 10
soit : 2− k ≤ 10 − D
Puis :
•
−D
k ≥ D log 2 (10) ≈ 3.3D
Ex : le format Q15 a une précision de 4 chiffres
décimaux après la virgule
53
Représentation des nombres
000
• Virgule flottante : mots de 32 bits
sous forme mantisse-exposant
x = (−1) .(1, f ).2
s
e −127
7
30
23
22
s
e7
e0
f22
23
22
1
1
signe
exposant
30
0
0
0
0
0
0
f = ∑ f i 2i − 23
i =0
31
31
22
e = ∑ ei 2i
i =0
0
…
…
f0
partie fractionnaire de la mantisse
1
1
0
1
0
…
…
0
0
0
+1,75.27-127 = 1,3165.10-36
54
27
Représentation des nombres
000
(95% des DSP)
Virgule
flottante
Complexité hard
Simple
Complexe
Coût
Faible
Elevé
Consommation
Faible
Elevée
Dynamique max.
190 dB
1500 dB
Complexité progr.
Elevée
Faible
Virgule fixe
55
Architecture des DSP
000
CPU
56
28
Structure interne du CPU
000
Unités de génération
d’adresses
AddD
Générateur
d’adresses MD
Générateur
d’adresses MP
Séquenceur
DataD
Cache
AddP
DataP
Bus de programme
Bus de données
CPU
Unité de commande
Registre de données
Unités de
traitement
mathématique
Multiplieur
ALU
Registre décalage
57
Unité de calcul
000
• Éléments principaux :
– Unité Arithmétique et Logique (ALU)
• Opérations classiques (+, -, AND, OR…)
– Multiplieur-Additionneur
– Accumulateurs
– Registres à décalage (shifters)
– Manipulation de bits
58
29
Unité de calcul
000
data bus (N bits)
• Multiplication
accumulation :
Multiplieur
N bits
2N bits
ALU
Accumulateur
Résultat
sur 2N bits
Résultat
sur 2N bits
Troncature
N bits
59
Unité de calcul
000
• Lors de nombreux MAC successifs :
– Taille de l’accumulateur (2N bits)
insuffisante
2 solutions :
– Accumulateur sur 2N + p bits
Exemple : ADSP2181
2 registres 16 bits, résultat
sur 32 bits Æ dans l’accu 40 bits
– Pre-Scaling : décalage avant l’accumulation
60
30
Unité de calcul
000
• TMS320c5x
(TI)
61
Unité de calcul
000
• DSP56300
(Freescale)
62
31
Unité de calcul
000
Exo : Soit un filtre RIF à calculer.
N −1
y (n) = ∑ a (i ) x( n − i )
i =0
•
coefficients a sur B = 16 bits
• échantillons d’entrée x
• accumulateur sur B’ = 40 bits
Æ Quel est le nombre max Nmax de
produits que l’on peut accumuler
sans risque de saturation ?
63
Unité de calcul
000
• Gestion des débordements
– Complément à 2 : représentation
circulaire Æ Si on ajoute 1 au plus grand
positif, on obtient le plus grand négatif !
overflow
– Les DSP utilisent une arithmétique
saturée :
saturation
Source images : [2]
64
32
Unité de commande
000
• Chef d’orchestre du CPU
• Chargement des instructions
– Compteur de programme (PC)
– Registre d’instruction
– Cache d’instructions
• Séquençage
– Décodage des instructions
– Pilotage les autres unités
65
Pipeline
000
• Principe : découper une opération
en tâches élémentaires à effectuer
en parallèle
• Ex : pipeline à 4 étages
Fetch
Lecture de l’instruction en mémoire programme
Decode
Décodage de l’instruction
Read/Write
Lecture ou écriture d’un opérande en mémoire de donnée
Execute
Exécution éventuelle d’une opération arithmétique/logique
66
33
Pipeline
000
Cycle
Sans
Fetch
Pipeline
1
2
3
4
C1
Decode
5
6
7
C2
C1
Read/Write
C2
Avec
Fetch
pipeline
4
…
C3
C2
C3
Fin C2
Fin C1
3
11
C3
C1
2
10
C3
C1
1
9
C2
Execute
Cycle
8
5
6
7
8
Fin C3
9
10
11
…
C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11
Decode
C1 C2 C3 C4 C5 C6 C7 C8
C9
C1 C2 C3 C4 C5 C6 C7
C8
C9
…
C1 C2 C3 C4 C5 C6
C7
C8
…
Read/Write
Execute
C10 …
Fin C1
Fin C3
Fin C2
67
Pipeline
000
• Différents types de pipelines
Séquentiel
Pas de pipeline
(ex: Motorola 56000)
Pipeline simple
(plupart des DSP)
t
t
Double pipeline
(ex: Pentium)
Source : [9]
Superpipeliné
Nombre d'étages plus élevé
(ex: TMS320C6000)
t
t
68
34
Pipeline
000
• Avantage d’un DSP pipeliné
– Gain en vitesse d’exécution
• Inconvénients
– Electronique et programmation plus
complexe
• Un retard peut se produire
– s’il existe un conflit de ressources
– en cas de rupture de séquence
69
Pipeline
000
• Pipeline présent dans quasiment
tous les DSP
– Le nombre d’étages varie de 3 à 12
– Exemples :
SHARC
3
DSP563xx
7
DSP568xx
3
TMS320 C54
6
TMS320 C55
10-11
TMS320 C62
7-12
70
35
Unité de génération d’adresse
000
• Unités de traitement spéciales
–
–
–
–
DAG (Data Address Generation)
AGU (Adress Generation Unit)
Pilotées par le séquenceur
Calculs sur des entiers (adresses mémoires)
• Méthodes pré-programmées
–
–
–
–
Incrémentation
Décrémentation
Adressage circulaire
Incrémentation bit-reverse (pour la FFT)
71
Unité de mémoire
000
• Architecture Harvard
Mémoire Programme
CPU
Mémoire Données
– Mémoires données et programme
séparées
– Meilleure utilisation du CPU
• Chargement du programme et des données en
parallèle
Source image : [9]
72
36
Unité de mémoire
000
• Architecture Harvard modifiée
Mémoire Programme
+ Données
CPU
Mémoire Données
– Possibilité de charger 2 types de
données en 1 cycle
– Mém. prog+données Æ coefficients
– Mémoire données Æ signal d’entrée
Source image : [9]
73
Unité de mémoire
000
• Architecture Harvard modifiée
Mémoire Programme
CPU
Mémoire Données 1
Mémoire Données 2
– Bancs de mémoire
Source image : [9]
74
37
Unité de mémoire
000
• Mémoire interne sur les DSP C54xx
• Plusieurs types de RAM :
– Single access (SARAM) : un accès par cycle
– Dual access (DARAM) : deux accès par cycle
– Two-way shared : deux accès par cycle même
depuis l'extérieur
75
Unité de mémoire
000
• Canaux DMA : Direct Memory Access
• Réduction des accès mémoire
• Adressages spécifiques (circulaire)
• Mémoire cache programme
cache
d’instructions
Mémoire Programme
+ Données
CPU
Mémoire Données
Source image : [9]
76
38
Unité de mémoire
000
• Mémoire cache programme
– Contient des instructions exécutées
fréquemment (boucles...)
– Structure plus simple que dans les
processeurs généraux
– Exemple :DSP563xx 1KB
TMS320C67 64 KB
– Configurable par l’utilisateur
– Pas de cache de données en général
77
Périphériques
000
• Port série
– Communication avec codecs
• Port parallèle
– Communication avec une mémoire
externe
• Timer
• Contrôleur d’interruption
• Horloge interne
78
39
Architecture générale
DSP56303 (Source : Freescale)
000
79
Plan de l’exposé
000
• Le Traitement Numérique du
Signal (TNS) et les DSP
• Architecture des DSP :
CPU, mémoire…
• Performances des DSP :
augmentation,
mesure de performances, gamme de DSP…
• Développement d’applications sur
un DSP : programmation…
80
40
Performances des DSP
000
• Plan de cette partie :
– DSP hautes performances
– Mesures de performances
– Gamme de DSP
81
DSP hautes performances
000
Robot familial
Lecteur MP3
Processeur
unique
20 000 lignes de
code
Source : d’après [7]
(Wakamaru,
Mitsubishi)
Multiples
processeurs
100 000 lignes de
code
Système VoIP
pour traders
(IPC)
Multiples
processeurs +
protocoles
+500 000 lignes de code
82
41
DSP hautes performances
000
• Architecture conventionnelle
– Spécialisée pour le TNS
– Faible consommation, faible coût
– Difficulté de programmation
• Nouvelles architectures
– Plus grande consommation
– Coût plus élevé
– Rendues nécessaires par de nouveaux besoins
• Performance (téléphonie 3G)
• Rapidité de développement
83
DSP hautes performances
000
• On vient de voir l’architecture de base
des DSP
Comment augmenter les performances ?
Plusieurs solutions :
Diminuer la
durée d’un
cycle d’horloge
Augmenter le travail
réalisé au cours d’un
cycle d’horloge
84
42
DSP hautes performances
000
• Augmentation de la fréquence CPU
– Facilité de portage des applis existantes
– Limites :
• Consommation proportionnelle à la
vitesse CPU
• Interfaces mémoire deviennent des
goulets d’étranglement
85
DSP hautes performances
000
• Augmentation du travail effectué
pendant un cycle : parallélisme
Plus d’opérations dans 1 instruction
– SIMD
(Single Instruction,
Multiple Data)
Source : [8]
86
43
DSP hautes performances
000
• Augmentation du travail effectué
pendant un cycle : parallélisme
Plus d’instructions dans 1 cycle d’horloge
– Superscalaire
• Plusieurs MAC, plusieurs ALU, cache données
• Circuit de contrôle complexe
87
DSP hautes performances
000
• Augmentation du travail effectué
pendant un cycle : parallélisme
Plus d’instructions dans 1 cycle d’horloge
– Superscalaire
– VLIW (Very Long Instruction Word)
• VLIW 8 voies = 8 instr. 32 bits = 256 bits
• Instructions en parallèle à la compilation
• Hardware + simple que superscalaire
88
44
DSP hautes performances
000
• Augmentation du travail effectué
pendant un cycle : parallélisme
Plus d’instructions dans 1 cycle d’horloge
– Superscalaire
– VLIW
– Approches hybrides SIMD/VLIW
89
DSP hautes performances
000
• Augmentation du nombre de cœurs
DSP en parallèle (multi-core):
Ex : ADSP2192 de
Analog Devices
2 cores « on-chip »
Source : analog.com
90
45
Mesure de performance
000
• Mesure de la vitesse
Million FloatingMFLOPS Point Operations
Per Second
Nombre d’opérations à virgule flottante
(multiplications, additions, soustractions, etc.) que
le DSP à virgule flottante peut réaliser en une
seconde.
MIPS
Million
Instructions Per
Second
Nombre de codes machines (instructions) que le
DSP peut effectuer en une seconde.
MOPS
Million
Operations Per
Second
Nombre total d’opérations (traitement et transferts
de données, accès DMA, opérations d’E/S) que le
DSP peut effectuer en une seconde.
MMACS
Million Multiply
and Accumulate
Per Second
Nombre de MAC que le DSP peut effectuer en une
seconde.
91
Mesure de performance
000
• Ex 1 : DSP dans un téléphone
portable Æ 40 MIPS
• Ex 2: DSP56156 30 MIPS
– Taux d’échantillonnage 48kHz Te = 20.833 µs
– Quel est le nombre d’instructions
maximum entre 2 échantillons ?
Nombre d' instructions =
=
Temps max pour les instructions
Temps d'1 instruction
20,8µs
≈ 625
1 / 30M
92
46
Mesure de performance
000
Texas
Instruments
Analog
Devices
Freescale
DSP
MHz MMACS MIPS
MFLOPS
DSP56367
150
150
150
-
MS8101
300
1500
na
-
ADSP-2191
160
na
160
-
ADSP-TS201
600
4800
na
>1000
ADS-BF533
750
1500
na
-
40
40
40
-
8000
8000
-
600
2400
1800
TMS320 C24
TMS320 C6455 1000
TMS320 C67
300
93
Mesure de performance
000
• Benchmark :
– mesurer le temps que met le DSP
pour exécuter des programmes
"standard" de TNS
– Programmes standard
• Comment les choisir ?
• Dépendent des domaines
• N multiplications Æ Filtre RIF 2D
– Problème : dépend de la qualité de
l’implémentation
94
47
Gamme de DSP
000
La gamme Texas Instruments
Contrôle numérique
Faible consommation
(lecteur MP3, récepteur GPS,
équipement médical portable)
Très grande puissance :
8000 MIPS (imagerie,
vidéo…)
95
Gamme de DSP
000
Road Map C50 (Texas Instruments)
96
48
Gamme de DSP
000
Road Map C60 (Texas Instruments)
97
Gamme de DSP
000
Road map BlackFin (Analog Devices)
98
49
Quelques DSP
000
Constructeur
Analog
Devices
Freescale
Texas
Instruments
Modèle
Horloge
(MHz)
MMACS
Virg.
Fi/Flo
Données
(bits)
ADSP-21XX
80/160
80/100
Fixe
16
SHARC
200
400
Flottante
32/40
DSP563xx
80/100
80/100
Fixe
24
DSP568xx
120
120
Fixe
16
TMS320 C24
40
40
Fixe
16
TMS320 C54
160
160
Fixe
16
TMS320 C55
200
400
Fixe
16
TMS320 C62
300
400
Fixe
16
TMS320 C67
300
400
Flottante
32
99
Plan de l’exposé
000
• Le Traitement Numérique du
Signal (TNS) et les DSP
• Architecture des DSP :
CPU, mémoire…
• Performances des DSP :
augmentation,
mesure de performances, gamme de DSP…
• Développement d’applications sur
un DSP : programmation…
100
50
Développement d’applications
000
• Conception algorithmique
• Choix du DSP
• Développement sur PC
– C ou assembleur
– Environnement pas universel
• Compilation, link
• Chargement de l’exécutable sur le DSP
PC
DSP
• Exécution du programme sur le DSP
101
Développement d’applications
000
• Exemple : implantation d’un filtre RIF
sur un DSP virgule fixe
• Choix du DSP en fonction de
l’application :
– Choix de la famille Audio Æ C54x chez TI
– Choix des caractéristiques
• Quantité de RAM/ROM
• Vitesse d’horloge
pour 1000
• Prix d’un DSP Bas de gamme : $5,40 unités
Haut de gamme : $30 achetées
102
51
Développement d’applications
000
• Exemple : implantation d’un filtre
RIF sur un DSP virgule fixe
N −1
y (n) = ∑ a(i ) x(n − i )
i =0
Coefficients a(i)
(à convertir au
format virgule fixe)
Gabarit du filtre
103
Développement d’applications
000
• Ecriture du programme
Prog. principal
Initialisation des
registres, tables
d’interruption,
coefficients…
Attente (idle)
(C, assembleur)
Sous-programme de
traitement d’une interruption
Réception de l’échantillon
d’entrée x(n)
Calcul de l’échantillon
de sortie avec :
N −1
y (n) = ∑ a(i ) x(n − i )
i =0
Retour au prog. principal
104
52
Développement d’applications
000
• Test du programme :
– Simulateurs
– Carte d’évaluation
(Starter Kits chez TI)
source : ti.com
– Emulateurs
105
Développement d’applications
000
Assembleur
• Langage bas-niveau
– Fastidieux
– Jeux d’instructions
complexes et irréguliers
– Spécifique à chaque
constructeur
• Plus puissant
– Accès à certains registres
inconnus du C
• Permet d’optimiser
Langage C
• Langage de plus
haut-niveau
– Plus rapide à coder
– Meilleure portabilité
• Code machine généré
moins efficace
• Outils de
développement
106
53
Assembleur
000
• Les instructions sont codées sur une
ligne incluant une étiquette (optionnelle)
Instruction
Start :
Commentaire
LD
#540, AR2
; Premier opérande en AR2
LD
#180, AR3
; Deuxième opérande en AR3
MAC
*AR2, *AR3, A
; Multiplication des opérandes
Etiquette
Opérande
107
Types d’instructions
000
• Calcul
– Opérations arithmétiques
• Addition, soustraction, multiplication
– Opérations logiques
• AND, OR, tests
• Décalage
• Contrôle du programme
– Branchement, répétition
– Appels et Retours
• Sous-programmes, interruptions
– Manipulation de la pile
– Divers (NOP)
• Mémoire
– Chargement et sauvegarde
– Déplacement de données de mémoire à mémoire
108
54
Modes d’adressage
000
• Modes d’adressage classiques
Adressage
Où se trouve la donnée ?
Exemple
Immédiat
Dans l’instruction
Direct
En mémoire à l’adresse spécifiée
MOV R1, M(238)
dans l’instruction
Indirect
En mémoire à l’adresse spécifiée
MOV R1, M(R2)
dans un registre (pointeur)
Indexé
En mémoire à l’adresse résultat
de la somme de 2 registres
MOV R1, 17
MOV R1, M(R2+R3)
109
Modes d’adressage
000
• Modes d’adressage spécifiques
– Circulaire (ou modulo) : utilisé dans les
filtres RIF, RII, la convolution…
– Bit reverse (ou inversion de bits) : utilisé
dans la FFT
110
55
La R&D sur les DSP en France
000
• Texas Instruments : Villeneuve-Loubet (06)
• Freescale : Toulouse, Crolles (38)
• ST Microelectronics : Crolles, Rousset (13)
• ARM : Sophia-Antipolis
• Atmel : Rousset, Grenoble
• Infineon : Sophia-Antipolis
111
Annexe
000
Présentation
des TP sur les DSP
112
56
TP sur les DSP
000
• Le DSP : TMS320 C5416
• Programmation d’algorithmes de
traitement du signal : effets audio
Æ Apporter un lecteur CD/MP3 ou clé USB
En pratique :
• 3 séances : Lundi 29 janvier, 5 & 12 février
• Evaluation sur CR + oral
113
Le DSP Starter Kit C5416
000
(CPLD)
ROM
SARAM
DARAM
mémoire
externe
source : "TMS320VC5416 DSK Reference Technical", Spectrum Digital
mémoire
interne
114
57
Diagramme bloc du
TMS320C5416 000
Program/Data ROM
16K Words
Program/Data RAM
128K Words
JTAG Test/
Emulation
Control
Bus externe
MUX
D(15-0)
Program/Data Buses
Timer
A(23-0)
Muxed GP I/O
DMA
Ch 0
40-Bit Adder
CMPS Operator
(VITERBI)
Ch 1
RND, SAT
EXP Encoder
Ch 2
Shifter
Accumulators
40-Bit ACC A
Ch 3
40-Bit Barrel
(-16, 31)
Génération
d’adresses
ALU
40-Bit ALU
Ch 4
40-Bit ACC B
Ch 5
Addressing Unit
8 Auxiliary Registers
Peripheral Bus
MAC
17 x 17 MPY
Unités de
calcul
Mémoire
interne
8/16-bit Host Port
Interface (HPI)
Multichannel Buffered
Serial Port (McBSP)
Multichannel Buffered
Serial Port (McBSP)
Multichannel Buffered
Serial Port (McBSP)
PLL Clock
Generator
2 Addressing Units
S/W Waitstate
Generator
Power Management
CPU
Entrées
Sorties
115
Effets audio
000
• Principe de tous les effets audio :
ajout au signal d’une version
décalée de lui-même
delay
chorus
flanger
reverb
116
58
Effets audio : delay
000
• Delay = retard simple
• 1ère possibilité : y(n) = x(n)+ a.x(n-D)
Filtre RIF
• Selon la valeur de D
– Entre 50 et 100 ms : effet d’ambiance
– >100 ms : écho
117
Effets audio : delay
000
• RIF : y(n) = x(n)+ a.x(n-D)
• Fonction de transfert :
H ( z ) = 1 + az − D
source : [11]
Filtre en peigne (comb filter)
118
59
Effets audio : delay
000
• 2ème possibilité : y(n) = x(n)+ a.y(n-D)
Filtre RII
revient à ajouter
un retour
(feedback)
119
Effets audio : delay
000
• RII : y(n) = x(n)+ a.y(n-D)
• Fonction de transfert :
source : [11]
H ( z) =
1
1 + az − D
120
60
Delay : exemples
000
• Son 1 : impulsion
• RIF : 60 ms, 100 ms, 150 ms, 250 ms
• RII (avec feedback) 250 ms : gain1, gain2 >
gain1
• Son 2 : voix chantée
• sans
, avec
• Son 3 : guitare
• grand retard 1,5 s
(intérêt de la synchro)
• effet stéréo : 20 ms de décalage entre les 2
canaux
source des sons : [10,12]
121
Effets audio : chorus
000
• Principe :
simuler le fait que plusieurs
instruments identiques jouent simultanément,
« élargir » le son.
• D varie dans le temps !
y(n) = x(n)+ a.x(n-D(n))
• D varie de 20 à 30 ms
LFO : Low
frequency
oscillator
(ex : 3 Hz)
122
61
Chorus : exemples
000
• Son 1 : guitare sans, avec
• Son 2 : 1 note avec différentes
formes pour le LFO :
123
Effets audio : flanger
000
• Principe : bruit de réacteur d’avion
ou métallique, effet circulaire
• Similaire à chorus mais :
– Feedback possible
– D = 1 à 20 ms Æ pas d’effet d’écho
mais filtre
124
62
Effets audio : flanger
000
• D plus petit que pour le chorus
D1
D1< D2
125
Flanger : exemples
000
• Très employé dans la musique !
(Jimi Hendrix, Pink Floyd, David bowie…)
• Son 1 : batterie sans, avec
• Son 2 : Are you gonna go my
way, Lenny Kravitz
• Son 3 : Killer queen, Queen
126
63
Effets audio : reverb
000
• Principe : prise en compte du volume
de la pièce
– Résultat de toutes les réflexions du son
– Dépend de la surface (hall de concert : 1.5 à 2s)
127
Effets audio : reverb
000
• Principe : prise en compte du volume
de la pièce
128
64
Effets audio : reverb
000
• Structure du réverbérateur de
Schroëder
129
Reverb : exemples
000
• Son1 : voix chantée sans , avec
• Son2 : guitare sans, avec
• Son3 : reverse reverb (50ms, 150 ms)
130
65
Effets audio : résumé
000
Structure
D
RIF : yn = xn+axn-D
Delay
Fixe
RII : yn = xn+ayn-D
Effet d’ambiance
(50 à 100ms),
écho
Chorus RIF : yn = xn+axn-D(n) Variable
(>100ms)
(20 à 30ms)
Simultanéité de +ieurs instruments id.
RIF : yn = xn+axn-D(n)
Flanger RII : yn = xn+ayn-D(n)
Variable
(1 à 20ms)
Réacteur d’avion, effet circulaire
131
Quelques références
000
• F. Virolleau, G. Baudoin. DSP Les
processeurs de traitement du signal Famille TMS320C5x. Dunod, 1996.
• G. Baudoin, F. Virolleau. Les DSP
Famille TMS320C54x – Développement
d’applications. Dunod, 2000.
• P. Lapsley, J. Bier, A. Shoham, E. Lee.
DSP Processor Fundamentals,
Architectures and Features, IEEE Press,
1997.
132
66
Bibliographie complète
000
• [1] A. Tisserand. DSP : des processeurs
dédiés au traitement numérique du
signal, séminaire LIP, 2003.
• [2] Bores Signal Processing (www.bores.com)
• [3] C. Odet. Cours sur les DSP, INSA Lyon,
2005.
• [4] Berkeley Design Technology, Inc.
www.bdti.com (juin 2006)
• [5] D. Prêtre. Fast Fourier Transform. HE-Arc
Ingénierie, 2004.
133
Bibliographie complète
000
• [6] L. Battista. Une introduction aux DSP,
Mémoire CNAM, 1997.
• [7] M. Vinez. Domaines d’application par type
d’architecture, séminaire Jessica, 2006.
• [8] Dossier : Les processeurs de traitement du
signal, Electronique n°143, 2004.
• [9] R. Mégret. Processeurs dédiés au
traitement du signal, cours ENSEIRB,
2005.
134
67
Bibliographie complète
000
• Sites des constructeurs :
– ti.com,
– freescale.com,
– analog.com.
• Effets audio :
[10] http://www.harmonycentral.com/Effects/effects-explained.html
[11]
http://www.bluecatonline.org/eng/DigitalAu
dioNotions/DigitalAudioNotions.htm
[12] http://wwwdsp.efrei.fr/DOCUMENTS/reverb.htm
135
Bibliographie complète
000
• Effets audio :
• [10] http://www.harmonycentral.com/Effects/effects-explained.html
• [11]
http://www.bluecatonline.org/eng/DigitalAudi
oNotions/DigitalAudioNotions.htm
• [12] http://wwwdsp.efrei.fr/DOCUMENTS/reverb.htm
136
68