3. 3
Architecture générale d’un processeur
Unité de
contrôle
Unités de
traitement
Mémoire
interne
Unité de
Communication
Bus internes
CPU
Périphériques
et mémoire externes
5. 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érique
et d’une donnée en son sein
Données : valeur de la donnée à échanger
6. 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. 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 BUS
Mémoire
Programme
+ Données
8. 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. 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 Programme
Mémoire Programme
+ Données
Mémoire Données
10. 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. 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
cache
d’instructions
12. 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. 13
Bus externe
dans 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. 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. 15
Bus externe
Diagramme bloc du TMS320C5416
Muxed GP I/O
D(15-0)
A(23-0)
Program/Data Buses
Timer
Program/Data RAM
128K Words
Ch 0
Ch 1
Ch 2
Ch 3
Ch 4
Ch 5
DMA
8/16-bit Host Port
Interface (HPI)
Program/Data ROM
16K Words
PeripheralBus
RND, SAT
17 x 17 MPY
40-Bit Adder
MAC
Shifter
40-Bit Barrel
(-16, 31)
EXP Encoder
40-Bit ALU
CMPS Operator
(VITERBI)
ALU
Accumulators
40-Bit ACC A
40-Bit ACC B
8 Auxiliary Registers
2 Addressing Units
Addressing Unit
Multichannel Buffered
Serial Port (McBSP)
Multichannel Buffered
Serial Port (McBSP)
Multichannel Buffered
Serial Port (McBSP)
PLL Clock
Generator
S/W Waitstate
GeneratorPower Management
Mémoire
interne
Entrées
Sorties
JTAG Test/
Emulation
Control
CPU
MUX
16. 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
19. 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. 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. 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. 22
Schéma de principe des échanges
addr
data
ctrl
addr
data
ctrl
Séquenceur
Bus
programme
Bus
données
Génération
adresses P
Génération
adresses D
Unités de
calcul
Mémoire P Mémoire D
CPU
périphériques
pilotage
25. 25
Bus externe
Diagramme bloc du TMS320C54x
Muxed GP I/O
D(15-0)
A(23-0)
Program/Data Buses
Timer
Program/Data RAM
128K Words
Ch 0
Ch 1
Ch 2
Ch 3
Ch 4
Ch 5
DMA
8/16-bit Host Port
Interface (HPI)
Program/Data ROM
16K Words
PeripheralBus
RND, SAT
17 x 17 MPY
40-Bit Adder
MAC
Shifter
40-Bit Barrel
(-16, 31)
EXP Encoder
40-Bit ALU
CMPS Operator
(VITERBI)
ALU
Accumulators
40-Bit ACC A
40-Bit ACC B
8 Auxiliary Registers
2 Addressing Units
Addressing Unit
Multichannel Buffered
Serial Port (McBSP)
Multichannel Buffered
Serial Port (McBSP)
Multichannel Buffered
Serial Port (McBSP)
PLL Clock
Generator
S/W Waitstate
GeneratorPower Management
Génération
d’adresses
Unités de
calcul
Mémoire
interne
Entrées
Sorties
JTAG Test/
Emulation
Control
CPU
MUX
27. 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
31. 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)
ALAHAG
15-031-1639-32
BLBHBG
15-031-1639-32
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. 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. 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. 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. 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
Segmentation
en étages
Entrelacement
37. 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
étagetemps 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. 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. 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
40. 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%
41. 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)
42. 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
ROM
SARAM DARAM
E Bus
C Bus
D Bus
P Bus
A
D
Interface
Mémoireexterne
10
43. TMS320C62X
43
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.
45. 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. 46
TMS320C62X : groupe opérateurs
MPY .M a1, x1, prod
ADD .L Y, prod, Y
N
n
nn xaY
0
32 bits
a1
x1
prod
Y
.
.
.
.
.M
.L
A0
A1
A2
A3
A4
A15
47. 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
49. 49
VLIW : exemple du TMS320C62x
32 bits
Instruction de 128 bits
8 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. 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. 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 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
52. 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. 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. 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 bits
en binaire décalé
E
Mx 2
Nem
•Opération de normalisation:
Pour rendre la représentation unique, M doit satisfaire en
outre:
1
2
1
M
détermine le nombre de
chiffres significatifs
détermine la
dynamique
55. 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. 56
Format virgule flottante IEEE 754
Format pour N=32 bits
1 bit
signe
8 bits
exposant
en binaire décalé
23 bits
fraction (partie fractionnaire de la mantisse)
C2 avec des codes spéciaux
•Cas spéciaux
Zéro: tous les bits à 0
Underflow: exposant = 000000002
Overflow: exposant = 111111112
x = (-1)signe × (1,fraction)2 × 2exposant-127