Existe um equívoco. O recorte não causa gravações extras, diminui .
Um SSD, ou melhor, seu NAND, tem duas noções de "blocos" dos quais um é chamado bloco (geralmente algo entre 128k e 512k), e o outro que é muito mais próximo do que quer dizer quando você fala de "bloco" em termos de seu sistema de arquivos é chamado página (geralmente algo em torno de 4k). Você pode escrever uma página completa de cada vez, como faria em um disco rígido antigo, sem problemas. As coisas simplesmente funcionam como esperado.
No entanto, você não pode sobrescrever uma página, eles são gravados uma vez. Você pode, a partir de então, apenas apagar , tornando-o novamente gravável. É isso que conta para o tempo de vida da NAND. O problema é apenas ... na realidade você não pode apagar páginas. Você só pode apagar blocos (isto é, clusters de 32-64 páginas por vez).
Isto significa que quando você sobrescreve uma página ("bloco" em termos de sistema de arquivos), o controlador tem que:
- leia no bloco completo
- se existir um bloco "virgem" ou já apagado, use esse
- caso contrário, limpe o mesmo bloco
- escreva o bloco completo, tendo modificado o conteúdo da página sobrescrita
- faça uma "magia" não especificada para que os ciclos de apagamento sejam distribuídos de maneira uniforme por todos os blocos, evitando a morte prematura
Isso é um pouco simplificado, mas o princípio é assim. Um controlador smart pode fazer algo ligeiramente diferente (por exemplo, remapear as páginas logicamente, preencher todas as páginas até não restar nenhuma, e de alguma forma "lembrar" quais são boas e quais estão obsoletas, etc), mas em princípio, o fluxo de trabalho é como descrito acima.
Este é um problema na medida em que as pequenas escritas são comuns, logo você tem todos os blocos do disco gravados pelo menos uma vez. Agora, o que o controlador pode fazer? Não muito. Ele realmente não sabe o que o sistema de arquivos está fazendo ou o que é esperado, então ele tem que trabalhar na suposição mais conservadora. Ou seja, tudo e qualquer coisa que tenha sido escrita devem ser preservados.
TRIM resolve esse problema. Ele diz ao controlador que um tal e tão grande intervalo não está sendo usado , então o controlador também pode descartá-lo. Não escreve nada. Se em tudo, ele só irá apagar os blocos (no entanto, apenas uma vez, não todas as vezes). Desde que você disse ao controlador que você não está usando esses dados, pode arriscar jogá-lo fora sem danos. Agora, de repente, há blocos graváveis disponíveis novamente sem a necessidade de copiar dados e apagar repetidamente os blocos. O que não só torna as gravações mais rápidas , mas também diminui o número de apagamentos que devem acontecer.