SSD имеют больше блоков, чем указанная заявленная емкость. Эти блоки используются как часть процесса выравнивания износа, а также замены неисправностей, когда блоки полностью изнашиваются. Из-за этого контроллер SSD должен отслеживать, какие блоки, которые он видит, в настоящий момент представлены системе, а какие логические блоки.
В отсутствие TRIM, когда поступает запись для грязного блока (который уже содержит данные в отношении SSD), происходит одна из двух вещей:
- Контроллер считывает старый блок в локальную память.
- Контроллер изменяет необходимые биты.
- Контроллер переписывает весь блок в старый блок
Однако из-за выравнивания износа это более вероятно:
- Контроллер считывает старый блок в локальную память.
- Контроллер изменяет необходимые биты.
- Контроллер записывает весь блок в новый блок в зарезервированной части
- Контроллер обновляет свое логическое отображение для новой пары логический блок: физический блок.
- Контроллер помечает старый блок как часть резерва.
Ключевым моментом здесь является то, что сам контроллер SSD также сохраняет битовую карту блоков. В отличие от битовой карты файловой системы, она сопоставляет логические блоки с физическими блоками, и это может изменяться каждый раз, когда происходит запись.