GetUSB.info Logo

Longevit di USB Flash and Wear Leveling

Penso che abbiamo tutti sentito dire che una chiavetta USB può essere utilizzata solo un certo numero di volte. Alcuni dicono 1.000 scritture, altri 100.000. Una cosa è certa: è impossibile stabilirlo per un dispositivo specifico. Il ciclo di vita di una USB è direttamente correlato alla memoria flash e, da modello a modello o da formato a formato, è difficile sapere quale sia la qualità della flash impiegata. Detto questo, possiamo spiegare la teoria per far durare le unità USB più a lungo. Per lo più si riduce a due elementi: (a) tipo e qualità della memoria e (b) tecnica di wear leveling (livellamento dell’usura).

Come breve riepilogo, la flash NAND in una USB può essere SLC, MLC o TLC (Single-Level Cell, Multi-Level Cell o Triple-Level Cell). Oggi, nella maggior parte delle chiavette USB si trovano MLC e TLC; SLC si vede, ma in genere su dispositivi di fascia alta.

Il wear leveling è una tecnica per prolungare la durata della memoria flash cancellabile. In sintesi, la memoria flash è composta da segmenti/celle cancellabili che possono essere impostati su 0 o 1 (carica positiva o negativa). Tuttavia, dopo un certo numero di cicli di cancellazione e scrittura, una cella diventa troppo instabile per un uso affidabile.

Il livellamento dell’usura è l’algoritmo usato dal controller del dispositivo per distribuire in modo uniforme cancellazioni e scritture su tutto il supporto flash. Tipicamente la flash può avere tra 3.000 e 5.000 cicli di cancellazione/scrittura. Oltre all’area utile, la flash dispone anche di celle di riserva (blocchi specifici a vita estesa) che possono gestire fino a ~100.000 scritture. Qui il controller ri-mappa i segmenti logori verso le celle migliori da usare durante i cicli di cancellazione/scrittura.

Longevità USB Flash e Wear Leveling - schema memoria flash
Schema concettuale: Longevità USB Flash e Wear Leveling.

Esistono tre tipi di livellamento dell’usura:

Nessun wear leveling

Un sistema di storage flash senza wear leveling non durerà a lungo se si scrivono spesso dati. Senza livellamento, il controller assegna in modo permanente gli indirizzi logici dell’host agli indirizzi fisici della flash. Ogni riscrittura di un blocco già scritto richiede lettura, cancellazione, modifica e riscrittura nella stessa posizione: processo dispendioso e concentrato sempre sugli stessi blocchi, che si usurano rapidamente mentre altre aree restano inutilizzate. Quando alcuni blocchi raggiungono fine vita, l’unità non è più operabile.

Wear leveling dinamico

Il primo tipo sviluppato è il wear leveling dinamico: utilizza una mappa che collega gli indirizzi di blocco logici dell’host alla flash fisica. Quando l’host riscrive dati, la mappa si aggiorna: il blocco fisico originale viene marcato come invalido e a quella voce si assegna un nuovo blocco. Ogni volta che un blocco viene riscritto, finisce in una posizione fisica diversa.

Wear leveling statico

Il wear leveling statico usa anch’esso una mappa, ma sposta periodicamente anche i blocchi “freddi” (pochi cambiamenti) così che le celle poco usate possano essere impiegate da altri dati. Questo effetto di rotazione consente al supporto di operare finché la maggior parte dei blocchi non si avvicina alla fine vita, massimizzando la longevità USB Flash con wear leveling.

Oltre ai tre approcci di wear leveling, ci sono tre tecniche generali per prolungare la vita di un drive USB:

  • Correzione degli errori (ECC): codice che rileva/corregge errori e registra i blocchi danneggiati, evitando il riutilizzo in scritture future.
  • Pool di riserva (spare blocks): se una scrittura fallisce su un blocco, i dati vengono reindirizzati a un blocco di riserva sano.
  • Monitoraggio dell’utilizzo: tenere traccia dei blocchi meno utilizzati di recente; anche le strutture di dati della coda devono essere oggetto di wear leveling poiché cambiano continuamente.

Fonti: Wikipedia – Wear leveling e Nexcopy Inc., produttore di duplicatori USB.

Tags: , ,