Guide: DSP: Digitale signalprosessorer (del 3)
Alternative Arkitekturer
Denne artikkelserien tar for seg en mye brukt, men mindre synlig type prosessor: den digitale signalprosessoren.
Digitale signalprosessorer og andre prosessorer har igjennom
utviklingen påvirket hverandre, og idag fines det flere
alternativer til den klassiske DSP-arkitekturen som beskrevet
i forrige artikkel. Blant disse finner vi prosessorer med mange MAC
(Multiply and Accumulate) enheter, prosessorer med arrayer av
underprosessorer, FPGA-kretser, og ikke minst DSP-koprosessorer til
alminnelige prosessorer. Denne artikkelen gir en oversikt over disse.
DSP med FPGA
FPGA, Field Programmable Gate Array, er som navnet antyder en krets
der logiske porter ("gate") er lagt ut som en matrise ("array"), der
disse kan programmeres av en bruker. Dette i motsetning til en ASIC som
er designet på forhånd og produsert med en spesifik
funksjon (se tidligere artikkel om
kretsdesign). De logiske portene (CLB - Configurable Logical
Blocks) kan programmeres til forskjellige
funksjoner, oftest ved å definere verdier i en tabell (LUT - Look
Up Table) der inngangene er en indeks i tabellen.
Også andre og mer avanserte elementer kan legges inn, f.eks. DSP-enheter (f.eks DSP48), minne, prosessorer, kryptoenheter med mer. Selv om disse kan lages fra enkle logiske elementer som beskrevet over, vil det være langsommere og mer plasskrevende.
Rundt de forskjellige logiske blokkene ligger
høyhastighetslinjer, omtrent som flerfeltsveier rundt kvartaler
med logiske blokker, og kryssene er da som koblingspunkter for omruting.
Programmering skjer ved å definere funksjonene i blokkene
(blå firkanter), som
igjen betyr å definere innholdet i oppslagstabellene, og ved
å definere forbindelsene (orange utstikkere) mellom hver CLB og
høyhastighetslinjene (olivengrønne baner), og mellom
høyhastighetslinjene i
kryssene (lysegrønne kvadrater). Dette skjer typisk i et
høynivåspråk siden
det er en overveldende oppgave å holde styr på flere
hundrede tusener med blokker, tabeller med mer.
I bruk er en FPGA-løsning typisk langt raskere enn en
programmerbar DSP, av flere grunner. For det første er
komponentene stablet etterhverandre i den rekkefølgen data
prosesseres, der seksjoner med logiske blokker gjør sin del som
om det var et samlebånd. I en mobiltelefon kan dette være
demodulasjon, dekoding av protokolldata, dekoding av lyd,
balansering av lyd med mer. En kan også ha parallelle funksjoner
som f.eks. styring av sendereffekt og mottakerfrekvens. I en
programmerbar DSP måtte en prosessor gjøre alt, og bruke
interrupter for å kjøre parallelle funksjoner. I en FPGA
er
blokker koblet til hverandre med høyhastighetslinjer, så
det er ikke behov for å laste om data slik en DSP må
gjøre, og det er heller ikke behov for å dekode
instruksjoner om en bare bruker enkle logiske blokker.
En FPGA kan også utrustes med programmerbare funskjoner som er
lettere å debugge og oppgradere, eventuelt gjenbruke eksisterende
kode.
Ulempen med en FPGA er typisk høy innkjøpskostnad og
programmeringssystemer som er dyrere enn for tradisjonell DSP.
Debugging er også mer krevende, spesielt når det er mange
parallelle funksjoner som må samvirke.