用于在固态驱动器中进行较低页数据恢复的系统和方法

文档序号:9204229阅读:267来源:国知局
用于在固态驱动器中进行较低页数据恢复的系统和方法
【技术领域】
[0001]本公开涉及数据存储系统,例如,用于计算机系统的固态驱动器。更具体地,该公开涉及较低页数据恢复。
【背景技术】
[0002]具有多层单元(MLC)NAND媒体的存储器阵列现在在固态驱动器(SSD)中是常见的。MLC允许多个可能的状态存在于单个存储单元中,因此能够每单元存储多于I个比特的信息(例如,2、3、4或更多)。例如,在每单元2个比特的MLC闪存中,4个可能的状态(4伏特(Vt)水平)是可能的,其能够存储2个比特。基于数据的存储单元将对不同状态进行存储以及编码,该单元被编程为4个可能和明显不同的Vt区域。典型地,存储在较低页和较高页的数据被逻辑地配对在一起,较低页首先被编程。
【附图说明】
[0003]体现本发明的各种特征的系统和方法现在将参考附图进行详细示出,其中:
[0004]图1示出了根据本发明的一个实施例的对数据进行重编程的存储系统。
[0005]图2A和2B示出了根据本发明的一个实施例的用于说明有助于较低页讹误和解决方法的因素的存储单元的电压分布。
[0006]图3是示出了根据本发明一个实施例的重编程的方法的流程图。
[0007]图4A-图4B和图5示出了根据本发明的实施例的在其中开放较低页可以被选择用于重编程的不同的存储单元配置。
[0008]图6是示出了根据本发明的一个实施例的对仅较低页被编程的单元进行重编程的过程的流程图。
【具体实施方式】
[0009]尽管示出了某些实施例,但是这些实施例仅通过示例进行呈现,并不是要限制保护的范围。事实上,在本文中描述的新方法和系统可以以各种其他形式体现。此外,可以对本文描述的系统和方法的形式做出各种省略、替代和改变而不偏离保护的范围。
[0010]概沭
[0011]在MLC闪存中,尽管较低页和较高页被物理地配对,但是它们通常在编程中被解耦。存储在较低页和较高页的数据可以在不同的时间以及从不同的源被编程。经常会出现较高页被编程得更晚并且处于不同温度的情况。大部分时间,这种编程方案是没问题的。但是,当该存储系统尝试对较高页进行编程时,包括存储单元的温度和老化效应的各种因素会降低单元中数据的保持力并且可能会导致较低页讹误的问题。
[0012]一种克服较低页讹误问题的方法是当需要对较高页进行编程时将整个开放块的旧数据移动到另一个新地址。以这种方式,在类似的情况下较低页和较高页被同时编程。但是,此方法是低效的。
[0013]在本发明的某些实施例中,数据存储系统包括控制器和具有多个存储页的非易失性存储器阵列。尽管仍然阻止上述讨论的较低页讹误问题,但是该控制器执行可能需要较少量系统负载的方法。在一个实施例中,该方法选择配对的较高页未被编程的已编程的较低页,从那些所选择的较低页中读取数据,校正所读取的数据,并且将所读取的数据重编程到那些较低页。由于这种条件下的较低页的数量典型地很低(例如,在具有成百上千页的块中的若干页),这是比对整个块进行重编程更有效的方法。在另一个实施例中,类似的重编程方法被应用为在仅较低页被编程的情况下(例如,SLC (单级单元)存储器、SLC模式下的MLC存储器等等)的数据恢复方案。
[0014]系统概沐
[0015]图1示出了根据本发明的一个实施例的针对数据恢复执行重编程的存储系统120。如所示,存储系统120 (例如,固态驱动器、混合硬盘等)包括控制器130和包括被标识为块“A” 142到块“N”的存储器存储的一个或多个存储块在内的非易失性存储器阵列140。每一个块包括闪存页(F-页)。例如,图1的块A 142包括被标识为F-页A 153,B到N的F-页。在某些实施例中,每一个“F-页”是能够在单个操作中进行编程或被编程为单元的非易失性存储器阵列140中存储单元的最小分组。此外,每一个F-页包括误差校正代码页(E-页)。在所示出的实施例中,每一个F-页包括被示出为四个框的四个E-页,其包括E-页144。其他实施例可以使用被不同地定义的F-页或E-页,或每一个F-页可以包括多于或少于四个E-页。
[0016]控制器130可以从主机系统110中的存储接口模块112(例如,设备驱动器)中接收数据和/或存储访问命令。由存储接口 112传送的存储访问命令可以包括由主机系统110发出的写和读命令。该命令可以指定存储系统120中的逻辑块地址,并且控制器130可以执行在非易失性存储器阵列140中所接收的命令。在混合硬盘中,数据可以存储在除非易失性存储器阵列140外的磁媒介存储部件中(图1中未示出)。
[0017]在一个实施例中,控制器130包括ECC模块158。在一个实施例中,该ECC模块158处理从存储阵列140读取的数据进行误差校正。在一个实施例中,其对要被写入非易失性存储器阵列140的存储页面(例如,E-页)的数据进行编码,并且当数据被读出时对它们进行解码。在一个实施例中,控制器130还包括根据本发明的一个或多个实施例执行重编程方法的数据恢复模块162,如下被进一步所描述的。
[0018]电压分布图
[0019]图2A和图2B示出了根据本发明的一个实施例的用于示出有助于较低页讹误和解决方法的因素的存储单元的电压分布。图2A示出了其中仅较低页被编程的MLC存储单元的电压分布。线200示出了在初始编程点的电压分布。线202示出了一段时间流逝后的电压分布。在图2A中,那些单元已经经历了一个测试过程,在其中它们被加热以模拟40°C大约12.6个月的时间流逝。可以看出分布已经漂移到电压范围左侧,使得某些单元现在位于误差区域208中。这些单元,如果被读取,将可能导致与初始编程值不同的比特值,这是因为它们的电压值现在低于阈值206。因此这数百个比特现在是有误差的。线204示出了根据本发明的一个或多个实施例的在这些单元已经被重新编程后的分布。该分布现在几乎与初始编程时的分布相同,并且失效比特数(FBC)是零。
[0020]图2B示出了较高页和较低页二者都已经被编程的MLC存储单元的电压分布。所述图没有示出电压漂移的影响。而是示出了两个场景。首先,线210示出了较高页和较低页二者同时或几乎同时被编程的单元Vt状态的电压分布。这可能被认为是理想状态,因为只有几乎没有时间流逝,并且在两次编程之间几乎没有温度差别。但是,这不是通常单元被编程的方式。如果较高页在与较低页不同的时间和/或温度进行编程,则较低页讹误问题可能发生。但是,较低页的重新编程减少了这个问题的风险。线212示出了根据本发明的一个或多个实施例的单元被重编程后的电压分布。如所示,在对所有三个状态进行重新编程后,三个状态被排列为与在线210中示出的分布非常接近,如上所述,其反映了较高页和较低页二者同时或几乎同时被编程的单元的分布。
[0021]重编稈
[0022]图3是示出了根据本发明的一个实施例的重编程方法250的流程图。方法250可以在定期的基础上或按需的基础上被执行作为启动序列的部分。在一个实施例中,方法250由图1中示出的控制器130执行。在块255,该方法选择具有未被编程的配对的较高页的已编程的较低页。这些较低页可以被称为“开放”较低页。例如,该方法可以从在其中数据目前正被编程的一个或多个“开放”块中选择这样的页。为了进一步示出,如果方法250被执行作为启动序列的部分,则这样的开放块可以是当存储系统最后被关闭时正被编程的块,并且它们没有被关闭因为它们的容量未被填满。由于系统在这些开放块中很有可能重新开始编程,所以较低页讹误问题可能在这些开放较低页中发生。因此,在一个实施例中,该方法选择这样的开放较低页以用于重新编程。
[0023]在块260,来自所选较低页的数据被读取,并且接着在块265所读取的数据被校正(例如,通过误差校正码(ECC)的应用)。然后,在块270,被校正的数据被重新编程回所选的较低页。如之前在图2A中示出的,现在在这些较低页中的单元的电压分布非常类似于当它们初始被编程时的分布。因此,当它们的配对的较高页被编程时,较低页讹误问题可以被避免。
[0024]诜择较低页
[0025]图4A-图4B和图5示出了在其中可以选择开放较低页的不同的存储单元配置。在图4A中,呈现了 MLC配置并且示出了 0-7页。“U”表示较高页并且“L”表示较低页。从顶到底,水平线表示字线,并且它们被标记(在图4A和4B之间)为WL(字线)0、WL1、WL2等等。
[0026]页码表示页面被编程的顺序。在此,0-7页已经被编程。页0,WLO中的较低页首先被编程,并且接着是页I,在相同WLO中的较低页被编程等等。注意,页O与较高页4配对,而页I与较高页5配对等等。在这个编程序列里,页2、3、6和7是它们配对的较高页没有被编程的开放较低页。在一个实施例中,如果控制器发现存储器的状态如图4A中所示,则这些页面会被选择用于重新编程,例如,根据图2中所示的方法。在这个典型的配置中,在给定的时间里最多有4个这样的开放页面。因此,对这些开放页面进行重编程比对来自整个存储块的数据进行重编程更高效。在一个实施例中,这些开放页面可以由控制器标记(例如,通过元数据)作为关闭序列的部分,使得在开放块中的任何这样的开放较低页能在启动时被快速地识别。如果用于这样的开放较低页的指示是不可用的(例如,之前非正常/意外关闭已发生或系统不支持标记这样的页),则控制器可以通过存储块执行扫描以定位这样的开放较低页。
[0027]图4B不出了在对页8和9进行编程之后相同的存储单兀。在当前的不例中,只是在页8和9被编程之前,发生重编程以从页2和3中读出数据,校正的数据被重编程回页2和3。因此,当页8和9被编程时,页2和3的较低页讹误能够被避免。随着页8和9被编程,页2和3不再开放。如果在这一点系统关闭,则在下次启动时控制器可以选择页6和7以用于重编程。
[0028]图5示出了在其中每一个单元被配置用于对3个比特进行编码的另一个MLC配置。这个配置通常被称为TLC(三级单元)存储器。在文
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1