Vous êtes sur la page 1sur 66

Chapitre 1: Architecture des DSP

Sommaire

Introduction

Domaine d’application

Accès à la mémoire

Mémoire cache

Accès Direct à la Mémoire (DMA)

DSP hautes performances


Introduction
Structure générale des applications de TNS

ADC = Analog to Digital Converter


DAC = Digital to Analog Converter

ENET'Com Cours DSP - 2ème année GII 2


Introduction : Besoins en TNS

❑ Traitement temps réel


▪ Latence maximale autorisée entre l’arrivée d’une donnée et la
disponibilité du résultat du calcul correspondant.

❑ Débits de données important


▪ Signaux numériques = quantité importante de données transmises
séquentiellement

❑ Charge de calcul importante


▪ Convolution, FFT…
▪ Charge de calcul = Débit × Complexité du calcul

❑ Maitrise de la précision des calculs

❑ Traitements répétitifs

ENET'Com Cours DSP - 2ème année GII 3


Introduction : Operations classiques en TNS

La plupart des algorithmes de traitement de signal utilisent des fonctions


de somme de produits appelée MAC.

❑ MAC : Multiplication ACcumulation


▪ acc ← acc + bi . xi

▪ Filtres à reponse impulsionelle finie (RIF):

▪ Filtres à reponse impulsionelle infinie (RII):

ENET'Com Cours DSP - 2ème année GII 4


Introduction : Operations classiques en TNS

Pour accélérer l’exécution des algorithmes en TNS, les DSPs intègrent


des instructions spécifiques telles que :

❑ MAC
▪ Filtrage (convolution)
▪ Correlation
▪ Produit scalaire
❑ FFT
▪ Analyse spectrale
❑ DCT
▪ Compression d’images
❑ Compare Select and Store
▪ Algorithme de Viterbi

ENET'Com Cours DSP - 2ème année GII 5


Introduction : Processeurs pour le TNS ?

• ASIP = Application Specific


Instruction set Processor
• ASIC = Application Specific
Integrated Circuit

▪ microcontrôleurs : pas assez performants


▪ ASIC : beaucoup trop coûteux, mise en œuvre complexe et longue
▪ ASIP : beaucoup trop coûteux, définition complexe
▪ processeurs généralistes : pas temps réel, trop coûteux, consomment trop d’énergie,
difficilement embarquables
Solution : Faire des processeurs spécifiques pour le traitement numérique du signal
DSP
ENET'Com Cours DSP - 2ème année GII 6
Introduction : Evolution des DSP

ENET'Com Cours DSP - 2ème année GII 8


Introduction: Marché des DSP

19%

Texas Instruments
Agere Systems
48%
10% Motorola
Analog Devices
Autres
10%

13%

ENET'Com Cours DSP - 2ème année GII 8


Introduction: Familles DSP TI
Des plates-formes multiples proposent des solutions appropriées
pour différentes applications

C6000
C5000
High Performance
‘C’ Efficiency
C2000 Power Efficient
Performance
Pour la famille C2000, on distingue 2 groupes de DSP
Efficient Integration à virgule fixe: TMS320C24x à 16-bit ndet TMS320C28x
for Control à 32 bits,
ENET'Com Cours DSP - 2ème année GII 9
Domaines d’applications : Télécommunications
Fonctions DSP: Modulation et Transmission, Démodulation et Réception,
Compression, Encryptage, annulation d'écho, multiplexage

Applications: Modems, Fax, autocommutateurs publics et privés, accueils


automatiques, radio-téléphones, Pagers, Systèmes GPS, Vidéo Téléphones,
systèmes Satellite, boucle locale radio, faisceaux hertziens
ENET'Com Cours DSP - 2ème année GII 10
Domaines d’applications : Instrumentation et mesure

Fonctions DSP:
Transformée de Fourier rapide (FFT), Filtrage, synthèse de forme d'onde,
filtrage adaptatif, calculs rapides

Applications:
Equipements de tests et mesures, analyse de vibration, Cartes d'entrées-
sorties pour PCs, systèmes auto : injection contrôlée, ABS, contrôle actif du
bruit (générateurs d' "anti-bruit"), systèmes de forage pétrolier, Instruments
sismiques , mesure de puissance, simulateurs de vols, analyseurs de réseaux,
générateurs de signaux
ENET'Com Cours DSP - 2ème année GII 11
Domaines d’applications : Electronique médicale

Fonctions DSP:
Filtrage, annulation d'écho, FFT 2D et 3D, générateurs de signaux

Applications:
équipements d'assistance respiratoire et cardiaque, échographies, analyseurs
biologiques, surveillance pré-natale, kinésithérapie, Scanners, IRM, oreillettes
ENET'Com Cours DSP - 2ème année GII 12
Domaines d’applications : Traitement d'image

Fonctions DSP:
Filtrage "spatial", FFT 2D et 3D, reconnaissance de forme, lissage, filtrage

Applications:
Imagerie médicale, recherche sous-marine d'objets, systèmes d'inspection
automatique, reconnaissance d'empreintes digitales, TV numérique, Sonars,
Radars, Robotique.
ENET'Com Cours DSP - 2ème année GII 13
Domaines d’applications : Industrie
CONTROLE DE MOTEURS
Fonctions DSP:
Filtrage, FFT, PID,
calculs rapides,
réduction de bruit.

Applications:
contrôle de vitesse de moteur, Robotique, gestion de puissance, générateurs,
ascenseurs, climatisations, contrôle de trafic, systèmes de Navigation, disques
durs, analyseurs de Vibration
ENET'Com Cours DSP - 2ème année GII 14
Domaines d’applications : Audio
Fonctions DSP:
Réverbération,
contrôle de tonalité,
écho, filtrage,
compression audio,
égalisation en
fréquence,
transposition de
fréquence, effets
"spatiaux", surround

Applications:
Instruments de musiques et Amplificateurs, consoles de mixage, équipements
d'enregistrement digitaux ou non, équipements de diffusion, cartes pour PC, jeux
et jouets, autoradios, lecteurs de CD-ROM, TV, hauts parleurs haut de gamme
ENET'Com Cours DSP - 2ème année GII 15
Domaines d’applications : Traitement de la parole

Fonctions DSP:
synthèse et reconnaissance vocale, Compression, lecture de texte, emails, sms,
transposition d fréquence, Filtrage, enregistrement et playback.

Applications:
enregistreurs sans support magnétique, répondeurs-enregistreurs, boîtes
vocales, systèmes de sécurité par reconnaissance vocale, interphones, cartes
pour PC, jeux et jouets

ENET'Com Cours DSP - 2ème année GII 16


DSP à Virgule fixe/flottante
Les DSP à virgule fixe
• Les données sont représentées comme étant des nombres fractionnaires à
virgule fixe, (exemple -1.0 à +1.0), ou comme des entiers classiques.
• La représentation de ces nombres fractionnaires s’appuie sur la méthode du
«complément à deux».

Les DSP à virgule flottante


• Les données sont représentées en utilisant une mantisse et un exposant.
• La représentation de ces nombres s’effectue selon la formule suivante :
n = signe mantisse 2exposant
• Généralement, la mantisse est un nombre fractionnaire (-1.0 à +1.0), et
l’exposant est un entier indiquant la place de la virgule en base 2.

ENET'Com Cours DSP - 2ème année GII 17


DSP à Virgule fixe/flottante

❑ Sur les DSP à virgule fixe, le programmeur doit rester vigilant à chaque
étape d’un calcul. Ces DSP sont plus difficiles à programmer.

❑ Les DSP à virgule flottante fournissent une très grande dynamique et une
meilleure précision de calcul. Les DSP à virgule flottante sont plus chers et
consomment plus d’énergie.

❑ En termes de rapidité, les DSP à virgule fixe se placent d'ordinaire devant


leurs homologues à virgule flottante, ce qui constitue un critère de choix
important.

ENET'Com Cours DSP - 2ème année GII 18


Accès à la mémoire
Architecture Von Neumann

Mémoire de
Bus de données Données
CPU +
Bus d’adresse Mémoire de
Programme

• Un seul chemin d'accès à la mémoire de données et du programme


• 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

ENET'Com Cours DSP - 2ème année GII 20


Accès à la mémoire

Architecture Harvard

Bus de données Bus de données


Mémoire de
Données
CPU Mémoire de
Programme
Bus d’adresse Bus d’adresse

• 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

ENET'Com Cours DSP - 2ème année GII 21


Accès à la mémoire
Architecture Harvard Amélioré

Mémoire de Bus de données


Données
A Bus d’adresse
Bus de données
CPU Mémoire de
Programme
Mémoire de Bus de données Bus d’adresse
Données
B Bus d’adresse

• Plusieurs bus de données


• Accès simultané a plusieurs données
• Nécessite une mémoire multi-accès ou multi-blocs

ENET'Com Cours DSP - 2ème année GII 22


Mémoire Cache

Bus de données
Cache Mémoire
Données Données
Bus d’adresse

CPU
Bus de données
Cache Mémoire
Instructions Programme
Bus d’adresse

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 a la mémoire programme
• Cache pour les données
– Peu utilisée sur les DSP classiques
– De plus en plus utilise sur les DSP hautes-performances
– Peut poser des problèmes pour la validation du temps réel

ENET'Com Cours DSP - 2ème année GII 23


Accès Direct à la Mémoire
(DMA : Direct Memory Access)

• Echange de données entre la


mémoire interne et les circuits
périphériques sans l’intervention
du CPU

• Déplacements au sein de la
mémoire interne

• CPU prévenu du déroulement


par Interruptions

ENET'Com Cours DSP - 2ème année GII 24


DSP hautes performances

Architecture conventionnelle

• Spécialisée pour le TNS


• Faible consommation, faible coût
• Difficulté de programmation
• Performances bornées
• Limite physique a l’augmentation des fréquences d’horloge

Architecture hautes performances

• Rendues nécessaires par de nouveaux besoins


• Performance (téléphonie 3G)
• Rapidité de développement
ENET'Com Cours DSP - 2ème année GII 25
DSP hautes performances

Vers plus de parallélisme…

• SISD = Single Instruction, Single Data


• SIMD = Single Instruction, Multiple Data
• MIMD = Multiple Instruction, Multiple Data

ENET'Com Cours DSP - 2ème année GII 26


DSP hautes performances
Vers plus de parallélisme…
• Augmentation du nombre de cœurs (multi-core):
Multi-cœurs hétérogène Multi-cœurs de même type
Processeur générique ARM (Pilotage du système) Exécution des instructions en parallèle
+ DSP (Traitement du Signal)

ENET'Com Cours DSP - 2ème année GII 27


Chapitre 2
Architecture des DSP TMS320C64X
Sommaire
Architecture interne du TMS320C64x

Pipeline du TMS320C64x

Modes d’adressages

Syntaxe des Instructions

Contraintes

Méthodes d’optimisation

Pipeline : Etude de cas


Architecture Interne TMS320C64x

Famille TMS320C6x

ENET'Com Cours DSP - 2ème année GII 29


Architecture Interne TMS320C64x
Le DSP TMS320C64x dispose de :
- C64x CPU de 5760 MIPS max,
- 2 mémoires caches de niveau 1 à accès rapide (Programme L1P et Données L1D),
- 1 Mémoire de niveau 2 (L2) avec un échange de données allant jusqu’à 11,5Go/s
- 1 contrôleur DMA avec 64 canaux…

ENET'Com Cours DSP - 2ème année GII 30


Architecture Interne TMS320C64x
C64x DSP Core
Unité de chargement
programme (Fetch Unit)
8 instructions de 32 bits à la fois
Bus instructions=32 x 8 = 256bits

Unité de répartition des


instruction (Dispatch Unit)

Unité de décodage des


instruction (Decode Unit)
8 Unités de Traîtement L:
ALU, S:Shift+ALU, D:Address
2 Voies de données A et B
(Data Phath) :
2 x 32 registres de 32 bits
(A0..A31 et B0..B31)

ENET'Com 31
Architecture Interne TMS320C64x
Unités fonctionnelles
• Deux chemins de données : A et B (Data path 1 et Data path 2)
❑ Chaque chemin contient 4 unités de
traitement indépendantes:
(.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) (B0 à B31)

❑ Deux opérations MAC en parallèle


décomposée en opérations élémentaires
▪ Load (Unite D)
▪ Multiply (Unite M)
▪ Add (Unite L)
❑ 2 chemins croisés (1x et 2x) (cross path)

ENET'Com Cours DSP - 2ème année GII 32


Architecture Interne TMS320C64x
Opérations de unités fonctionnelles
.L .M .S .D
ABS MPY ADD2 ADD(U)
ABS2 MPYSU4 AND ADD2
ADD(U) MPYUS4 B AND
ADD2 MPYU4 MVK LD
ADD4 MVD MVKH LDDW
AND SMPY OR MVK
MVK SHL OR
OR SHLMB ST
SHLMB SHR2 STDW
SHRMB SHRMB SUB(U)
SUB(U) SUB2 SUB2
SUB2 XOR XOR
SUB4
XOR

ENET'Com Cours DSP - 2ème année GII 33


Architecture Interne TMS320C64x
Registres

64 registres de 32 bits (A0 à A31) (B0 à B31)


❑ 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.


ENET'Com Cours DSP - 2ème année GII 34
Pipeline du TMS320C64x
Le pipeline est le découpage de l’exécution de l’instruction en
plusieurs étages travaillants en parallèle
Le pipeline du processeur est généralement découpé en trois étages

❑ Fetch : chargement de l'instruction depuis la mémoire

❑ Decode : décodage de l'instruction

❑ Execution : exécution de l'instruction

Dans cet exemple, l’exécution des trois


instructions se fait en 9 cycles d’horloges en
non pipeliné alors que dans le cas du
papeliné, l’exécution se fait en 5 cycles
seulement. Dès que le pipeline est plein,
une instruction est exécutée à chaque cycle.

ENET'Com Cours DSP - 2ème année GII 35


Pipeline du TMS320C64x
Paquet de Fetch et d’Exécution

Le bus de données programme du DSP C64x est formé de 256


bits, donc il peut lire de la mémoire programme 8 instructions
en même temps appelé Paquet de Fetch (PF)

ENET'Com Cours DSP - 2ème année GII 36


Pipeline du TMS320C64x
Paquet de Fetch et d’Exécution
Paquet d’Exécution (PE)
Un groupe d’instructions exécutables en parallèle (||) pendant un seul cycle.

Paquet Fetch (PF): formé de 8 instructions


Peut contenir 1 PE (si toutes les 8 instructions sont en ||) ou 8 PEs (si 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).

ENET'Com Cours DSP - 2ème année GII 37


Pipeline du TMS320C64x
Paquet de Fetch et d’Exécution
Cet exemple montre un Paquet Fetch formé de 3 paquets d’exécutions (EP).

ENET'Com Cours DSP - 2ème année GII 38


Pipeline du TMS320C64x
Pipeline du TMS32064x = 12 étages
PG PS PW PR DP DC E1 E2 E3 E4 E5 E6

Fetch Decode Execute


Fetch
❑ PG: Génération d’adresse par le CPU

❑ PS: Transmission de l’adresse à la mémoire programme

❑ PW: Attente à ce que la donnée soit stable

❑ PR: Réception et lecture des 8 instructions (Paquet Fetch = PF)

ENET'Com Cours DSP - 2ème année GII 39


Pipeline du TMS320C64x
Pipeline du TMS32064x = 12 étages
PG PS PW PR DP DC E1 E2 E3 E4 E5 E6

Fetch Decode Execute

Decode
❑ DP : Répartition des instructions d’un PF sous forme de PE

❑ DC : Décodage des PEs

ENET'Com Cours DSP - 2ème année GII 40


Pipeline du TMS320C64x
Pipeline du TMS32064x = 12 étages
PG PS PW PR DP DC E1 E2 E3 E4 E5 E6

Fetch Decode Execute


La plus part des instructions s’exécutent en un seul cycle (E1), à l’exception de quelques
instructions qui s’exécutent en plusieurs cycles (chargement (LD), branchement (B) …)

Execute
❑ E1 : Exécution de la majorité des instructions (ADD, SUB, AND, OR, XOR, etc…)

❑ E2 : Instruction de multiplication (MPY, SMPY)

❑ E3; E4 : Slots de retard, aucune instruction ne s’exécute dans ces deux étages

❑ E5 : Chargement des valeurs dans un registre (LDB, LDH, LDW)

❑ E6 : Branchement (B)
ENET'Com Cours DSP - 2ème année GII 41
Pipeline du TMS320C64x
Pipeline du TMS32064x = 12 étages

ENET'Com Cours DSP - 2ème année GII 42


Pipeline du TMS320C64x

Exemple
Pour bien comprendre le fonctionnement du pipeline, nous allons traiter
les trois cas suivants :

ENET'Com Cours DSP - 2ème année GII 43


Pipeline du TMS320C64x
Exemple : exécution série

ENET'Com Cours DSP - 2ème année GII 44


Pipeline du TMS320C64x

Exemple : exécution partiellement parallèle

ENET'Com Cours DSP - 2ème année GII 45


Pipeline du TMS320C64x

Exemple : exécution partiellement parallèle

ENET'Com Cours DSP - 2ème année GII 46


Pipeline du TMS320C64x

Exemple : exécution totalement parallèle

ENET'Com Cours DSP - 2ème année GII 47


Jeu d’Instructions du TMS320C64x
1 Arithmétique
ADD(U) Addition entière 32/40 bits signée (non signée)
ADD2 2 additions entières 16 bits
ADD4 4 additions entières 8 bits
SUB(U) Soustraction entière 32/40 bits signée (non signée)
SUBC Soustraction conditionnelle pour étape de division
SUB2 2 soustractions entières 16 bits
SUB4 4 soustractions entières 8 bits

1 Arithmétique saturée
SAT Saturation de 0 bits en 32 bits
ABS Valeur absolue 32/40 bits avec saturation
SADD Addition signée 32/40 bits avec saturation
SSUB Soustraction signée 32/40 bits avec saturation

1 Comparaison
CMPGT(U) Comparaison supérieur 32/40 bits signé (non signé)
CMPEG Comparaison égal 32/40 bits
CMPLT(U) Comparaison inférieur 32/40 bits signé (non signé)

Latence
ENET'Com Cours DSP - 2ème année GII 48
Jeu d’Instructions du TMS320C64x

Multiplication entières
2 MPY 16 LSB signés x 16 LSB signés => 32 bits
4 MPYU4 4 Multiplication 8bits par 8 bits, non signé
MPYSU4 4 Multiplication 8bits signé par 8 bits non signé
MPYUS4 4 Multiplication 8bits non signé par 8 bits signé
2 Multiplication entières
saturées
SMPY Saturation ((16 LSB signé x 16 LSB signés) <<1) => 32 bits
Variantes H pour 16 MSB (SMPYLH)

Affectation
4 MVD Transfère d’un registre vers un autre registre
1 MVK Transfère une constante 16 bits signée vers un registre
1 MVKH Transfère une constante 16 bits signée vers MSB d’un
registre
1 Opération logique
AND ET logique 32 bits
OR OU logique 32 bits
XOR OU exclusif logique 32 bits

Latence
ENET'Com Cours DSP - 2ème année GII 49
Jeu d’Instructions du TMS320C64x
Accès mémoire avec
calcul d’adresse
5 LD(B/H/W)(U) Chargement (octet, demi mot, mot) signé (non signé)
1 ST(B/H/W)(U) Stockage (octet, demi mot, mot) signé (non signé)
1 Décalage
SHL Décalage gauche 32/40 bits
SHR(U) Décalage arithmétique (logique) droit 32/40 bits
SHR2 Décalage droit 16 bits signé
SSHL Décalage gauche 32/40 bits avec saturation
SHLMB Décalage gauche et arrangement en octet
SHRMB Décalage droit et arrangement en octet

1 Champs de bits
EXT(U) Extrait un champs de bits et extension de signe (non signé)
CLR Met à zéro un champs de bits
SET Met à 1 un champs de bits

6 Branch
B Branchement conditionnel (Offset 21 bits ou registre)

Latence
ENET'Com Cours DSP - 2ème année GII 50
Modes d’adressages
Il existe deux différents modes d’adressages :
- Mode linéaire
- Mode circulaire
L’adressage le plus utilisé est le mode linéaire indirect.

Adressage Linéaire Indirect : R est un registre

ENET'Com Cours DSP - 2ème année GII 51


Modes d’adressages
Adressage Circulaire
Utiliser pour créer un tampon circulaire très utilisé dans le TNS : algorithmes de
filtrage, corrélation ..etc.
Il existe deux tampons circulaire indépendants BK0 et BK1 et 8 registres
pointeurs : A4-A7 et B4-B7.
Initialiser le registre du mode d’adressage : AMR pour activer le mode
d’adressage circulaire désiré en spécifiant le mode du registre pointeur et la
taille du tampon utilisé.

ENET'Com Cours DSP - 2ème année GII 52


Modes d’adressages
Adressage Circulaire

Registre AMR :
31 26 25 21 20 16

réservé BK1 BK0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Mode B7 Mode B6 Mode B5 Mode B4 Mode A7 Mode A6 Mode A5 Mode A4

Mode Description Exemple :


00 Adressage linéaire par défaut
Si on désire avoir un tampon
01 Adressage circulaire utilisant BK0 circulaire de 128 octets dans
10 Adressage circulaire utilisant BK1 BK1 pointé par le registre B5,
11 Réservé AMR doit être initialisé à :

BK0 et BK1 : N taille du tampon qui sera 2N+1 0x00C00800


ENET'Com Cours DSP - 2ème année GII 53
Modes d’adressages
Adressage Circulaire

Exemple: Ce programme permet d’utiliser les paramètres suivants:


• Taille du buffer = 8 octets
• Le buffer est dans le bloc BK0
• Pointeur utilisé = A4

ENET'Com Cours DSP - 2ème année GII 54


Syntaxe des Instructions
Load / Store :

LDH .D2 *B2++, B7 ; Charger (B2) → B7, Incrémenter B2

LDH .D1 *A2++, A7 ; Charger (A2) → A7, Incrémenter A2

LDH : chargement de 16 bits (H: half word).


LDW : chargement de 32 bits (W: word).

STW .D1 A1, *+A4[20] ; Store A1 → (A4) offset par 20


Stocker 32 bits de A1 dans une mémoire dont l’adresse est
spécifiée par A4 décalé par 20 mots (32 bits) c.à.d. 80 octets.
Notez que le continu de A4 ne va pas changer après le
stockage puisque une seule + est utilisée.

ENET'Com Cours DSP - 2ème année GII 55


Syntaxe des Instructions
Branchement / Move :

Loop: MVK .S1 0x10, A4 ; Move 16 LSBs de 0x10 → A4

MVKH .S1 0x1, A4 ; Move 16 MSBs de 0x1 → A4


.
.
.
SUB .S1 A1, 1, A1; Décrémenter A1

[A1] B .S2 Loop ; Branchement à Loop si A1≠0

NOP 5; 5 instructions de No-operation

STW .D1 A3, *A7 ; Stocker A3 dans (A7)

ENET'Com Cours DSP - 2ème année GII 56


Contraintes
Contrainte mémoire :
La mémoire interne est arrangée sous forme de banc de
mémoires pour permettre le stockage et le chargement
simultanément.
Contrainte chemin croisé :
Le code suivant est valide :
ADD .L1x A1, B1, A0
|| MPY .M2x A2, B2, B3
Par contre, le code suivant n’est pas valide :
ADD .L1x A1, B1, A0
|| MPY .M1x A2, B2, B3

ENET'Com Cours DSP - 2ème année GII 57


Contraintes

Contrainte stockage/chargement :
Les registres adresses utilisés doivent être du même chemin que
l’unité .D :
Le code suivant est valide :
LDW .D1 *A1, A2
|| LDW .D2 *B1, B2
Par contre le code suivant n’est pas valide :
LDW .D1 *A1, A2
|| LDW .D2 *A3, B2

ENET'Com Cours DSP - 2ème année GII 58


Contraintes
En plus, le chargement et le stockage en // ne peuvent pas être du
même chemin de registres (les registres A et les registres B).
Exemple :
Le code suivant est valide :
LDW .D1 *A0, B1
|| STW .D2 A1, *B2
De même, le code suivant est valide :
LDW .D1 *A0, B1
|| LDW .D2 *B2, A1
Par contre, le code suivant n’est pas valide :
LDW .D1 *A0, A1
|| STW .D2 A2 ,*B2
ENET'Com Cours DSP - 2ème année GII 59
Pipeline: Etude de cas
40

Considérons cet exemple


Y =  an * x n
n = 1

MVK .S1 40, A2 ; A2 = 40, loop count


loop: LDH .D1 *A5++, A0 ; A0 = a(n)
LDH .D1 *A6++, A1 ; A1 = x(n)
MPY .M1 A0, A1, A3 ; A3 = a(n) * x(n)
ADD .L1 A3, A4, A4 ; Y = Y + A3
SUB .L1 A2, 1, A2 ; decrement loop count
[A2] B .S1 loop ; if A2<>0, branch
STH .D1 A4, *A7 ; *A7 = Y
Note: Supposant que A4 est initialement à 0 et les pointeurs sont initialisés.
ENET'Com Cours DSP - 2ème année GII 59
Pipeline: Etude de cas
Cycle = 4
Program Fetch Decode Execute Done
PG PS PW PR DP DC E1 E2 E3 E4 E5 E6
MVK
LDH
LDH
FP4 FP3 FP2 MPY
ADD
SUB
B
STH

Cycle = 5
PF Decode Execute Done
PF DP DC E1 E2 E3 E4 E5 E6 
MVK
LDH
LDH
MPY
ADD
SUB
B
STH 60

ENET'Com Cours DSP - 2ème année GII 60


Pipeline: Etude de cas
Cycle = 6
PF Decode Execute Done
PF DP DC E1 E2 E3 E4 E5 E6 
MVK
LDH
LDH
MPY
ADD
SUB
B
STH

Cycle = 7
PF Decode Execute Done
PF DP DC E1 E2 E3 E4 E5 E6 
MVK
LDH
LDH
MPY
ADD
SUB
B
STH

ENET'Com Cours DSP - 2ème année GII 61


Pipeline: Etude de cas
Cycle = 8
PF Decode Execute Done
PF DP DC E1 E2 E3 E4 E5 E6 
MVK
LDH + + + +
LDH
MPY
ADD
SUB
B
STH

Cycle = 9
PF Decode Execute Done
PF DP DC E1 E2 E3 E4 E5 E6 
MVK
LDH + + +
LDH + + + +
MPY
ADD
SUB
B
STH

ENET'Com Cours DSP - 2ème année GII 62


Pipeline: Etude de cas
Cycle = 10
PF Decode Execute Done
PF DP DC E1 E2 E3 E4 E5 E6 
MVK
LDH + +
LDH + + +
MPY +
ADD
SUB
B
STH

Cycle = 11
PF Decode Execute Done
PF DP DC E1 E2 E3 E4 E5 E6 
MVK
LDH +
LDH + +
MPY
ADD
SUB
B
STH

ENET'Com Cours DSP - 2ème année GII 63


Pipeline: Etude de cas

Cycle = 12
MVK .S 40, A2
PF Decode Execute Done
loop: LDH .D *A5++, A0
PF DP DC E1 E2 E3 E4 E5 E6  LDH .D *A6++, A1
MVK
LDH MPY .M A0, A1, A3
LDH + ADD .L A4, A3, A4
FP5-2 MPY SUB .L A2, 1, A2
ADD
SUB [A2] B .S loop
B
STH STH .D A4, *A7

Les instructions ADD & MPY s’achèvent au même


cycles alors que les 2 loads ne sont pas accomplies !!!

Notre code ne fonctionne pas

ENET'Com Cours DSP - 2ème année GII 64


Pipeline: Etude de cas
Comment résoudre ce problème ?
En premier lieu, on va se concentrer sur les instructions MPY/ADD.
On doit retarder add par un cycle pour que la multiplication aura
lieu avant que l’addition commence.
Utiliser NOP.
Cycle = 11
PF Decode Execute Done
PF DP DC E1 E2 E3 E4 E5 E6 
MVK
LDH +
LDH + +
FP5-2 MPY
NOP

ADD
SUB
B
STH

ENET'Com Cours DSP - 2ème année GII 65


Pipeline: Etude de cas

Cycle = 12

PF Decode Execute Done


PF DP DC E1 E2 E3 E4 E5 E6 
MVK
LDH
LDH +
MPY
NOP
ADD
SUB
B
STH

Combien de NOP on doit ajouter entre les loads et l’opération de MPY?


4 NOPs.

ENET'Com Cours DSP - 2ème année GII 66