Digital Signal Processor
A DSP kettős jelentésű szó, egyrészt a Digital Signal Processing (digitális jelfeldolgozás - mint témakör), másrészt a Digital Signal Processor (digitális jelfeldolgozó processzor - mint eszköz) rövidítése. Az alábbiakban az utóbbiról lesz szó.
Tartalomjegyzék
Digital Signal Processor
A digitális jelfeldolgozó processzor igen sok közös vonást mutat a mikrovezérlőkkel, azonban a számítási feladatokra erőteljesen ki van hegyezve.
A mikrovezérlővel közös tulajdonságai
- Program fut benne
- Ráadásul hasonlóképp, mint a mikrovezérlőben
- RAM, ROM terület van, mint a RISC mikrovezérlőkben
- Perifériák (A/D, D/A, I/O portok, SPI, I2C, Ethernet kontroller, stb.) találhatók rajta
- Órajel vezérelt sorrendi utasításvégrehajtó.
- RISC mikrovezérlőkhöz hasonlóan 1 órajel kell utasításonként.
Miben tér el a mikrovezérlőtől?
- Sokkal magasabb belső órajel, néha GHz-ek; a mikrovezérlők általában 100 MHz alatt járnak.
- Erős párhuzamosítás. Például C+=A*B; D=E+F; G=H*I három független operandusú műveletet egyetlen igen összetett utasításként adhatunk oda, ezáltal valójában 3 független műveletet végrehajt, 3 párhuzamos szálon.
- Komplex aritmetikai lépés, például a fenti C+=A*B egy szorzás majd a végeredménynek a C regiszterhez adása egyetlen komplex utasítás.
- Pileline feldolgozó: nem feltétlen 1 órajel alatt végzi el a szorzást, de 100 órajel alatt 100 szorzást tényleg rá lehet bízni. Ezt a tényt azonban a programozás során figyelembe kell venni.
- Sok RAM: jelfeldolgozáshoz jól jön.
- A szokásos regisztereknél sokkal több bites akkumulátor: dedikált eredményösszegző regiszterek még hosszabbak, mint azok, amely eredményeit szeretnénk itt összegezni. Ezáltal a pontosság növekszik, mivel nem kell összegzés előtt jobbra tolva néhány bitet elhagynunk. A sok-sok összegzés mégsem vezet túlcsorduláshoz.
- Hardveres ciklikus puffer, automatikus növeléssel, csökkentéssel. Ez azért kellemes, mert a szűrési algoritmusok a bejövő adatokat szorozzák össze egy súlyfüggvény elemeivel. Gyakorlatilag ez két azonos hosszúságú memóriaterület keresztbeszorzása, amely ciklussal valósítható meg. A mikrovezérlők esetén ez a két indexelt cím szorzásán kívül tartalmaz inkrementáló és dekrementáló utasításokból 1-1 darabot, összehasonlító utasítást és feltételes elágazó utasítást. Ezáltal a 4-5 utasítás ismételgetése helyett egyetlen utasítás ismétlésébe belefér ez a művelet, ezáltal a DSP 5-ször hatékonyabban gazdálkodik ilyen műveleteknél az órajelével.
- Speciális vektorműveletekre hardvertámogatás.
Példa: Egy adott DSP 16 független szálat képes kezelni, 1 GHz-en jár és FIR szűrőket szeretnénk megvalósítani. Hányszor gyorsabb egy 32 bites 100 MHz-es RISC mikrovezérlőnél?
Látható, hogy a 16 szál miatt és a 10-szeres órajel és az 5-ször hatékonyabb órajelfelhasználás miatt 800-szor gyorsabb. És ebben még nincsenek beleszámolva a vektoros hardvergyorsító céláramkörök.
Digital Signal Controller
A Microchip cég dsPIC egycsipes számítógépei kapcsán találkozhattunk ezzel a kifejezéssel. A cég a szóhasználattal utal arra, hogy ez az integrált áramkör azt az alkalmazási szegmenst hivatott betölteni, amely mikrovezérlőt igényel, de egy picivel több számítási feladat akadna. Ezáltal jól hasznosítható pehelysúlyú DSP-s feladatokhoz is, ugyanakkor nem rossz választás olyan helyre sem, ahol a számítások mellé mikrovezérlő feladat is szükséges.
- Miért DSC?
- Csak 40 MHz-en jár (miközben a 32 bites ARM-ok, RISC-ek 100 MHz körül)
- csak egyetlen szálon képes utasítást végrehajtani
- 16 bites argumentumokat képes szorozni, 32 bites eredményét két, egyenként 40 bites akkumulátor egyikéhez hozzáadni.
- hardveres ciklikus puffert csak autoinkrementált indexregiszterrel támogat, egyébként nem.
- hardveres CRC generátora azonban van - mint speciális, gyakran használt célhardver.
Összességében a dsPIC-ről elmondható, a digitális jelfeldolgozást tényleg támogatja, de közel sem hordozza magán a DSP összes jó áramköri trükkjét.
Szubjektív vélemény: napjainkban igen meggondolandó, hogy egy mindössze DSC teljesítményt igénylő feladatra 32 bites ARM vagy MIPS mellett vagy pedig egy 16 bites dsPIC mellett dönt a fejlesztő.