纠删码数据的快速编解码方法和系统的制作方法_5

文档序号:9579052阅读:来源:国知局
码数据的快速解码系 统,与上述解码方法步骤一一对应地,该解码系统包括:
[0193] 生成矩阵第二初始化模块,用于根据分片数η和冗余数m初始化编码器,通过对范 德蒙德矩阵或柯西矩阵的变换,得到第一行和第一列元素均为1的生成矩阵;
[0194]编码缓存表第二初始化模块,用于初始化编码乘法缓存表;
[0195]解码矩阵模块,用于获取m+n个纠删码数据中的至少η个作为待解码数据,其中所 述待解码数据中有n-k个原数据及k个校验码,根据数据获取情况生成k阶解码矩阵;
[0196]解码缓存表初始化模块,用于根据所述解码矩阵的逆矩阵初始化解码乘法缓存 表;
[0197] 恢复码模块,用于根据所述待解码数据中的k个校验码、n-k个原数据以及所述生 成矩阵,利用编码乘法缓存表计算出k个恢复码;
[0198]还原模块,用于根据所述k个恢复码和所述解码矩阵的逆矩阵,利用解码乘法缓 存表计算恢复丢失的k个原数据,将恢复的原数据和所述待解码数据中的n-k个原数据组 成解码数据。
[0199]本发明中提供了一种纠删码数据的快速编解码方法和系统,其技术方案使用的被 称为Sun矩阵的生成矩阵不同于现有范德蒙德矩阵和柯西矩阵,其特征为第1行和第1列 全为1,这使得无论在编码还是解码时,都能够减少伽罗瓦域乘法运算数量,且兼容副本算 法。对于非1元素的伽罗瓦域乘法,本发明可采用X86平台的SSE或AVX指令集,以128位 或256位为单位,通过内存查表方式一次实现16字节或者32字节的伽罗瓦域乘法,这比现 有基于1或2字节的双表法快几十倍。本发明可采用纯软件实现,编解码速度超过现有算法 一个数量级以上,大大提高了Reed-Solomon的编解码效率,并能充分发挥其在云存储方面 的价值。本领域的技术人员应该明白,本发明并不限于现有的具体SSE或AVX指令,而是一 整套的利用SIMD指令减少计算量的算法实现。将来如果有512位或更长字节的指令集指 令,本发明的算法依然可以采用,只需要替换现有的用于计算伽罗瓦域乘法和异或和的SSE 或AVX指令即可,且计算效率会更高。
[0200] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明。对于本领域的技 术人员来说,本发明可以有各种更改和变化,例如将软件部分固化在硬件中等。凡在本发明 的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之 内。
【主权项】
1. 一种纠删码数据的快速编码方法,其特征在于,所述编码方法包括步骤: SI 1,根据分片数η和冗余数m初始化编码器,通过对范德蒙德矩阵或柯西矩阵的变换, 得到第一行和第一列元素均为1的生成矩阵; 512, 初始化编码乘法缓存表; 513, 将待编码数据分为η个原数据,根据所述η个原数据和所述生成矩阵,利用编码乘 法缓存表计算出m个校验码; 514, 将所述η个原数据和得到的m个校验码分别存储和/或传输。2. 如权利要求1所述的编码方法,其特征在于,所述编码乘法缓存表中数据为所述生 成矩阵中每个元素对〇χ〇〇、〇χ〇1至〇x〇f以及对〇x〇〇、〇xl〇至〇xf〇的伽罗瓦域乘法结果。3. 如权利要求1所述的编码方法,其特征在于,步骤S13中,根据所述η个原数据和所 述生成矩阵计算第j个校验码为:其中,Di为第i个原数据,为所述生成矩阵第i行第j列元素。4. 如权利要求3所述的编码方法,其特征在于,对于第一个校验码Pi,直接计算 :Di十D_~?Dn的异或和; 对于其余m-Ι个校验码,第一个原数据Di直接用于计算异或和,将参与计算的其他每 个原数据Di拆分为高字节部分和低字节部分,分别乘以对应矩阵元素 G、,以计算伽罗瓦域 乘法,随后再计算对应的异或和以得到校验码;其中,伽罗瓦域乘法结果通过查找所述编码 乘法缓存表得到。5. 如权利要求4所述的编码方法,其特征在于,使用SMD指令计算所述伽罗瓦域乘法 和异或和。6. 如权利要求1所述的编码方法,其特征在于,对于云存储系统中较大的文件,先将文 件划分为分块,随后对各分块分别进行步骤S11-S14。7. -种纠删码数据的快速解码方法,其特征在于,所述解码方法包括步骤: S21,根据分片数η和冗余数m初始化编码器,通过对范德蒙德矩阵或柯西矩阵的变换, 得到第一行和第一列元素均为1的生成矩阵; 522, 初始化编码乘法缓存表; 523, 获取m+n个纠删码数据中的至少η个作为待解码数据,其中所述待解码数据中有 η-k个原数据及k个校验码,根据数据获取情况生成k阶解码矩阵; 524, 根据所述解码矩阵的逆矩阵初始化解码乘法缓存表; 525, 根据所述待解码数据中的k个校验码、n-k个原数据以及所述生成矩阵,利用编码 乘法缓存表计算出k个恢复码;S26,根据所述k个恢复码和所述解码矩阵的逆矩阵,利用解 码乘法缓存表计算恢复丢失的k个原数据,将恢复的原数据和所述待解码数据中的n-k个 原数据组成解码数据。8. 如权利要求7所述的解码方法,其特征在于,所述编码乘法缓存表中数据为所述生 成矩阵中每个元素对〇χ〇〇、〇χ〇1至〇x〇f以及对〇x〇〇、〇xl〇至OxfO的伽罗瓦域乘法结果; 所述解码乘法缓存表中数据为所述逆矩阵中每个元素对〇χ〇〇、〇χ〇1至〇x〇f以及对0x00、 0x10至OxfO的伽罗瓦域乘法结果。9. 如权利要求7所述的解码方法,其特征在于,步骤S23中,所述根据数据获取情况生 成k阶解码矩阵包括: 在所述生成矩阵中,确定丢失的k个原数据所对应的行和所获取的k个校验码所对应 的列,取其交叉点的元素构成所述解码矩阵。10. 如权利要求7所述的解码方法,其特征在于,步骤S25中,根据所述待解码数据中的 k个校验码、n-k个原数据以及所述生成矩阵计算第j个恢复码为:其中,P,为所述纠删码数据中的第j个校验码,且P,在已获取的k个校验码中A为第 i个原数据,且若Di不在已获取的n-k个原数据中,则Di = 0化为所述生成矩阵第i行第 j列元素。11. 如权利要求10所述的解码方法,其特征在于,对于第一个恢复码P'i,直接计算 …患的异或和; 对于其余的恢复码,第一个原数据Di直接用于计算异或和,将参与计算的其他每个原 数据仏拆分为高字节部分和低字节部分,分别乘以对应矩阵元素 G、,以计算伽罗瓦域乘法, 随后再计算对应的异或和以得到校验码;其中,伽罗瓦域乘法结果通过查找所述编码乘法 缓存表得到。12. 如权利要求7所述的解码方法,其特征在于,步骤S26中,根据所述k个恢复码和所 述解码矩阵的逆矩阵计算恢复丢失的k个原数据包括: 将每个所述恢复码分别乘以所述逆矩阵以得到对应丢失的原数据包;其中,将参与计 算的每个恢复码拆分为高字节部分和低字节部分分别乘以对应矩阵元素以计算伽罗瓦域 乘法,随后再计算对应的异或和以得到对应丢失的原数据包;其中,伽罗瓦域乘法结果通过 查找所述解码乘法缓存表得到。13. 如权利要求11或12所述的解码方法,其特征在于,使用SB?指令并行查表计算所 述伽罗瓦域乘法和异或和。14. 如权利要求7所述的解码方法,其特征在于,对于云存储系统中较大的文件,先对 各文件分块分别进行步骤S21-S26以还原分块,再将各分块组装成原文件数据。15. -种纠删码数据的快速编码系统,其特征在于,所述编码系统包括: 生成矩阵第一初始化模块,用于根据分片数η和冗余数m初始化编码器,通过对范德蒙 德矩阵或柯西矩阵的变换,得到第一行和第一列元素均为1的生成矩阵; 编码缓存表第一初始化模块,用于初始化编码乘法缓存表; 校验码模块,用于将待编码数据分为η个原数据,根据所述η个原数据和所述生成矩 阵,利用编码乘法缓存表计算出m个校验码; 分布式模块,用于将所述η个原数据和得到的m个校验码分别存储和/或传输。16. -种纠删码数据的快速解码系统,其特征在于,所述解码系统包括: 生成矩阵第二初始化模块,用于根据分片数η和冗余数m初始化编码器,通过对范德蒙 德矩阵或柯西矩阵的变换,得到第一行和第一列元素均为1的生成矩阵; 编码缓存表第二初始化模块,用于初始化编码乘法缓存表; 解码矩阵模块,用于获取m+n个纠删码数据中的至少η个作为待解码数据,其中所述待 解码数据中有n-k个原数据及k个校验码,根据数据获取情况生成k阶解码矩阵; 解码缓存表初始化模块,用于根据所述解码矩阵的逆矩阵初始化解码乘法缓存表; 恢复码模块,用于根据所述待解码数据中的k个校验码、n-k个原数据以及所述生成矩 阵,利用编码乘法缓存表计算出k个恢复码; 还原模块,用于根据所述k个恢复码和所述解码矩阵的逆矩阵,利用解码乘法缓存表 计算恢复丢失的k个原数据,将恢复的原数据和所述待解码数据中的n-k个原数据组成解 码数据。
【专利摘要】本发明涉及数据编解码技术领域,公开了一种纠删码数据的快速编解码方法和系统。其编码方法包括步骤:根据分片数n和冗余数m,通过对范德蒙德矩阵或柯西矩阵的变换,得到第一行和第一列元素均为1的生成矩阵;初始化编码乘法缓存表;将待编码数据分为n个原数据,根据所述n个原数据和所述生成矩阵,利用编码乘法缓存表计算出m个校验码;将所述n个原数据和得到的m个校验码分别存储和/或传输。本发明使用的生成矩阵使得无论在编码还是解码时,都能够减少伽罗瓦域乘法运算数量,且兼容副本算法,大幅提高了纠删码数据的处理速度,从而在不牺牲数据处理效率及不增大硬件成本的情况下保证了分布式系统尤其是云存储系统中数据的可靠性和有效性。
【IPC分类】G06F9/44
【公开号】CN105335150
【申请号】CN201410398657
【发明人】孙崎
【申请人】苏宁云商集团股份有限公司
【公开日】2016年2月17日
【申请日】2014年8月13日
当前第5页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1