一种RAID编码电路及编码方法转让专利

申请号 : CN202110551258.0

文献号 : CN113297000B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴睿振黄萍陈静静王凛

申请人 : 山东云海国创云计算装备产业创新中心有限公司

摘要 :

本申请公开了一种RAID编码电路及编码方法,所述电路包括:第一参数模块,用于获取当前RAID模式下待编码数据的当前目标数据条带对应的第一校验参数,并利用第一校验参数和当前目标数据条带确定第一参数运算后数据;RAID 6模式下的第一校验参数为基于范德蒙式RS编码关系确定的第一校验码对应的编码参数,RAID 5模式下的第一校验参数为1;第一编码模块,用于对从第一校验码存储位置读取的当前第一校验码以及当前第一参数运算后数据进行编码运算,得到新的第一校验码,并将新的第一校验码存储至第一校验码存储位置,直到基于待编码数据的最后一个目标数据条带确定出待编码数据对应的最终的第一校验码。能够在实现RAID 5的前提下,快速且以较低面积实现RAID 6。

权利要求 :

1.一种RAID编码电路,其特征在于,包括:

第一参数模块,用于获取当前RAID模式下待编码数据的当前目标数据条带对应的第一校验参数,并利用所述第一校验参数和当前目标数据条带进行乘法运算,确定第一参数运p算后数据;其中,RAID 6模式下的第一校验参数是基于公式 确定的,α为基于范q德蒙式RS编码关系确定的第一校验码对应的编码系数值,α为基于范德蒙式RS编码关系确x定的第二校验码对应的编码系数值,α为基于范德蒙式RS编码关系确定的当前目标数据条带对应的编码系数值, 表示异或运算,RAID 5模式下的第一校验参数为1;

第一编码模块,用于对从第一校验码存储位置读取的当前第一校验码以及当前第一参数运算后数据进行异或运算,得到新的第一校验码,并将新的第一校验码存储至所述第一校验码存储位置,直到基于所述待编码数据的最后一个目标数据条带确定出所述待编码数据对应的最终的第一校验码。

2.根据权利要求1所述的RAID编码电路,其特征在于,还包括:数据条带分割模块,用于将所述待编码数据分割为预设数量个数据条带;

伽罗华域转换模块,用于将每个数据条带转换为伽罗华域数据,得到每个数据条带对应的所述目标数据条带。

3.根据权利要求1所述的RAID编码电路,其特征在于,还包括:第二参数模块,用于获取RAID 6模式下待编码数据的当前目标数据条带对应的第二校验参数,并利用所述第二校验参数和当前目标数据条带确定第二参数运算后数据;其中,RAID 6对应的第二校验参数为基于范德蒙式RS编码关系确定的第二校验码对应的编码参数;

第二编码模块,用于对从第二校验码存储位置读取的当前第二校验码以及当前第二参数运算后数据进行编码运算,得到新的第二校验码,并将新的第二校验码存储至所述第二校验码存储位置。

4.根据权利要求1所述的RAID编码电路,其特征在于,

所述第一参数模块,还用于获取RAID 6下待编码数据的当前目标数据条带对应的第二校验参数,并利用所述第二校验参数和当前目标数据条带确定第二参数运算后数据;其中,RAID 6对应的第二校验参数为基于范德蒙式RS编码关系确定的第二校验码对应的编码参数;

相应的,所述第一编码模块,还用于对从第二校验码存储位置读取的当前第二校验码以及当前第二参数运算后数据进行编码运算,得到新的第二校验码,并将新的第二校验码存储至所述第二校验码存储位置。

5.根据权利要求1所述的RAID编码电路,其特征在于,还包括:数据缓存模块,用于将所述待编码数据的目标数据条带存入缓存;

数据读取模块,用于从所述缓存中读取所述目标数据条带,同时分别传输至所述目标数据条带对应的数据存储位置以及所述第一参数模块。

6.根据权利要求3所述的RAID编码电路,其特征在于,所述第二参数模块具体用于:基于公式 确定RAID 6模式下待编码数据的当前目标数据条带对应的第二校验参数;

p q

其中,α为基于范德蒙式RS编码关系确定的所述第一校验码对应的编码系数值,α为基x于范德蒙式RS编码关系确定的第二校验码对应的编码系数值,α为基于范德蒙式RS编码关系确定的当前目标数据条带对应的编码系数值, 表示异或运算。

7.一种RAID编码方法,其特征在于,包括:

获取当前RAID模式下待编码数据的当前目标数据条带对应的第一校验参数,并利用所述第一校验参数和当前目标数据条带进行乘法运算,确定第一参数运算后数据;其中,RAID p

6模式下的第一校验参数是基于公式 确定的,α为基于范德蒙式RS编码关系确定q的第一校验码对应的编码系数值,α为基于范德蒙式RS编码关系确定的第二校验码对应的x编码系数值,α为基于范德蒙式RS编码关系确定的当前目标数据条带对应的编码系数值,表示异或运算,RAID 5模式下的第一校验参数为1;

对从第一校验码存储位置读取的当前第一校验码以及当前第一参数运算后数据进行异或运算,得到新的第一校验码,并将新的第一校验码存储至所述第一校验码存储位置,直到基于所述待编码数据的最后一个目标数据条带确定出所述待编码数据对应的最终的第一校验码。

8.根据权利要求7所述的RAID编码方法,其特征在于,还包括:将所述待编码数据分割为预设数量个数据条带;

将每个数据条带转换为伽罗华域数据,得到每个数据条带对应的目标数据条带。

说明书 :

一种RAID编码电路及编码方法

技术领域

[0001] 本申请涉及存储技术领域,特别涉及一种RAID编码电路及编码方法。

背景技术

[0002] 伴随着通讯技术和网络科技的迅速发展,数字化信息呈指数爆炸式增长,数据存储技术也因此迎来了巨大的挑战。存储系统中数据的可靠性问题以及存储系统的能耗问题越来越被人们所关注。现如今面对如此庞大的数据规模,存储系统中数据的可靠性和存储系统中包含的组件数量成反比关系,即存储系统组件数越多,那么存储系统中数据的可靠性就越低。在大规模存储系统中,磁盘故障造成的数据可靠性下降是相当严重的问题,对此人们展开了相关容错技术的研究。RAID(Redundant Arrays of Independent Disks,即独立冗余磁盘阵列)技术应运而生,采用RAID存储技术,可以大大提高存储容量,提高系统输入输出的请求处理能力并且通过数据的分布式存储技术,并行访问手段和信息冗余技术提高数据的可靠性。目前,RAID可以被分为不同的等级:RAID 0,1,5,6,10,在实际电路中一般实现RAID 6都需要在实现RAID 5的前提下进行,因此如何在实现RAID 5的前提下,快速且以较低面积实现RAID6是需要解决的问题。

发明内容

[0003] 有鉴于此,本申请的目的在于提供一种RAID编码电路及编码方法,能够在实现RAID 5的前提下,快速且以较低面积实现RAID 6。其具体方案如下:
[0004] 第一方面,本申请公开了一种RAID编码电路,包括:
[0005] 第一参数模块,用于获取当前RAID模式下待编码数据的当前目标数据条带对应的第一校验参数,并利用所述第一校验参数和当前目标数据条带确定第一参数运算后数据;其中,RAID 6模式下的第一校验参数为基于范德蒙式RS编码关系确定的第一校验码对应的编码参数,RAID 5模式下的第一校验参数为1;
[0006] 第一编码模块,用于对从第一校验码存储位置读取的当前第一校验码以及当前第一参数运算后数据进行编码运算,得到新的第一校验码,并将新的第一校验码存储至所述第一校验码存储位置,直到基于所述待编码数据的最后一个目标数据条带确定出所述待编码数据对应的最终的第一校验码。
[0007] 可选的,还包括:
[0008] 数据条带分割模块,用于将所述待编码数据分割为预设数量个数据条带;
[0009] 伽罗华域转换模块,用于将每个数据条带转换为伽罗华域数据,得到每个数据条带对应的所述目标数据条带;
[0010] 相应的,所述第一编码模块,用于对从第一校验码存储位置读取的当前第一校验码以及当前第一参数运算后数据进行异或运算,得到新的第一校验码,并将新的第一校验码存储至所述第一校验码存储位置。
[0011] 可选的,还包括:
[0012] 第二参数模块,用于获取RAID 6模式下待编码数据的当前目标数据条带对应的第二校验参数,并利用所述第二校验参数和当前目标数据条带确定第二参数运算后数据;其中,RAID 6对应的第二校验参数为基于范德蒙式RS编码关系确定的第二校验码对应的编码参数;
[0013] 第二编码模块,用于对从第二校验码存储位置读取的当前第二校验码以及当前第二参数运算后数据进行编码运算,得到新的第二校验码,并将新的第二校验码存储至所述第二校验码存储位置。
[0014] 可选的,所述第一参数模块,还用于获取RAID 6下待编码数据的当前目标数据条带对应的第二校验参数,并利用所述第二校验参数和当前目标数据条带确定第二参数运算后数据;其中,RAID 6对应的第二校验参数为基于范德蒙式RS编码关系确定的第二校验码对应的编码参数;
[0015] 相应的,所述第一编码模块,还用于对从第二校验码存储位置读取的当前第二校验码以及当前第二参数运算后数据进行编码运算,得到新的第二校验码,并将新的第二校验码存储至所述第二校验码存储位置。
[0016] 可选的,还包括:
[0017] 数据缓存模块,用于将所述待编码数据的目标数据条带存入缓存;
[0018] 数据读取模块,用于从所述缓存中读取所述目标数据条带,同时分别传输至所述目标数据条带对应的数据存储位置以及所述第一参数模块。
[0019] 可选的,所述第一参数模块具体用于:
[0020] 基于公式 确定RAID 6模式下待编码数据的当前目标数据条带对应的第一校验参数;
[0021] 其中,αp为基于范德蒙式RS编码关系确定的所述第一校验码对应的编码系数值,αqx为基于范德蒙式RS编码关系确定的第二校验码对应的编码系数值,α为基于范德蒙式RS编码关系确定的当前目标数据条带对应的编码系数值, 表示异或运算。
[0022] 可选的,所述第二参数模块具体用于:
[0023] 基于公式 确定RAID 6模式下待编码数据的当前目标数据条带对应的第二校验参数;
[0024] 其中,αp为基于范德蒙式RS编码关系确定的所述第一校验码对应的编码系数值,αqx为基于范德蒙式RS编码关系确定的第二校验码对应的编码系数值,α为基于范德蒙式RS编码关系确定的当前目标数据条带对应的编码系数值, 表示异或运算。
[0025] 第二方面,本申请公开了一种RAID编码方法,包括:
[0026] 获取当前RAID模式下待编码数据的当前目标数据条带对应的第一校验参数,并利用所述第一校验参数和当前目标数据条带确定第一参数运算后数据;其中,RAID 6模式下的第一校验参数为基于范德蒙式RS编码关系确定的第一校验码对应的编码参数,RAID 5模式下的第一校验参数为1;
[0027] 对从第一校验码存储位置读取的当前第一校验码以及当前第一参数运算后数据进行编码运算,得到新的第一校验码,并将新的第一校验码存储至所述第一校验码存储位置,直到基于所述待编码数据的最后一个目标数据条带确定出所述待编码数据对应的最终的第一校验码。
[0028] 可选的,还包括:
[0029] 将所述待编码数据分割为预设数量个数据条带;
[0030] 将每个数据条带转换为伽罗华域数据,得到每个数据条带对应的目标数据条带。
[0031] 可选的,所述对从第一校验码存储位置读取的当前第一校验码以及当前第一参数运算后数据进行编码运算,得到新的第一校验码,包括:
[0032] 对从第一校验码存储位置读取的当前第一校验码以及当前第一参数运算后数据进行异或运算,得到新的第一校验码。
[0033] 可见,本申请公开的一种RAID编码电路,包括:第一参数模块,用于获取当前RAID模式下待编码数据的当前目标数据条带对应的第一校验参数,并利用所述第一校验参数和当前目标数据条带确定第一参数运算后数据;其中,RAID 6模式下的第一校验参数为基于范德蒙式RS编码关系确定的第一校验码对应的编码参数,RAID 5模式下的第一校验参数为1;第一编码模块,用于对从第一校验码存储位置读取的当前第一校验码以及当前第一参数运算后数据进行编码运算,得到新的第一校验码,并将新的第一校验码存储至所述第一校验码存储位置,直到基于所述待编码数据的最后一个目标数据条带确定出所述待编码数据对应的最终的第一校验码。这样,只需要第一参数模块即可实现RAID 5向RAID 6的编码转换,能够在实现RAID 5的前提下,快速且以较低面积实现RAID 6。

附图说明

[0034] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0035] 图1为本申请公开的一种RAID编码电路结构示意图;
[0036] 图2为本申请公开的一种具体的RAID编码电路编码示意图;
[0037] 图3为本申请公开的一种RAID 5编码电路编码示意图;
[0038] 图4为本申请公开的一种RAID 6编码电路编码示意图;
[0039] 图5为本申请公开的一种RAID编码方法流程图。

具体实施方式

[0040] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0041] 参见图1所示,本申请实施例公开了一种RAID编码电路,包括:
[0042] 第一参数模块11,用于获取当前RAID模式下待编码数据的当前目标数据条带对应的第一校验参数,并利用所述第一校验参数和当前目标数据条带确定第一参数运算后数据;其中,RAID 6模式下的第一校验参数为基于范德蒙式RS编码关系确定的第一校验码对应的编码参数,RAID 5模式下的第一校验参数为1。
[0043] 在具体的实施方式中,利用所述第一校验参数和当前目标数据条带进行乘法运算,得到第一参数运算后数据。
[0044] 第一编码模块12,用于对从第一校验码存储位置读取的当前第一校验码以及当前第一参数运算后数据进行编码运算,得到新的第一校验码,并将新的第一校验码存储至所述第一校验码存储位置,直到基于所述待编码数据的最后一个目标数据条带确定出所述待编码数据对应的最终的第一校验码。
[0045] 在具体的实施方式中,所述电路还包括:
[0046] 数据条带分割模块,用于将所述待编码数据分割为预设数量个数据条带。
[0047] 其中,预设数量为RAID的数据条带数量。
[0048] 伽罗华域转换模块,用于将每个数据条带转换为伽罗华域数据,得到每个数据条带对应的所述目标数据条带。
[0049] 相应的,所述第一编码模块,用于对从第一校验码存储位置读取的当前第一校验码以及当前第一参数运算后数据进行异或运算,得到新的第一校验码,并将新的第一校验码存储至所述第一校验码存储位置。
[0050] 也即,本申请实施例可以基于伽罗华域的数据条带进行编码运算,这样可以提高编码效率。
[0051] 需要指出的是,RAID 5只有一个parity stripe(校验条带),也即第一校验码,进行编码时,设待编码数据分为n个数据条带,则数据条带和第一校验码的关系表示为:
[0052]
[0053] 其中,d0,d1...dn表示数据条带,p表示第一校验码, 表示异或运算。
[0054] 实现RAID 6时需要同时支持两个校验条带,即第一校验码和第二校验码。本申请使用RS(即Reed‑Solomon Code,里德所罗门码)码来进行第一校验码和第二校验码的编码,RS码有范德蒙、柯西等多种实现方式,考虑到RAID 6的特性和运算的简单性需求,本申请实施例使用的是范德蒙的实现方式,设待编码数据分为n个数据条带,则依照上式,数据条带、第一校验码和第二校验码的关系表示为:
[0055]
[0056] 其中,d0,d1...dn表示数据条带,p表示第一校验码,q表示第二校验码, 表示异或运算,α表示范德蒙参数。
[0057] 为了方便运算和存储,本实施例通过伽罗华域处理为有限域再进行编码存储。此外,由于电路中数据的传输一般以byte为标准,因此,本申请实施例使用的伽罗华域为8比特位的有限域0X11D,即是:
[0058] P(X)=x8+x4+x3+x2+1;
[0059] 有限域0X11D的伽罗华域下,对于数据的定义可以表示为表一所示:
[0060] 表一
[0061]生成元素 多项式表示 二进制表示 数值表示 推导过程
0 0 0000 0000 0  
x^0 x^0 0000 0001 1  
x^1 x^1 0000 0010 2  
x^2 x^2 0000 0100 4  
x^3 x^3 0000 1000 8  
x^4 x^4 0001 0000 16  
x^5 x^5 0010 0000 32  
x^6 x^6 0100 0000 64  
x^7 x^7 1000 0000 128  
x^8 x^4+x^3+x^2+1 0001 1101 29 x^7*x=x^8mod P(x)
x^9 x^5+x^4+x^3+x 0011 1010 58 x^8*x=x^5+x^4+x^3+x
x^10 x^6+x^5+x^4+x^2 0111 0100 116 x^9*x=x^6+x^5+x^4+x^2
… … … … …
x^255 1 0000 0001 1  
[0062] 例如,当生成元素的指数为10时,通过上述伽罗华域本源多项式P(X)转换,表示为二进制01110100。通过这样的转换,所有的数据都会被转换为8比特的二进制数,并进行基于8比特二进制数的四则运算。基于伽罗华域的情况可知,传统的RAID 5和6都可以通过伽罗华域实现普通的数据四则运算,但申请提出的基于范德蒙的RS码做RAID 6的编码需要考虑对应的指数关系,当涉及四则运算,尤其是乘法时,需要考虑数据溢出后是否依然符合范德蒙关系的问题。为验证其适用性,做以下运算推导:
[0063] 假设有两个数据条带d0和d1需要进行乘法运算,按照8比特的伽罗华域进行展开并利用基于范德蒙的RS码做转换后为:
[0064]
[0065] 由于最容易产生溢出问题的是乘法,因此做d0和d1的乘法运算可得:
[0066] d0*d1=A7B7α14
[0067] +(A7B6+A6B7)α13
[0068] +...+
[0069] +A0B0α0
[0070] 将上式的A7B7,(A7B6+A6B7)直到A0B0用参数P14,P13,...,P0来表示,则上式可以表示为:
[0071] d0*d1=P14α14+P13α13+...+P2α2+P1α1+P0α0
[0072] 基于表一查询溢出项α14,α13,...,α8的8比特二进制表示方式,例如,α8=29表示为8 4 3 2 0
α=α+α+α+α然后重新带入上式,则可得到:
[0073] d0*d1=C7α7+C6α6+...+C2α2+C1α1+C0α0;
[0074] 其中,C0,C1...C6,C7为通过查询表一进行拆分运算后,利用P(X)=x8+x4+x3+x2+1表7 6 0
示的针对α,α,...,α的新的参数。可知完美适配基于范德蒙的RS码需求,可完成RAID 6的四则运算,即是说本申请提出的基于范德蒙的RS码可用于RAID 6的编解码,实现RAID 6的运算。
[0075] 在一种具体的实施方式中,RAID编码电路还包括:
[0076] 第二参数模块,用于获取RAID 6模式下待编码数据的当前目标数据条带对应的第二校验参数,并利用所述第二校验参数和当前目标数据条带确定第二参数运算后数据;其中,RAID 6对应的第二校验参数为基于范德蒙式RS编码关系确定的第二校验码对应的编码参数;
[0077] 第二编码模块,用于对从第二校验码存储位置读取的当前第二校验码以及当前第二参数运算后数据进行编码运算,得到新的第二校验码,并将新的第二校验码存储至所述第二校验码存储位置。
[0078] 在另一种具体的实施方式中,所述第一参数模块,还用于获取RAID 6下待编码数据的当前目标数据条带对应的第二校验参数,并利用所述第二校验参数和当前目标数据条带确定第二参数运算后数据;其中,RAID 6对应的第二校验参数为基于范德蒙式RS编码关系确定的第二校验码对应的编码参数;
[0079] 相应的,所述第一编码模块,还用于对从第二校验码存储位置读取的当前第二校验码以及当前第二参数运算后数据进行编码运算,得到新的第二校验码,并将新的第二校验码存储至所述第二校验码存储位置。
[0080] 也即,在具体的实施方式中,可以利用同一参数模块、编码模块串行确定第一校验码和第二校验码,以降低电路面积。为了提升编码速度,可以并行的利用不同的参数模块、编码模块分别确定第一校验码和第二校验码。
[0081] 并且,在具体的实施方式中,RAID编码电路还包括:
[0082] 数据缓存模块,用于将所述待编码数据的目标数据条带存入缓存。
[0083] 在具体的实施方式中,缓存方式可以为buffer(缓冲器)或FIFO(即First Input First Output,先进先出)。
[0084] 数据读取模块,用于从所述缓存中读取所述目标数据条带,同时分别传输至所述目标数据条带对应的数据存储位置以及所述第一参数模块。
[0085] 例如,参见图2所示,图2为本申请公开的一种具体的RAID编码电路编码示意图。
[0086] 1、待编码数据进入RAID编码电路,RAID编码电路先将待编码数据分割为预设数量个数据条带,然后将每个数据条带转换为伽罗华域数据,得到每个数据条带对应的目标数据条带,通过buffer或FIFO等方式暂存,等待数据读取模块空闲时,数据读取模块将目标数据条带分别同时送往当前数据条带对应的数据存储位置以及的第一参数模块、第二参数模块,第一参数模块获取当前RAID模式下待编码数据的当前目标数据条带对应的第一校验参数,并利用第一校验参数和当前目标数据条带进行乘法运算,得到第一参数运算后数据,将第一参数运算后数据传输至第一编码模块,第二参数模块获取当前RAID模式下待编码数据的当前目标数据条带对应的第二校验参数,并利用第二校验参数和当前目标数据条带进行乘法运算,得到第二参数运算后数据,将第二参数运算后数据传输至第二编码模块。比如,当前的目标数据条带为d0,将数据传输至d0对应的存储位置以及第一参数模块、第二参数模块。同一时间,从第一校验码p和第二校验码q的存储位置读取现在所存的数据,即当前第一校验码和当前第二校验码传输至第一编码模块、第二编码模块。
[0087] 2、第一参数运算后数据、第二参数运算后数据分别与从第一校验码存储位置读取的当前第一校验码和从第二校验码存储位置读取的当前第二校验码中所存的数据在第一编码模块、第二编码模块中进行异或运算后,产生的新的第一校验码和新的第二校验码,然后更新第一校验码存储位置和第二校验码存储位置的数据。
[0088] 其中,第一校验码存储位置和第二校验码存储位置的初始值均为0,这样,利用待编码数据的最后一个目标数据条带确定出的校验码即为待编码数据对应的最终的校验码,完成对待编码数据的编码。
[0089] 需要指出的是,RAID 5模式下的第一校验参数为1,通过第一参数模块和第一编码模块即可完成编码,得到对应的第一校验码。
[0090] 在具体的实施方式中,所述第一参数模块具体用于:
[0091] 基于公式 确定RAID 6模式下待编码数据的当前目标数据条带对应的第一校验参数;
[0092] 其中,αp为基于范德蒙式RS编码关系确定的所述第一校验码对应的编码系数值,αqx为基于范德蒙式RS编码关系确定的第二校验码对应的编码系数值,α为基于范德蒙式RS编码关系确定的当前目标数据条带对应的编码系数值, 表示异或运算。
[0093] 所述第二参数模块具体用于:
[0094] 基于公式 确定RAID 6模式下待编码数据的当前目标数据条带对应的第二校验参数;
[0095] 其中,αp为基于范德蒙式RS编码关系确定的所述第一校验码对应的编码系数值,αqx为基于范德蒙式RS编码关系确定的第二校验码对应的编码系数值,α为基于范德蒙式RS编码关系确定的当前目标数据条带对应的编码系数值, 表示异或运算。
[0096] 下面介绍本申请提供的RAID编码电路的实现过程:
[0097] 需要指出的是,RAID 5的实现为: 当需要实现RAID5的编码时,操作方式如图3所示,图3为本申请实施例公开的一种RAID 5编码电路编码示意图。1、待编码数据进入RAID5编码电路,RAID编码电路先将待编码数据分割为预设数量个数据条带,通过buffer或FIFO等方式暂存等待等待数据读取模块空闲时,数据读取模块将数据条带分别同时送往当前数据条带对应的数据存储位置以及编码模块。同一时间,从存储校验码p的位置读取现在所存的数据进入编码模块。2、数据条带与从存储校验码p的位置读取到的当前校验码进行在编码模块进行异或运算后,产生的新的校验码写入存储校验码p的位置,更新该位置的数据。
[0098] 实现对硬件电路的复用,达到最小面积,最大的复用优化,因此对于RAID6时,需要设定同样的方式进行编码。
[0099] RAID 6的关系可以表示为:
[0100]
[0101] 其中,公式(1)可以简单的通过对RAID 5的表达式扩充出第二个校验条带q即可。因此实现RAID 6的公式(1)的编码时,套用RAID 5的模块即可。可以使用两个编码模块并行操作,也可以和RAID 5一样只使用一个编码模块,分两拍分别运算p和q的值然后分别更新。
因为RS RAID 6编码的公式(1)和RAID 5非常类似,可以将q考虑为和p相同的方式进行更新,因此套用同一个电路即可并行或串行实现p和q的计算及更新。例如,参见图4所示,图4为本申请实施例公开的一种RAID 6编码电路编码示意图,用于实现实现RAID 6的公式(1)的编码。1、待编码数据进入RAID6编码电路,RAID6编码电路先将待编码数据分割为预设数量个数据条带,通过buffer或FIFO等方式暂存等待等待数据读取模块空闲时,数据读取模块将数据条带分别同时送往当前数据条带对应的数据存储位置以及两个不同的编码模块。
同一时间,从存储校验码p和q的位置读取现在所存的数据分别送入两个编码模块。2、数据条带与从存储校验码p的位置读取到的当前校验码p在相应的编码模块进行异或运算后,产生的新的校验码写入存储校验码p的位置,更新该位置的数据。数据条带与从存储校验码q的位置读取到的当前校验码q在相应的编码模块进行异或运算后,产生的新的校验码写入存储校验码q的位置,更新该位置的数据。
[0102] 而RS RAID 6的公式(2)和的RAID 5区别较大,因其相比RAID 5的异或运算,增加了不同的参数以及对应的乘法。为了设定同样的方式进行编码,实现电路复用,本实施例添加了参数模块,通过参数模块在进行异或运算前,使数据条带乘以参数,该参数能够同时满足RAID 6的公式(1)和(2)。使公式(2)可以基于更新的数据条带通过额外乘法运算以及异或运算完成p及q的计算更新。
[0103] 设任一储存数据为dx,其对应的校验码为p和q。更新后的存储数据为dx',其对应的校验码为p'和q'。x为数据条带对应的编号。
[0104] 通过RAID 6的公式(1)的编码关系可知,满足以下关系:
[0105]
[0106] 设dx‑dx'=Δ,则可更新上式为:
[0107] 设p和q对应的RS RAID 6的参数分别为αp,αq,则对上式分别乘以αp,αq可得到关系为:
[0108]
[0109]
[0110] 以及,基于αp,αq对应的RS RAID 6编码关系可得:
[0111]
[0112] (5)式中的αx指的是存储数据Δ对应的编码系数。
[0113] 以求q'为例,使式(3)和(5)相加,此处的加指的就是伽罗华域中的加法,及时异或运算,可得:
[0114]
[0115] 同理(3)和(4)相加可得p'的关系公式。
[0116] 上式中如上面定义可知,p和q是原本存存储的检验码,Δ为对应的待存数据的增p q x量,可以表示数据的变化,也可以表示新增数据。α,α和α如上所述表示的是对应的编码系p q n+1 n+2 x 0
数,在RAID 6的公式(2)中α,α分别为α ,α ,α为相应条带数据的系数值,比如α,都是和数据具体值无关的确定参数,可以直接运算。
[0117] 在具体的实施方式中,待编码数据的数据条带可视为Δ,αx为基于范德蒙式RS编码关系确定的当前目标数据条带对应的编码系数值。
[0118] 由于 和 为确定参数,则通过以上运算转换,可知RS RAID 6的p和q的数据更新可以通过添加可参数计算然后利用图4中的电路实现。添加参数模块即可得到如图2的电路。
[0119] 可见,本申请实施例公开的RAID编码电路,包括:第一参数模块,用于获取当前RAID模式下待编码数据的当前目标数据条带对应的第一校验参数,并利用所述第一校验参数和当前目标数据条带确定第一参数运算后数据;其中,RAID 6模式下的第一校验参数为基于范德蒙式RS编码关系确定的第一校验码对应的编码参数,RAID 5模式下的第一校验参数为1;第一编码模块,用于对从第一校验码存储位置读取的当前第一校验码以及当前第一参数运算后数据进行编码运算,得到新的第一校验码,并将新的第一校验码存储至所述第一校验码存储位置,直到基于所述待编码数据的最后一个目标数据条带确定出所述待编码数据对应的最终的第一校验码。这样,只需要第一参数模块即可实现RAID 5向RAID 6的编码转换,能够在实现RAID 5的前提下,快速且以较低面积实现RAID 6。
[0120] 参见图5所示,本申请实施例公开了一种RAID编码方法,包括:
[0121] 步骤S11:获取当前RAID模式下待编码数据的当前目标数据条带对应的第一校验参数,并利用所述第一校验参数和当前目标数据条带确定第一参数运算后数据;其中,RAID 6模式下的第一校验参数为基于范德蒙式RS编码关系确定的第一校验码对应的编码参数,RAID 5模式下的第一校验参数为1;
[0122] 步骤S12:对从第一校验码存储位置读取的当前第一校验码以及当前第一参数运算后数据进行编码运算,得到新的第一校验码,并将新的第一校验码存储至所述第一校验码存储位置,直到基于所述待编码数据的最后一个目标数据条带确定出所述待编码数据对应的最终的第一校验码。
[0123] 在具体的实施方式中,可以将所述待编码数据分割为预设数量个数据条带;将每个数据条带转换为伽罗华域数据,得到每个数据条带对应的目标数据条带。
[0124] 相应的,所述对从第一校验码存储位置读取的当前第一校验码以及当前第一参数运算后数据进行编码运算,得到新的第一校验码,包括:
[0125] 对从第一校验码存储位置读取的当前第一校验码以及当前第一参数运算后数据进行异或运算,得到新的第一校验码。
[0126] 在一种具体的实施方式中,可以:
[0127] 通过第一参数模块获取当前RAID模式下待编码数据的当前目标数据条带对应的第一校验参数,并利用所述第一校验参数和当前目标数据条带确定第一参数运算后数据;其中,RAID 6模式下的第一校验参数为基于范德蒙式RS编码关系确定的第一校验码对应的编码参数,RAID 5模式下的第一校验参数为1;
[0128] 通过第一编码模块对从第一校验码存储位置读取的当前第一校验码以及当前第一参数运算后数据进行编码运算,得到新的第一校验码,并将新的第一校验码存储至所述第一校验码存储位置,直到基于所述待编码数据的最后一个目标数据条带确定出所述待编码数据对应的最终的第一校验码。
[0129] 通过第二参数模块获取RAID 6模式下待编码数据的当前目标数据条带对应的第二校验参数,并利用所述第二校验参数和当前目标数据条带确定第二参数运算后数据;其中,RAID 6对应的第二校验参数为基于范德蒙式RS编码关系确定的第二校验码对应的编码参数;
[0130] 通过第二编码模块对从第二校验码存储位置读取的当前第二校验码以及当前第二参数运算后数据进行编码运算,得到新的第二校验码,并将新的第二校验码存储至所述第二校验码存储位置。
[0131] 在另一种具体的实施方式中,可以
[0132] 通过第一参数模块获取当前RAID模式下待编码数据的当前目标数据条带对应的第一校验参数,并利用所述第一校验参数和当前目标数据条带确定第一参数运算后数据;其中,RAID 6模式下的第一校验参数为基于范德蒙式RS编码关系确定的第一校验码对应的编码参数,RAID 5模式下的第一校验参数为1;
[0133] 通过第一编码模块对从第一校验码存储位置读取的当前第一校验码以及当前第一参数运算后数据进行编码运算,得到新的第一校验码,并将新的第一校验码存储至所述第一校验码存储位置,直到基于所述待编码数据的最后一个目标数据条带确定出所述待编码数据对应的最终的第一校验码。
[0134] 通过第一参数模块获取RAID 6下待编码数据的当前目标数据条带对应的第二校验参数,并利用所述第二校验参数和当前目标数据条带确定第二参数运算后数据;其中,RAID 6对应的第二校验参数为基于范德蒙式RS编码关系确定的第二校验码对应的编码参数;
[0135] 相应的,通过第一编码模块对从第二校验码存储位置读取的当前第二校验码以及当前第二参数运算后数据进行编码运算,得到新的第二校验码,并将新的第二校验码存储至所述第二校验码存储位置。
[0136] 并且,在具体的实施方式中,可以将所述待编码数据的目标数据条带存入缓存;从所述缓存中读取所述目标数据条带,同时分别传输至所述目标数据条带对应的数据存储位置以及所述第一参数模块。
[0137] 并且,在具体的实施方式中,可以基于公式 确定RAID 6模式下待编码数据的当前目标数据条带对应的第一校验参数;
[0138] 其中,αp为基于范德蒙式RS编码关系确定的所述第一校验码对应的编码系数值,αqx为基于范德蒙式RS编码关系确定的第二校验码对应的编码系数值,α为基于范德蒙式RS编码关系确定的当前目标数据条带对应的编码系数值, 表示异或运算。
[0139] 基于公式 确定RAID 6模式下待编码数据的当前目标数据条带对应的第二校验参数;
[0140] 其中,αp为基于范德蒙式RS编码关系确定的所述第一校验码对应的编码系数值,αqx为基于范德蒙式RS编码关系确定的第二校验码对应的编码系数值,α为基于范德蒙式RS编码关系确定的当前目标数据条带对应的编码系数值, 表示异或运算。
[0141] 可见,本申请获取当前RAID模式下待编码数据的当前目标数据条带对应的第一校验参数,并利用所述第一校验参数和当前目标数据条带确定第一参数运算后数据;其中,RAID 6模式下的第一校验参数为基于范德蒙式RS编码关系确定的第一校验码对应的编码参数,RAID 5模式下的第一校验参数为1;对从第一校验码存储位置读取的当前第一校验码以及当前第一参数运算后数据进行编码运算,得到新的第一校验码,并将新的第一校验码存储至所述第一校验码存储位置,直到基于所述待编码数据的最后一个目标数据条带确定出所述待编码数据对应的最终的第一校验码。这样,只需要更换第一校验码参数即可实现RAID 5向RAID 6的编码转换,能够在实现RAID 5的前提下,快速且以较低面积实现RAID 6。
[0142] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的方法而言,由于其与实施例公开的电路相对应,所以描述的比较简单,相关之处参见电路部分说明即可。
[0143] 结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD‑ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0144] 以上对本申请所提供的一种RAID编码电路及编码方法进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。