12
Procesorji digitalnih signalov Jakob Bartolj Univerza na Primorskem Fakulteta za matematiko, naravoslovje in informacijske tehnologije Koper, Slovenija [email protected] POVZETEK Procesor digitalnih signalov (angl. Digital Signal Processor, DSP) je specializiran mikroprocesor, ki ima arhitekturo prirejeno potrebam hitrih matematičnih operacij pri digitalnem obdelovanju signalov. Digitalno obdelovanje signalov se namreč izvaja z matematičnimi operacijami, za razliko od na primer obdelovanja besedil, kjer se shranjeni podatki samo preuredijo. To pomeni, da računalniki, ki so prilagojeni za poslovne in ostale splošne aplikacije niso prilagojeni za algoritme pri digitalnem obdelovanju signalov, kot sta to digitalno filtriranje in Fourierjeva analiza. DSP-ji imajo široko uporabnost in jih najdemo na primer v mobilnih telefonih in naprednih inštrumentih v znanosti in inženirstvu. 1.UVOD Digitalno obdelovanje signalov se od ostalih področij v računalništvu razlikuje po tem, da uporablja edinstven tip podatkov, to so signali. V večini primerov izvirajo ti iz realnega sveta kot senzorski podatki, na primer: sezmične vibracije, vizualne podobe, zvočni valovi itd. Digitalno obdelovanje signalov združuje matematične operacije, algoritme in tehnike, ki se uporabljajo za manipulacijo teh signalov, potem ko jih pretvorimo v digitalno obliko. Tovrstno procesiranje je uporabno na različnih področjih, kot so izboljšava vizualnih slik, prepoznavanje in generiranje zvoka, kompresija podatkov pri shranjevanju in prenosu itd. 2. Zgodovinski razvoj Korenine DSP-jev segajo v šestdeseta in sedemdeseta leta preteklega stoletja in so tesno vezane na prihod digitalnih računalnikov. Ti so bili takrat precej dragi, tako da je bilo digitalno obdelovanje signalov na voljo le za nekatere kritične aplikacije. Pionirsko delo je bilo narejeno na štirih ključnih področjih: radar in sonar (povečanje nacionalne varnosti), iskanje nafte (pričakovan velik zaslužek), raziskave vesolja (nenadomestljivi podatki) in medicina (reševanje življenja). Revolucionarni razvoj osebnih računalnikov v osemdesetih in devetdesetih letih je povzročil vzpon DSP-jev in razširil področje njihove uporabe z novimi aplikacijami. Gonilna sila razvoja DSP-jev je postal komercialni trg in ne več potrebe vojske in vlade. DSP se je pojavil v izdelkih namenjenih široki potrošnji kot so mobilni telefoni, CD predvajalniki in elektronska glasovna pošta. Slika 1 prikazuje nekaj teh aplikacij. 2.1 Razvoj z vidika integriranih vezji Pred prihodom samostojnih, v čip integriranih DSP-jev je bila večina aplikacij s področja digitalnega obdelovanja signalov implementirana z uporabo procesorjev z bitnimi rezinami (angl. bit-slice processor). Pogosta izbira je bilo integrirano vezje AMD 2901 s pripadajočo družino dodatnih komponent.

Procesorji digitalnih signalov

  • Upload
    jani666

  • View
    80

  • Download
    9

Embed Size (px)

Citation preview

Page 1: Procesorji digitalnih signalov

Procesorji digitalnih signalovJakob Bartolj

Univerza na PrimorskemFakulteta za matematiko, naravoslovje in informacijske tehnologije

Koper, [email protected]

POVZETEKProcesor digitalnih signalov (angl. Digital Signal Processor, DSP) je specializiran mikroprocesor, ki ima arhitekturo prirejeno potrebam hitrih matematičnih operacij pri digitalnem obdelovanju signalov. Digitalno obdelovanje signalov se namreč izvaja z matematičnimi operacijami, za razliko od na primer obdelovanja besedil, kjer se shranjeni podatki samo preuredijo. To pomeni, da računalniki, ki so prilagojeni za poslovne in ostale splošne aplikacije niso prilagojeni za algoritme pri digitalnem obdelovanju signalov, kot sta to digitalno filtriranje in Fourierjeva analiza. DSP-ji imajo široko uporabnost in jih najdemo na primer v mobilnih telefonih in naprednih inštrumentih v znanosti in inženirstvu.

1.UVOD

Digitalno obdelovanje signalov se od ostalih področij v računalništvu razlikuje po tem, da uporablja edinstven tip podatkov, to so signali. V večini primerov izvirajo ti iz realnega sveta kot senzorski podatki, na primer: sezmične vibracije, vizualne podobe, zvočni valovi itd. Digitalno obdelovanje signalov združuje matematične operacije, algoritme in tehnike, ki se uporabljajo za manipulacijo teh signalov, potem ko jih pretvorimo v digitalno obliko. Tovrstno procesiranje je uporabno na različnih področjih, kot so izboljšava vizualnih slik, prepoznavanje in generiranje zvoka, kompresija podatkov pri shranjevanju in prenosu itd.

2. Zgodovinski razvoj

Korenine DSP-jev segajo v šestdeseta in sedemdeseta leta preteklega stoletja in so tesno vezane na prihod digitalnih računalnikov. Ti so bili takrat precej dragi, tako da je bilo digitalno obdelovanje signalov na voljo le za nekatere kritične aplikacije. Pionirsko delo je bilo narejeno na štirih ključnih področjih: radar in sonar (povečanje nacionalne varnosti), iskanje nafte (pričakovan velik zaslužek), raziskave vesolja (nenadomestljivi podatki) in medicina (reševanje življenja).

Revolucionarni razvoj osebnih računalnikov v osemdesetih in devetdesetih letih je povzročil vzpon DSP-jev in razširil področje njihove uporabe z novimi aplikacijami. Gonilna sila razvoja DSP-jev je postal komercialni trg in ne več potrebe vojske in vlade. DSP se je pojavil v izdelkih namenjenih široki potrošnji kot so mobilni telefoni, CD predvajalniki in elektronska glasovna pošta. Slika 1 prikazuje nekaj teh aplikacij.

2.1 Razvoj z vidika integriranih vezji

Pred prihodom samostojnih, v čip integriranih DSP-jev je bila večina aplikacij s področja digitalnega obdelovanja signalov implementirana z uporabo procesorjev z bitnimi rezinami (angl.

bit-slice processor). Pogosta izbira je bilo integrirano vezje AMD 2901 s pripadajočo družino dodatnih komponent.

Slika 1: DSP je revolucionarno posegel na mnogo področji v znanosti in inženirstvu. Nekatere izmed aplikacij so prikazane na tej sliki.

Slika 2: AMD Am2901 - 4-bit-slice ALU

Arhitekture bitnih rezin so včasih vsebovale periferno množilno integrirano vezje. Primeri teh množilnikov so bile serije iz podjetja TRW, ki so vsebovali TDC1008 in TDC1010 med katerimi so nekateri vsebovali register (akumulator), ki je omogočal potrebno množilno-akumulativno funkcijo.

Leta 1978 je ponudilo podjetje Intel »procesor analognih signalov« 2920 z AD/DA pretvornikom in notranjim

Page 2: Procesorji digitalnih signalov

procesorjem signalov brez strojnega množilnika, ki pa na tržišču ni bil uspešen. Naslednje leto je podjetje AMI ponudilo periferni mikroprocesor S2811, ki ga je moral uporabnik najprej inicializirati. Tudi ta se na tržišču ni obnesel.

Leta 1980 sta se pojavila prva samostojna, kompletna DSP-ja, NEC µPD7720 in AT&T DSP1.

Altamira DX-1 je bil tudi eden izmed zgodnjih DSP-jev, ki je izkoriščal celo številne cevovode z zakasnilnimi vejami in njihovim predvidevanjem.

Prvi DSP podjetja Texas Instruments je bil TMS32010 predstavljen leta 1983. Zasnovan je bil na harvardski arhitekturi tako, da je imel ločen ukazni in podatkovni pomnilnik. Imel je posebni ukazni niz z ukazi kot so naloži in shrani ali zmnoži in shrani. Lahko je deloval na 16-bitnih številih in potreboval 390 ns za operacijo pomnoži in seštej. To podjetje je sedaj vodilni na trgu DSP-jev za splošno uporabo. Drugi uspešni model je bil Motorola 56000.

Pet let kasneje se je začela širiti druga generacija DSP-jev, ki so imeli tri pomnilnike za shranjevanje dveh operandov istočasno. Vključevali so strojno opremo za pospešitev tesnih zank, imeli so tudi naslovno enoto, ki je bila sposobna naslavljanja zank. Nekateri so delovali na 24 bitih, tipični model pa je potreboval okrog 21 ns za operacijo množi in akumuliraj. Člani te generacije so bili na primer AT&T DSP16A in Motorola DSP56001.

Glavna izboljšava tretje generacije je bila uvedba aplikacijsko-specifičnih enot in ukazov v podatkovni poti, včasih tudi kot soprocesorji. Te enote so dovoljevale neposredno pospeševanje strojne opreme zelo specifičnih, vendar kompleksnih, matematičnih problemov kot so Fourierjeva transformacija in matrične operacije. Nekatera integrirana vezja, kot na primer Motorola MC68356, so vključevala celo večjedrne procesorje za vzporedno delovanje. Predstavnika tretje generacije sta še Texas Instruments TMS320C541 in TMS 320C80 iz leta 1995.

Četrta generacija najbolj izstopa po spremembah v naboru ukazov in dekodirnih/kodirnih ukazih. Dodana je bilo SIMD (angl. single instruction, multiple data) razširitev, pojavili sta se VLIW (angl. very long instruction word) in superskalarna arhitektura. Kot vedno, se je povečala frekvenca ure, čas za operacijo množi in akumuliraj se skrajšal pod 3 ns.

3. Razlika med DSP-ji in ostalimi procesorji

V šestdesetih letih prejšnjega stoletja so predvidevali, da bo imela umetna inteligenca revolucionarni vpliv na interakcije med ljudmi, računalniki in ostalimi stroji. Verjelo se je, da bodo na koncu tisočletja roboti čistili hiše, računalniki vozili avtomobile, in da bo mogoče s pomočjo zvočnega vmesnika nadzorovati shranjevanje in spremembe informacij. To se ni zgodilo; te abstraktne naloge so namreč precej bolj zapletene kot je bilo pričakovano in prezahtevne, da bi jih digitalni računalniki lahko izvajali korak za korakom. Kakorkoli, v zadnjih petdesetih letih se je pokazalo, da so računalniki ekstremno zmogljivi na dveh področjih:

Upravljanje s podatki, kot je to obdelovanje besedil in upravljanje s podatkovnimi bazami,

Matematične preračunavanje, ki se uporablja v znanosti, inženirstvu in procesiranju digitalnih signalov.

Vsi mikroprocesorji lahko izvajajo obe nalogi; čeprav je težko (in drago) narediti arhitekturo, ki bi bila optimizirana za obe nalogi hkrati. Obstaja tehnična kompenzacija pri načrtovanju strojne opreme, kot je to velikost ukaznega nabora in strategije ravnanja s prekinitvami.

Še bolj pomembno, vpletena so vprašanja posledic na trgu: cena razvoja in proizvodnje, tekmovalna pozicija, življenjska doba izdelka itd. Ti faktorji so narekovali, da so tradicionalni mikroprocesorji (npr. Pentium) primarno usmerjeni k manipulaciji s podatki. Za razliko so DSP-ji narejeni za izvajanje matematičnih preračunavanj, ki jih potrebujemo pri digitalnem procesiranju signalov.

Slika 3: Digitalni računalniki so uporabni za dve splošni nalogi: manipuliranje s podatki in matematične kalkulacije. Prva je zasnovana na premikanju podatkov in testiranju nesorazmernosti, medtem ko druga uporablja množenje in seštevanje.

Slika 3 prikazuje najbolj pomembne razlike med obema področjema. Podatkovno manipuliranje vključuje shranjevanje in sortiranje informacij. Vzemimo za primer program za obdelovanje besedil. Njegova osnovna naloga je shranjevanje informacij (vnos prek tipkovnice), organiziranje informacij (izreži in prilepi, preveri črkovanje, urejanje strani itd.) in nato shranjevanje informacij (CD, DVD, USB ključ, tiskanje, ...). Te naloge so izpolnjene s premikanjem podatkov iz ene lokacije na drugo in testiranjem neenakosti (A = B, A < B, itd.). Kot primer si poglejmo sortiranje liste besed v abecedno zaporedje. Vsaka beseda je predstavljena z 8 bitnim številom, ASCII vrednostjo prve črke v besedi. Črkovanje vključuje urejanje zaporedja besed dokler se ASCII vrednosti ne povečajo kontinuirano od začetka pa vse do konca seznama. To lahko dosežemo z neprestanim ponavljanjem dveh korakov, dokler sortiranje po abecednem redu ni končano.

Kot drugi primer si poglejmo postopek tiskanja dokumenta. Računalnik neprestano testira vhodno napravo (miško, tipkovnico) kdaj bo prisotna binarna koda, ki nakazuje »natisni dokument«. Ko se ta koda zazna, premakne program podatke iz pomnilnika na tiskalnik. Tu imamo dve enaki osnovni operaciji: premik podatkov in testiranje neenakosti, medtem, ko je uporaba matematike v tovrstni aplikaciji le občasna in ne vpliva pomembno na celotno hitrost izvajanja. Za primerjavo, hitrost izvajanja večine DSP algoritmov je omejena skoraj v celoti s številom množenj in seštevanj.

Slika 4 prikazuje implementacijo digitalnega filtra s končnim impulznim odzivom (FIR iz angl. finite impulse response), ki je najpogostejša tehnika pri digitalni obdelavi signalov. Z uporabo standardne notacije je vhodni signal označen kot x[ ], izhodni pa y[ ]. Naša naloga je, da izračunamo vzorec pri lokaciji n izhodnega signala: y[n]. FIR filter najprej množi ustrezne vzorce iz vhodnega signala s skupino koeficientov a0, a1, a2, a3, … in nato sešteje delne rezultate, kar prikazuje naslednja enačba:

Page 3: Procesorji digitalnih signalov

Povedano drugače, vhodni signal se je ovil okoli jedra filtra (impulzni odziv), ki je sestavljen iz a0, a1, a2, a3, … .

V jedru filtra je, odvisno od aplikacije, lahko samo nekaj ali več tisoč koeficientov. Dokler je pretok podatkov in ocenjevanje neenakosti v tem algoritmu takšno, da ohranja sled posredovanih rezultatov in kontrolira zanke, matematične operacije dominirajo izvršitev.

Slika 4: Digitalni FIR filter v katerem dobimo vsak vzorec v izhodnem signalu y[n] z množenjem vzorcev iz vhodnega signala x[n], x[n-1], x[n-2], ... s koeficienti jedra filtra a0, a1, a2, a3, … in seštevanjem rezultatov.

Kot dodatek za hitro izvajanje matematičnih izračunov mora imeti DSP predviden čas zaključka. Predpostavimo, da želimo s svojim prenosnikom rešiti neko nalogo, na primer pretvoriti besedilno datoteko iz ene oblike v drugo. Tu ni pomembno ali to traja deset milisekund ali deset sekund, enostavno počakamo, da računalnik zaključi, potem mu damo novo nalogo.

Za razliko se večina DSP-jev uporablja v aplikacijah kjer je procesiranje nenehno, kjer začetek in konec nista definirana. Na primer, predstavljajmo si, da inženir razvija DSP sistem za avdio napravo kot je to slušni aparat. Če je digitalni signal sprejet s frekvenco 20 kHz mora biti DSP sposoben to frekvenco obdržati tudi na izhodu. Čeprav obstajajo pomembni razlogi, da ne postane ta frekvenca hitrejša kot jo potrebujemo. Z večanjem hitrosti se zvišuje cena, potrošnja energije, težji postaja razvoj, itd. To pomeni, da moramo pri izbiri prave naprave vedeti kako pomemben je čas izvedbe, kot tudi katere algoritme lahko uporabimo.

4. Arhitektura DSP

Ena izmed največjih težav pri izvajanju algoritmov za digitalno obdelovanje signalov je prenašanje informacij v in iz pomnilnika. To vključuje tako podatke (kot so vzorci iz vhodnega signala in koeficienti filtra), kot tudi programske ukaze (binarne kode, ki gredo v programski sekvenčnik). Vzemimo primer, ko je treba zmnožiti dve števili, ki se nahajata v pomnilniku. Da lahko to izvedemo, moramo prenesti tri binarne vrednosti iz pomnilnika, števili, ki ju množimo in programski ukaz, ki opisujejo kaj narediti. Slika 5a prikazuje kako je ta navidezno enostavna naloga izvedena v tradicionalnih procesorjih. Njihovo arhitekturo pogosto imenujemo tudi von Neumannova arhitektura, po briljantnem matematiku Johnu von Neumannu (1903–1957), ki je na področju matematike v poznem dvajsetem stoletju prišel do mnogo pomembnih odkritij: predlagal je koncept računalnika s shranjenim programom, sodeloval je pri oblikovanju matematike kvantne mehanike in delal pri razvoju atomske bombe.

Slika 5: Mikroprocesorska arhitektura. a) Von Neumannova arhitektura uporablja samostojni pomnilnik za podatke in ukaze; b) harvardska arhitektura uporablja ločena pomnilnika za podatke in ukaze, kar omogoča večje hitrosti; c) super harvardska arhitektura izboljšuje harvardski model z dodajanjem ukaznega predpomnilnika in namenski vhodno/izhodni krmilnik.

Kot je prikazano na sliki 5a, vsebuje von Neumannova arhitektura samostojen pomnilnik in samostojno vodilo za prenos podatkov v in iz centralno procesne enote (CPU iz angl. central processing unit). Množenje dveh števil zahteva vsaj tri urine impulze, po enega za prenos dveh števil in ukaza po vodilu iz pomnilnika do CPU. Časa za prenos rezultata nazaj v pomnilnik ne štejemo, ker predpostavljamo, da ostane v CPU za dodatne manipulacije, kot je to vsota rezultata v FIR filtru. Von Neumannova arhitektura je primerna, če želimo izvesti vse zahtevane naloge zaporedno.

Pravzaprav večina računalnikov danes uporablja von Neumannovo arhitekturo. Druge arhitekture potrebujemo le takrat, ko je zahtevano zelo hitro procesiranje in smo pripravljeni plačati ceno povečane kompleksnosti.

Page 4: Procesorji digitalnih signalov

To nas pripelje do harvardske arhitekture, ki je prikazana na sliki 5b. Tako se imenuje po Univerzi Harvard, kjer so jo v štiridesetih letih prejšnjega stoletja pod vodstvom Howarda Aikena (1900–1973) tudi predlagali. Kot vidimo je Aiken vztrajal na ločenem pomnilniku, prvi za podatke in drugi za programske ukaze, vsak pa je imel lastno vodilo, podatkovno in ukazno. Ker delujeta vodili samostojno lahko hkrati izvajamo programske ukaze in podatke, kar izboljša hitrost v primerjavi z modelom enojnega vodila. Večina današnjih DSP-jev uporablja arhitekturo z dvojnim vodilom.

Slika 5c predstavlja naslednjo stopnjo izboljšav, arhitekturo SHARC (angl. Super Harvard ARChitecture). Ta izraz so vpeljali pri podjetju Analog Devices za opis notranjih operacij pri njihovi ADSP-2106x in ADSP-211xx družini DSP-jev. Ideja je bila nadgraditi harvardsko arhitekturo tako, da bi izboljšali pretok podatkov. SHARC DSP-ji so optimizirani na več načinov, pri čemer sta najpomembnejša dva, ki smo ju prikazujemo na sliki 5c, in sicer ukazni predpomnilnik in vhodno/izhodni krmilnik. Najprej poglejmo kako ukazni predpomnilnik izboljša zmogljivost harvardske arhitekture. Problem osnovne harvardske arhitekture je, da je vodilo podatkovnega pomnilnika bolj zasedeno kot vodilo programskega pomnilnika. Ko množimo dve števili, je potrebno prenesti preko podatkovnega vodila dve binarni vrednosti (števili), medtem ko se preko ukaznega vodila prenaša le ena binarna vrednost (programski ukaz). Da bi izboljšali to situacijo, začnemo s ponovnim določanjem dela »podatkov« v programski pomnilnik. Na primer, koeficiente filtra lahko postavimo v programski pomnilnik, medtem ko zadržimo vhodni signal v podatkovnem pomnilniku. Te prestavljene podatke imenujemo sekundarni podatki (angl. secondary data). Na prvi pogled se ne vidi, da bi s tem izboljšali situacijo; sedaj moramo namreč prenesti eno vrednost preko podatkovnega vodila (vzorec vhodnega signala) in dve vrednosti preko ukaznega vodila (programske ukaze in koeficiente). Pravzaprav, če izvajamo naključne ukaze bi bila ta situacija boljša, čeprav algoritmi za digitalno obdelavo signalov v splošnem porabijo večino svojega časa v zankah, kot so to ukazi 6–12 iz tabele 1.

Tabela 1: Koraki FIR filtra.

To pomeni, da bo isti nabor programskih ukazov podan iz programskega pomnilnika v CPU. Super harvardska arhitektura izboljšuje to situacijo z vključevanjem ukaznega predpomnilnika v CPU. To je majhen pomnilnik, ki vsebuje okrog 32 najpogostejših programskih ukazov. Ko gre program prvič skozi zanko se morajo programski ukazi poslati po ukaznem vodilu. Rezultat tega je počasnejše delovanje zaradi konflikta s koeficienti, ki morajo po isti poti. Čeprav pri dodatni izvršitvi zanke dostavljamo programske ukaze iz ukaznega predpomnilnika. To pomeni, da se vse informacije za CPU prenesejo v enem ciklu; vzorec iz vhodnega signala pride po podatkovnem vodilu, koeficient po vodilu iz programskega

spomina in programski ukaz iz ukaznega predpomnilnika. Strokovno bi se temu reklo visoka pasovna širina spominskega dostopa (angl. high memory access bandwidth).

Slika 6 prikazuje podrobnejši pogled SHARC arhitekture, prikazuje vhodno/izhodni krmilnik povezan s podatkovnim pomnilnikom. Tako signali vstopijo in izstopijo iz sistema. Na primer DSP-ji omogočajo dve vrsti vrat, tako serijske kot paralelne. To so ekstremno hitre povezave. Pri frekvenci ure 40 MHz je dvoje serijskih vrat, ki delujejo vsake s hitrostjo 40 Mb/s, medtem ko vsaka od šest paralelnih vrat prenašajo podatke s hitrostjo 40 MB/s. Ko se vseh šest paralelnih vrat uporabi skupaj, znaša prenos podatkov neverjetnih 240 MB/s.

Slika 6: Značilna DSP arhitektura. Digitalni signalni procesorji so narejeni za vzporedno implementiranje nalog. Ta poenostavljen diagram predstavlja SHARC DSP proizvajalca Analog Devices.

Prav tako je pomembno, da dovoljuje strojna oprema prenose podatkov neposredno v spomin (DMA iz angl. Direct Memory Access), brez uporabe registrov v CPU. Z drugimi besedami, nalogi 1 in 14 iz tabele 1 se izvedejo neodvisno in simultano z drugimi nalogami. Glavni vodili (podatkovno in ukazno) sta dostopni tudi zunaj integriranega vezja, kar omogoča dodatni vmesnik za zunanji pomnilnik in periferijo. To omogoča SHARC DSP-jem uporabo 16 GB spomina, dostopnega z 160 MB/s, za 32-bitne podatke. Tovrstni hitri vhodi/izhodi so ključna značilnost DSP-jev. Glaven cilj je premik podatkov v DSP, preračun podatkov in umik podatkov iz DSP-ja preden je na voljo naslednji vzorec. Vse ostalo je drugotnega pomena. Nekateri DSP-ji imajo vgrajene AD/DA pretvornike in omogočajo uporabo mešanih signalov. Čeprav imajo vsi DSP-ji serijska ali paralelna vrata preko katerih lahko dostopajo do zunanjih pretvornikov.

Predstavimo še notranjost CPU. Na vrhu diagrama sta dva bloka označena kot generator podatkovnih naslovov (DAG iz angl. Data Address Generator), eden za vsakega izmed dveh pomnilnikov. Ta nadzorujeta naslove, ki so poslani programu in v podatkovni pomnilnik, z navedbo kam naj se informacija zapisuje in iz kje naj bo brana. V enostavnejših mikroprocesorjih je ta naloga obravnavana sama po sebi kot del zaporedja programa in je precej transparentna programerju, čeprav so DSP-ji narejeni za delovanje s krožnimi pomnilniki in imajo koristi zaradi strojne opreme, da jih lahko upravljajo učinkovito. S tem se izognemo potrebi po uporabi dragocenih CPU urinih ciklov, da obdržimo način kako so podatki shranjeni. Na primer, v SHARC DSP-jih je lahko vsak izmed dveh generatorjev podatkovnih naslovov nadzira osem krožnih pomnilnikov. To pomeni, da ima vsak DAG 32 spremenljivk (4 na pomnilnik)

Page 5: Procesorji digitalnih signalov

plus zahtevani logični. Zakaj tako veliko krožnih pomnilnikov? Nekateri DSP algoritmi se najbolje izvajajo v fazah. Večkratne faze zahtevajo večkratne krožne pomnilnike za najhitrejše operacije. Generatorja podatkovnih naslovov v SHARC DSP-jih sta narejena za učinkovito izvajanje Fourierjeve transformacije. V tem načinu sta generatorja podatkovnih naslovov nastavljena, da generirata bit-obrnjene naslove v krožne pomnilnike, pomemben del FFT algoritma. Kot dodatek, presežek krožnih pomnilnikov zelo poenostavi generiranje kode za digitalno obdelavo signalov. Del podatkovnega registra CPU se uporablja tako kot v tradicionalnih mikroprocesorjih. V ADSP-2106x SHARC DSP-jih je 16 splošno namenskih 40-bitnih registrov. Ti lahko zadržijo vmesne izračune, pripravijo podatke za matematični procesor, služijo kot pomnilnik za prenos podatkov, držijo zastavice za krmiljenje programa, itd. Če je potrebno lahko te registre uporabimo za nadzor števcev zank; čeprav imajo SHARC DSP-ji dodatni strojni register za izvajanje teh funkcij. Matematično procesiranje je razdeljeno v tri sekcije, množilnik, aritmetično-logična enota (ALU iz angl. arithmetic and logic unit) in multiplekser. Množilnik vzame vrednosti iz dveh registrov, jih zmnoži in prenese rezultat v drugi register. ALU izvede seštevanje, deljenje, absolutno vrednost, logične operacije (AND, OR, XOR, NOT), pretvorbo med formati s fiksno in plavajočo vejico in podobnimi funkcijami. Elementarne binarne operacije so izvedene z multiplekserjem, kot je premikanje, vrtenje, raztezanje in odlaganje segmentov, itd. Prednost SHARC družine je, da dostopamo do množilnika in ALU vzporedno. V enem urinem ciklu pošljemo podatke iz registrov 0–7 množilniku, podatke iz registrov 8–15 pa ALU in oba rezultata vrnemo kateremu koli izmed 16 registrov. Obstajajo tudi ostale pomembne prednosti SHARC arhitekture, ki niso prikazane na sliki. Na primer, 80-bitni akumulator je vgrajen v množilnik, tako da se zmanjšajo napake zaokroževanja pri večkratnih matematičnih operacijah v formatu s fiksno vejico. Druga zanimiva prednost je uporaba senčnih registrov (angl. shadow registers) za vse pomembnejše CPU registre. To so duplicirani registri, ki jih lahko vklopijo njihovi dvojniki v enem urinem ciklu. Uporabljamo jih za hitro povezavno preklapljanje, zmožnost hitrega obvladovanja prekinitev. Ko se pojavi prekinitev v tradicionalnih mikroprocesorjih je potrebno vse notranje podatke shraniti preden se začne z obravnavo prekinitve. To navadno vključuje potiskanje vseh okupiranih registrov v sklad. Za primerjavo, prekinitve v SHARC družini obravnavamo tako, da notranje podatke premaknemo v senčne registre v enem urinem impulzu. Ko se prekinitvena rutina zaključi se registri enako hitro povrnejo v prvotno stanje. Ta prednost omogoča korak 4 iz tabele 1 (angl. managing the sample-ready interrupt).

Sedaj smo prišli do kritične zmogljivosti arhitekture, koliko operacij v zanki (koraki 6–12) se lahko izvrši naenkrat. Zaradi njihove visoko vzporedne narave lahko SHARC DSP-ji simultano izvajajo vse te naloge. Posebnost je, da se lahko v enem urinem ciklu izvede množenje (korak 11), seštevanje (korak 12), premakne dva podatka (koraka 7 in 9), posodobi dva krožna pomnilna kazalca (koraka 9 in 10) in nadzoruje zanko (korak 6). Tam bodo tudi dodatni urini cikli povezani z začetkom in koncem zanke (koraki 3, 4, 5 in 13 plus premik začetnih vrednosti na mesto); čeprav so te naloge izvajane zelo učinkovito. Če zanko izvedemo večkrat bo ta višek nepomemben. Kot primer si predstavljajmo, da napišemo program za učinkovit FIR filter z uporabo stotih koeficientov. Pričakovati je, da bomo potrebovali za izvedbo od 105 do 110 urinih ciklov na vzorec (100 koeficientnih zank plus višek). To je zelo impresivno; tradicionalni mikroprocesor zahteva za ta algoritem več tisoč urinih ciklov.

5. Kako hitri so DSP-ji?

Primarni razlog za uporabo DSP-ja namesto tradicionalnega mikroprocesorja je hitrost, zmožnost prenosa vzorcev v napravo, izvedba zahtevane matematične operacije in prenos procesiranih podatkov iz naprave. To sproži vprašanje: Kako hitri so DSP-ji? Na to vprašanje navadno odgovorimo z metodami, ki merijo hitrost mikroprocesorja v številkah. Na primer, sistemi z aritmetiko s fiksno vejico so pogosto navedeni v milijonih celoštevilčnih operacij na sekundo (MIPS iz angl. million integer operations per second), naprave s plavajočo vejico pa navedemo v milijonih operacij s plavajočo vejico na sekundo (MFLOPS iz angl. million floating point operations per second).

Slika 7: Hitrost DSP-ja. Hitrost izvajanja določenega DSP algoritma dobimo z deljenjem frekvence ure z zahtevanim številom urinih ciklov na vzorec. Ta slika prikazuje pasove hitrosti izvajanja za štiri pogoste algoritme na SHARC DSP-ju pri frekvenci ure 40 MHz.

Žal v praksi to pogosto zataji, ker se različni mikroprocesorji različno obnesejo na različnih področjih. Zmeda o metodah merjenja je posledica tekmovalnega odnosa elektronske industrije. Proizvajalci želijo prikazati svoje izdelke v najboljši luči, zato uporabijo meritve, ki pokažejo najboljše rezultate njim v prid. Boljši pristop je, da uporabite specifične informacije o času izvajanja algoritmov, ki jih želite uporabljati. Če na primer potrebuje vaša aplikacija FIR filter, poglejte natančno koliko urinih ciklov je potrebnih, da naprava izvrši to nalogo. Z uporabo te strategije si poglejmo čas, ki je potreben za izvedbo različnih algoritmov na našem DSP-ju družine SHARC proizvajalca Analog Devices.

Predpostavimo, da se hitrost mikroprocesorja podvoji na približno vsaka tri leta. To pomeni, da je tej metodi, ki smo jo uporabili potrebno nameniti posebno pozornost. Dejanske številke se zmeraj spreminjajo in vedno znova je potrebno ponoviti izračune ob začetku novega projekta. Kadar je potrebno razumeti čas izvajanja je SHARC družina ena izmed najlažjih DSP-jev za razumevanje. To je zato, ker lahko izvaja operacijo množi in akumuliraj v samo enem urinem ciklu. Ker večina FIR filtrov uporablja 25 do 400 koeficientov je potrebnih 25 do 400 urinih ciklov za vsak vzorec, ki je procesiran. Kot je bilo že predhodno opisano je potrebna majhna količina presežkov, da dosežemo takšno učinkovitost zanke (priprava prve zanke in končanje zadnje zanke), ampak je to nepomembno kadar je število zank veliko. Da bi obdržali hitrost izvajanja filtra lahko delimo urino frekvenco SHARC (trenutno 40 MHz) z številom urinih ciklov potrebnih za vzorec. To nam da maksimalno podatkovno razmerje FIR filtra, ki je od 100 k do 1,6 M vzorcev/s. Izračun ne morejo biti bolj enostavne od tega. Te vrednosti hitrosti izvajanja FIR filtra so prikazane na sliki 7. Izračuni so prav tako enostavni za rekurzivne filtre. Tipični filtri

Page 6: Procesorji digitalnih signalov

z neskončnim impulznim odzivom (IIR iz angl. infinite impulse response) uporabljajo 5 do 17 koeficientov. Ker so te zanke relativno kratke bomo dodali nekaj presežka, recimo 3 cikle na vzorec, kar rezultira v 8 do 20 urinih ciklov potrebnih za vzorec procesiranih podatkov. Pri urini frekvenci 40 MHz to omogoča maksimalno hitrost izvajanja IIR filtra od 1,8 M do 3,1 M vzorcev/s. Te IIR vrednosti so prav tako prikazane na sliki 7.

Naslednje je področje frekvenčnih tehnik, ki slonijo na hitri Fourierjevi transformaciji. FFT podprogrami so skoraj zmeraj dosegljivi s strani proizvajalca DSP-ja. To so visoko optimizirane rutine, ki so napisane v strojnem jeziku. Specifikacijski list ADSP-21062 SHARC DSP-ja navaja, da potrebuje 1024-bitni vzorec kompleksne FFT 18.221 urinih ciklov ali okrog 0,46 ms pri 40 MHz. Za izračun hitrosti izvajanja je lažje pogledati teh 17,8 urinih ciklov na vzorec. Ta vrednost »na vzorec« se malo spreminja z daljšo ali krajšo FFT. Na primer, 256-bitni vzorec FFT potrebuje okrog 14,2 urinih ciklov na vzorec in 4096-bitni vzorec FFT potrebuje 21,4 urinih ciklov na vzorec. Prave FFT se da izračunati 40 % hitreje kot kompleksne FFT vrednosti. To omogoča celotni obseg vseh FFT rutin okrog 10 do 22 urinih ciklov na vzorec, ki se ujema s hitrostjo izvajanja okrog 1,8 M do 3,3 M vzorcev/s. FFT konvolucija je hitra pot za izvršitev FIR filtrov. Pri tipičnem primeru 512-bitnega vzorčnega segmenta, ki je vzet iz vhoda, mu dodamo še dodatnih 512 ničel in pretvorimo v frekvenčni spekter z uporabo 1024 bitne točkovne FFT. Po množenju tega spektra z želenim frekvenčnim odzivom uporabimo 1024 točkovno inverzno FFT za premik nazaj v časovno domeno. Rezultirajočih 1024 točk je združenih s sosednimi procesiranimi segmenti z uporabo »overlap-add« metode. To ustvari 512 točk izhodnega signala. Koliko urinih ciklov rabimo za to? Vsak 512-bitni vzorec segmenta zahteva dve 1024 bitni točkovni FFT plus majhno količino viška. V zaokroženih pogojih je to večje za petkratnik samostojne FFT s 512 točkami. Ker prava FFT zahteva okrog 12 urinih ciklov na vzorec, se lahko FFT konvolucija izvede v 60 urinih ciklih na vzorec. Za 2106x SHARC DSP pri 40 MHz se to ujema s hitrostjo izvajanja podatkov okrog 660 k vzorcev/s. To je približno enako kot 60 koeficientov FIR filtrov, ki so izvedeni z navadno konvolucijo. Z drugimi besedami, če ima FIR filter manj kot 60 koeficientov se lahko izvede hitreje kot s konvolucijo. Če pa ima več kot 60 koeficientov je FFT konvolucija hitrejša. Ključna prednost FFT konvolucije je, da se čas izvedbe logaritemsko poveča s številom koeficientov. Na primer, jedro 4096-bitnega točkovnega filtra potrebuje samo 30 % več za izvedbo kot s 512 točkami. FFT konvolucija je lahko aplicirana tudi v dveh dimenzijah, kot je to primer za slikovno procesiranje. Predpostavimo, da želimo procesirati sliko 800x600 pikslov v frekvenčni domeni. Najprej povečajmo sliko z ničlami, da bo velikosti 1024x1024. Dvodimenzionalni frekvenčni spekter je nato preračunan s FFT vsake vrstice in nato s FFT vsakega rezultirajočega stolpca. Po množenju tega 1024x1024 spektra z želenim frekvenčnim odzivom je potrebna dvodimenzionalna inverzna FFT. To je izvedeno z inverzno FFT vsake vrstice in potem z vsakim rezultirajočim stolpcem. S seštevanjem števila urinih ciklov in deljenjem s številom vzorcev ugotovimo, da celotna procedura traja približno 150 urinih ciklov na piksel. Za 40 MHz ADSP-2106 se to ujema s hitrostjo prenosa podatkov okrog 260 k vzorcev/s. Če primerjamo te različne tehnike na sliki 7 lahko povzamemo naslednje:

Skoraj vse DSP tehnike zahtevajo za izvedbo med 4 in 400 ukazov (urinih ciklov v SHARC družini). Za SHARC DSP, ki deluje pri 40MHz lahko takoj povzamemo, da bo njegov prenos podatkov med 100k in 10M vzorcev na sekundo, odvisno od tega kako kompleksen algoritem je v uporabi. Sedaj, ko razumemo kako hitro lahko DSP-ji procesirajo digitalne signale,

se vprašajmo še drugače; kako hitro obdelovanje podatkov rabimo? Seveda je to odvisno od aplikacije. Pogledali si bomo dve najpogostejši avdio in video procesiranji. Podatkovno razmerje, ki ga potrebujemo za avdio signal je odvisno od zahtevane kakovosti reproduciranega zvoka. Pri nizki kakovosti, kot je to telefonski govor, potrebujemo samo frekvenčno področje med 100 Hz in 3,2 kHz ter vzorčevalno frekvenco, ki znaša 8k vzorcev/s. Pri visoko kvalitetni glasbi moramo obdržati celoten slišni frekvenčni spekter od 20 Hz do 20 kHz ter vzorčevalno frekvenco 44,1 kHz za oba kanala, kar naredi kompletni Hi Fi signal 88,2 kHz vzorcev/s. Kako se SHARC družina primerja s temi zahtevami? Kot je prikazano na sliki 7 lahko z lahkoto obvladuje Hi Fi avdio ali procesira več avdio signalov hkrati.

Slika 8: Konfiguracije multiprocesiranja. Multiprocesorski sistemi tipično uporabljajo eno izmed dveh shem za komunikacijo med točkami procesorjev, (a) namenska komunikacija med kanali od točke do točke ali (b) dostop preko deljenega globalnega pomnilnika preko vzporednega vodila.

Video signali so druga zgodba; zahtevajo tisočkrat več podatkovnega razmerja kot avdio signali. Dober primer nizke kakovosti video signala je CIF standard (angl. Common Interface Format) za video telefonijo. Ta uporablja 352x288 pikslov s tremi barvami na piksel in 30 okvirji na sekundo, skupaj znaša celotno podatkovno razmerje 9,1 M vzorcev/s. Pri visoki kakovosti video signala uporabljamo HDTV (angl. high-definition television), ki uporablja 1920x1080 pikslov s tremi barvami na piksel in 30 okvirji na sekundo. To zahteva podatkovno razmerje nad 186 M vzorcev/s. Podatkovna razmerja so nad zmogljivostjo samostojnega SHARC DSP-ja, kot je prikazano na sliki 7. Obstajajo tudi druge aplikacije, ki zahtevajo tako visoka podatkovna razmerja, na primer: radar, sonar in kontrola izstrelkov za vojsko. Da bi obvladovali tako zmogljive naloge lahko več DSP-jev združimo v samostojni sistem. Temu se reče multiprocesiranje ali vzporedno procesiranje. SHARC DSP-ji uporabljajo takšen način multiprocesiranja in vsebujejo določene specialne prednosti, ki to vse skupaj poenostavijo. Na primer, ni potrebne nobene zunanje logike (strojne opreme) za povezavo zunanjih vodil več SHARC DSP-jev skupaj; vsa logika za obravnavo vodil je že vgrajena v vsako napravo. Kot alternativo za povezavo več

Page 7: Procesorji digitalnih signalov

procesorjev lahko uporabimo vrata (4-bitna, paralelna). Slika 8 prikazuje tipične načine kako lahko SHARC DSP-je razporedimo v multiprocesorske sisteme. Na sliki 8a je algoritem razdeljen na sekvenčne korake kjer vsak procesor izvaja enega izmed korakov v strategiji zbirne vrste (angl. assembly line).

V primeru na sliki 8b, procesorji medsebojno delujejo preko samostojno deljenega globalnega pomnilnika do katerega dostopajo preko vzporednega vodila (zunanja vrata). Slika 9 prikazuje drug način s katerim lahko povežemo večje število procesorjev v samostojni sistem, to sta 2D in 3D mreži. Vsaka izmed teh konfiguracij bo imela relativne prednosti in slabosti za določeno nalogo. Da bi omogočili programerju lažje delo uporablja SHARC družina združen naslovni prostor (angl. unified address space). To pomeni, da je 4 Gbesedni naslovni prostor, do katerega dostopamo preko 32-bitnega naslovnega vodila razdeljen med različne procesorje, ki delujejo skupaj. Da prenesemo podatke iz enega procesorja do drugega enostavno preberemo iz ali pišemo v primerne pomnilniške lokacije. SHARC notranja logika poskrbi za ostalo, prenaša podatke med procesorji s hitrostjo do 240 MB/s (pri 40 MHz).

Slika 9: Multiprocesorska »mesh« konfiguracija za aplikacije kot so radarsko prikazovanje, 2D ali 3D razvrstitev je po vsej verjetnosti najboljši način za koordinacijo večjega števila procesorjev.

6. Trg DSP-jev

Trg DSP-jev je zelo velik in hitro raste. Kot je prikazano na sliki 10 je znašal ob koncu stoletja od 8 do 10 milijard dolarjev na leto in raste 30–40 % letno. To rast povzroča neprestane zahteve po boljših in cenejših izdelkih za potrošnike, kot so to mobilni telefoni, multimedijski računalniki in visoka čistost glasbene reprodukcije.

DSP-je lahko kupimo v treh oblikah, kot jedro, kot procesor in kot izdelek na nivoju plošče. Izraz »jedro« se nanaša na del procesorja, kjer se izvajajo ključne naloge vključno s podatkovnimi registri, množilniki, ALU, generator naslovov in programski sekvenčnik. Celoten procesor zahteva združevanje jedra s pomnilnikom in vmesniki z zunanjim svetom. Medtem ko je jedro in periferni deli narejeno posebej bodo proizvedeni skupaj na istem koščku silicija, kar bo naredilo procesor kot samostojno integrirano vezje. Predpostavimo, da želimo izdelovati mobilne telefone in si vanje želimo vgraditi DSP-je. Po vsej verjetnosti bomo uporabili DSP kot procesor, kar je,

integrirano vezje (čip), ki vsebuje jedro, spomin in ostale interne prednosti. Na primer SHARC ADSP-21060 izdelan v PQFP (angl. plastic quad flat pack) plastičnem zavitku velikosti 35x35x4 mm. Da bi vgradili to integrirano vezje v naš izdelek naredimo tiskano vezje na katero bo prispajkano to vezje, poleg ostale elektronike. To je najpogostejši način uporabe DSP-jev. Sedaj predpostavimo, da naše podjetje proizvaja svoja integrirana vezja. V tem primeru mogoče ne želimo celotnega procesorja ampak samo načrt jedra. Po prejetju primernega dovoljenja za licenco lahko začnemo z izdelavo integriranih vezji, ki so prirejena naši točno določeni aplikaciji. To nam da možnost odločanja o količini pomnilnika v integriranem vezju, kako sprejema in oddaja podatke, v kakšnem ohišju je, itd. Takšne naprave so vse bolj pomembne na trgu DSP-jev. Na vse zadnje obstaja veliko podjetji, ki ti prodajo DSP, ki je že vgrajen na tiskano vezje. Ti imajo prednosti kot so dodatni spomin, A/D in D/A pretvorniki, EPROM podnožja, več procesorjev na istem vezju, itd. Medtem ko bo nekaj izmed teh vezji uporabljenih kot samostojni računalniki ali osebni računalniki (PC). Podjetjem, ki izdelujejo takšne tipe vezji pravimo »third party developers«, saj niso neposredno vezani na proizvod, ki ga potrošnik uporablja. Najlažji način, da najdemo takšne razvijalce je, da povprašamo proizvajalce DSP-jev, ki jih želimo uporabljati.

Slika 10: DSP trg, ki je znašal ob koncu stoletja od 8 do 10 miljard dolarjev na leto in raste 30-40 % letno.

7. Sodobni DSP-ji

Sodobni signalni procesorji so pridobili visoko zmogljivost na račun obeh tehnoloških in arhitekturnih napredkov kot so to nižja konstrukcijska pravila, hiter dostop do dvonivojskih predpomnilnikov, (E)DMA direktni spominski dostop in širši sistem vodil. Vsi DSP-ji ne ponujajo enake hitrosti, obstaja veliko različnih DSP-jev, ki pa so prilagojeni vsak za svojo specifično nalogo.

Texas Instruments proizvaja C6000 serijo DSP-jev, ki imajo urino frekvenco 1,2 GHz in implementirane ločene ukazne in podatkovne predpomnilnike. Imajo tudi 8 MB drugo stopenjski predpomnilnik in 64 EDMA kanalov. Najzmogljivejši modeli so zmožni 8000 MIPS, uporabe VLIW, opravljanja osem operacij na urin cikel in so kompatibilni z mnogimi zunanjimi enotami in vodili (PCI/serijski/itd.). TMS320C6474 integrirana vezja imajo po tri DSP-je iz najnovejša generacija C6000 integriranih vezji, ki podpirajo tako aritmetiko s plavajočo, kakor tudi fiksno vejico.

Page 8: Procesorji digitalnih signalov

Podjetje Freescale Semiconductor proizvaja večjedrne DSP-je, MSC81xx. MSC81xx je zasnovan na procesorjih z StarCore arhitekturo. Zadnji MSC8144 DSP združuje štiri programabilna SC3400 StarCore DSP jedra s frekvenco ure 1 GHz.

Podjetje Analog Devices proizvaja DSP-je na osnovi super harvardske arhitekture, ki imajo zmogljivost od 198 MFLOPS (66 MHz) do 2400 MFLOPS (400 MHz). Nekateri modeli podpirajo več množilnikov in ALU, SIMD ukaze in avdio procesiranje; specifične komponente in periferijo. Blackfin družina DSP-jev združuje prednosti DSP-jev in procesorjev za splošno uporabo. Kot rezultat, na teh procesorjih lahko delujejo enostavni operacijski sistemi, kot so μCLinux, velOSity in Nucleus RTOS medtem ko operirajo s podatki v realnem času.

Podjetje NXP Semiconductors proizvajajo DSP-je na osnovi TriMedia VLIW tehnologije prilagojene za avdio in video procesiranje. V nekaterih proizvodih je jedro DSP-ja skrito kot blok fiksne funkcije v sistemu na integriranem vezju. Vendar nudi NXP tudi spekter fleksibilnih medijskih procesorjev z enojnim jedrom. TriMedia medijski procesorji podpirajo tako aritmetiko s fiksno vejico, kot tudi aritmetiko s plavajočo vejico in imajo specifične ukaze za ravnanje s kompleksnimi filtri in kodiranjem entropije.

Večina DSP-jev uporablja aritmetiko s fiksno vejico, ker v resničnem svetu procesiranja signalov ne potrebujemo dodatni razpon, ki ga ponuja plavajoča vejica, z zmanjšanjem kompleksnosti strojne opreme povečamo hitrost in zmanjšamo stroške. Aritmetika s plavajočo vejico je pri DSP-jih lahko neprecenljiva v aplikacijah, kjer je zahtevan velik dinamični obseg. Razvijalci bodo lahko uporabljali kljub dragi strojni opremi DSP-je s plavajočo vejico tudi, da bi zmanjšali ceno in kompleksnost razvoja programske opreme, saj je na splošno lažje implementirati algoritme v plavajoči vejici.

DSP-ji so namenjeni integriranim vezjem, čeprav lahko funkcionalnost DSP-jev proizvedemo tudi z uporabo programabilnih čipov (FPGA iz angl. Field-Programmable Gate Array).

Splošno uporabni RISC (angl. Reduced Instruction Set Computing) procesorji lahko postajajo po funkcionalnosti enaki DSP-jem. Na primer ARM Cortex-A8 in OMAP3 ( angl. Open Multimedia Application Platform) procesorji vključujejo Cortex-A8 in C6000 DSP-ja.

Reference

Steven W. Smith, 1999, The Scientist and Engineer's Guide toDigital Signal Processing, Second Edition, California Technical Publishing P.O. Box 502407, San Diego, CA 92150-2407

Digital signal processor http://en.wikipedia.org/wiki/Digital_signal_processor

Richard G. Lyons, 2004, Understanding Digital Signal Processing, Second Edition, Pearson Education, Inc.Publishing as Prentice Hall Professional Technical ReferenceUpper Saddle River, New Jersey 07458