right|thumb|Digitális jelprocesszor-csip egy gitáreffekt-egységben A digitális jelfeldolgozó processzor vagy digitális jelprocesszor (angolul: digital signal processor, DSP) egy olyan specializált mikroprocesszor (vagy SIP blokk), melynek felépítését, architektúráját kifejezetten a digitális jelfeldolgozás működési igényeihez optimalizálták.

A DSP-k célja, hogy digitálisan feldolgozza a folyamatos, valós (a fizikai világból származó) analóg jeleket – a feldolgozás alatt általában mérés, szűrés és tömörítés, összenyomás értendő. A legtöbb általános célú mikroprocesszor szintén képes digitális feldolgozó algoritmusok végrehajtására valamely analóg-digitális átalakító (ADC) által digitális értékekre konvertált analóg jeleken, de a dedikált DSP-k ezt a feladatot általában nagyobb hatásfokkal végzik, így alkalmasabbak a hordozható eszközökben, például mobiltelefonokban történő felhasználásra, az energiafogyasztási korlátok miatt. A DSP-k gyakran speciális memória-architektúrákat alkalmaznak, amellyel lehetővé válik az adatok és utasítások egyidejű lehívása és feldolgozása.

Áttekintés

A digitális jelfeldolgozó algoritmusok jellemzően nagyszámú matematikai művelet gyors és ismétlődő végrehajtásával járnak, adatminták hosszú sorozatán. A feltehetőleg valamilyen audió- vagy videóérzékelőből érkező jeleket egy átalakító folyamatosan analógból digitális formába konvertálja, az adatfolyamot a processzor digitálisan feldolgozza és megváltoztatja, ezután visszaalakítja analóg formába. A legtöbb DSP alkalmazásban a latencia korlátos; azaz a rendszer helyes működéséhez a DSP műveletnek korlátozott idő alatt be kell fejeződnie, és a késleltetett vagy kötegelt (batch-) feldolgozás nem lehetséges.

A legtöbb általános célú mikroprocesszor és operációs rendszer képes DSP algoritmusok sikeres végrehajtására, de nem alkalmasak hordozható eszközökben, például mobiltelefonokban és PDA-kban való felhasználásra, a hatásfok korlátai miatt. A speciális digitális jelfeldolgozó processzorok azonban képesek nagyobb teljesítményű és alacsonyabb késleltetéssel járó megoldást nyújtani alacsonyabb áron, és nincsenek különleges környezeti vagy üzemi követelményeik sem (pl. nincs szükség processzorhűtésre és nagyteljesítményű tápellátásra).

A digitális jelprocesszorok architektúrája specifikusan a digitális jelfeldolgozás céljaira lett optimalizálva. Többségük rendelkezik az alkalmazásfuttató processzorok vagy mikrovezérlők bizonyos képességeivel is, mivel a jelfeldolgozás ritkán egyedüli feladata a rendszernek. Alább láthatunk a DSP algoritmusok optimalizálására szolgáló néhány hasznos funkciót. Architektúra Az általános célú processzorok normái szerint a DSP processzorok utasításkészlete gyakran igen szabálytalan. Ennek a szoftver-architektúrára is hatása van, mivel emiatt rendszerint rutinkönyvtárakba csomagolják a kézileg optimalizált assembly kódú rutinokat, az újrafelhasználhatóság céljából, ahelyett, hogy fejlett fordítóprogram-technológiákra támaszkodva kezelnék az alapvető algoritmusokat.

A DSP utasításkészletekben előforduló hardverspecifikus vonások közül szinte valamennyi a sebesség növelésére irányul; a processzorokban általában megtalálhatók a következők: Hardveres modulo címzés, mely lehetővé teszi a körkörös pufferek megvalósítását állandó határellenőrző / körbefordulási tesztelés nélkül. Egyidejű adatfolyamok kezelését megkönnyítő memóriakialakítások és DMA kiterjedt használata, valamint a programkóddal szembeni elvárás a gyorsítótár-hierarchiák és az azokhoz kapcsolódó késleltetések ismerete. Több aritmetikai-/számítóegység meghajtása olyan memóriakialakítást igényel, amely egyszerre több memóriahozzáférést enged meg egy ciklus alatt. Külön program- és adatmemóriák (Harvard-architektúra), és néha konkurens hozzáférés a többszörös adatsínekhez. Speciális SIMD műveletek (egyetlen művelet, több adaton). Egyes processzorok VLIW technikákat használnak, ahol minden utasítás több számítóegységet hajt meg párhuzamosan. Speciális aritmetikai műveletek, mint például gyors szorzó-akkumuláló műveletek (multiple-accumulate, MAC művelet). Több alapvető DSP algoritmus, például a FIR szűrők vagy a gyors Fourier-transzformáció (FFT) sebessége nagymértékben függ a szorzó-akkumuláló művelet teljesítményétől. Bit-fordított címzés: egy különleges címzési mód, hasznos az FFT számításában. Különleges ciklusvezérlési módok, például néhány utasításszóból álló igen szoros ciklusok architekturális támogatása, az utasításlehívás vagy a kilépési feltételek tesztelésének többletterhelése nélkül. A memóriakezelő egység szándékos elhagyása. A DSP-k gyakran többfeladatos operációs rendszerekben működnek, de nem támogatják a virtuális memóriát és a memóriavédelmet. A virtuális memóriát használó operációs rendszerekben a processzek közötti kontextusváltás több időt igényel, ami növeli a késleltetést (latenciát). Programvégrehajtás Közvetlenül az adatútba integrált lebegőpontos egység Futószalagos architektúra Nagymértékben párhuzamos szorzó-akkumulátor egységek (MAC egységek) Hardvervezérelt ciklusok végrehajtása, a ciklusműveletek végrehajtásával járó többletterhelés csökkentésére vagy kiküszöbölésére

Memóriafelépítés A DSP-k gyakran speciális memóriaarchitektúrákat használnak, amelyek lehetővé teszik több adat és/vagy utasítás egyidejű lehívását: Harvard-architektúra Módosított Neumann-architektúra DMA használata Memóriacím-számító egység Adatműveletek Szaturációs aritmetika, amelyben a túlcsordulást okozó műveletek a regiszter által tárolható maximum vagy minimum értékben halmozódnak, a körbefordulás vagy túlcsordulás helyett; pl. a maximum+1 értéke nem fordul át a minimumba, mint több általános célú processzorban, hanem a maximumon marad. Néha különféle sticky bit v. ragadós bit műveleti módok is rendelkezésre állnak. Fixpontos számábrázolás gyakran használatos a számolási műveletek felgyorsítására Egyciklusos műveletek növelik a futószalagos technológia előnyeit

Utasításkészlet Szorzó-akkumuláló műveletek (MAC, összeolvasztott szorzás-összeadás, FMA is), melyeket erőteljesen használnak a különféle mátrixműveletek, mint például a konvolúció a szűrésnél, a skaláris szorzat, vagy akár a polinom-kiértékelés (ld. Horner-módszer) Párhuzamosságot növelő utasítások: SIMD, VLIW, szuperskalár architektúra Különleges utasítások a modulo címzés, a gyűrűpuffer és bit-fordított címzési mód számára az FFT kereszthivatkozásokhoz A digitális jelprocesszorokban gyakran állandó idejű kódolást alkalmaznak a hardver egyszerűsítésére és a kódolás hatékonyságának növelésére. Története A különálló DSP csipek (ld. alább) megjelenése előtt a legtöbb DSP alkalmazás bitszelet-technikával előállított processzorok segítségével volt megvalósítva. Erre a célra előszeretettel alkalmazták az AMD 2901 bitszelet csipjét, a hozzá tartozó komponenscsaláddal együtt. Az AMD referenciaterveket készített az ilyen alkalmazásokhoz, az egyedi kialakítások igényei azonban nagyon gyakran alkalmazásspecifikusak, így eltértek a referencia-kialakításoktól. Ezek a bitszelet-architektúrák néha perifériaként csatlakozó szorzó csipet is tartalmaztak. Ilyen szorzók sorozatát gyártotta többek között a TRW, például a TDC1008 és TDC1010 csipeket, ezek közül némelyikben még akkumulátor is volt, amely szükséges a szorzás-összegzés (MAC) funkció ellátásához.

1976-ban Richard Wiggins a Texas Instruments dallasi kutatási létesítményében Paul Breedlove, Larry Brantingham és Gene Frantz mérnökökkel együtt előterjesztette a Speak & Spell (játék) koncepcióját. Két évvel később, 1978-ban megjelent az első Speak & Spell játék, melynek „szíve” a TMS5100 volt, az első digitális jelfeldolgozó processzor az iparban. Más mérföldköveket is állított, lévén az első csip amely lineáris prediktív kódolást használt a beszédszintézisben.

1978-ban az Intel megjelentette a 2920 „analóg jelprocesszor” csipet. Ez egy lapkára integrált ADC/DAC áramkörrel és egy belső jelprocesszorral rendelkezett, de nem volt benne hardveres szorzó és nem is volt sikeres a piacon. 1979-ben az AMI kiadta az S2811 jelű csipet. Ez egy mikroprocesszorokhoz illeszthető perifériaként megvalósított jelfeldolgozó egység, melyet a gazdagép inicializált. A S2811, az Intel csipjéhez hasonlóan, szintén nem volt túl sikeres.

1980-ban mutatták be az első különálló, teljes kiépítésű DSP-ket – a NEC µPD7720 és AT&T DSP1 csipeket – az 1980-as Nemzetközi Szilárdtest-Áramköri Konferencián (International Solid-State Circuits Conference, ISSCC). Mindkét processzort a PSTN távközlési kutatások inspirálták.

A Texas Instruments (TI) további DSP-ket fejlesztett, így 1983-ban bemutatta a TMS32010-t (mely a TMS320-as család első modellje volt), nagy sikernek bizonyult. Ennek felépítése a Harvard-architektúrát követi, így különálló utasítás- és adatmemóriával rendelkezik. Utasításkészlete az architektúrához illeszkedően különleges, 60 utasításból áll 3 címzési móddal, megtalálhatók benne a betöltő-akkumuláló (load-and-accumulate) és szorzó-összegző utasítások is. Ez a processzor 16 bites számokon képes műveleteket végezni, teljesítményére jellemző, hogy a korai eszközökben egy szorzás-összeadás művelet ideje 390 ns (a processzor ciklusideje 160 és 280 ns között van, a különböző modellekben, ami kb. 3,6–6,25 MHz-es órajelnek felel meg). A Texas Instruments jelenleg piacvezető az általános célú DSP-k terén.

Körülbelül öt évvel később, a DSP-k második generációja kezdett terjedni. Ezek három külön memóriát tartalmaznak két szimultán operandus tárolására, külön hardverrel rendelkeznek a szoros ciklusok végrehajtására, és rendelkeznek megfelelő címzőegységgel, mely képes a cikluscímzéseket hatékonyan kezelni. Közülük egyesek 24 bites regiszter- ill. változómérettel készülnek, és a tipikus modellekben a MAC utasítás végrehajtási ideje mindössze 21 ns (ez több mint 47 millió ilyen művelet lenne egy másodperc alatt). Ebbe a generációba tartozik például az AT&T DSP16A (30 MHz-es 16/36 bites DSP) vagy az 1986-ban megjelent Motorola 56000.

A legnagyobb változás a harmadik generáció processzoraiban az alkalmazásspecifikus egységek és -utasítások megjelenése volt az adatútban, néhány esetben koprocesszorként megvalósítva. Ezek az egységek lehetővé tették specifikus, ám igen összetett matematikai feladatok közvetlen hardveres gyorsítását, mint amilyen a Fourier-transzformáció vagy a mátrixműveletek. Egyes csipek, mint a Motorola MC68356, ezen felül több, párhuzamosan működő processzormagot tartalmaznak. 1995-ből származó további DSP-k pl. a TI TMS320C541 vagy a TMS 320C80.

A negyedik generációt leginkább az utasításkészletben és az utasításkódolás-dekódolásban bevezetett újítások jellemzik. A processzorok SIMD kiterjesztéseket kaptak, megjelenik a VLIW és a szuperskalár architektúra a DSP-kben. Az órajelfrekvencia a szokásos módon növekedett, a MAC művelet 3 ns-os végrehajtása is lehetővé vált (ez 333 milliónál több utasítás végrehajtása lenne egy másodperc alatt).

Modern DSP-k A modern jelprocesszorok nagyobb teljesítményt nyújtanak; ez egyrészt a technológiai és architekturális fejlődésnek köszönhető, mint a kisebb csíkszélességű technológia, gyors hozzáférésű kétszintű gyorsítótárak, (E)DMA áramkörök és a szélesebb sínrendszer. Nem minden DSP biztosítja ugyanazt a sebességet és igen sokfajta jelprocesszor létezik, mindegyikük más és más feladatra alkalmas leginkább (különböző feladatokat képesek ellátni a legnagyobb hatékonysággal); áruk pedig 1,50 és 300 dollár közé esik.