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 :
Plan
Ch suivant
Sommaire
Besoins et contraintes en traitement numrique du signal
Applications typiques Algorithmes typiques Al i h i
TNS = Traitement Numrique du Signal ADC = Analog to Digital Converter DAC = Digital to Analog Converter
ENIS 2012-2013
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
ENIS 2011-2012
Electronique Automobile Contrle du moteur Assistance au freinage Aide la navigation Commandes vocales
ENIS 2012-2013
10
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
12
ENIS 2012-2013
13
Radar
ENIS 2012-2013
14
ENIS 2012-2013
15
ENIS 2012-2013
16
Contraintes :
nombre de coefficients (10 ! 300) 300), prcision (16 ou 24 bits), vitesse de fonctionnement . . .
ENIS 2012-2013 Cours DSP Chapitre 1 17
Haute performance
Puissance : Calcul intensif Paralllisme
Multiplication des units de calcul internes Interfaces multi-DSP multi DSP
ENIS 2012-2013
18
ENIS 2012-2013
19
ENIS 2012-2013
20
y (n ) = a(k )x(n k )
k =0
99
ENIS 2012-2013
21
Temps de Traitement
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
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
DSP = Digital Signal Processor ASIP = Application Specific Instruction set Processor ASIC = Application Specific Integrated Circuit
ENIS 2012-2013 Cours DSP Chapitre 1 25
ENIS 2012-2013
26
ASIC
FPGA
DSP
DSP
GPP
GPP
ENIS 2012-2013
27
GPP
Fle exibility
ENIS 2012-2013
28
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
29
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
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
32
y ( n) =
a
k =0
M k =0 N
x(n k )
y ( n) =
a
k =0
x ( n k )+
b
k =1
y (n k )
Convolution
y ( n) =
X (k ) =
F (u ) =
ENIS 2012-2013
33
ENIS 2012-2013
ENIS 2011-2012
38
ENIS 2012-2013
40
ENIS 2012-2013
41
ENIS 2012-2013
42
ENIS 2012-2013
43
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
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
C6414 C6414
C6415 C6415
C6416 C6416
1st Generation
e st anc e gh orm Hi rf Pe
C6411 C6411
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 )
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
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
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
49
ENIS 2012-2013
50
ENIS 2012-2013
51
ENIS 2012-2013
52
ENIS 2012-2013
53
ENIS 2012/2013
Chapitre II : p
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
55
Perspective historique p q
1970
Intel 4004 Intel 8008 1er microcontrleur : TMS 1000 1er ordinateur personnel (8008)
1980
1979: 1980:
1981: 1982:
1990
1983:
1985: 1986: 1989: 1993:
2000
1996:
1999: 2000:
ENIS 2012-2013
56
4e gnration 92- Image et vido Processeurs faible consommation 5e gnration 97- VLIW Hybrides Multicore DSP + RISC
ENIS 2012-2013
57
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
58
Principales diffrences :
Bande passante (accs instruction et donne simultans ou non) Mmoires (cot, surface) Contrle plus ou moins complexe
ENIS 2012-2013
59
Mmoire Instruction
CPU
Mmoire Cache de donnes
Mmoire Donnes
Accs aux instructions sans accs en mmoire programme. Libre le bus pour des donnes.
ENIS 2012-2013
60
1 mmoire + bus pour les instructions (et les constantes en immdiat) 2 mmoires + bus pour les donnes
ENIS 2012-2013
61
ENIS 2012-2013
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
ENIS 2012-2013
63
DSP SIMD
Le TigerSHARC dAnalog Devices met en uvre les deux types de SIMD : g g y
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
65
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
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
L1 +
S1 + +
M1
D1 +
D2 +
M2
S2 + +
L2 +
ENIS 2012-2013
68
L1
+
S1
+ +
M1
D1
+
D2
+
M2
S2
+ +
L2
+
ENIS 2012-2013
69
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
Codecs multimdia
ENIS 2012-2013
72
ENIS 2012-2013
73
OP
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
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
ENIS 2012-2013
76
ENIS 2012/2013
C ap e Chapitre III :
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
80
1 A B
0 C
1 D
0 E
1 F G
1 H
ENIS 2012-2013
82
ENIS 2011-2012
83
Exemple 4:
ENIS 2012-2013
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
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
86
Pipeline
tapes d extraction du Programme dextraction (fetch, PF)
PR
C6 C6x CPU
Memory PS PW
ENIS 2012-2013 Cours DSP Chapitre 3
PG
87
Pipeline
tape du dcodage dinstruction (D)
PR
C6 C6x CPU DC
Func Units DP
Memory
PS PW
PG
ENIS 2012-2013
88
Pipeline
Jusqu 6 cycles et tout dpend de linstruction !! l instruction
tape dexcution (E)
E2 Instruction MPY
E6 Branchement
ENIS 2012-2013
89
Pipeline
ENIS 2012-2013
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
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
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
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
94
Pipeline
Cycle = 7
PF
PF
Decode
DP DC E1
Execute
E2 E3 E4 E5 E6
Done
ENIS 2012-2013
95
Pipeline
Cycle = 8
PF
PF
Decode
DP DC E1
Execute
E2 E3 E4 E5 E6
Done
ENIS 2012-2013
96
Pipeline
Cycle = 9
PF
PF
Decode
DP DC E1
Execute
E2 E3 E4 E5 E6
Done
ENIS 2012-2013
97
Pipeline
Cycle = 10
PF
PF
Decode
DP DC E1
Execute
E2 E3 E4 E5 E6
Done
ENIS 2012-2013
98
Pipeline
Cycle = 11
PF
PF
Decode
DP DC E1
Execute
E2 E3 E4 E5 E6
Done
ENIS 2012-2013
99
Pipeline
Cycle = 12
PF
PF
Decode
DP DC E1
Execute
E2 E3 E4 E5 E6 B
Done
ENIS 2012-2013
100
Pipeline
Cycle = 13
PF
PF
Decode
DP DC E1
Execute
E2 E3 E4 E5 E6
Done
ENIS 2012-2013
101
Pipeline
Cycle = 14
PF
PF
Decode
DP DC E1
Execute
E2 E3 E4 E5 E6
Done
ENIS 2012-2013
102
Pipeline
Cycle = 19
PF
PF
Decode
DP DC E1
Execute
E2 E3 E4 E5 E6
Done
ENIS 2012-2013
103
Pipeline
Excution E ti en // partielle (2eme exemple) ti ll l) Comment crire des instructions en //? On utilise le symbole || :
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
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
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
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
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
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
110
Pipeline
Cycle = 7
PF
PF
Decode
DP DC E1
Execute
E2 E3 E4 E5 E6
Done
ENIS 2012-2013
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
112
Cycle = 11
PF
PF
Decode D d
DP DC E1
Execute
E2 E3 E4 E5 B E6
Done
LDW LDB
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
113
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
B
regs g
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
114
External Memory
Internal Buses
.D1 .D2 .D1 .D2 .M1 .M2 .M1 .M2 .L1 .L2 .L1 .L2 L L .S1 .S2 .S1 .S2
CPU
ENIS 2012-2013
115
'C6000 Peripherals
XB, PCI, Host Port GPIO 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
ENIS 2012-2013
117
EMIF
Async
Internal Memory
SDRAM
EMIF
Internal Buses
.D1 .D2 .D1 .D2 .M1 .M2 .M1 .M2 .L1 .L2 .L1 .L2 L L
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
External Memory
EMIF
Internal Buses
.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
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
120
Internal Memory
External Memory
Internal Buses
.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
121
DMA / EDMA
XB, PCI, Host Port GPIO Internal Memory
External Memory
Internal Buses
.D1 .D2 .D1 .D2 .M1 .M2 .M1 .M2 .L1 .L2 .L1 .L2 L L
.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
ENIS 2012-2013
122
Timer/Counter
XB, PCI, Host Port GPIO 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
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
External Memory
Internal Buses
DMA, EDMA PLL (Boot) External clock multiplier Reduces EMITimerscost and VCP Pin selectable TCP PLL
ENIS 2012-2013
.M2 .M2
CLKOUT1 CLKOUT1 .S1 .S2 .S1 .Sof - Output rate 2 PLL - Instruction (MIP) rate CPU CLKOUT2 CLKOUT2 - 1/2 rate of CLKOUT1 CLKOUT1
124
Internal Program
0100_0000 16 MB
CE1 CE1
CE0 CE0
4 MB
C6000 CPU
0200_ 0200_0000
CE2 CE2
0300_ 0300_0000 16 MB
CE3 CE3
16 MB
125
ENIS 2012-2013
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
127
Cache L1P
RAM externe
Cache L2P
256Ko-1024Ko 256Ko 1024Ko
DSP C64
16 Ko
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
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
ENIS 2012-2013
131
Cache L1P
Soit linstruction suivante et son adresse :
Code opration Paramtres
80000250 003C22F4
Adresse de linstruction
STW.D2T1
Instruction
A0,*+SP[0x1]
Tag
14 13
Set
5 4 Offset
0 1 0000
Offset 16
132
00 0010 010
Set 18
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
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
135
Cache L1D
Soit la donne suivante et son adresse :
Valeur de la donne
0x000198C8
Adresse de la donne
54
8 0 0 1 0
Group 2
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
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:
ENIS 2012-2013
137
C6416 DSK
ENIS 2012-2013
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
139
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
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
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
ENIS 2012-2013
143
ENIS 2012-2013
145
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.
0x00C00800
146
; A3 + A7 A7
LDH: chargement de 16 bits (H: half word) LDW: chargement de 32 bits (W: word)
STW .D1 D1
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
x, A4 ; x, A4 ;
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
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
ENIS 2012-2013
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
FIN
ENIS 2012-2013
153
ENIS 2012/2013
Chapitre IV :
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
155
tude de cas :
a b
n =1 n 40
er Exemple 1
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 =
a
n =1
40
xn
.M M .L
MPY .M a, x, prod ADD .L sum, prod, sum
ENIS 2012-2013
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
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
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
A15
32-bits
ENIS 2012-2013
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
A15
B
32-bits
.S
loop
ENIS 2012-2013
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
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 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
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
A15
.S
loop
32-bits
ENIS 2012-2013
164
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
au par
a[40]
A15
Mmoire
32-bits
x[40] Y
ENIS 2012-2013
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
40, A2
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
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
. . .
Data Memory
ENIS 2012-2013 Cours DSP Chapitre 4 168
.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
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
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
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
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
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
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
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
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
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
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
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
180
er Exemple 1
Clock Cycle = 12
PF
PF
Decode
DP DC E1
Execute E
E2 E3 E4 E5 E6
Done D
PF
PF
Decode
DP DC E1
Execute
E2 E3 E4 E5 E6
Done
ENIS 2012-2013
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
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
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
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
185
er Exemple 1
Decode
PR DP DC E1 E2
Program Fetch
PG PS PW
Execute
E3 E4 E5 E6
Done
Program Fetch
PG PS PW PR
Decode
DP DC E1 E2
Execute
E3 E4 E5 E6
Done
ENIS 2012-2013
186
er Exemple 1
Decode
PR DP DC E1 E2
Program Fetch
PG PS PW
Execute
E3 E4 E5 E6
Done
Program Fetch
PG PS PW PR
Decode
DP DC E1 E2
Execute
E3 E4 E5 E6
Done
ENIS 2012-2013
187
er Exemple 1
Decode
PR DP DC E1 E2
Program Fetch
PG PS PW
Execute
E3 E4 E5 E6
Done
Program Fetch
PG PS PW PR
Decode
DP DC E1 E2
Execute
E3 E4 E5 E6
Done
ENIS 2012-2013
188
er Exemple 1
Decode
PR DP DC E1 E2
Program Fetch
PG PS PW
Execute
E3 E4 E5 E6
Done
Program Fetch
PG PS PW PR
Decode
DP DC E1 E2
Execute
E3 E4 E5 E6
Done
ENIS 2012-2013
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
[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
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
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
192