DE102021107475A1 - Kalibrieren von leseschwellenwerten eines nichtflüchtigen speichers - Google Patents

Kalibrieren von leseschwellenwerten eines nichtflüchtigen speichers Download PDF

Info

Publication number
DE102021107475A1
DE102021107475A1 DE102021107475.4A DE102021107475A DE102021107475A1 DE 102021107475 A1 DE102021107475 A1 DE 102021107475A1 DE 102021107475 A DE102021107475 A DE 102021107475A DE 102021107475 A1 DE102021107475 A1 DE 102021107475A1
Authority
DE
Germany
Prior art keywords
memory
read
level
correlation
candidate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021107475.4A
Other languages
English (en)
Inventor
Dudy David Avraham
Alexander Bazarsky
Rotem Feinblat
David Rozman
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102021107475A1 publication Critical patent/DE102021107475A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5671Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge trapping in an insulator
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3404Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/021Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • G11C29/4401Indication or identification of errors, e.g. for repair for self repair
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series

Abstract

In einem Leseabtastvorgang wird ein erstes Lesestufenfenster für eine erste Kandidatenlesestufe abgetastet, welche die geringste Anzahl von Speicherzellen in Bezug auf andere Kandidatenlesestufen innerhalb dieses Fensters aktiviert. Ein zweites Lesestufenfenster für eine zweite Kandidatenlesestufe wird dann basierend auf einer Korrelation zwischen mindestens einem der zwei benachbarten Speicherzustände und einem oder mehreren anderen benachbarten Speicherzuständen, die dem zweiten Lesestufenfenster zugeordnet sind, eingerichtet. Das zweite Lesestufenfenster wird für eine zweite Kandidatenlesestufe abgetastet, welche die geringste Anzahl von Speicherzellen aktiviert oder zu den geringsten Bitfehlern führt, in Bezug auf andere Kandidatenlesestufen innerhalb des zweiten Lesestufenfensters. Als Nächstes wird ein Lesevorgang eingerichtet, um die erste Kandidatenlesestufe und die zweite Kandidatenlesestufe zu verwenden.

Description

  • HINTERGRUND
  • Da NAND-Speicherzellen-Speichertechnologien von einem einzelnen Bit pro Speicherzelle (Single Level Cell SLC) zu einem Mehrstufen-, Dreistufen- und Vierstufenbetrieb (Speichern von zwei, drei bzw. vier Datenbits pro Speicherzelle) fortschreiten, steigt die Anzahl von Speicherzuständen, die innerhalb eines Spannungsbereichs (auch als VT-Fenster bezeichnet) definiert sind, exponentiell an. Wenn eine nichtflüchtige Speichervorrichtung von Speicherzellen verwendet wird, können sich Speicherzustände im Laufe der Zeit zu höheren Schwellenspannungen oder niedrigeren Schwellenspannungen verschieben. Ferner können sich die Speicherzustände erweitern und mit benachbarten Speicherzuständen überlappen. Ein Leseabtastvorgang, auch als Lesestufenkalibrierung bezeichnet, kann sowohl durchgeführt werden, wenn die nichtflüchtige Speichervorrichtung hergestellt wird, als auch mehrere Male danach, um geeignete Spannungsschwellenwerte zu bestimmen, um Speicherzustände voneinander zu unterscheiden und genaue Lesevorgänge bereitzustellen.
  • Wenn jedoch die Anzahl von Speicherzellen in einem Speicherchip sowie die Menge von pro Zelle gespeicherten Daten (TLC, MLC, QLC, PLC) zunehmen, können Leseabtastvorgänge zu einem zeitaufwendigen Prozess werden. Die Lesestufenkalibrierung kann als Reaktion auf Umgebungsänderungen (wie Temperaturschwankungen oder hohe Vorrichtungsnutzung) durchgeführt werden und kann zwischen immer schmaleren Spannen zwischen Speicherzuständen unterscheiden. Es besteht daher ein Bedarf an schnelleren und effizienteren Leseabtastvorgängen.
  • KURZDARSTELLUNG
  • Diese Offenbarung nimmt auf ein Verfahren für einen verbesserten Leseabtastvorgang Bezug, der auch als Lesestufenkalibrierabtastung bezeichnet wird. Ein erstes Lesestufenfenster, das eingerichtet ist, Lesestufen zwischen zwei benachbarten Speicherzuständen zu testen, wird für eine erste Kandidatenlesestufe abgetastet, welche die geringste Anzahl von Speicherzellen in Bezug auf andere Kandidatenlesestufen innerhalb dieses ersten Lesestufenfensters aktiviert. Ein zweites Lesestufenfenster für eine zweite Kandidatenlesestufe wird dann basierend auf einer Korrelation zwischen mindestens einem der zwei benachbarten Speicherzustände und einem oder mehreren anderen benachbarten Speicherzuständen, die dem zweiten Lesestufenfenster zugeordnet sind, eingerichtet. Das zweite Lesestufenfenster wird für eine zweite Kandidatenlesestufe abgetastet, welche die geringste Anzahl von Speicherzellen in Bezug auf andere Kandidatenlesestufen innerhalb des zweiten Lesestufenfensters aktiviert. Schließlich wird ein Lesevorgang eingerichtet, um die erste Kandidatenlesestufe und die zweite Kandidatenlesestufe zu verwenden.
  • Diese Offenbarung nimmt ferner auf eine Einrichtung Bezug. Diese Einrichtung umfasst ein dreidimensionales Speicherarray von Speicherzellen, eine Chipsteuerung und eine Leseabtastschaltung. Die Chipsteuerung ist eingerichtet, um Speichervorgänge mit den Speicherzellen auszuführen. Die Leseabtastschaltung tastet iterativ einen Satz von Speicherzellen unter Verwendung eines ersten Satzes von Kandidatenlesestufen ab, bis eine Kandidatenlesestufe die geringste Anzahl von Speicherzellen in Bezug auf andere Kandidatenlesestufen innerhalb dieses ersten Satzes von Kandidatenlesestufen aktiviert. Die Leseabtastschaltung bestimmt dann eine erste Lesestufe für einen ersten Speicherzustand basierend auf der Kandidatenlesestufe, welche die geringste Anzahl von Speicherzellen aktiviert. Die Leseabtastschaltung ruft eine Korrelation zwischen dem ersten Speicherzustand und einem zweiten Speicherzustand ab. Die Leseabtastschaltung bestimmt dann eine zweite Lesestufe für den zweiten Speicherzustand unter Verwendung der Korrelation und stellt die erste Lesestufe und die zweite Lesestufe für nachfolgende Lesevorgänge ein.
  • Diese Offenbarung nimmt schließlich auf ein System Bezug, das ein nichtflüchtiges Speicherarray und eine Speichersteuerung umfasst. Das nichtflüchtige Speicherarray umfasst eine Vielzahl von Speicherchips. Die Speichersteuerung umfasst eine Lese-/Schreibschaltung, eine Leseabtastschaltung, einen Fehlerkorrekturcode-Decoder und eine Kalibrierschaltung. Die Lese-/Schreibschaltung schreibt Daten in Speicherzellen der Vielzahl von Speicherchips. Die Leseabtastschaltung implementiert Leseabtastvorgänge für nichtflüchtige Speicherarray-Speicherblöcke. Diese Leseabtastvorgänge testen Sätze von Kandidatenlesestufen basierend auf Korrelationen zwischen zwei Speicherzellenspeicherzuständen für jeden Speicherblock. Der Fehlerkorrekturcode-Decodierer bestimmt eine geschätzte Bitfehlerrate für Daten, die während des Leseabtastvorgangs gelesen werden. Die Kalibrierungsschaltung kalibriert Speicherzellen basierend auf den Lesestufen, die durch die Leseabtastschaltung bestimmt werden.
  • Figurenliste
  • Um die Diskussion über ein bestimmtes Element oder eine bestimmte Handlung zu erleichtern, nehmen die wichtigsten Ziffern in einem Bezugszeichen auf die Nummer der Figur Bezug, in der dieses Element zum ersten Mal vorgestellt wird.
    • 1 veranschaulicht ein Speichersystem 100 gemäß einer Ausführungsform.
    • 2 veranschaulicht eine Speichervorrichtung 200 gemäß einer Ausführungsform.
    • 3 veranschaulicht ein Speicherarray 300 gemäß einer Ausführungsform.
    • 4 veranschaulicht Schwellenspannungsverteilungskurven 400 in Verbindung mit einer Ausführungsform.
    • 5 veranschaulicht eine beispielhafte Codierung für mehrstufige Speicherzellen 500 gemäß einer Ausführungsform.
    • 6 veranschaulicht einen oder mehrere beispielhafte Leseabtastvorgänge 600.
    • 7 veranschaulicht Korrelationen zwischen den Speicherzuständen 700 gemäß einer Ausführungsform.
    • 8 veranschaulicht Korrelationen zwischen den Speicherzuständen 800 gemäß einer Ausführungsform.
    • 9 veranschaulicht eine Verschiebungskorrelationstabelle 900 gemäß einer Ausführungsform.
    • 10 veranschaulicht eine Breitenkorrelationstabelle 1000 gemäß einer Ausführungsform.
    • 11 veranschaulicht einen Leseabtastvorgang 1100 gemäß einer Ausführungsform.
    • 12 veranschaulicht eine Speichervorrichtung 200 gemäß einer Ausführungsform.
    • 13 ist ein Blockdiagramm eines beispielhaften Speichersystems 1300 gemäß einer Ausführungsform.
    • 14 veranschaulicht ein Verfahren zum Durchführen eines Leseabtastvorgangs 1400 gemäß einer Ausführungsform.
    • 15 ist ein beispielhaftes Blockdiagramm einer Rechenvorrichtung 1500, die bestimmte Ausführungsformen enthalten kann.
  • DETAILLIERTE BESCHREIBUNG
  • Die hierin offenbarte und beanspruchte Lösung verwendet Korrelationen zwischen Speicherzuständen, um Leseabtastvorgänge effizienter, genauer und schneller zu gestalten. Wenn sich bestimmte Speicherzustände zu höheren Schwellenspannungen oder zu niedrigeren Schwellenspannungen verschieben oder sich verbreitern oder verengen, können andere Speicherzustände ein korreliertes Muster von Verschieben, Verbreitern, Verengen usw. aufweisen. Diese Korrelationen können positive Korrelationen oder negative Korrelationen sein.
  • In einer Ausführungsform können Korrelationen zwischen einer ersten, vollständig getesteten/überprüften Lesestufe für einen Speicherzustand und einer zweiten Lesestufe, die getestet wird, verwendet werden, um die Anzahl von Kandidatenlesestufen zu reduzieren, die getestet werden, um die zweite Lesestufe zu finden. In einer anderen Ausführungsform können die Korrelationen verwendet werden, um eine Änderung in der vordefinierten Reihenfolge mitzuteilen, in der Kandidatenlesestufen getestet/überprüft werden. Beide Einstellungen können eine Verkürzung der Abtastzeit bewirken. Vorteilhafterweise nutzen Ausführungsformen der offenbarten Lösung Korrelationen zwischen Speicherzuständen, um Lesestufen effizient und effektiv einzustellen oder anzupassen.
  • 1 ist ein schematisches Blockdiagramm, das eine Ausführungsform eines Speichersystems 100, das eine Speichervorrichtung gemäß der offenbarten Lösung veranschaulicht. Das Speichersystem 100 umfasst eine Speichervorrichtung 200, eine Speichersteuerung 102, einen Speicherchip 104, mindestens einen Host 106, eine Benutzeranwendung 108, einen Speicher-Client 110, einen Datenbus 112, einen Bus 114 und ein Netzwerk 116. „Host“ nimmt Bezug auf eine beliebige Rechenvorrichtung oder einen Computer oder ein Computersystem, die bzw. das zum Senden und Empfangen von Speicherbefehlen eingerichtet ist. Beispiele für einen Host schließen unter anderem einen Computer, einen Laptop, eine mobile Vorrichtung, eine Appliance, eine virtuelle Maschine, einen Unternehmensserver, einen Desktop, ein Tablet, einen Hauptrechner und dergleichen ein.
  • „Speicherbefehl“ nimmt auf jeden Befehl Bezug, der sich auf einen Speichervorgang bezieht. Beispiele für Speicherbefehle schließen, ohne darauf beschränkt zu sein, Lesebefehle, Schreibbefehle, Wartungsbefehle, Konfigurationsbefehle, Administrationsbefehle, Diagnosebefehle, Testmodusbefehle, Befehle für Gegenmaßnahmen und alle anderen Befehle ein, die eine Speichersteuerung von einem Host empfangen oder an eine andere Komponente, eine Vorrichtung oder ein System ausgeben können. „Lesebefehl“ nimmt auf eine Art von Speicherbefehl Bezug, der Daten aus Speicherzellen liest.
  • „Schreibbefehl‟ nimmt auf einen Speicherbefehl Bezug, der so eingerichtet ist, dass der Empfänger angewiesen wird, einen oder mehrere Datenblöcke auf ein beständiges Speichermedium wie ein Festplattenlaufwerk, ein nichtflüchtiges Speichermedium oder ähnliches zu schreiben oder zu speichern. Ein Schreibbefehl kann jeden Speicherbefehl einschließen, der dazu führen kann, dass Daten in physische Speichermedien einer Speichervorrichtung geschrieben werden. Der Schreibbefehl kann genug Daten einschließen, um einen oder mehrere Datenblöcke zu füllen, oder der Schreibbefehl kann genug Daten einschließen, um einen Abschnitt eines oder mehrerer Datenblöcke zu füllen. In einer Ausführungsform schließt ein Schreibbefehl ein lineare logische Blockstartadressierung (LBA) und eine Zählung ein, welche die Anzahl der LBAs der auf die Speichermedien zu schreibenden Daten angibt.
  • „Logische Blockadresse‟ oder „LBA“ bezeichnet sich auf einen Wert, der in einer Vorrichtung zur Blockspeicherung verwendet wird, um jedem von n logischen Blöcken, die für die Speicherung von Benutzerdaten auf den Speichermedien verfügbar sind, eine logische Adresse zuzuweisen. In bestimmten Blockspeichervorrichtungen können die LBAs zwischen 0 bis n pro Volume oder Partition liegen. Bei Blockspeichervorrichtungen wird jede LBA direkt auf einen bestimmten Datenblock abgebildet, und jeder Datenblock wird auf einen bestimmten Satz physischer Sektoren auf den physischen Speichermedien abgebildet. „Benutzerdaten“ nimmt Bezug auf Daten, die ein Host zum Speichern oder Aufzeichnen auf einer nichtflüchtigen Speichervorrichtung anweist.
  • „Datenblock‟ nimmt Bezug auf eine kleinste physische Menge an Speicherplatz auf physischen Speichermedien, auf den über einen Speicherbefehl zugegriffen werden kann und/oder der adressierbar ist. Bei den physischen Speichermedien kann es sich um flüchtige Speichermedien, nichtflüchtige Speichermedien, persistente Speicherung, nichtflüchtige Speicherung, Flash-Speichermedien, Festplattenlaufwerke oder dergleichen handeln. Bestimmte konventionelle Speichervorrichtungen unterteilen die physischen Speichermedien in Volumes oder logische Partitionen (auch als Partitionen bezeichnet). Jedes Volume oder jede logische Partition kann eine Vielzahl von Sektoren einschließen. Ein oder mehrere Sektoren sind in einem Block (auch als Datenblock bezeichnet) organisiert. In bestimmten Speichersystemen, wie z. B. denen, die eine Schnittstelle zu Windows®-Betriebssystemen haben, werden die Datenblöcke als Cluster bezeichnet. In anderen Speicherungssystemen, z. B. solchen, die eine Schnittstelle zu UNIX, Linux oder ähnlichen Betriebssystemen haben, werden die Datenblöcke einfach als Blöcke bezeichnet. Ein Datenblock oder Cluster stellt die kleinste physische Menge an Speicherplatz auf den Speichermedien dar, die von einer Speichersteuerung verwaltet wird. Eine Blockspeichervorrichtung kann n Datenblöcke, die für die Benutzerdatenspeicherung auf den physischen Speichermedien zur Verfügung stehen, einer LBA, die von 0 bis n nummeriert ist, zuordnen. In bestimmten Blockspeichervorrichtungen können die LBAs zwischen 0 und n pro Volume oder logischer Partition liegen. In herkömmlichen Blockspeichervorrichtungen wird eine logische Blockadresse direkt auf einen und nur einen Datenblock abgebildet.
  • Das Speichersystem 100 schließt mindestens eine Speichervorrichtung 200 ein, die eine Speichersteuerung 102 und einen oder mehrere über einen Bus 114 verbundene Speicherchips 104 umfasst. „Speichersteuerung“ nimmt Bezug auf jede Hardware, Vorrichtung, jedes Bauteil, Element oder jede Schaltung, die zur Verwaltung von Datenvorgängen auf nichtflüchtigen Speichermedien eingerichtet ist, und kann einen oder mehrere Prozessoren, programmierbare Prozessoren (z. B. FPGAs), ASICs, Mikrosteuerung oder dergleichen umfassen. In einigen Ausführungsformen ist die Speichersteuerung dazu eingerichtet, Daten auf den nichtflüchtigen Speichermedien zu speichern und/oder Daten daraus auszulesen, Daten zu/von der (den) nichtflüchtigen Speichervorrichtung(en) zu übertragen und so weiter.
  • „Speicher-Die“ nimmt Bezug auf ein kleines Stück aus Halbleitermaterial, auf dem eine gegebene Funktionsschaltung hergestellt wird. Üblicherweise werden integrierte Schaltkreise in großen Chargen auf einem einzigen Wafer aus elektronischem Silizium (Electronic-Grade Silicon, EGS) oder einem anderen Halbleiter (wie GaAs) durch Prozesse wie Fotolithografie hergestellt. Der Wafer wird in viele Stücke geschnitten (zerteilt), die jeweils eine Kopie der Schaltung enthalten. Jedes dieser Stücke wird als Die oder Speicher-Die bezeichnet. (Suche nach „Chip (integrierte Schaltung)“ auf Wikipedia.com, 9. Oktober 2019. Zugriffsdatum 18. November 2019.)
  • „Nichtflüchtiges Speicherarray“ nimmt Bezug auf einen Satz nichtflüchtiger Speicherzellen (auch als Speicherzellen oder nichtflüchtige Speicherzellen bezeichnet), die in einer Arraystruktur mit Zeilen und Spalten organisiert sind. Ein Speicherarray ist unter Verwendung eines Zeilenidentifizierer und eines Spaltenidentifizierers adressierbar.
  • „Speicherzelle” nimmt Bezug auf einen Typ von Speichermedien, die so eingerichtet sind, dass sie einen oder mehrere binäre Werte mittels einer bestimmbaren physikalischen Eigenschaft des Speichermediums darstellen, wenn das Speichermedium abgetastet, gelesen oder erkannt wird, um zu bestimmen, welcher/welche binäre Wert(e) zuletzt in der Speicherzelle gespeichert wurde. Speicherzelle und Speicherungszelle werden hierin austauschbar verwendet. Ein Speicherarray ist unter Verwendung eines Zeilenidentifizierer und eines Spaltenidentifizierers adressierbar. „Speicherzelle“ nimmt Bezug auf einen Typ von Speichermedien, die so eingerichtet sind, dass sie einen oder mehrere binäre Werte mittels einer bestimmbaren Eigenschaft des Speichermediums darstellen, wenn das Speichermedium abgetastet, gelesen oder erkannt wird, um einen oder mehrere binäre Werte zu bestimmen, die in der Speicherzelle gespeichert sind oder durch die bestimmbare Eigenschaft der Speicherzelle dargestellt werden. Speicherzelle und Speicherungszelle werden hierin austauschbar verwendet.
  • Die Art der bestimmbaren Eigenschaft, die zum Speichern von Daten in einer Speicherzelle verwendet werden, kann je nach Art des Speichers oder der verwendeten Speichertechnologie variieren. Zum Beispiel in Flash-Speicherzellen, in denen jede Speicherzelle einen Transistor, mit einem Sourceanschluss, einem Drainanschluss und einem Gate aufweist, ist die bestimmbare Eigenschaft ein Spannungspegel, der, wenn er an das Gate angebracht wird, die Speicherzelle veranlasst, einen Strom zwischen dem Drain- und dem Sourceanschluss zu leiten. Der Spannungspegel in diesem Beispiel wird hierin als Schwellenspannung bezeichnet. Eine Schwellenspannung kann auch als eine Steuergate-Referenzspannung (Control Gate Reference Voltage, CGRV), eine Lesespannung oder eine Referenzspannung bezeichnet werden.
  • Beispiele für bestimmbare physikalische Eigenschaften schließen eine Schwellenspannung für einen Transistor, einen elektrischen Widerstandswert einer Speicherzelle, einen Strompegel durch eine Speicherzelle, eine Magnetpolausrichtung, ein Spin-Transfer-Drehmoment und dergleichen ein, ohne darauf beschränkt zu sein.
  • „Nichtflüchtige Speichermedien‟ nimmt Bezug auf jede Hardware, Vorrichtung, Komponente, jedes Element oder jeden Schaltkreis, die bzw. der so eingerichtet ist, dass sie bzw. er eine veränderbare physikalische Eigenschaft beibehält, die verwendet wird, um einen binären Wert von Null oder Eins darzustellen, nachdem eine primäre Stromquelle entfernt wurde. Beispiele für veränderbare physikalische Eigenschaften schließen eine Schwellenspannung für einen Transistor, ein elektrischer Widerstandswert einer Speicherzelle, ein Strompegel durch eine Speicherzelle, eine Magnetpolausrichtung, ein Spin-Transfer-Drehmoment und dergleichen ein, ohne darauf beschränkt zu sein.
  • Die veränderbare physikalische Eigenschaft ist so beschaffen, dass die physikalische Eigenschaft ausreichend fixiert bleibt, so dass, wenn keine primäre Stromquelle für die nichtflüchtigen Speichermedien verfügbar ist, die veränderbare physikalische Eigenschaft gemessen, erkannt oder abgetastet werden kann, wenn der binäre Wert gelesen, abgerufen oder abgetastet wird. Anders ausgedrückt: nichtflüchtige Speichermedien sind Speichermedien, die so eingerichtet sind, dass Daten, die auf den nichtflüchtigen Speichermedien gespeichert sind, abrufbar sind, nachdem eine Stromquelle für die nichtflüchtigen Speichermedien getrennt und dann wieder angeschlossen wurde. Die nichtflüchtigen Speichermedien können ein oder mehrere nichtflüchtige Speicherelemente aufweisen, die unter anderem Folgendes einschließen können: Chips, Pakete, Ebenen, Speicher-Dies und dergleichen.
  • Beispiele für nichtflüchtige Speichermedien umfassen, sind aber nicht beschränkt auf: ReRAM, Memristorspeicher, programmierbare Metallisierungszellenspeicher, Phasenänderungsspeicher (PCM, PCME, PRAM, PCRAM, Ovonic Unified Memory, Chalcogenid-RAM oder C-RAM), NAND-FLASH-Speicher (z. B. 2D-NAND-FLASH-Speicher, 3D-NAND-FLASH-Speicher), NOR-FLASH-Speicher, Nano-Direktzugriffsspeicher (Nano-RAM oder NRAM), drahtbasierte Nanokristallspeicher, Siliziumoxid-basierte Sub-10-Nanometer-Prozessspeicher, Graphenspeicher, Silizium-Oxid-Nitrid-Oxid-Silizium (SONOS), programmierbare Metallisierungszellen (PMC), leitungsüberbrückendes RAM (CBRAM), magnetoresistives RAM (MRAM), magnetische Speichermedien (z. B. Festplatte, Band), optische Speichermedien oder dergleichen.
  • Während die nichtflüchtigen Speichermedien hierin in verschiedenen Ausführungsformen als „Speichermedien“ bezeichnet werden, können die nichtflüchtigen Speichermedien allgemeiner als nichtflüchtiger Speicher bezeichnet werden. Da nichtflüchtige Speichermedien in der Lage sind, Daten zu speichern, wenn eine Stromversorgung entfernt wird, können die nichtflüchtigen Speichermedien auch als Aufzeichnungsmedium, nichtflüchtiges Aufzeichnungsmedium, nichtflüchtiges Speichermedium, Speicher, nichtflüchtiger Speicher, nichtflüchtiges Speichermedium, nichtflüchtiges Speichermedium, nichtflüchtiger Speicher oder ähnliches bezeichnet werden. „Nichtflüchtige Speichermedien“ nimmt Bezug auf jede Hardware, Vorrichtung, Komponente, jedes Element oder jeden Schaltkreis, die bzw. der so eingerichtet ist, dass sie bzw. er eine veränderbare physikalische Eigenschaft beibehält, die verwendet wird, um einen binären Wert von Null oder Eins darzustellen, nachdem eine primäre Stromquelle entfernt wurde. Nichtflüchtige Speichermedien können hierin austauschbar mit dem Begriff nichtflüchtige Speicherungsmedien verwendet werden.
  • In bestimmten Ausführungsformen sind die auf nichtflüchtigen Speichermedien gespeicherten Daten auf Blockebene adressierbar, d. h. die Daten auf den nichtflüchtigen Speichermedien sind in Datenblöcken organisiert, die jeweils eine eindeutige logische Adresse (z. B. LBA) aufweisen. In anderen Ausführungsformen sind Daten, die in nichtflüchtigen Speichermedien gespeichert sind, auf Byte-Ebene adressierbar, was bedeutet, dass die Daten in den nichtflüchtigen Speichermedien in Bytes (8 Bit) von Daten organisiert sind, die jeweils eine eindeutige Adresse aufweisen, wie z. B. eine logische Adresse. Ein Beispiel für byteadressierbare nichtflüchtige Speichermedien ist der Speicherklassenspeicher (SCM).
  • In manchen Ausführungsformen kann jede Speichervorrichtung 200 ein oder mehrere Speicherchips 104 einschließen, wie Flash-Speicher, Nano-Direktzugriffsspeicher („Nano-RAM oder NRAM“), magnetoresistive RAM („MRAM“), dynamische RAM („DRAM“), Phasenwechsel-RAM („PRAM“), usw. In weiteren Ausführungsformen kann die Datenspeichervorrichtung 200 andere Arten von nichtflüchtiger und/oder flüchtiger Datenspeicherung einschließen, wie dynamische RAM („DRAM“), statische RAM („SRAM“), magnetische Datenspeicherung, optische Datenspeicherung und/oder andere Datenspeichertechnologien.
  • Die Speichervorrichtung 200 kann eine Komponente innerhalb eines Host 106 sein, wie hier dargestellt, und kann über einen Datenbus 112 verbunden sein, wie einen „PCI-e“-Bus (Peripheral Component Interconnect Express), einen „seriellen ATA“-Bus (Serial Advanced Technology Attachment) oder dergleichen. In einer anderen Ausführungsform befindet sich die Speichervorrichtung 200 außerhalb des Host 106 und ist daran angeschlossen, über eine „USB“-Verbindung (Universal Serial Bus), eine „IEEE“-1394-Bus-Verbindung (Institute of Electrical and Electronics Engineers) („FireWire“) oder dergleichen. In anderen Ausführungsformen ist die Speichervorrichtung 200 mit dem Host 106 über einen „PCI“-Express-Bus (Peripheral Component Interconnect) verbunden, wobei eine externe elektrische oder optische Buserweiterung oder eine Busnetzwerklösung wie InfiniBand oder „PCIe-AS“ (PCI Express Advanced Switching) oder dergleichen verwendet wird.
  • In verschiedenen Ausführungsformen kann die Speichervorrichtung 200 in Form eines „DIMM“-Moduls (Dual-Inline Memory Module), einer Tochterplatine oder eines Mikromoduls vorliegen. In einer anderen Ausführungsform ist die Speichervorrichtung 200 eine Komponente innerhalb eines im Rack montierten Blades. In einer anderen Ausführungsform ist die Speichervorrichtung 200 in einer Verpackung enthalten, die direkt in eine übergeordnete Baugruppe integriert ist (z. B. Hauptplatine, Laptop, Grafikprozessor). In einer anderen Ausführungsform werden einzelne Komponenten, welche die Speichervorrichtung 200 umfassen, ohne Zwischenverpackung direkt in eine übergeordneten Baugruppe integriert. Die Speichervorrichtung 200 wird in Bezug auf 2 detaillierter beschrieben.
  • „Prozessor‟ nimmt Bezug auf alle Schaltkreise, Komponenten, Chips, Dies, Baugruppen oder Module, die eingerichtet sind, um Maschinenanweisungen zu empfangen, zu interpretieren, zu dekodieren und auszuführen. Beispiele für einen Prozessor können, ohne darauf beschränkt zu sein, eine Zentralverarbeitungseinheit, einen Allzweckprozessor, einen anwendungsspezifischen Prozessor, eine Grafikverarbeitungseinheit (GPU), ein feldprogrammierbares Gate-Array (Field Programmable Gate Array, FPGA), eine anwendungsspezifische integrierte Schaltung (Application Specific Integrated Circuit, ASIC), ein System auf einem Chip (System on a Chip, SoC), einen virtuellen Prozessor, einen Prozessorkern und Ähnliches einschließen.
  • „Schaltkreis“ nimmt auf elektrische Schaltkreise mit mindestens einer diskreten elektrischen Schaltung Bezug, wobei der elektrische Schaltkreis mindestens eine integrierte Schaltung aufweist, wobei der elektrische Schaltkreis mindestens eine anwendungsspezifische integrierte Schaltung aufweist, wobei der Schaltkreis eine Universal-Rechenvorrichtung ausbildet, die durch ein Computerprogramm eingerichtet ist (z. B. einen Universalcomputer, der durch ein Computerprogramm eingerichtet ist, das zumindest teilweise Prozesse oder Vorrichtungen ausführt, die hierin beschrieben sind, oder einen Mikroprozessor, der durch ein Computerprogramm eingerichtet ist, das zumindest teilweise Prozesse oder Vorrichtungen ausführt, die hierin beschrieben sind), wobei der Schaltkreis eine Speichervorrichtung ausbildet (z. B. Formen von Direktzugriffsspeichern), oder wobei der Schaltkreis eine Kommunikationsvorrichtung ausbildet (z. B. ein Modem, einen Kommunikationsschalter oder eine optisch-elektrische Vorrichtung).
  • In einer weiteren Ausführungsform kann die Speichervorrichtung 200 über ein Datennetzwerk mit dem Host 106 verbunden werden, anstatt direkt als DAS mit dem Host 106 verbunden zu sein. Beispielsweise kann die Datenspeichervorrichtung 200 eine „SAN“-Speichervorrichtung (Storage Area Network), eine „NAS“-Speichervorrichtung (Network Attached Storage), eine Netzwerkfreigabe oder dergleichen einschließen. In einer Ausführungsform kann das System 100 ein Datennetzwerk wie das Internet, ein „WAN“ (Wide Area Network), ein „MAN“ (Metropolitan Area Network), ein „LAN“ (Local Area Network), einen Token-Ring, ein drahtloses Netzwerk, ein Glasfaserkanalnetzwerk, ein SAN, ein NAS, ESCON oder dergleichen oder eine beliebige Kombination von Netzwerken einschließen. Ein Datennetzwerk kann auch ein Netzwerk aus der IEEE-802-Familie von Netzwerktechnologien einschließen, wie Ethernet, Token-Ring, Wi-Fi, Wi-Max und dergleichen. Ein Datennetzwerk kann Server, Switches, Router, Verkabelung, Funkgeräte und andere Ausrüstung einschließen, die zur Erleichterung der Vernetzung zwischen dem Host 106 und der Speichervorrichtung 200 verwendet werden.
  • Das Speichersystem 100 schließt mindestens einen Host 106 ein, der mit der Speichervorrichtung 200 verbunden ist. Es können mehrere Hosts 106 verwendet werden und diese können einen Server, eine Speichersteuerung eines „SAN“ (Storage Area Network), eine Arbeitsstation, einen PC, einen Laptop-Computer, einen tragbaren Computer, einen Supercomputer, ein Computer-Cluster, einen Netzwerk-Switch, einen Router oder eine Appliance, eine Datenbank oder Speicher-Appliance, ein Datenabruf- oder Datenerfassungssystem, ein Diagnosesystem, ein Testsystem, einen Roboter, eine tragbare elektronische Vorrichtung, eine drahtlose Vorrichtung oder dergleichen aufweisen. In einer anderen Ausführungsform kann ein Host 106 ein Client sein, und die Speichervorrichtung 200 arbeitet autonom, um von dem Host 106 gesendete Datenanforderungen zu bedienen. In dieser Ausführungsform können der Host 106 und die Speichervorrichtung 200 über ein Computernetzwerk, einen Systembus, DAS (Direct Attached Storage) oder andere Kommunikationsmittel verbunden werden, die für die Verbindung zwischen einem Computer und einer autonomen Speichervorrichtung 200 geeignet sind.
  • Die dargestellte Ausführungsform zeigt eine Benutzeranwendung 108 in Kommunikation mit einem Speicherclient 110 als Teil des Host 106. In einer Ausführungsform ist die Benutzeranwendung 108 eine Software-Anwendung, die auf oder in Verknüpfung mit dem Speicherclient 110 arbeitet. „Speicherclient“ nimmt Bezug auf jede Hardware-, Software-, Firmware- oder Logikkomponente oder jedes Modul, die bzw. das für die Kommunikation mit einer Vorrichtung zur Nutzung von Speicherdiensten eingerichtet ist. Beispiele für einen Speicherclient sind unter anderem Betriebssysteme, Dateisysteme, Datenbankanwendungen, ein Datenbankmanagementsystem („DBMS“), Serveranwendungen, ein Server, ein Volume-Manager, Prozesse auf Kernel-Ebene, Prozesse auf Benutzerebene, Anwendungen, mobile Anwendungen, Threads, Prozesse und dergleichen.
  • „Software“ nimmt Bezug auf eine Logik, die als prozessorausführbare Anweisungen in einem Maschinenspeicher (z. B. flüchtige Lese-/Schreibspeichermedien oder nichtflüchtige Speichermedien) implementiert sind.
  • „Hardware‟ nimmt Bezug auf Funktionselemente, die als analoger und/oder digitaler Schaltkreis enthalten ist.
  • „Firmware‟ nimmt auf Logik Bezug, die als prozessorausführbare Anweisungen verkörpert ist, die auf flüchtigen Speichermedien und/oder nichtflüchtigen Speichermedien gespeichert sind.
  • Der Speicherclient 110 verwaltet Dateien und Daten und nutzt die Funktionen und Merkmale der Speichersteuerung 102 und des zugeordneten Speicherchips 104. Repräsentative Beispiele für Speicherclients schließen einen Server, ein Dateisystem, ein Betriebssystem, ein Datenbankmanagementsystem („DBMS“), einen Volume-Manager und dergleichen ein, sind aber nicht darauf beschränkt. Der Speicherclient 110 steht in Kommunikation mit der Speichersteuerung 102 innerhalb der Speichervorrichtung 200. In einigen Ausführungsformen kann der Speicherclient 110 entfernte Speicherclients einschließen, die auf Hosts 106 betrieben werden oder anderweitig über das Netzwerk 116 zugänglich sind. Die Speicherclients können einschließen, ohne jedoch darauf beschränkt zu sein: Betriebssysteme, Dateisysteme, Datenbankanwendungen, Serveranwendungen, Prozesse auf Kernel-Ebene, Prozesse auf Benutzerebene, Anwendungen und dergleichen.
  • In einer Ausführungsform schließt das Speichersystem 100 einen oder mehrere Clients ein, die über ein oder mehrere Computernetzwerke 116 mit einem oder mehreren Hosts 106 verbunden sind. Ein Host 106 kann ein Server, eine Speichersteuerung eines SAN, eine Workstation, ein PC, ein Laptop-Computer, ein tragbarer Computer, ein Supercomputer, ein Computer-Cluster, ein Netzwerk-Switch, Router oder eine Appliance, eine Datenbank oder Speicher-Appliance, ein Datenabruf- oder Datenerfassungssystem, ein Diagnosesystem, ein Testsystem, ein Roboter, eine tragbare elektronische Vorrichtung, eine drahtlose Vorrichtung oder dergleichen sein. Das Netzwerk 116 kann das Internet, ein „WAN“ (Wide Area Network), ein „MAN“ (Metropolitan Area Network), ein „LAN“ (Local Area Network), einen Token-Ring, ein drahtloses Netzwerk, ein Glasfaserkanalnetzwerk, ein SAN, ein „NAS“ (Network Attached Storage), ESCON oder dergleichen oder eine beliebige Kombination von Netzwerken einschließen. Das Netzwerk 116 kann auch ein Netzwerk aus der IEEE-802-Familie von Netzwerktechnologien, wie Ethernet, Token-Ring, WiFi, WiMax und dergleichen einschließen.
  • Das Netzwerk 116 kann Server, Switches, Router, Verkabelung, Funkgeräte und andere Ausrüstung einschließen, die zur Erleichterung der Vernetzung zwischen dem Host 106 oder den Hosts und dem Host 106 oder Clients verwendet werden. In einer Ausführungsform schließt das Speichersystem 100 mehrere Hosts 106 ein, die als Peers über ein Netzwerk 116 kommunizieren. In einer weiteren Ausführungsform schließt das Speichersystem 100 mehrere Speichervorrichtungen 200 ein, die als Peers über ein Netzwerk 116 kommunizieren. Ein Fachmann wird andere Computernetzwerke erkennen, die ein oder mehrere Computernetzwerke und zugehörige Ausrüstungen mit einer einzelnen oder redundanten Verbindung zwischen einem oder mehreren Clients oder einem anderen Computer mit einer oder mehreren Speichervorrichtungen 200 umfassen, die mit einem oder mehreren Hosts verbunden sind, umfassen. In einer Ausführungsform schließt das Speichersystem 100 zwei oder mehr Speichervorrichtungen 200 ein, die über das Netzwerk 116 mit einem entfernten Host 106 verbunden sind, ohne direkt mit dem lokalen Host 106 verbunden zu sein oder innerhalb von ihm integriert zu sein.
  • In einer Ausführungsform kommuniziert der Speicherclient 110 mit der Speichersteuerung 102 über eine Host-Schnittstelle, die eine E/A-Schnittstelle (Eingabe/Ausgabe) umfasst. Zum Beispiel kann die Speichervorrichtung 200 den ATA-Schnittstellenstandard, den „ATAPI“-Standard (ATA Packet Interface), den „SCSI“-Standard (Small Computer System Interface) und/oder den Faserkanal-Standard unterstützen, die vom „INCITS“ (International Committee for Information Technology Standards) gepflegt werden.
  • In bestimmten Ausführungsformen ist das Speichermedium einer Speichervorrichtung in Volumen oder Partitionen unterteilt. Jedes Volume oder jede Partition kann eine Vielzahl von Sektoren einschließen. Traditionell stellt ein Sektor 512 Bytes von Daten dar. Ein oder mehrere Sektoren sind in einem Block (hierin austauschbar als Block und Datenblock bezeichnet) organisiert.
  • In einer beispielhaften Ausführungsform schließt ein Datenblock acht Sektoren ein, was 4 KB entspricht. In bestimmten Speichersystemen, wie z. B. denen, die eine Schnittstelle zu Windows®-Betriebssystemen haben, werden die Datenblöcke als Cluster bezeichnet. In anderen Speicherungssystemen, z. B. solchen, die eine Schnittstelle zu UNIX, Linux oder ähnlichen Betriebssystemen haben, werden die Datenblöcke einfach als Blöcke bezeichnet. Ein Block oder Datenblock oder Cluster stellt die kleinste physische Menge an Speicherplatz auf den Speichermedien dar, die von einem Speichermanager verwaltet wird, wie z. B. einer Speichersteuerung, einem Speichersystem, einer Speichereinheit, einer Speichervorrichtung oder dergleichen.
  • In einigen Ausführungsformen kann die Speichersteuerung 102 eingerichtet werden, um Daten auf einem oder mehreren asymmetrischen, einmal beschreibbaren Medien, wie Speicherzellen des Festkörperspeichers innerhalb des Speicher-Dies 104 zu speichern. „Einmal beschreibbare Speichermedien“ nimmt auf ein Speichermedium wie eine Speicherzelle Bezug, die reinitialisiert (z. B. gelöscht) wird, bevor neue Daten oder eine Änderung der Daten darauf geschrieben oder programmiert werden. Mit anderen Worten, Daten eines einmal beschreibbaren Speichermediums können nicht überschrieben werden; das einmal beschreibbare Speichermedium muss gelöscht werden, bevor anschließend Daten auf das einmal beschreibbare Speichermedium geschrieben werden. „Asymmetrisches Speichermedium“ nimmt auf ein Speichermedium mit unterschiedlichen Latenzen für unterschiedliche Speichervorgänge Bezug. Viele Arten von Festkörperspeichermedien (z. B. Speicher-Dies) sind asymmetrisch; Beispielsweise kann ein Lesebetrieb viel schneller als ein Schreib-/Programmierbetrieb sein, und ein Schreib-/Programmierbetrieb kann viel schneller als ein Löschbetrieb sein (z. B. kann das Lesen der Speichermedien Hunderte Male schneller als Löschen und zehn Mal schneller als die Programmierung der Speichermedien sein).
  • „Lesevorgang‟ nimmt auf einen Vorgang Bezug, der an einer Speicherzelle durchgeführt wird, um den Wert von Daten zu erhalten, abzutasten, zu erkennen oder zu bestimmen, die durch eine Zustandseigenschaft der Speicherzelle dargestellt werden.
  • „Programmieren“ nimmt Bezug auf einen Speichervorgang, bei dem eine Eigenschaft einer Speicherzelle von einem ersten Zustand (oft ein gelöschter Zustand) in einen zweiten Zustand überführt wird. Ein Programmier-Speichervorgang kann hierin auch als ein Schreibvorgang bezeichnet werden.
  • In bestimmten Ausführungsformen kann ein Programmier-Speichervorgang eine Reihe von Iterationen einschließen, die das Merkmal inkrementell ändern, bis mindestens ein Zielpegel der Änderung erreicht ist. In anderen Ausführungsformen kann ein Programmier-Speichervorgang dazu führen, dass das Attribut mit einer einzigen Iteration auf einen Zielpegel wechselt.
  • Der Speicherchip 104 kann in Speicherbereiche partitioniert werden, die als eine Gruppe (z. B. Löschblöcke) gelöscht werden können, um unter anderem die asymmetrischen Eigenschaften des Speicherchips 104 oder dergleichen zu berücksichtigen. Somit kann das Modifizieren eines einzelnen Datensegments an Ort und Stelle das Löschen des gesamten Löschblocks, der die Daten aufweist, und das Neuschreiben der modifizierten Daten in den Löschblock zusammen mit den ursprünglichen, unveränderten Daten erfordern. Dies kann zu einer ineffizienten Schreibverstärkung führen, was eine Überbeanspruchung des Speicherchips 104 bewirken kann.
  • Der Begriff „Löschblock“ nimmt auf einen logischen oder physischen Löschblock Bezug. In einer Ausführungsform stellt ein physischer Löschblock die kleinste Speichereinheit innerhalb eines bestimmten Speicher-Dies dar, die zu einem bestimmten Zeitpunkt gelöscht werden kann (z. B. aufgrund der Verdrahtung der Speicherzellen auf dem Speicher-Die). In einer Ausführungsform stellen logische Löschblöcke die kleinste Speichereinheit oder den kleinsten Speicherblock dar, der von einer Speichersteuerung als Reaktion auf den Empfang eines Löschbefehls gelöscht werden kann. Wenn die Speichersteuerung in einer solchen Ausführungsform einen Löschbefehl erhält, der einen bestimmten logischen Löschblock spezifiziert, kann die Speichersteuerung jeden physischen Löschblock innerhalb des logischen Löschblocks gleichzeitig löschen. Es sei angemerkt, dass physische Löschblöcke innerhalb eines gegebenen logischen Löschblocks als zusammenhängend innerhalb eines physischen Adressraums betrachtet werden können, obwohl sie sich in getrennten Dies befinden. Somit kann der Begriff „zusammenhängend“ nicht nur auf Daten anwendbar sein, die innerhalb desselben physischen Mediums gespeichert sind, sondern auch auf Daten, die auf getrennten Medien gespeichert sind.
  • Daher kann in einigen Ausführungsformen die Speichersteuerung 102 so eingerichtet sein, dass sie Daten deplatziert schreibt. Wie hier verwendet, bezieht sich das „deplatzierte“ Schreiben von Daten auf das Schreiben von Daten auf einen oder mehrere andere Medienspeicherorte anstatt des Überschreibens der Daten „am Ort“ (z. B. Überschreiben des ursprünglichen physischen Standorts der Daten). Das deplatzierte Ändern von Daten kann Schreibverstärkung vermeiden, da die mit den zu ändernden Daten auf dem Löschblock existierenden validen Daten nicht gelöscht und wieder kopiert werden müssen. Darüber hinaus kann das deplatzierte Schreiben von Daten das Löschen aus dem Latenzpfad vieler Speichervorgänge verhindern (z. B. ist die Löschlatenz nicht mehr Teil des kritischen Pfads eines Schreibvorgangs). „Speicherbetrieb“ nimmt Bezug auf einen Betrieb, der an einer Speicherzelle durchgeführt wird, um den Wert von Daten zu ändern oder zu erhalten, die durch eine Zustandseigenschaft der Speicherzelle dargestellt werden. Beispiele für Speichervorgänge schließen das Lesen (oder das Erkennen eines Zustands) von Daten aus einer Speicherzelle, das Schreiben (oder Programmieren) von Daten in eine Speicherzelle und/oder das Löschen von in einer Speicherzelle gespeicherten Daten ein, sind aber nicht darauf beschränkt.
  • Die Verwaltung eines Datenblocks durch einen Speichermanager schließt das spezifische Adressieren eines bestimmten Datenblocks für einen Lesebetrieb Schreibbetrieb oder Wartungsbetrieb ein. „Wartungsvorgang“ nimmt Bezug auf einen Vorgang, der auf einer nichtflüchtigen Speichervorrichtung durchgeführt wird, die eingerichtet, ausgelegt, kalibriert oder angeordnet ist, um die Lebensdauer der nichtflüchtigen Speichervorrichtung und/oder der darauf gespeicherten Daten zu verbessern oder zu verlängern.
  • Eine Blockspeichervorrichtung kann n Blöcke, die für die Benutzerdatenspeicherung auf den Speichermedien zur Verfügung stehen, einer logischen Adresse, die von 0 bis n nummeriert ist, zuordnen. In bestimmten Blockspeichervorrichtungen können die logischen Adressen zwischen 0 und n pro Volume oder Partition liegen. „Logische Adresse“ nimmt Bezug auf jeden Identifikator zur Bezugnahme auf eine Speicherressource (z. B. Daten), einschließlich, aber nicht beschränkt auf: eine logische Blockadresse (LBA), Zylinder/Kopf/Sektor-Adresse (CHS), einen Dateinamen, einen Objekt-Identifikator, einen Inode, einen UUID (Universally Unique Identifier), einen GUID (Globally Unique Identifier), einen Hash-Code, eine Signatur, einen Indexeintrag, einen Bereich, eine Ausdehnung oder Ähnliches. Eine logische Adresse zeigt nicht den physischen Ort von Daten auf dem Speichermedium an, sondern ist ein abstrakter Bezug auf die Daten.
  • Bei herkömmlichen Blockspeichervorrichtungen wird eine logische Adresse direkt einem bestimmten Datenblock auf physischen Speichermedien zugeordnet. Bei herkömmlichen Blockspeichervorrichtungen wird jeder Datenblock einem bestimmten Satz physischer Sektoren auf den physischen Speichermedien zugeordnet. Bestimmte Speichervorrichtungen weisen jedoch logische Adressen nicht direkt oder notwendigerweise bestimmten physischen Datenblöcken zu. Diese Speichervorrichtungen können eine herkömmliche Blockspeicherschnittstelle emulieren, um Kompatibilität mit einem Blockspeicherclient 110 aufrechtzuerhalten.
  • In einer Ausführungsform stellt die Speichersteuerung 102 eine Block-E/A-Emulationsschicht bereit, die als Blockvorrichtungsschnittstelle oder API dient. In dieser Ausführungsform kommuniziert der Speicherclient 110 mit der Speichervorrichtung durch diese Blockvorrichtungsschnittstelle. In einer Ausführungsform empfängt die Block-E/A-Emulationsschicht Befehle und logische Adressen vom Speicherclient 110 nach dieser Blockvorrichtungsschnittstelle. Infolgedessen stellt die Block-E/A-Emulationsschicht die Kompatibilität der Speichervorrichtung mit einem Blockspeicherclient 110 bereit.
  • In einer Ausführungsform kommuniziert ein Speicherclient 110 mit der Speichersteuerung 102 über eine Host-Schnittstelle, die eine direkte Schnittstelle umfasst. In dieser Ausführungsform tauscht die Speichervorrichtung direkt Informationen aus, die für nichtflüchtige Speichervorrichtungen spezifisch sind. „Nichtflüchtige Speichervorrichtung“ nimmt Bezug auf jede Hardware, Vorrichtung, Komponente, jedes Element oder jeden Schaltkreis, die bzw. der so eingerichtet ist, dass sie bzw. er eine veränderbare physikalische Eigenschaft beibehält, die verwendet wird, um einen binären Wert von Null oder eins darzustellen, nachdem eine primäre Stromquelle entfernt wurde. Beispiele für eine nichtflüchtige Speichervorrichtungen schließen ein Festplattenlaufwerk (HDD), ein Solid-State-Laufwerk (SSD), nichtflüchtige Speichermedien und dergleichen ein, sind aber nicht darauf beschränkt.
  • Eine Speichervorrichtung, die eine direkte Schnittstelle verwendet, kann Daten im Speicher-Die 104 unter Verwendung von verschiedenen organisatorischen Konstrukten speichern, einschließlich, aber nicht beschränkt auf Blöcke, Sektoren, Seiten, logische Blöcke, logische Seiten, Löschblöcke, logische Löschblöcke, ECC-Codewörter, logische ECC-Codewörter oder in jedem anderen Format oder jeder anderen Struktur, die für die technischen Eigenschaften des Speicher-Dies 104 vorteilhaft ist. „Eigenschaft“ nimmt Bezug auf jede Eigenschaft, jedes Merkmal, jede Qualität oder jedes Attribut eines Objekts oder einer Sache. Beispiele für Eigenschaften schließen unter anderem Zustand, Betriebsbereitschaft, Nichtbetriebsbereitschaft, Größe, Gewicht, Zusammensetzung, Satz von Merkmalen und dergleichen ein, sind aber nicht darauf beschränkt.
  • Die Speichersteuerung 102 empfängt eine logische Adresse und einen Befehl von dem Speicherclient 110 und führt den entsprechenden Betrieb in Bezug auf das Speicher-Die 104 durch. Die Speichersteuerung 102 kann eine Block-E/A-Emulation, eine direkte Schnittstelle oder beides unterstützen.
  • 2 ist ein Blockdiagramm einer beispielhaften Speichervorrichtung 200. „Speichervorrichtung“ nimmt auf jede/jedes Hardware, System, Subsystem, Schaltung, Komponente, Modul, nichtflüchtige Speichermedium, Festplatte, Speicherarray, Vorrichtung oder Einrichtung Bezug, die/das eingerichtet, programmiert, entworfen oder konstruiert ist, um Daten für eine bestimmte Zeit zu speichern und die Daten in der Speichervorrichtung zu behalten, während die Speichervorrichtung keine Energie von einer Stromversorgung verbraucht. Beispiele für Speichervorrichtungen schließen ein Festplattenlaufwerk, FLASH-Speicher, einen MRAM-Speicher, eine Festkörperspeichervorrichtung, nur ein Haufen von Platten (Just a Bunch Of Disks, JBOD), „ein paar Platten“ (Just a Bunch Of Flash, JBOF), eine externe Festplatte, eine interne Festplatte und Ähnliches ein, ohne darauf beschränkt zu sein.
  • Die Speichervorrichtung 200 kann eine Speichersteuerung 102 und ein Speicherarray 202 einschließen. Jeder Speicherchip 104 im Speicherarray 202 kann eine Chip-Steuerung 204, mindestens ein nichtflüchtiges Speicherarray 206 in Form eines dreidimensionalen Arrays sowie Lese-/Schreibschaltungen 208 einschließen.
  • Ein „dreidimensionales Speicherarray“ nimmt Bezug auf eine physische Anordnung von Komponenten eines Speicherarrays, die im Gegensatz zu einem zweidimensionalen (2D) Speicherarray steht. 2D-Speicherarrays sind entlang einer ebenen Oberfläche eines Halbleiterwafers oder eines anderen Substrats ausgebildet. Ein dreidimensionales (3D) Speicherarray erstreckt sich von der Waferoberfläche/dem Wafersubstrat nach oben und schließt im Allgemeinen Stapel oder Spalten von Speicherzellen ein, die sich in z-Richtung nach oben erstrecken. In einem 3D-Speicherarray weisen Wortleitungen Schichten auf, die übereinander gestapelt sind, wobei sich das Speicherarray nach oben erstreckt. Verschiedene 3D-Anordnungen sind möglich. In einer Anordnung ist eine NAND-Kette vertikal mit einem Ende (z. B. Source) an der Waferoberfläche und dem anderen Ende (z. B. Drain) an der Oberseite ausgebildet.
  • „Schwellenspannung‟ nimmt auf einen Spannungspegel Bezug, der, wenn er an einen Gate-Anschluss eines Transistors angelegt wird, bewirkt, dass der Transistor einen Strom zwischen der Drain-Elektrode und der Source-Elektrode leitet.
  • Folglich ist ein nichtflüchtiges Speicherarray ein Speicherarray mit Speicherzellen, die so eingerichtet sind, dass eine Eigenschaft (z. B. Schwellenspannungspegel, Widerstandspegel, Leitfähigkeit usw.) der Speicherzelle, die zur Darstellung gespeicherter Daten verwendet wird, eine Eigenschaft der Speicherzelle bleibt, ohne dass eine Stromquelle zur Aufrechterhaltung der Eigenschaft erforderlich ist.
  • Ein Speicherarray ist unter Verwendung einer Zeilenkennung und einer Spaltenkennung adressierbar. Ein Fachmann erkennt, dass ein Speicherarray den Satz von Speicherzellen innerhalb einer Ebene, den Satz von Speicherzellen innerhalb eines Speicher-Dies, den Satz von Speicherzellen innerhalb eines Satzes von Ebenen, den Satz von Speicherzellen innerhalb eines Satzes von Speicher-Dies, den Satz von Speicherzellen innerhalb eines Speicherpakets, den Satz von Speicherzellen innerhalb eines Satzes von Speicherpaketen oder mit anderen bekannten Speicherzellensatz-Architekturen und -Konfigurationen aufweisen kann.
  • Ein Speicherarray kann einen Satz von Speicherzellen auf einer Reihe von Organisationsebenen innerhalb eines Speichers oder Speichersystems einschließen. In einer Ausführungsform können Speicherzellen innerhalb einer Ebene zu einem Speicherarray organisiert sein. In einer Ausführungsform können Speicherzellen innerhalb einer Vielzahl von Ebenen eines Speicher-Dies zu einem Speicherarray organisiert werden. In einer Ausführungsform können Speicherzellen innerhalb einer Vielzahl von Speicher-Dies einer Speichervorrichtung zu einem Speicherarray organisiert sein. In einer Ausführungsform können Speicherzellen innerhalb einer Vielzahl von Speichervorrichtungen eines Speichersystems zu einem Speicherarray organisiert sein.
  • Das nichtflüchtige Speicherarray 206 ist durch Wortleitungen über einen Zeilendekodierer 210 und durch Bitleitungen über einen Spaltendekodierer 212 adressierbar. „Wortleitung“ nimmt Bezug auf eine Struktur innerhalb eines Speicherarrays, das einen Satz von Speicherzellen umfasst. Das Speicherarray ist so eingerichtet, dass die aktiven Speicherzellen der Wortleitung während eines Lesevorgangs gelesen oder abgetastet werden. Analog ist das Speicherarray so eingerichtet, dass die aktiven Speicherzellen der Wortleitung während eines Lesevorgangs gelesen oder abgetastet werden. Eine Wortleitung kann auch kurz als physische Seite oder Seite bezeichnet werden. „Bitleitung“ nimmt Bezug auf eine Schaltungsstruktur, die eingerichtet ist, um an eine Spalte eines Speicherarrays eine Spannung zu liefern und/oder einen Strom zu leiten. In einer Ausführungsform weist die Spalte eine NAND-Kette oder Speicherkette auf und kann auch als Kanal bezeichnet werden. In einer Ausführungsform wird die Spalte als NAND-Kette bezeichnet und die NAND-Kette weist einen Kanal auf. In einer Ausführungsform ist eine Bitleitung mit einer NAND-Kette an einem Drainende oder einer Drainseite der NAND-Kette verbunden. Ein Speicherarray kann eine Bitleitung für jede Speicherzelle entlang der Wortleitungen des Speicherarrays aufweisen.
  • „Kanal‟ nimmt Bezug auf eine Struktur innerhalb eines Speicherarrays, die sich von einer Sourceseite zu einer Drainseite erstreckt. In einer Ausführungsform ist ein Kanal eine vertikale Spalte innerhalb eines Speicherarrays, die einen leitenden Pfad zwischen einer Sourceleitung, die mit einem Ende einer NAND-Kette gekoppelt ist, und einer Bitleitung, die mit dem anderen Ende der NAND-Kette gekoppelt ist, bildet. Ein Kanal kann aus einer Vielzahl von Materialien gebildet werden, einschließlich z. B. Polysilizium.
  • In einer Ausführungsform erzeugt ein Kanal innerhalb einer NAND-Kette einen leitenden Pfad durch Aktivierung einer oder mehrerer Speicherzellen (z. B. einer oder mehrerer ausgewählter Speicherzellen und nicht ausgewählter Speicherzellen) entlang der NAND-Kette und einer oder mehrerer Steuerstrukturen (z. B. Auswahlgates (Source und/oder Drain) zwischen einer Sourceleitung, die mit einem Ende (z. B. der Sourceseite) der NAND-Kette verbunden ist, und einem Abtastverstärker oder einer Bitleitung, die mit dem anderen Ende (z. B. der Drainseite) der NAND-Kette verbunden ist.
  • „Auswahlgate“ nimmt Bezug auf einen Transistor, der strukturell und/oder elektrisch so eingerichtet ist, dass er als Schalter fungiert, um eine erste elektrische Struktur, die mit einem Sourceanschluss des Transistors verbunden ist, mit einer zweiten elektrischen Struktur, die mit dem Drainanschluss verbunden ist, elektrisch zu verbinden. Bei der Funktion als Schalter wird der Transistor hierin als ,Auswahlgate' bezeichnet und dient dazu, (selektiv) zu „gaten“ oder zu steuern, wann und in welcher Menge ein Strom fließt oder eine Spannung zwischen der ersten elektrischen Struktur und der zweiten elektrischen Struktur hindurchgeht. Je nach Kontext können Verweise auf das Auswahlgate hierin auf den gesamten Transistor oder auf den Gateanschluss des Transistors Bezug nehmen.
  • Die Lese-/Schreibschaltungen 208 schließen mehrere Abtastblöcke SB1, SB2, ..., SBp (Abtastschaltkreise) ein und ermöglichen, dass eine Seite von Speicherzellen parallel gelesen oder programmiert wird. In bestimmten Ausführungsformen bildet jede Speicherzelle über eine Zeile des Speicherarrays zusammen eine physische Seite. „Lese-/Schreibschaltung“ nimmt Bezug auf eine Vorrichtung, eine Komponente, ein Element, Modul, System, Subsystem, eine Schaltung, Logik, Hardware oder einen Schaltkreis, der zum Lesen von Daten von einem Speichermedium und zum Schreiben von Daten auf ein Speichermedium, wie z. B. Speicherzellen eines Speicherarrays, eingerichtet und/oder betreibbar ist.
  • Eine physische Seite kann Speicherzellen entlang einer Zeile des Speicherarrays für eine einzelne Ebene oder für ein einzelnes Speicher-Die einschließen. In einer Ausführungsform schließt das Speicher-Die ein Speicherarray ein, das aus zwei gleich großen Ebenen besteht. In einer Ausführungsform schließt eine physische Seite einer Ebene eines Speicher-Dies vier Datenblöcke (z. B. 16 KB) ein. In einer Ausführungsform schließt eine physische Seite (auch „Die-Seite“ genannt) eines Speicher-Dies zwei Ebenen mit jeweils vier Datenblöcken (z. B. 32 KB) ein.
  • Befehle und Daten werden zwischen dem Host 106 und der Speichersteuerung 102 über einen Datenbus 112 und zwischen der Speichersteuerung 102 und dem einen oder den mehreren Speicherchips 104 über den Bus 114 übertragen. Die Speichersteuerung 102 kann die unter Bezug auf 1 näher beschriebenen logischen Module aufweisen.
  • Das nichtflüchtige Speicherarray 206 kann zweidimensional (2D - in einer einzigen Fertigungsebene angeordnet) oder dreidimensional (3D - in mehreren Fertigungsebenen angeordnet) sein. Das nichtflüchtige Speicherarray 206 kann ein oder mehrere Arrays von Speicherzellen einschließlich eines 3D-Arrays umfassen. In einer Ausführungsform kann das nichtflüchtige Speicherarray 206 eine monolithische dreidimensionale Speicherstruktur (3D-Array) umfassen, in der mehrere Speicherpegel oberhalb von (und nicht in) einem einzelnen Substrat, wie einem Wafer, ohne dazwischenliegende Substrate ausgebildet sind. Das nichtflüchtige Speicherarray 206 kann jede Art von nichtflüchtigem Speicher umfassen, der monolithisch in einem oder mehreren physischen Pegeln von Arrays der Speicherzellen ausgebildet ist, die einen aktiven Bereich aufweisen, der über einem Siliziumsubstrat angebracht ist. Das nichtflüchtige Speicherarray 206 kann sich in einem nichtflüchtigen Festkörperlaufwerk befinden, das einen Schaltkreis aufweist, der dem Betrieb der Speicherzellen zugeordnet ist, unabhängig davon, ob sich der zugeordnete Schaltkreis oberhalb oder innerhalb des Substrats befindet.
  • Wortleitungen können Abschnitte der Schichten mit Speicherzellen aufweisen, die in Schichten über dem Substrat angeordnet sind. Mehrere Wortlinien können auf einer einzigen Schicht mittels Gräben oder andere nicht leitende isolierende Merkmale gebildet werden.
  • Die Chip-Steuerung 204 arbeitet mit den Lese-/Schreibschaltungen 208 zusammen, um Speichervorgänge auf Speicherzellen des nichtflüchtigen Speicherarrays 206 auszuführen, und schließt eine Zustandsmaschine 214, einen Adressdecoder 216 und eine Leistungssteuerung 218 ein. Die Zustandsmaschine 214 stellt eine Steuerung von Speichervorgängen auf Speicherebene bereit. „Die-Steuerung“ nimmt Bezug auf einen Satz von Schaltungen, Schaltkreisen, Logik oder Komponenten, die eingerichtet sind, um den Betrieb eines Dies zu verwalten. In einer Ausführungsform ist die Chip-Steuerung eine integrierte Schaltung. In einer anderen Ausführungsform ist die Chip-Steuerung eine Kombination diskreter Komponenten. In einer anderen Ausführungsform ist die Chip-Steuerung eine Kombination aus einer oder mehreren integrierten Schaltungen und einer oder mehreren diskreten Komponenten.
  • Der Adressdecoder 216 stellt eine Adressschnittstelle zwischen der vom Host oder einer Speichersteuerung 102 verwendeten Adresse und der vom Zeilendecoder 210 und Spaltendecoder 212 verwendeten Hardwareadresse bereit. Die Leistungssteuerung 218 steuert die Leistung und Spannungen, die den verschiedenen Steuerleitungen während der Speichervorgänge zugeführt werden. „Steuerleitung“ nimmt Bezug auf eine Struktur, Schaltung, einen Schaltkreis und/oder eine zugehörige Logik, die so eingerichtet ist, dass ein elektrischer Strom und/oder eine elektrische Spannung von einer Quelle zu einem Ziel übertragen wird. In bestimmten Ausführungsformen werden analoge Spannungen, Ströme, Vorspannungen und/oder digitale Signale, die über eine Steuerleitung zugeführt oder entladen werden, zur Steuerung von Schaltern, Auswahlgates und/oder anderen elektrischen Komponenten verwendet. Bestimmte Steuerleitungen können einen spezifischen Namen aufweisen, basierend darauf, welche Teile einer Schaltung die Steuerleitung steuert oder wo die Steuerleitung mit anderen Schaltungen koppelt oder diese verbindet. Beispiele von benannten Steuerleitungen schließen Wortleitungen, Bitleitungen, Source-Steuerleitungen, Drain-Steuerleitungen und dergleichen ein.
  • „Source-Steuerleitung“ nimmt Bezug auf eine Steuerleitung, die für den Betrieb eines Auswahlgates (z. B. Einschalten des Auswahlgates, Aktivieren und Ausschalten, Deaktivieren) zum Koppeln einer Sourceseite einer NAND-Kette mit einer Sourceleitung und/oder einer anderen Schaltung eingerichtet ist.
  • „Sourceseite‟ nimmt Bezug auf das Ende einer NAND-Kette oder die Seite eines dreidimensionalen Speicherarrays, das/die mit der Sourceschicht oder -leitung auf einem Speicher-Die verbunden ist. Der Begriff stammt von dem Sourceanschluss eines Feldeffekttransistors oder einer ähnlichen Komponente. In einer Kette von Transistoren kann der Sourceanschluss des ersten Transistors mit einer Sourceleitung, einer Masse oder einer anderen Leitung mit niedrigerer Spannung verbunden sein, und der Drainanschluss kann mit dem Sourceanschluss des nächsten Transistors verbunden sein, der Drainanschluss dieses Transistors kann mit dem nächsten Sourceanschluss verbunden sein usw., wobei schließlich der Drainanschluss des letzten Transistors mit einer Signal- oder Stromleitung mit höherer Spannung verbunden ist. Der Gateanschluss jedes Transistors kann dann steuern, ob Strom durch den Transistor von Source zu Drain und durch die Kette von Sourceleitung zu Bitleitung fließt oder nicht.
  • „Sourceleitung‟ nimmt Bezug auf eine Struktur, Schaltung, einen Schaltkreis und/oder eine zugehörige Logik, die so eingerichtet ist, dass ein elektrischer Strom und/oder eine elektrische Spannung von einer Versorgung zu einem oder mehreren Kanälen von zugehörigen NAND-Ketten übertragen wird. In bestimmten Ausführungsformen ist eine Sourceleitung so eingerichtet, dass sie eine Spannung an mehrere NAND-Ketten gleichzeitig überträgt und/oder eine Spannung von mehreren NAND-Ketten gleichzeitig entlädt. In anderen Ausführungsformen ist eine Sourceleitung so eingerichtet, dass sie eine Spannung an mehrere NAND-Ketten in Reihe überträgt und/oder eine Spannung von mehreren NAND-Ketten in Reihe entlädt.
  • In bestimmten Ausführungsformen ist eine Source-Steuerleitung an ein oder mehrere sourceseitige Auswahlgates gekoppelt, die zwischen der Sourceleitung und einer oder mehreren NAND-Ketten liegen, und die Source-Steuerleitung steuert, ob Spannung oder Strom zwischen der Sourceleitung und der NAND-Kette fließt. In einer solchen Ausführungsform kann die Sourceleitung auch als gemeinsame Sourceleitung bezeichnet werden.
  • „Sourceseitiges Auswahlgate‟ nimmt Bezug auf ein Auswahlgate, das als Schalter fungiert, um eine Sourceleitung elektrisch mit einer NAND-Kette und/oder einem Kanal einer NAND-Kette zu verbinden. Beispiele von Sourceleitungen schließen sourceseitige Auswahlgates, Dummy-Wortleitung-Auswahlgates und dergleichen ein. In bestimmten Ausführungsformen kann ein sourceseitiges Auswahlgate nur sourceseitige Auswahlgates aufweisen (z. B. SGS0, SGS1 usw.). In anderen Ausführungsformen kann ein sourceseitiges Auswahlgate nur Dummy-Wortleitung-Auswahlgates aufweisen (z. B. DWLS0, DWLS1 usw.). In noch anderen Ausführungsformen kann ein sourceseitiges Auswahlgate sowohl sourceseitige Auswahlgates (z. B. SGS0, SGS1 usw.) als auch Dummy-Wortleitung-Auswahlgates (z. B. DWLS0, DWLS1 usw.) aufweisen. Ein Auswahlgate, das zwischen der Sourceleitung und der NAND-Kette auf der Sourceseite der NAND-Kette positioniert ist, wird als ein sourceseitiges Auswahlgate bezeichnet.
  • „Drain-Steuerleitung‟ nimmt Bezug auf eine Steuerleitung, die für den Betrieb eines Auswahlgates (z. B. Einschalten des Auswahlgates, Aktivieren und Ausschalten, Deaktivieren) zum Koppeln einer Drainseite einer NAND-Kette mit einer Bitleitung und/oder einer Abtastschaltung eingerichtet ist. „Drainseite“ nimmt Bezug auf das Ende einer NAND-Kette oder die Seite eines dreidimensionalen Speicherarrays, das mit der/den Bitleitung(en) verbunden ist. Der Begriff stammt von dem Drainanschluss eines Feldeffekttransistors oder einer ähnlichen Komponente. In einer Kette von Transistoren kann der Sourceanschluss des ersten Transistors mit einer Sourceleitung, einer Masse oder einer anderen Leitung mit niedrigerer Spannung verbunden sein, und der Drainanschluss kann mit dem Sourceanschluss des nächsten Transistors verbunden sein, der Drainanschluss dieses Transistors kann mit dem nächsten Sourceanschluss verbunden sein usw., wobei schließlich der Drainanschluss des letzten Transistors mit einer Signal- oder Stromleitung mit höherer Spannung verbunden ist. Der Gateanschluss jedes Transistors kann dann steuern, ob Strom durch den Transistor von Source zu Drain und durch die Kette von Sourceleitung zu Bitleitung fließt oder nicht.
  • „Drainseitiges Auswahlgate“ nimmt Bezug auf ein Auswahlgate, das als Schalter fungiert, um eine Bitleitung elektrisch mit einer NAND-Kette und/oder einem Kanal einer NAND-Kette zu verbinden. Ein Auswahlgate, das zwischen der Bitleitung und der NAND-Kette auf der Drainseite der NAND-Kette positioniert ist, wird als ein drainseitiges Auswahlgate bezeichnet.
  • „Logik“ nimmt Bezug auf Maschinenspeicherschaltkreise, nicht vorübergehende maschinenlesbare Medien und/oder Schaltkreise, die über ihr Material und/oder über ihre Material-Energie-Konfiguration Steuer- und/oder Verfahrenssignale und/oder Einstellungen und Werte (wie Widerstand, Impedanz, Kapazität, Induktivität, Strom-/Spannungswerte usw.) aufweisen, die angewendet werden können, um den Betrieb einer Vorrichtung zu beeinflussen. Magnetische Medien, elektronische Schaltungen, elektrischer und optischer Speicher (sowohl flüchtig als auch nichtflüchtig) und Firmware sind Beispiele für Logik. Logik schließt insbesondere reine Signale oder Software per se aus (jedoch nicht Maschinenspeicher, die Software aufweisen und dadurch wichtige Konfigurationen ausbilden).
  • Die Leistungssteuerung 218 und/oder Lese-/Schreibschaltungen 208 können Treiber für Wortleitungen, Source-Gate-Auswahl-Transistoren (SGS-Transistoren), Drain-Gate-Auswahl-Transistoren (DGS-Transistoren), Bitleitungen, Substrate (in 2D-Speicherstrukturen), Ladepumpen und Quellleitungen einschließen. In bestimmten Ausführungsformen kann die Leistungssteuerung 218 einen plötzlichen Leistungsverlust erkennen und vorbeugende Maßnahmen ergreifen. Die Leistungssteuerung 218 kann verschiedene Erstspannungsgeneratoren (z. B. die Treiber) einschließen, um die hierin beschriebenen Spannungen zu erzeugen. Die Erfassungsblöcke können Bitleitungstreiber und Erfassungsverstärker in einem Ansatz einschließen.
  • In einigen Implementierungen können einige der Komponenten kombiniert werden. Bei verschiedenen Ausführungen können eine oder mehrere der Komponenten (allein oder in Kombination), die sich von dem nichtflüchtigen Speicherarray 206 unterscheiden, als mindestens eine Steuerschaltung oder Speichersteuerung betrachtet werden, die zur Ausführung der hierin beschriebenen Techniken eingerichtet ist. Zum Beispiel kann eine Steuerschaltung eine beliebige der Komponenten oder eine Kombination aus Chip-Steuerung 204, Zustandsmaschine 214, Adressdecoder 216, Spaltendecoder 212, Leistungssteuerung 218, Abtastblöcken SB1, SB2, ..., SBp, Lese-/Schreibschaltungen 208, Speichersteuerung 102 usw. einschließen.
  • In einer Ausführungsform ist der Host 106 eine Rechenvorrichtung (z. B. ein Laptop, Desktop, Smartphone, Tablet, eine Digitalkamera), die einen oder mehrere Prozessoren, eine oder mehrere prozessorlesbare Speichervorrichtungen (RAM, ROM, FLASH-Speicher, Festplattenlaufwerk, Festkörperspeicher) einschließt, die einen prozessorlesbaren Code (z. B. eine Software) zum Programmieren der Speichersteuerung 102 speichert, um die hierin beschriebenen Verfahren durchzuführen. Der Host kann auch zusätzlichen Systemspeicher, eine oder mehrere Ein-/Ausgabeschnittstellen und/oder eine oder mehrere Ein-/Ausgabevorrichtungen in Kommunikation mit dem einem oder den mehreren Prozessoren sowie andere in der Technik bekannte Komponenten einschließen.
  • Eine zugehörige Schaltung ist üblicherweise für den Betrieb der Speicherzellen und für die Kommunikation mit den Speicherzellen erforderlich. Als nicht einschränkende Beispiele können Speichervorrichtungen Schaltungen aufweisen, die zum Steuern und Ansteuern von Speicherzellen verwendet werden, um Funktionen, wie Programmieren und Lesen, auszuführen. Diese zugehörige Schaltung kann sich auf demselben Substrat wie die Speicherzellen und/oder auf einem separaten Substrat befinden. Zum Beispiel kann eine Speichersteuerung für Schreib-/Lesevorgänge des Speichers auf einem separaten Speichersteuerungschip und/oder auf demselben Substrat wie die Speicherzellen angeordnet sein.
  • Ein Fachmann wird erkennen, dass die offenbarten Techniken und Vorrichtungen nicht auf die beschriebenen zweidimensionalen und dreidimensionalen beispielhaften Strukturen beschränkt sind, sondern alle relevanten Speicherstrukturen in dem Geist und innerhalb des Schutzumfangs der Technologie abdecken, wie hierin beschrieben und wie es von einem Fachmann verstanden wird.
  • 3 veranschaulicht ein Speicherarray 300 gemäß einer Ausführungsform. In der veranschaulichten Ausführungsform ist das Speicherarray 300 in logische Löschblöcke (LEBs) organisiert, wie durch den logischen Löschblock 302 (hierin auch als „Metablock“ oder „Superblock“ bezeichnet) gezeigt. Diese LEBs schließen mehrere physische Löschblöcke (PEBs) ein, veranschaulicht durch den physischen Löschblock 0 304, den physischen Löschblock n 306, den physischen Löschblock 0 308, den physischen Löschblock n 310, den physischen Löschblock 0 312 und den physischen Löschblock n 314. „Physischer Löschblock“ nimmt auf die kleinste Speichereinheit innerhalb eines bestimmten Speicherchips Bezug, die zu einem bestimmten Zeitpunkt gelöscht werden kann (z. B. aufgrund der Verdrahtung der Speicherzellen auf dem Speicherchip).
  • Die physischen Löschblöcke können sich in separaten Speicherchips befinden, gezeigt als Chip 0 316, Chip 1 318 und Chip n 320. In bestimmten Ausführungsformen kann ein Chip in Ebenen unterteilt werden. „Ebene“ nimmt auf eine Unterteilung eines Chips Bezug, die es erlaubt, bestimmte Speichervorgänge auf beiden Ebenen unter Verwendung bestimmter physischer Zeilenadressen und bestimmter physischer Spaltenadressen durchzuführen.
  • Der Fachmann kennt die Beziehung und die Unterschiede zwischen physischen Löschblöcken und logischen Löschblöcken und kann auf den einen oder den anderen oder auf beide Bezug nehmen, indem er die Kurzversion Löschblock, Block oder Speicherblock verwendet. Der Fachmann versteht aus dem Kontext der Referenz zu einem Löschblock, ob es sich um einen physischen oder logischen Löschblock (oder Metablock oder Superblock) handelt. Die Konzepte und Techniken, die in der Technik verwendet und in den Ansprüchen angegeben werden, können gleichermaßen auf physische Löschblöcke oder logische Löschblöcke angewandt werden.
  • „Speicherblock“ bezieht sich auf einen Satz von Speicherzellen, die so organisiert sind, dass die Speicherbetriebe auf Gruppen von Speicherzellen parallel durchgeführt werden können. Die Organisation des Satzes von Speicherzellen kann auf physikalische oder logischer Ebene umgesetzt werden. Somit kann ein Speicherblock in einer Ausführungsform eine physikalische Seite, wie eine Wortlinie umfassen, eine logische Seite, die physikalische Seiten umfasst, die Ebenen und/oder Speicher-Die überspannen, einen physikalischen Löschblock, der einen Satz physikalischer Seiten umfasst, einen logischen Löschblock (LEB), der einen Satz logischer Seiten umfasst, oder dergleichen. Ein Speicherblock kann hierin als ein „Block“, ein „Speicherblock“ oder ein LEB bezeichnet werden.
  • Wie hierin verwendet, bezieht sich eine „physische“ Struktur wie eine physische Seite, eine physische Wortleitung, ein physischer Löschblock, eine physische Ebene, ein physisches Speicher-Die oder dergleichen auf eine einzelne physische Struktur, die eine Steuerung, Verwaltung, ein Modul oder eine andere logische Komponente eines Systems auf einer oder mehreren physischen Abstraktionsebenen in der Organisation der Vorrichtung, des Systems oder der Einrichtung steuern und/oder mit dieser kommunizieren kann. In ähnlicher Weise bezieht sich eine „logische“ Struktur wie eine logische Seite, logische Wortleitung, ein logischer Löschblock, eine logische Ebene, ein logisches Speicher-Die oder dergleichen auf eine Sammlung von zwei oder mehr einzelnen physischen Strukturen desselben Typs, die eine Steuerung, Verwaltung, ein Modul oder eine andere logische Komponente des Systems auf einer Ebene innerhalb einer oder mehrerer physischer Abstraktionsebenen in der Organisation der Vorrichtung, des Systems oder der Einrichtung steuern und/oder mit diesen kommunizieren kann. Es ist zu beachten, dass sowohl eine „physische“ Struktur als auch eine „logische“ Struktur einzeln oder gemeinsam unterschiedliche Adressen aufweisen können, die dazu verwendet werden können, eine „physische“ Struktur oder „logische“ Struktur im Verhältnis zu anderen Strukturen ähnlicher Art und ähnlichen Typs zu identifizieren.
  • „Logischer Löschblock‟ nimmt auf einen anderen Begriff für einen Speicherblock Bezug. In bestimmten Ausführungsformen nimmt ein logischer Löschblock Bezug auf einen Satz logischer Seiten, die Ebenen, Speicher-Dies und/oder Chips überspannen. Diese Organisation der Speicherzellen gilt als ,logisch', da die physischen Seiten möglicherweise nicht direkt miteinander gekoppelt sind. Die physischen Seiten werden jedoch parallel betrieben, als ob es sich um eine einzelne Seite handelt. In gleicher Weise können mehrere physische Löschblöcke parallel betrieben werden, als wären sie ein einziger Löschblock und werden daher als logische Löschblöcke bezeichnet. Die Begriffe logischer Löschblock, Metablock und Superblock werden hierin austauschbar verwendet.
  • „Logische Seite“ nimmt auf eine Sammlung von physischen Seiten Bezug, die für Speichervorgänge als eine einzige Seite behandelt werden. „Physische Seite“ nimmt auf eine physische Seite Bezug, die den kleinsten Speicherblock innerhalb eines gegebenen Chips darstellt, der zu einem gegebenen Zeitpunkt beschrieben werden kann.
  • Ein logischer Löschblock, wie der logische Löschblock 302, ist ferner in mehrere logische Seiten (logische Seite 322) unterteilt, die wiederum mehrere physische Seiten einschließen, wie die physische Seite 0 324, die physische Seite n 326, die physische Seite 0 328, die physische Seite n 330, die physische Seite 0 332 und die physische Seite n 334. Physische Seiten können mehrere Pakete einschließen, die in Fehlerkorrekturcode-Blöcken (ECC-Blöcken) gruppiert werden können.
  • In einer Ausführungsform stellt eine physische Seite den kleinsten Speicherblock innerhalb eines gegebenen Dies dar, der zu einem gegebenen Zeitpunkt beschrieben werden kann. In einer Ausführungsform ist eine logische Seite der kleinste beschreibbare Speicherblock, der von der Speicherungssteuerung unterstützt wird. (In einer Ausführungsform kann die Speicherungssteuerung einen Puffer einschließen, der so konfiguriert ist, dass er bis zu einer logischen Seite Daten speichern kann; nach dem Füllen des Puffers kann die Speicherungssteuerung den Inhalt des Puffers gleichzeitig auf eine einzige logische Seite schreiben.) In einigen Fällen kann die Aufteilung einer logischen Seite auf mehrere Dies zu schnelleren Zugriffszeiten für einen Datensatz führen, wenn auf mehrere Dies parallel zugegriffen wird. Wie bei den logischen Löschblöcken, können die Konfigurationen der logischen Seiten auf beliebige physische Seiten auf einem Die oder über eine Vielzahl von Speicher-Dies hinweg abgebildet werden.
  • In einigen Ausführungsformen kann eine Speichersteuerung 102 Metadaten, auch als Medienmerkmale bezeichnet, einem oder mehreren der Speicherblöcke (logische Löschblöcke, physische Löschblöcke, logische Seiten und/oder physische Seiten) zuordnen. Die Speichersteuerung 102 kann Metadaten, die logische Adressen identifizieren, für die ein logischer Löschblock Daten speichert, sowie die jeweilige Anzahl der gespeicherten Datenpakete für jeden logischen Löschblock, Datenblock oder Sektor innerhalb eines logischen Adressraums speichern. Eine Speichersteuerung 102 kann Metadaten oder Medienmerkmaldaten an einer Vielzahl von Orten speichern, einschließlich auf nichtflüchtigen Speichermedien, in einem flüchtigen Speicher, in einer mit jedem logischen Löschblock gespeicherten Struktur oder dergleichen.
  • „Medienmerkmal“ nimmt Bezug auf ein Attribut oder eine Statistik für einen Satz bestimmter Speicherzellen, z. B. eine Anzahl von Programmier-/Löschzyklen für den Satz von Speicherzellen, eine Lese-Anzahl für den Satz von Speicherzellen, eine Erhaltungszeit seit einem vorhergehenden Schreibvorgang für den Satz von Speicherzellen (auch als Datenerhaltungszeit bezeichnet), eine Verweilzeit für den Satz von Speicherzellen, z. B. einen logischen oder physischen Löschblock (z. B, eine Zeit zwischen einer Programmierung eines Löschblocks und einer Löschung des Löschblocks), ein Durchschnitt mehrerer vorheriger Verweilzeiten für den Satz von Speicherzellen, eine Fehlerstatistik für den Satz von Speicherzellen oder dergleichen.
  • Eine Medieneigenschaft für einen Satz von Speicherzellen kann im Wesentlichen statisch oder dynamisch sein und sich im Laufe der Zeit ändern. In einer Ausführungsform ist eine Medieneigenschaft eine Statistik, Heuristik, ein mathematisches Modell, eine Transformation oder ein anderer Deskriptor, der mit einem Attribut des nichtflüchtigen Speichermediums verbunden ist.
  • In einer Ausführungsform schließt eine Medieneigenschaft eine Marke, ein Modell, einen Hersteller, eine Produktversion oder dergleichen für die Speichervorrichtung und/oder für das nichtflüchtige Speichermedium ein oder bezieht sich darauf. Eine Medieneigenschaft kann in einer weiteren Ausführungsform eine Umgebungsbedingung oder eine Verwendung der Speichervorrichtung und/oder des nichtflüchtigen Speichermediums einschließen oder sich darauf beziehen, wie z. B. eine Temperatur, einen Anwendungsfall (z. B. einen Cache-Nutzungsfall, einen Archivierungsfall, einen Server-Anwendungsfall, einen Unternehmens-Anwendungsfall, einen Verbraucher-Anwendungsfall usw.) oder dergleichen.
  • 4 zeigt einen Graph einer Zellenschwellenspannungsverteilung für Speicherzellen eines nichtflüchtigen Speichermediums und Zellenschwellenspannungsverteilungskurven 400, wie mehrstufige NAND-Flash-Speicherzellen oder dergleichen. Die Speicherzustände können in der dargestellten Ausführungsform unter Verwendung eines Gray-Code-Codiermodells codiert werden, wobei sich Binärwerte für benachbarte Speicherzustände bei der Codierung um ein einzelnes Bit unterscheiden.
  • „Speicherzustand“ nimmt auf einen Zustand, ein Attribut und/oder eine Eigenschaft einer Speicherzelle Bezug, die so ausgelegt und/oder eingerichtet sind, dass sie eine Codierung für einen oder mehrere Datenbitwerte darstellen. In bestimmten Ausführungsformen kann der Speicherzustand durch einen Speichervorgang geändert werden. In einer nichtflüchtigen Speicherzelle behält die Speicherzelle ihren Speicherzustand ohne Stromquelle bei.
  • In bestimmten Ausführungsformen und in bestimmten Kontexten kann der Speicherzustand auch auf eine Sammlung oder einen Satz von Speicherzellen Bezug nehmen, die gemeinsam einen ähnlichen Zustand, ein ähnliches Attribut und/oder eine ähnliche Eigenschaft aufweisen. In Bezug auf nichtflüchtige Speicherzellen können Gruppen, Sammlungen oder Sätze von Speicherzellen mit einer ähnlichen Bedingung innerhalb eines bestimmten Bereichs kollektiv als Speicherzellen eines bestimmten Speicherzustands bezeichnet werden. Ferner kann als Kurzschlussreferenz an alle Speicherzellen auf einen Speicherzustand Bezug genommen werden, der eine Bedingung aufweist, die innerhalb eines für diesen Speicherzustand vordefinierten vorgegebenen Bereich fällt.
  • Zum Beispiel kann bei NAND-Speicherzellen ein Schwellenspannungsfenster (Vt-Fenster) zwischen einer negativen Schwellenspannung oder einer Schwellenspannung von etwa Null und einer maximalen Schwellenspannung definiert werden. Innerhalb dieses Vt-Fensters können mehrere Teilbereiche definiert und als Speicherzustände bezeichnet werden. In bestimmten Ausführungsformen kann das gesamte Vt-Fenster so aufgeteilt werden, dass jede Schwellenspannung innerhalb einen der Speicherzustände fällt. In einer Ausführungsform weist jeder Speicherzustand eine untere Grenze und eine obere Grenze auf und kann durch eine Zellenschwellenspannungsverteilung dargestellt werden.
  • In 4 kann das Vt-Fenster am unteren Ende des gelöschten Speicherzustands 402 („Er“) beginnen und sich zum oberen Ende/zur oberen Grenze des „O“ -Speicherzustands erstrecken. Der Graph schließt gelöschte Speicherzustände 402 und die Speicherzustände „A“- „O“ für insgesamt 16 Speicherzustände ein, um 4 Bits darzustellen, die in jeder Speicherzelle gespeichert sind. Bestimmte Speicherzustände sind benachbarte Speicherzustände. „Benachbarter Speicherzustand“ nimmt auf einen Speicherzustand Bezug, der einem gegebenen Speicherzustand entlang eines Bereichs von Schwellenspannungen benachbart ist, wobei keine Speicherzustände zwischen dem gegebenen Speicherzustand und dem benachbarten Speicherzustand definiert sind. „Er“-Speicherzustand (gelöschter Speicherzustand 402) und „A“-Speicherzustand sind benachbarte Speicherzustände. In ähnlicher Weise sind „A“-Speicherzustand und „B“-Speicherzustand benachbarte Speicherzustände. „A“-Speicherzustand und „C“-Speicherzustand sind keine benachbarten Speicherzustände, da der „B“-Speicherzustand dazwischen liegt.
  • Der Graph veranschaulicht eine Schwellenspannung für Speicherzellen eines nichtflüchtigen Speichermediums entlang der x-Achse. Die y-Achse identifiziert eine Anzahl oder Zählung von abgetasteten/erfassten/gelesenen Speicherzellen, die entsprechende Schwellenspannung entlang der x-Achse aufweisen. Die Kurven innerhalb jedes Speicherzustands stellen eine normale Verteilung von Speicherzellen dar, die innerhalb eines gegebenen Speicherzustands fallen. Zusammengenommen veranschaulichen die Kurven des Graphs eine Zellenschwellenspannungsverteilung. In bestimmten Ausführungsformen kann eine Kurve, die Speicherzellen innerhalb eines bestimmten Speicherzustands darstellt, auch als eine Zellenschwellenspannungsverteilung bezeichnet werden. Somit kann eine Zellenschwellenspannungsverteilung für nichtflüchtige Speichermedien eine Anzahl von Zellenschwellenspannungsverteilungen einschließen.
  • „Zellenschwellenspannungsverteilung“ nimmt auf einen Prozess oder ein Verfahren zum Bestimmen einer Schwellenspannung für jede Speicherzelle in einem Satz von Speicherzellen Bezug. Die Zellenschwellenspannungsverteilung kann als Zellenspannungsverteilung bezeichnet werden und kann unter Verwendung des Akronyms „CVD“ bezeichnet werden.
  • Eine Zellenschwellenspannungsverteilung kann während der Forschung und Entwicklung der nichtflüchtigen Speichertechnologie bestimmt werden, um zu verstehen, wie sich Speicherzellen unter verschiedenen Bedingungen verhalten. In bestimmten Ausführungsformen kann eine Zellenschwellenspannungsverteilung während des Betriebs des nichtflüchtigen Speichers durchgeführt werden, um zu bestimmen, ob die Lesestufen, die zum Lesen einer Speicherzelle verwendet werden, angemessen sind. Wenn eine Bitfehlerrate für einen ersten Satz von Lesestufen unzureichend ist, können Gegenmaßnahmen ergriffen werden, um die Bitfehlerrate zu reduzieren.
  • In einer bestimmten Ausführungsform können diese Gegenmaßnahmen das Anpassen von Konfigurationsparametern einschließen, so dass eine Bitfehlerrate abnimmt. In bestimmten Ausführungsformen können die Schritte des Bestimmens einer Zellenschwellenspannungsverteilung, des Prüfens von Lesestufen und anderer Medieneigenschaften in Bezug auf die Bitfehlerrate und des Ergreifens jeglicher Gegenmaßnahmen als CVD-Abtastung, Lese-Abtastung oder Lese-Abtastvorgang bezeichnet werden. Ein CVD-Abtastung kann aufgrund der verschiedenen beteiligten Schritte und der Anzahl der abgetasteten Speicherzellen erhebliche Zeit benötigen, um abgeschlossen zu werden. Insbesondere wenn Speicherzellen vier oder mehr Bits pro Speicherzelle speichern, kann eine CVD-Abtastung eine hohe Latenz erfahren, sofern nicht Gesichtspunkte der beanspruchten Lösung verwendet werden. Die „Bitfehlerrate“ nimmt Bezug auf eine Messung einer Anzahl von fehlerhaften Bits von einer Gesamtanzahl von verarbeiteten Bits. Je nach Anwendungsfall kann eine Bitfehlerrate berechnet werden entweder bevor oder nachdem ein Decodierer für den Fehlerkorrekturcode (Error Correction Code, ECC) einen oder mehrere Versuche gemacht hat, ein oder mehrere fehlerhafte Bits zu korrigieren.
  • „Konfigurationsparameter‟ nimmt auf einen Parameter eines Satzes von Speicherzellen Bezug, der über eine Schnittstelle modifizierbar ist, wie ein Leseschwellenwert, ein Schreib- oder Programmschwellenwert, ein Löschschwellenwert oder dergleichen. Eine Schnittstelle zum Modifizieren einer Konfigurationsparameters kann ein programmierbares Datenregister, eine Befehlsschnittstelle eines Steuerbusses für das nichtflüchtige Speicherarray, eine API eines Vorrichtungstreibers der Speichervorrichtung, einen Steuerparameter für eine Speichersteuerung oder dergleichen einschließen.
  • Die Schwellenspannung für jede Speicherzelle kann codiert werden, um binäre Daten darzustellen. Insbesondere kann die Schwellenspannung für jede Speicherzelle codiert werden, um 2, 3, 4 oder mehr Bits pro Speicherzelle darzustellen. Zum Beispiel kann in 4 der Binärwert „1111“ in einer Ausführungsform dem niedrigsten Speicherzustand (mit Er bezeichnet, einem gelöschten Speicherzustand 402) zugeordnet sein, der Wert „1110“ dem nächst niedrigsten Lesespannungszustand und dem ersten der QLC-programmierten Speicherzustände 404 (mit A bezeichnet) zugeordnet sein, der Wert „1010“ dem nächsthöheren Lesespannungszustand (mit B bezeichnet) zugeordnet sein, und der Wert „1000“ dem nächsthöheren Lesespannungszustand (mit C bezeichnet) zugeordnet sein, usw., wobei nur ein Bit zwischen Speicherzuständen wechselt, die auch als Lesespannungszustände bezeichnet werden.
  • In 4 ist der niedrigste Speicherzustand Er als eine negative Schwellenspannung unterhalb der dargestellten 0,0 V dargestellt. In anderen Ausführungsformen kann der niedrigste Speicherzustand Er eine positive Schwellenspannung über dem 0,0 V-Pegel umfassen oder den 0,0 V-Pegel überspannen. Werte, Beträge, Größen und dergleichen von Lesespannungen können vom Hersteller und vom Typ der nichtflüchtigen Speicherzelle variieren, von denen jede von dieser Offenbarung umfasst ist. Eine Lesestufe wird von der Chipsteuerung verwendet, um Speicherzellen in einem Speicherzustand von denen in einem anderen zu unterscheiden.
  • „Lesestufe‟ nimmt auf einen Spannungspegel Bezugf, der eingerichtet ist, um zu testen, zu prüfen, zu lesen oder abzutasten, welche Speicherzellen auf dem Spannungspegel leiten. In bestimmten Ausführungsformen können die Speicherzellen Transistoren aufweisen, und die Lesestufe oder Lesespannung ist ein Spannungspegel bei oder oberhalb der Schwellenspannung für die Speicherzellen, die bewirkt, dass die Speicherzelle, die einen Strom leitet, aktiviert wird.
  • In bestimmten Ausführungsformen kann in Abhängigkeit von der Art der Codierung, die zur Speicherung von Daten auf der Speicherzelle verwendet wird, und der Anzahl der auf jeder Speicherzelle codierten Bits ein einziger Lese-/Abtastvorgang unter Verwendung einer einzigen Lesespannung für den Speicherzustand der Speicherzelle bestimmend sein. In anderen Ausführungsformen kann eine Anzahl von Lese-/Abtastvorgängen, die jeweils mit unterschiedlichen Lesespannungspegeln durchgeführt werden, verwendet werden, um den Speicherzustand der Speicherzelle zu bestimmen.
  • Der bestimmte Speicherzustand kann dann in eine Darstellung der in der Speicherzelle gespeicherten Datenbits decodiert werden. „Lesespannung“ ist eine Kurzbezeichnung für eine „Leseschwellenspannung“. „Lesepegel“ ist ein anderer Begriff, der allgemein zur Beschreibung einer „Lesespannung“ verwendet wird, und die beiden Begriffe werden hierin synonym verwendet. Das Lesen von Speicherzellen basierend auf einer Lesestufe kann zum Lesen gespeicherter Daten in den Speicherzellen sowie zum Testen/Prüfen der Leistung der Speicherzellen und zum Bestimmen, ob irgendwelche Änderungen an Konfigurationsparametern für die Speicherzellen vorgenommen werden sollen, verwendet werden.
  • 4 veranschaulicht mehrere Standard-Lesestufen, die zu dem Zeitpunkt eingestellt werden können, zu dem eine Speichervorrichtung 200 hergestellt wird, und die während eines Herstellungsprozesses und/oder später eingestellt werden können, wenn die Speichervorrichtung 200 von einem Kunden in Gebrauch ist. Wenn Speicherzellen programmiert werden, werden die Schwellenspannungen von dem gelöschten Speicherzustand 402 in einen der QLC-programmierten Speicherzustände 404 geändert. Jeder Speicherzustand ist durch eine vorgegebene Standard-Lesestufe begrenzt. Wenn eine programmierte, betriebsfähige Speicherzelle bei einer Standard-Lesestufe nicht aktiviert wird, liegt die Schwellenspannung der Speicherzelle über der Standard-Lesestufe. Der Lese- oder Abtastspeichervorgang ist ein iterativer Prozess. Und beim Abschließen des iterativen Prozesses, entweder zum Lesen von Daten oder zum Abtasten aller Speicherzellen, wie mit CVD, identifiziert jede Speicherzelle als ein Mitglied eines der gelöschten Speicherzustände 402 oder QLC-programmierten Speicherzustände 404.
  • Lesestufe A 406, Lesestufe B 408, Lesestufe C 410, Lesestufe D 412, Lesestufe E 414, Lesestufe F 416, Lesestufe G 418, Lesestufe H 420, Lesestufe I 422, Lesestufe J 424, Lesestufe K 426, die Lesestufe L 428, die Lesestufe M 430, die Lesestufe N 432 und Lesestufe O 434 in der dargestellten Ausführungsform können Standard-Lesestufen umfassen, welche die Speicherzustände A von Er, B von A, C von B usw. jeweils trennen. Obwohl Standard-Lesestufen zum Zeitpunkt der Herstellung eingestellt werden können, können sie nach Bedarf angepasst werden, um eine optimale Leistung der Speicherzellen sicherzustellen. In bestimmten Ausführungsformen stellt eine Standard-Lesestufe eine aktuelle Lesestufe für eine Speicherzelle dar. „Aktuelle Lesestufe“ nimmt auf eine Lesestufe Bezug, die ein Wert ist, der derzeit von einer Chipsteuerung oder Speichersteuerung für Lesevorgänge an Speicherzellen verwendet wird. In bestimmten Ausführungsformen kann eine aktuelle Lesestufe eine Standard-Lesestufe sein, die für frühere Lesevorgänge verwendet wurde. In einer anderen Ausführungsform kann die aktuelle Lesestufe eine Lesestufe umfassen, die durch einen vorherigen Leseabtastvorgang eingestellt wurde und die in einem gegenwärtig ausgeführten Leseabtastvorgang geändert werden kann.
  • Ein Programmspeichervorgang ändert eine Medieneigenschaft, z. B. eine Schwellenspannung, der Speicherzellen in einen anderen Zustand, um eine programmierte Bedingung darzustellen. Durch Einstellen der Medieneigenschaft auf einen einer Vielzahl von verschiedenen Zuständen gemäß einer bestimmten Codierung können mehrere Bits in einer einzelnen Speicherzelle gespeichert werden. Bei NAND-Speicherzellen ändert der Programmiervorgang die Schwellenspannung auf eine Schwellenspannung zwischen zwei Lesestufen. Zum Beispiel kann in einer Ausführungsform ein Programmiervorgang bestimmte Speicherzellen in einen H-Speicherzustand programmieren, indem die Schwellenspannung auf einen Pegel zwischen der Lesestufe H 420 und der Lesestufe I 422 geändert wird. In bestimmten Ausführungsformen können zusätzliche Schwellenwerte verwendet werden, einschließlich einer Programmierebene, einer Programmierverifizierebene und dergleichen.
  • Basierend auf einer Datencodierung kann eine nichtflüchtige Speichersteuerung diskrete Schwellenspannungen für eine Speicherzelle auf Viererebene als vier binäre Bits darstellend interpretieren. 4 und 5 veranschaulichen eine Ausführungsform, die eine Gray-Code-Codierung verwendet. Andere Programmier- und Codierungsmodelle können verwendet werden, und bestimmte nichtflüchtige Speichermedien können mehr oder weniger mögliche Zustände aufweisen, wodurch andere Datenmengen in einer einzigen Speicherzelle gespeichert werden können. Die Speicherzustände A bis O können zusammenhängend sein oder nicht; zum Beispiel können in bestimmten Ausführungsformen die Spannungspegel durch Bandlücken getrennt sein, die als Schutzbänder bekannt sind. Zum Beispiel können A und B durch 0,3 V getrennt sein. Die Speicherzustände A bis O können alternativ eine Überlappung aufweisen, wie in 6 veranschaulicht.
  • Bezugnehmend auf 4 und 5 veranschaulicht 4 die Zellenschwellenspannungsverteilungskurven 400. Die veranschaulichten Spannungsverteilungskurven gelten für Speicherzellen, die programmiert sind, um vier Datenbits zu speichern. Zu einem gegebenen Zeitpunkt kann jede Speicherzelle in einer Vielzahl von Speicherzuständen sein (auch als ein Datenzustand bezeichnet). Die Speicherzustände können einen gelöschten Zustand und eine Vielzahl von programmierten Zuständen einschließen. Die Anzahl der programmierten Zustände entspricht der Anzahl von Bits, für deren Speicherung die Speicherzellen programmiert sind.
  • Eine Speicherzelle, die programmiert ist, um vier Bits zu speichern, kann sich in einem gelöschten Zustand 402 oder einem von fünfzehn programmierten Zuständen A-O befinden. Jede Zellenschwellenspannungsverteilungskurve (innerhalb der Zustände Er-O) ist dem gelöschten Zustand oder einem der programmierten Zustände zugeordnet. Zusätzlich ist jede Schwellenspannungsverteilungskurve einem bestimmten Schwellenspannungsbereich zugeordnet und/oder definiert diesen, der wiederum einen bestimmten einer Vielzahl von vorbestimmten n-Bit-Binärwerten definiert, ihm zugeordnet oder mit ihm assoziiert ist. Auf diese Weise ermöglicht das Bestimmen, welche Schwellenspannung Vt eine Speicherzelle aufweist, das Bestimmen der Daten (d. h. der Logikwerte der Bits), welche die Speicherzelle speichert.
  • Die spezifische Beziehung zwischen den in die Speicherzellen programmierten Daten und den Schwellenspannungspegeln der Speicherzelle hängt von dem Datencodierungsschema ab, das zum Programmieren der Speicherzellen verwendet wird. In einem Beispiel wird ein Gray-Code-Schema verwendet, um den Schwellenspannungsverteilungskurven Datenwerte zuzuweisen. „Gray-Code-Codierung“ nimmt Bezug auf eine Art von Codierungsschema, das auf einem Nummerierungssystem basiert, das einem Bereich von Schwellenspannungen, die eine Speicherzelle aufweisen kann, bestimmte Bitwerte zuordnet. Die Bitwerte sind so zugeordnet, dass sich das Bitmuster zwischen benachbarten Schwellenspannungsbereichen um nur ein Bit unterscheidet. Eine solche Bitmuster-Zuweisung ist vorteilhaft, da sich zwar eine Schwellenspannung von einem Bereich in einen benachbarten Bereich ändern oder driften kann, reicht eine unbeabsichtigte Änderung oder Drift wahrscheinlich nicht aus, um eine Änderung von zwei Bits in der Codierung zu verursachen. Auf diese Weise kann eine unerwünschte Drift erkannt und aufgenommen werden.
  • In einem Beispiel kann der Bereich von Schwellenspannungen einer von einer Vielzahl von Schwellenspannungsbereichen sein, die verwendet werden können, um mehrere Datenbits in eine Speicherzelle zu codieren. Nehmen wir zum Beispiel an, eine Speicherzelle ist für die Speicherung von zwei Bits an Informationen eingerichtet, und die aufeinanderfolgenden Bereiche der Schwellenspannungen liegen zwischen einer negativen unteren Schwellenspannung und einer positiven oberen Schwellenspannung, z. B. etwa 5 Volt. Wenn vier Bereiche definiert sind, kann der unterste Bereich eine Bitzuordnung von ,00', der nächsthöhere eine Bitzuordnung von ,01', der nächsthöhere eine Bitzuordnung von,10' und der letzte Bereich eine Bitzuordnung von,10' aufweisen.
  • Natürlich können Speicherzellen, die mehrere Datenbits speichern, eine Gray-Code-Codierung oder ein anderes Codierungsverfahren verwenden, wie es in den folgenden US-Patenten beschrieben ist: US6222762 und/oder US7237074 , die hierin für alle Zwecke durch Bezugnahme eingeschlossen sind.
  • 4 veranschaulicht, wie ein Beispiel einer Gray-Code-Codierung auf die Speicherzustände abgebildet wird. Unter jedem Speicherzustand befindet sich ein Binärwert von 4 Bits, die vom Lesen des höchstwertigen Bits (MSB) bis zum Lesen des niedrigstwertigen Bits (LSB) aufgeführt sind. 5 veranschaulicht dieselbe Codierabbildung in Tabellenform. Jeder Position im Binärwert ist eine logische oder physikalische Datenseite zugeordnet. Mit anderen Worten bildet das Lesen aller MSB-Bits von Speicherzellen entlang einer physischen Wortleitung, einer physischen Seite oder Gruppen physischer Seiten entlang einer Zeile des nichtflüchtigen Speicherarrays eine logische Seite.
  • In einer Ausführungsform entspricht das LSB einer unteren Seite von Daten und das MSB einer oberen Seite von Daten, wobei die anderen zwei Bits Seiten von Daten auf mittlerer Ebene darstellen. In bestimmten Ausführungsformen kann eine mehrstufige Speicherzelle an einem mehrphasigen Programmiermodell haften, welches das Schreiben des LSB einschließt, bevor die dazwischenliegenden Bits und das MSB geschrieben werden können oder umgekehrt. In einer anderen Ausführungsform können das LSB, die dazwischenliegenden Bits und das MSB separat durch die Speichersteuerung programmiert werden. Ein solcher Ansatz kann aufgrund von Anbieter- oder Herstelleranforderungen für Seitenpaarung (wird z. B. ein LSB-Bit der MFK-Zelle mit einem MSB-Bit einer anderen MFK-Zelle gepaart) und Seitenadressierung (wird z. B. die LSB-Seite vor der MSB-Seite programmiert oder umgekehrt) verfolgt werden. In bestimmten Fällen wird das LSB geschrieben, bevor das MSB geschrieben wird, das MSB wird geschrieben, bevor das LSB geschrieben wird, oder dergleichen.
  • 5 veranschaulicht eine beispielhafte Codierung für mehrstufige Speicherzellen 500. Durch die Verwendung einer Gray-Code-Kodierung kann eine logische Seite mit weniger Lesevorgängen gelesen werden, da durch die Kodierung sichergestellt ist, dass nur ein Bit zwischen benachbarten Speicherzuständen wechselt. Zum Beispiel kann der gelöschte Zustand Er durch „1111“ dargestellt werden und in den Speicherzustand A übergehen, um „1110“ darzustellen, in dem das Bit, das geändert wurde, das niedrigstwertige Bit ist. 5 veranschaulicht vier Seiten, Seite 1 504, Seite 2 506, Seite 3 508 und Seite 4 510. Jede Seite kann einzeln gelesen werden. Zum Beispiel kann Seite 1 504 gelesen werden, dann Seite 2 506 usw., und somit können vier Seitenlesevorgänge erforderlich sein, um zu bestimmen, welcher der QLC-Speicherzustände 502 in einer bestimmten Speicherzelle dargestellt wird.
  • Aufgrund der Gray-Code-Codierung können Bits, die in einer Zelle gespeichert sind, durch Lesen an den Stellen bestimmt werden, an denen Bits zwischen Speicherzuständen wechseln können. Um, zum Beispiel Seite 1 504 zu lesen, sind die Lesevorgänge auf Lesestufe A 406, Lesestufe D 412, Lesestufe F 416 und Lesestufe K 426 eine ausreichende Anzahl von Lesevorgängen, um die Datenwerte für Seite 1 504 zu decodieren, ohne auf jeder Standard-Lesestufe zu lesen.
  • 6 veranschaulicht einen oder mehrere beispielhafte Leseabtastvorgänge 600 an Speicherzellen, die auf einen von sechzehn möglichen Speicherzuständen, z. B. Er-O, programmiert sind. Ein Leseabtastvorgang kann Lesestufen von einer Standard-Lesestufe auf eine neue Lesestufe einstellen, um eine Anzahl von Fehlern beim Lesen der Speicherzellen zu reduzieren.
  • „Leseabtastvorgang“ nimmt Bezug auf einen Wartungsvorgang, der durchgeführt wird, um Fehler in den Daten oder Speicherzellen und/oder anderen Komponenten einer nichtflüchtigen Speichervorrichtung zu identifizieren und zu mildern oder zu vermeiden oder zu zählen. Ein Leseabtastvorgang kann austauschbar als „Leseabtastung“ oder „Leseabtastvorgang“ bezeichnet werden. In einer Ausführungsform beinhaltet ein Leseabtastvorgang das Lesen von Daten aus oder das Abtasten einer bestimmbaren physikalischen Eigenschaft oder eines Speicherzustands von Speicherzellen in einem Speicherblock. Anschließend überprüft der Leseabtastvorgang die Speicherzustände der Speicherzellen auf etwaige Fehler, korrigiert möglichst viele Fehler und bestimmt eine Bitfehlerrate. Dann bestimmt der Leseabtastvorgang, ob die Bitfehlerrate einen Schwellenwert, wie einen Lesebitfehlerratenschwellenwert, erfüllt.
  • In einer Ausführungsform liest der Leseabtastvorgang Daten von jeder logischen Seite oder Wortleitung des Speicherblocks. In einer anderen Ausführungsform wählt der Leseabtastvorgang weniger als alle logischen Seiten des Speicherblocks aus. Mit anderen Worten kann der Leseabtastvorgang die logischen Seiten des Speicherblocks abtasten, aus denen Daten für den Leseabtastvorgang gelesen werden sollen.
  • Wenn ein Lesebitfehlerratenschwellenwert erfüllt ist, kann der Leseabtastvorgang dann einen Datenreinigungsvorgang oder einen Datenaktualisierungsvorgang durchführen. In bestimmten Ausführungsformen kann ein Leseabtastvorgang immer einen Datenreinigungsvorgang oder einen Datenaktualisierungsvorgang einschließen. In anderen Ausführungsformen kann das Durchführen eines Datenbereinigungsvorgangs oder Datenaktualisierungsvorgangs davon abhängig sein, ob die Bitfehlerrate einen Lesebitfehlerratenschwellenwert erfüllt. In solchen Ausführungsformen kann ein Leseabtastvorgang als eine „Lesebereinigung“ oder ein „Lesebereinigungsvorgang“ bezeichnet werden. In diesen Ausführungsformen kann ein Leseabtastvorgang bedingt einen Datenreinigungsvorgang einschließen.
  • In bestimmten Ausführungsformen kann ein Leseabtastvorgang als Vordergrundprozess arbeiten, was bedeutet, dass der Leseabtastvorgang eine nichtflüchtige Speichervorrichtung bei dem Bedienen von Lesebefehlen oder Schreibbefehlen für einen Host unterbricht oder dies verzögert. Außerdem muss der Leseabtastvorgang möglicherweise das Arbeiten an einem bestimmten Speicherblock abschließen und dadurch einen Host-Lesebefehl für Daten auf diesem bestimmten Speicherblock verzögern. Somit kann in solchen Ausführungsformen ein Leseabtastvorgang Dienstgütegrade zwischen einem Host und der nichtflüchtigen Speichervorrichtung beeinflussen.
  • Ein Leseabtastvorgang kann eine Vielfalt von Techniken und/oder Verfahren verwenden, um Lesestufen anzupassen. Bestimmte der Techniken oder Verfahren können iterativ unterschiedliche Kandidatenlesestufen verwenden, um eine Ersatzlesestufe für eine aktuelle Lesestufe zu bestimmen. Ferner kann ein Leseabtastvorgang in einer Speichersteuerung, Chipsteuerung, einem Host 106 oder einer Kombination von diesen implementiert werden.
  • „Kandidatenlesestufe‟ nimmt auf einen Wert, eine Einstellung, eine Konfiguration, einen numerischen Wert, einen Versatz oder dergleichen für eine Lesestufe Bezug, die genaueres Abtasten von Speicherzellen und/oder Lesen von Daten aus Speicherzellen als eine aktuelle Lesestufe bereitstellen kann. In bestimmten Ausführungsformen können Kandidatenlesestufen vorbestimmt und in einem Repository, wie beispielsweise einer Datenstruktur, gespeichert werden. In anderen Ausführungsformen können Kandidatenlesestufen vorbestimmt sein und in einer vordefinierten Reihenfolge organisiert sein, für die eine Leseabtastschaltung konfiguriert sein kann, um beim Auswählen von Kandidatenlesestufen zur Verwendung beim Bestimmen einer Lesestufe zum Ersetzen einer aktuelle Lesestufe zu folgen.
  • In noch anderen Ausführungsformen können Kandidatenlesestufen basierend auf Ergebnissen eines oder mehrerer früherer Abtast- und/oder Lesevorgänge (hierin als „Abtastung“ oder „Abtastungen“ bezeichnet) berechnet werden, die eine Leseabtastschaltung an einem Satz von Speicherzellen durchführen kann. Zum Beispiel kann die Leseabtastschaltung in einer Ausführungsform Ergebnisse einer vorherigen Abtastung mit Ergebnissen für eine aktuelle Abtastung unter Verwendung einer aktuellen Kandidatenlesestufe vergleichen. Wenn die Ergebnisse mit der aktuellen Kandidatenlesestufe günstiger sind, kann die Leseabtastschaltung eine nächste Kandidatenlesestufe basierend auf der aktuellen Kandidatenlesestufe berechnen. Wenn die Ergebnisse mit der aktuellen Kandidatenlesestufe ungünstiger sind, kann die Leseabtastschaltung eine nächste Kandidatenlesestufe basierend auf einer oder mehreren vorherigen Abtastungen unter Verwendung von Kandidatenlesestufen berechnen. In Ausführungsformen, die bestimmen, welche Kandidatenlesestufen mit aufeinanderfolgenden Iterationen verwendet werden sollen, kann eine Leseabtastschaltung einen positiven oder negativen Versatz auf einer aktuellen Lesestufe anwenden, um eine nächsten Kandidatenlesestufe zu bestimmen.
  • Eine Kandidatenlesestufe kann eine aus einer Vielzahl von Lesestufen umfassen, die im Allgemeinen zwischen einer Mehrheit von Speicherzellen von Zellenschwellenspannungsverteilungen für zwei benachbarte Speicherzustände positioniert sind. Es ist wünschenswert, dass Kandidatenlesestufen beim Lesen von Daten aus Speicherzellen, die auf einen der zwei benachbarten Speicherzustände programmiert sind, zu optimaler Leistung führen.
  • In einer Ausführungsform erzeugt mindestens eine der Kandidatenlesestufen ein optimales Ergebnis, was zu der geringsten Anzahl von Bitfehlern beim Lesen aus einem der benachbarten Speicherzustände führt. Solche Kandidatenlesestufen können als Ziellesestufen bezeichnet werden. Eine Ziellesestufe ist eine Lesestufe, die zu einer kleinsten oder geringsten Anzahl aktivierter Speicherzellen in Bezug auf andere Kandidatenlesestufen führt, die iterativ überprüft werden können. In einer anderen Ausführungsform ist die Ziellesestufe eine Lesestufe, die zu einer kleinsten oder geringsten Anzahl von Bitfehlern oder Bitfehlerrate oder geschätzten Bitfehlerrate aus einem Lesesatz von Speicherzellen in Bezug auf andere Kandidatenlesestufen führt, die iterativ überprüft werden können.
  • Valley-Suchvorgang
  • Ein Verfahren, das einen Leseabtastvorgang verwenden kann, wird als Valley-Suchvorgang bezeichnet. „Valley-Suchvorgang“ nimmt auf eine Art von Leseabtastvorgang Bezug, der konfiguriert ist, um iterativ eine Anzahl von Kandidatenlesestufen um eine Grenze herum für einen Satz von Speicherzellen innerhalb von Zellenschwellenspannungsverteilungen für zwei benachbarte Speicherzustände zu testen oder zu prüfen. In bestimmten Ausführungsformen kann der Valley-Suchvorgang mit einer aktuellen Lesestufe oder einer Standard-Lesestufe beginnen, die eingestellt worden sein kann, wenn eine Speichervorrichtung hergestellt wird. Als Nächstes kann der Valley-Suchvorgang eine Kandidatenlesestufe anwenden, um zu bestimmen, ob die Kandidatenlesestufe zu weniger sich aktivierenden Speicherzellen führte als die aktuelle Lesestufe. Wenn ja, bedeutet dies, dass mehr Speicherzellen als auf einen korrekten Speicherzustand programmiert identifiziert werden. Wenn nicht, bedeutet dies, dass mehr Speicherzellen fälschlicherweise als zu einem der benachbarten Speicherzustände zugehörig identifiziert werden. Der Valley-Suchvorgang fährt auf diese Weise fort zu iterieren, wobei die Kandidatenlesestufe mit jeder Iteration geändert wird, bis eine Lesestufe identifiziert wird, die dazu führt, dass der geringste Satz von Speicherzellen aktiviert wird und/oder dies zu einer geringsten Anzahl von Lesefehlern (z. B. niedrigere Bitfehlerrate) führt. Auf diese Weise sucht der Valley-Suchvorgang eine Zielkandidatenlesestufe, die ein optimales Leseergebnis bereitstellt. Der Valley-Suchvorgang erhält seinen Namen aus dem iterativen Prozess des Testens von Kandidatenlesestufen, bis eine lokalisiert ist, die mit einem „Valley“ zwischen Zellenschwellenspannungsverteilungskurven für zwei benachbarte Speicherzustände ausgerichtet ist.
  • In einer Ausführungsform kann ein Valley-Suchvorgang durchgeführt werden, um Lesestufen für eine niedrigste logische Seite, Seite 1 504, und/oder für Sätze von benachbarten Speicherzuständen für jede logische Seite, anzupassen. Details für einen Valley-Suchvorgang für Seite 1 504 werden veranschaulicht, um ein Beispiel bereitzustellen.
  • Die Binärwerte für Speicherzellen, die Daten von Seite 1 504 speichern, sind unterhalb der Kurven veranschaulicht. Wie diese Werte angeben und die Gray-Code-Codierung zeigt, sind vier Lesevorgänge zum Lesen von Seite 1 504 erforderlich. In einer Ausführungsform kann ein Valley-Suchvorgang jede der vier Lesestufen überprüfen und optional anpassen. Jede Lesestufe kann einem Lesestufenfenster zugeordnet sein.
  • „Lesestufenfenster“ nimmt auf einen Satz von Kandidatenlesestufen Bezug, die als Lesestufe zwischen zwei benachbarten Speicherzuständen dienen können. In bestimmten Ausführungsformen kann, wenn die Speicherzellen, die unter Verwendung einer oder mehrerer Schwellenspannungen gelesen werden, ein Lesestufenfenster einen Satz von Schwellenspannungen zwischen einer niedrigen Schwellenspannung und einer hohen Schwellenspannung umfassen, wobei jedes Element des Satzes von Kandidatenlesestufen innerhalb des Lesestufenfensters eine unterschiedliche Schwellenspannung umfasst.
  • In einer anderen Ausführungsform, NAND-Speicherzellen umfassend, kann ein Lesestufenfenster einen Satz von Schwellenspannungen zwischen einer niedrigen Schwellenspannung und einer hohen Schwellenspannung umfassen, wobei jedes Element des Satzes von Kandidatenlesestufen innerhalb des Lesestufenfensters eine Schwellenspannung umfasst, die um einen oder mehrere Versatzbeträge von einer Standard-Lesestufe, wie einer aktuellen Lesestufe, versetzt ist. Die Versätze von Standard-Lesestufen können sowohl größer als und/oder kleiner als die Standard-Lesestufe sein. Ein Lesestufenfenster kann auch als „Abtast“-Fenster bezeichnet werden.
  • 6 schließt ein Lesestufenfenster 602, Lesestufenfenster 604, Lesestufenfenster 606 und Lesestufenfenster 608 ein, jeweils eines für jede Lesestufe A 406, Lesestufe D 412, Lesestufe F 416 und Lesestufe K 426. Für jedes Lesestufenfenster, Abtastfenster, kann ein Satz von Sätzen von Kandidatenlesestufen 610 verwendet werden. Zum Beispiel können die Schwellenspannungspegel #1-7 die Kandidatenlesestufen sein, die über das Lesestufenfenster 602 verwendet werden, um eine optimale Platzierung für Lesestufe A 406, Pegel #8-14 für Lesestufe D 1110, Pegel #15-21 für Lesestufe F 416 und Pegel #22-28 für Lesestufe K 1114 zu bestimmen.
  • Beispielhaft kann ein Valley-Suchvorgang iterativ eine optimale Lesestufe für jede von Lesestufe A 406, Lesestufe D 412, Lesestufe F 416 und Lesestufe K 426 bestimmen. Für die Lesestufe A 406 sei angenommen, dass die Standard-Lesestufe Kandidatenlesestufe #5 ist und der Speicherzustand Er sich nach oben bewegt hat, nach rechts verschoben hat und der Speicherzustand A sich nach links verschoben hat, nach unten bewegt hat. Nach dem Bestimmen, wie viele Speicherzellen die Kandidatenlesestufe #5 aktiviert (oder alternativ, wie viele Bitfehler in einem Codewort sind, wenn die Lesestufe A 406 eine Kandidatenlesestufe #5 ist), kann der Valley-Suchvorgang als nächstes eine nächsthöhere Kandidatenlesestufe #6 prüfen oder eine nächstniedrigere Kandidatenlesestufe #4 prüfen.
  • Bei jeder iterativen Prüfung vergleicht der Valley-Suchvorgang ein Ergebnis (z. B. eine Anzahl der aktivierten Speicherzellen oder eine Bitfehlerrate) mit einem vorherigen Ergebnis für eine vorherige Prüfung. Wenn die zu überprüfende/testende Kandidatenlesestufe zu höheren Bitfehlern oder mehr aktivierten Speicherzellen führt, kann der Valley-Suchvorgang eine Schwellenspannung in eine Richtung überprüfen, die der Richtung entgegengesetzt ist, die zu den höheren Bitfehlern (aktivierten Speicherzellen) führt. Wenn also die Kandidatenlesestufe #5 zu weniger aktivierten Speicherzellen als die Kandidatenlesestufe #6 führt, dann kann der Valley-Suchvorgang als nächstes die Kandidatenlesestufe #4 testen. Wenn die Kandidatenlesestufe #4 zu weniger aktivierten Speicherzellen als die Kandidatenlesestufe #5 führt, dann kann der Valley-Suchvorgang als nächstes die Kandidatenlesestufe #3 testen. Wenn die Kandidatenlesestufe #3 zu mehr aktivierten Speicherzellen als die Kandidatenlesestufe #4 führt, dann kann der Valley-Suchvorgang das Iterieren beenden und bestimmen, dass die Kandidatenlesestufe #4 das „Valley“ zwischen dem Er-Speicherzustand und dem A-Speicherzustand ist. Folglich kann der Valley-Suchvorgang eine Standard-Lesestufe von der Kandidatenlesestufe #5 zu der Kandidatenlesestufe #4 ändern. Als Nächstes kann der Valley-Suchvorgang diesem ähnlichen Prozess für Lesestufe D 412, Lesestufe F 416 und Lesestufe K 426 folgen. Zum Beispiel können Kandidatenlesestufen aus dem Lesestufenfenster 604, dem Lesestufenfenster 606 und dem Lesestufenfenster 608 iterativ getestet werden. Ferner werden, wenn ein Valley-Suchvorgang für alle logischen Seiten durchgeführt wird, schließlich alle Lesestufen des Vt-Fensters getestet und möglicherweise geändert, um optimale Lesevorgangsergebnisse zu erhalten. Eine Valley-Suchvorgang ist ein iteratives Versuchs- und Irrtumverfahren, um zu bestimmen, wie Lesestufen anzupassen sind.
  • Die Kandidatenlesestufen, beispielsweise das Lesestufenfensters 602, können vordefiniert sein. In einem anderen Beispiel leitet der Valley-Suchvorgang die Kandidatenlesestufen durch Anwenden eines Versatzes für eine letzte Kandidatenlesestufe ab.
  • Bitfehlerratenschätzung (Bit Error Rate Estimation - BES)
  • Ein weiterer verwendbarer Leseabtastvorgang wird als Verfahren der Bitfehlerratenschätzung (BES) bezeichnet. Die „Bitfehlerrate“ nimmt Bezug auf eine Messung einer Anzahl von fehlerhaften Bits von einer Gesamtanzahl von verarbeiteten Bits. Je nach Anwendungsfall kann eine Bitfehlerrate berechnet werden entweder bevor oder nachdem ein Decodierer für den Fehlerkorrekturcode (Error Correction Code, ECC) einen oder mehrere Versuche gemacht hat, ein oder mehrere fehlerhafte Bits zu korrigieren.
  • Wie ein Valley-Suchvorgang ist ein BES-Leseabtastvorgang ein iteratives Versuchs- und Irrtumverfahren, das eine optimale Lesestufe für eine oder mehrere Lesestufen bestimmen will. In ähnlicher Weise kann ein BES-Leseabtastvorgang, um Lesestufen für Seite 1 504 einzustellen, die Lesestufe A 406, Lesestufe D 412, Lesestufe F 416 und Lesestufe K 426 prüfen. Ein BES-Leseabtastvorgang kann jedoch optimiert werden, um eine wahrscheinlichste optimale Kandidatenlesestufen für jede Lesestufe zu bestimmen, und da der BES-Leseabtastvorgang auf einer Lesestufe testet, kann ein Emulator die Ergebnisse des Abtastens von Seite 1 504 bestimmen, wobei die anderen Lesestufen eine bestimmte Startstufe einstellen. In einer Ausführungsform kann sich das Abtasten vom Lesen unterscheiden, da bestimmte Schwellenspannungen emuliert werden und Daten aus Speicherzellen im normalen Sinne nicht wirklich gelesen werden. Die Verwendung von Gesichtspunkten der offenbarten Lösung kann einem BES-Leseabtastvorgang ermöglichen, auf den Lesestufen zu lesen, aber weniger emulierte Schwellenspannungsbestimmungen im Abtastabschnitt des BES-Leseabtastvorgangs durchführen. Auf diese Weise sucht der BES-Leseabtastvorgang eine Anzahl von Iterationen von Lese-/Abtastvorgängen zu begrenzen, die an den Speicherzellen durchgeführt werden, um optimale Lesestufen zu bestimmen.
  • BES-Leseabtastvorgänge können mit allen Lesestufen an einem vorbestimmten Startpunkt beginnen und erfasste Messungen für unterschiedliche Kandidatenlesestufen für eine erste Lesestufe vornehmen. Zum Beispiel kann eine BES-basierte Abtastung bei #4 für Lesestufe A 406 beginnen, dann in einer vordefinierten Reihenfolge (#3, dann #5, dann #6, dann #2 usw.) durch die Kandidatenlesestufen des Lesestufenfensters 602 iterieren, während andere Lesestufen (Lesestufe D 1110, Lesestufe F 416 und Lesestufe K 1114) an derselben Position gehalten werden. „Vordefinierte Reihenfolge“ nimmt auf eine Abfolge von Schritten, Vorgängen, Auswahlen, Funktionen, Bestimmungen oder Aktionen in einer Reihenfolge Bezug, die definiert ist, bevor ein Vorgang eingeleitet wird, welcher der vordefinierten Reihenfolge folgt.
  • Diese anderen Lesestufen können eher emuliert als erfasst werden. Wenn ein Minimum (die geringste Anzahl von aktivierten Speicherzellen oder die geringste Anzahl von Bitfehlern) unter dem ersten Satz von Sätzen von Kandidatenlesestufen 610 angegeben wurde, wodurch die Lesestufe A 406 bestimmt wird, kann der nächste Satz von Kandidatenlesestufen für eine nächste Lesestufe analysiert werden. In bestimmten Fällen nimmt das Minimum hier Bezug auf eine minimale Anzahl von Prüfknoten (Syndromgewichten), die als eine Schätzung von BER basierend auf verschiedenen Hypothesen in Bezug auf die Anzahl der durchgeführten Abtastungen verwendet werden können. Um Syndromgewichte zu erhalten, kann ein BES-Leseabtastvorgang Daten unter Verwendung eines Decodierers lesen und decodieren, und dieser Prozess kann erhebliche Zeit in Anspruch nehmen.
  • Wenn die Syndromgewichte unter einem Schwellenwert liegen, ist der relative Wert eines Syndromgewichts ein geeigneter Proxy oder Indikator für eine Bitfehlerrate. Auf diese Weise nutzt der BES-Leseabtastvorgang eine geschätzte Bitfehlerrate. „Geschätzte Bitfehlerrate“ nimmt auf einen Wert Bezug, der direkt, indirekt und/oder etwa eine Bitfehlerrate für einen bestimmten Satz von Datenbits darstellt, die in einer oder mehreren Speicherzellen gespeichert sind. Vorteilhafterweise dient eine geschätzte Bitfehlerrate als geeigneter Proxy für eine berechnete Bitfehlerrate und kann mit weniger Rechenzyklen und in einer schnelleren Zeit als der Zeit, die zum Bestimmen einer Bitfehlerrate benötigt wird, erhalten werden.
  • Ein Beispiel für eine geschätzte Bitfehlerrate ist eine Rate, die sich aus einem Bitfehlerraten- (BER) -Schätzabtast- (BES) -Vorgang ergibt. Ein BES-Leseabtastvorgang ist eine Art von Leseabtastvorgang mit Kandidatenlesestufen für bestimmte Lesestufen für eine logische Seite a, der in einer vordefinierten Reihenfolge getestet wird. In einer Ausführungsform testet der BES-Leseabtastvorgang eine bestimmte Kandidatenlesestufe, und ein Algorithmus bestimmt Ergebnisse zum simulierten/emulierten Testen anderer Lesestufen für eine bestimmte logische Seite.
  • Ein BES-Leseabtastvorgang kann in einer Ausführungsform eine geschätzte Bitfehlerrate bestimmen, indem Syndromgewichte zwischen iterativen Lesestufenabtast- oder Lesevorgängen verglichen werden, um zu bestimmen, welche Kandidatenlesestufe zu der geringsten Anzahl aktivierter Speicherzellen führt. In solchen Ausführungsformen dient ein Syndromgewicht unter einem Schwellenwert als Proxy für eine Bitfehlerrate, eine geschätzte Bitfehlerrate. Ein Syndromgewicht ist eine Anzahl von unerfüllten ECC-Paritätsprüfgleichungsknoten/Gleichungen aus einem Fehlerkorrektur-Codedecodierer (ECC-Decodierer) mit niedriger Dichte (Low-Density Parity-Check- (LDCC) -Decodierer).
  • In einem ECC-Decodierer mit niedriger Dichte (LDPC) ist ein Syndromgewicht für ein Codewort eine Anzahl von unaufgelösten Gleichungen oder unerfüllten Prüfknoten, wenn das Codewort decodiert wird. Je größer die Anzahl der unerfüllten Prüfknoten (höheres Syndromgewicht) ist, desto größer ist im Mittel die Anzahl der Fehler im Codewort. Je weniger unerfüllte Prüfknoten (höheres Syndromgewicht) im Mittel vorhanden sind, desto geringer ist die Anzahl der Fehler im Codewort. Somit kann in bestimmten Fällen ein Codewort mit weniger Fehlern immer noch eine größere Anzahl von unerfüllten Prüfknoten (höheres Syndromgewicht) aufweisen.
  • Zusätzlich kann ein BES-Leseabtastvorgang Kandidatenlesestufen in einer vordefinierten Reihenfolge testen. Wenn zum Beispiel auf Lesestufe D 412 geprüft wird, kann die vordefinierte Reihenfolge von Kandidatenlesestufen #10, dann #13, dann #14, dann #8, dann #9 sein. Diese vordefinierte Reihenfolge kann von einem Hersteller basierend auf einer Reihe von Tests und Forschung und Entwicklung bestimmt werden, um zu verstehen, welche Kandidatenlesestufen am wahrscheinlichsten zu der niedrigsten Bitfehlerrate nach der geringsten Anzahl von Iterationen innerhalb des BES-Leseabtastvorgangs führen.
  • Es gibt verschiedene andere Gesichtspunkte für den BES-Leseabtastvorgang, auf die hier nicht im Detail eingegangen wird. Stattdessen sind geeignete Implementierungen eines BES-Leseabtastvorgangs zur Verwendung mit Gesichtspunkten der offenbarten Lösung in US-Patent Nr. 9.697.905 , eingereicht am 4. Dezember 2014, erteilt am 4. Juli 2017, beschrieben, das hiermit für alle Zwecke durch Bezugnahme eingeschlossen ist.
  • 7 stellt ein Beispiel für Korrelationen zwischen Speicherzuständen 700 und Anpassungen an Lesestufen für einen Satz von mehrstufigen Speicherzellen von nichtflüchtigen Speichermedien dar. Fachleute erkennen, dass Schwellenspannungen für Speicherzellen sich mit der Zeit aufgrund verschiedener Faktoren ändern, einschließlich Temperaturänderungen, Verschleiß der Speicherzellen, Störeinflüssen, Leckage und dergleichen. Im Allgemeinen sind solche Änderungen für eine Mehrheit der Speicherzellen innerhalb einer Zellenschwellenspannungsverteilung nicht problematisch. Diese Änderungen der Schwellenspannung können jedoch zu höheren Bitfehlerraten aufgrund von Speicherzellen in der Nähe der Grenzen der Speicherzustände führen (solche Grenzen können als ein niedrigeres Ende für einen Teil der Verteilungskurve bezeichnet werden, der den niedrigsten Schwellenwertspannungen am nächsten ist, und ein oberes Ende für einen Teil der Verteilungskurve, der den höheren Schwellenwertspannungen am nächsten ist), wobei sie von einer Schwellenspannung innerhalb eines Speicherzustands zu einer Schwellenspannung innerhalb eines benachbarten Speicherzustands (benachbarter Speicherzustand) übergeht.
  • Um diesen Änderungen zu begegnen, passt der Leseabtastvorgang die Lesestufen an die Grenzen der Schwellenspannungsverteilungskurve der Zelle an. 7 veranschaulicht einige beispielhafte Speicherzustände, in denen die Lesestufeneinstellung vorgenommen wurde. In durchgezogenen Linien veranschaulichte Kurven stellen eine Stromverteilung dar und die in gestrichelten Linien veranschaulichten Kurven stellen dar, wie die Zellenschwellspannungsverteilung in der Vergangenheit war.
  • In dem veranschaulichten Beispiel wurden Anpassungen zum Erstellen der angepassten Lesestufe B 702, der angepassten Lesestufe E 704 und der angepassten Lesestufe G 706 vorgenommen. Die vorherigen Lesestufen werden auch als vorherige Lesestufe B 708, vorherige Lesestufe E 710 und vorherige Lesestufe G 712 angegeben. Der Leseabtastvorgang bestimmt in einer Ausführungsform unterschiedliche Anpassungen der vorherigen Lesestufen, was zu den angepassten Lesestufen führt. In der dargestellten Ausführungsform kann der Leseabtastvorgang die Anpassung 714, die Anpassung 716 und die Anpassung 718 individuell für die verschiedenen Speicherzustände B, E und G mit verschiedenen Größen, verschiedenen Richtungen und dergleichen bestimmen, wobei die verschiedenen Anpassungsstufen, die angepasste Lesestufe B 702, die angepasste Lesestufe E 704 und die angepasste Lesestufe G 706 individuell an Medieneigenschaften der verschiedenen Speicherzustände B, E und G angepasst werden. Jeder Speicherzustand Er, A, b, C usw. bis O, wie in 4 veranschaulicht, kann diese Behandlung empfangen. Hier ist der Einfachheit halber eine Teilmenge der Speicherzustände Er bis G veranschaulicht.
  • Die angepassten Lesestufen stimmen mit den geänderten Zellenschwellenspannungsverteilungen überein. Würden vorherige Lesestufen, wie die vorherige Lesestufe B 708, vorherige Lesestufe E 710, vorherige Lesestufe G 712 verwendet, würden die Speicherzellen in der Nähe der Grenzen Datenfehler registrieren. Da die Ladungspegel der verschiedenen Speicherzustände A, D und G um verschiedene Beträge und/oder in verschiedene Richtungen gedriftet, ausgelaufen, gestört oder dergleichen sind, kann die Verwendung der gleichen Anpassung für jeden Speicherzustand B, E und G in bestimmten Ausführungsformen in ähnlicher Weise Datenfehler registrieren. Durch Konfigurieren des entsprechenden Satzes von Speicherzellen, um die individuell angepassten Lesestufen zu verwenden, kann der Leseabtastvorgang potenzielle Datenfehler verhindern, vermeiden oder korrigieren. In einer Ausführungsform bestimmt der Leseabtastvorgang reaktiv die angepassten Lesestufen, die angepasste Lesestufe B 702, die angepasste Lesestufe E 704 und die angepasste Lesestufe G 706, nachdem eine Bitfehlerrate einen Schwellenwert überschritten hat. In einer anderen Ausführungsform bestimmt der Leseabtastvorgang die angepassten Lesestufen proaktiv basierend auf Betriebsbedingungen und Medieneigenschaften für einen entsprechenden Satz von Speicherzellen.
  • Wie hier veranschaulicht, kann eine zunehmende Schwellenspannungsverschiebung 720 des Speicherzustands A eine Anpassung 714 erfordern, die zu einer angepassten Lesestufe B 702 führt (wobei die Lesestufe B den Übergang zwischen dem Speicherzustand A und dem Speicherzustand B abgrenzt). In ähnlicher Weise kann eine zunehmende Schwellenspannungsverschiebung 720 des Speicherzustands D eine Anpassung 716 an die angepasste Lesestufe E 704 erfordern. Eine abnehmende Schwellenspannungsverschiebung 722 in den Speicherzustand G kann andererseits eine Anpassung 718 an die angepasste Lesestufe G 706 basierend auf dem veranschaulichten Beispiel in 7 erfordern.
  • Man kann beobachten, dass die zunehmende Schwellenspannungsverschiebung 720 des Speicherzustands A 728 häufig mit einer zunehmenden Schwellenspannungsverschiebung 720 des Speicherzustands D 730 einhergeht. Diese Verschiebungen sind ein Beispiel für eine Korrelation. „Korrelation“ Bezug auf eine Beziehung Bezug, die zwischen Phänomenen, Attributen, Verhalten oder Elementen oder zwischen mathematischen oder statistischen Variablen besteht, die dazu neigen, zu variieren, verknüpft zu werden oder zusammen auf eine Art und Weise auftreten, die allein aufgrund der Zufälligkeit nicht erwartet wird. („Correlation“ Merriam-Webster.com Dictionary, Merriam-Webster, Zugriffsdatum 10 Apr. 2020. Bearbeitet.)
  • Eine Beziehung/Korrelation kann auf vielfältige Weise dargestellt werden, einschließlich durch Verwendung von Zahlen, Formeln, Graphen, Diagrammen oder dergleichen. In bestimmten Ausführungsformen kann die Korrelation eine Einwegbeziehung zwischen einem ersten Element und einem zweiten Element darstellen, was bedeutet, dass die Korrelation von dem ersten Element zu dem zweiten Element, aber nicht von dem zweiten Element zu dem ersten Element besteht. In anderen Ausführungsformen kann die Korrelation eine bidirektionale Beziehung zwischen einem ersten Element und einem zweiten Element darstellen, was bedeutet, dass die gleiche Korrelation beim Vergleichen des ersten Elements mit dem zweiten Element und von dem zweiten Element mit dem ersten Element besteht.
  • In bestimmten Ausführungsformen stellt die Korrelation eine Größe und/oder Änderungsrate eines Attributs oder Verhaltens zwischen zwei oder mehr Elementen dar. Korrelationen können durch Testen und Analysieren von Ergebnissen aus normaler Verwendung, Experimenten, maschinellem Lernen oder dergleichen beobachtet oder abgeleitet werden. Korrelationen zwischen zwei Elementen, wie Speicherzellen, Schwellenspannungen, Speicherchips, Speicherzuständen, Zellenschwellenspannungsverteilungen oder dergleichen, können als positive Korrelationen oder negative Korrelationen gekennzeichnet werden.
  • Insbesondere, da die zunehmende Schwellenspannungsverschiebung 720 des Speicherzustands A in der gleichen Richtung auftritt wie die zunehmende Schwellenspannungsverschiebung 720 des Speicherzustands D, wird die Korrelation zwischen ihnen als eine positive Verschiebungskorrelation 724 bezeichnet. „Positive Korrelation“ nimmt auf eine Korrelation Bezug, bei der zwei oder mehr korrelierte Elemente in gleicher Weise auf einen bestimmten Einfluss, eine Umgebung, eine Aktion oder Reize reagieren. Wenn zum Beispiel Schwellenspannungen von Speicherzellen durch Zellenschwellenspannungsverteilungen dargestellt werden und die Zellenschwellenspannungsverteilungen auf Speicherzustände abgebildet werden, sind Speicherzellen innerhalb eines ersten Speicherzustands positiv mit Speicherzellen innerhalb eines zweiten Speicherzustands korreliert, wenn sich das korrelierte Attribut für die Speicherzellen des ersten Speicherzustands und die Speicherzellen des zweiten Speicherzustands in der gleichen Richtung ändert.
  • Anders ausgedrückt: wenn das korrelierte Attribut für die Speicherzellen des ersten Speicherzustands zunimmt und das korrelierte Attribut für die Speicherzellen des zweiten Speicherzustands zunimmt, handelt es sich um eine positive Korrelation. In bestimmten Ausführungsformen kann das korrelierte Attribut eine Schwellenspannung oder eine Änderung einer Zellenschwellenspannungsverteilung für einen Satz von Speicherzellen in einem Speicherzustand umfassen.
  • Man kann beobachten, dass eine zunehmende Schwellenspannungsverschiebung 720 des Speicherzustands D 730 oft von einer abnehmenden Schwellenspannungsverschiebung 722 des Speicherzustands G 732 begleitet wird. Diese Beziehung ist ein weiteres Beispiel für eine Korrelation. Da die zunehmende Schwellenspannungsverschiebung 720 im Speicherzustand D 730 und die abnehmende Schwellenspannungsverschiebung 722 im Speicherzustand G 732 in entgegengesetzten Richtungen auftreten, wird diese Korrelation als negative Verschiebungskorrelation 726 bezeichnet. „Negative Korrelation“ nimmt auf eine Korrelation Bezug, bei der zwei oder mehr korrelierte Elemente gegenläufig auf einen bestimmten Einfluss, eine Umgebung, eine Aktion oder Reize reagieren. Wenn, zum Beispiel Schwellenspannungen von Speicherzellen durch Zellenschwellenspannungsverteilungen dargestellt werden und die Zellenschwellenspannungsverteilungen auf Speicherzustände abgebildet werden, sind Speicherzellen innerhalb eines ersten Speicherzustands negativ mit Speicherzellen innerhalb eines zweiten Speicherzustands korreliert, wenn sich das korrelierte Attribut für die Speicherzellen des ersten Speicherzustands und die Speicherzellen des zweiten Speicherzustands in die entgegengesetzte Richtung ändert.
  • Anders ausgedrückt: wenn das korrelierte Attribut für die Speicherzellen des ersten Speicherzustands zunimmt und das korrelierte Attribut für die Speicherzellen des zweiten Speicherzustands abnimmt, handelt es sich um eine negative Korrelation. In bestimmten Ausführungsformen kann das korrelierte Attribut eine Schwellenspannung oder eine Änderung einer Zellenschwellenspannungsverteilung für einen Satz von Speicherzellen in Speicherzuständen umfassen.
  • Positive Verschiebungskorrelation 724 und Negative Verschiebungskorrelation 726 sind beide Beispiele für Verschiebungskorrelationen. „Verschiebungskorrelation“ nimmt auf eine Korrelation Bezug, bei der Speicherzellen einer Zellenschwellenspannungsverteilung innerhalb eines ersten Speicherzustands als Reaktion auf den Zeitablauf die Schwellenspannung ändern oder verschieben (entweder ansteigend oder abfallend), als Antwort auf ein Verstreichen der Zeit oder die Verwendung einer Speichervorrichtung auf eine Weise, die mit einer Änderung oder Verschiebung der Schwellenspannung (entweder ansteigend oder abfallend) für Speicherzellen einer Zellenschwellenspannungsverteilung innerhalb eines zweiten Speicherzustands korreliert. Eine Verschiebungskorrelation kann zwischen zwei beliebigen Speicherzuständen bestehen, die für einen Satz von Speicherzellen verwendet werden.
  • In bestimmten Ausführungsformen kann die Korrelation durch eine Größe und/oder Änderungsrate eines Attributs oder Verhaltens zwischen zwei oder mehr Elementen dargestellt werden. Die Größe eines Wertes, der eine Korrelation darstellt, kann sich direkt auf die Stärke oder Schwäche der Korrelation beziehen. Ebenso können positive Korrelationen durch positive Werte für eine Korrelation und negative Korrelationen durch negative Werte für eine Korrelation dargestellt werden. In einer Ausführungsform wird eine Korrelation durch einen Korrelationsfaktor dargestellt. „Korrelationsfaktor“ nimmt auf einen Wert Bezug, der ein korreliertes Attribut modifiziert, wenn das korrelierte Attribut mit dem Korrelationsfaktor multipliziert wird, sodass das korrelierte Attribut eine Korrelation berücksichtigt, die dem Korrelationsfaktor zugeordnet ist. Zum Beispiel kann in einer Ausführungsform das korrelierte Attribut eine Lesestufe sein. Jede Lesestufe kann eine Grenze zwischen zwei benachbarten Speicherzuständen markieren.
  • Ein Korrelationsfaktor kann darstellen, wie sich ein Speicherzustand auf einen anderen Speicherzustand bezieht, sodass das Multiplizieren des Korrelationsfaktors mit einer aktuellen Lesestufe zu einer korrelierten Lesestufe führt, die modifiziert wurde, um die Korrelation zu berücksichtigen. Ein Korrelationsfaktor kann eine reelle Zahl sein und kann eine positive Zahl sein, die eine positive Korrelation widerspiegelt, eine negative Zahl, die eine negative Korrelation widerspiegelt, eine Null, die keine Korrelation darstellt, oder eine 1, die eine vollständige Korrelation darstellt. Korrelationsfaktoren können hilfreich beim Modifizieren eines Werts sein, um eine Korrelation widerzuspiegeln. Zum Beispiel kann in einer Ausführungsform der Wert mit einem Korrelationsfaktor multipliziert werden, sodass der Wert dann die Korrelation berücksichtigt.
  • Korrelationen können durch eine Vielzahl von Verfahren als Korrelationsfaktoren bestimmt und quantifiziert werden. Es können Forschungs- und Entwicklungstests eines Speicherdesigns durchgeführt werden. Eine Analytik kann aus Vorrichtungen entnommen werden, die auf dem Feld betrieben werden. Es kann eine großtechnische Experimentierung durchgeführt werden. Es kann maschinelles Lernen angewendet werden. Korrelationen, die durch diese Verfahren bestimmt werden, können dann verwendet werden, um die hierin offenbarte Lösung zu implementieren.
  • 8 zeigt ein Beispiel für Korrelationen zwischen den Speicherzuständen 800 und Anpassungen an Lesestufen für einen Satz von mehrstufigen Speicherzellen von nichtflüchtigen Speichermedien. In 7 kann eine Änderung der Schwellenspannung für Speicherzellen zu einer Verschiebung der Schwellenspannungen und der entsprechenden Zellenschwellenspannungsverteilung(en) führen, z. B. den Kurven.
  • 8 veranschaulicht ein weiteres Änderungsphänomen für Speicherzellen und die entsprechende(n) Zellenschwellenspannungsverteilung(en), z. B. die Kurven. 8 veranschaulicht, dass gewisse Speicherzustände eine Korrelation zu einem anderen Speicherzustand basierend auf einer Verbreiterung oder Verengung der Zellenschwellenspannungsverteilung(en) aufweisen können, hierin als Breitenkorrelationen bezeichnet. Fachleute können erkennen, dass bestimmte Technologien nichtflüchtiger Speichermedien die eine oder die andere oder beide der Arten von Breitenkorrelationen (Verbreiterung und Verengung) erfahren können oder nicht. Die hierin offenbarten und beanspruchten Konzepte gelten jedoch für Technologien nichtflüchtiger Speichermedien, welche die eine oder die andere oder beide der Breitenkorrelationen erfahren. „Breitenkorrelation“ nimmt auf eine Korrelation Bezug, in der Speicherzellen einer Zellenschwellenspannungsverteilung innerhalb eines ersten Speicherzustands die Schwellenspannung in einer Weise ändern, die eine Kurve, die eine Zellenschwellenspannungsverteilung innerhalb des ersten Speicherzustands darstellt, als Reaktion auf den Zeitablauf erweitert oder verengt, oder der Verwendung einer Speichervorrichtung auf eine Weise, die mit einer Änderung der Schwellenspannung auf eine Weise korreliert, die eine Kurve erweitert oder verengt, die eine Zellenschwellenspannungsverteilung innerhalb des zweiten Speicherzustands darstellt.
  • In dem veranschaulichten Beispiel wurden Anpassungen zum Erstellen der angepassten Lesestufe B 802, der angepassten Lesestufe E 804 und der angepassten Lesestufe G 806 vorgenommen. Die vorherigen Lesestufen werden auch als vorherige Lesestufe B 808, vorherige Lesestufe E 810 und vorherige Lesestufe G 812 angegeben. Der Leseabtastvorgang bestimmt in einer Ausführungsform unterschiedliche Anpassungen der vorherigen Lesestufen, was zu den angepassten Lesestufen führt. Der Leseabtastvorgang kann die Anpassung 814, die Anpassung 816 und die Anpassung 818 individuell für die verschiedenen Speicherzustände B, E und G mit verschiedenen Größen, verschiedenen Richtungen und dergleichen bestimmen, wobei die verschiedenen Anpassungsstufen, die angepasste Lesestufe B 802, die angepasste Lesestufe E 804, die angepasste Lesestufe G 806 individuell an Medieneigenschaften der verschiedenen Speicherzustände B, E und G angepasst werden. Jeder Speicherzustand Er, A, b, C usw. bis O, wie in 4 veranschaulicht, kann diese Behandlung empfangen. Hier ist der Einfachheit halber eine Teilmenge der Speicherzustände Er bis G veranschaulicht. Die angepassten Lesestufen stimmen mit den geänderten Zellenschwellenspannungsverteilungen überein.
  • Während 7 das Verschieben von Speicherzuständen und Verschiebungskorrelationen zwischen Speicherzuständen veranschaulicht, veranschaulicht 8 ein Beispiel von Korrelationen zwischen Speicherzuständen basierend auf einer Änderung der Breite von zwei Zellenschwellenspannungsverteilungen. Einige Speicherzustände können eine zunehmende Breite 820 aufweisen, während andere eine abnehmende Breite (Verengung) 822 aufweisen. Im veranschaulichten Beispiel kann eine zunehmende Breite 820 des Speicherzustands A 824 die Anpassung 814 erfordern, was zu der angepassten Lesestufe B 802 führt. Eine zunehmende Breite 820 im Speicherzustand D 826 kann in ähnlicher Weise zu einer angepassten Lesestufe E 804 führen, während eine abnehmende Breite (Verengung) 822 des Speicherzustands G 830 eine angepasste Lesestufe G 806 ergeben kann.
  • Man beachte, dass die zunehmende Breite 820 des Speicherzustands A 824 häufig mit einer zunehmenden Breite 820 des Speicherzustands D 826 einhergeht. Diese Breitenverhältnisse sind ein Beispiel für eine Korrelation. Insbesondere, da die zunehmende Breite 820 des Speicherzustands A 824 in der gleichen Richtung auftritt wie die zunehmende Breite 820 des Speicherzustands D 826, wird die Korrelation zwischen ihnen als Korrelation einer positiven Breite 828 bezeichnet.
  • Man beachte, dass eine zunehmende Breite 820 des Speicherzustands D 826 oft mit einer abnehmenden Breite (Verengung) 822 des Speicherzustands G 830 einhergeht. Diese Beziehung ist ein weiteres Beispiel für eine Korrelation. Da die zunehmende Breite 820 des Speicherzustands D 826 und die abnehmende Breite (Verengung) 822 im Speicherzustand G 830 in entgegengesetzten Richtungen auftreten, wird diese Korrelation als negative Breitenkorrelation 832 bezeichnet.
  • 9 und 10 veranschaulichen eine Verschiebungskorrelationstabelle 900 bzw. eine Breitenkorrelationstabelle 1000. Eine Ausführungsform kann eine oder beide einer Verschiebungskorrelationstabelle 900 und einer Breitenkorrelationstabelle 1000 oder einer Tabelle, die Korrelationsfaktoren aus beiden kombiniert, verwenden. In einer Ausführungsform speichern die Verschiebungskorrelationstabelle 900 und die Breitenkorrelationstabelle 1000 Korrelationsfaktoren, die verwendet werden, um die Leseabtastvorgänge zu verbessern. Verschiebekorrelationstabelle 900 und Breitenkorrelationstabelle 1000 sind nur Beispiele für eine Vielfalt möglicher Typen von Korrelationsdatenstrukturen, die Ausführungsformen der beanspruchten Lösung verwenden können.
  • „Korrelationsdatenstruktur‟ nimmt auf eine Datenstruktur Bezug, die eingerichtet ist, um einen oder mehrere Korrelationsfaktoren und einen Index zum Identifizieren des Korrelationsfaktors für eine bestimmte Korrelation zwischen zwei Objekten oder Elementen zu speichern. In einer Ausführungsform kann eine Korrelationsdatenstruktur eine Tabelle, ein Array, eine Liste, eine verknüpfte Liste, Teil eines Speichers, eine Datenbank oder dergleichen sein. Ein Index für die Korrelationsdatenstruktur für Korrelationsfaktoren zwischen Speicherzuständen kann eine Zeilenkennung für einen Speicherzustand der Korrelationsdatenstrukturtabelle umfassen, und ein korrelierter Speicherzustand kann eine Spalte der Korrelationsdatenstrukturtabelle umfassen.
  • In jeder Tabelle stellen die Zeilen einen Anfangsspeicherzustand dar und die Spalten stellen einen Endspeicherzustand dar, für den eine Korrelation besteht, die durch den Korrelationsfaktor erfasst wird, der in der Zelle gespeichert ist, in der sich Zeile und Spalte überschneiden. In einer beispielhaften Ausführungsform kann ein Null-Korrelationsfaktor anzeigen, dass keine Korrelation vorliegt, eine Größe des Korrelationsfaktors kann die Stärke der Korrelation anzeigen oder um wieviel ein Attribut anzupassen ist (z. B. Verschiebung, Breite usw.), um die Korrelation zu berücksichtigen, und ein positiver Korrelationsfaktorwert kann eine positive Korrelation darstellen und ein negativer Korrelationsfaktorwert kann eine negative Korrelation darstellen.
  • Im Allgemeinen ist der Anfangsspeicherzustand, der Zeilenspeicherzustand, ein Speicherzustand, für den eine optimale Lesestufe durch ein oder mehrere oder Teile einer Vielfalt von Verfahren bestimmt wurde. Sobald diese optimale Lesestufe für den Anfangsspeicherzustand bestimmt ist, können die Verschiebungskorrelationstabelle 900 und/oder die Breitenkorrelationstabelle 1000 verwendet werden, um die Korrelation zwischen dem Anfangsspeicherzustand und dem Endspeicherzustand zu berücksichtigen und die Korrelation zu nutzen, um eine optimale Lesestufe für den Endspeicherzustand zu bestimmen.
  • Beispielhaft sei ein Anfangsspeicherzustand 902, Speicherzustand D, bestimmt worden, und ein Leseabtastvorgang wurde eingerichtet, um Korrelationen zwischen Speicherzuständen beim Bestimmen einer Lesestufe für einen Endspeicherzustand 904, Speicherzustand G, zu nutzen. Der Leseabtastvorgang kann die Verschiebungskorrelationstabelle 900 abfragen und die Zeile für den Speicherzustand D lokalisieren und den Wert lesen, der sich mit der Spalte überschneidet, die dem Speicherzustand G entspricht. Der Eintrag ist ein Verschiebungskorrelationsfaktor 906 und zeigt an, dass, wenn sich der Anfangsspeicherzustand 902 verschiebt, sich dann, basierend auf einer Korrelation, der Endspeicherzustand 904 in eine entgegengesetzte Richtung verschiebt, eine negative Korrelation. Die negative Korrelation wird durch den negativen Wert 150 angezeigt. In diesem Beispiel kann der Verschiebungskorrelationsfaktor 906 (z. B. -150 mV, wie veranschaulicht) anzeigen, dass der Speicherzustand G in Bezug auf den Speicherzustand D eine negative Verschiebung von 150 mV erfährt (Verschiebungen bei durchschnittlicher Spannung um etwa -150 mV nach unten). Der Leseabtastvorgang kann diesen Korrelationsfaktor nutzen, um einen Abtastvorgang zu optimieren, um eine optimale Lesestufe für den Speicherzustand G zu bestimmen.
  • 10 veranschaulicht eine Breitenkorrelationstabelle 1000 mit Korrelationsfaktor, der Breitenkorrelationen zwischen Speicherzuständen berücksichtigt. Als ein Beispiel sei ein Anfangsspeicherzustand 1002, Speicherzustand D, bestimmt worden, und ein Leseabtastvorgang wurde eingerichtet, um Korrelationen zwischen Speicherzuständen beim Bestimmen einer Lesestufe für einen Endspeicherzustand 1004, Speicherzustand J, zu nutzen.
  • Der Leseabtastvorgang kann die Verschiebungskorrelationstabelle 1000 abfragen und die Zeile für den Speicherzustand D lokalisieren und den Wert lesen, der sich mit der Spalte überschneidet, die dem Speicherzustand J entspricht. Der Eintrag ist ein Breitenkorrelationsfaktor 1006 und zeigt an, dass, wenn sich der Anfangsspeicherzustand 1002 erweitert, sich dann, basierend auf einer Korrelation, auch der Endspeicherzustand 1004 um einen Korrelationsfaktor von 1,1016 erweitert, eine positive Korrelation. Die positive Korrelation wird durch den positiven Wert größer als 1 angezeigt. In diesem Beispiel kann der Breitenkorrelationsfaktor 1006 (z. B. 1,1016, wie veranschaulicht) anzeigen, dass der Speicherzustand J eine Erweiterung des 1,1016-fachen der Erweiterung erfährt, die der Speicherzustand D erfährt. Der Leseabtastvorgang kann diesen Korrelationsfaktor nutzen, um einen Abtastvorgang zu optimieren, um eine optimale Lesestufe für den Speicherzustand J zu bestimmen.
  • Wenn ein Leseabtastvorgang bestimmt, wie sich ein Ausgangsspeicherzustand (z. B. Zustand D) verschoben hat oder wie weit sich der bekannte Zustand verbreitert/verengt hat, können Schätzungen für andere korrelierte unbekannte Speicherzustände vorgenommen werden. Diese Schätzungen können weitere Leseabtastvorgänge erleichtern oder sogar in bestimmten Ausführungsformen eine Notwendigkeit für weitere Leseabtastvorgänge für den Speicherendzustand vermeiden.
  • Auf diese Weise kann ein Leseabtastvorgang eine Korrelation zwischen zwei Speicherzuständen als Ausgangspunkt für die Analyse nutzen. Dies kann in einer Ausführungsform ermöglichen, dass die beste Stelle für diese Lesestufen unter Verwendung von weniger Iterationen oder enger beabstandeten Lesestufenfenstern für einen Valley-Suchvorgang bestimmt wird. In einer anderen Ausführungsform kann der durch die Verwendung dieser Tabellen (Verschiebungskorrelationstabelle 900, Breitenkorrelationstabelle 1000) angegebene Ort eine Optimierung eines BES-Leseabtastvorgangs ermöglichen.
  • 11 veranschaulicht einen Leseabtastvorgang 1100 gemäß einer Ausführungsform. Der veranschaulichte Leseabtastvorgang 1100 kann die Verwendung einer optimalen Lesestufe umfassen, der innerhalb des ersten Lesestufenfensters 1102 bestimmt wird, um ein anderes Lesestufenfenster, wie das zweite Lesestufenfenster 1104, effizienter abzutasten.
  • Ein Leseabtastvorgang kann Lesestufen innerhalb des ersten Lesestufenfensters 1102 abtasten, wobei er auf eine erste Kandidatenlesestufe unter den Kandidatenlesestufen 1106 prüft, welche die geringste Anzahl von Speicherzellen in Bezug auf andere Kandidatenlesestufen 1106 innerhalb des ersten Lesestufenfensters 1102 aktiviert. Dieses erste Lesestufenfenster 1102 kann eingerichtet sein, um Kandidatenlesestufen 1106 zwischen benachbarten Speicherzuständen 1108, Speicherzustand C und Speicherzustand D zu testen, um eine optimale Lesestufe D 1110 zu lokalisieren.
  • Sobald ein Leseabtastvorgang die Lesestufe D 1110 bestimmt, kann der Leseabtastvorgang ein zweites Lesestufenfenster 1104 basierend auf einer Korrelation zwischen mindestens einem der zwei benachbarten Speicherzustände 1108 (z. B. C oder D) und einem oder mehreren anderen benachbarten Speicherzuständen 1108, die dem zweiten Lesestufenfenster 1104 (z. B. J und K) zugeordnet sind, einrichten. Vorteilhafterweise ermöglicht die Korrelation in einer Ausführungsform, dass das zweite Lesestufenfenster 1104 kleiner ist, z. B. weniger Kandidatenlesestufen 1112 einschließt, als eine Korrelation, die nicht verwendet wurde, um das zweite Lesestufenfenster 1104 einzurichten.
  • Als nächstes tastet der Abtastvorgang ein zweites Lesestufenfenster 1104 ab. Das Abtasten des eingerichteten zweiten Lesestufenfensters 1104 für eine zweite Kandidatenlesestufe kann das Bestimmen einer zweiten Kandidatenlesestufe einschließen, welche die geringste Anzahl von Speicherzellen in Bezug auf die anderen Kandidatenlesestufen 1112 innerhalb des zweiten Lesestufenfensters 1104 aktiviert. Sobald der Leseabtastvorgang eine optimale Lesestufe D 1110 und eine optimale Lesestufe K 1114 bestimmt, richtet der Leseabtastvorgang einen Lesevorgang ein, um die optimale Lesestufe D 1110 und die optimale Lesestufe K 1114 zu verwenden.
  • In einer Ausführungsform kann das Einrichten des zweiten Lesestufenfensters 1104 das Bestimmen eines Korrelationsfaktors basierend auf einer Kennung für einen der zwei benachbarten Speicherzustände 1108 einschließen, die dem ersten Lesestufenfenster 1102 zugeordnet sind (Speicherzustand C und Speicherzustand D). Diese Kennung kann auf ein Etikett bezogen sein, wenn der Speicherzustand gegeben ist, wie etwa „C“ oder „D“ in dem veranschaulichten Beispiel, oder auf eine andere eindeutige Kennung für den Speicherzustand. Korrelationsfaktoren können in einer Ausführungsform unter Verwendung einer Korrelationsdatenstruktur, wie einer Verschiebungskorrelationstabelle 900 und/oder einer Breitenkorrelationstabelle 1000, bestimmt werden.
  • Der Leseabtastvorgang kann einen bestimmten Korrelationsfaktor auf das zweite Lesestufenfenster 1104 anwenden, so dass die Korrelation die Kandidatenlesestufen 1112 des zweiten Lesestufenfensters 1104 beeinflusst. Für das zweite Lesestufenfenster 1104 können beispielsweise die Kandidatenlesestufen 1112 #23', #24', #25', #26' und #27' um eine projizierte Schwellenspannung, z. B. #25', zentriert werden, die unter Verwendung des Korrelationsfaktors zwischen Speicherzustand C und Speicherzustand J, oder Speicherzustand C und Speicherzustand K, oder Speicherzustand D und Speicherzustand J, und Speicherzustand D und Speicherzustand K bestimmt wird.
  • In einer Ausführungsform wird der Korrelationsfaktor verwendet, um den Abstand zwischen Kandidatenlesestufen 1112, (z. B. #23' bis #27') zu verengen, und/oder kann verwendet werden, um weniger Kandidatenlesestufen abzutasten (z. B. 4 gegenüber 7, 4, weil #25' eine Startlesestufe ist). Folglich ist das zweite Lesestufenfenster 1104 kleiner, weist weniger Kandidatenlesestufen 1112 auf als ein Lesestufenfenster ohne Verwendung einer Korrelation und/oder eines Korrelationsfaktors und führt zu einer schnelleren Abtastzeit.
  • In einer Ausführungsform kann das Anwenden des Korrelationsfaktors das Multiplizieren einer Kandidatenlesestufe des zweiten Lesestufenfensters 1104 mit dem Korrelationsfaktor umfassen. In einer anderen Ausführungsform kann das Anwenden des Korrelationsfaktors das Ändern einer vordefinierten Reihenfolge zum Testen/Prüfen der Kandidatenlesestufen 1112 des zweiten Lesestufenfensters 1104 umfassen, sodass Kandidatenlesestufen, die Korrelation einschließen, beim Abtasten verwendet werden.
  • In einer Ausführungsform kann ein Leseabtastvorgang Kandidatenlesestufen 1112 in einer vordefinierten Reihenfolge abtasten. Zum Beispiel kann die vordefinierte Reihenfolge zwischen einer Kandidatenlesestufe mit einer hohen Schwellenspannung und einer Kandidatenlesestufe mit einer niedrigen Schwellenspannung wechseln (z. B.# 24',# 26',# 23',# 27'). In einer Ausführungsform kann das Anwenden eines Korrelationsfaktors zum Einrichten eines zweiten Lesestufenfensters 1104 das Ändern der vordefinierten Reihenfolge in eine neue Reihenfolge basierend auf dem Korrelationsfaktor einschließen. Zum Beispiel sei angenommen, dass eine Korrelation eine negative Verschiebungskorrelation (z. B. negative Verschiebungskorrelation 726) ist. In einer Ausführungsform kann der Leseabtastvorgang eingerichtet sein, um die vordefinierte Reihenfolge zu ändern, um die negative Verschiebungskorrelation zu nutzen, sodass die geänderte Reihenfolge von Kandidatenlesestufen #24', #23', #26', #27'' sein kann, sodass die Kandidaten für eine niedrigere Schwellenspannung vor den Kandidaten für eine höhere Schwellenspannung untersucht werden. In einem anderen Beispiel können, wenn eine Korrelation eine starke Wahrscheinlichkeit anzeigt, dass ein Speicherzustand eine Verbreiterung erfahren kann, zuerst die äußersten Kandidaten verwendet werden, und die Abtastung kann ihren Weg nach innen bearbeiten.
  • In einer Ausführungsform gibt eine Korrelation eine Wahrscheinlichkeit an, dass eine zweite Kandidatenlesestufe optimaler sein kann als eine erste Kandidatenlesestufe. In einer solchen Ausführungsform kann ein Leseabtastvorgang eine vordefinierte Reihenfolge ändern, indem iterativ eine erste Kandidatenlesestufe als Reaktion darauf geprüft wird, dass die zweite Kandidatenlesestufe die geringste Anzahl von Speicherzellen in Bezug auf andere Kandidatenlesestufen innerhalb des zweiten Lesestufenfensters 1104 aktiviert.
  • In dem Beispiel von 11 Korrelationen zwischen dem einen oder dem anderen von Speicherzustand C und Speicherzustand D und dem einen oder dem anderen von Speicherzustand J und Speicherzustand K. In einer Ausführungsform kann die Auswahl einer Korrelation zur Verwendung zwischen zwei Zuständen auf Attributen der Korrelationen basieren. Wenn die Korrelationen zwischen zwei Zuständen symmetrisch sind, was bedeutet, dass eine Korrelation von Speicherzustand A zu Speicherzustand J eine Inverse einer Korrelation von Speicherzustand J zu Speicherzustand A ist, dann gibt es vier mögliche Korrelationen zwischen dem einen oder dem anderen Speicherzustand C und Speicherzustand D und dem einen oder dem anderen Speicherzustand J und Speicherzustand K. Wenn die Korrelationen nicht symmetrisch sind, so gibt es acht mögliche Korrelationen.
  • In einer solchen Situation kann der Leseabtastvorgang eine Korrelation verwenden, die eine stabilste Korrelation zwischen zwei betrachteten Speicherzuständen ist. „Stabile Korrelation“ nimmt Bezug auf eine Korrelation, die eine Genauigkeitsrate und/oder einen Satz historischer Test- oder Unterstützungsdaten umfasst, so dass die Korrelation für eine Mehrheit zukünftiger Fälle gilt.
  • Basierend auf einem Stabilitätsmaß für die möglichen Korrelationen kann ein Leseabtastvorgang einen ersten Speicherzustand aus den zwei benachbarten Speicherzuständen und einen zweiten Speicherzustand aus den anderen benachbarten Speicherzuständen, die dem zweiten Lesestufenfenster zugeordnet sind, als Reaktion darauf auswählen, dass der erste Speicherzustand und der zweite Speicherzustand eine stabile Korrelation aufweisen. In dem in 11 veranschaulichten Beispiel kann es zwischen den Speicherzuständen C und D (benachbarten Speicherzuständen) und den Speicherzuständen J und K (anderen benachbarten Speicherzuständen) zwischen einer und acht Korrelationen geben. Wenn eine Korrelation zwischen Speicherzustand C und Speicherzustand K eine stabile Korrelation und/oder eine stabilere Korrelation als andere Korrelationen aufweist, die verwendet werden können, kann der Leseabtastvorgang die Korrelation zwischen Speicherzustand C und Speicherzustand K verwenden, um das zweite Lesestufenfenster 1104 einzurichten.
  • 12 ist ein Blockdiagramm einer beispielhaften Speichervorrichtung 200. Viele der Komponenten, welche die Speichervorrichtung 200 umfassen, können effektiv arbeiten, wie in Bezug auf 1 und 2 beschrieben. Die Speichervorrichtung 200 kann jedoch eine Chipsteuerung 1202 einschließen, die gemäß einer Ausführungsform der beanspruchten Lösung eingerichtet ist. Die Chipsteuerung 1202 kann eine Zustandsmaschine 214, eine Leseabtastschaltung 1204 und einen flüchtigen Speicher 1206 einschließen. Der flüchtige Speicher 1206 kann verwendet werden, um auf eine Korrelationsdatenstruktur 1208 zuzugreifen.
  • Das nichtflüchtige Speicherarray 206 kann ein dreidimensionales Speicherarray sein, das eine Anzahl von Speicherzellen umfasst. Diese Speicherzellen können vierstufige Zellen sein, so dass jede Speicherzelle vier Datenbits speichern kann, wie in Bezug auf 4 und 5 beschrieben. Die Chipsteuerung 1202 kann eingerichtet sein, um Speichervorgänge auf den Speicherzellen des nichtflüchtigen Speicherarrays 206 (dreidimensionales Speicherarray) auszuführen.
  • Die Chipsteuerung 1202 kann mit den Lese-/Schreibschaltungen 208 zusammenwirken, um Speichervorgänge an diesen Speicherzellen durchzuführen, und kann eine Zustandsmaschine 214 einschließen, die eine Steuerung von Speichervorgänge auf Chipebene bereitstellt. In einer Ausführungsform ist die Leseabtastschaltung 1204 eingerichtet, um eine oder mehrere Lesestufen zwischen Speicherzuständen anzupassen. In einer Ausführungsform implementiert die Leseabtastschaltung 1204 einen Valley-Suchvorgang, um zu bestimmen, ob Lesestufen anzupassen sind oder nicht.
  • Die Leseabtastschaltung 1204 der Chipsteuerung 1202 kann eingerichtet sein, um iterativ einen Satz von Speicherzellen unter Verwendung eines ersten Satzes von Kandidatenlesestufen abzutasten, bis eine Kandidatenlesestufe eine geringste Anzahl von Speicherzellen in Bezug auf andere Kandidatenlesestufen innerhalb des ersten Satzes aktiviert. Die Leseabtastschaltung 1204 kann dann eine erste Lesestufe für einen ersten Speicherzustand basierend auf der Kandidatenlesestufe bestimmen, welche die geringste Anzahl von Speicherzellen aktiviert.
  • Ein flüchtiger Speicher 1206, der mit der Leseabtastschaltung 1204 gekoppelt ist, kann eine Korrelationsdatenstruktur 1208 umfassen, die eingerichtet ist, um Korrelationsfaktoren für einen oder mehrere und potenziell jeden Speicherzustand für den Satz von Speicherzellen zu speichern. Die Korrelationsfaktoren, die in der Korrelationsdatenstruktur 1208 gespeichert sind, können Korrelationen zwischen Speicherzuständen darstellen, und das Multiplizieren einer Kandidatenlesestufe mit dem Korrelationsfaktor kann die Kandidatenlesestufe modifizieren, um die Korrelation zu berücksichtigen.
  • Die Leseabtastschaltung 1204 kann in einer Ausführungsform eingerichtet sein, um eine Korrelation zwischen dem ersten Speicherzustand und einem zweiten Speicherzustand abzurufen. Die Leseabtastschaltung 1204 kann die Korrelation aus der Korrelationsdatenstruktur 1208 abrufen. Die Verschiebekorrelationstabelle 900 und die Breitenkorrelationstabelle 1000 sind zwei Beispiele für die Korrelationsdatenstruktur 1208.
  • Als Nächstes kann die Leseabtastschaltung 1204 eine zweite Lesestufe für den zweiten Speicherzustand unter Verwendung der Korrelation bestimmen. Diese Korrelation kann in der Korrelationsdatenstruktur 1208 (z. B. Verschiebekorrelationstabelle 900 und/oder Breitenkorrelationstabelle 1000) gespeichert sein, die im flüchtigen Speicher 1206 verfügbar ist. Das Bestimmen eines Korrelationsfaktors kann beinhalten, dass die Leseabtastschaltung 1204 die Korrelationsdatenstruktur 1208 basierend auf einer Kennung (z. B. ‚Er‘, ‚A‘, ‚B‘, ‚C‘, usw.) nach einem von zwei benachbarten Speicherzuständen durchsucht, die der abgetasteten/geprüften Lesestufe zugeordnet sind. Die Leseabtastschaltung 1204 kann dann den bestimmten Korrelationsfaktor auf der zweiten Lesestufe anwenden.
  • In bestimmten Ausführungsformen kann eine Leseabtastschaltung 1204 einen Korrelationsfaktor direkt auf eine aktuelle Lesestufe für einen zweiten Speicherzustand anwenden und dadurch die zweite Lesestufe bestimmen, ohne Kandidatenlesestufen für ein zweites Lesestufenfenster zu testen oder zu prüfen. Zum Beispiel kann die Leseabtastschaltung 1204 die aktuelle Lesestufe um den Korrelationsfaktor vervielfachen, der eine Korrelation zwischen dem ersten Speicherzustand und dem zweiten Speicherzustand darstellt. In einer solchen Ausführungsform kann das Bestimmen der zweiten Lesestufe effizienter sein und ermöglicht werden, wenn die Korrelation zwischen zwei Speicherzuständen stark genug ist, um ein Testen der Kandidatenlesestufen für ein zweites Lesestufenfenster 1104 zu überspringen.
  • In bestimmten Ausführungsformen können Leseabtastvorgänge effizienter sein, wenn eine erste Lesestufe für einen ersten Speicherzustand durch gründliches Abtasten, Prüfen oder Testen bestimmt werden kann. Als Nächstes kann eine Korrelation, die so genau wie möglich ist, zwischen dem ersten Speicherzustand und dem zweiten Speicherzustand verwendet werden, um Lesestufen oder Anpassungen an Lesestufen für den zweiten Speicherzustand zu bestimmen. Lesestufen für den zweiten Speicherzustand können in einigen Ausführungsformen basierend auf der Korrelation angepasst werden, wodurch die Notwendigkeit eines gleichermaßen gründlichen (und zeitaufwendigen) Testens für Anpassungen von Lesestufen, die dem zweiten Speicherzustand zugeordnet sind, vermieden wird.
  • In einer Ausführungsform kann die Leseabtastschaltung 1204 die zweite Lesestufe durch Multiplizieren einer aktuellen Lesestufe für den zweiten Speicherzustand mit einem Korrelationsfaktor bestimmen, der für die Korrelation repräsentativ ist. In anderen Ausführungsformen kann die Leseabtastschaltung 1204 die zweite Lesestufe durch Auswählen eines zweiten Satzes von Kandidatenlesestufen basierend auf der Korrelation bestimmen. Dieser zweite Satz von Kandidatenlesestufen kann kleiner als der erste Satz von Kandidatenlesestufen sein (z. B. kann das zweite Lesestufenfenster 1104, wie in 11 veranschaulicht, kleiner als das Lesestufenfenster 608 sein, das in 6 gezeigt ist). Die Leseabtastschaltung 1204 testet iterativ den zweiten Satz von Kandidatenlesestufen, bis die Kandidatenlesestufe eine geringste Anzahl von Speicherzellen in Bezug auf andere Kandidatenlesestufen innerhalb des zweiten Satzes von Kandidatenlesestufen aktiviert, um die zweite Lesestufe für den zweiten Speicherzustand zu bestimmen.
  • Die Leseabtastschaltung 1204 kann somit von der Chipsteuerung 1202 verwendet werden, um die geeignetsten Lesestufen für Speicherzustände zu bestimmen, wie oben für die erste Lesestufe und die zweite Lesestufe beschrieben. Die Chipsteuerung 1202 kann dann mit der Zustandsmaschine 214 und den Lese-/Schreibschaltungen 208 interagieren, um die erste Lesestufe und die zweite Lesestufe sowie andere bestimmte Lesestufen für die Speicherzustände, die durch die Speicherzellen des nichtflüchtigen Speicherarrays 206 ausgedrückt werden, einzustellen. Diese eingestellten Lesestufen können für nachfolgende Lesevorgänge verwendet werden.
  • 13 ist ein schematisches Blockdiagramm eines Speichersystems 1300 gemäß einer Ausführungsform. Das Speichersystem 1300 kann eine Speichervorrichtung 1302 einschließen, die eine Speichersteuerung 1304 und ein nichtflüchtiges Speicherarray 206 umfasst. Die Speichersteuerung 1304 kann ferner eine Lese-/Schreibschaltung 1306, einen Fehlerkorrekturcode-Decoder 1308 und einen Health Manager 1310 einschließlich einer Leseabtastschaltung 1312 umfassen. Fachleute werden erkennen, dass diese Komponenten in bestimmten Ausführungsformen innerhalb anderer Teile der Speichervorrichtung 1302 integriert sein können oder vom Host 106 ausgeführt werden können.
  • „Health Manager“ nimmt auf jegliche/jegliches Hardware, Software, Firmware, Schaltung, Komponente, Modul, Logik, Vorrichtung oder Einrichtung Bezug, die/das eingerichtet, programmiert, entworfen, angeordnet oder konstruiert ist, Konfigurationsparameter für Speicherzellen, einen Speicherchip und/oder eine Speichersteuerung für Speicherzellen zu überprüfen, zu testen, zu prüfen, einzurichten, anzupassen und/oder einzustellen, um die Nützlichkeit, Wirksamkeit und/oder Effizienz einer Speichervorrichtung zu verlängern.
  • Die Lese-/Schreibschaltung 1306 ist eingerichtet, um Speichervorgänge zu bedienen, um Speicherdienste für einen oder mehrere Speicher-Clients 110 bereitzustellen. Die Lese-/Schreibschaltung 1306 kann eingerichtet sein, um Daten in Speicherzellen der Vielzahl von Speicherchips 104 zu schreiben. Die Schreib-/Leseschaltung 1306 koordiniert den Fehlerkorrekturcode-Decoder 1308, um Schreibbefehle und Lesebefehle zu bedienen.
  • Der Health Manager 1310 kann in einer Ausführungsform den guten Zustand der nichtflüchtigen Speichermedien des nichtflüchtigen Speicherarrays 206 verwalten und überwachen. In einer Ausführungsform führt der Health Manager 1310 einen Leseabtastvorgang an einem oder mehreren oder jedem der Speicherblöcke des nichtflüchtigen Speicherarrays 206 aus. Da der Health Manager 1310 Speicherblöcke in einem Zustand erkennt, der mehr Bitfehler verursacht (eine höhere Bitfehlerrate), kann der Health Manager 1310 Lesestufen für Speicherzustände anpassen, um eine Bitfehlerrate zu reduzieren, Daten wiederherzustellen und/oder die Lebensdauer von nichtflüchtigen Speichermedien zu verlängern.
  • Der Health Manager 1310 kann eine Leseabtastschaltung 1312 und eine Kalibrierungsschaltung 1314 einschließen. „Leseabtastschaltung“ nimmt auf jede/jeden/jedes Schaltung, Teilschaltkreis, elektronische Komponente, Hardware, Software, Firmware, Modul, Logik, Vorrichtung oder Einrichtung Bezug, die/der/das eingerichtet, programmiert, entworfen, angeordnet oder konstruiert ist, um einen Leseabtastvorgang auszuführen. „Kalibrierschaltung“ nimmt auf jede/jeden/jedes Schaltung, Teilschaltung, elektronische Komponente, Hardware, Software, Firmware, Modul, Logik, Vorrichtung oder Einrichtung Bezug, die/der/das eingerichtet, programmiert, entworfen, angeordnet oder konstruiert ist, um einen Konfigurationsparameter zu verändern, zu ändern, zu modifizieren, zu aktualisieren, einzurichten oder zu kalibrieren, einschließlich, aber nicht beschränkt auf, eine Lesestufe.
  • Die Leseabtastschaltung 1312 liest Daten aus Speicherblöcken des nichtflüchtigen Speicherarrays 206 und koordiniert den Zustandsmanager 1310, um einen Zustand für die Speicherzellen des Speicherblocks zu bestimmen. Die Leseabtastschaltung 1312 kann einen Leseabtastvorgang implementieren und kann Speicherzustandlesestufen jedes Speicherblocks überprüfen.
  • Die Leseabtastschaltung 1312 kann Daten aus einem Speicherblock lesen, um geeignete Lesestufen zu bestimmen. Zum Beispiel kann in einer Ausführungsform der Health Manager 1310 einen BES-Leseabtastvorgang unter Verwendung der Leseabtastschaltung 1312, der Kalibrierungsschaltung 1314 und des Fehlerkorrekturcode-Decodierers 1308 implementieren. Die Leseabtastschaltung 1312 kann mit dem Fehlerkorrekturcode-Decoder 1308 koordinieren, um eine Bitfehlerrate oder eine geschätzte oder Proxy-Bitfehlerrate für jedes Lesen eines Speicherblocks zu bestimmen, wobei diese Bitfehlerrate als Lesebitfehlerrate bezeichnet werden kann. In einer Ausführungsform bestimmt der Fehlerkorrekturcode-Decoder 1308 die Bitfehlerrate, ohne eine Fehlerkorrektur oder Erkennung vorzunehmen. In einer anderen Ausführungsform bestimmt der Fehlerkorrekturcode-Decoder 1308 die Bitfehlerrate nach dem Versuch oder Abschluss der Fehlerkorrektur oder -erkennung.
  • „Fehlerkorrekturcode-Decoder‟ nimmt Bezug auf jegliche/jegliches Hardware, Software, Firmware, Schaltung, Komponente, Modul, Logik, Vorrichtung oder Einrichtung, die/das eingerichtet, programmiert, entworfen, angeordnet, oder konstruiert ist, um Fehler in einem Datensatz unter Verwendung von Redundanzinformationen zu erfassen und/oder zu korrigieren, die für den Datensatz (z. B. ein Codewort) definiert sind. Der Fehlerkorrekturcode-Decodierer kann in einer Ausführungsform einen oder mehrere Decodierertypen umfassen, einschließlich, aber nicht beschränkt auf, einen Low-Density-Parity-Check- (LDPC) -Decodierer, einen Reed-Solomon-Code-Decodierer, einen Golay-Code-Decodierer, einen Bose-Chaudhuri-Hocquenghem- (BCH) -Code-Decodierer, einen Turbo-Code-Decodierer, einen multidimensionalen Parity-Code-Decodierer, einen Hamming-Code-Decodierer, einen Hadamard-Code-Decodierer, einen Expander-Code-Decodierer, einen Reed-Muller-Code-Decodierer, einen Viterbi-Decodierer, einen Fano-Decodierer oder dergleichen.
  • In einer Ausführungsform verwaltet die Leseabtastschaltung 1312 das nichtflüchtige Speicherarray 206 durch proaktives Einstellen und Anpassen von Konfigurationsparametern für Speicherzellen des nichtflüchtigen Speicherarrays 206. Durch proaktives Bestimmen von Konfigurationsparametern, bevor ein Fehler auftritt, kann die Leseabtastschaltung 1312 verhindern, dass bestimmte Fehler auftreten, ohne dass der Leistungsnachteil des erneuten Versuchens von Lesevorgängen oder des Ausführens anderer Abhilfemaßnahmen für die verhinderten Fehler auftritt. Die Leseabtastschaltung 1312 passt in bestimmten Ausführungsformen Konfigurationsparameter für einen Anwendungsfall der Speichervorrichtung 1302 an, um Speicherzellen für den Anwendungsfall einzurichten, anstatt Standardkonfigurationsparameter zu verwenden.
  • Die Leseabtastschaltung 1312 referenziert eine oder mehrere Medieneigenschaften für einen Satz von Speicherzellen, um einen Konfigurationsparameter für den Satz von Speicherzellen zu bestimmen. Die Leseabtastschaltung 1312 kann als Reaktion auf das Bestimmen eines Konfigurationsparameters für einen Satz von Speicherzellen den Satz von Speicherzellen einrichten, um den bestimmten Konfigurationsparameter zu verwenden. Die Leseabtastschaltung 1312 kann periodisch Medieneigenschaften für einen Satz von Speicherzellen aktualisieren, einen Konfigurationsparameter für den Satz von Speicherzellen aktualisieren und den Satz von Speicherzellen neu einrichten, um den aktualisierten Konfigurationsparameter zu verwenden. Die Leseabtastschaltung 1312 kann Speicherzellen mit Konfigurationsparametern während der Ausführung von Eingabe-/Ausgabevorgängen während eines Startvorgangs als Reaktion auf eine Hintergrundabtastung eines Satzes von Speicherzellen, die eine geänderte Medieneigenschaft anzeigt, oder dergleichen einrichten.
  • In einer Ausführungsform kann der Zustandsmanager 1310 einen BES-Leseabtastvorgang implementieren, der die Leseabtastschaltung 1312 verwendet. Die Leseabtastschaltung 1312 kann iterativ Daten eines Speicherblocks unter Verwendung einer vorbestimmten Anzahl von Kandidatenlesestufen lesen. Die Leseabtastschaltung 1312 kann Kandidatenlesestufen eines Satzes von Kandidatenlesestufen basierend auf einer Korrelation zwischen zwei Speicherzuständen für Speicherzellen des Speicherblocks testen. Der Fehlerkorrekturcode-Decoder 1308 kann eine geschätzte Bitfehlerrate für die während des Leseabtastvorgangs gelesenen Daten bestimmen (z. B. als Teil eines BES-Leseabtastvorgangs), und die Kalibrierungsschaltung 1314 kann Speicherzellen basierend auf den durch die Leseabtastschaltung 1312 bestimmten Lesestufen kalibrieren.
  • In einer Ausführungsform kann die Leseabtastschaltung 1312 eine erste Lesestufe zum Lesen von Daten bestimmen, die auf einen ersten Satz von Speicherzellen des Speicherblocks 1316 programmiert ist. Der erste Satz von Speicherzellen kann einem ersten Speicherzustand zugeordnet sein.
  • Die Leseabtastschaltung 1312 kann eine Korrelation zwischen einem Speicherzustand für den ersten Satz von Speicherzellen und einem Speicherzustand für einen zweiten Satz von Speicherzellen bestimmen. Als Nächstes kann die Leseabtastschaltung 1312 eine zweite Lesestufe zum Lesen von Daten bestimmen, die auf den zweiten Satz von Speicherzellen programmiert sind. Die zweite Lesestufe kann basierend auf der Korrelation zwischen dem Speicherzustand für den ersten Satz von Speicherzellen und dem Speicherzustand für den zweiten Satz von Speicherzellen bestimmt werden.
  • Die Leseabtastschaltung 1312 kann dann die erste Lesestufe als eine aktuelle Lesestufe zum Lesen von Daten aus dem ersten Satz von Speicherzellen einstellen und kann die zweite Lesestufe als eine aktuelle Lesestufe zum Lesen von Daten aus dem zweiten Satz von Speicherzellen einstellen. Ein Fachmann wird erkennen, dass sich die Leseabtastschaltung 1312 und Kalibrierschaltung 1314 in anderen Logikmodulen als einem Health Manager 1310 befinden können. Diese Veranschaulichung soll diesen Gesichtspunkt des offenbarten Systems nicht einschränken.
  • 14 veranschaulicht ein Verfahren zum Durchführen eines Leseabtastvorgangs 1400 gemäß einer Ausführungsform. Bei Block 1402 kann eine Leseabtastschaltung ein erstes Lesestufenfenster für eine erste Kandidatenlesestufe abtasten, welche die geringste Anzahl von Speicherzellen in Bezug auf andere Kandidatenlesestufen innerhalb des ersten Lesestufenfensters aktiviert. Das erste Lesestufenfenster kann Lesestufen zwischen zwei benachbarten Speicherzuständen testen.
  • In Block 1404 kann die Leseabtastschaltung ein zweites Lesestufenfenster für eine zweite Kandidatenlesestufe basierend auf einer Korrelation einrichten. Die Korrelation zwischen mindestens einem der zwei benachbarten Speicherzustände und einem oder mehreren anderen benachbarten Speicherzuständen ist dem zweiten Lesestufenfenster zugeordnet.
  • In Block 1406 kann die Leseabtastschaltung das zweite Lesestufenfenster für eine zweite Kandidatenlesestufe abtasten, welche die geringste Anzahl von Speicherzellen in Bezug auf andere Kandidatenlesestufen innerhalb des zweiten Lesestufenfensters aktiviert. Sobald die erste Kandidatenlesestufe und die zweite Kandidatenlesestufe durch die Leseabtastschaltung bestimmt werden, kann die Leseabtastschaltung in Block 1408 einen Lesevorgang einrichten, um die erste Kandidatenlesestufe und die zweite Kandidatenlesestufe zu verwenden.
  • 15 ist ein beispielhaftes Blockdiagramm einer Rechenvorrichtung 1500, die Ausführungsformen der Lösung einschließen kann. 15 ist lediglich veranschaulichend für ein Maschinensystem zur Durchführung von Gesichtspunkten der hierin beschriebenen technischen Prozesse und schränkt den Umfang der Ansprüche nicht ein. Ein gewöhnlicher Fachmann würde andere Abweichungen, Modifikationen und Alternativen erkennen. In bestimmten Ausführungsformen schließt die Rechenvorrichtung 1500 ein Datenverarbeitungssystem 1502, ein Kommunikationsnetzwerk 1504, eine Kommunikationsnetzwerkschnittstelle 1506, Eingabevorrichtung(en) 1508, Ausgabevorrichtung(en) 1510 und dergleichen ein.
  • Wie in 15 dargestellt, kann das Datenverarbeitungssystem 1502 einen oder mehrere Prozessoren 1512 und ein Speichersubsystem 1514 einschließen. „Prozessor“ nimmt Bezug auf alle Schaltkreise, Komponenten, Chips, Dies, Baugruppen oder Module, die eingerichtet sind, um Maschinenanweisungen zu empfangen, zu interpretieren, zu dekodieren und auszuführen. „Anweisungen“ nimmt Bezug auf Symbole, die Befehle zur Ausführung durch eine Vorrichtung unter Verwendung eines Prozessors, Mikroprozessors, einer Steuerung, eines Interpreters oder anderer programmierbarer Logik darstellen. Allgemein können „Anweisungen“ Quellcode, Objektcode und ausführbarer Code bedeuten. Unter „Anweisungen“ sind hierin auch Befehle einzuschließen, die in programmierbaren Nur-Lese-Speichern (Programmable Read-Only Memories, EPROM) oder in hartkodierter Hardware (z. B. „Mikrocode“) und ähnlichen Umsetzungen verkörpert sind, wobei die Anweisungen zum Zeitpunkt der Herstellung einer Vorrichtung in einem Nur-Lese-Speicher für Maschinen oder einer anderen Hardwarekomponente eingerichtet sind. Beispiele für einen Prozessor können, ohne darauf beschränkt zu sein, eine Zentralverarbeitungseinheit, einen Allzweckprozessor, einen anwendungsspezifischen Prozessor, eine Grafikverarbeitungseinheit (GPU), ein feldprogrammierbares Gate-Array (Field Programmable Gate Array, FPGA), eine anwendungsspezifische integrierte Schaltung (Application Specific Integrated Circuit, ASIC), ein System auf einem Chip (System on a Chip, SoC), einen virtuellen Prozessor, einen Prozessorkern und Ähnliches einschließen.
  • Der/die Prozessor(en) 1512 kommunizieren mit einer Anzahl von Peripherievorrichtungen über ein Bussubsystem 1516. Diese Peripherievorrichtungen können Eingabevorrichtung(en) 1508, Ausgabevorrichtung(en) 1510, Kommunikationsnetzwerkschnittstelle 1506 und das Speichersubsystem 1514 einschließen. In einer Ausführungsform weist das Speichersubsystem 1514 eine oder mehrere Speichervorrichtungen und/oder eine oder mehrere Speichervorrichtungen auf.
  • „Speichervorrichtung‟ nimmt auf jede/jedes Hardware, System, Subsystem, Schaltung, Komponente, Modul, nichtflüchtige Speichermedium, Festplatte, Speicherarray, Vorrichtung oder Einrichtung Bezug, die/das eingerichtet, programmiert, entworfen oder konstruiert ist, um Daten für eine bestimmte Zeit zu speichern und die Daten in der Speichervorrichtung zu behalten, während die Speichervorrichtung keine Energie von einer Stromversorgung verbraucht. Beispiele für Speichervorrichtungen schließen ein Festplattenlaufwerk, FLASH-Speicher, einen MRAM-Speicher, eine Festkörperspeichervorrichtung, nur ein Haufen von Platten (Just a Bunch Of Disks, JBOD), „ein paar Platten“ (Just a Bunch Of Flash, JBOF), eine externe Festplatte, eine interne Festplatte und Ähnliches ein, ohne darauf beschränkt zu sein.
  • „Nichtflüchtige Speichermedien‟ nimmt Bezug auf jede Hardware, Vorrichtung, Komponente, jedes Element oder jeden Schaltkreis, die bzw. der so eingerichtet ist, dass sie bzw. er eine veränderbare physikalische Eigenschaft beibehält, die verwendet wird, um einen binären Wert von Null oder Eins darzustellen, nachdem eine primäre Stromquelle entfernt wurde. Beispiele für veränderbare physikalische Eigenschaften schließen eine Schwellenspannung für einen Transistor, ein elektrischer Widerstandswert einer Speicherzelle, ein Strompegel durch eine Speicherzelle, eine Magnetpolausrichtung, ein Spin-Transfer-Drehmoment und dergleichen ein, ohne darauf beschränkt zu sein.
  • Die veränderbare physikalische Eigenschaft ist so beschaffen, dass die physikalische Eigenschaft ausreichend fixiert bleibt, so dass, wenn keine primäre Stromquelle für die nichtflüchtigen Speichermedien verfügbar ist, die veränderbare physikalische Eigenschaft gemessen, erkannt oder abgetastet werden kann, wenn der binäre Wert gelesen, abgerufen oder abgetastet wird. Anders ausgedrückt: nichtflüchtige Speichermedien sind Speichermedien, die so eingerichtet sind, dass Daten, die auf den nichtflüchtigen Speichermedien gespeichert sind, abrufbar sind, nachdem eine Stromquelle für die nichtflüchtigen Speichermedien getrennt und dann wieder angeschlossen wurde. Die nichtflüchtigen Speichermedien können ein oder mehrere nichtflüchtige Speicherelemente aufweisen, die unter anderem Folgendes einschließen können: Chips, Pakete, Ebenen, Speicher-Dies und dergleichen.
  • Beispiele für nichtflüchtige Speichermedien umfassen, sind aber nicht beschränkt auf: ReRAM, Memristorspeicher, programmierbare Metallisierungszellenspeicher, Phasenänderungsspeicher (PCM, PCME, PRAM, PCRAM, Ovonic Unified Memory, Chalcogenid-RAM oder C-RAM), NAND-FLASH-Speicher (z. B. 2D-NAND-FLASH-Speicher, 3D-NAND-FLASH-Speicher), NOR-FLASH-Speicher, Nano-Direktzugriffsspeicher (Nano-RAM oder NRAM), drahtbasierte Nanokristallspeicher, Siliziumoxid-basierte Sub-10-Nanometer-Prozessspeicher, Graphenspeicher, Silizium-Oxid-Nitrid-Oxid-Silizium (SONOS), programmierbare Metallisierungszellen (PMC), leitungsüberbrückendes RAM (CBRAM), magnetoresistives RAM (MRAM), magnetische Speichermedien (z. B. Festplatte, Band), optische Speichermedien oder dergleichen.
  • Während die nichtflüchtigen Speichermedien hierin in verschiedenen Ausführungsformen als „Speichermedien“ bezeichnet werden, können die nichtflüchtigen Speichermedien allgemeiner als nichtflüchtiger Speicher bezeichnet werden. Da nichtflüchtige Speichermedien in der Lage sind, Daten zu speichern, wenn eine Stromversorgung entfernt wird, können die nichtflüchtigen Speichermedien auch als Aufzeichnungsmedium, nichtflüchtiges Aufzeichnungsmedium, nichtflüchtiges Speichermedium, Speichermedium, Speicher, nichtflüchtiger Speicher, flüchtiges Speichermedium, nichtflüchtiges Speichermedium, nichtflüchtiger Speicher oder ähnliches bezeichnet werden.
  • In bestimmten Ausführungsformen sind die auf nichtflüchtigen Speichermedien gespeicherten Daten auf Blockebene adressierbar, d. h. die Daten auf den nichtflüchtigen Speichermedien sind in Datenblöcken organisiert, die jeweils eine eindeutige logische Adresse (z. B. LBA) aufweisen. In anderen Ausführungsformen sind Daten, die in nichtflüchtigen Speichermedien gespeichert sind, auf Byte-Ebene adressierbar, was bedeutet, dass die Daten in den nichtflüchtigen Speichermedien in Bytes (8 Bit) von Daten organisiert sind, die jeweils eine eindeutige Adresse aufweisen, wie z. B. eine logische Adresse. Ein Beispiel für byteadressierbare nichtflüchtige Speichermedien ist der Speicherklassenspeicher (SCM).
  • In einer Ausführungsform schließt das Speichersubsystem 1514 einen flüchtigen Speicher 1518 und einen nichtflüchtigen Speicher 1520 ein. Der flüchtige Speicher 1518 und/oder der nichtflüchtige Speicher 1520 können computerausführbare Befehle speichern, die allein oder zusammen Logik 1522 bilden, die, wenn sie auf den/die Prozessor(en) 1512 angewendet und von diesem/diesen ausgeführt wird/werden, Ausführungsformen der hierin offenbaren Prozesse implementieren.
  • „Flüchtiger Speicher‟ nimmt Bezug auf eine Kurzform für flüchtige Speichermedien. In bestimmten Ausführungsformen nimmt ein flüchtiger Speicher Bezug auf die flüchtigen Speichermedien und die Logik, Steuerungen, Prozessor(en), Zustandsmaschine(n) und/oder andere Peripherieschaltungen, welche die flüchtigen Speichermedien verwalten und den Zugriff auf die flüchtigen Speichermedien ermöglichen.
  • „Flüchtige Speichermedien‟ nimmt Bezug auf jede Hardware, Vorrichtung, Komponente, Element oder Schaltung, die eingerichtet ist, um eine veränderbare physikalische Eigenschaft zur Darstellung eines Binärwerts von Null oder Eins aufrechtzuerhalten, für den die veränderbare physische Eigenschaft in einen Standardzustand zurückkehrt, der nicht mehr den Binärwert darstellt, wenn eine primäre Leistungsquelle entfernt wird, oder wenn keine primäre Leistungsquelle verwendet wird, um den dargestellten Binärwert aufzufrischen. Beispiele für flüchtige Speichermedien schließen dynamische Direktzugriffsspeicher (Dynamic Random Access Memory - DRAM), statische Direktzugriffsspeicher (Static Random Access Memory - SRAM), Direktzugriffsspeicher mit doppelter Datenrate (Double Data Rate Random Access Memory - DDR RAM) oder andere Festkörperspeicher mit Direktzugriff ein, sind aber nicht darauf beschränkt.
  • Während die flüchtigen Speichermedien hierin in verschiedenen Ausführungsformen als „Speichermedien“ bezeichnet werden, können die flüchtigen Speichermedien allgemeiner als flüchtiger Speicher bezeichnet werden.
  • „Nichtflüchtiger Speicher‟ nimmt auf eine Kurzform für nichtflüchtige Speichermedien Bezug. In bestimmten Ausführungsformen nehmen nichtflüchtige Speichermedien Bezug auf die nichtflüchtigen Speichermedien und die Logik, Steuerungen, Prozessoren, Zustandsmaschinen und/oder andere Peripherieschaltungen, welche die nichtflüchtigen Speichermedien verwalten und den Zugriff auf die nichtflüchtigen Speichermedien bereitstellen.
  • „Logik“ nimmt Bezug auf Maschinenspeicherschaltkreise, nicht vorübergehende maschinenlesbare Medien und/oder Schaltkreise, die über ihr Material und/oder über ihre Material-Energie-Konfiguration Steuer- und/oder Verfahrenssignale und/oder Einstellungen und Werte (wie Widerstand, Impedanz, Kapazität, Induktivität, Strom-/Spannungswerte usw.) aufweisen, die angewendet werden können, um den Betrieb einer Vorrichtung zu beeinflussen. Magnetische Medien, elektronische Schaltungen, elektrischer und optischer Speicher (sowohl flüchtig als auch nichtflüchtig) und Firmware sind Beispiele für Logik. Logik schließt insbesondere reine Signale oder Software per se aus (jedoch nicht Maschinenspeicher, die Software aufweisen und dadurch wichtige Konfigurationen ausbilden).
  • Die Eingabevorrichtung(en) 1508 schließen Vorrichtungen und Mechanismen zur Eingabe von Informationen in das Datenverarbeitungssystem 1502 ein. Diese können eine Tastatur, ein Tastenfeld, einen Berührungsbildschirm, der in eine grafische Benutzeroberfläche eingeschlossen ist, Audio-Eingabegeräte wie Spracherkennungssysteme, Mikrofone und andere Arten von Eingabegeräten einschließen. In verschiedenen Ausführungsformen können die Eingabevorrichtung(en) 1508 als Computermaus, Trackball, Trackpad, Joystick, drahtlose Fernbedienung, Zeichentablett, Sprachbefehlssystem, Blickverfolgungssystem und dergleichen ausgeführt sein. Die Eingabevorrichtung(en) 1508 ermöglichen dem Benutzer üblicherweise, Objekte, Icons, Kontrollbereiche, Text und dergleichen, die auf einer grafischen Benutzeroberfläche erscheinen, durch einen Befehl wie einen Knopfdruck oder dergleichen auszuwählen.
  • Die Ausgabevorrichtung(en) 1510 schließen Vorrichtungen und Mechanismen für die Ausgabe von Informationen aus dem Datenverarbeitungssystem 1502 ein. Diese können eine graphische Benutzeroberfläche, Lautsprecher, Drucker, Infrarot-LEDs usw. einschließen, wie in der Technik gut verstanden wird. In bestimmten Ausführungsformen ist eine grafische Benutzeroberfläche direkt über eine Kabelverbindung an das Bussubsystem 1516 gekoppelt. In anderen Ausführungsformen ist die grafische Benutzeroberfläche über die Kommunikationsnetzwerkschnittstelle 1506 an das Datenverarbeitungssystem 1502 gekoppelt. Beispielsweise kann die grafische Benutzeroberfläche eine Befehlszeilenschnittstelle auf einer separaten Rechenvorrichtung 1500 wie einem Desktop, Server oder mobilen Vorrichtung aufweisen.
  • Die Schnittstelle des Kommunikationsnetzwerks 1506 stellt eine Schnittstelle zu Kommunikationsnetzwerken (z. B. Kommunikationsnetzwerk 1504) und Vorrichtungen außerhalb des Datenverarbeitungssystems 1502 bereit. Die Schnittstelle des Kommunikationsnetzwerks 1506 kann als eine Schnittstelle zum Empfangen von Daten und Übertragen von Daten an andere Systeme dienen. Ausführungsformen der Schnittstelle des Kommunikationsnetzwerks 1506 können eine Ethernet-Schnittstelle, ein Modem (Telefon, Satellit, Kabel, ISDN), eine (asynchrone) digitale Abonnentenlinie (DSL), FireWire, USB, eine drahtlose Kommunikationsschnittstelle wie Bluetooth oder WiFi, eine drahtlose Nahfeldkommunikationsschnittstelle, eine zellulare Schnittstelle und ähnliches einschließen.
  • Die Schnittstelle des Kommunikationsnetzwerks 1506 kann über eine Antenne, ein Kabel oder ähnliches mit dem Kommunikationsnetzwerk 1504 gekoppelt werden. In einigen Ausführungsformen kann die Schnittstelle des Kommunikationsnetzwerks 1506 physisch auf einer Schaltplatine des Datenverarbeitungssystems 1502 integriert sein oder in einigen Fällen in Software oder Firmware umgesetzt sein, wie „Softmodems“ oder Ähnliches.
  • Die Rechenvorrichtung 1500 kann eine Logik einschließen, welche die Kommunikationen über ein Netzwerk unter Verwendung von Protokollen wie HTTP, TCP/IP, RTP/RTSP, IPX, UDP und dergleichen ermöglicht.
  • Der flüchtige Speicher 1518 und der nichtflüchtige Speicher 1520 sind Beispiele für greifbare Medien, die eingerichtet sind, um computerlesbare Daten und Anweisungen zu speichern, um verschiedene Ausführungsformen der hierin beschriebenen Prozesse umzusetzen. Andere Arten von greifbaren Medien schließen abnehmbare Speicher (z. B. steckbare USB-Speichervorrichtungen, SIM-Karten für Mobilvorrichtungen), optische Speichermedien wie CD-ROMS, DVDs, Halbleiterspeicher wie Flash-Speicher, nicht-transitorische Nur-Lese-Speicher (ROMS), batteriegestützte flüchtige Speicher, vernetzte Speichervorrichtungen und dergleichen ein. Der flüchtige Speicher 1518 und der nichtflüchtige Speicher 1520 können so eingerichtet sein, dass sie die grundlegenden Programmier- und Datenkonstrukte speichern, welche die Funktionalität der offenbarten Prozesse und anderer Ausführungsformen davon bereitstellen, die innerhalb des Schutzumfangs der vorliegenden Offenbarung fallen.
  • Die Logik 1522, die einen oder mehrere Teile der Ausführungsformen der Lösung umsetzt, kann im flüchtigen Speicher 1518 und/oder im nichtflüchtigen Speicher 1520 gespeichert werden. Die Logik 1522 kann aus dem flüchtigen Speicher 1518 und/oder dem nichtflüchtigen Speicher 1520 gelesen und von dem/den Prozessor(en) 1512 ausgeführt werden. Der flüchtige Speicher 1518 und der nichtflüchtige Speicher 1520 können auch ein Repository für das Speichern von Daten bereitstellen, die von der Logik 1522 verwendet werden. „Repository“ nimmt auf jede Datenquelle oder jeden Datensatz Bezug, die/der Daten oder Inhalte enthält. In einer Ausführungsform befindet sich ein Repository auf einer Rechenvorrichtung. In einer anderen Ausführungsform befindet sich ein Repository auf einer entfernten Rechen- oder entfernten Speichervorrichtung. Ein Repository kann eine Datei, einen Ordner, ein Verzeichnis, einen Satz von Dateien, einen Satz von Ordnern, einen Satz von Verzeichnissen, eine Datenbank, eine Anwendung, eine Softwareanwendung, Inhalt eines Textes, Inhalt einer E-Mail, Inhalt eines Kalendereintrags und dergleichen umfassen. Ein Repository umfasst in einer Ausführungsform unstrukturierte Daten. Ein Repository umfasst in einer Ausführungsform strukturierte Daten, wie eine Tabelle, ein Array, eine Warteschlange, eine Nachschlagetabelle, eine Hash-Tabelle, einen Heap, einen Stack oder dergleichen. Ein Repository kann Daten in jedem Format speichern, einschließlich binär, Text, verschlüsselt, unverschlüsselt, einem proprietären Format oder dergleichen.
  • Der flüchtige Speicher 1518 und der nichtflüchtige Speicher 1520 können eine Anzahl von Speichern einschließen, die einen Hauptspeicher mit Direktzugriff (RAM) zur Speicherung von Anweisungen und Daten während der Programmausführung und einen Nur-Lese-Speicher (ROM) einschließen, in dem nur lesbare, nichtflüchtige Anweisungen gespeichert werden. Der flüchtige Speicher 1518 und der nichtflüchtige Speicher 1520 können ein Subsystem des Dateispeichers einschließen, das einen dauerhaften (nichtflüchtigen) Speicher für Programm- und Datendateien bereitstellt. Der flüchtige Speicher 1518 und der nichtflüchtige Speicher 1520 können abnehmbare Speichersysteme, wie abnehmbare Flash-Speicher, einschließen.
  • Das Bussubsystem 1516 stellt einen Mechanismus für das Ermöglichen der Kommunikation zwischen den verschiedenen Komponenten und Subsystemen des Datenverarbeitungssystems 1502, wie vorgesehen, bereit. Obwohl die Schnittstelle des Kommunikationsnetzwerks 1506 schematisch als ein einzelner Bus dargestellt ist, können einige Ausführungsformen des Bussubsystems 1516 mehrere unterschiedliche Busse nutzen.
  • Für Fachleute wird es leicht ersichtlich sein, dass die Rechenvorrichtung 1500 eine Vorrichtung wie ein Smartphone, ein Desktop-Computer, ein Laptop-Computer, ein rackmontiertes Computersystem, ein Computerserver oder eine Tablet-Computervorrichtung sein kann. Wie in der Technik allgemein bekannt, kann die Rechenvorrichtung 1500 als eine Sammlung von mehreren vernetzten Rechenvorrichtungen umgesetzt werden. Ferner wird die Rechenvorrichtung 1500 üblicherweise Betriebssystemlogik (nicht veranschaulicht) einschließen, deren Art und Weise in der Technik gut bekannt sind.
  • Den hierin verwendeten Begriffen sollte ihre gewöhnliche Bedeutung in der relevanten Technik oder die Bedeutung, die durch ihre Verwendung im Kontext angezeigt wird, zugewiesen werden, aber wenn eine ausdrückliche Definition bereitgestellt wird, hat diese Priorität.
  • Innerhalb dieser Offenbarung können verschiedene Elemente (die unterschiedlich als „Einheiten“, „Schaltungen“, andere Komponenten usw. bezeichnet werden können) als „eingerichtet“ beschrieben oder beansprucht werden, um eine oder mehrere Aufgaben oder Operationen auszuführen. Diese Formulierung - [Element] eingerichtet zum [Ausführen einer oder mehrerer Aufgaben] - bezieht sich hier auf die Struktur (d. h. etwas Physisches, wie eine elektronische Schaltung). Genauer gesagt wird diese Formulierung verwendet, um anzuzeigen, dass diese Struktur angeordnet ist, um die eine oder mehreren Aufgaben während des Betriebs durchzuführen. Eine Struktur kann als „eingerichtet“ bezeichnet werden, um eine Aufgabe auszuführen, auch wenn die Struktur momentan nicht betrieben wird. Eine „Kreditverteilungsschaltung, die eingerichtet ist zum Verteilen von Guthaben auf eine Vielzahl von Prozessorkernen“, soll beispielsweise eine integrierte Schaltung abdecken, die über einen Schaltkreis zum Ausführen dieser Funktion während des Betriebs verfügt, auch wenn die betreffende integrierte Schaltung derzeit nicht verwendet wird (z. B. ist keine Leistungsversorgung daran angeschlossen). Somit nimmt ein Element, das als „eingerichtet zum“ Durchführen einer Aufgabe beschrieben oder rezitiert wird, auf etwas Physisches Bezug, wie eine Vorrichtung, eine Schaltung, einen Speicher zum Speichern von Programmanweisungen, die zum Durchführen der Aufgabe ausführbar sind usw. Diese Formulierung wird hierin nicht verwendet, um auf etwas Immaterielles hinzuweisen.
  • Der Ausdruck „eingerichtet zum“ bedeutet nicht „konfigurierbar zum.“ Ein unprogrammiertes FPGA zum Beispiel würde nicht als „eingerichtet zum“ Ausführen einer bestimmten Funktion betrachtet werden, obwohl es nach der Programmierung „konfigurierbar zum“ Ausführen dieser Funktion sein kann.
  • Die Angabe in den beiliegenden Ansprüchen, dass eine Struktur zum Ausführen einer oder mehrerer Aufgaben „eingerichtet“ ist, ist ausdrücklich dazu gedacht, 35 U.S.C. § 112(f) für dieses Anspruchselement nicht geltend zu machen. Dementsprechend sollten Ansprüche in dieser Anmeldung, die nicht anderweitig das Konstrukt „Mittel zum“ [Ausführen einer Funktion] enthalten, nicht gemäß 35 U.S.C. § 112(f) ausgelegt werden.
  • Wie hierin verwendet, wird der Ausdruck „basierend auf“ verwendet, um einen oder mehrere Faktoren zu beschreiben, die eine Bestimmung beeinflussen. Dieser Ausdruck schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren die Bestimmung beeinflussen können. Das heißt, eine Bestimmung kann ausschließlich auf bestimmten Faktoren oder auf den bestimmten Faktoren sowie anderen, nicht spezifizierten Faktoren basieren. Betrachten wir die Formulierung „A basierend auf B bestimmen“. Dieser Satz besagt, dass B ein Faktor ist, der zur Bestimmung von A verwendet wird oder der die Bestimmung von A beeinflusst. Dieser Satz schließt nicht aus, dass die Bestimmung von A auch auf einem anderen Faktor, wie beispielsweise C, basieren kann. Diese Formulierung gilt auch für eine Ausführungsform, in der A ausschließlich auf der Grundlage von B bestimmt wird. Wie hierin verwendet, ist die Formulierung „basierend auf“ gleichbedeutend mit der Formulierung „basierend zumindest teilweise auf.“
  • Wie hierin verwendet, beschreibt die Formulierung „als Reaktion auf“ einen oder mehrere Faktoren, die einen Effekt auslösen. Diese Formulierung schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren den Effekt beeinflussen oder anderweitig auslösen können. Das heißt, ein Effekt kann ausschließlich als Reaktion auf diese Faktoren oder als Reaktion auf die festen Faktoren sowie andere, nicht festgelegte Faktoren auftreten. Betrachten wir die Formulierung „A als Reaktion auf B ausführen.“ Dieser Satz besagt, dass B ein Faktor ist, der die Leistung von A auslöst. Dieser Satz schließt nicht aus, dass die Ausführung von A auch als Reaktion auf einen anderen Faktor, wie beispielsweise C, erfolgen kann. Diese Formulierung gilt auch für eine Ausführungsform, bei der A ausschließlich als Reaktion auf B ausgeführt wird.
  • Wie hierin verwendet, werden die Begriffe „erste/erster/erstes“, „zweite/zweiter/zweites“ usw. als Bezeichnungen für die anschließenden Substantive verwendet, und implizieren keine Art von Ordnung (z. B. räumlich, zeitlich, logisch usw.), sofern nicht anders angegeben. Beispielsweise können in einer Registerdatei mit acht Registern die Begriffe „erstes Register“ und „zweites Register“ verwendet werden, um auf zwei beliebige der acht Register Bezug zu nehmen, und nicht beispielsweise nur auf die logischen Register 0 und 1.
  • Bei der Verwendung in den Ansprüchen wird der Begriff „oder“ als inklusiv und nicht als exklusiv verwendet. Beispielsweise bedeutet die Formulierung „mindestens einer von x, y oder z“ einen von x, y und z sowie eine beliebige Kombination davon.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 6222762 [0123]
    • US 7237074 [0123]
    • US 9697905 [0156]

Claims (20)

  1. Verfahren zum Durchführen eines Leseabtastvorgangs an einem Speicher mit einer Vielzahl von Speicherzellen, wobei das Verfahren umfasst: Abtasten eines ersten Lesestufenfensters für eine erste Kandidatenlesestufe, die eine geringste Anzahl von Speicherzellen in Bezug auf andere Kandidatenlesestufen innerhalb des ersten Lesestufenfensters aktiviert, wobei das erste Lesestufenfenster eingerichtet ist, Lesestufen zwischen zwei benachbarten Speicherzuständen zu testen; Einrichten eines zweiten Lesestufenfensters für eine zweite Kandidatenlesestufe basierend auf einer Korrelation zwischen mindestens einem der zwei benachbarten Speicherzustände und einem oder mehreren anderen benachbarten Speicherzuständen, die dem zweiten Lesestufenfenster zugeordnet sind; Abtasten des zweiten Lesestufenfensters für eine zweite Kandidatenlesestufe, welche die geringste Anzahl von Speicherzellen in Bezug auf andere Kandidatenlesestufen innerhalb des zweiten Lesestufenfensters aktiviert; und Einrichten eines Lesevorgangs, um die erste Kandidatenlesestufe und die zweite Kandidatenlesestufe zu verwenden.
  2. Verfahren gemäß Anspruch 1, wobei das Einrichten der zweiten Lesestufe Folgendes umfasst: Bestimmen eines Korrelationsfaktors durch Durchsuchen einer Korrelationsdatenstruktur, basierend auf einer Kennung für einen der zwei benachbarten Speicherzustände; Anwenden des Korrelationsfaktors auf das zweite Lesestufenfenster, so dass die Korrelation Kandidatenlesestufen des zweiten Lesestufenfensters beeinflusst.
  3. Verfahren gemäß Anspruch 2, wobei das Anwenden des Korrelationsfaktors das Multiplizieren einer Kandidatenlesestufe des zweiten Lesestufenfensters mit dem Korrelationsfaktor umfasst, so dass die Kandidatenlesestufe den Korrelationsfaktor berücksichtigt.
  4. Verfahren gemäß Anspruch 2, wobei das Anwenden des Korrelationsfaktors das Ändern einer vordefinierten Reihenfolge für die Kandidatenlesestufen des zweiten Lesestufenfensters umfasst, so dass Kandidatenlesestufen, die Korrelation berücksichtigen, beim Abtasten vor anderen Kandidatenlesestufen verwendet werden.
  5. Verfahren gemäß Anspruch 1, wobei das eingerichtete zweite Lesestufenfenster weniger Kandidatenlesestufen als das erste Lesestufenfenster umfasst.
  6. Verfahren gemäß Anspruch 1, wobei die Korrelation eine positive Korrelation zwischen einem ersten Speicherzustand und einem zweiten Speicherzustand umfasst.
  7. Verfahren gemäß Anspruch 1, wobei die Korrelation eine negative Korrelation zwischen einem ersten Speicherzustand und einem zweiten Speicherzustand umfasst.
  8. Verfahren gemäß Anspruch 1, wobei das Abtasten des ersten Lesestufenfensters umfasst: Testen der ersten Kandidatenlesestufe und der zweiten Kandidatenlesestufe in einer vordefinierten Reihenfolge; und Bestimmen der ersten Kandidatenlesestufe als die erste Lesestufe als Reaktion darauf, dass die zweite Kandidatenlesestufe mehr Speicherzellen als die erste Kandidatenlesestufe aktiviert.
  9. Verfahren gemäß Anspruch 1, wobei das Abtasten des zweiten Lesestufenfensters ferner iterativ das Testen von Kandidatenlesestufen in einer vordefinierten Reihenfolge umfasst und wobei das Einrichten des zweiten Lesestufenfensters das Ändern der vordefinierten Reihenfolge, basierend auf der Korrelation, umfasst.
  10. Verfahren gemäß Anspruch 9, wobei das Ändern der vordefinierten Reihenfolge iterativ das Testen einer ersten Kandidatenlesestufe als Reaktion darauf, dass die zweite Kandidatenlesestufe die geringste Anzahl von Speicherzellen in Bezug auf andere Kandidatenlesestufen innerhalb des zweiten Lesestufenfensters aktiviert, umfasst, wobei die zweite Kandidatenlesestufe basierend auf der Korrelation bestimmt wird.
  11. Verfahren gemäß Anspruch 1, ferner umfassend das weitere Bestimmen der Korrelation, basierend auf einem ersten Speicherzustand von den zwei benachbarten Speicherzuständen und einem zweiten Speicherzustand von den anderen benachbarten Speicherzuständen, die dem zweiten Lesestufenfenster zugeordnet sind als Reaktion darauf, dass der erste Speicherzustand und der zweite Speicherzustand eine stabile Korrelation haben.
  12. Einrichtung, aufweisend: ein dreidimensionales Speicherarray von Speicherzellen; und eine Leseabtastschaltung, die zu Folgendem eingerichtet ist: iteratives Erfassen eines Satzes von Speicherzellen unter Verwendung eines ersten Satzes von Kandidatenlesestufen, bis eine Kandidatenlesestufe eine geringste Anzahl von Speicherzellen in Bezug auf andere Kandidatenlesestufen innerhalb des ersten Satzes von Kandidatenlesestufen aktiviert; Bestimmen einer ersten Lesestufe für einen ersten Speicherzustand, basierend auf der Kandidatenlesestufe, welche die geringste Anzahl von Speicherzellen aktiviert; Abrufen einer Korrelation zwischen dem ersten Speicherzustand und einem zweiten Speicherzustand; Bestimmen einer zweiten Lesestufe für den zweiten Speicherzustand unter Verwendung der Korrelation; und Einstellen der ersten Lesestufe und der zweiten Lesestufe für nachfolgende Lesevorgänge.
  13. Einrichtung gemäß Anspruch 12, wobei die Leseabtastschaltung die zweite Lesestufe durch Multiplizieren einer aktuellen Lesestufe für den zweiten Speicherzustand mit einem Korrelationsfaktor bestimmt, der für die Korrelation repräsentativ ist.
  14. Einrichtung gemäß Anspruch 12, wobei die Leseabtastschaltung die zweite Lesestufe bestimmt durch: Auswählen eines zweiten Satzes von Kandidatenlesestufen basierend auf der Korrelation, wobei der zweite Satz von Kandidatenlesestufen kleiner als der erste Satz von Kandidatenlesestufen ist; und Bestimmen der zweiten Lesestufe für den zweiten Speicherzustand durch iteratives Testen des zweiten Satzes von Kandidatenlesestufen, bis die Kandidatenlesestufe eine geringste Anzahl von Speicherzellen in Bezug auf die anderen Kandidatenlesestufen innerhalb des zweiten Satzes von Kandidatenlesestufen aktiviert.
  15. Einrichtung gemäß Anspruch 12, ferner umfassend: einen flüchtigen Speicher, der mit der Leseabtastschaltung gekoppelt ist, wobei der flüchtige Speicher eine Korrelationsdatenstruktur umfasst, die eingerichtet ist, Korrelationsfaktoren für jeden Speicherzustand des Satzes von Speicherzellen zu speichern; wobei der Korrelationsfaktor die Korrelation darstellt und das Multiplizieren der Kandidatenlesestufe mit dem Korrelationsfaktor die Kandidatenlesestufe modifiziert, um die Korrelation zu berücksichtigen.
  16. Einrichtung gemäß Anspruch 12, wobei die Korrelation zwischen dem ersten Speicherzustand und dem zweiten Speicherzustand eine Breitenkorrelation umfasst, die eingerichtet ist, um eine Beziehung zwischen einer Verbreiterung der Zellenschwellenspannungsverteilung in dem ersten Speicherzustand in Bezug auf die Verbreiterung der Zellenschwellenspannungsverteilung in dem zweiten Speicherzustand darzustellen.
  17. Einrichtung gemäß Anspruch 12, wobei die Korrelation zwischen dem ersten Speicherzustand und dem zweiten Speicherzustand eine Verschiebungskorrelation umfasst, die eingerichtet ist, um eine Beziehung zwischen einer Verschiebung der Zellenschwellenspannungsverteilung in dem ersten Speicherzustand in Bezug auf die Verschiebung der Zellenschwellenspannungsverteilung in dem zweiten Speicherzustand darzustellen.
  18. System, das Folgendes umfasst: ein nichtflüchtiges Speicherarray, das eine Vielzahl von Chips aufweist; und eine Speichersteuerung, umfassend: eine Lese-/Schreibschaltung, die eingerichtet ist, um Daten in Speicherzellen der Vielzahl von Speicherchips zu schreiben; eine Leseabtastschaltung, die eingerichtet ist, um einen Leseabtastvorgang für einen Speicherblock einer Vielzahl von Speicherblöcken des nichtflüchtigen Speicherarrays zu implementieren, wobei der Leseabtastvorgang eingerichtet ist, um Kandidatenlesestufen eines Satzes von Kandidatenlesestufen basierend auf einer Korrelation zwischen zwei Speicherzuständen für Speicherzellen des Speicherblocks zu testen; einen Fehlerkorrekturcode-Decodierer, der eingerichtet ist, um eine geschätzte Bitfehlerrate für die während des Leseabtastvorgangs gelesenen Daten zu bestimmen; und eine Kalibrierungsschaltung, die eingerichtet ist, um Speicherzellen basierend auf Lesestufen zu kalibrieren, die durch die Leseabtastschaltung bestimmt werden.
  19. System gemäß Anspruch 18, wobei die Leseabtastschaltung eingerichtet ist zum: Bestimmen einer ersten Lesestufe zum Lesen von Daten, die auf einem ersten Satz von Speicherzellen des Speicherblocks programmiert sind, wobei der erste Satz von Speicherzellen einen der zwei Speicherzustände aufweist; Bestimmen der Korrelation zwischen den beiden Speicherzuständen; Bestimmen einer zweiten Lesestufe zum Lesen von Daten, die auf einem zweiten Satz von Speicherzellen des Speicherblocks programmiert sind, wobei der zweite Satz von Speicherzellen einen von zwei anderen Speicherzuständen aufweist, wobei die zweite Lesestufe basierend auf der Korrelation zwischen mindestens einem der zwei Speicherzustände und mindestens einem der zwei anderen Speicherzustände bestimmt wird; Einstellen der ersten Lesestufe als eine aktuelle Lesestufe zum Lesen von Daten aus dem ersten Satz von Speicherzellen; und Einstellen der zweiten Lesestufe als eineraktuelle Lesestufe zum Lesen von Daten aus dem zweiten Satz von Speicherzellen.
  20. System gemäß Anspruch 18, wobei die Korrelation eine oder mehrere von einer Breitenkorrelation und einer Verschiebungskorrelation aufweist.
DE102021107475.4A 2020-05-07 2021-03-25 Kalibrieren von leseschwellenwerten eines nichtflüchtigen speichers Pending DE102021107475A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/869,424 2020-05-07
US16/869,424 US10998041B1 (en) 2020-05-07 2020-05-07 Calibrating non-volatile memory read thresholds

Publications (1)

Publication Number Publication Date
DE102021107475A1 true DE102021107475A1 (de) 2021-11-11

Family

ID=75689402

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021107475.4A Pending DE102021107475A1 (de) 2020-05-07 2021-03-25 Kalibrieren von leseschwellenwerten eines nichtflüchtigen speichers

Country Status (3)

Country Link
US (1) US10998041B1 (de)
CN (1) CN113628658A (de)
DE (1) DE102021107475A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11423989B2 (en) * 2020-11-02 2022-08-23 Micron Technology, Inc. Generating embedded data in memory cells in a memory sub-system
US11693745B2 (en) * 2020-11-23 2023-07-04 Micron Technology, Inc. Error-handling flows in memory devices based on bins
US11704217B2 (en) * 2021-01-25 2023-07-18 Micron Technology, Inc. Charge loss scan operation management in memory devices
EP4152332A1 (de) * 2021-09-17 2023-03-22 Samsung Electronics Co., Ltd. Speichersteuergerät zur bestimmung der verteilungsart, verfahren zum betrieb davon und verfahren zum betrieb einer speichervorrichtung damit
KR102491652B1 (ko) 2021-09-17 2023-01-27 삼성전자주식회사 산포 타입을 결정하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US7237074B2 (en) 2003-06-13 2007-06-26 Sandisk Corporation Tracking cells for a memory system
US9697905B2 (en) 2013-05-31 2017-07-04 Sandisk Technologies Llc Updating read voltages using syndrome weight comparisons

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6992932B2 (en) * 2002-10-29 2006-01-31 Saifun Semiconductors Ltd Method circuit and system for read error detection in a non-volatile memory array
KR100888842B1 (ko) * 2007-06-28 2009-03-17 삼성전자주식회사 읽기 전압을 최적화할 수 있는 플래시 메모리 장치 및그것의 독출 전압 설정 방법
US7957187B2 (en) * 2008-05-09 2011-06-07 Sandisk Corporation Dynamic and adaptive optimization of read compare levels based on memory cell threshold voltage distribution
US8750042B2 (en) * 2011-07-28 2014-06-10 Sandisk Technologies Inc. Combined simultaneous sensing of multiple wordlines in a post-write read (PWR) and detection of NAND failures
US8406053B1 (en) * 2011-09-21 2013-03-26 Sandisk Technologies Inc. On chip dynamic read for non-volatile storage
KR102050475B1 (ko) * 2013-01-14 2020-01-08 삼성전자주식회사 플래시 메모리, 플래시 메모리 장치 및 이의 동작 방법
US9070479B2 (en) 2013-01-21 2015-06-30 Sandisk Technologies Inc. Systems and methods of updating read voltages
US9590656B2 (en) * 2013-03-15 2017-03-07 Microsemi Storage Solutions (Us), Inc. System and method for higher quality log likelihood ratios in LDPC decoding
US9728263B2 (en) 2013-05-31 2017-08-08 Sandisk Technologies Llc Method and device for iteratively updating read voltages
US20170148510A1 (en) 2013-05-31 2017-05-25 Sandisk Technologies Llc Updating read voltages
US9165683B2 (en) * 2013-09-23 2015-10-20 Sandisk Technologies Inc. Multi-word line erratic programming detection
US10276247B2 (en) * 2013-12-20 2019-04-30 Seagate Technology Llc Read retry operations with estimation of written data based on syndrome weights
US9640270B2 (en) 2014-08-12 2017-05-02 Sandisk Technologies Llc System and method of using multiple read operations
JP6413822B2 (ja) 2015-02-16 2018-10-31 株式会社豊田自動織機 電池モジュール及び電池モジュールの製造方法
US10446242B2 (en) 2016-05-27 2019-10-15 Western Digital Technologies, Inc. Temperature variation compensation
US9761308B1 (en) * 2016-03-11 2017-09-12 Western Digital Technologies, Inc. Systems and methods for adaptive read level adjustment
US10008273B2 (en) * 2016-06-13 2018-06-26 Sandisk Technologies Llc Cell current based bit line voltage
US10180868B2 (en) 2016-07-08 2019-01-15 Seagate Technology Llc Adaptive read threshold voltage tracking with bit error rate estimation based on non-linear syndrome weight mapping
US10025661B1 (en) 2016-12-27 2018-07-17 Sandisk Technologies Llc Adaptive hard and soft bit decoding
US10637511B2 (en) * 2017-12-18 2020-04-28 Western Digital Technologies, Inc Dynamic multi-stage decoding
US10580485B2 (en) 2017-12-20 2020-03-03 Western Digital Technologies, Inc. System and method for adjusting read levels in a storage device based on bias functions
KR20190092937A (ko) * 2018-01-31 2019-08-08 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
TWI649754B (zh) * 2018-04-16 2019-02-01 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US7237074B2 (en) 2003-06-13 2007-06-26 Sandisk Corporation Tracking cells for a memory system
US9697905B2 (en) 2013-05-31 2017-07-04 Sandisk Technologies Llc Updating read voltages using syndrome weight comparisons

Also Published As

Publication number Publication date
US10998041B1 (en) 2021-05-04
CN113628658A (zh) 2021-11-09

Similar Documents

Publication Publication Date Title
DE112020000178T5 (de) Verwaltung von in zonen unterteilten namensräumen nichtflüchtiger speicherungsvorrichtungen
DE102021107475A1 (de) Kalibrieren von leseschwellenwerten eines nichtflüchtigen speichers
DE102020116362B3 (de) Dynamische zuweisung von unterblöcken
DE102017104257A1 (de) Auf Zellenstrom basierende Bitleitungsspannung
DE102020106971A1 (de) Datenschreibverwaltung im nichtflüchtigen speicher
DE112020002526B4 (de) Blockmodusumschaltung in datenspeichersystem
DE102017104283A1 (de) Löschgeschwindigkeitsbasierte wortleitungssteuerung
DE112018000181T5 (de) System und verfahren für die schnelle ausführung von kapselinternen befehlen
DE112017002941T5 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
CN113297096A (zh) 用于固态存储装置服务质量的可变读取扫描
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112020004591T5 (de) L2P-Übersetzungstechniken in begrenzten RAM-Systemen
DE102012112354A1 (de) Speichervorrichtung und nichtflüchtige Speichervorrichtung sowie Betriebsverfahren davon
DE102021115373A1 (de) Identifizierte zonen für zonen mit optimaler paritätsteilung
DE102011086227A1 (de) Adress mapping method, data storage device and user device
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102018123961A1 (de) Gruppen-leseaktualisierung
DE112020005350T5 (de) Aktualisieren von korrigierenden lesespannung-offsetwerten in nichtflüchtigen direktzugriffsspeichern
DE112019000161T5 (de) Speicher-cache-verwaltung
US11231883B1 (en) Detecting last page written in multi-plane non-volatile memory
DE102018123887A1 (de) Nichtflüchtiges Speichersystem. das fehlerhafte Blöcke regeneriert
DE102020107504A1 (de) Nichtflüchtiges speicher-array, das zur leistungsverbesserung von beiden seiten angesteuert wird
DE112020003185T5 (de) Einstellung von block-pool-grössen in einem speichersystem
DE112015005742T5 (de) Lastadaptiver algorithmus zum packen von daten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE