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

文档序号:9765788阅读:530来源:国知局
一种存储数据的方法及存储设备的制造方法
【技术领域】
[0001 ]本发明设及存储领域,尤其设及一种存储数据的方法及存储设备。
【背景技术】
[0002] 现有的存储业务中,通常采用循环冗余校验(英文全称:Cyclic Redundancy 化eck,简称:CRC)码来实现数据的完整性保护,CRC码是根据存储的数据块通过复杂的计算 产生一个查错检验值,其大小可W是化k特、16比特或者32比特等。在具体存储时,存储设备 同时存储数据块W及该数据块的数据完整性字段(英文全称:data integrity field,简称 DIF),其中,数据完整性字段包括了该数据块的CRC码、逻辑块寻址(英文全称:logical block addressing,简称:LBA)信息及其他自定义信息,运样,该存储设备在后续读该数据 块时,将读出来的数据块重新计算CR邱马,将重新计算得到的CRC码和原始存储的CRC码进行 对比校验,即可识别出该数据块是否出错。
[0003] 但是,现有技术中,存储设备的内存中一个扇区的大小和硬盘中一个扇区的大小 可能不同,因此,存储设备在内存中存储数据和在硬盘中存储数据时,计算CRC码的数据粒 度可能不同。
[0004] 例如,存储设备的内存中一个扇区的大小通常为520字节,并且一个扇区中通常采 用51化8的方式存储数据块,即一个扇区中包括512字节大小的数据块W及8字节大小的数 据完整性字段,其中,该数据完整性字段中的CRC码占用2个字节,在此种情况下,若该存储 设备的硬盘中的一个扇区大小为4104字节,则该存储设备在将内存的数据块写入硬盘时, 需要将内存的8个扇区中存储的8个512字节的数据合并为4096字节大小的数据,并重新遍 历每个字节计算该4096个字节大小的数据的CRC码,并将该4096字节大小的数据W及包括 重新计算得到的该CR邱马的8字节大小的数据完整性字段写入硬盘的一个扇区中。
[0005] 由上述可知,由于存储设备的内存与硬盘的扇区大小不一致,现有技术中,该存储 设备在将内存中的数据写入硬盘时,可能需要重新遍历数据计算CR邱马,效率低下。

【发明内容】

[0006] 本发明的目的是提供一种存储数据的方法及存储设备,用W解决现有技术由于存 储设备的内存与硬盘的扇区大小不一致,导致将内存中的数据写入硬盘的效率低下的问 题。
[0007] 上述目的将通过独立权利要求中的特征来达成。进一步的实现方式在从属权利要 求、说明书和附图中体现。
[000引第一方面,提供一种存储数据的方法,用于存储数据的存储设备包括内存和硬盘, 所述内存中存储有数据块,W及每个所述数据块的循环冗余校验CRC码,其中,每个所述数 据块的字节大小为^,每个所述CR邱马的字节大小为L2,所述方法包括:所述存储设备获取所 述内存中存储的M个数据块,W及所述M个数据块中的每个数据块的CR邱马,M是大于1的正整 数;所述存储设备根据M个所述CRC码W及预处理表计算得到目标CRC码,所述目标CRC码是 所述M个数据块组成的整体数据的CRC码,所述目标CRC码的字节大小为L2,所述预处理表包 括中间数据的CRC码,其中,每个所述中间数据的字节大小为^,且每个所述中间数据的后 L1-L2个字节均为零;所述存储设备将所述M个数据块,W及所述目标CRC码存储到硬盘的一 个扇区中。
[0009] 采用上述方案,该存储设备可W通过内存中的CRC码W及预处理表中的中间数据 的CR邱马计算得到目标CRC码,无需重新遍历数据计算,降低了算法的复杂度,提高了计算效 率,进而提高了将内存数据写入硬盘的效率。
[0010] 在结合第一方面的第一种可能的实现方式中,所述存储设备将所述M个数据块,W 及所述目标CRC码存储到硬盘的一个扇区中,包括:所述存储设备将所述M个数据块进行合 并,并将合并后的数据块存储到所述扇区的数据字段;所述存储设备将所述目标CR邱马写入 所述扇区的数据完整性字段;所述扇区的大小为所述数据字段的字节大小MXレ与所述数 据完整性字段的字节大小L3之和,其中,L3大于L2。也就是说,存储设备从内存写入硬盘的数 据刚好确保硬盘的一个扇区中存储多个等份的数据W及每等份数据的CR邱马。
[0011] 结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的 实现方式中,所述存储设备根据M个所述CRC码W及预处理表计算得到目标CRC码,包括:所 述存储设备根据所述预处理表通过直接查表的方式获取中间数据Rk的CRC码化crc,并计算 Ck+rRksr。得到计算结果,将该计算结果的末尾补零,得到与所述数据块的字节大小相同的 中间数据化+1;其中,k依次取数值区间[1,M-I)中的正整数,Ck+i是所述M个数据块中的第k+1 个数据块的CRC码,Ri是将所述M个数据块中的第1个数据块的CR邱马Cl的末尾补零,得到的与 所述数据块的字节大小相同的数据,当k = M-2时,得到中间数据Rm-I ;所述存储设备查询所 述预处理表获取所述中间数据Rm-I的CRC码R(M-I)CTC,并计算CM~R(M-l)crc得到所述目标CRC码, Cm是所述M个数据块中的第M个数据块的CRC码。
[0012] 结合第一方面,或者W上第一方面的任一种可能的实现方式,在第一方面的第= 种可能的实现方式中,Li等于512,L2等于2字节,M等于8,L3等于8。
[0013] 第二方面,提供一种存储设备,所述存储设备包括内存W及硬盘,所述内存中存储 有数据块,W及每个所述数据块的循环冗余校验CRC码,其中,每个所述数据块的字节大小 为^,每个所述CRC码的字节大小为L2,所述存储设备还包括处理器,所述处理器与所述内存 W及所述硬盘相连,所述处理器用于:获取所述内存中存储的M个数据块,W及所述M个数据 块中的每个数据块的CR邱马,M是大于1的正整数;根据M个所述CR邱马W及预处理表计算得到 目标CR邱马,所述目标CRC码是所述M个数据块组成的整体数据的CR邱马,所述目标CRC码的字 节大小为L2,所述预处理表包括中间数据的CRC码,其中,每个所述中间数据的字节大小为 b,且每个所述中间数据的后b-L2个字节均为零;将所述M个数据块,W及所述目标CRC码存 储到硬盘的一个扇区中。
[0014] 在结合第二方面的第一种可能的实现方式中,所述处理器具体用于:将所述M个数 据块进行合并,并将合并后的数据块存储到所述扇区的数据字段;将所述目标CR邱马写入所 述扇区的数据完整性字段;其中,所述扇区的大小为所述数据字段的字节大小MXb与所述 数据完整性字段的字节大小L3之和,其中,L3大于L2。
[0015] 结合第二方面,或者第二方面的第一种可能的实现方式,在第二方面的第二种可 能的实现方式中,所述处理器具体用于:根据所述预处理表通过直接查表的方式获取中间 数据化的CRC码Rkcrc,并计算Ck+rRkcrc得到计算结果,将该计算结果的末尾补零,得到与所述 数据块的字节大小相同的中间数据Rk+1;其中,k依次取数值区间中的正整数,Cw是 所述M个数据块中的第k+1个数据块的CRC码,Ri是将所述M个数据块中的第1个数据块的CRC 码Cl的末尾补零,得到的与所述数据块的字节大小相同的数据,当k = M-2时,得到中间数据 Rm-I;所述存储设备查询所述预处理表获取所述中间数据Rm-I的CRC码R(M-I)CTC,并计算Cm' R(M-I)CTC得到所述目标CR邱马,Cm是所述M个数据块中的第M个数据块的CR邱马。
[0016] 结合第二方面,或者W上第二方面的任一种可能的实现方式,在第二方面的第= 种可能的实现方式中,Li等于512,L2等于2字节,M等于8,L3等于8。
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1