Wenn ich Dokumente zu NAND- und NOR-Blitzen lese. Sie sagen, dass NAND ein sequentieller Speicher ist, während NOR zufällig ist. Ich verstehe nicht, was den NAND-Speicher daran hindert, auch zufällig zu sein, da der einzige Unterschied zwischen diesen beiden Speichern darin besteht, seriell und parallel zu sein.
NAND-Flash speichert Daten nicht fehlerfrei. Es hat eine (vergleichsweise) hohe Bitfehlerrate. Aus diesem Grund werden Datenseiten in NAND mit redundanten Daten gespeichert, die eine Fehlerprüfung und -korrektur ermöglichen. Dies bedeutet, dass beim Lesen eines Bytes aus dem NAND-Flash möglicherweise ein Fehler vorliegt. Um es zu überprüfen oder zu korrigieren, müssen Sie die gesamte Datenseite lesen, um die redundanten Daten zu erhalten. Damit ist es grundsätzlich ein seitenorientiertes Speichermedium.
Der Trend in den letzten 10 Jahren ging dahin, dass die Seitengröße und -dichte von NAND zunahm, aber auch die erforderliche Fehlerkorrektur wurde komplexer und die Wahrscheinlichkeit von Einzelbitfehlern stieg ebenfalls.
Die effektive Zeit einer Seitenleseoperation hängt davon ab, wie lange es dauert, die Daten zu lesen, zu prüfen und zu korrigieren. In Fällen, in denen ein Fehler korrigiert werden muss, ist die effektive Lesezeit viel länger als im Fall ohne Fehler. Dies ist normalerweise eine unerwünschte Eigenschaft von RAM. Der Fehlerkorrekturprozess ist rechenintensiv und Hardwarebeschleunigung ist grundsätzlich erforderlich, damit er funktioniert, ohne die Systemleistung zu beeinträchtigen.
Beim Schreiben von Daten in NAND-Flash gibt es einige zusätzliche Probleme. Um Daten zu schreiben, müssen Sie zuerst löschen. NAND-Flash erlaubt kein zufälliges Schreiben. Löschungen dauern relativ lange und müssen auf einem ganzen Block von Seiten durchgeführt werden. Um also ein Byte zu schreiben, müssen Sie zuerst einen Block in den flüchtigen Speicher lesen, ihn dann löschen und dann die geänderten Daten zurückschreiben (einschließlich der neu berechneten redundanten Daten für die von Ihnen geänderte Seite).
Jetzt müssen wir über Ausdauer sprechen. NAND-Flash kann nur so oft gelöscht werden, bevor es schlecht wird. Manchmal ändern Sie also ein Byte und stellen dann fest, dass der Block fehlerhaft ist. Sie müssen den Block als schlecht markieren und dann den gesamten Block an eine andere Stelle verschieben, um nur ein Byte zu schreiben. Und das bedeutet, dass Sie nachverfolgen müssen, wohin Blöcke verschoben oder neu zugeordnet wurden.
Ich hoffe, Sie erkennen allmählich einige der Schwierigkeiten, die mit der Verwendung von NAND-Flash als RAM verbunden sind.
Wenn Sie mehr darüber recherchieren möchten, hier einige Suchbegriffe: NAND Flash Endurance, NAND Flash ECC, NAND Flash Bad Block Management.
st2000
Markus Müller
JimmyB
Andreas