Was genau bewirkt "TRIM" lt. Wiki entfernt Leerzeichen vor und hinter einer Zeichenkette.
Was heißt das für uns (vorteil)
Heinz
Du schaust schlicht auf das falsche TRIM - hier wohl eine Art Funktion für eine Programmiersprache. Hat mit SSDs nichts zu tun. Das TRIM-Kommando im ATA-Standard ist dafür gedacht, die SSD vor unnötigem Schreiben zu bewahren.
Flash-Zellen sind zu Blöcken zusammengefasst, die immer nur auf einmal beschrieben werden können. So ein Block kann zum Beispiel 1024 KB haben - nehmen wir auch an, davon seien 1020 KB gefüllt. Wenn nun also 4 KB Daten vom Betriebssystem geschrieben werden sollen, und der Wear-Leveling-Algorithmus der SSD stellt fest, dass unser Block erst wenig verwendet wurde, und die 4 KB da noch reinpassen, dann passiert folgendes:
- Auslesen und Zwischenspeichern des kompletten Blocks
- Einfügen der 4 KB in die Ansammlung an Daten
- Zurückschreiben von 1024 KB in den Block
Das ist ziemlich Ineffizient, aber notwendig, denn der Block kann ja nur auf einmal geschrieben werden. Würde man die 4 KB direkt schreiben, wären die restlichen 1020 mit Nullen überschrieben!
Allerdings gibt es hier ein Problem, da das Betriebssystem komplett vom Blockaufbau der Platte getrennt ist. Es weiß, dass es mal Daten XYZ auf der SSD gespeichert hat; aber wo genau die liegen, das entscheidet der Controller völlig unabhängig. Dadurch kann das Betriebssystem keine Daten auf der SSD direkt löschen. Es kann zwar dem Controller die Erlaubnis geben, den Speicherplatz, den sich der Controller mal ausgesucht hat, bei Gelegenheit für etwas anderes zu verwenden; aber die einzelnen Bits der Daten blieben in ihren Speicherzellen liegen - jedes für sich allein. Is dem Controller egal.
Nehmen wir mal an, von den 1020 KB, dir ursprünglich in unserem Block saßen, waren 800 KB eine temporäre Internetdatei, die mittlerweile gelöscht wurde. Das Betriebssystem weiß das. Der Controller aber kann die Datei nicht löschen, denn er kann nur den gesamten Block auf einmal löschen, und zwar im Zuge eines Schreibvorgangs. Er weiß noch nicht mal, dass die 800 KB dort zufällig eine komplette Datei darstellen - Mauerstein rein oder Mauerstein raus, ja, aber halbe Mauersteine? Dateien? Was das denn?
Er wird also wieder brav den kompletten Block auslesen, die 4 KB zu den existierenden 1020 hinzufügen, und den ganzen Block wieder zurückschreiben. Und das, obwohl er 800 KB davon gar nicht hätte schreiben müssen. Was für eine Verschwendung - schließlich hält jede der vielen Speicherzellen innerhalb eines Blocks nur eine beschränkte Anzahl an Schreibvorgängen aus!
ATA TRIM ist nichts weiter als ein neues Schlüsselwort, dass das Betriebssystem dem Controller zuruft, wenn es eine Datei löscht. Frei nach dem Englischen "to trim" = "abschneiden", versteht der Controller von jetzt an: hier habe ich Daten aus einem Block gelesen, die das Betriebssystem gar nicht mehr haben will. Ich brauche sie nicht zurückschreiben. Schnipp schnipp, weg damit! Und die Speicherzellen leiden nicht mehr unter unnötigen Schreibzugriffen.