DE102017128999A1 - Lesebetrieb und weiches Dekodierungs-Timing - Google Patents

Lesebetrieb und weiches Dekodierungs-Timing Download PDF

Info

Publication number
DE102017128999A1
DE102017128999A1 DE102017128999.2A DE102017128999A DE102017128999A1 DE 102017128999 A1 DE102017128999 A1 DE 102017128999A1 DE 102017128999 A DE102017128999 A DE 102017128999A DE 102017128999 A1 DE102017128999 A1 DE 102017128999A1
Authority
DE
Germany
Prior art keywords
soft
read command
data
read
flash memory
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
DE102017128999.2A
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 DE102017128999A1 publication Critical patent/DE102017128999A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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
    • 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
    • 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
    • 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
    • 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
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output 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/32Timing circuits
    • 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
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (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ätsprüfungmit-niedriger-Dichte-Dekodier-Operationen bereit. Ein Verfahren umfasst das Empfangen einer harten Dekodier-Fehler-Angabe, 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 eienn ersten Satz von Leseoperationen. Das Verfahren umfasst das Ausgeben eines zweiten Lesebefehls für die Daten unter Verwendung eines zweiten Satzes von Spannungen an den nichtflüchtigen Speicher. Der zweite Lesebefehl umfasst einen zweiten Sat von Leseoperationen. Das Verfahren umfasst das Ausgeben zumindest einer weichen Dekodieranforderung unter Verwendung einer weichen Information basierend auf den ersten Rohdaten zum parallelen Verarbeiten mit dem zweiten Lesebefehl. Das Verfahren umfasst das Empfangen einer Erfolgsangabe des erfolgreichen Dekodierens von dem Dekodierer.

Description

  • Technisches Gebiet
  • Die vorliegende Technologie 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 Information gespeichert und gelesen oder gesendet und empfangen wird. Zum Beispiel durchlaufen für einen normalen Lesebetrieb für ein SSD Rohdaten, die von der Flash-Speicher-Vorrichtung gelesen werden, eine Dekodierung, bevor die SSD-Steuereinheit die Daten an einen Host zurückgibt. Wenn das Dekodieren scheitert, aktiviert die Steuereinheit einer Fehler-Korrektur-Subroutine. Die Fehler-Korrektur-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.
  • Zusammenfassung
  • Die vorliegende Technologie reduziert eine Overhead-Zeit während einer Fehler-Korrektur-Subroutine in einem Flash-Speicher-System durch Ausgeben einer Roh-Leseanforderung und Durchführen einer weichen Dekodierung bzw. Soft-Kodierung während der Roh-Leseanforderung.
  • Gemäß Aspekten der vorliegenden Technologie wird ein Verfahren zum Verwalten einer Datendekodierung bereitgestellt. Das Verfahren umfasst ein Empfangen einer harten Dekodier-Fehlerangabe bzw. -indikation, 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. Der erste Lesebefehl umfasst einen ersten Satz von Leseoperationen. Das Verfahren umfasst das Ausgeben eines zweiten Lesebefehls für die Daten unter Verwendung eines zweiten Satzes von Spannungen an den nichtflüchtigen Speicher. Der zweite Lesebefehl umfasst einen zweiten Satz von Leseoperationen. Das Verfahren umfasst ein Ausgeben zumindest einer weichen Dekodierungsanforderung unter Verwendung einer ersten weichen Information an den Dekodierer zum parallelen Verarbeiten mit dem zweiten Lesebefehl basierend auf den ersten Rohdaten. Das Verfahren umfasst ein Empfangen einer Erfolgsangabe eines erfolgreichen Dekodierens von dem Dekodierer.
  • Gemäß anderen Aspekten der vorliegenden Technologie wird ein Flash-Speicher-System bereitgestellt. Das Flash-Speichersystem weist ein Mittel zum Empfangen einer harten Dekodier-Fehlerangabe, dass ein 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, auf. Der erste Lesebefehl umfasst einen ersten Satz von Leseoperationen. Das Flash-Speichersystem umfasst ein Mittel zum Ausgeben eines zweiten Lesebefehls für die Daten unter Verwendung eines zweiten Satzes von Spannungen an den nichtflüchtigen Speicher. Der zweite Lesebefehl umfasst einen zweiten Satz von Leseoperationen. Das Flash-Speichersystem weist ein Mittel zum Ausgeben zumindest einer weichen Dekodierungsanforderung unter Verwendung einer ersten weichen Information basierend auf den ersten Rohdaten an den Dekodierer zum parallelen Verarbeiten mit dem zweiten Lesebefehl. Das Flash-Speicher-System weist ein Mittel zum Empfangen einer Erfolgsangabe einer erfolgreichen Dekodierung 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-Fehlerangabe, dass ein Dekodieren erster Rohdaten, die von einem nichtflüchtigen Speicher in Reaktion zu einem ersten Lesebefehl unter Verwendung eines ersten Satzes von Spannungen gelesen worden sind, gescheitert ist, zu empfangen. Der erste Lesebefehl umfasst einen ersten Satz von Leseoperationen. Die Steuereinheit ist konfiguriert, um einen zweiten Lesebefehl für die Daten unter Verwendung eines zweiten Satzes von Spannungen an den nichtflüchtigen Speicher auszugeben. Der zweite Lesebefehl umfasst einen zweiten Satz von Leseoperationen. Die Steuereinheit ist konfiguriert, um zumindest eine weiche Dekodierungsanforderung unter Verwendung einer ersten weichen Information basierend auf den ersten Rohdaten an den Dekodierer zum parallelen Verarbeiten mit dem zweiten Lesebefehl auszugeben. Die Steuereinheit ist konfiguriert, um von dem Dekodierer eine Erfolgsangabe eines erfolgreichen Dekodierens zu empfangen.
  • Es versteht sich, dass andere Konfigurationen der vorliegenden Technologie für den Fachmann aus der folgenden detaillierten Beschreibung leicht offenbar werden, wobei verschiedene Konfigurationen der vorliegenden Technologie mittels Darstellung gezeigt und beschrieben sind. Wie bemerkt werden wird, ist die vorliegende Technologie fähig zu anderen und unterschiedlichen Konfigurationen und ihre mehreren Details sind fähig zur Modifikation in verschiedenen anderen Hinsichten, sämtlich ohne von dem Umfang der vorliegenden Technologie abzuweichen. Entsprechend sollen die Zeichnungen und die detaillierte Beschreibung als darstellender Natur betrachtet werden und nicht als beschränkend.
  • Figurenliste
  • Eine detaillierte Beschreibung wird mit Bezug 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 Fehlerkorrekturroutine 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 Fehlerkorrekturroutine für ein Flash-Speichersystem gemäß Aspekten der vorliegenden Technologie darstellt.
  • Detaillierte Beschreibung
  • Die detaillierte Beschreibung, die unten dargelegt ist, ist beabsichtigt als eine Beschreibung von verschiedenen Konfigurationen der vorliegenden Technologie und ist nicht beabsichtigt, die einzigen Konfigurationen zu repräsentieren, in denen die vorliegende Technologie betrieben werden kann. Die angehängten Zeichnungen sind hierin enthalten und begründen 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 betrieben werden kann. In einigen Beispielen werden wohlbekannte Strukturen und Komponenten in Blockdiagrammform gezeigt, um zu vermeiden, dass die Konzepte der vorliegenden Technologie verdunkelt werden. Ähnliche Komponenten werden mit identischen Elementzahlen zur Einfachheit des Verständnisses benannt.
  • Im Allgemeinen 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 eine Leseanforderung 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 Rohdaten an den Host zurück. Wenn jedoch das Dekodieren scheitert, aktiviert die Steuereinheit eine Fehlerkorrekturroutine. Die Fehlerkorrekturroutine enthält Phasen 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, wie es später detaillierter unten beschrieben wird.
  • Gemäß Aspekten der vorliegenden Technologie kann eine Zeit, um die Fehlerkorrekturroutine zu beenden, reduziert werden. Ein Lesebefehl für eine gegebene Phase kann einen Satz von Leseoperationen umfassen, wobei jede eine andere Spannung verwendet. Die Flash-Speichervorrichtung kann für jede andere Spannung neu programmiert werden oder die Flash-Speicher-Vorrichtung kann fähig sein, durch verschiedene Spannungen ein Schaltspiel auszuführen. Nachdem der Lesebefehl für die derzeitige Phase der Fehlerkorrekturroutine beendet ist, werden weiche Dekodieranforderungen für die gelesenen Rohdaten ausgegeben. Bevor die weichen Dekodieranforderungen die die derzeitige Phase beendet sind, wird ein Lesebefehl für die nächste Phase derart ausgegeben, dass der Lesebefahl parallel mit dem weichen Dekodieren durchgeführt wird. Daher wird, wenn das weiche Dekodieren für die derzeitige Phase scheitert, eine Zeit des Wartens darauf, dass der Lesebefehl der nächsten Phase beendet wird, reduziert.
  • 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 110 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 eine Kommunikation von Daten, Befehlen und/oder anderen 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 Acceess Memory (RAM) sein kann, stellt vorübergehend Speicherplatz für die Steuereinheit 120 bereit, um Befehle zu verarbeiten und Daten zwischen dem Host 150 und den Flash-Speicher-Vorrichtungen 130 zu übertragen. Der Dekodierer 160, der einen Speicher, Register, Logiksteueranschlüsse, einen oder mehrere Prozessoren aufweisen kann und in der Steuereinheit 120 integriert sein kann oder getrennt davon 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 eine Kommunikation von Daten, Befehlen und/oder Steuersignalen zwischen dem Host 150 und dem Flash-Speicher-System 110 über physikalische und elektrische Verbindungen zu vereinfachen. Die Verbindung und die Kommunikationen mit der Schnittstelle 115 kann/können auf einer Standard-Schnittstelle wie z.B. einem Universal Serial Bus (USB), Small Comuter System Interface (SCSI), Serial Advanced Technology Attachment (SATA) usw. basieren. Alternativ kann/können die Verbindung und/oder Kommunikationen auf einer eigenen Schnittstelle basieren, obwohl die vorliegende Technologie nicht auf einen besonderen Typ Schnittstelle beschränkt ist.
  • Der Host 150 kann eine Berechnungsvorrichtung wie z.B. ein Computer /Server, ein Smartphone oder irgend eine andere elektrische Vorrichtung sein, die Daten von dem Flash-Speicher-System 110 liest und darauf schreibt. Das Flash-Speicher-System 110 kann in den Host 150 integriert sein oder extern gegenüber 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 beschränkt auf eine besondere Anzahl von Flash-Speicher-Vorrichtungen 130. Die Flash-Speicher-Vorrichtungen 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 auf die Flash-Speicher-Vorrichtungen 130 durch die Steuereinheit 120 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 betreffenden 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 unterschiedliche Zahlen 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 von der 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 eines Versatzes von einer physikalischen Blockadresse des Speicherblocks, der die referenzierte Seite enthält, adressierbar sind. 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 einer Flash-Speicher-Vorrichtung zu beziehen.
  • Die vorliegende Technologie ist nicht auf irgendeine besondere Kapazität des 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, 4KB 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 gekoppelt ist und von dieser während eines Betriebs des Flash-Speicher-Systems 110 verwendet wird. Die Steuereinheit 120 kann Befehle und/oder Daten in dem Speicher 125 puffern. Die Steuereinheit 125 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 Flash-Speicher-Vorrichtungen 130 zu verwalten, können auch in dem Speicher 125 durch die Steuereinheit 120 gespeichert werden. Zum Beispiel können LLR-Tabellen in dem Speicher 125 gespeichert werden. Der Speicher 125 kann unter Verwendung von Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM) oder anderen Typen von flüchtigem Random Access Memory implementiert werden, ohne den Umfang der vorliegenden Technologie zu verlassen. Die Steuereinheit 120 kann periodisch die Inhalte des Speichers 125 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 ist konfiguriert, um Befehle und Daten von dem Host 150 über die Schnittstelle 115 zu empfangen. Zum Beispiel kann die Steuereinheit 120 Daten und einen Schreibbefehl von dem Host 150 empfangen, um 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 in Reaktion zu einem Lesebefehl von den Flash-Speicher-Vorrichtungen 130 lesen und die Daten an den Host 150 schicken. Die Steuereinheit 120 ist ferner konfiguriert, um Daten zu verwalten, die in den Flash-Speicher-Vorrichtungen 130 und dem Speicher 125 gespeichert sind, basierend auf internen Steueralgorithmen oder anderen Typen von Befehlen, 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 Verschleißverlauf durchzuführen. Der Fachmann wird 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 anwendungsspezifischen integrierten Schaltkreis (ASIC), einem Field Programmable Gate Array (FPGA) oder einer anderen programmierbaren logischen Vorrichtung, einem disktreten Gate oder einer Transistorlogikvorrichtung, diskreten Hardware-Komponenten oder irgendeiner Kombination davon, die ausgebildet und konfiguriert sind, um die Operationen und Funktionen, die hierin beschrieben sind, durchzuführen, implementiert sein. Die Steuereinheit 120 kann die Operationen und Funktionen, die hierin beschrieben sind, durch Ausführen einer oder mehrere Sequenzen von Instruktionen, die auf einer Maschine/einem Computer-lesbaren Medium gespeichert sind, durchführen. Die Maschine/das Computer-lesbare Medium können 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/Software kodiert ist, die eine oder mehrere Sequenzen von Instruktionen aufweist, die von de Steuereinheit 120 während des Betriebs des Flash-Speicher-Systems 110 gelesen und ausgeführt wird.
  • Der Dekodierer 160 kann mit einem Allzweckprozessor, einem Mikrocontroller, einem digitalen Signalprozessor (DSP), einem System-on-a-Chip (SoC), einem anwendungsspezifischen integrierten Schaltkreis (ASIC), einem Field Programmable Gate Array (FPGA) oder einer anderen programmierbaren logischen Vorrichtung, einem disktreten Gate oder einer Transistorlogikvorrichtung, diskreten Hardware-Komponenten oder irgendeiner Kombination davon, die ausgebildet und konfiguriert sind, um die Operationen und Funktionen, die hierin beschrieben sind, durchzuführen, implementiert sein. Der Dekodierer 160 kann in die Steuereinheit 120 integriert sein oder kann separat sein. Der Dekodierer 160 kann konfiguriert sein, um LDPC zu verwenden. Der Dekodierer 160 kann konfiguriert sein, um 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, zum Beispiel, um eine Verlässlichkeit oder Vertrauensmaße bereitzustellen, dass die Lesewerte korrekt sind. Die LLR-Tabelle erlaubt, dass die Vertrauenswerte basierend auf Leseergebnissen nachgeschaut 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 dymanisch von einem Pool von verfügbaren Dekodierern reserviert werden.
  • 2 zeigt ein Diagramm 200 einer Leseoperation und Fehlerkorrekturroutine. Die Leseoperation 201 ist gefolgt von einer ersten Fehlerkorrekturphase 202, die von einer zweiten Fehlerkorrekturphase 203 gefolgt ist, 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 zu der geeigneten Flash-Speicher-Vorrichtung 130, die die angeforderten Daten speichert. Die Flash-Speicher-Vorrichtung 130 stellt Rohdaten bereit, zum Beispiel in einem Puffer, die der Dekoder 160 für eine harte Dekodier-Operation 212 dekodiert. Insbesondere kann der harte Dekodierer 162 die Daten für die harte Dekodier-Operation 212 dekodieren. Der Dekodierer 160 gibt eine Angabe 213 an die Steuereinheit 120 zurück, nachdem die harte Dekodier-Operation 212 beendet ist. Wenn die Angabe 213 ein erfolgreiches Dekodieren 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, der ein anderer Satz von Spannungen ist als zum Beispiel ein vorgegebener Satz von Spannungen, der für den Lesebefehl 211 verwendet wird, zu lesen. Der erste Phasensatz von Spannungen kann einige oder sämtliche 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 aus 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, um bei einer betreffenden 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 Dekodieroperation 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 eine 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, setzt die Steuereinheit 120 die 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 ein weiches 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 202 erhalten 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, dass von einer Flash-Speicher-Zelle gelesen wird, wahrscheinlich ein 0-bit sein kann und ein negativer LLR kann allgemein angeben, dass das Signal, das 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 5 wahrscheinlicher eine 0 sein als ein Bit mit einem zugewiesenen LLR gleich 1. Ein Bit mit einem zugewiesenen LLR gleich 0 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 von 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 Bitwerten 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, setzt die Steuereinheit 120 die 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 Dekodieranfoderung 226 kann ferner einen zweiten Satz von Vertrauenswerten aufweisen, wie z.B. eine zweite LLR-Tabelle für die erste Fehlerkorrekturphase 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 von Vertrauenswerten basieren.
  • Der Dekodierer 160 gibt eine Angabe 227 an die Steuereinheit 120 zurück, nachdem das weiche Dekodieren beendet ist. Wenn die Angabe 227 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, setzt die Steuereinheit 120 die Fehlerkorrekturroutine fort.
  • Die Steuereinheit 120 gibt eine weiche Dekodieranforderung 228 an den Dekodierer 160 aus. Die weiche Dekodieranforderung 228 kann eine weiche LDPC-Anforderung sein, die mit den ersten Rohdaten gesendet wird. Die weiche Dekodieranforderung kann ferner einen dritten Satz von Vertrauenswerten wie z.B. eine dritte LLR-Tabelle für die erste Fehlerkorrekturphase 202 aufweisen.
  • 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 dem Anforderer wie z.B. dem Host 150 bereit. Andernfalls, wenn die Angabe 229 ein Scheitern angibt, setzt die Steuereinheit 120 die Fehlerkorrekturroutine fort.
  • Die Fehlerkorrekturroutine kann eine oder mehrere Phasen bzw. Stufen umfassen. Zum Beispiel sind hierin zwei Phasen beschrieben, obwohl die Fehlerkorrekturroutine mehr Phasen umfassen kann, zum Beispiel acht Phasen oder zehn Phasen. Jede Phase beginnt mit einem Lesebefehl unter Verwendung eines Satzes von Spannungen, die der Phase entsprechen. Zum Beispiel kann ein Satz von Spannungen einen oder mehrere Untersätze der anderen Sätze 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ählung 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 Leseoperation durchführt.
  • Jede Phase umfasst weiche Dekodieranforderungen. Die weichen Dekodieranforderungen für eine gegebene Phase können sowohl Rohdaten, die von der derzeitigen Phase gelesen werden, als auch Rohdaten, die von vorherigen Phasen gelesen worden sind, aufweisen. Zum Beispiel können die 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 sowohl Rohdaten, die für die derzeitige Phase als auch frühere Phasen gelesen werden, halten. Durch Verwenden von mehreren Rohdatenpuffern erhöht sich die Granularität der assoziierten Spannungsbereiche. Das Verwenden der Rohdatenpuffer von vorhergehenden Phasen kann den Bedarf, Daten erneut unter Verwendung einer vorhergehend verwendeten Spannung zu lesen, vorbeugen. Zum Beispiel, wenn eine vorhergehende Phase Daten unter Verwendung von 1,0V lesen würde und die derzeitige Phase Daten benötigt, die bei 1,0V und 1,1V gelesen werden, dann können die Daten, die vorher bei 1,0V gelesen worden sind,verwendet werden, anstatt dass die Daten unter Verwendung von 1,0V erneut gelesen werden. Die erhöhte Granularität von Spannungsbereichen kann entsprechend der erhöhten Anzahl von Spannungen, die zum Lesen von Daten verwendet werden, 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 Zahl von LLR-Tabellen, die für jede Phase verfügbar sind, entsprechen können. Jede weiche Dekodierungsanforderung 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 213 weist die Flash-Speicher-Vorrichtung 130 an, unter Verwendung eines zweiten Phasensatzes von Spannungen bzw. eines Satzes von Spannungen einer zweiten Phase, der ein anderer Satz von Spannungen als der vorgegebene Satz von Spannungen und anders als der erste Satz von Spannungen ist, zu lesen. Der zweite Phasensatz von Spannungen kann gespeichert werden, zum Beispiel in dem Speicher 125 oder dem Register und entspricht der zweiten Fehlerkorrekturphase 203. Die Flash-Speicher-Vorrichtung 130 gibt zweite Rohdaten zurück, die unter Verwendung des zweiten Satzes von Spannungen gelesen worden sind, die der Dekodierer 160 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 denen die zweiten Rohdaten dekodiert werden, gibt der Dekoder 160 die Angabe 233 an die Steuereinheit 120 zurück. Wenn die Angabe 233 ein erfolgreiches Dekodieren angibt, stellt die Steuereinheit 120 die dekodierten Daten bereit. Andernfalls, wenn die Angabe 233 ein Scheitern angibt, setzt die Steuereinheit 120 die Fehlerkorrekturroutine fort.
  • Die Steuereinheit 120 leitet eine weiche Dekodierung der zweiten Rohdaten ein. Die Steuereinheit 120 sendet eine weiche Dekodierungsanforderung 234 an den Dekodierer 160. Die weiche Dekodierungsanforderung 234 kann eine weiche LDPC-Anforderung sein, die mit den ersten Rohdaten und den zweiten Rohdaten gesendet wird. Die weiche Dekodieranfrage 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 jede 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 die dekodierten Daten an den Anforderer wie z.B. den Host 150 bereit. Andernfalls, wenn die Angabe 235 ein Scheitern angibt, setzt die Steuereinheit 120 die Fehlerkorrekturroutine fort.
  • Die Steuereinheit 120 gibt eine weiche Dekodieranforderung 26 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 26 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, setzt die Steuereinheit 120 die Fehlerkorrekturroutine fort.
  • Die Steuereinheit 120 gibt eine weiche Dekodieranforderung 238 an den Dekodierer 160 aus. Die weiche Dekodieranforderung 238 kann eine weiche LDPC-Anfoderung sein, die mit den ersten Rohdaten und den zweiten Rohdaten gesendet wird. Die weiche Dekodieranforderung 238 kann ferner einen dritten Satz von Vertrauenswerten wie z.B. eine dritte LLR-Tabelle für die zweite Fehlerkorrekturphase 203 aufweisen.
  • Der Dekodierer 160 gibt eine Angabe 239 an die Steuereinheit 120 aus, nachdem das weiche Dekodieren 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, setzt die Steuereinheit 120 die Fehlerkorrekturroutine fort.
  • Die Steuereinheit 120 kann mit zusätzlichen Fehlerkorrekturphasen fortfahren, bis das Dekodieren erfolgreich ist oder sämtlich Fehlerkorrekturphasen durchgeführt worden sind. Wenn sämtliche Fehlerphasen 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 Beenden (und hartem Dekodierungs-Fehler) des Lesebefehls 321 gibt die Steuereinheit eine weiche Dekodieranforderung 324 aus. Wenn die weiche Dekodierung scheitert, gibt die Steuereinheit eine weiche Dekodieranforderung 326 aus. Wenn die weiche Dekodierung scheitert, gibt die Steuereinheit eine weiche Dekodieranforderung 328 aus. Wenn die weiche Dekodierung scheitert, startet die Steuereinheit die zweite Fehlerkorrekturphase und gibt einen Lesebefehl 331 aus. Nach Beenden (und hartem Dekodierungs-Fehler) des Lesebefehls 331 gibt die Steuereinheit eine weiche Dekodieranforderung 334 aus. Wenn die weiche Dekodierung scheitert, gibt die Steuereinheit eine weiche Dekodieranforderung 228 aus. Wie in 3A zu sehn, wird jede Anforderung sequentiell ausgegeben, nach dem Scheitern der vorhergehenden Anforderung.
  • Obwohl 3A nicht maßstabsgerecht gezeichnet ist, entsprechen die Längen jeder Linie allgemein einer Zeitlänge. Mit anderen Worten brauchen Leseoperationen von der Flash-Speicher-Vorrichtung allgemein mehr Zeit als weiche Dekodieroperationen. Zum Beispiel kann eine Leseoperation von der Flash-Speicher-Vorrichtung mehr Zeit brauchen, 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 wird (und ein Scheitern angibt), gibt die Steuereinheit 120 den Lesebefehl 331 aus. Nachdem die Steuereinheit 120 den Lesebefehl 321 ausgibt und während der Lesebefehl 321 verarbeitet wird, gibt die Steuereinheit 120 die weiche Dekodieranforderung 324 aus. In bestimmten Implementierungen kann die Steuereinheit 120 anstelle dessen die weiche Dekodieranforderung 324 ausgeben, nachdem der Lesebefehl 321 beendet ist und den Lesebefehl 321 danach ausgeben. In anderen Worten werden der Lesebefehl 321 und die weiche Dekodieranforderung 324 parallel verarbeitet ohne Rücksicht auf die Reihenfolge der Ausgabe. Bei Scheitern der weichen Dekodieranforderung 324 gibt die Steuereinheit 120 die weiche Dekodieranforderung 326 aus. Bei Scheitern der weichen Dekodieranfordeurung 326 gibt die Steuereinheit 120 die weiche Dekodieranforderung 328 aus. Die weichen Dekodieranforderungen der derzeitigen Phase werden ausgegeben und können beendet werden, bevor der Lesebefehl der nächsten Phase beendet wird. In anderen Worten kann die Leseoperation für die nächste Fehlerkorrekturphase parallel und gleichzeitig mit den weichen Dekodieroperationen der derzeitigen Fehlerkorrekturphase verarbeitet werden. Daher wird das Warten zwischen Beenden der weichen Dekodierungen der derzeitigen Phase und des Lesens der Rohdaten für die nächste Phase reduziert. Wenn der Lesebefehl 331 ein Scheitern zurückgibt, kann die Steuereinheit 120 die nächste Leseanforderung ausgeben, wobei ein Lesebefehl 341 einen anderen Satz von Spannungen verwendet als in den vorhergehenden Lesebefehlen verwendet worden ist.
  • Die Fehlerkorrekturroutine von 3B wird weiter unten in Bezug auf 4 diskutiert. 4 zeigt ein Flussdiagramm 400 einer Fehlerkorrekturroutine. Der Host 150 fordert Daten von einer der Flash-Speicher-Vorrichtungen 130 an. Alternativ kann die Steuereinheit 120 Daten für eine Aufrechterhaltungsoperation wie z.B. automatische Speicherbereinigung anfordern. Die Steuereinheit 120 gibt einen ursprünglichen Lesebefehl an die Flash-Speicher-Vorrichtung 139 aus, die basierend auf einer Adresse ausgewählt werden kann, die mit den angeforderten Daten assoziiert ist. Der Prozess von 4 beginnt mit der ersten Fehlerkorrekturphase, nachdem der ursprüngliche Lesebefehl ein Scheitern zurückgibt, zum Beispiel gibt der Dekodierer 160 ein Scheitern des harten Dekodierens an.
  • Die Steuereinheit 120 gibt einen ersten Lesebefehl unter Verwendung eines ersten Satzes von Spannungen an die Flash-Speicher-Vorrichtung 130 aus. Der erste Satz von Spannungen entspricht der ersten Fehlerkorrekturphase und unterscheidet 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 Dekodieren der ersten Rohdaten gescheitert ist. Bei 420 gibt die Steuereinheit 120 einen zweiten Lesebefehl für die Daten unter Verwendung eines zweiten Satzes von Spannungen an die Flash-Speicher-Vorrichtung 130 in Reaktion auf die harte Dekodierungs-Fehler-Angabe. Die Steuereinheit 120 kann sofort, nachdem das Lesen für die erste Fehlerkorrekturphase scheitert, das Lesen für die zweite Fehlerkorrekturphase ausgeben, bevor weiche Dekodierungen für die erste Fehlerkorrekturphase ausgegeben werden. Die erlaubt, dass das Lesen für die zweite Fehlerkorrekturphase verarbeitet wird, während die weichen Dekodierungen für die erste Fehlerkorrekturphase verarbeitet werden, weil die Zeit, um ein Lesen von dem Flash-Speicher zu beenden, größer ist als die Zeit, um eine oder mehrere weiche Dekodierungen zu beenden.
  • Bei 430 gibt die Steuereinheit 120 zumindest eine weiche Dekodieranforderung unter Verwendung der ersten Rohdaten an den Dekodierer 160 aus, bevor der zweite Lesebefehl beendet ist. Der weiche Dekodierer 164 kann die zumindest eine weiche Dekodieranforderung empfangen und verarbeiten. Während der zweiten Leseoperation kann die Steuereinheit 120 schließlich mehr als eine weiche Dekodieranforderung ausgeben, zum Beispiel sämtliche Dekodieranforderungen für die derzeitige Fehlerkorrekturphase. Wie oben beschrieben, können die weichen Dekodieranforderungen jede einen Satz von Vertrauenswerten aufweisen wie z.B. eine LLR-Tabelle.
  • Bei 440 empfängt die Steuereinheit 120 von dem Dekodierer 160 eine Erfolgsangebe eines erfolgreichen Dekodierens. Die Erfolgsangabe kann von einer erfolgreichen weichen Dekodierung kommen, zum Beispiel in Reaktion auf die zumindest eine Dekodieranforderung, die bei 340 ausgegeben wird, oder kann von einer erfolgreichen harten Dekodierung kommen, zum Beispiel in Reaktion auf eine harte Dekodierung, die mit dem zweiten Lesebefehl assoziiert ist, der bei 440 ausgegeben wird. Sobald die angeforderten Daten erfolgreich dekodiert sind, wird die Steuereinheit 120 die dekodierten Daten dem Anforderer verfügbar machen, zum Beispiel dem Host 150 oder die Steuereinheit 120 ohne Rücksicht darauf, welche Anforderung der Fehlerkorrekturroutine in dem Erfolg resultiert hat.
  • Jedoch können in bestimmten Situationen die Daten mehr als einmal erfolgreich dekodiert werden. Zum Beispiel kann eine der weichen Dekodierungen der derzeitigen Fehlerkorrekturphase erfolgreich etwas zurückgeben. Weil die Leseoperation für die nächste Fehlerkorrekturphase parallel verarbeitet wird, kann die Leseoperation für die nächste Fehlerkorrekturphase auch einen Erfolg bei der Beendigung zurückgeben, was in zwei erfolgreich dekodierten Sätzen von Daten resultiert, die dieselben resultierenden Daten sein können.
  • Die Steuereinheit 120 bestimmt in Reaktion auf die erfolgreiche Angabe, 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 sein 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 anzuzeigen, dass die Daten vorher bereitgestellt worden sind. Die Steuereinheit 120 stellt die dekodierten Daten 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 eingestellt 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 Einstellen des entsprechenden Erfolgs-Flags. Wenn die Steuereinheit 120 eine andere Erfolgsangabe erfolgreichen Dekodierens empfängt, wird die Steuereinheit 120 sehen, dass das Erfolgs-Flag eingestellt worden ist und wird die dekodierten Daten verwerfen.
  • Die Fehlerkorrekturroutine, die hierin beschrieben ist, kann in einer zusätzlichen Leseoperation resultieren, zum Beispiel, wenn eine der weichen Dekodierungen für eine derzeitige Fehlerkorrekturphase einen Erfolg während einer Leseoperation für die nächste Fehlerkorrekturphase zurückgibt. Jedoch kann der Nutzen des reduzierten Overheads den Nachteil einer zusätzlichen Leseoperation aufwiegen, insbesondere in der Nähe eines Endes einer Lebensdauer für das Flash-Speicher-System 110, in dem eine hohe Bit-Fehler-Rate das Aktivieren der Fehlerkorrekturroutine erforderlich macht.
  • Der Fachmann würde verstehen, dass die verschiedenen darstellenden Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen, die hierin beschrieben sind, als elektronische Hardware, Computersoftware oder Kombination von beidem implementiert sein können. Um diese Austauschbarkeit von Hardware und Software zu veranschaulichen, 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 wird, hängt von der besonderen Anwendung und den besonderen Designeinschränkungen 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 verschieden angeordnet werden (zum Beispiel in einer anderen 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 dem offenbarten Prozess eine Veranschaulichung von beispielhaften Ansätzen ist. Basierend auf Aufbau-Präferenzen versteht sich, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den Prozessen neu angeordnet werden kann. Einige der Schritte können gleichzeitig durchgeführt werden. Die begleitenden Verfahrensansprüche präsentieren Elemente von verschiedenen Schritten in einer Beispielreihenfolge und sind nicht gemeint, auf die spezifische Reihenfolge oder Hierarchie, die präsentiert wird, 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: Empfangen einer harten Dekodier-Fehlerangabe, dass ein 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; Ausgeben eines zweiten Lesebefehls für die Daten unter Verwendung eines zweiten Satzes von Spannungen an den nichtflüchtigen Speicher, wobei der zweite Lesebefehl einen zweiten Satz von Leseoperationen umfasst; Ausgeben zumindest einer weichen Dekodierungsanforderung unter Verwendung einer ersten weichen Information basierend auf den ersten Rohdaten an den Dekodierer zum parallelen Verarbeiten mit dem zweiten Lesebefehl; und Empfangen einer Erfolgsangabe eines erfolgreichen Dekodierens von dem Dekodierer.
  2. Verfahren nach Anspruch 1, wobei eine erste weiche Information ferner auf einem ersten Satz von Vertrauenswerten basiert.
  3. Verfahren nach Anspruch 1, das ferner Folgendes umfasst: Empfangen einer oder mehrere weicher Dekodierfehlerangaben in Reaktion auf die zumindest eine weiche Dekodieranforderung unter Verwendung der ersten weichen Information; Empfangen einer zweiten harten Dekodierfehlerangabe, dass ein Dekodieren der zweiten Rohdaten in Reaktion auf den zweiten Lesebefehl gescheitert ist; Ausgeben eines dritten Lesebefehls für die Daten unter Verwendung eines dritten Satzes von Spannungen an den nichtflüchtigen Speicher, wobei der dritte Lesebefehl eine oder mehrere dritte Leseoperationen umfasst; und Ausgeben zumindest einer weichen Dekodieranforderung unter Verwendung der zweiten weichen Information basierend auf den ersten Rohdaten und den zweiten Rohdaten an den Dekodierer zum parallelen Verarbeiten mit dem dritten Lesebefehl.
  4. Verfahren nach Anspruch 3, wobei die erste weiche Information ferner auf einem ersten Satz von Vertrauenswerten basiert und die zweite weiche Information ferner auf einem zweiten Satz von Vertrauenswerten basiert.
  5. Verfahren nach Anspruch 1, wobei ein Ausgeben der zumindest einen Dekodieranforderung unter Verwendung der ersten weichen Information ferner Folgendes umfasst: Ausgeben einer ersten weichen Dekodieranforderung unter Verwendung der ersten weichen Information basierend auf einem ersten Satz von Vertrauenswerten an den Dekodierer; Empfangen einer ersten weichen Dekodier-Fehler-Angabe in Reaktion auf die erste weiche Dekodieranforderung; und Ausgeben einer zweiten weichen Dekodieranforderung unter Verwendung einer zweiten weichen Information basierend auf den ersten Rohdaten und einem zweiten Satz von Vertrauenswerten in Reaktion auf die erste weiche Dekodierfehlerangabe.
  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 ein Bestimmen, ob die angeforderten Daten erfolgreich bereitgestellt worden sind, ein Bestimmen umfasst, ob ein Erfolgs-Flag, das angibt, dass die angeforderten Daten bereitgestellt worden sind, eingestellt bzw. gesetzt ist.
  8. Flash-Speicher-System, das Folgendes aufweist: ein Mittel zum Empfangen einer harten Dekodier-Fehlerangabe, dass das Dekodieren von ersten 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 Ausgeben eines zweiten Lesebefehls für die Daten unter Verwendung eines zweiten Satzes von Spannungen an den nichtflüchtigen Speicher, wobei der zweite Lesebefehl einen zweiten Satz von Leseoperationen umfasst; ein Mittel zum Ausgeben zumindest einer weichen Dekodieranforderung unter Verwendung einer ersten weichen Information basierend auf den ersten Rohdaten an den Dekodierer zum parallelen Verarbeiten mit dem zweiten Lesebefehl; und ein Mittel zum Empfangen einer Erfolgsangabe eines erfolgreichen Dekodierens von dem Dekodierer.
  9. Flash-Speicher-System nach Anspruch 8, wobei die erste weiche Information ferner auf einem ersten Satz von Vertrauenswerten basiert.
  10. Flash-Speicher-System nach Anspruch 8, das ferner Folgendes aufweist: ein Mittel zum Empfangen einer oder mehrerer weicher Dekodier-Fehler-Angaben in Reaktion auf die zumindest eine weiche Dekodieranforderung unter Verwendung der ersten weichen Information; ein Mittel zum Empfangen einer zweiten harten Dekodier-Fehlerangabe, dass ein Dekodieren zweiter Rohdaten in Reaktion auf den zweiten Lesebefehl gescheitert ist; ein Mittel zum Ausgeben eines dritten Lesebefehls für die Daten unter Verwendung eines dritten Satzes von Spannungen an den nichtflüchtigen Speicher, wobei der dritte Lesebefehl einen dritten Satz von Leseoperationen umfasst; und ein Mittel zum Ausgeben zumindest einer weichen Dekodieranforderung unter Verwendung einer zweiten weichen Information basierend auf den ersten Rohdaten und den zweiten Rohdaten an den Dekodierer zum parallelen Verarbeiten mit dem dritten Lesebefehl.
  11. Flash-Speicher-System nach Anspruch 10, wobei die zumindest eine weiche Dekodieranforderung unter Verwendung der ersten weichen Information ferner auf einem ersten Satz von Vertrauenswerten basiert und die zweite weiche Information ferner auf einem zweiten Satz von Vertrauenswerten basiert.
  12. Flash-Speicher-System nach Anspruch 8, wobei ein Ausgeben der zumindest einen weichen Dekodieranforderung unter Verwendung der ersten weichen Information ferner Folgendes umfasst: Ausgeben einer ersten weichen Dekodieranforderung unter Verwendung der ersten weichen Information basierend auf einem ersten Satz von Vertrauenswerten an den Dekodierer; Empfangen eine ersten weichen Dekodierfehlerangabe in Reaktion auf die erste weiche Dekodieranforerung; und Ausgeben einer zweiten weichen Dekodieranforderung unter Verwendung einer zweiten weichen Information basierend auf den ersten Rohdaten und einem zweiten Satt von Vertrauenswerten in Reaktion auf die erste weiche Dekodierfehlerangabe.
  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 erste Erfolgsangabe; und 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, eingestellt 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-Fehlerangabe 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 worden sind, gescheitert ist, wobei der erste Lesebefehl einen ersten Satz von Leseoperationen umfasst; einen zweiten Lesebefehl für die Daten unter Verwendung eines zweiten Satzes von Spannungen an den nichtflüchtigen Speicher auszugeben, wobei der zweite Lesebefehl einen zweiten Satz von Leseoperationen umfasst; zumindest eine weiche Dekodieranforderung unter Verwendung einer ersten weichen Information basierend auf den ersten Rohdaten an den Dekodierer zum parallelen Verarbeiten mit dem zweiten Lesebefehl auszugeben; und von dem Dekodierer eine Erfolgsangabe erfolgreichen Dekodierens zu empfangen.
  16. Flash-Speicher-System nach Anspruch 15, wobei die erste weiche Information ferner auf einem ersten Satz von Vertrauenswerten basiert.
  17. Flash-Speicher-System nach Anspruch 15, wobei die Steuereinheit ferner konfiguriert ist um: eine oder mehrere weiche Dekodier-Fehler-Angaben in Reaktion auf die zumindest eine weiche Dekodieranforderung unter Verwendung der ersten weichen Information zu empfangen; eine zweite harte Dekodier-Fehler-Angabe zu empfangen, dass das Dekodieren der zweiten Rohdaten in Reaktion auf den zweiten Lesebefehl gescheitert ist; einen dritten Lesebefehl für die Daten unter Verwendung eines dritten Satzes von Spannungen an den nichtflüchtigen Speicher auszugeben, wobei der dritte Lesebefehl einen dritten Satz von Leseoperationen umfasst; und zumindest eine weiche Dekodieranforderung unter Verwendung einer zweiten weichen Information basierend auf den ersten Rohdaten und den zweiten Rohdaten an den Dekodierer zum parallelen Verarbeiten mit dem zweiten Lesebefehl auszugeben.
  18. Flash-Speicher-System nach Anspruch 17, wobei die erste weiche Information ferner auf einem ersten Satz von Vertrauenswerten basiert und die zweite weiche Information ferner auf einem zweiten Satz von Vertrauenswerten basiert.
  19. Flash-Speicher-System nach Anspruch 15, wobei die Steuereinheit ferner konfiguriert ist um: eine erste weiche Dekodieranforderung unter Verwendung der ersten weichen Information basierend auf einem ersten Satz von Vertrauenswerten an den Dekodierer auszugeben; eine erste weiche Dekodier-Fehler-Angabe in Reaktion zu der ersten weichen Dekodieranforderung zu empfangen; und eine zweite weiche Dekodieranforderung unter Verwendung einer zweiten weichen Information basierend auf den ersten Rohdaten und einem zweiten Satz von Vertrauenswerten in Reaktion auf die erste weiche Dekodier-Fehler-Angabe auszugeben.
  20. Flash-Speicher-System nach Anspruch 15, wobei die Steuereinheit ferner konfiguriert ist um: in Reaktion auf die erste Erfolgsangabe 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, eingestellt bzw. gesetzt ist.
DE102017128999.2A 2017-02-07 2017-12-06 Lesebetrieb und weiches Dekodierungs-Timing Pending DE102017128999A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/426,949 2017-02-07
US15/426,949 US10222996B2 (en) 2017-02-07 2017-02-07 Read operation and soft decoding timing

Publications (1)

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

Family

ID=62909833

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017128999.2A Pending DE102017128999A1 (de) 2017-02-07 2017-12-06 Lesebetrieb und weiches Dekodierungs-Timing

Country Status (3)

Country Link
US (1) US10222996B2 (de)
CN (1) CN108399108B (de)
DE (1) DE102017128999A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102257050B1 (ko) * 2017-05-26 2021-05-27 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US10521290B2 (en) * 2018-06-05 2019-12-31 Memterex Srl Solid state drive with improved LLR tables
TWI664634B (zh) * 2018-08-17 2019-07-01 慧榮科技股份有限公司 快閃記憶體控制器、管理快閃記憶體模組的方法及相關的電子裝置
US11057058B2 (en) * 2019-09-11 2021-07-06 SK Hynix Inc. Quality of service of an adaptive soft decoder
US11159176B1 (en) * 2020-06-26 2021-10-26 Western Digital Technologies, Inc. Data-assisted LDPC decoding
WO2022204928A1 (en) 2021-03-30 2022-10-06 Yangtze Memory Technologies Co., Ltd. Memory controller with read error handling
CN113393883A (zh) * 2021-06-22 2021-09-14 武汉理工大学 一种nand闪存的数据读取方法、装置及nand闪存***
CN113793635B (zh) * 2021-11-08 2022-04-19 阿里云计算有限公司 存储装置和存储设备

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7656707B2 (en) 2007-12-14 2010-02-02 Intel Corporation Systems and methods for discrete channel decoding of LDPC codes for flash memory
US8935595B2 (en) 2010-03-12 2015-01-13 Lsi Corporation LDPC erasure decoding for flash memories
US20120240007A1 (en) * 2010-10-20 2012-09-20 Stec, Inc. Ldpc decoding for solid state storage devices
KR101792868B1 (ko) * 2010-11-25 2017-11-02 삼성전자주식회사 플래시 메모리 장치 및 그것의 읽기 방법
JP2012181761A (ja) * 2011-03-02 2012-09-20 Toshiba Corp 半導体メモリ装置および復号方法
CN102354527A (zh) * 2011-06-02 2012-02-15 钟浩 一种降低固态存储***响应时间的方法
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
US9117529B2 (en) 2011-12-23 2015-08-25 Hgst Technologies Santa Ana, Inc. Inter-cell interference algorithms for soft decoding of LDPC codes
US9177664B2 (en) * 2012-02-22 2015-11-03 Silicon Motion, Inc. Method, memory controller and system for reading data stored in flash memory
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
KR102123946B1 (ko) * 2012-12-28 2020-06-17 삼성전자주식회사 멀티 레벨 셀 메모리 장치 및 그것의 동작방법
US9454414B2 (en) 2013-03-15 2016-09-27 Microsemi Storage Solutions (Us), Inc. System and method for accumulating soft information in LDPC decoding
TWI619353B (zh) 2013-07-03 2018-03-21 Lsi公司 在低密度奇偶性校驗(ldpc)解碼器中之對數相似比(llr)抑制
KR102065664B1 (ko) * 2013-08-09 2020-01-13 삼성전자 주식회사 메모리 장치의 열화 상태 추정 방법 및 이를 이용한 메모리 시스템에서의 웨어 레벨링 방법
US9007854B1 (en) * 2013-12-09 2015-04-14 Western Digital Technologies, Inc. Method and system for optimized soft decoding in a data storage device
US9306600B2 (en) 2014-01-06 2016-04-05 Micron Technology, Inc. Read threshold calibration for LDPC
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
CN105468471A (zh) * 2014-09-12 2016-04-06 光宝科技股份有限公司 固态存储装置及其错误更正方法
US10204006B2 (en) * 2015-10-28 2019-02-12 Avago Technologies International Sales Pte. Limited Systems and methods for side data based soft data flash memory access

Also Published As

Publication number Publication date
US10222996B2 (en) 2019-03-05
CN108399108A (zh) 2018-08-14
US20180225041A1 (en) 2018-08-09
CN108399108B (zh) 2021-07-30

Similar Documents

Publication Publication Date Title
DE102017128994A1 (de) Weiche Dekodierungs-Planung
DE102017128999A1 (de) Lesebetrieb und weiches Dekodierungs-Timing
DE102019124438B4 (de) Multi-state-programmierung für speichervorrichtungen
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE102019133129A1 (de) Mehrphasenprogrammierung mit symmetrischer gray-codierung
DE112014005266B4 (de) Verfahren und System zur Vorwärtsreferenz-Protokollierung in einem peristenten Datenspeicher
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE102018105434A1 (de) Verfahren und System zum Abtasten von gelöschten Flashspeicherseiten mit Querverweis auf verwandte Anwendungen
DE102019125059A1 (de) Abbildung für multi-state-programmierung von speichervorrichtungen
DE102018123926A1 (de) Dynamische mehrstufige Decodierung
DE112019000167T5 (de) Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend
DE102015008923A1 (de) Vielfache ECC-Codewortgrössen in einem SSD
DE102018122826A1 (de) Vorrichtung zum Unterstützen eines Fehlerkorrekturcodes und Testverfahren dafür
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102011075814A1 (de) Speicherpuffer mit zugänglicher Information nach einem Schreibfehler
DE112015003569B4 (de) Verfahren und System zum Verwenden von NAND-Seitenpuffern, um die Übertragungspuffernutzung eines Festkörperlaufwerks zu verbessern
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102018115199A1 (de) Verfahren zur maximierung der frequenz während einer datenintegritätsprüfung auf einem physischen schnittstellenbus
DE112016002305B4 (de) Reduktion der Schreibverstärkung in einem Objektspeicher
DE112020003004T5 (de) Dma-scatter- und gather-operationen für nicht zusammenhängenden speicher
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE102017119065B4 (de) Aktualisieren eines Speichers
DE102018124836A1 (de) Neuartiger speicherbaustein
DE102017120789A1 (de) Abgestufter Variablenknotenspeicher

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