Digitális jelfeldolgozó ( eng. digital signal processor , DSP , digital signal processor (DSP)) - egy speciális mikroprocesszor , amelyet digitalizált jelek feldolgozására terveztek (általában valós időben ) [1] .
A jelfeldolgozók architektúrája, az általános célú mikroprocesszorokhoz képest, rendelkezik néhány jellemzővel, amelyek a tipikus digitális jelfeldolgozási feladatok végrehajtásának lehetőség szerinti felgyorsítására irányulnak, mint például a digitális szűrés , Fourier-transzformáció , jelkeresés stb. Ezeket a feladatokat matematikailag redukáljuk valós számok többkomponensű vektorainak elemenkénti szorzóelemeire, majd a szorzatok összegzésére (például digitális szűrésnél a véges impulzusválaszú szűrő kimeneti jele megegyezik a a szűrési együtthatók szorzatai a jelminták vektorával, hasonló számításokat végzünk a jelminták korrelációs és autokorrelációs függvényeinek maximumainak keresésekor). Ezért a jelfeldolgozókat a sebességre optimalizálták, hogy csak ilyen műveleteket hajtsanak végre. A DSP-k pedig mindenekelőtt a szorzás ismételt végrehajtására irányulnak a szorzandó tömbelemek címeinek "menet közbeni" kiszámításával:
Az első DSP-k korlátozott hardver erőforrásai jelentős nyomot hagytak az architektúrán:
A modern mikroelektronikában az általános célú processzorok gyakran hardveres támogatást tartalmaznak a tipikus DSP műveletekhez. A különösen időigényes DSP feladatokat programozható logika alapján oldják meg , ahol egy adott művelet végrehajtásának maximális optimalizálása érhető el. A speciális DSP processzorokat egyre inkább vektorossá teszik . Ugyanakkor a klasszikus DSP-k fejlett utasításkészleteket biztosítanak az általános célú processzorokhoz, és kisimítják a szoftvermodell jellemzőit, általános célú termékként pozicionálva őket gyorsított DSP-funkciókkal. Mindezek a tendenciák a DSP klasszikus fogalmának összemosásához vezetnek.
1980 előtt több cég gyártott olyan eszközöket, amelyek a DSP-k előfutárainak tekinthetők. Így 1978-ban az Intel kiadta az "analóg jelfeldolgozó processzort" 2120. Tartalmazott egy ADC -t , egy DAC - t és egy digitális adatfeldolgozót, de nem volt hardveres szorzási funkció. 1979-ben az AMI kiadja az S2811-et, egy perifériás eszközt, amelyet a számítógép fő processzora vezérel. Mindkét termék nem volt sikeres a piacon.
A DSP-k történetét általában 1979-től 1980-ig számolják, amikor is a Bell Labs bemutatta az első Mac 4 egylapkás DSP-t, valamint a NEC µMPD7720 és az AT&T DSP1 - ét is bemutatták az IEEE International Solid-State Circuits Conference '80-on . , amely azonban nem kapott széles körű terjesztést. A de facto szabvány a kicsit később kiadott Texas Instruments TMS32010 kristály volt , amely számos paraméterben és sikeres műszaki megoldásban felülmúlja a versenytársak termékeit. Íme néhány jellemzője:
A félvezető technológia ebben az időszakban elért fejlődése miatt olyan termékeket adtak ki, amelyek az első generációhoz képest továbbfejlesztett funkciókkal rendelkeztek. A jellegzetes különbségek a következők:
Jóval később megjelentek az eszközök is, amelyek formálisan a második generációhoz tartoztak, de a következő fejlesztésekkel:
A DSP-k harmadik generációja általában a lebegőpontos aritmetikát megvalósító termékek gyártásának megkezdéséhez kötődik. Az első kiadott minták jellemzői:
A DSP-k negyedik generációját az utasításkészletek jelentős bővítése, a VLIW és a szuperskalár processzorok létrehozása jellemzi. Az órajelek frekvenciája észrevehetően megnőtt. Így például a MAC utasítás ( Y := X + A × B ) végrehajtási ideje 3 ns-ra csökkent.
A legjobb modern DSP-k a következő paraméterekkel jellemezhetők:
A DSP integrált jellemzőit is gyakran használják, például a „teljesítmény / áram / sebesség” jelzőt, például ma / MIPS (milliamp / 1 millió utasítás / másodperc), amely lehetővé teszi a valós energiafogyasztás becslését. a processzor által egy adott pillanatban megoldandó feladat összetettségétől függően .
A DSP kiválasztását teljes mértékben a fejlesztés alatt álló rendszer célja határozza meg. Például a tömeges mobileszközöknél fontosak az olcsó processzorok és az alacsony fogyasztás, miközben a rendszerfejlesztés költsége háttérbe szorul. Másrészt a mérőberendezéseknél, az audio- és videoinformáció-feldolgozó rendszereknél fontos a processzor hatékonysága, a fejlett eszközök elérhetősége, a multiprocessing stb.
Ahogy korábban megjegyeztük, az olyan egyedi jellemzők, mint az órajel frekvencia, MIPS, MOPS, MFLOPS lehetővé teszik a DSP teljesítményének meglehetősen kétértelmű értékelését. Ezért a különböző DSP-k jellemzőinek mérésének és összehasonlításának problémájának megoldására speciális tesztkészleteket alkalmaznak, amelyek utánoznak néhány általános digitális jelfeldolgozási feladatot. Minden teszt több kis programból áll, amelyeket assemblerben írnak és egy adott architektúrára optimalizáltak. Ezek a tesztek a következők végrehajtását foglalhatják magukban:
Napjaink leghitelesebb tesztcsomagja a BTDImark2000 teszt ( BDTI DSP Kernel Benchmarks™ (BDTImark2000™) Certified Results ), amely ezen algoritmusok mellett az algoritmus által használt memória, a rendszerfejlesztési idő és egyéb tényezők felmérését is tartalmazza. paramétereket.
A digitális jelfeldolgozók az ún. "Harvard architektúra", amelynek megkülönböztető jellemzője, hogy a programokat és az adatokat különböző memóriaeszközökben - program- és adatmemóriában - tárolják. Ellentétben a Neumann-architektúrával , ahol a processzornak legalább három buszciklusra van szüksége egy utasítás és két operandus lekéréséhez, a DSP egyidejűleg képes elérni mind az utasítás-, mind az adatmemóriát, és a fenti utasítás két buszciklusban is fogadható. A valóságban a parancsrendszer átgondoltságának és egyéb intézkedéseknek köszönhetően ez az idő egy ciklusra csökkenthető. Valós készülékekben az utasításmemória nem csak programokat, hanem adatokat is képes tárolni. Ebben az esetben a DSP-ről azt mondják, hogy egy módosított Harvard architektúra szerint épül fel.
Az utasítás memória és az adatmemória általában a DSP chipen található. Tekintettel arra, hogy ez a memória viszonylag kis térfogattal rendelkezik, szükségessé válik külső (a processzorchiphez képest) tárolóeszközök használata. Az ilyen eszközökhöz nem használnak külön parancs- és adatbuszt, mivel ez a külső kristálytűk számának jelentős növelését igényelné, ami drága és nem praktikus. Ezért a DSP interakciója külső tárolóeszközökkel egyetlen buszcsoporton keresztül történik anélkül, hogy parancsokra és adatokra lenne szétválasztva. Azt is meg kell jegyezni, hogy a külső memória elérése mindig sokkal több időt vesz igénybe, mint a belső memória, ezért a végrehajtási idő szempontjából kritikus alkalmazásokban az ilyen hozzáféréseket minimálisra kell csökkenteni.
A folyamat egy számítási szál, amely minden szakaszban egy bizonyos mikroműveletet hajt végre , így a folyamat különböző szakaszaiban egy adott időpontban több parancs is található a folyamat különböző szakaszaiban. Ez javítja a teljesítményt.
Több csővezeték jelenléte szuperskaláris architektúrát valósít meg.
A különböző csővezetékeken lévő parancsok párhuzamos feldolgozásával a maximális hatást ugyanazon típusú parancsokon érik el, amelyek nem függnek egymástól. Ha a program különböző típusú parancsokat tartalmaz, akkor várakozási ciklusok kerülnek bevezetésre a folyamatban.
A szállítószalagok rakodásának optimalizálásához a következőkre van szükség:
Ennek eredményeként a parancsok nem abban a sorrendben kerülnek végrehajtásra, ahogyan a programozó leírta őket.
Hardveres szorzót használnak az egyik fő DSP-művelet - a szorzási művelet - végrehajtási idejének csökkentésére. Az általános célú processzorokban ez a művelet több váltási és összeadási ciklusban valósul meg, és sok időt vesz igénybe, a DSP-ben pedig egy speciális szorzónak köszönhetően egy utasítási ciklusban.
Funkcionálisan a szorzók két típusra oszthatók:
A váltó egyrészt adateltolási műveletet végrehajtó eszköz, másrészt az eltolás eredményét tároló regiszter [2] .
Funkcióikat tekintve a váltókarok a következőkre oszthatók:
Az eltolás eredményét tároló regiszter felépítése mindkét esetben megegyezik az akkumulátor struktúrájával .
Előváltó funkciókAz ALU egy olyan processzor egység, amely egy utasításdekódoló vezérlése alatt aritmetikai és logikai transzformációkat hajt végre az adatokon, amelyeket jelen esetben operandusoknak nevezünk. Az operandusok bitszélességét általában a gépszó méretének nevezik.
Az akkumulátor egy olyan regiszter, amely a műveletek eredményeit tárolja. Sok DSP architektúrája két akkumulátorral rendelkezik, ami lehetővé teszi a közbenső eredmények tárolását igénylő műveletek végrehajtásának felgyorsítását. Technikailag egy akkumulátor több regiszterből állhat [2] :
Az EXT regiszter jelenléte lehetővé teszi a közbenső eredmények kiszámításának pontosságának növelését, valamint az olyan értékek tárolási tartományának növelését, amelyek nem vezetnek túlcsorduláshoz. Ha egy memóriacellában vagy reguláris regiszterben tárol egy akkumulátorértéket, akkor az értéke a cella vagy regiszter szabványos szélességére kerekítve lesz. Másrészt, ha szükséges, az EXT regiszter tartalma külön is tárolható.
A processzor támogatja a közvetlen címzést, a növekmény előtti és utáni indirekt címzést, valamint a DSP-specifikus ciklikus címzést és a címbit fordított címzési módokat.
Megjegyzendő, hogy az alábbiakban megadott besorolás [2] meglehetősen feltételes, mivel a műszaki megoldások sokfélesége gyakran nem teszi lehetővé, hogy minden egyes eszközt egyértelműen a megadott típusok valamelyikéhez rendeljünk. Ezért a következőket inkább a DSP architektúra jellemzőinek megértéséhez kell felhasználni, semmint a termékek valódi osztályozására.
A DSP architektúra jellemzőit célszerű egy adott digitális adatfeldolgozási algoritmus, például egy FIR szűrő példáján figyelembe venni, amelynek kimeneti jele a következőképpen írható:
, ahol
Amint könnyen látható, az eredmény kiszámítása a szorzás-felhalmozás művelet klasszikus példája - MAC (Y := X + A × B) .
Az ábra két lehetőséget mutat a MAC utasítások szabványos DSP-n történő végrehajtására. Az első változatnál mindkét operandus adatmemóriában van tárolva, így lehívásukhoz két ciklus szükséges, vagyis n összeadás végrehajtási ideje 2n . A második esetben az egyik operandus a programmemóriában van eltárolva, így az utasítás végrehajtása egy ciklusban történik, és a ciklus teljes végrehajtási ideje n ciklus lesz (tisztázni kell, hogy a valóságban a végrehajtáshoz egy ciklusban a MAC-ot egy speciális hurokutasításon belül kell végrehajtani, hogy elkerüljük magának az utasításkódnak az újratöltését, ami extra órajelet igényel). Itt látható, hogy az algoritmus hatékony megvalósításához programmemória használata szükséges az adatok tárolására.
Az egyik lehetőség, amely lehetővé teszi a programmemória adattárolási használatának elhagyását, az ún. "kétportos memória", azaz olyan memória, amely két bemeneti buszt tartalmaz – két cím- és adatbusz. Ez az architektúra lehetővé teszi két cím egyidejű elérését (azonban ezeknek különböző címezhető blokkokban kell lenniük). Ezt a megoldást a Motorola (DSP56000) és a Lucent (DSP1600) DSP-iben használják.
Ezzel az architektúrával a teljesítmény javításának egyetlen módja az órajel frekvencia növelése.
A „továbbfejlesztett szabványos DSP-k” a következő párhuzamosság-javító technikákat alkalmazzák a rendszer teljesítményének javítására a szabványos DSP-khez képest:
E módszerek közül sok a legelső processzorok megjelenése óta létezik, ezért gyakran lehetetlen egyértelműen „standard” vagy „továbbfejlesztett” kategóriába sorolni őket.
Az ábra két párhuzamos MAC parancs számításának megvalósítására mutat példát. Ehhez a DSP két MAC modult és két akkumulátort tartalmaz. A MAC blokkok egyszerre három buszon kapnak adatokat, és az egyik érték közös náluk. Így két parancs fut egyszerre:
A bemutatott megoldás sajátossága, hogy sok DSP algoritmus két párhuzamos parancs végrehajtására redukálható egy közös tényezővel, pl.
Egyes processzorok (Lucent DSP16xxx, ADI ADSP-2116x) két egyforma magot használnak, mindegyik saját memóriával, vagyis egy utasítás egyszerre fut le két különböző adatú magban. Ez megkerüli a teljesen független adatok használatára vonatkozó korlátozást.
Az ilyen processzorok jellegzetes hátrányának tekinthető, hogy magasan képzett fejlesztőre van szükség, hiszen ezeknek a funkcióknak a hatékony használatához assembly nyelvű programozásra, az architektúra és a parancsrendszer jó ismeretére van szükség, vagyis ezek az eszközök „barátságtalannak” minősülnek. magas szintű nyelvekre.
A fő különbség a VLIW processzorok között az, hogy az utasításkódokat a fordítási szakaszban nagy „szuperutasításokba” állítják össze, és párhuzamosan hajtják végre. Az ilyen processzorok jellemzően rögzített utasításhosszúságú RISC architektúrát használnak, ahol mindegyik külön működési egységben kerül végrehajtásra. Az ilyen processzorok jellemzői a következők:
Általában, ha a processzornak több egyforma modulja van, akkor az assemblerben egy program létrehozásakor csak a szükséges operációs modul típusát lehet megadni, és az adott eszközt a fordító rendeli hozzá. Ez egyrészt leegyszerűsíti az ilyen eszközök programozását, másrészt lehetővé teszi az erőforrások meglehetősen hatékony felhasználását.
A szuperskaláris processzorokat a párhuzamos működési egységek nagy halmaza és több utasítás egyidejű végrehajtásának képessége is jellemzi. A VLIW-hez képest azonban két kiemelkedő tulajdonságuk van:
A leírt megközelítéssel a VLIW következő hátrányait kerülheti meg:
Ezen problémák megoldásának ára jelentős bonyodalom a processzoráramkörben, amelyben megjelenik az utasítás végrehajtását ütemező modul.
A szuperskaláris processzorok az utasítások végrehajtását nem csak a működési blokkok leterheltségére vonatkozó információk, hanem az adatok közötti függőségek elemzése alapján is megtervezik. Például egy aritmetikai művelet eredményének mentésére vonatkozó utasítás nem hajtható végre maga a számítási művelet előtt, még akkor sem, ha a memóriaelérési modul jelenleg szabad. Ez a tulajdonság többek között ahhoz vezet, hogy ugyanaz az utasításkészlet a program különböző helyein eltérően hajtható végre, ami lehetetlenné teszi a teljesítmény pontos értékelését. Ez különösen fontos a valós időben futó rendszerek esetében, mert a legrosszabb eredmény besorolása azt a tényt eredményezi, hogy a processzor erőforrásai nem lesznek teljesen kihasználva. Így ezekben a rendszerekben a szuperskaláris DSP-k teljesítményének pontos becslésének problémája nyitott marad.
A hibrid DSP-k általában olyan speciális eszközöket jelentenek, amelyek kombinálják a mikrokontroller és a digitális jelfeldolgozó funkcióit. Az ilyen termékeket általában egy funkció végrehajtására tervezték - például az elektromos motorok vagy más tárgyak valós időben történő vezérlésére. Alkalmazásuk másik széles területe a közelmúltban a mobiltelefónia lett, ahol korábban két processzort használtak - az egyik hagyományos az eszköz funkcióinak vezérlésére (kijelző, billentyűzet), a másik a hangjelek feldolgozására (kódolás stb.).
Általában a DSP célja szerint két csoportra osztható:
A "problémaorientáció" általában nem további parancsokra, hanem beépített speciális perifériákra vonatkozik. Például az elektromos motorok vezérlésére tervezett DSP-k tartalmazhatnak chipen belüli PWM jelgenerátorokat , ipari LAN-vezérlőket stb. A hangjelek feldolgozására használt processzorok gyakran tartalmaznak bitmanipulációs egységeket (BMU) és hibajavító társprocesszorokat. A digitális fotó- és videokamerák DSP-ket használnak MPEG1, MPEG4, JPG, MP3, AAC stb. kódoló/dekódoló modulokkal.
A DSP programozáshoz általában két nyelv egyikét használják - assembly és C. A DSP assemblerek főbb jellemzői megegyeznek a hagyományos mikroprocesszoros nyelvekkel , és általában a következőképpen írhatók le:
Másrészt a közép- és magas szintű nyelvek, különösen a C használatakor jelentősen leegyszerűsíthető és felgyorsítható a programok létrehozása, de a rendszererőforrások kevésbé hatékonyak, mint egy teljes egészében assemblerben írt program.
A valóságban általában olyan megközelítést alkalmaznak, amely egyesíti a magas szintű nyelvek előnyeit és az összeszerelő programok hatékonyságát. Ez abban nyilvánul meg, hogy a szabványos könyvtárakat általában az assemblerben hozzák létre, valamint a kód kritikus részeit a végrehajtási idő és a memória mérete szempontjából. A segédmodulok ugyanakkor magas szintű nyelven is létrehozhatók, felgyorsítva és leegyszerűsítve a szoftverrendszer egészének fejlesztését.
A DSP összeszerelők érdekes tulajdonságai a következők:
Általában a DSP-ket családokban állítják elő, és a családokon belüli termékek hasonló összeállítási nyelvekkel, vagy akár gépi kódszintű kompatibilitással rendelkeznek. Ezenkívül egy családon belül általában ugyanazokat a szubrutinkönyvtár-készleteket használják. A hagyományos mikroprocesszorokhoz hasonlóan a DSP-k régebbi modelljei gyakran képesek az alacsonyabb modellek gépi kódját végrehajtani, vagy összeszerelőjük az alacsonyabb modellek összes utasítását tartalmazza saját utasításkészletük részhalmazaként.
A DSP-hez írt programok hibakeresése általában speciális eszközökkel történik, beleértve a szoftverszimulátorokat és emulátorokat . Gyakran tartalmaznak profilozó eszközöket is (a kódblokkok végrehajtási sebességének mérése).
processzortechnológiák | Digitális|||||||||
---|---|---|---|---|---|---|---|---|---|
Építészet | |||||||||
Instruction Set Architecture | |||||||||
gépszó | |||||||||
Párhuzamosság |
| ||||||||
Megvalósítások | |||||||||
Alkatrészek | |||||||||
Energiagazdálkodás |