一种数据存储方法、系统、设备及计算机可读存储介质与流程

文档序号:37544313发布日期:2024-04-08 13:46阅读:11来源:国知局
一种数据存储方法、系统、设备及计算机可读存储介质与流程

本技术涉及存储,更具体地说,涉及一种数据存储方法、系统、设备及计算机可读存储介质。


背景技术:

1、当前,在ssd(solid state disk,固态硬盘)的使用过程中,向ssd中写入数据时,先将数据写入到ssd的动态随机存取内存(dram)中,然后写到nand(闪存)中的slc(single-levelcell,单层存储单元)cache(缓存)中,之后再搬移到nand的qlc(quad-level cell,四层存储单元)、tlc(triple-level cell,三层存储单元)、mlc(multi-level cell,双层存储单元)中。

2、然而,往qlc、tlc、mlc中写入的数据需先写入slc中,存在写放大,导致iops(input/output operations per second,每秒进行读写操作的次数)有瓶颈;且往qlc/tlc/mlc搬移数据的速度赶不上slc cache写数据的速度,slc cache写满后,数据搬移性能下跌,不能保证持续的高性能数据写入,影响ssd的数据存储性能。

3、综上所述,如何提高ssd的数据存储性能是目前本领域技术人员亟待解决的问题。


技术实现思路

1、本技术的目的是提供一种数据存储方法,其能在一定程度上解决如何提高ssd的数据存储性能的技术问题。本技术还提供了一种数据存储系统、电子设备及计算机可读存储介质。

2、为了实现上述目的,本技术提供如下技术方案:

3、一种数据存储方法,应用于ssd,包括:

4、确定所述ssd的nand在单次编程中的最大编程数据量;

5、获取所述ssd缓存中的目标数据;

6、确定所述目标数据在所述nand中的目标存储单元;

7、按照所述最大编程数据量和所述目标存储单元的类型对所述目标数据进行分组,得到所述目标存储单元对应的目标分组数据;

8、确定所述目标存储单元对应的字线;

9、将所述目标分组数据编程至对应的所述字线中。

10、优选的,所述确定所述ssd的nand在单次编程中的最大编程数据量,包括:

11、确定所述ssd的所述nand在单次编程中的最多multi-plane page数;

12、根据所述最多multi-plane page数和multi-plane page的大小,确定所述最大编程数据量;

13、所述确定所述目标数据在所述nand中的目标存储单元之前,还包括:

14、对于每个所述目标存储单元,确定所述目标存储单元的编程顺序;

15、根据所述最多multi-plane page数,确定单个字线的容量值;

16、根据所述编程顺序确定晶圆所需所述字线的最小个数值;

17、将所述最小个数值增1,得到目标数值;

18、根据所述目标数值和和单个字线的容量值确定所述晶圆的容量值。

19、优选的,所述将所述目标分组数据编程至对应的所述字线中,包括:

20、对于每组所述目标分组数据,获取对应的所述目标存储单元在上笔主机写过程中剩余的写入序列;

21、判断所述目标分组数据是否能填入至剩余的所述写入序列中;

22、若是,则将所述目标分组数据填入至剩余的所述写入序列中;

23、若否,则为所述目标存储单元申请对应容量的新的所述写入序列,将所述目标分组数据填入至剩余的所述写入序列和新的所述写入序列中;

24、将已写满的所述写入序列编程至对应的所述字线中。

25、优选的,将所述目标分组数据填入至所述写入序列中,包括:

26、获取所述目标分组数据的目标lma slice,所述目标lma slice中记录有所述目标分组数据的起始lba地址、lba长度和下一个lma slice的位置;

27、按照所述multi-plane page的大小在所述目标分组数据中确定出未填充的目标子数据;

28、若所述目标子数据小于所述multi-plane page的大小,则获取下一组lma slice中的数据对所述目标子数据进行拼接,直至所述目标子数据等于所述multi-plane page的大小;

29、若所述目标子数据等于所述multi-plane page的大小,则将所述目标子数据对应的lma填入所述写入序列的主机写lba计数中,将所述目标子数据的缓冲区地址填入所述写入序列中,更新所述目标子数据对应的hostwrnode至所述写入序列的nodeid中。

30、优选的,所述将已写满的所述写入序列编程至对应的所述字线中,包括:

31、遍历所述hostwrnode的所述写入序列的列表;

32、若所述写入序列已填满数据,则将所述写入序列提交给所述nand,以编程至对应的所述字线中。

33、优选的,所述将已写满的所述写入序列编程至对应的所述字线中之后,还包括:

34、若同一个lba地址进行了两次写操作,则将第一次写操作的sblk的vbc计数值减1,将第二次写操作的sblk的vbc计数值加1;

35、更新所述nand的l2p关系。

36、优选的,所述将已写满的所述写入序列编程至对应的所述字线中之后,还包括:

37、确定未写满的所述写入序列的剩余数据量;

38、将vbc计数值最小的写满的sblk确定为目标sblk;

39、在所述目标sblk中确定出与所述剩余数据量相等的待转移数据量;

40、将所述待转移数据量的lba填入至所述未写满的所述写入序列对应的主机写lba中;

41、将最新的所述未写满的所述写入序列编程至对应的所述字线中。

42、一种数据存储系统,应用于ssd,包括:

43、第一确定模块,用于确定所述ssd的nand在单次编程中的最大编程数据量;

44、第一获取模块,用于获取所述ssd缓存中的目标数据;

45、第二确定模块,用于确定所述目标数据在所述nand中的目标存储单元;

46、第一分组模块,用于按照所述最大编程数据量和所述目标存储单元的类型对所述目标数据进行分组,得到所述目标存储单元对应的目标分组数据;

47、第三确定模块,用于确定所述目标存储单元对应的字线;

48、第一编程模块,用于将所述目标分组数据编程至对应的所述字线中。

49、一种电子设备,包括:

50、存储器,用于存储计算机程序;

51、处理器,用于执行所述计算机程序时实现如上任一所述数据存储方法的步骤。

52、一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述数据存储方法的步骤。

53、本技术提供的一种数据存储方法,应用于ssd,确定ssd的nand在单次编程中的最大编程数据量;获取ssd的缓存中的目标数据;确定目标数据在nand中的目标存储单元;按照最大编程数据量和目标存储单元的类型对目标数据进行分组,得到目标存储单元对应的目标分组数据;确定目标存储单元对应的字线;将目标分组数据编程至对应的字线中。本技术中,根据目标数据在nand中的目标存储单元的类型来对动态缓存中的目标数据进行分组,得到大小等于最大编程数据量的目标分组数据,并将目标分组数据直接编程至对应的字线中,这样无需经过slc cache缓存,降低了写放大,提高了iops,且是按照单次编程的最大编程数据量进行编程的,可以保证数据写入nand的性能,提高了ssd的数据存储性能。本技术提供的一种数据存储系统、电子设备及计算机可读存储介质也解决了相应技术问题。

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