Antworten:
Es gibt eine Menge Kompromisse.
Wikipedia auch:
Trotz der zusätzlichen Transistoren ermöglicht die Reduzierung von Erdungsdrähten und Bitleitungen ein dichteres Layout und eine größere Speicherkapazität pro Chip. Außerdem darf der NAND-Flash normalerweise eine bestimmte Anzahl von Fehlern enthalten (es wird erwartet, dass der NOR-Flash, wie er für ein BIOS-ROM verwendet wird, fehlerfrei ist). Die Hersteller versuchen, die Menge des nutzbaren Speichers zu maximieren, indem sie die Größe des Transistors unter die Größe reduzieren, bei der sie zuverlässig hergestellt werden können, auf die Größe, bei der eine weitere Reduzierung die Anzahl der Fehler schneller erhöhen würde als die insgesamt verfügbare Speicherkapazität.
NOR-Flash kann also leichter angesprochen werden, ist aber nicht annähernd so dicht.
Werfen Sie einen Blick auf ein ziemlich anständiges Vergleichs-PDF.
NOR hat eine geringere Standby-Leistung, ist einfach für die Codeausführung und hat eine hohe Lesegeschwindigkeit.
NAND hat eine viel geringere aktive Leistung (das Schreiben von Bits ist schneller und kostengünstiger), eine höhere Schreibgeschwindigkeit (um ein Vielfaches), eine viel höhere Kapazität, viel geringere Kosten pro Bit und ist sehr einfach für die Dateispeicherung. Aufgrund der geringeren Lesegeschwindigkeit bei der Ausführung von Code müssen Sie ihn wirklich als Ghost speichern, um ihn zu rammen.
Um einen kleinen Abschnitt mit einer großen Tabelle darüber zu zitieren ...
NAND-Flash ist billiger, Sie möchten es also verwenden, wenn Sie können. Der Nachteil ist, dass es nicht so zuverlässig ist. NAND-Flash ist bei den meisten Operationen schneller, mit der bemerkenswerten Ausnahme kleiner Lesevorgänge mit wahlfreiem Zugriff. Wenn Sie ein paar Bytes von einer zufälligen Adresse im Speicher lesen möchten, ist NOR schneller. Bei Lesevorgängen mit großem Speicher ist NAND recht gut und schlägt NOR für ausreichend große Blöcke.
Die meisten eingebetteten Betriebssysteme enthalten Code zum Korrigieren der Fehler in NAND Flash. Es gibt auch Mikrocontroller mit Hardwarefehlerkorrektur. Das eigentliche Problem tritt beim Booten auf: Bootloader der ersten Ebene verfügen nicht über einen fehlerkorrigierenden Code und haben den Speichercontroller noch nicht für die Ausführung von Hardware-ECC konfiguriert. Es ist ein kleines Henne-Ei-Problem - Sie können den ECC-Code nicht fehlerfrei laden, da Sie den ECC-Code noch nicht geladen haben.
Um dieses Problem zu umgehen, geben einige Speicherhersteller einen bestimmten Bereich des Chips an, der garantiert fehlerfrei ist (die ersten 4 kB oder ähnliches). Sie platzieren dort einen Bootloader mit Software-ECC (wie U-Boot ), lesen ihn fehlerfrei aus und verwenden ihn dann, um Ihren Betriebssystemkernel auszulesen und dabei Fehler zu korrigieren. Sie können einen Bootloader auch in einem seriellen Flash speichern und NAND-Flash nur für große Dinge wie einen Betriebssystemkernel oder ein Dateisystem verwenden.
Ich fand diesen Atmel-Anwendungshinweis nützlich: http://www.atmel.com/dyn/resources/prod_documents/doc6255.pdf
NOR ermöglicht den wahlfreien Zugriff, NAND jedoch nicht (nur Seitenzugriff).
Aus Wikipedia :
NOR- und NAND-Flash erhalten ihre Namen von der Struktur der Verbindungen zwischen Speicherzellen. Beim NOR-Flash werden Zellen parallel zu den Bitleitungen geschaltet, sodass Zellen einzeln gelesen und programmiert werden können. Die Parallelschaltung von Zellen ähnelt der Parallelschaltung von Transistoren in einem CMOS-NOR-Gatter. Im NAND-Flash sind die Zellen in Reihe geschaltet und ähneln einem NAND-Gatter. Die Reihenschaltungen verbrauchen weniger Platz als die Parallelschaltungen, was die Kosten für NAND-Flash verringert. Es verhindert nicht, dass NAND-Zellen einzeln gelesen und programmiert werden.