Implementazione del wear leveling dinamico

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.

Tale 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.

Viene quindi da pensare che l’usura della memoria sarà appunto “livellata”, in quanto 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.

Passiamo quindi ad un caso pratico esaminando un’ipotetica memoria contenente dati statici e dinamici ripartiti nelle percentuali indicate in figura. In tale scenario 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 irrisorio, 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.

Ti consigliamo anche

Link copiato negli appunti