Forum

[FAQ] SSD und der Trim-Befehl
April 14, 2011, 11:52:04
Vielen Dank an den Autor (mbs), der diesen Text hier zur Verfügung stellt.



Informationen zu Solid-State-Drives (SSD) und den Trim-Befehl

Das besondere an einem Flash-Speicher ist, dass er Informationen auch noch "ohne Strom" behält. Dazu müssen in den Transistoren, aus denen der Flash-Speicher besteht, elektrische Ladungen dauerhaft gehalten werden. Beim Löschen und Wiederbeschreiben einer solchen Speicherzelle müssen vereinfacht gesagt also physikalische "Änderungen im Material" stattfinden, ansonsten wäre eine dauerhafte Speicherung nicht machbar. Diese Änderungen nutzen den Halbleiter tatsächlich ab.

Eine normale Flash-Speicherzelle kann nicht mehr als 10.000 Mal beschrieben werden. Danach arbeitet sie möglicherweise fehlerhaft und wird vom eingebauten Controller der SSD gesperrt. Bei neueren, noch kleineren Flash-Speichern, wird dies übrigens sogar noch schlimmer: Eine 34-Nanometer-Zelle hält nur 5.000 Schreibvorgänge aus, neue 25-Nanometer-Entwicklungen nur 3.000.

In den SSDs werden zwei Techniken eingesetzt, um diese Probleme auszugleichen: Zum einen ist ein starkes Überangebot an Speicher vorhanden ("Overprovisioning"), zum anderen verwendet die SSD Verfahren zur gleichmäßigen Abnutzung ("Wear Leveling").

Overprovisioning heißt, dass in Wirklichkeit viel mehr Speicher in einer SSD steckt, als dem Benutzer mitgeteilt wird. Eine 80-GB-Platte enthält in Wirklichkeit vielleicht 100 GB oder sogar 120 GB. Der Speicher, der zuviel ist, wird als stille Reserve verwendet.

Wear Leveling heißt, dass die SSD genau Buch darüber führt, wie oft jeder Speicherblock bereits beschrieben wurde und für gleichmäßiges Abnutzen über den gesamten Bereich (inklusive Reserve) sorgt. Wird ein Speicherblock nochmals beschrieben, dann wird in Wirklichkeit wahrscheinlich nicht der gleiche Block für den neuen Inhalt verwendet, sondern ein anderer Block, der noch nicht so oft genutzt wurde.

Der TRIM-Befehl hat nur zum Teil mit dem Gleichmäßigmachen der Abnutzung zu tun. Noch wichtiger ist, dass Schreibvorgänge hierdurch stark beschleunigt werden können.

Werden bei einer normalen Festplatte die Daten eines Speicherblocks verändert, so wird dieser Block einfach mit den neuen Daten überschrieben. Genau wie bei einem Tonband ist gleichzeitiges Löschen und Neubeschreiben möglich.

Bei Flash-Zellen ist das anders: Bevor eine Flash-Zelle neu beschrieben werden kann, muss der alte Inhalt zunächst mal gelöscht werden (was ziemlich lange dauert!), danach findet der eigentliche Schreibvorgang statt. Schreiben bei Flash ist deshalb extrem viel langsamer als Lesen.

Auch hier greift die SSD zu einem Trick: Verbunden mit dem Wear Leveling sucht sich die SSD beim Schreiben einen möglichst noch fabrikneuen Block, auch hierfür dient die stille Reserve. Der muss nicht gelöscht werden und das Schreiben kann sofort beginnen. Die SSD führt außerdem darüber Buch, dass der Inhalt des alten Blocks nun ungültig ist und setzt ihn auf eine interne To-Do-Liste nach dem Motto "muss ich später mal löschen, wenn ich Zeit habe". Dieses Verfahren heißt "Garbage Collection".

Wenn die SSD aber ein gewisses Alter erreicht hat, wird es immer weniger fabrikneue Blöcke geben. Die Schreibvorgänge werden - auch zusammen mit dem Füllgrad der SSD - deshalb immer langsamer. Deshalb muss es das Ziel der SSD sein, so gut wie möglich zu erkennen, welche Flash-Blöcke in stillen Minuten wirklich gelöscht werden können.

Das Problem: Zwar erkennt die SSD, dass Daten aus einem Speicherblock nicht mehr gebraucht werden, wenn dieser Block mit neuen Daten überschrieben wird, aber sie erkennt es nicht, wenn Dateien gelöscht werden. Beim Löschen von Dateien war es nämlich bisher immer so, dass das Betriebssystem einfach nur den Eintrag im Inhaltsverzeichnis des Ordners gelöscht hat. Die Datenblöcke an sich blieben aber liegen. Die SSD "weiß" nicht, dass diese Daten nicht mehr gebraucht werden und die Flash-Blöcke gelöscht werden könnten.

Hier kommt nun der TRIM-Befehl ins Spiel: Mit diesem Befehl kann das Betriebssystem der SSD helfen und ihr bei jeder Löschung einer Datei mitteilen, welche Blöcke zu dieser Datei gehören und somit auch physisch gelöscht werden können. Betriebssystem und SSD "wissen" nun beide, welche Blöcke frei und welche gelöscht sind. Die SSD kann somit sowohl das Wear Leveling verbessern als auch die Schreibgeschwindigkeit bei zunehmendem Alter konstant halten.



Weiterführende Links:
http://de.wikipedia.org/wiki/Solid_State_Drive
http://de.wikipedia.org/wiki/TRIM

Diskussionen dazu in diesem Thread.
« Letzte Änderung: April 14, 2011, 12:26:28 von FOX »
_______
«Das Internet? Gibt's diesen Blödsinn immer noch?»  (Homer Simpson)