Cours DSP-Architecture-STR Qu'est ce qu’un DSP I Définitions : I-1 Un DSP représente le cœur d'un système de traitement numérique du signal DSP : Digital System Processing (Traitement Numérique du Signal) Un STR : Système Temps Réel est un système dont la sortie s’obtient au même temps que l’admission et le traitement des entrées. 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. Un processeur de traitement de signal est un processeur dont l’architecture a été optimisée dans la perspective de réaliser des opérations et des traitements spécifiques au traitement de signal. Par exemple, l’une des opérations les plus courantes en traitement du signal est la somme de produits qu’on retrouve dans les problèmes de filtrage numérique : na nb i 0 j 1 y (n) ai x(n i ) b j y (n j ). Un processeur dédié aux applications de traitement du signal doit donc être capable de réaliser rapidement ces sommes de produits et donc de réaliser rapidement un grand nombre de calculs arithmétiques. 1 Traitement numérique du signal Pourquoi faire du traitement numérique du signal ? Les principaux avantages du calcul numérique par rapport au calcul analogique s'appliquent aussi au traitement du signal. On a par exemple : - Grande résistance aux bruits: . Variations des tensions d'alimentation . Variations de température . Interférences électromagnétiques (EMI) - Précision arbitraire - Stabilité dans le temps - Stockage des données sans dégradation - Duplication des valeurs sans altération - Programmation flexible - Développement rapide 2 TABLEAU 1. Domaines d’Applications Typiques des Processeurs de Traitement de Signal Domaines d’ordre général Filtrage numérique Convolution Corrélation Transformation de Hilbert FFT Filtrage adaptatif Fenêtrage Générateur de signal … Voix/Parole Courrier électronique vocal Codage de la parole Reconnaissance de la parole Identification de voix Synthèse de la parole Transcription texte/voix Décodeur MP3… Graphisme/Image Rotation 3D Vision des robots Transmission et compression d’images Reconnaissance de forme Stations de travail … Instrumentation Analyse spectrale Générateur de fonctions Traitement de données sismiques Filtrage numérique Analyse transitoire … Commande Commandes des lecteurs de disques Commandes de moteurs Commande de robots Commande des imprimantes laser … Télécommunications Annulation d’écho Transcodeurs Répétiteurs de lignes Multiplexage de lignes Modems Egaliseurs adaptatifs Codage décodage Encryptage de données … Consommation Courante Télévision numérique Son numérique Synthétiseurs Jouets et jeux … Télécommunications Fax Téléphones mobiles Traitement de la parole Interpolation Vidéo conférence Commutations de paquets en norme X25 … Domaine Militaire Sécurisation des communications Radar Sonar Image Navigation Guidage des missiles Modems … Industrie Automobile Freinage Analyse vibratoire Navigation Positionnement Commande vocale Radio numérique Téléphones mobiles … Industrie Robotique Commande numérique Accès sécurisé … Médical Aide auditive Equipements à ultrason Outils de diagnostic Prothèses Monitoring … 3 De quelles solutions dispose-t-on pour effectuer ce travail? Schéma général externe Nous allons définir ici le schéma général d'utilisation d'un DSP qui permet de développer la plupart des applications simples en traitement du signal. 4 Les circuits exploitant les processeurs de traitement du signal ont une architecture particulière décomposable en deux parties : Une chaîne d'acquisition; Une unité de traitement du signal (DSP); La chaîne d'acquisition Le signal en entrée du circuit peut être : un signal électrique; une grandeur physique par le biais d'un capteur; un signal numérique; Puis en fonction du signal d'entrée plusieurs éléments peuvent constituer la chaîne d'acquisition. Schéma général : Signal original Filtre Passe - Bas Convertisseur Analogique Numérique Signal traité Mémoire Filtre Passe - Bas DSP Convertisseur Numérique Analogique Entrées/Sorties 5 ACQUISITION TRAITEMENT RESTITUTION Les principaux traitements sont : - Générer des signaux - Filtrer - Détecter, identifier des signaux (1750, DTMF, parole, image…) - Moduler démoduler (modem, ADSL, Ethernet, AX25….) - Analyser un signal ( FFT) - Crypter, décrypter Dans le cas d'un signal électrique ou d'une grandeur physique Le signal arrive à l'échantillonneur-bloqueur qui permet de discrétiser le signal en prélevant des portions à des intervalles de temps réguliers avant de les envoyer au convertisseur analogique-numérique. Après un traitement en ``temps réel'' le DSP renvoie plusieurs signaux en direction soit d'un ordinateur (par le biais de la sortie numérique) soit vers un convertisseur numérique-analogique. 6 I-2 Avantages de la carte DSP 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. La modification d’un filtre numérique ne nécessite pas un changement matériel. – 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, 7 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 ». I 3 Structure interne 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. Le DSP doit être capable de traiter une somme de produits en un cycle machine, ce qui implique d’avoir 2 bus (un pour les coefficients et un pour les échantillons), un multiplieur, une ALU (pour l’addition) et un Accumulateur. Sign al origi nal x(n-i) A.L.U. Accumulateur 8 II Différences entre un microprocesseur et un DSP II 1 Opérateur MAC Un microprocesseur classique va nécessiter plusieurs cycles d’horloge pour effectuer un calcul du type A = (B x C) + D, par exemple, un 68000 ( Motorola ) à 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. 9 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. 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 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. II 2 Accès mémoire 10 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. L’exemple suivant met en évidence l’intérêt d’un tel mode d’accès à la mémoire. Prenons le cas classique d’un filtre RIF à N coefficients, dont l’équation est de la forme : y(n) = a0*x(n) + a1*x(n-1) + a2*x(n-2) + ... + aN-1*x(n-N-1) Nous constatons la présence implicite des éléments suivants : 11 Une table de N coefficients, a0 à aN-1 une table de N échantillons, allant de l’échantillon courant x(n) à l’échantillon le plus ancien x(n-N-1) Pour chaque échantillon résultat y(n) courant, la nécessitée d’effectuer N opérations MAC. Une structure itérative, l’échantillon d’entrée x(n) courant devenant l’échantillon précédant à chaque calcul du nouvel échantillon de sortie y(n). Voici l’implémentation (figures 3 et 4) de ce filtre dans un DSP TMS320C30 de la gamme Texas Instruments : Texas Intruments propose le programme assembleur suivant : 12 NB: La structure du filtre RIF est réalisé avec seulement 10 instructions (initialisations non comprises). C’est l’exemple typique de l’adaptation des capacités d’un DSP à un algorithme particulier du traitement numérique du signal. Architecture d’un DSP: Les microprocesseurs standards sont basés sur les concepts de von Neumann où les opérations sont exécutées séquentiellement. L'augmentation de la vitesse du processeur n'est obtenue qu'en accélérant le fonctionnement des unités individuelles du processeur, mais il y a une limite à cela (voir figure 1). Pour un fonctionnement en temps réel, les processeurs DSP doivent avoir une architecture optimisée pour l'exécution des opérations DSP. La figure 1b représente une architecture matérielle générique pour DSP. 13 Figure 1 A simplified architecture for standard microprocessors Figure 2 A simplified generic hardware architecture for DSP 14 Les traits caractéristiques de l'architecture de la figure 2 comprennent: • Structure de bus multiples, avec des espaces mémoire séparés pour les données et les programmes. • Les unités arithmétiques pour les opérations logiques et arithmétiques incluent un multiplicateur / accumulateur matériel. Pourquoi une telle architecture est-elle nécessaire? Dans DSP, la plupart des algorithmes, par exemple le filtrage numérique et la FFT impliquent des opérations arithmétiques répétitives telles que la multiplication, les ajouts, les accès à la mémoire et le flux de données important à travers le processeur. L'architecture des microprocesseurs standards n'est pas adaptée à ce type d'activité. Un objectif important de la conception matérielle DSP est d'optimiser à la fois l'architecture matérielle et le jeu d'instructions pour augmenter la vitesse et rendre l'exécution en temps réel possible tout en maintenant les erreurs de quantification à un faible niveau. Dans un DSP, ceci est réalisé en utilisant largement les concepts de parallélisme. En particulier, les techniques suivantes sont utilisées : • Architecture de Harvard • Pipeline • Multiplicateur / accumulateur matériel rapide et dédié • Instructions spécialisées dédiées au DSP • Réplication • Mémoire / cache sur puce. • Parallélisme étendu - SIMD, VLIW et traitement super scalaire statique. - Single instruction, multiple data (SIMD) processing. Very-long-instruction-word (VLIW) processing Super scale static 15 Nous examinerons certaines des techniques ci-dessus pour mieux comprendre les caractéristiques architecturales des processeurs DSP. L’architecture d’un microprocesseur, et donc d’un DSP, est un élément important qui conditionne directement les performances d’un processeur. Il existe deux types fondamentaux de structures, dites « Von Neuman » et « Harvard ». 3.1. Von Neuman La structure de VON NEUMAN, utilisée par les microprocesseurs (architecture des x86) depuis 40 ans, consiste à placer les données et le programme sur un bus commun. Inconvénient majeur de cette structure : on ne peut lire une donnée ou une instruction qu’en un seul cycle. Un microprocesseur basé sur une structure Von Neuman stocke les programmes et les données dans la même zone mémoire. Une instruction contient le code opératoire et l’adresse de l’opérande. Ce type de microprocesseur incorpore principalement deux unités logiques de base: 1. l’Unité Arithmétique et Logique (ou ALU en anglais), chargé de réaliser les opérations centrales (de type multiplications, additions, soustractions, rotation, etc.), 2. l’unité en charge des Entrées/Sorties, qui commande le flux de données entre le cœur du microprocesseur et les mémoires ou les ports. 3.2. Harvard 16 Lorsque la vitesse d’exécution d’un programme est importante, il est préférable d’utiliser la structure de HARVARD. Cette structure se distingue de l’architecture Von Neuman uniquement par le fait que les mémoires programmes et données sont séparées. L’accès à chacune des deux mémoires se fait via un chemin distinct. Cette organisation permet de transférer une instruction et des données simultanément, ce qui améliore les performances. Ainsi en un seul cycle, le processeur pourra lire l’instruction et la donnée. 3.3. Utilisation de ces structures dans les DSP L’architecture généralement utilisée par les microprocesseurs est la structure Von Neuman (exemples : la famille Motorola 68XXX, la famille Intel 80X86). L’architecture Harvard est plutôt utilisée dans des microprocesseurs spécialisés pour des applications temps réels, comme les DSP. Il existe cependant quelques rares DSP à structure Von Neuman. La raison de ceci est liée au coût supérieur de la structure de type Harvard. En effet, elle requiert deux fois plus de bus de données, d’adresses, et donc de broches sur la puce. Or un des éléments augmentant le coût de productions des puces est précisément le nombre de broches à implanter. 17 3.3 Architecture de Harvard modifiée : Pour réduire le coût de la structure Harvard, certains DSP utilisent l’architecture dite « Structure de Harvard modifiée ». À l’extérieur, le DSP ne propose qu’un bus de données et un bus d’adresse pour les accès en mémoire externe, comme la structure Von Neuman. Toutefois, à l’intérieur, la puce DSP dispose de deux bus distincts de données et de deux bus distincts d’adresses pour les accès en mémoire interne. Le transfert des données entre les bus externes et internes est effectué par multiplexage temporel. C’est au programmeur, si la taille de la mémoire programme ou de la mémoire données est trop importante, de placer en mémoire interne le bout de programme et de données qui demande une rapidité optimale d’exécution 18 Structure Pipeline Il s'agit d'une technique largement utilisée dans le DSP pour augmenter la vitesse car elle permet à deux ou plusieurs opérations de se chevaucher pendant l'exécution. Dans le pipelining, une tâche est décomposée en un certain nombre de sous-tâches distinctes qui sont ensuite surchargées pendant l'exécution. Un pipeline s'apparente à une ligne de production typique dans une usine, telle qu'une usine de montage de voitures ou de téléviseurs. Comme dans la ligne de production, la tâche est décomposée en petites sous-tâches indépendantes appelées étapes de canalisation qui sont connectées en série pour former un tuyau. L'exécution est séquentielle. Figure 6 An illustration of the concepts of pipelining. 19 La figure 6 donne un chronogramme d'un pipeline à 3 étages. En règle générale, chaque étape du pipeline nécessite un cycle machine. Ainsi, pendant un cycle donné, jusqu'à trois instructions différentes peuvent être actives en même temps, bien que chacune soit à un stade d'achèvement différent. The speedup (acceleration) = average instruction time (non pipeline) average instruction time (pipeline) Example 1 In a non pipeline processor, the instruction fetch, decode and execute take 35 ns, 25 ns, and 40 ns, respectively. Determine the increase in throughput if the instruction steps were pipelined. Assume a 5 ns pipeline overhead at each stage, and ignore other delays. Solution In an ideal non pipeline processor, the average instruction time is simply the sum of the times for instruction fetch, decode and execute: 35 + 25 + 40 ns = 100 ns. However, if we assume a fixed machine cycle then each instruction time would take three machine cycles to complete: 40 ns x 3 = 120 ns (the execute time – maximum time – determines the cycle time). This corresponds to a throughput of 8.3 x10 6 instructions per second. In the pipeline processor, the clock speed is determined by the speed of the slowest stage plus overheads, i.e. 40 + 5 = 45 ns. The through put (when the pipeline is full) is 22.2 x10 6 instructions per second. 20 Speed up = average instruction time (non pipeline) average instruction time (pipeline) = 120/45 = 2.67 Pipelining has a major impact on the system memory because it leads to an increased number of memory accesses (typically by the number of stages). The use of Harvard architecture where data and instructions lie in separate memory spaces promotes pipelining. Drill (percer) Assuming the times in the above example are as follows: fetch 20 nS decode 25 nS execute overhead (aérien) 15 ns - 1 nS Determine the increase in throughput (en débit )if the instructions were pipelined. Example 2 Most DSP algorithms are characterised by multiply-and-accumulate operations typified by the following equation: y(n) a0 x(n) a1 x(n 1) a2 x(n 2) ... a N 1 x(n ( N 1)) Figure 5 shows a non pipeline configuration for an arithmetic element for executing the above equation. Assume a transport delay of 200 ns, 100ns and 100 ns, respectively for the memory, multiplier and the accumulator. (1) What is the system throughput? (2) Reconfigure the system with pipelining to give a speed increase of 2:1. Illustrate the operation of the new configuration with a timing diagram. 21 Figure 7 Non-pipelined MAC configuration. Solution (1) The coefficients, a k , and the data arrays are stored in memory as shown in Figure 7. In the nonpipelined mode, the coefficients and data are accessed sequentially and applied to the multiplier. The products are summed in the accumulator. Successive MAC will be performed once every 400 ns (200 + 100 + 100), that is a throughput of 2.5 x10 6 operations per second. (2) The arithmetic operations involved can be broken up into three distinct steps: memory read, multiply, and accumulate. To improve speed these steps can be overlapped. A speed improvement of 2:1 can be achieved by inserting pipeline registers between the memory and multiplier and between the multiplier and accumulator as shown in Figure 8. The timing diagram for the pipeline configuration is shown in Figure 9. As is evident in the timing diagram, the MAC is performed once every 200 ns. The limiting factor is the basic transport delay through the slowest element, in this case the memory. Pipeline overheads have been ignored. 22 Figure 8 Pipelined MAC configuration. The pipeline registers serve as temporary store for coefficient and data sample pair. The product register also serves as a temporary store for the product. Parallélisme étendu - SIMD, VLIW et traitement des superscaler statiques La tendance dans la conception de l'architecture de processeur DSP est d'augmenter à la fois le nombre d'instructions exécutées dans chaque cycle et le nombre d'opérations effectuées par instruction pour améliorer les performances. Dans les nouvelles architectures de processeur DSP, les techniques de traitement parallèle sont largement utilisées pour obtenir des performances de calcul accrues. Les trois techniques utilisées, souvent en combinaison, sont: Single instruction, multiple data (SIMD) processing. Very-long-instruction-word (VLIW) processing Superscalar processing 23 Figure 10 An illustration of the use of SIMD processing and multiple data size capability to extend the number of multiplier/accumulators (MACs) from one to four in a TigerSHARC DSP processor. Remarque: le traitement SIMD est utilisé pour augmenter le nombre d'opérations effectuées par instruction. En règle générale, dans les processeurs DSP avec des architectures SIMD, le processeur a plusieurs chemins de données et plusieurs unités d'exécution. Ainsi, une seule instruction peut être envoyée aux multiples unités d'exécution pour traiter simultanément des blocs de données et de cette manière le nombre d'opérations effectuées dans un cycle est augmenté. 24 Figure 11 Principles of very long instruction word (VLIW) architecture and data flow in the advanced, fixed point DSP processor, TMS320C62x. Remarque: Le traitement de texte d'instructions très longues est une approche importante pour augmenter considérablement le nombre d'instructions traitées par cycle. Un mot d'instruction très long est essentiellement une concaténation de plusieurs instructions courtes et nécessite plusieurs unités d'exécution, fonctionnant en parallèle, pour exécuter les instructions en un seul cycle. Dans le TMS320C62x, la CPU contient deux chemins de données et huit unités d'exécution indépendantes, organisées en deux ensembles - (L1, S1, M1 et D1) et (L2, S2, M2 et D2). Dans ce cas, chaque instruction courte a une largeur de 32 bits et huit d'entre elles sont liées entre elles pour former un très long paquet de mots d'instructions qui peut être exécuté en parallèle. Le traitement VLIW démarre lorsque l'unité centrale récupère un paquet d'instructions (huit instructions 32 bits) dans la mémoire de programme sur puce. Les huit instructions dans le paquet d'extraction sont formées en un paquet d'exécution, si elles peuvent être exécutées en parallèle, puis envoyées aux huit unités d'exécution selon le cas. Le paquet d'instructions de 256 bits suivant est extrait de la mémoire de programme tandis que le paquet d'exécution est décodé et exécuté. Si les huit instructions d'un paquet d'extraction ne sont pas exécutables en parallèle, alors plusieurs paquets d'exécution seront formés et envoyés aux unités 25 d'exécution, un à la fois. Un paquet d'extraction a toujours une largeur de 256 bits (huit instructions), mais un paquet d'exécution peut varier entre 1 et 8 instructions. Figure 12 Principles of superscalar architecture and data flow in the TigerSHARC DSP processor Remarque: le traitement superscalaire est utilisé pour augmenter le taux d'instructions d'un processeur DSP en exploitant le parallélisme au niveau des instructions. Traditionnellement, le terme superscalaire fait référence aux architectures informatiques qui permettent d'exécuter plusieurs instructions en un seul cycle. Ces architectures sont largement utilisées dans les processeurs à usage général, tels que les processeurs PowerPC et Pentium. Dans les processeurs DSP superscalaires, plusieurs unités d'exécution sont fournies et plusieurs instructions peuvent être émises aux unités pour une exécution simultanée. Les techniques de pipelining sont également largement utilisées pour augmenter encore les 26 performances. Le TigerSHARC est décrit comme un processeur DSP superscalaire statique car le parallélisme dans les instructions est déterminé avant l'exécution. En fait, le processeur TigerSHARC combine les concepts SIMD, VLIW et superscalaire. Ce processeur DSP avancé dispose de plusieurs chemins de données et de deux ensembles d'unités d'exécution indépendantes, chacune avec un multiplicateur, ALU, un décaleur 64 bits et un fichier de registre. TigeSHARC est un processeur à virgule flottante, mais il prend en charge l'arithmétique fixe avec plusieurs types de données (nombres 8, 16 et 32 bits). La largeur de l'instruction n'est pas fixée dans le processeur TigerSHARC. Dans chaque cycle, jusqu'à quatre instructions de 32 bits sont extraites de la mémoire de programme interne et envoyées aux deux ensembles d'unités d'exécution en parallèle. Une instruction peut être délivrée aux deux unités en parallèle (instructions SIMD) ou à chaque unité d'exécution indépendamment. Chaque unité d'exécution (ALU, multiplicateur ou décalage) prend ses entrées et renvoie ses résultats dans le fichier registre. Les fichiers de registre sont connectés aux trois chemins de données et peuvent ainsi lire simultanément deux entrées et écrire une sortie en mémoire dans un cycle. Cette architecture de chargement / stockage est adaptée aux opérations DSP de base qui prennent souvent deux entrées et calculent une sortie. Comme le processeur peut travailler sur plusieurs tailles de données, les unités d'exécution permettent des niveaux supplémentaires de calcul parallèle. Ainsi, dans chaque cycle, le TigerSHARC peut exécuter jusqu'à huit opérations d'addition / soustraction et huit opérations de multiplication-accumulation avec des entrées de 16 bits, au lieu de deux opérations de multiplication-accumulation avec des entrées de 32 bits. II Types et formats de données manipulés par les DSP Un des points essentiels des DSP est la représentation des nombres (les données) qu'ils peuvent manipuler. Il est possible de distinguer deux familles : – Les DSP à virgule fixe : les données sont représentées comme étant des nombres fractionnaires à virgule fixe, par exemple -1.0 à +1.0, ou comme des entiers classiques. La représentation de ces nombres fractionnaires s'appuie la méthode du « complément à deux » 27 L'avantage de cette représentation est de permettre facilement l'addition binaire de nombres aussi bien positifs que négatifs. - 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= mantisse x 2 exposant. 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 (c'est le même mécanise qu'en base 10). II 1 Les DSP à virgules flottantes Les DSP à virgule flottante sont plus souples et plus faciles à programmer que les DSP à virgule fixe. Un DSP comme le TMS320C30 manipule des nombres formés avec une mantisse de 24 bits et un exposant de 8 bits. Les valeurs intermédiaires des calculs sont mémorisées dans des registres avec un format de 32 bits de mantisse et un exposant de 8 bits (taille du registre : 32 + 8 bits supplémentaires). La dynamique disponible est très grande, toutefois la résolution reste limitée à 24 bits au mieux. Outre les nombres fractionnaires, ce DSP sait également manipuler les entiers avec une précision de 32 bits. 28 La très grande dynamique proposée par les DSP à virgule flottante permet virtuellement de ne pas se soucier des limites des résultats calculés lors de la conception d'un programme. Cet avantage a cependant un prix, à savoir qu'un système basé sur un DSP à virgule flottante a un coût de fabrication supérieur par rapport à un système basé sur DSP à virgule fixe. La puce d'un DSP à virgule flottante nécessite à la fois une surface de silicium plus importante (cœur plus complexe), et un nombre de broches supérieur, car la mémoire externe est elle aussi au format 32 bits. Le système revient donc plus cher (exemple : 2 x 32 broches juste pour les bus de données externes avec une architecture Harvard de base). Un DSP à virgule flottante est plutôt adapté à des applications dans lesquelles : - les coefficients varient dans le temps (exemple : les filtres adaptatifs), - le signal et les coefficients ont besoin d'une grande dynamique, - la structure mémoire est importante (exemple : traitement d'image), - la précision est recherchée sur toute une gamme dynamique importante (exemple : traitements audiophoniques de qualité professionnelle). De part leurs facilités de programmation, ils peuvent également se justifier dans des projets ou le temps et la facilité de développement sont des facteurs importants. On les trouve également dans des produits de faible volume de production, pour lesquels le prix du DSP n'est pas significatif. II 2 Les DSP à virgules fixes 29 Un DSP à virgule fixe est un peu plus compliqué à programmer qu'un DSP à virgule flottante. Dans un DSP à virgule fixe typique comme le TMS320C25, les nombres sont codés sur 16 bits. Toutefois, sur ce DSP, les calculs sont effectués avec des accumulateurs de 32 bits. Lorsque les résultats doivent être stockés en mémoire, les 16 bits les moins significatifs sont perdus. Ceci permet de limiter les erreurs d'arrondis cumulatives. Il est toujours possible de stocker séparément en mémoire les 16 bits faibles puis les 16 bits fort s'il n'y a plus de registres libres lors d'une étape de calcul. Cette particularité n'est pas toujours disponible sur tous les DSP. Dans ce cas, les calculs qui nécessitent absolument une double précision sont réalisés en chaînant deux à deux des instructions spéciales manipulant des données 16 bits en simple précision, au détriment du temps d'exécution. La précision des calculs est un point critique des DSP à virgule fixe, car le concepteur de programmes doit rester vigilant à chaque étape d'un calcul. Il doit rechercher la plus grande dynamique possible (c.à.d. exploiter au mieux la gamme des nombres disponibles), pour conserver une bonne précision des calculs, tout en évitant autant que possible les débordements du ou des accumulateurs. Les bits supplémentaires des accumulateurs (les bits de garde) prévus à cet effet permettent de réduire cette contrainte. Les programmeurs contournent les limites des DSP à virgule fixe en déterminant à l'avance, et avec soins, la précision et la dynamique nécessaire (par méthode analytique ou avec des outils de simulation) pour réaliser leurs projets. Il est également possible d'effectuer des opérations en virgule flottante dans un DSP à virgule fixe par le biais de routines logicielles adéquates. Cette approche est néanmoins pénalisante en temps d'exécution, même sur un DSP à virgule fixe très rapide. 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. Les DSP à virgule fixe sont les plus utilisés, car ils sont moins chers que les DSP à virgule flottantes. On les trouve dans tous les produits de grande diffusion ou le coût est un facteur important. Il peut cependant exister des exceptions, certains DSP à virgule fixe se présentant comme des micro contrôleurs perfectionnés plus chers qu'un DSP à virgule flottante de base. 30 31 Résumé : Architecture Virgule Flottante : 32 • Structure similaire aux unités en virgule fixe • DSP avec – unité flottante seule (TI, AD, Motorola) • l’unité flottante accepte la virgule fixe – unité flottante + unité fixe (AT&T) 33 – Programmation plus simple – Scaling automatique (exposant) – Plus de protection contre les erreurs de calcul (exception) – Fonctions spéciales (Division, racine carrée, conversion de format...) Multiplieur • Entrée 32 bits – mantisse 24 bits – exposant 8 bits • Sortie (32)40 à 44 bits – mantisse 32 à 36 bits – exposant 8 bits – Format interne pour multiplication/accumulation – Arrondi systématique – perte de précision négligeable ALU • Soustraction, addition, négation, valeur absolue, minimum, maximum • Opérations spéciales (racine carrée, division...) Shifter • Présent mais invisible pour le programmeur (Sauf en mode virgule fixe) • Normalisation automatique (Scaling) des résultats flottants Registres accumulateurs 34 • Plusieurs, au format des résultats flottants (40 à 44 bits) Registres Opérandes • Entrée quasiment exclusives du multiplieur flottant • Les calculs flottants doivent donc être précédés d’une lecture explicite (Move) des opérandes en mémoire • Chargement des registres en parallèle avec les opérations arithmétiques Exceptions • Overflow – positionnement d’un indicateur et/ou interruption – saturation du résultat • Underflow – positionnement d’un indicateur et/ou interruption – Mise à zéro du résultat • Autres exceptions Division par 0, format invalide... Architecture mémoire : • Transmettre les instructions et les données vers les unités de calculs • Maintenir une activité maximale dans les unités de calcul • Eviter de créer un goulot d’étranglement (Bottleneck) • Programme organisé en fonction de l’architecture mémoire • Facteur critique pour la performance globale d’un DSP Réalisation d’un filtre FIR 35 • Structure non récursive ou filtre transverse /* H(z) = b(0) + b(1) z -1 + b(2) z-2 */ int x[3], xin, yout; float b[3]; x[0]=xin; /* xin contient l'echantillon d'entree */ /* calcul du filtre RIF */ yout = x[0]*b[0]; for(i=2; i>0; i - -) { yout=yout+x[i]*b[i]; x[i]=x[i-1]; } /* sortie de yout */ • Multiplication-addition en un cycle instruction • Filtre FIR ordre Q calculé en Q+1 instructions • MAIS pour chaque cycle instruction: – Lire l’instruction (Opcode Fetch) – Lire une valeur x(i) – Lire un coefficient b(i) – Ecrire x(i) en x(i+1) Soit 4 accès mémoire par instruction • Dans la pratique, diverses techniques réduisent le nombre d’accès à 2 ou 3. • Ceci reste vrai pour d’autres types d’algorithmes 36 Réduction du nombre d’accès • Adressage circulaire – But: éviter l’opération d’écriture x(i)=x(i-1) dans le filtre RIF – Principe: utiliser des pointeurs mobiles pour repérer le début et la fin des données • Adressage circulaire – Gérer les pointeurs par programme ? Diminution très importante des performances – Les DSP disposent de générateur d’adressage circulaire • exemple: Tampon circulaire adresse de départ 100 longueur 4 Registre d’adressage circulaire R0 initialisation R0=100 valeur successive de R0+1: 101,102,103,100,101,... • Adressage circulaire de type 1 – Registre auxiliaire indiquant la longueur du tampon • l’adresse de départ doit en général être un multiple de la puissance de deux supérieure à la longueur • exemple: tampon circulaire de 48 octets, adresse de départ multiple de 64 – TMS320C3x/4x, ADSP, Motorola,... 37 – Adressage circulaire de type 2 – Registres auxiliaires indiquant le début et la fin du tampon circulaire – TMS320C5x, AT&T DSP16xx – Nombre de tampons circulaires simultanés – AT&T DSP16xx : 1 – TMS320C5x : 2 – Motorola 5600x : 4 – ADSP : 8 Architecture pipeline • Principe du pipeline – Découper une opération en N sous-opérations (S/op) et – Exécuter les N sousopérations en parallèle (sur des données différentes) 38 Principe de Pipe Line • Avantage d’un processeur pipeliné – Gain en vitesse d’éxécution • Inconvénients – Electronique plus complexe – Mémoire plus rapide – Programmation plus complexe (Compilateur et/ou programmeur) pour: • Eviter les erreurs d’éxécution (Pipeline Hazards) • Eviter les conflits d’accés aux ressources (mémoire, registre, unité de calcul...) pour optimiser un programme et atteindre les performances maximales (ex: une Add/Mult par cycle horloge) Le parallélisme d’éxécution dans un pipeline peut créer 39 des erreurs dûes à l’inversion de l’ordre d’éxécution (Pipeline Hazards) READ puis WRITE WRITE puis READ WRITE puis WRITE des «trous» dans l’activité du pipeline dûs aux conflits d’accès aux ressources Solutions Interlocking hardware Optimisation par table de réservation III 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 informatique temps réel et/ou multitâche traditionnelle. 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. III 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. 40 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 suivant résume les principaux tests de performance. 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. III 2 Mesure du temps d'exécution (« Benchmark ») La vitesse de calcul pure d'un DSP n'est pas une indication universelle, les méthodes et les résultats diffèrent d'un DSP à l'autre. De plus elle ne rend pas compte d'un certain nombre de perfectionnement dont peuvent bénéficier tel ou tel DSP. 41 Certains DSP proposent en effet des modes d'adressages plus performants que d'autres. Ces modes sont spécialement adaptés à des algorithmes standard du traitement du signal. Les instructions itératives sont également importantes en terme de performance (rapidité des boucles logicielles) et ne devraient pas être ignorées. Enfin, le temps d'accès à la mémoire est un autre paramètre incontournable. Certains DSP intègrent des blocs de mémoire vive rapide. Cette mémoire est placée dans l'espace d'adressage du DSP au même titre que de la mémoire vive externe, ce qui permet d'y ranger données et programmes sans avoir à effectuer des transferts permanents de ou vers l'extérieur. Les éventuels cycles d'attentes pouvant être nécessaires pour adresser une mémoire externe lente sont ainsi évités. Pour toutes ces raisons, la mesure des performances par benchmark complète avantageusement la mesure de vitesse pure. Elle consiste à mesurer le temps que met le DSP pour exécuter des programmes « standards » de traitements du signal. Encore faut il définir ce qu'est un programme standard de traitement du signal. Le point faible des benchmarks réside dans cette définition des algorithmes standard. Quel domaine d'applications faut il choisir ? Quels sont les algorithmes les plus représentatifs ? Il existe plusieurs systèmes de benchmarks se proposant de servir de référence. Ainsi, le BDT benchmark est couramment utilisé, un autre benchmark fréquemment utilisé est le « Standard Performance Evaluation Corporation », ou SPEC95, qui couvre plusieurs domaines tels que les vocodeurs (équipement ou composant électronique capable de décomposer un son en ses composantes fondamentales), l'asservissement en position des têtes de lectures des disques dur, les modems, voire les applications multimédia sur PC. La mesure des capacités d'un DSP par benchmark reste néanmoins intéressante, car elle tend à mesurer la performance globale du système de traitement numérique (y compris les capacités du programmeur !). IV Méthodes et outils de développements Un processus de développement typique pourrait être celui de la figure suivante. 42 La souplesse du développement d'applications à base de DSP est un avantage important en termes de temps, de facilité, de fiabilité, et donc de coût. Comme le suggère la figure précédente, créer une application DSP, c'est mener de front deux études distinctes : 43 - La partie matérielle : elle inclut la mise en œuvre du DSP lui-même, mais aussi la création d'une chaîne d'acquisition et/ou de restitution du signal (parfois des signaux) à traiter. Les moyens de transformation du signal analogique vers le domaine numérique s'appuient eux aussi sur des circuits spécialisés (AIC, CODEC, CNA, CAN...) Le choix des performances à obtenir et des moyens pour réaliser la chaîne d'acquisition et/ou restitution du signal est primordial pour exploiter au mieux les capacités d'un DSP. L'objectif est de rendre l'application finale homogène, fiable, et ayant un coût de fabrication industriel approprié. - La partie logicielle : elle s'appuie sur des outils classiques adaptés aux spécificités des DSP. L'approche est différente de celle utilisée pour la partie matérielle, car il est toujours possible de recommencer autant de fois que nécessaire pour arriver au résultat. Seul un temps de développement trop limité ou une mauvaise évaluation de départ des capacités du DSP cible peut créer des problèmes de développements. La conception logicielle n'en est pas plus facile pour autant, car le programme réalise l'essentiel du traitement du signal. Le rôle du DSP ne se limite pas forcément au seul traitement numérique du signal, un DSP peut assurer les mêmes fonctions qu'un microprocesseur « normal », et donc être le cœur du système informatique de l'application. Ainsi, le cas échéant, un DSP peut exécuter à la fois un système d'exploitation temps réel et assurer les fonctions de traitement numérique du signal. IV 1 Définition des ressources nécessaires Cette phase doit permettre d'évaluer les besoins nécessaires à la mise en œuvre du système de traitement numérique du signal voulu. Elle consiste notamment à définir les spécifications de la chaîne d'acquisition et de restitution du signal, telles que : -La résolution (nombre de bits nécessaires pour quantifier le signal). -La vitesse d'échantillonnage (critère de Shannon). -La technologie et donc type de convertisseurs utilisé. -Les filtres anti-repliements s'ils ne sont pas intégrés dans les convertisseurs. Elle permet plus généralement de cerner tous les besoins du système numérique, tels que par exemple la consommation de courant et l'autonomie pour une application portable. 44 IV 2 Sélection du DSP le plus adapté La sélection d'un DSP se base avant tout sur la puissance de traitement nécessaire, et sur le résultat de benchmarks réalisant des fonctions représentatives des traitements à réaliser. Toutefois, la performance du DSP n'est pas le seul critère à prendre en compte, il faut également tenir compte des impératifs suivants : -le type de DSP à utiliser (virgule fixe ou flottante) en fonction du domaine d'application. -les ressources mémoires utilisés, car s'il faut par exemple exécuter très rapidement une FFT 1024 points, un DSP intégrant plus de 2048 mots de mémoire vive statique peut être nécessaire. -les besoins d'un ou de plusieurs timers internes, de ports série synchrones ou asynchrone, etc. -la nécessité éventuelle d'exécuter un système temps réel, qui s'avérera plus facile à implanter sur certains DSP. -le coût du DSP, son rapport « performance/prix » en fonction du volume de production envisagé. D'autres éléments non négligeables interviennent dans le choix d'un DSP, il s'agit des moyens disponibles pour mener le développement en un temps donné, comme : -la qualité de la documentation (de préférence claire et abondante). -la disponibilité de notes d'applications, d'un support technique. -la qualité du système de développement utilisé. -la possibilité d'utiliser un langage de haut niveau (Langage C). -la présence de librairies (du constructeur ou de tierces parties). -la possibilité de réaliser facilement des prototypes et à faible coût. Le choix n'est pas toujours simple et certains critères peuvent être contradictoires, certaines règles de choix se dégagent quand même. Ainsi pour des applications destinées à faire un fort volume de production, le critère déterminant est sans conteste le prix du DSP. Pour des applications à faible volume de production, le prix du DSP importe peu, le critère est alors la facilité de développement. Dans tous les cas, la présence d'un bon support technique est un facteur à ne pas négliger, car un DSP est quand même plus complexe à mettre en œuvre qu'un microprocesseur classique. 45 I. Les DSP aujourd’hui 1) Les DSP parmi différents types de processeurs Nous avons classé les processeurs en trois groupes : les généralistes, les processeurs embarqués et les microcontrôleurs. Ils sont classés par coût et par leur nombre. Bien évidement plus le prix est important moins ils sont utilisés. Les « généralistes » dit de haute performance seront utilisés en majorité pour les ordinateurs. Les processeurs embarqués comme le DSP sont plus courant mais reste cher. Enfin les microcontrôleurs sont énormément utilisés, et sont présent dans de nombreux domaines. 46 • Généralistes – haute performance – Pentiums, PowerPC, SPARC – Logiciels d’usage général – OS important - UNIX, XP – Stations de travail, PC • Processeurs embarqués et processeurs « coeurs » – ARM, 486SX, Hitachi SH7000, NEC V800 – Un seul programme – OS léger, souvent temps réel – Support DSP – Téléphones portables, électronique grand public (Lecteurs de CD, etc.) • Microcontrôleurs – Mot de petite taille, le plus souvent 8 bits – De très loin le plus gros nombre de processeurs – Automobiles, thermostats, électroménagers... En terme de volume financier, les marchés les plus importants des DSP aujourd’hui sont : – Les téléphones portables – Les pageurs et autres systèmes sans fils – Les modems – Les contrôleurs de disque dur La plupart des DSP exige de bonnes performances, toutes demandent un bas coût et beaucoup demande une faible consommation d’énergie. La tendance est vers de meilleurs supports pour ce type d’applications essentielles 47 2) Algorithmes et applications typiques • Applications – Instrumentation et mesures – Communications : Modems Réseaux Téléphones cellulaires – Traitement audio et vidéo : Lecteurs CD, DVD, MP3. . . Prothèses auditives Synthétiseurs Reconnaissance de la parole – Disques durs – Graphique, traitement d’images, rendu 3-D – Navigation, radar, GPS – Contrôle - robotique, vision, guidage • Algorithmes – Filtrage fréquentiel - FIR et IIR – Transformations temps en fréquence - FFT – Corrélation 48 2.1) Application type : MODEM ADSL 2.2) Algorithme type : les Filtres FIR 3) Quelques DSP actuels 49 Voici une liste de DSP des trois principaux fabricants mondiaux. 4) Comparaison DSP 1ère et 5ème génération : (Texas instrument) DSP 1ère génération (1982): TI TMS32010 • Virgule fixe 16 bits • “Architecture Harvard” Mémoires instructions et données séparées • Accumulateur • Jeu d’instructions spécialisé • Temps de la multiplication accumulation (MAC) : 390ns DSP 5ème génération type TMS320C5x, TMS320C6x… • 32 bits d’adresses 50 • Jusqu’à 32 bits de données • 512ko RAM • Temps de la multiplication accumulation (MAC) : 228 ns 51