3. Architecture générale d’un processeur
CPU
Unité de Unités de
contrôle traitement
Bus internes
Mémoire Unité de Périphériques
interne Communication et mémoire externes
3
5. Rappels : Bus
Le CPU est le maître du
CPU BUS Périphérique bus
Il est le seul à écrire sur les
bus adresse et contrôle
Le périphérique accepte
adresses sur le bus données
données Lecture: il fournit la donnée
CPU Périphérique
contrôle demandée
Ecriture : il récupère la
donnée fournie par le CPU
Adresses : sélection du périphérique Haute impédance: il se
et d’une donnée en son sein déconnecte du bus
Données : valeur de la donnée à échanger
Contrôle : lire / écrire / haute impédance
5
6. Rappels: le fonctionnement basique d’une
opération de calcul
1
2
CPU Mémoire
4
3
(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
6
7. Architecture Von Neuman
Mémoire
CPU BUS Programme
+ Données
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
7
8. Architecture Harvard
Mémoire Programme
CPU
Mémoire Données
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
8
9. Architecture Harvard modifiée
Mémoire Programme
Mémoire Programme
+ Données
CPU
Mémoire Données
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
9
10. Accès mémoire multi-port
Mémoire Programme
+ Données
CPU
Mémoire Données
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)
10
11. Cache d'instructions
DSP
cache Mémoire Programme
d’instructions + Données
CPU
Mémoire Données
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
11
12. Mémoire interne sur les processeurs C54x
Capacité en mémoire interne de différents modèles 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)
12
13. Bus externe
dans une architecture Harvard modifiée
DSP
Mémoire Programme
+ Données
CPU
Mémoire Données
MUX
Transfert entre les bus
internes et externe par
• Limitation du nombre de broches
multiplexage temporel
• Réduction des coûts
• Diminution des performances lors
des accès au bus externe
13
14. Accès Direct à la Mémoire
(DMA : Direct Memory Access)
Mémoire Programme
+ Données
CPU
Mémoire Données
interruptions
DMA
configuration
•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"
14
15. Diagramme bloc du TMS320C5416
Program/Data ROM Program/Data RAM Mémoire
16K Words 128K Words JTAG Test/
interne
D(15-0) Emulation
Control
MUX
Bus externe Program/Data Buses
Timer
A(23-0)
MAC ALU DMA Muxed GP I/O
17 x 17 MPY 40-Bit ALU Ch 0
CMPS Operator 8/16-bit Host Port
40-Bit Adder
Peripheral Bus
(VITERBI) Ch 1 Interface (HPI)
RND, SAT EXP Encoder Ch 2 Multichannel Buffered
Serial Port (McBSP)
Shifter Accumulators Ch 3
40-Bit ACC A Multichannel Buffered
40-Bit Barrel
CPU ACC B
(-16, 31)40-Bit
Ch 4 Serial Port (McBSP)
Ch 5 Multichannel Buffered
Addressing Unit Serial Port (McBSP)
8 Auxiliary Registers PLL Clock
Generator
2 Addressing Units
S/W Waitstate
Power Management Generator Entrées
Sorties
15
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
16
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
19
20. Unités de traitement mathématique
Calculs au format fixe Multiplieur
ou flottant Multiplication et
accumulation (MAC)
Parallélisme entre les
ALU
sous-unités Opérations arithmétiques,
logiques et de conversion
entre formats
Registres de données
Registre de décalage
pour stocker les opérandes
et les résultats Multiplication rapide par 2k
Unités spécialisées
Compare, Select and Store
(Viterbi)
DCT
20
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)
21
22. Schéma de principe des échanges
CPU pilotage
Génération Génération Unités de
Séquenceur
adresses P adresses D calcul
programme
addr
Bus
data
ctrl
addr
données
Bus
data
ctrl
Mémoire P Mémoire D périphériques
22
23. Fetch (lecture instruction)
Génération Génération Unités de
Séquenceur
adresses P adresses D calcul
programme
addr
Bus
data
ctrl
addr
données
Bus
data
ctrl
Mémoire P Mémoire D
23
24. Read/Write (lecture/écriture donnée)
Génération Génération Unités de
Séquenceur
adresses P adresses D calcul
programme
addr
Bus
data
ctrl
addr
données
Bus
data
ctrl
Mémoire P Mémoire D
24
25. Diagramme bloc du TMS320C54x
Program/Data ROM Program/Data RAM Mémoire
16K Words 128K Words JTAG Test/
interne
D(15-0) Emulation
Control
MUX
Bus externe Program/Data Buses
Timer
A(23-0)
MAC ALU DMA Muxed GP I/O
17 x 17 MPY 40-Bit ALU Ch 0
CMPS Operator 8/16-bit Host Port
40-Bit Adder
Peripheral Bus
(VITERBI) Ch 1 Interface (HPI)
Unités de RND, SAT EXP Encoder Ch 2 Multichannel Buffered
calcul Shifter Accumulators
Serial Port (McBSP)
Ch 3
40-Bit ACC A Multichannel Buffered
40-Bit Barrel Ch 4 Serial Port (McBSP)
(-16, 31) 40-Bit ACC B
Ch 5 Multichannel Buffered
Addressing Unit Serial Port (McBSP)
Génération 8 Auxiliary Registers PLL Clock
d’adresses 2 Addressing Units
Generator
S/W Waitstate
Power Management Generator Entrées
Sorties
CPU
25
26. Structure interne du
TMS320C54x
Source : Texas Instruments
TMS320C54x DSP
Reference Set
Vol 1 : CPU and Peripherals
26
27. Bus
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.
27
28. Génération Génération
d'adresses d'adresses
Unité de controle programme données
Bus P
programme
Bus C / D
lecture
données
Bus E
écriture
données
28
29. Unité de traitementnt mathématique
Unité arithmétique et logique(UAL)
Multiplieur-Accumulateur (MAC)
Registre à décalage
Unités spécialisées
29
31. Unité Arithmétique et Logique (ALU)
Ce bloc effectue des calculs arithmétiques et
logique
2 accumulateurs sur 40 bits :
39-32 31-16 15-0
AG AH AL
39-32 31-16 15-0
BG BH BL
Opérations entières et binaires
(+, -, inc, dec, et, ou, xor, shl, ...)
31
32. Registres
IMR Registre Masque d’Interruption TREG Registre Temporaire
IFR Registre de Statut d’Interruption TRN Registre de Transition
ST0 Registre d’Etat 0 AR0 Registre Auxiliaire 0 (Index)
ST1 Registre d’Etat 1 AR1-7 Registres Auxiliaires 1 à 7
PMST Registre de Contrôle de la Mémoire BK Registre d’Addressage Circulaire
AL Accumulateur A (0-15) RC Compteur Répétion 1 Instruction
AH Accumulateur A (16-31) RSA Première Addresse Répétition Bloc
AG Accumulateur A (32-39) REA Dernière Addresse Répétition Bloc
BRC Compteur Répétion d’un Bloc
BL Accumulateur B (0-15)
BH Accumulateur B (16-31) TIM Registre du Timer
BG Accumulateur B (32-39) PRD Compteur de la Période de Timer
TCR Registre de Contrôle du Timer
SP Registre Pointeur de Pile
32
33. Multiplieur-accumulateur (MAC)
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é
33
34. Shifter (registre à décalage)
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.
34
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
35
36. Pipelining
Instructions Instruction Instruction 1
segmentées en étages
Segmentation
Exécution entrelacée de en étages
plusieurs instructions
Chacune à une étage différent Fetch F1
Decode D1
Read R1
Géré par le séquenceur Execute X1
Augmentation de la Entrelacement
fréquence d'horloge
Etages plus simples donc plus Fetch F1 F2 F3 F4 F5
rapides Decode D1 D2 D3 D4
Read R1 R2 R3
Execute X1 X2
36
37. Séquentiel vs pipeline
étagetemps t1 t2 t3 t4 t5 t6 t7 t8
Fetch F1 F2
Decode D1 D2
Read R1 R2
Execute X1 X2
Exécution séquentielle
é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
Chargement du pipeline
Exécution avec pipeline
37
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
38
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
39
40. Exemple de conflit d'accès mémoire
Programme et données
dans une mémoire à 1 accès par cycle
P1 F1 D1 A1 R1 X1
P2 F2 D2 A2 R2 X2
P3 F3 D3 A3 R3 X3
P4 -- -- -- F4 D4 A4 R4 X4
-- -- -- P5 F5 D5 A5 R5 X5
-- -- -- P6 F6 D6 A6 R6
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%
8
41. Résolution du conflit d'accès mémoire
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)
P1 F1 D1 A1 R1 X1
P2 F2 D2 A2 R2 X2
P3 F3 D3 A3 R3 X3
P4 F4 D4 A4 R4 X4
P5 F5 D5 A5 R5 X5
P6 F6 D6 A6 R6 X6
9
42. Bilan accès mémoire
Program Data
SARAM DARAM
ROM ROM
P Bus
Mémoire externe
A
Interface
D Bus
C Bus D
E Bus
A retenir pour éviter les problèmes:
ROM/SARAM - 1 accès par bloc par cycle
DARAM - 2 accès par bloc par cycle
10
43. TMS320C62X
Processeur à
virgule fixe
comportant 2
multiplieurs, 6 UALs
et 2 groupes de 16
registres de 32 bits
Instructions du type
RISC
Le processeur
peut effectuer des
opérations sur
8/16/32 bits de
données.
43
45. TMS320C62X : groupe opérateurs
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.
45
46. TMS320C62X : groupe opérateurs
A0
A1 a1 N
A2 x1 Y a n xn
A3 prod .M n 0
A4 Y
.
. MPY .M a1, x1, prod
. ADD .L Y, prod, Y
. .L
A15
32 bits
46
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
47
49. VLIW : exemple du TMS320C62x
Instruction de 128 bits
8 sous-instructions de 32 bits
32 bits 32 bits 32 bits 32 bits 32 bits 32 bits 32 bits 32 bits
L1 S1 M1 D1 D2 M2 S2 L2
+ + + + + +
+
x x +
49
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)
50
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: y round(2 k x)
Propriétés:
Partie fractionnaire codée sur k bits
Partie 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
51
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
#/Poids -23 22 20 , 2-1 2-2 2-3 2-4 2-5
-4 1 0 0 0 0 0 0 0
-3.96875 1 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0
3.9375 0 1 1 1 1 1 1 0
3.96875 0 1 1 1 1 1 1 1 52
53. Représentation en Format Fixe
Précision: quantification uniforme de pas q
q=2-k
Dynamique:
-2N-k-1 .. 2N-k-1-2-k
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
53
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 E
x M 2
• La mantisse M est exprimée sur m bits, détermine le nombre de
avec un format Qm-1 en complément à 2 chiffres significatifs
détermine la
• L’exposant E est un entier signé sur e bits
dynamique
en binaire décalé
m e N
•Opération de normalisation:
Pour rendre la représentation unique, M doit satisfaire en
outre:
1
M 1
2 54
56. Format virgule flottante IEEE 754
Format pour N=32 bits
1 bit 8 bits 23 bits
signe exposant fraction (partie fractionnaire de la mantisse)
en binaire décalé C2 avec des codes spéciaux
x = (-1)signe (1,fraction)2 2exposant-127
•Cas spéciaux
Zéro: tous les bits à 0
Underflow: exposant = 000000002
Overflow: exposant = 111111112
56