Устройства флэш-памяти (которые используются для современных твердотельных накопителей) не могут записывать произвольные данные в любой момент; перед записью в ячейку (обычно 4 КБ) необходимо сначала удалить. К сожалению, операция удаления очень медленная; именно поэтому флэш-устройства были намного медленнее, чем магнитные накопители, несмотря на отсутствие движущихся частей.
Современные твердотельные накопители скрывают время стирания, поддерживая набор предварительно стертых ячеек, что означает, что команда записи не будет немедленно перезаписывать существующие данные, вместо этого контроллер накопителя выбирает стертую ячейку, переназначает ее и записывает с новыми данными. Это (и несколько стратегий кэширования записи размышлению) дает приводу огромный прирост скорости, значительно превосходящие магнитные диски.
Чтобы гарантировать, что всегда есть набор предварительно удаленных ячеек, каждый раз, когда ячейка не нужна, накопитель планирует ее для фонового стирания и добавляет в список платных ячеек.
К сожалению, существующие файловые системы не удосужились сообщить накопителю, когда сектор свободен. В конце концов, диск должен был быть просто тупым хранилищем битов. Удаление файла или любой другой операции, которая помечает сектор как свободный от точки зрения файловой системы, было лишь отметкой в некоторой структуре метаданных. Сам сектор не был затронут. Даже если файловая система очистит его, записав поверх него нули, накопитель не сможет узнать, означает ли это, что сектор свободен или пользователь хочет получить несколько нулей в файле. Через некоторое время у накопителя не будет свободной ячейки для стирания перед записью; и производительность трагически ухудшилась.
Инструкция TRIM была быстро составлена и принята большинством поддерживаемых файловых систем. Это простой сигнал, который файловая система использует, чтобы сообщить накопителю, что содержимое сектора больше не важно. Как только все сектора, отображенные в ячейке, освобождаются, контроллер SSD удаляет ячейку и планирует ее стирание. Если хост читает эти сектора, SSD не будет загружать данные из Flash, он немедленно отвечает нулями; но самым важным эффектом является постоянное пополнение списка предварительно удаленных ячеек.
Тем не менее, большинство SSD имеют меньшую емкость, чем физический размер флэш-памяти, иногда до 75%. Это позволяет хранить некоторые неиспользуемые ячейки даже на 100% заполненной системе, так что (перезапись) записи используемых секторов все еще происходит быстро.