Académique Documents
Professionnel Documents
Culture Documents
Un DSP est un type particulier de microprocesseur. Il se caractérise par le fait qu’il intègre un
ensemble de fonctions spéciales. Ces fonctions sont destinées à le rendre particulièrement
performant dans le domaine du traitement numérique du signal.
Comme un microprocesseur classique, un DSP est mis en œuvre en lui associant de la
mémoire (RAM, ROM) et des périphériques. Un DSP typique a plutôt vocation à servir dans des
systèmes de traitements autonomes. Il se présente donc généralement sous la forme d’un
microcontrôleur intégrant, selon les marques et les gammes des constructeurs, de la mémoire,
des Timers, des ports séries synchrones rapides, des contrôleurs DMA, des ports d’E/S divers.
Effectuer une opération MAC en un seul cycle n’est malgré tout pas satisfaisant si le cycle
d’horloge est trop « long ». Le principal objectif d’évolution des DSP a toujours été d’améliorer le
temps de calcul d’un MAC. La figure 2 présente le progrès réalisé dans ce domaine depuis plus
de trois décennies.
Figure 2 – Evolution du temps d’exécution d’une opération MAC (Selon Texas Instruments)
Outre le temps d’exécution d’une opération MAC, un autre problème se pose. L’opération MAC
étant une multiplication suivie d’une addition, un débordement de l’accumulateur est toujours
possible. Pour contourner ce problème, certains DSP possèdent un accumulateur adapté au
MAC. Ces accumulateurs ont un format spécial incorporant des bits supplémentaires (bits de
garde) par rapport à la taille des données à manipuler. Les problèmes de débordements sont
alors contournés, car un programme de traitement correctement conçu ne devrait pas générer
des suites d’opérations MAC telles qu’un résultat excède la capacité élargie de l’accumulateur.
2.2.2. L’accès à la mémoire :
Outre l’opération MAC, une autre caractéristique des DSP est leurs capacités à réaliser
plusieurs accès mémoire en un seul cycle. Ceci permet à un DSP de chercher en mémoire une
instruction et ses données réalisant un MAC, et simultanément, d’y ranger le résultant du MAC
précédent. Le gain de temps est évident. Toutefois, sur certains DSP basiques, ce type
d’opération simultané est généralement limité à des instructions spéciales. Ces instructions
utilisent un mode d’adressage restreint, c’est à dire ne portant que sur de la mémoire vive
intégrée au DSP.
Les modes d’adressages des données sont un point particulier des DSP. Un DSP peut posséder
plusieurs unités logiques de génération d’adresse, travaillant en parallèle avec la logique du
cœur du DSP. Une unité logique de génération d’adresse est paramétrée une seule fois via les
registres appropriés. Elle génère alors toute seule, en parallèle avec l’exécution d’une opération
arithmétique, les adresses nécessaires à l’accès des données.
Ceci permet non seulement de réaliser les accès mémoires simultanés en un seul cycle, comme
décrit plus haut, mais également d’incrémenter automatiquement les adresses générées. Ce
mode d’adressage particulier, généralement appelé adressage indirect par registre avec post
(ou pré) incrément, est très utilisé pour effectuer des calculs répétitifs sur une série de données
rangées séquentiellement en mémoire.
2.2.3. Contrôle du processeur – le pipeline (principe de fonctionnement) :
Nous prendrons l’exemple du TMS320C64XX. Si on considère les opérations nécessaires à
l’exécution d’une instruction, elles peuvent se décrire ainsi :
Afin de gagner du temps lors de l’exécution de séries d’instruction, il est donc nécessaire
d’optimiser ces différentes étapes en les parallélisant ou en les « pipelinant ». Le principe
retenu est celui utilisé dans les usines de production et qui consiste à découper le travail en
taches élémentaires (figure 3) :
A la lecture de ce tableau, on peut noter qu’à partir de la 5ème instruction, à chaque nouveau
cycle machine, une nouvelle instruction est réalisée au lieu d’une instruction tous les 5 cycles
machines. Un programme est donc exécuté environ 5 fois plus vite !
Dans cette structure, les DSP ont deux unités arithmétiques et logiques séparées (Une pour
l’arithmétique sur des données et une autre pour le calcul des adresses). Ceci sert deux
usages :
1) Les calculs de données peuvent procéder sans être gênées par les calculs d’adresse,
maintenant un rythme de sortie élevé, et
2) Chaque unité peut être spécialisée et optimisée pour sa propre tâche. Par exemple, la
circuiterie de l’UAL des données peut avoir une circuiterie additionnelle pour supporter
l’arithmétique de saturation, alors que l’UAL des adresses peut assurer l’indexage, l’auto-
incrémentation, l’inversion de bit (opération requise pour la transformée rapide de Fourrier)
3.4 – Remarques :
● Deux mémoires pour l'architecture de HARVARD, d'où elle est plus coûteuse en mémoires
que VON NEUMANN ;
Figure 8 - Définitions des unités les plus courantes de mesures des performances des DSP
Une autre méthode consiste à définir une fois pour toute une opération de référence comme
étant un MAC, puisqu’il s’agit d’une fonction commune à tous les DSP. Il ne reste plus qu’à
compter le nombre de MAC par seconde.
Cependant cette définition n’apporte pas beaucoup d’informations sur les performances des
DSP modernes. En effet, un MAC est exécuté en un seul cycle. Sachant que sur les DSP
récents, la plupart des instructions sont également exécutées en un cycle, cela revient donc à
mesurer les MIPS du DSP. Il faut également tenir compte du fait que certains DSP en font plus
dans un seul MAC (nombre, format et taille des opérandes traités) que d’autres.
Les familles les plus récentes des DSP de Texas instrument sont :
- TMS320C54x, DSP format fixe ;
- TMS320C20x, DSP format fixe ;
- TMS320C24x, DSP format fixe ;
- TMS320C62x, DSP format fixe à architecture VLIW (Very long instruction word);
- TMS320C67x, DSP format flottant à architecture VLIW ;
Ces nouvelles familles sont regroupées en 3 classes appelées plates-formes. Ces trois classes
sont appelées :
- TMS320C6000, formée des familles C62x et C67x ;
- TMS320C5000, formée de la famille C54x et des C54xx ;
- TMS320C2000, formée des familles C20x et C24x ;
Types de données
Toutefois, pour éviter certains problèmes de précision et de faux dépassements de capacité lors
de longues séquences de calcul, on peut aussi avoir des types de données intermédiaires plus
grands (ex : accu. 40 bits).
Codages classiques :
x = (-1)s × (1.f ) × 2e
La mantisse est composée du 1 implicite et de la fraction f. Suivant les DSP, il y a des codages
différents de l'exposant (avec ou sans biais) et des valeurs particulières (0, ±∞, NaN).
Probléme : le développement à haut niveau des programmes se fait essentiellement avec des
flottants (MATLAB), comment alors passer automatiquement à un code en virgule fixe ?
● Décalages / rotations
● Insertions / extractions de portions de mots
● Permutations
● Tests à 0 ou 1 de certains bits
● Mises à 0 ou 1 de certains bits
● Inversions de certains bits
● Inversions de l'ordre des bits
● Comptages des bits à 1 ou 0 d'un mot
● Comptages des bits à 1 ou 0 des poids forts d'un mot
● Opérations logiques avec masques
On trouve aussi, dans certains DSP, un support matériel (et dans le jeu d'instructions) pour
exécuter une division avec un algorithme non-restaurant en base 2. Un bit du quotient est
produit à chaque cycle (test, addition-soustraction, conversion {-1,1} → {0,1}).
Codage dans l'instruction de la méthode de calcul de la position d'une donnée (dans un registre
ou en mémoire). Exemples de modes d'adressage classiques (DSP et microprocesseurs
généralistes) :
Le support matériel de « bons » modes d'adressage est important pour garantir de bonnes
performances (moins d'instructions) mais il coûte en complexité (décodage plus complexe,
surface de circuit plus importante).
Dans une boucle, on passe du temps à mettre à jour les indices de boucle et les pointeurs
(parcours de tableaux) :
But : ne conserver que les n dernières valeurs des entrées, ou d'un calcul précédent, comme
dans une FIFO sans gestion explicite de la mémoire.
_________________________________________________
2
Restrictions possible sur l'adresse de départ (bord de zone).
__________________________________________________________________
3
Source : Hennessy & Patterson, Computer Architecture : A Quantitative Approach.
Exécution conditionnelle explicite
L'exécution d'une instruction, ou d'un petit bloc d'instructions, peut être rendue conditionnelle en
ajoutant une instruction spéciale juste avant. Dans le cas où la condition est vraie, les
instructions sont exécutées, sinon elles sont remplacées en interne par des NOP.
Intérêt :
Les conditions utilisables pour l'exécution conditionnelle sont limitées. En général, on trouve des
conditions basées sur les états de drapeaux internes, de certains signaux d'entrées/sorties et
sur des tests assez simples sur les accumulateurs.
● 4 Program Fetch
○ Generate fetch address
○ Send address to memory
○ Wait for data ready
○ Read opcode
● 2 Decode
○ Route instructions to functional units (dispatch)
○ Instruction decoded at functional unit
● 1 - 6 Execute
○ Multiply (MPY/ SMPY) Delay → 1
○ Load (LDB/ H/ W) Delay → 4
○ Branch (B) Delay → 5