28.6 Cât de rapide sunt DSP-urile?

Motivul principal pentru utilizarea unui DSP în locul unui microprocesor tradițional este viteza, capacitatea de a mișca eșantioanele în dispozitiv, efectuarea operațiilor matematice necesare și ieșirea datelor prelucrate. Acest lucru ridică întrebarea: Cât de rapide sunt DSP-urile? Modul obișnuit de a răspunde la această întrebare reprezintă criterii de referință (benchmarks), metode pentru exprimarea vitezei unui microprocesor ca număr. De exemplu, sistemele cu virgulă fixă sunt adesea cotate în MIPS (operațiuni de milioane întregi pe secundă). De asemenea, dispozitivele în virgulă mobilă pot fi specificate în MFLOPS (milioane de operațiuni în virgulă mobilă pe secundă).

Cu o sută cincizeci de ani în urmă, premierul britanic Benjamin Disraeli a declarat că există trei tipuri de minciuni: minciuni, minciuni nenorocite și statistici. Dacă Disraeli ar fi trăit astăzi și ar lucra cu microprocesoare, el ar adăuga benchmarks ca o a patra categorie. Ideea din spatele criteriilor de referință este de a oferi o comparație cap-la-cap pentru a arăta care este cel mai bun dispozitiv. Din păcate, acest lucru eșuează deseori în practică, deoarece microprocesoare diferite excelează în diferite domenii. Imaginați-vă întrebarea: Care este mașina mai bună, un Cadillac sau un Ferrari? Depinde de ce vrei tu!

Confuzia privind criteriile de referință este agravată de natura competitivă a industriei electronice. Producătorii doresc să își arate produsele în cea mai bună lumină și vor folosi orice ambiguitate în procedura de testare în avantajul lor. Există un cuvânt vechi în electronică: "Un scriitor de specificații poate obține de două ori mai multă performanță de la un dispozitiv decât un inginer ." Acești oameni nu sunt mincinoși, ci doar plătiți pentru a avea imaginație bună. Indicatorii de referință ar trebui considerați un instrument pentru o sarcină complicată. Dacă nu aveți experiență în utilizarea acestui instrument, este posibil să ajungeți la o concluzie greșită. O abordare mai bună este să căutați informații specifice privind viteza de execuție a algoritmilor pe care intenționați să îi realizați. De exemplu, dacă aplicația dvs. solicită un filtru FIR, căutați numărul exact de cicluri de tact necesare pentru ca dispozitivul să execute această activitate particulară.

Figura 28-11 Viteza DSP.

Viteza de procesare a unui algoritm DSP particular poate fi găsită prin împărțirea vitezei de tact la numărul necesar de cicluri de tact pe eșantion. Această ilustrație arată gama vitezei de procesare pentru patru algoritmi comuni, executată pe un SHARC DSP la o viteză de tact de 40 MHz.

Folosind această strategie, să ne uităm la timpul necesar pentru a executa diferiți algoritmi pe DSP-ul nostru recomandat, familia Analog Devices SHARC. Rețineți că viteza microprocesorului se dublează la fiecare trei ani. Aceasta înseamnă că trebuie să acordați o atenție deosebită metodei pe care o folosim în acest exemplu. Numerele actuale se schimbă întotdeauna și va trebui să repetați calculele de fiecare dată când începeți un nou proiect. În lumea tehnologiei secolului douăzeci și unu, clipești și ești depășit!

Când vine vorba de înțelegerea timpului de execuție, familia SHARC este una dintre cele mai ușoare DSP cu care să lucrați. Acest lucru se datorează faptului că poate efectua o operație de multiplicare acumulată într-un singur ciclu de tact. Deoarece majoritatea filtrelor FIR utilizează de la 25 la 400 de coeficienții, sunt necesare 25-40 cicluri de tact, respectiv, pentru fiecare eșantion de procesat. Așa cum a fost descris mai sus, există o cantitate mică de depășire necesară pentru a atinge această eficiență a buclei amorsarea primei bucle și finalizarea ultimei bucle), dar este neglijabilă atunci când numărul de bucle este atât de mare. Pentru a obține rata de transfer a filtrului, putem împărți rata de tact SHARC (40 MHz în prezent) cu numărul de cicluri de tact necesare pentru fiecare eșantion. Acest lucru ne oferă o rată maximă de date FIR de aproximativ 100k până la 1,6M de eșantioane pe secundă. Calculele nu pot fi mult mai simple decât asta! Aceste valori ale ratei de transfer FIR sunt arătate în fig. 28-11.

Calculele sunt la fel de ușor pentru filtrele recursive. Filtrele tipice IIR folosesc aproximativ 5-17 coeficienți. Deoarece aceste bucle sunt relativ scurte, vom adăuga o cantitate mică de depășire (overhead), să spunem 3 cicluri pe eșantion. Acest lucru are ca rezultat 8-20 de cicluri de tact fiind necesare pentru fiecare eșantion de date prelucrate. Pentru rata de tact de 40 MHz, aceasta oferă o viteză maximă de transfer IIR de la 1,8M la 3,1M eșantioane /secundă. Aceste valori IIR sunt de asemenea prezentate în figura 28-11.

Apoi vom ajunge la tehnicile din domeniul frecvență, bazate pe transformata Fast Fourier. Subrutinele FFT sunt aproape întotdeauna furnizate de producătorul DSP. Acestea sunt rutine extrem de optimizate scrise în asamblare. Fișa de specificații a lui ADSP-21062 SHARC DSP indică faptul că FFT complexă de 1024 eșantioane necesită 18.221 cicluri de tact sau aproximativ 0,46 milisecunde la 40 MHz. Pentru a calcula viteza de transfer, este mai ușor de văzut acest lucru ca 17,8 cicluri de tact pe eșantion. Această valoare "pe eșantion" se modifică doar ușor cu FFT mai lungi sau mai scurte. De exemplu, un FFT de 256 eșantioane necesită circa 14,2 cicluri de tact pe eșantion, iar un FFT de 4096 eșantioane necesită 21,4 cicluri de tact pe eșantion. Real FFT pot fi calculate cu aproximativ 40% mai rapid decât aceste valori FFT complexe. Aceasta face gama totală a tuturor rutinelor FFT aproximativ 10 la 22 cicluri de tact pe eșantion, corespunzând la o viteză de transfer de aprox. 1,8M la 3,3M eșantioane/secundă.

Convoluția FFT este o modalitate rapidă de a efectua filtre FIR. Într-un caz tipic, un segment de 512 eșantioane este luat de la intrare, este căptușit cu încă 512 zerouri și este convertit în spectrul său de frecvență utilizând un FFT de 1024 puncte. După ce se multiplică acest spectru cu răspunsul de frecvență dorit, se utilizează o FFT inversă de 1024 de puncte pentru a se muta înapoi în domeniul timp. Cele 1024 de puncte rezultate sunt combinate cu segmentele procesate adiacente utilizând metoda de suprapunere-adăugare. Aceasta produce 512 de puncte ale semnalului de ieșire.

Câte cicluri de tact face acest lucru? Fiecare segment de 512 eșantioane necesită două FFT de 1024 puncte, plus o cantitate mică de overhead. În termeni rotunzi, acest lucru este aproximativ un factor de cinci mai mare decât pentru un singur FFT de 512 de puncte. Deoarece FFT real necesită aproximativ 12 cicluri de tact pe eșantion, convoluția FFT poate fi efectuată în circa 60 de cicluri de tact pe eșantion. Pentru un DSP SHARC 2106x la 40 MHz, aceasta corespunde unei viteze de transfer de date de aproximativ 660k eșantioane/secundă.

Observați că aceasta este cam la fel ca un filtru FIR de 60 coeficienți efectuat prin convoluție convențională. Cu alte cuvinte, dacă un filtru FIR are mai puțin de 60 de coeficienți, acesta poate fi realizat mai rapid prin convoluție standard. Dacă are mai mult de 60 de coeficienți, convoluția FFT este mai rapidă. Un avantaj cheie al convoluției FFT constă în faptul că timpul de execuție crește doar ca logaritmul numărului de coeficienți. De exemplu, un kernel filtru de 4096 puncte necesită doar aproximativ 30% mai mult pentru a fi executat ca unul cu numai 512 puncte.

Convoluția FFT poate fi aplicată și în două dimensiuni, cum ar fi prelucrarea imaginilor. De exemplu, să presupunem că vrem să procesăm o imagine de 800×600 pixeli în domeniul frecvență. Mai întâi, împachetați imaginea cu zerouri pentru a o face 1024×1024. Spectrul de frecvență bidimensional este apoi calculat prin aplicarea FFT fiecărei dintre rânduri, urmată de aplicarea FFT fiecărei dintre coloanele rezultate. După ce se multiplică acest spectru de 1024×1024 cu răspunsul de frecvență dorit, este aplicată FFT inversă bidimensională. Aceasta se realizează luând FFT inversă pentru fiecare dintre rânduri și apoi fiecare dintre coloanele rezultate. Adăugând numărul de cicluri de tact și împărțind la numărul de eșantioane, constatăm că această întreagă procedură durează aproximativ 150 de cicluri de tact pe pixel. Pentru un ADSP-2106 de 40 MHz, aceasta corespunde la o viteză de transfer de circa 260k eșantioane/secundă.

Comparând aceste tehnici diferite în figura 28-11, putem face o observație importantă. Aproape toate tehnicile DSP necesită între 4 și 400 instrucțiuni (cicluri de tact în familia SHARC) pentru a fi executate. Pentru un DSP SHARC care funcționează la 40 MHz, putem concluziona imediat că viteza de transfer a datelor va fi între 100k și 10M eșantioane pe secundă, în funcție de cât de complex este folosit algoritmul.

Acum, că înțelegem cât de repede pot procesa DSP-urile semnale digitalizate, să ne îndreptăm atenția spre celălalt capăt; cât de repede trebuie să procesăm datele? Desigur, aceasta depinde de aplicație. Vom analiza două dintre cele mai frecvente, procesare audio și video.

Rata de date necesară unui semnal audio depinde de calitatea necesară a sunetului reprodus. La limita inferioară, vorbirea de calitate a telefonului necesită numai captarea frecvențelor între aproximativ 100 Hz și 3,2 kHz, dictând o rată de eșantionare de aproximativ 8k eșantioane/secundă. În comparație, muzica de înaltă fidelitate trebuie să conțină întreaga gamă de audiență umană de la 20 Hz la 20 kHz. O rată de eșantionare de 44,1 kHz este adesea folosită atât pentru canalele stânga cât și dreapta, ceea ce face ca semnalul Hi Fi să fie 88,2k eșantioane/secundă. Cum se compară familia SHARC cu aceste cerințe? Așa cum se arată în figura 28-11, acesta poate manevra cu ușurință un sunet de înaltă fidelitate sau poate procesa simultan câteva duzini de semnale vocale în același timp.

Semnalele video sunt o poveste diferită; ele necesită aproximativ de o mie de ori rata de date a semnalelor audio. Un bun exemplu de video de calitate scăzută este standardul CIF (Common Interface Format) pentru videofoane. Acesta utilizează 352×288 pixeli, cu 3 culori pe pixel și 30 de cadre pe secundă, pentru o rată totală de date de 9,1 milioane de eșantioane pe secundă. La capătul înalt al calității se află HDTV (televiziune de înaltă definiție), care utilizează 1920×1080 pixeli, cu 3 culori pe pixel și 30 de cadre pe secundă. Aceasta necesită o rată a datelor de peste 186 milioane de eșantioane pe secundă. Aceste rate de date sunt peste capabilitățile unui singur DSP SHARC, așa cum se arată în figura 28-11. Există și alte aplicații care necesită aceste rate foarte ridicate de date, de exemplu, radar, sonar și utilizări militare, cum ar fi ghidarea rachetelor.

Pentru a face față acestor sarcini de mare putere, mai multe DSP-uri pot fi combinate într-un singur sistem. Aceasta se numește multiprocesare sau procesare paralelă. DSP-urile SHARC au fost concepute pentru acest tip de multiprocesare și includ caracteristici speciale pentru a le face cât mai ușor posibil. De exemplu, nu este necesară nicio logică hardware externă pentru a conecta împreună magistralele externe ale mai multor DSP-uri SHARC; toate logica arbitrajului de magistrală este deja cuprinsă în fiecare dispozitiv. Ca alternativă, porturile de legătură (4 biți, paralele) pot fi utilizate pentru a conecta mai multe procesoare în diverse configurații. Figura 28-12 arată căi tipice cum DSP-urile SHARC pot fi aranjate în sistemele de multiprocesare. În figura (a), algoritmul este fragmentat în etape secvențiale, fiecare procesor realizând unul din etapele într-o strategie "linie de asamblare" . În (b), procesoarele interacționează printr-o singură memorie globală partajată, accesată pe o magistrală paralelă (adică port extern). Figura 28-13 arată un alt mod în care un număr mare de procesoare pot fi combinate într-un singur sistem, un "mesh" 2D sau 3D. Fiecare dintre aceste configurații va avea avantaje și dezavantaje relative pentru o anumită sarcină.

Figura 28-12 Configurații de multiprocesare.

Sistemele multiprocesoare tipice utilizează una sau două scheme pentru a comunica între nodurile procesorului, (a) canale de comunicație punct-cu-punct dedicate, sau (b) o memorie globală împărțită accesată pe o magistrală paralelă.

Pentru a ușura viața programatorului, familia SHARC folosește un spațiu de adrese unificat. Aceasta înseamnă că spațiul de adrese 4 Gigaword, accesat de magistrala de adrese de 32 biți, este împărțit între diferitele procesoare care lucrează împreună. Pentru a transfera date de la un procesor la altul, pur și simplu citiți de la sau scrieți la locațiile de memorie corespunzătoare. Logica internă SHARC se ocupă de restul, transferând datele între procesoare cu o rată de până la 240 Mbyte/sec (la 40 MHz).

Figura 28-13 Configurație "plasă" de multiprocesare.

Pentru aplicații în imagistică radar, o matrice 2D sau 3D poate fi cel mai eficient mod de a coordona un număr mare de procesoare.

Secțiunea următoare: Piața procesoarelor de semnal digital