Warum kann NAND-Flash-Speicher kein Direktzugriffsspeicher sein?

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.

Es wäre hilfreich, wenn Sie auf die Dokumentation verweisen würden, auf die Sie sich beziehen.
Beim Lesen würde ich sagen, dass NAND-Flash ein ausgezeichneter RAM ist. Es ist wie jeder moderne DRAM wahlfrei zugriffsfähig, wo Sie auch eine volle Speicherbank auf einmal lesen würden. Beim Schreiben ist es nicht ganz so, wegen der komplexeren Redewendung "Ganze Zeile lesen, ganze Zeile löschen, geänderte Zeile neu schreiben".
Vorsicht bei der Verwendung des Begriffs „RAM“ für Flash-Speicher. - Ich war für eine Sekunde verwirrt, andere vielleicht auch.
Sie können sich auch fragen, warum Ihr Auto nicht fliegen kann, weil Flugzeuge es können und der einzige Unterschied darin besteht, dass eines Flügel hat und das andere nicht. Sie sind grundlegend unterschiedliche Speicherstrukturen, die für unterschiedliche Anwendungsfälle bestimmt sind. Wenn Sie wahlfreien Zugriff benötigen, verwenden Sie NOR, wenn Sie billigen Massenspeicher benötigen, verwenden Sie NAND. Wenn Sie billigen Massenspeicher mit wahlfreiem Zugriff benötigen, entscheiden Sie, was wichtiger ist, da Sie nicht alles haben können.

Antworten (1)

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.

Und was ist, wenn der Strom ausfällt, während Sie einen Block verlegen?
Wenn Sie sagen "Dies ist normalerweise eine unerwünschte Eigenschaft von RAM", meinen Sie damit, dass RAM auf keine Fehlerkorrekturfähigkeit beschränkt ist?
@Motivated, nein, ich bezog mich auf die Tatsache, dass die Lesezeit über einen großen Bereich variabel ist. Normalerweise möchten Sie, dass RAM-Lesevorgänge sehr schnell sind. Einige RAM-Busse enthalten ECC.
Wenn ich Sie richtig verstanden habe, liegt der Grund, warum NAND zu diesem Zeitpunkt kein Arbeitsspeicher sein kann, in der Suchzeit des RAM? Wäre es fair zu sagen, dass NAND beim Lesen von Daten mit RAM vergleichbar ist und beim Schreiben nicht?
Sogar ein Lesevorgang kann ein Fehlerkorrekturereignis auslösen, das viel länger dauert als ein fehlerfreier Lesevorgang. Es ist also zeitlich nicht so deterministisch wie RAM. Es gibt Dinge wie einen einmalig programmierbaren NAND-Flash-Speicher, der dem ROM sehr ähnlich ist.
Wollen Sie damit sagen, dass die Fehlerkorrekturrate von RAM deterministisch und schneller als NAND ist und NAND daher kein RAM sein kann?
Es ist also möglich, einen NAND-Flash-Speicher mit wahlfreiem Zugriff zu konstruieren?
Ehrlich gesagt weiß ich nicht, ob es möglich ist, einen NAND-Flash-Speicher mit wahlfreiem Zugriff zu konstruieren. Mir ist aber keine Existenz bekannt. Wenn wahlfreier Zugriff erwünscht ist, wird normalerweise ein NOR-Flash-Speicher verwendet.