DE102019123510B4 - Nichtflüchtige Speichervorrichtung und Speichersystem, das die nichtflüchtige Speichervorrichtung umfasst - Google Patents

Nichtflüchtige Speichervorrichtung und Speichersystem, das die nichtflüchtige Speichervorrichtung umfasst Download PDF

Info

Publication number
DE102019123510B4
DE102019123510B4 DE102019123510.3A DE102019123510A DE102019123510B4 DE 102019123510 B4 DE102019123510 B4 DE 102019123510B4 DE 102019123510 A DE102019123510 A DE 102019123510A DE 102019123510 B4 DE102019123510 B4 DE 102019123510B4
Authority
DE
Germany
Prior art keywords
data
write data
write
flag bit
read
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.)
Active
Application number
DE102019123510.3A
Other languages
English (en)
Other versions
DE102019123510A1 (de
Inventor
Beomkyu Shin
Sungkyu PARK
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102019123510A1 publication Critical patent/DE102019123510A1/de
Application granted granted Critical
Publication of DE102019123510B4 publication Critical patent/DE102019123510B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • 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/0625Power saving in storage systems
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/107Programming all cells in an array, sector or block to the same state prior to flash erasing
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1816Testing
    • G11B2020/1823Testing wherein a flag is set when errors are detected or qualified
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • 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
    • G11C2029/0409Online test
    • 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
    • G11C2029/0411Online error correction
    • 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
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5646Multilevel memory with flag bits, e.g. for showing that a "first page" of a word line is programmed but not a "second page"
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5647Multilevel memory with bit inversion arrangement
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

Nichtflüchtige Speichervorrichtung (110, 110a, 210_1-210_n) aufweisend:einen Speicherzellenblock (111), der eine Mehrzahl an Speicherzellen (MCS) umfasst; undeinen peripheren Block (112, 112a), der eingerichtet ist, erste Schreibdaten (WD1), die in die Speicherzellen (MCS) geschrieben werden sollen, von einer externen Vorrichtung (120) zu empfangen und einen Vergleichs- und Schreibvorgang an den Speicherzellen (MCS) unter Verwendung der ersten Schreibdaten (WD1) durchzuführen,wobei der periphere Block (112, 112a) den Vergleichs- und Schreibvorgang durchführt, indem er:Lesedaten (RD1) aus den Speicherzellen (MCS) ausliest;die ersten Schreibdaten (WD1) invertiert, um zweite Schreibdaten (WD2) zu erzeugen;ein erstes Flag-Bit zu den ersten Schreibdaten (WD1) hinzufügt, um dritte Schreibdaten zu erzeugen, und ein zweites Flag-Bit zu den zweiten Schreibdaten (WD2) hinzufügt, um vierte Schreibdaten zu erzeugen;einen Verstärkungsvorgang an jeweils den dritten Schreibdaten und vierten Schreibdaten durchführt, um fünfte Schreibdaten (WD3) und sechste Schreibdaten (WD4) zu erzeugen; unddie Lesedaten (RD1) mit jeweils den fünften Schreibdaten (WD3) und den sechsten Schreibdaten (WD4) vergleicht und entweder die fünften oder die sechsten Schreibdaten (WD5) in die Speicherzellen (MCS) basierend auf einem Ergebnis des Vergleichs schreibt,wobei der periphere Block (112, 112a) den Vergleichs- und Schreibvorgang durchführt, indem er die Lesedaten (RD1) ausliest, die Lesedaten (RD1) mit den fünften Schreibdaten (WD3) vergleicht, die Lesedaten (RD1) mit den sechsten Schreibdaten (WD4) vergleicht und entweder die fünften oder die sechsten Schreibdaten (WD5) schreibt.

Description

  • Hintergrund
  • 1. Technisches Gebiet
  • Ausführungsformen des vorliegend offenbarten erfinderischen Konzepts betreffen einen Halbleiterspeicher und insbesondere eine nichtflüchtige Speichervorrichtung, die einen Vergleichs- und Schreibvorgang durchführt, und ein Speichersystem, das die nichtflüchtige Speichervorrichtung umfasst.
  • 2. Beschreibung des Stands der Technik
  • Ein Speichersystem kann eine nichtflüchtige Speichervorrichtung umfassen, die darin gespeicherte Daten aufbewahrt, selbst nachdem keine Leistung mehr zugeführt wird. Beispiele für nichtflüchtige Speichervorrichtungen umfassen einen Flashspeicher, einen Phase-Change-Speicher, einen ferroelektrischen Speicher, einen Magnetspeicher und einen resistiven Speicher.
  • Von den nichtflüchtigen Speichervorrichtungen weist der Flashspeicher eine Lösch-vor-Schreib-Eigenschaft auf, bei der in einer größeren Einheit vor einem Schreibvorgang zuerst ein Löschvorgang zur Durchführung des Schreibvorgangs durchgeführt wird. Aufgrund der Lösch-vor-Schreib-Eigenschaft unterstützt der Flashspeicher keinen Überschreibvorgang.
  • Der Phase-Change-Speicher, der ferroelektrische Speicher, der Magnetspeicher und der resistive Speicher unterstützen den Überschreibvorgang. Allerdings kann der Überschreibvorgang eine große Menge an Leistung verbrauchen. Ferner kann die Unterstützung eines Überschreibvorgangs eine Integrität von Daten reduzieren, die in einer nichtflüchtigen Speichervorrichtung gespeichert sind.
  • Dementsprechend ist es erforderlich, einen Leistungsverbrauch zu reduzieren, wenn ein Überschreibvorgang in einer nichtflüchtigen Speichervorrichtung durchgeführt wird, und eine Datenintegrität innerhalb der nichtflüchtigen Speichervorrichtung als Folge des Überschreibvorgangs zu verstärken.
  • US 9 778 985 B1 offenbart ein Verfahren zum Betreiben einer Speichervorrichtung umfassend: Empfangen erster Daten; Erzeugen erster gekennzeichneter Daten durch Hinzufügen eines ersten Flags zu den ersten Daten; Erzeugen erster kodierter gekennzeichneter Daten durch Ausführen einer Kodierungsoperation an den ersten gekennzeichneten Daten; Ausführen einer ersten Schreiboperation zum Speichern der ersten kodierten gekennzeichneten Daten in einer Zielposition eines Phasenänderungsspeicherbereichs; Bestimmen, ob die erste Schreiboperation erfolgreich ist oder fehlschlägt; Erzeugen von zweiten gekennzeichneten Daten durch Hinzufügen eines zweiten Flags zu zweiten Daten, die durch Invertieren der ersten Daten erhalten wurden, wenn bestimmt wird, dass die erste Schreiboperation fehlschlägt; Erzeugen von zweiten kodierten gekennzeichneten Daten durch Ausführen einer Kodieroperation an den zweiten gekennzeichneten Daten; und Ausführen einer zweiten Schreiboperation zum Speichern der zweiten kodierten gekennzeichneten Daten in der Zielposition.
  • Kurzfassung
  • Ausführungsformen des erfinderischen Konzepts sind definiert in den beiliegenden Ansprüchen. Mindestens eine Ausführungsform des erfinderischen Konzepts schafft eine nichtflüchtige Speichervorrichtung, die eine Datenintegrität in einem Lesevorgang verstärkt, während ein Leistungsverbrauch bei einem Schreibvorgang und einem Speichersystem, das eine nichtflüchtige Speichervorrichtung umfasst, reduziert wird.
  • Gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts umfasst eine nichtflüchtige Speichervorrichtung einen Speicherzellenblock, der eine Mehrzahl von Speicherzellen umfasst, und einen peripheren Block, der erste Schreibdaten, die in die Speicherzellen geschrieben werden sollen, von einer externen Vorrichtung empfängt, und der einen Vergleichs- und Schreibvorgang in den Speicherzellen unter Verwendung der ersten Schreibdaten durchführt. Der periphere Block führt den Vergleichs- und Schreibvorgang durch, indem er Lesedaten aus den Speicherzellen ausliest, die ersten Schreibdaten invertiert, um zweite Schreibdaten zu erzeugen, ein erstes Flag-Bit zu den ersten Schreibdaten hinzufügt, um dritte Schreibdaten zu erzeugen, und ein zweites Flag-Bit zu den zweiten Schreibdaten hinzufügt, um vierte Schreibdaten zu erzeugen, einen Verstärkungsvorgang an jeweils den dritten Schreibdaten und den vierten Schreibdaten durchführt, um fünfte Schreibdaten und sechste Schreibdaten zu erzeugen, und indem er die Lesedaten mit jeweils den fünften Schreibdaten und den sechsten Schreibdaten vergleicht, und, basierend auf einem Ergebnis des Vergleichs, die fünften oder sechsten Schreibdaten in die Speicherzellen schreibt.
  • Gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts umfasst ein Speichersystem eine nichtflüchtige Speichervorrichtung, die eine Mehrzahl von Speicherzellen umfasst, und einen Controller, der einen Vergleichs- und Schreibvorgang in den Speicherzellen unter Verwendung der ersten Schreibdaten, die in die Speicherzellen geschrieben werden sollen, durchführt. Der Controller führt den Vergleichs- und Schreibvorgang durch, indem er Lesedaten aus Speicherzellen ausliest, die ersten Schreibdaten invertiert, um zweite Schreibdaten zu erzeugen, ein erstes Flag-Bit zu den ersten Schreibdaten hinzufügt, um dritte Schreibdaten zu erzeugen, und ein zweites Flag-Bit zu den zweiten Schreibdaten hinzufügt, um vierte Schreibdaten zu erzeugen, einen Verstärkungsvorgang an jeweils den dritten Schreibdaten und den vierten Schreibdaten durchführt, um fünfte Schreibdaten und sechste Schreibdaten zu erzeugen, und indem er die Lesedaten mit jeweils den fünften Schreibdaten und den sechsten Schreibdaten vergleicht, und, basierend auf einem Ergebnis des Vergleichs, die fünften oder sechsten Schreibdaten in die Speicherzellen schreibt.
  • Gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts umfasst ein Speichersystem eine nichtflüchtige Speichervorrichtung, die eine Mehrzahl von Speicherzellen umfasst, und einen Controller, der einen Vergleichs- und Schreibvorgang in den Speicherzellen unter Verwendung der ersten Schreibdaten, die in die Speicherzellen geschrieben werden sollen, durchführt. Der Controller führt den Vergleichs- und Schreibvorgang durch, indem er Lesedaten aus den Speicherzellen ausliest, eine erste Codierung an den ersten Schreibdaten durchführt, um zweite Schreibdaten zu erzeugen, eine zweite Codierung an den zweiten Schreibdaten durchführt, um dritte Schreibdaten zu erzeugen, die dritten Schreibdaten invertiert, um vierte Schreibdaten zu erzeugen, ein erstes Flag-Bit zu den dritten Schreibdaten hinzufügt, um fünfte Schreibdaten zu erzeugen, und ein zweites Flag-Bit zu den vierten Schreibdaten hinzufügt, um sechste Schreibdaten zu erzeugen, und die Lesedaten mit jeweils den fünften Schreibdaten und den sechsten Schreibdaten vergleicht, und, basierend auf einem Ergebnis des Vergleichs, die fünften oder die sechsten Schreibdaten in die Speicherzellen schreibt.
  • Kurze Beschreibung der Figuren
  • Das erfinderische Konzept wird durch die detaillierte Beschreibung von beispielhaften Ausführungsformen desselben unter Bezugnahme auf die beigefügten Zeichnungen ersichtlich.
    • 1 ist ein Blockdiagramm, das ein Speichersystem gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts darstellt.
    • 2 ist ein Flussdiagramm, das mit einem Betriebsverfahren eines Speichersystems aus 1 gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts assoziiert ist.
    • 3 stellt ein Beispiel dar, bei dem eine nichtflüchtige Speichervorrichtung aus 1 einen Vergleichs- und Schreibvorgang durchführt, um erste Schreibdaten zu schreiben, die von einem Controller übertragen werden.
    • 4 stellt ein Beispiel dar, bei dem eine nichtflüchtige Speichervorrichtung einen Lesevorgang zum Auslesen von Daten gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts durchführt.
    • 5 ist ein Blockdiagramm, das ein Speichersystem gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts darstellt.
    • 6 ist ein Flussdiagramm, das ein Betriebsverfahren eines Speichersystems aus 5 gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts darstellt.
    • 7 stellt ein Beispiel dar, bei dem ein Controller aus 5 einen Vergleichs- und Schreibvorgang durchführt, um Daten in eine nichtflüchtige Speichervorrichtung zu schreiben.
    • 8 stellt ein Beispiel dar, bei dem ein Controller aus 5 einen Lesevorgang durchführt, um Daten aus einer nichtflüchtigen Speichervorrichtung auszulesen.
    • 9 ist ein Flussdiagramm, das ein anderes Beispiel für ein Betriebsverfahren eines Speichersystems aus 5 darstellt.
    • 10 stellt ein Beispiel dar, bei dem ein Controller aus 5 einen Vergleichs- und Schreibvorgang durchführt, um Daten in eine nichtflüchtige Speichervorrichtung zu schreiben.
    • 11 stellt ein Beispiel dar, bei dem ein Controller aus 5 einen Lesevorgang durchführt, um Daten aus einer nichtflüchtigen Speichervorrichtung auszulesen.
    • 12 ist ein Flussdiagramm, das ein anderes Beispiel eines Betriebsverfahrens eines Speichersystems aus 5 gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts darstellt.
    • 13 stellt ein Beispiel dar, bei dem ein Controller aus 5 einen Vergleichs- und Schreibvorgang durchführt, um Daten in eine nichtflüchtige Speichervorrichtung zu schreiben.
    • 14 stellt ein Beispiel dar, bei dem ein Controller aus 5 einen Lesevorgang durchführt, um Daten aus einer nichtflüchtigen Speichervorrichtung auszulesen.
    • 15 stellt ein Speichersystem gemäß eines Anwendungsbeispiels des erfinderischen Konzepts dar.
  • Detaillierte Beschreibung beispielhafter Ausführungsformen
  • Nachfolgend werden beispielhafte Ausführungsformen des erfinderischen Konzepts in Verbindung mit beigefügten Zeichnungen beschrieben. Nachstehend werden Details, wie detaillierte Konfigurationen und Aufbau gegeben, um einen Leser dabei zu unterstützen, Ausführungsformen des erfinderischen Konzepts zu verstehen. Daher können vorliegend beschriebene Ausführungsformen auf verschiedene Art und Weise verändert oder modifiziert werden, ohne von Ausführungsformen des erfinderischen Konzepts abzuweichen. Die gleichen Bezugszeichen geben das gleiche Teil in allen beigefügten Zeichnungen an.
  • 1 ist ein Blockdiagramm, das ein Speichersystem 100 gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts darstellt. In 1 umfasst das Speichersystem 100 eine nichtflüchtige Speichervorrichtung 110 und einen Controller 120 (z. B. eine Steuerschaltung). Die nichtflüchtige Speichervorrichtung 110 kann einen Phase-Change-Speicherumfassen, einen ferroelektrischen Speicher, einen Magnetspeicher oder einen resistiven Speicher.
  • Obwohl eine Leistung abgeschaltet wird, kann die nichtflüchtige Speichervorrichtung 110 darin gespeicherte Daten behalten. Die nichtflüchtige Speichervorrichtung 110 kann als Hauptspeichervorrichtung (z. B. einen Hauptspeicher) oder als Zusatzspeichervorrichtung in einem Host-System, das das Speichersystem 100 umfasst, verwendet werden.
  • Die nichtflüchtige Speichervorrichtung 110 kann einen Befehl CMD und eine Adresse ADDR von dem Controller 120 empfangen. Die nichtflüchtige Speichervorrichtung 110 kann Steuersignale CTRL und Daten „DATA“ mit dem Controller 120 austauchen. Die nichtflüchtige Speichervorrichtung 110 kann basierend auf dem Befehl CMD und den Steuersignalen CTRL auf Speicherzellen zugreifen, auf die durch die Adresse ADDR verwiesen wurde. Die nichtflüchtige Speichervorrichtung 110 kann die Daten „DATA“, die ein Ergebnis eines Lesevorgangs von Zugriffsvorgängen sind, mit dem Controller 120 austauschen, oder sie kann Daten „DATA“ für einen Schreibvorgang der Zugriffsvorgänge mit dem Controller 120 austauschen. Zum Beispiel kann die nichtflüchtige Speichervorrichtung 110 Daten, die von dem Controller 120 empfangen wurden, in die Speicherzellen schreiben, Daten aus den Speicherzellen auslesen und die Lesedaten an den Controller 120 ausgeben.
  • Die nichtflüchtige Speichervorrichtung 110 umfasst einen Speicherzellenblock 111 und einen peripheren Block 112. Der Speicherzellenblock 111 kann Speicherzellen umfassen (z. B. nicht-flüchtige Speicherzellen). Die Speicherzellen können in Zeilen und Spalten angeordnet sein. Auf die Speicherzellen, die in Zeilen und Spalten angeordnet sind, können in Einheiten verschiedener Größen zugegriffen werden. Der Zugriffsvorgang auf die Speicherzellen kann einen Schreibvorgang und einen Lesevorgang umfassen. Der Schreibvorgang kann einen Set-Vorgang bzw. eine Set-Operation und einen Reset-Vorgang bzw. eine Reset-Operation umfassen.
  • Der periphere Block 112 ist eingerichtet, auf den Speicherzellenblock 111 zuzugreifen. Der periphere Block 112 umfasst einen Leseblock 113, einen Inversionsblock 114, ein Flag-Bit-Hinzufügungsblock 115, einen Vergleichs- und Schreibblock 116, und einen Flag-Bit-Erfassungsblock 117. In einer beispielhaften Ausführungsform befindet sich der Speicherzellenblock 111 in einem ersten Bereich der nichtflüchtigen Speichervorrichtung 110, und der periphere Block 112 befindet sich in einem zweiten Bereich der nichtflüchtigen Speichervorrichtung 110, die sich von der ersten Bereich unterscheidet. Der erste Bereich kann im Wesentlichen größer sein als der zweite Bereich, sodass die nichtflüchtige Speichervorrichtung 110 hauptsächlich von Speicherzellen belegt ist. Der periphere Block 112 kann von einer oder mehreren Logikschaltungen implementiert werden.
  • Ansprechend auf den Befehl CMD zur Anforderung des Lesevorgangs kann der Leseblock 113 den Lesevorgang an ausgewählten Speicherzellen, auf die durch die Adresse ADDR verwiesen wurde, von den Speicherzellen des Speicherzellenblocks 111 durchführen. Zum Beispiel kann der Leseblock 113 Daten durch Anlegen von verschiedene Spannungen, verschiedenen Stromstärken, oder einer Kombination aus verschiedenen Spannungen und verschiedenen Stromstärken an ausgewählte Speicherzellen auslesen.
  • Der Inversionsblock 114 ist eingerichtet, Eingabedaten zu invertieren und auszugeben. In einer beispielhaften Ausführungsform wird der Inversionsblock 114 durch einen oder mehrere Wechselrichter oder Wechselrichterschaltungen implementiert. Zum Beispiel kann der Inversionsblock 114 die Daten „DATA“ invertieren, die von dem Controller 120 an die nichtflüchtige Speichervorrichtung 110 übertragen werden, oder der Inversionsblock 114 kann Daten in der nichtflüchtigen Speichervorrichtung 110 invertieren, und kann die invertierten Daten dem Controller 120 als Daten „DATA“ zur Verfügung stellen.
  • Der Flag-Bit-Hinzufügungsblock 115 kann ein Flag-Bit oder mindestens ein Kopie-Flag-Bit zu den Daten „DATA“ hinzufügen, die von dem Controller 120 zur Verfügung gestellt werden, oder Daten, die von dem Inversionsblock 114 invertiert wurden. Zum Beispiel kann der Flag-Bit-Hinzufügungsblock 115 ein Flag-Bit hinzufügen, das angibt, ob eine Inversion durchgeführt wurde, und kann ferner mindestens ein identisches Kopie-Flag-Bit hinzufügen. In einer Ausführungsform wird der Flag-Bit-Hinzufügungsblock 115 von einer Logikschaltung implementiert. Zum Beispiel kann der Flag-Bit-Hinzufügungsblock 115 N-Bit-Daten in M-Bit-Daten konvertieren, wobei M größer ist als N.
  • In einer beispielhaften Ausführungsform führt der Vergleichs- und Schreibblock 116 ansprechend auf den Befehl CMD zur Anforderung des Schreibvorgangs einen Vergleichs- und Schreibvorgang an ausgewählten Speicherzellen durch, auf die von der Adresse ADDR verwiesen wurde, von den Speicherzellen des Speicherzellenblocks 111. In einer beispielhaften Ausführungsform erzeugt der Vergleichs- und Schreibblock 116 zwei oder mehr Kandidatendaten aus den Daten „DATA“, die von dem Controller 120 zur Verfügung gestellt wurden, und vergleicht die zwei oder mehr Kandidatendaten mit existierenden Daten, die in den ausgewählten Speicherzellen gespeichert sind. In einer beispielhaften Ausführungsform wird der Vergleichs- und Schreibblock 116 durch eine Logikschaltung implementiert.
  • Der Vergleichs- und Schreibblock 116 kann alle der zwei oder mehr Kandidatendaten mit existierenden Daten vergleichen. Der Vergleichs- und Schreibblock 116 kann die Anzahl an Positionen zählen, an denen sich die entsprechenden Bits von jeweiligen Kandidatendaten und den existierenden Daten unterscheiden. Der Vergleichs- und Schreibblock 116 kann Vergleichskandidatendaten, die der niedrigeren Zahl entsprechen, in die ausgewählten Speicherzellen schreiben.
  • In einer beispielhaften Ausführungsform wählt der Vergleichs- und Schreibblock 116 Kandidatendaten aus, die einer Zahl kleiner als der Hälfte der Anzahl an Bits von jeden einzelnen Kandidatendaten entsprechen, und schreibt die ausgewählten Kandidatendaten in die ausgewählten Speicherzellen. Der Vergleichs- und Schreibblock 116 kann die ausgewählten Kandidatendaten in die ausgewählten Speicherzellen schreiben, indem er den ausgewählten Speicherzellen verschiedene Spannungen, verschiedene Stromstärken, oder eine Kombination aus verschiedenen Spannungen und verschiedenen Stromstärken zur Verfügung stellt. Zum Beispiel falls existierenden Daten und Kandidatendaten 8-Bit-Daten sind, erste Kandidatendaten von den Kandidatendaten 3 Bits aufweisen, die sich von den existierenden Daten unterscheiden, und zweite Kandidatendaten von den Kandidatendaten 5 Bits aufweisen, die sich von den existierenden Daten unterscheiden, so würden die ersten Kandidatendaten ausgewählt werden.
  • Der Flag-Bit-Erfassungsblock 117 kann ein Flag-Bit oder Flag-Bits aus Daten erfassen und entfernen, die aus den ausgewählten Speicherzellen des Speicherzellenblocks 111 durch den Leseblock 113 ausgelesen werden. In einer Ausführungsform wird der Flag-Bit-Erfassungsblock 117 durch eine Logikschaltung implementiert. Der Flag-Bit-Erfassungsblock 117 kann dem Inversionsblock 114 oder dem Controller 120 Daten basierend auf einem Wert eines Flag-Bits oder Werten von Flag-Bits zur Verfügung stellen. Zum Beispiel können Flag-Bit(s) angeben, ob die Daten invertiert werden müssen, bevor sie dem Controller 120 zur Verfügung gestellt werden.
  • Der Controller 120 kann der nichtflüchtigen Speichervorrichtung 110 ermöglichen, den Schreibvorgang oder den Lesevorgang durchzuführen. Der Controller 120 kann den Befehl CMD und die Adresse ADDR an die nichtflüchtige Speichervorrichtung 110 übertragen. Der Controller 120 kann die Steuersignale CTRL und die Daten „DATA“ mit der nichtflüchtigen Speichervorrichtung 110 austauschen. Der Controller 120 kann der nichtflüchtigen Speichervorrichtung 110 ermöglichen, den Schreibvorgang, den Lesevorgang oder einen Prüfvorgang durchzuführen.
  • Der Controller 120 kann einen Codierungsblock 121 umfassen (z. B. einen Codierer oder eine Codierungsschaltung) und einen Decodierungsblock 122 (z. B. einen Decodierer oder eine Decodierungsschaltung). Der Codierungsblock 121 kann eine Fehlerkorrekturcodierung an Daten durchführen, die der Controller 120 in dem Schreibvorgang an die nichtflüchtige Speichervorrichtung 110 übertragen wird. Der Codierungsblock 121 kann eine Parität zu Originaldaten hinzufügen, indem er eine Fehlerkorrekturcodierung durchführt. Die Parität kann redundante Information sein, die durch Durchführen eines Vorgangs an den Originaldaten erzeugt wurden. Die Parität kann einen oder mehr Bits umfassen und kann eine Fehlerkorrekturfunktion vorsehen. Zum Beispiel kann ein Fehlerkorrekturvorgang an Daten durchgeführt werden, die die Parität haben, um die Originaldaten wiederherzustellen. Die Daten „DATA“, die durch den Codierungsblock 121 codiert sind, können an die nichtflüchtige Speichervorrichtung 110 übertragen werden.
  • Der Decodierungsblock 122 kann eine Fehlerkorrekturdecodierung an den Daten „DATA“ durchführen, wenn der Controller 120 die nichtflüchtige Speichervorrichtung 110 in dem Lesevorgang empfängt. Indem eine Fehlerkorrekturdecodierung unter Verwendung einer Parität der Daten „DATA“ durchgeführt wird, kann der Decodierungsblock 122 Fehler aus den empfangenen Daten „DATA“ korrigieren und kann die Parität entfernen, wodurch die Originaldaten wiederhergestellt werden.
  • 2 ist ein Flussdiagramm, das ein Betriebsverfahren des Speichersystems 100 aus 1 gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts darstellt. In 1 und 2 überträgt der Controller 120 in einem Schritt bzw. Vorgang S110 einen ersten Befehl CMD1, eine erste Adresse ADDR1 und erste Daten DATA1 an die nichtflüchtige Speichervorrichtung 110. Zum Beispiel kann der erste Befehl CMD1 ein Schreibbefehl sein. Die ersten Daten DATA1 können Daten sein, die in die nichtflüchtige Speichervorrichtung 110 geschrieben werden sollen.
  • In einer beispielhaften Ausführungsform führt die nichtflüchtige Speichervorrichtung 110 ansprechend auf den ersten Befehl CMD 1 den Vergleichs- und Schreibvorgang durch. Der Vergleichs- und Schreibvorgang kann durch den Schritt bzw. Vorgang S 115 bis Vorgang S140 durchgeführt werden.
  • In Vorgang S115 des Vergleichs- und Schreibvorgangs liest die nichtflüchtige Speichervorrichtung 110 Daten aus (z. B. existierende Daten), die in Speicherzellen gespeichert sind, die von der ersten Adresse ADDR1 von den Speicherzellen des Speicherzellenblocks 111 ausgewählt werden.
  • In Vorgang S120 des Vergleichs- und Schreibvorgangs invertiert die nichtflüchtige Speichervorrichtung 110 die ersten Daten DATA1. Auch fügt die nichtflüchtige Speichervorrichtung 110 Flag-Bits jeweils zu den ersten Daten DATA1 und den invertierten Daten hinzu. Ein erstes Flag-Bit (z. B. „1“ oder „0“), das die Nicht-Inversion angibt, wird zu den ersten Daten DATA1 hinzugefügt. Ein zweites Flag-Bit (z. B. „0“ oder „1“), das die Inversion angibt, wird zu den invertierten Daten hinzugefügt.
  • In Vorgang S 125 des Vergleichs- und Schreibvorgangs fügt die nichtflüchtige Speichervorrichtung 110 ein Kopie-Flag-Bit hinzu. Zum Beispiel kann die nichtflüchtige Speichervorrichtung 110 mindestens ein erstes Kopie-Flag-Bit, das mit dem ersten Flag-Bit, das eine Nicht-Inversion angibt, identisch ist, zu den ersten Daten DATA1 hinzufügen. Auch kann die nichtflüchtige Speichervorrichtung 110 mindestens ein zweites Kopie-Flag-Bit, das mit dem zweiten Flag-Bit, das die Inversion angibt, identisch ist, zu den invertierten Daten hinzufügen. Das Hinzufügen der Kopie-Flag-Bits kann als Verstärkungsvorgang bezeichnet werden.
  • Die Hinzufügung des Kopie-Flag-Bits kann eine Zuverlässigkeit des Flag-Bits erhöhen und kann eine Integrität der ersten Daten DATA1 verstärken, während die ersten Daten DATA1 in der nichtflüchtigen Speichervorrichtung 110 gelesen und geschrieben werden.
  • In einer beispielhaften Ausführungsform werden erste Kandidatendaten erzeugt, indem das erste Flag-Bit hinzugefügt wird, und das mindestens eine erste Kopie-Flag-Bit zu den ersten Daten DATA1 hinzugefügt wird. Die zweiten Kandidatendaten können erzeugt werden, indem das zweite Flag-Bit und das mindestens eine zweite Kopie-Flag-Bit zu den invertierten Daten hinzugefügt wird.
  • In Vorgang S130 des Vergleichs- und Schreibvorgangs vergleicht die nichtflüchtige Speichervorrichtung 110 die existierenden Daten mit den ersten Kandidatendaten und den zweiten Kandidatendaten. Zum Beispiel kann die nichtflüchtige Speichervorrichtung 110 die Anzahl an Positionen berechnen, an denen sich die entsprechenden Bits der existierenden Daten und die ersten Kandidatendaten unterscheiden, das heißt, einen ersten Hamming-Abstand. Auch kann die nichtflüchtige Speichervorrichtung 110 die Anzahl an Positionen berechnen, an denen sich die entsprechenden Bits der existierenden Daten und die zweiten Kandidatendaten unterscheiden, das heißt, einen zweiten Hamming-Abstand.
  • In Vorgang S135 des Vergleichs- und Schreibvorgangs wählt die nichtflüchtige Speichervorrichtung 110 basierend auf einem Ergebnis des Vergleichs die ersten Kandidatendaten oder die zweiten Kandidatendaten aus. In einer beispielhaften Ausführungsform wählt die nichtflüchtige Speichervorrichtung 110 Kandidatendaten mit einem kleineren Hamming-Abstand bezüglich der existierenden Daten aus. In Vorgang S140 des Vergleichs- und Schreibvorgangs schreibt die nichtflüchtige Speichervorrichtung 110 die ausgewählten Kandidatendaten in die Speicherzellen, die von der ersten Adresse ADDR1 ausgewählte wurden. In einer beispielhaften Ausführungsform umfasst das Schreiben der ausgewählten Kandidatendaten das vollständige Überschreiben existierender Daten in den Speicherzellen, die durch die erste Adresse ADDR1 ausgewählt wurden, mit den ausgewählten Kandidatendaten. Dieses erste Schema kann ein üblicher Schreibvorgang sein. In einer anderen Ausführungsform umfasst das Schreiben der ausgewählten Kandidatendaten nur das Überschreiben von Bits der existierenden Daten mit anderen, entsprechenden Bits der ausgewählten Kandidatendaten. Zum Beispiel falls die existierenden Daten 8-Bit-Daten sind und sich nur das erste Bit der existierenden Daten von den ausgewählten Kandidatendaten unterscheidet, wird nur das erste Bit der existierenden Daten mit dem ersten Bit der Kandidatendaten geschrieben. Dieses zweite Schema kann der Vergleichs- und Schreibvorgang sein, mit dem sich eine beispielhafte Ausführungsform befasst, wie in dem Vergleichsvorgang des Vorgangs S130 gezeigt.
  • Gemäß dem Vergleichs- und Schreibvorgang werden Kandidatendaten, die eine kleinere Differenz (z. B. einen kleinen Hamming-Abstand) zu den existierenden Daten von den ersten und zweiten Kandidatendaten aufweisen, die aus den ersten Daten DATA1 erzeugt wurden, in die nichtflüchtige Speichervorrichtung 110 geschrieben. Dementsprechend kann die Anzahl an Set-Vorgängen oder Reset-Vorgängen, die bei Speicherzellen erforderlich sind, in denen die existierenden Daten gespeichert sind, sinken, und so kann ein Leistungsverbrauch des Schreibvorgangs reduziert werden. Zum Beispiel kann ein Set-Vorgang verwendet werden, um ein Bit der existierenden Daten mit einer 1 zu überschreiben, und ein Reset-Vorgang kann verwendet werden, um ein Bit der existierenden Daten mit einer 0 zu überschreiben.
  • In Vorgang S145 überträgt der Controller 120 einen zweiten Befehl CMD2 und eine zweite Adresse ADDR2 an die nichtflüchtige Speichervorrichtung 110. Zum Beispiel kann der zweite Befehl CMD2 ein Lesebefehl sein.
  • Die nichtflüchtige Speichervorrichtung 110 führt den Lesevorgang ansprechend auf den zweiten Befehl CMD2 durch. Der Lesevorgang kann durch Vorgang S150 bis Vorgang S160 durchgeführt werden. In Vorgang S150 des Lesevorgangs liest die nichtflüchtige Speichervorrichtung 110 Speicherzellen aus, die von der zweiten Adresse ADDR2 ausgewählt wurden.
  • In Vorgang S155 des Lesevorgangs erfasst die nichtflüchtige Speichervorrichtung 110 ein Flag-Bit und mindestens ein Kopie-Flag-Bit von den Lesedaten. Die nichtflüchtige Speichervorrichtung 110 wählt die Lesedaten oder invertierten Daten der Lesedaten basierend auf dem Flag-Bit und dem mindestens einen Kopie-Flag-Bit aus. Zum Beispiel falls das Flag-Bit und das mindestens eine Kopie-Flag-Bit angeben, dass Daten der Lesedaten nicht invertiert sind, so werden die Lesedaten ausgewählt. Zum Beispiel falls das Flag-Bit und das mindestens eine Kopie-Flag-Bit angeben, dass Daten der Lesedaten invertiert sind, so werden die Lesedaten invertiert, um die invertierten Daten zu erzeugen und die invertierten Daten werden ausgewählt.
  • In Vorgang S160 des Lesevorgangs entfernt die nichtflüchtige Speichervorrichtung 110 das Flag-Bit und das mindestens eine Kopie-Flag-Bit von den ausgewählten Daten und überträgt resultierende Daten an den Controller 120 als zweite Daten DATA2.
  • Wie oben beschrieben, kann die nichtflüchtige Speichervorrichtung 110 oder das Speichersystem 100 gemäß einer Ausführungsform des erfinderischen Konzepts einen Leistungsverbrauch reduzieren, indem der Vergleichs- und Schreibvorgang durchgeführt wird. Auch kann das Speichersystem 100 oder die nichtflüchtige Speichervorrichtung 110 gemäß einer Ausführungsform des erfinderischen Konzepts ein Flag-Bit und eine Integrität von Originaldaten verstärken, indem ein Kopie-Flag-Bit hinzugefügt wird.
  • 3 zeigt ein Beispiel, in dem eine nichtflüchtige Speichervorrichtung 110 aus 1 einen Vergleichs- und Schreibvorgang durchführt, um erste Schreibdaten WD1 zu schreiben, die von dem Controller 120 übertragen werden. In 1 bis 3 entsprechen die ersten Schreibdaten WD1, die in die nichtflüchtige Speichervorrichtung 110 eingegeben wurden, den ersten Daten DATA1 aus Vorgang S110 aus 2.
  • In Vorgang S 115 aus 2 liest der Leseblock 113 erste Lesedaten RD1 aus ausgewählten Speicherzellen MCS des Speicherzellenblocks 111 aus. Die ersten Lesedaten RD1 werden dem Vergleichs- und Schreibblock 116 zur Verfügung gestellt, ohne durch den Flag-Bit-Erfassungsblock 117 zu passieren.
  • In Vorgang S 120 und Vorgang S125 aus 2 werden die ersten Schreibdaten WD1 dem Inversionsblock 114 und dem Flag-Bit-Hinzufügungsblock 115 zur Verfügung gestellt. Der Inversionsblock 114 invertiert die ersten Schreibdaten WD1, um zweite Schreibdaten WD2 zu erzeugen. Die zweiten Schreibdaten WD2 werden dem Flag-Bit-Hinzufügungsblock 115 zur Verfügung gestellt.
  • Der Flag-Bit-Hinzufügungsblock 115 umfasst einen ersten Flag-Bit-Hinzufügungsblock 115_1 und einen zweiten Flag-Bit-Hinzufügungsblock 115_2. Der erste Flag-Bit-Hinzufügungsblock 115_1 empfängt die zweiten Schreibdaten WD2 von dem Inversionsblock 114. Der erste Flag-Bit-Hinzufügungsblock 115_1 fügt Flag-Bits zu den zweiten Schreibdaten WD2 hinzu, um dritte Schreibdaten WD3 zu erzeugen.
  • Zum Beispiel kann der erste Flag-Bit-Hinzufügungsblock 115_1 ein Flag-Bit (z. B. „1“ oder „0“) hinzufügen, das die Inversion der zweiten Schreibdaten WD2 angibt. Auch kann der erste Flag-Bit-Hinzufügungsblock 115_1 ferner mindestens ein identisches Flag-Bit (z. B. ein Kopie-Bit) zu den zweiten Schreibdaten WD2 hinzufügen. Die dritten Schreibdaten WD3 können Flag-Bits wie „111“ oder „000“ umfassen. Flag-Bits können in den dritten Schreibdaten WD3 sequenziell angeordnet sein, oder sie können verteilt und in den dritten Schreibdaten WD3 angeordnet sein.
  • Der zweite Flag-Bit-Hinzufügungsblock 115_2 empfängt die ersten Schreibdaten WD 1. Der zweite Flag-Bit-Hinzufügungsblock 115_2 fügt Flag-Bits zu den ersten Schreibdaten WD1 hinzu, um vierte Schreibdaten WD4 zu erzeugen.
  • Zum Beispiel kann der zweite Flag-Bit-Hinzufügungsblock 115_2 ein Flag-Bit (z. B. „0“ oder „1“), das Originaldaten (d. h., nicht invertiert) angibt, zu den ersten Schreibdaten WD1 hinzufügen. Auch kann der erste Flag-Bit-Hinzufügungsblock 115_2 ferner mindestens ein identisches Flag-Bit (z. B. ein Kopie-Bit) zu den ersten Schreibdaten WD1 hinzufügen. Die vierten Schreibdaten WD4 können Flag-Bits wie „000“ oder „111“ umfassen. Flag-Bits können in den vierten Schreibdaten WD4 sequenziell angeordnet sein, oder sie können verteilt und in den vierten Schreibdaten WD4 angeordnet sein. In einer beispielhaften Ausführungsform speichert die nichtflüchtige Speichervorrichtung 110 Orte der Flag-Bits, sodass der Flag-Bit-Erfassungsblock 117 weiß, welche Bits der Lesedaten als Flag-Bits interpretiert werden sollen. In einer anderen beispielhaften Ausführungsform platziert die nichtflüchtige Speichervorrichtung 110 die Flag-Bits an fixierte (oder vorgegebene) Stellen bzw. Orte, sodass der Flag-Bit-Erfassungsblock 117 weiß, welche Bits der Lesedaten als Flag-Bits interpretiert werden sollen.
  • Der Flag-Bit-Hinzufügungsblock 115 erzeugt die dritten Schreibdaten WD3 und die vierten Schreibdaten WD4. Die dritten Schreibdaten WD3 und die vierten Schreibdaten WD4 können Kandidatendaten sein, die fähig sind, in den Speicherzellenblock 111 geschrieben zu werden. Die dritten Schreibdaten WD3 und die vierten Schreibdaten WD4 sind in dem Vergleichs- und Schreibblock 116 vorgesehen.
  • In Vorgang S130 aus 2 vergleicht der Vergleichs- und Schreibblock 116 die ersten Lesedaten RD1 und die dritten Schreibdaten WD3. Die dritten Schreibdaten WD3 und die ersten Lesedaten RD1 umfassen jeweils Bit-Sequenzen. In dem Fall, in dem ein Bit der dritten Schreibdaten WD3 und ein Bit der ersten Lesedaten RD1 an einer bestimmten Position in der Sequenz von Bits identisch sind, ist ein Set-Vorgang oder ein Reset-Vorgang einer Speicherzelle entsprechend der spezifischen Position bei Schreiben der dritten Schreibdaten WD3 unnötig.
  • In dem Fall, in dem sich ein Bit der dritten Schreibdaten WD3 und ein Bit der ersten Lesedaten RD1 an einer bestimmten Position in der Sequenz von Bits unterscheiden, ist ein Set-Vorgang oder ein Reset-Vorgang einer Speicherzelle entsprechend der spezifischen Position bei Schreiben der dritten Schreibdaten WD3 nötig.
  • Das Speichersystem 100 oder die nichtflüchtige Speichervorrichtung 110 kann die Anzahl an Speicherzellen reduzieren, die den Set-Vorgang oder den Reset-Vorgang erfordern, wodurch ein Leistungsverbrauch während dem Schreibvorgang reduziert wird. Der Vergleichs- und Schreibblock 116 kann die Anzahl an Positionen erfassen, die den Set-Vorgang oder den Reset-Vorgang erfordern, zwischen den ersten Lesedaten RD1 und den dritten Schreibdaten WD3 als erste Differenz erfassen (z. B. einen ersten Hamming-Ab stand).
  • Ebenso kann der Vergleichs- und Schreibblock 116 die ersten Lesedaten RD1 und die vierten Schreibdaten WD4 vergleichen. Der Vergleichs- und Schreibblock 116 kann die Anzahl an Positionen, die den Set-Vorgang oder den Reset-Vorgang erfordern, zwischen den ersten Lesedaten RD1 und den vierten Schreibdaten WD4 als zweite Differenz erfassen (z. B. einen zweiten Hamming-Abstand).
  • In Vorgang S135 aus 2 wählt der Vergleichs- und Schreibblock 116, basierend auf der ersten Differenz und der zweiten Differenz Schreibdaten, die eine kleinere Differenz bezüglich der ersten Lesedaten RD1 aufweisen, aus den dritten und vierten Schreibdaten WD3 und WD4 als fünfte Schreibdaten WD5 aus.
  • In Vorgang S 140 aus 2 schreibt der Vergleichs- und Schreibblock 116 die fünften Schreibdaten WD5 in die ausgewählten Speicherzellen MCS. In einer beispielhaften Ausführungsform umfasst das Schreiben der fünften Daten WD5 nur das Schreiben von Bits der fünften Daten WD5 in die ausgewählten Speicherzellen MCS, die sich von entsprechenden Bits der ersten Lesedaten RD1 unterscheiden. Dementsprechend wird ein Leistungsverbrauch beim Schreiben von Daten in die ausgewählten Speicherzellen MCS reduziert.
  • 4 stellt ein Beispiel dar, in dem die nichtflüchtige Speichervorrichtung 110 einen Lesevorgang zum Auslesen von Daten gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts durchführt. In 1, 2 und 4 liest der Leseblock 113 in Vorgang S150 aus 2 zweite Lesedaten RD2 aus den ausgewählten Speicherzellen MCS aus. Die zweiten Lesedaten RD2 werden dem Flag-Bit-Erfassungsblock 117 zur Verfügung gestellt.
  • In Vorgang S155 und Vorgang S160 aus 2 erfasst der Flag-Bit-Erfassungsblock 117 ein Flag-Bit und mindestens ein Kopie-Flag-Bit von den zweiten Lesedaten RD2. Nachfolgend kann ein Flag-Bit und mindestens ein Kopie-Flag-Bit von Daten, die in dem Lesevorgang ausgelesen wurden, kollektiv als „Flag-Bits“ bezeichnet werden.
  • Der Flag-Bit-Erfassungsblock 117 entfernt die Flag-Bits von den zweiten Lesedaten RD2, um dritte Lesedaten RD3 zu erzeugen. Abhängig von den Flag-Bits gibt der Flag-Bit-Erfassungsblock 117 die dritten Lesedaten RD3 ohne Modifikation aus oder stellt dem Inversionsblock 114 die dritten Lesedaten RD3 zur Verfügung. Zum Beispiel falls die Flag-Bits eine Inversion angeben, gibt der Flag-Bit-Erfassungsblock 117 die dritten Lesedaten RD3 an den Inversionsblock 114 aus und gibt andernfalls die dritten Lesedaten RD3 ohne Modifikation aus.
  • Zum Beispiel kann der Flag-Bit-Erfassungsblock 117 basierend auf den Flag-Bits ein Abstimmen bzw. Voting durchführen. Wenn die Anzahl an Flag-Bits, die Originaldaten (d. h., nicht invertierte) angeben, größer ist als die Anzahl an Flag-Bits, die eine Inversion angeben, gibt die nichtflüchtige Speichervorrichtung 110 die dritten Lesedaten RD3 ohne Benachrichtigung aus.
  • Wenn die Anzahl an Flag-Bits, die Originaldaten angeben, kleiner ist als die Anzahl an Flag-Bits, die eine Inversion angeben, stellt der Flag-Bit-Erfassungsblock 117 die dritten Lesedaten RD3 dem Inversionsblock 114 zur Verfügung. Der Inversionsblock 114 invertiert die dritten Lesedaten RD3, um vierte Lesedaten RD4 zu erzeugen.
  • Die nichtflüchtige Speichervorrichtung 110 kann die vierten Lesedaten RD4 als Ergebnis des Lesevorgangs auswählen und ausgeben.
  • In einem anderen Beispiel führt der Flag-Bit-Erfassungsblock 117 eine einstimmige Bestimmung basierend auf den Flag-Bits durch. Wenn alle Flag-Bits Originaldaten angeben, wählt die nichtflüchtige Speichervorrichtung 110 die dritten Lesedaten RD3 aus und gibt sie aus.
  • Wenn alle Flag-Bits eine Inversion angeben, stellt der Flag-Bit-Erfassungsblock 117 die dritten Lesedaten RD3 dem Inversionsblock 114 zur Verfügung. Die nichtflüchtige Speichervorrichtung 110 kann die vierten Lesedaten RD4, die von dem Inversionsblock 114 ausgegeben wurden, auswählen und ausgeben.
  • In einer beispielhaften Ausführungsform stellt der Flag-Bit-Erfassungsblock 117 die dritten Lesedaten RD3 dem Inversionsblock 114 zur Verfügung, wenn einige Flag-Bits das Original angeben und die anderen die Inversion angeben. Die nichtflüchtige Speichervorrichtung 110 kann sowohl die dritten Lesedaten RD3 als auch die vierten Lesedaten RD4 auswählen und kann die dritten Lesedaten RD3 und die vierten Lesedaten RD4 sequenziell ausgeben.
  • Folglich können die dritten Lesedaten RD3 oder die vierten Lesedaten RD4 gemäß den Flag-Bits ausgegeben werden, und können den zweiten Daten DATA2 in 2 entsprechen. Wie oben beschrieben, kann das Speichersystem 100 gemäß einer Ausführungsform des erfinderischen Konzepts eine Integrität von Daten verstärken, die aus dem Speicherzellenblock 111 ausgelesen wurden, indem Kopie-Bits zu einem Flag-Bit hinzugefügt werden.
  • In 1 bis 4 wird eine Beschreibung unter der Annahme gegeben, dass sich der Codierungsblock 121 und der Decodierungsblock 122 in dem Controller 120 befinden. Allerdings können sich der Codierungsblock 121 und der Decodierungsblock 122 stattdessen in der nichtflüchtigen Speichervorrichtung 110 befinden.
  • 5 ist ein Blockdiagramm, das ein Speichersystem 100a gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts darstellt. In 5 umfasst das Speichersystem 100a eine nichtflüchtige Speichervorrichtung 110a und einen Controller 120a.
  • Wie unter Bezugnahme auf 1 bis 4 beschrieben, kann die nichtflüchtige Speichervorrichtung 110a den Befehl CMD, die Adresse ADDR, die Steuersignale CTRL und die Daten „DATA“ mit dem Controller 120a austauschen. Die nichtflüchtige Speichervorrichtung 110a umfasst den Speicherzellenblock 111 und einen peripheren Block 112a. Eine Konfiguration und ein Betrieb des Speicherzellenblocks 111 kann mit jenen identisch sein, die unter Bezugnahme auf 1 bis 4 beschrieben wurden.
  • Der periphere Block 112a umfasst den Leseblock 113 und einen Schreibblock 118. Wie unter Bezugnahme auf 1 bis 4 beschrieben, führt der Leseblock 113 einen Lesevorgang zum Auslesen von Daten aus den ausgewählten Speicherzellen des Speicherzellenblocks 111 durch. Der Leseblock 113 stellt die Lesedaten an den Controller 120a als Daten „DATA“ zur Verfügung.
  • Der Schreibblock 118 führt den Schreibvorgang zum Schreiben der Daten „DATA“ durch, die von dem Controller 120a in den ausgewählten Speicherzellen des Speicherzellenblocks 111 übertragen wurden. Anders als in der unter Bezugnahme auf 1 bis 4 gegebenen Beschreibung, führt die nichtflüchtige Speichervorrichtung 110a nicht den Vergleichs- und Schreibvorgang ansprechend auf einen Schreibbefehl durch und führt nur den Schreibvorgang ansprechend auf den Schreibbefehl durch. In dieser Ausführungsform werden der Vergleichs- und Schreibvorgang stattdessen von dem Controller 120a durchgeführt.
  • Der Controller 120a kann den Befehl CMD, die Adresse ADDR, die Steuersignale CTRL und die Daten „DATA“ mit der nichtflüchtigen Speichervorrichtung 110a austauschen. Der Controller 120a kann der nichtflüchtigen Speichervorrichtung 110a ermöglichen, den Lesevorgang oder den Schreibvorgang durchzuführen. Wie in der unter Bezugnahme auf 1 bis 4 gegebenen Beschreibung kann der Controller 120a den Vergleichs- und Schreibvorgang in der nichtflüchtigen Speichervorrichtung 110a durchführen. Der Controller 120a kann einen Leistungsverbrauch bei dem Schreibvorgang reduzieren, indem er den Vergleichs- und Schreibvorgang durchführt.
  • Der Controller 120a umfasst den Codierungsblock 121, den Decodierungsblock 122, einen Vergleichsblock 123, einen Inversionsblock 124, einen Flag-Bit-Hinzufügungsblock 125 und einen Flag-Bit-Erfassungsblock 126.
  • Der Codierungsblock 121 kann eine Fehlerkorrekturcodierung an ersten Daten durchführen. Zum Beispiel kann der Codierungsblock 121 eine Parität zur Fehlerkorrektur zu Originaldateien (oder Eingabedaten) hinzufügen, um zweite Daten zu erzeugen.
  • Der Decodierungsblock 122 kann eine Fehlerkorrekturdecodierung an den zweiten Daten durchführen, in denen ein Fehler vorliegen kann. Zum Beispiel kann der Decodierungsblock 122 einen Fehler (oder mehrere Fehler) in den zweiten Daten korrigieren, kann eine Parität entfernen und kann die ersten Daten wiederherstellen. Zum Beispiel kann der Decodierungsblock 122 einen Fehler in einem Abschnitt der zweiten Daten unter Verwendung der Parität korrigieren, um korrigierte Daten zu erzeugen und die Parität aus den korrigierten Daten zu entfernen, um die ersten Daten wiederherzustellen.
  • Der Codierungsblock 121 und der Decodierungsblock 122 können gekoppelt werden. Der Codierungsblock 121 und der Decodierungsblock 122 können jeweils ein Codieren und Decodieren basierend auf demselben Fehlerkorrekturalgorithmus durchführen.
  • Ähnlich wie der Vergleichs- und Schreibblock 116, der unter Bezugnahme auf 1 bis 4 beschrieben wurde, kann der Vergleichsblock 123 Teile von Kandidatendaten mit existierenden Daten vergleichen. Der Vergleichsblock 123 kann aus Teilen von Kandidatendaten basierend auf einem Ergebnis des Vergleichs Kandidatendaten auswählen, was einen Leistungsverbrauch des Schreibvorgangs weiter reduziert.
  • Der Inversionsblock 124 kann Daten invertieren, die in die nichtflüchtige Speichervorrichtung 110a geschrieben werden sollen. Zum Beispiel kann der Inversionsblock 124 entsprechende Daten in einer von verschiedenen Phasen, in denen Daten, die in die nichtflüchtige Speichervorrichtung 110a geschrieben werden sollen, verarbeitet werden, in dem Controller 120a invertieren. Zwei oder mehr Kandidatendaten, die in die nichtflüchtige Speichervorrichtung 110a geschrieben werden sollen, können in dem Inversionsblock 124 erzeugt werden.
  • Ähnlich wie der Flag-Bit-Hinzufügungsblock 115, der unter Bezugnahme auf 1 bis 4 beschrieben wurde, kann der Flag-Bit-Hinzufügungsblock 125 ein Flag-Bit und mindestens ein Kopie-Flag-Bit zu allen Daten, die von dem Inversionsblock 124 invertiert werden, und zu Daten, die nicht von dem Inversionsblock 124 invertiert werden, hinzufügen. Zum Beispiel kann der Flag-Bit-Hinzufügungsblock 125 Flag-Bits in einer von verschiedenen Phasen, in denen Daten verarbeitet werden, die in die nichtflüchtige Speichervorrichtung 110a geschrieben werden sollen, in dem Controller 120a hinzufügen.
  • Ähnlich wie der unter Bezugnahme auf 1 bis 4 beschriebene Flag-Bit-Erfassungsblock 117, kann der Flag-Bit-Erfassungsblock 126 Flag-Bits aus den Daten „DATA“ erfassen, die von der nichtflüchtigen Speichervorrichtung 110a übertragen wurden. Zum Beispiel kann der Flag-Bit-Erfassungsblock 126 Flag-Bits in einer von verschiedenen Phasen, in denen Daten verarbeitet werden, die von der nichtflüchtigen Speichervorrichtung 110a empfangen wurden, in dem Controller 120a erfassen.
  • In einer Ausführungsform kann eine Reihenfolge und ein Verfahren, mit dem der Codierungsblock 121, der Decodierungsblock 122, der Vergleichsblock 123, der Inversionsblock 124, der Flag-Bit-Hinzufügungsblock 125 und der Flag-Bit-Erfassungsblock 126, die in dem Controller 120a vorgesehen sind, die Daten „DATA“, die an die nichtflüchtige Speichervorrichtung 110a übertragen werden sollen, oder die Daten „DATA“, die von der nichtflüchtigen Speichervorrichtung 110a empfangen wurden, verarbeiten, auf verschiedene Art und Weise organisiert werden und auf verschiedene Art und Weise modifiziert werden.
  • 6 ist ein Flussdiagramm, das ein Betriebsverfahren des Speichersystems 100a aus 5 gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts darstellt. In 5 und 6 führt der Controller 120a den Vergleichs- und Schreibvorgang durch, sobald er Daten in die nichtflüchtige Speichervorrichtung 110a schreibt. Der Vergleichs- und Schreibvorgang kann durch Vorgang S210 bis Vorgang S245 durchgeführt werden.
  • In Vorgang S210 des Vergleichs- und Schreibvorgangs überträgt der Controller 120a einen dritten Befehl CMD3 und eine dritte Adresse ADDR3 an die nichtflüchtige Speichervorrichtung 110a. Der dritte Befehl CMD3 kann ein Lesebefehl sein und kann zum Vergleich übertragen werden. Die dritte Adresse ADDR3 kann Speicherzellen von Speicherzellen der nichtflüchtigen Speichervorrichtung 110a angeben (z. B. ausgewählte Speicherzellen), in die Daten geschrieben werden.
  • In Vorgang S215 des Vergleichs- und Schreibvorgangs führt die nichtflüchtige Speichervorrichtung 110a den Lesevorgang ansprechend auf den dritten Befehl CMD3 und die dritte Adresse ADDR3 durch und überträgt dritte Daten DATA3, die durch den Lesevorgang ausgelesen wurden.
  • In Vorgang S220 des Vergleichs- und Schreibvorgangs führt der Controller 120a eine Fehlerkorrekturcodierung an Originaldaten durch, die in die nichtflüchtige Speichervorrichtung 110a geschrieben werden sollen. In Vorgang S225 des Vergleichs- und Schreibvorgangs kann der Controller 120a die codierten Daten konvertieren.
  • Das Konvertieren der codierten Daten kann umfassen, dass der Controller 120a jeweils Flag-Bits zu den codierten Daten und den invertierten Daten hinzufügt. Ein erstes Flag-Bit (z. B. „1“ oder „0“), das die Nicht-Inversion angibt, wird zu den codierten Daten hinzugefügt. Ein zweites Flag-Bit (z. B. „0“ oder „1“), das die Inversion angibt, wird zu den invertierten Daten hinzugefügt. Zum Beispiel können die codierten Daten invertiert werden, um die invertierten Daten zu erzeugen.
  • In Vorgang S230 des Vergleichs- und Schreibvorgangs fügt der Controller 120a ein Kopie-Flag-Bit hinzu. Wie unter Bezugnahme auf Vorgang S 125 aus 2 beschrieben, kann der Controller 120a erste und zweite Kandidatendaten erzeugen, indem er Kopie-Flag-Bits zu jeweils den codierten Daten und den invertierten Daten hinzufügt.
  • In Vorgang S235 des Vergleichs- und Schreibvorgangs vergleicht der Controller 120a die dritten Daten DATA3, die aus der nichtflüchtigen Speichervorrichtung 110a ausgelesen wurden, das heißt, existierende Daten mit den ersten Kandidatendaten und den zweiten Kandidatendaten. Zum Beispiel kann der Controller 120a, wie Vorgang S130 aus 2, einen ersten und einen zweiten Hamming-Abstand zwischen den dritten Daten DATA3 und den ersten und zweiten Kandidatendaten berechnen.
  • In Vorgang S240 des Vergleichs- und Schreibvorgangs wählt der Controller 120a einen der ersten Kandidatendaten und der zweiten Kandidatendaten basierend auf einem Ergebnis des Vergleichs aus. In einer beispielhaften Ausführungsform wählt der Controller 120a Kandidatendaten aus, die einen kleineren Hamming-Abstand bezüglich der existierenden Daten aufweisen.
  • In Vorgang S245 des Vergleichs- und Schreibvorgangs überträgt der Controller 120a einen vierten Befehl CMD4, eine vierte Adresse ADDR4 und die ausgewählten Kandidatendaten als vierte Daten DATA4 an die nichtflüchtige Speichervorrichtung 110a.
  • Der vierte Befehl CMD4 kann ein Schreibbefehl sein. Wie die dritte Adresse ADDR3 kann die vierte Adresse ADDR4 die gleichen ausgewählten Speicherzellen der nichtflüchtigen Speichervorrichtung 110a angeben. Ansprechend auf den vierten Befehl CMD4 und die vierte Adresse ADDR4 schreibt die nichtflüchtige Speichervorrichtung 110a die vierten Daten DATA4 in die ausgewählten Speicherzellen.
  • Bei Auslesen von Daten aus der nichtflüchtigen Speichervorrichtung 110a kann der Controller 120a den Lesevorgang durchführen. Der Lesevorgang kann durch Vorgang S250 bis Vorgang S265 durchgeführt werden.
  • In Vorgang S250 des Lesevorgangs überträgt der Controller 120 einen fünften Befehl CMD5 und eine fünfte Adresse ADDR5 an die nichtflüchtige Speichervorrichtung 110. Zum Beispiel kann der fünfte Befehl CMD5 ein Lesebefehl sein. Die fünfte Adresse ADDR5 kann ausgewählte Speicherzellen in der nichtflüchtigen Speichervorrichtung 110a angeben. Die fünfte Adresse ADDR5 kann mit der dritten Adresse ADDR3 und der vierten Adresse ADDR4 identisch sein oder sich von diesen unterscheiden.
  • In Vorgang S255 des Lesevorgangs liest die nichtflüchtige Speichervorrichtung 110a ansprechend auf den fünften Befehl CMD5 und die fünfte Adresse ADDR5 Daten aus den ausgewählten Speicherzellen aus und überträgt die Lesedaten an den Controller 120a als fünfte Daten DATA5.
  • In Vorgang S260 des Lesevorgangs erfasst der Controller 120a ein Flag-Bit und mindestens ein Kopie-Flag-Bit von den fünften Daten DATA5. Der Controller 120a wählt eine der fünften Daten DATA5 oder invertierte Daten der fünften Daten DATA5 basierend auf dem Flag-Bit und dem mindestens einen Kopie-Flag-Bit aus.
  • In Vorgang S265 des Lesevorgangs führt der Controller 120a eine Decodierung an den ausgewählten Daten durch. Das Decodieren kann das Flag-Bit und das mindestens ein Kopie-Flag-Bit aus den ausgewählten Daten entfernen, um ein Ergebnis zu erzeugen, und dann eine Fehlerkorrekturdecodierung an dem Ergebnis durchführen, um decodierte Daten zu erzeugen. Der Controller 120a kann die decodierten Daten als Ergebnis des Lesevorgangs erhalten.
  • 7 stellt ein Beispiel dar, in dem der Controller 120a aus 5 einen Vergleichs- und Schreibvorgang durchführt, um Daten in die nichtflüchtige Speichervorrichtung 110a zu schreiben. In 5 bis 7, wie unter Bezugnahme auf Vorgang S210 und Vorgang S215 aus 6 beschrieben, empfängt der Controller 120a fünfte Lesedaten RD5 als dritte Daten DATA3 von der nichtflüchtigen Speichervorrichtung 110a. Die fünften Lesedaten RD5 werden dem Vergleichsblock 123 zur Verfügung gestellt. In einer beispielhaften Ausführungsform wird der Vergleichsblock 123 durch einen oder mehr Komparatoren oder Komperatorschaltungen implementiert.
  • Wie unter Bezugnahme auf Vorgang S220 aus 6 beschrieben, führt der Codierungsblock 121 eine Fehlerkorrekturcodierung an sechsten Schreibdaten WD6 durch, um siebte Schreibdaten WD7 zu erzeugen. Die siebten Schreibdaten WD7 können sechste Schreibdaten WD6 und eine Parität für eine Fehlerkorrektur umfassen.
  • Wie unter Bezugnahme auf Vorgang S225 und Vorgang S230 aus 6 beschrieben, invertiert der Inversionsblock 124 die siebten Schreibdaten WD7, um achte Schreibdaten WD8 zu erzeugen. Der Flag-Bit-Hinzufügungsblock 125 umfasst einen ersten Flag-Bit-Hinzufügungsblock 125_1 und einen zweiten Flag-Bit-Hinzufügungsblock 125_2.
  • Der erste Flag-Bit-Hinzufügungsblock 125_1 fügt ein Flag-Bit, das die Inversion angibt, und mindestens ein identisches Kopie-Flag-Bit zu den achten Schreibdaten WD8 hinzu, um neunte Schreibdaten WD9 zu erzeugen. Der zweite Flag-Bit-Hinzufügungsblock 125_2 fügt ein Flag-Bit, das die Nicht-Inversion angibt, und mindestens ein identisches Kopie-Flag-Bit zu den siebten Schreibdaten WD7 hinzu, um zehnte Schreibdaten WD10 zu erzeugen.
  • Die neunten Schreibdaten WD9 und die zehnten Schreibdaten WD10 können jeweils den ersten Kandidatendaten und den zweiten Kandidatendaten entsprechen, die in Vorgang S230 beschrieben sind. Wie unter Bezugnahme auf Vorgang S235 aus 6 beschrieben, vergleicht der Vergleichsblock 123 die fünften Lesedaten RD5 mit den neunten Schreibdaten WD9 und den zehnten Schreibdaten WD10. Zum Beispiel kann der Vergleichsblock 123 Hamming-Abstände zwischen den fünften Lesedaten RD5 und den neunten Schreibdaten WD9 und zwischen den fünften Lesedaten RD5 und den zehnten Schreibdaten WD10 berechnen.
  • Wie unter Bezugnahme auf Vorgang S240 aus 6 beschrieben, wählt der Vergleichsblock 123 die neunten oder zehnten Schreibdaten WD9 und WD10 basierend auf einer dritten Differenz zwischen den fünften Lesedaten RD5 und den neunten Schreibdaten WD9 und einer vierten Differenz zwischen den fünften Lesedaten RD5 und den zehnten Schreibdaten WD10 aus.
  • Wie unter Bezugnahme auf Vorgang S245 aus 6 beschrieben, sind die durch den Vergleichsblock 123 ausgewählten Daten elfte Schreibdaten WD11. Der Controller 120a kann die elften Schreibdaten WD11 als vierte Daten DATA4 an die nichtflüchtige Speichervorrichtung 110a übertragen.
  • 8 stellt ein Beispiel dar, in dem der Controller 120a aus 5 einen Lesevorgang durchführt, um Daten aus der nichtflüchtigen Speichervorrichtung 110a auszulesen. In 5, 6 und 8, wie unter Bezugnahme auf Vorgang S250 und Vorgang S255 aus 6 beschrieben, empfängt der Controller 120a sechste Lesedaten RD6 als fünfte Daten DATA5 von der nichtflüchtigen Speichervorrichtung 110a. Die sechsten Lesedaten RD6 werden dem Flag-Bit-Erfassungsblock 126 zur Verfügung gestellt.
  • Wie unter Bezugnahme auf Vorgang S260 und Vorgang S265 aus 6 beschrieben, kann der Flag-Bit-Erfassungsblock 126 ein Flag-Bit und mindestens ein Kopie-Flag-Bit (d. h. Flag-Bits) von den sechsten Lesedaten RD6 erfassen. Der Flag-Bit-Erfassungsblock 126 kann die Flag-Bits von den sechsten Lesedaten RD6 erfassen, um siebte Lesedaten RD7 zu erzeugen.
  • Abhängig von den Flag-Bits kann der Flag-Bit-Erfassungsblock 126 die siebten Lesedaten RD7 dem Decodierungsblock 122 oder dem Inversionsblock 124 zur Verfügung stellen. Zum Beispiel kann der Flag-Bit-Erfassungsblock 126 basierend auf den Flag-Bits ein Abstimmen bzw. Voting durchführen. Der Flag-Bit-Erfassungsblock 126 kann die siebten Lesedaten RD7 dem Decodierungsblock 122 oder dem Inversionsblock 124 basierend auf einem vorherrschenden Zustand, den die Flag-Bits angeben, zum Beispiel einem nicht invertierten Zustand bzw. Nicht-Invertierungszustand oder einem Inversionszustand, zur Verfügung stellen. Zum Beispiel falls die meisten der Flag-Bits eine Inversion angeben, könnte der vorherrschende Zustand als Inversionszustand bezeichnet werden, und der Flag-Bit-Erfassungsblock 126 stellt dem Inversionsblock 124 die siebten Lesedaten RD7 zur Verfügung. Zum Beispiel falls die meisten der Flag-Bits nicht invertierte Daten angeben, könnte der vorherrschende Zustand als nicht invertierter Zustand bezeichnet werden, und der Flag-Bit-Erfassungsblock 126 stellt die siebten Lesedaten RD7 direkt dem Decodierungsblock 122 zur Verfügung.
  • In einem anderen Beispiel führt der Flag-Bit-Erfassungsblock 126 eine einstimmige Bestimmung durch. Der Flag-Bit-Erfassungsblock 126 stellt die siebten Lesedaten RD7 dem Decodierungsblock 122 oder dem Inversionsblock 124 basierend auf einem Zustand zur Verfügung, den alle Flag-Bits identisch angeben, zum Beispiel dem nicht invertierten Zustand oder dem Inversionszustand. Wenn die siebten Lesedaten RD7 von dem Flag-Bit-Erfassungsblock 126 übertragen werden, kann der Inversionsblock 124 die siebten Lesedaten RD7 invertieren, um achte Lesedaten RD8 zu erzeugen.
  • Der Decodierungsblock 122 kann eine Fehlerkorrekturdecodierung an den siebten Lesedaten RD7 durchführen, die von dem Flag-Bit-Erfassungsblock 126 übertragen werden (z. B., wenn der nicht invertierte Zustand bestimmt wird), oder er kann eine Fehlerkorrekturdecodierung an den achten Lesedaten RD8 durchführen, die von dem Inversionsblock 124 übertragen werden (z. B. wenn der Inversionszustand bestimmt wird).
  • In einem andern Beispiel kann der Flag-Bit-Erfassungsblock 126 die siebten Lesedaten RD7 dem Decodierungsblock 122 und dem Inversionsblock 124 zur Verfügung stellen, wenn einige Flag-Bits das Original angeben und die anderen die Inversion angeben. Der Decodierungsblock 122 kann eine Fehlerkorrekturdecodierung an den siebten Lesedaten RD7 und an den achten Lesedaten RD8 sequenziell oder gleichzeitig durchführen.
  • Wenn der Decodierungsblock 122 eingerichtet ist, eine Fehlerkorrekturdecodierung an den siebten Lesedaten RD7 und an den achten Lesedaten RD8 gleichzeitig durchzuführen, kann der Decodierungsblock 122 mindestens zwei Sub-Blöcke umfassen, die eine Fehlerkorrekturdecodierung unabhängig voneinander durchführen können.
  • Wie unter Bezugnahme auf 1 bis 8 beschrieben, führt die nichtflüchtige Speichervorrichtung 110a oder der Controller 120a gemäß einer Ausführungsform des erfinderischen Konzepts den Vergleichs- und Schreibvorgang durch. Die nichtflüchtige Speichervorrichtung 110a oder der Controller 120a kann zwei oder mehr Flag-Bits schreiben, die einen nicht invertierten Zustand (oder einen Originalzustand) oder einen Inversionszustand angeben. Dementsprechend wird ein Leistungsverbrauch beim Schreiben von Daten reduziert und eine Datenintegrität wird verstärkt.
  • 9 ist ein Flussdiagramm, das ein anderes Beispiel für ein Betriebsverfahren des Speichersystems 100a aus 5 gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts darstellt. In 5 und 9 führt der Controller 120a den Vergleichs-und Schreibvorgang durch, sobald er Daten in die nichtflüchtige Speichervorrichtung 110a schreibt. Der Vergleichs- und Schreibvorgang kann durch Vorgang S310 bis Vorgang S335 durchgeführt werden.
  • In Vorgang S310 des Vergleichs- und Schreibvorgangs überträgt der Controller 120a einen sechsten Befehl CMD6 und eine sechsten Adresse ADDR6 an die nichtflüchtige Speichervorrichtung 110a. Der sechste Befehl CMD6 kann ein Lesebefehl sein und kann zum Vergleich übertragen werden. In Vorgang S315 des Vergleichs- und Schreibvorgangs führt die nichtflüchtige Speichervorrichtung 110 einen Lesevorgang ansprechend auf den sechsten Befehl CMD6 und die sechste Adresse ADDR6 durch, um sechste Daten DATA6 abzurufen, und überträgt die sechsten Daten DATA6 an den Controller 120a.
  • In Vorgang S320 des Vergleichs- und Schreibvorgangs invertiert der Controller 120a Originaldaten, die in die nichtflüchtige Speichervorrichtung 110a geschrieben werden sollen. Der Controller 120a fügt ein erstes Flag-Bit, das die Nicht-Invertierung angibt, zu den Originaldaten hinzu und fügt ein zweites Flag-Bit, das die Inversion angibt, zu den invertierten Daten hinzu. Wie unter Bezugnahme auf 5 bis 8 beschrieben, fügt der Controller 120a ferner Kopie-Flag-Bits jeweils zu den Originaldaten und den invertierten Daten hinzu.
  • In Vorgang S325 des Vergleichs- und Schreibvorgangs führt der Controller 120a eine Fehlerkorrekturcodierung an den Originaldaten und dem ersten Flag-Bit durch, um erste Kandidatendaten zu erzeugen. Der Controller 120a führt eine Fehlerkorrekturcodierung an den invertierten Daten und dem zweiten Flag-Bit durch, um zweite Kandidatendaten zu erzeugen.
  • In Vorgang S330 des Vergleichs- und Schreibvorgangs vergleicht der Controller 120a die sechsten Daten DATA6 mit den ersten Kandidatendaten und den zweiten Kandidatendaten, um die Hamming-Abstände zu berechnen. In Vorgang S335 des Vergleichs- und Schreibvorgangs wählt der Controller 120a jene Kandidatendaten, die einen kleineren Hamming-Abstand aufweisen, basierend auf einem Ergebnis des Vergleichs. Vorgang S325 und Vorgang S330 können mit Vorgang S235 und Vorgang S240 aus 6 identisch sein.
  • In Vorgang S340 überträgt der Controller 120a einen siebten Befehl CMD7, eine siebte Adresse ADDR7 und siebte Daten DATA7 an die nichtflüchtige Speichervorrichtung 110a. Der siebte Befehl CMD7 kann ein Schreibbefehl sein. Die siebte Adresse ADDR7 kann ausgewählte Speicherzellen angeben. In einer Ausführungsform sind die siebten Daten DATA7 die ausgewählten Kandidatendaten. Die nichtflüchtige Speichervorrichtung 110a schreibt die siebten Daten DATA7 in die ausgewählten Speicherzellen.
  • Ein Lesevorgang kann durch Vorgang S345 bis Vorgang S360 durchgeführt werden. In Vorgang S345 des Lesevorgangs überträgt der Controller 120a einen achten Befehl CMD8 und eine achte Adresse ADDR8 an die nichtflüchtige Speichervorrichtung 110a. Der achte Befehl CMD8 kann ein Lesebefehl sein.
  • In Vorgang S350 des Lesevorgangs überträgt die nichtflüchtige Speichervorrichtung 110a achte Daten DATA8, die aus von der achten Adresse ADDR8 ausgewählten Speicherzellen ausgelesen wurden, an den Controller 120a.
  • In Vorgang S355 des Lesevorgangs führt der Controller 120a eine Fehlerkorrekturdecodierung an den achten Daten DATA8 durch, um decodierte Daten zu erzeugen. In Vorgang S360 des Lesevorgangs kann der Controller 120a Originaldaten erhalten, indem er ein Flag-Bit aus den decodierten Daten erfasst, das Flag-Bit von den decodierten Daten basierend auf dem Flag-Bit entfernt, und die Daten, von denen das Flag-Bit entfernt wurde, invertiert. Die Daten, von denen das Flag-Bit entfernt wurde, können invertiert werden, wenn das Flag-Bit angibt, dass eine Inversion durchgeführt wurde. Falls das Flag-Bit angibt, dass eine Inversion nicht durchgeführt wurde, kann das Invertieren ausgelassen werden.
  • Wie unter Bezugnahme auf Vorgang S320 und Vorgang S325 beschrieben, kann der Controller 120a gemäß einer Ausführungsform des erfinderischen Konzepts ein Flag-Bit hinzufügen und kann dann eine Fehlerkorrekturcodierung durchführen. Dementsprechend kann das Flag-Bit gegenüber einem Fehler robust sein und eine Datenintegrität wird verstärkt.
  • 10 stellt ein Beispiel dar, in dem der Controller 120a aus 5 einen Vergleichs- und Schreibvorgang durchführt, um Daten in die nichtflüchtige Speichervorrichtung 110a zu schreiben. In 5, 9 und 10, wie unter Bezugnahme auf Vorgang S310 und Vorgang S315 aus 9 beschrieben, empfängt der Controller 120a neunte Lesedaten RD9 als sechste Daten DATA6 von der nichtflüchtigen Speichervorrichtung 110a. Die neunten Lesedaten RD9 werden dem Vergleichsblock 123 zur Verfügung gestellt, ohne durch den Decodierungsblock 122 zu passieren.
  • Wie unter Bezugnahme auf Vorgang S320 aus 9 beschrieben, invertiert der Inversionsblock 124 zwölfte Schreibdaten WD12, um dreizehnte Schreibdaten WD13 zu erzeugen. Die zwölften Schreibdaten WD12 sind Originaldaten, die in die nichtflüchtige Speichervorrichtung 110a geschrieben werden sollen. Die zwölften Schreibdaten WD12 und die dreizehnten Schreibdaten WD13 werden dem Flag-Bit-Hinzufügungsblock 125 zur Verfügung gestellt.
  • Der erste Flag-Bit-Hinzufügungsblock 125_1 fügt ein Flag-Bit zu den dreizehnten Schreibdaten WD13 hinzu, um vierzehnte Schreibdaten WD14 zu erzeugen. Der zweite Flag-Bit-Hinzufügungsblock 125_2 fügt ein Flag-Bit zu den zwölften Schreibdaten WD12 hinzu, um fünfzehnte Schreibdaten WD15 zu erzeugen. Wie unter Bezugnahme auf 7 beschrieben, kann ferner ein Kopie-Flag-Bit hinzugefügt werden.
  • Wie unter Bezugnahme auf Vorgang S325 aus 9 beschrieben, führt der Codierungsblock 121 eine Fehlerkorrekturcodierung an vierzehnten Schreibdaten WD14 durch, um sechzehnte Schreibdaten WD16 zu erzeugen. Der Codierungsblock 121 führt eine Fehlerkorrekturcodierung an den fünfzehnten Schreibdaten WD15 durch, um siebzehnte Schreibdaten WD17 zu erzeugen. Die sechzehnten Schreibdaten WD16 und die siebzehnten Schreibdaten WD17 können jeweils die ersten Kandidatendaten und die zweiten Kandidatendaten sein, die in Vorgang S325 aus 9 erwähnt wurden.
  • Der Codierungsblock 121 kann eine Codierung an den vierzehnten Schreibdaten WD14 und an den fünfzehnten Schreibdaten WD15 sequenziell oder gleichzeitig durchführen. Wenn der Codierungsblock 121 eingerichtet ist, eine Parallelcodierung durchzuführen, kann der Codierungsblock 121 zwei oder mehr Sub-Blöcke umfassen, die eine Codierung unabhängig voneinander durchführen.
  • Wie unter Bezugnahme auf Vorgang S330 und Vorgang S335 aus 9 beschrieben, vergleicht der Vergleichsblock 123 die neunten Lesedaten RD9 mit den sechzehnten und siebzehnten Schreibdaten WD16 und WD17. In einer Ausführungsform wählt der Vergleichsblock 123 Schreibdaten, die eine kleinere Differenz bezüglich der sechsten Lesedaten RD6 aufweisen, von den sechzehnten und siebzehnten Schreibdaten WD16 und WD17 als achtzehnte Schreibdaten WD18 aus.
  • Wie unter Bezugnahme auf Vorgang S340 aus 9 beschrieben, kann der Controller 120a die achtzehnten Schreibdaten WD18 als siebte Daten DATA7 an die nichtflüchtige Speichervorrichtung 110a übertragen.
  • 11 stellt ein Beispiel dar, in dem der Controller 120a aus 5 einen Lesevorgang durchführt, um Daten aus der nichtflüchtigen Speichervorrichtung 110a auszulesen. In 5, 9 und 11, wie unter Bezugnahme auf Vorgang S345 und Vorgang S350 aus 9 beschrieben, empfängt der Controller 120a zehnte Lesedaten RD10 als achte Daten DATA8 von der nichtflüchtigen Speichervorrichtung 110a. Die zehnten Lesedaten RD10 werden dem Decodierungsblock 122 zur Verfügung gestellt.
  • Wie unter Bezugnahme auf Vorgang S355 aus 9 beschrieben, führt der Decodierungsblock 122 eine Fehlerkorrekturdecodierung an den zehnten Lesedaten RD10 durch, um elfte Lesedaten RD11 zu erzeugen.
  • Wie unter Bezugnahme auf Vorgang S360 aus 9 beschrieben, kann der Flag-Bit-Erfassungsblock 126 ein Flag-Bit (d. h. Flag-Bits) von den elften Lesedaten RD11 erfassen. Der Flag-Bit-Erfassungsblock 126 entfernt das Flag-Bit von den elften Lesedaten RD11, um zwölfte Lesedaten RD12 zu erzeugen.
  • Wenn das Flag-Bit die Nicht-Inversion angibt, kann der Controller 120a die zwölften Lesedaten RD12 als Ergebnis des Lesevorgangs erhalten. Wenn das Flag-Bit die Inversion angibt, stellt der Controller 120a die zwölften Lesedaten RD12 dem Inversionsblock 124 zur Verfügung (z. B. einen Inverter oder eine Inversionsschaltung). Der Inversionsblock 124 invertiert die zwölften Lesedaten RD12, um dreizehnte Lesedaten RD13 zu erzeugen. Der Controller 120a kann die dreizehnten Lesedaten RD13 als Ergebnis des Lesevorgangs erhalten.
  • 12 ist ein Flussdiagramm, das ein anderes Beispiel für ein Betriebsverfahren des Speichersystems 100a aus 5 gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts darstellt. In 5 und 12 führt der Controller 120a den Vergleichs- und Schreibvorgang durch, sobald er Daten in die nichtflüchtige Speichervorrichtung 110a schreibt. Der Vergleichs- und Schreibvorgang kann durch Vorgang S410 bis Vorgang S445 durchgeführt werden.
  • In Vorgang S410 des Vergleichs- und Schreibvorgangs überträgt der Controller 120a einen neunten Befehl CMD9 und eine neunte Adresse ADDR9 an die nichtflüchtige Speichervorrichtung 110a. Der neunte Befehl CMD9 kann ein Lesebefehl sein und kann zum Vergleich übertragen werden. In Vorgang S415 des Vergleichs- und Schreibvorgangs überträgt die nichtflüchtige Speichervorrichtung 110a neunte Daten DATA9 an den Controller 120a.
  • In Vorgang S420 führt der Controller 120a eine erste Codierung an Originaldaten durch, die in die nichtflüchtige Speichervorrichtung 110a geschrieben werden sollen. In Vorgang S425 führt der Controller 120a eine zweite Codierung an einem Ergebnis der ersten Codierung durch. Die zweite Codierung wird durchgeführt, um einen Fehler zu korrigieren, der während dem Schreiben und Lesen von Originaldaten in und aus der nichtflüchtigen Speichervorrichtung 110a auftritt.
  • Die erste Codierung kann durchgeführt werden, um zu bestimmen, ob aktuelle Daten richtige Daten sind, und um eines von verschiedenen Schemas für eine Fehlererkennung oder -korrektur zu verwenden. Zum Beispiel kann die erste Codierung auf einer zyklischen Redundanzprüfung (Cyclic Redundancy Check, CRC) basieren.
  • Ähnlich wie Vorgang S320 aus 9, erzeugt der Controller 120a in Vorgang S430 invertierte Daten von Daten, an denen die zweite Codierung durchgeführt wird. Der Controller 120a kann jeweils Flag-Bits zu den Daten hinzufügen, die der zweite Codierung unterzogen werden, und zu den invertierten Daten, um erste und zweite Kandidatendaten zu erzeugen. Wie unter Bezugnahme auf 5 bis 8 beschrieben, kann der Controller 120a ferner mindestens ein Kopie-Flag-Bit hinzufügen.
  • In Vorgang S435 vergleicht der Controller 120a die neunten Daten DATA9 mit den ersten Kandidatendaten und den zweiten Kandidatendaten, um die Hamming-Abstände zu berechnen. In Vorgang S440 wählt der Controller 120a jene Kandidatendaten, die den kleineren Hamming-Abstand aufweisen, basierend auf einem Ergebnis des Vergleichs. Vorgang S435 und Vorgang S440 können mit Vorgang S235 und Vorgang S240 aus 6 identisch sein.
  • In Vorgang S445 überträgt der Controller 120a einen zehnten Befehl CMD10, eine zehnte Adresse ADDR10 und zehnte Daten DATA10 an die nichtflüchtige Speichervorrichtung 110a. Der zehnte Befehl CMD10 kann ein Schreibbefehl sein. Die zehnte Adresse ADDR10 kann ausgewählte Speicherzellen angeben. In einer beispielhaften Ausführungsform sind die zehnten Daten DATA10 die ausgewählten Kandidatendaten. Die nichtflüchtige Speichervorrichtung 110a kann die zehnten Daten DATA10 in die ausgewählten Speicherzellen schreiben.
  • Der Lesevorgang kann durch Vorgang S450 bis Vorgang S480 durchgeführt werden. In Vorgang S450 überträgt der Controller 120a einen elften Befehl CMD11 und eine elfte Adresse ADDR11 an die nichtflüchtige Speichervorrichtung 110a. Der elfte Befehl CMD11 kann ein Lesebefehl sein. In Vorgang S455 überträgt die nichtflüchtige Speichervorrichtung 110a elfte Daten DATA11, die aus durch die elfte Adresse ADDR11 ausgewählten Speicherzellen ausgelesen wurden, an den Controller 120a.
  • In Vorgang S460 kann der Controller 120 ein Flag-Bit von den elften Daten DATA11 erfassen und kann Daten auswählen, die erhalten werden, indem das Flag-Bit von den elften Daten DATA11 basierend auf dem Flag-Bit entfernt wird, oder er kann Daten auswählen, die erhalten werden, indem das Flag-Bit von den elften Daten DATA11 entfernt wird oder die resultierenden Daten invertiert werden. Zum Beispiel falls die elften Daten DATA11 12 Bits sind, und die Flag-Bit(s) 2 Bits sind, so würde das Entfernen in 10-Bit-Daten resultieren. Falls das Flag-Bit keine Inversion angibt, wären in diesem Beispiel die ausgewählten Daten die ursprünglichen 10-Bit-Daten, und falls das Flag-Bit eine Inversion angibt, so wären die ausgewählten Daten eine invertierte Version der 10-Bit-Daten.
  • In Vorgang S465 führt der Controller 120a eine zweite Decodierung an den ausgewählten Daten durch. Die zweite Decodierung kann der zweiten Codierung von Vorgang S425 entsprechen. Der Controller 120a kann Fehler korrigieren, die in den ausgewählten Daten umfasst sind, indem die zweite Decodierung durchgeführt wird.
  • In Vorgang S470 führt der Controller 120a eine erste Decodierung an den ausgewählten Daten durch. Die erste Decodierung kann der ersten Codierung von Vorgang S420 entsprechen. Der Controller 120a kann bestimmen, ob die ausgewählten Daten richtig ausgewählt wurden, indem die erste Decodierung durchgeführt wird. Zum Beispiel kann der Controller 120a bestimmen, ob inkorrekte Daten in Vorgang S460 aufgrund eines Fehlers ausgewählt wurden, der in dem Flag-Bit umfasst ist.
  • Wenn die erste Decodierung erfolgreich ist, wird bestimmt, dass richtige Daten ausgewählt wurden. Der Controller 120a kann die Daten, die dem ersten Decodieren unterzogen werden, als Ergebnis des Lesevorgangs erhalten. Wenn die erste Decodierung misslingt, wird bestimmt, dass falsche Daten ausgewählt wurden.
  • In Vorgang S480 wählt der Controller 120a die anderen Daten aus, die in Vorgang S460 nicht ausgewählt wurden. Zum Beispiel falls Vorgang S460 Originaldaten ohne Inversion auswählte und Vorgang S470 angibt, dass eine solche Auswahl falsch war, so würde der Controller 120a eine invertierte Version der Originaldaten als die anderen Daten auswählen. Danach, in Vorgang S465 und Vorgang S470, kann der Controller 120a sequenziell die zweite Decodierung und die erste Decodierung an den anderen, so ausgewählten Daten durchführen.
  • Wie oben beschrieben, ist der Controller 120a gemäß einer Ausführungsform des erfinderischen Konzepts eingerichtet, die erste Codierung und die erste Decodierung durchzuführen, die es ermöglichen, zu bestimmen, ob falsche Daten aufgrund eines Fehlers eines Flag-Bits ausgewählt wurden. Eine Integrität von Daten wird verstärkt, indem die erste Codierung und die erste Decodierung zusätzlich zu der zweiten Codierung und der zweiten Decodieren durchgeführt werden.
  • 13 stellt ein Beispiel dar, in dem der Controller 120a aus 5 einen Vergleichs- und Schreibvorgang durchführt, um Daten in die nichtflüchtige Speichervorrichtung 110a zu schreiben. In 5, 12 und 13, wie unter Bezugnahme auf Vorgang S410 und Vorgang S415 aus 12 beschrieben, empfängt der Controller 120a vierzehnte Lesedaten RD14 als neunte Daten DATA9 von der nichtflüchtigen Speichervorrichtung 110a. Die vierzehnten Lesedaten RD14 werden dem Vergleichsblock 123 zur Verfügung gestellt, ohne durch den Flag-Bit-Erfassungsblock 126 zu passieren.
  • Der Codierungsblock 121 umfasst einen ersten Codierungsblock 121_1 und einen zweiten Codierungsblock 121_2. Wie unter Bezugnahme auf Vorgang S420 aus 12 beschrieben, führt der erste Codierungsblock 121_1 die erste Codierung an neunzehnten Schreibdaten WD19 durch, um zwanzigste Schreibdaten WD20 zu erzeugen. Die zwanzigsten Schreibdaten WD20 sind Originaldaten, die in die nichtflüchtige Speichervorrichtung 110a geschrieben werden sollen.
  • Wie unter Bezugnahme auf Vorgang S430 aus 12 beschrieben, führt der zweite Codierungsblock 121_2 die zweite Codierung an den zwanzigsten Schreibdaten WD20 durch, um einundzwanzigste Schreibdaten WD21 zu erzeugen.
  • Wie unter Bezugnahme auf Vorgang S430 aus 12 beschrieben, invertiert der Inversionsblock 124 einundzwanzigste Schreibdaten WD21, um zweiundzwanzigste Schreibdaten WD22 zu erzeugen. Der erste Flag-Bit-Hinzufügungsblock 125_1 fügt ein Flag-Bit zu den zweiundzwanzigsten Schreibdaten WD22 hinzu, um dreiundzwanzigste Schreibdaten WD23 als erste Kandidatendaten zu erzeugen. Der zweite Flag-Bit-Hinzufügungsblock 125_2 fügt ein Flag-Bit zu den einundzwanzigsten Schreibdaten WD21 hinzu, um vierundzwanzigste Schreibdaten WD24 als zweite Kandidatendaten zu erzeugen.
  • Wie unter Bezugnahme auf Vorgang S435 und Vorgang S440 aus 9 beschrieben, vergleicht der Vergleichsblock 123 die vierzehnten Lesedaten RD14 mit den dreiundzwanzigsten und vierundzwanzigsten Schreibdaten WD23 und WD24 und wählt basierend auf einem Ergebnis des Vergleichs die dreiundzwanzigsten oder vierundzwanzigsten Schreibdaten WD23 und WD24 als fünfundzwanzigste Schreibdaten WD25 aus. Wie unter Bezugnahme auf Vorgang S445 aus 9 beschrieben, kann der Controller 120a die fünfundzwanzigsten Schreibdaten WD25 als zehnte Daten DATA10 an die nichtflüchtige Speichervorrichtung 110a übertragen.
  • 14 stellt ein Beispiel dar, in dem der Controller 120a aus 5 einen Lesevorgang durchführt, um Daten aus der nichtflüchtigen Speichervorrichtung 110a auszulesen. In 5, 12 und 14, wie unter Bezugnahme auf Vorgang S450 und Vorgang S455 aus 12 beschrieben, empfängt der Controller 120a fünfzehnte Lesedaten RD15 als elfte Daten DATA11 von der nichtflüchtigen Speichervorrichtung 110a. Die fünfzehnten Lesedaten RD15 werden dem Flag-Bit-Erfassungsblock 126 zur Verfügung gestellt.
  • Wie unter Bezugnahme auf Vorgang S460 aus 12 beschrieben, kann der Flag-Bit-Erfassungsblock 126 ein Flag-Bit (d. h. Flag-Bits) von den fünfzehnten Lesedaten RD15 erfassen. Der Flag-Bit-Erfassungsblock 126 entfernt das Flag-Bit von den fünfzehnten Lesedaten RD15, um sechzehnte Lesedaten RD16 zu erzeugen.
  • Wenn das Flag-Bit die Nicht-Inversion angibt, stellt der Flag-Bit-Erfassungsblock 126 dem Decodierungsblock 122 die sechzehnten Lesedaten RD16 zur Verfügung. Wenn das Flag-Bit die Inversion angibt, stellt der Flag-Bit-Erfassungsblock 126 die sechzehnten Lesedaten RD16 dem Inversionsblock 124 zur Verfügung. Der Inversionsblock 124 invertiert die sechzehnten Lesedaten RD16, um siebzehnte Lesedaten RD17 zu erzeugen. Die siebzehnten Lesedaten RD17 werden dem Decodierungsblock 122 zur Verfügung gestellt.
  • Der Decodierungsblock 122 umfasst einen ersten Decodierungsblock 122_1 und einen zweiten Decodierungsblock 122_2. Wie unter Bezugnahme auf den Vorgang S465 aus 12 beschrieben, führt der zweite Decodierungsblock 122_2 die zweite Decodierung an den sechzehnten Lesedaten RD16 oder den siebzehnten Lesedaten RD17 durch, um achtzehnte Lesedaten RD18 zu erzeugen.
  • Wie unter Bezugnahme auf Vorgang S470 aus 12 beschrieben, führt der erste Decodierungsblock 122_1 die erste Codierung an den achtzehnten Lesedaten RD18 durch. Wenn die erste Decodierung erfolgreich ist, erhält der Controller 120a die neunzehnten Lesedaten RD19 als Ergebnis der ersten Decodierung als Ergebnis des Lesevorgangs. Wenn die erste Decodierung misslingt, steuert der Controller 120a den Decodierungsblock 122, um das zweite Decodieren an den anderen Daten durchzuführen (z. B. den sechzehnten Lesedaten RD16 oder den siebzehnten Lesedaten RD17).
  • In einer Ausführungsform gibt der Controller 120a, wenn die erste Decodierung in sowohl den sechzehnten Lesedaten RD16 als auch den siebzehnten Lesedaten RD17 misslingt, sowohl ein Ergebnis der ersten Decodierung assoziiert mit den sechzehnten Lesedaten RD16, als auch ein Ergebnis der ersten Decodierung assoziiert mit den siebzehnten Lesedaten RD17 aus.
  • In einer Ausführungsform kann der Codierungsblock 121 und der Decodierungsblock 122, die unter Bezugnahme auf 1 bis 11 beschrieben wurden, eingerichtet sein, eine schrittweise Codierung und Decodierung wie unter Bezugnahme auf 12 bis 14 beschrieben durchzuführen.
  • In den 5 bis 14 wird eine Beschreibung unter der Annahme gegeben, dass sich der Codierungsblock 121 und der Decodierungsblock 122 in dem Controller 120a befinden. Allerdings können sich der Codierungsblock 121 und der Decodierungsblock 122 stattdessen in der nichtflüchtigen Speichervorrichtung 110a befinden. Komponenten des Controllers 120a können sich in der nichtflüchtigen Speichervorrichtung 110a befinden. Funktionen und Vorgänge, die als von dem Controller 120a durchgeführt beschrieben werden, können von der nichtflüchtigen Speichervorrichtung 110a durchgeführt werden.
  • 15 stellt ein Speichersystem 200 gemäß eines Anwendungsbeispiels des erfinderischen Konzepts dar. In 15 umfasst das Speichersystem 200 nichtflüchtige Speichervorrichtungen 210_1 bis 210_n und einen Controller 220 (z. B. eine Steuerschaltung).
  • In einer Ausführungsform führt der Controller 220 den Vergleichs- und Schreibvorgang bei allen nichtflüchtigen Speichervorrichtungen 210_1 bis 210_n durch. Jede der nichtflüchtigen Speichervorrichtungen 210_1 bis 210_n kann ein Flag-Bit(s) speichern.
  • In einem anderen Beispiel führt der Controller 220 den Vergleichs- und Schreibvorgang an zwei oder mehr nichtflüchtigen Speichervorrichtungen durch. Es kann ein Flag-Bit erzeugt werden, das angibt, ob Daten invertiert sind, die in zwei oder mehr nichtflüchtige Speichervorrichtungen geschrieben werden sollen.
  • Gemäß Ausführungsformen des erfinderischen Konzepts wird ein Leistungsverbrauch in einem Schreibvorgang durch einen Vergleichs- und Schreibvorgang reduziert. Auch wird gemäß Ausführungsformen des erfinderischen Konzepts eine Integrität von geschriebenen Daten und Flag-Informationen durch einen Verstärkungsvorgang verbessert.
  • Während das erfinderische Konzept unter Bezugnahme auf beispielhafte Ausführungsformen desselben beschrieben wurde, wird es für einen Fachmann ersichtlich sein, dass verschiedene Veränderungen und Abwandlungen daran vorgenommen werden können, ohne von dem Umfang des erfinderischen Konzepts abzuweichen.

Claims (20)

  1. Nichtflüchtige Speichervorrichtung (110, 110a, 210_1-210_n) aufweisend: einen Speicherzellenblock (111), der eine Mehrzahl an Speicherzellen (MCS) umfasst; und einen peripheren Block (112, 112a), der eingerichtet ist, erste Schreibdaten (WD1), die in die Speicherzellen (MCS) geschrieben werden sollen, von einer externen Vorrichtung (120) zu empfangen und einen Vergleichs- und Schreibvorgang an den Speicherzellen (MCS) unter Verwendung der ersten Schreibdaten (WD1) durchzuführen, wobei der periphere Block (112, 112a) den Vergleichs- und Schreibvorgang durchführt, indem er: Lesedaten (RD1) aus den Speicherzellen (MCS) ausliest; die ersten Schreibdaten (WD1) invertiert, um zweite Schreibdaten (WD2) zu erzeugen; ein erstes Flag-Bit zu den ersten Schreibdaten (WD1) hinzufügt, um dritte Schreibdaten zu erzeugen, und ein zweites Flag-Bit zu den zweiten Schreibdaten (WD2) hinzufügt, um vierte Schreibdaten zu erzeugen; einen Verstärkungsvorgang an jeweils den dritten Schreibdaten und vierten Schreibdaten durchführt, um fünfte Schreibdaten (WD3) und sechste Schreibdaten (WD4) zu erzeugen; und die Lesedaten (RD1) mit jeweils den fünften Schreibdaten (WD3) und den sechsten Schreibdaten (WD4) vergleicht und entweder die fünften oder die sechsten Schreibdaten (WD5) in die Speicherzellen (MCS) basierend auf einem Ergebnis des Vergleichs schreibt, wobei der periphere Block (112, 112a) den Vergleichs- und Schreibvorgang durchführt, indem er die Lesedaten (RD1) ausliest, die Lesedaten (RD1) mit den fünften Schreibdaten (WD3) vergleicht, die Lesedaten (RD1) mit den sechsten Schreibdaten (WD4) vergleicht und entweder die fünften oder die sechsten Schreibdaten (WD5) schreibt.
  2. Nichtflüchtige Speichervorrichtung (110, 110a, 210_1-210_n) nach Anspruch 1, wobei der Verstärkungsvorgang die Integrität des ersten Flag-Bit und des zweiten Flag-Bit verbessert.
  3. Nichtflüchtige Speichervorrichtung (110, 110a, 210_1-210_n) nach Anspruch 1, wobei der periphere Block (112, 112a) den Verstärkungsvorgang durchführt, indem er: ferner ein erstes Kopie-Flag-Bit zu den dritten Schreibdaten hinzufügt, wobei das erste Kopie-Flag-Bit mit dem ersten Flag-Bit identisch ist; und ferner ein zweites Kopie-Flag-Bit zu den vierten Schreibdaten hinzufügt, wobei das zweite Kopie-Flag-Bit mit dem zweiten Flag-Bit identisch ist.
  4. Nichtflüchtige Speichervorrichtung (110, 110a, 210_1-210_n) nach Anspruch 3, wobei der periphere Block (112, 112a) ferner eingerichtet ist, einen Lesevorgang an den Speicherzellen (MCS) durchzuführen, indem er: erste Lesedaten (RD2) aus den Speicherzellen (MCS) ausliest; Flag-Bits von den ersten Lesedaten (RD2) erfasst und die erfassten Flag-Bits von den ersten Lesedaten (RD2) entfernt, um zweite Lesedaten (RD3) zu erzeugen; und entweder i) die zweiten Lesedaten (RD3), ii) invertierte Daten der zweiten Lesedaten (RD3) oder iii) die zweiten Lesedaten (RD3) und die invertierten Daten basierend auf den erfassten Flag-Bits ausgibt.
  5. Nichtflüchtige Speichervorrichtung (110, 110a, 210_1-210_n) nach Anspruch 4, wobei, wenn Bits, die eine Hälfte der erfassten Flag-Bits überschreiten, dem zweiten Flag-Bit entsprechen, der periphere Block (112, 112a) die invertierten Daten der zweiten Lesedaten (RD3) ausgibt.
  6. Nichtflüchtige Speichervorrichtung (110, 110a, 210_1-210_n) nach Anspruch 4, wobei, wenn alle erfassten Flag-Bits dem zweiten Flag-Bit entsprechen, der periphere Block (112, 112a) die invertierten Daten der zweiten Lesedaten (RD3) ausgibt.
  7. Nichtflüchtige Speichervorrichtung (110, 110a, 210_1-210_n) nach Anspruch 4, wobei, wenn ein Teil der erfassten Flag-Bits dem ersten Flag-Bit entspricht und die anderen der erfassten Flag-Bits dem zweiten Flag-Bit entsprechen, der periphere Block (112, 112a) sowohl die zweiten Lesedaten (RD3) als auch die invertierten Daten der zweiten Lesedaten (RD3) ausgibt.
  8. Nichtflüchtige Speichervorrichtung (110, 110a, 210_1-210_n) nach Anspruch 1, wobei der periphere Block (112, 112a) den Verstärkungsvorgang durchführt, indem er: an allen von den dritten Schreibdaten und den vierten Schreibdaten jeweils eine Fehlerkorrekturcodierung durchführt.
  9. Nichtflüchtige Speichervorrichtung (110, 110a, 210_1-210_n) nach Anspruch 1, wobei der periphere Block (112, 112a) ferner eingerichtet ist, einen Lesevorgang an den Speicherzellen (MCS) durchzuführen, indem er: erste Lesedaten (RD10) aus den Speicherzellen (MCS) ausliest; eine Fehlerkorrekturdecodierung an den ersten Lesedaten (RD10) durchführt, um zweite Lesedaten (RD11) zu erzeugen; ein Flag-Bit von den zweiten Lesedaten (RD11) erfasst und das erfasste Flag-Bit von den zweiten Lesedaten (RD11) entfernt, um dritte Lesedaten (RD12) zu erzeugen; und entweder i) die dritten Lesedaten (RD12), ii) invertierte Daten der dritten Lesedaten (RD12) oder iii) sowohl die dritten Lesedaten (RD12) als auch die invertierten Daten basierend auf den erfassten Flag-Bits ausgibt.
  10. Nichtflüchtige Speichervorrichtung (110, 110a, 210_1-210_n) nach Anspruch 1, wobei der periphere Block (112, 112a) einen ersten Hamming-Abstand zwischen den fünften Schreibdaten (WD3) und den Lesedaten (RD1) berechnet, einen zweiten Hamming-Abstand zwischen den sechsten Schreibdaten (WD4) und den Lesedaten (RD1) berechnet, und die sechsten Schreibdaten (WD4) in die Speicherzellen (MCS) schreibt, wenn der erste Hamming-Abstand größer ist als der zweite Hamming-Abstand.
  11. Speichersystem (100, 200) aufweisend: eine nichtflüchtige Speichervorrichtung (110, 110a, 210_1-210_n), die eine Mehrzahl an Speicherzellen (MCS) umfasst; und einen Controller (120, 120a, 220), der eingerichtet ist, einen Vergleichs- und Schreibvorgang an den Speicherzellen (MCS) unter Verwendung der ersten Schreibdaten (WD1) durchzuführen, die in die Speicherzellen (MCS) geschrieben werden sollen, wobei der Controller (120, 120a, 220) den Vergleichs- und Schreibvorgang durchführt, indem er: Lesedaten (RD1) aus den Speicherzellen (MCS) ausliest; die ersten Schreibdaten (WD1) invertiert, um zweite Schreibdaten (WD2) zu erzeugen; ein erstes Flag-Bit zu den ersten Schreibdaten (WD1) hinzufügt, um dritte Schreibdaten zu erzeugen, und ein zweites Flag-Bit zu den zweiten Schreibdaten (WD2) hinzufügt, um vierte Schreibdaten zu erzeugen; einen Verstärkungsvorgang an allen von den dritten Schreibdaten und vierten Schreibdaten durchführt, um fünfte Schreibdaten (WD3) und sechste Schreibdaten (WD4) zu erzeugen; und die Lesedaten (RD1) mit jeweils den fünften Schreibdaten (WD3) und den sechsten Schreibdaten (WD4) vergleicht und entweder die fünften oder die sechsten Schreibdaten (WD5) in die Speicherzellen (MCS) basierend auf einem Ergebnis des Vergleichs schreibt, wobei der Controller (120, 120a, 220) den Vergleichs- und Schreibvorgang durchführt, indem er die Lesedaten (RD1) ausliest, die Lesedaten (RD1) mit den fünften Schreibdaten (WD3) vergleicht, die Lesedaten (RD1) mit den sechsten Schreibdaten (WD4) vergleicht und entweder die fünften oder die sechsten Schreibdaten (WD5) schreibt.
  12. Speichersystem (100, 200) nach Anspruch 11, wobei der Controller (120, 120a, 220) den Verstärkungsvorgang durchführt, indem er: ferner ein erstes Kopie-Flag-Bit zu den dritten Schreibdaten hinzufügt, wobei das erste Kopie-Flag-Bit mit dem ersten Flag-Bit identisch ist; und ferner ein zweites Kopie-Flag-Bit zu den vierten Schreibdaten hinzufügt, wobei das zweite Kopie-Flag-Bit mit dem zweiten Flag-Bit identisch ist.
  13. Speichersystem (100, 200) nach Anspruch 12, wobei der Controller (120, 120a, 220) eine erste Fehlerkorrekturcodierung an den ersten Schreibdaten (WD1) durchführt und das erste Flag-Bit zu einem Ergebnis der ersten Fehlerkorrekturcodierung hinzufügt, um die dritten Schreibdaten zu erzeugen, und wobei der Controller (120, 120a, 220) eine zweite Fehlerkorrekturcodierung an den zweiten Schreibdaten (WD2) durchführt und das zweite Flag-Bit zu einem Ergebnis der zweiten Fehlerkorrekturcodierung hinzufügt, um die vierten Schreibdaten zu erzeugen.
  14. Speichersystem (100, 200) nach Anspruch 11, wobei der Controller (120, 120a, 220) den Verstärkungsvorgang durchführt, indem er: an jeweils den dritten Schreibdaten und den vierten Schreibdaten eine Fehlerkorrekturcodierung durchführt.
  15. Speichersystem (100, 200) nach Anspruch 13, wobei der Controller (120, 120a, 220) die Fehlerkorrekturcodierung an den dritten Schreibdaten und den vierten Schreibdaten parallel durchführt.
  16. Speichersystem (100, 200) nach Anspruch 11, ferner aufweisend: eine zweite nichtflüchtige Speichervorrichtung (110, 110a, 210_1-210_n), wobei der Controller (120, 120a, 220) eingerichtet ist: Schreibdaten in erste Schreibdaten (WD1) und zweite Schreibdaten (WD2) aufzuteilen; und einen zweiten Vergleichs- und Schreibvorgang an Speicherzellen (MCS) der zweiten nichtflüchtigen Speichervorrichtung unter Verwendung der zweiten Schreibdaten (WD2) durchzuführen, und wobei der zweite Vergleichs- und Schreibvorgang gleichzeitig mit dem Vergleichs- und Schreibvorgang durchgeführt wird.
  17. Speichersystem (100, 200) nach Anspruch 11, wobei die nichtflüchtige Speichervorrichtung (110, 110a, 210_1-210_n) eine erste nichtflüchtige Speichervorrichtung (110, 110a, 210_1-210_n) und eine zweite nichtflüchtige Speichervorrichtung umfasst, wobei die Speicherzellen (MCS) erste Speicherzellen der ersten nichtflüchtigen Speichervorrichtung (110, 110a, 210_1-210_n) und zweite Speicherzellen der zweiten nichtflüchtigen Speichervorrichtung (110, 110a, 210_1-210_n) umfassen, und wobei der Controller (120, 120a, 220) die fünften Schreibdaten (WD3) oder die sechsten Schreibdaten (WD4) aufteilt, sodass sie jeweils in die ersten Speicherzellen und die zweiten Speicherzellen geschrieben werden.
  18. Speichersystem (100, 200) aufweisend: eine nichtflüchtige Speichervorrichtung (110, 110a, 210_1-210_n), die eine Mehrzahl an Speicherzellen (MCS) umfasst; und einen Controller (120, 120a, 220), der eingerichtet ist, einen Vergleichs- und Schreibvorgang an den Speicherzellen (MCS) unter Verwendung der ersten Schreibdaten (WD1) durchzuführen, die in die Speicherzellen (MCS) geschrieben werden sollen, wobei der Controller (120, 120a, 220) den Vergleichs- und Schreibvorgang durchführt, indem er: Lesedaten (RD1) aus den Speicherzellen (MCS) ausliest; eine erste Codierung an den ersten Schreibdaten (WD1) durchführt, um zweite Schreibdaten (WD2) zu erzeugen; eine zweite Codierung an den zweiten Schreibdaten (WD2) durchführt, um dritte Schreibdaten zu erzeugen; die dritten Schreibdaten invertiert, um vierte Schreibdaten zu erzeugen; ein erstes Flag-Bit zu den dritten Schreibdaten hinzufügt, um fünfte Schreibdaten (WD3) zu erzeugen, und ein zweites Flag-Bit zu den vierten Schreibdaten hinzufügt, um sechste Schreibdaten (WD4) zu erzeugen; und die Lesedaten (RD1) mit jeweils den fünften Schreibdaten (WD3) und den sechsten Schreibdaten (WD4) vergleicht und entweder die fünften oder die sechsten Schreibdaten (WD5) in die Speicherzellen (MCS) basierend auf einem Ergebnis des Vergleichs schreibt, wobei der Controller (120, 120a, 220) den Vergleichs- und Schreibvorgang durchführt, indem er die Lesedaten (RD1) ausliest, die Lesedaten (RD1) mit den fünften Schreibdaten (WD3) vergleicht, die Lesedaten (RD1) mit den sechsten Schreibdaten (WD4) vergleicht und entweder die fünften oder die sechsten Schreibdaten (WD5) schreibt.
  19. Speichersystem (100, 200) nach Anspruch 18, wobei der Controller (120, 120a, 220) ferner eingerichtet ist, einen Lesevorgang an den Speicherzellen (MCS) durchzuführen, indem er: erste Lesedaten (RD15) aus den Speicherzellen (MCS) ausliest; ein Flag-Bit von den ersten Lesedaten (RD15) erfasst und das erfasste Flag-Bit von den ersten Lesedaten (RD15) entfernt, um zweite Lesedaten (RD16) zu erzeugen; entweder i) Erhalten der zweiten Lesedaten (RD16) oder ii) Invertieren der zweiten Lesedaten (RD16), um dritte Lesedaten (RD17) zu erzeugen, basierend auf dem erfassten Flag-Bit durchführt; eine zweite Decodierung entsprechend der zweiten Codierung an den dritten Lesedaten (RD17) durchführt, um vierte Lesedaten (RD18) zu erzeugen; eine erste Decodierung entsprechend der ersten Codierung an den vierten Lesedaten durchführt (RD18), um fünfte Lesedaten (RD19) zu erzeugen; und die fünften Lesedaten (RD19) ausgibt, wenn die erste Decodierung erfolgreich ist.
  20. Speichersystem (100, 200) nach Anspruch 19, wobei der Controller (120, 120a, 220) ferner den Lesevorgang durchführt, indem er: die zweite Decodierung an invertierten Daten der dritten Lesedaten, die in der zweiten Decodierung verwendet wurden, durchführt, um sechste Lesedaten zu erzeugen, wenn die erste Decodierung misslingt; die erste Decodierung an den sechsten Lesedaten durchführt, um siebte Lesedaten zu erzeugen; und die siebten Lesedaten ausgibt, wenn die erste Decodierung, die mit den siebten Lesedaten assoziiert ist, erfolgreich ist.
DE102019123510.3A 2018-12-11 2019-09-03 Nichtflüchtige Speichervorrichtung und Speichersystem, das die nichtflüchtige Speichervorrichtung umfasst Active DE102019123510B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180159264A KR20200071484A (ko) 2018-12-11 2018-12-11 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 포함하는 메모리 시스템
KR10-2018-0159264 2018-12-11

Publications (2)

Publication Number Publication Date
DE102019123510A1 DE102019123510A1 (de) 2020-06-18
DE102019123510B4 true DE102019123510B4 (de) 2024-03-21

Family

ID=70859491

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019123510.3A Active DE102019123510B4 (de) 2018-12-11 2019-09-03 Nichtflüchtige Speichervorrichtung und Speichersystem, das die nichtflüchtige Speichervorrichtung umfasst

Country Status (4)

Country Link
US (2) US11144388B2 (de)
KR (1) KR20200071484A (de)
CN (1) CN111312316A (de)
DE (1) DE102019123510B4 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200071484A (ko) 2018-12-11 2020-06-19 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 포함하는 메모리 시스템
US10937495B2 (en) * 2019-07-02 2021-03-02 Winbond Electronics Corp. Resistive memory apparatus and method for writing data thereof
KR20210004135A (ko) * 2019-07-03 2021-01-13 에스케이하이닉스 주식회사 패일 정보 제어회로, 이를 포함하는 반도체 장치 및 반도체 장치의 패일 정보 제어방법
TWI737495B (zh) * 2020-09-17 2021-08-21 大陸商珠海南北極科技有限公司 記憶體裝置的控制方法
KR20230022060A (ko) * 2021-08-06 2023-02-14 삼성전자주식회사 설정 데이터를 저장하는 메모리 장치 및 그 동작방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9778985B1 (en) 2016-08-17 2017-10-03 SK Hynix Inc. Operating method of data storage device

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05164607A (ja) * 1991-12-10 1993-06-29 Murata Mfg Co Ltd 温度補償型焦電型赤外線検出器
KR100460708B1 (ko) 1997-09-23 2005-05-24 삼성전자주식회사 반도체 메모리 테스트용 에러체크 및 정정회로
US7549011B2 (en) 2001-08-30 2009-06-16 Micron Technology, Inc. Bit inversion in memory devices
JP2006004475A (ja) * 2004-06-15 2006-01-05 Toshiba Corp 半導体集積回路装置
KR100613463B1 (ko) * 2005-07-06 2006-08-22 주식회사 하이닉스반도체 반도체 장치의 데이터 출력장치 및 출력방법
KR100827702B1 (ko) 2006-11-01 2008-05-07 삼성전자주식회사 가변저항 반도체 메모리 장치
US7577028B2 (en) 2007-03-23 2009-08-18 Intel Corporation Memory storage technique for a bi-directionally programmable memory device
JP4719236B2 (ja) * 2008-03-21 2011-07-06 株式会社東芝 半導体記憶装置及び半導体記憶システム
US8583986B2 (en) * 2008-12-17 2013-11-12 Seagate Technology Llc Solid-state memory with error correction coding
KR101650130B1 (ko) * 2010-05-14 2016-08-24 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법
US8848465B2 (en) 2011-07-06 2014-09-30 Samsung Electronics Co., Ltd. Memory devices including selective RWW and RMW decoding
KR102049281B1 (ko) * 2012-10-23 2019-11-27 삼성전자주식회사 불휘발성 메모리 및 컨트롤러를 포함하는 메모리 시스템, 그리고 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법
US9183082B2 (en) * 2013-01-29 2015-11-10 Qualcomm Incorporated Error detection and correction of one-time programmable elements
CN104142892B (zh) * 2013-05-09 2017-08-11 华为技术有限公司 一种数据读写方法、装置及系统
KR20160025927A (ko) * 2014-08-28 2016-03-09 에스케이하이닉스 주식회사 반도체 메모리 장치
US9979416B2 (en) 2014-12-10 2018-05-22 Rambus Inc. Memory controller and method of data bus inversion using an error detection correction code
JP6272581B2 (ja) 2015-09-07 2018-01-31 三菱電機株式会社 符号化装置、復号装置及び送信装置
KR20170032052A (ko) * 2015-09-14 2017-03-22 에스케이하이닉스 주식회사 에러정정 장치 및 에러정정 방법
JP6606039B2 (ja) 2016-09-09 2019-11-13 東芝メモリ株式会社 メモリシステムおよび制御方法
KR20180085396A (ko) * 2017-01-18 2018-07-27 에스케이하이닉스 주식회사 비휘발성 메모리 장치, 및 그의 데이터 라이트 동작방법
KR20180087496A (ko) 2017-01-23 2018-08-02 에스케이하이닉스 주식회사 메모리 시스템
KR20200071484A (ko) 2018-12-11 2020-06-19 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 포함하는 메모리 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9778985B1 (en) 2016-08-17 2017-10-03 SK Hynix Inc. Operating method of data storage device

Also Published As

Publication number Publication date
US20220004457A1 (en) 2022-01-06
DE102019123510A1 (de) 2020-06-18
US11144388B2 (en) 2021-10-12
US20200183784A1 (en) 2020-06-11
US12013754B2 (en) 2024-06-18
KR20200071484A (ko) 2020-06-19
CN111312316A (zh) 2020-06-19

Similar Documents

Publication Publication Date Title
DE102019123510B4 (de) Nichtflüchtige Speichervorrichtung und Speichersystem, das die nichtflüchtige Speichervorrichtung umfasst
DE112011100371B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE19782077B4 (de) Verfahren und Vorrichtung zum Korrigieren eines Mehrpegelzellenspeichers durch Verwendung fehlerlokalisierender Codes
DE102008003113B4 (de) ECC-Steuereinheit, Speichersystem und Verfahren zur Korrektur eines Fehlers
DE102013020712B4 (de) Techniken zum Speichern von Bits in Speicherzellen mit Hängenbleiben-auf-0-oder-1-Fehlern
DE112014004778B4 (de) Vorrichtung und Verfahren zum Verwalten von Chipgruppen
DE60224552T2 (de) Fehlerbehandlung für beschreibbare referenz-speicherzellen zum verfolgen von einsatzspannungsdriften
DE102005048255A1 (de) Integriertes Schaltungsbauelement und Betriebsverfahren
DE112007003080T5 (de) Verfahren, System und Vorrichtung für den ECC-Schutz von kleinen Datenstrukturen
CN111553473A (zh) 数据冗余方法及执行数据冗余方法的神经网络处理器
DE112014001305T5 (de) Auswahl einer redundanten Datenspeicherkonfiguration auf der Grundlage verfügbaren Speicherplatzes
DE112007003015T5 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
DE102011108933A1 (de) Sichere Speicherung durch interneBetriebssicherstellung
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE2619159A1 (de) Fehlererkennungs- und korrektureinrichtung
DE102007038114A1 (de) Fehlerkorrekturschaltung, Halbleiterspeicherelement und Fehlerkorrekturverfahren
DE102013211077A1 (de) Verfahren zum Testen eines Speichers und Speichersystem
DE112021004294T5 (de) Verfahren und einrichtung zum bestimmen, wann der tatsächliche verschleiss einer flash-speichervorrichtung von zuverlässigkeitszuständen für die flash-speichervorrichtung abweicht
DE102015201384A1 (de) Vorrichtung und Verfahren zum Verbessern der Datenspeicherung durch Dateninvertierung
DE102011054918A1 (de) Nichtflüchtige Speichervorrichtung, Verfahren zum Betreiben derselben und elektronische Vorrichtung mit derselben
DE112021002268T5 (de) Neuronales Regressionsnetzwerk zum Identifizieren von Schwellenspannungen, die beim Lesen von Flash-Speichervorrichtungen zu verwenden sind
DE102018105434A1 (de) Verfahren und System zum Abtasten von gelöschten Flashspeicherseiten mit Querverweis auf verwandte Anwendungen
DE102020119694A1 (de) Verfahren zur Steuerung einer Operation einer nichtflüchtigen Speichervorrichtung unter Verwendung von Maschinenlernen und Speichersystem
DE102018124836A1 (de) Neuartiger speicherbaustein
DE1284996B (de) Leseschaltung fuer einen Speicher

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division