
本发明涉及固态硬盘
技术领域:
,特别是涉及一种基于ssd数据保护的ldpc译码方法、装置、计算机设备和存储介质。
背景技术:
:目前,ldpc(low-densityparity-check,低密度奇偶校验)是ssd中常用的ecc算法,包含harddecoder和softdecoder,其目的均在于把出错的数据恢复回来。在传统技术中,softdecoder需要从nandflash中读取更多信息,从而使带宽成倍的下降,严重影响ssd的读性能,所以在实际的使用过程中,希望可以通过提升harddecoder的性能以支持更广的rber区间来提升带宽,以实现增加纠错性能的稳定性。技术实现要素:基于此,有必要针对上述技术问题,提供一种可以提高译码效率的基于ssd数据保护的ldpc译码方法、装置、计算机设备和存储介质。一种基于ssd数据保护的ldpc译码方法,所述方法包括:获取基于ssd数据保护的ldpc译码请求;根据所述基于ssd数据保护的ldpc译码请求在ssd开始读取数据后,将ldpc模块打开;根据rber的大小自适应选择相应的初始llr和最小影响因子,并开始进行ldpc译码;判断译码是否成功;若译码成功则送出数据,若译码不成功则根据当前译码器的迭代情况重新选择最小影响因子并重新开始进行ldpc译码。在其中一个实施例中,所述ldpc模块包括:选择器,所述选择器用于获取并选择rberflag或者译码器迭代情况的flag;查找表电路,所述查找表电路与所述选择器连接用于存放llr和最小值影响因子;乘法位移电路,所述乘法位移电路与查找表电路连接用于根据查找表电路的查找结果进行乘法运算。在其中一个实施例中,所述ldpc模块用于:通过rberflag作为查找表的读取地址获得对应的查找表结果用于初始llr的选择和最小值计算的影响因子选择。在其中一个实施例中,所述ldpc模块还用于:根据译码器迭代情况的flag来查找相应的最小值影响因子来调整最小值的计算结果。一种基于ssd数据保护的ldpc译码装置,所述基于ssd数据保护的ldpc译码装置包括:获取模块,所述获取模块用于获取基于ssd数据保护的ldpc译码请求;ldpc模块,所述ldpc模块用于根据所述基于ssd数据保护的ldpc译码请求在ssd开始读取数据后,将ldpc模块打开;译码模块,所述译码模块用于根据rber的大小自适应选择相应的初始llr和最小影响因子,并开始进行ldpc译码;判断模块,所述判断模块用于判断译码是否成功;执行模块,所述执行模块用于若译码成功则送出数据,若译码不成功则根据当前译码器的迭代情况重新选择最小影响因子并重新开始进行ldpc译码。在其中一个实施例中,所述ldpc模块包括:选择器,所述选择器用于获取并选择rberflag或者译码器迭代情况的flag;查找表电路,所述查找表电路与所述选择器连接用于存放llr和最小值影响因子;乘法位移电路,所述乘法位移电路与查找表电路连接用于根据查找表电路额查找结果进行乘法运算。在其中一个实施例中,所述ldpc模块用于:通过rberflag作为查找表的读取地址获得对应的查找表结果初始llr的选择和最小值计算的影响因子选择。在其中一个实施例中,所述ldpc模块还用于:根据译码器迭代情况的flag来查找相应的最小值影响因子来调整最小值的计算结果。一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。上述基于ssd数据保护的ldpc译码方法、装置、计算机设备和存储介质,通过获取基于ssd数据保护的ldpc译码请求;根据所述基于ssd数据保护的ldpc译码请求在ssd开始读取数据后,将ldpc模块打开;根据rber的大小自适应选择相应的初始llr和最小影响因子,并开始进行ldpc译码;判断译码是否成功;若译码成功则送出数据,若译码不成功则根据当前译码器的迭代情况重新选择最小影响因子并重新开始进行ldpc译码。本发明能够自适应选取初始llr以及计算最小值的影响因子,在不同的rber情况下,选择不同的初始llr值和计算最小值的影响因子,另外译码器迭代过程中也可以根据迭代情况,选择不同的最小值计算的影响因子,从而提高译码的纠错性能,进而提高ssd的数据恢复能力,改善ssd的使用生命周期。附图说明图1为一个实施例中基于ssd数据保护的ldpc译码方法的流程示意图;图2为一个实施例中基于ssd数据保护的ldpc译码方法中ldpc模块的结构示意图;图3为一个实施例中优化后ldpc译码流程图;图4为一个实施例中优化前后译码纠错模式与rber的关系图;图5为一个实施例中优化后的最小值计算单元硬件实现电路图;图6为一个实施例中基于ssd数据保护的ldpc译码装置的结构框图;图7为一个实施例中计算机设备的内部结构图。具体实施方式为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。ldpc是目前ssd中常用的ecc算法,包含harddecoder和softdecoder,其目的均在于把出错的数据恢复回来。但是softdecoder需要从nandflash中读取更多信息,从而使带宽成倍的下降,严重影响ssd的读性能,所以在使用中希望提升harddecoder的性能以支持更广的rber区间来提升带宽,增加纠错性能的稳定性。为了提升harddecoder译码的性能,一方面可以通过寻找最优读电压的位置改善颗粒的出错率,另一方面就需要根据颗粒的数据出错特性来自适应选择相应的初始llr和最小值影响因子,从而达到改善ldpc译码纠错性能的目的。本发明主要是针对harddecode译码方式进行优化,提出一种用于ssd数据保护的ldpc译码优化方案,优化的方案能够自适应选取初始llr以及计算最小值的影响因子。由于ssd中nandflash颗粒的数据出错特性,在不同的rber情况下,选择不同的初始llr值和计算最小值的影响因子,另外译码器迭代过程中也可以根据迭代情况,选择不同的最小值计算的影响因子,从而提高译码的纠错性能,进而提高ssd的数据恢复能力,改善ssd的使用生命周期。在一个实施例中,如图1所示,提供了一种基于ssd数据保护的ldpc译码方法,该方法包括:步骤102,获取基于ssd数据保护的ldpc译码请求;步骤104,根据基于ssd数据保护的ldpc译码请求在ssd开始读取数据后,将ldpc模块打开;步骤106,根据rber的大小自适应选择相应的初始llr和最小影响因子,并开始进行ldpc译码;步骤108,判断译码是否成功;步骤110,若译码成功则送出数据,若译码不成功则根据当前译码器的迭代情况重新选择最小影响因子并重新开始进行ldpc译码。参考图3,在本实施例中,首先获取基于ssd数据保护的ldpc译码请求,根据该请求的具体内容在ssd读数据开始后,将ldpc纠错模块打开,根据rber的大小自适应选取相应的初始llr和最小值影响因子,然后开始ldpc译码,如果译码成功,则送出数据;如果译码不成功,根据当前译码器的迭代情况重新选择最小值计算的影响因子,重新进行译码,而不需要修改读参考电压重新从nand中读取数据进行readretry的译码方式,优化后的ldpc译码流程能够提高译码纠错能力,降低错误平层,从而很好的改善ssd的读数据效率。具体地,下面将对本实施例提出的方案进行更详细说明。首先,初始llr和提高计算最小值精度是改善ldpc译码器性能的重要因素,初始llr代表着数据外信息的可靠性,而计算出精确的最小值,可以大大提高译码的成功率,同时也会大大提高译码效率,降低译码的迭代次数。根据对数似然比的bp算法,其更新校验节点信息的计算方式如公式(1)所示。式中,i表示变量节点的下标,而j表示校验节点的下标,l为当前迭代次数,表示变量节点i传播给校验节点j的信息量,γji表示校验节点j传递给变量节点i的信息量,l(·)表示取对数似然比。由于tanh(x)、tanh-1(x)是奇函数,具有如下性质tanh(x)=sgn(x)·tanh(|x|),tanh-1(x)=sgn(x)·tanh-1(|x|),因此公式(1)可以化简得到:由于tanh(|x|)在[0,1)之间,且是单调递增函数,从而可以将式(2)计算简化:结合公式(2)和公式(3)可以得到:公式(4)是对llr-bp算法的简化,与llr-bp算法相比性能有所降低,与此同时因为初始llr值对迭代过程中最小值的计算不会产生影响,故而ms算法会丢失信道的初始估计信息,通常情况下会在公式(4)的基础上乘以一个影响因子来逼近这个近似计算的结果,如果这个影响因子能够根据信道信息自适应改变,即加入信道外信息来改善译码性能,本实施例采用这种优化方案通过信道外信息来改变计算最小值的影响因子,从而更加逼近llr-bp算法,改善纠错性能,降低错误平层。原先的ldpc硬件设计时会将初始llr和最小值影响因子固定为某一特定值,随即硬件电路就不会根据真实的颗粒读写情况进行调整。而在本实施例中,通过多组llr和影响因子的值来覆盖更多码字,使其原本不可纠的码字通过另外的组合纠正回来,这样可以改善译码器的纠错性能,而且提高ssd的读写性能。此外,由于ssd的读写性能在不同的生命周期有着不同的rber,数据读操作越多,读nand颗粒比特出错的概率就越大,即rber也越大,导致ldpcharddecode方式纠不回来的概率也会变大,这样就需要选择readretry或者softbit方式来译码,但这种译码方式会大大降低读数据的效率,因此需要进一步提高harddecode方式的译码性能。随着颗粒rber的增加,本身读出数据的可靠性会逐渐降低,因此初始llr值需要重新计算调整,另外校验节点的最小值计算就需要更为精确,从而需要改变计算最小值的影响因子来进一步提升纠错能力。优化采用的方案可以通过rber的大小以及译码器内部迭代情况来选择不同的llr和影响因子来达到提升译码性能的目的。优化的方案如下表所示:rber≦3.0*10^-3≦6.0*10^-3≦8.0*10-3……llrl1l2l3……最小值影响因子α1α2α3……上表中rber代表原始比特出错率,其代表的是ssd在不同读数据生命周期内数据出错的概率,可以分为多个不同的阶段,分别有对应的译码方式。在rber≦3.0*10^-3时,表示llr和最小值的影响因子可以选用组合{l1,α1}来进行译码计算,利用harddecode译码方式基本可以覆盖所有码字;而当rber≦6.0*10^-3时,harddecode方式不能覆盖所有出错的码字,需要采用readretry方式进行译码,对应的初始llr和最小值影响因子可以选用组合{l2,α2};而当rber≦8.0*10-3时,harddecode和readretry方式都不同完成所有数据的恢复,就需要借助更多信息的softdecode方式来进行译码恢复,并且选择{l3,α3}的组合来配置初始llr和最小值影响因子。当然,不同的rber还可以有其他不同的组合来选择。进一步说明,在译码器进行数据恢复的过程中如果出现比特翻转震荡的情况,同样也可以根据译码迭代的情况进行自适应选择影响因子,来改善由于量化精度导致的不可纠正的情况,从而降低错误平层。优化后harddecode方式可以覆盖更大的rber错误范围,同样readretry也可以覆盖更大的rber错误范围,这样译码器整体可以支持更大的rber出错范围,因此可以提高整体的译码性能和译码效率。如图4所示,优化前后根据不同rber选用不同的译码纠错模式,优化后的harddecode模式可以在更大的rber错误范围工作,如图中h~h'这段区间,原本需要readretry的方式来进行译码,现在只需要harddecode的方式就可以完成数据恢复,这样可以大大提高译码器的效率,readretry方式的译码性能也会有很大的改善,同时也可以减少readretry的次数。可以理解的,本实施例中所述方案中给出的优化方案只是一种推荐的情况,针对ldpc译码过程中的迭代状态进行类似的变形都是基于本实施例给出方案的变形,如根据译码迭代次数、每次迭代的比特翻转情况等。在本实施例中,根据ssd中颗粒的数据出错特性,由于ssd读数据出错的概率在不同的生命周期是不一样的,即rber是不一样的,利用这一特点创造性地提出一种自适应选择ldpc译码器的初始llr和获取最小值影响因子的方法,能够利用较小的硬件代价,达到提高译码性能和效率的作用。另外在译码过程中自适应的调整影响因子,可以改善译码迭代过程中由于量化精度的原因导致出现数据不可纠正的情况,进而降低错误平层,提高ssd读性能。在一个实施例中,提供了一种基于ssd数据保护的ldpc译码方法,如图2所示,该方法中的ldpc模块200包括:选择器201,用于获取并选择rberflag或者译码器迭代情况的flag;查找表电路202,查找表电路202与选择器201连接用于存放llr和最小值影响因子;乘法位移电路203,乘法位移电路203与查找表电路202连接用于根据查找表电路的查找结果进行乘法运算。在其中一个实施例中,ldpc模块200用于:通过rberflag作为查找表的读取地址获得对应的查找表结果用于初始llr的选择和最小值计算的影响因子选择。在其中一个实施例中,ldpc模块200还用于:根据译码器迭代情况的flag来查找相应的最小值影响因子来调整最小值的计算结果。具体地,参考图5,优化后的电路增加一组选择器(mux),另外还需要增加一个存放llr和最小值影响因子的查找表电路(lut),而乘法移位电路(mul)也需要稍作调整。硬件电路主要是通过rberflag作为查找表的读取地址获得对应的查找表结果用于乘法移位计算。同样的也可以根据译码器迭代情况的flag来查找相应的最小值影响因子来调整最小值的计算结果。在本实施例中,通过利用硬件电路只需要增加了少许的逻辑就可以明显提高译码器的纠错能力,其收益是非常可观的。应该理解的是,虽然图1-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。在一个实施例中,如图6所示,提供了一种基于ssd数据保护的ldpc译码装置600,包括:获取模块601,用于获取基于ssd数据保护的ldpc译码请求;ldpc模块602,用于根据基于ssd数据保护的ldpc译码请求在ssd开始读取数据后,将ldpc模块打开;译码模块603,用于根据rber的大小自适应选择相应的初始llr和最小影响因子,并开始进行ldpc译码;判断模块604,用于判断译码是否成功;执行模块605,用于若译码成功则送出数据,若译码不成功则根据当前译码器的迭代情况重新选择最小影响因子并重新开始进行ldpc译码。在一个实施例中,ldpc模块602包括:选择器,用于获取并选择rberflag或者译码器迭代情况的flag;查找表电路,与选择器连接用于存放llr和最小值影响因子;乘法位移电路,与查找表电路连接用于根据查找表电路的查找结果进行乘法运算。在一个实施例中,ldpc模块602用于:通过rberflag作为查找表的读取地址获得对应的查找表结果用于初始llr的选择和最小值计算的影响因子选择。在一个实施例中,ldpc模块602还用于:根据译码器迭代情况的flag来查找相应的最小值影响因子来调整最小值的计算结果。关于基于ssd数据保护的ldpc译码装置的具体限定可以参见上文中对于基于ssd数据保护的ldpc译码方法的限定,在此不再赘述。在一个实施例中,提供了一种计算机设备,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于ssd数据保护的ldpc译码方法。本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。当前第1页12