Computerhardware: SSD: Controller

Innere Organisation einer SSD Bearbeiten

Die Flash-Speicherzellen sind als Speicherseiten (Pages) organisiert, die typisch 4 KByte groß sind − ebenso groß wie die Sektoren auf modernen Festplatten. Schreiben kann man nur komplette Pages. Das ist nicht anders als wie bei der Festplatte: Daten werden stets in Blöcken von 4096 Bytes (früher: 512 Byte) geschrieben, und alle datenerzeugenden Programme sind darauf eingestellt.

Mehrere Pages sind zu Blöcken zusammengeschaltet, die meist eine Größe zwischen 128 und 512 KByte haben. Bei einer Blockgröße von 256 kByte passen also 64 Speicherseiten in einen Block.

Leider haben NAND-Speicher ein Problem: Man kann alte Daten nicht einfach mit neuen Daten überschreiben, wie bei einer (Magnet-)Festplatte. Man muss erst die alten Daten löschen, bevor neue Daten geschrieben werden können. Schlimmer noch: Die SSD kann zwar einzelne Speicherseiten beschreiben, doch löschen kann sie nur ganze Blöcke.

Angenommen, der Anwender hat ein Word-Dokument auf der SSD gespeichert. Nach Änderungen speichert er das überarbeitete Dokument unter unverändertem Namen ab. Bei einer Festplatte würde das Betriebssystem einfach die alte Datei überschreiben. Bei einer SSD wird die Datei in irgend eine freie Speicherseite gespeichert und die von der früheren Dateiversion belegten Speicherseiten werden als „ungültig“, als „zum Löschen freigegeben“ markiert. Auf diese Weise sammeln sich in den Blöcken immer mehr ungültige Speicherseiten, während die Anzahl der gültigen Seiten abnimmt.

Solange es noch freie Seiten auf der SSD gibt, geht das Schreiben zügig voran und die Performance der SSD ist großartig. Doch was geschieht, wenn es keine freien Blöcke mehr gibt, um die nächste Datei zu speichern? Jetzt muss der SSD-Controller zügig einen Block zum Löschen auswählen. Es ist sinnvoll, einen Block zu wählen, in dem der Anteil der als ungültig markierten Seiten hoch ist. Der Controller kopiert die verbliebenen gültigen Speicherseiten des Blocks in einen Puffer, löscht den Block und kopiert die zwischengespeicherten Seiten zurück in den soeben gelöschten Block. Die restlichen Seiten des Speicherblocks stehen nun zum Schreiben von neuen Dateien zur Verfügung.

Wenn der Controller immer erst dann mit dem Freimachen von Speicherplatz beginnt, wenn die Schreibaufträge eintreffen, wird selbst bei guten SSDs die Schreibgeschwindigkeit um rund 40 Prozent reduziert. Es ist also wichtig, den Speicher vorsorglich aufzuräumen, damit immer eine größere Anzahl freier Blöcke für die nächsten Schreibaufträge bereitsteht. Für diese Aufräumarbeit gibt es die „Garbage Collection“.

Garbage Collection Bearbeiten

Wörtlich übersetzt handelt es sich um eine „Müllsammlung“. Der SSD-Controller sortiert seine Ressourcen: Er sucht Blöcke mit einem großen Anteil von ungültigen Speicherseiten (den „Müll“). Die restlichen gültigen Seiten aus mehreren Blöcken werden in einen neuen Block kopiert, wodurch mehrere Blöcke frei werden und gelöscht werden können.

Ein Beispiel: Wenn es mehrere Blöcke gibt, die je ein Viertel ungültige Seiten hat, kann der SSD-Controller die gültigen Seiten von je vier Blöcken auf drei leere Blöcke verteilen und dann vier Blöcke löschen. Wenig effektiv? Stimmt. Doch wenn der Controller Blöcke mit drei Viertel ungültigen Seiten hat, passen die verbliebenen Speicherseiten von vier Blöcken auf einen einzigen leeren Block und anschließend können vier Blöcke gelöscht werden!

Wie häufig sollte die Garbage Collection stattfinden?

  • Möglichst zu einem Zeitpunkt, an dem die SSD im Leerlauf ist.
  • Möglichst oft, damit möglichst viele freie Blöcke verfügbar sind.
  • Möglichst selten, um die Lebensdauer der SSD zu maximieren. Wenn es eine ausreichend große Reserve von freien Blöcke gibt, sollte der Controller die „Müllsammlung“ möglichst lange verzögern. Denn im Lauf der Zeit steigt die Zahl der Blöcke, in denen nur noch ein kleiner Teil der Speicherseiten mit gültigen Daten belegt ist. Je später das Aufräumen stattfinden kann, desto effektiver wird es und desto weniger Blöcke müssen gelöscht werden. Ein großer Speichervorrat erhöht also die Lebensdauer.

Trim Bearbeiten

Bei einer Magnetfestplatte weiß Windows genau, welche Sektoren belegt sind und welche gelöscht werden könnten, um Platz für neue Daten zu schaffen. Doch bei Magnetfestplatten ist ein vorsorgliches Löschen nicht nötig. Ganz anders bei SSD. Die Blöcke werden vom SSD-Controller verwaltet, Windows hat keinen Einblick. Die TRIM-Funktion ermöglicht Windows, dem SSD-Controller mitzuteilen, welche Dateien nicht mehr benötigt werden. Dadurch kann der Controller die belegten Speicherseiten und Blöcke vorsorglich löschen, noch bevor durch den nächsten Schreibbefehl ein Mangel an freien Blöcken entsteht.

Wear-Leveling Bearbeiten

SSDs sind nur begrenzt haltbar. Das Löschen eines Blocks lässt diesen altern, deshalb ist nur eine begrenzte Anzahl von Schreibvorgängen möglich. Aufgrund der vielen automatisierten Schreibvorgänge von Windows ist es daher umso wichtiger, durch eine optimale Konfiguration die Lebensdauer Ihrer SSD zu erhöhen. Deshalb sorgt der SSD-Controller dafür, dass alle Zellen möglichst gleich oft beschrieben werden. Dafür benutzt er eine Methode, die als „Wear Leveling“ bezeichnet wird. Dieses Wear Leveling erhöht die durchschnittliche Lebensdauer von SSDs auf mehrere Jahre.

Für das Wear Leveling benutzt der SSD-Controller zwei Tabellen: Die Dateitabelle enthält die Zuordnung der logischen zu den physischen Speicherplätzen, ähnlich wie beim FAT-Dateisystem die FAT. Zusätzlich gibt es eine Tabelle, die für jeden einzelnen Block angibt, wie oft er bisher gelöscht wurde. Wenn der SSD-Controller von Windows Daten zum Schreiben bekommt, muss er einen Block zum Beschreiben aussuchen, der bisher am seltensten gelöscht worden ist. Das ist nennt man das dynamische Wear Leveling.

Doch das reicht nicht. Es gibt Dateien, die faktisch nie geändert werden, z. B. Programmdateien. Einmal installiert, bleiben die Programmdateien in den Blöcken gespeichert, wo sie sind, bis das Programm möglicherweise deinstalliert wird. Die belegten Blöcke bleiben „frisch“, während andere Blöcke durch das häufige Löschen altern. Deshalb gibt es das statische Wear Leveling: Der Controller verschiebt von Zeit zu Zeit die „statischen“ Inhalte in häufig benutzte Blöcke. Danach können die bisher selten gelöschten Blöcke in das Wear Leveling einbezogen werden.

Allgemein wird angenommen, dass eine Flash-Speicherzelle ihre Ladung nicht verliert. Das ist nicht ganz korrekt. Es gibt einen winzigen Leckstrom. Ich möchte nicht darüber spekulieren, wie viele Wochen oder Monate es dauert, bis eine Flash-Zelle einen kritischen Teil ihrer Ladung verliert (siehe dazu den Testbericht des Datenretters "dataclinic"). Doch zum Glück wirkt das statische Wear Leveling dem entgegen: Noch bevor die gespeicherten Daten zu schwach werden, kommt jeder Speicherblock an die Reihe, umkopiert zu werden.

Es ist hilfreich, dem SSD-Controller einen großzügigen Cache zu spendieren, damit die Daten vor dem Schreiben in sinnvolle Strukturen geordnet werden können.

Durch das Wear Leveling werden alle Blöcke gleichmäßig beansprucht. Allerdings hat Windows nicht mehr unter Kontrolle, wo die Daten physisch liegen.

Over-Provisioning Bearbeiten

„Übermäßige Bevorratung“ wird es genannt, wenn die Hersteller große Speicherreserven bereitstellen, von denen das Betriebssystem nichts weiß. Selbst wenn die SSD ziemlich voll ist, hat der SSD-Controller dadurch stets einen Vorrat an leeren Blöcken, und auch bei Schreib-„Großaufträgen“ sinkt die Schreibgeschwindigkeit nicht ab.

Allerdings lässt sich das Absinken der Schreibgeschwindigkeit mit dieser Methode nur hinauszögern. Ein Ausweg aus der Misere ist der TRIM-Befehl als Teil der Festplatten-Spezifikation. Über diesen Löschbefehl teilt das Betriebssystem der Platte aktiv mit, welche Dateien es gelöscht hat. Der SSD-Controller kann die betroffenen Blöcke dann schon vor dem nächsten Schreibvorgang leeren.

Wie hoch ist der Anteil der Speicherreserve? Ebenso wie beim RAM ist die Kapazität pro Chip stets eine Potenz von Zwei: 128, 256, 512, 1024, 2048, 4092 ... GB. Bei den „Consumer-SSD“ werden von 256 GB üblicherweise 240 oder 250 GB für das Betriebssystem bereitgestellt, was einem Overprovisioning von 7 % oder nur 2,4 % entspricht. 500 von 512 oder 1000 GB von 1024 GB enthalten ebenfalls 2,4 % Reserve. Bei den „Enterprise-SSD“ werden meist 200 von 256 GB bereitgestellt. 56 GB = 28 % der Kapazität bleiben in Reserve, um die höheren Anforderungen an Geschwindigkeit und Lebensdauer zu erfüllen.

Daraus folgt: Sie haben eine einfache Möglichkeit, die Geschwindigkeit und Lebensdauer Ihrer SSD zu erhöhen: Machen Sie den Speicher nicht zu voll! Bei Magnetfestplatten verlieren Sie stark an Geschwindigkeit, wenn die Platte zu mehr als 90 % belegt ist. Doch bei SSD fängt der Verlust früher an und wirkt weitaus stärker. Auch bei der Lebensdauer gibt es einen Unterschied: Die Lebensdauer einer Magnetplatte hängt in keiner Weise davon ab, ob sie voll oder leer ist, doch bei der SSD steigt der Verschleiß einer fast vollen Platte dramatisch, weil der Controller nicht mehr effektiv aufräumen kann.

Am sichersten vermeiden Sie es durch Partitionierung, die SSD versehentlich zu voll zu schreiben. Nutzen Sie nur 90 % für Partitionen und lassen Sie 10 % der Platte ungenutzt! Dem SSD-Controller ist es egal, auf welchem Weg er zusätzliche Blöcke bekommt, um effektiver zu arbeiten.

Bad Block Management Bearbeiten

Unvermeidliche Toleranzen bei der Fertigung bewirken, dass die Speicherzellen eine unterschiedliche Anzahl von Schreibvorgängen aushalten. Erste Zellen fallen schon nach der Hälfte der durchschnittlichen Lebensdauer aus, und allmählich steigt die Zahl der defekten Zellen immer schneller an. Die Verteilung der Lebensdauer folgt ungefähr der „Normalverteilung“.

Wegen der ECC-Fehlerkorrektur gehen beim Ausfall einzelner Zellen keine Daten verloren, jedoch wird jeder Fehler vom Fehlermanagement registriert. Wenn sich in einem Speicherblock die Fehler häufen, wird er deaktiviert. Es gibt ja eine Menge Reserveblöcke.

Was geschieht, wenn die „Stille Reserve“ aufgebraucht ist? Windows bekommt eine abnehmende Kapazität der SSD gemeldet, und wenn Sie den „Füllstand“ des Speichers nicht rechtzeitig durch Auslagerung von Dateien verringern, gibt es irgendwann die Meldung „kein freier Speicherplatz“.

Verzichten Sie auf Leistungstests und Tuning-Tools Bearbeiten

SSDs sind schnell. Doch lassen Sie sich nicht verleiten, sich das mit Leistungstests bestätigen zu lassen. Die vielen Schreibzugriffe reduzieren die Lebensdauer Ihrer SSD. Ähnliches gilt für Tuning-Tools. Denn in vielen Fällen wird dabei die Festplatte mit unnötigen Schreib- und Lesezugriffen belastet. Windows Vista, Windows 7 und höher verfügen über eine komfortable Wiederherstellungsfunktion, die Ihre Dateien automatisch im Hintergrund speichert. Auch diese Funktion sollten Sie deaktivieren, sonst werden von Windows zahlreiche Lese- und Schreibzugriffe ausgeführt, um sogenannte Schattenkopien von älteren Dateiversionen zu sichern. So deaktivieren Sie die Wiederherstellungsfunktion von Windows:

  1. Über „Start“ klicken Sie mit der rechten Maustaste auf „Computer“ und wählen dann im Kontextmenü die „Eigenschaften“. Schneller geht es mit der Tastenkombination Windows-Taste und „Pause“.
  2. Klicken Sie am linken Rand auf „Computerschutz“.
  3. Markieren Sie das SSD-Laufwerk und klicken Sie auf „Konfigurieren“.
  4. Aktivieren Sie die Option „Computerschutz deaktivieren“ → „Übernehmen“ → „OK“.