基于互信息的LDPC译码方法与装置与流程

文档序号:15022697发布日期:2018-07-25 01:25阅读:266来源:国知局
本申请涉及低密度奇偶校验码(LowDensityParityCheckCode,LDPC)译码方法与装置,更具体地,本申请涉及基于互信息获取用于LDPC软译码的软信息。
背景技术
:LDPC码是一种错误校正码,与其他错误校正相比,在相同的码率下,LDPC码具有纠错能力强、收敛速度快的特点,因此是现阶段SSD(固态驱动器,SolidStateDrive)控制器领域最佳的错误校正码。LDPC码是一种二进制分组码,采用超稀疏矩阵作为校验矩阵。校验矩阵中每行(每列)中非零元素稀少。对于任何合法的码字V,码字V与校验矩阵H的乘积为零。常见的LDPC译码算法包括:置信传播算法(BeliefPropagation,BP),最小和算法(Min-Sum)和比特反转算法(BitFlip)等。而最小和算法和基于最小和算法的改进算法由于其硬件实现简单,且具有足够好的纠错性能在SSD控制器领域被广泛采用。LDPC译码包括硬译码与软译码,在软译码中译码器利用软信息(也称为软比特度量)进行迭代译码。为获得软信息,通过使用多个不同的判决电压从存储单元的读出数据,利用多次读出数据的结果获得诸如对数似然比(LLR,LogarithmicLikelihoodRatio)的软信息。在一些NVM芯片中,可以指定在读操作中所使用的判决电压。一些闪存芯片,提供了“读重做”(Read-Retry)技术或命令。通过为读操作指示不同的参数,来选择读操作时所使用的阈值电压。技术实现要素:为获得软信息,需要使用不同的判决电压从存储单元读出数据。这也增加了读出数据的次数、数据吞吐量、占用了闪存通道带宽、增加了获取数据的时间并消耗了更多的功率。需要降低从存储单元读出数据的次数,并获得最优或较优的软信息。因而需要识别出能够获得最优或较优软信息的数据读出方式的组合或判决电压的组合。本申请基于如下的基本思路:1,有N个处理过程组合Ti;2,随机变量X经过某个处理过程组合Ti处理得到随机变量Y,计算此时随机变量X和随机变量Y的互信息Mi;3,找到最大的互信息Mi,以及与其对应处理过程组合Ti;4,认为Ti是最有利于从随机变量Y中恢复随机变量X的处理过程组合。根据本申请第一方面,提供了根据本申请第一方面的第一获得处理过程组合的方法,其中所述处理过程组合用于获得错误校正软译码的软信息,包括:利用多个处理过程从NVM芯片获得多组数据;计算每组数据与NVM芯片中存储的数据的互信息,得到多个互信息;找到所述多个互信息中具有最大值的最大互信息;以及记录得到所述最大互信息的处理过程的组合。根据本申请第一方面的第一获得处理过程组合的方法,提供了根据本申请第一方面的第二获得处理过程组合的方法,其中,多组数据的每组数据包括一份或多份数据,每份数据是由所述多个处理过程之一从NVM芯片中读出的数据。根据本申请第一方面的第一或第二获得处理过程组合的方法,提供了根据本申请第一方面的第三获得处理过程组合的方法,其中多组数据的每组数据包括一份或多份数据,每份数据是对由所述多个处理过程之一从NVM芯片中读出的数据进行错误校正译码得到的数据。根据本申请第一方面的第一获得处理过程组合的方法,提供了根据本申请第一方面的第四获得处理过程组合的方法,其中多组数据的每组数据包括一份或多份数据,每份数据是由具有不同参数的读命令从NVM芯片中读出的数据。根据本申请第一方面的第一或第四获得处理过程组合的方法,提供了根据本申请第一方面的第五获得处理过程组合的方法,其中多组数据的每组数据包括一份或多份数据,每份数据是对由具有不同参数的读命令从NVM芯片中读出的数据进行错误校正译码得到的数据。根据本申请第一方面的第一获得处理过程组合的方法,提供了根据本申请第一方面的第六获得处理过程组合的方法,其中多组数据的每组数据包括一份或多份数据,每份数据是由具有不同参数的读命令从NVM芯片中读出的数据;以及所述多组数据包括由普通读命令从NVM芯片中读出的一份数据。根据本申请第一方面的第一或第六获得处理过程组合的方法,提供了根据本申请第一方面的第七获得处理过程组合的方法,其中多组数据的每组数据包括一份或多份数据,每份数据是对由具有不同参数的读命令从NVM芯片中读出的数据进行错误校正译码得到的数据;以及所述多组数据包括对由普通读命令从NVM芯片中读出的数据进行错误校正译码得到的一份数据。根据本申请第一方面的第一到第七获得处理过程组合的方法的任一项,提供了根据本申请第一方面的第八获得处理过程组合的方法,其中,所述多组数据的每组数据包括指定份数的数据。根据本申请第一方面的第一到第八获得处理过程组合的方法的任一项,提供了根据本申请第一方面的第九获得处理过程组合的方法,其中计算每组读出数据与NVM芯片中存储数据的互信息包括:对于所述每组读出数据中的第一组读出数据,统计读出数据的每个符号与NVM芯片中存储数据的每个符号的联合概率;计算代表读出数据的符号的随机变量Y的信息熵;计算代表NVM芯片中存储数据的符号的随机变量X的信息熵;计算随机变量X与随机变量Y的联合信息熵;计算随机变量X的信息熵与随机变量Y的信息熵的和,与随机变量X与随机变量Y的联合信息熵的差,得到第一组读出数据与NVM芯片中存储数据的互信息。根据本申请第一方面的第九获得处理过程组合的方法的任一项,提供了根据本申请第一方面的第十获得处理过程组合的方法,其中计算每组读出数据与NVM芯片中存储数据的互信息还包括:依据读出数据的每个符号与NVM芯片中存储数据的每个符号的联合概率,计算读出数据的每个符号的边缘概率,以及NVM芯片中存储数据的每个符号的边缘概率;依据读出数据的每个符号的边缘概率,计算代表读出数据的符号的随机变量Y的信息熵;以及依据NVM芯片中存储数据的每个符号的边缘概率,计算代表NVM芯片中存储数据的符号的随机变量X的信息熵。根据本申请第一方面的第一到第十获得处理过程组合的方法的任一项,提供了根据本申请第一方面的第十一获得处理过程组合的方法,其中所述NVM芯片中存储的数据,是NVM芯片的指定类型的物理页中存储的数据。根据本申请第一方面的第一到第十一获得处理过程组合的方法的任一项,提供了根据本申请第一方面的第十二获得处理过程组合的方法,其中所记录的处理过程的组合不包括利用普通读命令的处理过程。根据本申请第二方面,提供了根据本申请第二方面的第一译码方法,包括:利用所记录的处理过程的组合从NVM芯片获取第一组数据;将所述第一组数据提供给译码器进行软译码;其中所述处理过程的组合根据本申请第一方面提供的所述方法的任一项得到。根据本申请的第三方面,提供了根据本申请第三方面的第一译码方法,包括:利用普通读命令从NVM芯片中读出第一数据;若对第一数据的错误校正译码失败,利用所记录的处理过程的组合从NVM芯片获取第一组数据;将所述第一组数据提供给译码器进行软译码;其中所述处理过程的组合根据本申请第一方面提供的所述方法的任一项得到。根据本申请的第四方面,提供了根据本申请第四方面的第一译码方法,包括:利用普通读命令从NVM芯片中读出第一数据;若对第一数据的错误校正译码失败,利用所记录的处理过程的组合从NVM芯片获取第一组数据;将所述第一数据与所述第一组数据提供给译码器进行软译码;其中所述处理过程的组合根据本申请第一方面提供的所述方法的任一项得到。根据本申请的第四方面的第一译码方法,提供了根据本申请第四方面的第二译码方法,其中所述第一组数据不包括利用普通读命令从NVM芯片中读出的数据。根据本申请的第二方面、第三方面、第四方面提供译码方法,提供了根据本申请第四方面的第三译码方法,包括:从所述第一组数据获取NVM芯片中存储数据的软信息,并对所述软信息进行软译码。根据本申请的第二方面、第三方面、第四方面提供译码方法,提供了根据本申请第四方面的第四译码方法,其中所述译码器是LDPC译码器、Turbo码译码器或极化码译码器。根据本申请的第五方面,提供了根据本申请第五方面的第一获得处理过程组合的装置,其中所述处理过程组合用于获得错误校正软译码的软信息,所述装置包括:数据获取模块,用于利用多个处理过程从NVM芯片获得多组数据;互信息计算模块,用于计算每组读出数据与NVM芯片中存储的数据的互信息,得到多个互信息;最大互信息获取模块,用于找到所述多个互信息中具有最大值的最大互信息;以及记录模块,用于记录得到所述最大互信息的处理过程的组合。根据本申请的第六方面,提供了根据本申请第六方面的第一译码装置,包括:数据获取模块,用于利用所记录的处理过程的组合从NVM芯片获取第一组数据;软译码模块,用于将所述第一组数据提供给译码器进行软译码;其中所述处理过程的组合根据本申请第五方面的第一获得处理过程组合的装置得到。根据本申请的第七方面,提供了根据本申请第七方面的第一译码装置,包括:第一数据获取模块,用于利用普通读命令从NVM芯片中读出第一数据;第二数据获取模块,用于若对第一数据的错误校正译码失败,利用所记录的处理过程的组合从NVM芯片获取第一组数据;软译码模块,用于将所述第一组数据提供给译码器进行软译码;其中所述处理过程的组合根据本申请第五方面的第一获得处理过程组合的装置得到。根据本申请的第八方面,提供了根据本申请第八方面的第一译码装置,包括:第一数据获取模块,用于利用普通读命令从NVM芯片中读出第一数据;第二数据获取模块,用于若对第一数据的错误校正译码失败,利用所记录的处理过程的组合从NVM芯片获取第一组数据;软译码模块,用于将所述第一数据与所述第一组数据提供给译码器进行软译码;其中所述处理过程的组合根据本申请第五方面的第一获得处理过程组合的装置得到。根据本申请的第九方面,提供了根据本申请第九方面的第一固态存储设备,包括,控制器、译码器与非易失存储器;响应于来自信息处理设备的读命令,所述控制器用于利用所记录的处理过程的组合从非易失存储器获取第一组数据;以及所述控制器用于将所述第一组数据提供给所述译码器进行软译码。根据本申请的第十方面,提供了根据本申请第十方面的第一固态存储设备,包括,控制器、译码器与非易失存储器;响应于来自信息处理设备的读命令,所述控制器用于利用普通读命令从非易失存储器中读出第一数据;响应于所述译码器指示对第一数据的错误校正译码失败,所述控制器用于利用所记录的处理过程的组合从NVM芯片获取第一组数据;以及所述控制器用于将所述第一组数据提供给所述译码器进行软译码。附图说明当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本发明以及优选的使用模式和其进一步的目的和优点,其中附图包括:图1是根据本申请实施例的系统的示意图;图2是根据本申请实施例的获得优选处理过程组合的流程图;图3是根据本申请又一实施例的系统的示意图;以及图4是根据本申请实施例的译码过程的流程图。具体实施方式图1是根据本申请实施例的系统的示意图。数据x被写入到NVM芯片110中。通过一种或多种处理过程,从NVM芯片110中读出被写入的数据。在图1中,作为举例,示出了三种读过程(读过程141、读过程142与读过程143),以及通过读过程141读出的数据记为y1,读过程142读出的数据记为y2,读过程143读出的数据记为y3。在图1的例子中,每种读过程之间的差异在于使用了不同的判决电压,或者使用了具有不同参数的读重做命令。通过三种读过程读出的数据(y1,y2,y3)被提供给ECC(错误校正码)译码部件120,用于生成软信息,并基于软信息进行错误校正译码。包括LDPC(低密度奇偶校验码)、Turbo码、Polar(极化)码等多种错误校正编码可利用软信息进行译码。本申请的实施例,可应用于这些可利用软信息译码的错误校正编码。以及虽然在图1的实施例中,使用3种读过程获得3种读出数据,并用于获取软信息,可以理解地,可以使用1种、2种、4种以及其他数量的读过程来获取软信息。在图1中,用于读出数据(y1、y1与y1)的三种读过程,构成一个读过程的组合。以及还计算被写入NVM芯片110的数据与由读过程的组合处理得到的数据的互信息。依据已知的被写入NVM芯片110的数据x,以及从NVM芯片110中通过读过程组合读出的数据(例如,y1,y2与y3),在互信息计算模块130中计算互信息(MI,Mutual-Information)。以及计算其他读过程的组合的互信息。并比较由读过程的多种组合获得的多个互信息。选择互信息最大的读过程组合用来获取软信息,从而提高错误校正译码的成功率。图2是根据本申请实施例的处理过程的流程图。图2所示的实施例的一个目的在于获得具有最大互信息的处理过程的组合。在步骤210,利用多种处理过程从NVM芯片中获得多组数据。以从NVM芯片中读取数据为例,有多种用于读出数据的处理过程。作为举例,参数为r的读重做是从NVM芯片中读出数据的处理过程之一。读重做的参数r有例如3种不同的取值(例如r1,r2,r3),那么表1中展示了用于读出数据的处理过程的7种组合,每种组合可由所采用的读重做的参数取值的组合来表示。并且,处理过程的每种组合中,可具有不同参数和/或不同数量的处理过程。通过处理过程的每组组合,从NVM芯片中读出了多组数据。参看表1,用y指示读出的数据,y的下标与读重做的参数r的下标相对应。下标为i的读出数据yi是由参数为具有相同下标i的读重做读出的。在步骤220,计算每组读出数据与NVM芯片中存储数据的互信息,得到多个互信息。作为举例,对于一组读出数据y1,计算包括数据y1的组与NVM芯片中存储数据x的互信息。在另一个例子中,对于一组读出数据y1与y2,计算包括读出数据y1与y2的组与NVM芯片中存储数据x的互信息。后文中,将通过举例的例子描述互信息的计算方法。为获得数据x,向NVM芯片中写入的数据可以是已知的数据x。作为另一个例子,即使数据x未知,从NVM芯片110读出数据y1、y2和/或y3后,利用ECC部件120(参看图1)对读出数据y1、y2和/或y3进行错误校正译码,以得到向NVM芯片中写入的数据x。在步骤230,对基于每组读出数据计算出的互信息,找到多个互信息中的值最大的互信息(最大互信息)。以及在步骤240,确定得到最大互信息的处理过程组合(例如,参数分别为r1,r2,r3的读重做的组合)。一般而言,包含更多的处理过程的组合,将得到更大的互信息。在根据本发明的实施例中,对于处理过程的组合,按其中包含的处理过程的数量分类,并对每一数量类别,确定具有最大互信息的处理过程组合(例如,表1中,处理过程组合有3类,分别包括1个处理过程、2个处理过程与3个处理过程)。在步骤240,获得了能得到最大互信息的处理过程组合。接下来,在需要利用软信息进行软译码时,使用在步骤240中获得的具有最大互信息的处理过程组合来从NVM芯片中获得一组读出数据,是有利的。在步骤250,利用步骤240中获得的具有最大互信息的处理过程组合(例如,参数分别为r1,r2,r3的读重做的组合)来从NVM芯片中获得一组读出数据。以及在步骤260,将步骤250中获得的一组读出数据提供给LDPC译码器,用于获取软信息并进行软译码。可以理解地,步骤250与步骤260还可应用于诸如Turbo码、Polar(极化)码等能利用软信息的错误校正译码过程。表1处理过程组读出数据r1y1r2y2r3y3r1,r2y1,y2r1,r3y1,y3r2,r3y2,y3r1,r2,r3y1,y2,y3在根据本申请的实施例中,步骤210到步骤240的实施与步骤250到步骤260的实施可发生在不同的时间和/或地点。例如,步骤210到步骤240在产品(固态硬盘、NVM芯片、控制器芯片、ECC译码器等)的研究/开发阶段,而步骤250到步骤260在用户使用产品时被实施。步骤240所得到的具有最大互信息的处理过程组合,可被记录在固态存储设备的NVM芯片中。或者通过诸如程序代码或电路使固态存储设备的控制模块在要实施软译码时,应用步骤240所得到的具有最大互信息的处理过程组合。作为又一种实施方式,步骤210到步骤260在邻近的时间发生。从而固态存储设备在运行时通过执行步骤210到步骤240来获取具有最大互信息的处理过程组合,并在随后需要进行软译码时通过执行步骤250与步骤260来使用所获取的处理过程组合。下面描述互信息的获取过程。在根据本申请的实施例中,通过多种处理过程T处理随机变量X,处理的结果作为随机变量Y,并依据公式(1)与(2)计算X与Y的互信息I(X,Y)。H(X)=-∑x∈Xp(x)log2p(x)(1)I(X,Y)=H(X)+H(Y)-H(X,Y)(2)随机变量X表示原始数据,例如写入NVM中的数据。随机变量Y表示对随机变量X经过处理过程T得到的数据,例如从NVM芯片读出的数据。作为举例,X代表写入NVM芯片的原始数据,而处理过程T是参数为r的读重做,Y代表从NVM芯片读出的数据。H(X)是随机变量X的信息熵,由X的边缘概率计算(公式(1));H(Y)是随机变量Y的信息熵,由Y的边缘概率计算(公式(1)),H(X,Y)是随机变量X与Y的联合信息熵,H(X,Y)=-∑(x,y)∈(X,Y)p(x,y)log2p(x,y)。x是随机变量X的一个可能的值(也称为符号)。y是随机变量Y的一个可能的值(也称为符号)。p(x)是x的边缘概率,x∈X,p(y)是y的边缘概率,y∈Y。p(x,y)是x和y同时出现的概率(x与y的联合概率)。作为举例,若X代表写入NVM芯片的原始数据,在NVM芯片中存储的数据的可能取值为“0”和“1”,而从NVM芯片中读出数据的可能取值为“0”和“1”。从而{“0”,”1”}是x/y的取值集合。表2在表2中,x0与x1是随机变量X的两个可能取值,而y0,y1,…,yn是分别由多个处理过程T之一处理随机变量X的一个取值所得到的值。而表2中p(x0,y0)表示x0与y0同时出现的概率(x0与y0的联合概率)。通过对随机变量X与Y的统计,构造出表2,并依据公式(1)与(2)计算X与Y的互信息I(X,Y)。表3展示了在一个例子中对随机变量X与Y的统计。随机变量X的取值x代表在NVM芯片存储的1比特信息,随便变量Y的取值y代表依据特定的处理过程(例如,参数为0的读重做)处理x所得到的结果。对NVM芯片存储的信息用参数为0的读重做进行多次读取,以构建表3。经过多次实验,得到当NVM芯片中存储了数据“0”时(x取值为0),读出数据为“0”的次数有999次,当NVM芯片中存储了数据“0”时,读出数据为“1”的次数有1次,当NVM芯片中存储了数据“1”(x取值为1)时,读出数据为“0”的次数有2次,当NVM芯片中存储了数据“1”时,读出数据为“1”的次数有998次。而总计实验次数为2000(999+1+998+2)次。表3y\x010999211998从表3中的实验结果,能够得到x和y同时出现的概率p(x,y)(x和y的联合概率),p(0,0)=999/2000,p(0,1)=2/2000,p(1,0)=1/2000,p(1,1)=998/2000。接下来,计算p(x)和H(X):p(0)=p(0,0)+p(0,1),p(1)=p(1,0)+p(1,1),以及H(X)=-p(0)log2p(0)-p(1)log2p(1)。接下来,计算p(y)和H(Y)以及H(X,Y):p(0)=p(0,0)+p(1,0),p(1)=p(0,1)+p(1,1),H(Y)=-p(0)log2p(0)-p(1)log2p(1),以及H(X,Y)=-p(0,0)log2p(0,0)-p(0,1)log2p(0,1)-p(1,0)log2p(1,0)-p(1,1)log2p(1,1)。以及能够计算出以参数为0的读重作进行处理时,X与Y的互信息I(X,Y)=H(X)+H(Y)-H(X,Y)。对每种读重做作为处理过程,对NVM芯片中存储的数据x进行读取,得到读出数据y,并计算在读重做处理过程Ti下,X与Y的互信息ITi(X,Y)。构建表3所需的统计实验可以在固态存储设备交付使用之前在实验室中进行,也可在固态存储设备的使用中进行。可选地,在得到表3,计算出互信息I(X,Y)之后,可以继续对X与Y进行统计,以更新表3以及相应的互信息I(X,Y)。可以理解地,为构建表3,并得到互信息I(X,Y),需要就处理过程Ti,获得(x,y)的所有可能取值的统计信息(x与y的联合概率)。结合表4,描述根据本申请又一例子的互信息获取过程。表4展示了在一个例子中对随机变量X与Y的统计。随机变量X的取值x代表在NVM芯片存储的1比特信息,随便变量Y的取值y代表依据参数为0的读重做与参数为1的读重做两次处理x所得到的结果(分别由r0与r1表示)。对NVM芯片存储的信息用参数为0的读重做与参数为1的读重进行多次读取,以构建表4。经过多次实验,得到当NVM芯片中存储了数据“0”(x取值为0)时,通过两次读重做读出数据为“00”的次数有999次,当NVM芯片中存储了数据“0”时,通过两次读重做读出数据为“01”的次数有1次,通过两次读重做读出数据为“10”的次数有a次,通过两次读重做读出数据为“11”的次数有b次。表4中还示出了当NVM芯片中存储了数据“1”时,通过两次读重做读出的不同y取值的次数。以及总计次数为表3中数值部分各项的和。以及,从表4中的统计数据,能够计算x与y同时出现的概率p(x,y)(x与y的联合gai率)。并得到x的边缘概率p(x),随机变量X的信息熵H(X),y的边缘概率p(y),随机变量Y的信息熵H(Y),并得到以参数为0的读重做与参数为1的读重做两次读数据的处理过程组合Tr0r1下,X与Y的互信息ITr0r1(X,Y)。对于其他处理过程,例如以参数为1的读重做与参数为2的读重做两次读数据的处理过程组合Tr1r2,以参数为0的读重做与参数为2的读重做两次读数据的处理过程组合T01r2,以参数为1的读重做一次读数据的处理过程(组合)Tr1等,能够分别计算出每个处理过程组合下,X与Y的互信息。表4互信息体现了随机变量X与随机变量Y的相关性。互信息越高,代表Y与X的相关性越强。选择多个处理过程中,得到最大互信息的处理过程组合,作为在获取软信息时所采用的处理过程组合。从该处理过程组合中能够获得更多的信息,并提高软译码的成功率。可选地,在多个可能的处理过程组合中进行选择,而抛弃复杂度过高、代价过大的处理过程组合。例如对于从NVM芯片中读出数据的处理过程组合,在进行软译码时,将使用读重做读取数据的次数限制为小等于3次。从而在读重做有m种参数的情况下,可选的处理过程组合有(从m种参数的读重做中,选择任意3种读出数据)(从m种参数的读重做中,选择任意2种读出数据)(从m种参数的读重做中,选择任意1种读出数据)种。在另一个例子中,指定选择的处理过程组合中包括用参数为0的读重做(普通读命令)读数据的过程(可选地,还包括用其他参数值的读重做读数据的过程),从而在进行软译码时能够利用硬译码阶段所获取的数据。在根据本申请图3的实施例中,处理过程包括从NVM芯片读出数据,以及对读出的数据进行错误校正译码。在图3的实施例中,数据x被写入到NVM芯片310中。通过一种或多种处理过程,从NVM芯片310中读出被写入的数据。在图3中,作为举例,示出了三种读过程(读过程341、读过程342与读过程343),以及通过读过程341读出的数据记为y4,读过程342读出的数据记为y5,读过程343读出的数据记为y6。在图3的例子中,每种读过程之间的差异在于使用了不同的判决电压,或者使用了具有不同参数的读重做命令。通过三种读过程读出的数据(y4,y5,y6)被分别提供给ECC(错误校正码)译码部件320,经过错误校正译码,分别得到输出数据y4’、y5’与y6’。可以理解的,为进行ECC译码,提供给ECC部件320的输入是(包括多个比特的)码字,而并非1比特信息。而在根据本申请的实施例中,为了清楚的目的,数据x、数据y均为包含在码字中的例如1比特信息。通过从NVM芯片310读出码字c,由ECC模块320对码字c进行译码,并得到码字c的每个比特(x)在译码后的结果(y)。根据本申请的一个实施方式,ECC模块320对码字c的译码可能失败,此时ECC模块320依然会提供码字c的译码结果c’。虽然译码结果c’中存在错误,但其中的各个比特依然是依据本申请可选实施方式得到的处理结果(y)。依据被写入NVM芯片310的数据x,以及从NVM芯片310中通过不同读过程读出并经ECC模块320译码得到的数据(y4’,y5’与y6’),在互信息计算模块330中计算被写入NVM芯片310的数据与从NVM芯片310读出并经ECC模块320译码得到的数据的互信息(MI,Mutual-Information)。在图3中,用于读出数据(y4、y5与y6)的三种读过程,构成一个读过程的组合。以及还计算被写入NVM芯片310的数据与由其他读过程的组合(不同于图3中的三种读过程的组合)处理得到的数据的互信息。并比较由读过程的多种组合获得的多个互信息。选择互信息最大的读过程组合来用于获取软信息,从而提高错误校正译码的成功率。通过三种读过程读出的数据(例如,y1,y2,y3)被提供给ECC(错误校正编码)部件120,还用于生成软信息,并基于软信息进行错误校正译码。以及虽然在图3的实施例中,使用3种读过程获得3种读出数据,并用于获取互信息与软信息,可以理解地,可以使用1种、2种、4种以及其他数量的读过程的组合来获取软信息。表5y=r0r1r2\x0100099920011998010C(0,010)C(1,010)100C(0,100)C(1,100)101C(0,101)C(1,101)110C(0,110)C(1,110)111C(0,111)C(1,111)结合表5,描述根据本申请又一例子的互信息获取过程。表5展示了在一个例子中对随机变量X与Y的统计。随机变量X的取值x代表在NVM芯片存储的1比特信息,随便变量Y的取值y代表依据参数为0的读重做、参数为1的读重以及参数为2的读重做三次处理x所得到的结果分别再经ECC译码得到的结果(分别由r0、r1与r2表示)。对NVM芯片存储的信息用参数为0的读重做、参数为1的读重以及参数为2的读重做进行多次读取,并经过ECC译码,以构建表5。表5中,表格项C(0,010)表示在多次实验中,当NVM芯片中存储了(1比特)数据“0”(x取值为0)时,通过三次读重做对x读出数据并经ECC译码得到“010”的次数有C(0,010)次。以及总计的实验次数为表5中数值部分各项的和。以及,从表5中的统计数据,能够计算x与y同时出现的概率p(x,y)。并得到x的边缘概率p(x),随机变量X的信息熵H(X),y的边缘概率p(y),随机变量Y的信息熵H(Y),并得到以参数为0的读重做、参数为1的读重做与参数为2的读重做三次读数据并分别经ECC译码的处理过程组合Tr0r1r2下,X与Y的互信息ITr0r1r2(X,Y)。对于其他处理过程组合,例如以参数为1的读重做与参数为2的读重做两次读数据并分别经ECC译码的处理过程组合Tr1r2,以参数为0的读重做与参数为2的读重做两次读数据并分别经ECC译码的处理过程组合T01r2,以参数为1的读重做一次读数据并经ECC译码的处理过程组合Tr1等,能够分别计算出每个处理过程组合下,X与Y的互信息。在根据本申请的又一实施例,在不同场景下,获取由处理过程的多种组合处理NVM芯片中的数据得到的结果与NVM芯片中存储的数据的互信息。例如,对于MLC(Multi-LevelCell)类型的NVM芯片或物理页,区分每个存储单元(Cell)中的两个比特(例如,MSB(MostSignificantBit,最高有效位)与LSB(LeastSignificantBit,最低有效位))。在获取互信息时,随机变量X仅代表来自MSB的数据或LSB的数据,而避免既包括来自MSB的数据又包括来自LSB的数据。类似地,对于TLC(Triple-LevelCell)类型的NVM芯片或物理页,在获取互信息时,区分每个存储单元(Cell)中的3个比特。在根据本申请的实施例中,识别得到了最大互信息的处理过程的组合,例如处理过程组合T。或者,在处理过程的组合的集合中,识别得到了最大互信息的处理过程组合,例如处理过程组合Ts。在固态存储设备中记录处理过程组合T或处理过程组合Ts。依据本申请的又一实施例,在使用固态存储设备中,例如响应于收到主机发给固态存储设备的读命令,固态存储设备对读命令进行处理。图4是根据本发明实施例的固态存储设备处理IO命令的流程图。为处理读命令,依据本申请实施例的固态存储首先应用参数为0的读重做(也称为“普通读命令”)从NVM芯片的指定地址读出数据(410)。对读出的数据进行ECC译码。若ECC硬译码成功(420),得到正确的读出数据用于响应读命令。若ECC硬译码失败(420),利用所记录的具有最大互信息的处理过程组合T或处理过程组合Ts,从NVM中获取数据(430)。作为举例,处理过程组合T或处理过程组合Ts是例如用参数为1的读重做与参数为2的读重做两次从NVM中读出数据。在另一个例子中,处理过程组合Ts为用参数为0的读重做、参数为1的读重做与参数为2的读重做三次从NVM芯片中读出数据。由于在步骤410中使用的普通读命令(即,参数为0的读重做),在步骤430中,仅用参数为1的读重做与参数为2的读重做两次从NVM芯片中读出数据,以及再次使用在步骤410中利用普通读命令从NVM芯片读出的数据。并将步骤410中读出的数据与步骤430中两次读出的数据组合成通过处理过程组合Ts从NVM芯片中三次读出的数据,从而省去一次从NVM芯片中读出数据的过程。以及有利的是,在获取处理过程组合Ts中,使处理过程组合Ts包括用参数为0的读重做从NVM芯片中读出数据的处理过程,从而在译码过程中,能够利用步骤410所获取的数据。接下来,将用处理过程组合T或处理过程组合Ts读出的数据送给ECC模块进行ECC软译码。在根据本申请的实施例中,由于获得了具有最大互信息的处理过程组合T或处理过程组合Ts,用处理过程组合T或处理过程组合Ts得到的数据在软译码中有较高或最高的成功率。因而在ECC硬译码失败时(420),不再用具有各个参数的读重做尝试从NVM芯片读出数据,而是直接采用处理过程组合T或处理过程组合Ts从NVM芯片中读出数据,并进行软译码。从而省去了搜索具有各个参数的读重做中读出的数据能被正确译码的读重做的过程,降低了ECC硬译码失败(420)后的错误处理时间,提高了固态存储设备处理读命令的性能,也降低了功耗。在依据本申请的又一实施例中,在识别出利用普通读命令将遇到较高译码失败几率的情况下,省去步骤410与步骤420,而响应于来自主机或用户的读命令,直接利用处理过程组合T或处理过程组合Ts从NVM芯片获取数据,并对获取的数据进行软译码。以进一步降低处理延迟并提升效率。为进行ECC软译码,将由处理过程组合T或处理过程组合Ts的到的数据送给ECC译码部件(例如,图3的ECC译码部件320),根据输入数据计算其对数似然比(LLR,LogLikelihoodRatio)。ECC译码部件中提供LLR表。用输入数据作为索引,在LLR表中查询得到与输入数据对应的对数似然比,并依据对数似然比作为软信息并进行软译码。除依据现有技术的方案得到LLR表,在根据本申请的实施例中,还提供了获得LLR表的方法。作为举例,处理过程组合Ts包括用参数为a的读重做、参数为b的读重做与参数为c的读重做从NVM芯片中读出数据。对于NVM芯片中存储的1比特,三次读重做分别读出3个比特。在表6中,用“比特2”、“比特1”与“比特0”分别代表读出的3个比特,其值分别为“RRb”、“RRa”与“RRc”。表6比特2比特1比特0RRbRRaRRc表7展示了在根据本申请的例子中对NVM芯片中存储的数据(x)与用处理过程组合Ts读出的数据(y)的统计。表7中的数据项p(x,y)是x和y同时出现的概率(x与y的联合概率)。以及表7中还展示了用p(x,y)计算的到的LLR表。表7中,LLR(011)与LLR(100)的值为0,而LLR(n)=ln(p(0,n)/p(1,n))。其中n为比特序列(RRb,RRa,RRc),或者比特序列(RRb,RRa,RRc)的十进制表示。以及可选地,为LLR(n)的取值提供上限值与下限值。若计算出的ln(p(0,n1)/p(1,n1))大于上限值,则将LLR(n1)设置为上限值。以及若计算出的ln(p(0,n2)/p(1,n2))小于下限值,则将LLR(n2)设置为下限值。表7可由软件、硬件、固件、FPGA(现场可编程门阵列,FieldProgrammableGateArray)和/或ASIC(应用专用集成电路,ApplicationSpecificIntegratedCircuit)等实现根据本发明实施例的LDPC译码方法。以及根据本发明实施例的LDPC译码方法可应用于基于NVM芯片的固态存储设备,包括但不限于固态硬盘、U盘、SD卡,还可以应用于手机、平板电脑等便携式电子设备,以及其他多种使用NVM芯片(诸如NAND闪存)的需要存储信息的电子设备。根据本发明实施例的译码方法还可应用于通信、磁存储、光存储等使用错误校正码的设备或服务。虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本发明的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本发明的范围。这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本发明的很多修改和其他实施方式。因此,应该理解,本发明不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1