Vous êtes sur la page 1sur 28

Chapitre 3 :

Architecture du TMS320C64
Unités fonctionnelles
Deux chemins de données : A et B
Chaque chemin contient 4 unités de traitement :
.M : Multiplication
.L : Opération logique et arithmétique
.S : Branchement et manipulation binaire
.D : Chargement et stockage des données
64 registres de 32 bits (A0 à A31) et (B0 à B31)
2 chemins croisés (1x et 2x) (cross path)
Chemin de données A Chemin de données B

Registre A0 à A31 Registre B0 à B31

.L1 .S1 .M1 .D1 .L2 .S2 .M2 .D2

Chemin croisé

Chapitre 3 Cours DSP 2


Registres
Registres A0, A1, A2, B0, B1 et B2 peuvent êtres utilisés comme des
registres à condition.
Registres A4 à A7 et B4 à B7 : pointeur pour le mode d’adressage
circulaire.
Registres A0 à A9 et B0 à B9 : registre temporaire.
Registre A10 à A31 et B10 à B31 : mémorisés et puis restaurés à
chaque appel à un sous programme.
On peut former 32 registres de 40 ou 64 bits en utilisant les paires de
registres A0:A1, A2:A3, ……et B30:B31.
Il existe d’autres registres de contrôles, d’interruptions, de modes,
etc.

Chapitre 3 Cours DSP 3


Paquet de Fetch et d’Exécution
Basée sur la structure VLIW (Very Long Instruction Word)

Instruction : 4 octets = 32 bits

PE : Paquet Exécutable : groupe d’instructions exécutables en //


pendant un seul cycle.
PF : Paquet Fetch formé de 8 instructions.
1PF peut contenir 1 PE (si toutes les 8 instructions en //)
ou 8 PE (pas d’instructions en // ).

Le LSB d’une instruction (p-bit) indique si la prochaine


instruction appartient au même PE (si 1) ou non (si 0).

Chapitre 3 Cours DSP 4


Paquet de Fetch et d’Exécution
Exemple 1 : Un PF avec 3 PEs le LSB (p-bit) de chaque inst :
Instruction A
31 0 31 0 31 0 31 0 31 0 31 0 31 0 31 0
Instruction B
1 0 1 1 0 1 1 0
A B C D E F G H
Instruction C
Instruction D
Remarque :
Instruction E
Si un branchement aura lieu à l’adresse de
l’instruction D :
Instruction F
D et E seront exécutés dans un cycle.
Instruction G
F, G et H dans le cycle suivant.
Instruction H
Les instructions A, B et C seront ignorés.

Chapitre 3 Cours DSP 5


Paquet de Fetch et d’Exécution
Exemple 2 :

Chapitre 3 Cours DSP 6


Paquet de Fetch et d’Exécution
Exemple 3 :

Chapitre 3 Cours DSP 7


Paquet de Fetch et d’Exécution
Exemple 4 :

Chapitre 3 Cours DSP 8


Pipeline
t1 t2 t3 t4 t5 t6 t7 t8 t9
Fetch F1 F2 F3
Decode D1 D2 D3
Execute E1 E2 E3

Exécution sans pipeline

t1 t2 t3 t4 t5 t6 t7 t8 t9
Fetch F1 F2 F3 F4 F5 F6 … … …
Decode D1 D2 D3 D4 D5 D6 … …
Execute E1 E2 E3 E4 E5 E6 …

Exécution avec pipeline

Chapitre 3 Cours DSP 9


Pipeline

PG PS PW PR DP DC E1 E2 E3 E4 E5 E6

Fetch Decode Execute

Étapes d’extraction du Programme


(fetch, PF)

PG PS PR
PW
Génération Transmission de Réception et lecture
Attente accès
d’adresse l’adresse du PF
mémoire
Dans le CPU (à la mémoire) (au CPU)

Chapitre 3 Cours DSP 10


Pipeline
Étape du décodage
d’instruction (D)

DP
DC
Répartition des instructions
Décodage des PEs
d’un PF sous forme de PE

Jusqu’à 6 cycles Étape d’exécution


(E)
et tout dépend de l’instruction

E1 E5
courtes inst (ADD, E2 E3; E4 Chargement E6
SUB, AND, OR, Instruction MPY Slots de des valeurs Branchement
XOR, etc…) retard dans un registre

Etage réservée pour les instructions longues


Chapitre 3 Cours DSP 11
Pipeline
Considérons les 3 exemples suivants :

6 cycles Série Parallèle partielle Parallèle totale

1 cycle B .S1 B .S1 B .S1


MVK .S1 || MVK .S2 || MVK .S2
ADD .L1 ADD .L1 || ADD .L1
2 cycles ADD .L1 || ADD .L2 || ADD .L2
MPY .M1 || MPY .M1 || MPY .M1
5 cycles MPY .M1 MPY .M1 || MPY .M2
LDW .D1 || LDW .D1 || LDW .D1
LDB .D1 || LDB .D2 || LDB .D2

Chapitre 3 Cours DSP 12


Pipeline

1er exemple : Exécution en série

Cycle = 1
B .S1
MVK .S1 Program Fetch Decode Execute Done
ADD .L1 PG PS PW PR DP DC E1 E2 E3 E4 E5 E6 
B
ADD .L1 MVK
MPY .M1 ADD
ADD
MPY .M1 MPY
LDW .D1 MPY
LDW
LDB .D1 LDB

Chapitre 3 Cours DSP 13


Pipeline
Cycle = 2
Program Fetch Decode Execute Done
PG PS PW PR DP DC E1 E2 E3 E4 E5 E6 
B
MVK
ADD
FP2 ADD
B .S1 MPY
MVK .S1 MPY
LDW
ADD .L1 LDB

ADD .L1
Cycle = 3
MPY .M1
Program Fetch Decode Execute Done
MPY .M1
PG PS PW PR DP DC E1 E2 E3 E4 E5 E6 
LDW .D1
B
LDB .D1 MVK
ADD
FP3 FP2 ADD
MPY
MPY
LDW
LDB

Chapitre 3 Cours DSP 14


Pipeline

Cycle = 4
B .S1
MVK .S1 Program Fetch Decode Execute Done
ADD .L1 PG PS PW PR DP DC E1 E2 E3 E4 E5 E6 

ADD .L1 B
MVK
MPY .M1 ADD
PF4 FP3 FP2 ADD
MPY .M1 MPY
LDW .D1 MPY
LDW
LDB .D1 LDB

Chapitre 3 Cours DSP 15


Pipeline

Un seul PE par cycle entre dans le pipeline en arrivant à


l’étape DC (Decode) :

B .S1 Cycle = 5
MVK .S1
PF Decode Execute Done
ADD .L1
PF DP DC E1 E2 E3 E4 E5 E6 
ADD .L1
MPY .M1 B
MVK
MPY .M1 ADD
PF2 ADD
LDW .D1
MPY
LDB .D1 MPY
LDW
LDB

Chapitre 3 Cours DSP 16


Pipeline
Cycle = 6 PF Decode Execute Done
PF DP DC E1 E2 E3 E4 E5 E6 

B
MVK
ADD
PF2 ADD
MPY
MPY
LDW
LDB

Cycle = 7 PF Decode Execute Done


PF DP DC E1 E2 E3 E4 E5 E6 

B
MVK
ADD
PF2 ADD
MPY
MPY
LDW
LDB

Chapitre 3 Cours DSP 17


Pipeline
Cycle = 8 PF Decode Execute Done
PF DP DC E1 E2 E3 E4 E5 E6 

B
MVK
ADD
PF2 ADD
MPY
MPY
LDW
LDB

Cycle = 9 PF Decode Execute Done


PF DP DC E1 E2 E3 E4 E5 E6 

B
MVK
ADD
PF2 ADD
MPY
MPY
LDW
LDB

Chapitre 3 Cours DSP 18


Pipeline
Cycle = 10 PF Decode Execute Done
PF DP DC E1 E2 E3 E4 E5 E6 

B
MVK
ADD
PF2 ADD
MPY
MPY
LDW
LDB

Cycle = 11 PF Decode Execute Done


PF DP DC E1 E2 E3 E4 E5 E6 

B
MVK
ADD
PF2 ADD
MPY
MPY
LDW
LDB

Chapitre 3 Cours DSP 19


Pipeline
2ème exemple : Exécution en parallèle partielle

B .S1 Cycle = 5
|| MVK .S2 PF Decode Execute Done
PF DP DC E1 E2 E3 E4 E5 E6 
ADD .L1
B
|| ADD .L2 MVK
|| MPY .M1 ADD
ADD
MPY
MPY .M1
MPY
|| LDW .D1 LDW
|| LDB .D2 LDB

Chapitre 3 Cours DSP 20


Pipeline

B .S1 Cycle = 6
|| MVK .S2 PF Decode Execute Done
PF DP DC E1 E2 E3 E4 E5 E6 
ADD .L1
B
|| ADD .L2 MVK
|| MPY .M1 ADD
ADD
MPY
MPY .M1
MPY
|| LDW .D1 LDW
|| LDB .D2 LDB

Chapitre 3 Cours DSP 21


Pipeline
PF Decode Execute Done
Cycle = 7
PF DP DC E1 E2 E3 E4 E5 E6 
B
MVK

ADD
ADD
MPY

MPY
LDW
LDB

PF Decode Execute Done


Cycle = 8
PF DP DC E1 E2 E3 E4 E5 E6 
B
MVK

ADD
ADD
MPY

MPY
LDW
LDB

Chapitre 3 Cours DSP 22


Pipeline
PF Decode Execute Done
Cycle = 9
PF DP DC E1 E2 E3 E4 E5 E6 
B
MVK

ADD
ADD
MPY

MPY
LDW
LDB

PF Decode Execute Done


Cycle = 10
PF DP DC E1 E2 E3 E4 E5 E6 
B
MVK

ADD
ADD
MPY
MPY
LDW
LDB

Chapitre 3 Cours DSP 23


Pipeline
PF Decode Execute Done
Cycle = 11
PF DP DC E1 E2 E3 E4 E5 E6 
B
MVK

ADD
ADD
MPY
MPY
LDW
LDB

PF Decode Execute Done


Cycle = 12
PF DP DC E1 E2 E3 E4 E5 E6 

B
MVK

ADD
ADD
MPY
MPY
LDW
LDB

Chapitre 3 Cours DSP 24


Pipeline
3ème exemple : Exécution en parallèle totale

Cycle = 5
B .S1 PF Execute Done
Decode
|| MVK .S2
PF DP DC E1 E2 E3 E4 E5 E6 
|| ADD .L1
|| ADD .L2 B
MVK
|| MPY .M1 ADD
ADD
|| MPY .M2 MPY
|| LDW .D1 MPY
LDW
|| LDB .D2 LDB

Chapitre 3 Cours DSP 25


Pipeline
PF Decode Execute Done
Cycle = 6
PF DP DC E1 E2 E3 E4 E5 E6 

B
MVK
ADD
ADD
MPY
MPY
LDW
LDB

PF Decode Execute Done


Cycle = 7
PF DP DC E1 E2 E3 E4 E5 E6 

B
MVK
ADD
ADD
MPY
MPY
LDW
LDB

Chapitre 3 Cours DSP 26


Pipeline
PF Decode Execute Done
Cycle = 8
PF DP DC E1 E2 E3 E4 E5 E6 

B
MVK
ADD
ADD
MPY
MPY
LDW
LDB

PF Decode Execute Done


Cycle = 9
PF DP DC E1 E2 E3 E4 E5 E6 

B
MVK
ADD
ADD
MPY
MPY
LDW
LDB

Chapitre 3 Cours DSP 27


FIN
Chapitre 3

Chapitre 3 Cours DSP 28