一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种可提前终止迭代的增量计算的LDPC校验方法及装置与流程

2022-03-05 05:39:17 来源:中国专利 TAG:

一种可提前终止迭代的增量计算的ldpc校验方法及装置
技术领域
1.本发明涉及数据存储技术领域,尤其涉及一种可提前终止迭代的增量计算的ldpc校验方法及装置。


背景技术:

2.当前固态硬盘已经成为硬盘发展与应用的主流,作为存储设备,固态硬盘的数据存储可靠性和数据读取的延时有很高的要求,一般常用的固态硬盘中主流应用低密度奇偶校验码ldpc纠错算法来保证用户的数据可靠性。ldpc是一种常用的信道编解码算法,普遍应用于固态存储领域,当前主流的ldpc解码算法种,row layered解码算法是一种收敛更快,对硬件资源需求更小的解码算法。
3.现有的row layered ldpc解码算法,硬件实现时为了尽量减少每行运算所需要的周期数,通常的做法是只更新每行矩阵中非零子矩阵对应的数据块的行运算结果,而行更新结果需要跟整个矩阵进行校验计算,这样才能最大程度避免误纠。但这样行更新处理流程和校验流程难以被安排到一个流程中,强行的纳入一个流程中会导致行更新处理流程每次都需要等待校验流程结束才开始下一行的更新,使得行更新过程只计算所有非零数据块变得没有意义。一个解决办法是将这两个处理流程独立开,行更新完之后立马进入下一行更新,直到所有行更新结束,行更新也就遍历到了每行所有的点,此时再把所有更新后的点来进行全矩阵校验,于此同时行更新转入下一次迭代更新,校验成功结束才强行结束行更新运算,中间不打断行更新流水运算,如图1所示。这种方式虽然可以让迭代运算过程流水起来,但最终会多出一些额外的校验时钟周期,且每次都需要所有行更新完成之后才能校验,校验成功才能终止迭代,无法实现行间提前终止迭代。


技术实现要素:

4.鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的可提前终止迭代的增量计算的ldpc校验方法及装置。
5.本发明的一个方面,提供了一种可提前终止迭代的增量计算的ldpc校验方法,所述方法包括:
6.对待解码数据进行初始校验,并判断初始检验是否成功;
7.若初始校验失败,则按照行更新算法对待解码数据进行行更新,将ldpc校验矩阵中每个非零矩阵块与对应的更新后的数据块进行第二校验计算,并将第二校验计算结果与初始校验结果做增量校验;
8.在行更新结束且完成当前校验行的增量校验之后,判断增量校验是否成功;
9.若增量校验成功,则判定解码成功,停止迭代校验。
10.进一步地,所述方法还包括:
11.若增量校验失败,则判断是否达到预设的最大检验迭代次数;
12.如果未达到最大检验迭代次数,则进入下一校验行的行更新和增量校验中,直到
解码成功或者达到最大检验迭代次数。
13.进一步地,所述方法还包括:
14.如果达到最大检验迭代次数,则判定解码失败。
15.进一步地,所述对待解码数据进行初始校验,并判断初始检验是否成功,包括:
16.按照预设数据长度读取待解码数据,根据数据读取顺序对读取的每一个预设数据长度的数据块同步取对应的矩阵块进行初始校验;
17.将得到的初始化校验结果存入静态随机存取存储器;
18.在当前待解码数据帧输入完毕且完成所有数据块的同步校验计算之后,判断初始校验结果是否校验成功。
19.进一步地,所述方法还包括:
20.若初始校验成功,则判定解码成功。
21.本发明的第二方面,提供了一种可提前终止迭代的增量计算的ldpc校验装置,所述装置包括:
22.第一检验模块,用于对待解码数据进行初始校验;
23.第一判断模块,用于判断初始检验是否成功;
24.第二检验模块,用于在初始校验失败时,按照行更新算法对待解码数据进行行更新,将ldpc校验矩阵中每个非零矩阵块与对应的更新后的数据块进行第二校验计算,并将第二校验计算结果与初始校验结果做增量校验;
25.第二判断模块,用于在行更新结束且完成当前校验行的增量校验之后,判断增量校验是否成功;
26.控制模块,用于在增量校验成功时,判定解码成功,停止迭代校验。
27.进一步地,所述装置还包括:
28.第三判断模块,用于当增量校验失败时,判断是否达到预设的最大检验迭代次数;
29.第二检验模块,用于当第三判断模块的判断结果为未达到最大检验迭代次数时,进入下一校验行的行更新和增量校验中,直到解码成功或者达到最大检验迭代次数。
30.进一步地,所述第三判断模块,还用于当判断结果为达到最大检验迭代次数时,判定解码失败。
31.进一步地,所述第一检验模块,用于按照预设数据长度读取待解码数据,根据数据读取顺序对读取的每一个预设数据长度的数据块同步取对应的矩阵块进行初始校验;
32.所述装置还包括:
33.存储模块,用于将得到的初始化校验结果存入静态随机存取存储器;
34.所述第一判断模块,用于在当前待解码数据帧输入完毕且完成所有数据块的同步校验计算之后,判断初始校验结果是否校验成功。
35.进一步地,所述第一判断模块,还用于当判断结果为初始校验成功时,判定解码成功。
36.本发明的另一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上可提前终止迭代的增量计算的ldpc校验方法的步骤。
37.本发明的又一个方面,还提供了一种ssd设备,该设备包括存储控制器,所述存储
控制器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上可提前终止迭代的增量计算的ldpc校验方法的步骤。
38.本发明实施例提供的可提前终止迭代的增量计算的ldpc校验方法及装置,能够灵活实现任意行运算结束后提前终止迭代,同时每行的校验只计算当前行更新的数据块,可将增量校验计算完美融入到行更新的流水中,无需额外的周期,进而在增加灵活性的同时提高带宽,改善译码性能。
39.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
40.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
41.图1为现有row layered解码算法的处理时序图;
42.图2为本发明提出的可提前终止迭代的增量计算的ldpc校验方法的处理时序图;
43.图3为本发明实施例提供的可提前终止迭代的增量计算的ldpc校验方法的流程图;
44.图4为本发明提出的增量校验的实现原理图;
45.图5为本发明实施例中ldpc解码矩阵中部分矩阵块结构图;
46.图6为本发明另一实施例提供的可提前终止迭代的增量计算的ldpc校验方法的流程图;
47.图7为本发明实施例提供的可提前终止迭代的增量计算的ldpc校验装置的结构框图。
具体实施方式
48.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
49.本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
50.本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
51.本发明提出的可提前终止迭代的增量计算的ldpc校验方法,是一种基于增量计算
的可提前终止迭代的校验方法,同时便于硬件实现。参见图2,在待解码数据输入时,充分利用这个所有数据块输入的过程进行初步的校验,得到初始校验结果存储在sram中,之后每次行更新完的数据块与对应的矩阵块做完校验之后,再同相应的初始校验结果进行增量校验,校验成功则终止迭代,所以此方案可实现任意行运算结束后提前终止迭代,平均可减少0.5次完整迭代,同时每行的校验只计算当前行更新的数据块,可完美融入到行更新的流水中,无需额外的周期。
52.图3示意性示出了本发明一个实施例的可提前终止迭代的增量计算的ldpc校验方法的流程图。参照图3,本发明实施例的可提前终止迭代的增量计算的ldpc校验方法具体包括以下步骤:
53.s11、对待解码数据进行初始校验;
54.s12、判断初始检验是否成功;
55.具体的,本发明实施例中按照预设数据长度读取待解码数据,根据数据读取顺序对读取的每一个预设数据长度的数据块同步取对应的矩阵块进行初始校验;将得到的初始化校验结果存入静态随机存取存储器;在当前待解码数据帧输入完毕且完成所有数据块的同步校验计算之后,判断初始校验结果是否校验成功。其中,预设数据长度即为内部总线宽度。在硬件实现中,一般会定义固定的内部总线宽度,一般这个长度为circle length的长度。
56.若初始校验失败,则执行步骤s13,否则,判定解码成功,进行后续数据解码校验。
57.s13、按照行更新算法对待解码数据进行行更新,将ldpc校验矩阵中每个非零矩阵块与对应的更新后的数据块进行第二校验计算,并将第二校验计算结果与初始校验结果做增量校验。
58.具体的,本实施例中采用行分层最小和算法(row layered)对待解码数据进行行更新。
59.本发明实施例中,增量校验实现原理如图4,这里将矩阵简化成4x3个小矩阵块,白色小方块为全零子矩阵。d1,d2,d3,d4表示4个数据块,mxx表示矩阵块,c1,c2,c3表示校验块。具体的,基于只安排非零子矩阵的流水架构硬件实现row layered ldpc算法时,每行增量校验的结果完全等价于行更新后的整帧数据与整个校验矩阵进行校验计算的结果。
60.s14、在行更新结束且完成当前校验行的增量校验之后,判断增量校验是否成功;
61.若增量校验成功,则执行步骤s15,否则进行后续判断;
62.s15、判定解码成功,停止迭代校验。
63.具体的,ldpc解码算法是一种普通的分组码解码算法,通过ldpc稀疏矩阵来对待解码数据进行纠错,使得待解码数据恢复成出错前的数据。在ssd固态硬盘中应用,待解码码长一般为2kb /4kb ,本案中描述的以4kb码长应用。因此在硬件实现中,一个时钟周期只能传输一个circle length的数据长度,本实施例中将其定义为512bit,因此一个4kb 的数据传输需要70多个时钟周期。于此同时,ldpc解码矩阵的长度与待解码数据长度匹配,也分成同样多的子块,如图5所示。
64.图5中每一个方块是一个512x512的子矩阵,0表示全零子方阵,其他数字表示单位阵右移相应的数字得到的子方阵。可以看到,矩阵中很大一部分全零子矩阵,这部分无需占用解码的时钟周期,因此通常在行更新的时候只更新所有非零子矩阵部分的数据块。
65.为了更快收敛,更少的硬件资源,本发明采用row layered解码算法。row layered算法中,每行行更新之后的结果会作为输入参与到下一行的行更新,因此收敛更快,且无需标准min-sum算法中所有行进行和运算的过程,大大减少了和运算带来的数据宽度的膨胀存,从而减少硬件实现面积。
66.在row layered更新迭代的计算结果出了进入到下一行的更新中之外,还需要进行校验,校验成功就结束迭代,解码成功。本发明采用的校验方法可完全隐藏在迭代计算的过程中,不占用额外的时间,且任意时间校验成功就可提前终止迭代,解码成功结束。
67.在本发明另一实施例中,如图6所示,在判断增量校验是否成功之后,若增量校验失败,所述方法还包括如下步骤:
68.s16、判断是否达到预设的最大检验迭代次数;
69.如果未达到最大检验迭代次数,则返回步骤s13,进入下一校验行的行更新和增量校验中,直到解码成功或者达到最大检验迭代次数。
70.如果达到最大检验迭代次数,则判定解码失败。
71.下面通过一个具体实施例对本发明技术方案的主要处理流程进行详细说明。
72.1.解码器收到解码开始信号,开始按circle length的数据长度读取待解码数据,每读取一个circle length长度的数据块,便同时取对应的矩阵块进行校验计算,将计算结果存入sram中。
73.2.待一帧待解码数据输入完毕且校验计算完毕后,判断校验结果,是否校验成功,校验成功则解码成功结束,进入下一帧的解码中。如校验不成功,则进入行更新迭代计算中。
74.3.按照row layered算法进行行更新,将每个非零矩阵块与对应的更新后的数据块进行校验计算,校验计算结果再与初始化校验结果做增量校验。
75.4.待行更新结束且增量校验结束,判断校验是否成功,如校验成功则解码成功结束,进入下一帧数据解码。如校验失败,则继续判断是否达到最大检验迭代次数,如达到最大检验迭代次数,而此时校验结果失败,则解码失败。如果校验失败且未达到最大检验迭代次数,则进入到下一行的行更新和增量校验中,一直循环到解码成功或者达到最大检验迭代次数再退出。
76.本发明实施例提供的可提前终止迭代的增量计算的ldpc校验方法,在ldpc解码过程中,每行的校验只计算当前行更新的数据块,可将增量校验计算完美融入到行更新的流水中,不仅简化了流程,还可以省却校验过程额外多出来的周期,而且能够灵活实现任意行运算结束后提前终止迭代,平均减少0.5次完整迭代过程,进而在增加灵活性的同时提高带宽,改善译码性能。
77.本发明实施例提供的可提前终止迭代的增量计算的ldpc校验方法,在fpga上已经进行相关测试和验证,在保证ldpc解码性能没有下降的前提下,在nand flash生命周期前期提升带宽可达一倍,在生命周期末期,也可提升20%以上,具有非常突出的有益效果。
78.对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
79.图7示意性示出了本发明一个实施例的可提前终止迭代的增量计算的ldpc校验装置的结构示意图。参照图7,本发明实施例的可提前终止迭代的增量计算的ldpc校验装置具体包括第一检验模块201、第一判断模块202、第二检验模块203、第二判断模块204以及控制模块205,其中:
80.第一检验模块201,用于对待解码数据进行初始校验;
81.第一判断模块202,用于判断初始检验是否成功;
82.第二检验模块203,用于在初始校验失败时,按照行更新算法对待解码数据进行行更新,将ldpc校验矩阵中每个非零矩阵块与对应的更新后的数据块进行第二校验计算,并将第二校验计算结果与初始校验结果做增量校验;
83.第二判断模块204,用于在行更新结束且完成当前校验行的增量校验之后,判断增量校验是否成功;
84.控制模块205,用于在增量校验成功时,判定解码成功,停止迭代校验。
85.其中,所述第一判断模块202,还用于当判断结果为初始校验成功时,判定解码成功。
86.本发明另一实施例中,所述装置还包括附图中未示出的第三判断模块,第三判断模块,用于当增量校验失败时,判断是否达到预设的最大检验迭代次数;
87.第二检验模块203,还用于当第三判断模块的判断结果为未达到最大检验迭代次数时,进入下一校验行的行更新和增量校验中,直到解码成功或者达到最大检验迭代次数。
88.其中,第三判断模块,还用于当判断结果为达到最大检验迭代次数时,判定解码失败。
89.本发明另一实施例中,第一检验模块201,用于按照预设数据长度读取待解码数据,根据数据读取顺序对读取的每一个预设数据长度的数据块同步取对应的矩阵块进行初始校验。
90.进一步地,所述装置还包括附图中未示出的存储模块,用于将得到的初始化校验结果存入静态随机存取存储器;
91.更进一步地,所述第一判断模块202,用于在当前待解码数据帧输入完毕且完成所有数据块的同步校验计算之后,判断初始校验结果是否校验成功。
92.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
93.此外,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述方法的步骤。
94.本实施例中,所述可提前终止迭代的增量计算的ldpc校验装置集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存
储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
95.此外,本发明实施例还提供了一种ssd设备,该ssd设备包括存储控制器,所述存储控制器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述方法的步骤。例如图3所示的步骤s11~s15。或者,所述处理器执行所述计算机程序时实现上述可提前终止迭代的增量计算的ldpc校验装置实施例中各模块/单元的功能,例如图7所示的第一检验模块201、第一判断模块202、第二检验模块203、第二判断模块204以及控制模块205。
96.本发明实施例提供的可提前终止迭代的增量计算的ldpc校验方法及装置,能够灵活实现任意行运算结束后提前终止迭代,同时每行的校验只计算当前行更新的数据块,可将增量校验计算完美融入到行更新的流水中,无需额外的周期,进而在增加灵活性的同时提高带宽,改善译码性能。
97.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
98.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
99.此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
100.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献