Eine komplexe Angelegenheit: So funktioniert eine SSD
Die SSD löst die Festplatte als primären Massenspeicher immer mehr ab. Die Vorzüge bezüglich Geschwindigkeit und Mobilität liegen auf der Hand. Daten werden nicht mehr mechanisch gelesen und geschrieben, sondern elektrisch. Doch, wie funktioniert das genau?
Jahr für Jahr erscheinen neue Prozessoren-Generationen, die riesige Leistungssprünge versprechen. Der Normalverbraucher merkt davon aber meistens nicht allzu viel. Ganz anders bei der SSD. Ein Wechsel von einer HDD auf eine SSD ist tatsächlich bei allen Anwendungen spürbar.
In den guten alten Zeiten war ich es mir gewohnt, nach dem Starten des PCs noch einen Kaffee zu holen, bevor ich mit der Arbeit beginnen konnte. Der Boot-Vorgang dauerte eine gefühlte Ewigkeit. Was habe ich gestaunt, als ich das erste Mal den Bootvorgang eines Notebooks mit SSD erleben durfte. Das war in etwa das Äquivalent von Tram und IC. Oder Slow Food und Fast Food. Oder laufen und stehen.
Aber was macht die SSD so schnell? Im Gegensatz zur Festplatte haben SSDs keine Lese-/Schreibköpfe und rotierende Platter. Jeder Block einer SSD ist in derselben Geschwindigkeit erreichbar. Egal, ob sie nun nebeneinander liegen oder auf einem anderen Modul. Deshalb macht übrigens das Defragmentieren einer SSD keinen Sinn. Die Zugriffszeiten sind kürzer und Lese-/Schreibgeschwindigkeiten höher.
Auf die Idee mich mit der Funktionsweise von SSDs zu beschäftigen kam ich während meines Artikels zur Geschichte der HDD. Zu Beginn wollte ich etwas zur Lebensdauer von SSDs schreiben. Während dem ich recherchierte, begann ich mich immer mehr zu nerven: Es wird zwar überall geschrieben, dass sich NAND-Flash (die Speichertechnologie von SSDs) mit der Zeit abnutzt, aber nicht wie genau. Durch welchen physikalischen Prozess bitteschön geschieht das?
Deshalb entschied ich mich, einen Artikel zur Funktionsweise der SSD zu schreiben. Wenn wir genau verstehen, wie eine SSD funktioniert, ist auch nachvollziehbar, wieso sie sich abnutzt. Aber auch andere Fragen, die sich häufig zu SSDs stellen machen dann Sinn. Beispielsweise wieso SSDs tatsächlich langsamer werden können, wenn sie nicht mehr über viel Speicherplatz verfügen.
Aber genug der Vorrede. Tauchen wir ein in die Materie. Eine kleine Vorwarnung: Es wird zum Teil sehr technisch. Eine Solid State Drive besteht aus der Platine mit Interface (Bsp.: SATA, PCIe, SATA-Express), NAND-Flash-Speicher, je nach SSD mit Cache-Speicher, Controller und der darauf befindlichen Firmware. Angesteuert wird die SSD über ein Protokoll (AHCI oder NVMe). Beginnen wir mit dem NAND-Flash.
Was ist NAND-Flash?
Im Gegensatz zur HDD werden beim NAND-Flash-Speicher Daten elektronisch geschrieben/gelesen. NAND-Flash zeichnet sich durch hohe Speicherdichte und nicht flüchtige Datensicherung. Er tut also das, was die Platter auf der Festplatte tun: Er speichert Daten dauerhaft ab. Das geschieht, indem Spannung erzeugt und gelesen wird.
Von Bit Lines und Word Lines
Ein NAND Block besteht aus Bit Lines und Word Lines. Die Bit Lines verlaufen parallel zueinander. Sie sind aus Silizium und werden durch eine sogenannte Shallow Trench Isolation (STI) voneinander getrennt. Die Word Lines verlaufen senkrecht zu den Bit Lines. Auf ihnen liegt das Control Gate und sie bestehen aus Polysilizium. Dort wo sich Bit Line und Word Line überschneiden befindet sich die Speicherzelle.
Die einzelnen Speicherzellen sind sogenannte Floating Gate Metal Oxide Semiconductor Field Effect Transistors (FGMOS). Der Floating Gate liegt zwischen Control Gate und der Bit Line. Es ist eine elektrisch isolierte Halbleiterschicht, die Ladung speichert und in der Isolationsschicht schwebt. Im Floating Gate befindliche Elektronen entladen sich auch im spannungslosen Zustand über mehrere Jahre (zwei bis zehn Jahre) nicht.
Schauen wir uns die Schnittstelle zwischen Bit Line und Word Line etwas genauer an. Und zwar entlang der Word Line. Das Control Gate umgibt das Floating Gate. Die zwei Gates werden von einem Oxide-Nitride-Oxide-Layer (ONO) getrennt. Unter dem Floating Gate befindet sich das Tunnel Oxid (ein Nichtleiter). Darunter folgt die Bit Line mit Source und Drain.
Pages, Blocks, Planes und Dies
Die Speicherzellen in einer Word Line sind in einer Page zusammengefasst. Pages sind die kleinsten Einheiten auf einer SSD, die gelesen oder beschrieben werden können. Je nach Fertigungsverfahren oder Flash-Typ können Pages 2 KB, 4 KB, 8 KB oder 16 KB gross sein.
Mehrere Pages werden in Blocks zusammengefasst. Pro Block finden sich zwischen 128 und 256 Pages. Ein Block ist die kleinste Einheit, die gelöscht werden kann. Technisch wäre das zwar auch auf Page Niveau möglich. Die dazu nötige Spannung würde die Speicherzellen aber derart belasten, dass sich die Lebensdauer stärker als beim Löschen auf Block Niveau verkürzen würde (zur Abnützung der Speicherzellen folgt weiter unten mehr).
Die Blocks wiederum sind üblicherweise auf zwei Planes pro Flash-Modul (auch Die) aufgeteilt. Die Module kommen auf der Platine zu liegen. Dort sind sie mit vier bis zehn Kanälen an den Controller gebunden.
Exkurs: Langsamer werdende SSD
Wie erwähnt, ist das Löschen nur auf Block Niveau möglich. Zum Update einer Page ist folgender Vorgang nötig: Der Inhalt des Blocks, worauf die Page liegt, muss kopiert, der Block gelöscht und der Inhalt des alten Blocks mit aktualisierter Page auf einem neuen Block gespeichert werden. Während SSDs Daten sehr schnell schreiben und lesen können, ist der Vorgang des Löschens und neu Schreibens viel langsamer (aber immer noch viel schneller als bei Festplatten). Wenn die SSD beinahe voll ist und keine leeren Pages verfügbar, muss die SSD erst nach Blocks suchen, die gelöscht werden können. Deshalb können SSDs langsamer werden, je voller sie sind. Um dem entgegenzuwirken haben die SSD-Controller heute mehrere Mechanismen. Zur Funktionsweise des Controllers kommen wir später.
Wie werden Daten gelesen und gespeichert?
Vereinfacht gesagt, werden beim Flash-Speicher Daten gespeichert, indem Elektronen auf den Floating Gate gelegt oder davon entfernt werden. Gelesen werden die Bits anhand der Spannung. Wenn Elektronen im Floating Gate präsent sind, hat das Bit den Wert 0. Wenn keine Elektronen im Floating Gate sind, hat das Bit den Wert 1. Als leer oder gelöscht gelten die Speicherzellen, wenn sie den Wert 1 haben und als beschrieben, wenn sie den Wert 0 haben.
Und wie funktioniert das genau? Beginnen wir mit dem Lesen.
Lesen
Das Schlüsselement beim Lesen ist, dass der negativ geladene Floating Gate (also wenn Elektronen im Floating Gate sind), gegen die positive Spannung, welche durch das Control Gate fliessen soll, wirkt. Das heisst, bei einem Bit-Wert 0 ist mehr Spannung nötig, um den Grenzwert zu überschreiten, damit Strom durch das Control Gate fliesst. Diese Spannung wird VT0 genannt. Die benötigte Spannung beim Bit-Wert 1, also wenn Strom durch das Control Gate fliesst, wird VT1 genannt. Um nun den Wert abzulesen, muss eine Spannung zwischen VT0 und VT1, genannt VR, durch das Control Gate geschickt und der Strom gemessen werden. Fliesst der Strom durchs Control Gate ergibt das den Bit-Wert 1, fliesst keiner, ergibt das den Bit-Wert 0. Das trifft bei SLC-NAND zu. Bei MLC- oder TLC-NAND sind verschiedene VR zur Messung nötig. Zur Unterscheidung von SLC; MLC und TLC findest du unter dem entsprechenden Titel mehr Informationen.
Löschen
Beim Löschen werden die Elektronen vom Floating Gate entfernt und der Bit-Wert auf den Normalzustand 1 gesetzt. Zum Floating Gate besteht kein elektrischer Kontakt. Wie können die Elektronen also von dort entfernt werden? Sie müssen irgendwie durch die Oxidschicht kommen, die den Floating Gate von der Bit Line trennt. Hier kommt der Tunneleffekt zum Tragen. Dabei wird eine hohe negative Spannung auf die Source und das Control Gate ausgeübt. Dadurch werden die Elektronen im Floating Gate herausgezogen und durch den Tunneleffekt auf die Source transferiert.
Schreiben/Programmieren
Beim Schreiben werden die Elektronen auf das Floating Gate übertragen und der Bit-Wert 0 wird gesetzt. Wenn eine hohe positive Spannung auf das Kontroll-Gate ausgeübt wird und währenddessen eine weitere auf den Drain, können Elektronen durch die Oxidschicht auf das Floating Gate gelangen. Dieser Vorgang wird Hot Electron Injection genannt.
SLC, MLC und TLC
Eine Speicherzelle nimmt demnach üblicherweise nur zwei Zustände an, geladen oder ungeladen – respektive beschrieben (oder auch programmiert) oder gelöscht. Diese Information ist ein Bit gross. Durch das Speichern mehrerer Zustände kann die Speicherdichte erhöht werden. Das kann durch unterschiedliche Spannungsniveaus erreicht werden. Beim Single Level Cell (SLC) wird nur ein Bit pro Speicherzelle gespeichert. Multi Level Cell (MLC) speichert zwei Bits pro Speicherzelle und Triple Level Cell drei Bits. Das hat Einfluss auf die Lese-/Schreibgeschwindigkeit und Haltbarkeit.
SLC
Da nur ein Bit pro Speicherzelle gespeichert wird, ist die Fehlerrate sehr gering. Für das Lesen und Schreiben sind zudem nur zwei Spannungsniveaus nötig, was für hohe Geschwindigkeit sorgt und den Stromverbrauch tief hält. Bei SLC-Flash geht man von einer Lebensdauer von 100 000 Schreibzyklen pro Block aus.
MLC
Die höhere Speicherdichte bedeutet gleichzeitig weniger Speicherzellen für mehr Kapazität. Dadurch lässt sich MLC-Flash günstiger Fertigen. Das Schreiben und Lesen dauert dafür länger und die Lebenserwartung sinkt. Die Speicherzellen müssen vier Spannungsniveaus vertragen und der Controller muss diese lesen können. Dadurch werden die Zellen schneller abgenutzt und das Beschreiben/Lesen dauert länger, weil es komplexer wird. Durch die erhöhte Komplexität treten häufiger Fehler auf. Hier müssen die Controller mehr leisten. Bei MLC-Flash geht man von einer Lebensdauer von 3000 Schreibzyklen pro Block aus.
TLC
Beim TLC-Flash verschärfen sich die Unterschiede zum SLC gegenüber dem MLC nochmal. TLC ist noch günstiger in der Fertigung als MLC. Die Speicherzellen müssen hier acht Spannungsniveaus vertragen. Im Vergleich zu SLC dauert das Lesen etwa vier Mal so lange und das Schreiben gar sechs Mal so lange. Bei der Lebenserwartung geht man von 1000 Schreibzyklen pro Block aus.
Exkurs: Lebensdauer einer SSD
Wie bereits erwähnt, ist das Schreiben nur auf einer leeren oder gelöschten Speicherzelle möglich. Ein Überschreiben von Daten im engeren Sinne ist nicht möglich. Bei einer Änderung müssen Daten zuerst gelöscht und dann neu geschrieben werden. Deshalb spricht man von Schreibzyklen bei der Lebensdauer.
Zum Beschreiben wird das Floating Gate einer hohen Spannung ausgesetzt. Diese ist notwendig, um die Oxidschicht zu überwinden. Die Isolation wird dabei bei jedem Schreibzugriff beschädigt. Irgendwann isoliert sie nicht mehr richtig. Daten können dann nicht mehr zuverlässig gespeichert werden und die Speicherzelle wird unbrauchbar. Das ist auch der Grund, wieso MLC- und TLC-Flash weniger lang haltbar sind als SLC. Zum Schreiben ist eine höhere Spannung nötig, was die Oxidschicht stärker belastet. Zudem sind die Unterschiede der Spannungsniveaus zum Lesen geringer. Wenn die Oxidschicht nicht mehr richtig isoliert, ist sie nicht mehr zuverlässig lesbar.
Zur Lebensdauer von SSDs und Schreib-Lösch-Zyklen gibt es viele Artikel/Tests. Da will ich nicht zu fest darauf eingehen. Einfach so viel: Die meisten Tests zeigen, dass SSDs häufig viel länger halten, als die Hersteller angeben. So hat beispielsweise eine Samsung 850 Pro mit 250 GB im Stresstest von c’t erstaunliches geleistet. Gesamthaft wurden 9.1 Petabyte auf die SSD geschrieben, was einer Laufzeit von über 620 Jahren bei Büroalltagslast entspricht.
Controller/Prozessor
Der Flash-Speicher von SSDs bietet gegenüber HDDs also einige Vorteile. Wie aber bei obiger Beschreibung klar wurde, benötigen SSDs sehr komplexe Kontrollmechanismen, um zu funktionieren. Dafür sind die Controller mit der Firmware zuständig. Häufig haben die Controller noch RAM verbaut, der ihnen bei der Bearbeitung hilft. Hinzu kommt bei vielen Laufwerken auch ein Cache, der als Buffer agiert. Der Controller steuert Prozesse wie Garbage Collection, Wear Leveling, etc. Auf die wichtigsten wird im Folgenden eingegangen. Leider ist es nicht möglich allzu tief in die Funktionen der Controller einzusehen. Da sich die SSDs am stärksten durch das Können der Controller und Firmware unterscheiden, halten sich die Hersteller betreffend der genauen Funktionsweise bedeckt.
Write Amplification
Weil SSDs Daten auf Pages schreiben, aber Blöcke löschen, wird immer mehr geschrieben als bei einem Update nötig. Wenn ich beispielsweise an einem 16 KB grossen File eine Änderung vornehme, muss der ganze Block, wo diese 16 KB liegen, gelöscht und neu geschrieben werden. Je nach Anzahl der Pages pro Block und der Grösse der Pages, müssen viel mehr Daten geschrieben werden als die 16 KB. Die Write Amplification bezeichnet das Verhältnis der zu schreibenden Daten und den tatsächlichen Daten. Um diesem Effekt entgegenzuwirken, gibt es Garbage Collection und TRIM.
Garbage Collection
Um dem Phänomen der langsamer werdenden SSD bei wenig Speicherkapazität entgegenzuwirken, existiert der Hintergrundprozess Garbage Collection. Dabei werden nicht vollständige Blocks kopiert und mit anderen nicht vollständigen Blocks in neuen, vollen Blocks zusammengefügt. Die alten Blocks werden danach gelöscht und sind damit wieder frei, um beschrieben zu werden. Das geschieht mit Garbage Collection in Zeiten von keinen respektive wenigen Zugriffen auf die SSD.
TRIM
Zum besseren Verständnis der TRIM-Funktion, muss zuerst geklärt werden, wie Daten von einer Festplatte gelöscht werden. Wenn Daten von einer Festplatte gelöscht werden, werden sie nämlich nicht sofort gelöscht. Das Betriebssystem teilt der HDD mit, dass der physische Ort beim nächsten Speichern überschrieben werden kann. Deshalb ist es möglich, bereits gelöschte Dateien wiederherzustellen. Bei einer SSD ist es nicht nötig, dass das Betriebssystem ihr mitteilt, wo Daten geschrieben werden und in welchem Zustand sich Page oder Block befinden. Der TRIM-Befehl ermöglicht es dem Betriebssystem dem Controller der SSD mitzuteilen, dass er bestimmte Daten beim Löschen und neu Schreiben eines Blocks nicht mehr schreiben muss. Dadurch werden weniger Daten auf die SSD geschrieben und die Lebensdauer erhöht.
Wear Leveling
Das Wear Leveling stellt sicher, dass gewisse Blocks nicht häufiger als andere beschrieben und gelöscht werden. Dadurch erhöht sich die Lebensdauer, da gewisse Blöcke nicht überstrapaziert werden. Hingegen kann es zu mehr Write Amplification führen. Damit die Schreibzyklen gleichmässig verteilt werden, ist es manchmal nötig einen Block zu löschen auch wenn sein Inhalt sich nicht verändert hat. Wear Leveling muss hier ein Gleichgewicht finden. SSDs haben für das Wear Leveling auch eine sogenannte Spare Area. Dabei handelt es sich um einen Datenbereich, der für das Betriebssystem nicht sichtbar ist. Dieser Bereich steht auch für Bad Block Replacement zur Verfügung.
Weiterentwicklungen
NAND-Flash liefert trotz gewisser Herausforderungen enorme Vorteile gegenüber der Festplatte. Zwei dieser Herausforderungen wurden bereits besprochen: die Lebensdauer und langsamer werdende SSDs. Hinzu kommt der relativ grosse Platzbedarf. Mehr Kapazität wurde beim herkömmlichen NAND durch kleinere Strukturbreiten erreicht. Das Problem dabei: Je kleiner die Strukturbreite, desto empfindlicher wird das Floating Gate und der Stromverbrauch nimmt zu. Denn eine kleinere Strukturbreite bedeutet auch, dass weniger Elektronen in die Speicherzellen passen und die Oxidschicht dünner wird. Sprich sich schneller abnutzt. Das wirkt sich negativ auf die Fehlerwahrscheinlichkeit und die Anzahl von Schreibzyklen aus.
Andere Möglichkeiten mehr Speicher auf engerem Raum zu platzieren, wurden bereits mit MLC und TLC besprochen. Aber auch hier ist irgendwann eine physikalische Grenze erreicht. Zum Schluss dieses Artikels möchte ich noch auf zwei Weiterentwicklungen blicken, welche die Speicherkapazität und Geschwindigkeit von SSDs verbessert haben und weiter verbessern werden.
3D-NAND oder V-NAND
Bei der planaren Bauweise von NAND sind die horizontalen Speicherzellen nahe beieinander. Bei der 3D-NAND Bauweise werden die Speicherzellen übereinander angeordnet und vertikal miteinander verbunden. Dadurch ist eine grössere Speicherkapazität möglich. Dank der vertikalen Anordnung bietet sich mehr physischer Platz in der Breite. Im Floating Gate hat es folglich wieder mehr Platz für Elektronen. Dadurch ist weniger Spannung zum Löschen, Schreiben und Lesen nötig. Das System ist auch weniger Fehleranfällig: Dank dem Platz für mehr Elektronen sind mehr Spannungsniveaus im Floating Gate möglich und diese können besser gelesen werden. Bei vielen SSDs ist die 3D-Bauweise heute bereits Standard.
NVMe
SSDs können über verschiedene Schnittstellen verbunden werden. Neben den älteren Standards SATA und SAS wird PCIe immer beliebter, weil der SATA-Anschluss und das AHCI-Protokoll die Geschwindigkeit von SSDs begrenzt (Transferraten von maximal 600 MB/s). PCIe (Peripheral Component Interconnect Express) und das NVMe Protokoll bieten höhere Übertragungsraten als SATA oder SAS, da es mehr Kanäle gibt, die den Datenfluss ermöglichen. Im Gegensatz zu SATA bietet beispielsweise ein PCIe-3.0-Anschluss eine Transferrate von 1000 MB/s bei einem Übertragungskanal.
Diesen hohen Transferraten wird das AHCI-Protokoll nicht mehr gerecht. Deshalb wurde das Protokoll NVMe entwickelt. NVMe soll einerseits für 50 Prozent geringere Verzögerungen sorgen. Dies weil ein NVMe-Treiber-Stack einfacher aufgebaut ist und effizienter arbeitet. Andererseits bietet das Protokoll 65536 I/O-Queues mit jeweils 65536 Befehlen. Bei AHCI ist nur eine Warteschlange mit 32 Befehlen vorhanden. Dadurch können viele Befehle parallel abgearbeitet werden. Mit NVMe lassen sich grosse Datenmengen schneller übertragen, Betriebssysteme werden schneller gebootet, Programm-Ladezeiten verkürzt und die System-Reaktionszeit verbessert.
Die theoretische 4 GB/s-Übertragungsrate bei PCIe 3.0 mit vier Übertragungskanälen wird heute schon fast ausgereizt. Die neue Samsung 970 Pro erreicht beispielsweise Spitzenwerte um 3.5 GB/s. Im 2017 wurde der PCIe-4.0-Standard lanciert. Dort sind bis zu 2000 MB/s pro Übertragungskanal möglich. Der PCIe-Standard 5.0 ist bereits in Arbeit. Die Datenrate soll sich dann nochmal verdoppeln. Massenspeicher bietet künftig also nicht nur noch mehr Speicher, sondern auch viel höhere Geschwindigkeiten.
Technologie und Gesellschaft faszinieren mich. Die beiden zu kombinieren und aus unterschiedlichen Blickwinkeln zu betrachten, ist meine Leidenschaft.