SSD Reboot

Storage & Speicher | HT4U.net | Seite 2

Auffrischung SSD Technik


Der Vollständigkeit halber wollen wir hier noch einmal kurz die Grundlagen der SSD-Speicher ansehen, da einige Performanceeinflüsse nur zusammen mit dem technischen Hintergrund verständlich sind.

Struktur


Eine SSD besteht aus einem oder mehreren Speicherchips, die auf NAND-Flash basieren. Die Bezeichnung NAND leitet sich aus den not and Logikgattern ab, welche die Grundlage dieses Flash-Speichers sind.Dieser Flash-Speicher ist in Seiten (pages) und Blöcke organisiert. Seiten sind dabei die kleinste beschreibbare Einheit und aktuell meist 4 KiB groß. Ein einzelnes bitweises Schreiben ist nicht möglich. Zusätzlich gibt es eine weitere wesentliche Einschränkung: Seiten können nicht einfach überschrieben werden, denn die Speicherzellen einer Seite müssen vor einem neuen Schreibvorgang komplett gelöscht werden. Dummerweise geht dies leider nicht so einfach. Die Speicherzellen können nur in größeren Gruppen entladen werden, den oben erwähnten Blöcken, die oft auch als erasable Block (löschbarer Block) bezeichnet werden. Nehmen wir als Beispiel eine (sehr) kleine SSD mit vier Blöcken, die aus jeweils vier Seiten bestehen.

Bild: SSD Reboot

Während in unserer Beispiel-SSD vier Seiten mit je 4KiB einen 16 KiB erasable Block bilden, sind es in der Praxis meist 128 bis 256 Seiten mit je 4 oder 8KiB, die einen 512 bis 2048 KiB großen erasable Block bilden. Diesen kann der Controller erst dann löschen, wenn in keiner Seite des Blocks noch referenzierte, aktuelle Daten vorliegen. Alle Seiten müssen leer oder frei sein.

Leer oder frei?


Leer oder frei, das klingt beides doch gleich? Ist es in diesem Zusammenhang jedoch leider nicht. Leer bedeutet, dass alle Zellen einer Seite entladen – eben leer – sind. Eine solche Seite kann direkt neu beschreiben werden. Die Speicherzellen einer freien Seite enthält dagegen noch Ladungen von nicht mehr aktuellen Daten. Wie kann es aber zu einer solchen Situation kommen?

Betrachten wir das an unserer unnatürlich kleinen Beispiel-SSD: Anfangs sind noch alle Speicherzellen leer. Aus Sicht eines Betriebssystems besteht ein Datenträger nur aus einer Reihe von logischen LBA-Blöcken (Logische Blockadressierung), die von Null aufwärts gezählt werden. Das Betriebssystem teilt dem SSD-Controller beispielsweise mit: „Schreibe Datenfolge X in LBA-Block 12“ oder „lese die Daten aus LBA-Block 14“. Nun weist in unserem Beispiel das Betriebssystem den Controller an, eine 10 KiB kleine Datei (Datei 1) an der LBA-Adresse 0 zu speichern. Der Controller speichert die Datei in die ersten drei Seiten des ersten Blocks und merkt sich, dass die Daten von LBA-Adresse 0 in Block 1, Seite 1 bis 3 gespeichert wird. Zusätzlich wird noch eine weitere Datei (Datei 2) gespeichert, die ist aber nur 3KiB groß und passt daher in eine einzelne Seite (Block1, Seite 4).

Bild: SSD Reboot

Jetzt fällt uns auf, das wir in die erste Datei Mist geschrieben haben, ändern den Inhalt und speichern die Datei wieder ab. Jetzt kommen die oben erwähnten Einschränkungen zum Tragen: der Controller kann weder die Seiten 1 bis 3 überschreiben, noch den Block einfach löschen, da ja in der vierten Seite eine weitere Datei liegt, die nicht verloren gehen darf. Ergo wird "Datei 1" einfach in noch freie Seiten eines anderen Blocks geschrieben.
Der Controller merkt sich, dass die ersten drei Seiten zwar nicht mehr leer (in den Speicherzellen befinden sich ja noch Ladungen), aber dafür frei sind, denn es befinden sich ja keine aktuellen, gültigen Daten mehr darin. Gleichzeitig muss er noch das Adress-Mapping ändern, denn die Daten von LBA-Block 0 befinden sich jetzt nicht mehr in Block 1, Seite 1 bis 3, sondern in Block 2, Seite 1 bis 3.

Bild: SSD Reboot

Wear Leveling


Selbst wenn "Datei 2" nicht vorhanden gewesen wäre und der Controller den ersten Block einfach hätte löschen können, versucht er dennoch im Rahmen des sogenannten Wear Leveling (zu Deutsch in etwa: Abnutzungsausgleich), niemals ständig auf die gleichen Zellen zu speichern, um die Haltbarkeit der Zellen zu verlängern. Da Speicherzellen nur eine begrenzte Anzahl an Schreibzugriffen verkraften, wäre es kontraproduktiv, oft geänderte Dateien immer in den gleichen Zellen zu speichern, da diese sich dann ungleichmäßig abnutzen. Das Wear Leveling versucht also, die Belastung der Speicherzellen möglichst gleichmäßig zu verteilen.

 



Jetzt kostenlosen HT4U.net-Newsletter abonnieren

* indicates required