一种固态硬盘的数据写入方法和装置与流程

文档序号:24193168发布日期:2021-03-09 15:49阅读:124来源:国知局
一种固态硬盘的数据写入方法和装置与流程

1.本发明涉及存储领域,更具体地,特别是指一种固态硬盘的数据写入方法和装置。


背景技术:

2.随着互联网、云计算、物联网等技术的发展及广泛应用,在人类生活中,时时刻刻都会产生海量的数据需要处理及存储,信息技术的高速发展对存储系统的性能提出了更高的要求。ssd(固态硬盘)因其读写速度快、能耗较低,而被广泛采用。但由于nand(与非门闪存)本身的特性,受硬件电气特定的影响,即当nand中的block(块)在没有写满时,经过一定时间之后,该block最后写入的数据会变的不稳定,我们称这种现象为open block(开块)现象,此处会有较大概率出现这些数据纠错失败。
3.目前通常的做法是再出现错误后使用read retry(重读)表纠错,或者是再写入一部分无效数据,即保证之前有效数据不再位于最后位置,也就避免了open block现象,上述的处理方法对于低层存储单元的nand颗粒处理影响不大,但对高层存储单元来说,写入的时间会明显增加,会影响正常的数据的下发,即对性能以及ssd下电的时间影响就会比较大。
4.针对现有技术中ssd处理开块的数据写入时间太长的问题,目前尚无有效的解决方案。


技术实现要素:

5.有鉴于此,本发明实施例的目的在于提出一种固态硬盘的数据写入方法和装置,能够降低写入无效数据对性能造成的影响。
6.基于上述目的,本发明实施例的第一方面提供了一种固态硬盘的数据写入方法,包括执行以下步骤:
7.在固态硬盘中配置用于存储开块数据的低层存储单元以形成低层存储单元块;
8.响应于收到数据写入指令而将数据写入固态硬盘的高层存储单元,其中高层存储单元具有高于低层存储单元的单位容量;
9.响应于高层存储单元中未写满数据的块的存在时间超过开块状态阈值,而将未写满数据的块确定为开块并存入待处理清单中;
10.响应于待处理清单存在开块,而将开块经由内存储器转移至低层存储单元块,并在低层存储单元块中封闭开块。
11.在一些实施方式中,低层存储单元为单层存储单元或双层存储单元;高层存储单元为三层存储单元或四层存储单元;低层存储单元的数据写入速度大于高层存储单元。
12.在一些实施方式中,低层存储单元块包括主块和备块;将开块经由内存储器转移至低层存储单元块包括:
13.响应于主块不满,而将开块经由内存储器转移至主块;
14.响应于主块已满,而将开块经由内存储器转移至备块。
15.在一些实施方式中,方法还包括:响应于主块和备块已满,而将主块或备块中已封闭的开块转移至高层存储单元的块中。
16.在一些实施方式中,方法还包括:在将开块经由内存储器转移至低层存储单元块之后,还适应性地更新记载数据存储地址的映射表。
17.在一些实施方式中,方法还包括:在将开块经由内存储器转移至低层存储单元块之后,还提高开块状态阈值。
18.在一些实施方式中,封闭开块包括:为开块生成并存储重读表、或向开块中未写满数据的部分写入无效数据。
19.本发明实施例的第二方面提供了一种固态硬盘的数据写入装置,包括:
20.处理器;和
21.存储器,存储有处理器可运行的程序代码,程序代码在被运行时执行以下步骤:
22.在固态硬盘中配置用于存储开块数据的低层存储单元以形成低层存储单元块;
23.响应于收到数据写入指令而将数据写入固态硬盘的高层存储单元,其中高层存储单元具有高于低层存储单元的单位容量;
24.响应于高层存储单元中未写满数据的块的存在时间超过开块状态阈值,而将未写满数据的块确定为开块并存入待处理清单中;
25.响应于待处理清单存在开块,而将开块经由内存储器转移至低层存储单元块,并在低层存储单元块中封闭开块。
26.在一些实施方式中,低层存储单元为单层存储单元或双层存储单元;高层存储单元为三层存储单元或四层存储单元;低层存储单元的数据写入速度大于高层存储单元。
27.在一些实施方式中,低层存储单元块包括主块和备块;
28.将开块经由内存储器转移至低层存储单元块包括:响应于主块不满,而将开块经由内存储器转移至主块;响应于主块已满,而将开块经由内存储器转移至备块;
29.响应于主块和备块已满,而将主块或备块中已封闭的开块转移至高层存储单元的块中。
30.本发明具有以下有益技术效果:本发明实施例提供的固态硬盘的数据写入方法和装置,通过在固态硬盘中配置用于存储开块数据的低层存储单元以形成低层存储单元块;响应于收到数据写入指令而将数据写入固态硬盘的高层存储单元,其中高层存储单元具有高于低层存储单元的单位容量;响应于高层存储单元中未写满数据的块的存在时间超过开块状态阈值,而将未写满数据的块确定为开块并存入待处理清单中;响应于待处理清单存在开块,而将开块经由内存储器转移至低层存储单元块,并在低层存储单元块中封闭开块的技术方案,能够降低写入无效数据对性能造成的影响。
附图说明
31.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
32.图1为本发明提供的固态硬盘的数据写入方法的流程示意图。
具体实施方式
33.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
34.需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
35.基于上述目的,本发明实施例的第一个方面,提出了一种降低写入无效数据对性能造成的影响的固态硬盘的数据写入方法的一个实施例。图1示出的是本发明提供的固态硬盘的数据写入方法的流程示意图。
36.所述的固态硬盘的数据写入方法,如图1所示,包括执行以下步骤:
37.步骤s101,在固态硬盘中配置用于存储开块数据的低层存储单元以形成低层存储单元块;
38.步骤s103,响应于收到数据写入指令而将数据写入固态硬盘的高层存储单元,其中高层存储单元具有高于低层存储单元的单位容量;
39.步骤s105,响应于高层存储单元中未写满数据的块的存在时间超过开块状态阈值,而将未写满数据的块确定为开块并存入待处理清单中;
40.步骤s107,响应于待处理清单存在开块,而将开块经由内存储器转移至低层存储单元块,并在低层存储单元块中封闭开块。
41.本发明中考虑nand的物理电气特性,利用slc(一层存储单元)和qlc(四层存储单元)的写入时间的巨大差别(slc与与qlc写入总时间差别100倍以上)的优势,将部分数据转移到slc中,这样有效地降低了因在qlc中写入无效数据对性能造成地影响。
42.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(rom)或随机存储记忆体(ram)等。所述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
43.在一些实施方式中,低层存储单元为单层存储单元(slc)或双层存储单元(mlc);高层存储单元为三层存储单元(tlc)或四层存储单元(qlc);低层存储单元的数据写入速度远大于高层存储单元,例如高若干数量级。
44.在一些实施方式中,低层存储单元块包括主块和备块;将开块经由内存储器转移至低层存储单元块包括:
45.响应于主块不满,而将开块经由内存储器转移至主块;
46.响应于主块已满,而将开块经由内存储器转移至备块。
47.在一些实施方式中,方法还包括:响应于主块和备块已满,而将主块或备块中已封闭的开块转移至高层存储单元的块中。
48.在一些实施方式中,方法还包括:在将开块经由内存储器转移至低层存储单元块之后,还适应性地更新记载数据存储地址的映射表。
49.在一些实施方式中,方法还包括:在将开块经由内存储器转移至低层存储单元块之后,还提高开块状态阈值。
50.在一些实施方式中,封闭开块包括:为开块生成并存储重读表、或向开块中未写满数据的部分写入无效数据。
51.下面根据具体实施例进一步阐述本发明的具体实施方式:
52.1.选择一定数量的block并划定为slc block,专门用于存储qlc中因open block转移的数据。将选定的block总数分为两组,一组使用,另外一组作为备用,轮流使用。
53.2.判断block是否处于open block状态:
54.1)设置定时器,依次判断未写满的block的数据保持时间,数据保存时间为当block开始到定时器检测的时间点的时间差值;
55.2)若超过判断open block状态的门限,即可认定该block为open block将新检测到open block放入pending list中;
56.3)若未超过门限,则不用处理,等待下一轮检测。
57.3.在主循环函数中,实时检测存放open block的pending list,若list中有open block信息时,则触发block中部分数据的搬移:
58.1)选择待数据转移的目标slc block地址是否已写满,若是,则切换为备用的slc block;
59.2)将block中最后写入的一层数据依次读取到ddr;
60.3)将ddr中数据按slc的格式写入划定好的slc block中,若slc已写满,则需要切换到备用的slc的block中;
61.4)当数据写入slc的block后,则需要更新数据存放的映射表。
62.4.在搬移完成之后将open block的回收等级适当调高,即当ssd触发回收block时,会优先回收这些未写满的block。
63.5.为了提高slc block的利用率,当一份slc block写满数据之后,ssd会再将数据搬移到其它qlc的block中。
64.从上述实施例可以看出,本发明实施例提供的固态硬盘的数据写入方法,通过在固态硬盘中配置用于存储开块数据的低层存储单元以形成低层存储单元块;响应于收到数据写入指令而将数据写入固态硬盘的高层存储单元,其中高层存储单元具有高于低层存储单元的单位容量;响应于高层存储单元中未写满数据的块的存在时间超过开块状态阈值,而将未写满数据的块确定为开块并存入待处理清单中;响应于待处理清单存在开块,而将开块经由内存储器转移至低层存储单元块,并在低层存储单元块中封闭开块的技术方案,能够降低写入无效数据对性能造成的影响。
65.需要特别指出的是,上述固态硬盘的数据写入方法的各个实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于固态硬盘的数据写入方法也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在所述实施例之上。
66.基于上述目的,本发明实施例的第二个方面,提出了一种降低写入无效数据对性能造成的影响的固态硬盘的数据写入装置的一个实施例。固态硬盘的数据写入装置包括:
67.处理器;和
68.存储器,存储有处理器可运行的程序代码,程序代码在被运行时执行以下步骤:
69.在固态硬盘中配置用于存储开块数据的低层存储单元以形成低层存储单元块;
70.响应于收到数据写入指令而将数据写入固态硬盘的高层存储单元,其中高层存储单元具有高于低层存储单元的单位容量;
71.响应于高层存储单元中未写满数据的块的存在时间超过开块状态阈值,而将未写满数据的块确定为开块并存入待处理清单中;
72.响应于待处理清单存在开块,而将开块经由内存储器转移至低层存储单元块,并在低层存储单元块中封闭开块。
73.在一些实施方式中,低层存储单元为单层存储单元或双层存储单元;高层存储单元为三层存储单元或四层存储单元;低层存储单元的数据写入速度大于高层存储单元。
74.在一些实施方式中,低层存储单元块包括主块和备块;
75.将开块经由内存储器转移至低层存储单元块包括:响应于主块不满,而将开块经由内存储器转移至主块;响应于主块已满,而将开块经由内存储器转移至备块;
76.响应于主块和备块已满,而将主块或备块中已封闭的开块转移至高层存储单元的块中。
77.从上述实施例可以看出,本发明实施例提供的固态硬盘的数据写入装置,通过在固态硬盘中配置用于存储开块数据的低层存储单元以形成低层存储单元块;响应于收到数据写入指令而将数据写入固态硬盘的高层存储单元,其中高层存储单元具有高于低层存储单元的单位容量;响应于高层存储单元中未写满数据的块的存在时间超过开块状态阈值,而将未写满数据的块确定为开块并存入待处理清单中;响应于待处理清单存在开块,而将开块经由内存储器转移至低层存储单元块,并在低层存储单元块中封闭开块的技术方案,能够降低写入无效数据对性能造成的影响。
78.需要特别指出的是,上述固态硬盘的数据写入装置的实施例采用了所述固态硬盘的数据写入方法的实施例来具体说明各模块的工作过程,本领域技术人员能够很容易想到,将这些模块应用到所述固态硬盘的数据写入方法的其他实施例中。当然,由于所述固态硬盘的数据写入方法实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于所述固态硬盘的数据写入装置也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在所述实施例之上。
79.以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
80.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上所述的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1