基于闪存存储设备的纠删方法及装置与流程

文档序号:11286038阅读:191来源:国知局
基于闪存存储设备的纠删方法及装置与流程

本发明涉及信息处理领域,具体涉及一种基于闪存存储设备的纠删方法及装置。



背景技术:

闪存存储具有很高的读写带宽,是当前存储领域中的热点,但是闪存本身的特点决定了它的误码率要高于普通存储很多。在底层一个闪存存储单元内,一般使用ecc即纠错码技术来保证本单元内数据的准确性。在系统较高层次上,通常采用raid或者纠删码来保证系统存储的可靠。

但是raid系列不是占用的开销较大,就是纠错能力不强。而rs实现的纠删码,实现所需资源较多,纠删延时很大,一般需要数百个时钟周期。



技术实现要素:

为了解决上述现有技术的缺点,本发明提出了一种适用于闪存存储设备的纠删方法及装置。

根据本发明的一个方面,提供了一种适用于闪存存储设备的纠删方法,包括以下步骤:

s1、在编码端,将16个输入数据块的对应字节位置进行异或得到第一校验数据块,将所述16个输入数据块按照对应字节的顺序输入到16个迦洛华域乘法器中,将16个乘法器输出的16个数据块的对应字节位置进行异或得到第二校验数据块;

s2、在解码端,先将接收到的16块原数据进行异或操作,其中丢失的部分用0补充,再将异或结果分别与所述第一校验数据块和第二校验数据块进行异或操作,得到第一中间数据和第二中间数据;

s3、将第一中间数据分别通过两个迦洛华域乘法器,得到第一中间乘法结果和第一中间乘法结果,其中两个迦洛华域乘法器的系数是与数据块的缺失位置对应的;

s4、将所述第一中间乘法结果和第一中间乘法结果分别异或所述第二中间数据,得到第一中间乘法异或结果和第二中间乘法异或结果;

s5、将步骤s3中的两个乘法器系数进行异或操作,得到迦洛华域到自然数域映射表的索引,用所述索引查询迦洛华域到自然数域映射表,得到第一映射表查询结果;

s6、用256减去所述第一映射表查询结果,得到自然数域到迦洛华域映射表索引,用所述索引查询自然数域到迦洛华域映射表,得到第二映射表查询结果;

s7、将第一中间乘法异或结果和第二中间乘法异或结果分别通过两个迦洛华域乘法器,得到最终恢复数据,所述两个迦洛华域乘法器的系数为所述第二映射表查询结果。

根据本发明的另一个方面,提供了一种适用于闪存存储设备的纠删装置,包括编码模块及解码模块,其中:

编码模块,用于将16个输入数据块的对应字节位置进行异或得到第一校验数据块,将所述16个输入数据块按照对应字节的顺序输入到16个迦洛华域乘法器中,将16个乘法器输出的16个数据块的对应字节位置进行异或得到第二校验数据块;

解码模块,用于利用接收到的两个校验数据块对接收到的数据进行纠删,具体为,

先将接收到的16块原数据进行异或操作,其中丢失的部分用0补充,再将异或结果分别与所述第一校验数据块和第二校验数据块进行异或操作,得到第一中间数据和第二中间数据;

将第一中间数据分别通过两个迦洛华域乘法器,得到第一中间乘法结果和第一中间乘法结果,其中两个迦洛华域乘法器的系数是与数据块的缺失位置对应的;

将所述第一中间乘法结果和第一中间乘法结果分别异或所述第二中间数据,得到第一中间乘法异或结果和第二中间乘法异或结果;

将所述两个迦洛华域乘法器的系数进行异或操作,得到迦洛华域到自然数域映射表的索引,用所述索引查询迦洛华域到自然数域映射表,得到第一映射表查询结果;

用256减去所述第一映射表查询结果,得到自然数域到迦洛华域映射表索引,用所述索引查询自然数域到迦洛华域映射表,得到第二映射表查询结果;

以所述第二映射表查询结果分别为两个迦洛华域乘法器的系数,将第一中间乘法异或结果和第二中间乘法异或结果分别通过所述两个迦洛华域乘法器,得到最终恢复数据。

本发明与现有技术相比,其纠错能力为m+2,即任意m块存储单元可以同时容纳2块单元出错。其保护能力强于传统的raid,占用资源较少,同时纠删延时低于传统的rs纠删码,编码仅需2个时钟周期,解码仅4个时钟周期。同时支持断点续传,不需要等到全部数据块都准备好才能计算,数据随到随算,从而大大降低了对系统缓存的要求。

附图说明

图1示出本发明的纠删装置示意图。

图2示出本发明的编码过程示意图。

图3示出本发明的解码过程示意图。

具体实施方式

下面结合附图对本发明作进一步详细描述。

参见图1,为本发明的纠删装置示意图。装置包括编码模块与解码模块两部分,编码模块将16个输入数据块进行处理得到两个校验数据块,解码模块利用接收到的两个校验数据块对接收到的部分缺失数据进行纠删。

参见图2,为本发明的具体编码过程示意图。

编码部分的功能是由不多于m=16块原数据(输入),生成2块校验块(输出)。在闪存中,每个数据块是16kb,当然也可以是其他大小。

其中,第一个数据块由16个原数据块对应字节位置异或得到。

若原数据块数不足16,则剩余输入位置补零。

若在断点续传模式下,则第一次将异或后的结果数据放入输出缓存1中,后续的数据异或完成后,与输出缓存1中的数据再异或一次,将结果覆盖写到输出缓存1中,反复执行直到全部原数据块到达并计算完成。

第二个数据块的计算过程由16个8bit迦洛华域乘法器构成(该乘法器输入是2个数据,其中一个接原数据,一个接固定系数,输出一个8bit数据结果),16个输入数据块,按照对应字节的顺序,输入到16个迦洛华域乘法器中,将乘法器的16个输出,异或后,写到输出缓存2中。

这16个迦洛华域乘法器的固定系数依次是:0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x1e,0x3a,0x74,0xe8,0xce,0x87,0x13,0x26。

若在断点续传模式下,则第一次将异或后的结果数据放入输出缓存2中,后续的数据异或完成后,与输出缓存2中的数据再异或一次,将结果覆盖写到输出缓存2中,反复执行直到全部元数据块到达并计算完成。需要指出的是,在计算输出数据块2的时候,断点模式下,来的每个数据块应该按照其在16个数据块中的位置,进入对应的迦洛华域乘法器中,其余乘法器的输出端补0。

至此,输出缓存1和输出缓存2就是编码后的结果。

解码部分的是由16块原数据(丢失部分补0)+2块校验数据(输入),和任意两个丢失数据的位置0~17(输入),恢复出丢失的2块数据(输出)

由于系统不关心校验数据的丢失,因此如果丢失的两块全是校验数据,则无需恢复,直接将原数据读出即可。如丢失的两块中有一块是原始数据,一块是校验数据,则也只需要恢复出一块原始数据即可。

若系统仅丢失一块原始数据,则第二个丢失位置给出一个校验块的位置即可。

解码模块第一步先将16块原数据(丢失部分补0)异或起来,再分别与校验数据块1和校验数据块2异或,得到两个中间数据,中间数据1和中间数据2。从中间数据1、2开始的解码过程参见图3。

第二步将中间数据1分别通过两个迦洛华域乘法器,得到两个中间乘法结果1、2。

其中两个迦洛华域乘法器的系数是由缺失位置对应的,编码部分时,16个乘法器对应的是:0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x1e,0x3a,0x74,0xe8,0xce,0x87,0x13,0x26。假设丢失的数据块是0和7(数据块编号从0开始数),那么这里两个乘法器的系数就是0和7对应的系数,即0x01和0x80,记作输出乘法器系数1和输出乘法器系数2。

将中间乘法结果,分别异或所述中间数据2,得到2个中间乘法异或结果1、2。

将输出乘法器系数1和输出乘法器系数2异或起来,得到迦洛华域到自然数域映射表索引1。

用索引1查询迦洛华域到自然数域映射表,得到映射表查询结果1。

用256减去映射表查询结果1,得到自然数域到迦洛华域映射表索引2,用索引2查询自然数域到迦洛华域映射表,得到映射表查询结果2。

将2个中间乘法异或结果1、2分别通过两个迦洛华域乘法器,得到的结果就是最终恢复数据。该处2个乘法器的系数,就是映射表查询结果2。

断点续传和不足16块的情况,与编码处理方式相同,但断点续传要在第一步将数据凑齐,方可进入下一步。

其中8bit的迦洛华域到自然数域映射表和自然数域到迦洛华域映射表在数学上是固定的,自然数域到迦洛华域映射表是由自然数的0~255查找(映射到)迦洛华域的0~255,反之类似。另外8bit的迦洛华域乘法器,在数学上也是固定的。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1