I processori di memoria digitali (DSP) sono microprocessori specializzati progettati per gestire le attività di elaborazione del segnale in tempo reale con un'efficienza eccezionale. A differenza delle CPUs di uso generale che definiscono la pianificazione delle attività e la previsione di branch, i DSP sono progettati per le operazioni aritmetiche di scopo deterministico e ad alto rendimento, ovvero per le operazioni di elaborazione di errori (MAC) di elaborazione.

Il ruolo fondamentale della memoria nei carichi di lavoro di elaborazione dei segnali

I algoritmi come i filtri di risposta a impulsi finiti (FIR), i trasformati veloci di Fourier (FFT), la convoluzione e la moltiplicazione di matrice operano su grandi array di dati campionati. Questi algoritmi mostrano un modello di accesso prevedibile e ripetitivo: una sequenza di coefficienti (scontri nella memoria) è ripetutamente moltiplicata con i campioni di tempo in arrivo.

Per l'audio a 48 kHz, il processore deve completare il suo algoritmo entro circa 20 microsecondi. Per il video a 30 fotogrammi al secondo con risoluzione 1080p, tale requisito diventa dieci di millisecondi per frame, e spesso molto più stretto per la lavorazione sub-frame. La latenza della memoria e la larghezza di banda dettano direttamente se queste scadenze possono essere soddisfatte.

Tipi di memoria core in sistemi DSP

Registra la memoria

I registri sono la memoria più veloce in qualsiasi DSP. In genere implementato come infradito o piccoli array SRAM all'interno del core del processore, i registri tengono gli operandi che sono attivamente calcolati. La maggior parte dei core DSP hanno un insieme dedicato di accumulatori (ad esempio, registri a 40 bit o a 64 bit per evitare il troppo pieno nelle operazioni MAC) e un insieme di registri di indirizzi per l'ottimizzazione dei segnali aritmetici.

Memoria della cache

La memoria Cache è un piccolo SRAM veloce che memorizza copie di dati o istruzioni frequentemente accessibili dalla memoria principale. I DSP possono includere cache di istruzioni separate (I-cache) e cache di dati (D-cache) per evitare la contesa. Tuttavia, le cache introducono imprevedibilità—una cache manca può bloccare il pipeline per decine o centinaia di cicli—che è problematico per sistemi in tempo reale difficili.

SRAM on-Chip (Memoria di Grattacielo)

A differenza delle cache, la memoria dei graffi è gestita esplicitamente dal software, i dati devono essere spostati dal programmatore o dal compilatore. Questo comportamento deterministico rende la scelta preferita per l'elaborazione del segnale in tempo reale, dove il tempo di esecuzione peggiore (WCET) deve essere conosciuto.

Memoria esterna (DRAM/Flash)

La memoria esterna, solitamente DDR SDRAM (soprattutto LPDDR per dispositivi mobili/embedded), fornisce una grande capacità—gigabyte—a costo di alta latenza (tenute di nanosecondi a 100+ ns) e una maggiore energia per accesso.Per molte applicazioni DSP, la memoria esterna contiene grandi array di dati che superano lo storage su chip, come fotogrammi video, buffer audio o tabelle di ricerca.

Modelli di architettura della memoria in DSP

Architettura di Harvard

L'architettura di Harvard separa la memoria di istruzioni e la memoria dei dati in bus fisicamente distinti, permettendo l'accesso simultanea a entrambi durante un ciclo di clock unico. Un DSP tipico con architettura di Harvard può prendere un'istruzione dalla memoria del programma (spesso su chip flash o SRAM) mentre legge due parole di dati dalla memoria dei dati, uno per il coefficiente e uno per il campione.

Von Neumann Architettura

L’architettura von Neumann (o Princeton) utilizza un unico spazio di memoria condiviso per istruzioni e dati, servito da un bus. Questo semplifica la progettazione del sistema e la mappatura della memoria, ma crea un collo di bottiglia fondamentale (spesso chiamato “von Neumann bottleneck”). In un contesto DSP, il puro von Neumann è raramente visto perché non può fornire sia un’istruzione che due strumenti di elaborazione dati per ciclo.

Architettura di Harvard modificata (con istruzioni e cache di dati)

Per colmare il divario tra il parallelismo di Harvard e la flessibilità di von Neumann, molti DSP implementano un'architettura di Harvard modificata. Questo utilizza istruzioni separate e databus a livello di base, ma la gerarchia di memoria (compresa cache e memoria principale) è unificata. Ad esempio, una cache di istruzione L1 si trova sul bus di istruzioni, e una cache di dati L1 si trova sul databus, ma entrambi forniscono le linee da un L2RM condiviso.

VLIW e SIMD Implicazioni

I processori di lunga istruzione (VLIW) come il TI C6000, imballano più operazioni in una sola istruzione (ad esempio, due MAC più carico/store). Per sostenere il parallelismo VLIW, l'architettura della memoria deve fornire abbastanza porte di memoria per alimentare tutte le unità funzionali. Ciò spesso significa più banche di memoria, ciascuna con la propria porta di lettura.

Gerarchie e strategie di memoria avanzate

Multi-Level Cache e Scratchpad Hybrids

I DSP moderni combinano spesso una piccola cache L1 (ad esempio, 16 KB di istruzione + 16 KB di dati) con un più grande SRAM L2 (ad esempio, 256 KB) che può essere configurato come cache o scratchpad. Ad esempio, il core TI C66x consente di dividere la memoria L2 tra cache e SRAM su base blocco-by-blocco.

DMA (accesso diretto alla memoria) Motori

I controller DMA sono parte integrante dell'efficienza della memoria DSP, permettono di trasferire i dati tra memoria esterna e memoria on-chip senza intervento della CPU. Un modello tipico è quello di utilizzare uno schema a doppio buffer (ping-pong): mentre il DSP elabora i dati dal buffer A, il DMA riempie il buffer B dalla memoria esterna, e una volta che l'elaborazione su A è fatta, i ruoli scambiano.

Memoria Bancario e Interleaving

Per fornire un elevato livello di banda, il SRAM on-chip è spesso diviso in più banche (ad esempio, 8 o 16). Ogni banca ha il proprio porto di lettura / scrittura, così gli accessi simultanei multipli sono possibili fino a quando si rivolgono a diverse banche. Interleaving—spreading indirizzi successivi attraverso banche di banche—riduce conflitti bancari per i modelli di accesso sequenziale (comune in loop DSP).

Buffer Loop (Supporto per Loop Zero-Overhead)

Molti DSP includono piccoli buffer di memoria veloci, progettati appositamente per i loop software. Un buffer di loop può contenere un piccolo kernel (ad esempio, 128-2048 istruzioni) che viene eseguito ripetutamente senza uscire dalla memoria principale. Combinato con modalità di indirizzamento per il buffering circolare, questo elimina l'accesso alla memoria in testa per i loop stretti - un evento comune nell'elaborazione dei segnali.

Coerenza Cache in DSP multicore

Quando più core DSP condividono i dati (ad esempio, in un radar o in un'applicazione MIMO), i protocolli di coerenza della cache prevengono i dati stanti.

Impatto di Architettura della Memoria su Metrics di Prestazioni Chiave

L'architettura di memoria influenza direttamente quattro metriche di performance critiche: throughput (operazioni al secondo), latenza (tempo al primo risultato), consumo di energia e determinismo in tempo reale. Per illustrare, considerare un filtro FIR della lunghezza N. Con un'architettura di memoria ideale (Harvard + due porte di lettura + accesso a ciclo singolo), ogni rubinetto richiede un ciclo di carico, uno per il carico di campione, e uno per MAC—carica efficacemente tre cicli per il doppio.

Per l'elaborazione FFT, l'algoritmo Cooley-Tukey prevede operazioni di farfalla che leggono due valori complessi e un fattore di twiddle, quindi scrivono due risultati. Con una singola porta di memoria, questo richiede quattro letture e due scritture per farfalla, prendendo almeno sei cicli. Con un'architettura a doppia banca (una per i dati, una per i coefficienti), le letture possono essere sovrapposte, riducendo costantemente a tre cicli per l'esecuzione della memoria.

Nelle telecomunicazioni, gli algoritmi di rilevamento dei simboli (Viterbi, MLSE) richiedono un ampio backtracking con accesso casuale alle metriche di stato. Qui, SRAM con bassa latenza è essenziale per mantenere la velocità del simbolo in tempo reale. Una singola cache miss potrebbe causare una violazione dei tempi, così i designer spesso pin la tabella metrica di stato in gratta e vinci.

Considerazioni di progettazione per gli ingegneri di sistema

Quando si progetta un sistema basato su DSP, gli ingegneri devono dividere i dati dell'applicazione attraverso la gerarchia della memoria.

  • Data placement:[ Quali array sono posizionati in SRAM on-chip vs DRAM esterno? In genere, il set di lavoro per l'algoritmo più eseguito (ad esempio, coefficienti di filtro, variabili di stato) deve adattarsi alla memoria del chip.
  • Mapping di memoria:[] Utilizzare i registri dell'attributo di memoria del DSP per definire le politiche di caching (ad esempio, write-through, write-back, non-cacheable).Per i dati condivisi, utilizzare non-cacheable o allocare in SRAM condiviso per evitare problemi di coerenza.
  • Utilizzando gli script di linker:[] Definire le sezioni di memoria nel file di comando del linker. Ad esempio, posizionare il .text in SRAM interno per l'esecuzione rapida, e i dati in DRAM esterno per grandi buffer. Alcuni DSP supportano DMA per copiare i dati critici dal flash al SRAM durante l'avvio.
  • buffering doppio con DMA:[] Allocate due buffer in SRAM on-chip. Configurare un canale DMA per riempirne uno mentre il DSP elabora l'altro. Assicurarsi che le dimensioni del trasferimento DMA e gli indirizzi di origine/destinazione siano allineati alle larghezze del bus per massimizzare il throughput.
  • Choosing memoria esterna:[ Per l'elevata larghezza di banda, considerare LPDDR4 o HBM (memoria ad alta larghezza di banda) per applicazioni ad alta intensità di memoria come radar o banda base 5G. Per bassa potenza, utilizzare il flash NOR seriale per il codice e l'esecuzione-in-place (XIP) se il DSP lo supporta.
  • Gestione dei rifiuti:[[]] Utilizzare il clock gating sulle banche di memoria che non sono in uso (ad esempio, le interfacce esterne inattivo possono essere messe in auto-rifrescamento). Molti DSP consentono di scalare la tensione per SRAM on-chip per ridurre la potenza dinamica.

Le direzioni future in DSP Memory Architecture

Applicazioni DSP emergenti come l'inferenza di apprendimento profondo sui dispositivi edge, l'elaborazione video in tempo reale 4K/8K e i requisiti di memoria push (SDR) definiti software.

  • 3D memoria impilata (HBM, HBM2E): Già usato in GPU di fascia alta, HBM è integrato in DSP e FPGAs per sistemi che richiedono una larghezza di banda massiccia (fino a 460 GB/s per stack).
  • La memoria non volatile (eNVM):[ Le tecnologie emergenti come MRAM o ReRAM possono sostituire SRAM on-chip per lo storage di codice, riducendo il tempo di avvio e eliminando la necessità di flash esterno.
  • Gli acceleratori di rete neurali con memoria di peso locale:[ DSP progettati per l'inferenza dell'AI includono un buffer di peso locale (spesso SRAM o SRAM-like) che può contenere matrici di peso per evitare ripetute letture da memoria esterna. Questo è analogo a un grattacielo, ma ottimizzato per i modelli di convoluzione.
  • Gerarchie di memoria adattiva:[] I futuri DSP possono distribuire la memoria riconfigurabile (ad esempio, eFPGA con memoria incorporata) che può essere riadattata come cache, gratta e vinci, o FIFO a seconda del carico di lavoro.
  • Cacchetta gestita da software:** Alcune architetture di ricerca propongono di sostituire la cache hardware con memorie controllate dal software per sezioni critiche, mantenendo la cache per sezioni non critiche.

Conclusioni

L'architettura della memoria è la colonna portante dell'efficienza del processore DSP. Una profonda comprensione dei trade-off tra registro, cache, on-chip SRAM e memoria esterna permette ai progettisti di sistema di ridurre la latenza di accesso ai dati, massimizzare il throughput e ridurre il consumo di energia. La scelta del modello di architettura (Harvard vs modificato Harvard vs von Neumann), l'uso di strategie avanzate come DMA, banking e buffer loop, e l'attento di partizionamento dei dati