CN105164649A - 对存储在固态存储器中的数据进行解码 - Google Patents
对存储在固态存储器中的数据进行解码 Download PDFInfo
- Publication number
- CN105164649A CN105164649A CN201480021715.3A CN201480021715A CN105164649A CN 105164649 A CN105164649 A CN 105164649A CN 201480021715 A CN201480021715 A CN 201480021715A CN 105164649 A CN105164649 A CN 105164649A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- memory cell
- probable value
- stored
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/45—Soft decoding, i.e. using symbol reliability information
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output 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/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/028—Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
-
- 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
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/14—Dummy cell management; Sense reference voltage generators
-
- 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/3723—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using means or methods for the initialisation of the decoder
-
- 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/63—Joint error correction and other techniques
- H03M13/6325—Error control coding in combination with demodulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- 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
-
- 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
-
- 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/25—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
- H03M13/256—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with trellis coding, e.g. with convolutional codes and TCM
-
- 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/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/3905—Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP 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/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/41—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
- H04L1/0047—Decoding adapted to other signal detection operation
- H04L1/005—Iterative decoding, including iteration between signal detection and decoding operation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Read Only Memory (AREA)
Abstract
公开了对存储在固态存储器阵列中的数据进行解码的实施例。在一个实施例中,在考虑到单元间干涉(ICI)的同时来执行多个读取操作。通过利用已知数据及其对应的多次读取输出来确定诸如对数似然比(LLR)的软决策信息。软决策信息被提供给检测器。改进了可靠性,提高了性能。
Description
技术领域
本公开涉及用于计算机系统的数据存储系统。更特别地,本公开涉及对存储在固态存储器中的数据进行解码。
背景技术
存储在数据存储系统中的数据通常被编码以确保可靠性。当编码的数据从存储介质中取回时,解码器用来从编码的数据中获得原始数据。软决策解码器能够提高数据存储系统的可靠性,并且减少数据出错的数目。诸如对数似然比(LLR)信息的软决策信息的生成具有挑战性并且是耗时的。因此,期望的是提供用于生成软决策信息的更高效的机制。
附图说明
现在将参考附图来描述实施本发明的各特征的系统和方法,在附图中:
图1A示出了根据本发明的一个实施例的主机系统和数据存储系统的组合。
图1B示出了根据本发明的另一实施例的主机系统和数据存储系统的组合。
图2示出了根据本发明的一个实施例的用户数据的编码器和解码器。
图3示出了根据本发明的一个实施例的数据检测器和解码器。
图4示出了根据本发明的一个实施例的用于生成软决策信息的表格。
图5示出了根据本发明的一个实施例的用于生成软决策信息的框架图。
图6A-6D是示出了根据本发明的一些实施例的读取所存储的数据的过程的流程图。
图7是示出了根据本发明的另一实施例的读取所存储的数据的过程的流程图。
具体实施方式
虽然描述了一些实施例,但是这些实施例仅通过示例的方式提出,而不是要限制保护范围。事实上,本文所描述的新颖的方法和系统可以以各种其他方式来实施。此外,本文所描述的方法和系统的形式上的各种省略、替代和改变可以不偏离保护范围而做出。
概述
数据存储系统能够使用固态闪速存储器以用于存储数据。随着数据存储系统容量的增加,闪速存储器的密度也在增大。随着闪速存储器的尺寸减小以及密度增大,单元间干涉可能不利地影响所存储的数据的可靠性,并且增加数据出错的数目。误差校正码能够用来在将数据存储在数据存储系统中之前对数据进行编码。然而,由于固态存储器在使用过程中经过编程/擦除循环以及降级,所以变得更加难以正确地提取存储在存储器中的数据。数据出错的一个原因在于,固态存储器单元的不同存储器状态之间的裕度的减小,以及伴随的困难在于难以设置用于读取的适当的电压阈值以便正确地取回所存储的数据。将关于所存储的数据的软决策信息或软信息提供给解码器能够提高数据存储系统的可靠性并且减少数据出错的数目。由于例如变化的P/E循环数目、变化的读取数目以及变化的工作温度,为针对固态存储器生成诸如对数似然比(LLR)的软决策信息带来了挑战。
本发明的一些实施例涉及通过执行多次读取操作并且考虑到单元间干涉(ICI)来对存储在固态存储器阵列中的数据进行解码。在一些实施例中,针对具有单元间干涉的固态存储器生成诸如LLR的软决策信息。软决策信息能够指示存储器的可靠性。将软决策信息提供给检测器,检测器进一步增强软决策信息。在一个实施例中,软决策信息是利用已知数据及其对应的多次读取输出而确定的。在一些实施例中,这是通过将已知的测试数据写入存储器的一部分,并且此后对已知数据进行检测和解码来实现的。在其他实施例中,这是通过对存储在存储器的部分中的先前未知的数据进行成功地检测以及解码来实现的。因此,改进了可靠性,并且提高了性能。
系统概述
图1A示出了根据本发明的一个实施例的主机系统和数据存储系统的组合100A。如图所示,数据存储系统120A(例如,固态驱动器)包括控制器130和非易失性固态存储器阵列150。固态存储器阵列150可以包括闪速集成电路、硫属化物RAM(C-RAM)、相变存储器(PC-RAM或PRAM)、可编程金属单元RAM(PMC-RAM或PMCm)、双向联合存储器(OUM)、阻变式RAM(RRAM)、NAND存储器(例如,单级单元(SLC)存储器、多级单元(MLC)存储器、或其任意组合)、NOR存储器、EEPROM、铁电存储器(FeRAM)、磁阻RAM(MRAM)、其他离散NVM(非易失性存储器)芯片、或其任意组合。在一个实施例中,存储器阵列150包括两位MLCNAND存储器。数据存储系统120A可以进一步包括其他类型的存储设备。
控制器130可以被配置为从主机系统110的存储接口模块112(例如,设备驱动器)接收数据和/或存储存取命令。由存储接口112传送的存储存取命令可以包括由主机系统110发布的写数据命令和读取数据命令。读取命令和写命令能够指定用来访问数据存储系统120A的逻辑地址(例如,逻辑块地址或LBA)。控制器130能够执行固态存储器阵列150中的所接收到的命令。
数据存储系统120A能够存储由主机系统110传送的数据。换言之,数据存储系统120A能够充当用于主机系统110的存储器存储设备。为便于该功能,控制器130能够实现逻辑接口。逻辑接口能够将数据存储系统的存储器作为能够存储用户数据的一组逻辑地址(例如,连续地址)而呈现给主机系统110。在内部,控制器130能够将逻辑地址映射到固态存储器阵列150和/或其他存储模块中的各物理位置或地址。控制器130包括数据存储与误差校正模块132,其被配置为将数据存储在固态存储器阵列150中并且从固态存储器阵列150中取回数据,对数据进行编码,对数据进行检测以及解码,确定从固态存储器阵列取回的数据的完整性,如果需要,执行对所取回的数据进行误差校正,并且执行数据存储系统120A与主机系统110之间的数据传输。
图1B示出了根据本发明的另一实施例的主机系统和数据存储系统的组合100B。如图所示,数据存储系统120B(例如,混合磁盘驱动器)包括控制器130、固态存储器阵列150、以及包括磁介质164的磁存储设备160。组合100B的这些组件以及其他组件在上文进行了描述。
对所存储的数据进行解码
图2示出了根据本发明的一个实施例的编码器和解码器200。在一个实施例中,编码和解码是通过控制器130来执行的,诸如例如通过数据存储与误差校正模块132。从主机系统110接收到的用户数据由编码器210进行编码。在一个实施例中,编码器210使用低密度奇偶校验(LDPC)码以用于编码。在块212中,被编码的数据存储在存储器阵列150中。被编码的数据可以被称为码字。此外,使用在信道上传送数据的类比,存储器阵列可以被视为通信信道,并且存储数据可以被视为在信道上传输数据。存储器阵列信道特征在于各种参数,例如单元间干涉、页面间干涉、P/E循环的数目、磨损、工作温度等。这些参数中的一个或多个将噪声(或数据错误)引入到所存储的数据中。
在块220中对所存储的数据进行检测以及解码。在一个实施例中,块220是LDPC解码器。在检测器222中检测从存储器阵列150(或码字)取回的数据。由于存储器阵列150信道能够将存储在存储器中的码字变换成信道所使用的格式,所以检测器222用来检测从存储器阵列信道取回的数据(即,检测信道输出),并且将取回的数据转换回与当提供码字用于存储在存储器阵列中时所使用的相同的格式。检测器222使用由信道估计器226所取得的信息。信道估计器226能够生成统计信息。检测器222能够使用来自信道估计器226的信息来生成软决策信息,例如LLR。软决策信息由解码器224使用来对码字进行解码并且获得用户数据。
图3示出了根据本发明的一个实施例的数据检测器和解码器300。在一个实施例中,通过控制器130来执行数据检测和解码,例如通过数据存储与误差校正模块132来执行。数据检测器和解码器300接收从存储器阵列150取回的编码数据。检测器310使用由统计模块316和概率模块314生成的诸如LLR的软决策信息。软决策信息被提供给解码器312,解码器可以是LDPC解码器。解码器312将检测到的编码数据(或码字)进行解码。统计模块316基于对解码的数据和/或其他数据的分析来生成概率信息。如下面进一步描述的,在一个实施例中,统计模块316通过分析在多次读取方案中获得的值中出现的位模式来生成概率信息,并且概率模块314继而基于统计模块316的输出来生成软决策信息。
软决策信息生成-由统计信息来生成概率信息
图4示出了根据本发明的一个实施例的用于生成软决策信息的表格400。在一个实施例中,表格400是由控制器130生成的,诸如例如通过数据存储与误差校正模块132生成。在一个实施例中,通过利用变化的读取电压来在参考存储器单元执行多次读取,由统计模块316来生成表格400,取决于实施例,参考存储器位置可以是指存储器阵列的不同部分。例如,存储器阵列可以被划分成块,块进一步被划分成页面。在一个实施例中,参考存储器位置是存储有已知数据的存储器页面。在其他实施例中,参考存储器位置可以指单元、部分页面、部分页面的集合、页面集合、块、块的集合、和/或存储有已知数据的存储器阵列位置的任何其他适合的群组。在一个实施例中,已知的数据对应于存储在存储器页面中的训练数据。在另一实施例中,已知的数据对应于成功解码的数据。例如,数据存储系统120A或120B可以读取存储器页面的集合,并且已知数据可以对应于从集合中的一个页面成功读取的数据。在又一实施例中,训练数据和成功解码数据的组合能够用作已知数据。
作为一个示例,统计模块316所分析的存储器位置可以是具有已知位值的参考页面或者是被成功解码的页面。根据页面的大小,可以有大约512个、1024个、2048个或更多的存储器单元,每个单元与多个值相关联,除了其原始已知值之外,多次读取中的每一个有一个值。在一个实施例中,这些值可以对应于位,而在其他实施例中,值可以对应于两个以上的位。这在下面的示例表格(表格1)中示出。
单元0 | 单元1 | 单元2 | 单元3 | 单元4 | 单元5 | … | 单元N | |
已知值 | 0 | 0 | 0 | 1 | 1 | 1 | … | 0 |
读取第1次 | 0 | 0 | 0 | 0 | 0 | 1 | … | 0 |
读取第2次 | 0 | 0 | 0 | 1 | 0 | 1 | … | 0 |
读取第3次 | 0 | 1 | 0 | 1 | 1 | 1 | … | 1 |
表格1
返回图4,表格400的列1中的图例对应于存储器阵列150位置的近邻,例如,存储器单元及其相邻的单元。例如,存储器阵列位置Xi(例如,一个单元)可以具有与Xi-1和Xi+1紧近邻。例如,在上表中,单元0-2中的加粗位可以被视为三元组{Xi-1,Xi,Xi+1},Xi对应于单元1。符号L表示与信道参数有关的信息,在该情况下所述信道参数集中于相邻单元对所讨论的单元(Xi)所产生的影响。在一个实施例中,存储器阵列位置是存储二进制数据的单一位的单元,该二进制数据的单一位取0或1中的一个值。因此,对于相邻存储器位置的序列{Xi-1,Xi,Xi+1}(或X,L),存在不同位值或模式的八个(或23)组合。在表格400的列1中反映了这些不同的组合。上面的单元0-2(值为“000”)是在表格400的单元A-1中所反映的组合的一个实例。
存储器位置Xi可以被多次读取。在一个实施例中,针对读取固态存储器,存储器位置可以在多个电压阈值下读取三次。三次读取的阈值可以不同、相同,或者一个阈值能够用于三次读取中的两次读取,而另一阈值能够用于其余的读取操作。对于存储在{Xi-1,Xi,Xi+1}中的各个位模式,在多次读取期间获得的值的总计数显示在表格400的列3至列10中。列3至列10中的每个框指示从多次读取获得的值内的特定位模式出现数目的计数。例如,表格400的行A、列4中的值“1”指示,在从多次读取返回的值中,对于中间位(Xi)三次读取的相邻位“000”的模式,对于第一次读取、第二次读取和第三次读取(例如,使用三个读取阈值),出现一次返回值0、0和1。如在模式“000”中所反映的,中间存储器位置(或Xi)存储值0。这对应于上述示例表格中的单元0-2,并且单元1的多次读取读取数值对于三次读取分别为0、0、1。换言之,表格400的行A、列4中的值“1”指示,在所读取的存储器页面中数百位或数千位中,该特定模式仅在单元1中出现一次。在一个实施例中,列3至列10中的位可以被排序以分别指示第三次读取、第二次读取和第一次读取,或者任何其他适合的次序。
表格400的列2对应于存储在存储器位置序列{Xi-1,Xi,Xi+1}中的列1中已知数据的特定位模式出现的总数。例如,表格400的行A、列2中的值“2”指示,相邻位“000”的模式在该已知数据中出现了两次。作为另一示例,表格400的行F、列2中的值“9”指示,相邻位“101”的模式在已知数据中出现了九次。
在一个实施例中,表格400中的数据用来生成用于生成软决策信息的概率信息。与Li={Xi-1,Xi+1}相邻的存储器位置Xi的多次读取输出Yi的概率根据下式确定:
其中,#(Yi,Xi,Li)是存储在(Xi,Li)中的位出现的总数,对应的多次读取值为Yi(即,如列3-10中所指示),而#(Xi,Li)是模式(Xi,Li)出现的总数(如列2所指示)。例如,假设相邻位{Xi-1,Xi,Xi+1}的存储数据模式为“000”的情况下存储器Xi位置的多次读取输出Y为“001”的概率能够确定如下。表格400的行A、列4对应于三次读取存储器位置Xi的序列“001”。如表格中的值“1”所指示的,序列“001”出现一次。在存储器页面的已知位序列中相邻位“000”的模式出现两次,如行A、列2中的“2”所指示的。因此,P(Yi=001|Xi=0,[Xi-1=0,Xi+1=0])是1/2(或0.5)。
在一些实施例中,使用不是存储器位置Xi的紧近邻的相邻存储器位置。可以使用任何适当数量的相邻存储器位置。在一些实施例中,使用非相邻位置。在一些实施例中,对存储器位置Xi执行的读取的次数是任意整数值,例如小于三或大于三的值。在一些实施例中,对于所有的读取操作使用相同的读取阈值,或者对于多个读取操作使用相同的电压阈值,同时对于其他读取操作使用一个或多个不同的电压阈值。
软决策信息生成-利用基于框架的算法由概率信息来生成软决策信息
在一个实施例中,一旦由统计模块316生成概率值,则概率模块314计算用于解码的软决策信息(例如LLR)。图5示出了根据本发明的一个实施例的用于生成软决策信息的框架图500。框架500能够由控制器130生成,诸如例如通过数据存储与误差校正模块132来生成。在一个实施例中,框架500由检测器310使用。框架500能够用来利用软输出维特比算法(SOVA)、BCJR算法等来得到软决策信息。
在一个实施例中,框架500能够用来找到最可能的路径,其对应于存储在例如存储器页面的存储器位置中的最可能的值序列。如图5所示,状态510对应于在时刻k存储在(Xi,Li)(或{Xi-1,Xi,Xi+1})中的位,而状态530对应于在时刻k+1存储在(Xi+1,Li+1)(或{Xi,Xi+1,Xi+2})中的位。转换520对应于当从存储器中读取下一位(或数据值)时从状态510到状态520所做的转换。例如,假设数据存储系统120A或120B读取包括存储有单独的数据位的多个存储器位置的存储器页面。存储器页面可以是存储已知数据的参考页面或者是其数据要被检测和解码的目标页面。数据存储系统读取与存储在单独的存储器位置中的数据对应的位序列b0,b1,b2,...,bM-1。然后,通过例如检测器310来检测该原始位序列,检测器310能够将位序列转换成解码器312使用的软决策信息,解码器312能够将软决策信息转换成存储于存储器页面中的用户数据。利用由统计模块316生成的概率信息,检测器310能够找到使得诸如读取错误的一个或多个存储器错误的概率最小化的路径。
例如,假设在给定时刻k,对诸如存储器单元的存储器位置读取三次,并且通过读取操作来返回序列“111”。也即,第一读取操作、第二读取操作和第三读取操作返回值“1”作为存储在存储器位置上的值。框架500能够用来找到位序列{Xi-1,Xi,Xi+1}和{Xi,Xi+1,Xi+2},它们对应于时刻k和时刻k+1的参考存储器位置(Xi)及其近邻。来自群组510和530的起始状态和结束状态能够被确定而使得读取出错的概率被降低或最小化。起始状态510基于初始值以及基于下面引入的前向概率α和后向概率β而被分配概率。在一个实施例中,初始地(例如,在时刻0处),所有起始状态510可以被分配相等的概率。假设在时刻k,具有最高概率的起始状态是状态512,其与位模式“100”相关联。下一状态(在时刻k+1)能够通过遵循具有最高概率的路径来确定。参考表格400,列10对应于存储器单元Xi的“111”多次读取序列的信息。最大概率是与行C、列10相关联的3/8(即,行C、列10存储“3”,而且行C、列2存储“8”),其对应于存储在相邻存储器位置{Xi,Xi+1,Xi+2}上的位模式“010”。因此,下一状态是“010”或状态532,因为与转换522相关联的概率是3/8。注意的是,在图示的实施例中,新的位(Xi+2)被附加在位序列的最左侧。在另一实施例中,新的位可以被附加在最右侧、中间等。
在一个实施例中,对于M单元存储器页面的存储器单元X0,X1,X2,...,XM-1,可以生成框架500。在该情况下,框架500可以具有M+1状态组以及状态组之间的M个转换。每个存储器单元Xi可以被读取多次以产生多次读取值。利用表格400中的信息将权重分配给转换530。例如,如上所说明的,权重3/8被分配给状态512与532之间的转换522。在另一实施例中,按权重标定的0与1之间的值被分配给状态512与532之间的转换522。
在一个实施例中,BCJR算法能够用于取得软决策信息,例如LLR。BCJR算法使用表格400和框架500中的信息。使s为时刻‘t’的框架状态,s’为时刻‘t+1’的框架状态,其中s’通过转换连接到s。使γt(s,s')表示分配给转换520的分支度量或权重。给定利用表格400按经验计算的状态对(s,s’)的转换位,分支度量可以是接收的样本Y(t)的条件概率。例如,分配给转换522的分支度量或权重是3/8。前向概率(α)和后向概率(β)可以被递归地计算如下:
γt(s,s')=Pr(Y(t)|X(t))(4)
LLR可以被计算如下:
在一个实施例中,诸如LLR的软决策信息用作解码器的输入,解码器对存储在例如目标存储器页面的目标存储器位置上的数据进行解码。例如,LLR(Xk)可以由解码器312来使用。通过读取和检测存储在具有与目标存储器位置的属性类似的属性的参考存储器位置上的已知数据,来生成软决策信息。例如,同一存储器块中的存储器页面很可能具有与这些已经经历过相同或相似P/E循环数、磨损、单元间干涉、页面间干涉、工作或环境温度等的页面具有相似的属性。作为另一示例,在第一页面和第二页面(可以是相邻页面或者可以不是相邻页面)内具有相同位置的存储器位置很可能具有相似的属性。
软决策信息生成和应用过程
图6A-6D是示出了根据本发明的一些实施例的读取所存储的数据的过程的流程图。图示的过程可以由控制器130和/或数据存储与误差校正模块132来执行。图6A是示出了在块602中将已知的训练数据存储在存储器阵列150中的过程600A的流程图。已知的训练数据可以存储在一个或多个存储器位置上。例如,已知的训练数据可以存储在存储器阵列150中的每个块的一个或多个页面中。作为另一示例,已知的训练数据可以存储在从每N个块中选出的一个或多个页面中,其中N是整数。例如,已知的训练数据可以存储在从三个相邻块中选出的页面中。
图6B是示出了使用根据过程600A存储的已知训练数据或者使用已经被成功解码的数据来读取所存储的数据的过程600B的流程图。在一个实施例中,过程600B对存储在目标存储器位置上的数据进行检测以及解码。在块604中,过程600B对参考存储器位置执行多次读取操作。参考存储器位置可以存储已知的训练数据(例如,其可以根据过程600A来存储)。在一个实施例中,参考存储器位置可以是存储器页面。在另一实施例中,参考存储器位置可以是部分页面、页面、页面数、块、块数和类似物或者其任意组合。过程600B对参考存储器位置执行多次读取操作,从而获得存储在存储器位置上的多个数据模式。例如,过程600B针对参考存储器页面的存储器单元X0至XM-1获得多次读取值。因为参考数据是已知的,所以过程600B能够构造类似于表格400的表格。过程600B转换到块606,在块606中该过程基于已知的训练数据并且基于数据模式来分配概率值。在一个实施例中,过程600B生成类似于框架500的框架并且将权重分配给框架。根据来自表格的概率值来确定权重。利用该框架,过程600B能够确定软决策信息,例如LLR。
过程600B转换到块608,在块608中,该过程对目标存储器位置执行一个或多个读取操作。在一个实施例中,在块608中执行一次或多次读取操作之前,能够执行块604和606中的操作。目标存储器位置可以是存储器页面。在另一实施例中,目标存储器位置可以是部分页面、页面、页面数、块、块数和类似物或其任意组合。在一个实施例中,目标存储器位置可以是具有与参考存储器页面的属性类似的属性的存储器页面。在一个实施例中,过程600B在块608中执行单次读取操作,并且判定该操作是否导致发生读取错误。如果没有发生错误,则过程600B不执行多次读取。另一方面,如果发生一个或多个错误,则过程600B对目标存储器位置执行多次读取操作。例如,过程600B能够利用不同的电压阈值来若干次(例如,三次)地读取目标存储器页面中的每个单元。
过程600B转换到块610,其中其基于在块606中分配的概率值来确定所存储的数据。在一个实施例中,过程600B利用在块606中生成的LLR来对所存储的数据进行检测和解码。过程600B转换到块612,其中其将存储在目标存储器位置上的用户数据提供给主机系统110。任选地,在转换到块610之前,过程600B能够判定在读取目标存储器位置的同时是否发生一个或多个读取错误。任选的对读取错误的检查尤其适用于目标存储器位置被读取多次的情况。如果没有遇到读取错误,则过程600B能够转换到块612,其中其将存储在目标存储器位置上的用户数据返回到主机系统110。如果过程600B确定在读取目标存储器位置期间已经发生了一个或多个读取错误,则过程可以转换到块610。在一些实施例中,过程600B能够生成并且使用用于生成与执行对存储器位置的单次读取和多次读取对应的软决策信息的表格。例如,可以生成并且使用类似于表格400的多个表格。
图6C是示出了用于执行块612的操作(即,确定存储在目标存储器位置上的数据)的过程600C的流程图。在块612A中,过程600C通过再次对已经取得的数据应用检测来确定所存储的数据。例如,在块608中已经读取了存储的数据,并且基于概率值的检测和/或解码可以再次应用于该数据。另一方面,在块612B中,过程600C、600D可以再次读取存储在目标存储器位置上的数据,并且将检测和/或解码应用于再次读取的数据。在一个实施例中,过程600C试图在转换到块612B之前执行块612A中的操作,其中过程再次读取目标存储器位置。
图6D是示出了利用根据过程600A的已知训练数据或者使用已经成功解码的数据来读取存储数据的过程600D的流程图。在一个实施例中,过程600D对存储在诸如存储器页面的目标存储器位置上的数据进行检测和解码。在块620中,过程600D读取目标存储器位置。在块622中,过程600D判定在读取目标存储器位置的同时是否发生一次或多次读取错误。如果尚未遇到读取错误,则过程600D已经成功地对存储在目标存储器位置上的数据进行了检测和解码。过程600D转换到块632,在块632中所取得的数据被返回到主机系统110。
如果过程600D在块622中遇到一个或多个读取错误,则过程转换到块624和626,在这些块中执行与图6B的块604和608中执行操作相似的操作。过程600D随后转换到块628,在该块中,该过程对目标存储器位置执行多次读取操作。在一个实施例中,在过程执行块624和626的操作的同时,过程600D执行块628的操作。在另一实施例中,在过程执行块624和626的操作之前,过程600D执行块628的操作。过程600D转换到块630,在该块中基于在块626中分配的概率值和在块628中确定的多次读取值来确定存储在目标存储器位置上的数据。在块632中,该过程将取回的数据返回到主机系统。
图7是示出了根据本发明的另一实施例的读取所存储的数据的过程700的流程图。图示的过程可以由控制器130和/或数据存储与误差校正模块132来执行。在一个实施例中,过程700对存储在诸如存储器页面的存储器位置上的数据进行检测和解码,作为对多个存储器位置执行读取命令的部分。存储器位置可以是相邻的,例如连续的,或者可以随机地定位在存储器阵列150中。
在块702中,过程700对诸如存储器页面的第一存储器位置执行读取操作。过程700转换到块704,在该块中该过程对第一存储器位置执行多次读取操作并且确定多个数据模式。这些操作可以类似于如上所述的块604中执行的那些操作。过程700转换到块706,在该块中,该过程基于在块704中确定的数据模式来分配概率值。在一个实施例中,在块704中已经对存储在第一存储器位置上的数据进行成功地检测和解码。在块706中,过程700能够基于数据模式以及基于成功解码的数据(或已知数据)来分配概率值。在块706中执行的操作可以类似于如上所述在块606中执行的那些操作。
过程700转换到块708,在该块中,该过程利用在块706中分配的概率值来更新先前确定的概率值。在一个实施例中,过程700能够对多个存储器位置执行读取操作,并且,每当该过程对所存储的数据进行成功地解码和检测时,该过程都能够更新概率值,例如软决策数据(例如,LLR)。这样,最新的概率值用于对存储在当前被读取的存储器位置中的数据进行检测和/或解码。在另一实施例中,过程700在任何适当的时机,例如在对多个存储器位置进行了成功地检测和解码之后,更新概率值。
过程700转换到块710,在该块中,该过程读取第二存储器位置。在一个实施例中,第二存储器位置是作为第一存储器页面的近邻的第二存储器页面。在另一实施例中,第二存储器位置是存储器阵列150中的任意位置。利用更新的概率值来对第二存储器位置进行检测和解码。概率值可以是软决策数据,例如LLR。
在一个实施例中,过程700能够将存储在第一存储器位置上的被成功解码和/或检测的数据作为已知数据。这样,该过程不使用存储在存储器阵列150中的已知训练数据或者不依赖于从该数据取得的信息。在另一实施例中,除了被成功解码和/或检测的数据之外或者作为其替代,过程700使用已知的训练数据。
结论
公开的实施例能够用于估计存储在固态存储器阵列单元中的电荷量,而不需要在存储器阵列中安装额外的传感器、模数转换器等。增加这样的额外组件与存储器阵列的成本的增加和容量的降低相关联。对存储器单元执行多次读取操作以及基于读取操作的结果来计算概率能够提供用于对所存储的数据进行检测和解码的软决策信息。因此,改进了可靠性,提高了性能。
其他变型例
本领域的技术人员将理解的是,在一些实施例中,除了LDPC解码器之外和/或作为LDPC解码器的替代,可以使用其他适合的解码器。例如,能够使用turbo解码器、Hamming解码器、Reed-Solomon解码器、BCH解码器等等。除了LLR之外的或者连同LLR一起的软决策信息能够被生成并且提供给解码器。任何适当的方法,例如马尔科夫模型、隐马尔科夫模型、Viterbi算法、SBGTBCJR、log-mapBCJR、max-log-mapBCJR等能够用来取得软决策信息。除了单元间干涉之外或者作为单元间干涉的替代,本公开应用于考虑到针对以下特性中的一个或多个的统计值和/或概率值解码并且生成针对以下特性中的一个或多个的统计值和/或概率值,所述以下特性中的一个或多个为页面间干涉、块间干涉、P/E计数、磨损级别、工作温度,等等。用户数据能够涵盖由主机系统提供的数据、通过数据存储系统在内部生成的数据等、和/或其组合。在公开的过程中例如在图6A-6D和图7中所示的过程中所采取的实际步骤可以不同于图中所示的那些步骤。可以使用额外的系统组件,并且可以组合或省略公开的系统组件。根据实施例,可以去除上述一些步骤,添加其他步骤。因此,本公开的范围旨在仅参考随附的权利要求书来进行限定。
虽然已经描述了一些实施例,但是这些实施例仅通过示例的方式来提供,而不意在限制保护范围。事实上,本文所描述的新颖的方法和系统可以通过其他多种方式来实施。此外,本文所描述的方法和系统的形式上的各种省略、替代和改变可以在不偏离保护思想的情况下做出。随附的权利要求及其等同布置意在涵盖落入保护范围和保护思想内的这些形式或改进。例如,本文所公开的系统和方法能够应用于硬盘驱动器、混合硬盘驱动器等。此外,可以另外地或者可替代地使用其他存储形式(例如,DRAM或SRAM、电池备份的易失性DRAM或SRAM设备、EPROM、EEPROM存储器等)。作为另一示例,在图中示出的各组件可以被实现为处理器上的软件和/或固件、ASIC/FPGA、或专用硬件。而且,上述公开的具体实施例的特征和属性可以以多种方式组合而形成额外的实施例,所有这些都落在本公开的范围内。虽然本公开提供了一些优选的实施例和应用,但是对于本领域的普通技术人员而言显而易见的是其他实施例,包括没有提供本文阐述的所有特征和优点的实施例,也落在本公开的范围内。因此,本公开的范围旨在仅参考随附权利要求书来进行限定。
Claims (30)
1.一种数据存储系统,包括:
非易失性固态存储器阵列,其包括被配置为存储数据的多个存储器单元;以及
控制器,其被配置为:
在参考存储器单元上执行多个读取操作以获得多个数据模式;
至少部分地基于所述数据模式和所述参考存储器单元上的已知数据来分配概率值;以及
基于分配的概率值来确定存储在目标存储器单元中的数据。
2.如权利要求1所述的存储系统,其中,所述控制器进一步被配置为利用多个电压阈值来对所述参考存储器单元执行所述多个读取操作。
3.如权利要求1所述的存储系统,其中,所述控制器进一步被配置为基于所述数据模式的出现数目来分配所述概率值。
4.如权利要求3所述的存储系统,其中:
所述参考存储器单元存储位值X0至XN-1;以及
所述分配的概率值包括基于所述数据模式的出现数目确定的概率值,所述概率值:(1)与Xi相关联,以及(2)与包括Xi和与Xi相邻的一个或多个位值的位序列相关。
5.如权利要求1所述的存储系统,其中,所述控制器被配置为通过将BCJR算法或SOVA算法应用于所述分配的概率值来取得软信息。
6.如权利要求5所述的存储系统,其中,所述控制器被配置为利用取得的软信息来对存储在所述目标存储器单元上的数据进行解码。
7.如权利要求5所述的存储系统,其中,所述软信息包括对数似然比(LLR)。
8.如权利要求1所述的存储系统,其中,所述控制器进一步被配置为对所述目标存储器单元执行多个读取操作以确定存储在所述目标存储器单元中的数据。
9.如权利要求1所述的存储系统,其中,所述已知数据包括在读取所述目标存储器单元之前存储在所述参考存储器单元中的训练数据。
10.如权利要求1所述的存储系统,其中,所述目标存储器单元具有与所述参考存储器单元的一个或多个属性类似的一个或多个属性。
11.一种在包括非易失性固态存储器阵列和控制器的数据存储系统中读取数据的方法,所述非易失性固态存储器阵列具有被配置为存储数据的多个存储器单元,所述方法包括:
对参考存储器单元执行多个读取操作以获得多个数据模式;
至少部分地基于所述数据模式和所述参考存储器单元中的已知数据来分配概率值;
读取目标存储器单元;以及
基于分配的概率值来确定存储在所述目标存储器单元中的数据,
其中,所述方法是在所述控制器的控制下执行的。
12.如权利要求11所述的方法,其中,对所述存储器单元执行所述多个读取操作包括使用多个电压阈值。
13.如权利要求11所述的方法,还包括:基于所述数据模式的出现数目来分配所述概率值。
14.如权利要求13所述的方法,其中:
所述参考存储器单元存储位值X0至XN-1;以及
所述分配的概率值包括基于所述数据模式的出现数目确定的概率值,所述概率值:(1)与Xi相关联,以及(2)与包括Xi和与Xi相邻的一个或多个位值的位序列相关。
15.如权利要求11所述的方法,还包括:通过将BCJR算法或SOVA算法应用于所述分配的概率值来取得软信息。
16.如权利要求15所述的方法,还包括:利用所取得的软信息来对存储在所述目标存储器单元中的数据进行解码。
17.如权利要求15所述的方法,其中,所述软信息包括对数似然比(LLR)。
18.如权利要求11所述的方法,还包括:对所述目标存储器单元执行多个读取操作以确定存储在所述目标存储器单元中的数据。
19.如权利要求11所述的方法,其中,所述已知数据包括在读取所述目标存储器单元之前存储在所述参考存储器单元中的训练数据。
20.如权利要求11所述的方法,其中,所述目标存储器单元具有与所述参考存储器单元的一个或多个属性类似的一个或多个属性。
21.一种数据存储系统,包括:
非易失性固态存储器阵列,其包括被配置为存储数据的多个存储器单元;以及
控制器,其被配置为确定与存储在所述非易失性存储器阵列中的数据对应的对数似然比,所述控制器进一步被配置为:
对第一存储器单元执行多个读取操作,多个读取的数据值形成多个数据模式;
基于所述数据模式来分配概率值;
利用分配的概率值来更新多个先前确定的概率值;以及
利用更新的概率值来读取第二存储器单元。
22.如权利要求21所述的存储系统,其中:
所述第一存储器单元存储位值X1至XN;以及
所述分配的概率值包括基于所述数据模式的出现数目确定的概率值,所述概率值:(1)与Xi相关联,以及(2)与包括Xi和与Xi相邻的一个或多个位值的位序列相关。
23.如权利要求21所述的存储系统,其中,所述控制器进一步被配置为利用多个电压阈值来对所述第一存储器单元执行所述多个读取操作。
24.如权利要求21所述的存储系统,其中,所述第一存储器单元包括第一存储器页面,以及第二存储器单元包括与所述第一存储器页面相邻的第二存储器页面。
25.如权利要求21所述的存储系统,其中,所述控制器被配置为在不使用从存储于所述非易失性固态存储器阵列中的训练数据取得的信息的情况下来读取所述第二存储器单元。
26.一种在包括非易失性固态存储器阵列和控制器的数据存储系统中读取数据的方法,所述非易失性固态存储器阵列具有被配置为存储数据的多个存储器单元,所述方法包括:
对第一存储器单元执行多个读取操作,多个读取的数据值形成多个数据模式;
基于所述数据模式来分配概率值;
利用分配的概率值来更新多个先前确定的概率值;以及
利用更新的概率值来读取第二存储器单元,
其中,所述方法是在所述控制器的控制下执行的。
27.如权利要求26所述的方法,其中:
所述第一存储器单元存储位值X1至XN;以及
所分配的概率值包括基于所述数据模式的出现数目确定的概率值,所述概率值:(1)与Xi相关联,以及(2)与包括Xi和与Xi相邻的一个或多个位值的位序列相关。
28.如权利要求26所述的方法,还包括:利用多个电压阈值来对所述第一存储器单元执行所述多个读取操作。
29.如权利要求26所述的方法,其中,所述第一存储器单元包括第一存储器页面,以及第二存储器单元包括与所述第一存储器页面相邻的第二存储器页面。
30.如权利要求26所述的方法,其中,读取所述第二存储器单元包括在不使用从存储于所述非易失性固态存储器阵列中的训练数据取得的信息的情况下来进行读取。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/829,904 | 2013-03-14 | ||
US13/829,904 US8990668B2 (en) | 2013-03-14 | 2013-03-14 | Decoding data stored in solid-state memory |
PCT/US2014/023800 WO2014159470A1 (en) | 2013-03-14 | 2014-03-11 | Decoding data stored in solid-state memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105164649A true CN105164649A (zh) | 2015-12-16 |
CN105164649B CN105164649B (zh) | 2018-07-03 |
Family
ID=51533814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480021715.3A Expired - Fee Related CN105164649B (zh) | 2013-03-14 | 2014-03-11 | 对存储在固态存储器中的数据进行解码 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8990668B2 (zh) |
EP (1) | EP2972886A4 (zh) |
KR (1) | KR20150129325A (zh) |
CN (1) | CN105164649B (zh) |
HK (1) | HK1218008A1 (zh) |
WO (1) | WO2014159470A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107657984A (zh) * | 2017-08-16 | 2018-02-02 | 深圳市江波龙电子有限公司 | 闪存的纠错方法、装置、设备以及计算机可读存储介质 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9355716B2 (en) * | 2013-01-17 | 2016-05-31 | University Of Hawaii | Memory channel detector systems and methods |
US9202580B2 (en) * | 2013-01-30 | 2015-12-01 | Globalfoundries Inc. | Level-estimation in multi-level cell memory |
US9201729B2 (en) * | 2013-10-21 | 2015-12-01 | Seagate Technology, Llc | Systems and methods for soft data utilization in a solid state memory system |
US9640270B2 (en) * | 2014-08-12 | 2017-05-02 | Sandisk Technologies Llc | System and method of using multiple read operations |
US10374633B2 (en) * | 2016-07-08 | 2019-08-06 | Maxlinear, Inc. | Method and system for LDPC decoding |
TWI670717B (zh) * | 2016-09-13 | 2019-09-01 | 東芝記憶體股份有限公司 | 記憶裝置及記憶體系統 |
US11288009B2 (en) * | 2019-07-10 | 2022-03-29 | Micron Technology, Inc. | Read sample offset bit determination using most probably decoder logic in a memory sub-system |
EP4329202A1 (en) * | 2021-05-25 | 2024-02-28 | Samsung Electronics Co., Ltd. | Neural network-based self-correcting min-sum decoder and electronic device comprising same |
CN117854581B (zh) * | 2024-03-07 | 2024-05-24 | 合肥康芯威存储技术有限公司 | 一种存储器测试系统及存储器测试方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6731700B1 (en) * | 2001-01-04 | 2004-05-04 | Comsys Communication & Signal Processing Ltd. | Soft decision output generator |
US20090234792A1 (en) * | 2008-03-17 | 2009-09-17 | Samsung Electronics Co., Ltd. | Memory devices and data decision methods |
US20120079355A1 (en) * | 2010-09-27 | 2012-03-29 | Seagate Technology Llc | Opportunistic decoding in memory systems |
CN102568593A (zh) * | 2010-12-07 | 2012-07-11 | 慧荣科技股份有限公司 | 读取快闪存储器中储存数据的方法、存储器控制器与装置 |
Family Cites Families (95)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6980602B1 (en) | 2001-01-31 | 2005-12-27 | Comsys Communication & Signal Processing Ltd. | Normalization of equalizer soft output for channels with varying noise power |
US6856556B1 (en) | 2003-04-03 | 2005-02-15 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
US7237074B2 (en) * | 2003-06-13 | 2007-06-26 | Sandisk Corporation | Tracking cells for a memory system |
US7502256B2 (en) | 2004-11-30 | 2009-03-10 | Siliconsystems, Inc. | Systems and methods for reducing unauthorized data recovery from solid-state storage devices |
US7653778B2 (en) | 2006-05-08 | 2010-01-26 | Siliconsystems, Inc. | Systems and methods for measuring the useful life of solid-state storage devices |
WO2007132453A2 (en) * | 2006-05-12 | 2007-11-22 | Anobit Technologies Ltd. | Distortion estimation and cancellation in memory devices |
US7765373B1 (en) | 2006-06-27 | 2010-07-27 | Siliconsystems, Inc. | System for controlling use of a solid-state storage subsystem |
US8108692B1 (en) | 2006-06-27 | 2012-01-31 | Siliconsystems, Inc. | Solid-state storage subsystem security solution |
US7447807B1 (en) | 2006-06-30 | 2008-11-04 | Siliconsystems, Inc. | Systems and methods for storing data in segments of a storage subsystem |
US7509441B1 (en) | 2006-06-30 | 2009-03-24 | Siliconsystems, Inc. | Systems and methods for segmenting and protecting a storage subsystem |
US8161227B1 (en) | 2006-10-30 | 2012-04-17 | Siliconsystems, Inc. | Storage subsystem capable of programming field-programmable devices of a target computer system |
US8549236B2 (en) | 2006-12-15 | 2013-10-01 | Siliconsystems, Inc. | Storage subsystem with multiple non-volatile memory arrays to protect against data losses |
US7596643B2 (en) | 2007-02-07 | 2009-09-29 | Siliconsystems, Inc. | Storage subsystem with configurable buffer |
US7685337B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US7685338B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US7685374B2 (en) | 2007-07-26 | 2010-03-23 | Siliconsystems, Inc. | Multi-interface and multi-bus structured solid-state storage subsystem |
US8095851B2 (en) | 2007-09-06 | 2012-01-10 | Siliconsystems, Inc. | Storage subsystem capable of adjusting ECC settings based on monitored conditions |
US7800943B2 (en) * | 2008-01-18 | 2010-09-21 | Qimonda Ag | Integrated circuit having a memory cell arrangement and method for reading a memory cell state using a plurality of partial readings |
US8078918B2 (en) | 2008-02-07 | 2011-12-13 | Siliconsystems, Inc. | Solid state storage subsystem that maintains and provides access to data reflective of a failure risk |
US7962792B2 (en) | 2008-02-11 | 2011-06-14 | Siliconsystems, Inc. | Interface for enabling a host computer to retrieve device monitor data from a solid state storage subsystem |
US7733712B1 (en) | 2008-05-20 | 2010-06-08 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
WO2009143375A2 (en) | 2008-05-21 | 2009-11-26 | The Regents Of The University Of Calfornia | Lower-complexity layered belief propagation deconding ldpc codes |
KR101671313B1 (ko) | 2008-07-01 | 2016-11-01 | 엘에스아이 코포레이션 | 플래시 메모리 디바이스 판독 방법 및 시스템 |
US8458536B2 (en) | 2008-07-17 | 2013-06-04 | Marvell World Trade Ltd. | Data recovery in solid state memory devices |
US8375151B1 (en) | 2009-02-12 | 2013-02-12 | Siliconsystems, Inc. | Command portal for securely communicating and executing non-standard storage subsystem commands |
US8583835B1 (en) | 2008-08-06 | 2013-11-12 | Siliconsystems, Inc. | Command portal for executing non-standard storage subsystem commands |
US9176859B2 (en) | 2009-01-07 | 2015-11-03 | Siliconsystems, Inc. | Systems and methods for improving the performance of non-volatile memory operations |
US8090899B1 (en) | 2009-03-04 | 2012-01-03 | Western Digital Technologies, Inc. | Solid state drive power safe wear-leveling |
US10079048B2 (en) | 2009-03-24 | 2018-09-18 | Western Digital Technologies, Inc. | Adjusting access of non-volatile semiconductor memory based on access time |
US8418021B2 (en) | 2009-03-27 | 2013-04-09 | Mediatek Inc. | Storage controller with encoding/decoding circuit programmable to support different ECC requirements and related method thereof |
JP2011065599A (ja) | 2009-09-18 | 2011-03-31 | Toshiba Corp | メモリシステムおよびメモリシステムの制御方法 |
US8254172B1 (en) | 2009-09-30 | 2012-08-28 | Western Digital Technologies, Inc. | Wear leveling non-volatile semiconductor memory based on erase times and program times |
US8243525B1 (en) | 2009-09-30 | 2012-08-14 | Western Digital Technologies, Inc. | Refreshing non-volatile semiconductor memory by reading without rewriting |
US9753847B2 (en) | 2009-10-27 | 2017-09-05 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
US8261012B2 (en) | 2009-10-30 | 2012-09-04 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory comprising power fail circuitry for flushing write data in response to a power fail signal |
US8135903B1 (en) | 2009-10-30 | 2012-03-13 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory compressing data to improve performance |
US8397107B1 (en) | 2009-12-11 | 2013-03-12 | Western Digital Technologies, Inc. | Data storage device employing data path protection using both LBA and PBA |
US8443167B1 (en) | 2009-12-16 | 2013-05-14 | Western Digital Technologies, Inc. | Data storage device employing a run-length mapping table and a single address mapping table |
US8316176B1 (en) | 2010-02-17 | 2012-11-20 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification |
US8407449B1 (en) | 2010-02-26 | 2013-03-26 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table |
US8725931B1 (en) | 2010-03-26 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for managing the execution of memory commands in a solid-state memory |
US8713066B1 (en) | 2010-03-29 | 2014-04-29 | Western Digital Technologies, Inc. | Managing wear leveling and garbage collection operations in a solid-state memory using linked lists |
US8775913B2 (en) | 2010-03-31 | 2014-07-08 | Lsi Corporation | Methods and apparatus for computing soft data or log likelihood ratios for received values in communication or storage systems |
US8332728B2 (en) | 2010-04-02 | 2012-12-11 | Skymedi Corporation | Method and apparatus of generating a soft value for a memory device |
TWI436370B (zh) | 2010-09-17 | 2014-05-01 | Phison Electronics Corp | 記憶體儲存裝置、其記憶體控制器與產生對數似然比之方法 |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US9026716B2 (en) | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
US8341339B1 (en) | 2010-06-14 | 2012-12-25 | Western Digital Technologies, Inc. | Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk |
US8612669B1 (en) | 2010-06-28 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for performing data retention in solid-state memory using copy commands and validity and usage data |
US8447920B1 (en) | 2010-06-29 | 2013-05-21 | Western Digital Technologies, Inc. | System and method for managing data access in non-volatile memory |
US8521972B1 (en) | 2010-06-30 | 2013-08-27 | Western Digital Technologies, Inc. | System and method for optimizing garbage collection in data storage |
US8639872B1 (en) | 2010-08-13 | 2014-01-28 | Western Digital Technologies, Inc. | Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk |
US8775720B1 (en) | 2010-08-31 | 2014-07-08 | Western Digital Technologies, Inc. | Hybrid drive balancing execution times for non-volatile semiconductor memory and disk |
US8638602B1 (en) | 2010-09-10 | 2014-01-28 | Western Digital Technologies, Inc. | Background selection of voltage reference values for performing memory read operations |
US8769190B1 (en) | 2010-09-15 | 2014-07-01 | Western Digital Technologies, Inc. | System and method for reducing contentions in solid-state memory access |
US8788779B1 (en) | 2010-09-17 | 2014-07-22 | Western Digital Technologies, Inc. | Non-volatile storage subsystem with energy-based performance throttling |
US8612804B1 (en) | 2010-09-30 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for improving wear-leveling performance in solid-state memory |
US8464137B2 (en) * | 2010-12-03 | 2013-06-11 | International Business Machines Corporation | Probabilistic multi-tier error correction in not-and (NAND) flash memory |
US8601313B1 (en) | 2010-12-13 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for a data reliability scheme in a solid state memory |
US8601311B2 (en) | 2010-12-14 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory |
US8615681B2 (en) | 2010-12-14 | 2013-12-24 | Western Digital Technologies, Inc. | System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss |
US8549382B2 (en) | 2010-12-17 | 2013-10-01 | Intel Corporation | Storage drive with LDPC coding |
US8458435B1 (en) | 2010-12-20 | 2013-06-04 | Western Digital Technologies, Inc. | Sequential write thread detection |
US8392635B2 (en) | 2010-12-22 | 2013-03-05 | Western Digital Technologies, Inc. | Selectively enabling a host transfer interrupt |
US8683113B2 (en) | 2011-02-04 | 2014-03-25 | Western Digital Technologies, Inc. | Concurrently searching multiple devices of a non-volatile semiconductor memory |
US8700950B1 (en) | 2011-02-11 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for data error recovery in a solid state subsystem |
US8700951B1 (en) | 2011-03-09 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
US8693258B2 (en) * | 2011-03-17 | 2014-04-08 | Densbits Technologies Ltd. | Obtaining soft information using a hard interface |
US8769232B2 (en) | 2011-04-06 | 2014-07-01 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory module enabling out of order host command chunk media access |
US8862804B2 (en) | 2011-04-29 | 2014-10-14 | Western Digital Technologies, Inc. | System and method for improved parity determination within a data redundancy scheme in a solid state memory |
US8751728B1 (en) | 2011-04-29 | 2014-06-10 | Western Digital Technologies, Inc. | Storage system bus transfer optimization |
US9021178B2 (en) | 2011-05-02 | 2015-04-28 | Western Digital Technologies, Inc. | High performance path for command processing |
US8503237B1 (en) | 2011-05-18 | 2013-08-06 | Western Digital Technologies, Inc. | System and method for data recovery in a solid state storage device |
US8793429B1 (en) | 2011-06-03 | 2014-07-29 | Western Digital Technologies, Inc. | Solid-state drive with reduced power up time |
US8719531B2 (en) | 2011-06-14 | 2014-05-06 | Western Digital Technologies, Inc. | System and method for performing data retention that incorporates environmental conditions |
US9130596B2 (en) | 2011-06-29 | 2015-09-08 | Seagate Technology Llc | Multiuse data channel |
US8423722B1 (en) | 2011-08-26 | 2013-04-16 | Western Digital Technologies, Inc. | System and method for high performance command processing in solid state drives |
US8713357B1 (en) | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
US8700834B2 (en) | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
US8977803B2 (en) | 2011-11-21 | 2015-03-10 | Western Digital Technologies, Inc. | Disk drive data caching using a multi-tiered memory |
US8724422B1 (en) | 2012-02-29 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for charging back-up charge storage element for data storage device using spindle phase switching elements |
CN104205235B (zh) * | 2012-03-29 | 2017-08-08 | 英特尔公司 | 用于处理从非易失性存储器阵列检索的状态置信度数据的方法和设备 |
US9003224B2 (en) | 2012-04-25 | 2015-04-07 | Western Digital Technologies, Inc. | Managing unreliable memory in data storage systems |
US8788778B1 (en) | 2012-06-04 | 2014-07-22 | Western Digital Technologies, Inc. | Garbage collection based on the inactivity level of stored data |
US8966343B2 (en) | 2012-08-21 | 2015-02-24 | Western Digital Technologies, Inc. | Solid-state drive retention monitor using reference blocks |
US8788880B1 (en) | 2012-08-22 | 2014-07-22 | Western Digital Technologies, Inc. | Efficient retry mechanism for solid-state memory failures |
US9268682B2 (en) | 2012-10-05 | 2016-02-23 | Skyera, Llc | Methods, devices and systems for physical-to-logical mapping in solid state drives |
US8972826B2 (en) | 2012-10-24 | 2015-03-03 | Western Digital Technologies, Inc. | Adaptive error correction codes for data storage systems |
US9177638B2 (en) | 2012-11-13 | 2015-11-03 | Western Digital Technologies, Inc. | Methods and devices for avoiding lower page corruption in data storage devices |
US8954694B2 (en) | 2012-11-15 | 2015-02-10 | Western Digital Technologies, Inc. | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive |
US9021339B2 (en) | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9059736B2 (en) | 2012-12-03 | 2015-06-16 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
US20140223255A1 (en) | 2012-12-18 | 2014-08-07 | Western Digital Technologies, Inc. | Decoder having early decoding termination detection |
US9430376B2 (en) | 2012-12-26 | 2016-08-30 | Western Digital Technologies, Inc. | Priority-based garbage collection for data storage systems |
-
2013
- 2013-03-14 US US13/829,904 patent/US8990668B2/en active Active
-
2014
- 2014-03-11 KR KR1020157029007A patent/KR20150129325A/ko not_active Application Discontinuation
- 2014-03-11 CN CN201480021715.3A patent/CN105164649B/zh not_active Expired - Fee Related
- 2014-03-11 EP EP14773380.2A patent/EP2972886A4/en not_active Withdrawn
- 2014-03-11 WO PCT/US2014/023800 patent/WO2014159470A1/en active Application Filing
-
2016
- 2016-05-24 HK HK16105885.9A patent/HK1218008A1/zh unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6731700B1 (en) * | 2001-01-04 | 2004-05-04 | Comsys Communication & Signal Processing Ltd. | Soft decision output generator |
US20090234792A1 (en) * | 2008-03-17 | 2009-09-17 | Samsung Electronics Co., Ltd. | Memory devices and data decision methods |
US20120079355A1 (en) * | 2010-09-27 | 2012-03-29 | Seagate Technology Llc | Opportunistic decoding in memory systems |
CN102568593A (zh) * | 2010-12-07 | 2012-07-11 | 慧荣科技股份有限公司 | 读取快闪存储器中储存数据的方法、存储器控制器与装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107657984A (zh) * | 2017-08-16 | 2018-02-02 | 深圳市江波龙电子有限公司 | 闪存的纠错方法、装置、设备以及计算机可读存储介质 |
CN107657984B (zh) * | 2017-08-16 | 2020-09-22 | 深圳市江波龙电子股份有限公司 | 闪存的纠错方法、装置、设备以及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US8990668B2 (en) | 2015-03-24 |
HK1218008A1 (zh) | 2017-01-27 |
EP2972886A4 (en) | 2016-11-23 |
US20140281128A1 (en) | 2014-09-18 |
EP2972886A1 (en) | 2016-01-20 |
WO2014159470A1 (en) | 2014-10-02 |
CN105164649B (zh) | 2018-07-03 |
KR20150129325A (ko) | 2015-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105164649A (zh) | 对存储在固态存储器中的数据进行解码 | |
US11074125B2 (en) | Data storage system and method for decoding data based on extrapolated flipped-bit data | |
TWI613674B (zh) | 在具有選擇性二元及非二元解碼之快閃記憶體中之偵測及解碼 | |
KR101466270B1 (ko) | 비휘발성 메모리 시스템 및 그것의 데이터 처리 방법 | |
US9471421B2 (en) | Data accessing method, memory storage device and memory controlling circuit unit | |
US9990247B2 (en) | Write mapping to mitigate hard errors via soft-decision decoding | |
EP2946386B1 (en) | Determining soft data using a classification code | |
US10484008B2 (en) | Memory system with on-the-fly error detection and termination and operating method thereof | |
US9411679B2 (en) | Code modulation encoder and decoder, memory controller including them, and flash memory system | |
US20160350179A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
WO2009072103A2 (en) | Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated bch codes and/or designation of 'first below' cells | |
CN102203877A (zh) | 使用解码器性能反馈的用于存储器器件的软数据生成的方法和装置 | |
CN104052498A (zh) | 最优化对数似然比的方法以及纠错方法和设备 | |
KR20160090054A (ko) | 플래시 메모리 시스템 및 그의 동작 방법 | |
US11630722B2 (en) | Method and system for decoding data based on association of first memory location and second memory location | |
JP6730215B2 (ja) | メモリコントローラ、メモリシステムおよび制御方法 | |
US10884858B2 (en) | LDPC decoding device, memory system including the same and method thereof | |
US8448048B2 (en) | Flash memory device and related programming method | |
US11770133B1 (en) | Exact ber reporting in the presence of CRC termination | |
CN112331244B (zh) | 广义低密度奇偶校验码的软输入软输出分量代码解码器 | |
US9619317B1 (en) | Decoder having early decoding termination detection | |
Motwani et al. | Soft decision decoding of RAID stripe for higher endurance of flash memory based solid state drives | |
KR102513782B1 (ko) | 컨트롤러 및 그것의 동작 방법 | |
US10528496B2 (en) | Controller and operating method thereof | |
Tokutomi et al. | Advanced error-prediction LDPC with temperature compensation for highly reliable SSDs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1218008 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180703 Termination date: 20190311 |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1218008 Country of ref document: HK |