一种SSD中提升NAND Flash读稳定性的方法技术

技术编号:26790003 阅读:30 留言:0更新日期:2020-12-22 17:04
本发明专利技术公开一种SSD中提升NAND Flash读稳定性的方法,本方法为每个LUN分配一个定时器,充分利用LUN的并行性,并且将每个LUN的刷新操作均匀分布在T

【技术实现步骤摘要】
一种SSD中提升NANDFlash读稳定性的方法
本专利技术涉及一种SSD中提升NANDFlash读稳定性的方法,属于NANDFlash读取

技术介绍
NANDFlash作为存储介质广泛应用于SSD之中,如今主流SSD使用的NANDFlash多数为3D结构的TLC。NANDFlash尤其是3DTLC存在一种特性:一段较长时间不读取NANDFlash后第一次读取时数据错误位较多,后续的读取错误位数明显减少。这个特性就可能导致第一次读取的数据超过ECC纠错能力或者影响性能。针对这一特性,就需要增加“读刷新”操作来规避。NANDFlash的“读刷新”操作可能有多种形式,比如pSLCread刷新、pageread刷新、refreshcommand刷新等。然而归根结底都是在读取当前Block之前内部先有一次读取操作。虽然该特性的前提是一段较长时间不读取,但是由于SSD中的包含成千上万个block,很难将每个block的两次读间隔时间都记录下来,故一般的做法是不停的进行“读刷新”。但是这会对SSD读性能,尤其是QoS产生消极影响。
技术实现思路
本专利技术要解决的技术问题是提供一种SSD中提升NANDFlash读稳定性的方法,既降低第一次读取数据的错误位数,又降低读刷新操作对性能产生的影响,从而提升SSD整体读操作的稳定性。为了解决所述技术问题,本专利技术采用的技术方案是:一种SSD中提升NANDFlash读稳定性的方法,本方法将读刷新操作平滑分配到固定时间内,同时对每个block的读状态进行记录,通过记录的状态控制读刷新操作。进一步的,读刷新操作平滑分配到固定时间内的实现方式为:以LUN为单位定义一个定时器TimerLUN,它的触发间隔为Trefresh_step,TimerLUN每次触发都会对当前LUN产生一次读刷新操作。进一步的,Trefresh_step=Trefresh/MAXblock,其中,Trefresh表示对一个block的读刷新时间间隔,MAXblock表示1个LUN上block的数量。进一步的,当TimerLUN被触发时,通过当前LUN排队的NANDFlashread数量判断当前LUN是否处在密集读情况下,如果是,读刷新被暂时中止,并设置一个新的定时器Timerdelay用于当前LUN的刷新等待,刷新等待的时间间隔Tdelay设置为Trefresh_step的一个分数,即Tdelay=Trefresh_step/n,n=2,3…;当Timerdelay被触发时,继续判断当前是否仍处在密集读状态,如果仍然是,继续设置定时器Timerdelay并等待其触发;Timerdelay的设置次数必须小于n-1次,如果当前LUN一直处在密集读状态,那么第n-1次Timerdelay触发时强制执行当前Block读刷新,一旦强制执行了读刷新,记录Timerdelay被设置的次数m,然后在当前LUN不是密集读状态时将Trefresh_step更新为原来的1/m,该值记做Trefresh_step_new,直至完成m次读刷新后将Trefresh_step恢复原值,在完成m次操作之前,刷新等待功能被禁止。进一步的,在SSD的DRAM中保存一份blockreadbitmap,其中每个bit对应一个block,SSD运行过程中,如果该block的任何一个page被读取,那么对应的bit置1;TimerLUN触发时对应的bit置0;当TimerLUN被触发时先检查blockreadbitmap中对应bit是否为0,如果是则执行读刷新;如果不是则bit置0,不执行读刷新。本专利技术的有益效果:本专利技术为每个LUN分配一个定时器,充分利用LUN的并行性,并且将每个LUN的刷新操作均匀分布在Trefresh时间内,避免了集中刷新带来的明显性能下降,同时设计刷新等待功能,减少读性能的波动。另外,引入blockreadbitmap将刷新操作与SSD正常读取操作结合起来,进一步减少刷新操作的次数,提升整体QoS。附图说明图1为定时器初始化的流程图;图2为读刷新流程图。具体实施方式下面结合附图和具体实施例对本专利技术作进一步的说明。实施例1本实施例公开一种SSD中提升NANDFlash读稳定性的方法。为了详细描述方案,本实施例使用pSLCread作为读刷新的方式进行描述,并且假设对一个block的读刷新时间间隔为Trefresh。假设1个LUN上最大block数量为2048,表示为MAXblock。首先,以LUN为单位定义一个定时器TimerLUN,它的触发间隔为Trefresh_step,TimerLUN每次触发都会对当前LUN产生一次“读刷新”操作,每次刷新的block依次为block0,1,2…2046,2047,完成一轮后block重新从0开始递增。TimerLUN的触发间隔Trefresh_step根据(1)计算:Trefresh_step=Trefresh/MAXblock(1),Trefresh_step使LUN的所有读刷新得以均匀的分布在Trefresh中,避免了集中处理的长时间的等待。由于TimerLUN配置完成后自动执行,然而当前LUN可能正处在密集读情况下,此时频繁执行读刷新会导致SSD读性能波动,所以当TimerLUN被触发时,需要进行针对性的处理,避免影响数据的读取。密集读可以根据当前LUN排队的NANDFlashread数量判断,定义阈值为RCU(ReadCountsNumber)。当TimerLUN被触发时,假如当前LUN正处在密集读状态下,读刷新会被暂时终止,并设置一个新的定时器Timerdelay用于当前LUN的刷新等待,它的时间间隔Tdelay设置为Trefresh_step的一个分数。Tdelay=Trefresh_step/n(n=2,3…)(2),当Timerdelay被触发时,继续判断当前是否仍处在密集读状态,如果仍然是,那么会继续设置定时器Timerdelay并等待其触发,但是Timerdelay的设置次数必须小于n-1次。如果当前LUN一直处在密集读状态,那么第n-1次Timerdelay触发时会强制执行当前Block读刷新。一旦强制执行了读刷新,需要记录Timerdelay被设置的次数m,然后在当前LUN不是密集读状态时将Trefresh_step更新为原来的1/m(m分之一)记做Trefresh_step_new,直至完成m次读刷新后将Trefresh_step恢复为公式(1)得到的值。在完成m次操作之前,刷新等待功能会被禁止。另外,TimerLUN被触发时,即使不在密集读状态,读刷新也不会马上执行。在SSD的DRAM中会保存一份blockreadbitmap,其中每个bit对应一个block,SSD运行过程中,如果该block的任何一个page被读取,那么对应的bit置1;TimerLUN触发时对应的bit置本文档来自技高网...

【技术保护点】
1.一种SSD中提升NAND Flash读稳定性的方法,其特征在于:本方法将读刷新操作平滑分配到固定时间内,同时对每个block的读状态进行记录,通过记录的状态控制读刷新操作。/n

【技术特征摘要】
1.一种SSD中提升NANDFlash读稳定性的方法,其特征在于:本方法将读刷新操作平滑分配到固定时间内,同时对每个block的读状态进行记录,通过记录的状态控制读刷新操作。


2.根据权利要求1所述的SSD中提升NANDFlash读稳定性的方法,其特征在于:读刷新操作平滑分配到固定时间内的实现方式为:以LUN为单位定义一个定时器TimerLUN,它的触发间隔为Trefresh_step,TimerLUN每次触发都会对当前LUN产生一次读刷新操作。


3.根据权利要求2所述的SSD中提升NANDFlash读稳定性的方法,其特征在于:Trefresh_step=Trefresh/MAXblock,其中,Trefresh表示对一个block的读刷新时间间隔,MAXblock表示1个LUN上block的数量。


4.根据权利要求2所述的SSD中提升NANDFlash读稳定性的方法,其特征在于:当TimerLUN被触发时,通过当前LUN排队的NANDFlashread数量判断当前LUN是否处在密集读情况下,如果是,读刷新被暂时中止,并设置一个新的定时器Timerdelay用于当前LUN的刷新等待,刷新等待的时间间隔Tdelay设置为Trefre...

【专利技术属性】
技术研发人员:刘凯王璞
申请(专利权)人:山东华芯半导体有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1