DE102017128994A1 - Weiche Dekodierungs-Planung - Google Patents

Weiche Dekodierungs-Planung Download PDF

Info

Publication number
DE102017128994A1
DE102017128994A1 DE102017128994.1A DE102017128994A DE102017128994A1 DE 102017128994 A1 DE102017128994 A1 DE 102017128994A1 DE 102017128994 A DE102017128994 A DE 102017128994A DE 102017128994 A1 DE102017128994 A1 DE 102017128994A1
Authority
DE
Germany
Prior art keywords
soft
requests
decoders
decode
available
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
DE102017128994.1A
Other languages
English (en)
Inventor
Niang-Chu CHEN
Jun Tao
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.)
Western Digital Technologies Inc
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 DE102017128994A1 publication Critical patent/DE102017128994A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/061Improving I/O performance
    • 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • 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/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms

Landscapes

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

Abstract

Die vorliegende Technologie stellt einen reduzierten Overhead in Paritätsüberprüfung-mit-niedriger-Dichte-Dekodier-Operationen bereit. Ein Verfahren umfasst das Empfangen einer harten Dekodier-Fehler-Angabe von einem Dekodierer, dass das Dekodieren erster Rohdaten, die von einem nichtflüchtigen Speicher in Reaktion auf einen ersten Lesebefehl unter Verwendung eines ersten Satzes von Spannungen gelesen werden, gescheitert ist. Das Verfahren umfasst das Bestimmen einer Zählung von verfügbaren weichen Dekodierern einer Mehrzahl von weichen Dekodierern des Dekodierers. Das Verfahren umfasst das Bestimmen einer Anzahl von weichen Dekodieranforderungen, die ausgegeben werden sollen, basierend auf der Zählung von verfügbaren weichen Dekodierern und einer unerledigten Anzahl von weichen Dekodieranforderungen. Das Verfahren umfasst das Ausgeben der bestimmten Anzahl von weichen Dekodieranforderungen an jeweilige der verfügbaren weichen Dekodierer zum parallelen weichen Dekodieren der ersten Rohdaten. Das Verfahren umfasst das Empfangen einer Erfolgsangabe erfolgreichen Dekodierens von dem Dekodierer.

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung betrifft allgemein Datenspeicherlösungen, die fehlerkorrigierte Kodierung bzw. Fehlerkorrekturkodierung (ECC) verwenden.
  • Hintergrund
  • Datenspeichersysteme (zum Beispiel Solid State Drives (SSD), Festplatten und dergleichen) können eine Paritätsprüfung mit niedriger Dichte (LDPC) verwenden, um Fehler zu korrigieren, die auftreten, wenn eine Information gespeichert und gelesen oder gesendet und empfangen wird. Zum Beispiel durchlaufen für eine normale Leseoperation für ein SSD Rohdaten von der Flash-Speicher-Vorrichtung eine Dekodierung, bevor die SSD-Steuereinheit die Daten an einen Host zurückgibt. Wenn das Dekodieren scheitert, aktiviert die Steuereinheit eine Fehlerkorrektur-Subroutine. Die Fehlerkorrektur-Subroutine bezieht die Verwendung verschiedener Spannungen, um von der Flash-Speicher-Vorrichtung zu lesen und das Versuchen verschiedener Log-Likelihood-Verhältnis (LLR) Tabellen zum LDPC-Dekodieren mit ein.
  • Die vorliegende Technologie reduziert eine Overhead-Zeit während einer Fehlerkorrektur-Subroutine in einem Flash-Speicher-System durch Planen, dass weiche Dekodier-Anforderungen bzw. Soft-Dekodier-Anforderungen parallel durchgeführt werden.
  • Gemäß Aspekten der vorliegenden Technologie wird ein Verfahren zum Verwalten einer Daten-Dekodierung bereitgestellt. Das Verfahren umfasst das Bestimmen einer Zählung von verfügbaren weichen Dekodierern bzw. Soft-Dekodierern einer Mehrzahl von weichen Dekodierern eines Dekodierers. Das Verfahren umfasst das Bestimmen einer Anzahl von weichen Dekodier-Anforderungen, die ausgegeben werden sollen, basierend auf der Zählung von verfügbaren weichen Dekodierern und einer unerledigten Anzahl von weichen Dekodier-Anforderungen. Das Verfahren umfasst das Ausgeben der bestimmten Anzahl von weichen Dekodier-Anforderungen an jeweilige bzw. betreffende der verfügbaren weichen Dekodierer zum parallelen Dekodieren der ersten Rohdaten. Das Verfahren umfasst das Empfangen einer Erfolgsangebe erfolgreichen Dekodierens von dem Dekodierer.
  • Gemäß anderen Aspekten der vorliegenden Technologie wird ein Flash-Speicher-System bereitgestellt. Das Flash-Speicher-System umfasst ein Mittel zum Empfangen einer harten Dekodier-Fehler-Angabe bzw. -indikation von einem Dekodierer, dass das Dekodieren erster Rohdaten, die von einem nichtflüchtigen Speicher in Reaktion auf einen ersten Lesebefehl unter Verwendung eines ersten Satzes von Spannungen gelesen werden, gescheitert ist. Der erste Lesebefehl umfasst einen ersten Satz Leseoperationen. Das Flash-Speicher-System weist ein Mittel zum Bestimmen einer Zählung von verfügbaren weichen Dekodierern einer Mehrzahl von weichen Dekodierern des Dekodierers auf. Das Flash-Speicher-System weist ein Mittel zum Bestimmen einer Anzahl von weichen Dekodier-Anforderungen, die ausgegeben werden sollen, basierend auf der Zählung von verfügbaren Dekodierern und einer unerledigten Anzahl von weichen Dekodier-Anforderungen auf. Das Flash-Speicher-System weist ein Mittel zum Ausgeben der bestimmten Anzahl von weichen Dekodier-Anforderungen an jeweilige der verfügbaren weichen Dekodierer zum parallelen weichen Dekodieren bzw. Soft-Dekodieren der ersten Rohdaten auf. Das Flash-Speicher-System weist ein Mittel zum Empfangen einer Erfolgsangabe erfolgreichen Dekodierens von dem Dekodierer auf.
  • Gemäß anderen Aspekten der vorliegenden Technologie wird ein Flash-Speicher-System bereitgestellt. Das Flash-Speicher-System weist eine Mehrzahl von Flash-Speicher-Vorrichtungen, einen Dekodierer und eine Steuereinheit auf. Die Steuereinheit ist konfiguriert, um eine harte Dekodier-Fehler-Angabe von einem Dekodierer zu empfangen, dass das Dekodieren erster Rohdaten, die von dem nichtflüchtigen Speicher in Reaktion auf einen ersten Lesebefehl unter Verwendung eines ersten Satzes von Spannungen gelesen werden, gescheitert ist. Dabei umfasst der erste Lesebefehl einen ersten Satz von Leseoperationen. Die Steuereinheit ist konfiguriert, um eine Zählung von verfügbaren weichen Dekodierern von einer Mehrzahl von weichen Dekoderern des Dekodierers zu bestimmen. Die Steuereinheit ist konfiguriert, um basierend auf der Zählung der verfügbaren weichen Dekodierer und einer unerledigten Anzahl von weichen Dekodier-Anforderungen eine Anzahl von weichen Dekodier-Anforderungen zu bestimmen, die ausgegeben werden sollen. Die Steuereinheit ist konfiguriert, um die bestimmte Anzahl von weichen Dekodier-Anforderungen an jeweilige der verfügbaren weichen Dekodierer zum parallelen weichen Dekodieren der ersten Rohdaten auszugeben. Die Steuereinheit ist konfiguriert, um von dem Dekodierer eine Erfolgs-Angabe erfolgreichen Dekodierens zu empfangen.
  • Es versteht sich, dass andere Konfigurationen der vorliegenden Technologie einfach gegenüber den Fachleuten aus der folgenden Beschreibung offenbar werden, wobei verschiedene Konfigurationen der vorliegenden Technologie gezeigt und mittels Beispielen beschrieben werden. Wie erkannt werden wird, ist die vorliegend Technologie fähig zu anderen und unterschiedlichen Konfigurationen und ihre mehreren Details sind fähig zur Modifikation in verschiedenen anderen Hinsichten, sämtlich ohne den Umfang der vorliegenden Technologie zu verlassen. Entsprechend sind die Zeichnungen und die detaillierte Beschreibung als darstellender Natur zu betrachten und nicht als beschränkend.
  • Figurenliste
  • Eine detaillierte Beschreibung wird mit Bezugnahme auf die begleitenden Zeichnungen gemacht werden:
    • 1 ist ein Blockdiagramm, das Komponenten eines Flash-Speicher-Systems gemäß Aspekten der vorliegenden Technologie darstellt.
    • 2 ist ein Diagramm, das Lese- und Dekodier-Operationen einer Fehler-Korrektur-Routine für ein Flash-Speicher-System gemäß Aspekten der vorliegenden Technologie darstellt.
    • 3A ist ein Diagramm, das ein Lese- und Dekodier-Operations-Timing des Diagramms aus 2 darstellt.
    • 3B ist ein Diagramm, das ein Lese- und Dekodier-Operations-Timing gemäß Aspekten der vorliegenden Technologie darstellt.
    • 4 ist ein Flussdiagramm, das ein Verfahren zum Reduzieren eines Overheads in einer Fehler-Korrektur-Routine für ein Flash-Speicher-System gemäß Aspekten der vorliegenden Technologie darstellt.
  • Detaillierte Beschreibung
  • Die detaillierte Beschreibung, die unten dargelegt ist, ist als eine Beschreibung von verschiedenen Konfigurationen der vorliegenden Technologie beabsichtigt und ist nicht beabsichtigt, die einzigen Konfigurationen zu repräsentieren, in denen die vorliegende Technologie ausgeübt werden kann. Die angehängten Zeichnungen sind hierin enthalten und bilden einen Teil der detaillierten Beschreibung. Die detaillierte Beschreibung weist spezifische Details für den Zweck des Bereitstellens eines vollständigen Verständnisses der vorliegenden Technologie auf. Jedoch wird es für den Fachmann offenbar sein, dass die vorliegende Technologie ohne diese spezifischen Details ausgeübt werden kann. In einigen Beispielen werden wohlbekannte Strukturen und Komponenten in einer Blockdiagramm-Form gezeigt, um das Verdunkeln der Konzepte der vorliegenden Technologie zu vermeiden. Ähnliche Komponenten sind mit identischen Elementzahlen zur Einfachheit des Verständnisses benannt.
  • Allgemein werden Daten kodiert, wenn sie auf einen nichtflüchtigen Speicher wie z.B. eine Flash-Speicher-Vorrichtung geschrieben werden und um die Daten zu lesen, dekodiert ein Dekodierer Rohdaten, die von der Flash-Speicher-Vorrichtung gelesen werden. Zum Beispiel, wenn der Host Daten in einem Lesebefehl anfordert oder die Steuereinheit Daten als Teil einer Aufrechterhaltungsoperation anfordert, sendet die Steuereinheit einen Lesebefehl an den Flash-Speicher. Der Flash-Speicher liest Rohdaten, die den angeforderten Daten entsprechen und der Dekodierer dekodiert die Rohdaten. Die Steuereinheit gibt die dekodierten Daten an den Host zurück. Wenn jedoch das Dekodieren scheitert, aktiviert die Steuereinheit eine Fehlerkorrekturroutine. Die Fehlerkorrekturroutine bezieht Phasen bzw. Stufen des Lesens von Rohdaten von der Flash-Speicher-Vorrichtung und des Dekodierens der gelesenen Rohdaten unter Verwendung verschiedener Spannungen zum Lesen für jede nachfolgende Phase mit ein, wie es unten detaillierter beschrieben wird.
  • Gemäß Aspekten der vorliegenden Technologie kann eine Zeit zum Beenden der Fehlerkorrektur-Routinen reduziert werden. Ein Lesebefehl für eine gegebene Phase kann einen Satz von Leseoperationen umfassen, wobei jeder eine andere Spannung verwendet. Die Flash-Speicher-Vorrichtung kann für jede andere Spannung neu programmiert werden oder die Flash-Speicher-Vorrichtung kann fähig sein, durch verschiedene Spannungen ein Schaltspiel ausführen. Nachdem der Lesebefehl für die derzeitige Phase der Fehlerkorrektur-Routine beendet ist, werden weiche Dekodier-Anforderungen für die gelesenen Rohdaten ausgegeben. Ein Planer, der als eine Logik implementiert sein kann, die von einer Steuereinheit ausgeführt wird, kann die weichen Dekodier-Anforderungen parallel ausgeben, um die Verwendung von verfügbaren weichen Dekodierern zu optimieren. Daher kann eine Zeit, um das weiche Dekodieren für die derzeitige Phase zu beenden, reduziert werden.
  • 1 ist ein Blockdiagramm, das Komponenten eines Flash-Speicher-Systems 110 gemäß Aspekten der vorliegenden Technologie darstellt. Wie in 1 dargestellt, weist das Flash-Speicher-System eine Schnittstelle 115, eine Steuereinheit 120, einen Speicher 125, einen Dekodierer 160, einen Kodierer 166 und Flash-Speicher-Vorrichtungen 130 auf. Die Schnittstelle 115 vereinfacht die Kommunikation von Daten, Befehlen und/oder Steuersignalen zwischen dem Flash-Speicher-System 110 und einem Host 150. Die Steuereinheit 120 steuert den Betrieb des Flash-Speicher-Systems 110, um Daten in den Flash-Speicher-Vorrichtungen 130 in Übereinstimmung mit Befehlen, die von dem Host 150 empfangen werden, zu speichern und abzurufen. Die Steuereinheit 120 kann einen Prozessor aufweisen. Der Speicher 125, der ein Random Access Memory (RAM) sein kann, stellt vorübergehenden Speicherplatz für die Steuereinheit 120 bereit, um Befehle zu verarbeiten und Daten zwischen dem Host 150 und den Flash-Speicher-Vorrichtungen 130 zu transferieren. Der Dekodierer 160, der einen Speicher, Register, Logik-Gates, einen oder mehrere Prozessoren aufweisen kann und in die Steuereinheit 120 integriert sein kann oder getrennt davon sein kann, dekodert Rohdaten. Der Kodierer 166, der einen Speicher, Register, Logik-Gates, einen oder mehrere Prozessoren aufweisen kann und in die Steuereinheit 120 integriert sein kann oder davon getrennt sein kann, kodiert Daten, die auf die Flash-Speicher-Vorrichtung 130 geschrieben werden sollen. Der Betrieb jeder dieser Komponenten wird unten detaillierter beschrieben.
  • Die Schnittstelle 115 stellt physikalische und elektrische Verbindungen zwischen dem Host 150 und dem Flash-Speicher-System 110 bereit. Die Schnittstelle 115 ist konfiguriert, um die Kommunikation von Daten, Befehlen und/oder Steuersignalen zwischen dem Host 150 und dem Flash-Speicher-System 110 über die physikalischen und elektrischen Verbindungen zu vereinfachen. Die Verbindung und die Kommunikationen mit der Schnittstelle 115 können auf einer Standard-Schnittstelle wie z.B. Universal Serial Bus (USB), Small Computer System Interface (SCSI), Serial Advanced Technology Attachment (SATA), etc. basieren. Alternativ können die Verbindung und/oder Kommunikationen auf einer eigenen Schnittstelle basieren, obwohl die vorliegend Technologie nicht auf irgendeinen besonderen Typ von Schnittstelle beschränkt ist.
  • Der Host 150 kann eine Berechnungsvorrichtung sein wie z.B. ein Computer/Server, ein Smartphone oder irgendeine andere elektronische Vorrichtung, die Daten von dem Flash-Speicher-System 110 liest und Daten darauf schreibt. Der Host 150 kann ein Betriebssystem oder eine andere Software aufweisen, die Lese- und Schreib-Befehle an das Flash-Speicher-System 110 ausgibt. Das Flash-Speicher-System 110 kann in den Host 150 integriert sein oder kann extern zu dem Host 150 sein. Das Flash-Speicher-System 110 kann kabellos mit dem Host 150 verbunden sein oder kann physikalisch mit dem Host 150 verbunden sein.
  • 1 zeigt mehrere Flash-Speicher-Vorrichtungen 130. Das Flash-Speicher-System 110 kann eine oder mehrere Flash-Speicher-Vorrichtungen 130 aufweisen und ist nicht auf eine besondere Anzahl von Flash-Speicher-Vorrichtungen 130 beschränkt. Die Flash-Speicher-Vorrichtungen 130 können jede einen einzelnen Speicherchip oder -rohchip aufweisen. Die Flash-Speichervorrichtungen 130 können unter mehreren Kanälen organisiert sein, durch die Daten von den Flash-Speicher-Vorrichtungen 130 durch die Steuereinheit 120 gelesen werden oder darauf geschrieben werden oder können an einen einzelnen Kanal gekoppelt sein. Die Flash-Speicher-Vorrichtungen 130 können unter Verwendung von NAND-Flash-Speicher implementiert sein. Die Flash-Speicher-Vorrichtungen 130 können jede ein oder mehrere Register 135 zum Speichern von Betriebsparametern der jeweiligen Flash-Speicher-Vorrichtungen 130 aufweisen. Die Betriebsparameter können Folgendes aufweisen: Lesebetriebsparameter wie z.B. Lesespannungen; Schreibbetriebsparameter wie z.B. ursprünglicher Pulswert, schrittweiser Pulswert und Pulsbreite; und Löschbetriebsparameter wie z.B. ursprünglicher Pulswert, schrittweiser Pulswert und Pulsbreite.
  • Die Flash-Speicher-Vorrichtungen 130 weisen mehrere Speicherzellen auf, die in Speicherblöcken wie z.B. Flash-Speicher-Blöcken 140 verteilt sind. Die Flash-Speicher-Vorrichtungen 130 können einen oder mehrere Flash-Speicher-Blöcke 140 aufweisen und die Flash-Speicher-Vorrichtungen 130 können jede dieselbe oder andere Anzahlen von Flash-Speicher-Blöcken 140 aufweisen. Die Flash-Speicher-Blöcke 140 können als Datenblöcke oder Speicherblöcke bezeichnet werden und sind durch die Steuereinheit 120 unter Verwendung einer physikalischen Blockadresse adressierbar. Jeder der Flash-Speicher-Blöcke 140 ist ferner in mehrere Datensegmente oder Seiten unterteilt, die von der Steuereinheit 120 unter Verwendung einer physikalischen Seitenadresse oder einem Versatz von einer physikalischen Blockadresse des Speicherblocks adressierbar sind, der die referenzierte Seite enthält. Die Seiten können Sektoren oder andere Host-Daten-Einheiten speichern. Die Flash-Speicher-Blöcke 140 repräsentieren die Einheiten von Daten, die innerhalb der Flash-Speicher-Vorrichtungen 130 in einer einzelnen Löschoperation gelöscht werden. Die Seiten repräsentieren die Einheiten von Daten, die von den Flash-Speicher-Vorrichtungen 130 in einer Lese- oder Schreiboperation gelesen oder darauf geschrieben werden. Obwohl die Flash-Speicher-Vorrichtungen 130 im Sinne von Blöcken und Seiten beschrieben werden, kann eine andere Terminologie verwendet werden, um sich auf diese Dateneinheiten innerhalb der Flash-Speicher-Vorrichtungen zu beziehen.
  • Die vorliegende Technologie ist nicht auf irgendeine besondere Kapazität eines Flash-Speichers beschränkt. Zum Beispiel können Speicherblöcke jeweils 32, 64, 128 oder 512 Seiten oder irgendeine andere Anzahl von Seiten aufweisen. Zusätzlich können Seiten jede 512 Bytes, 2 KB, 4 KB oder 32 KB zum Beispiel aufweisen. Die Sektoren können jeder zum Beispiel 512 Bytes, 4 KB oder andere Größen aufweisen. Es kann einen oder mehrere Sektoren pro Seite geben.
  • In 1 repräsentiert der Speicher 125 einen flüchtigen Speicher, der an die Steuereinheit 120 während des Betriebs des Flash-Speichersystems 110 gekoppelt ist und von dieser verwendet wird. Die Steuereinheit 120 kann Befehle und/oder Daten in dem Speicher 125 puffern. Die Steuereinheit 120 kann den Speicher 125 auch verwenden, um Adresszuordnungstabellen oder Nachschlagetabellen zu speichern, die verwendet werden, um logische Adressen, die von dem Host 150 verwendet werden, in virtuelle und/oder physikalische Adressen zu konvertieren, die Blöcken und Seiten der Flash-Speicher-Vorrichtungen 130 entsprechen. Andere Typen von Tabellen, Daten, Statusindikatoren usw., die verwendet werden, um die Flash-Speicher-Vorrichtungen 130 zu verwalten, können auch durch die Steuereinheit 120 in dem Speicher 125 gespeichert werden. Zum Beispiel können LLR-Tabellen in dem Speicher 125 gespeichert werden. Der Speicher 125 kann unter Verwendung eines Dynamic Random Access Memory (DRAM), eines Static Random Access Memory (SRAM) oder anderer Typen von flüchtigem Random Access Memory implementiert sein, ohne den Umfang der vorliegenden Technologie zu verlassen. Die Steuereinheit 120 kann die Inhalte des Speichers 125 periodisch in einen oder mehrere ausgewiesene Flash-Speicher-Blöcke 140 speichern, wie z.B. bevor das Flash-Speicher-System 110 ausgeschaltet wird.
  • Die Steuereinheit 120 verwaltet den Fluss von Daten zwischen dem Host 150 und den Flash-Speicher-Vorrichtungen 130. Die Steuereinheit 120 ist konfiguriert, um Befehle und Daten von dem Host 150 über die Schnittstelle zu empfangen. Zum Beispiel kann die Steuereinheit 120 Daten und einen Schreibbefehl von dem Host 150 empfangen, um die Daten in die Flash-Speicher-Vorrichtungen 130 zu schreiben. Die Steuereinheit 120 ist ferner konfiguriert, um Daten über die Schnittstelle 115 zu dem Host zu senden. Zum Beispiel kann die Steuereinheit 120 Daten von den Flash-Speicher-Vorrichtungen 130 lesen und die Daten zu dem Host 150 in Reaktion auf deinen Lesebefehl senden. Die Steuereinheit 120 ist ferner konfiguriert, um Daten, die in den Flash-Speicher-Vorrichtungen 130 und dem Speicher 125 gespeichert sind, basierend auf internen Steueralgorithmen oder anderen Typen von Befehlen zu verwalten, die von dem Host 150 empfangen werden können. Zum Beispiel ist die Steuereinheit 120 konfiguriert, um Operationen wie z.B. automatische Speicherbereinigung (GC), Fehlerkorrektur und Abnutzungsausgleich durchzuführen. Die Fachleute werden mit anderen Operationen vertraut sein, die von einer Steuereinheit in einer Flash-Speicher-Vorrichtung durchgeführt werden, die hierin nicht im Detail beschrieben werden.
  • Die Steuereinheit 120 kann mit einem Allzweckprozessor, einem Mikrocontroller, einem digitalen Signalprozessor (DSP),einem System-on-a-chip (SoC), einem Application Specific Integrated Circuit (ASIC), einem Field Programmable Gate Array (FPGA) oder einer anderen programmierbaren logischen Vorrichtung, einem diskreten Gate oder einer Transistorlogikvorrichtung, diskreten Hardware-Komponenten oder irgend einer Kombination davon implementiert sein, der oder die konzipiert und konfiguriert ist/sind, um die Operationen und Funktionen, die hierin beschrieben sind, durchzuführen. Die Steuereinheit 120 kann die Operationen und Funktionen, die hierin beschrieben sind, durch Ausführen einer oder mehrerer Sequenzen von Instruktionen, die auf einer Maschine/einem Computer-lesbaren Medium gespeichert sind, durchführen. Die Maschine/das Computer-lesbare Medium kann die Flash-Speicher-Vorrichtungen 130, der Speicher 125 oder andere Typen von Medien sein, von denen die Steuereinheit 120 Instruktionen oder Code lesen kann. Zum Beispiel kann das Flash-Speicher-System 110 ein Read-only-Memory (ROM) wie z.B. ein EPROM oder EEPROM aufweisen, das mit Firmware/Sofware kodiert ist, die eine oder mehrere Sequenzen von Instruktionen aufweist, die von der Steuereinheit 120 während des Betriebes des Flash-Speicher-Systems 110 gelesen und ausgeführt werden.
  • Der Dekodierer 160 kann mit einem Allzweckprozessor, einem Mikrocontroller, einem digitalen Signalprozessor (DSP), einem System-on-a-chip (SoC), einem Application Specific Integrated Circuid (ASIC), einem Field Programmable Gate Array (FPGA) oder einer anderen programmierbaren logischen Vorrichtung, einem diskreten Gate oder einer Transistorlogikvorrichtung, diskreten Hardware-Komponenten oder irgend einer Kombination davon implementiert sein, der oder die konzipiert und konfiguriert ist/sind, um die Operationen und Funktionen, die hierin beschrieben sind, durchzuführen. Der Dekodierer 160 kann in die Steuereinheit 120 integriert sein oder kann separat sein. Der Dekodierer 160 kann konfiguriert sein, LDPC zu verwenden. Der Dekodierer 160 kann konfiguriert sein, zusätzliche oder alternative Dekodier-Schemen zu verwenden. Der Dekodierer 160 weist einen oder mehrere harte Dekodierer 162 und einen oder mehrere weiche Dekodierer 164 auf. Die harten Dekodierer 162 können Dekodierer sein, die für hartes Dekodieren reserviert sind. Hartes Dekodieren beschränkt die Lese-Bit-Werte auf entweder eine „1“ oder eine „0“. Weiches Dekodieren verwendet auf der anderen Seite einen Bereich von Werten, die von einer LLR-Tabelle herausgezogen werden, um eine Verlässlichkeit oder Vertrauensmaße bereitzustellen, dass die Lesewerte korrekt sind. Die LLR-Tabelle erlaubt den Vertrauenswerten basierend auf den Leseergebnissen nachgeschlagen zu werden. Die weichen Dekodierer 164 können Dekodierer sein, die für weiches Dekodieren reserviert sind. In bestimmten Implementierungen kann die Anzahl von harten Dekodierern 162 und die Anzahl von weichen Dekodierern 164 dynamisch von einem Pool von verfügbaren Dekodierern reserviert werden.
  • 2 zeigt ein Diagramm 200 einer Leseoperation und einer Fehlerkorrekturroutine. Die Leseoperation 201 wird gefolgt von einer ersten Fehlerkorrekturphase 202, die von einer zweiten Fehlerkorrekturphase 203 gefolgt wird, falls es gebraucht wird.
  • Die Leseoperation 201 startet mit einer Anforderung für Daten, zum Beispiel von dem Host 150 oder der Steuereinheit 120. Die Steuereinheit 120 sendet einen Lesebefehl 211 an die geeignete Flash-Speicher-Vorrichtung 130, die die angeforderten Daten speichert. Die Flash-Speicher-Vorrichtung 130 stellt Rohdaten um Beispiel in einem Puffer bereit, die der Dekodierer 160 für eine harte Dekodieroperation 212 dekodiert. Insbesondere kann der harte Dekodierer 162 die Daten für die harte Dekodieroperation 212 dekodieren. Der Dekodierer 160 gibt eine Angabe 213 an die Steuereinheit 120 zurück nach dem Beenden der harten Dekodier-Operation 212. Wenn die Angabe 213 eine erfolgreiche Dekodierung angibt, gibt die Steuereinheit 120 die dekodierten Daten an den Host 150 in Reaktion auf die Anforderung für Daten zurück. Wenn jedoch die Angabe 213 ein Scheitern angibt, aktiviert die Steuereinheit 120 eine Fehlerkorrekturroutine.
  • Die Steuereinheit startet mit der ersten Fehlerkorrekturphase 202 durch Senden eines Lesebefehls 221 an die Flash-Speicher-Vorrichtung 130. Der Lesebefehl 221 weist die Flash-Speicher-Vorrichtung 130 an, unter Verwendung eines ersten Phasensatzes von Spannungen zu lesen, was ein anderer Satz von Spannungen als zum Beispiel ein vorgegebener Satz von Spannungen ist, der für den Lesebefehl 211 verwendet worden ist. Der erste Phasensatz von Spannungen kann einen Untersatz des vorgegebenen Satzes von Spannungen aufweisen und/oder kann Spannungen aufweisen, die nicht in dem vorgegebenen Satz von Spannungen sind. Die Spannungen des ersten Phasensatzes von Spannungen können einer Basis-Lese-Niveau-Spannung und einer oder mehreren Versatz-Spannungen von der Basis-Lese-Niveau-Spannung entsprechen. Der Lesebefehl 221 kann eine Mehrzahl von Leseoperationen umfassen, wobei jede Leseoperation eine der Spannungen von dem ersten Phasensatz von Spannungen verwendet. Der erste Phasensatz von Spannungen kann zum Beispiel in dem Speicher 125 oder dem Register 135 gespeichert werden. Die Steuereinheit 120 kann die Flash-Speicher-Vorrichtung 130 programmieren, bei einer jeweiligen Spannung für jede Leseoperation des Lesebefehls 221 zu lesen, zum Beispiel durch Einstellen von Werten in dem Register 135, bevor jede Leseoperation ausgegeben wird.
  • Die Flash-Speicher-Vorrichtung 130 stellt erste Rohdaten bereit, die unter Verwendung des ersten Phasensatzes von Spannungen gelesen werden, die der Dekodierer 160 optional für eine harte Dekodier-Operation 222 dekodieren kann. Die Steuereinheit 120 empfängt eine Angabe 223, dass die ersten Rohdaten verfügbar sind. In Implementierungen, in denen die ersten Rohdaten hart dekodiert werden, gibt der Dekodierer 160 die Angabe 223 an die Steuereinheit 120 zurück. Wenn die Angabe 223 erfolgreiches Dekodieren angibt, stellt die Steuereinheit 120 die dekodierten Daten bereit. Andernfalls, wenn die Angabe 223 ein Scheitern angibt, fährt die Steuereinheit 120 mit der Fehlerkorrekturroutine fort.
  • Für jede Fehlerkorrekturphase kann die Steuereinheit 120 eine oder mehrere weiche Dekodieranforderungen ausgeben, wenn das harte Dekodieren scheitert. Zum Beispiel können drei weiche Dekodieranforderungen ausgegeben werden, obwohl in anderen Implementierungen mehr oder weniger weiche Dekodieranforderungen ausgegeben werden können. Die weichen Dekodieranforderungen können ferner zusätzliche Parameter aufweisen, wie z.B. LLR-Tabellen, die sich unter den weichen Dekodieranforderungen unterscheiden können.
  • Die Steuereinheit 120 leitet das weiche Dekodieren der ersten Rohdaten ein. Die Steuereinheit 120 sendet eine weiche Dekodieranforderung 224 an den Dekodierer 160. Die weiche Dekodieranforderung 224 kann eine weiche LDPC-Anforderung sein, die mit den ersten Rohdaten gesendet wird, die in Reaktion auf den Lesebefehl 221 gelesen werden. Die weiche Dekodieranforderung 224 weist eine weiche Information auf, die von der ersten LLR-Tabelle für die erste Fehlerkorrekturphase 22 empfangen werden kann.
  • In einem LDPC-Kodier-Schema kann zum Beispiel ein LLR den Logarithmus eines Verhältnisses zwischen der Wahrscheinlichkeit eines Bits, „0“ oder „1“ zu sein aufweisen. Ein positiver LLR kann allgemein angeben, dass ein Signal, das von einer Flash-Speicher-Zelle gelesen wird, wahrscheinlich ein 0-Bit sein kann und ein negativer LLR kann allgemein angeben, dass das Signal, dass von der Speicherzelle gelesen wird, wahrscheinlich ein 1-Bit sein kann. Jeder zugewiesene LLR kann einem Bit-Wert entsprechen. In einem Beispiel kann ein Bit-Wert mit einem zugewiesenen LLR gleich fünf wahrscheinlicher eine 0 sein als ein Bit mit einem zugewiesenen LLR gleich 1. Ein Bit mit einem zugewiesenen LLR gleich Null kann gleich wahrscheinlich eine 1 oder eine 0 sein.
  • Der Dekodierer 160 kann eine LLR-Tabelle verwenden, um die ersten Rohdaten zu dekodieren. Die ersten Rohdaten können einen oder mehrere Sätze von Bit-Werten aufweisen, wobei jeder Satz unter Verwendung einer der Spannungen eines Satzes von Spannungen gelesen worden ist. Für jedes Bit entsprechen die entsprechenden Bits über die Sätze von Bitwerten einem entsprechenden Vertrauenswert in der LLR-Tabelle. Mit einer größeren Anzahl von Sätzen von Bit-Werten kann die LLR-Tabelle größer sein, um mehr Vertrauenswerte zu begründen. Die LLR-Tabelle stellt eine weiche Information bereit, die der Dekodierer 160 für weiche Dekodierungen verwenden kann. Der Dekodierer 160 gibt eine Angabe 225 an die Steuereinheit 120 zurück, nachdem das weiche Dekodieren beendet ist. Wenn die Angabe 225 einen Erfolg angibt, stellt die Steuereinheit 120 die dekodierten Daten an den Anforderer wie z.B. den Host 150 bereit. Andernfalls, wenn die Angabe 225 ein Scheitern angibt, fährt die Steuereinheit 120 mit der Fehlerkorrekturroutine fort.
  • Die Steuereinheit 120 gibt eine weiche Dekodieranforderung 226 an den Dekodierer 160 aus. Die weiche Dekodieranforderung 226 kann eine weiche LDPC-Anforderung sein, die mit den ersten Rohdaten gesendet wird. Die weiche Dekodieranforderung 226 kann ferner einen zweiten Satz von Vertrauenswerten aufweisen, wie z.B. eine zweite LLR-Tabelle für die erste Fehler-Korrektur-Phase 202. Die zweite LLR-Tabelle kann Vertrauenswerte mit anderen Vertrauenswerten als die Vertrauenswerte der ersten LLR-Tabelle aufweisen. Die verschiedenen Vertrauenswerte können auf verschiedenen Algorithmen zum Berechnen der Vertrauenswerte basieren.
  • Der Dekodierer 160 gibt eine Ausgabe 227 an die Steuereinheit 120 zurück, nachdem das weiche Dekodieren beendet ist. Wenn die Angabe 226 einen Erfolg angibt, stellt die Steuereinheit 120 die dekodierten Daten an den Anforderer wie z.B. den Host 150 bereit. Andernfalls, wenn die Angabe 227 ein Scheitern angibt, fährt die Steuereinheit 120 mit der Fehlerkorrekturroutine fort.
  • Die Steuereinheit 120 gibt eine weiche Dekodieranforderung 228 an den Dekodierer 160 aus. Die weiche Dekodier-Anforderung 228 kann eine weiche LDPC-Anforderung sein, die mit den ersten Rohdaten gesendet wird. Die weiche Dekodier-Anforderung 228 kann ferner einen dritten Satz von Vertrauenswerten aufweisen wie z.B. eine dritte LLR-Tabelle für die erste Fehlerkorrekturphase 202.
  • Der Dekodierer 160 gibt eine Angabe 229 an die Steuereinheit 120 zurück, nachdem das weiche Dekodieren beendet ist. Wenn die Angabe 229 einen Erfolg angibt, stellt die Steuereinheit 120 die dekodierten Daten an den Anforderer wie z.B. den Host 150 bereit. Andernfalls, wenn die Angabe 229 ein Scheitern angibt, fährt die Steuereinheit 120 mit der Fehlerkorrekturroutine fort.
  • Die Fehlerkorrekturroutine kann eine oder mehrere Phasen umfassen. Zum Beispiel sind hierin zwei Phasen beschrieben, obwohl die Fehlerkorrekturroutine mehr Phasen umfassen kann, zum Beispiel acht oder zehn Phasen. Jede Phase beginnt mit einem Lesebefehl, der einen Satz von Spannungen verwendet, die der Phase entsprechen. Zum Beispiel kann ein Satz von Spannungen einen oder mehrere Untersätze von anderen Sätzen von Spannungen aufweisen und/oder kann Spannungen aufweisen, die nicht in den anderen Sätzen von Spannungen sind. Die Sätze von Spannungen können basierend auf Durchführungscharakteristika der Flash-Speicher-Vorrichtungen 130 wie z.B. Programmier-/Lösch- Zyklen, Fehlerzählungen usw. bestimmt werden und können zum Beispiel in dem Speicher 125 gespeichert werden. Der Satz von Spannungen für einen derzeitigen Lesebefehl kann in dem Register 135 programmiert werden, bevor die Flash-Speicher-Vorrichtung 130 die Leseoperationen durchführt.
  • Jede Phase weist weiche Dekodieranforderungen auf. Die weichen Dekodieranforderungen für eine gegebene Phase können sowohl Rohdaten aufweisen, die von der derzeitigen Phase gelesen werden als auch Rohdaten, die von vorhergehenden Phasen gelesen werden. Zum Beispiel können Rohdaten, die für jede Phase gelesen werden, in einem Puffer des Speichers 125 gespeichert werden, bis die Fehlerkorrekturroutine endet. Für jede nachfolgende Phase können die weichen Dekodieranforderungen die Puffer referenzieren, die Rohdaten halten, die sowohl für die derzeitige Phase als auch für vorherige Phasen gelesen worden sind. Durch Verwenden mehrerer Rohdatenpuffer erhöht sich die Granularität der assoziierten Spannungsbereiche. Das Verwenden der Rohdatenpuffer vorhergehender Phasen kann dem Bedarf, Daten erneut unter Verwendung der vorhergehend verwendeten Spannung zu lesen, vorbeugen. Zum Beispiel, wenn eine vorhergehende Phase Daten unter Verwendung von 1,0 V lesen würden und die derzeitige Phase Daten benötigt, die bei 1,0 V und 1,1 V gelesen werden, dann können die Daten, die vorher bei 1,0 V gelesen worden sind, verwendet werden, anstatt dass die Daten unter Verwendung von 1,0 V erneut gelesen werden. Die erhöhte Granularität der Spannungsbereiche, die der erhöhten Anzahl von Spannungen entspricht, die für das Lesen von Daten verwendet werden, kann eine größere LLR-Tabelle benötigen, die zusätzliche Vertrauenswerte für die Spannungsbereiche hält. Jede Phase kann eine beschränkte Anzahl von weichen Dekodierungen durchführen, wie z.B. drei, obwohl mehr oder weniger weiche Dekodierungen durchgeführt werden können und einer Anzahl von LLR-Tabellen entsprechen können, die für jede Phase verfügbar sind. Jede weiche Dekodieranforderung für jede Phase verwendet eine weiche Information basierend auf einer anderen LLR-Tabelle. Daher kann es zum Beispiel drei verschiedene LLR-Tabellen für jede Phase geben.
  • Nachdem sämtliche weichen Dekodieranforderungen, zum Beispiel drei weiche Dekodieranforderungen, für die erste Fehlerkorrekturphase 202 beendet sind, fährt die Steuereinheit mit der zweiten Fehlerkorrekturphase 203 fort.
  • Die Steuereinheit startet die zweite Fehlerkorrekturphase 203 durch Senden eines Lesebefehls 231 an die Flash-Speicher-Vorrichtung 130. Der Lesebefehl 231 weist die Flash-Speicher-Vorrichtung 130 an, unter Verwendung eines zweiten Phasensatzes von Spannungen bzw. eines Satzes von Spannungen einer zweiten Phase zu lesen, was ein anderer Satz von Spannungen ist als der vorgegebene Satz von Spannungen und anders als der erste Phasensatz von Spannungen. Der zweite Phasensatz von Spannungen kann zum Beispiel in dem Speicher 125 oder Register 135 gespeichert werden und entspricht der zweiten Fehlerkorrekturphase 203. Die Flash-Speicher-Vorrichtung 130 gibt zweite Rohdaten zurück, die unter Verwendung des zweiten Phasensatzes von Spannungen gelesen werden, die der Dekodierer für eine harte Dekodieroperation 232 dekodieren kann. Die Steuereinheit empfängt eine Angabe 233, dass die zweiten Rohdaten verfügbar sind. In Implementierungen, in denn die zweiten Rohdaten dekodiert werden, gibt der Dekodierer 160 die Angabe 233 an die Steuereinheit 120 zurück. Wenn die Angabe 233 erfolgreiches Dekodieren angibt, stellt die Steuereinheit 120 die dekodierten Daten bereit. Andernfalls, wenn die Angabe 233 ein Scheitern angibt, fährt die Steuereinheit 120 mit der Fehlerkorrekturroutine fort.
  • Die Steuereinheit 120 leitet ein weiches Dekodieren der zweiten Rohdaten ein. Die Steuereinheit 120 sendet eine weiche Dekodieranforderung 234 an den Dekodierer 160. Die weiche Dekodieranforderung 234 kann eine weiche LDPC-Anforderung sein, die mit den ersten Rohdaten und den zweiten Rohdaten gesendet wird. Die weiche Dekodieranforderung 234 kann ferner einen Satz von Vertrauenswerten aufweisen wie z.B. eine erste LLR-Tabelle für die zweite Fehlerkorrekturphase 203.
  • Die LLR-Tabellen für die zweite Fehlerkorrekturphase 203 können jeweils eine Matrix mit Vertrauenswerten sein, die die ersten Rohdaten und die zweiten Rohdaten begründen. Der Dekodierer 160 gibt eine Angabe 235 an die Steuereinheit 120 zurück, nachdem das weiche Dekodieren beendet ist. Wenn die Angabe 235 einen Erfolg angibt, stellt die Steuereinheit 120 die dekodierten Daten dem Anforderer wie z.B. dem Host 150 bereit. Andernfalls, wenn die Angabe 235 ein Scheitern angibt, fährt die Steuereinheit 120 mit der Fehlerkorrekturroutine fort.
  • Die Steuereinheit 120 gibt eine weiche Dekodieranforderung 236 an den Dekodierer 160 aus. Die weiche Dekodieranforderung 236 kann eine weiche LDPC-Anforderung sein, die mit den ersten Rohdaten und den zweiten Rohdaten gesendet wird. Die weiche Dekodieranforderung 236 kann ferner einen zweiten Satz von Vertrauenswerten wie z.B. eine zweite LLR-Tabelle für die zweite Fehlerkorrekturphase 203 aufweisen.
  • Der Dekodierer 160 gibt eine Angabe 237 an die Steuereinheit 120 zurück, nachdem das weiche Dekodieren beendet ist. Wenn die Angabe 237 einen Erfolg angibt, gibt die Steuereinheit 120 die dekodierten Daten an den Host 150 zurück. Andernfalls, wenn die Angabe 237 ein Scheitern angibt, fährt die Steuereinheit 120 mit der Fehlerkorrekturroutine fort.
  • Die Steuereinheit 120 gibt eine weiche Dekodieranforderung 238 an den Dekodierer 160 aus. Die weiche Dekodieranforderung 238 kann eine weiche LDPC-Anforderung sein, die mit den ersten Rohdaten und den zweiten Rohdaten gesendet wird. Die weiche Dekodieranforderung 238 kann ferner einen dritten Satz von Vertrauenswerten aufweisen wie z.B. eine dritte LLR-Tabelle für die zweite Fehlerkorrekturphase 203.
  • Der Dekodierer gibt eine Angabe 239 an die Steuereinheit 120 zurück, nachdem die weiche Dekodierung beendet ist. Wenn die Angabe 239 einen Erfolg angibt, gibt die Steuereinheit 120 die dekodierten Daten an den Host 150 zurück. Andernfalls, wenn die Angabe 239 ein Scheitern angibt, fährt die Steuereinheit 120 mit der Fehlerkorrekturroutine fort.
  • Die Steuereinheit 120 kann mit zusätzlichen Fehlerkorrekturphasen fortfahren, bis das Dekodieren erfolgreich ist oder sämtliche Fehlerkorrekturphasen durchgeführt worden sind. Wenn sämtliche Fehlerkorrekturphasen durchgeführt worden sind, kann die Steuereinheit 120 einen Lesefehler angeben.
  • 3A stellt ein Timing-Diagramm dar, das der Fehlerkorrekturroutine entspricht, die in 2 gezeigt ist. Die Steuereinheit 120 gibt einen Lesebefehl 321 für die erste Fehlerkorrekturphase aus. Nach Beendigung (und harten Dekodier-Fehler) des Lesebefehls 321, gibt die Steuereinheit eine weiche Dekodieranforderung 324 aus. Wenn das weiche Dekodieren scheitert, gibt die Steuereinheit eine weiche Dekodieranforderung 326 aus. Wenn das Weiche Dekodieren scheitert, gibt die Steuereinheit eine weiche Dekodieranforderung 328 aus. Wenn das weiche Dekodieren scheitert, startet die Steuereinheit die zweite Fehlerkorrekturphase und gibt einen Lesebefehl 331 aus. Nach Beendigung (und hartem Dekodier-Fehler) des Lesebefehls 331, gibt die Steuereinheit eine weiche Dekodieranforderung 334 aus. Wenn das weiche Dekodieren scheitert, gibt die Steuereinheit eine weiche Dekodieranforderung 336 aus. Wenn das weiche Dekodieren scheitert, gibt die Steuereinheit eine weiche Dekodieranforderung 338 aus. Wie in 3A zu sehn wird jede Anforderung sequentiell nach dem Scheitern der vorherigen Anforderung ausgegeben.
  • Obwohl 3A nicht maßstabsgetreu gezeichnet ist, entsprechen die Längen jeder Linie allgemein einer Zeitlänge. Mit anderen Worten brauchen Leseoperationen von der Speichervorrichtung allgemein mehr Zeit als weiche Dekodieroperationen. Zum Beispiel kann eine Leseoperation von der Flash-Speicher-Vorrichtung mehr Zeit benötigen, um beendet zu werden als drei weiche Dekodieroperationen.
  • 3B zeigt ein Timing-Diagramm, das einer Fehlerkorrekturroutine gemäß Aspekten der vorliegenden Technologie entspricht. Nachdem der Lesebefehl 321 beendet ist (und ein Scheitern angibt), bestimmt die Steuereinheit 120 eine Zählung von verfügbaren weichen Dekodierern 164. Die Steuereinheit 120 bestimmt auch eine unerledigte Anzahl von weichen Dekodieranforderungen für die derzeitige Phase. Zum Beispiel, wenn eine Gesamtanzahl von weichen Dekodieranforderungen für die derzeitige Phase drei ist und keine weichen Dekodieranforderungen für die derzeitige Phase ausgegeben worden sind, ist die unerledigte Anzahl drei. Wenn die Zählung von verfügbaren weichen Dekodierern 164 größer als oder gleich zu der unerledigten Anzahl ist, gibt die Steuereinheit 120 die unerledigte Anzahl von weichen Dekodieranforderungen aus. In 3B gibt die Steuereinheit 120 weiche Dekodieranforderungen 324, 326 und 328 parallel an jeweilige verfügbare parallele weiche Dekodierer aus. Wenn jedoch die Zählung von verfügbaren weichen Dekodierern weniger als die unerledigte Anzahl von weichen Dekodieranforderungen ist, wird die Steuereinheit 120 weiche Dekodieranforderungen an die verfügbaren weichen Dekodierer ausgeben. Wenn weiche Dekodierer verfügbar werden, wird die Steuereinheit 120 sämtliche unerledigten weichen Dekodieranforderungen ausgeben, bis es keine unerledigten weichen Dekodieranforderungen mehr für die derzeitige Phase gibt.
  • Bei Scheitern der weichen Dekodieranforderungen 325, 326 und 328 fährt die Steuereinheit 120 mit der nächsten Phase fort. Die Steuereinheit 120 gibt die nächste Leseanforderung aus, wobei ein Lesebefehl 331 einen anderen Satz von Spannungen verwendet, als in vorhergehenden Lesebefehlen verwendet worden ist. Nachdem der Lesebefehl 331 beendet wird, gibt die Steuereinheit 120 weiche Dekodieranforderungen 334, 336 und 338 parallel aus.
  • Die Fehlerkorrekturroutine aus 3B wird ferner unten in Bezugnahme auf 4 beschrieben. 3 zeigt ein Flussdiagramm 400 einer Fehlerkorrekturroutine. Der Host 150 fordert Daten von einer der Flash-Speicher-Vorrichtungen 130 an. Alternativ kann die Steuereinheit 120 die Daten für eine Aufrechterhaltungsoperation wie z.B. automatische Speicherbereinigung anfordern. Die Steuereinheit 120 gibt einen ursprünglichen Lesebefehl an die Flash-Speicher-Vorrichtung 130 aus, die basierend auf einer Adresse ausgewählt werden kann, die mit den angeforderten Daten assoziiert ist. Der Prozess aus 4 beginnt mit der ersten Fehlerkorrekturphase, nachdem der ursprüngliche Lesebefehl ein Scheitern zurückgibt, zum Beispiel wenn der Dekodierer 160 ein Scheitern des harten Dekodierens angibt.
  • Die Steuereinheit 120 gibt an die Flash-Speicher-Vorrichtung 130 einen ersten Lesebefehl unter Verwendung eines ersten Satzes von Spannungen aus. Der erste Satz von Spannungen entspricht der ersten Fehlerkorrekturphase und unterschiedet sich von dem Satz von Spannungen, der in dem ursprünglichen Lesebefehl verwendet wird. Der Dekodierer 160 dekodiert erste Rohdaten von der Flash-Speicher-Vorrichtung 130 in Reaktion auf den ersten Lesebefehl. Dieses Dekodieren kann ein hartes Dekodieren sein, das von dem harten Dekodierer 162 dekodiert wird. Der harte Dekodierer 162 kann auf die ersten Rohdaten von einem Puffer in dem Speicher 125 zugreifen.
  • Bei 410 empfängt die Steuereinheit 120 von dem Dekodierer 160 eine harte Dekodier-Fehler-Angabe, dass das Dekodieren der ersten Rohdaten gescheitert ist. Bei 420 bestimmt die Steuereinheit 120 eine Zählung verfügbarer weicher Dekodierer der weichen Dekodierer 164. Zum Beispiel kann der Dekodierer 160 vier harte Dekodierer 162 und vier weiche Dekodierer 164 aufweisen, obwohl es in anderen Implementierungen mehr oder weniger harte Dekodierer 162 und weiche Dekodierer 164 geben kann. Bei 430 bestimmt die Steuereinheit 120 basierend auf der Zählung verfügbarer weicher Dekodierer und einer unerledigten Anzahl von weichen Dekodieranforderungen eine Anzahl von weichen Dekodieranforderungen, die ausgegeben werden sollen. Wenn die Zählung von verfügbaren weichen Dekodierern größer als oder gleich zu der unerledigten Anzahl ist, dass ist die Anzahl der weichen Dekodieranforderungen, die ausgegeben werden sollen, die unerledigte Anzahl. Wenn die Zählung verfügbarer weicher Dekodierer weniger als die unerledigte Anzahl ist, dann ist die Anzahl der weichen Dekodieranforderungen, die ausgegeben werden sollen, gleich der Zählung. Bei dem Start einer Fehlerkorrekturphase ist die unerledigte Anzahl die Gesamtanzahl weicher Dekodierungen für die Phase.
  • Bei 440 gibt die Steuereinheit 120 die bestimmte Anzahl von weichen Dekodieranforderungen jeweils an die verfügbaren weichen Dekodierer aus. Die weichen Dekodieranforderungen können Rohdaten verwenden, die für die derzeitige Phase nebenbei mit Rohdaten der vorhergehenden Phasen gelesen werden. Wie oben beschrieben können die weichen Dekodieranforderungen jeweils einen Satz von Vertrauenswerten wie z.B. eine LLR-Tabelle aufweisen. Entsprechend können so viele weiche Dekodieranforderungen wie es verfügbare weiche Dekodierer gibt, parallel verarbeitet werden. Nach dem Ausgeben der weichen Dekodieranforderungen aktualisiert die Steuereinheit 120 die unerledigte Anzahl, zum Beispiel durch Subtrahieren der Anzahl von weichen Dekodieranforderungen, die ausgegeben worden sind. Wenn die unerledigte Anzahl größer als Null ist, kann die Steuereinheit 120 die Schritte 420, 430 und 440 wiederholen, wie es gebraucht wird, bis die unerledigte Anzahl Null ist.
  • Bei 450 empfängt die Steuereinheit 120 von dem Dekodierer 160 eine Erfolgsangabe des erfolgreichen Dekodierens. Die Erfolgsangabe kann von einer erfolgreichen weichen Dekodierung kommen, zum Beispiel in Reaktion auf die zumindest eine weiche Dekodieranforderung, die bei 450 ausgegeben worden ist. Die Erfolgsangabe kann von einer erfolgreichen harten Dekodierung kommen, zum Beispiel in Reaktion auf eine harte Dekodierung, die mit einem zweiten Lesebefehl für die nächste Phase assoziiert ist, die ausgegeben wird, nachdem sämtliche weichen Dekodieranforderungen für die derzeitige Phase scheitern. Sobald die angeforderten Daten erfolgreich dekodiert worden sind, wird die Steuereinheit 120 die dekodierten Daten dem Anforderer verfügbar machen, zum Beispiel dem Host 150 oder der Steuereinheit 120, ohne Rücksicht darauf, welche Anforderung der Fehlerkorrekturroutine in dem Erfolg resultiert ist.
  • In bestimmten Situationen können die Daten jedoch mehr als einmal erfolgreich dekodiert werden Zum Beispiel kann mehr als eine der weichen Dekodierungen der derzeitigen Fehlerkorrekturphase etwas erfolgreich zurückgeben. Weil die weichen Dekodierungen für die derzeitige Fehlerkorrekturphase parallel verarbeitet werden, kann mehr als eine weiche Dekodierung einen Erfolg bei Beendigung zurückgeben, was in mehr als einem erfolgreich dekodierten Sätzen von Daten resultiert, die dieselben resultierenden Daten sein können.
  • Die Steuereinheit 120 bestimmt in Reaktion auf die Erfolgsangabe, ob die angeforderten Daten erfolgreich bereitgestellt worden sind. Zum Beispiel kann die Steuereinheit 120 eine Zustandsmaschine aufrechterhalten, die in dem Speicher 125 oder dem Register 135 gespeichert werden kann. Die Zustandsmaschine kann den Zustand der Leseanforderungen zu den Flash-Speicher-Vorrichtungen 130 verfolgen. Die Zustandsmaschine kann ein Erfolgs-Flag für jede Leseanforderung aufweisen, um anzugeben, dass die Daten vorher bereitgestellt worden sind. Die Steuereinheit 120 stellt die dekodierten Daten zu dem Anforderer bereit, wenn die angeforderten Daten nicht vorher dem Anforderer bereitgestellt worden sind. Zum Beispiel kann die Zustandsmaschine angeben, dass das Erfolgs-Flag nicht gesetzt war, dass daher die angeforderten Daten nicht vorher bereitgestellt worden sind. Bei Bereitstellen der dekodierten Daten, aktualisiert die Steuereinheit 120 die Zustandsmaschine, zum Beispiel durch Setzen des entsprechenden Erfolgs-Flags. Wenn die Steuereinheit 120 eine andere Erfolgs-Angabe erfolgreichen Dekodierens empfängt, wird die Steuereinheit 120 sehen, dass das Erfolgs-Flag gesetzt worden ist und wird die dekodierten Daten verwerfen.
  • Die Fehlerkorrekturroutine, die hierin beschrieben ist, kann einen Leistungsverbrauch und eine Ressourcenverwendung aufgrund von parallelen weichen Dekodieroperationen erhöhen. Jedoch kann der Nutzen des reduzierten Overheads die Nachteile überwiegen, insbesondere in der Nähe eines Endes einer Lebensdauer des Flash-Speicher-Systems 110, in dem eine hohe Bit-Fehler-Rate das Aktivieren der Fehlerkorrekturroutine erforderlich macht. In bestimmten Implementierungen kann die Steuereinheit 120 eine maximale Anzahl von parallelen weichen Dekodierungen beschränken, die weniger als die Zählung verfügbarer weicher Dekodierer sein kann.
  • Die Fachleute würden anerkennen, das verschiedene darstellende Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen, die hierin beschrieben sind, als elektronische Hardware, Computersoftware oder Kombinationen von beidem implementiert sein können. Um diese Austauschbarkeit von Hardware und Software zu illustrieren, sind verschiedene darstellende Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen oben allgemein im Sinne ihrer Funktionalität beschrieben worden. Ob solch eine Funktionalität als Hardware oder Software implementiert ist, hängt von der besonderen Anwendung und Designbedingungen ab, die dem Gesamtsystem auferlegt sind. Geschulte Handwerker können die beschriebene Funktionalität auf unterschiedliche Arten für jede besondere Anwendung implementieren. Verschiedene Komponenten und Blöcke können unterschiedlich angeordnet werden (zum Beispiel in unterschiedlicher Reihenfolge angeordnet oder auf eine andere Art partitioniert) sämtlich ohne den Umfang der vorliegenden Technologie zu verlassen.
  • Es versteht sich, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den offenbarten Prozessen eine Darstellung von beispielhaften Zugängen ist. Basierend auf Designpräferenzen versteht sich, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den Prozessen neu angeordnet werden können. Einige der Schritte können gleichzeitig durchgeführt werden. Das begleitende Verfahren beansprucht vorliegende Elemente der verschiedenen Schritte in einer beispielhaften Reihenfolge und ist nicht gemeint, auf die spezifische Reihenfolge oder Hierarchie, die präsentiert worden ist, beschränkt zu sein.
  • Die vorhergehende Beschreibung wird bereitgestellt, um jedem Fachmann zu ermöglichen, die verschiedenen Aspekte, die hierin beschrieben sind, auszuüben. Die vorhergehende Beschreibung stellt verschiedene Beispiele von der vorliegenden Technologie bereit und die vorliegende Technologie ist nicht auf diese Beispiele beschränkt. Verschiedene Modifikationen dieser Aspekte werden dem Fachmann leicht offenbar und die allgemeinen Prinzipien, die hierin definiert werden, können auf andere Aspekte angewandt werden. Daher sind die Ansprüche nicht beabsichtigt, auf die Aspekte, die hierin gezeigt werden, beschränkt zu sein, sondern es soll der volle Umfang, der konsistent mit den Sprachansprüchen ist, gewährt werden, wobei eine Bezugnahme auf ein Element im Singular nicht beabsichtigt ist, „eins und nur eins“ zu bedeuten, es sei denn, dass es so spezifisch erklärt ist, sondern anstelle dessen „eins oder mehr“. Wenn es nicht spezifisch anders erklärt ist, bezieht sich der Ausdruck „einige“ auf eins oder mehr. Pronomen im Maskulin (zum Beispiel sein) umfassen das weibliche und neutrale Geschlecht (zum Beispiel, ihr und sein) und umgekehrt. Überschriften und Unterüberschriften, falls es solche gibt, werden nur für die Bequemlichkeit verwendet und beschränken die Erfindung nicht.
  • Eine Formulierung wie z.B. ein „Aspekt“ impliziert nicht, dass solch ein Aspekt essentiell für die vorliegende Technologie ist, oder dass solch ein Aspekt für sämtliche Konfigurationen der vorliegenden Technologie zutrifft. Eine Offenbarung, die einen Aspekt betrifft, kann für sämtliche Konfigurationen zutreffen oder für eine oder mehrere Konfigurationen. Ein Aspekt kann ein oder mehrere Beispiele bereitstellen. Eine Formulierung wie z.B. ein Aspekt kann sich auf einen oder mehrere Aspekte beziehen und umgekehrt. Eine Formulierung wie z.B. eine „Ausführungsform“ impliziert nicht, dass solch eine Ausführungsform essentiell für die vorliegende Technologie ist, oder dass solch eine Ausführungsform für sämtliche Konfigurationen der vorliegenden Technologie zutrifft. Eine Offenbarung, die eine Ausführungsform betrifft, kann für sämtliche Ausführungsformen zutreffen oder für eine oder mehrere Ausführungsformen. Eine Ausführungsform kann ein oder mehrere Beispiele bereitstellen. Eine Formulierung wie z.B. eine „Ausführungsform“ kann sich auf eine oder mehrere Ausführungsformen beziehen und umgekehrt. Eine Formulierung wie z.B. eine „Konfiguration“ impliziert nicht, dass solch eine Konfiguration essentiell für die vorliegende Technologie ist oder dass solch eine Konfiguration auf sämtliche Konfigurationen der vorliegenden Technologie zutrifft. Eine Offenbarung, die eine Konfiguration betrifft, kann für sämtliche Konfigurationen zutreffen, oder für eine oder mehrere Konfigurationen. Eine Konfiguration kann ein oder mehrere Beispiele bereitstellen. Eine Formulierung wie z.B. eine „Konfiguration“ kann sich auf eine oder mehrere Konfigurationen beziehen und umgekehrt.
  • Das Wort „beispielhaft“ wird hierin verwendet um „als ein Beispiel oder eine Veranschaulichung dienend“ zu bedeuten. Ein Aspekt oder Aufbau, der hierin als „beispielhaft“ beschrieben ist, ist nicht notwendigerweise als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Aufbauten auszulegen.
  • Sämtliche strukturellen und funktionellen Äquivalente zu den Elementen der verschiedenen Aspekte, die durchgängig durch diese Offenbarung beschrieben sind, die bekannt sind oder später bekannt werden bei den Fachleuten, sind ausdrücklich hierin durch Bezugnahme enthalten und sind beabsichtigt, durch die Ansprüche umfasst zu sein. Darüber hinaus ist nichts, das hierin offenbart ist, dazu beabsichtigt, der Öffentlichkeit gewidmet zu werden, unabhängig davon, ob solch eine Offenbarung ausdrücklich in den Ansprüchen rezitiert ist. Kein Anspruchselement sollte unter der Vorschrift von 35 U.S.C. §112, sechster Absatz, ausgelegt werden, wenn das Element nicht ausdrücklich unter Verwendung der Formulierung „Mittel zu“ rezitiert ist oder in dem Fall eines Verfahrensanspruches das Element unter Verwendung der Formulierung „Schritt zu“ rezitiert ist. Weiterhin in dem Ausmaß, in dem der Ausdruck „aufweisen“ oder dergleichen in der Beschreibung oder den Ansprüchen verwendet wird, ist solch ein Ausdruck dafür beabsichtigt, auf eine Weise inklusiv zu sein, die ähnlich dazu ist, wie der Ausdruck „umfassen“ als „umfassen“ interpretiert wird, wenn er als ein Übergangswort in einem Anspruch angewandt wird.

Claims (21)

  1. Verfahren zum Verwalten einer Datendekodierung, das Folgendes umfasst; Bestimmen einer Zählung bzw. Zählrate von verfügbaren weichen Dekodierern bzw. Soft-Dekodierern einer Mehrzahl von weichen Dekodierern eines Dekodierers; Bestimmen einer Anzahl von weichen Dekodieranforderungen, die ausgegeben werden sollen, basierend auf der Zählung von verfügbaren weichen Dekodierern und einer unerledigten Anzahl von weichen Dekodieranforderungen; Ausgeben der bestimmten Anzahl von weichen Dekodieranforderungen an jeweilige der verfügbaren weichen Dekodierer zum parallelen weichen Dekodieren der ersten Rohdaten; und Empfangen einer Erfolgsangabe erfolgreichen Dekodierens von dem Dekodierer.
  2. Verfahren nach Anspruch 1, wobei die weichen Dekodieranforderungen, die die ersten Rohdaten verwenden, ferner jeweilige Sätze von Vertrauenswerten verwenden.
  3. Verfahren nach Anspruch 1, das ferner Folgendes umfasst: Aktualisieren der Zählung von verfügbaren weichen Dekodierern und der unerledigten Anzahl von weichen Dekodieranforderungen nach dem Ausgeben der bestimmten Anzahl von weichen Dekodieranforderungen; Aktualisieren der Anzahl von weichen Dekodieranforderungen, die ausgegeben werden sollen; Bestimmen der Anzahl von weichen Dekodieranforderungen, die ausgegeben werden sollen, basierend auf der aktualisierten Zählung von verfügbaren weichen Dekodierern und der aktualisierten unerledigten Anzahl von weichen Dekodieranforderungen; und Ausgeben der bestimmten Anzahl von weichen Dekodieranforderungen an jeweilige der verfügbaren weichen Dekodierer für parallele weiche Dekodierung der ersten Rohdaten.
  4. Verfahren nach Anspruch 1, das ferner Folgendes umfasst: Empfangen einer weichen Dekodierungs-Fehler-Angabe für jede der weichen Dekodieranforderungen; wenn die unerledigte Anzahl von weichen Dekodieranforderungen Null ist, Ausgeben eines zweiten Lesebefehls unter Verwendung eines zweiten Satzes von Spannungen, wobei der zweite Lesebefehl einen zweiten Satz von Leseoperationen umfasst.
  5. Verfahren nach Anspruch 4, das ferner Folgendes umfasst: Empfangen einer zweiten harten Dekodier-Fehler-Angabe, dass das Dekodieren zweiter Rohdaten, die in Reaktion zu dem zweiten Lesebefehl gelesen worden sind, gescheitert ist; Zurücksetzen der unerledigten Anzahl von weichen Dekodieranforderungen; Bestimmen der Zählung von verfügbaren weichen Dekodierern der Mehrzahl von weichen Dekodierern; Bestimmen der Anzahl von weichen Dekodieranforderungen, die ausgegeben werden sollen, basierend auf der Zählung von verfügbaren weichen Dekodierern und der unerledigten Anzahl von weichen Dekodieranforderungen; Ausgeben der bestimmten Anzahl von weichen Dekodieranforderungen an jeweilige der verfügbaren weichen Dekodierer zum parallelen weichen Dekodieren der zweiten Rohdaten.
  6. Verfahren nach Anspruch 1, das ferner Folgendes umfasst: Bestimmen, ob die angeforderten Daten erfolgreich bereitgestellt worden sind in Reaktion auf die Erfolgsangabe; und Bereitstellen der dekodierten Daten, wenn die angeforderten Daten nicht vorher bereitgestellt worden sind.
  7. Verfahren nach Anspruch 6, wobei das Bestimmen, ob die angeforderten Daten erfolgreich bereitgestellt worden sind, das Bestimmen umfasst, ob ein Erfolgs-Flag, das angibt, dass die angeforderten Daten bereitgestellt worden sind, gesetzt worden ist.
  8. Flash-Speicher-System, das Folgendes aufweist: ein Mittel zum Empfangen einer harten Dekodierungs-Fehler-Angabe von einem Dekodierer, dass das Dekodieren erster Rohdaten, die von einem nichtflüchtigen Speicher in Reaktion auf einen ersten Lesebefehl unter Verwendung eines ersten Satzes von Spannungen gelesen worden sind, gescheitert ist, wobei der erste Lesebefehl einen ersten Satz von Leseoperationen umfasst; ein Mittel zum Bestimmen einer Zählung bzw. einer Zählrate von verfügbaren weichen Dekodierern einer Mehrzahl von weichen Dekodierern des Dekodiers; ein Mittel zum Bestimmen einer Anzahl von weichen Dekodieranforderungen, die ausgegeben werden sollen, basierend auf der Zählung verfügbarer weicher Dekodierer und einer unerledigten Anzahl von weichen Dekodieranforderungen; ein Mittel zum Ausgeben der bestimmten Anzahl von weichen Dekodieranforerungen an jeweilige der verfügbaren weichen Dekodierer zum parallelen weichen Dekodieren der ersten Rohdaten; und ein Mittel zum Empfangen einer Erfolgsangabe erfolgreichen Dekodierens von dem Dekodierer.
  9. Flash-Speicher-System nach Anspruch 8, wobei die weichen Dekodieranforderungen, die die ersten Rohdaten verwenden, jeweilige Sätze von Vertrauenswerten verwenden.
  10. Flash-Speicher-System nach Anspruch 8, das ferner Folgendes aufweist: ein Mittel zum Aktualisieren der Zählung verfügbarer weicher Dekodierer und der unerledigten Anzahl von weichen Dekodieranforderungen nach dem Ausgeben der bestimmten Anzahl von weichen Dekodieranforderungen; ein Mittel zum Aktualisieren der Anzahl von weichen Dekodieranforderungen, die ausgegeben werden sollen; ein Mittel zum Bestimmen der Anzahl von weichen Dekodieranforderungen, die ausgegeben werden sollen, basierend auf der aktualisierten Zählung von verfügbaren weichen Dekodierern und der aktualisierten unerledigten Anzahl von weichen Dekodieranforderungen; und ein Mittel zum Ausgeben der bestimmten Anzahl von weichen Dekodieranforderungen an jeweilige der verfügbaren weichen Dekodierer zum parallelen weichen Dekodieren der ersten Rohdaten.
  11. Flash-Speicher-System nach Anspruch 8, das ferner Folgendes aufweist: ein Mittel zum Empfangen einer weichen Dekodierungs-Fehler-Angabe für jede der ausgegebenen weichen Dekodieranforderungen; ein Mittel zum Ausgeben eines zweiten Lesebefehls unter Verwendung eines zweiten Satzes von Spannungen, wenn die unerledigte Anzahl von weichen Dekodieranforderungen Null ist, wobei der zweite Lesebefehl einen zweiten Satz von Leseoperationen umfasst.
  12. Flash-Speicher-System nach Anspruch 8, das ferner Folgendes aufweist: ein Mittel zum Empfangen einer zweiten harten Fehler-Angabe, dass das Dekoddieren zweite Rohdaten, die in Reaktion auf den zweiten Lesebefehl gelesen werden, gescheitert ist; ein Mittel zum Zurücksetzen der unerledigten Anzahl von weichen Dekodieranforderungen; ein Mittel zum Bestimmen der Zählung verfügbarer weicher Dekodierer der Mehrzahl weicher Dekodierer; ein Mittel zum Bestimmen der Anzahl von weichen Dekodieranforderungen, die ausgegeben werden sollen, basierend auf der Zählung verfügbarer weicher Dekodierer und der unerledigten Anzahl von weichen Dekodieranforderungen; ein Mittel zum Ausgeben der bestimmten Anzahl von weichen Dekodieranforderungen an jeweilige der verfügbaren weichen Dekodierer zum parallelen weichen Dekodieren der zweiten Rohdaten.
  13. Flash-Speicher-System nach Anspruch 8, das ferner Folgendes aufweist: ein Mittel zum Bestimmen, ob die angeforderten Daten erfolgreich bereitgestellt worden sind in Reaktion auf die Erfolgsangabe; ein Mittel zum Bereitstellen der dekodierten Daten, wenn die angeforderten Daten nicht vorher bereitgestellt worden sind.
  14. Flash-Speicher-System nach Anspruch 13, wobei das Bestimmen, ob die angeforderten Daten erfolgreich bereitgestellt worden sind, das Bestimmen umfasst, ob ein Erfolgs-Flag, das angibt, dass die angeforderten Daten bereitgestellt worden sind, gesetzt ist.
  15. Flash-Speicher-System, das Folgendes aufweist: eine Mehrzahl von Flash-Speicher-Vorrichtungen; einen Dekodierer; und eine Steuereinheit, die konfiguriert ist um: eine harte Dekodier-Fehler-Angabe von einem Dekodierer zu empfangen, dass das Dekodieren erster Rohdaten, die von einem nichtflüchtigen Speicher in Reaktion auf einen ersten Lesebefehl unter Verwendung eines ersten Satzes von Spannungen gelesen werden, gescheitert ist, wobei der erste Lesebefehl einen ersten Satz von Leseoperationen umfasst; eine Zählung von verfügbaren weichen Dekodierern einer Mehrzahl von weichen Dekodierern des Dekodierers zu bestimmen; eine Anzahl von weichen Dekodieranforderungen, die ausgegeben werden sollen, basierend auf der Zählung von verfügbaren weichen Dekodierern und einer unerledigten Anzahl von weichen Dekodieranforderungen zu bestimmen; die bestimmte Anzahl von weichen Dekodieranforderungen an jeweilige der verfügbaren weichen Dekodierer zum parallelen weichen Dekodieren der ersten Rohdaten auszugeben; und von einem Dekodierer eine Erfolgsangabe erfolgreichen Dekodierens zu empfangen.
  16. Flash-Speicher-System nach Anspruch 15, wobei die weichen Dekodieranforderungen, die die ersten Rohdaten verwenden, jeweilige Sätze von Vertrauenswerten verwenden.
  17. Flash-Speicher-System nach Anspruch 15, wobei die Steuereinheit ferner konfiguriert ist um: nach dem Ausgeben der bestimmen Anzahl von weichen Dekodieranforderungen die Zählung von verfügbaren weichen Dekodierern und die unerledigte Anzahl von weichen Dekodieranforderungen zu aktualisieren; die Anzahl von weichen Dekodieranforderungen, die ausgegeben werden sollen, zu aktualisieren; basierend auf der aktualisierten Zählung von verfügbaren weichen Dekodierern und der aktualisierten unerledigten Anzahl von weichen Dekodieranforderungen die Anzahl von weichen Dekodieranforderungen, die ausgegeben werden sollen, zu bestimmen; und die bestimmte Anzahl von weichen Dekodieranforderungen an jeweilige der verfügbaren weichen Dekodierer zum parallelen weichen Dekodieren der ersten Rohdaten auszugeben.
  18. Flash-Speicher-System nach Anspruch 15, wobei die Steuereinheit ferner konfiguriert ist um: eine weiche Dekodier-Fehler-Angabe für jede der ausgegebenen weichen Dekodieranforderungen zu empfangen; wenn die unerledigte Anzahl von weichen Dekodieranforderungen Null ist, einen zweiten Lesebefehl unter Verwendung eines zweiten Satzes von Spannungen auszugeben, wobei der zweite Lesebefehl einen zweiten Satz von Leseoperationen umfasst.
  19. Flash-Speicher-System nach Anspruch 18, wobei die Steuereinheit ferner konfiguriert ist um: eine zweite harte Dekodier-Fehler-Angabe zu empfangen, dass das Dekodieren zweiter Rohdaten, die in Reaktion auf den zweiten Lesebefehl gelesen werden, gescheitert ist; die unerledigte Anzahl von weichen Dekodieranforderungen zurückzusetzen; die Zählung von verfügbaren weichen Dekodierern der Mehrzahl von weichen Dekodierern zu bestimmen; basierend auf der Zählung von verfügbaren weichen Dekodierern und der unerledigten Anzahl von weichen Dekodieranforderungen die Anzahl von weichen Dekodieranforerungen, die ausgegeben werden sollen, zu bestimmen; die bestimmte Anzahl von weichen Dekodieranforderungen an jeweilige der verfügbaren weichen Dekodierer zum parallelen weichen Dekodieren der zweiten Rohdaten auszugeben.
  20. Flash-Speicher-System nach Anspruch 15, wobei die Steuereinheit ferner konfiguriert ist um: in Reaktion auf die Erfolgs-Angabe zu bestimmen, ob die angeforderten Daten erfolgreich bereitgestellt worden sind; und die dekodierten Daten bereitzustellen, wenn die angeforderten Daten nicht vorher bereitgestellt worden sind.
  21. Flash-Speicher-System nach Anspruch 20, wobei das Bestimmen, ob die angeforderten Daten erfolgreich bereitgestellt worden sind, das Bestimmen umfasst, ob ein Erfolgs-Flag, das angibt, dass die angeforderten Daten bereitgestellt worden sind, gesetzt ist.
DE102017128994.1A 2017-02-07 2017-12-06 Weiche Dekodierungs-Planung Pending DE102017128994A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/426,951 2017-02-07
US15/426,951 US10180794B2 (en) 2017-02-07 2017-02-07 Soft decoding scheduling

Publications (1)

Publication Number Publication Date
DE102017128994A1 true DE102017128994A1 (de) 2018-08-09

Family

ID=62909751

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017128994.1A Pending DE102017128994A1 (de) 2017-02-07 2017-12-06 Weiche Dekodierungs-Planung

Country Status (3)

Country Link
US (1) US10180794B2 (de)
CN (1) CN108399109B (de)
DE (1) DE102017128994A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019056955A (ja) * 2017-09-19 2019-04-11 東芝メモリ株式会社 メモリシステム
CN109801669B (zh) * 2017-11-17 2023-05-16 爱思开海力士有限公司 具有软读取挂起方案的存储器***及其操作方法
WO2019140074A1 (en) * 2018-01-12 2019-07-18 Micron Technology, Inc Read retry scratch space
WO2020263325A1 (en) * 2019-06-25 2020-12-30 Western Digital Technologies, Inc. Data driven icad graph generation
US11487544B2 (en) * 2020-01-15 2022-11-01 Western Digital Technologies, Inc. Method and device for simultaneously decoding data in parallel to improve quality of service
CN111522687B (zh) * 2020-04-16 2022-10-14 江苏芯盛智能科技有限公司 数据处理方法、装置、固态硬盘及计算机可读存储介质
US11159176B1 (en) * 2020-06-26 2021-10-26 Western Digital Technologies, Inc. Data-assisted LDPC decoding
CN112599169B (zh) * 2020-12-30 2022-09-23 联芸科技(杭州)股份有限公司 存储器的读操作控制方法及装置以及存储器控制器
CN113064751B (zh) * 2021-03-26 2023-04-25 山东英信计算机技术有限公司 一种基于纠删池的编解码方法、装置、设备及存储介质
CN113793635B (zh) * 2021-11-08 2022-04-19 阿里云计算有限公司 存储装置和存储设备
CN113872611B (zh) * 2021-12-02 2022-04-15 阿里云计算有限公司 一种ldpc解码方法、设备、***及存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8549385B2 (en) * 2009-12-15 2013-10-01 Marvell World Trade Ltd. Soft decoding for quantizied channel
US8438434B2 (en) * 2009-12-30 2013-05-07 Nxp B.V. N-way parallel turbo decoder architecture
US8644067B2 (en) 2011-11-30 2014-02-04 Sandisk Technologies Inc. Systems and methods of decoding data using soft bits at a non-binary decoder that uses probabilistic decoding
US8775896B2 (en) 2012-02-09 2014-07-08 Lsi Corporation Non-binary LDPC decoder with low latency scheduling
US8739004B2 (en) 2012-05-10 2014-05-27 Lsi Corporation Symbol flipping LDPC decoding system
US9239754B2 (en) 2012-08-04 2016-01-19 Seagate Technology Llc Single read based soft-decision decoding of non-volatile memory
US9021332B2 (en) * 2012-12-11 2015-04-28 Seagate Technology Llc Flash memory read error recovery with soft-decision decode
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9454414B2 (en) 2013-03-15 2016-09-27 Microsemi Storage Solutions (Us), Inc. System and method for accumulating soft information in LDPC decoding
US10176041B2 (en) 2014-06-16 2019-01-08 Tidal Systems, Inc. Deterministic read retry method for soft LDPC decoding in flash memories
US9407294B2 (en) 2014-07-07 2016-08-02 Kabushi Kaisha Toshiba. Non-volatile memory controller with error correction (ECC) tuning via error statistics collection
US10084481B2 (en) * 2014-12-18 2018-09-25 Apple Inc. GLDPC soft decoding with hard decision inputs

Also Published As

Publication number Publication date
US10180794B2 (en) 2019-01-15
CN108399109B (zh) 2021-02-19
CN108399109A (zh) 2018-08-14
US20180225042A1 (en) 2018-08-09

Similar Documents

Publication Publication Date Title
DE102017128994A1 (de) Weiche Dekodierungs-Planung
DE102019124438B4 (de) Multi-state-programmierung für speichervorrichtungen
DE102017128999A1 (de) Lesebetrieb und weiches Dekodierungs-Timing
DE102019133129A1 (de) Mehrphasenprogrammierung mit symmetrischer gray-codierung
DE102017120840B4 (de) Verfahren und Vorrichtung zur Detektion und Handhabung von Lesestörungen
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE112011102160B4 (de) Wear-levelling bei Zellen/Seiten/Teilseiten/Blöcken eines Speichers
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE102017117066A1 (de) Nichtbinäre codierung für einen nichtflüchtigen speicher
DE112015004863T5 (de) Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen
DE102019125059A1 (de) Abbildung für multi-state-programmierung von speichervorrichtungen
DE102018123926A1 (de) Dynamische mehrstufige Decodierung
DE112019000167T5 (de) Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE102015008923A1 (de) Vielfache ECC-Codewortgrössen in einem SSD
DE102018105434A1 (de) Verfahren und System zum Abtasten von gelöschten Flashspeicherseiten mit Querverweis auf verwandte Anwendungen
DE112020006215T5 (de) Blockfamilien-basierte Fehlervermeidung für Speichervorrichtungen
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE112020005350T5 (de) Aktualisieren von korrigierenden lesespannung-offsetwerten in nichtflüchtigen direktzugriffsspeichern
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE112015003569B4 (de) Verfahren und System zum Verwenden von NAND-Seitenpuffern, um die Übertragungspuffernutzung eines Festkörperlaufwerks zu verbessern
DE102019133147A1 (de) Datenspeichersysteme und verfahren zur optimierten planung von hintergrund-verwaltungsoperationen
DE112018000485T5 (de) Komprimierer/Dekomprimierer für nicht binäre Kontextmischung

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

R081 Change of applicant/patentee

Owner name: WESTERN DIGITAL TECHNOLOGIES, INC. (N.D.GES.D., US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., IRVINE, CALIF., US