Digital signalprocessor ( eng. digital signal processor , DSP , digital signal processor (DSP) - en specialiseret mikroprocessor designet til at behandle digitaliserede signaler (normalt i realtid ) [1] .
Arkitekturen af signalprocessorer, i sammenligning med mikroprocessorer til generelle formål, har nogle funktioner forbundet med ønsket om at fremskynde udførelsen af typiske digitale signalbehandlingsopgaver så meget som muligt, såsom digital filtrering , Fourier-transformation , signalsøgning osv. Matematisk reduceres disse opgaver til elementvise multiplikationselementer af multikomponentvektorer af reelle tal, efterfulgt af summering af produkterne (for eksempel i digital filtrering er udgangssignalet fra et filter med en endelig impulsrespons lig med summen af produkter af filterkoefficienterne af vektoren af signalprøver, udføres lignende beregninger, når der søges efter maksima for korrelations- og autokorrelationsfunktionerne for signalprøver). Derfor er signalprocessorer optimeret til hastighed til at udføre netop sådanne operationer. Og DSP'er er først og fremmest orienteret mod den gentagne udførelse af multiplikation med beregningen "on the fly" af adresserne på de array-elementer, der skal multipliceres:
De begrænsede hardwareressourcer fra de første DSP'er efterlod et betydeligt aftryk på deres arkitektur:
I moderne mikroelektronik indeholder processorer til generelle formål ofte hardwareunderstøttelse til typiske DSP-operationer. Særligt tidskrævende DSP-opgaver løses ud fra programmerbar logik , hvor det er muligt at opnå den største optimering af udførelsen af en bestemt operation. Specialiserede DSP-processorer bliver i stigende grad lavet til vektor . Samtidig giver klassiske DSP'er avancerede instruktionssæt til processorer til generelle formål og udjævner funktionerne i softwaremodellen og placerer dem som produkter til generelle formål med accelererede DSP-funktioner. Alle disse tendenser fører til sløring af det klassiske koncept for DSP.
Før 1980 producerede flere virksomheder enheder, der kan betragtes som forløbere for DSP'er. Så i 1978 udgav Intel den "analoge signalprocessor" 2120. Den inkluderede en ADC , en DAC og en digital dataprocessor, men der var ingen hardwaremultiplikationsfunktion. I 1979 frigiver AMI S2811, en perifer enhed styret af computerens hovedprocessor. Begge produkter havde ikke succes på markedet.
DSP'ernes hovedhistorie tælles normalt fra 1979-1980, da Bell Labs introducerede den første Mac 4 single-chip DSP, og også NEC 's µMPD7720 og AT&T 's DSP1 blev vist på IEEE International Solid-State Circuits Conference '80 , som dog ikke fik stor udbredelse. De facto-standarden var Texas Instruments TMS32010 krystal udgivet lidt senere , som overgår konkurrenternes produkter i mange parametre og succesfulde tekniske løsninger. Her er nogle af dens egenskaber:
På grund af fremskridt inden for halvlederteknologi i denne periode blev der frigivet produkter, der havde forbedrede funktioner sammenlignet med den første generation. Karakteristiske forskelle omfatter:
Meget senere blev der også frigivet enheder, der formelt tilhørte anden generation, men med følgende forbedringer:
Den tredje generation af DSP'er er normalt forbundet med starten af produktionen af produkter, der implementerer flydende kommaaritmetik. Karakteristiske træk ved de første frigivne prøver:
Fjerde generation af DSP'er er kendetegnet ved en betydelig udvidelse af instruktionssæt, skabelsen af VLIW og superskalære processorer. Urfrekvenserne er steget mærkbart. Så for eksempel blev udførelsestiden for MAC-instruktionen ( Y := X + A × B ) reduceret til 3 ns.
De bedste moderne DSP'er kan karakteriseres ved følgende parametre:
DSP'ens integralkarakteristika bruges også ofte, for eksempel "power / current / speed"-indikatoren, for eksempel ma / MIPS (milliampere pr. 1 million instruktioner pr. sekund), som gør det muligt at estimere det reelle strømforbrug afhængig af kompleksiteten af den opgave, der løses af processoren på et bestemt tidspunkt.
Valget af DSP er helt bestemt af formålet med det system, der udvikles. For eksempel er billige processorer og lavt strømforbrug vigtigt for massemobilenheder, mens omkostningerne ved at udvikle et system falder i baggrunden. På den anden side er processoreffektivitet, tilgængeligheden af avancerede værktøjer, multiprocessing osv. vigtige for måleudstyr, audio- og videoinformationsbehandlingssystemer.
Som nævnt tidligere gør individuelle karakteristika såsom klokfrekvens, MIPS, MOPS, MFLOPS det muligt at evaluere ydeevnen af en DSP ret tvetydigt. Derfor, for at løse problemet med at måle og sammenligne karakteristika for forskellige DSP'er, bruges specielle sæt af test, der efterligner nogle almindelige digitale signalbehandlingsopgaver. Hver test består af flere små programmer, der er skrevet i assembler og optimeret til en given arkitektur. Disse tests kan omfatte implementering af:
Den mest autoritative testpakke i dag er BTDImark2000-testen ( BDTI DSP Kernel Benchmarks™ (BDTImark2000™) Certified Results ), som udover disse algoritmer også inkluderer en vurdering af den hukommelse, der bruges af algoritmen, systemudviklingstid og andet parametre.
Digitale signalprocessorer er bygget på basis af de såkaldte. "Harvard-arkitektur", et karakteristisk træk ved det er, at programmer og data er lagret i forskellige hukommelsesenheder - programhukommelse og datahukommelse. I modsætning til von Neumann-arkitekturen , hvor processoren har brug for mindst tre buscyklusser for at hente en instruktion og to operander, kan en DSP lave samtidige adgange til både instruktionshukommelse og datahukommelse, og ovenstående instruktion kan modtages i to buscyklusser. I virkeligheden, takket være omtanken i kommandosystemet og andre foranstaltninger, kan denne tid reduceres til en cyklus. I rigtige enheder kan instruktionshukommelsen gemme ikke kun programmer, men også data. I dette tilfælde siges DSP'en at være bygget i henhold til en modificeret Harvard-arkitektur.
Instruktionshukommelse og datahukommelse er normalt placeret på DSP-chippen. På grund af det faktum, at denne hukommelse har en relativt lille volumen, bliver det nødvendigt at bruge eksterne (i forhold til processorchippen) lagerenheder. For sådanne enheder anvendes separate kommando- og databusser ikke, da dette ville kræve en betydelig stigning i antallet af eksterne krystalstifter, hvilket er dyrt og upraktisk. Derfor sker interaktionen af DSP'en med eksterne lagerenheder over ét sæt busser uden adskillelse i kommandoer og data. Det skal også bemærkes, at adgang til ekstern hukommelse altid tager meget mere tid end intern hukommelse, så i applikationer, der er kritiske for udførelsestiden, skal sådanne adgange minimeres.
Pipelinen er en beregningstråd, der udfører en bestemt mikrooperation på hvert trin , så der er flere kommandoer på forskellige stadier af udførelse på pipelinen på et givet tidspunkt. Dette forbedrer ydeevnen.
Tilstedeværelsen af flere rørledninger implementerer en superskalær arkitektur.
Ved parallel bearbejdning af kommandoer på forskellige pipelines opnås den maksimale effekt på den samme type kommandoer, som ikke er afhængige af hinanden. Hvis programmet indeholder kommandoer af forskellige typer, introduceres ventecyklusser på pipelinen.
For at optimere belastningen af transportbånd kræves følgende:
Som følge heraf udføres kommandoerne ikke i den rækkefølge, som programmøren skrev dem ned.
En hardwaremultiplikator bruges til at reducere eksekveringstiden for en af de vigtigste DSP-operationer - multiplikationsoperationen. I processorer til generelle formål implementeres denne operation i flere skifte- og additionscyklusser og tager meget tid, og i DSP, takket være en specialiseret multiplikator, i én instruktionscyklus.
Funktionelt er multiplikatorer opdelt i to typer:
En shifter er både en enhed, der udfører en dataskiftoperation og et register, der gemmer resultatet af skiftet [2] .
Med hensyn til deres funktioner er skiftere opdelt i:
I begge tilfælde er strukturen af det register, der gemmer resultatet af skiftet, den samme som strukturen af akkumulatoren .
ForskifterfunktionerALU er en processorenhed, der under styring af en instruktionsdekoder udfører aritmetiske og logiske transformationer på data, som i dette tilfælde kaldes operander. Bitbredden af operanderne kaldes normalt størrelsen af maskinordet.
En akkumulator er et register designet til at lagre resultaterne af operationer. Arkitekturen af mange DSP'er har to akkumulatorer, hvilket gør det muligt at fremskynde udførelsen af operationer, der kræver lagring af mellemresultater. Teknisk set kan en akkumulator bestå af flere registre [2] :
Tilstedeværelsen af EXT-registret giver dig mulighed for at øge nøjagtigheden af beregningen af mellemresultater samt øge lagringsområdet for værdier, der ikke fører til overløb. Når en akkumulatorværdi er lagret i en hukommelsescelle eller almindeligt register, afrundes dens værdi til standardbredden af den pågældende celle eller register. På den anden side, hvis det er nødvendigt, kan indholdet af EXT-registret lagres separat.
Processoren understøtter direkte adressering, præ- og post-inkrement indirekte adressering og DSP-specifik cyklisk adressering og adressebit-vendende adresseringstilstande.
Det skal bemærkes, at klassificeringen nedenfor [2] er temmelig betinget, da de mange tekniske løsninger ofte ikke tillader en utvetydigt at tilskrive hver specifik enhed til en af de angivne typer. Derfor bør det følgende hellere bruges som et materiale til at forstå funktionerne i DSP-arkitekturen end til en reel klassificering af produkter.
Det er praktisk at overveje funktionerne i DSP-arkitekturen på eksemplet med en specifik digital databehandlingsalgoritme, for eksempel et FIR-filter , hvis udgangssignal kan skrives som:
, hvor
Som du nemt kan se, er udregning af resultatet et klassisk eksempel på brug af multiplikation-akkumuleringsoperationen - MAC (Y := X + A × B) .
Figuren viser to muligheder for at udføre en MAC-instruktion på en standard DSP. I den første variant er begge operander gemt i datahukommelsen, så det tager to cyklusser at hente dem, det vil sige, at udførelsestiden for n tilføjelser er 2n . I det andet tilfælde er en af operanderne gemt i programhukommelsen, så instruktionen udføres i én cyklus, og den samlede udførelsestid af løkken vil være lig med n cyklusser (det skal præciseres, at i virkeligheden, for udførelse i en cyklus, skal MAC'en udføres inde i en speciel loop-instruktion for at undgå genhentning af selve instruktionskoden, hvilket kræver en ekstra clock-cyklus). Det kan ses her, at den effektive implementering af algoritmen kræver brug af programhukommelse til at lagre data.
En af de muligheder, der giver dig mulighed for at opgive brugen af programhukommelse til datalagring, er brugen af den såkaldte. "dual-port memory", det vil sige hukommelse, der har to sæt inputbusser - to adresse- og databusser. Denne arkitektur tillader samtidig adgang til to adresser (de skal dog være i forskellige adresserbare blokke). Denne løsning bruges i DSP'er fra Motorola (DSP56000) og Lucent (DSP1600).
Med denne arkitektur er den eneste måde at forbedre ydeevnen på at øge clock-frekvensen.
"Enhanced Standard DSP'er" bruger følgende parallelitetsforbedringsteknikker til at forbedre systemets ydeevne i forhold til standard DSP'er:
Mange af disse metoder har eksisteret siden de allerførste processorer, så det er ofte umuligt entydigt at klassificere dem som "standard" eller "forbedret".
Figuren viser et eksempel på implementering af beregningen af to parallelle MAC-kommandoer. For at gøre dette indeholder DSP'en to MAC-moduler og to batterier. MAC-blokke modtager data på tre busser på samme tid, og en af værdierne er fælles for dem. Således udføres to kommandoer samtidigt:
Det særlige ved den viste løsning er, at mange DSP-algoritmer kan reduceres til udførelse af to parallelle kommandoer med én fælles faktor, for eksempel:
Nogle processorer (Lucent DSP16xxx, ADI ADSP-2116x) bruger to identiske kerner, hver med sin egen hukommelse, det vil sige, at en instruktion udføres samtidigt i to kerner med forskellige data. Dette omgår begrænsningen for at bruge fuldstændig uafhængige data.
En karakteristisk ulempe ved sådanne processorer kan betragtes som behovet for en højt kvalificeret udvikler, da effektiv brug af disse funktioner kræver programmering i assemblersprog, et godt kendskab til arkitekturen og kommandosystemet, det vil sige, at disse enheder betragtes som "uvenlige" til sprog på højt niveau.
Den største forskel mellem VLIW- processorer er, at instruktionskoderne samles til store "superinstruktioner" på kompileringsstadiet og udføres parallelt. Typisk bruger sådanne processorer en RISC-arkitektur med en fast instruktionslængde, hvor hver af dem udføres i en separat driftsenhed. De karakteristiske egenskaber ved sådanne processorer omfatter:
Normalt, hvis processoren har flere identiske moduler, er det, når du opretter et program i assembler, kun muligt at specificere typen af det nødvendige driftsmodul, og den specifikke enhed vil blive tildelt af compileren. På den ene side forenkler dette programmeringen af sådanne enheder, og på den anden side gør det det muligt at bruge deres ressourcer ret effektivt.
Superscalar-processorer er også kendetegnet ved et stort sæt parallelle driftsenheder og evnen til at udføre flere instruktioner samtidigt. Men sammenlignet med VLIW har de to fremtrædende træk:
Ved at bruge den beskrevne tilgang kan du komme uden om følgende ulemper ved VLIW:
Prisen for at løse disse problemer er en væsentlig komplikation af processorkredsløbet, hvor et modul til planlægning af instruktionsudførelse vises.
Superscalar-processorer planlægger udførelsen af instruktioner ikke kun baseret på information om arbejdsbyrden af driftsblokke, men også baseret på analysen af afhængigheder mellem data. For eksempel kan en instruktion om at gemme resultatet af en aritmetisk operation ikke udføres før selve beregningsoperationen, selvom hukommelsesadgangsmodulet i øjeblikket er ledigt. Denne funktion fører blandt andet til, at det samme sæt instruktioner kan udføres forskelligt forskellige steder i programmet, hvilket gør det umuligt at vurdere ydeevnen præcist. Dette er især vigtigt for systemer, der kører i realtid, fordi den dårligste resultatvurdering vil føre til, at processorressourcerne ikke bliver brugt fuldt ud. I disse systemer forbliver problemet med nøjagtigt at estimere ydeevnen af superskalære DSP'er åbent.
Hybride DSP'er forstås normalt som specialiserede enheder, der kombinerer funktionerne fra en mikrocontroller og en digital signalprocessor. Typisk er sådanne produkter designet til at udføre én funktion - for eksempel kontrol af elektriske motorer eller andre objekter i realtid. Et andet bredt område af deres applikation er for nylig blevet mobiltelefoni, hvor to processorer tidligere blev brugt - en konventionel til styring af enhedens funktioner (skærm, tastatur) og den anden til behandling af stemmesignaler (kodning osv.).
Generelt kan DSP'ens formål opdeles i to grupper:
"Problemorientering" refererer normalt ikke til yderligere kommandoer, men til et sæt indbyggede specialiserede perifere enheder. For eksempel kan DSP'er designet til at styre elektriske motorer indeholde PWM -signalgeneratorer på chip , industrielle LAN-controllere osv. Processorer, der bruges til at behandle stemmesignaler, indeholder ofte bitmanipulationsenheder (BMU'er) og fejlkorrektions-coprocessorer. Digitale foto- og videokameraer bruger DSP'er med MPEG1, MPEG4, JPG, MP3, AAC osv. kodnings-/afkodningsmoduler.
Til DSP-programmering bruges normalt et af to sprog - assembly og C. Hovedegenskaberne ved DSP-samlere er de samme som for konventionelle mikroprocessorsprog og kan generelt beskrives som:
På den anden side, når man bruger mellem- og højniveausprog, især C, er det muligt at forenkle og fremskynde oprettelsen af programmer betydeligt, men systemressourcerne vil blive brugt mindre effektivt sammenlignet med et program, der er skrevet udelukkende i assembler.
I virkeligheden bruges der normalt en tilgang, der kombinerer fordelene ved både højniveausprog og effektiviteten af assemblerprogrammer. Dette kommer til udtryk i, at standardbiblioteker normalt oprettes i assembler, samt kritiske dele af koden med hensyn til eksekveringstid og hukommelsesstørrelse. Samtidig kan hjælpemoduler oprettes i et sprog på højt niveau, hvilket fremskynder og forenkler udviklingen af et softwaresystem som helhed.
Interessante egenskaber ved DSP-samlere inkluderer følgende:
Normalt produceres DSP'er i familier, og produkter inden for familier har lignende assemblersprog eller endda kompatibilitet på maskinkodeniveau. Også inden for en familie bruges de samme sæt subrutinebiblioteker normalt. Som med konventionelle mikroprocessorer kan ældre modeller af DSP'er ofte udføre maskinkoden for lavere modeller, eller deres assembler inkluderer alle instruktionerne fra lavere modeller som en delmængde af deres eget instruktionssæt.
Normalt udføres fejlfinding af programmer skrevet til DSP ved hjælp af specielle værktøjer, herunder softwaresimulatorer og emulatorer . De inkluderer også ofte profileringsværktøjer (måling af hastigheden for udførelse af kodeblokke).
processorteknologier | Digitale|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkitektur | |||||||||
Instruktionssæt arkitektur | |||||||||
maskinord | |||||||||
Parallelisme |
| ||||||||
Implementeringer | |||||||||
Komponenter | |||||||||
Strømstyring |