Dette er en utskriftsvennlig versjon

Guide: DSP: Digitale signalprosessorer (del 3)

Alternative Arkitekturer

Denne artikkelserien tar for seg en mye brukt, men mindre synlig type prosessor: den digitale signalprosessoren.

Side 1: Innledning

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.

Forenklet oversikt over komponentene i en CLB
i en CLB
Forenklet oversikt over komponentene i en CLB i en CLB

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.

Forenklet oversikt over komponentene i en FPGA
Forenklet oversikt over komponentene i en FPGA

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.

Side 2: DSP med sub-prosessorer

DSP med sub-prosessorer

Nært beslektet med FPGA-tanken er en nyere prosessortype som består av noen få styreprosessorer og et array av mange sub-prosessorer, der delene er tett knyttet sammen med bredbåndsbusser og avansert busskontroll. Dette er en løsning for å tilveiebringe enorm datakraft uten å måtte bruke høy klokkefrekvens, noe en ønsker å unngå pga. strømforbruk. Faktisk er strømforbruk i basestasjoner i mobiltelefon-nettet regnet som en betydelig utgiftspost i driftsbudsjettene det er verd å gjøre noe med.

En tidlig variant var C80-serien fra Texas Instruments der en 32-bits RISC, fire DSP-enheter og buss-styring var integrert på en chip. Arkitekturen viste seg å være komplisert å programmere, og serien ble etterhvert erstattet av andre arkitekturer.

Dette har ikke stoppet andre fra å forsøke, og blant interessante nykommere finner man Sandblaster-arkitekturen fra Sandbridge Technologies. Etter hva leverandøren hevder, skal deres prosessorer være istand til å kunne brukes i radiosystemer og dekode det meste fra GSM til GPS. Slike radioer (SDR - Software Defined Radio) kan dekode nye signaler bare ved hjelp av reprogrammering. Et annet eksempel er MRC6011 fra Freescale. De kaller arkitekturen for "Reconfigurable Compute Fabric", der hver krets består av 2 moduler, der hver modul består av 3 kjerner, og der hver kjerne omfatter en RISC-prosessor og 16 rekonfigurerbare celler. Kretsene kan settes sammen i grupper, og en kan derved lage beowulf-cluster av beowulfclustre, alt knyttet sammen med høyhastighetsforbindelser.

Slike arkitekturer er krevende å programmere, og til tross for gode omtaler er det påfallende hvor mange av disse som har hatt problemer med å forlate tegnebrettet og komme ut i alment bruk. Så langt ser det ut til at PicoChip er ganske alene om å ha kommersiell suksess, og deres satsningsområde er basestasjoner for mobiltelefoni.

Også mediaprosessorer er ofte utstyrt med en rekke underprosessorer for effektiv koding og dekoding av mediafiler. Mange nyere formater oppnår god kompresjon på bekostning av behovet for mye datakraft, og for slike dekodere er det ofte et krav til at de skal operere i sann tid.

DSP med sub-prosessorer
DSP med sub-prosessorer

Cell-prosessoren er en slektning av denne type arkitektur, selv om den ikke er først og fremst beregnet på digital signalprosessering. Den har både en generell prosessor og flere underprosessorer, alle knyttet sammen med et høyhastighetsnett på chippen.

Side 3: SIMD

SIMD

Det har vært lansert mange alternativer til å øke ytelsen uten å øke klokkefrekvensen, og mye av dette har gått ut på å øke antall funksjonelle enheter. Blant de første grepene som ble tatt var å innføre flere MAC (Multiply and Accumulate) -enheter i arkitekturene, men det resulterte i minimale forbedringer. Noe av grunnen er at en digital signalprosessor opererer under harde sanntidskrav (mer om dette i en senere artikkel), der en på forhånd må vite hvor mye tid et program tar, og så kunne være sikker på at det alltid tar like lang tid. Tradisjonelle CPU-knep som speculative execution (der flere mulige alternativer kjøres før en vet hvilket alternativ som skal være korrekt) og out of order execution (der instruksjoner kjøres ut av rekkefølge og resultater omstables i henhold til programrekkefølgen) er derfor ikke aktuelle siden en da ikke på forhånd kan være sikker på tidsbruken, og i tillegg medfører betydelig økning i strømforbruk. Andre alternativer måtte til.

Ved å bruke en instruksjon på flere dataenheter samtidig (SIMD - Single Instruction Multiple Data), oppnår en parallellprosessering uten store kostnader i form av antall instruksjoner. Dette er et grep mye brukt i moderne prosessorer (MMX, SSE1-4, 3DNow!, Altivec med fler) og som oppfyller sanntidskravene. Et dataregister inneholder en rekke datafelter, og en enkelt instruksjon kan da operere på en rekke datafelter (f.eks. 4) på en gang:

SIMD_int_add(R3, R1, R2):
 R3.a = R1.a + R2.a
 R3.b = R1.b + R2.b
 R3.c = R1.c + R2.c
 R3.d = R1.d + R2.d

Registre R1, R2 og R3 er brede, typisk 64 eller 128 bit brede, og hvert register inneholder en rekke under-registre a, b, c og d.

SIMD-summering
SIMD-summering

Det er vedt å merke seg at om det blir overflow i summeringen av R1.c med R2.c, så vil ikke dette påvirke resultatet i R3.b, noe som ville ha skjedd med alminnelig summering av R1 og R2.

SIMD er benyttet både i tallknusere, generelle prosessorer og digitale signalprosessorer. Fordelen er enkel oppskalering av datakraft, men er mest egnet til små datasett som passer inn i registerfilen. Behandlig av store datasett, f,.eks. fouriertransformasjoner med tusener av datapunkter, vil kreve bruk av data-adressegeneratorer. Det er komplisert og koster raskt mye tid i form av dataoverføringer.

SIMD kan også kombineres med sub-prosessorer, f.eks. inngår AltiVec i styreprosessoren (Power Processing Element) i Cell-prosessoren.

MAC som tillegg

En MAC er noe av det mest karakteristiske i en DSP, og var i lange tider et sjeldent syn i generelle prosessorer. Selv om den typiske DSP tidligere var adskillig raskere enn en typisk CPU, har CPU-ytelsen blitt øket i større tempo enn for DSP. Noe av grunnen er at en DSP er typisk mer prissensitiv enn en CPU, og er derfor så enkel og så langsom som mulig innenfor rammene til kravene. I tillegg er DSP-funskjoner også svært følsomme for strømforbruk (bl.a. i battetridrevne applikasjoner som mobiltelefoner) og for varmeproblemer der vifter ikke er en akseptabel kjølemetode (mobiltelefoner, stereoanlegg med mer).

Siden CPU-utviklingen var mindre hemmet, har endel CPU-designer fått muligheten til å legge til MAC som en funksjon for spesielle applikasjoner, typisk mikrokontrollere som ARM (mye brukt i mobiltelefoner) og Super-H (brukt i spill, multimedia og motorstyring). Felles for disse er at bruksområdene dekker i stor grad styringslogikk der DSP-arkitekturen ikke er spesielt godt egnet, med innslag av signalprosessering der en MAC-enhet er tilstrekkelig til å få jobben gjort.

DSP integrert med RISC

Det er også mulig å få i pose og i sekk med ariktekturer som kombinerer RISC med DSP.

Blokkdiagram av Blackfin-arkitekturen (Analog Devices)
Blokkdiagram av Blackfin-arkitekturen (Analog Devices)

Et eksempel er Blackfin fra Analog Devices. DSP-egenskapene ivaretas av bl.a. en dobbel MAC (grønn bakgrunn) med data-adressegeneratorer (DAG0 og DAG1 i blått). Det som gjør den uvanlig i DSP-sammenheng er at den er tilstrekkelig velutstyrt og oppfyller kravene mange avanserte operativsystemer stiller, slik at en kan kjøre bl.a. Linux på Blackfin.

Side 4: Utviklingen

Utviklingen

Et stadig større behov for datakraft med stadig større krav til lavt strømforbruk, har ført til en stadig utvikling i DSP-arkitekture. Selv om det finnes mange seiglivede arkitekturer, slik som x86 er for generelle CPUer, er situasjonen langt mer sammensatt for DSP-markedet. Det finnes en lang rekke tildels svært spesialiserte arkitekturer, hver med store varisjoner, og stadig nye kommer til.

En senere utvikling har tatt denne tendensen helt ut i en type arkitektur der prosessoren består av en mangde sub-prosessorer, knyttet sammen med høyhastighetsbusser. Nylig lanserte Tilera sin Tile64-prosessor (tidligere HWB-artikkel), der de 64 kjernene er komplett med hver sin prosessor, cache og en switch. Dette gjør at hver enkelt kjerne kan kjøre hvert sitt operativsystem eller grupper kan settes sammen med SMP-operativsystem, og brosjyren (PDF) nevner Linux 2.6.

Om en skal se etter trenger ser det ut til at DSP og CPU går i retning av flerkjerneløsninger, der kjernene blir stadig mer avanserte. Klokkefrekvens er ikke lengre hovedparameteret en arbeider mest med, istedet økes ytelsen ved bruk av flere kjerner med mer avanserte funksjoner, slik at en bruker forholdsvis mindre strøm for datakraften som systemet leverer.

I tillegg ser en at DSP-systemer ofte pakkes sammen med en mikrokontroller, ofte i situasjoner der en ikke ønsker å bruke plass ti en egen off-chip kontroller til å håndtere ting som kommunikasjon som f.eks. USB-grensesnitt. Også CPU-design har hentet inspirasjon fra DSP-verdenen, også dette vil bli nærmere omtalt i en senere del.

Avslutningsvis skal det nevnet at også en GPU kan brukes til signalprosessering, selv om dette ikke akkurat har tatt av. Kraftforbruk er ikke blant de viktigste designparametre for en GPU, hvilket begrenser bruksområdene.

Oppsummering

DSP- og CPU-verdnene er ganske forskjellige i sine grunnbehov, men det er kommet til en god del felles elementer etter at strømforbruket i alminnelige CPUer begynte å bli et problem. Ikke overraskende bruker nå CPU-designere grep som er velkjent fra DSP-bransjen. For mange år siden var en typisk DSP langt raskere enn den tids CPUer, men ble etterhvert forbikjørt. Nye behov er kommet til, og igjen er datakraften i en DSP raskt voksende.

Nye kombinasjoner er kommet til, og en aner konturene av kampen mellom Cell og GPU, og løsninger med mange sub-prosessorer er på fremmars etter mange feilslag. DSP-floraen er også stdig voksende ettersom nye behov i markedet kommer til, blant annet i nyere og kommende generasjoner trådløse nettverkssystemer.