CN115934409A - 一种寄存器友好的高效异或纠删码编码方法 - Google Patents
一种寄存器友好的高效异或纠删码编码方法 Download PDFInfo
- Publication number
- CN115934409A CN115934409A CN202211482377.6A CN202211482377A CN115934409A CN 115934409 A CN115934409 A CN 115934409A CN 202211482377 A CN202211482377 A CN 202211482377A CN 115934409 A CN115934409 A CN 115934409A
- Authority
- CN
- China
- Prior art keywords
- register
- block
- data
- check
- blocks
- 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
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Error Detection And Correction (AREA)
Abstract
本发明涉及计算机分布式存储系统中的纠删码技术领域,公开了一种寄存器友好的高效异或纠删码编码方法,包括数据块和校验块的拆分,校验子块的计算和校验子块的合并步骤;相比于现有的编码方法,本发明将数据从寄存器到内存或者缓存的存储次数降到最低,即所有数据只需要从寄存器存储到内存一次,减少了数据存储延迟;还将数据从内存或者缓存到寄存器的读取次数减少接近一半,提高了数据加载效率。本发明通过减少编码过程中数据在寄存器与内存或者与缓存之间的读取和存储次数,提高了编码速度。
Description
技术领域
本发明涉及计算机分布式存储系统中的纠删码技术领域,具体涉及一种寄存器友好的高效异或纠删码编码方法。
背景技术
纠删码与多副本是存储系统中数据容错的两种最常见冗余技术。副本技术将同一份数据的多个副本存储在不同的节点上。副本技术易于实现,且能为前端用户提供并发访问,但是它的额外存储开销高。与副本技术相比,纠删码可以提供相同的可靠性,但额外存储开销可以降低一个数量级,广泛应用在大规模存储系统,以节省存储成本。但是,基于纠删码的容错技术在写数据的时候,需要对数据块进行编码计算,得到校验块;在故障修复时需要利用幸存块进行解码计算,得到故障块。编解码计算不仅会降低写数据和修复的速度,还会占用CPU和内存资源。即使是当前最先进的纠删码库ISA-L的编码速度仍低于内存I/O和远程直接内存访问(RDMA)的速度。因此,提高纠删码的编解码速度具有重要意义。
基于异或的纠删码在编码过程中只需要异或计算,编码速度快。然而,现有方法将编码计算分成多轮,每一轮计算读取一个数据块和一个校验块到寄存器中,然后进行异或计算,但通常一个块的大小都远大于寄存器大小,因此每一轮计算的中间结果都会存储到内存或者缓存中,需要中间结果时再重新加载到寄存器中,导致从寄存器中频繁换入和换出中间结果。例如,的计算分为三轮,第一轮计算为P0=0,第二轮计算为第三轮计算为因为寄存器放置不下计算P0所需的所有数据,所以在第一轮和第二轮的计算时,P0的中间结果需存储到内存或者缓存中,在第二轮和第三轮计算时,P0的中间结果需读取到寄存器中。因此,提高编码计算过程的寄存器效率可以显著提高编码速度。
发明内容
为解决上述技术问题,本发明提供一种寄存器友好的高效异或纠删码编码方法,基本思路是将数据块和校验块按寄存器大小进行拆分,使得计算校验块的中间结果可以保存在寄存器中,计算以寄存器粒度进行,避免中间结果在寄存器与内存或者缓存之间的换入或者换出,保证编码过程的寄存器友好性,并设计相应的编码流程,提高纠删码的编码速度。
为解决上述技术问题,本发明采用如下技术方案:
一种寄存器友好的高效异或纠删码编码方法,采用(k,m)异或纠删码编码矩阵对k个数据块D0,D1,…,Dk-1进行编码,得到m个校验块P0,P1,…,Pm-1,异或纠删码编码矩阵中的每个元素为0或者为1,每个校验块为多个数据块的异或和,整个编码过程只需要进行异或计算;包括以下步骤:
步骤一、数据块和校验块的拆分:
设校验块Pg,0≤g≤m-1的计算公式为将每个数据块0≤v≤t-1拆分成n个寄存器大小的数据子块将校验块Pg拆分为n个寄存器大小的校验子块Pg0,Pg1,…,Pg(n-1),每个校验子块 对于每个校验子块Pgl,0≤l≤n-1,执行步骤二;
步骤二、校验子块的计算:
读取数据子块到寄存器R1中,从而将校验子块Pgl的值初始化为每读取一个数据子块1≤v≤t-1到寄存器R2中时,进行一次过程A:对寄存器R1和R2中的值进行异或计算,并将异或计算结果存储在寄存器R1中;
完成t-1次过程A后,将寄存器R1中的值存储到内存中作为校验子块Pgl;
完成所有校验子块Pgl,0≤l≤n-1的计算后,执行步骤三;
在整个校验子块的编码计算过程中,将校验子块的中间结果存储在寄存器中,直到该校验子块计算完成,这避免了中间结果从寄存器中频繁换入/换出,提高了寄存器效率。
步骤三、校验子块的合并:
按序将n个校验子块Pg0,Pg1,…,Pg(n-1)顺序写入缓存或内存的连续地址空间,合并为校验块Pg。
与现有技术相比,本发明的有益技术效果是:
本发明中的寄存器友好的高效异或纠删码编码方法包含数据块和校验块的拆分、校验子块的计算和校验子块的合并;相比于现有的编码方法,本发明将数据从寄存器到内存或者缓存的存储次数降到最低,即所有数据只需要从寄存器存储到内存一次,减少了数据存储延迟;本发明还将数据从内存或者缓存到寄存器的读取次数减少接近一半,提高了数据加载效率。本发明通过减少编码过程中数据在寄存器与内存或者缓存之间的读取次数和存储次数,提高了编码速度。
附图说明
图1为本发明基于编码矩阵的纠删码计算示意图;
图2为本发明数据块和校验块的拆分示意图;
图3为本发明校验子块初始化的示意图;
图4为本发明异或计算的示意图;
图5为本发明校验子块存储的示意图。
具体实施方式
下面结合附图通过具体实施例对本发明中的寄存器友好的高效异或纠删码编码方法作进一步说明。
采用(12,6)的异或纠删码编码矩阵,对12个数据块D0,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11进行编码,得到六个校验块P0,P1,P2,P3,P4,P5,编码矩阵的规模为6×12,编码矩阵中的每个元素都为0或1。图1为基于编码矩阵的计算示意图。
现有技术:
这里校验块如果按现有编码方法计算校验块P0,整个计算分为七轮:P0=0, 在第一轮至第六轮计算中,校验块P0的中间结果都要存储到内存或者缓存中,在第二轮至第七轮计算中,P0的中间结果都要读取到寄存器中;校验块P0的中间结果在寄存器,以及内存或者缓存之间的传输数据量为12个块。
实施例一
本实施例中的寄存器友好的高效异或纠删码编码方法,具体包括以下步骤:
步骤一、数据块和校验块的拆分:
以校验块P0的计算为例,校验块这七个数据块被拆分为n个寄存器大小的数据子块,如图2所示,比如数据库D0被拆分为数据子块D00,D01,…,D0(n-1),同样的,校验块P0也被拆分为n个校验子块P00,P01,…,P0(n-1)。对于每个校验子块都执行步骤二,这里以P00的计算为例。
步骤二、校验子块的计算:
首先读取数据子块D00到寄存器R1中,从而将校验子块P00的值初始化为数据子块D00,如图3所示;将剩下的六个数据子块D30,D40,D80,D90,D10(0),D11(0)依次读取(LOAD)到寄存器R2中;寄存器R2每收到一个数据子块时,进行一次如下过程:对寄存器R1和R2中的值进行异或计算(XOR),并将计算值存储在寄存器R1中,如图4所示;完成六次异或计算后,将寄存器R1中的值存储(STORE)到内存中作为校验子块P00,如图5所示。整个过程校验子块P00的中间结果始终存储在寄存器R1中,直到它的计算完成,只需要一次寄存器到内存的存储操作。
步骤三、校验子块的合并:
当所有校验子块完成计算后,将n个校验子块P00,P01,…,P0(n-1)存储在一段连续的存储空间,作为校验块P0。注意,在写入校验子块P00,P01,…,P0(n-1)后,没有记录各个校验子块的元数据,仅有校验块P0的元数据,实现校验子块的合并。
以上介绍了本发明的具体实施过程。通过分析说明,将数据块和校验块拆分到寄存器粒度进行编码,每个校验子块只在完成计算后才存储到内存,极大地减少了寄存器和内存之间的存储和读取的次数,提高编码速度。在本实施例中,将编码过程中数据从寄存器到内存的存储次数降到最低,即减少了83.3%,并且将数据从内存到寄存器的读取次数减少了45.5%。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内,不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立技术方案,说明书的这种叙述方式仅仅是为了清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
Claims (1)
1.一种寄存器友好的高效异或纠删码编码方法,采用(k,m)异或纠删码编码矩阵对k个数据块D0,D1,…,Dk-1进行编码,得到m个校验块P0,P1,…,Pm-1,异或纠删码编码矩阵中的每个元素为0或者为1,每个校验块为多个数据块的异或和;其特征在于,包括以下步骤:
步骤一、数据块和校验块的拆分:
设校验块Pg,0≤g≤m-1的计算公式为将每个数据块拆分成n个寄存器大小的数据子块将校验块Pg拆分为n个寄存器大小的校验子块Pg0,Pg1,…,Pg(n-1),每个校验子块 对于每个校验子块Pgl,0≤l≤n-1,执行步骤二;
步骤二、校验子块的计算:
完成t-1次过程A后,将寄存器R1中的值存储到内存中作为校验子块Pgl;
完成所有校验子块Pgl,0≤l≤n-1的计算后,执行步骤三;
步骤三、校验子块的合并:
按序将n个校验子块Pg0,Pg1,…,Pg(n-1)顺序写入缓存或内存的连续地址空间,合并为校验块Pg。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211482377.6A CN115934409A (zh) | 2022-11-24 | 2022-11-24 | 一种寄存器友好的高效异或纠删码编码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211482377.6A CN115934409A (zh) | 2022-11-24 | 2022-11-24 | 一种寄存器友好的高效异或纠删码编码方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115934409A true CN115934409A (zh) | 2023-04-07 |
Family
ID=86700008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211482377.6A Pending CN115934409A (zh) | 2022-11-24 | 2022-11-24 | 一种寄存器友好的高效异或纠删码编码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115934409A (zh) |
-
2022
- 2022-11-24 CN CN202211482377.6A patent/CN115934409A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10664347B2 (en) | Using parity data for concurrent data authentication, correction, compression, and encryption | |
KR102081980B1 (ko) | 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법 | |
WO2023138289A1 (zh) | 一种数据存储方法、装置、设备及计算机可读存储介质 | |
CN102017425B (zh) | 用于执行级联纠错的方法和系统 | |
CN105335150A (zh) | 纠删码数据的快速编解码方法和系统 | |
CN103336785A (zh) | 一种基于网络编码的分布式存储方法及其装置 | |
CN102122959B (zh) | 提高计算机主存可靠性的数据压缩装置及其方法 | |
KR20130029080A (ko) | 소거 없는 플래시 메모리의 다중 프로그래밍 | |
WO2023151290A1 (zh) | 一种数据编码方法、装置、设备及介质 | |
CN111831223B (zh) | 提高数据去重系统可扩展性的容错编码方法、装置及系统 | |
EP3051700A1 (en) | Hardware efficient fingerprinting | |
CN105808170A (zh) | 一种能够以最小磁盘读写修复单磁盘错误的raid6编码方法 | |
CN110083487B (zh) | 一种基于数据局部性的引用数据块碎片消除方法及系统 | |
US10187084B2 (en) | Method of encoding data and data storage system | |
CN110600070B (zh) | 一种提升固态硬盘阵列系统修复性能的编码和修复方法 | |
CN111224747A (zh) | 可降低修复带宽和磁盘读取开销的编码方法及其修复方法 | |
CN107402725A (zh) | 非易失性存储装置及其数据去重复方法 | |
CN115934409A (zh) | 一种寄存器友好的高效异或纠删码编码方法 | |
Zhu et al. | Exploring node repair locality in fractional repetition codes | |
CN112000509B (zh) | 一种基于向量指令的纠删码编码方法、系统及装置 | |
CN116302670A (zh) | 编解码方法、编解码器、芯片、硬盘、通讯系统 | |
CN115113816A (zh) | 一种纠删码数据处理系统、方法、计算机设备及介质 | |
CN115865105A (zh) | 一种计算和缓存友好的高效里德-所罗门码编码方法 | |
CN1688110A (zh) | 基于可寻址存储器的里德·索罗门译码器 | |
CN111585581B (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 |