存储数据的方法和存储设备与流程

文档序号:15850620发布日期:2018-11-07 09:49阅读:160来源:国知局
存储数据的方法和存储设备与流程
本申请涉及信息
技术领域
,更具体地,涉及存储数据的方法和存储设备。
背景技术
纠删码(erasurecode,ec)是数据存储中实现数据可靠性的关键技术。纠删码是通过对有效的数据块进行编码得到冗余的校验数据块。信息序列和校验序列共同组成了编码序列,其中,信息序列包含数据块,校验序列包含校验块。校验块是根据校验子生成的。ec编码在生成校验子的过程中所涉及的伽罗华域乘法运算次数较多,导致编码的计算复杂度随着校验序列的增加而增加,而伽罗华域乘法运算在设备的中央处理器(centralprocessingunit,cpu)中的计算时延比较高,是整个ec编码过程中的瓶颈所在,因此最终导致ec编码的计算性能随校验序列的增加而降低。技术实现要素:本申请提供一种存储数据的方法和存储设备,可以降低生成校验子的复杂度。第一方面,本申请实施例提供一种存储数据的方法,该方法由存储设备执行,包括:获得k个数据块,该k个数据块中的每个数据块的长度为n个数据单位;其中,k为大于或等于1的正整数,n为大于或等于1的正整数;生成该k个数据块的第一校验子和第二校验子;根据该第一校验子和该第二校验子,生成第一校验块和第二校验块;存储该k个数据块、该第一校验块和该第二校验块;其中,生成该k个数据块的第一校验子和第二校验子,包括:生成第n个中间校验子集合,该第n个中间校验子集合包括mn个中间校验子,该mn个中间校验子中的每个中间校验子为k个数据单位中的至少两个数据单位的异或,该k个数据单位分别为该k个数据块的第n个数据单位组成,mn为大于或等于2的正整数,n=0,……,n-1;基于公共中间校验子和至少r个校验参数,生成该第一校验子中的第n个第一校验数据单位,其中,该第一校验子包括n个第一校验数据单位,该公共中间校验子包括该第n个中间校验子集合中的至少一个校验子,其中2r等于k;基于该公共中间校验子和至少r个校验参数,生成该第二校验子中的第n个第二校验数据单位,其中,该第二校验子包括n个第二校验数据单位。上述技术方案利用至少两个数据单位的异或结果构造了多个中间校验子。在生成校验子的过程中,至少两个校验子可以由相同的中间校验子生成。这样,可以降低生成校验子的复杂度,并且提高编码效率。结合第一方面,在第一方面的第一种可能的实现方式中,该生成第n个中间校验子集合,包括:生成该mn个中间校验子中的第m个中间校验子,该第m个中间校验子为该k个数据单位中的km个数据单位的异或,其中km为大于或等于2且小于或等于k的正整数,m=0,……,mn-1。结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,该mn个中间校验子包括l1n个层1中间校验子和l2n个层2中间校验子,其中l1n为大于或等于1的正整数,l2n为大于或等于1的正整数,l1n和l2n的和为mn;该生成该mn个中间校验子中的第m个中间校验子,包括:生成该l1n个层1中间校验子,其中该pn个层1中间校验子中的每个层1中间校验子为该k个数据单位中的两个数据单位的异或;生成该l2n个层2中间校验子,其中该l2n个层2中间校验子中的每个层2中间校验子为该l1n个层1中间校验子中的两个层1中间校验子的异或。结合第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,j=0,…,k-1,j的二进制值共包括r位,or为j的二进制值的第r位的取值,vr表示该r个校验参数中的第r个校验参数,ωj表示第j个参考校验参数,k的二进制共包括至少三位,该mn个中间校验子中包括中间校验子md1、中间校验子md2、中间校验子md3,该中间校验子md1为ck中k的二进制值最低位的取值为1的ck的值的异或,其中ck为该k个数据块中的第k个数据块的第n个数据字节,k=0,…,k-1;该中间校验子md2为ck中k的二进制值中间位的取值为1的ck的值的异或;该中间校验子md3为ck中k的二进制值最高位的取值为1的ck的值的异或。结合第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第一方面的第四种可能的实现方式中,j=0,…,k-1,j的二进制值共包括r位,or为j的二进制值的第r位的取值的相反值,vr表示该r个校验参数中的第r个校验参数,ωj表示第j个参考校验参数,k的二进制共包括至少三位,该mn个中间校验子中包括中间校验子md1、中间校验子md2、中间校验子md3,该中间校验子md1为ck中k的二进制值最低位的取值为0的ck的值的异或,其中ck为该k个数据块中的第k个数据块的第n个数据字节,k=0,…,k-1;该中间校验子md2为ck中k的二进制值中间位的取值为0的ck的值的异或;该中间校验子md3为ck中k的二进制值最高位的取值为0的ck的值的异或。结合第一方面或第一方面的上述任一种可能的实现方式,在第一方面的第五种可能的实现方式中,该基于公共中间校验子和r个校验参数,生成该第一校验子中的第n个第一校验数据单位,包括:根据以下公式生成该第n个第一校验数据单位s1,n=p1,0·q1,0+p1,1·q1,1+......+p1,s-1·q1,s-1,其中s1,n表示该第n个第一校验数据单位,p1,s表示s个第一目标中间校验子中的第s个第一目标中间校验子,q1,s表示s个第一校验参数中的第s个第一校验参数,其中该s个第一目标中间校验子包括该公共中间校验子,该mn个中间校验子包括该s个第一目标中间校验子,该r个校验参数包括该s个第一校验参数,s为大于或等于r的正整数,符号+表示伽罗华域异或,符号·表示伽罗华域乘法,s=0,……,s-1;该基于该公共中间校验子和至少r个校验参数,生成该第二校验子中的第n个第二校验数据单位,包括:根据以下公式生成该第n个第二校验数据单位s2,n=p2,0·q2,0+p2,1·q2,1+......+p2,s-1·q2,s-1,其中s2,n表示该第n个第二校验数据单位,p2,s表示s个第二目标中间校验子中的第s个第二目标中间校验子,q2,s表示s个第二校验参数中的第s个第二校验参数,其中该s个第二目标中间校验子包括该公共中间校验子,该mn个中间校验子包括该s个第二目标中间校验子,该至少r个校验参数包括该s个第二校验参数,s为大于或等于r的正整数,符号+表示伽罗华域异或,符号·表示伽罗华域乘法,s=0,……,s-1。第二方面,本申请实施例提供一种存储数据的方法,该方法包括:获得k个数据块,该k个数据块中的每个数据块包括n个数据字节,其中,k为大于或等于1的正整数,n为大于或等于1的正整数;生成m个校验子;根据该m个校验子,生成m个校验块;存储该k个数据块和该m个校验块;其中生成该m个校验子中的任一个校验子包括的一个校验字节使用的伽罗华域乘法次数小于k+m,其中m为大于或等于2的正整数,符号+表示加法。结合第二方面,在第二方面的第一种可能的实现方式中,该生成该m个校验子包括:生成第n个中间校验子集合,该第n个中间校验子集合包括mn个中间校验子,该mn个中间校验子中的每个中间校验子为k个数据单位中的至少两个数据单位的异或,该k个数据单位分别为该k个数据块的第n个数据单位组成,mn为大于或等于2的正整数,n=0,……,n-1;基于公共中间校验子和至少r个校验参数,生成第一校验子中的第n个第一校验数据单位,其中,该第一校验子包括n个第一校验数据单位,该公共中间校验子包括该第n个中间校验子集合中的至少一个校验子,其中2r等于k;基于该公共中间校验子和至少r个校验参数,生成第二校验子中的第n个第二校验数据单位,其中,该第二校验子包括n个第二校验数据单位,该第一校验子和该第二校验子是该m个校验子中的两个校验子。结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,该生成第n个中间校验子集合,包括:生成该mn个中间校验子中的第m个中间校验子,该第m个中间校验子为该k个数据单位中的km个数据单位的异或,其中km为大于或等于2且小于或等于k的正整数,m=0,……,mn-1。结合第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,该mn个中间校验子包括l1n个层1中间校验子和l2n个层2中间校验子,其中l1n为大于或等于1的正整数,l2n为大于或等于1的正整数,l1n和l2n的和为mn;该生成该mn个中间校验子中的第m个中间校验子,包括:生成该l1n个层1中间校验子,其中该pn个层1中间校验子中的每个层1中间校验子为该k个数据单位中的两个数据单位的异或;生成该l2n个层2中间校验子,其中该l2n个层2中间校验子中的每个层2中间校验子为该l1n个层1中间校验子中的两个层1中间校验子的异或。结合第二方面的第二种可能的实现方式或第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,j=0,…,k-1,j的二进制值共包括r位,or为j的二进制值的第r位的取值,vr表示该r个校验参数中的第r个校验参数,ωj表示第j个参考校验参数,k的二进制共包括至少三位,该mn个中间校验子中包括中间校验子md1、中间校验子md2、中间校验子md3,该中间校验子md1为ck中k的二进制值最低位的取值为1的ck的值的异或,其中ck为该k个数据块中的第k个数据块的第n个数据字节,k=0,…,k-1;该中间校验子md2为ck中k的二进制值中间位的取值为1的ck的值的异或;该中间校验子md3为ck中k的二进制值最高位的取值为1的ck的值的异或。结合第二方面的第二种可能的实现方式或第二方面的第三种可能的实现方式,在第二方面的第五种可能的实现方式中,j=0,…,k-1,j的二进制值共包括r位,or为j的二进制值的第r位的取值的相反值,vr表示该r个校验参数中的第r个校验参数,ωj表示第j个参考校验参数,k的二进制共包括至少三位,该mn个中间校验子中包括中间校验子md1、中间校验子md2、中间校验子md3,该中间校验子md1为ck中k的二进制值最低位的取值为0的ck的值的异或,其中ck为该k个数据块中的第k个数据块的第n个数据字节,k=0,…,k-1;该中间校验子md2为ck中k的二进制值中间位的取值为0的ck的值的异或;该中间校验子md3为ck中k的二进制值最高位的取值为0的ck的值的异或。结合第二方面或第二方面的上述任一种可能的实现方式,在第二方面的第六种可能的实现方式中,该基于公共中间校验子和r个校验参数,生成该第一校验子中的第n个第一校验数据单位,包括:根据以下公式生成该第n个第一校验数据单位s1,n=p1,0·q1,0+p1,1·q1,1+......+p1,s-1·q1,s-1,其中s1,n表示该第n个第一校验数据单位,p1,s表示s个第一目标中间校验子中的第s个第一目标中间校验子,q1,s表示s个第一校验参数中的第s个第一校验参数,其中该s个第一目标中间校验子包括该公共中间校验子,该mn个中间校验子包括该s个第一目标中间校验子,该r个校验参数包括该s个第一校验参数,s为大于或等于r的正整数,符号+表示伽罗华域异或,符号·表示伽罗华域乘法,s=0,……,s-1;该基于该公共中间校验子和至少r个校验参数,生成该第二校验子中的第n个第二校验数据单位,包括:根据以下公式生成该第n个第二校验数据单位s2,n=p2,0·q2,0+p2,1·q2,1+......+p2,s-1·q2,s-1,其中s2,n表示该第n个第二校验数据单位,p2,s表示s个第二目标中间校验子中的第s个第二目标中间校验子,q2,s表示s个第二校验参数中的第s个第二校验参数,其中该s个第二目标中间校验子包括该公共中间校验子,该mn个中间校验子包括该s个第二目标中间校验子,该至少r个校验参数包括该s个第二校验参数,s为大于或等于r的正整数,符号+表示伽罗华域异或,符号·表示伽罗华域乘法,s=0,……,s-1。第三方面,本申请实施例提供一种存储设备,该存储设备包括用于实现第一方面或第一方面的任一种可能的实现方式的单元。第四方面,本申请实施例提供一种存储设备,该存储设备包括用于实现第二方面或第二方面的任一种可能的实现方式的单元。第五方面,本申请实施例提供一种存储设备,该存储设备包括:存储器,用于存储程序;处理器,用于执行所述存储器存储的所述程序,当所述程序被执行时,所述处理器用于执行第一方面或第一方面的任一种可能的实现方式所述的方法。可选的,该存储设备为芯片或集成电路。第六方面,本申请实施例提供一种存储设备,该存储设备包括:存储器,用于存储程序;处理器,用于执行所述存储器存储的所述程序,当所述程序被执行时,所述处理器用于执行第二方面或第二方面的任一种可能的实现方式所述的方法。可选的,该存储设备为芯片或集成电路。第七方面,本申请实施例提供一种存储设备,该存储设备包括接口和处理器,该接口与该处理器通信;其中,该处理器用于执行第一方面或第一方面的任一种可能的实现方式所述的方法,其中k个数据块是通过该接口获得获得的。第八方面,本申请实施例提供一种存储设备,该存储设备包括接口和处理器,该接口与该处理器通信;其中,该处理器用于执行第二方面或第二方面的任一种可能的实现方式所述的方法,其中k个数据块是通过该接口获得获得的。第九方面,本申请实施例提供一种芯片用于执行第一方面或第一方面的任一种可能的实现方式所述的方法。第十方面,本申请实施例提供一种芯片用于执行第二方面或第二方面的任一种可能的实现方式所述的方法。第十一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行上述各个方面所述的方法。第十二方面,本申请实施例提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述各方面所述的方法。附图说明图1是存储设备的示意性结构框图。图2是存储设备中的控制器的示意性结构框图。图3是存储数据块的方法的示意图。图4是分布式块存储系统的示意图。图5是分布式块存储系统的服务器的示意性结构框图。图6根据本申请实施例提供的存储数据的方法的示意性流程图。图7是一种生成4个校验子的过程的示意性流程图。图8是一种生成4个校验子的过程的示意性流程图。图9是一种生成4个校验子的过程的示意性流程图。图10是根据本申请实施例提供的存储设备的结构框图。图11根据本申请实施例提供的一种芯片的结构框图。具体实施方式下面将结合附图,对本申请中的技术方案进行描述。如图1所示,本发明实施例中的存储设备,可以为存储阵列(如的18000系列,v3系列)。存储阵列包括存储控制器101和多块硬盘,其中,硬盘包含固态硬盘(solidstatedisk,ssd)、机械硬盘或者混合硬盘等。机械硬盘如hdd(harddiskdrive)。如图2所示,控制器101包含中央处理单元(centralprocessingunit,cpu)201、存储器202和接口203,存储器202中存储计算机指令,cpu201执行存储器202中的计算机指令对存储系统进行管理及数据访问操作。另外,为节省cpu201的计算资源,现场可编程门阵列(fieldprogrammablegatearray,fpga)或其他硬件也可以用于执行本发明实施例中cpu201全部操作,或者,fpga或其他硬件与cpu201分别用于执行本发明实施例cpu的部分操作。为方便描述,本发明实施例统一用处理器来指cpu201和存储器202的组合,以及上述各种实现,处理器与接口203通信。如图1和图2所描述的存储阵列,控制器101用于接收数据,将接收的数据进行划分获得数据块,使用ec编码得到校验数据块,如图3所示,将数据块和校验数据块存储到硬盘中。进一步的,本发明实施例的存储设备还可以为分布式文件存储系统(如的9000系列),分布式块存储系统(如的系列)等。以的系列。示例性的如图4所示,分布式块存储系统包括多台服务器,如服务器1、服务器2、服务器3、服务器4、服务器5和服务器6,服务器间通过infiniband或以太网络等互相通信。在实际应用当中,分布式块存储系统中服务器的数量可以根据实际需求增加,本发明实施例对此不作限定。分布式块存储系统的服务器中包含如图5所示的结构。如图5所示,分布式块存储系统中的每台服务器包含中央处理单元(centralprocessingunit,cpu)501、内存502、接口503、硬盘1、硬盘2和硬盘3,内存502中存储计算机指令,cpu501执行内存502中的程序指令执行相应的操作。接口503可以为硬件接口,如网络接口卡(networkinterfacecard,nic)或主机总线适配器(hostbusadaptor,hba)等,也可以为程序接口模块等。硬盘包含固态硬盘(solidstatedisk,ssd)、机械硬盘或者混合硬盘。机械硬盘如hdd(harddiskdrive)。另外,为节省cpu401的计算资源,现场可编程门阵列(fieldprogrammablegatearray,fpga)或其他硬件也可以代替cpu501执行上述相应的操作,或者,fpga或其他硬件与cpu501共同执行上述相应的操作。为方便描述,本发明实施例将cpu501与内存502、fpga及其他替代cpu501的硬件或fpga及其他替代cpu501的硬件与cpu501的组合统称为处理器。如图4和图5所描述的分布式块存储系统,服务器的处理器用于接收数据,将接收的数据进行划分获得数据块,使用ec编码得到校验数据块,参考图3,将数据块和校验数据块存储到分布式块存储系统的硬盘中。图6基于本发明实施例提供的存储设备实施的存储数据的示意性流程图,包括:601,获得k个数据块,该k个数据块中的每个数据块包括n个数据单位,其中,k为大于或等于1的正整数,n为大于或等于1的正整数。本发明实施例中,存储设备接收数据,如主机发送的数据,将数据划分为数据块。其中,数据单位,即长度,可以为位(bit)、字节(byte)、千字节(kilobyte,kb)、兆字节(megabyte,mb)等。本发明实施例中数据单位以字节数为例。602,生成所述k个数据块的第一校验子和第二校验子。603,根据该第一校验子和该第二校验子,生成第一校验块和第二校验块。根据该第一校验子和该第二校验子生成该第一校验块和该第二校验块的方法可以与现有技术相同。校验子包括的校验数据单位与校验块包括的校验数据单位是相同的。校验数据单位,即校验数据长度,例如,校验子包括一个校验字节,即校验子为1个字节长度,对应于该校验子的校验块也包括一个字节。又如,校验子包括两个校验字节,对应于该校验子的校验块也包括两个校验字节。例如,该根据该第一校验子和该第二校验子,生成第一校验块和第二校验块包括:将该第一校验子和该第二校验子与预设值相乘,得到该第一校验子和该第二校验子。该预设值保存在该存储设备中的,可以直接使用的值。例如,假设校验子的数目为2,每个校验子包括一个校验字节,两个校验字节分别为s0至s1。可以根据以下公式生成该第一校验块和该第二校验块:其中,mt表示该预设值,p0和p1分别表示该第一校验块和该第二校验块,s0和s1分别表示该第一校验字节和该第二校验字节。604,存储该k个数据块、该第一校验块和该第一校验块。具体实现,可以将该k个数据块、该第一校验块和该第一校验块分别发送至k+2个存储装置,存储装置可以为硬盘,也可以为图4所示的以服务器为粒度的存储节点。其中,步骤602包括:6021,生成第n个中间校验子集合,该第n个中间校验子集合包括mn个中间校验子,该mn个中间校验子中的每个中间校验子为k个数据字节中的至少两个数据字节的异或,该k个数据字节分别为该k个数据块的第n个数据字节组成,mn为大于或等于2的正整数,n=0,……,n-1。6022,基于公共中间校验子和至少r个校验参数,生成第一校验子中的第n个第一校验字节,该第一校验子包括n个第一校验字节,其中该公共中间校验子包括该第n个中间校验子集合中的至少一个校验子,其中2r等于k。6023,基于该公共中间校验子和至少r个校验参数,生成第二校验子中的第n个第二校验字节,该第二校验子包括n个第二校验字节。根据图6所示的方法利用至少两个数据单位(如数据字节)的异或构造了多个中间校验子。在生成校验子的过程中,至少两个校验子可以由相同的中间校验子生成。这样,可以降低生成校验子的计算复杂度,从而提高编码效率。可选的,在一些实施例中,该生成第n个中间校验子集合,包括:生成该mn个中间校验子中的第m个中间校验子,该第m个中间校验子为该k个数据字节中的km个数据字节的异或,其中km为大于或等于2且小于或等于k的正整数,m=0,……,mn-1。例如,在一些实施例中,假设k等于8。n个中间校验子集合中的第n个中间校验子集合包括中间校验子m0和m1,另一个中间校验子集合包括中间校验子m1、m2和m3。m0=c0+c2+c4+c6,(公式1.2)m1=c1+c3+c5+c7,(公式1.3)m2=c2+c3+c6+c7,(公式1.4)m3=c4+c5+c6+c7,(公式1.5)其中c0表示8个数据块中的数据块0的数据字节n,c1表示8个数据块中的数据块1的数据字节n,c2表示8个数据块中的数据块2的数据字节n,依次类推。符号“+”表示异或运算。又如,在另一些实施例中,假设k等于8。n个中间校验子集合中的一个中间校验子集合包括中间校验子m0和m1,另一个中间校验子集合包括中间校验子m1、m2和m3,另一个中间校验子集合包括中间校验子m1、m2、m3、m4、m5和m6。m0至m3可以参见公式1.2至公式1.5,m4至m6可以参见公式1.6至1.8。m4=c3+c7,(公式1.6)m5=c5+c7,(公式1.7)m6=c6+c7,(公式1.8)其中c3、c5、c6和c7的含义与公式1.1至1.4相同,符号“+”表示异或运算。可选的,在一些实施例中,该mn个中间校验子包括l1n个层1中间校验子和l2n个层2中间校验子,其中l1n为大于或等于1的正整数,l2n为大于或等于1的正整数,l1n和l2n的和为mn。该生成该mn个中间校验子中的第m个中间校验子,包括:生成该l1n个层1中间校验子,其中该pn个层1中间校验子中的每个层1中间校验子为该k个数据字节中的两个数据字节的异或;生成该l2n个层2中间校验子,其中该l2n个层2中间校验子中的每个层2中间校验子为该l1n个层1中间校验子中的两个层1中间校验子的异或。例如,在一些实施例中,假设k等于8。一个中间校验子集合包括的多个中间校验子可以包括四个层1中间校验子m1,0、m1,1、m1,2和m1,3。该中间校验子集合可以包括两个层2中间校验子m2,0和m2,1。m1,0=c0+c4,(公式1.9)m1,1=c1+c5,(公式1.10)m1,2=c2+c6,(公式1.11)m1,3=c3+c7,(公式1.12)m2,0=m1,0+m1,2,(公式1.13)m2,1=m1,1+m1,3,(公式1.14)其中c0至c7的含义与公式1.2至1.5相同,符号“+”表示异或运算。另一个中间校验子集合包括的多个中间校验子可以包括五个层1中间校验子m1,1、m1,2、m1,3、m1,4和m1,5。该另一个中间校验子集合可以包括三个层2中间校验子m2,1、m2,2和m2,3。m1,4=c4+c6,(公式1.15)m1,5=c5+c7,(公式1.16)m2,2=m1,2+m1,3,(公式1.17)m2,3=m1,4+m1,5,(公式1.18)其中c4至c7的含义与公式1.2至1.5相同,符号“+”表示异或运算。由公式1.8至公式1.12可知,每个层1中间校验子为两个数据字节的异或,每个层2中间校验子为两个层1中间校验子的异或。可选的,在一些实施例中,j=0,…,k-1,j的二进制值共包括r位,or为j的二进制值的第r位的取值,vr表示该至少一个校验参数中的一个校验参数,ωj表示第j个参考校验参数,k的二进制共包括至少三位,该mn个中间校验子中包括中间校验子md1、中间校验子md2、中间校验子md3,该中间校验子md1为ck中k的二进制值最低位的取值为1的ck的值的异或,其中ck为该k个数据块中的第k个数据块的第n个数据字节,k=0,…,k-1;该中间校验子md2为ck中k的二进制值中间位的取值为1的ck的值的异或;该中间校验子md3为ck中k的二进制值最高位的取值为1的ck的值的异或。例如,假设r=3,在该实施例中,or、vr和ωj的关系可以如表1-1所示。表1-1以表1-1的第一行为例ω0=0·v0+0·v1+0·v2,以表1-1的第二行为例ω1=1·v0+0·v1+0·v2,以表1-1的第三行为例ω2=0·v0+1·v1+0·v2,依次类推。假设k等于8,则k的二进制值有三位。md1=c1+c3+c5+c7,md2=c2+c3+c6+c7,md3=c4+c5+c6+c7。可选的,在另一些实施例中,j=0,…,k-1,j的二进制值共包括r位,or为j的二进制值的第r位的取值的相反值,vr表示该r个校验参数中的第r个校验参数,ωj表示第j个参考校验参数,k的二进制共包括至少三位,该mn个中间校验子中包括中间校验子md1、中间校验子md2、中间校验子md3,该中间校验子md1为ck中k的二进制值最低位的取值为0的ck的值的异或,其中ck为该k个数据块中的第k个数据块的第n个数据字节;该中间校验子md2为ck中k的二进制值中间位的取值为0的ck的值的异或;该中间校验子md3为ck中k的二进制值最高位的取值为0的ck的值的异或。假设r=3,在该实施例中,or、vr和ωj的关系可以如表1-2所示。v2v1v0ω0111ω1110ω2101ω3100ω4011ω5010ω6001ω7000表1-2以表1-2的第一行为例ω0=1·v0+1·v1+1·v2,以表1-1的第二行为例ω1=0·v0+1·v1+1·v2,以表1-1的第三行为例ω2=1·v0+0·v1+1·v2,依次类推。假设k等于8,则k的二进制值有三位。md1=c1+c3+c5+c7,md2=c2+c3+c6+c7,md3=c4+c5+c6+c7。上述实施例中,or为j的二进制值的第r位的取值或者第r位的取值的相反值。本领域技术人员可以理解,在另一些实施例中,or的取值也可以其他值。例如假设r=3,ωj对应的o0至o2的取值可以是r的取值向左移动一位并且左侧补0。例如ω7=1·v0+1·v1+0·v2,ω6=1·v0+0·v1+0·v2。根据ωj和or的取值的不同对应关系,可以获得不同的中间校验子的计算方法,在此就不必一一列举。可选的,在一些实施例中,该根据公共中间校验子和至少r个校验参数,生成第一校验子中的第n个第一校验字节,包括:根据以下公式生成该第n个第一校验字节s1,n=p1,0·q1,0+p1,1·q1,1+......+p1,s-1·q1,s-1,(公式1.19)其中s1,n表示该第n个第一校验字节,p1,s表示s个第一目标中间校验子中的第s个第一目标中间校验子,q1,s表示s个第一校验参数中的第s个第一校验参数,其中该s个第一目标中间校验子包括该公共中间校验子,该mn个中间校验子包括该s个第一目标中间校验子,该至少r个校验参数包括该s个第一校验参数,s为大于或等于r的正整数,符号+表示异或,符合·表示伽罗华域乘法,s=0,……,s-1。根据该公共中间校验子和该至少r个校验参数,生成第二校验子中的第n个第二校验字节,包括:根据以下公式生成该第n个第二校验字节s2,n=p2,0·q2,0+p2,1·q2,1+......+p2,s-1·q2,s-1,(公式1.20)其中s2,n表示该第n个第二校验字节,p2,s表示s个第二目标中间校验子中的第s个第二目标中间校验子,q2,s表示s个第二校验参数中的第s个第二校验参数,其中该s个第二目标中间校验子包括该公共中间校验子,该mn个中间校验子包括该s个第二目标中间校验子,该至少r个校验参数包括该s个第二校验参数,s为大于或等于r的正整数,符号+表示异或和,符合·表示伽罗华域乘法,s=0,……,s-1。为了帮助本领域技术人员更好地理解本申请的技术方案,下面将结合具体实施例对本申请进行进一步描述。图7是一种生成4个校验子的过程的示意性流程图。图7所示的实施例中,信息序列由8个数据块组成,每个数据块的数据单位为1个字节。该信息序列总共包括8个字节,分别为c0至c7。假设校验子的数目为4,每个校验子的校验数据单位为1字节,4个校验子分别为s0至s3。校验序列包括四个校验块,每个校验块的数据单位为1个字节。该校验序列共包括4个字节。该4个字节分别根据该4个校验子生成。如图7所示,在生成4个校验子时共需要生成11个中间校验子,分别为m1,0、m1,1、m1,2、m1,3、m1,4、m1,5、m1,6、m2,0、m2,1、m2,2和m2,3。其中,m1,0、m1,1、m1,2、m1,3、m1,4、m1,5、m1,6为层1中间校验子,m2,0、m2,1、m2,2和m2,3为层2中间校验子。m1,0=c0+c4,(公式2.1)m1,1=c1+c5,(公式2.2)m1,2=c2+c6,(公式2.3)m1,3=c3+c7,(公式2.4)m1,4=c4+c6,(公式2.5)m1,5=c5+c7,(公式2.6)m1,6=c6+c7,(公式2.7)m2,0=m1,0+m1,2,(公式2.8)m2,1=m1,1+m1,3,(公式2.9)m2,2=m1,2+m1,3,(公式2.10)m2,3=m1,4+m1,5,(公式2.11)。s0=m2,0+m2,1,(公式2.12)s1=v0·m2,1+v1·m2,2+v2·m2,3,(公式2.13)s2=v02·m2,1+v12·m2,2+v22·m2,3,(公式2.14)s3=v03·m2,1+v13·m2,2+v23·m2,3+(v12·v0+v1·v02)·m1,3+(v22·v0+v2·v02)·m1,5+(v22·v1+v2·v12)·m1,6,(公式2.15)在生成了中间校验子后,可以根据公式2.12至公式2.15生成4个校验子s0至s3。公式2.1至公式2.15中的符号+表示异或,符号·表示伽罗华域乘法运算。公式2.12至公式2.15中的v0、v1、v2、v02、v12、v22、v03、v13、v23、v12·v0+v1·v02、v22·v0+v2·v02、v22·v1+v2·v12为校验参数,上述校验参数的取值是预先计算好并保存在存储设备的。例如,可以保存在一个表中。在计算过程中可以通过查表得到上述校验参数的取值。四个校验子s0至s3中的任意两个校验子可以是图7所示实施例中的第一校验子和第二校验子。假设s0和s1分别为第一校验子和第二校验子,m2,0和m2,1为第一目标中间校验子,m2,1、m2,2和m2,3为第二目标中间校验子。公式2.12中包括两个第一校验参数,该两个第一校验参数均为1。公式2.13中包括三个第二校验参数,该三个第二校验参数分别为v0、v1和v2。可以看出,将公式2.12和公式2.13和公式1.14和公式1.15进行对比,s0=s1,0,s1=s1,1,p1,0=m2,0,p1,1=m2,1,q1,0=q1,1=1,p2,0=m2,1,p2,1=m2,2,p2,3=m2,3,q2,0=v0,q2,1=v1,q2,2=v2。类似的,s2和s3也可以分别认为图7所示实施例中的第一校验子和第二校验子。具体方式与s0和s1类似,在此就不必赘述。可以看出,根据图7所示的方法,计算校验子s0至s3仅需要使用12次伽罗华域乘法运算和21次异或运算。图8是一种生成4个校验子的过程的示意性流程图。图8所示的实施例中,信息序列由8个数据块组成,每个数据块的数据单位,即数据块的长度为1个字节。该信息序列总共包括8个字节,分别为c0至c7。假设校验子的数目为4,每个校验子长度为1个字节,4个校验子分别为s0至s3。校验序列包括四个校验块,每个校验块的数据单位,即校验块的长度为1个字节。该校验序列共包括4个字节。该4个字节分别根据该4个校验子生成。如图8所示,在生成4个校验子时共需要生成11个中间校验子,分别为m1,0、m1,1、m1,2、m1,3、m1,4、m1,5、m1,6、m2,0、m2,1、m2,2和m2,3。其中,m1,0、m1,1、m1,2、m1,3、m1,4、m1,5、m1,6为层1中间校验子,m2,0、m2,1、m2,2和m2,3为层2中间校验子。m1,0=c0+c4,(公式3.1)m1,1=c1+c5,(公式3.2)m1,2=c2+c6,(公式3.3)m1,3=c3+c7,(公式3.4)m1,4=c4+c6,(公式3.5)m1,5=c5+c7,(公式3.6)m2,0=m1,0+m1,2,(公式3.7)m2,1=m1,1+m1,3,(公式3.8)m2,2=m1,2+m1,3,(公式3.9)m2,3=m1,4+m1,5,(公式3.10)。s0=m2,0+m2,1,(公式3.11)s1=v0·m2,1+v1·m2,2+v2·m2,3,(公式3.12)s2=v02·m2,1+v12·m2,2+v22·m2,3,(公式3.13)s3=v04·m2,1+v14·m2,2+v24·m2,3,(公式3.14)在生成了中间校验子后,可以根据公式3.11至公式3.14生成4个校验子s0至s3。公式3.1至公式3.14中的符号+表示异或,符号·表示伽罗华域乘法运算。公式3.11至公式3.14中的v0、v1、v2、v02、v12、v22、v04、v14、v24为校验参数,上述校验参数的取值是预先计算好并保存在存储设备的。例如,可以保存在一个表中。在计算过程中可以通过查表得到上述校验参数的取值。4个校验子s0至s3中的任意两个校验子可以是图8所示实施例中的第一校验子和第二校验子。假设s0和s1分别为第一校验子和第二校验子,m2,0和m2,1为第一目标中间校验子,m2,1、m2,2和m2,3为第二目标中间校验子。公式3.11中包括两个第一校验参数,该两个第一校验参数均为1。公式3.12中包括三个第二校验参数,该三个第二校验参数分别为v0、v1和v2。可以看出,若将公式3.11和公式3.12与公式1.14和公式1.15进行对比,s0=s1,0,s1=s1,1,p1,0=m2,0,p1,1=m2,1,q1,0=q1,1=1,p2,0=m2,1,p2,1=m2,2,p2,3=m2,3,q2,0=v0,q2,1=v1,q2,2=v2。类似的,s2和s3也可以分别认为图8所示实施例中的第一校验子和第二校验子。具体方式与s0和s1类似,在此就不必赘述。可以看出,根据图8所示的方法,生成校验字节s0至s3仅需要使用9次伽罗华域乘法运算和17次异或运算。图7和图8所示的实施例中,在生成校验子的过程中,均生成了两层中间校验子。在另一实施例中,可以仅生成最终生成校验子时需要的中间校验子。例如,以图7为例,在生成校验子过程中,可以直接生成中间校验子m1,3、m1,5、m1,6、m2,0、m2,1、m2,2、m2,3。图9是一种生成4个校验子的过程的示意性流程图。图9所示的实施例中,信息序列由8个数据块组成,每个数据块的长度为1个字节。该信息序列总共包括8个字节,分别为c0至c7。假设校验子的数目为4,每个校验子的长度为1个字节,4个校验子分别为s0至s3。校验子s0至s4可以根据以下公式生成:其中ω可以称为参考校验参数,ωk为第k个参考校验参数。可以看出,根据图9所示的方法,生成校验子s0至s3需要使用24次伽罗华域乘法运算和28次异或运算。ω可以展开为多个v来表示。具体地,j=0,…,k-1,j的二进制值共包括r位,or为j的二进制值的第r位的取值。假设r=3,在该实施例中,or、vr和ωj的关系可以如表1-1所示。根据表1-1可以得到如下结果:ω0=0·v0+0·v1+0·v2;ω1=1·v0+0·v1+0·v2;ω2=0·v0+1·v1+0·v2;ω2=0·v0+1·v1+0·v2;ω3=0·v0+1·v1+1·v2;ω4=ω0+v2;ω5=ω1+v2;ω6=ω2+v2;ω7=ω3+v2;ω2=ω0+v1;ω3=ω1+v1。假设r=3,和的关系如表4-1所示。v22v12v02ω02000ω12001ω22010ω32011ω42100ω52101ω62110ω72111表4-1假设r=3,和的关系如表4-2所示。v24v14v04ω04000ω14001ω24010ω34011ω44100ω54101ω64110ω74111表4-2定义k+m的校验矩阵h为:假设m=4,k=4。将公式4.1展开后可以得到:s0=c0+c1+c2+c3+c4+c5+c6+c7,(公式4.5)。可以看出,公式4.5与公式2.12、公式3.11相同。将公式4.2展开后可以得到:s1=c1·v0+c2·v1+c3·(v0+v1)+c4·v2+c5·(v0+v2)+c6·(v1+v2)+c7·(v0+v1+v2),(公式4.6)。将公式4.6提出公因式,可以得到:s1=v0·(c1+c3+c5+c7)+v1·(c2+c3+c6+c7)+v2·(c4+c5+c6+c7),(公式4.7)。可以看出公式4.7与公式2.13、公式3.12相同。采取同样的方法,根据表4-1可以得到:s2=v02·(c1+c3+c5+c7)+v12·(c2+c3+c6+c7)+v22·(c4+c5+c6+c7),(公式4.8)。可以看出,公式4.8与公式2.14、公式3.13相同。针对s3的计算,由于ω13=v03;ω23=v13;ω33=(v0+v1)3=v03+v13+v12·v0+v1·v02;ω43=v23;ω53=(v0+v2)3=v03+v23+v22·v0+v2·v02;ω63=(v1+v2)3=v13+v23+v22·v1+v2·v12;ω73=(v0+v1+v2)3=v03+v13+v23+v02·(v1+v2)+v12·(v0+v2)+v22·(v0+v1)。根据上述公式将公式4.4展开可以得到:s3=v03·(c1+c3+c5+c7)+v13·(c2+c3+c6+c7)+v23·(c4+c5+c6+c7)+(v12·v0+v1·v02)·(c3+c7)1,3+(v22·v0+v2·v02)·(c5+c7)+(v22·v1+v2·v12)·(c6+c7),(公式4.9)。可以看出公式4.9与公式2.15相同。由此可见,虽然图7所示的方法与图9所示的方法不同,但是图9所示的方法可以通过变形得到图7所示的结果。图7与图9所示实施例中的校验子是基于上述校验矩阵h的前四行元素生成的。在另一些实施例中,校验子也可以是基于上述校验矩阵h的其他元素生成。例如,图8所示实施例中的校验子是基于上述校验矩阵h的第0行、第1行、第2行和第4行生成的。相应的,若采用与图9类似的方式生成校验子,则s0至s2的生成方式与公式4.1至4.3相同,s3可以根据以下公式生成:根据表4-2可以得到:s3=v04·(c1+c3+c5+c7)+v14·(c2+c3+c6+c7)+v24·(c4+c5+c6+c7),(公式4.11)。可以看出,公式4.11与公式3.14相同。通过上述证明可以看出,本发明实施例所示的方法可以大大减少伽罗华域乘法运算以及异或运算的次数。因此,可以降低生成校验子的复杂度,提升编码性能。为了便于理解,图7至图9所示的实施例中,信息序列中的每个数据块的长度为1个字节。可以理解的是,若每个数据块包括多个字节,则每次处理方式可以参照图7和图8所示的方法。具体地,假设k个数据块中的每个数据块包括n个字节,第一次处理的是该k个数据块中每一个数据块的第0个字节(共k个数据字节),第二次处理的是该k个数据块中每一个数据块的第1个字节(共k个数据字节),第三次处理的是该k个数据块中每一个数据块的第2个字节(共k个数据字节),以此类推。同样的,每次处理得到的是校验子的一个校验字节。假设校验子的数目为4,每个校验子包括n个字节。第一次处理得到的是每个校验子的第0个字节,第二次处理得到的是每个校验子的第1个字节,以此类推。图10是根据本申请实施例提供的存储设备的结构框图。如图10所示存储设备1000包括获取单元1001,处理单元1002和存储单元1003。获取单元1001,用于获得k个数据块,该k个数据块中的每个数据块的长度为n个数据单位;其中,k为大于或等于1的正整数,n为大于或等于1的正整数。处理单元1002,用于生成该k个数据块的第一校验子和第二校验子。处理单元1002,还用于根据该第一校验子和该第二校验子,生成第一校验块和第二校验块。存储单元1003,用于存储该k个数据块、该第一校验块和该第二校验块。处理单元1002,具体用于:生成第n个中间校验子集合,该第n个中间校验子集合包括mn个中间校验子,该mn个中间校验子中的每个中间校验子为k个数据单位中的至少两个数据单位的异或,该k个数据单位分别为该k个数据块的第n个数据单位组成,mn为大于或等于2的正整数,n=0,……,n-1;基于公共中间校验子和至少r个校验参数,生成该第一校验子中的第n个第一校验数据单位,其中,该第一校验子包括n个第一校验数据单位,该公共中间校验子包括该第n个中间校验子集合中的至少一个校验子,其中2r等于k;基于该公共中间校验子和至少r个校验参数,生成该第二校验子中的第n个第二校验数据单位,其中,该第二校验子包括n个第二校验数据单位。获取单元1001,处理单元1002和存储单元1003的具体功能和有益效果,可以参见图6所示的实施例,在此就不必赘述。图11是根据本申请实施例提供的一种芯片的结构框图。如图11所示的芯片1100包括通信接口1101和处理器1102。处理器1102用于通过通信接口1101获得k个数据块,该k个数据块中的每个数据块的长度为n个数据单位;其中,k为大于或等于1的正整数,n为大于或等于1的正整数。具体的,处理器1101通过通信接口1101接收数据,获得k个数据块。处理器1102,还用于生成该k个数据块的第一校验子和第二校验子。处理器1102,还用于根据该第一校验子和该第二校验子,生成第一校验块和第二校验块。处理器1102,还用于通过通信接口1101存储该k个数据块、该第一校验块和该第二校验块。处理器1102,具体用于:生成第n个中间校验子集合,该第n个中间校验子集合包括mn个中间校验子,该mn个中间校验子中的每个中间校验子为k个数据单位中的至少两个数据单位的异或,该k个数据单位分别为该k个数据块的第n个数据单位组成,mn为大于或等于2的正整数,n=0,……,n-1;基于公共中间校验子和至少r个校验参数,生成该第一校验子中的第n个第一校验数据单位,其中,该第一校验子包括n个第一校验数据单位,该公共中间校验子包括该第n个中间校验子集合中的至少一个校验子,其中2r等于k;基于该公共中间校验子和至少r个校验参数,生成该第二校验子中的第n个第二校验数据单位,其中,该第二校验子包括n个第二校验数据单位。本申请的又一方面提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机执行上述如图6所示的方法。本申请的又一方面提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行如图6所示的方法。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1