DSP : Processeurs de Traitement du Signal
Architectures des DSPs
3
Architecture générale d’un processeur
Unité decontrôle
Unités detraitement
Mémoireinterne
Unité deCommunication
Bus internes
CPU
Périphériqueset mémoire externes
4
Accès à la mémoire
5
Rappels : Bus
Le CPU est le maître du bus Il est le seul à écrire sur les
bus adresse et contrôle Le périphérique accepte
sur le bus données Lecture: il fournit la donnée
demandée Ecriture : il récupère la
donnée fournie par le CPU Haute impédance: il se
déconnecte du bus
PériphériqueCPU BUS
PériphériqueCPU
adresses
données
contrôle
Contrôle : lire / écrire / haute impédance
Adresses : sélection du périphériqueet d’une donnée en son sein
Données : valeur de la donnée à échanger
6
Rappels: le fonctionnement basique d’une opération de calcul
(1) Charger une instruction depuis la mémoire (2) Charger les opérandes depuis la mémoire (3) Effectuer les calculs (4) Stocker le résultat en mémoire
MémoireCPU
1
2
3
4
7
Architecture Von Neuman
Un seul chemin d'accès à la mémoire Architecture des processeurs d’usage général
(Pentium, 68000) Goulot d'étranglement pour l'accès à la mémoire Pas de sécurisation matérielle du programme
CPU BUSMémoire
Programme+ Données
8
Architecture Harvard
Séparation des mémoires programme et données Moins de risque de corruption du programme Meilleure utilisation du CPU
Chargement du programme et des données en parallèle
Mémoire Programme
Mémoire Données
CPU
9
Architecture Harvard modifiée
Mémoire programme contient des données Possibilité de charger 2 données en un cycle Utilisation classique en TNS
Mémoire Programme+Données → coefficients des filtres Mémoire Données → échantillons d’entrée
CPU
Mémoire ProgrammeMémoire Programme
+ Données
Mémoire Données
10
Accès mémoire multi-port
Plusieurs bus de données Accès simultané à plusieurs données Combiné avec
mémoire multi-accès (plusieurs accès à la même mémoire en un cycle) mémoire multi-blocs (accès simultané à deux blocs de mémoire distincts)
Exemple du TMS320C54xx : 1 bus programme (P) 2 bus de lecture des données (C et D) 1 bus d’écriture des données (E)
CPU
Mémoire Programme+ Données
Mémoire Données
11
Cache d'instructions
Cache = mémoire associative rapide Contient les dernières instructions exécutées
Utile en cas de boucle Accès aux instructions sans accès en mémoire programme Libère le bus pour des données
Pas appliqué aux données Problème de validation du temps réel
DSP
Mémoire Programme+ Données
Mémoire Données
CPU
cached’instructions
12
Mémoire interne sur les processeurs C54x
Plusieurs types de RAM incluse sur le chip 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
DARAM découpée en blocs Accès simultané à deux blocs de mémoire différents 2x2=4 accès par cycle en théorie (en réalité limité par le reste de l'architecture)
Capacité en mémoire interne de différents modèles C54x
13
Bus externedans une architecture Harvard modifiée
DSP
Transfert entre les bus internes et externe par multiplexage temporel
• Limitation du nombre de broches • Réduction des coûts• Diminution des performances
lors des accès au bus externe
MUX
CPU
Mémoire Programme+ Données
Mémoire Données
14
Accès Direct à la Mémoire(DMA : Direct Memory Access)
DMA
• Accès DMA : entrées-sorties vers la mémoire interne• indépendant du CPU et des bus internes
• Système d'interruptions "données reçues"/"données transmises"
CPU
Mémoire Programme+ Données
Mémoire Données
interruptions
configuration
15
Bus externe
Diagramme bloc du TMS320C5416
Muxed GP I/O
D(15-0)
A(23-0)
Program/Data Buses
Timer
Program/Data RAM128K Words
Ch 0
Ch 1
Ch 2
Ch 3
Ch 4
Ch 5
DMA
8/16-bit Host PortInterface (HPI)
Program/Data ROM16K Words
Pe
rip
he
ral
Bu
s
RND, SAT
17 x 17 MPY
40-Bit Adder
MAC
Shifter
40-Bit Barrel(-16, 31)
EXP Encoder
40-Bit ALUCMPS Operator
(VITERBI)
ALU
Accumulators
40-Bit ACC A
40-Bit ACC B
8 Auxiliary Registers
2 Addressing Units
Addressing Unit
Multichannel BufferedSerial Port (McBSP)
Multichannel BufferedSerial Port (McBSP)
Multichannel BufferedSerial Port (McBSP)
PLL Clock Generator
S/W WaitstateGeneratorPower Management
Mémoireinterne
EntréesSorties
JTAG Test/Emulation
Control
CPU
MU
X
16
Les Périphériques du C54x
Timer Ports série
Port série synchrone Port série bufferisé (BSP) Port série bufferisé multi-canaux (McBSP) Port série à multiplexage temporel (TDM)
Contrôleur DMA à 6 canaux Port d’interface hôte (HPI) Broches accessibles par software
Broche XF (external flag) en écriture Broche BIO en lecture
Générateur de temps d’attente
17
Architecture interne du CPU
18
Structure interne du CPU
19
Unité de commande
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 des autres unités
20
Unités de traitement mathématique
Calculs au format fixe ou flottant Parallélisme entre les sous-unités
Registres de données pour stocker les opérandes et les résultats
Multiplieur Multiplication et accumulation (MAC)
ALU Opérations arithmétiques, logiques et de conversion entre
formats Registre de décalage
Multiplication rapide par 2k
Unités spécialisées Compare, Select and Store (Viterbi) DCT
21
Unités de génération d’adresses
Unités de traitement spéciales 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)
22
Schéma de principe des échanges
addr
datactrl
addr
datactrl
Séquenceur
Bus
programm
eB
usdonnées
Générationadresses P
Générationadresses D
Unités decalcul
Mémoire P Mémoire D
CPU
périphériques
pilotage
23
Fetch (lecture instruction)
addr
datactrl
addr
datactrl
Séquenceur
Bus
programm
eB
usdonnées
Générationadresses P
Générationadresses D
Unités decalcul
Mémoire P Mémoire D
24
Read/Write (lecture/écriture donnée)
SéquenceurGénérationadresses P
Générationadresses D
Unités decalcul
Mémoire P Mémoire D
addr
datactrl
addr
datactrl
Bus
programm
eB
usdonnées
25
Bus externe
Diagramme bloc du TMS320C54x
Muxed GP I/O
D(15-0)
A(23-0)
Program/Data Buses
Timer
Program/Data RAM128K Words
Ch 0
Ch 1
Ch 2
Ch 3
Ch 4
Ch 5
DMA
8/16-bit Host PortInterface (HPI)
Program/Data ROM16K Words
Pe
rip
he
ral
Bu
s
RND, SAT
17 x 17 MPY
40-Bit Adder
MAC
Shifter
40-Bit Barrel(-16, 31)
EXP Encoder
40-Bit ALUCMPS Operator
(VITERBI)
ALU
Accumulators
40-Bit ACC A
40-Bit ACC B
8 Auxiliary Registers
2 Addressing Units
Addressing Unit
Multichannel BufferedSerial Port (McBSP)
Multichannel BufferedSerial Port (McBSP)
Multichannel BufferedSerial Port (McBSP)
PLL Clock Generator
S/W WaitstateGeneratorPower Management
Générationd’adresses
Unités decalcul
Mémoireinterne
EntréesSorties
JTAG Test/Emulation
Control
CPU
MU
X
26
Structure interne du TMS320C54x
Source : Texas InstrumentsTMS320C54x DSPReference SetVol 1 : CPU and Peripherals
27
Le bus programme PB sert à véhiculer les instructions et les coefficients stockés dans la mémoire programme. Ces données sont adressées par le bus d’adresse de la mémoire programme PAB
Trois bus d’accès aux données sont raccordés à l’unité centrale de calcul, à la mémoire de donnée, aux périphérique et aux circuits de générations d’adresse (programme et données). Ces bus CB, DB, et EB véhiculent les données des éléments adressés par CAB, DAB, et EAB respectivement.
Bus
28
Unité de controle
Générationd'adressesprogramme
Générationd'adressesdonnées
Bus Pprogramme
Bus C / Dlecture
données
Bus Eécriture
données
29
Unité arithmétique et logique(UAL) Multiplieur-Accumulateur (MAC) Registre à décalage Unités spécialisées
Unité de traitementnt mathématique
30
MAC
ALU
Shifter
Viterbi
Accumulateurs
31
Ce bloc effectue des calculs arithmétiques et logique
2 accumulateurs sur 40 bits :
Opérations entières et binaires (+, -, inc, dec, et, ou, xor, shl, ...)
Unité Arithmétique et Logique (ALU)
ALAHAG15-031-1639-32
BLBHBG15-031-1639-32
32
IMR Registre Masque d’Interruption
IFR Registre de Statut d’Interruption
ST0 Registre d’Etat 0
ST1 Registre d’Etat 1
AL Accumulateur A (0-15)
AH Accumulateur A (16-31)
AG Accumulateur A (32-39)
BL Accumulateur B (0-15)
BH Accumulateur B (16-31)
BG Accumulateur B (32-39)
TREG Registre Temporaire
AR0 Registre Auxiliaire 0 (Index)
AR1-7 Registres Auxiliaires 1 à 7
SP Registre Pointeur de Pile
BK Registre d’Addressage Circulaire
RC Compteur Répétion 1 Instruction
RSA Première Addresse Répétition Bloc
REA Dernière Addresse Répétition Bloc
BRC Compteur Répétion d’un Bloc
TIM Registre du Timer
PRD Compteur de la Période de Timer
TRN Registre de Transition
TCR Registre de Contrôle du Timer
PMST Registre de Contrôle de la Mémoire
Registres
33
Rôle central dans un DSP Plus de 50% des instructions
Caractéristiques principales Temps d’exécution = 1 cycle instruction Structure pipeline
Un résultat par cycle horloge, si le pipeline est bien utilisé
Multiplieur-accumulateur (MAC)
34
ce registre de 40 bits, sert à cadrer les données en provenant de la mémoire ou bien de l’accumulateur avant une opération dans ALU
Opérations de mise à l’échelle (Scaling) par puissance de deux
Indispensable pour éviter les dépassements de capacité Son utilisation doit être maitrisée par le programmeur Réduction de la précision des calculs Nombre, emplacement et possibilités des Shifters très
différents d’un DSP à un autre.
Shifter (registre à décalage)
35
Protocole JTAG
Permet de piloter les unités internes du DSP Intégré par le constructeur lors de la
conception du chip Utile pour le prototypage et le débogage
d'applications Interruption momentanée en cours d'exécution
Donne accès en lecture/modification aux Registres internes Mémoires internes, et éventuellement externes Ports d'entrées/sorties
36
Pipelining
Instructions segmentées en étages
Exécution entrelacée de plusieurs instructions Chacune à une étage différent
Géré par le séquenceur
Augmentation de la fréquence d'horloge Etages plus simples donc plus
rapides
Fetch F1
Decode D1
Read R1
Execute X1
Instruction Instruction 1
Fetch F1 F2 F3 F4 F5
Decode D1 D2 D3 D4
Read R1 R2 R3
Execute X1 X2
Segmentationen étages
Entrelacement
37
Séquentiel vs pipeline
étage \ temps t1 t2 t3 t4 t5 t6 t7 t8
Fetch F1 F2 F3 F4 F5 … … …
Decode D1 D2 D3 D4 D5 … …
Read R1 R2 R3 R4 R5 …
Execute X1 X2 X3 X4 X5
étage\temps t1 t2 t3 t4 t5 t6 t7 t8
Fetch F1 F2
Decode D1 D2
Read R1 R2
Execute X1 X2
Chargement du pipeline
Exécution avec pipeline
Exécution séquentielle
38
Pipelining
Exemple du TMS320C54x
6 étages de traitement Prefetch (P) : Incrémentation du PC
(Program Counter) Fetch (F) : Lecture de l’instruction en mémoire Decode (D) : Décodage de l’instruction Access (A) : Calcul des adresses des opérandes Read (R) : Lecture des opérandes en mémoire
et calcul de l’adresse du résultat Execute (X) : Exécution et écriture en mémoire
39
Retards dans le pipeline
Le pipeline atteint son plein rendement une fois qu’il est “plein”
Une retard peut se produire s’il existe un conflit de ressources (retard ponctuel)
accès à la mémoire utilisation des bus
en cas de rupture de séquence (vidange du pipeline) branchement non prévu appel de sous-programme interruption
Exemple de conflit d'accès mémoire
P1
P2
F1 D1
P3
F2
A1
D2
P4
F3 D3
A2
--
--
R1 X1
A3
--
--
--
R2 X2
--
--
--
R3 X3
P5
--
F4 D4
P6
F5
A4
D5
F6
A5
D6
R4 X4
A6
R5 X5
R6
8
Programme et données
dans une mémoire à 1 accès par cycle
Les lectures de données R1/R2/R3 sont en conflit avec les chargements d'instruction F4/F5/F6
Peut réduire les performances d'au moins 50%
Résolution du conflit d'accès mémoire
P1 F1 D1 A1 R1 X1
P2 F2
P3 F3 D3 A3 R3 X3
D2 A2 R2 X2
P4 F4 D4 A4 R4 X4
P5 F5 D5 A5 R5 X5
P6 F6 D6 A6 R6 X6
9
Programme et données
dans des mémoires accès séparés (Bus Programme/Bus Données)
ou dans une même mémoire à accès double (DARAM)
Bilan accès mémoire
A retenir pour éviter les problèmes: ROM/SARAM - 1 accès par bloc par cycle DARAM - 2 accès par bloc par cycle
Program
ROM
Data
ROMSARAM DARAM
E Bus
C Bus
D Bus
P Bus
A
D
Inte
rfac
eM
émo
ire
exte
rne
10
TMS320C62X
43
Processeur à virgule fixe comportant 2
multiplieurs, 6 UALs et 2 groupes de 16registres de 32 bits
Instructions du type RISC Le processeur peut effectuer des opérations sur
8/16/32 bits de données.
44
TMS320C62X
45
Chaque groupe d’opérateurs dispose de : 3 UALs + 1 multiplieur (.L, .S, .D et .M) :
.L : opérations arithmétiques et logiques et instruction de branchement. .S : opérations arithmétiques et logiques, de décalage, de branchement et de génération de constantes. .M : multiplieur câblé 16x16
.D : lecture, chargement et opérations arithmétiques. 16 registres de 32 bits non orthogonaux Chaque UAL est contrôlée par une instruction de 32 bits.
TMS320C62X : groupe opérateurs
46
TMS320C62X : groupe opérateurs
MPY .M a1, x1, prodADD .L Y, prod, Y
N
nnn xaY
0
32 bits
a1x1
prodY
.
.
.
.
.M
.L
A0
A1A2A3A4
A15
47
VLIW (Very-Long-Instruction-Word)
Parallélisme géré par le compilateur Contrôle simple mais compilateur complexe
Microarchitecture simple et performante Mais taille de code importante
Généralement clusterisé (1 cluster : banc de registres + unités fonctionnelles) Réduction de la complexité des chemins de données
48
inst1
inst2
inst3
inst4
inst5
inst6
inst7
inst8
Instru
ction
VL
IW
VLIW (Very-Long-Instruction-Word)
49
VLIW : exemple du TMS320C62x
32 bits
Instruction de 128 bits8 sous-instructions de 32 bits
32 bits 32 bits 32 bits 32 bits 32 bits 32 bits 32 bits
L1 M2D2 S2 L2S1
+
+ +
+
+
x+
M1
x
D1
++
50
Représentation de Nombres Réels
La représentation des nombres doit répondre à deux exigences contradictoires:
Précision: intervalle entre deux rationnels codés doit être le plus petit possible
Dynamique: rapport entre le plus grand rationnel et le plus petit rationnel codés
doit être la plus étendue possible
Dans ce contexte les unités de calcul des DSP travaillent soit en format fixe (notation décimale) soit en format flottant (notation scientifique)
51
Représentation en format fixe
• Aussi appelée représentation à “virgule fixe”
Définition "format Qk" : La représentation Qk du réel x correspond àla représentation complément à 2 (C2) de l'entier y tel que: )2round( xy k
Propriétés:Partie fractionnaire codée sur k bitsPartie entière codée sur N-k bits en C2
Q0 désigne le cas particuler des entiers signés en C2
• Exemple: Le binaire 01011101 peut représenter :Q2 : 23.25 Q4 : 5.8125 Q7 : 0.7265625
52
Représentation en Format Fixe
• Exemple: Q5 sur 8 bits
• Partie entière codé sur 3 bits (dont 1 de signe)• Partie fractionnaire codée sur 5 bits
• Valeurs comprises entre -4 et +3.96875
00000001-4
10000001-3.96875
000000000
011111103.9375
111111103.96875
#/Poids -23 22 20 2-1 2-2 2-3 2-4 2-5,
53
Représentation en Format Fixe
Pour obtenir une dynamique sur l’intervalle [-1, 1[ ,utiliser le format
QN-1 sur N bits
Format Q15:
sur 16 bits, le format Q15 permet de représenter tous les réels entre -1 et 1 avec une précision q=2-15
Précision: quantification uniforme de pas q
q=2-k
Dynamique:-2N-k-1 .. 2N-k-1-2-k
54
Représentation en Format Flottant
• Aussi appelée représentation en “virgule flottante” est une représentation avec une précision finie, définie selon l’expression
• La mantisse M est exprimée sur m bits, avec un format Qm-1 en complément à 2
• L’exposant E est un entier signé sur e bitsen binaire décalé
EMx 2
Nem
• Opération de normalisation:Pour rendre la représentation unique, M doit satisfaire en outre:
12
1M
détermine le nombre de chiffres significatifs
détermine la dynamique
55
11101111
46875.029375.0221212121 11244321
Représentation en Format Flottant
• Exemples en 8 bits
• La mantisse est codée sur 5 bits et l’exposant sur 3 bits en C2
11001111
234375.029375.0221212121 20244321
01110010
72875.02202120201 31204321
56
Format virgule flottante IEEE 754
Format pour N=32 bits
1 bitsigne
8 bitsexposant
en binaire décalé
23 bitsfraction (partie fractionnaire de la mantisse)
C2 avec des codes spéciaux
• Cas spéciauxZéro: tous les bits à 0Underflow: exposant = 000000002
Overflow: exposant = 111111112
x = (-1)signe × (1,fraction)2 × 2exposant-127