固态硬盘使用方法及装置制造方法

文档序号:6525208阅读:266来源:国知局
固态硬盘使用方法及装置制造方法
【专利摘要】本发明实施例提供一种固态硬盘使用方法及装置,该方法包括:当需要对固态硬盘中的数据块进行操作时,根据固态硬盘的负载均衡表确定待操作的数据块的潜伏期;判断数据块的潜伏期是否大于预警值,预警值小于典型潜伏期,典型潜伏期为预设的对固态硬盘中的数据块操作失败时的潜伏期;若数据块的潜伏期大于预警值,则禁止对数据块执行操作。该方法中,通过对各Block当前的潜伏期与预警值进行比较,动态的监控实际操作的Block的潜伏期,在当前的潜伏期小于或等于预警值时对该Block进行操作,从而从物理特性上做到真正的负载均衡,在一定程度上减少了坏块的产生,尽可能使用了保留块,从而延长了SSD的寿命。
【专利说明】固态硬盘使用方法及装置
【技术领域】
[0001 ] 本发明实施例涉及存储【技术领域】,尤其涉及一种固态硬盘使用方法及装置。
【背景技术】
[0002]大部分固态硬盘(Solid State Disk, SSD)通过非易失性随机访问存储介质一与非门闪存(NAND Flash)实现,NAND Flash可分为单阶存储单元(Single Level Cell,SLC)和多阶存储单元(Multi Level Cell,MLC)。NAND Flash通常由内部存储器和存储矩阵组成。其中,存储矩阵包括若干个块(Block),每个Block又包括若干个页(Page),每个Page进一步的包括若干个字节(Byte)。目前市面上的NAND Flash多采用MLC芯片,对NAND Flash的操作主要为读、写和擦除。NAND Flash的读写以页(Page)为单位,擦除以块(Block)为单位,在进行写操作之前必须进行页面擦除操作,擦写过程中会对NAND Flash内部浮栅晶体管的绝缘层造成破换。当发生擦除失败等时,NAND Flash会主动上报SSD,使得SSD置操作失败的Block为坏块(Bad Block)。随着NAND Flash擦写次数(本领域技术人员也称之为PE Cycle)的增加,当坏块数量达到一定程度,例如3%时,则认为NAND Flash达到使用寿命。
[0003]为避免对某些热点Block频繁擦写发生坏块而导致SSD寿命降低,现有技术中引入负载均衡技术,采用均衡表记录每个Block的擦写次数。每次写入数据时,优先选择擦写次数较低的Block进行操作,从而保证整个SSD中各Block的擦写次数在同一个水平,即对各Block的擦写次数尽量均匀。另外,SSD中有一部分冗余Block作为保留块,当发生坏块时,用保留块来替换失效的Block,避免整个SSD过早失效,从而提高SSD的使用寿命。
[0004]假设SSD有32000个Block,写入某数据时,会均匀选择该32000个Block,从而保证各Block的擦写次数相差不大,例如通过32000X 3K次完成数据写入。然而,不同Block的寿命是不同的,该数据写入过程中,若某些Block达不到3K次就发生坏块,则需要使用冗余Block来替换坏块,当冗余Block消耗完时,SSD的寿命也随之耗尽。

【发明内容】

[0005]本发明实施例提供一种固态硬盘使用方法及装置,通过负载均衡以减少坏块的产生从而减少保留块的使用,最终到达提高固态硬盘使用寿命的目的。
[0006]第一个方面,本发明实施例提供一种固态硬盘使用方法,包括:
[0007]当需要对固态硬盘中的数据块进行操作时,根据所述固态硬盘的负载均衡表确定待操作的数据块的潜伏期,所述潜伏期为执行所述操作而持续的时间,所述操作包括擦除操作或写操作;
[0008]判断所述数据块的潜伏期是否大于预警值,所述预警值小于典型潜伏期,所述典型潜伏期为预设的对所述固态硬盘中的数据块操作失败时的潜伏期;
[0009]若所述数据块的潜伏期大于所述预警值,则禁止对所述数据块执行所述操作。
[0010]在第一个方面的第一种可能的实现方式中,该方法还包括:[0011]若所数据块的潜伏期不大于所述预警值,则对所述数据块执行所述操作。
[0012]结合第一个方面的第一种可能的实现方式,在第一个方面的第二种可能的实现方式中,所述对所述数据块执行所述操作之后,还包括:
[0013]获得所述操作过程中的所述数据块的潜伏期;
[0014]根据获得的潜伏期更新所述负载均衡表中所述数据块的潜伏期。
[0015]结合第一个方面、第一个方面的第一种或第二种可能的实现方式,在第一个方面的第三种可能的实现方式中,所述禁止对所述数据块执行所述操作之后,还包括:
[0016]在预设的预坏块表中记录所述数据块,所述预坏块表用于指示需要减少操作的数据块。
[0017]第二个方面,本发明实施例提供一种固态硬盘使用方法,包括:
[0018]根据固态硬盘的负载均衡表确定待操作的数据块;
[0019]对所述数据块进行操作,其中,所述操作包括擦除操作或写操作;
[0020]在所述负载均衡表中记录在所述操作过程中所述数据块的潜伏期,其中,所述潜伏期为对所述数据块执行所述操作而持续的时间;
[0021]判断所述数据块的潜伏期是否大于预警值,其中,所述预警值小于典型潜伏期,所述典型潜伏期为预设的对所述固态硬盘中的数据块操作失败时的潜伏期;
[0022]若所述数据块的潜伏期大于所述预警值,则在预设的预坏块表中记录所述数据块。
[0023]第三个方面,本发明实施例提供一种固态硬盘使用装置,包括:
[0024]确定模块,用于当需要对固态硬盘中的数据块进行操作时,根据所述固态硬盘的负载均衡表确定的数据块的潜伏期,所述潜伏期为对所述数据块执行所述操作而持续的时间,所述操作包括擦除操作或写操作;
[0025]判断模块,用于判断所述确定模块确定出的所述数据块的潜伏期是否大于预警值,所述预警值小于典型潜伏期,所述典型潜伏期为预设的对所述固态硬盘中的数据块操作失败时的潜伏期;
[0026]处理模块,用于若所述判断模块判断出所述数据块的潜伏期大于所述预警值,则禁止对所述数据块执行所述操作。
[0027]在第三个方面的第一种可能的实现方式中,所述处理模块,还用于若所述判断模块判断出所述数据块的潜伏期不大于所述预警值,则对所述数据块执行所述操作。
[0028]结合第三个方面的第一种可能的实现方式,在第三个方面的第二种可能的实现方式中,该装置还包括:
[0029]获取模块,用于获得所述操作过程中的所述数据块的潜伏期;
[0030]更新模块,用于根据所述获取模块获得的潜伏期更新所述负载均衡表中所述数据块的潜伏期。
[0031]结合第三个方面、第三个方面的第一种或第二种可能的实现方式,在第三个方面的第三种可能的实现方式中,该装置还包括:
[0032]记录模块,用于在所述禁止操作模块禁止对所述数据块执行所述操作之后,在预设的预坏块表中记录所述数据块,所述预坏块表用于指示需要减少所述操作的数据块。
[0033]第四个方面,本发明实施例提供一种固态硬盘使用装置,包括:[0034]选择模块,用于根据固态硬盘的负载均衡表确定数据块;
[0035]操作模块,用于对所述确定模块确定的所述数据块进行操作,其中,所述操作包括擦除操作或写操作;
[0036]记录模块,用于在所述负载均衡表中记录在所述操作过程中所述数据块的潜伏期,其中,所述潜伏期为对所述数据块执行所述操作而持续的时间;
[0037]判断模块,用于判断所述数据块的潜伏期是否大于预警值,其中,所述预警值小于典型潜伏期,所述典型潜伏期为预设的对所述固态硬盘中的数据块操作失败时的潜伏期;
[0038]所述记录模块,还用于若所述判断模块判断出所述数据块的潜伏期大于所述预警值,则在预设的预坏块表中记录所述数据块。
[0039]本发明实施例提供的固态硬盘使用方法及装置,通过对各Block当前的潜伏期与预警值进行比较,动态的监控实际操作的Block的潜伏期,在当前的潜伏期小于或等于预警值时对该Block进行操作,通过本发明实施例的方法从SSD中Block的物理特性上做到了负载均衡,在一定程度上减少了坏块的数量,进而延长了 SSD的寿命。
【专利附图】

【附图说明】
[0040]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0041]图1为本发明固态硬盘使用方法实施例一的流程图;
[0042]图2A为本发明固态硬盘编程操作的示意图;
[0043]图2B为本发明固态硬盘擦除操作的示意图;
[0044]图3为本发明固态硬盘的擦写特性示意图;
[0045]图4A为本发明基于MLC的固态硬盘的擦潜伏时间tBERS与擦写次数的关系曲线示意图;
[0046]图4B是本发明基于SLC的固态硬盘的擦潜伏时间tBERS与擦写次数的关系曲线示意图;
[0047]图5为本发明固态硬盘使用方法中确定预警值的流程图;
[0048]图6为本发明实施例中擦写次数与擦潜伏期的变化关系示意图;
[0049]图7为本发明固态硬盘使用寿命方法中根据预警值进行负载均衡的流程图;
[0050]图8为本发明实施例提供的一种固态硬盘使用状态图;
[0051]图9为本发明固态硬盘使用方法实施例二的流程图;
[0052]图10为本发明固态硬盘使用装置实施例一的结构示意图;
[0053]图11为本发明固态硬盘使用装置实施例二的结构示意图;
[0054]图12为本发明固态硬盘使用装置实施例三的结构示意图。
【具体实施方式】
[0055]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0056]图1为本发明固态硬盘使用方法实施例一的流程图。本实施例的执行主体为固态硬盘使用装置,其可设置在SSD上也可以是SSD本身,适用于需要均衡SSD中各Block负载的场景。具体的,本实施例包括如下步骤:
[0057]101、当需要对固态硬盘中的数据块进行操作时,根据固态硬盘的负载均衡表确定待操作数据块的潜伏期,潜伏期为对数据块执行操作而持续的时间,操作包括擦除操作或写操作。
[0058]NAND Flash的地址、命令和数据的输入输出(Input/Output,I/O)端口是复用的,读写数据的过程比较复杂。一般来说,每次对SSD中的待操作的数据块(Block)发送操作命令,如擦除操作命令、写操作命令后,需要等待一定的时长以执行该操作。例如,对于擦除操作来说,需要等等一定的时长以对数据块进行擦除;对于写操作来说,需要等待一定的时长以对数据块进行数据写入。然后才能发送查询命令以判断是否成功执行擦除操作或写操作,最终实际完成对数据块的操作。其中,该需要等待的时间称之为潜伏期。擦除操作、写操作简称为擦写操作。经验证发现:各Block的潜伏期随擦写次数的变化而呈规律性的变化,潜伏期是物理上真实反映Block健康状态的参数。
[0059]在本发明实施例中,负载均衡表中记录有各个Block的潜伏期,对于一个具体的数据块,固态硬盘使用装置查询负载均衡表获取该数据块的潜伏期。
[0060]102、判断数据块的潜伏期是否大于预警值,预警值小于典型潜伏期,典型潜伏期为预设的对固态硬盘中的数据块操作失败时的潜伏期。
[0061]对每一数据块(Block)来说,当潜伏期达到一定程度时,若继续对该Block进行擦写,则可能会出现失败。本实施例中,可预先对样本固态硬盘中的各Block发生擦写失败时的潜伏期进行统计,得到典型潜伏期。例如,将所有Block中发生擦写失败时的最小潜伏期作为典型潜伏期,预警值小于该典型潜伏期;或者,将所有或部分Block发生擦写失败时的潜伏期的平均值作为典型潜伏期,预警值小于该典型潜伏期;或者,按照其他规则统计出典型潜伏期并设定预警值。
[0062]103、若数据块的潜伏期大于预警值,则禁止对数据块执行操作。
[0063]固态硬盘使用装置根据步骤102中判断出的潜伏期与预警值的关系,决定是否继续对该数据块执行操作。
[0064]具体的,若Block当前的潜伏期大于预警值,表示该数据块寿命较差,即该数据块能够承担的擦写次数比较低,若继续对该数据块进行操作会导致擦写失败等。此时,即使该数据块的擦写次数远远小于其他Block的擦写次数,也禁止对该数据块进行擦除操作、写操作。
[0065]可选的,若待操作数据块的潜伏期不大于预警值,表示该待操作数据块寿命较强,即该待操作数据块能够承担的擦写次数比较高,可对数据块执行擦写操作,即可执行擦除操作、写操作。
[0066]可选的,本实施例中,对于潜伏期大于预警值的待操作数据块,固态硬盘使用装置在禁止对其执行操作后,还可在预设的预坏块表中记录该待操作数据块,该预坏块表用于指示需要减少擦写操作的数据块。例如,在本发明的实施例中,可设置预坏块表,预坏块表的格式和用于记录坏块的坏块表的格式相同,即每个块中有I?2bit指示该块是否可以正常使用或作为优选使用;如OO指示为好块,Ol指示为坏块,10指示为预坏块类型。另外,根据设定的预警值,在对块进行擦写过程中记录当前除潜伏时间,当当前除潜伏时间到达预警值时,暂不使用该块,将该类块加入预坏块表。对于加入到预坏块表中的Block,暂时不对其进行擦写操作或减少擦写操作的次数,以避免其很快成为坏快,但不影响对其进行的读操作。
[0067]需要说明的是,预坏块表中记录的Block并不是表真正的坏数据块,而是若对其继续操作则容易变为坏数据块的数据块。将潜伏期大于预警值的Block记录在预坏块表中,减少或暂停对该Block的擦除操作或写操作,从而在一定程度上减少坏块出现的概率。
[0068]可选的,上述实施例一种,对数据块执行操作之后,固态硬盘使用装置获得操作过程中的数据块的潜伏期;根据获得的潜伏期更新负载均衡表中所述数据块的潜伏期。
[0069]具体的,为了使负载均衡表中记录各Block当前的潜伏期,对于每一具体的数据块,每次执行完操作后,获取在操作过程中所述数据块的潜伏期,并用获取的潜伏期更新负载均衡表。例如,在执行所述操作之前,根据所述数据块的潜伏期未2ms,在执行所述操作过程中,所述数据块的潜伏期为3ms,则可以将负载均衡表中所述数据块的潜伏期更新为3ms。换一种表达方式,在对数据块执行本次操作之后,可以根据本次操作过程中该数据块的潜伏期更新负载均衡表中所述数据块的潜伏期。
[0070]可选的,上述实施例一中,在判断待操作数据块的潜伏期是否大于预警值之前,可统计出固态硬盘的擦写次数与潜伏期变化的特点,从而确定出预警值。一般来说,潜伏期包括擦潜伏期tBERS与写潜伏期tPROG。具体的,请参照图2A、图2B。
[0071]图2A为本发明固态硬盘编程操作的示意图。基于与非门闪存的固态硬盘地址、命令和数据的1/0通道是复用的,对一个页编程的过程,即写操作的过程如下:先发送一个时钟周期的写操作命令(例如“0x80”),再发送五个时钟周期的写地址,然后发送数据。数据发送完成后,发送一个时钟周期的写操作命令(例如“0x10”)表示数据已发送完,再等待一段时间后,进入查询状态判断是否写数据成功。如果没有成功,需要重新写数据。该过程中等待的一段时间称之为写潜伏期(tPROG)。
[0072]图2B为本发明固态硬盘擦除操作的示意图。同理,基于与非门闪存的固态硬盘地址、命令和数据的1/0通道是复用的,对一个数据块擦除的过程,即擦除操作的过程如下:先发送一个时钟周期的擦除操作命令(例如“0x60”),再发送三个时钟周期的擦地址,发送一个时钟周期的擦除操作命令(例如“0xD0”),再等待一段时间长后,进入查询状态判断是否擦除数据成功,如果没有成功则表示发送擦失败,需要将正在操作的Block置为坏块。该过程中等待的一段时间称之为擦潜伏期(tBERS)。
[0073]一般来说,擦潜伏时间tBERS和写潜伏时间tPROG会随着擦写次数的增加而发生变化。具体的,请参见图3。
[0074]图3为本发明固态硬盘的擦写特性示意图。请参照图3,横坐标为擦写次数,左边的纵坐标为擦除潜伏时间的变化值,其单位为us (微秒),右边的纵坐标为写潜伏时间的变化值,其单位为US,虚线所示为擦潜伏期随擦写次数发生变化的变化曲线,实线所示为写潜伏期随擦写次数发生变化的变化曲线。随着擦写次数的增加,固态硬盘的阈值电压会发生变化,由图3可知,当达到一定程度之后就会出现擦失败或写失败,对应到可以直接测量的数据,即擦潜伏时间tBERS和写潜伏时间tPROG会随着擦写次数的增加而发生变化。[0075]经验证发现,固态硬盘的擦写次数与擦潜伏期的变化关系呈现一定的规律。下面,以擦潜伏期与擦写次数的关系为例对本发明进行详细说明,具体的,可参见图4A与图4B。
[0076]图4A为本发明基于MLC的固态硬盘的擦潜伏时间tBERS与擦写次数的关系曲线示意图,图4B是本发明基于SLC的固态硬盘的擦潜伏时间tBERS与擦写次数的关系曲线示意图。
[0077]请参照图4A与图4B,横坐标为擦写次数,左边的纵坐标为擦除潜伏时间的变化值,其单位为ms (毫秒)。擦潜伏时间tBERS会随着读擦写次数的增加而变化,并且具有一定的规律性:擦潜伏时间tBERS会随着读擦写次数的增加而规律性增大,当块的擦潜伏时间tBERS大到一定程度时,对该块擦除会出现擦失败。
[0078]同理,以写潜伏期为例:写潜伏时间tPROG会随着读擦写次数的增加而规律性减少,当块的写潜伏时间tPROG减少到一定程度时,对该块写会出现写失败。
[0079]综合上述可知,确定预警值的过程中,统计出固态硬盘的擦写次数与潜伏期变化的特点,动态监控实际操作的块的擦潜伏时间tBERS或页的写潜伏时间tPROG,设定预警值,并根据该预警值,设置多个小于该预警值的阈值。当擦潜伏时间tBERS或写潜伏时间tPROG到达相应设定的阈值后做不同处理(如减少使用频率或暂不使用等),在块失效前将其暂时屏蔽,从而减少保留块消耗。即通过动态预判的方式识别出不同品质的块,尽量减少对品质较差块的使用,从而整体上延长了固态硬盘的使用寿命。下面,以根据擦写次数与擦潜伏期的变化关系确定预警值为例对本发明进行详细阐述。
[0080]图5为本发明固态硬盘使用方法中确定预警值的流程图。如图5所示,本实施例包括如下步骤:
[0081]201、选取样本,准备擦写测试。
[0082]选择某型号新批次的一定数量的NAND Flash作为样本,准备擦写测试,测试各Block擦写失败时的潜伏期。
[0083]202、对Block进行擦写,记录擦潜伏期。
[0084]每擦写一次,记录该Block的擦潜伏期。
[0085]203、判断是否出现擦失败。
[0086]204、确定所有样本测试完毕。
[0087]205、判断被测试的NAND Flash的数量是否达到预定的测试数量。
[0088]206、确定擦潜伏期随着擦写次数增加而变化的变化关系。
[0089]具体的,可参见图6,图6为本发明实施例中擦写次数与擦潜伏期的变化关系示意图,其中,横坐标为擦写次数,纵坐标为擦潜伏期(tBERS)。如图6所示,当擦写次数为I~200时,擦潜伏期约为3ms ;当擦写次数为200~400时,擦潜伏期约为4ms ;当擦写次数为400~600时,擦潜伏期约为5ms……当擦写次数大于3400时候,擦潜伏期约为10ms。
[0090]207、确定典型潜伏期。
[0091]若潜伏期随擦写次数的变化小于预设值,则确定该擦潜伏期为典型潜伏期。例如,请参照图6,当擦写次数大于3400时,潜伏期基本保持在IOms而不再发生变化,则可以选择IOms为典型潜伏期,而将9ms设置为预警值,达到该预警值意味着如果继续使用该Block,则该Block可能很快会变为坏块。[0092]进一步的,上述实施例一中,还可根据预警值,设置多级阈值以对各Block进行可靠性分级,其中各阈值小于所述预警值。此时,对于每一阈值,可根据该阈值,对负载均衡表中当前的潜伏期小于或等于阈值的Block进行操作,使各Block的同时到达阈值。
[0093]具体的,再请参照图3,可根据需求设置第一级阈值为6ms,第二级阈值为7ms,第三级阈值为8ms,第四级阈值为9ms。最初进行擦写操作时,可随机对任一个Block进行操作,当数据块的潜伏期即将达到第一阈值时,则避免对该数据块进行操作,而对其他各Block进行操作,使得各Block均达到第一级阈值。当各Block都达到第一级阈值后,在保证潜伏期小于第二级阈值的前提下,可随机对各Block进行操作……以此类推,从而保证按照阈值对各Block进行负载均衡以提高SSD的使用寿命。该过程中,若产生坏块,则不对该Block进行操作,例如,各Block都达到第三级阈值时,若随机操作使得某Block发生坏块,此时,在保证潜伏期小于第四级阈值的前提下,可随机对其他各Block进行操作。另外,对于每一级阈值,可设置不同的操作方式,例如,当数据块的潜伏期小于第一阈值的时候,可随机的对该数据块进行擦写操作;当数据块的潜伏期介于第一级与第二级阈值之间时,可减少对该数据块的擦写操作;当数据块的潜伏期大于第二级阈值时,可暂停对该数据块的操作。
[0094]需要说明的是,上述过程是设置多级阈值以对各block进行可靠性分级,从而区分不同品质的Block,达到不同的阈值后做不同的处理。在实际的实施方式中,也可设置多级阈值区分不同品质的Page,达到不同的阈值后做不同的处理。从而实现对Block更精细
化的管理。
[0095]图7为本发明固态硬盘使用寿命方法中根据预警值进行负载均衡的流程图。如图7所示,本实施例包括如下步骤:
[0096]301、生成负载均衡表。
[0097]本步骤中,将每个Block初始的潜伏期都进行记录。
[0098]302、进行操作时监控并更新各Block的负载均衡表。
[0099]在对Block的擦写过程中,监控各Block当前的潜伏期,并将当前的潜伏期更新到负载均衡表中。例如,若某Block进行擦除操作前初始的潜伏期为3ms,若对该Blockl进行擦除操作,第100次擦除操作后该Block的潜伏期变更为4ms,则在第100次擦除操作后将负载均衡表中的潜伏期更新为4ms。
[0100]303、判断当前的潜伏期是否小于或等于预警值。
[0101]对于一具体的数据块,每次擦写操作后,将该数据块的潜伏期与预警值进行比较,使得Block之间的负载均衡参考负载均衡表来实现,即若当前的潜伏期小于或等于预警值,在返回步骤302 ;否则,执行步骤304。
[0102]304、将该待操作数据块加入到预坏块表中,暂时不对该待操作数据块进行擦写操作,在所有Block或大部分Block的潜伏期都大于预警值时,用保留块替换预坏块表中的Block。
[0103]需要说明的是,对于加入到预坏块表中的Block,暂时不对其进行擦写操作或减少擦写操作的次数,以避免其很快成为坏快,但不影响对其进行的读操作。
[0104]305、判断保留块是否耗尽。
[0105]SSD在设计时会预留一部分冗余Block作为保留块,如100G的SSD其裸容量可能为128G,该28G即可用作保留块。SSD判断保留块是否耗尽,若保留块未耗尽,则返回步骤304 ;否则,若保留块耗尽,则执行步骤306。
[0106]306、继续对Block进行操作。
[0107]若保留块耗尽,则对预坏块表中的Block继续进行操作。
[0108]307、判断Block是否发生擦写失败。
[0109]继续操作的过程中,判断当前操作的预坏块表中的Block是否发生擦写失败,若未发生,则返回步骤306 ;否则,若发生擦写失败,则执行步骤308.[0110]308、将该Block加入坏块表,作为真实坏Block。
[0111]本发明实施例提供的固态硬盘使用方法,通过对待操作数据块的潜伏期与预警值进行比较,动态的监控待操作数据块的潜伏期,禁止对潜伏期大于预警值的Block进行操作,从而从物理特性上做到真正的负载均衡,在一定程度上减少了坏块的产生,尽可能使用了保留块,从而延长了 SSD的寿命。例如,如图8所示,图8为本发明实施例提供的一种固态硬盘使用状态图,横坐标用于指示各Block实际能够承载的最大擦写次数,纵坐标用于指示该SSD中的Block。其中,blockl实际能够承载的最大擦写次数约为3.2K次,Block2实际能够承载的最大擦写次数约为4.8K次,Block3实际能够承载的的最大擦写次数约为1.5K
次......。现有技术中,为保证各Block之间的负载均衡,会均匀的对每个Block进行相同次
数的擦写,根据这种方式,若各Block的擦写次数达到3K次时,block3、blockl5、block26可能会发生坏块。而本实施例提供的方法,不根据各Block的擦写次数来实现各Block之间的负载均衡,而是根据各Block当前的潜伏期与预警值的大小关系实现负载均衡以提高SSD的使用寿命。例如,假设预警值为9ms,Bl0ck3在进行1.2K次的擦写后,若继续对其进行擦写,则潜伏期有可能大于9ms,此时,暂停对block3的擦写;而对Block4进行擦写1.2K次后,若继续对其进行擦写,也不会导致潜伏期大于9ms,因此,可继续对blcok4进行擦写。根据上面的描述可知,通过本发明实施例的方法从Block的物理特性上做到了真正的负载均衡,在一定程度上减少了坏块的数量,进而延长了 SSD的寿命。
[0112]图9为本发明固态硬盘使用方法实施例二的流程图。相较于图1实施例中,本实施例中,固态硬盘使用装置在对各Block进行操作之前,先根据负载均衡表确定待操作的数据块。具体的,本实施例包括如下步骤:
[0113]401、根据固态硬盘的负载均衡表确定待操作的数据块。
[0114]本实施例中,负载均衡表中存储有潜伏期不大于预警值的Block。每次需要进行擦除操作或写操作之前,先从负载均衡表中确定待操作的数据块。优选的,可选择负载均衡表中潜伏期小的Block做为待操作的数据块。
[0115]402、对所述数据块进行操作,其中,操作包括擦除操作或写操作。
[0116]在确定出数据块后,对该数据块进行擦除操作或写操作。
[0117]403、在负载均衡表中记录在操作过程中所述数据块的潜伏期,其中,潜伏期为对所述数据块执行所述操作而持续的时间。
[0118]为了使负载均衡表中存储各Block当前的潜伏期,对于每一具体的数据库,每次执行完操作后,获取在操作过程中所述数据块的的潜伏期,并用获取的潜伏期更新负载均衡表。
[0119]404、判断所述数据块的潜伏期是否大于预警值,其中,预警值小于典型潜伏期,典型潜伏期为预设的对固态硬盘中的数据块操作失败时的潜伏期;
[0120]405、若待操作数据块的潜伏期大于预警值,则在预设的预坏块表中记录待操作数据块。
[0121]为确保负载均衡表中的各Block均为可操作的Block,即确保负载均衡表中的各Block的潜伏期均不大于预警值。本步骤中,对于具体的数据块,执行完操作后,固态硬盘使用装置判断该数据块的潜伏期是否大于预警值,若大于预警值,则将该数据块记录到预坏块表中,并从负载均衡表中移出;否则,若数据块的潜伏期不大于预警值,则在负载均衡表中记录该数据块执行操作后的潜伏期。例如,在本发明的实施例中,可设置预坏块表,预坏块表的格式和用于记录坏块的坏块表的格式相同,即每个块中有I?2bit指示该块是否可以正常使用或作为优选使用;如00指示为好块,01指示为坏块,10指示为预坏块类型。另夕卜,根据设定的预警值,在对块进行擦写过程中记录当前除潜伏时间,当当前除潜伏时间到达预警值时,暂不使用该块,将该类块加入预坏块表。对于加入到预坏块表中的Block,暂时不对其进行擦写操作或减少擦写操作的次数,以避免其很快成为坏快,但不影响对其进行的读操作。
[0122]需要说明的是,本实施例中,还可根据预警值,设置多级阈值以对各Block进行可靠性分级。具体的,统计出固态硬盘的擦写次数与潜伏期变化的特点,动态监控实际操作的块的擦潜伏时间tBERS或页的写潜伏时间tPROG,可以设定出预警值,并根据该预警值,设置多个小于该预警值的阈值。当擦潜伏时间tBERS或写潜伏时间tPROG到达相应设定的阈值后做不同处理(如减少使用频率或暂不使用等),在块失效前将其暂时屏蔽,从而减少保留块消耗。即通过动态预判的方式识别出不同品质的块,尽量减少对品质较差块的使用,从而整体上延长了固态硬盘的使用寿命。
[0123]本发明实施例提供的固态硬盘使用方法,执行操作之前先确定出潜伏期小于预警值的数据块作为待操作数据块并执行操作,动态的监控待操作数据块的潜伏期,禁止对潜伏期大于预警值的Block进行操作,从而从物理特性上做到真正的负载均衡,在一定程度上减少了坏块的产生,尽可能使用了保留块,从而延长了 SSD的寿命。
[0124]图10为本发明固态硬盘使用装置实施例一的结构示意图,本实施例提供的固态硬盘使用装置是与本发明图1实施例对应的装置实施例,具体实现过程在此不再赘述。具体的,本实施例提供的固态硬盘使用装置100具体包括:
[0125]确定模块11,用于当需要对固态硬盘中的数据块进行操作时,根据固态硬盘的负载均衡表确定的数据块的潜伏期,潜伏期为对数据块执行操作而持续的时间,操作包括擦除操作或写操作;
[0126]判断模块12,用于判断确定模块11确定出的数据块的潜伏期是否大于预警值,预警值小于典型潜伏期,典型潜伏期为预设的对固态硬盘中的数据块操作失败时的潜伏期;
[0127]处理模块13,用于若判断模块12判断出数据块的潜伏期大于预警值,则禁止对数据块执行操作。
[0128]本发明实施例提供的固态硬盘使用装置,通过对待操作数据块的潜伏期与预警值进行比较,动态的监控待操作数据块的潜伏期,禁止对潜伏期大于预警值的Block进行操作,从而从物理特性上做到真正的负载均衡,在一定程度上减少了坏块的产生,尽可能使用了保留块,从而延长了 SSD的寿命。[0129]可选的,处理模块13,还用于若判断模块12判断出数据块的潜伏期不大于预警值,则对数据块执行操作。
[0130]图11为本发明固态硬盘使用装置实施例二的结构示意图。如图11所示,本实施例提供的固态硬盘使用装置在上述图10所示装置的基础上,进一步的,还包括:
[0131]获取模块14,用于获得操作过程中的数据块的潜伏期;
[0132]更新模块15,用于根据获取模块14获得的潜伏期更新负载均衡表中数据块的潜伏期。
[0133]再请参照图8,固态硬盘使用装置还包括:
[0134]记录模块16,用于在禁止操作模块禁止对数据块执行操作之后,在预设的预坏块表中记录数据块,预坏块表用于指示需要减少操作的数据块。
[0135]图12为本发明固态硬盘使用装置实施例三的结构示意图,本实施例提供的固态硬盘使用装置是与本发明图9实施例对应的装置实施例,具体实现过程在此不再赘述。具体的,本实施例提供的固态硬盘使用装置200具体包括:
[0136]选择模块21,用于根据固态硬盘的负载均衡表确定数据块;
[0137]操作模块22,用于对确定模块确定的数据块进行操作,其中,操作包括擦除操作或写操作;
[0138]记录模块23,用于在负载均衡表中记录在操作过程中数据块的潜伏期,其中,潜伏期为对数据块执行操作而持续的时间;
[0139]判断模块24,用于判断数据块的潜伏期是否大于预警值,其中,预警值小于典型潜伏期,典型潜伏期为预设的对固态硬盘中的数据块操作失败时的潜伏期;
[0140]记录模块23,还用于若判断模块24判断出数据块的潜伏期大于预警值,则在预设的预坏块表中记录数据块。
[0141]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0142]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种固态硬盘使用方法,其特征在于,包括: 当需要对固态硬盘中的数据块进行操作时,根据所述固态硬盘的负载均衡表确定待操作的数据块的潜伏期,所述潜伏期为执行所述操作而持续的时间,所述操作包括擦除操作或写操作; 判断所述数据块的潜伏期是否大于预警值,所述预警值小于典型潜伏期,所述典型潜伏期为预设的对所述固态硬盘中的数据块操作失败时的潜伏期; 若所述数据块的潜伏期大于所述预警值,则禁止对所述数据块执行所述操作。
2.根据权利要求1所述的方法,其特征在于,还包括: 若所数据块的潜伏期不大于所述预警值,则对所述数据块执行所述操作。
3.根据权利要求2所述的方法,其特征在于,所述对所述数据块执行所述操作之后,还包括: 获得所述操作过程中的所述数据块的潜伏期; 根据获得的潜伏期更新所述负载均衡表中所述数据块的潜伏期。
4.根据权利要求1-3任意一项所述的方法,其特征在于,所述禁止对所述数据块执行所述操作之后,还包括: 在预设的预坏块表中记录所述数据块,所述预坏块表用于指示需要减少所述操作的数据块。
5.一种固态硬盘使用方法,其特征在于,包括: 根据固态硬盘的负载均衡表确`定待操作的数据块; 对所述数据块进行操作,其中,所述操作包括擦除操作或写操作; 在所述负载均衡表中记录在所述操作过程中所述数据块的潜伏期,其中,所述潜伏期为对所述数据块执行所述操作而持续的时间; 判断所述数据块的潜伏期是否大于预警值,其中,所述预警值小于典型潜伏期,所述典型潜伏期为预设的对所述固态硬盘中的数据块操作失败时的潜伏期; 若所述数据块的潜伏期大于所述预警值,则在预设的预坏块表中记录所述数据块。
6.一种固态硬盘使用装置,其特征在于,包括: 确定模块,用于当需要对固态硬盘中的数据块进行操作时,根据所述固态硬盘的负载均衡表确定的数据块的潜伏期,所述潜伏期为对所述数据块执行所述操作而持续的时间,所述操作包括擦除操作或写操作; 判断模块,用于判断所述确定模块确定出的所述数据块的潜伏期是否大于预警值,所述预警值小于典型潜伏期,所述典型潜伏期为预设的对所述固态硬盘中的数据块操作失败时的潜伏期; 处理模块,用于若所述判断模块判断出所述数据块的潜伏期大于所述预警值,则禁止对所述数据块执行所述操作。
7.根据权利要求6所述的装置,其特征在于: 所述处理模块,还用于若所述判断模块判断出所述数据块的潜伏期不大于所述预警值,则对所述数据块执行所述操作。
8.根据权利要求7所述的装置,其特征在于,还包括: 获取模块,用于获得所述操作过程中的所述数据块的潜伏期;更新模块,用于根据所述获取模块获得的潜伏期更新所述负载均衡表中所述数据块的潜伏期。
9.根据权利要求6~8任一项所述的装置,其特征在于,还包括: 记录模块,用于在所述禁止操作模块禁止对所述数据块执行所述操作之后,在预设的预坏块表中记录所述数据块,所述预坏块表用于指示需要减少所述操作的数据块。
10.一种固态硬盘使用装置,其特征在于,包括: 选择模块,用于根据固态硬盘的负载均衡表确定数据块; 操作模块,用于对所述确定模块确定的所述数据块进行操作,其中,所述操作包括擦除操作或写操作; 记录模块,用于在所述负载均衡表中记录在所述操作过程中所述数据块的潜伏期,其中,所述潜伏期为对所述数据块执行所述操作而持续的时间; 判断模块,用于判断所述数据块的潜伏期是否大于预警值,其中,所述预警值小于典型潜伏期,所述典型潜伏期为预设的对所述固态硬盘中的数据块操作失败时的潜伏期; 所述记录模块,还用于若所述判断模块判断出所述数据块的潜伏期大于所述预警值,则在预设的预坏块表中记录所`述数据块。
【文档编号】G06F12/02GK103678150SQ201310718063
【公开日】2014年3月26日 申请日期:2013年12月23日 优先权日:2013年12月23日
【发明者】周建华 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1