Sebbene la memorizzazione nella cache causi in parte questo, non è l'unico fattore. Se la memorizzazione nella cache fosse l'unico fattore, ci aspetteremmo che la velocità di scrittura scenda rapidamente da diverse centinaia di MB / s alla velocità di scrittura effettiva dell'unità e rimanga lì per il resto della scrittura. Tuttavia, questo non è ciò che ho osservato durante l'esecuzione di trasferimenti di grandi dimensioni da e verso il disco (ad esempio, la masterizzazione di immagini di avvio). Invece, ciò che osservo è che la velocità diminuisce gradualmente nel corso dell'intera operazione.
Questo rallentamento è causato dalla rimanenza dei dati sui chip flash utilizzati per memorizzare i dati che richiedono la scrittura di alcuni blocchi su più di una volta.
All'interno di un chip flash, ci sono blocchi di dati su cui è possibile scrivere. Durante la scrittura, il computer può fare solo due cose: può cancellare un intero blocco o modificare alcuni (o tutti) i bit in un blocco da 0 a 1.
Tuttavia, alcuni di questi blocchi sono migliori di altri, specialmente nelle unità flash di qualità inferiore e, di conseguenza, quando si scrivono nuovi dati su di esso, alcuni dei bit possono talvolta tornare a 0 da soli subito dopo la scrittura, e don non cambia. Pertanto, quando si scrive su un blocco, il sistema operativo deve verificare che tutti i dati siano stati scritti correttamente e, in caso contrario, è necessario ripetere il blocco scrivendo gli stessi dati nello stesso blocco due o tre volte fino a quando i dati si attaccano.
Quindi, quando il tuo computer sta scrivendo un sacco di dati sull'unità flash, ecco una spiegazione (non completamente accurata, ma abbastanza buona) per come funziona:
- Prendi il primo set di blocchi da scrivere e scrivili tutti.
- Leggi tutti i blocchi che abbiamo appena scritto e crea un elenco di quelli che non corrispondono
- Scrivi la prossima serie di blocchi, insieme a quelli che non sono stati scritti correttamente l'ultima volta.
- Ripeti 2-3 finché tutti i blocchi non sono stati scritti correttamente.
Quando il computer sta scrivendo sull'unità, sta segnalando la velocità con cui sta scrivendo blocchi sull'unità per la prima volta. Dal momento che dovrà anche riscrivere i blocchi precedenti contemporaneamente, il throughput totale che può essere utilizzato per i blocchi vergini diminuisce con l'aumentare del numero di riscritture che devono avvenire. Pertanto, la velocità di scrittura apparente diminuisce nel tempo.