Blog Alkis Blog #41 - Flashspeicher Haltbarkeit

Incredible Alk

Moderator
Teammitglied
Und täglich grüßt das Murmeltier. Der nächste User will sich eine SSD kaufen und hat was davon gehört, dass die ja nicht mehr so haltbar sind, nur noch x Schreibzyklen verkraften und TLC ist sowieso schlecht, QLC erst recht. In der ersten Antwort wird vorgerechnet wie lange die SSD trotzdem halten wird was in der Regel drölfzig Jahre sind. Mindestens. Gerne würde ich in solchen Threads die Details was warum wie und wann passiert erläutern, da das alles wie fast immer deutlich komplizierter als die runtergebeteten Standardantworten ist – aber erstens würde einen solchen Textberg kaum jemand lesen wollen und zweitens würde ich ihn nicht ständig tippen wollen. Aber jetzt – ein für alle Mal: Der Textberg zur Haltbarkeit von SSDs für alle, die genauer wissen wollen was da eigentlich des Pudels Kern ist. Lasst uns ein paar SSDs (zumindest in der Theorie) umbringen!



1.) Grundlagen

Kaum ein Thema kann tiefergehend untersucht bzw. erklärt werden, wenn nicht die grundsätzlichen Zusammenhänge bekannt sind, so auch das Thema Flash-Speicher. Ich möchte wie immer nicht die feinen Details ausbreiten, das können andere Plattformen besser und anschaulicher. Dennoch hier ein kurzer Abriss wie eine SSD eigentlich funktioniert mit den Informationen, die bezüglich Haltbarkeit später wichtig sein werden.
Eine SSD besteht im Wesentlichen aus nur zwei Kernbauteilen: Einem Controllerchip und einem oder mehreren NAND-Flashspeicherchips, verlötet auf einer kleinen Platine. Der NAND-Chip ist dabei ein reiner Speicherchip, sprich nur eine riesige Anhäufung von Zellen in denen man etwas ablegen kann, der Controller ist ein Logikchip, der, aufgebaut wie jeder andere Halbleiterchip (CPU, GPU, SoC,…) auch, sich um die Verwaltung des Speichers kümmert – also weiß was wann wo abgelegt ist, wie es dem Speicher gerade geht, was gepflegt werden muss und vieles mehr. Mehr als das muss über den Controllerchip was Haltbarkeit angeht eigentlich gar nicht bekannt sein, beim Speicherchip selbst geht’s noch etwas tiefer in die Materie.
NAND-Speicherchips sind sehr vereinfacht gesagt eine riesige organisierte Ansammlung von winzigen Kondensatoren. Das Prinzip ist zunächst sehr simpel: Ein ungeladener Kondensator bedeutet 0, ein geladener bedeutet 1. Um die folgenden Dinge zu verstehen kurz eine kleine Auffrischung in Elektrotechnik: Kondensatoren speichern elektrische Ladung (vereinfacht eine Ansammlung von Elektronen). Je „voller“ ein Kondensator ist, desto höher ist seine Spannung und je größer ein Kondensator ist (genauer je höher seine Kapazität ist), desto mehr Ladung/Elektronen muss man in diesen hineinschieben um eine gewünschte Spannung zu erreichen. Und noch ein Detail: Kondensatoren sind nicht 100% „dicht“, sprich sie verlieren ihre Ladung mit der Zeit (je wärmer es ist desto schneller), genau wie Batterien über die Jahre leer werden auch wenn man sie nicht benutzt. Diese Dinge werden für uns später noch wichtig.
Nun ist es einleuchtend, dass die Milliarden von Kondensatoren in einem Speicherstein keine Elektrolyt- oder Feststoffkondensatoren sein können, wie der Normalverbraucher das vielleicht als diese zylinderförmigen kleinen Bauteile in elektronischen Geräten so kennt. Auf Halbleiterebene werden diese Bauteile anders umgesetzt um sie so winzig bauen zu können; das Prinzip der Elektronenspeicherung bleibt aber dasselbe. Nun ist es bei einem „Halbleiterkondensator“ im Miniaturformat so, dass wenn er geladen werden soll vereinfacht gesagt Elektronen über eine Grenzschicht geschoben werden müssen die dann dahinter sozusagen in der Falle sitzen, der Kondensator ist danach geladen. Diese Grenzschicht wird dabei durch den Strom der Elektronen abgetragen/verschlissen bis sie ihre Grenzwirkung zumindest teilweise verliert und der Kondensator keine ausreichende Ladung mehr speichern kann. Wenn das passiert ist er defekt und wurde wie man es im Netz so schön nennt „totgeschrieben“. Dies passiert, um eine grobe Größenordnung zu nennen, in der Regel zwischen etwa 100.000 bis 1.000.000 Mal laden. Bevor jetzt sofort geschrien wird „aber es ist viel weniger“: In den Grundlagen hier rede ich noch immer von SLC. Liebe Ungeduldigen, keine Sorge, kommt alles noch.


2.) Ausfälle

Nachdem jetzt klar ist, wie eine SSD grundsätzlich aufgebaut ist beleuchten wir mal, was so alles ausfallen kann. Da wären natürlich die Kernbauteile (Controller-Chip, NAND-Chip(s)) oder die Umgebung (PCB, Zwischenspeicher/RAM, Kleinelektronik, Lötstellen, Anschlüsse usw.).
User machen sich hier in aller Regel nur Gedanken um die NAND-Chips die ja so viele Schreibzyklen ertragen müssen und böse verschleißen – dabei ist das der Teil der SSD, der einschließlich des manchmal verbauten RAM-Steins am seltensten von allen kaputt geht. NAND-Chips unterliegen zwar dem oben erklärten Verschleiß, sind aber ansonsten recht simple und sehr widerstandsfähige Chips die, wenn sie einmal korrekt funktionieren, das ohne grobe Gewaltanwendung jahrzehntelang tun. Die Anzahl der Fälle von SSDs, die tatsächlich wegen kaputtem NAND defekt waren, sei es durch extrem hohe Schreibraten oder durch andere Defekte, geht gegen Null. Quasi alle Defekte, die SSDs erleiden, gehen auf kaputte Controllerchips, kalte Lötstellen und ähnliches zurück. Diese Bauteile sind auf große Zeiträume und Nutzungsdauern gesehen sehr viel anfälliger als die Speicherchips selbst – und das völlig unabhängig davon wie viel geschrieben wird! Dieses Wissen im Hinterkopf ist, streng genommen, der Rest dieses Blogs schon für die Tonne – denn sowohl statistisch als auch praxisbezogen ist es (von professionellen Anwendungen die ohnehin anders ausgelegte Server-SSDs verwenden abgesehen) völlig egal welche SSD mit welchem Speichertyp oder Menge man verwendet… sie wird entweder deutlich länger leben als man sie benutzen möchte oder wegen eines Defektes ausfallen, der mit der ertragenen Schreibleistung des Speichers gar nichts zu tun hat.
Aber: Da es der Wunsch vieler war und ist, das Thema speziell von Seiten des NANDs an sich zu beleuchten will ich dem natürlich nachkommen.


3.) Die Standardrechnung

Spätestens an dieser Stelle kann man nun die übliche Standardrechnung anbringen, die in den entsprechenden Threads immer so oder in ähnlicher Form aufgeführt wird. Da sie grundsätzlich auch nicht falsch ist mache ich hier auch ein Beispiel – um dann auch ein wenig Kritik zu üben und auch die Grenzen solcher Rechnungen aufzuzeigen.
Angenommen man kauft sich heute eine mittlere SSD. Diese liegt so etwa bei 500 GB Speicher, ist mit TLC-NAND bestückt und erträgt roundabout 3000 Schreibzyklen (warum nur 3000 und nicht die Million aus Kapitel eins wird noch klar weiter unten). Bedeutet, die SSD kann 3000 mal 500 GB schreiben bevor sie tot ist - macht 1500 TB. Diese Größenordnung an möglicher Schreiblast, also so etwa zwischen 1 und 2 Petabytes wurde in Langzeittests von den allermeisten Modellen auch erreicht. Normale Nutzer liegen bei durchschnittlicher Nutzung eines PCs bei rund 5 GB pro Tag Schreibleistung. Nehmen wir mal zu Ungunsten der SSD an wir hätten hier einen Power-User, der jeden und jeden Tag 20 GB auf die SSD schreibt (was bedeuten würde jeden Tag Windows neu installieren oder Spiele auf Steam kaufen oder ähnliches). Das ist wirklich, wirklich viel – selbst wer mit vielen großen Dateien arbeitet schafft das in der Regel nicht. Meine „Arbeits-SSD“ hat umgerechnet 12 GB/Tag geschrieben über die letzten Jahre und ich arbeite wirklich viel mit großen Daten wie etwa Video-Rohmaterial von zig GB. Bei den genannten 20 GB am Tag würde es nun rechnerisch 75000 Tage dauern bis die SSD tot ist. Das sind über 200 Jahre! Da sollte schnell klar werden, dass selbst so wenige mögliche Schreibzyklen viel mehr sind als das, was ein Heimanwender jemals ausnutzen wird. Genau das ist hier auch das Ziel in den Threads – dem Fragesteller die Angst zu nehmen. Denn, bei genauerer Betrachtung, ist es tatsächlich gar nicht mehr so einfach. Also zur Kritik an solchen Rechnungen.

Man bedenke: Die Rechnung gilt in der Form nur dann wenn vorausgesetzt wird, dass alle Speicherzellen erstens genau gleichmäßig abgenutzt werden, zweitens alle gleich viel ertragen und drittens alle geschriebenen Daten tatsächlich Nutzdaten des Users sind. All das ist real nicht der Fall.
Das „wear-levelling“ des Controllers ist bemüht, Schreibzyklen gleichmäßig über alle Speicherzellen zu verteilen, was auch hervorragend funktioniert – bei Speicherzellen die nicht bereits beschrieben sind. Ist eine SSD zu 90% voll kann das wear-levelling ja nur noch auf den 10% der leeren Zellen stattfinden (und auf denen darüber hinaus des over-provisionings, dem Speicher der für den Nutzer nicht sichtbar/nutzbar ist). Habe ich auf meiner 500 GB-SSD 450 GB dauerhaft belegt schrumpfen die 200 Jahre theoretisch also schon mal auf „nur“ 20 Jahre zusammen. Sehr intelligente SSDs sind mittlerweile dazu in der Lage das auszugleichen, indem sie bestehende Daten in größeren Zeitabständen umschichten – so dass beispielsweise die Windows-Installation nicht jahrelang auf den selben Speicherzellen liegt und diese auch wie alle anderen gleichmäßiger genutzt werden können. Das können aber (aktuell) bei weitem nicht alle SSDs, daher gehen wir mal vom schlechteren Fall aus.
Dann ist es so, dass die möglichen Schreibzyklen einer Zelle einer Normalverteilung unterliegen. Bedeutet im Mittel schaffen sie zwar 3000, es gibt aber auch einzelne die 4000 oder 5000 schaffen – oder nur 500. Manche Zellen werden also sehr schnell kaputt sein, was der Benutzer gar nicht bemerkt so lange er nicht den Wert für „Verschleißregulierung“ seiner SMART-Daten ausliest der bereits kaputte Zellen aufzählt. Schlimm ist das nicht, denn auch für diesen Fall haben mittlerweile alle SSDs Reservezellen vorbereitet die einfach für die kaputten einspringen. Dennoch, auch das reduziert die 20 Jahre die noch übrig waren theoretisch wieder ein bisschen.
Außerdem muss die SSD grundsätzlich mehr Daten schreiben als nur die tatsächlichen Nutzdaten ihres Besitzers. Will dieser 10 GB schreiben haben moderne SSDs nicht selten 22 GB geschrieben. Warum? Zwei Gründe. Zum ersten gibt es ein Phänomen namens „write amplification“. SSDs können aus organisatorischen Gründen ihre Speicherzellen immer nur Blockweise beschreiben. Hat ein Block beispielsweise 64 KiB aber es sind nur 20 KiB Daten zu schreiben müssen trotzdem 64 KiB geschrieben werden da Blöcke immer komplett geschrieben werden müssen. Dies führt dazu, dass immer ein kleinerer Prozentsatz mehr Schreibzyklen ausgeführt werden müssen als eigentlich Daten da sind. Das ist nun nicht schrecklich viel, wir reden hier von wenns blöd läuft (viele kleine Dateien, viele nicht ganz besetzte Blöcke) 10%. Aus den 10 GB sind also bisher 11 geworden. Ein viel größerer Batzen kommt aus einem Trick, den viele wenn nicht mittlerweile alle Hersteller zur Beschleunigung ihrer SSDs nutzen: Den sogenannten SLC-Cache. Hier handelt es sich um einen dynamischen Speicherbereich in den NAND-Chips, die sehr (platzmäßig) ineffizient aber sehr schnell beschrieben werden können. Um in Benchmarks gut dazustehen schreiben SSDs ankommende Daten also zuerst in den SLC-Speicherbereich um dann nach und nach von diesem die Daten in den tieferen Speicher des NANDs zu kopieren. Anders gesagt: Alle Daten werden zwei Mal geschrieben – und schon sind wir bei den 22 GB.
Es gibt zusätzlich noch technische Notwendigkeiten die nochmal zu weiteren Schreibzyklen führen um Daten „frisch“ zu halten – genaueres dazu folgt in Abschnitt 5, denn um zu verstehen warum das so ablaufen muss fehlt noch ein bisschen Hintergrund.

All diese Dinge berücksichtigt landen wir also statt bei 200 Jahren eher bei der Größenordnung von 10 Jahren für unseren Power-User. Das ist noch immer viel mehr als man erwarten würde, vor allem wenn man bedenkt dass ein Normalnutzer wie gesagt niemals 20 GB pro Tag schreiben wird und wir dann doch wieder bei 20-50 Jahren landen. All das soll nur aufzeigen, dass diese ganzen Milchmädchenrechnungen so ganz ohne weiteres nachdenken dann doch nicht funktionieren.


4.) Entwicklungsprobleme

All diese „Probleme“ von verschleißendem NAND gäbe es natürlich gar nicht, wenn SSDs noch immer so gefertigt würden wie noch vor 15 Jahren. Die ganze Geschichte ist nur auf den Plan getreten weil SSDs wie jede Technik im Hardwaresegment sich rasant entwickeln muss zu höher, schneller, größer, weiter…
Die ersten SSDs waren, zumindest was ihre NAND-Zellen anging, ziemlich unverwüstlich. Wie oben erwähnt waren Schreibzyklen von einer Million kein Thema. Dass es das heute so nicht mehr gibt ist der Suche nach Kapazität und Geschwindigkeit geschuldet. In den folgenden Abschnitten möchte ich die jeweils vier hauptsächlichen Möglichkeiten, wie man SSDs schneller und größer bauen kann erläutern, sowie welche Probleme daraus entstehen und wie man diesen begegnet ist.

Schneller 1: Takt
Die vermeintlich einfachste Methode, elektronische Schaltkreise schneller zu machen, ist deren Arbeitstakt zu erhöhen. Dass dem Grenzen gesetzt sind ist jedem klar der sich schon mal am übertakten versucht hat, dennoch hat bei SSDs unter der Haube der gleiche Prozess stattgefunden wie bei anderen Chips auch: Sowohl die Controller als auch die Speicherchips selbst arbeiten heute mit deutlich höheren Frequenzen als noch vor einigen Jahren. Nun hat man bei Speicherzellen aber ein physikalisches Problem. Wenn die Taktrate steigt sinkt entsprechend die Zeit, die zum Beschreiben einer Zelle noch übrig bleibt (Zykluszeit = Kehrwert der Taktrate). Es muss in dieser kürzeren Zeit aber die gleiche Ladungsmenge in den Kondensator geschoben werden um ihn zu beschreiben. Mehr Ladung in kürzerer Zeit verschieben bedeutet höhere Stromflüsse. Diese bekommt man nur durch höhere Betriebsspannungen. Mehr Spannung und mehr Strom bedeutet aber automatisch mehr Leistung – und mehr Leistung bedeutet erstens mehr Abwärme und zweitens höherer Verschleiß der Zellen. Man kann also leider nicht den Takt eines NAND-Speichersteines beliebig steigern, die benötigten Spannungen/Stromstärken würden so groß werden, dass die Zellen bereits nach einer Handvoll Schreibzyklen sterben würden oder gleich durchbrennen. Den optimalen Mittelweg, welche Spannungen hohe Schreibgeschwindigkeiten erreichen aber dennoch keinen zu hohen Verschleiß herbeiführen, hat man dabei schon lange gefunden, hier ist also nur noch wenig Potential vorhanden. Immerhin: Ein höherer Verschleiß alleine durch diesen Effekt ist dadurch zukünftig auch nicht mehr zu erwarten.

Schneller 2: Channelling
Eigentlich naheliegend: Wenn ich einen Speicherstein nicht mehr schneller machen kann muss man eben mehrere gleichzeitig benutzen. Das wird in SSDs seit Ewigkeiten auch so gemacht. Gute Controllerchips sind heutzutage mit 8 Channels ausgestattet und können entsprechend 8 NAND-Steine gleichzeitig ansprechen und somit die theoretische Bandbreite verachtfachen. Das ist übrigens der Grund, warum sehr kleine SSDs deutlich langsamer sind als ihre großen Brüder. Wenn nur 250 GB Speicher vorhanden sind die in einem einzigen NAND untergebracht sind kann kein Channelling erfolgen – denn es ist ja nur ein einziger Stein da. Der Technik sind auch weitere Grenzen gesetzt. Moderne M.2-SSDs bieten beispielsweise schlicht den Platz nicht um wesentlich mehr als vielleicht 8 (vier Vorderseite, vier Rückseite) Chips unterzubringen. Dort wo hingegen viel Platz vorhanden ist wie etwa in normalen 2,5 Zoll SSDs (die sind selbst bei großen Kapazitäten innen hauptsächlich leer!) oder PCIe-Steckkarten ist das Problem ein wirtschaftliches: Controller mit 12, 16 oder noch mehr Channels wären bzw. sind sehr kostspielig und leistungshungrig, entsprechende PCBs mit passend vielen Leiterbahnen/Ebenen ebenso. Das lohnt sich nur im professionellen Bereich da kein Heimanwender 500€ zusätzlich für einen 12-Channel-Controller zahlen würde.
Für unser Thema Verschleiß ist Channelling glücklicherweise ziemlich egal. Der NAND „weiߓ von all dem nichts.

Schneller 3: Kompression
Warum eigentlich die ganzen Daten des Benutzers schreiben wenn man mit weniger auskommen würde und schneller fertig wäre? Das ist das Prinzip der Kompression. Datenkompression in Hardware ist heutzutage extrem schnell geworden und auch von einem kleinen Controllerchip mit entsprechenden speziell dafür ausgelegten Bereichen im Chip problemlos machbar. Bei gut komprimierbaren Datenarten (manche sind gut komprimierbar, andere schlecht bis gar nicht) können so viele Schreibzyklen eingespart werden. Das spart zwar keinen Speicherplatz für den Benutzer (werden 5 GB auf 4 GB komprimiert müssen dennoch alle 5 GB auf der SSD reserviert werden falls der Benutzer nachträglich Daten durch schlechter komprimierbare ersetzen möchte), kann aber sowohl Schreibzyklen sparen als auch die Geschwindigkeit erhöhen, denn Daten die 30% komprimiert werden können, können entsprechend auch 30% schneller auf die SSD gebannt werden. Dieses Verfahren ist die so ziemlich einzige moderne beschleunigende SSD-Technik, die der Haltbarkeit sogar zugute kommt, wenn auch nur minimal.

Schneller 4: Caching
SSDs sind mittlerweile weit davon entfernt, einfach nur Daten aufzunehmen und sie sofort wegzuspeichern. Alle schnelleren SSDs haben intern eine kleinere Menge an RAM verbaut um kleinere Datenpakete sehr schnell aufnehmen zu können. Die ersten paar Hundert Megabyte werden sofort im internen Arbeitsspeicher geparkt und von da nach und nach auf den NAND geschrieben. Da bei den allermeisten normalen Schreibanfragen kaum mehr als ein paar MB geschrieben werden wollen erschlägt man mit einem solchen Zwischenpuffer schon sehr viel. Einen Schritt weiter ist man später gegangen mit dem oben bereits erwähnten SLC-Cache – ein besonders schnell beschreibbarer meist dynamisch verwalteter Bereich des NAND-Flashes der schnell gefüllt werden kann um danach dann die Daten in Ruhe in den langsameren NAND zu kopieren – und dadurch wie oben bereits beschrieben erneut Schreibzyklen zu generieren und die Haltbarkeit zu vermindern.

All diese genannten Techniken zur Leistungssteigerung von SSDs haben wie der geneigte Leser vielleicht bemerkt hat einen relativ kleinen Einfluss auf die Haltbarkeit des NAND-Speichers. Klar, die Taktraten wurden angezogen, der SLC-Cache generiert ein paar Schreibzyklen mehr, alles aber in einem sehr gut kontrollierbaren Rahmen und nichts, was nun wirklich die Haltbarkeit von NAND derart hätte schwinden lassen können wie wir es gesehen haben in den letzten Jahren. Die Hauptgründe dafür liegen nicht im „schneller“, sondern im „größer“. Die ständige Nachfrage nach immer mehr Speicher führte zu allerlei Tricks und technischen Finessen mit vielen Schattenseiten… wie macht man nun eine SSD größer?


Größer 1: Mehr Chips
Was ist naheliegender, als ganz simpel mehr Speichersteine in die SSD zu packen um ihre Kapazität zu erhöhen? Wer mal eine 2,5-Zoll SSD geöffnet hat hat festgestellt, dass die halbe Verpackung völlig leer ist und selbst das vorhandene PCB nicht zu den besonders dicht bestückten gehört. Es wäre alleine vom Platz her absolut kein Problem, in eine solche SSD 64 oder 128 TB Speicher reinzubauen. Warum wird das nicht gemacht?
Einfache Antwort: Weil es zu teuer ist und es keine ausreichende Zielgruppe gibt. Das technische Problem ist, dass alle Consumer-Controller maximal 8 NAND-Chips ansprechen können – siehe „Channelling“ oben. Bedeutet ich kann zwar 16 Chips in die Verpackung löten, der Controller könnte sie aber nicht benutzen. Für die Nutzung von mehr als 8 Speichersteinen pro SSD braucht es Controller mit mehr Channels – und die sind sehr teuer und verbrauchen vergleichsweise sehr viel Strom (siehe Industrie-SSDs mit 20+TB Speicher und 40W Leistungsaufnahme…). So etwas ist im normalen Endkundenmarkt nicht verkaufbar. Daher sind alle Größensteigerungen die wir die vergangenen Jahre gesehen haben von Kapazitätssteigerungen der NAND-Steine an sich gekommen und nicht durch den Einsatz von mehr Steinen pro SSD. Und deswegen hängen wir auch seit Jahren an einer Obergrenze von 2-4 TiB pro SSD fest. Mit 8 NAND-Steinen sind Stand heute nunmal 4 TiB, entsprechend 512 GiB pro Chip, das maximal machbare. Auch hier wieder: keinen Einfluss auf irgendwelchen Verschleiß von NANDs – der kommt jetzt:

Größer 2: Kleinere Zellen
Wenn mehr Steine nicht gehen muss man eben die Kapazität der einzelnen Steine erhöhen. Im Hardwarebereich schon traditionell wird das durch die Verkleinerung der Strukturen erreicht – so auch bei SSDs. Die winzigen Kondensatoren wurden also immer winziger hergestellt. Bei normalen Computerchips hat das fast ausschließlich Vorteile: Durch kleinere Strukturen sinken Leckströme, nötige Spannungen, hinderliche Kapazitäten an Transistoren, die Taktraten steigen und so weiter… Moment…Kapazitäten sinken? Genau. Wie ganz oben beschrieben wird die Kapazität eines Kondensators kleiner wenn der Kondensator an sich kleiner wird. Was bei CPUs erwünscht ist (weniger Kapazität bedeutet weniger Ladung die verschoben werden muss bedeutet weniger Stromstärke bedeutet höhere mögliche Taktung usw.) ist bei Flashspeicher eine ziemliche Katastrophe, denn die Kapazität ist ja hier genau das, was man nutzen möchte! Würde man SSDs in der gleichen Strukturgröße bauen wie modernste CPUs heute hergestellt werden würden sie schlicht nicht mehr funktionieren, weil die Zellen die Miniladungen, die man darin parken könnte, sehr schnell verlieren würden und die Ladungen auch zu klein wären um sie noch präzise auslesen zu können. Zusätzlich bedeutet eine immer kleinere Zelle auch, dass die Grenzschicht die man beim beschreiben überspringen muss immer kleiner und damit empfindlicher wird.
All diese Effekte bewirken, dass die möglichen Schreibzyklen vor dem Ausfall rapide sinken mit fortschreitender Miniaturisierung und zusätzlich der Controlleraufwand immer höher wird bzw. die Nutzung des Flashes immer präziser werden muss.
Daher hatte die Miniaturisierung recht schnell ein Ende gefunden – aktuelle SSDs werden in Strukturbreiten von (nominell) 20-40 nm hergestellt im Gegensatz zu CPUs die bei 7-10 nm angekommen sind. Kleinere NAND-Steine sind schlicht nicht mehr sinnvoll zu kontrollieren und nicht dauerhaft haltbar, weder was Datenintegrität angeht noch bezüglich der Anzahl möglicher Schreibvorgänge.
Man ist hier so weit an der unteren Grenze, dass technische Gegenmaßnahmen gefunden werden mussten um korrupte Daten zu vermeiden. Da solch winzige Kondensatoren ihre Ladung über die Zeit recht schnell verlieren, müssen sie beispielsweise ab und an aufgefrischt werden (dazu später mehr – das Problem spitzt sich ziemlich zu…). Außerdem musste eine leistungsfähige Fehlerkorrektur in SSDs implementiert werden, die ein hier und da falsches Bit erkennen und ausgleichen kann. So ganz ohne ist die Verkleinerung in dem Bereich also nicht abgegangen und weiter geht’s an der Baustelle nicht mehr. Was also tun wenn man nicht mehr kleiner werden kann? Stapeln!

Größer 3: Stacking und 3D-NAND
Wenn kleiner nicht mehr geht bauen wir eben viele Ebenen übereinander! Auch das ist natürlich wieder einfacher wie es klingt aber zumindest sehr, sehr effektiv. Bereits in früher Kinderzeit der SSDs konnten einige Lagen von NAND-Speicher übereinandergelegt und ordentlich angesprochen werden, denn die Technik des Stapelns ist von herkömmlichen Chips seit Jahrzehnten bekannt und gut beherrscht: Jede modernere CPU oder GPU besteht aus 10+ Lagen von Leiterbahnen übereinander. So konnte man die Kapazitäten recht schnell und einfach mal eben verzehnfachen. Alles darüber wurde nun aber schwieriger, denn mehr als vielleicht 16 Layer hatte es in der Chipfertigung so noch nie gegeben und musste entsprechend neu entwickelt werden. Mit jeder zusätzlichen Lage steigt dabei die Anforderung an Fertigungspräzision sowie die Komplexität des Ansprechens einzelner Zellen. Zumindest an dieser Front ist aber noch Luft nach oben. Aktuell bewegen wir uns bereits bei 64-96 Lagen, Schätzungen mehrerer NAND-Hersteller gehen davon aus, mittelfristig mehrere Hundert Lagen anbieten zu können.
Die Technik des so aufgebauten "3D-NANDs" ist mehr oder minder die einzige technische Möglichkeit, die Kapazität von SSDs zu erhöhen ohne die mögliche Anzahl an Schreibzyklen gleichzeitig zu verringern, entsprechend liegt hier auch das Hauptaugenmerk der Hersteller. Was natürlich auch geht und auch gemacht wird ist das stapeln ganzer Dies übereinander ("stacking").
Da wäre aber noch eine weitere Technik die große Kapazitätssteigerung verspricht und regelmäßig zu Grabenkämpfen führt, nicht zuletzt weil es komplexer ist als einige denken. Warum eigentlich immer nur ein Bit in einer Zelle speichern…?

Größer 4: Multilevel Cells
Jetzt wird es etwas komplizierter. Wir gehen die ganze Zeit davon aus, dass eine Zelle entweder geladen ist (= 1) oder ungeladen (= 0). Angenommen diese Zelle würde eine Betriebsspannung von 1,2 V haben. Wird sie mit einer 1 beschrieben werden 1,2 V in ihr geparkt. Wird sie ausgelesen so intepretiert der Controller alle Spannungen zwischen 0 und 0,6 V als „0“ und alle zwischen 0,6 und 1,2 V als „1“. Soweit verständlich, oder?
Dieses Verfahren wird Single-Level-Cell (SLC) genannt. Man kann sehr schnell Daten schreiben da man die 1,2 V auch nicht genau treffen muss (0,9V wäre auch eine „1“), die Daten sind auch sehr robust da es nicht weiter tragisch ist, wenn der Kondensator mal 0,1V über die Zeit verliert. Ausgelesen werden kann auch sehr schnell da es sehr eindeutige, große Spannungsbereiche gibt die einen Wert darstellen und die Zelle hält auch sehr viele Schreibzyklen aus, denn wenn der Verschleiß fortschreitet und die zelle nur noch 1 V statt 1,2 V halten kann ist das ja gar kein Problem – alles über 0,6V reicht ja aus.
Nun kam man auf die Idee, zwei Bits in der geparkten Spannung zu kodieren um den Speicherplatz zu erhöhen ohne die Anzahl der Zellen zu vergrößern. Wer n Bits eindeutig speichern möchte muss dafür 2^n Zustände voneinander unterscheiden können – bei 2 Bits wären das 2^2=4 Zustände – im Einzelnen 00, 01, 10 und 11. Für unsere 1,2V-Zelle von eben heißt das wir definieren:

00 = 0,0 – 0,3V
01 = 0,3 – 0,6V
10 = 0,6 – 0,9V
11 = 0,9 – 1,2V

Das müsste folgerichtig statt single-level-cell nun dual-level-cell heißen – da man damals noch nicht davon ausging jemals noch mehr zu speichern nannte man es aber einfach MLC (multi-level-cell). Wer die Ausführungen oben verstanden hat wird sicher schon die auftretenden Probleme erkannt haben. Der Spannungsbereich, der eine Bitkombination repräsentiert ist kleiner geworden. Bedeutet beim Beschreiben muss man die Zelle genauer laden und beim auslesen auch genauer die Restspannung messen – plötzlich ist es nicht mehr egal, ob eine Zelle 0,85 oder 0,92 V Restspannung enthält da nicht mehr beides „1“ bedeutet sondern das eine „10“ und das andere „11“. Die Zelle darf auch nicht mehr so viel Ladung verlieren über die Zeit und wenn der Verschleiß so fortgeschritten ist, dass nur noch 0,88 V gespeichert werden können ist die Zelle unbrauchbar da „11“ nicht mehr möglich ist – bei SLC wäre das noch kein Problem gewesen. Das ist der Hauptgrund, warum MLC-Speicher weniger Schreibzyklen erträgt als SLC: Der Verschleiß ist nicht größer, die nötige Genauigkeit aber so viel höher, dass ein geringerer Verschleißzustand zum Ausfall der Zelle führt.
Spielen wir das Spielchen weiter: Nach MLC kam TLC (triple-level-cell). Für 3 Bits pro Zelle brauchts 2^3 = 8 Zustände mit passenden Ladungsdefinitionen:

000 = 0,00 – 0,15V
001 = 0,15 – 0,30V
010 = 0,30 – 0,45V
011 = 0,45 – 0,60V
100 = 0,60 – 0,75V
101 = 0,75 – 0,90V
110 = 0,90 – 1,05V
111 = 1,05 – 1,20V

Oben genannte Probleme werden entsprechend nochmal größer. 150 mV müssen sicher unterscheidbar sein, die Zelle darf kaum verschlissen sein da bereits 1,05 V die Grenze zu unbrauchbar ist und werden 100 mV über eine Zeit x verloren sind die Daten korrupt (und das hat manche Hersteller schwer ins straucheln gebracht wie noch erläutert wird). Die momentan übelste Ausbaustufe dieser Geschichte ist in kürze erscheinender QLC-NAND (quad-level-cell), der 4 Bits pro Zelle speichern soll und passenderweise 16 Zustände unterscheiden muss:

0000 = 0,000 – 0,075V
0001 = 0,075 – 0,150V
0010 = 0,150 – 0,225V
0011 = 0,225 – 0,300V
0100 = 0,300 – 0,375V
0101 = 0,375 – 0,450V
0110 = 0,450 – 0,525V
0111 = 0,525 – 0,600V
1000 = 0,600 – 0,675V
1001 = 0,675 – 0,750V
1010 = 0,750 – 0,825V
1011 = 0,825 – 0,900V
1100 = 0,900 – 0,975V
1101 = 0,975 – 1,050V
1110 = 1,050 – 1,125V
1111 = 1,125 – 1,200V

75 mV Differenz von einem Zustand zum nächsten verbleiben einer QLC zum sicher ablegen, halten und auslesen. Dass solche NAND-Speicher sehr langsam werden und nur noch ein paar Hundert Schreibzyklen sicher ertragen können ist ziemlich offensichtlich.

Nun geben sich die Hersteller natürlich alle Mühe, dass der Kunde von all dem nichts bemerkt. Man kaschiert lahmen TLC/QLC-Speicher mit oben beschriebenem SLC-Cache und haut in die ersten paar GB einfach die Daten schnell nur mit einem Bit pro Zelle rein um sie dann später fein aufzudröseln und im QLC-Format (in die gleichen Zellen) zu speichern. Es gibt tonnenweise Fehlerkorrekturen und Redundanzen, die Datenkorruption weitestgehend vermeiden wenn aus einem „1010“ doch mal ein „1001“ geworden ist (deswegen steigt die Speicherdichte von MLC auf QLC auch nicht um den theoretischen Faktor 2, QLC muss einiges an Fehlerkorrekturdaten zusätzlich speichern damit er überhaupt sinnvoll lesbar bleibt!) und man bemüht sich ständig, durch allerlei mögliche technischen Tricks die möglichen Schreibraten und mengen hoch zu halten. Ums nochmal zu erwähnen: Für so gut wie alle SSD-Nutzer ist das auch gar kein Problem – der Ottonormalverbraucher wird niemals bemerken ob er MLC, TLC oder QLC-Speicher verwendet und auch nie einen Nachteil von solchen Techniken haben sofern sie vom Hersteller vollends beherrscht werden und das Anforderungsprofil des Nutzers passt. Nur – die vollständige Beherrschung ist da so ne Sache…


5.) Alte Daten und Schummeleien

Leider wurden die Multilevel-Techniken nicht immer komplett beherrscht bevor ein Produkt auf den Markt kam. Samsung wurde das zum Verhängnis mit ihren ersten TLC-SSDs namens „840EVO“. Diese SSDs funktionierten zunächst hervorragend mit allen technischen Raffinessen ausgestattet die im letzten Kapitel beschrieben wurden und damals vergleichsweise sehr günstig da billig produzierbarer neuer TLC eingesetzt wurde. Das änderte sich, als die SSDs ein paar Monate auf dem Markt waren. Plötzlich brach die Performance der SSDs bei älteren Daten auf wenige 100 KB/s Lesegeschwindigkeit ein. Ein Windows-Bootvorgang dauerte plötzlich Minuten statt Sekunden, wollte ein Spiel das man schon länger spielte einen neuen Level laden reichte das oftmals für die berühmte Tasse Ladebalkenkaffee. Was war passiert? Der TLC-Speicher hatte durch den beschriebenen Effekt, dass Kondensatoren über die Zeit ihre Ladung verlieren so viel an Ladung verloren, dass die Zustände unscharf wurden. Waren Dateien älter als ein paar Monate hatten sie so viel ihrer Ladung in den Zellen eingebüßt, dass dem Controller nicht mehr klar war, ob er gerade eine 111 oder doch eine 110 ausgelesen hatte. Resultat davon war, dass die Fehlerkorrektur rotieren musste ohne Ende, Zellen zig Mal ausgelesen werden mussten und mit Glück die Daten dann korrekt wiederhergestellt werden konnten was natürlich sehr langsam ist und die Performance entsprechend unterirdisch war. Was konnte man also tun? Samsung reagierte. Zunächst mit einem „Repariertool“. Dieses konnte man über die SSD rennen lassen und schon war sie wieder schnell. Das Tool machte nichts anderes, als alle Daten auszulesen, zu korrigieren und neu zu schreiben. Die Zellen waren wieder frisch beschrieben und passend voll sozusagen, die SSD war wieder schnell. Hätte man das so belassen wäre das gleiche Problem 2-3 Monate später natürlich erneut aufgetreten wenn die Daten wieder „alt“ gewesen wären. Also kam noch ein Firmware-Update, das dieses Problem endgültig behoben hat… und hier kommt die Schummelei. Welche Optionen hatte Samsung schon gehabt? Um das Problem zu vermeiden mussten alle Daten alle paar Wochen neu geschrieben werden damit sie nicht verschwinden. Und genau das tut die neue Firmware. Die SSD sucht immer wenn sie sonst nichts zu tun hat im Hintergrund alle Daten, die älter sind als x Tage (der genaue Wert wurde nie bekannt) und schreibt diese neu in andere Zellen. Das löst zwar das Problem, verursacht aber natürlich irre viele Schreibzyklen, da die SSD sich übertrieben gesagt ständig selbst neu vollschreibt um nichts zu vergessen. Die Schummelei daran ist, dass diese Schreibzyklen in den SMART-Werten bewusst NICHT erfasst werden! Der nächste Shitstorm wäre vorprogrammiert gewesen wenn Leute gesehen hätten, dass ihre SSD Monat für Monat terabyteweise Daten schreibt ohne dass sie sie wirklich benutzen! Natürlich ärgert das den kleineren Kreis der Leute, die das Thema im Detail kennen, aber das sind so wenige, dass es verschmerzbar ist. Und so findet man heute viele 840Pro-SSDs auf dem Gebrauchtmarkt, die laut SMART-Werten ihre 20 TB runter haben, in Wirklichkeit aber wahrscheinlich eine dreistellige Anzahl an TB geschrieben haben. Immerhin: Der verwendete TLC ist offenbar so haltbar, dass das bisher kein Problem war, das große Massensterben der 840EVOs ist bis dato ausgeblieben. Man darf gespannt sein.
Mittlerweile dürfte diese „Wiederauffrischungstechnik ohne Protokoll“ ohnehin Standard geworden sein. Ich möchte ehrlich gesagt gar nicht wissen, wie oft TLC und demnächst QLC-SSDs ihre Daten im Hintergrund neu schreiben müssen damit sie nicht verschwinden. Verschwinden von Daten kommt auch hier als erstklassige Überleitung zum letzten Kapitel gerade recht – was passiert eigentlich, wenn der Controller seine Daten gar nicht neu schreiben kann weil die SSD im Schrank liegt und keinen Strom hat…?


6.) Heiß und kalt, Daten alt.

Nach allem was bisher besprochen wurde muss der Leser ja eigentlich davon ausgehen, dass die Daten auf seiner SSD ins Nirvana verschwinden wenn er sie ausbaut und in einer Schublade vergisst. Leider ist das tatsächlich so – und das je nach Randbedingung noch wesentlich schneller als viele glauben.
Flash-Speicher ist von seiner grundsätzlichen Technik her noch nie für Offline-Backups geeignet gewesen (schönen Gruß an alle, die ihre Familienfotos auf SSDs oder USB-Sticks „sichern“), da er mitunter am schnellsten von allen modernen Medien seinen Inhalt einfach vergisst, warum das so ist wurde ja lang und breit erklärt. Dabei ist vor allem eines wichtig: Die Temperatur – und zwar beim beschreiben und beim lagern. Dass Kondensatoren ihre Ladung schneller verlieren wenn sie wärmer sind ist kein Geheimnis und wurde auch ganz oben schon erwähnt. Neu ist vielleicht, dass bei den winzigen Halbleiterkondensatoren die Kapazität mit der Temperatur etwas ansteigt. Der optimale Fall für Datenlagerung auf NAND-Flash wäre also, wenn die SSD bzw. der USB-Stick beim beschreiben möglichst heiß ist (ja, heiße NANDs sind BESSER als kalte! SSD-Kühler sind in dem Zusammenhang kontraproduktiv!) und beim lagern möglichst kalt. Wer seine Daten längere Zeit auf einem Flash-speicher stromlos lagern will sollte also die SSD im warmen Gehäuse hart belasten und vollschreiben und sie nach dem abstecken am besten im Kühlschrank aufbewahren. Auf diese Weise sollten die Daten darauf wenns gut läuft ein Jahr und länger halten – dennoch empfiehlt es sich, den Speicher alle paar Monate mal anzuklemmen. Das reicht bereits damit der Controller seiner Arbeit nachgeht und alles auffrischt. Außer ein paar Stunden Strom und Ruhe braucht er dafür nichts. Im worst Case ist es übrigens so, dass SSDs innerhalb weniger TAGE ihren Inhalt verlieren! Wer seine Laptop-SSD bei 10 Grad Minus im Freien beschreibt, die dann ausbaut und ein paar Tage bei 60°C in den Backofen zur Verwahrung legt (warum auch immer man das alles tun sollte) kann sich ziemlich sicher sein, dass auf dem Speicher nichts mehr zu finden ist außer etwas Datenmüll (genaue Voraussagen wie lange bei welcher Schreib- und Lagertemperatur die Daten voraussichtlich unkorrumpiert erhalten bleiben gibt’s übrigens bei der JEDEC selbst, Details dazu gibt’s hier (speziell dieses Thema mit zahlen auf Folie 27):
https://www.jedec.org/sites/default/files/Alvin_Cox [Compatibility Mode]_0.pdf


So – mal wieder der obligatorische Glückwunsch an den Leser, der sich den nächsten wall-of-text von mir angetan hat in der Hoffnung, den Schleier um NAND-Haltbarkeiten etwas gelüftet zu haben. Wie immer gilt: Ich beantworte alle weiteren gestellten Fragen nach bestem Wissen und Gewissen. Schönen Dank fürs lesen!
 
Ausführlicher Artikel, aber drei Anmerkungen:
- 7500 Tage sind eine lange Zeit für PC-Hardware, aber es sind keine 200 Jahre.
- Stacking und 3D NAND sind zwei paar Schuhe. Schon seit langem werden mehrere Dies übereinander in ein Package gepackt (1/2/4/8 sind gängige Größen, aber es gibt zumindest im mobilen Bereich auch Zwischenstufen und das Maximum könnte mittlerweile jenseits von 16 liegen), aber erst seit ein paar Jahren gibt es auch die Möglichkeit, zusätzlich bis zu 96 Ebenen Speicherzellen auf einem Die unterzubringen. (Auch als Vertikal NAND bekannt, weil zumindest bei charge trap flash tatsächlich eine Zelle hochkant gestellt, verlängert und in mehrere Speicherbereiche unterteilt wird.)
- Die Haltbarkeitsspezifikation der JEDEC werden von den Herstellern als Definition für defekte Zellen benutzt. Das heißt ein neuen Flash-Chip sollte sich auch 52+1 30-°C-Tage nach einem Schreibvorgang bei 40 °C an alle geschriebenen Daten erinnern. Eine Zelle dagegen, die sich nach 51 Tagen schon entladen hat zählt als verschlissen/hat ihre maximale Zahl an Schreibvorgängen absolviert. Das Laptop-Beispiel ist übrigens nicht so extrem, wie es den Anschein hat, denn die SSDs werden nur bei laufendem System mit Strom aus dem Akku versorgt. Wer in einem überklimatisierten Raum (<25 °C) Daten auf dem Notebook speichert und es dann in der Sonne (oder im Auto) liegen lässt, wo es 40-45 °C erreichen kann, der hat nach einem mehrtägigen Ausflug möglicherweise schon die JEDEC-Grenzen überschritten. Immerhin: Die Spezifikationen gelten unabhängig von der Zell-Bauweise. Eine 1.000 mal beschriebene TLC-Zelle ist also nicht problematischer als ein 10.000 mal beschriebenes MLC-Gegenstück. Den Chips in Flash-Speicherkarten wird übrigens eine größere Haltbarkeit nachgesagt.
 
... ca. 200 Jahre sinds schon - bei den 7500 fehlt nur eine Null (3000 zyklen x 500 GB / 20 GB/Tag = 75000 Tage = ~205 Jahre), danke für den Hinweis, wurde gefixed.
Auch sonst haste Recht, der Unterschied zwischen Lagen im Die und Die-stapeln kommt nicht raus. Ich schrieb ausschließlich von mehreren "Zellenlagen" innerhalb eines Dies, nicht davon, ganze Dies zu stapeln. Dass letzteres als "stacking" definiert ist war mir tatsächlich nicht bewusst. :schief:
Hab das ebenfalls fix ergänzt.

Dass Chips in Speicherkarten länger halten sollen habe ich bisher nicht gehört. Wird da evtl bei den besseren Modellen auf enterprise-Flash zurückgegriffen (also eMLC und solche Späße)?
 
Wobei das natürlich auch für die forensische Sicherung so eine Sache ist, wenn man eine SSD im Schrank findet und die während des Spiegelns bzw. Erstellen des Images selbstständig erst mal ihre Daten umsortiert, weil diese ein bestimmtes Alter erreicht haben. :devil:

Speicherchips runterlöten führt "dank" wear-leveling, Kompression oder gar Hardwareverschlüsslung auch nicht unbedingt zum Erfolg.

Wobei man Verschlüssung und wear-leveling auch kombinieren kann, indem man ein Permutationschiffre nutzt. Mit einem sehr zufälligen Algorithmus, z.B. per Hashmap, können die Daten sehr gleichmäßig "rauschend" auf die SSD verteilt werden. Algorithmus und Key kennt nur der Controller.
 
Zurück