NOR vs. NAND: So You Think You Know the Music?

Diejenigen unter Ihnen, die auch nur ein bisschen Zeit damit verbracht haben, nach Erkenntnissen über eingebettete Speichertechnologien zu suchen, wissen es: Der diesem Thema gewidmete Teilbereich des Internets ist überschwemmt mit kurzen Artikeln, in denen NOR- und NAND-Flash-Technologien verglichen werden. Einige davon sind sehr gut geschrieben und wirklich erhellend. Aber allzu oft macht die schiere Anhäufung von fadem, trockenem und kontextlosem Inhalt Lust auf mehr. Oder gibt es vielleicht gar nichts mehr? Es sei denn, diese wenigen Teile des sich ständig wiederholenden Materials sind alles, was es zu wissen gibt? Wir glauben nicht.

Dieser dritte Artikel unserer Einführungsreihe (siehe Teil 1 und Teil 2) über Flash-Speicher ist unsere eigene Version des Klassikers „NOR versus NAND“. Eine Version, die Ihnen hoffentlich zu einem besseren Verständnis dieser weit verbreiteten Speichertechnologien verhilft und Ihnen hilft, bessere Designentscheidungen zu treffen. Dieser Artikel ist jedoch kein didaktischer, in sich geschlossener Einführungstext. Er ist eher eine Ergänzung zur üblichen Einführung und behandelt Aspekte der NOR- und NAND-Flash-Technologien, die unserer Meinung nach zu oft ignoriert werden. Wenn Sie völlig neu im Bereich der NOR- und NAND-Flash-Technologien sind, sollten Sie sich zunächst mit neutralerem Material wie den Wikipedia-Artikeln zum selben Thema befassen. Wenn Sie hingegen bereits über ein umfangreiches Wissen über diese Technologien verfügen, finden Sie in diesem Artikel vielleicht noch nützliche (und vielleicht sogar überraschende) Informationen.

Über die Zahlen hinaus

Tabelle 1 ist ein direkter Vergleich der NOR- und NAND-Flash-Technologien anhand verschiedener Leistungskennzahlen. Obwohl diese Zahlen je nach Gerät erheblich variieren können, sind sie plausibel und können als wertvolle Referenz dienen.

NOR NAND
Schreibdurchsatz 1 MB/s 10 MB/s
Lesedurchsatz 40 MB/s 30 MB/s
Löschdurchsatz 0.1 MB/s 300 MB/s
Erase-Schreibdurchsatz 100 KB/s 10 MB/s
Lesegranularität Byte Seite (4KiB typisch)
Schreiben Granularität Byte (typisch) Seite (4 KiB typisch)
Löschen Granularität Block (64 KiB typisch) Block (256 KiB typisch)
Energieverbrauch beim Schreiben 1uJ/Byte 10nJ/Byte
Energieverbrauch beim Lesen 1nJ/Byte 1nJ/Byte
Energieverbrauch beim Löschen 600nJ/Byte 0.2nJ/Byte

Tabelle 1. Plausible NOR- und NAND-Flash-Eigenschaften

Aber so nützlich sie auch sein mögen, Zahlen ohne eine angemessene Interpretation sind bedeutungslos, wenn nicht geradezu irreführend. Rohe Leistungszahlen eignen sich zwar gut für das Marketing, weil sie (zumindest oberflächlich betrachtet) leicht anzugeben und zu verstehen sind, aber aus der Perspektive des Anwendungsdesigns enthalten sie kaum relevante Informationen.

Lassen Sie uns anhand eines konkreten Beispiels veranschaulichen, was wir meinen: die Schreibleistung. Tabelle 1 suggeriert, dass das Schreiben auf NAND viel schneller ist als auf NOR. In der Tat ist dies eine fadenscheinige Behauptung, die nur allzu oft wieder auftaucht. Sicherlich ist daran etwas Wahres dran. Aber sie ist auch äußerst reduktiv und ebnet den Weg für schlechte Designentscheidungen. Sehen wir uns das einmal genauer an.

NOR-Flash ermöglicht Schreibzugriffe auf Byte-Ebene. NAND hingegen hat eine viel gröbere Schreibgranularität. Auf NAND-Flash können Daten nur seitenweise geschrieben werden, typischerweise 4 KiB auf einmal für NAND SLC (8 KiB oder mehr für NAND MLC). Bei einem kleinen Schreibzugriff (z. B. 512 Byte) muss eine ganze Seite in den RAM geladen, geändert und zurückgeschrieben werden. Am Ende werden mehr Daten geschrieben als tatsächlich geändert. Dieses Phänomen wird gemeinhin als Schreibverstärkung bezeichnet. In unserem (sehr plausiblen) Beispiel beträgt die Schreibverstärkung 8 (4 KiB Seite/512 Byte Zugriff). Bei einer Arbeitslast, die von solch kleinen Zugriffen dominiert wird, würde der effektive Schreibdurchsatz um das 8-fache sinken. Das ist eine ganze Menge. Aber es geht noch weiter.

Bevor Daten geschrieben werden können, muss ein Dateisystem (oder eine Datenbank) sie erst einmal finden. Der Suchvorgang kann mehr oder weniger effizient sein, je nach Dateisystem und verfügbarem Cache und anderen Faktoren. Dennoch geht jeder Schreibzugriff in der Regel mit einer Reihe von entsprechenden Lesezugriffen einher. Bei NOR-Flash sind die Lesezugriffe sehr schnell. Sie zeichnen sich durch eine Latenzzeit von nahezu Null und einen sehr hohen Durchsatz aus. Am wichtigsten ist, dass die Lesezugriffe auf Byte-Ebene durchgeführt werden. Dies ist besonders vorteilhaft für den Prozess der Datensuche, da die internen Strukturen von Dateisystemen in der Regel aus kleinen und verstreuten Datenstücken bestehen.

Andererseits sind zufällige Lesezugriffe auf NAND-Flash deutlich langsamer. Und ähnlich wie Schreibzugriffe werden sie auf Seitenebene durchgeführt. Bei kleinen Zugriffen führt dies zu einer gewissen Verschwendung, da ohnehin eine ganze Seite geladen werden muss. Dieser zusätzliche Overhead, der als Leseverstärkung bezeichnet wird, schränkt die Schreibleistung von NAND ein, was bei einem Blick auf Tabelle 1 nicht sofort ersichtlich ist.

Alles zusammengenommen zeigt sich, dass die jeweiligen Netto-Schreibleistungen (d. h. unter Berücksichtigung der Lese-/Schreibverstärkung und des Lookup-Overheads) von NOR- und NAND-Technologien nicht so stark voneinander abweichen, wie es die rohen Leistungszahlen zunächst vermuten lassen. Vor allem aber wird deutlich, dass eine gründliche Leistungsbewertung nicht möglich ist, ohne die Zugriffsmuster der Anwendung zu berücksichtigen, einschließlich der Zugriffsgröße und -verteilung über den gesamten Datensatz.

Gras ist grün, der Himmel ist blau, NOR ist für Code, NAND ist für Daten

Es gibt ein hartnäckiges Missverständnis, das wir immer wieder hören, nämlich dass NOR-Flash für Code und NAND-Flash für Daten ist. Es stimmt, dass NOR-Flash häufiger als NAND-Flash für die Speicherung von Code verwendet wird. Hierfür gibt es zwei Hauptgründe. Erstens ermöglicht die Zugriffsgranularität auf Byte-Ebene die Ausführung von Code an Ort und Stelle, was für kleine eingebettete Systeme ein unbestreitbarer Vorteil ist. Zweitens ist NOR bei kleinen bis mittleren Firmware-Größen (z. B. unter 64 MBit) einfach wirtschaftlich sinnvoller, da die kleinsten verfügbaren NAND-Bausteine deutlich teurer sind.

Dennoch verwenden viele unserer Kunden NOR-Flash für die Datenspeicherung. Und das aus gutem Grund. Bei leseintensiven Anwendungen bietet NOR einen deutlich höheren Durchsatz als NAND. Selbst für Anwendungen mit hohem Schreibaufkommen kann NOR eine sinnvolle Wahl sein. Durch den Zugriff auf Byte-Ebene und den hohen Lesedurchsatz eignet sich NOR besonders gut für Arbeitslasten, die von kleinen zufälligen Schreibzugriffen dominiert werden. Bis zu einem Punkt, an dem die Netto-Schreibleistung an die von NAND-Flash heranreicht (manchmal sogar übertrifft). Dies ist besonders für kleine Datensätze relevant, bei denen das wirtschaftliche Argument eindeutig für NOR-Flash spricht.

Wollen Sie mehr?

Was wir in diesem Artikel behandelt haben, ist nur die Spitze des Eisbergs. Wir hoffen jedoch, dass wir gezeigt haben, wie sich NOR- und NAND-Flash-Technologien aus der Perspektive des Anwendungsdesigns unterscheiden und wie rohe Leistungszahlen interpretiert werden können, um bessere Designentscheidungen zu treffen.

Wenn Sie mehr über NOR- und NAND-Flash-Technologien, Leistungsbewertung und andere fortgeschrittene speicherbezogene Themen lesen möchten, enthält das TREEspan-Benutzerhandbuch eine Fülle von Informationen, sowohl allgemein als auch spezifisch für das TREEspan File System (TSFS).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.