giovedì 20 agosto 2009

Wear leveling NAND FLASH

Il wear leveling è una tecnica che aiuta a mantenere il corretto funzionamento delle celle di memoria NAND Flash ottimizzando il loro sfruttamento nel tempo. Per saperne qualcosa in piu, leggetevi DISPOSITIVI FAMOS (CELLE DI MEMORIA FLASH) . Il wear leveling limita i cicli di scrittura e cancellazione delle celle di memoria NAND Flash, ormai diffuse nei Solid State Disk. L’uso continuo in scrittura di un numero limitato di blocchi porta quindi ad un malfunzionamento generale della memoria, in quanto i cicli di scrittura sono limitati e si danneggiano prima degli altri. La gestione del wear leveling è a carico del controller NAND Flash in quanto esso gestisce tutte le operazioni di I/O tra il sistema host e le celle di memoria. Nella maggior parte dei casi il controller si avvale di una tabella di traduzione degli indirizzi per generare di volta in volta le più opportune corrispondenze tra gli indirizzi LBA (Logical Block Address) utilizzati dal sistema host e gli indirizzi PBA (Physical Block Address) utilizzati per mappare fisicamente le celle come mostrato nell’immagine. Esistono diversi approcci per implementare il wear leveling e normalmente più il metodo è complesso e raffinato, più lunga sarà la vita della memoria NAND Flash in cui è utilizzato. Prima di trattare in modo dettagliato i metodi di wear leveling è bene fare una breve premessa sui tipi di dati memorizzati in una memoria di massa. Essi possono essere suddivisi in due categorie:

* Dati statici: informazioni aggiornate raramente per le quali si può affermare che risiederanno in determinate locazioni di memoria per l’intero ciclo vita del dispositivo. A titolo d’esempio, si possono citare la maggior parte dei file del sistema operativo.

* Dati dinamici: file soggetti a continui cambiamenti, cancellazioni e riscritture. A tale categoria appartengono per esempio i file temporanei del sistema, cache di programmi frequentemente utilizzati, file personali di lavoro soggetti a frequenti modifiche.

Allo stesso modo andiamo quindi a identificare due principali implementazioni del wear leveling da parte del controller NAND Flash:

* Wear leveling dinamico: il controller scrive nei blocchi vuoti disponibili contraddistinti dal più basso tasso di cancellazione, ovvero in quei blocchi che sono stati cancellati meno volte rispetto a tutti gli altri;

* Wear leveling statico: il controller seleziona un blocco di destinazione con il più basso tasso di cancellazione, lo cancella se necessario, scrive i dati ricevuti dal sistema host e si assicura che gli eventuali dati precedentemente presenti nel blocco di destinazione siano spostati in un’altra locazione caratterizzata da un tasso di cancellazione inferiore ad una certa soglia. Nel wear leveling dinamico ogni cella di memoria è caratterizzata da un parametro denominato erase count, ovvero il numero totale di cancellazioni a cui è stata sottoposta la cella.Questo parametro influenza la scelta delle celle da parte del controller NAND Flash per le successive operazioni di scrittura e riscrittura, in quanto vengono scelte le celle con erase count più basso. L’algoritmo di wear leveling dinamico fa crescere l’erase count in modo costante su tutte le celle utilizzate nei processi di cancellazione e scrittura.


Esaminando un’ipotetica memoria contenente dati statici e dinamici ripartiti nelle percentuali indicate in figura. La tecnica del wear leveling dinamico sarà nettamente efficace sul 25% dei blocchi, ma cosa succede al restante 75%? A lungo andare l’erase count di quel 25% di blocchi crescerà uniformemente fino al limite fisico della memoria, mentre il restante 75% resterà con un erase count praticamente insignificante, vista la natura statica di dati ivi memorizzati. È evidente quindi che la tecnica del wear leveling dinamico, al contrario di quanto possa sembrare a prima vista, non può essere considerata in assoluto una tecnica equa, come dimostrato da questo particolare scenario di utilizzo.

1 commento:

Fabri8bit ha detto...

l'articolo DISPOSITIVI FAMOS (CELLE DI MEMORIA FLASH) con exploer non viene visualizzato. a breve sistemo il problema