TRIM, Wiper (aka Performance Refresh Tool), Garbage Collection (GC) usw.
TRIM, Wiper (aka Performance Refresh Tool), Garbage Collection (GC) usw.
TRIM ist ein Befehl. Dieser Befehl teilt dem SSD-Controller mit, dass bestimmte Dateien bzw. Bereiche im Dateisystem invalide sind bzw. gelöscht wurden, mehr nicht. Was der Controller damit macht, ist nirgends festgeschrieben. Er könnte z.B. alle Blöcke, die nach dem Löschen vollständig mit invaliden Daten gefüllt sind, reinigen. Es ist sehr wahrscheinlich, dass alle aktuellen Controller genau das machen.
Wiper ist ein Tool für Indilinx-SSDs. Es fragt das Betriebssystem einfach, wo valide Daten gespeichert sind und vergleicht das mit den Informationen, die der Controller aktuell hat. Daraufhin können dann entsprechend invalide Bereiche gelöscht werden. Der Effekt ist der gleiche wie bei TRIM, aber die Vorgehensweise ist anders.
AutoTRIM gibt es nicht. Der Begriff wird häufig (fälschlicherweise) verwendet, um die automatische Säuberung von Blöcken mit invaliden Daten unter Windows 7 zu bezeichnen, die der Controller nach Erhalt von TRIM ausführt.
Manuelles TRIM gibt es auch nicht. Es wird aber häufig als Äquivalent für die Verwendung des Wiper Tools verwendet.
Beispiel:
Nehmen wir an, dass wir Block A und B haben, beide komplett gefüllt. Jetzt werden die Dateien in Block B gelöscht. Der Controller in der SSD erfährt das aber normalerweise nicht. Unter Windows 7 wird bei Löschen ein TRIM-Befehl gesendet, der den Controller darüber informiert, das Block B jetzt leer ist. TRIM ist also so etwas wie eine Info-Mail.
Wiper fragt das Betriebssystem, welche Blöcke belegt sind. Windows antwortet dann, dass nur Block A belegt ist.
TRIM = Info-Mail vom Betriebssystem an den Controller
Wiper = Anfrage an das Betriebssystem mit anschließender Info-Mail an den Controller
Garbage Collection ist eine Art Defragmentierung. GC sucht sich die Blöcke heraus, die nur teilweise befüllt sind. Diese Daten werden dann in den Cache geladen, zusammen in einen Block geschrieben und der nun freie Block wird dann gelöscht.
Beispiel:
Wir haben drei Blöcke, die alle zu 33 Prozent gefüllt sind. GC liest diese Daten alle in den Cache, löscht alle drei Blöcke und schreibt dann alles zusammen in einen Block. Somit hat man wieder zwei freie Blöcke, die schnell beschrieben werden können.
Das Problem ist, dass GC keine Ahnung hat, ob die Daten in den Blöcken valide oder invalide sind. Es wäre natürlich viel einfacher, wenn der Controller vor dem hin- und herschieben der Daten wüsste, welche valide und unvalide sind. Deshalb sind TRIM und GC zusammen so sinnvoll, weil TRIM genau diese Information liefert.