用于通用乘积码背景的低延迟软解码器架构的制作方法

文档序号:13807892阅读:183来源:国知局
用于通用乘积码背景的低延迟软解码器架构的制作方法

相关申请的交叉引用

本申请要求于2016年8月11日提交的临时申请号为62/373,935、题为“用于通用乘积码的低延迟软解码器架构(lowlatencysoftdecoderarchitectureforgeneralizedproductcodes)”的美国临时申请的优先权,共同拥有并通过引用将其全部明确地并入本文。



背景技术:

在nand闪存中,使用最广泛的高级错误控制编码技术基于低密度奇偶校验(ldpc)码和博斯-查德胡里-霍昆格姆(bose-chaudhuri-hocquenghem,bch)码。虽然bch码具有硬件友好的实施方式,但是当多个nand读取被用于生成软信息时,由于它们缺乏软解码支持,所以其可能没有吸引力。ldpc软解码器提供显著的性能提升。然而,ldpc解码器具有大的片上系统(soc)面积并消耗相对更多的功率。

鉴于ldpc和bch码的缺点,已经开发了一类代码,其中这些代码可以支持具有较小的soc面积和较小的功耗的软判决解码。这些代码包括乘积码。于2014年3月26日提交的专利号为9,231,623、题为“使用错误交叉对turbo乘积码(tpc)进行chase解码(chasedecodingforturbo-productcodes(tpc)usingerrorintersections)”的美国专利,于2016年5月18日提交的申请号为15/158,425、题为“用于nand闪存的通用乘积码(generalizedproductcodesfornandflashstorage)”的美国专利申请,以及于2017年3月15日提交的申请号为15,460,155、题为“用于通用乘积码的软解码器(softdecoderforgeneralizedproductcodes)”的美国专利申请,均共同转让并通过引用以其全部明确地并入本文,其描述了这种代码及其解码的示例。

与ldpc码相比,乘积码可以在硬判决解码中提供显著的性能提升,具有更小的soc面积和功率。在于2017年3月15日提交的申请号为15,460,155、题为“用于通用乘积码的软解码器”的美国专利申请中,描述了一种软解码器架构。该架构提供了接近ldpc码的软解码性能。除了soc面积和功率益处之外,与ldpc码相比,乘积码在吞吐量方面具有竞争力。

然而,与ldpc软解码器相比,通用乘积码(gpc)的软解码器的延迟可能相当高。在被共同地转让并通过引用以其全部明确地并入本文的于2016年5月18日提交的申请号为15/158,416、题为“turbo乘积码的软解码中的性能优化(performanceoptimizationinsoftdecodingforturboproductcodes)”的美国专利申请中,描述了用于chase解码的提前中止算法。提前中止算法可以降低软解码器的延迟。尽管这种延迟的降低是显著的,但ldpc解码器仍然是更快的软解码器。

许多产品应用对于硬和/或软判决解码可以是延迟敏感的。例如,为了使gpc解决方案适于移动、客户端和企业应用,还需要显著地减少软解码器延迟。



技术实现要素:

本文描述了用于码字解码的技术。这些技术可以在系统内实现,并降低系统的整体解码延迟,而不会对误码率(ber)性能产生重大影响。在示例中,在系统上可获得多个chase解码程序。例如,每个chase解码程序由系统的软解码器实施。通常,chase解码程序使用相同的解码算法对gpc码字进行解码。因此,chase解码程序共享公共的一组解码参数。然而,解码参数的值在不同的chase解码程序中是不同的。特别地,为每个chase解码程序设置值从而为该程序实现特定的解码延迟。例如,第一值可用于第一chase解码程序,并且第二不同值可用于第二chase解码程序。基于这些值,相对于第二chase解码程序,第一chase解码程序可以具有更好的解码延迟(例如,较小的一个),但具有较差的ber(例如,较高的一个)。系统使用chase解码程序的至少一个来对gpc码字进行解码。

在示例中,软解码器串联连接。在该串联中的第一chase解码程序可以具有最快的解码延迟,但ber最差。相比之下,在该串联中的最后的chase解码程序可以具有最慢的解码延迟,但ber最好。将gpc码字输入到第一软解码器。仅在该解码器处发生解码失败时,gpc码字才被输入到该串联中的下一软解码器,依此类推。

在示例中,软解码器并联设置。在解码时,可以获得关于ber的信息。也可以获得映射,其中映射将软解码器与ber范围相关联。进行ber与ber范围的比较,并选择软解码器中的一个。将gpc码字输入到所选择的软解码器进行解码。

附图说明

可以通过参考以下附图来实现对各个实施例的性质和优点的理解。在附图中,类似的部件或特征可以具有相同的附图标记。此外,可以通过在附图标记后加上区分相似部件的破折号和第二标记来区分相同类型的各种部件。如果在说明书中仅使用第一附图标记,则该描述适用于任何具有相同的第一附图标记的相似部件,而与第二附图标记无关。

图1示出根据本公开的某些实施例的错误校正系统的示例性高级框图。

图2a和图2b是示出根据本公开的某些实施例的通用乘积码(gpc)的简化示意图。

图3示出根据本公开的某些实施例的实施多个chase解码程序的解码器的示例性配置。

图4示出根据本公开的某些实施例的实施多个chase解码程序的解码器的另一示例性配置。

图5示出根据本公开的某些实施例的基于系统上可用的多个解码器中的至少一个对码字进行解码的示例性流程。

图6示出根据本公开的某些实施例的基于串联的解码器对码字进行解码的示例性流程。

图7示出根据本公开的某些实施例的基于并联的解码器对码字进行解码的示例性流程。

图8示出根据本公开的某些实施例的配置实现期望的解码性能、其中提供多个解码器的系统的示例性流程。

图9描述可以根据一个实施例使用的系统的一个潜在的实施方式。

具体实施方式

下面提供了本发明的一个或多个实施例的详细描述以及说明本发明的原理的附图。结合这些实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明包括许多替代选择、修改和等同物。为了提供对本发明的全面理解,在下面的描述中阐述了许多具体细节。为了示例的目的提供这些细节,并且本发明可在没有一些或所有这些具体细节的情况下,根据权利要求书被实施。为清楚起见,没有详细描述与本发明相关的技术领域中公知的技术内容,以免不必要地模糊本发明。

本公开的实施例涉及一种新颖的软解码器架构,其为延迟敏感的产品应用降低了期望解码方案(regime)中的延迟。在示例性实施例中,系统使用chase解码来对gpc码字进行解码。系统上可获得多个chase解码程序。每个chase解码程序根据一组解码参数的特定值进行配置。该组参数在chase解码程序中是常见的。例如,该组参数包括第一参数“l”和第二参数“s”,在这种情况下,chase解码可以被称为chase(l,s)解码。第一参数“l”限制在多次翻转中翻转可用的gpc码字的位的总数量,以校正解码的码字中的错误。第二参数“s”限制在单次翻转中翻转可用的位的总数量。例如,在chase(4,2)解码程序中,可以翻转gpc码字的四个位,其中每次翻转位时,应当使用待翻转的两个位的组合。通过改变解码参数的值,可以针对延迟或误码率(ber)来优化每个解码程序。例如,第一参数“l”越小,chase解码程序越快(例如,其解码延迟越短),但其ber越差(例如,ber越大)。系统智能地使用chase解码程序的至少一个对gpc码字进行解码。例如,使用最快的chase解码程序(例如,解码延迟最小的那些)。如果得到的ber可接受,则不需要额外解码。否则,使用另一解码程序。因此,鉴于智能地使用chase解码程序,系统的整体解码延迟被降低。

举例而言,可用的chase解码程序包括第一chase解码程序和第二chase解码程序。第一chase解码程序根据解码参数的第一值(例如,将“l”设置为6,将“s”设置为1)配置。第二chase解码程序根据解码参数的第二值(例如,将“l”设置为12,将“s”设置为5)配置。在该示例中,第一chase解码程序更快(例如,具有相对较小的延迟),但是其具有比给定了用于一组公共的解码参数“l”和“s”的值的第二chase解码程序更差的ber性能(例如,具有相对较大的ber)。如果第一ber性能可以接受,则系统可以使用第一解码程序来对gpc码字进行解码。

不同的技术可以使用可用的chase解码程序。在一个示例性技术中,这些程序串联连接。该串联中的第一chase解码程序通常最快,但具有较差的ber。相反,该串联中的最后的chase解码程序最慢,但具有最佳的ber。将gpc码字输入到chase解码程序中的一个(例如,第一个)。如果其解码失败,则将gpc码字输入到下一个连接的chase解码程序(例如,串联中的第二个),依此类推。如果解码成功,则gpc码字不需要再被输入到下一个连接的chase解码程序。

在另一示例性技术中,可用的chase解码程序被并联设置。也可在系统上(例如,从存储器)获得映射。该映射指定给定了ber范围的特定的chase解码程序的选择。因此,系统使用ber估计和映射来选择chase解码程序中的一个。例如,所选择的过程具有ber估计所属的ber范围。此后,系统通过使用所选择的chase解码程序对gpc码字进行解码。

为了清楚说明,结合gpc码字和chase解码程序描述本公开的实施例。然而,这些实施例不限于此,并且类似地适于诸如turbo乘积码(tpc)和通用ldpc(g-ldpc码)的其他类型的代码以及其他类型的硬和/或软解码程序。通常,在系统上可获得多个解码程序,例如串联或并联。这些解码程序实施相同的解码算法,并且根据用于执行解码算法的一组公共的解码参数进行配置。解码参数的值随着解码程序变化以改变性能。例如,为第一解码程序设置一组值以优化延迟(例如,降低延迟),但是可能导致较高的ber。第二解码程序的值被设置为优化ber(例如,降低ber),但是可能导致较高的延迟。这两个解码程序可以结合使用(无论是串联还是并联)以实现整体解码延迟和ber。

本文中使用的术语“错误校正码(ecc)”指通过向消息中添加冗余数据或奇偶校验数据的过程生成的码字,使得即使在传输或存储过程中引入了许多错误时,其也可以通过接收器恢复。通常,ecc解码可以校正一个或多个错误,直到达到正在使用的代码的能力。错误校正码经常用于通信,也用于在诸如cd、dvd、硬盘和随机存取存储器(ram)、闪速存储器等的存储系统中的可靠存储。错误校正码包括gpc码。

术语“硬判决”在本文中被用于指包括值“0”或“1”的位,并且与码字内的特定位置相关联。“硬判决”也可被称为“硬输出”或“硬信息”。在一些实施例中,每个硬判决的可靠性可能是已知的。硬判决的“可靠性”指相应的硬判决是正确的概率(例如,从“0”到“1”的值)。“可靠性”也可被称为“软信息”或“软输出”。在nand通道中,每个位的可靠性可通过例如使用不同阈值对nand存储器进行多次读取操作来获得。通常,如果码字的硬判决解码失败,则软信息可以被用来通过使用诸如chase解码的软解码技术对失败的码字进行解码。

图1示出根据本公开的某些实施例的错误校正系统100的示例性高级框图。在示例性示出中,系统100包括编码器110、存储系统120、检测器130和解码器140。编码器110接收包括期望被存储在存储系统120中或在通信通道中传输的数据的信息位。被编码的数据由编码器110输出并被写入存储系统120。在各个实施例中,存储系统120可包括各种存储类型或介质,诸如磁盘驱动器存储、闪存等。在一些实施例中,本文所述的技术被用在收发器中,数据通过通道(例如,有线或无线)传输和接收,而非被写入存储或从存储中读取。在这种情况下,在码字的传输过程中可能引入接收到的码字中的错误。

当请求或以其他方式需要(例如,由应用或用户)存储的数据时,检测器130从存储系统120接收数据。接收到的数据可能包括一些噪声或错误。检测器130对接收到的数据执行检测,并且输出与码字中的一个或多个位对应的判决和/或可靠性信息。例如,软输出检测器为每个检测到的位输出可靠性信息和判决。另一方面,硬输出检测器在不提供相应的可靠性信息的情况下输出关于每个位的判决。作为示例,硬输出检测器可输出特定位为“1”或“0”的判决,而不指示在该判决中检测器的确定程度。相比之下,软输出检测器输出与判决相关联的判决和可靠性信息。通常,可靠性值指示在给定的判决中检测器的确定程度。在一个示例中,软输出检测器输出对数似然比(llr),其中符号指示判决(例如,正值对应于“1”判决,负值对应于“0”判决),并且大小指示检测器对该判决的确定程度(例如,较大的大小指示较高的可靠性或确定性)。

判决和/或可靠性信息被传递到解码器140,该解码器140使用判决和/或可靠性信息进行解码。软输入解码器利用判决和可靠性信息两者来对码字进行解码。硬解码器仅利用解码器中的判决值来对码字进行解码。在解码之后,由解码器140生成的解码位被传递到适当的实体(例如,请求其的用户或应用)。通过适当的编码和解码,信息位与解码位相匹配。

解码器140可根据码字的类型以及对应于每个位的可靠性信息是否可用来实施多个解码方案(例如,使用专用集成电路(asic)、现场可编程门阵列(fpga)和/或通用处理器(例如,高级risc机器(arm)核心)而被实施的解码算法)。

在示例性实施例中,解码器140实施多个chase解码程序。每个被实施的程序表示一个软解码器。如图3进一步所示的,软解码器可以串联连接,或如图4进一步所示的,并联连接。于2017年3月15日提交的申请号为15,460,155,题为“用于通用乘积码的软解码器”的美国专利申请、于2016年5月18日提交的申请号为15/158416,题为“turbo乘积码的软解码中的性能优化”,以及于2017年2月13日提交的申请号为15/431554,题为“用于乘积码的软解码器参数优化”(所有这些均共同转让并通过引用明确地并入本文)描述了chase解码程序的示例。

通常在chase解码中,翻转了最不可靠的位(例如,根据位的llr),并且多次硬解码被多次执行。成功的硬解码程序的输出根据与接收的码字的欧几里得距离进行排序,并且将最接近的码字选择为候选解码的码字。这通常跟随着额外的程序(例如,避免误校正阈值(miscorrectionavoidancethresholding)(mat)),以确定所选择的候选码字(例如,chase解码器的输出)是否为正确的码字,或者是否为误校正的码字。在一个示例中,当宣告有误校正时,在该chase解码的迭代中不对接收到的码字进行改变,以避免在码字中增加新的错误。

在chase(l)解码中,在试图校正错误时位将被翻转的任何时候,仅“l”位被选择和翻转(例如,具有最小llr的“l”位)。“l”表示解码参数。因此,可以翻转较小数量的“l”,而不是翻转大量的位。可能的位翻转的数量相应地减少为“2l-1”。如此,相对于不根据“l”参数限制位翻转的chase解码,降低了解码延迟。

在chase(l,s)解码中,在试图校正错误时位将被翻转的任何时候,仅“l”位被翻转。此外,当翻转“l”位时,仅可以翻转“s”位的组合。“s”表示第二解码参数。因此,可能翻转的次数进一步减少到(例如,一组“l”位中的“s”位的组合)。如此,相对于chase(l)解码,进一步减少了解码延迟。

图2a和图2b是示出根据本公开的某些实施例的示出gpc码字的简化示意图。作为示例,gpc码200是其中信息位被以块分组的乘积码,信息位的块和一个或多个xor奇偶校验块被布置在数据块的矩形矩阵中。在图2a的示例中,信息位的数据块被编号为d1-d9,并且每个块dk包含“i”位,其中“i”为正整数。每行数据被重新排列(permute),并且在重新排列的数据上构造码字奇偶校验,其在图2a中被示为单向奇偶校验。此外,对奇偶校验(pop)的奇偶校验是通过列式组合单向奇偶校验来构建的。该布置被配置成去除误校正,因为对于具有排列变化的改变的数据位置的不同行将不会形成相同的码字。所有的数据块都被保护两次,然而单向奇偶校验被保护一次。奇偶校验(pop)将增加另一级别的保护,以去除奇偶校验中的错误。

在图2b中,示出了具体的示例来说明gpc码250的构造。然而,此处描述的构造可以用于任何类别的乘积码。例如,在另一实施例中,乘积码构造可以被扩展到更高的维度。在实施例中,数据块可以在三维通用乘积码中被保护三次。

在图2b中,块中的数据位的数量“i”被视为整数,例如从八至十六,但是其可以是基于期望的数据长度和码率的任何选择的值。使ncw为行码字的数量,其在图2b中等于五,即存在被指定为cw1-cw5的五个码字。被指定为“xor”或“xor奇偶校验”的块通过采取长度“i”的所有数据块的xor(异或)和第一(ncw-1)行码字的奇偶校验来构造。在一些实施例中,可以形成多个xor块,每个xor块基于信息位的所有数据块的子集构造。“xor奇偶校验”块的长度也等于“i”。所有的单向奇偶校验由另一组成代码进一步编码,其被称为对奇偶校验或pop的奇偶校验。在该代码构造中,解码标准是如果所有的ncw码字都可解码并满足xor奇偶校验,则数据被成功解码。该解码标准有助于避免误校正。在这种构造中,xor用于校正卡住模式。

在该示例中,可以看出,每对组成码字彼此共享公共的数据位块。换言之,相同的数据块包含在两个码字中。例如,数据块d1位于cw1和cw2两者之中,因此cw1和cw2共享数据块d1。类似地,cw1和cw3共享数据块d2,cw1和cw4共享数据块d3,并且cw1和cw4共享数据块d4。此外,cw2和cw3共享数据块d5,cw3和cw4共享数据块d8,并且cw4和cw5共享xor数据块等。

图3示出根据本公开的某些实施例的实施多个chase解码程序的解码器300的示例性配置,诸如图1的解码器140。图3示出对应于用于解码gpc码字的三个可能的阶段的三个chase解码程序。然而,不同数量的解码程序是可能的,无论这些过程是chase解码程序、另一类型的解码程序,还是不同类型的解码程序的组合。

通常,chase解码程序为串联连接。在实施例中,串联连接将chase解码程序级联,其中gpc码字被输入到特定的chase解码程序。一方面,如果解码成功,则从chase解码程序输出解码的码字。该输出和gpc码字不需要用作对任何剩余的chase解码程序的输入。另一方面,如果解码失败,则gpc码字变成对该串联中的下一chase解码程序的输入。例如,gpc码字是来自特定的失败的chase解码程序的输出,并被输入到下一chase解码程序。

在图3的说明性示例中,阶段一的更快的软解码器310(例如,实施第一chase解码程序的解码器)是该串联中的第一解码器。阶段二的快速的软解码器320(例如,实施第二chase解码程序的解码器)是该串联中的第二解码器,并且被连接到阶段一的更快的软解码器310。阶段三的慢速的软解码器330(例如,实施第三chase解码程序中的一个)是该串联中的最后的解码器,并且被连接到阶段二的快速的软解码器320。三个软解码器310至330形成解码器300。三个解码器310至330中的每一个实施chase解码程序,该chase解码程序使用例如在三个解码器310至330中公共的一组解码参数“l”和“s”。参数的值进行了优化以便以另一种类型的性能(例如,ber或延迟)为代价来实现期望的性能(例如,延迟或ber)。通常,可以翻转的位的数量越多,延迟越长,ber越小。例如,“l”和“s”参数限制可能的位翻转的组合的数量。可能的位翻转的次数越小,chase解码程序越快,但ber越差。

系统的整体延迟可以表示为:其中“i”为整数,并且“n”为阶段的数量(例如,在图3的示例中“n”为三)。由于在每个阶段的ber相对于前一阶段的都被降低,所以系统的总体延迟相对于现有的解码系统被降低。

除了“l”和“s”参数以外,存在其他的解码参数并且其可被用于对诸如延迟或ber的性能进行优化。例如,解码参数可进一步包括误校正避免阈值(mat)参数,软解码全局循环的最大迭代和最大迭代次数。应当注意的是,“l”、“s”和mat参数的值也可以根据迭代次数而改变。通常,不同的解码参数针对延迟(例如,实现期望的解码延迟)或ber(例如,使得在所需的代码故障率(cfr)之前没有错误平层)进行优化。在延迟和错误平层优化中存在折衷。通常,被更短延迟优化的参数具有更差的错误平层。于2017年2月13日提交的申请号为15/431554,题为“用于乘积码的软解码器参数优化”,其共同转让并通过引用明确地并入本文,描述了用于设置解码参数的值以实现期望的性能的不同技术。

诸如gpc码字的输入码字302被输入到阶段一的更快的软解码器310。如果使用第一程序的解码成功,则输出码字312从阶段一的更快的软解码器310被输出。否则,输入码字302被输入到阶段二的快速的软解码器320。此外,如果使用第二过程的解码成功,则输出码字322从阶段二的快速的软解码器320被输出。否则,输入码字302被输入到阶段三的慢速的软解码器330。假设解码成功,则输出码字332从阶段三的慢速的软解码器330被输出。当然,如果使用第三过程解码失败,则使用下一解码程序(如果存在)或宣告解码失败。

在一个特别的实施例中,软解码器310是chase(8,6)解码器。该解码器310的平均延迟为大约六十微秒,错误平层被推到(push)1e-2cfr。相比之下,软解码器320是chase(6,4)解码器。解码器320的平均延迟为大约一百二十五微秒,错误平层被推到1e-5cfr。软解码器330是chase(10,4)解码器。解码器330的平均延迟为大约六百微秒,错误平层被推到1e-11cfr。在该特别的实施例中,三阶段架构具有60+1e-2×125+1e-5×600=61.3秒的总延迟。相对于最慢但最佳的ber解码器(例如,具有六百微秒延迟和1e-11cfr的阶段三软解码330),三阶段架构可以使平均延迟大约快十倍(例如,61.3微秒与六百微秒相比),同时实现类似的ber。

图4示出根据本公开的某些实施例的实施多个chase解码程序的解码器400的另一示例性配置,诸如图1的解码器140。此处和图3类似,使用三个chase解码程序。然而,不同数量的解码程序也是可能的。与图3的配置不同的是,三个chase解码程序并联设置。

在实施例中,仅使用可用的chase解码程序中的一个对gpc码字进行解码。更具体地,选择特定的chase解码程序,其中该选择取决于与噪声和/或错误相关的因素的数量。然后将所选择的chase解码程序用于解码。剩余的chase解码程序不用于解码。在示例中,因素包括在解码时的ber估计和chase解码程序对ber范围的映射。例如,如果ber估计落入对应于特定chase解码程序的ber范围内,则选择该过程用于解码。

在图4的特别的实施例中,解码器400包括并联设置的三个软解码器:阶段一的更快的软解码器410、阶段二的快速的软解码器420和阶段三的慢速的解码器440。这些解码器中的每一个都实施chase解码程序。不同的chase解码程序共享一组公共的解码参数。然而,这些参数的值在不同的chase解码程序之间变化,并且针对期望的性能(例如,延迟或ber)进行了优化。图4的三个软解码器410、420和430可以分别与图3的三个软解码器310、320和330具有相同的参数和相关联的值。

另外,解码器400包括ber估计和阶段选择模块440。该模块400可以被实施为硬件,或者作为托管在硬件上的软件或固件来。模块440被配置成在给定关于噪声和/或错误的一些因素的情况下选择三个软解码器410、420和430中的一个。例如,如果在解码时可获得一些关于ber的信息,则模块440使用该信息来选择特定的软解码器。

在特别的示例中,为了选择软解码器(或等效地,chase解码程序),模块440使用ber估计和对可用的软解码器410、420、430的ber范围的映射。更具体地,软解码器410、420、430中的每一个都在ber范围内操作。例如,阶段一的更快的软解码器410的范围是1至1e-2cfr。阶段二的快速的软解码器420的范围是1e-2cfr至1e-5cfr。阶段三的慢速的软解码器430的范围是1e-5cfr至1e-11cfr。映射将软解码器410、420、430的每一个与这些范围中的一个相关联。如果ber估计落入特定范围内,则模块440选择与该范围相关联的软解码器。

如图8进一步所示的,映射可以通过模拟来开发。简而言之,一旦软解码器的解码参数被设置为特定值以实现例如特定的延迟性能,则模拟软解码器的ber性能。给定ber性能模拟,得出ber范围。更新该映射以将该ber范围映射到软解码器的标识符。

也可获得各种技术来确定ber估计,并且对于本领域技术人员来说应该是显而易见的。在一个示例中,ber估计可从读取gpc码字的闪存装置的存储器获得。在另一示例中,模块440估计观察到的ber。为此,模块使用权重向量“w”。该权重向量“w”可从实现解码器400的系统的存储器获得。在解码之前导出权重向量“w”,例如在模拟阶段期间。在模拟阶段,在模拟阶段期间使用了训练码字。训练码字(表示为矩阵“tc”)以已知的ber(表示为向量“b”)输入到解码器400。权重向量“w”是计算出的,其中“tc”和“w”的乘积为ber向量“b”。在完成模拟阶段后,权重向量“w”被存储在系统的存储器中。此后,在对不同码字(表示为矩阵“dc”)进行解码时,观测到的ber被估计为“dc”和“w”的乘积。

如图4所示,诸如gpc码字的输入码字402被输入到解码器400。ber估计和阶段的选择模块440选择三个软解码器410、420或430中的一个对该输入码字412进行解码。类似地,如果替代性地选择阶段二的快速的软解码器420,则该第二解码器用于解码并输出输出码字422。类似地,如果选择阶段三的慢速的软解码器430来代替前两个解码器,则该第三解码器用于解码并输出输出码字432。此处,解码器400的延迟性能类似于图3的解码器300(约61.3微秒),因为在给定关于ber的可用信息的情况下,仅软解码器410、420和430被智能地选择用于解码。

转到图5至图7,附图示出用于对码字进行解码的示例性流程。诸如ecc系统或ecc系统内的解码系统的系统可被配置成执行说明性流程。执行说明性流程的操作的指令可以被作为计算机可读指令而存储在系统的非暂时性计算机可读介质上。如存储的那样,指令表示包括可由系统的处理器执行的代码或数据的可编程模块。执行这种指令使得系统执行附图所示并在此描述的具体操作。虽然以特定的顺序示出了操作,但应当理解的是,不需要特定的顺序,并且可以省略、跳过和/或重新排序一个或多个操作。此外,一些操作是相似的。为了解释的清楚起见,不重复对类似操作的描述。

图5示出根据本公开的某些实施例的基于系统上可用的多个解码器中的至少一个对码字进行解码的示例性流程。每个解码器实施解码程序,例如chase解码程序。因此,不同的解码程序实施相同的解码算法,但是对解码算法的解码参数使用不同的值。为每个解码器设置值作为延迟和ber之间的折衷。

示例性流程在操作502处开始,其中系统提供多个chase解码程序。例如,系统包括用以托管多个软解码器的硬件、软件和固件的组合。每个解码器都实施chase解码程序。设置包括“l”、“s”和任何其他适用的解码参数的解码参数以实现特定的延迟性能和特定的ber性能。如图3所示,不同的解码器可以串联连接,或者如图4所示,可以并联设置。

在操作504中,系统访问gpc码字。例如,系统包括存储装置。从存储装置读取gpc码字。如果还存储了多个gpc码字,则可以类似地读取这些码字。

在操作506中,系统识别用于对gpc码字(以及类似地,来自存储装置的其他读取的gpc码字)进行解码的多个chase解码程序中的至少一个。识别取决于软解码器的配置。一方面,如果使用串联配置,则系统识别该串联中的第一软解码器,并将gpc码字输入该第一软解码器。如果在第一软解码器处解码失败,则系统识别该串联中的下一软解码器,并将gpc码字输入到其中,依此类推。另一方面,如果使用并联配置,则系统基于ber估计和ber范围对软解码器的映射来选择软解码器中的一个。然后gpc码字被输入到所选择的软解码器。

在操作508中,系统通过使用所识别的chase解码程序对gpc码字(以及类似地,其他读取的gpc码字)进行解码。此处,解码取决于软解码器的配置。在串联配置的情况下,gpc码字被解码为来自软解码器中的一个的输出。如果没有软解码器成功地对gpc码字进行解码,则系统可以宣告解码失败。在并联配置的情况下,gpc码字被解码为来自所选择的软解码器的输出。如果软解码器未能对gpc码字进行解码,则系统可以宣告解码失败。可选地,系统可以通过选择和使用具有更好的ber性能的软解码器来尝试进一步对gpc码字进行解码。然而,对于执行额外解码,可能会产生延迟损失。因此,在延迟敏感的产品应用中,可以跳过额外解码。

图6示出根据本公开的某些实施例的基于串联的解码器对码字进行解码的示例性流程。特别地,如图3所示,多个软解码器串联连接。

示例性流程在操作602处开始,其中系统访问gpc码字。该操作类似于图5的操作502。

在操作604中,系统将gpc码字输入到下一阶段的chase解码程序。例如,在解码开始时(例如,gpc码字尚未被解码或作为任何软解码器的输入提供),gpc码字被输入到串联中的第一软解码器。在解码期间,如果特定的软解码器未能对gpc码字进行解码,则gpc码字变成该串联中的下一软解码器的输入(例如,如果第一软解码器未能对gpc码字进行解码,为第二软解码器)。

在操作606中,系统使用下一阶段的chase解码程序对gpc码字进行解码。例如,gpc码字根据该阶段可用的解码参数进行解码。解码参数导致特定的延迟和ber性能。

在操作608中,系统确定是否发生解码失败。该确定为软解码器的输出。如果未发生故障,则执行操作610,其中系统输出解码的码字。特别地,解码的码字为软解码器的输出。如果发生故障,则执行操作612,其中系统确定该串联中是否存在任何剩余的chase解码程序。如果是,则系统循环回到操作604,其中gpc码字变成该串联中的下一软解码器的输入。否则,不存在剩余的chase解码程序,则执行操作614,其中系统宣告解码失败。

图7示出根据本公开的某些实施例的基于并联的解码器对码字进行解码的示例性流程。特别地,如图4所示,多个软解码器并联设置。

示例性流程在操作702处开始,其中系统访问gpc码字。该操作类似于图5的操作502。

在操作704中,系统确定ber估计。例如,关于ber估计的信息可从系统的存储器中获得。在另一示例中,系统基于权重向量“w”和gpc码字来估计ber。权重向量“w”可以从存储器中获得。ber被估计为权重向量“w”和gpc码字(或待从存储装置解码的多个gpc码字)的乘积。

在操作706中,系统基于映射和ber估计来选择可用的chase解码程序中的一个。例如,映射将ber范围与软解码器相关联,并且可从存储器中获得。该系统将ber估计与ber范围进行比较,并选择与ber估计落入的ber范围相关联的软解码器。

在操作708中,系统通过使用所选择的chase解码程序对gpc码字进行解码。例如,将gpc码字输入到所选择的软解码器。除非解码失败,解码的码字为所选择的软解码器的输出。如果解码失败,则系统可以宣告解码失败。

图8示出用于配置结合图5至图7描述的系统以实现诸如期望的总延迟的期望的解码性能的示例性流程。配置通常包括为解码参数设置值,并且在部署或使用系统对码字进行解码之前发生。例如,系统(或其设计)在可能进行各种模拟和设计调整的开发阶段进行配置。

示例性流程在操作802处开始,其中识别在系统上实施的chase解码程序的数量。过程的每一个可以对应于一个解码阶段。一般来说,数量越大,系统越复杂,可能需要更多soc。此外,确定是否应该使用串联或并联配置。该确定可以取决于ber估计是否对系统可用。

在操作804中,从系统的整体解码延迟向chase解码程序分配第一解码延迟。例如,对于更快的阶段一的软解码器,可以从整体的六十二秒的微秒延迟中分配六十微秒的延迟。通常,整体解码延迟由系统需要支持的产品应用驱动。

在操作806中,通过改变chase解码程序的解码参数的值来模拟chase解码程序的解码延迟。例如,可以使用“l”和“s”参数的不同值来模拟产生的解码延迟。

在操作808中,基于模拟来选择值。例如,选择了导致解码延迟等于或小于分配的解码频率的特定值。

在操作810中,基于所选择的值来模拟chase解码程序的ber性能。例如,利用具有为解码参数设置的所选择的值的chase解码程序来对不同的训练gpc码字进行解码。ber性能从该解码来判断。该性能可以包括chase解码程序预期支持的ber范围。

在操作812中,基于模拟的ber性能来更新映射。例如,映射识别chase解码程序(以及可选地,解码参数的值),并将chase解码程序与应被支持的ber范围相关联。

在操作814中,基于对下一chase解码程序分配的解码延迟和模拟的ber来计算下一chase解码程序的调整后的延迟。下一chase解码程序对应于串联或并联配置中的下一软解码器。类似于操作804,可以从整体解码延迟向该解码器分配解码延迟。特别地,计算剩余的解码延迟。例如,剩余的解码延迟等于整体解码延迟减去前一阶段的软解码器的分配的解码延迟。然而,应当调整分配的延迟以反映这样一个事实,即,如果前一解码器(在串联配置的情况下)解码失败才使用该解码器,或者在给定一些ber估计(在并联配置的情况下)时不使用该解码器。在示例中,调整后的延迟等于分配的解码延迟除以前一阶段的软解码器的模拟的平均ber。举例而言,如果整体解码延迟为六十二微秒,并且六十微秒被分配给具有1e-2的模拟平均ber的阶段一的软解码器,则仍然保留两微秒的延迟。在该示例中,将该剩余解码延迟的一微秒分配给阶段二的解码器。因此,调整后的延迟应等于1e-2,调整后的解码延迟为1/le-2=100微秒。然后使用该调整后的解码延迟来设置下一解码chase过程的解码参数的值。因此,对下一阶段的软解码器重复操作804至814,对操作804进行修改,其中修改从剩余解码延迟分配解码延迟并调整给定的前一阶段的软解码器的ber。

图9描述可以根据一个实施例使用的系统的一个潜在的实施方式,诸如图1的系统100。图9仅仅是对本公开的实施例的说明,并不限制如权利要求所述的本公开的范围。在一个实施例中,系统为通常包括监视器910、计算机920、用户输出装置930、用户输入装置940、通信接口950等的计算机系统900。图1的系统100实施计算机系统900的部分或全部部件。

如图9所示,计算机920可包括经由总线子系统990与多个外围装置进行通信的处理器960。这些外围装置可包括用户输出装置930、用户输入装置940、通信接口950以及诸如随机存取存储器(ram)970和磁盘驱动器980的存储子系统。

用户输入装置930包括用于向计算机系统920输入信息的所有可能类型的装置和机构。这些可包括键盘,小键盘,纳入显示器中的触摸屏,诸如语音识别系统、麦克风的音频输入装置以及其他类型的输入装置。在各种实施例中,用户输入装置930通常被实现为计算机鼠标、轨迹球、轨迹板、操纵杆、无线遥控器、绘图板、语音命令系统、眼睛跟踪系统等。用户输入装置930通常允许用户经由诸如点击按钮等的命令来选择出现在监视器910上的对象、图标、文本等。

用户输出装置940包括用于从计算机920输出信息的所有可能类型的装置和机构。这些可包括显示器(例如,监视器910),诸如音频输出装置的非视觉显示器等。

通信接口950提供至其他通信网络和装置的接口。通信接口950可用作用于从其他系统接收数据和向其他系统发送数据的接口。通信接口950的实施例通常包括以太网卡、调制解调器(电话、卫星、电缆、isdn)、(异步)数字用户线(dsl)单元、火线接口、usb接口等。例如,通信接口950可联接到计算机网络、火线总线等。在另一实施例中,通信接口950可被物理地集成在计算机920的主板上,并且可以是诸如软dsl等的软件程序。

在各个实施例中,计算机系统900还可包括使能够通过诸如http、tcp/ip、rtpirtsp协议等的网络进行通信的软件。在本公开的可选实施例中,也可使用其他的通信软件和传输协议,例如ipx、udp等。在一些实施例中,计算机920包括来自intel的一个或多个至强(xeon)微处理器作为处理器960。此外,一个实施例,计算机920包括基于unix的操作系统。

ram970和磁盘驱动器980是被配置成存储诸如本公开的实施例的包括可执行的计算机代码、人类可读代码等的数据的有形介质的示例。其他类型的有形介质包括软盘,可移动硬盘,诸如cd-rom、dvd和条形码的光学存储介质,诸如闪速存储器、非暂时性只读存储器(roms)、电池支持的易失性存储器、网络存储装置等的半导体存储器。ram970和磁盘驱动器980可被配置成存储提供本公开的功能的基本程序和数据结构。

提供本公开的功能的软件代码模块和指令可被存储在ram970和磁盘驱动器980中。这些软件模块可由处理器960执行。ram970和磁盘驱动器980还可提供用于存储根据本公开使用的数据的存储库。

ram970和磁盘驱动器980可包括多个存储器,其包括用于在程序执行期间存储指令和数据的主随机存取存储器(ram)以及存储非暂时性指令的只读存储器(rom)。ram970和磁盘驱动器980可包括为程序和数据文件提供持久(非易失性)存储的文件存储子系统。ram970和磁盘驱动器980还可包括诸如可移动闪速存储器的可移动存储系统。

总线子系统990提供用于使计算机920的各个部件和子系统按照预期彼此通信的机制。虽然总线子系统990被示意性地示出为单总线,总线子系统的可选实施例可利用多个总线。

图9是能够实现本公开的计算机系统的典型代表。对于本领域普通技术人员将显而易见的是,许多其他的硬件和软件配置适于与本公开一起使用。例如,计算机可以是台式、便携式、机架安装式或平板式配置。另外,计算机可以是一系列的网络计算机。此外,可预计到使用其它的微处理器,诸如pentiumtm或itaniumtm微处理器;来自超微公司(advancedmicrodevices,inc)的opterontm或athlonxptm微处理器等。此外,可预计到其他类型的操作系统,诸如来自微软公司(microsoftcorporation)的等,来自太阳计算机系统公司(sunmicrosystems)的solaris,linux,unix等。在另一实施例中,上述技术可在芯片或辅助处理板上实施。

本公开的各个实施例可以以软件或硬件或两者的组合中的逻辑形式来实施。该逻辑可作为一组适于引导计算机系统的处理器执行在本公开的实施例中公开的一组步骤的指令而被存储在计算机可读或机器可读的非暂时性存储介质中。该逻辑可形成适于引导信息处理装置执行在本公开的实施例中公开的一组步骤的计算机程序产品的一部分。基于本文提供的公开内容和教导内容,本领域普通技术人员将理解实现本发明的其它方式和/或方法。

本文所述的数据结构和代码可被部分地或完全地存储在计算机可读存储介质和/或硬件模块和/或硬件设备上。计算机可读存储介质包括但不限于易失性存储器,非易失性存储器,诸如磁盘驱动器、磁带、cd(光盘)、dvd(数字通用光盘或数字视频光盘)的磁和光存储装置,或目前已知或稍后开发的能够存储代码和/或数据的其他介质。本文所述的硬件模块或设备包括但不限于专用集成电路(asic)、现场可编程门阵列(fpga)、专用或共享处理器和/或目前已知或稍后开发的其他硬件模块或设备。

本文所述的方法和过程可被部分地或完全地实现为存储在计算机可读存储介质或装置中的代码和/或数据,使得当计算机系统读取并执行该代码和/或数据时,计算机系统执行相关的方法和过程。方法和过程也可被部分地或完全地实现在硬件模块或设备中,使得当硬件模块或设备被激活时,它们执行相关的方法和过程。本文公开的方法和过程可使用代码、数据以及硬件模块或设备的组合来实现。

尽管为了清楚理解已经对前述实施例进行了一些细节的描述,但是本公开不限于所提供的细节。存在许多可选的方法来实施本公开。所公开的实施例是说明性的而非限制性的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1