Write amplification: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Botcrux (discussione | contributi)
m Bot: fix errori del modulo Citazione
Pil56-bot (discussione | contributi)
m smistamento lavoro sporco e fix vari
Riga 1:
{{T|inglese|argomento = informatica|data = febbraio 2015}}
 
[[File:Write Amplification on SSD.png|thumb|alt=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.<ref name="IBM_WA" />]]
 
Riga 11 ⟶ 10:
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]]<ref name="Lucchesi">{{Cita web |url=http://www.silvertonconsulting.com/newsletterd/SSDf_drives.pdf |titolo=SSD Flash drives enter the enterprise |autore=Lucchesi, Ray |data=Septembersettembre 2008 |editore=Silverton Consulting |accesso=18 giugno 2010 |urlarchivio=https://web.archive.org/web/20110531215833/http://www.silvertonconsulting.com/newsletterd/SSDf_drives.pdf |dataarchivio=31 maggio 2011 |urlmorto=sì }}</ref> e [[Western Digital|SiliconSystems]] (acquisita da [[Western Digital]] nel 2009)<ref name="Zsolt_Silicon_Systems">{{Cita web|url=http://www.storagesearch.com/siliconsystems.html |titolo=Western Digital Solid State Storage - formerly SiliconSystems |autore=Kerekes, Zsolt |editore=ACSL |accesso=19 giugno 2010}}</ref> 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 scritture 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,<ref name="Anand_WA">{{Cita web|url=https://www.anandtech.com/show/2899 |titolo=OCZ's Vertex 2 Pro Preview: The Fastest MLC SSD We've Ever Tested |autore=Shimpi, Anand Lal |data=31 dicembre 2009 |editore=[[AnandTech]] |accesso=16 giugno 2011}}</ref> con picchi che possono scendere fino a 0.14 con il controller SF-2281.<ref>{{Cita web|url= https://www.tomshardware.com/reviews/ssd-520-sandforce-review-benchmark,3124-11.html |titolo= Intel SSD 520 Review: SandForce's Technology: Very Low Write Amplification |sito=Tomshardware|data=6 febbraio 2012 |nome= Andrew |cognome=Ku|accesso=10 febbraio 2012 }}</ref>
 
== Funzionamento elementare di un SSD ==
Riga 17 ⟶ 16:
[[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 name="L Smith" />]]
 
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 flash#Il 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 (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= Junegiugno 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 flash#Programmazione 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" />
Riga 131 ⟶ 130:
[[File:Over-provisioning on an SSD.png|thumb|upright=1.5|Le tre tipologia (livelli) di over-provisioning che si possono incontrare negli SSD<ref name="Mehling_Garbage">{{Cita web|url=http://www.enterprisestorageforum.com/technology/features/article.php/3850436/Solid-State-Drives-Take-Out-the-Garbage.htm |titolo=Solid State Drives Take Out the Garbage |cognome=Mehling |nome=Herman |editore=Enterprise Storage Forum|data=1º dicembre 2009 |accesso=18 giugno 2010}}</ref><ref name="Jim_Bagley" />]]
 
Il fenomeno dell'over-provisioning (talvolta chiamato ''OP'', ''over provisioning'' o ''overprovisioning'') è la differenza, in una [[memoria flash]], tra capacità fisica e capacità logica (resa disponibile all'utente attraverso il sistema operativo). Durante la garbage collection, il wear leveling e le operazioni di mappatura dei badblock su un SSD, lo spazio in esubero fornito dall'over-provisioning aiuta a ridurre la write amplification quando il controller scrive in memoria.<ref name="Lucchesi" /><ref name="Jim_Bagley">{{Cita web|url= http://www.plianttechnology.com/pdf/SSG-NOW_SSD_Flash_Bulletin_July_2009.pdf#page=2|urlarchivio= https://web.archive.org/web/20090902214044/http://www.plianttechnology.com/pdf/SSG-NOW_SSD_Flash_Bulletin_July_2009.pdf#page=2|titolo= Managing data migration, Tier 1 to SSD Tier 0: Over-provisioning: a winning strategy or a retreat?|data= 1º luglio 2009 |accesso= 21 giugno 2016 |dataarchivio= 2 settembre 2009|autore= Bagley, Jim |sito= plianttechnology.com|formato= PDF |p= 2}}</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 |urlmorto=sì }}</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>
|urlarchivio= https://web.archive.org/web/20090902214044/http://www.plianttechnology.com/pdf/SSG-NOW_SSD_Flash_Bulletin_July_2009.pdf#page=2
|titolo= Managing data migration, Tier 1 to SSD Tier 0: Over-provisioning: a winning strategy or a retreat?
|data= 1º luglio 2009 |accesso= 21 giugno 2016 |dataarchivio= 2 settembre 2009
|autore= Bagley, Jim |sito= plianttechnology.com
|formato= PDF |p= 2
}}</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 |urlmorto=sì }}</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 elettronici, 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 e 1862&nbsp;GiB), rispettivamente, invece di 1024 e 2048&nbsp;GB (posto che 1&nbsp;TB = {{formatnum:1000000000000}} di byte in termini decimali, ma {{formatnum:1099511627776}} in termini binari).
Riga 144 ⟶ 137:
The second source of over-provisioning comes from the manufacturer, typically at 0%, 7% or 28%, based on the difference between the decimal gigabyte of the physical capacity and the decimal gigabyte of the available space to the user. As an example, a manufacturer might publish a specification for their SSD at 100, 120 or 128&nbsp;GB based on 128&nbsp;GB of possible capacity. This difference is 28%, 7% and 0% respectively and is the basis for the manufacturer claiming they have 28% of over-provisioning on their drive. This does not count the additional 7.37% of capacity available from the difference between the decimal and binary gigabyte.<ref name="Jim_Bagley" /><ref name="Smith_2012" />
 
The third source of over-provisioning comes from known free space on the drive, gaining endurance and performance at the expense of reporting unused portions, and/or at the expense of current or future capacity. This free space can be identified by the operating system using the TRIM command. Alternately, some SSDs provide a utility that permit the end user to select additional over-provisioning. Furthermore, if any SSD is set up with an overall partitioning layout smaller than 100% of the available space, that unpartitioned space will be automatically used by the SSD as over-provisioning as well.<ref name="Smith_2012" /> Yet another source of over-provisioning is operating system minimum free space limits; some operating systems maintain a certain minimum free space per drive, particularly on the boot or main drive. If this additional space can be identified by the SSD, perhaps through continuous usage of the TRIM command, then this acts as semi-permanent over-provisioning. Over-provisioning often takes away from user capacity, either temporarily or permanently, but it gives back reduced write amplification, increased endurance, and increased performance.<ref name="Layton" /><ref name="Drossel" /><ref name="Anand_Spare_Area">{{Cita web |url=http://www.anandtech.com/show/3690/the-impact-of-spare-area-on-sandforce-more-capacity-at-no-performance-loss |titletitolo=The Impact of Spare Area on SandForce, More Capacity At No Performance Loss? |pagep=2 |authorautore=Shimpi, Anand Lal |publishereditore=AnandTech.com |data=3 maggio 2010 |accesso=19 giugno 2010}}</ref><ref>{{Cita web | url=http://www.storagereview.com/intel_ssd_520_enterprise_review |titletitolo=Intel SSD 520 Enterprise Review |quotecitazione=20% over-provisioning adds substantial performance in all profiles with write activity| firstnome=Kevin|lastcognome= OBrien | workeditore= Storage Review | data = 6 febbraio 2012 | accesso=29 novembre 2012 }}</ref><ref>{{Cita web | url=http://cache-www.intel.com/cd/00/00/45/95/459555_459555.pdf | archiveurlurlarchivio=https://web.archive.org/web/20111125012226/http://cache-www.intel.com/cd/00/00/45/95/459555_459555.pdf | archivedatedataarchivio=25 novembre 2011 | titletitolo=White Paper: Over-Provisioning an Intel SSD | publishereditore=Intel | formatformato=PDF | yearanno=2010 | accesso=29 novembre 2012 |urlmorto=sì }}</ref>
 
-->