CN114510368A - 一种基于rs纠删码的编解码加速方法及系统 - Google Patents
一种基于rs纠删码的编解码加速方法及系统 Download PDFInfo
- Publication number
- CN114510368A CN114510368A CN202210049602.0A CN202210049602A CN114510368A CN 114510368 A CN114510368 A CN 114510368A CN 202210049602 A CN202210049602 A CN 202210049602A CN 114510368 A CN114510368 A CN 114510368A
- Authority
- CN
- China
- Prior art keywords
- decoding
- matrix
- data
- coding
- encoding
- 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
- 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/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
Abstract
本发明提出了一种基于RS纠删码的编解码加速方法及系统,方法包括:初始化配置,获取原始数据并缓存至第一存储单元;在FPGA的编解码单元中,利用RS纠删码算法根据编解码类型进行编码操作或解码操作,并将编解码操作后的数据存储到第二存储单元;在编解码过程中,从第二存储单元中获取原始数据对应的编解码后的数据存放到对应的磁盘中。本发明的方案利用FPGA实现RS纠删码算法进行数据的编解码操作,数据编解码速度快,数据处理能力强,解决了RS纠删码在分布式存储系统中数据编码和数据解码过程中数据处理速度慢的问题,占用服务器CPU资源少。
Description
技术领域
本发明涉及分布式存储领域,特别涉及一种基于RS纠删码的编解码加速方法及系统。
背景技术
随着云存储技术的广泛应用,大量数据存储在云端的服务器上,数据安全至关重要,分布式存储是用来应对大数据量存储的有效手段。分布式存储是一种数据存储技术,通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。
分布式存储系统,是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
在分布式存储系统上存在两种保障数据安全的方式:多副本技术和纠删码技术。多副本技术,简单来说就是一个数据拷贝多份完全一样的副本,分别存放在多个不同节点上,但该种技术所需的存储成本过高,需要大量的存储空间进行存储。而纠删码技术能很好地解决存储成本过高的问题,同时能保证和多副本甚至更高的数据安全保障能力。
纠删码技术相对多副本技术有更高的存储空间利用率,但是数据存储过程中需要进行数据编码,在数据还原时需要进行数据解码,存在不可避免的时间延时,导致数据的编解码速度慢,极大影响存储效率。
此外,传统的纠删码方案通过服务器实现编解码,而服务器的编解码性能取决于CPU的性能。服务器上的CPU不仅需要负责服务器的其它功能运行,还要处理数据的编解码,严重影响服务器CPU的处理效率。
因此,需要一种用于纠删码的加速方案,以解决目前纠删码导致的数据编解码速度慢的问题。
发明内容
有鉴于此,本发明提出了一种基于RS纠删码的编解码加速方法及系统,具体方案如下:
一种基于RS纠删码的编解码加速方法,包括如下:
初始化配置,确定编解码类型和磁盘信息;
获取原始数据并缓存至预设的第一存储单元;
在预设FPGA的编解码单元中,读取原始数据,使预设的RS纠删码算法根据所述编解码类型进行编码操作或解码操作:
若进行编码操作,则基于伽罗华域,通过编码矩阵对所述原始数据进行矩阵运算得到编码数据,并将所述编码数据存储至预设的第二存储单元;
若进行解码操作,则根据所述磁盘信息构建解码矩阵,基于伽罗华域,通过所述解码矩阵对所述原始数据进行矩阵运算得到解码数据,并将所述解码数据缓存至所述第二存储单元;
在编解码过程中,从所述第二存储单元中获取原始数据对应的解码数据或编码数据,并存储到相应的存储单元中。
在一个具体实施例中,所述磁盘信息为原始数据磁盘的磁盘编号;
所述原始数据的获取过程包括:
确定一个或多个原始数据磁盘;
每次从每个所述原始数据磁盘中提取一个字节的数据,并按预设顺序组合成矩阵形式,完成一次原始数据的获取,并缓存至预设的第一存储单元。
在一个具体实施例中,所述编码数据包括原始数据和编码得到的校验数据
所述初始化配置还包括确定所述RS纠删码算法的算法规格;
所述算法规格包括数据盘数量和校验盘数量,根据所述数据盘数量将所述原始数据分别缓存至外部的数据盘,根据所述校验盘数量将所述校验数据分别缓存至外部的校验盘。
在一个具体实施例中,所述编码操作具体包括:
通过查阅第一预设表格,将所述原始数据转换成伽罗华域中对应元素的指数值,得到指数形式的第一编码数值;
根据所述原始数据磁盘的磁盘数量和所述校验盘数量确定编码中间矩阵的尺寸,并从原始矩阵中提取所述编码中间矩阵,拼接所述编码中间矩阵和预设单位矩阵得到编码矩阵;
通过第一编码求模运算完成所述编码矩阵和所述第一编码数值的矩阵乘法运算,得到编码乘法运算结果;
通过查阅第二预设表格,将所述编码乘法运算结果转换成多项式系数值,得到多项式系数形式的第二编码数值;
通过第二编码求模运算完成所述第二编码数值的累加操作,得到编码数据。
在一个具体实施例中,所述解码操作具体包括:
通过查阅第一预设表格,将所述原始数据转换成伽罗华域中对应元素的指数值,得到指数形式的第一解码数值;
根据所述原始矩阵和所述磁盘编号构建动态解码矩阵;
通过查阅第一预设表格,将所述动态解码矩阵转换成伽罗华域中对应元素的指数值,得到指数形式的解码矩阵;
通过第一解码求模运算完成所述解码矩阵和所述第一解码数值的矩阵乘法运算,得到解码乘法运算结果;
通过查阅第二预设表格,将所述解码乘法运算结果转换成多项式系数值,得到多项式系数形式的第二解码数值;
通过第二解码求模运算完成所述第二解码数值的累加操作,得到解码数据。
在一个具体实施例中,“根据所述原始矩阵和所述磁盘编号构建动态解码矩阵”具体包括:
所述原始矩阵中的连续多行与所述原始数据磁盘之间存在对应关系,从所述原始矩阵中删除所述磁盘编号对应的行,得到解码中间矩阵;
计算所述解码中间矩阵的逆矩阵,得到动态解码矩阵。
在一个具体实施例中,所述编码数据的数据位宽为8bit;
所述编码矩阵为柯西矩阵,且柯西矩阵中的元素均为伽罗华域GF(28)中的元素;
所述第一编码求模运算为模255加法运算;
所述第二编码求模运算为模2加法运算。
在一个具体实施例中,计算所述解码中间矩阵的逆矩阵,具体包括:
对所述解码中间矩阵进行矩阵同构,将矩阵元素从GF(28)转换成GF(21)上的元素,得到第一新矩阵;
对所述第一新矩阵进行初等行变换,得到第一新矩阵的逆矩阵;
对所述第一新矩阵的逆矩阵进行矩阵同构,将矩阵元素从GF(21)转换成GF(28)上的元素,并将转换后的矩阵作为所述解码中间矩阵的逆矩阵。
一种基于RS纠删码的编解码加速系统,包括如下:
第一存储单元,用于存储原始数据;
第二存储单元,用于存储对所述原始数据对应的编码数据或解码数据;
FPGA,配置有编解码单元;
在所述编解码单元中,读取原始数据,使预设的RS纠删码算法根据所述编解码类型进行编码操作或解码操作:
若进行编码操作,则基于伽罗华域,通过编码矩阵对所述原始数据进行矩阵运算得到编码数据,并将所述编码数据存储至所述第二存储单元;
若进行解码操作,则根据磁盘信息构建解码矩阵,基于伽罗华域,通过所述解码矩阵对所述原始数据进行矩阵运算得到解码数据,并将所述解码数据缓存至所述第二存储单元;
在编解码过程中,从所述第二存储单元中获取原始数据对应的解码数据或编码数据,并存储到相应的存储单元中。
在一个具体实施例中,所述FPGA还包括:
通信接口,用于与外部服务器建立通信连接以进行数据传输;
接口控制单元,设置有模式寄存器,用于通过配置所述模式寄存器设置编解码类型,将所述原始数据写入所述第一存储单元,以及在存储所述第二存储单元的存储情况并发送至所述外部服务器;
所述第一存储控制单元,用于控制所述第一存储单元的读写操作;
所述第二存储控制单元,用于控制所述第二存储单元的读写操作。
有益效果:本发明提出了一种基于RS纠删码的编解码加速方法及系统,利用FPGA实现RS纠删码算法进行数据的编解码操作,数据编解码速度快,数据处理能力强,解决了RS纠删码在分布式存储系统中数据编码和数据解码过程中数据处理速度慢的问题,占用服务器CPU资源少。
附图说明
图1为本发明实施例的编解码加速方法流程示意图;
图2为本发明实施例的编解码加速系统连接关系示意图;
图3为本发明实施例的原始矩阵示例图;
图4为本发明实施例的编码器原理示意图;
图5为本发明实施例的解码器原理示意图;
图6为本发明实施例的解码矩阵构建原理示意图;
图7为本发明实施例的二进制矩阵表示示意图;
图8为本发明实施例的初等变换流程示意图;
图9为本发明实施例的编解码加速系统结构示意图;
图10为本发明实施例的加速卡结构示意图;
图11为本发明实施例的加速卡数据传输过程示意图。
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
附图标记:1-第一存储单元;2-第二存储单元;3-FPGA;31-通信接口;32-接口控制单元;33-第一存储控制单元;34-第二存储控制单元;35-编解码单元。
具体实施方式
在下文中,将更全面地描述本发明公开的各种实施例。本发明公开可具有各种实施例,并且可在其中做出调整和改变。然而,应理解:不存在将本发明公开的各种实施例限于在此公开的特定实施例的意图,而是应将本发明公开理解为涵盖落入本发明公开的各种实施例的精神和范围内的所有调整、等同物和/或可选方案。
本申请中的二进制矩阵,指的是矩阵元素均为GF(21)上元素的矩阵。同理,十六进制矩阵,指的是矩阵元素均为GF(28)上元素的矩阵。
RS纠删码是基于有限域的一种编码算法,RS code的编解码定义如下:
编码:给定n个数据块(Data block)D1、D2……Dn,和一个正整数m,RS根据n个数据块生成m个编码块(Code block),C1、C2……Cm。
解码:对于任意的n和m,从n个原始数据块和m个编码块中任取n块就能解码出原始数据,即RS最多容纳m个数据块或者编码块同时丢失。
GF(2w)域有2w个值,每个值都对应一个低于w次的多项式,这样域上的四则运算就转换为多项式空间的运算。第一预设表和的第二预设表都是关于伽罗华域的域上元素表,是伽罗华域上的所有元素对应的多项式系数映射。查阅第一预设表目的是获取多项式系数值对应的元素指数值,查阅第二预设表格,目的是获取元素指数值对应的多项式系数值。
示例性的,GF(28)的域上元素表如表1所示。
表1 GF(28)的域上元素表
在本发明公开的各种实施例中使用的术语仅用于描述特定实施例的目的并且并非意在限制本发明公开的各种实施例。如在此所使用,单数形式意在也包括复数形式,除非上下文清楚地另有指示。除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明公开的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明公开的各种实施例中被清楚地限定。
实施例1
本发明实施例1公开了一种基于RS纠删码的编解码加速方法,通过用FPGA的逻辑电路实现RS纠删码算法,利用FPGA的高性能实现数据编解码的加速。编解码加速方法流程框图说明书附图1所示,具体方案如下:
一种基于RS纠删码的编解码加速方法,包括如下步骤:
101、初始化配置,确定编解码类型和磁盘信息;
102、获取原始数据并缓存至预设的第一存储单元;
103在预设FPGA的编解码单元中,读取原始数据,使预设的RS纠删码算法根据编解码类型进行编码操作或解码操作:
若进行编码操作,则基于伽罗华域,通过编码矩阵对原始数据进行矩阵运算得到编码数据,并将编码数据存储至预设的第二存储单元;
若进行解码操作,则根据磁盘信息构建解码矩阵,基于伽罗华域,通过解码矩阵对原始数据进行矩阵运算得到解码数据,并将解码数据缓存至第二存储单元;
104、在编解码过程中,从第二存储单元中获取原始数据对应的解码数据或编码数据,并存储到相应的存储单元中。
本实施例提供的一种基于RS纠删码的编解码加速方法,适用于包括FPGA、第一存储单元和第二存储单元的编解码加速系统中。编解码加速系统与外部设备的连接关系如说明书附图2所示。本实施例的编解码加速方法利用FPGA实现RS纠删码算法进行数据的编解码操作,占用服务器CPU资源少,且数据编解码速度快,数据处理能力强。
具体地,在启动数据编解码前,需要进行初始化配置。初始化时,需获取原始数据磁盘和校验盘的磁盘信息,如原始数据磁盘的磁盘编号。确定RS纠删码算法的规格,算法规格包括数据盘数量和校验盘数量。示例性的,算法的默认规格为6+3,即6个数据盘,3个校验盘。同时配置RS模式寄存器设置各计算通道用于编码操作或是解码操作。
在本实施例中,磁盘信息为原始数据磁盘的磁盘编号,原始数据磁盘即为待处理数据位于的磁盘,通常位于服务器或PC端。原始数据即为待处理数据,包括待编码数据和待解码数据。需要说明的是,待解码数据必须是采用本实施例的方案进行编码后的数据,才能采用本实施例的方案进行解码。
其中,原始数据的获取过程包括:确定一个或多个原始数据磁盘;每次从每个原始数据磁盘中提取一个字节的数据,并按预设顺序组合成矩阵形式,完成一次原始数据的获取,并缓存至预设的第一存储单元。原始数据磁盘都配置有编号,根据原始数据磁盘构建原始矩阵。原始矩阵中的连续多行与原始数据磁盘之间存在对应关系,原始矩阵的每一行都对应有原始数据磁盘的磁盘编号。假设有6个原始数据磁盘,每个磁盘取一个字节数据拼成6个字节顺序,相当于构建1*6的矩阵,每次都是各个原始数据磁盘中各取一个字节拼接。
在本实施例中,编码数据的位宽为8bit,构造的原始矩阵大小为8*16,元素均为十六进制。原始矩阵可按柯西矩阵规则定义,说明书附图3提供了一种原始矩阵G的示例图。
具体地,编码数据包括原始数据和编码得到的校验数据。原始数据会存储到外部数据盘,校验数据会存储到外部校验盘。数据盘和校验盘均位于服务器中,当出现存放原始数据的磁盘损坏数据丢失了之后,利用剩余的原始数据磁盘+之前生成的校验数据磁盘经过解码计算后可以还原出丢失的原始数据。校验盘相当于数据备份,用来解码还原数据。编码就是生成校验盘的过程,相当于生成磁盘备份数据,只是不需要1:1备份。假设存在6个原始数据磁盘,需要生成3个校验盘,当原始数据磁盘中任意3个磁盘损坏,则利用剩余的3个原始数据磁盘加上3个校验盘就可以还原出6个原始数据磁盘中的数据。
在本实施例中,编解码单元中包括编码器和解码器。通过编码器实现编码操作,通过解码器实现解码操作。编码器的实现原理如说明书附图4所示。解码器的实现原理如说明书附图5所示。
编码操作具体包括:
S11、通过查阅第一预设表格,将原始数据转换成伽罗华域中对应元素的指数值,得到指数形式的第一编码数值。在附图4中,表A即为第一预设表格。
S12、根据原始数据磁盘的磁盘数量和校验盘数量确定编码中间矩阵的尺寸,并从原始矩阵中提取编码中间矩阵,拼接编码中间矩阵和预设单位矩阵得到编码矩阵;
S13、通过第一编码求模运算完成编码矩阵和第一编码数值的矩阵乘法运算,得到编码乘法运算结果;
S14、通过查阅第二预设表格,将编码乘法运算结果转换成多项式系数值,得到多项式系数形式的第二编码数值;在附图4中,表B即为第二预设表格。
S15、通过第二编码求模运算完成第二编码数值的累加操作,得到编码数据。
优选地,在本实施例中,编码数据位宽为8bit(1个字节),编码矩阵为柯西矩阵,且柯西矩阵中的元素均为伽罗华域GF(28)中的元素,数值范围在0-255之间。
因此,在S11中,通过查阅第一预设表格,将普通数据转换成伽罗华域上元素的指数值,得到第一编码数值,用于下一步矩阵运算。例如数值0x74(十六进制表示),表示的多项式系数为0111_0100,通过查表0x74对应的指数值为10(十进制表示)。
S12主要用于获取编码矩阵,编码矩阵具体为柯西生成矩阵,大小为16*16个字节,且存放于FPGA内部ROM中。编码矩阵的大小是由原始数据磁盘的磁盘数量和校验盘的数量决定的。编码矩阵由两部分构成,其中一部分为从原始矩阵中抽取的编码中间矩阵,另一部分为单位矩阵,单位矩阵能够保证原始数据相乘能够得到原始数据。编码中间矩阵的列数为原始数据磁盘的磁盘数量,行数为校验盘的数量。例如,原始数据磁盘是6个,想要生成3个校验盘,则只要提取原始矩阵中的3*6矩阵作为编码中间矩阵即可。
S13为编码矩阵和第一编码数值的乘法运算。优选地,第一编码求模运算为模255加法运算。本实施例将普通域上的原始数据先转成伽罗华域上的元素,再用模255加法运算替代矩阵计算中的乘法运算,得到编码乘法运算结果,大大降低了计算的复杂度,缩减了压缩时间。。
S14通过查表将乘法运算结果转换成多项式系数值,使乘法运算结果从伽罗华域上转回普通域上数据,用于S15的累加操作。经过S15的累加操作,将前一个第二编码数值与当前的第二编码数值相加,即可得到原始数据对应的编码数据。
本实施例通过直接查表的方式实现数据在普通域和伽罗华域之间的转换,极大降低了计算复杂度,大大节省了计算时间,提升了编码效率。
解码操作具体包括:
S21、通过查阅第一预设表格,将原始数据转换成伽罗华域中对应元素的指数值,得到指数形式的第一解码数值;
S22、根据原始矩阵和磁盘编号构建动态解码矩阵;
S23、通过查阅第一预设表格,将动态解码矩阵转换成伽罗华域中对应元素的指数值,得到指数形式的解码矩阵;在附图5中,表A即为第一预设表格。
S24、通过第一解码求模运算完成解码矩阵和第一解码数值的矩阵乘法运算,得到解码乘法运算结果;
S25、通过查阅第二预设表格,将解码乘法运算结果转换成多项式系数值,得到多项式系数形式的第二解码数值;在附图5中,表B即为第二预设表格.
S26、通过第二解码求模运算完成第二解码数值的累加操作,得到解码数据。
在S21中,通过查阅第一预设表格,将普通数据转换成伽罗华域上元素的指数值,得到第一解码数值,用于下一步矩阵运算。例如数值0x74(十六进制表示),表示的多项式系数为0111_0100,通过查表0x74对应的指数值为10(十进制表示)。
S22根据预存于FPGA中的原始矩阵与磁盘编号生成的解码中间矩阵。具体包括:原始矩阵中的连续多行与原始数据磁盘之间存在对应关系,从原始矩阵中删除磁盘编号对应的行,得到解码中间矩阵;计算解码中间矩阵的逆矩阵,得到动态解码矩阵。解码中间矩阵的大小就是原始数据磁盘的磁盘数量*原始数据磁盘的磁盘数量
在实际应用中,当原始数据磁盘损坏,以致需要还原数据的时候,把原始矩阵中对应的原始数据盘编号的行删掉,从下面补充新的行,得到一个n*n的矩阵,n大小就是原始数据盘数量,编码矩阵中多余的行去掉,然后算它的逆矩阵。
解码中间矩阵由原始矩阵根据用户设置重新组成新的矩阵,先根据解码需要从原始矩阵中抽取部分内容得到的矩阵,然后计算解码中间矩阵的逆矩阵,得到动态解码矩阵。原理如说明书附图6所示。在本实施例中,每个原始磁盘对应原始矩阵中的1行数据。在图6中,node表示磁盘编号,node2缺失,则摘除原始矩阵中node2对应的矩阵行后,得到解码中间矩阵。N个node只要N行矩阵行,row2对应的node2损坏并被剔除后,则顺延将第N+1行补充到矩阵中。由于每次解码计算,需要解码的数据盘都是随机的,与之对应的解码矩阵也需要根据用户设置来实时计算,解码矩阵的计算速度和方法会影响到解码效率。
动态解码矩阵获取的关键是计算解码中间矩阵的逆矩阵,本实施例对逆矩阵的计算过程进行了优化,大大缩减了逆矩阵的计算时间。逆矩阵的计算过程包括:
对解码中间矩阵进行矩阵同构,将矩阵元素从GF(28)转换成GF(21)上的元素,得到第一新矩阵;第一新矩阵横向拼接一个单位矩阵得到第二新矩阵;对第二新矩阵进行初等列变化得到第一新矩阵的逆矩阵;对第一新矩阵的逆矩阵进行矩阵同构将矩阵元素从GF(21)转换成GF(28)上的元素,并将转换后的矩阵作为解码中间矩阵的逆矩阵。解码中间矩阵的逆矩阵即为动态解码矩阵。
本实施例利用FPGA来简单快速计算伽罗华域上元素矩阵的逆矩阵。计算逆矩阵的原理是进行矩阵的初等行变换,但是初等行变换需要进行大量的乘加运算,FPGA在计算过程中需要不断查表来进行伽罗华域上数据转换,计算过程过于复杂。因此,本实施例在实现的过程中对解码中间矩阵进行了优化。
优化原理具体为:假设p(X)是GF2[X]中度为L的不可约多项式,那么GF(2L)与GF2[X]/p(x)(GF2[X]上的多项式模p(x))同构。所以GF(2L)上的任意一个元素就能被多项式f(x)表示,则向量(f0,f1...fL-1)称为多项式f(x)的系数向量,fi∈GF(2)。
例如,对于域GF(23)中的元素,均可以用系数向量来表示,对于5∈GF(23),5对应的系数向量为(1,0,1)。
定义:对于任意元素f∈GF(2L),定义Γ(f)是一个LxL的二进制矩阵,其中第i列为xi*f mod p(x)的系数向量。
其二进制矩阵表示示例图如说明书附图7所示:
例如,对于GF(23)中的元素a3,同构的第0列为a0*a3 mod p(a)=a3,第1列为a1*a3mod p(a)=a4,第2列为a2*a3 mod p(a)=a5。
经过优化后,原本含有256种不同数值元素的解码中间矩阵转换成了只有0和1两种元素的二进制矩阵。一旦将数据转换成二进制矩阵后,便可以使用初等变换来计算逆矩阵,而二进制矩阵的元素只有0和1,所以初等变换只需要计算模2加减法即可,在FPGA只需要进行最简单的异或逻辑操作。
初等变换流程图如说明书附图8所示。具体流程如下:
输入矩阵后,获取第i列第i行的元素数据,判断该数据是否为1。
若该数据为1,则将第i列的元素进行轮询,逐个判断第i列的元素是否为1:若为1,即i≠j,则与第i行数据进行异或逻辑处理并写入到第j行中;若不为1,即i=j,则进行第i列下一行的判断。以此完成第i列的所有元素判断。
若该数据不为1,则找到第i列中一个为1的元素所在的行j,将第i行与第j行的数据进行异或逻辑处理并写入到第i行,逐个判断第i列的元素是否为1:若为1,即i≠j,则与第i行数据尽心异或逻辑处理并写入到第j行中;若不为1,即i=j,则进行第i列下一行的判断。以此完成第i列的所有元素判断。
完成所有列的初等变换,得到的矩阵即为逆矩阵。
然后再按顺序检查第0列其他元素值是否为0,不为0则将对应的行与关键元素所在的第0行进行异或运算。变换如下:
第0列除了关键元素为1外其他元素均为0,第0列的变换完成。
在构造的矩阵进行初等变换的时候,另一个单位矩阵同步进行完全相同变换。当解码中间矩阵完成变换后,则单位矩阵经过相同变换后最终得到的矩阵即解码中间矩阵的逆矩阵。
得到所述解码中间矩阵的逆矩阵后,还包括:逆矩阵的大小为8N*8N,以8*8矩阵为单位将逆矩阵分解为N个第一矩阵;将每个第一矩阵的第一列转换为一个数值,构建得到N*N大小的矩阵,以实现将逆矩阵中的元素转换为伽罗华域GF(28)中的元素。
具体为:计算出二进制矩阵的逆矩阵后需要将矩阵元素转换成GF(28)域上的元素,以减小后面的解码计算步骤。根据矩阵同构原理,可以很容易将一个8x8的二进制矩阵转换成GF(28)域上的元素。
计算出来的逆矩阵是GF(28)的矩阵同构后的二进制矩阵,所以要将它分解为8x8为单位的二进制矩阵,每个8x8的小矩阵可以转换成一个数值。在转换的时候只要提取8x8矩阵的第一列即可。得到的二进制矩阵大小为8Nx8N,每8行为一组,每8列提取一个数据,最终转换成NxN大小的矩阵。
由于转换后的矩阵元素是GF(28)元素的多项式系数值,需要通过查表转换成域上元素的指数值。用于S24的矩阵元素乘法运算。
S24为解码矩阵和第一解码数值的乘法运算。优选地,第一解码求模运算为模255加法运算。本实施例将普通域上的原始数据先转成伽罗华域上的元素,再用模255加法运算替代矩阵计算中的乘法运算,得到解码乘法运算结果。
S25通过查表将乘法运算结果转换成多项式系数值,使乘法运算结果从伽罗华域上转回普通域上数据,用于S26的累加操作。经过S26的累加操作,将前一个第二解码数值与当前的第二解码数值相加,即可得到原始数据对应的解码数据。
本实施例的编解码加速方法适用于专门的编解码加速系统,编解码加速系统的结构如说明书附图9所示。附图10提供了一种加速板卡,是编解码加速系统的具体细化,将本实施例的编解码加速方法集成到加速板卡上。在具体应用中,本实施例的方案在单个加速板卡上最大支持16个通道的编码/解码,每个通道300MB/s的处理能力,整个加速板卡可以实现4.8GB/s的编解码处理能力。一个服务器或PC端上可以通过多块加速板卡并行处理,使数据处理能力成倍数提升,且仅占用较少的CPU资源。
本实施例提供了一种基于RS纠删码的编解码加速方法,利用FPGA实现RS纠删码算法进行数据的编解码操作,数据编解码速度快,数据处理能力强,解决了RS纠删码在分布式存储系统中数据编码和数据解码过程中数据处理速度慢的问题,占用服务器CPU资源少。
实施例2
本发明实施例2公开了一种基于RS纠删码的编解码加速系统,实施例1的一种加速方法系统化,系统的具体结构如说明书附图9所示,具体方案如下:
一种基于RS纠删码的编解码加速系统,包括如下:
第一存储单元1,用于存储原始数据;
第二存储单元2,用于存储对原始数据对应的编码数据或解码数据;
FPGA3,配置有编解码单元35、通信接口31和接口控制单元32。在附图9中,还包括第一存储控制单元33和第二存储控制单元34。
说明书附图10提供了一种编解码加速系统,具体为一种加速板卡。,第一存储单元1和第二存储单元2选用DDR内存芯片作为存储单元,用于缓存少量数据。加速板卡中数据传输的过程如说明书附图11所示。
在编解码单元35中,读取原始数据,使预设的RS纠删码算法根据编解码类型进行编码操作或解码操作:
若进行编码操作,则基于伽罗华域,通过编码矩阵对原始数据进行矩阵运算得到编码数据,并将编码数据存储至第二存储单元;
若进行解码操作,则根据磁盘信息构建解码矩阵,基于伽罗华域,通过解码矩阵对原始数据进行矩阵运算得到解码数据,并将解码数据缓存至第二存储单元。
在编解码过程中,从第二存储单元2中获取原始数据对应的解码数据或编码数据,并存储到相应的存储单元中。
通信接口31,用于与外部服务器建立通信连接以进行数据传输。在本实施例中,通信接口选用PCIE接口作为外部设备和加速系统之间的数据传输接口,具体如附图10所示。
接口控制单元32,设置有模式寄存器,用于通过配置模式寄存器设置编解码类型,将原始数据写入第一存储单元,以及在存储第二存储单元的存储情况并发送至外部服务器。在本实施例中,选用PCIE控制器作为接口控制单元,控制PCIE接口进行数据传输。在附图10中,PCIE控制器包括DDR写入单元、DDR读取单元和寄存器。
第一存储控制单元33,用于控制第一存储单元1的读写操作。
第二存储控制单元34,用于控制第二存储单元2的读写操作。
在本实施例中,选用DDR内存控制器控制DDR存储单元,具体如附图10所示。
本实施例公开了一种基于RS纠删码的编解码加速系统,将实施例1的加速方法系统化,使其更具实用性。
本发明提出了一种基于RS纠删码的编解码加速方法及系统,利用FPGA实现RS纠删码算法进行数据的编解码操作,数据编解码速度快,数据处理能力强,解决了RS纠删码在分布式存储系统中数据编码和数据解码过程中数据处理速度慢的问题,占用服务器CPU资源少。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本发明序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (10)
1.一种基于RS纠删码的编解码加速方法,其特征在于,包括如下:
初始化配置,确定编解码类型和磁盘信息;
获取原始数据并缓存至预设的第一存储单元;
在预设FPGA的编解码单元中,读取原始数据,使预设的RS纠删码算法根据所述编解码类型进行编码操作或解码操作:
若进行编码操作,则基于伽罗华域,通过编码矩阵对所述原始数据进行矩阵运算得到编码数据,并将所述编码数据存储至预设的第二存储单元;
若进行解码操作,则根据所述磁盘信息构建解码矩阵,基于伽罗华域,通过所述解码矩阵对所述原始数据进行矩阵运算得到解码数据,并将所述解码数据缓存至所述第二存储单元;
在编解码过程中,从所述第二存储单元中获取原始数据对应的解码数据或编码数据,并存储到相应的存储单元中。
2.根据权利要求1所述的编解码加速方法,其特征在于,所述磁盘信息为原始数据磁盘的磁盘编号;
所述原始数据的获取过程包括:
确定一个或多个原始数据磁盘;
每次从每个所述原始数据磁盘中提取一个字节的数据,并按预设顺序组合成矩阵形式,完成一次原始数据的获取,并缓存至预设的第一存储单元。
3.根据权利要求2所述的编解码加速方法,其特征在于,所述编码数据包括原始数据和编码得到的校验数据
所述初始化配置还包括确定所述RS纠删码算法的算法规格;
所述算法规格包括数据盘数量和校验盘数量,根据所述数据盘数量将所述原始数据分别缓存至外部的数据盘,根据所述校验盘数量将所述校验数据分别缓存至外部的校验盘。
4.根据权利要求3所述的编解码加速方法,其特征在于,所述编码操作具体包括:
通过查阅第一预设表格,将所述原始数据转换成伽罗华域中对应元素的指数值,得到指数形式的第一编码数值;
根据所述原始数据磁盘的磁盘数量和所述校验盘数量确定编码中间矩阵的尺寸,并从原始矩阵中提取所述编码中间矩阵,拼接所述编码中间矩阵和预设单位矩阵得到编码矩阵;
通过第一编码求模运算完成所述编码矩阵和所述第一编码数值的矩阵乘法运算,得到编码乘法运算结果;
通过查阅第二预设表格,将所述编码乘法运算结果转换成多项式系数值,得到多项式系数形式的第二编码数值;
通过第二编码求模运算完成所述第二编码数值的累加操作,得到编码数据。
5.根据权利要求3所述的编解码加速方法,其特征在于,所述解码操作具体包括:
通过查阅第一预设表格,将所述原始数据转换成伽罗华域中对应元素的指数值,得到指数形式的第一解码数值;
根据所述原始矩阵和所述磁盘编号构建动态解码矩阵;
通过查阅第一预设表格,将所述动态解码矩阵转换成伽罗华域中对应元素的指数值,得到指数形式的解码矩阵;
通过第一解码求模运算完成所述解码矩阵和所述第一解码数值的矩阵乘法运算,得到解码乘法运算结果;
通过查阅第二预设表格,将所述解码乘法运算结果转换成多项式系数值,得到多项式系数形式的第二解码数值;
通过第二解码求模运算完成所述第二解码数值的累加操作,得到解码数据。
6.根据权利要求5所述的编解码加速方法,其特征在于,“根据所述原始矩阵和所述磁盘编号构建动态解码矩阵”具体包括:
所述原始矩阵中的连续多行与所述原始数据磁盘之间存在对应关系,从所述原始矩阵中删除所述磁盘编号对应的行,得到解码中间矩阵;
计算所述解码中间矩阵的逆矩阵,得到动态解码矩阵。
7.根据权利要求4所述的编解码加速方法,其特征在于,所述编码数据的数据位宽为8bit;
所述编码矩阵为柯西矩阵,且柯西矩阵中的元素均为伽罗华域GF(28)中的元素;
所述第一编码求模运算为模255加法运算;
所述第二编码求模运算为模2加法运算。
8.根据权利要求6所述的编解码加速方法,其特征在于,计算所述解码中间矩阵的逆矩阵,具体包括:
对所述解码中间矩阵进行矩阵同构,将矩阵元素从GF(28)转换成GF(21)上的元素,得到第一新矩阵;
对所述第一新矩阵进行初等行变换,得到第一新矩阵的逆矩阵;
对所述第一新矩阵的逆矩阵进行矩阵同构将矩阵元素从GF(21)转换成GF(28)上的元素,并将转换后的矩阵作为所述解码中间矩阵的逆矩阵。
9.一种基于RS纠删码的编解码加速系统,其特征在于,包括如下:
第一存储单元,用于存储原始数据;
第二存储单元,用于存储对所述原始数据对应的编码数据或解码数据;
FPGA,配置有编解码单元;
在所述编解码单元中,读取原始数据,使预设的RS纠删码算法根据所述编解码类型进行编码操作或解码操作:
若进行编码操作,则基于伽罗华域,通过编码矩阵对所述原始数据进行矩阵运算得到编码数据,并将所述编码数据存储至所述第二存储单元;
若进行解码操作,则根据磁盘信息构建解码矩阵,基于伽罗华域,通过所述解码矩阵对所述原始数据进行矩阵运算得到解码数据,并将所述解码数据缓存至所述第二存储单元;
在编解码过程中,从所述第二存储单元中获取原始数据对应的解码数据或编码数据,并存储到相应的存储单元中。
10.根据权利要求9所述的编解码加速系统,其特征在于,所述FPGA还包括:
通信接口,用于与外部服务器建立通信连接以进行数据传输;
接口控制单元,设置有模式寄存器,用于通过配置所述模式寄存器设置编解码类型,将所述原始数据写入所述第一存储单元,以及在存储所述第二存储单元的存储情况并发送至所述外部服务器;
所述第一存储控制单元,用于控制所述第一存储单元的读写操作;
所述第二存储控制单元,用于控制所述第二存储单元的读写操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210049602.0A CN114510368A (zh) | 2022-01-17 | 2022-01-17 | 一种基于rs纠删码的编解码加速方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210049602.0A CN114510368A (zh) | 2022-01-17 | 2022-01-17 | 一种基于rs纠删码的编解码加速方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114510368A true CN114510368A (zh) | 2022-05-17 |
Family
ID=81549599
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210049602.0A Pending CN114510368A (zh) | 2022-01-17 | 2022-01-17 | 一种基于rs纠删码的编解码加速方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114510368A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115473610A (zh) * | 2022-11-11 | 2022-12-13 | 蓝象智联(杭州)科技有限公司 | 一种用于安全多方计算的数据编解码方法及求交方法 |
CN116954523A (zh) * | 2023-09-20 | 2023-10-27 | 苏州元脑智能科技有限公司 | 一种存储系统、数据存储方法、数据读取方法和存储介质 |
-
2022
- 2022-01-17 CN CN202210049602.0A patent/CN114510368A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115473610A (zh) * | 2022-11-11 | 2022-12-13 | 蓝象智联(杭州)科技有限公司 | 一种用于安全多方计算的数据编解码方法及求交方法 |
CN115473610B (zh) * | 2022-11-11 | 2023-03-24 | 蓝象智联(杭州)科技有限公司 | 一种用于安全多方计算的数据编解码方法及求交方法 |
CN116954523A (zh) * | 2023-09-20 | 2023-10-27 | 苏州元脑智能科技有限公司 | 一种存储系统、数据存储方法、数据读取方法和存储介质 |
CN116954523B (zh) * | 2023-09-20 | 2024-01-26 | 苏州元脑智能科技有限公司 | 一种存储系统、数据存储方法、数据读取方法和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA1128664A (en) | Memory, incorporating error detection and correction | |
CN105453466B (zh) | 极化码的速率匹配方法及装置 | |
CN114510368A (zh) | 一种基于rs纠删码的编解码加速方法及系统 | |
CN104079370A (zh) | 信道编译码方法及装置 | |
CA3177662C (en) | Data-storage method and apparatus, and data-recovery method and apparatus | |
EP2570925A1 (en) | Method of exact repair of pairs of failed storage nodes in a distributed data storage system and corresponding device | |
WO2012008921A9 (en) | Data encoding methods, data decoding methods, data reconstruction methods, data encoding devices, data decoding devices, and data reconstruction devices | |
CN114816837B (zh) | 一种纠删码融合方法、系统、电子设备及存储介质 | |
CN112000512B (zh) | 一种数据修复方法及相关装置 | |
TW202011189A (zh) | 分散式存儲系統、方法和裝置 | |
CN113505019A (zh) | 一种纠删码数据及校验恢复方法、装置、设备及可读介质 | |
CN111858169A (zh) | 一种数据恢复方法、系统及相关组件 | |
TW202001920A (zh) | 在資料儲存系統中用於改善資料回復之方法及裝置 | |
CN105808170A (zh) | 一种能够以最小磁盘读写修复单磁盘错误的raid6编码方法 | |
KR102426047B1 (ko) | 폴라 부호 복호화 장치 및 방법 | |
US7719442B2 (en) | Multi-mode multi-parallelism data exchange method and device thereof | |
EP4057515A1 (en) | Devices and methods for encoding and decoding | |
CN107153661A (zh) | 一种基于hdfs系统的数据的存储、读取方法及其装置 | |
CN107665152B (zh) | 一类纠删码的译码方法 | |
CN106911793B (zh) | I/o优化的分布式存储数据修复方法 | |
CN110287716B (zh) | 数据存储方法及装置 | |
CN112000509B (zh) | 一种基于向量指令的纠删码编码方法、系统及装置 | |
CN113986147A (zh) | 一种raid 6硬件加速电路结构和raid 6硬件加速实现方法 | |
CN112015325B (zh) | 一种生成解码矩阵的方法、解码方法和对应装置 | |
CN116662063B (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 |