Embora o cache cause parte disso, esse não é o único fator. Se o cache fosse o único fator, esperaríamos que a velocidade de gravação caísse rapidamente de várias centenas de MB / s para a velocidade de gravação real da unidade muito rapidamente e permanecesse lá pelo resto da gravação. No entanto, não é isso que observei ao realizar grandes transferências de e para o disco (por exemplo, gravar imagens de inicialização). Em vez disso, o que observo é que a velocidade diminui gradualmente ao longo de toda a operação.
Essa desaceleração é causada pela remanência de dados no (s) chip (s) flash (s) usado (s) para armazenar os dados, exigindo que alguns dos blocos sejam gravados em mais de uma vez.
Dentro de um chip flash, há um bloco de dados que pode ser gravado. Ao escrever, há apenas duas coisas que o computador pode fazer: ele pode apagar um bloco inteiro ou alterar alguns (ou todos) dos bits em um bloco de 0 para 1.
No entanto, alguns desses blocos são melhores que outros, especialmente em unidades flash de baixa qualidade e, como resultado, ao gravar novos dados nele, alguns bits às vezes podem voltar a 0 sozinhos logo após serem gravados e não mude. Portanto, ao gravar em um bloco, o sistema operacional precisa verificar se todos os dados foram gravados corretamente e, caso contrário, é necessário refazer o bloco gravando os mesmos dados no mesmo bloco duas ou três vezes até que os dados grudem.
Portanto, quando seu computador está gravando um monte de dados na unidade flash, eis uma explicação (não completamente precisa, mas suficientemente boa) de como isso ocorre:
- Pegue o primeiro conjunto de blocos a ser escrito e escreva todos.
- Leia todos os blocos que acabamos de escrever e faça uma lista dos que não correspondem
- Escreva o próximo conjunto de blocos, juntamente com os que não foram escritos corretamente da última vez.
- Repita 2-3 até que todos os blocos tenham sido escritos corretamente.
Quando o computador está gravando na unidade, está relatando a taxa na qual está gravando blocos na unidade pela primeira vez. Como ele também precisará reescrever blocos anteriores ao mesmo tempo, a taxa de transferência total que pode ser usada para blocos virgens diminui à medida que o número de reescrições que também precisam ocorrer aumenta. Assim, a velocidade aparente de gravação diminui com o tempo.