Citation :
Une Introduction aux DSP
1. Introduction
Depuis maintenant plusieurs années, le traitement numérique du signal est une technique en plein essor. Cette technique s’appuie sur plusieurs disciplines, citons simplement les principales :
- l’électronique analogique et numérique (préparations, conditionnements des signaux, conversions numériques <--> analogiques),
- les microprocesseurs (classiques ou dédiés au traitement du signal),
- l’informatique (algorithmes, systèmes de développements, exploitations),
- les mathématiques du signal (traitements du signal). Parmi ces disciplines, nous allons nous intéresser plus précisément aux processeurs de traitements des signaux, plus communément désignés par l’acronyme Anglais DSP (Digital Signal Processor).
Les domaines d’applications du traitement numérique du signal sont nombreux et variés (traitements du son, de l’image, synthèse et reconnaissance vocale, analyse, compression de données, télécommunications, automatisme, etc.) Chacun de ces domaines nécessite un système de traitement numérique, dont le cœur est un (parfois plusieurs) DSP ayant une puissance de traitement adaptée, pour un coût économique approprié.
Les microprocesseurs sont en perpétuelle évolution, chaque nouvelle génération est plus performante que l’ancienne, pour un coût moindre. Les DSP, qui sont un type particulier de microprocesseur, n’échappent pas à cette évolution. Dans ces conditions, pour comprendre, choisir, et utiliser judicieusement un DSP, nous sommes amenés à nous poser les questions suivantes :
Comment est architecturé un DSP, en quoi est-il différent d’un microprocesseur classique ?
Quelle performance attendre d’un DSP, comment définir cette performance ?
D’un point de vue pratique, comment développer des programmes de traitements du signal ?
Dans cette étude, nous allons amener différents éléments de réponses à ces questions. Pour y parvenir, nous traiterons d’un point de vue général les différentes architectures et les performances des DSP, nous aborderons les outils de développements, et nous approfondirons le sujet par l’étude d’un cas.
2. Qu’est ce qu’un DSP ?
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érie synchrones rapides, des contrôleurs DMA, des ports d’E/S divers.
2.1. DSP : le cœur d’un système de traitement numérique du signal.
Tous les systèmes à bases de DSP bénéficient des avantages suivants :
Souplesse de la programmation : un DSP est avant tout un processeur exécutant un programme de traitement du signal. Ceci signifie que le système bénéficie donc d’une grande souplesse de développement. De plus, les fonctions de traitements numériques peuvent évoluer en fonction des mises à jour des programmes, et cela pendant toute la durée de vie du produit incluant le système. Ainsi, modifier par exemple tel ou tel paramètre d’un filtre numérique ne nécessite pas un changement matériel.
Implémentation d’algorithmes adaptatifs : une autre qualité issue de la souplesse des programmes. Il est possible d’adapter une fonction de traitement numérique en temps réel suivant certains critères d’évolutions du signal (exemple : les filtres adaptatifs).
Des possibilités propres au système de traitement numérique du signal . Certaines fonctions de traitement du signal sont difficiles à implanter en analogique, voire irréalisables (exemple : un filtre à réponse en phase linéaire).
Stabilité : en analogique, les composants sont toujours plus ou moins soumis à des variations de leurs caractéristiques en fonction de la température, de la tension d’alimentation, du vieillissement, etc. Une étude sérieuse doit tenir compte de ces phénomènes, ce qui complique et augmente le temps de développement. Ces inconvénients n’existent pas en numérique.
Répétabilité, reproductibilité : les valeurs des composants analogiques sont définies avec une marge de précision plus ou moins grande. Dans ces conditions, aucun montage analogique n’est strictement reproductible à l’identique, il existe toujours des différences qu’il convient de maintenir dans des limites acceptables. Un programme réalisant un traitement numérique est par contre parfaitement reproductible, « à l’infini ».
2.2. Principales distinctions entre un microprocesseur et un DSP
En quoi un DSP est-il différent d’un microprocesseur ? Pour répondre à cette question, il nous faut prendre en considération les éléments suivants.
2.2.1 L’opération MAC
Après avoir été numérisé, le signal se présente sous la forme d’une suite de valeurs numériques discrètes . Cette suite de valeurs (ou échantillons) est apte à être stockée et traitée par un système informatique. Par nature, le traitement numérique du signal revient à effectuer essentiellement des opérations arithmétiques de base du type A = (B x C) + D.
Un microprocesseur classique va nécessiter plusieurs cycles d’horloge pour effectuer un tel calcul, par exemple, un 68000 à besoin de :
· 10 cycles d’horloge pour effectuer une addition,
· 70 cycles d’horloge pour effectuer une multiplication. Soit 80 cycles pour seulement calculer A. Si ce temps est admissible dans des applications informatiques courantes, il n’est pas acceptable pour faire du traitement rapide du signal. Les DSP sont donc conçus pour optimiser ce temps de calcul, à cet effet, ils disposent de fonctions optimisées permettant de calculer A beaucoup plus rapidement.
Dans la pratique, la plupart des DSP ont un jeu d’instructions spécialisé permettant de lire en mémoire une donnée, d’effectuer une multiplication puis une addition, et enfin d’écrire en mémoire le résultat, le tout en un seul cycle d’horloge. Ce type d’opération est nommé MAC, de l’anglais Multiply and ACcumulate.
Effectuer une opération MAC en seul cycle n’est malgré tout pas satisfaisant si le cycle d’horloge est trop « long ». Le principal objectif d’évolution des DSP atoujours été d’améliorer le temps de calcul d’un MAC. La figure 2 (Source [1], page 1-8) présente le progrès réalisé dans ce domaine depuis plus de trois décennies.
Actuellement, un DSP de gamme moyenne effectue une opération MAC sur des données de 16 bits en moins de 25 nS, soit 40 000 000 opérations par seconde. De telles performances sont indispensables pour effectuer des traitements rapides.
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 (1) 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.
NDR (1) : débordement au sens informatique, c.a.d. que l’opération génère un nombre supérieur au plus grand nombre pouvant être manipulé par 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 seul cycle, comme décri 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.
Si l’on ajoute la possibilité de générer ces adresses selon un modulo paramétrable, ce mode d’adressage devient circulaire, et permet donc de créer des buffers circulaires en mémoire. L’adressage circulaire indirecte (parfois également indexé) par registre avec post (ou pré) incrément prends toute son importance quand il est utilisé pour accéder aux opérandes d’un MAC.
3. Performances des DSP
Plus que pour un microprocesseur classique, les performances d’un DSP conditionnent son domaine d’application.
La plupart des DSP sont particulièrement destinés à des applications « temps réel » et spécialisées, c’est à dire des applications oùle temps de traitement est bien sûr primordial, mais où la diversité des événements à traiter n’est pas notablement importante. De ce point de vue, l’approche DSP s’apparente plus à une étude « électronique » visant à réaliser une ou des fonctions de traitements de signal, que d’une approche Comme mentionné au paragraphe 2.1, il existe cependant des applications ou le DSP assure à la fois des fonctions de traitements numériques du signal et les fonctions générales d’un microprocesseur au coeur d’un système informatique classique.
Dans tous les cas, les performances du DSP sont critiques. Le concepteur d’un système à base de DSP doit évaluer d’une part la « puissance » nécessaire pour réaliser les traitements numériques voulus, et d’autre part les performances des DSP disponibles pour réaliser son application.
3.1. Mesure de vitesse de calcul pure
La méthode classique pour évaluer les performances d’un DSP est de se baser sur sa vitesse d’exécution. Encore faut-il trouver une bonne définition de ce qu’est la vitesse d’exécution, ce qui n’est pas forcément simple. Cette méthode de base consiste donc à compter le nombre d’instructions effectuées par seconde. Un obstacle apparaît alors, car une instruction ne signifie pas forcément la même chose d’une famille de DSP à l’autre. Le tableau de la figure 7 (source [3] page 210) résume les principales définitions en usage.
MFLOPS - Million Floating-Point Operations Per Second.
Mesure le nombre d’opérations à virgule flottante (multiplications, additions, soustractions, etc.) que le DSP à virgule flottante peut réaliser en une seconde. MOPS - Million Operations Per Second.
Mesure le nombre total d’opérations que le DSP peut effectuer en une seconde. Par opérations, il faut comprendre non seulement le traitement des données, mais également les accès DMA, les transferts de données, les opérations d’E/S, etc. Cette définition mesure donc les performances globales d’un d’un DSP plutôt que ses seules capacités de calcul. MIPS = Million Instructions Per Second.
Mesure le nombre de codes machines (instructions) que le DSP peut effectuer en une seconde. Bien que cette mesure s’applique à tous les types de DSP, le MFLOPS est préféré dans le cas d’un DSP à virgule flottante. MBPS = Mega-Bytes Per Second.
Mesure la largeur de bande d’un bus particulier ou d’un dispositif d’E/S, c’est à dire son taux de transfert. 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.
|