一种改善Flash磨损寿命的方法、控制装置及存储系统与流程

文档序号:15614927发布日期:2018-10-09 21:07阅读:343来源:国知局
本发明属于存储
技术领域
:,涉及一种提高nandflash磨损寿命的方法、控制装置及存储系统,尤其涉及的是利用原始误码率和纠错后误码率来自动适应flash磨损带来的不良影响,通过调节读电平阀值(反馈策略)和匹配数据的更新特质与flash的endurance磨损(前馈策略),来实现延长flash寿命的目的。
背景技术
::nandflash(闪存)是一种非易失性随机访问存储介质,基于浮栅(floatinggate)晶体管设计,通过浮栅来锁存电荷,电荷被储存在浮栅中,它们在无电源供应的情况下仍然可以保持。nandflash芯片在磁盘系统中已经被广泛的应用,比如固态硬盘(ssd),nvm-e固态硬盘,全闪存磁盘阵列等。常用的flash芯片及技术有2dmlcnand,2dtlcnand,3dtlcnand等。nandflash芯片有多个block(块)组成,block是能够执行擦除操作的最小单元,通常由多个page组成;page是能够执行编程和读操作的最小单元,通常大小为4kb/8kb/16kb/32kb等。nandflash写入前必须擦除,block擦除1次后再写入1次称为1次pecycle,endurance(耐久性)用于衡量nandflash的擦写寿命的可靠性指标;endurance指的是在一定的测试条件下nandflash能够反复擦写数据的能力,即对应nandflash的pe(program/erase)cycle。nandflash的原始误码率rber通常较高,需要采用ecc(errorcorrectingcode)纠错码进行纠错处理。常用的纠错码有bch,rs,以及在flash控制器使用最为广泛的ldpc码。其中,低密度奇偶校验码(ldpc)被认为是可以达到逼近香农极限(shannonlimit)的帧差错率(frameerrorrate,fer)的一类编码。对于这一类编码,要应用于nand闪存,要求它必须不仅可以出色地解码而且适合在大规模集成电路(vlsi)上实现。准循环ldpc码(qc-ldpc)就可以满足这两点要求。qc-ldpc的h矩阵含有循环矩阵,不仅具有很好的纠错性能,循环矩阵的结构也利于vlsi实现。rber(rawbiterrorrate)指没有经过ecc纠错时出现一个bit位发生错误的几率,rber是衡量nand品质的一项重要指标。随着pe次数的增加会变差,出错趋势呈指数分布,其中一个主要原因是擦写造成了浮栅氧化层的磨损,另外一个主要原因是随着pe增加,读数据的门限值会与起初设定的门限阀值(thr1、thr2、thr3等等)发生漂移,从而导致rber大幅上升,最终超过ecc纠错码的纠错能力。如图1显示,在t1时刻,flash各个存储单位的状态和对应的读门限的位置,这个时刻对应于初始状态,各个状态在编程(写入)后的电压值与门限值之间保持了较好的距离,故具有较低的rber。t2时刻表明经过一段时间的读写后,该存储单元经受了一定的磨损,每个编程状态变得更宽,彼此直接比较接近,容易导致误码。更严重的是,状态之间的门限阀值发生了漂移。如果不动态的调整这些阀值,很显然会导致较高的rber,降低了flash的使用寿命。这些门限阀值的漂移不仅随着flashblocks的pe值变化而变化,而且还和blocks的品质,甚至在flash芯片所处的相对位置,以及相邻块的读写频率有关,很难通过预先设定的方式来适应整个动态变化,因此需要一个自适应反馈机制来应对。correctablebiterror(cbe)指ecc纠错码发现并纠正的错误bit数。当某个page或block上的错误bit达到一定程度是,ecc将无法纠错,该page或block就不能被使用,被系统标注为块损坏。通常一个固态硬盘预留固定数目的冗余block空间,当损坏的块超过冗余block的数目时,该固态硬盘就不能正常工作。因此cbe是一个重要的经过ecc之后的flashblocks/pages的品质参数,如何利用cbe来尽量延迟块损坏block数目到达指定上限,是一种重要的延长固态硬盘寿命的技术。nadnflash芯片通常需要有一个或多个nand控制器来完成读写控制。如图2,nand控制器通常包含cpu,ram/rom,firmware来执行控制读写过程和逻辑,以及与flash芯片群相连的总线。从功能划分,nand控制器里面的firmware包含闪存逻辑/物理地址变换层(ftl),磨损均衡(wear-leveling),和垃圾回收(garbagecollection)等几个主要功能模块。gc(garbagecollection)垃圾回收的产生主要由于nandflash的block具有”erase-before-write”特性,对于文件系统的block更新实际上采用异地更新的做法,也就是说文件系统的block第一次写在nand物理block0的位置,下一次更新就有可能写在nand物理block1的位置,原来写入的数据就变成脏数据。因此gc的主要目的是nandflash空间使用到一定程度之后进行脏数据空间回收的过程,同时要将有效数据搬移到新的位置。因此我们期望gc的候选block能够全部是脏数据,这样回收起来只要erase即可,再妥协一下就是包含极少量的有效数据,这样就减少了候选block和有效数据的选择计算及有效数据搬移而带来的性能下降。wl(wear-leveling)磨损均衡的目的主要是防止nand某些物理block被频繁擦写而导致数据保持力很差,进而引发大量bitflips,甚至是eccerror或badblock的产生,数据因此出现错误而不可以再使用,这将是灾难性的。wl的出现正好解决这类问题,它能使所有的block擦写处于同一水平,寿命均衡发展,用大家好才是真的好的理念保证数据安全性。wl有两种类型:动态wl和静态wl。简单来说动态wl每次挑选擦写次数最少的block使用,而静态wl是把长期没有修改的colddata从擦写次数较少的block中搬移出来放到擦写次数较多的block中去,那么擦写次数较少的block将被重新使用。一般动态wl发生在writerequest时候,而静态wl发生在空闲阶段定期检查触发条件执行,且具有全局block的wl效果。目前的现状是这些功能模块都只利用了物理块(flashblocks)的pe信息,以及用户数据逻辑地址(lba)的冷热信息(写频率高低),而忽略了每个物理block/page的cbe信息。技术实现要素:发明目的:针对现有技术的不足,本发明目的在于提供一种改善flash磨损寿命的方法、控制装置及存储系统,利用原始误码率rber和纠正误码数cbe来纠正flash磨损带来的不良影响,通过调节读电平阀值和匹配数据的更新频率与flash的endurance磨损,来实现延长flash寿命的目的。技术方案:为实现上述发明目的,本发明采用如下技术方案:一种改善flash磨损寿命的方法,主要包括如下两个方面:收集各个flash芯片上不同block/page的原始误码率rber,当rber增加到一定程度时,计算得到相应block/page的最优读电平阀值并写入相应的flash芯片;所述最优读电平阀值从预先获取的rber与读电平阀值关系表中查询得到,或者在线从多个可能的读电平阀值根据似然函数选取出最优读电平阀值;收集各个flash芯片上不同block/page的纠正误码数cbe,根据cbe将空闲的block/page进行分类,将cbr较低的block/page分配给更新频率高的数据,将cbr较高的block/page分配给更新频率低的数据;其中数据更新频率的高低信息根据用户逻辑地址空间lba冷热计数器判断,或者,根据数据写请求的来源区分。作为一种优选的实施方案,采用查表的方式获得最优读电平阀值,rber与读电平阀值关系表根据如下方法获取:对一组flash测试芯片反复进行读写操作,记录rber的值;当rber值变化到下一个区间时,停止写操作,只进行读操作,反复尝试不同的读电平阀值,找到最佳值;继续读写操作,使得芯片继续磨损,在更高的rber区间校准最佳读电平阀值;循环以上过程,直到获得所有的rber区间所对应的读电平阀值。作为另一种优选的实施方案,采用在线计算的方式获得最优读电平阀值,在线计算最优读电平阀值的具体方法包括:保存一段时间内每个block的历史读出电平以及对应的存储数据信息;在需要进行读电平阀值优化时,依据当前读电平阀值推测出多个可能的电平漂移值从而得到对个新的可能的读电平阀值;使用得到多个新的可能的读电平阀值,计算上一时段内的ml函数,选择其中对应于最大ml函数的读电平阀值为最优的读电平阀值。作为一种优选的实施方案,采用根据lba冷热计数器获取数据冷热信息的方式实现数据写分配,具体包括:根据cbe信息将垃圾回收/磨损均衡模块产生的可再分配的block/page分为若干等级;接受用户数据写请求,查询写数据的lba冷热计数器,获得数据冷热程度;为较热的数据分配cbe较低的flashblock/page,为较冷的数据分配cbe较高的flashblock/page。作为另一种优选的实施方案,采用区分数据写请求来源的方式实现数据写分配,具体包括:根据cbe信息将垃圾回收/磨损均衡模块产生的可再分配的block/page分为高级别和低级别两类;并将cbe低级别和高级别block/page分别按fifo队列排列;接受数据写请求,为用户写请求从cbe低级别队列中依次选取block/page并执行写操作,为垃圾回收/磨损均衡模块数据迁移写请求从cbe高级别队列中依次选取block/page并执行写操作;本发明另一方面公开的一种改善flash磨损寿命的控制装置,包括:rber/cbe收集模块,用于获取并存储各个flash芯片上不同block/page的原始误码率rber和纠正误码数cbe;读电平阈值计算模块,用于在flash芯片的block/page的rber增加到一定程度时,计算得到相应block/page的最优读电平阀值;所述最优读电平阀值从预先获取的rber与读电平阀值关系表中查询得到,或者在线从多个可能的读电平阀值根据似然函数选取出最优读电平阀值;读电平阀值调节模块,用于接收计算得到的最优读电平阀值并写入相应的flash芯片;以及,数据写分配模块,用于根据cbe将空闲的block/page进行分类,将cbr较低的block/page分配给更新频率高的数据,将cbr较高的block/page分配给更新频率低的数据;其中数据更新频率的高低信息根据用户逻辑地址空间lba冷热计数器判断,或者,根据数据写请求的来源区分。本发明另一方面公开的一种存储系统,包括flash芯片、ecc编解码模块,地址转换模块、垃圾回收模块、磨损均衡模块,以及所述的改善flash磨损寿命的控制装置。本发明另一方面公开的一种存储系统,包括flash控制器,所述控制器包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述程序被加载至处理器时实现根据权利要求所述的改善flash磨损寿命的方法。有益效果:本发明通过跟踪block/page随数据写过程中的rber变化,当block/page的rber出现较大幅度的变化,采用策略调整这些块对应的读电平阀值,从而使得rber降低。同时,根据block/page的cbe值,将block/page进行等级分类。相似的cbe值表明block/page具有相近的endurance寿命。在写数据的过程中,根据block/page的endurance等级分配数据块,将更新频繁的数据写到较低的cbe块中,而将更新不频繁的数据写入到cbe相对较大的块中,从而延缓块的损坏速度,提高flash的磨损寿命。本发明可应用于固态硬盘,磁盘阵列,固态缓存,分布式存储系统,大数据应用等诸多领域,具有广泛的应用前景。附图说明图1为读电平阀值在flash芯片写的过程中发生漂移,导致rber增大的原理示意图。图2为现有的flash控制器硬件模块图。图3为本发明实施例的方法流程示意图。图4为本发明实施例中rber-读电平阀值的查询表格示意图。图5为本发明实施例中rber-读电平阀值的查询表格校准流程图。图6为本发明实施例中根据rber变化在线计算最优读电平阀值的流程图。图7为本发明实施例中依据lba写计算器实现cbe写分配的流程图。图8为本发明实施例中基于区分用户写操作与gc/wc数据迁移实现cbe写分配的流程图。具体实施方式下面结合附图和具体实施例,对本发明做进一步说明。如图3所示,本发明实施例公开的一种基于原始误码率rber和纠正误码数cbe改善flash磨损寿命的方法,通过调节读电平阀值和匹配数据的更新频率与flash的endurance磨损,来实现延长flash寿命的目的。该方法一方面是:收集各个flash芯片上不同page/block的原始误码率,将rber与历史数据对比,当增加到一定程度时,启动调整该page/block读电平阀值的算法,从而降低rber。由于读电平阀值有反过来影响rber,形成一种闭环反馈机制,故称通过rber调整读电平阀值是一种反馈策略。另一方面是:收集每个block/page的cbe,并根据cbe将空闲的block/page进行分类,根据将要写入数据的冷热(数据更新频率)程度进行匹配,将cbr较低的block/page分配给热数据(更新频率高的数据),而将cbr较高的block/page分配给冷数据(更新频率低的数据)。由于热数据更新的频率比较高,因此驻留时间短,cbr较低的block/page就更容易被重新释放,磨损自然就相对增加,而cbr较高的block/page则受的磨损相对减少,起到了自然的磨损均衡的目的。尽管常用的wearlevel方法也具有磨损均衡的效果,但需要通过数据迁移实现,需要付出额外的性能和磨损的代价。而基于cbr的数据写分配策略可以在不引入额外代价的前提下实现磨损均衡,可有效延长flash磨损寿命。由于基于cbe的数据写分配策略可以改善flash磨损,但并不直接改变cbe,因此是一种前馈策略。本发明方法中,读电平阀值可以根据每个page,每个block,或多个block组成的zone进行不同颗粒度的计算,颗粒度越细,读电平阀值的精度就越高,但实现的复杂度就越高,在实际应用中可根据需要选择一个合适的折衷。本例中以block为例。本发明提出两种具体的算法来实现计算适应rber变化的读电平阀值。一种是利用表格查询的方式,即预先将flashblock在生命周期内rber变化的区间进行划分,n个区间,每个区间对应一组原先设定的读电平阀值,来适应rber的变化。rber-读电平阀值的查询表格如图4,表格的左栏表示的是rber不同区间,右栏则显示其对应的最优读电平阀值。为了准确设定读电平阀值,需要事先做大量的校准工作,即对一定数额的flash芯片反复进行读写操作,连续性地记录下rber的值。当rber值变化到另外一个区间时,停止写操作,只进行读操作,但反复尝试不同的读电平阀值,找到最佳值。之后,继续读写操作,使得芯片继续磨损,在更高的rber区间校准最佳读电平阀值。循环以上过程,直到获得所有的rber区间所对应的读电平阀值。图5详细给出了上述优化读电平阀值的校准流程。在步骤501中,选取一组具有典型性的flash芯片,芯片具体数目取决于实验设备,时间/人力投入,成本等多个方面的考虑,通常芯片越多,得到的优化值越准确;在步骤502中,对上述测试芯片反复进行写操作,主动产生芯片磨损,然后统计rber;在步骤503中,检查此刻rber是否到达下一个需要重新校准的区间;如果还没有,则返回502继续执行写操作(磨损芯片);如何是,则进入504执行优化读电平阀值操作;在步骤504中,尝试逐步变化当前的读电平阀值,比如每次变化一个delta,然后执行大量读操作以统计rber,最后在步骤505中选择一个对应于最低rber的读电平阀值。在步骤506中,将优化后得到的读电平阀值保持在查询表格,然后返回502,继续执行写操作,使得rber进入下一个需要重新优化的区间。该方法具有实现简单的特点,但不能适应环境温度的变化,以及pe对rber和读电平阀值的交叉影响。本发明提出第二种算法来实现计算在线自适应rber变化的读电平阀值。首先需要保存一段时间内每个block的历史读出电平以及对应的存储数据信息;然后根据块的rber的变化决定该block是否需要重新设置新的读电平阀值。当某块的rber增大到某个设定值时,启动计算最优读电平阀值的流程,依据当前读电平阀值推测出多个可能的电平漂移值从而得到对个新的可能的读电平阀值,再基于最大似然函数选出最优的读电平阀值。具体在线计算过程如图6所示。在步骤601中,针对每个flashblock保存在过去一段时间,t1,t2,t3,…,直到当前时刻,该block的读出电平值,以及这些电平对应的真实存储信息(经过ecc纠错),比如101101…。这些信息将被用来计算似然函数。在步骤602中,检查当前时刻该block对应的rber是否偏大,如果偏大,则表明此时需要进行对该block进行读电平阀值优化流程。步骤603中给出了一种具体的方法来寻找最优阀值。依据该块的当前读电平阀值,推测出多个可能的电平漂移值,按delta,2*delta,直到n*delta的方式得到n个新的可能的读电平阀值,即将当前电平偏移1到n个delta,得到n个可能的读电平阀值。在步骤604中,分别针对上述n个可能读电平阀值,计算在时间段t1,t2,t3,…的似然函数。似然函数是依照某种分布函数和观察值去计算该观察值的出现概率,本例中分布函数是一种正太分布函数,其方差固定,均值取决于真实存储信息(经过ecc纠错)所对于的电平阀值(随读电平阀值调整而变化)。保存下来的读出电平值是观察样本值,用于计算似然函数。本步骤中我们在上一段时间内,使用n个可能的读电平阀值,按正太分布概率计算出n个maximumlikelihood(ml)函数。在步骤605中,设定最优读电平阀值为上述n个可能性中取得最大似然函数值。上述方法实现较为复制,需要消耗更多的计算和存储资源,但可以自动适应温度和pe值的变化。本发明方法中,cbe写分配的工作流程可参考如下过程实施。cbe写分配模块从gc/wl模块接受可自由分配的flashblock/page,首先根据block/page的cbe进行分类,按cbe从低到高分为m个级别,cbe低级别表明该block/page的磨损程度低,相反,cbe高级别表明该block/page的磨损程度高。将用户逻辑地址空间lba按预定块大小进行划分,并对每一个lba对应的用户数据块分配一个冷热计数器,来记录在该块上的数据更新次数(写次数)。在单位时间内更新次数高的lba就代表热数据,更新次数低的数据代表冷数据。所以根据lba对应的更新次数划分数据冷热等级。在需要写入数据时,cbe写分配首先查询该数据lba的数据更新次数,根据这个数字,判断该数据的冷热程度。根据冷热程度,分配相匹配的cbe等级对应的flashblock/page,将较热的数据写入cbe较低的block/page,而将较冷的数据写入cbe较高的block/page,从而达到自适应磨损均衡的目的。图7显示了上述利用lba冷热计数器来获取数据冷热信息,并与cbe进行匹配的流程。在步骤701中,垃圾回收(gc)/磨损均衡(wl)模块将产生可再分配的flashblock/page,在步骤702中,这些回收的flashblock/page将根据其cbe信息分为若干等级。cbe较低的等级表明磨损较轻微,可用于写入更新频繁的数据;更新频繁的数据在flash/page上驻留时间较短,所以这些block/page将更快地被再次回收,再次写入数据。相反,cbe较高的等级表明磨损相对较中,可用于写入更新频率低的数据,因这些数据距离下次被重写的时间较长,故对cbe较高的flash/page起到的间接的保护作用。步骤703接受数据写请求,在步骤704中查询写数据的lba冷热计数器,获得数据冷热程度。在步骤705中执行分配工作,为较热的数据分配cbe较低的flashblock/page,而为较冷的数据分配cbe较高的flashblock/page。步骤706完成写操作。注意步骤701和步骤703在逻辑上不存在先后次序,可以同时进行。采用lba计数器方式虽然可以比较可靠的得到用户数据块的冷热程度,但实现需要消耗一定的存储和计算资源。本发明实施例提供了另一种更简单的实现方法是,将block/page按cbe分成两类,一类是cbe低级别,一类是cbe高级别。需要写入的数据按照其来源可分为两类,一类是来自用户写请求的数据,另一类是来自flash控制器gc/wl模块发出的内部数据迁移的请求。内部数据迁移表明该涉及的数据在经历了较长时间任然没有被更新,可以被认定为冷数据,相反,来自用户写请求的数据可以被认定为热数据。因此,cbe写分配的工作流程就简化为:将来自用户写请求的数据分配到cbe低级别block/page,而将gc/wl迁移数据写到cbe高级别block/page。图8显示上述将cbe简单分为两类,高级别(代表磨损高)和低级别(代表磨损低),并分别与用户写入数据和gc/wl迁移数据进行匹配的流程。这种方法不需要依赖lba计数器,因此实现更简单方便。在步骤801中,垃圾回收(gc)/磨损均衡(wl)模块将产生可再分配的flashblock/page;在步骤802中,上述block/page将根据其对应的cbe分成两类,高级别和低级别,分布代表磨损相对严重和模式相对较轻。步骤803将cbe低级别flashblock/page按fifo队列排列,步骤804将cbe高级别按fifo队列排列;步骤805接受数据写请求,在步骤806中区分数据写来源,将来自用户的数据写请求在步骤807中排队,将来自gc/wl的数据迁移写请求在808步骤中排序。在步骤809,为用户写请求从cbe低级别队列中依次选取block/page并执行写操作;在步骤810,为gc/wl数据迁移写请求从cbe高级别队列中依次选取block/page并执行写操作。注意步骤801和步骤805在逻辑上不存在先后次序,可以同时进行。本发明另一实施例公开的基于原始误码率rber和纠正误码数cbe改善flash磨损寿命的控制装置,在原有flash控制器的基础上增加如下功能模块:rber/cbe收集模块,用于从ecc编解码器获取并存储各个flash芯片上不同block/page的原始误码率rber和纠正误码数cbe;读电平阈值计算模块,用于在flash芯片的block/page的rber增加到一定程度时,计算得到相应block/page的最优读电平阀值;所述最优读电平阀值从预先获取的rber与读电平阀值关系表中查询得到,或者在线从多个可能的读电平阀值根据似然函数选取出最优读电平阀值;读电平阀值调节模块,用于接收计算得到的最优读电平阀值并写入相应的flash芯片;以及,数据写分配模块,用于根据cbe将空闲的block/page进行分类,将cbr较低的block/page分配给更新频率高的数据,将cbr较高的block/page分配给更新频率低的数据;其中数据更新频率的高低信息根据用户逻辑地址lba冷热计数器判断,或者,根据数据写请求的来源区分。在具体实施时,上述读电平阈值计算模块和数据写分配模块是在flash控制器在传统的ftl、gc和wl三大软件功能模块基础上新增的两个软件功能模块,rber/cbe收集模块和读电平阀值调节模块的功能可以固化到独立的芯片或硬件电路,通过rber/cbe收集器和读电平阀值调节器两个硬件功能模块实现。rber/cbe收集器负责从ecc编解码器收集并保存rber和cbe信息,供cpu使用。cpu从ecc编解码器获取rber信息,计算出新的读电平阀值,发送给读电平阀值调节器,读电平阀值调节器通过固定的芯片io引脚将新设的读电平阀值写入到flash芯片。本发明另一实施例提供了一种存储系统,包括flash芯片、ecc编解码模块、地址转换模块、垃圾回收模块、磨损均衡模块,以及所述的改善flash磨损寿命的控制装置。本领域技术人员可以理解,可以把上述实施例中的模块组合成一个模块或把它们分成多个子模块,可以以硬件实现,或者以在处理器上运行的软件模块实现,或者以它们的组合实现。基于相同的发明构思,本发明另一实施例提供了一种存储系统,包括flash控制器,所述控制器包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述程序被加载至处理器时实现所述的改善flash磨损寿命的方法。综上,本发明提供了一种利用ecc纠错后得到的rber和cbe信息,对flash芯片的读电平阀值进行反馈控制,以及利用cbe来匹配冷热数据来有效延迟flash磨损寿命的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1