DE112019000108T5 - Kodier-raten-umschaltmechanismus für flash-speicher - Google Patents

Kodier-raten-umschaltmechanismus für flash-speicher Download PDF

Info

Publication number
DE112019000108T5
DE112019000108T5 DE112019000108.6T DE112019000108T DE112019000108T5 DE 112019000108 T5 DE112019000108 T5 DE 112019000108T5 DE 112019000108 T DE112019000108 T DE 112019000108T DE 112019000108 T5 DE112019000108 T5 DE 112019000108T5
Authority
DE
Germany
Prior art keywords
coding rate
rate
encoding
data storage
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112019000108.6T
Other languages
English (en)
Inventor
Aldo Giovanni Cometti
Aniryudh Reddy Durgam
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE112019000108T5 publication Critical patent/DE112019000108T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/353Adaptation to the channel
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Ein Datenspeichersystem, das zum Umschalten einer Kodier-Rate auf der Basis eines Host-Befehls in der Lage ist, wird offenbart. Ein Controller des Datenspeichersystems kann die Kodier-Rate ein einer Datenspeichervorrichtung auf eine erste Kodier-Rate zum Kodieren von Daten, die in einen nichtflüchtigen Speicher der Datenspeichervorrichtung geschrieben werden sollen, einstellen. Der Controller kann an der Datenspeichervorrichtung einen Host-Befehl, der einen Schaltpunkt zum Umschalten der eingestellten Kodier-Rate von der ersten auf eine zweite Kodier-Rate anzeigt, empfangen. Der Controller kann die eingestellte Kodier-Rate von der ersten auf die zweite Kodier-Rate am angezeigten Schaltpunkt umschalten.

Description

  • HINTERGRUND
  • Nichtflüchtiger Flash-Speicher hat eine begrenzte Lebensdauer. Die Lebensdauer des Flash-Speichers kann einer Anzahl von Programmier-Lösch-Zyklen (engl. program-erase P/E) entsprechen, die der Flash-Speicher ertragen kann. Um die im Flash-Speicher gespeicherten Benutzerdaten vor Beschädigung zu schützen, können Paritätsdaten generiert und zusammen mit den Benutzerdaten gespeichert werden, um die Fehlererkennung und/oder -korrektur zu erleichtern. Wenn eine höhere Kodier-Rate zur Kodierung von Daten verwendet wird, werden weniger Paritätsdaten erzeugt und gespeichert. Da weniger Paritätsdaten gespeichert werden, wenn die höhere Kodier-Rate verwendet wird, kann die höhere Kodier-Rate eine höhere Speicherkapazität des Flash-Speichers ermöglichen. Wird dagegen eine niedrigere Kodier-Rate verwendet, werden mehr Paritätsdaten erzeugt, um die Benutzerdaten vor Fehlern zu schützen, und somit steht weniger Speicherkapazität des Flash-Speichers zur Verfügung.
  • ZUSAMMENFASSUNG
  • Es werden ein System und ein Verfahren zur Umschaltung der Kodier-Rate bzw. Code-Rate für ein Datenspeichersystem bereitgestellt. Gemäß einigen Ausführungsformen umfasst das Verfahren das Einstellen einer Kodier-Rate in einer Datenspeichervorrichtung bzw. in einem Datenspeichergerät auf eine erste Kodier-Rate zum Kodieren von Daten, die in einen nichtflüchtigen Speicher der Datenspeichervorrichtung geschrieben werden sollen, das Empfangen eines Host-Befehls an der Datenspeichervorrichtung, der einen Schaltpunkt zum Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf eine zweite Kodier-Rate anzeigt, und das Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf die zweite Kodier-Rate am angegebenen Schaltpunkt.
  • Gemäß einigen Ausführungsformen umfasst eine Datenspeichervorrichtung einen nichtflüchtigen Speicher und eine(n) mit dem nichtflüchtigen Speicher gekoppelte(n) Controller bzw. Steuerung.
  • Der Controller ist so konfiguriert, dass er: eine Kodier-Rate in der Datenspeichervorrichtung auf eine erste Kodier-Rate zum Kodieren von in den nichtflüchtigen Speicher zu schreibenden Daten einstellt, an der Datenspeichervorrichtung einen Host-Befehl empfängt, der einen Schaltpunkt zum Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf eine zweite Kodier-Rate anzeigt, feststellt, dass der angezeigte Schaltpunkt im nichtflüchtigen Speicher erreicht wurde, und die eingestellte Kodier-Rate von der ersten Kodier-Rate auf die zweite Kodier-Rate als Reaktion auf die Feststellung, dass der angezeigte Schaltpunkt erreicht wurde, umschaltet.
  • Nach einigen Ausführungsformen umfasst ein dauerhaftes bzw. nichtflüchtiges maschinenlesbares Medium Anweisungen darauf, die bei ihrer Ausführung bewirken, dass ein Kodierungsmodul ein Verfahren durchführt. In diesen Ausführungsformen umfasst das Verfahren das Einstellen einer Kodier-Rate auf eine erste Kodier-Rate zum Kodieren von Daten, die in den nichtflüchtigen Speicher einer Datenspeichervorrichtung geschrieben werden sollen, das Empfangen eines Host-Befehls, der einen Schaltpunkt zum Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf eine zweite Kodier-Rate angibt, das Umschalten der eingestellten Kodier-Rate am angegebenen Schaltpunkt von der ersten Kodier-Rate auf die zweite Kodier-Rate, das Lesen und Dekodieren von mit der ersten Kodier-Rate Kodierten Daten aus dem nichtflüchtigen Speicher als Reaktion auf das Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf die zweite Kodier-Rate, das Kodieren der gelesenen und dekodierten Daten mit der zweiten Kodier-Rate und das Schreiben der mit der zweiten Kodier-Rate kodierten Daten in den nichtflüchtigen Speicher.
  • Gemäß einigen Implementierungen umfasst eine Datenspeichervorrichtung einen nichtflüchtigen Speicher, Mittel zum Einstellen einer Kodier-Rate in der Datenspeichervorrichtung auf eine erste Kodier-Rate zum Kodieren von in den nichtflüchtigen Speicher zu schreibenden Daten, Mittel zum Empfangen eines Host-Befehls, der einen Schaltpunkt zum Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf eine zweite Kodier-Rate anzeigt, an der Datenspeichervorrichtung, Mittel zum Bestimmen bzw. Feststellen, dass der angezeigte Schaltpunkt im nichtflüchtigen Speicher erreicht wurde, und Mittel zum Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf die zweite Kodier-Rate als Reaktion auf die Feststellung, dass der angezeigte Schaltpunkt erreicht wurde.
  • Es ist zu verstehen, dass andere Konfigurationen der gegenständlichen Technologie für die Fachperson aus der folgenden ausführlichen Beschreibung, in der verschiedene Konfigurationen der gegenständlichen Technologie zur Veranschaulichung gezeigt und beschrieben werden, leicht ersichtlich sind. Wie sich herausstellen wird, ist die betreffende Technologie zu anderen und unterschiedlichen Konfigurationen fähig bzw. nutzbar und ihre verschiedenen Details können in verschiedenen anderen Aspekten modifiziert werden, ohne den Anwendungsbereich der gegenständlichen Technologie zu verlassen. Dementsprechend sind die Zeichnungen und die detaillierte Beschreibung als illustrativ und nicht als einschränkend anzusehen.
  • Figurenliste
  • Systeme und Methoden, die die verschiedenen Merkmale des Themas Technik verkörpern, werden anhand der folgenden Zeichnungen beschrieben, in denen:
    • 1 ein Beispiel eines nichtflüchtigen Flash-Speichersystems gemäß Aspekten der gegenständlichen Technologie veranschaulicht;
    • 2 eine beispielhafte Grafik zeigt, die Schaltpunkte für eine Kodier-Rate für verschiedene Situationen veranschaulicht;
    • 3 ein beispielhaftes Diagramm zeigt, das die im Controller des nichtflüchtigen Flash-Speichersystems enthaltenen Komponenten nach Aspekten der gegenständlichen Technologie darstellt;
    • 4 ein Flussdiagramm eines Beispielprozesses zur Kodier-Raten-Umschaltung für ein nichtflüchtiges Flash-Speichersystem nach Aspekten der gegenständlichen Technologie zeigt;
    • 5 ein Flussdiagramm eines Beispielprozesses zur Kodier-Raten-Umschaltung für ein nichtflüchtiges Flash-Speichersystem nach Aspekten der gegenständlichen Technologie zeigt.
  • DETAILLIERTE BESCHREIBUNG
  • Die nachfolgende detaillierte Beschreibung ist als Beschreibung verschiedener Ausführungsformen der erfindungsgemäßen Technologie gedacht und soll nicht die einzigen Konfigurationen darstellen, in denen die betreffende Technologie praktiziert werden kann. Die beigefügten Zeichnungen sind hiervon umfasst und sind Teil der detaillierten Beschreibung. Die detaillierte Beschreibung enthält spezifische Details, um ein gründliches Verständnis der betreffenden Technologie zu ermöglichen. Es wird jedoch für Fachpersonen offensichtlich sein, dass die gegenständliche Technologie auch ohne diese spezifischen Details angewandt bzw. umgesetzt werden kann. In einigen Fällen werden wohlbekannte Strukturen und Komponenten in Form von Blockdiagrammen dargestellt, um die Konzepte der erfindungsgemäßen Technologie nicht zu verdecken. Ähnliche Komponenten werden zum besseren Verständnis mit identischen Bezugszeichen gekennzeichnet.
  • Datenspeichersysteme, wie z.B. Festkörperlaufwerke bzw. Solid-State-Laufwerke, können einen oder mehrere Controller enthalten, die mit einem oder mehreren nichtflüchtigen Flash-Speicher-Arrays gekoppelt sind. Gespeicherte Daten können mit Fehlern behaftet sein, z.B. aufgrund von Lese-/Schreibstörungen, Verlust von Datenwahrung bzw. Datenerhaltung und/oder Verschlechterung der Lebensdauer bzw. Widerstandsfähigkeit. Die Datenwahrung kann z.B. die Fähigkeit des Flash-Speichers sein, gespeicherte Informationen über einen bestimmten Zeitraum hinweg zu bewahren, und kann somit einer Zeitspanne entsprechen, in der gespeicherte Daten zuverlässig aus dem Flash-Speicher abgerufen werden können. Die Lebensdauer kann einer Anzahl von Programmier-Lösch-Zyklen (P/E) entsprechen, die der Flash-Speicher erfahren bzw. ertragen kann, bevor eine Fehlerrate einen Schwellenwert überschreitet oder die Daten nicht mehr lesbar sind. Datenspeichersysteme können einen oder mehrere Fehlerkorrektur- oder Fehler-Kodierungsmechanismen verwenden, um Fehler in den gespeicherten Daten zu erkennen und/oder zu korrigieren. Beispielsweise können beim Schreiben von Benutzerdaten die Benutzerdaten mit Paritätsdaten kodiert und in den Flash-Speicher-Arrays gespeichert werden. Wenn in den Flash-Speicher-Arrays gespeicherte Benutzerdaten abgerufen werden, können Paritätsdaten, die den Benutzerdaten zugeordnet sind, abgerufen und zur Bestimmung der Integrität der abgerufenen Benutzerdaten verwendet werden. Wenn ein oder mehrere Fehler in den abgerufenen Benutzerdaten entdeckt werden, können diese Fehler korrigiert werden.
  • Die Generierung von Paritätsdaten kann mit einem erheblichen System-Overhead bzw. Überbau verbunden sein, z.B. mit einem Overhead an Verarbeitungszeit, Systemressourcen und/oder Systemkomponenten (z.B. die Notwendigkeit, zusätzliche Hardware, Firmware usw. zu verwenden). Darüber hinaus kann die Speicherung von Paritätsdaten (z.B. in einem Flash-Speicher-Array) den für die Speicherung von Benutzerdaten verfügbaren Speicherplatz reduzieren. Dementsprechend kann es für ein Datenspeichersystem vorteilhaft sein, mehrere verschiedene Kodier-Raten, Codelängen und/oder unterschiedliche Kodierungs-Durchsatzgeschwindigkeiten zu unterstützen. So kann ein Datenspeichersystem beispielsweise Daten mit einer höheren Kodier-Rate kodieren, so dass weniger Paritätsdaten erzeugt und gespeichert werden, wenn ein Flash-Speicher zu Beginn des Lebenszyklus steht und somit eine ausreichende Datenwahrung und/oder Ausdauer bietet. Wenn sich der Flash-Speicher mit der Zeit abnutzt, kann das Datenspeichersystem automatisch auf eine niedrigere Kodier-Rate umschalten, so dass mehr Paritätsdaten erzeugt werden, um die Benutzerdaten vor Fehlern zu schützen. Daher kann das Datenspeichersystem so vorkonfiguriert werden, dass es automatisch auf eine niedrigere Kodier-Rate umschaltet, wenn ein vordefinierter Schaltpunkt im Lebenszyklus des Flash-Speichers erreicht wird. In bestimmten Situationen, z.B. wenn an einem bestimmten Punkt im Lebenszyklus des Flash-Speichers die tatsächliche Fehlermenge geringer ist als die erwartete Fehlermenge, ist ein solches Umschalten der Kodier-Rate am vordefinierten Schaltpunkt unter Umständen nicht wünschenswert.
  • In einigen Fällen kann der Flash-Speicher offline genommen (z.B. von einer Stromquelle getrennt) werden. So kann der Flash-Speicher z.B. ausgesteckt und in einem Lagerraum aufbewahrt werden. Die Zeitdauer, während der der Flash-Speicher deaktiviert ist, kann als Offline-Dauer bezeichnet werden. Während der Offline-Dauer kann sich die Integrität der im Flash-Speicher gespeicherten Daten aufgrund von Ladungsverlusten im Laufe der Zeit verschlechtern, was sich negativ auf die Datenwahrung auswirken kann. Wenn also eine lange Offline-Dauer erwartet wird, kann eine umfangreichere Fehlerkorrektur gewünscht werden. Wenn beispielsweise eine lange Offline-Dauer erwartet wird, kann die Verwendung von mehr Paritätsdaten erwünscht sein, um eine höhere Fehlerkorrekturfähigkeit zu erreichen. Daher kann sich eine erwartete Offline-Dauer auch auf einen optimalen Umschaltpunkt auswirken, um auf eine niedrigere Kodier-Rate umzuschalten.
  • Ausführungsbeispiele der erfindungsgemäßen Technologie sind auf ein Datenspeichersystem gerichtet, das dazu eingerichtet ist, eine Kodier-Rate auf der Grundlage eines Host-Befehls von einem Host-System anzupassen. Beispielsweise kann ein Host-Befehl an einen Controller des Datenspeichersystems bereitgestellt werden, so dass der Controller auf der Grundlage des Host-Befehls von einer Kodier-Rate auf eine andere Kodier-Rate umschalten kann. Dementsprechend muss ein Schaltpunkt der Kodier-Rate nicht auf einen vordefinierten Schaltpunkt beschränkt sein, sondern kann durch einen Host-Befehl angezeigt werden, was eine Flexibilität bei der Steuerung des Kodier-Raten-Schalters auf der Grundlage des Host-Befehls bereitstellt.
  • 1 zeigt ein Beispiel für ein nichtflüchtiges Flash-Speichersystem 100 gemäß Aspekten der erfindungsgemäßen Technologie. Wie gezeigt, umfasst das Datenspeichersystem 100 (z.B. ein Solid-State-Laufwerk) einen Controller 130 und einen Flash-Speicher 150. Der Flash-Speicher 150 kann einen nichtflüchtigen Speicher umfassen, wie integrierte Flash-Schaltungen, NAND-Flash-Speicher (z.B. Single-Level-Cell (SLC)-Speicher, Multi-Level-Cell (MLC)-Speicher oder eine beliebige Kombination davon), NOR-Flash-Speicher, EEPROM-Flash-Speicher, andere diskrete nichtvolatile Flash-Speicherchips (flash NVM chips) oder eine beliebige Kombination davon. Das Datenspeichersystem 100 kann ferner andere Speichertypen umfassen.
  • Der Controller 130 kann so konfiguriert sein, dass er Daten und/oder Speicherzugriffsbefehle von einer Speicherschnittstelle 112 (z.B. einem Gerätetreiber) eines Host-Systems 110 empfängt. Die von der Speicherschnittstelle 112 übermittelten Speicherzugriffsbefehle können Daten-Schreib- und Daten-Lesebefehle des Host-Systems 110 umfassen. Lese- und Schreibbefehle können eine logische Adresse (z. B. logische Blockadressen oder LBAs) angeben, die für den Zugriff auf das Datenspeichersystem verwendet wird 100. Der Controller 130 kann die empfangenen Befehle im Flash-Speicher 150 ausführen.
  • Das Datenspeichersystem 100 kann die vom Hostsystem 110 übermittelten Daten speichern. Mit anderen Worten, das Datenspeichersystem 100 kann als Speicher für das Hostsystem 110 dienen. Um diese Funktion zu erleichtern, kann der Controller 130 eine logische Schnittstelle implementieren bzw. umsetzen. Die logische Schnittstelle kann dem Hostsystem 110 den Speicher des Datenspeichersystems als einen Satz logischer Adressen (z.B. eine zusammenhängende Adresse) anbieten, in denen Benutzerdaten gespeichert werden können. Intern kann der Controller 130 logische Adressen auf verschiedene physikalische Stellen bzw. Orte oder Adressen im Flash-Speicher 150 und/oder anderen Speichermodulen abbilden, bzw. zuordnen oder mappen. Der Controller 130 umfasst unter anderem einen Speicher 132. Der Speicher 132 kann einen flüchtigen Speicher, wie z.B. einen dynamischen Speicher mit zufälligem Zugriff bzw. dynamic random-access memory(DRAM), einen statischen Speicher mit zufälligem Zugriff bzw. static random-access memory (SRAM) oder eine beliebige Kombination davon umfassen. Der Controller 130 ist so konfiguriert, dass er Daten im Flash-Speicher 150 speichert und aus diesem abruft, die Integrität der aus dem nichtflüchtigen Speicherarray abgerufenen Daten bestimmt, bei Bedarf eine Fehlerkorrektur der abgerufenen Daten vornimmt und eine Übertragung von Daten zwischen dem Datenspeichersystem 100 und dem Host-System 110 durchführt.
  • Da der Flash-Speicher 150 sich abnutzen und somit mit der Zeit fehleranfälliger werden kann, kann, wie oben diskutiert, später im Lebenszyklus des Flash-Speichers 150 eine niedrigere Kodier-Rate bevorzugt werden, um mehr Schutz vor Fehlern zu bieten. Daher kann der Controller 130 so konfiguriert werden, dass er Daten mit einer ersten Kodier-Rate kodiert, wenn sich der Flash-Speicher 150 am Beginn des Lebenszyklus befindet, und er kann auf eine zweite Kodier-Rate umschalten, um Daten zu kodieren, wenn sich der Flash-Speicher 150 später im Lebenszyklus befindet, wobei die zweite Kodier-Rate niedriger als die erste Kodier-Rate sein kann. Der Lebenszyklus des Flash-Speichers 150 kann einer Anzahl von P/E-Zyklen entsprechen. Daher kann der Controller 130 in einem Aspekt so konfiguriert werden, dass die erste Kodier-Rate früh im Lebenszyklus genutzt wird, bevor die Anzahl der P/E-Zyklen einen P/E-Zyklus-Schwellenwert erreicht, und dass auf die zweite Kodier-Rate umgeschaltet wird, wenn die Anzahl der P/E-Zyklen den P/E-Zyklus-Schwellenwert erreicht. Der P/E-Zyklus-Schwellenwert kann einen Umschaltpunkt zum Umschalten von der ersten Kodier-Rate auf die zweite Kodier-Rate anzeigen.
  • Ein optimaler Umschaltpunkt zum Umschalten von der höheren auf die niedrigere Kodier-Rate kann davon abhängen, ob das Datenspeichersystem 100 online ist (z.B. in einem Zyklusmodus) oder offline genommen werden soll (z.B. in einem Retentions- bzw. Wahrungsmodus) sowie von einer erwarteten Offline-Dauer, die eine Zeitdauer angibt, während der das Datenspeichersystem 100 offline geht. Während der Offline-Dauer, wenn das Datenspeichersystem 100 offline ist (z.B. im Retentions-Modus), kann es beim Flash-Speicher 150 zu einem Ladungsleck kommen, das die Integrität der im nichtflüchtigen Flash-Speicher gespeicherten Daten verschlechtern kann. Daher kann ein optimaler Schaltpunkt für eine Situation, in der das Datenspeichersystem 100 für eine gewisse Dauer offline geht, früher im Lebenszyklus liegen als ein optimaler Schaltpunkt für eine Situation, in der das Datenspeichersystem 100 online bleibt.
  • 2 zeigt einen beispielhafte Graphen 200, der die Schaltpunkte einer Kodier-Rate für verschiedene Situationen veranschaulicht. Die x-Achse repräsentiert eine Anzahl von P/E-Zyklen und die y-Achse eine Bitfehlerrate (BER). Mit zunehmender Anzahl von P/E-Zyklen steigt die Bitfehlerrate. An einem Punkt, an dem die Bitfehlerrate einen Fehlerschwellenwert überschreitet, wird die Kodier-Rate von einer ersten Kodier-Rate auf eine zweite Kodier-Rate umgeschaltet, wobei die zweite Kodier-Rate niedriger als die erste Kodier-Rate ist. Die durchgezogene Kurve stellt die Bitfehlerrate in einem zyklischen bzw. dauerbetriebenen Fall dar, bei dem das Speichergerät online bleibt, ohne offline zu gehen. Die gepunktete Kurve stellt die Bitfehlerrate in einem Retentions- bzw. Wahrungsfall dar, bei dem das Speichergerät für eine gewisse Offline-Dauer (z.B. 3 Monate) offline genommen werden soll. Die Bitfehlerrate im Retentionsfall wird wahrscheinlich schneller ansteigen als die des Zyklusmodus, wenn die Anzahl der P/E-Zyklen zunimmt (z.B. aufgrund des Ladungslecks, das durch das Abschalten während der Offline-Dauer verursacht wird). Daher wird die Bitfehlerrate im Retentionsfall die Fehlerschwelle schneller erreichen als im Zyklusfall. Daher sollte der Wechsel von der ersten Kodier-Rate zur zweiten Kodier-Rate früher im Lebenszyklus des Speichers erfolgen, wenn das Speichergerät voraussichtlich für eine gewisse Offline-Dauer offline geht. In dem Graphen 200 liegt der Schaltpunkt für den Retentionsfall bei Punkt 1, während der Schaltpunkt für den zyklischen Fall bei Punkt 2 liegt. Wenn die Anzahl der P/E-Zyklen im Retentionsfall den Punkt 1 erreicht, wird die Kodier-Rate auf die zweite Kodier-Rate umgeschaltet, die niedriger ist als die erste Kodier-Rate. Im Zyklusfallwird die Kodier-Rate auf die zweite Kodier-Rate umgeschaltet, die niedriger als die erste Kodier-Rate ist, wenn die Anzahl der P/E-Zyklen den Punkt 2 erreicht.
  • Um die Möglichkeit zu berücksichtigen, dass das Datenspeichersystem 100 offline geht, kann das Datenspeichersystem 100 mit einem P/E-Zyklus-Schwellenwert für einen optimalen Schaltpunkt für eine Situation vorkonfiguriert werden, in der das Datenspeichersystem 100 für eine vordefinierte Offline-Dauer (z.B. 3 Monate) offline geht. Wenn jedoch nicht erwartet wird, dass das Datenspeichersystem 100 offline geht, kann der optimale Schaltpunkt später im Lebenszyklus liegen als der vorkonfigurierte Schaltpunkt und somit einer Anzahl von P/E-Zyklen entsprechen, die größer als der vorkonfigurierte P/E-Zyklus-Schwellenwert ist. Wenn andererseits erwartet wird, dass das Datenspeichersystem 100 für eine längere Dauer als die vordefinierte Offline-Dauer offline geht, kann der optimale Schaltpunkt früher im Lebenszyklus liegen als der vorkonfigurierte Schaltpunkt und somit einer Anzahl von P/E-Zyklen entsprechen, die kleiner als der vorkonfigurierte P/E-Zyklus-Schwellenwert ist. Daher kann der Controller 130 mit dem vorkonfigurierten P/E-Zyklus-Schwellenwert möglicherweise nicht in der Lage sein, den Kodier-Raten-Wechsel bei einem optimalen Schaltpunkt durchzuführen, um von der höheren Kodier-Rate auf die niedrigere Rate umzuschalten, insbesondere wenn das Datenspeichersystem 100 für eine Dauer offline geht, die kürzer oder länger als die vordefinierte Offline-Dauer ist.
  • Die erfindungsgemäße Technologie ermöglicht es dem Controller 130, einen Host-Befehl zu empfangen, der einen Schaltpunkt anzeigt, so dass der Controller 130 die Kodier-Rate an dem vom Host-Befehl angegebenen Schaltpunkt umschalten kann. Wenn ein Benutzer beispielsweise weiß, dass das Datenspeichersystem 100 auf unbestimmte Zeit online bleibt, kann er einen Host-Befehl eingeben, der einen Schaltpunkt anzeigt, der einem späteren Zeitpunkt im Lebenszyklus entspricht als der vorkonfigurierte Schaltpunkt. Wenn der Benutzer andererseits weiß, dass das Datenspeichersystem 100 für einen längeren Zeitraum offline sein wird (z.B. länger als die vordefinierte Offline-Dauer), kann der Benutzer einen Host-Befehl eingeben, der einen Schaltpunkt anzeigt, der einem früheren Zeitpunkt im Lebenszyklus entspricht als der vorkonfigurierte Schaltpunkt. Auf der Grundlage des Host-Befehls kann der Controller 130 den Kodier-Raten-Wechsel an dem vom Host-Befehl angegebenen Schaltpunkt ausführen. Wenn der Host-Befehl empfangen wird, muss der Controller 130 daher nicht den vorkonfigurierten Schaltpunkt nutzen, sondern kann stattdessen den durch den Host-Befehl angegebenen Schaltpunkt verwenden.
  • In einer oder mehreren Ausführungsformen, können mehr als zwei Kodier-Raten und mehr als ein Schaltpunkt verwendet werden. Zum Beispiel kann der Controller 130 die Verwendung von vier bis acht Kodier-Raten während der Lebensdauer des Datenspeichersystems 100 durchlaufen.
  • Wenn jeder einer Folge von Schaltpunkten erreicht wird, kann der Controller 130 schrittweise auf die Nutzung der nächsthöheren der verfügbaren Kodier-Raten für das Datenspeichersystem 100 umschalten. Der Host-Befehl kann mehrere Schaltpunkte zum Umschalten zwischen den Kodier-Raten angeben. Wenn z.B. eine erste, zweite, dritte und vierte Kodier-Rate verfügbar ist, kann der Host-Befehl drei Schaltpunkte angeben. So kann bei Erreichen eines ersten Schaltpunktes von der ersten Kodier-Rate auf die zweite Kodier-Rate, die höher als die erste Kodier-Rate ist, umgeschaltet werden, bei Erreichen eines zweiten Schaltpunktes von der zweiten Kodier-Rate auf die dritte Kodier-Rate, die höher als die zweite Kodier-Rate ist, und bei Erreichen eines dritten Schaltpunktes von der dritten Kodier-Rate auf die vierte Kodier-Rate, die höher als die dritte Kodier-Rate ist, umgeschaltet werden. Der Host-Befehl kann mehrere Kodier-Raten aus einer Gesamtzahl verfügbarer Kodier-Raten und mehrere Schaltpunkte zum Umschalten zwischen den angegebenen Kodier-Raten angeben. Wenn der Host-Befehl beispielsweise drei Kodier-Raten aus fünf verfügbaren Kodier-Raten und zwei Schaltpunkte anzeigt, kann die Kodier-Rate von einer ersten Kodier-Rate auf eine zweite Kodier-Rate umgeschaltet werden, wenn ein erster Schaltpunkt erreicht wird, und von der zweiten Kodier-Rate auf eine dritte Kodier-Rate, wenn ein zweiter Schaltpunkt erreicht wird. Alternativ kann der Host-Befehl nur die nächste Kodier-Rate und den zugehörigen Schaltpunkt in einer Folge von Kodier-Raten und zugehörigen Schaltpunkten angeben.
  • Der Flash-Speicher 150 kann mehrere Flash-Speicherchips oder Würfel enthalten, wobei jeder Chip oder Würfel mehrere Flash-Speicherblöcke umfasst. Die Flash-Speicherchips oder -Würfel können jeweils unterschiedliche Bitfehlerratencharakteristiken bei unterschiedlichen P/E-Zykluszahlen über die Lebensdauer des Flash-Speichers 150 aufweisen. Darüber hinaus können Gruppen von Flash-Speicherblöcken oder einzelne Flash-Speicherblöcke bei unterschiedlichen P/E-Zyklenzahlen ebenfalls unterschiedliche Bitfehlerraten-Charakteristiken aufweisen. Der Controller 130 kann unterschiedliche Kodier-Raten für verschiedene Teile des Flash-Speichers 150 verwenden, wie z.B. verschiedene Chips, Flash-Speicherblöcke oder Gruppen von Flash-Speicherblöcken. Jeder Teil des Flash-Speichers 150 kann eine eigene Sequenz von KodierRaten und/oder Schaltpunkten haben, die die unterschiedlichen Eigenschaften bezüglich der Bitfehlerrate berücksichtigen. Alternativ können alle Teile die gleiche Sequenz von Kodier-Raten und Schaltpunkten verwenden, und der Controller 130 kann zwischen den Kodier-Raten für jeden Teil umschalten, wenn der jeweilige Teil einen Schaltpunkt erreicht. In Implementierungen, in denen verschiedene Teile des Flash-Speichers 150 unterschiedliche Kodier-Raten und/oder Schaltpunkte verwenden können, kann der Host-Befehl außerdem den Teil des Flash-Speichers 150 angeben, für den die angegebene Kodier-Rate oder der Schaltpunkt gilt.
  • 3 zeigt ein Beispieldiagramm 300, das im Controller 130 des nichtflüchtigen Flash-Speichersystems 100 enthaltene Komponenten nach Aspekten der erfindungsgemäßen Technologie darstellt. Der Controller 130 kann eine Kodier-Raten-Verwaltungskomponente 302, eine Lese-/Schreib-Verwaltungskomponente 304, einen Decoder bzw. Dekodierer 306 und einen Encoder bzw. Kodierer 308 enthalten. Eine oder mehrere der im Controller 130 enthaltenen Komponenten können mit dem Speicher 132 kommunizieren, um Daten für verschiedene Operationen des Controllers 130 vorübergehend zu speichern. Um unterschiedliche Kodier-Raten zu ermöglichen, können der Kodierer 308 und/oder der Dekodierer 306 einstellbar sein, um unterschiedliche Kodier-Raten einzustellen. Alternativ kann der Kodierer 308 verschiedene Kodierer für unterschiedliche Kodierraten enthalten und/oder der Dekodierer 306 verschiedene Dekodierer für unterschiedliche Kodierraten.
  • Die Kodier-Raten-Verwaltungskomponente 302 kann die Kodier-Rate im Datenspeichersystem 100 zunächst auf eine erste Kodier-Rate für die Kodierung der in den Flash-Speicher zu schreibenden Daten 150 einstellen. So kann der Kodierer 308 zunächst Daten mit der ersten Kodier-Rate kodieren, während die Lese-/Schreib-Verwaltungskomponente 304 die mit der ersten Kodier-Rate kodierten Daten in den Flash-Speicher 150 schreiben kann. Beispielsweise kann die Kodier-Rate zu Beginn des Lebenszyklus auf die höhere Kodier-Rate eingestellt werden, da der Flash-Speicher 150 eine ausreichende Datenwahrung und/oder Widerstandsfähigkeit bieten kann.
  • Die Kodier-Raten-Verwaltungskomponente 302 kann einen Host-Befehl empfangen, der einen Schaltpunkt zum Umschalten der eingestellten Kodier-Rate von der ersten auf eine zweite Kodier-Rate angibt. Das Host-System 110 kann den Host-Befehl an den Controller 130 senden, so dass die Kodier-Raten-Verwaltungskomponente 302 den Host-Befehl empfangen kann. Der Host-Befehl kann von einem Benutzer eingegeben werden. Wenn der Benutzer beispielsweise Kenntnis von einer erwarteten Offline-Dauer des Datenspeichersystems 100 hat, kann der Benutzer den Host-Befehl auf der Grundlage der erwarteten Offline-Dauer so einstellen, dass er einen Schaltpunkt angibt, der für das Datenspeichersystem 100 mit der erwarteten Offline-Dauer optimal ist. Daher kann der Host-Befehl an das Datenspeichersystem 100 gesendet werden, um den Schaltpunkt auf der Grundlage verschiedener Situationen anzupassen. Wenn die Kodier-Raten-Verwaltungskomponente 302 den Host-Befehl empfängt, verwendet die Kodier-Raten-Verwaltungskomponente 302 möglicherweise nicht den vorkonfigurierten Schaltpunkt, da die Kodier-Raten-Verwaltungskomponente 302 den vom Host-Befehl angegebenen Schaltpunkt verwendet.
  • Die Kodier-Raten-Verwaltungskomponente 302 kann feststellen, ob der angezeigte Schaltpunkt im Flash-Speicher 150 erreicht ist. Wenn die Kodier-Raten-Verwaltungskomponente 302 feststellt, dass der angezeigte Schaltpunkt im Flash-Speicher 150 erreicht wurde, kann die Kodier-Raten-Verwaltungskomponente 302 die eingestellte Kodier-Rate am angezeigten Schaltpunkt von der ersten Kodier-Rate auf die zweite Kodier-Rate umschalten. Die erste Kodier-Rate kann höher als die zweite Kodier-Rate sein, und somit kann die erste Kodier-Rate die höhere Kodier-Rate und die zweite Kodier-Rate die niedrigere Kodier-Rate sein. Durch Umschalten auf die niedrigere Rate am angegebenen Schaltpunkt kann die Kodier-Raten-Verwaltungskomponente 302 möglicherweise Fehler reduzieren und den zeitbedingten Verschleiß des Flash-Speichers 150 ausgleichen bzw. kompensieren.
  • Der Schaltpunkt kann ein P/E-Zyklus-Schwellenwert sein. Die Kodier-Raten-Verwaltungskomponente 302 kann feststellen, dass der angegebene Schaltpunkt erreicht ist, wenn die Kodier-Raten-Verwaltungskomponente 302 feststellt, dass eine P/E-Zykluszahl des Flash-Speichers 150 den P/E-Zyklus-Schwellenwert erfüllt. Der P/E-Zyklus-Schwellenwert kann auf einer Offline-Dauerspezifikation des Datenspeichersystems 100 basieren.
  • In einer oder mehreren Implementierungen kann der angegebene Schaltpunkt der Zeitpunkt sein, zu dem der Host-Befehl empfangen wird. Der Host-Befehl kann beispielsweise anzeigen, dass der Wechsel von der ersten Kodier-Rate zur zweiten Kodier-Rate beim Empfang des Host-Befehls erfolgt. Auf diese Weise kann die Kodier-Raten-Verwaltungskomponente 302 die eingestellte Kodier-Rate unmittelbar nach Empfang des Host-Befehls von der ersten auf die zweite Kodier-Rate umschalten.
  • Wenn die Kodier-Rate von der höheren auf die niedrigere Rate umgeschaltet wird, kann es vorteilhaft sein, die niedrigere Kodier-Rate zu verwenden, um Daten, die in den Flash-Speicher 150 geschrieben wurden, in Erwartung eines bevorstehenden Offline-Zustands des Datenspeichersystems 100 neu zu schreiben. Bevor das Datenspeichersystem 100 beispielsweise abgeschaltet wird, kann es vorteilhaft sein, die niedrigere Kodier-Rate zu verwenden, um in den Flash-Speicher 150 geschriebene Daten neu zu schreiben, da das Schreiben der Daten mit der niedrigeren Kodier-Rate Fehler minimieren kann, die dadurch verursacht werden, dass das Datenspeichersystem 100 offline ist. Wenn also die eingestellte Kodier-Rate am angegebenen Schaltpunkt auf die zweite Kodier-Rate umgeschaltet wird, kann die Lese-/Schreib-Verwaltungskomponente 304 mit der ersten Kodier-Rate kodierte Daten aus dem Flash-Speicher 150 lesen und der Dekoder 306 kann die gelesenen Daten dekodieren. Anschließend kann der Kodierer 308 die dekodierten Daten mit der zweiten Kodier-Rate kodieren. Dann kann die Lese-/Schreib-Verwaltungskomponente 304 die mit der zweiten Kodier-Rate kodierten Daten in den Flash-Speicher 150 schreiben. Durch die Kodierung der Daten mit der zweiten Rate, die niedriger als die erste Rate ist, und durch das erneute Schreiben der kodierten Daten können Fehler, die durch die Offline-Stellung des Datenspeichersystems 100 verursacht werden, reduziert werden, wenn das Datenspeichersystem 100 offline geht.
  • 4 zeigt ein Flussdiagramm eines Beispielprozesses bzw. Beispielverfahrens 400 für die Kodier-Raten-Umschaltung für ein nichtflüchtiges Flash-Speichersystem nach verschiedenen Aspekten der erfindungsgemäßen Technologie. Zu Zwecken der Erläuterung werden hier die verschiedenen Blöcke des Beispielprozesses 400 mit Bezug auf die hier beschriebenen Komponenten und/oder Prozesse beschrieben. Der eine oder die mehreren Blöcke des Prozesses bzw. Verfahrens 400 können z.B. von einem oder mehreren Prozessoren implementiert werden, darunter z.B. der Controller 130 aus 1 oder eine oder mehrere Komponenten oder Prozessoren des Controllers 130. In einigen Ausgestaltungen können ein oder mehrere der Blöcke getrennt von anderen Blöcken und von einem oder mehreren verschiedenen Prozessoren oder Controllern implementiert bzw. durchgeführt werden. Ferner werden zur Erläuterung die Blöcke des Beispielprozesses 400 als seriell oder linear auftretend beschrieben. Mehrere Blöcke des Beispielprozesses 400 können jedoch auch parallel auftreten. Darüber hinaus müssen die Blöcke des Beispielprozesses 400 nicht in der gezeigten Reihenfolge ausgeführt werden und/oder einer oder mehrere der Blöcke des Beispielprozesses 400 müssen nicht ausgeführt werden. Die Blöcke des Prozesses 400 oder eine Teilmenge davon können auch für jedes Speichergerät und/oder zur Unterstützung mehrerer Codelängen ausgeführt werden, je nach den verschiedenen Betriebsbedingungen des/der Speichergeräte(s).
  • In dem abgebildeten Beispiel setzt ein System entsprechend der erfindungsgemäßen Technologie eine Kodier-Rate in einem Datenspeichergerät auf eine erste Kodier-Rate zur Kodierung von Daten, die in den nichtflüchtigen Speicher des Datenspeichers geschrieben werden sollen (402). An der Datenspeichervorrichtung (z.B. Datenspeichersystem 100) wird ein Host-Befehl empfangen, der einen Schaltpunkt zum Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf eine zweite Kodier-Rate anzeigt (404). In einigen Aspekten bzw. Ausführungsformen kann die erste Kodier-Rate höher sein als die zweite Kodier-Rate.
  • In einer oder mehreren Ausgestaltungen kann der Schaltpunkt der Zeitpunkt sein, zu dem der Host-Befehl empfangen wird. In einer oder mehreren Implementierungen kann der Schaltpunkt ein P/E-Zyklus-Schwellenwert sein, und es kann festgestellt werden, dass der angegebene Schaltpunkt erreicht wurde, indem festgestellt wird, dass eine P/E-Zykluszahl des nichtflüchtigen Flash-Speichers 150 den P/E-Zyklus-Schwellenwert erfüllt. Der P/E-Zyklus-Schwellenwert kann auf einer Spezifikation einer Offline-Dauer des Datenspeichergeräts basieren.
  • Das erfindungsgemäße System stellt fest, ob der angezeigte Schaltpunkt im Flash-Speicher 150 erreicht ist (406). Wird festgestellt, dass der angezeigte Schaltpunkt im Flash-Speicher 150 erreicht ist, wird die eingestellte Kodier-Rate von der ersten Kodier-Rate auf die zweite Kodier-Rate umgeschaltet (408). Wird festgestellt, dass der angezeigte Schaltpunkt im Flash-Speicher 150 nicht erreicht ist, kann die eingestellte Kodier-Rate bei der ersten Kodier-Rate bleiben.
  • 5 zeigt ein Flussdiagramm eines Beispielprozesses bzw. Beispielverfahrens 500 zur Kodier-Raten-Umschaltung für ein nichtflüchtiges Flash-Speichersystem nach verschiedenen Aspekten der erfindungsgemäßen Technologie. Zur Erläuterung werden hier die verschiedenen Blöcke des Beispielprozesses 500 mit Bezug auf die hier beschriebenen Komponenten und/oder Prozesse beschrieben. Der eine oder die mehreren Blöcke des Prozesses bzw. Verfahrens 500 können z.B. von einem oder mehreren Prozessoren implementiert werden, darunter z.B. der Controller 130 aus 1 oder eine oder mehrere Komponenten oder Prozessoren des Controllers 130. In einigen Ausgestaltungen können ein oder mehrere der Blöcke getrennt von anderen Blöcken und von einem oder mehreren verschiedenen Prozessoren oder Controllern ausgeführt werden. Ferner werden die Blöcke des Beispielprozesses 500 zur Erläuterung als seriell oder linear auftretend beschrieben. Einige Blöcke des Beispielprozesses 500 können jedoch auch parallel auftreten. Darüber hinaus müssen die Blöcke des Beispielprozesses 500 nicht in der gezeigten Reihenfolge ausgeführt werden und/oder einer oder mehrere der Blöcke des Beispielprozesses 500 müssen nicht ausgeführt werden. Die Blöcke des Verfahrens 500 oder eine Teilmenge davon können auch für jedes Speichergerät und/oder zur Unterstützung mehrerer Codelängen ausgeführt werden, je nach den verschiedenen Betriebsbedingungen des/der Speichergeräte(s).
  • Der Beispielprozess 500 kann stattfinden, wenn die eingestellte Kodier-Rate von der ersten auf die zweite Kodier-Rate umgeschaltet wird. Im abgebildeten Beispiel liest und dekodiert das System gemäß der erfindungsgemäßen Technologie die mit der ersten Kodier-Rate kodierten Daten aus dem nichtflüchtigen Speicher als Reaktion auf das Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf die zweite Kodier-Rate (502). Die gelesenen und dekodierten Daten werden mit der zweiten Rate kodiert (504). Die kodierten Daten werden mit der zweiten Rate in den nichtflüchtigen Speicher geschrieben (506).
  • Die erwähnten Schritte der Verfahren 400 und 500 können von dem Controller 130 unter Verwendung der Kodier-Raten-Verwaltungskomponente 302, der Lese-/Schreib-Verwaltungskomponente 304, des Dekodierers 306 und des Kodierers 308 durchgeführt werden. Viele der oben beschriebenen Merkmale der Beispielprozesse 400 und 500 und der damit verbundenen Merkmale und Anwendungen können als Software-Prozesse implementiert werden, die als ein Satz von Befehlen spezifiziert sind, die auf einem computerlesbaren Speichermedium (auch als computerlesbares Medium bezeichnet) aufgezeichnet sind. Wenn diese Befehle von einer oder mehreren Verarbeitungseinheit(en) (z.B. einem oder mehreren Prozessoren, Prozessorkernen oder anderen Verarbeitungseinheiten) ausgeführt werden, veranlassen sie die Verarbeitungseinheit(en), die in den Befehlen angegebenen Aktionen auszuführen. Beispiele für computerlesbare Medien sind unter anderem CD-ROMs, Flash-Laufwerke, RAM-Chips, Festplatten, EPROMs usw. Zu den computerlesbaren Medien gehören nicht Trägerwellen und elektronische Signale, die drahtlos oder über Kabelverbindungen übertragen werden.
  • Die hier offenbarten Systeme und Verfahren können auf Festplattenlaufwerke, hybride Festplattenlaufwerke und ähnliche angewendet werden. Darüber hinaus können zusätzlich oder alternativ andere Formen der Speicherung (z.B. DRAM oder SRAM, batteriegepufferte flüchtige DRAM- oder SRAM-Bausteine, EPROM, EEPROM-Speicher usw.) verwendet werden. Als weiteres Beispiel können die verschiedenen in den Figuren dargestellten Komponenten als Software und/oder Firmware auf einem Prozessor, ASIC/FPGA oder dedizierter Hardware implementiert werden. Auch die Merkmale und Eigenschaften der oben genannten spezifischen Beispielausgestaltungen können auf verschiedene Weise kombiniert werden, um zusätzliche Ausführungsbeispiele zu erhalten, die alle in den Geltungsbereich der vorliegenden Offenbarung fallen. Obwohl die vorliegende Offenbarung bestimmte bevorzugte Beispielimplementierungen und -anwendungen enthält, fallen auch andere Beispielimplementierungen in den Anwendungsbereich dieser Offenbarung, die für Fachpersonen offensichtlich sind, einschließlich Beispielimplementierungen, die nicht alle der hier dargelegten Merkmale und Vorteile bieten. Dementsprechend soll der Umfang der vorliegenden Offenbarung nur durch die beigefügten Ansprüche definiert werden.
  • Implementierungen im Rahmen der vorliegenden Offenbarung können teilweise oder ganz unter Verwendung eines greifbaren computerlesbaren Speichermediums (oder mehrerer greifbarer computerlesbarer Speichermedien eines oder mehrerer Typen), das eine oder mehrere Anweisungen verschlüsselt bzw. kodiert, realisiert werden. Das greifbare computerlesbare Speichermedium kann ebenfalls nichtflüchtiger Art sein.
  • Das computerlesbare Speichermedium kann jedes Speichermedium sein, das von einem Computer für allgemeine oder einer Recheneinheit spezielle Zwecke gelesen, geschrieben oder anderweitig darauf zugegriffen werden kann, einschließlich jeder Verarbeitungselektronik und/oder Verarbeitungsschaltung, die in der Lage ist, Befehle auszuführen. Beispielsweise kann das computerlesbare Medium jeden flüchtigen Halbleiterspeicher wie - nicht abschließend - RAM, DRAM, SRAM, T-RAM, Z-RAM und TTRAM umfassen. Das computerlesbare Medium kann auch jeden nichtflüchtigen Halbleiterspeicher enthalten, wie ROM, PROM, EPROM, EEPROM, NVRAM, Flash, nvSRAM, FeRAM, FeTRAM, MRAM, PRAM, CBRAM, SONOS, RRAM, NRAM, Rennstreckenspeicher bzw. racetrack memory, FJG und Millipede-Speicher.
  • Ferner kann das computerlesbare Speichermedium alle Arten von nicht-Halbleiterspeichern umfassen, wie z.B. optische Plattenspeicher, Magnetplattenspeicher, Magnetband, andere magnetische Speichervorrichtungen oder jedes andere Medium, das in der Lage ist, eine oder mehrere Anweisungen zu speichern. In einigen Ausgestaltungen kann das greifbare computerlesbare Speichermedium direkt an eine Computervorrichtung gekoppelt bzw. angeschlossen werden, während in anderen Implementierungen das greifbare computerlesbare Speichermedium indirekt an eine Computervorrichtung gekoppelt werden kann, z.B. über eine oder mehrere Draht-Verbindungen, eine oder mehrere drahtlose Verbindungen oder eine beliebige Kombination davon.
  • Anweisungen können direkt ausführbar sein oder zur Entwicklung ausführbarer Anweisungen verwendet werden. So können Anweisungen beispielsweise als ausführbarer oder nicht ausführbarer Maschinencode oder als Anweisungen in einer High-Level-Sprache bzw. höheren Programmiersprache realisiert werden, die zur Erzeugung von ausführbarem oder nicht ausführbarem Maschinencode kompiliert werden können. Darüber hinaus können Anweisungen auch als Daten realisiert werden oder sie können Daten enthalten. Computerausführbare Anweisungen können auch in einem beliebigen Format organisiert sein, einschließlich Routinen, Unterprogrammen, Programmen, Datenstrukturen, Objekten, Modulen, Anwendungen, Applets, Funktionen usw. Wie von Fachleuten erkannt werden wird, können Details, einschließlich, aber nicht beschränkt auf Anzahl, Struktur, Reihenfolge und Organisation von Anweisungen, erheblich variieren, ohne dass die zugrunde liegende Logik, Funktion, Verarbeitung und Ausgabe bzw. Ergebnis verändert wird.
  • Während sich die obigen Ausführungen in erster Linie auf Mikroprozessoren oder Mehrkernprozessoren beziehen, die Software ausführen, werden eine oder mehrere Implementierungen durch eine oder mehrere integrierte Schaltungen, wie z.B. anwendungsspezifische integrierte Schaltungen (ASICs) oder Field Programmable Gate Arrays (FPGAs), durchgeführt. In einer oder mehreren Implementierungen führen solche integrierten Schaltungen Befehle aus, die in der Schaltung selbst gespeichert sind.
  • Fachpersonen werden erkennen, dass die verschiedenen veranschaulichenden Blöcke, Module, Elemente, Komponenten, Methoden und Algorithmen, die hier beschrieben werden, als elektronische Hardware, Computersoftware oder als Kombinationen aus beidem umgesetzt werden können. Um diese Austauschbarkeit von Hardware und Software zu veranschaulichen, wurden die verschiedenen beispielhaften Blöcke, Module, Elemente, Komponenten, Methoden und Algorithmen oben allgemein in ihrer Funktionalität beschrieben. Ob eine solche Funktionalität als Hardware oder Software implementiert wird, hängt von den jeweiligen Anwendungs- und Designbeschränkungen ab, die dem Gesamtsystem auferlegt werden. Fachpersonen können die beschriebene Funktionalität für jede einzelne Anwendung auf unterschiedliche Weise umsetzen. Verschiedene Komponenten und Blöcke können unterschiedlich angeordnet werden (z.B. in einer anderen Reihenfolge oder auf eine andere Art und Weise unterteilt), ohne dass dabei der Umfang der hier behandelten Technologie verlassen wird.
  • Es ist zu verstehen, dass die spezifische Reihenfolge oder Hierarchie der Schritte in den offenbarten Prozessen eine Veranschaulichung beispielhafter Ansätze ist. Auf der Grundlage von Design-Präferenzen ist verständlich, dass die spezifische Reihenfolge oder Hierarchie der Schritte in den Prozessen umgeordnet werden kann. Einige der Schritte können gleichzeitig ausgeführt werden. Die angefügten Verfahrensansprüche, stellen Elemente der verschiedenen Schritte in einer Beispielreihenfolge dar, und sollen nicht auf die spezifisch dargestellte Reihenfolge oder Hierarchie beschränkt verstanden werden.
  • Die vorstehende Beschreibung soll es jeder Fachperson ermöglichen, die verschiedenen hier beschriebenen Aspekte anzuwenden. Die vorstehende Beschreibung enthält verschiedene Beispiele für die der Erfindung zugrundeliegende Technologie, und die erfindungsgemäße Technik ist nicht auf diese Beispiele beschränkt. Verschiedene Modifikationen dieser Aspekte werden für die Fachperson leicht erkennbar sein, und die hier definierten allgemeinen Prinzipien können auf andere Aspekte angewandt werden. Daher sollen die Ansprüche nicht auf die hier gezeigten Aspekte beschränkt werden, sondern es soll ihnen der volle Umfang zugestanden werden, der sprachlich mit den Ansprüchen übereinstimmt, wobei der Verweis auf ein Element in der Einzahl nicht „ein und nur ein“ bedeutet, es sei denn, dies wird ausdrücklich so angegeben, sondern „ein oder mehrere“. Wenn nicht ausdrücklich anders angegeben, bezieht sich der Begriff „einige“ auf einen oder mehrere. Pronomen im Männlichen (z.B. sein) schließen das weibliche und das neutrale Geschlecht (z.B. ihr und sein) ein und umgekehrt. Überschriften und Unterüberschriften, falls vorhanden, werden nur der Bequemlichkeit halber verwendet und schränken die gegenständliche Technologie nicht ein.
  • Eine Formulierung wie „Aspekt“ bedeutet nicht, dass dieser Aspekt für die betreffende Technologie wesentlich ist oder dass dieser Aspekt für alle Konfigurationen der gegenständlichen Technologie gilt. Eine Offenbarung in Bezug auf einen Aspekt kann für alle Konfigurationen oder für eine oder mehrere Konfigurationen gelten. Ein Aspekt kann ein oder mehrere Beispiele liefern. Ein Begriff wie ein Aspekt kann sich auf einen oder mehrere Aspekte beziehen und umgekehrt. Eine Formulierung wie „Verkörperung“, bzw. „Ausgestaltung“ bedeutet nicht, dass eine solche Verkörperung für die betreffende Technologie wesentlich ist oder dass eine solche Ausgestaltung für alle Konfigurationen der betreffenden Technologie gilt. Eine Offenbarung in Bezug auf eine Verkörperung kann sich auf alle Verkörperungen oder auf eine oder mehrere Verkörperungen beziehen. Eine Ausführungsform kann ein oder mehrere Beispiele liefern. Eine Formulierung wie „Verkörperung“ oder „Ausführungsform“ kann sich auf eine oder mehrere Verkörperungen beziehen und umgekehrt. Ein Begriff wie eine „Konfiguration“ bedeutet nicht, dass eine solche Konfiguration für die betreffende Technologie wesentlich ist oder dass eine solche Konfiguration für alle Konfigurationen der betreffenden Technologie gilt. Eine Offenbarung in Bezug auf eine Konfiguration kann sich auf alle Konfigurationen oder auf eine oder mehrere Konfigurationen beziehen. Eine Konfiguration kann ein oder mehrere Beispiele liefern. Ein Begriff wie „Konfiguration“ kann sich auf eine oder mehrere Konfigurationen beziehen und umgekehrt.
  • Das Wort „beispielhaft“ wird hier verwendet, um „als Beispiel oder Veranschaulichung dienend“ zu bedeuten. Jede(r) Aspekt oder Ausführungsform, der bzw. die hier als „beispielhaft“ beschrieben wird, ist nicht unbedingt als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Ausgestaltungen auszulegen.
  • Alle strukturellen und funktionellen Äquivalente zu den Elementen der verschiedenen in dieser Offenbarung beschriebenen Aspekte, die Fachpersonen bekannt sind oder später bekannt werden, werden hier ausdrücklich durch Verweis aufgenommen und sollen von den Ansprüchen umfasst werden. Darüber hinaus ist nichts, was hier offenbart wird, dazu gedacht, gemeinfrei zu werden, unabhängig davon, ob eine solche Offenbarung in den Ansprüchen ausdrücklich wiedergegeben wird. Kein Anspruchselement ist gemäß den Bestimmungen von 35 U.S.C. §112, sechster Absatz, auszulegen, es sei denn, das Element wird ausdrücklich unter Verwendung des Ausdrucks „Mittel für“ oder, im Falle eines Verfahrensanspruchs, unter Verwendung des Ausdrucks „Schritt für“ erwähnt. Soweit der Begriff „einschließen“ bzw. „enthalten“, „haben“ oder ähnliches in der Beschreibung oder in den Ansprüchen verwendet wird, soll dieser Begriff in ähnlicher Weise einschließend sein wie der Begriff „umfassen“, so wie „umfassen“ interpretiert wird, wenn es als Übergangswort in einem Anspruch verwendet wird.

Claims (22)

  1. Verfahren, folgendes umfassend: Einstellen einer Kodier-Rate in einer Datenspeichervorrichtung auf eine erste Kodier-Rate zum Kodieren von Daten, die in einen nichtflüchtigen Speicher der Datenspeichervorrichtung geschrieben werden sollen; Empfangen eines Host-Befehls an der Datenspeichervorrichtung, der einen Schaltpunkt zum Umschalten bzw. Wechseln der eingestellten Kodier-Rate von der ersten Kodier-Rate auf eine zweite Kodier-Rate anzeigt bzw. angibt; und Umschalten bzw. Wechseln der eingestellten Kodier-Rate von der ersten Kodier-Rate auf die zweite Kodier-Rate am angegebenen Schaltpunkt.
  2. Verfahren nach Anspruch 1, wobei die erste Kodier-Rate höher ist als die zweite Kodier-Rate.
  3. Verfahren nach Anspruch 1, ferner umfassend: Lesen und Dekodieren von Daten, die mit der ersten Kodier-Rate kodiert wurden, aus dem nichtflüchtigen Speicher als Reaktion auf das Umschalten der eingestellten Kodier-Rate von der ersten auf die zweite Kodier-Rate; Kodieren der gelesenen und dekodierten Daten mit der zweiten Kodier-Rate; und Schreiben der mit der zweiten Kodier-Rate kodierten Daten in den nichtflüchtigen Speicher.
  4. Verfahren nach Anspruch 1, wobei der angegebene Schaltpunkt der Zeitpunkt ist, zu dem der Host-Befehl empfangen wird.
  5. Verfahren nach Anspruch 1, ferner umfassend: Feststellen, dass der angegebene Schaltpunkt in dem nichtflüchtigen Speicher erreicht wurde, wobei die eingestellte Kodier-Rate als Reaktion auf die Feststellung, dass der angegebene Schaltpunkt erreicht wurde, von der ersten Kodier-Rate auf die zweite Kodier-Rate umgeschaltet wird.
  6. Verfahren nach Anspruch 5, wobei der angegebene Schaltpunkt ein Programmier-Lösch-Zyklen-Schwellenwert ist, und wobei das Feststellen, dass der angezeigte Schaltpunkt erreicht wurde, das Feststellen umfasst, dass eine Anzahl an Programmier-Lösch-Zyklen des nichtflüchtigen Speichers den Programmier-Lösch-Zyklen-Schwellenwert erfüllt.
  7. Verfahren nach Anspruch 6, wobei der Programmier-Lösch-Zyklen-Schwellenwert auf einer Offline-Dauer-Spezifikation der Datenspeichervorrichtung basiert.
  8. Datenspeichervorrichtung umfassend: nichtflüchtigen Speicher; und einen an den nichtflüchtigen Speicher gekoppelten bzw. angeschlossenen Controller, der dazu konfiguriert ist: eine Kodier-Rate in der Datenspeichervorrichtung auf eine erste Kodier-Rate zur Kodierung von in den nichtflüchtigen Speicher zu schreibenden Daten einzustellen; an der Datenspeichervorrichtung einen Host-Befehl zu empfangen, der einen Schaltpunkt zum Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf eine zweite Kodier-Rate anzeigt; festzustellen, dass der angezeigte Schaltpunkt in dem nichtflüchtigen Speicher erreicht wurde; und die eingestellte Kodier-Rate als Reaktion auf die Feststellung, dass der angegebene Schaltpunkt erreicht ist, von der ersten Kodier-Rate auf die zweite Kodier-Rate umzuschalten.
  9. Datenspeichervorrichtung nach Anspruch 8, wobei der Controller ferner dazu konfiguriert ist: Daten, die mit der ersten Kodier-Rate kodiert wurden, aus dem nichtflüchtigen Speicher als Reaktion auf das Umschalten der eingestellten Kodier-Rate von der ersten auf die zweite Kodier-Rate zu lesen und zu dekodieren; die gelesenen und dekodierten Daten mit der zweiten Kodier-Rate zu kodieren; und die mit der zweiten Kodier-Rate kodierten Daten in den nichtflüchtigen Speicher zu schreiben.
  10. Datenspeichervorrichtung nach Anspruch 8, wobei die erste Kodier-Rate höher als die zweite Kodier-Rate ist.
  11. Datenspeichervorrichtung nach Anspruch 8, wobei der angegebene Schaltpunkt ein Programmier-Lösch-Zyklen-Schwellenwert ist, und wobei der Controller so konfiguriert ist, dass er feststellt bzw. ermittelt, dass der angezeigte Schaltpunkt erreicht wurde, indem er bestimmt, dass eine Anzahl an Programmier-Lösch-Zyklen des nichtflüchtigen Speichers den Programmier-Lösch-Zyklen-Schwellenwert erfüllt.
  12. Datenspeichervorrichtung nach Anspruch 11, wobei der Programmier-Lösch-Zyklen-Schwellenwert auf einer Offline-Dauer-Spezifikation der Datenspeichervorrichtung basiert.
  13. Nicht-transitorisches bzw. nichtflüchtiges, prozessorlesbares Speichermedium, das mit Befehlen kodiert ist, die, wenn sie vom Prozessor ausgeführt werden, ein Verfahren durchführen, das Folgendes umfasst: Einstellen einer Kodier-Rate auf eine erste Kodier-Rate zum Kodieren von Daten, die in einen nichtflüchtigen Speicher einer Datenspeichervorrichtung geschrieben werden sollen; Empfangen eines Host-Befehls, der einen Schaltpunkt zum Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf eine zweite Kodier-Rate angibt bzw. anzeigt; Umschalten bzw. Wechseln der eingestellten Kodier-Rate von der ersten Kodier-Rate auf die zweite Kodier-Rate am angegebenen Schaltpunkt; Lesen und Dekodieren von Daten, die mit der ersten Kodier-Rate kodiert wurden, aus dem nichtflüchtigen Speicher als Reaktion auf das Umschalten der eingestellten Kodier-Rate von der ersten auf die zweite Kodier-Rate; Kodieren der gelesenen und dekodierten Daten mit der zweiten Kodier-Rate; und Schreiben der mit der zweiten Kodier-Rate kodierten Daten in den nichtflüchtigen Speicher.
  14. Prozessorlesbares Speichermedium nach Anspruch 13, wobei die erste Kodier-Rate höher als die zweite Kodier-Rate ist.
  15. Prozessorlesbares Speichermedium nach Anspruch 13, wobei der angegebene Schaltpunkt der Zeitpunkt ist, zu dem der Host-Befehl empfangen wird.
  16. Prozessorlesbares Speichermedium bzw. Verfahren nach Anspruch 15, wobei das Verfahren ferner umfasst: Feststellen, dass der angezeigte Schaltpunkt in dem nichtflüchtigen Speicher erreicht wurde. wobei die eingestellte Kodier-Rate als Reaktion auf die Feststellung, dass der angegebene Schaltpunkt erreicht wurde, von der ersten Kodier-Rate auf die zweite Kodier-Rate umgeschaltet wird.
  17. Prozessorlesbares Speichermedium nach Anspruch 16, wobei der angegebene Schaltpunkt ein Programmier-Lösch-Zyklen-Schwellenwert ist, und wobei die eingestellte Kodier-Rate von der ersten Kodier-Rate auf die zweite Rate als Reaktion auf die Feststellung, dass eine Anzahl von Programmier-Lösch-Zyklen des nichtflüchtigen Speichers den Programmier-Lösch-Zyklen-Schwellenwert erreicht hat, umgeschaltet wird.
  18. Prozessorlesbares Speichermedium nach Anspruch 17, wobei der Programmier-Lösch-Zyklen-Schwellenwert auf einer Offline-Dauer der Datenspeichervorrichtung basiert.
  19. Datenspeichervorrichtung umfassend: nichtflüchtigen Speicher; Mittel zum Einstellen einer Kodier-Rate in der Datenspeichervorrichtung auf eine erste Kodier-Rate zur Kodierung von in den nichtflüchtigen Speicher zu schreibenden Daten; Mittel zum Empfangen eines Host-Befehls an der Datenspeichervorrichtung, der einen Schaltpunkt zum Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf eine zweite Kodier-Rate anzeigt; Mittel zum Feststellen bzw. Ermitteln, dass der angezeigte Schaltpunkt in dem nichtflüchtigen Speicher erreicht wurde; und Mittel zum Umschalten der eingestellten Kodier-Rate von der ersten Kodier-Rate auf die zweite Kodier-Rate, als Reaktion auf die Feststellung, dass der angegebene Schaltpunkt erreicht ist.
  20. Datenspeichervorrichtung nach Anspruch 19, wobei die erste Kodier-Rate höher als die zweite Kodier-Rate ist.
  21. Datenspeichervorrichtung nach Anspruch 19, wobei die Datenspeichervorrichtung ferner umfasst: Mittel zum Lesen und Dekodieren von Daten aus dem nichtflüchtigen Speicher, die mit der ersten Kodier-Rate kodiert wurden, als Reaktion auf das Umschalten der eingestellten Kodier-Rate von der ersten auf die zweite Kodier-Rate; Mittel zum Kodieren der gelesenen und dekodierten Daten mit der zweiten Kodier-Rate; und Mittel zum Schreiben der mit der zweiten Kodier-Rate kodierten Daten in den nichtflüchtigen Speicher.
  22. Datenspeichervorrichtung nach Anspruch 19, wobei der angegebene Schaltpunkt ein Programmier-Lösch-Zyklen-Schwellenwert ist, und wobei die Mittel zum Umschalten der eingestellten Kodier-Rate so konfiguriert sind, dass sie feststellen bzw. ermitteln, dass der angezeigte Schaltpunkt erreicht wurde, indem sie bestimmen, dass eine Anzahl an Programmier-Lösch-Zyklen des nichtflüchtigen Speichers den Programmier-Lösch-Zyklen-Schwellenwert erfüllt.
DE112019000108.6T 2018-01-11 2019-01-04 Kodier-raten-umschaltmechanismus für flash-speicher Pending DE112019000108T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/868,868 2018-01-11
US15/868,868 US10644727B2 (en) 2018-01-11 2018-01-11 Code rate switching mechanism for flash memory
PCT/US2019/012418 WO2019139836A1 (en) 2018-01-11 2019-01-04 Code rate switching mechanism for flash memory

Publications (1)

Publication Number Publication Date
DE112019000108T5 true DE112019000108T5 (de) 2020-08-27

Family

ID=67141197

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019000108.6T Pending DE112019000108T5 (de) 2018-01-11 2019-01-04 Kodier-raten-umschaltmechanismus für flash-speicher

Country Status (5)

Country Link
US (2) US10644727B2 (de)
KR (1) KR102150922B1 (de)
CN (1) CN111164695A (de)
DE (1) DE112019000108T5 (de)
WO (1) WO2019139836A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10644727B2 (en) * 2018-01-11 2020-05-05 Western Digital Technologies, Inc. Code rate switching mechanism for flash memory
US11016693B2 (en) * 2018-06-21 2021-05-25 International Business Machines Corporation Block health estimation for wear leveling in non-volatile memories
US12028091B2 (en) * 2022-09-26 2024-07-02 Western Digital Technologies, Inc. Adjustable code rates and dynamic ECC in a data storage device with write verification

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4946249B2 (ja) * 2006-08-07 2012-06-06 富士通セミコンダクター株式会社 Eccのコード長が変更可能な半導体メモリ装置
US8327245B2 (en) 2007-11-21 2012-12-04 Micron Technology, Inc. Memory controller supporting rate-compatible punctured codes
KR20100104623A (ko) * 2009-03-18 2010-09-29 삼성전자주식회사 데이터 처리 시스템 및 그것의 부호율 제어 스킴
US8615700B2 (en) 2009-08-18 2013-12-24 Viasat, Inc. Forward error correction with parallel error detection for flash memories
US8533550B2 (en) * 2010-06-29 2013-09-10 Intel Corporation Method and system to improve the performance and/or reliability of a solid-state drive
US8341498B2 (en) * 2010-10-01 2012-12-25 Sandisk Technologies Inc. System and method of data encoding
EP2633409A4 (de) 2010-10-27 2014-07-23 Lsi Corp Adaptive ecc-verfahren für datenspeicherung auf flashspeicher-basis
US8566667B2 (en) * 2011-07-29 2013-10-22 Stec, Inc. Low density parity check code decoding system and method
US8762798B2 (en) * 2011-11-16 2014-06-24 Stec, Inc. Dynamic LDPC code rate solution
US9214963B1 (en) * 2012-12-21 2015-12-15 Western Digital Technologies, Inc. Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system
US8898549B2 (en) * 2013-02-12 2014-11-25 Seagate Technology Llc Statistical adaptive error correction for a flash memory
US9727416B2 (en) 2015-07-01 2017-08-08 Xilinx, Inc. Variable code rate solid-state drive
US10069859B2 (en) * 2015-12-16 2018-09-04 Verizon Digital Media Services Inc. Distributed rate limiting
US10198313B2 (en) 2016-03-11 2019-02-05 Western Digital Technologies, Inc. Redundancy of error correction encoded data in a storage system
CN107221351B (zh) * 2017-05-27 2020-06-02 华中科技大学 一种固态盘系统中纠错码的优化处理方法及其应用
US10644727B2 (en) * 2018-01-11 2020-05-05 Western Digital Technologies, Inc. Code rate switching mechanism for flash memory

Also Published As

Publication number Publication date
US20200220561A1 (en) 2020-07-09
KR102150922B1 (ko) 2020-09-02
WO2019139836A1 (en) 2019-07-18
US20190215016A1 (en) 2019-07-11
US11190218B2 (en) 2021-11-30
US10644727B2 (en) 2020-05-05
CN111164695A (zh) 2020-05-15
KR20200038320A (ko) 2020-04-10

Similar Documents

Publication Publication Date Title
DE102019124438B4 (de) Multi-state-programmierung für speichervorrichtungen
DE112014004778B4 (de) Vorrichtung und Verfahren zum Verwalten von Chipgruppen
DE112020006139B4 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE102008003113B4 (de) ECC-Steuereinheit, Speichersystem und Verfahren zur Korrektur eines Fehlers
DE102020130044A1 (de) Techniken zum verhindern von lese-störung in nand-speicher
DE102019133129A1 (de) Mehrphasenprogrammierung mit symmetrischer gray-codierung
DE102017117066A1 (de) Nichtbinäre codierung für einen nichtflüchtigen speicher
DE102012112354A1 (de) Speichervorrichtung und nichtflüchtige Speichervorrichtung sowie Betriebsverfahren davon
DE112019000139T5 (de) Nichtflüchtiges speichersystem mit dynamischer zuweisung von anwendungen zu einem speicher basierend auf nutzungsüberwachung
DE112019000108T5 (de) Kodier-raten-umschaltmechanismus für flash-speicher
DE102011085988A1 (de) Speicheranweisungen umfassend Parameter zum Beeinflussen eines Betriebszustands eines Speichers
DE112009001620T5 (de) Nichtflüchtige Speichervorrichtung mit mehreren Bits Pro Zelle (MBC) und System mit Polaritätssteuerung sowie Verfahren zum Programmieren derselbigen
DE102008009235A1 (de) Speichersystem
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE112020006215T5 (de) Blockfamilien-basierte Fehlervermeidung für Speichervorrichtungen
DE102019125059A1 (de) Abbildung für multi-state-programmierung von speichervorrichtungen
DE102019111130A1 (de) Speichercontroller, Betriebsverfahren des Speichercontrollers und Speichersystem
DE102017128994A1 (de) Weiche Dekodierungs-Planung
DE102017114078A1 (de) Fehlerabschwächung für 3d-nand-flash-speicher
US9727261B2 (en) Weighted programming patterns in solid-state data storage systems
DE102021005946A1 (de) Verwaltung der digital gesteuerten ladungspumpen-operation in einem speicher-untersystem
DE102010037064A1 (de) Nichtflüchtige Speichervorrichtung und -system sowie Verfahren des Programmierens einer nichtflüchtigen Speichervorrichtung
DE102018123961A1 (de) Gruppen-leseaktualisierung
DE112019007666T5 (de) Schreibpuffersteuerung in einem verwalteten Speichersystem
DE102015117500A1 (de) Verfahren zur Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R016 Response to examination communication
R081 Change of applicant/patentee

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

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

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

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

R081 Change of applicant/patentee

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

Free format text: FORMER OWNER: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATES DELAWARE), MILPITAS, CA, US