Flashspeicherzellen können nur eine begrenzte Anzahl von Schreibzyklen durchführen. Nach Erreichen der maximalen Schreibzyklen ist die Zelle defekt.
Deshalb versucht der SSD-Controller die Daten gleichmäßig auf alle Speicherzellen zu verteilen („Wear Leveling“). Dabei fasst der Controller für Schreibvorgänge Speicherzellen in 4-KB-Böcken zusammen. Schreibt der Controller beispielsweise nacheinander eine 1 KB, 2 KB und 5 KB große Datei, belegen diese insgesamt 4-KB-Blöcke, also 16 KB, obwohl sie nur halb so viel Speicherplatz benötigen.
Dies führt zu einer Blockfragmentierung der SSD: Am Anfang kann der Controller mit vollem Tempo in freie Blöcke schreiben. Sind jedoch alle Blöcke belegt, muss der Controller bereits beschriebene Blöcke einlesen, zwischenspeichern, umgruppieren und neu schreiben („read-modify-write“). Das kostet erheblich mehr Zeit, als die Daten einfach in leere Blöcke zu schreiben. Um die Blockfragmentierung einer SSD kontinuierlich gering zu halten, verfügen moderne SSDs über eine automatische Speicherbereinigung („Garbage Collection“), die Daten umgruppiert, sobald die SSD im Leerlauf ist, also nichts zu tun hat. Das Betriebssystem verschärft das Problem der Blockfragmentierung da es permanent nicht mehr gebrauchte Daten löscht – etwa temporäre Dateien, – ohne dies dem SSD-Controller mitzuteilen. Diese Blöcke erfasst die Garbage Collection nicht. Dieses Problem löst der TRIM-Befehl „ATA8 ACS2 Data Set Management Trim Attribut“. Er teilt dem SSD-Controller mit, welche Blöcke Datenmüll enthalten, die er löschen kann. Nur bei Windows 7 läuft die Speicherbereinigung via TRIM automatisch ab.
Schreibe einen Kommentar