-
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.