Warum beschädigt das Löschen von SSDs in Schritten von ganzen Blöcken benachbarte Zellen nicht?

Ich weiß, dass SSDs nur in Schritten von ganzen Blöcken gelöscht werden, um Korruption und Beschädigung zu vermeiden. Aber wie schädigt das benachbarte Zellen nicht? Warum ist eine energieintensive Tunneling-Hemmung nicht notwendig, wenn Sie eine ganze Reihe von Zellen gleichzeitig schlagen?

Antworten (1)

Es geht nicht darum, Korruption oder Schaden zu vermeiden. Das Löschen in Blöcken ist Teil der Definition von Flash-Speicher. Flash-Speicher stammen von EEPROMs ab – EEPROM + Block löschen = Flash. Es gibt ein paar Gründe, warum das gut ist:

  1. Der zum Löschen verwendete Mechanismus (Fowler-Nordheim-Tunnelung) ist langsam. In NOR-Flash ist es möglich, viel schnellere Mechanismen zum Programmieren wie die Injektion heißer Elektronen zu verwenden. Wir sprechen hier von Mikrosekunden im Vergleich zu Hunderten von Millisekunden, einem Faktor von ~100.000. In NAND-Flash wird FN-Tunneling auch für die Wortprogrammierung verwendet, aber mindestens eine Operation ist schneller.

  2. Konzeptionell ist das Löschen sowieso eher eine Blockoperation. Dies gilt sowohl für Mikrocontroller (wobei „Neu-Flashen“ ein vollständiges Löschen/Neuprogrammieren bedeutet) als auch für SSDs (Sie können Daten byteweise an eine Datei anhängen, aber durch das Löschen der Datei werden alle Daten auf einmal entfernt). . Das Überschreiben nur weniger Daten in einer vorhandenen Datei ist viel seltener.

  3. Beim Löschen werden hohe Spannungen verwendet, sodass das Löschen in Blöcken weniger Chipfläche erfordert, um bit- oder wortselektives Schalten zu implementieren. Dies gilt auch für die Programmierung, aber Sie müssen bitselektiv programmieren, also führt kein Weg daran vorbei.

Wenn Sie eine Quelle posten, kann ich mehr zu Fragen der Korruption und Beschädigung kommentieren. FN-Tunneln verursacht langfristige Oxidschäden, die das Löschen (und Programmieren im NAND-Flash) verlangsamen. Es ist auch möglich, dass ein Programmier- oder Löschvorgang benachbarte Bits beschädigt ("stört"). Schließlich ist es bei Stacked-Gate-Flash-Transistoren möglich, dass eine Überlöschung beschädigte Lesevorgänge verursacht, aber ich weiß nicht, wie häufig dies bei NAND-Flash der Fall ist.

BEARBEITEN: Der Ars Technica-Artikel, auf den Sie verlinkt haben, enthält den folgenden Absatz:

Während SSDs einzelne Seiten lesen und schreiben können, können sie keine Seiten überschreiben. Eine frisch gelöschte, leere Seite des NAND-Flash hat keine Ladungen in einem seiner schwebenden Gates gespeichert; es speichert alle 1s. 1s können auf Seitenebene in 0s umgewandelt werden, aber es ist ein unidirektionaler Prozess (das Zurückwandeln von 0s in 1s ist ein potenziell gefährlicher Vorgang, da hohe Spannungen verwendet werden). Es ist schwierig, den Effekt nur auf die Zellen zu beschränken, die verändert werden müssen; die hohen Spannungen können Veränderungen an benachbarten Zellen verursachen. Dies kann durch Tunnelinhibierung verhindert werden – Sie legen eine sehr große Spannung an alle umliegenden Zellen an, damit ihre Elektronen nicht zusammen mit den Zielzellen wegtunneln –, aber dies führt zu einer nicht geringen Belastung der gelöschten Zellen . Um Korruption und Schäden zu vermeiden, SSDs werden nur in Schritten von ganzen Blöcken gelöscht, da eine energieintensive Tunnelinhibition nicht notwendig ist, wenn Sie eine ganze Reihe von Zellen gleichzeitig schlagen. (Irgendwo ist da ein Mafia-Witz drin, da bin ich mir sicher.)

Ich habe nur an NOR-Flash gearbeitet, daher kann ich nicht sicher sagen, ob es etwas Besonderes an NAND-Flash gibt, das dazu führt, dass das Löschen schädlich ist. Diese Präsentation von Micron legt nahe, dass das Löschen in Blöcken erfolgt, da die Löschspannung an die P-Wanne angelegt wird und eine separate P-Wanne für jede Transistorkette zu viel Platz beanspruchen würde. Wie Sie in der Präsentation sehen können, wird die Hemmung zum Programmieren verwendet und hat die gleichen Probleme, die im Ars Technica-Artikel erwähnt werden. Die Lösch- und Programmierspannungen sind erwartungsgemäß ähnlich. Ich vermute, der Ars-Autor war verwirrt über die Bedeutung dieser Punkte:

  • Aufgrund des Designs des Flash-Arrays können Spannungen nur an ganze Zeilen (Gates), Strings (Kanäle) oder Blöcke (P-Wannen) von Transistoren angelegt werden.
  • Dies schließt die hohen Spannungen ein, die zum Induzieren von FN-Tunneln zum Programmieren/Löschen verwendet werden.
  • Wenn Sie nicht jedes Bit in der ausgewählten Zeile programmieren möchten, müssen Sie an einige davon eine Sperrspannung anlegen.
  • Eine Komponente der Sperrspannung ist eine mittelhohe Spannung, die an die Gates jeder nicht ausgewählten Zeile (Wortleitung) angelegt wird.
  • In Zeichenfolgen, die Bits enthalten, die Sie programmieren, wirkt diese mittelhohe Spannung als schwache Programmierspannung für die nicht ausgewählten Bits.
  • Im Laufe der Zeit kann diese schwache Programmierung nach und nach ein bisschen umkippen, das gelöscht werden soll.
  • Wenn Sie selektives Löschen hätten, müssten Sie eine ähnliche Art von Hemmung durchführen, um die nicht ausgewählten Bits zu schützen.

Ich bezweifle, dass die Löschhemmung schädlicher wäre als die Programmierhemmung, und sie würden sich wahrscheinlich sowieso ausgleichen. Aber ein wählbares Löschen mit Hemmung würde mehr Platz auf dem Chip beanspruchen und somit den Preis in die Höhe treiben. Angesichts der Tatsache, dass es Flash-Speicher lange vor NAND-SSDs gab, wäre jede Qualitätsverbesserung durch Blocklöschung ein glücklicher Zufall und keine moderne Designentscheidung.

Auch hier habe ich nur an NOR-Flash gearbeitet. Wenn also jemand mit NAND-Erfahrung da draußen ist, können Sie sich gerne melden.

Im zweiten Absatz können Sie mehr über Korruption und Beschädigung erfahren: arstechnica.com/information-technology/2012/06/…
Ich habe meine Antwort mit einer Antwort auf den Artikel aktualisiert.