一种缓解MLC闪存写干扰问题的方法与流程

文档序号:14655789发布日期:2018-06-12 03:43阅读:605来源:国知局

本发明涉及固态硬盘控制技术,特别涉及一种缓解MLC闪存写干扰问题的方法。



背景技术:

在闪存单元(Flash Cell)使用浮动栅晶体管(Floating Gate Transistor)的电压值来表示存储的数据,MLC(Multi Level Cell)闪存的闪存单元可以存储多个比特值,图1是MLC闪存的闪存单元示意图,MLC闪存单元的编程(program)要求分两步,第一步:编程闪存单元的LSB,第二步:编程闪存单元的MSB。没有进行编程的闪存单元处于擦除状态,只完成第一步编程的闪存单元处于非完全状态(partial program),完成第二步编程的状态为完全状态。颗粒的验证过程中发现非完全状态闪存单元的阈值电压非常容易受临近闪存单元编程过程的影响,也就是说非完全状态闪存单元中存储的数据很容易发生比特翻转,即BER(比特出错概率)会增大,这会大大降低闪存的生命周期(lifetime)。

MLC闪存的物理构成如图2所示,多个闪存单元横向组成wordline,由于闪存单元分为LSB和MSB,所以每个wordline数据存储也可抽象为LSB和MSB两部分,单个wordline的编程必须先编程wordline的整个LSB,然后编程wordline的整个MSB,中间可以编程其他的wordline。

所谓的写干扰指的是对某个wordline进行编程时,会产生较大电压,这个电压会影响临近wordline的阈值电压,并且实验表明当临近wordline是非完全状态(partial program)时,这个影响是巨大的,很有可能巨大到翻转了临近wordline中某些闪存单元中存储的比特值,该影响程度基本由编程wordline的电压大小决定(而编程时的电压大小又由编程的数据类型决定)。这里列出一种最大化该影响的操作步骤,如图3所示(wordline1中的LSB为受攻击对象):

第一步:对wordline0的LSB填全1数据,

第二步:对wordline1的LSB填受攻击的数据,这里的数据类型没有要求,

第三步:对wordline0的MSB填全0数据,

第四步:对wordline2的LSB填全0数据。

大量实验表明这种编程的步骤和数据类型能最大化的干扰wordline1 LSB中的数据,该LSB数据的BER会显著增加,其中每一步对BER的影响如图4所示,实验表明这种最坏干扰可使BER增大到正常值得4.9倍。当wordline的MSB编程成功后,该wordline处于完全状态,此后不受临近wordline的写干扰了。



技术实现要素:

针对以上缺陷,本发明目的是如何降低写操作引入的写干扰问题的影响。

为了解决以上问题本发明提出了一种缓解MLC闪存写干扰问题的方法,存储单元由多个字线wordline组成,每个wordline分为:最低有效位LSB和最高有效位MSB,单个wordline的编程必须先编程wordline的所有LSB,然后再编程wordline的整个MSB,其特征在于在写入FLASH一个字线wordline的LSB数据时,将LSB数据同时缓存在固态硬盘的缓冲区,在写入同一个字线wordline的MSB时先执行将硬盘缓存区中存储的LSB数据再次写入该字线的LSB区域,再执行将MSB数据写入MSB区域。

所述的缓解MLC闪存写干扰问题的方法,其特征在于在向MSB区域写入数据之前先检查固态硬盘的缓存区上是否缓存有与MSB区域同属于一个wordline的LSB数据,如果存在就直接执行将LSB数据再次写入该字线的LSB区域;如果不存在则读取对应LSB区域的数据,并将读取的数据复写回LSB区域,再执行将MSB数据写入MSB区域。

所述的缓解MLC闪存写干扰问题的方法,其特征在于在接收到wordline写入LSB数据的指令时,先将LSB数据缓存到固态硬盘的缓冲区,并设置计时器,在计时器达到预想设置的时间阀值时,还未接收到向对应同一个wordline的MSB写入指令的,则将缓存的LSB数据写入LSB区域;在计时器还未达到预想设置的时间阀值时,接收到对应同一个wordline的MSB写入指令的则先将则将缓存的LSB数据写入LSB区域,再执行将MSB数据写入MSB区域。

本发明的有益效果是:通过在SSD的缓存中增加保存LSB数据,在写MSB数据前再次复写LSB数据,可更正闪存中可能已经被干扰的LSB数据,保证整个wordline上数据的正确性。

附图说明

图1是MLC闪存的闪存单元示意图;

图2是MLC闪存的word line示意图;

图3是最大化写干扰问题示例图;

图4是最大化写干扰对BER的影响示意图;

图5是增加LSB数据缓存的LSB的数据写入操作示意图;

图6是改进后的数据写入操作流程示意图。

具体实施方式

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

针对上述MLC闪存固有的临近wordline间的写干扰问题,本专利提出了一种解决方案:在对wordline的LSB编程后立即在SSD(固态硬盘)的控制器中缓存该LSB数据,此后无论闪存wordline LSB中的数据被如何干扰,控制器中的LSB备份数据是不会被影响的,当编程wordline的MSB前,先再次编程控制器缓存的LSB数据,目的为更正闪存中可能已被干扰的LSB数据,然后编程wordline的MSB数据,如此可以保证整个wordline上数据的正确性。

由于控制器缓存中的数据掉电时会丢失(消费级SSD基本没有掉电保护机制),所以如果当编程wordline MSB数据时发现LSB数据已丢失,则需要从闪存中读出LSB数据,如果该LSB数据已被干扰,则需要启动控制器的ECC纠错机制,纠正后再编程wordline LSB,处理流程见图5,Step1:先写LSB数据至wordline LSB区域,同时在控制器中缓存LSB数据,完成本次LSB数据的写入。Step2:在写入MSB数据前,先检查控制缓存是否缓存了当前MSB的wordline的LSB数据,如果是则先将缓存的LSB数据复写到wordline LSB区域,再执行将MSB数据写至wordline MSB区域;如果检测控制器没有缓存当前MSB的wordline的LSB数据则从当前wordline LSB区域读取LSB数据,并启动ECC校验纠错程序保证数据的正确性,之后在将正确的LSB数据复写到wordline LSB区域,再执行将MSB数据写至wordline MSB区域。

现以上文列举的最大化写干扰问题的操作步骤为例,说明新技术是如何解决问题的,如图6:

Step1:对wordline0的LSB填全1数据。

Step2.1:对wordline1的LSB填受攻击的数据前,首先在SSD控制器中缓存一份数据。

Step2.2:对wordline1的LSB填受攻击的数据。

Step3:对wordline0的MSB填全0数据,此时wordline1的LSB数据受到影响,BER增大。

Step4:对wordline2的LSB填全0数据,此时wordline1的LSB数据再次受到影响,BER再次增大。

Step5.1:由于之前临近wordline编程的影响,wordline1的LSB数据不再可靠(BER过大),所以在写wordline1的MSB前,先将缓存在控制器的wordline1的LSB数据再次写入wordline1的LSB,如此闪存上wordline1的LSB数据肯定是准确无误的。

Step5.2:释放控制器缓存的wordline1LSB数据。

Step5.2:写wordline1的MSB数据。

该技术能彻底解决MLC闪存的写干扰问题,但是它有一个缺点:在编程wordline MSB数据时,会多编程一次wordline LSB的数据,这会增加大概百分之五的写延时(Latency),以一点点性能缺失的代价换取MLC功能的完备,还是值得的。

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

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