闪存自检的方法、固态硬盘以及存储装置与流程

文档序号:17252975发布日期:2019-03-30 09:10阅读:244来源:国知局
闪存自检的方法、固态硬盘以及存储装置与流程

本申请涉及存储技术领域,特别是涉及一种闪存自检的方法、固态硬盘以及存储装置。



背景技术:

闪存中的闪存单元(flashcell)使用浮动栅晶体管(floatinggatetransistor)的电压值来表示存储的数据。以闪存为mlc(multilevelcell)为例来说,每个闪存单元可以存储两个比特的数据:lsb(leastsignificantbit)和msb(mostsignificantbit),因此,每个闪存单元有四种工作状态(如图1所示),分别为状态1、状态2、状态3和状态4。

其中,状态1为擦除态,电压值最小,闪存单元存储的数据为11;状态2或状态3为非完全写入态,电压值介于擦除态和完全态之间,闪存单元存储的数据为10或01;状态4为完全态,电压最大,闪存单元存储的数据为00。具体来说,如果浮动栅晶体管电压值小于参考电压1,则认为闪存单元存储的数据为11,如果浮动栅晶体管电压值介于参考电压1和参考电压2之间,则认为闪存单元存储的数据为10,如果浮动栅晶体管电压值介于参考电压2和参考电压3之间,则认为闪存单元存储的数据是01,如果浮动栅晶体管电压值大于参考电压3,则认为闪存单元存储的数据是00。

当闪存长期不使用(比如长期掉电状态),那么闪存单元中的电子会发生泄漏,其电压值会降低,分布状态会发生偏移,从而产生滞留错误(retentionerror)。如图2所示,例如某个闪存单元最初写入的数据为01,为状态3,电压值介于参考电压2和参考电压3之间,之后固态硬盘中的闪存处于偶尔使用状态,即偶尔上电,且上电期间没有读写该闪存单元,那么该闪存单元上的电子会渐渐泄漏,电压值渐渐减小,当这种变化持续的时间足够久,其电压值会降低至小于参考电压2,即该闪存单元由状态3变为了状态2。之后如果读取该闪存单元,则读取到的电压值可能介于参考电压1和参考电压2之间,则判断存储的数据为10,即发生滞留错误。

当前技术中对抗滞留错误的办法是在固态硬盘中使用纠错算法。具体来说,当主机从固态硬盘的闪存中读取数据时,当读出的数据发生了滞留错误也即比特位翻转则启用纠错算法尝试纠正,如果能纠正则把纠正后的数据传给主机,如果发生滞留错误的位数较多,纠错算法无法纠正,则上报主机发生了不可纠正的错误。

现有技术是在读取数据时对滞留错误进行纠错算法纠错,如果固态硬盘的闪存中的数据滞留时间较长,发生滞留错误的位数会随着滞留时间而变多,那么会大概率发生不可纠正的错误,从而使得主机丢失数据,这是用户无法容忍的。特别是,如果主机写了一笔数据后,长期不读(比如几年都不读),那么百分百会发生不可纠正的错误,这是需要避免的。



技术实现要素:

本申请提供一种闪存自检的方法、固态硬盘以及存储装置,能够降低闪存的滞留错误,进而大大降低闪存中数据丢失的概率。

为解决上述技术问题,本申请采用的一个技术方案是:提供一种闪存自检的方法,该方法包括:检测是否触发闪存进行自检;若检测结果为触发闪存进行自检,则根据闪存的工作状态触发闪存进行自检。

其中,检测是否触发闪存进行自检的步骤包括:检测闪存的工作状态;若检测结果为闪存处于第一工作状态,则在空闲期触发闪存进行自检。

其中,检测是否触发闪存进行自检的步骤包括:检测闪存的工作状态;若检测结果为闪存处于第二工作状态,检测闪存的工作时间是否超过预定时间的阈值;若检测结果为闪存的工作周期超过预定时间的阈值,则触发闪存进行自检。

其中,预定时间的阈值由闪存的擦除次数和纠错算法的纠错能力确定。

其中,当闪存处于第一工作状态时,根据闪存的工作状态触发闪存进行自检的步骤包括:将闪存中的数据划分为第一预定数据量的多个数据段;分别在不同的空闲期对每一数据段中的数据进行自检。

其中,分别在不同的空闲期对每一数据段中的数据进行自检的步骤包括:在完成对前一数据段中的数据进行自检的操作后,检测闪存是否处于空闲期;若检测结果为闪存处于空闲期,则继续对下一数据段的数据进行自检。

其中,当闪存处于第二工作状态时,根据闪存的工作状态触发闪存进行自检的步骤包括:将闪存中的数据划分为第二预定数据量的多个数据段;以预定时间间隔对每一数据段中的数据进行自检。

其中,对每一数据段中的数据进行自检的步骤包括:以物理页面为单位依次读取保存在数据段中的数据;获取对读取的数据进行纠错的纠错位数;检测纠错位数是否大于预定位数阈值;若检测结果为纠错位数大于预定位数阈值,则对物理页面中的数据进行纠错。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种固态硬盘,该固态硬盘包括处理器、与处理器耦接的存储控制器和闪存,其中,存储控制器存储有用于实现上述任一项的闪存自检的方法的程序指令;处理器用于执行存储控制器存储的程序指令以对闪存进行自检。

为解决上述技术问题,本申请采用的又一个技术方案是:提供一种存储装置,存储有能够实现上述任一方法的程序文件。

本申请的有益效果是:本发明的闪存自检的方法、固态硬盘以及存储装置,根据闪存的工作状态触发闪存进行自检,能够自适应调整自检,提前发现并消除滞留错误,大大降低闪存的滞留错误,进而大大降低闪存中数据丢失的概率。

附图说明

图1是现有技术中闪存单元的工作状态的示意图;

图2是现有技术中闪存单元发生滞留错误的示意图;

图3是本发明第一实施例的闪存自检的方法的流程示意图;

图4是本发明第二实施例的闪存自检的方法的流程示意图;

图5是图4中对每一数据段中的数据进行自检的子流程示意图;

图6是本发明第三实施例的闪存自检的方法的流程示意图;

图7是影响滞留错误的因素的示意图;

图8是本发明实施例的固态硬盘的结构示意图;

图9是本发明实施例的存储装置的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括至少一个该特征。本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。本申请实施例中所有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

图3是本发明第一实施例的闪存自检的方法的流程图。如图3所示,该方法包括步骤:

步骤s101:检测是否触发闪存进行自检。

在步骤s101中,闪存中的滞留错误是随着时间慢慢积累渐渐超出纠错算法的纠错能力的,那么可以在闪存中的数据长期未被使用时,在后台按照预定规则触发闪存进行自检,从而避免出现滞留时间过长而出现发生滞留错误也即比特位翻转的位数过多而无法被纠正的问题。

其中,预定规则可以是每隔预定时间间隔触发闪存进行自检,预定时间间隔可以一直保持相同,也可以随着闪存的工作时间逐步变短。

步骤s102:若检测结果为触发闪存进行自检,则根据闪存的工作状态触发闪存进行自检。

在步骤s102中,闪存的工作状态包括第一工作状态和第二工作状态,其中,第一工作状态为主机没有读写请求使得闪存存在空闲期的状态,第二工作状态为主机持续有读写请求使得闪存不存在空闲期的状态。

在一个实施例中,闪存进行自检的步骤包括:对保存在闪存中的所有物理块中的数据进行自检。

在另一实施例中,闪存进行自检的步骤包括:获取闪存中各物理块最后一次被访问的时间戳;获取当前时间与各物理块对应的最后一次被访问的时间戳两者之间的差值;对差值超过预定阈值的各物理块的数据进行自检。也就是说,当后台触发闪存进行自检后,仅仅对闪存长时间未被访问的物理块中的数据进行自检,而不需要对闪存中所有物理块的数据进行自检,这样可以避免全盘自检,从而可以降低自检所消耗的功耗。

进一步,对差值超过预定阈值的各物理块的数据进行自检的步骤包括:判断差值超过预定阈值的各物理块是否为擦除后还未写入数据的物理块,可以理解为被擦除后没有有效数据的物理块;若是,则不对该物理块内的数据进行自检,否则对该物理块内的数据进行自检。在另一实施例中,对没有有效数据的物理块直接跳过自检流程,这样可以避免全盘自检,从而可以降低自检所消耗的功耗。

当闪存进行自检被触发后,按照闪存的工作状态触发自检,在保证后台的自检操作正常运行的同时不会影响到闪存的读写操作。

通过上述方式,本发明第一实施例根据闪存的工作状态触发闪存进行自检,能够自适应调整自检,提前发现并消除滞留错误,大大降低闪存的滞留错误,进而大大降低闪存中数据丢失的概率。

图4是本发明第二实施例的闪存自检的方法的流程图。需注意的是,若有实质上相同的结果,本发明的方法并不以图4所示的流程顺序为限。如图4所示,该方法包括如下步骤:

步骤s201:检测闪存的工作状态。

在步骤s201中,闪存的工作状态包括第一工作状态和第二工作状态,其中,第一工作状态为主机没有读写请求使得闪存存在空闲期的状态,第二工作状态为主机持续有读写请求使得闪存不存在空闲期的状态。

步骤s202:若检测结果为闪存处于第一工作状态,则在空闲期触发闪存进行自检。

在步骤s202中,闪存进行自检在空闲期触发,也即闪存进行自检在没有主机读写请求时启动。

步骤s203:当闪存自检被触发后,将闪存中的数据划分为第一预定数据量的多个数据段。

在步骤s203中,当闪存自检在空闲期被触发后,将保存在闪存中的数据划分为第一预定数据量的多个数据段。其中,第一预定数据量优选为10mb数据量。也就是说,为了不影响后续主机对闪存读写请求的性能指标,优选地,对保存在闪存中的数据的后台自检以数据段为单位进行。

步骤s204:分别在不同的空闲期对每一数据段中的数据进行自检。

在步骤s204中,分别在不同的空闲期对每一数据段中的数据进行自检的步骤包括:在完成对前一数据段中的数据进行自检的操作后,检测闪存是否处于空闲期;若检测结果为闪存处于空闲期,则继续对下一数据段的数据进行自检。

也就是说,在空闲期完成一个数据段的自检后退出自检,并尝试响应主机对闪存的读写请求,如果此时主机没有发送对闪存的读写请求,则继续下一数据段的自检,如果此时主机有发送对闪存的读写请求,则响应主机对闪存的读写请求并在完成该读写请求后的下一个空闲期继续下一数据段的自检。

请一并参考图5,图5是图4中对每一数据段中的数据进行自检的子流程示意图。如图5所示,对每一数据段中的数据进行自检的操作包括如下步骤:

步骤s301:以物理页面为单位依次读取保存在数据段中的数据。

在步骤s301中,首先读取一个物理页面中的数据,当完成后续的步骤s302至步骤s303中的自检操作后,继续读取下一个物理页面中的数据,直至完成对一个数据段中的所有数据的读取。

步骤s302:获取对读取的数据进行纠错的纠错位数。

在步骤s302中,若在一个物理页面中读取的数据中不存在错误也即不存在比特位翻转时,则继续执行步骤s301。若读取的数据中存在错误时,则获取对读取的数据进行纠错的纠错位数也即发生比特位翻转的位数,并继续执行步骤s303。

步骤s303:检测纠错位数是否大于预定位数阈值。

在步骤s303中,预定位数阈值由纠错算法的纠错能力确定,纠错算法例如可以为bch(bose、ray-chaudhuri与hocquenghem)算法。举例来说,假设所选定的bch纠错算法的纠错能力为50bit/1024b,那么这里的预定位数阈值可以选择45bit/1024b。也就是说,预定位数阈值小于等于纠错算法的纠错能力,因为当纠错位数大于纠错算法的纠错能力后,则纠错算法无法进行纠错,数据会被丢失。

步骤s304:若检测结果为纠错位数大于预定位数阈值,则对物理页面中的数据进行纠错。

在步骤s304中,当被读取的物理页面中的纠错位数也即发生错误的位数达到预定位数阈值时,则启动纠错算法对该物理页面中的数据进行纠错,并将纠错后的数据转移到新的物理地址,从而可以防止出现滞留错误。

通过上述方式,本发明第二实施例在闪存存在空闲期时在空闲期触发闪存进行自检,其中闪存自检是分别在不同的空闲期对保存在闪存中的数据进行分段自检,从而可以避免闪存产生滞留错误。另外,本发明第二实施例的分段自检在闪存的空闲期进行,可以保证主机对闪存的读写性能不受影响。

图6是本发明第三实施例的闪存自检的方法的流程图。需注意的是,若有实质上相同的结果,本发明的方法并不以图6所示的流程顺序为限。如图6所示,该方法包括如下步骤:

步骤s401:检测闪存的工作状态。

在步骤s401中,闪存的工作状态包括第一工作状态和第二工作状态,其中,第一工作状态为主机没有读写请求使得闪存存在空闲期的状态,第二工作状态为主机持续有读写请求使得闪存不存在空闲期的状态。

步骤s402:若检测结果为闪存处于第二工作状态,检测闪存的工作时间是否超过预定时间的阈值。

在步骤s402中,当闪存处于第二工作状态也即闪存持续被主机读写的状态时,检测闪存的工作时间是否超过预定时间的阈值。其中,预定时间的阈值由闪存的擦除次数和纠错算法的纠错能力确定。

如图7所示,x轴为p/e也即闪存的擦除次数,y轴为ber(biterrorrate)也即发生比特位翻转的比例。其中,闪存的特性是闪存块必须擦除后才能写;ber表征了闪存的数据可靠性,该值越小数据越可靠。从图7中可以看出:1、滞留错误与p/e关系密切,p/e越大发生比特位翻转的比例越大。2、滞留错误与滞留时间关系密切,滞留时间越长,发生比特位翻转的比例越大。

从图7可以看出,假设纠错算法为bch算法,bch纠错能力为0.001,那么当p/e小于300时可以设置预定时间阈值为一年,期间发生的滞留错误都能被bch纠正,当p/e大于300小于1000时可以设置预定时间阈值为1个月,期间发生的滞留错误能被bch算法纠正,当p/e大于1000小于3000时可以设置预定时间阈值为1个星期,期间发生的滞留错误能被bch算法纠正。也就是说,可以根据闪存的状态动态自适应调整触发自检的周期,从而可以保证在此周期内发生的滞留错误都能被纠错算法纠正。

步骤s403:若检测结果为闪存的工作周期超过预定时间的阈值,则触发闪存进行自检。

在步骤s403中,当闪存的工作周期超过预定时间的阈值,触发闪存进行自检,以保证在此周期内发生的滞留错误都能被后续的纠错算法纠正。

步骤s404:当闪存自检被触发后,将闪存中的数据划分为第二预定数据量的多个数据段。

在步骤s404中,当闪存自检被触发后,将保存在闪存中的数据划分为第二预定数据量的多个数据段。其中,第二预定数据量优选为5mb数据量。也就是说,为了不影响自检的过程中主机对闪存读写请求的效率,优选地,对保存在闪存中的数据的后台自检以数据段为单位进行。

需要强调的是,当闪存处于第一工作状态时,以第一预定数据量的数据进行分段自检,当闪存处于第二工作状态时,以第二预定数据量的数据进行分段自检,其中,第一预定数据量大于第二预定数据量。

步骤s405:以预定时间间隔对每一数据段中的数据进行自检。

在步骤s405中,一旦触发闪存进行自检,需要每隔预定时间例如1秒钟自检第二预定数据量也即5mb的数据。换个角度来说,在自检期间,以1秒钟自检5mb的数据量来说,主机读写闪存的带宽会降低5mb/s,由于正常主机顺序读写闪存的性能指标可以达到500mb/s,因此这个性能损失并不明显,不会影响用户体验。

其中,在步骤s405中对每一数据段中的数据进行自检的操作和图5所示的流程类似,为简约起见,在此不再赘述。

通过上述方式,本发明第三实施例在闪存处于持续被读写的状态且闪存的工作时间达到预定时间的阈值时,触发闪存进行自检,其中闪存自检是以预定时间间隔对保存在闪存的数据进行分段自检,从而可以避免产生滞留错误。与此同时,本发明第三实施例可以根据闪存的擦除次数和纠错算法的纠错能力动态自适应控制触发自检的周期,将主机对闪存的读写性能指标的影响降至最低,从而保证了用户的体验度。

请参阅图8,图8为本发明实施例的固态硬盘的结构示意图。如图8所示,该固态硬盘包括处理器11及和处理器耦接的存储控制器12和闪存13。

存储控制器12存储有用于实现上述任一实施例所述的闪存自检的方法的程序指令。

处理器12用于执行存储控制器12存储的程序指令以对闪存13进行自检。

其中,处理器11还可以称为cpu(centralprocessingunit,中央处理单元)。处理器11可能是一种集成电路芯片,具有信号的处理能力。处理器11还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

参阅图9,图9为本发明实施例的存储装置的结构示意图。本发明实施例的存储装置存储有能够实现上述所有方法的程序文件21,其中,该程序文件21可以以软件产品的形式存储在上述存储装置中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储装置包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

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