Table of Contents
Il bisogno crescente di correzione degli errori avanzata nello storage
Come NAND flash scale a QLC e oltre, i tassi di errore a bit grezzi (RBER) hanno scalato da circa 10-4 a oltre 10-2] per le celle usurate.
Il passaggio alle architetture a celle a triplo livello (TLC) e a quad-livello (QLC) ha aumentato il numero di stati di tensione per cella, riducendo i margini e aumentando i tassi di errore. Le perdite di mantenimento dopo mesi di archiviazione e programma/erase ciclismo ulteriormente degradano l'affidabilità.
Concetti core ECC e moderni algoritmi
I codici di correzione degli errori vengono utilizzati in modo da correggere gli errori con un limite di progettazione. I codici di Hamming correggono un singolo errore per blocco e sono comuni nella memoria ECC. I codici Reed-Solomon gestiscono gli errori di scoppio e vengono utilizzati nei dischi ottici e nei vecchi HDD. I codici BCH sono stati il cavalletto di lavoro per NAND Flash per anni, offrendo una forte correzione con moderata complessità hardware.
I codici a tasso ridotto (LDPC) dominano ora lo storage ad alte prestazioni. Utilizzano una matrice a tasso di parità e una propagazione delle credenze iterative (algoritmo di calcolo del prodotto) per decodificare le informazioni morbide dal canale, come la distribuzione di tensione di una cella flash.
I codici polari, adottati da 5G comunicazioni, stanno guadagnando attenzione per lo storage a causa del loro basso piano di errore e della decodifica di liste di cancellazione successiva efficiente. La loro struttura algebrica mappa bene alle architetture FPGA condutture. Mentre non ancora diffusa in SSD di produzione, la ricerca mostra che possono corrispondere le prestazioni LDPC con la complessità di decoder inferiore per alcune dimensioni di blocchi.
La scelta dell’algoritmo giusto richiede la simulazione del profilo di errore del canale di destinazione. Strumenti come Bit Error Rate Tester (BERT) o simulazioni Monte Carlo con i modelli di canale da produttori flash aiutano a ridurre i candidati al codice. La possibilità di correzione dei bilanci di selezione finale, latenza, area e potenza. In un archivio di archiviazione a freddo, un codice forte con latenza più alta è accettabile; in un database di trading finanziario, la decodifica submicroseconda è obbligatoria.
Perché FPGAs sono ideali per l'implementazione ECC
FPGA occupa un unico terreno centrale tra ASICs a funzione fissa e processori generali. Un moderno FPGA contiene decine di migliaia di elementi logici, centinaia di fette DSP e megabyte di RAM di blocco, tutti collegati attraverso un tessuto di routing programmabile. Questa architettura consente diversi vantaggi chiave per la correzione di errore:
- Parallelismo massivo:[ I decodificatori LDPC richiedono aggiornamenti simultanei a migliaia di nodi. Un FPGA può istantanare centinaia di elementi di elaborazione che operano in parallelo, ottenendo un throughput multi-gigabit-per-secondo.
- Flessibilità riconfigurabile: Quando una nuova generazione di flash presenta diverse caratteristiche di errore, come ad esempio perdita di ritenzione o disturbo di lettura più elevato, l'algoritmo ECC può essere aggiornato caricando un nuovo bitstream. Questo prolunga la vita utile delle piattaforme di archiviazione e consente miglioramenti post-deployment.
- Ultra-Low e latenza deterministica: Le tubazioni hardware eliminano la sovraccarico del sistema operativo e il commutatore di contesto. Un decoder FPGA ben progettato può fornire dati corretti con la latenza microseconda a singolo cifra, essenziale per i sistemi di storage in tempo reale.
- Integrazione diretta del Data-Path:[] FPGAs può sedersi in linea tra l'interfaccia host (PCIe, NVMe, CXL) e il controller flash NAND. IP temperato per PCIe, DDR4/5 e ONFI riduce la necessità di chip esterni, semplificando la progettazione del bordo e riducendo la potenza.
- Energy Efficiency:[] Stimolando il percorso dati esattamente all'algoritmo, FPGAs evitare la sovraccarico di istruzione e decodifica. Un decoder LDPC su un moderno FPGA consuma circa 2-4 W a pieno throughput, rispetto a 15-20 W per una CPU che esegue lo stesso software.
Per uno sguardo più approfondito sull’accelerazione di archiviazione basata su FPGA, la pagina di archiviazione computazionale [[[FLT: 1:]] dettagli su come la logica programmabile offload correzione di errore e elaborazione dati. Allo stesso modo, La famiglia Agilex FPGA di Intel[] offre blocchi DSP induriti ottimizzati per il dispositivo di perspeso di LDPC
Progettazione di un sistema ECC basato su FPGA
L'implementazione di un acceleratore ECC di livello produttivo su un FPGA segue una metodologia strutturata che trasforma un codice astratto in logica di silicio funzionante. Il processo prevede la selezione di algoritmi, l'architettura hardware, la simulazione, la sintesi e l'integrazione di sistema.
Selezione e Tuning del parametro
Per NAND Flash, il tasso di errore raw varia con i cicli di programma/erase, la temperatura e la ritenzione dei dati. Utilizzando strumenti come i dati di prova di affidabilità del venditore NAND o i modelli open-source (ad esempio, dal Flash Memory Summit), gli ingegneri simulano il RBER atteso sulla vita del drive. Poi, scelgono una famiglia di codice e raccolgono i suoi parametri: lunghezza del blocco, tasso di codice LBER
Progettazione di architettura hardware
Con l'algoritmo fisso, l'architettura FPGA è progettata utilizzando linguaggi di descrizione hardware (VHDL/Verilog) o sintesi di alto livello (HLS) da C/C++.
- Channel Likelihood Buffer:[] memorizza metriche morbide (reti di probabilità di log, LLRs) dal canale di lettura NAND.
- Unità di Nodo variabili (VNU):[ Processa i messaggi in arrivo dai nodi di controllo e aggiorna le LLR dei nodi variabili.
- Controllare l'unità di nodo (CNU):[ Esegue l'operazione di minimo consumo o di somma prodotto per generare messaggi in uscita.
- Rete di interconnessione:[] Implementa la connettività a matrice di controllo di parità. Per QC-LDPC, questa è una rete di turni a botte che può essere condutturata.
- Controller:[] gestisce il conteggio di iterazione, la risoluzione precoce basata sul controllo della sindrome e la messa a fuoco con l'host.
I progettisti decidono sul livello del parallelismo: i decoder completamente paralleli raggiungono il massimo rendimento ma consumano enormi risorse di routing; i decoder parzialmente paralleli condividono unità di elaborazione su più nodi, velocità di trading per area. La maggior parte dei SSD pratici utilizzano un programma di decodifica a strati che elabora file della matrice di controllo di parità sequenziali, riducendo i requisiti di banda di memoria e migliorando la velocità di convergenza.
Simulazione e verifica
Prima di impegnarsi in hardware, le simulazioni verificano che il decoder soddisfa la capacità di correzione degli errori specificata. I banchi di prova iniettano il rumore del canale secondo il tasso di errore del frame target (FER). I casi di angolo come i set di trapping—i modelli di errore specifici in cui il decoder iterativo non può convergere—sono identificati e affrontati con le tecniche di post-processing come bit-flipping o riavvio con i parametri diversi.
Sintesi, Luogo e Rota, e Chiusura di Timing
Dopo la verifica, la RTL è sintetizzata in una netlist a livello di gate che mira a una specifica FPGA. Le porte delle mappe a blocchi logici, bloccano le RAM e le fette DSP. Per i decodi ad alto rendimento, la chiusura dei tempi, assicurando che tutti i percorsi soddisfino la frequenza dell'orologio di destinazione, è il passo più impegnativo.
Integrazione del sistema
Il FPGA si collega tipicamente al controller NAND tramite un'interfaccia ONFI o Toggle DDR, e all'host tramite PCIe o NVMe.
FPGA comparato, ASIC e ECC software
Ogni piattaforma di implementazione ha punti di forza e di debolezza. Il software ECC su una CPU è il più flessibile – qualsiasi codice può essere implementato e gli aggiornamenti sono banali. Tuttavia, limiti di esecuzione seriale throughput: un singolo core può decodificare al massimo poche centinaia di megabit al secondo, molto al di sotto delle decine di gigabit richiesti dai moderni SSD. L'accelerazione GPU migliora il throughput ma aggiunge potenza e latenza, e non è pratica all'interno di un dispositivo di storage.
ASIC ECC è la soluzione più performante e più efficiente per i prodotti ad alto volume. Una volta che il nastro-out è fatto, il codice è fisso. Se è necessario un algoritmo più forte in seguito (ad esempio, per supportare una nuova generazione flash), è necessaria una nuova revisione del silicio, che richiede mesi e costa milioni.
FPGA ECC colpisce un equilibrio. Offre prestazioni hardware vicino a ASIC (soprattutto per LDPC e decodi polari) con la programmabilità del software. Il costo per unità è superiore a un ASIC, ma per volumi a basso contenuto di medio il costo totale di proprietà è inferiore perché non è necessario NCCPG, e gli aggiornamenti sul campo possono prolungare la vita del prodotto.
Applicazioni reali nel mondo
La sinergia tra FPGAs e correzione degli errori è già dispiegata in diversi settori in cui l'integrità dei dati è critica.
I produttori di SSD di Intrappola e Hyperscale: I fornitori di SSD leader prototipi di nuove architetture ECC su FPGAs prima di impegnarsi a ASICs correzione. Ad esempio, un recente Ieeeee paper] descrive un decoder basato su FPGA che raggiunge i dati di storage di 13.5 Gb/s di vamplibrificazione di consumo di 1.2 Wscale di WWWS.
I produttori di dischi rigidi ad alta densità: I produttori di HDD moderni si affidano alla perequazione turbo iterativa e alla decodifica LDPC nel canale di lettura.
Aerospaziale e Difesa:[] I satelliti e le sonde spaziali profonde utilizzano FPGA indurita dalle radiazioni per implementare la ridondanza modulare tripla e l'ECC avanzato per i registratori a stato solido.
Industrial and IoT:[] Sistemi incorporati in ambienti difficili—fabbricazione di pavimenti, piattaforme petrolifere, veicoli autonomi—utilizzare moduli di archiviazione basati su FPGA che combinano resistenza alle vibrazioni con potenti ECC. Ad esempio, strumenti di perforazione a foro che operano a 200°C utilizzano schede FPGA specializzate che adattano la correzione degli errori in tempo reale per compensare le correnti di perdita aumentata.
Superare le sfide di attuazione
Mentre FPGA ECC offre chiari vantaggi, gli ingegneri devono affrontare diversi ostacoli per raggiungere progetti affidabili e convenienti.
Design Complexity:[]] Creare un efficiente decoder LDPC da zero richiede competenze nella teoria della codifica e nel design digitale. La soluzione è quella di utilizzare core IP preverificati da fornitori FPGA (ad esempio, Xilinx LDPC IP, Intel LDPC core) che sono parametrizzabili e pronti alla produzione.
L’offerta di Costanti: I FPG di fascia alta possono costare centinaia di dollari per unità, rendendoli inadatti per i prodotti di consumo ad alto volume. Tuttavia, per i volumi di basso a medio-medio (ad esempio, sistemi di storage enterprise Cylinx), la flessibilità di FPGA e NRE inferiore spesso rendono il costo totale competitivo.
Power and Thermal Management: Un decoder LDPC completamente parallelo può disegnare diversi watt. Tecniche per mitigare questo includono il gating dell'orologio per disabilitare le tubazioni quando idle, tensione dinamica e scalare la frequenza (DVFS), e ottimizzazioni algoritmiche come la risoluzione precoce quando la sindrome è zero. Alcuni progetti utilizzano un approccio a due stadi: un semplice decoder BCH LCH è più potente
Integrazione con l'Ecosistema esistente: L'interfacciamento di un FPGA con un controller di archiviazione richiede l'adesione a standard come PCIe, NVMe e ONFI. Utilizzando i progetti di riferimento e i cataloghi IP forniti dal fornitore velocizza l'integrazione.
I tempi di elaborazione di lunga sintesi (ore per grandi progetti) rallentano l'iterazione. Un approccio-prima simulazione con banco di prova completo, combinato con hardware-in-the-op su schede più piccole, cattura la maggior parte dei problemi in anticipo.
Guardando in testa: innovazioni in FPGA ECC
Il futuro della correzione degli errori basata su FPGA è plasmato da tecnologie emergenti che richiedono ancora più flessibilità e prestazioni dall'hardware di storage.
Machine Learning-Assisted Decoding:[ Le reti neurali possono imparare i modelli di errore specifici di un chip NAND durante la sua vita. Un FPGA può ospitare un motore di inferenza leggero che prevede posizioni di errore probabili, consentendo al decoder di focalizzare le iterazioni di correzione dove sono più necessari.
Post-Quantum Security e ECC:[[] Il calcolo quantistico minaccia la crittografia attuale, ma colpisce anche la sicurezza di archiviazione. I dispositivi di archiviazione futuri possono essere necessari per supportare la correzione degli errori che integra i codici basati sulla reticenza per la crittografia quantistica.
Integrazione dei chip:[] Il passaggio verso pacchetti multi-die permette di integrare il tessuto FPGA insieme ai controller ASIC, DRAM e NAND su un unico substrato utilizzando Universal Chiplet Interconnect Express (UCIe), che combina l'efficienza ad alto volume di ASIC con un piccolo e riprogrammabile sistema FPGA di storage per le aziende Intel che sviluppano attivamente TSCC.
Open-Source ECC IP Ecosystem: Il movimento hardware open-source sta producendo core ECC configurabili di alta qualità per codici LDPC, polari e scale. Il ECCTool ricerca progetto]] fornisce una suite di implementazioni di avvio Verilog open source che possono essere adattate a specifici canali di archiviazione avanzati.
Conclusioni
I sistemi di archiviazione basati su FPGA non sono solo una tendenza tecnica, ma una risposta strategica all'aumento costante della densità di storage e al corrispondente aumento dei tassi di errore. La combinazione di parallelismo a livello hardware, flessibilità programmabile sul campo e posizioni di integrazione dei dati dirette FPGA come la piattaforma ideale per la distribuzione di algoritmi avanzati come LDPC e codici polari, e consente inoltre di individuare le innovazioni future.