Write amplification

fenomeno collaterale legato alle modalità di scrittura di memorie flash e SSD

Write amplification (WA) o amplificazione della scrittura è un fenomeno collaterale negativo legato alle modalità di scrittura delle memorie flash e dei dischi allo stato solido (solid state drives, SSDs) tale per cui il quantitativo di scritture fisiche sul chip di memoria è un multiplo rispetto alla quantità di dati effettivi da memorizzare.

Un SSD può sperimentare il fenomeno della write amplification come risultato sia della garbage collection sia degli algoritmi di livellamento dell'usura (wear leveling), aumentando in questo modo le scritture verso il drive e riducendone nel contempo in parte la vita utile.[1]
Un SSD può sperimentare il fenomeno della write amplification come risultato sia della garbage collection sia degli algoritmi di livellamento dell'usura (wear leveling), aumentando in questo modo le scritture verso il drive e riducendone nel contempo in parte la vita utile.[1]

Poiché una memoria di tipo flash richiede di essere cancellata prima di poter essere riscritta e poiché il processo di cancellazione possiede una granularità molto inferiore rispetto a quello di scrittura, il risultato è che per ogni operazione di riscrittura diventa necessario spostare (o riscrivere) più volte i dati preesistenti e i relativi metadati. Questo comporta che le operazioni di riscrittura richiedono la rilettura, lo spostamento (ossia la riscrittura in una posizione di memoria diversa) e la cancellazione di una porzione di memoria più ampia di quella effettivamente necessaria. A sua volta, il processo di spostamento potrebbe richiedere l'esecuzione dello stesso tipo di operazione su un'altra area della memoria, con un effetto moltiplicativo che porta a coinvolgere all'interno del chip una quantità di dati (e quindi una quantità di celle di memoria) superiore a quella richiesta dai nuovi da memorizzare.

La conseguenza di questo moltiplicarsi delle operazioni di cancellazione e riscrittura ha un impatto sulla durata del componente stesso, che può tollerare un numero limitato, per quanto elevato, di scritture e riscritture, riducendone considerevolmente l'affidabilità. Questa proliferazione di scritture, inoltre, aumenta il quantitativo di banda utilizzata dalla memoria flash, comportando una evidente riduzione della velocità nell'accesso verso l'SSD.[1][2]

I fattori che possono condizionare la proliferazione di scritture di un SSD sono di varia natura. Alcuni possono essere controllati durante l'utilizzo mentre altri sono intrinseci alla tecnologia di scrittura di questo tipo di dispositivi.

Intel[3] e SiliconSystems (acquisita da Western Digital nel 2009)[4] usano il termine write amplification nella loro documentazione e nelle loro pubblicazioni già dal 2008. La write amplification è misurata tipicamente dal rapporto fra il numero di scritture realmente eseguite sulla flash e il numero di richieste di scrittura richieste dall'host. Senza algoritmi di compressione, la write amplification non può scendere sotto al valore di 1. Usando algoritmi di compressione, SandForce dichiara di raggiungere valori tipici di write amplification pari a 0.5,[5] con picchi che possono scendere fino a 0.14 con il controller SF-2281.[6]


Funzionamento elementare di un SSD

  Lo stesso argomento in dettaglio: Memoria flash, Unità a stato solido e Flash file system.
 
Un esempio di memoria flash NAND che scrive dati in 4 KiB pagine e cancella dati in 256 KiB blocchi.[7]}}

A causa della particolare tipologia di operazioni eseguibili in memoria flash, le informazioni non possono essere sovrascritte direttamente come nel caso di un disco rigido. Quando le informazioni sono scritte per prime in un'unità stato solido, tutte le celle sono inizializzate in modo tale che vi si possa scrivere direttamente in pagine (solitamente di grandezza compresa intorno a 4-8 kilobytes ciascuna). Il controller dell'unità, che si occupa di gestire la memoria flash e le interfacce con l'host, utilizza una mappatura da logico-a-fisico conosciuta come LBA o logical block addressing, che è parte dell'FTL, o flash translation layer, ovvero il livello di traduzione di un flash file system.[8]

Quando le nuove informazioni arrivano a sostituire quelle vecchie, il controller dell'SSD scrive i nuovi dati in una nuova posizione e aggiorna la mappatura logica di conseguenza, riferendola alla nuova locazione fisica. Per questa ragione le informazioni nella vecchia posizione non sono più valide e hanno bisogno di essere cancellate prima che loro locazione fisica possa essere riutilizzata.[1][9]


La memoria flash può essere programmata e cancellata solo per un numero limitato di volte. Questo valore è solitamente indicato come numero massimo di cicli di programmazione e cancellazione, o P/E. Ad esempio una memoria flash SLC, o single-level cell, progettata per alte prestazioni e grande longevità può tipicamente operare tra i 50,000 e i 100,000 cicli. Una memoria flash MLC, o multi-level cell, è invece progettata per applicazioni di costo inferiore ed ha una quantità notevolmente ridotta di cicli massimi che si attestava, nel 2011, tra i 3,000 e i 5,000 cicli. Dal 2013, le memorie flash TLC, o triple-level cell, sono state rese disponibili con un numero di cicli che è sceso fino a 1,000 P/E. Si noti che è auspicabile la più bassa write amplification possibile, poiché corrisponde ad un numero inferiore di cicli di programmazione e cancellazione sulla memoria flash, permettendo ad un SSD di durare più a lungo.[1]

Note

  1. ^ a b c d Hu, X.-Y. and E. Eleftheriou, R. Haas, I. Iliadis, R. Pletka, Write Amplification Analysis in Flash-Based Solid State Drives, su citeseerx.ist.psu.edu, IBM, 2009, CiteSeerX10.1.1.154.8668. URL consultato il 2 giugno 2010.
  2. ^ Smith, Kent, Benchmarking SSDs: The Devil is in the Preconditioning Details (PDF), su sandforce.com, SandForce, 17 agosto 2009. URL consultato il 28 agosto 2012.
  3. ^ Lucchesi, Ray, SSD Flash drives enter the enterprise (PDF), su silvertonconsulting.com, Silverton Consulting, September 2008. URL consultato il 18 giugno 2010.
  4. ^ Kerekes, Zsolt, Western Digital Solid State Storage - formerly SiliconSystems, su storagesearch.com, ACSL. URL consultato il 19 giugno 2010.
  5. ^ Shimpi, Anand Lal, OCZ's Vertex 2 Pro Preview: The Fastest MLC SSD We've Ever Tested, su anandtech.com, AnandTech, 31 dicembre 2009. URL consultato il 16 giugno 2011.
  6. ^ Andrew Ku, Intel SSD 520 Review: SandForce's Technology: Very Low Write Amplification, su Tomshardware, 6 febbraio 2012. URL consultato il 10 febbraio 2012.
  7. ^ Thatcher, Jonathan, NAND Flash Solid State Storage Performance and Capability – an In-depth Look (PDF), su snia.org, SNIA, 18 agosto 2009. URL consultato il 28 agosto 2012.
  8. ^ Hu, X.-Y. e R. Haas, The Fundamental Limit of Flash Random Write Performance: Understanding, Analysis and Performance Modelling (PDF), su domino.watson.ibm.com, IBM Research, Zurich, 31 marzo 2010. URL consultato il 19 giugno 2010.
  9. ^ Agrawal, N., V. Prabhakaran, T. Wobber, J. D. Davis, M. Manasse, R. Panigrahy, Design Tradeoffs for SSD Performance, su citeseerx.ist.psu.edu, Microsoft, June 2008. URL consultato il 2 giugno 2010.

Voci correlate

Altri progetti