DE102013111549B4 - Kodierung von Programmdaten basierend auf in zu programmierenden Speicherzellen gespeicherten Daten - Google Patents

Kodierung von Programmdaten basierend auf in zu programmierenden Speicherzellen gespeicherten Daten Download PDF

Info

Publication number
DE102013111549B4
DE102013111549B4 DE102013111549.7A DE102013111549A DE102013111549B4 DE 102013111549 B4 DE102013111549 B4 DE 102013111549B4 DE 102013111549 A DE102013111549 A DE 102013111549A DE 102013111549 B4 DE102013111549 B4 DE 102013111549B4
Authority
DE
Germany
Prior art keywords
data
encoding
program
program data
candidate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102013111549.7A
Other languages
English (en)
Other versions
DE102013111549A1 (de
Inventor
Hyunseuk Yoo
Junjin Kong
Changkyu Seol
Hong Rak Son
Younggeon Yoo
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 DE102013111549A1 publication Critical patent/DE102013111549A1/de
Application granted granted Critical
Publication of DE102013111549B4 publication Critical patent/DE102013111549B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1659Cell access
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1675Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • 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
    • 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
    • G11C2013/0076Write operation performed depending on read result

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Semiconductor Memories (AREA)
  • Read Only Memory (AREA)

Abstract

Verfahren zum Programmieren von Daten in einer nichtflüchtigen Speichervorrichtung (1100, 2100), das Folgendes aufweist:ein Empfangen von Programmdaten, welche in ausgewählte Speicherzellen (MC) der nichtflüchtigen Speichervorrichtung (1100, 2100), zu programmieren sind;ein Lesen von Daten aus den ausgewählten Speicherzellen;ein Kodieren der Programmdaten unter Verwendung wenigstens eines Kodier-Schemas ausgewählt aus mehreren Kodier Schemata gemäß einem Vergleich der Programmdaten und der gelesenen Daten;ein Erzeugen von Flag-Daten, welche Kodier-Informationen aufweisen; undein Programmieren der kodierten Programmdaten und der Flag-Daten in die ausgewählten Speicherzellen,wobei die Kodier-Schemata ein Zirkular-Verschiebe-Kodier-Schema aufweisen, um Kandidaten-Daten über eine Zirkular-Verschiebung der Programmdaten zu erzeugen, und die Flag-Daten-Informationen über die Anzahl von Bits der kodierten Daten, welche zirkular von den Programmdaten verschoben sind, aufweisen.

Description

  • HINTERGRUND DER ERFINDUNG
  • Die US 2012 / 0 087 182 A1 offenbart einen Phasenänderungsspeicher (PCM) mit einem Datenfeld zum Speichern von Datenbits, die einen Datenwert oder eine Inversion des Datenwerts darstellen, und einem Polaritätsfeld zum Speichern einer Vielzahl von Polaritätsbits, die anzeigen, dass die im Datenfeld gespeicherten Datenbits den Datenwert oder die Inversion des Datenwerts darstellen. In einer Ausführungsform dieses Stands der Technik zeigt eine ungerade Anzahl von gesetzten Polaritätsbits an, dass die Datenbits die Inversion des Datenwertes darstellen, und eine gerade Anzahl von gesetzten Polaritätsbits zeigt an, dass die Datenbits den Datenwert darstellen. Das PCM-Gerät verfügt vermutlich über eine erhöhte Ausdauer und eine verbesserte Fehlertoleranz.
  • Die DE 603 03 895 T2 offenbart ein Verfahren zum Speichern von Daten in einem nichtflüchtigen Speicher eines Speichersystems, wobei das Verfahren Folgendes umfasst: Identifizieren eines ersten Blocks, in dem die Daten gespeichert werden sollen; und dadurch gekennzeichnet, dass das Verfahren ferner umfasst: Erhalten eines dem ersten Block zugeordneten Indikators, wobei der Indikator einen Wert besitzt, der die Zuverlässigkeit des ersten Blocks angibt; in Reaktion darauf, dass der dem ersten Block zugeordnete Indikator ein Kriterium erfüllt, Codieren der zu speichernden Daten unter Verwendung eines ersten Fehlerdetektionsalgorithmus und Schreiben der codierten Daten unter Verwendung des ersten Fehlerdetektionsalgorithmus in den ersten Block; und in Reaktion darauf, dass der dem ersten Block zugeordnete Indikator das Kriterium nicht erfüllt, Codieren der zu speichernden Daten unter Verwendung eines zweiten Fehlerdetektionsalgorithmus, wobei der zweite Fehlerdetektionsalgorithmus eine höhere Fehlerdetektionsfähigkeit als der erste Fehlerdetektionsalgorithmus hat, und Schreiben der codierten Daten unter Verwendung des zweiten Fehlerdetektionsalgorithmus in den ersten Block.
  • Die US 2008 / 0 219 047 A1 eine Vorrichtung und ein Verfahren zum Schreiben von Daten in einen Phasenänderungs-Direktzugriffsspeicher (PRAM) unter Verwendung von Funktionen zur Berechnung der Schreibleistung und zur Dateninvertierung bereitgestellt, und insbesondere eine Vorrichtung und ein Verfahren zum Schreiben von Daten, die den Stromverbrauch minimieren können, indem die Leistung berechnet wird, die verbraucht wird, während eingegebene Originaldaten oder invertierte Daten in einen PRAM geschrieben werden, und die Daten gespeichert werden, die weniger Leistung verbrauchen. Ein PRAM verbraucht eine beträchtliche Menge an Energie, um Daten in einer Speicherzelle zu speichern, da ein großer elektrischer Strom für eine lange Zeitspanne fließen muss. Gemäß der vorliegenden Erfindung, da die PRAM verbraucht unterschiedliche Mengen an Strom beim Schreiben von Daten mit einem Wert von 0 und Daten mit einem Wert von 1, die Leistung verbraucht, wenn Eingabe Originaldaten gespeichert wird und die Leistung verbraucht, wenn die Eingabe Originaldaten invertiert und gespeichert werden miteinander verglichen werden, die Daten mit einem kleineren Stromverbrauch gespeichert wird, wenn die Daten in den PRAM als eine Worteinheit geschrieben wird, und somit der Stromverbrauch des PRAM reduziert werden kann.
  • Die US 2011 / 0 213 995 A1 offenbart ein Verfahren zum Betrieb eines Leistungsberaters. Das Verfahren umfasst das Lesen eines ersten Befehlssatzes; das Lesen eines Datenbusses; und das Lesen von Registerwerten, die in mindestens einem Datenregister gespeichert sind. Diese Informationen werden zum Zwecke der Leistungs- bzw. Energienutzung analysiert. Wenn ein Befehlssatz das gleiche Ergebnis mit einem geringeren Energieverbrauch liefern kann, wird der erste Befehlssatz durch den Befehlssatz mit dem geringeren Energieverbrauch ersetzt. Eine dementsprechende Vorrichtung und ein dementsprechendes Computerprogrammprodukt werden in diesem Stand der Technik ebenfalls offenbart.
  • Das erfinderische Konzept bezieht sich allgemein auf Halbleiterspeichervorrichtungen und genauer auf Speichersysteme, welche eine nichtflüchtige Speichervorrichtung und einen Controller aufweisen, und auf ein Verfahren zum Programmieren von Daten in die nichtflüchtige Speichervorrichtung.
  • Halbleiterspeichervorrichtungen können grob in zwei Kategorien unterteilt werden, demgemäß, ob sie Daten beibehalten, wenn sie von Leistung bzw. der Leistungsversorgung getrennt werden. Diese Kategorien weisen flüchtige Speichervorrichtungen auf, welche gespeicherte Daten verlieren, wenn sie von der Leistungsversorgung getrennt werden, und nichtflüchtige Speichervorrichtungen, welche gespeicherte Daten beibehalten, wenn sie von der Leistungsversorgung getrennt werden. Beispiele von flüchtigen Speichervorrichtungen weisen einen statischen Direkt-Zugriffsspeicher (SRAM=Static Random Access Memory), einen dynamischen Direkt-Zugriffsspeicher (DRAM=Dynamic Random Access Memory) und einen synchronen DRAM (SDRAM) auf. Beispiele von nichtflüchtigen Speichervorrichtungen weisen einen Lesespeicher (ROM=Read-Only Memory), einen programmierbaren ROM (PROM), einen elektrisch programmierbaren ROM (EPROM=Electrical Programmable ROM), einen elektrisch löschbaren und programmierbaren ROM (EEPROM=Electrically Erasable Programmabla ROM), eine Flashspeichervorrichtung, einen Phasenübergangs-RAM (PRAM=Phase-Change RAM), einen magnetischen RAM (MRAM=Magnetic RAM), einen Widerstands-RAM (RRAM=Resistive RAM) und einen ferroelektrischen RAM (FRAM=Ferroelectric RAM) auf.
  • Es gibt einen fortdauernden Bedarf dafür, dass nichtflüchtige Speichervorrichtungen verbesserte Performance-Charakteristiken bzw. Leistungsfähigkeits-Charakteristiken wie beispielsweise eine schnellere Betriebsgeschwindigkeit und einen niedrigeren Leistungsverbrauch haben. Um diese Anforderung zu adressieren, haben Forscher Verbesserungen in sowohl den physikalischen als auch den Betriebs-Charakteristiken der Vorrichtungen gesucht.
  • KURZFASSUNG DER ERFINDUNG
  • Es ist ausgehend von den vorstehend geschilderten Problemen eine Aufgabe der vorliegenden Erfindung, ein Speichersystem und Speicherverfahren bereitzustellen, die Verbesserungen in sowohl den physikalischen als auch in den Betriebs-Charakteristiken aufweisen.
  • Diese Aufgabe wird durch die Verfahren der Ansprüche 1, 13 und 16 sowie durch das System des Anspruchs 21 gelöst. Vorteilhafte Weiterbildungen finden sich in den jeweils zugehörigen Unteransprüchen.
  • In einer Ausführungsform, welche Teilaspekte der Erfindung offenbart, weist ein Verfahren zum Programmieren von Daten in eine nichtflüchtige Speichervorrichtung ein Empfangen von Programmdaten, welche in ausgewählte Speicherzellen der nichtflüchtigen Speichervorrichtung zu programmieren sind, ein Lesen von Daten aus den ausgewählten Speicherzellen, ein Codieren der Programmdaten unter Verwendung wenigstens eines Kodierschemas, welches aus mehreren Kodierschemata gemäß einem Vergleich der Programmdaten und der gelesenen Daten ausgewählt ist, ein Erzeugen von Flag-Daten, die Kodier-Informationen aufweisen, und ein Programmieren der kodierten Programmdaten und der Flag-Daten in die ausgewählten Speicherzellen auf.
  • Gemäß eines ergänzenden Aspekts der vorliegenden Offenbarung weist ein Verfahren zum Programmieren eines Speichers ein Empfangen von Programmdaten, welche in ausgewählte Speicherzellen des Speichers zu programmieren sind, ein Lesen der Daten aus den ausgewählten Speicherzellen, ein Unterteilen der Programmdaten in mehrere Programmdatengruppen und der gelesenen Daten in mehrere Lesedatengruppen, ein Kodieren jeder der Programmdatengruppen unter Verwendung wenigstens eines Kodierschemas, welches aus mehreren Kodierschemata ausgewählt ist, gemäß einem Vergleich zwischen jeder Programmdatengruppe und einer entsprechenden Lesedatengruppe, ein Erzeugen kodierter Daten durch ein Kombinieren der kodierten Programmdatengruppen, ein Erzeugen von Flag-Daten, welche Kodier-Informationen für jede der Programmdatengruppen aufweisen, und ein Programmieren der kodierten Daten und der Flag-Daten in die ausgewählten Speicherzellen auf.
  • In noch einer anderen Ausführungsform, welche Teilaspekte der Erfindung offenbart, weist ein Verfahren zum Programmieren eines Speichers ein Empfangen von Programmdaten, welche in ausgewählte Speicherzellen zu programmieren sind, ein Lesen von Daten aus den ausgewählten Speicherzellen, ein Auswählen der Programmdaten als Kandidaten-Daten, ein Vergleichen der Programmdaten mit den Kandidaten-Daten, basierend auf dem Vergleich ein Auswählen der Kandidaten-Daten als kodierte Daten, wo ein Abstand zwischen den Kandidaten-Daten und den gelesenen Daten geringer ist als ein Referenzwert, ein Erzeugen zusätzlicher Kandidaten-Daten über eine rundumlaufende bzw. zirkulare Verschiebung der Kandidaten-Daten, wo ein Abstand zwischen den Kandidaten-Daten und den gelesenen Daten größer als der Referenzwert ist, und wiederum ein Durchführen des Vergleichens und Auswählens von kodierten Daten gemäß dem Vergleich oder den zusätzlichen Kandidaten-Daten, ein Erzeugen von Flag-Daten, welche Informationen über die Anzahl von Bits der kodierten Daten aufweist, welche von den Programmdaten verschoben sind, und ein Programmieren der kodierten Daten und der Flag-Daten bei bzw. zu den Speicherzellen des Speichers auf.
  • In noch einer anderen Ausführungsform, welche Teilaspekte der Erfindung offenbart, weist ein Speichersystem einen Speicher und einen Controller, welcher konfiguriert ist, um den Speicher zu steuern, wobei der Controller einen Direkt-Zugriffsspeicher, eine Host-Schnittstelle, welche konfiguriert ist, um Programmdaten von einer externen Vorrichtung zu empfangen, und um die Programmdaten bei bzw. in dem Direkt-Zugriffsspeicher zu speichern, eine Speicherschnittstelle, welche konfiguriert ist, um Daten, welche aus dem Speicher gelesen werden, zu empfangen, und um die gelesenen Daten in dem Direkt-Zugriffsspeicher zu speichern, eine Daten-Kodiereinheit, welche konfiguriert ist, um die Programmdaten, welche in dem Direkt-Zugriffsspeicher gespeichert sind, basierend auf den gelesenen Daten, welche in dem Direkt-Zugriffsspeicher gespeichert sind, zu kodieren, und um die kodierten Daten in dem Direkt-Zugriffsspeicher zu speichern, und einen Prozessor auf, welcher konfiguriert ist, um die Speicherschnittstelle zu steuern, um die kodierten Daten des Direkt-Zugriffsspeichers in den Speicher zu programmieren. Die Daten-Kodiereinheit ist weiterhin konfiguriert, um die kodierten Daten gemäß einem Vergleich zwischen den gelesenen Daten und den Programmdaten zu erzeugen.
  • Gemäß eines ergänzenden Aspekts der vorliegenden Offenbarung weist ein Verfahren zum Programmieren eines Speichers ein Empfangen von Programmdaten, welche in ausgewählte Speicherzellen zu programmieren sind, ein Lesen von Daten aus den ausgewählten Speicherzellen, ein Unterteilen der Programmdaten in einen ersten und einen zweiten Abschnitt, ein Erzeugen von ersten Kandidaten-Daten durch ein Invertieren des ersten Abschnitts der Programmdaten, ein Erzeugen zweiter Kandidaten-Daten durch ein Invertieren des zweiten Abschnitts der Programmdaten, ein Auswählen von Daten, welche einen geringsten Abstand von den gelesenen Daten unter den ersten und zweiten Kandidaten-Daten haben, als kodierte Daten, ein Erzeugen von Flag-Daten, welche Informationen über die ausgewählten Daten aufweisen, und ein Programmieren der kodierten und der Flag-Daten in die ausgewählten Speicherzellen auf.
  • Diese und andere Ausführungsformen können potentiell die Leistungsmenge, welche in Programmieroperationen aufgenommen wird, durch ein Verringern der Anzahl von Bits, welche in diesen Operationen geändert werden, verringern.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Zeichnungen veranschaulichen ausgewählte Ausführungsformen des erfinderischen Konzepts. In den Zeichnungen zeigen gleiche Referenzzahlen gleiche Merkmale an.
    • 1 ist ein Blockschaltbild, welches ein Speichersystem gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 2 ist ein Blockschaltbild, welches eine nichtflüchtige Speichervorrichtung gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 3A ist ein Schaltbild, welches eine Speicherzell-Anordnung bzw. ein Speicherzell-Array gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 3B ist ein Schaltbild, welches eine Speicherzell-Anordnung bzw. ein Speicherzell-Array gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 3C ist ein Schaltbild, welches eine Speicherzell-Anordnung bzw. ein Speicherzell-Array gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 4 ist ein Blockschaltbild, welches einen Controller gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 5 ist ein Flussdiagramm, welches ein Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 6A ist ein Flussdiagramm, welches ein Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung veranschaulicht, in welcher ein Kodieren durchgeführt wird und Flag-Daten erzeugt werden, gemäß einer Ausführungsform des erfinderischen Konzepts.
    • 6B ist ein Flussdiagramm, welches eine Anwendung des Verfahrens der 6A gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 7A ist ein Diagramm, welches eine andere Anwendung des Verfahrens der 6 gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 7B ist ein Diagramm, welches noch eine andere Anwendung des Verfahrens der 6 gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 7C ist ein Diagramm, welches ein Simulationsergebnis des Verfahrens der 6 unter Verwendung von 2-Bit-Flag-Daten gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 7D ist ein Diagramm, welches ein Simulationsergebnis des Verfahrens der 6 unter Verwendung von 4-Bit-Flag-Daten gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 8 ist ein Flussdiagramm, welches ein anderes Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung veranschaulicht, in welcher ein Kodieren durchgeführt und Flag-Daten erzeugt werden, gemäß einer Ausführungsform des erfinderischen Konzepts.
    • 9 ist ein Diagramm, welches eine Anwendung des Verfahrens der 8 gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 10 ist ein Flussdiagramm, welches noch ein anderes Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung veranschaulicht, in welcher ein Kodieren durchgeführt und Flag-Daten erzeugt werden, gemäß einer Ausführungsform des erfinderischen Konzepts.
    • 11 ist ein Diagramm, welches eine Anwendung des Verfahrens der 10 gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 12 ist ein Flussdiagramm, welches noch ein anderes Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung veranschaulicht, in welcher Kodieren durchgeführt und Flag-Daten erzeugt werden, gemäß einer Ausführungsform des erfinderischen Konzepts.
    • 13A ist ein Diagramm, welches eine Anwendung des Verfahrens der 12 gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 13B ist ein Diagramm, welches eine andere Anwendung des Verfahrens der 12 gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 14 ist ein Flussdiagramm, welches ein Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung gemäß einer anderen Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 15 ist ein Flussdiagramm, welches ein Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung, in welcher ein Kodierschema ausgewählt wird, ein Kodieren durchgeführt wird, und Flag-Daten erzeugt werden, gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 16 ist ein Flussdiagramm, welches ein Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung, in welcher ein Abstand von Kandidaten-Daten von gelesenen Daten vorhergesagt wird, und ein Kodierschema gemäß einem Vorhersageergebnis ausgewählt wird, gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 17 ist ein Flussdiagramm, welches ein Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung, in welcher ein Kodierschema ausgewählt wird, ein Kodieren durchgeführt wird und Flag-Daten erzeugt werden, gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 18 ist ein Flussdiagramm, welches ein Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung, in welcher ein Kodierschema ausgewählt wird, ein Kodieren durchgeführt wird und Flag-Daten erzeugt werden, gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 19 ist ein Flussdiagramm, welches ein Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 20 ist ein Diagramm, welches ein Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung veranschaulicht, in welcher eine Daten-Kodier- und -Dekodier-Einheit Programmdaten unterteilt und unterteilte Abschnitte der Programmdaten dekodiert, gemäß einer Ausführungsform des erfinderischen Konzepts.
    • 21 ist ein Blockschaltbild, welches ein Speichersystem gemäß einer anderen Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 22 ist ein Blockschaltbild, welches ein Computersystem gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG
  • Teilaspekte und Ausführungsformen des erfinderischen Konzepts werden untenstehend unter Bezugnahme auf die beigefügten Zeichnungen beschrieben.
  • In der Beschreibung, welche folgt, werden die Wortlaute „erster/erste/erstes“, „zweiter/zweite/zweites“, „dritter/dritte/drittes“ beim Beschreiben verschiedener Merkmale verwendet, die beschriebenen Merkmale sollten jedoch nicht durch diese Begriffe beschränkt werden. Vielmehr werden diese Begriffe lediglich verwendet, um zwischen verschiedenen Merkmalen zu unterscheiden. Demnach könnte ein erstes Merkmal als ein zweites Merkmal bezeichnet werden, ohne von den relevanten Lehren abzuweichen.
  • Die Terminologie, welche hierin verwendet wird, ist lediglich für den Zweck des Beschreibens bestimmter Ausführungsformen und ist nicht vorgesehen, um für das erfinderische Konzept beschränkend zu sein. Wenn hierin verwendet, sind die Singularformen „einer/eine/eines“ und „der/die/das“ vorgesehen, um ebenso die Pluralformen zu umfassen, solange der Zusammenhang nicht deutlich Anderweitiges anzeigt. Die Begriffe „weist auf und/oder „aufweisend“ zeigen, wo sie hierin verwendet sind, die Anwesenheit von genannten Merkmalen an, schließen jedoch nicht die Anwesenheit von anderen Merkmalen aus. Wenn hierin verwendet, schließt der Begriff „und/oder“ eine beliebige und alle Kombinationen von einem oder mehreren der zugeordneten aufgelisteten Gegenstände ein.
  • Solange nicht anderweitig definiert, haben alle Begriffe (einschließlich technischer und wissenschaftlicher Begriffe), welche hierin verwendet werden, dieselbe Bedeutung, wie sie allgemein durch einen Fachmann verstanden werden. Begriffe wie beispielsweise diejenigen, welche in gemeinhin verwendeten Wörterbüchern definiert sind, sollten als eine Bedeutung habend interpretiert werden, welche mit ihrer Bedeutung in dem Zusammenhang des relevanten Fachgebiets und/oder der vorliegenden Beschreibung konsistent ist, und werden nicht in einem idealisierten oder übermäßig formalen Sinne interpretiert werden, solange nicht ausdrücklich hierin so definiert.
  • 1 ist ein Blockschaltbild, welches ein Speichersystem gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
  • Bezug nehmend auf 1 weist ein Speichersystem 1000 einen nichtflüchtigen Speicher 1100 und einen Controller 1200 auf.
  • Der nichtflüchtige Speicher 1100 arbeitet unter der Steuerung eines Controllers 1200 und führt ein Programmieren, Lesen und Löschen in Antwort auf ein Steuersignal CTRL, einen Befehl CMD, eine Adresse ADDR und Daten, welche von dem Controller 1200 übertragen werden, aus. Der nichtflüchtige Speicher 1100 kann beispielsweise einen nichtflüchtigen Direkt-Zugriffsspeicher aufweisen. Beispielsweise kann er einen Phasenübergangs-RAM (PRAM=Phase-Change RAM), einen magnetischen RAM (MRAM=Magnetic RAM), einen Widerstands-RAM bzw. resistiven RAM (RRAM=Resistive RAM), einen ferroelektrischen RAM (FRAM=Ferroelectric RAM) aufweisen. Alternativ kann der nichtflüchtige Speicher 1100 einen NAND-Flashspeicher aufweisen.
  • Der Controller 1200 steuert den nichtflüchtigen Speicher 1100 und sendet ein Steuersignal CTRL, einen Befehl CMD, eine Adresse ADDR und die Daten zu dem nichtflüchtigen Speicher 1100 oder empfängt Daten von dem nichtflüchtigen Speicher 1100. Der Controller 1200 steuert typischerweise den nichtflüchtigen Speicher 1100 unter der Steuerung eines externen Host.
  • Der Controller 1200 weist eine Daten-Kodier-/Dekodier-Einheit 1260 auf. Die Daten-Kodier-/Dekodier-Einheit 1260 ist konfiguriert, um Daten zu kodieren, welche von dem Host übertragen werden. Die kodierten Daten können in dem nichtflüchtigen Speicher 1100 programmiert werden. Die Daten-Kodier-/Dekodier-Einheit 1260 ist konfiguriert, um Daten, die aus dem nichtflüchtigen Speicher 1100 gelesen werden, zu dekodieren. Die dekodierten Daten werden zu dem Host gesendet.
  • In bestimmten Ausführungsformen speichert der nichtflüchtige Speicher 1100 Daten in Speicherzellen durch Erzeugen eines Stromflusses über leitfähige Leitungen, welche mit den Speicherzellen verbunden sind, um einen logischen Zustand der Speicherzellen zu ändern. Die Anzahl von Speicherzellen, deren Daten beim Programmieren variieren, kann ein Faktor zur Bestimmung der Leistungsaufnahme bzw. des Leistungsverbrauchs des Speichersystems 1000 sein.
  • Die Daten-Kodier-/Dekodier-Einheit 1260 kodiert Daten derart, dass der Leistungsverbrauch beim Programmieren verringert wird. Beispielsweise kann in einer Programmoperation bzw. Programmieroperation die Daten-Kodier-/Dekodier-Einheit 1260 Daten derart kodieren, dass ein Unterschied zwischen Daten, welche in Speicherzellen zu speichern sind, und Daten, welche in den Speicherzellen gespeichert sind, minimiert wird, wie im weiteren Detail untenstehend beschrieben werden wird.
  • Obwohl 1 ein Beispiel zeigt, in welchem eine Daten-Kodier-/Dekodier-Einheit 1260 als eine Komponente bzw. ein Bestandteil des Controllers 1200 enthalten ist, ist das erfinderische Konzept nicht darauf beschränkt. Beispielsweise kann der nichtflüchtige Speicher 1100 alternativ konfiguriert sein, so dass er eine Daten-Kodier-/Dekodier-Einheit 1260 aufweist. Zur Erleichterung der Beschreibung wird angenommen, dass die Daten-Kodier-/Dekodier-Einheit 1260 im Controller 1100 enthalten ist. Das erfinderische Konzept ist jedoch nicht darauf beschränkt.
  • Das Speichersystem 1000 kann beispielsweise eine Speicherkarte wie beispielsweise eine PC/PCMCIA-Karte, eine Compactflash (CF=Compact Flash)-Karte, eine Smartmedia (SM)-Karte (SMC), einen Speicherstick, eine Multimedia-Karte (MMC, RS-MMC, MMCmicro etc.), eine SD-Karte (SD, miniSD, SDHC etc.), ein universaler Flashspeicher (UFS=Universal Flash Storage) usw. sein. Alternativ kann ein Speichersystem 1000 ein Festkörperlaufwerk (SSD=Solid State Drive) bilden. In einigen Ausführungsformen kann das Speichersystem 1000 als ein Hauptspeicher eines Computersystems verwendet werden.
  • 2 ist ein Blockschaltbild, welches ein detaillierteres Beispiel eines nichtflüchtigen Speichers 1100 gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
  • Bezug nehmend auf 2 weist ein nichtflüchtiger Speicher 1100 ein Speicherzell-Array bzw. eine Speicherzellanordnung 1100, einen Zeilendekoder 1120, einen Spaltendekoder 1130, einen Adressdekoder 1140, eine Daten-Eingabe-/Ausgabe-Schaltung 1150 und einen Spannungserzeuger- und Steuerlogikblock 1160 auf.
  • Das Speicherzell-Array 1100 weist mehrere nichtflüchtige Speicherzellen auf. Die Speicherzellen sind mit einem Zahlendekoder 1120 über Wortleitungen und mit einem Spaltendekoder 1130 über Bit-Leitungen verbunden. In einigen Ausführungsformen sind Zeilen von Speicherzellen in dem Speicherzell-Array 1110 mit den Wortleitungen verbunden, und Spalten von Speicherzellen darin sind mit den Bit-Leitungen verbunden.
  • Der Zeilen-Dekoder 1120 ist mit dem Speicherzell-Array 1110 über die Wortleitungen verbunden und arbeitet unter der Steuerung des Spannungserzeugungs- und Steuerlogik-Blocks 1160. Der Zeilendekoder 1120 wählt die Wortleitungen aus oder deselektiert diese in Antwort auf eine dekodierte Zeilenadresse DRA von dem Adressdekoder 1140. Der Zeilendekoder 1120 versorgt wenigstens eine ausgewählte Wortleitung oder de-selektierte Wortleitungen mit Spannungen die von dem Spannungserzeugungs- und Steuerlogik-Block 1160 vorgesehen sind.
  • Der Spaltendekoder 1130 ist mit dem Speicherzell-Array über die Bit-Leitungen verbunden. Der Spaltendekoder 1130 arbeitet unter der Steuerung des Spannungserzeugungs- und Steuerlogik-Blocks 1160. Der Spaltendekoder 1140 wählt aus bzw. selektiert oder de-selektiert die Bit-Leitungen in Antwort auf eine dekodierte Spaltenadresse DCA von dem Adressdekoder 1140. Der Spaltendekoder 1130 versorgt Bit-Leitungen mit Spannungen, welche vom Spannungserzeugungs- und Steuerlogik-Block 1160 vorgesehen sind.
  • In einigen Ausführungsformen empfängt der Spaltendekoder 1130 und speichert Daten über Datenleitungen DL. Der Spaltendekoder 1130 selektiert oder de-selektiert die Bit-Leitungen basierend auf den gespeicherten Daten. Der Spaltendekoder 1130 tastet ab und speichert Spannungen oder Ströme der Bit-Leitungen. Ein Sendeergebnis können Daten, welche aus dem Speicherzell-Array 1110 gelesen werden, sein. Die gelesenen Daten werden über Datenleitungen DL ausgegeben.
  • Der Adressdekoder 1140 arbeitet unter der Steuerung des Spannungserzeugungs- und Steuerlogik-Blocks 1160. Der Addressdekoder 1140 empfängt und speichert eine Adresse ADDR vom Controller 1200. Der Adressdekoder 1140 dekodiert eine Zeilenadresse der gespeicherten Adresse und sendet die resultierende dekodierte Zeilenadresse DRA zu dem Zeilendekoder 1120. Der Adressdekoder 1140 dekodiert eine Spaltenadresse der gespeicherten Adresse und sendet die resultierende dekodierte Spaltenadresse DCA an den Spaltendekoder 1130.
  • Eine Dateneingabe-/Ausgabeschaltung 1150 arbeitet unter der Steuerung des Spannungserzeugungs- und Steuerlogik-Blocks 1160. Die Dateneingabe-/Ausgabeschaltung 1150 speichert Daten, welche von dem Controller 1200 übertragen werden, um sie über Datenleitungen DL auszugeben. Die Dateneingabe-/Ausgabeschaltung 1150 speichert Daten, welche über Datenleitungen DL übertragen werden und gibt sie an den Controller 1200 aus.
  • Der Spannungserzeugungs- und Steuerlogik-Block 1160 ist konfiguriert, um ein Steuersignal CTRL und einen Befehl CMD von dem Controller 1200 zu empfangen. Der Spannungserzeugungs- und Steuerlogik-Block 1160 ist konfiguriert, um den Gesamtbetrieb des nichtflüchtigen Speichers 1100 in Antwort auf das Steuersignal CTRL und den Befehl CMD zu steuern. Beispielsweise kann der Spannungserzeugungs- und Steuerlogik-Block 1160 Spannungen für konstituierende Elemente des nichtflüchtigen Speichers 1100 bereitstellen bzw. zur Verfügung stellen.
  • Die 3A bis 3C sind Schaltbilder, welche Beispiele eines Speicherzell-Array 1110 gemäß verschiedenen Ausführungsformen des erfinderischen Konzepts veranschaulichen.
  • Bezug nehmend auf 3A weist ein Speicherzell-Array 1110a Speicherzellen MC auf, welche mit Wortleitungen WL1 bis WLn und Bit-Leitungen BL1 bis BLm verbunden sind. Jede Speicherzelle MC weist ein variables Widerstandselement auf. Das variable Widerstandselement kann einen Widerstandswert haben, welcher gemäß einer Temperatur, einer Spannungs- oder Strom-Bedingung, einer Magnetfeld-Anordnung usw. variiert. Speicherzellen MC werden gemäß Spannungen von Wortleitungen WL1 bis WLn und Bit-Leitungen BL1 bis BLm selektiert oder de-selektiert.
  • Bezug nehmend auf 3B weist ein Speicherzell-Array 1110b Speicherzellen MC auf, welche mit Wortleitungen WL1 bis WLn und Bit-Leitungen BL1 bis BLm verbunden sind. Jede Speicherzelle MC weist ein variables Widerstandselement und eine Diode auf. Das variable Widerstandselement kann einen Widerstandswert haben, welcher gemäß einer Temperatur, einer Spannungs- oder Strom-Bedingung, einer Magnetfeld-Anordnung usw. variiert. Wo eine Diode eine Durchlassrichtung aufweist bzw. in Vorwärtsrichtung unter Vorspannung steht (forward biased), fließt ein Strom durch die Diode. Wo eine eine Sperrrichtung aufweist bzw. in Rückwärtsrichtung unter Vorspannung steht (reversely biased)fließt kein Strom durch die Diode. Die Diode macht es möglich, die Selektivität von Speicherzellen MC gemäß Spannungen von Wortleitungen WL1 bis WLn und Bit-Leitungen BL1 bis BLm zu verbessern. In einigen Ausführungsformen sind die Orte und Richtungen der Dioden gemäß Programm- bzw. Programmier-, Lese- und Lösch-Schemata eines nichtflüchtigen Speichers 1100 geändert.
  • Bezug nehmend auf 3C weist ein Speicherzell-Array 1110c Speicherzellen MC auf, welche mit Wortleitungen WL1 bis WLn, Source-Leitungen SL1 bis SLn und Bit-Leitungen BL1 bis BLm verbunden sind. Jede Speicherzelle MC weist ein variables Widerstandselement und einen Transistor auf. Das variable Widerstandselement kann einen Widerstandswert haben, welcher gemäß einer Temperatur, einer Spannungs- oder Strom-Bedingung, einer Magnetfeld-Anordnung usw. variiert. Die Transistoren werden gemäß Spannungen von Wortleitungen WL1 bis Wln an- oder abgeschaltet. Die Transistoren können Verbesserungen in der Selektivität der Speicherzellen MC ermöglichen.
  • In bestimmten Ausführungsformen sind die Platzierungen bzw. Orte und Verbindungs-Relationen der Transistoren gemäß Programmier-, Lese- und Lösch-Schemata des nichtflüchtigen Speichers 1100 geändert. Source-Leitungen SL1 bis SLn sind mit dem Zeilendekoder 1120 oder dem Spaltendekoder 1130 verbunden.
  • 4 ist ein Blockschaltbild, welches ein Beispiel des Controllers 1200 gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
  • Bezug nehmend auf 4 weist der Controller 1200 einen Bus 1210, einen Prozessor 1220, einen RAM 1230, eine Host-Schnittstelle 1240, eine Speicherschnittstelle 1250 und eine Daten-Kodier-/Dekodier-Einheit 1260 auf.
  • Der Bus 1210 sieht Kanäle unter konstituierenden Elementen 1220 bis 1260 des Controllers 1200 vor. Der Controller 1220 steuert konstituierende Elemente 1220 bis 1260 des Controllers 1200. Der RAM 1230 wird als ein Arbeitsspeicher des Prozessors 1220 oder des Controllers 1200 verwendet. Der RAM 1230 kann einen DRAM, einen SRAM, einen FRAM, einen MRAM, einen PRAM, einen RRAM usw. aufweisen.
  • Die Host-Schnittstelle 1240 ist konfiguriert, um mit einem Host unter der Steuerung des Prozessors 1220 zu kommunizieren. Die Host-Schnittstelle 1240 kommuniziert mit dem Host unter Verwendung eines Kommunikationsstandards wie beispielsweise eines universellen seriellen Busses (USB=Universal Serial Bus), einer Multimedia-Karte (MMC=Multi Media Card), einer Peripher-Komponenten-Verbindung (PCI=Peripheral Component Interconnection), PCI-Express (PCI-E), einem Advanced Technology Attachment (ATA), Serial-ATA, Parallel-ATA, einem Small Computer Small Interface (SCSI), einem Enhanced Small Disk Interface (ESDI), Integrated Drive Electronics (IDE) und Firewire.
  • Die Speicherschnittstelle 1250 kommuniziert mit dem nichtflüchtigen Speicher 1100. Die Daten-Kodier-/Dekodier-Einheit 1260 führt ein Daten-Kodieren und -Dekodieren durch. Beispielsweise kann die Daten-Kodier-/Dekodier-Einheit 1260 Daten kodieren, welche über eine Host-Schnittstelle 1240 von dem Host empfangen werden und in dem RAM 1230 gespeichert sind. Die kodierten Daten werden in dem RAM 1230 gespeichert und von dort zu dem nichtflüchtigen Speicher 1100 über die Speicherschnittstelle 1250 gesendet. Die Daten-Kodier-/Dekodier-Einheit 1260 dekodiert Daten, welche über die Speicherschnittstelle 1250 von der nichtflüchtigen Speichervorrichtung 1100 empfangen werden und im RAM 1230 gespeichert sind. Die dekodierten Daten werden im RAM 1230 gespeichert, um zu dem Host über eine Host-Schnittstelle 1240 gesendet zu werden.
  • Die Daten-Kodier-/Dekodier-Einheit 1260 kodiert Daten derart, dass eine Variation in Daten von Speicherzellen des nichtflüchtigen Speichers 1100 verringert wird. Die Daten-Kodier-/Dekodier-Einheit 1260 erzeugt Informationen über das Kodieren. Die Informationen werden an den nichtflüchtigen Speicher 1100 mit den kodierten Daten gesendet. Die Daten-Kodier-/Dekodier-Einheit 1260 empfängt auch Kodier-Informationen mit Daten von dem nichtflüchtigen Speicher 1100 und sie dekodiert die zugeführten Daten basierend auf den Kodier-Informationen.
  • Untenstehend wird auf Informationen betreffend das Kodieren, welche durch die Daten-Kodier-/Dekodier-Einheit 1260 erzeugt werden, Bezug genommen als Flag-Daten.
  • In bestimmten Ausführungsformen weist die Daten-Kodier-/Dekodier-Einheit 1260 eine separate Komponente bzw. einen separaten Bestandteil vom Prozessor 1220 auf. In einigen Ausführungsformen kann jedoch die Daten-Kodier-/Dekodier-Einheit 1260 als ein Bestandteil des Prozessors 1220 enthalten sein. Die Daten-Kodier-/Dekodier-Einheit 1260 ist üblicherweise durch eine Software, welche durch den Prozessor 1220 betrieben wird, implementiert. Das erfinderische Konzept jedoch ist nicht darauf beschränkt.
  • 5 ist ein Flussdiagramm, welches ein Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
  • Unter Bezugnahme auf die 1, 4 und 5 werden in Operation S 110 Programmdaten von einem Host empfangen. Der Controller 1200 empfängt die Programmdaten von dem Host über eine Host-Schnittstelle und speichert sie im RAM 1230.
  • In Operation S 120 werden Daten, welche den Programmdaten entsprechen, von dem nichtflüchtigen Speicher 1100 gelesen. Beispielsweise kann der Controller 1200 Daten aus einem Speicherbereich des nichtflüchtigen Speichers 1100 lesen, wo die Programmdaten zu speichern sind. Der Controller 1200 steuert den nichtflüchtigen Speicher 1100, so dass er eine Leseoperation unter Verwendung einer Adresse durchführt, welche mit den Programmdaten empfangen wird. Die gelesenen Daten werden im RAM 1230 über eine Speicherschnittstelle 1250 gespeichert.
  • In Operation S130 werden die Programmdaten gemäß den Programmdaten und den gelesenen Daten kodiert, und Flag-Daten, welche Kodier-Informationen aufweisen, werden erzeugt. Als nächstes vergleicht eine Daten-Kodier-/Dekodier-Einheit 1260 die Programmdaten und die gelesenen Daten, welche in dem RAM 1230 gespeichert sind. Die Daten-Kodier-/Dekodier-Einheit 1260 kodiert die Programmdaten im RAM 1230 gemäß einem Vergleichsergebnis. Die Daten-Kodier-/Dekodier-Einheit 1260 erzeugt wenigstens eine Einheit von Kandidaten-Daten über ein Kodieren und vergleicht die Programmdaten mit den Kandidaten-Daten. Die Daten-Kodier-/Dekodier-Einheit 1260 wählt einen von Kandidaten-Daten und den Programmdaten als kodierte Daten aus.
  • Die kodierten Daten werden im bzw. beim RAM 1230 gespeichert. Wo die Daten-Kodier-/Dekodier-Einheit 1260 die Programmdaten als kodierte Daten auswählt, kann eine Operation des Speicherns der kodierten Daten im bzw. beim RAM 1230 ausgelassen werden. Wo die kodierten Daten ausgewählt werden, erzeugt die Daten-Kodier-/Dekodier-Einheit 1260 Flag-Daten, welche Kodier-Informationen aufweisen. Die Flag-Daten weisen Informationen auf, welche anzeigen, ob eine der Kandidaten-Daten und der Programmdaten als kodierte Daten ausgewählt sind. Die Flag-Daten werden im RAM 1230 gespeichert.
  • In Operation S 140 werden die kodierten Daten und die Flag-Daten im nichtflüchtigen Speicher 1100 gespeichert. Die kodierten Daten und die Flag-Daten, welche im RAM 1230 gespeichert werden, werden über die Speicherschnittstelle 1250 zu dem nichtflüchtigen Speicher 1100 gesendet. Der nichtflüchtige Speicher 1100 programmiert die empfangenen Daten in den Speicherbereich, wo die gelesenen Daten gespeichert werden, unter der Steuerung des Controllers 1200.
  • 6A ist ein Flussdiagramm, welches ein Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung veranschaulicht, in welcher ein Kodieren durchgeführt wird, und Flag-Daten erzeugt werden, gemäß einer Ausführungsform des erfinderischen Konzepts.
  • Bezug nehmend auf 6A werden in Operation S210 Programmdaten als Kandidaten-Daten ausgewählt. In Operation S220 werden Lesedaten mit den Kandidaten-Daten verglichen. Beispielsweise kann ein Abstand zwischen den gelesenen Daten und den Kandidaten-Daten verglichen werden. Der Abstand kann die Anzahl von unterschiedlichen Bits zwischen den gelesenen Daten und Daten, welche mit den gelesenen Daten verglichen werden, sein.
  • In Operation S230 wird eine Bestimmung getätigt, ob der Abstand unter einem Referenzwert ist. Beispielsweise kann bestimmt werden, ob der Abstand zwischen den gelesenen Daten und den Kandidaten-Daten unter dem Referenzwert ist. Wenn der Abstand unter dem Referenzwert ist, werden in Operation S240 die Kandidaten-Daten als kodierte Daten ausgewählt. Danach schreitet das Verfahren zur Operation S280 voran. Wenn der Abstand nicht unter dem Referenzwert ist, schreitet das Verfahren zu Operation S250 voran.
  • In Operation S250 wird eine Bestimmung getätigt, ob eine gegenwärtige Schleife eine maximale Schleife erreicht. Eine maximale Schleifenanzahl wird durch die Daten-Kodier-/Dekodier-Einheit 1260 gesetzt. Die maximale Schleifenanzahl kann vorangehend im Controller 1200 gespeichert werden. Die maximale Schleifenanzahl kann auch über ein Modusregister des Controllers 1200 gewählt werden. Wo die gegenwärtige Schleife die maximale Schleife nicht erreicht, werden in Operation S260 neue Kandidaten-Daten durch ein Verschieben vorangehender Kandidaten-Daten um ein Bit erzeugt. Danach schreitet das Verfahren zu Operation S220 voran. Wo die gegenwärtige Schleife die maximale Schleife erreicht, werden in Operation S270 Daten, welche einen geringsten Abstand von den gelesenen Daten haben, als kodierte Daten ausgewählt.
  • In Operation S280 werden Flag-Daten, welche ausgewählte Daten anzeigen, erzeugt. Beispielsweise können die Flag-Daten Informationen über Daten aufweisen, welche unter den Kandidaten-Daten und den Programmdaten als kodierte Daten ausgewählt werden. Beispielsweise können die Flag-Daten Informationen über die Anzahl von Bits der ausgewählten Daten aufweisen, welche von den Programmdaten verschoben werden.
  • 6B ist ein Flussdiagramm, welches eine Anwendung des Kodier-Verfahrens der 6A gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
  • Bezug nehmend auf 6B wird in Operation S260 ein Abstand zwischen den gelesenen Daten und Programmdaten berechnet. In Operation S270 wird ein Abstand zwischen den Programmdaten und den gelesenen Daten mit einem Referenzwert verglichen. Wenn ein Abstand zwischen den Programmdaten und den gelesenen Daten geringer ist als der Referenzwert, werden in Operation S280 die Programmdaten als kodierte Daten ausgewählt. Wenn ein Abstand zwischen den Programmdaten und den gelesenen Daten mehr als der Referenzwert ist, wird in Operation S290 ein Kodier-Verfahren gemäß einer Art und Weise, welche unter Bezugnahme auf 6A beschrieben ist, durchgeführt. Das heißt, das Kodierverfahren der 6A wird durchgeführt, wo ein Abstand zwischen den Programmdaten und den gelesenen Daten mehr ist als der Referenzwert.
  • 7A ist ein Diagramm, welches eine Anwendung des Verfahrens der 6 gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht. In dem Beispiel der 7A ist eine maximale Schleife bzw. Schleifenzahl 3 und ein Unterschied zeigt einen Unterschied zwischen gelesenen Daten und Programmdaten und Kandidaten-Daten an. Beispielsweise ist, wo ein Bit der gelesenen Daten, welche einem bestimmten Ort entsprechen, gleich zu einem Bit der Programm- oder Kandidaten-Daten ist, ein Differenz-Bit des bestimmten Ortes „0“. Andererseits ist, wo ein Bit der gelesenen Daten, welche einem bestimmten Ort entsprechen, von einem Bit der Programm- oder Kandidaten-Daten unterschiedlich ist, ein Differenz-Bit des bestimmten Ortes „1“.
  • Bezug nehmend auf die 1 und 7A werden als die Kandidaten-Daten durch ein Verschieben der Programmdaten um 1 Bit erzeugt. Beispielsweise können die Programmdaten nach links geschoben werden. Zweite Kandidaten-Daten werden durch ein Verschieben der Programmdaten um zwei Bit (oder ein Verschieben der Kandidaten-Daten um ein Bit) erzeugt. Dritte Kandidaten-Daten werden durch ein Verschieben der Programmdaten um drei Bit (oder ein Verschieben der Kandidaten-Daten um ein Bit) erzeugt.
  • Ein Abstand zwischen den Programmdaten und den gelesenen Daten ist 6. Flag-Daten, welche anzeigen, dass die Programmdaten als kodierte Daten ausgewählt sind, sind „00“. Ein Abstand zwischen den ersten Kandidaten-Daten und den gelesenen Daten ist 6. Flag-Daten, welche anzeigen, dass die ersten Kandidaten-Daten als kodierte Daten ausgewählt sind, sind „01“. Ein Abstand zwischen den zweiten Kandidaten-Daten und den gelesenen Daten ist 4. Flag-Daten, welche anzeigen, dass die zweiten Kandidaten-Daten als kodierte Daten ausgewählt sind, sind „10“. Ein Abstand zwischen den dritten Kandidaten-Daten und den gelesenen Daten ist 4. Flag-Daten, welche anzeigen, dass die dritten Kandidaten-Daten als kodierte Daten ausgewählt sind, sind „11“.
  • Daten, welche den geringsten Abstand von den gelesenen Daten haben, d.h. eine der zweiten und dritten Kandidaten-Daten, werden als kodierte Daten ausgewählt. Wenn die zweiten Kandidaten-Daten ausgewählt werden, werden Flag-Daten „10“ erzeugt. Wenn die dritten Kandidaten-Daten ausgewählt werden, werden Flag-Daten „11“ erzeugt.
  • Ein Abstand zwischen den zweiten oder dritten Kandidaten-Daten und den gelesenen Daten ist kürzer als ein Abstand zwischen den Programmdaten und den gelesenen Daten. 6 Bits werden geändert, wenn die Programmdaten in einen nichtflüchtigen Speicher 1100 programmiert werden. Das heißt, dass Daten von 6 Speicherzellen geändert werden. Andererseits werden 4 Bit geändert, wenn die zweiten oder dritten Kandidaten-Daten in den nichtflüchtigen Speicher 1100 programmiert werden. Das heißt, dass Daten von 4 Speicherzellen geändert werden.
  • Eine Verringerung in der Anzahl von Speicherzellen, welche während einer Programmieroperation geändert werden, kann einen Leistungsverbrauch verringern. Demzufolge kann das obige Verfahren potentiell die Leistungsaufnahme eines Speichersystems 1000 verringern. Solch eine Verringerung in der Leistungsaufnahme kann es auch ermöglichen, die Größe und Komplexität des Speichersystems 1000 zu verringern.
  • 7B ist ein Diagramm, welches eine andere Anwendung des Verfahrens der 6 gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht. In dem Beispiel der 7B ist eine maximale Schleifenzahl (max loop) 3. Verglichen mit 7A wird ein Vergleichen und Verschieben auf gelesenen Daten, Programmdaten und ersten bis dritten Kandidaten-Daten auf einer Byte-um-Byte-Basis durchgeführt. Das heißt, dass ein Kodier-Verfahren mit dem Byte sowie auch mit dem Bit durchgeführt werden kann.
  • 7C ist ein Diagramm, welches ein Simulationsergebnis des Verfahrens der 6 unter Verwendung von 2-Bit-Flag-Daten gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht. 7D ist ein Diagramm, welches ein Simulationsergebnis des Verfahrens der 6 unter Verwendung von 4-Bit-Flag-Daten gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht. In den 7C und 7D sind die Simulationsergebnisse auf zufälligen Datenmustern basiert.
  • Bezug nehmend auf die 7C und 7D zeigen die Diagramme die Anzahl von Bits, welche beim Programmieren von Programmdaten oder beim Programmieren von kodierten Daten gemäß einer Länge N der Programmdaten für eine Zirkular- Verschiebe-Kodierung (circular shift encoding) geändert werden. Wie in den 7C und 7D veranschaulicht ist, ist die Anzahl von Bits, welche beim Programmieren von kodierten Daten geändert werden, verringert im Vergleich mit dem Fall, in dem Programmdaten in den nichtflüchtigen Speicher 1100 programmiert werden. Demnach ist es möglich, den Leistungsverbrauch des Speichersystems 1000 über ein Kodier-Verfahren (oder ein Programmierverfahren) gemäß einer Ausführungsform des erfinderischen Konzepts zu verringern.
  • 8 ist ein Flussdiagramm, welches ein Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung veranschaulicht, in welcher ein Kodieren durchgeführt und Flag-Daten gemäß einer Ausführungsform des erfinderischen Konzepts erzeugt werden. Das Kodieren, welches in 8 veranschaulicht ist, ist ein differentielles Kodieren.
  • Bezug nehmend auf 8 wird in Operation S310 ein erstes Bit von Kandidaten-Daten identisch mit einem ersten Bit von Programmdaten erzeugt. Beispielsweise wird, wenn ein erstes Bit der Programmdaten „0“ ist, ein erstes Bit der Kandidaten-Daten erzeugt, so dass es „0“ ist. Andererseits wird, wenn ein erstes Bit der Programmdaten „1“ ist, ein erstes Bit der Kandidaten-Daten als „1“ erzeugt.
  • In Operation S320 wird ein nächstes Bit des Programm-Bits ausgewählt. In Operation S330 wird eine Bestimmung getätigt, ob das ausgewählte Bit identisch mit einem vorangehenden Bit ist. Beispielsweise kann bestimmt werden, ob das ausgewählte Bit der Programmdaten identisch mit einem vorangehenden Bit ist. Wenn das ausgewählte Bit der Programmdaten „1“ ist, und das vorangehende Bit der Programmdaten „1“ ist, wird bestimmt, dass das ausgewählte Bit der Programmdaten identisch mit dem vorangehenden Bit ist. Wenn das ausgewählte Bit der Programmdaten „0“ ist, und das vorangehende Bit der Programmdaten „0“ ist, wird bestimmt, dass das ausgewählte Bit der Programmdaten identisch mit dem vorangehenden Bit ist. Wenn das ausgewählte Bit der Programmdaten „1“ ist, und das vorangehende Bit der Programmdaten „0“ ist, wird bestimmt, dass das ausgewählte Bit der Programmdaten unterschiedlich von dem vorangehenden Bit ist. Wenn das ausgewählte Bit der Programmdaten „0“ ist, und das vorangehende Bit der Programmdaten „1“ ist, wird bestimmt, dass das ausgewählte Bit der Programmdaten unterschiedlich von dem vorangehenden Bit ist.
  • Wenn bestimmt wird, dass das ausgewählte Bit der Programmdaten identisch mit dem vorangehenden Bit ist, wird in Operation S341 ein Bit des Kandidaten-Bits erzeugt, so dass es einen logisch niedrigen bzw. logischen Low-Wert (beispielsweise „0“) hat. Wenn bestimmt wird, dass das ausgewählte Bit der Programmdaten unterschiedlich zu dem vorangehenden Bit ist, wird in Operation S343 ein Bit des Kandidaten-Bits erzeugt, so dass es einen logisch hohen bzw. logischen High-Wert (beispielsweise „1“) hat. Beispielsweise kann ein Bit der Kandidaten-Daten erzeugt werden, welches an demselben Ort wie das ausgewählte Bit der Programmdaten existiert.
  • In einigen Ausführungsformen kann, wenn bestimmt wird, dass das ausgewählte Bit der Programmdaten identisch mit dem vorangehenden Bit ist, ein Bit des Kandidaten-Bits erzeugt werden, so dass es einen logischen High-Wert (beispielsweise „1“) hat. Wenn bestimmt wird, dass das ausgewählte Bit der Programmdaten unterschiedlich zu dem vorangehenden Bit ist, kann ein Kandidaten-Bit erzeugt werden, so dass es einen logischen Low-Wert (beispielsweise „0“) hat.
  • In Operation S350 wird eine Bestimmung getätigt, ob das ausgewählte Bit ein letztes Bit ist. Beispielsweise kann bestimmt werden, dass das ausgewählte Bit der Programmdaten ein letztes Bit der Programmdaten ist. Wenn das ausgewählte Bit nicht ein letztes Bit ist, schreitet das Verfahren zu Operation S230 voran.
  • Wenn das ausgewählte Bit ein letztes Bit ist, können in den Operationen S360 bis S380 kodierte Daten ausgewählt werden und Flag-Daten werden erzeugt. Die Operationen S360 bis S380 werden gleich wie die Operationen S230 bis S250 der 6 durchgeführt und eine Beschreibung davon wird demnach ausgelassen.
  • 9 ist ein Diagramm, welches eine Anwendung des Verfahrens der 8 gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
  • Bezug nehmend auf 9 wird, da ein erstes Bit von Programmdaten „1“ ist, ein erstes Bit von Kandidaten-Daten „1“ erzeugt. Ein zweites Bit von Programmdaten ist „0“ und ist unterschiedlich von dem ersten Bit. Demnach wird ein zweites Bit von Kandidaten-Daten als „1“ erzeugt. Ähnlich werden zwei kontinuierliche bzw. aufeinander folgende Bits der Programmdaten verglichen, und die Kandidaten-Daten werden gemäß einem Vergleichsergebnis erzeugt.
  • Flag-Daten, welche anzeigen, dass die Programmdaten als kodierte Daten ausgewählt sind, können einen Wert von „0“ haben. Flag-Daten, welche anzeigen, dass die Kandidaten-Daten als kodierte Daten ausgewählt sind, können einen Wert von „1“ haben.
  • Ein Abstand zwischen den Programmdaten und gelesenen Daten ist 6. Ein Abstand zwischen den Kandidaten-Daten und den gelesenen Daten ist „1“. Demnach werden die Kandidaten-Daten ausgewählt, und Flag-Daten, welche einen Wert von „1“ haben, werden erzeugt.
  • 10 ist ein Flussdiagramm, welches ein Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung veranschaulicht, in welcher ein Kodieren durchgeführt wird und Flag-Daten erzeugt werden, gemäß einer Ausführungsform des erfinderischen Konzepts. Das Kodieren, welches in 10 veranschaulicht ist, ist ein binäres Maskenkodieren (binary mask encoding).
  • Bezug nehmend auf 10 werden in Operation S410 vorgewählte Daten erzeugt. Die vorgewählten Daten können vorangehend im Controller 1200 gespeichert sein. Die vorgewählten Daten können über ein Modusregister des Controllers 1200 gespeichert sein. Der Controller 1200 speichert mehrere Daten, um eine der Daten als die vorgewählten Daten auszuwählen. Die Länge der vorgewählten Daten sind identisch zu denjenigen der Programmdaten.
  • In Operation S420 werden Kandidaten-Daten durch ein Ausführen einer Logikoperation auf den Programmdaten und den vorgewählten Daten erzeugt. Beispielsweise wird eine exklusive UND-Operation auf den vorgewählten Daten der Programmdaten durchgeführt, und ein resultierender Wert wird als die Kandidaten-Daten erzeugt.
  • In den Operationen S430 bis S450 werden kodierte Daten ausgewählt und Flag-Daten werden erzeugt. Die Operationen S430 bis S450 werden gleich wie die Operationen S230 bis S250 der 6 durchgeführt, und eine Beschreibung davon wird demnach ausgelassen.
  • 11 ist ein Diagramm, welches eine Anwendung eines Kodier-Verfahrens der 10 veranschaulicht.
  • Bezug nehmend auf 11 wird ein Ergebnis einer exklusiven UND-Operation zwischen Programmdaten und vorgewählten Daten als Kandidaten-Daten erzeugt. Flag-Daten, welche anzeigen, dass die Programmdaten als kodierte Daten ausgewählt werden, können einen Wert von „0“ haben. Flag-Daten, welche anzeigen, dass die Kandidaten-Daten als kodierte Daten ausgewählt sind, können einen Wert von „1“ haben.
  • Ein Abstand zwischen den Programmdaten und gelesenen Daten ist 6. Ein Abstand zwischen den Kandidaten-Daten und gelesenen Daten ist 4. Demnach werden die Kandidaten-Daten als kodierte Daten ausgewählt, und Flag-Daten, welche einen Wert von „1“ haben, werden erzeugt. In bestimmten Ausführungsformen werden die vorgewählten Daten aus mehreren Datensätzen ausgewählt. In diesem Fall können Flag-Daten weiterhin Informationen aufweisen, welche anzeigen, ob ein beliebiger der Datensätze als die vorgewählten Daten ausgewählt ist.
  • 12 ist ein Flussdiagramm, welches ein Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung veranschaulicht, in welcher ein Kodieren durchgeführt wird und Flag-Daten erzeugt werden, gemäß einer Ausführungsform des erfinderischen Konzepts. Das Kodieren, welches in 12 veranschaulicht ist, ist ein Bit-Invertier-Kodieren (bit reverse encoding).
  • Bezug nehmend auf 12 werden in Operation S510 Kandidaten-Daten durch ein Invertieren von Programmdaten erzeugt. In den Operationen S520 bis S540 werden kodierte Daten ausgewählt und Flag-Daten erzeugt. Die Operationen S520 bis S540 werden gleich wie die Operationen S230 bis S250 der 6 durchgeführt und eine Beschreibung davon wird demnach ausgelassen.
  • 13A ist ein Diagramm, welches eine Anwendung des Verfahrens der 12 gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht. In dem Beispiel der 13A werden Kandidaten-Daten durch ein Invertieren von Programmdaten erzeugt. Flag-Daten, welche anzeigen, dass die Programmdaten als kodierte Daten ausgewählt sind, haben einen Wert von „0“. Flag-Daten, welche anzeigen, dass die Kandidaten-Daten als kodierte Daten ausgewählt sind, haben einen Wert von „1“. Ein Abstand zwischen den Programmdaten und gelesenen Daten ist 6. Ein Abstand zwischen den Kandidaten-Daten und den gelesenen Daten ist 2. Demnach werden die Kandidaten-Daten ausgewählt, und Flag-Daten, welche einen Wert von „1“ haben, werden erzeugt.
  • 13B ist ein Diagramm, welches eine andere Anwendung des Verfahrens der 12 gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht. In dem Beispiel der 13B werden Programmdaten in mehrere Abschnitte unterteilt, und jeder der Abschnitte wird selektiv invertiert. Die Programmdaten sind 8-Bit-Daten und in zwei Abschnitte unterteilt.
  • Erste Kandidaten-Daten werden durch ein Invertieren eines ersten Abschnitts der Programmdaten erzeugt. Zweite Kandidaten-Daten werden durch ein Invertieren eines zweiten Abschnitts der Programmdaten erzeugt. Dritte Kandidaten-Daten werden durch ein Invertieren der ersten und zweiten Abschnitte der Programmdaten erzeugt.
  • Flag-Daten, welche anzeigen, dass die Programmdaten als kodierte Daten ausgewählt sind, sind „00“. Flag-Daten, welche anzeigen, dass die ersten Kandidaten-Daten als kodierte Daten ausgewählt sind, sind „01“. Flag-Daten, welche anzeigen, dass die zweiten Kandidaten-Daten als kodierte Daten ausgewählt sind, sind „10“. Flag-Daten, welche anzeigen, dass die dritten Kandidaten-Daten als kodierte Daten ausgewählt sind, sind „11“.
  • Ein Abstand zwischen den Programmdaten und den gelesenen Daten ist 6. Ein Abstand zwischen den ersten Kandidaten-Daten und den gelesenen Daten ist 6. Ein Abstand zwischen den zweiten Kandidaten-Daten und den gelesenen Daten ist 2. Ein Abstand zwischen den dritten Kandidaten-Daten und den gelesenen Daten ist 2. Demnach werden eine der zweiten und dritten Kandidaten-Daten als kodierte Daten ausgewählt, und Flag-Daten, welche einen Wert von „10“ oder „11“ haben, werden erzeugt.
  • 14 ist ein Flussdiagramm, welches ein Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung gemäß einer anderen Ausführungsform des erfinderischen Konzepts veranschaulicht.
  • Bezug nehmend auf 14 werden in Operation S610 Programmdaten empfangen. In Operation S620 werden Daten, welche den Programmdaten entsprechen, gelesen. Die Operationen S610 und S620 werden gleich wie die Operationen S 110 und S120 der 5 durchgeführt.
  • In Operation S630 wird eines von mehreren Kodier-Schemata ausgewählt, die Programmdaten werden unter Verwendung des ausgewählten Kodier-Schemas kodiert, und Flag-Daten, welche Kodier-Informationen aufweisen, werden erzeugt. In Operation S640 werden die kodierten Daten und die Flag-Daten in den nichtflüchtigen Speicher 1100 programmiert. In einigen Ausführungsformen werden die Kodier-Schemata in der Daten-Kodier-/Dekodier-Einheit 1260 gespeichert, und eine Auswahl eines Kodier-Schemas wird durch Daten-Kodier-/Dekodier-Einheit 1260 durchgeführt.
  • 15 ist ein Flussdiagramm, welches ein Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung veranschaulicht, in welcher ein Kodier-Schema ausgewählt ist, ein Kodieren durchgeführt wird und Flag-Daten erzeugt werden, gemäß einer Ausführungsform des erfinderischen Konzepts.
  • Bezug nehmend auf 15 werden in Operation S710 Abstände zwischen Kandidaten-Daten von mehreren Kodier-Schemata und gelesenen Daten vorhergesagt. Ein Vorhersagen des Abstandes wird durch ein Berechnen von Faktoren (hierin nachstehend wird hierauf Bezug genommen als Distanz-Faktoren), welche den Abstand beeinflussen, durchgeführt. Ein Vorhersagen des Abstands kann eine Operation des direkten Berechnens eines vorhergesagten Abstands aufweisen. Ein Vorhersagen des Abstands kann eine Operation des Berechnens des Distanz-Faktors aufweisen. Ein Vorhersagen des Abstands wird beispielsweise verwendet, um das erfinderische Konzept auszudrücken. Das erfinderische Konzept kann nicht auf ein direktes Vorhersagen des Abstandes begrenzt werden.
  • In Operation S720 wird eines der mehreren Kodier-Schemata gemäß einem Vorhersageergebnis ausgewählt. Beispielsweise wird ein Kodier-Schema ausgewählt, von welchem erwartet wird, dass es Kandidaten-Daten erzeugt, welche den geringsten Abstand von den gelesenen Daten haben. In Operation S730 werden die Programmdaten unter Verwendung des ausgewählten Kodier-Schemas kodiert. In Operation S740 werden Flag-Daten, welche Auswahl-Informationen und Kodier-Informationen aufweisen, erzeugt. Die Auswahl-Informationen können Informationen aufweisen, welche anzeigen, ob eines der Kodier-Schemata verwendet wird.
  • 16 ist ein Flussdiagramm, welches ein Beispiel veranschaulicht, in welchem ein Abstand von Kandidaten-Daten von gelesenen Daten vorhergesagt wird, und ein Kodier-Schema gemäß einem Vorhersageergebnis gemäß einer Ausführungsform des erfinderischen Konzepts ausgewählt wird.
  • Bezug nehmend auf 16 werden in Operation S711 Schalt-Bits und identische Bits zwischen gelesenen Daten und Programmdaten gezählt. Der Begriff „Schalt-Bits“ bezieht sich auf ein Bit, welches einen unterschiedlichen Wert in den gelesenen Daten und den Programmdaten hat, und der Begriff „identisches Bit“ bezieht sich auf ein Bit, welches denselben Wert in den gelesenen Daten und den Programmdaten hat. Diese Operation kann einer Operation (einer Operation S 170 in 15) des Vorhersagens eines Abstands zwischen Kandidaten-Daten und Lesedaten entsprechen.
  • In einigen Ausführungsformen wird, wo eine ein Unterschied zwischen den Schalt-Bits und den identischen Bits geringer als ein Grenzwert ist, ein Abstand zwischen gelesenen Daten und Kandidaten-Daten gemäß einem Zirkular-Verschiebe-Kodier-Schema vorhergesagt, so dass er geringer ist als ein Abstand zwischen gelesenen Daten und Kandidaten-Daten, welche gemäß einem Bit-Invertier-Kodier-Schema erzeugt werden. Wo ein Unterschied zwischen den Schalt-Bits und den identischen Bits mehr als ein Grenzwert ist, wird ein Abstand zwischen gelesenen Daten und Kandidaten-Daten, welche gemäß dem Zirkular-Verschiebe-Kodier-Schema erzeugt werden, vorhergesagt, so dass er größer ist als ein Abstand zwischen gelesenen Daten und Kandidaten-Daten, welche gemäß dem Bit-Invertier-Kodier-Schema erzeugt werden.
  • In Operation S721 wird bestimmt, ob ein Unterschied zwischen einer Schalt-Bit-Anzahl und einer identischen Bit-Anzahl geringer ist als ein Grenzwert. Falls dies der Fall ist, wird in Operation S723 das Zirkular-Verschiebe-Kodier-Schema ausgewählt. Falls nicht, wird in Operation S725 das Bit-Invertier-Kodier-Schema ausgewählt.
  • Der Grenzwert ist ein Wert, welcher vorangehend im Controller 1200 gespeichert wird. Der Grenzwert ist ein Wert, welcher über ein Modus-Register des Controllers 1200 gesetzt bzw. gewählt wird. Der Grenzwert ist auf die halbe Länge von Programmdaten gesetzt.
  • Die Operationen S721 bis S725 können einer Operation (einer Operation S720 in 15) des Auswählens eines Kodier-Schemas gemäß einem Vorhersageergebnis entsprechen.
  • Obwohl sich die Beschreibung der 16 auf ein Beispiel bezieht, in welchem eine Daten-Kodier-/Dekodier-Einheit 1260, welche das Zirkular-Verschiebe-Kodier-Schema und das Bit-Invertier-Kodier-Schema aufweist, ein Kodier-Schema unter Verwendung einer Schalt-Bit-Anzahl und einer Anzahl von identischen Bits auswählt, ist das Verfahren nicht auf dieses Beispiel beschränkt.
  • Die Daten-Kodier-/Dekodier-Einheit 1260 kann wenigstens zwei Kodier-Schemata eines Zirkular-Shift-Kodier-Schemas, eines binären Masken-Kodier-Schemas, eines Bit-Invertier-Kodier-Schemas usw. aufweisen. Die Daten-Kodier-/Dekodier-Einheit 1260 kann ein Kodier-Schema gemäß einem Berechnungs-Ergebnis von verschiedenen Abstandsfaktoren wie beispielsweise Anzahlen von Schalt- und identischen Bits, der Übergangsanzahl von Programmdaten-Bits, der Korrelation zwischen Programmdaten und gelesenen Daten, der Korrelation zwischen vorgewählten Daten für ein binäres Masken-Kodieren und Programmdaten, der Anzahl „1“ oder „0“ Bits von Programmdaten usw. auswählen.
  • 17 ist ein Flussdiagramm, welches ein Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung veranschaulicht, in welcher ein Kodier-Schema ausgewählt ist, ein Kodieren durchgeführt wird und Flag-Daten erzeugt werden, gemäß einer Ausführungsform des erfinderischen Konzepts.
  • Bezug nehmend auf 17 wird in den Operationen S810 und S820 eines von mehreren Kodier-Schemata gemäß einem Vorhersageergebnis ausgewählt. Die Operationen S810 und S820 werden gleich wie die Operationen S710 und S720, welche unter Bezugnahme auf 15 beschrieben sind, durchgeführt.
  • In Operation S830 werden Programmdaten unter Verwendung der ausgewählten Kodier-Schemata kodiert. In Operation S840 wird bestimmt, ob ein Abstand zwischen kodierten Daten und gelesenen Daten geringer ist als ein Grenzwert. Wenn der Abstand zwischen den kodierten Daten und den gelesenen Daten mehr als der Grenzwert ist, wird in Operation S850 ein nächstes Kodier-Schema der Kodier-Schemata ausgewählt. Beispielsweise wird ein Kodier-Schema ausgewählt, welches vorhergesagt ist, Kandidaten-Daten zu erzeugen, welche einen nächstnähesten Abstand von dem ausgewählten Kodier-Schema haben. Danach schreitet das Verfahren zur Operation S830 voran.
  • Wenn der Abstand zwischen den kodierten Daten und den gelesenen Daten geringer ist als der Grenzwert, werden in Operation S860 Flag-Informationen, welche Auswahl-Informationen und Kodier-Informationen aufweisen, erzeugt.
  • Das heißt, dass, obwohl ein Kodier-Schema gemäß einem Vorhersageergebnis ausgewählt wird, ein anderes Kodier-Schema ausgewählt werden kann, wenn ein Kodier-Ergebnis des ausgewählten Kodier-Schemas eine bestimmte Bedingung (beispielsweise einen Grenzwert) nicht erfüllt. In bestimmten Ausführungsformen wird der Grenzwert durch ein Verhältnis eines Abstands zwischen Programmdaten und Lesedaten gesetzt bzw. gewählt. Der Grenzwert kann durch ein Verhältnis der Anzahl von allen Bits der Programmdaten gewählt werden.
  • 18 ist ein Flussdiagramm, welches ein Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung veranschaulicht, in welcher ein Kodier-Schema ausgewählt wird, ein Kodieren durchgeführt wird und Flag-Daten erzeugt werden, gemäß einer Ausführungsform des erfinderischen Konzepts.
  • Bezug nehmend auf 18 wird in Operation S910 ein erstes Kodier-Schema von mehreren Kodier-Schemata ausgewählt. In Operation S920 werden Kandidaten-Daten durch ein Kodieren von Programmdaten unter Verwendung des ausgewählten Kodier-Schemas erzeugt. In Operation S930 wird bestimmt, ob ein Abstand geringer ist als ein Referenzwert. Beispielsweise kann bestimmt werden, ob ein Abstand zwischen gelesenen Daten und Kandidaten-Daten geringer ist als der Referenzwert. Wenn der Abstand geringer ist als der Referenzwert, werden in Operation S940 die verglichenen Kandidaten-Daten als kodierte Daten ausgewählt. Danach schreitet das Verfahren zu Operation S980 voran. Wenn der Abstand nicht geringer ist als der Referenzwert, schreitet das Verfahren zu S950 voran.
  • In Operation S930 wird bestimmt, ob das ausgewählte Kodier-Schema ein letztes Kodier-Schema ist. Wenn das ausgewählte Kodier-Schema nicht das letzte Kodier-Schema ist, wird in Operation S960 ein nächstes Kodier-Schema der Kodier-Schemata ausgewählt. Danach schreitet das Verfahren zu Operation S920 voran. Wenn das ausgewählte Kodier-Schema das letzte Kodier-Schema ist, schreitet das Verfahren zu Operation S970 voran.
  • In Operation S970 werden Daten, welche den geringsten Abstand von den gelesenen Daten haben, als kodierte Daten ausgewählt. In Operation S980 werden Flag-Daten, welche Auswahl-Informationen und Kodier-Informationen aufweisen, erzeugt.
  • Wie durch das Vorangehende angezeigt ist, werden Programmdaten sequentiell unter Verwendung mehrerer Kodier-Schemata kodiert und Daten, welche den geringsten Abstand haben, werden als kodierte Daten gemäß Kodier-Ergebnissen ausgewählt.
  • 19 ist ein Flussdiagramm, welches ein Verfahren zum Programmieren einer nichtflüchtigen Speichervorrichtung gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
  • Bezug nehmend auf 19 werden in Operation S 1010 Programmdaten empfangen. In Operation S 1020 werden Daten, welche den Programmdaten entsprechen, aus dem nichtflüchtigen Speicher 1100 gelesen. Operationen S1010 und S1020 werden gleich wie Operationen S110 und S120, welche unter Bezugnahme auf 5 beschrieben sind, durchgeführt.
  • In Operation S1030 werden zwei oder mehr Kodier-Schemata aus mehreren Kodier-Schemata ausgewählt, die Programmdaten werden unter Verwendung der ausgewählten Kodier-Schemata kodiert, und Flag-Daten, welche Auswahl-Informationen und Kodier-Informationen aufweisen, werden erzeugt.
  • In einigen Ausführungsformen werden ein Bit-Invertier-Kodier-Schema und ein Zirkular-Verschiebe-Kodier-Schema ausgewählt. In diesem Fall wird ein erstes Kodieren auf den Programmdaten gemäß dem Bit-Invertier-Kodier-Schema ausgeführt. Danach wird ein zweites Kodieren auf ersten kodierten Daten gemäß dem Zirkular-Verschiebe-Kodier-Schema durchgeführt. Diese Ausführungsform wird unter Verwendung des Bit-Invertier-Kodier-Schemas und des Zirkular-Verschiebe-Kodier-Schemas beschrieben. Das erfinderische Konzept ist jedoch nicht darauf beschränkt.
  • In Operation S 1040 werden die kodierten Daten und die Flag-Daten in dem nichtflüchtigen Speicher 1100 programmiert.
  • In bestimmten Ausführungsformen kann eine Daten-Kodier-/Dekodier-Einheit 1260 zwei oder mehr Kodier-Schemata und eine Kombination davon auswählen. Wie unter Bezugnahme auf die 15 bis 17 beschrieben ist, wählt eine Daten-Kodier-/Dekodier-Einheit 1260 Kodier-Schemata gemäß einem Vorhersageergebnis (oder einem Berechnungsergebnis von Abstandsfaktoren) aus. Wie unter Bezugnahme auf 18 beschrieben ist, führt die Daten-Kodier-/Dekodier-Einheit 1260 ein Kodieren über ein sequentielles Auswählen und Kombinieren von mehreren Kodier-Schemata durch und wählt kodierte Daten gemäß Kodierergebnissen aus.
  • In einigen Ausführungsformen, in denen die Daten-Kodier-/Dekodier-Einheit 1260 ein Zirkular-Verschiebe-Kodier-Schema und ein Bit-Invertier-Kodier-Schema auswählt, werden eine von Programmdaten, Bit-invertierten kodierten Daten, 1-Bit zirkular verschobenen kodierten Daten, 2-Bit zirkular verschobenen kodierten Daten, 3-Bit zirkular verschobenen kodierten Daten, 1-Bit zirkular verschoben und Bit-invertiert kodierten Daten, 2-Bit zirkular verschoben und Bit-invertiert kodierten Daten und 3-Bit zirkular verschoben und Bit-invertiert kodierten Daten als kodierte Daten ausgewählt.
  • 20 ist ein Diagramm, welches ein Beispiel veranschaulicht, in welchem eine Daten-Kodier- und Dekodier-Einheit Programmdaten unterteilt und unterteilte Abschnitte der Programmdaten gemäß einer Ausführungsform des erfinderischen Konzepts dekodiert.
  • Bezug nehmend auf 20 unterteilt die Daten-Kodier-/Dekodier-Einheit 1260 Programmdaten in mehrere Abschnitte und kodiert die Abschnitte der Programmdaten. Beispielsweise kann die Daten-Kodier-/Dekodier-Einheit 1260 dasselbe Kodier-Schema auf Abschnitte der Programmdaten anwenden. Eines eines Zirkular-Verschiebe-Kodier-Schemas, eines Differential-Kodier-Schemas, eines binären Masken-Kodier-Schemas und eines Bit-Invertier-Kodier-Schemas wird auf Abschnitte der Programmdaten angewandt. Flag-Daten weisen Informationen über ein ausgewähltes Kodier-Schema auf.
  • Beispielsweise kann die Daten-Kodier-/Dekodier-Einheit 1260 jeweils uabhängige Kodier-Schemata auf die Abschnitte der Programmdaten anwenden. Ein erster Abschnitt der Programmdaten ist 1-Bit zirkular verschoben kodiert, ein zweiter Abschnitt der Programmdaten ist 3-Bit zirkular verschoben kodiert, ein dritter Abschnitt der Programmdaten sind Originaldaten und ein vierter Abschnitt der Programmdaten ist Bit-invertiert kodiert. Flag-Daten weisen Informationen über Kodier-Schemata, welche jeweils auf Abschnitte der Programmdaten angewandt werden, auf. Wenn die Programmdaten unterteilt und kodiert werden, kann ein Abstand zwischen kodierten Daten und gelesenen Daten weiter verringert werden.
  • 21 ist ein Blockschaltbild, welches ein Speichersystem gemäß einer anderen Ausführungsform des erfinderischen Konzepts veranschaulicht.
  • Bezug nehmend auf 21 weist ein Speichersystem 2000 einen nichtflüchtigen Speicher 2100 und einen Controller 2200 auf.
  • Der nichtflüchtige Speicher 2100 weist mehrere nichtflüchtige Speicherchips, welche in mehrere Gruppen unterteilt sind, auf. Nichtflüchtige Speicherchips in jeder Gruppe kommunizieren mit einem Controller 2200 über einen gemeinsamen Kanal. In beispielhaften Ausführungsformen können die nichtflüchtigen Speicherchips mit dem Controller 2200 über mehrere Kanäle CH1 bis CHk kommunizieren.
  • Der Controller 2200 weist eine Daten-Kodier- und Dekodier-Einheit 2260 auf. Die Daten-Kodier- und Dekodier-Einheit 2260 führt ein Kodieren und ein Erzeugen von Flag-Daten gemäß einer Art und Weise, welche unter Bezugnahme auf die 5 bis 20 beschrieben ist, durch.
  • 22 ist ein Blockschaltbild, welches ein Computersystem gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
  • Bezug nehmend auf 22 weist ein Computer- bzw. Berechnungssystem 3000 einen Bus 3100, einen Prozessor 3200, ein Speichersystem 3300, ein Modem 3400 und eine Verwenderschnittstelle 3500 auf. Der Bus 3100 sieht Kanäle zwischen Komponenten bzw. Bestandteilen von Berechnungssystemen bzw. Computersystemen 3000 vor. Der Prozessor 3200 steuert einen Gesamtbetrieb des Computersystems 3000 und führt eine logische Operation durch. Das Speichersystem 3300 weist ein Speichersystem 1000 oder 2000 gemäß einer Ausführungsform des erfinderischen Konzepts auf. Das Speichersystem 3300 kann als ein Arbeitsspeicher oder Speicher des Computersystems 3000 verwendet werden. Der Arbeitsspeicher ist ein Speicherplatz, welchen der Prozessor 3200 verwendet, um das Computersystem 3000 zu steuern. Der Speicher ist ein Speicherplatz, welchen das Computersystem 3000 verwendet, um Daten langfristig zu behalten.
  • Wo das Speichersystem 3300 als der Arbeitsspeicher verwendet wird, kann das Computersystem 3000 weiterhin einen separaten Speicher aufweisen. Andererseits kann, wo das Speichersystem 3300 als der Speicher verwendet wird, das Computersystem 3000 weiterhin einen getrennten bzw. separaten Arbeitsspeicher aufweisen. Das Modem 3400 führt eine verdrahtete oder drahtlose Kommunikation mit einer externen Vorrichtung durch.
  • Die Verwenderschnittstelle 3500 kann Verwender-Eingabeschnittstellen wie beispielsweise eine Kamera, eine Tastatur, eine Maus, ein Mikrofon, ein Touchpad, ein Touchpanel, einen Knopf bzw. Button, einen Sensor usw. und Verwender-Ausgabeschnittstellen wie eine Anzeige, einen Lautsprecher, eine Rampe, einen Motor usw. aufweisen.
  • Das Computersystem 3000 kann eine mobile Multimedia-Vorrichtung wie beispielsweise ein Smartphone, ein Smartpad usw. oder eine Multimedia-Vorrichtung wie beispielsweise ein Smart-Fernseher, ein Smart-Monitor, ein Computer, ein Notebook-Computer usw. sein.
  • Wie durch das Vorangehende angezeigt ist, werden in verschiedenen Ausführungsformen des erfinderischen Konzepts Programmdaten kodiert, so dass sie einen geringsten Abstand von Daten haben, welche in einem nichtflüchtigen Speicher gespeichert sind, und dann programmiert. Da die Anzahl von Bits, welche beim Programmieren geschaltet werden, verringert ist, kann die Leistungsaufnahme des nichtflüchtigen Speichers verringert werden.

Claims (25)

  1. Verfahren zum Programmieren von Daten in einer nichtflüchtigen Speichervorrichtung (1100, 2100), das Folgendes aufweist: ein Empfangen von Programmdaten, welche in ausgewählte Speicherzellen (MC) der nichtflüchtigen Speichervorrichtung (1100, 2100), zu programmieren sind; ein Lesen von Daten aus den ausgewählten Speicherzellen; ein Kodieren der Programmdaten unter Verwendung wenigstens eines Kodier-Schemas ausgewählt aus mehreren Kodier Schemata gemäß einem Vergleich der Programmdaten und der gelesenen Daten; ein Erzeugen von Flag-Daten, welche Kodier-Informationen aufweisen; und ein Programmieren der kodierten Programmdaten und der Flag-Daten in die ausgewählten Speicherzellen, wobei die Kodier-Schemata ein Zirkular-Verschiebe-Kodier-Schema aufweisen, um Kandidaten-Daten über eine Zirkular-Verschiebung der Programmdaten zu erzeugen, und die Flag-Daten-Informationen über die Anzahl von Bits der kodierten Daten, welche zirkular von den Programmdaten verschoben sind, aufweisen.
  2. Verfahren nach Anspruch 1, wobei das Kodieren der Programmdaten Folgendes aufweist: ein Vorhersagen von Kodier-Ergebnissen der Kodier-Schemata; und ein Auswählen wenigstens eines der Kodier-Schemata gemäß einem Ergebnis der Vorhersage.
  3. Verfahren nach Anspruch 2, wobei das Vorhersagen der Kodier-Ergebnisse ein Zählen von identischen Bits und Schalt-Bits zwischen den gelesenen Daten und den Programmdaten aufweist.
  4. Verfahren nach Anspruch 3, wobei die Kodier-Schemata das Zirkular-Verschiebe-Kodier-Schema und ein Invertier-Kodier-Schema aufweisen, und wobei ein Auswählen des wenigstens einen der Kodier-Schemata Folgendes aufweist: ein Verschieben der Programmdaten unter Verwendung des Zirkular-Verschiebe-Kodier-Schemas, wo ein Unterschied zwischen den Schalt-Bits und den identischen Bits unter einem Grenzwert ist, und ein Invertieren der Programmdaten unter Verwendung des Invertier-Kodier-Schemas, wo ein Unterschied zwischen den Schalt-Bits und den identischen Bits über dem Grenzwert ist.
  5. Verfahren nach Anspruch 2, weiterhin aufweisend: ein Erzeugen von Flag-Daten, welche die Kodier-Informationen aufweisen, wo ein Abstand zwischen den kodierten Daten und den gelesenen Daten unter einem Grenzwert ist; ein Auswählen eines anderen Kodier-Schemas unter den Kodier-Schemata gemäß dem Vorhersage-Ergebnis, wo ein Abstand zwischen den kodierten Daten und den gelesenen Daten über dem Grenzwert ist; ein Kodieren der Programmdaten unter Verwendung des anderen ausgewählten Kodier-Schemas; und ein Erzeugen der Flag-Daten.
  6. Verfahren nach Anspruch 1, wobei das Kodieren der Programmdaten und das Erzeugen der Flag-Daten Folgendes aufweist: ein Erzeugen von Kandidaten-Daten durch ein sequentielles Auswählen der Kodier-Schemata und ein Kodieren der Programmdaten unter Verwendung der sequentiell ausgewählten Kodier-Schemata; ein Vergleichen der gelesenen Daten jeweils mit den Programmdaten und den Kandidaten-Daten, ein Auswählen von Daten, welche den geringsten Abstand von den gelesenen Daten haben, aus den Programmdaten und den Kandidaten-Daten als die kodierten Daten; und ein Erzeugen von Flag-Daten, welche die Kodier-Informationen aufweisen.
  7. Verfahren nach Anspruch 1, wobei das Kodieren der Programmdaten und Erzeugen der Flag-Daten Folgendes aufweist: ein Auswählen von zwei oder mehr Kodier-Schemata; ein Kodieren der Programmdaten unter Verwendung einer Kombination der zwei oder mehr Kodier-Schemata, welche ausgewählt sind; und ein Erzeugen von Flag-Daten, welche die Kodier-Informationen aufweisen.
  8. Verfahren nach Anspruch 1, wobei die Kodier-Informationen Informationen aufweisen über Daten, welche als die kodierten Daten aus den Programmdaten und den Kandidaten-Daten ausgewählt sind, welche durch das wenigstens eine Kodier-Schema erzeugt sind.
  9. Verfahren nach Anspruch 1, wobei die Kodier-Schemata ein Differential-Kodier-Schema aufweisen, welches Kandidaten-Daten erzeugt, welche ein erstes Bit identisch mit einem ersten Bit der Programmdaten, logische High-Werte an Orten, an denen Bits der Programmdaten übergehen, und logische Low-Werte an Orten, an denen Bits der Programmdaten nicht übergehen, haben und die Flag-Daten Informationen über Daten aufweisen, welche als die kodierten Daten aus den Programmdaten und den Kandidaten-Daten ausgewählt sind.
  10. Verfahren nach Anspruch 1, wobei die Kodier-Schemata ein Binär-Masken-Kodier-Schema aufweisen, welches Kandidaten-Daten durch ein Durchführen einer logischen Operation auf vorgewählten Daten und den Programmdaten erzeugt, und die Flag-Daten Informationen über Daten aufweisen, welche als die kodierten Daten aus den Programmdaten und den Kandidaten-Daten ausgewählt sind.
  11. Verfahren nach Anspruch 1, wobei die Kodier-Schemata weiterhin ein Bit-Invertier-Kodier-Schema aufweisen, welches Kandidaten-Daten durch ein Invertieren der Programmdaten erzeugt, und die Flag-Daten Informationen über Daten aufweisen, welche als die kodierten Daten aus den Programmdaten und den Kandidaten-Daten ausgewählt sind.
  12. Verfahren nach Anspruch 1, wobei die Programmdaten in mehrere Unterdaten unterteilt sind, wobei das wenigstens eine Kodier-Schema für jede der Unterdaten ausgewählt wird.
  13. Verfahren zum Programmieren eines Speichers (1100, 2100), das Folgendes aufweist: ein Empfangen von Programmdaten, welche in ausgewählte Speicherzellen (MC) des Speichers (1100, 2100) zu programmieren sind; ein Lesen von Daten aus den ausgewählten Speicherzellen; ein Unterteilen der Programmdaten in mehrere Programmdaten-Gruppen und der gelesenen Daten in mehrere Lesedaten-Gruppen; ein Kodieren jeder der Programmdaten-Gruppen unter Verwendung wenigstens eines Kodier-Schemas ausgewählt aus mehreren Kodier-Schemata gemäß einem Vergleich zwischen jeder Programmdaten-Gruppe und einer entsprechenden Lesedaten-Gruppe; ein Erzeugen von kodierten Daten durch ein Kombinieren der kodierten Programmdaten-Gruppen; ein Erzeugen von Flag-Daten, welche Kodier-Informationen aufweisen, für jede der Programmdaten-Gruppen; und ein Programmieren der kodierten Daten und der Flag-Daten in die ausgewählten Speicherzellen; wobei die Kodier-Schemata ein Zirkular-Verschiebe-Kodier-Schema aufweisen, um Kandidaten-Daten über eine Zirkular-Verschiebung der Programmdaten zu erzeugen, und die Flag-Daten-Informationen über die Anzahl von Bits der kodierten Daten, welche zirkular von den Programmdaten verschoben sind, aufweisen.
  14. Verfahren nach Anspruch 13, wobei der Vergleich ein Bestimmen von Schalt-Bits und identischen Bits zwischen jeder Programmdaten-Gruppe und der entsprechenden Lesedaten-Gruppe aufweist.
  15. Verfahren nach Anspruch 13, wobei das Kodier-Schema für jede Programmdaten-Gruppe demgemäß ausgewählt wird, ob ein Abstand zwischen der Programmdaten-Gruppe und der entsprechenden Lesedaten-Gruppe größer ist als ein vorbestimmter Grenzwert.
  16. Verfahren zum Programmieren eines Speichers (1100, 2100), das Folgendes aufweist: ein Empfangen von Programmdaten, welche in ausgewählte Speicherzellen (MC) zu programmieren sind; ein Lesen von Daten aus den ausgewählten Speicherzellen (MC); ein Auswählen der Programmdaten als Kandidaten-Daten; ein Vergleichen der Programmdaten mit den Kandidaten-Daten; basierend auf dem Vergleich ein Auswählen der Kandidaten-Daten als kodierte Daten, wo ein Abstand zwischen den Kandidaten-Daten und den gelesenen Daten geringer ist als ein Referenzwert, ein Erzeugen von zusätzlichen Kandidaten-Daten über ein zirkulare Verschiebung der Kandidaten-Daten, wo ein Abstand zwischen den Kandidaten-Daten und den gelesenen Daten größer ist als der Referenzwert, und wiederum ein Durchführen des Vergleichens und Auswählens von kodierten Daten gemäß dem Vergleich oder den zusätzlichen Kandidaten-Daten; ein Erzeugen von Flag-Daten, welche Informationen über die Anzahl von Bits der kodierten Daten, welche von den Programmdaten verschoben sind, aufweisen; und ein Programmieren der kodierten Daten und der Flag-Daten in die Speicherzellen (MC) des Speichers (1100, 2100).
  17. Verfahren nach Anspruch 16, wobei, wenn das Wiederum-Durchführen eine vorbestimmte Anzahl von Malen ohne Auswahl der kodierten Daten durchgeführt wird, Daten, welche einen geringsten Abstand von den gelesenen Daten unter den Programmdaten und den Kandidaten-Daten, welche durch die zirkulare Verschiebung erzeugt werden, haben, als die kodierten Daten ausgewählt werden.
  18. Verfahren nach Anspruch 16, wobei der Vergleich ein Bestimmen von Schalt-Bits und identischen Bits zwischen den Programmdaten und den Kandidaten-Daten aufweist.
  19. Verfahren nach Anspruch 16, wobei ein Programmieren der kodierten Daten ein Beibehalten von Bits der gelesenen Daten in den ausgewählten Speicherzellen aufweist, welche dieselben sind wie entsprechende Bits der kodierten Daten.
  20. Verfahren nach Anspruch 16, wobei der Speicher ein Phasenübergangs-Direkt-Zugriffsspeicher ist.
  21. Speichersystem (1000, 2000), das Folgendes aufweist: einen Speicher (1100, 2100); und einen Controller (1200, 2200), welcher konfiguriert ist, um den Speicher (1100, 2100) zu steuern; wobei der Controller (1200, 2200) Folgendes aufweist: einen Direkt-Zugriffsspeicher; eine Host-Schnittstelle (1240), welche konfiguriert ist, um Programmdaten von einer externen Vorrichtung zu empfangen, und um die Programmdaten in dem Direkt-Zugriffsspeicher zu speichern; eine Speicherschnittstelle (1250), welche konfiguriert ist, um Daten, die aus dem Speicher (1100, 2100) gelesen sind, zu empfangen, und um die gelesenen Daten in dem Direkt-Zugriffsspeicher zu speichern; eine Daten-Kodier-Einheit (1260, 2260), welche konfiguriert ist, um die Programmdaten, welche in dem Direkt-Zugriffsspeicher gespeichert sind, basierend auf den gelesenen Daten, welche in dem Direkt-Zugriffsspeicher gespeichert sind, zu kodieren, und um die kodierten Daten in dem Direkt-Zugriffsspeicher zu speichern; und einen Prozessor (1220, 3200), der konfiguriert ist, um die Speicherschnittstelle (1250) zu steuern, so dass sie die kodierten Daten des Direkt-Zugriffsspeichers in den Speicher (1100, 2100) programmiert, wobei die Daten-Kodier-Einheit (1260, 2260) weiterhin konfiguriert ist, um die kodierten Daten gemäß einem Vergleich zwischen den gelesenen Daten und den Programmdaten zu erzeugen, wobei die Daten-Kodiereinheit weiterhin konfiguriert ist, um Kandidaten-Daten über eine Zirkular-Verschiebe-Kodierung der Programmdaten zu erzeugen, und um Daten, welche den geringsten Abstand von den gelesenen Daten haben aus den Programmdaten und den Kandidaten-Daten als die kodierten Daten auszuwählen.
  22. Speichersystem (1000, 2000) nach Anspruch 21, wobei die Daten-Kodier-Einheit (1260, 2260) weiterhin konfiguriert ist, um wenigstens eines von mehreren Kodier-Schemata auszuwählen, und um die Programmdaten unter Verwendung des wenigstens einen Kodier-Schemas zu kodieren.
  23. Speichersystem (1000, 2000) nach Anspruch 21, wobei der Speicher (1100, 2100) einen magnetischen Direkt-Zugriffsspeicher aufweist.
  24. Speichersystem (1000, 2000) nach Anspruch 21, wobei der Speicher (1100, 2100) einen Phasenübergangs-Direkt-Zugriffsspeicher aufweist.
  25. Speichersystem (1000, 2000) nach Anspruch 21, wobei der Vergleich ein Bestimmen von Schalt-Bits und identischen Bits zwischen den Programmdaten und den gelesenen Daten aufweist.
DE102013111549.7A 2012-10-23 2013-10-21 Kodierung von Programmdaten basierend auf in zu programmierenden Speicherzellen gespeicherten Daten Active DE102013111549B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2012-0118019 2012-10-23
KR1020120118019A KR102049281B1 (ko) 2012-10-23 2012-10-23 불휘발성 메모리 및 컨트롤러를 포함하는 메모리 시스템, 그리고 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법

Publications (2)

Publication Number Publication Date
DE102013111549A1 DE102013111549A1 (de) 2014-04-24
DE102013111549B4 true DE102013111549B4 (de) 2024-04-18

Family

ID=50437183

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013111549.7A Active DE102013111549B4 (de) 2012-10-23 2013-10-21 Kodierung von Programmdaten basierend auf in zu programmierenden Speicherzellen gespeicherten Daten

Country Status (6)

Country Link
US (1) US9183138B2 (de)
JP (1) JP6209051B2 (de)
KR (1) KR102049281B1 (de)
CN (1) CN103778961B (de)
DE (1) DE102013111549B4 (de)
TW (1) TWI613658B (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304703B1 (en) * 2015-04-15 2016-04-05 Symbolic Io Corporation Method and apparatus for dense hyper IO digital retention
DE112013007054T5 (de) 2013-06-28 2016-03-17 Intel Corporation Vorrichtung für Schreib- und Lese-Vorgänge mit geringem Energieverbrauch für einen resistiven Speicher
KR102234592B1 (ko) * 2014-07-29 2021-04-05 삼성전자주식회사 불휘발성 메모리, 데이터 저장 장치, 및 데이터 저장 장치의 동작 방법
KR20160108659A (ko) 2015-03-04 2016-09-20 에스케이하이닉스 주식회사 반도체 메모리 장치의 동작 방법 및 반도체 메모리 장치를 포함하는 메모리 시스템
KR102287907B1 (ko) * 2015-06-22 2021-08-10 삼성디스플레이 주식회사 유기 발광 다이오드 표시 장치의 열화 보상기
KR102467072B1 (ko) * 2017-10-26 2022-11-11 삼성전자주식회사 반복 연산 과정을 이용하여 디코딩을 수행하는 디코더 및 이를 이용한 스토리지 장치
US10514980B2 (en) * 2018-03-22 2019-12-24 Winbond Electronics Corp. Encoding method and memory storage apparatus using the same
JP2022505728A (ja) * 2018-10-26 2022-01-14 長江存儲科技有限責任公司 メモリのデータ処理方法および関連するデータプロセッサ
KR20200071484A (ko) 2018-12-11 2020-06-19 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 포함하는 메모리 시스템
CN113160870A (zh) * 2021-03-25 2021-07-23 普冉半导体(上海)股份有限公司 非易失存储器编程方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60303895T2 (de) 2002-10-28 2006-10-05 Sandisk Corp., Sunnyvale Hybridimplementierung von Fehlerkorrekturkoden eines nichtflüchtigen Speichersystems
US20080219047A1 (en) 2007-03-06 2008-09-11 Electronics And Telecommunications Research Institute Apparatus and method for writing data to phase-change memory by using power calculation and data inversion
US20110213995A1 (en) 2007-08-09 2011-09-01 International Business Machines Corporation Method, Apparatus And Computer Program Product Providing Instruction Monitoring For Reduction Of Energy Usage
US20120087182A1 (en) 2010-04-13 2012-04-12 Mosaid Technologies Incorporated Phase-change memory with multiple polarity bits having enhanced endurance and error tolerance

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4134637B2 (ja) 2002-08-27 2008-08-20 株式会社日立製作所 半導体装置
CN1492447A (zh) * 2003-09-22 2004-04-28 中兴通讯股份有限公司 一种快闪存储设备的驱动方法
JP2005108304A (ja) 2003-09-29 2005-04-21 Toshiba Corp 半導体記憶装置及びその制御方法
US7106621B2 (en) 2004-06-30 2006-09-12 Stmicroelectronics, Inc. Random access memory array with parity bit structure
JP2006065986A (ja) 2004-08-27 2006-03-09 Fujitsu Ltd 磁気抵抗メモリおよび磁気抵抗メモリ書き込み方法
JP4217208B2 (ja) 2004-12-20 2009-01-28 パナソニック株式会社 Fifoメモリ
WO2006104002A1 (ja) 2005-03-29 2006-10-05 Nec Corporation 磁気ランダムアクセスメモリ
JP2008059717A (ja) 2006-09-01 2008-03-13 Kobe Univ 半導体装置
KR100827702B1 (ko) * 2006-11-01 2008-05-07 삼성전자주식회사 가변저항 반도체 메모리 장치
KR20080081656A (ko) 2007-03-06 2008-09-10 한국전자통신연구원 상 변화 메모리에서의 쓰기 전력 감소를 위한 선택적데이터 쓰기 장치 및 방법
US7783846B2 (en) 2007-08-09 2010-08-24 International Business Machines Corporation Method, apparatus and computer program product providing energy reduction when storing data in a memory
KR20090016199A (ko) 2007-08-10 2009-02-13 주식회사 하이닉스반도체 상 변화 메모리 장치 및 그 동작방법
KR101281685B1 (ko) 2007-10-04 2013-07-03 삼성전자주식회사 상변화 메모리의 데이터 기록 방법, 데이터 판독 방법, 및그 장치
US9009603B2 (en) 2007-10-24 2015-04-14 Social Communications Company Web browser interface for spatial communication environments
JP4719236B2 (ja) 2008-03-21 2011-07-06 株式会社東芝 半導体記憶装置及び半導体記憶システム
CN101957797B (zh) 2009-07-17 2013-01-09 群联电子股份有限公司 闪速存储器逻辑区块管理方法及其控制电路与储存系统
KR101678407B1 (ko) 2010-05-10 2016-11-23 삼성전자주식회사 데이터 저장 장치 및 그것의 프로그램 방법
US8488363B2 (en) 2010-05-11 2013-07-16 Qualcomm Incorporated Write energy conservation in memory
CN102097125B (zh) 2010-12-07 2013-03-20 清华大学 相变存储器的写操作方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60303895T2 (de) 2002-10-28 2006-10-05 Sandisk Corp., Sunnyvale Hybridimplementierung von Fehlerkorrekturkoden eines nichtflüchtigen Speichersystems
US20080219047A1 (en) 2007-03-06 2008-09-11 Electronics And Telecommunications Research Institute Apparatus and method for writing data to phase-change memory by using power calculation and data inversion
US20110213995A1 (en) 2007-08-09 2011-09-01 International Business Machines Corporation Method, Apparatus And Computer Program Product Providing Instruction Monitoring For Reduction Of Energy Usage
US20120087182A1 (en) 2010-04-13 2012-04-12 Mosaid Technologies Incorporated Phase-change memory with multiple polarity bits having enhanced endurance and error tolerance

Also Published As

Publication number Publication date
JP2014086127A (ja) 2014-05-12
TWI613658B (zh) 2018-02-01
DE102013111549A1 (de) 2014-04-24
CN103778961B (zh) 2019-06-04
JP6209051B2 (ja) 2017-10-04
KR102049281B1 (ko) 2019-11-27
US20140115237A1 (en) 2014-04-24
TW201419286A (zh) 2014-05-16
US9183138B2 (en) 2015-11-10
CN103778961A (zh) 2014-05-07
KR20140051687A (ko) 2014-05-02

Similar Documents

Publication Publication Date Title
DE102013111549B4 (de) Kodierung von Programmdaten basierend auf in zu programmierenden Speicherzellen gespeicherten Daten
DE102011055714B4 (de) Verfahren zum Programmieren einer nicht-flüchtigen Speichervorrichtung
DE102008005338B4 (de) Integrierter Schaltkreis mit einer Speicherzellenanordnung und Verfahren zum Lesen eines Speicherzellenzustands unter Verwendung einer Mehrzahl von Teil-Leseoperationen
DE102013107626A1 (de) Speichervorrichtung, Speichersystem und Verfahren zum Steuern einer Lesespannung der Speichervorrichtung
DE102013100596B4 (de) Nichtflüchtiges Speichersystem mit Programmier- und Löschverfahren und Blockverwaltungsverfahren
DE102013103391A1 (de) Betriebsverfahren eines Controllers, der eine nichtflüchtige Speichervorrichtung steuert, und Mappingmuster-Auswahlverfahren zum Auswählen eines Mappingmusters, das ein polar codiertes Codewort Multibitdaten einer nichtflüchtigen Speichervorrichtung zuordnet
DE102013108456B4 (de) Nichtflüchtige Speichervorrichtung und Programmierverfahren
DE102011056141A1 (de) Negativspannungsgenerator, Dekoder, nicht-flüchtige Speichervorrichtung und Speichersystem, das eine negative Spannung verwendet
DE202014011423U1 (de) Nichtflüchtige Speichervorrichtungen und Speichersysteme
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE102008003055A1 (de) Flash-Speichervorrichtung und Verfahren zum Betreiben derselben
DE102013109235A1 (de) Flash-Speichersystem mit Detektor für anormale Wortleitung und Verfahren zum Erfassen einer anormalen Wortleitung
DE102008009235A1 (de) Speichersystem
DE102013108491A1 (de) Nichtflüchtige Speichervorrichtung und Betriebsverfahren mit variablen Speicherzellenzustandsdefinitionen
CN101533671A (zh) 非易失性存储装置及其操作方法
DE102013200515A1 (de) Halbleiterspeichervorrichtung
DE112015004531T5 (de) Latch-Initialisierung für eine Datenspeichervorrichtung
DE102010037064A1 (de) Nichtflüchtige Speichervorrichtung und -system sowie Verfahren des Programmierens einer nichtflüchtigen Speichervorrichtung
DE112020000237T5 (de) Soft-bit-lesemodusauswahl für nicht-flüchtige speicher
DE112012006472T5 (de) Mindestens teilweises Isolieren von lokaler Zeilen- oder Spaltenschaltung von Speicherzellen vor dem Erzeugen einer Spannungsdifferenz zum Ermöglichen des Auslesens der Zelle
DE102021006246A1 (de) Doppelt verschachtelte Programmierung einer Speichervorrichtung in einem Speicher-Untersystem
DE102008003938A1 (de) Verfahren zum Scramblen von Adressendaten und Speichersystem
DE102021005946A1 (de) Verwaltung der digital gesteuerten ladungspumpen-operation in einem speicher-untersystem
US20130100727A1 (en) Overwriting a memory array
DE102009050745B4 (de) Verfahren zum Zugreifen auf eine Phasenwechselspeichervorrichtung und Phasenwechselspeichervorrichtung

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