Digitaalinen signaaliprosessori ( eng. digital signal processor , DSP , digitaalinen signaaliprosessori (DSP) - erikoistunut mikroprosessori , joka on suunniteltu käsittelemään digitoituja signaaleja (yleensä reaaliajassa ) [1] .
Signaaliprosessorien arkkitehtuurissa on yleiskäyttöisiin mikroprosessoreihin verrattuna joitain ominaisuuksia, jotka liittyvät haluun nopeuttaa tyypillisten digitaalisten signaalinkäsittelytehtävien suorittamista mahdollisimman paljon, kuten digitaalinen suodatus , Fourier-muunnos , signaalihaku jne. Matemaattisesti nämä tehtävät pelkistetään reaalilukujen monikomponenttivektoreiden elementtikohtaisiin kertokertoelementteihin, joita seuraa tulojen summaus (esimerkiksi digitaalisessa suodatuksessa äärellisen impulssivasteen omaavan suodattimen lähtösignaali on yhtä suuri kuin suodatinkertoimien tulot signaalinäytteiden vektorilla, vastaavat laskelmat suoritetaan haettaessa signaalinäytteiden korrelaatio- ja autokorrelaatiofunktioita). Siksi signaaliprosessorit on optimoitu nopeuteen suorittamaan juuri tällaisia toimintoja. Ja DSP:t on suunnattu ennen kaikkea kertomisen toistuvaan suorittamiseen laskemalla "lennossa" kerrottavien taulukon elementtien osoitteet:
Ensimmäisten DSP:iden rajalliset laitteistoresurssit jättivät merkittävän jäljen niiden arkkitehtuuriin:
Nykyaikaisessa mikroelektroniikassa yleiskäyttöiset prosessorit sisältävät usein laitteistotuen tyypillisille DSP-toiminnoille. Erityisen aikaa vievät DSP-tehtävät ratkaistaan ohjelmoitavan logiikan pohjalta , jolloin tietyn toiminnon suoritus voidaan optimoida mahdollisimman hyvin. Erikoistuneet DSP - prosessorit ovat yhä enemmän vektoreita . Samaan aikaan klassiset DSP:t tarjoavat kehittyneitä ohjesarjoja yleiskäyttöisille prosessoreille ja tasoittavat ohjelmistomallin ominaisuuksia ja sijoittavat ne yleiskäyttöisiksi tuotteiksi, joissa on nopeutetut DSP-toiminnot. Kaikki nämä suuntaukset johtavat klassisen DSP:n käsitteen hämärtymiseen.
Ennen vuotta 1980 useat yritykset tuottivat laitteita, joita voidaan pitää DSP:iden edelläkävijöinä. Joten vuonna 1978 Intel julkaisi "analogisen signaaliprosessorin" 2120. Se sisälsi ADC :n , DAC : n ja digitaalisen dataprosessorin, mutta siinä ei ollut laitteiston kertolaskutoimintoa. Vuonna 1979 AMI julkaisee S2811:n, oheislaitteen, jota ohjaa tietokoneen pääprosessori. Molemmat tuotteet eivät menestyneet markkinoilla.
DSP-laitteiden päähistoria lasketaan yleensä vuosille 1979-1980, jolloin Bell Labs esitteli ensimmäisen Mac 4 -sirun DSP:n, ja myös NEC :n µMPD7720 ja AT&T :n DSP1 esiteltiin IEEE International Solid-State Circuits Conference '80 -tapahtumassa. , joka ei kuitenkaan saanut laajaa levitystä. Käytännön standardi oli hieman myöhemmin julkaistu Texas Instruments TMS32010 -kide , joka ylittää kilpailijoiden tuotteet monissa parametreissä ja onnistuneissa teknisissä ratkaisuissa. Tässä on joitain sen ominaisuuksia:
Puolijohdeteknologian edistymisen vuoksi tänä aikana julkaistiin tuotteita, joissa oli parempia ominaisuuksia verrattuna ensimmäiseen sukupolveen. Tyypillisiä eroja ovat:
Paljon myöhemmin julkaistiin myös laitteita, jotka kuuluivat muodollisesti toiseen sukupolveen, mutta seuraavilla parannuksilla:
Kolmannen sukupolven DSP liittyy yleensä liukulukuaritmetiikkaa käyttävien tuotteiden tuotannon aloittamiseen. Ensimmäisten julkaistujen näytteiden ominaispiirteet:
Neljännelle DSP-sukupolvelle on ominaista käskyjoukkojen merkittävä laajeneminen, VLIW- ja superskalaariprosessorien luominen . Kellotaajuudet ovat nousseet huomattavasti. Joten esimerkiksi MAC-käskyn ( Y := X + A × B ) suoritusaika lyhennettiin 3 ns:iin.
Parhaat nykyaikaiset DSP:t voidaan luonnehtia seuraavilla parametreilla:
Usein käytetään myös DSP:n integroituja ominaisuuksia, esimerkiksi "teho / virta / nopeus" -osoitinta, esimerkiksi ma / MIPS (milliampeeria 1 miljoonaa käskyä sekunnissa), mikä mahdollistaa todellisen virrankulutuksen arvioinnin. riippuen suorittimen tietyllä hetkellä ratkaiseman tehtävän monimutkaisuudesta.
DSP:n valinta määräytyy täysin kehitettävän järjestelmän tarkoituksen mukaan. Esimerkiksi halvat prosessorit ja alhainen virrankulutus ovat tärkeitä massamobiililaitteille, kun taas järjestelmän kehittämiskustannukset jäävät taustalle. Toisaalta mittauslaitteiden, audio- ja videotietojen käsittelyjärjestelmien kannalta tärkeitä ovat prosessorien tehokkuus, edistyneiden työkalujen saatavuus, monikäsittely jne..
Kuten aiemmin todettiin, yksittäiset ominaisuudet, kuten kellotaajuus, MIPS, MOPS, MFLOPS, mahdollistavat DSP:n suorituskyvyn arvioinnin melko moniselitteisesti. Siksi eri DSP:iden ominaisuuksien mittaamisen ja vertailun ongelman ratkaisemiseksi käytetään erityisiä testisarjoja, jotka jäljittelevät joitain yleisiä digitaalisia signaalinkäsittelytehtäviä. Jokainen testi koostuu useista pienistä ohjelmista, jotka on kirjoitettu assemblerillä ja optimoitu tietylle arkkitehtuurille. Nämä testit voivat sisältää seuraavat:
Tämän päivän arvovaltaisin testipaketti on BTDImark2000 -testi ( BDTI DSP Kernel Benchmarks™ (BDTImark2000™) Certified Results ), joka sisältää näiden algoritmien lisäksi myös arvion algoritmin käyttämästä muistista, järjestelmän kehitysajasta ja muista parametrit.
Digitaaliset signaaliprosessorit rakennetaan ns. "Harvard-arkkitehtuuri", jonka erottuva piirre on, että ohjelmat ja tiedot tallennetaan eri muistilaitteisiin - ohjelmamuistiin ja datamuistiin. Toisin kuin von Neumannin arkkitehtuuri , jossa prosessori tarvitsee vähintään kolme väyläjaksoa käskyn ja kahden operandin hakemiseen, DSP voi tehdä samanaikaisia pääsyjä sekä käskymuistiin että datamuistiin, ja yllä oleva käsky voidaan vastaanottaa kahdessa väyläjaksossa. Todellisuudessa komentojärjestelmän ja muiden toimenpiteiden harkitun ansiosta tämä aika voidaan lyhentää yhteen sykliin. Todellisissa laitteissa käskymuisti voi tallentaa ohjelmien lisäksi myös dataa. Tässä tapauksessa DSP:n sanotaan rakennetun muunnetun Harvardin arkkitehtuurin mukaan.
Käskymuisti ja datamuisti sijaitsevat yleensä DSP-sirulla. Koska tämän muistin tilavuus on suhteellisen pieni, on tarpeen käyttää ulkoisia (suorittimen siruun verrattuna) tallennuslaitteita. Tällaisissa laitteissa ei käytetä erillisiä komento- ja dataväyliä, koska se vaatisi ulkoisten kidenastojen määrän merkittävää lisäystä, mikä on kallista ja epäkäytännöllistä. Siksi DSP:n vuorovaikutus ulkoisten tallennuslaitteiden kanssa tapahtuu yhden väyläjoukon kautta ilman, että se on jaettu komentoihin ja tietoihin. On myös syytä huomata, että ulkoisen muistin käyttö vie aina paljon enemmän aikaa kuin sisäinen muisti, joten suoritusajan kannalta kriittisissä sovelluksissa tällaiset pääsyt on minimoitava.
Liukuhihna on laskennallinen säie, joka suorittaa tietyn mikrooperaation kussakin vaiheessa , joten liukuhihnalla on kulloinkin useita komentoja eri suoritusvaiheissa. Tämä parantaa suorituskykyä.
Useiden putkien läsnäolo toteuttaa superskalaariarkkitehtuurin.
Käsittelemällä komentoja rinnakkain eri liukuputkissa maksimaalinen vaikutus saavutetaan samantyyppisillä käskyillä, jotka eivät ole riippuvaisia toisistaan. Jos ohjelma sisältää erityyppisiä komentoja, niin odotusjaksot otetaan käyttöön liukuhihnassa.
Kuljettimien lastauksen optimoimiseksi tarvitaan seuraavaa:
Tämän seurauksena komentoja ei suoriteta siinä järjestyksessä, jossa ohjelmoija on ne kirjoittanut.
Laitteistokertojaa käytetään lyhentämään yhden DSP:n pääoperaation - kertolaskutoiminnon - suoritusaikaa. Yleiskäyttöisissä prosessoreissa tämä toiminto toteutetaan useissa siirto- ja summaussykleissä ja vie paljon aikaa, ja DSP:ssä erikoistuneen kertoimen ansiosta yhdessä käskyjaksossa.
Toiminnallisesti kertoimet jaetaan kahteen tyyppiin:
Vaihteisto on sekä laite, joka suorittaa tiedonsiirtooperaation, että rekisteri, joka tallentaa siirron tuloksen [2] .
Vaihteistot jaetaan toimintojensa mukaan:
Molemmissa tapauksissa siirron tuloksen tallentavan rekisterin rakenne on sama kuin akun rakenne .
Preshifter toiminnotALU on prosessoriyksikkö, joka käskydekooderin ohjauksessa suorittaa datalle aritmeettisia ja loogisia muunnoksia, joita tässä tapauksessa kutsutaan operandeiksi. Operandien bittileveyttä kutsutaan yleensä konesanan kooksi.
Akku on rekisteri, joka on suunniteltu tallentamaan toimintojen tulokset. Monen DSP:n arkkitehtuurissa on kaksi akkua, mikä mahdollistaa välitulosten tallentamista vaativien toimintojen suorittamisen nopeuttamisen. Teknisesti akku voi koostua useista rekistereistä [2] :
EXT-rekisterin läsnäolon avulla voit lisätä välitulosten laskennan tarkkuutta sekä lisätä arvojen tallennusaluetta, jotka eivät johda ylivuotoon. Kun akun arvo on tallennettu muistisoluun tai tavalliseen rekisteriin, sen arvo pyöristetään kyseisen solun tai rekisterin vakioleveyteen. Toisaalta EXT-rekisterin sisältö voidaan tarvittaessa tallentaa erikseen.
Prosessori tukee suoraa osoitusta, inkrementtiä edeltävää ja jälkeen lisättyä epäsuoraa osoitusta sekä DSP-spesifisiä syklisiä osoitteita ja osoitebittien käänteisosoitteita.
On syytä huomata, että alla annettu luokitus [2] on melko ehdollinen, koska teknisten ratkaisujen moninaisuus ei useinkaan salli kutakin tiettyä laitetta yksiselitteisesti liittää johonkin ilmoitetuista tyypeistä. Siksi seuraavaa tulisi käyttää mieluummin materiaalina DSP-arkkitehtuurin ominaisuuksien ymmärtämiseen kuin tuotteiden todelliseen luokitteluun.
On kätevää tarkastella DSP-arkkitehtuurin ominaisuuksia tietyn digitaalisen tietojenkäsittelyalgoritmin, esimerkiksi FIR-suodattimen , esimerkissä, jonka lähtösignaali voidaan kirjoittaa seuraavasti:
, missä
Kuten voit helposti nähdä, tuloksen laskeminen on klassinen esimerkki kertolaskuoperaation - MAC (Y := X + A × B) käyttämisestä .
Kuvassa on kaksi vaihtoehtoa MAC-käskyn suorittamiseksi tavallisella DSP:llä. Ensimmäisessä versiossa molemmat operandit on tallennettu tietomuistiin, joten niiden hakeminen kestää kaksi jaksoa, eli n lisäyksen suoritusaika on 2n . Toisessa tapauksessa yksi operandeista on tallennettu ohjelmamuistiin, joten käsky suoritetaan yhdessä jaksossa ja silmukan kokonaissuoritusaika on yhtä suuri kuin n jaksoa (on selvennettävä, että todellisuudessa suoritettaessa yhden jakson aikana MAC on suoritettava erityisen silmukkakäskyn sisällä, jotta itse käskykoodia ei tarvitse hakea uudelleen, mikä vaatii ylimääräisen kellojakson). Tästä voidaan nähdä, että algoritmin tehokas toteutus vaatii ohjelmamuistin käyttöä tietojen tallentamiseen.
Yksi vaihtoehdoista, jonka avulla voit luopua ohjelmamuistin käytöstä tietojen tallentamiseen, on ns. "kaksiporttinen muisti", eli muisti, jossa on kaksi sarjaa tuloväyliä - kaksi osoite- ja dataväylää. Tämä arkkitehtuuri mahdollistaa samanaikaisen pääsyn kahteen osoitteeseen (niiden on kuitenkin oltava eri osoitettavissa lohkoissa). Tätä ratkaisua käytetään Motorolan (DSP56000) ja Lucentin (DSP1600) DSP:issä.
Tällä arkkitehtuurilla ainoa tapa parantaa suorituskykyä on lisätä kellotaajuutta.
"Enhanced Standard DSP:t" käyttävät seuraavia rinnakkaisuuden parannustekniikoita parantaakseen järjestelmän suorituskykyä tavallisiin DSP:ihin verrattuna:
Monet näistä menetelmistä ovat olleet käytössä ensimmäisistä prosessoreista lähtien, joten usein on mahdotonta luokitella niitä yksiselitteisesti "standardiksi" tai "parannetuiksi".
Kuvassa on esimerkki kahden rinnakkaisen MAC-komennon laskennan toteutuksesta. Tätä varten DSP sisältää kaksi MAC-moduulia ja kaksi akkua. MAC-lohkot vastaanottavat tietoja kolmelta väylältä samanaikaisesti, ja yksi arvoista on niille yhteinen. Näin ollen kaksi komentoa suoritetaan samanaikaisesti:
Esitetyn ratkaisun erikoisuus on, että monet DSP-algoritmit voidaan pelkistää kahden rinnakkaisen komennon suorittamiseen yhdellä yhteisellä tekijällä, esimerkiksi:
Jotkut prosessorit (Lucent DSP16xxx, ADI ADSP-2116x) käyttävät kahta identtistä ydintä, joista jokaisella on oma muisti, eli yksi käsky suoritetaan samanaikaisesti kahdessa ytimessä, joissa on eri dataa. Tällä kierretään täysin riippumattomien tietojen käyttöä koskeva rajoitus.
Tällaisten prosessorien tyypillisenä haittana voidaan pitää erittäin pätevän kehittäjän tarvetta, koska näiden ominaisuuksien tehokas käyttö edellyttää ohjelmointia kokoonpanokielellä, hyvää arkkitehtuurin ja komentojärjestelmän tuntemusta, eli näitä laitteita pidetään "epäystävällisinä". korkean tason kielille.
Suurin ero VLIW -prosessorien välillä on, että käskykoodit kootaan suuriksi "superkäskyiksi" käännösvaiheessa ja suoritetaan rinnakkain. Tyypillisesti tällaiset prosessorit käyttävät RISC-arkkitehtuuria kiinteällä käskypituudella, jossa jokainen niistä suoritetaan erillisessä käyttöyksikössä. Tällaisten prosessorien ominaispiirteitä ovat:
Yleensä, jos prosessorissa on useita identtisiä moduuleja, niin ohjelmaa luotaessa assemblerissä voidaan määrittää vain tarvittavan käyttömoduulin tyyppi ja kääntäjä määrittää tietyn laitteen. Toisaalta tämä yksinkertaistaa tällaisten laitteiden ohjelmointia ja toisaalta mahdollistaa niiden resurssien käytön varsin tehokkaasti.
Superskalaariprosessoreille on myös tunnusomaista suuri joukko rinnakkaisia toimintayksiköitä ja kyky suorittaa useita käskyjä samanaikaisesti. VLIW:hen verrattuna niillä on kuitenkin kaksi keskeistä ominaisuutta:
Kuvattua lähestymistapaa käyttämällä voit kiertää seuraavat VLIW:n haitat:
Näiden ongelmien ratkaisemisen hinta on merkittävä komplikaatio prosessoripiirissä, jossa käskyjen suorittamisen ajoitusmoduuli ilmestyy.
Superskalaariprosessorit suunnittelevat käskyjen suorittamisen paitsi käyttölohkojen työmäärää koskevien tietojen perusteella myös datan välisten riippuvuuksien analyysin perusteella. Esimerkiksi käskyä tallentaa aritmeettisen operaation tulos ei voida suorittaa ennen itse laskentaoperaatiota, vaikka muistimoduuli olisi tällä hetkellä vapaana. Tämä ominaisuus johtaa muun muassa siihen, että samat käskyt voidaan suorittaa eri tavalla ohjelman eri paikoissa, mikä tekee mahdottomaksi arvioida suorituskykyä tarkasti. Tämä on erityisen tärkeää reaaliajassa toimiville järjestelmille, koska huonoin tulosluokitus johtaa siihen, että prosessoriresurssit jäävät käyttämättä. Täten näissä järjestelmissä superskalaari-DSP:iden suorituskyvyn tarkan arvioinnin ongelma jää avoimeksi.
Hybridi-DSP:t ymmärretään yleensä erikoislaitteiksi, joissa yhdistyvät mikro -ohjaimen ja digitaalisen signaaliprosessorin toiminnot. Tyypillisesti tällaiset tuotteet on suunniteltu suorittamaan yksi toiminto - esimerkiksi ohjata sähkömoottoreita tai muita esineitä reaaliajassa. Toinen laaja sovellusalue on äskettäin tullut matkapuhelintekniikka, jossa aiemmin käytettiin kahta prosessoria - yksi tavanomainen laitteen toimintojen ohjaamiseen (näyttö, näppäimistö) ja toinen äänisignaalien käsittelyyn (koodaus jne.).
Yleisesti ottaen DSP voidaan jakaa kahteen ryhmään:
"Ongelman suuntaus" ei yleensä tarkoita lisäkomentoja, vaan joukkoon sisäisiä erikoistuneita oheislaitteita. Esimerkiksi sähkömoottoreiden ohjaamiseen suunnitellut DSP:t voivat sisältää sirulla olevia PWM -signaaligeneraattoreita , teollisia LAN-ohjaimia jne. Puhesignaalien käsittelyyn käytetyt prosessorit sisältävät usein bitinkäsittelyyksiköitä (BMU) ja virheenkorjausapprosessoreja. Digitaaliset valokuva- ja videokamerat käyttävät DSP:itä, joissa on MPEG1, MPEG4, JPG, MP3, AAC jne. koodaus/dekoodausmoduulit.
DSP-ohjelmointiin käytetään yleensä yhtä kahdesta kielestä - assembly ja C. DSP-kokoonpanolaitteiden pääominaisuudet ovat samat kuin perinteisillä mikroprosessorikielillä , ja niitä voidaan yleisesti kuvata seuraavasti:
Toisaalta keski- ja korkean tason kieliä, erityisesti C:tä, käytettäessä ohjelmien luomista voidaan yksinkertaistaa ja nopeuttaa merkittävästi, mutta järjestelmäresursseja käytetään vähemmän tehokkaasti kuin kokonaan assemblerillä kirjoitettu ohjelma.
Todellisuudessa käytetään yleensä lähestymistapaa, jossa yhdistyvät sekä korkean tason kielten edut että kokoonpanoohjelmien tehokkuus. Tämä ilmenee siinä, että standardikirjastot luodaan yleensä assemblerissä, samoin kuin koodin kriittiset osat suoritusajan ja muistin koon suhteen. Samalla voidaan luoda apumoduuleja korkeatasoisella kielellä, mikä nopeuttaa ja yksinkertaistaa ohjelmistojärjestelmän kehittämistä kokonaisuutena.
DSP-kokoonpanolaitteiden mielenkiintoisia ominaisuuksia ovat seuraavat:
Yleensä DSP:t valmistetaan perheissä, ja perheiden sisällä olevilla tuotteilla on samanlaiset kokoonpanokielet tai jopa yhteensopivuus konekooditasolla. Myös perheen sisällä käytetään yleensä samoja aliohjelmien kirjastoja. Perinteisten mikroprosessorien tapaan myös vanhemmat DSP-mallit voivat usein suorittaa alempien mallien konekoodia tai niiden kokoaja sisältää kaikki alempien mallien käskyt oman käskysarjansa osana.
Yleensä DSP:lle kirjoitettujen ohjelmien virheenkorjaus tehdään erikoistyökaluilla, mukaan lukien ohjelmistosimulaattorit ja emulaattorit . Ne sisältävät usein myös profilointityökaluja (koodilohkojen suoritusnopeuden mittaaminen).
prosessoritekniikat | Digitaaliset|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkkitehtuuri | |||||||||
Ohjesarjan arkkitehtuuri | |||||||||
koneen sana |
| ||||||||
Rinnakkaisuus |
| ||||||||
Toteutukset | |||||||||
Komponentit | |||||||||
Virranhallinta |