Haftungsausschluss: Im Folgenden werde ich den Begriff "Speicherzelle" (syn) als Synonym für Floating-Gate-Transistor verwenden. Dies ist nicht immer der Fall, da beispielsweise einige neuere Flash-Chips anstelle eines monolithischen Floating-Gates ein Ladungseinfangmedium mit diskreter Speicherung verwenden. Dennoch gelten die gleichen Überlegungen.
Ich möchte den Zusammenhang zwischen dem physischen Layout von NOR- und NAND-Flash-Zellen und dem Konzept von Blöcken und Seiten kennen
Jeder Speicherblitz ist ein Array von Speicherzellen. Dieses Array ist in Blöcke unterteilt. Abhängig von der Flash-Speichertopologie (NOR oder NAND, siehe Anmerkung 1) werden in jedem Block die Zellen jeder Bitleitung parallel oder in "Reihe" geschaltet (siehe Anmerkung 2). Unten sehen Sie eine Darstellung eines NOR (links) und eines NAND (rechts) 4x4-Speicherblocks.
Im vorherigen Bild ist der Block das gesamte Array mit 16 Zellen, während die Seiten die Zellen sind, die mit derselben Wortzeile verbunden sind. Natürlich sind Blöcke und Seiten nicht so klein.
möchte auch den genauen Grund wissen, warum das Löschen nur in Bezug auf Blöcke erfolgt.
Wegen der Definition von Blitz. Flash-Speicher werden auf diese Weise aufgerufen, da die Zellen im Gegensatz zum EEPROM parallel, dh gleichzeitig, blockweise gelöscht werden, sodass sie schneller als das EEPROM sind . Das Löschen einer ähnlichen Anzahl von Zellen in EEPROMs dauert viel länger, da es pro Byte durchgeführt wird.
Warum ist die Löschzeit so langsam?
Der Zelllöschprozess ist sehr langsam, da er auf einem quantenmechanischen Effekt basiert, der als Fowler-Nordheim (FN) -Tunneln bezeichnet wird. Jedes schwimmende Tor speichert eine sehr kleine Ladung (Hunderte vonn C./ cm2 bis zu μ C./ cm2, abhängig von der jeweiligen Technologie), aber auch der FN-Tunnelstrom ist gering (zwischen einigen zehn μ A / cm2 bis zu mehreren m A / cm2. Der tatsächliche Wert hängt von der Programmierspannung des Herstellers ab - der FN-Strom wächst exponentiell mit der Spannung. Infolgedessen ist die für das Löschen benötigte Zeit sehr lang (typischerweise einige ms).
Ich verstehe auch nicht, warum NAND-Speicher nicht wie NOR-Speicher speicherabbildbar ist. Ich weiß, dass es daran liegt, dass NOR-Zellen parallel zu den Bitleitungen geschaltet sind, aber ich verstehe nicht, warum Sie nicht in der Lage waren, ein ganzes Wort auf einmal im NAND-Speicher zu lesen.
Theoretisch könnte man einen NAND-Flash-Controller herstellen, mit dem das NAND speicherabgebildet werden kann. Das Problem ist, dass es höllisch langsam sein würde . Und, siehe später, eher unpraktisch.
Tatsächlich ergibt sich in einem ersten Fall die niedrige Zufallslesegeschwindigkeit aus der NAND-Topologie. Angenommen, Sie möchten ein Wort auf der letzten Seite lesen. Bei einer NOR-Topologie wird die Bitleitung durch die Kapazität der anderen N-1-Zellen (plus Bitleitungskapazität sowie Pull-up- und Decoderkapazität) geladen. Die Ausbreitungsverzögerung nimmt daher nahezu linear mit der Anzahl der Wortzeilen zu. In einer NAND-Topologie sind die MOSFETs in Reihe geschaltet. Das Netzwerk kann wie unten gezeigt angenähert werden.
Die Laufzeit kann mit der Elmore-Verzögerung angenähert werden, die berechnet werden kann als
tP.D.= k ⋅∑i = 1N.C.ich∑j = 1ichR.j
.
Unter der Annahme gleicher C- und R-Werte ergibt sich, dass diese Formel ungefähr ergibt k ⋅ R ⋅ C.⋅N.( N.+ 1 )2dh die Ausbreitungsverzögerung nimmt mit dem Quadrat der Anzahl der Wortzeilen pro Block zu . In einem typischen NAND-Blitz gibt es 32 bis 64 Wortleitungen pro Block. Wenn die Bitleitungskapazitäten vernachlässigt werden, kann die Zeit etwa 30 bis 60 Mal größer sein als NOR (bei gleicher Anzahl von Wortleitungen).
Um dies zu verbessern, wird ein Seitenpuffer (ein kleiner statischer RAM) in den NAND-Flash eingefügt (siehe auch Hinweis 3). Wenn Sie ein Wort auf einer Seite lesen möchten, wird die gesamte Seite in einen Seitenpuffer kopiert. Nachfolgende Lesevorgänge auf derselben Seite erfolgen von diesem SRAM aus, und die Geschwindigkeit ist sehr hoch. Daher ist der Direktzugriff sehr langsam, der sequentielle Zugriff jedoch sehr schnell.
Die topologisch definierte Zugriffszeit ist jedoch nicht die einzige Begrenzung der Geschwindigkeit. Tatsächlich ist das erste Ziel des NAND-Flash-Speichers nur die hohe Speicherdichte und nicht die Geschwindigkeit (und Zuverlässigkeit ...) des Direktzugriffs.
Um die Dichte zu verbessern, wird daher die Größe der Zelle einschließlich des Tunneloxids geschrumpft (um Kurzkanaleffekte unter Kontrolle zu halten). Ein dünneres Oxid bedeutet, dass die Wahrscheinlichkeit höher ist, dass ein kritischer Defekt im Tunneloxid vorliegt. Ein einzelner "gut platzierter" Defekt (dh genau in der Mitte, wo er das Trap-unterstützte Tunneln maximiert) kann das Floating Gate mit der Zeit entladen (dieses Problem wird durch die Verwendung eines Ladungsfallen-Speichers weniger verschärft, da die Informationen nicht in einem einzigen gespeichert werden leitende Elektrode, sondern an mehreren diskreten und isolierten Stellen gelagert). Um die Ausbeute zu verbessern, wird der Hersteller Geräte verkaufen, auch wenn diese eine Reihe von fehlerhaften Blöcken enthalten. Solche Blöcke werden durch Werkstests gekennzeichnet. Programmier- und Löschvorgänge treten jedoch bei sehr hohen elektrischen Feldern (etwa 10 MV / cm) auf. Diese sind für das Tunneloxid extrem stressig (ohne Berücksichtigung des Einfangens fester Ladungen), und neue Defekte können durch wiederholte Programmier- / Löschzyklen erzeugt werden (aus diesem Grund haben Sie eine maximale Lebensdauer von 10k-1M PE-Zyklen). Infolgedessen können neue Zellen im Laufe der Zeit fehlerhaft werden. Daher muss ein ordnungsgemäßer Fehlererkennungs- und -korrekturalgorithmus sowie eine fehlerhafte Blockidentifikation, -wiederherstellung und -kopie implementiert werden. Ich spreche nicht auch über Verschleißnivellierung usw.
Eine schlechte Blockverwaltung stellt nicht nur eine starke Einschränkung hinsichtlich der Geschwindigkeit des zufälligen Lesens dar, sondern hat auch die folgenden Auswirkungen, die auf einem Gerät mit Speicherzuordnung stark unerwünscht sind:
- Wenn Sie keine Speicher-Aliasing-Schaltung implementieren (die im Wesentlichen prüft, ob der Block fehlerhaft ist, und stattdessen einen anderen Block verwendet, ohne die Adresse zu ändern), kann die Speicherzuordnung selbst auf einem "frischen" Gerät nicht zusammenhängend sein.
- Nicht nur der Speicher konnte nicht zusammenhängend sein: Verschiedene Chips haben unterschiedliche anfängliche fehlerhafte Blöcke. Daher können Sie nicht einmal relative Anweisungen für den Programmzähler (ohne über die absolute Adressierung zu sprechen) wie Laden, Speichern, Springen usw. verwenden. Jedes Programm sollte anders sein!
- Aber selbst wenn Sie ein Gerät ohne fehlerhafte Blöcke haben, können im Laufe der Zeit fehlerhafte Blöcke entdeckt werden. Beachten Sie, dass eine Zelle möglicherweise einen Defekt aufweist, der die Datenaufbewahrungszeit begrenzt. Wenn diese Zeit kleiner als die Lebensdauer des Geräts, aber länger als das werkseitige Testverfahren ist, wird der Block nicht als fehlerhaft markiert. Der Block wird mit der Zeit schlecht, wenn (wenn) das Bit der beschädigten Zelle seinen Zustand ändert.
Wenn daher NAND-Flash als Codespeicher verwendet wird, kopiert das System (z. B. unter Verwendung des Boot-ROMs) normalerweise einen Teil des NAND-Flashs in den RAM und führt den Code von dort aus. Dies ermöglicht nicht nur eine schnelle Ausführung, sondern der Code wird auch in einem zusammenhängenden Speicher ausgeführt, unabhängig davon, wie viele fehlerhafte Blöcke der NAND-Flash hatte.
Die Wortleitungen wählen aus, welches Wort gelesen / geschrieben werden soll, und die Bitleitungen tragen die Daten, nicht wahr?
Die Adresse ist unterteilt in Blockadresse (die dann decodiert wird und einen bestimmten Block auswählt), Seitenadresse (die dann decodiert wird und eine bestimmte Wortzeile auswählt) und Spaltenadresse (die dann decodiert wird und eine Gruppe von n Bitleitungen -as auswählt) groß wie die Speicherbreite. Typischerweise 8 oder 16).
Anmerkungen:
- Die NOR- und NAND-Terme ergeben sich aus der Ähnlichkeit jeder Bitleitung mit dem Pulldown-Netzwerk eines CMOS-NOR- oder NAND-Gatters. Tatsächlich ist in einem NOR-Blitz die Bitleitung genau dann 0, wenn der ausgewählte Floating-Gate-MOSFET eine niedrige Schwellenspannung aufweist. In einem NAND-Blitz ist die Bitleitung genau dann 1, wenn der ausgewählte Floating-Gat-MOSFET eine hohe Schwellenspannung aufweist.
- Die Zellen sind mit Ausnahme des Gates parallel oder in Reihe geschaltet.
- Einige NOR-Flashs haben auch einen Seitenpuffer, um die sequentielle Lesegeschwindigkeit weiter zu verbessern.