arhitectura procesoarelor digitale de semnal (dsp)

17
Arhitectura procesoarelor digitale de semnal (DSP) În slide-uri se: •Exemplifică procesoare digitale de semnal de la Texas Instruments • 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 Cost Lowest Cost Control Systems Control Systems Motor Control Motor Control Storage Storage Digital Ctrl Systems Digital Ctrl Systems C2000 C2000 (C20x/24x/28x) (C20x/24x/28x) ‘C1x ‘C2x ‘C1x ‘C2x C6000 C6000 (C62x/64x/67x) (C62x/64x/67x) ‘C3x ‘C4x ‘C8x ‘C3x ‘C4x ‘C8x Multi Channel and Multi Channel and Multi Function App's Multi Function App's Comm Infrastructure Comm Infrastructure Wireless Base Wireless Base - - stations stations DSL DSL Imaging Imaging Multi Multi - - media Servers media Servers Video Video Max Max Performance Performance with with Best Best Ease Ease - - of of - - Use Use Efficiency Efficiency Best MIPS per Best MIPS per Watt / Dollar / Size Watt / Dollar / Size Wireless phones Wireless phones Internet audio players Internet audio players Digital still cameras Digital still cameras Modems Modems Telephony Telephony VoIP VoIP C5000 C5000 (C54x/55x) (C54x/55x) ‘C5x ‘C5x

Upload: vannga

Post on 02-Feb-2017

229 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Arhitectura procesoarelor digitale de semnal (DSP)

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

Page 2: Arhitectura procesoarelor digitale de semnal (DSP)

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

Page 3: Arhitectura procesoarelor digitale de semnal (DSP)

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).

Page 4: Arhitectura procesoarelor digitale de semnal (DSP)

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).

Page 5: Arhitectura procesoarelor digitale de semnal (DSP)

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

Page 6: Arhitectura procesoarelor digitale de semnal (DSP)

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

Page 7: Arhitectura procesoarelor digitale de semnal (DSP)

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

Page 8: Arhitectura procesoarelor digitale de semnal (DSP)

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

Page 9: Arhitectura procesoarelor digitale de semnal (DSP)

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

Page 10: Arhitectura procesoarelor digitale de semnal (DSP)

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

Page 11: Arhitectura procesoarelor digitale de semnal (DSP)

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

Page 12: Arhitectura procesoarelor digitale de semnal (DSP)

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

Page 13: Arhitectura procesoarelor digitale de semnal (DSP)

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

Page 14: Arhitectura procesoarelor digitale de semnal (DSP)

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)

Page 15: Arhitectura procesoarelor digitale de semnal (DSP)

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

Page 16: Arhitectura procesoarelor digitale de semnal (DSP)

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

Page 17: Arhitectura procesoarelor digitale de semnal (DSP)

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/