Wie man die Lebenserwartung von Flash Speicher bestimmt und warum es auf den Workload ankommt

 | 1415 Wörter


Ahoi,

Flash Speicher ist heute nicht mehr wegzudenken. Vom USB Stick über eine Festplatte bis zum UFS Speicher in Smartphones, jeder nutzt Flash Speicher bewusst oder unbewusst. Doch wie kannst du feststellen, ob ein USB Stick oder eine Festplatte für deinen Einsatzzweck geeignet ist?

Die oft verwendete TBW (Total Bytes Writte, geschriebene Daten in GB) ist nicht das, was du denkst und damit möchte ich mich heute befassen.

Wie funktioniert Flash Speicher?

Wir fangen jetzt nicht damit an, dass Fash Speicher keine beweglichen Teile besitzt, das setzten wir mal voraus ;)

Grundsätzlich ist der heute übliche NAND Flash Speicher in Zellen, Pages und Blöcke aufgeteilt. Dabei lassen sich aber immer nur ganze Blöcke beschreiben, es ist also nicht möglich, direkt eine Page oder gar eine Zelle anzusprechen. Üblicherweise sind Blöcke zwischen 16 KiB - 128 KiB groß und bestehen aus mehrere tausend Pages, welche wiederum aus tausenden NAND Speicherzellen bestehen.

Aufbau eines NAND Blocks

Wenn es nicht möglich ist, direkt eine Page oder Zelle anzusprechen, was passiert dann wenn wir nur ein paar Byte schreiben möchten, aber jeder Block ein vielfaches groß ist?

Der Bitverfall - Bit Rotting / Silent Data Corruption

In diesem Fall wird der gesamte Block, unabhängig davon wie viel oder wenig du auf ihn schreiben möchtest, ausgelesen, gelöscht, mit den neuen Daten “kombiniert” und zurückgeschrieben.

Damit stoßen wir jedoch auf eine weitere Grenze. Abhängig vom physischen Aufbau der Speicherzellen, können wir diese nur zwischen ~1000 - 100.000 Mal löschen und beschreiben. Sollte diese Grenze erreicht sein, kann physikalisch/elektronisch nicht mehr sichergestellt werden, dass vorhandene Daten korrekt geschrieben wurden und/oder sich die Zellen nicht entladen. Also ungewollt die geschrieben Daten “verschwinden”.

Der Verschleißausgleich - Wear Leveling

Damit alle Speicherzellen sich gleichmäßig abnutzen, wird über die Menge an Program-/Erase Zyklen (Schreib/Lesezyklen) buch geführt. Dafür ist unter Anderem der Controller zuständig. Vergleichbar mit einem winzigen PC, welcher die gesamte Kommunikation zwischen deinem PC und den Speicherzellen regelt, sowie für eine gleichmäßige Abnutzung und vieles mehr sorgt.

Solltest du also bspw. mit deiner Steamblibliothek die Hälfte deiner SSD befüllen, und die andere Hälfte ist leer, so würden in Zukunft nur die noch leeren Blöcke benutzt. Dann kann es aber nach einer gewissen Zeit dazu kommen, dass die Blöcke auf denen deine Steamblibliothek liegt nur einmal beschrieben wurden, die restlichen aber ein vielfaches davon.

Damit es nicht zu einem ungleichgewicht kommt, schalten sich auch hier der Controller ein. In einem Moment der Ruhe, vergleicht der Controller die P/E Zyklen aller Blöcke und verschiebt bspw. Daten von einem wenig-beschriebenen Block, zu einem der nah an seiner P/E Grenze ist.

Das garantiert über die gesamte Lebensdauer eine gleichmäßige Abnutzung aller Speicherzellen.

Schreibzyklen - P/E Zyklen

Es kommt also dazu, dass für jeden Schreibvorgang wertvolle P/E Zyklen verbraucht werden. Naturgemäß führen demnach Schreibvorgänge mit einer Datenmenge, die kleiner als ein Block ist, zu dem Löschen und Beschreiben eines ganzen Blocks. Es wird also für jede Zelle im Block ein P/E Zyklus verbraucht.

Speicherdicht

Abhängig vom physikalischen Aufbau des Speichers, reden wir hier von

  • Single-Level Cell (SLC): ~100.000 P/E Zyklen, max. Kapazität: ~2 TB
  • Multi-Level Cell (MLC): ~25.000 P/E Zyklen, max. Kapazität: ~8 TB
  • Triple-Level Cell (TLC): ~5000 P/E Zyklen, max. Kapazität: ~30 TB
  • Quad-Level Cell (QLC): ~500 P/E Zyklen, max. Kapazität: ~70 TB
SLC vs MLC vs TLC vs QLC

Quelle: https://www.integralmemory.com/articles/the-pros-and-cons-of-qlc-nand-flash/

Wie die Namen es schon vermuten lassen, kann eine SLC Speicherzelle nur ein Bit an Daten speichern, QLC Speicherzellen bis zu 4 Bit. Der größte Nachteil ist jedoch, dass sich damit auch überproportional die Lebenszeit verringert. Aus diesem Grund findet sich TLC und QLC Speicher primär im Endkundenbereich. Denn durch die höhere Speicherdichte, sinken die Produktionskosten um ein vielfaches.

TBW - Total Bytes Written

Für eine grobe Einschätzung, wie hoch die Lebenserwartung von Flash Speicher ist, geben Hersteller einen TBW Wert an. Dieser beschreibt, mit wie viel Terabyte der Speicher erwartbare beschrieben werden kann. Doch wie wird das getestet?

Spezifiziert in JESD218 und JESD219A-01 werden verschiedene Einsatzszenarien beschrieben und welche Bedingungen (Füllstand, Temperatur etc.) beim Testen eingehalten werden müssen. Dabei wird zwischen Consumer und Enterprise Tests unterschieden. Erster richtet sich an den normalen Einsatz von SSDs in z. B. PCs oder Laptops, Enterprise ist für den professionellen Einsatz in z. B. Servern vorgesehen.

Kommen wir zurück zu den TBW, diese sollen uns eine Einschätzung über die Lebensdauer des Speichers geben. Beispielhaft schlagen wir das Datenblatt der KINGSTON DC600M auf. Dort befindet sich in den Fußnoten folgender Satz:

Total bytes written (TBW) is derived from the JEDEC Enterprise Workload (JESD219A).

Es wird also eine bestimmte Anzahl an Festplatten aus der Produktion mit dem spezifizierten Workload (hier der Enterprise) getestet und am Ende kann eine Schätzung für die erwartbare Lebensdauer für diesen Einsatzzweck gegeben werden.

WAF - Write Amplification Factor

Heute ist es üblich, dass Festplatten sogenannte SMART Attribute besitzen, welche sich per Software auslesen lassen.

Diese geben verschiedenste Werte zum aktuellen Zustand der Festplatte an, unter anderem die Betriebstemperatur, Betriebsstunden, verschiedene Fehlerwerte, LBAs Written GB (geschriebene logische Blöcke in Gigabyte) und auch NAND Flash Writes GB (geschriebene physische Blöcke in Gigabyte).

Wir können also zu jedem Zeitpunkt auslesen, wie viele Daten bisher auf die gesamte Festplatte geschrieben wurden.

Daraus ergibt sich der WAF (Schreibverstärkungsfaktor):

WAF = NAND Flash Writes GB / LBAs Written GB

Wenn also ein Test abgeschlossen wurde, kann ausgelesen werden, wie viele physische und logische Blöcke geschrieben worden sind.

Daraus können wir nun die erwartbare Lebensdauer (TBW) für das Testszenario berechnen:

TBW = Größe GB * P/E Zyklen / WAF

Zusammenfassung

Flash Speicher schreibt also grundsätzlich ganz anders als herkömmliche Festplatten, und das ist seiner Bauweise geschuldet. Wir wissen nun, dass sich nicht einzelne Speicherzellen, sondern nur ganze Blöcke adressieren lassen. Das ist aber nur ein Teil der gesamten Funktionsweise, denn neben den reinen Speicherzellen befindet sich auch ein sogenannter Controller auf der Festplatte und meistens auch DRAM. Der Controller agiert hierbei als Schaltzentrale und koordiniert die Zugriffe auf den Speicher und die Kommunikation mit dem Computer bzw. Laptop. Dieser legt unter anderem auch eine Tabelle mit Verweisen auf die geschrieben Daten im DRAM ab, also auch das dieser als schnellerer Zwischenspeicher genutzt werden kann.

Wenn nun ein Schreibbefehl kommt, übernimmt der Controller die Bestimmung, welcher Block beschrieben werden soll, ließt diesen aus, speichert seinen Inhalt zwischen, ggf. kombiniert diesen mit den neuen Daten und schreibt das Ergebnis wieder zurück in einen Block. Um die Schreibleistung zu erhöhen, wird oft auch die Datenmenge, die pro Block geschrieben wird, verkleinert (SLC Cache). Dadurch werden zwar mehr Blöcke verwendet, aber durch die geringe Datenmenge lassen diese sich schneller beschreiben.

Sobald dann die aktuelle Last (durchs schreiben oder lesen) abfällt bzw. wenn die SSD sich im Idle befindet, werden die zuvor auf viele Blöcke aufgeteilten Daten wieder “zusammengeschoben”. Dies verursacht ebenfalls wieder P/E Zyklen.

Das Verhalten des Controllers, seiner Programmierung (Firmware) und der Aufbau der Speichermodule spielt also eine wesentliche Rolle für die Diskrepanz zwischen der Menge an beschriebenen logischen Blöcken (die Daten, welche geschrieben werden sollten) und beschriebenen physikalischen Blöcken (die Daten, welche tatsächlich geschrieben wurden).

Dieses Verhältnis ändert sich je nach Einsatzzweck des Speichers. Werden beispielsweise viele sehr kleine Daten geschrieben (Datenbanken, Log Dateien etc.), beansprucht das viel mehr die Speicherzellen (verbraucht also verhältnismäßig viele P/E Zyklen) im Vergleich so großen zusammenhängenden Daten (Videos etc.).

Aus meinem beruflichen Alltag habe ich ein konkretes Beispiel, an dem wir betrachten können, wie sich dieses Verhältnis und die TBW im Vergleich zu den Herstellerangaben verhält.

Beispiel einer 2TB KINGSTON DC600M

Folgende Werte weist das Datenblatt und die SMART Attribute nach ca. 1 Jahr im Einsatz auf:

  • Größe: 1920 GB (2 TB)
  • P/E Zyklen:  3000
  • NAND Flash Writes GB: 28686
  • LBAs Written GB: 20149

Wir erinnern uns an die beiden Formeln:

WAF = NAND Flash Writes GB / LBAs Written GB

TBW = Größe GB * P/E Zyklen / WAF

In diesem Einsatzszenario ergeben sich daraus folgende Werte:

WAF = 28686 / 20149

TBW = 1920 * 3000 / WAF

TBW = 5760000 / 1.43

TBW = 4027972 GB = 4027 TB = 4,03 PB


Aus dem Datenblatt entnehmen wir, dass die SSD für 35004 TBW (3,5 PB) im JEDEC Enterprise Workload spezifiziert ist. D.h. für uns nun, dass die SSD im aktuellen Workload gut 15% länger "überlebt". Grund dafür ist, dass der tatsächliche Workload sich selbstverständlich von dem aus der Spezifikation unterscheiden (wird). Immerhin soll die Werte auch nur als Anhaltspunkt für den "üblichen" gebraucht im jeweiligen Einsatzgebiet herhalten.

Quellen

#ssd #flash speicher #sysadmin #hardware #nvme #usb #sd karte