NAND-Flash
NAND-Flash bezeichnet einen Typ von Flash-Speicher, welcher in NAND-Technologie gefertigt ist.
Der Platzbedarf für eine Flash-Speicherzelle in NAND-Technik beträgt laut Toshiba nur etwa 2/5 der Fläche, die für eine Speicherzelle in NOR-Technik erforderlich ist.
NAND-Flashes arbeiten grundsätzlich Page- und Blockorientiert. Eine Page besteht in der Regel aus einer Zusammenfassung von 512 Bytes. Mehrere Pages werden zu einem Block gruppiert. Die Größe von Blöcken liegt üblicherweise bei 16 KB.
Pages können nur 2 - 3 mal beschrieben werden; weitere Schreibvorgänge sind erst nach einem erneuten Löschen möglich. Aufgrund der Gruppierung ist ein Löschen einer Page jedoch nur über ein Löschen des Blockes möglich, in welchem sie liegt. Wie bei Flash-Speichern üblich, können die Bits in den Bytes nur von 1 nach 0 gekippt werden. Der umgekehrte Weg ist nur über einen Löschvorgang zu erreichen.
Bei NAND-Flashes ist es üblich, dass einige Defektblöcke - die sogenannten Bad Blocks - bereits zum Zeitpunkt der Auslieferung vorhanden sind.
Diese werden bereits vom Hersteller durch spezielle Tests detektiert und als defekt markiert. Später müssen sie von der Treibersoftware berücksichtigt werden.
Die Bad Block-Markierungen werden bei NAND-Flashes zu jeder Page in einer sogenannten Spare Page (übliche Größe: 16 Bytes) abgelegt. Spare Pages sind mit den Nutzdaten-Pages logisch gekoppelt: Wird eine Page (d.h. ein Block) gelöscht, werden dabei ebenfalls die zugehörigen Spare Pages gelöscht.
In der Praxis bedeutet dies, dass bei Formatiervorgängen unbedingt die Bad Block-Markierungen berücksichtigt werden müssen da sie andernfalls unwiederbringlich verloren sind. Die Bad Blocks werden nämlich beim Hersteller durch Extremtests (Temperatur- und Zugriffsgeschwindigkeiten im Grenzbereich) ermittelt; unter normalen Einsatzbedingungen (Zimmertemperatur) müssen diese Bad Blocks nicht grundsätzlich fehlerhaft arbeiten.
Bei NAND-Flashes können auch während des Betriebs Bitfehler auftreten, welche durch geeignete Fehlerkorrektur-Algorithmen (Error Correcting Codes (ECC)) erkannt und behandelt werden müssen. Blöcke mit derartigen Laufzeitfehlern müssen ebenfalls vom Software-Treibersystem zu der Liste der Bad Blocks hinzugefügt werden. Der Softwareteil, welcher zur Verwaltung der Bad Blocks verantwortlich ist, wird als Bad Block Management System bezeichnet.
Interface
Der Zugriff auf NAND-Speicher findet üblicherweise über einen gemultiplexten Adress-/Datenbus mit einer Breite von 8 Bit statt. Das verwendete Protokoll ist kommandobasiert.
Aufgrund des verwendeten Bus-Interfaces ist ein verhältnismäßig großer Softwareaufwand zur Ansteuerung erforderlich. Zudem ist insbesondere das Booten eines Systems nicht ohne aufwendige Maßnahmen möglich. Ein herkömmlicher Prozessor mit Adress-/Datenbus kann diese Speicher nicht direkt adressieren. Bei NOR-Flashes ist dies kein Problem; die Firmware eines Computers wird daher üblicherweise in NOR-Speichern abgelegt; in NAND-Speichern werden die Daten über ein Dateisystem mit Bad Block Management System abgelegt.
Einsatzbereiche
NAND-Flashes sind überwiegend für große Speichermengen ausgelegt; sie finden Verwendung in USB-Sticks, Flash-Speicherkarten (z. B. CF- und SD-Karten) sowie in praktisch allen auf Halbleiterspeicher basierenden MP3-Playern (z. B. iPod shuffle).
Vorteile
- sehr geringer Preis pro Megabyte
- hohe Schreib- und Lesegeschwindigkeiten bei großen Datenmengen
- niedrigere Leistungsaufnahme während der Programmierung
- NAND-Flashes sind in hohen Speicherkapazitäten erhältlich
- Die geringe Anzahl von erforderlichen Signalleitungen ermöglicht eine (hardwareseitig) kostengünstige Ankoppelung an Controllersysteme.
- Das Kommandobasierte Businterface ermöglicht Chips mit größerer Speicherkapazität einzusetzen, ohne das Schaltungsdesign zu ändern.
Nachteile
- Verglichen mit NOR-Speichern ist ein nicht unerheblicher Softwareaufwand erforderlich um NAND-Speicher korrekt anzusteuern.
- Aufgrund der verwendeten Zugriffsart können NAND-Speicher nicht direkt als Programmspeicher für Microcontroller eingesetzt werden (diese benötigen einen linear addressierbaren Speicher mit wahlfreiem Zugriff).
- Zur Anbindung an herkömmliche Controllersysteme ist eine Glue Logic erforderlich.