Académique Documents
Professionnel Documents
Culture Documents
Chapitre4 DSP
Chapitre4 DSP
Kef 2023/2024
1 Introduction
Vu que la rapidité d’exécution est très importante dans les processeurs DSP,
l’optimisation d’un programme dédiée à un DSP est une étape très importante qui permet
d’avoir des gains de temps considérables dans l’exécution du programme.
2 Gestion des chemins croisés (Data cross path and Adress cross path)
Pour augmenter les performances d’un processeur, l’augmentation de la fréquence
d’horloge et du nombre d’unités de calcul est la solution la plus évidente. Cependant
lorsque le nombre d’unités de calcul dépasse une unité, le fait d’utiliser plusieurs unités en
parallèle permet une optimisation accrue du programme. Les figures 1, 2 et 3 représentent
le plan des connexions qui existent entre les registres A, B et les unités de calcul
correspondantes.
1
Enseignant : Mehdi JEMAI I.S.E.T.Kef 2023/2024
2
Enseignant : Mehdi JEMAI I.S.E.T.Kef 2023/2024
Remarque :
– que ce soit dans la partie A ou B, les connexions entre les registres (A ou B) et les unités
correspondantes .L, .S et .M sont spécifique pour chaque unité. Ceci implique que chaque
unité peut être utilisée avec les registres correspondants, sans créer de contraintes pour les
autres unités (.L, .S et .M),
– il existe dans chaque partie (A ou B) un chemin croisé reliant les registres d’une partie
(A ou B) aux unités de l’autre partie (B ou A respectivement). Ces deux chemins croisés
(cross path) sont notés 1X : chemin allant des registres B vers les unités .L1, .S1 et .M1, et
2X : chemin allant des registres A vers les unités .L2, .S2 et .M2,
– deux chemins croisés existent aussi au niveau des unités .D1 et .D2 pour les opérations
de chargement et de stockage croisé.
Exemple :
ADD .S1 A0,A1,A2 ; .S1 est utilisée pour les deux instructions
3
Enseignant : Mehdi JEMAI I.S.E.T.Kef 2023/2024
Contraintes sur les chemins croisés 1X et 2X Seule une unité (.S, .L, ou .M) par
chemin de donnée et par paquet d’exécution, peut lire une opérande depuis le registre
opposé à travers le chemin croisé (1X ou 2X) Par exemple, l’unité .S1 peut lire les
opérandes aussi bien depuis le registre A, ou bien elle peut lire une opérande depuis le
registre B en utilisant le chemin croisé 1X et la deuxième opérande depuis le registre A.
L’utilisation du chemin croisé est notée par X, suivant le nom de l’unité fonctionnelle dans
la syntaxe de l’instruction (comme pour .S1X).
Exemple :
1- Le paquet d’exécution suivant est invalide parce que le chemin croisé 1X est utilisé
pour deux opérandes différentes du registre B :
2- Le paquet d’exécution suivant est valide parce que toute les utilisations du chemin
croisé 1X sont pour la même opérande du registre B, et toute les utilisations du
chemin croisé 2X sont pour la même opérande du registre A.
Exemple :
LDW .D1 *A0,A1 ; \ L’unité .D2 doit utiliser le registre d’adresse depuis les registres B
4
Enseignant : Mehdi JEMAI I.S.E.T.Kef 2023/2024
De la même façon, un chargement depuis ou un stockage vers un même registre n’est pas
valide dans un même paquet d’exécution.
|| [A1] ADD .L1 A0,A1,A5 ; la condition sur A1 n’est pas prise en compte dans le calcul
5
Enseignant : Mehdi JEMAI I.S.E.T.Kef 2023/2024
Deux instructions ne peuvent pas écrire sur le même registre durant le même cycle.
ADD .L2 B5,B6,B7 ; \ écriture sur le même registre durant le même cycle
3- L’optimisation pipeline
6
Enseignant : Mehdi JEMAI I.S.E.T.Kef 2023/2024
100%. Dans la plupart des cas, il n’est pas nécessaire d’optimiser tout le code. Seule une
partie du code est optimisée, en général, c’est la partie qui contient le plus de calcul.
– recherche (fetch),
– décodage (decode),
– exécution (execute).
Étage \ temps t1 t2 t3 t4 t5 t6 t7 t8 t9
Fetch F1 F2 F3
Decode D1 D2 D3
Execute E1 E2 E3
Exécution séquentielle
Étage \
t1 t2 t3 t4 t5 t6 t7 t8
temps
Fetch F1 F2 F3 F4 F5 … … …
Decode D1 D2 D3 D4 D5 … …
Execute E1 E2 E3 E4 E5 …
7
Enseignant : Mehdi JEMAI I.S.E.T.Kef 2023/2024
– totalement série,
– totalement parallèle,
– partiellement parallèle.
Les exemples suivants montrent les conversions d’une séquence en "p" vers une exécution
cycle par cycle.
8
Enseignant : Mehdi JEMAI I.S.E.T.Kef 2023/2024
9
Enseignant : Mehdi JEMAI I.S.E.T.Kef 2023/2024
Structure en "p" d’un paquet rapport partiellement série (figure 8) et illustration sous forme
d’instructions (tableau 3).
Soit le code assembleur suivant sera codé en série, parallèle et partiellement parallèle
10
Enseignant : Mehdi JEMAI I.S.E.T.Kef 2023/2024
4-Application
Afin de montrer comment optimiser un code, nous allons travailler sur l’exemple
d’un code de somme de produit :
N 1
y n h i .x i
i 0
Les étapes 1 à 6 peuvent être traduites dans le code assembleur comme suit :
11
Enseignant : Mehdi JEMAI I.S.E.T.Kef 2023/2024
NOP ;
NOP ;
12
Enseignant : Mehdi JEMAI I.S.E.T.Kef 2023/2024
NOP 4
NOP
NOP 4
NOP
::
::
::
NOP 4
NOP
4. Utiliser l’accès par mot ou double-mot au lieu de l’accès par byte ou moitié de mot.
13