Os SSDs têm mais blocos além do que a capacidade declarada indicaria. Esses blocos são usados como parte do processo de nivelamento de desgaste, bem como substituições de falhas, pois os blocos se desgastam completamente. Por causa disso, o controlador do SSD tem que acompanhar quais blocos ele vê atualmente apresentados ao sistema como blocos lógicos.
Na ausência de TRIM, quando uma gravação chega para um bloco sujo (um que já possui dados no que diz respeito ao SSD), uma de duas coisas acontece:
- O controlador lê o bloco antigo na memória local.
- O controlador modifica os bits necessários.
- O controlador reescreve todo o bloco para o bloco antigo
No entanto, devido ao nível de desgaste, isso é mais provável:
- O controlador lê o bloco antigo na memória local.
- O controlador modifica os bits necessários.
- O controlador grava todo o bloco em um novo bloco na parte reservada
- O Controlador atualiza seu mapeamento lógico para o novo par bloco lógico: bloco físico.
- O Controlador sinaliza o bloco antigo como parte da Reserva.
A principal coisa aqui é que o próprio controlador SSD também mantém um bitmap de blocos. Ao contrário de um bitmap do sistema de arquivos, ele está combinando blocos lógicos com blocos físicos, e isso pode mudar toda vez que uma gravação acontece.