DSP - Caroline Petitjean
Transcription
DSP - Caroline Petitjean
2006-2007 Les processeurs de traitement du signal Caroline Petitjean [email protected] DSP : Digital Signal Processor 000 • Produits utilisant des DSP: Lecteur codes barres CCD ScanPLus 1800 SR Interscan Amplificateur home cinéma Denon AVR3806 Téléphone portable Ericsson R600 Autoradio MP3 KD-SHX851 JVC Console de mixage Allen&Heath 2 1 Applications des DSP 000 • Communications • Image / Vidéo – Modem, téléphonie – Télévision & radio numérique – Cryptage – Compression/Codage – Traitement • Militaire • Audio – – – – – Imagerie (radar, sonar) – Cryptographie – Guidage de missiles – Navigation Mixage et édition Effets Suppression de bruit Annulation d’écho 3 Applications des DSP 000 • Médical – Equipements de monitoring (EEG, ECG) – Imagerie (IRM…) • Instrumentation – Analyseurs de spectre – Générations de fonctions • Automatisation – Commande de machines – Contrôle de moteurs – Robots • Automobile – – – – – Contrôle du moteur Assistance au freinage Aide à la navigation Commandes vocales Tableau de bord 4 2 Principaux constructeurs de DSP 000 autres 13,1% 6,8% 7,7% 49,7% 9,8% Achats de DSP en millions de dollars 12,9% ex-Lucent ex-Motorola Source : EETimes.com, 2004 5 Plan de l’exposé 000 • Le Traitement Numérique du Signal (TNS) et les DSP • Architecture des DSP : CPU, mémoire… • Performances des DSP : augmentation, mesure de performances, gamme de DSP… • Développement d’applications sur un DSP : programmation… 6 3 Plan de l’exposé 000 • Le Traitement Numérique du Signal (TNS) et les DSP • Architecture des DSP : CPU, mémoire… • Performances des DSP : augmentation, mesure de performances, gamme de DSP… • Développement d’applications sur un DSP : programmation… 7 Le TNS : pourquoi ? 000 Stabilité • Insensibilité à l’environnement • Précision connue et contrôlée • Reproductibilité Souplesse • Programmation flexible • Développement rapide • Facilité pour certains traitements 8 4 Le TNS : comment ? 000 • Chaîne classique de traitement numérique du signal : Signal analogique d’entrée Filtre anti repliement Mémoire CAN ? CNA Ports d’E/S numérique Filtre de reconstruction Signal analogique de sortie 9 Solutions pour le TNS 000 • Classification des processeurs ASIC ASSP FPGA Source : d’après [1] ASIC : Application Specific Integrated Circuit ASSP : Application Specific Standard Product FPGA : Field Programmable Gate Array 10 5 Classification des processeurs 000 • Le processeur généraliste (GPP) • Coût relativement élevé • Forte consommation électrique • Bonnes performances en calcul numérique – Certains surpassent les DSP en puissance brute • GPP moins bons que les DSP pour : – la consommation électrique – la gestion des entrées-sorties – le prix 11 Classification des processeurs 000 • Le microcontrôleur • Faible coût • Faible consommation électrique • Mémoire limitée • Peu adapté aux signaux numériques • Adapté aux tâches de contrôle • Programmation bas niveau 12 6 Classification des processeurs 000 • ASIC/ASSP (Application-Specific…) • Circuit intégré dédié à une application – dans une entreprise : ASIC – pour un marché (ex: téléphonie) : ASSP • Ne sont pas programmables • Mise en œuvre complexe et longue • Coût élevé • FPGA : sorte de ASIC programmable 13 Classification des processeurs 000 • DSP • Coût relativement faible • Faible consommation électrique • Jeu d'instruction spécialisé • Calculs numériques • Entrée-sortie de données à grand débit • Mémoire limitée 14 7 Le TNS : besoins 000 • Algorithmes de TNS : – filtrage – transformées – codage/décodage – reconnaissance de la parole – synthèse de signaux – élimination d’écho – estimation spectrale… 15 Le TNS : besoins 000 • Contrainte de temps réel • Ex : taux d’échantillonnage 48kHz Te = 20.833 µs Arrivée de l’échantillon x(n) Arrivée de l’échantillon x(n+1) t t t+Te Temps de traitement T doit être <Te pour le temps réel 16 8 Le TNS : besoins 000 • Cahier des charges : 1. Calculs rapides 2. Contraintes temps réel (entrées/sorties à débit fixe) 3. Contraintes systèmes embarqués (taille limitée, faible consommation d’énergie) 4. Production de masse Les DSP ont une architecture matérielle et logicielle dédiée permettant de répondre à ces besoins 17 Exemples d’applications 000 • Lecteur MP3 dictaphone Source : ti.com 18 9 Exemples d’applications 000 • Scanner de codes barres Source : ti.com 19 Exemples d’applications 000 • Appareil photo numérique Source : ti.com 20 10 Exemples d’applications 000 • Imagerie par Résonance Magnétique Source : ti.com 21 Exemples d’applications 000 • Console de mixage Source : ti.com 22 11 Exemples d’applications 000 • Récepteur GPS Source : ti.com 23 Exemples d’applications 000 • TV à écran LCD Source : ti.com 24 12 Exemples d’applications 000 • Kit mains libres Source : ti.com 25 Spécificités des DSP 000 Opérations les + courantes dans les algos de TNS imposent Contraintes matérielles sur l’architecture DSP • Plan de cette partie : – 2 algorithmes classiques de TNS : • Filtre à Réponse Impulsionnelle Finie (RIF) • Transformée de Fourier rapide (FFT) Spécificités des DSP 26 13 Spécificités des DSP 000 • Algo n°1 : Filtre RIF N −1 Une équation aux différences finies y (n) = a (i ) x(n − i ) ∑ i =0 spécifie la sortie y(n) 27 Spécificités des DSP 000 N −1 • Pour chaque cellule a(i)x(n-i) : y (n) = ∑ a (i ) x(n − i) i =0 – Recherche de l’instruction – Recherche du coefficients a(i) – Recherche de la donnée x(n-i) – Multiplication a(i)x(n-i) – Accumulation a(i-1)x(n-i-1) + a(i)x(n-i) – Décalage en mémoire x(n-i) Æ x(n-i-1) 4 accès en mémoire 2 accès à l’unité de calcul 28 14 Spécificités des DSP 000 • Objectifs : – Réduire les accès mémoire – Augmenter les accès mémoire simultanés – Réduire le temps passé à faire des calculs Instruction MAC (multiplication-accumulation) en 1 seul cycle d’instruction 29 Spécificités des DSP 000 • Objectifs : – Réduire les accès mémoire – Augmenter les accès mémoire simultanés Architecture Von Neuman (microcontrôleur) Architecture Harvard (DSP) Source images : [1] 30 15 Spécificités des DSP 000 • Objectifs : – Réduire les accès mémoire Mode d’adressage circulaire Buffer circulaire : Segment mémoire contenant des données L+N L (échantillons, cœfficients…) Accès par pointeurs générés et incrémentés automatiquement – Pas de test sur les pointeurs – Pas de reset nécessaire … L+1 … L+2 … … 31 Spécificités des DSP 000 • Buffer linéaire nouvel échantillon x(n) Xtab(t-1) y(n) Xtab(t) déc alag e1 x(n) a0 x(n-1) a1 2 x(n-2) a2 … … … … … … … … … 0 x(n-1) 1 x(n-2) … 0 N-2 x(n-N+1) N-2 x(n-N+2) aN-2 N-1 N-1 x(n-N+1) aN-1 x(n-N) N −1 y (n) = ∑ a (i ) x(n − i ) i =0 x(n-N) source image : [9] Mise à jour du buffer Calcul de y(n) 32 16 Spécificités des DSP 000 • Buffer circulaire nouvel échantillon Xtab(t) x(n) 0 x(n-k+1) x(n-k+1) y(n) Xtab(t-1) 0 1 1 … … x(n-N+1) … aN-1 x(n-N+1) x(n) a0 x(n-1) x(n-1) a1 x(n-2) x(n-2) a2 x(n-N) idx ak+1 idx N-2 … N-2 … … N-1 x(n-k) N-1 x(n-k) ak Mise à jour du buffer N −1 y (n) = ∑ a (i ) x(n − i ) i =0 Calcul de y(n) source image : [9] 33 Spécificités des DSP 000 • Algo n°2 : FFT (Fast Fourier Transform) in sur N points N −1 − 2πj y (n) = ∑ x(i )e N pour 0 ≤ n ≤ N − 1 i =0 Calcul des N échantillons y(n) Nombre de multiplications Sans optimisation Algorithme de Cooley-Tukey Séquentiel Simultané N² N/2 log2(N) 34 17 Spécificités des DSP 000 • Algo n°2 : FFT par Cooley-Tukey N −1 y (n) = ∑ x (i )e − 2πj i =0 in N x0 y0 N −1 x4 y1 i =0 x2 y2 x6 y3 x1 y4 x5 y5 x3 y6 x7 y7 = ∑ x(i )WNin Ex : N = 8 Besoin d’accéder aux échantillons dans cet ordre Source : [5] 35 Spécificités des DSP 000 • Mode d’adressage spécifique : “Bit reverse” Ordre naturel Ordre pour la FFT des échantillons Cooley-Tuckey 0 000 000 0 1 001 100 4 2 010 010 2 3 011 110 6 4 100 001 1 5 101 101 5 6 110 011 3 7 111 111 7 36 18 Spécificités des DSP 000 • Résumé : Organisation mémoire Jeu d’instructions Architecture Harvard MAC en 1 cycle Modes d’adressage Entrées/sorties spécifiques Bit reverse, circulaire Flot continu de données 37 Plan de l’exposé 000 • Le Traitement Numérique du Signal (TNS) et les DSP • Architecture des DSP : CPU, mémoire… • Performances des DSP : augmentation, mesure de performances, gamme de DSP… • Développement d’applications sur un DSP : programmation… 38 19 Architecture des DSP 000 • Plan de cette partie : – Représentation des nombres – CPU Æ Unité de calcul Æ Unité de commande (pipeline) Æ Unité de génération d’adresses – Unité de mémoire – Périphériques 39 Représentation des nombres 000 • Les valeurs traitées (coefficients, échantillons…) sont représentées sous 2 formes : Virgule fixe Virgule flottante • Format courant : 16/24 bits • Idéal avec CAN/CNA 12/14 bits • Applications : Contrôle industriel, communications, instrumentation, parole, médical, militaire… 40 20 Représentation des nombres 000 • Les valeurs traitées (coefficients, échantillons…) sont représentées sous 2 formes : Virgule fixe Virgule flottante • Format courant : 32 bits • Idéal pour le traitement sur une grande dynamique • Applications : Audio professionnel, vidéo, médical… 41 Représentation des nombres 000 • Virgule fixe : Complément à 2 (C2) Nombre Codage 2 N −1 −1 − 2 N −1 3 2 1 0 -1 -2 -3 -4 0 0 0 0 1 1 1 1 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 Nombre positif : codé comme un binaire naturel Nombre négatif : Inversion des bits puis ajout de 1 Signe Le codage C2 convient bien aux opérations maths. 42 21 Représentation des nombres 000 • Virgule fixe : Complément à 2 • Représentation “circulaire” – En ajoutant 1 à la plus grande valeur positive on obtient la valeur négative extrême 0 -1 1 000 111 – Ex sur 3 bits : 001 -2 110 010 2 101 011 3 100 -3 -4 43 Représentation des nombres 000 • Virgule fixe : Codage des entiers Exemple sur 8 bits 6 x = −b7 27 + ∑ bi 2i − 27 ≤ x ≤ 27 − 1 i =0 Poids -27 26 25 24 23 22 21 20 27 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 -4 1 1 1 1 1 1 0 0 Bit de signe 44 22 Représentation des nombres 000 • Virgule fixe : Codage des réels Æ Format Qk Ex : 2,3125 Partie fractionnaire Partie entière sur k bits sur N-k bits en C2 • Cas particulier : k = 0 Æ entiers 45 Représentation des nombres 000 • Virgule fixe : Codage des réels Æ Format Qk – Pour coder le réel x, trouver les bi tels que : x = −bn 2 n−k + n − k −1 ∑b i+k i=− k – Ex : format Q5 sur 8 bits 2i (n=8, k=5) Partie entière : 3 bits / fractionnaire : 5 bits Poids -22 21 20 2-1 2-2 2-3 2-4 2-5 2,3125 0 1 0 0 1 0 1 0 46 23 Représentation des nombres 000 • Virgule fixe : Codage des réels Æ Format Qk – Correspond à la représentation C2 de l'entier y tel que : k y = round(2 x) – Ex : y = round(25.2,3125) = 74 = (0100 1010)b Poids -22 21 20 2-1 2-2 2-3 2-4 2-5 2,3125 0 1 0 0 1 0 1 0 47 Représentation des nombres 000 • Exemple : Format Q5 sur 8 bits – Dynamique : -2N-k-1 … 2N-k-1-2-k Poids min -22 21 -4 1 -3.96875 1 20 ,2 -1 2-2 2-3 2-4 2-5 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 3.9375 0 max 3.96875 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 48 24 Représentation des nombres 000 • Exemple : Format Q5 sur 8 bits – Précision : q = 2-k – Erreur maximale : q/2 = 2-(k+1) – Ex : 010.01010 = 2,3125 010.01011 = 2,3438 +q = +2-k – Si on doit coder 2,33, l’erreur sera de 2-6 max. 49 Représentation des nombres 000 • Un format très classique : Q15 sur 16 bits : réels entre -1 et 1 14 x = −b15 20 + ∑ bi 2i −15 , q = 215 , − 1 ≤ x ≤ 0.99997 15 14 ±20 2-1 i =0 0 2-15 signe Exemple 15 14 13 12 11 10 1 1 0 0 1 1 9 0 8 0 7 0 6 5 0 0 4 0 3 0 22 0 1 0 0 0 -1+0,5+2-4+2-5 = -0,40625 50 25 Représentation des nombres 000 • Ecrire le mot binaire 8 bits signé au format Q7 : • +0.5 • +1.0 • -1.0 • +1/3 • -1/3 51 Représentation des nombres 000 • Si l’on veut D chiffres fractionnaires significatifs en décimal, quelle doit être le format Qk ? 52 26 Représentation des nombres 000 Si l’on veut D chiffres fractionnaires significatifs en décimal, quel doit être le format Qk ? • Il faut avoir q ≤ 10 soit : 2− k ≤ 10 − D Puis : • −D k ≥ D log 2 (10) ≈ 3.3D Ex : le format Q15 a une précision de 4 chiffres décimaux après la virgule 53 Représentation des nombres 000 • Virgule flottante : mots de 32 bits sous forme mantisse-exposant x = (−1) .(1, f ).2 s e −127 7 30 23 22 s e7 e0 f22 23 22 1 1 signe exposant 30 0 0 0 0 0 0 f = ∑ f i 2i − 23 i =0 31 31 22 e = ∑ ei 2i i =0 0 … … f0 partie fractionnaire de la mantisse 1 1 0 1 0 … … 0 0 0 +1,75.27-127 = 1,3165.10-36 54 27 Représentation des nombres 000 (95% des DSP) Virgule flottante Complexité hard Simple Complexe Coût Faible Elevé Consommation Faible Elevée Dynamique max. 190 dB 1500 dB Complexité progr. Elevée Faible Virgule fixe 55 Architecture des DSP 000 CPU 56 28 Structure interne du CPU 000 Unités de génération d’adresses AddD Générateur d’adresses MD Générateur d’adresses MP Séquenceur DataD Cache AddP DataP Bus de programme Bus de données CPU Unité de commande Registre de données Unités de traitement mathématique Multiplieur ALU Registre décalage 57 Unité de calcul 000 • Éléments principaux : – Unité Arithmétique et Logique (ALU) • Opérations classiques (+, -, AND, OR…) – Multiplieur-Additionneur – Accumulateurs – Registres à décalage (shifters) – Manipulation de bits 58 29 Unité de calcul 000 data bus (N bits) • Multiplication accumulation : Multiplieur N bits 2N bits ALU Accumulateur Résultat sur 2N bits Résultat sur 2N bits Troncature N bits 59 Unité de calcul 000 • Lors de nombreux MAC successifs : – Taille de l’accumulateur (2N bits) insuffisante 2 solutions : – Accumulateur sur 2N + p bits Exemple : ADSP2181 2 registres 16 bits, résultat sur 32 bits Æ dans l’accu 40 bits – Pre-Scaling : décalage avant l’accumulation 60 30 Unité de calcul 000 • TMS320c5x (TI) 61 Unité de calcul 000 • DSP56300 (Freescale) 62 31 Unité de calcul 000 Exo : Soit un filtre RIF à calculer. N −1 y (n) = ∑ a (i ) x( n − i ) i =0 • coefficients a sur B = 16 bits • échantillons d’entrée x • accumulateur sur B’ = 40 bits Æ Quel est le nombre max Nmax de produits que l’on peut accumuler sans risque de saturation ? 63 Unité de calcul 000 • Gestion des débordements – Complément à 2 : représentation circulaire Æ Si on ajoute 1 au plus grand positif, on obtient le plus grand négatif ! overflow – Les DSP utilisent une arithmétique saturée : saturation Source images : [2] 64 32 Unité de commande 000 • Chef d’orchestre du CPU • Chargement des instructions – Compteur de programme (PC) – Registre d’instruction – Cache d’instructions • Séquençage – Décodage des instructions – Pilotage les autres unités 65 Pipeline 000 • Principe : découper une opération en tâches élémentaires à effectuer en parallèle • Ex : pipeline à 4 étages Fetch Lecture de l’instruction en mémoire programme Decode Décodage de l’instruction Read/Write Lecture ou écriture d’un opérande en mémoire de donnée Execute Exécution éventuelle d’une opération arithmétique/logique 66 33 Pipeline 000 Cycle Sans Fetch Pipeline 1 2 3 4 C1 Decode 5 6 7 C2 C1 Read/Write C2 Avec Fetch pipeline 4 … C3 C2 C3 Fin C2 Fin C1 3 11 C3 C1 2 10 C3 C1 1 9 C2 Execute Cycle 8 5 6 7 8 Fin C3 9 10 11 … C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 Decode C1 C2 C3 C4 C5 C6 C7 C8 C9 C1 C2 C3 C4 C5 C6 C7 C8 C9 … C1 C2 C3 C4 C5 C6 C7 C8 … Read/Write Execute C10 … Fin C1 Fin C3 Fin C2 67 Pipeline 000 • Différents types de pipelines Séquentiel Pas de pipeline (ex: Motorola 56000) Pipeline simple (plupart des DSP) t t Double pipeline (ex: Pentium) Source : [9] Superpipeliné Nombre d'étages plus élevé (ex: TMS320C6000) t t 68 34 Pipeline 000 • Avantage d’un DSP pipeliné – Gain en vitesse d’exécution • Inconvénients – Electronique et programmation plus complexe • Un retard peut se produire – s’il existe un conflit de ressources – en cas de rupture de séquence 69 Pipeline 000 • Pipeline présent dans quasiment tous les DSP – Le nombre d’étages varie de 3 à 12 – Exemples : SHARC 3 DSP563xx 7 DSP568xx 3 TMS320 C54 6 TMS320 C55 10-11 TMS320 C62 7-12 70 35 Unité de génération d’adresse 000 • Unités de traitement spéciales – – – – DAG (Data Address Generation) AGU (Adress Generation Unit) Pilotées par le séquenceur Calculs sur des entiers (adresses mémoires) • Méthodes pré-programmées – – – – Incrémentation Décrémentation Adressage circulaire Incrémentation bit-reverse (pour la FFT) 71 Unité de mémoire 000 • Architecture Harvard Mémoire Programme CPU Mémoire Données – Mémoires données et programme séparées – Meilleure utilisation du CPU • Chargement du programme et des données en parallèle Source image : [9] 72 36 Unité de mémoire 000 • Architecture Harvard modifiée Mémoire Programme + Données CPU Mémoire Données – Possibilité de charger 2 types de données en 1 cycle – Mém. prog+données Æ coefficients – Mémoire données Æ signal d’entrée Source image : [9] 73 Unité de mémoire 000 • Architecture Harvard modifiée Mémoire Programme CPU Mémoire Données 1 Mémoire Données 2 – Bancs de mémoire Source image : [9] 74 37 Unité de mémoire 000 • Mémoire interne sur les DSP C54xx • Plusieurs types de RAM : – Single access (SARAM) : un accès par cycle – Dual access (DARAM) : deux accès par cycle – Two-way shared : deux accès par cycle même depuis l'extérieur 75 Unité de mémoire 000 • Canaux DMA : Direct Memory Access • Réduction des accès mémoire • Adressages spécifiques (circulaire) • Mémoire cache programme cache d’instructions Mémoire Programme + Données CPU Mémoire Données Source image : [9] 76 38 Unité de mémoire 000 • Mémoire cache programme – Contient des instructions exécutées fréquemment (boucles...) – Structure plus simple que dans les processeurs généraux – Exemple :DSP563xx 1KB TMS320C67 64 KB – Configurable par l’utilisateur – Pas de cache de données en général 77 Périphériques 000 • Port série – Communication avec codecs • Port parallèle – Communication avec une mémoire externe • Timer • Contrôleur d’interruption • Horloge interne 78 39 Architecture générale DSP56303 (Source : Freescale) 000 79 Plan de l’exposé 000 • Le Traitement Numérique du Signal (TNS) et les DSP • Architecture des DSP : CPU, mémoire… • Performances des DSP : augmentation, mesure de performances, gamme de DSP… • Développement d’applications sur un DSP : programmation… 80 40 Performances des DSP 000 • Plan de cette partie : – DSP hautes performances – Mesures de performances – Gamme de DSP 81 DSP hautes performances 000 Robot familial Lecteur MP3 Processeur unique 20 000 lignes de code Source : d’après [7] (Wakamaru, Mitsubishi) Multiples processeurs 100 000 lignes de code Système VoIP pour traders (IPC) Multiples processeurs + protocoles +500 000 lignes de code 82 41 DSP hautes performances 000 • Architecture conventionnelle – Spécialisée pour le TNS – Faible consommation, faible coût – Difficulté de programmation • Nouvelles architectures – Plus grande consommation – Coût plus élevé – Rendues nécessaires par de nouveaux besoins • Performance (téléphonie 3G) • Rapidité de développement 83 DSP hautes performances 000 • On vient de voir l’architecture de base des DSP Comment augmenter les performances ? Plusieurs solutions : Diminuer la durée d’un cycle d’horloge Augmenter le travail réalisé au cours d’un cycle d’horloge 84 42 DSP hautes performances 000 • Augmentation de la fréquence CPU – Facilité de portage des applis existantes – Limites : • Consommation proportionnelle à la vitesse CPU • Interfaces mémoire deviennent des goulets d’étranglement 85 DSP hautes performances 000 • Augmentation du travail effectué pendant un cycle : parallélisme Plus d’opérations dans 1 instruction – SIMD (Single Instruction, Multiple Data) Source : [8] 86 43 DSP hautes performances 000 • Augmentation du travail effectué pendant un cycle : parallélisme Plus d’instructions dans 1 cycle d’horloge – Superscalaire • Plusieurs MAC, plusieurs ALU, cache données • Circuit de contrôle complexe 87 DSP hautes performances 000 • Augmentation du travail effectué pendant un cycle : parallélisme Plus d’instructions dans 1 cycle d’horloge – Superscalaire – VLIW (Very Long Instruction Word) • VLIW 8 voies = 8 instr. 32 bits = 256 bits • Instructions en parallèle à la compilation • Hardware + simple que superscalaire 88 44 DSP hautes performances 000 • Augmentation du travail effectué pendant un cycle : parallélisme Plus d’instructions dans 1 cycle d’horloge – Superscalaire – VLIW – Approches hybrides SIMD/VLIW 89 DSP hautes performances 000 • Augmentation du nombre de cœurs DSP en parallèle (multi-core): Ex : ADSP2192 de Analog Devices 2 cores « on-chip » Source : analog.com 90 45 Mesure de performance 000 • Mesure de la vitesse Million FloatingMFLOPS Point Operations Per Second Nombre d’opérations à virgule flottante (multiplications, additions, soustractions, etc.) que le DSP à virgule flottante peut réaliser en une seconde. MIPS Million Instructions Per Second Nombre de codes machines (instructions) que le DSP peut effectuer en une seconde. MOPS Million Operations Per Second Nombre total d’opérations (traitement et transferts de données, accès DMA, opérations d’E/S) que le DSP peut effectuer en une seconde. MMACS Million Multiply and Accumulate Per Second Nombre de MAC que le DSP peut effectuer en une seconde. 91 Mesure de performance 000 • Ex 1 : DSP dans un téléphone portable Æ 40 MIPS • Ex 2: DSP56156 30 MIPS – Taux d’échantillonnage 48kHz Te = 20.833 µs – Quel est le nombre d’instructions maximum entre 2 échantillons ? Nombre d' instructions = = Temps max pour les instructions Temps d'1 instruction 20,8µs ≈ 625 1 / 30M 92 46 Mesure de performance 000 Texas Instruments Analog Devices Freescale DSP MHz MMACS MIPS MFLOPS DSP56367 150 150 150 - MS8101 300 1500 na - ADSP-2191 160 na 160 - ADSP-TS201 600 4800 na >1000 ADS-BF533 750 1500 na - 40 40 40 - 8000 8000 - 600 2400 1800 TMS320 C24 TMS320 C6455 1000 TMS320 C67 300 93 Mesure de performance 000 • Benchmark : – mesurer le temps que met le DSP pour exécuter des programmes "standard" de TNS – Programmes standard • Comment les choisir ? • Dépendent des domaines • N multiplications Æ Filtre RIF 2D – Problème : dépend de la qualité de l’implémentation 94 47 Gamme de DSP 000 La gamme Texas Instruments Contrôle numérique Faible consommation (lecteur MP3, récepteur GPS, équipement médical portable) Très grande puissance : 8000 MIPS (imagerie, vidéo…) 95 Gamme de DSP 000 Road Map C50 (Texas Instruments) 96 48 Gamme de DSP 000 Road Map C60 (Texas Instruments) 97 Gamme de DSP 000 Road map BlackFin (Analog Devices) 98 49 Quelques DSP 000 Constructeur Analog Devices Freescale Texas Instruments Modèle Horloge (MHz) MMACS Virg. Fi/Flo Données (bits) ADSP-21XX 80/160 80/100 Fixe 16 SHARC 200 400 Flottante 32/40 DSP563xx 80/100 80/100 Fixe 24 DSP568xx 120 120 Fixe 16 TMS320 C24 40 40 Fixe 16 TMS320 C54 160 160 Fixe 16 TMS320 C55 200 400 Fixe 16 TMS320 C62 300 400 Fixe 16 TMS320 C67 300 400 Flottante 32 99 Plan de l’exposé 000 • Le Traitement Numérique du Signal (TNS) et les DSP • Architecture des DSP : CPU, mémoire… • Performances des DSP : augmentation, mesure de performances, gamme de DSP… • Développement d’applications sur un DSP : programmation… 100 50 Développement d’applications 000 • Conception algorithmique • Choix du DSP • Développement sur PC – C ou assembleur – Environnement pas universel • Compilation, link • Chargement de l’exécutable sur le DSP PC DSP • Exécution du programme sur le DSP 101 Développement d’applications 000 • Exemple : implantation d’un filtre RIF sur un DSP virgule fixe • Choix du DSP en fonction de l’application : – Choix de la famille Audio Æ C54x chez TI – Choix des caractéristiques • Quantité de RAM/ROM • Vitesse d’horloge pour 1000 • Prix d’un DSP Bas de gamme : $5,40 unités Haut de gamme : $30 achetées 102 51 Développement d’applications 000 • Exemple : implantation d’un filtre RIF sur un DSP virgule fixe N −1 y (n) = ∑ a(i ) x(n − i ) i =0 Coefficients a(i) (à convertir au format virgule fixe) Gabarit du filtre 103 Développement d’applications 000 • Ecriture du programme Prog. principal Initialisation des registres, tables d’interruption, coefficients… Attente (idle) (C, assembleur) Sous-programme de traitement d’une interruption Réception de l’échantillon d’entrée x(n) Calcul de l’échantillon de sortie avec : N −1 y (n) = ∑ a(i ) x(n − i ) i =0 Retour au prog. principal 104 52 Développement d’applications 000 • Test du programme : – Simulateurs – Carte d’évaluation (Starter Kits chez TI) source : ti.com – Emulateurs 105 Développement d’applications 000 Assembleur • Langage bas-niveau – Fastidieux – Jeux d’instructions complexes et irréguliers – Spécifique à chaque constructeur • Plus puissant – Accès à certains registres inconnus du C • Permet d’optimiser Langage C • Langage de plus haut-niveau – Plus rapide à coder – Meilleure portabilité • Code machine généré moins efficace • Outils de développement 106 53 Assembleur 000 • Les instructions sont codées sur une ligne incluant une étiquette (optionnelle) Instruction Start : Commentaire LD #540, AR2 ; Premier opérande en AR2 LD #180, AR3 ; Deuxième opérande en AR3 MAC *AR2, *AR3, A ; Multiplication des opérandes Etiquette Opérande 107 Types d’instructions 000 • Calcul – Opérations arithmétiques • Addition, soustraction, multiplication – Opérations logiques • AND, OR, tests • Décalage • Contrôle du programme – Branchement, répétition – Appels et Retours • Sous-programmes, interruptions – Manipulation de la pile – Divers (NOP) • Mémoire – Chargement et sauvegarde – Déplacement de données de mémoire à mémoire 108 54 Modes d’adressage 000 • Modes d’adressage classiques Adressage Où se trouve la donnée ? Exemple Immédiat Dans l’instruction Direct En mémoire à l’adresse spécifiée MOV R1, M(238) dans l’instruction Indirect En mémoire à l’adresse spécifiée MOV R1, M(R2) dans un registre (pointeur) Indexé En mémoire à l’adresse résultat de la somme de 2 registres MOV R1, 17 MOV R1, M(R2+R3) 109 Modes d’adressage 000 • Modes d’adressage spécifiques – Circulaire (ou modulo) : utilisé dans les filtres RIF, RII, la convolution… – Bit reverse (ou inversion de bits) : utilisé dans la FFT 110 55 La R&D sur les DSP en France 000 • Texas Instruments : Villeneuve-Loubet (06) • Freescale : Toulouse, Crolles (38) • ST Microelectronics : Crolles, Rousset (13) • ARM : Sophia-Antipolis • Atmel : Rousset, Grenoble • Infineon : Sophia-Antipolis 111 Annexe 000 Présentation des TP sur les DSP 112 56 TP sur les DSP 000 • Le DSP : TMS320 C5416 • Programmation d’algorithmes de traitement du signal : effets audio Æ Apporter un lecteur CD/MP3 ou clé USB En pratique : • 3 séances : Lundi 29 janvier, 5 & 12 février • Evaluation sur CR + oral 113 Le DSP Starter Kit C5416 000 (CPLD) ROM SARAM DARAM mémoire externe source : "TMS320VC5416 DSK Reference Technical", Spectrum Digital mémoire interne 114 57 Diagramme bloc du TMS320C5416 000 Program/Data ROM 16K Words Program/Data RAM 128K Words JTAG Test/ Emulation Control Bus externe MUX D(15-0) Program/Data Buses Timer A(23-0) Muxed GP I/O DMA Ch 0 40-Bit Adder CMPS Operator (VITERBI) Ch 1 RND, SAT EXP Encoder Ch 2 Shifter Accumulators 40-Bit ACC A Ch 3 40-Bit Barrel (-16, 31) Génération d’adresses ALU 40-Bit ALU Ch 4 40-Bit ACC B Ch 5 Addressing Unit 8 Auxiliary Registers Peripheral Bus MAC 17 x 17 MPY Unités de calcul Mémoire interne 8/16-bit Host Port Interface (HPI) Multichannel Buffered Serial Port (McBSP) Multichannel Buffered Serial Port (McBSP) Multichannel Buffered Serial Port (McBSP) PLL Clock Generator 2 Addressing Units S/W Waitstate Generator Power Management CPU Entrées Sorties 115 Effets audio 000 • Principe de tous les effets audio : ajout au signal d’une version décalée de lui-même delay chorus flanger reverb 116 58 Effets audio : delay 000 • Delay = retard simple • 1ère possibilité : y(n) = x(n)+ a.x(n-D) Filtre RIF • Selon la valeur de D – Entre 50 et 100 ms : effet d’ambiance – >100 ms : écho 117 Effets audio : delay 000 • RIF : y(n) = x(n)+ a.x(n-D) • Fonction de transfert : H ( z ) = 1 + az − D source : [11] Filtre en peigne (comb filter) 118 59 Effets audio : delay 000 • 2ème possibilité : y(n) = x(n)+ a.y(n-D) Filtre RII revient à ajouter un retour (feedback) 119 Effets audio : delay 000 • RII : y(n) = x(n)+ a.y(n-D) • Fonction de transfert : source : [11] H ( z) = 1 1 + az − D 120 60 Delay : exemples 000 • Son 1 : impulsion • RIF : 60 ms, 100 ms, 150 ms, 250 ms • RII (avec feedback) 250 ms : gain1, gain2 > gain1 • Son 2 : voix chantée • sans , avec • Son 3 : guitare • grand retard 1,5 s (intérêt de la synchro) • effet stéréo : 20 ms de décalage entre les 2 canaux source des sons : [10,12] 121 Effets audio : chorus 000 • Principe : simuler le fait que plusieurs instruments identiques jouent simultanément, « élargir » le son. • D varie dans le temps ! y(n) = x(n)+ a.x(n-D(n)) • D varie de 20 à 30 ms LFO : Low frequency oscillator (ex : 3 Hz) 122 61 Chorus : exemples 000 • Son 1 : guitare sans, avec • Son 2 : 1 note avec différentes formes pour le LFO : 123 Effets audio : flanger 000 • Principe : bruit de réacteur d’avion ou métallique, effet circulaire • Similaire à chorus mais : – Feedback possible – D = 1 à 20 ms Æ pas d’effet d’écho mais filtre 124 62 Effets audio : flanger 000 • D plus petit que pour le chorus D1 D1< D2 125 Flanger : exemples 000 • Très employé dans la musique ! (Jimi Hendrix, Pink Floyd, David bowie…) • Son 1 : batterie sans, avec • Son 2 : Are you gonna go my way, Lenny Kravitz • Son 3 : Killer queen, Queen 126 63 Effets audio : reverb 000 • Principe : prise en compte du volume de la pièce – Résultat de toutes les réflexions du son – Dépend de la surface (hall de concert : 1.5 à 2s) 127 Effets audio : reverb 000 • Principe : prise en compte du volume de la pièce 128 64 Effets audio : reverb 000 • Structure du réverbérateur de Schroëder 129 Reverb : exemples 000 • Son1 : voix chantée sans , avec • Son2 : guitare sans, avec • Son3 : reverse reverb (50ms, 150 ms) 130 65 Effets audio : résumé 000 Structure D RIF : yn = xn+axn-D Delay Fixe RII : yn = xn+ayn-D Effet d’ambiance (50 à 100ms), écho Chorus RIF : yn = xn+axn-D(n) Variable (>100ms) (20 à 30ms) Simultanéité de +ieurs instruments id. RIF : yn = xn+axn-D(n) Flanger RII : yn = xn+ayn-D(n) Variable (1 à 20ms) Réacteur d’avion, effet circulaire 131 Quelques références 000 • F. Virolleau, G. Baudoin. DSP Les processeurs de traitement du signal Famille TMS320C5x. Dunod, 1996. • G. Baudoin, F. Virolleau. Les DSP Famille TMS320C54x – Développement d’applications. Dunod, 2000. • P. Lapsley, J. Bier, A. Shoham, E. Lee. DSP Processor Fundamentals, Architectures and Features, IEEE Press, 1997. 132 66 Bibliographie complète 000 • [1] A. Tisserand. DSP : des processeurs dédiés au traitement numérique du signal, séminaire LIP, 2003. • [2] Bores Signal Processing (www.bores.com) • [3] C. Odet. Cours sur les DSP, INSA Lyon, 2005. • [4] Berkeley Design Technology, Inc. www.bdti.com (juin 2006) • [5] D. Prêtre. Fast Fourier Transform. HE-Arc Ingénierie, 2004. 133 Bibliographie complète 000 • [6] L. Battista. Une introduction aux DSP, Mémoire CNAM, 1997. • [7] M. Vinez. Domaines d’application par type d’architecture, séminaire Jessica, 2006. • [8] Dossier : Les processeurs de traitement du signal, Electronique n°143, 2004. • [9] R. Mégret. Processeurs dédiés au traitement du signal, cours ENSEIRB, 2005. 134 67 Bibliographie complète 000 • Sites des constructeurs : – ti.com, – freescale.com, – analog.com. • Effets audio : [10] http://www.harmonycentral.com/Effects/effects-explained.html [11] http://www.bluecatonline.org/eng/DigitalAu dioNotions/DigitalAudioNotions.htm [12] http://wwwdsp.efrei.fr/DOCUMENTS/reverb.htm 135 Bibliographie complète 000 • Effets audio : • [10] http://www.harmonycentral.com/Effects/effects-explained.html • [11] http://www.bluecatonline.org/eng/DigitalAudi oNotions/DigitalAudioNotions.htm • [12] http://wwwdsp.efrei.fr/DOCUMENTS/reverb.htm 136 68