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

使用半尺寸数据阵列对二进制对称不变乘积码的高效编码的制作方法

2022-06-12 06:29:09 来源:中国专利 TAG:

使用半尺寸数据阵列对二进制对称不变乘积码的高效编码


背景技术:

1.本发明涉及数据处理,且更特定来说,涉及例如在数据存储系统或数据通信系统中利用二进制对称不变乘积码(例如,半乘积码)对数据的高效编码和解码。
2.在数据存储系统和数据通信系统中采用纠错编码以提高可以从数据信道恢复数据的准确性。通过在将数据提供给信道之前根据纠错码(ecc)对数据进行编码,可以在取决于ecc的属性的程度上标识和纠正信道输出处的错误。许多这样的ecc方案是已知的。一种众所周知的ecc方案类别基于乘积码。乘积码使用两个分量ecc码来编码输入数据的概念二维阵列的行和列。
3.常规乘积码的基本结构在图1中示意性地示出。输入数据符号(其通常可以是q进制符号,具有q个可能的符号值,其中q≥2)被指派给具有n2行和n1列符号位置的概念阵列中的相应符号位置。在该示例中,k2×
k1个数据符号被指派给在n2乘n1阵列的第一k2行与第一k1列的相交处的k2乘k1子阵列中的相应位置。所得的输入数据符号阵列通过单独编码阵列的行和列来编码。第一ecc码c1用于将阵列的每行中的ki符号数据字编码为长度-n1的c1码字。此实例使用系统编码,借此输入数据被保留在码字中。具体地,通过在给定行中的k1符号数据字之后添加(n
1-k1)奇偶校验符号获得c1码字的n1个码符号。然后,第二ecc码c2用于将阵列的每列中的k2个符号编码成长度-n2的c2码字,这里通过在每列的末尾添加(n
2-k2)个奇偶校验符号。阵列中的所得n2×
n1个码符号形成乘积码的输出码字。在该基本思想的扩展中,交错乘积码在阵列的s>1个均匀间隔的列上应用c2码,产生n1/s c2码字。
4.乘积码可以提供实际的编码器/解码器实现,它们的解码器是基于硬决策的,并且因此避免与软决策解码相关联的不同复杂性和时延问题。用于交错乘积码的一些解码器使用基于由基本码结构定义的图的迭代解码技术。简要地,可以用每个对应于c1码字的n2个右节点和对应于相应c2码字的n1/s左节点来定义二分图。每个右节点通过s个边连接至每个左节点。连接一对节点的s条边表示上述概念阵列中的那些节点的c1和c2码字的相交处的s个共同符号。基于该图,通过逐个解码c1码字、然后逐个解码c2码字来执行迭代解码。每次码字被成功解码,离开适当节点的边被校正。该过程迭代,直到解码完成,即,解码器不再检测到错误或者已经达到预定的最大迭代次数,在达到预定的最大迭代次数的情况下,解码器可以宣布解码失败。
5.在j.justesen,“error correction coding for otn,”ieee communications magazine,september 2010和j.justesen,“performance of product codes and related structures with iterative decoding”,ieee transactions on communications,2011中,在光传输网(otn)背景下提出了另一种基于乘积码的ecc方案。称为半乘积码(hpc)的这些码是对行码c1和列码c2使用相同码的乘积码。如果每个分量码c1和c2是码长(即,码字中的符号数目)为n且维度(即,编码到每个码字中的数据符号数目)为k的速率k/n码,则所得乘积码c具有长度n=n2、维度k=k2和速率(k/n)2。c的码字可由对应于上述概念性阵列的(n乘n)符号的矩阵x定义,其中x的每个行和列是行/列码的码字。然后通过ch={x-x
t
:x∈c}定义对应的半积码ch,其中x
t
是x的转置矩阵。
6.应注意,如果x是码字,那么x
t
也如此,因为行码和列码相同。通过构造,ch的每个码字yh具有零主对角线(尽管任一主对角线可以是零主对角线,但零主对角线在本文中被定义为跨(n乘n)符号矩阵yh从右上符号到左下符号对角地延伸的符号行)。即,零主对角线上的所有符号具有值零。由于根据ch的定义,yh=y
ht
,所以在零主对角线的每一侧上的三角形子阵列中的n(n-1)/2个符号的集合是相同的。因此,这些n(n-1)/2个符号定义码字yh,使得半积码具有nh=n(n-1)/2的有效长度。对于hpc,常规地以与针对乘积码的方式相同的方式来执行编码和迭代解码,但输入数据限于零主对角线的一侧上的三角形子阵列,从而为hpc给出kh=k(k-1)/2的维度。
7.在图2中示出了示例性现有技术hpc 200。在现有技术中,为了形成hpc 200,原始输入数据204被打包(packed)成零主对角线202下方的方形阵列。一旦所有原始输入数据204被填充,则通过复制原始输入数据204、执行原始输入数据204的逐位转置、并且将所得数据放置在零主对角线202上方来形成对称复制数据206。然后针对每个行和列单独地计算奇偶校验数据208(例如,利用博斯-查德胡里-霍昆格母(bch)纠错函数)。在编码之后,由于数据对称性,仅需要存储和/或传输阵列的在零主对角线202上方或下方的部分。
8.当从存储器检索数据或经由数据传输接收数据时,可以通过复制和转置检索/接收到的数据以填充阵列来重构hpc 200。因此,在数据的存储、保持、检索和/或传输期间出现的任何误差也将关于重构阵列的零主对角线对称,如图3中所示。在常规解码(即,迭代地处理行和列以校正行和列错误的纠错过程)期间,首先以行格式访问阵列中的数据,然后以列格式访问阵列中的数据。
9.为了实现高性能,hpc编码器和解码器的硬件实现将是优选的。然而,硬件编码器的直接硬件实现将在存储器中形成完整的hpc阵列(包括重复数据206),并且然后逐行地迭代地编码每行,并且然后逐列地迭代地编码每列。虽然这种方法可以提供比常规软件实现方式高得多的性能,但根据优选实施例,本公开认识到,使得数据能够以行和列格式被访问的集成电路装置在管芯面积方面非常昂贵。本公开还理解,根据优选实施例,这样的硬件实现将需要行和列数据被独立地编码,意味着将不会从阵列对称性获得益处。


技术实现要素:

10.在至少一个实施例中,编码器在硬件中利用二进制对称不变乘积码(诸如半乘积码(hpc))执行码字的迭代编码。
11.在至少一个实施例中,编码器包括半尺寸(half-size)数据阵列,该半尺寸数据阵列包括各自具有用于h个位的存储的d个行,其中二进制对称不变乘积码具有d的行和列数据维度,其等于2
×
h 1。编码器被配置为通过从d个行中的一个行读取第一h位数据字并且跨半尺寸数据阵列的h个不同行读取第二h位数据字来访问乘积码的每行的位。编码器还包括:寄存器,被配置为接收乘积码的每行的位并且旋转位以获得乘积码的行;以及行奇偶生成器,被配置为生成针对乘积码的每行的行奇偶校验。编码器最终包括列奇偶校验生成器,被配置为基于行奇偶校验来生成针对乘积码的所有行的奇偶校验位的列奇偶校验。
12.在至少一个实施例中,二进制对称不变乘积码是半乘积码(hpc)。
13.在至少一个实施例中,利用多个移位寄存器锁存器来实现半尺寸数据阵列。
14.在至少一个实施例中,编码器被配置为在半尺寸数据阵列的行之间对位进行移
位,并且将从半尺寸数据阵列读取的第一h位数据字再循环回半尺寸数据阵列中。
15.在至少一个实施例中,编码器通过读取半尺寸数据阵列内的同一组位存储位置来形成二进制对称不变乘积码的所有行。
16.在至少一个实施例中,编码器被配置为一次用h位的输入数据打包半尺寸数据阵列。
17.在至少一个实施例中,一种编码在每个维度包括d个数据位和p个奇偶校验位的二进制对称不变乘积码的方法包括:将输入数据打包在包括d个行的半尺寸数据阵列中,每个行具有用于输入数据的h个位的存储,其中d等于2
×
h 1。该方法附加地包括通过从该半尺寸数据阵列的d个行中所选的一行读取第一h位数据字和跨该半尺寸数据阵列的h个不同行读取第二h位数据字来迭代地访问该二进制对称不变乘积码的每行的位。根据需要旋转二进制对称不变乘积码的每行的位,以获得二进制对称不变乘积码的行。生成针对二进制对称不变乘积码的每行的行奇偶校验。基于行奇偶校验生成器所生成的行奇偶校验,还生成针对二进制对称不变乘积码的所有行的p个奇偶校验位的列奇偶校验。输出第一h位数据字、行奇偶校验和列奇偶校验。
18.根据一个方面,提供了一种用于利用在每个维度包括d个数据位和p个奇偶校验位的二进制对称不变乘积码来编码输入数据的编码器,该编码器包括电路装置,该电路装置包括:半尺寸数据阵列,包括各自具有用于输入数据的h个位的存储器的d个行,其中,d是等于2
×
h 1的整数,并且其中编码器被配置成通过从半尺寸数据阵列的d个行中所选的一行读取第一h位数据字、并且跨半尺寸数据阵列的h个不同行读取第二h位数据字来访问二进制对称不变乘积码的每行的位;寄存器,被配置为接收二进制对称不变乘积码的每行的位并且根据需要旋转位以获得所述二进制对称不变乘积码的行;行奇偶校验生成器,其耦合到寄存器且被配置为生成针对二进制对称不变乘积码的每个行的行奇偶校验;以及列奇偶校验生成器,其被配置为基于由行奇偶校验生成器所生成的行奇偶校验来生成针对二进制对称不变乘积码的所有行的p个奇偶校验位生成列奇偶校验。
19.根据另一方面,提供了一种数据存储系统,包括:非易失性存储器系统;以及耦合至非易失性存储器系统的控制器,其中控制器包括如段18所述的编码器。
20.根据另一方面,提供了一种数据通信系统,包括:如段18所述的编码器;以及调制器,该调制器被配置成从该编码器接收经编码的数据、对该经编码的数据进行调制、以及在通信信道上输出经调制的经编码的数据。
21.根据另一方面,提供了一种对在每个维度包括d个数据位和p个奇偶校验位的二进制对称不变乘积码进行编码的方法,该方法包括:将输入数据打包在包括d个行的半尺寸数据阵列中,每个d个行具有用于输入数据的h个位的存储,其中d是等于2
×
h 1的整数;通过从半尺寸数据阵列的d个行中的所选行读取第一h位数据字并且跨半尺寸数据阵列的h个不同行读取第二h位数据字,迭代地访问所述二进制对称不变乘积码的每行的位;根据需要旋转二进制对称不变乘积码的每行的位以获得二进制对称不变乘积码的行;生成针对二进制对称不变乘积码的每个行的行奇偶校验,以及基于行奇偶校验生成器所生成的行奇偶校验,生成针对二进制对称不变乘积码的所有行的p个奇偶校验位的列奇偶校验;以及输出第一h位数据字、行奇偶校验和列奇偶校验。
22.根据另一方面,提供了一种计算机程序,该计算机程序包括当所述程序在计算机
上运行时适于执行前述段落所述的方法的程序代码装置。
附图说明
23.现在将参考附图仅通过示例的方式来描述本发明的实施例,在附图中:
24.图1示出了现有技术的乘积码;
25.图2示出了现有技术的半乘积码(hpc);
26.图3描绘包含对称数据错误的现有技术hpc;
27.图4是根据一个实施例的数据存储系统的高级框图;
28.图5是根据一个实施例的数据通信系统的高级框图;
29.图6-7图示了图4的数据存储系统的示例性实现;
30.图8描绘了根据一个实施例的概念性的hpc阵列;
31.图9图示了常规hpc的数据字段,其中输入数据和复制数据在零主对角线的不同侧上分离;
32.图10描绘了根据一个实施例的hpc的数据字段,其中重新组织输入数据和复制数据以在每个行中获得相等数目的输入数据位;
33.图11图示了根据一个实施例的半尺寸数据阵列,该半尺寸数据阵列的大小被确定成用于每行容纳hpc的相等数目的输入数据位;
34.图12-14根据一个实施例,描绘了半尺寸数据阵列中的hpc的处理与常规hpc阵列之间的对应;
35.图15示出了根据一个实施例的用于利用hpc对输入数据进行编码的基于硬件的编码器;以及
36.图16是根据一个实施例的图15的编码器利用hpc对输入数据进行编码的示例性过程的高级逻辑流程图。
具体实施方式
37.在至少一个实施例中,本技术涉及一种编码器,所述编码器在硬件电路装置中利用二进制对称不变乘积码(诸如半乘积码(hpc))来执行数据的迭代编码。本技术进一步涉及相关方法。
38.虽然本文所述的解决方案可应用于如上文所论述的常规hpc,但应了解,根据优选实施例,本文所公开的发明也可应用于由每行多于一种类型的分量码和每列多于一种类型的分量码形成的对称性不变乘积码。类似地,可以通过在码构造中使用多于一种类型的组件码来获得hpc的进一步扩展。例如,可以使用具有相同长度n但具有不同纠错能力t1和t2的两种类型的分量码。在hpc的情况下,可以要求行/列的前半部分是来自t1纠错分量码的码字,并且行/列的后半部分是来自t2纠错分量码的码字。
39.再次参见附图并且具体参见图4,存在用于在数据存储设备上读取和写入ecc编码的数据的数据存储系统400的示例性实施例的高级框图。数据存储系统400包括记录信道402,其包括存储器404(例如,闪存或其他非易失性随机存取存储器(nvram))和用于在存储器404中读取和写入数据的读取/写入装置406。尽管图4中示出为单个块,但是存储器404可包括范围从(例如)单个芯片或管芯到多个存储体(每一存储体包括多个存储器芯片打包)
的数据存储单元的任何期望配置。读/写装置406以已知的方式执行读和写操作,通过向存储器404中的字和位线阵列施加适当的电压来寻址用于读和写目的的存储单元。
40.数据存储系统400进一步包括编码器410和解码器412。编码器410根据二进制对称不变乘积码(例如,hpc)将输入(用户)数据编码为码符号,并将码符号输出到记录信道402。解码器412处理读/写装置406从存储器404获得的回读(readback)符号,以解码对称不变乘积码,从而恢复并输出原始输入数据。
41.如图5中进一步示出的,诸如hpc的对称性不变乘积码也在诸如数据通信系统500的数据通信系统中得到应用。数据通信系统500的发射器包括以上参见图4描述的编码器510、调制器508、以及传输设备(tx)506。由编码器510输出的码符号经由调制器508被供应给传输设备506,该传输设备生成用于在通信链路504上传输码符号的信号。通信链路504可以包括物理(有线或无线)链路或在一个或多个物理链路上的逻辑链路。数据通信系统的接收器包括用于接收通过链路504传输的信号的接收设备(rx)516、用于解调所接收的信号的解调器518、以及如上所述的用于解码从解调器518接收的结果码符号的解码器512。
42.在优选实施例中,编码器410、510和解码器412、512的功能在硬件电路装置(即,集成电路装置)中实现,以便实现高性能。然而,在其他实施例中,编码器410、510和解码器412、512的功能可以在执行软件和/或固件的程序指令的硬件中实现。例如,可以通过执行将一个或多个处理器配置为编码器和/或解码器以执行编码和解码的软件,来整体或部分地执行编码和解码。
43.现在参见图6-7,描绘了诸如图4的数据存储系统400的数据存储系统的示例性实现的更详细的框图。图6示出了数据处理环境600,其包括一个或多个主机,例如具有处理指令和数据的一个或多个处理器604的处理器系统602。处理器系统602还可包括本地存储装置606(例如,动态随机存取存储器(dram)或磁盘),本地存储装置606可以存储程序代码、操作数和/或由处理器604执行的处理的执行结果。在各种实施例中,处理器系统602可以是例如移动计算设备(诸如智能电话或平板电脑)、膝上型或台式个人计算机系统、服务器计算机系统(诸如可从国际商业机器公司获得的power系列服务器之一)或大型计算机系统。处理器系统602还可以是使用各种处理器(如arm、power、intel x86)的嵌入式处理器系统,或者与存储器高速缓存、存储器控制器、本地存储、i/o总线集线器等中的任何结合的任何其他处理器。
44.每个处理器系统602还包括经由i/o信道610直接(即,没有任何中间设备)或间接(即,通过至少一个中间设备)耦合到数据存储系统620的输入/输出(i/o)适配器608。在各种实施例中,i/o信道610可以采用已知或未来开发的通信协议中的任何一个或其组合,包括例如光纤信道(fc)、以太网上的fc(fcoe)、互联网小型计算机系统接口(iscsi)、无限带宽、传输控制协议/互联网协议(tcp/ip)、快速外围组件互连(pcie)等。经由i/o信道610传送的i/o请求包括处理器系统602通过其从数据存储系统620请求数据的读取请求和处理器系统602通过其请求在数据存储系统620中存储数据的写入请求。
45.尽管不是必需的,但是在图示的实施例中,数据存储系统620包括多个接口卡622,数据存储系统620通过该多个接口卡622经由i/o信道610接收并响应主机的i/o请求。每个接口卡622耦合到多个廉价冗余磁盘阵列(raid)控制器624中的每个raid控制器以促进容错和负载平衡。raid控制器624中的每个raid控制器624进而耦合(例如,通过pcie总线)到
非易失性存储介质,该非易失性存储介质在所示的示例中包括承载nand闪存的多个闪存卡626。在其他实施例中,可以采用备选的和/或附加的非易失性存储设备。
46.在所描绘的实施例中,数据存储系统620的操作由耦合到接口卡622和raid控制器624的冗余系统管理控制器(smc)623管理。在各种实施例中,系统管理控制器623可以利用硬件或执行固件和/或软件的硬件来实现。
47.图7描绘了图6的数据存储系统620的闪存卡626的示例性实施例的更详细的框图。闪存卡626包括网关730,该网关730充当闪存卡626与raid控制器624之间的接口。网关730耦合到通用处理器(gpp)732,其可以被配置(例如,通过程序代码)以对网关730所接收的i/o请求执行预处理和/或调度闪存卡626对i/o请求的服务。gpp732耦合到gpp存储器734(例如,动态随机存取存储器(dram)),其可便利地缓冲由ggpp732在其处理期间创建、引用和/或修改的数据或者去往闪存控制器740中的一个或多个闪存控制器740的流经网关730的数据。
48.网关730还耦合到多个闪存控制器740,每个闪存控制器740控制相应的nand闪存存储器系统750。闪存控制器740可以例如由专用集成电路(asic)和/或现场可编程门阵列(fpga)和/或微处理器来实现,并且每个具有相关联的闪存控制器存储器742(例如,dram)。在利用fpga实现闪存控制器740的实施例中,gpp 732可以在数据存储系统620的启动期间编程和配置闪存控制器740。在启动之后,一般而言,闪存控制器740从网关730接收请求读取存储在nand闪存存储器系统750中的数据和/或将数据存储在nand闪存存储器系统750中的读和写请求。闪存控制器740例如通过访问nand闪存存储器系统750以从nand闪存存储器系统750读取或向nand闪存存储器系统750写入请求的数据、或者通过访问与nand闪存存储器系统750相关联的存储器高速缓存(未示出)来服务于这些请求。
49.闪存控制器740实现闪存转换层(ftl),该闪存转换层提供逻辑到物理地址转换以实现对nand闪存存储器系统750内的特定存储器位置的访问。通常,由闪存控制器740从主机设备(诸如处理器系统602)接收的i/o请求包含要访问(读取或写入)数据的逻辑块地址(lba),并且在写入请求的情况下包含要存储到数据存储系统620的写入数据。i/o请求还可以指定要访问的数据的量(或大小)。取决于数据存储系统620所支持的协议和特征,还可传送其他信息。闪存转换层将从raid控制器624接收的lba转换为被分配给nand闪存存储器系统750中的对应物理位置的物理地址。闪存控制器740可以执行地址转换和/或将逻辑地址与物理地址之间的映射存储在逻辑到物理转换数据结构(诸如逻辑到物理转换表(lpt))中,其可以方便地存储在闪存控制器存储器742中。
50.在各种实施例中,nand闪存存储器系统750可以采取许多形式。在图7所示的实施例中,每个nand闪存存储器系统750包括多个(例如,32个)可单独寻址的nand闪存存储设备752。在所示示例中,闪存存储设备752采取板装闪存存储器模块的形式,例如,单层单元(slc)、多层单元(mlc)、三层单元(tlc)或四层单元(qlc)nand闪存存储器模块。优选地,例如通过闪存控制器740和/或诸如gpp 732或raid控制器624的高级控制器,通过ecc编码的实现来增强从闪存存储设备752读取的数据的保真度。在所示实施例中,ecc编码和解码至少在闪存控制器740中由编码器744和解码器746实现。
51.现在参见图8,示出了概念性的hpc阵列,该hpc阵列将用于描述由编码器410、510和744以及解码器412、512和746执行的编码和解码。如以上参见图2解释的,hpc阵列800是
具有相等数目的行和列的正方形阵列。hpc阵列800附加地包括零主对角线,例如,零主对角线802。如前所述,输入数据804在零主对角线802下方被打包到hpc阵列800中,且对称的重复数据806被放置在零主对角线802上方。每行和列的奇偶校验数据808被附加到相关行或列的末端。奇偶校验数据808包括包含仅奇偶校验的行和列的奇偶校验的正方形交叉奇偶校验子阵列810。
52.在此概念性的hpc阵列800中,所有行和列具有f位的共同维度,包括d位数据和p位奇偶校验。如图8中进一步指示的,每个行和列中的d个数据位包括在零主对角线802中的0数据位和2
×
h个其他位,意味着d是奇数整数。这些维度可以由以下关系表示:
53.f=d p
54.d=2
×
h 1
55.其中,f、d、p、h均为正整数。
56.在现有技术中,典型的实现方式将用输入数据804的位来填充零主对角线802下方的三角形阵列,直到所有数据位都已经被填充,然后将输入数据804的位一次转置一个以创建重复数据806。然后将分别计算每个行和列的奇偶校验字段。由于难以在硬件中处理输入数据804的三角形(非矩形)阵列,这个过程通常在软件中执行,其中,每一行包括不同数目的数据位并且对于其计算转置(以形成重复数据806)需要针对每个元件的唯一且特定的行和列访问。
57.本公开相应地呈现了用于在硬件中利用二进制对称不变乘积码(诸如hpc)来编码输入数据的创新技术。为了在利用紧凑逻辑的硬件中执行该编码,本公开实现与现有技术中采用的技术显著不同的数据打包技术。为了解释该技术,首先参见图9,其仅示出示例性常规hpc阵列的数据字段900(即,省略奇偶校验数据)。在该示例中,数据字段900包括编号为0至14的15行和编号为0至14的15列。因此,在该示例中,d是15,h是7,并且数据字段900包括225个位,包括105个输入位、105个重复位和在零主对角线内的15个
‘0’
位。在图9中,利用由行号和列号形成的二元组来标记每个存储位置。这些二元组范围从右下角的(0,0)到左上角的(14,14)。在常规hpc中,输入数据在输入数据字段904中被分离在零主对角线902下方,而副本数据在副本数据字段906中被分离在零主对角线902上方。如上所述,每行中输入数据的存储位置的数目不同,范围从行0中的14位到行14中的0位。
58.为了促进更高效的数据打包,优选的是,hpc的所有行包含相同数目的输入数据位。因此,如图10所示,hpc的数据字段1000的数据位可以被重新分配到不同的存储位置,以便在所有行中实现相等数目的输入数据位。在该实例中,输入数据位并非全部打包在零主对角线1002下方。而是,输入数据被打包成零主对角线1002下方的第一输入数据字段1004a以及零主对角线1002上方的第二输入数据字段1004b。类似地,副本数据被打包成零主对角线1002上方的第一副本数据字段1006a以及零主对角线1002下方的第二副本数据字段1006b。作为该布置的结果,数据字段1000的每行包括h=7位的输入数据,其中,每个位被标记为指示图9的数据字段900中的数据的对应行和列位置。因此,例如,存储位置(0,7)和(7,0)被标记为d0.0以指示这些存储位置保持将被存储在数据字段900的存储位置(0,0)中的输入数据位。
59.给定打包具有相等长度行的输入数据的数据字段的能力,有可能形成如图11所示的半尺寸数据阵列,其大小被设定成适应每行hpc的相等数目的输入数据位。在该示例中,
半尺寸数据阵列1100包括编号0至14的15个行(即,d个行)和编号0至6的7个列(即,h个列)。应当注意,半尺寸数据阵列1100仅包含输入数据字段1104,而不包含重复数据字段。半尺寸数据阵列1100还可省略对于显式零主对角线的存储,但备选地包括隐式零主对角线1102,包括每行的隐式
‘0’
位。
60.给定数据位打包在半尺寸阵列1100的输入数据字段1104内,可以通过迭代地选择和处理与在图10中描绘的概念性的hpc阵列1000中处理的数据位相同的数据位来计算针对hpc的每个行和列的奇偶校验。例如,图12示出hpc阵列1000的行0 1010(和复制转置列14)的奇偶校验可以通过将所选择的奇偶校验算法(例如,bch)应用于行0内的15个位来计算。这些相同的数据位(即,在概念性的hpc阵列1000的行0中发现的数据位)可以通过从对角线数据字1200b(其包括数据位d14.6、d13.5、d12.4、d11.3、d10.2、d9.1和d8.0)和水平数据字1200a(其包括数据位d0.0至d0.6(来自零主对角线1002的
‘0’
是隐式的))对应的14位来从半尺寸数据阵列1100访问。
61.如图13中进一步图示的,hpc阵列1000的行1 1012(和复制转置列13)的奇偶校验可以通过将所选择的奇偶校验算法(例如,bch)应用于行1内的15个位来计算。虽然可以通过将半尺寸数据阵列1100中的访问位置从图12中访问的那些位置移位来访问相同的数据位,但是在优选实施例中,半尺寸数据阵列1100内的输入数据改为移位,使得半尺寸数据阵列1100中的访问位置保持相同以处理概念性的hpc阵列的所有行。因此,在优选实施例中,在形成概念性的hpc阵列的行0的全部15个位之后,位于半尺寸数据阵列1100的行0中的输入数据“再循环”回到半尺寸数据阵列1100的“顶部”(即,行14),并且半尺寸阵列1100内的剩余输入数据向下移位一个行。因此,例如,在数据d0.[6-0]被加载回到srl阵列的顶部之后,所有其他输入数据被“向下”移位一行,并且形成水平阵列1202a的d1.[6-0]现在被存储在半尺寸阵列1100的行0内。在以此方式循环的输入数据内,概念性的hpc阵列1000的行1可以通过再次访问对角数据字1202b和水平数据字1202a来形成,对角数据字1202b包括数据位d0.6、d14.5、d13.4、d12.3、d11.2、d10.1和d9.0,水平数据字1202a包括数据位d1.0至d1.6(来自零主对角线1002的
‘0’
再次是隐式的)。
[0062]
如图14中所描绘的,访问来自半尺寸阵列1100的输入数据、形成hpc的行以计算奇偶校验、以及在半尺寸阵列1100中再循环输入数据的此过程继续,直到达到与概念性的hpc矩阵1000的顶行1014(例如,行14)对应的输入数据位为止。对应于概念性的hpc阵列1000的顶行1014的输入数据可以通过再次访问对角数据字1204b和水平数据字1204a来形成,对角数据字1204b包括数据位d13.6、d12.5、d11.4、d10.3、d9.2、d8.1和d7.0,水平数据字1204a包括数据位d14.0至d14.6(来自零主对角线1002的
‘0’
再次是隐式的)。再次,在整个过程中,从半尺寸阵列1100访问的输入数据的位置不改变。
[0063]
现在参见图15,示出了根据一个实施例的用于利用hpc对输入数据进行编码的基于硬件的编码器。编码器1500可用于实现上述编码器410、510或744中的任一编码器。
[0064]
如所说明,编码器1500包括用于存储输入数据的h个位的d个行的半尺寸阵列1502,其中对应的概念性的hpc阵列的数据字段在每个维度上是2
×
h 1(即,d)位,并且每个行和列包含p位的奇偶校验。在一个优选实施例中,半尺寸数据阵列1502包括由相等数目的相等尺寸的串联连接的移位寄存器形成的h个列,其可以例如利用移位寄存器锁存器(srl)1504来实现。每个这种列包括针对2
×
h 1(即,d)位的串行化存储。在这个实施例中,半尺寸
阵列1502的每个列可以在列上独立被寻址并且甚至在列内独立被寻址,其中,每个单独的srl 1504接收单个“地址”并且输出最多一个数据位。
[0065]
在输入多路复用器1508处由编码器1500接收数据,输入多路复用器1508具有耦合到h位输入总线1506的第一输入和耦合到h位再循环总线1510的第二输入,该h位再循环总线1510再循环从半尺寸阵列1502读出的水平数据字。在打包阶段期间,在打包阶段期间,输入数据被最初打包成半尺寸阵列1502,编码器1500控制输入复用器1508选择在第一输入处呈现的数据以插入到半尺寸阵列1502的下一未被占用的行中;在编码阶段期间,编码器1500控制输入多路复用器1508选择在第二输入处呈现的选定数据以插入到半尺寸阵列1502的顶部行中。
[0066]
在编码阶段期间,通过从半尺寸阵列1502同时读取长度h的两个字来加载大小d=2
×
h 1的hpc行寄存器1512。应当注意,在半尺寸阵列1502内没有单个srl 1504向hpc行寄存器1512供应多于单个数据位。在所示实施例中,hpc行寄存器的最左位是表示由概念性hpc阵列的零主对角线提供的位的
‘0’
位,下一h个位是从半尺寸阵列1502的预定水平行(例如,底部行1518)提供的水平数据字1514,并且后续h个位是由对角线数据字1520提供的复制数据位1516。
[0067]
如附图标记1522处所示,在利用hpc行数据加载hpc行寄存器1512之后,hpc行数据然后根据需要在hpc行寄存器1512或另一寄存器中被旋转。在所图示的实施例中,将hpc行数据向右旋转n个位,其中n是概念性的hpc阵列的对应整数行号。由此,对于行0,不执行旋转,并且对于行14,将hpc行数据向右旋转14位。作为旋转的结果,如果被执行,则来自零主对角线的
‘0’
位被适当地重新定位在hpc行数据内,并且输入数据位1514或复制数据位1520的一个或多个位被包裹。
[0068]
一旦hpc行数据通过旋转被适当地格式化(如果有的话),行奇偶校验生成器1524就根据所选择的奇偶校验算法(例如,bch)生成针对概念性的hpc阵列的第n行的p个奇偶校验位。将这些p行奇偶校验位馈送给列奇偶校验生成器1526,列奇偶校验生成器1526计算概念性的hpc阵列的p
×
p“交叉奇偶校验”子阵列810。重要的是要注意,编码器1500输出数据和奇偶校验的d个行(每个具有d p位)中的每个行用于存储和/或传输,但是优选地不存储或传输(而是丢弃)在行奇偶校验生成之后由对角线数据字1520提供的重复数据位1516。类似地,在由列奇偶生成器1526生成的交叉奇偶子阵列810中,编码器1500优选地仅输出零主对角线802下方的p
×
(p-1)/2个位。
[0069]
现在参见图16,描绘了根据一个实施例的示例性过程的高级逻辑流程图,通过该示例性过程,图15的编码器利用hpc数据阵列来编码输入数据。
[0070]
响应于编码器1500接收到待编码的输入数据,过程在框1600处开始。然后,过程进行到框1602,其示出了打包阶段。在打包阶段期间,编码器1500控制输入多路复用器1508从输入总线1506选择传入数据并且通过将输入数据的h位字打包成半尺寸阵列1502的所有d个行来提供必要的寻址信号以填充半尺寸阵列1502。在半尺寸阵列1502被打包之后,编码器1500进入编码阶段,该编码阶段由包括框1604-1612的处理循环来表示。
[0071]
在框1604处,编码器1500确定半尺寸阵列1502的所有d个行是否已经被处理。如果是,则过程进行到下面描述的框1620。如果否,则编码器1500通过将输入数据的水平h位字1518与副本数据的对角线h位字1520连结来获得概念性的hpc阵列的下一行的hpc行数据
(框1606)。然后,编码器1500将hpc行数据向右桶旋转n个位置,其中n是0和d-1之间的整数,指示半尺寸阵列1502的哪一行正在被处理(框1608)。编码器1500然后利用行奇偶生成器1524生成行码字的p个奇偶位(块1610)。编码器1500另外将从半尺寸阵列1502读出的输入数据1514的水平h位字再循环回半尺寸阵列1502的顶行,并且将半尺寸阵列1502内的输入数据的其他行下移一行(框1612)。该过程迭代,直到编码器1500在块1604处确定已经处理了半尺寸阵列1502的所有d个行已经被处理。响应于在块1604处编码器1500确定半尺寸阵列1502的所有d个行已经被处理,编码器1500利用列奇偶校验生成器1526来生成和输出hpc数据阵列的零主对角线下方的p
×
(p-1)/2个交叉奇偶校验位(块1620)。此后,图16的过程在框1622处结束。
[0072]
本领域技术人员应当理解,可利用与图16中所示的过程类似的过程来解码经编码的数据。具体地,解码器412、512或746打包如上所述的半尺寸阵列1502。在hpc行数据的迭代处理期间,将由行奇偶校验生成器1524输出的奇偶校验与所存储或被传输的奇偶校验相比较,并且如果检测到一个或多个奇偶校验错误,则常规错误校正电路在可能的情况下校正所指出的(多个)错误。然后可以存储、传输或以其他方式处理经解码的数据。
[0073]
如上所述,在至少一个实施例中,编码器利用二进制对称不变乘积码对输入数据进行编码。编码器包括电路,该电路包括半尺寸数据阵列,该半尺寸数据阵列包括具有d个行的数据字段,每个d个行具有用于h个位的存储。编码器被配置为通过从d个行之一(例如,第一行)读取第一h位数据字并且跨半尺寸数据阵列的h个不同行读取第二h位数据字来访问乘积码的每行的位。编码器还包括:寄存器,被配置为接收乘积码的每行的位并且旋转位以获得乘积码的行;以及行奇偶生成器,被配置为生成乘积码的每行的行奇偶性。编码器最后包括列奇偶校验生成器,被配置为基于行奇偶校验产生用于乘积码的所有行的奇偶校验位的列奇偶校验。
[0074]
所公开的编码器以比常规技术显著更少的逻辑来执行编码。所需逻辑的减少可部分地归因于消除从存储待编码的输入数据的阵列内的任何任意阵列位置选择输入数据的需要。所公开的编码器还消除形成包括输入数据和复制数据两者的全尺寸数据阵列以便计算行和列奇偶校验的需要。所公开的编码器能够具有高性能,并且使得能够在单个周期中从半尺寸阵列中读取数据的完整hpc行。
[0075]
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或多个介质)。
[0076]
计算机可读存储介质可以为可保留和存储供指令执行装置使用的指令的有形装置。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任何合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下项:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式紧凑盘只读存储器(cd-rom)、数字通用盘(dvd)、记忆棒、软盘、诸如穿孔卡之类或具有记录在其上的指令的槽中的凸出结构的机械编码设备、以及上述各项的任何合适的组合。如本文所使用的计算机可读存储介质不应被解释为瞬态信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过
电线发射的电信号。
[0077]
本文中所描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并且转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
[0078]
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微码、固件指令、状态设置数据、或以一种或多种程序设计语言的任何组合编写的源码或目标码,这些程序设计语言包括面向对象的程序设计语言(诸如smalltalk、c 等)、以及常规的过程式程序设计语言(诸如“c”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(lan)或广域网(wan))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路装置、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路装置可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。
[0079]
本文参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个框以及流程图和/或框图中框的组合,都可以由计算机可读程序指令实现。
[0080]
这些计算机可读程序指令可被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的装置。也可以将这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的一个或多个框中指定的功能/动作的方面的指令的制品。
[0081]
也可以将计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图中的一个或多个框中指定的功能/动作。
[0082]
附图中的流程图和框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的(多个)逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个块实际上可以基本上同时执行,或者这些块有时可以以相反的顺序执行。也要注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合,可
以用执行指定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。
[0083]
虽然已经参照一个或多个优选实施例具体地示出本发明,但是本领域技术人员将理解,在不背离本发明的精神和范围的情况下,可以在其中进行形式和细节上的各种改变。例如,尽管已经关于包括指引某些功能的闪存控制器的数据存储系统描述了各方面,但是应当理解,本发明可以备选地实现为包括存储程序代码的存储设备的程序产品,所述程序码可以由处理器处理以执行这样的功能或使得执行这样的功能。如本文中使用的,“存储设备”被具体限定为仅包括法定制品并且排除信号介质本身、瞬态传播信号本身和能量本身的形式。
[0084]
上述附图以及以下特定结构和功能的书面描述并非用于限制申请人已发明的范围或所附权利要求的范围。而是,提供附图和书面说明以教导本领域的技术人员制造和使用寻求专利保护的发明。本领域技术人员将理解,为了清楚和理解,并没有描述或显示本发明的商业实施例的所有特征。本领域技术人员还将认识到,结合本发明各方面的实际商业实施例的开发将需要许多特定于实现的决策来实现开发者对商业实施例的最终目标。此类具体实施的决定可包括并且可能不限于与系统相关的、商业相关的、政府相关的和其他的约束的合规性,这些约束可以随具体实现、位置和时间而变化。虽然开发者的努力在绝对意义上可能是复杂且耗时的,但是对于受益于本公开的本领域技术人员而言,这样的努力仍然是常规任务。必须理解的是,在此披露和教导的这些发明易受多种和不同修改和备选形式的影响。最后,单数术语(诸如但不限于“a”)的使用不旨在限制项的数目。
再多了解一些

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

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

相关文献