一种固态硬盘open block处理方法、装置及设备

文档序号:1888626 发布日期:2021-11-26 浏览:1次 >En<

阅读说明:本技术 一种固态硬盘open block处理方法、装置及设备 (Solid state disk open block processing method, device and equipment ) 是由 刘哲 王鑫 张乾坤 赵金 于 2021-08-20 设计创作,主要内容包括:本申请公开了一种固态硬盘open block处理方法,在处理openblock时,该方法不向open block填写垃圾数据,而是对其进行垃圾回收,由于不填写垃圾数据,所以不会占用带宽,因此不会影响用户读写性能,也不需要增加处理流程,实现简化open block处理流程,降低软件复杂度,提高固态硬盘的可靠性。此外,本申请还提供了一种固态硬盘open block处理装置及设备,其技术效果与上述方法的技术效果相对应。(The application discloses a solid state disk open block processing method, when open block is processed, garbage data are not filled in the open block, but are recycled, and the garbage data are not filled in, so that bandwidth is not occupied, the read-write performance of a user is not influenced, a processing flow is not required to be increased, the open block processing flow is simplified, the software complexity is reduced, and the reliability of the solid state disk is improved. In addition, the application also provides a solid-state hard disk open block processing device and equipment, and the technical effect of the device corresponds to that of the method.)

一种固态硬盘open block处理方法、装置及设备

技术领域

本申请涉及计算机技术领域,特别涉及一种固态硬盘open block处理方法、装置及设备。

背景技术

固态硬盘需要对open block即没有填满的block进行处理,以往的处理方式是向open block填写垃圾数据,填写垃圾数据是指在Nand上写入无效数据,这就占用了Nand带宽,可能影响用户写性能,导致用户的数据写入较慢,而且实现上也增加了一个处理流程,较为复杂。

可见,如何提供一种open block处理方案,避免影响用户读写性能和增加处理流程,是亟待本领域技术人员解决的问题。

发明内容

本申请的目的是提供一种固态硬盘open block处理方法、装置及设备,用以解决当前的open block处理方案影响用户读写性能且引入一个处理流程,导致过程繁琐的问题。其具体方案如下:

第一方面,本申请提供了一种固态硬盘open block处理方法,包括:

在固态硬盘中,记录block首次写入数据的时间;

判断以所述首次写入数据的时间为起点的时间阈值内,所述block是否写满数据;

若否,则判定所述block为待处理的open block,并对所述待处理的open block进行垃圾回收。

可选的,在所述判断以所述首次写入数据的时间为起点的时间阈值内,所述block是否写满数据之前,还包括:

根据Nand open block特性,确定时间阈值。

可选的,所述根据Nand open block特性,确定时间阈值,包括:

向所述固态硬盘的任意block写入部分数据以保证不写满该block,并记录写入时间;

在工作温度下,周期性读取该block上的数据,确定数据错误率,直至所述数据错误率超出ECC纠错能力,确定当前时间与所述写入时间的差值,以作为时间阈值。

可选的,所述对所述待处理的open block进行垃圾回收,包括:

复用垃圾回收流程,对所述待处理的open block进行垃圾回收。

可选的,所述复用垃圾回收流程,对所述待处理的open block进行垃圾回收,包括:

将所述待处理的open block作为源block,并选择目标block;

识别所述源block的有效数据,并读取所述有效数据;

将所述有效数据搬移至所述目标block;

在搬移完成后,擦除所述源block上的所述有效数据。

可选的,所述判断以所述首次写入数据的时间为起点的时间阈值内,所述block是否写满数据,包括:

通过定时器记录以所述首次写入数据的时间为起点的时间阈值,在所述定时器到期时,判断所述block是否写满数据。

可选的,在所述根据Nand open block特性,确定时间阈值之后,还包括:

将所述时间阈值作为基准时间阈值,根据所述基准时间阈值和block编号,分别确定所述固态硬盘中各个block的时间阈值。

可选的,所述根据所述基准时间阈值和block编号,分别确定所述固态硬盘中各个block的时间阈值,包括:

按照目标公式,根据所述基准时间阈值和block编号,分别确定所述固态硬盘中各个block的时间阈值,所述目标公式为:

time=open_block_retention_time-block_num%10;

其中,time为block的时间阈值,open_block_retention_time为基准时间阈值,block_num为block编号。

第二方面,本申请提供了一种固态硬盘open block处理装置,包括:

时间记录模块,用于在固态硬盘中,记录block首次写入数据的时间;

判断模块,用于判断以所述首次写入数据的时间为起点的时间阈值内,所述block是否写满数据;

垃圾回收模块,用于在所述block未写满数据时,判定所述block为待处理的openblock,并对所述待处理的open block进行垃圾回收。

第三方面,本申请提供了一种固态硬盘open block处理设备,包括:

存储器:用于存储计算机程序;

处理器:用于执行所述计算机程序,以实现如上所述的固态硬盘open block处理方法。

本申请所提供的一种固态硬盘open block处理方法,包括:在固态硬盘中,记录block首次写入数据的时间;判断以首次写入数据的时间为起点的时间阈值内,block是否写满数据;若否,则判定block为待处理的open block,并对待处理的open block进行垃圾回收。可见,该方法不向open block填写垃圾数据,而是对其进行垃圾回收,由于不填写垃圾数据,所以不会占用带宽,因此不会影响用户读写性能,也不需要增加处理流程,实现简化open block处理流程,降低软件复杂度,提高固态硬盘的可靠性。

此外,本申请还提供了一种固态硬盘open block处理装置及设备,其技术效果与上述方法的技术效果相对应,这里不再赘述。

附图说明

为了更清楚的说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请所提供的固态硬盘open block处理方法实施例一的流程图;

图2为本申请所提供的固态硬盘open block处理方法实施例二的流程图;

图3为本申请所提供的固态硬盘open block处理装置实施例的示意图;

图4为本申请所提供的固态硬盘open block处理设备实施例的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的核心在于提供一种固态硬盘open block处理方法、装置及设备,用于处理没有填满用户数据的open block,降低错误率,具体的,在处理open block时,不再使用填写垃圾数据的方法,而采用定时垃圾回收的方法,简化了open block的处理流程,且避免影响用户读写性能。

下面对本申请提供的固态硬盘open block处理方法实施例一进行介绍,参见图1,实施例一包括以下步骤:

S11、在固态硬盘中,记录block首次写入数据的时间;

S12、判断以首次写入数据的时间为起点的时间阈值内,该block是否写满数据;若是,则不做处理,否则进入S13;

S13、判定该block为待处理的open block,并对待处理的open block进行垃圾回收。

固态硬盘(Solid State Disk),简称SSD,是一种主要以闪存(Nand Flash)作为永久性存储器的计算机存储设备。Nand,是指非易失性存储设备(Non-volatile MemoryDevice)。在固态硬盘中,open block是指写了一部分用户数据的block,这种block未写满,所以不能较长时间保持数据稳定,为保证固态硬盘的可靠性,需要对open block进行处理。

当前对open block的处理方式为,向open block填写垃圾数据(Dummy),垃圾数据只是为了实现填充的效果,并非用户数据。这种处理方式,一方面引入了一个新的处理流程,即填写垃圾数据的流程,导致open block的处理过程更加繁琐,另一方面填写垃圾数据时占用带宽,会影响到用户的读写性能。

针对上述问题,本申请在处理open block时,不再使用填写垃圾数据的方法,而采用定时垃圾回收的方法。具体流程为:在block首次写入数据时,如block写第1个page时,记录首次写入数据的时间;监测以首次写入数据的时间为起点的时间阈值内,该block是否写满数据;若写满,则不做处理,否则认为该block为待处理的open block,并对待处理的openblock进行垃圾回收。

作为一种具体的实施方式,可以通过定时器记录以首次写入数据的时间为起点的时间阈值,在定时器到期时,触发判断block是否写满数据的步骤。若写满,则关闭定时器,否则判定该block为待处理的open block,并对待处理的open block进行垃圾回收。

作为一种具体的实施方式,可以复用正常垃圾回收流程,以实现对待处理的openblock的垃圾回收。具体的,调用已有的垃圾回收流程,将有效数据从当前block搬移至目标block。

作为一种具体的实施方式,上述时间阈值可以根据Nand open block特性而设定。Nand open block特性是Nand特性的一个方面,涉及到没有写满数据的block的数据保持时间,超出这个时间,block上的数据就可能丢失。

本实施例所提供的固态硬盘open block处理方法,包括:在固态硬盘中,记录block首次写入数据的时间;判断以首次写入数据的时间为起点的时间阈值内,block是否写满数据;若否,则判定block为待处理的open block,并对待处理的open block进行垃圾回收。可见,该方法不向open block填写垃圾数据,而是对其进行垃圾回收,由于不填写垃圾数据,所以不会占用带宽,因此不会影响用户读写性能,也不需要增加处理流程,实现简化open block处理流程,降低软件复杂度,提高固态硬盘的可靠性。

下面开始详细介绍本申请提供的固态硬盘open block处理方法实施例二。实施例二基于前述实施例一实现,并在实施例一的基础上进行了一定程度上的拓展,一方面,实施例二给出了时间阈值的具体计算过程,另一方面,为避免集中触发垃圾回收,实施例二区分开不同block的时间阈值,以实现离散化垃圾回收。

参见图2,实施例二具体包括以下步骤:

S21、向固态硬盘的任意block写入部分数据以保证不写满该block,并记录写入时间。

S22、在工作温度下,周期性读取该block上的数据,确定数据错误率,直至数据错误率超出ECC纠错能力,确定当前时间与写入时间的差值,以作为时间阈值。

S23、将时间阈值作为基准时间阈值,根据基准时间阈值和block编号,分别确定固态硬盘中各个block的时间阈值。

具体的,按照目标公式,根据基准时间阈值和block编号,分别确定固态硬盘中各个block的时间阈值,目标公式如下:

time=open_block_retention_time-block_num%10;

其中,time为block的时间阈值,open_block_retention_time为基准时间阈值,block_num为block编号。

可以理解的是,上述目标公式仅作为一种可行的离散方式提供,实际应用中,也可以选用其他的离散方式,如上述10也可以选用其他数值,只要保证不同block的时间阈值不同,避免集中进行垃圾回收即可。

S24、在固态硬盘中,记录目标block首次写入数据的时间;

S25、以首次写入数据的时间为起点,判断在目标block的时间阈值内,目标block是否写满数据;若是,则不做处理,若否,则进入S26。

作为一种具体的实施方式,通过定时器记录以首次写入数据的时间为起点的时间阈值,在定时器到期时,判断目标block是否写满数据。

S26、判定目标block为待处理的open block,并复用垃圾回收流程,对待处理的open block进行垃圾回收。

垃圾回收过程具体包括:将待处理的open block作为源block,并选择目标block;识别源block的有效数据,并读取有效数据;将有效数据搬移至目标block;在搬移完成后,擦除源block上的有效数据。

基于上述实施例,下面以实际应用为例对open block处理过程进行说明。

第一,测试Nand open block数据保持时间

对Nand中的不同编号的block,需要测试其open block特性,具体流程为:

(1)针对所选的block,写入1page数据;

(2)在工作温度下,1分钟读取一次,测定其数据错误率;直到数据错误率超出ECC纠错能力时,记录对应的时间,进而得到时间阈值;

(3)将block擦除,重新写入更多page的数据,重复上述步骤,直到对所有openblock page范围遍历完毕。

以上测试进行完毕,就可以获取到open block的数据保持时间,即基准时间阈值。

第二,Open block垃圾回收的流程

(1)确定待处理的open block为源block;

(2)识别出源block的有效数据,并读取有效数据;

(3)选择目标block为数据写入block;

(4)将源block读取出的有效数据写入到目标block;

(5)若数据全部搬移完毕,将源block擦除。

第三,open block处理流程

(1)block写第1个page时,开启1小时的定时器,具体时间根据Nand open block特性定;

(2)如果在定时器时间内block已经填满,就关闭定时器;

(3)如果定时器时间内block没有填满,直接对此block发起垃圾回收,复用正常垃圾回收流程。

第四,防止open block导致的搬移集中触发

数据搬移会导致background的数据读和数据写发生,影响用户感知到的性能,如果多个open block都需要进行数据搬移,对用户影响更大。本实施例将open block的定时器进行离散处理以防止这种问题发生,具体按照下式进行离散处理:

time=open_block_retention_time-block_num%10;

上式的单位为分钟。

这样,不同的block的定时器时间有所不同,能防止open block数据搬移集中触发。

可见,本实施例所提供的固态硬盘open block处理方法,不向open block填写垃圾数据,而是对其进行垃圾回收,所以不会影响用户读写性能,有助于简化open block处理流程,降低软件复杂度,提高固态硬盘的可靠性。

下面对本申请实施例提供的固态硬盘open block处理装置进行介绍,下文描述的固态硬盘open block处理装置与上文描述的固态硬盘open block处理方法可相互对应参照。

如图3所示,本实施例的固态硬盘open block处理装置,包括:

时间记录模块31,用于在固态硬盘中,记录block首次写入数据的时间;

判断模块32,用于判断以首次写入数据的时间为起点的时间阈值内,block是否写满数据;

垃圾回收模块33,用于在block未写满数据时,判定block为待处理的open block,并对待处理的open block进行垃圾回收。

在一些具体的实施例中,还包括:

时间阈值确定模块,用于根据Nand open block特性,确定时间阈值。

在一些具体的实施例中,时间阈值确定模块包括:

数据写入单元,用于向固态硬盘的任意block写入部分数据以保证不写满该block,并记录写入时间;

错误率确定单元,用于在工作温度下,周期性读取该block上的数据,确定数据错误率,直至数据错误率超出ECC纠错能力,确定当前时间与写入时间的差值,以作为时间阈值。

在一些具体的实施例中,垃圾回收模块具体用于:

复用垃圾回收流程,对待处理的open block进行垃圾回收。

在一些具体的实施例中,垃圾回收模块包括:

选择单元,用于将待处理的open block作为源block,并选择目标block;

有效数据读取单元,用于识别源block的有效数据,并读取有效数据;

数据搬移单元,用于将有效数据搬移至目标block;

数据擦除单元,用于在搬移完成后,擦除源block上的有效数据。

在一些具体的实施例中,判断模块具体用于:

通过定时器记录以首次写入数据的时间为起点的时间阈值,在定时器到期时,判断block是否写满数据。

在一些具体的实施例中,还包括:

时间阈值更新模块,用于将时间阈值作为基准时间阈值,根据基准时间阈值和block编号,分别确定固态硬盘中各个block的时间阈值。

在一些具体的实施例中,时间阈值更新模块具体用于:

按照目标公式,根据基准时间阈值和block编号,分别确定固态硬盘中各个block的时间阈值,目标公式为:

time=open_block_retention_time-block_num%10;

其中,time为block的时间阈值,open_block_retention_time为基准时间阈值,block_num为block编号。

本实施例的固态硬盘open block处理装置用于实现前述的固态硬盘open block处理方法,因此该装置的具体实施方式可见前文中的固态硬盘open block处理方法的实施例部分,这里不再赘述。

此外,本申请还提供了一种固态硬盘open block处理设备,如图4所示,包括:

存储器100:用于存储计算机程序;

处理器200:用于执行所述计算机程序,以实现如上文所述的固态硬盘open block处理方法。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种存储桶索引重分裂的方法、装置、设备和介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类