Upload
mops-light
View
54
Download
0
Embed Size (px)
Citation preview
Procesoare digitale de semnal in virgula mobila
Principalele limitari ale procesoarelor in virgula fixa sunt precizia si gama
dinamica redusa. De aceea in cazul implementarilor in virgula fixa este necesara
scalarea atenta a valorii datelor pentru a evita depasirile de scala. Deoarece scalarea
implica reducerea gamei dinamice ea este insotita de scaderea raportului
semnal/zgomot in sistemele pentru prelucrarea semnalelor. In schimb folosirea
aritmeticii in virgula mobila ofera o precizie si o gama dinamica mai buna decit
aritmetica in virgula fixa, utila in special in aplicatiile care cer o precizie mare de
calcul cum ar fi actionarile electrice, sistemele pentru comanda robotilor, grafica pe
calculator, s.a. O comparatie privind avantajele si dezavantajele celor doua mari
familii de procesoare de semnal este data in Tabelul 1.
Tabelul 1
Virgula fixa Virgula mobila Arhitectura de sistem mai simpla Arhitectura de sistem complexa Programare mai dificila Programare eficienta in
limbajele de nivel inalt Memorie interna extinsa Necesita extinderea memoriei in
afara cipului Cost mai redus Cost mai ridicat Precizie limitata Precizie ridicata si mentinuta
fara operatii suplimentare Gama dinamica redusa Gama dinamica ridicata Erorile de calcul sunt rapid
acumulabile
Procesoarele cu aritmetica in virgula mobila folosesc de regula cuvinte de 32
de biti. De exemplu, un procesor pe 32 de biti care foloseste 24 de biti pentru
reprezentarea mantisei si 8 biti pentru reprezentarea exponentului ofera o gama
dinamica de 1530 dB. Procesoarele in virgula mobila executa operatiile cu viteza de
prelucrarea a datelor intregi, evitind totodata aparitia unor situatii delicate (de
exemplu, depasirea de scala, scalarea semnalelor, alinierea operanzilor) care se
manifesta in cazul virgulei fixe. Datorita gamei dinamice mari oferita de aceasta
reprezentare, anumite operatii (calculul TRF, realizarea filtrelor RII in cascada) care
conduc la cresterea valorii datelor la propagarea de la etaj la etaj nu produc usor
1
depasirea scalei cum se intimpla in cazul virgulei fixe. In plus efectele de cuantizare
sunt mai putin prezente.
Deoarece lungimea cuvintelor cu care opereaza procesoarele in virgula mobila
este mai mare decit la virgula fixa, aceste procesoare accepta un numar mai mare de
moduri de adresare precum si un grad mai mare de paralelism in executie. Folosirea
limbajelor de nivel inalt pentru programare este mai eficienta datorita arhitecturii
orientate pe registri, a folosirii instructiunilor in virgula mobila, a spatiului mai mare
de adrese, a numarului mai mare de moduri de adresare, a flexibilitatii setului de
instructiuni, etc. In plus virgula mobila permite o trecere mai directa de la mediul de
simulare pe un calculator gazda folosind programele MatLab sau C, catre o
implementare in timp real pe un sistem tinta cu procesor DSP. In mod curent
procesoarele in virgula mobila sunt folosite pentru aplicatii performante, ca de
exemplu sisteme pentru videoconferinta, retele de comunicatii cu comutare de
pachete, statii de baza pentru telefonia celulara, sisteme radar si sonar, imagistica
digitala, etc.
Familia TMS320 contine trei generatii de procesoare in virgula mobila,
respectiv C3x, C4x si C67x.
TMS320C3x
Structura interna este prezentata in Fig. 1 (5.1). Generatia C3x foloseste o
arhitectura Harvard pe 32 de biti, cu registre de 40 de biti pentru extinderea preciziei.
Aceste procesoare includ unitati de prelucrare in virgula mobila (de exemplu,
multiplicator, ALU, deplasator), facilitati pentru managementul rapid al memoriei cu
controler DMA incorporat, un cache intern pentru instructiuni de 64 cuvinte si un
spatiu de adrese de 16 Mcuvinte. Procesorul are un fisier de registre de uz general, un
cache pentru program, doua unitati aritmetice dedicate pentru registrele auxiliare
precum si o memorie interna cu acces dublu.
Viteza de executie este optimizata prin implementarea hardware a unor
operatii frecvent utilizate, cum sunt operatiile repetitive cu blocuri de date, adresarea
circulara, multiplicarea. Sistemul de magistrale interne permite executarea in paralel a
operatiilor de extragere a codurilor, a accesarii datelor (pentru citiri/scrieri) si a
transferurilor DMA. Procesorul foloseste adrese de 24 de biti pentru accesarea
cuvintelor de cod si de date de 32 de biti.
2
Pentru functionarea in sisteme multiprocesor, cu memorie globala partajata,
C3x foloseste cinci instructiuni si doua fanioane I/O externe, care pot fi configurati
prin software ca intrari sau iesiri pentru executarea operatiei de interblocare.
Desi procesorul este folosit mai ales ca procesor pentru operatii in virgula
mobila, operatiile in virgula fixa sunt utile pentru anumite aplicatii, cum sunt
prelucrarile de imagini. Procesoarele C3x executa operatii in virgula fixa, in virgula
mobila si operatii logice folosind instructiuni cu doi sau cu trei operanzi. De asemenea
C3x poate executa in paralel multiplicati si operatii cu ALU cu numere intregi
reprezentate in virgula fixa sau cu numere reale reprezentate in virgula mobila intr-un
singur ciclu. Procesoarele familiei pot executa mai multe tipuri de bucle (buclare
hardware pentru instructiuni sau pentru blocuri de program, buclare intirziata pentru
multiprocesare, buclare standard pentru golirea pipeline-ului). De asemenea pot fi
executate conversii din virgula fixa in virgula mobila. Procesoarele familiei pot
executa pina la 150 milioane de instructiuni in virgula mobila pe secunda (150
Mflops).
C3x foloseste trei formate de date: intregi cu semn, intregi fara semn si
numere in virgula mobila. Pentru numerele in virgula mobila este disponibil si un
format in precizie extinsa. Numerele intregi pot fi reprezentate cu 16 biti (formatul
scurt) sau cu 32 de biti (formatul lung). Pentru reprezentarea in virgula mobila sunt
folosite trei formate de date: formatul scurt (16 biti), formatul standard (32 de biti) si
formatul extins (40 de biti). Formatele de reprezentare nu respecta standardul IEEE
754. Pentru anumite aplicatii de timp real datele de intrare sunt esantioane de semnal
furnizate de convertoare A/D. Procesoarele C3x convertesc datele intregi intr-un
format cu virgula mobila, le prelucreaza, iar la sfirsit convertesc rezultatul in format
intreg si le transefera la CDA.
TMS320C4x
Generatia C4x contine primele procesoare DSP proiectate pentru prelucrari
paralele. Procesoarele C4x sunt compabibile la nivel de cod cu C3x. Procesoarele
familiei includ sase porturi de comunicatie, un controler DMA cu sase canale, doua
unitati independente de 32 de biti pentru interfatarea memoriei. Dupa cum s-a
mentionat pot fi conectate direct pina la sase procesoare C4x pentru prelucrari
paralele.
3
TMS320C67x
Cel mai recent procesor in virgula mobila din familia TMS320 este
TMS320C67x. C67x are la baza arhitectura VLIW prezentata anterior. Setul de
instructiuni al procesorului C67x este un superset al setului de instructiuni al
procesoarelor C62x, fiind adaugate instructiuni pentru operatii in virgula mobila.
Procesorul este capabil sa execute pina la 1350 Mflops la un tact de 225MHz. C67x
este optimizat pentru executarea eficienta a programelor scrise in limbajul C.
Procesoarele C67x sunt destinate aplicatiilor care cer precizie ridicata de calcul, gama
dinamica mare si viteza mare de calcul (radar, sonar, grafica 3D, statii de baza
wireless, linii de abonat digitale, imagistica medicala, s.a.)
Arhitectura C67x accepta date reprezentate in virgula mobila pe 32 de biti sau
pe 64 biti. Fiecare din cele doua cai de date contin cite patru unitati de executie, cite
un fisire de registre de uz general si cai de transfer de date intre registre si memorie.
Arhitectura C67x este prezentata in Fig. 2 (5.6).
Fig. 2 Arhitectura procesoarelor C67x
4
Procesoarele C67x au doua cai de date in virgula mobila, o unitate pentru
controlul programului, un controller DMA, memorie interna precum si interfete
pentru extensia memoriei pentru programe si date. Cele doua cai de date accepta
operanzi de 32/64 biti in virgula mobila si contin cite patru unitati de executie fiecare
(.L, .S, .M si .D), un fisier de registre precum si cai de transer a datelor intre memorie
si registre. Procesoarele C67x pot executa pina la opt instructiuni intr-un ciclu,
incluzind doua operatii de multiplicare in precizie simpla sau o multiplicare in
precizie dubla. Fata de procesoarele C62x arhitectuta C67x a fost modificata pentru a
permite incarcarea operanzilor cu precizie dubla pe 64 biti. Procesoarele contin doua
fisiere de cite 16 registre de uz general de 32 biti (A si B). Grupuri de cite doua
registre adiacente pot stoca si operanzi pe 64 biti pentru operatii realizate cu precizie
dubla. Operatiile realizate in precizie dubla necesita mai mult timp decit cele
executate in precizie simpla.
Memoria interna are o arhitectura Harvard modificata ccare asigura spatii
separate pentru coduri si date. Cele doua cai de date sunt conectate la memoria de date
prin magistrale de adrese (32 biti) si de date (64 biti) separate. Memoria pentru
programe este accesata printr-o magistrala de adrese de 32 biti si una pentru date de
256 biti. O varianta mai performanta din familia C67x (C6713) ofera posibilitatea de a
configura memoria interna ca memorie cache de nivel 1 (L1), iar memoria externa ca
memorie cache de nivel 2 (L2), atit pentru coduri cit si pentru date.
Procesoarele C67x poseda un sistem de periferice similar cu cel existent la
procesoarele C62x/64x.
C67x accepta toate instructiunile procesoarelor C62x plus un numar de
instructiuni noi incluzind: multiplicari de numere intregi pe 32 de biti, incarcari de
date de 64 biti, instructiuni pentru operatii in virgula mobila, etc. C67x realizeaza o
folosire intensa a memoriei deoarece arhitectura VLIW produce “pachete” de pina la
opt instructiuni de 32 de biti.
5