Si bien el almacenamiento en caché causa algo de esto, no es el único factor. Si el almacenamiento en caché fuera el único factor, entonces esperaríamos que la velocidad de escritura caiga rápidamente de varios cientos de MB / s a la velocidad de escritura real de la unidad muy rápidamente, y permanezca allí durante el resto de la escritura. Sin embargo, esto no es lo que he observado al realizar transferencias grandes desde y hacia el disco (por ejemplo, grabar imágenes de arranque). En cambio, lo que observo es que la velocidad disminuye gradualmente a lo largo de toda la operación.
Esta desaceleración es causada por la remanencia de datos en los chips flash utilizados para almacenar los datos, lo que requiere que algunos de los bloques se escriban en más de una vez.
Dentro de un chip flash, hay un bloque de datos en el que se puede escribir. Al escribir, solo hay dos cosas que la computadora puede hacer: puede borrar un bloque completo o cambiar algunos (o todos) los bits de un bloque de 0 a 1.
Sin embargo, algunos de esos bloques son mejores que otros, especialmente en unidades flash de menor calidad, y como resultado al escribir nuevos datos en él, algunos de los bits a veces pueden volver a 0 por sí mismos justo después de ser escritos, y no No cambies. Por lo tanto, al escribir en un bloque, el sistema operativo debe verificar para asegurarse de que todos los datos se escribieron correctamente, y si no fue así, debe rehacer el bloque escribiendo los mismos datos en el mismo bloque dos o tres veces hasta que los datos se peguen.
Entonces, cuando su computadora está escribiendo un montón de datos en la unidad flash, aquí hay una explicación (no completamente precisa, pero lo suficientemente buena) de cómo lo hace:
- Tome el primer conjunto de bloques para escribir y escríbalos todos.
- Lea todos los bloques que acabamos de escribir y haga una lista de los que no coinciden.
- Escriba el siguiente conjunto de bloques, junto con los que no se escribieron correctamente la última vez.
- Repita 2-3 hasta que todos los bloques se hayan escrito correctamente.
Cuando la computadora escribe en el disco, informa la velocidad a la que escribe bloques en el disco por primera vez. Como también tendrá que reescribir bloques anteriores al mismo tiempo, el rendimiento total que se puede usar para bloques vírgenes disminuye a medida que aumenta el número de reescrituras que también deben suceder. Por lo tanto, la velocidad de escritura aparente disminuye con el tiempo.