Los dispositivos de memoria flash (que se usan para los SSD de hoy) no pueden escribir datos arbitrarios en ningún momento; antes de escribir en una celda (normalmente 4KB) debe borrarse primero. Desafortunadamente, la operación de borrado es muy lenta; Es por eso que los dispositivos flash eran mucho más lentos que las unidades magnéticas, a pesar de no tener partes móviles.
Los SSD modernos ocultan el tiempo de borrado al mantener un conjunto de celdas previamente borradas, lo que significa que un comando de escritura no sobrescribirá inmediatamente los datos existentes, en cambio, el controlador de la unidad elige una celda borrada, la reasigna y escribe con los nuevos datos. Eso (y varias estrategias de caché de pensamiento de escritura) le da al disco una gran velocidad, superando en gran medida las unidades magnéticas.
Para garantizar que siempre haya un conjunto de celdas borradas previamente, cada vez que no se necesita una celda, la unidad la programa para el borrado de fondo y se agrega a la lista de celdas de tarifa.
Desafortunadamente, los sistemas de archivos existentes no se molestaron en decirle a la unidad cuándo un sector estaba libre. Se suponía que la unidad era solo un tonto repositorio de bits, después de todo. Eliminar un archivo o cualquier otra operación que marque un sector como libre desde el punto de vista del sistema de archivos fue solo una marca en alguna estructura de metadatos. El sector en sí no fue tocado. Incluso si el sistema de archivos lo borró escribiendo ceros sobre él, la unidad no podría saber si eso significaba que el sector estaba libre, o si el usuario quería algunos ceros en un archivo. Después de un tiempo, la unidad no tendría ninguna celda libre para borrar antes de escribir; y rendimiento degradado trágicamente.
La instrucción TRIM fue redactada y adoptada rápidamente por la mayoría de los sistemas de archivos que se mantienen actualmente. Es una señal simple que el sistema de archivos usa para decirle a la unidad que el contenido de un sector ya no es importante. Tan pronto como todos los sectores mapeados en una celda estén libres, el controlador SSD desarma la celda y la programa para borrarla. Si el host lee esos sectores, el SSD no se molestaría en buscar desde Flash, inmediatamente responde con ceros; pero el efecto más importante es mantener la lista de celdas borradas siempre que se reponen.
Aún así, la mayoría de los SSD exponen una capacidad menor que el tamaño físico de la memoria Flash, a veces tan bajo como el 75%. Eso le permite mantener algunas celdas no utilizadas, incluso en un sistema 100% completo, de modo que (sobre) escribir sectores usados todavía es rápido.