tms320c62x-64x

13
TMS320C62x/64x Generatia C6000 este o familie de procesoare de semnal in virgula fixa de 16 biti care are la baza arhitectura VLIW (Very-Long-Instruction-Word). Exista si o versiune cu virgula mobila a acestei familii (TMS320C67x). Cele doua versiuni ale familiei de procesoare in virgula fixa sunt asemanatoare insa C64x este o versiune imbunatatita a familiei C62x, cu mai multe unitati functionale. Printre domeniile de folosire a procesoarelor C6000 pot fi mentionate: imagistica avansata, sistemele cu vedere artificiala, sistemele radar si sonar, infrastructura sistemelor de comunicatii wireless 3G si de banda larga. Dupa cum este aratat in Fig. 1. procesoarele C62x/C64x au acelasi nucleu constituit din doua cai de date in virgula fixa (A si B) si o unitate de control a instructiunilor care comanda extragerea codurilor, decodarea si logica de comanda. Fiecare cale de date contine patru unitati de executie independente, .Ln, .Sn, .Mn si .Dn., unde n = 1 sau 2, corespunde uneia din cele doua cai de date, A sau B. Prin urmare nucleul procesorului contine opt unitati functionale, in care sunt incluse doua multiplicatoare si cite 16 registre de 32 de biti (notate A0÷A15, respectiv B0÷B15), ceea ce inseamna ca procesorul poate executa pina la opt instructiuni de 32 de biti simultan. Procesoarele C62x executa doua operatii de multiplicare de 16x16 biti per ciclu, in timp ce procesoarele C64x executa 1

Upload: mops-light

Post on 14-Feb-2015

19 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: TMS320C62x-64x

TMS320C62x/64x

Generatia C6000 este o familie de procesoare de semnal in virgula fixa de 16 biti care

are la baza arhitectura VLIW (Very-Long-Instruction-Word). Exista si o versiune cu virgula

mobila a acestei familii (TMS320C67x). Cele doua versiuni ale familiei de procesoare in

virgula fixa sunt asemanatoare insa C64x este o versiune imbunatatita a familiei C62x, cu mai

multe unitati functionale. Printre domeniile de folosire a procesoarelor C6000 pot fi

mentionate: imagistica avansata, sistemele cu vedere artificiala, sistemele radar si sonar,

infrastructura sistemelor de comunicatii wireless 3G si de banda larga.

Dupa cum este aratat in Fig. 1. procesoarele C62x/C64x au acelasi nucleu constituit

din doua cai de date in virgula fixa (A si B) si o unitate de control a instructiunilor care

comanda extragerea codurilor, decodarea si logica de comanda. Fiecare cale de date contine

patru unitati de executie independente, .Ln, .Sn, .Mn si .Dn., unde n = 1 sau 2, corespunde

uneia din cele doua cai de date, A sau B. Prin urmare nucleul procesorului contine opt unitati

functionale, in care sunt incluse doua multiplicatoare si cite 16 registre de 32 de biti (notate

A0÷A15, respectiv B0÷B15), ceea ce inseamna ca procesorul poate executa pina la opt

instructiuni de 32 de biti simultan.

Procesoarele C62x executa doua operatii de multiplicare de 16x16 biti per ciclu, in

timp ce procesoarele C64x executa patru multiplicari de 16x16 biti per ciclu cu unitatea M.. In

plus, cu cele doua unitati de multiplicare procesoarele C64x pot executa instructiuni de

multiplicare de tip SIMD (Single Instruction Multiple Data) cu operanzi de 8 sau de 16 biti,

respectiv doua inmultiri cu operanzi de 16 biti sau patru inmultiri cu operanzi de 8 biti. In plus

C64x poate executa inmultiri in precizie extinsa, operatii de rotire pe 32 de biti, deplasari

bidirectionale pe 32 biti si inmultiri in cimpuri Galois.

Unitatea L contine un ALU pe 40 de biti. Acesta poate executa operatii aritmetice pe

32 sau pe 40 de biti (in mod saturat sau nesaturat), normalizari si operatii logice pe 32 de biti.

Familia C64x include si instructiuni pentru adunari/scaderi de tip SIMD (cite doua operatii pe

16 biti sau patru operatii de 8 biti). Unitatea executa si operatii logice XOR si NAND.

Unitatea D contine un sumator/scazator pe 32 de biti folosit pentru generarea

adreselor. Intr-un ciclu sunt generate doua adrese folosind adresarea liniara sau adresarea

circulara. Daca nu este folosita pentru generarea adreselor unitatea poate fi folosita ca un

1

Page 2: TMS320C62x-64x

ALU. La procesoarele C64x aceasta unitate poate executa operatii load/store pe 64 de biti,

operatii load/store cu operanzi nealiniati, pecum si operatii logice AND, OR, XOR si NAND.

Unitatea S contine un ALU pentru intregi de 32 biti si un deplasator de 40 de biti. Cu

aceste unitati functionale pot fi executate operatii aritmetice logice si cu cimpuri de biti cu

date pe 32 sau 40 biti, precum si deplasari. La procesoarele C64x unitatea S executa operatii

de comparare (doua comparari pe 16 biti sau patru pe 8 biti), manipulari de date impachetate

si salturi.

Procesoarele C64x au doua seturi de cite 32 de registre. In general durata unui ciclu

este de 4÷5 ns la procesoarele C62x, respectiv de 1.5÷2 ns la procesoarele C64x. Cind cele

opt unitati functionale executa in paralel opt instructiuni la capacitate completa performanta

procesoarelor este de 3600 MIPS cind lucreaza la 600 MHz. Folosind arhitectura VLIW

procesoarele C6000 pot realiza un grad mare de paralelism, eliminind astfel necesitatea de a

folosi un hardware care sa execute planificarea executiei unor instructiuni complexe.

Planificarea este realizata in etapa de compilare, de catre compilator si de programator, ceea

ce simplifica mult arhitectura procesorului comparativ cu procesoarele superscalare cum este

cazul procesoarelor Pentium. Procesoarele folosesc o aritmetica load/store ceea ce implica

faptul ca orice acces la memoria de date este executat printr-o operatie explicita de incarcare

(load) si de stocare (store). Aceasta facilitate simplifica setul de instructiuni si implementarea

hardware a circuitului.

Fig. 1 Nucleul procesoarelor TMS320C62x/64x

2

Page 3: TMS320C62x-64x

Fig. 2

Organizarea memoriei.

Memoria interna a procesoarelor C62x/C64x este realizata folosind o arhitectura

Harvard modificata, cu spatii separate pentru coduri si pentru date. Memoria pentru coduri

foloseste o magistrala de 32 de biti pentru adrese si una de 256 de biti pentru date, folosita

pentru extragerea instructiunilor de 8x32 biti. Memoria pentru date foloseste o magistrala de

32 biti pentru adrese si doua magistrale de 32 de biti pentru date. Procesoarele C64x folosesc

o magistrala de date de 64 de biti. De mentionat ca atit memoria pentru date cit si cea pentru

coduri sunt adresabile pe octet. Datele multioctet trebuie aliniate in memorie. In functie de

varianta, capacitatea memoriei interne pentru coduri si pentru date este cuprinsa intre 512

kbiti si 4 Mbiti. Unele variante poseda memorie cache petru coduri si pentru date organizata

pe doua nivele (cache L1-intern si cache L2-extern). Memoria interna pentru date este

impartita in citeva bancuri pentru accesarea simultana a datelor din diferite bancuri intr-un

ciclu.

Pentru accesarea memoriei externe procesoarele familiei C6000 poseda controlere

pentru magistrale EMIF (Extended Memory Interface) (una la familia C62x si doua la familia

3

Page 4: TMS320C62x-64x

C64x). EMIF are o magistrala de adrese de 23 biti si una de date de 32 biti, ambele putind fi

multiplexate intre memoria pentru cod si cea pentru date. Cu aceste interfete pot fi conectate o

gama larga de memorii externe sincrone sau asinscrone (RAM static sau dinamic, sincrone

sau asincrone, ROM, flash, s.a.). Memoriile externe sunt impartite in 4 subspatii : CE0, CE1,

CE2 si CE3, care pot fi accesate pe 8, 16 sau pe 32 de biti, cu anumite restrictii.

Arhitectura VLIW de tip VelociTI

O cerinta importanta pentru programarea simpla a oricarui circuit DSP este

ortogonalitatea setului de instructiuni. Aceasta inseamna ca setul de instructiuni nu trebuie sa

contina restrictii sau conditii speciale, ceea ce inseamna ca trebuie sa fie consistent.

Arhitectura VelociTi utilizata de Texas Instruments pentru procesoarele familiei

C6000 foloseste un set de instructiuni asemanator cu cel al procesoarelor RISC. Pentru a

exploata resursele interne aceste instructiuni simple sunt “impachetate” sub forma unor

cuvinte instructiune lungi. Un pachet extras, care are 256 de biti, contine de la una pina la opt

instructiuni, codificate cu 32 de biti, care pot fi executate in paralel. Folosirea unor

instructiuni simple usureaza asignarea unitatilor functionale, bazate pe instructiuni care sunt

executate in paralel. Circuitul extrage intr-un ciclu un pachet executabil care poate fi divizat

in una pina la opt instructiuni simple, care sunt apoi repartizate unitatilor de executie. O parte

dintre instructiunile procesorului sunt date in Tabelul 1, iar modul de impachetare este ilustrat

in Fig. 3. Daca pentru fiecare instructiune dintr-un pachet extras sunt disponibile resursele

pentru executie toate cele opt instructiuni sunt executate in paralel. Altfel pachetul extras este

impartit in pachete executabile care sunt executate succesiv. In arhitectura VLIW traditionala

se pot executa doar pachete de instructiuni care intra intr-un cuvint lung. Arhitectura VelociTI

combina patru pachete executabile intr-un singur pachet extras, reducind lungimea codului

75% in exemplul dat.

Mecanismul pipeline folosit pentru prelucrarea instructiunilor de procesoarele

C62x/64x este impartit in trei etaje: extragere, decodare si executie. Toate instructiunile

necesita patru faze pentru extragere dupa cum urmeaza:

- PG – Program Address Generate

- PS – Program Address Send

- PW – Program Address Ready Wait

- PR – Program Fetch Packet Receive

4

Page 5: TMS320C62x-64x

iar pentru decodificare sunt necesare doua faze:

- DP – Instruction Dispatch

- DC – Instruction Decode

Stadiul de executie este divizat in cinci faze (E1÷E5) care corespund numarului de etape

necesare pentru fiecare instructiune individuala. Majoritatea instructiunilor procesoarelor

C6000 necesita o singura faza de executie (E1), dar exista si instructiuni care necesita mai

multe faze. De exemplu, multiplicare necesita doua faze, iar incarcarea necesita cinci faze.

Eficienta pipeline-ului este evidenta in Fig. 5 unde pachetele consecutive de instructiuni (cite

opt instructiuni in fiecare pachet) ocupa complet pipeline-ul. Mecanismul pipeline a divizat

fiecare operatie astfel incit resursele interne ale procesorului sa fie cit mai complet folosite.

In Fig. 6 este prezentat fluxul codului in arhitectura VelociTI a procesoarelor

TMS320C62xx. Schema prezinta de sus in jos cele trei etaje ale pipeline-ului, respectiv Fetch,

Decode si Execute. Functionarea este ilustrata pe secventa de instructiuni urmatoare:

LOOP1:STH .D1 A5,*A8++[2]

|| STH .D2 B5,*B8++[2]|| SADD .L1 A2,A7,A2|| SADD .L2 B2,B7,B2|| SMPYH .M2X B3,A3,B2|| SMPY .M1X B3,A3,A2||[B1] SUB .S2||[B1] B .S1

Aceasta secventa este impachetata sub forma unui pachet complet executabil. Dupa ce

un pachet a fost distrubuit in faza DP a decodificarii el este decodificat (DC) in urmatorul

ciclu. In faza DC sunt stabilite registrele si caile de date pentru a incepe etapa Execute cu faza

E1.

Alte avantaje obtinute prin folosirea arhitecturii VelociTI sunt: ortogonalitatea

instructiunilor, pipelining-ul eficient, instructiunile de tip RISC. Conceptul VLIW a fost

utilizat si de alte firme pentru realizarea unor procesoare performante. De exemplu, Philips a

creat familia de procesoare TriMedia (TM1000, TM1100, TM1300).

5

Page 6: TMS320C62x-64x

Tabelul 1.

Fig. 3 Structura unui pachet extras

Fig. 4 Fazele executiei pipeline pentru un pachet executabil

6

Page 7: TMS320C62x-64x

Fig. 5 Functionarea pipeline pentru pachete complet executabile

Fig. 6 Schema bloc functionala pentru executia unei instructiuni VLIW

Structura sistemului

Procesoarele C6000 contin periferice pentru interfatarea cu dispozitive externe cum ar

fi memorii, alte procesoare C6000, un procesor gazda, un CODEC, dispozitive cu acces serie.

7

Page 8: TMS320C62x-64x

HPI (Host Port Interface) este un port paralel care lucreaza pe 16 biti (pentru C62x si

C64x), sau pe 32 biti (numai la C64x). Prin acest port, alte procesoare C6000 sau un procesor

gazda poate accesa memoria interna a lui C6000. In modul HPI-16 un dispozitiv gazda poate

citi sau scrie doua date de 16 biti din/in memoria interna a procesorului.

XB este o magistrala de extensie care asigura o cale pentru alte procesoare pentru a

aceesa memoria interna a lui C6000. XB este similar cu HPI insa are capacitatea de 32 biti si

poate functiona in mod sincron sau asincron.

Interfata PCI (Peripheral Component Interconect) este folosita tot pentru transferuri

I/O pe 32 biti la o frecventa de 33 MHz.

Controlerul DMA transfera date de la un bloc de memorie la altul fara interventia

CPU. Transferul este comandat prin intreruperi. C62x are un controler DMA cu 4 canale.

Procesoarele C62x folosesc 2 sau 3 porturi full-duplex McBSP (Multichannel

Buffered Serial Port). Fiecare port poate transfera date pe 8, 12, 16, 20, 24 sau 32 de biti la o

rata de transfer de 100 MHz. Pentru transferuri pe 8 biti McBSP asigura compandarea

automata potrivit legilor A sau µ. Procesoarele C6000 suporta pina la 128 de canale

multiplexate pentru secvente de biti.

Procesoarele C62x/C64x au 2 si respectiv 3 timere de 32 de biti. Fiecare timer are

pini dedicati de intrare si iesire si functioneaza cu tact extern sau intern cu frecventa ¼ din

cea a tactului procesorului.

Circuitul PLL (Phase-locked Loop) este folosit pentru normarea si sincronizarea

tactului. De exemplu, procesoarele C64x multiplica tactul cu factorul 1, 6 sau 12. Prin urmare

procesorul poate genera la iesire diferite semnale de tact avind ca referinta un semnal de

intrare.

Procesoarele C6000 poseda 3 regimuri de functionare cu consum redus, IDLE1,

IDLE2 si IDLE3.

8

Page 9: TMS320C62x-64x

Fig. 7 TMS320C62x

Fig. 8 TMS320C64x

9