发明内容
发明人经长期研究发现,相关技术中为提高固态硬盘写入性能而采用的方案,虽然能从一定程度上提高固态硬盘的写入性能,但持久度不高,仍然无法支持长时间的高性能写入。
为解决上述问题,本申请实施例一方面提供了一种固态硬盘的写入方法,包括:启动将待写入数据写入缓存区域的任务;判断所述缓存区域的剩余空间是否小于第一阈值;若所述缓存区域的剩余空间小于所述第一阈值,则启动垃圾回收机制,将所述缓存区域内的热数据保留在所述缓存区域;将所述缓存区域内的冷数据搬移到闪存区域。
可选的,所述若所述缓存区域的剩余空间小于所述第一阈值,则启动垃圾回收机制,将所述缓存区域内的热数据保留在所述缓存区域;将所述缓存区域内的冷数据搬移到闪存区域的步骤包括:若所述缓存区域的剩余空间小于所述第一阈值,则启动垃圾回收机制,统计所述缓存区域内的有效数据,所述有效数据包括所述热数据和所述冷数据;判断所述有效数据是否大于第二阈值;若所述有效数据大于所述第二阈值,则执行所述将所述缓存区域内的热数据保留在所述缓存区域;将所述缓存区域内的冷数据搬移到闪存区域的步骤。
可选的,所述若所述缓存区域的剩余空间小于所述第一阈值,则启动垃圾回收机制,将所述缓存区域内的热数据保留在所述缓存区域;将所述缓存区域内的冷数据搬移到闪存区域的步骤之后包括:判断所述闪存区域的剩余空间是否小于第三阈值;若所述闪存区域的剩余空间小于所述第三阈值,则将至少部分所述缓存区域切换为所述闪存区域,并更新所述第一阈值。
可选的,所述若所述缓存区域的剩余空间小于所述第一阈值,则启动垃圾回收机制,将所述缓存区域内的热数据保留在所述缓存区域;将所述缓存区域内的冷数据搬移到闪存区域的步骤包括:若所述缓存区域的剩余空间小于所述第一阈值,则启动垃圾回收机制,判断所述闪存区域的剩余空间是否大于第四阈值;若所述闪存区域的剩余空间大于所述第四阈值,将所述闪存区域的至少部分区域切换为所述缓存区域,并更新所述第一阈值;执行所述将所述缓存区域内的热数据保留在所述缓存区域;将所述缓存区域内的冷数据搬移到闪存区域的步骤。
可选的,所述若所述缓存区域的剩余空间小于所述第一阈值,则启动垃圾回收机制,将所述缓存区域内的热数据保留在所述缓存区域;将所述缓存区域内的冷数据搬移到闪存区域的步骤之后包括:判断所述闪存区域的剩余空间是否小于所述第三阈值;若所述闪存区域的剩余空间小于所述第三阈值,则将所述切换为所述缓存区域的至少部分区域还原为所述闪存区域,并更新所述第一阈值。
可选的,所述接收写入指令,响应所述写入指令启动将待写入数据写入缓存区域的任务的步骤之前包括:将所述固态硬盘划分为所述缓存区域以及所述闪存区域,其中,所述缓存区域的空间大于所述闪存区域的空间。
可选的,所述若所述缓存区域的剩余空间小于所述第一阈值,则启动垃圾回收机制,将所述缓存区域内的热数据保留在所述缓存区域;将所述缓存区域内的冷数据搬移到闪存区域的步骤之后还包括:判断所述待写入数据是否写入完成;若所述待写入数据未写入完成,则将未写完的剩余所述待写入数据继续写入所述缓存区域。
本申请实施例另一方面还提供一种固态硬盘的写入装置,包括写入模块、判断模块以及垃圾回收模块,写入模块用于启动将待写入数据写入缓存区域的任务;判断模块用于判断所述缓存区域的剩余空间是否小于第一阈值;垃圾回收模块用于在所述判断模块判断出所述缓存区域的剩余空间小于所述第一阈值时,启动垃圾回收机制,将所述缓存区域内的热数据保留在所述缓存区域将所述缓存区域内的冷数据搬移到闪存区域。
本申请实施例另一方面还提供一种固态硬盘,包括存储空间、相互耦接的处理器及存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述存储空间划分有缓存区域和闪存区域;所述处理器运行所述计算机程序时执行以上所述的写入方法。
此外,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器运行时执行以上所述的写入方法。
本申请实施例提供的技术方案在缓存区域剩余空间不足时,启动垃圾回收机制,对冷、热数据进行分流:通过将冷数据搬移到闪存区域,为待写入数据的写入提供了足够的空间;通过将热数据继续保留在缓存区域,节约了带宽,为待写入数据的写入提供足够的带宽,从而使得所述固态硬盘能够长时间的保持高性能写入。
具体实施方式
发明人经长期研究发现,为了提高固态硬盘的写入性能,可以采用开盘时开辟一个固定区域作为缓存区域的方法,所有的主机数据都先写入缓存区域,在缓存区域快写满时启动垃圾回收机制,将缓存区域内的有效数据搬移到闪存区域。该方法的不足之处在于,由于固态硬盘的存储空间是有限的,用于作为缓存区域的固定区域的大小也是有限的,一旦缓存区域即将写满,由于有效数据的搬移要占用一定的带宽,将不能继续保持高性能的写入。需要说明的是,本申请中的术语“缓存区域”为固态硬盘内用于数据缓存的SLC区域;本申请中的术语“闪存区域”包括固态硬盘内用于数据闪存的MLC区域、TLC区域、以及QLC区域的至少一种;本申请中缓存区域内的有效数据的搬移隐含了将所述有效数据所在的block中的无效数据删除。
为了提高固态硬盘的写入性能,还可以采用开盘时开辟一个固定区域作为缓存区域,在缓存区域快写满时,将部分闪存区域临时切换为缓存区域的方法,当原有的缓存区域和切换而来的缓存区域再次即将写满时,启动垃圾回收机制,将原有的缓存区域和切换而来的缓存区域内的有效数据搬移到闪存区域,并将切换而来的缓存区域再次切换回闪存区域。该方法的不足之处在于,一旦原有的缓存区域和切换而来的缓存区域即将写满,由于有效数据的搬移要占用一定的带宽,将不能继续保持高性能的写入。
为了使固态硬盘能够保持长时间的高性能写入,本申请提供了一种用于固态硬盘的写入方法。下面结合附图和实施例,对本申请作进一步的详细描述。特别指出的是,以下实施例仅用于说明本申请,但不对本申请的范围进行限定。同样的,以下实施例仅为本申请的部分实施例而非全部实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
请参阅图1,图1是本申请实施例所提供的写入方法的流程示意图。需要说明的是,本申请中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。本申请实施例提供了一种固态硬盘的写入方法,所述写入方法包括:
S10:启动将待写入数据写入缓存区域的任务。
举例而言,可以在接收写入指令之后,响应所述写入指令启动将待写入数据写入缓存区域的任务,具体的,本申请实施例对所述写入指令的类型不作限制,比如,所述写入指令可以是下载文件的指令,也可以是安装操作系统的指令,也可以是安装软件的指令。所述缓存区域可以是一个固定空间,比如,开盘时开辟一个固定空间作为缓存区域;所述缓存区域也可以包括一固定空间和一活动空间,比如,开盘时开辟一个固定空间作为缓存区域,固态硬盘内的其余空间可以在缓存区域和闪存区域之间切换;所述缓存区域还可以是一活动空间,比如,固定硬盘内的所有空间都可以在缓存区域和闪存区域之间切换。可选的,在本申请实施例中,所述缓存区域是一活动空间,固定硬盘内的所有空间都可以在缓存区域和闪存区域之间切换。
S20:判断所述缓存区域的剩余空间是否小于第一阈值。
具体的,在启动将待写入数据写入缓存区域的任务之后,待写入数据的写入还具有其他限制条件,比如,待写入数据的写入需要一定的带宽,缓存区域还有足够的剩余空间,待写入数据才能顺利写入。因此,需要判断缓存区域是否有足够的剩余空间供待写入数据写入使用。本申请实施例对所述第一阈值不作限定,可以根据实际需要对第一阈值进行设定。需要说明的是,本申请中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括至少一个该特征。
S30:若所述缓存区域的剩余空间小于所述第一阈值,则启动垃圾回收机制,将所述缓存区域内的热数据保留在所述缓存区域;将所述缓存区域内的冷数据搬移到闪存区域。
当所述缓存区域的剩余空间小于所述第一阈值时,说明缓存区域的剩余空间已经不足以供待写入数据写入使用,需要启动垃圾回收机制,为待写入数据的写入提供空间。具体的,对冷、热数据进行分流:将缓存区域内的冷数据搬移到闪存区域,为待写入数据的写入提供足够的空间;将缓存区域内的热数据保留在缓存区域,以节约带宽,为待写入数据的写入提供足够的带宽。需要说明的是,本申请中的术语“热数据”为缓存区域中被频繁擦写的block中的有效数据;本申请中的术语“冷数据”为缓存区域中擦写频率较低的block中的有效数据;本申请中缓存区域内的冷数据的搬移隐含了将所述冷数据所在的block中的无效数据删除。
在进行垃圾回收机制时,可以将缓存区域内的热数据从缓存区域的第一区域搬移到缓存区域的第二区域,也可以不对缓存区域内的热数据进行搬移。可选的,在本申请实施例中,将缓存区域内的热数据从缓存区域的第一区域搬移到缓存区域的第二区域,以删除缓存区域内的无效数据,为待写入数据的写入提供更多的空间,并且在缓存区域内进行搬移并不会占用过多的带宽,有利于待写入数据的快速写入。需要说明的是,本申请中的术语“第一区域”、“第二区域”仅用于描述目的,缓存区域的第一区域及缓存区域的第二区域并不能理解为缓存区域的某个特定区域,本申请所述的将数据从缓存区域的第一区域搬移到缓存区域的第一区域仅表示数据从缓存区域的一个区域搬移到另外一个区域;本申请中缓存区域内的热数据的搬移隐含了将所述热数据所在的block中的无效数据删除。
可以理解的是,在固态硬盘实际工作过程中,可能会出现,待写入数据的写入进行到一半,缓存区域的剩余空间不足的情况,在这种情况下,也可以对刚刚写入的数据进行搬移,比如,把刚刚写入到缓存区域的第一区域的热数据搬移到缓存区域的第二区域,把刚刚写入的冷数据搬移到闪存区域。
请参阅图2,图2是本申请实施例所提供的另一写入方法的流程示意图。图2中的写入方法与图1中的写入方法的不同之处在于,所述若所述缓存区域的剩余空间小于所述第一阈值,则启动垃圾回收机制,将所述缓存区域内的热数据保留在所述缓存区域;将所述缓存区域内的冷数据搬移到闪存区域的步骤可以进一步包括:
S31:若所述缓存区域的剩余空间小于所述第一阈值,则启动垃圾回收机制,统计所述缓存区域内的有效数据,所述有效数据包括所述热数据和所述冷数据。
如前文所述,当所述缓存区域的剩余空间小于所述第一阈值时,说明缓存区域的剩余空间已经不足以供待写入数据写入使用,需要启动垃圾回收机制,为待写入数据的写入提供空间。具体的,该步骤的主要目的在于,先统计所述缓存区域内的有效数据,计算缓存区域内的有效数据,判断是否需要执行将所述缓存区域内的热数据保留在所述缓存区域,将所述缓存区域内的冷数据搬移到闪存区域的步骤。
S32:判断所述有效数据是否大于第二阈值。
可选的,该步骤进一步包括,
S321:若所述有效数据小于等于第二阈值,则将所述有效数据从所述缓存区域的第一区域搬移到所述缓存区域的第二区域。
具体的,若所述有效数据小于等于第二阈值,说明缓存区域内的有效数据所占的比例较小,无效数据所占的比例较大,此时无须执行将所述缓存区域内的热数据保留在所述缓存区域,将所述缓存区域内的冷数据搬移到闪存区域的步骤,将缓存区域内的有效数据全部从缓存区域的第一区域搬移到缓存区域的第二区域之后,已经有足够的空间供待写入数据写入使用。由于缓存区域内部不同区域之间的数据搬移速度较快,不会占用较多的带宽,所以当所述有效数据小于等于第二阈值时,将所述有效数据从所述缓存区域的第一区域搬移到所述缓存区域的第二区域相比将所述缓存区域内的热数据保留在所述缓存区域,将所述缓存区域内的冷数据搬移到闪存区域更有利于待写入数据的快速写入。本申请实施例对所述第二阈值不作限制,可以根据实际需求进行选择。
S33:若所述有效数据大于所述第二阈值,则执行所述将所述缓存区域内的热数据保留在所述缓存区域;将所述缓存区域内的冷数据搬移到闪存区域的步骤。
若所述有效数据大于所述第二阈值,说明缓存区域内的有效数据所占的比例较大,无效数据所占的比例较小,此时若不执行将所述缓存区域内的热数据保留在所述缓存区域,将所述缓存区域内的冷数据搬移到闪存区域的步骤,仅执行将所述有效数据从所述缓存区域的第一区域搬移到所述缓存区域的第二区域,仍然没有足够的空间供待写入数据写入使用。因此,当所述有效数据大于所述第二阈值时,执行将所述缓存区域内的热数据保留在所述缓存区域,将所述缓存区域内的冷数据搬移到闪存区域的步骤,为待写入数据的写入提供足够的空间,更有利于待写入数据的快速写入。
请参阅图3,图3是本申请实施例所提供的另一写入方法的流程示意图。图3中的写入方法与图2中的写入方法的不同之处在于,所述若所述缓存区域的剩余空间小于所述第一阈值,则启动垃圾回收机制,将所述缓存区域内的热数据保留在所述缓存区域;将所述缓存区域内的冷数据搬移到闪存区域的步骤之后还可以包括:
S34:判断所述闪存区域的剩余空间是否小于第三阈值。
该步骤的主要目的在于判断闪存区域的剩余空间是否够用。具体的,在将所述缓存区域内的热数据保留在所述缓存区域,将所述缓存区域内的冷数据搬移到闪存区域的步骤之后,可能会出现闪存区域的剩余空间不够用的情况。若闪存区域的剩余空间不足,在接下来的写入过程中,有效数据只能存储在缓存区域中,由于缓存区域的贮存密度小于闪存区域,固态硬盘很快就会被存满。本申请实施例对所述第三阈值不作限制,可以根据实际需求自行选择。
S35:若所述闪存区域的剩余空间小于所述第三阈值,则将至少部分所述缓存区域切换为所述闪存区域,并更新所述第一阈值。
具体的,若所述闪存区域的剩余空间小于所述第三阈值,说明闪存区域的剩余空间不足,可以将至少部分所述缓存区域切换为所述闪存区域,以扩大闪存区域的空间,由于闪存区域贮存数据的密度大于缓存区域,有利于增加固态硬盘的容量。
请参阅图4,图4是本申请实施例所提供的另一写入方法的流程示意图。图4中的写入方法与图1中的写入方法的不同之处在于,所述若所述缓存区域的剩余空间小于所述第一阈值,则启动垃圾回收机制,将所述缓存区域内的热数据保留在所述缓存区域;将所述缓存区域内的冷数据搬移到闪存区域的步骤可以进一步包括:
S36:若所述缓存区域的剩余空间小于所述第一阈值,则启动垃圾回收机制,判断所述闪存区域的剩余空间是否大于第四阈值。
如前文所述,当所述缓存区域的剩余空间小于所述第一阈值时,说明缓存区域的剩余空间已经不足以供待写入数据写入使用,需要启动垃圾回收机制,为待写入数据的写入提供空间。该步骤的主要目的在于,判断闪存区域的剩余空间是否足够大,能否将至少部分闪存区域切换为缓存区域。具体的,若闪存区域的剩余空间足够大,可以将至少部分闪存区域切换为缓存区域,扩大缓存区域的空间,从而为待写入数据的写入提供空间,有利于待写入数据的快速写入。若闪存区域的剩余空间不足,则直接执行所述将所述缓存区域内的热数据保留在所述缓存区域;将所述缓存区域内的冷数据搬移到闪存区域的步骤,该写入方法结束。需要说明的是,本申请实施例对所述第四阈值不作限制,可以根据实际需求自行选择。
S37:若所述闪存区域的剩余空间大于所述第四阈值,将所述闪存区域的至少部分区域切换为所述缓存区域,并更新所述第一阈值。
具体的,若所述闪存区域的剩余空间大于所述第四阈值,说明闪存区域的剩余空间足够大,可以将至少部分闪存区域切换为缓存区域,扩大缓存区域的空间,从而为待写入数据的写入提供空间,有利于待写入数据的快速写入。
S38:执行所述将所述缓存区域内的热数据保留在所述缓存区域;将所述缓存区域内的冷数据搬移到闪存区域的步骤。
具体的,如前文所述,将缓存区域内的冷数据搬移到闪存区域,有利于为待写入数据的写入提供更多的空间;将缓存区域内的热数据保留在缓存区域,有利于节约带宽,为待写入数据的写入提供足够的带宽。
请继续参阅图4,可选的,所述若所述缓存区域的剩余空间小于所述第一阈值,则启动垃圾回收机制,将所述缓存区域内的热数据保留在所述缓存区域;将所述缓存区域内的冷数据搬移到闪存区域的步骤之后包括:
S39:判断所述闪存区域的剩余空间是否小于所述第三阈值。
该步骤的主要目的在于判断闪存区域的剩余空间是否够用。具体的,在将所述缓存区域内的热数据保留在所述缓存区域,将所述缓存区域内的冷数据搬移到闪存区域的步骤之后,可能会出现闪存区域的剩余空间不够用的情况。若闪存区域的剩余空间不足,在接下来的写入过程中,有效数据只能存储在缓存区域中,由于缓存区域的贮存密度小于闪存区域,固态硬盘很快就会被存满。本申请实施例对所述第三阈值不作限制,可以根据实际需求自行选择。
S40:若所述闪存区域的剩余空间小于所述第三阈值,则将所述切换为所述缓存区域的至少部分区域还原为所述闪存区域,并更新所述第一阈值。
具体的,若所述闪存区域的剩余空间小于所述第三阈值,说明闪存区域的剩余空间不足,需要将所述切换为所述缓存区域的至少部分区域还原为所述闪存区域,以扩大闪存区域的空间,由于闪存区域贮存数据的密度大于缓存区域,有利于增加固态硬盘的容量。
请参阅图5,图5是本申请实施例所提供的另一写入方法的流程示意图。图5中的写入方法与图1中的写入方法的不同之处在于,所述接收写入指令,响应所述写入指令启动将待写入数据写入缓存区域的任务的步骤之前可以包括:
S01:将所述固态硬盘划分为所述缓存区域以及所述闪存区域,其中,所述缓存区域的空间大于所述闪存区域的空间。
开盘时,可以将固态硬盘全部设置为缓存区域;也可以将固态硬盘划分为缓存区域以及闪存区域;还可以将固态硬盘全部设置为闪存区域。可选的,在本申请实施例中,将固态硬盘划分为缓存区域以及闪存区域,以兼顾固态硬盘的写入性能和容量。具体的,如前文所述,缓存区域用于数据缓存,将待写入数据直接写入缓存区域有利于提高写入速度;闪存区域用于数据闪存,贮存数据的密度较大,有利于增加固态硬盘的容量。进一步的,缓存区域的空间可以大于闪存区域的空间,因为刚开盘时,固态硬度内比较空,没有过多数据,不需要很大的容量,使缓存区域的空间大于闪存区域的空间有利于提升固态硬盘的写入性能。
请参阅图6,图6是本申请实施例所提供的另一写入方法的流程示意图。图6中的写入方法与图1中的写入方法的不同之处在于,所述若所述缓存区域的剩余空间小于所述第一阈值,则启动垃圾回收机制,将所述缓存区域内的热数据保留在所述缓存区域;将所述缓存区域内的冷数据搬移到闪存区域的步骤之后还可以包括:
S41:判断所述待写入数据是否写入完成。
该步骤的主要目的在于判断待写入数据是否写入完成。具体的,在固态硬盘的实际使用过程当中,可能会出现待写入数据量较大,垃圾回收机制结束之后,写入仍未完成的情况。
S42:若所述待写入数据未写入完成,则将未写完的剩余所述待写入数据继续写入所述缓存区域。
若待写入数据未写入完成,垃圾回收机制结束之后,已经有足够的空间和带宽供待写入数据写入使用,可以将未写完的剩余所述待写入数据继续写入缓存区域。
本申请实施例提供的写入方法在缓存区域剩余空间不足时,启动垃圾回收机制,对冷、热数据进行分流:通过将冷数据搬移到闪存区域,为待写入数据的写入提供了足够的空间;通过将热数据继续保留在缓存区域,节约了带宽,为待写入数据的写入提供足够的带宽,从而使得所述固态硬盘能够长时间的保持高性能写入。
可以理解的是,以上只是给出了本申请所提供的写入方法几个实施例,并不是本申请所提供的写入方法的全部实施例,并且,以上所给出的几个实施例之间可以相互结合。比如,图2中的写入方法和图4中的写入方法可以结合,图2中的写入方法、图4中的写入方法、图5中的写入方法以及图6中的写入方法可以结合,图3中的写入方法、图5中的写入方法以及图6中的写入方法可以结合等等,此处不再一一赘述。
请参阅图7,图7是本申请实施例所提供固态硬盘100的结构示意图。本申请实施例还提供了一种固态硬盘100,所述固态硬盘100包括存储空间10、相互耦接的处理器20及存储器30以及存储在所述存储器30上并可在所述处理器20上运行的计算机程序31,所述存储空间10划分有缓存区域11和闪存区域12;所述处理器20运行所述计算机程序31时执行以上所述的写入方法。可选的,所述存储空间10还可以进一步包括预留区域(附图中未示出),所述预留区域主要用于坏块替换。
本申请实施例提供的固态硬盘在缓存区域剩余空间不足时,启动垃圾回收机制,对冷、热数据进行分流:通过将冷数据搬移到闪存区域,为待写入数据的写入提供了足够的空间;通过将热数据继续保留在缓存区域,节约了带宽,为待写入数据的写入提供足够的带宽,从而使得所述固态硬盘能够长时间的保持高性能写入。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机指令,其上存储有计算机指令,该指令被处理器执行时运行以上所述的写入方法。具体的,所述计算机可读存储介质可以是内部存储单元,例如硬盘或内存;可以是外部存储设备,例如插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等;所述计算机可读存储介质也可以既包括内部存储单元又包括外部存储设备。
本申请实施例提供的计算机可读存储介质在缓存区域剩余空间不足时,启动垃圾回收机制,对冷、热数据进行分流:通过将冷数据搬移到闪存区域,为待写入数据的写入提供了足够的空间;通过将热数据继续保留在缓存区域,节约了带宽,为待写入数据的写入提供足够的带宽,从而使得所述固态硬盘能够长时间的保持高性能写入。
请参阅图8,图8是本申请实施例所提供的固态硬盘的写入装置200的结构示意图。本申请实施例还提供了一种固态硬盘的写入装置200,包括写入模块210、判断模块220以及垃圾回收模块230,写入模块210用于启动将待写入数据写入缓存区域的任务;判断模块220用于判断所述缓存区域的剩余空间是否小于第一阈值;垃圾回收模块230用于在所述判断模块判断出所述缓存区域的剩余空间小于所述第一阈值时,启动垃圾回收机制,将所述缓存区域内的热数据保留在所述缓存区域将所述缓存区域内的冷数据搬移到闪存区域。
以上所述仅为本申请的部分实施例,并非因此限制本申请的保护范围,凡是利用本申请说明书及附图内容所作的等效装置或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。