DE112020000237T5 - Soft-bit-lesemodusauswahl für nicht-flüchtige speicher - Google Patents

Soft-bit-lesemodusauswahl für nicht-flüchtige speicher Download PDF

Info

Publication number
DE112020000237T5
DE112020000237T5 DE112020000237.3T DE112020000237T DE112020000237T5 DE 112020000237 T5 DE112020000237 T5 DE 112020000237T5 DE 112020000237 T DE112020000237 T DE 112020000237T DE 112020000237 T5 DE112020000237 T5 DE 112020000237T5
Authority
DE
Germany
Prior art keywords
read
area
time
cells
reading
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
DE112020000237.3T
Other languages
English (en)
Inventor
Eran Sharon
Alex Bazarsky
Idan Alrod
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.)
SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US
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 DE112020000237T5 publication Critical patent/DE112020000237T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0023Address circuits or decoders
    • G11C13/0026Bit-line or column circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0023Address circuits or decoders
    • G11C13/0028Word-line or row 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/08Address circuits; Decoders; Word-line control 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/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • G11C2013/0045Read using current through the cell

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Read Only Memory (AREA)

Abstract

Zum Lesen von Daten werden Geräten, Systeme und Verfahren vorgestellt. Eine Steuerung (206) kann eingerichtet sein, um einen Lesemodus aus einer Vielzahl von Lesemodi zum Lesen von Daten aus einem Bereich eines nicht-flüchtigen Speicherarrays (200) auszuwählen. Die Vielzahl von Lesemodi kann mindestens einen zeitbasierten Soft-Bit-Lesemodus einschließen. Die Steuerung (206) kann eingerichtet sein, um einen Satz von Vorspannungsbedingungen an Zellen (306) eines Bereichs anzulegen, so dass Bitleitungsströme, die den Zellen (306) des Bereichs zugeordnet sind, Spannungen an Kondensatoren (804) beeinflussen, die den Zellen (306) des Bereichs zugeordnet sind. Die Steuerung (206) kann eingerichtet sein, um als Reaktion auf das Auswählen eines zeitbasierten Soft-Bit-Lesemodus Hard-Bits und Soft-Bits für einen Bereich durch Abtasten von Kondensatorspannungen, die aus einem angelegten Satz von Vorspannungsbedingungen resultieren, zu mehreren Integrationszeiten zu lesen.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung bezieht sich in verschiedenen Ausführungsformen auf nicht-flüchtige Speicher und insbesondere auf das Lesen von Soft-Bit-Informationen für nicht-flüchtige Speicher.
  • HINTERGRUND
  • Verschiedene Typen nicht-flüchtiger Speicher speichern Daten durch Ändern physikalischer oder elektrischer Eigenschaften nicht-flüchtiger Speicherzellen. Ein Bereich möglicher Werte für eine physikalische oder elektrische Eigenschaft, wie eine gespeicherte Ladung, eine Schwellenspannung, eine Magnetisierung, einen Widerstand oder dergleichen, kann in Zustände unterteilt werden, so dass Zellen in unterschiedlichen Zuständen unterschiedliche Datenwerte aufzeichnen. Daten, die durch Ändern des Zustands einer Zelle gespeichert werden, können durch Abtasten des Zustands einer Zelle in Bezug auf Leseschwellenwerte gelesen werden, die Grenzen zwischen Zuständen definieren.
  • Jedoch kann sich die veränderbare physikalische oder elektrische Eigenschaft einer Zelle nach einem Schreibvorgang aus verschiedenen Gründen verschieben, wie Ladungsverlust oder andere Formen von Energieableitung, Störungen beim Lesen oder Schreiben in benachbarte Zellen, Temperatureffekte oder dergleichen. Wenn sich der gespeicherte Wert einer Zelle über eine Grenze zwischen Zuständen verschiebt, kann das Abtasten des Zustands der Zelle einen fehlerhaften Datenwert erzeugen, der sich von dem ursprünglich in der Zelle gespeicherten Datenwert unterscheidet.
  • Um solche Fehler zu mildern oder zu vermeiden, können Daten mit einem Fehlerkorrekturcode codiert werden, der redundante Daten hinzufügt, bevor die codierten Daten in die Zellen geschrieben werden. Ein Fehlerkorrekturcode-Decodierer kann Hard-Bits und Soft-Bits verwenden, um die ursprünglichen Daten zu decodieren und wiederherzustellen, wobei die Hard-Bits die codierten Daten wie gelesen sind (einschließlich redundanter Bits und möglicher Fehler), und wobei die Soft-Bits Vertrauen in oder Zuverlässigkeit der Hard-Bits anzeigen. Zum Beispiel können Hard-Bits durch Abtasten von Zuständen von Zellen in Bezug auf die „harten“ Leseschwellenwerte erhalten werden, die Grenzen zwischen Zuständen definieren, und Soft-Bits können durch Abtasten von Zuständen von Zellen in Bezug auf zusätzliche „weiche“ Leseschwellenwerte erhalten werden, um zu bestimmen, ob die gespeicherten Werte von Zellen in die Nähe einer oder möglicherweise über eine Grenze zwischen Zuständen gedriftet sind. Die Verwendung zusätzlicher Zeit zum Abtasten von Zellzuständen relativ zu zusätzlichen Leseschwellenwerten kann jedoch die Leselatenz erheblich erhöhen.
  • KU RZDARSTELLU NG
  • Es werden Geräte zum Lesen von Daten vorgestellt. Ein Gerät schließt in einigen Ausführungsformen ein Array von nicht-flüchtigen Speicherzellen und eine Steuerung ein. In einigen Ausführungsformen ist eine Steuerung eingerichtet, um einen Lesemodus aus einer Vielzahl von Lesemodi zum Lesen von Daten aus einem Bereich des Arrays auszuwählen. In weiteren Ausführungsformen schließt eine Vielzahl von Lesemodi mindestens einen zeitbasierten Soft-Bit-Lesemodus ein. In einigen Ausführungsformen ist eine Steuerung eingerichtet, um einen Satz von Vorspannungsbedingungen an Zellen eines Bereichs anzulegen, so dass Bitleitungsströme, die den Zellen des Bereichs zugeordnet sind, Spannungen an Kondensatoren beeinflussen, die den Zellen des Bereichs zugeordnet sind. In einigen Ausführungsformen ist eine Steuerung eingerichtet, um als Reaktion auf das Auswählen eines zeitbasierten Soft-Bit-Lesemodus Hard-Bits und Soft-Bits für einen Bereich durch Abtasten von Kondensatorspannungen, die aus einem angelegten Satz von Vorspannungsbedingungen resultieren, zu mehreren Integrationszeiten zu lesen.
  • Es werden Verfahren zum Lesen von Daten vorgestellt. Ein Verfahren schließt in einigen Ausführungsformen das Bestimmen, ob ein zeitbasierter Soft-Bit-Lesemodus zum Lesen von Daten aus einem Bereich des nicht-flüchtigen Speichers verwendet werden soll, ein. In einigen Ausführungsformen schließt ein Verfahren das Anlegen eines Satzes von Vorspannungen an Zellen eines Bereichs ein, so dass Zustände der Zellen analoge Spannungen an Abtastverstärkern beeinflussen, die den Zellen zugeordneten sind. In einigen Ausführungsformen schließt ein Verfahren als Reaktion auf das Bestimmen, einen zeitbasierten Soft-Bit-Lesemodus zu verwenden, das Lesen von Hard-Bits und Soft-Bits für einen Bereich durch Umwandeln analoger Spannungen, die durch angelegte Vorspannungen beeinflusst werden, in digitale Abtastverstärkerergebnisse zu mehreren Integrationszeiten ein.
  • Ein Gerät schließt in einer anderen Ausführungsform Mittel zum Auswählen eines Lesemodus aus einer Vielzahl von Lesemodi zum Lesen von Daten aus einem Bereich des nicht-flüchtigen Speichers ein. In weiteren Ausführungsformen schließt eine Vielzahl von Lesemodi mindestens einen zeitbasierten Soft-Bit-Lesemodus ein. In einigen Ausführungsformen schließt ein Gerät Mittel zum Erzeugen analoger Spannungen basierend auf Daten ein, die von Zellen eines Bereichs gespeichert werden. In weiteren Ausführungsformen schließt ein Gerät Mittel zum Digitalisieren analoger Spannungen zu einer Anzahl von Integrationszeiten basierend auf dem ausgewählten Lesemodus ein.
  • Figurenliste
  • Eine speziellere Beschreibung wird nachstehend unter Bezugnahme auf spezifische, in den beigefügten Zeichnungen veranschaulichte Ausführungsformen eingeschlossen. Angesichts dessen, dass diese Zeichnungen nur bestimmte Ausführungsformen der Offenbarung darstellen und deshalb nicht als ihren Umfang einschränkend betrachtet werden sollen, wird die Offenbarung mit zusätzlicher Spezifität und Detailgenauigkeit durch die Verwendung der beigefügten Zeichnungen beschrieben und erläutert, wobei:
    • 1 ein schematisches Blockdiagramm ist, das eine Ausführungsform eines Systems veranschaulicht, das Lesekomponenten aufweist;
    • 2 ein schematisches Blockdiagramm ist, das eine Ausführungsform eines nicht-flüchtigen Speicherelements veranschaulicht, das eine Lesekomponente aufweist;
    • 3 ein schematisches Blockdiagramm ist, das eine Ausführungsform einer nicht-flüchtigen Speicherzelle und zugehörige Vorspannungsschaltungen veranschaulicht;
    • 4 ein schematisches Blockdiagramm ist, das eine weitere Ausführungsform einer nicht-flüchtigen Speicherzelle und zugehörige Vorspannungsschaltungen veranschaulicht;
    • 5 ein Graph ist, der eine Verteilung von Schwellenspannungen für Zellen eines nicht-flüchtigen Speicherarrays in einer Ausführungsform veranschaulicht;
    • 6 ein Graph ist, der eine Verteilung von Schwellenspannungen nahe einer Grenze zwischen Zuständen in einer Ausführungsform veranschaulicht;
    • 7 ein schematisches Blockdiagramm ist, das eine Ausführungsform eines Abtastverstärkers veranschaulicht;
    • 8 ein schematisches Blockdiagramm ist, das eine weitere Ausführungsform eines Abtastverstärkers veranschaulicht;
    • 9 ein schematisches Blockdiagramm ist, das eine Ausführungsform einer Lesekomponente veranschaulicht;
    • 10 ein schematisches Blockdiagramm ist, das eine weitere Ausführungsform einer Lesekomponente veranschaulicht;
    • 11 ein Flussdiagramm ist, das eine Ausführungsform eines Verfahrens zum Lesen von Daten veranschaulicht; und
    • 12 ein Flussdiagramm ist, das eine weitere Ausführungsform eines Verfahrens zum Lesen von Daten veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG
  • Gesichtspunkte der vorliegenden Offenbarung können als ein Gerät, System, Verfahren oder Computerprogramm ausgeführt sein. Folglich können Gesichtspunkte der vorliegenden Offenbarung die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode, oder dergleichen) oder einer Software- und Hardwareaspekte kombinierenden Ausführungsform annehmen, die alle allgemein hierin als „Schaltung“, „Modul“, „Gerät“ oder „System“ bezeichnet werden können. Weiterhin können Gesichtspunkte der vorliegenden Offenbarung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren nichttransitorischen computerlesbaren Speichermedien verkörpert ist, die einen computerlesbaren und/oder ausführbaren Programmcode speichern.
  • Viele der in dieser Patentschrift beschriebenen Funktionseinheiten wurden als Module bezeichnet, um ihre Implementierungsunabhängigkeit zusätzlich hervorzuheben. Zum Beispiel kann ein Modul als eine Hardwareschaltung implementiert sein, die kundenspezifische VLSI-Schaltungen oder Gate-Arrays, handelsübliche Halbleiter wie Logikchips, Transistoren oder anderen diskrete Komponenten, aufweist. Ein Modul kann auch in programmierbaren Hardwarevorrichtungen wie feldprogrammierbaren Gate-Arrays, einer programmierbaren Array-Logik, programmierbaren Logikvorrichtungen oder dergleichen implementiert sein.
  • Module können auch zumindest teilweise in Software zur Ausführung durch verschiedene Arten von Prozessoren implementiert sein. Ein identifiziertes Modul ausführbarer Codes kann beispielsweise einen oder mehrere physische oder logische Blöcke von Computeranweisungen aufweisen, die beispielsweise als ein Objekt, eine Prozedur oder eine Funktion organisiert sein können. Nichtsdestotrotz müssen die ausführbaren Programme eines identifizierten Moduls nicht physisch zusammen angeordnet sein, sondern können unterschiedliche Anweisungen aufweisen, die an verschiedenen Orten gespeichert sind, die, wenn sie logisch miteinander verbunden sind, das Modul aufweisen und den angegebenen Zweck für das Modul erfüllen.
  • Infolgedessen kann ein Modul ausführbarer Codes eine einzelne Anweisung oder viele Anweisungen einschließen und kann sogar über mehrere unterschiedliche Codesegmente, in verschiedenen Programmen, über mehrere Speichervorrichtungen oder dergleichen verteilt sein. Wo ein Modul oder Teile eines Moduls in Software implementiert sind, können die Softwareteile auf einem oder mehreren computerlesbaren und/oder ausführbaren Speichermedien gespeichert sein. Jede Kombination von einem oder mehreren computerlesbaren Speichermedien kann verwendet werden. Ein computerlesbares Speichermedium kann beispielsweise, ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, ein Gerät oder eine Vorrichtung oder irgendeine geeignete Kombination der vorstehenden sein, würde aber keine sich ausbreitenden Signale einschließen. Im Kontext dieses Dokuments kann ein computerlesbares und/oder ausführbares Speichermedium jedes konkrete und/oder nicht-flüchtige Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem Befehlsausführungssystem, einem Gerät, einem Prozessor oder einer Vorrichtung enthalten oder speichern kann.
  • Ein Computerprogrammcode zur Durchführung von Vorgängen für Gesichtspunkte der vorliegenden Offenbarung kann in einer beliebigen Kombination von einer oder mehreren Programmiersprachen geschrieben werden, einschließlich einer objektorientierten Programmiersprache wie Python, Java, Smalltalk, C++, C#, Objektiv C oder dergleichen, herkömmlicher prozeduraler Programmiersprachen wie die Programmiersprache „C“, Skript-Programmiersprachen und/oder anderer ähnlicher Programmiersprachen. Der Programmcode kann teilweise oder vollständig auf einem oder mehreren Computern eines Benutzers und/oder auf einem entfernten Computer oder Server über ein Datennetz oder dergleichen ausgeführt werden.
  • Eine Komponente, wie sie hierin verwendet wird, weist eine konkrete, physische, nicht-flüchtige Vorrichtung auf. Zum Beispiel kann eine Komponente als eine Hardware-Logikschaltung implementiert sein, die kundenspezifische VLSI-Schaltungen, Gate-Arrays oder andere integrierte Schaltungen; handelsübliche Halbleiter, wie Logikchips, Transistoren oder andere diskrete Vorrichtungen; und/oder andere mechanische oder elektrische Vorrichtungen aufweist. Eine Komponente kann auch in programmierbaren Hardwarevorrichtungen wie feldprogrammierbaren Gate-Arrays, einer programmierbaren Array-Logik, programmierbaren Logikvorrichtungen oder dergleichen implementiert sein. Eine Komponente kann eine oder mehrere siliziumbasierte integrierte Schaltungsvorrichtungen (z. B. Chips, Dies, Die-Ebenen, Pakete) oder andere diskrete elektrische Vorrichtungen in elektrischer Verbindung mit einer oder mehreren anderen Komponenten über elektrische Leitungen einer Schaltungsplatine (PCB) oder dergleichen aufweisen. Jedes der hierin beschriebenen Module kann in bestimmten Ausführungsformen alternativ durch eine Komponente verkörpert oder implementiert sein.
  • Eine Schaltung, wie hierin verwendet, weist einen Satz von einer oder mehreren elektrischen und/oder elektronischen Komponenten auf, die einen oder mehrere Wege für elektrischen Strom bereitstellen. In bestimmten Ausführungsformen kann eine Schaltung einen Rückführweg für elektrischen Strom einschließen, so dass die Schaltung eine geschlossene Schleife ist. In einer anderen Ausführungsform kann jedoch ein Satz von Komponenten, der keinen Rückführweg für elektrischen Strom einschließt, als eine Schaltung (z. B. eine offene Schleife) bezeichnet werden. Zum Beispiel kann eine integrierte Schaltung unabhängig davon als eine Schaltung bezeichnet werden, ob die integrierte Schaltung an Masse gekoppelt ist (als Rückführweg für elektrischen Strom) oder nicht. In verschiedenen Ausführungsformen kann eine Schaltung einen Abschnitt einer integrierten Schaltung, eine integrierte Schaltung, einen Satz von integrierten Schaltungen, einen Satz von nicht integrierten elektrischen und/oder elektrischen Komponenten, mit oder ohne Vorrichtungen mit integrierter Schaltung, oder dergleichen einschließen. In einer Ausführungsform kann eine Schaltung individuelle VLSI-Schaltungen, Gate-Arrays, Logikschaltungen oder andere integrierte Schaltungen; handelsübliche Halbleiter, wie Logikchips, Transistoren oder andere diskrete Vorrichtungen; und/oder andere mechanische oder elektrische Vorrichtungen aufweisen. Eine Schaltung kann auch als eine synthetisierte Schaltung in einer programmierbaren Hardwarevorrichtung, wie einem feldprogrammierbaren Gate-Array, einer programmierbaren Array-Logik, einer programmierbaren Logikvorrichtung oder dergleichen (z. B. als Firmware, Netzliste oder dergleichen) implementiert sein. Eine Schaltung kann eine oder mehrere integrierte Schaltungsvorrichtungen auf Siliziumbasis (z. B. Chips, Dies, Die-Ebenen, Pakete) oder andere diskrete elektrische Vorrichtungen aufweisen, die mit einer oder mehreren anderen Komponenten über elektrische Leitungen einer Schaltungsplatine (Printed Circuit Board, PCB) oder dergleichen elektrisch verbunden sind. Jedes der hierin beschriebenen Module kann in bestimmten Ausführungsformen durch eine Schaltung verkörpert oder implementiert sein.
  • Die Bezugnahme auf „eine Ausführungsform“, „Ausführungsform“ oder ein ähnlicher Sprachgebrauch in dieser Patentschrift bedeutet, dass ein bestimmtes Merkmal, eine spezielle Struktur oder Charakteristik, die in Verbindung mit der Ausführungsform beschrieben ist, in mindestens einer Ausführungsform der vorliegenden Offenbarung eingeschlossen ist. Daher können die Ausdrücke „in einer Ausführungsform“, „in der Ausführungsform“ und ähnlich gelagerter Sprachgebrauch in dieser Beschreibung, wo sie vorkommen, sich nicht notwendigerweise alle auf dieselbe Ausführungsform beziehen, sondern „eine oder mehrere, aber nicht alle Ausführungsformen“ bedeuten, sofern nicht ausdrücklich etwas anderes angegeben ist. Die Begriffe „einschließlich“, „aufweisend“, „haben“ und Variationen dessen bedeuten „einschließlich, aber nicht darauf beschränkt“, sofern nicht ausdrücklich etwas anderes angegeben ist. Eine aufzählende Auflistung von Elementen impliziert nicht, dass sich irgendeines oder alle der Elemente gegenseitig ausschließen und/oder gegenseitig einschließen, sofern nicht ausdrücklich etwas anderes angegeben ist. Die Begriffe „ein/e/s“, und „der/die/das“ beziehen sich auch auf „eines oder mehrere“, sofern nicht ausdrücklich etwas anderes angegeben ist.
  • Gesichtspunkte der vorliegenden Offenbarung werden unten unter Bezugnahme auf schematische Flussdiagramme und/oder schematische Blockdiagramme von Verfahren, Vorrichtungen, Systemen und Computerprogrammprodukten gemäß Ausführungsformen der Offenbarung beschrieben. Es versteht sich, dass jeder Block der schematischen Flussdiagramme und/oder schematischen Blockdiagramme und Kombinationen von Blöcken in den schematischen Flussdiagrammen und/oder schematischen Blockdiagrammen durch Computerprogrammanweisungen implementiert werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Computers oder einem anderen programmierbaren Rechengerät bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Anweisungen, die über den Prozessor oder ein anderes programmierbares Rechengerät ausgeführt werden, Mittel zum Implementieren der Funktionen und/oder Schritte erzeugen, die in den schematischen Flussdiagrammen und/oder schematischen Blockdiagrammen Block oder Blöcken spezifiziert sind.
  • Es sollte auch beachtet werden, dass in einigen alternativen Implementierungen die in dem Block angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, abhängig von der involvierten Funktionalität. Andere Schritte und Verfahren, die in Funktion, Logik oder Wirkung äquivalent zu einem oder mehreren Blöcken, oder Teilen davon, der veranschaulichten Figuren sind, können konzipiert werden. Obwohl verschiedene Pfeilarten und Linienarten in dem Flussdiagramm und/oder den Blockdiagrammen verwendet werden können, sind sie so zu verstehen, dass sie den Umfang der entsprechenden Ausführungsformen nicht einschränken. Zum Beispiel kann ein Pfeil eine Warte- oder Überwachungsperiode einer nicht spezifizierten Dauer zwischen aufgezählten Schritten der dargestellten Ausführungsform angeben.
  • In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil davon bilden. Die vorhergehende Kurzdarstellung ist nur veranschaulichend und soll in keiner Weise einschränkend sein. Zusätzlich zu den vorstehend beschriebenen veranschaulichenden Gesichtspunkten, Ausführungsformen und Merkmalen werden weitere Gesichtspunkte, Ausführungsformen und Merkmale unter Bezugnahme auf die Zeichnungen und die folgende ausführliche Beschreibung deutlich. Die Beschreibung von Elementen in jeder Figur kann auf Elemente von fortlaufenden Figuren Bezug nehmen. Gleiche Bezugszeichen können auf gleiche Elemente in den Figuren Bezug nehmen, einschließlich alternativer Ausführungsformen gleicher Elemente.
  • Wie hierin verwendet, schließt eine Liste mit einer Verknüpfung von „und/oder“ einen beliebigen einzelnen Eintrag in der Liste oder eine Kombination von Einträgen in der Liste ein. Zum Beispiel schließt eine Liste von A, B und/oder C nur A, nur B, nur C, eine Kombination von A und B, eine Kombination von B und C, eine Kombination von A und C oder eine Kombination von A, b und C ein. Wie hierin verwendet, schließt eine Liste, welche die Terminologie „eines oder mehrere von“ verwendet, einen beliebigen einzelnen Eintrag in der Liste oder eine Kombination von Einträgen in der Liste ein. Zum Beispiel schließen eines oder mehrere von A, B und C nur A, nur B, nur C, eine Kombination von A und B, eine Kombination von B und C, eine Kombination von A und C oder eine Kombination von A, B und C ein. Wie hierin verwendet, schließt eine Liste, welche die Terminologie „eines von“ verwendet, eines und nur eines von einem einzelnen Eintrag in der Liste ein. Zum Beispiel schließt „eines von A, B und C“ nur A, nur B oder nur C ein und schließt Kombinationen von A, B und C aus. Wie hierin verwendet, schließt „ein Mitglied ausgewählt aus der Gruppe bestehend aus A, B und C“ eines und nur eines von A, B oder C ein und schließt Kombinationen von A, B und C aus. Wie hierin verwendet, schließt „ein Mitglied ausgewählt aus der Gruppe bestehend aus A, B und C und Kombinationen davon“ nur A, nur B, nur C, eine Kombination von A und B, eine Kombination von B und C, eine Kombination von A und C oder eine Kombination von A, B und C ein.
  • 1 ist ein Blockdiagramm einer Ausführungsform eines Systems 100, das Lesekomponenten 150 für eine nicht-flüchtige Speichervorrichtung 120 aufweist. Die Lesekomponenten 150 können Teil von nicht-flüchtigen Speicherelementen 123 sein und können mit einer Vorrichtungssteuerung 126 außerhalb der nicht-flüchtigen Speicherelemente 123, einem Vorrichtungstreiber oder dergleichen in Kommunikation stehen. Die Lesekomponenten 150 können in einem nicht-flüchtigen Speichersystem 102 einer Rechenvorrichtung 110 arbeiten, die einen Prozessor 111, flüchtigen Speicher 112 und eine Kommunikationsschnittstelle 113 aufweisen kann. Der Prozessor 111 kann eine oder mehrere zentrale Verarbeitungseinheiten, einen oder mehrere Universalprozessoren, einen oder mehrere anwendungsspezifische Prozessoren, einen oder mehrere virtuelle Prozessoren (z. B. kann die Rechenvorrichtung 110 eine virtuelle Maschine sein, die in einem Host arbeitet), einen oder mehrere Prozessorkerne oder dergleichen aufweisen. Die Kommunikationsschnittstelle 113 kann eine oder mehrere Netzwerkschnittstellen aufweisen, die eingerichtet sind, um die Datenverarbeitungsvorrichtung 110 und/oder die nicht-flüchtige Speichersteuereinheit 124 mit einem Kommunikationsnetzwerk 115, wie etwa einem IP-Netzwerk (Internet Protocol), einem SAN-Netzwerk (Storage Area Network), oder dergleichen zu koppeln.
  • Die nicht-flüchtige Speichervorrichtung 120 kann in verschiedenen Ausführungsformen an einem oder mehreren unterschiedlichen Orten bezogen auf die Rechenvorrichtung 110 angeordnet sein. In einer Ausführungsform weist die nicht-flüchtige Speichervorrichtung 120 ein oder mehrere nicht-flüchtige Speicherelemente 123 auf, wie Halbleiterchips oder Gehäuse oder andere Vorrichtungen mit integrierter Schaltung, die auf einer/m oder mehreren gedruckten Leiterplatten, Lagergehäusen und/oder anderen mechanischen und/oder elektrischen Trägerstrukturen angeordnet sind. Beispielsweise kann die nicht-flüchtige Speichervorrichtung 120 eine oder mehrere Karten für ein direktes Inline-Speichermodul (Direct Inline Memory Module, DIMM), eine oder mehrere Erweiterungskarten und/oder Tochterkarten, ein Festkörperlaufwerk (Solid-State-Drive, SSD) oder eine andere Festplattenvorrichtung aufweisen und/oder kann einen anderen Speicher - und/oder Speicherungsformfaktor haben. Die nicht-flüchtige Speichervorrichtung 120 kann in einer Hauptplatine der Rechenvorrichtung 110 integriert und/oder darauf montiert sein, in einem Port und/oder Steckplatz der Rechenvorrichtung 110 installiert sein, auf einer anderen Rechenvorrichtung 110 und/oder einem dedizierten Speichergerät auf dem Netzwerk 115 installiert sein, mit der Rechenvorrichtung 110 über einen externen Bus (z. B. eine externe Festplatte) in Kommunikation sein oder dergleichen.
  • Die nicht-flüchtige Speichervorrichtung 120 kann in einer Ausführungsform auf einem Speicherbus eines Prozessors 111 (z. B. auf demselben Speicherbus wie der flüchtige Speicher 112, auf einem anderen Speicherbus als der flüchtige Speicher 112, anstelle des flüchtigen Speichers 112 oder dergleichen) angeordnet sein. In einer weiteren Ausführungsform kann die nicht-flüchtige Speichervorrichtung 120 auf einem peripheren Bus der Rechenvorrichtung 110, wie einem Peripheral Component Interconnect Express-Bus (PCI Express oder PCIe-Bus), einem Serial Advanced Technology Attachment-Bus (SATA-Bus), einem Parallel Advanced Technology Attachment-Bus (PATA-Bus), einem Small Computer System Interface-Bus (SCSI-Bus), einem FireWire-Bus, einer Fibre Channel-Verbindung, einem Universal Serial Bus (USB), einem PCle Advanced Switching-Bus (PCIe-AS-Bus) oder dergleichen, angeordnet sein. In einer anderen Ausführungsform kann die nicht-flüchtige Speichervorrichtung 120 auf einem Datennetzwerk 115, wie einem Ethernet-Netzwerk, einem Infiniband-Netzwerk, SCSI-RDMA über ein Netzwerk 115, einem Speicherbereichsnetzwerk (Storage Area Network, SAN), einem lokalen Netzwerk (Local Area Network, LAN) einem Weitverkehrsnetzwerk (Wide Area Network, WAN), wie dem Internet, einem anderen drahtgebundenen und/oder drahtlosen Netzwerk 115 oder dergleichen, angeordnet sein.
  • Die Rechenvorrichtung 110 kann weiterhin ein nicht-transitorisches computerlesbares Speichermedium 114 aufweisen. Das computerlesbare Speichermedium 114 kann ausführbare Anweisungen aufweisen, die eingerichtet sind, um zu bewirken, dass die Rechenvorrichtung 110 (z. B. Prozessor 111) Schritte eines oder mehrerer der hierin offenbarten Verfahren ausführt.
  • In der dargestellten Ausführungsform schließen die nicht-flüchtigen Speicherelemente 123 Lesekomponenten 150 ein. In einigen Ausführungsformen können nicht-flüchtige Speicherelemente 123 Daten in Speicherzellen speichern, indem sie physikalische oder elektrische Eigenschaften der Zellen ändern. Unterschiedliche Zustände für Zellen können unterschiedlichen Datenwerten entsprechen. In einigen Ausführungsformen kann eine Lesekomponente 150 Daten eines nicht-flüchtigen Speicherelements 123 lesen, indem Vorspannungsbedingungen über Bitleitungen, Wortleitungen, Sourceleitungen und/oder dergleichen an Speicherzellen angelegt werden, so dass elektrische Ströme in Bitleitungen durch Zellzustände beeinflusst werden. Somit können unterschiedliche Bitleitungsströme unterschiedlichen gespeicherten Datenwerten entsprechen. Zum Beispiel kann ein Strom über einem Schwellenwert anzeigen, dass ein gespeicherter Datenwert eine binäre „0“ ist, und ein Strom unter dem Schwellenwert kann anzeigen, dass der gespeicherte Datenwert eine binäre „1“ ist.
  • In einigen Ausführungsformen können kleine Unterschiede in Bitleitungsströmen durch Aufsummieren oder Integrieren der Bitleitungsströme über einen bestimmten Zeitraum abgetastet oder verstärkt werden. Zum Beispiel können Bitleitungen mit Kondensatoren gekoppelt werden, die durch Bitleitungsströme geladen oder entladen werden, so dass sich Kondensatorspannungen summieren oder die Bitleitungsströme über die Zeit integrieren. Nach einer Integrationszeit können analoge Kondensatorspannungen abgetastet werden, um digitale Datenwerte zu erzeugen. Zum Beispiel kann eine Kondensatorspannung mit einer Referenzspannung verglichen werden, die an das Gate eines Transistors angelegt wird, um zu bestimmen, ob die Kondensatorspannung den Transistor ein- oder ausschaltet, oder dergleichen, um eine binäre Null oder Eins zu erzeugen. Verschiedene andere oder weitere Arten von Hardware können verwendet werden, um Bitleitungsströme in analoge Spannungen und dann in digitale Datenwerte umzuwandeln.
  • Die physikalische oder elektrische Eigenschaft einer Speicherzelle, die geändert wird, um Daten aufzuzeichnen, kann sich jedoch aus verschiedenen Gründen verschieben, nachdem die Daten geschrieben wurden, wie etwa Ladungsverlust oder andere Formen von Energieableitung, Störungen beim Lesen oder Schreiben in benachbarte Zellen, Temperatureffekte oder dergleichen. Wenn sich die veränderbare Zelleneigenschaft über eine Grenze zwischen Zuständen verschiebt, kann eine Lesekomponente 150 fehlerhafte Daten aus der Zelle lesen. Das Codieren von Daten mit einem Fehlerkorrekturcode vor dem Speichern der Daten kann Redundanz hinzufügen, wodurch die ursprünglichen Daten trotz des Vorhandenseins einiger Fehler decodiert werden können. Ein Decodierer kann Hard-Bits und Soft-Bits verwenden, um die ursprünglichen Daten zu decodieren und wiederherzustellen, wobei die Hard-Bits die codierten Daten wie gelesen sind (einschließlich redundanter Bits und möglicher Fehler), und wobei die Soft-Bits Vertrauen in oder Zuverlässigkeit der Hard-Bits anzeigen.
  • In einigen Ausführungsformen kann eine Lesekomponente 150 Hard-Bits aus Zellen unter Verwendung des oben beschriebenen Prozesses des Anlegens von Vorspannungsbedingungen an Speicherzellen lesen, so dass Bitleitungsströme Kondensatorspannungen beeinflussen, die nach einer Integrationszeit abgetastet oder in binäre Ausgaben umgewandelt werden. In weiteren Ausführungsformen kann eine Lesekomponente 150 Soft-Bits lesen, indem derselbe Prozess mit unterschiedlichen Vorspannungsbedingungen wiederholt wird. Zum Beispiel kann eine Lesekomponente 150 unterschiedliche Soft-Bit-Werte ausgeben, die angeben, ob ein entsprechendes Hard-Bit weniger zuverlässig oder zuverlässiger ist, abhängig davon, ob eine kleine Erhöhung oder Verringerung einer Vorspannung für eine Zelle die resultierende Hard-Bit-Ausgabe ändert oder die Hard-Bit-Ausgabe unverändert lässt. Jedoch können mehrere Wiederholungen des Prozesses des Anwendens von Vorspannungsbedingungen und Abtastens von Ergebnissen die Leselatenz für ein nicht-flüchtiges Speicherelement 123 erheblich erhöhen.
  • Somit kann in einigen Ausführungsformen eine Lesekomponente 150 Hard-Bits und Soft-Bits lesen, indem Vorspannungsbedingungen an Speicherzellen angelegt werden, so dass Bitleitungsströme Kondensatorspannungen beeinflussen, und indem die resultierenden Kondensatorspannungen zu mehreren Integrationszeiten abgetastet oder digitalisiert werden. Das einmalige Anlegen von Vorspannungsbedingungen an die Zellen und das Abtasten der resultierenden Kondensatorspannungen zu mehreren Zeiten kann es einer Lesekomponente 150 ermöglichen, Hard-Bits und Soft-Bits in weniger Zeit zu lesen, als es dauern würde, die Soft-Bits durch wiederholtes Anlegen unterschiedlicher Vorspannungsbedingungen und Abtasten der resultierenden Kondensatorspannungen zu lesen.
  • Zusätzlich kann in einigen Ausführungsformen eine Lesekomponente 150 mehrere Lesemodi mit unterschiedlichen Kompromissen zwischen Zuverlässigkeit und Geschwindigkeit bereitstellen oder zwischen diesen auswählen. Zum Beispiel kann eine Lesekomponente 150 einen Hard-Bit-Lesemodus mit höherer Geschwindigkeit und niedrigerer Zuverlässigkeit, in welchem sie Soft-Bits nicht liest, einen zeitbasierten Soft-Bit-Lesemodus mit mittlerer Geschwindigkeit und mittlerer Zuverlässigkeit, in welchem die Lesekomponente 150 Hard-Bits und Soft-Bits liest, bereitstellen, indem sie Kondensatorspannungen abtastet, die aus einer einzelnen Anwendung von Vorspannungsbedingungen resultieren, wobei die Spannungen zu mehreren Integrationszeiten abgetastet werden, und/oder einen vorspannungsbasierten Soft-Bit-Lesemodus, in welchem die Lesekomponente 150 Hard-Bits und Soft-Bits liest, indem sie wiederholt unterschiedliche Vorspannungsbedingungen anlegt und die resultierenden Kondensatorspannungen abtastet.
  • In einigen Ausführungsformen kann eine Lesekomponente 150 einen Lesemodus zum Lesen von Daten aus einem Bereich eines nicht-flüchtigen Speicherarrays (z. B. einem Array in einem nicht-flüchtigen Speicherelement 123) auswählen. Die Lesekomponente 150 kann den Lesemodus aus einer Vielzahl von Lesemodi auswählen, einschließlich mindestens eines zeitbasierten Soft-Bit-Lesemodus. In einigen Ausführungsformen kann eine Lesekomponente 150 einen Satz von Vorspannungsbedingungen (z. B. eine oder mehrere Vorspannungen) an Zellen eines Bereichs anlegen, so dass Bitleitungsströme, die Zellen des Bereichs zugeordnet sind, Spannungen an Kondensatoren beeinflussen, die Zellen des Bereichs zugeordnet sind. Als Reaktion auf das Auswählen des zeitbasierten Soft-Bit-Lesemodus kann die Lesekomponente 150 Hard-Bits und Soft-Bits für einen Bereich lesen, indem Kondensatorspannungen, die aus dem angelegten Satz von Vorspannungsbedingungen resultieren, zu mehreren Integrationszeiten abgetastet werden. Das Bereitstellen mehrerer Lesemodi kann es einer Lesekomponente 150 ermöglichen, Lesezeiten mit hoher Latenz oder hohe Fehlerraten zu vermeiden, indem ein Lesemodus basierend auf Bedingungen wie Zeit seit dem Schreiben von Daten, Temperaturdifferenz seit dem Schreiben von Daten oder dergleichen ausgewählt wird. Lesekomponenten 150 werden weiterhin unten unter Bezugnahme auf die 2- 12 ausführlicher beschrieben.
  • In einer Ausführungsform ist die nicht-flüchtige Speichervorrichtung 120 dazu eingerichtet, Anforderungen von einem Vorrichtungstreiber oder einer anderen ausführbaren Anwendung über Busse 125, 127, eine Vorrichtungssteuerung 126 oder dergleichen zu empfangen. Die nicht-flüchtige Speichervorrichtung 120 kann weiterhin dazu eingerichtet sein, Daten zu/von einem Vorrichtungstreiber und/oder Speicher-Clients 116 über den Bus 125 zu übertragen. Dementsprechend kann die nicht-flüchtige Speichervorrichtung 120 in einigen Ausführungsformen ein oder mehrere Direktspeicherzugriffsmodule (DMA-Module), Remote-DMA-Module, Bus-Steuerungen, Brücken, Puffer usw. aufweisen und/oder mit diesen in Kommunikation stehen, um die Übertragung von Speicheranforderungen und zugehörigen Daten zu erleichtern. In einer anderen Ausführungsform kann die nicht-flüchtige Speichervorrichtung 120 Speicheranforderungen als API-Aufruf von einem Speicher-Client 116, als IO-CTL-Befehl oder dergleichen, empfangen.
  • Gemäß verschiedenen Ausführungsformen kann eine Vorrichtungssteuerung 126 eine oder mehrere nicht-flüchtige Speichervorrichtungen 120 und/oder nicht-flüchtige Speicherelemente 123 verwalten. Die nicht-flüchtige(n) Speichervorrichtung(en) 120 können Aufzeichnungs-, Speicher- und/oder Speicherungsvorrichtungen aufweisen, wie Festkörperspeichervorrichtung(en) und/oder Halbleiterspeichervorrichtung(en), die als eine Vielzahl von adressierbaren Medienspeicherorten angeordnet und/oder darin unterteilt sind. Wie hierin verwendet bezieht sich ein Medienspeicherort auf jede physische Einheit eines Speichers (z. B. jede Menge an physischen Speichermedien auf einer nicht-flüchtigen Speichervorrichtung 120). Speichereinheiten können unter anderem Folgendes einschließen: Seiten, Speicherbereiche, Blöcke, Sektoren, Sammlungen oder Sätze von physischen Speicherorten (z. B. logische Seiten, logische Blöcke) oder dergleichen.
  • Ein Vorrichtungstreiber und/oder die Vorrichtungssteuerung 126 können in bestimmten Ausführungsformen einen logischen Adressraum 134 für die Speicher-Clients 116 bieten. Wie hierin verwendet, bezieht sich ein logischer Adressraum 134 auf eine logische Darstellung von Speicherressourcen. Der logische Adressraum 134 kann eine Vielzahl (z. B. einen Bereich) von logischen Adressen aufweisen. Wie hierin verwendet, bezieht sich eine logische Adresse auf jeden Identifikator zum Referenzieren einer Speicherressource (z. B. Daten), einschließlich, ohne jedoch darauf beschränkt zu sein: einer logische Blockadresse (LBA), einer Zylinder/Kopf/Sektor-(Cylinder/Head/Sector, CHS) Adresse, eines Dateinamens, eines Objektidentifikators, einer Inode, eines universellen eindeutigen Identifikators (Universally Unique Identifier, UUID), eines global eindeutigen Identifikators (Globally Unique Identifier, GUID), eines Hash-Codes, einer Signatur, eines Indexeintrags, eines Bereichs, eines Umfangs oder dergleichen.
  • Ein Vorrichtungstreiber für die nicht-flüchtige Speichervorrichtung 120 kann Metadaten 135, wie eine Logisch-zu-Physisch-Adressabbildungsstruktur, unterhalten, um logische Adressen des logischen Adressraums 134 in Medienspeicherorten auf den/die nicht-flüchtige(n) Speichervorrichtung(en) 120 abzubilden. Ein Vorrichtungstreiber kann dazu eingerichtet sein, Speicherdienste für einen oder mehrere Speicher-Clients 116 bereitzustellen. Die Speicher-Clients 116 können lokale Speicher-Clients 116, die auf der Rechenvorrichtung 110 arbeiten, und/oder Remote-Speicher-Clients 116 einschließen, auf die über das Netzwerk 115 und/oder die Netzwerkschnittstelle 113 zugegriffen werden kann. Die Speicher-Clients 116 können einschließen, ohne jedoch darauf beschränkt zu sein: Betriebssysteme, Dateisysteme, Datenbankanwendungen, Serveranwendungen, Prozesse auf Kernel-Ebene, Benutzerebenenprozesse, Anwendungen und dergleichen.
  • Ein Vorrichtungstreiber kann kommunikativ mit einer oder mehreren nicht-flüchtigen Speichervorrichtungen 120 gekoppelt sein. Die eine oder mehreren nicht-flüchtigen Speichervorrichtungen 120 können unterschiedliche Typen von nicht-flüchtigen Speichervorrichtungen einschließen, einschließlich unter anderem Folgendem: Festkörperspeichervorrichtungen, Halbleiterspeichervorrichtungen, SAN-Speicherressourcen oder dergleichen. Die eine oder mehreren nicht-flüchtigen Speichervorrichtungen 120 können einen oder mehrere jeweilige Steuerungen 126 und nicht-flüchtige Speichermedien 122 aufweisen. Ein Vorrichtungstreiber kann Zugriff auf die eine oder die mehreren nicht-flüchtigen Speichervorrichtungen 120 über eine herkömmliche Block-E/A-Schnittstelle 131 bereitstellen. Zusätzlich kann ein Vorrichtungstreiber Zugriff auf eine verbesserte Funktionalität über die SCM-Schnittstelle 132 bereitstellen. Die Metadaten 135 können verwendet werden, um Datenvorgänge zu verwalten und/oder zu verfolgen, die durch eine der Block-E/A-Schnittstellen 131, SCM-Schnittstellen 132, Cache-Schnittstellen 133 oder andere verwandte Schnittstellen durchgeführt werden.
  • Die Cache-Schnittstelle 133 kann Cache-spezifische Merkmale freilegen, auf die über einen Vorrichtungstreiber für die nicht-flüchtige Speichervorrichtung 120 zugegriffen werden kann. Auch stellt in einigen Ausführungsformen die SCM-Schnittstelle 132, die den Speicher-Clients 116 präsentiert wird, Zugriff auf Datentransformationen bereit, die durch die eine oder die mehreren nicht-flüchtigen Speichervorrichtungen 120 und/oder die einen oder die mehreren Vorrichtungssteuerungen 126 implementiert werden.
  • Ein Vorrichtungstreiber kann den Speicher-Clients 116 einen logischen Adressraum 134 über eine oder mehrere Schnittstellen präsentieren. Wie weiter oben erörtert, kann der logische Adressraum 134 eine Vielzahl von logischen Adressen aufweisen, von denen jede den jeweiligen Medienstandorten der einen oder mehreren nicht-flüchtigen Speichervorrichtungen 120 entspricht. Ein Vorrichtungstreiber kann Metadaten 135 verwalten, die Beliebig-zu-Beliebig-Zuordnungen zwischen logischen Adressen und Medienorten oder dergleichen aufweisen.
  • Ein Vorrichtungstreiber kann weiterhin eine Schnittstelle einer nicht-flüchtigen Speichervorrichtung 139, die zum Übertragen von Daten, Befehlen und/oder Anforderungen zu den einen oder mehreren nicht-flüchtigen Speichervorrichtungen 120 über einen Bus 125 eingerichtet ist, aufweisen, was unter anderem Folgendes einschließen kann: einen Speicherbus eines Prozessors 111, einen Peripheral Component Interconnect Express- (PCI Express oder PCle) Bus, einen seriellen Advanced Technology Attachment- (ATA) Bus, einen parallelen ATA-Bus, ein Small Computer System Interface (SCSI), FireWire, Fibre Channel, einen Universal Serial Bus (USB), einen PCle Advanced Switching- (PCIe-AS) Bus, ein Netzwerk 115, Infiniband, SCSI RDMA oder dergleichen. Die Schnittstelle einer nicht-flüchtigen Speichervorrichtung 139 kann mit der einen oder mehreren nicht-flüchtigen Speichervorrichtungen 120 unter Verwendung von Eingabe-Ausgabe-Steuerbefehlen (EA-CTL), EA-CTL-Befehlserweiterung(en), direktem Remote-Speicherzugriff oder dergleichen kommunizieren.
  • Die Kommunikationsschnittstelle 113 kann eine oder mehrere Netzwerkschnittstellen aufweisen, die dazu eingerichtet sind, die Rechenvorrichtung 110 und/oder die Vorrichtungssteuerung 126 kommunikativ mit einem Netzwerk 115 und/oder mit einem oder mehreren entfernten, netzwerkzugänglichen Speicher-Clients 116 zu koppeln. Die Speicherclients 116 können lokale Speicher-Clients 116, die auf der Rechenvorrichtung 110 arbeiten, und/oder entfernte Speicher-Clients 116 einschließen, auf die über das Netzwerk 115 und/oder die Netzwerkschnittstelle 113 zugegriffen werden kann. Die Vorrichtungssteuerung 126 ist Teil von und/oder steht in Kommunikation mit einer oder mehreren nicht-flüchtigen Speichervorrichtungen 120. Obwohl 1 eine einzelne nicht-flüchtige Speichervorrichtung 120 darstellt, ist die Offenbarung nicht darauf beschränkt und kann angepasst werden, um eine beliebige Anzahl von nicht-flüchtigen Speichervorrichtungen 120 zu implementieren.
  • Die nicht-flüchtige Speichervorrichtung 120 kann ein oder mehrere Elemente 123 von nicht flüchtigen Speichermedien 122 aufweisen, die Folgendes einschließen können, ohne jedoch darauf beschränkt zu sein: ReRAM, Memristorspeicher, programmierbarer Metallisierungszellenspeicher, Phasenänderungsspeicher (PCM, PCME, PRAM, PCRAM, Ovonic Unified Memory, Chalcogenid-RAM oder C-RAM), NAND-Flashspeicher (z. B. 2D-NAND-Flashspeicher, 3D-NAND-Flashspeicher), NOR-Flash-Speicher, Nano-Direktzugriffsspeicher (Nano-RAM oder NRAM), drahtbasierte Nanokristallspeicher, Siliziumoxid-basierter 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. Das eine oder die mehreren Elemente 123 des nicht-flüchtigen Speichermediums 122 können in bestimmten Ausführungsformen block- und/oder seitenadressierbare Speichertechnologien, wie NAND-Flash, aufweisen oder können byteadressierbare Speicherklassenspeicher (SCM) aufweisen.
  • Während das nicht-flüchtige Speichermedium 122 hierin als „Speichermedium“ bezeichnet wird, kann das nicht-flüchtige Speichermedium 122 in verschiedenen Ausführungsformen allgemeiner ein oder mehrere nicht-flüchtige Aufzeichnungsmedien aufweisen, die in der Lage sind, Daten aufzuzeichnen, die als nicht-flüchtiges Speichermedium, nicht-flüchtiges Speicherungsmedium oder dergleichen bezeichnet werden können. Weiterhin kann die nicht-flüchtige Speichervorrichtung 120 in verschiedenen Ausführungsformen eine nicht-flüchtige Aufzeichnungsvorrichtung, eine nicht-flüchtige Speichervorrichtung, eine nicht-flüchtige Speicherungsvorrichtung oder dergleichen aufweisen. In ähnlicher Weise kann ein nicht-flüchtiges Speicherelement 123 in verschiedenen Ausführungsformen ein nicht-flüchtiges Aufzeichnungselement, ein nicht-flüchtiges Speicherelement 123, ein nicht-flüchtiges Speicherungselement oder dergleichen aufweisen.
  • Das nicht-flüchtige Speichermedium 122 kann ein oder mehrere nicht-flüchtige Speicherelemente 123 aufweisen, die Chips, Pakete, Ebenen, Dies oder dergleichen einschließen können, ohne jedoch darauf beschränkt zu sein. Eine Vorrichtungssteuerung 126 außerhalb des einen oder der mehreren nicht-flüchtigen Speicherelemente 123, kann eingerichtet sein, um Datenvorgänge auf dem nicht-flüchtigen Speichermedium 122 zu verwalten, und kann einen oder mehrere Prozessoren, programmierbare Prozessoren (z. B. FPGAs), ASICs, Mikrocontroller oder dergleichen aufweisen. In einigen Ausführungsformen ist die Vorrichtungssteuerung 126 dazu eingerichtet, Daten auf dem nicht-flüchtigen Speichermedium 122 zu speichern und/oder Daten daraus zu lesen, Daten zu/von der nicht-flüchtigen Speichervorrichtung 120 zu übertragen und so weiter.
  • Die Vorrichtungssteuerung 126 kann kommunikativ mit dem nicht-flüchtigen Speichermedium 122 über einen Bus 127 gekoppelt sein. Der Bus 127 kann einen E/A-Bus zum Kommunizieren von Daten zu/von den nicht-flüchtigen Speicherelementen 123 aufweisen. Der Bus 127 kann weiterhin einen Steuerbus zum Kommunizieren von Adressier- und anderen Befehls- und Steuerinformationen zu den nicht-flüchtigen Speicherelementen 123 aufweisen. In einigen Ausführungsformen kann der Bus 127 die nicht-flüchtigen Speicherelemente 123 kommunikativ parallel mit der Vorrichtungssteuerung 126 koppeln. Dieser parallele Zugriff kann ermöglichen, dass die nicht-flüchtigen Speicherelemente 123 als eine Gruppe verwaltet werden, wodurch ein logisches Speicherelement 129 gebildet wird. Das logische Speicherelement kann in entsprechende logische Speichereinheiten (z. B. logische Seiten) und/oder logische Speicherbereiche (z. B. logische Blöcke) unterteilt sein. Die logischen Speichereinheiten können gebildet werden, indem physische Speichereinheiten von jedem der nicht-flüchtigen Speicherelemente 123 logisch kombiniert werden.
  • Die Vorrichtungssteuerung 126 kann einen Vorrichtungstreiber, der auf der Rechenvorrichtung 110 ausgeführt wird, aufweisen und/oder mit diesem in Kommunikation stehen. Ein Vorrichtungstreiber kann über eine oder mehrere Schnittstellen 131, 132 und/oder 133 Speicherdienste für die Speicher-Clients 116 bereitstellen. In einigen Ausführungsformen stellt ein Vorrichtungstreiber eine Blockvorrichtungs-E/A-Schnittstelle 131 bereit, durch die Speicher-Clients 116 E/A-Vorgänge auf Blockebene durchführen. Alternativ oder zusätzlich kann ein Vorrichtungstreiber eine Speicherklassenspeicher-(SCM) Schnittstelle 132 bereitstellen, die andere Speicherdienste für die Speicher-Clients 116 bereitstellen kann. In einigen Ausführungsformen kann die SCM-Schnittstelle 132 Erweiterungen zu der Blockvorrichtungsschnittstelle 131 aufweisen (z. B. können die Speicher-Clients 116 auf die SCM-Schnittstelle 132 über Erweiterungen oder Ergänzungen zu der Blockvorrichtungsschnittstelle 131 zugreifen). Alternativ oder zusätzlich kann die SCM-Schnittstelle 132 als separate API, Dienst und/oder Bibliothek bereitgestellt werden. Ein Vorrichtungstreiber kann weiterhin so eingerichtet sein, dass er eine Cache-Schnittstelle 133 zum Zwischenspeichern von Daten unter Verwendung des nicht-flüchtigen Speichersystems 102 bereitstellt.
  • Ein Vorrichtungstreiber kann weiterhin eine Schnittstelle 139 einer nicht-flüchtigen Speichervorrichtung aufweisen, die dazu eingerichtet ist, wie weiter oben beschrieben, Daten, Befehle und/oder Abfragen über einen Bus 125 zu der Vorrichtungssteuerung 126 zu übertragen.
  • 2 stellt eine Ausführungsform eines nicht-flüchtigen Speichersystems 123 dar. Das nicht-flüchtige Speicherelement 123 kann im Wesentlichen ähnlich dem oben unter Bezugnahme auf 1 beschriebenem nicht-flüchtigen Speicherelement 123 sein und kann ein Chip, ein Die, eine Die-Ebene oder dergleichen sein. In der dargestellten Ausführungsform schließt das nicht-flüchtige Speicherelement 123 ein Speicherarray 200, Zeilenschaltungen 202, Spaltenschaltungen 204 und eine Die-Steuerung 206 ein.
  • In verschiedenen Ausführungsformen kann ein nicht-flüchtiges Speicherelement 123 eine integrierte Schaltung sein, die sowohl ein Kernarray 200 aus Speicherzellen (z. B. nicht flüchtigen Speicherzellen) zur Datenspeicherung als auch periphere Komponenten (z. B. Zeilenschaltungen 202, Spaltenschaltungen 204 und/oder Die-Steuerung 206) zum Kommunizieren mit dem Array 200 einschließt. In bestimmten Ausführungsformen können ein oder mehrere nicht-flüchtige Speicherelemente 123 in der nicht-flüchtigen Speichervorrichtung 120 eingeschlossen sein.
  • In der dargestellten Ausführungsform schließt das Array 200 eine Vielzahl von Speicherzellen ein. In einer Ausführungsform kann das Array 200 ein zweidimensionales Array sein. In einer anderen Ausführungsform kann das Array 200 ein dreidimensionales Array sein, das mehrere Ebenen und/oder Schichten von Speicherzellen einschließt. In verschiedenen Ausführungsformen kann das Array 200 durch Reihen über Reihenschaltungen 202 und durch Spalten über Spaltenschaltungen 204 adressierbar sein.
  • Die Die-Steuerung 206 arbeitet in bestimmten Ausführungsformen mit den Reihenschaltungen 202 und den Spaltenschaltungen 204 zusammen, um Speichervorgänge auf dem Array 200 durchzuführen. In verschiedenen Ausführungsformen kann die Die-Steuerung 206 Komponenten, wie eine Leistungssteuerschaltung, welche die den Reihenschaltungen 202 und Spaltenschaltungen 204 während Speichervorgängen zugeführten Leistungen und Spannungen steuert, einen Adress-Decodierer, der eine empfangene Adresse in eine von den Reihenschaltungen 202 und Spaltenschaltungen 204 verwendete Hardwareadresse übersetzt, eine Zustandsmaschine, welche die Speichervorgänge implementiert und steuert, und dergleichen einschließen. Die Die-Steuerung 206 kann mit einer Rechnervorrichtung 110, einem Prozessor 115, einer Bussteuerung, einer Speichervorrichtungssteuerung, einer Speichermodulsteuerung oder dergleichen über Bus 127 kommunizieren, um Befehls- und Adressinformationen zu empfangen, Daten zu übertragen oder dergleichen.
  • In einer Ausführungsform, kann die Die-Steuerung 206 eine Lesekomponente 150 einschließen, die im Wesentlichen ähnlich der oben unter Bezugnahme auf 1 beschriebenen Lesekomponente 150 sein kann. Obwohl die Lesekomponente 150 in 2 als eine Komponente der Die-Steuerung 206 dargestellt ist, kann eine Lesekomponente 150 in einigen Ausführungsformen Komponenten von Zeilenschaltungen 202, Spaltenschaltungen 204 oder dergleichen einschließen oder mit diesen kommunizieren. Zum Beispiel können in einigen Ausführungsformen Vorspannungsschaltungen zum Anlegen von Vorspannungsbedingungen an Wortleitungen und Bitleitungen in den Zeilenschaltungen 202 und Spaltenschaltungen 204 eingeschlossen sein, und die Lesekomponente 150 kann die Vorspannungsschaltungen einschließen oder mit diesen kommunizieren.
  • 3 und 4 stellen verschiedene Ausführungsformen einer nicht-flüchtigen Speicherzelle 306, 406 mit zugehörigen Vorspannungsschaltungen 302, 308, 314 dar. 3 stellt eine Speicherzelle 306 mit drei Anschlüssen dar, und 4 stellt eine Speicherzelle 406 mit zwei Anschlüssen dar. Ein Speicherarray 200, wie in 2 dargestellt, kann mehrere Speicherzellen 306, 406 in Zeilen, Spalten und/oder Schichten einschließen. In verschiedenen Ausführungsformen kann eine Lesekomponente 150 verschiedene Arten von Speicherzellen 306, 406 lesen, indem Vorspannungsbedingungen an Zellen 306, 406 angelegt werden, so dass Bitleitungsströme Kondensatoren laden oder entladen und dann indem die Kondensatorspannungen abgetastet werden.
  • 3 stellt eine Ausführungsform einer Speicherzelle 306 dar. In verschiedenen Ausführungsformen kann eine „Zelle“ auf eine kleinste oder grundlegende physische Speichereinheit oder Speicherung für ein Array 200 Bezug nehmen und kann austauschbar als eine „Speicherungszelle“, eine „Speicherzelle“ oder dergleichen bezeichnet werden. Zum Beispiel kann eine Zelle 306 ein Floating-Gate-Transistor für NAND-Flash-Speicher, ein Memristor für resistiven Speicher oder dergleichen sein. Somit kann in einer weiteren Ausführungsform ein Array 200 von Zellen 306 ein zweidimensionales Gitter, ein dreidimensionaler Block, eine Gruppe oder ein anderer ähnlicher Satz von Zellen 306 sein, worin Daten physisch gespeichert werden können, für Kurzzeitspeicherverwendung, Langzeitspeicherverwendung oder dergleichen.
  • Eine physikalische oder elektrische Eigenschaft einer Speicherzelle 306 kann veränderbar sein, um Daten zu speichern. Zum Beispiel können transistorbasierte Speicherzellen 306 (z. B. NAND) Daten basierend auf einer veränderbaren Schwellenspannung zum Einschalten des Transistors speichern. In ähnlicher Weise können resistive Speicherzellen 406 (z. B. PCM oder MRAM) Daten basierend auf einem veränderbaren Widerstand speichern. Ein Bereich möglicher Werte für eine veränderbare physikalische Eigenschaft einer Zelle kann in Zustände unterteilt werden, die Datenwerten entsprechen.
  • In der dargestellten Ausführungsform ist die Speicherzelle 306 ein Floating-Gate-Transistor (z. B. wie in NAND-Flash-Speichern verwendet), wobei die Schwellenspannung, bei welcher der Transistor „eingeschaltet“ wird (z. B. von einem nichtleitenden oder Niedrigstromzustand in einen leitenden oder Hochstromzustand umschaltet, wenn die Spannung an den Transistor als Gate-Source-Spannung angelegt wird) durch Ändern der Ladungsmenge veränderbar ist, die in einem Floating-Gate oder einer Ladungsfalle eingeschlossen ist, das/die durch Oxidschichten (oder andere dielektrische Schichten) von dem Steuergate und dem Substrat oder Kanal getrennt ist.
  • In der dargestellten Ausführungsform ist die Zelle 306 über eine Wortleitung 310 mit einer Wortleitungs-Vorspannungsschaltung 308 gekoppelt, über eine Bitleitung 304 mit Bitleitungs-Vorspannungs-/Abtastschaltungen 302 gekoppelt und über eine Sourceleitung 312 mit einer Source-Vorspannungsschaltung 314 gekoppelt. In verschiedenen Ausführungsformen sind Bitleitung 304, Wortleitung 310 und/oder Sourceleitung 312 Leiter, die mit Spalten, Zeilen, Schichten oder anderen Bereichen von Zellen 306 in einem Array 200 gekoppelt sind. Obwohl eine einzelne Zelle 306 in 3 dargestellt ist, kann eine Wortleitung 310 eine Wortleitungs-Vorspannungsschaltung 308 mit mehreren Zellen 306 über eine Zeile oder Schicht eines Arrays 200 koppeln. In ähnlicher Weise können eine Bitleitung 304 und/oder eine Sourceleitung 312 mit mehreren Zellen 306 in einer Spalte des Arrays gekoppelt sein.
  • In einer Ausführungsform können Bitleitungen 304, Wortleitungen 310 und Sourceleitungen 312 Vorspannungsschaltungen 302, 308, 314 direkt mit Zellen 306 koppeln (wobei z. B. andere Zellen 306 parallel mit den Leitungen verbunden sind). In einer anderen Ausführungsform können Verbindungen zwischen den Vorspannungsschaltungen 302, 308, 314 und einer Zelle 306 indirekt sein, mit einem Strompfad, der durch andere Zellen 306 (oder andere Komponenten wie etwa Auswahltransistoren) verläuft. Zum Beispiel können in einem NAND-Flash-Speicher Zellen 306 in einer Serienkette verbunden sein, wobei benachbarte Zellen 306 in der Kette Source-Drain verbunden sind. Die Bitleitung 304 kann Bitleitungs-Vorspannungs-/Abtastschaltungen 302 mit einer Zelle 306 an einem Ende der Kette koppeln, und die Sourceleitung 312 kann die Source-Vorspannungsschaltung 314 mit einer Zelle 306 am anderen Ende der Kette koppeln. Um Daten aus einer der Zellen 306 in der Kette zu lesen, können die anderen Zellen 306 in der Kette „eingeschaltet“ werden (z. B. indem ausreichend hohe Gate-Spannungen über Wortleitungen 310 für diese Zellen 306 angelegt werden), so dass die Zelle 306, die gelesen wird, über die Bitleitung 304, die Sourceleitung 312 und die anderen Zellen 306 in der Kette mit den Bitleitungs-Vorspannungs-/Abtastschaltungen 302 und der Source-Vorspannungsschaltung 314 gekoppelt ist.
  • In verschiedenen Ausführungsformen kann eine Lesekomponente 150 Vorspannungsschaltungen 302, 308, 314 verwenden, um Vorspannungsbedingungen an Zellen 306 eines Arrays 200 oder innerhalb eines Bereichs eines Arrays 200 anzulegen. In verschiedenen Ausführungsformen können „Vorspannungsbedingungen“ Vorspannungen, Vorspannungsströme oder dergleichen sein. Vorspannungsbedingungen können über Bitleitungen 304, Wortleitungen 310 und/oder Sourceleitungen 312 oder andere Arten von Leitungen, die zu Zellen in anderen Arten von Speicherarrays 200 führen, an Zellen 306 angelegt werden. In einigen Ausführungsformen kann eine Vorspannungsbedingung eine Anfangsbedingung für einen Lese- oder Abtastvorgang sein und kann eine stationäre Zustandsbedingung während des Vorgangs sein, wie eine Lesespannung, die während eines Abtastvorgangs an eine Wortleitung 310 angelegt wird, oder kann eine Übergangsbedingung sein, wie eine Bitleitungs-Vorladespannung, die anfänglich angelegt wird und dann abhängig vom Zustand der Zellen 306 variieren darf. Allgemeiner können Vorspannungsbedingungen ein beliebiger Satz von Spannungen, Strömen oder anderen Bedingungen sein, die, wenn sie an Zellen 306 in einem Bereich eines Speicherarrays 200 angelegt werden, zu einer anderen Bedingung führen, wie etwa einem Bitleitungsstrom oder einer Kondensatorspannung, die vom Zustand einer oder mehrerer Zellen 306 abhängt. Somit kann ein Abtastvorgang zum Bestimmen, welcher Datenwert von einer Zelle 306 gespeichert wird, das Anlegen von Vorspannungsbedingungen und das Beobachten der resultierenden Bedingung zum Bestimmen des Zustands der Zelle 306 einschließen.
  • In der dargestellten Ausführungsform, in der die Schwellenspannung, welche die Zelle 306 einschaltet, veränderbar ist, um Daten zu speichern, wird der Bereich möglicher Schwellenspannungen für die Zelle 306 in Zustände unterteilt, die Datenwerten entsprechen. Zum Lesen von Daten aus der Zelle 306 wird eine Lesespannung als eine Gate-Source-Spannung angelegt. Es wird eine Drain-Source-Spannung angelegt, so dass ein Strom durch die Zelle 306 erzeugt wird, wenn die angelegte Lesespannung über der Schwellenspannung für die Zelle 306 liegt. Wenn umgekehrt die angelegte Lesespannung unter der Schwellenspannung für die Zelle 306 liegt, ist die Zelle 306 „ausgeschaltet“, und der Strom ist null (oder ist ein Leckstrom ungleich null, der niedriger ist als der Strom für die Zelle 306 im „eingeschalteten“ Zustand). Wenn, unter Verwendung eines Zustands mit hoher Schwellenspannung und eines Zustands mit niedriger Schwellenspannung, um eine 0 und eine 1 darzustellen, die Zelle 306 ein einzelnes Bit speichert, dann kann das Anlegen einer Lesespannung, die mit der Grenze zwischen Zuständen übereinstimmt, ausreichend sein, um zu bestimmen, ob die Schwellenspannung für die Zelle 306 über der Lesespannung und daher im Zustand mit hoher Schwellenspannung oder unter der Lesespannung und daher im Zustand mit niedriger Schwellenspannung liegt. Wenn die Zelle 306 mehr als ein Bit speichert (z. B. zwei Bits unter Verwendung von vier Zuständen, drei Bits unter Verwendung von acht Zuständen), kann ein weiteres Abtasten durch Anlegen zusätzlicher Lesespannungen an Grenzen zwischen den zusätzlichen Zuständen ermöglichen, dass der Zustand der Zelle 306 bestimmt wird.
  • In der dargestellten Ausführungsform befindet sich die Zelle 306 in einem NAND-Flash-Array 200, und die oben beschriebenen Drain-, Gate- und Source-Spannungen werden von den Vorspannungsschaltungen 302, 308, 314 über Bitleitungen 304, Wortleitungen 310 und Sourceleitungen 312 angelegt. In einigen Ausführungsformen können die Bitleitungs-Vorspannungs-/Abtastschaltungen 302, die Wortleitungs-Vorspannungsschaltung 308 und/oder die Source-Vorspannungsschaltung 314 Komponenten einschließen, die Vorspannungsbedingungen erzeugen, wie etwa eine Vorspannung oder einen Vorspannungsstrom. Komponenten, die eine Vorspannung oder andere Vorspannungsbedingungen erzeugen, können Spannungsversorgungen, Schaltkomponenten zum Koppeln oder Entkoppeln eines Knotens mit einer Spannungsversorgung, Spannungsregler, Ladungspumpen, Pegelwandler oder dergleichen einschließen. Verschiedene andere oder weitere Komponenten können in den Vorspannungsschaltungen 302, 308, 314 eingeschlossen sein. In einigen Ausführungsformen können die Vorspannungsschaltungen 302, 308, 314 steuerbare Schaltungen sein, die in der Lage sind, mehrere Spannungen auszugeben. In einigen Ausführungsformen können jedoch eine oder mehrere der Vorspannungsschaltungen 302, 308, 314 in der dargestellten Ausführungsform als eine Verbindung mit einer Referenzspannung implementiert sein. Zum Beispiel kann in einer Ausführungsform die Source-Vorspannungsschaltung 314 die Sourceleitung 312 mit Masse, VSS oder einer anderen Referenzspannung einfach verbinden.
  • In der dargestellten Ausführungsform legt eine Wortleitungs-Vorspannungsschaltung 308 zum Lesen von Daten aus Zellen 306 in einem NAND-Speicherarray 200 eine Lesespannung über die Wortleitung 310 an Steuergates einer Zeile der Zellen 306 an. Wortleitungs-Vorspannungsschaltungen (nicht gezeigt) für andere Zeilen der Zellen 306 legen eine hohe Spannung an, die ausreicht, um diese Zellen 306 „einzuschalten“, so dass Strom durch Serienketten von Zellen 306 darauf basiert, ob die an eine Zeile der Zellen 306 angelegte Lesespannung über oder unter der Schwellenspannung für diese Zellen 306 liegt. Source-Vorspannungsschaltungen 314 legen eine Source-Spannung (z. B. VSS oder null Volt) über Sourceleitungen 312 für mehrere Spalten oder Ketten von Zellen 306 an. Bitleitungs-Vorspannungs-/Abtastschaltungen 302 legen Drain-Spannungen (z. B. Bitleitungs-Vorladespannungen) über Bitleitungen 304 für die Spalten oder Ketten von Zellen 306 an. Wenn diese Vorspannungsbedingungen an die Zellen 306 angelegt werden, werden die Zellen 306, die mit der Wortleitung 310 gekoppelt sind, ein- oder ausgeschaltet, abhängig davon, ob die Lesespannung, die an die Wortleitung 310 angelegt wird, über oder unter der Schwellenspannung für jede dieser Zellen 306 liegt, und somit hängen Bitleitungsströme (z. B. der elektrische Strom in jeder der Bitleitungen 304) von den Zuständen der Zellen 306 in dieser Zeile ab. In weiteren Ausführungsformen können Bitleitungs-Vorspannungs-/Abtastschaltungen 302 Abtastverstärker einschließen, die analoge elektrische Eigenschaften an den Bitleitungen 304, wie etwa Bitleitungsspannungen oder -ströme, in digitale Ergebnisse, wie etwa Logikpegel oder Datenwerte, umwandeln.
  • 4 stellt eine andere Ausführungsform einer Speicherzelle 406 dar. In der dargestellten Ausführungsform ist die Speicherzelle 406 eine resistive Speicherzelle, wobei der Widerstand der Zelle 406 veränderbar ist, um Daten zu speichern. Zum Beispiel kann in einer Ausführungsform ein hochohmiger Zustand einer binären Null entsprechen, während ein niederohmiger Zustand einer binären Eins entspricht. In einer anderen Ausführungsform kann eine Zelle 406 mehrere Bits unter Verwendung von Zwischenwiderstandszuständen speichern. Resistive Speicherzellen 406 können in verschiedenen Ausführungsformen magnetoresistive Speicherzellen, Phasenänderungsspeicherzellen, Speicherzellen mit ovonischer Schwellenumschaltung, Speicherzellen mit leitender Überbrückung, ReRAM-Zellen oder dergleichen einschließen. In der dargestellten Ausführungsform ist eine Wortleitungs-Vorspannungsschaltung 308 über eine Wortleitung 310 mit einer Zeile der Zellen 406 gekoppelt, und Bitleitungs-Vorspannungs-/Abtastschaltungen 302 sind über eine Bitleitung 304 mit einer Spalte der Zellen 406 gekoppelt. Die Bitleitungs-Vorspannungs-/Abtastschaltungen 302, Bitleitung 304, Wortleitungs-Vorspannungsschaltung 308 und Wortleitung 310 können im Wesentlichen wie vorstehend unter Bezugnahme auf 3 beschrieben sein. Bei resistiven Speicherzellen 406 mit zwei Anschlüssen kann der Strom durch eine Zelle 406 jedoch ein Strom zwischen der Wortleitung 310 und der Bitleitung 304 sein, anstatt zwischen der Bitleitung 304 und einer Sourceleitung 312. Somit entfallen in der dargestellten Ausführungsform eine Sourceleitung 312 und eine Source-Vorspannungsschaltung 314.
  • In der dargestellten Ausführungsform legt eine Wortleitungs-Vorspannungsschaltung 308 zum Lesen von Daten aus Zellen 406 in einem Array 200 eine Wortleitungsvorspannung über die Wortleitung 310 an eine Zeile der Zellen 406 an. Bitleitungs-Vorspannungs-/Abtastschaltungen 302 für Spalten der Zellen 406 legen Bitleitungsvorspannungen an Bitleitungen 304 an. Wenn diese Vorspannungsbedingungen an die Zellen 406 angelegt werden, hängen Bitleitungsströme von der Spannungsdifferenz zwischen der Wortleitungsvorspannung und den Bitleitungsvorspannungen und von den Zuständen der Zellen 406 ab. Ein hoher Bitleitungsstrom kann anzeigen, dass sich eine Zelle 406 in einem niederohmigen Zustand befindet, während ein niedriger Bitleitungsstrom anzeigen kann, dass sich eine Zelle 406 in einem hochohmigen Zustand befindet. Wie vorstehend unter Bezugnahme auf 3 beschrieben, können die Bitleitungs-Vorspannungs-/Abtastschaltungen 302 Abtastverstärker einschließen, die analoge elektrische Eigenschaften an den Bitleitungen 304, wie etwa Bitleitungsspannungen oder -ströme, in digitale Ergebnisse, wie etwa Logikpegel oder Datenwerte, umwandeln. Die Abtastverstärker können den analogen Bitleitungsstrom digitalisieren, um einen digitalen Datenwert zu erzeugen.
  • In verschiedenen Ausführungsformen können Leseschwellenwerte Grenzen zwischen Zuständen definieren. Unterschiedliche Arten von Leseschwellenwerten können Zustände oder Grenzen zwischen Zuständen auf unterschiedliche Weise für unterschiedliche Arten von Zellen 306, 406 definieren. Zum Beispiel kann, wie vorstehend unter Bezugnahme auf 3 beschrieben, wo die Schwellenspannung einer transistorbasierten Zelle 306 veränderbar ist, um Daten zu speichern, ein Leseschwellenwert eine Spannung sein, die den Bereich möglicher Schwellenspannungen in Zustände trennt. In ähnlicher Weise kann unter Bezugnahme auf 4, wo der Widerstand einer Zelle 406 veränderbar ist, um Daten zu speichern, ein Leseschwellenwert ein Widerstandswert sein, der den Bereich möglicher Widerstände in Zustände trennt. In einigen Ausführungsformen kann jedoch ein Leseschwellenwert Grenzen zwischen Zuständen ohne direkte Bezugnahme auf die veränderbare Eigenschaft der Zelle 306, 406, die zum Speichern von Daten verwendet wird, definieren. Zum Beispiel kann ein Leseschwellenwert, der eine Grenze zwischen einem hochohmigen Zustand und einem niederohmigen Zustand für den resistiven Speicher definiert, ein Stromschwellenwert sein, bei dem ein Strom über dem Schwellenwert dem niederohmigen Zustand entspricht, so dass die Zustände durch einen Strom, statt direkt durch einen Widerstand, definiert sind. Verschiedene andere oder weitere Arten von Leseschwellenwerten können verwendet werden, um Zustände für Zellen 306, 406 des nicht-flüchtigen Speichers zu definieren.
  • Obwohl die 3 und 4 transistorbasierte Zellen 306 mit drei Anschlüssen und widerstandsbasierte Zellen 406 mit zwei Anschlüssen darstellen, können verschiedene andere oder weitere Arten von Speicherzellen ähnlich vorgespannt sein. Zum Beispiel kann ein magnetoresistiver Speicher mit drei Anschlüssen separate Lesebitleitungen und Schreibbitleitungen einschließen, und das Anlegen von Vorspannungsbedingungen zum Lesen von Daten aus den Zellen kann das Sperren des Stroms in der Schreibbitleitung einschließen (z. B. durch Betreiben eines Transistors, um die Schreibbitleitung zu trennen). Zusätzlich können in einigen Ausführungsformen Vorspannungsbedingungen an Komponenten angelegt werden, die in den 3 und 4 nicht dargestellt sind. Zum Beispiel kann das Anlegen von Vorspannungsbedingungen an Zellen das Anlegen von Auswahl- oder Abwahlspannungen an Auswahltransistoren einschließen, um eine Zeile, Spalte, Ebene oder einen anderen Bereich eines Speicherarrays 200 auszuwählen.
  • 5 ist ein Graph 500, der eine Verteilung von Schwellenspannungen für Zellen eines nicht-flüchtigen Speicherarrays 200 in einer Ausführungsform veranschaulicht. In der dargestellten Ausführungsform sind Zellen Flash-Speicherzellen, wobei die Schwellenspannung Vt einer Zelle veränderbar ist, um Daten zu speichern, und der Bereich möglicher Werte für die Schwellenspannung Vt auf der horizontalen Achse des Graphen 500 dargestellt ist. Bezüge auf eine Schwellenspannung Vt werden als ein nicht einschränkendes Beispiel bereitgestellt. In einer anderen Ausführungsform kann ein nicht-flüchtiges Speicherarray 200 einen anderen Zellentyp mit einer anderen Eigenschaft einschließen, die ähnlich in Zustände zum Speichern von Daten unterteilt werden kann. Für eine gegebene Schwellenspannung auf der horizontalen Achse zeigt die Höhe der Linie auf dem Diagramm 500 die Anzahl oder den Anteil von Zellen mit dieser Schwellenspannung an.
  • In der dargestellten Ausführungsform ist der Bereich möglicher Schwellenspannungen Vt für eine NAND-Flash-Speicherzelle durch die Leseschwellenwerte 502a-c, die durch vertikale gestrichelte Linien dargestellt sind, in vier Teilbereiche oder Zustände L0-L3 unterteilt. In einer anderen Ausführungsform kann ein Bereich möglicher Schwellenspannungen Vt für eine NAND-Flash-Zelle in mehr oder weniger als vier Zustände unterteilt werden. In der dargestellten Ausführungsform werden Zellen in den niedrigsten Zustand L0 gelöscht und können in höhere Zustände L1-L3 programmiert werden. Die Zustände L0-L3 entsprechen Datenwerten. Zum Beispiel werden in der dargestellten Ausführungsform die vier Zustände L0, L1, L2 und L3 auf die Datenwerte „11“, „01“, „00“ und „10“ abgebildet, so dass die Zelle zwei Informationsbits speichert. Verschiedene andere Abbildungen zwischen Zellzuständen und Datenwerten können in verschiedenen Ausführungsformen verwendet werden. Abtastvorgänge können bestimmen, ob die Schwellenspannung Vt für eine Zelle über oder unter einem der Leseschwellenwerte 502 liegt, und dadurch den Zustand der Zelle und den entsprechenden Datenwert bestimmen. Abtastvorgänge können, wie vorstehend unter Bezugnahme auf die 3 und 4 beschrieben, durchgeführt werden, indem Vorspannungsbedingungen an Zellen angelegt werden, so dass ein Bitleitungsstrom oder ein anderes elektrisches Ergebnis von dem Zustand der Zelle abhängt.
  • Der Graph 500 zeigt an, dass Zellen programmiert oder gelöscht werden, um eine gleichmäßige Verteilung von Schwellenspannungen unter den Zuständen L0-L3 zu erzeugen. In der Praxis kann die Verteilung von Zuständen für einen Satz von Zellen möglicherweise nicht gleichmäßig sein. Wenn zum Beispiel eine lange Kette von Nullen in einen Satz von Zellen geschrieben wird, können sich mehr Zellen im L2 -Zustand befinden, der „00“ codiert, als in den anderen Zuständen. Datenkompressions- oder Whiteningalgorithmen können jedoch die Verteilung von Zuständen über einen großen Satz von Zellen im Wesentlichen gleichmäßig machen.
  • Obwohl die Verteilung der Schwellenspannungen für Zellen unter den Zuständen L0-L3 im Wesentlichen gleichmäßig sein kann, ist die Verteilung so dargestellt, dass sie in jedem Zustand eine glockenförmige Spitze bildet. In einigen Ausführungsformen kann eine Zelle programmiert werden, indem Spannungsimpulse ausgegeben werden, welche die Schwellenspannung Vt ändern, damit die Zelle auf oder nahe einer Zielspannung in der Mitte des Spannungsbereichs liegt, der den Zustand definiert. Somit kann eine glockenförmige Spitze auf die Zielprogrammierspannung oder dergleichen zentriert sein. Die Breite der Spitzen kann durch Variationen in den Zellen und dem Programmierprozess oder durch fehlerverursachende Phänomene wie Lesestörungen, Programmstörungen, spannungsinduzierten Leckstrom oder dergleichen beeinflusst werden. Obwohl symmetrische, glockenförmige Spitzen gezeigt sind, sind schiefe Verteilungen und andere Verteilungen möglich. Im Laufe der Zeit können sich die Verteilungen verbreitern oder verzerren, wenn sich die Schwellenspannung von Zellen von ihren ursprünglich programmierten Werten entfernt. Zusätzlich können sich Verteilungen aufgrund der Temperatur verschieben. Zum Beispiel kann die Schwellenspannung eines Transistors temperaturabhängig sein, so dass sich die Lage und die Breite der Spitzen in Abhängigkeit von der aktuellen Temperatur ändern.
  • In dem dargestellten Graphen 500 stellt jede Spitze die Verteilung von Zellen dar, die ursprünglich auf einen bestimmten Zustand programmiert wurden. Somit gibt es vier Spitzen, die den vier L0-L3 Zuständen entsprechen. Jedoch können Zellen, die ursprünglich auf Schwellenspannungen in einem Zustand programmiert wurden, nach einiger Zeit gedriftet sein, um Schwellenspannungen in einem anderen Zustand aufzuweisen. Somit überlappen sich die einzelnen Spitzen bei oder nahe den Leseschwellenwerten 502 erheblich. (Die Gesamtverteilung für Zellen des Arrays kann eine Summe der Spitzen sein, die für auf jeden Zustand programmierte Zellen dargestellt sind). Ein Abtastvorgang, der den aktuellen Zustand einer Zelle relativ zu den Leseschwellenwerten 502 bestimmt, kann zu einem Datenfehler führen, wenn die Schwellenspannung für die Zelle einen der Leseschwellenwerte 502 überschritten hat, so dass die Zelle aktuell nicht in dem Zustand ist, auf den sie programmiert (oder gelöscht) wurde.
  • 6 ist ein Graph 600, der eine Verteilung von Schwellenspannungen nahe einer Grenze zwischen Zuständen veranschaulicht. Ein gestricheltes Rechteck in 5 zeigt den Bereich der Verteilung an, der in 6 bei oder nahe dem Leseschwellenwert 502c zwischen den Zuständen L2 und L3 detaillierter dargestellt ist. Leseschwellenwerte, die Zustände (oder Grenzen zwischen Zuständen) definieren, wie etwa die Leseschwellenwerte 502a-c von 5, können als „harte“ Leseschwellenwerte bezeichnet werden, und Informationen über die Zeilenzustände in Bezug auf die grenzdefinierenden „harten“ Leseschwellenwerte können hierin als „Hard-Bits“ bezeichnet werden.
  • Wie oben unter Bezugnahme auf 5 beschrieben, werden die L0-, L1-, L2- und L3-Zustände auf die Datenwerte „11“, „01“, „00“ und „10“ abgebildet. Somit kann das Abtasten der Zeilenzustände in Bezug auf die Leseschwellenwerte 502a-c die Hard-Bits für eine Zelle bestimmen oder lesen. Wenn in 6 eine Lesekomponente 150 bestimmt, dass die Schwellenspannung Vt für die Zelle über dem harten Leseschwellenwert 502c liegt, dann befindet sich die Zelle im L3-Zustand, und die Hard-Bits „10“ wurden gelesen. Wenn umgekehrt eine Lesekomponente 150 bestimmt, dass die Schwellenspannung Vt für die Zelle unter dem harten Leseschwellenwert 502c (und über dem harten Leseschwellenwert 502b, der in 5 gezeigt ist) liegt, dann befindet sich die Zelle im L3-Zustand, und die Hard-Bits „00“ wurden gelesen.
  • Aufgrund der Überlappung in den Verteilungen von Zellen, die ursprünglich auf die L2- und L3 -Zuständen programmiert wurden, können die Hard-Bits jedoch fehlerhaft sein. Daher verwendet in der dargestellten Ausführungsform eine Lesekomponente 150 weiche Leseschwellenwerte 602, um Soft-Bits aus den Zellen zu lesen. In der dargestellten Ausführungsform sind die weichen Leseschwellenwerte 602 Spannungen, die als Lesespannungen (wie unter Bezugnahme auf 3 beschrieben) angelegt werden können, um zu bestimmen, ob die Schwellenspannung Vt einer Zelle über oder unter der angelegten Lesespannung liegt. In einer anderen Ausführungsform kann jedoch ein weicher Leseschwellenwert, der verwendet wird, um Soft-Bits zu bestimmen, ein Widerstandsschwellenwert, ein Stromschwellenwert oder dergleichen sein, abhängig von der Art des harten Leseschwellenwerts, der verwendet wird, um die Zustände zu definieren.
  • In verschiedenen Ausführungsformen können „Soft-Bits“ jede Form von Informationen sein, die Zuverlässigkeit der Hard-Bits, Vertrauen in die Hard-Bits oder dergleichen anzeigen. Zum Beispiel können in einigen Ausführungsformen Soft-Bits Mehrbitwerte sein, wie Wahrscheinlichkeiten, Log-Wahrscheinlichkeiten, Log-Wahrscheinlichkeitsverhältnisse oder dergleichen. In den dargestellten Ausführungsformen sind die Soft-Bits Einzelbitwerte, wobei ein Soft-Bitwert von „1“ anzeigt, dass Hard-Bits zuverlässiger sind, und ein Soft-Bitwert von „0“ anzeigt, dass die Hard-Bits weniger zuverlässig sind. In einer anderen Ausführungsform können Soft-Bitwerte invertiert werden, so dass eine „0“ eine größere Zuverlässigkeit anzeigt. Fehlerkorrekturcode-Decodierer (ECC-Decodierer) können redundante Informationen (in den Daten zur Schreibzeit codiert und mit den Hard-Bits gelesen) verwenden, um Fehler in den Daten zu erkennen und zu korrigieren. Einige ECC-Decodierer können auch Soft-Bits verwenden, um beim Bestimmen zu helfen, welche der Hard-Bits fehlerhaft sind. In einigen Ausführungsformen können Fehlerkorrekturcode-Decodierer, die Soft-Bits verwenden, in der Lage sein, mehr Fehler zu erkennen und zu korrigieren als andere vergleichbare Decodierer, die keine Soft-Bits verwenden, um Daten zu decodieren.
  • In der dargestellten Ausführungsform können Ergebnisse des Abtastens, ob die Schwellenspannung Vt für eine Zelle über oder unter zwei weiche Leseschwellenwerten 602a-b liegt, mit einem invertierten Exklusiv-Oder-Vorgang (NXOR-Vorgang) kombiniert werden, der eine 0 ausgibt, wenn die Eingaben unterschiedlich sind, oder eine 1 ausgibt, wenn die Eingaben gleich sind, um die Soft-Bits zu bestimmen. Wenn zum Beispiel die Schwellenspannung Vt für eine Zelle über beiden weichen Leseschwellenwerten 602a-b oder unter beiden weichen Leseschwellenwerten 602a-b liegt, dann ist das resultierende Soft-Bit eine „1“, was anzeigt, dass die Schwellenspannung Vt für die Zelle nicht nahe des harten Leseschwellenwerts 502c liegt und dass die Hard-Bits als zuverlässig behandelt werden sollten. Wenn jedoch der Schwellenwert über dem ersten weichen Leseschwellenwert 602a, aber unter dem zweiten weichen Leseschwellenwert 602b liegt, dann ist das resultierende Soft-Bit eine „0“, was anzeigt, dass die Schwellenspannung Vt für die Zelle nahe dem harten Leseschwellenwert 502c liegt und dass die Hard-Bits als weniger zuverlässig oder als möglicherweise fehlerhaft behandelt werden sollten.
  • In der dargestellten Ausführungsform bestimmt eine Lesekomponente 150 Soft-Bits in Bezug auf zwei weiche Leseschwellenwerte 602 für einen harten Leseschwellenwert 502. In einer anderen Ausführungsform kann eine Lesekomponente 150 Soft-Bits in Bezug auf mehr oder weniger als zwei weiche Leseschwellenwerte 602 pro hartem Leseschwellenwert 502 bestimmen. Zum Beispiel kann in einer Ausführungsform das Abtasten unter Verwendung von vier weichen Leseschwellenwerten 602, zwei auf jeder Seite des harten Leseschwellenwerts 502, zusätzliche Soft-Bits bereitstellen, um unterschiedliche Zuverlässigkeitsgrade für die Hard-Bits anzuzeigen.
  • In einer anderen Ausführungsform kann eine Lesekomponente 150 bestimmen, dass Fehler aufgrund von Drift in eine Richtung wahrscheinlicher sind als Fehler aufgrund von Drift in eine anderen Richtung, und kann Soft-Bits in Bezug auf den harten Leseschwellenwert 502 und einen einzelnen weichen Leseschwellenwert 602 in der wahrscheinlicheren Driftrichtung von dem harten Leseschwellenwert 502 bestimmen. Zum Beispiel können lange Retentionszeiten mit seltenem Datenzugriff darauf hinweisen, dass Zellen aufgrund von Ladungsleckage wahrscheinlicher in Zustände niedrigerer Spannung driften als in Zustände höherer Spannung, und eine Lesekomponente 150 kann einen einzelnen weichen Leseschwellenwert 602 bei einer niedrigeren Spannung als den harten Leseschwellenwert 502 verwenden. Umgekehrt können kurze Retentionszeiten mit häufigem Datenzugriff darauf hinweisen, dass Zellen aufgrund von Lesestörungen oder Programmierstörungen wahrscheinlicher in Zustände höherer Spannung driften als in Zustände niedrigerer Spannung, und eine Lesekomponente 150 kann einen einzelnen weichen Leseschwellenwert 602 bei einer höheren Spannung als den harten Leseschwellenwert 502 verwenden. In einigen Ausführungsformen kann eine Lesekomponente 150 eine Anzahl von Leseschwellenwerten 502, 602, die zum Abtasten verwendet werden sollen, und einen Abstand der weichen Leseschwellenwerte 602 von dem harten Leseschwellenwert 502 bestimmen. Zum Beispiel kann eine Lesekomponente 150 Anzahlen und Positionen von Leseschwellenwerten basierend auf Faktoren wie der aktuellen Temperatur, der Temperatur zur Schreibzeit, der Datenretentionszeit, der Anzahl von Programmier-/Löschzyklen, Fehlerraten zum Lesen von Zellen eines Bereichs eines Arrays 200, Fehlerraten zum Lesen von Zellen eines anderen Bereichs eines Arrays 200 oder dergleichen bestimmen.
  • In bestimmten Ausführungsformen kann eine Lesekomponente 150, die Hard-Bits und Soft-Bits unter Verwendung von harten und weichen Leseschwellenwerten 502, 602 liest, erheblich mehr Zeit zum Lesen von Daten in Anspruch nehmen als eine Lesekomponente 150, die Hard-Bits unter Verwendung von harten Leseschwellenwerten 502 ohne weiche Leseschwellenwerte 602 liest. Wiederholt unterschiedliche Vorspannungsbedingungen anzulegen (z. B. Lesespannungen an einer Wortleitung 310 entsprechend unterschiedlichen harten und weichen Leseschwellenwerten 502, 602) und die resultierenden Bedingungen an Bitleitungen 304 abzutasten, kann die Latenz eines Lesevorgangs erheblich erhöhen. Jedoch kann in einem zeitbasierten Soft-Bit-Lesemodus eine Lesekomponente 150 resultierende Bedingungen an Bitleitungen 304 (oder an Kondensatoren, die mit Bitleitungen 304 gekoppelt sind) zu mehreren Zeiten für einen einzelnen Satz angelegter Vorspannungsbedingungen (z. B. ohne wieder unterschiedliche Vorspannungsbedingungen anzulegen) abtasten, und die Abtastergebnisse zu unterschiedlichen Zeiten können äquivalent oder vergleichbar mit den Ergebnissen der Verwendung unterschiedlicher Vorspannungsbedingungen zum Lesen von Soft-Bits sein. In einigen Ausführungsformen kann das Abtasten resultierender Bedingungen zu mehreren Zeiten für einen einzelnen Satz angelegter Vorspannungsbedingungen erheblich weniger Zeit in Anspruch nehmen als das Abtasten durch iteratives Anlegen unterschiedlicher Vorspannungsbedingungen.
  • 7 und 8 stellen einen Abtastverstärker 700 in einigen Ausführungsformen dar. In bestimmten Ausführungsformen können, wie oben beschrieben, Bitleitungs-Vorspannungs-/Abtastschaltungen 302 Abtastverstärker 700 einschließen, die mit den Bitleitungen 304 eines Speicherarrays 200 gekoppelt sind. In verschiedenen Ausführungsformen können Abtastverstärker 700 analoge elektrische Eigenschaften an den Bitleitungen 304, wie Bitleitungsspannungen oder -ströme, in digitale Ergebnisse, wie Logikpegel oder Datenwerte, umwandeln.
  • Wie in 7 dargestellt, schließt in einer Ausführungsform ein Abtastverstärker 700 eine Strom-Spannungs-Umwandlungsschaltung 702 und eine Spannungs-Digital-Umwandlungsschaltung 706 ein. In verschiedenen Ausführungsformen kann eine Strom-Spannungs-Umwandlungsschaltung 702 mit einer Bitleitung 304 gekoppelt sein und eine Spannung im Abtastverstärker 700 (z. B. am Knoten 704) basierend auf einem Bitleitungsstrom erzeugen, so dass der Zustand einer mit der Bitleitung 304 gekoppelten Zelle die analoge Abtastverstärkerspannung am Knoten 704 beeinflusst.
  • In verschiedenen Ausführungsformen kann eine Strom-Spannungs-Umwandlungsschaltung 702 Bitleitungsströme auf verschiedene Weise in analoge Abtastverstärkerspannungen umwandeln. Zum Beispiel kann in einer Ausführungsform eine Strom-Spannungs-Umwandlungsschaltung 702 den Bitleitungsstrom verwenden, um einen Kondensator zu laden oder zu entladen, so dass die Spannung über dem Kondensator eine analoge Spannung basierend auf dem Bitleitungsstrom ist. In einer anderen Ausführungsform kann eine Strom-Spannungs-Umwandlungsschaltung 702 die inhärente Kapazität der Bitleitung 304 (z. B. ihre Eigenkapazität und/oder ihre parasitäre Gegenkapazität mit nahegelegenen Komponenten wie anderen Bitleitungen 304) als ein Kondensator verwenden, der eine analoge Spannung erzeugt, ohne einen separaten oder diskreten Kondensator zum Laden oder Entladen bereitzustellen. In einer anderen Ausführungsform kann eine Strom-Spannungs-Umwandlungsschaltung 702 einen Bitleitungsstrom in eine Spannung umwandeln, indem der Strom durch einen Widerstand (z. B. gegen Masse oder eine andere Referenzspannung) geleitet wird, so dass der Spannungsabfall über dem Widerstand von dem Bitleitungsstrom abhängt. In einer anderen Ausführungsform kann eine Strom-Spannungs-Umwandlungsschaltung 702 einen Bipolartransistor einschließen, der durch den Eingangsstrom gesteuert wird. Verschiedene andere oder weitere Komponenten, die in der Lage sind, eine analoge Spannung basierend auf dem elektrischen Zustand einer Bitleitung 304 zu erzeugen (was wiederum auf dem Zustand oder Datenwert basiert, der von einer Zelle gespeichert wird), können in einer Strom-Spannungs-Umwandlungsschaltung 702 verwendet werden.
  • In der dargestellten Ausführungsform schließt der Abtastverstärker 700 eine Spannungs-Digital-Umwandlungsschaltung 706 ein, die analoge Spannungen in digitale Abtastverstärkerergebnisse umwandelt. In der dargestellten Ausführungsform wandelt die Spannungs-Digital-Umwandlungsschaltung 706 eine analoge Spannung am Knoten 704 von der Strom-Spannungs-Umwandlungsschaltung 702 in ein digitales Abtastverstärkerergebnis an einer Ausgangsleitung 708 um. Die Ausgangsleitung 708 des Abtastverstärkers kann mit Schaltungen gekoppelt sein, die ein digitales Ergebnis verwenden, wie Latches, die ein Ergebnis speichern und ausgeben, einen Fehlerkorrekturcode-Decodierer oder dergleichen. Schaltungen, die ein digitales Ergebnis verwenden, können Spaltenschaltungen 204, eine Die-Steuerung 206 oder dergleichen einschließen.
  • Der Begriff „digital“, wie hierin verwendet, kann auf jede Spannung, jeden Strom oder ein anderes Signal Bezug nehmen, das diskretisiert ist oder auf eine endliche Anzahl von Logikpegeln begrenzt ist, die Daten darstellen. Zum Beispiel kann in einer Ausführungsform ein hoher Logikpegel eine binäre Eins darstellen, während ein niedriger Logikpegel eine binäre Null darstellt. In einer anderen Ausführungsform können vier verschiedene Logikpegel vier verschiedene Zwei-Bit-Datenwerte darstellen, acht Logikpegel können acht verschiedene Drei-Bit-Datenwerte darstellen oder dergleichen. Ein Logikpegel kann ein Wert oder ein zulässiges Band von Werten für die Spannung, den Strom oder ein anderes diskretisiertes Signal sein. Der Begriff „analog“ hingegen kann hierin verwendet werden, um auf jeden Spannungsstrom oder ein anderes Signal Bezug zu nehmen, das nicht digital ist oder nicht auf eine endliche Anzahl von Logikpegeln begrenzt ist.
  • In bestimmten Ausführungsformen kann es von dem Vorhandensein definierter Logikpegel abhängen, ob ein Signal digital oder analog ist. Zum Beispiel kann ein analoges Signal als ein digitales Signal interpretiert werden, indem Logikpegel definiert werden, die bestimmen, ob das Signal zu einem gegebenen Zeitpunkt eine 0 oder eine 1 darstellt. (Bei Fehlen einer Lücke zwischen zulässigen Logikpegeln ist ein solches Signal jedoch möglicherweise nicht zuverlässig für die Darstellung von Daten, da ein geringes Maß an Rauschen den dargestellten Datenwert ändern kann). Umgekehrt kann ein digitales Signal während Übergängen zwischen Logikpegeln oder aufgrund von Rauschen, Spannungsdrift oder dergleichen einem analogen Signal ähneln. In bestimmten Ausführungsformen kann der Begriff „digital“ jedoch insbesondere auf Spannungen, Ströme oder andere Signale Bezug nehmen, die direkt als Logikeingänge durch elektronische Komponenten einer Vorrichtung verwendbar sind, wie Logikgatter, Latches oder dergleichen eines nicht-flüchtigen Speicherelements 123. Umgekehrt kann der Begriff „analog“ auf Spannungen, Ströme oder andere Signale Bezug nehmen, die nicht direkt als Logikeingänge durch andere elektronische Komponenten einer Vorrichtung verwendbar sind, selbst wenn die Spannungen, Ströme oder anderen Signale in einem Sinn einen Datenwert darstellen oder diesem entsprechen.
  • In verschiedenen Ausführungsformen kann eine Spannungs-Digital-Umwandlungsschaltung 706 eine analoge Abtastverstärkerspannung digitalisieren, indem die analoge Spannung in ein digitales Signal umgewandelt wird, das hierin als Abtastverstärkerergebnis bezeichnet wird. Die Ergebnisse des Abtastverstärkers können Hard-Bits und/oder Soft-Bits einschließen, wie oben beschrieben. In verschiedenen Ausführungsformen kann eine Spannungs-Digital-Umwandlungsschaltung 706 analoge Abtastverstärkerspannungen auf verschiedene Weise in digitale Abtastverstärkerergebnisse umwandeln. Zum Beispiel kann in einer Ausführungsform die Spannungs-Digital-Umwandlungsschaltung 706 einen Transistor einschließen, der basierend auf einer Gate-Source-Spannung ein- oder ausgeschaltet wird, wobei das Gate (oder die Source) des Transistors mit der Spannung am Knoten 704 gekoppelt ist und wobei die Source (oder das Gate) des Transistors mit einer Referenzspannung oder mit Masse gekoppelt ist. In einer anderen Ausführungsform kann die Spannungs-Digital-Umwandlungsschaltung 706 einen Komparator einschließen, und die Eingangsanschlüsse des Komparators können mit der Spannung am Knoten 704 und einer Referenzspannung gekoppelt sein. In einer anderen Ausführungsform kann die Spannungs-Digital-Umwandlungsschaltung 706 ein Paar Inverter einschließen, die in einer Schleife verbunden sind, wobei die Spannung am Knoten 704 und eine Referenzspannung mit gegenüberliegenden Seiten der Schleife gekoppelt sind, so dass die Rückkopplung die Differenz zwischen den Spannungen auf digitale Pegel verstärkt. Verschiedene andere oder weitere Komponenten, die in der Lage sind, eine analoge Spannung an einem Abtastverstärker 700 in ein digitales Abtastverstärkerergebnis umzuwandeln, können in einer Spannungs-Digital-Umwandlungsschaltung 706 verwendet werden.
  • 8 stellt eine weitere Ausführungsform eines Abtastverstärkers 700 dar, der im Wesentlichen ähnlich dem oben unter Bezugnahme auf 7 beschriebenen Abtastverstärker 700 sein kann, einschließlich einer Strom-Spannungs-Umwandlungsschaltung 702 und einer Spannungs-Digital-Umwandlungsschaltung 706, die im Wesentlichen wie oben beschrieben sein kann. In der dargestellten Ausführungsform schließt die Strom-Spannungs-Umwandlungsschaltung 702 einen Kondensator 804 ein. In verschiedenen Ausführungsformen können Kondensatoren 804, die Zellen zugeordnet sind, Kondensatoren 804 in den Abtastverstärkern 700 sein, die über die Bitleitungen 304 mit Zellen gekoppelt sind. Kondensatoren 804 können über elektrische Ströme in Bitleitungen 304 geladen oder entladen werden. Zum Beispiel kann in einer Ausführungsform ein Kondensator 804 vorgeladen oder vorentladen werden, dann für einen Zeitraum (z. B. während der Schalttransistor 802 eingeschaltet ist) mit einer Bitleitung 304 gekoppelt werden, um den Kondensator 804 über den Bitleitungsstrom zu entladen (oder zu laden). Nach einem Zeitraum hängt die Spannung über dem Kondensator 804 davon ab, inwieweit der Kondensator 804 über den Bitleitungsstrom geladen oder entladen wurde.
  • Obwohl die Strom-Spannungs-Umwandlungsschaltung 702 in der dargestellten Ausführungsform so dargestellt ist, dass sie einen Kondensator 804 und einen Schalttransistor 802 einschließt, kann eine andere Ausführungsform einer Strom-Spannungs-Umwandlungsschaltung 702 mehr oder weniger Komponenten einschließen. Zum Beispiel kann in einer Ausführungsform der Schalttransistor 802 weggelassen werden, so dass der Kondensator 804 direkt mit der Bitleitung 304 gekoppelt ist und anfänglich durch die Bitleitungs-Vorspannungs-/Abtastschaltungen 302 vorgeladen wird. In einer anderen Ausführungsform kann ein diskreter Kondensator 804 weggelassen werden und ein Abtastverstärker 700 kann die Kapazität der Bitleitung 304 selbst als Quelle einer zu digitalisierenden analogen Spannung verwenden. In einer anderen Ausführungsform kann eine Strom-Spannungs-Umwandlungsschaltung 702 zusätzliche Schaltungen einschließen, die in 8 nicht gezeigt sind, wie etwa eine Kondensatorvorspannungsschaltung, die eine anfängliche Vorspannung für den Kondensator 804 einstellt, getrennt von einer Schaltung, die Vorspannungsbedingungen an eine Bitleitung 304 anlegt.
  • In der dargestellten Ausführungsform schließt die Spannungs-Digital-Umwandlungsschaltung 706 einen Abtasttransistor 806 ein. Der Source-Anschluss des Abtasttransistors 806 ist mit Masse (oder einer anderen Referenzspannung in einer anderen Ausführungsform) gekoppelt, und der Gate-Anschluss des Abtasttransistors 806 ist mit der analogen Spannung gekoppelt, die von der Strom-Spannungs-Umwandlungsschaltung 702 am Knoten 704 erzeugt wird. Der Abtasttransistor 806 erzeugt ein digitales Abtastverstärkerergebnis an der Ausgangsleitung 708, das in einem oder mehreren Daten-Latches 808 gespeichert wird. Daten-Latches 808 können Hard-Bits und Soft-Bits zur Ausgabe oder zur Verwendung durch andere Komponenten, wie etwa einen Fehlerkorrekturcode-Decodierer, speichern.
  • In der dargestellten Ausführungsform kann die Ausgangsleitung 708 vorgeladen werden (über den in 8 nicht gezeigten Schaltkreis). Wenn die Spannung am Knoten 704 nicht ausreicht, um den Abtasttransistor 806 einzuschalten, bleibt die Ausgangsleitung 708 hoch, und das von den Daten-Latches 808 aufgezeichnete digitale Abtastverstärkerergebnis ist eine binäre „1“. (Die Latches 808 können mit einem Gate versehen, flankengesteuert oder dergleichen sein, um das Ergebnis von der Ausgangsleitung 708 zu einem bestimmten Zeitpunkt einzuklinken). Wenn die Spannung am Knoten 704 ausreicht, um den Abtasttransistor 806 einzuschalten, dann wird die Ausgangsleitung 708 nach unten gezogen, und das und das digitale Abtastverstärkerergebnis, das von den Daten-Latches 808 aufgezeichnet wird, ist eine binäre „0“.
  • In der dargestellten Ausführungsform ist der Abtasttransistor 806 ein NMOS-Transistor, der einschaltet, wenn die Spannung am Knoten 704 hoch ist. In einer anderen Ausführungsform kann ein Abtasttransistor 806 ein PMOS-Transistor sein, der abschaltet, wenn die Spannung am Knoten 704 hoch ist. In verschiedenen Ausführungsformen kann ein Abtasttransistor 806 ein n-Kanal-Transistor, ein p-Kanal-Transistor, ein Anreicherungstyp-Transistor, ein Verarmungstyp-Transistor, ein Sperrschicht-Feldeffekt-Transistor (Junction Field Effect, JFET-Transistor) oder jeder andere Transistor oder jedes andere Schaltelement sein, der/das basierend auf einer angelegten Spannung ein- oder ausschaltet. In ähnlicher Weise kann eine Ausgangsleitung 708 anfänglich hoch sein und nach unten gezogen werden, wenn der Abtasttransistor 806 ein- oder ausschaltet, oder kann anfänglich niedrig sein und nach oben gezogen werden, wenn der Abtasttransistor 806 ein- oder ausschaltet.
  • Obwohl die Spannungs-Digital-Umwandlungsschaltung 706 in der dargestellten Ausführungsform einen Abtasttransistor 806 einschließt, kann eine Spannungs-Digital-Umwandlungsschaltung 706 in einer anderen Ausführungsform unterschiedliche Komponenten zum Abtasten analoger Kondensatorspannungen und zum Erzeugen eines digitalen Abtastverstärkerergebnisses einschließen. Zum Beispiel kann eine Spannungs-Digital-Umwandlungsschaltung 706 einen Komparator, ein Latch, einen Tri-State-Puffer oder eine andere Komponente einschließen, die in der Lage ist, ein digitales Ergebnis auszugeben.
  • 9 stellt eine Ausführungsform einer Lesekomponente 150 dar. In verschiedenen Ausführungsformen kann eine Lesekomponente 150 im Wesentlichen wie oben unter Bezugnahme auf die 1-8 beschrieben sein und Vorspannungsschaltungen 302, 308, 314, einen Abtastverstärker 700 oder dergleichen einschließen oder damit kommunizieren. In der dargestellten Ausführungsform schließt die Lesekomponente 150 ein Lesemodusmodul 902, ein Vorspannungsmodul 904 und ein Abtastmodul 906 ein, die nachstehend beschrieben sind.
  • Im Allgemeinen kann in verschiedenen Ausführungsformen die Lesekomponente 150 zwischen einer Vielzahl von Lesemodi zum Lesen von Daten aus einem nicht-flüchtigen Speicherarray auswählen und kann einen Lesevorgang unter Verwendung des ausgewählten Lesemodus implementieren oder steuern. Unterschiedliche Lesemodi können unterschiedliche Kompromisse zwischen Zuverlässigkeit und Geschwindigkeit widerspiegeln und können sich hinsichtlich Gesichtspunkten unterscheiden, wie etwa ob Soft-Bits erhalten werden, wie viele Soft-Bits für jedes Hard-Bit erhalten werden, wie die Soft-Bits erhalten werden oder dergleichen. Das Bereitstellen mehrerer Lesemodi kann es einer Lesekomponente 150 ermöglichen, Lesezeiten mit hoher Latenz oder hohe Fehlerraten zu vermeiden, indem ein Lesemodus basierend auf Bedingungen wie Zeit seit dem Schreiben von Daten, Temperaturdifferenz seit dem Schreiben von Daten oder dergleichen ausgewählt wird.
  • Das Lesemodusmodul 902 ist in der dargestellten Ausführungsform eingerichtet, um einen Lesemodus aus einer Vielzahl von Lesemodi zum Lesen von Daten aus einem Bereich des nicht-flüchtigen Speicherarrays 200 auszuwählen. Ein Lesemodus kann in verschiedenen Ausführungsformen auf eine Art und Weise des Lesens von Daten aus Speicherzellen Bezug nehmen. Zum Beispiel kann eine Lesekomponente 150, die einen ersten Lesemodus auswählt oder verwendet, eine bestimmte Reihe von Schritten durchführen, um Daten aus Speicherzellen zu lesen, kann aber eine unterschiedliche Reihe von Schritten durchführen, um Daten aus Speicherzellen zu lesen, wenn sie einen zweiten Lesemodus auswählt oder verwendet. In einigen Ausführungsformen kann das Auswählen eines Lesemodus das Bestimmen einschließen, ob ein zeitbasierter Soft-Bit-Lesemodus zum Lesen von Daten aus einem Bereich des nicht-flüchtigen Speichers verwendet werden soll oder ob ein anderer Lesemodus verwendet werden soll.
  • Die Lesekomponente 150 kann einen Lesemodus verwenden, der durch das Lesemodusmodul 902 ausgewählt oder bestimmt wird, um einen Lesevorgang durchzuführen, der Daten aus einem Bereich eines nicht-flüchtigen Speicherarrays 200 liest. Ein Bereich, aus dem Daten in einem Lesevorgang gelesen werden, kann auf der Granularität eines Lesevorgangs basieren. Zum Beispiel kann ein Bereich, aus dem Daten gelesen werden, acht Zellen für einen Lesevorgang auf Byte-Ebene sein oder Zellen einer Zeile oder Schicht eines Arrays für einen Lesevorgang auf Seiten- oder Block-Ebene sein.
  • In der dargestellten Ausführungsform schließt die Vielzahl von Lesemodi (z. B. mögliche Lesemodi), aus denen das Lesemodusmodul 902 einen Lesemodus zum Lesen von Daten auswählt, mindestens einen zeitbasierten Soft-Bit-Lesemodus ein. In verschiedenen Ausführungsformen kann ein zeitbasierter Soft-Bit-Lesemodus ein Modus sein, in dem eine Lesekomponente 150 einen Lesevorgang durchführt, der durch Anwenden eines einzelnen Satzes von Vorspannungsbedingungen auf einen Bereich von Zellen und Abtasten resultierender Bedingungen (z. B. Bitleitungsströme, Kondensatorspannungen oder dergleichen) zu mehreren Zeiten durchgeführt wird. Zum Beispiel kann ein Lesevorgang in einem zeitbasierten Soft-Bit-Lesemodus das wiederholte Digitalisieren von Kondensatorspannungen (oder anderen analogen Abtastverstärkerspannungen) einschließen, um sowohl Hard-Bits als auch Soft-Bits zu lesen. In weiteren Ausführungsformen kann ein zeitbasierter Lesemodus das Lesen von Soft-Bits ohne erneutes Anlegen eines neuen Satzes von Vorspannungsbedingungen an den Bereich von Zellen beinhalten.
  • Zum Beispiel kann, wie oben beschrieben, ein Abtastverstärker 700 ein digitales Ergebnis ausgeben, basierend darauf, ob eine Spannung an einem Kondensator 804 einen Schwellenwert zum Einschalten (oder Ausschalten) eines Abtasttransistors 806 erfüllt (oder nicht erfüllt). Die Spannung am Kondensator 804 kann einen Bitleitungsstrom über die Zeit integrieren oder aufsummieren, wobei der Bitleitungsstrom von Vorspannungsbedingungen, die an eine Zelle angelegt werden, und vom Zustand der Zelle abhängt. Wenn die Vorspannungsbedingungen zu einem hohen Bitleitungsstrom führen, von einer transistorbasierten Zelle 306, die eingeschaltet ist, oder von einer widerstandsbasierten Zelle 406, die in einem niederohmigen Zustand ist, dann kann der Kondensator 804 durch den Bitleitungsstrom schnell geladen oder entladen werden. Wenn umgekehrt die Vorspannungsbedingungen zu einem niedrigen oder null Bitleitungsstrom führen, von einer transistorbasierten Zelle 306, die ausgeschaltet ist, oder von einer widerstandsbasierten Zelle 406, die in einem hochohmigen Zustand ist, dann kann der Kondensator 804 durch den Bitleitungsstrom langsamer oder überhaupt nicht geladen oder entladen werden. Somit kann das Abtasten oder Digitalisieren der Kondensatorspannung nach einem bestimmten Zeitraum identifizieren, ob der Kondensator 804 geladen oder entladen ist, wodurch zwischen hohen Bitleitungsströmen und niedrigen Bitleitungsströmen und zwischen verschiedenen Zuständen einer Zelle, die den verschiedenen Bitleitungsströmen entsprechen, unterschieden wird.
  • Das Abtasten oder Digitalisieren der Kondensatorspannung zu mehreren Zeitpunkten kann Soft-Bits erzeugen, die weichen Leseschwellenwerten 602 entsprechen, wie vorstehend unter Bezugnahme auf 6 beschrieben, ohne unterschiedliche Vorspannungsbedingungen für unterschiedliche Leseschwellenwerte 502, 602 erneut anzulegen. Wenn ein einziger Satz von Vorspannungsbedingungen angelegt wird, kann ein Bitleitungsstrom, der ausreicht, um einen Kondensator 804, zum Schalten eines Abtasttransistors 806 zu einer nominalen Integrationszeit zum Lesen der Hard-Bits, über den Schwellenwert hinaus zu laden oder zu entladen, entweder ein hoher Bitleitungsstrom sein, der den Kondensator 804 über den Schwellenwert hinaus schnell lädt oder entlädt, oder kann ein mittlerer Bitleitungsstrom sein, der den Kondensator 804 über den Schwellenwert hinaus langsam lädt oder entlädt. Wenn der Bitleitungsstrom unzureichend ist, um den Kondensator 804 zu der nominalen Integrationszeit zum Lesen der Hard-Bits über den Schwellenwert hinaus zu laden oder zu entladen, kann der Bitleitungsstrom in ähnlicher Weise ein niedriger Bitleitungsstrom sein oder ein mittlerer Bitleitungsstrom sein, der den Kondensator 804 nach einem etwas längeren Zeitraum über den Schwellenwert hinaus geladen oder entladen hätte. Ein Abtasten der Kondensatorspannung (z. B. Digitalisieren der analogen Kondensatorspannung durch Bestimmen, ob ein Abtasttransistor 806 umgeschaltet hat, oder durch Verwenden eines anderen Typs von Spannung-Digital-Umwandlungsschaltung 706) zu einer oder mehreren zusätzlichen Integrationszeiten vor und/oder nach der nominalen Integrationszeit, kann es einer Lesekomponente 150 ermöglichen, zwischen höheren, niedrigeren und mittleren Bitleitungsströmen zu unterscheiden, um ein Ergebnis zu erhalten, das dem Anlegen höherer und niedrigerer Lesespannungen an das Steuergate einer Zelle als Vorspannungsbedingungen entspricht. Lesevorgänge für einen zeitbasierten Soft-Bit-Lesemodus werden nachstehend unter Bezugnahme auf das Vorspannungsmodul 904 und das Abtastmodul 906 ausführlicher beschrieben.
  • In verschiedenen Ausführungsformen wählt ein Lesemodusmodul 902 einen Lesemodus aus einer Vielzahl von Lesemodi aus, der mindestens einen zeitbasierten Soft-Bit-Lesemodus einschließt. Eine Vielzahl von Lesemodi schließt in weiteren Ausführungsformen mindestens einen anderen Lesemodus zusätzlich zu dem zeitbasierten Soft-Bit-Lesemodus ein. Zum Beispiel kann in verschiedenen Ausführungsformen eine Vielzahl von Lesemodi einen Hard-Bit-Lesemodus, in dem die Lesekomponente 150 Hard-Bits ohne Soft-Bits liest, und/oder einen vorspannungsbasierten Soft-Bit-Lesemodus, in dem die Lesekomponente 150 Hard-Bits und Soft-Bits durch iteratives Anlegen unterschiedlicher Vorspannungsbedingungen und Abtasten der resultierenden Kondensatorspannungen liest, einschließen. In einigen Ausführungsformen kann eine Vielzahl von Lesemodi mehr als einen zeitbasierten Soft-Bit-Lesemodus einschließen, wobei die unterschiedlichen zeitbasierten Soft-Bit-Lesemodi unterschiedliche Parameter zum Abtasten von Ergebnissen zu mehreren Integrationszeiten definieren. Zum Beispiel können Lesevorgänge in unterschiedlichen zeitbasierten Soft-Bit-Lesemodi unterschiedliche Anzahlen von Integrationszeiten, unterschiedliche Abstände zwischen Integrationszeiten oder dergleichen einschließen. In ähnlicher Weise kann in einigen Ausführungsformen eine Vielzahl von Lesemodi mehr als einen vorspannungsbasierten Soft-Bit-Lesemodus einschließen, der unterschiedliche Parameter definiert, wie etwa eine Anzahl von weichen Leseschwellenwerten 602, Abstände zwischen weichen Leseschwellenwerten 602 oder dergleichen. Verschiedene andere oder weitere Lesemodi können zum Durchführen von Lesevorgängen definiert werden und in einer Vielzahl von Lesemodi eingeschlossen sein, aus denen das Lesemodusmodul 902 einen Lesemodus auswählt.
  • In verschiedenen Ausführungsformen kann ein Lesemodusmodul 902 einen Lesemodus aus einer Vielzahl von Lesemodi auf verschiedene Weise auswählen. Zum Beispiel kann die Auswahl eines Lesemodus auf einer Fehlerrate, einer Datenretentionszeit, einer Anzahl von Programmier-/Löschzyklen, einer aktuellen Temperatur oder dergleichen basieren. Im Allgemeinen kann in verschiedenen Ausführungsformen ein zeitbasierter Soft-Bit-Lesemodus eine mittlere Latenz und Zuverlässigkeit im Vergleich zu einem Hard-Bit-Lesemodus mit niedriger Latenz, niedriger Zuverlässigkeit (in dem Fehler aufgrund des Fehlens von Soft-Bits wahrscheinlicher nicht korrigierbar sind) oder einem Soft-Bit-Lesemodus mit hoher Latenz, vorspannungsbasierter hoher Zuverlässigkeit, aufweisen.
  • Tatsächlich können manche Die-Steuerungen 206 aufgrund der hohen Latenz, die dem iterativen Anlegen unterschiedlicher Vorspannungsbedingungen zugeordnet ist, Daten unter Verwendung eines vorspannungsbasierten Soft-Bit-Lesemodus als einen Ausnahmefall lesen, um Lesefehler zu behandeln, die nicht korrigierbar waren, als Daten in einem Lesemodus mit niedrigerer Latenz gelesen wurden (z. B. einem Hard-Bit-Lesemodus). Aufgrund einer niedrigeren Latenz eines zeitbasierten Soft-Bit-Lesemodus kann jedoch eine Steuerung, wie etwa eine Vorrichtungssteuerung 126 oder eine Die-Steuerung 206, in einigen Ausführungsformen den zeitbasierten Soft-Bit-Lesemodus als Standard-Lesemodus verwenden. Mit dem zeitbasierten Soft-Bit-Lesemodus als Standard-Lesemodus kann eine Steuerung Lesevorgänge durchführen, wie durch den zeitbasierten Soft-Bit-Lesemodus als ein Standard oder Standardtyp von Lesevorgängen definiert, und kann andere Lesemodi als Reaktion auf spezifische Bedingungen verwenden, wie einen expliziten Befehl, um einen Vorgang in einem anderen Lesemodus, mit einer hohen Fehlerrate oder dergleichen durchzuführen. In verschiedenen Ausführungsformen kann die Verwendung eines zeitbasierten Soft-Bit-Lesemodus als Standard-Lesemodus eine reibungslose Leseleistung bereitstellen, da ein Decodierer einen konsistenten Zugriff auf Soft-Bits aufweist, ohne die Fehlerbehandlung mit hoher Latenz beim Neulesen in einem vorspannungsbasierten Soft-Bit-Lesemodus, wenn ein Hard-Bit-Lesen nicht korrigierbare Fehler aufweist.
  • In einigen Ausführungsformen kann das Lesemodusmodul 902 einen Lesemodus aus einer Vielzahl von Lesemodi basierend auf Informationen auswählen, die in einem Lesebefehl eingeschlossen sind, der von einer Steuerung, wie einer Vorrichtungssteuerung 126 oder einer Die-Steuerung 206, empfangen wird. Informationen, die in einem Lesebefehl eingeschlossen sind, können den Lesebefehl selbst und/oder beliebige Parameter des Lesebefehls einschließen. Zum Beispiel kann in einer Ausführungsform ein Befehlssatz für ein nicht-flüchtiges Speicherelement 123 unterschiedliche Lesebefehle für unterschiedliche Lesemodi einschließen, wodurch ermöglicht wird, dass der Lesemodus durch einen Benutzer, eine Anwendung, ein Betriebssystem, einen Vorrichtungstreiber, eine Vorrichtungssteuerung 126 oder dergleichen spezifiziert wird, und das Lesemodusmodul 902 kann einen Lesemodus gemäß dem durch einen Lesebefehl spezifizierten Lesemodus auswählen. In einer anderen Ausführungsform können unterschiedliche Parameter für einen Lesebefehl unterschiedliche Lesemodi spezifizieren, und das Lesemodusmodul 902 kann einen Lesemodus basierend auf dem Wert eines Parameters für einen Lesebefehl, dem Vorhandensein oder Fehlen eines Parameters für einen Lesebefehl oder dergleichen auswählen. Verschiedene andere oder weitere Arten von Informationen, die in einem Lesebefehl eingeschlossen sein können, können in ähnlicher Weise durch das Lesemodusmodul 902 verwendet werden, um einen Lesemodus auszuwählen.
  • In einigen Ausführungsformen kann das Lesemodusmodul 902 einen Lesemodus zum Lesen von Daten aus einem Bereich eines Speicherarrays 200 basierend auf Faktoren wie Metadaten für den Bereich, Fehlerkorrekturinformationen für den Bereich, Metadaten oder Fehlerkorrekturinformationen für einen anderen Bereich des Speicherarrays 200 oder dergleichen auswählen. Weitere Möglichkeiten für ein Lesemodusmodul 902 zum Auswählen eines Lesemodus werden nachstehend unter Bezugnahme auf das Metadatenmodul 1010, das Fehlerkorrekturmodul 1012 und das Modul für aktuelle Bedingungen 1014 von 10 ausführlicher beschrieben.
  • Das Vorspannungsmodul 904 in der dargestellten Ausführungsform ist eingerichtet, um einen Satz von Vorspannungsbedingungen an Zellen eines Bereichs eines Speicherarrays 200 anzulegen. In verschiedenen Ausführungsformen kann, wenn Daten aus einem Bereich eines Arrays 200 gelesen werden, wie etwa Zellen eines Bytes, einer Seite oder eines Blocks, das Lesemodusmodul 902 einen Lesemodus für den Bereich auswählen, und das Vorspannungsmodul 904 kann Vorspannungsbedingungen an den Bereich anlegen. In einigen Ausführungsformen kann ein Vorspannungsmodul 904, das Vorspannungsbedingungen an Zellen in einem Bereich anlegt, aus dem Daten gelesen werden, weitere Vorspannungsbedingungen an Zellen außerhalb des Bereichs anlegen. Zum Beispiel kann zum Lesen von Daten aus Zellen in einer Zeile eines NAND-Flash-Speicherarrays das Vorspannungsmodul 904 eine Lesevorspannung über eine Wortleitung 310 an Zellen in der Zeile anlegen und kann eine hohe Steuergatespannung an Zellen anderer Zeilen anlegen.
  • Wie vorstehend unter Bezugnahme auf die 3 und 4 beschrieben, können Vorspannungsbedingungen, die an Zellen angelegt werden, elektrische Bedingungen sein, wie Vorspannungen, Vorspannungsströme oder dergleichen, und können Bedingungen sein, die während eines Lesevorgangs für einen Zeitraum in einem stationären Zustand beibehalten werden (z. B. Steuergatespannungen zum Lesen aus Flash-Speicherzellen) oder können Übergangsbedingungen sein, die von einem anfänglich angelegten Wert (z. B. Bitleitungs-Vorladespannungen) abweichen dürfen. In einigen Ausführungsformen kann das Anlegen von Vorspannungsbedingungen an Zellen das Anlegen von Vorlade- oder Vorspannungen (oder anderen elektrischen Bedingungen) an periphere Komponenten einschließen, die mit den Zellen gekoppelt sind, wie etwa durch Vorladen eines Kondensators 804 eines Abtastverstärkers 700. In verschiedenen Ausführungsformen können Vorspannungsbedingungen ein beliebiger Satz von Spannungen, Strömen oder anderen Bedingungen sein, die, wenn sie an Zellen in einem Bereich eines Speicherarrays 200 angelegt werden, zu einer anderen Bedingung führen, wie etwa einem Bitleitungsstrom oder einer Kondensatorspannung, die vom Zustand einer oder mehrerer Zellen abhängt.
  • Das Vorspannungsmodul 904 kann in verschiedenen Ausführungsformen Vorspannungsbedingungen an Zellen anlegen, die Schaltungen wie Bitleitungs-Vorspannungs-/Abtastschaltungen 302, Wortleitungs-Vorspannungsschaltungen 308 und/oder Source-Vorspannungsschaltungen 314 verwenden, die mit den Zellen über Bitleitungen 304, Wortleitungen 310 und/oder Sourceleitungen 312 gekoppelt sind. In verschiedenen Ausführungsformen kann das Vorspannungsmodul 904 eine oder mehrere Vorspannungsschaltungen 302, 308, 314 einschließen oder damit kommunizieren.
  • In verschiedenen Ausführungsformen kann ein Vorspannungsmodul 904 Vorspannungsbedingungen an Zellen eines Bereichs eines Arrays 200 anlegen, so dass Bitleitungsströme, die den Zellen des Bereichs zugeordnet sind, Spannungen an Kondensatoren beeinflussen, die den Zellen des Bereichs zugeordnet sind. Bitleitungsströme, die den Zellen zugeordnet sind, können in verschiedenen Ausführungsformen elektrische Ströme in Bitleitungen 304 sein, die mit den Zellen gekoppelt sind. In verschiedenen Ausführungsformen kann ein Strom ein positiver Strom (z. B. in einer als positiv definierten Richtung), ein negativer Strom (z. B. in einer entgegengesetzten Richtung zu der als positiv definierten Richtung) oder ein Nullstrom sein. Der Begriff „Strom“ kann hierin verwendet werden, um sich auf eine Flussrate elektrischer Ladung zu beziehen, unabhängig davon, ob die Rate null oder nicht null ist.
  • In verschiedenen Ausführungsformen können Kondensatoren, die den Zellen zugeordnet sind, elektrische Komponenten mit einer Kapazität sein, die mit den Zellen oder den Bitleitungen 304 gekoppelt ist. In einer Ausführungsform können den Zellen zugeordnete Kondensatoren Abtastverstärkerkondensatoren 804 sein, wie oben beschrieben. In einer anderen Ausführungsform können Kondensatoren, die Zellen zugeordnet sind, die Bitleitungen 304 selbst sein, einschließlich ihrer Kapazität relativ zu nahegelegenen Komponenten. Ein Bitleitungsstrom kann eine Spannung an einem zugeordneten Kondensator beeinflussen, indem der Kondensator geladen wird, der Kondensator entladen wird oder die Kondensatorspannung unverändert bleibt (im Fall eines Nullstroms). Somit können, ebenso wie Bitleitungsströme in verschiedenen Ausführungsformen positiv, negativ oder null sein können, Kondensatorspannungen, die durch Bitleitungsströme beeinflusst werden, durch die Bitleitungsströme erhöht, verringert oder unverändert gelassen werden. Selbst wenn eine Kondensatorspannung aufgrund eines Null-Bitleitungsstroms in einer Bitleitung 304, die mit einem Kondensator 804 gekoppelt ist, unverändert ist, kann gesagt werden, dass die Kondensatorspannung durch den Bitleitungsstrom „beeinflusst“ wird, da sie ein Ergebnis des Bitleitungsstroms in dem Sinne ist, dass ein anderer Bitleitungsstrom eine andere Kondensatorspannung erzeugt hätte.
  • Wie oben unter Bezugnahme auf die 7 und 8 beschrieben, kann in einigen Ausführungsformen ein Abtastverstärker 700 einen Bitleitungsstrom auf verschiedene Weise in eine analoge Abtastverstärkerspannung unter Verwendung verschiedener Arten von Strom-Spannungs-Umwandlungsschaltungen 702 umwandeln. In verschiedenen Ausführungsformen können Vorspannungen oder andere Vorspannungsbedingungen, die durch das Vorspannungsmodul 904 angelegt werden, analoge Spannungen an Abtastverstärkern 700, die einer Zelle zugeordnet sind, beeinflussen. Analoge Spannungen an Abtastverstärkern 700, die Zellen zugeordnet sind, können Spannungen einschließen, die von einer Strom-Spannungs-Umwandlungsschaltung 702 erzeugt werden, die mit einer Bitleitung 304 gekoppelt ist. Abtastverstärker 700, die Zellen zugeordnet sind, können Abtastverstärker 700 einschließen, die mit Zellen gekoppelt sind, wie etwa Abtastverstärker 700 in den Bitleitungs-Vorspannungs-/Abtastschaltungen 302, die über Bitleitungen 304 mit Zellen gekoppelt sind.
  • Wie oben unter Bezugnahme auf Kondensatorspannungen beschrieben, können analoge Abtastverstärkerspannungen durch Vorspannungsbedingungen oder Bitleitungsströme beeinflusst werden, wenn die analogen Spannungen aus den Vorspannungsbedingungen oder Bitleitungsströmen resultieren, unabhängig davon, ob die resultierende Spannung in einem bestimmten Satz von Bedingungen wie Null-Bitleitungsstrom erhöht, verringert oder unverändert gelassen würde, wenn die resultierende Spannung als Reaktion auf einen anderen Satz von Vorspannungsbedingungen oder einen anderen Bitleitungsstrom geändert worden wäre.
  • Das Abtastmodul 906 ist in der dargestellten Ausführungsform eingerichtet, um Kondensatorspannungen abzutasten, die aus einem Satz von Vorspannungsbedingungen resultieren, die durch das Vorspannungsmodul 904 angelegt werden. Als Reaktion darauf, dass das Lesemodusmodul 902 den zeitbasierten Soft-Bit-Lesemodus auswählt, ist das Abtastmodul 906 eingerichtet, um Kondensatorspannungen zu mehreren Integrationszeiten abzutasten. Ein Abtastmodul 906 kann verschiedene Komponenten zum Abtasten von Kondensatorspannungen, Umwandeln analoger Spannungen an Abtastverstärkern 700 in digitale Abtastverstärkerergebnisse oder Digitalisieren von Abtastverstärkerergebnissen einschließen oder damit kommunizieren, wie etwa einen Abtasttransistor 806, eine Spannungs-Digital-Umwandlungsschaltung 706, einen Abtastverstärker 700 und/oder die Bitleitungs-Vorspannungs-/Abtastschaltungen 302.
  • In der dargestellten Ausführungsform ist das Abtastmodul 906 als Reaktion darauf, dass das Lesemodusmodul 902 den zeitbasierten Soft-Bit-Lesemodus zum Lesen von Daten aus einem Bereich eines Speicherarrays auswählt, eingerichtet, um Hard-Bits und Soft-Bits für den Bereich durch Abtasten von Kondensatorspannungen zu lesen oder anderweitiges Umwandeln analoger Spannungen in ein digitales Ergebnis zu mehreren Integrationszeiten. Wie vorstehend beschrieben, können Hard-Bits aus den Zellen gelesene Datenwerte sein, die von den Zellen gespeicherte Datenwerte sein können, jedoch Fehlern unterliegen, die beim Schreiben, Beibehalten oder Lesen der Daten aufgetreten sein können, während Soft-Bits Informationen sein können, die Zuverlässigkeit der Hard-Bits, das Vertrauen in die Hard-Bits, Fehlerwahrscheinlichkeiten für die Hard-Bits oder dergleichen anzeigen. Ein Abtastmodul 906 kann Hard-Bits und Soft-Bits lesen, indem es die Hard-Bits und Soft-Bits basierend auf Kondensatorspannungen oder anderen analogen Bedingungen, die Zellzuständen entsprechen, bestimmt.
  • Der Begriff „Integrationszeit“ kann in verschiedenen Ausführungsformen auf Zeiten Bezug nehmen, zu denen Kondensatorspannungen oder andere analoge Abtastverstärkerspannungen abgetastet oder digitalisiert werden. In einigen Ausführungsformen kann eine Integrationszeit insbesondere auf einen Zeitraum Bezug nehmen, während dessen ein Kondensator 804 einen elektrischen Strom integriert oder aufsummiert, so dass die resultierende Ladungsmenge am Kondensator 804 eine Kondensatorspannung erzeugt. In einer solchen Ausführungsform kann eine Integrationszeit beginnen, wenn ein Bitleitungsstrom mit einem Kondensator 804 (z. B. über einen Schalttransistor 802) gekoppelt wird, und kann enden, wenn die Kondensatorspannung digitalisiert oder abgetastet wird. In einer anderen Ausführungsform kann sich eine Integrationszeit allgemeiner auf einen Zeitraum beziehen, während dessen Vorspannungsbedingungen analoge Abtastverstärkerspannungen basierend auf von Speicherzellen gespeicherten Datenwerten erzeugen. Der Begriff Integrationszeit kann austauschbar verwendet werden, um auf Zeitspannen Bezug zu nehmen, die enden, wenn analoge Spannungen digitalisiert oder abgetastet werden, oder auf den Zeitpunkt, wenn analoge Spannungen digitalisiert oder abgetastet werden.
  • Unter Bezugnahme auf Zeitspannen können mehrere Integrationszeiten überlappende Zeitspannen sein, die zu einem gemeinsamen Zeitpunkt relativ dazu beginnen, dass das Vorspannungsmodul 904 Vorspannungsbedingungen anlegt, und die zu unterschiedlichen Zeitpunkten, zum Abtasten und Digitalisieren von Kondensatorspannungen oder anderen analogen Abtastverstärkerspannungen, enden. Unter Bezugnahme auf Zeitpunkte können mehrere Integrationszeiten unterschiedliche Zeitpunkte zum Abtasten oder Digitalisieren der analogen Abtastverstärkerspannungen sein, die aus einem einzigen angelegten Satz von Vorspannungsbedingungen resultieren.
  • Der Begriff „mehrere Integrationszeiten“ wird hierin verwendet, um sich auf das Abtasten und Digitalisieren von analogen Abtastverstärkerspannungen zu beziehen, die aus einem einzelnen Anlegen von Vorspannungsbedingungen an Zellen zu mehreren Zeiten resultieren, wenn die analoge Abtastverstärkerspannung auf diesem Anlegen von Vorspannungsbedingungen an die Zellen basiert. Zum Beispiel können Vorspannungsbedingungen an Zellen angelegt werden, so dass sich eine Kondensatorspannung im Laufe der Zeit basierend auf den Vorspannungsbedingungen und auf den von den Zellen gespeicherten Datenwerten entwickelt, und das Abtasten zu mehreren Integrationszeiten kann das wiederholte Abtasten oder Digitalisieren der Kondensatorspannung zu mehreren Zeitpunkten einschließen, während sie sich als Reaktion auf die anfänglich angelegten Vorspannungsbedingungen auflädt oder entlädt.
  • Der Begriff „mehrere Integrationszeiten“ wird hierin nicht verwendet, um auf Zeiten Bezug zu nehmen, die durch das Vorspannungsmodul 904, das einen anderen Satz von Vorspannungsbedingungen anlegt, getrennt sind. Zum Beispiel kann in einem vorspannungsbasierten Soft-Bit-Lesemodus eine Steuerung iterativ unterschiedliche Vorspannungsbedingungen anlegen und resultierende analoge Abtastverstärkerspannungen in digitale Abtastverstärkerergebnisse umwandeln. Obwohl mehrere Iterationen des Vorspannungs-, Integrations- und Abtastprozesses jeweils das Abtasten einer Kondensatorspannung zu einer Integrationszeit einschließen könnten, werden die Integrationszeiten, die durch Anlegen unterschiedlicher Vorspannungsbedingungen getrennt werden, nicht als mehrere Integrationszeiten bezeichnet. Vielmehr tastet ein Abtastmodul 906, das zu mehreren Integrationszeiten abtastet, in verschiedenen Ausführungsformen Kondensatorspannungen (oder andere analoge Abtastverstärkerspannungen) zu mehreren Zeiten ab, als Reaktion auf ein einzelnes Anlegen von Vorspannungsbedingungen durch das Vorspannungsmodul 904, ohne dass das Vorspannungsmodul 904 erneut andere Vorspannungsbedingungen anlegt.
  • In verschiedenen Ausführungsformen kann das Abtasten von Kondensatorspannungen oder anderen analogen Spannungen das Verwenden einer Spannungs-Digital-Umwandlungsschaltung 706, um ein digitales Abtastverstärkerergebnis zu erzeugen, und/oder das Empfangen oder Speichern des digitalen Abtastverstärkerergebnisses (z. B. in Daten-Latches 808) einschließen. Somit kann zum Abtasten von Kondensatorspannungen zu mehreren Integrationszeiten ein Abtastmodul 906 das Timing von Abtastverstärkerkomponenten steuern. Zum Beispiel ist unter Bezugnahme auf 8 der Kondensator 804 direkt mit dem Gate-Anschluss des Abtasttransistors 806 gekoppelt, und der Abtasttransistor 806 kann jederzeit eingeschaltet werden, wenn die Kondensatorspannung die Schwellenspannung für den Abtasttransistor 806 überschreitet. Somit kann, um die Kondensatorspannung zu mehreren Integrationszeiten abzutasten, das Abtastmodul 906 Daten-Latches 808 steuern oder auslösen, so dass das Ergebnis an der Ausgangsleitung 708 zu unterschiedlichen Integrationszeiten in unterschiedlichen Daten-Latches 808 eingeklinkt wird. In einer anderen Ausführungsform kann ein Abtastmodul 906 eine Schaltkomponente steuern, wie etwa einen Transistor, der den Kondensator 804 (oder die analoge Spannung am Knoten 704) mit dem Abtasttransistor 806 (oder einer anderen Spannungs-Digital-Umwandlungsschaltung 706) koppelt oder entkoppelt, und kann die analoge Spannung zu mehreren Integrationszeiten abtasten, indem die analoge Spannung zu diesen Integrationszeiten mit dem Abtasttransistor 806 gekoppelt wird. Verschiedene andere oder weitere Komponenten eines Abtastverstärkers 700 können in ähnlicher Weise durch ein Abtastmodul 906 gesteuert werden, um Kondensatorspannungen zu mehreren Integrationszeiten abzutasten oder zu digitalisieren.
  • In einigen Ausführungsformen kann ein Abtastmodul 906 Hard-Bits und Soft-Bits basierend auf den digitalen Abtastverstärkerergebnissen aus mehreren Integrationszeiten lesen oder bestimmen. In einer Ausführungsform können Hard-Bits Bits sein, die von einem Abtastmodul 906 zu einer der mehreren Integrationszeiten gelesen werden, ein Soft-Bit kann von dem Abtastmodul 906 basierend auf dem Ausmaß berechnet werden, in dem die Bits von den anderen Integrationszeiten mit dem Hard-Bit-Ergebnis übereinstimmen oder nicht übereinstimmen. In einer anderen Ausführungsform können Hard-Bits ein „Konsens-“ oder Mehrheitsergebnis aus mehreren Integrationszeiten sein, und Soft-Bits können ein Verhältnis oder eine andere Messung angeben, wie viele der Integrationszeiten ein Ergebnis erzeugt haben, das sich von den Hard-Bits unterscheidet. Verschiedene andere oder weitere Arten des Kombinierens digitaler Abtastverstärkerergebnisse aus mehreren Integrationszeiten können von einem Abtastmodul 906 verwendet werden, um Hard-Bits und Soft-Bits zu bestimmen.
  • 10 stellt eine andere Ausführungsform einer Lesekomponente 150 dar. In der dargestellten Ausführungsform kann die Lesekomponente 150 im Wesentlichen ähnlich den oben unter Bezugnahme auf die 1-9 beschriebenen Lesekomponenten 150 sein, einschließlich eines Lesemodusmoduls 902, eines Vorspannungsmoduls 904 und eines Abtastmoduls 906. In der dargestellten Ausführungsform schließt das Lesemodusmodul 902 ein Hard-Bit-Lesemodul 1002, ein zeitbasiertes Soft-Bit-Lesemodul 1004 und ein vorspannungsbasiertes Soft-Bit-Lesemodul 1006 ein. In der dargestellten Ausführungsform schließt die Lesekomponente 150 ein Integrationszeitauswahlmodul 1008, ein Metadatenmodul 1010, ein Fehlerkorrekturmodul 1012 und ein Modul für aktuelle Bedingungen 1014 ein.
  • In der dargestellten Ausführungsform schließt die Vielzahl von Lesemodi, die durch das Lesemodusmodul 902 ausgewählt werden können, einen zeitbasierten Soft-Bit-Lesemodus, wie vorstehend beschrieben, sowie einen Hard-Bit-Lesemodus und einen vorspannungsbasierten Soft-Bit-Lesemodus ein. Als Reaktion darauf, dass das Lesemodusmodul 902 den zeitbasierten Soft-Bit-Lesemodus auswählt, kann das zeitbasierte Soft-Bit-Lesemodul 1004 mit dem Vorspannungsmodul 904 und dem Abtastmodul 906 kommunizieren, um ein zeitbasiertes Soft-Bit-Lesen, wie oben beschrieben, einschließlich das Abtasten oder Digitalisieren von Kondensatorspannungen, die aus einem angelegten Satz von Vorspannungsbedingungen resultieren, zu mehreren Integrationszeiten durchzuführen.
  • Das Hard-Bit-Lesemodul 1002 ist in der dargestellten Ausführungsform eingerichtet, um mit dem Vorspannungsmodul 904 und dem Abtastmodul 906 zu kommunizieren, um ein Hard-Bit-Lesen durchzuführen, als Reaktion darauf, dass das Lesemodusmodul 902 einen Hard-Bit-Lesemodus aus der Vielzahl von Lesemodi auswählt. Im Hard-Bit-Lesemodus kann das Abtastmodul 906 Hard-Bits für einen Bereich von Speicherzellen lesen, indem es die Kondensatorspannungen (oder andere analoge Abtastverstärkerspannungen) abtastet, die aus einem Satz von Vorspannungsbedingungen resultieren, die durch das Vorspannungsmodul 904 zu einer einzigen Integrationszeit angelegt werden. In einem Hard-Bit-Lesemodus kann das Abtasten zu einer einzigen Integrationszeit möglicherweise nicht genug Informationen bereitstellen, um Soft-Bits zu lesen oder zu bestimmen, aber um Hard-Bits mit niedrigerer Latenz als in einem Soft-Bit-Lesemodus bereitstellen. In einigen Ausführungsformen kann ein Lesemodusmodul 902 einen Hard-Bit-Lesemodus auswählen, wenn erwartet wird, dass eine Fehlerrate niedrig ist (z. B. bei oder unter einer Rate, die durch einen Fehlerkorrekturcode-Decodierer ohne Verwendung von Soft-Bits korrigierbar ist), wenn beispielsweise die Datenretentionszeit kleiner als ein Schwellenwert ist, Programmier-/Löschzählungen kleiner als ein Schwellenwert sind, Fehlerraten zum Lesen von Daten für andere Bereiche des Arrays 200 niedrig sind oder dergleichen.
  • Das vorspannungsbasierte Soft-Bit-Lesemodul 1006 ist in der dargestellten Ausführungsform eingerichtet, um mit dem Vorspannungsmodul 904 und dem Abtastmodul 906 zu kommunizieren, um ein vorspannungsbasiertes Soft-Bit-Lesen durchzuführen, als Reaktion darauf, dass das Lesemodusmodul 902 einen vorspannungsbasierten Soft-Bit-Lesemodus aus der Vielzahl von Lesemodi auswählt. In dem vorspannungsbasierten Soft-Bit-Lesemodus können das Vorspannungsmodul 904 und das Abtastmodul 906 zusammenwirken, um iterativ unterschiedliche Vorspannungsbedingungen anzulegen und resultierende Kondensatorspannungen abzutasten. Das Vorspannungsmodul 904 kann einen Satz von Vorspannungsbedingungen anlegen, und das Abtastmodul 906 kann die Kondensatorspannungen (oder andere analoge Abtastverstärkerspannungen) abtasten oder digitalisieren, die aus dem angelegten Satz von Vorspannungsbedingungen resultieren, wie oben beschrieben. Das Vorspannungsmodul 904 kann dann einen oder mehrere zusätzliche Sätze von Vorspannungsbedingungen (in unterschiedlichen Vorspannungs-/Abtastiterationen für jeden Satz von Vorspannungsbedingungen) anlegen, und das Abtastmodul 906 kann die Kondensatorspannungen (oder andere analoge Abtastverstärkerspannungen) abtasten oder digitalisieren, die aus dem zusätzlichen angelegten Satz von Vorspannungsbedingungen resultieren. Das Abtastmodul 906 kann mehrere Ergebnisse aus den verschiedenen Sätzen von Vorspannungsbedingungen auf ähnliche Weise wie oben beschrieben kombinieren, um digitale Abtastverstärkerergebnisse aus mehreren Integrationszeiten zu kombinieren, um Hard-Bits und Soft-Bits für einen Bereich von Speicherzellen zu lesen oder zu bestimmen.
  • In verschiedenen Ausführungsformen kann ein vorspannungsbasiertes Soft-Bit-Lesen unter Verwendung von Ergebnissen aus mehreren Sätzen angelegter Vorspannungsbedingungen aufgrund des wiederholten Anlegens von Vorspannungsbedingungen eine höhere Latenz aufweisen als ein zeitbasiertes Soft-Bit-Lesen. In einigen Ausführungsformen kann jedoch ein vorspannungsbasiertes Soft-Bit-Lesen eine größere Zuverlässigkeit oder eine bessere Fehlerkorrektur bereitstellen als der zeitbasierte Soft-Bit-Lesemodus. Somit kann in einigen Ausführungsformen ein Lesemodusmodul 902 einen vorspannungsbasierten Soft-Bit-Lesemodus mit hoher Latenz und hoher Zuverlässigkeit auswählen, wenn erwartet wird, dass eine Fehlerrate hoch ist (z. B. über einer Rate, die durch einen Fehlerkorrekturcode-Decodierer unter Verwendung von Soft-Bits aus einem zeitbasierten Soft-Bit-Lesen korrigierbar ist), wenn beispielsweise die Datenretentionszeit über einem Schwellenwert liegt, Programmier-/Löschzählungen über einem Schwellenwert liegen, Fehlerraten zum Lesen von Daten für andere Bereiche des Arrays 200 hoch sind oder dergleichen.
  • In einigen Ausführungsformen kann das zeitbasierte Soft-Bit-Lesemodul 1004 mehrere zeitbasierte Soft-Bit-Lesemodi mit unterschiedlichen Integrationszeiten, unterschiedlichen Anzahlen von Integrationszeiten oder dergleichen bereitstellen. In einer Ausführungsform kann das Lesemodusmodul 902 aus einer Vielzahl von Lesemodi auswählen, einschließlich eines ersten zeitbasierten Soft-Bit-Lesemodus und eines zweiten zeitbasierten Soft-Bit-Lesemodus. Im ersten zeitbasierten Soft-Bit-Lesemodus kann das zeitbasierte Soft-Bit-Lesemodul 1004 mit dem Abtastmodul 906 kommunizieren, um Kondensatorspannungen zu zwei Integrationszeiten abzutasten oder zu digitalisieren. Im zweiten zeitbasierten Soft-Bit-Lesemodus kann das zeitbasierte Soft-Bit-Lesemodul 1004 mit dem Abtastmodul 906 kommunizieren, um Kondensatorspannungen zu drei Integrationszeiten abzutasten oder zu digitalisieren. Die unterschiedlichen zeitbasierten Soft-Bit-Lesemodi können unterschiedliche Kompromisse zwischen Zuverlässigkeit (von Abtastung zu mehr Integrationszeiten) und Geschwindigkeit (von Abtastung zu weniger Integrationszeiten) widerspiegeln.
  • Das Metadatenmodul 1010 kann in verschiedenen Ausführungsformen Metadaten für Bereiche eines nicht-flüchtigen Speicherarrays 200 (z. B. Bytes, Seiten, Blöcke oder dergleichen) zur Schreibzeit aufzeichnen und/oder kann Metadaten zur Lesezeit abrufen. In bestimmten Ausführungsformen kann die Wahrscheinlichkeit von Datenfehlern von Faktoren wie Zeit und Temperatur abhängen. Wenn Daten nach einer langen Retentionszeit gelesen werden, oder bei einer Temperatur, die sich erheblich von dem Zeitpunkt unterscheidet, zu dem die Daten geschrieben wurden, können Fehler wahrscheinlicher sein als wenn Daten nach einer kurzen Retentionszeit gelesen werden, oder bei einer Temperatur ähnlich dem Zeitpunkt, zu dem die Daten geschrieben wurden. Somit kann das Metadatenmodul 1010 in einigen Ausführungsformen Zeit- und Temperatur-Metadaten für einen Bereich von Speicherzellen zur Schreibzeit aufzeichnen. In verschiedenen Ausführungsformen kann ein Metadatenmodul 1010 verschiedene andere oder weitere Arten von Metadaten für verschiedene Bereiche speichern und abrufen, wie Programmier-/Löschzykluszählungen, Fehlerraten für frühere Lesevorgänge oder dergleichen.
  • Zeit-Metadaten können eine beliebige Informationsaufzeichnung einschließen oder einer Schreibzeit entsprechen, wie etwa einem Datumstempel, einer seit einer vordefinierten Epoche verstrichene Zeit, einem Zählerwert für einen periodisch inkrementierten Zähler oder dergleichen. In ähnlicher Weise können Temperatur-Metadaten beliebige Informationen einschließen, die eine Temperatur zur Schreibzeit aufzeichnen, wie etwa eine Celsius-Temperatur, eine Fahrenheit-Temperatur, eine Angabe, ob eine Temperatur relativ zu einem vordefinierten Schwellenwert hoch oder niedrig war, oder dergleichen.
  • Das Modul für aktuelle Bedingungen 1014 kann in bestimmten Ausführungsformen aktuelle Bedingungen für Werte bestimmen, die durch das Metadatenmodul 1010 aufgezeichnet werden, wie etwa eine aktuelle Zeit und/oder eine aktuelle Temperatur. Das Modul für aktuelle Bedingungen 1014 kann in einigen Ausführungsformen Schaltungen zum Bestimmen aktueller Zeit- oder Temperaturbedingungen, wie Taktschaltungen, Zähler, Thermoelemente, Thermistoren oder dergleichen, einschließen oder damit kommunizieren. Zur Schreibzeit kann das Metadatenmodul 1010 Metadaten basierend auf aktuellen Bedingungen aus dem Modul für aktuelle Bedingungen 1014 aufzeichnen. Zur Lesezeit kann das Lesemodusmodul 902 in einigen Ausführungsformen einen Lesemodus basierend auf Metadaten von dem Metadatenmodul 1010 und/oder basierend auf aktuellen Bedingungen von dem Modul für aktuelle Bedingungen 1014 auswählen.
  • In einer Ausführungsform kann das Lesemodusmodul 902 einen Lesemodus zum Lesen von Daten aus einem Bereich eines Speicherarrays 200 basierend auf Metadaten auswählen, die durch das Metadatenmodul 1010 zur Schreibzeit für den Bereich aufgezeichnet werden. Zum Beispiel kann in einer Ausführungsform das Lesemodusmodul 902 zwischen einem Hard-Bit-Lesemodus, einem zeitbasierten Soft-Bit-Lesemodus und/oder einem vorspannungsbasierten Soft-Bit-Lesemodus basierend auf Metadaten, wie etwa einer Zeit-/Temperatur-Markierung, die eine Zeit und Temperatur zur Schreibzeit für einen Bereich angibt, einer Programmier-/Löschzykluszählung oder dergleichen, auswählen.
  • In einigen Ausführungsformen kann das Lesemodusmodul 902 einen Lesemodus zum Lesen von Daten aus einem Bereich eines Speicherarrays 200 basierend auf einem Vergleich der aktuellen Zeit und Temperatur, die von dem Modul für aktuelle Bedingungen 1014 erhalten werden, mit Zeit- und Temperatur-Metadaten auswählen, die zur Schreibzeit für den Bereich aufgezeichnet werden, die von dem Metadatenmodul 1010 erhalten werden. Zum Beispiel kann das Lesemodusmodul 902 zwischen Lesemodi mit niedrigerer Latenz, niedrigerer Zuverlässigkeit und Lesemodi mit höherer Latenz, höherer Zuverlässigkeit basierend auf einer Zeitdifferenz zwischen Schreibzeit und Lesezeit und/oder einer Temperatur, die sich zwischen Schreibzeit und Lesezeit unterscheidet, auswählen.
  • Das Fehlerkorrekturmodul 1012 ist in der dargestellten Ausführungsform eingerichtet, um Hard-Bits und/oder Soft-Bits von dem Abtastmodul 906 zu verwenden, um Datenfehler zu erkennen und zu korrigieren. In verschiedenen Ausführungsformen kann ein Fehlerkorrekturmodul 1012 einen oder mehrere Fehlerkorrekturcode-Decodierer einschließen oder damit kommunizieren, wie etwa einen Hard-Decision-Decodierer, der Hard-Bits ohne Soft-Bits verwendet, und/oder einen Soft-Decision-Decodierer, der Hard-Bits und Soft-Bits verwendet, um Fehler erkennen und zu korrigieren. In bestimmten Ausführungsformen kann das Fehlerkorrekturmodul 1012 dem Lesemodusmodul 902 Fehlerkorrekturinformationen bereitstellen. Fehlerkorrekturinformationen können Informationen über Rohfehlerraten, korrigierbare Fehlerraten, nicht korrigierbare Fehlerraten oder dergleichen einschließen.
  • In einigen Ausführungsformen kann das Lesemodusmodul 902 einen Lesemodus zum Lesen von Daten aus einem Bereich eines Speicherarrays basierend auf Fehlerkorrekturinformationen für einen Bereich auswählen, die von dem Fehlerkorrekturmodul 1012 erhalten werden. Wenn zum Beispiel ein vorheriger Lesevorgang für den Bereich zu nicht korrigierbaren Fehlern oder zu einer erheblichen Fehlerkorrekturlatenz zum Decodieren von Daten mit einer großen Anzahl von korrigierbaren Fehlern (z. B. relativ zu einem vordefinierten Schwellenwert) führte, kann das Lesemodusmodul 902 in einen Lesemodus mit höherer Latenz und höherer Zuverlässigkeit zum Lesen von Daten aus diesem Bereich wechseln. Wenn umgekehrt ein vorheriger Lesevorgang für den Bereich zu einer geringeren Anzahl von korrigierbaren Fehlern relativ zu einem vordefinierten Schwellenwert führte, kann das Lesemodusmodul 902 in einen Lesemodus mit niedrigerer Latenz und niedrigerer Zuverlässigkeit zum Lesen von Daten aus diesem Bereich wechseln.
  • In einigen Ausführungsformen kann das Lesemodusmodul 902 einen Lesemodus zum Lesen von Daten aus einem Bereich eines Speicherarrays 200 basierend auf Fehlerkorrekturinformationen und/oder Metadaten für einen oder mehrere andere Bereiche des Arrays 200 auswählen. In einer Ausführungsform kann ein Lesemodusmodul 902 Gruppen von Bereichen (z. B. Bytes, Seiten, Blöcke oder dergleichen) mit ähnlichen Metadaten identifizieren oder bestimmen. Wenn zum Beispiel das Metadatenmodul 1010 Zeit- und Temperatur-Metadaten zur Schreibzeit für Bereiche eines Arrays aufzeichnet, kann ein Lesemodusmodul 902 zeitbasierte Schwellenwerte verwenden, um Gruppen von Bereichen zu definieren, in die zu ähnlichen Zeiten geschrieben wurde, und/oder kann temperaturbasierte Schwellenwerte verwenden, um Gruppen von Bereichen zu definieren, in die bei ähnlichen Temperaturen geschrieben wurde. In einer weiteren Ausführungsform kann eine Gruppe von Bereichen Bereiche einschließen, für die sowohl die Datenretentionszeit als auch die Schreibzeittemperatur ähnlich sind (z. B. innerhalb von Schwellenwerten). Schwellenwerte zum Definieren von Gruppen können von einem Hersteller vordefiniert werden, die basierend auf Fehlerraten für unterschiedliche Datenretentionszeiten oder -temperaturen oder dergleichen dynamisch definiert werden.
  • In einigen Ausführungsformen kann das Auswählen eines Lesemodus für einen ersten Bereich durch das Lesemodusmodul 902 basierend auf Fehlerkorrekturinformationen und/oder Metadaten für einen zweiten Bereich das Auswählen eines Lesemodus für eine Gruppe von Bereichen einschließen, die basierend auf Metadaten definiert sind, wobei die Gruppe von Bereichen den ersten Bereich und den zweiten Bereich einschließt. In einer weiteren Ausführungsform kann der Lesemodus für die Gruppe von Bereichen (und somit zum Lesen von Daten aus dem ersten Bereich) auf Fehlerkorrekturinformationen basieren, die durch das Fehlerkorrekturmodul 1012 beim Decodieren von Daten aus dem zweiten Bereich erzeugt werden. Wenn zum Beispiel ein Lesevorgang für den zweiten Bereich zu nicht korrigierbaren Fehlern oder zu einer erheblichen Fehlerkorrekturlatenz zum Decodieren von Daten mit einer großen Anzahl von korrigierbaren Fehlern (z. B. relativ zu einem vordefinierten Schwellenwert) führte, kann das Lesemodusmodul 902 in einen Lesemodus mit höherer Latenz und höherer Zuverlässigkeit zum Lesen von Daten aus Bereichen in der Gruppe wechseln. Wenn umgekehrt ein Lesevorgang für den zweiten Bereich zu einer geringeren Anzahl von korrigierbaren Fehlern relativ zu einem vordefinierten Schwellenwert führte, kann das Lesemodusmodul 902 in einen Lesemodus mit niedrigerer Latenz und niedrigerer Zuverlässigkeit zum Lesen von Daten aus Bereich in der Gruppe wechseln.
  • Das Integrationszeitauswahlmodul 1008 ist in der dargestellten Ausführungsform eingerichtet, um Integrationszeiten auszuwählen, die von dem Abtastmodul 906 zum Abtasten zu mehreren Integrationszeiten verwendet werden. In einigen Ausführungsformen können die mehreren Integrationszeiten, die von dem Abtastmodul 906 im zeitbasierten Soft-Bit-Lesemodus verwendet werden, einen Satz von Integrationszeiten einschließen, die vom Integrationszeitauswahlmodul 1008 ausgewählt werden. Ein Satz von Integrationszeiten kann in verschiedenen Ausführungsformen Integrationszeiten einschließen, die auf verschiedene Weise definiert sind, wie Anzahlen von Mikrosekunden oder Nanosekunden seit einer Startzeit, Anzahlen von Taktimpulsen seit einer Startzeit, Unterschiede von einer nominalen Integrationszeit oder einer Hard-Bit-Integrationszeit oder dergleichen. Verschiedene andere oder weitere Arten des Anzeigens einer Zeit zum Abtasten oder Digitalisieren von Kondensatorspannungen (oder anderen analogen Abtastverstärkerspannungen) können von einem Integrationszeitauswahlmodul 1008 verwendet werden, um einen Satz von Integrationszeiten zur Verwendung durch das Abtastmodul 906 zu definieren oder auszuwählen.
  • In einer Ausführungsform kann das Integrationszeitauswahlmodul 1008 Integrationszeiten basierend auf Informationen auswählen, die in einem Lesebefehl eingeschlossen sind. Zum Beispiel kann ein Lesebefehl selbst oder Parameter eines Lesebefehls Integrationszeiten direkt anzeigen oder kann andere Informationen anzeigen, die ein Integrationszeitauswahlmodul 1008 verwendet, um Integrationszeiten auszuwählen. In einer anderen Ausführungsform kann das Integrationszeitauswahlmodul 1008 Integrationszeiten zum Lesen von Daten aus einem Bereich eines Arrays 200 basierend auf Metadaten für den Bereich, Fehlerkorrekturinformationen für den Bereich, Fehlerkorrekturinformationen für einen zweiten Bereich oder Gruppe von Bereichen des nicht-flüchtigen Speicherarrays und/oder Metadaten, die zur Schreibzeit für den zweiten Bereich oder Gruppe von Bereichen aufgezeichnet wurden, auswählen. Oben beschriebene Faktoren, die von dem Lesemodusmodul 902 zum Auswählen eines Lesemodus verwendet werden können, können in ähnlicher Weise von dem Integrationszeitauswahlmodul 1008 zum Auswählen von Integrationszeiten verwendet werden.
  • Zum Beispiel kann in einer Ausführungsform das Integrationszeitauswahlmodul 1008 eine durchschnittliche, zentrale oder nominale Integrationszeit zum Lesen von Hard-Bits aus einem Bereich von Zellen basierend auf Informationen wie einer Temperaturdifferenz seit der Schreibzeit, einer Datenretentionszeit, einer Programmier-/Löschzykluszählung oder dergleichen, auswählen. In einigen Ausführungsformen kann das Integrationszeitauswahlmodul 1008 eine durchschnittliche, zentrale oder nominale Integrationszeit zum Lesen von Hard-Bits basierend auf einer wahrscheinlichen Richtung oder einem wahrscheinlichen Betrag des Drifts in der datenspeichernden physikalischen Eigenschaft einer Zelle auswählen. Zum Beispiel kann das Integrationszeitauswahlmodul 1008 eine Hard-Bit-Integrationszeit auswählen, die einem niedrigeren harten Leseschwellenwert 502 entspricht, wenn die Datenretentionszeit einen Schwellenwert überschreitet (was darauf hinweist, dass ein Ladungsverlust wahrscheinlich ist), oder kann eine Hard-Bit-Integrationszeit auswählen, die einem höheren harten Leseschwellenwert 502 entspricht, wenn eine Anzahl von Vorgängen für andere Bereiche einen Schwellenwert überschreitet (was darauf hinweist, dass Lesestörungs- oder Programmstörungsfehler wahrscheinlich sind).
  • In einer weiteren Ausführungsform kann das Integrationszeitauswahlmodul 1008 eine Anzahl von Soft-Bit-Integrationszeiten (z. B. Integrationszeiten zum Lesen von Soft-Bits, zusätzlich zu einer zentralen oder nominalen Integrationszeit zum Lesen von Hard-Bits) auswählen und/oder kann eine oder mehrere Zeitdifferenzen zwischen Soft-Bit-Integrationszeiten und der Hard-Bit-Integrationszeit auswählen. Zum Beispiel kann, bezugnehmend auf die 5 und 6, wobei Fehler einer Verbreiterung und Überlappung der Spitzen zugeordnet sind, die Verteilungen von Schwellenspannungen für Zellen in unterschiedlichen Zuständen darstellen, das Integrationszeitauswahlmodul 1008 Soft-Bit-Integrationszeiten auswählen, die näher an einer Hard-Bit-Integrationszeit liegen, wenn ein geringer Betrag an Verbreiterung und Überlappung wahrscheinlich ist, oder kann Soft-Bit-Integrationszeiten auswählen, die weiter von einer Hard-Bit-Integrationszeit entfernt liegen, wenn ein größerer Betrag an Verbreiterung und Überlappung wahrscheinlich ist. In einer anderen Ausführungsform kann das Integrationszeitauswahlmodul 1008 die Anzahl von Soft-Bit-Integrationszeiten erhöhen, wenn ein größerer Betrag an Verbreiterung und Überlappung wahrscheinlich ist. Somit kann in einigen Ausführungsformen das Integrationszeitauswahlmodul 1008 eine Anzahl von Soft-Bit-Integrationszeiten und/oder Zeitdifferenzen zwischen Soft-Bit-Integrationszeiten und der Hard-Bit-Integrationszeit basierend auf einem oder mehreren Faktoren auswählen, die Fehlern zugeordnet sind, wie etwa einer Datenretentionszeit, einer Temperaturverschiebung, einer Lesezählung, einer Programmier-/Löschzykluszählung oder dergleichen.
  • 11 ist ein Flussdiagramm, das eine Ausführungsform eines Verfahrens 1100 zum Lesen von Daten veranschaulicht. Das Verfahren 1100 beginnt, und ein Lesemodusmodul 902 bestimmt 1102, ob ein zeitbasierter Soft-Bit-Lesemodus zum Lesen von Daten aus einem Bereich des nicht-flüchtigen Speichers verwendet werden soll. Als Reaktion auf das Bestimmen 1102 des Lesemodusmoduls 902, dass kein zeitbasierter Soft-Bit-Lesemodus verwendet wird, liest 1108 eine Lesekomponente 150 Daten aus dem Bereich in einem anderen Lesemodus, und das Verfahren 1100 endet.
  • Als Reaktion auf das Bestimmen 1102 des Lesemodusmoduls 902, dass ein zeitbasierter Soft-Bit-Lesemodus verwendet wird, legt 1104 ein Vorspannungsmodul 904 einen Satz von Vorspannungen an Zellen des Bereichs an, so dass Zustände der Zellen analoge Spannungen an Abtastverstärkern 700, die den Zellen zugeordnet sind, beeinflussen. Ein Abtastmodul 906 liest Hard-Bits und Soft-Bits für den Bereich, durch Umwandeln 1106 der analogen Spannungen, die durch die angelegten Vorspannungen beeinflusst werden, zu mehreren Integrationszeiten in digitale Abtastverstärkerergebnisse, und das Verfahren 1100 endet.
  • 12 ist ein Flussdiagramm, das eine andere Ausführungsform eines Verfahren 1200 zum Lesen von Daten aus einem Bereich des nicht-flüchtigen Speichers veranschaulicht. Das Verfahren 1200 beginnt und ein Lesemodusmodul 902 vergleicht 1202 aktuelle Zeit und Temperatur (z. B. aus dem Modul für aktuelle Bedingungen 1014) mit Metadaten für den Bereich (z. B. aus dem Metadatenmodul 1010). Das Lesemodusmodul 902 bestimmt 1204, ob eine Zeitdifferenz oder eine Temperaturdifferenz einen Schwellenwert überschreitet. Wenn der Zeit- oder Temperaturschwellenwert überschritten wird, wählt 1206 das Integrationszeitauswahlmodul 1008 eine Anzahl von Integrationszeiten aus und bestimmt die Integrationszeiten. Ein Vorspannungsmodul 904 legt 1208 einen Satz von Vorspannungen an Zellen des Bereichs an, so dass Zustände der Zellen analoge Spannungen an Abtastverstärkern 700 beeinflussen, die den Zellen zugeordnet sind. Ein Abtastmodul 906 liest Hard-Bits und Soft-Bits für den Bereich, durch Umwandeln 1210 der analogen Spannungen, die durch die angelegten Vorspannungen beeinflusst werden, zu mehreren Integrationszeiten in digitale Abtastverstärkerergebnisse, und das Verfahren 1200 endet.
  • Wird der Zeit- oder Temperaturschwellenwert nicht überschritten, liest 1212 eine Lesekomponente 150 in einem anderen Lesemodus Daten aus dem Bereich. Das Fehlerkorrekturmodul 1012 bestimmt 1214, ob eine Fehlerrate außerhalb des Bereichs liegt (z. B. unterhalb eines Schwellenwerts für die Verwendung eines Lesemodus mit niedrigerer Latenz und niedrigerer Zuverlässigkeit oder oberhalb eines Schwellenwerts für die Verwendung eines Lesemodus mit höherer Latenz und höherer Zuverlässigkeit). Wenn die Fehlerrate nicht außerhalb des Bereichs liegt, endet das Verfahren 1200. Wenn die Fehlerrate außerhalb des Bereichs liegt, ändert 1216 das Lesemodusmodul 902 den Lesemodus für zukünftige Lesevorgänge für eine Gruppe von Bereichen, die basierend auf Zeit- und/oder Temperatur-Metadaten definiert sind, und das Verfahren 1200 endet.
  • Mittel zum Auswählen eines Lesemodus aus einer Vielzahl von Lesemodi zum Lesen von Daten aus einem Bereich eines nicht-flüchtigen Speichers können in verschiedenen Ausführungsformen ein Lesemodusmodul 902, eine Lesekomponente 150, eine Die-Steuerung 206, eine Vorrichtungssteuerung 126 und/oder andere logische oder elektronische Hardware einschließen. Andere Ausführungsformen können ähnliche oder äquivalente Mittel zum Auswählen eines Lesemodus einschließen.
  • Mittel zum Erzeugen analoger Spannungen basierend auf Daten, die von Zellen eines Bereichs eines nicht-flüchtigen Speichers gespeichert werden, können in verschiedenen Ausführungsformen ein Vorspannungsmodul 904, eine Lesekomponente 150, Bitleitungs-Vorspannungs-/Abtastschaltungen 302, Wortleitungs-Vorspannungsschaltungen 308, Source-Vorspannungsschaltungen 314, einen Abtastverstärker 700, eine Strom-Spannungs-Umwandlungsschaltung 702, einen Kondensator 804, eine Die-Steuerung 206 und/oder andere logische oder elektronische Hardware einschließen. Andere Ausführungsformen können ähnliche oder äquivalente Mittel zum Erzeugen analoger Spannungen basierend auf gespeicherte Daten einschließen.
  • Mittel zum Digitalisieren analoger Spannungen bei einer Anzahl von Integrationszeiten basierend auf dem ausgewählten Lesemodus können in verschiedenen Ausführungsformen ein Abtastmodul 906, eine Lesekomponente 150, eine Die-Steuerung 206, einen Abtastverstärker 700, eine Spannungs-Digital-Umwandlungsschaltung 706, einen Abtasttransistor 806 und/oder andere logische oder elektronische Hardware einschließen. Andere Ausführungsformen können ähnliche oder äquivalente Mittel zum Digitalisieren analoger Spannungen einschließen.
  • Mittel zum Vergleichen einer aktuellen Zeit und Temperatur mit Zeit- und Temperatur-Metadaten, die zur Schreibzeit für einen Bereich eines nicht-flüchtigen Speichers aufgezeichnet wurden, können in verschiedenen Ausführungsformen ein Lesemodusmodul 902, ein Metadatenmodul 1010, ein Modul für aktuelle Bedingungen 1014, eine Lesekomponente 150, eine Die-Steuerung 206, eine Vorrichtungssteuerung 126 und/oder andere logische oder elektronische Hardware einschließen. Andere Ausführungsformen können ähnliche oder äquivalente Mittel zum Vergleichen von Zeiten und Temperaturen einschließen.
  • Mittel zum Bestimmen von Integrationszeiten können in verschiedenen Ausführungsformen ein Integrationszeitauswahlmodul 1008, ein Metadatenmodul 1010, ein Modul für aktuelle Bedingungen 1014, ein Fehlerkorrekturmodul 1012, eine Lesekomponente 150, eine Die-Steuerung 206, eine Vorrichtungssteuerung 126 und/oder andere logische oder elektronische Hardware einschließen. Andere Ausführungsformen können ähnliche oder äquivalente Mittel zum Bestimmen von Integrationszeiten einschließen.
  • Die vorliegende Offenbarung kann in anderen spezifischen Formen ausgeführt werden, ohne von ihrem Wesen oder ihren wesentlichen Eigenschaften abzuweichen. Die beschriebenen Ausführungsformen sind in jeder Hinsicht nur als veranschaulichend und nicht als einschränkend zu betrachten. Der Schutzumfang der Offenbarung ist daher eher durch die beiliegenden Ansprüche als durch die vorangehende Beschreibung angegeben. Alle Änderungen, die in die Bedeutung und den Äquivalenzbereich der Ansprüche fallen, sollen in ihren Schutzumfang fallen.

Claims (20)

  1. Gerät, aufweisend: ein Array von nicht-flüchtigen Speicherzellen; und eine Steuerung, die eingerichtet ist zum: Auswählen eines Lesemodus aus einer Vielzahl von Lesemodi zum Lesen von Daten aus einem Bereich des Arrays, wobei die Vielzahl von Lesemodi mindestens einen zeitbasierten Soft-Bit-Lesemodus aufweist; Anlegen eines Satzes von Vorspannungsbedingungen an Zellen des Bereichs, so dass Bitleitungsströme, die den Zellen des Bereichs zugeordnet sind, Spannungen an Kondensatoren beeinflussen, die den Zellen des Bereichs zugeordnet sind; und als Reaktion auf das Auswählen des zeitbasierten Soft-Bit-Lesemodus, Lesen von Hard-Bits und Soft-Bits für den Bereich durch Abtasten der Kondensatorspannungen, die aus dem angelegten Satz von Vorspannungsbedingungen resultieren, zu mehreren Integrationszeiten.
  2. Gerät gemäß Anspruch 1, wobei: die Vielzahl von Lesemodi weiterhin einen Hard-Bit-Lesemodus und einen vorspannungsbasierten Soft-Bit-Lesemodus aufweist; und die Steuerung weiterhin eingerichtet ist, um: als Reaktion auf das Auswählen des Hard-Bit-Lesemodus, Hard-Bits für den Bereich durch Abtasten der Kondensatorspannungen, die aus dem angelegten Satz von Vorspannungsbedingungen resultieren, zu einer einzigen Integrationszeit zu lesen; und als Reaktion auf das Auswählen des vorspannungsbasierten Soft-Bit-Lesemodus, Hard-Bits und Soft-Bits für den Bereich durch Abtasten der Kondensatorspannungen, die aus dem angelegten Satz von Vorspannungsbedingungen resultieren, zu lesen, einen oder mehrere zusätzliche Sätze von Vorspannungsbedingungen anzulegen und Kondensatorspannungen, die aus dem einen oder den mehreren zusätzlichen Sätzen von Vorspannungsbedingungen resultieren, abzutasten.
  3. Gerät gemäß Anspruch 1, wobei der zeitbasierte Soft-Bit-Lesemodus ein Standardlesemodus für die Steuerung ist.
  4. Gerät gemäß Anspruch 1, wobei die Steuerung eingerichtet ist, um die Kondensatorspannungen zu zwei Integrationszeiten in dem zeitbasierten Soft-Bit-Lesemodus abzutasten und um die Kondensatorspannungen zu drei Integrationszeiten in einem zweiten zeitbasierten Soft-Bit-Lesemodus abzutasten.
  5. Gerät gemäß Anspruch 1, wobei die Steuerung eingerichtet ist, um den Lesemodus basierend auf Informationen auszuwählen, die in einem Lesebefehl eingeschlossen sind, der von der Steuerung empfangen wird.
  6. Gerät gemäß Anspruch 1, wobei die mehreren Integrationszeiten einen Satz von Zeiten aufweisen, die durch die Steuerung basierend auf Informationen ausgewählt werden, die in einem Lesebefehl eingeschlossen sind, der durch die Steuerung empfangen wird.
  7. Gerät gemäß Anspruch 1, wobei die Steuerung eingerichtet ist, um den Lesemodus basierend auf Metadaten auszuwählen, die zur Schreibzeit für den Bereich aufgezeichnet wurden.
  8. Gerät gemäß Anspruch 1, wobei die Steuerung eingerichtet ist, um den Lesemodus basierend auf einem Vergleich der aktuellen Zeit und Temperatur mit Zeit- und Temperatur-Metadaten auszuwählen, die zur Schreibzeit für den Bereich aufgezeichnet wurden.
  9. Gerät gemäß Anspruch 1, wobei die Steuerung eingerichtet ist, um den Lesemodus basierend auf Fehlerkorrekturinformationen für den Bereich auszuwählen.
  10. Gerät gemäß Anspruch 1, wobei die Steuerung eingerichtet ist, um den Lesemodus basierend auf Fehlerkorrekturinformationen für einen zweiten Bereich des Arrays und auf Metadaten auszuwählen, die zur Schreibzeit für den Bereich und den zweiten Bereich aufgezeichnet wurden.
  11. Gerät gemäß Anspruch 1, wobei die mehreren Integrationszeiten einen Satz von Zeiten aufweisen, die durch die Steuerung basierend auf einem oder mehreren von Folgendem ausgewählt werden: Metadaten für den Bereich, Fehlerkorrekturinformationen für den Bereich, Fehlerkorrekturinformationen für einen zweiten Bereich des Arrays und Metadaten, die zur Schreibzeit für den zweiten Bereich aufgezeichnet wurden.
  12. Verfahren, aufweisend: Bestimmen, ob ein zeitbasierter Soft-Bit-Lesemodus zum Lesen von Daten aus einem Bereich eines nicht-flüchtigen Speichers verwendet werden soll; Anlegen eines Satzes von Vorspannungen an Zellen des Bereichs, so dass Zustände der Zellen analoge Spannungen an Abtastverstärkern beeinflussen, die den Zellen zugeordnet sind; und als Reaktion auf das Bestimmen, den zeitbasierten Soft-Bit-Lesemodus zu verwenden, Lesen von Hard-Bits und Soft-Bits für den Bereich durch Umwandeln der analogen Spannungen, die durch die angelegten Vorspannungen beeinflusst werden, in digitale Abtastverstärkerergebnisse zu mehreren Integrationszeiten.
  13. Verfahren gemäß Anspruch 12, weiterhin aufweisend das Auswählen, ob die analogen Spannungen in digitale Abtastverstärkerergebnisse zu zwei Integrationszeiten oder zu drei Integrationszeiten umgewandelt werden.
  14. Verfahren gemäß Anspruch 12, weiterhin aufweisend das Bestimmen der mehreren Integrationszeiten, basierend auf einem oder mehreren von Folgendem: Metadaten für den Bereich, Fehlerkorrekturinformation für den Bereich, Fehlerkorrekturinformation für einen zweiten Bereich des nicht-flüchtigen Speichers und Metadaten, die zur Schreibzeit für den zweiten Bereich aufgezeichnet wurden.
  15. Verfahren gemäß Anspruch 12, wobei das Bestimmen, ob ein zeitbasierter Soft-Bit-Lesemodus verwendet werden soll, das Vergleichen einer aktuellen Zeit und Temperatur mit Zeit- und Temperatur-Metadaten aufweist, die zur Schreibzeit für den Bereich aufgezeichnet wurden.
  16. Verfahren gemäß Anspruch 12, wobei das Bestimmen, ob ein zeitbasierter Soft-Bit-Lesemodus verwendet werden soll, auf Fehlerkorrekturinformationen für den Bereich basiert.
  17. Verfahren gemäß Anspruch 12, wobei das Bestimmen, ob ein zeitbasierter Soft-Bit-Lesemodus verwendet werden soll, auf Fehlerkorrekturinformationen für einen zweiten Bereich des nicht-flüchtigen Speichers und auf Metadaten basiert, die zur Schreibzeit für den Bereich und den zweiten Bereich aufgezeichnet wurden.
  18. Gerät, aufweisend: Mittel zum Auswählen eines Lesemodus aus einer Vielzahl von Lesemodi zum Lesen von Daten aus einem Bereich eines nicht-flüchtigen Speichers, wobei die Vielzahl von Lesemodi mindestens einen zeitbasierten Soft-Bit-Lesemodus aufweist; Mittel zum Erzeugen analoger Spannungen basierend auf Daten, die von Zellen des Bereichs gespeichert werden; und Mittel zum Digitalisieren der analogen Spannungen zu einer Anzahl von Integrationszeiten, basierend auf dem ausgewählten Lesemodus.
  19. Gerät gemäß Anspruch 18, wobei das Mittel zum Auswählen eines Lesemodus Mittel zum Vergleichen einer aktuellen Zeit und Temperatur mit Zeit- und Temperatur-Metadaten aufweist, die zur Schreibzeit für den Bereich aufgezeichnet wurden.
  20. Gerät gemäß Anspruch 18, weiterhin aufweisend Mittel zum Bestimmen der Integrationszeiten, basierend auf einem oder mehreren von Folgendem: Metadaten für den Bereich, Fehlerkorrekturinformation für den Bereich, Fehlerkorrekturinformation für einen zweiten Bereich des nicht-flüchtigen Speichers und Metadaten, die zur Schreibzeit für den zweiten Bereich aufgezeichnet wurden.
DE112020000237.3T 2019-12-20 2020-03-31 Soft-bit-lesemodusauswahl für nicht-flüchtige speicher Pending DE112020000237T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/723,192 US11029889B1 (en) 2019-12-20 2019-12-20 Soft bit read mode selection for non-volatile memory
US16/723,192 2019-12-20
PCT/US2020/026011 WO2021126296A1 (en) 2019-12-20 2020-03-31 Soft bit read mode selection for non-volatile memory

Publications (1)

Publication Number Publication Date
DE112020000237T5 true DE112020000237T5 (de) 2021-09-02

Family

ID=76213266

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020000237.3T Pending DE112020000237T5 (de) 2019-12-20 2020-03-31 Soft-bit-lesemodusauswahl für nicht-flüchtige speicher

Country Status (3)

Country Link
US (1) US11029889B1 (de)
DE (1) DE112020000237T5 (de)
WO (1) WO2021126296A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11734093B2 (en) * 2020-06-23 2023-08-22 Samsung Electronics Co., Ltd. Storage device block-level failure prediction-based data placement
US20210294698A1 (en) * 2021-06-09 2021-09-23 Intel Corporation Soft read operations with progressive data output
US11670394B2 (en) * 2021-08-18 2023-06-06 Nxp B.V. Temperature exposure detection based on memory cell retention error rate
US11972813B2 (en) * 2021-12-20 2024-04-30 Sandisk Technologies, Llc Systems and methods for adapting sense time
KR102496386B1 (ko) * 2022-03-16 2023-02-06 주식회사 파두 낸드 플래시 메모리의 에러 특성화 방법, 이를 활용한 에러 추정 방법 및 스토리지 시스템 제어 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7764544B2 (en) 2008-11-25 2010-07-27 Sandisk Corporation All-bit-line erase verify and soft program verify
US8233324B2 (en) * 2010-03-25 2012-07-31 Sandisk Il Ltd. Simultaneous multi-state read or verify in non-volatile storage
US8964464B2 (en) * 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
US9239754B2 (en) * 2012-08-04 2016-01-19 Seagate Technology Llc Single read based soft-decision decoding of non-volatile memory
US20140071761A1 (en) 2012-09-10 2014-03-13 Sandisk Technologies Inc. Non-volatile storage with joint hard bit and soft bit reading
KR102131802B1 (ko) * 2013-03-15 2020-07-08 삼성전자주식회사 비휘발성 메모리 장치의 데이터 독출 방법, 비휘발성 메모리 장치, 및 메모리 시스템의 구동 방법
US9318194B1 (en) * 2014-09-29 2016-04-19 Sandisk 3D Llc Apparatus and methods for sensing hard bit and soft bits
US20170117053A1 (en) 2015-10-27 2017-04-27 Sandisk Technologies Inc. Systems and methods to compensate for threshold voltage shifts
US9530513B1 (en) 2015-11-25 2016-12-27 Intel Corporation Methods and apparatus to read memory cells based on clock pulse counts
US10446242B2 (en) 2016-05-27 2019-10-15 Western Digital Technologies, Inc. Temperature variation compensation

Also Published As

Publication number Publication date
WO2021126296A1 (en) 2021-06-24
US20210191651A1 (en) 2021-06-24
US11029889B1 (en) 2021-06-08

Similar Documents

Publication Publication Date Title
DE112020000237T5 (de) Soft-bit-lesemodusauswahl für nicht-flüchtige speicher
DE102017104257A1 (de) Auf Zellenstrom basierende Bitleitungsspannung
DE102017104283A1 (de) Löschgeschwindigkeitsbasierte wortleitungssteuerung
DE112020000178T5 (de) Verwaltung von in zonen unterteilten namensräumen nichtflüchtiger speicherungsvorrichtungen
DE102011085988B4 (de) Verfahren und Vorrichtungen zum Beeinflussen eines Betriebszustands eines Mehrfachpegelzelle-Speichers
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112018005659T5 (de) Widerstands- und Gate-Steuerung in Decoderschaltungen zur Lese- und Schreiboptimierung
DE102021115373A1 (de) Identifizierte zonen für zonen mit optimaler paritätsteilung
DE102008005338B4 (de) Integrierter Schaltkreis mit einer Speicherzellenanordnung und Verfahren zum Lesen eines Speicherzellenzustands unter Verwendung einer Mehrzahl von Teil-Leseoperationen
DE102020130044A1 (de) Techniken zum verhindern von lese-störung in nand-speicher
DE102012112354A1 (de) Speichervorrichtung und nichtflüchtige Speichervorrichtung sowie Betriebsverfahren davon
DE112019000141T5 (de) System und verfahren zur vorhersage von mehrfachlesebefehlen, die auf nicht sequentielle daten gerichtet sind
DE112019000165T5 (de) Gleichzeitiges programmieren mehrerer zellen für nichtflüchtigespeichervorrichtungen
DE102020116362B3 (de) Dynamische zuweisung von unterblöcken
DE112016004629T5 (de) Datencodiertechniken für eine Vorrichtung
DE102018123805A1 (de) Vorgang für verteiltes Programmieren
DE102018123961A1 (de) Gruppen-leseaktualisierung
DE102013108456B4 (de) Nichtflüchtige Speichervorrichtung und Programmierverfahren
DE102012108545A1 (de) Verfahren zum Auslesen von Speicherzellen mit unterschiedlichen Schwellwertspannungen ohne Änderung der Wortleitungsspannung, sowie nicht-flüchtige Speichervorrichtung, die dieses verwendet
DE112020005180T5 (de) Kondensieren von logischen zu physischen tabellenzeigern in ssds unter verwendung von gezonten namensräumen
DE112018004373T5 (de) Adaptive programmierspannung für nichtflüchtige speichervorrichtungen
DE102020116188B4 (de) Verbesserung der sourceseitigen vorladung und verstärkung für das programmieren in umgekehrter reihenfolge
DE102021107475A1 (de) Kalibrieren von leseschwellenwerten eines nichtflüchtigen speichers
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102020115935A1 (de) Nichtflüchtiger speicher mit dem überspringen der programmprürung

Legal Events

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

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

Representative=s name: MEWBURN ELLIS LLP, DE

R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CA, US