28.1 Modul în care DSP-urile diferă de alte microprocesoare

În anii 1960 a fost prezis că inteligența artificială ar revoluționa modul în care oamenii interacționează cu computerele și alte mașini. Se credea că până la sfârșitul secolului vom avea roboți care să ne curețe casele, computere care conduc mașinile noastre și interfețe vocale care controlează stocarea și recuperarea informațiilor. Acest lucru nu sa întâmplat; aceste sarcini abstracte sunt mult mai complicate decât se așteptau și sunt foarte greu de realizat cu logica pas-cu-pas oferită de computerele digitale.

Cu toate acestea, ultimii patruzeci de ani au demonstrat că computerele sunt extrem de capabile în două arii largi, (1) manipularea datelor, cum ar fi procesarea de text și gestionarea bazelor de date, și (2) calculul matematic, utilizat în știință, inginerie și prelucrare digitală a semnalelor. Toate microprocesoarele pot efectua ambele sarcini; dar, este dificil (scump) să faci un dispozitiv care este optimizat pentru ambele. Există compromisuri tehnice în proiectarea hardware-ului, cum ar fi dimensiunea setului de instrucțiuni și modul în care sunt tratate întreruperile. Chiar mai important, există probleme de marketing implicate: costurile de dezvoltare și de fabricație, poziția competitivă, durata de viață a produsului și așa mai departe. Ca o generalizare largă, acești factori au făcut microprocesoarele tradiționale, cum ar fi Pentium®, orientate în primul rând spre manipularea datelor. În mod similar, DSP-urile sunt proiectate pentru a efectua calculele matematice necesare procesării semnalelor digitale.

Figura 28-1 Manevrarea datelor versus calcul matematic.

Computerele digitale sunt utile pentru două sarcini generale: manevrarea datelor și calculul matematic. Manevrarea datelor este bazată pe mișcarea datelor și testarea inegalităților, în timp ce calculul matematic utilizează înmulțirea și adunarea.

Figura 28-1 prezintă cele mai importante diferențe dintre aceste două categorii. Manipularea datelor implică stocarea și sortarea informațiilor. De exemplu, ia în considerare un program de procesare de text. Sarcina de bază este de a stoca informațiile (introduse de către operator), de a organiza informațiile (tăiat și lipit, verificarea ortografiei, aspectul paginii etc.) și apoi recuperarea informațiilor (cum ar fi salvarea documentului pe o dischetă sau imprimarea cu o imprimantă laser). Aceste sarcini sunt realizate prin mutarea datelor dintr-o locație în alta și testarea inegalităților (A = B, A<B, etc.). De exemplu, imaginați sortarea unei liste de cuvinte în ordine alfabetică. Fiecare cuvânt este reprezentat de un număr de 8 biți, valoarea ASCII a primei litere din cuvânt. Alfabetizarea implică rearanjarea ordinii cuvintelor până când valorile ASCII cresc continuu de la începutul la sfârșitul listei. Acest lucru poate fi realizat prin repetarea a doi pași peste și peste până la terminarea alfabetizării. Mai întâi, testați două intrări adiacente pentru a fi în ordine alfabetică (IF A > B THEN ...). În al doilea rând, dacă cele două intrări nu sunt în ordine alfabetică, comutați-le astfel încât să fie (A⇄B). Când acest proces în două etape se repetă de mai multe ori pe toate perechile adiacente, lista va deveni în cele din urmă alfabetizată.

Ca un alt exemplu, considerați modul în care un document este tipărit dintr-un procesor de text. Computerul testează continuu dispozitivul de intrare (mouse sau tastatură) pentru codul binar care indică "imprimarea documentului". Când acest cod este detectat, programul mută datele din memoria calculatorului în imprimantă. Aici avem aceleași două operațiuni de bază: deplasarea datelor și testarea inegalităților. În timp ce matematica este folosită ocazional în acest tip de aplicație, aceasta este rară și nu afectează în mod semnificativ viteza de execuție globală.

În comparație, viteza de execuție a majorității algoritmilor DSP este limitată aproape complet de numărul de multiplicări și adunări necesare. De exemplu, Figura 28-2 prezintă implementarea unui filtru digital FIR, cea mai comună tehnică DSP. Folosind notația standard, semnalul de intrare este referit la x[ ], în timp ce semnalul de ieșire este notat cu y[ ]. Sarcina noastră este de a calcula eșantionul la locația n în semnalul de ieșire, adică y[n]. Un filtru FIR efectuează acest calcul prin înmulțirea eșantioanelor corespunzătoare din semnalul de intrare cu un grup de coeficienți, notat cu: a0, a1, a2, a3, … , și apoi adunând produsele. În formă de ecuație, y[n] este găsit prin:

Acest lucru este simplu spunând că semnalul de intrare a fost în convoluție cu un kernel filtru (adică un răspuns la impuls) constând din: a0, a1, a2, a3, .... În funcție de aplicație, pot exista doar câțiva coeficienți în kernelul de filtrare, sau multe mii. În timp ce există o anumită evaluare a transferului de date și a inegalității în acest algoritm, cum ar fi urmărirea rezultatelor intermediare și controlul buclelor, operațiile matematice domină timpul de execuție.

Figura 28-2 Filtru digital FIR.

În filtrarea FIR, fiecare eșantion din semnalul de ieșire y[n] este găsit prin multiplicarea eșantioanelor din semnalul de intrare, x[n], x[n-1], x[n-2],... cu coeficienții kernelului de filtru, a0, a1, a2, a3, ... și însumarea produselor.

În plus la efectuarea calculelor matematice foarte rapid, DSP-urile trebuie să aibă și un timp de execuție previzibil. Să presupunem că lansați computerul pe o anumită sarcină, să zicem, transformarea unui document de procesare a textului dintr-o formă în alta. Nu contează dacă prelucrarea durează zece milisecunde sau zece secunde; așteptați pur și simplu ca acțiunea să fie finalizată înainte de a da computerului următoarea sarcină.

În comparație, majoritatea DSP-urilor sunt folosite în aplicații în care prelucrarea este continuă, fără a avea un început sau un sfârșit definit. De exemplu, considerați un inginer proiectând un sistem DSP pentru un semnal audio, cum ar fi un aparat auditiv. Dacă semnalul digital este recepționat la 20.000 de eșantioane pe secundă, DSP trebuie să poată menține o cantitate susținută de 20.000 de eșantioane pe secundă. Dar, există motive importante pentru a nu face acest lucru mai rapid decât este necesar. Pe măsură ce viteza crește, la fel și costurile, consumul de energie, dificultatea designului și așa mai departe. Aceasta face o cunoaștere exactă a timpului de execuție critic pentru selectarea dispozitivului adecvat, precum și a algoritmilor care pot fi aplicați.

Secțiunea următoare: Buffer-area circulară