SSDs haben mehr Blöcke, als die angegebene Kapazität angibt. Diese Blöcke werden als Teil des Verschleißniveaus sowie als Ersatz für Fehler eingesetzt, da Blöcke vollständig abgenutzt sind. Aus diesem Grund muss der Controller der SSD nachverfolgen, welche Blöcke dem System derzeit als welche logischen Blöcke angezeigt werden.
In Abwesenheit von TRIM, wenn ein Schreibvorgang für einen Dirty-Block eintrifft (einer, der bereits Daten enthält, was die SSD betrifft), passiert eines von zwei Ereignissen:
- Der Controller liest den alten Block in den lokalen Speicher.
- Der Controller ändert die benötigten Bits.
- Der Controller schreibt den gesamten Block in den alten Block
Dies ist jedoch aufgrund von Verschleißniveaus wahrscheinlicher:
- Der Controller liest den alten Block in den lokalen Speicher.
- Der Controller ändert die benötigten Bits.
- Der Controller schreibt den gesamten Block in einen neuen Block im reservierten Teil
- Der Controller aktualisiert seine logische Zuordnung für das neue Paar aus logischem Block: physischer Block.
- Der Controller kennzeichnet den alten Block als Teil von Reserve.
Der Schlüssel dazu ist, dass der SSD-Controller selbst eine Bitmap von Blöcken führt. Im Gegensatz zu einem Dateisystem-Bitmap werden logische Blöcke mit physischen Blöcken abgeglichen. Dies kann sich bei jedem Schreibvorgang ändern.