纠错码生成方法、装置、设备及存储介质与流程

文档序号:31677771发布日期:2022-09-28 03:16阅读:176来源:国知局
纠错码生成方法、装置、设备及存储介质与流程

1.本技术涉及通信技术领域,特别是涉及一种纠错码生成方法、一种纠错码生成装置、相应的一种电子设备以及相应的一种计算机可读存储介质。


背景技术:

2.ecc(error correcting code,错误纠正码)是一种编码方式,可在一定长度上自行发现和纠正传输过程中发生的错误。通常在传统的存储部件中,包括非易失性存储和易失性内存可基于ecc设计保证存储数据的可靠性。
3.而在传统的存储产品中,主流的存储产品通常使用的存储介质为flash(flash eeprommemory,即闪存,存储芯片的一种,通过特定程序修改里面的数据)。用于存储的产品还可以包括内存产品,其中主流的内存产品通常使用的存储介质为dram(dynamic random access memory,动态随机存取存储器),而scm(storage class memory,存储类内存)作为存储和内存之间的存储部件,其存储介质为pcm(phase-change memory,相变存储器)。
4.相变存储器pcm与传统主流存储产品和内存产品所使用的存储介质不同,具有较低的读写延时的特性,基于此特性,相变存储介质设计的存储部件即可作为ddr的扩展应用于服务器缓存,也可以作为storage(内存)应用于高速nvme设备,且与dram的存储介质相比存在更大的错误率,在存储介质,pcm中对于ecc的要求将高于dram介质,并不能直接复用dram介质的ecc设计。


技术实现要素:

5.鉴于上述问题,提出了本技术实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种纠错码生成方法、一种纠错码生成装置、相应的一种电子设备以及相应的一种计算机可读存储介质。
6.本技术实施例公开了一种纠错码生成方法,应用于服务器设备,涉及存储部件,所述存储部件具有纠错能力,所述方法包括:
7.接收针对数据处理的写命令,获取所述写命令所携带的用户数据;
8.在对所述用户数据进行纠错码编码的过程中,在针对纠错码的单个码长单元内对所述用户数据执行多次纠错码编码操作,得到针对所述用户数据的纠错码码字;所述纠错码码字的码长大于所述用户数据的数据长度。
9.可选地,所述用户数据包括多个不同的用户数据;所述在针对纠错码的单个码长单元内对所述用户数据执行多次纠错码编码操作,得到针对所述用户数据的纠错码码字,包括:
10.采用所述单个码长单元对所述多个不同的用户数据执行多次纠错码编码操作,得到多个编码结果;
11.将所述多个编码结果进行结合得到针对所述多个不同的用户数据的纠错码码字。
12.可选地,所述采用所述单个码长单元对所述多个不同的用户数据执行多次纠错码
编码操作,得到多个编码结果,包括:
13.按照预设寻址长度要求将针对纠错码的单个码长单元拆分为多个子码长单元;
14.对所述多个不同的用户数据进行划分,采用所拆分的多个子码长单元分别对所划分的用户数据进行纠错码编码操作,得到多个编码结果。
15.可选地,所述多个编码结果包括多次编码后的用户编码数据和针对用户编码数据的多个冗余数据,所述将所述多个编码结果进行结合得到针对所述多个不同的用户数据的纠错码码字,包括:
16.将所述多次编码后的用户编码数据和针对用户编码数据的多个冗余数据进行结合,得到针对所述多个不同的用户数据的纠错码码字。
17.可选地,所述将所述多次编码后的用户编码数据和针对用户编码数据的多个冗余数据进行结合,得到针对所述多个不同的用户数据的纠错码码字,包括:
18.对所述针对用户编码数据的多个冗余数据进行异或运算,得到针对纠错码码字的冗余数据;
19.将所述多次编码后的用户编码数据与针对纠错码码字的冗余数据进行拼接,得到针对所述多个不同的用户数据的纠错码码字。
20.可选地,还包括:
21.在所接收到的命令为读命令时,获取针对所述读命令所需读取数据的纠错码码字;
22.对所述针对所需读取数据的纠错码码字执行纠错码解码操作,得到所需读取的用户数据。
23.可选地,还包括:
24.在针对纠错码的单个码长单元内的用户数据完成纠错码编码操作之前,进行对所需读取数据的纠错码码字的纠错码解码操作。
25.本技术实施例还公开了一种纠错码生成装置,应用于服务器设备,涉及存储部件,所述存储部件具有纠错能力,所述装置包括:
26.用户数据获取模块,用于接收针对数据处理的写命令,获取所述写命令所携带的用户数据;
27.纠错码编码模块,用于在对所述用户数据进行纠错码编码的过程中,在针对纠错码的单个码长单元内对所述用户数据执行多次纠错码编码操作,得到针对所述用户数据的纠错码码字;所述纠错码码字的码长大于所述用户数据的数据长度。
28.可选地,所述用户数据包括多个不同的用户数据,所述纠错码编码模块包括:
29.处理结果获取子模块,用于采用所述单个码长单元对所述多个不同的用户数据执行多次纠错码编码操作,得到多个编码结果;
30.纠错码码字生成子模块,用于将所述多个编码结果进行结合得到针对所述多个不同的用户数据的纠错码码字。
31.可选地,所述处理结果获取子模块包括:
32.码长拆分单元,用于按照预设寻址长度要求将针对纠错码的单个码长单元拆分为多个子码长单元;
33.纠错码编码单元,用于对所述多个不同的用户数据进行划分,采用所拆分的多个
子码长单元分别对所划分的用户数据进行纠错码编码操作,得到多个编码结果。
34.可选地,所述多个编码结果包括多次编码后的用户编码数据和针对用户编码数据的多个冗余数据,所述纠错码码字生成子模块包括:
35.纠错码码字生成单元,用于将所述多次编码后的用户编码数据和针对用户编码数据的多个冗余数据进行结合,得到针对所述多个不同的用户数据的纠错码码字。
36.可选地,所述纠错码码字生成单元包括:
37.异或处理子单元,用于对所述针对用户编码数据的多个冗余数据进行异或运算,得到针对纠错码码字的冗余数据;
38.数据拼接子单元,用于将所述多次编码后的用户编码数据与针对纠错码码字的冗余数据进行拼接,得到针对所述多个不同的用户数据的纠错码码字。
39.在本技术的一种实施例中,所述装置还可以包括如下模块:
40.纠错码码字获取模块,用于在所接收到的命令为读命令时,获取针对所述读命令所需读取数据的纠错码码字;
41.用户数据获取模块,用于对所述针对所需读取数据的纠错码码字执行纠错码解码操作,得到所需读取的用户数据。
42.可选地,所述装置还包括:
43.纠错码解码模块,用于在针对纠错码的单个码长单元内的用户数据完成纠错码编码操作之前,进行对所需读取数据的纠错码码字的纠错码解码操作。
44.本技术实施例还公开了一种电子设备,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现任一项所述纠错码生成方法的步骤。
45.本技术实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现任一项所述纠错码生成方法的步骤。
46.本技术实施例包括以下优点:
47.在本技术实施例中,具有纠错能力的存储介质在接收到针对数据处理的写命令时,可对写命令中所携带的用户数据进行纠错码编码操作,在进行纠错码编码的过程中,可在针对纠错码的单个码长单元内,对用户数据执行多次纠错码操作,在经过多次纠错码操作得到的纠错码码字的码长将会大于用户数据的数据长度,基于纠错码的码长大于用户数据的数据长度,实现对小颗粒的访问和高纠错能力的双重需求。
附图说明
48.图1是ecc在存储设备中的位置示意图;
49.图2是本技术的一种纠错码生成方法实施例的步骤流程图;
50.图3是本技术实施例提供的针对纠错码码字的编码过程示意图;
51.图4是本技术的另一种纠错码生成方法实施例的步骤流程图;
52.图5是本技术实施例提供的针对纠错码码字的解码过程示意图;
53.图6是本技术实施例提供的涉及纠错码编解码的数据处理的应用场景图;
54.图7是本技术的一种纠错码生成装置实施例的结构框图。
具体实施方式
55.为使本技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本技术作进一步详细的说明。
56.为便于本领域技术人员理解本技术,下面对本技术下述各实施例中涉及到的术语或名词做出解释:
57.存储介质:存储颗粒,包括dram、flash、pcm等。
58.ecc:error correcting code,错误纠正码,是一种编码方式,指的是纠错编解码,包括但不限于ldpc bch等通用纠错编解码。
59.数据块读写颗粒:host对存储部件读写数据块的寻址大小。
60.ecc码长:纠错编解码所用的字母或数字的个数.码组中包含的码元个数。
61.ecc码率:指的是用户数据占码长的比率。
62.paritydata:奇偶校验数据,奇偶校验是一种数据校验机制,用于判断数据在存储过程中是否发生了比特位错误。
63.userdata:用户数据。
64.page size:指的是介质访问单元的存储容量。
65.ecc码字:ecc codeword,纠错码能够检错或纠错,主要是靠码字之间有较大的差别实现,主要可通过码字之间的汉明距离进行衡量,所用于衡量的码字可为基于信道编码得到的纠错码码字。
66.传统的存储部件,包括非易失性存储和易失性内存可基于ecc设计保证存储数据的可靠性。如图1所示,为ecc在存储设备中的位置示意图,ecc在存储设备中表现为纠错码编码引擎ecc encoder和纠错码解码引擎ecc decoder。纠错码编码引擎ecc encoder的作用主要体现在数据处理的写流程中,当host发起针对scm设备的写指令时,host可通过数据通路逻辑将符合寻址数据颗粒的数据发送给ecc encoder,ecc encoder可对所写入的数据进行纠错码编码,然后将编码后的数据发送至存储介质,完成对数据的写入;纠错码解码引擎ecc decoder的作用主要体现在数据处理的读流程中,当存储介质接收到host发送的针对寻址数据颗粒的读命令时,可发送对应的ecc码长数据单元给到ecc decoder,ecc decoder在完成解码后,可将寻址数据颗粒的读数据通过数据通路逻辑发送给host,完成对数据的读取。
67.在传统的ecc编解码的设计过程中,通常是根据介质错误特性和host用户寻址颗粒等约束,设计适用当前介质的ecc编解码算法及方案。在目前的传统存储设备中,对于host用户寻址颗粒的约束,ecc码长的设计一般小于或者等于host寻址的颗粒,这种设计方式可降低数据路径和处理的复杂度,但其较短的ecc码长在某种程度上牺牲了ecc的纠错能力。
68.而相变存储介质pcm具有比dram更大的错误率,则对于pcm而言,对其的ecc要求需要高于dram介质,即pcm存储介质的设备在host端需要具有支持更小的寻址数据颗粒的能力(针对于nvme设备),以及在介质端需要就具有更强的纠错算法的能力(针对于dram介质)。
69.针对scm部件产品既要支持host大颗粒(例如4kb的nvme部件)寻址,还要同时支持小颗粒(例如64b的pmem部件)寻址的特点,并结合传统存储部件的ecc码长总是小于或等于
host寻址颗粒的约束的限制,本技术的核心思想之一是在综合考虑ecc码长越长纠错性能越好的前提下,合理地结合scm存储部件对小颗粒数据寻址的要求,从纠错码解决方案层面提出不同于传统主流存储部件的ecc编解码的方案及数据处理方式,主要提出了一种ecc码长可以大于host寻址颗粒的设计方案,在保证存储数据可靠性的前提下,基于码长大于host寻址颗粒的ecc码,可以保证支持host对存储部件发起的小颗粒数据块的直接寻址。
70.参照图2,示出了本技术的一种纠错码生成方法实施例的步骤流程图,应用于服务器设备,涉及存储部件,所述存储部件具有纠错能力,侧重于对纠错码码字的编码过程,具体可以包括如下步骤:
71.步骤201,接收针对数据处理的写命令,获取写命令所携带的用户数据;
72.ecc在存储设备中表现为纠错码编码引擎ecc encoder和纠错码解码引擎ecc decoder。纠错码编码引擎ecc encoder的作用主要体现在数据处理的写流程中,当host发起针对scm设备的写指令时,host可通过数据通路逻辑将符合寻址数据颗粒的数据发送给ecc encoder,ecc encoder可对所写入的数据进行纠错码编码,然后将编码后的数据发送至存储介质,完成对数据的写入。
73.在服务器设备接收到针对数据处理的写命令时,此时为了在经由ecc encoder进行纠错码编码后,在存储介质中对数据进行写入,需要对写命令中所携带的用户数据进行获取,以便进行后续的纠错码编码操作与数据写入操作。其中,所进行写入的用户数据可以是来自多个不同写命令中携带的用户数据,即此需要进行纠错码编码操作的用户数据可以包括多个不同的用户数据。
74.步骤202,在对用户数据进行纠错码编码的过程中,在针对纠错码的单个码长单元内对用户数据执行多次纠错码编码操作,得到针对用户数据的纠错码码字。
75.在理论上,假设纠错码码字的码长大于寻址数据颗粒,从信息论的纠错算法而论,纠错码码字的码长越长,在同等编码代价下其解码能力更强。其中,编码代价可采用冗余信息占比体现,即在冗余信息占比相同的情况下码长越长的纠错码码字的解码能力更强。
76.在本技术实施例中,在综合考虑ecc码长越长纠错性能越好的前提下,合理地结合scm存储部件对小颗粒数据寻址的要求,提出ecc码长可以大于host寻址颗粒的设计方案,在保证存储数据可靠性的前提下,基于码长大于host寻址颗粒的ecc码,可以保证支持host对存储部件发起的小颗粒数据块的直接寻址。
77.在scm部件产品的ecc设计中,既要满足对host大颗粒寻址的支持,还要同时满足小颗粒寻址的支持,其可基于传统ecc编解码算法,在保证不改变单个码长单元的情况下,实现纠错码码字的码长大于寻址颗粒的设计,其中寻址颗粒可以指的用户数据的数据长度。
78.为了保证单个码长单元的不变,对用户数据进行的纠错码编码过程,可在针对纠错码的单个码长单元内执行,针对纠错码的单个码长单元可以指的是针对纠错码的单个编码过程,由于码长单元可用于确定所进行编码后的纠错码的长度,那么其单个编码过程可以由单个码长单元进行表示。而为了实现纠错码码字的码长大于寻址颗粒,即用户数据的数据长度,此时对一个码长单元的编码拆分成若干个编码过程,其本质上可表现为在单个编码过程中对用户数据进行多次纠错码编码操作,基于多次编码操作的编码结果实现对码长的增长效果。
79.基于此,可在纠错码的单个码长单元内对多个不同的用户数据执行多次纠错码编码操作,以得到码长比用户数据的数据长度更长的纠错码码字。具体的,可在针对单个码长的编码过程中对多个不同的用户数据进行编码操作,以便将这些不同用户数据的编码结果通过某个数学运算的方式,得到一个纠错码码字,即ecc codeword。多个不同的用户数据可以为不同写命令下的数据块,即可将host的不同写命令下的数据块编码在同一个ecc码长内,实现在同一个存储设备被中实现ecc码长大于host的寻址数据颗粒,以达成host小颗粒访问和ecc高纠错能力的双重需求。
80.在实际应用中,在单个码长单元内对多个不同的用户数据执行多次纠错码编码的过程中,可按照预设寻址长度要求,例如寻址颗粒或寻址长度,将针对纠错码的单个码长单元拆分为多个子码长单元,然后采用所拆分的多个子码长单元分别对所划分的用户数据进行纠错码编码操作,得到多个编码结果。
81.具体的,对单个码长单元拆分,可以表现为根据用户需求,将一个ecc码长拆分成任意有限的等份,进行更细的数据颗粒度的寻址和编码。
82.参照图3,示出了本技术实施例提供的针对纠错码码字的编码过程示意图,假设所示的纠错码码字ecc codeword的长度为160bytes,那么其实际的编码长度,即单个码长单元同样可以为160bytes,其中包括128bytes的编码数据和32bytes的冗余数据,128bytes的编码数据可以由32bytes的用户数据和96bytes的全0数据拼接而成。其针对用户数据的编码按照从u0到u3的顺序进行,可将一个ecc码长拆分为个编码步骤,即对一个码长单元的编码拆分成若干个编码过程,其中每个编码步骤中可得到用户编码数据u0、u1、u2、u3。在实际应用中,在编码过程中可对多个不同的用户数据进行编码操作,然后将这些不同用户数据的编码结果通过数学运算的方式,得到一个纠错码码字。
83.示例性地,对u0(即用户编码数据0)的纠错码编码操作,在任何码字的第一次编码中,所编码得到的数据实际上为32bytes的用户数据(u0 32bytes)和96bytes的全0数据,并在对u0 32 bytes的用户数据进行编码后可生成冗余数据p0,p0的长度为32bytes;对u1(即用户编码数据1)的纠错码编码操作,在任何码字的第二次编码中,实际是u0+u1的编码,所编码得到的数据实际上为64bytes的用户数据(包含u0 32bytes与u1 32bytes)和64bytes的全0数据,并在对u0 32 bytes和u1 32bytes的用户数据进行编码后可生成冗余数据p1,p1的长度为32bytes;对u2(即用户编码数据2)的纠错码编码操作,在任何码字的第三次编码中,实际是对u0+u1+u2的编码,所编码得到的数据实际上为96bytes的用户数据(包含u0 32bytes、u1 32bytes与u2 32bytes)和32bytes的全0数据,并在对u0 32bytes、u1 32bytes与u2 32bytes的用户数据进行编码后可生成冗余数据p2,p2的长度为32bytes;对u3(即用户编码数据3)进行纠错码编码操作,在任何码字的第四次编码中,实际是对u0+u1+u2+u3的编码,所编码得到的数据实际上为128bytes的用户数据(包含u0 32bytes、u1 32bytes、u2 32bytes与u3 32bytes),并将对u0 32bytes、u1 32bytes、u2 32bytes与u3 32bytes的用户数据进行编码后可生成冗余数据p3,p3的长度为32bytes。
84.需要说明的是,所采用的纠错码编码的编码方式可以与主流的编解码算法相同,例如bch、ldpc等,对此,本技术实施例不加以限制。
85.如图3所示,在对用户数据执行多次纠错码编码操作后,其所得到的多个编码结果,不仅可以包括多次编码后的用户编码数据,例如用户数据u0~u3,还可以包括针对用户
编码数据的多个冗余数据,例如p0~p3,在对多个编码结果进行结合得到针对用户数据的纠错码码字的过程中,可将多次编码后的用户编码数据和针对用户编码数据的多个冗余数据进行结合得到。
86.其中,为了生成ecc码字的冗余数据,此时可对多个不同用户数据进行编码后形成的多个长度相同的冗余数据进行异或运算,即将同一个ecc码字内的多个冗余数据,例如p0~p3进行异或运算,得到针对纠错码码字的冗余数据p,异或运算后得到的冗余数据的长度为32bytes。
87.在实际应用中,此时可将多次编码后的用户编码数据与针对纠错码码字的冗余数据进行拼接,得到针对用户数据的纠错码码字。多次编码后的用户编码数据,例如用户数据u0~u3为ecc codeword长度下的用户数据,此处的用户数据长度可以为128bytes,可由任何一个ecc码字内的多个编码过程中用户数据的组合,即为4个32bytes长度;而针对纠错码码字的冗余数据p,为32bytes长度,可由同一个ecc码字内多个不同的冗余数据异或运算得到,此时在将p与u0+u1+u2+u3进行组合后,可得到128bytes+32bytes的纠错码码字,此纠错码码字的码长大于寻址颗粒32bytes。
88.需要说明的是,在同一个ecc码字内分多次进行编码,且对所生成的多个冗余数据进行异或运算后得到的ecc码字的过程,与传统编码中对一个ecc码长进行一次编码得到的ecc码字在纠错码算法上完全等同,将此编码过程进行拆分,能够解决用户的寻址颗粒小于ecc码长的问题。
89.通过对编码过程进行拆分的方案,还可将host的不同写命令下的数据块编码在同一个ecc码长内,实现在同一个存储设备被中实现ecc码长大于host的寻址数据颗粒,以达成host小颗粒访问和ecc高纠错能力的双重需求。在实际应用中,将host的不同写命令下的数据块编码在同一个ecc码长内,可以表现为在编码过程中控制器在接收到部分ecc码长内的数据时就可以进行编码,并且写入pcm介质,而并不是需要在控制器内部满足一个ecc码长才能进行pcm的写入,即可通过对一个ecc码长进行多次写入pcm进行实现。
90.在一种可选的方案中,对于host不同的写命令,每连续过来n个数据(host地址上可能不连续也可能连续),在设计方案中可以将这些连续的n个命令放在ecc的一个码长内(这n个命令数据就存放在连续的pcm物理地址上),然后控制器对这些数据的host地址-》物理地址的对应维护一个管理表,这样可以保证不同的写命令数据通过地址映射表而存放在同一个ecc码长内。
91.在本技术的一种实施例中,所接收到的针对数据处理的命令可以是写命令,还可以是读命令,在接收到的命令为读命令时,此时可以获取针对读命令所需读取数据的纠错码码字,对针对所需读取数据的纠错码码字执行纠错码解码操作,以得到所需读取的用户数据。其具体可表现为,在针对纠错码的单个码长单元内的用户数据完成纠错码编码操作之前,进行对所需读取数据的纠错码码字的纠错码解码操作。
92.在本技术实施例中,具有纠错能力的存储介质在接收到针对数据处理的写命令时,可对写命令中所携带的用户数据进行纠错码编码操作,在进行纠错码编码的过程中,可在针对纠错码的单个码长单元内,对用户数据执行多次纠错码操作,在经过多次纠错码操作得到的纠错码码字的码长将会大于用户数据的数据长度,基于纠错码的码长大于用户数据的数据长度,实现对小颗粒的访问和高纠错能力的双重需求。
93.参照图4,示出了本技术的另一种纠错码生成方法实施例的步骤流程图,用于服务器设备,涉及存储部件,所述存储部件具有纠错能力,侧重于对纠错码码字的解码过程,具体可以包括如下步骤:
94.步骤401,接收针对数据处理的读命令,获取针对读命令所需读取数据的纠错码码字;
95.ecc在存储设备中表现为纠错码编码引擎ecc encoder和纠错码解码引擎ecc decoder,ecc encoder的作用主要体现在数据处理的写流程中,在对用户数据进行纠错码编码时,将单个码长单元的编码拆分成若干个编码过程,最终将若干个编码结果通过数学运算的方式形成完整的ecc码长,即纠错码码字ecc codeword,使得ecc码长大于host的寻址数据颗粒,以达成host小颗粒访问和ecc高纠错能力的双重需求。
96.而纠错码解码引擎ecc decoder的作用主要体现在数据处理的读流程中,当存储介质接收到host发送的针对寻址数据颗粒的读命令时,可发送对应的ecc码长数据单元给到ecc decoder,ecc decoder在完成解码后,可将寻址数据颗粒的读数据通过数据通路逻辑发送给host,完成对数据的读取。
97.在服务器设备接收到针对数据处理的读命令时,此时所读取的用户数据存储在存储介质中,而存储在存储介质中的用户数据已进行纠错码编码,若需要对用户数据进行获取,则需要对此已进行纠错码编码的用户数据进行纠错码解码操作。
98.步骤402,对针对所需读取数据的纠错码码字执行纠错码解码操作,得到所需读取的用户数据。
99.为了对读命令所需读取数据进行纠错码解码操作,此时可以获取编码得到的纠错码码字,由于在对纠错码码字进行编码的过程中,基于在单个码长单元内的编码过程实现其码长大于用户数据的数据长度,在进行纠错码解码时,可对针对所需读取数据的纠错码码字执行多次纠错码解码操作,以得到所需读取的用户数据。
100.其中,在针对纠错码的单个码长单元内的用户数据完成纠错码编码操作之前,可进行对所需读取数据的纠错码码字的纠错码解码操作,即可支持在任意一个寻址颗粒编码完成后开启解码操作,此时的ecc码长也为160bytes,可通过解码将寻址颗粒数据进行纠正。例如在u0完成编码后,当ecc编码引擎还未收到u1-u3的数据也可开启u0的解码操作,只需将u0和p0送入解码引擎即可,同理在u0和u1完成编码后,在还未收到u2-u3的编码操作也可开启u0和u1的解码操作,只要将u0、u1和p0+p1送入ecc解码引擎即可,以此类推,对此,本技术实施例不加以赘述。
101.在实际应用中,对于任意一个寻址颗粒编码完成后所开启的编码操作,可以表现为在编码过程中,控制器根据host的写入状态和地址映射关系,并可针对每个ecc page维护一个状态,那么在接收到读指令时,若读取到对应的ecc page,则表示此ecc page所对应的寻址颗粒的编码已完成,发起对这个ecc page的解码行为。
102.示例性地,参照图5,示出了本技术实施例提供的针对纠错码码字的解码过程示意图,所示的ecc codeword长度为160bytes,在解码过程中,在对ecc codeword长度进行解码后,还需要对寻址颗粒数据进行提取,即对用户数据进行读取,以将所读取到的用户数据传输给数据通路,返回给host。对应于图3所示的编码完成情况,其针对用户数据的解码可按照从u3到u0的顺序进行。
103.在实际应用中,其所获取的纠错码码字可以为在单个码长单元内多次编码后的用户编码数据u0+u1+u2+u3与针对纠错码码字的冗余数据p的组合,其中针对纠错码码字的冗余数据p可以基于在同一个ecc码字内的多个冗余数据,例如p0~p3进行异或运算得到,此处的冗余数据的长度为32bytes,其中p0是在任何码字进行第一次编码时为u0生成的冗余数据0,p1是在任何码字进行第二次编码时为u1生成的冗余数据1,p2是在任何码字进行第三次编码时为u2生成的冗余数据2,p3是在任何码字进行第四次编码时为u3生成的冗余数据3。
104.对u3(即用户编码数据3)进行纠错码解码操作,只要完成用户编码数据u3的编码后,即可对该ecc码长进行解码,解码数据为u0+u1+u2+u3+p0+p1+p2+p3,长度为160bytes;对u2(即用户编码数据2)进行纠错码解码操作,只要完成用户编码数据u2的编码后,即可对该ecc码长进行解码,解码数据为u0+u1+u2+p0+p1+p2,长度也为160bytes;对u1(即用户数据1)进行纠错码解码操作,只要完成用户编码数据u1的编码后,即可对该ecc码长进行解码,解码数据为u0+u1+p0+p1,长度也为160bytes;对u0(即用户编码数据0)进行纠错码解码操作,只要完成用户编码数据u0的编码后,即可对该ecc码长进行解码,解码数据为u0+p0,长度也为160bytes。
105.需要说明的是,在对u3(即编码用户数据3)进行纠错码解码操作时,此时已完成对u0~u3的数据编码,在此解码过程中无需知道p0~p3的各自内容,只需知道p0+p1+p2+p3进行异或运算后的冗余数据p,此可作为在对u0~u3进行解码后得到的u0~u3数据是否正确的信息。
106.在本技术实施例中,具有纠错能力的存储介质在接收到针对数据处理的写命令时,可对写命令中所携带的用户数据进行纠错码编码操作,在进行纠错码编码的过程中,可在针对纠错码的单个码长单元内,对用户数据执行多次纠错码操作,在经过多次纠错码操作得到的纠错码码字的码长将会大于用户数据的数据长度,基于纠错码的码长大于用户数据的数据长度,实现对小颗粒的访问和高纠错能力的双重需求。
107.参照图6,示出了本技术实施例提供的涉及纠错码编解码的数据处理的应用场景图,可应用在scm产品中,所针对的是pcm等相变存储介质的纠错,其侧重于满足scm存储部件小颗粒数据寻址的要求,所要实现的是数据块的读写颗粒,即用户数据的数据长度小于纠错码码长的设计方案。
108.其中,ecc在存储设备中表现为纠错码编码引擎ecc encoder和纠错码解码引擎ecc decoder。
109.在此应用场景下,当服务器设备611接收到客户端设备610发送的针对数据处理的读写命令时,host可以发起对于scm设备的读写命令,当所发起的命令为写命令时,可进行对数据处理的写流程,此时host可通过数据通路逻辑将符合寻址数据颗粒的数据发送给ecc encoder,纠错码编码引擎ecc encoder可对所写入的数据进行纠错码编码,具体为在针对纠错码的单个码长单元内对多个不同的用户数据执行纠错码编码操作,以得到不同用户数据的一个纠错码码字,其码长大于用户数据的数据长度的纠错码码字,此纠错码码字可基于多次编码后的用户编码数据,例如u0+u1+u2+u3和多个冗余数据,例如p0+p1+p2+p3进行异或运算后的冗余数据p进行结合得到,此时可将编码得到的u0+u1+u2+u3+p的纠错码码字发送至pcm存储介质中,完成对用户数据进行纠错码编码后的写入。
110.当所发起的命令为读命令时,可进行对数据处理的读流程,此时host可将读命令发送给存储介质,当存储介质接收到host发送的针对寻址数据颗粒的读命令时,可获取针对读命令所需读取数据的纠错码码字,并发送对应的ecc码长数据单元给到ecc decoder,ecc decoder在对针对所需读取数据的纠错码码字执行多次纠错码解码操作,得到所需读取的用户数据,可将寻址数据颗粒的读数据通过数据通路逻辑发送给host,完成对数据的读取。
111.在本技术实施例中,基于传统ecc编解码算法,在不改变码长的前提下,提出了全新的分步骤编码的过程和冗余数据运算方法,使得用户的寻址颗粒不受ecc码长限制,即通过提出ecc码长可以大于host寻址的数据颗粒的全新编解码流程,在解决host的小颗粒寻址的诉求的同时,保证较强的ecc纠错能力,克服传统存储部件在host寻址颗粒和ecc码长之间所存在的约束。
112.需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术实施例并不受所描述的动作顺序的限制,因为依据本技术实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本技术实施例所必须的。
113.参照图7,示出了本技术的一种纠错码生成装置实施例的结构框图,应用于服务器设备,涉及存储部件,所述存储部件具有纠错能力,具体可以包括如下模块:
114.用户数据获取模块701,用于接收针对数据处理的写命令,获取所述写命令所携带的用户数据;
115.纠错码编码模块702,用于在对所述用户数据进行纠错码编码的过程中,在针对纠错码的单个码长单元内对所述用户数据执行多次纠错码编码操作,得到针对所述用户数据的纠错码码字;所述纠错码码字的码长大于所述用户数据的数据长度。
116.在本技术的一种实施例中,所述用户数据包括多个不同的用户数据;纠错码编码模块702可以包括如下子模块:
117.处理结果获取子模块,用于采用所述单个码长单元对所述多个不同的用户数据执行多次纠错码编码操作,得到多个编码结果;
118.纠错码码字生成子模块,用于将所述多个编码结果进行结合得到针对所述多个不同的用户数据的纠错码码字。
119.在本技术的一种实施例中,处理结果获取子模块可以包括如下单元:
120.码长拆分单元,用于按照预设寻址长度要求将针对纠错码的单个码长单元拆分为多个子码长单元;
121.纠错码编码单元,用于对所述多个不同的用户数据进行划分,采用所拆分的多个子码长单元分别对所划分的用户数据进行纠错码编码操作,得到多个编码结果。
122.在本技术的一种实施例中,所述多个编码结果包括多次编码后的用户编码数据和针对用户编码数据的多个冗余数据,纠错码码字生成子模块可以包括如下单元:
123.纠错码码字生成单元,用于将所述多次编码后的用户编码数据和针对用户编码数据的多个冗余数据进行结合,得到针对纠错码码字的纠错码码字。
124.在本技术的一种实施例中,纠错码码字生成单元可以包括如下子单元:
125.异或处理子单元,用于对所述针对用户编码数据的多个冗余数据进行异或运算,得到针对纠错码码字的冗余数据;
126.数据拼接子单元,用于将所述多次编码后的用户编码数据与针对纠错码码字的冗余数据进行拼接,得到针对所述多个不同的用户数据的纠错码码字。
127.在本技术的一种实施例中,所述装置还可以包括如下模块:
128.纠错码码字获取模块,用于在所接收到的命令为读命令时,获取针对所述读命令所需读取数据的纠错码码字;
129.用户数据获取模块,用于对所述针对所需读取数据的纠错码码字执行纠错码解码操作,得到所需读取的用户数据。
130.在本技术的一种实施例中,所述装置还包括如下模块:
131.纠错码解码模块,用于在针对纠错码的单个码长单元内的用户数据完成纠错码编码操作之前,进行对所需读取数据的纠错码码字的纠错码解码操作。
132.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
133.本技术实施例还提供了一种电子设备,包括:
134.包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述纠错码生成方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
135.本技术实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现上述纠错码生成方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
136.本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
137.本领域内的技术人员应明白,本技术实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本技术实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
138.本技术实施例是参照根据本技术实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
139.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
140.这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
141.尽管已描述了本技术实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术实施例范围的所有变更和修改。
142.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
143.以上对本技术所提供的一种纠错码生成方法、一种纠错码生成装置、相应的一种电子设备以及相应的一种计算机可读存储介质,进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1