Digitaalinen signaaliprosessori (engl. digital signal processor, DSP) on erityisesti digitaalista signaalinkäsittelyä varten rakennettu suoritin. Se suorittaa digitaalisen signaalinkäsittelyn tehtäviä nopeasti ja kuluttaen vähemmän virtaa kuin samannopeuksinen yleissuoritin, mutta suoriutuu epäsäännöllisemmän ohjelmakoodin ajamisesta huonosti ja on ohjelmoitavuudeltaan rajoittuneempi eikä siten pysty esimerkiksi ajamaan nykyaikaisia käyttöjärjestelmiä.
DSP voi hoitaa esimerkiksi Ethernet-liikenteen prosessointia verkkokortin tai reitittimen ohjelmoitavana ytimenä, mihin yleissuoritin olisi aivan liian hidas.lähde? Eräät DSP:t kuten Blackfin-arkkitehtuuri yhdistävät kiinteän desimaalin laskentaytimeen mikrokontrollerin, jolloin se voi suorittaa käyttöjärjestelmiä kuten uClinux tai Nucleus RTOS.[1][2]
Fairchild Semiconductorin 9334 ja AMD:n 2505 vuonna 1970 olivat ensimmäisten mikropiirien joukossa, jotka oli suunnattu nopeuttamaan matemaattisesti intensiivisiä signaalinkäsittelyalgoritmeja.[3]
Joitakin apusuorittimia julkaistiin yleiskäyttöisien suorittimien rinnalle kuten AMI S2811 (1978) Motorola 6800:lle.[3] Intel julkaisi 2920:n vuonna 1979.[3]
Vuonna 1979 Bell Labs esitteli ensimmäisen yhdelle mikropiirille rakennetun digitaalisen signaaliprosessorin (AT&T DSP1).[3][4] Vuonna 1980 NEC julkaisi µPD7720:n, joka oli ensimmäisiä kaupallisesti menestyksekkäitä.[3]
Texas Instrumentsin (TI) TMS32010 julkistettiin vuonna 1983.[3] TMS32010 oli nopein siihen mennessä ja pystyi suorittamaan käskyjä sekä piirillä olevasta ROM-muistista, että piirin ulkopuolisesta RAM-muistista, joka teki ohjelmakehityksestä joustavaa.[5] 32010:ssa oli 32-bittinen ALU ja 5 MIPS:n suorituskyky.[6]
Motorola aloitti 1980-luvun puolivälissä DSP-kehityksen ja kysyi muun muassa audiolaitteiden valmistaja Peaveyltä mitä nämä haluaisivat.[7] Motorola 56000 oli 24-bittinen prosessori, jossa oli noin 150 000 transistoria.[7]
Nykyaikana DSP on usein sisällytetty samalle piirille muun logiikan kanssa, esimerkiksi Creativen SB Audigy -äänikorttien käyttämällä EMU10k2-äänipiirillä on signaaliprosessori äänen käsittelyä varten muun logiikan ohella.
DSP:n käskykanta ei tyypillisesti noudata kaunista oppikirjaesimerkkiä mistään suunnittelufilosofiasta, vaan käskykannassa on käskyjä ja ominaisuuksia sen mukaan, mikä juuri sillä hetkellä auttaa saamaan prosessorista parhaan tehon tai teho-suorituskykysuhteen. Monet uudet DSP:t ovat lähimpänä VLIW-suunnittelufilosofiaalähde?, ja toisaalta useimpiin yleiskäyttösuorittimiin on viime vuosina lisätty paljon DSP-käskyjä.
DSP:n suorituskyvyssä on keskitytty nimenomaan nopeaan kerto- ja yhteenlaskuun sekä näiden yhdistelmään "multiply-accumulate".[8] Useilta signaaliprosessoreilta löytyy erillinen akkumulaattorirekisteri, jossa olevaan arvoon kertolaskun tulokset saadaan suoraan lisättyä ilman erillistä yhteenlaskukäskyä.
DSP:llä ei myöskään aina ole välimuistia, koska käsiteltävä datamäärä on usein sen verran suuri, ettei se mahtuisi pieneen välimuistiin, mutta toisaalta myös tarpeeksi pieni ja ennalta tiedetty, että koko muistista voidaan tehdä niin nopea, että välimuistia ei tarvita. Lisäksi välimuisti aiheuttaisi epädeterminismiä suorittimen suorituskykyyn, mikä olisi huono asia reaaliaikajärjestelmissä, joissa signaaliprosessoreita usein käytetään.
Lähinnä samoista syistä DSP:t eivät myöskään tue virtuaalimuistia.
DSP:ltä löytyy myös usein useampi rinnakkainen kerto- ja yhteenlaskuyksikkö, sekä mahdollisesti myös useampia väyliä muistiin, jotta dataa saadaan ladattua käsiteltäväksi tarpeeksi nopeasti. Liukulukuyksikköä ei joka mallista löydy.