CN115865105A - 一种计算和缓存友好的高效里德-所罗门码编码方法 - Google Patents

一种计算和缓存友好的高效里德-所罗门码编码方法 Download PDF

Info

Publication number
CN115865105A
CN115865105A CN202211481654.1A CN202211481654A CN115865105A CN 115865105 A CN115865105 A CN 115865105A CN 202211481654 A CN202211481654 A CN 202211481654A CN 115865105 A CN115865105 A CN 115865105A
Authority
CN
China
Prior art keywords
check
data
packets
packet
calculation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211481654.1A
Other languages
English (en)
Inventor
吕敏
汪威
李永坤
牛天洋
徐亮亮
李启亮
许胤龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Science and Technology of China USTC
Original Assignee
University of Science and Technology of China USTC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by University of Science and Technology of China USTC filed Critical University of Science and Technology of China USTC
Priority to CN202211481654.1A priority Critical patent/CN115865105A/zh
Publication of CN115865105A publication Critical patent/CN115865105A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Error Detection And Correction (AREA)

Abstract

本发明涉及计算机分布式存储系统中的纠删码技术领域,公开了一种计算和缓存友好的高效里德‑所罗门码编码方法。本发明通过拆分数据块和校验块,寻找公共异或部分,计算被匹配的两个校验包。相比于现有的编码流程,兼顾计算高效性和缓存高效性,将数据块和校验块拆分成合适大小的数据包和校验包进行编码。相比于现有的减少异或计算量的方法,利用有限的寄存器,将两个校验包的公共异或部分的计算结果存储在寄存器中,直到完成它们的计算,在减少异或计算量和数据读取量的同时,没有引入额外的数据传输。本发明通过均衡编码的计算高效性和缓存高效性以及减少编码过程中异或计算量,提高了编码性能。

Description

一种计算和缓存友好的高效里德-所罗门码编码方法
技术领域
本发明涉及计算机分布式存储系统中的纠删码技术领域,具体涉及一种计算和缓存友好的高效里德所罗门码编码方法。
背景技术
纠删码与多副本是存储系统中数据容错的两种最常见冗余技术。副本技术将同一份数据的多个副本存储在不同的节点上。副本技术易于实现,且能为前端用户提供并发访问,但是它的额外存储开销高。与副本技术相比,纠删码可以提供相同的可靠性,但额外存储开销可以降低一个数量级,广泛应用在大规模存储系统,以节省存储成本。但是,基于纠删码的容错技术在写数据的时候需要对数据块进行编码计算,得到校验块,在故障修复时需要利用幸存块进行解码计算,得到故障块。编解码计算不仅会降低写数据和修复的速度,还会占用CPU和内存资源。即使是当前最先进的纠删码库ISA-L的编码速度仍低于内存I/O和远程直接内存访问(RDMA)的速度。因此,提高纠删码的编解码速度具有重大意义。
里德所罗门码是一种常用纠删码,其编码过程需要进行乘法和加法运算,为了避免复杂的乘法运算,基于柯西矩阵的里德所罗门码将编码矩阵转换为位矩阵(由0和1组成),从而乘法运算转换为异或运算。现有支持柯西里德所罗门码的纠删码库忽略编码过程中缓存的空间局部性,导致数据从缓存中频繁换入/换出;另一方面,它们没有高效的重用计算的公共部分,在重用公共异或部分时引入了更多的数据读取和存储操作,导致编码效率没有得到显著提升。这两点原因使得现有纠删码库的编码性能较低。
发明内容
为解决上述技术问题,本发明提供一种计算和缓存友好的高效里德所罗门码编码方法,其基本思路是将数据块和校验块拆分成2KB大小的包进行计算,兼顾编码过程的计算和缓存友好性,并利用图模型找出可重用的公共异或部分,设计相应的编码流程,重用公共异或部分时避免额外的数据传输,提高纠删码的编码速度。
为解决上述技术问题,本发明采用如下技术方案:
采用(k,m)柯西里德所罗门码对k个数据块D0,D1,...,Dk-1进行编码,得到m个校验块P0,P1,...,Pm-1,编码计算在有限域GF(2w)中进行。为了降低计算复杂度,本发明将乘法运算转换成异或运算,其中m×k的编码矩阵被转换为mw×kw的位矩阵。
本发明中的计算和缓存友好的高效里德所罗门码编码方法,包括以下步骤:
步骤一、拆分数据块和校验块:
将数据块Di,0≤i≤k-1拆分为rw个数据包,r是正整数,校验块Pi,0≤i≤m-1拆分为rw个校验包。编码分成r轮进行,每一轮从数据块Di,0≤i≤k-1中取出w个数据包Di0,Di1,...,Di(w-1),计算校验块Pi,0≤i≤m-1的w个校验包Pi0,Pi1,...,Pi(w-1),每个校验包通过对多个数据包进行异或计算得到。
为了保证编码的计算高效性,编码应拆分成尽可能少的轮数进行,也就是数据包和校验包越大越好;为了保证编码的缓存高效性,每一轮计算所需的所有数据包需要全部存储在缓存中,而各级缓存的大小是固定的,只能通过设置数据包大小来满足缓存高效性,此时数据包应越小越好。为了兼顾编码的计算高效性和缓存高效性,将数据包和校验包的大小设置为2KB。
步骤二、寻找公共异或部分:
为了减少异或计算量,可以重用公共异或部分的计算结果。首先构造一个带权图G=(V,E,W),其中点集V是mw个校验包的集合,每个校验包对应图中一个点。当两个校验包的计算至少包含一个公共数据包时,它们之间有一条边,该边的权值为这两个校验包包含的公共数据包的数量。为了找出最多的公共异或部分,在图G中找出最大权值匹配M,M中每一条边的两个顶点对应的校验包的公共异或部分可以重用。
步骤三、计算被匹配的两个校验包:
Figure BDA0003961919240000021
和/>
Figure BDA0003961919240000022
其中Pcommon是/>
Figure BDA0003961919240000023
Figure BDA0003961919240000024
的公共异或部分。为了方便描述,假设寄存器可以放下一个数据包和校验包(如果寄存器不足以放下一个包,将所有数据包和校验包拆分到寄存器粒度,计算分成多轮执行)。首先利用寄存器R1和R2计算Pcommon,并将结果存储在寄存器R1中;将寄存器R1中的值Pcommon复制到另一个寄存器R3中;利用寄存器R1和R2计算校验包/>
Figure BDA0003961919240000025
利用寄存器R3和R2计算校验包/>
Figure BDA0003961919240000026
最后将寄存器R1和R3中的值存储到内存中作为校验包/>
Figure BDA0003961919240000031
和/>
Figure BDA0003961919240000032
与现有技术相比,本发明的有益技术效果是:
本发明通过拆分数据块和校验块,寻找公共异或部分,计算被匹配的两个校验包。相比于现有的编码流程,兼顾计算高效性和缓存高效性,将数据块和校验块拆分成合适大小的数据包和校验包进行编码。相比于现有的减少异或计算量的方法,利用有限的寄存器,将两个校验包的公共异或部分的计算结果存储在寄存器中,直到完成它们的计算,在减少异或计算量和数据读取量的同时,没有引入额外的数据传输。本发明通过均衡编码的计算高效性和缓存高效性以及减少编码过程中异或计算量,提高了编码性能。
附图说明
图1为本发明实施例中柯西里德所罗门码计算的示意图;
图2为本发明实施例中最大权值匹配的示意图;
图3为本发明实施例中公共异或部分计算的示意图;
图4为本发明实施例中公共异或部分复制的示意图;
图5为本发明实施例中被匹配的第一个校验包计算的示意图;
图6为本发明实施例中被匹配的第二个校验包计算的示意图;
图7为本发明实施例中校验包存储的示意图。
具体实施方式
下面结合附图通过具体实施例对本发明中的计算和缓存友好的高效里德所罗门码编码方法作进一步说明。
现有方法首先对数据包进行匹配,计算公共数据包的异或结果,并存储在内存或缓存中,然后依次计算每个校验块,将所需公共异或部分的结果从内存或缓存读取到寄存器中,造成了额外的数据传输。例如,数据包
Figure BDA0003961919240000033
包含在校验包P00和P10的计算公式中,现有方法将D00和D10读取到寄存器,计算其异或值,并将计算结果存储到内存或缓存中,后续在P00和P01的计算过程中将/>
Figure BDA0003961919240000034
的值读取到寄存器中,这造成了额外的两次读取操作和一次存储操作。
实施例一
本实施例采用(4,2)柯西里德所罗门码对4个数据块D0,D1,D2,D3进行编码,得到两个校验块P0,P1,编码计算在有限域GF(23)中进行。将2×4的编码矩阵(Parity CodingMatrix)转换为6×12的位矩阵(Parity Coding Bitmatrix)。
本实施例中的计算和缓存友好的高效里德所罗门码编码方法,具体包括以下步骤:
步骤一、拆分数据块和校验块:
因为每一轮编码计算的过程是相同的,假设本实施例中的编码仅有1轮,也就是r=1。四个数据块均被拆分成大小为2KB的数据包D00,D01,D02,D10,D11,D12,D20,D21,D22,D30,D31,D32,2个校验块也被拆分成6个校验包P00,P01,P02,P10,P11,P12。图1是编码矩阵转换为位矩阵之后的计算示意图。
步骤二、寻找公共异或部分:
本实施例中根据位矩阵构造带权图如图2所示,一共有6个顶点P00,P01,P02,P10,P11,P12,每条边的权值是两个顶点对应的校验包的公共数据包的数量,比如P00和P12有4个公共数据包D00,D22,D30,D32,它们之间的边权值为4。在该图中找出最大权值匹配M={P00P12,P01P10,P02P11},如图2中粗线所示。
步骤三、计算被匹配的两个校验包:
以校验包P00和P12的计算为例,其中校验包
Figure BDA0003961919240000041
Figure BDA0003961919240000042
校验包/>
Figure BDA0003961919240000043
设/>
Figure BDA0003961919240000044
和/>
Figure BDA0003961919240000045
其中/>
Figure BDA0003961919240000046
Figure BDA0003961919240000047
利用寄存器R1和R2计算校验包
Figure BDA0003961919240000048
首先读取(LOAD)数据包D00到寄存器R1中,然后依次读取数据包D22,D30,D32到寄存器R2中,对寄存器R1和寄存器R2中的值进行异或计算(XOR),并将结果存储在寄存器R1中,如图3所示;接着将寄存器R1中的值复制(Copy)到寄存器R3中,如图4所示;利用寄存器R1和R2计算校验包/>
Figure BDA0003961919240000049
依次读取数据包D10,D11,D31到R2中,对寄存器R1和寄存器R2中的值进行异或计算,并将结果存储在寄存器R1中,如图5所示;利用寄存器R3和R2计算校验包/>
Figure BDA00039619192400000410
Figure BDA00039619192400000411
依次读取数据包D12,D21到寄存器R2中,对寄存器R2和R3中的值进行异或计算,并将结果存储在寄存器R3中,如图6所示;最后分别将寄存器R1和R3中的值存储(STORE)到内存中作为校验包P00和P12,如图7所示。
相比于现有方法,本发明不需要将Pcommon存储在内存或缓存中,而是将其存储在寄存器R1和R3中,然后将校验包P00和P12剩余的数据包分别异或计算到寄存器R1和寄存器R3,既重用了公共部分
Figure BDA0003961919240000051
也避免了额外的数据传输,一共减少了三次异或和四次数据包的读取。
以上介绍了本发明的具体实施过程。通过分析说明,采用大小为2KB的数据包和校验包,所有数据包都可以放置在二级缓存中,同时保证了较低的一级缓存丢失率和较高的异或计算效率。根据位矩阵构建带权图,通过寻找最大权值匹配找到公共异或部分,并在没有存储中间值的情况下,利用三个寄存器重用公共异或部分,减少了数据的读取量和异或计算量。本实施例中,减少了23.3%的数据读取量和异或计算量。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内,不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立技术方案,说明书的这种叙述方式仅仅是为了清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

Claims (3)

1.一种计算和缓存友好的高效里德-所罗门码编码方法,采用(k,m)柯西里德-所罗门码对k个数据块D0,D1,...,Dk-1进行编码,得到m个校验块P0,P1,...,Pm-1,编码在有限域GF(2w)中进行,将乘法运算转换成异或运算,其中m×k的编码矩阵被转换为mw×kw的位矩阵,其特征在于,包括以下步骤:
步骤一、拆分数据块和校验块:
将数据块Di,0≤i≤k-1拆分为rw个数据包,r∈N+,校验块Pi,0≤i≤m-1拆分为rw个校验包,编码分成r轮进行,每一轮从数据块Di中取出w个数据包Di0,Di1,…,Di(w-1),计算校验块Pi的w个校验包Pi0,Pi1,...,Pi(w-1),每个校验包通过对多个数据包进行异或计算得到;
步骤二、寻找公共异或部分:
构造一个带权图G=(V,E,W),其中V为点集,E为边集,W为边的权重集,点集V是mw个校验包的集合,每个校验包对应带权图G中一个点;当两个校验包PA,PB的计算至少包含一个公共数据包时,两个校验包PA,PB对应的点之间有一条边eA,边eA的权值为两个校验包PA,PB包含的公共数据包的数量;在带权图G中找出最大权值匹配M,将M中每一条边的两个顶点对应的校验包的公共异或部分进行重用;
步骤三、计算最大权值匹配中被匹配的两个校验包
Figure FDA0003961919230000011
设校验包
Figure FDA0003961919230000012
和校验包/>
Figure FDA0003961919230000013
其中Pcommon为计算校验包/>
Figure FDA0003961919230000014
和/>
Figure FDA00039619192300000118
时的公共数据包的异或运算结果,即校验包/>
Figure FDA0003961919230000015
和/>
Figure FDA0003961919230000016
的公共异或部分;/>
Figure FDA0003961919230000017
为计算校验包/>
Figure FDA0003961919230000018
时除Pcommon外的数据包的异或运算结果,/>
Figure FDA0003961919230000019
为计算校验包/>
Figure FDA00039619192300000110
时除Pcommon外的数据包的异或运算结果;利用寄存器R1和R2计算两个校验包
Figure FDA00039619192300000111
的公共异或部分Pcommon,并将结果存储在寄存器R1中;将R1中的公共异或部分Pcommon复制到寄存器R3中;利用寄存器R1和寄存器R2计算校验包/>
Figure FDA00039619192300000112
Figure FDA00039619192300000113
利用寄存器R3和R2计算校验包/>
Figure FDA00039619192300000114
最后将寄存器R1和R3中的值存储到内存中作为校验包/>
Figure FDA00039619192300000115
和/>
Figure FDA00039619192300000116
其中/>
Figure FDA00039619192300000117
为异或运算。
2.根据权利要求1所述的计算和缓存友好的高效里德所罗门码编码方法,其特征在于,步骤一中拆分数据块和校验块,将数据包和校验包的大小设置为2KB。
3.根据权利要求1所述的计算和缓存友好的高效里德所罗门码编码方法,其特征在于:步骤三中如果寄存器的大小不足以放下一个校验包或数据包,将所有数据包和校验包拆分到寄存器粒度,通过多轮执行步骤三进行计算。
CN202211481654.1A 2022-11-24 2022-11-24 一种计算和缓存友好的高效里德-所罗门码编码方法 Pending CN115865105A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211481654.1A CN115865105A (zh) 2022-11-24 2022-11-24 一种计算和缓存友好的高效里德-所罗门码编码方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211481654.1A CN115865105A (zh) 2022-11-24 2022-11-24 一种计算和缓存友好的高效里德-所罗门码编码方法

Publications (1)

Publication Number Publication Date
CN115865105A true CN115865105A (zh) 2023-03-28

Family

ID=85665807

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211481654.1A Pending CN115865105A (zh) 2022-11-24 2022-11-24 一种计算和缓存友好的高效里德-所罗门码编码方法

Country Status (1)

Country Link
CN (1) CN115865105A (zh)

Similar Documents

Publication Publication Date Title
CN103688514B (zh) 一种最小存储再生码的编码和存储节点修复方法
US10268544B2 (en) Using parity data for concurrent data authentication, correction, compression, and encryption
US9088300B1 (en) Cyclic redundancy check for out-of-order codewords
CN112860475B (zh) 基于rs纠删码的校验块恢复方法、装置、系统及介质
CN105335150A (zh) 纠删码数据的快速编解码方法和系统
US20210271557A1 (en) Data encoding, decoding and recovering method for a distributed storage system
WO2017071431A1 (zh) 一种编码方法及装置
WO2023138289A1 (zh) 一种数据存储方法、装置、设备及计算机可读存储介质
CN105518996B (zh) 一种基于二进制域里德所罗门码的数据编解码方法
US11848686B2 (en) Accelerated polynomial coding system and method
CN107003933A (zh) 部分复制码的构建方法、装置及其数据修复的方法
CN104052495A (zh) 减少硬件缓冲器的低密度奇偶检查码阶层式译码架构
CN107153661A (zh) 一种基于hdfs系统的数据的存储、读取方法及其装置
CN113157321B (zh) Arm平台下基于neon指令加速的纠删编解码方法及装置
WO2017041232A1 (zh) 一种二进制循环码的编解码框架
CN115865105A (zh) 一种计算和缓存友好的高效里德-所罗门码编码方法
WO2017041233A1 (zh) 一种功能修复再生码的编码和存储节点修复方法
CN112000509B (zh) 一种基于向量指令的纠删码编码方法、系统及装置
CN111224747A (zh) 可降低修复带宽和磁盘读取开销的编码方法及其修复方法
CN114968653B (zh) 一种zfs文件系统的raidz校验值的确定方法
Song et al. A Low complexity design of reed solomon code algorithm for advanced RAID system
Zhu et al. Exploring node repair locality in fractional repetition codes
CN107688506B (zh) 一种流水结构的bch译码系统
CN100417031C (zh) 宽带无线接入系统中里德索洛门卷积级联码的实现方法
CN109245775B (zh) 一种译码器及其实现译码的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination