arhitectura procesoarelor digitale de semnal (dsp)
TRANSCRIPT
Arhitecturaprocesoarelor digitale de
semnal (DSP)În slide-uri se:•Exemplifică procesoare digitale de semnal de la TexasInstruments• Utilizează informaţii şi unele slide-uri de la prezentările firmei Texas Instruments
2
DSP de la TI
• Procesoarele în virgulă fixă C1x, C2x, şi C5x, sunt procesoare pe 16 biţi, cu domeniu dinamic şi precizie limitată
• Procesoarele în virgulă fixă şi mobilă C6x sunt procesoare pe 32 biţi cu domeniu dinamic şi precizie îmbunătăţite
3
Scurtă istorie DSP de la TI• Procesorul TMS320C6201 (C62x) a fost anunţat de Texas Instruments
în 1997, fiind primul membru al familiei C6x de procesoare în virgulăfixă
• Spre deosebire de precedentele procesoare în virgulă fixă, C1x, C2x, şi C5x, noile procesoare C6x au o arhitectură VLIW, care utilizeazăspaţii separate de memorie de instrucţiuni şi date, ca la arhitectura Harvard.
• C62x nu este compatibil la nivel de cod cu generaţiile anterioare de procesoare în virgulă fixă
• Ulterior, a fost introdus procesorul în virgulă mobilă TMS320C6701 (C67x), ca alt membru al familiei C6x
• Apoi au apărut noile componente ale familiei, procesoarele în virgulăfixă C64x
4
Different Needs? Multiple Families!
Lowest CostLowest CostControl SystemsControl Systems
Motor ControlMotor ControlStorageStorageDigital Ctrl SystemsDigital Ctrl Systems
C2000C2000(C20x/24x/28x)(C20x/24x/28x)
‘C1x ‘C2x‘C1x ‘C2x
C6000C6000(C62x/64x/67x)(C62x/64x/67x)
‘C3x ‘C4x ‘C8x‘C3x ‘C4x ‘C8x
Multi Channel and Multi Channel and Multi Function App'sMulti Function App'sComm InfrastructureComm InfrastructureWireless BaseWireless Base--stationsstationsDSLDSLImagingImagingMultiMulti--media Serversmedia ServersVideoVideo
Max Max PerformancePerformancewith with
Best Best EaseEase--ofof--UseUseEfficiencyEfficiencyBest MIPS perBest MIPS per
Watt / Dollar / SizeWatt / Dollar / SizeWireless phonesWireless phonesInternet audio playersInternet audio playersDigital still cameras Digital still cameras ModemsModemsTelephonyTelephonyVoIPVoIP
C5000C5000(C54x/55x)(C54x/55x)
‘C5x‘C5x
5
Arhitecturi DSP• La DSP cu arhitectură pe bază de VLIW, efortul de
implementare al paralelismului instrucţiunilor este mutat către programator şi compilator
• Alte arhitecturi includ prelucrare super – scalară (mai multe conducte de execuţie), care impune existenţa de hardware specializat pentru a determina care instrucţiuni se pot executa în paralel– Efortul cade în acest caz pe procesor
• Pentru prelucrări în timp real, cu operaţii specifice DSP, prelucrarea super-scalară este rar utilizată, pentru că timpul de execuţie se bazează pe mecanisme probabilistice
6
DSP seria C6000 de la TI
• Seria (“platforma”) de procesoare digitale de semnal TMS320C6000 (C6x) face parte din familia DSP TMS320
• În cadrul platformei C6x s-au dezvoltat generaţii de procesoare:– În virgulă fixă: TMS320C62x şi TMS320C64x (notate pe scurt
C62x respectiv C64x) şi– În virgulă mobilă: TMS320C67x (notate pe scurt C67x)– Seria de DSP C67x+ este o îmbunătăţire a C67x, cu funcţii
adăugate şi set de instrucţiuni extins.
• Toate cele 3 generaţii de DSP utilizează arhitectura VelociTI, o arhitectură de tip VLIW de înaltă performanţă
7
Principalele caracteristici ale dispozitivelor C6000
• CPU are o arhitectură bazată pe VLIW cu 8 unităţi funcţionale: 2 înmulţitoare şi 6 unităţi aritmetice şi logice (ALU) – Execută maxim 8 instrucţiuni de câte 32 de biţi pe ciclu de ceas
• Conţine 32 de registre a câte 32 biţi, organizate în douăbănci de registre specifice la două căi de date (A şi B) ce pot lucra în paralel.
• Împachetarea instrucţiunilor– Se pot asambla într-o instrucţiune cu lungime foarte mare, 8
instrucţiuni executate serial sau în paralel– Reduce dimensiunea codului, numărul de operaţii de program fetchşi puterea consumată
8
Principalele caracteristici ale dispozitivelor C6000
• Posibilitatea de execuţie condiţionată a celor mai multe dintre instrucţiuni– Reduce costurile ramificărilor– Creşte paralelismul execuţiei
• Execuţie eficientă prin unităţi funcţionale independente• Transferuri de date pe 8/16/32/64 biţi • Opţiunea de efectuare a operaţiilor aritmetice cu 40 de biţi,
avantajoasă la operaţii de tip MAC
9
Principalele caracteristici ale dispozitivelor C6000
• Posibilitatea de saturare şi normalizare automată a rezultatelor operaţiilor aritmetice
• Suport hardware pentru operaţii în:– simplă precizie (32 de biţi),– dublă precizie (64 de biţi) şi– operaţii în virgulă mobilă conform cu standardul IEEE
• Înmulţitor pe întregi 32 × 32 biţi cu rezultat pe 32 sau 64 de biţi
10
Diagramă bloc generală DSP
Memorieexternã
Perife-rice
Memorie internã
Magistrale interne
CPU
11
Diagramă bloc generală DSP
Memorieexternã
Perife-rice
Memorie internã
Magistrale interne
CPURegs(B0-B15)
CPU
.D1 .D2
.M1 .M2
.L1 .L2
.S1 .S2
Regs(A0-A15)
12
Arhitectura DSP TMS320C67x
• C6000 conţine memorie internă de program– poate fi folosită de asemenea ca memorie cache de program
• Dispozitivele din familie au diverse capacităţi de memorare internă în memoria de date
• Conţine pe chip diverse periferice, cum ar fi:– Controller DMA– Logică de economisire a energiei consumate (power-down logic)– Interfaţă cu memoria externă (EMIF)– Unele dintre procesoarele familiei conţin porturi seriale şi porturi
gazdă pentru interfaţa cu masteri externi (host ports).
13
Diagrama bloc a DSP TMS320C67x
14
UNITATEA CENTRALĂ DE PROCESARE (UCP) PENTRU C6x
• Organizarea generală din schema bloc anterioară este comună la toate dispozitivele C62x/C64x/C67x, iar UCP conţine:
– Unitate de fetch program– Unitate de distribuţie (dispatch) a instrucţiunilor– Unitate de decodificare a instrucţiunilor– Două căi de date, fiecare cu câte 4 unităţi funcţionale– 32 registre de câte 32 de biţi– Registre de control– Logică de control– Logică de testare, emulare şi întrerupere– Un bloc de registre de control permite configurarea şi controlul diverselor
operaţii ale procesorului.
15
UNITATEA CENTRALĂ DE PROCESARE (UCP)
• Unităţile de fetch, distribuire şi decodificare pot furniza unităţilor funcţionale până la 8 instrucţiuni de câte 32 de biţi pe ciclu de ceas UCP
• Prelucrarea instrucţiunilor se produce în paralel în fiecare dintre cele două căi de date (A şi B)
• Fiecare cale de date conţine:– 4 unităţi funcţionale notate: .L, .S, .M şi .D– 16 registre de uz general de câte 32 de biţi– La dispozitivele C67x+ fiecare cale de date conţine 32 de registre
de uz general (în total 64 de registre)
16
Unităţi funcţionale• CPU conţine 8 unităţi funcţionale independente împărţite
către două căi de date A şi B• Cele 8 unităţi funcţionale sunt:
– 4 ALU pentru virgulă fixă / mobilă (două .L şi două .S)– 2 unităţi în virgulă fixă (.D)– 2 multiplicatoare pentru virgulă fixă / mobilă (.M).
• Fiecare cale de date are:– 1 unitate pentru operaţii de înmulţire (.M)– 1 unitate pentru operaţii aritmetice şi logice (.L)– 1 unitate pentru salturi, prelucrare pe bit şi operaţii aritmetice (.S)– 1 unitate pentru încărcare / stocare şi operaţii aritmetice (.D).
17
Unităţi funcţionale• Instrucţiunile aritmetice, logice şi de salt folosesc unităţile .S şi .L• Toate transferurile de date folosesc unităţile .D• Operaţiile aritmetice, ca de exemplu adunare şi scădere, pot fi realizate
de toate unităţile cu excepţia unităţilor .M
Cale de date 1
Fişier registre A
L1 M1 S1 D1
Cale de date 2
Fişier registre B
L2 M2 S2 D2
Unitate aritmetică şi
logică
Unitate logică
auxiliarăUnitate de înmulţire 18
Rezumat operaţii realizate de unităţile funcţionale
19
Fişiere de registre• Fiecare unitate funcţională poate scrie sau citi direct din
fişierul de registre în cadrul propriei căi de date• Fiecare cale include un set de 16 registre de câte 32 de biţi
– 16 registre notate A0 – A15 şi– 16 registre notate B0 – B15
• Unele din registrele de uz general sunt rezervate (moduri de adresare şi instrucţiuni condiţionale)
• Există două căi în cruce (1x şi 2x) care permit unităţilor funcţionale de pe o cale de date să acceseze un operand de 32 de biţi din fişierul de registre de pe cealaltă cale– Fiecare unitate funcţională de pe o parte poate accesa date stocate
în registre de pe cealaltă parte prin intermediul căilor în cruce• Pot exista maximum două citiri pe ciclu de ceas prin aceste
căi în cruce20
Căi de date la TMS320C67x
21
Memoria internă C6x
• Memoria este organizată pe octet• Memoria internă foloseşte spaţii diferite pentru
program şi date• Memoria internă de date organizată în 2 bănci
de memorie
22
Memoria internă
• Băncile de memorie independente ale C6x permit douăaccesări la memorie în cadrul unui singur ciclu instrucţiune– Cele două bănci independente de memorie pot fi accesate utilizând
două magistrale independente
• Pentru că memoria internă este organizată în bănci de memorie, se pot realiza în paralel două instrucţiuni de încărcare şi două instrucţiuni de stocare– Nu există conflict la accesarea datelor dacă acestea se găsesc în
bănci diferite de memorie
23
Diagrama bloc a memoriei interne
UCP
L1P cache
(Direct mapped)
L1D cache
( 2 way set associative)
L2 cache memory
4 Banks = 64KB
L2 Memory
192 KB
EDMA
Program address
Program data
DA
1 address
ST1 storedata
LD1 load
data
DA
2 addressST2 store
data
LD2 load
data
24
Organizare memorie la C6713• C6713 foloseşte o arhitectură cu 2 niveluri de
cache L1/L2 ce constă din:L1:
• 4KB de program cache (L1P, memorie cache mapată direct)– Cache L1P are o magistrală de 256 biţi către UCP.
• 4KB data cache (L1D mapată 2-way set associative)
L2 cu un total de 256KB:• 64 KB cache unificat (date şi program), mapat RAM cu până la
4-way set associative• 192KB cache suplimentar, mapat RAM
25
Memoria internă C6x• Magistralele interne includ:
– 1 magistrală de adrese program de 32 biţi– 2 magistrale de adrese date de 32 de biţi (DA1 şi DA2)
• Cei 32 de biţi de pe magistrala de adrese permit accesarea unuispaţiu de memorie de 232 = 4 GB, care include 4 spaţii de memorie externă: CE0, CE1, CE2 şi CE3.
– 2 magistrale pentru load date de 64 de biţi (LD1 şi LD2) şi
– 2 magistrale pentru stocare date de 64 de biţi (ST1 şi ST2)
26
Magistrale interne C6000
MemorieInternã
MemorieExternã
Periferice
Program Addr x32
Program Data x256
Data Addr – T1 x32
Data Data – T1 x32/64
Data Addr – T2 x32
Data Data – T2 x32/64
DMA Addr – Read
DMA Data – Read
DMA Addr – Write
DMA Data – Write
DMA
RegistreA
RegistreB
PC
27
Căile de adresare date
• Căile de adrese de date (DA1 şi DA2) sunt fiecare conectate la unităţile .D din cele două căi de date⇒Se generează adrese de date de oricare dintre căi pentru accesarea
datelor şi transferul lor la/de la registre
• Resursele DA1 şi DA2 împreună cu căile de date asociate lor sunt specificate cu prescurtările T1 şi respectiv T2⇒T1 constă din calea de adrese de date DA1 şi din căile de date LD1şi ST1
⇒Similar pentru T2
28
Căile de adresare date• Pentru C67x , LD1 conţine LD1a şi LD1b pentru a forma
magistrala de load de 64 de biţi. Similar pentru LD2.• Indicatorii T1 şi T2 apar în câmpul unităţilor funcţionale
pentru instrucţiunile de load şi store• De exemplu următoarea instrucţiune de load foloseşte
unitatea .D1 pentru a genera adresa, dar utilizează căile LD2 şi DA2 pentru a plasa data în fişierul de registre B. Utilizarea resursei DA2 este specificată prin numele T2
LDW .D1T2 *A0[3],B1
29
Memoria internă
• C67x DSP conţine 2 porturi interne de câte 32 de biţipentru accesul la memoria de date internă
• C67x DSP conţine 1 port intern pentru accesul la memoria de program internă, cu o lărgime a magistralei pentru aducerea instrucţiunii de 256 biţi
• Atunci când se foloseşte şi memorie externă, spaţiile de program şi date sunt unificate pentru a se adresa un sigur spaţiu de memorie prin intermediul interfeţei cu memoria externă (EMIF - external memory interface).
30
Opţiuni pentru Memorie şi Periferice(familia C6000)
• RAM intern cu dimensiune de până la 7Mb7 x 220= 7 x 217 x 8 = 7 x 128 x 1KB = 896 KB)
• Memorie cache de program• 2 niveluri de memorie cache• Suport pentru interfaţă pe 32 de biţi cu memorii externe SDRAM,
SBSRAM (Synchronous Burst Static Random Access Memory), SRAM şi alte dispozitive de memorie asincronă externe
• Controller DMA (doar la C6701) cu 4 canale programabile şi un al cincilea canal auxiliar
• Controller EDMA cu aceeaşi funcţie ca şi controllerul DMA, dar cu 16 canale programabile şi un spaţiu de memorie RAM pentru stocarea configuraţiilor multiple la transferurile viitoare
31
Opţiuni pentru Memorie şi Periferice(familia C6000)
• 2 timere de uz general de câte 32 de biţi, folosite pentru:– Măsurare durate– Numărare evenimente– Generare de impulsuri– Lansare întreruperi către UCP– Transmitere de impulsuri de sincronizare către controllere DMA / EDMA
• Port paralel gazdă (HPI) prin care un procesor gazdă poate accesa direct spaţiul de memorie al UCP
– Dispozitivul gazdă are un acces uşor pentru că el este masterul interfeţei– Se poate astfel schimba informaţie între gazdă şi UCP prin intermediul
memoriei interne sau externe– În plus gazda are acces direct la perifericele mapate în memorie.
32
Opţiuni pentru Memorie şi Periferice(familia C6000)
• Magistrală de extensie (Expansion bus) – este un înlocuitor al HPI şi de asemenea o extensie a EMIF
• Această extensie permite două domenii distincte de funcţionalitate (port host şi port I/O) care pot co-exista în sistem– Portul host al magistralei de extensie poate lucra fie ca un sclav
asincron, similar cu HPI, fie în mod master / slave sincron• Aceasta permite dispozitivului să fie interfaţat cu o multitudine de
protocoale de magistrală gazdă– Se pot interfaţa la magistrala de extensie dispozitive periferice
asincrone de I/O şi FIFO sincrone
33
Opţiuni pentru Memorie şi Periferice(familia C6000)
• Portul serial multi-canal cu memorare McBSP(multichannel buffered serial port) - este bazat pe portul serial standard implementat la dispozitivele TMS320C2000 şi TMS320C5000– Portul poate memora automat eşantioane seriale cu ajutorul
controllerului DMA/EDMA– Are capacitatea multicanal de a compatibilitate cu standarde de
reţele de comunicaţie digitală în telefonie• Logica de control a puterii permite reducerea consumului
de energie prin reducerea frecvenţei de ceas
34
‘C6711 Memory
FFFF_FFFFFFFF_FFFF
0000_00000000_000064KB Internal64KB Internal
OnOn--chip Peripheralschip Peripherals0180_00000180_0000
128MB External2
128MB External3
8000_00008000_00009000_00009000_0000A000_0000A000_0000B000_0000B000_0000
128MB External0
128MB External1
64K64KProg / DataProg / Data
(Level 2)(Level 2)CPUCPU
4K4KProgramProgramCacheCache
4K4KDataData
CacheCache
35
'C6000 Peripherals
ExternalExternalMemoryMemory
.D1.D1
.M1.M1
.L1.L1
.S1.S1
.D2.D2
.M2.M2
.L2.L2
.S2.S2Register Set BRegister Set B
Register Set ARegister Set A
CPUCPU
Internal BusesInternal Buses
InternalInternalMemoryMemory
McBSP’sMcBSP’sUtopiaUtopia
GPIOGPIO
DMA, EDMADMA, EDMA(Boot)(Boot)
TimersTimers
PLLPLL
XB, PCI,XB, PCI,Host PortHost Port
EMIFEMIF
36
.D1.D1
.M1.M1
.L1.L1
.S1.S1
.D2.D2
.M2.M2
.L2.L2
.S2.S2
Register Set BRegister Set B
Register Set ARegister Set A
CPUCPU
Internal BusesInternal Buses
InternalInternalMemoryMemory
SDRAMSDRAM
AsyncAsync
SBSRAMSBSRAM
EMIFEMIF
EMIF
External Memory Interface (EMIF)Glueless access to async/sync memoryWorks with PC100 SDRAM (cheap, fast, and easy!)Byte-wide data access16, 32, or 64-bit bus widths
External Memory Interface (External Memory Interface (EMIFEMIF))Glueless access to async/sync memoryGlueless access to async/sync memoryWorks with PC100 SDRAM (cheap, fast, and easy!)Works with PC100 SDRAM (cheap, fast, and easy!)ByteByte--wide data accesswide data access16, 32, or 6416, 32, or 64--bit bus widthsbit bus widths
37
ExternalExternalMemoryMemory
.D1.D1
.M1.M1
.L1.L1
.S1.S1
.D2.D2
.M2.M2
.L2.L2
.S2.S2
Register Set BRegister Set B
Register Set ARegister Set A
CPUCPU
Internal BusesInternal Buses
InternalInternalMemoryMemory
XBUS, PCI,XBUS, PCI,Host PortHost Port
EMIFEMIF
HPI / XBUS / PCI
Parallel Peripheral InterfaceHPI: Dedicated, slave-only, async 16/32-bit bus allows
host-µP access to C6000 memoryXBUS: Similar to HPI but provides …
Master/slave and sync modesGlueless i/f to FIFOs (up to single-cycle xfer rate)
PCI: Standard 32-bit, 33MHz PCI interface
Parallel Peripheral InterfaceParallel Peripheral InterfaceHPI:HPI: Dedicated, slaveDedicated, slave--only, async 16/32only, async 16/32--bit bus allows bit bus allows
hosthost--µµP access to C6000 memoryP access to C6000 memoryXBUS:XBUS: Similar to HPI but provides …Similar to HPI but provides …
Master/slave and sync modesMaster/slave and sync modesGlueless i/f to FIFOs (up to singleGlueless i/f to FIFOs (up to single--cycle xfer rate)cycle xfer rate)
PCI:PCI: Standard 32Standard 32--bit, 33MHz PCI interfacebit, 33MHz PCI interface 38
GPIO
ExternalExternalMemoryMemory
.D1.D1
.M1.M1
.L1.L1
.S1.S1
.D2.D2
.M2.M2
.L2.L2
.S2.S2
Register Set BRegister Set B
Register Set ARegister Set A
CPUCPU
Internal BusesInternal Buses
InternalInternalMemoryMemory
GPIOGPIO
XB, PCI,XB, PCI,Host PortHost Port
EMIFEMIF
General Purpose Input/Output (GPIO)‘C64x provides 8 or 16 bits of general purpose bitwise I/OUse to observe or control the signal of a single-pin
General Purpose Input/Output (GPIO)General Purpose Input/Output (GPIO)‘‘C64x provides 8 or 16 bits of general purpose bitwise I/OC64x provides 8 or 16 bits of general purpose bitwise I/OUse to observe or control the signal of a singleUse to observe or control the signal of a single--pinpin
39
McBSP and Utopia
ExternalExternalMemoryMemory
.D1.D1
.M1.M1
.L1.L1
.S1.S1
.D2.D2
.M2.M2
.L2.L2
.S2.S2Register Set BRegister Set B
Register Set ARegister Set A
CPUCPU
Internal BusesInternal Buses
InternalInternalMemoryMemory
McBSP’sMcBSP’sUtopiaUtopia
GPIOGPIO
XB, PCI,XB, PCI,Host PortHost Port
EMIFEMIF
Multi-Channel Buffered Serial Port (McBSP)2 (or 3) full-duplex, synchronous serial-portsUp to 100 Mb/sec performance
Utopia (C64x - Universal Test and Operations Interface for ATM)
ATM connection50 MHz wide area network connectivity
MultiMulti--Channel Buffered Serial Port (Channel Buffered Serial Port (McBSPMcBSP))2 (or 3) f2 (or 3) fullull--duplex, synchronous serialduplex, synchronous serial--portsportsUp to 100 Mb/sec performanceUp to 100 Mb/sec performance
Utopia Utopia ((C64xC64x -- Universal Test and Operations Interface for ATM)Universal Test and Operations Interface for ATM)
ATM connectionATM connection50 MHz wide area network connectivity50 MHz wide area network connectivity
40
DMA / EDMA
ExternalExternalMemoryMemory
.D1.D1
.M1.M1
.L1.L1
.S1.S1
.D2.D2
.M2.M2
.L2.L2
.S2.S2
Register Set BRegister Set B
Register Set ARegister Set A
CPUCPU
Internal BusesInternal Buses
InternalInternalMemoryMemory
McBSP’sMcBSP’sUtopiaUtopia
GPIOGPIO
DMA, EDMADMA, EDMA(Boot)(Boot)
XB, PCI,XB, PCI,Host PortHost Port
EMIFEMIF
Direct Memory Access (DMA / EDMA) Transfers any set of memory locations to another4 / 16 / 64 channels (transfer parameter sets)Transfers can be triggered by any interrupt (sync)Operates independent of CPUOn reset, provides bootstrap from memory
Direct Memory Access (DMA / EDMA) Direct Memory Access (DMA / EDMA) Transfers any set of memory locations to anotherTransfers any set of memory locations to another4 / 16 / 64 channels (transfer parameter sets)4 / 16 / 64 channels (transfer parameter sets)Transfers can be triggered by any interrupt (sync)Transfers can be triggered by any interrupt (sync)Operates independent of CPUOperates independent of CPUOn reset, provides bootstrap from memoryOn reset, provides bootstrap from memory
41
Timer / Counter
ExternalExternalMemoryMemory
.D1.D1
.M1.M1
.L1.L1
.S1.S1
.D2.D2
.M2.M2
.L2.L2
.S2.S2
Register Set BRegister Set B
Register Set ARegister Set A
CPUCPU
Internal BusesInternal Buses
InternalInternalMemoryMemory
McBSP’sMcBSP’sUtopiaUtopia
GPIOGPIO
DMA, EDMADMA, EDMA(Boot)(Boot)
TimersTimers
XB, PCI,XB, PCI,Host PortHost Port
EMIFEMIF
Timer / CounterTwo (or three) 32-bit timer/countersCan generate interruptsBoth input and output pins
Timer / CounterTimer / CounterTwo (or three) 32Two (or three) 32--bit timer/countersbit timer/countersCan generate interruptsCan generate interruptsBoth iBoth input and output pinsnput and output pins 42
PLL
ExternalExternalMemoryMemory
.D1.D1
.M1.M1
.L1.L1
.S1.S1
.D2.D2
.M2.M2
.L2.L2
.S2.S2
Register Set BRegister Set B
Register Set ARegister Set A
CPUCPU
Internal BusesInternal Buses
InternalInternalMemoryMemory
McBSP’sMcBSP’sUtopiaUtopia
GPIOGPIO
VCPVCPTCPTCP
DMA, EDMADMA, EDMA(Boot)(Boot)
TimersTimers
PLLPLL
XB, PCI,XB, PCI,Host PortHost Port
EMIFEMIF
PLLExternal clock multiplierReduces EMI and costPin selectable
PLLPLLExternal clock multiplierExternal clock multiplierReduces EMI and costReduces EMI and costPin selectablePin selectable
InputCLKIN
OutputCLKOUT1- Output rate of PLL- Instruction (MIP) rateCLKOUT2- 1/2 rate of CLKOUT1
InputInputCLKINCLKIN
OutputOutputCLKOUT1CLKOUT1-- Output rate of PLLOutput rate of PLL-- Instruction (MIP) rateInstruction (MIP) rateCLKOUT2CLKOUT2-- 1/2 rate of CLKOUT11/2 rate of CLKOUT1
43
Pachetele FETCH şi EXECUTE• Pachetele Fetch şi Execute sunt specifice arhitecturii VelociTI,
introdusă de TI• Un pachet de execuţie (EP - execute packet) constă dintr-un
grup de instrucţiuni care pot fi executate în paralel în cadrul aceluiaşi timp de ciclu
• În cadrul unui pachet de fetch (FP - fetch packet) pot exista de la 1 EP (cu 8 instrucţiuni paralele) la 8 EP (cu instrucţiuni ne –paralele)
• Arhitectura VLIW a fost modificată pentru a permite ca mai multe EP să fie incluse într-un FP
• LSb al fiecărei instrucţiuni pe 32 de biţi este utilizat pentru a determina dacă instrucţiunea următoare (succesivă) este inclusăîn acelaşi EP (valoare 1) sau este parte a următorului EP (valoare 0) – notat bit “p”
44
Pachetele FETCH şi EXECUTE• De exemplu, se consideră un FP cu 3 EP: EP1 cu 2 instrucţiuni paralele, iar
EP2 şi EP3 cu câte 3 instrucţiuni paralele fiecare:
Instruction A|| Instruction B
Instruction C|| Instruction D|| Instruction E
Instruction F|| Instruction G|| Instruction H
• EP1 constă din două instrucţiuni paralele A şi B• EP2 constă din instrucţiunile paralele C, D şi E• EP3 constă din instrucţiunile paralele F, G şi H
45
Pachet de fetch cu 3 pachete de execuţie
Bitul LSb al fiecărei instrucţiuni conţine un bit „p” care indică dacăinstrucţiunea este, sau nu, în paralel cu instrucţiunea următoare
46
PIPELINING• Se folosesc trei etaje (segmente) mari ale
conductei de execuţie, fiecare etaj conţinând sub-faze:1. Program fetch2. Program decode3. Program execute
47
PIPELINING1. Etajul program fetch este compus din 4 faze:
a. PG: (program address generate) - generare adresă program de către UCPb. PS: (program address send) - transmiterea adresei de program către
memorie c. PW: (program address ready wait) – aşteaptă informaţia citită din
memoried. PR: (program fetch packet receive) – UCP recepţionează opcode din
memorie2. Etajul decode e compus din 2 faze:
a. DP: pentru expedierea (dispatch) tuturor instrucţiunilor dintr-un FP către unităţile funcţionale adecvate
b. DC: decodificarea codului instrucţiunii3. Etajul de execuţie este compus dintr-un număr de faze de până la 6
(pentru virgulă fixă) sau până la 10 (pentru virgulă mobilă), datoritălatenţelor (întârzierilor) asociate cu următoarele tipuri de instrucţiuni:
Instrucţiuni de înmulţire care constau din două fazeInstrucţiuni de load care constau din cinci fazeInstrucţiuni de salt care constau din şase faze 48
FAZELE CONDUCTEI
49
EFECTE PIPELINING
• Prima linie reprezintă ciclurile 1, 2, . . . , 12• Fiecare din liniile următoare reprezintă un FP• Pentru fiecare FP (fetch packet), faza de execuţie poate dura de la 1 la 10
faze • De exemplu, în ciclul 7, în timp ce instrucţiunile din primul FP se află în
prima fază de execuţie E1 (care poate fi şi singura fază) instrucţiunile din al doilea FP se află în faza de decodificare, instrucţiunile din al treilea FP se află în faza de expediere (dispatch) şi aşa mai departe.
50
PIPELINING• Cele mai multe dintre instrucţiuni au o singură fază de execuţie• Instrucţiuni cum ar fi înmulţirea (MPY), load (LDH/LDW) şi
ramificare (B) consumă 2, 5 şi respectiv 6 faze• Se pot adăuga faze de execuţie suplimentare pentru instrucţiunile ce
lucrează în virgulă mobilă, sau dublă precizie, care pot consuma pânăla 10 faze
• Latenţa unităţii funcţionale, care reprezintă numărul de cicluri cât o instrucţiune ocupă o unitate funcţională, este 1 pentru toate instrucţiunile cu excepţia instrucţiunilor în dublă precizie, disponibile la variante C67x în virgulă mobilă
• Dacă rezultatul unei instrucţiuni de înmulţire, ca de exemplu MPY, este utilizat de o instrucţiune următoare, trebuie inserat un NOP dupăinstrucţiunea MPY pentru ca execuţia să fie corectă în conductă. Dacăo instrucţiune utilizează rezultatul unei instrucţiuni de load sau de salt, vor trebui introduse 4, respectiv 5 instrucţiuni NOP
51
REGISTRE DE UZ GENERAL
• Sunt disponibile două seturi de fişiere de registre (A şi B), fiecare cu câte 16 registre
• Registrele A0, A1, B0, B1 şi B2 sunt utilizate ca registre pentru testarea condiţiilor
• Registrele de la A4 la A7 , respectiv de la B4 la B7 sunt folosite pentru adresare circulară
• Registrele de la A0 la A9, respectiv de la B0 la B9 (cu excepţia lui B3) sunt registre temporare
• Oricare dintre registrele utilizate de la A10 la A15 şi de la B10 la B15 sunt salvate şi apoi restaurate înainte de revenirea dintr-o subrutină
• Într-o pereche de registre se poate stoca o dată cu dimensiunea de 40 de biţi. Cei mai puţin semnificativi 32 de biţi se stochează în registrul par (de ex. A2) iar ceilalţi 8 biţi în poziţiile LSb din următorul registru impar (A3)
• O schemă similară e folosită pentru stocarea unei date în dublă precizie (64 debiţi)
52
Stocare 40 biţi în pereche de registre
53
Perechi de registre 40/64 biţi
54
Modul de adresare indirectă• Adresarea indirectă poate fi utilizată cu sau fără
deplasament• Registrul R de indirectare este unul dintre cele 32 de
registre de uz general (A0-A15 şi B0-B15). Exemple:1. *R = Registrul R conţine adresa locaţiei de memorie unde sunt
stocate datele2. *R++(d) = Post incrementare prin valoarea d (care poate fi şi 1),
după adresare. Există şi varianta cu post-decrementare3. *++R(d) = Pre-incrementare cu d şi apoi adresare. Există şi
varianta cu pre-decrementare4. *+R(d) = Caz similar celui anterior (adresa curentă este R + d),
dar nu se actualizează şi conţinutul registrului R.
55
Adresare circulară• Adresarea circulară este folosită la tampoanele circulare, create în
hardware, pentru stocarea eşantioanelor şi coeficienţilor la operaţii specifice DSP (corelaţie, filtre digitale)
• Se pot administra două tampoane circulare, prin utilizarea câmpurilor de 5 biţi de dimensiune bloc (BK0 şi BK1) din registrul de control al modului de adresare (AMR - address mode register)
• Se folosesc ca pointeri 8 registre (A4-A7 şi B4-B7) în conjuncţie cu 2 unităţi .D
• Modurile AMR:
56
Registre de controlRegistre cu citire / scriere• AMR (Addressing mode register) - definirea modului de adresare
pentru fiecare din cele 8 registre A4-A7 – B4 – B7.• CSR (control status register): conţine bitul de validare globală
întreruperi (GIE - global interrupt enable bit) şi alţi biţi de control /stare (setare moduri power-down, big/little endian, mod de mapare cache)
• IER (interrupt enable register): validează / invalidează întreruperi individuale
• ISTP (interrupt service table pointer): pointer la tabela de servire întreruperi - localizează adresa de bază pentru rutinele de servire ISR
• NRP (nonmaskable interrupt return pointer): Conţine pointer care indică UCP locaţia de unde va continua execuţia după servirea NMI. Rutina de servire se termină cu salt: (B NRP)
57
Registre de control
Registre doar cu citire
• IFR (interrupt flag register): prin setarea bitului corespunzător întreruperii afişează starea întreruperilor (s-au produs sau nu)
• PCE1 (Program counter, E1 phase ): conţine adresa pe 32 de biţi a pachetului de fetch în faza E1 din pipeline
58
Registre de control
Registre doar cu scriere• ICR (interrupt clear register): permite ştergerea “manuală” a
întreruperilor mascabile (INT15 – INT4) care s-au lansat şi astfel au setat bitul corespunzător din IFR
• ISR (interrupt set register): permite setarea “manuală” a întreruperilor mascabile (INT15 – INT4). Ca rezultat se setează şi bitul corespunzător din IFR
• IRP (interrupt return pointer) – Registrul de stocare al pointerului de revenire din întrerupere. Acesta indică UCP locaţia de unde va continua execuţia după servirea unei înteruperi mascabile. Revenirea se poate produce prin terminarea rutinei de servire cu instrucţiunea de ramificare cu adresa din IRP (B IRP)
59
Întreruperi
• O întrerupere poate fi generată intern sau extern. • Efect cerere de întrerupere: oprire proces, salvare condiţii
proces curent, salt ISR, execuţie ISR, restaurare condiţii, revenire
• Există 16 surse de întrerupere– Acestea includ 2 întreruperi de la timer, 4 întreruperi externe, 4
întreruperi McBSP şi 4 întreruperi DMA
• Cele 12 întreruperi disponibile pentru UCP (intrări întrerupere) sunt administrate printr-un selector de întrerupere (multiplexare)
60
Întreruperi• Priorităţi:
– Reset (activ JOS) are cea mai mare prioritate– NMI următoarea prioritate– Urmează INT4 – INT15 (mascabile), dintre care INT4 are prioritatea cea
mai mare, iar INT 15 prioritatea cea mai mică• Se spune că Reset şi NMI sunt ne-mascabile• Întreruperea de reset şi NMI se activează prin semnale transmise la pini
externi ai capsulei• O întrerupere ne-mascabilă poate fi dezactivată (mascată !!) prin
ştergerea bitului (poziţionare pe 0) NMIE din cadrul registrului de control CSR. Acest bit este poziţionat pe 0 după Reset sau după apariţia unei întreruperi ne-mascabile
• Dacă NMIE este 0, toate întreruperile de la INT4 la INT15 sunt dezactivate
• Pentru a procesa (recunoaşte şi servi) o întrerupere mascabilă trebuie setaţi la 1 biţii GIE (validare globală întreruperi) din registrul CSR şi NIME din registrul IER
61
Proces de servire întrerupere
62
Interrupt Service Table
63
IST = Interrupt Service Table• IST - în cadrul fiecărei locaţii se află un pachet de fetch (FP) asociat cu
fiecare întrerupere– Tabelul conţine 16 pachete FP, fiecare a câte 8 instrucţiuni
• Adresa din tabel corespunde offset-ului asociat fiecărei întreruperi– Pentru că fiecare FP conţine 8 instrucţiuni a câte 32 biţi (256 biţi = 32
bytes) fiecare offset de adresă din tabel este incrementat cu 20h = 32• Pachetul FP pentru Reset trebuie să se găsească la adresa 0• Pachetele de fetch pentru toate întreruperile cu excepţia Reset, pot fi
relocate– Adresa de relocare poate fi specificată prin scrierea adresei în registrul de
bază al tabelei de servire a întreruperilor (ISTB - interrupt service table base register) din registrul pointerilor către tabelă (ISTP - interrupt servicetable pointer register)
– La reset ISTB devine 0. Pentru relocarea tabelei vectorilor se utilizeazăISTP, iar adresa de relocare este ISTB plus offset
64
Selectorul de întreruperi• CPU include un multiplexor numit
“selector de întreruperi”, care permite utilizatorului să selecteze şi conecteze sursele de întreruperi la cei 12 pini de intrare: INT4 - INT15
• Maparea întreruperilor către cele 12 intrări se face prin 2 registre de multiplexare a întreruperilor (IML şi IMH)
• Tabelul alăturat prezintă valorile selectorului de întreruperi necesar pentru alegerea unui tip specific de întrerupere
• Există 16 surse de întrerupere, fiecare cu număr de selecţie
65
Registre selector de întreruperi
66
Registre multiplexor de întreruperi
• Interrupt Multiplexer High (INT10 - INT15) (address 0x19c0000)
• Interrupt Multiplexer Low (INT4 - INT9) (address 0x19c0004)
INTSEL15INTSEL15 INTSEL14INTSEL14 INTSEL13INTSEL13 INTSEL12INTSEL12 INTSEL11INTSEL11 INTSEL10INTSEL10
2626
INTSEL9INTSEL9
21212424
INTSEL8INTSEL8
16161919
INTSEL7INTSEL7
10101313
INTSEL6INTSEL6
5588
INTSEL5INTSEL5
0033
INTSEL4INTSEL4
67
Bibliografie
• Real time DSP, Dr. Sarah Miller, http://www.cs.huji.ac.il/course/2006/67630/
• TMS320C6000 CPU and Instruction Set Reference Guide, focus.ti.com.cn/cn/lit/ug/spru189g/spru189g.pdf
• TMS320C64x/C64x+ DSP CPU and Instruction Set, focus.ti.com/lit/ug/spru732h/spru732h.pdf
• TMS320C6000 Peripherals Reference Guide, focus.ti.com/lit/ug/spru732h/spru732h.pdf
• TMS320C6000 One-Day Workshop, http://server.oersted.dtu.dk/ftp/sn/31611_2004E/slides/