Table of Contents
Digitale Signaalprocessoren (DSP's) zijn gespecialiseerde microprocessoren ontworpen om real-time signaalverwerkingstaken met uitzonderlijke efficiëntie te verwerken. In tegenstelling tot algemeen inzetbare CPU's die takenplanning en branchvoorspelling prioriteren, zijn DSP's ontworpen voor deterministische, hoog-doorvoer rekenbewerkingen.Meestal vermenigvuldigen-accumuleren (MAC) operaties . De belangrijkste factor die bepaalt of een DSP zijn theoretische piekprestaties kan ondersteunen is de geheugenarchitectuur. Het geheugensubsysteem bepaalt hoe snel operanden kunnen worden opgehaald uit opslag, hoe intermediaire resultaten worden gebufferd, en hoe de definitieve gegevens worden geschreven. Een lacune tussen de processors rekeneenheden en het geheugensysteem creëert een knelpunt, het vertragen van de pijpleiding en het verspillen van kracht. Dit artikel biedt een uitgebreide diep-duik in de geheugenarchitectuur van moderne DSP's, waarbij de verschillende soorten geheugen worden uitgelegd, de architectonische modellen die deze bepalen, geavanceerde hiërarchische strategieën, en de directe impact op deze systeemeigenschappen.
De fundamentele rol van het geheugen bij de verwerking van signalen
Signaalverwerkingswerken zijn fundamenteel data-intensief. Algoritmes zoals eindige impulsrespons (FIR) filters, snelle Fourier transformaties (FFT's), convolutie en matrix vermenigvuldiging werken op grote arrays van bemonsterde data. Deze algoritmen vertonen een voorspelbare, repetitieve toegangspatroon: een opeenvolging van coëfficiënten (opgeslagen in het geheugen) wordt herhaaldelijk vermenigvuldigd met inkomende data monsters. De rekenkundige logica-eenheid (ALU) van een DSP kan een MAC-operatie uitvoeren in een enkele klokcyclus, maar alleen als zowel de coëfficiënt als het gegevensmonster tegelijkertijd beschikbaar zijn. Als het geheugensubsysteem niet kan leveren de twee operands per cyclus, de pijp stalt, en de effectieve doorvoer druppels.
Bovendien, real-time beperkingen eisen dat de verwerking bij te houden met de sample rate. Voor audio op 48 kHz, de processor moet zijn algoritme binnen ongeveer 20 microseconden voltooien. Voor video bij 30 frames per seconde met 1080p resolutie, die eis wordt tientallen milliseconden per frame . en vaak veel strakker voor sub-frame verwerking . Geheugen latency en bandbreedte direct bepalen of deze deadlines kunnen worden voldaan . Naast ruwe snelheid , stroomverbruik is een kritische zorg . Elke geheugen toegang verbruikt energie , en off-chip geheugen toegangen kunnen orden van grootte duurder zijn dan op de chip toegangen . Daarom , een efficiënte geheugen architectuur minimaliseert de noodzaak om uit de chip te gaan door het gebruik van snelle , low-power on-chip geheugen te maximaliseren .
Kerngeheugentypen in DSP-systemen
Geheugen registreren
Registers zijn het snelste geheugen in een DSP. De meeste DSP-kernen hebben een speciale set accu's (bijv. 40-bit of 64-bit registers om overflow in MAC operaties te voorkomen) en een set adresregisters voor pointer rekenen. Toegangslatentie is één klokcyclus of minder, maar de totale capaciteit is zeer klein bij veel minder dan 256 bytes. De toewijzing van het register is volledig onder controle van de programmeur (of compileroptimalisatie), en het efficiënte registergebruik is een kenmerk van hoog presterende DSP-code.
Cachegeheugen
Cache geheugen is een kleine, snelle SRAM die kopieën van vaak toegankelijke gegevens of instructies uit het hoofdgeheugen opslaat. DSP's kunnen bestaan uit aparte instructie caches (I-cache) en data caches (D-cache) om te voorkomen dat argument. Echter, caches introduceren onvoorspelbaarheid een cache miss kan de pijpleiding voor tientallen of honderden cycli te vertragen die problematisch is voor harde real-time systemen. Als gevolg, veel high-reliability DSP-toepassingen uitschakelen caches of gebruiken ze alleen in een ..lock-modus, waar kritieke code en gegevens worden gepind in cache. Wanneer caches worden gebruikt, hun grootte, associatie, en lijngrootte drastisch beïnvloeden hit rates. Typische DSP caches variëren van 4 KB tot 512 KB per niveau, met niveaus nul tot en met twee (L0, L1, L2).
On-Chip SRAM (Scratchpad-geheugen)
On-chip statische RAM (SRAM), vaak kraspad geheugen genoemd, biedt voorspelbare, lage-latency opslag direct op de processor die. In tegenstelling tot caches, scratchpad geheugen wordt expliciet beheerd door software . gegevens moeten worden verplaatst in en uit door de programmeur of compiler. Dit deterministisch gedrag maakt scratchpad de voorkeur voor real-time signaalverwerking waar worst-case uitvoeringstijd (WCET) moet worden bekend. On-chip SRAM kan worden verdeeld in meerdere banken, elk toegankelijk door verschillende functionele eenheden parallel. Typische maten variëren van 32 KB tot verschillende megabytes, afhankelijk van de DSP-familie (bijv., Texas Instruments C6000 serie biedt tot 8 MB on-chip SRAM).
Extern geheugen (DRAM/Flash)
Extern geheugen, meestal DDR SDRAM (vooral LPDDR voor mobiele / inbedded), biedt grote capaciteit .gigabytes . tegen de kosten van hoge latency (tienen nanoseconden tot 100+ ns) en hogere energie per toegang . Voor veel DSP-toepassingen , extern geheugen bevat grote data arrays die groter zijn dan op-chip opslag , zoals video frames , audio buffers , of look-up tabellen . Flash geheugen (NOR of NAND) wordt gebruikt voor het opslaan van programma code en constante gegevens die blijven bestaan over de hele stroomcycli . Toegang tot extern geheugen vereist het gebruik van geheugen controllers die bus arbitrage , refreshcycles en gegevens ordering beheren . Geavanceerde DSP's beschikken over meerdere externe geheugen interfaces (bijv , EMIF , DDR2/3/4 LPDDR4) om de beschikbare bandbreedte te verhogen .
Geheugenarchitectuurmodellen in DSP's
Harvard Architectuur
De Harvard architectuur scheidt het instructiegeheugen en het datageheugen in fysiek verschillende bussen, waardoor tegelijkertijd toegang tot beide tijdens een enkele klokcyclus. Een typische DSP met Harvard architectuur kan een instructie uit programmageheugen (vaak on-chip flits of SRAM) halen tijdens het lezen van twee data woorden uit datageheugen . een voor de coëfficiënt en een voor het monster. Dit is de basis van een cyclus MAC-uitvoering. De meeste moderne DSP's (bijv. Analog Devices SHARC, TI C55x, C6000) gebruiken een aangepaste Harvard architectuur waar de instructie en databussen zijn gescheiden, maar kunnen worden gekoppeld voor flexibiliteit.
Von Neumann Architectuur
De Von Neumann (of Princeton) architectuur gebruikt een gedeelde geheugenruimte voor instructies en gegevens, geserveerd door één bus. Dit vereenvoudigt systeemontwerp en geheugenkaart, maar creëert een fundamenteel knelpunt (vaak de .v.n Neumann-knelpunt genoemd). In een DSP-context wordt puur von Neumann zelden gezien omdat het niet zowel een instructie als twee data operands per cyclus kan leveren. Echter, sommige goedkope DSP's of microcontrollers gebruikt voor eenvoudige signaalverwerkingstaken (zoals de Cortex-M4F) gebruiken een von Neumann-achtige geheugenkaart met aparte bussen alleen voor strak gekoppeld geheugen. De trade-off is verminderde prestaties maar lagere siliciumkosten.
Gewijzigde Harvard Architectuur (met instructie en datacaches)
Om de kloof tussen Harvards parallelisme en von Neumanns flexibiliteit te overbruggen, implementeren veel DSP's een aangepaste Harvard architectuur. Dit maakt gebruik van aparte instructie en databussen op het kernniveau, maar de geheugenhiërarchie (inclusief caches en hoofdgeheugen) is verenigd. Bijvoorbeeld, een L1-instructiecache zit op de instructiebus, en een L1-gegevenscache zit op de databus, maar ze beide bron hun lijnen uit een gedeelde L2-cache of extern geheugen. Dit maakt het mogelijk de kern instructies en gegevens parallel uit de caches te halen, terwijl de backing geheugen is verenigd voor eenvoud. Deze architectuur wordt gebruikt in high-performance DSP+ARM SoCs zoals de TI OMAP of Qualcomm Hexagon.
VLIW en SIMD Implicaties
Very Long Instruction Word (VLIW) -processoren, zoals de TI C6000, verpakken meerdere bewerkingen in één instructie (bijv. twee Macs plus load/store). Om VLIW parallellisme te ondersteunen, moet de geheugenarchitectuur voldoende geheugenpoorten bieden om alle functionele eenheden te voeden. Dit betekent vaak meerdere geheugenbanken, elk met een eigen leespoort. Bijvoorbeeld, de C6000 heeft twee banken datageheugen (A-side en B-side) verbonden met twee datapaden, waardoor gelijktijdige ladingen van beide banken mogelijk zijn. Ook moeten SIMD (Single Instruction Multiple Data) eenheden brede databussen (bijv. 128-bit of 512-bit) nodig hebben om meerdere datawoorden in één cyclus te laden. Geheugenarchitecturen moeten worden afgestemd op de breedte van het datapad.
Geavanceerde Geheugen-Hierarchies en Strategieën
Multi-Level Cache en Scratchpad Hybriden
Moderne DSP's combineren vaak een kleine L1-cache (bijv. 16 KB instructie + 16 KB gegevens) met een grotere L2 SRAM (bijv. 256 KB) die kan worden geconfigureerd als cache of kraspad. Zo maakt de TI C66x kern het mogelijk om het L2-geheugen op blok-voor-blok basis te partitioneren tussen cache en SRAM. Deze hybride aanpak geeft de ontwikkelaar controle over de meest prestatiekritische gegevens, terwijl minder kritische data profiteren van caching. De L2 kan ook worden gedeeld onder meerdere kernen in een multicore DSP.
Motoren met DMA (Directe Geheugentoegang)
DMA controllers zijn integraal voor de DSP geheugenefficiëntie. Ze laten gegevensoverdracht tussen extern geheugen en on-chip geheugen zonder CPU interventie plaatsvinden. Een typisch patroon is om een dubbelbuffer (ping-pong) schema te gebruiken: terwijl de DSP gegevens van buffer A verwerkt, vult de DMA buffer B uit extern geheugen, en zodra verwerking op A is gedaan, de rollenruil. Dit verbergt de latentie van externe geheugentoegang en houdt de DSP pipeline bezig. DMA functies zoals 2D adressing, staplengte en programmeerbare prioriteit maken een efficiënte behandeling van multidimensionale arrays (bijv. video frames).
Geheugenbanken en Interfairs
Om een hoge bandbreedte te bieden, wordt SRAM op de chip vaak in meerdere banken verdeeld (bijv. 8 of 16). Elke bank heeft zijn eigen lees-/schrijfpoort, zodat meerdere gelijktijdige toegangen mogelijk zijn zolang ze zich richten op verschillende banken. Inter- en ..verspreiding opeenvolgende adressen over banken vermindert bankconflicten voor opeenvolgende toegangspatronen (gewoonlijk in DSP loops). Bijvoorbeeld, een 512 KB SRAM kan worden georganiseerd als 8 banken van 64 KB elk, met adressen modulo 8 verdeeld over banken. Voor een FIR filter, coëfficiënten van de ene bank en monsters van de andere kunnen worden gelezen in parallel. Geavanceerde geheugencontrollers ondersteunen ook bank churning en rij hamer mitigming in externe DRAM.
Loopbuffers (Support van zero-overhead-lus)
Veel DSP's bevatten kleine, snelle geheugenbuffers die speciaal zijn ontworpen voor softwarelussen. Een lusbuffer kan een kleine kernel bevatten (bijv. 128 tot 2048 instructies) die herhaaldelijk wordt uitgevoerd zonder op te halen uit het hoofdgeheugen. In combinatie met adresseringsmodi voor circulaire buffering, elimineert dit de toegang tot het geheugen voor strakke loops een veel voorkomende gebeurtenis in signaalverwerking. Bijvoorbeeld, de TI C5500 heeft een 4 KB instructie cache die ook kan werken als een lusbuffer. Deze architectuur vermindert het stroomverbruik omdat de hoofdgeheugenbus niet werkt tijdens de lusuitvoering.
Cache-coherency in Multicore DSP's
Wanneer meerdere DSP cores gegevens delen (bijvoorbeeld in een radar of MIMO-toepassing), worden cachecoherency protocollen gebruikt om oude data te voorkomen. Hardware snoepen of software-beheerde coherentie (bijvoorbeeld met behulp van cache ongeldigheden) worden gebruikt. Sommige DSP's vermijden caches helemaal in het voordeel van scratchpad om coherency overhead te omzeilen. Bijvoorbeeld, Freescale. MSC8156 (nu NXP) gebruikt een ..no cache aanpak met een 512 KB gedeeld SRAM. De trade-off is een verhoogde programmeur inspanning om gegevensbewegingen te beheren, maar ...
Impact van geheugenarchitectuur op prestatie-metrics
De geheugenarchitectuur beïnvloedt direct vier kritische prestatiemetrics: doorvoer (bewerkingen per seconde), latency (tijd tot eerste resultaat), stroomverbruik en real-time determinisme. Om te illustreren, overwegen een FIR-filter van lengte N. Met een ideale geheugenarchitectuur (Harvard + twee leespoorten + toegang tot één cyclus), elke kraan vereist een cyclus voor coëfficiënt belasting, een voor monsterbelasting, en een voor MAC outcomely drie cycli per tap. Door het gebruik van een dubbele lading instructie, die kan worden gereduceerd tot een cyclus per tik. Als geheugen niet beide operanden elke cyclus kan leveren, de doorvoersnelheid daalt uitermate. Voor 1000-tap FIR bij 48 kHz bemonstering, vereist doorvoercapaciteit 48 miljoen MAC per seconde .
Voor de verwerking van de waarde van de waarde van de waarde van de activa omvat het algoritme van Cooley-Tukey vlinders die twee complexe waarden en een twdle factor lezen, dan twee resultaten schrijven. Met één geheugenpoort, dit vereist vier lezingen en twee schrijfsels per vlinder, die ten minste zes cycli duren. Met een dual-bank architectuur (een voor gegevens, een voor coëfficiënten), kunnen de leeswaarden worden overlapt, waardoor ze worden teruggebracht tot drie cycli per vlinder. Energieverbruik schalen ruwweg lineair met geheugentoegangen per operatie. Een goed afgestemde geheugenhiërarchie kan totale toegangen verminderen met een factor 10
In telecommunicatie, symbool detectie algoritmen (Viterbi, MLSE) vereisen uitgebreide backtracking met willekeurige toegang tot de status metrics. Hier, SRAM met lage latentie is essentieel om real-time symbool rate te handhaven. Een enkele cache miss kan leiden tot een tijdovertreding, dus ontwerpers vaak spelden de staat metrieke tabel in scratchpad.
Ontwerpoverwegingen voor systeemingenieurs
Bij het ontwerpen van een DSP-gebaseerd systeem, moeten ingenieurs de applicaties gegevens over de geheugenhiërarchie verdelen. Belangrijkste beslissingen zijn onder meer:
- Gegevensplaatsing: Welke arrays worden geplaatst in op-chip SRAM vs extern DRAM? Typisch, de werkende set voor het meest vaak uitgevoerde algoritme (bijv. filtercoëfficiënten, statusvariabelen) moet passen in on-chip geheugen. Minder vaak benaderde tabellen (bijv. opzoektabellen voor companding) kunnen buiten-chip.
- Geheugen mapping: Gebruik de DSP
- Gebruik van koppelingsscripts: Definieer geheugensecties in het koppelingscommandobestand. Plaats bijvoorbeeld .text in interne SRAM voor snelle uitvoering, en .data in extern DRAM voor grote buffers. Sommige DSP's ondersteunen DMA om kritieke gegevens te kopiëren van flits naar SRAM tijdens het opstarten.
- Dubbele buffering met DMA: Toewijzen van twee buffers in on-chip SRAM. Stel een DMA-kanaal in om het ene te vullen terwijl de DSP de andere verwerkt. Zorg ervoor dat de DMA-overdrachtsgrootte en bron/bestemmingsadressen zijn afgestemd op busbreedtes om de doorvoer te maximaliseren.
- Het externe geheugen wordt gekozen: Voor een hoge bandbreedte, overwegen LPDDR4 of HBM (hoge bandbreedte geheugen) voor geheugen-intensieve toepassingen zoals radar of 5G baseband. Voor een laag vermogen, gebruik seriële NOR flitser voor code en uitvoeren-in-place (XIP) als de DSP ondersteunt.
- Power management: Gebruik klokgating op geheugenbanken die niet in gebruik zijn (bijvoorbeeld, stationaire externe interfaces kunnen in zelfvernieuwing worden gezet). Veel DSP's laten spanningsschalen voor op-chip SRAM toe om dynamisch vermogen te verminderen.
Toekomstige aanwijzingen in DSP Geheugenarchitectuur
Opkomende DSP-toepassingen zoals diep leren gevolgtrekkingen op randapparatuur, real-time 4K/8K videoverwerking, en software-gedefinieerde radio (SDR) push geheugen eisen verder. Verschillende trends zijn zichtbaar:
- 3D gestapeld geheugen (HBM, HBM2E): HBM wordt al gebruikt in high-end GPU's, wordt geïntegreerd in DSP's en FPGA's voor systemen die enorme bandbreedte vereisen (tot 460 GB/s per stack). De nabijheid vermindert latentie en vermogen.
- On-chip niet-vluchtig geheugen (eNVM): Opkomende technologieën zoals MRAM of ReRAM kunnen op-chip SRAM vervangen voor code opslag, het verminderen van de opstarttijd en het elimineren van de behoefte aan externe flits. Deze herinneringen zijn bijna zo snel als SRAM maar bewaren gegevens zonder stroom.
- Neural netwerk acceleratoren met lokaal gewicht geheugen: DSP's ontworpen voor AI-inferentie omvatten een lokale gewicht buffer (vaak SRAM of SRAM-achtig) die gewicht matrices kan houden om herhaalde lezingen uit extern geheugen te voorkomen. Dit is analoog aan een krasblok, maar geoptimaliseerd voor convolutie patronen.
- Adaptive memory hiërarchieën: Toekomstige DSP's kunnen herconfigureerbaar geheugen (bijvoorbeeld eFPGA met ingebed geheugen) inzetten dat kan worden hergebruikt als cache, scratchpad of FIFO afhankelijk van de werklast. Dit zou runtime optimalisatie mogelijk maken.
- Software-beheerde cache:** Sommige onderzoeksarchitecturen stellen voor hardware-cache te vervangen door software-gestuurde herinneringen voor kritieke secties terwijl de cache voor niet-kritische secties behouden blijft. Deze hybride benadering zou het beste van beide werelden kunnen bieden.
Conclusie
Geheugenarchitectuur is de ruggengraat van de efficiëntie van DSP-processoren. Een diep begrip van de afwegingen tussen register, cache, on-chip SRAM en extern geheugen stelt systeemontwerpers in staat om datatoegangslatentie te minimaliseren, de doorvoer te maximaliseren en het energieverbruik te verminderen. De keuze van architectuurmodel (Harvard vs. Harvard vs. von Neumann), het gebruik van geavanceerde strategieën zoals DMA, bankieren en lusbuffers, en zorgvuldige verdeling van gegevens over de geheugenhiërarchie zijn allemaal essentiële stappen in het bereiken van real-time signaalverwerkingsdoelstellingen. Naarmate toepassingen veeleisender worden met hogere framesnelheden, bredere bandbreedtes en complexere algoritmes als HBM, on-chip NVM, en adaptieve hiërarchieën zullen DSP-prestaties verder blijven drijven. Engineers die deze principes beheersen, zullen goed uitgerust zijn met ontwerpsystemen die zowel krachtig als efficiënt zijn.
- Texas Instruments: Understanding DSP Memory Architecture (SPRAA06)
- Analoge apparaten: SHARC Processor Geheugenarchitectuur
- IEEE Paper: Geheugenarchitectuur voor DSP-processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- Xilinx Witboek: Hoge bandbreedte geheugen voor DSP-toepassingen