CN115113816A - 一种纠删码数据处理系统、方法、计算机设备及介质 - Google Patents
一种纠删码数据处理系统、方法、计算机设备及介质 Download PDFInfo
- Publication number
- CN115113816A CN115113816A CN202210727047.2A CN202210727047A CN115113816A CN 115113816 A CN115113816 A CN 115113816A CN 202210727047 A CN202210727047 A CN 202210727047A CN 115113816 A CN115113816 A CN 115113816A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- erasure
- operated
- xor
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明涉及计算机技术领域,尤其涉及一种纠删码数据处理系统、方法、计算机设备及介质。所述系统包括:PCIe设备,PCIe设备中存储有待运算数据;主机和被主机控制的数据单元、参数单元,由主机基于纠删处理请求控制数据单元从PCIe设备中读取待运算数据,由主机根据PCIe设备的被读取操作为每个待运算数据计算对应的待乘参数并发送给参数单元;多个内核,由每个内核分别从数据单元和参数单元获取待运算数据、以及与待运算数据对应的待乘参数,并基于预设规则对所获取的待运算参数和待乘参数执行运算并输出纠删编码数据或纠删解码数据。本发明的方案利用流水线的方式实现高速并行处理,显著提升纠删码数据的处理效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种纠删码数据处理系统、方法、计算机设备及介质。
背景技术
伴随着通讯技术和网络科技的迅速发展,数字化信息呈指数爆炸式增长,数据存储技术也因此迎来了巨大的挑战。存储系统中数据的可靠性问题以及存储系统的能耗问题越来越被人们所关注。现如今面对如此庞大的数据规模,存储系统中数据的可靠性和存储系统中包含的组件数量成反比关系,即存储系统组件数越多,那么存储系统中数据的可靠性就越低。根据相关调查显示,在一个由600个磁盘构成的互联网数据中心中,每月大约会有30个磁盘出现损坏的情况,在大规模存储系统中,磁盘故障造成的数据可靠性下降是相当严重的问题,对此人们展开了相关容错技术的研究。
纠删码(erasure coding,EC)是一种数据保护方法,它将数据分割成片段,把冗余数据扩展、编码,并将其存储在不同的位置,比如磁盘、存储节点或者其它地理位置。将原始数据分割成k个数据块,并根据编码矩阵生成m编码块,将n(n=k+m)块分布到不同的服务器上。只需要k个块就可以恢复原来的数据。目前纠删码数据处理芯片(DPU)产生,对于不同的编码算法需要设计不同的芯片架构,灵活较差、处理效率较低,因此亟需改进。
发明内容
有鉴于此,有必要针对以上技术问题,提供一种纠删码数据处理系统、方法、计算机设备及介质。
根据本发明的第一方面,提供了一种纠删码数据处理系统,所述系统包括:
PCIe设备,所述PCIe设备中存储有待运算数据;
主机和被所述主机控制的数据单元、参数单元,由所述主机基于纠删处理请求控制所述数据单元从所述PCIe设备中读取所述待运算数据,由所述主机根据所述PCIe设备的被读取操作为每个待运算数据计算对应的待乘参数并发送给所述参数单元;
多个内核,由每个内核分别从所述数据单元和所述参数单元获取待运算数据、以及与所述待运算数据对应的待乘参数,并基于预设规则对所获取的待运算参数和待乘参数执行运算并输出纠删编码数据或纠删解码数据。
在一些实施例中,所述内核数量等于纠删编码所设定的冗余块数量,每个内核均包括数据模块、参数模块、伽罗华乘法模块、第一异或模块、缓存模块。
在一些实施例中,所述纠删处理请求为纠删编码请求,每个内核对应一个冗余块,每个内核配置为采用以下步骤生成数据:
将所述缓存模块中的数据置零;
由所述数据模块依次从所述数据单元获取生成一个冗余块所需的待运算数据;
由所述参数模块依次从所述参数单元获取生成与每个待运算数据对应的待乘参数;
由所述伽罗华乘法模块依次对每对待运算数据待乘参数执行乘法运算以生成乘积结果;
由所述第一异或模块将每次乘积结果和所述缓存模块中的数据执行异或运算以生成异或结果,并由所述缓存模块缓存本次异或结果;
将所述第一异或模块最后一次执行异或运算的结果输出以得到冗余块对应的纠删编码数据。
在一些实施例中,所述纠删处理请求为纠删解码请求,所述主机配置为:
将纠删解码请求中发生错误的数据量与纠删编码所设定的冗余块数量进行比较;
响应于发生错误的数据量超过删编码所设定的冗余块数量,则确认无法生成解码数据;
响应于发生错误的数据量未超过删编码所设定的冗余块数量,则确认可以通过多个内核生成纠删解码数据。
在一些实施例中,响应于发生错误的数量等于删编码所设定的冗余块数量,则每个内核对应一个待恢复的错误数据,每个内核配置为采用以下步骤生成数据:
将所述缓存模块中的数据置零;
由所述数据模块依次从所述数据单元获取生成一个待恢复数据所需的待运算数据;
由所述参数模块依次从所述参数单元获取与每个待运算数据对应的待乘参数;
由所述伽罗华乘法模块依次对每对待运算数据待乘参数执行乘法运算以生成乘积结果;
由所述第一异或模块将每次乘积结果和所述缓存模块中的数据执行异或运算以生成异或结果,并由所述缓存模块缓存本次异或结果;
将所述第一异或模块最后一次执行异或运算的结果输出以得到所述待恢复数据对应的纠删解码数据。
在一些实施例中,响应于发生错误的数量小于删编码所设定的冗余块数量,由所述主机对多个内核进行分组以使内核组的数量等于发生错误的数量,每个内核组对应一个待恢复的错误数据。
在一些实施例中,所述系统还包括控制选通模块和第二异或模块,每一内核组配置为采用以下步骤生成数据:
将所述缓存模块中的数据置零;
由所述数据模块依次从所述数据单元获取生成待恢复数据所需的待运算数据;
由同一内核组中的每个内核的数据模块依次从所述数据单元获取生成一个待恢复数据所需的待运算数据;
由同一内核组中的每个内核的参数模块依次从所述参数单元获取与每个待运算参数对应的待乘参数;
由所述伽罗华乘法模块依次对每对待运算数据待乘参数执行乘法运算以生成乘积结果;
由所述第一异或模块将每次乘积结果和所述缓存模块中的数据执行异或运算以生成异或结果,并由所述缓存模块缓存本次异或结果;
将所述第一异或模块最后一次执行异或运算的结果输出;
响应于某一内核组中的内核数量超过一个,则由所述控制选通模块将同一内核组中每个内核的所述第一异或模块与所述第二异或模块之间的通路,以使所述第二异或模块对同一内核组中每个内核的所述第一异或模块的输出执行异或运算得到所述待恢复数据对应的纠删解码数据;
响应于某一内核组中的内核数量未超过一个,则由所述控制选通模块将内核的所述第一异或模块最后一次执行异或运算的结果输出以得到所述待恢复数据对应的纠删解码数据。
根据本发明的第二方面,提供了一种纠删码数据处理方法,所述方法包括:
利用PCIe设备中存储有待运算数据;
设置主机和被所述主机控制的数据单元、参数单元,由所述主机基于纠删处理请求控制所述数据单元从所述PCIe设备中读取所述待运算数据,由所述主机根据所述PCIe设备的被读取操作为每个待运算数据计算对应的待乘参数并发送给所述参数单元;
设置多个内核,由每个内核分别从所述数据单元和所述参数单元获取待运算数据、以及与所述待运算数据对应的待乘参数,并基于预设规则对所获取的待运算参数和待乘参数执行运算并输出纠删编码数据或纠删解码数据。
根据本发明的第三方面,还提供了一种计算机设备,该计算机设备包括:
至少一个处理器;以及
存储器,存储器存储有可在处理器上运行的计算机程序,处理器执行程序时执行前述的纠删码数据处理方法。
根据本发明的第四方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时执行前述的纠删码数据处理方法。
上述一种纠删码数据处理系统,利用主机控制数据单元、参数单元与多个内核进行数据交互实现纠删编码和解密,利用流水线的方式在有限的硬件配置前提下,实现高速并行处理数据,显著提升纠删码数据的处理效率。
此外,本发明还提供了一种纠删码数据处理方法、一种计算机设备和一种计算机可读存储介质,同样能实现上述技术效果,这里不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为传统的纠删码编码原理示意图;
图2为本发明一个实施例提供的一种纠删码数据处理系统结构示意图;
图3为本发明另一个实施例提供的纠删编码处理时内核Kernel的硬件架构示意图;
图4为本发明另一个实施例提供的纠删解码处理时内核Kernel的硬件架构示意图;
图5为本发明又一个实施例提供的一种纠删码数据处理方法的流程示意图;
图6为本发明另一个实施例中计算机设备的内部结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
为了便于理解本发明的方案,下面先对纠删码编码和解密原理进行说明,请参照图1所示,目前纠删码的参数配置包括:k:数据块。k表示将原始数据划分的块数和恢复原始数据的最小块数。k值越小,发生故障时,数据重构的代价越大;k值越大,需要多路数据拷贝,增加网络和IO的负载。m:编码块。m影响数据保存的可靠性和存储成本。取值越大,对故障的容忍度大,数据的冗余度也会增加,存储成本也会提高。n:生成块数(n=k+m)。有效存储比:k/n;传统的纠删码编码一般利用范德蒙或柯西矩阵,其编码如图1所示:图1中待编码的数据块为k=5个,编码需求为m=3,最终的生成码块为D+C部分,总量为k+m=8个,有效存储比为:k/n=5/8。这样实现的纠删系统,可以对K个D进行编码,得到m个C,编码的方式即为图1中所示。纠删系统可在m个编码实现后很对系统中任意m个错误就行解码恢复。
纠删码(Erasure Code)属于编码理论中的一种前向纠错技术,最早应用于通信领域以解决数据传输中的丢失与损耗这类问题。由于纠删码技术在防止数据丢失取得了较好的效果,因此被引入存储领域。纠删码可以在保证相同可靠性的前提下有效地降低存储开销,因此纠删码技术被广泛地应用于各大存储系统以及数据中心例如微软的Azure、Facebook的F4等。纠删码的种类众多,在实际存储系统中较常见的有应用在分布式环境下的RS码(Reed-Solomon Code)。RS码与两个参数k和r相关。给定两个正整数k和r,RS码将k个数据块编码为r个额外的校验块。而r个校验块基于范德蒙矩阵或柯西矩阵进行编码的方式就称为利用范德蒙矩阵或柯西矩阵编码的RS纠删码。
例如基于范德蒙矩阵的RS纠删码具体编码过程如下所示:
又如基于柯西矩阵的RS纠删码具体编码过程如下所示:
上部分的k*k矩阵对应的就是k个原始数据块,下部分的r*k矩阵对应的就是编码矩阵,通过与原始数据D1到Dk相乘,得到新添加的P1到Pr就是编码所得到的r个校验数据。当其中任意做多r个数据在传输中出错或丢失,需要纠错时,即用剩余数据对应矩阵的逆矩阵与数据相乘,即会得到原始数据块D1到Dk(推导过程不再赘述)。
以D1到Dr数据丢失,进行解码为例,具体纠删码恢复数据方式过程如下所示:
可知纠删码的核心概念是构建一个可逆的编码矩阵用以产生校验数据,其逆矩阵可经过计算恢复原始数据。常见的RS纠删码使用的是上面介绍的柯西矩阵或范德蒙矩阵,这样的优势是所得到的矩阵肯定可逆,其任意子矩阵也都可逆,并且矩阵的大小扩充简单。
在一个实施例中,请参照图2所示,本发明提供了一种纠删码数据处理系统,具体来说该系统包括:
PCIe设备,所述PCIe设备中存储有待运算数据;
主机和被所述主机控制的数据单元、参数单元,由所述主机基于纠删处理请求控制所述数据单元从所述PCIe设备中读取所述待运算数据,由所述主机根据所述PCIe设备的被读取操作为每个待运算数据计算对应的待乘参数并发送给所述参数单元;
多个内核,由每个内核分别从所述数据单元和所述参数单元获取待运算数据、以及与所述待运算数据对应的待乘参数,并基于预设规则对所获取的待运算参数和待乘参数执行运算并输出纠删编码数据或纠删解码数据。
上述一种纠删码数据处理系统,利用主机控制数据单元、参数单元与多个内核进行数据交互实现纠删编码和解密,利用流水线的方式在有限的硬件配置前提下,实现高速并行处理数据,显著提升纠删码数据的处理效率。
在一些实施例中,所述内核数量等于纠删编码所设定的冗余块数量,每个内核均包括数据模块、参数模块、伽罗华乘法模块、第一异或模块、缓存模块。
在一些实施例中,请参照图3所示,所述纠删处理请求为纠删编码请求,每个内核对应一个冗余块,每个内核配置为采用以下步骤生成数据:
将所述缓存模块中的数据置零;
由所述数据模块依次从所述数据单元获取生成一个冗余块所需的待运算数据;
由所述参数模块依次从所述参数单元获取生成与每个待运算数据对应的待乘参数;
由所述伽罗华乘法模块依次对每对待运算数据待乘参数执行乘法运算以生成乘积结果;
由所述第一异或模块将每次乘积结果和所述缓存模块中的数据执行异或运算以生成异或结果,并由所述缓存模块缓存本次异或结果;
将所述第一异或模块最后一次执行异或运算的结果输出以得到冗余块对应的纠删编码数据。
在一些实施例中,所述纠删处理请求为纠删解码请求,所述主机配置为:
将纠删解码请求中发生错误的数据量与纠删编码所设定的冗余块数量进行比较;
响应于发生错误的数据量超过删编码所设定的冗余块数量,则确认无法生成解码数据;
响应于发生错误的数据量未超过删编码所设定的冗余块数量,则确认可以通过多个内核生成纠删解码数据。
在一些实施例中,响应于发生错误的数量等于删编码所设定的冗余块数量,则每个内核对应一个待恢复的错误数据,每个内核配置为采用以下步骤生成数据:
将所述缓存模块中的数据置零;
由所述数据模块依次从所述数据单元获取生成一个待恢复数据所需的待运算数据;
由所述参数模块依次从所述参数单元获取与每个待运算数据对应的待乘参数;
由所述伽罗华乘法模块依次对每对待运算数据待乘参数执行乘法运算以生成乘积结果;
由所述第一异或模块将每次乘积结果和所述缓存模块中的数据执行异或运算以生成异或结果,并由所述缓存模块缓存本次异或结果;
将所述第一异或模块最后一次执行异或运算的结果输出以得到所述待恢复数据对应的纠删解码数据。
在一些实施例中,响应于发生错误的数量小于删编码所设定的冗余块数量,由所述主机对多个内核进行分组以使内核组的数量等于发生错误的数量,每个内核组对应一个待恢复的错误数据。
在一些实施例中,请参照图4所示,所述系统还包括控制选通模块和第二异或模块,每一内核组配置为采用以下步骤生成数据:
将所述缓存模块中的数据置零;
由所述数据模块依次从所述数据单元获取生成待恢复数据所需的待运算数据;
由同一内核组中的每个内核的数据模块依次从所述数据单元获取生成一个待恢复数据所需的待运算数据;
由同一内核组中的每个内核的参数模块依次从所述参数单元获取与每个待运算参数对应的待乘参数;
由所述伽罗华乘法模块依次对每对待运算数据待乘参数执行乘法运算以生成乘积结果;
由所述第一异或模块将每次乘积结果和所述缓存模块中的数据执行异或运算以生成异或结果,并由所述缓存模块缓存本次异或结果;
将所述第一异或模块最后一次执行异或运算的结果输出;
响应于某一内核组中的内核数量超过一个,则由所述控制选通模块将同一内核组中每个内核的所述第一异或模块与所述第二异或模块之间的通路,以使所述第二异或模块对同一内核组中每个内核的所述第一异或模块的输出执行异或运算得到所述待恢复数据对应的纠删解码数据;
响应于某一内核组中的内核数量未超过一个,则由所述控制选通模块将内核的所述第一异或模块最后一次执行异或运算的结果输出以得到所述待恢复数据对应的纠删解码数据。
在又一个实施例中,为了便于理解本发明的技术方案,保证用户数据的安全,纠删是存储服务器中的核心功能,为了实现纠删功能通用存储服务器的数据处理芯片(DPU)常需要设计纠删码数据处理系统,进行相关的功能操作。本实施例提出了通用的纠删码数据处理系统的硬件实现、以及在该硬件下的数据与运算方式,使其利用流水线的方式,在有限的硬件配置前提下,达到高速并行处理的优势,该方式适用于RS以及RAID等常见的纠删功能需求,具体是实施方式如下:
对于纠删码数据处理系统,常见的算法,无论RS还是RAID算法,其编解码在实现阶段都可以总结为以下方式:
如公式1所示,无论是基于RS或是基于RAID的纠删算法,其编解码都可以表达为数据和其对应参数的乘积和的运算,因此其纠删码数据处理系统在硬件实现时可以表示为图2所示的架构,其中主机host为运算的主要控制部分,控制两部分,即是数据单元和参数单元,其中数据单元在host的控制下,从PCIe取待运算数据(编码或解码的数据),同时通过host基于不同的运算需求和环境,计算此时数据对应的待乘参数,然后发送给内核kernel,在kernel内完成相关的所有运算,最后输出。
具体的运算实现通过kernel来实现,kernel中运算的实现会有各种方式,实现基于硬件实现对应的损耗和所获得的速度及吞吐的提升综合考虑,可以但不限制于全并行,或全串行,或相组合的运算实现方式。优选地,本实施例基于校验码个数设置kernel实现时的并行度。以RS纠删为例进行说明,即是当有r个校验码(等同于公式1中的r),则对其设置r条并行运算结构,以r为3为例进行说明,则其实现的硬件结构如图3所示:
当r=3时,我们推荐实现三条并行流水线进行相关的编解码运算,具体实现方式如图3所示。自上而下进行工作,当编码时数据首先通过kernel外的数据单元同时发送给三个kernel的数据模块,host计算了三组参数,三组参数单元每组发送给一个kernel的参数模块,然后在分别三个kernel内进行伽罗华乘法,所完成的结果与暂存模块内的临时数据进行异或运算。数据运算开始的初始阶段,暂存模块中数据全部被reset为0,之后每一拍运算产生一个临时值,暂存于暂存模块,然后下一拍将其取出与下一拍完成乘法运算的数据进行异或,依次类推多次迭代后产生一个最终值并输出,最终输出kernel,得到r=3的三个校验码值。
以上实现方式基于r个校验码值可以同时运算,并行取得。而其解码使用相同模块,因为在r个校验码的设置情况下,同时最多错误可恢复的数据数量等于r,因此这里并行的3个kernel可以在解码中同时进行工作。工作方式等同于编码,如上所述。而我们知道,虽然我们设定的最大恢复量是r,但如上面介绍所述,最常见的错误场景为单一错误,因此大部分情况下如上所述的r个kernel在解码时是无法跑满的,亦即是所设置的硬件存在一定的浪费。因此在单一或任意错误数量无法达到r个错误的场景下,会存在一定的硬件浪费,亦即是产生一定的速度损耗,为此我们在这种通用模块下,增加一个数据连接关系,从而实现在该种情况下可以达到内部再一次的并行运算。下面将对纠删解码时发生错误量数据未达到r个的情形的处理过程进行说明:
如图4可知改进方式为在最终的输出前增加了一个异或和一个控制选通模块,其中控制选通模块通过host基于不同的操作进行控制,异或模块对于同样大小的数据进行异或运算即可。不同的功能实现主要基于控制选通模块进行区分:
(1)当是满r量的编解码时,选通模块将每个内核kernel的异或模块最后一次完成异或运算的结果作为解密结果进行输出。
(2)当解码环境为小于r的错误量时,基于e拍分别输出给异或模块进行异或运算,然后将同一内核组内的所有异或模块最后一次完成异或运算的结果再次进行一次异或运算的结果作为该内核组对应得待恢复数据的解密结果输出。这里的e为实际待解码的错误码块数量,具体的实现方式为:
(a)确定并行kernel数量,确定方式遵循下面公式2:
上述公式2中e为实际待解码的错误码块数量,r为上述的r,对于e个错误码块,最终所求得的e个en值即为划分的并行运算的kernel的分别数量,以r为3,e为2为例,则基于公式2可以计算得到en1=2,en2=1。
(b)基于步骤a中的en划分并行运算的kernel。以上述r为3,e为2继续举例,经过计算的en1=2,en2=1,则对于图4中的kernel1和2划分为一组,剩余的kernel3为一组。即kernel 2单独处理计算错误的数据块2的恢复,,而kernel1和kernel 2并行计算错误码块1的恢复,划分方式即为将解码需要读取的k个数据块,基于进行除法运算后,划分每个dni个数据块的读取,然后运算后结果通过异或进行组合。上述情况下,以k=32为例,即是说每16个数据块通过kernel1和2分别读取运算,最终完成结果的运算时间为16+1=17个周期。
本实施例的删码数据处理系统对于任意少于r个错误的情况下,最快可以达到个周期的速度提升,最慢则和原本的实现方式相同。从而达到解码迭代运算内部的并行化,最大化的利用所准备的解码kernel硬件,本实施例的删码数据处理系统不仅具有通用性,而且可以最大化利用所设计的运算硬件,在到速度和面积平衡的前提下,最大化实现运算速度的优化。
在又一个实施例中,请参照图5所示,本实施例提供了一种纠删码数据处理方法100,所述方法包括:
步骤101,利用PCIe设备中存储有待运算数据;
步骤102,设置主机和被所述主机控制的数据单元、参数单元,由所述主机基于纠删处理请求控制所述数据单元从所述PCIe设备中读取所述待运算数据,由所述主机根据所述PCIe设备的被读取操作为每个待运算数据计算对应的待乘参数并发送给所述参数单元;
步骤103,设置多个内核,由每个内核分别从所述数据单元和所述参数单元获取待运算数据、以及与所述待运算数据对应的待乘参数,并基于预设规则对所获取的待运算参数和待乘参数执行运算并输出纠删编码数据或纠删解码数据。
上述一种纠删码数据处理方法,利用主机控制数据单元、参数单元与多个内核进行数据交互实现纠删编码和解密,利用流水线的方式在有限的硬件配置前提下,实现高速并行处理数据,显著提升纠删码数据的处理效率。
在一些实施例中,所述内核数量等于纠删编码所设定的冗余块数量,每个内核均包括数据模块、参数模块、伽罗华乘法模块、第一异或模块、缓存模块。
在一些实施例中,所述纠删处理请求为纠删编码请求,每个内核对应一个冗余块,每个内核配置为采用以下步骤生成数据:
将所述缓存模块中的数据置零;
由所述数据模块依次从所述数据单元获取生成一个冗余块所需的待运算数据;
由所述参数模块依次从所述参数单元获取生成与每个待运算数据对应的待乘参数;
由所述伽罗华乘法模块依次对每对待运算数据待乘参数执行乘法运算以生成乘积结果;
由所述第一异或模块将每次乘积结果和所述缓存模块中的数据执行异或运算以生成异或结果,并由所述缓存模块缓存本次异或结果;
将所述第一异或模块最后一次执行异或运算的结果输出以得到冗余块对应的纠删编码数据。
在一些实施例中,所述纠删处理请求为纠删解码请求,所述主机配置为:
将纠删解码请求中发生错误的数据量与纠删编码所设定的冗余块数量进行比较;
响应于发生错误的数据量超过删编码所设定的冗余块数量,则确认无法生成解码数据;
响应于发生错误的数据量未超过删编码所设定的冗余块数量,则确认可以通过多个内核生成纠删解码数据。
在一些实施例中,响应于发生错误的数量等于删编码所设定的冗余块数量,则每个内核对应一个待恢复的错误数据,每个内核配置为采用以下步骤生成数据:
将所述缓存模块中的数据置零;
由所述数据模块依次从所述数据单元获取生成一个待恢复数据所需的待运算数据;
由所述参数模块依次从所述参数单元获取与每个待运算数据对应的待乘参数;
由所述伽罗华乘法模块依次对每对待运算数据待乘参数执行乘法运算以生成乘积结果;
由所述第一异或模块将每次乘积结果和所述缓存模块中的数据执行异或运算以生成异或结果,并由所述缓存模块缓存本次异或结果;
将所述第一异或模块最后一次执行异或运算的结果输出以得到所述待恢复数据对应的纠删解码数据。
在一些实施例中,响应于发生错误的数量小于删编码所设定的冗余块数量,由所述主机对多个内核进行分组以使内核组的数量等于发生错误的数量,每个内核组对应一个待恢复的错误数据。
在一些实施例中,所述方法还包括:设置控制选通模块和第二异或模块,每一内核组配置为采用以下步骤生成数据:
将所述缓存模块中的数据置零;
由所述数据模块依次从所述数据单元获取生成待恢复数据所需的待运算数据;
由同一内核组中的每个内核的数据模块依次从所述数据单元获取生成一个待恢复数据所需的待运算数据;
由同一内核组中的每个内核的参数模块依次从所述参数单元获取与每个待运算参数对应的待乘参数;
由所述伽罗华乘法模块依次对每对待运算数据待乘参数执行乘法运算以生成乘积结果;
由所述第一异或模块将每次乘积结果和所述缓存模块中的数据执行异或运算以生成异或结果,并由所述缓存模块缓存本次异或结果;
将所述第一异或模块最后一次执行异或运算的结果输出;
响应于某一内核组中的内核数量超过一个,则由所述控制选通模块将同一内核组中每个内核的所述第一异或模块与所述第二异或模块之间的通路,以使所述第二异或模块对同一内核组中每个内核的所述第一异或模块的输出执行异或运算得到所述待恢复数据对应的纠删解码数据;
响应于某一内核组中的内核数量未超过一个,则由所述控制选通模块将内核的所述第一异或模块最后一次执行异或运算的结果输出以得到所述待恢复数据对应的纠删解码数据。
需要说明的是,关于纠删码数据处理方法的具体限定可以参见上文中对纠删码数据处理系统的限定,在此不再赘述。上述纠删码数据处理系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
根据本发明的另一方面,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图请参照图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时实现以上所述的纠删码数据处理方法,具体来说,所述方法包括以下步骤:
利用PCIe设备中存储有待运算数据;
设置主机和被所述主机控制的数据单元、参数单元,由所述主机基于纠删处理请求控制所述数据单元从所述PCIe设备中读取所述待运算数据,由所述主机根据所述PCIe设备的被读取操作为每个待运算数据计算对应的待乘参数并发送给所述参数单元;
设置多个内核,由每个内核分别从所述数据单元和所述参数单元获取待运算数据、以及与所述待运算数据对应的待乘参数,并基于预设规则对所获取的待运算参数和待乘参数执行运算并输出纠删编码数据或纠删解码数据。
根据本发明的又一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上所述的纠删码数据处理方法,具体来说,包括执行以下步骤:
利用PCIe设备中存储有待运算数据;
设置主机和被所述主机控制的数据单元、参数单元,由所述主机基于纠删处理请求控制所述数据单元从所述PCIe设备中读取所述待运算数据,由所述主机根据所述PCIe设备的被读取操作为每个待运算数据计算对应的待乘参数并发送给所述参数单元;
设置多个内核,由每个内核分别从所述数据单元和所述参数单元获取待运算数据、以及与所述待运算数据对应的待乘参数,并基于预设规则对所获取的待运算参数和待乘参数执行运算并输出纠删编码数据或纠删解码数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种纠删码数据处理系统,其特征在于,所述系统包括:
PCIe设备,所述PCIe设备中存储有待运算数据;
主机和被所述主机控制的数据单元、参数单元,由所述主机基于纠删处理请求控制所述数据单元从所述PCIe设备中读取所述待运算数据,由所述主机根据所述PCIe设备的被读取操作为每个待运算数据计算对应的待乘参数并发送给所述参数单元;
多个内核,由每个内核分别从所述数据单元和所述参数单元获取待运算数据、以及与所述待运算数据对应的待乘参数,并基于预设规则对所获取的待运算参数和待乘参数执行运算并输出纠删编码数据或纠删解码数据。
2.根据权利要求1所述的纠删码数据处理系统,其特征在于,所述内核数量等于纠删编码所设定的冗余块数量,每个内核均包括数据模块、参数模块、伽罗华乘法模块、第一异或模块、缓存模块。
3.根据权利要求2所述的纠删码数据处理系统,其特征在于,所述纠删处理请求为纠删编码请求,每个内核对应一个冗余块,每个内核配置为采用以下步骤生成数据:
将所述缓存模块中的数据置零;
由所述数据模块依次从所述数据单元获取生成一个冗余块所需的待运算数据;
由所述参数模块依次从所述参数单元获取生成与每个待运算数据对应的待乘参数;
由所述伽罗华乘法模块依次对每对待运算数据待乘参数执行乘法运算以生成乘积结果;
由所述第一异或模块将每次乘积结果和所述缓存模块中的数据执行异或运算以生成异或结果,并由所述缓存模块缓存本次异或结果;
将所述第一异或模块最后一次执行异或运算的结果输出以得到冗余块对应的纠删编码数据。
4.根据权利要求2所述的纠删码数据处理系统,其特征在于,所述纠删处理请求为纠删解码请求,所述主机配置为:
将纠删解码请求中发生错误的数据量与纠删编码所设定的冗余块数量进行比较;
响应于发生错误的数据量超过删编码所设定的冗余块数量,则确认无法生成解码数据;
响应于发生错误的数据量未超过删编码所设定的冗余块数量,则确认可以通过多个内核生成纠删解码数据。
5.根据权利要求4所述的纠删码数据处理系统,其特征在于,响应于发生错误的数量等于删编码所设定的冗余块数量,则每个内核对应一个待恢复的错误数据,每个内核配置为采用以下步骤生成数据:
将所述缓存模块中的数据置零;
由所述数据模块依次从所述数据单元获取生成一个待恢复数据所需的待运算数据;
由所述参数模块依次从所述参数单元获取与每个待运算数据对应的待乘参数;
由所述伽罗华乘法模块依次对每对待运算数据待乘参数执行乘法运算以生成乘积结果;
由所述第一异或模块将每次乘积结果和所述缓存模块中的数据执行异或运算以生成异或结果,并由所述缓存模块缓存本次异或结果;
将所述第一异或模块最后一次执行异或运算的结果输出以得到所述待恢复数据对应的纠删解码数据。
6.根据权利要4所述的纠删码数据处理系统,其特征在于,响应于发生错误的数量小于删编码所设定的冗余块数量,由所述主机对多个内核进行分组以使内核组的数量等于发生错误的数量,每个内核组对应一个待恢复的错误数据。
7.根据权利要求6所述的纠删码数据处理系统,其特征在于,所述系统还包括控制选通模块和第二异或模块,每一内核组配置为采用以下步骤生成数据:
将所述缓存模块中的数据置零;
由所述数据模块依次从所述数据单元获取生成待恢复数据所需的待运算数据;
由同一内核组中的每个内核的数据模块依次从所述数据单元获取生成一个待恢复数据所需的待运算数据;
由同一内核组中的每个内核的参数模块依次从所述参数单元获取与每个待运算参数对应的待乘参数;
由所述伽罗华乘法模块依次对每对待运算数据待乘参数执行乘法运算以生成乘积结果;
由所述第一异或模块将每次乘积结果和所述缓存模块中的数据执行异或运算以生成异或结果,并由所述缓存模块缓存本次异或结果;
将所述第一异或模块最后一次执行异或运算的结果输出;
响应于某一内核组中的内核数量超过一个,则由所述控制选通模块将同一内核组中每个内核的所述第一异或模块与所述第二异或模块之间的通路,以使所述第二异或模块对同一内核组中每个内核的所述第一异或模块的输出执行异或运算得到所述待恢复数据对应的纠删解码数据;
响应于某一内核组中的内核数量未超过一个,则由所述控制选通模块将内核的所述第一异或模块最后一次执行异或运算的结果输出以得到所述待恢复数据对应的纠删解码数据。
8.一种纠删码数据处理方法,其特征在于,所述方法包括:
利用PCIe设备中存储有待运算数据;
设置主机和被所述主机控制的数据单元、参数单元,由所述主机基于纠删处理请求控制所述数据单元从所述PCIe设备中读取所述待运算数据,由所述主机根据所述PCIe设备的被读取操作为每个待运算数据计算对应的待乘参数并发送给所述参数单元;
设置多个内核,由每个内核分别从所述数据单元和所述参数单元获取待运算数据、以及与所述待运算数据对应的待乘参数,并基于预设规则对所获取的待运算参数和待乘参数执行运算并输出纠删编码数据或纠删解码数据。
9.一种计算机设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器中运行的计算机程序,所述处理器执行所述程序时执行权利要求8任意一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行权利要求8任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210727047.2A CN115113816A (zh) | 2022-06-24 | 2022-06-24 | 一种纠删码数据处理系统、方法、计算机设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210727047.2A CN115113816A (zh) | 2022-06-24 | 2022-06-24 | 一种纠删码数据处理系统、方法、计算机设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115113816A true CN115113816A (zh) | 2022-09-27 |
Family
ID=83328543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210727047.2A Pending CN115113816A (zh) | 2022-06-24 | 2022-06-24 | 一种纠删码数据处理系统、方法、计算机设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115113816A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115964445A (zh) * | 2023-02-23 | 2023-04-14 | 合肥申威睿思信息科技有限公司 | 一种分布式数据库的多副本实现方法和装置 |
CN118536174A (zh) * | 2024-04-18 | 2024-08-23 | 中国人民解放军32806部队 | 一种针对无人集群的高可靠协同存储方法 |
-
2022
- 2022-06-24 CN CN202210727047.2A patent/CN115113816A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115964445A (zh) * | 2023-02-23 | 2023-04-14 | 合肥申威睿思信息科技有限公司 | 一种分布式数据库的多副本实现方法和装置 |
CN115964445B (zh) * | 2023-02-23 | 2024-03-05 | 合肥申威睿思信息科技有限公司 | 一种分布式数据库的多副本实现方法和装置 |
CN118536174A (zh) * | 2024-04-18 | 2024-08-23 | 中国人民解放军32806部队 | 一种针对无人集群的高可靠协同存储方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11327840B1 (en) | Multi-stage data recovery in a distributed storage network | |
CN110089035B (zh) | 存储控制器、数据处理芯片及数据处理方法 | |
CN115113816A (zh) | 一种纠删码数据处理系统、方法、计算机设备及介质 | |
RU2747089C2 (ru) | Устройство и соответствующая методология для кодирования и декодирования данных для кода затирания | |
US20150089282A1 (en) | Method of, and apparatus for, layout rectification of erasure encoded storage systems | |
CN111682874B (zh) | 一种数据恢复的方法、系统、设备及可读存储介质 | |
CN111697976B (zh) | 一种基于分布式存储的rs纠删快速解码方法及系统 | |
CN105518996B (zh) | 一种基于二进制域里德所罗门码的数据编解码方法 | |
WO2023165536A1 (zh) | 一种数据存储方法、系统、设备以及介质 | |
CN114153651B (zh) | 一种数据编码方法、装置、设备及介质 | |
CN113687975B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN111782152A (zh) | 数据存储方法、数据恢复方法、装置、服务器及存储介质 | |
CN108334419B (zh) | 一种数据恢复的方法和装置 | |
CN113297001B (zh) | 一种raid编解码方法及编解码电路 | |
CN112799875B (zh) | 基于高斯消元进行校验恢复的方法、系统、设备及介质 | |
CN111090540B (zh) | 基于纠删码的数据处理方法与装置 | |
CN112000512B (zh) | 一种数据修复方法及相关装置 | |
CN102843212B (zh) | 编解码处理方法及装置 | |
CN111858169A (zh) | 一种数据恢复方法、系统及相关组件 | |
CN114116297B (zh) | 一种数据编码方法、装置、设备及介质 | |
Ivanichkina et al. | Mathematical methods and models of improving data storage reliability including those based on finite field theory | |
WO2024146186A1 (zh) | 一种数据存储方法、装置、计算机设备及非易失性可读存储介质 | |
CN104932836B (zh) | 一种提高单写性能的三盘容错编码和解码方法 | |
Huang et al. | An improved decoding algorithm for generalized RDP codes | |
CN110431531B (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 |