DE102018214010A1 - Verfahren und Vorrichtung zur Reduzierung von unbemerkten Datenfehlern in nichtflüchtigen Speichersystemen - Google Patents

Verfahren und Vorrichtung zur Reduzierung von unbemerkten Datenfehlern in nichtflüchtigen Speichersystemen Download PDF

Info

Publication number
DE102018214010A1
DE102018214010A1 DE102018214010.3A DE102018214010A DE102018214010A1 DE 102018214010 A1 DE102018214010 A1 DE 102018214010A1 DE 102018214010 A DE102018214010 A DE 102018214010A DE 102018214010 A1 DE102018214010 A1 DE 102018214010A1
Authority
DE
Germany
Prior art keywords
read
memory
data
controller
memory cells
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
DE102018214010.3A
Other languages
English (en)
Inventor
Kiran Pangal
Prashant Damle
Wei Fang
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102018214010A1 publication Critical patent/DE102018214010A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/1048Adding 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 arrangements adapted for a specific error detection or correction feature
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0653Monitoring storage devices or systems
    • 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
    • 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
    • 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/0683Plurality of storage devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check

Abstract

In einer Ausführungsform umfasst eine Vorrichtung ein Speicherarray, das mehrere Phasenänderungsspeicherzellen (PCM-Zellen) umfasst; und einen Controller zum Bestimmen, Daten, die durch die mehreren PCM-Zellen gespeichert sind, zu lesen, unabhängig von einem Lesebefehl von einer Hostvorrichtung; und als Reaktion auf die Bestimmung, Daten, die durch die mehreren PCM-Zellen gespeicherte sind, zu lesen, unabhängig von einem Lesebefehl von einer Hostvorrichtung, Durchführen einer Dummy-Leseoperation an den mehreren PCM-Zellen und Durchführen einer zusätzlichen Leseoperation an den mehreren PCM-Zellen.

Description

  • GEBIET
  • Die vorliegende Offenbarung betrifft allgemein das Gebiet der Computer-Entwicklung, und insbesondere Leseoperationen für Speicher.
  • HINTERGRUND
  • Eine Speichervorrichtung kann einen nichtflüchtigen Speicher, wie etwa mehrstufige dreidimensionale (3D) Kreuzpunkt- („crosspoint“) Speicherzellen, aufweisen. Eine Demarkationsspannung (VDM), die während einer Leseoperation an eine Speicherzelle angelegt wird, kann eine Bestimmung des Zustands der Speicherzelle (z. B. ob die Speicherzelle einen logischen Wert 0 oder 1 speichert) basierend auf der Schwellenspannung der Speicherzelle ermöglichen.
  • Figurenliste
    • 1 zeigt ein Blockdiagramm von Komponenten eines Computersystems gemäß bestimmten Ausführungsformen.
    • 2 zeigt eine Speicherpartition gemäß bestimmten Ausführungsformen.
    • 3 zeigt ein Speicherarray gemäß bestimmten Ausführungsformen
    • 4 zeigt einen Graphen, der die Speicherzellen-Schwellenspannungsverteilung und die Demarkationsspannungen gemäß bestimmten Ausführungsformen darstellt.
    • 5 zeigt einen Speichervorrichtungs-Controller 118 zum Ausgeben von Vorrichtungs-initiierten Lesebefehlen gemäß bestimmten Ausführungsformen.
    • 6 zeigt einen beispielhaften Ablauf zur Durchführung eines Vorrichtungs-initiierten Lesebefehls unter Verwendung einer Dummy-Leseoperation gemäß bestimmten Ausführungsformen.
    • Gleiche Bezugszeichen und Benennungen in den verschiedenen Zeichnungen bezeichnen gleiche Elemente.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Obwohl die Zeichnungen bestimmte Computersysteme darstellen, sind die Konzepte verschiedener Ausführungsformen auf beliebige geeignete Computersysteme anwendbar. Beispiele für Systeme, in denen Lehren der vorliegenden Offenbarung verwendet werden können, weisen Desktop-Computersysteme, Server-Computersysteme, Speichersysteme, handgehaltene („Handheld“-) Vorrichtungen, Tablets, andere dünne Notebooks, System-auf-einem-Chip- (SOC) Vorrichtungen und eingebettete Anwendungen auf. Einige Beispiele für handgehaltene Vorrichtungen sind Mobiltelefone, Digitalkameras, Media Player, PDAs (Persönliche digitale Assistenten) und handgehaltene PCs. Eingebettete Anwendungen können Mikro-Controller, digitale Signalprozessoren (DSPs), SOCs, Netzwerkcomputer (NetPCs), Set-Top-Boxen, Netzwerkhubs, Weitbereichsnetzwerke (WANs) oder ein beliebiges anderes System, das die unten gelehrten Funktionen und Operationen ausführen kann, aufweisen. Verschiedene Ausführungsformen der vorliegenden Offenbarung können in jeder geeigneten Computerumgebung verwendet werden, wie etwa in einer Personalcomputervorrichtung, einem Server, einem Großrechner, einer Cloud-Computing-Dienstanbieterinfrastruktur, einem Datenzentrum, einer Kommunikationsdienstanbieterinfrastruktur (z. B. einem oder mehreren Abschnitten eines Kernnetzes) oder in einer anderen Umgebung mit einer oder mehreren Computervorrichtungen.
  • 1 zeigt ein Blockdiagramm von Komponenten eines Computersystems 100 gemäß bestimmten Ausführungsformen. Das System 100 weist eine zentrale Verarbeitungseinheit (CPU) 102 auf, die mit einem externen Eingabe/Ausgabe- (E/A) Controller 104, einer Massenspeichervorrichtung bzw. Speichervorrichtung 106 und einer Systemspeichervorrichtung bzw. Speichervorrichtung 107 verbunden ist. Während des Betriebs können Daten zwischen einer Massenspeichervorrichtung bzw. Speichervorrichtung 106 oder einer Systemspeichervorrichtung bzw. Speichervorrichtung 107 und der CPU 102 übertragen werden. In verschiedenen Ausführungsformen können bestimmte Speicherzugriffsoperationen (z. B. Lese- und Schreiboperationen), die eine Massenspeichervorrichtung bzw. Speichervorrichtung 106 oder Systemspeichervorrichtung bzw. Speichervorrichtung 107 einbeziehen, von einem Betriebssystem und/oder anderen durch den Prozessor 108 ausgeführten Softwareanwendungen ausgegeben werden. In verschiedenen Ausführungsformen kann eine Speichervorrichtung 106 einen Speichervorrichtungs-Controller 118 und einen oder mehrere Speicherchips 116 aufweisen, die jeweils eine beliebige geeignete Anzahl von Speicherpartitionen 122 aufweisen.
  • In verschiedenen Ausführungsformen kann eine Speicherpartition ein 3D-Kreuzpunkt-Speicherarray aufweisen. In einigen Ausführungsformen kann ein 3D-Kreuzpunkt-Speicherarray eine transistorlose (d. h zumindest in Bezug auf die Datenspeicherelemente des Speichers) stapelbare Kreuzpunkt-Architektur aufweisen, in der Speicherzellen am Schnittpunkt von Zeilenadresszeilen und Spaltenadresszeilen in einem Raster angeordnet sitzen.
  • Während einer Leseoperation kann eine Differentialvorspannung, die manchmal als eine Demarkationsspannung (VDM) bezeichnet wird, über die Anschlüsse der Speicherzelle angelegt werden, und der Zustand der Speicherzelle kann basierend auf der Reaktion der Speicherzelle auf die angelegte Vorspannung erkannt werden. Beispielsweise kann die Speicherzelle entweder in einen leitenden EIN-Zustand (logische Eins) übergehen, oder in einem schwach leitenden AUS-Zustand (logische Null) bleiben. Die angelegte Spannung, bei der eine Speicherzelle übergeht von als eine logische Eins erfasst zu werden zu als eine logische Null erfasst zu werden, kann als eine Schwellenspannung der Speicherzelle bezeichnet werden. Wenn daher die VDM beispielsweise höher als die Schwellenspannung der Speicherzelle ist, kann die Speicherzelle als eine logische Eins speichernd erfasst werden, und wenn die VDM niedriger als die Schwellenspannung der Speicherzelle ist, kann die Speicherzelle als eine logische Null speichernd erfasst werden.
  • In verschiedenen Situationen kann eine Schwellenspannung einer Speicherzelle eines nichtflüchtigen Speichers, wie etwa einer 3D-Kreuzpunktspeicheranordnung, als Funktion der Zeit, seit der zuletzt auf die Speicherzelle zugegriffen wurde (z. B. über eine Lese- oder Schreiboperation), nach oben driften. Die Drift der Schwellenspannungen kann zu einer Erhöhung einer Rohbitfehlerrate (RBER) führen, die das Auftreten fehlerhaft gelesener Bits anzeigt. Wenn beispielsweise die Schwellenspannung einer Zelle über die VDM driftet, kann die Zelle fälschlicherweise als eine logische 0 anstelle einer logischen 1 gelesen werden. In verschiedenen Ausführungsformen kann, wenn Fehler durch eine Fehlerkorrekturlogik (z. B. eine Fehlerkorrekturcode-, ECC, Engine) der Speichervorrichtung 106 erkannt werden, die Fehlerkorrekturlogik versuchen, die Fehler zu korrigieren. Wenn die Anzahl der Fehler die Korrekturkapazität der Fehlerkorrekturlogik übersteigt, kann die Fehlerkorrekturlogik darin versagen, die Daten genau zu korrigieren (z. B. durch Umkehren von Bits, die korrekt gelesen werden, und/oder durch Versagen bei der Korrektur von Bits, die falsch gelesen werden). Wenn die fehlerkorrigierten Lesedaten dann in die Speicherzellen zurückgeschrieben werden (z. B. als Teil einer Datenauffrischungsoperation), können die Fehler permanent in die Daten geschrieben werden. Solche Fehler können als SDC-Fehler (stille bzw. unbemerkte Datenverfälschung, Engl.: „Silent Data Corruption“) bezeichnet werden.
  • Verschiedene Ausführungsformen der vorliegenden Offenbarung reduzieren oder eliminieren SDC-Fehler, die während der Ausführung von Lesebefehlen auftreten, die von der Speichervorrichtung 106 initiiert werden (z. B. Lesebefehle, die zum Auffrischen von Daten initiiert werden), indem die Fähigkeit einer Dummy-Leseoperation genutzt wird, die als Reaktion auf den Lesebefehl durchgeführt wird, um die Schwellenspannungsdrift der Zellen auf ihre richtigen Pegel zurückzusetzen (z. B. zurück auf die Schwellenspannungen, die die Zellen hatten, nachdem sie beschrieben wurden). Verschiedene Ausführungsformen können eine Dummy-Leseoperation als Reaktion auf einen Lesebefehl durchführen, der von der Speichervorrichtung 106 initiiert wird, die gelesenen Daten verwerfen, und dann eine zusätzliche Leseoperation durchführen. Da die Schwellspannungsdrift durch die Dummy-Leseoperation korrigiert wird, führt die zweite Leseoperation zu Daten mit einer viel niedrigeren RBER (was im Allgemeinen innerhalb der Fehlerkorrekturfähigkeiten der Fehlerkorrekturlogik liegt), was die Vermeidung von unbemerkten Datenverfälschungsfehlern ermöglicht.
  • Somit können verschiedene Ausführungsformen der vorliegenden Offenbarung die probabilistische Natur von unbemerkten Datenverfälschungsfehlern, die dadurch verursacht werden, dass eine ECC-Engine ein Codewort falsch korrigiert, ausnutzen. Die Wahrscheinlichkeit von zwei Fehlkorrekturen bei zwei aufeinanderfolgenden Leseoperationen ist so gering, dass sie vernachlässigbar ist. Verschiedene hierin beschriebene Ausführungsformen können besonders nützlich sein, wenn die Korrekturfähigkeiten der ECC-Engine relativ zu der Menge an Fehlern, die durch die Schwellenspannungsdrift verursacht werden, begrenzt sind, und können einfachere ECC-Engines mit reduzierter Chipfläche und reduziertem Stromverbrauch ermöglichen.
  • Die CPU 102 umfasst einen Prozessor 108, wie etwa einen Mikroprozessor, einen eingebetteten Prozessor, einen DSP, einen Netzwerkprozessor, einen „Handheld“-Prozessor, einen Anwendungsprozessor, einen Co-Prozessor, einen SOC, oder eine andere Vorrichtung zum Ausführen von Code (d. h. Softwareanweisungen). Der Prozessor 108 weist in der dargestellten Ausführungsform zwei Verarbeitungselemente (Kerne 114A und 114B in der dargestellten Ausführungsform) auf, die asymmetrische Verarbeitungselemente oder symmetrische Verarbeitungselemente aufweisen können. Ein Prozessor kann jedoch eine beliebige Anzahl von Verarbeitungselementen aufweisen, die symmetrisch oder asymmetrisch sein können. Die CPU 102 kann hierin als eine Host-Computervorrichtung bezeichnet werden (obgleich eine Host-Computervorrichtung eine beliebige geeignete Computervorrichtung sein kann, die betreibbar ist, Speicherzugriffsbefehle an eine Speichervorrichtung 106 auszugeben).
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik, um einen Software-Thread zu unterstützen. Beispiele für Hardware-Verarbeitungselemente weisen auf: eine Thread-Einheit, einen Thread-Schlitz, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardware-Thread, einen Kern und/oder ein beliebiges anderes Element, das in der Lage ist, einen Zustand für einen Prozessor, wie etwa einen Ausführungszustand oder einen Architekturzustand, zu halten. Mit anderen Worten, ein Verarbeitungselement bezieht sich in einer Ausführungsform auf eine beliebige Hardware, die unabhängig Code zugeordnet werden kann, wie etwa einem Software-Thread, einem Betriebssystem, einer Anwendung oder einem anderen Code. Ein physikalischer Prozessor (oder Prozessorsockel) bezieht sich typischerweise auf eine integrierte Schaltung, die möglicherweise eine beliebige Anzahl von anderen Verarbeitungselementen, wie etwa Kerne oder Hardware-Threads, aufweist.
  • Ein Kern 114 (z. B. 114A oder 114B) kann sich auf Logik beziehen, die sich auf einer integrierten Schaltung befindet, die in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei jeder unabhängig aufrechterhaltene Architekturzustand mindestens einigen dedizierten Ausführungsressourcen zugeordnet ist. Ein Hardware-Thread kann sich auf jede Logik beziehen, die sich auf einer integrierten Schaltung befindet, die in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei die unabhängig aufrechterhaltenen Architekturzustände einen Zugriff auf Ausführungsressourcen teilen. Wie zu sehen ist, überlappt sich die Grenze zwischen der Nomenklatur eines Hardware-Threads und des Kerns, wenn bestimmte Ressourcen gemeinsam genutzt werden, und andere einem Architekturzustand dediziert sind. Häufig werden ein Kern- und ein Hardware-Thread jedoch von einem Betriebssystem als einzelne logische Prozessoren betrachtet, wobei das Betriebssystem Operationen auf jedem logischen Prozessor individuell planen kann.
  • In verschiedenen Ausführungsformen können die Verarbeitungselemente auch eine oder mehrere arithmetisch-logische Einheiten (ALUs), Fließkommaeinheiten (FPUs), Caches, Befehlspipelines, Interrupt-Handhabungs-Hardware, Register oder andere Hardware aufweisen, um die Operationen der Verarbeitungselemente zu erleichtern.
  • Der E/A-Controller 110 ist ein integrierter E/A-Controller, der eine Logik zum Übertragen von Daten zwischen der CPU 102 und den E/A-Vorrichtungen aufweist, die sich auf jede geeignete Logik beziehen können, die in der Lage ist, Daten an eine Elektronik zu übertragen und/oder von dieser zu empfangen, wie etwa die CPU 102. Beispielsweise kann eine E/A-Vorrichtung einen Audio/Video- (A/V) Vorrichtungs-Controller, wie etwa einen Grafikbeschleuniger oder einen Audio-Controller; eine Datenspeichervorrichtungs-Controller, wie etwa eine Flash-Speichervorrichtung, eine Magnetspeicherplatte oder einen optische Speicherplatten-Controller; einen drahtlosen Sendeempfänger; einen Netzwerkprozessor; einen Netzwerkschnittstellen-Controller; oder einen Controller für eine andere Eingabevorrichtung, wie etwa ein Monitor, ein Drucker, eine Maus, eine Tastatur oder einen Scanner; oder eine andere geeignete Vorrichtung umfassen. In einer bestimmten Ausführungsform kann eine E/A-Vorrichtung den Speichervorrichtungs-Controller 118 der Speichervorrichtung 106 umfassen, der über den E/A-Controller 110 mit der CPU 102 verbunden ist.
  • Eine E/A-Vorrichtung kann mit dem E/A-Controller 110 der CPU 102 unter Verwendung eines beliebigen geeigneten Signalisierungsprotokolls kommunizieren, wie etwa einer peripheren Komponentenverbindung (PCI), PCI-Express (PCIe), einem universellen seriellen Bus (USB), einer seriell angebunden SCSI (SAS), einem seriellen ATA (SATA), Fibre Channel (FC), IEEE 802.3, IEEE 802.11, oder einem anderen aktuellen oder zukünftigen Signalisierungsprotokoll. In bestimmten Ausführungsformen können der E/A-Controller 110 und die zugrundeliegende E/A-Vorrichtung Daten und Befehle gemäß einer logischen Vorrichtungs-Schnittstellen-Spezifikation kommunizieren, wie etwa der NVMe (nichtflüchtiger Speicher Express) (z. B. wie in einer oder mehreren der Spezifikationen beschrieben, die verfügbar sind unter www.nvmexpress.org/specifications/) oder dem Advanced Host Controller Interface (AHCI) (z. B. wie in einer oder mehreren AHCI-Spezifikationen beschrieben, wie etwa in der Serial ATA AHCI: Spezifikation, Rev. 1.3.1, die verfügbar ist unter http://www.intel.com/content/www/us/de/io/serial-ata/seriell-ata-ahci-specrev1-3-1.html). In verschiedenen Ausführungsformen können E/A-Vorrichtungen, die mit dem E/A-Controller verbunden sind, außerhalb des Chips (d. h. nicht auf demselben Chip wie die CPU 102) angeordnet sein, oder können auf demselben Chip wie die CPU 102 integriert sein.
  • Der CPU-Speicher-Controller 112 ist ein integrierter Speicher-Controller, der eine Logik zum Steuern des Datenflusses zu und von einer oder mehreren Systemspeichervorrichtungen 107 aufweist. Der CPU-Speicher-Controller 112 kann eine Logik zum Lesen von einer Systemspeichervorrichtung 107, Schreiben in eine Systemspeichervorrichtung 107, oder Anfordern von anderen Operationen von einer Systemspeichervorrichtung 107 aufweisen. In verschiedenen Ausführungsformen kann der CPU-Speicher-Controller 112 Schreibanforderungen von den Kernen 114 und/oder dem E/A-Controller 110 empfangen und Daten, die in diesen Anforderungen spezifiziert sind, an eine Systemspeichervorrichtung 107 zur Speicherung darin bereitstellen. Der CPU-Speicher-Controller 112 kann auch Daten von einer Systemspeichervorrichtung 107 lesen und die gelesenen Daten an den E/A-Controller 110 oder einen Kern 114 bereitstellen. Während des Betriebs kann der CPU-Speicher-Controller 112 Befehle ausgeben, die eine oder mehrere Adressen des Systemspeichervorrichtung 107 aufweisen, um Daten aus dem Speicher zu lesen oder in den Speicher zu schreiben (oder um andere Operationen durchzuführen). In einigen Ausführungsformen kann der CPU-Speicher-Controller 112 auf demselben Chip wie die CPU 102 implementiert sein, während in anderen Ausführungsformen der CPU-Speicher-Controller 112 auf einem anderen Chip als dem der CPU 102 implementiert sein kann. Der E/A-Controller 110 kann ähnliche Operationen ausführen bezüglich einer oder mehreren Speichervorrichtungen 106.
  • Die CPU 102 kann auch über den externe E/A-Controller 104 mit einer oder mehreren anderen E/A-Vorrichtungen verbunden sein. In einer besonderen Ausführungsform kann der externe E/A-Controller 104 eine Speichervorrichtung 106 mit der CPU 102 verbinden. Der E/A-Controller 104 kann Logik aufweisen, um den Datenfluss zwischen einer oder mehreren CPUs 102 und E/A-Vorrichtungen zu verwalten. In bestimmten Ausführungsformen befindet sich der externe E/A-Controller 104 zusammen mit der CPU 102 auf einer Hauptplatine. Der externe E/A-Controller 104 kann unter Verwendung von Punkt-zu-Punkt- oder anderen Schnittstellen Informationen mit Komponenten der CPU 102 austauschen.
  • Eine Systemspeichervorrichtung 107 kann beliebige geeignete Daten, wie etwa Daten, die von dem Prozessor 108 verwendet werden, speichern, um die Funktionalität des Computersystems 100 bereitzustellen. Beispielsweise können Daten, die Programmen zugeordnet sind, die ausgeführt werden, oder Dateien, auf die die Kerne 114 zugreifen, in der Systemspeichervorrichtung 107 gespeichert sein. Somit kann eine Systemspeichervorrichtung 107 einen Systemspeicher aufweisen, der Daten und/oder Sequenzen von Befehlen speichert, die von den Kernen 114 ausgeführt oder anderweitig verwendet werden. In verschiedenen Ausführungsformen kann eine Systemspeichervorrichtung 107 persistente Daten speichern (z. B. Dateien oder Anweisungssequenzen eines Benutzers), die ihren Zustand beibehalten, selbst nachdem die Stromversorgung der Systemspeichervorrichtung 107 entfernt wurde. Eine Systemspeichervorrichtung 107 kann einer bestimmten CPU 102 dediziert sein oder mit anderen Vorrichtungen (z. B. einem oder mehreren anderen Prozessoren oder anderen Vorrichtungen) des Computersystems 100 geteilt werden.
  • In verschiedenen Ausführungsformen kann eine Systemspeichervorrichtung 107 einen Speicher aufweisen, der eine beliebige Anzahl von Speicherpartitionen, einen Speichervorrichtungs-Controller und andere unterstützende Logik (nicht gezeigt) umfasst. Ein Speichermodul kann nichtflüchtigen Speicher und/oder flüchtigen Speicher aufweisen.
  • Ein nichtflüchtiger Speicher ist ein Speichermedium, das keine Energie benötigt, um den Zustand von Daten, die von dem Medium gespeichert werden, aufrechtzuerhalten. In verschiedenen Ausführungsformen kann der nichtflüchtige Speicher Byte- oder Block-adressierbar sein. Nicht einschränkende Beispiele für nichtflüchtige Speicher können beliebige oder eine Kombination sein von: einem Festkörperspeicher (wie etwa ein planarer oder dreidimensionaler (3D) NAND-Flash-Speicher oder NOR-Flash-Speicher), 3D-Kreuzpunktspeicher, Phasenwechselspeicher (z. B. Speicher, der ein Chalkogenidglas-Phasenwechselmaterial in den Speicherzellen verwendet), einem ferroelektrischen Speicher, Siliziumoxid-Nitrid-Oxid-Silizium- (SONOS) Speicher, Polymerspeicher (z. B. ferroelektrischer Polymerspeicher), einem ferroelektrischem Transistor-Speicher mit wahlfreiem Zugriff (Fe-TRAM), einem antiferroelektrischen Speicher, Nanodrahtspeicher, einem elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), einem Memristor, einem einstufigen oder mehrstufigen Phasenwechselspeicher (PCM), einem Spin-Hall-Effekt-Magnet-RAM (SHE-MRAM) und einem magnetischen Spin-Transfer-Drehmoment-RAM (STTRAM), einem resistiven Speicher, magnetoresistiven Speicher mit wahlfreiem Zugriff (MRAM), der Memristor-Technologie aufweist, einem resistiven Speicher, einschließlich dem Metalloxid-basierten, dem Sauerstoff-Leerstellen-basierten und dem wahlfreien Zugriffsspeicher mit leitenden Brücken (CB- RAM), einer spintronischen Magnetübergangsspeicher-basierten Vorrichtung, einer magnetischen Tunnelverbindungs- (MTJ) basierten Vorrichtung, einer DW- (Domänenwand) und SOT- (Spin-Orbit-Transfer) basierten Vorrichtung, einer Thyristor-basierten Speichervorrichtung, oder einer Kombination aus beliebigen der obigen oder anderen Speichern.
  • Ein flüchtiger Speicher ist ein Speichermedium, das Energie benötigt, um den Zustand von Daten aufrechtzuerhalten, die von dem Medium gespeichert werden. Nicht einschränkende Beispiele für flüchtigen Speicher können verschiedene Arten von Arbeitsspeicher (RAM), wie etwa einen dynamischen Arbeitsspeicher (DRAM) oder statischen Arbeitsspeicher (SRAM), aufweisen. Ein bestimmter Typ von DRAM, der in einem Speichermodul verwendet werden kann, ist ein synchroner dynamischer Direktzugriffsspeicher (SDRAM). In einigen Ausführungsformen kann jeder Teil des Speichers 107, der ein flüchtiger Speicher ist, JEDEC-Standards entsprechen, einschließlich, jedoch nicht beschränkt auf, DDR-Standards, z. B. DDR3, 4 und 5, oder energiesparende („Low-Power“) DDR4 (LPDDR4), sowie aufkommende, Standards.
  • Eine Speichervorrichtung 106 kann beliebige geeignete Daten speichern, wie etwa Daten, die vom Prozessor 108 verwendet werden, um eine Funktionalität des Computersystems 100 bereitzustellen. Beispielsweise können Daten, die Programmen zugeordnet sind, die ausgeführt werden, oder Dateien, auf die die Kerne 114A und 114B zugreifen, in der Speichervorrichtung 106 gespeichert werden. In verschiedenen Ausführungsformen kann eine Speichervorrichtung 106 persistente Daten (z. B. Dateien eines Benutzers oder Softwareanwendungscode) speichern, die ihren Zustand beibehalten, selbst nachdem die Stromversorgung der Speichervorrichtung 106 entfernt wurde. Eine Speichervorrichtung 106 kann der CPU 102 dediziert sein oder mit anderen Vorrichtungen (z. B. einer anderen CPU oder einer anderen Vorrichtung) des Computersystems 100 geteilt werden.
  • In der dargestellten Ausführungsform weist die Speichervorrichtung 106 einen Speichervorrichtungs-Controller 118 und vier Speicherchips 116, die jeweils vier Speicherpartitionen 122 zum Speichern von Daten umfassen, auf, jedoch kann eine Speichervorrichtung jede geeignete Anzahl von Speicherchips aufweisen, die jeweils eine geeignete Anzahl von Speicherpartitionen aufweisen. Eine Speicherpartition 122 weist mehrere Speicherzellen auf, die betreibbar sind, um Daten zu speichern. Die Zellen einer Speicherpartition 122 können auf eine beliebige geeignete Weise angeordnet sein, wie etwa in Zeilen (z. B. Wortleitungen) und Spalten (z. B. Bitleitungen), dreidimensionalen Strukturen, Sektoren, oder auf andere Weise. In verschiedenen Ausführungsformen können die Zellen logisch in Bänke, Blöcke, Unterblöcke, Wortleitungen, Seiten, Rahmen, Bytes, Scheiben oder andere geeignete Gruppen gruppiert sein. In verschiedenen Ausführungsformen kann eine Speicherpartition 122 einen der oben aufgelisteten flüchtigen oder nichtflüchtigen Speicher oder einen anderen geeigneten Speicher aufweisen. In einer bestimmten Ausführungsform umfasst jede Speicherpartition 122 eines oder mehrere 3D-Kreuzpunkt-Speicherarrays. 3D-Kreuzpunktarrays werden in Verbindung mit den folgenden Figuren ausführlicher beschrieben.
  • In verschiedenen Ausführungsformen kann die Speichervorrichtung 106 ein Festkörperlaufwerk; eine Speicherkarte; ein USB- (universeller serieller Bus) Laufwerk; einen nichtflüchtiges Dual-In-Line-Speichermodul (NVDIMM); Speicher, der in einer Vorrichtung, wie etwa einem Smartphone, einer Kamera oder einem Mediaplayer integriert ist; oder eine andere geeignete Massenspeichervorrichtung umfassen.
  • In einer bestimmten Ausführungsform sind einer oder mehrere Speicherchips 116 in einem Halbleitergehäuse verkörpert. In verschiedenen Ausführungsformen kann ein Halbleitergehäuse ein Gehäuse umfassen, das einen oder mehrere Halbleiterchips (auch als Dies bezeichnet) umfasst. Ein Gehäuse kann auch Kontaktstifte oder Leitungen umfassen, die zum Anschluss an externe Schaltungen verwendet werden. In verschiedenen Ausführungsformen kann ein Speicherchip eine oder mehrere Speicherpartitionen 122 aufweisen.
  • Dementsprechend kann die Speichervorrichtung 106 in einigen Ausführungsformen ein Gehäuse umfassen, das mehrere Chips aufweist, die jeweils eine oder mehrere Speicherpartitionen 122 aufweisen. Eine Speichervorrichtung 106 kann jedoch jede geeignete Anordnung einer oder mehrerer Speicherpartitionen und zugeordnete Logik in eine beliebiger geeigneten physikalischen Anordnung aufweisen. Beispielsweise können Speicherpartitionen 122 in einem oder mehreren unterschiedlichen physikalischen Medien verkörpert sein, beispielsweise in einer Platine, einem Halbleitergehäuse, einem Halbleiterchip, einem Plattenlaufwerk, einem anderen Medium, oder einer beliebigen Kombination davon.
  • Die Speichervorrichtung 106 kann eine beliebige geeignete Schnittstelle aufweisen, um mit dem CPU-Speicher-Controller 112 oder dem E/A-Controller 110 unter Verwendung eine beliebiges geeigneten Kommunikationsprotokolls, wie etwa eines DDRbasierten Protokolls, PCI, PCIe, USB, SAS, SATA, FC, eines System-Verwaltungs-Busses (SMBus), oder eines anderen geeigneten Protokolls, zu kommunizieren. Eine Speichervorrichtung 106 kann auch eine Kommunikationsschnittstelle aufweisen, um mit dem CPU-Speicher-Controller 112 oder dem E/A-Controller 110 gemäß einer beliebigen geeigneten logischen Vorrichtungs-Schnittstellen-Spezifikation, wie etwa NVMe, AHCI, oder einer anderen geeigneten Spezifikation, zu kommunizieren. In bestimmten Ausführungsformen kann die Speichervorrichtung 106 mehrere Kommunikationsschnittstellen umfassen, die jeweils unter Verwendung eines separaten Protokolls mit dem CPU-Speicher-Controller 112 und/oder dem E/A-Controller 110 kommunizieren.
  • Der Speichervorrichtungs-Controller 118 kann Logik aufweisen, um Anforderungen von der CPU 102 zu empfangen (z. B. über den CPU-Speicher-Controller 112 oder den E/A-Controller 110), zu veranlassen, die Anforderungen bezüglich der Speicherchips 116 auszuführen, und Daten, die den Anforderungen zugeordnet sind, an die CPU 102 bereitzustellen (z. B. über den CPU-Speicher-Controller 112 oder den E/A-Controller 110). Der Controller 118 kann auch betreibbar sein, um während Speicheroperationen aufgetretene Fehler über einen Fehlerkorrekturcode (ECC-Engine) zu erkennen und/oder zu korrigieren. In einer Ausführungsform verfolgt der Controller 118 z. B. über eine Abnutzungsausgleich- („Wear-Leveling“) Engine auch die Häufigkeit, mit der in bestimmte Zellen (oder logische Gruppierungen von Zellen) geschrieben wurde, um eine Verschleißnivellierung durchzuführen, zu erkennen, wann sich Zellen einer geschätzten Anzahl von Malen nähern, die sie zuverlässig beschrieben werden können, und/oder Leseoperationen basierend auf der Anzahl von Malen, die die Zellen beschrieben worden sind, einzustellen. Bei der Durchführung des Abnutzungsausgleichs kann der Speichervorrichtungs-Controller 118 Schreiboperationen gleichmäßig zwischen den Zellen der Speicherchips 116 verteilen, um zu versuchen, die Anzahl von Operationen (z. B. Schreiboperationen), die von jeder Zelle ausgeführt werden, auszugleichen. In verschiedenen Ausführungsformen kann der Controller 118 auch verschiedene Eigenschaften der Speichervorrichtung 106, wie etwa die Temperatur oder die Spannung, überwachen und zugeordnete Statistiken an die der CPU 102 melden. Der Speichervorrichtungs-Controller 118 kann auf derselben Platine oder derselben Vorrichtung wie die Speicherchips 116 oder auf einer anderen Platine oder einer anderen Vorrichtung implementiert sein. Beispielsweise kann der Speichervorrichtungs-Controller 118 in einigen Umgebungen ein zentralisierter Speicher-Controller sein, der Speicheroperationen für mehrere verschiedene Speichervorrichtungen 106 des Computersystems 100 verwaltet.
  • In verschiedenen Ausführungsformen weist die Speichervorrichtung 106 auch eine Programmsteuerlogik 124 auf, die betreibbar ist, die Programmiersequenz zu steuern, die durchgeführt wird, wenn Daten in einen Speicherchip 116 geschrieben oder von diesem gelesen werden. In verschiedenen Ausführungsformen kann die Programmsteuerlogik 124 verschiedene Spannungen (oder Informationen, die anzeigen, welche Spannungen bereitgestellt werden sollten) bereitstellen, die während des Programmierens und/oder Lesens von Daten (oder des Durchführens von anderen Operationen, die mit Lese- oder Programmieroperationen verbunden sind) an Speicherzellen angelegt werden, eine Fehlerkorrektur durchführen, und andere geeignete Funktionen durchführen.
  • In verschiedenen Ausführungsformen kann die Programmsteuerlogik 124 auf demselben Chip wie der Speichervorrichtungs-Controller 118 oder auf einem anderen Chip integriert sein. In der dargestellten Ausführungsform ist die Programmsteuerlogik 124 als Teil des Speichervorrichtungs-Controllers 118 gezeigt, obwohl in verschiedenen Ausführungsformen die gesamte oder ein Teil der Programmsteuerlogik 124 von dem Speichervorrichtungs-Controller 118 getrennt und mit dem Speicher-Controller 124 kommunikativ verbunden sein kann. Beispielsweise kann die gesamte oder ein Teil der hierin beschriebenen Programmsteuerlogik 124 auf einem Speicherchip 116 angeordnet sein. In verschiedenen Ausführungsformen kann sich die Bezugnahme auf einen „Controller“ auf jede geeignete Steuerlogik, wie etwa einen Speichervorrichtungs-Controller 118, einen Chip-Controller 126 oder einen Partitions-Controller, beziehen. In einigen Ausführungsformen kann die Bezugnahme auf einen Controller eine Logik berücksichtigen, , wie etwa die Logik eines Speichervorrichtungs-Controllers 118, eines Chip-Controllers 126 und/oder eines Partition-Controllers, die auf mehrere Komponenten verteilt ist.
  • In verschiedenen Ausführungsformen kann der Speichervorrichtungs-Controller 118 einen Befehl von einer Hostvorrichtung (z. B. der CPU 102) empfangen, einen Zielspeicherchip für den Befehl bestimmen, und den Befehl an einen Chip-Controller 126 des Zielspeicherchips kommunizieren. In einigen Ausführungsformen kann der Speichervorrichtungs-Controller 118 den Befehl modifizieren, bevor er den Befehl an den Chip-Controller 126 sendet.
  • In verschiedenen Ausführungsformen kann der Speichervorrichtungs-Controller 118 Befehle an die Speicherchips 116 senden, um Host-initiierte Leseoperationen sowie Vorrichtungs-initiierte Leseoperationen durchzuführen. Eine Host-initiierte Leseoperation kann als Reaktion auf den Empfang eines Lesebefehls von einem Host durchgeführt werden, der mit der Speichervorrichtung 106, wie etwa der CPU 102, verbunden ist. Eine Vorrichtungs-initiierte Leseoperation kann eine Leseoperation sein, die als Reaktion auf einen Vorrichtungs-initiierten Lesebefehl durchgeführt wird, der von der Speichervorrichtung 106 erzeugt wird, unabhängig von dem Empfang eines Lesebefehls von dem Host. In verschiedenen Ausführungsformen kann der Speichervorrichtungs-Controller 118 die Komponente sein, die Vorrichtungs-initiierte Lesebefehle erzeugt. Die Speichervorrichtung 106 kann einen Vorrichtungs-initiierten Lesebefehl aus eine beliebigem geeigneten Grund initiieren. Beispielsweise kann die Speichervorrichtung 106 beim Hochfahren einer Speichervorrichtung mehrere Lese- und Rückschreib-Befehle initiieren, um Daten der Speichervorrichtung 106 neu zu initialisieren (z. B. um jegliche Drift zu berücksichtigen, die aufgetreten ist, während die Speichervorrichtung 106 oder ein Teil davon abgeschaltet oder für eine lange Zeitdauer im Leerlauf war).
  • Der Chip-Controller 126 kann einen Befehl von dem Speichervorrichtungs-Controller 118 empfangen und eine Zielspeicherpartition 122 für den Befehl bestimmen. Der Chip-Controller 126 kann dann den Befehl an einen Controller der bestimmten Speicherpartition 122 senden. In verschiedenen Ausführungsformen kann der Chip-Controller 126 den Befehl modifizieren, bevor er den Befehl an den Controller der Partition 122 sendet.
  • In einigen Ausführungsformen residieren alle oder einige der Elemente des Systems 100 auf derselben Platine (z. B. einer Hauptplatine) (oder sind damit verbunden). In verschiedenen Ausführungsformen kann jede geeignete Partitionierung zwischen den Elementen existieren. Beispielsweise können sich die in der CPU 102 dargestellten Elemente auf einem einzelnen Chip (d. h. On-Chip) oder einem Gehäuse befinden, oder eines der Elemente der CPU 102 kann außerhalb des Chips oder außerhalb des Gehäuses angeordnet sein. Auf ähnliche Weise können sich die Elemente, die in der Speichervorrichtung 106 dargestellt sind, auf einem einzelnen Chip oder auf mehreren Chips befinden. In verschiedenen Ausführungsformen können sich eine Speichervorrichtung 106 und ein Computer-Host (z. B. die CPU 102) auf derselben Platine oder auf derselben Vorrichtung befinden, und in anderen Ausführungsformen können sich die Speichervorrichtung 106 und der Computer-Host auf verschiedenen Platinen oder Vorrichtungen befinden.
  • Die Komponenten des Systems 100 können auf beliebige geeignete Weise miteinander verbunden sein. Beispielsweise kann ein Bus beliebige der Komponenten zusammenschalten. Ein Bus kann jede bekannte Zusammenschaltung aufweisen, wie etwa einen Multi-Drop-Bus, eine Maschen-Verbindung, eine Ring-Verbindung, eine Punkt-zu-Punkt-Verbindung, eine serielle Verbindung, einen parallelen Bus, einen kohärenten (z. B. Cache-kohärenten) Bus, eine Mehrschichtprotokollarchitektur, einen differentiellen Bus und einen „Gunning Transceiver Logic“- (GTL) Bus. In verschiedenen Ausführungsformen weist ein integriertes E/A-Untersystem eine Punkt-zu-Punkt-Multiplexlogik zwischen verschiedenen Komponenten des Systems 100 auf, wie etwa dem Kern 114, einem oder mehreren CPU-Speicher-Controllern 112, dem E/A-Controller 110, integrierte E/A-Vorrichtungen, Direktspeicherzugriffslogik (DMA-Logik) (nicht gezeigt) usw. In verschiedenen Ausführungsformen können Komponenten des Computersystems 100 über eines oder mehrere Netzwerke miteinander verbunden sein, die eine beliebige Anzahl von dazwischenliegenden Netzwerkknoten wie etwa Router, Schalter oder andere Computervorrichtungen, umfassen. Beispielsweise können ein Computer-Host (z. B. die CPU 102) und die Speichervorrichtung 106 über ein Netzwerk kommunikativ verbunden sein.
  • Obwohl nicht dargestellt, kann das System 100 eine Batterie und/oder einen Stromversorgungssteckdosen-Verbinder und ein zugehöriges System zum Empfangen von Energie, eine Anzeige zum Ausgeben von Daten, die von der CPU 102 bereitgestellt werden, oder eine Netzwerkschnittstelle, die der CPU 102 erlaubt, über ein Netzwerk zu kommunizieren, verwenden. In verschiedenen Ausführungsformen können die Batterie, der Stromversorgungssteckdosen-Verbinder, die Anzeige und/oder die Netzwerkschnittstelle kommunikativ mit der CPU 102 verbunden sein. Andere Energiequellen, wie etwa erneuerbare Energie (z. B. Sonnenenergie oder bewegungsbasierte Energie), können verwendet werden.
  • 2 zeigt eine beispielhafte Speicherpartition 122 gemäß bestimmten Ausführungsformen. In einer Ausführungsform kann eine Speicherpartition 122 einen 3D-Kreuzpunkt-Speicher aufweisen, der Phasenänderungsspeicher oder andere geeignete Speichertypen aufweisen kann. In einer besonderen Ausführungsform kann der Phasenänderungsspeicher ein Chalkogenid-Material für Speicherelemente verwenden. Ein Speicherelement ist eine Einheit einer Speicherzelle, die die Information tatsächlich speichert. Im Betrieb kann der Phasenänderungsspeicher Informationen über das Speicherelement durch Ändern der Phase des Speicherelements zwischen einer amorphen und einer kristallinen Phase speichern. Das Material eines Speicherelements (z. B. das Chalcogenid-Material) kann entweder eine kristalline oder eine amorphe Phase aufweisen, die eine niedrige oder hohe Leitfähigkeit aufweist. Im Allgemeinen hat die amorphe Phase eine niedrige Leitfähigkeit (hohe Impedanz) und ist einem zurückgesetzten Zustand (logisch Null) zugeordnet, und die kristalline Phase hat eine hohe Leitfähigkeit (niedrige Impedanz) und ist einem gesetzten Zustand (logisch Eins) zugeordnet. Das Speicherelement kann in einer Speicherzelle 207 (z. B. einer Phasenwechsel-Speicherzelle) enthalten sein, die auch einen Selektor, d. h. eine Auswahlvorrichtung, die mit dem Speicherelement verbunden ist, aufweist. Die Auswahlvorrichtungen sind so konfiguriert, dass sie die Kombination von mehreren Speicherelementen zu einem Array ermöglichen.
  • In einigen Ausführungsformen kann ein 3D-Kreuzpunkt-Speicherarray 206 eine transistorlose (d. h zumindest in Bezug auf die Datenspeicherelemente des Speichers) stapelbare Kreuzpunktarchitektur aufweisen, in der Speicherzellen 207 an dem Schnittpunkt der Zeilenadresse und Spaltenadresszeilen, die in einem Raster angeordnet sind, sitzen. Die Zeilenadressleitungen 215 und die Spaltenadressleitungen 217, die als Wortleitungen (WLs) bzw. Bitleitungen (BLs) bezeichnet werden, kreuzen sich bei der Bildung des Gitters, und jede Speicherzelle 207 ist zwischen einer WL und einer BL verbunden, wo sich die WL und BL kreuzen (d. h. an einem Kreuzpunkt). Am Kreuzungspunkt können sich die WL und BL auf verschiedenen vertikalen Ebenen befinden, so dass die WL die BL kreuzt, aber die BL nicht physisch berührt. Wie oben beschrieben, kann die Architektur stapelbar sein, so dass eine Wortleitung eine unter der Wortleitung liegende Bitleitung und eine andere, über der Wortleitung liegende Bitleitung kreuzen kann. Es sollte angemerkt werden, dass Zeile und Spalte bequeme Bezeichnungen sind, die verwendet werden, um eine qualitative Beschreibung der Anordnung von WLs und BLs im Kreuzpunkt-Speicher bereitzustellen. In verschiedenen Ausführungsformen können die Zellen des 3D-Kreuzpunkt-Speicherarrays einzeln adressierbar sein. In einigen Ausführungsformen kann der Bitspeicher auf einer Änderung des Massenwiderstands einer 3D-Kreuzpunkt-Speicherzelle basieren. In verschiedenen Ausführungsformen kann der 3D-Kreuzpunkt-Speicher beliebige der Eigenschaften von 3D-XPoint-Speichern aufweisen, die von der INTEL CORPORATION und/oder MICRON TECHNOLOGY, INC hergestellt werden.
  • Während einer Programmieroperation (d. h einer Schreiboperation) kann die Phase des Speicherelements durch das Anlegen einer ersten Vorspannung an die WL und einer zweiten Vorspannung an die BL geändert werden, was in einer differentiellen Vorspannung über die Speicherzelle resultiert, die bewirken kann, dass ein Strom in dem Speicherelement fließt. Die differentielle Vorspannung über die Speicherzelle kann für eine erste Zeitperiode aufrechterhalten werden, die ausreicht, um das Speicherelement zurückschnappen („snap back“ zu lassen und dann für eine zweite Zeitspanne zu halten, um das Speicherelement von dem amorphen Zustand in den kristallinen Zustand, oder von dem kristalline Zustand in den amorphen Zustand zu überführen (z. B. durch Anwendung von Wärme, die durch einen elektrischen Strom erzeugt wird). Zurückschnappen bzw. „Snapback“ ist eine Eigenschaft des zusammengesetzten Speicherelements, die zu einer abrupten Änderung der Leitfähigkeit und einer damit verbundenen abrupten Änderung der Spannung über das Speicherelement führt.
  • In einer Leseoperation wird eine Zielspeicherzelle mittels Anlegen einer ersten Vorspannung an die WL und einer zweiten Vorspannung an die BL, die sich für ein Zeitintervall an der Zielspeicherzelle kreuzen, ausgewählt. Eine resultierende Differenzvorspannung (eine Demarkationslesespannung (VDM)) über das Speicherelement ist so konfiguriert, dass sie größer als eine maximale Einstellspannung und kleiner als eine minimale Rücksetzspannung für das Speicherelement ist. In einer bestimmten Ausführungsform kann eine Spannung der WL (V(WL)) an der Zelle abfallen, und eine Spannung der BL (d. h V(BL)) an der Zelle kann hochgezogen werden, so dass V(BL) - V(WL) gleich einer Gesamtvorspannung (d. h. der VDM) an der 3D-Kreuzpunktzelle ist.
  • Als Reaktion auf die Anwendung der VDM kann das Zielspeicherelement in Abhängigkeit davon, ob das Speicherelement im kristallinen Zustand (gesetzt) oder im amorphen Zustand (zurückgesetzt) ist, zurückschnappen oder nicht. Die Erfassungsschaltung, die mit dem Speicherelement verbunden ist, ist konfiguriert, das Vorhandensein oder Nichtvorhandensein eines Zurückschnappens bzw. „Snap-Back“ in einem Erfassungszeitintervall zu erkennen. Das Vorhandensein eines „Snap-Back“ kann dann als eine logische Eins, und die Abwesenheit eines „Snap-Back“ als eine logische Null interpretiert werden.
  • Die Differenzvorspannung, bei der eine Speicherzelle von als logische Eins erfassbar (z. B. aufgrund des Zurückschnappens der Speicherzelle) auf als logische Null erfassbar (z. B. aufgrund eines Nicht-Zurückschnappens der Speicherzelle) übergeht, kann als eine Schwellenspannung bezeichnet werden (die manchmal als eine Snap-Back-Spannung bezeichnet wird). Wenn somit die VDM höher als die Schwellenspannung der Speicherzelle ist, kann die Speicherzelle als eine logische Eins speichernd erfasst werden, und wenn der VDM niedriger als die Schwellenspannung der Speicherzelle ist, kann die Speicherzelle als eine logische Null speichernd erfasst werden.
  • In einigen Ausführungsformen kann eine angelegte Vorspannung, wie etwa die VDM eines Leseimpulses, hoch genug sein, um nur 3D-Kreuzpunktzellen im kristallinen Zustand einzuschalten, die eine niedrigere Schwellenspannung haben können als 3D-Kreuzpunktzellen im amorphen Zustand. In einigen Ausführungsformen kann die VDM durch negativ und/oder positiv geregelte Knoten geliefert werden. Beispielsweise kann die Bitleitungselektrode der 3D-Kreuzpunktzelle ein positiv geregelter Knoten sein, und die mit der Zelle verbundene Wortleitungselektrode kann die Vorspannung für die VDM liefern.
  • In der Ausführungsform von 2 weist eine Speicherpartition 122 den Speicherpartitions-Controller 210, die Wortleitungssteuerlogik 214, die Bitleitungssteuerlogik 216 und die Speichermatrix 206 auf. Eine Hostvorrichtung (z. B. die CPU 102) kann Lese- und/oder Schreibfehle, die Speicheradresse(n) und/oder zugeordnete Daten aufweisen, an die Speicherpartition 122 bereitstellen (z. B. über den Speichervorrichtungs-Controller 118 und den Chip-Controller 126) und kann Lesedaten von der Speicherpartition 122 empfangen (z. B. über den Chip-Controller 126 und den Speichervorrichtungs-Controller 118). Auf ähnliche Weise kann der Speichervorrichtungs-Controller 118 Host-initiierte Lese- oder Schreibbefehle oder Vorrichtungs-initiierte Lese- oder Schreibbefehle, die Speicheradressen aufweisen, an die Speicherpartition 122 bereitstellen (z. B. über den Chip-Controller 126). Der Speicherpartitions-Controller 210 (in Verbindung mit der Wortleitungssteuerlogik 214 und der Bitleitungssteuerlogik 216) ist konfiguriert, Speicherzugriffsoperationen, z. B. Lesen einer oder mehrerer Zielspeicherzellen und/oder Schreiben in eine oder mehrere Zielspeicherzellen, durchzuführen.
  • Die Speicheranordnung 206 entspricht zumindest einem Teil eines 3D-Kreuzpunktspeichers (der z. B. Phasenänderungsspeicherzellen oder andere geeignete Speicherzellen aufweisen kann) und weist mehrere Wortleitungen 215, mehrere Bitleitungen 217, und mehrere Speicherzellen, z. B. die Speicherzellen 207, auf. Jede Speicherzelle ist zwischen einer Wortleitung („WL“) und einer Bitleitung („BL“) an einem Kreuzungspunkt der WL und der BL verbunden. Jede Speicherzelle weist ein Speicherelement auf, das konfiguriert ist, Informationen zu speichern, und kann eine Speicherzellenauswahlvorrichtung (d. h. einen Selektor) aufweisen, die mit dem Speicherelement verbunden ist. Auswahlvorrichtungen können ovonische Schwellenschalter, Dioden, bipolare Flächentransistoren, Feldeffekttransistoren, usw. aufweisen. Die Speicheranordnung 206 kann konfiguriert sein, binäre Daten zu speichern, und kann beschrieben (d. h. programmiert) oder gelesen werden.
  • Der Speicherpartitions-Controller 210 kann Kommunikationen mit dem Chip-Controller 126 und/oder dem Speichervorrichtungs-Controller 118 verwalten. In einer bestimmten Ausführungsform kann der Speicherpartitions-Controller 210 eines oder mehrere von einem anderen Controller empfangene Signale analysieren, um zu bestimmen, ob ein Befehl, der über einen Bus gesendet wurde, von der Speicherpartition 122 konsumiert werden soll. Beispielsweise kann der Controller 210 eine Adresse des Befehls und/oder einen Wert auf einer Freigabesignalleitung analysieren, um zu bestimmen, ob der Befehl auf die Speicherpartition 122 zutrifft. Der Controller 210 kann konfiguriert sein, eine oder mehrere Ziel-WLs und/oder BLs zu identifizieren, die einer empfangenen Speicheradresse zugeordnet sind (diese Speicheradresse kann eine von der Speicherpartitionsadresse, die die Speicherpartition 122 identifiziert, getrennte Adresse sein, obwohl in einigen Ausführungsformen ein Teil eines Adressfeldes eines Befehls die Speicherpartition identifizieren kann, während ein anderer Teil des Adressfeldes eine oder mehrere WLs und/oder BLs identifizieren kann). Der Speicherpartitions-Controller 210 kann dazu konfiguriert sein, Operationen der WL-Steuerlogik 214 und der BL-Steuerlogik 216 zumindest teilweise basierend auf WL- und/oder BL-Kennungen, die in einem empfangenen Befehl enthalten sind, zu verwalten.
  • Die WL-Steuerlogik 214 weist eine WL-Umschalt-Schaltung 220 und eine Leseschaltung 222 auf. Die WL-Steuerlogik 214 ist konfiguriert, die Ziel-WL-Adresse(n) von dem Speicherpartitions-Controller 210 zu empfangen und eine oder mehrere WLs zum Lesen und/oder Schreiben auszuwählen. Beispielsweise kann die WL-Steuerlogik 214 konfiguriert sein, eine Ziel-WL durch Verbinden bzw. Koppeln einer WL-Auswahlvorspannung an die Ziel-WL auszuwählen. Die WL-Steuerlogik 214 kann konfiguriert sein, eine WL durch entkoppeln der Ziel-WL von der WL-Auswahlvorspannung und/oder durch Verbinden einer WL-Abwahlvorspannung mit der WL abzuwählen. Die WL-Steuerlogik 214 kann mit mehreren WLs 215 verbunden sein, die in der Speicheranordnung 206 enthalten sind. Jede WL kann mit einer Anzahl von Speicherzellen entsprechend einer Anzahl von BLs 217 verbunden sein. Die WL-Umschalt-Schaltung 220 kann mehrere Schalter aufweisen, wobei jeder Schalter konfiguriert ist, eine jeweilige WL, z. B. die WL 215A, mit einer WL-Auswahlvorspannung zum Auswählen der jeweiligen WL 215A zu verbinden (oder zu entkoppeln). Beispielsweise kann die Umschalt-Schaltung 220 mehrere Transistoren aufweisen.
  • Die BL-Steuerlogik 216 weist eine BL-Umschalt-Schaltung 224 auf. In einigen Ausführungsformen kann die BL-Steuerlogik 216 auch eine Abtastschaltung, z. B. die Abtastschaltung 222, aufweisen. Die BL-Steuerlogik 216 ist konfiguriert, eine oder mehrere BLs für Lese- und/oder Schreiboperationen auszuwählen. Die BL-Steuerlogik 216 kann konfiguriert sein, eine Ziel BL durch Verbinden einer BL-Auswahlvorspannung mit der Ziel BL auszuwählen. Die BL-Steuerlogik 216 kann konfiguriert sein, eine BL durch Entkoppeln der Ziel-BL von der BL-Auswahlvorspannung und/oder Verbinden einer BL-Abwahlvorspannung mit der BL auszuwählen. Die BL-Umschalt-Schaltung 224 ist ähnlich wie die WL-Umschalt-Schaltung 220, mit der Ausnahme, dass die BL-Umschalt-Schaltung 224 konfiguriert ist, die BL-Auswahlvorspannung mit einer Ziel BL zu verbinden.
  • Die Erfassungsschaltung 222 ist konfiguriert, den Zustand einer oder mehrerer erfasster Speicherzellen 207 zu erfassen (z. B. über das Vorhandensein oder Nichtvorhandensein eines Zurückschnappereignisses während eines Erfassungsintervalls), z. B. während einer Leseoperation. Die Leseschaltung 222 ist konfiguriert, eine Logikpegelausgabe in Bezug auf das Ergebnis der Leseoperation z. B. an den Speicherpartitions-Controller 210 bereitzustellen. Beispielsweise kann ein logischer Pegel ausgegeben werden, der einer logischen Eins entspricht, wenn die angelegte VDM höher als die Schwellenspannung der Speicherzelle ist, oder einer logischen Null, wenn das angelegte VDM niedriger als die Schwellenspannung der Speicherzelle ist. In einer bestimmten Ausführungsform kann eine logische Eins ausgegeben werden, wenn ein Zurückschnappen erkannt wird, und kann eine logische Null ausgegeben werden, wenn ein Zurückschnappen nicht erkannt wird.
  • Als ein Beispiel können die WL-Steuerlogik 214 und die BL-Steuerlogik 216 konfiguriert sein, als Reaktion auf ein Signal von dem Speicherpartitions-Controller 210, eine oder mehrere Zielspeicherzellen, z. B. die Speicherzelle 207, für eine Leseoperation auszuwählen, durch Verbinden der WL 215A mit der WL-Auswahlvorspannung und der BL 217A mit der BL-Auswahlvorspannung. Eine oder beide der Erfassungsschaltungen 222 können dann konfiguriert sein, die WL 215A und/oder BL 217A für ein Erfassungsintervall zu überwachen, um den Zustand der Speicherzelle 217A zu bestimmen (z. B. um zu bestimmen, ob ein Zurückschnappereignis auftritt oder nicht). Wenn beispielsweise eine Erfassungsschaltung 222 ein Rückschnappereignis erkennt, dann kann sich die Speicherzelle 207A im gesetzten Zustand befinden, aber wenn eine Erfassungsschaltung 222 in dem Erfassungsintervall kein Rückschnappereignis erkennt, dann kann sich die Speicherzelle 207A im zurückgesetzten Zustand befinden.
  • Somit können die WL-Steuerlogik 214 und/oder die BL-Steuerlogik 216 konfiguriert sein, eine Zielspeicherzelle für eine Leseoperation auszuwählen, die Leseoperation zu initiieren, die ausgewählte Speicherzelle in einem Erfassungsintervall zu erfassen (z. B. für ein Rückschnappereignis), und das Ergebnis der Erfassung z. B. an den Speicherpartitions-Controller 210 bereitzustellen.
  • In einer bestimmten Ausführungsform kann die Erfassungsschaltung 222 eine Wortleitungs-Last aufweisen, die mit einer Wortleitungselektrode verbunden ist, um einen Strom auf der Wortleitungselektrode in eine Spannung umzuwandeln, die eine erste Eingabe für einen Spannungsvergleicher (d. h. Leseverstärker) der Erfassungsschaltung ist. Eine äquivalente Wortleitungs-Last kann mit einem Referenzstrom verbunden sein, um eine Spannung bereitzustellen, die eine zweite Eingabe in den Spannungsvergleicher ist. Wenn eine bestimmte Wortleitung und Bitleitung in der Anordnung ausgewählt werden, kann die Wortleitungs-Last auf der Wortleitungselektrode den Strom auf der ausgewählten Bitleitung in eine Spannung umwandeln. In einigen Ausführungsformen können Streukomponenten des Stroms abgeschwächt werden, indem jeweils eine Vorspannung für alle anderen nicht ausgewählten Wortleitungen und Bitleitungen ausgewählt wird, die das Lecken reduziert oder minimieret. Kapazitive Komponenten des Stroms können abgeschwächt werden, indem genügend Zeit für die kapazitiven Komponenten zur Verfügung gestellt wird. Der Strom, der in die erste Eingabe für den Spannungsvergleichers umgewandelt wird, kann dem Strom der Zielspeicherzelle entsprechen. Der Referenzstrom kann so gewählt sein, dass der Strom der Zielspeicherzelle vor dem Zurückschnappen der Zielspeicherzelle niedriger als der Referenzstrom ist, und nach dem Zurückschnappen der Zielspeicherzelle höher als der Referenzstrom ist. Auf diese Weise kann eine Ausgabe des Spannungsvergleichers einen Zustand der Zielspeicherzelle anzeigen. Ein Zwischenspeicher kann mit dem Ausgang des Spannungsvergleichers verbunden sein, um die Ausgabe der Leseoperation zu speichern.
  • 3 zeigt ein Speicherarray 206 gemäß bestimmten Ausführungsformen. In verschiedenen Ausführungsformen können mehrere Speicherzellen 207 des Speicherarrays 206 in eine logische Gruppe, wie etwa eine Scheibe („slice“) 302, unterteilt sein (und die Speicheranordnung 206 kann mehrere Scheiben aufweisen). In der dargestellten Ausführungsform weist die Scheibe 302 mehrere Speicherzellen 207 auf, die mit derselben WL 215B verbunden sind, obwohl eine Scheibe 302 eine beliebige geeignete Anordnung von Speicherzellen umfassen kann.
  • In einer bestimmten Ausführungsform kann eine Scheibe einen Nutzlastabschnitt 304 und einen Metadatenabschnitt 306 aufweisen. Die Speicherzellen des Nutzlastabschnitts 304 können Daten speichern, die von einem Host (z. B. der CPU 102) in die Speichervorrichtung 106 geschrieben werden. Beispielsweise kann der Host einen Schreibbefehl senden, der Nutzdaten spezifiziert, die bei einer bestimmten logischen Adresse in die Speichervorrichtung 106 geschrieben werden sollen. Die Nutzlast des Schreibbefehls kann in einem Nutzlastabschnitt 304 einer oder mehrerer Scheiben 302 gespeichert werden (in verschiedenen Ausführungsformen kann der Nutzlastabschnitt 304 groß genug sein, um Nutzlastdaten von mehreren Schreibbefehlen von dem Host zu halten). In verschiedenen Ausführungsformen kann die Größe des Nutzlastabschnitts einer Schicht jede geeignete Größe haben, wie etwa 1 Kibibyte (KiB), 2 KiB, 4 KiB, 8 KiB, oder eine andere geeignete Größe.
  • Die Speicherzellen des Metadatenabschnitts 306 einer Scheibe 302 können Metadaten speichern, die den Nutzdaten zugeordnet sind, die in dem Nutzlastabschnitt 304 der Scheibe 302 oder der Scheibe selbst gespeichert sind. Der Metadatenabschnitt 306 kann beliebige geeigneten Metadaten speichern, die den Nutzdaten oder der Schicht zugeordnet sind. Beispielsweise kann der Metadatenabschnitt 306 Paritätsbits und/oder zyklische Redundanzprüfungs- (CRC) Bits speichern, die während der Fehlererkennung und Fehlerkorrektur z. B. durch den Speichervorrichtungs-Controller 118 verwendet werden. In alternativen Ausführungsformen kann die Fehlererkennung und/oder Korrektur auf jeder geeigneten Stufe in der Speichervorrichtung 106, wie etwa durch die Chip-Controller 126 oder Partitions-Controller 210, durchgeführt werden.
  • 4 zeigt einen Graphen 400, der Speicherzellen-Schwellenspannungsverteilungen 402 (d. h. 402A -C) und Demarkationsspannungen VDM1, VDM2 und VDM3 gemäß bestimmten Ausführungsformen darstellt. Die horizontale Achse zeigt Schwellenspannungen von Speicherzellen eines Arrays, und die vertikale Achse zeigt Bitzahlen (d. h. die Anzahl von Speicherzellen). Somit repräsentiert jeder Punkt einer Verteilung 402 eine Anzahl von Zellen mit einer bestimmten Schwellenspannung. Der Graph 400 geht davon aus, dass sich die Hälfte der Bits des Arrays in einem gesetzten Zustand befinden (d. h. eine Schwellenspannung aufweisen, die niedriger als die entsprechende VDM ist), und sich die Hälfte der Bits in einem zurückgesetzten Zustand befinden (d. h. eine Schwellenspannung aufweisen, höher als die entsprechende VDM ist).
  • Die Verteilung 402A repräsentiert eine Grundlinienverteilung, die einer Schwellenspannungsverteilung zu einem bestimmten Zeitpunkt entsprechen kann (z. B. zu der Zeit unmittelbar nach einer Schreib- oder Leseoperation, die an den Speicherzellen durchgeführt wird). Die Verteilung 402B kann eine Verteilung der Schwellenspannungen der Zellen repräsentieren, nachdem eine erste Zeitspanne vergangen ist, ohne dass auf die Zellen über eine Lese- oder Schreiboperation zugegriffen wird. Die Verteilung 402C kann eine Verteilung repräsentieren, nachdem eine zusätzliche Zeit vergangen ist, ohne dass auf die Zellen zugegriffen wird. Wenn die Menge an Zeit ohne Zugriff auf Zellen zunimmt, verschieben sich die Verteilungen der Schwellenspannungen der Zellen nach rechts.
  • Die dargestellten VDMs repräsentieren eine Reihe von VDM-Werten, die während einer Leseoperation angelegt werden können. Während der Leseoperation kann VDM1 angelegt werden und die Zellen können erfasst werden. Wenn die Erfassungsoperation nicht erfolgreich ist (z. B. weil zu viele Fehler erkannt wurden), kann die VDM hochgesetzt werden (auf VDM2) und die Erfassungsoperation kann wiederholt werden. Während einer Leseoperation kann eine beliebige Anzahl von VDMs angelegt werden. In verschiedenen Ausführungsformen kann, wenn die letzte VDM (VDM3 in der dargestellten Ausführungsform) angelegt wird und die Erfassungsoperation immer noch nicht erfolgreich ist, eine alternative Fehlerkorrekturoperation durchgeführt werden, oder es kann eine Bestimmung, dass die Leseoperation nicht erfolgreich war, vorgenommen werden.
  • Die Verschiebung der Schwellenspannungen aufgrund von Drift kann zu Lesefehlern führen, da Zellen, die sich in dem gesetzten Zustand befinden (auf der linken Seite des Graphen gezeigt) irrtümlich als in dem zurückgesetzten Zustand befindlich erkannt werden, wenn einer oder mehrere der VDMs angelegt werden. Die Anzahl der Lesefehler kann mit der Zeit, die seit dem letzten Zugriff vergangen ist, zunehmen. Dementsprechend ist die Anzahl von Fehlern extrem hoch, wenn VDM1 mit der Verteilung 402C verglichen wird, aber immer noch signifikant bei der Verteilung 402B. Wenn die Zellen die Verteilung 402C erreicht haben, ist sogar die höchste VDM3 immer noch niedriger als die Schwellenspannungen eines signifikanten Teils der Speicherzellen, wodurch die Fehlerrate (sowie die Fehlkorrekturrate) erhöht wird.
  • In verschiedenen Ausführungsformen der vorliegenden Offenbarung wird, wenn ein Vorrichtungs-initiierter Lesebefehl durchgeführt wird, vor einer zusätzlichen Leseoperation zuerst eine Dummy-Leseoperation durchgeführt. Die Dummy-Leseoperation kann die Drift der Schwellenspannungen zurücksetzen, solange die VDM höher als die Schwellenspannung der Zelle ist. Beispielsweise kann, nachdem die Dummy-Leseoperation an einer Gruppe von Zellen mit beispielsweise der Verteilung 402B oder der Verteilung 402C durchgeführt wurde, die Verteilung der Zellen zurück zu 402A verschoben werden. Die während der Dummy-Leseoperation gelesenen Daten werden verworfen, und eine zusätzliche Leseoperation wird durchgeführt, um die Zieldaten zu erhalten. Der Ablauf des Vorrichtungs-initiierten Lesebefehls wird in Verbindung mit 6 ausführlicher beschrieben.
  • 5 zeigt einen Speichervorrichtungs-Controller 118 zum Ausgeben von Vorrichtungs-initiierten Lesebefehlen gemäß bestimmten Ausführungsformen. In der dargestellten Ausführungsform weist der Controller 118 die Adressübersetzungs-Engine 120 und die Programmsteuerlogik 124 auf. Die Programmsteuerlogik 124 weist die ECC-Engine 502, die CRC-Engine 504, die Vorrichtungs-initiierte Leselogik 506, und die Host-initiierte Leselogik 508 auf. Die Logik kann zwischen der Vorrichtungs-initiierten Leselogik 506 und der Host-initiierten Leselogik 508 geteilt werden, um Funktionen der jeweiligen Komponenten zu verwenden.
  • Die ECC-Engine 502 weist eine Logik zum Erkennen und Korrigieren von Fehlern in Daten auf, die von den verschiedenen Partitionen 122 der Speichervorrichtung 106 gelesen werden. In verschiedenen Ausführungsformen kann, wenn der Speichervorrichtungs-Controller 118 Daten von einer Hostvorrichtung (z. B. CPU 102) empfängt, die in die Speichervorrichtung geschrieben werden sollen, die ECC-Engine 502 (oder eine andere geeignete Logik des Speichervorrichtungs-Controllers 118) Paritätsbits zu den zu schreibenden Daten hinzufügen. Diese Paritätsbits werden dann zusammen mit den Daten in eine Speichermatrix 206 einer Partition 122 geschrieben (z. B. können die Paritätsbits in den Metadatenabschnitt 306 einer Scheibe 302 geschrieben werden, während die Daten in den Nutzlastabschnitt 304 der Scheibe geschrieben werden 302).
  • In verschiedenen Ausführungsformen können, wenn Nutzlastdaten von einer Speicheranordnung 206 gelesen werden, die Daten und die Paritätsbits an die ECC-Engine 502 bereitgestellt werden. Die ECC-Engine 502 kann die Paritätsbits prüfen, um das Vorhandensein von Fehlern in der Daten zu bestimmen. Wenn die Daten von der ECC-Engine als nicht korrigierbar angesehen werden (z. B. ist die Anzahl von Fehlern höher als ein Schwellenwert), kann der Lesebefehl erneut ausgegeben werden, kann ein alternatives Fehlerkorrekturschema versucht werden, kann das Lesen als nicht erfolgreich angesehen werden, oder können andere geeignete Maßnahmen durchgeführt werden. Wenn die ECC die Fehler als korrigierbar ansieht, kann die ECC-Engine versuchen, die Fehler zu korrigieren (z. B. durch Manipulieren der Lesedaten basierend auf den Paritätsbits). In einigen Situationen kann die ECC-Engine Fehler als korrigierbar ansehen, die Lesedaten jedoch möglicherweise falsch korrigieren. Wenn solche Daten nachfolgend in die Speicherzellen zurückgeschrieben werden, können die Fehler eingeschlossen („locked in“) werden (und später eine CRC-Prüfung nicht bestehen, wenn der Host ein Lesen der Daten initiiert).
  • Die CRC-Engine 504 kann beliebige geeigneten Datenverifizierungsoperationen durchführen. In verschiedenen Ausführungsformen kann, wenn ein Host eine Schreibanforderung für Nutzdaten sendet, die Schreibanforderung CRC-Bits aufweisen, die zusammen mit den Nutzdaten in die Speicherzellen geschrieben werden. Alternativ kann die CRC-Engine 504 basierend auf einem CRC-Algorithmus CRC-Bits aus den Daten erzeugen, und diese CRC-Bits können mit den Daten geschrieben werden. In verschiedenen Ausführungsformen werden, wenn ein Host-initiiertes Lesen durchgeführt wird, die den Nutzdaten zugeordneten CRC-Bits gelesen und zusammen mit den Nutzdaten an den Speichervorrichtungs-Controller 118 zurückgegeben. Wie oben beschrieben, können die Nutzlastdaten zur Fehlerkorrektur an die ECC-Engine 502 weitergegeben werden, und das Ergebnis kann dann an die CRC-Engine 504 weitergegeben werden. Die CRC-Engine kann die Daten basierend auf einem CRC-Algorithmus verarbeiten und bestimmen, ob die Ergebnisse zu den CRC-Bits passen, die den Daten zugeordnet sind. Wenn die Ergebnisse passen, werden die Daten an den Host zurückgegeben. Wenn die Ergebnisse nicht passen, kann das Lesen wiederholt werden, kann ein Fehler an den Host gemeldet werden, oder kann eine andere geeignete Aktion durchgeführt werden. In verschiedenen Ausführungsformen wird die CRC-Engine 504 nicht für Vorrichtungs-initiierte Lesebefehle verwendet (z. B. kann der mit der CRC-Prüfung verbundene Overhead solche Leseoperationen verbieten), so dass fehlerhafte Ergebnisse von der ECC-Engine 502 für solche Leseoperationen unerkannt bleiben (zumindest bis der Host später die Daten anfordert und die gelesenen Daten die CRC-Prüfung nicht bestanden haben).
  • Die Vorrichtungs-initiierte Leselogik 506 kann den Ablauf eines Vorrichtungs-initiierten Lesebefehls steuern. Beispielsweise kann die Host-initiierte Leselogik 508 bestimmen, wann einer oder mehrere Vorrichtungs-initiierte Lesebefehle ausgegeben werden sollen, und kann die Sequenz mehrerer Vorrichtungs-initiierter Lesebefehle verwalten. Ein Vorrichtungs-initiierter Lesebefehl kann zu jedem geeigneten Zeitpunkt ausgegeben werden. Beispielsweise kann die Vorrichtungs-initiierte Leselogik 506 eine RBER von einem oder mehreren Speicherchips 116 oder Partitionen davon (oder eine aggregierte RBER von allen Speicherchips 116) überwachen, und wenn die RBER einen Schwellenwert überschreitet, kann die Vorrichtungs-initiierte Leselogik 506 Auffrischungsoperationen über die Speichervorrichtung 116 (oder einen Teil davon) initiieren, was das Lesen der Speicherzellen und das Zurückschreiben der gelesenen Werte in die Speicherzellen beinhalten kann. Beispielsweise kann eine Auffrischungsoperation das Ausgeben eines Lesebefehls, das Erhalten von Daten, und das Ausgeben eines Schreibbefehls zum Zurückschreiben der erhaltenen Daten aufweisen. In einigen Ausführungsformen können die Auffrischungsoperationen basierend auf einem Wiederholungsschwellenwert initiiert werden (z. B. kann, wenn ein bestimmter Prozentsatz von durch den Host-initiierten Lesebefehlen erneute Leseoperationen auslöst, eine Auffrischung der Speichervorrichtung 106 ausgelöst werden). In einer besonderen Ausführungsform kann, wenn ein Laufwerk hochfährt, die Vorrichtungs-initiierte Leselogik 506 mehrere Speicherorte abtasten und eine Rate zum erneuten Lesen für die abgetasteten Daten bestimmen. Wenn die Rate zum erneuten Lesen ausreichend hoch ist, kann die Vorrichtungs-initiierte Leselogik 506 eine Auffrischung von zumindest einem Teil der Speichervorrichtung 106 auslösen. In verschiedenen Ausführungsformen kann die Vorrichtungs-initiierte Leselogik 506 periodisch veranlassen, dass Auffrischungsoperationen an der Speichervorrichtung 106 durchgeführt werden, um sicherzustellen, dass eine niedrige RBER beibehalten wird.
  • In verschiedenen Ausführungsformen kann die Vorrichtungs-initiierte Leselogik 506 auch Nutzdaten sowie Paritätsbits, die gelesen werden, zur Fehlererkennung und Korrektur an die ECC-Engine 502 kommunizieren. Die Vorrichtungs-initiierte Leselogik 506 kann auch eine Dummy-Leseoperation durch Ausgeben eines Lesebefehls an einen Zielspeicherchip und Ignorieren der Lesedaten bewirken (ein zusätzlicher Lesebefehl kann dann für denselben Ort ausgegeben werden, um die Daten zu erhalten). In einer alternativen Ausführungsform kann die Vorrichtungs-initiierte Leselogik 506 eine Dummy-Leseoperation durch Ausgeben eines Lesebefehls an einen Zielspeicherchip zusammen mit einer Anzeige, dass ein Dummy-Lesen durchgeführt werden soll, bewirken, und der Speicherchip kann das Dummy-Lesen durchführen und die Ergebnisse verwerfen (der Zielspeicherchip kann dann sua sponte ein zusätzliches Lesen durchführen, oder die Vorrichtungs-initiierte Leselogik 506 kann bewirken, dass ein zusätzlicher Lesebefehl an den Zielspeicherchip gesendet wird, und die gelesenen Daten können an die Vorrichtungs-initiierte Leselogik 506 zurückgegeben werden).
  • Die Host-initiierte Leselogik 508 kann bestimmen, wann einer oder mehrere Host-initiierte Lesebefehle empfangen wurden, und kann entsprechende Lesebefehle an den Zielspeicherchip 116 senden. Die Host-initiierte Leselogik 508 kann auch die zurückgegebenen Lesedaten empfangen und Nutzdaten sowie Paritätsbits zur Fehlererkennung und Korrektur an die ECC-Engine 502 kommunizieren. Die Host-initiierte Leselogik 508 kann auch die Ausgabe der ECC-Engine 502 sowie zugeordnete CRC-Bits an die CRC-Engine 504 weitergeben, um die Gültigkeit der gelesenen Daten zu bestimmen. Die Host-initiierte Leselogik 508 kann auch einen Lesebefehl erneut ausgeben, wenn das Host-initiierte Lesen keine Fehlerkorrektur oder die CRC weitergibt.
  • 6 zeigt einen beispielhaften Ablauf zur Durchführung eines Vorrichtungs-initiierten Lesebefehls unter Verwendung einer Dummy-Leseoperation gemäß bestimmten Ausführungsformen. Bei 602 wird ein Lesebefehl z. B. durch den Speichervorrichtungs-Controller 118 erkannt. Bei 604 wird eine Bestimmung vorgenommen, ob der Lesebefehl durch den Host oder die Speichervorrichtung 106 initiiert wurde. Als Reaktion auf die Bestimmung, dass der Lesebefehl von der Vorrichtung initiiert wurde, beginnt eine Leseoperation.
  • Bei 606 werden Daten erfasst. Beispielsweise kann eine Demarkationsspannung an mehrere Speicherzellen angelegt werden, und die Antwort der Speicherzellen kann erfasst werden, um zu bestimmen, ob die Schwellenspannungen der Speicherzellen über oder unter der Demarkationsspannung liegen. Bei 608 wird eine Bestimmung vorgenommen, ob eine ECC-Operation an den gelesenen Daten erfolgreich ist oder fehlschlägt. Beispielsweise können die erfassten Daten an die ECC-Engine 502 des Speichervorrichtungs-Controllers 118 bereitgestellt werden. Die ECC-Engine kann Fehler in den erfassten Daten beispielsweise basierend auf Paritätsbits erkennen, die zusammen mit den Daten erfasst werden. Basierend auf den erkannten Fehlern kann die ECC-Engine bestimmen, ob sie die Daten korrigieren kann oder nicht. Wenn eine Bestimmung durch die ECC-Engine vorgenommen wird, dass sie die Daten nicht korrigieren kann, bewegt sich der Ablauf zu 610, wo eine Bestimmung vorgenommen wird, ob die angelegte VDM die letzte anzulegende VDM ist. Wenn bestimmt wird, dass die VDM nicht die letzte VDM ist, kann die VDM bei 612 nach oben angepasst werden, und bei 606 können die Daten erneut erfasst werden.
  • Wenn eine Bestimmung vorgenommen wird, dass die VDM die letzte anzulegende VDM ist, kann bei 614 ein alternatives Datenkorrekturschema, wie etwa ein XOR-basiertes Wiederherstellungsschema, durchgeführt werden. In verschiedenen Ausführungsformen können die Daten aus einer beliebigen Anzahl von Schichten (oder einer anderen Gruppierung von Daten) bestehen, können miteinander XOR-verknüpft werden, und die Ergebnisse können in einem Speicherchip 116 (z. B. in einer Scheibe 302) gespeichert werden. Wenn die Daten einer Schicht beschädigt werden, können die gespeicherten XOR-Ergebnisse mit den Daten aus den verbleibenden Schichten XOR-verknüpft werden, um die Daten der Schicht, die beschädigt wurden, wiederherzustellen. Wenn das alternative Datenkorrekturschema erfolgreich war, werden die Daten bei 616 in die Scheibe zurückgeschrieben. Eine zweite Leseoperation wird dann durchgeführt durch Anpassen der VDM zurück auf ihren ursprünglichen Wert und zurückkehren zu 606 in dem Ablauf, um Daten zu erfassen (jedes Mal, wenn eine zusätzliche Leseoperation durchgeführt wird, kann die Leseoperation durch Zurücksetzen der VDM und Erfassen der Daten beginnen). In verschiedenen Ausführungsformen kann der Speichervorrichtungs-Controller 118 einen zusätzlichen Lesebefehl an die Zielspeicherpartition ausgeben, um die zweite Leseoperation zu initiieren.
  • Wenn bei 608 eine Bestimmung vorgenommen wird, dass die ECC bestanden wurde, wird bei 620 eine Bestimmung vorgenommen, ob die ECC während einer ersten Leseoperation bestanden wurde (wobei eine Leseoperation das Erfassen der Daten bei einem oder mehreren VDMs umfassen kann). Wenn eine Bestimmung vorgenommen wurde, dass dies die erste Leseoperation ist, werden bei 622 die Lesedaten verworfen (d. h., weil diese Leseoperation die Dummy-Leseoperation darstellt). Die Daten werden verworfen, da selbst obwohl die ECC bestanden bzw. durchlaufen wurde, eine Möglichkeit besteht, dass die ECC-Engine 502 eine Fehlkorrektur der Daten durchgeführt hat. In verschiedenen Ausführungsformen werden die Daten möglicherweise nicht explizit verworfen, aber die Daten können ungenutzt bleiben und können während einer nachfolgenden Leseoperation überschrieben werden. Der Ablauf kehrt dann zu 606 zurück, wo eine zusätzliche Leseoperation beginnt. In verschiedenen Ausführungsformen kann der Speichervorrichtungs-Controller 118 einen zusätzlichen Lesebefehl an die Zielspeicherpartition ausgeben, um die zweite Leseoperation zu initiieren. Während einer zweiten Leseoperation wird, wenn die ECC bei 608 bestanden wird, bei 620 bestimmt, dass dies nicht der erste Leseoperation ist, und bei 624 wird die Leseoperation als erfolgreich angesehen. Die gelesenen Daten können dann für jeden geeigneten Zweck verwendet werden. Beispielsweise können die gelesenen Daten zurück in den Ort geschrieben werden, von dem sie als Teil einer Datenaktualisierungsoperation gelesen wurden.
  • Wenn bei 604 eine Bestimmung vorgenommen wird, dass das Lesen durch einen Host initiiert wurde, bewegt sich der Ablauf zu 626, wo eine VDM angelegt wird und Daten erfasst werden. Bei 628 wird, wenn eine ECC-Operation nicht erfolgreich ist, bei 630 eine Bestimmung vorgenommen, ob die angelegte VDM die endgültige anzulegende VDM ist. Wenn die VDM nicht die letzte VDM ist, kann die VDM bei 632 nach oben angepasst werden, und bei 626 Daten können erneut erfasst werden. Wenn die VDM bei 630 als die letzte anzulegende VDM bestimmt wird, kann der Ablauf zu 634 gehen, wo eine XOR-basierte Wiederherstellungsoperation durchgeführt wird. Wenn die XOR-basierte Wiederherstellungsoperation erfolgreich ist, werden die Daten bei 636 zu dem Erfassungsort zurückgeschrieben, und bei 638 wird eine zusätzliche Leseoperation durchgeführt, indem der Ablaufs zu 626 zurückkehrt. In verschiedenen Ausführungsformen kann der Speichervorrichtungs-Controller 118 einen zusätzlichen Lesebefehl an die Zielspeicherpartition ausgeben, um die zweite Leseoperation zu initiieren.
  • Wenn die ECC-Operation bei 628 abläuft, kann die Ausgabe der ECC-Engine 502 an die CRC-Engine 504 weitergegeben werden, und bei 640 wird eine Bestimmung vorgenommen, ob die CRC bestanden wurde. Wenn die CRC nicht bestanden wurde (was anzeigt, dass die ECC-Engine 502 ein fehlerhaftes Ergebnis erzeugt hat), bewegt sich der Ablauf zu 638, wo eine zusätzliche Leseoperation durchgeführt wird. Wenn die CRC bei 640 bestanden wird, wird das Lesen bei 642 als erfolgreich angesehen, und die gelesenen Daten können an den Host zurückgegeben werden.
  • In verschiedenen Ausführungsformen kann der Ablauf modifiziert werden. Anstatt beispielsweise durch mehrere VDMs zu iterieren, bis die ECC während der ersten (d. h Dummy-) Leseoperation für die Vorrichtungs-initiierten Leseanforderungen bestanden wird, kann eine einzelne VDM (z. B. VDM3) oder eine andere Spannung, die ausreicht, um die Drift in den Zielspeicherzellen zurückzusetzen, angelegt werden (mit oder ohne eine tatsächliche Erfassungsoperation). Dann kann eine normale Leseoperation initiiert werden, um die Zieldaten zu erhalten.
  • Der in 6 beschriebene Ablauf ist lediglich repräsentativ für Vorgänge, die in bestimmten Ausführungsformen auftreten können. In anderen Ausführungsformen können zusätzliche Operationen durch die Komponenten des Systems 100 durchgeführt werden. Verschiedene Ausführungsformen der vorliegenden Offenbarung ziehen beliebige geeignete Signalmechanismen in Betracht, um die hierin beschriebenen Funktionen zu erreichen. Einige der in 6 dargestellten Operationen können geeigneterweise wiederholt, kombiniert, modifiziert oder gelöscht werden. Zusätzlich können Operationen in einer beliebigen geeigneten Reihenfolge durchgeführt werden, ohne von dem Schutzbereich bestimmter Ausführungsformen abzuweichen.
  • Ein Entwurf kann verschiedene Stadien durchlaufen, von der Erzeugung über die Simulation bis zur Herstellung. Daten, die einen Entwurf repräsentieren, können den Entwurf auf eine Anzahl von Arten repräsentieren. Erstens, wie es in Simulationen nützlich ist, kann die Hardware unter Verwendung einer Hardwarebeschreibungssprache (HDL) oder einer anderen funktionalen Beschreibungssprache repräsentiert werden. Zusätzlich kann ein Schaltungspegelmodell mit Logik- und/oder Transistor-Gates in einigen Stadien des Entwurfsprozesses erzeugt werden. Darüber hinaus erreichen die meisten Entwürfe zu einem bestimmten Zeitpunkt ein Datenniveau, das die physische Platzierung verschiedener Vorrichtungen im Hardwaremodell repräsentiert. In dem Fall, in dem herkömmliche Halbleiterherstellungstechniken verwendet werden, können die Daten, die das Hardwaremodell repräsentieren, die Daten sein, die das Vorhandensein oder Fehlen verschiedener Merkmale auf verschiedenen Maskenschichten für Masken angeben, die zur Herstellung der integrierten Schaltung verwendet werden. In einigen Implementierungen können solche Daten in einem Datenbankdateiformat, wie etwa dem Graphic Data System II (GDS II), dem Open Artwork System Interchange Standard (OASIS), oder einem ähnlichen Format gespeichert werden.
  • In einigen Implementierungen können softwarebasierte Hardwaremodelle und HDL und andere funktionale Beschreibungssprachenobjekte, zusammen mit anderen Beispielen, Registerübertragungssprachen- (RTL) Dateien aufweisen. Solche Objekte können maschinell geparst werden, so dass ein Entwurfs-Tool das HDL-Objekt (oder Modell) akzeptieren kann, das HDL-Objekt nach Attributen der beschriebenen Hardware parsen kann, und eine physikalische Schaltung und/oder ein Auf-Chip-Layout von dem Objekt bestimmen kann. Die Ausgabe des Entwurfswerkzeugs kann verwendet werden, um das physische Vorrichtung herzustellen. Beispielsweise kann ein Entwurfswerkzeug Konfigurationen verschiedener Hardware- und/oder Firmware-Elemente aus dem HDL-Objekt, wie etwa Busbreiten, Register (einschließlich Größen und Typen), Speicherblöcke, physikalische Verbindungspfade, Fabric-Topologien, bestimmen, unter anderen Attributen, die implementiert werden, um das im HDL-Objekt modellierte System zu realisieren. Entwurfswerkzeuge können Werkzeuge zum Bestimmen der Topologie und Fabric-Konfigurationen eines System-auf-Chip (SoC) und andere Hardwarevorrichtungen aufweisen. In einigen Fällen kann das HDL-Objekt als Grundlage für die Entwicklung von Modellen und Entwurfsdateien verwendet werden, die von Fertigungseinrichtungen zur Herstellung der beschriebenen Hardware verwendet werden können. Tatsächlich kann ein HDL-Objekt selbst als eine Eingabe für eine Fertigungssystemsoftware bereitgestellt werden, um die beschriebene Hardware zu erzeugen.
  • In jeder Darstellung des Entwurfs können die Daten in einer beliebigen Form eines maschinenlesbaren Mediums gespeichert werden. Ein Systemspeicher bzw. Speicher oder ein magnetischer oder optischer Speicher, wie etwa eine Platte, kann das maschinenlesbare Medium zum Speichern von Informationen sein, die über optische oder elektrische Wellen übertragen werden, die moduliert oder auf andere Weise erzeugt werden, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die den Code oder den Entwurf anzeigt oder trägt, übertragen wird, wird in dem Maße, in dem das Kopieren, Puffern oder erneute Senden des elektrischen Signals durchgeführt wird, eine neue Kopie erstellt. Somit kann ein Kommunikationsanbieter oder ein Netzwerkanbieter auf einem greifbaren, maschinenlesbaren Medium, zumindest zeitweise, einen Artikel, wie etwa in eine Trägerwelle codierte Informationen, die Techniken von Ausführungsformen der vorliegenden Offenbarung verkörpern, speichern.
  • Ein Modul, wie es hierin verwendet wird, bezieht sich auf eine beliebige Kombination von Hardware, Software und/oder Firmware. Als ein Beispiel weist ein Modul Hardware auf, wie etwa einen Mikro-Controller, der einem nichtflüchtigen Medium zugeordnet ist, um Code zu speichern, der angepasst ist, um von dem Mikro-Controller ausgeführt zu werden. Daher bezieht sich die Bezugnahme auf ein Modul in einer Ausführungsform auf die Hardware, die speziell dafür konfiguriert ist, den auf einem nichtflüchtigen Medium zu haltenden Code zu erkennen und/oder auszuführen. Ferner bezieht sich in einer anderen Ausführungsform die Verwendung eines Moduls auf das nicht-transitorische Medium, das den Code aufweist, der speziell angepasst ist, um von dem Mikro-Controller ausgeführt zu werden, um vorbestimmte Operationen durchzuführen. Und wie daraus geschlossen werden kann, kann sich in einer weiteren Ausführungsform der Begriff Modul (in diesem Beispiel) auf die Kombination des Mikro-Controllers und des nichtflüchtigen Mediums beziehen. Häufig variieren Modulgrenzen, die separat dargestellt werden, und überlappen sich möglicherweise. Beispielsweise können sich ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon teilen, während möglicherweise einige unabhängige Hardware, Software oder Firmware beibehalten wird. In einer Ausführungsform umfasst die Verwendung des Begriffs Logik Hardware, wie etwa Transistoren, Register oder andere Hardware, wie etwa programmierbare Logikvorrichtungen.
  • Logik kann dazu verwendet werden, eine beliebige der Funktionen der verschiedenen Komponenten, wie etwa der CPU 102, des externen E/A-Controllers 104, des Prozessors 108, der Kerne 114A und 114B, des E/A-Controllers 110, des CPU-Speicher-Controller 112 und der Speichervorrichtung 106, der Systemspeichervorrichtung 107, des Speicherchips 116, des Speichervorrichtungs-Controller 118, der Adressübersetzungs-Engine 120, der Speicherpartition 122, der Programmsteuerlogik 124, des Chip-Controllers 126, des Speicherarrays 206, des Speicherpartitions-Controllers 210, der Wortleitungssteuerlogik 214, der Bitleitungssteuerlogik 216, der ECC-Engine 502, der CRC-Engine 504, der Vorrichtungs-initiierten Leselogik 506, der Host-initiierten Leselogik 508, oder eine andere hierin beschriebene Entität oder Komponente oder Unterkomponenten von diesen, zu implementieren. „Logik“ kann sich auf Hardware, Firmware, Software und/oder Kombinationen von jedem, um eine oder mehrere Funktionen auszuführen, beziehen. In verschiedenen Ausführungsformen kann die Logik einen Mikroprozessor oder ein anderes Verarbeitungselement, das betreibbar ist, Softwareanweisungen auszuführen, eine diskrete Logik, wie etwa eine anwendungsspezifische integrierte Schaltung (ASIC), eine programmierte Logikvorrichtung, wie etwa ein feldprogrammierbares Gate-Array (FPGA), und eine Speichervorrichtung, die Anweisungen enthält, Kombinationen von Logikvorrichtungen (z. B. wie sie auf einer gedruckten Platine zu finden wären) oder andere geeignete Hardware und/oder Software aufweisen. Die Logik kann eines oder mehrere Gatter oder andere Schaltungskomponenten aufweisen. In einigen Ausführungsformen kann die Logik auch vollständig als Software ausgeführt sein. Software kann als ein Softwarepaket, Code, Anweisungen, Befehlssätze und/oder Daten, die auf einem nicht transitorischen computerlesbaren Speichermedium aufgezeichnet sind, verkörpert sein. Firmware kann als Code, Anweisungen oder Befehlssätze und/oder Daten, die in Speichervorrichtungen fest codiert (z. B. nichtflüchtig) sind, verkörpert sein.
  • Die Verwendung des Ausdrucks „zum“ oder „konfiguriert zum“ bezieht sich in einer Ausführungsform auf das Anordnen, Zusammenstellen, Herstellen, Anbieten zum Verkauf, Importieren und/oder Entwerfen einer Vorrichtung, Hardware, Logik oder eines Elements zum Durchrühren einer designierten oder bestimmten Aufgabe. In diesem Beispiel ist eine Vorrichtung oder ein Element davon, das nicht in Betrieb ist, immer noch „konfiguriert zum“ Durchführen einer designierten Aufgabe, wenn es entworfen, verbunden und/oder verschaltet ist, um die bestimmte Aufgabe durchzuführen. Als rein veranschaulichendes Beispiel kann ein Logikgatter während des Betriebs eine 0 oder eine 1 bereitstellen. Aber ein Logikgatter, das „dazu konfiguriert“ ist, ein Freigabesignal an einen Taktgeber bereitzustellen, umfasst nicht jedes mögliche Logikgatter, das eine 1 oder 0 bereitstellen kann. Stattdessen ist das Logikgatter auf eine andere Weise so verbunden, dass während des Betriebs die Ausgabe der 1 oder 0 dazu ist, den Taktgeber zu aktivieren. Es ist noch einmal anzumerken, dass die Verwendung des Begriffs „konfiguriert zum“ keine Operation erfordert, sondern sich stattdessen auf den latenten Zustand einer Vorrichtung, Hardware und/oder eines Elements konzentriert, wobei in dem latenten Zustand die Vorrichtung, Hardware und/oder das Element entworfen ist, eine bestimmte Aufgabe auszuführen, wenn die Vorrichtung, die Hardware und/oder das Element in Betrieb ist.
  • Ferner bezieht sich die Verwendung der Ausdrücke „in der Lage sein, zu“ und/oder „betreibbar zum“ in einer Ausführungsform auf eine Vorrichtung, eine Logik, eine Hardware und/oder ein Element, das/die gestaltet ist/sind, die Verwendung der Vorrichtung, Logik, Hardware und/oder des Elements in einer bestimmten Weise zu ermöglichen. Wie oben erwähnt, bezieht sich Verwenden zum, in der Lage sein, zum, oder Betreibbar sein, zum in einer Ausführungsform auf den latenten Zustand einer Vorrichtung, Logik, Hardware und/oder eines Elements, in dem sich die Vorrichtung, die Logik, die Hardware und/oder das Element nicht in Betrieb befindet, aber auf eine Weise gestaltet ist, dass die Verwendung einer Vorrichtung in einer bestimmten Art und Weise ermöglicht wird.
  • Ein Wert, wie er hierin verwendet wird, weist jede bekannte Darstellung durch eine Zahl, einen Zustands, einen logischen Zustand oder einen binären logischen Zustand auf. Oft wird die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als 1 und 0 bezeichnet, was einfach binäre Logikzustände repräsentiert. Beispielsweise bezieht sich eine 1 auf einen hohen Logikpegel, und eine 0 bezieht sich auf einen niedrigen Logikpegel. In einer Ausführungsform kann eine Speicherzelle, wie etwa ein Transistor oder eine Flash-Zelle, in der Lage sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Es wurden jedoch andere Darstellungen von Werten in Computersystemen verwendet. Beispielsweise kann die Dezimalzahl zehn auch als ein Binärwert 1010 und als ein hexadezimaler Buchstabe A repräsentiert werden. Daher weist ein Wert eine beliebige Darstellung von Information auf, die in einem Computersystem gehalten werden kann.
  • Darüber hinaus können Zustände durch Werte oder Abschnitte von Werten repräsentiert werden. Als ein Beispiel kann ein erster Wert, wie etwa eine logische Eins, einen Standard- oder Anfangszustand repräsentieren, während ein zweiter Wert, beispielsweise eine logische Null, einen Nicht-Standardzustand repräsentieren kann. Außerdem beziehen sich die Begriffe „zurückgesetzt“ und „gesetzt“ in einer Ausführungsform auf einen Standard- bzw. einen aktualisierten Wert bzw. Zustand. Beispielsweise weist ein Standardwert möglicherweise einen hohen logischen Wert, d. h. zurückgesetzt, auf, während ein aktualisierter Wert möglicherweise einen niedrigen logischen Wert, d. h. gesetzt, aufweist. Es ist zu beachten, dass eine beliebige Kombination von Werten verwendet werden kann, um eine beliebige Anzahl von Zuständen zu repräsentieren.
  • Die Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code, die oben dargelegt wurden, können über auf einem maschinenzugänglichen, maschinenlesbaren, computerzugänglichen oder computerlesbaren Medium gespeicherte Anweisungen oder Code implementiert werden, der durch ein Verarbeitungselement ausführbar ist. Ein nicht-transitorisches maschinen-zugängliches/lesbares Medium weist einen beliebigen Mechanismus auf, der Information in einer Form bereitstellt (d. h. speichert und/oder überträgt), die durch eine Maschine, wie etwa einem Computer oder einem elektronischen System, gelesen werden kann. Beispielsweise weist ein nicht-transitorisches maschinenzugängliches Medium einen Direktzugriffsspeicher (RAM), wie etwa statisches RAM (SRAM) oder dynamisches RAM (DRAM); ROM; ein magnetisches oder optisches Speichermedium; Flash-Speichervorrichtungen; elektrische Speichervorrichtungen; optische Speichervorrichtungen; akustische Speichervorrichtungen; eine andere Form von Speichervorrichtungen zum Halten von Informationen, die von transitorischen (propagierenden) Signalen (z. B. Trägerwellen, Infrarotsignalen, digitalen Signalen) empfangen werden; usw. auf, die von den nicht-transitorischen Medien zu unterscheiden sind, die Informationen davon empfangen können.
  • Anweisungen, die verwendet werden, Logik zu programmieren, um Ausführungsformen der Offenbarung durchzuführen, können in einem Speicher in dem System, wie etwa einem DRAM, Cache, einem Flash-Speicher oder einem anderen Speicher, gespeichert sein. Darüber hinaus können die Anweisungen über ein Netzwerk oder über andere computerlesbare Medien verteilt werden. Somit kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern oder Übertragen von Information in einer Form aufweisen, die durch eine Maschine (z. B. einen Computer) lesbar ist, ist aber nicht beschränkt auf Disketten, optische Disketten, Compact Discs, Nur-Lese-Speicher (CD -ROMs) und magnetooptische Platten, Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAM), löschbaren programmierbaren Nur-Lese-Speicher (EPROM), elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), magnetische oder optische Karten, Flash-Speicher, oder einen greifbaren, maschinenlesbaren Speicher, der bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen von propagierenden Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) verwendet wird. Dementsprechend weist das computerlesbare Medium jede Art von greifbarem maschinenlesbarem Medium auf, das zum Speichern oder Übertragen elektronischer Anweisungen oder Informationen in einer Form, die durch eine Maschine (z. B. einem Computer) gelesen werden kann, geeignet ist.
  • In mindestens einer Ausführungsform umfasst eine Vorrichtung ein Speicherarray, das mehrere Phasenwechselspeicherzellen (PCM-Zellen) umfasst; und einen Controller zum Bestimmen, Daten, die durch die mehreren PCM-Zellen gespeichert sind, unabhängig von einem Lesebefehl von einer Hostvorrichtung zu lesen; und als Reaktion auf die Bestimmung, Daten, die durch die mehreren PCM-Zellen gespeicherte sind, unabhängig von einem Lesebefehl von einer Hostvorrichtung zu lesen, Durchführen einer Dummy-Leseoperation an den mehreren PCM-Zellen und Durchführen einer zusätzlichen Leseoperation an den mehreren PCM-Zellen.
  • In einer Ausführungsform soll der Controller Daten löschen, die während der Dummy-Leseoperation gelesen werden. In einer Ausführungsform soll der Controller Daten, die durch die Dummy-Leseoperation gelesen werden, nach einer Bestimmung, dass die Daten eine Fehlerkorrekturoperation durchlaufen haben, verwerfen. In einer Ausführungsform soll der Controller Daten, die durch die zusätzliche Leseoperation gelesen werden, in die mehreren PCM-Zellen schreiben. In einer Ausführungsform umfasst das Durchführen der Dummy-Leseoperation Erfassen der mehreren PCM-Zellen, und führen eine Fehlerkorrektur an Daten durch, die durch die mehreren PCM-Zellen erfasst werden. In einer Ausführungsform führt der Controller eine Fehlerkorrektur und eine zyklische Redundanzprüfung von Daten durch, die als Reaktion auf einen Lesebefehl gelesen werden, der von der Hostvorrichtung empfangen wird; und führt eine Fehlerkorrektur, aber keine zyklische Redundanzprüfung an Daten durch, die als Reaktion auf die Bestimmung, Daten zu lesen, die durch die mehreren PCM-Zellen gespeichert sind, gelesen werden. In einer Ausführungsform soll der Controller während der Dummy-Leseoperation mehrere Demarkationsspannungen an die mehreren PCM-Zellen anlegen. In einer Ausführungsform umfasst das Speicherarray ein dreidimensionales Kreuzpunkt-Speicherarray. In einer Ausführungsform soll der Controller bestimmen, Daten, die durch die mehreren PCM-Zellen gespeichert sind, unabhängig von einem Lesebefehl von einer Hostvorrichtung zu lesen als Reaktion auf eine Erkennung, dass das Vorrichtung hochgefahren wurde. In einer Ausführungsform soll der Controller bestimmen, Daten, die durch die mehreren PCM-Zellen gespeichert sind, unabhängig von einem Lesebefehl von einer Hostvorrichtung zu lesen als Reaktion auf eine Erkennung, dass eine Rohbitfehlerrate von mehreren Leseoperationen einen Schwellenwert überschritten hat. In einer Ausführungsform umfasst das Durchführen der Dummy-Leseoperation Durchführen einer XOR-basierten Datenwiederherstellungsoperation. In einer Ausführungsform umfasst eine Vorrichtung ferner eine Batterie, die kommunikativ mit einem Prozessor verbunden ist, eine Anzeige, die kommunikativ mit dem Prozessor verbunden ist, oder eine Netzwerkschnittstelle, die kommunikativ mit dem Prozessor verbunden ist.
  • In mindestens einer Ausführungsform umfasst ein Verfahren Bestimmen, Daten, die von mehreren Speicherzellen gespeichert sind, unabhängig von einem Lesebefehl von einer Hostvorrichtung zu lesen; und als Reaktion auf das Bestimmen, Daten, die durch die mehreren Speicherzellen gespeichert sind, unabhängig von einem Lesebefehl von einer Hostvorrichtung zu lesen, Durchführen einer Dummy-Leseoperation an von mehreren Speicherzellen; und Durchführen einer zusätzlichen Leseoperation an den mehreren Speicherzellen.
  • In einer Ausführungsform umfasst ein Verfahren ferner Verwerfen von Daten, die während der Dummy-Leseoperation gelesen werden. In einer Ausführungsform umfasst ein Verfahren ferner Verwerfen von Daten, die durch die Dummy-Leseoperation gelesen werden, nach einer Bestimmung, dass die Daten eine Fehlerkorrekturoperation durchlaufen haben. In einer Ausführungsform umfasst ein Verfahren ferner Schreiben von Daten, die durch die zusätzliche Leseoperation gelesen werden, in die mehreren Speicherzellen. In einer Ausführungsform umfasst ein Verfahren ferner während des Durchführens der Dummy-Leseoperation Erfassen der mehreren Speicherzellen und Durchführen einer Fehlerkorrektur an Daten, die von den mehreren Speicherzellen erfasst werden. In einer Ausführungsform umfasst ein Verfahren ferner Durchführen einer Fehlerkorrektur und einer zyklischen Redundanzprüfung an Daten, die als Reaktion auf einen von der Hostvorrichtung empfangenen Lesebefehl gelesen werden; und Durchführen einer Fehlerkorrektur, aber kein Durchführen einer zyklischen Redundanzprüfung, an Daten, die als Reaktion auf die Bestimmung, Daten zu lesen, die durch die mehreren Speicherzellen gespeichert sind, gelesen werden. In einer Ausführungsform umfasst ein Verfahren ferner Anlegen von mehreren Demarkationsspannungen an die mehreren Speicherzellen während der Dummy-Leseoperation. In einer Ausführungsform umfasst das Speicherarray ein dreidimensionales Kreuzpunkt-Speicherarray. In einer Ausführungsform umfasst ein Verfahren ferner Bestimmen, Daten, die durch die mehreren Speicherzellen gespeichert werden, unabhängig von einem Lesebefehl von einer Hostvorrichtung zu lesen als Reaktion auf eine Erkennung, dass die Vorrichtung hochgefahren wurde. In einer Ausführungsform umfasst ein Verfahren ferner Bestimmen, Daten, die durch die mehreren Speicherzellen gespeichert sind, unabhängig von einem Lesebefehl von einer Hostvorrichtung zu lesen als Reaktion auf eine Erkennung, dass eine Rohbitfehlerrate von mehreren Leseoperationen einen Schwellenwert überschritten hat. In einer Ausführungsform umfasst das Durchführen der Dummy-Leseoperation Durchführen einer XOR-basierten Datenwiederherstellungsoperation.
  • In mindestens einer Ausführungsform weist ein nicht-transitorisches Speichermedium Anweisungen auf, die darauf gespeichert sind, wobei die Anweisungen, wenn sie durch eine Maschine ausgeführt werden, die Maschine veranlassen, zu bestimmen, Daten, die von mehreren Speicherzellen gespeichert sind, unabhängig von einem Lesebefehl von einer Hostvorrichtung zu lesen; und als Reaktion auf die Bestimmung, Daten, die durch die mehreren Speicherzellen gespeichert sind, unabhängig von einem Lesebefehl von einer Hostvorrichtung zu lesen, eine Dummy-Leseoperation an den mehreren Speicherzellen durchzuführen; und eine zusätzliche Leseoperation an den mehreren Speicherzellen durchzuführen.
  • In einer Ausführungsform veranlassen die Anweisungen, wenn sie ausgeführt werden, die Maschine während der Dummy-Leseoperation gelesene Daten zu verwerfen. In einer Ausführungsform veranlassen die Anweisungen, wenn sie ausgeführt werden, die Maschine durch die zusätzliche Leseoperation gelesene Daten in die mehreren Speicherzellen zu schreiben. In einer Ausführungsform umfasst das Durchführen der Dummy-Leseoperation Erfassen der mehreren Speicherzellen und Durchführen einer Fehlerkorrektur an Daten, die von den mehreren Speicherzellen erfasst werden.
  • In mindestens einer Ausführungsform umfasst ein System Mittel zum Bestimmen, Daten, die von mehreren Speicherzellen gespeichert sind, unabhängig von einem Lesebefehl von einer Hostvorrichtung zu lesen; Mittel zum, als Reaktion auf das Bestimmen, Durchführen einer Dummy-Leseoperation an den mehreren Speicherzellen, Daten, die durch die mehreren Speicherzellen gespeichert sind, unabhängig von einem Lesebefehl von einer Hostvorrichtung zu lesen; und Durchführen einer zusätzlichen Leseoperation an den mehreren Speicherzellen.
  • In einer Ausführungsform umfasst ein System ferner Mittel zum Verwerfen von während der Dummy-Leseoperation gelesenen Daten. In einer Ausführungsform umfasst ein System ferner Mittel zum Schreiben von Daten, die durch die zusätzliche Leseoperation gelesen werden, in die mehreren Speicherzellen. In einer Ausführungsform umfasst ein System ferner Mittel zum, während der Durchführung der Dummy-Operation, Erfassen der mehreren Speicherzellen und Durchführen einer Fehlerkorrektur an Daten, die von den mehreren Speicherzellen erfasst werden.
  • In mindestens einer Ausführungsform umfasst ein System einen Controller zum Bestimmen, Daten, die von mehreren Speicherzellen eines Arrays gespeichert sind, unabhängig von einem Lesebefehl von einer Hostvorrichtung zu lesen; und als Reaktion auf die Bestimmung, Daten, die durch die mehreren Speicherzellen des Arrays gespeichert sind, unabhängig von einem Lesebefehl von einer Hostvorrichtung zu lesen, Durchführen einer Dummy-Leseoperation an den mehreren Speicherzellen; und Durchführen einer zusätzlichen Leseoperation an den mehreren Speicherzellen.
  • In einer Ausführungsform umfasst ein System ferner das Array von Speicherzellen. In einer Ausführungsform umfasst das System ferner eine zentrale Verarbeitungseinheit der Hostvorrichtung, wobei die zentrale Verarbeitungseinheit einen Lesebefehl an den Controller sendet. In einer Ausführungsform umfasst ein System ferner eine Batterie, die kommunikativ mit der zentralen Verarbeitungseinheit verbunden ist, eine Anzeige, die kommunikativ mit der zentralen Verarbeitungseinheit verbunden ist, oder eine Netzwerkschnittstelle, die kommunikativ mit der zentralen Verarbeitungseinheit verbunden ist.
  • Der Bezug in dieser Beschreibung auf „die eine Ausführungsform“ oder „eine Ausführungsform“ bedeutet, dass eine bestimmtes Merkmal, eine Struktur oder Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben wurde, in mindestens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Somit beziehen sich die Erscheinungen der Ausdrücke „in der einen Ausführungsform“ oder „in einer Ausführungsform“ an verschiedenen Stellen in dieser Beschreibung nicht notwendigerweise alle auf die gleiche Ausführungsform. Darüber hinaus können die besonderen Merkmale, Strukturen oder Eigenschaften in eine beliebiger geeigneten Weise in einer oder mehreren Ausführungsformen kombiniert werden.
  • In der vorstehenden Beschreibung wurde eine ausführliche Beschreibung mit Bezug auf spezifische beispielhafte Ausführungsformen gegeben. Es ist jedoch offensichtlich, dass verschiedene Modifizierungen und Änderungen daran vorgenommen werden können, ohne vom allgemeinen Geist und Umfang der Offenbarung, wie sie in den beigefügten Ansprüchen dargelegt ist, abzuweichen. Die Beschreibung und die Zeichnungen sind dementsprechend in einem veranschaulichenden Sinne und nicht als einschränkend zu betrachten. Ferner bezieht sich die vorstehende Verwendung der Ausführungsform und andere beispielhafte Wortwahl nicht notwendigerweise auf die gleiche Ausführungsform oder das gleiche Beispiel, sondern kann sich genauso auf verschiedene und unterschiedliche Ausführungsformen wie möglicherweise auf die gleiche Ausführungsform beziehen.

Claims (24)

  1. Vorrichtung, umfassend: ein Speicherarray, das mehrere Phasenänderungsspeicher- (PCM) Zellen umfasst; und einen Controller zum: Bestimmen, Daten, die durch die mehreren PCM-Zellen gespeichert sind, zu lesen, unabhängig von einem Lesebefehl von einer Hostvorrichtung; und als Reaktion auf die Bestimmung, Daten, die durch die mehreren PCM-Zellen gespeichert sind, zu lesen, unabhängig von einem Lesebefehl von einer Hostvorrichtung: Durchführen einer Dummy-Leseoperation an den mehreren PCM-Zellen; und Durchführen einer zusätzlichen Leseoperation an den mehreren PCM-Zellen.
  2. Vorrichtung nach Anspruch 1, wobei der Controller Daten, die während der Dummy-Leseoperation gelesen werden, verwirft.
  3. Vorrichtung nach Anspruch 1, wobei der Controller Daten, die durch die Dummy-Leseoperation gelesen werden, nach einer Bestimmung, dass die Daten eine Fehlerkorrekturoperation durchlaufen haben, verwirft.
  4. Vorrichtung nach Anspruch 1, wobei der Controller Daten, die durch die zusätzliche Leseoperation gelesen werden, in die mehreren PCM-Zellen schreibt.
  5. Vorrichtung nach Anspruch 1, wobei das Durchführen der Dummy-Leseoperation Erfassen der mehreren PCM-Zellen und Durchführen einer Fehlerkorrektur an Daten, die durch die mehreren PCM-Zellen erfasst werden, umfasst.
  6. Vorrichtung nach Anspruch 1, wobei der Controller Folgendes vornimmt: Durchführen einer Fehlerkorrektur und einer zyklischen Redundanzprüfung an Daten, die als Reaktion auf einen Lesebefehl, der von dem Hostvorrichtung empfangen wird, gelesen werden; und Durchführen einer Fehlerkorrektur, aber keiner zyklischen Redundanzprüfung, an Daten, die als Reaktion auf die Bestimmung, Daten zu lesen, die durch die mehreren PCM-Zellen gespeichert sind, gelesen werden.
  7. Vorrichtung nach Anspruch 1, wobei der Controller während der Dummy-Leseoperation mehrere Demarkationsspannungen an die mehreren PCM-Zellen anlegt.
  8. Vorrichtung nach Anspruch 1, wobei das Speicherarray ein dreidimensionales Kreuzpunkt-Speicherarray umfasst.
  9. Vorrichtung nach Anspruch 1, wobei der Controller bestimmt, Daten, die durch die mehreren PCM-Zellen gespeichert sind, zu lesen, unabhängig von einem Lesebefehl von einer Hostvorrichtung, als Reaktion auf eine Erkennung, dass die Vorrichtung hochgefahren wurde.
  10. Vorrichtung nach Anspruch 1, wobei der Controller bestimmt, Daten, die durch die mehreren PCM-Zellen gespeichert sind, zu lesen, unabhängig von einem Lesebefehl von einer Hostvorrichtung als Reaktion auf eine Erkennung, dass eine Rohbitfehlerrate mehrerer Leseoperationen einen Schwellenwert überschritten hat.
  11. Vorrichtung nach Anspruch 1, wobei das Durchführen der Dummy-Leseoperation Durchführen einer XOR-basierten Datenwiederherstellungsoperation umfasst.
  12. Vorrichtung nach Anspruch 1, ferner umfassend eine Batterie, die kommunikativ mit einem Prozessor verbunden ist, eine Anzeige, die kommunikativ mit dem Prozessor verbunden ist, oder eine Netzwerkschnittstelle, die kommunikativ mit dem Prozessor verbunden ist.
  13. Verfahren, umfassend: Bestimmen, Daten, die durch mehrere Speicherzellen gespeichert sind, zu lesen, unabhängig von einem Lesebefehl von einer Hostvorrichtung; und als Reaktion auf das Bestimmen, Daten, die durch die mehreren Speicherzellen gespeichert sind, zu lesen, unabhängig von einem Lesebefehl von einer Hostvorrichtung: Durchführen einer Dummy-Leseoperation an den mehreren Speicherzellen; und Durchführen einer zusätzlichen Leseoperation an den mehreren Speicherzellen.
  14. Verfahren nach Anspruch 13, ferner umfassend Verwerfen von Daten, die während der Dummy-Leseoperation gelesen werden.
  15. Verfahren nach Anspruch 13, ferner umfassend Schreiben von Daten, die durch die zusätzliche Leseoperation gelesen werden, in die mehreren Speicherzellen.
  16. Verfahren nach Anspruch 13, ferner umfassend Erfassen, während der Ausführung der Dummy-Leseoperation, der mehreren Speicherzellen und Durchführen einer Fehlerkorrektur an Daten, die von den mehreren Speicherzellen erfasst werden.
  17. Nicht-transitorisches maschinenlesbares Speichermedium, auf dem Anweisungen gespeichert sind, wobei die Anweisungen, wenn sie durch eine Maschine ausgeführt werden, die Maschine veranlassen zum: Bestimmen, Daten, die durch mehrere Speicherzellen gespeichert sind, zu lesen, unabhängig von einem Lesebefehl von einer Hostvorrichtung; und als Reaktion auf die Bestimmung, Daten, die durch die mehreren Speicherzellen gespeichert sind, zu lesen, unabhängig von einem Lesebefehl von einer Hostvorrichtung: Durchführen einer Dummy-Leseoperation an den mehreren Speicherzellen; und Durchführen einer zusätzlichen Leseoperation an den mehreren Speicherzellen.
  18. Medium nach Anspruch 17, wobei die Anweisungen, wenn sie ausgeführt werden, die Maschine veranlassen zum Verwerfen von Daten, die während der Dummy-Leseoperation gelesen werden.
  19. Medium nach Anspruch 17, wobei die Anweisungen, wenn sie ausgeführt werden, die Maschine veranlassen zum Schreiben von Daten, die durch die zusätzliche Leseoperation gelesen werden, in die mehreren Speicherzellen.
  20. Medium nach Anspruch 17, wobei das Durchführen der Dummy-Leseoperation Erfassen der mehreren Speicherzellen und Durchführen einer Fehlerkorrektur an Daten, die von den mehreren Speicherzellen erfasst werden, umfasst.
  21. System, umfassend: einen Controller zum: Bestimmen, Daten, die durch mehrere Speicherzellen eines Arrays gespeichert sind, zu lesen, unabhängig von einem Lesebefehl von einer Hostvorrichtung; und als Reaktion auf die Bestimmung, Daten, die durch die mehreren Speicherzellen des Arrays gespeichert sind, zu lesen, unabhängig von einem Lesebefehl von einer Hostvorrichtung: Durchführen einer Dummy-Leseoperation an den mehreren Speicherzellen; und Durchführen einer zusätzlichen Leseoperation an den mehreren Speicherzellen.
  22. System nach Anspruch 21, ferner umfassend das Array von Speicherzellen.
  23. System nach Anspruch 21, ferner umfassend eine zentrale Verarbeitungseinheit der Hostvorrichtung, wobei die zentrale Verarbeitungseinheit einen Lesebefehl an den Controller sendet.
  24. System nach Anspruch 23, ferner umfassend eine Batterie, die kommunikativ mit der zentralen Verarbeitungseinheit verbunden ist, eine Anzeige, die kommunikativ mit der zentralen Verarbeitungseinheit verbunden ist, oder eine Netzwerkschnittstelle, die kommunikativ mit der zentralen Verarbeitungseinheit verbunden ist.
DE102018214010.3A 2017-09-29 2018-08-20 Verfahren und Vorrichtung zur Reduzierung von unbemerkten Datenfehlern in nichtflüchtigen Speichersystemen Pending DE102018214010A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/721,394 US10331345B2 (en) 2017-09-29 2017-09-29 Method and apparatus for reducing silent data errors in non-volatile memory systems
US15/721,394 2017-09-29

Publications (1)

Publication Number Publication Date
DE102018214010A1 true DE102018214010A1 (de) 2019-04-04

Family

ID=65727877

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018214010.3A Pending DE102018214010A1 (de) 2017-09-29 2018-08-20 Verfahren und Vorrichtung zur Reduzierung von unbemerkten Datenfehlern in nichtflüchtigen Speichersystemen

Country Status (3)

Country Link
US (1) US10331345B2 (de)
CN (1) CN109582493A (de)
DE (1) DE102018214010A1 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10707197B1 (en) 2018-12-13 2020-07-07 Micron Technology, Inc. 3D stacked integrated circuits having functional blocks configured to provide redundancy sites
KR20200113867A (ko) * 2019-03-26 2020-10-07 에스케이하이닉스 주식회사 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
KR20200118989A (ko) * 2019-04-09 2020-10-19 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
US11404131B2 (en) * 2019-07-12 2022-08-02 Micron Technology, Inc. Decision for executing full-memory refresh during memory sub-system power-on stage
US11106521B2 (en) 2019-08-19 2021-08-31 Micron Technology, Inc. Fatal error logging in a memory device
US10754798B1 (en) * 2019-09-11 2020-08-25 International Business Machines Corporation Link speed recovery in a data storage system
KR20210123884A (ko) * 2020-04-06 2021-10-14 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
US11195575B1 (en) * 2020-06-25 2021-12-07 Intel Corporation Memory array with shorting structure on a dummy array thereof, and method of providing same
US11573854B2 (en) * 2021-02-02 2023-02-07 Nvidia Corporation Techniques for data scrambling on a memory interface
JP7392180B2 (ja) 2021-03-29 2023-12-05 長江存儲科技有限責任公司 メモリデバイスおよびその非同期マルチプレーン独立読み出し動作
CN117079690A (zh) 2021-03-29 2023-11-17 长江存储科技有限责任公司 存储器器件及其异步多面独立读取操作
US11947839B2 (en) * 2021-05-10 2024-04-02 Samsung Electronics Co., Ltd. Storage device, system, and method for customizable metadata

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7936610B1 (en) * 2009-08-03 2011-05-03 Micron Technology, Inc. Selective refresh of single bit memory cells
US20130336047A1 (en) * 2012-04-24 2013-12-19 Being Advanced Memory Corporation Cell Refresh in Phase Change Memory
KR101939234B1 (ko) * 2012-07-23 2019-01-16 삼성전자 주식회사 메모리 장치, 메모리 시스템 및 상기 메모리 장치의 독출 전압의 제어 방법
KR102120823B1 (ko) * 2013-08-14 2020-06-09 삼성전자주식회사 비휘발성 메모리 장치의 독출 시퀀스 제어 방법 및 이를 수행하는 메모리 시스템
JP2015195070A (ja) * 2014-03-31 2015-11-05 株式会社東芝 不揮発性半導体記憶装置
KR102233074B1 (ko) * 2014-10-08 2021-03-30 삼성전자주식회사 저장 장치 및 그것의 신뢰성 검증 방법
US9704581B2 (en) * 2014-12-27 2017-07-11 Intel Corporation Voltage ramping detection
US10262743B2 (en) * 2016-10-25 2019-04-16 Sandisk Technologies Llc Command sequence for first read solution for memory
KR20180052152A (ko) * 2016-11-09 2018-05-18 에스케이하이닉스 주식회사 메모리 셀들을 리프레시하는 방법 및 메모리 시스템

Also Published As

Publication number Publication date
US20190102088A1 (en) 2019-04-04
CN109582493A (zh) 2019-04-05
US10331345B2 (en) 2019-06-25

Similar Documents

Publication Publication Date Title
DE102018214010A1 (de) Verfahren und Vorrichtung zur Reduzierung von unbemerkten Datenfehlern in nichtflüchtigen Speichersystemen
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE112020000178T5 (de) Verwaltung von in zonen unterteilten namensräumen nichtflüchtiger speicherungsvorrichtungen
US11200961B1 (en) Apparatus, system and method to log memory commands and associated addresses of a memory array
DE112018000181T5 (de) System und verfahren für die schnelle ausführung von kapselinternen befehlen
US10777271B2 (en) Method and apparatus for adjusting demarcation voltages based on cycle count metrics
DE112017005887T5 (de) Speichersystem und Verfahren zur thermischen Drosselung über eine Befehlsarbitrierung
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112016000696B4 (de) Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102011075814A1 (de) Speicherpuffer mit zugänglicher Information nach einem Schreibfehler
DE102018115199A1 (de) Verfahren zur maximierung der frequenz während einer datenintegritätsprüfung auf einem physischen schnittstellenbus
DE112020004958T5 (de) Dynamische zonenaktivgrenze für offenen zns
DE112020005044T5 (de) Zonenanhang-befehlsplanung basierend auf zonenzustand
DE102020211544A1 (de) Steuerung, betriebsverfahren der steuerung und speichergerät mit derselben
DE102021120076A1 (de) Validierung von dram-inhalten unter verwendung einer internendatensignatur
DE102020115747A1 (de) Speichermodul, Fehlerkorrekturverfahren für Speicher-Controller, der dieses steuert, und Rechensystem, das dieses umfasst
DE102019112751A1 (de) Selektives hintergrund-datenauffrischen für ssd
DE102018120964A1 (de) Integrierte Schaltungsspeichervorrichtungen mit verbesserter Pufferspeichernutzung während Lese- und Schreiboperationen
DE102017120971A1 (de) Pipelineverzögerungsdetektion während des Decodierens durch eine Datenspeichereinrichtung
DE112022002494T5 (de) Datenspeicherungsvorrichtung und verfahren zur dateibasierten interrupt-zusammenführung
US20230064007A1 (en) Encoding additional states in a three-dimensional crosspoint memory architecture
DE102022209756A1 (de) Speichervorrichtung und speichersystem zum programmieren von daten
DE102022119998A1 (de) Dynamische fehlerkontrollkonfiguration fürspeichersysteme
DE102022101260A1 (de) Ereignismechanismus zur Fehlererkennung