Warum muss der Flash-Speicher in Seiten/Blöcken geschrieben/gelöscht werden?

Ich versuche, die Funktionsweise von Flash-Speichern auf Transistorebene zu verstehen. Nach einiger Recherche habe ich mir ein gutes Gespür für Floating-Gate-Transistoren angeeignet und wie man Elektronen injiziert oder aus der Zelle entfernt. Ich habe einen CS-Hintergrund, daher ist mein Verständnis von physikalischen Phänomenen wie Tunneln oder Injektion heißer Elektronen wahrscheinlich ziemlich wackelig, aber ich fühle mich trotzdem wohl damit. Ich habe mir auch eine Vorstellung davon gemacht, wie man entweder aus NOR- oder NAND-Speicherlayouts liest.

Aber ich habe überall gelesen, dass Flash-Speicher nur in Blockeinheiten gelöscht und nur in Seiteneinheiten beschrieben werden können. Ich habe jedoch keine Rechtfertigung für diese Einschränkung gefunden und versuche, eine Intuition darüber zu bekommen, warum dies so ist.

Antworten (3)

Die beste Antwort, die ich auf Ihre Frage gefunden habe, finden Sie unter How Flash Memory Works , wo es heißt:

Die Elektronen in den Zellen eines Flash-Speicherchips können durch das Anlegen eines elektrischen Feldes, einer Ladung mit höherer Spannung, auf den Normalzustand ("1") zurückgebracht werden. Flash-Speicher verwenden eine In-Circuit-Verdrahtung, um das elektrische Feld entweder an den gesamten Chip oder an vorbestimmte Abschnitte, die als Blöcke bekannt sind, anzulegen. Dadurch wird der Zielbereich des Chips gelöscht, der dann neu beschrieben werden kann. Flash-Speicher arbeiten viel schneller als herkömmliche EEPROMs, da er nicht ein Byte nach dem anderen löscht, sondern einen Block oder den gesamten Chip löscht und ihn dann neu beschreibt.

Ich verstehe nicht, warum die "In-Circuit-Verdrahtung" eine Programmierung auf Bitebene (Umschalten von 1 auf 0) ermöglicht, aber es könnte mit der unterschiedlichen Art und Weise zusammenhängen, wie die Übergänge von 1 nach 0 durchgeführt werden (Programmierung über Heißinjektion) im Vergleich zu 0 zu 1 Übergang (Löschen über Fowler-Nordheim-Tunnelung).

Es ist per Definition. Ein Flash-Speicher, der das Schreiben einzelner Bits erlaubt, wird als EEPROM bezeichnet .

Flash unterscheidet sich von EEPROM darin, dass Löschungen in Blöcken und nicht in einzelnen Bits erfolgen. Da das Löschen eine relativ langsame Operation ist und vor dem Schreiben durchgeführt werden muss, macht das Durchführen des Löschens in einem großen Block große Schreiboperationen schneller, da eine große Anzahl von Bits parallel gelöscht wird.

Das Löschen in Blöcken ermöglicht auch Vereinfachungen des ICs, wodurch die Kosten gesenkt werden. Skaleneffekte reduzieren die Kosten für Flash gegenüber EEPROM weiter, da Flash heutzutage in großen Mengen für Solid-State-Laufwerke verwendet wird, während EEPROM in viel kleineren Mengen verwendet wird.

danke für diese antwort. Erklärt dieser Gedankengang auch irgendwie, warum Schreibvorgänge Seite für Seite durchgeführt werden müssen?
@Gyom, das gilt nicht für alle Arten von Blitzen. Manchmal wird die Beschränkung durch das Protokoll auferlegt (z. B. hat SATA keine Möglichkeit, weniger als 512 Byte „Sektoren“ zu schreiben). Abhängig von der Art des Flash und dem Protokoll, das für den Zugriff verwendet wird, kann es möglich sein, nur ein Byte in einen zuvor gelöschten Block zu schreiben.
(+1) Dies sind die Schlüsselpunkte "das parallele Löschen einer großen Anzahl von Bits" und in geringerem Maße "das Löschen in Blöcken ermöglicht auch Vereinfachungen des IC, wodurch die Kosten gesenkt werden" . Es könnte sich lohnen, sie im Text stärker hervorzuheben.

Sie haben recht damit, dass es keine physikalische Rechtfertigung dafür gibt, in Blockeinheiten löschen zu müssen.

Das Programmieren einer Zelle erfolgt durch Erzeugen eines elektrischen Feldes zwischen der Masse und dem Steuergate, wie in Abb. 1 gezeigt, und die gleiche Idee gilt für das Löschen der Zelle, ein elektrisches Feld in der entgegengesetzten Richtung würde die Arbeit erledigen, wie in Abb. 2 gezeigt. Geben Sie hier die Bildbeschreibung einAus konstruktiven Gründen ist es jedoch relativ komplex, die negative Spannung zu erzeugen und zu verwenden, daher ist die verwendete Strategie die in Abb. 3 gezeigte, indem eine hohe Spannung an der Masse (die die logische Massereferenz im Sektor ist) eingestellt wird. Auswahltransistoren können nicht mehr verwendet werden, nur die Steuergates können niedrig getrieben werden, und dies erzwingt eine vollständige Sektorlöschung.

Flash-Speicher werden per Definition im Block gelöscht. Deshalb heißen sie auch „Flash“, denn bei einer Löschoperation löscht man viele Zellen parallel. Stattdessen müssen Sie dies in einem EEPROM pro Byte tun, was viel länger dauert. Übrigens wird die Löschspannung zwischen der Bulk- und der Gate-Spannung aufgeteilt (eine positive, eine negative). Es ist viel einfacher, eine Spannung zu invertieren, als sehr hohe Spannungen erzeugen und verarbeiten zu müssen.
Die meisten Chips haben viele PN-Übergänge, die normalerweise so vorgespannt sind, dass sie nicht leiten. Wäre es möglich, Zeilen- und Spaltendrähte auf die Spannungen vorzuspannen, die zum Löschen eines Chips erforderlich sind, ohne dass einer dieser PN-Übergänge die Dinge stört? Es wäre sicherlich möglich, verschiedene Arten von schwimmenden Wannen zu verwenden, um Probleme mit solchen PN-Übergängen zu vermeiden, aber dies auf einer Basis pro Zelle zu tun, wäre wahrscheinlich unverschämt teuer.