Dadurch, dass die konkurrierenden Hersteller von Flash-ICs immer neue Funktionen einführen, wie zum Beispiel Schreib- und Lese-Caches, »Copy Back« und »Multi Plane«-Programmierung, verkompliziert sich die Situation weiter. Ziel all dieser Architekturverbesserungen war es, die Leistungsfähigkeit zu steigern. Diese Neuerungen brachten jedoch auch Kompatibilitätsprobleme für die Anwender mit sich, wenn sie ihre Speicherbausteine von mehreren Zulieferern beziehen, um Versorgungsengpässen aus dem Weg zu gehen. Kompatibilitätsprobleme resultieren nicht zuletzt auch aus der Tatsache, dass NAND-Flash-Produkte verschiedener Hersteller unter Umständen differierende Lösch- und Programmierzeiten aufweisen.
Herstellerunabhängige Schnittstelle
NAND-Controller lösen dieses Problem, indem sie eine einfache, herstellerunabhängige und standardisierte Schnittstelle zwischen dem Host-System und den Flash-Speicherblock einrichten. Bei einer diskreten Lösung bezieht der Anwender die Controller und Speicher-ICs oft von verschiedenen Zulieferern, um sie auf seinen Leiterplatten zu montieren. Nach dem Einschalten des Systems erkennt ein Flash-Dateisystem im Controller die vorhandenen Speicherbausteine, führt die erforderlichen Handshaking-Routinen zur Unterstützung der Speichermedien aus und nimmt eine Grundformatierung vor.
In letzter Zeit haben die Hersteller begonnen, dieses Problem mit Hilfe von gemanagten NAND-Lösungen zu beheben. Diese erreichen hinsichtlich der Einfachheit des Designs eine neue Dimension, indem sie einen integrierten ATA-Controller mit einem oder mehreren NAND-Flash-Chips in einem Multichip-Gehäuse kombinieren (Bild 1). Diese komplette, plug-and-playfähige NAND-Storage-Lösung im kompakten Format kann mit Vorteilen hinsichtlich Kosten und Platzbedarf punkten. Daher ist sie in Embedded-Applikationen auf Basis des standardisierten ATA/IDE-Protokolls überaus populär.
In diskreten und gemanagten NAND-Lösungen übernimmt ein Mikrocontroller die Aufgabe, sämtliche Befehle des Hosts zu decodieren und in Flash-Instruktionen umzuwandeln. Im Interesse höherer Performance steht dem Mikrocontroller meist ein kleiner SRAM-Bereich als Pufferspeicher zwischen Host- und Flash-Bausteinen zur Seite. Um Latenzen zu vermeiden, die durch die Verarbeitungsabläufe im Mikrocontroller entstehen können, verwenden diese Lösungen in der Regel einen DMA-Block als Schnittstelle zwischen dem Mikrocontroller und dem Datenkanal, also zwischen dem hostseitigen ATA/IDE-Bus und dem Flash-Speicher. Der DMA-Block transferiert die Daten zwischen dem SRAM-Puffer und dem Flash-Speicher, damit sich das Arbeitsaufkommen für den Flash-Speicher reduziert.
Das entscheidende Element eines NAND-Flash-Subsystems, gleich ob gemanagt oder diskret, ist das Embedded-Flash-Dateisystem, das den Handshake-Mechanismus zwischen Host und Flash-Speicher koordiniert. Dieses Dateisystem vereinfacht das Schreiben von Daten in den Speicher ganz erheblich, da es eine Vielzahl der architekturspezifischen Unterschiede zwischen Flash-Bausteinen verschiedener Hersteller automatisch kompensiert (z.B. Besonderheiten der Fehlerkorrektur, der Seitengröße oder der Bit-Anzahl pro Zelle). Außerdem lassen sich so spezielle kundenspezifische Features speichern und im Bedarfsfall Bugfixes vornehmen. Des Weiteren enthält das Flash-Dateisystem eine Reihe wichtiger Media-Management-Funktionen, um die Datenintegrität sicherzustellen und zu einer längeren Lebensdauer des NAND-Flash-Speichersubsystems beizutragen.
Allerdings sind keineswegs alle Implementierungen des Flash-Dateisystemblocks gleich, denn viele Controller implementieren diesen Funktionsabschnitt in einem preisgünstigeren maskenprogrammierbaren ROM, während die Controller anderer Hersteller, darunter auch die von Silicon Storage Technology (SST), einen innerhalb der Schaltung reprogrammierbaren Flash-Speicher für diese Aufgabe heranziehen. Angesichts des raschen Wandels in der NAND-Technologie kommt diesem Unterschied erhebliche Bedeutung zu. Anwender, welche die Firmware im ROM des Controllers ablegen, müssen bei jeder Aktualisierung der Firmware eine ebenso zeitraubende wie kostspielige Maskenänderung vornehmen – ein Problem, das auch bei SoCs mit integrierten NAND-Controllern auftritt.