一种寄存器友好的高效异或纠删码编码方法技术

技术编号:37194760 阅读:9 留言:0更新日期:2023-04-20 22:54
本发明专利技术涉及计算机分布式存储系统中的纠删码技术领域,公开了一种寄存器友好的高效异或纠删码编码方法,包括数据块和校验块的拆分,校验子块的计算和校验子块的合并步骤;相比于现有的编码方法,本发明专利技术将数据从寄存器到内存或者缓存的存储次数降到最低,即所有数据只需要从寄存器存储到内存一次,减少了数据存储延迟;还将数据从内存或者缓存到寄存器的读取次数减少接近一半,提高了数据加载效率。本发明专利技术通过减少编码过程中数据在寄存器与内存或者与缓存之间的读取和存储次数,提高了编码速度。速度。速度。

【技术实现步骤摘要】
一种寄存器友好的高效异或纠删码编码方法


[0001]本专利技术涉及计算机分布式存储系统中的纠删码
,具体涉及一种寄存器友好的高效异或纠删码编码方法。

技术介绍

[0002]纠删码与多副本是存储系统中数据容错的两种最常见冗余技术。副本技术将同一份数据的多个副本存储在不同的节点上。副本技术易于实现,且能为前端用户提供并发访问,但是它的额外存储开销高。与副本技术相比,纠删码可以提供相同的可靠性,但额外存储开销可以降低一个数量级,广泛应用在大规模存储系统,以节省存储成本。但是,基于纠删码的容错技术在写数据的时候,需要对数据块进行编码计算,得到校验块;在故障修复时需要利用幸存块进行解码计算,得到故障块。编解码计算不仅会降低写数据和修复的速度,还会占用CPU和内存资源。即使是当前最先进的纠删码库ISA

L的编码速度仍低于内存I/O和远程直接内存访问(RDMA)的速度。因此,提高纠删码的编解码速度具有重要意义。
[0003]基于异或的纠删码在编码过程中只需要异或计算,编码速度快。然而,现有方法将编码计算分成多轮,每一轮计算读取一个数据块和一个校验块到寄存器中,然后进行异或计算,但通常一个块的大小都远大于寄存器大小,因此每一轮计算的中间结果都会存储到内存或者缓存中,需要中间结果时再重新加载到寄存器中,导致从寄存器中频繁换入和换出中间结果。例如,的计算分为三轮,第一轮计算为P0=0,第二轮计算为第三轮计算为因为寄存器放置不下计算P0所需的所有数据,所以在第一轮和第二轮的计算时,P0的中间结果需存储到内存或者缓存中,在第二轮和第三轮计算时,P0的中间结果需读取到寄存器中。因此,提高编码计算过程的寄存器效率可以显著提高编码速度。

技术实现思路

[0004]为解决上述技术问题,本专利技术提供一种寄存器友好的高效异或纠删码编码方法,基本思路是将数据块和校验块按寄存器大小进行拆分,使得计算校验块的中间结果可以保存在寄存器中,计算以寄存器粒度进行,避免中间结果在寄存器与内存或者缓存之间的换入或者换出,保证编码过程的寄存器友好性,并设计相应的编码流程,提高纠删码的编码速度。
[0005]为解决上述技术问题,本专利技术采用如下技术方案:
[0006]一种寄存器友好的高效异或纠删码编码方法,采用(k,m)异或纠删码编码矩阵对k个数据块D0,D1,

,D
k
‑1进行编码,得到m个校验块P0,P1,

,P
m
‑1,异或纠删码编码矩阵中的每个元素为0或者为1,每个校验块为多个数据块的异或和,整个编码过程只需要进行异或计算;包括以下步骤:
[0007]步骤一、数据块和校验块的拆分:
[0008]设校验块P
g
,0≤g≤m

1的计算公式为将每个数据块0≤v≤t

1拆分成n个寄存器大小的数据子块将校验块P
g
拆分为n个寄存器大小的校验子块P
g0
,P
g1
,

,P
g(n

1)
,每个校验子块,每个校验子块对于每个校验子块P
gl
,0≤l≤n

1,执行步骤二;
[0009]步骤二、校验子块的计算:
[0010]读取数据子块到寄存器R1中,从而将校验子块P
gl
的值初始化为每读取一个数据子块1≤v≤t

1到寄存器R2中时,进行一次过程A:对寄存器R1和R2中的值进行异或计算,并将异或计算结果存储在寄存器R1中;
[0011]完成t

1次过程A后,将寄存器R1中的值存储到内存中作为校验子块P
gl

[0012]完成所有校验子块P
gl
,0≤l≤n

1的计算后,执行步骤三;
[0013]在整个校验子块的编码计算过程中,将校验子块的中间结果存储在寄存器中,直到该校验子块计算完成,这避免了中间结果从寄存器中频繁换入/换出,提高了寄存器效率。
[0014]步骤三、校验子块的合并:
[0015]按序将n个校验子块P
g0
,P
g1
,

,P
g(n

1)
顺序写入缓存或内存的连续地址空间,合并为校验块P
g

[0016]与现有技术相比,本专利技术的有益技术效果是:
[0017]本专利技术中的寄存器友好的高效异或纠删码编码方法包含数据块和校验块的拆分、校验子块的计算和校验子块的合并;相比于现有的编码方法,本专利技术将数据从寄存器到内存或者缓存的存储次数降到最低,即所有数据只需要从寄存器存储到内存一次,减少了数据存储延迟;本专利技术还将数据从内存或者缓存到寄存器的读取次数减少接近一半,提高了数据加载效率。本专利技术通过减少编码过程中数据在寄存器与内存或者缓存之间的读取次数和存储次数,提高了编码速度。
附图说明
[0018]图1为本专利技术基于编码矩阵的纠删码计算示意图;
[0019]图2为本专利技术数据块和校验块的拆分示意图;
[0020]图3为本专利技术校验子块初始化的示意图;
[0021]图4为本专利技术异或计算的示意图;
[0022]图5为本专利技术校验子块存储的示意图。
具体实施方式
[0023]下面结合附图通过具体实施例对本专利技术中的寄存器友好的高效异或纠删码编码方法作进一步说明。
[0024]采用(12,6)的异或纠删码编码矩阵,对12个数据块D0,D1,D2,D3,D4,D5,D6,D7,D8,D9,D
10
,D
11
进行编码,得到六个校验块P0,P1,P2,P3,P4,P5,编码矩阵的规模为6
×
12,编码矩阵中的每个元素都为0或1。图1为基于编码矩阵的计算示意图。
[0025]现有技术:
[0026]这里校验块如果按现有编码方法计算校验块P0,整个计算分为七轮:P0=0,,在第一轮至第六轮计算中,校验块P0的中间结果都要存储到内存或者缓存中,在第二轮至第七轮计算中,P0的中间结果都要读取到寄存器中;校验块P0的中间结果在寄存器,以及内存或者缓存之间的传输数据量为12个块。
[0027]实施例一
[0028]本实施例中的寄存器友好的高效异或纠删码编码方法,具体包括以下步骤:
[0029]步骤一、数据块和校验块的拆分:
[0030]以校验块P0的计算为例,校验块这七个数据块被拆分为n个寄存器大小的数据子块,如图2所示,比如数据库D0被拆分为数据子块D
00
,D
01
,

,D
0(n

1)
,同样的,校验块P0也被拆分为n个校验子块P
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种寄存器友好的高效异或纠删码编码方法,采用(k,m)异或纠删码编码矩阵对k个数据块D0,D1,

,D
k
‑1进行编码,得到m个校验块P0,P1,

,P
m
‑1,异或纠删码编码矩阵中的每个元素为0或者为1,每个校验块为多个数据块的异或和;其特征在于,包括以下步骤:步骤一、数据块和校验块的拆分:设校验块P
g
,0≤g≤m

1的计算公式为将每个数据块拆分成n个寄存器大小的数据子块将校验块P
g
拆分为n个寄存器大小的校验子块P
g0
,P
g1
,

,P
g(n

1)
,每个校验子块,每个校验子块对于每个校验子块P
gl

【专利技术属性】
技术研发人员:吕敏汪威李永坤牛天洋徐亮亮李启亮许胤龙
申请(专利权)人:中国科学技术大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1