Table of Contents
Introduzione ai codici Parity-Check a bassa densità
I codici Parity-Check (LDPC) sono tra i più potenti codici di correzione degli errori nelle moderne comunicazioni digitali. Introdotti da Robert Gallager nella sua tesi di dottorato del 1960, questi codici sono stati ampiamente dimenticati per decenni prima di essere riscoperti nella metà degli anni novanta. La loro capacità di avvicinarsi al limite di Shannon con la complessità di decodifica pratica ha fatto loro la maggior parte dei sistemi, dalle trasmissioni televisive satellitari a uno storage a 5G New Radio e a chiave.
In ambienti ad alto rendimento, la decodifica basata sul software non può tenere il passo. Poiché i tassi di dati si salgono verso 100 Gbps e oltre nelle reti di trasporto ottico, le richieste sui decodificatori LDPC diventano estreme, questo ha spinto l'industria verso acceleratori hardware dedicati che sfruttano il parallelismo ad ogni livello.
Tecnologia aggiornata:[] Per una panoramica dei fondamentali del codice LDPC, vedere l'articolo Wikipedia sui codici LDPC[.
Sfondo teorico: Ricodizioni degli algoritmi
Prima di esaminare le architetture hardware, è essenziale capire gli algoritmi che soggiaceno la decodifica LDPC. L'algoritmo più ampiamente usato è il decoder di propagazione delle credenze (BP), noto anche come algoritmo di somma-prodotto.
Il costo computazionale di BP è sostanziale a causa delle funzioni tangenti iperboliche richieste per i calcoli di probabilità. Un'approssimazione pratica è l'algoritmo di minimo consumo, che sostituisce la funzione complessa con operazioni di minimo e di segno. Mentre questo comporta una leggera perdita di prestazioni, la semplificazione è fondamentale per l'implementazione hardware ad alta velocità.
La natura iterativa di questi algoritmi significa che la latenza decodifica è direttamente proporzionale al numero di iterazioni e al tempo per iterazione. Le architetture parallele mirano a ridurre il tempo per iterazione eseguendo contemporaneamente più aggiornamenti, o sovrapponendo iterazioni attraverso pipelining.
Architettura tradizionale e loro limitazioni
I decodificatori LDPC dell'hardware primitivo hanno usato un approccio completamente sequenziale: un'unità di elaborazione singola aggiorna ogni nodo variabile a sua volta, poi ogni nodo di controllo a sua volta, ripetendo fino alla convergenza. Questa architettura seriale richiede le risorse hardware meno – solo un'unità di calcolo – ma soffre di elevata latenza e bassa produttività.
In architetture seriali, tutti i messaggi intermedi devono essere memorizzati in memoria on-chip e a cui si accede ripetutamente. Questo crea un collo di bottiglia, poiché i tempi di accesso alla memoria diventano il fattore dominante della durata dell'iterazione. Inoltre, il programma di aggiornamento sequenziale non sfrutta il fatto che molti aggiornamenti variabili e di controllo nodo sono indipendenti e potrebbero essere calcolati contemporaneamente.
L'inefficienza dei metodi seriali ha motivato lo sviluppo di decodificatori parzialmente e completamente paralleli, la sfida è aumentare il parallelismo senza causare la contention delle risorse o violare il programma di passaggio dei messaggi necessari per la convergenza.
Parallel Decoding Architectures: Stato dell'Arte
I decoder LDPC moderni impiegano una varietà di tecniche parallele, spesso in combinazione. I più importanti approcci sono la decodifica a strati, la lavorazione conduttiva e le architetture completamente parallele.
Decodifica a strati
La disacco stratificato riorganizza la matrice di controllo paritario in strati—tipicamente righe o gruppi di righe—che corrispondono a sottoinsiemi non sovrapposti di equazioni di controllo. All'interno di ogni strato, tutti gli aggiornamenti di nodo variabili che toccano quel livello possono essere elaborati contemporaneamente, a condizione che non condividono lo stesso nodo variabile.
Mentre un programma di inondazione standard aggiorna tutti i nodi variabili, tutti i nodi di controllo per iterazione, il programma stratificato aggiorna sia i nodi variabili e di controllo all'interno di ogni strato in un unico passaggio. Questo riduce efficacemente il numero di iterazioni richieste da un fattore di due o più. Ad esempio, un decoder stratificato può convergere in 5-10 iterazioni in cui un decoder di inondazione ha bisogno di 20–30.
Poiché solo i messaggi per uno strato devono essere memorizzati alla volta, i requisiti di memoria sono più piccoli che in progetti completamente paralleli, rendendo la decodifica a strati attraente per l'implementazione FPGA dove il blocco RAM è limitato.
Esempio:[] Un decoder a strati per un codice (64800, 64800–17280) utilizzato in DVB-S2 può raggiungere i throughput superiori a 1 Gbps su Xilinx FPGAs moderno, come documentato in questa carta IEEE su decodificatori LDPC ad alta velocità
Lavorazione del tubo
Il pipelining è una classica tecnica di progettazione digitale che rompe un calcolo in più fasi, ciascuno completando in un ciclo di clock, con registri tra le fasi che detengono risultati intermedi. Nei decodificatori LDPC, pipelining può essere applicato a diversi livelli: all'interno di un'unica iterazione (intra-iteration pipelining) o attraverso molteplici iterazioni (inter-iteration pipelining).
La pipelining di intercettazione divide il calcolo del messaggio per un nodo variabile o di controllo in passi aritmetici più piccoli, come la min-finding, il prodotto-of-signs e la normalizzazione, consentendo all'hardware di funzionare ad una frequenza di clock più alta. Tuttavia, questo aumenta la latenza per iterazione, che può compensare il guadagno di throughput se non gestito con attenzione.
La pipelining di inter-terazione è più aggressiva: si sovrappone al trattamento dell'iterazione i]] con iterazione [i+1]. Ciò richiede il decoupling dei ricordi del messaggio in modo che si possa scrivere mentre si legge un altro. La profondità del rischio del gasdotto può essere diverse iterazioni, e la cura speciale deve essere presa per evitare ulteriori risultati di aggiornamento
Le architetture pipelined sono comunemente utilizzate nelle implementazioni ASIC dove il decoder fa parte di un più grande System-on-Chip (SoC). Ad esempio, il decoder LDPC in un processore a banda base 5G spesso impiega un condotto a 4 stadi per mantenere un throughput di 20 Gbps mentre si adatta all'interno di una rigida busta di alimentazione.
Architetture parallele
Il decoder è un decoder completamente parallelo che assegna un'unità di elaborazione dedicata ad ogni nodo variabile e ad ogni nodo di controllo nel grafico Tanner. Tutti i nodi possono aggiornare i propri messaggi in un unico ciclo di clock, utilizzando un programma di inondazione, eliminando così la testa sequenziale degli approcci strati o conduttivi, raggiungendo il massimo rendimento possibile.
Un decoder completamente parallelo per un codice con 10.000 nodi variabili e 5.000 nodi di controllo richiederebbero 15.000 elementi di elaborazione, oltre a una rete di routing per collegarli secondo la matrice di controllo di parità. Il cablaggio domina l'area del chip.
Tuttavia, i progressi nella tecnologia ASIC, i nodi di processo di stropicciamento, la densa integrazione 3D e le reti ad alta banda su chip, hanno reso i decoder completamente paralleli più trattabili.
Studio di cassa:[] Un decoder LDPC completamente parallelo per lo standard IEEE 802.11ad (60 GHz WiGig) è stato dimostrato in un chip CMOS da 28 nm, raggiungendo 10 Gbps con potenza di 350 mW, come descritto in questo giornale IEEE di carta Solid-State Circuits.
Altri Approcci notevoli
Molte altre tecniche di parallelizzazione meritano di essere menzionate:
- Stochastic decoding:[] Rappresenta i messaggi come sequenze di bit casuali, consentendo hardware estremamente semplice (un singolo flip-flop per messaggio) al costo di una convergenza più lenta. Il parallelismo è naturalmente alto perché ogni nodo opera in modo indipendente.
- Quasi-ciclic (QC) decoder LDPC: La maggior parte degli standard moderni usano codici LDPC quasi-ciclici, dove la matrice di controllo di parità è composta da sottomatrice di identità a spostamento circolare. Questa struttura permette al decoder di utilizzare i turnisti a barili o le reti di permutazione per i messaggi di route tra gli elementi di elaborazione, semplificando notevolmente i codici di interconnessione parzialmente.
- Architetture parallele parziali: Un compromesso tra disegni a strati e completamente paralleli, decodificatori paralleli parziali assegnano un numero fisso di unità di elaborazione per elaborare nodi multipli su diversi cicli di clock.
Piattaforme hardware per l'implementazione del decoder LDPC
La scelta della piattaforma – PGA, ASIC o GPU – influenza notevolmente i possibili compromessi di parallelismo e design.
Decoder basati su FPGA
FPGAs offre la riconfigurabilità, rendendoli popolari per la prototipazione e per i sistemi che devono supportare più standard. Le FPGA moderne contengono migliaia di fette DSP e RAM a blocchi abbondanti, consentendo decodificatori a strati con un parallelo moderato. I decoder completamente paralleli sono raramente implementati su FPGA a causa della congestione di routing, ma i disegni paralleli e a strati parziale possono raggiungere throughput multi-gigabit.
Assemblatori a base ASIC
I circuiti integrati specifici per applicazioni (ASIC) sono i cavalletti di lavoro di chip di comunicazione di massa, che possono integrare centinaia di elementi di elaborazione con gerarchie di memoria personalizzate e routing dedicato.
Decoder basati su GPU
Le unità di elaborazione grafica (GPU) non sono generalmente utilizzate nei ricevitori di comunicazione di produzione, ma sono inestimabili per la ricerca e la decodifica offline. Una moderna GPU può simulare migliaia di aggiornamenti di nodo in parallelo utilizzando la sua architettura SIMT (single-instruction, multiple-thread).
Sfide in Parallel Decoder Design
Nonostante i progressi impressionanti, diversi ostacoli rimangono prima che i decoder LDPC paralleli possano soddisfare tutti i requisiti applicativi.
- Consumo di potenza:[[]] Le unità di elaborazione parallele consumano una potenza dinamica significativa. Per i dispositivi alimentati a batteria, il budget di potenza può limitare il grado di parallelismo.
- Complessità di Hardware:[] Il routing e la memoria necessari per un elevato parallelismo aumentano l'area del chip e lo sforzo di progettazione. Per i decodificatori completamente paralleli, l'interconnessione può occupare più del 70% dell'area di stampo.
- Pavimento di errore:[ Alcune architetture parallele introducono effetti di quantizzazione o algoritmi semplificati che causano un piano di errore—una regione in cui la velocità di errore del bit si ferma migliorando come aumenta il rapporto segnale-rumore.
- Scalabilità:[] Mentre le lunghezze del codice LDPC crescono (a 64k o 128k bit), mantenere la convaluta senza conflitti di memoria diventa più difficile. I decoder a strati richiedono che ogni strato venga elaborato senza conflitti; la progettazione di matrice e gli algoritmi di stratificazione sono un campo di ricerca attivo.
Le direzioni future
La prossima generazione di decoder LDPC probabilmente unirà il parallelismo con nuovi paradigmi di calcolo.
- Macchina che impara:[]] Le reti neurali possono essere addestrate per approssimare l'algoritmo di propagazione delle credenze, riducendo potenzialmente il conteggio dell' iterazione mantenendo le prestazioni. Ad esempio, i decodificatori di propagazione delle credenze neurali utilizzano pesi e compensazioni apprese, e possono essere implementati in hardware con una posizione minima.
- Architetture riconfigurabili e adattative:[ I decoder futuri possono regolare dinamicamente il loro grado di parallelismo basato sulla qualità dei canali e sui requisiti di throughput. Ad esempio, un decoder potrebbe passare tra modalità a strati e completamente parallele in tempo reale.
- Integrazione con correzione di errore quantico: Come matura il calcolo quantistico, la correzione di errore per i qubit richiederà decodi estremamente veloci—sull'ordine dei nanosecondi. I decodi LDPC paralleli ispirati ai disegni classici vengono valutati per i codici di superficie e altri codici di correzione di errore quantistici, anche se i vincoli sono abbastanza diversi (ad esempio, la misurazione della sindrome non è distruttiva).
- 3D integrazione e interconnessioni ottiche:[] La memoria che stacking muore direttamente in cima ai dies logici può alleviare i colli di bottiglia della larghezza di memoria.
Ulteriori indagini esaurienti possono essere trovate in questa Indagini e tutorial di Indagini di Comunicazione EIEEE su architetture decoder LDPC[] e in questo articolo di ACM Computing Surveys sugli decoder LDPC ad efficienza energetica.
Conclusioni
Le architetture parallele di decodifica hanno trasformato i codici LDPC da una curiosità teorica in un pratico abilitatore di comunicazione ad alta velocità moderna. I progetti a strati, oleati e completamente paralleli ogni indirizzo punti diversi nello spazio di progettazione di throughput, area e potenza.