Write amplification: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m eccesso di a capo
clean up, typos fixed: ò , → ò, -underscore da wl, +formatnum e sposto in commento parte da tradurre. Sostituisco "see also" con "vedi anche" ed elimino graffe inutili. using AWB
Riga 16:
{{See also|Memoria flash|Unità a stato solido|Flash file system}}
[[File:NAND Flash Pages and Blocks.svg|frame|Un esempio di memoria flash NAND che scrive dati in 4&nbsp;KiB pagine e cancella dati in 256&nbsp;KiB blocchi.<ref>{{Cita web|url=http://www.snia.org/sites/default/education/tutorials/2009/spring/solid/JonathanThatcher_NandFlash_SSS_PerformanceV10-nc.pdf |titolo=NAND Flash Solid State Storage Performance and Capability &ndash; an In-depth Look |autore=Thatcher, Jonathan |data=18 agosto 2009 |editore=SNIA |accesso=28 agosto 2012}}</ref>}}]]
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à a stato solido|unità stato solido]], tutte le [[Memoria_flashMemoria flash#Il_transistor_floating_gateIl transistor floating gate|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 [[Unità a stato solido#Controller|controller]] dell'unità, che si occupa di gestire la memoria flash e le [[Interfaccia_Interfaccia (informatica)|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]].<ref>{{Cita web|url=http://domino.watson.ibm.com/library/cyberdig.nsf/papers/50A84DF88D540735852576F5004C2558/$File/rz3771.pdf |titolo=The Fundamental Limit of Flash Random Write Performance: Understanding, Analysis and Performance Modelling |autore1=Hu, X.-Y. |autore2=R. Haas |lastauthoramp=yes |editore=IBM Research, Zurich |data=31 marzo 2010 |accesso=19 giugno 2010}}</ref>
 
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.<ref name="IBM_WA" /><ref name="IBM_Perf">{{Cita web|url=http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.141.1709 |titolo=Design Tradeoffs for SSD Performance |autore=Agrawal, N., V. Prabhakaran, T. Wobber, J. D. Davis, M. Manasse, R. Panigrahy |data= June 2008 |editore=[[Microsoft]] | citeseerx = 10.1.1.141.1709|accesso=2 giugno 2010}}</ref>
 
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 [[Memoria_flashMemoria flash#Programmazione_e_cancellazioneProgrammazione e cancellazione|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.<ref name="IBM_WA" />
 
== Calcolo del valore ==
La write amplification è stata presente negli SSD anche prima che il termine fosse coniato, ma è stato nel 2008 che sia [[Intel]] che la SiliconSystems iniziarono ad usare il termine nelle loro pubblicazioni.<ref name="Zsolt_Silicon_Systems" />
Una semplice formula per calcolare il valore della write amplification di un SSD è:<ref name="IBM_WA" /><ref name="OCZ_WA">{{Cita web|url=http://www.oczenterprise.com/whitepapers/ssds-write-amplification-trim-and-gc.pdf |titolo=SSDs - Write Amplification, TRIM and GC |editore=OCZ Technology |accesso=13 novembre 2012}}</ref><!-- All SSDs include some level of garbage collection, but they may differ in when and how fast they perform the process.<ref name="OCZ_WA" /> Garbage collection is a big part of write amplification on the SSD.<ref name="IBM_WA" /><ref name="OCZ_WA" /><ref>{{Cita web|url=http://www.intel.com/cd/channel/reseller/asmo-na/eng/products/nand/feature/index.htm |titolo=Intel Solid State Drives |data= |editore=Intel |accesso=31 maggio 2010}}</ref>-->
 
: <math>\frac{\text{informazioni scritte in memoria flash}}{\text{informazioni scritte dal sistema}} = \text{write amplification}</math>
 
== Fattori condizionanti il valore ==
Molti fattori condizionano la write amplification di un SSD. La tabella di seguito lista i valori primari e in che modo questi condizionino il fenomeno. Per quelli che sono variabili, la tabella annota se vi sia una [[Proporzionalità_Proporzionalità (matematica)|proporzionalità]] ''diretta'' piuttosto che ''inversa''. Ad esempio, se il quantitativo di over-poisoning dovesse aumentare, allora la write amplification subirebbe una diminuzione (proporzionalità inversa). Se il valore è invece una funzione binaria (''attiva'' o ''disattiva'') allora sarà specificato anche se la relazione dovesse essere ''positiva'' piuttosto che ''negativa''.
 
{| class="wikitable sortable"
Riga 120:
 
== Garbage collection ==
{{SeeVedi alsoanche|Garbage collection}}
[[File:Garbage Collection.png|thumb|upright=1.5|Le pagine sono scritte nei blocchi fino a quando non vengono riempiti. Poi le pagine con le informazioni attuali sono spostate in nuovi blocchi e quelli precedenti vengono cancellati<ref name="IBM_WA" />}}]]
 
I dati sono scritti sulla memoria flash in unità chiamate pagine (costituite da più celle). La memoria può essere cancellata solo in unità più grandi chiamate blocchi (costituiti da più pagine).<ref name="L Smith">{{Cita web|url=http://www.snia.org/sites/default/education/tutorials/2009/spring/solid/JonathanThatcher_NandFlash_SSS_PerformanceV10-nc.pdf |titolo=NAND Flash Solid State Storage Performance and Capability &ndash; an In-depth Look |autore=Thatcher, Jonathan |data=18 agosto 2009 |editore=SNIA |accesso=28 agosto 2012}}</ref> Se le informazioni in qualcuna delle pagine del blocco non sono più necessarie (sono anche chiamate pagine di stallo), solo le pagine con informazioni valide in quel blocco sono lette e riscritte in un altro blocco libero precedentemente pulito.<ref name="K Smith" /> Successivamente le pagine lasciate libere dal non aver mosso le informazioni di stallo sono libere per i nuovi dati. Questo processo è chiamato [[garbage collection]](GC).<ref name="IBM_WA" /><ref name="OCZ_WA"/> Tutti gli SSD includono un qualche livello di garbage collection, che può variare nella quantità e nella velocità di esecuzione del processo.<ref name="OCZ_WA" />. Il garbage collection è un fattore determinante per la write amplification su di un SSD.<ref name="IBM_WA" /><ref name="OCZ_WA" />
Riga 139:
}}</ref><ref name="Drossel">{{Cita web|url=http://www.snia.org/events/storage-developer2009/presentations/wednesday/GaryDrossel_Methodologies_SSD_Usable_Life.pdf |titolo=Methodologies for Calculating SSD Useable Life |autore=Drossel, Gary |editore=Storage Developer Conference, 2009 |data=14 settembre 2009 |accesso=20 giugno 2010}}</ref><ref name="Smith_2012">{{Cita web|url=http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2012/20120822_TE21_Smith.pdf |titolo=Understanding SSD Over-provisioning |cognome=Smith |nome=Kent |data=1º agosto 2011 |p=14 |sito=FlashMemorySummit.com |accesso=3 dicembre 2012}}</ref>
 
La prima fonte di over-provisioning è data dalla computazione della capacità e dall'uso di [[gigabyte]] (GB) piuttosto che di [[gibibyte]] (GiB). Sia i produttori di HDD che di SSD utilizzano il termine GB per rappresentare un ''gigabyte decimale'' 1,000,000,000 (=&nbsp;10<sup>9</sup>) di byte. Come la maggior parte degli altri dispositivi di allocazione eletronici, la memoria flash è assemblata in potenze di due, perciò calcolare la capacità fisica di un SSD dovrebbe basarsi su 1,073,741,824 (=&nbsp;2<sup>30</sup>) per ''GB binario'' o GiB. La differenza tra questi due valori è del 7.37% (=&nbsp;(2<sup>30</sup>&nbsp;− 10<sup>9</sup>)&nbsp;/ 10<sup>9</sup>&nbsp;× 100%). Perciò , un SSD di 128&nbsp;GB con 0% di over-provisioning fornisce 128,000,000,000 di byte all'utente (su un totale di 137,438,953,472). Questo 7.37% iniziale è tipicamente non calcolato nel numero totale di over-provisioning, e il vero quantitativo disponibile è solitamente inferiore, poiché una parte dello spazio è necessario al controller per tenere traccia di informazioni non relative al sistema operativo (come lo le flag di status di un blocco).<ref name="Jim_Bagley" /><ref name="Smith_2012" /> La cifra di 7.37% può in realtà estendersi fino a 9.95% nel caso di terabyte (TB), e poiché i produttori sfruttano questa divergenza tra le [[unità di misura|unità]] per i dispositivi da 1 o 2&nbsp;TB con le rispettive capacità di 1000 o e di 2000&nbsp;GB (931 ande 1862&nbsp;GiB), rispettivamente, invece di 1024 e 2048&nbsp;GB (posto che 1&nbsp;TB = 1,000,000,000,000{{formatnum:1000000000000}} di byte in termini decimali, ma 1,099,511,627,776{{formatnum:1099511627776}} in termini binari).
 
<!-- da tradurre
Riga 149:
 
Una semplice formula per calcolare il quantitativo di over-provision di un SSD è:<ref name="Smith_2012" />
 
 
<math>\frac{\text{dimensioni fisiche}-\text{dimensioni visibili}}{\text{dimensioni visibili}} = \text{over-provision}</math>