具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
LDPC码最初是一种针对深空通信、微波传输等典型通信信道设计的纠错方式。与BCH直接将接收到的逻辑信息作为输入进行计算的方式不同,LDPC码以接收端逻辑信息的概率为基础进行纠错。由于LDPC码能够充分利用接收的信道信息,大幅提高信息的利用率,并且可以实现以迭代方式进行译码,从而带来更加良好的性能增益,其理论上具备了接近于香农容限的纠错能力。
为了方便计算,LDPC纠错方式将信道接收端逻辑比特的对数似然比(LogLikelihood Ratio,LLR)作为输入。LLR而也被称为信道的软信息,其具体定义为:
其中,xi为信道发射端的发送数据,yi为信道接收端所获取的数据。LDPC码通过利用LLR,对变量节点和校验结点进行多次迭代的方式,不断更新结点信息,直到译码结果或者得到正确的校验结果。
然而,LDPC码的有效使用必须以准确的对数似然比(LLR)为前提。而在闪存应用环境下,对闪存软信息的提取还面临着障碍。LDPC纠错编码设计之初就是针对典型的通信应用环境。计算LLR的条件概率P(xi=+1|yi)以及P(xi=-1|yi)可以通过对信道信息的多重采样方式实现。而闪存器件的采样及量化工作全部由其内部电路完成,闪存控制器只能读取到经由闪存器件内部量化处理后的硬判决信息。这种由逻辑‘0’和逻辑‘1’构成的数据序列,是无法直接作为LDPC纠错计算的输入信号。这种障碍并不是由于LDPC码算法本身的成熟度不够所导致,而是由于应用环境的限制造成。因此,为闪存器件寻找一种有效的软信息提取方式成为LDPC码在固态存储应用中亟需解决的问题。
本发明即针对闪存器件的上述问题展开。固态存储中的闪存器件目前有SLC(Single-Level Cell)、MLC(Multi-Level Cell)以及TLC(Triple-Level Cell)三种类型的器件。本发明可适用于这三类闪存器件,以下描述中将以MLC类型的闪存作为典型进行说明。
如图2所示,MLC闪存器件存储数据的过程实际上可以抽象为通信信道模型。对闪存器件写入数据对应于信道的发射端;从闪存器件读取数据则对应于信道的接收端。数据从写入到读出,会分别经过交织、编程、噪声干扰、量化读取以及解交织的过程。
从外部写入的数据首先经过MLC闪存器件的交织操作,从而将临近的多个逻辑页混淆到物理上不相邻的存储单元中,以降低编程过程中的耦合干扰。在完成交织后,闪存器件将根据数据的逻辑对存储单元进行编程操作,逻辑数据对浮栅中的模拟电压进行编程(Program)。此时,受寄生效应的影响,编程后的模拟电压会受到加性噪声的干扰而产生变化。当闪存控制器开始读取数据时,闪存首先将对模拟电压进行量化读取;得到离散化的逻辑数据后,再进行解交织操作,将其还原为逻辑页上的数据。
信道中的加性噪声是导致比特翻转的直接原因,本发明首先对MLC闪存器件展开先验性试验。通过对闪存器件的擦写循环循环操作主要用来获取数据错误率与闪存擦写循环之间的关系,准确获取信道噪声随着闪存损耗及环境变化的先验性规律,此外,本发明还将逐步建立闪存器件擦除时间、物理块位置等相关特征值与数据错误率之间的关联性,从而为准确感知MLC闪存器件内部软信息作为参考。
在闪存器件信道模型及先验性试验的基础上,本发明进一步地解决了如何在闪存器件的使用过程中,感知其内部软信息的问题。从闪存器件外部只能获取经过量化后的离散信息,不能直接用于LDPC解码计算。因此,本发明利用先验性实验所获取的信息来预估接收数据的错误率,从而计算出数据的软信息。
因此,本发明在先验性试验的基础上,选取以擦除时间、物理块位置、擦写循环次数等外部特征量;利用监督学习策略,选取训练样本,测试样本,建立观测特征量与物理状态之间的关联;从而帮助闪存控制器在运行过程中感知闪存物理块的状况,计算出精确的软信息。进一步的研究将包括三个方面:闪存器件物理状态的分类、物理状态的识别以及在运行过程中利用物理状态预估错误率的方法。
闪存器件物理状态的分类的研究主要是从先验性试验所得到的擦除时间、物理块位置、擦写循环次数等数据中,构建出物理块的状态分类集合Si。通过这种方式可以将物理块连续的使用过程划分为离散的物理状态,从而更加清晰地分析这些物理状态与数据错误率之间的关联性。
在此基础上,本发明进一步地从物理状态中预估数据错误率。本发明使用监督学习的方式:首先利用收集的数据选择训练集,然后采用监督学习的方式,通过测试训练集合,构造针对闪存状态的识别器,实现对闪存物理块状态的识别与感知。此外,本发明结合闪存信道模型利用识别出的物理状态实现对闪存的错误率的动态预估机制,从而完成由物理状态到预估错误率的转化。这样通过训练学习最终可以构建起对闪存物理块物理状态的感知和预估机制。
本发明是一种为LDPC纠错模块提供快速、准确的软信息感知的方法。如图1所示,本发明闪存器件软信息的提取过程主要分为离线训练与在线运行两大部分。
在离线状态下,第一步需要对目标闪存器件进行先验性实验,采集数据。测试内容包括对闪存器件内部物理块的存储单元进行大量重复的擦除、写入以及读出操作,从而记录闪存器件在其测试周期内的错误特性以及物理块位置、擦写循环次数、擦除时间等主要外部特征量。
在第一步先验性实验完成后,本发明将开始进行数据集训练,建立闪存内部存储单元物理状态与外部特征量之间的关联。其中,将擦写循环次数作为模型的时间参考系,在闪存器件的寿命周期内,可以将器件的物理特性随擦写循环次数的变化视为一个时间序列。而擦除时间具有随着擦写次数的增长、物理块的损耗而增加的特性,作为本发明主要参考特征。本发明将利用擦除时间的变化规律将闪存物理状态的变化划分为若干物理状态。本发明使用隐马尔可夫模型,对物理状态的变化进行建模,从而实现利用观测序列对闪存物理状态的识别。设S是闪存在工作寿命期间所有可能物理状态的集合,E是所有可以观测的物理块擦除时间集合:
S={S1,S2…SN},E={E1,E2…EM}
其中,N是可能的状态数,M是可能的观测数。当闪存器件在使用的过程中,可以得到相应的状态序列I,以及相对应的观测序列O:
I={i1,i2…iT},O={o1,o2…oT}
隐马尔可夫模型γ由初始概率向量π、状态转移概率矩阵A和观测概率矩阵B这三要素共同确定,即γ=(A,B,π)。其中,物理块的转移概率矩阵A为:
A=[αij]N×N
αij=P(it+1=Sj|it=Si)
αij表示在擦写循环数为t时,闪存物理块处于Si状态的条件下,在擦写循环数为t+1时转移到Sj的概率。
对于观测概率矩阵B为:
B=[bj(k)]N×N
其中
bj(k)=P(ot=Ek|it=Sj),k=1,2,…,M;j=1,2,…,N
bj(k)表示在时刻t时,当闪存物理块处于状态Sj,出现擦除时间Ek的概率。与观测概率矩阵B相对应的初始概率向量π为:
π=(πi)
πi=P(i1=Si),i=1,2,…,N
这样通过转移概率矩阵A、观测概率矩阵B和初始概率向量π可以确定隐马尔可夫模型。为了能够实现对闪存状态的预估,本发明将首先进行先验实验,而后根据先验实验的结果收集训练集合,得到观测序列和对应状态序列,而后使用监督学习的方法对转移概率矩阵A、观测概率矩阵B以及初始概率向量π进行参数计算。
对于转移概率αij,本发明统计在擦写循环数为t时处于状态i,在擦写循环数为t+1时处于状态j的频数Aij,那么对状态转移概率αij的估计是:
此外,可以将统计样本中物理状态为j,而观测的擦除时间状态为k的频数Bjk。从而可以估算出当物理状态为j时观测到擦除时间状态为k的概率bj(k):
而对于初始概率向量π的估计,可以从先验测试中对物理块的初始状态的频率进行统计即可。对于转移概率矩阵A,还可以根据物理块的位置信息,调整相关的权重,从而保证状态转移概率αij对不同物理块的适用性。
在确定隐马尔可夫模型γ的相关概率参数后,本发明将计算在条件概率P(I|O)下观测序列的最大状态序列I={i1,i2,…,iT},即求出闪存物理块最有可能的状态序列。假设当闪存物理块处于擦写循环t时,相应的物理状态为qi的概率μt(i)为
其中,αt(i)和βt(i)分别为隐马尔可夫模型γ的前向概率和后向概率。因此,闪存物理块在处于擦写循环t时最有可能的状态为:
此外,通过选取不同位置的物理块,进行多次测试和数据集训练,能够使得关联模型更加准确。
在经过离线训练阶段以后,本发明将对正在在线运行的闪存物理状态进行识别,进而预估错误率,并完成软信息的计算,最终输入到纠错模块进行纠错计算。
具体来说,当闪存器件在实际使用过程中,本发明将观察物理块位置、擦写循环次数、擦除时间等主要特征量根据特征量以及通过离线数据集训练得到的隐马尔可夫模型,识别出闪存物理块损耗状况。
在计算得到闪存物理块所处的物理状态后,可以利用理论模型计算出在当前物理状态下的条件概率。如图2所示,对于MLC闪存器件,其写入数据对应于信道的发射端;从闪存器件读取数据则对应于信道的接收端。数据从写入到读出,会分别经过交织、编程、噪声干扰、量化读取以及解交织的过程。从外部写入的数据首先经过MLC闪存器件的交织操作,从而将临近的多个逻辑页混淆到物理上不相邻的存储单元中,以降低编程过程中的耦合干扰。在完成交织后,闪存器件将根据数据的逻辑对存储单元进行编程操作,逻辑数据对浮栅中的模拟电压进行编程(Program)。此时,受寄生效应的影响,编程后的模拟电压会受到加性噪声的干扰而产生变化。当闪存控制器开始读取数据时,闪存首先将对模拟电压进行量化读取;得到离散化的逻辑数据后,再进行解交织操作,将其还原为逻辑页上的数据。
因此,根据以上MLC闪存器件的结构特性,假设MLC闪存物理存储单元的电压状态为xi(xi∈X,X={x0,x1,x2,x3}),从闪存芯片中读出的逻辑值通过解交织运算得到的电压状态为yj(yj∈Y,Y={y0,y1,y2,y3}),则在闪存芯片运行的过程中以物理块为单位统计,当物理存储单元所保存的电压状态为xi时,其通过交织解交织运算所得到的该物理存储单元的电压状态为yj的概率P(yj|xi)。P(yj|xi)表征了闪存信道中噪声对数据信息的干扰,利用贝叶斯公式分别计算出当通过解交织运算所得到的闪存物理电压状态为yj时,其存储单元所保存的物理电压状态为xi的概率P(xi|yj);xi分别为x0、x1、、x3时P(xi|yj)概率分别为:
其中,P(x0)、P(x1)、P(x2)以及P(x3)分别为闪存中记录电压状态x0、x1、x2、x3的先验概率;P(yj|x0)、P(yj|x1)、P(yj|x2)以及P(yj|x3)则进一步地由神经网络预估得到。
为了能够完成对错误率的预估工作,本发明使用Elman神经网络进行预估。Elman神经网络是一种典型的动态神经网络,通过其内部存储状态,使得神经网络可以具备映射动态特征的功能,可以较好地对闪存的错误率进行预估。如图3所示,Elman神经网络的结构可以分为输入层、隐含层、承接层以及输出层。
其中,ω3为隐含层到输出层的连接权值;ω2为承接层到隐含层的连接权值;ω1输入层到隐含层的连接权值。权值的初值可以由先验性实验根据不同的物理状态予以设定。Elman神经网络的非线性状态空间表达式为:
y(k)=g(ω3*x(k))
x(k)=f(ω1*xc(k))+ω2*(u(k-1))
xc(k)=x(k-1)
其中,y为m维输出结点向量;x为n维隐含层结点向量;u为r维输入向量;xc为n维反馈状态向量;f(x)和g(x)分别为神经单元的传递函数。本发明将使用预处理后的物理块位置、擦除次数以及条件概率概率P(xi|yj)作为该网络的输入向量,这样可以通过对训练数据的学习迭代,使得Elman神经网络实现对错误率的预估。
在完成相关的预估工作后,本发明根据解交织运算的映射关系,计算出数据信息的对数似然比(Log Likelihood Ratio),从而得到接收数据的软信息;当闪存控制器接收到的闪存物理状态为yj(yj∈Y,Y={y0,y1,y2,y3})时,对应MSB(高位)和LSB(低位)逻辑值的对数似然比可通过以下公式得到:
最终,所得到的LLR计算结果将作为LDPC纠错计算的输入,从而实现了对闪存物理块软信息的获取,有效降低了不可纠错的概率,延长了闪存器件在固态存储设备中的寿命。此外,在在线运行过程中,物理状态的识别以及错误预估与LDPC纠错共同构成负反馈机制,从而对预估结果进行控制,提高对闪存软信息感知的准确性。
如图4所示,根据以上所描述的方法,本发明可以进一步地设计为相关硬件模块,集成进闪存控制器中。本发明将分为物理状态识别模块、错误预估模块以及软信息计算模块,配合成熟的LDPC纠错模块,共同完成纠错工作。其中,物理状态识别模块主要用于采集闪存物理块的位置信息、擦除时间、擦写次数以及上一轮数据的实际错误率,并根据离线得到的数据模型,计算出当前物理块的闪存损耗状态。而错误预估模块将通过闪存损耗状态以及用户输入的误判控制目标建立相关的神经网络,并预估出相关物理块在下一轮操作中的错误率给软信息计算模块。当有新数据输入时,软信息计算模块将相关预估错误率代入计算,从而得到LLR信息,并最终交付给LDPC模块进行纠错。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。