Processeurs de Traitement Numérique du Signal (DSP) Processeurs de Traitement Numérique du Signal (DSP) I. II. III. IV. Olivier Sentieys IRISA/ENSSAT Lannion Université de Rennes I [email protected] http://www.irisa.fr/R2D2 Introduction Architectures MAC/Harvard Evolutions des DSP Flot de développement Merci à Daniel Ménard pour son support Exemples d’applications I. Introduction 1. 2. 3. 4. Contexte applicatif Caractéristiques algorithmiques Solutions architecturales Marché des DSP Téléphonie cellulaire Communications sans-fil Contrôle de moteur Modems Voix sur Internet Audio grand public Navigation Vidéoconférence Jouets, consoles vidéo Synthèse musicale, effets Médical ARCHI’05 - 4 • Performances • Faible coût • Faible énergie Communications satellite Analyse sismique Sécurité Reconnaissance vocale Sonar, radar Photo et caméra numériques Débruitage, écho Anticollision … et pleins d’autres à venir Tâches élémentaires Algorithmes de TdSI1 Compression de signal (parole, audio, vidéo) Filtrage Modulation et démodulation Détection et correction d’erreurs Contrôle Traitements audio (e.g. réduction bruit, égalisation, annulation d’écho, conversion de fréquence) Reconnaissance vocale Synthèse de signaux ARCHI’05 - 5 1Traitement du signal et de l’image Signaux numériques o Temps et amplitude discrets o Flot de données o Scalaires, vectorielles, matricielles, … Traitement temps réel o Temps d'exécution Tex guidé par flots de données o Période d'échantillonnage Te période des sorties Tf > Tex e(t) Te s(t) ARCHI’05 - 6 Algorithme ex. s(n) = max(moy(e), s(n-1)) Tf Diversités Caractéristiques algorithmiques Complexité des algorithmes de TdSI Charge de calcul importante < 5 MOPS 10-30 MOPS Faible mesure/contrôle Compression ADSL Compression UMTS parole modemsaudio GSM Compression Imagerie vidéo médicale Format des données Application Taille des données PWM, mesures, contrôle 1 à 4 - 18 à 22 bits o Nids de boucles o Multiplications-accumulations (convolution) o Multiplications-additions (FFT, DCT, adaptation, distances, ...) > 100-1000 MOPS Elevé Précision des calculs o Virgule fixe ou flottante o Compromis coût – précision des calculs Bande passante mémoire Calculs d'adressage complexes o Gestion signal, accès image, bit-reverse (FFT), ... convertisseurs sigma-delta ARCHI’05 - 7 radio HF/VHF, radar 6 - 14 bits sonar 10 - 12 bits parole 8 - 14 bits audio 16 - 20 bits imagerie / vidéo 8 - 36 bits (par pixel) analyseurs de sang 16 - 18 bits Boucles de traitement courtes o Les instructions peuvent être placées en interne o Pas besoin de grande taille de cache (données ou instructions) ARCHI’05 - 8 Fonctions typiques de TdSI Exemple Fil Rouge Convolution, filtrage Filtre Numérique RIF sur N points o y = y + x.h : MAC (multiplication-accumulation) Adaptation (LMS) o yn = yn-1 + x.h : MAD (multiplication-addition) FFT, multiplication complexe D o xr=xr.wr-xi.wi; xi=xr.wi+xi.wr D Viterbi o a1 = x1 + x2; a2 = y1 + y2; o y = (a1>a2) ? a1 : a2 : ACS (addition-comparaison-sélection) h(0) x h(1) D x h(2) x x h(3) h(4) x y(n) Estimation de mouvement + + o sad += |xi,j - yi+u,j+v| : SAD (sum-of-absolute-difference) ARCHI’05 - 9 D x(n) + + TAP ARCHI’05 - 10 Fonctions typiques de TdSI Fonctions typiques de TdSI FFT Fast Fourier Transform Filtrage adaptatif LMS • Butterfly (DIF) X X’ = X + W.Y Y x x x x ARCHI’05 - 11 Y’ = X - W.Y W - + - + + - DLMS xn(i-1) x en ARCHI’05 - 12 + hn(i) hn-1(i) xn(i) x + y y Fonctions typiques de TdSI Solutions architecturales Estimation de mouvement Efficacité énergétique sadmin = MAXINT; mvx=0; mvy=0; for (u=-p; u<=p; u++) for (v=-p; v<=p; v++) { sad = 0; for (i=0; i<N; i++) { for (j=0; j<N; j++) { sad = sad + ABS[BR(i,j)-FR(i+u,j+v)] /* if (sad>=sadmin) break; */ } } if (sad<sadmin) { sadmin = sad; mvx = u; mvy = v; } } N+2p Motion Vector (u,v) • Spécialisation, parallélisme Matched Block NxN p Reference Block NxN Search Window ARCHI’05 - 13 Flexibilité 2 V DSP 3 MOPS/mW Pleiades, DART 10-50 MOPS/mW Embedded Processor 100 -1000 MOPS/mW SA110 0.4 MIPS/mW ASIC ASIP/DSP Embedded FPGA 100 ARCHI’05 - 14 PowerPC 1 MIPS/mW Reconfigurable Processor EE : MOPS / mW 10 1 Marché des DSP (1) Marché des DSP (2) Sans fils domine : 75% des revenus en 2004 Systèmes grand public : DVD, TV et radio numérique, ... Asservissement des moteurs pour les disques Multipurpose Automotive Consumer durs, ... En haut de la liste des plus fortes croissances du marché de l’industrie des semi-conducteurs 6% 3% Cellular phone 62% ARCHI’05 - 15 Wireless (other) 2% 9% Wireline (modem, xDSL) 6% Computer 6% Cellular infrastructure 5% Wirless short range 1% 14000 Flexibility • Codage vidéo MPEGx, H26x DSP Market (M$) 12000 10000 8000 6000 4000 2000 0 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 Prévisions Forward Concept Co. ARCHI’05 - 16 Marché des DSP (3) Place dans le marché des processeurs embarqués II. Architecture MAC/Harvard 1. Genèse des DSP : MAC/Harvard 2. Modélisation des générations 1 et 2 Panorama des DSP 3. Performances ARCHI’05 - 17 Architecture Von Neumann FIR sur machine Von Neumann E.g. processeurs RISC Problèmes MEMORY DATA BUS MEM. DATA REGISTER PC ADDRESS REGISTER REGISTER FILE ALU MUX Code example: multiply & accumulate r2 = r2 + #imm * r1 mov #imm,r3 mul r1,r3 add r3,r2 ⇒ 3 instructions, plus de 3 cycles d'horloge MEMORY ADDRESS BUS ARCHI’05 - 19 • Bande passante avec la mémoire • Code pour le contrôle et la gestion de l'adressage • Multiplication lente loop: mov mov mpy add mov inc inc inc dec tst jnz ARCHI’05 - 20 *r0,x0 *r1,x1 x0,y0,a a,b y0,*r2 r0 r1 r2 ctr ctr loop Data Path Exécution en N.(15 à 20) cycles Memory Architecture Harvard (1) Généralités sur les DSPs PROGRAM ADDRESS BUS Propriétés du traitement numérique du signal Conséquences sur les architectures Fonctionnement pipeline Architecture Harvard Structures de contrôle évoluées Unités de traitement spécialisées câblées Gestion d’adressage complexes Calculs intensifs et répétitifs Primitives simples DATA ADDRESS BUS PROGRAM RAM/ROM DATA BUS - B PROGRAM DATA BUS PROGRAM CONTROL AGU-A AGU-B Address Generation MULTIPLIER ALU REGISTERS ACCUMULATORS Processing Unit ARCHI’05 - 22 Unité de traitement Architecture Harvard (2) DATA BUS - A DATA BUS - B 24 Bus et mémoires données/instructions séparées Unité de traitement de type mpy-acc Registres distribués (≠ RISC register file) 24 X0 X1 Y0 Y1 Operand Registers 24 24 • Chaque module (ALU) possède ses propres registres locaux Multiplier 56 56 ALU Shifter 56 (-1, 0, +1) Accumulators 24 A (56) B (56) 56 24 56 Génération adresses efficaces (AGUs) • Modes d’adressage spéciaux : auto incr-decr, circular buffering (delay line) ... Shifter/Limiter Motorola DSP 5600x ARCHI’05 - 23 DATA RAM-B DATA BUS - A Le tout dans un environnement temps réel ARCHI’05 - 21 DATA RAM-A (-1, 0, +1) 24 in@2 in@1 24 ARCHI’05 - 24 in FIR sur DSP conventionnel Instructions complexes s’exécutant en 1 cycle T=DM(*r1+); P=T*PM(*r0+) || T=DM(*r1+); loop: acc=acc+P || P=T*PM(*r0+) || T=DM(*r1+) jnz loop; acc=acc+P || P=T*PM(*r0+); acc=acc+P II. Architecture MAC/Harvard T 1. Genèse des DSP : MAC/Harvard 2. Modélisation des générations 1 et 2 Panorama des DSP 3. Performances Program Memory MULT Data Path P Data Memory ALU ACC Exécution en N+ε cycles ARCHI’05 - 25 Processeur : modélisation Architecture Harvard de base Unité de contrôle (IP : Instruction Processor) IP : Instruction Processor, DP : Data Processor IM : Instruction Memory, DM : Data Memory • Unité fonctionnelle (UF) qui interprète les instructions et les passe à l’unité de traitement (DP) Unité de traitement (DP : Data Processor) • UF qui modifie ou transforme les données DP IP DM IM Unité de mémorisation • IM : Instruction Memory : stocke les instructions • DM : Data Memory : stocke les données traitées par le DP Unité de communication (EIU : External Interface Unit) • Contrôle les accès aux données ou instructions externes, ou à d'autres processeurs ARCHI’05 - 27 [Flynn72] [Skillicorn88] e.g. TMS320C10 ARCHI’05 - 28 Classification de E. Lee [Lee89] Architecture Harvard de base TMS320C10 (1982) • 2N+4 cycles • 2N+4 instructions! Optimisations des performances Comment améliorer l’architecture Harvard ? Transformations du diagramme d'états • réarrangement des états pour augmenter le temps de cycle • exécution en parallèle d'états (e.g. Store Results et Return State) Pipeline de l'exécution des états • mise en parallèle d'états appartenant à des instructions successives Augmentation du nombre de FU • plusieurs DP peuvent exécuter des instructions en parallèle sur des données indépendantes [Verbauwhede00] ARCHI’05 - 29 ARCHI’05 - 30 Interconnexions entre FUs Modification 1 Les interconnexions suivantes sont valables pour toutes les FUs précédentes (DP, IP, IM, DM). Autorisation de mémorisation de données dans l'IM En un cycle : fetch deux opérandes de la mémoire, exécute MAC, écriture du résultat en I/O ou mémoire • 1 - vers - 1 o une FU est connectée à une autre FU • n - vers - n o une FUi d'un ensemble de FUs est connectée à une autre FUi • 1 - vers - n o une FU est connectée à n autres FUs d'un ensemble de FUs • n - par - n o toute FUi d'un ensemble est connectée à chaque autre FUj e.g. AT&T DSP32 et DSP32C ARCHI’05 - 31 ARCHI’05 - 32 DP IP 1-vers-2 DM IM/DM Modification 2 Modification 3 DM est une mémoire multi-ports, plusieurs accès aux données par cycle Utilisable pour des mémoires internes Cache pour charger les instructions fréquentes Évite les conflits d'accès données et instructions de la modification 1 DP DM IP IM e.g. Fujitsu MB86232 (3 ports en mémoire interne) TMS320C25 : cache 1 instruction (boucles) DSP16 : cache 15 instructions ADSP-2100 : cache 16 instructions ARCHI’05 - 33 ARCHI’05 - 34 DP IP 1-vers-2 cache DM IM/DM FIR sur DSP conventionnel Deuxième génération (Modification 4) TMS320C2x (1986) Deux mémoires données DM séparées En un cycle : fetch deux opérandes et une instruction si le cycle mémoire est le même que le cycle d'instruction de base ZAC || LTD; LTD || MPY; RPTK N-1 MACD APAC || MPY; APAC; Exécution en N cycles ARCHI’05 - 35 Motorola DSP 56001 et 96002 TMS320C30, C40, C50 ADSP-2100 ARCHI’05 - 36 DP IP 1-vers-2 DM 1 DM 2 IM CORE PROCESSOR DUAL-PORTED SRAM TIMER DAG 1 DAG 2 8x4x32 8x4x24 TWO INDEPENDENT DUAL PORT BLOCKS INSTRUCTION CACHE PROCESSOR PORT ADDR DATA DATA ADDR BLOCK 0 SHARC BLOCK 1 Architecture Analog Devices JTAG DATA ADDR ADDR DATA TEST & EMULATION PROGRAM SEQUENCER EXTERNA L PORT 24 PM ADDRESS BUS ADDR BUS MUX 32 DM ADDRESS BUS 48 BUS CONNECT (PX) 48 DATA BUS MUX DM DATA BUS HOST PORT MULTIPLIER IOP REGISTERS (MEMORY MAPPED) BARREL SHIFTER 32 MULTIPROCESSOR INTERFACE PM DATA BUS 40/32 DATA REGISTER FILE Modification 5 ALU I/O PROCESSOR CONTROL, STATUS & DATA BUFFERS DMA CONTROLLER Bancs mémoire multiples Instruction multiopérandes en parallèle avec accès I/O Problème de partition des données sur un grand nombre de bancs (FFT) DP IP DM DM DM LINK PORTS (6) DM IM EIU IOM 1-vers-4 4 6 SERIAL PORTS (2) 2-vers-2 1-vers-4 6 Hitachi DSPi (6 bancs mémoire) 36 ARCHI’05 - 37 ARCHI’05 - 39 Générations Caractéristiques complémentaires Performances normalisées (BDTImark) 10000 4ème génération StareCore(300MHz) TMS320C62x (300MIPS) Carmel (300 MHz) 1000 DSP16210 (100 MIPS) 100 DSP56301 TMS320C54x (50-100MIPS) ADSP2183 (50MIPS) 2ème génération DSP56001 (13MIPS) ADSP21xx (13MIPS) TMS320C50 10 1ère • Type d’encodage, compromis consommation/efficacité Structures de contrôle 3ème génération • Boucles matérielles, branchement génération Modes d’adressage TMS320C20 (5 MIPS) TMS320C10 (2.5 MIPS) 1 1980 ARCHI’05 - 40 1982 1984 1986 Localisation des données • Modèle registre-mémoire, Load-Store Codage des instructions complexes • Stationnarité temporelle ou par les données Format des instructions 1988 1990 1992 Année 1994 1996 1998 2000 2002 ARCHI’05 - 41 [cf. Annexes] Résumé (1) Calcul Précision Bande passante mémoire Résumé (2) FUs spécialisées pour les fonctions classiques de TdSI en parallèle, MAC simple cycles Bits de garde, saturation, arrondis, multiplication 16-24 bits, addition 32-40 bits Harvard, bancs et bus adresses/données multiples ARCHI’05 - 42 Accès aux données Localité temporelle d’exécution Flots de données (streaming) Temps réel Modes d’adressage complexes Boucles matérielles (zerooverhead), caches d’instructions spécifiques Pas de cache de données, DMA puissants, mémoires SRAM internes Gestion des interruptions ARCHI’05 - 43 II. Architecture MAC/Harvard Puissance de calcul MIPS (Millions of instructions per second) • Mesure facile mais… • …peu représentatif des performances réelles 1. Genèse des DSP : MAC/Harvard 2. Modélisation des générations 1 et 2 Panorama des DSP 3. Performances o VLIW, génération des adresse MOPS (Millions of operations per second) MMACS (Millions of MAC per second) • Prise en compte de l’aspect traitement du signal • Les autres opérations ne sont pas prises en compte MOPS/W : Efficacité énergétique ARCHI’05 - 45 Métriques de performance Contenu d’un benchmark Comparaison précision - effort d’implantation Différents niveaux Précision de la métrique • Applications complète Applications Taches o Système de vidéo-conférence, émetteur/récepteur radiomobile, player MP3 ... • Taches d'une application o Codeur ou décodeur audio ou vidéo, codeur de parole, décodeur de Viterbi Cœurs d’algorithme Benchmarking • Cœurs d'algorithme o FIR, IIR, FFT, Control, .. • Opérations MMACS/MOPS MIPS o ADD, Mult/MAC, Décalage, Transfert mémoire Disponibilité … Effort d’implantation ARCHI’05 - 46 ARCHI’05 - 47 BDTImark2000 http://www.bdti.com BDTIMARK Basé sur des cœurs d’algorithme de traitement du signal o o o o o o o o o o o Filtre FIR réel, traitement par blocs Filtre FIR réel, traitement par échantillons Filtre FIR complexe, traitement par blocs Filtre adaptif LMS Filtre IIR, 2 cellules d'ordre 2 cascadées Produit de vecteurs Addition de vecteurs Recherche de la valeur maximale d’un vecteur Décodeur de Viterbi FFT 256 points Manipulation de bits Code optimisé manuellement ARCHI’05 - 48 ARCHI’05 - 49 Temps d’exécution (FFT) BDTIMARK BDTImark Zoran ZR3800x 62 Motorola - IBM PowerPC604e 333 MHz Intel Pentium 200 MHz Texas Instruments TMS320C80 Texas Instruments TMS320C541 23 Texas Instruments TMS320C52 17 Analog Device ADSP 2106x 60 MHz Texas Instruments TMS320C44 65 Texas Instruments TMS320C67xx 167 MHz Texas Instruments TMS320C31 9 Texas Instruments TMS320C3x 80 MHz Texas Instruments TMS320C209 SGS-Thomson D950-CORE Processeurs NEC µPD77015 56 Intel MMX Pentium 266 MHz Motorola DSP56166 14 ARM7 TDMI/picolo 70 MHz Motorola DSP56002 7 ARM7 TDMI 80 MHz IBM MDSP2780 15 Motorola DSP 566xx 60 MHz DSP Group OAK Motorola DSP 563xx 100 MHz 25 DSP Group PINE Lucent Technologies DSP 3207 37 Lucent technologies DSP 16xxx 100MHz Lucent technologies DSP 16xx 120MHz Lucent Technologies DSP32C 22 Analog device ADSP21xx 75 MHz Lucent Technologies DSP 1627 19 Analog Devices ADSP-21062 Texas Instruments TMS320C80 60 MHz 26 Analog Devices ADSP-2171 25 Texas Instruments TMS320C54x 100 MHz 0 Texas Instruments TMS320C62x 200 MHz 100 200 300 400 500 600 700 800 900 99 0 20 40 60 ARCHI’05 - 50 80 100 Execution Time (µs) 120 ARCHI’05 - 51 Score Coût – performance (FFT) Coût Important pour une production à fort volume • Faible coût Zoran ZR3800x Texas Instruments TMS320C541 Texas Instruments TMS320C52 o Les DSPs sont efficaces en MIPS/mW et en MIPS/mm2 o Cela se paye sur la flexibilité et la programmabilité 100000 Texas Instruments TMS320C44 Texas Instruments TMS320C31 Texas Instruments TMS320C209 NEC µPD77015 mW/MIPS Motorola DSP56166 10000 M68K $200 Motorola DSP56002 IBM MDSP2780 I286 $200 1000 I386 $300 DSP1 $150 Lucent Technologies DSP 3207 Pentium $500 100 Pentium MMX $700 Analog Devices ADSP-21062 DSP32C $250 10 Lucent Technologies DSP32C Lucent Technologies DSP 1627 Analog Devices ADSP-2171 DSP16A $15 0 1 1980 ARCHI’05 - 52 1985 1990 DSP16210 <$10 DSP1600 $10 1995 2000 [Ackland ISLPD98] 10000 20000 30000 40000 Cost-Time Product (µs$) ARCHI’05 - 53 50000 60000 70000 Énergie III. Évolution des DSP Filtrage numérique RIF C549 • 100 MHz, 2.5V 16 12 C6201 1. 2. 3. 4. 5. 6. • 200 MHz, 1.8V DSP16210 • 100 MHz, 3.3V 10 ZSP16401 8 6 • 200 MHz, 2.5V 4 ADSP-21160 2 • 100 MHz, 2.5V 0 1 70 C6 DSP conventionnels améliorés Capacités SIMD DSP hybride MCU VLIW Superscalaire Comparaison de performances • 167 MHz, 1.8V AD SP -2 11 60 01 64 10 ZS P1 62 P1 DS C6 20 1 C6701 C5 ARCHI’05 - 54 Virgule Fixe Virgule Flottante 14 49 Watt-microsecondes 18 Évolution des DSP Plus d’opérations par instruction Améliorer les performances au delà de l'augmentation liée à la vitesse d'horloge ? Augmenter le nombre d'opérations qui peuvent être exécutées dans chaque instruction • Ajouter des unités d'exécution o o o o Augmenter le parallélisme • Augmentation du nombre d'opérations exécutées dans chaque instruction • Augmentation du nombre d'instructions exécutées par cycle d'horloge Ajouter des unités spécialisées Améliorer le contrôle ARCHI’05 - 56 multiplieur, additionneur, ... jeu d'instruction à enrichir taille de l'instruction à augmenter bus de transfert mémoire à augmenter • Augmenter les capacités SIMD (ou SWP) Dans le même ordre d'idées • Utiliser des unités fonctionnelles spécialisées • Utiliser un coprocesseur • Architectures hybrides DSP/MCU ARCHI’05 - 57 L'objectif est ici de profiter du parallélisme au niveau instruction (ILP) d'une application Deux techniques sont bien connues : • VLIW : empaquetage de plusieurs instructions de type RISC dans une seule "super-instruction" • Superscalaire : exécution parallèle de plusieurs instructions sélectionnées dynamiquement par le processeur Générations 10000 Performances normalisées (BDTImark) Plus d’instructions par cycle 4ème génération DSP16210 (100 MIPS) 100 DSP56301 TMS320C54x (50-100MIPS) ADSP2183 (50MIPS) 2ème génération DSP56001 (13MIPS) ADSP21xx (13MIPS) TMS320C50 10 3ème génération 1ère génération TMS320C20 (5 MIPS) TMS320C10 (2.5 MIPS) 1 1980 ARCHI’05 - 58 StareCore(300MHz) TMS320C62x (300MIPS) Carmel (300 MHz) 1000 1982 1984 1986 ARCHI’05 - 59 1988 1990 1992 Année DSP conventionnels améliorés Architecture C54x Troisième génération (1995) Ajout d’unités spécialisés ou utilisation de coprocesseurs C54x • TMS320C54x Architectures multi-MAC • Lucent DSP 16xxx Multiprocesseurs sur une puce • Principalement pour image/vidéo • TMS320C80, MC68356 ARCHI’05 - 61 • 40-100-160 MIPS • 1000-2000-3000 MIPS/W • 17x17b multiplier, 40b ALU, 40b adder, ACS unit • Viterbi, LMS, FIRS, FFT • 60% of cellular handsets • $5 for C5402 100MIPS - $75 • Dual cores (C5420) ARCHI’05 - 62 1994 1996 1998 2000 2002 DB C54x CB PB DB DB CB DB CB EB C54x FIR symétrique x(N-i-1) + x(i) x h(i) x(i+1) A Bus1 FIR sur DSP conventionnel T Mult A B Add A B 0 A B Bus1 Bus2 ALU ARCHI’05 - 65 x h(i+1) + y Architectures multi-MAC A Bus1 Bus2 Bus3 A B Bus1 T + ARCHI’05 - 64 C54x A B Bus1 y y x(N-i) ARCHI’05 - 63 + ALU A B • e.g. Lucent DSP 16xx A B Bus X 16b Bus I 16b Bus4 MAC DO N TIME: acc=acc+P // P=X*Y // Y=*r0++ // X=*r1++ ALU MULT ALU Exécution en N cycles 2 ACC ARCHI’05 - 66 Architectures multi-MAC C55x FIR sur DSP dual-MAC Bus X 32b • e.g. Lucent DSP 16xxx o Consommation -85% o Performances 5x C5510 MULT ALU MULT ADDER Exécution en N/2 cycles 8 ACC ARCHI’05 - 67 • Jusqu'à 20 MIPS/mW • C54x Bus I 32b o 400 MIPS, 380mW o $5 - $80 DO N/2 TIME: acc=acc+P0+P1 // P0=X0*Y0 // P1=X1*Y1 // Y=*r0++ // X=*r1++ Architecture C55x • • • • 160 MHz, 320 MIPS 80mW 4 MIPS/mW 160 KW SRAM C5502 • 400 MIPS • 160 mW • 2.5 MIPS/mW ARCHI’05 - 68 Architecture C55x Capacités SIMD (ou SWP) FIR symétrique Opérations parallèles sur différentes largeurs de chemins de données (16 bit, 8 bit, ...) • Split unités d'exécution • Unités d'exécution multiples Exemples • Lucent DSP16xxx, ADI ADSP-2116x, ADI TigerSHARC, TI C64x 16 bits 16 bits x,+,- ARCHI’05 - 69 ARCHI’05 - 70 16 bits 16 bits x,+,- 16 bits 16 bits Avantages et inconvénients III. Évolution des DSP Méthode Augmenter le nombre d'UE Augmenter les capacités SIMD Matériel dédié Avantages Inconvénients Augmentation limitée de la consommation, du coût et de la densité de code Augmentation importante de la complexité Difficulté à programmer et à compiler Compatibilité maintenue Perspectives limitées Gain en performance très Nécessité d'avoir un important pour des parallélisme au niveau des traitements par blocs données important Modifications architecturales limitées Consommation mémoire importante Gain en performance important Nécessite une bonne connaissance de l'application 1. 2. 3. 4. 5. 6. DSP conventionnels améliorés Capacités SIMD DSP hybride MCU VLIW Superscalaire Comparaison de performances ARCHI’05 - 71 Architecture hybride DSP/MCU Architecture hybride DSP/MCU Associer des fonctionnalités MCU… Méthodes de couplage • gestion efficace des ITs • manipulation de bits • exécution conditionnelle à des fonctionnalités DSP, • calcul intensif pour obtenir un code performant et efficace • limiter la taille du code et donc du circuit ARCHI’05 - 73 Méthode Multiprocesseur Coprocesseur Avantages 2 jeux d'instructions ≠ Les 2 cœurs travaillent en // Pas de conflits de ressources Les 2 cœurs travaillent en // Inconvénients Duplication de ressources Deux outils de développement Modèle de programmation plus complexe Transferts de données Extension Solution Hybride ARCHI’05 - 74 Modèle de programmation plus simple Contraintes imposées par l'architecture initiale Architecture plus "propre" Développement plus risqué Architecture Hybride DSP/MCU ST 140 ST100, ST122, ST140 (STMicroelectronics) Compatible ST100 Compatible ST122 (dualMAC) • 32 bits MCU / 16 bits DSP • Fonctionnalités DSP o MAC, architecture Harvard, modes d’adressages complexes • et microcontrôleur o architecture load/store, large espace d’adressage, code compact Contrôleur mémoire instruction @ d UC Flexible 16-bit/32-bit Load/Store architecture 4-MAC/4-ALU Two data clusters Double data memory bandwidth Mémoire UT ST140-DSP Core in 0.13µm process Frequency up to 600 MHz Intensive Processing 2.4 GMAC/s Large Data Bandwidth 9.6 Gbytes/s Power Consumption down to 0.180 mW/MHz 100 mW, 24 MMAC/mW UA Contrôleur mémoire donnée ARCHI’05 - 75 ARCHI’05 - 76 Parallélisme niveau instructions III. Évolution des DSP DSP conventionnels améliorés Capacités SIMD DSP hybride MCU VLIW Superscalaire Comparaison de performances . . INS N ALU MAC MU INS1 INS2 ? INS3 – Ordonnancement des instructions – compilation – Run-time – Unité de dispatch ARCHI’05 - 78 ... Time 1. 2. 3. 4. 5. 6. INS 1 INS 2 INS 3 INS4 INS6 INS5 ... Very Long Instruction Word VLIW : C62xx 256 Caractéristiques • Plusieurs instructions par cycle, empaquetées dans une "super-instruction" large • Architecture plus régulière, plus orthogonale, plus proche du RISC • Jeu de registres uniforme, plus large Exemples • • • • TI TMS320 C62x et C64x ADI TigerSHARC ADS-TS20x Freescale (Motorola) MSC71xx et MSC81xx StarCore SC1400 Agere/Motorola (DSP core) ARCHI’05 - 79 1M-bit on-chip memory 32-bit ext. mem. interface 2 enhanced-buffered serial ports 16-bit host access port (Host processor access to on-chip data memory) Flexible PLL clock generator (x ext. clock rate for 2 or 4) Price: $9-$102 MPY ADD ADD MV STW ADD MPY SHL ADD SUB STW STW ADDK B ADD SUB LDW LDW B MVK NOP NOP MPY MPY ADD ADD STW STW ADDK NOP Dispatch Unit L:ALU S:Shift+ALU M:Multplier D:Address Functional Unit Functional Unit Functional Unit Functional Unit Functional Unit Functional Unit Functional Unit Functional Unit .L1 .S1 .M1 .D1 .D2 .M2 .S2 .L2 Register File A Register File B Data Memory Controller Data Address 1 Data Address 2 Internal Memory Exploitation du parallélisme • Two sets of functional units including: For(i=0;i<N;i+=3) { ACC=ACC + x[i].h[i] ACC=ACC + x[i+1].h[i+1] ACC=ACC + x[i+2].h[i+2] } For(i=0;i<N;i++) { ACC=ACC + x[i].h[i] } o Two multipliers o Six arithmetic logic units (ALUs) o 32 registers with 32-bit wordlength each o Data-addressing units .D1 and .D2 exclusively responsible for data transfers between memory and the register files • • • • Fetch Déroulage des boucles : augmente l'ILP CPU ADD 32x8=256 bits ARCHI’05 - 80 Texas Instruments TMS 320C6x VLIW CPU with eight functional units (RISC-like code) 2400 MIPS @ 300MHz MPY LOAD MULT 8-/16-/32-bit data support 40-bit arithmetic options Saturation and normalisation Bit-field manipulation and instruction: extract, set, clear, bit counting N/3 ACC LOAD MULT ACC LOAD MULT ACC Taux d’utilisation du processeur 100% ARCHI’05 - 81 ARCHI’05 - 82 Exploitation du parallélisme C6x Pipeline logiciel : maximiser l’IPC Functional Unit Functional Unit Functional Unit Functional Unit Functional Unit Functional Unit Functional Unit Functional Unit .L1 .S1 .M1 .D1 .D2 .M2 .S2 .L2 • Optimisation du code assembleur Register File A Data Memory Controller Prologue LOAD MULT Instruction Description LDH ADD Charge une donnée 16 bits venant de la mémoire dans un registre Charge deux données 16 bits consécutives venant de la mémoire Multiplication entre 2 registres, résultat dans un troisième Addition SUB Soustraction B NOP LOAD LDW N ACC MULT LOAD MPY ACC MULT ACC Épilogue Register File B Nombre de cycles 5 Unités .M Unités .L Unités .S Unités .D - - - .D1 .D2 5 - - - .D1 .D2 2 .M1 .M2 - - - .S1 .S2 .S1 .S2 .S1 .S2 - .D1 .D2 .D1 .D2 - 1 - 1 - Branchement 6 - .L1 .L2 .L1 .L2 - aucune opération 1 - - 100% Taux d’utilisation du processeur ARCHI’05 - 83 Exploitation du parallélisme Filtre FIR sur DSP VLIW C6x x[0] = input; acc = 0; for (i=0; i<8; i++) { prod = h[i] * x[i]; acc = acc + prod; } output = (short) (acc >> 15); 1 Start 2 3 Loop 4 5 6 7 8 9 [B0] 10 [B0] ARCHI’05 - 85 MVKL .S2 8, B0 MVKL .S1 0, A5 LDH .D1 *A8++,A2 LDH .D1 *A9++,A3 NOP 4 MPY .M1 A2,A3,A4 NOP ADD .L1 A4,A5,A5 SUB .L2 B0,1,B0 B .S1 loop // Update most recent sample // Zero accumulator // 8 taps // perform Q.15 multiplication // Update 32-bit accumulator // Cast output to 16 bits ; ; ; ; ; ; ; ; ; ; Intialize the loop counter (B0) to 8 Intialize the accumulator (A5) to 0 Load x(i) in A2 Load h(i) in A3 LDH has a latency of 5 cycles Multiply x(i) and h(i) in A4 MPY has a latency of 2 Add A4 to the accumulator A5 Sub 1 to the counter B0 Branch to loop if B0 <> 0 ARCHI’05 - 84 Méthodes d’optimisation Depuis le code “RISC” Instructions en parallèle Enlever les NOP Déroulage de boucle Pipeline logiciel Lecture mémoire de paquets de données 2 LDH → 1 LDW 2 LDW → 1 LDDW ARCHI’05 - 86 - Code non optimisé loop: loop: ldh.d1 ldh.d1 nop *A8++,A2 *A9++,A3 4 mpy.m1 nop add.l1 A2,A3,A4 sub.l2 [b0] b.s1 nop Instructions parallèles loop: Code RISC ldh.d1 || ldh.d2 ldh.d2 nop 40 itérations 16*40 = 640 cycles mpy.m1x mpy.m1x nop add.l1 A4,A6,A6 B0,1,B0 loop 5 sub.l2 [b0] b.s1 nop ARCHI’05 - 87 A2,B3 ,A4 A2,B3,A4 Parallélisme ? 40 itérations 15*40 = 600 cycles A4,A6,A6 B0,1,B0 loop 5 ARCHI’05 - 88 Remplacer les NOP loop: ldh.d1 || ldh.d2 ldh.d2 nop mpy.m1x mpy.m1x nop add.l1 sub.l2 [b0] b.s1 nop *A8++,A2 *B9++,B3 4 A2,B3 ,A4 A2,B3,A4 A4,A6,A6 B0,1,B0 loop 5 Remplacer les NOP Not Optimized Properly loop: Instructions à la place des NOP Dépendances interinstructions LDH ldh.d1 || ldh.d2 ldh.d2 sub.l2 [b0] b.s1 nop LDH a b 5 5 MPY * 2 ADD mpy.m1x mpy.m1x nop add.l1 count SUB 1 + 1 ARCHI’05 - 89 *A8++,A2 *B9++,B3 4 loop B 6 ARCHI’05 - 90 *A8++,A2 *B9++,B3 B0,1,B0 loop 2 A2,B3 ,A4 A2,B3,A4 A4,A6,A6 Instructions à la place des NOP 40 itérations 8*40 = 320 cycles Déroulage de boucles Pipeline logiciel Déroulage + ré-ordonnancement des instructions Réintroduction de la boucle sur le motif répété Cycle 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 .D1 LDH LDH LDH LDH LDH LDH LDH LDH LDH .D2 LDH LDH LDH LDH LDH LDH LDH LDH LDH .L1 .L2 .M1 MPY MPY MPY MPY MPY MPY MPY MPY MPY ADD ADD ADD ADD ADD ADD ADD ADD ADD .M2 .S1 .S2 NOP N=40 itérations 7 + (N-7) +7 = 47 cycles 47 instructions VLIW! ARCHI’05 - 91 .D1 LDH LDH LDH LDH LDH LDH LDH LDH LDH .D2 LDH LDH LDH LDH LDH LDH LDH LDH LDH .L1 ADD ADD ADD ADD ADD ADD ADD ADD ADD .L2 SUB SUB SUB SUB SUB SUB SUB .M1 MPY MPY MPY MPY MPY MPY MPY MPY MPY .M2 .S1 .S2 NOP B B B B B B 47 cycles 15 instructions ARCHI’05 - 92 Accès mémoire multiples a1 a0 A0 LDW.D1 Accès mémoire multiples *A5++,A0 x x1 A7 a1 * x1 x0 = A1 A3 a0 * x0 LDW.D1 *A6++,A1 MPY.M1 A0, A1, A3 MPYH.M1 A0, A1, A7 + a1x1 + a0x0 A4 ARCHI’05 - 93 Cycle 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ADD.L1 A3, A7, A4 Lecture de 4 données + 2 MAC en parallèle Cycle 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ARCHI’05 - 94 .D1 LDW LDW LDW LDW LDW LDW LDW LDW .D2 LDW LDW LDW LDW LDW LDW LDW LDW .L1 ADD ADD ADD ADD ADD ADD ADD ADD ADD .L2 ADD ADD ADD ADD ADD ADD ADD ADD .M1 .M2 MPY MPY MPY MPY MPY MPY MPY MPY MPYH MPYH MPYH MPYH MPYH MPYH MPYH MPYH .S1 .S2 NOP N=40 itérations 7 + (N/2-7) +8 = 28 cycles StarCore SC1400 core VLIW combiné au SIMD Processeur VLIW 16 bits développé en commun par Agere (Lucent) et Freescale (Motorola) 300 MHz, faible tension Optimisé pour faible consommation ADI TigerSHARC • Combine le VLIW au SIMD afin d'atteindre un parallélisme massif • SIMD hiérarchique o Le TigerSHARC peut exécuter 8 multiplications 16x16 en virgule fixe par cycle (4x le C62xx) • Meilleure densité de code (16 bits) que C6x • Pipeline plus simple (5 étages contre 11) BMU MAC ALU Shift MAC ALU Shift MAC ALU Shift Instruction SIMD MAC ALU Shift ALU MAC Shift 4 MAC 16 bits ARCHI’05 - 95 ARCHI’05 - 96 VLIW combiné au SIMD C64x C64x • Jusqu’à 1.1 GHz, ~9 GOPS • Six ALUs (32/40-Bit) o une 32/40-Bit, deux 16-Bit, ou quatre 8-Bit opérations arithmétiques par cycle et par ALU • Deux multiplieurs, quatre 16x16-Bit ou huit 8x8-Bit multiplications par cycle • Coprocesseurs VCP (Viterbi) et TCP (Turbo) 'C6411: 300 MHz, $39, 1.0 V, 250mW, 2400 MIPS, 1200 MMACS ARCHI’05 - 97 ARCHI’05 - 98 ALU MAC Shift 4 MAC 16 bits Superscalaire Avantages et inconvénients Techniques dérivées des processeurs généraux hautes-performances VLIW Plusieurs (2-4) instructions par cycle Jeu d'instructions de type RISC Parallélisme important LOOP // LDDU Exemple • LSI Logic LSI40x (ZSP400 core) o 4-way, 260MHz ARCHI’05 - 99 FIR on LSI40x R4, R14, 2 LDDU R8, R15, 2 MAC2.A R4,R8 AGN0 LOOP Superscalaire Architectures plus orthogonales ⇒ meilleures cibles pour les compilateurs Grand bon dans les performances Architectures plus orthogonales ⇒ meilleures cibles pour les compilateurs Pas de problèmes de séquencement ARCHI’05 - 100 Générations : bilan ARCHI’05 - 101 Avantages Grand bon dans les performances • Prédiction de branchement • Cache dynamique Méthode ARCHI’05 - 102 Inconvénients Bande passante vers la mémoire importante Forte consommation Séquencement délicat Augmentation de la taille du code importante Bande passante vers la mémoire importante Plus forte consommation Temps d'exécution difficilement prédictible Processeurs récents (2005) DSP • • • • • Analog Devices BF53x (Blackfin) Analog Devices TS20x (TigerSHARC) Freescale MC1xx/81xx Texas Instruments C55x Texas Instruments C64x Processeurs applicatifs • • • • ARCHI’05 - 103 Vitesse (BDTImark2000) ARCHI’05 - 106 Intel PXA255/26x (XScale) Intel PXA27x (XScale + Wireless MMX) Samsung S3C24xx (ARM9) Texas Instruments OMAP591x (ARM9 + C55x) ARCHI’05 - 105 Coût – performance (mark/$) ARCHI’05 - 107 Efficacité énergétique (mark/mW) ARCHI’05 - 108 Efficacité mémoire (memmark) ARCHI’05 - 109 BDTIMark III. Flot de développement 1. Flot général de développement 2. Compilation pour DSP 3. Arithmétique virgule fixe ARCHI’05 - 110 Flot de développement général Flot général (suite) Développement (actuel) d'applications (signal) Algorithme 1 Mise au point de l'algorithme – Matlab/Simulink – SPW, Ptolemy, CoCentric – VCC Génération manuelle ou automatique Code C "flottant" – Compilateur C, debugger – Utilisation de vecteurs de test issus de la simulation système Génération manuelle – Compilateur C, debugger – Utilisation de vecteurs de test issus de la simulation système Code C "fixe" ARCHI’05 - 112 Algorithme 1 Code C Implantation logicielle Système d'Exploitation Temps Réel Implantation Matérielle Algorithme 2 Code C – Compilateur C pour DSP – Simulation assembleur – Traduction en VHDL – Synthèse du circuit – Simulation VHDL Algorithme N Code C ARCHI’05 - 113 Compilation Inefficacité des compilateurs C Compilation C vs optimisation assembleur Surcoût associé au compilateur • e.g. STMicrolectronics Assembl er MCU 28% Assembl er DSP 55% Code C DSP 8% Code C µCtrl 9% Code C MCU 5% Assembler MCU 25% Assembler DSP 25% Code C DSP 45% Facteur 4 à 10 (virgule fixe) Facteur 2 à 4 (flottants) Orthogonalité 1000 800 Sur coût (%) Conception de code enfoui dans l'industrie Sur coût temps d'execution 1200 ANSI C C modifié 600 400 200 • VLIW 0 [Paulin97] ARCHI’05 - 115 ADSP21xx/ ADI [Paulin00] DSP56002/ Motorola TMS320C51/ TMS320C54/ TMS320C62/ TI TI TI Processeurs ARCHI’05 - 116 Inefficacité des compilateurs C Raisons de l’inefficacité Surcoût associé au compilateur Absence de support de l’arithmétique virgule fixe Inefficacité des techniques classiques de développement des compilateurs Sur coût taille du code 400 350 ANSI C • Taille du code 300 o développement de l'architecture puis du compilateur ¿ compilateurs reciblables C modifié Sur coût (%) 250 200 Inefficacité des techniques classiques de compilation 150 100 o architecture non orthogonale, unités spécialisées, instructions complexes 50 0 Absence de support des spécificités des DSP -50 o registres d’état, modes d’adressage (modulo, bit inversé)... -100 ADSP21xx/ ADI DSP56002/ Motorola TMS320C51/ TI TMS320C54/ TI Processeurs ARCHI’05 - 117 TMS320C62/ TI ¾Extensions du langage C : e.g. Embedded C ARCHI’05 - 118 Formats de codage III. Flot de développement Virgule fixe • Représentation : signe - partie entière - partie fractionnaire nx mx 1. Flot général de développement 2. Compilation pour DSP 3. Arithmétique virgule fixe S bm-1 bm-1 b1 b0 b-1 b-2 m−1 bn-2 bn-1 bn x = (−2)m S + ∑bi 2i CA2 i =− n o bx = mx + nx + 1 o le format d’une donnée ne varie pas au cours du temps Virgule flottante • Représentation : exposant - mantisse Exposant e bits SE d1 d2 Mantisse M+1 bits de-1 SE C1 C2 C3 Cm-2 Cm-1 Cm ⎛1 M ⎞ x = 2u (−1)SE ⎜ + ∑Ci 2i −1 ⎟ ⎝ 2 i =1 ⎠ E −1 avec u = (−1)SE ∑ di 2i i =1 ARCHI’05 - 120 Comparaison fixe - flottant Comparaison fixe - flottant Dynamique virgule fixe/flottante Virgule fixe (>90% des ventes des DSP) Dynamique ⎛ max(x ) ⎞ ⎟= DN (dB) = 20. log⎜⎜ ⎟ ⎝ min( x ) ⎠ D ynamique en dB 1500 • Précision importante mais problèmes de débordement 1000 o nécessité de recadrer les données 500 • • • • flottant fixe 0 10 ⎛P ⎞ ρdB = 10. log⎜⎜ s ⎟⎟ = ⎝ Pe ⎠ 30 Rapport Signal à Bruit virgule fixe/flottante 100 • C5x > $5 Virgule flottante • • • • flottant 80 RSB en dB Rapport signal à bruit de quantification (SQNR) 15 20 25 Nombre de bits 60 40 (16 bits) 20 Temps de développement plus long Efficacité énergétique plus importante, plus rapide et moins cher Consommation moins importante Marché : applications grand public Temps de développement plus rapide, compilateurs plus efficaces Plus grande portabilité, pas de recadrage Pas de débordements : dynamique de 1500dB (32 bits) Plus cher, consomme plus • C67x > $30 fixe 0 -50 ARCHI’05 - 121 0 Dynamique du signal d entré e en dB 50 ARCHI’05 - 122 Eléments de l’UT Règles de l’arithmétique virgule fixe Multiplieur câblé Additionneur U.A.L. Addition: a+b mA BB AA (1 Op/cycle) N • Format de a et b identique • Choix d’un format commun N × 2N MAC Registres à décalage Ö recadrage des données o Alignement de la virgule o Extension de bits nA b1 + Accumulateur Accumulateur Sat /Arr SR bmR b1 bnA nB b0 b-1 b-2 m R = max(m A , m B ) + 1 × bnA n R = max(n A , n B ) mA • Représentation identique • Doublement du bit de signe SA bmA b1 nA b0 b-1 b-2 bnA mB nB SB bmB b0 b-1 bnB SR SR bmR b1 mR = m A + mB ARCHI’05 - 124 mBnB SB SB SB bmB Sb0 bb-1 bb-2 bbnB b0 b0 B mB 0 -1 -2 nB Multiplication: a × b Ö stockage des données en double précision b0 b-1 b-2 mB + 2N+bg Gestion des débordements Bits de garde Registres d’accumulation ARCHI’05 - 123 SA bmA b0 b-1 b-2 nR = nA + nB bnR Codage en virgule fixe : objectifs Codage en virgule fixe : étapes Objectifs pour le codage en virgule fixe 1. Détermination de la dynamique des données • Garantir l’absence de débordements o Connaissance du domaine de définition des données 2. Détermination de la position de la virgule • Maximiser la précision 3. Détermination de la largeur des données Minimiser le nombre de bits de poids fort non utilisés Minimiser le pas de quantification S bm-1 bm-1 b1 b0 b-1 b-2 Opérateurs SIMD, précision multiple 4. Evaluation de la précision des calculs bn-2 bn-1 bn PMSB Méthodes par simulation ou analytiques PLSB ARCHI’05 - 125 ARCHI’05 - 126 Filtre récursifs (IIR) Filtre IIR d’ordre 2 (cellule i) Cascade de cellules d’ordre 2 wn + × × a1 z-1 a2 b1 + b0 … yn yi-1(n) sortie cellule précédente + + a2,i × a1,i wi(n-2) × wi(n-1) wi(n) × a1 z-1 b1 × × b2 × z-1 × × × wn +yn b0 z-1 × + ADD0 (entrée) x(n) ADD 1 ADD 0 xn Méthodes statistiques ou analytiques a2 b1,i × b2,i + b2 × b0,i × ADD1 + y (n) (sortie) yi(n) (entrée cellule suivante) ARCHI’05 - 127 ARCHI’05 - 128 Dynamique des données Dynamique des données (IIR) Normes utilisées en TS Norme L1 Sources de débordements : additionneurs • IIR : 2 sources ADD0 et ADD1 ∞ z max1 = max n ( x(n) ). ∑ h(m) ¾ Méthode garantissant l’absence de débordements m = −∞ Norme Chebychev ¾ Méthode garantissant l’absence de débordements pour un signal d’entrée à bande étroite e.g. z max 2 = max n ,ω ( x(n) ) max ( H (ω ) ) x(n)=cos(wt) b0 × a1 z-1 ∞ b1 a2 ymax1 = xmax . ∑ h(m) m = −∞ × × H ( z) = b2 mx = ⎡log 2 (max n ( x(n) ))⎤ = 0 Filtre1 Num (z )/Den(z ) mwi = ⎡log 2 (max n ( wi (n) ))⎤ = 4 2 x ∈ [−1,1] 1.5 0.5 − 0.2428 z −1 + 0.5 H ( z) = 1 − 0.85 z −1 + 0.8417 z − 2 ∑ h(m) = 2.5645 ⎯⎯→ m m = −∞ H(jw) 1 m yi = ⎡log 2 (max n ( yi (n) ))⎤ = 2 0.5 ∞ y =2 0 0 0.5 1 1.5 2 2.5 3 3.5 Filtre 1/Den(z ) 8 ∞ ∑h D ( m) = 9 ⎯ ⎯→ mw = 4 → k1 = 4 ( HD(jw) 4 Codage des coefficients = -27951 = 27581 = 16384 = 16384 = -7956 0 0 0.5 1 1.5 2 2.5 3 maij = ⎡log 2 (max j ( ai ))⎤ = 0 ( ))⎤ = 0 mbij = ⎡log 2 max j bij 6 2 ARCHI’05 - 131 × ∞ wmax1 = xmax . ∑ hD (m) yn Position de la virgule (IIR) Exemple a1 a2 b2 b0 b1 × + ARCHI’05 - 130 Dynamique des données (IIR) m = −∞ ADD 1 z-1 1 H D ( z) = 1 + a1 z −1 + a2 z − 2 ARCHI’05 - 129 xmax + m = −∞ Arithmétique d’intervalle (non récursifs) xmax wn ADD 0 xn 3.5 Fonction de transfert des filtres H(z) et HD(z) m ADD 0 = MAX (mx , mai + mwi + 1, mwi ) = 5 m ADD1 = MAX (mbi + mwi + 1, m yi ) = 5 ARCHI’05 - 133 b0 + b1 z −1 + b2 z − 2 1 + a1 z −1 + a2 z − 2 Codage des données (IIR) Conversion flottant-fixe (IRISA) ADD0 (16,mx,,nx) x(n) (16,0,15) (32, madd0 , nadd0) + + C source code (32,5,16) #define pi 3.1416 #define pi 3.1416 main() { float x,h,z for(i=1;i<n;i++) { *z= *y++ + *h++ } for(i=1;i<n;i++) { *z= *y++ + *h++ } Correlator.C #define pi 3.1416 #define pi 3.1416 main() { float x,h,z for(i=1;i<n;i++) { *z= *y++ + *h++ } for(i=1;i<n;i++) { *z= *y++ + *h++ } #define pi 3.1416 #define pi 3.1416 main() { float x,h,z for(i=1;i<n;i++) { *z= *y++ + *h++ } for(i=1;i<n;i++) { *z= *y++ + *h++ } Floating-point specification Correlator.C Correlator.C × a2,i a1,i × (16,mw,nw) BB AA wi(n-2) 16 16 32 × b1,i wi(n-1) b2,i + wi(n) × b0,i ADD1 × + (32, madd1, nadd1) (32,5,16) Binary-point position determination High level synthesis tool BSS Selection Scheduling Allocation 32 Acc Acc Fixed-point conversion (16,4,11) Fixed-point specification optimization Accuracy evaluation Fixed-point specification optimization Code generation tool CALIFE Selection Scheduling Allocation (16,my,ny) (16,2,13) Precision constraint y (n) ARCHI’05 - 134 ARCHI’05 - 135 [Ménard02, Ménard04] Conclusions Conclusions Processeurs spécialisés garantissent : Les processeurs généraux ont maintenant des performances qui concurrencent les DSPs • efficacité énergétique, rapport performances/coût • autres exemples probants o Processeurs multimédia o Network Processor NPU Les performances des processeurs DSPs ont augmenté de 150x sur 15 ans (40% par an) Les nouvelles architectures sont nombreuses • Mais les DSPs conventionnels dominent toujours le volume • Mais le prix ... et la consommation ne sont pas applicables aux applications embarquées grand public La facilité de compilation est un facteur important • time-to-market... Choisir un DSP requiert une analyse fine • qui dépend de l'application... ARCHI’05 - 136 ARCHI’05 - 137 Perspectives Piste 1 : DSP conventionnel Quelle sera l’architecture pour le traitement du signal et de l’image de demain (ou d’après demain) ? DSP conventionnel multi-MAC Unités spécialisés Programmation ? Viterbi Turbo MULT MULT MULT MULT FFT ALU ALU ALU CDMA ACC ARCHI’05 - 138 ARCHI’05 - 139 Piste 2 : ULIW Ultra Large Instruction Word • e.g. Silicon Hive AVISPA+ Piste 3 : multiprocesseur Compilation ? SMT ? ARCHI’05 - 140 ACC PicoArray (picoChip) • ~320 PE (VLIW 3-way) • 160 MHz • 190 GIPS ARCHI’05 - 141 ALU PicoArray Piste 4 : FPGA Static Interconnect PE: 16-bit 3-way VLIW e.g. Altera Stratix • Multiplieurs 9x9 – 18x18, 2 GMAC/s par bloc, 250 MHz VHDL: structure C/Assembly: PE ARCHI’05 - 142 ARCHI’05 - 143 Piste 5 : processeur reconfigurable Architecture DART RDP1 Segmented Network RDP2 Ctrl RDP3 RDP4 Ctrl DMA RDP5 Config Mem. FPGA Data. Mem. • 3G/UMTS Mobile Terminal • 802.11a (Channel Est.) • IRISA/R2D2 • STMicroelectronics • CEA LIST/LETI RDP6 Loop Managment AG1 AG2 AG3 AG4 Data mem1 Data mem2 Data mem3 Data mem4 Performances Fully Connected Network reg reg ARCHI’05 - 144 FU1 FU2 FU3 FU4 • • • • • 5-10 GOPS/[email protected] 200MHz, 11mm2 300 mW @ 5 GOPS 16 MOPS/mW @ 5 GOPS Circuit en juin 2005 Bibliographie DSP Processor Fundamentals : Architectures and Features (IEEE Press Series on Signal Processing) by Phil Lapsley, Jeff Bier, Amit Shoham, Edward A. Lee, Wiley-IEEE Press, 1997 Digital Signal Processors : Architectures, Implementations, and Applications by Sen M. Kuo, Woon-Seng S. Gan, Prentice Hall, 2004 ARCHI’05 - 145 Bibliographie Bibliographie Programmable Digital Signal Processors by Yu Hen Hu (Editor), Marcel Dekker, 2001 Digital Signal Processing Applications With Motorola's DSP56002 Processor by Mohammed El-Sharkawy, Prentice Hall, 1996 VLSI Digital Signal Processors: An Introduction to Rapid Prototyping and Design Synthesis by Vijay Madisetti, Butterworth-Heinemann, 1995 Digital Signal Processing Implementation Using the TMS320C6000 DSP Platform (With CD-ROM) by Naim Dahnoun, Prentice Hall, 2000 Méthodes et architectures pour le TSI en temps réel, de Didier Demigny, Hermès, 2002 ARCHI’05 - 146 Références [David00] R. David, Etat de l'art des cœurs de DSP, Rapport DEA, ENSSAT, 2000. [Sentieys00] O. Sentieys, Etat de l'art des DSP, École thématique du CNRS - Conception de systèmes enfouis, Seix (Ariège), 20-23 novembre 2000. [Sentieys01] O. Sentieys, DSP et processeur superscalaire : la convergence ?, Symposium en Architectures Nouvelles de Machines, Paris, 2001. [Ménard04] D. Ménard, Processeur de traitement du signal, ENSSAT/EII, 2004. [ICE97] B. McClean, “Status 1997: A Report on the Integrated Circuit Industry”, Integrated Circuit Engineering Corporation (ICE), Scottsdale, 1997 [Bhaskaran95] V. Bhaskaran & K. Konstantinides, “Image and Video Compression Standards Algorithms and Architectures”, Kluwer Academic Publishers, Boston, 1995. [Bier97] J. Bier, P. Lapsley & G. Blalock, “Choosing a DSP Processor”, Berkeley Design Technology (BDT), 1997. [DeMan97] H. De Man and al., “Language Based Design of Digital Systems”, AI Course, KU Leuven/IMEC, april 1997. [Lapsley96] P. Lapsley and G. Blalock, “How to Estimate DSP Processor Performance”, IEEE Spectrum, July 1996. [Pirsch97] P. Pirsch: “Video and Image Processing Architectures - Dedicated and Programmable Solutions”, NFWO Symposium on Video Processing Architectures, January 1997. [Ackland98] B. Ackland and C. Nicol, "High Performance DSPs - What's Hot and What's Not?", IEEE Int. Symposium on Low Power Electronic Design ISLPED, 1998. [Ropers99] A. Ropers and al., "DSPstone : TI C54x" Report IISPS AAchen University of Technology, 1999. ARCHI’05 - 148 DSP Applications Using C and the TMS320C6x DSK by Rulph Chassaing, Wiley-Interscience, 2002 ARCHI’05 - 147 Webographie http://www.bdti.com http://dsprelated.com/ http://www.ti-training.com/courses http://www.eg3.com/dsp/index.htm ARCHI’05 - 149