CN108399108A - 读取操作和软解码时序 - Google Patents
读取操作和软解码时序 Download PDFInfo
- Publication number
- CN108399108A CN108399108A CN201711399878.7A CN201711399878A CN108399108A CN 108399108 A CN108399108 A CN 108399108A CN 201711399878 A CN201711399878 A CN 201711399878A CN 108399108 A CN108399108 A CN 108399108A
- Authority
- CN
- China
- Prior art keywords
- soft
- data
- reading order
- decoder
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1044—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1068—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/32—Timing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1108—Hard 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
本主题技术在低密度奇偶校验解码操作中提供减少的开销。一种方法,包括接收硬解码失败指示,该指示是解码响应于使用第一电压组的第一读取命令从非易失性存储器读取的第一原始数据失败的指示。第一读取命令包括第一读取操作组。该方法包括向非易失性存储器发出使用第二电压组的对于数据的第二读取命令。第二读取命令包括第二读取操作组。该方法包括向解码器发出用于与第二读取命令并行处理的基于第一原始数据使用软信息的至少一个软解码请求。该方法包括从解码器接收成功解码的成功指示。
Description
技术领域
本主题技术一般涉及利用纠错编码(error correction coding,ECC)的数据存储解决方案。
背景技术
数据存储系统(例如,固态驱动器(solid state drive,SSD)、硬盘驱动器等等)可以使用低密度奇偶校验(Low Density Parity Check,LDPC)以校正存储和读取或发送和接收信息时发生的错误。例如,对于SSD的正常读取操作,在SSD控制器将数据返回到主机之前从快闪存储器设备读取的原始数据要经过解码。如果解码失败,控制器调用错误校正子例程。错误校正子例程涉及使用不同的电压从快闪存储器设备读取,并尝试不同的对数似然比(Log Likelihood Ratio,LLR)表用于LDPC解码。
发明内容
本主题技术通过发出原始读取请求和在原始读取请求期间执行软解码来减少在快闪存储系统中的错误校正子例程期间的开销时间。
根据本主题技术的方面,提供了一种用于管理数据解码的方法。该方法包括接收硬解码失败指示,该指示是解码响应于使用第一电压组的第一读取命令从非易失性存储器读取的第一原始数据失败的指示。第一读取命令包括第一读取操作组。该方法包括向非易失性存储器发出使用第二电压组的对于数据的第二读取命令。第二读取命令包括第二读取操作组。该方法包括向解码器发出用于与第二读取命令并行处理的基于第一原始数据使用第一软信息的至少一个软解码请求。该方法包括从解码器接收成功解码的成功指示。
根据本主题技术的其它方面,提供了一种快闪存储系统。该快闪存储系统包括接收硬解码失败指示的装置,该指示是解码响应于使用第一电压组的第一读取命令从非易失性存储器读取的第一原始数据失败的指示。第一读取命令包括第一读取操作组。该快闪存储系统包括向非易失性存储器发出使用第二电压组的对于数据的第二读取命令的装置。第二读取命令包括第二读取操作组。该快闪存储系统包括向解码器发出用于与第二读取命令并行处理的基于第一原始数据使用第一软信息的至少一个软解码请求的装置。该快闪存储系统包括从解码器接收成功解码的成功指示的装置。
根据本主题技术的其它方面,提供了一种快闪存储系统。该快闪存储系统包括多个快闪存储设备、解码器和控制器。该控制器被配置为接收硬解码失败指示,该指示是解码响应于使用第一电压组的第一读取命令从非易失性存储器读取的第一原始数据失败的指示。第一读取命令包括第一读取操作组。该控制器被配置为向非易失性存储器发出使用第二电压组的对于数据的第二读取命令。第二读取命令包括第二读取操作组。该控制器被配置为向解码器发出用于与第二读取命令并行处理的基于第一原始数据使用第一软信息的至少一个软解码请求。该控制器被配置为从解码器接收成功解码的成功指示。
要理解,从下面的详细描述中,本主题技术的其它配置对于本领域技术人员来说将容易变得显而易见,其中通过例示的方式示出和描述了本主题技术的各种配置。如将认识到的,本主题技术能够具有其它不同的配置,并且在所有不脱离本主题技术的范围的情况下,其多个细节能够在各种其它方面进行修改。因此,附图和详细描述本质上将被认为是例示性的而不是限制性的。
附图说明
将参考附图进行详细的描述:
图1是示出根据本主题技术的方面的快闪存储系统的组件的框图。
图2是示出根据本主题技术的方面的用于快闪存储系统的错误校正例程的读取和解码操作的图。
图3A是示出图2的图的读取和解码操作时序的图。
图3B示出根据本主题技术的方面的读取和解码操作时序的图。
图4是示出根据本主题技术的方面的在用于快闪存储系统的错误校正例程中减少开销的方法的流程图。
具体实施方式
下面阐述的详细描述意图作为本主题技术的各种配置的描述,并且不意图代表可以实践本主题技术的唯一配置。附图在此并入并构成详细描述的一部分。详细描述包括用于提供对主题技术的透彻理解的目的具体细节。然而,对于本领域技术人员显而易见的是,可以在没有这些具体细节的情况下实践本主题技术。在一些实例中,以框图形式示出公知的结构和组件,以避免模糊本主题技术的概念。为了便于理解,类似的组件标有相同的元件编号。
通常,当数据被写入非易失性存储器(诸如快闪存储器设备)时被编码,并且要读取数据时,解码器对从快闪存储器设备读取的原始数据进行解码。例如,如果主机在读取命令中请求数据,或者控制器请求数据作为维护操作的一部分,则控制器向快闪存储器发送读取请求。快闪存储器读取与所请求的数据相对应的原始数据,并且解码器解码原始数据。控制器将解码的原始数据返回给主机。然而,如果解码失败,控制器调用错误校正例程。如将在下面更详细描述的,错误校正例程涉及从快闪存储器设备读取原始数据并且对读取的原始数据进行解码的阶段,对于每个连续的阶段使用不同的电压以用于读取。
根据本主题技术的方面,可以减少完成错误校正例程的时间。给定阶段的读取命令可以包括一组读取操作,每个读取操作使用不同的电压。快闪存储器设备可以针对每个不同的电压被重新编程,或者快闪存储器设备可以能够通过不同的电压循环。在用于错误校正例程的当前阶段的读取命令完成之后,发出对读取的原始数据的软解码请求。在当前阶段的软解码请求完成之前,发出用于下一阶段的读取命令,使得与软解码并行地执行读取命令。因此,如果当前阶段的软解码失败,则等待下一阶段的读取命令完成的时间被减少。
图1是示出根据本主题技术的方面的快闪存储系统110的组件的框图。如图1所描绘的,快闪存储系统110包括接口115、控制器120、存储器125、解码器160、编码器166和快闪存储器设备130。接口115便利了快闪存储系统110和主机150之间的数据、命令和/或信号的通信。控制器120根据从主机150接收的命令来控制快闪存储系统110的操作以在快闪存储器设备130中存储和检索数据。控制器120可以包括处理器。存储器125(其可以是随机存取存储器(random access memory,RAM))为控制器120提供暂时的存储空间以处理命令并在主机150和快闪存储器设备130之间传送数据。解码器160,其可以包括存储器、寄存器、逻辑门、一个或多个处理器,并且解码器160可以与控制器120集成或从控制器120分离,以及解码原始数据。编码器166,其可以包括存储器、寄存器、逻辑门、一个或多个处理器,并且编码器166可以与控制器120集成或从控制器120分离,以及编码要被写入快闪存储器设备130的数据。下面将更详细地描述这些组件中的每一个的操作。
接口115提供主机150和快闪存储系统110之间的物理连接和电连接。接口115被配置为经由物理连接和电连接方便主机150和快闪存储系统110之间的数据、命令和/或控制信号的通信。与接口115的连接和通信可以基于诸如通用串行总线(Universal SerialBus,USB)、小型计算机系统接口(Small Computer System Interface,SCSI)、串行高级技术附件(Serial Advanced Technology Attachment,SATA)等的标准接口。可替换地,连接和/或通信可以基于专有接口,但是本主题技术不限于任何特定类型的接口。
主机150可以是计算设备,诸如计算机/服务器、智能手机或从快闪存储系统110读取数据和向快闪存储系统110写入数据的任何其它电子设备。主机150可以具有向快闪存储系统110发出读取和写入命令的操作系统或其它软件。快闪存储系统110可以与主机150集成或者可以在主机150的外部。快闪存储系统110可以无线地连接到主机150,或者可以物理地连接到主机150。
图1示出了多个快闪存储器设备130。快闪存储系统110可以包括一个或多个快闪存储器设备130,并不限于特定数量的快闪存储器设备130。快闪存储器设备130可以各自包括单个快闪存储器芯片或裸芯。快闪存储器设备130可以被组织在多个通道当中,通过该通道,由控制器120从快闪存储器设备130读取数据以及将数据写入到快闪存储器设备130,或者快闪存储器设备130可以耦合到单个通道。快闪存储器设备130可以使用NAND快闪存储器被实现。快闪存储器设备130可以各自包括用于存储各个快闪存储器设备130的操作参数的一个或多个寄存器135。操作参数可以包括:诸如读取电压的读取操作参数;诸如初始脉冲值、增量脉冲值和脉冲宽度的写入操作参数;以及诸如初始脉冲值、增量脉冲值和脉冲宽度的擦除操作参数。
快闪存储器设备130包括分布到诸如快闪存储器块140的存储块中的多个存储器单元。快闪存储器设备130可以具有一个或更多个快闪存储器块140,且快闪存储器设备130可各自具有相同或不同数量的快闪存储器块140。快闪存储器块140可以被称为数据块或存储器块,并且可以由控制器120使用物理块地址来寻址。每个快闪存储器块140被进一步划分为可由控制器120使用物理页面地址或偏移量来寻址的多个数据段或页面,物理页面地址或偏移量来自包含被引用页面的存储块的物理块地址。页面可以存储扇区或其它主机数据单元。快闪存储器块140代表在单个擦除操作中在快闪存储器设备130内被擦除的数据的单元。页面代表在读取或写入操作中从快闪存储器设备设备130读取或写入到快闪存储器设备130的数据的单元。尽管是按照块和页面来描述快闪存储器设备130的,但是也可以使用其它术语来指代快闪存储设备中的这些数据单元。
本主题技术不限于任何特定容量的快闪存储器。例如,存储块可以各自包括32、64、128或512页,或者任何其它数量的页面。此外,页面可以各自包括例如512字节、2KB、4KB或32KB。扇区可以各自包括例如512字节、4KB或其它尺寸。每页可能有一个或多个扇区。
在图1中,存储器125代表在快闪存储系统110的操作期间耦合到控制器120并由控制器120使用的易失性存储器。控制器120可以将命令和/或数据缓冲在存储器125中。控制器120还可以使用存储器125来存储用于将由主机150使用的逻辑地址转换成与快闪存储器设备130的块和页面相对应的虚拟和/或物理地址的地址映射表或查找表。用于管理快闪存储器设备130的其它类型的表格、数据、状态指示符等也可以由控制器120存储在存储器125中。例如,LLR表可以被存储在存储器125中。在不脱离本主题技术的范围的情况下,可以使用动态随机存取存储器(dynamic random access memory,DRAM)、静态随机存取存储器(static random access memory,SRAM)或其它类型的易失性随机存取存储器来实现存储器125。控制器120可以周期性地将存储器125的内容存储到一个或多个指定的快闪存储器块140中,诸如在快闪存储系统110断电之前。
控制器120管理主机150和快闪存储器设备130之间的数据流。控制器120被配置为经由接口115从主机150接收命令和数据。例如,控制器120可以从主机150接收数据和写入命令以将数据写入快闪存储器设备130中。控制器120还被配置为经由接口115发送数据到主机150。例如,控制器120可以响应于读取命令从快闪存储器设备130读取数据并将数据发送到主机150。控制器120还被配置为基于可以从主机150接收到的内部控制算法或其它类型的命令来管理存储在快闪存储器设备130和存储器125中的数据。例如,控制器120被配置为执行诸如垃圾收集(garbage collection,GC)、错误校正和损耗均衡的操作。本领域技术人员将会熟悉由快闪存储设备中的控制器所执行的其它操作,在本文中将不再具体描述。
可以利用通用处理器、微控制器、数字信号处理器(digital signal processor,DSP)、片上系统(system-on-a-chip,SoC)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑器件、分立硬件组件、或被设计和配置为执行本文描述的操作和功能的它们的任何组合来实现控制器120。控制器120可以通过运行存储在机器/计算机可读介质上的一个或多个指令序列来执行本文描述的操作和功能。机器/计算机可读介质可以是快闪存储器设备130、存储器125或控制器120能够从其读取指令或代码的其它类型的介质。例如,快闪存储系统110可以包括诸如EPROM或EEPROM的编码有固件/软件的只读存储器(Read-Only Memory,ROM),该固件/软件包括在快闪存储系统110的操作期间由控制器120读取和运行的一个或多个指令序列。
可以利用通用处理器、微控制器、数字信号处理器(DSP)、片上系统(SoC)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑器件、分立硬件组件、或被设计和配置为执行本文描述的操作和功能的它们的任何组合来实现解码器160。解码器160可以与控制器120集成或分离。解码器160可以被配置为使用LDPC。解码器160可以被配置为使用额外的或替换的解码方案。解码器160包括一个或多个硬解码器162和一个或多个软解码器164。硬解码器162可以是保留用于硬解码的解码器。硬解码将读取的比特值限制为“1”或“0”。另一方面,软解码使用例如从LLR表中抽取的一系列值,以提供读取值正确的可靠性或置信度度量。LLR表允许基于读取结果来查找置信度值。软解码器164可以是保留用于软解码的解码器。在某些实施方式中,硬解码器162的数量和软解码器164的数量可以从可用解码器池中动态地保留。
图2示出了读取操作和错误校正例程的图200。如果需要,读取操作201之后是第一错误校正阶段202,随后是第二错误校正阶段203。
读取操作201从例如来自主机150或控制器120的对数据的请求开始。控制器120将读取命令211发送到存储所请求的数据的适当的快闪存储器设备130。快闪存储器设备130例如在缓冲区中提供原始数据,对于硬解码操作212,解码器160解码该数据。更具体地,对于硬解码操作212,硬解码器162可以解码该数据。解码器160在完成硬解码操作212之后向控制器120返回指示213。如果指示213指示成功解码,则控制器120响应于对数据的请求将解码的数据返回到主机150。然而,如果指示213指示失败,则控制器120调用错误校正例程。
控制器通过将读取命令221发送到快闪存储器设备130来开始第一错误校正阶段202。读取命令221指示快闪存储器设备130使用第一阶段电压组来读取,该第一阶段电压组是与例如用于读取命令211的默认电压组不同的电压组。第一阶段电压组可以包括默认电压组中的一些或全部,和/或可以包括不在默认电压组中的电压。第一阶段电压组的电压可以对应于基本读取电平电压和来自基本读取电平电压的一个或多个偏移电压。读取命令221可以包括多个读取操作,每个读取操作使用来自第一阶段电压组的电压中的一个。第一阶段电压组可以被存储在例如存储器125或寄存器135中。控制器120可以例如通过在发出每个读取操作之前在寄存器135中设置值来对快闪存储器设备130进行编程,以针对读取命令221的每个读取操作以相应的电压读取。
快闪存储器设备130提供使用第一阶段电压组读取的第一原始数据,解码器160可以选择性地对于硬解码操作222解码该数据。控制器120接收第一原始数据可用的指示223。在第一原始数据被硬解码的实施方式中,解码器160向控制器120返回指示223。如果指示223指示成功解码,则控制器120提供解码的数据。否则,如果指示223指示失败,则控制器120继续错误校正例程。
对于每个错误校正阶段,如果硬解码失败,则控制器120可以发出一个或多个软解码请求。例如,可以发出三个软解码请求,虽然在其它实施方式中,可以发出更多或更少的软解码请求。软解码请求可以进一步包括额外的参数,诸如LLR表,其可以在软解码请求当中不同。
控制器120发起第一原始数据的软解码。控制器120向解码器160发送软解码请求224。软解码请求224可以是与响应于读取命令221而读取的第一原始数据一起发送的软LDPC请求。软解码请求224包括可从用于第一错误校正阶段202的第一LLR表中获得的软信息。
在LDPC编码方案中,例如,LLR可以包括比特为“0”或“1”的概率之间的比率的对数。正LLR通常可以指示从快闪存储器单元读取的信号可能是0比特,并且负LLR通常可以指示从存储器单元读取的信号可能是1比特。每个分配的LLR可以对应于比特值。在一个示例中,具有等于5的分配的LLR的比特值可能比具有等于1的分配的LLR的比特更可能是0。具有等于零的分配的LLR的比特可能是1或可能是0的概率相同。
解码器160可以使用LLR表来解码第一原始数据。第一原始数据可以包括一组或多组比特值,每组已经使用一组电压中的一个电压被读取。对于每个比特,跨越比特值组的相应比特对应于LLR表中的相应置信度值。对于更多数量的比特值组,LLR表可能更大以说明更多的置信度值。LLR表提供解码器160可用于软解码的软信息。解码器160在完成软解码之后向控制器120返回指示225。如果指示225指示成功,则控制器120将解码的数据提供给请求者,诸如主机150。否则,如果指示225指示失败,则控制器120继续错误校正例程。
控制器120向解码器160发出软解码请求226。软解码请求226可以是与第一原始数据一起发送的软LDPC请求。软解码请求226可以进一步包括第二组置信度值,诸如用于第一错误校正阶段202的第二LLR表。第二LLR表可以包括具有与第一LLR表的置信度值不同的置信度值的置信度值。不同的置信度值可以基于用于计算置信度值的不同算法。
解码器160在完成软解码之后向控制器120返回指示227。如果指示227指示成功,则控制器120将解码的数据提供给请求者,诸如主机150。否则,如果指示227指示失败,则控制器120继续错误校正例程。
控制器120向解码器160发出软解码请求228。软解码请求228可以是与第一原始数据一起发送的软LDPC请求。软解码请求228可以进一步包括第三置信度值组,诸如用于第一错误校正阶段202的第三LLR表。
解码器160在完成软解码之后向控制器120返回指示229。如果指示229指示成功,则控制器120将解码的数据提供给请求者,诸如主机150。否则,如果指示229指示失败,则控制器120继续错误校正例程。
错误校正例程可以包括一个或多个阶段。例如,这里描述了两个阶段,但是错误校正例程可以包括更多阶段,例如八个阶段或十个阶段。每个阶段都从使用与该阶段对应的电压组的读取命令开始。例如,电压组可以包括其它电压组的一个或多个子集,和/或可以包括不在其它电压组中的电压。可以基于快闪存储器设备130的性能特性(诸如编程/擦除周期,错误计数等)来确定电压组,并且电压组可以存储在例如存储器125中。在快闪存储器设备130执行读取操作之前,用于当前读取命令的电压组可以被编程到寄存器135中。
每个阶段包括软解码请求。对于给定阶段的软解码请求可以包括从当前阶段读取的原始数据以及从先前阶段读取的原始数据。例如,可以将每个阶段读取的原始数据存储在存储器125的缓冲区中,直到错误校正例程结束。对于每个连续的阶段,软解码请求可以引用保存当前阶段以及先前阶段读取的原始数据的缓冲区。通过使用更多的原始数据缓冲区,相关联的电压范围的间隔尺寸(granularity)增加。使用先前阶段的原始数据缓冲区可以避免使用先前使用的电压重新读取数据的需要。例如,如果先前阶段使用1.0V读取数据,并且当前阶段需要以1.0V和1.1V读取数据,则可以使用先前以1.0V读取的数据,而不用使用1.0V重新读取数据。与增加的用于读取数据的电压数量相对应的增加的电压范围的间隔尺寸,可能需要更大的LLR表,其保存对于电压范围的额外置信度值。虽然可以执行更多或更少的软解码,每个阶段可以执行有限数量的软解码,诸如三个,并且可以对应于每个阶段可用的LLR表的数量。每个阶段的每个软解码请求使用基于不同LLR表的软信息。因此,对于每个阶段可能存在例如三个不同的LLR表。
在第一错误校正阶段202的所有软解码请求(例如三个软解码请求)完成之后,控制器继续到第二错误校正阶段203。
控制器通过将读取命令231发送到快闪存储器设备130来开始第二错误校正阶段203。读取命令231指示快闪存储器设备130使用第二阶段电压组来读取,该第二阶段电压组是与默认电压组不同且与第一阶段电压组不同的电压组。第二阶段电压组可以被存储在例如存储器125或寄存器135中,并且对应于第二错误校正阶段203。快闪存储器设备130返回使用第二阶段电压组读取的第二原始数据,解码器160可以对于硬解码操作232解码该数据。控制器120接收第二原始数据可用的指示233。在第二原始数据被解码的实施方式中,解码器160向控制器120返回指示233。如果指示233指示成功解码,则控制器120提供解码的数据。否则,如果指示233指示失败,则控制器120继续错误校正例程。
控制器120发起第二原始数据的软解码。控制器120向解码器160发送软解码请求234。软解码请求234可以是与第一原始数据和第二原始数据一起发送的软LDPC请求。软解码请求234可以进一步包括一组置信度值,诸如用于第二错误校正阶段203的第一LLR表。
用于第二错误校正阶段203的LLR表可以各自是具有说明第一原始数据和第二原始数据的置信度值的矩阵。解码器160在完成软解码之后向控制器120返回指示235。如果指示235指示成功,则控制器120将解码的数据提供给请求者,诸如主机150。否则,如果指示235指示失败,则控制器120继续错误校正例程。
控制器120向解码器160发出软解码请求236。软解码请求236可以是与第一原始数据和第二原始数据一起发送的软LDPC请求。软解码请求236可以进一步包括第二置信度值组,诸如用于第二错误校正阶段203的第二LLR表。
解码器160在完成软解码之后向控制器120返回指示237。如果指示237指示成功,则控制器120将解码的数据返回给主机150。否则,如果指示237指示失败,则控制器120继续错误校正例程。
控制器120向解码器160发出软解码请求238。软解码请求238可以是与第一原始数据和第二原始数据一起发送的软LDPC请求。软解码请求238可以进一步包括第三置信度值组,诸如用于第二错误校正阶段203的第三LLR表。
解码器160在完成软解码之后向控制器120返回指示239。如果指示239指示成功,则控制器120将解码的数据返回给主机150。否则,如果指示239指示失败,则控制器120继续错误校正例程。
控制器120可以继续额外的错误校正阶段直到解码成功,或者直到所有的错误校正阶段已经被执行。当所有错误校正阶段已经被执行时,控制器120可以指示读取失败。
图3A示出与图2中所示的错误校正例程相对应的时序图。控制器120发出用于第一错误校正阶段的读取命令321。在读取命令321完成(以及硬解码失败)之后,控制器发出软解码请求324。如果软解码失败,则控制器发出软解码请求326。如果软解码失败,则控制器发出软解码请求328。如果软解码失败,则控制器开始第二错误校正阶段并发出读取命令331。在读取命令331完成(以及硬解码失败)之后,控制器发出软解码请求334。如果软解码失败,则控制器发出软解码请求336。如果软解码失败,则控制器发出软解码请求338。如图3A中所示,在先前的请求失败之后,每个请求被顺序地发出。
虽然图3A没有按比例绘制,但每条线的长度大致对应于时间长度。换句话说,从快闪存储器设备的读取操作大致比软解码操作花费更多的时间。例如,完成从快闪存储器设备的读取操作可以比完成三个软解码操作花费更多的时间。
图3B示出根据本主题技术的方面的与错误校正例程相对应的时序图。在读取命令321完成(并且指示失败)之后,控制器120发出读取命令331。在控制器120发出读取命令321之后,并且在读取命令321正在被处理的同时,控制器120发出软解码请求324。在某些实施方式中,控制器120可以替换性地在读取命令321完成之后发出软解码请求324,并且之后发出读取命令331。换句话说,读取命令331和软解码请求324被并行处理而不管发出的顺序如何。当软解码请求324失败时,控制器120发出软解码请求326。当软解码请求326失败时,控制器120发出软解码请求328。当前阶段的软解码请求被发出并且可以在用于下一阶段的读取命令完成之前完成。换句话说,用于下一错误校正阶段的读取操作可以与当前错误校正阶段的软解码操作并行和同时地被处理。因此,完成当前阶段的软解码和读取用于下一阶段的原始数据之间的等待减少。如果读取命令331返回失败,则控制器120可以发出下一读取请求,即使用与先前的读取命令中使用的电压组不同的电压组的读取命令341。
下面参考图4进一步讨论图3B的错误校正例程。图4示出了错误校正例程的流程图400。主机150从快闪存储器设备130中的一个请求数据。可替换地,控制器120可以请求数据以用于诸如垃圾收集的维护操作。控制器120向快闪存储器设备130发出初始读取命令,快闪存储器设备130可以基于与所请求的数据相关联的地址来选择。图4的过程以初始读取命令返回失败(例如解码器160指示硬解码的失败)之后的第一错误校正阶段开始。
控制器120向快闪存储器设备130发出使用第一电压组的第一读取命令。第一电压组对应于第一错误校正阶段,并且不同于初始读取命令中使用的电压组。解码器160响应于第一读取命令解码来自快闪存储器设备130的第一原始数据。该解码可以是由硬解码器162解码的硬解码。硬解码器162可以从存储器125中的缓冲区访问第一原始数据。
在410处,控制器120从解码器160接收解码第一原始数据失败的硬解码失败指示。在420处,响应于硬解码失败指示,控制器120向快闪存储器设备130发出使用第二电压组的对于数据的第二读取命令。在发出用于第一错误校正阶段的软解码之前,控制器120可以在用于第一错误校正阶段的读取失败之后立即发出用于第二错误校正阶段的读取。这允许在用于第一错误校正阶段过程的软解码的同时处理用于第二错误校正阶段的读取,因为完成从快闪存储器的读取的时间大于完成一个或多个软解码的时间。
在430处,控制器120在第二读取命令完成之前向解码器160发出至少一个使用第一原始数据的软解码请求。软解码器164可以接收并处理至少一个软解码请求。在第二读取操作期间,控制器120可以最终发出多于一个软解码请求,例如用于当前错误校正阶段的所有软解码请求。如上所述,软解码请求可以各自包括一组置信度值,例如LLR表。
在440处,控制器120从解码器160接收成功解码的成功指示。成功指示可以来自例如响应于在430处发出的至少一个软解码请求的成功的软解码,或者可以来自例如响应于与在420处发出的第二读取命令相关联的硬解码的成功的硬解码。一旦所请求的数据被成功解码,控制器120将使解码的数据可用于请求者,例如主机150或控制器120,而不管错误校正例程的哪个请求导致成功。
然而,在某些情况下,数据可能被成功解码多次。例如,当前错误校正阶段的软解码之一可以成功地返回。因为用于下一错误校正阶段的读取操作被并行处理,所以用于下一错误校正阶段的读取操作也可能在完成时返回成功,导致两个成功解码的数据组,其可能是相同的结果数据。
响应于成功指示,控制器120确定所请求的数据是否被成功地提供。例如,控制器120可以维持可以存储在存储器125或寄存器135中的状态机。该状态机可以跟踪对快闪存储器设备130的读取请求的状态。状态机可以具有针对每个读取请求的成功标志,以指示该数据是先前被提供的。当所请求的数据先前未被提供给请求者时,控制器120将解码的数据提供给请求者。例如,状态机可以指示成功标志未被设置,因此所请求的数据先前未被提供。在提供解码的数据时,控制器120例如通过设置相应的成功标志来更新状态机。如果控制器120接收到成功解码的另一成功指示,则控制器120将看到成功标志已被设置,并将丢弃解码的数据。
例如当用于当前错误校正阶段的软解码之一在用于下一错误校正阶段的读取操作期间返回成功时,这里描述的错误校正例程可能导致额外的读取操作。然而,减少的开销的益处可以超过额外读取操作的缺点,特别是在快闪存储系统110的生命周期结束附近,其中高误码率需要调用错误校正例程。
本领域技术人员将理解,可以将这里描述的各种例示性块、模块、元件、组件、方法和算法实现为电子硬件、计算机软件或两者的组合。为了示出硬件和软件的这种可互换性,上面已经根据其功能一般地描述了各种说明性块、模块、元件、组件、方法和算法。这样的功能是实现为硬件还是软件取决于施加在整个系统上的特定应用和设计约束。熟练的技术人员可以针对每个特定的应用以不同的方式实现所描述的功能。在所有不偏离本主题技术的范围的情况下,各种组件和块可以被不同地布置(例如,以不同的顺序被布置,或者以不同的方式被分区)。
要理解,所公开的过程中的步骤的特定顺序或层次是示例性方法的例示。基于设计偏好,要理解,可以重新布置过程中步骤的特定顺序或层次。一些步骤可以被同时执行。所附方法权利要求以示例顺序给出了各种步骤的元素,并不意味着限于所给出的特定顺序或层次。
提供之前的描述是为了使得本领域的任何技术人员能够实践在此描述的各个方面。先前的描述提供了本主题技术的各种示例,并且本主题技术不限于这些示例。这些方面的各种修改对于本领域技术人员来说将是显而易见的,并且这里定义的一般原理可以应用于其它方面。因此,权利要求不意图限于这里所示的方面,而是要符合与语言权利要求一致的全部范围,除非具体地如此陈述,其中引用单数形式的元件并不意图意味着“一个且仅一个”,而是意味着“一个或多个”。除非具体地陈述,否则术语“一些”是指一个或多个。男性代词(例如他的)包括女性和中性(例如她和它的),反之亦然。标题和副标题(如果有的话)仅用于方便,并不限制本发明。
诸如“方面”的短语并不暗示这样的方面对于本主题技术是必不可少的或者这样的方面应用于本主题技术的所有配置。涉及一个方面的公开可以应用于所有配置或者一个或多个配置。一个方面可以提供一个或多个示例。诸如方面的短语可以是指一个或多个方面,反之亦然。诸如“实施例”的短语并不暗示这样的实施例对于本主题技术是必不可少的或者这样的实施例应用于本主题技术的所有配置。涉及一个实施例的公开可以应用于所有实施例或者一个或多个实施例。一个实施例可以提供一个或多个示例。诸如“实施例”的短语可以是指一个或多个实施例,反之亦然。诸如“配置”的短语并不暗示这样的配置对于本主题技术是必不可少的或者这样的配置应用于本主题技术的所有配置。涉及一个配置的公开可以应用于所有配置或者一个或多个配置。一个配置可以提供一个或多个示例。诸如“配置”的短语可以是指一个或多个配置,反之亦然。
词语“示例性”在这里被使用意味着“用作示例或例示”。这里描述为“示例性”的任何方面或设计不一定被解释为比其它方面或设计优选或有利。
本领域普通技术人员已知的或以后将会知道的贯穿本公开所描述的各个方面的元素的所有结构和功能的等同物明确地通过引用并入本文,并且意图由权利要求涵盖。而且,在这里公开的任何内容都不意图专用于公众,不管这些公开是否在权利要求中明确记载。任何权利要求元素不得根据35U.S.C.§112第六段的规定解释,除非使用短语“用于...的装置”明确地记载该元素,或者在方法权利要求的情况下,使用短语“用于...的步骤”记载该元素。另外,就在说明书或权利要求中使用术语“包括”、“具有”等而言,当被用作权利要求中的过渡词时,这样的术语意图以与术语“包含”类似的方式作为包含性的,如“包含”被解释的那样。
Claims (21)
1.一种管理数据解码的方法,包括:
接收硬解码失败指示,所述指示是解码响应于使用第一电压组的第一读取命令从非易失性存储器读取的第一原始数据失败的指示,所述第一读取命令包括第一读取操作组;
向所述非易失性存储器发出使用第二电压组的对于数据的第二读取命令,所述第二读取命令包括第二读取操作组;
向解码器发出用于与所述第二读取命令并行处理的基于所述第一原始数据使用第一软信息的至少一个软解码请求;以及
从所述解码器接收成功解码的成功指示。
2.如权利要求1所述的方法,其中所述第一软信息还基于第一置信度值组。
3.如权利要求1所述的方法,还包括:
接收响应于使所述用第一软信息的至少一个软解码请求的一个或多个软解码失败指示;
接收解码响应于所述第二读取命令的第二原始数据失败的第二硬解码失败指示;
向所述非易失性存储器发出使用第三电压组的对于数据的第三读取命令,所述第三读取命令包括一个或多个第三读取操作;以及
向所述解码器发出用于与所述第三读取命令并行处理的基于所述第一原始数据和所述第二原始数据的使用第二软信息的至少一个软解码请求。
4.如权利要求3所述的方法,其中所述第一软信息还基于第一置信度值组,并且所述第二软信息还基于第二置信度值组。
5.根据权利要求1所述的方法,其中发出使用所述第一软信息的所述至少一个软解码请求还包括:
向所述解码器发出基于第一置信度值组使用所述第一软信息的第一软解码请求;
接收响应于所述第一软解码请求的第一软解码失败指示;以及
响应于所述第一软解码失败指示,发出基于所述第一原始数据和第二置信度值组使用第二软信息的第二软解码请求。
6.如权利要求1所述的方法,还包括:
响应于所述成功指示,确定所请求的数据是否被成功地提供;以及
当所请求的数据先前未被提供时提供解码的数据。
7.如权利要求6所述的方法,其中确定所请求的数据是否被成功地提供包括确定指示所请求的数据被提供的成功标志是否被设置。
8.一种快闪存储系统,包括:
接收硬解码失败指示的装置,所述指示是解码响应于使用第一电压组的第一读取命令从非易失性存储器读取的第一原始数据失败的指示,所述第一读取命令包括第一读取操作组;
向所述非易失性存储器发出使用第二电压组的对于数据的第二读取命令的装置,所述第二读取命令包括第二读取操作组;
向解码器发出用于与所述第二读取命令并行处理的基于所述第一原始数据使用第一软信息的至少一个软解码请求的装置;以及
从所述解码器接收成功解码的成功指示的装置。
9.如权利要求8所述的快闪存储系统,其中所述第一软信息还基于第一置信度值组。
10.如权利要求8所述的快闪存储系统,还包括:
接收响应于使用所述第一软信息的至少一个软解码请求的一个或多个软解码失败指示的装置;
接收解码响应于所述第二读取命令的第二原始数据失败的第二硬解码失败指示的装置;
向所述非易失性存储器发出使用第三电压组的对于数据的第三读取命令的装置,所述第三读取命令包括第三读取操作组;以及
向所述解码器发出用于与所述第三读取命令并行处理的基于所述第一原始数据和所述第二原始数据的使用第二软信息的至少一个软解码请求的装置。
11.如权利要求10所述的快闪存储系统,其中使用所述第一软信息的至少一个软解码请求还基于第一置信度值组,并且使用所述第二软信息的至少一个软解码请求还基于第二置信度值组。
12.如权利要求8所述的快闪存储系统,其中发出所述使用第一软信息的至少一个软解码请求还包括:
向所述解码器发出基于第一置信度值组使用所述第一软信息的第一软解码请求;
接收响应于所述第一软解码请求的第一软解码失败指示;以及
响应于所述第一软解码失败指示,发出基于所述第一原始数据和第二置信度值组使用第二软信息的第二软解码请求。
13.如权利要求8所述的快闪存储系统,还包括:
响应于所述成功指示,确定所请求的数据是否被成功地提供的装置;以及
当所请求的数据先前未被提供时提供解码的数据的装置。
14.如权利要求13所述的快闪存储系统,其中确定所请求的数据是否被成功地提供包括确定指示所请求的数据被提供的成功标志是否被设置。
15.一种快闪存储系统,包括:
多个快闪存储器设备;
解码器;以及
控制器,被配置为:
接收硬解码失败指示,所述指示是解码响应于使用第一电压组的第一读取命令从非易失性存储器读取的第一原始数据失败的指示,所述第一读取命令包括第一读取操作组;
向所述非易失性存储器发出使用第二电压组的对于数据的第二读取命令,所述第二读取命令包括第二读取操作组;
向所述解码器发出用于与所述第二读取命令并行处理的基于所述第一原始数据使用第一软信息的至少一个软解码请求;以及
从所述解码器接收成功解码的成功指示。
16.如权利要求15所述的快闪存储系统,其中所述第一软信息还基于第一置信度值组。
17.如权利要求15所述的快闪存储系统,其中所述控制器还被配置为:
接收响应于使用所述第一软信息的至少一个软解码请求的一个或多个软解码失败指示;
接收解码响应于所述第二读取命令的第二原始数据失败的第二硬解码失败指示;
向所述非易失性存储器发出使用第三电压组的对于数据的第三读取命令,所述第三读取命令包括第三读取操作组;以及
向所述解码器发出用于与所述第三读取命令并行处理的基于所述第一原始数据和所述第二原始数据的使用第二软信息的至少一个软解码请求。
18.如权利要求17所述的快闪存储系统,其中所述第一软信息还基于第一置信度值组,并且所述第二软信息还基于第二置信度值组。
19.如权利要求15所述的快闪存储系统,其中所述控制器还被配置为:
向所述解码器发出基于第一置信度值组使用所述第一软信息的第一软解码请求;
接收响应于所述第一软解码请求的第一软解码失败指示;以及
响应于所述第一软解码失败指示,发出基于所述第一原始数据和第二置信度值组使用第二软信息的第二软解码请求。
20.如权利要求15所述的快闪存储系统,其中所述控制器还被配置为:
响应于成功指示,确定所请求的数据是否被成功地提供;以及
当所请求的数据先前未被提供时提供解码的数据。
21.如权利要求20所述的快闪存储系统,其中确定所请求的数据是否被成功地提供包括确定指示所请求的数据被提供的成功标志是否被设置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/426,949 US10222996B2 (en) | 2017-02-07 | 2017-02-07 | Read operation and soft decoding timing |
US15/426,949 | 2017-02-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108399108A true CN108399108A (zh) | 2018-08-14 |
CN108399108B CN108399108B (zh) | 2021-07-30 |
Family
ID=62909833
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711399878.7A Active CN108399108B (zh) | 2017-02-07 | 2017-12-22 | 读取操作和软解码时序 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10222996B2 (zh) |
CN (1) | CN108399108B (zh) |
DE (1) | DE102017128999A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110837340A (zh) * | 2018-08-17 | 2020-02-25 | 慧荣科技股份有限公司 | 闪存控制器、管理闪存模块的方法及相关的电子装置 |
CN112486724A (zh) * | 2019-09-11 | 2021-03-12 | 爱思开海力士有限公司 | 自适应软解码器的服务质量 |
CN113227959A (zh) * | 2021-03-30 | 2021-08-06 | 长江存储科技有限责任公司 | 具有读取错误处理的存储器控制器 |
Families Citing this family (5)
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 |
US11159176B1 (en) * | 2020-06-26 | 2021-10-26 | Western Digital Technologies, Inc. | Data-assisted LDPC decoding |
CN113393883A (zh) * | 2021-06-22 | 2021-09-14 | 武汉理工大学 | 一种nand闪存的数据读取方法、装置及nand闪存系统 |
CN113793635B (zh) * | 2021-11-08 | 2022-04-19 | 阿里云计算有限公司 | 存储装置和存储设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011113034A2 (en) * | 2010-03-12 | 2011-09-15 | Sandforce, Inc. | Ldpc erasure decoding for flash memories |
CN102354527A (zh) * | 2011-06-02 | 2012-02-15 | 钟浩 | 一种降低固态存储系统响应时间的方法 |
CN102479556A (zh) * | 2010-11-25 | 2012-05-30 | 三星电子株式会社 | 非易失性存储器件及其读取方法 |
Family Cites Families (18)
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 |
US20120240007A1 (en) * | 2010-10-20 | 2012-09-20 | Stec, Inc. | Ldpc decoding for solid state storage devices |
JP2012181761A (ja) * | 2011-03-02 | 2012-09-20 | Toshiba Corp | 半導体メモリ装置および復号方法 |
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 |
-
2017
- 2017-02-07 US US15/426,949 patent/US10222996B2/en active Active
- 2017-12-06 DE DE102017128999.2A patent/DE102017128999A1/de active Pending
- 2017-12-22 CN CN201711399878.7A patent/CN108399108B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011113034A2 (en) * | 2010-03-12 | 2011-09-15 | Sandforce, Inc. | Ldpc erasure decoding for flash memories |
CN102479556A (zh) * | 2010-11-25 | 2012-05-30 | 三星电子株式会社 | 非易失性存储器件及其读取方法 |
CN102354527A (zh) * | 2011-06-02 | 2012-02-15 | 钟浩 | 一种降低固态存储系统响应时间的方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110837340A (zh) * | 2018-08-17 | 2020-02-25 | 慧荣科技股份有限公司 | 闪存控制器、管理闪存模块的方法及相关的电子装置 |
CN110837340B (zh) * | 2018-08-17 | 2023-03-21 | 慧荣科技股份有限公司 | 闪存控制器、管理闪存模块的方法及相关的电子装置 |
CN112486724A (zh) * | 2019-09-11 | 2021-03-12 | 爱思开海力士有限公司 | 自适应软解码器的服务质量 |
CN113227959A (zh) * | 2021-03-30 | 2021-08-06 | 长江存储科技有限责任公司 | 具有读取错误处理的存储器控制器 |
WO2022204928A1 (en) * | 2021-03-30 | 2022-10-06 | Yangtze Memory Technologies Co., Ltd. | Memory controller with read error handling |
US11521701B2 (en) | 2021-03-30 | 2022-12-06 | Yangtze Memory Technologies Co., Ltd. | Memory controller with read error handling |
Also Published As
Publication number | Publication date |
---|---|
DE102017128999A1 (de) | 2018-08-09 |
CN108399108B (zh) | 2021-07-30 |
US10222996B2 (en) | 2019-03-05 |
US20180225041A1 (en) | 2018-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108399108A (zh) | 读取操作和软解码时序 | |
CN108399109B (zh) | 软解码调度 | |
CN111326199B (zh) | 用于存储器设备的多态编程 | |
US7809994B2 (en) | Error correction coding for multiple-sector pages in flash memory devices | |
KR101534888B1 (ko) | 내고장성 비휘발성 집적 회로 메모리 | |
US10871910B1 (en) | Non-volatile memory with selective interleaved coding based on block reliability | |
US20110252289A1 (en) | Adjusting storage device parameters based on reliability sensing | |
US20100088557A1 (en) | Systems and methods for multiple coding rates in flash devices | |
WO2013138115A1 (en) | Statistical distribution based variable-bit error correction coding | |
TW201637019A (zh) | 讀取電壓準位估測方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN109801669A (zh) | 具有软读取挂起方案的存储器系统及其操作方法 | |
CN109117382A (zh) | 用于对经擦除的闪存页扫描的方法和系统 | |
CN104166629B (zh) | 具有有效的软信息接口的nand闪存存储系统 | |
TW201913382A (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN108268338B (zh) | 逐渐缩减大小的可变节点存储器 | |
CN109491828B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
TW202020880A (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN107146638A (zh) | 译码方法、内存储存装置及内存控制电路单元 | |
US10756764B2 (en) | Memory system and control method | |
CN108268339A (zh) | 用于在线编程/擦除计数估计的方法和系统 | |
US20230185661A1 (en) | Storage device with data quality metric and selectable data recovery scheme | |
CN113724774B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
CN111796774B (zh) | 存储器控制方法、存储器存储装置及存储器控制器 | |
US10783035B1 (en) | Method and system for improving throughput and reliability of storage media with high raw-error-rate | |
CN111147084B (zh) | 多通道并行译码器及其译码方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |