Una soluzione per la gestione delle Flash

ALA059-Figure1

L'avvento sul mercato della memoria Flash Nand ha cambiato le modalità con cui vengono memorizzate le informazioni in qualsiasi tipo di apparato, dai dispositivi mobili ai data center di grandi dimensioni. I dischi a stato solido o Ssd (Solid-State Disk) realizzati utilizzando memorie Flash di tipo Nand sono più piccoli veloci, più silenziosi e dissipano meno calore rispetto agli hard disk. Due sono gli svantaggi tipici degli Ssd: l'endurance (essi si usurano molto più velocemente degli Hdd) e la retention (la carica che rappresenta ciascun bit di dati tende a scomparire col trascorrere del tempo).


 

Memoria Flash: concetti di base

Le memorie Flash sono suddivise in tre grandi categorie: Slc (Single Level Cell), Mlc (Multi Level Cell) e Tlc (Triple Level Cell). Una memoria Slc immagazzina un singolo bit di dati per cella (2 livelli di tensione) e la presenza o assenza di carica rappresenta il dato. Una memoria Mlc immagazzina due bit per cella (4 livelli di tensione) e utilizza la quantità di carica memorizzata per determinare quale dei quattro stati (00, 01, 10, 11) sono memorizzati. In una memoria Tlc sono invece memorizzati tre bit per cella (8 livelli di tensione). Ciò se da un lato permette di incrementare la densità di memorizzazione, dall'altro comporta un aumento della complessità e dei tempi di accesso, una riduzione dell'affidabilità dei dati e un tasso di usura più rapido. Le problematiche legate all'endurance (il numero di cicli di scrittura supportati prima che si manifestino guasti) e alla data retention (la capacità di mantenere inalterati i dati) provocano l'insorgere di errori nei dati. I controllori della Flash fanno ricorso ai codici a correzione di errore o Ecc (Error correcting code) per individuare e correggere questi errori. A questo punto è utile sottolineare che l'implementazione dei codici Ecc comporta operazioni di lettura e scrittura di dati aggiuntivi. Uno di questi schemi Ecc, denominato metodo Bch (Bose-Chaudhuri-Hocquenghem), garantisce un tempo di funzionamento prevedibile e un'implementazione abbastanza semplice nel caso siano richieste fino a 50 bit di correzione d'errore per blocco di dati. Poiché il metodo Bhc non è in grado di supportare in maniera adeguata l'incremento del tasso di errore, in molte implementazioni di tipo Tlc è stato sostituita dalla verifica Ldpc (Low density parity check). Questo approccio utilizza due tipo di decodifica: la decodifica Hldpc (Hard-decision Ldpc) e quella Sldpc (Soft-decision Ldpc). Mentre la decodifica basata su una “hard decision” è analogo al metodo Bch , la decodifica basata su “soft-decision permette di aggiungere ulteriori correzioni utilizzando i suggerimenti ricavati dai dati relativi al deterioramento del chip Nand forniti dalla fonderia. Questi suggerimenti sono codificati in un meccanismo di ripetizione della lettura, dove la nuova lettura è adattata in base allo stato di deterioramento del dispositivo Nand. Queste rilettura si verificano in modo random e in misura sempre maggiore con l’avanzare dell’età del dispositivo, il che rende difficile prevedere il tempo richiesto per una lettura. Ciò può comportare l'introduzione di ritardi non accettabili per il ripristino del file, fatto questo che può accelerare la fine della vita operativa di un Ssd. Un approccio migliore sarebbe ridurre il tasso di errore nel flusso di dati piuttosto che correggere gli errori una volta che questi si sono verificati.

 

Fonti di errore

Sono tre le principali fonti di errore:

  • Disturbo di lettura (Read Disturb) che influenza una singola lettura e può essere eliminato quando sulla stessa locazione viene eseguita un’altra operazione di lettura. Ovviamente, più letture vengono fatte senza eseguire il refresh dei dati, più aumentano le possibilità che si verifichi un errore di questo tipo.
  • Cicli di programmazione/cancellazione (Program/Erase Cycling), il cui effetto è deteriorare gradualmente l’isolatore attraverso il quale gli elettroni passano per essere memorizzati nell’elemento di memoria (il floating gate).
  • Capacità di mantenere inalterati i dati (Retention), che va inevitabilmente a diminuire con il trascorrere del tempo poiché gli elettroni abbandonano il floating gate specialmente nel caso in cui l’isolatore risulti danneggiato.

Il tasso di usura di una memoria Flash è correlato alle sollecitazioni prodotte dalle operazioni di scrittura. Sollecitazioni più intense, che si presentano sotto forma di tensioni di valore più elevato o tempi di scrittura più lunghi, contribuiscono ad accelerare il fenomeno di usura. In ogni caso, se non è iniettato un numero sufficiente di elettroni nel floating gate, la memoria evidenzierà problemi di conservazione dei dati che alla fine andranno persi. Ciò significa che è possibile individuare un compromesso tra retention ed endurance e che nelle fasi iniziali della vita della cella la scrittura nella cella può essere ottenuta utilizzando bassi livelli di sollecitazione mentre successivamente, nel corso della vita della cella, possono essere utilizzate sollecitazioni di maggiore entità per assicurare la retention dei dati. Nelle fabbriche dove vengono realizzate le memorie Flash si utilizza un processo denominato trimming (regolazione) per individuare e impostare i valori dei parametri - tensioni, tempi di scrittura, soglie di lettura - per i registri di controllo interni in modo da garantire il miglior compromesso tra retention ed endurance. In generale, questi valori di regolazione sono fissi anche se, in alcune applicazioni, come nel caso degli Ssd per i data center, può aver senso per esempio privilegiare l'endurance rispetto alla retention poiché in questo caso i dati solitamente non vengono conservati su questi dispositivi per lunghi periodi di tempo.

 

Gestione attiva della Flash

La regolazione dei valori di taratura può contribuire a minimizzare l'usura nelle fasi iniziali della vita di un dispositivo Flash, mentre successivamente l'applicazione di sollecitazioni più elevate può garantire l'affidabilità, con conseguente aumento della vita operativa del dispositivo nel suo complesso. Utilizzando questo approccio per la gestione, i produttori di Ssd possono personalizzare i loro progetti sulla base di differenti scenari di utilizzo: per esempio un modello di Ssd potrebbe richiedere una retention di 12 mesi mentre in altri casi un utente potrebbe aver bisogno di un Ssd riprogrammabile su richiesta in modo da ottenere una retention di una sola settimana. Per eseguire una gestione attiva di questo tipo il controllore dell’Ssd deve far girare un software specifico per la gestione della Flash in grado di monitorare il deterioramento della memoria Flash e decidere il momento in cui è necessario modificare il set di parametri. NVMdurance Navigator è stato appositamente concepito per svolgere tale compito. La gestione attiva della Flash è un esercizio di equilibrio abbastanza delicato: un'azione troppo aggressive nelle fasi iniziali può provocare un'usura della Flash più veloce di quella preventivata mentre un'azione non abbastanza aggressiva può compromettere la retention. Poiché le celle delle Flash non si usurano con la medesima velocità, è possibile che un insieme di registri che garantisce 500 cicli per una cella ne otterrà solo 400 da un'altra. Per contrastare questo fenomeno si ricorrere a tecniche di protezione (guard banding), in modo da consentire anche alle celle più "deboli" di raggiungere l'endurance specificata, anche se ciò comporta lo spreco di cicli di memoria in alcune celle. Esistono comunque modalità che permettono di sfruttare questi cicli di riserva: i blocchi di memoria che sembra abbiano meno probabilità di raggiungere il numero di cicli previsto possono essere "messi a riposo" mentre il loro carico è suddiviso sui cicli di riserva di altri blocchi.

 

Individuare i parametri corretti

La gestione attiva della Flash richiede che i parametri siano ottimizzati (o quasi) per ogni stadio della vita del dispositivo. I dispositivi attuali integrano un numero di registi compreso tra 50 e 300 e questo dato è destinato ad aumentare. Il processo di messa a punto di questi parametri richiede tempi lunghi e viene condotto abbinando le competenze maturate in termini di ingegnerizzazione con un'intensa attività di caratterizzazione. La complessità degli attuali dispositivi non permette più di sfruttare un approccio di questo tipo, in particolar modo nel caso delle Flash gestite in modo attivo che richiedono una nuova esecuzione della caratterizzazione ogni volta che viene modificato il set di impostazioni della regolazione. Il tool NVMdurance Pathfinder permette di automatizzare il processo di individuazione e collaudo dei valori dei registi. Il suo engine, basato su metodi di apprendimento automatico (machine learning), modifica i valori dei registi ed effettua il monitoraggio de gli effetti nei modelli di simulazione hardware e software. Vengono sperimentate centinaia di milioni di permutazioni e i risultati di queste prove hardware vengono anche impiegati per migliorare le simulazioni. L'obiettivo è produrre un set di valori dei registri che, una volta gestiti da NVMdurance Navigator, contribuiscano ad aumentare la durata della memoria Flash.

 

Realizzazione hardware

A questo punto è utile esaminare le ricadute pratiche di tutto ciò che è stato finora esposto. Per gli utenti finali, come ad esempio coloro che sono preposti alla gestione dei data center, l'aumento delle aspettative di vita degli array Nand si traduce in una riduzione dei costi legati al possesso e al funzionamento di un Ssd. La possibilità di aggiornare gli algoritmi di gestione mentre il drive è in servizio contribuisce all'aumento della sua durata operativa. Un altro problema che assilla i responsabili della gestione dei datacenter è la prevedibilità del throughput e delle prestazioni nel corso della vita operativa dei drive che vengono utilizzati. I controllori di tipo tradizionale non sono in grado di contrastare la riduzione delle prestazioni che si manifesta a causa dell'invecchiamento delle celle delle Flash, imputabili a fattori quali ad esempio la correzione di errore su più cicli e la scrittura su blocchi di ampie dimensioni. La crescente complessità degli algoritmi di gestione delle Flash ha contribuito a rendere più complicato il progetto del controllore dell'Ssd e a limitare la gamma di dispositivi Nand che ciascun controller è in grado di supportare. Altera, NVMdurance e Mobiveil hanno affrontato questo problema realizzando un controllore attivo per memorie Flash aggiornabile e riconfigurabile basato su un SoC Fpga. Esso utilizza il software realizzato da NVMdurance per aumentare la durata della Flash e aprire la strada all’implementazione di una nuova classe di Ssd riconfigurabili sul campo. Non solo la Flash può essere rimossa una volta che non è più utilizzabile, il che comporta la trasformazione degli Ssd in beni di consumo, ma il controllore può essere riconfigurato per utilizzi differenti. La sua capacità di modificare in modo semplice l’hardware rappresenta la soluzione ideale per la gestione attiva delle memorie Flash.

Pubblica i tuoi commenti