Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Les unités spécifiques des DSP
Processeurs de traitement du signal (DSP) Les unités spécifiques des DSP
2
Les unités spécifiques des DSP
Architecture générale et objectifs Unité de commande Unité de traitement Unité de mémorisation Performance / Consommation
3
Architecture générale et objectifs
Processeur CPU Unité de commande Unités de traitement Bus internes Mémoire interne Unité de Communication Périphériques et mémoire externes
4
Architecture générale et objectifs
Unité de commande Rôle : Permet de séquencer le déroulement des instructions Objectifs pour être performant Pilotage de chaque module du DSP indépendamment autres Gestion efficace des boucles Encodage des instructions : Minimiser la taille des instructions Encoder le maximum de parallélisme les uns des
5
Architecture générale et objectifs
Unité de traitement Rôle : Assure les traitements nécessaires à l’exécution des instructions Objectifs pour être performant Réaliser efficacement les traitements typiques 1 MAC par cycle 1 décalage de N bits (droite ou gauche) en 1 cycle
6
Architecture générale et objectifs
Unité de mémorisation et objectifs Rôle : Mémoire Objectifs de programme de donnée pour être performant Alimenter efficacement en données l’unité de traitement afin de ne Gérer pas la ralentir efficacement les pointeurs d’adresse
7
Architecture générale et objectifs
Unité de communication Rôle : Contrôle les accès aux données, aux instructions externes ou à d'autres processeurs Objectifs pour être performant Limiter l’utilisation des ressources processeur lors de ces accès.
8
Unité de commande œuvre : gestion des boucles matérielles
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 Un pipeline œuvre : Une gestion des boucles matérielles
9
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 Full Pipeline : Toutes les unités matérielles du DSP sont en activités P F D A R X
10
Unité de commande Séquentiel vs pipeline F1 - D1 R1 - X1 CPU - - F5 F4
MemP Instruction Instruction 1 Instruction 2 - Fetch F1 F2 Decode D1 D2 CPU Read R1 R2 - MemD Execute X1 X2 - MemD F5 D4 R3 X2 F4 MemP Fetch F1 F2 F3 F4 F5 … … … D3 Decode D1 D2 D3 D4 D5 … … Read R1 R2 R3 R4 R5 … CPU R2 MemD Execute X1 X2 X3 X4 X5 X1 MemD
11
Unité de commande Exemple de rupture de séquence
Code à exécuter : 1: 2: 3: 4: 5: 6: Instr1 Si B==1 Alors GOTO 10: Instr3 Instr4 Instr5 Instr6 … 10: 11: 12: Instr10 Instr11 Instr12 Etat du pipeline avec prédiction que B≠1: Si prédiction incorrecte (B=1) Si prédiction correcte (B≠1) F F1 F2 F3 F4 F5 F10 F11 F12 F F1 F2 F3 F4 F5 F6 … … D D1 D2 D3 D4 ! D10 D11 D D1 D2 D3 D4 D5 D6 … R R1 R2 R3 ! ! R10 R R1 R2 R3 R4 R5 R6 X X1 X2 ! ! ! X X1 X2 X3 X4 X5 Evaluation du prédicat (B==1) => rupture de séquence Vidange du pipeline: Perte de 3 cycles Evaluation du prédicat (B==1) => pas de rupture
12
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 F1 F2 conflit conflit F3 F4 ! ! Decode D1 D2 ! ! D3 D4 ! Read R1 R2 ! ! R3 R4 Execute X1 X2 ! ! X3 Conflit pour l’accès mémoire entre Fetch et Read Les lectures de données R1/R2 empêchent les chargements d'instruction Réductions des performances d'au moins 50% F3/F4 Problème réglé si Mémoire multi-accès Programmes et Données dans des mémoires différentes (ou multi-bloc)
13
Unité de commande Effets du pipeline lors du débogage Watch Window A 1
Code à exécuter : 1: 2: 3: A=1 B=1 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) … NOP … Watch Window A ??? B C 10: 11: 12: 13: 14: … A=2 B=2 C=2 D=2 E=2 Watch Window A !!! B C F F10 F11 F12 F13 F14 … … … D D10 D11 D12 D13 D14 … … R R10 R11 R12 R13 R14 … X A=2 B=2 C=2 D=2 E=2 Watch Window A B C
14
Unité de commande Utilisation des ressources par le pipeline Etage
Description Partie hardware utilisée P Generate program address PC F Get Opcode Program memory D Decode instruction Decoder A Generate read address ARs, ARAU R Read Operand Data memory Generate write address ARs, ARAU X Execute instruction MAC, ALU Write result Data Memory PC = Program Counter ARAU = Auxiliary Register Arithmetic Unit AR = MAC= ALU = Adresse Register Multiply ACcumulate Arithmetic Logic Unit
15
Unité Retards de commande 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 branchement non prévu appel de sous-programme interruption (vidange du pipeline)
16
boucles de petite taille
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 de la boucle la gestion de la fin Exemple boucle mono-instruction MOVE MAC DEC JNE #16,B (R0)+,(R4)+,A B LOOP RPT MAC #16 (R0)+,(R4)+,A LOOP Boucle logicielle Boucle matérielle
17
yn b(i) xn i yn b(i) xn i Unité de commande Y
Exemple : Calcul d’un filtre RIF N 1 yn b(i) xn i i 0 N 1 i 0 yn b(i) xn i Gestion matérielle des boucles : Unité de génération d’adresses programme Unité MAC + Chargement simul de l’instruction et opérandes Unité MAC matérielle tané de l’instruction et des Y B[i] X[i] A=0; for (i=0; i<N; ++i) { SSBX FRCT STM #B, AR2 STM #X, AR3 STM #Y, AR4 RPTZ A, #N (x1) MAC *AR2+,*AR3+, A (xN) STH A, *AR (x1) A = A + B[i] * X[i]; } Y = A >> 15; d’adresses données Unité de génération Code C Equivalent ASM
18
Unité de commande Optimisation du compilateur C
Code C 813D toto Pas d’optimisation 813D PSHM 11h Sauvegarde AR1 (save-on-entry) 813E FRAME -1 813F SSBX SXM Manipulation de nombres signés LD #100h,0,A A <= 256 (100h) ST #0h,0h Met la valeur initiale 0 de i dans pile[0h] SUB 0h,A A <= A - pile[0h] BC h,ALEQ Si A<=0, alors aller à fin: debut : MVDK 0h,11h Copie pile[0h] dans AR1 LD *AR1(817),A Charge in[AR1] dans A 814B STL A,*AR1(1073) Stocke A dans out[AR1] 814D LD #100h,0,A A <= 256 (100h) 814F ADDM 1h,0h pile[0h] <= pile[0h] + 1 SUB 0h,A A <= A - pile[0h] BC h,AGT Si A>0 alors reboucler sur debut: fin: FRAME 1 POPM 11h Restaure de AR1 FRET Retour de la fonction #define N 256 short out[N]; void toto() int i; for (i=0; i<N; i++) out[i]=in[i] ; } short in[N]; { { } Adresses des tableaux _inputData = 331h = 817 _outputData = 431h = 1073 8033 toto Optimisation au niveau fonction (-o2) STM 431h,13h AR3 STM 331h,12h AR2 RPT #0ffh Répéter 256=255+1 fois MVDD *AR2+,*AR3+ *AR3 <= *AR2 NOP 803A NOP 803B FRET Université de Savoie Prise en compte des capacités matérielles du DSP
19
Unité de commande Unité de contrôle du C50 • pile de 8 * 16 bits
• 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
20
exposant. Unité de traitement Il existe deux types de 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 exposant. codés sous la forme mantisse
21
Unité de traitement Xmax] des recadrages 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 des recadrages et
22
Efficacité énergétique
Unité de traitement DSP virgule fixe (2) Architecture : Opérateurs plus simples Largeur des données Efficacité énergétique moins importante b : 16 bits plus importante :consommation Processeur moins cher (surface du circuit moins importante) rapide (seulement pour les calculs à virgule fixe) Marché : applications grand public Xx % des ventes en xx TMS320C62x : TMS320C64x : TMS320C62x : TMS320C64x :
23
Unité de traitement DSP virgule flottante (1) : 1500 dB pour 32 bits
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 grande portabilité : plus
24
Unité de traitement DSP virgule flottante (2) : Architecture :
Largeur des données : 32 bits Opérateurs plus complexes (gestion de la mantisse et l’exposant) Processeur plus cher et consommant plus de Marché Applications nécessitant une grande dynamique audionumérique : Applications avec des faibles volumes
25
Unité de traitement yn-1 complexe Fonctions typiques
Quelques fonctions à réaliser en 1 cycle d’horloge : Filtrage, convolution y = y + x.h : MAC (multiplication-accumulation) Adaptation yn = yn-1 + x.h : MAD (multiplication-addition) FFT, multiplication xr = xr.wr - xi.wi xi = xr.wi + xi.wr complexe
26
h(i).x(n i) Filtre numérique FIR sur N points
Unité de traitement Exemple Filtre numérique FIR sur N points N 1 h(i).x(n i) i0 y(n) x(n) h(n) D x + Cellule D D D x(n) x x x x h(0) h(1) h(2) h(3) h(4) y(n) + + + Objectif : traitement d’une cellule par cycle
27
Unité de traitement registre (P register) bmultiplication =
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é registre (P register) dans un Largeur des opérandes source : b résultat : bmultiplication = 2.b Unités Unité de saturation ou d’arrondi spécifiques de manipulation de bit, Viterbi, ...
28
Additionneur indépendant de
Unité de traitement Eléments de l’unité de traitement (2) U.A.L. Opérations arithmétiques : addition, incrémentation, négation Opérations logiques : and, or, not soustraction, 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
29
Unités de stockage de l’unité de traitement
Éléments de l’unité de traitement (3) Unités de stockage de l’unité de traitement Registres Stockage opérandes des opérandes sources ou des résultats intermédiaires d’accumulation 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 ACCH ACCL bgarde 2.b
30
Unité de traitement bmult badd Structure de l’unité de traitement MAC
P bmult MAC + badd Accumulateur Sat /Arr
31
Unité de traitement Exemple : TMS320C54x bits barillet de Viterbi DB
PB DB CB DB CB EB CB DB Université de Savoie multiplieur 16*16 bits Op source 1 : registre T Op source 2 : mémoire Op destination : additionneur 40 bits ALU (40 bits) registres d ’accumulation 40 bits registre à décalage en barillet unité dédiée à l ’algorithme de Viterbi
32
Unité de mémorisation xn-k xn-k-1 xn-k
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 x h(2) + TAP D D D x(n) x x x x h(0) h(1) h(3) h(4) y(n) + + +
33
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 périphérique obtempère sur le bus données 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 Périphérique CPU BUS Adresses : sélection du périphérique et localisation d’une donnée Données : valeur de la donnée à échanger Contrôle : lire / écrire / haute impédance adresses données contrôle CPU Périphérique
34
Unité de mémorisation CPU Mémoire Accès mémoire pour un calcul
1 2 Mémoire 4 3 Charger une instruction (1) (2) (3) (4) depuis la mémoire Charger les opérandes depuis la mémoire Effectuer les calculs Stocker le résultat en mémoire
35
Unité de mémorisation 68000) Architecture Von Neuman à la mémoire
Programme + Données CPU BUS Un seul chemin d'accès à la mémoire Architecture des processeurs d’usage général 68000) (Pentium, Goulot d'étranglement pour l'accès à la mémoire
36
Unité de mémorisation Architecture Harvard programme et données
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
37
Unité de mémorisation de lecture des données (C et D)
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 Combiné avec données mémoire multi-accès (plusieurs accès à la même cycle) mémoire en un mémoire multi-blocs (accès simultané à deux blocs de mémoire distincts) Exemple du TMS320C54xx : 1 2 bus bus bus programme (P) de lecture des données (C et D) d’écriture des données (E)
38
Unité de mémorisation Exemple du TMS320C5416 Internal Memory External
Program A/D Bus (P) Data Read A/D Bus (D) Ext’l Mem I/F A Data Read A/D Bus (C) D Data Write A/D Bus (E) Internal: Up to 4 accesses / cycle External: 1 access / cycle up to 8M words program Exemple du TMS320C54xx : programme (P) de lecture des données 1 2 bus bus bus (C et D) d’écriture des données (E)
40
Unité de mémorisation Exemple du TMS320C5416 Université de Savoie
41
Unité de mémorisation Exemple du TMS320C5416 Ext’l Mem I/F Program ROM
Data ROM SARAM DARAM P Bus A Ext’l Mem I/F D Bus D C Bus E Bus
42
Unité de mémorisation Utile en cas de boucle
Cache d'instructions DSP cache d’instructions CPU Mémoire Programme + Données Mémoire Données Cache = mémoire associative rapide Contient les dernières instructions exécutées Utile en cas de boucle Accès aux instructions sans accès en mémoire Libère le bus pour des données Pas appliqué aux données Problème de validation du temps réel programme
43
Unité de mémorisation Bus externes Boitier du DSP Transfert entre
Mémoire Programme + Données CPU Mémoire Données MUX Transfert entre les bus Limitation du nombre de broches internes et externe par multiplexage temporel Réduction des coûts Diminution des performances lors des accès au bus externe
44
Unité de mémorisation Accès Direct à la Mémoire : DMA
CPU Mémoire Programme + Données Mémoire Données interruptions DMA configuration Accès DMA : entrées-sorties vers la mémoire bus internes interne indépendant du CPU et des Système d'interruptions "données reçues"/"données transmises"
45
Unité de mémorisation 1 3 2 DMA et buffer ping-pong DSP CAN McBSP2
DRR DSP McBSP2 DXR CNA DMA4 DMA5 PING IN 1 PING IN PING IN 3 PING OUT PING 1 OUT Traitement PONG IN PONG IN 2 PONG OUT PONG 2 OUT Buffers en mémoire Buffers en mémoire
46
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 x2=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
47
Unité de mémorisation Adressage indirect : *ARx (1)
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 MPY *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)
48
Unité de mémorisation Adressage indirect : exemple (3) Option Syntax
Université de Savoie Option Syntax Action Affected by: No Modification *ARn Increment / *ARn+ Decrement *ARn- no modification to 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 BK, AR0 Bit-Reversed *ARn+0B *ARn-0B post inc. ARn by AR0 with reverse carry post dec. ARn by AR0 with reverse carry AR0 (=FFT size/2) 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 BK Absolute *(lk) 16-bit lk is used as an absolute address See Absolute Addressing
49
(Unité d’adressage indirect)
Unité de mémorisation ARAU (Unité d’adressage indirect) Unités de calcul spécialisées Registres d'adressage Ecriture sur les bus d'adresse des bus C, D et E
50
Unité de mémorisation Buffer linéaire Time n Time n+1 Time n+2 Time
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)
51
Unité de mémorisation filtre FIR. d’adresse. Adressage circulaire
Exemple : filtre FIR. stockage des échantillons d’entrée dans un Time n Time n+1 Time n+2 Time n+3 x(n-1) x(n-1) x(n-1) x(n+3) x(n) x(n) x(n) x(n) x(n-3) x(n+1) x(n+1) x(n+1) x(n-2) x(n-2) x(n+2) x(n+2) Chaque nouvel échantillon donne lieu à l’écriture d’une donnée. Cette adresse est d’adresse. calculée par le générateur
52
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 Tip: use the .mmregs directive to allow MMR names to be interpreted as addresses 0060h 007Fh Scratch
53
Unité de mémorisation Memory Mapped Registers 0019
Name Addr. (Hex) Description Name Addr. (Hex) Description IMR IFR ----- 0000 0001 2 - 5 Interrupt Mask Register Interrupt Flag Register Reserved AR0 AR1 AR2 AR3 AR4 AR5 AR6 AR7 0010 0011 0012 0013 0014 0015 0016 0017 Address Register 0 Address Register 1 Address Register 2 Address Register 3 Address Register 4 Address Register 5 Address Register 6 Address Register 7 ST0 ST1 0006 0007 Status 0 Register Status 1 Register AL AH AG BL BH BG 0008 0009 000A 000B 000C 000D A accumulator low (A[15:00]) A accumulator high (A[31:16]) A accumulator guard (A[39:32]) B accumulator low (B[15:00]) B accumulator high (B[31:16]) B accumulator guard (B[39:32]) SP BK 0018 0019 Stack Pointer Register Circular Size Register BRC RSA REA 001A 001B 001C Block Repeat Counter Block Repeat Start Address Block Repeat End Address T TRN 000E 000F Temporary Register Transition Register PMST 001D 01E-01F PMST Register Reserved Note: XPC and Peripheral MMR locations are device dependent
54
Performance / Consommation
Consommation énergétique Filtrage numérique C549 FIR: 100MHz, C6201 200MHz, DSP16210 ZSP16401 2.5V 1.8V 3.3V 2.5V ADSP-21160 100MHz, 2.5V C6701 167MHz, 1.8V
55
Performance / Consommation
Mesures des performances Mesure le nombre d’opérations MFLOPS Million Floating–Point arithmétiques à virgule flottante que le en une seconde Operation Per Second DSP à virgule flottante peut réaliser Mesure le nombre total d’opérations Per Second le DSP peut réaliser en une seconde Million Operation MOPS (calcul, accès DMA, transferts, etc.) que Mesure le nombre de codes machine Per Second en une seconde Million Instructions MIPS (instructions) que le DSP peut réaliser Mesure le nombre d’opérations MAC per Second réaliser en une seconde Million of MAC MMACS (Multiply+Accumulate) que le DSP peut MBPS Mega-Bytes Mesure la bande passante d’un bus Per Second particulier ou d’un dispositif d’E/S
56
Performance / Consommation
Panorama des DSP (2)
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.