基于质量的动态调度LDPC解码器的制作方法

文档序号:29309229发布日期:2022-03-19 19:34阅读:109来源:国知局
基于质量的动态调度LDPC解码器的制作方法
基于质量的动态调度ldpc解码器
技术领域
1.本公开涉及一种基于质量的动态调度ldpc解码器


背景技术:

2.错误校正码(ecc)通常用于各种类型的数据存储装置,包括nand闪速存储器。ecc在数据传输过程中也经常使用。ecc是指将冗余数据或奇偶校验数据添加到消息中的码,使得即使在传输过程或存储过程中引入了许多错误,接收器也可以恢复该消息。通常,ecc可以根据所使用的码的能力来校正错误。ecc解码可以包括软解码,例如低密度奇偶校验码(ldpc)解码,其中存储器单元中存储的逻辑值可以被表示为概率分布。
3.通常,针对ecc解码,包括ldpc解码,在错误校正能力和功耗之间进行权衡。通常,错误校正能力越高,解码处理越复杂,功耗也变得越高。


技术实现要素:

4.本文描述了一种与改善ecc解码器的功耗相关的技术,其中可以在保持ecc解码器的错误校正能力的同时降低功耗。
5.在示例中,公开了一种用于解码低密度奇偶校验码(ldpc)码字的方法。该方法在计算装置上实施并且包括确定变量节点到校验节点(v2c)消息,其中v2c消息对应于连接到校验节点的变量节点;确定包括v2c消息的一组v2c消息的可靠性;基于可靠性从多种不同的校验节点处理模式中选择一种校验节点处理模式;基于所选择的校验节点处理模式确定校验节点到变量节点(c2v)消息;以及基于c2v消息解码ldpc码字。
6.在示例中,该方法进一步包括,在解码迭代期间:确定ldpc码字的校正子;增加解码迭代次数;确定增加后的解码迭代次数不超过最大次数;以及确定ldpc码字的校正子不为零。
7.在以上示例中,该方法可以进一步包括,在与增加后的解码迭代次数相对应的下一次解码迭代期间:(a)更新与变量节点相对应的v2c消息;(b)确定变量节点与“j”变量节点循环矩阵相关联;(c)确定连接到变量节点的校验节点与“k”校验节点循环矩阵相关联;(d)确定该组v2c消息的可靠性为r
k,j
=sk中1的数量/cs,其中r
k,j
是可靠性,sk是基于“k”校验节点循环矩阵而计算的部分校验和,cs是根据ldpc码字的校正子确定的校验和;(e)将r
k,j
与可靠性阈值进行比较,其中校验节点处理模式是基于该比较而选择的;以及(f)更新部分校验和sk。
8.在以上示例中,该方法可以进一步包括,在相应的下一次解码迭代期间,对剩余的变量节点循环矩阵和剩余的校验节点循环矩阵重复步骤(a)至(f)。
9.在示例中,该组v2c消息的可靠性是基于ldpc码字的校正子确定的。
10.在以上示例中,该组v2c消息的可靠性是进一步是基于与循环矩阵相关联的部分校正子确定的,其中校验节点与循环矩阵相关联。
11.在示例中,该组v2c消息中的每个v2c消息对应于与一组变量节点不同的变量节
点。该组变量节点对应于变量节点循环矩阵。
12.在以上示例中,校验节点与校验节点循环矩阵相关联,其中可靠性是基于ldpc码字的校正子以及部分校正子确定的,其中部分校正子是基于校验节点循环矩阵计算的。
13.在以上示例中,可靠性被确定为r=sk中1的数量/cs,其中r是可靠性,sk是部分校正子,cs是根据ldpc码字的校正子确定的校验和。
14.在示例中,该方法进一步包括:将可靠性与可靠性阈值进行比较,其中校验节点处理模式是基于该比较而选择的。
15.在以上示例中,多种不同的校验节点处理模式包括第一校验节点处理模式和第二校验节点处理模式,其中第一校验节点处理模式基于第一量化水平来逼近变量节点的对数似然比,其中第二校验节点处理模式基于第二量化水平来逼近变量节点的对数似然比,其中第二量化水平大于第一量化水平,其中如果可靠性小于可靠性阈值,则选择第一校验节点处理模式,并且其中,如果可靠性大于可靠性阈值,则选择第二校验节点处理模式。
16.在以上示例中,可靠性阈值是基于解码迭代次数定义的。
17.在以上示例中,可靠性阈值是基于变量节点度定义的。
18.在以上示例中,可靠性阈值是基于校验节点度定义的。
19.在示例中,公开了一种装置。该装置包括:存储器,存储低密度奇偶校验码(ldpc)码字;以及一组处理单元,被配置为:确定变量节点到校验节点(v2c)消息,其中v2c消息对应于连接到校验节点的变量节点;确定包括v2c消息的一组v2c消息的可靠性;基于可靠性从多种不同的校验节点处理模式中选择一种校验节点处理模式;以及基于所选择的校验节点处理模式确定校验节点到变量节点(c2v)消息,其中基于c2v消息解码ldpc码字。
20.在以上示例中,该组处理单元进一步被配置为,在解码迭代期间:确定ldpc码字的校正子;增加解码迭代次数;确定增加后的解码迭代次数不超过最大次数;以及确定ldpc码字的校正子不为零。
21.在以上示例中,该组处理单元可以进一步被配置为,在与增加后的解码迭代次数相对应的下一次解码迭代期间:(a)更新与变量节点相对应的v2c消息;(b)确定变量节点与“j”变量节点循环矩阵相关联;(c)确定连接到变量节点的校验节点与“k”校验节点循环矩阵相关联;(d)确定该组v2c消息的可靠性为r
k,j
=sk中1的数量/cs,其中r
k,j
是可靠性,sk是基于“k”校验节点循环矩阵而计算的部分校正子,cs是根据ldpc码字的校正子确定的校验和;(e)将r
k,j
与可靠性阈值进行比较,其中校验节点处理模式是基于该比较而选择的;以及(f)更新部分校正子sk。
22.在以上示例中,该组处理单元可以进一步被配置为,在相应的下一次解码迭代期间,对剩余的变量节点循环矩阵和剩余的校验节点循环矩阵重复步骤(a)至(f)。
23.在示例中,公开了一种错误校正(ecc)系统。ecc系统包括一组处理单元,被配置为:从存储器接收ldpc码字;确定变量节点到校验节点(v2c)消息,其中v2c消息对应于连接到校验节点的变量节点;确定包括v2c消息的一组v2c消息的可靠性;基于可靠性从多种不同的校验节点处理模式中选择一种校验节点处理模式;以及基于选择的校验节点处理模式确定校验节点到变量节点(c2v)消息,其中基于c2v消息解码ldpc码字。
24.在以上示例中,该组v2c消息的可靠性是基于ldpc码字的校正子并且基于与循环矩阵相关联的部分校正子确定的,其中校验节点与循环矩阵相关联。
25.提及这些说明性示例不是为了限制或限定本公开,而是提供示例以帮助其理解。在具体实施方式中讨论了附加的实施例和示例,并且在那里提供了进一步的描述。
附图说明
26.可以通过参照以下附图来实现对各个实施例的性质和优点的理解。
27.图1示出了根据本公开的某些实施例的错误校正系统的示例高级框图。
28.图2a至图2b示出了根据本公开的某些实施例的示例奇偶校验矩阵以及表示奇偶校验矩阵的示例图。
29.图3示出了根据本公开的某些实施例的示例循环矩阵和示例可靠性矩阵。
30.图4示出了根据本公开的某些实施例的包括多个变量节点处理单元和多个校验节点处理单元的示例解码器。
31.图5示出了根据本公开的某些实施例的基于消息可靠性估计的码字解码的示例流程。
32.图6示出了根据本公开的某些实施例的基于消息可靠性估计的码字解码的更详细示例流程。
33.图7是能够实现本公开的计算机系统的示例。
具体实施方式
34.本文描述了与改善ecc解码器的功耗相关的技术,其中可以在对ecc解码器的错误校正能力不造成影响或影响很小的情况下降低功耗。在示例中,ecc解码器通过部分地使用处理消息的消息传递算法对数据进行解码,其中基于消息输出(例如,“0”和“1”)。ecc解码器可以包括一个或多个处理单元。反过来,每个处理单元可以实施不同的处理模式。处理单元的至少两种处理模式通过不同地实施消息传递算法的一个或多个操作来支持不同的错误校正能力。每个不同的实施方案与一组不同的处理周期和/或硬件组件相关联,因此会导致不同的功耗。处理单元接收到的消息的可靠性被估计,其中该估计基于例如一个或多个与校正子相关的参数。基于可靠性,处理模式中的一种被选择并用于生成响应消息。具体地,当可靠性指示接收到的消息可靠时,针对响应消息,选择低复杂度的处理模式(例如,消耗相对较低功率的一种模式)。如果可靠性指示接收到的消息不可靠,则针对响应消息,选择高复杂度的处理模式(例如,消耗相对较高功率的一种模式)。总体而言,大多数的传递消息被认为是可靠的,因此,高复杂度的处理模式使用的频率较低。然而,当由于不可靠而被需要时,会选择性地使用这种高复杂度的处理模式。因此,降低了ecc解码器的整体功耗,同时相对于未实施多种处理模式和基于消息可靠性选择的多种处理模式中的一种的其它ecc解码器,仍保持错误校正能力。当处理单元在硬件中实施处理模式中的每一种时,ecc解码器相对于其它ecc解码器可能会占据更大的解码器硅面积。换言之,在硅面积和功耗之间进行权衡,同时仍然保持错误校正能力。
35.为了说明,考虑ldpc解码器的示例。在解码迭代中,变量节点处理单元向校验节点处理单元发送变量节点到校验节点(v2c)消息,其中该v2c消息对应于连接到校验节点的变量节点。包括v2c消息的一组v2c消息的可靠性是基于与校正子相关的参数来估计的。校验节点处理单元实施不同的校验节点处理模式。这些模式中的每一种用于生成具有不同精确
度(例如,不同的近似程度)的校验节点到变量节点(c2v)消息。基于v2c消息的可靠性与一个或多个可靠性阈值的比较,校验节点处理单元选择最合适的校验节点处理模式并因此生成c2v消息。将c2v消息发送回变量节点处理单元,迭代解码继续进行,包括运行消息传递算法,直到达到最大解码迭代次数或校正子为零。
36.在进一步的说明中,ldpc码是准循环(qc)ldpc码。在该说明中,ldpc解码依赖于循环子矩阵。特别地,每个变量节点可以与变量节点循环矩阵相关联,并且每个校验节点可以与校验节点循环矩阵相关联。消息传递算法是在循环矩阵的层面执行的。换言之,变量节点处理单元处理与变量节点循环矩阵相关联的变量节点的信息。类似地,校验节点处理单元处理与校验节点循环矩阵相关联的校验节点的信息。该处理可以遵循垂直洗牌计划(vss)。在当前解码迭代开始时,ldpc码字的校正子是已知的(例如,根据前一次的解码迭代或者如果当前解码迭代是第一次解码迭代,则被初始化)。在更新与连接到校验节点的变量节点相对应的v2c消息时,确定与变量节点相关联的变量节点循环矩阵(为了清楚解释,本文中其索引为“j”;变量节点可以是与变量节点循环矩阵相关联的变量节点“n”中的任意一个;在示例中,变量节点是第一个(例如,“n=1”))。确定与所连接的校验节点相关联的校验节点循环矩阵(为了清楚解释,本文中将其索引为“k”)。不是估计与“j”变量节点循环矩阵相关联的变量节点以及“k”校验节点循环矩阵的每个校验节点的的每个v2c消息的可靠性,而是估计v2c消息中的其中一个的可靠性就足够了(例如,“n”变量节点的一个)并且相同的可靠性适用于剩余的v2c消息。这样做减少了ldpc解码器的处理和功耗。因此,估计了“r
k,j”可靠性。该估计可以是部分校验和(例如,部分校正子“s
k”中“1”的数量,其中部分校正子“s
k”对应于与“k”校验节点循环矩阵相关联的不满足校验节点)与根据ldpc码字的校正子“s”确定的ldpc码字校验和“cs”的比率。如果不可靠(例如,小于可靠性阈值),则通过使用校验节点处理单元的高复杂度处理模式为与“k”校验节点循环矩阵相关联的校验节点生成c2v消息中的每一个。如果可靠(例如,大于相同或不同的可靠性阈值),则通过使用校验节点处理单元的低复杂度处理模式为这些校验节点生成c2v消息中的每一个。c2v消息被发送到变量节点处理单元等,直到解码完成(例如,达到最大解码迭代或直到校正子“s”为零)。
37.本公开的实施例提供了与常规ecc解码器相关的若干优点。一方面,ecc解码器的错误校正能力没有受到影响或者影响很小。这是由于ecc解码器包括支持错误校正能力的处理模式,并且根据需要使用该处理模式。另一方面,降低了ecc解码器的功耗。那是由于ecc解码包括至少一种其它处理模式,该模式支持较低的错误校正能力并且更高效地处理消息(这转化为功耗节省),并且当不需要较高的错误校正能力时使用该处理模式。当以硬件实施时,解码器硅面积可能会增加。尽管如此,通过采用特定的码结构(例如,qc-ldpc),这种增加可以被最小化(例如,可以通过在校验节点循环矩阵的层面处理消息来减少校验节点处理单元的总数量)。
38.为了清楚解释,结合ldpc解码器描述了本公开的各个实施例。尽管如此,实施例还可以类似地应用于依赖于消息传递算法的其它解码器类型。另外,结合qc-ldpc码描述了本公开的各个实施例。尽管如此,实施例还可以类似地应用于其它码类型,包括其它类型的ldpc码。
39.图1示出了根据本公开的某些实施例的错误校正系统100的高级框图的示例。在该示例中,结合数据存储描述了ldpc码。然而,本公开的实施例不限于此。相反,实施例类似地
应用于ldpc码的其它用途,包括例如数据传输。
40.ldpc码是由稀疏奇偶校验矩阵h定义的线性分组码,该稀疏奇偶校验矩阵h由0和1组成。术语“稀疏矩阵”在本文中用于指每一列和每一行中的非零值的数量远小于其维度的矩阵。术语“列权重”在本文中用于指奇偶校验矩阵h的特定列中的非零值的数量。术语“行权重”在本文中用于指奇偶校验矩阵h的特定行中的非零值的数量。通常,如果与ldpc码相对应的奇偶校验矩阵中所有列的列权重都相似,则该码被称为“规则(regular)”ldpc码。另一方面,如果列权重中的至少一个与其它列权重不同,则ldpc码被称为“不规则(irregular)”ldpc码。通常,不规则ldpc码相比于规则ldpc码提供更好的错误校正能力。
41.还根据ldpc码被构造的方式来描述ldpc码。能够进行随机计算机搜索或代数构造。随机计算机搜索构造描述具有由随机的基于计算机的程序而设计的奇偶校验矩阵的ldpc码。代数构造意味着已经基于组合方法构造了奇偶校验矩阵。准循环ldpc(qc-ldpc)码属于后一种构造方法。qc-ldpc码的一个优点在于在编码过程方面,qc-ldpc码的实施相对容易。qc-ldpc码的主要特征在于奇偶校验矩阵由循环子矩阵组成,其可以基于单位矩阵或较小的随机矩阵。也可以使用置换向量来创建循环子矩阵。
42.如图所示,ldpc编码器110接收包括希望存储在存储系统120中的数据的信息位。ldpc编码的数据由ldpc编码器110输出并写入存储系统120。
43.在各个实施例中,存储系统120可以包括各种存储类型或介质,诸如(例如,磁性、固态)盘驱动存储、闪存等。在一些实施例中,这些技术被用于收发器中,并且不是向存储装置写入数据或从存储装置读取数据,而是通过有线和/或无线通道传输和接收数据。在这种情况下,在码字的传输过程中,可能在接收到的码字中引入错误。
44.当请求或以其它方式(例如,存储数据的应用程序或用户)需要所存储的数据时,检测器130从存储系统120接收数据。接收到的数据可能包括一些噪声或错误。检测器130对接收到的数据执行检测并输出判决和/或可靠性信息。例如,软输出检测器输出每个检测位(例如,“1”或“0”的逻辑值)的可靠性信息和判决。另一方面,硬输出检测器输出对每一位的判决,而不提供相应的可靠性信息。作为示例,硬输出检测器可以输出特定位是“1”或“0”的判决,而不指示检测器对该判决的确定或肯定程度。相反,软输出检测器输出判决以及与该判决相关联的可靠性信息。通常,可靠性值指示检测器对于给定判决的确定程度。在一个示例中,软输出检测器输出对数似然比(llr),其中符号指示判决(例如,正值对应于“1”判决,负值对应于“0”判决),并且幅度指示检测器对该判决的肯定或确定程度(例如,大的幅度指示高可靠性或高确定性)。
45.判决和/或可靠性信息被传递到使用该判决和可靠性信息来执行ldpc解码的ldpc解码器140。软输入解码器利用判决和可靠性信息两者来解码码字。硬解码器仅利用解码器中的判决值来解码码字。将ldpc解码器140所生成的解码位传递到合适的实体(例如,请求解码位的用户或应用程序)。通过适当的编码和解码,信息位与解码位匹配。
46.在各个实施例中,所示的系统可以使用多种技术来实施,这些技术包括专用集成电路(asic)、现场可编程门阵列(fpga)和/或通用处理器(例如,高级risc机器(arm)内核)。
47.ldpc码通常由二分图表示。一组节点,变量或位节点对应于码字的元素,另一组节点,例如校验节点,对应于码字满足的一组奇偶校验约束。通常,边缘连接是随机选择的。如果图中避免了长度较短的循环,则可以提高ldpc码的错误校正能力。在(r,c)规则码中,n个
变量节点(v1,v2,...,vn)中的每一个连接到r校验节点,m个校验节点(c1,c2,...,cm)中的每一个连接到c位节点。在不规则ldpc码中,校验节点度是不统一的。类似地,变量节点度也不是统一的。在qc-ldpc码中,奇偶校验矩阵h被构造为p
×
p矩阵的块,使得块中的位仅参与该块中的一个校验方程,并且块中的每个校验方程仅涉及来自块的一个位。在qc-ldpc码中,码字循环移位p生成另一个码字。此处,p是方阵的大小,其可以是零矩阵或循环矩阵。这是循环码的广义化,其中码字循环移位1生成另一个码字。p
×
p矩阵的块可以是零矩阵或大小为p
×
p的循环移位单位矩阵。
48.图2a示出了示例奇偶校验矩阵h200,图2b示出了对应于奇偶校验矩阵200的示例二分图。在该示例中,奇偶校验矩阵200具有六个列向量和四个行向量,但是本公开的实施例不限于此,并且可以类似地应用于具有数百甚至数千个列向量和行向量的奇偶校验矩阵。网络202示出了对应于奇偶校验矩阵200的网络并表示二分图。可以存在各种类型的二分图,包括例如tanner图。
49.通常,网络202中的变量节点对应于奇偶校验矩阵200中的列向量。网络202中的校验节点对应于奇偶校验矩阵200的行向量。节点之间的互连由奇偶校验矩阵200的值确定。具体地,“1”表示相应的校验节点和变量节点具有连接。“0”表示没有连接。例如,奇偶校验矩阵200中的最左的列向量和从顶部开始的第二个行向量中的“1”对应于变量节点204和校验节点210之间的连接。
50.消息传递算法通常用于解码ldpc码。现有技术中存在消息传递算法的若干变型,诸如最小和算法、缩放最小和算法等。通常,在不脱离本公开的教导的情况下,可以在ldpc解码器中使用消息传递算法的任何变型。消息传递使用变量节点和校验节点的网络,如图2b所示。通过奇偶校验矩阵200的值来描述变量节点和校验节点之间的连接并且变量节点和校验节点之间的连接对应于奇偶校验矩阵200的值,如图2a所示。
51.可以执行硬判决消息传递算法。在第一步骤中,变量节点中的每一个向与其相连的一个或多个校验节点发送消息。在这种情况下,该消息是变量节点中的每一个认为是其正确值的值。
52.在第二步骤中,校验节点中的每一个使用其之前从变量节点接收的信息来计算发送到与其连接的变量节点的响应。响应消息对应于校验节点基于从连接到该校验节点的其它变量节点接收的信息而认为变量节点应该具有的值。该响应是使用奇偶校验方程计算的,其迫使连接到特定校验节点的所有变量节点的值相加为零(模2)。
53.此时,如果所有校验节点处的所有等式都满足,则解码算法声明找到了正确的码字并终止。如果没有找到正确的码字,则迭代继续使用变量节点从检查节点接收到的消息从变量节点进行另一次更新,以通过多数规则判定它们位置上的位是0还是1。变量节点然后将这个硬判决消息发送到连接到它们的校验节点。迭代继续进行,直到找到正确的码字,或者在没有找到正确码字的情况下执行了最大次数的迭代。需要说明的是,软判决解码器类似地工作,然而,在校验节点和变量节点之间传递的每一个消息还包括每个位的可靠性。
54.可以执行示例消息传递算法。在该示例中,l(qij)表示由变量节点vi发送到校验节点cj的消息(例如,v2c消息);l(r
ji
)表示由校验节点cj发送到变量节点vi的消息(例如,c2v消息);l(ci)表示每个变量节点vi的初始llr值。
55.针对每个l(qij)的变量节点处理可以通过以下步骤完成:
56.(1)从存储器中读取l(ci)和l(r
ji
)。
57.(2)计算l(qi-sum)=l(ci)+比例因子
58.(3)计算每个l(qi-sum)

l(r
ij
)。
59.(4)输出l(qi-sum)并写回到存储器。
60.(5)如果这不是存储器的最后一列,则转到步骤1,将i加1。
61.(6)计算奇偶校验和(例如,校正子),如果它们都等于0、迭代次数达到阈值并且奇偶校验和大于另一个阈值,或者迭代次数等于最大限制值,则停止;否则,进行校验节点处理。
62.可以如下执行针对每个l(rji)的校验节点处理:
63.(7)从存储器中读取一行qij。
64.(8)如下计算l(rj-sum):
[0065][0066]
α
ij
=sign(l(q
ij
)),β
ij
=|l(q
ij
)|,
[0067][0068]
(9)针对校验节点计算单独的
[0069][0070]
(10)将l(rji)写回到存储器。
[0071]
(11)如果这不是存储器的最后一行,则转到第一步,将j加1。
[0072]
图3示出了根据本公开的某些实施例的示例循环矩阵和示例可靠性矩阵。在示例中,定义了奇偶校验矩阵300。如上所述,奇偶校验矩阵300可以包括多个列(例如,如果不是数千,则为数百)和多个行(例如,如果不是数千,则为数百)。每一列代表变量节点,每一行代表校验节点。
[0073]
在qc-ldpc码的情况下,奇偶校验矩阵300遵循循环结构。特别地,奇偶校验矩阵300包括多个循环子矩阵,其中这些循环子矩阵可以具有相同大小或不同大小(例如,每个循环子矩阵的大小可以为256
×
256,或者该大小可以变化)。通常,循环子矩阵可以对应于变量节点循环矩阵和校验节点循环矩阵。
[0074]
变量节点循环矩阵是来自奇偶校验矩阵300的矩阵,其针对变量节点具有循环特性。循环矩阵的列对应于一组变量节点。进一步地,循环矩阵完全由一个向量指定,例如第一列,剩余各列是该向量的循环排列,其中偏移量等于列索引。
[0075]
类似地,校验节点循环矩阵是来自奇偶校验矩阵300的矩阵,其针对校验节点具有循环特性。循环矩阵的行对应于一组校验节点。进一步地,循环矩阵完全由一个向量指定,例如第一行,剩余各行是该向量的循环排列,其中偏移量等于行索引。
[0076]
在图3的说明中,奇偶校验矩阵300的前八列和前八行对应于两个变量节点循环矩阵(图中标注为变量节点循环矩阵310a和变量节点循环矩阵310b)和两个校验节点循环矩阵(示为校验节点循环矩阵320a和校验节点循环矩阵320b)。这些循环矩阵310a、310b、320a和320b中的每一个的大小都是4
×
4。如上所述,该大小可以大得多(例如256
×
256)并且/或
者可以变化(例如,变量节点循环矩阵310a的大小可以为256
×
256,而变量节点循环矩阵310b的大小可以为128
×
128)。另外,变量节点循环矩阵的数量可以不同于校验节点循环矩阵的数量(例如,在示例中,其中奇偶校验矩阵300的大小为100
×
30并且使用10
×
10的循环子矩阵来定义,可以存在十个变量节点循环矩阵和三个校验节点循环矩阵)。
[0077]
考虑所示出的变量节点循环矩阵310a的示例,每一列对应于前四个变量节点(例如,变量节点0至3)中的一个,并且每一行对应于前四个校验节点(例如,校验节点0至3)中的一个。该变量节点循环矩阵310a的向量是
[0078]
考虑所示出的校验节点循环矩阵320b的示例,每一列对应于前四个校验节点(例如,校验节点0至3)中的一个,并且每一行对应于前四个变量节点(例如,变量节点3至7)中的一个。该校验节点循环矩阵320b的向量是
[0079]
如在奇偶校验矩阵300中所见,第一变量节点(变量节点0)连接到第一校验节点和第四校验节点(例如,分别为校验节点0和校验节点3)。第一变量节点与变量节点循环矩阵310a相关联,但不与变量节点循环矩阵310b相关联。第一和第四校验节点中的每一个与校验节点循环矩阵320a和校验节点循环矩阵320b两者相关联。通过这些关联,可以说变量节点循环矩阵310a与校验节点循环矩阵320a和校验节点循环矩阵320b两者相关联。在给定变量节点循环矩阵310a的循环属性的情况下考虑第二、第三和第四变量节点中的每一个时,可以在图3的说明性示例中得出相同的结论。相比之下,当在图3的说明性示例中考虑第五个变量节点(变量节点4)时,可以得出变量节点循环矩阵310b与校验节点循环矩阵320a和校验节点循环矩阵320b两者相关联的结论。此处,在给定变量节点循环矩阵310b的循环属性的情况下考虑第六、第七和第八变量节点中的每一个时,在图3的说明性示例中也可以得出相同的结论。
[0080]
如在下图中进一步描述的,可以在功耗方面改善消息处理,同时保持基于消息可靠性估计的错误校正能力性能。可以对一组消息执行单个可靠性的估计。该组可以由一个元素组成(例如,对每个消息执行估计)。然而,为了进一步降低功耗,该组可以包括多个消息。在一个示例中,该组由对应于与相同变量节点循环矩阵相关联的变量节点的v2c消息组成。在该示例中,消息可靠性估计是在变量节点循环矩阵的层面执行的。与在变量节点的层面执行消息可靠性估计相比(例如,每组由一个v2c消息组成),消息可靠性估计的处理节省了等于变量节点循环矩阵大小的倍数(factor)。
[0081]
在图3的具体说明中,并且如上文所解释的,变量节点循环矩阵310a和变量节点循环矩阵310b中的每一个与校验节点循环矩阵320a和校验节点循环矩阵320b两者相关联。令“j”为变量节点循环矩阵的索引(例如,变量节点循环矩阵310a的“j=1”以及变量节点循环矩阵310b的“j=2”)。令“k”为校验节点循环矩阵的索引(例如,校验节点循环矩阵330a的“k=1”以及校验节点循环矩阵330b的“k=2”)。在该示例中,对于奇偶校验矩阵的前八个变量
中1的数量与ldpc码字的校验和的比率。部分校正子“s
1”是基于“k=1”的校验节点循环矩阵(例如,校验节点循环矩阵320a)而计算的,例如基于与该校验节点循环矩阵相关联的不满足校验节点的数量(例如,不满足的校验节点的数量为0至3)。对于与“j=1”的变量节点循环矩阵相关联(例如,变量节点循环矩阵310a;在这种情况下,变量节点0至3中的任何一个)并且连接到与“k=1”的校验节点循环矩阵相关联的校验节点(例如,连接到校验节点0至3中的一个)的任意一个变量节点,估计可靠性“r
1,1”应用于从该变量节点到相连校验节点的v2c消息。
[0089]
变量节点处理单元410可以以专用处理单元上的硬件和/或软件来实施,该专用处理单元执行与结合图2a和图2b描述的操作(1)至(6)相对应或近似的操作。可选地,变量节点处理单元410可以被实施为通用处理器上的软件以执行操作(1)至(6)。在两个示例中,变量节点处理单元410针对变量节点生成v2c消息,其中该v2c消息为l(qij)。
[0090]
校验节点处理单元420可以以专用处理单元上的硬件和/或软件来实施,该专用处理单元执行与结合图2a和图2b描述的操作(7)至(10)相对应或近似的操作。可选地,校验节点处理单元420可以被实施为通用处理器上的软件以执行操作(7)至(10)。在两个示例中,校验节点处理单元420针对校验节点生成c2v消息,其中该c2v消息为l(r
ji
)。
[0091]
此外,校验节点处理单元420可以实施多种校验节点处理模式。校验节点处理模式计算或逼近用于生成c2v消息的一些或全部函数,包括例如结合操作(8)和(9)描述的“tanh”或“log”函数中的任意一个。例如,校验节点处理模式可以以特定的量化水平(例如,四个llr水平的两位量化,十六个llr水平的四位量化等)对函数进行量化。
[0092]
在图4的说明性示例中,校验节点处理单元420实施两种校验节点处理模式:简单模式422a和精确模式424a(尽管可以存在更多数量的校验处理模式)。简单模式422a利用两位量化来逼近函数(例如,为了计算),而精确模式424a利用四位量化来逼近函数(例如,为了计算)。以这种方式,简单模式422a与精确模式424a相比处理量相对较小(因此功率效率更高),而精确模式424a比简单模式422a更准确。因此,如果与传入v2c消息相关联的可靠性较低,则可以使用精确模式424a来准确地计算相应的c2v消息。相反,如果与传入v2c消息相关联的可靠性较高,则可以使用简单模式422a来高效地计算相应的c2v消息。当然,两位和四位量化仅仅是示例,并且可以存在其它高效或准确计算c2v消息的方法。
[0093]
在图4的进一步说明中,当遵循vss调度时,校验节点处理单元420包括多个每种类型的校验节点处理模式(例如,被示出为简单模式422a至简单模式422l的多个简单模式,以及被示出为精确模式424a至精确模式424l的多个精确模式)。以这种方式,校验节点处理单元420可以并行地处理多个校验节点(例如,多个校验节点的数量为“l”)。
[0094]
为了说明,返回参照图3,考虑变量节点0向校验节点0发送v2c消息的示例。在这种情况下,使用可靠性“r
1,1”并将其与可靠性阈值“θ”进行比较。如果“r
1,1
《θ”,则使用简单模式422a来计算否则,使用精确模式424a来计算可靠性阈值“θ”可以试探性地和/或通过实验来定义。可靠性阈值“θ”也可以是动态的,其中其值可以根据解码迭代次数、变量节点度(或变量节点所关联的变量节点循环矩阵的度)和/或校验节点度(或校验节点所关联的校验节点循环矩阵的度)而变化。
[0095]
图5至图6示出了部分地使用消息传递算法解码码字的示例流程。包括诸如ldpc解码器的解码器的错误校正系统被描述为执行示例流程的具体操作。该系统是图1的错误校正系统100的示例。在示例中,错误校正系统包括一个或多个处理器以及一个或多个存储器。存储器存储计算机可读指令以实现错误校正系统的特定功能。当由系统的处理器运行时该指令导致系统执行功能。存储在存储器中的指令与底层处理器一起代表用于执行功能的装置。进一步地,解码器包括一组变量节点处理单元、一组校验节点处理单元和一组可靠性估计器。校验节点处理单元中的至少一个或多个实施多个校验节点处理单元,并且可以根据可靠性估计器中的一个或多个所估计的消息可靠性来选择这些模式中的一个。消息传递算法由一组变量节点处理单元、一组校验节点处理单元和一组可靠性估计器来实施,其中该实施方案可以在通用处理器上运行的专用硬件和/或软件中实施。此处,通用处理器上的专用硬件和/或可运行指令也代表用于执行功能的装置。尽管以特定顺序示出了操作,但是操作还可以进行其它布置,并且对于本领域技术人员而言显而易见的是,可以跳过一些操作。
[0096]
图5示出了根据本公开的某些实施例的基于消息可靠性估计的码字解码的示例流程500。ldpc码字存储在实施错误校正系统的装置的存储器中。从存储器(例如,由检测器,例如图1的检测器120)读取ldpc码字,并且ldpc码字可能包括多个错误。解码器对ldpc码字迭代地解码以校正错误并输出解码位。
[0097]
如图所示,流程500包括操作502,其中错误校正系统确定变量节点到校验节点(v2c)消息。在示例中,v2c消息对应于连接到校验节点并由解码器的变量节点处理单元确定的变量节点。在ldpc码字的示例中,v2c消息是通过执行如结合图2a和图2b所描述的操作(1)至(6)而确定的,并且v2c消息被传递到校验节点(例如,被发送到解码器的处置校验节点的校验节点处理单元)。
[0098]
流程500还包括操作504,其中错误校正系统确定包括v2c消息的一组v2c消息的可靠性。在示例中,该组仅由一个v2c消息(例如,在操作502确定的v2c消息)组成。在该示例中,可以基于变量节点度、ldpc码字的校正子以及其它参数来确定可靠性。在另一个示例中,该组包括多个元素。例如,该组对应于变量节点循环子矩阵。此处,基于ldpc码字的校正子和部分校正子来确定可靠性。基于与校验节点相关联的校验节点循环矩阵来计算部分校正子。在具体的说明中,可靠性被确定为“r=sk中1的数量/cs”,其中“r”是可靠性,“s
k”是基于校验节点循环矩阵(例如,与校验节点循环矩阵相关联的不满足校验节点的数量)而计算的部分校正子,“sk中1的数量”是部分校验和,“cs”是ldpc码字的校验和。
[0099]
流程500还包括操作506,其中错误校正系统基于可靠性从多个不同的校验节点处理模式中选择一种校验节点处理模式。例如,将可靠性与一个或多个可靠性阈值“θ”进行比较。可靠性阈值“θ”的数量可以基于校验节点处理模式的数量(例如,如果该数量为“l”,则可靠性阈值“θ”的数量为“l-1”;在简单模式和精确模式的示例中,可靠性阈值“θ”的数量为1)。可以基于解码迭代次数、变量节点度和/或校验节点度来定义可靠性阈值“θ”。根据比较,校验节点处理模式被选择为对应于可靠性结果范围的模式(例如,在简单模式和精确模式的示例中,如果可靠性小于可靠性阈值“θ”,则选择简单模式;否则选择精确模式)。
[0100]
流程500还包括操作508,其中错误校正系统基于校验节点处理模式来确定校验节点到变量节点(c2v)消息。在示例中,校验节点处理模式近似于上文结合图2a和图2b描述的
操作(7)至(10)。通常,可靠性越高(如基于结合操作506描述的比较所确定的),校验节点处理模式的逼近越准确,但是该校验节点处理模式的功率效率就越低。相反,可靠性越低(如基于结合操作506描述的比较所确定的),校验节点处理模式的逼近越不准确,但是该校验节点处理模式的功率效率就越高。在简单模式和精确模式的示例中,简单模式为第一校验节点处理模式,精确模式为第二校验节点处理模式。第一校验节点处理模式基于第一量化水平来逼近变量节点的对数似然比。第二校验节点处理模式基于第二量化水平来逼近变量节点的对数似然比。第二量化水平(例如,四位量化)大于第一量化水平(例如,两位量化)。
[0101]
流程500还包括操作510,其中错误校正系统基于c2v消息解码ldpc码字。例如,将c2v消息发送到变量节点处理单元,针对不同的变量节点和校验节点执行操作502至508,并且迭代地重复操作502至508以进行多次解码迭代,直到达到最大迭代次数或ldpc码字的校正子为零。此时,错误校正系统将解码位作为解码后的ldpc码字输出。
[0102]
为了说明,在qc-ldpc解码的情况下,在解码迭代期间,计算ldpc码字的校正子,增加解码迭代次数,并且确定增加后的解码迭代次数是否不超过最大次数以及校正子是否不为零。如果达到最大次数或校正子为零,则解码结束。否则,解码进行到下一次解码迭代。在对应于增加后的解码迭代次数的下一次解码迭代期间,更新对应于变量节点的v2c消息(例如,每次操作502),确定变量节点与“j”变量节点循环矩阵相关联,确定连接到变量节点的校验节点与“k”校验节点循环矩阵相关联,将该组v2c消息的可靠性确定为“r
k,j
=sk中1的数量/cs”,其中“r
k,j”是可靠性,“s
k”是基于“k”校验节点循环矩阵而计算的部分校正子,“cs”为ldpc码字的校验和。另外,将可靠性“r
k,j”与可靠性阈值“θ”进行比较。基于比较选择校验节点处理模式(例如,如果仅仅使用一个可靠性阈值“θ”,在使用简单模式和精确模式的情况下,如果可靠性“r
k,j”小于可靠性阈值“θ”,则选择简单模式;否则,选择精确模式)。在计算对应于与校验节点循环矩阵相关联的校验节点的各种c2v消息时,更新部分校正子“s
k”(例如,作为此类不满足校验节点的数量的函数)。在该下一次解码迭代期间,可以针对剩余的变量节点循环矩阵和剩余的校验节点循环矩阵重复一些或所有子操作。
[0103]
图6示出了根据本公开的某些实施例的基于消息可靠性估计的码字解码的更详细示例流程600。流程600的操作可以被实施为流程500的一些或全部操作的子操作,特别是在qc-ldpc解码的情况下。
[0104]
如图所示,流程600开始于操作602,其中错误校正系统初始化解码。例如,解码迭代次数“i”被设置为零。并且ldpc码字的校正子“s”被初始化为“'
(-1)”,其中“'
(-1)
=yh
t
,”,其中“y”对应于检测器的输出(例如,基于读取电压电平的硬解码),并且“h
t”是奇偶校验矩阵的转置。通常,解码迭代“i”处的校正子“s
(i)”被计算为其中表示在解码迭代“i”处变量节点“m”的判决。
[0105]
流程600还包括操作604,其中错误校正系统将解码迭代次数递增(例如,将“i”增加1使得“i=i+1”)。
[0106]
流程600还包括操作606,其中错误校正系统确定在操作604增加后的解码迭代次数是否已经达到最大次数。错误校正系统还确定ldpc码字的校正子“s
(i)”是否为零。如果达到最大次数或校正子“s
(i)”为零,则在操作606之后进行操作608。否则,流程600进行到操作610。
[0107]
流程600还包括操作608,其中错误校正系统停止解码。如果校正子“s
(i)”为零,则输出解码后的ldpc码字,其中该输出为如果校正子“s(
i=最大次数
)”不为零并且达到最大迭代,则可以声明解码失败。
[0108]
流程600还包括操作610,其中错误校正系统将“j”设置为1。此处,“j”为变量节点循环矩阵的索引。例如,在100
×
300的奇偶校验矩阵的情况下,采用10
×
10的循环子矩阵,“j”可以在1和“n
circ”之间变化,其中“n
circ”为变量节点循环矩阵的总数量,并且在该示例中,“n
circ”为十至一百(one-hundred over ten)(例如,十)。
[0109]
流程600还包括操作612,其中错误校正系统确定“j”是否小于或等于变量节点循环矩阵“n
circ”的总数量。如果是,则在操作610之后进行操作614。否则,流程600循环回到操作604以将解码迭代次数“i”递增。
[0110]
流程600还包括操作614,其中错误校正系统更新与具有索引“j”的变量节点循环矩阵相关联的每个变量节点的v2c消息。特别地,根据上文结合图2a和图2b描述的操作(1)至(6),这种v2c消息中的每一个可以由变量节点处理单元更新。
[0111]
流程600还包括操作616,其中错误校正系统确定一组校验节点循环矩阵,其中这些矩阵中的每一个与具有索引“j”的变量节点循环矩阵相关联(例如,如结合图3的循环矩阵所述)。这个组被表示为“m(j)”。该组“m(j)”的校验节点循环矩阵中的每一个具有索引“k”。在操作616,错误校正系统进一步确定组“m(j)”的校验节点循环矩阵中的每一个是否已经被处理(在图中用“k∈m(j)”示出)。如果是,则在操作616之后进行操作618。否则,流程600进行到操作620,从而处理组“m(j)”的未处理校验节点循环矩阵。
[0112]
流程600还包括操作618,已经处理了组“m(j)”的所有校验节点循环矩阵。因此,错误校正系统增加索引“j”并且流程600循环回到操作612。
[0113]
流程600还包括操作620,尚未处理组“m(j)”的一些或所有校验节点循环矩阵。因此,对于索引“k”具有特定值的未处理校验节点循环矩阵中的每一个,错误校正系统计算可靠性为“r
k,j
=sk中1的数量/cs”,其中“r
k,j”是可靠性,“s
k”是基于“k”校验节点循环矩阵而计算的部分校正子,“cs”为ldpc码字的校验和并且对应于校正子“s
(i-1)”中1的数量。
[0114]
流程600还包括操作622,其中错误校正系统将可靠性与一组可靠性阈值“θ”进行比较。在图6的说明性示例中,该组由支持简单模式和精确模式的单个“θ”组成。如果小于可靠性阈值“θ”,则在操作622之后进行操作624,由此选择简单模式。否则,在操作622之后进行操作626,由此选择精确模式。
[0115]
流程600还包括操作624,其中错误校正系统更新对应于与“k”校验节点循环矩阵相关联的校验节点的c2v消息。该更新包括使用简单模式,其中例如计算简单函数在操作624之后进行操作628。
[0116]
流程600还包括操作626,其中错误校正系统还更新对应于与“k”校验节点循环矩阵相关联的校验节点的c2v消息。然而,此处该更新包括使用精确模式,其中例如计算精确函数在操作626之后进行操作628。
[0117]
流程600还包括操作628,其中错误校正系统计算并更新校正子“s
(i)”。在示例中,每完成“k”校验节点循环矩阵的处理,不是更新整个校正子“s
(i)”,而是针对部分校正子“sk770和磁盘驱动器780可以包括为程序和数据文件提供持久(非易失性)存储的文件存储子系统。ram 770和磁盘驱动器780还可以包括可移动存储系统,例如可移动闪速存储器。
[0127]
总线子系统790提供一种用于让计算机720的各种组件和子系统按预期相互通信的机制。尽管总线子系统790被示意性地示为单个总线,但是总线子系统的可选实施例还可以利用多个总线。
[0128]
图7是能够实现本公开的计算机系统的示例。对于本领域普通技术人员而言显而易见的是,许多其它硬件和软件配置适用于本公开。例如,计算机可以是台式机、便携式、机架式或平板电脑配置。另外,计算机可以是一系列联网的计算机。进一步地,考虑使用其它微处理器,诸如pentium
tm
或itanium
tm
微处理器;来自amd公司(advanced micro devices,inc.)的opteron
tm
或athlonxp
tm
微处理器等。进一步地,考虑其它类型的操作系统,诸如来自微软公司(microsoft corporation)的等,来自太阳微系统(sun microsystems)的solaris,linux,unix等。在其它实施例中,上述技术可以在芯片或辅助处理板上实施。
[0129]
本公开的各个实施例可以以软件或硬件或两者的组合的逻辑形式来实施。该逻辑可以作为一组指令存储在计算机可读或机器可读的非暂时性存储介质中,该组指令适于指导计算机系统的处理器以执行本公开实施例中公开的一组步骤。该逻辑可以形成计算机程序产品的一部分,该计算机程序产品适于指导信息处理装置执行本公开实施例中公开的一组步骤。基于本文提供的公开和教导,本领域普通技术人员将理解实施本公开的其它方式和/或方法。
[0130]
本文描述的数据结构和代码可以部分或全部存储在计算机可读存储介质和/或硬件模块和/或硬件设备上。计算机可读存储介质包括但不限于易失性存储器、非易失性存储器、磁和光存储装置(例如,磁盘驱动器、磁带、cd(光盘)、dvd(数字多功能光盘或数字视频光盘))或能够存储代码和/或数据的现在已知或以后开发的其它媒介。本文描述的硬件模块或设备包括但不限于专用集成电路(asic)、现场可编程门阵列(fpga)、专用或共享处理器和/或现在已知或以后开发的其它硬件模块或设备。
[0131]
本文描述的方法和过程可以部分或全部实现为存储在计算机可读存储介质或装置中的代码和/或数据,从而当计算机系统读取和运行代码和/或数据时,计算机系统执行相关联的方法和过程。这些方法和过程也可以部分或全部以硬件模块或设备实现,从而当硬件模块或设备被激活时,它们执行相关联的方法和过程。本文公开的方法和过程可以使用代码、数据和硬件模块或设备的组合来实现。
[0132]
尽管为了清楚理解的目的已经对前述实施例进行了一些详细的描述,但是本公开不限于所提供的细节。存在许多实施本公开的可选方式。所公开的实施例是说明性而非限制性的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1