一种存储数据的方法及存储设备的制造方法_2

文档序号:9765788阅读:来源:国知局
>【附图说明】
[0017] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述 中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实 施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可W根据运些附图 获得其他的附图。
[0018] 图1为本发明实施例提供的内存中的一个扇区的示意图;
[0019] 图2为本发明实施例提供的存储设备将内存中的数据写入硬盘的示意图;
[0020] 图3为本发明实施例提供的一种存储数据的方法的流程示意图;
[0021] 图4为本发明实施例提供的另一种存储数据的方法的流程示意图;
[0022] 图5为本发明实施例提供的一种存储设备的结构示意图。
【具体实施方式】
[0023] 为了使本领域的技术人员更容易理解本发明实施例对现有技术进行改进的部分, 下面首先对现有技术中的方案进行简单介绍。
[0024] 图1为内存中的一个扇区的示意图,如图所示,内存的扇区中包括数据字段W及数 据完整性字段,其中,该数据字段的字节大小为512,该数据完整性字段的字节大小为8,该 扇区的字节大小等于数据字段的字节大小与该数据完整性字段的字节大小之和,也就是 说,图1所示扇区的大小为520字节。
[0025] 基于图1所示的内存扇区,若存储设备的硬盘的扇区大小为520字节,则该存储设 备可W直接将内存的一个扇区中所有的数据直接写入硬盘的一个扇区,若该硬盘的扇区大 小为4160字节,则该存储设备可W将内存的8个扇区中的所有数据直接写入该硬盘的一个 扇区。
[0026] 但是,若该硬盘的扇区大小不是内存扇区大小的整数倍,在此种情况下,该存储设 备需要重新计算CRC码,示例地,图2为存储设备将内存中的数据写入硬盘的示意图,其中, 该硬盘的扇区大小为4104字节,运样,该存储设备将内存的8个扇区中每个扇区的数据字段 中的数据进行合并,并通过逐字节遍历合并后的数据块的方式计算得到CR邱马,并将合并后 的数据块存储到该硬盘的扇区的数据字段,将重新计算得到的CRC码写入该硬盘的扇区的 数据完整性字段。
[0027] 由上可知,现有技术中,在存储设备的硬盘的扇区大小不是内存扇区大小的整数 倍的情况下,该存储设备将内存中的数据写入硬盘时,需要逐字节遍历数据计算CRC码,降 低了内存数据写入硬盘的效率。
[0028] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述,其 中,本文中的' ~ '用于表示二进制的异或算法,' % '用于表示模2除法求余。
[0029] 本发明实施例提供一种存储数据的方法,该方法应用于存储设备,该存储设备包 括内存和硬盘,该内存中包括数据块,W及每个该数据块的循环冗余校验CR邱马,其中,每个 该数据块的字节大小为^,每个该CRC码的字节大小为L2,如图3所示,该方法包括:
[0030] S301、该存储设备获取该内存中存储的M个数据块,W及该M个数据块中的每个数 据块的CR邱马,M是大于1的正整数。
[0031] 其中,该M个数据块可W是该内存的一个扇区中的数据块,也可W是多个扇区中的 数据块,本发明对此不作限定。
[0032] S302、该存储设备根据M个该CR邱马W及预处理表计算得到目标CR邱马。
[0033] 其中,该目标CRC码与该CRC码的字节大小相同,该预处理表包括中间数据的CRC 码,其中,每个该中间数据的字节大小为^,且每个该中间数据的后^-L2个字节均为零。该 目标CR邱马为该M个数据块的整体数据的CRC码,也就是说,若第一数据块Dl为1010100,第二 数据块为1010010,则该目标CRC码即为数据10101001010010的CRC码。
[0034] 本领域的技术人员应该了解到,计算某一数据块的CRC码的数学原理是模2除法, 其本质是对数据块中的二进制数据进行异或运算,每次处理掉1个字节后都把当前结果及 时异或到后面的字节,按顺序处理完所有字节后最终结果即该数据块的CR邱马。
[0035] 并且,二进制的异或运算具有如下特性:
[0036] 数据块A和数据块B异或后对K进行模2除的余数等于数据块A和数据块B分别对K进 行模2除的余数进行异或的值。也就是说,(4~8)%1(=^%1〇~处%1〇,运样,对于数据块八, 若其前半部分数据为Al,后半部分数据为A2,且Al的CRC码为R,通过对R的末尾补零,得到与 A2的字节长度相同的R',则有数据块A的CR邱马等于A2的CR邱马与R'的CR邱马的异或值。
[0037] 因此,步骤S302具体包括,该存储设备根据该预处理表通过直接查表的方式获取 中间数据化的CR邱马Rkcrc,并计算Ck+rRkcrc得到计算结果,将该计算结果的末尾补零,得到与 该数据块的字节大小相同的中间数据Rw;其中,Ck+1是所述M个数据块中的第k+1个数据块 的CRC码,k依次取数值区间中的正整数,Ri是将该M个数据块中的第1个数据块的 CRC码的末尾补零,得到的与该数据块的字节大小相同的数据,由于k依次取数值区间[1,M-1)中的正整数,也就是说,在k小于M-I时,该存储设备每次计算得到一个中间数据Rk+i,令k = k+l,再次根据该预处理表通过直接查表的方式获取中间数据化的CR邱马化crc,并计算Ck+r 化crc,直到k = M-2时,该存储设备计算得到Rm-I,进一步地,该存储设备查询该预处理表获取 中间数据Rm-I的CRC码R(M-I)Crc,并计算CM~R(M-i)crc得到该目标CRC码,Cm是所述M个数据块中的 第M个数据块的CR邱马。
[003引示例地,M等于3,该M个数据块分别为Di = 101001,D2 = 011101,D3 = 100011,Di的 CRC 码为 Cl = 101001000% 1010 = 010,D2 的 CRC 码为 C2 = 011101000% 1010 = 110,03 的 CRC 码 为C3 = 100011000 % 1010 = 010,存储设备中的预处理表包括XXXOOO的CRC码,其中,XXXOOO 中每一位的X可W为0,也可W为1。运样,该存储设备对Cl进行末尾补零,得到与Dl相同字节 长度的中间数据Rl = OlOOOO,查询该预处理表获得Rl的CRC码化CK = OlO,进一步地,该存储 设备计算C2~Rier。= 110~010二100,将100末尾补零得到R2 = 100000,查询该预处理表获得 R2的CRC码R2crc=100,进一步地,该存储设备计算C3~R2crc = 01(T100 得到110,该110即为该 目标CRC码,即数据的10100101 1 101 10001 1的CRC码,上述过程相比直接计算 101001011101100011000% 1010= 110,由于无需遍历每个字节的数据,直接通过查询预处 理表即可获知中间数据的CR邱马,因此,本发明实施例的存储效率更高。
[0039] S303、该存储设备将该M个数据块,W及该目标CR邱马存储到硬盘的一个扇区中。
[0040] 具体地,该存储设备将该M个数据块进行合并,并将合并后的数据块存储到该硬盘 的扇区的数据字段,并将该目标CR邱马写入该硬盘的扇区的数据完整性字段。
[0041] 值得说明的是,该硬盘的扇区大小可W是MX^+L3的整数倍,其中L3为硬盘扇区的 数据完整性字段的字节大小,L3大于L2。也就是说,存储设备从内存写入硬盘的数据刚好确 保硬盘的一个扇区中存储多个等份的数据W及每等份数据的CR邱马。
[0042] 运样,采用上述方案,该存储
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1