Alle Daten die auf eine HDD oder SSD geschrieben werden, sind einer LBA zugeordnet. Bei HDDs wird daraus direkt der Zielsektor berechnet und angesprochen. Bei SSD werden die Daten in eine freie Page geschrieben und die Adresse der Page mit dem LBA verlinkt. Ab diesen Zeitpunkt sind das für den Controller günstige Daten.
Wenn diese Adresse vorher vorher schon auf Daten im Flash gezeigt hat, so sind diese Daten ab jetzt ungültig. Ohne TRIM ist das der einzige Weg, auf dem Daten ungültig werden. Kommen TRIM Befehle an, so werden die Daten die zu den darin genannten LBAs gehören ebenfalls ungültig.
Jeder Controller von Flash NAND hat eine GC, sonst könnte man je nur einmal die Kapazität beschreiben, aber nicht jeder hat eine Idle-GC. Wenn ich schon irgendwo lesen, ein Controller hätte keine GC, dann hat der Schreiber entweder keine Ahnung oder er hat die GC mit der Idle GC verwechselt. Im Prinzip ist das aber das gleiche, der Unterschied ist nur der Zeitpunkt, wann es ausgeführt wird.
Die GC muss vorhanden sein, weil das der Name für den Algorithmus ist, der das Recycling der Flash Blöcke vornimmt. Dazu werden Blöcke ausgewählt, die entweder bisher noch sehr selten gelöscht wurden (gutes Wear-Leveling) und/oder aber die viele Pages mit ungültigen Daten enthalten (geringe WA). Wie man sieht, gibt es da schon einen Zielkonflikt, das ganze ist also alles andere als einfach. Dann werden alle noch gültigen Pages in dem Block in andere, freie Pages kopiert (weil man eben nur in gelöschte Pages schreiben kann) und der Block wird gelöscht. Das nennt man GC und wenn man mehr am Stück schreibt als freier Platz für die Daten verfügbar ist, dann passiert das auch während des Schreibens.
In diesem Bild sieht man auch sehr deutlich, ab wann das passiert:
Das Bild ist von Anandtechs TRIM Test der Crucial m4 mit der 0009er FW. Bei dem Test wird die SSD voll geschrieben, 20 Minuten mit 4k Randomwrite bei QD32 gefoltert und dann wird die Schreibrate beim seq. Überschreiben gezeigt. Da erkennt man auch, dass der Controller eine gut funktionierende Idle-GC hat, die die etwa 7% (abzgl. der Verwaltungsdaten) Free Area freigeräumt hat. Deshalb können die ersten GB auch mit der vollen Performance geschrieben werden und erst dann geht dem Controller der freie Platz aus und die GC muss während des Schreibvorgang arbeiten, was die Schreibrate natürlich mindert und zwar sehr deutlich.
Bei der Octane ist es anders, da hat die Idle-GC praktisch nichts aufgeräumt und die Schreibrate bricht sofort zusammen:
Bei so einer SSD bringt es dann natürlich auch nichts, etwas Kapazität unpartitioniert zu lassen, denn der Controller verteilt die Daten eben, wie Du richtig schreibst, über den gesamten NAND Beeich. Bei der m4 wäre der Abfall aber erst später eingetreten, wenn man ein zusätzliches Overprovisionung betrieben hätte.
Ansonsten empfehle ich Dir auch noch mal in
diesen Thread zu schauen, wo es um das gleiche Thema geht. Wenn Du immer noch glaubst, dass die FW einzelner SSDs das Filesystem auswertet, dann solltest Du Dich mal fragen, wie es dann wohl funktioniert, wenn man das Filesystem softwaremäßig verschlüsselt (z.B. mit Truecrypt) oder die SSD in einem RAID einsetzt. Gerade letzteres wäre der Anfang einer Katastrophe, denn aufgrund des Strippings werden die LBAs in den Metadaten nicht mit denen der einzelnen Platten übereinstimmen und der Controller würde die falschen Daten löschen. Da auch jeder RAID Controller und jedes SW-RAID eine andere Struktur für die Verwaltungsdaten verwendet, könnte der Controller die kaum alle kennen.