Processeurs de traitement du signal (DSP) Sylvain MONTAGNY [email protected] Bâtiment chablais, bureau 13 04 79 75 86 86 Présentation des cours : Sommaire Cours : 13.5 h en 9 séances Chapitre 1 : Introduction aux systèmes de traitement numérique Chapitre 2 : Représentation numérique du signal Chapitre 3 : Les unités spécifiques des DSP Chapitre 4 : Le DSP TMS320C5416 Chapitre 5 : Un outil de développement logiciel, code composer studio Université de Savoie 2 Présentation TD TD : 7.5 h en 5 séances TD1 : Codage des nombres et architecture numérique TD2 : Etude avancée de l’architecture d’un DSP, le DSPic30F2010 TD3 : Organisation mémoire et organisation du code Université de Savoie 3 Présentation TP TP : 16h en 4 séances de 4h TP1 : Prise en main de l’environnement de programmation Code Composer Studio TP2 : Détection de fréquence dans un signal DTMF TP3 : Génération de fréquences sonores Université de Savoie 4 Examens Un contrôle final : 1h30 Une note de travaux pratiques Université de Savoie 5 Chapitre 1 : Introduction aux systèmes de traitement numérique 1.1 Chaîne de traitement numérique 1.2 Solutions classiques de traitement numérique et problématiques Université de Savoie 6 La chaine de traitement numérique Ports d’entrées / sorties Actionneur Capteur Filtre anti repliement CAN Système de traitement numérique (Processeur, FPGA…) Analogique CNA Filtre de reconstruction Analogique Mémoire Numérique Université de Savoie 7 Chaîne de traitement numérique Avantages / Inconvénients Avantages : Robustesse : Précision : Multitâche : Prédiction : Inconvénients : Coût : Vitesse : Complexité : Université de Savoie 8 Chaîne de traitement numérique Exemples d’applications (2) Télécommunications : détection de BP Filter Detector tonalité Schéma de détection de tonalité 697 Hz BP Filter Detector 770 Hz BP Filter Detector 852 Hz 697 Hz 1 2 3 LP Filter Limiter BP Filter Detector 941 Hz 770 Hz 4 5 6 HP Filter Limiter BP Filter Detector 1209 Hz BP Filter Detector 1336 Hz BP Filter Detector 1477 Hz 852 Hz 7 8 9 941 Hz * 0 # 1209 Hz 1336 Hz 1477 Hz Fréquences de tonalité du clavier numérique |G| (dB) Gabarit du filtre numérique -0 dB -3 dB -30 dB Université de Savoie FS1 FP1 FP2 FS2 Fe 2 10 La chaine de traitement numérique Complexité des algorithmes Fréquence en Hz 1 000 000 10 000 100 1 Faible Complexité de l’algorithme Température Codage de la voix Reconnaissance vocale Elevée MP3 Reconnaissance d’image Positionner les applications suivantes dans le graphique 11 Chapitre 1 : Introduction aux systèmes de traitement numérique 1.1 Chaine de traitement numérique 1.2 Solutions classiques de traitement numérique et problématiques Université de Savoie 12 Problématique et solutions Filtrage numérique sur processeur classique (1) Fonction de transfert d’un filtre numérique ଵ ଵ ିଵ ିଵ ି ି Programme d’un filtre numérique loop: mov *r0,x0 mov *r1,x1 mpy x0,x1,a add a,b mov x1,*r2 inc r0 inc r1 inc r2 dec ctr tst ctr jnz loop Lecture des opérandes sources Opération MAC Exécution en 15 à 20 cycles sur processeur classique Vieillissement de l’échantillon Gestion des pointeurs d’adresse Gestion de la boucle Exécution en 1 cycle sur DSP 13 Problématique et solutions Filtrage numérique sur processeur classique (2) Problèmes : Temps d’accès aux échantillons Temps d’accès aux coefficients Gestion des pointeurs d’adresse Multiplication lente Stockage du résultat Sur un DSP on cherche à : Obtenir une gestion automatisée des pointeurs pour les boucles Multiplier le nombre de chemin entre le processeur et la mémoire pour éviter le goulot d’étranglement Réaliser des multiplications en 1 coup d’horloge Limiter la consommation : Pmoy = K . Vdd 2 . FHorloge 14 Problématique et solutions Gestion du temps réel Te = Période d’échantillonnage T = Temps de traitement Horloge acquisition Te t Interruption Activité processeur Entrée de l’échantillon t T Sortie du résultat Université de Savoie 15 Problématique et solutions Solutions architecturales (document architecture reconfigurable) Compromis performance – flexibilité Cf article : Architecture reconfigurable, les processeurs du futurs 2 V DSP 3 MOPS/mW Efficacité énergétique Pleiades 10-50 MOPS/mW Flexibility En MIPS/W Embedded Processor SA110 0.4 MIPS/mW 100-1000 MOPS/mW ASIC DSP Embedded FPGA Alpha 0.007 MIPS/mW Reconfigurable Processor EE : Efficiency : MIPS / Watt 16 Chapitre 2 : Représentation numérique du signal 2.1 De l’analogique au numérique 2.2 Le codage des nombres entiers et réels Université de Savoie 17 De l’analogique au numérique Signal Analogique Numérisation 111 110 101 100 011 010 001 000 Signal Numérique q Restriction des instants considérés : Fréquence d’échantillonnage Fech Restriction des valeurs de l’amplitude possible : Nombre de bits N Université de Savoie 18 De l’analogique au numérique Effets du repliement de spectre Reconstitution d’un signal échantillonné à fs > 2fc Reconstitution d’un signal échantillonné à fs < 2fc Université de Savoie 19 De l’analogique au numérique Quantification Uniforme On parle de quantification uniforme si les intervalles (valeurs du signal numérisés) sont de même longueur q ( q est le pas de quantification ) L’erreur de quantification est l’écart entre la valeur réelle et la valeur quantifiée : 1. Erreur de d’arrondi q e 2 2. Erreur de saturation x<valeur min ou x>valeur max Université de Savoie 20 De l’analogique au numérique Plage globale de quantification 1. Erreur d’arrondi q e 0 0 1 2 3 4 5 7 8 9 Rapport signal sur bruit relatif à la quantification RSBdB Px 6 Temps dB Pe dB Px 10 log Pe On peut montrer que le RSB se rapproche de l’expression 3 dB 2 log10 RSBdB Px 6 N 10 log10 xmax 2 21 De l’analogique au numérique 2. Erreur de saturation e xmax Cette erreur se produit lorsque l’amplitude de l’échantillon à convertir dépasse xmax ou xmin C’est une erreur non bornée, on cherche donc à minimiser la probabilité de saturation. 0 0 1 2 3 4 5 6 Temps 7 8 9 Université de Savoie Le RSB se dégrade très rapidement au-delà d'un seuil où cette probabilité est non négligeable. 22 De l’analogique au numérique Quantification uniforme et RSB Quantification uniforme 16 bits sur [-1,1] 120 saturation 100 RSB (dB) 80 60 40 erreur d’arrondi 20 0 -60 -50 -40 -30 -20 -10 puissance du signal (dB) 0 Quantification uniforme 16 bits signés sur [-1,1] 10 23 De l’analogique au numérique Quantification uniforme vs logarithmique Signal original x Signal original x Signal compressé y=C(x) 1 1 1 0.5 0.5 0.5 0 0 0 -0.5 -0.5 -0.5 -1 0 0.2 0.4 0.6 0.8 1 -1 0 0.2 0.4 0.6 0.8 1 -1 Signal quantifié x q=C-1(y q) Signal quantifié x q=Q(x) 1 1 0.5 0.5 0.5 0 0 0 -0.5 -0.5 -0.5 0 0.2 0.4 0.6 0.8 quantif. uniforme domaine linéaire 1 -1 0 0.2 0.4 0.6 0.8 quantif. logarithmique domaine linéaire 0.2 0.4 0.6 0.8 1 Signal quantifié y q=Q(y) 1 -1 0 1 -1 0 0.2 0.4 0.6 0.8 quantif. uniforme domaine compressé 24 1 De l’analogique au numérique Quantification Uniforme vs Logarithmique 45 Loi A sur 8 bits 40 Loi A 35 RSB (dB) 30 25 20 RSB à peu près constant sur une plage de 30 dB La compression limite les effets de la granulation 15 10 5 0 -60 -50 -40 -30 -20 -10 puissance du signal (dB) granulation 0 10 Quantification uniforme saturation Université de Savoie L’effet de granulation est linéaire par rapport à la puissance du signal 25 Chapitre 2 : Représentation numérique du signal 2.1 De l’analogique au numérique 2.2 Le codage des nombres entiers et réels Université de Savoie 26 Le codage des nombres entiers Non signées N 1 A chaque chiffre est affecté un poids exprimé en puissance de 2 : x bi 2i i 0 Exemple ( 101 )2 <=> 1.22 + 0.21 + 1.20 = ( 5 )10 Signées : Complément à 2 C’est le format le plus utilisé en arithmétique binaire. Le bit de poids fort représente le signe Nombre positif : codé comme un non-signé Nombre négatif : codé par son C2 (Inversion des bits puis ajout de1) Université de Savoie 27 Le codage des nombres entiers Entiers signés : Format complément à 2 Format le plus utilisé en arithmétique binaire Codage 3 0 1 1 2 0 1 0 1 0 0 1 0 0 0 0 -1 1 1 1 -2 1 1 0 -3 1 0 1 -4 1 0 0 1 Dynamique 2 N 1 Nombre 2 N 1 Complément à 2 de x : C2(x) = 2N – x Implantation efficace : Inversion des bits puis ajout de 1 C2(x) = C1(x) + 1 Signe 28 Le codage des nombres entiers Propriétés du codage en complément à 2 Représentation “circulaire” 111 En ajoutant 1 à la plus grande valeur positive on obtient la valeur négative extrême 000 -2 110 101 -3 0 -1 1 001 010 2 100 -4 011 3 Les DSP peuvent être configurés pour opérer de deux manières: C2 pur C2 avec arithmétique de saturation C2 pur Université de Savoie C2 avec saturation 29 Le codage des nombres réels La représentation des nombres doit répondre à deux exigences contradictoires : Précision: intervalle entre deux rationnels codés : >>> Doit être le plus petit possible Dynamique: Rapport entre le plus grand rationnel et le plus petit rationnel codés : >>> Doit être la plus étendue possible Dans ce contexte les unités de calcul des DSP travaillent Soit en format fixe (notation décimale) Soit en format flottant (notation scientifique) Université de Savoie 30 Le codage des nombres réels 1.Codage en virgule fixe (1) Le format d’une donnée ne varie pas au cours du temps Représentation : partie entière - partie fractionnaire -2m-1 S bm-1 bm-2 21 20 2-1 2-2 b1 b0 b-1 b-2 Partie entière codée en C à 2 2-n b-n+2 b-n+1 b-n Partie fractionnaire m1 x (2)m1 S bi 2i CA2 i n Université de Savoie 31 Le codage des nombres réels 1. Codage en virgule fixe (2) Propriétés: Partie fractionnaire codée sur k bits Partie entière codée sur N-k bits en C2 Définition "format Qk" : La représentation Qk du réel x correspond à la représentation CA2 de l'entier y tel que: y round(2 k x) Q0 désigne le cas particulier des entiers signés en CA2 Université de Savoie 32 Le codage des nombres réels 1. Codage en virgule fixe (3) Si on ne précise pas le format Qk, un nombre binaire peut représenter plusieurs valeurs. Exemple : 01011101 peut représenter : Q2 : 23.25 Q4 : 5.8125 Q7 : 0.7265625 Université de Savoie 33 Le codage des nombres réels 1. Codage en virgule fixe (4) Exemple: Q5 sur 8 bits Partie entière codé sur 3 bits (dont 1 de signe) Partie fractionnaire codée sur 5 bits Valeurs comprises entre -4 et +3.96875 Erreur maximale q /2 = 2-6 si arrondi au plus proche 34 Le codage des nombres réels 1. Codage en virgule fixe (5) #/Poids -22 21 20 -4 1 0 0 -3.96875 1 0 0 0 3.9375 3.96875 ,2 2-2 2-3 2-4 2-5 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 -1 35 Le codage des nombres réels 1. Codage en virgule fixe (6) Précision: quantification uniforme de pas q q=2-k Dynamique: -2N-k-1 >> 2N-k-1-2-k Exemple format sur 16 bits: Quel format faut-il pour représenter tous les réels : -1≤Nombre<1 -8≤Nombre<8 -200≤Nombre<200 >>Donner la précision de chaque codage. Université de Savoie 36 Le codage des nombres réels 2. Codage en virgule flottante Virgule flottante Représentation : exposant - mantisse La mantisse et l’exposant sont représenter eux même en CA2. Ils peuvent donc prendre des valeurs négatives. dE-1 d1 Exposant d0 cM-1 c2 c1 c0 Mantisse Norme IEEE : x Mantisse .2 Exposant Exposant sur 8 bits Mantisse sur 24 bits 1 ≤ |Mantisse| <2 Université de Savoie 37 Le codage des nombres réels Comparaison fixe - flottant Dynamique virgule fixe/flottante 1500 Niveau de dynamique max(x ) DN (dB) 20. log min( x ) D ynam ique en dB Virgule flottante 1000 500 Virgule fixe 0 10 15 20 25 30 Nombre de bits Rapport Signal à Bruit virgule fixe/flottante Rapport Signal à Bruit de Quantification Ps dB 10. log Pe 80 RS B en dB 100 Virgule flottante 60 40 Virgule fixe 20 0 -50 0 Dynamique du signal d entré e en dB 50 38 Application En langage de programmation C, nous utilisons les types de variables suivant. Retrouver la valeur minimale et maximale de chacun des types. Nom du type Signification Codage 8 bits -128 à 127 Entier non signé 32 bits 0 à 232-1 Entier signé 32 bits -231 à 231-1 Réel signé 32 bits • 24 bits de mantisse • 8 bits d’exposant -3,4 x 1038 à 3,4 x 1038 Réel signé 64 bits • 53 bits de mantisse • 11 bits d’exposant -1,7 x 10308 à 1,7 x 10308 char Entier signé unsigned int int float double Plage de valeur Université de Savoie 39 Chapitre 3 : Les unités spécifiques des DSP 3.1 3.2 3.2 3.3 3.4 Architecture générale et objectifs Unité de commande Unité de traitement Unité de mémorisation Performance / Consommation Université de Savoie 40 Architecture générale et objectifs Processeur CPU Unité de commande Unités de traitement Bus internes Mémoire interne Unité de Communication Université de Savoie Périphériques et mémoire externes 41 Chapitre 3 : Les unités spécifiques des DSP 3.1 3.2 3.2 3.3 3.4 Architecture générale et objectifs Unité de commande Unité de traitement Unité de mémorisation Performance / Consommation Université de Savoie 42 Unité de commande C’est le chef d’orchestre du CPU. Il séquence et décode les instructions une à une. Pour être efficace, le CPU met en œuvre : Un pipeline Une gestion des boucles matérielles Université de Savoie 43 Les phases du Pipeline P (Prefecth) - Generate program address = Incrémentation du compteur ordinal F (Fetch) - Get Opcode = Lecture du code de l’instruction en mémoire D (Decode) - Decode instruction = Décodage de l’instruction A (Access) - Generate read address = Calcul des adresses des opérandes = Calcul de l’adresse du résultat R (Read) - Read operands = Lecture des opérandes en mémoire X ( Execute) = Exécution de l’instruction = Ecriture du résultat l’adresse calculée P F D A R X P F D A R X P F D A R X P F D A R X P F D A R X P F D A R X Full Pipeline : Toutes les unités matérielles du DSP sont en activités Unité de commande Séquentiel vs pipeline Instruction Fetch t2 t3 t4 t5 Instruction 1 t7 t8 F2 D1 D2 Read R1 Execute F1 - R2 X1 t1 t2 t3 t4 t5 t6 t7 t8 F1 F2 F3 F4 F5 … … … D1 D2 D3 D4 D5 … … R1 R2 R3 R4 R5 … X1 X2 X3 X4 X5 Read Execute CPU Decode D1 R1 - MemD X1 - MemD F4 F5 MemP X2 Exécution séquentielle Fetch MemP Instruction 2 F1 Decode t6 CPU t1 D3 D4 R2 R3 MemD X1 X2 MemD Amorçage du pipeline Exécution avec pipeline : entrelacement des instructions Université de Savoie 45 Unité de commande Exemple de rupture de séquence Code à exécuter : 1: Instr1 2: Si B==1 Alors GOTO 10: 3: Instr3 4: Instr4 5: Instr5 6: Instr6 … 10: 11: 12: … Instr10 Instr11 Instr12 Etat du pipeline avec prédiction que B≠1 : Si prédiction incorrecte (B=1) F D R X Si prédiction correcte (B≠1) t1 t2 t3 t4 t5 t6 t7 t8 F1 F2 F3 F4 F5 F10 F11 F12 F D1 D2 D3 D4 ! D10 D11 D R1 R2 R3 ! ! R10 R X1 X2 ! ! ! X Evaluation du prédicat (B==1) => rupture de séquence t1 t2 t3 t4 t5 t6 t7 t8 F1 F2 F3 F4 F5 F6 … … D1 D2 D3 D4 D5 D6 … R1 R2 R3 R4 R5 R6 X1 X2 X3 X4 X5 Vidange du pipeline: Perte de 3 cycles Evaluation du prédicat (B==1) => pas de rupture Unité de commande Exemple de conflit d'accès mémoire Programmes et Données dans la même mémoire à 1 accès par cycle Fetch Decode t1 t2 t3 t4 t5 t6 t7 t8 F1 F2 conflit conflit F3 F4 ! ! D1 D2 ! ! D3 D4 ! R1 R2 ! ! R3 R4 X1 X2 ! ! X3 Read Execute Conflit pour l’accès mémoire entre Fetch et Read Les lectures de données R1/R2 empêchent les chargements d'instruction F3/F4 Réductions des performances d'au moins 50% Problème réglé si Mémoire multi-accès Programmes et Données dans des mémoires différentes (ou multi-bloc) Université de Savoie 47 8 Unité de commande Effets du pipeline lors du débogage Code à exécuter : 1: A=1 2: B=1 3: C=1 … NOP … 10: A=2 11: B=2 12: C=2 13: D=2 14: E=2 … Watch Window A 1 B 1 C 1 Watch Window A 1 ??? B 1 C 1 Watch Window A 2 !!! B 1 C 1 Watch Window A 2 B 2 C 1 La flèche indique la position du PC Plusieurs cycles sont nécessaires avant que la variable soit modifiée : Cela n’intervient qu’à l’étape X (exécution) F D R X t1 t2 t3 t4 t5 t6 t7 t8 F10 F11 F12 F13 F14 … … … D10 D11 D12 D13 D14 … … R10 R11 R12 R13 R14 … A=2 B=2 C=2 D=2 E=2 Programme 1 Visualisation des variables Programme 2 Visualisation des variables Unité de commande Utilisation des ressources par le pipeline Etage pipeline P F D A R X Description Partie hardware utilisée Generate program address Get Opcode Decode instruction Generate read address Read Operand Generate write address PC Program memory Decoder ARs, ARAU Data memory ARs, ARAU Execute instruction Write result MAC, ALU Data Memory PC = Program Counter ARAU = Auxiliary Register Arithmetic Unit AR = Adresse Register MAC= Multiply ACcumulate ALU = Arithmetic Logic Unit 50 Unité de commande Retards dans le pipeline Le pipeline atteint son plein rendement une fois qu’il est “rempli” Un retard peut se produire S’il existe un conflit de ressources (retard ponctuel) accès à la mémoire utilisation des bus En cas de rupture de séquence (vidange du pipeline) branchement non prévu appel de sous-programme interruption Université de Savoie 51 Unité de commande Gestion des boucles L’objectif est d’optimiser le traitement des boucles de petite taille Initialisation des paramètres de la boucle en 1 instruction Pas d'instructions supplémentaires pour la gestion de la fin de la boucle Exemple boucle mono-instruction MOVE LOOP MAC DEC JNE #16,B (R0)+,(R4)+,A B LOOP Boucle logicielle Université de Savoie RPT MAC #16 (R0)+,(R4)+,A Boucle matérielle 52 Unité de commande Exemple : Calcul d’un filtre RIF N 1 Gestion matérielle des boucles : Unité de génération d’adresses programme Unité MAC matérielle + Chargement simultané de l’instruction et des opérandes A=0; for (i=0; i<N; ++i) { A = A + } Y = A >> 15; B[i] * X[i]; Unité de génération d’adresses données Code C y n b(i ) x n i i 0 B[i] X[i] Y SSBX FRCT STM #B, AR2 STM #X, AR3 STM #Y, AR4 RPTZ A, #N-1 (x1) MAC *AR2+,*AR3+, A (xN) STH A, *AR4 (x1) Equivalent ASM Université de Savoie 53 Unité de commande Optimisation du compilateur C Code C #define N 256 short in[N]; short out[N]; void toto() { int i; for (i=0; i<N; i++) { out[i]=in[i]; } } Adresses des tableaux _inputData = 331h = 817 _outputData = 431h = 1073 Prise en compte des capacités matérielles du DSP Pas d’optimisation 813D toto 813D PSHM 11h 813E FRAME -1 813F SSBX SXM 8140 LD #100h,0,A 8142 ST #0h,0h 8144 SUB 0h,A 8145 BC 8154h,ALEQ debut : 8147 MVDK 0h,11h 8149 LD *AR1(817),A 814B STL A,*AR1(1073) 814D LD #100h,0,A 814F ADDM 1h,0h 8151 SUB 0h,A 8152 BC 8147h,AGT fin: 8154 FRAME 1 8155 POPM 11h 8156 FRET Sauvegarde AR1 (save-on-entry) Manipulation de nombres signés A <= 256 (100h) Met la valeur initiale 0 de i dans pile[0h] A <= A - pile[0h] Si A<=0, alors aller à fin: Copie pile[0h] dans AR1 Charge in[AR1] dans A Stocke A dans out[AR1] A <= 256 (100h) pile[0h] <= pile[0h] + 1 A <= A - pile[0h] Si A>0 alors reboucler sur debut: Restaure de AR1 Retour de la fonction 8033 toto Optimisation au niveau fonction (-o2) 8033 STM 431h,13h AR3 <= @out 8035 STM 331h,12h AR2 <= @in 8037 RPT #0ffh Répéter 256=255+1 fois 8038 MVDD *AR2+,*AR3+ *AR3 <= *AR2 8039 NOP 803A NOP Université 803B FRET de Savoie 54 Unité de commande Unité de contrôle du C50 • PC sur 16 bits pile de 8 * 16 bits PFC,IR: pour le pipeline • Registres de status ST0,ST1,PMST • Gestion des boucles • RPTC: repeat instruction • BRCR: repeat bloc • Interruptions : • IMR: masque interruptions • IFR: flags interruptions • BMAR: bloc move GREG: mémoire globale • • • Université de Savoie 55 Chapitre 3 : Les unités spécifiques des DSP 3.1 3.2 3.2 3.3 3.4 Architecture générale et objectifs Unité de commande Unité de traitement Unité de mémorisation Performance / Consommation Université de Savoie 56 Unité de traitement DSP virgule fixe / virgule flottante Il existe deux types de DSP : Les DSPs à virgule fixe traitent des nombres entiers seulement Les DSPs à virgule flottante traitent des nombres réels codés sous la forme mantisse exposant. Université de Savoie 57 Unité de traitement DSP virgule fixe (1) Arithmétique : Dynamique limitée : [-Xmax et Xmax] : Possibilité de débordement nécessité de recadrer les données Développement : Temps de développement plus long : Étude de la dynamique des données, détermination du codage et des recadrages Université de Savoie 58 Unité de traitement DSP virgule fixe (2) Architecture : Opérateurs plus simples Largeur des données b : 16 bits Efficacité énergétique plus importante : consommation moins importante Processeur moins cher (surface du circuit moins importante) Processeur rapide (seulement pour les calculs à virgule fixe) Marché : applications grand public Xx % des ventes en xx TMS320C62x : TMS320C64x : 59 Unité de traitement DSP virgule flottante (1) Arithmétique : Dynamique importante : 1500 dB pour 32 bits Développement Temps de développement plus court Recadrage des données assuré par le processeur Compilateur de langage de haut niveau plus efficace : plus grande portabilité Université de Savoie 60 Unité de traitement DSP virgule flottante (2) Architecture : Largeur des données : 32 bits Opérateurs plus complexes (gestion de la mantisse et de l’exposant) Processeur plus cher et consommant plus Marché Applications nécessitant une grande dynamique : audionumérique Applications avec des faibles volumes 61 Unité de traitement Exemple Filtre numérique FIR sur N points N 1 y(n) h(i).x(n i) x(n) h(n) i 0 Dessiner la structure matérielle permettant de réaliser le calcul de y(n). D D D D x(n) h(0) x h(1) x + h(2) x h(3) + x + h(4) x + y(n) Cellule Objectif : traitement d’une cellule par cycle Université de Savoie 62 Unité de traitement Eléments de l’unité de traitement (1) Opérateurs Multiplieur câblé Multiplication en 1 cycle ou pipelinée (1 résultat de multiplication par cycle) Le résultat est fourni directement à l’UAL ou il est stocké dans un registre (P register) Largeur des opérandes source : b résultat : bmultiplication = 2.b Unités de saturation ou d’arrondi Unités spécifiques Unité de manipulation de bit, Viterbi, ... Université de Savoie 63 Unité de traitement Eléments de l’unité de traitement (2) U.A.L. Opérations arithmétiques : addition, soustraction, incrémentation, négation Opérations logiques : and, or, not Additionneur indépendant de l’UAL Registres à décalage (recadrage des données) spécialisé : réalisation de quelques décalages prédéfinis en // en barillet : réalisation d ’un décalage quelconque en 1 cycle Université de Savoie 64 Unité de traitement Éléments de l’unité de traitement (3) Unités de stockage de l’unité de traitement Registres opérandes Stockage des opérandes sources ou des résultats intermédiaires Registres d’accumulation Stockage du résultat de l ’additionneur Nombre de registres d’accumulation limité (1 à 4) Données stockées en double précision Possibilité de bits de garde pour stocker les bits supplémentaires issus d ’accumulations successives badd = bmultiplication + bgarde Bits de garde bgarde ACCH ACCL 2.b 65 Unité de traitement Structure de l’unité de traitement MAC A B b b P bmult MAC + badd Accumulateur Sat /Arr Université de Savoie 66 Unité de traitement Exemple : TMS320C54x DB PB DB CB CB DB CBDBEB 1 multiplieur 16*16 bits Op source 1 : registre T Op source 2 : mémoire Op destination : 1 additionneur 40 bits 1 ALU (40 bits) Université de Savoie 2 registres d ’accumulation 40 bits 1 registre à décalage en barillet 1 unité dédiée à l ’algorithme de Viterbi 67 Chapitre 3 : Les unités spécifiques des DSP 3.1 3.2 3.2 3.3 3.4 Architecture générale et objectifs Unité de commande Unité de traitement Unité de mémorisation Performance / Consommation Université de Savoie 68 Unité de mémorisation Les différents accès à la mémoire Exemple Filtre FIR Recherche de l’instruction Lecture de la donnée xn-k Lecture du coefficient hk Vieillissement des données xn-k-1 = xn-k D D D D x(n) h(0) x h(1) x x h(2) h(3) x h(4) x y(n) + + + + TAP 69 Unité de mémorisation Rappels : Bus Le CPU est le maître du bus Il est le seul à écrire sur les bus adresse et contrôle Le périphérique obtempère sur le bus données CPU Lecture : il fournit la donnée demandée Ecriture : il récupère la donnée fournie par le CPU Haute impédance : il se déconnecte du bus BUS Périphérique Adresses : sélection du périphérique et localisation d’une donnée Données : valeur de la donnée à échanger adresses CPU données contrôle Périphérique Contrôle : lire / écrire / haute impédance Université de Savoie 70 Unité de mémorisation Accès mémoire pour un calcul 1 2 CPU Mémoire 4 3 (1) (2) (3) (4) Charger une instruction depuis la mémoire Charger les opérandes depuis la mémoire Effectuer les calculs Stocker le résultat en mémoire Université de Savoie 71 Unité de mémorisation Architecture Von Neuman CPU BUS Mémoire Programme + Données Un seul chemin d'accès à la mémoire Architecture des processeurs d’usage général (Pentium, 68000) Goulot d'étranglement pour l'accès à la mémoire Université de Savoie 72 Unité de mémorisation Architecture Harvard Mémoire Programme CPU Mémoire Données Séparation des mémoires programme et données Meilleure utilisation du CPU Chargement du programme et des données en parallèle Université de Savoie 73 Unité de mémorisation Accès mémoire multi-port Mémoire Programme + Données CPU Mémoire Données Plusieurs bus de données Accès simultané à plusieurs données Combiné avec mémoire multi-accès (plusieurs accès à la même mémoire en un cycle) mémoire multi-blocs (accès simultané à deux blocs de mémoire distincts) Exemple du TMS320C54xx : 1 bus programme (P) 2 bus de lecture des données (C et D) 1 bus d’écriture des données (E) 74 Unité de mémorisation Exemple du TMS320C5416 Program A/D Bus (P) Internal Data Read A/D Bus (D) Memory Data Read A/D Bus (C) Ext’l Mem I/F A External D Memory Data Write A/D Bus (E) Internal: Up to 4 accesses / cycle External: 1 access / cycle up to 8M words program Exemple du TMS320C54xx : 1 bus programme (P) 2 bus de lecture des données (C et D) 1 bus d’écriture des données (E) Université de Savoie 75 Unité de mémorisation Exemple du TMS320C5416 Université de Savoie 77 Unité de mémorisation Exemple du TMS320C5416 Program Data ROM ROM SARAM DARAM P Bus Ext’l Mem I/F D Bus C Bus A D E Bus Université de Savoie 78 Unité de mémorisation Cache d'instructions DSP cache d’instructions Mémoire Programme + Données CPU Cache = mémoire associative rapide Contient les dernières instructions exécutées Utile en cas de boucle Mémoire Données Accès aux instructions sans accès en mémoire programme Libère le bus pour des données Pas appliqué aux données Problème de validation du temps réel Université de Savoie 79 Unité de mémorisation Bus externes Boitier du DSP Mémoire Programme + Données CPU Mémoire Données MUX Transfert entre les bus internes et externe par multiplexage temporel Limitation du nombre de broches Réduction des coûts Diminution des performances lors des accès au bus externe 80 Unité de mémorisation Accès Direct à la Mémoire : DMA Mémoire Programme + Données CPU Mémoire Données interruptions DMA configuration Accès DMA : entrées-sorties vers la mémoire interne indépendant du CPU et des bus internes Système d'interruptions "données reçues"/"données transmises" 81 Unité de mémorisation DMA et buffer ping-pong DSP McBSP2 CAN McBSP2 DRR DXR DMA4 PING IN 31 PONG IN 2 CNA DMA5 PING OUT 1 Traitement Buffers en mémoire PONG OUT 2 Buffers en mémoire Université de Savoie Source: Texas Instruments C5000 DSP Teaching Kit82 Unité de mémorisation Mémoire interne sur les C54x Capacité en mémoire interne de différents modèles C54x Découpage en blocs Plusieurs types de RAM incluse sur le chip 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 DARAM découpée en blocs Accès simultané à deux blocs de mémoire différents 2x2=4 accès par cycle en théorie (en réalité limité par le reste de l'architecture) sources : "TMS320C54x DSP Functional Overview", SPRU307A, Texas Instrument "TMS320VC5416 DSK Reference Technical", Spectrum Digital 83 Unité de mémorisation Adressage indirect : *ARx (1) MPY L’instruction contient un numéro de registre auxiliaire ARx qui contient l’adresse en mémoire ou se trouve la donnée Analogue aux pointeurs en C Possibilité de modifier la valeur du registre *AR4, *AR3, A ; Multiplication de la donnée à l’adresse contenue dans AR4 ; par celle pointée par AR3 et stockage du résultat en A ; On remarque l’accès simultané à deux données ; A ← dm(AR4) × dm(AR3) Université de Savoie 84 Unité de mémorisation Adressage indirect : exemple (3) Option Syntax Action No Modification *ARn no modification to ARn Increment / Decrement *ARn+ *ARn- post increment by 1 post decrement by 1 Indexed *ARn+0 *ARn-0 post increment by AR0 post decrement by AR0 AR0 Circular *ARn+% *ARn-% *ARn+0% *ARn-0% post increment by 1 - circular post decrement by 1 - circular post increment by AR0 - circular post decrement by AR0 - circular BK Bit-Reversed *ARn+0B *ARn-0B post inc. ARn by AR0 with reverse carry post dec. ARn by AR0 with reverse carry Pre-modify *ARn (lk) *+ARn (lk) *+ARn (lk)% *+ARn *(ARn+LK), ARn unchanged *(ARn+LK), ARn changed *(ARn+LK), ARn changed - circular pre-increment by 1, during write only *(lk) 16-bit lk is used as an absolute address Université de Savoie See Absolute Addressing Absolute Affected by: BK, AR0 AR0 (=FFT size/2) BK 85 Unité de mémorisation ARAU (Unité d’adressage indirect) Registres d'adressage Unités de calcul spécialisées Ecriture sur les bus d'adresse des bus C, D et E 86 Unité de mémorisation Buffer linéaire Chaque nouvel échantillon donne lieu au déplacement de l’ensemble des données du buffer, l’adresse du nouvel échantillon est toujours la même. Time n Time n+1 Time n+2 Time n+3 x(n) x(n-1) x(n-2) x(n-3) x(n+1) x(n) x(n-1) x(n-2) x(n+2) x(n+1) x(n) x(n-1) x(n+3) x(n+2) x(n+1) x(n) Université de Savoie 87 Unité de mémorisation Adressage circulaire Exemple : stockage des échantillons d’entrée dans un filtre FIR. Time n Time n+1 Time n+2 Time n+3 x(n-1) x(n) x(n-3) x(n-2) x(n-1) x(n) x(n+1) x(n-2) x(n-1) x(n) x(n+1) x(n+2) x(n+3) x(n) x(n+1) x(n+2) Chaque nouvel échantillon donne lieu à l’écriture d’une donnée. Cette adresse est calculée par le générateur d’adresse. Université de Savoie 88 Unité de mémorisation MMR : Memory Mapped Registers Addressing MMRs are in page 0 of data memory. They can be accessed by some specific MMR instructions allowing simple access to page 0. In these cases DP, SP and CPL are ignored Example : STM (STore to Memory-mapped register): Stores an immediate value to the specified MMR or Scratch memory address. 0000h MMRs 0060h 007Fh Scratch Tip: use the .mmregs directive to allow MMR names to be interpreted as addresses Université de Savoie 89 Unité de mémorisation Memory Mapped Registers Name Addr. (Hex) Description Name Addr. (Hex) Description IMR 0000 Interrupt Mask Register AR0 0010 Address Register 0 IFR 0001 Interrupt Flag Register AR1 0011 Address Register 1 ----- 2-5 Reserved AR2 0012 Address Register 2 ST0 0006 Status 0 Register AR3 0013 Address Register 3 ST1 0007 Status 1 Register AR4 0014 Address Register 4 AL 0008 A accumulator low (A[15:00]) AR5 0015 Address Register 5 AH 0009 A accumulator high (A[31:16]) AR6 0016 Address Register 6 AG 000A A accumulator guard (A[39:32]) AR7 0017 Address Register 7 BL 000B B accumulator low (B[15:00]) SP 0018 Stack Pointer Register BH 000C B accumulator high (B[31:16]) BK 0019 Circular Size Register BG 000D B accumulator guard (B[39:32]) BRC 001A Block Repeat Counter T 000E Temporary Register RSA 001B Block Repeat Start Address TRN 000F Transition Register REA 001C Block Repeat End Address PMST 001D PMST Register ------- 01E-01F Reserved Note: XPC and Peripheral MMR locations are device dependent 90 Chapitre 3 : Les unités spécifiques des DSP 3.1 3.2 3.2 3.3 3.4 Architecture générale et objectifs Unité de commande Unité de traitement Unité de mémorisation Performance / Consommation Université de Savoie 91 Performance / Consommation Consommation énergétique Filtrage numérique FIR: C549 C6201 200MHz, 2.5V ADSP-21160 100MHz, 3.3V ZSP16401 200MHz, 1.8V DSP16210 100MHz, 2.5V 100MHz, 2.5V C6701 167MHz, 1.8V 92 Performance / Consommation Mesures des performances MFLOPS Million Floating–Point Operation Per Second Mesure le nombre d’opérations arithmétiques à virgule flottante que le DSP à virgule flottante peut réaliser en une seconde MOPS Million Operation Per Second Mesure le nombre total d’opérations (calcul, accès DMA, transferts, etc.) que le DSP peut réaliser en une seconde MIPS Million Instructions Per Second Mesure le nombre de codes machine (instructions) que le DSP peut réaliser en une seconde MMACS Million of MAC per Second Mesure le nombre d’opérations MAC (Multiply+Accumulate) que le DSP peut réaliser en une seconde MBPS Mega-Bytes Per Second Mesure la bande passante d’un bus particulier ou d’un dispositif d’E/S Université de Savoie 93 Performance / Consommation Panorama des DSP (2) Université de Savoie 94 Chapitre 4 : Le DSP TMS320C5416 4.1 L’architecture 4.2 L’organisation mémoire Université de Savoie 95 L’architecture Diagramme bloc du TMS320C5416 (1) Université de Savoie 96 L’architecture Diagramme bloc du TMS320C5416 (2) Program/Data ROM 16K Words Program/Data RAM 128K Words JTAG Test/ Emulation Control Bus externe MUX D(15-0) Mémoire interne Program/Data Buses Timer A(23-0) MAC 17 x 17 MPY ALU 40-Bit ALU 40-Bit Adder CMPS Operator (VITERBI) RND, SAT EXP Encoder Ch 2 Shifter Accumulators 40-Bit ACC A Ch 3 Muxed GP I/O Ch 0 Ch 1 Ch 4 Ch 5 Addressing Unit 8 Auxiliary Registers Peripheral Bus CPU40-Bit ACC B 40-Bit Barrel (-16, 31) DMA 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 Université de Savoie Entrées Sorties 97 L’architecture Diagramme bloc du TMS320C5416 (3) 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) MAC 17 x 17 MPY ALU 40-Bit ALU 40-Bit Adder CMPS Operator (VITERBI) RND, SAT EXP Encoder Ch 2 Shifter Accumulators 40-Bit ACC A Ch 3 40-Bit Barrel (-16, 31) Génération d’adresses 40-Bit ACC B DMA Muxed GP I/O Ch 0 Ch 1 Ch 4 Ch 5 Addressing Unit 8 Auxiliary Registers Peripheral Bus 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 Université de Savoie Entrées Sorties 98 Structure interne du TMS320C54x Source : Texas Instruments TMS320C54x DSP Reference Set Vol 1 : CPU and Peripherals Unité de controle Génération d'adresses programme Génération d'adresses données Bus P programme Bus C / D lecture données Bus E écriture données Université de Savoie 100 Registres ALU Shifter MAC Viterbi Chapitre 4 : Le DSP TMS320C5416 4.1 L’architecture 4.2 L’organisation mémoire Université de Savoie 102 L’organisation mémoire Les types de mémoires L’architecture « Harward Modifiée » du DSP lui donne donc une organisation autour de deux types de mémoire : De la mémoire pour le programme De la mémoire pour les données Ces types de mémoire seront physiquement de la ROM ou de la RAM (DARAM, SARAM…). Selon la version du circuit, le type (ROM, RAM) et la taille de la mémoire intégrée dans le circuit diffère. Université de Savoie 103 L’organisation mémoire Quantité et type de mémoire programme Université de Savoie 104 L’organisation mémoire Quantité et type de mémoire données Université de Savoie 105 L’organisation mémoire Type de mémoire Chaque DSP possède donc une certaine quantité de RAM à double accès (DARAM), de la RAM à simple accès (SARAM) et de la ROM interne. La RAM est généralement réservé aux données et la ROM au programme mais on trouve beaucoup d’exception à cette règle. Université de Savoie 106 L’organisation mémoire Mémoire Programme (1) La zone de la mémoire programme de l’adresse 0 à 13FFh , sera située à l’extérieur du circuit si le bit OVLY (Overlay) est mis à 0. Lorsque ce bit est à 1 la zone 80h à 13FF (4992 mots) est située en mémoire interne. Elle est constitué de RAM à double accès commune à l’espace de mémoire donnée. Dans ce cas 0 à 7Fh est interdit. Lorsque la zone est commune aux 2 espaces, cela signifie qu’elle peut contenir aussi bien des instructions que des données : on se sert de cette possibilité plus particulièrement lorsque l’on souhaite faire la mise à jour dynamique d’un programme préalablement chargé en mémoire. L’organisation mémoire Mémoire Programme (2) De 1400h à 8FFFh (31 Kmots) se trouve une zone de mémoire adressable à l’extérieur du circuit. La zone de 9000h à FFFFh (28Kmots) pourra être de la ROM interne si la broche MP/MC =0, ou de la ROM externe si la broche est à1. Dans les 2 cas, la zone située de FF80h à FFFFh (128 mots) est réservé aux vecteurs d’interruption. 108 L’organisation mémoire Mémoire de données Cet espace comporte une zone de RAM à double accès de 0 à 13FFh (5Kmots) dont 96 mots, de l’adresse 0 à 5 Fh réservés au stockage des registres mappés en mémoires et une zone de mémoire de travail de 60h à 7Fh. La mémoire situé de 80h à 13FFh pourra, comme nous l’avons vu précédemment, être partagée par l’espace programme (OVLY=1). La zone suivant de 1400h à E000h (50Kmots) sera située à l’extérieur du circuit. Si DROM est à 0, la mémoire de l’adresse E000h à FFFFh sera accessible à l’extérieur, ce sera de la ROM interne si DROM=1 Chapitre 5 : Un outil de développement logiciel Code Composer Studio 5.1 L’interface et la compilation 5.2 Les librairies Université de Savoie 110 L’interface Code Composer Studio 1. Introduction Chaine de compilation : exemple de CCS V3.3 Program.c *.asm, *.c module.h Module.h54 program.cdb Generate programcfg.h54 Compile or Assemble program.obj *.obj Programcfg_c.c programcfg.s54 Programcfg.h Assemble Compile programcfg.obj programcfg_c.obj programcfg.cmd program.cmd Link program.out 112 1. Introduction Emulateur JTAG HOST TARGET CCS JTAG Interface JTAG Emulator DSP Target JTAG est un outil puissant pour faire du debug logiciel bas niveau. Son implementation demande une carte équipée d’un émulateur JTAG. Celui-ci est parfois jumelé avec la connectivité USB qui alimente la carte. Sur le starter kit DSK5416, l’émulateur JTAG est intégré : chargement du code, execution en pas à pas, breakpoint, visualisation de la mémoire… 113 L’interface et la compilation Chaîne de compilation (3) projet.pjt : fichier contenant l’ensemble des options du projet et qui fourni le lien vers tous les fichiers que contient le projet. program.c : Programme source en langage C contenant la fonction main(). Nous pouvons aussi avoir d’autres fichier.c pour les fonctions utilisateur. program.asm : Programme source en assembleur contenant la fonction main(). Nous pouvons aussi avoir d’autres fichier.asm pour les fonctions utilisateur. header.h : Fichier header pour les déclaration des fonctions ou variables du langage C utilisées dans le projet. Université de Savoie 114 L’interface et la compilation Chaîne de compilation (4) header.h54 : Fichier header pour les déclaration des fonctions ou variables assembleur utilisées dans le projet. librairie.lib : Librairie compilée. Ce genre de fichier est souvent donné par le constructeur pour fournir des fonctions utilisateurs spécifiques pour son composant. program.obj : Fichier objet. C’est un fichier compilé depuis une fichier assembleur ou un fichier C. command.cmd: Fichier de commande. Indispensable pour le linker afin qu’il définisse l’emplacement des variables et du code en mémoire. L’interface et la compilation Chaîne de compilation (5) Fichier généré par la chaine de compilation program.out : C’est le programme exécutable pour une cible spécifique. Il s’agit du code chargé en mémoire. program.lst : Fichier listing, il s’agit d’un fichier où sont superposés le code en C, le code assembleur généré, le code machine généré, et les adresses mémoires utilisées pour chaque instruction. program.map : Fichier mapping, il s’agit d’un fichier résumant toutes les quantités et les zones mémoires utilisées. >> Document d’exemples de code L’interface et la compilation Outils de débogage Type d’outils Emulateur Boundary-scan (JTAG) Communique avec le DSP à grande vitesse Capable de simuler/enregistrer en temps-réel l’état interne exact du DSP Protocole intégré au sein du processeur Interrompt le DSP pour accéder à l’information DSP Emulateur ou IDE Contrôleur JTAG Définition de breakpoints et modification des variables Récupération des données depuis la mémoire du DSP Opérations Interruption et relance de l’exécution Chargement du code Breakpoints Accès en lecture/écriture Visualisation et modification du contenu mémoire Registres internes 117 L’interface et la compilation Affichage du code désassemblé #define N 256 short inputData[N]; short outputData[N]; void toto() { int i; for (i=0; i<N; i++) { outputData[i] = inputData[i]; } } Compilation et édition des liens puis affichage du code désassemblé « Mixed Source/ASM » Chapitre 5 : Un outil de développement logiciel: Code Composer Studio 5.1 L’interface et la compilation 5.2 Les librairies Université de Savoie 119 Les librairies Avantages d'une librairie Il existe plusieurs librairies : CSL : Chip support Library, fourni par le constructeur de composant BSL : Board support Library fourni par le constructeur de la carte de développement. Librairies spécialisées : DSPLIB,IMGLIB… Il s’agit de faire une abstraction du matériel à travers une API logicielle (Application Programmable Interface). Ces interfaces logicielles sont pilotées par une interface graphique dans le cas du CSL et permettent : un temps de développement réduit une programmation de plus haut niveau Elles sont presque indispensables pour compenser la complexité des processeurs actuels. Université de Savoie 120 Les librairies Exemple : Board Support Library Cas du TP 2 sur DSP TMS320 Ces fonctions font parties des librairies de la carte (Board Support Library) >> Voir C:\CCStudio_v3.1\docs\hlp\C5416DSK.HLP Université de Savoie 121 Les librairies Exemple : Chip Support Library Université de Savoie 122 Les librairies Exemple : DSPLIB Cette librairies est un support pour le calcul. Elle est La library DSPLIB est composée de 3 parties Déjà programmée Optimisée Utilisable depuis le langage C Un fichier header : dsplib.h Un fichier objet (54xdsp.lib) comportant le code compilé des fonctions déclarées dans dsplib.h Un fichier source 54xdsp.src permettant la customisation des fonctions par l’utilisateur. Exemple : short cfft8 (DATA *x, DATA scale); short fir(DATA *x, DATA *h, DATA *r,DATA **d, ushort nh, ushort nx); Les librairies Vue synoptique des modules utiles User Application Logiciel applicatif Abstraction du matériel et système d’exploitation DSP/BIOS™ Kernel/Scheduler CPU Timer EMIF Matériel USB/ JTAG CSL Dsplib Imglib BSL Drivers McBSP DSP CODEC LED Boutons Carte DSK Université de Savoie 124