NAND-Flash ist für die Speicherung von Dateien optimiert und ersetzt herkömmliche Festplattenlaufwerke. Doch wie funktioniert die NAND-Flash-Technologie und wie optimiert der Controller die Leistungsfähigkeit und Lebensdauer des Flash-Speichers?
Das grundlegende Speicherelement, das im Flash-Speicher verwendet wird, ist ein modifizierter Transistor. Bei einem Standardtransistor wird der Stromfluss durch einen Kanal zwischen zwei Kontakten durch eine Spannung aktiviert. Diese Spannung wird an einen Metallanschluss, genannt Gate, oberhalb des Kanals angelegt und durch eine isolierende Oxidschicht getrennt. In einer Flash-Speicherzelle wird ein zusätzliches, elektrisch isoliertes (Floating) Gate zwischen dem Steuer-Gate und dem Kanal hinzugefügt (Bild 1).
Programmierung einer Flash-Zelle
Die Flash-Zelle wird programmiert, indem eine hohe Spannung an das Steuer-Gate angelegt wird. Dadurch gelangen Elektronen durch die Oxidschicht zum Floating Gate (ein Vorgang, der als Tunneling bezeichnet wird). Das Vorhandensein dieser Elektronen auf dem Floating Gate ändert die Steuer-Gate-Spannung, die erforderlich ist, um den Transistor einzuschalten. Eine gelöschte Zelle (keine Ladung am Floating Gate) wird aktiv und stellt eine 1 dar, während eine programmierte Zelle nicht aktiv ist und eine 0 darstellt. Weil das Floating Gate von isolierenden Schichten umgeben ist, hält es die elektrische Ladung, wenn der Strom abgeschaltet wird. Damit ist der Speicher nichtflüchtig.
Das Löschen einer Zelle kehrt diesen Prozess um, indem eine große negative Spannung an das Steuer-Gate angelegt wird, um die Elektronen dazu zu zwingen, aus dem Floating Gate auszutreten.
Aufbau eines Flash-Arrays
Die Flash-Speicherzellen sind innerhalb einer Hierarchie verbunden, um einen effizienten Zugriff zu ermöglichen (Bild 2). Eine Reihe von Zellen, meist 32 bis 128, sind in einer Kette (String) verbunden. Diese Ketten sind in Blöcken organisiert. Jede Kette innerhalb des Blocks ist mit einer separaten Bitleitung verbunden; das Steuer-Gate jeder Zelle in der Kette ist mit einer Wortleitung verbunden. Eine Wortleitung verbindet sich mit allen Zellen an derselben Position in den Ketten und definiert eine Seite innerhalb des Blocks. Eine Seite ist die Mindestgröße für Lese- und Programmiervorgänge. Ein Block ist die kleinste Einheit für Löschvorgänge.
Mehrere Blöcke lassen sich mit Datenpuffern und Steuerschaltkreisen kombinieren, um eine Ebene zu bilden. Ein vollständiger Flash-Speicherchip besteht aus einer oder mehreren Ebenen. In Bausteinen mit mehreren Ebenen ist es möglich, gleichzeitig Lese- und Programmiervorgänge in den Ebenen durchzuführen, um die Gesamtleistungsfähigkeit zu erhöhen. Daten werden gelesen, indem eine niedrige Spannung an die Wortleitung der zu lesenden Seite angelegt wird. Die Daten erscheinen dann auf den Bitleitungen. Um Zellen in einem Block zu programmieren, werden die Daten auf die Bitleitungen übertragen und eine hohe Spannung an die Wortleitung der zu programmierenden Seite angelegt. Weil die Programmierung eine Zelle nur von einer 1 in eine 0 ändern kann, bleiben alle Zellen, in denen die neuen Daten eine 1 sind, in ihrem aktuellen Zustand – unabhängig davon, welcher Zustand gerade vorliegt. Daher müssen alle Zellen vor dem Schreiben gelöscht werden, um sicherzustellen, dass Zellen, die nicht programmiert werden, bereits eine 1 enthalten.
Enthalten die Zellen bereits Daten, müssen sie aus dem Block gelesen, mit den neuen Daten kombiniert und dann auf einen neuen gelöschten Block programmiert werden. Der Block, aus dem die Daten kopiert wurden, kann dann nach dem Löschen wiederverwendet werden.