Vous êtes sur la page 1sur 192

Rpublique Tunisienne Ministre dEnseignement Suprieur, Universit de Sfax

ECOLE NATIONALE DINGENIEURS D INGENIEURS DE SFAX

ENIS 2012/ 2012/2013

Cours DSP
3me anne GE ISI-EEI_SEER

Nouri MASMOUDI
Professeur lENIS Responsable de lquipe Circuits et Systmes Laboratoire d lectronique et des Technologies de l Information dlectronique lInformation

Plan du cours
Chapitre I : Introduction aux DSP Chapitre II : Architectures des DSP p Chapitre III : Architecture interne du TMS320 C64X Chapitre IV : tude pratique du pipeline pour le TMS320 C64X Chapitre V : Techniques doptimisation

ENIS 2011-2012

Cours DSP

ENIS 2012/2013

C ap e Chapitre I :

Introduction aux DSPs DSP s

Plan

Ch suivant

Sommaire
Besoins et contraintes en traitement numrique du signal
Applications typiques Algorithmes typiques Al i h i

Prsentation des DSP


Processeurs actuels Exemples des DSP Comparaison avec les processeurs gnralistes

Reprsentation des nombres


Types de donnes Virgule fixe Virgule flottant
ENIS 2012-2013 Cours DSP Chapitre 1 5

Dfinition dun DSP d un


DSP = Digital Signal Processor Processeur de traitement Numrique du Signal Un DSP est un type particulier de microprocesseur. Il i t intgre un ensemble d f bl de fonctions spciales d ti ti i l destines l le rendre particulirement performant dans le domaine du traitement numrique du signal (TNS). Il se prsente gnralement sous la forme dun microcontrleur d un intgrant, selon les marques et les gammes des constructeurs, de l mmoire, d ti t i h id la i des timers, d ports srie synchrones rapides, d des des contrleurs DMA, des ports dE/S divers.
ENIS 2012-2013 Cours DSP Chapitre 1 6

Structure gnrale des applications g de TNS

TNS = Traitement Numrique du Signal ADC = Analog to Digital Converter DAC = Digital to Analog Converter

ENIS 2012-2013

Cours DSP Chapitre 1

Pourquoi le TNS ?
Les i i L principaux avantages d calcul numrique / au calcul analogique : t du l l i l l l i Grande rsistance aux bruits
variations des tensions dalimentation variations de la temprature interfrences lectromagntiques (EMI)

Indpendance par rapport aux tolrances de fabrication Prcision arbitraire Stabilit dans le temps Stockage des donnes sans dgradation Programmation flexible et dveloppement rapide Contrle absolu des donnes lors du traitement
ENIS 2012-2013 Cours DSP Chapitre 1 8

Applications des DSP


Communications Filaire (DSL, cable) Sans fil ( ll l i S (cellulaires, tlvision numrique, radio numrique) q ) Modem Cryptage Audio Mixage et dition Effets Suppression de bruit Annuleur decho Image / vido Compression/Codage Composition C iti Traitement

Militaire Imagerie : radar, sonar Cryptographie Guidage de missiles N i ti Navigation

ENIS 2011-2012

Cours DSP Chapitre 1

Applications des DSP


Biomdical Equipements de monitoring Automatisation Commande de machines Contrle de moteurs Robots

Signaux biophysiques ElectroEncphaloGramme (EEG) ElectroCardioGramme (ECG)

Radiographie Instrumentation Analyseurs de spectre Gnrations de fonctions Analyseurs de rgimes transitoires

Electronique Automobile Contrle du moteur Assistance au freinage Aide la navigation Commandes vocales

ENIS 2012-2013

Cours DSP Chapitre 1

10

Application type : Modem ADSL y


ADSL = Asymmetrical Digital Subscriber Line

Besoins en calcul de 100 150 MIPS. TEQ = Time domain EQualizer QAM = Quadrature Amplitude Modulation FEQ = Frequency domain EQualizer F d i EQ li
ENIS 2012-2013 Cours DSP Chapitre 1 11

LCD TV
TV numrique : affiche la vido numrique / analogique LCD (Liquid Crystal Display) Module de base: DSP - dcodeur MPEGx pour vido, voix: AC3/MPEG pour l le traitement audio. MCU contrleur du systme lectronique, rseau. Interface Vido/audio Unit dalimentation

ENIS 2012-2013

Cours DSP Chapitre 1

12

Digital Video Recorder g


Le systme inclut : Processeur DSP: MPEG CPU Triple DAC NTSC/PAL, S vido et YPrPb Interface FPGA/PCI commander le transfert des donnes et le bus PCI. CODEC Stro Audio , Interface utilisateur, Bloc dalimentation

ENIS 2012-2013

Cours DSP Chapitre 1

13

Radar

ENIS 2012-2013

Cours DSP Chapitre 1

14

Digital Still Camera g

ENIS 2012-2013

Cours DSP Chapitre 1

15

Algorithme type : Les filtres FIR g y


Pour un filtre rponse impulsionnelle finie (Finite Impulse Response) de taille N (nombre de coefficients), on doit effectuer un calcul du type :

ENIS 2012-2013

Cours DSP Chapitre 1

16

Algorithme type : Les filtres FIR g y

Contraintes :
nombre de coefficients (10 ! 300) 300), prcision (16 ou 24 bits), vitesse de fonctionnement . . .
ENIS 2012-2013 Cours DSP Chapitre 1 17

Profils dutilisation du DSP o s d ut sat o S


Embarqu
Faible cot unitaire Faible consommation : part importante de la consommation pour la mmoire Architecture limite au strict ncessaire Temps rel

Haute performance
Puissance : Calcul intensif Paralllisme
Multiplication des units de calcul internes Interfaces multi-DSP multi DSP

Interface avec un ordinateur hte

Non prioritaires : Non prioritaires :


Performance Facilit de F ilit d programmation ti

Cot lev Utilisation mmoire Consommation

ENIS 2012-2013

Cours DSP Chapitre 1

18

Caractristiques classiques des DSP


Chemin de donnes organis pour traitement du signal Jeu dinstructions spcialis Plusieurs bancs mmoire et plusieurs bus g p Modes dadressage spcialiss Contrle dexcution spcialis Priphriques spciaux pour le traitement du signal Augmentation du paralllisme

ENIS 2012-2013

Cours DSP Chapitre 1

19

Caractristiques classiques des DSP


Augmentation du paralllisme
Calculs Units d U it de calcul en parallle l l lll Mmoire accs multiples Lecture/criture de plusieurs donnes simultanment Pipeline Dcoupage des instructions de faon les excuter g intervalles plus rapprochs

ENIS 2012-2013

Cours DSP Chapitre 1

20

Traitement en Temps Rel


Les processeurs DSP doivent accomplir des tches en temps rel, ainsi comment dfinissons-nous le temps rel ? La dfinition du temps rel dpend de lapplication. Example: un filtre FIR de 100 chantillons est excut en temps rel si le DSP peut effectuer et accomplir l'opration i l' ti suivante entre d t t deux h till chantillons :

y (n ) = a(k )x(n k )
k =0

99

ENIS 2012-2013

Cours DSP Chapitre 1

21

Traitement en Temps Rel


Temps dattente

Temps de Traitement

n Temps dchantillon d chantillon

n+1 n+1

Nous pouvons dire que nous avons une application en t li ti temps rel si : l i

ENIS 2012-2013

Temps d'attente 0
Cours DSP Chapitre 1 22

Spcificits des DSP


Algorithme classique de TNS : Filtre RIF
N 1 i =0

y (n) = a (i ) x(n i )
Pour chaque a(i) x(n-i) :
Recherche de linstruction 3 accs la mmoire 2 accs lunit de calcul
ENIS 2012-2013

Recherche du coefficients a(i) Recherche de la donne x(n-i) Multiplication a(i) x(n-i) Accumulation a(i-1) x(n-i-1) + a(i) x(n-i) A l ti (i 1) ( i 1) (i) ( i)
Cours DSP Chapitre 1 23

Spcificits des DSP


Objectifs :
Rduire les accs mmoire Augmenter les accs mmoire simultans g Rduire le temps pass pour faire des calculs

Instruction MAC (multiplication-accumulation) en 1 seul cycle dinstruction


ENIS 2012-2013 Cours DSP Chapitre 1 24

Classification des processeurs p

DSP = Digital Signal Processor ASIP = Application Specific Instruction set Processor ASIC = Application Specific Integrated Circuit
ENIS 2012-2013 Cours DSP Chapitre 1 25

Q Quel processeur utiliser p p pour le TNS


-contrleurs : pas assez performants ASIC : beaucoup trop coteux, mise en oeuvre complexe et longue ASIP : beaucoup trop coteux, complexe et surtout spcifique Processeurs gnralistes (GPP) : pas temps rel trop coteux rel, coteux, consomment trop dnergie, difficilement embarquables

ENIS 2012-2013

Cours DSP Chapitre 1

26

Q Quel processeur utiliser p p pour le TNS

ASIC Devel lopment time t

ASIC

FPGA Perfo ormance

FPGA

DSP

DSP

GPP

GPP

ENIS 2012-2013

Cours DSP Chapitre 1

27

Q Quel processeur utiliser p p pour le TNS

GPP Power consump r ption DSP FPGA ASIC

GPP

Fle exibility

DSP FPGA ASIC

ENIS 2012-2013

Cours DSP Chapitre 1

28

General Purpose DSP / DSP in ASIC G lP i


Circuit intgr application Spcifique (ASICs) est conu base des fonctions en semi-conducteurs. i d t g Les avantages et les inconvnients dutiliser les ASICs sont numrs ci-dessous :
Advantages
ENIS 2012-2013

Sortie lev Faible surface en silicium Faible consommation de puissance Fiabilit amliore Rduction du bruit Faible cot du systme global

Inconvnients Cot lev Moins d fl ibilit M i de flexibilit ibili Temps de d veloppement est lev lev

Cours DSP Chapitre 1

29

Hardware / Microcode multiplication H d Mi d lti li ti


Les processeurs DSP sont optimiss pour effectuer des oprations de multiplication et d addition. d'addition Multiplication et addition sont excutes matriellement pendant un seul cycle. Exemple: Multiplication 4-bit (non-sign). 4 bit (non sign).
Hardware 1011 0 x 1110 10011010 Microcode 1011 0 x 1110 0000 1011. 1011 1011.. 1011... 10011010
ENIS 2012-2013 Cours DSP Chapitre 1

Cycle Cycle C l Cycle Cycle

1 2 3 4
30

Cycle 5

Paramtres considrer
Parameter Arithmetic format Extended floating point Extended Arithmetic Performance (peak) Number of hardware multipliers Number of registers g Internal L1 program memory cache Internal L1 data memory cache Internal L2 cache TMS320C6211 (@150MHz) 32-bit N/A 40-bit 1200MIPS 2 (16 x 16-bit) with 32bit result 32 32K 32K 512K TMS320C6711 (@150MHz) 32-bit 64 bit 64-bit 40-bit 1200MFLOPS 2 (32 x 32-bit) with 32 or 64-bit result 32 32K 32K 512K

C6711 Datasheet: \Links\TMS320C6711.pdf C6211 Datasheet: \Links\TMS320C6211.pdf


ENIS 2012-2013 Cours DSP Chapitre 1 31

Paramtres considrer
Parameter P t I/O bandwidth: Serial Ports (number/speed) DMA channels Multiprocessor support Supply voltage Power management On-chip On chip timers (number/width) Cost g Package External memory interface controller JTAG TMS320C6211 (@150MHz) 2 x 75Mbps 16 Not inherent 3.3V I/O, 1.8V Core Yes 2 x 32 bit 32-bit US$ 21.54 256 Pin BGA Yes Yes TMS320C6711 (@150MHz) 2 x 75Mbps 16 Not inherent 3.3V I/O, 1.8V Core Yes 2 x 32 bit 32-bit US$ 21.54 256 Pin BGA Yes Yes

ENIS 2012-2013

Cours DSP Chapitre 1

32

Algorithmes typiques du DSP g yp q


La somme des produits (SOP) est llment cl dans la plupart des algorithmes:
Algorithm Finite Impulse Response Filter Equation

y ( n) =

a
k =0
M k =0 N

x(n k )

Infinite Impulse Response Filter

y ( n) =

a
k =0

x ( n k )+

b
k =1

y (n k )

Convolution

y ( n) =

x ( k ) h( n k ) x(n) exp[ j(2 / N )nk ]


n =0 N 1 N 1

Discrete Fourier Transform

X (k ) =

Discrete Cosine Transform

F (u ) =

c(u ). f ( x). cos u (2 x + 1) 2N x =0

ENIS 2012-2013

Cours DSP Chapitre 1

33

DSP virgule f S flottante / Fixe


Applications qui exigent: pp q g
h t prcision. haute i i dynamique large. y q g Rapport signal/bruit lev. F ili d' ili i Facilit d'utilisation.

Ayez besoin d'un processeur de virgule flottante.


ENIS 2012-2013 Cours DSP Chapitre 1 34

DSP virgule fl tt t / Fi i l flottante Fixe


Cest lapplication qui dfinie la plateforme utiliser dans le but dobtenir les performances optimums faible prix. Pour un but ducatif, utiliser un DSP virgule pp ( ) q peut supporter les flottante (6711 ou 6713) qui p oprations virgule flottante et fixe.
Cours DSP Chapitre 1 35

ENIS 2012-2013

DSP virgule flottante / Fixe


Inconvnient des processeurs virgule flottante:
Consommation de puissance plus lev Peut tre plus coteux. Peut tre moins rapide que le DSP virgule fixe et de taille plus importante.
ENIS 2012-2013 Cours DSP Chapitre 1 36

Quelques DSPs DSP s

MIPS : Million dInstruction Par Seconde d Instruction


ENIS 2012-2013 Cours DSP Chapitre 1 37

DSP / GPP Consommation dnergie

ENIS 2011-2012

Cours DSP Chapitre 1

38

Reprsentation des nombres p


Les DSP virgule fixe
Les donnes sont reprsentes comme tant des nombres fractionnaires virgule fixe, (exemple -1.0 +1.0), ou comme des entiers classiques. La reprsentation de ces nombres fractionnaires sappuie la mthode du complment deux. Permet facilement laddition binaire de nombres positifs et ngatifs.

Les DSP virgule flottante


Les donnes sont reprsentes en utilisant une mantisse et un exposant exposant. La reprsentation de ces nombres seffectue selon la formule suivante : n = mantisse x 2exposant Gnralement, la mantisse est un nombre fractionnaire (-1.0 +1.0), et lexposant est un entier indiquant la place de la virgule en base 2.
ENIS 2011-2012 Cours DSP Chapitre 1 39

Reprsentation des nombres p

ENIS 2012-2013

Cours DSP Chapitre 1

40

Reprsentation des nombres p


Virgule fixe

ENIS 2012-2013

Cours DSP Chapitre 1

41

Reprsentation des nombres


Virgule flottante

ENIS 2012-2013

Cours DSP Chapitre 1

42

Reprsentation des nombres


Virgule flottante

ENIS 2012-2013

Cours DSP Chapitre 1

43

Texas Instruments TMS320 family Instruments


Les diffrents familles et sous families existent pour soutenir diffrents marchs
C2000 C5000 C6000

Lowest Cost
Control Systems Motor Control Storage Digital Ctrl Systems

Efficiency
Best MIPS per Watt / Dollar / Size Wireless phones p Internet audio players Digital still cameras Modems Telephony VoIP
Cours DSP Chapitre 1

Performance & Best Ease-of-Use


Multi Channel and Multi Function App s App's Comm Infrastructure Wireless Base-stations DSL Imaging Multi-media Servers Video
44

ENIS 2012-2013

C6000 Roadmap
Software Compatible Perfor rmance e
Floating Point Floating Point Multi-core Multi-core C64x DSP C64x DSP 1.1 GHz 1.1 GHz

2nd Generation (Fixed Point)


C64x DSP C64 DSP C64x
General Purpose

C6414 C6414

C6415 C6415

C6416 C6416

1st Generation

C62x C6713 C6205 C6201 C67x C6211 C6701 C6711 C6712

C6203 C6204 C6202

e st anc e gh orm Hi rf Pe

C6411 C6411

3G Wireless Media Gateway Infrastructure

Fixed-point p Floating-point

Time
ENIS 2012-2013 Cours DSP Chapitre 1 45

Internet

Plus dinformation
Website: www.ti.com dspvillage.com FTP: ftp://ftp.ti.com/pub/tms320bbs ftp://ftp.ti.com/pub/tms320bbs FAQ: http://www-k.ext.ti.com/sc/technical_support/knowledgebase.htm Q: http://wwwp pp g

Device information Application notes pp Technical documentation USA - Product Information Center ( PIC )

TI & ME News and events Training

Other Resources

Phone: 972-644-5580 972-644Email: sc-infomaster@ti.com scInformation and support for all TI Semiconductor products/tools Submit suggestions and errata for tools, silicon and documents Software Registration/Upgrades: S ft R i t ti /U d Hardware Repair/Upgrades: Enroll in Technical Training: g 972-293972-293-5050 281-274-2285 281-274www.ti.com/sc/training g
(choose Design Workshops) Workshops)
46

ENIS 2012-2013

Cours DSP Chapitre 1

Manuels cls de la famille C6000


Hardware SPRU189 SPRU189 - CPU and I d Instruction S R f G id i Set Ref. Guide SPRU190 SPRU190 - Peripherals Ref. Guide SPRU401 SPRU401 - P i h Peripherals Chip Support Lib. Ref. l Chi S Lib R f Software SPRU198 SPRU198 - Programmers Guide SPRU303 SPRU303 - C6000 DSP/BIOS Users Guide User s Code Generation SPRU186 SPRU186 - Assembly Language Tools Users Guide SPRU187 SPRU187 - Optimizing C Compiler Users Guide p g p
Refer to the C6000 Family Update handout for full list
ENIS 2012-2013 Cours DSP Chapitre 1 47

Literature sud les DSP


A Simple Approach to Digital Signal Processing by Craig Marven and Gilli Ewers; ISBN 0-4711-5243-9 b C i M d Gillian E 4711-5243-

DSP Primer (Primer Series) by C. B i b C Britton Rorabaugh; ISBN 0-0705-4004-7 Rorabaugh R b h; 0705-4004-

A DSP Primer : With Applications to Digital Audio and Computer Music by Ken Steiglitz; ISBN 0-8053-1684-1 Music

DSP First : A Multimedia Approach James H McClellan Ronald W Schafer Mark A. Yoder; H. McClellan, W. Schafer, A ISBN 0-1324-3171-8
ENIS 2012-2013 Cours DSP Chapitre 1 48

Literature sud les DSP


Digital Signal P Di it l Si l Processing I l i Implementation t ti using the TMS320C6000TM DSP Platform TMS320C6000TM by Naim Dahnoun; ISBN 0201-61916-4 0201-61916-

C6 Based Digital Si C6x-B d Di it l Signal Processing lP i by Nasser Kehtarnavaz and Burc Simsek; ISBN 0-13-088310-7 13-088310-

ENIS 2012-2013

Cours DSP Chapitre 1

49

Programmation des DSP g


Il est relativement facile d'crire un programme pour un DSP, grce aux compilateurs C interfacs avec le DSP DSP. La faon d'crire le programme C a une influence significative sur l'efficacit du code gnr. Il existe une phase d'adaptation du code C un code DSP, permettant au compilateur de tirer le meilleur parti de l'architecture de calcul.

ENIS 2012-2013

Cours DSP Chapitre 1

50

Programmation des DSP de TI g


Code Composer Studio (CCS) : Le logiciel de pilotage de la carte DSP p ( ) g p g est un logiciel trs performant comportant un ensemble complet d'outils de dveloppement d'applications sur DSP. Il permet aussi d'augmenter et d'amliorer le processus de dveloppement pour les programmeurs qui cherchent crer et tester en pp p p g q temps rel des applications de traitement de signal. disposition d des outils pour configurer, construire, excuter, Il met en di t iti til fi t i t suivre et analyser des programmes.

ENIS 2012-2013

Cours DSP Chapitre 1

51

Programmation des DSP g


1) crire le code C 2) Optimiser le code C

3) crire le code assembleur linaire

ENIS 2012-2013

Cours DSP Chapitre 1

52

Programmation des DSP de TI g

ENIS 2012-2013

Cours DSP Chapitre 1

53

ENIS 2012/2013

Chapitre II : p

Architectures des DSPs DSP s

Plan

Ch prcdent

Ch suivant

Sommaire
Types de structures mmoire Les caches dans les DSP volution des DSP
SIMD (DSP16xxx, ADSP-2116x, ) Superscalaire (LSI401Z, ) VLIW (TMS320 C6 ) C6x) DSP conventionnels multicore Processeurs hybrides ARM+DSP

ENIS 2012-2013

Cours DSP Chapitre 2

55

Perspective historique p q
1970

1971: 1972: 1974:

Intel 4004 Intel 8008 1er microcontrleur : TMS 1000 1er ordinateur personnel (8008)

1980

1979: 1980:
1981: 1982:

1er DSP single-chip : Bell Labs Mac 4


Intel 8086

1er DSP autonome : NEC PD7710


IBM PC (8088) Intel 80286

1990

1983:
1985: 1986: 1989: 1993:

1er succs commercial pour un DSP : TMS 320 C10


Intel 386 MIPS -> R2000, premier microprocesseur RISC commercial Intel 486 (utilisation dun pipeline) Intel Pentium, PowerPC 601

2000

1996:
1999: 2000:

1er DSP VLIW : TMS 320 C62xx


Pentium III Pentium 4

ENIS 2012-2013

Cours DSP Chapitre 2

56

Historique des Processeurs sto que ocesseu s


1e gnration 79- Architecture Harvard Multiplieur cabl 2e ti 2 gnration 85 85- Paralllisme Bus multiples Mmoire sur la puce 3e gnration 88- Virgule flottante

4e gnration 92- Image et vido Processeurs faible consommation 5e gnration 97- VLIW Hybrides Multicore DSP + RISC

ENIS 2012-2013

Cours DSP Chapitre 2

57

Types de structures mmoire


Von Neuman
Un seul chemin d'accs la d accs mmoire Architecture des processeurs dusage gnral (Pentium, 68000)

Harvard
Sparation d mmoires S ti des i programme et donnes Meilleure utilisation du CPU : Chargement du programme p et des donnes en parallle Architecture des DSP

ENIS 2012-2013

Cours DSP Chapitre 2

58

Les types de structures mmoire

Principales diffrences :
Bande passante (accs instruction et donne simultans ou non) Mmoires (cot, surface) Contrle plus ou moins complexe

ENIS 2012-2013

Cours DSP Chapitre 2

59

Cache d'instructions d instructions


DSP
Mmoire Cache dinstructions

Mmoire Instruction

CPU
Mmoire Cache de donnes

Mmoire Donnes

Cache = mmoire rapide

Contient les dernires instructions excutes excutes.

Utile en cas de boucle


Accs aux instructions sans accs en mmoire programme. Libre le bus pour des donnes.

ENIS 2012-2013

Cours DSP Chapitre 2

60

DSP hautes performances

1 mmoire + bus pour les instructions (et les constantes en immdiat) 2 mmoires + bus pour les donnes

ENIS 2012-2013

Cours DSP Chapitre 2

61

volution hautes performances p des DSP


Comment acclrer l programmes ? C l les PARALLELISME Solutions courantes : SIMD : DSP16xxx, ADSP-2116x Superscalaire : LSI401Z S l i VLIW : TMS320 C6x Approches combines : VLIW + SIMD : TigerSHARC

ENIS 2012-2013

Cours DSP Chapitre 2

62

DSP SIMD
SIMD = Single Instruction Multiple Data Deux types de SIMD Units parallles

Effectuent la mme opration sur des donnes diffrentes Exemple : ADSP-2116x S Partage un mot de donne en sous-mots Effectue les calculs sur les sous-mots Exemple : instructions MMX du Pentium

Partage de lunit de traitement l unit

Demande un effort du programmeur Efficace pour des algorithmes parallles

ENIS 2012-2013

Cours DSP Chapitre 2

63

DSP SIMD : ADSP-21160 SHARC


SIMD = Single Instruction Multiple Data Instruction,

Dcodage des instructions simples Demande un paralllisme bien spcifique p p q


ENIS 2012-2013 Cours DSP Chapitre 2 64

DSP SIMD
Le TigerSHARC dAnalog Devices met en uvre les deux types de SIMD : g g y

Instruction MAC SIMD


SIMD par units parallles Unit de calcul n1 Unit de calcul n2

ALU

MAC

Shift

ALU

MAC

Shift

SIMD par partage de lunit de traitement (split MAC) (split-MAC) 4 multiplications 16 bits 4 multiplications 16 bits au lieu de au lieu de 1 multiplication 64 bits 1 multiplication 64 bits

ENIS 2012-2013

Cours DSP Chapitre 2

65

DSP superscalaire LSI401Z p

Le processeur se charge de tout : dtection, ordonnancement, ... Circuit de contrle complexe (vitesse surface et consommation) (vitesse,
ENIS 2012-2013 Cours DSP Chapitre 2 66

DSP VLIW : TMS320C62x


VLIW = Very Large Instruction Word y g

VLIW 8 voies (instructions 32 bits soit busI de 256 bits) bits, Paralllisme dans les instructions (compilateur ou assembleur) Contrle plus simple que superscalaire
ENIS 2012-2013 Cours DSP Chapitre 2 67

DSP VLIW : TMS320C6x


VLIW = Very Large Instruction Word
Data path : Deux ensembles dunits de ( ) traitement (1 et 2) Instruction de 256 bits : 8 sous-instructions de 32 bits Units logique .L : Arithmtique et comparaisons Unit de dcalage .S : S ALU et Shifter Units de multiplication .M : Multiplication Units de donnes .D : Mouvement de donnes de / vers la mmoire
C62x/C67x CPU Interrupt I Control Instruction Fetch Instruction Dispatch Instruction Decode Control C t l Registers Emulation

Data Path 1 Register File R i t Fil A


A15-A0

Data Path 2 Register File R i t Fil B


B15-B0

L1 +

S1 + +

M1

D1 +

D2 +

M2

S2 + +

L2 +

ENIS 2012-2013

Cours DSP Chapitre 2

68

DSP VLIW : TMS320C6x


Instruction de 256 bits 8 sous-instructions d 32 bit i t ti de bits
32 bits 32 bits 32 bits 32 bits 32 bits 32 bits 32 bits 32 bits

L1
+

S1
+ +

M1

D1
+

D2
+

M2

S2
+ +

L2
+

ENIS 2012-2013

Cours DSP Chapitre 2

69

DSP conventionnels multicore


Gravure sur la mme puce de p deux curs DSP indpendants. Communication entre les deux : Mmoire partage Interface FIFO

Shared memory two-way RAM : permet l'accs simultan la mmoire par les deux curs DSP
ENIS 2012-2013 Cours DSP Chapitre 2

Architecture du C5421
70

Processeurs hybrides ARM+DSP ARM DSP


Systmes de vido numrique : encodage/dcodage Outils de dveloppement SoC bas DSP
Linux embarqu q

Codecs multimdia

Exemples Texas : DaVinci 644x Motorola : 56800E


Les processeurs ARM construits par Acorn RISC Machines.
ENIS 2012-2013 Cours DSP Chapitre 2 71

Modes dadressage standards g


Le mode d'adressage gnral: registre: l'oprande est un registre du CPU. immdiat court: l'oprande est une valeur immdiate 16 bits. l oprande direct: l'oprande est le contenu d'une adresse de 24 bits. indirect: un registre auxiliaire indique l'adresse de l'oprande. Le mode d'adressage trois oprandes: registre (identique). indirect (identique). L mode d' d Le d d'adressage parallle: lll registre: l'oprande est un registre prcision tendue. indirect (identique).

ENIS 2012-2013

Cours DSP Chapitre 2

72

Modes dadressage standards g


Le mode d'adressage immdiat long: l'oprande est une valeur immdiate 24 bits l oprande bits. Le mode d'adressage branchement conditionnel: registre (identique).. relatif au PC: un dplacement sign sur 16 bits est ajout au PC PC.

ENIS 2012-2013

Cours DSP Chapitre 2

73

Modes dadressage standards g


Les modes dadressage ont une grande importance pour garantir la haute d adressage performance (moins dinstructions). Mais, ceci augmente la complexit architecturale des DSP (dcodage plus complexe, surface de circuit plus importante). importante) Instruction typique :
Opration Source 1

OP

SRC1, SRC2, DEST


Source 2 Destination

Les DSP possdent des instructions usage gnral et des instructions arithmtiques intensives qui sont particulirement convenables pour le traitement du signal et les autres applications numriques intensives. Cinq groupes pour le mode d'adressage sont fournies, six types d adressage d'adressage peuvent tre utiliss dans chaque groupe:
ENIS 2012-2013 Cours DSP Chapitre 2 74

Les caches dans les DSP


L accs Laccs une mmoire externe ou des mmoires internes de externe, grande taille, est coteuse en terme temps et/ou nergie. Solution : Intgrer des mmoires caches
Diminuer le trafic mmoire externe / CPU d adressage Modes dadressage spcifiques (circulaire) Optimisation du code

Les mmoires caches sont caractrises par :


Cot lev. Petites tailles (32 instructions 2 K instructions) instructions). Cache instruction et cache donnes. Configurables par lutilisateur g p

Ces caractristiques particulires sont indispensables pour garantir les bonnes performances pour le traitement en temps rel. p p p
ENIS 2012-2013 Cours DSP Chapitre 2 75

Exemples de caractristiques mmoires et caches

ENIS 2012-2013

Cours DSP Chapitre 2

76

ENIS 2012/2013

C ap e Chapitre III :

Architecture Interne du TMS320 C64x

Plan

Ch prcdent

Ch suivant

Sommaire
Units fonctionnelles Registres Paquet de fetch et dexcution Structure dune instruction d une Pipeline Mmoire cache Jeu dinstruction Diffrents modes dadressages Syntaxe des instructions Contraintes
ENIS 2011-2012 Cours DSP Chapitre 3 78

Units fonctionnelles
Deux chemins de donnes : A et B Chaque chemin contient 4 units de traitement :
( ) (.M) : Multiplication p (.L) : Opration logique et arithmtique (.S) ( S) : Branchement et manipulation binaire (.D) : Chargement et stockage des donnes

64 registres de 32 bits (A0 A31) et (B0 B31) 2 chemins croiss (1x et 2x) (cross path)
Chemin de donnes A
Registre A0 A31

Chemin de donnes B
Registre B0 B31

.L1

.S1

.M1

.D1

.L2

.S2

.M2

.D2

Chemin crois
ENIS 2012-2013 Cours DSP Chapitre 3 79

Registres
Registres A0, A1, A2, B0, B1 et B2 peuvent tres utiliss comme des eg st es co d t o registres condition. Registres A4 A7 et B4 B7 : pointeur pour le mode dadressage circulaire. c cu a e Registres A0 A9 et B0 B9 : registre temporaire. Registre A10 A31 et B10 B31 : mmoriss et puis restaurs chaque appel un sous programme. On peut former 32 registres de 40 ou 64 bits en utilisant les paires de registres A0:A1, A2:A3, et B30:B31. Il existe dautres registres de contrles dinterruptions de modes d autres contrles, d interruptions, modes, etc.

ENIS 2012-2013

Cours DSP Chapitre 3

80

Paquet de Fetch et dExcution d Excution


VELOCI TI : architecture l b par TI b sur l structure VLIW hit t labore base la t t (Very Long Instruction Word) Instruction : 4 octets = 32 bits PE : PF : paquet excutable: groupe dinstructions excutables en // p pendant un seul cycle y paquet Fetch form de 8 instructions peut contenir 1 PE (si toutes les 8 Insts en //) ou 8 PE (pas dinsts en // ) Le LSB dune instruction (p-bit) indique si la prochaine instruction appartiennent au mme PE (si 1) ou non (si 0).
ENIS 2012-2013 Cours DSP Chapitre 3 81

Paquet de Fetch et dExcution d Excution


Exemple 1 : E l
Instruction A Instruction B
31 0 31 0 31 0 31 0 31 0 31 0 31 0 31 0

Un PF avec 3 PEs le LSB (p-bit) de chaque Intr

Instruction C Instruction D Instruction E Instruction F Instruction G Instruction H

1 A B

0 C

1 D

0 E

1 F G

1 H

ENIS 2012-2013

Cours DSP Chapitre 3

82

Paquet de Fetch et dExcution d Excution


Exemple 2:

ENIS 2011-2012

Cours DSP Chapitre 3

83

Paquet de Fetch et dExcution d Excution


Exemple 3:

Exemple 4:

ENIS 2012-2013

Cours DSP Chapitre 3

84

Rappel: Pipeline

Cycles dhorloges
1 2 3 4 5 6 7 8 9

Non-Pipelin N Pi li Pipelin

PF1 PF1

D1 D1

E1 E1

PF2 D2

E2 PF3 D3 E3

PF2 D2

E2 E3

PF3 D3

(tout les tages oprent simultanment avec lexcution dune instruction / cycle)

Pipeline complet

ENIS 2012-2013

Cours DSP Chapitre 3

85

Pipeline
PG PS PW PR DP DC E1 E2 E3 E4 E5 E6

Fetch

Decode

Execute

Extraction du programme (Fetch) Rpartition des instructions (Di R titi d i t ti (Dispatch) t h) Dcodage des instructions
Chemin de donnes A
Registre A0 A31 .L1 .S1 .M1 .D1 .L2

Chemin de donnes B
Registre B0 B31 .S2 .M2 .D2

ENIS 2012-2013

Cours DSP Chapitre 3

86

Pipeline
tapes d extraction du Programme dextraction (fetch, PF)

PG Gnration G ti dadresse Dans le CPU

PS Transmission d T i i de ladresse ( la mmoire)

PW Attente accs mmoire

PR Rception et l t R ti t lecture du PF (au CPU)

PR

C6 C6x CPU

Memory PS PW
ENIS 2012-2013 Cours DSP Chapitre 3

PG
87

Pipeline
tape du dcodage dinstruction (D)

DP Rpartition des instructions dun PF sous f d forme d PE de

DC Dcodage des PEs

PR

C6 C6x CPU DC

Func Units DP

Memory
PS PW

PG

ENIS 2012-2013

Cours DSP Chapitre 3

88

Pipeline
Jusqu 6 cycles et tout dpend de linstruction !! l instruction
tape dexcution (E)

E1 courtes inst (ADD, SUB, AND, OR, XOR, etc) , )

E2 Instruction MPY

E3; E4 Slots de retard

E5 Chargement des valeurs dans un registre g

E6 Branchement

Etage rserve pour les instructions longues

ENIS 2012-2013

Cours DSP Chapitre 3

89

Pipeline

ENIS 2012-2013

Cours DSP Chapitre 3

90

Pipeline
Pour complter le sujet du pipeline, on va voir travers un exemple la manire dont un DSP excute des instructions en // et pipelines. Considrons les 3 exemples suivants :
a) Srie
B .S1 MVK .S1 ADD .L1 ADD .L1 L1 MPY .M1 MPY .M1 LDW .D1 LDB .D1

b) Parallle Partielle
B .S1 || MVK .S2 ADD || ADD || MPY MPY || LDW || LDB .L1 .L2 L2 .M1 .M1 .D1 D1 .D2

c) Parallle totale
B .S1 MVK .S2 ADD .L1 ADD .L2 L2 MPY .M1 MPY .M2 LDW .D1 LDB .D2 D2

|| || || || || || ||

ENIS 2012-2013

Cours DSP Chapitre 3

91

Pipeline
Excution en Srie (1er exemple) Une seule INSTRUCTION par Cycle entre dans le pipeline En arrivant ltape DP (Decode),

Cycle = 4

a) Srie
B .S1 MVK .S1 ADD .L1 ADD .L1 MPY .M1 MPY .M1 LDW .D1 LDB .D1

PF
PR B MVK ADD ADD MPY MPY LDW LDB

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 3

92

Pipeline
Excution en Srie (1er exemple) Une seule INSTRUCTION par Cycle entre dans le pipeline En arrivant ltape DP (Decode),

Cycle = 5

a) Srie
B .S1 MVK .S1 ADD .L1 ADD .L1 MPY .M1 MPY .M1 LDW .D1 LDB .D1

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 3

93

Pipeline
Excution en Srie (1er exemple) Une seule INSTRUCTION par Cycle entre dans le pipeline En arrivant ltape DP (Decode),

Cycle = 6

a) Srie
B .S1 MVK .S1 ADD .L1 ADD .L1 MPY .M1 MPY .M1 LDW .D1 LDB .D1

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 3

94

Pipeline
Cycle = 7

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 3

95

Pipeline
Cycle = 8

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 3

96

Pipeline
Cycle = 9

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 3

97

Pipeline
Cycle = 10

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 3

98

Pipeline
Cycle = 11

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 3

99

Pipeline
Cycle = 12

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6 B

Done

ENIS 2012-2013

Cours DSP Chapitre 3

100

Pipeline
Cycle = 13

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 3

101

Pipeline
Cycle = 14

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 3

102

Pipeline
Cycle = 19

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 3

103

Pipeline
Excution E ti en // partielle (2eme exemple) ti ll l) Comment crire des instructions en //? On utilise le symbole || :

B .S1 || MVK .S2 S2 ADD || ADD || MPY MPY || LDW || LDB


ENIS 2012-2013

.L1 L1 .L2 .M1 M1 .M1 .D1 . .D2


Cours DSP Chapitre 3 104

Pipeline
Excution en // partielle (2eme exemple) Comment crire des instructions en //? On utilise le symbole || :

Cycle = 6

PF
B .S1 S1 || MVK .S2 ADD || ADD || MPY MPY || LDW || LDB .L1 .L2 .M1 .M1 .D1 .D2 PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 3

105

Cycle = 7

PF
PF

Decode
DP DC E1

Execute E t
E2 E3 E4 E5 E6

Done D

Cycle = 8

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 3

106

Cycle = 9

PF
PF

Decode
DP DC E1

Execute E t
E2 E3 E4 E5 E6

Done D

Cycle = 10

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 3

107

Cycle = 11

PF
PF

Decode
DP DC E1

Execute E t
E2 E3 E4 E5 E6

Done D

Cycle = 12

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 3

108

Cycle = 13

PF
PF

Decode
DP DC E1

Execute E t
E2 E3 E4 E5 E6

Done D

Cycle = 14

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 3

109

Pipeline
Excution en // totale On a dj vu un PF contenant 8 instructions en srie ou 3 PEs en utilisant le paralllisme Il est paralllisme. possible que toutes les instructions soient en //. On aura donc un seul PE.

Parallle totale
B .S1 MVK .S2 ADD .L1 L1 ADD .L2 MPY .M1 MPY .M2 LDW .D1 D1 LDB .D2

|| || || || || || ||

ENIS 2012-2013

Cours DSP Chapitre 3

110

Pipeline
Cycle = 7

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 3

111

Cycle = 8

PF
PF

Decode D d
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

Cycle = 9

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 3

112

Cycle = 11

PF
PF

Decode D d
DP DC E1

Execute
E2 E3 E4 E5 B E6

Done

LDW LDB

MVK ADD ADD MPY MPY

Cycle = 13

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done
B MVK ADD ADD MPY MPY LDW LDB

ENIS 2012-2013

Cours DSP Chapitre 3

113

Bus interne du C6000


Program Addr
Internal Memory

x32

Program Data x256 g Datax Data Addr Data Data - T1 - T1 - T2 - T2 x32 x32/64 32/ x32 x32/64 32/ x32 x32 x32 x32

PC A
regs

External Memory

Data Addr Data Data

B
regs g

DMA Addr - Read DMA Data - Read


Peripherals

DMA Addr - Write DMA Data - Write

DMA

C62x: Dual 32-Bit Load/Store 62x: 32C64x: Dual 64-Bit Load/Store 64x: 64C67x: Dual 64-Bit Load / 32-Bit Store 67x: 6432-

ENIS 2012-2013

Cours DSP Chapitre 3

114

Bloc Diagramme du systeme


Internal Memory

External Memory

Internal Buses

.D1 .D2 .D1 .D2 .M1 .M2 .M1 .M2 .L1 .L2 .L1 .L2 L L .S1 .S2 .S1 .S2
CPU

Re Re egister S B egister S B Set Set

Register S A Register S A Set Set

ENIS 2012-2013

Cours DSP Chapitre 3

115

Contrleurs daccs mmoire d accs


DMA : Contrleur du transfert des donnes entre les plages dadresse de la mmoire sans linterfrence du CPU. Form par 4 p g q canaux programmables et un cinquime auxiliaire. EDMA : mme chose que le DMA mais avec 16 canaux programmable et une RAM pour la mmorisation de plusieurs configurations pour des transferts projet. HPI : interface parallle du processeur host permettant laccs direct lespace mmoire du CPU pour changer le contenu des registres l espace dtat. EMIF : remplace le HPI. Il permet lchange asynchrone dinformation entre non seulement le CPU et le Processeur host mais aussi avec lextrieur t l t i travers l ports dE/S . les t
ENIS 2012-2013 Cours DSP Chapitre 3 116

'C6000 Peripherals
XB, PCI, Host Port GPIO Internal Memory

External Memory

EMIF McBSPs Utopia DMA, EDMA (Boot) Timers VCP TCP

Internal Buses

.D1 .D2 .D1 .D2 .M1 .M2 .M1 .M2 .L1 .L2 .L1 .L2 L L .S1 .S2 .S1 .S2
CPU

Re Re egister S B egister S B Set Set

Register S A Register S A Set Set

ENIS 2012-2013

Cours DSP Chapitre 3

117

EMIF
Async
Internal Memory

SDRAM

EMIF

Internal Buses

.D1 .D2 .D1 .D2 .M1 .M2 .M1 .M2 .L1 .L2 .L1 .L2 L L

Re Re egister S B egister S B Set Set

Register S A Register S A Set Set

SBSRAM

External Memory Interface (EMIF) .S1 .S2 (EMIF) .S1 .S2 Glueless access to async/sync memory async/sync
CPU Works with PC100 SDRAM (cheap, fast, and easy!) PC100 ByteByte-wide data access 16, 32, 6416, 32, or 64-bit bus widths
ENIS 2012-2013 Cours DSP Chapitre 3

118

HPI / XBUS / PCI


XBUS, PCI, Host Port Internal Memory

External Memory

EMIF

Internal Buses

Parallel Peripheral Interface


HPI:

.D1 .D2 .D1 .D2 .L1 .L2 .L1 .L2 L L

Re Re egister S B egister S B Set Set

.M1 .M2 Dedicated, slave-only, async 16/32-bit bus1 .M2 host-P slave16/32- .M allows hostaccess to C6000 memory C6000 y

XBUS: Similar to HPI but provides .S1 .S2 .S1 .S2 Master/slave and sync modes Glueless i/f to FIFOs (up to single-cycle xfer rate) Gl l FIFO ( singlei l l f ) CPU PCI: Standard 32-bit, 33MHz PCI interface 3233MHz These interfaces provide means to bootstrap the C6000 C6000
ENIS 2012-2013 Cours DSP Chapitre 3

Register S A Register S A Set Set

119

GPIO
XB, PCI, Host Port GPIO Internal Memory

External Memory

EMIF

Internal Buses

.D1 .D2 .D1 .D2 .M1 .M2 .M1 .M2 .L1 .L2 .L1 .L2 L L .S1 .S2 .S1 .S2

Re Re egister S B egister S B Set Set

General Purpose Input/Output (GPIO)


Use to b U t observe or control th signal of a single-pin t l the i l f single- i i l
ENIS 2012-2013 Cours DSP Chapitre 3

CPU C64x C64x provides 8 or 16 bits of general purpose bitwise I/O

Register S A Register S A Set Set

120

XB, PCI, Host Port GPIO

Internal Memory

External Memory

EMIF McBSPs Utopia

Internal Buses

.D1 .D2 .D1 .D2

Re Re egister S B egister S B Set Set

.M1 .M2 .M1 .M2 ) MultiMulti-Channel Buffered Serial Port (McBSP) (McBSP
2 (or 3) full-duplex, synchronous serial-ports .L1 .L2 full-duplex ull serial.L1 .L2 L L Up to 100 Mb/sec performance Supports multi-channel operation (T1, E1, MVIP, ) 2 multi(T1 E1 .S1 .S2 .S1 .S CPU ATM connection 50 MHz wide area network connectivity
ENIS 2012-2013 Cours DSP Chapitre 3

Register S A Register S A Set Set

Utopia (C64x) (C64x

121

DMA / EDMA
XB, PCI, Host Port GPIO Internal Memory

External Memory

EMIF McBSPs Utopia DMA, EDMA (Boot)

Internal Buses

.D1 .D2 .D1 .D2 .M1 .M2 .M1 .M2 .L1 .L2 .L1 .L2 L L

Re Re egister S B egister S B Set Set

Direct Memory Access (DMA / EDMA)

.S1 .S1 .S2 Transfers any set of memory locations to another .S2 y y 4 / 16 / 64 channels (transfer parameter sets) CPU Transfers can be triggered by any interrupt (sync) Operates independent of CPU On reset, provides bootstrap from memory
Cours DSP Chapitre 3

Register S A Register S A Set Set

ENIS 2012-2013

122

Timer/Counter
XB, PCI, Host Port GPIO Internal Memory

External Memory

EMIF McBSPs Utopia DMA, EDMA (Boot) Timers

Internal Buses

.D1 .D2 .D1 .D2 .M1 .M2 .M1 .M2 .L1 .L2 .L1 .L2 L L .S1 .S2 .S1 .S2
CPU

Re Re egister S B egister S B Set Set

Register S A Register S A Set Set

Timer / Counter
Two (or three) 32-bit timer/counters 32Can generate interrupts Both input and output pins input
ENIS 2012-2013 Cours DSP Chapitre 3

123

Phase Locked Loop (PLL)


XB, PCI, Host Port GPIO Internal Memory

External Memory

EMIF McBSPs Utopia

Internal Buses

.D1 .D2 Input .D1 .D2


CLKIN 1 .M1 .M

Regis Set A Regis Set A ster ster A A

Regis Set B Regis Set B ster ster B B

DMA, EDMA PLL (Boot) External clock multiplier Reduces EMITimerscost and VCP Pin selectable TCP PLL
ENIS 2012-2013

.M2 .M2

Output.L1 .L2 p .L1 .L2 L L

CLKOUT1 CLKOUT1 .S1 .S2 .S1 .Sof - Output rate 2 PLL - Instruction (MIP) rate CPU CLKOUT2 CLKOUT2 - 1/2 rate of CLKOUT1 CLKOUT1
124

Cours DSP Chapitre 3

'0x Memory Scheme


0000_ 0000_0000 A Memory Map is a table representation of memory p y This is more convenient than a block diagram description g p 0100_ 0100_0000 0140_ 0140_0000 16MB 16MB External CE0 CE 0 (CE0 ) CE0
CE1 CE 1 External (CE1) (CE1

Internal Program

0000_0000 0140_ 0140_0000


Program

0100_0000 16 MB
CE1 CE1

CE0 CE0

4 MB

C6000 CPU

EMIF 8000_ 8000_0000


Data

0200_ 0200_0000
CE2 CE2

0300_ 0300_0000 16 MB
CE3 CE3

16 MB
125

ENIS 2012-2013

Cours DSP Chapitre 3

'0x Memory Scheme


0000_ 0000_0000 16MB 16MB External CE0 CE 0 (CE0 ) CE0 0100_ 0100_0000
Program

CE1 CE 1 4MB External (CE1 ) CE1

0140_ 0140_0000
CE0 CE0

Internal Program 16MB 16MB External CE2 CE 0 (CE2 ) CE0 16MB 16MB External CE3 CE 0 (CE3 ) CE0 Internal Data e

0200_ 0200_0000

C6000 CPU

EMIF

CE3 CE3

0300_ 0300_0000
Data

8000_0000

FFFF_FFFF
ENIS 2012-2013 Cours DSP Chapitre 3 126

Mmoire cache L1

L1P : Le C6x contient une mmoire cache programme de 32 bits de bus p g dadresses et de 256 bits (bus de donnes). q Not que : 1 PF = 256 bits = 8*32 = 8 instructions! L1D: Le C64x contient une mmoire cache de donnes de 64 bits (bus de donnes) et de 32 bits (bus dadresses). ) ( ) Remarque : Le C62x et le C67x contiennent 32 bits de bus de donnes.

ENIS 2012-2013

Cours DSP Chapitre 3

127

Cache L1P
RAM externe

Cache L2P
256Ko-1024Ko 256Ko 1024Ko

Mmoire cache L1P

DSP C64

16 Ko

Not bien: pas de RAM interne 4 Go


Cours DSP Chapitre 3 128

Cache L1P
31 14 13 5 4 0

Tag

Set Index

Offset

TAG (18 bits) : il contient les MSB de ladresse. Stock dans une mmoire tampon pour indiquer la prsence de la plage dadresse dsire dans la cache ou non. Set Index (9 bits) : un set est une collection de ligne de trame. Dans un systme dadressage direct chaque set contient une d adressage direct, seule ligne. Offset (5 bits) : dtermine loffset dans une ligne et permet par consquent ladressage par octet dans un PF.
ENIS 2012-2013 Cours DSP Chapitre 3 129

Exemple
Supposons que nous avons un DSP fictif, avec un bus dadresse gale 5 bits: RAM Tag = 00
00000 00001 ...
...

5 bits DSP
Bus dadresse

00111

Tag = 01

01000 01001 ...


...

01111
TAG (2 bits)

3 bits Tag = 11
11000 11001
...

... 11111
ENIS 2012-2013 Cours DSP Chapitre 3

Mmoire cache
130

Cache L1P
Set/Cache ligne g
0 1 2 3 4 5 511 31 31 31 31 31 31 31 31

offset
8bits

3 3 3 3 3 3 3 3

2 2 2 2 2 2 2 2

1 1 1 1 1 1 1 1

0 0 0 0 0 0 0 0

Dans le C64x, , L1P = 16 Ko = 512 * 32 octets pour un mode dadressage direct.

ENIS 2012-2013

Cours DSP Chapitre 3

131

Cache L1P
Soit linstruction suivante et son adresse :
Code opration Paramtres

80000250 003C22F4
Adresse de linstruction

STW.D2T1
Instruction

A0,*+SP[0x1]

A partir de ladresse de linstruction (0x80000250) on dtermine p ( ) loffset, le set et le tag :


31

Tag

14 13

Set

5 4 Offset

0 1 0000
Offset 16
132

1000 0000 0000 0000 00


Tag 131072
ENIS 2012-2013

00 0010 010
Set 18

Cours DSP Chapitre 3

Cache L1D
31 13 12 6 5 2 1 0

T Tag

S I d Set Index

G Group

Off Offset

TAG (19 bits) : il contient les MSB de ladresse. Stock dans une mmoire tampon pour indiquer la prsence de la plage dadresse dsire dans le cache ou non (miss / hit) hit). Set Index (7 bits) : un ensemble est une collection de ligne de trame. Dans un systme dadressage associatives par ensemble de deux blocs, chaque ensemble contient deux ligne. Group (4 bits) : slectionne le mot dans un ensemble qui contient les donnes dsires dsires. Offset (2 bits) : dtermine loffset dun mot dans ladresse l offset d un l adresse.
ENIS 2012-2013 Cours DSP Chapitre 3 133

Cache L1D
Set
0 1 2 127 15 15 15 15 15 15 15 15

Ligne cache (2 per set)


32bits

Groupe
1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0

3 3 3 3 3 3 3 3

2 2 2 2 2 2 2 2

Dans le C64x, L1D = 16 Ko = 128 * 16 * 2* 4 octets pour un mode d adressage dadressage associative par ensemble de 2 blocs blocs. Il ya 128 ensembles contenant chacun 2 lignes cache ya cache. Chaque ligne est forme de 64 octets.
ENIS 2012-2013 Cours DSP Chapitre 3 134

Cache L1D
32bits

0 1 2 127

15 15 15 15 15 15 15 15

3 3 3 3 3 3 3 3

2 2 2 2 2 2 2 2

1 1 1 1 1 1 1 1

0 0 0 0 0 0 0 0

8 bits

32 bits

ENIS 2012-2013

Cours DSP Chapitre 3

135

Cache L1D
Soit la donne suivante et son adresse :
Valeur de la donne

0x000198C8
Adresse de la donne

54

A partir de ladresse de la donne (0x000198C8) on dtermine loffset, le l ff t l group, l set et l t : le t t le tag


31 13 12 6 5 2 1 0

8 0 0 1 0
Group 2

000 0000 0000 0000 1100


Tag 12
ENIS 2012-2013

1100011
Set 99
Cours DSP Chapitre 3

0
0

0
Offset

136

Mmoire cache de programme p g Bus de donnes: 256 bits Bus dadresses: 32 bits

Extraction du programme (Fetch) Rpartition des instructions (Dispatch)


DMA / EMIF

Registres de contrle Contrleur de logique Testeur mulateur

Dcodage d i t ti D d des instructions


Chemin de donnes A
Registre A0 A31 .L1 L1 .S1 S1 .M1 M1 .D1 D1 .L2 L2

Chemin de donnes B
Registre B0 B31 .S2 S2 .M2 M2 .D2 D2

Interrupteur

- Horloge

Mmoire cache de donnes Bus de donnes: 64 bits Bus dadresses: 32 bits d adresses:

- Ports sries - Autre priphriques ..Etc

ENIS 2012-2013

Cours DSP Chapitre 3

137

C6416 DSK

ENIS 2012-2013

Cours DSP Chapitre 3

138

C64X
C6211/C6711 C6211/C6 11
150, 166 MHz L2: 64K L1: 4K L1D & 4K L1P 16-channel EDMA 32-bit EMIF No Video port

C64x C64
500, 600, 720 MHz; 1GHz L2: 1 MB L1: 16K L1D &16K L1P 64-channel EDMA 64-bit EMIF, 16-bit EMIF No video port

DM64x 64
500, 600 MHz; 400MHz (640) L2: 256KB---642 128KB---641, 640 L1: 16K L1D &16K L1P 64-channel EDMA 64-bit EMIF---642 32-bit EMIF---641, 640 DM642: 3 video ports DM641: 2 video ports DM640: 1 video port Ethernet MAC

No Ethernet MAC

No Ethernet MAC

ENIS 2012-2013

Cours DSP Chapitre 3

139

Jeu dInstructions d Instructions


1 Arithmtique ADD(U) ADD2 ADD4 SUB(U) SUBC SUB2 SUB4 Arithmtique sature SAT ABS SADD SSUB Comparaison CMPGT(U) CMPEG CMPLT(U) Addition entire 32/40 bits signe (non signe) 2 additions entires 16 bits 4 additions entires 8 bits Soustraction entire 32/40 bits signe (non signe) Soustraction conditionnelle pour tape de division 2 soustractions entires 16 bits 4 soustractions entires 8 bits Saturation de 0 bits en 32 bits Valeur absolue 32/40 bits avec saturation Addition signe 32/40 bits avec saturation Soustraction signe 32/40 bits avec saturation

Comparaison suprieur 32/40 bits sign (non sign) Comparaison gal 32/40 bits Comparaison infrieur 32/40 bits sign (non sign)

Latence
ENIS 2012-2013 Cours DSP Chapitre 3 140

Jeu dInstructions d Instructions


2 4 Multiplication entires p MPY2 MPYU4 MPYSU4 MPYUS4 Multiplication entires satures t SMPY Variantes Dcalage MVD MVK MVKH Opration logique AND OR XOR 16 LSB signs x 16 LSB signs => 32 bits 4 Multiplication 8bits par 8 bits, non sign 4 Multiplication 8bits sign par 8 bits non sign 4 Multiplication 8bits non sign par 8 bits sign

Saturation ((16 LSB sign x 16 LSB signs) <<1) => 32 bits H pour 16 MSB (SMPYLH)

4 1 1 1

Transfre dun registre vers un autre registre Transfre une constante 16 bits signe vers un registre Transfre une constante 16 bits signe vers MSB dun registre ET logique 32 bits OU logique 32 bits OU exclusif logique 32 bits

Latence
ENIS 2012-2013 Cours DSP Chapitre 3 141

Jeu dInstructions d Instructions


5 1 1 Accs mmoire avec calcul dadresse LD(B/H/W)(U) ST(B/H/W)(U) Dcalage SHL SHR(U) SHR2 SSHL SHLMB SHRMB Champs de bits EXT(U) CLR SET Branch B Chargement (Byte, demi mot, mot) sign (non sign) Stockage (Byte demi mot, mot) sign (non sign) (Byte, mot Dcalage gauche 32/40 bits Dcalage arithmtique (logique) droit 32/40 bits Dcalage droit 16 bits sign Dcalage gauche 32/40 bits avec saturation Dcalage g g gauche et arrangement en octet g Dcalage droit et arrangement en octet

Extrait un champs de bits et extension de signe (non sign) Met zro un champs de bits Met 1 un champs de bits Branchement conditionnel (Offset 21 bits ou registre)

Latence
ENIS 2012-2013 Cours DSP Chapitre 3 142

Jeu dInstructions et Units d Instructions


.L ABS ABS2 ADD(U) ADD2 ADD4 AND MVK OR SHLMB SHRMB SUB(U) SUB2 SUB4 XOR .M MPY2 MPYSU4 MPYUS4 MPYU4 MVD SMPY .S ADD2 AND B MVK MVKH OR SHL SHLMB SHR2 SHRMB SUB2 XOR .D ADD(U) ADD2 AND LD LDDW MVK OR ST STDW SUB(U) SUB2 XOR

ENIS 2012-2013

Cours DSP Chapitre 3

143

Modes dadressages d adressages


Il existe deux diffrents modes dadressages : d adressages - Mode linaire - Mode circulaire Ladressage le plus utilis est le mode linaire indirect. Supposant que R est un registre dadresse :
*R : Le registre R pointe sur une adresse mmoire R mmoire. *R++(d) : Le registre R contient une adresse mmoire en plus il y aura une post incrmentation c..d aprs une lecture R va sauto incrmenter par une valeur (d) qui est 1 par dfaut. *++R(d) : Mme chose que le cas prcdent mais maintenant une pr i t ti incrmentation. *+R(d) : Ladresse est pr incrmente de tel sorte que ladresse actuelle est R+d Par contre R ne va pas tre modifier R+d. contre, modifier.
ENIS 2011-2012 Cours DSP Chapitre 3 144

Modes dadressages d adressages


Mode circulaire :
Utiliser pour crer un tampon circulaire trs utilis. Dans le TSN : algorithmes de filtrage corrlation ..etc. filtrage, etc Il existe deux tampons circulaire indpendants BK0 et BK1 et 8 registres pointeurs : A4-A7 et B4-B7 A4 A7 B4 B7. Initialiser le registre du mode dadressage : AMR pour activer le mode dadressage circulaire dsir en spcifiant le mode du registre pointeur et la taille du tampon utilis. Seulement lunit D1 peut tre utile pour effectuer les oprations arithmtiques ou l i ith ti logiques.

ENIS 2012-2013

Cours DSP Chapitre 3

145

Modes dadressages d adressages


Registre AMR :
31 26 25 21 20 16

rserv
15 14 13 12 11 10 9 8 7

BK1
6 5 4 3

BK0
2 1 0

Mode B7

Mode B6

Mode B5

Mode B4

Mode A7

Mode A6

Mode A5

Mode A4

Mode 00 01 10 11

Description Adressage linaire par dfaut Adressage circulaire utilisant BK0 Ad i l i tili t Adressage circulaire utilisant BK1 Rserv

Exemple : Si on dsire avoir un tampon circulaire de 128 octets dans BK1 point par le registre B5, AMR doit tre initialis : 2N+1.

BK0 et BK1 : N taille du tampon qui sera


ENIS 2012-2013

0x00C00800
146

Cours DSP Chapitre 3

Syntaxe des instructions


Add / Soustraction / Multiplication : ADD .L1 SUB .S1 S1 2 instructions en // : MPY .M2 A7 B7 B6 M2 A7, B7,
; les LSB(A7) * LSB(B7) B6 ; les MSB(A7) * MSB(B7) A6

A3, A7, A7 A1, 1, A1 1 A1

; A3 + A7 A7

si le rsultat est stock dans B7, on choisie lunit .L2 ; A1 1 A1

|| MPYH .M2 A7, B7, A6

Le choix de lunit de traitement dpend de la .. l unit


ENIS 2012-2013 Cours DSP Chapitre 3 147

Syntaxe des instructions


Load / Store : LDH .D2 D2 LDH .D1 *B2++ B7 ; B2++, *A2++, A7 ;
charger (B2) B7 Incrmenter B2 B7, charger (A2) A7, Incrmenter A2

LDH: chargement de 16 bits (H: half word) LDW: chargement de 32 bits (W: word)

STW .D1 D1

A1, +A4[20] A1 *+A4[20] ;

store A1 (A4) offset par 20 t ff t

stock 32 bits de A1 dans une mmoire dont ladresse est spcifie par A4 dcale par 20 mots (32 bits) c d 80 octets c..d. octets. Not que le continu de A4 ne va pas changer aprs le stockage puisque une seule + est utilise
ENIS 2012-2013 Cours DSP Chapitre 3 148

Syntaxe des instructions


Branchement / Move : Loop:MVK .S1 MVKH .S1
. . .

x, A4 ; x, A4 ;

move 16 LSBs de ladresse x A4 move 16 MSBs de ladresse x A4

SUB .S1 [A1] B .S2 NOP 5 ; STW .D1


ENIS 2012-2013

A1, 1, A1; Loop ; A3, *A7 ; ,

Dcrmenter A1 Branchement Loop si A10 5 instructions de No-operation ( ) Stocker A3 dans (A7)


149

Cours DSP Chapitre 3

Contraintes
Contrainte mmoire : La mmoire interne est arrange sous forme de banc de mmoires pour permettre l stockage et l chargement simultanment. tt le t k t le h t i lt t Contrainte chemin crois : Le code suivant est .. : ADD .L1x L1 A1, B1, A1 B1 A0 A2, B2, B3 A1 B1 A0 A1, B1, A2, B2, B3
Cours DSP Chapitre 3 150

|| MPY .M2x ADD L1x .L1x

Par contre, le code suivant .: || MPY .M1x


ENIS 2012-2013

Contraintes
Contrainte stockage/chargement : Les registres adresses utiliss doivent tre du mme chemin que lunit .D : Le code suivant est .: LDW || LDW LDW || LDW .D1 .D2 .D1 .D2 *A1, A2 *B1, B2 *A1, A2 *A3, B2

Par P contre le code suivant .: t l d i t

ENIS 2012-2013

Cours DSP Chapitre 3

151

Contraintes
En plus, le chargement et le stockage en // ne peuvent pas tre du mme chemin de registres (les registres A et les registres B). Exemple : Le code suivant est : LDW .D1 D1 *A0 B1 A0, A1, *B2 *A0, B1 *B2, A1 *A0, A1 A2, *B2
Cours DSP Chapitre 3 152

|| STW .D2 LDW || LDW LDW .D1 .D2 .D1

De mme, le code suivant est ..:

Par contre le code suivant : contre, : || STW .D2


ENIS 2012-2013

FIN

ENIS 2012-2013

Cours DSP Chapitre 3

153

ENIS 2012/2013

Chapitre IV :

tude pratique du p p p q pipeline p pour le TMS320 C64X

Plan

Ch prcdent

Ch suivant

Sommaire
p Pipeline Exemples :
1r exemple : Somme des produits 2me exemple : Sum of Absolute Difference 3me exemple : Interpolation Bilinaire

ENIS 2012-2013

Cours DSP Chapitre 4

155

tude de cas :
a b
n =1 n 40

er Exemple 1

Dans ce qui suit, on va tudier la fonction permettant de calculer la somme de produits :

Y =

void somme_produit(unsigned char a[40], unsigned char b[40]) { int x; int sum=0; for(x 1; for(x=1; x <= 40; x ) x++) sum += (a[x] * b[x]); }
ENIS 2012-2013 Cours DSP Chapitre 4 156

1er Exemple
2 principaux instructions utilises dans cet algorithme : Multiplication et Addition. Les entrs de lunit .M sont a et x et la sortie est prod.
Y =

a
n =1

40

xn
.M
MPY .M a, x, prod

Y =

Unit .M : multiplication Unit .L : addition

a
n =1

40

xn
.M M .L
MPY .M a, x, prod ADD .L sum, prod, sum

ENIS 2012-2013

Cours DSP Chapitre 4

157

er Exemple 1
Les variables a, x, prod et Y seront stocks ou? Et comment peut on y accder? Ces variables seront stocks comme suit :
Y =

a
n =1

40

xn

Register File A
A0 A1 A2 A3 A4 prod d Y a x

MPY .M a, x, prod ADD .L sum, prod, sum .M .L MPY .M A0, A1, A3 ADD .L A4, A3, A4

A15

32-bits

ENIS 2011-2012

Cours DSP Chapitre 4

158

er Exemple 1
Que faut il faire apres ?

On a besoin de rpter les instructions MPY/ADD 40 fois. Comment peut on faire a? A loop of course

Dans une boucle on a : ( ) p 1. Instruction branch (B) et un nom pour la boucle 2. Un compteur (= 40) 3. Instruction pour dcrmenter le compteur 4. Un test de branchement on se basant sur la valeur du compteur

ENIS 2012-2013

Cours DSP Chapitre 4

159

er Exemple 1
On commence par le branchement. Lunit permettant deffectuer le branchement est l i .S. b h lunit S Aprs, 40. Aprs on va crer le compteur avec une valeur gale 40 On va utiliser linstruction MVK (MoVe a Konstant dans un registre). 0n ( g ) choisit le registre A2).
Y =

a
n =1 1

40

xn

Register File A
A0 A1 A2 A3 A4 a x 40 prod Y

.S S .M .L

MVK .S S loop:

40, 40 A2

MPY .M A0, A1 A3 M A0 A1, ADD .L A4, A3, A4 B .S loop

A15

32-bits

ENIS 2012-2013

Cours DSP Chapitre 4

160

er Exemple 1
Dcrmenter le compteur dans la boucle (soustraire 1 de A2) A2). Linstruction SUB utilise aussi lunit .L, comme pour lADD. add et sub peut etre fonctionner avec 6 units.

Y =

a
n =1

40

xn

Register File A
A0 A1 A2 A3 A4 a x 40 prod Y

.S .M .L

MVK .S 40, A2 loop: MPY .M A0, A1, A3 ADD .L A4, A3, A4


SUB .L A2, 1, A2

A15

B
32-bits

.S

loop

ENIS 2012-2013

Cours DSP Chapitre 4

161

er Exemple 1
La dernire tape est dajouter la condition on se basant sur la valeur de A2 : si A2>0, branchement. On va ajouter [A2] avant linstruction branch. Si on utilise un registre dans des "[ ]", le CPU excute linstruction si la condition est vrai ou non-nulle. Si la condition est fausse ou nulle, linstruction ne sera pas excuter. Les registres conditionnels sont : pour C62x/C67x : A1, A2, B0, B1 et B2 pour C64x : A0, A1, A2, B0, B1 et B2 p , , , ,

ENIS 2012-2013

Cours DSP Chapitre 4

162

er Exemple 1
How do you load a pointer with an address? y p An address is a constant, so use MVK: MVK .S a, A5 A5 16 32

How many bits can MVK move?

How H many bit represent a full address? bits t f ll dd ? Solution? MVKL .S V MVKH .S
ENIS 2012-2013

a, A5 A5 a, A5 A5
163

Cours DSP Chapitre 4

er Exemple 1

Y =

a
n =1

40

xn
Register File A

A0 A1 A2 A3 A4

a x 40 prod Y

.S S .M .L

MVK .S S loop:

40, 40 A2

MPY .M A0, A1 A3 M A0 A1, ADD .L A4, A3, A4


SUB .L [A2] A2, 1, A2

A15

.S

loop

32-bits

ENIS 2012-2013

Cours DSP Chapitre 4

164

Load/Store Options oad/S o e Op o s


Because the 'C6000 provides byte addressability the instruction 'C6000 C6000 C addressability, set supports several types of load/store instructions: LDB LDH LDW LDDW Load instructions: Load 8-bit byte Load 16-bit half-word 16- halfLoad 32-bit word 32Load 64-bit double-word 64- doubleStore instructions: STB STH STW STDW (C64x) (C64x) If were mulitplying 16-bit numbers, which p y g 16, load instruction should be used?
ENIS 2012-2013 Cours DSP Chapitre 4 165

(char) ( (short) ) (int) int) (C67x, C64x) (C67x, C64x) (double)

er Exemple 1
Comment charger les variables dans les registres? On va crer un pointeur pour une variable. le pointeur contient ladresse de la variable. On stocke le contenue du pointeur dans un registre A. l instruction a x On va utiliser linstruction load (LD) pour charger les variables a et x dans les registres et linstruction store (ST) pour stocker le rsultat Y.
Register File A
A0 A1 A2 A3 A4 A5 A6 A7 a x 40 prod Y &a[n] & [ ] &x[n] &Y

.S .M M .L

Crer des pointeurs pour: A5=&a A6=&x A7=&Y Inst Load/Store LD *A5, A0 LD *A6, A1 ST A4, *A7
*A5 *A6 *A7

*A5: accder donne point ladresse A5

au par

a[40]
A15

Mmoire
32-bits

x[40] Y

ENIS 2012-2013

Cours DSP Chapitre 4

166

er Exemple 1
On va utiliser les instructions load/store dans notre code. Pour faciliter les instructions load/store, on utilise lunit .D.
Y =

a
n =1

40

xn
Register File A Incrmenter le pointeur aprs chaque load

A0 A1 A2 A3 A4 A5 A6 A7

a x 40 prod Y &a[n] &x[n] &Y

MVK .S .S S .M .L D .D [A2] loop: LDH LDH

40, A2

.D *A5++, A0 D *A5++ .D *A6++, A1

MPY .M A0, A1, A3 . 0, , 3 ADD .L A4, A3, A4 SUB .L A2, 1, A2 B .S S l loop A4, *A7

A15

32-bits

STH .D
Data Memory

ENIS 2012-2013

Cours DSP Chapitre 4

167

er Exemple 1
Register File A A0 A1 A2 A3 A4 .S1 .S1 .M1 .M1 .S2 .S2 .M2 .M2 .L2 .L2 .D2 .D2 B15
3232-bits 32-bits 32-

Register File B B0 B1 B2 B3 B4

. . .
A15

.L1 .L1 .D1 .D1

. . .

Data Memory
ENIS 2012-2013 Cours DSP Chapitre 4 168

Utilisant seulement les registres de A


40 Y = an * x n n = 1 MVK loop: LDH l LDH MPY ADD SUB [A2 [A2] B STH
ENIS 2012-2013

.S1 .S1 .D1 .D1 D .D1 .D1 .M1 .M1 .L1 .L1 .L1 .L1 .S1 .S1 S .D1 .D1

40, A2 40, A2 *A5++, A0 *A5++ A0 *A6++, A1 *A6 A1 A0, A1, A3 A1 A3 A3, A4, A4 A4 A4 A2, 1, A2 A2 loop A4, *A7 *A7
Cours DSP Chapitre 4

; A2 = 40, loop count A2 40, ; A0 = a(n) A0 ( ) ; A1 = x(n) A1 ; A3 = a(n) * x(n) A3 ; Y = Y + A3 A3 ; decrement loop count ; if A2 0, branch A2 ; *A7 = Y *A7
169

Note: Le registre A4 doit contenir zero. zero.

er Exemple 1
Paquet Fetch : contient 8 instructions de 32 bits chacune Voyant de prs comment effectu une somme de produit reprsent par le code suivant dans une structure pipeline du C64x
Clock Cycle = 1 MVK .S S loop: LDH LDH MPY ADD SUB [A2] B STH .D .D .M .L .L .S .D 40, 40 A2 *A5++, A0 *A6++, A1 A0, A1, A3 A4, A3, A4 A2, 1, A2 loop A4, *A7

Program Fetch
PG PS PW PR

Decode
DP DC E1 E2

Execute
E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

170

er Exemple 1

Clock Cycle = 4

Program Fetch
PG PS PW PR

Decode
DP DC E1 E2

Execute
E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

171

er Exemple 1
Clock Cycle = 5

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

Clock Cycle = 6

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

172

er Exemple 1
Clock Cycle = 7

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

Clock Cycle = 8

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

173

er Exemple 1
Clock Cycle = 10

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

Clock Cycle = 11

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

174

er Exemple 1
Alors comment rsoudre ce problme? En premier lieu, on va se concentrer sur les instructions MPY/ADD. On doit retarder add par un cycle pour que la multiplication aura li avantt que l dditi commence. Utili NOP lieu laddition Utiliser NOP. l l lti li ti

Clock Cycle = 11

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

175

er Exemple 1
Cycle = 12

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

Ca fonctionne!! Alors maintenant combien de NOP on doit ajouter entre les loads et lopration de MPY? 3 NOPs, Bien sre. Par consquent, le code pipeline doit tre de la forme suivante :

ENIS 2012-2013

Cours DSP Chapitre 4

176

er Exemple 1
Clock Cycle = 4

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

Clock Cycle = 5

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

177

er Exemple 1
Clock Cycle = 6

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

Clock Cycle = 7

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

178

er Exemple 1
Clock Cycle = 8

PF
PF

Decode
DP DC E1

Execute E
E2 E3 E4 E5 E6

Done D

Clock Cycle = 9

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

179

er Exemple 1
Clock Cycle = 10

PF
PF

Decode
DP DC E1

Execute E
E2 E3 E4 E5 E6

Done D

Clock Cycle = 11

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

180

er Exemple 1
Clock Cycle = 12

PF
PF

Decode
DP DC E1

Execute E
E2 E3 E4 E5 E6

Done D

Clock Cycle =13

PF
PF

Decode
DP DC E1

Execute
E2 E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

181

er Exemple 1
MVK loop: LDH LDH NOP MPY NOP ADD SUB [A2] B NOP STH .S S 40, 40 A2

.D *A5++, A0 .D *A6++, A1 D *A6++ 3 .M A0, A1, A3 .L .L .S .D A4, A3, A4 A2, 1, A2 loop 5 A4, *A7

valuation de ce code en cycles: Loop interne: 1re load 2me load MPY ADD/SUB B Total 5 1 2 2 6 16*40+2 = 642

Attendez, est il possible de remplir les retards par des instructions utiles? Oui, en effet on peut prendre avantage des retards pour rcrire le code intelligemment. il peut tre vu en dsordre, mais il nous fourni rapidement le bon rsultat !

ENIS 2012-2013

Cours DSP Chapitre 4

182

Clock Cycle =3

er Exemple 1
Decode
PR DP DC E1 E2

Program Fetch
PG PS PW

Execute
E3 E4 E5 E6

Done

Clock Cycle =5

Program Fetch
PG PS PW PR

Decode
DP DC E1 E2

Execute
E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

183

Clock Cycle =6

er Exemple 1
Decode
PR DP DC E1 E2

Program Fetch
PG PS PW

Execute
E3 E4 E5 E6

Done

Clock Cycle =7

Program Fetch
PG PS PW PR

Decode
DP DC E1 E2

Execute
E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

184

Clock Cycle =8

er Exemple 1
Decode
PR DP DC E1 E2

Program Fetch
PG PS PW

Execute
E3 E4 E5 E6

Done

Clock Cycle =9

Program Fetch
PG PS PW PR

Decode
DP DC E1 E2

Execute
E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

185

Clock Cycle =10

er Exemple 1
Decode
PR DP DC E1 E2

Program Fetch
PG PS PW

Execute
E3 E4 E5 E6

Done

Clock Cycle =11

Program Fetch
PG PS PW PR

Decode
DP DC E1 E2

Execute
E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

186

Clock Cycle =13

er Exemple 1
Decode
PR DP DC E1 E2

Program Fetch
PG PS PW

Execute
E3 E4 E5 E6

Done

Clock Cycle =14

Program Fetch
PG PS PW PR

Decode
DP DC E1 E2

Execute
E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

187

Clock Cycle =15

er Exemple 1
Decode
PR DP DC E1 E2

Program Fetch
PG PS PW

Execute
E3 E4 E5 E6

Done

Clock Cycle =16

Program Fetch
PG PS PW PR

Decode
DP DC E1 E2

Execute
E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

188

Clock Cycle =17

er Exemple 1
Decode
PR DP DC E1 E2

Program Fetch
PG PS PW

Execute
E3 E4 E5 E6

Done

Clock Cycle =22

Program Fetch
PG PS PW PR

Decode
DP DC E1 E2

Execute
E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

189

er Exemple 1
Quest ce que on a besoins? q
loop: loop: MVK .S 40, A2 MVK .S 40, A2 LDH || LDH LDH || LDH .D *A5++, A0 .D *A5++, A0 .D *B6++, A1 .D *B6++, A1 SUB .M A0, A1,A2 .L A2, 1, A3 MPY B S loop l ADD .L.S A4, A3, A4 NOP SUB .L 2 A2, 1, A2 MPY .M A0, A1, A3 NOP .S loop B ADD .L A4, A3, A4 STH .D A4, *A7 STH .D A4, *A7

Les rsultats des LDHs et MVK


On place le 2me load sur le chemin B elle bo cle l h i Notre nouvelle quon Not e noB, pour boucle puisse excut les 2 pipeline instructions en // [A2]

[A2]

Clock Cycle =2

Program Fetch
PG NOP ADD STH PS MVK LDH LDH SUB B NOP NOP MPY PW PR

Decode
DP DC E1 E2

Execute
E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

190

Clock Cycle =5

er Exemple 1
Decode
PR DP DC E1 E2

Program Fetch
PG PS PW

Execute
E3 E4 E5 E6

Done

Clock Cycle =

Program Fetch
PG PS PW PR

Decode
DP DC E1 E2

Execute
E3 E4 E5 E6

Done

ENIS 2012-2013

Cours DSP Chapitre 4

191

FIN
Nouri MASMOUDI Professeur lENIS Responsable de lquipe Circuits et Systmes Laboratoire dlectronique et des Technologies de lInformation Nouri.Masmoudi@enis.rnu.tn http://www.circtuitsystme.tunet.tn

ENIS 2012-2013

Cours DSP Chapitre 5

192