一种降低闪存滞留错误的方法及固态硬盘与流程

文档序号:15930704发布日期:2018-11-14 01:36阅读:139来源:国知局

本发明涉及存储技术领域,尤其涉及一种降低闪存滞留错误的方法及固态硬盘。

背景技术

flashcell使用浮动栅晶体管(floatinggatetransistor)的电压值来表示存储的数据,mlc(multilevelcell)闪存的flashcell可以存储两个比特值:最低有效位lsb(leastsignificantbit)和最高有效位msb(mostsignificantbit),图1是mlc一个闪存的存储单元flashcell示意图,每个flashcell都包括一个lsb和一个msb,每个位有两个状态,因此一个flashcell有四种状态。图2是mlc一个闪存的存储单元的电压分布示意图,一个flashcell有四种状态表现为不同的电压,具体为:状态1为擦除状态,电压值为0,存储的bit值为11,状态2或状态3为非完全写入态,电压值介于擦除态和完全态之间,存储的bit值为10或01,状态4为完全态,电压最大,存储的bit值为00,其中参考电压1,参考电压2,参考电压3,参考电压3是颗粒厂商给出的参考值,如果浮动栅晶体管电压值在小于参考电压1,则认为存储的是11数据,如果浮动栅晶体管电压值在[参考电压1,参考电压2]之间,则认为存储的是10数据,如果浮动栅晶体管电压值在[参考电压2,参考电压3]之间,则认为存储的是01数据,如果浮动栅晶体管电压值大于参考电压3,则认为存储的是00数据。

所谓的滞留错误(retentionerror)为:如果闪存长期不使用,比如长期处于掉电状态,那么flashcell中的电子会发生泄漏,其电压值会降低,分布状态会往左偏移,例如00漂移到01,10漂移到11,即闪存中存储的数据发生了错误,滞留错误是闪存的特性。

如前所述,所谓的滞留错误(retentionerror)为:如果闪存长期不使用(比如长期掉电状态),那么flashcell中的电子会发生泄漏,其电压值会降低,分布状态会往左偏移,图3是发生滞留错误示意图,例如某个flashcell最初写入的数据为01,为状态3,电压值介于[参考电压2,参考电压3]之间,之后固态硬盘处于偶尔使用状态,即偶尔上电,且上电期间没有读写该flashcell,那么该flashcell上的电子会渐渐泄漏,电压渐渐减小,当这种变化持续的足够久,其电压肯定会小于参考电压2,即该flashcell由状态3变为了状态2,如图3所示,之后如果读取该flashcell,发现其读取电压为[参考电压1,参考电压2]之间,则判断存储的数据为10,即发生数据错误!通常固态硬盘中都有纠错算法,如果物理页中发生的错误bit不多,纠错算法还能将其纠正后传给主机,但是滞留错误的特性为滞留(掉电)时间越久,电子泄漏越严重,发生错误的bit越多,纠错算法总有纠不回来的时候,那就真正发生错误了!

现有技术为固态硬盘中采用自适应动态自检算法检测闪存,提前发现并消除可能出现的滞留错误,一旦发现滞留错误累积到一定程度则将数据纠正后重写到新的物理页中。该方法的确能有效降低滞留错误的发生,但是它有个明显的不足就是将纠正后的数据写到新的物理页中,原先旧的物理页被标记为无效,固态硬盘的垃圾回收机制迟早会把该旧物理页所在的块擦除掉,特别是在p/e数(擦除数,闪存块必须擦除后再写入)较大的生命后期,滞留错误累积的速度越来越快,垃圾回收策略频繁调度,将会严重影响主机的读写性能。



技术实现要素:

针对以上缺陷,本发明目的在于如何降低固体硬盘的滞留错误。

为了实现上述目的,本发明提供了一种降低闪存滞留错误的方法,通过后台自检操作后台检查固态硬盘全盘存储的数据是否发生错误,如果发生错误则通过纠错算法进行纠错,其特征在于后台自检控制在空闲状态下触发和强制状态下触发,每次后台自检检查m大小的数据空间,空闲状态下的m选择为m1,强制状态下选择m2,m2为0.2m1~0.6m1;所述强制状态根据硬盘整体的擦除次数选择不同的时间间隔强制启动,擦写次数越大,时间间隔越小。

所述的降低闪存滞留错误的方法,其特征在于后台自检操作后台仅检查固态硬盘全盘存储的有效数据,忽略无效数据和未存储的数据页。

所述的降低闪存滞留错误的方法,其特征在于选择m1为10mb,m2为5mb;硬盘整体的擦写次数为固态硬盘总的擦除次数或各个块的平均擦除次数。

所述的降低闪存滞留错误的方法,其特征在于后台自检操作检测到数据发生错误后,通过纠错算法进行纠错后,直接将纠错后的数据写回原物理页上。

一种固体硬盘,其特征是采用了降低闪存滞留错误的方法,通过后台自检操作后台检查固态硬盘全盘存储的数据是否发生错误,如果发生错误则通过纠错算法进行纠错,后台自检控制在空闲状态下触发和强制状态下触发,每次后台自检检查m大小的数据空间,空闲状态下的m选择为m1,强制状态下选择m2,m2为0.2m1~0.6m1;所述强制状态根据硬盘整体的擦除次数选择不同的时间间隔强制启动,擦写次数越大,时间间隔越小。

所述的固体硬盘,其特征在于后台自检操作后台仅检查固态硬盘全盘存储的有效数据,忽略无效数据和未存储的数据页。

所述的固体硬盘,其特征在于选择m1为10mb,m2为5mb;硬盘整体的擦写次数为固态硬盘总的擦除次数或各个块的平均擦除次数。

所述的固体硬盘,其特征在于后台自检操作检测到数据发生错误后,通过纠错算法进行纠错后,不对原物理页进擦除操作,直接将纠错后的数据写回原物理页上。

本发明有益效果:原地写入的效率要比写到新物理页的效率高,更关键的是与现有技术相比,纠正的数据依然在原地,与逻辑地址的映射关系并未改变,那么物理块中并不会产生无效的物理页,所以不会触发固态硬盘内部的垃圾处理机制,配合现有技术中动态自适应自检的机制,既能有效降低滞留错误的发生,又能不影响主机性能,还能间接的提升闪存生命周期。

附图说明

图1是mlc一个闪存的存储单元flashcell示意图;

图2是mlc一个闪存的存储单元的电压分布示意图;

图3是发生滞留错误示意图;

图4影响滞留错误的因素关系图;

图5是固件后台自检流程图;

图6是数据写入过程示意图;

图7是原地写入的后台自检流程图。

具体实施方式

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

图4影响滞留错误的因素关系图,x轴为擦除次数p/e数,y轴为ber(biterrorrate,发生bit翻转错误的比例,它表征了闪存的数据可靠性,越小数据越可靠),从图中可以看出:1、滞留错误与p/e值关系密切,p/e越大发生bit翻转的比例越大。2、滞留错误与滞留时间关系密切,滞留时间越长,发生bit翻转的比例越大。

分析显示滞留错误是随着时间慢慢积累,渐渐达到超出纠错算法的纠错能力,因此通过增加周期性的后台读取全盘数据,检验是否有数据已经发生了错误,如果没有发生错误,则不做任何操作,否则判断发生的错误是否即将超过纠错算法的纠错能力,因为纠错算法已知的情况下,纠错能力也是已知的,如果还远远没达到纠错能力,则不做任何操作,如果将要达到纠错算法的纠错能力,则启用纠错算法纠正数据,然后把纠正后的数据写入到新的物理地址,以上是对某个物理页进行后台自检的步骤。

由于增加了后台自检,必须要保证不能影响正常的主机读写请求,但是某些场景下比如数据中心主机是一直有读写请求的,如果一直不启用后台自检,时间长了,必然会产生滞留错误,所以综合考虑,后台自检的触发条件为:

1:空闲时触发,即没有主机请求时启动,同时为了不影响后续可能的读写请求效率,后台自检分隔成多段,每段设为10mb数据量,每次空闲时自检一段,然后退出任务,尝试响应前端请求,如果还是没有请求,则继续自检下一段,固件需要记住自检的进程。

2:设置时间阈值以及起始时间戳,在主机持续有读写请求的情况下,不会产生空闲期,但是又不能产生滞留错误,所以固件需要计时,当时间超过了阈值,则强制进行后台自检,当然为了尽量不影响主机请求,每段自检的数据量需要更小,设为5mb。其次阈值的设置也设置得不同,从图4可以看出滞留错误与p/e数关系密切,假设bch(固态硬盘中针对mlc闪存的纠错算法)算法的纠错能力为0.001,那么当p/e数小于300时设置时间阈值为一年,期间发生的滞留错误都能被bch纠正,当p/e大于300小于1000时设置时间阈值为1个月,期间发生的滞留错误能被bch算法纠正,当p/e大于1000小于300时设置时间阈值为1个星期,期间发生的滞留错误能被bch算法纠正,这个就是动态自适应调整强制自检的周期,而且基本可以保证在此周期内发生的滞留错误都能被bch纠正。一旦触发强制全盘自检,固件需要每隔一秒钟自检5mb的物理数据量,即在自检期间,主机读带宽会降低5mb/s,这个性能损失并不明显,正常的主机顺序读性能达到500mb/s以上。

由于固态硬盘中磨损均衡策略(均衡闪存块的磨损程度,在此不赘述)的存在,闪存中各个闪存块(block)的p/e数基本是一样的,所以固件只需要维护一个整体的p/e数即可。

一旦触发自检(无论是空闲期自检,还是强制自检),固件内部按物理页为单元读取闪存中数据,并判断是否发生错误,如果发生错误且错误bit即将达到纠错能力则启动纠错算法纠正数据,并将正确数据写入到新的物理地址,步骤详见上文对物理页后台自检的步骤。

图5是固件后台自检流程图,展示了固件自检一小段(以强制自检5mb为例)物理闪存的流程。每次自检一个小段,当自检开始时,每次读取一个物理页,判断错误是否将要达到纠错能力,如果是则启动bch算法纠错,将纠错后的数据写入新的物理地址;如果错误没有达到将要达到纠错能力,则直接判断自检数据量是否超过5mb,如果是则结束本次自检。通过增加后台自检算法,基本能解决闪存生命周期内可能发生的所有滞留错误,该算法具有动态自适应调整自检周期的能力,个别情况下会影响百分之一左右的主机性能,基本不会影响用户体验。

将纠正后的数据写到新的物理页中,原先旧的物理页被标记为无效,固态硬盘的垃圾回收机制迟早会把该旧物理页所在的块擦除掉,特别是在p/e数(擦除数,闪存块必须擦除后再写入)较大的生命后期,滞留错误累积的速度越来越快,垃圾回收策略频繁调度,将会严重影响主机的读写性能。

闪存写入的过程为,闪存芯片根据写入的数据内容(二进制0和1的分布与数量)确定注入到物理页上的电子量m以及电压v,然后分多次小批量注入电子,每次注入一小部分电子后,读取物理页上的电压,如果未达到v,则继续注入一小部分电子,直到读取出物理页上的电压等于v,则写入过程完成,见图6所示。而滞留错误本身的特点是电子渐渐丢失造成电压降低,也可以看做是写入过程最后几步(假设是最后两步)电子注入过程的丢失,则旧的物理页上的状态可以看做是图6中检查n-1时的状态,进过纠错算法纠正后的数据,与一开始写入该物理页的数据是一模一样的,即数据内容二进制0和1的分布与数量是一样的,如果将纠正后的数据写入到新物理页,其第1次到n-1次的小批量注入电子过程与旧的物理页中是一模一样的,所以根本就没有必要重新写到新的物理页,完全可以直接原地不需要进行擦除操作,直接复写到旧的物理页,即旧的物理页从检查n-1时的状态继续注入电子,只需要两步就可以达到理想的电子量m和电压值v。

滞留错误引起的物理页中数据错误只是单纯的由于电子丢失导致的,因此原地写入的纠正数据内容(二进制0和1的分布与数量)一定跟一开始写入的数据内容一模一样。图7针对现有技术的不足之处,提出了新的原地写入的方法,也就是将纠正后的数据直接写到原来的物理页中,能有效弥补现有技术的缺点。这种原地写入的效率要比写到新物理页的效率高,更关键的是与现有技术相比,纠正的数据依然在原地,与逻辑地址的映射关系并未改变,那么物理块中并不会产生无效的物理页,所以不会触发固态硬盘内部的垃圾处理机制,配合现有技术中动态自适应自检的机制,既能有效降低滞留错误的发生,又能不影响主机性能,还能间接的提升闪存生命周期(因为减少了垃圾回收,就能减少擦除的操作)。在p/e数接近极限的情况下,固态硬盘自检的频率越来越快,该技术体现出的价值也就更加可观。

以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于本发明所涵盖的范围。

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