买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】在读取操作后选择用于刷新的闪速存储块的方法_爱思开海力士有限公司_201810932555.8 

申请/专利权人:爱思开海力士有限公司

申请日:2018-08-16

公开(公告)日:2023-03-14

公开(公告)号:CN109545261B

主分类号:G11C16/12

分类号:G11C16/12

优先权:["20170922 US 62/562,186","20180516 US 15/981,648"]

专利状态码:有效-授权

法律状态:2023.03.14#授权;2019.04.23#实质审查的生效;2019.03.29#公开

摘要:本发明涉及一种包括多个存储器单元的系统。每个存储器单元被编程到与多个单元编程电压中的一个对应的数据状态。读取存储器单元以确定每个存储器单元的编程数据状态。执行错误校正解码以确定每个存储器单元的校正数据状态。基于编程数据状态和校正数据状态来确定相应的单元水平或编程电压。第一错误计数表示编程数据状态的单元水平高于校正数据状态的单元水平的错误单元的总数量。第二错误计数表示编程数据状态的单元水平低于校正数据状态的单元水平的错误单元的总数量。该系统被配置成基于第一错误计数和第二错误计数来执行存储器操作。

主权项:1.一种非易失性数据存储装置,包括:存储器单元,布置在块中;以及存储器控制器,联接到所述存储器单元以控制所述存储器单元的编程操作和读取操作,其中每个存储器单元被编程到与从PV0至PVN的多个单元编程电压PV中的一个对应的数据状态,其中PV0<PV1<……<PVN,N为整数,其中所述存储器控制器如下执行读取回收操作:选择存储器单元的块;读取所述块中的多个存储器单元以确定每个存储器单元的编程数据状态;对所述多个存储器单元执行错误校正解码以确定每个存储器单元的校正数据状态;针对每个存储器单元,确定与由所述读取操作确定的编程数据状态对应的读取编程电压PV-r,并且确定与由所述错误校正解码确定的数据状态对应的校正编程电压PV-c;识别具有错误的多个错误单元并且确定错误单元的总数量;确定第一错误计数e+,所述第一错误计数e+表示读取编程电压PV-r高于校正编程电压PV-c的错误单元的总数量;确定第二错误计数e-,所述第二错误计数e-表示读取编程电压PV-r低于校正编程电压PV-c的错误单元的总数量;确定所述第一错误计数是否大于所述第二错误计数;确定所述错误单元的总数量是否大于阈值错误计数;并且在确定所述第一错误计数大于所述第二错误计数并且所述错误单元的总数量大于所述阈值错误计数时,对所述存储器单元的块执行所述读取回收操作。

全文数据:在读取操作后选择用于刷新的闪速存储块的方法相关申请的交叉引用本申请要求于2017年9月22日提交的申请号为62562,186、题为“在读取操作后选择用于刷新的闪速存储块的方法”的临时申请的优先权,该临时申请转让给本申请的受让人,并且通过引用整体明确地并入本文。技术领域本发明总体涉及用于存储装置的方法和设备,且特别地,涉及提高非易失性存储器装置的性能。背景技术固态存储器被广泛用于包括例如消费电子装置例如,移动电话、摄像机、计算机等的各种电子系统和企业计算系统例如,硬盘驱动器、随机存取存储器RAM等。固态存储器由于时延、吞吐量、抗冲击性、封装和其它考虑因素比机械或其它存储器存储技术更受欢迎。在这些非易失性存储器装置中,NAND闪速存储器装置由于集成度高、制造成本低而广受欢迎。存储在固态存储器装置中的数据会随着时间而劣化。例如,读取干扰是在读取固态存储装置例如,NAND闪存的过程期间引入的一种劣化。在读取期间,选择的块中除了正被读取的单元之外的所有单元的控制栅极被加偏压到超过块中的任何单元可被写入的最大电压的电压。在这种情况下,这些单元被置于通过状态,在该通过状态下它们发生短路,从而仅隔离正被读取的单元。然而,这种加偏压附带造成的不期望的结果是将额外电子施加到这些单元的浮栅。这些无意和额外电荷可以改变单元电压并被称为读取干扰。当对闪速存储块执行大量的读取操作时,控制器可决定对该块中的各个页面执行后台读取操作以确定块的“健康状况”,如通过由ECC解码器报告的页面中的位错误数量来衡量。位错误数量越大,块的健康状况就越差。当位错误数量超过预定阈值时,对该块执行读取回收操作。发明内容读取回收操作会增加因读取干扰引起的错误并降低闪速存储器的耐用性。因此,希望尽可能多地减少读取回收。在一些实施例中,提供了一种确定是否需要读取回收操作的方法。该方法不是仅根据页面读取中位错误的数量做出执行读取回收的决定,而是还考虑在单元水平增大的方向上的单元错误的数量e+和在单元水平减小的方向上的单元错误的数量e-。在一些情况下,用于读取操作的阈值电压可能不是最优的,e+和e-之间的差异可能很大。此外,预计额外读取干扰应力使e+增加并且使e-减少;考虑到这些因素的度量标准可以更准确地检测读取回收是否必要。该方法可以预测未来的读取操作是否会使错误的数量减少,从而避免不必要的读取回收操作并提高固态硬盘的耐用性。根据一些实施例,系统包括多个存储器单元。每个存储器单元被编程到与多个单元编程电压中的一个对应的数据状态。读取存储器单元以确定每个存储器单元的编程数据状态。执行错误校正解码以确定每个存储器单元的校正数据状态。相应的单元编程电压基于编程数据状态和校正数据状态来确定。第一错误计数表示编程数据状态的单元编程电压高于校正数据状态的单元编程电压的错误单元的总数量。第二错误计数表示编程数据状态的单元编程电压低于校正数据状态的单元编程电压的错误单元的总数量。该系统被配置成基于第一错误计数和第二错误计数来执行存储器操作。根据一些实施例,非易失性数据存储装置包括:存储器单元,布置在块中;以及存储器控制器,联接到存储器单元以控制存储器单元的编程操作和读取操作。每个存储器单元被编程到与从PV0至PVN的多个单元编程电压PV中的一个对应的数据状态,其中PV0<PV1<……<PVN,N为整数。存储器控制器被配置成如下执行读取回收操作。存储器控制器选择存储器单元的块,读取块中的多个存储器单元以确定每个存储器单元的编程数据状态,并且对多个存储器单元执行错误校正解码以确定每个存储器单元的校正数据状态。对于每个存储器单元,存储器控制器确定与由读取操作确定的编程数据状态对应的读取编程电压PV-r,并且确定与由错误校正解码确定的数据状态对应的校正编程电压PV-c。存储器控制器被配置成识别具有错误的多个错误单元并且确定错误单元的总数量。存储器控制器确定第一错误计数,该第一错误计数表示读取编程电压PV-r高于校正编程电压PV-c的错误单元的总数量。存储器控制器还确定第二错误计数,该第二错误计数表示读取编程电压PV-r低于校正编程电压PV-c的错误单元的总数量。进一步地,存储器控制器还被配置成确定第一错误计数是否大于第二错误计数,并且确定错误单元的总数量是否大于阈值错误计数。在确定第一错误计数大于第二错误计数并且错误单元的总数量大于阈值错误计数时,存储器控制器对存储器单元的块执行读取回收操作。在上述装置的实施例中,读取回收操作包括将有效值从多个存储器单元复制到另一多个存储器单元。在另一实施例中,每个存储器单元被配置成存储两个二进制位数据并且具有与四个单元编程电压PV0至PV3对应的四个数据状态11、01、00和10,其中PV0<PV1<PV2<PV3。在另一实施例中,每个存储器单元被配置成存储三个二进制位数据并且具有与八个单元编程电压PV0至PV7对应的八个数据状态111、011、001、000、010、110、100和101,其中PV0<PV1<PV2<PV3<PV4<PV5<PV6<PV7。在另一实施例中,存储器控制器被配置成读取块中联接到字线的多个存储器单元以确定多个存储器单元中的每一个的数据状态。在另一实施例中,存储器控制器被配置成通过针对每个存储器单元将读取编程电压PV-r与校正编程电压PV-c比较来识别多个错误单元。根据一些实施例,系统包括:存储器单元,布置在块中;以及存储器控制器,联接到存储器单元以控制存储器单元的编程操作和读取操作。存储器控制器被配置成识别具有错误的多个错误单元并确定错误单元的总数量。存储器控制器还被配置成确定第一错误计数e+和第二错误计数e-,第一错误计数e+表示在单元水平增大的方向上的单元错误的数量,第二错误计数e-表示在单元水平减小的方向上的单元错误的数量。存储器控制器被配置成基于第一错误计数和第二错误计数来执行存储器操作。根据一些实施例,系统包括:存储器单元,布置在块中;以及存储器控制器,联接到存储器单元以控制存储器单元的编程操作和读取操作。每个存储器单元被编程到与从PV0至PVN的多个单元编程电压PV中的一个对应的数据状态,其中PV0<PV1<……<PVN,N为整数。存储器控制器被配置成选择存储器单元的块,读取块中的多个存储器单元以确定每个存储器单元的编程数据状态,并且对多个存储器单元执行错误校正解码以确定每个存储器单元的校正数据状态。对于每个存储器单元,存储器控制器确定与由读取操作确定的编程数据状态对应的读取编程电压PV-r,并且确定与由错误校正解码确定的数据状态对应的校正编程电压PV-c。存储器控制器识别具有错误的多个错误单元并且确定错误单元的总数量。进一步地,确定第一错误计数和第二错误计数。第一错误计数表示读取编程电压PV-r高于校正编程电压PV-c的错误单元的总数量,并且第二错误计数表示读取编程电压PV-r低于校正编程电压PV-c的错误单元的总数量。存储器控制器被配置成基于第一错误计数和第二错误计数来执行存储器操作。在上述系统的实施例中,存储器单元被配置成使得单元编程电压PV因读取干扰而增大。在另一实施例中,存储器单元被配置成使得第一错误计数因读取干扰而增大,并且第二错误计数因读取干扰而减小。在另一实施例中,存储器控制器被配置成通过针对每个存储器单元将读取编程电压PV-r与校正编程电压PV-c比较来识别多个错误单元。在另一实施例中,存储器控制器被进一步配置成确定第一错误计数是否大于第二错误计数,并且确定错误单元的总数量是否大于阈值错误计数。在确定第一错误计数大于第二错误计数并且错误单元的总数量大于阈值错误计数时,存储器控制器对选择的块执行读取回收操作。在另一实施例中,读取回收操作包括将有效值从多个存储器单元复制到另一多个存储器单元。根据一些实施例,提供了一种用于控制存储系统的方法。存储系统包括:多个存储器单元,布置在块中;以及存储器控制器,联接到多个存储器单元以控制多个存储器单元中的数据写入和读取。该方法包括选择存储器单元的块,其中每个存储器单元被编程到与从PV0至PVN的多个单元编程电压PV中的一个对应的数据状态,其中PV0<PV1<……<PVN,N为整数。该方法包括读取块中的多个存储器单元以确定每个存储器单元的编程数据状态,并且对多个存储器单元执行错误校正解码以确定每个存储器单元的校正数据状态。该方法包括对于每个存储器单元,确定与通过读取存储器单元确定的编程数据状态对应的读取编程电压PV-r,并且确定与通过错误校正解码确定的数据状态对应的校正编程电压PV-c。该方法还包括识别具有错误的多个错误单元并且确定错误单元的总数量。进一步地,确定第一错误计数和第二错误计数。第一错误计数表示读取编程电压PV-r高于校正编程电压PV-c的错误单元的总数量,并且第二错误计数表示读取编程电压PV-r低于校正编程电压PV-c的错误单元的总数量。该方法进一步包括基于第一错误计数和第二错误计数来执行存储器操作。附图说明图1是根据本发明的一些实施例的存储器装置的简化框图;图2是示出2位多层单元MLC系统中的一组单元中单元电压的示例性分布的示图;图3是示出根据本发明的一些实施例的闪速存储器装置中具有3位三层单元TLC的存储器装置的单元电压分布的简化示图;图4是示出根据本发明的一些实施例的存储器装置的单元阈值电压的分布移位和读取阈值的简化示图;图5是根据本发明的一些实施例的多层存储器单元中两个相邻编程电压PV水平的单元电压分布的简化曲线图;图6A是根据本发明的一些实施例的多层存储器单元中两个相邻编程电压PV水平的单元电压分布的简化曲线图;图6B是根据本发明的一些实施例的因读取干扰引起单元水平移位的多层存储器单元中两个相邻编程电压PV水平的单元电压分布的简化曲线图;图7A是根据本发明的一些实施例的多层存储器单元中两个相邻编程电压PV水平的单元电压分布的另一简化曲线图;图7B是根据本发明的一些实施例的因读取干扰引起单元水平移位的多层存储器单元中两个相邻编程电压PV水平的单元电压分布的简化曲线图;图8是示出根据本发明的一些实施例的用于执行读取回收操作的方法的流程图;图9是示出根据本发明的一些实施例的用于控制存储系统的另一方法的流程图;图10是示出根据本发明的一些实施例的固态存储系统的简化框图;并且图11是示出可用于实施根据本发明的各个实施例的设备的简化框图。具体实施方式图1是根据本发明的一些实施例的存储器装置的简化框图。在该示例中,闪速存储器装置100包括具有多个非易失性存储器单元的存储器单元阵列110。在一些实施例中,存储器单元被布置在多个存储块中。每个存储块可包括多个非易失性存储器单元,每个存储块与对应的地址相关联。存储器装置100还包括解码器120,例如行解码器。在示例中,解码器120接收用于存储器操作的具有地址ADDR130的命令,例如具有读取地址的读取命令。地址130可以是逻辑块地址。在实施例中,诸如读取操作、写入操作、擦除操作等存储器操作针对存储块,例如页面或扇区。根据实施例,页面或扇区可以是0.5千字节到4千字节,或者可以是不同大小的块。在这种情况下,解码器120基于关于用于选择存储块的ADDR130的信息选择字线WL140,该存储块可以是联接到选择的字线的一行存储器单元。读出放大器块150通过位线152联接到存储器单元阵列110。缓冲器块160联接到读出放大器块150并将输出数据提供给外部装置。在读取操作中,读出放大器块150感测存储在存储器单元阵列110的每个存储器单元中的数据,并将数据提供给缓冲器块160。在写入操作或编程操作中,缓冲器块160将待写入或编程的数据提供给存储器单元阵列110。在存储器读取操作期间,读出通过字线选择的非易失性存储器单元中的电荷。存储器单元的单元阈值电压可以根据存储在存储器单元中的电荷而变化。可以使用高于单元阈值电压的读取电压来确定存储在存储器单元中的数据。在一些实施例中,每个非易失性存储器单元可以是多层存储器单元,并且使用多个阈值电压来确定存储器单元的数据状态,如通过位模式表示。在这些情况下,可以使用提供读取阈值178的阈值控制电路170来控制阈值电压。在多层存储器单元中,数据状态被指定为存储在存储器单元上的特定范围的阈值电压Vt或编程电压PV。单层存储器单元SLC在每个存储器单元上存储单个二进制数字例如,位的数据。多层存储器技术允许每个单元存储两个或更多个二进制数字例如,2位、4位、8位、16位。图2是示出2位多层单元MLC系统中的一组单元中单元电压分布的曲线图200的示图。图2示出了每个单元被配置成存储两位数据:最高有效位MSB和最低有效位LSB。为了表示两个位的四个数据状态,单元可被编程到也称为单元编程电压PV的单元阈值电压Vt的四个范围中的一个范围。在图2中,编程电压范围PV0、PV1、PV2和PV3表示与两个位的位模式对应的四个数据状态。例如,当存储在单元上的单元电压处于编程电压范围PV0内时,单元表示逻辑“11”数据状态,并且有时被认为是单元的擦除状态。当电压处于编程电压范围PV1内时,单元表示逻辑“01”数据状态。处于编程电压范围PV2中的电压将表明该单元表示逻辑“00”数据状态。处于编程电压范围PV3中的电压将表明该单元表示逻辑“10”数据状态。如图2所示,当读取单元时,使用三个阈值:A阈值210、B阈值212和C阈值214。使用A阈值和C阈值来读取MSB。如果由单元存储的单元电压小于A阈值210或大于C阈值214,则MSB被读取为1。如果单元电压处于A阈值210和C阈值214之间,则MSB被读取为0。类似地,B阈值用于读取LSB。如果由单元存储的单元电压小于B阈值212,则LSB被读取为1。如果由单元存储的单元电压大于B阈值212,则LSB被读取为0。在一些其它实施例中,可交换LSB和MSB和或可使用一些其它的位映射。在理想的装置中,单元的单元电压分布将处于四个不重叠的组。然而,单元电压分布会由于单元结构和或操作的变化而劣化。例如,读取干扰噪声会影响单元电压。在图2中,考虑了在读取干扰噪声被添加到单元之前,该单元具有略小于A阈值210的电压。单元的电压由于读取干扰噪声会增大超过A阈值,使得该单元现在将处于仓bin222中而非处于仓220中。在比较仓120和仓122的LSB值和MSB值时,LSB值相同。然而,仓120中的单元的MSB值与仓122中的单元的MSB值不同。因此,在该位映射下,MSB在检测与较低单元电压水平相关联的读取干扰噪声方面将更加有用。虽然本文所述的一些实施例示出了2位MLC示例,但是本文所述的技术适用于存储任意数量位的固态系统。例如,本文所述的技术适用于1位单层单元SLC系统,也适用于3位三层单元TLC系统等。图3是示出根据本发明的一些实施例的闪速存储器装置中具有3位三层单元TLC的存储器装置的单元电压分布的简化示图300。在图2中,擦除状态的目标单元编程电压PV被示为“PV0”,并且七个编程状态的编程电压PV被示为“PV1”至“PV7”。八个数据状态中的每一个的单元电压或单元阈值电压的分布被表示为与每个编程电压PV相关联的钟形曲线。单元阈值电压的扩散spread可能由单元特性和操作历史的差异引起。在图3中,每个单元被配置成存储由以下三个位表示的八个数据状态:最高有效位MSB、中间有效位CSB和最低有效位LSB。在图3中还示出了七个读取阈值,被标记为“Vread1”、“Vread2”……以及“Vread7”,用来确定存储在存储器单元中的数据。使用两个阈值Vread1和Vread5来读取MSB。如果单元存储的电压小于Vread1或大于Vread5,则MSB被读取为1。如果电压处于Vread1与Vread5之间,则MSB被读取为0。使用两个阈值Vread3和Vread7来读取LSB。如果单元存储的电压小于Vread3或大于Vread7,则LSB被读取为1。如果电压处于Vread3与Vread7之间,则LSB被读取为0。类似地,使用三个阈值Vread2、Vread4和Vread6来读取CSB。图4是示出根据本发明的一些实施例的存储器装置的单元阈值电压的分布移位和读取阈值的简化示图400。与图3中所示类似,图4示出了存储器单元的擦除状态“PV0”和七个编程状态“PV1”至“PV7”的单元阈值电压以及被标记为“Vread1”、“Vread2”……以及“Vread7”的七个读取阈值。经过多个擦除-写入周期后,第一位级的单元阈值电压和最优读取阈值向右移位。可能导致第一阈值向右移位的另一因素为读取干扰。读取干扰可以使擦除状态向右移动。数据保持也可以通过使分布移位来影响阈值。可以看出,相同块中的数据将具有相似的保持时间或数据温度。对于3DNAND存储器,可能导致单元分布改变的另一因素为早期的保持问题。通常,读取操作可使用次优阈值电压来读取页面。就时延和功率而言,确定最优阈值电压是昂贵的操作,并且为后台读取操作找到最优阈值电压是不可取的。在这种情况下,如下所述,额外读取干扰应力不一定会增加错误的数量。图5是根据本发明的一些实施例的多层存储器单元中两个相邻编程电压PV水平的单元电压分布的简化曲线图500。如图5所示,曲线510示出了编程水平PVn的单元电压的直方图分布,曲线520示出了编程水平PVn+1的单元电压的直方图分布。PVn和PVn+1表示两种数据状态。这两种PV水平的单元电压分布存在重叠。在单元读取操作中,使用读取阈值来区分这两种PV水平。可以将最优读取阈值电压设置在两种PV水平的单元数量相等的单元水平处。实际用于读取操作的次优读取阈值可以低于或高于最优阈值电压。如上所述,在读取干扰测试读取中,经常使用次优读取阈值。图6A是根据本发明的一些实施例的利用次优读取阈值的多层存储器单元中两个相邻编程电压PV水平的单元电压分布的简化曲线图600。如图6A所示,曲线610示出了编程水平PVn的单元电压的直方图分布,曲线620示出了编程水平PVn+1的单元电压的直方图分布。在图6A中,区域612表示属于PVn水平中的、被读取为处于PVn+1水平中从而产生错误单元的单元。并且,区域622表示属于PVn+1水平中的、被读取为处于PVn水平中从而也产生错误单元的单元。PVn水平中被读取为处于PVn+1水平中的单元的数量用e+表示,即在单元水平增大的方向上的单元错误的数量。在错误校正解码中,e+单元将被校正到正确的PVn水平。因此,对于这些e+单元,PV水平PVn+1被称为“读取编程电压”,而PV水平PVn被称为“校正编程电压”。进一步地,e+可以被称为第一错误计数,其表示读取编程电压PV-r高于校正编程电压PV-c的错误单元的总数量。类似地,属于PVn+1水平中的、被读取为处于PVn水平中的单元的数量可由e-表示,即在单元水平减小的方向上的单元错误的数量。在错误校正解码中,e-单元将被校正到正确的PVn+1水平。因此,对于这些e-单元,PV水平PVn被称为“读取编程电压”,而PV水平PVn+1被称为“校正编程电压”。进一步地,e-可以被称为第二错误计数,其表示读取编程电压PV-r低于校正编程电压PV-c的错误单元的总数量。在图6A中,实际读取阈值电压低于最优读取阈值,并且区域612大于区域622。换言之,e+>e-,或者等同地,第一错误计数大于第二错误计数。在图6A所示的情况下,在错误校正解码中,e+单元将被校正到正确的PVn水平。因此,对于这些e+单元,PV水平PVn+1被称为“读取编程电压”,而PV水平PVn被称为“校正编程电压”。进一步地,e+可以被称为第一错误计数,其表示读取编程电压PV-r高于校正编程电压PV-c的错误单元的总数量。进一步地,e-可以被称为第二错误计数,其表示读取编程电压PV-r低于校正编程电压PV-c的错误单元的总数量。图6B是根据本发明的一些实施例的因读取干扰引起单元水平移位的多层存储器单元中两个相邻编程电压PV水平的单元电压分布的简化曲线图650。如上所述,如图4所示,对块的额外读取干扰应力会导致单元水平增大。例如,如图6B所示,增大单元水平将导致图6A中的分布曲线610和620向右移位。在图6B中,曲线610'示出了因读取干扰而移位后的编程水平PVn的单元电压的直方图分布,曲线620'示出了因读取干扰而移位后的编程水平PVn+1的单元电压的直方图分布。作为移位的结果,第一错误计数e+和第二错误计数e-改变。在图6B中,区域614示出了第一错误计数e+的增加,并且区域624示出了第二错误计数e-的减少。可以看出,在图6B中,区域614大于区域624。因此,错误单元的总数量通过因额外读取干扰错误引起的单元电压分布的移位而增大。图7A是根据本发明的一些实施例的利用次优读取阈值的多层存储器单元中两个相邻编程电压PV水平的单元电压分布的另一简化曲线图700。如图7A所示,曲线710示出了编程水平PVn的单元电压的直方图分布,曲线720示出了编程水平PVn+1的单元电压的直方图分布。在图7A中,区域712表示属于PVn水平中的、被读取为处于PVn+1水平中从而产生错误单元的单元。进一步地,区域722表示属于PVn+1水平中的、被读取为处于PVn水平中从而也产生错误单元的单元。PVn水平中被读取为处于PVn+1水平中的单元的数量由e+表示,即在单元水平增大的方向上的单元错误的数量。类似地,PVn+1水平中被读取为处于PVn水平中的单元的数量可以由e-表示,即在单元水平减小的方向上的单元错误的数量。在图7A中,实际读取阈值电压高于最优读取阈值,导致区域712小于区域722。换言之,e+<e-,或者等同地,根据以上结合图6A描述的第一错误计数和第二错误计数的定义,第一错误计数小于第二错误计数。图7B是根据本发明的一些实施例的因读取干扰引起单元水平移位的多层存储器单元中两个相邻编程电压PV水平的单元电压分布的简化曲线图750。如上所述,如图4所示,对块的额外读取干扰应力会导致单元水平增大。例如,如图7B所示,增大单元水平将导致图7A中的分布曲线710和720向右移位。在图7B中,曲线710'示出了因读取干扰而移位后的编程水平PVn的单元电压的直方图分布,曲线720'示出了因读取干扰而移位后的编程水平PVn+1的单元电压的直方图分布。作为移位的结果,第一错误计数e+和第二错误计数e-改变。在图7B中,区域714示出了第一错误计数e+的增加,并且区域724示出了第二错误计数e-的减少。可以看出,在图7B中,区域724大于区域714。因此,错误单元的总数量通过因额外读取干扰错误引起的单元电压分布的移位而减少。在常规存储器系统中,是否执行读取回收操作通常基于页面读取中错误的数量或者页面读取中错误的数量除以ECC解码器的错误校正能力来确定。本发明的实施例提供了一种读取回收方法,其中e+和e-用于确定块是否可以处理额外读取干扰。只有在下面的情况下才应当执行读取回收操作。例如,在图6A的示例中,e+大于e-,并且图6B示出了额外读取干扰将使总错误计数的数量增大。因此,应当对图6A所述的情形实施读取回收操作。另一方面,在图7A的示例中,e+小于e-,并且图7B示出了额外读取干扰将使总错误计数的数量减少。因此,不需要对图7A所述的情形执行读取回收操作。应当注意的是,图6A、图6B、图7A和7B描述了其中使用次优读取阈值电压来读取存储器单元,从而导致不对称错误单元分布,例如e+>e-或e->e+的情形。即使利用最优读取阈值电压,也可能发生这种不对称错误单元分布。在这种情况下,本文所述的读取回收方法比常规方法更加有效。图8是示出根据本发明的一些实施例的用于执行读取回收操作的方法800的流程图。在方法800中,当选择存储器单元的块时,从该块选择字线WL步骤810。在一些实施例中,选择通常产生最多错误的一个字线或一小组字线,例如不多于十个字线。可以离线完成对字线的选择。接下来,在步骤820中,读取属于该字线的所有逻辑页面。在图8中,RLSB表示已被读取的LSB页面,RMSB表示已被读取的MSB页面。例如,当使用每单元2位的MLCNAND存储器时,读取MSB页面和LSB页面。当例如固态硬盘SSD的存储器装置在线时,分析这些选择字线中的页面。在步骤830中,对所有逻辑页面进行ECC解码。在图8中,DLSB表示ECC解码的LSB页面,DMSB表示ECC解码的MSB页面。应理解的是,RLSB和RMSB可能包括错误,并且DLSB和DMSB具有页面的正确数据。在步骤840中,使用单元的PV水平与LSB页面和MSB页面中的对应位之间的映射来重建所有单元的编程电压PV水平。对于每个单元,来自读取操作的PV水平与来自解码器输出的PV水平比较。在图8中,RPV表示由读取操作确定的数据状态用读取数据RLSB和RMSB表示的存储器单元的PV水平。DPV表示解码或校正的数据状态用读取数据DLSB和DMSB表示的存储器单元的PV水平。在步骤850中,错误基于步骤840中的比较结果来识别。此外,计算e+和e-。如以上结合图6A至图7B所述的,e+表示PVn水平中被读取为处于PVn+1水平中的单元的数量,即在单元水平增大的方向上的单元错误的数量。类似地,e-表示PVn+1水平中被读取为处于PVn水平中的单元的数量,即在单元水平减小的方向上的单元错误的数量。在步骤860中,决定是否执行读取回收操作。当e+的值大于e-的值,并且等于e++e-的单元错误的总数量超过预定阈值θ时,对块执行读取回收操作步骤870。否则,因为预期额外读取干扰不会导致错误数量增加,所以跳过读取回收操作步骤880。在一些实施例中,当果e+=e-时,也执行读取回收操作。在这种情况下,执行读取回收操作的条件为e+≥e-,并且e++e->θ。图9是示出根据本发明的一些实施例的用于控制存储系统的另一方法900的流程图。存储系统包括:布置在块中的多个存储器单元,以及联接到多个存储器单元以控制在多个存储器单元中的数据写入和读取的存储器控制器。以上结合图1至图8描述了存储系统的示例,并且在图10和图11中进一步描述该存储系统的示例。用于控制存储系统的方法900包括选择存储器单元的块步骤910。每个存储器单元被编程到与从PV0至PVN的多个单元编程电压PV中的一个对应的数据状态,其中PV0<PV1<……<PVN,N为整数。该方法包括读取块中的多个存储器单元以确定每个存储器单元的编程数据状态步骤920,并且对多个存储器单元执行错误校正解码以确定每个存储器单元的校正数据状态步骤930。该方法包括在步骤940中,对于每个存储器单元,确定与通过读取存储器单元确定的编程数据状态对应的读取编程电压PV-r,以及确定与通过错误校正解码确定的数据状态对应的校正编程电压PV-c。该方法还包括在步骤950中,识别具有错误的多个错误单元并确定错误单元的总数量。进一步地,确定第一错误计数和第二错误计数。在步骤960中,确定第一错误计数。第一错误计数表示读取编程电压PV-r高于校正编程电压PV-c的错误单元的总数量。在步骤970中,确定第二错误计数。第二错误计数表示读取编程电压PV-r低于校正编程电压PV-c的错误单元的总数量。该方法进一步包括在步骤980中,基于第一错误计数和第二错误计数来执行存储器操作。在上述方法的一个实施例中,存储器单元被配置成使得第一错误计数因读取干扰而增大,并且第二错误计数因读取干扰而减小。在另一实施例中,该方法进一步包括确定第一错误计数是否大于第二错误计数,并且确定错误单元的总数量是否大于阈值错误计数。在确定第一错误计数大于第二错误计数并且错误单元的总数量大于阈值错误计数时,对选择的块执行读取回收操作。在另一实施例中,读取回收操作包括将有效值从多个存储器单元复制到另一多个存储器单元。在另一实施例中,每个存储器单元被配置成存储两个二进制位数据并且具有与四个单元编程电压PV0至PV3对应的四个数据状态11、01、00和10,其中PV0<PV1<PV2<PV3。在另一实施例中,每个存储器单元被配置成存储三个二进制位数据并且具有与八个单元编程电压PV0至PV7对应的八个数据状态111、011、001、000、010、110、100和101,其中PV0<PV1<PV2<PV3<PV4<PV5<PV6<PV7。图10是示出根据本发明的一些实施例的固态存储系统的简化框图。也被称为存储器控制器的存储装置控制器1000是执行本文所述的技术的系统的一个示例。在一些实施例中,存储装置控制器1000可以在诸如ASIC或FPGA的半导体装置上实施。测试控制器1004包括多个读取计数器,包括读取计数器1006和读取计数器1008。该示例中的每个读取计数器与不同组的块相关联,用于跟踪对这些组的块的读取。例如,第一读取计数器1006计数对固态存储装置1050上的第一组的块的读取,第二读取计数器1008计数对固态存储装置1050上的第二组的块的读取。为了简单,固态存储装置1050在该图中被示为单个装置或部件,但在一些实施例中,固态存储装置1050可包括多个装置或多个部件。存储装置控制器1000可以包括查找表1010,查找表1010可以提供自适应读取阈值计数和自适应错误阈值计数。如上所述,目标读取阈值和错误阈值可以基于位错误的数量从查找表1010中选择。初始测试页面和或相邻页面的测试读取数据从存储装置接口1002传输到错误校正解码器1012和测试控制器1004。错误校正解码器1012例如,LDPC解码器或BCH解码器对测试读取数据执行错误校正解码,并将校正数据假设测试读取数据能够被校正,换言之,测试读取数据处于系统的错误校正能力内发送到测试控制器1004。测试控制器1004使用来自存储装置接口1002的未校正的测试读取数据和来自错误校正解码器1012的校正数据来确定位错误的数量。如果位错误的数量达到例如可以从寄存器1014其是可编程的获得的、也被称为读取阈值的位错误阈值的倍数,则测试控制器将测试页面例如,初始测试页面或相邻页面标记为读取回收操作的候选对象。测试控制器1004为垃圾收集器1016标识具有读取干扰噪声的页面,该垃圾收集器1016例如,通过将经过或未经过错误校正解码的数据复制到新位置对这些页面执行校正处理。如果执行了一些其它的例如,除了垃圾收集之外或作为垃圾收集的替代进程的校正进程,则测试控制器1004将为那些部件标识具有读取干扰噪声的页面。图11是示出可用于实施根据本发明的各个实施例的设备的简化框图。图11仅仅是对结合本公开的实施例的说明,并不限制如权利要求所述的本公开的范围。本领域的普通技术人员将认识到其它的变化、修改和替换。在一个实施例中,计算机系统1100通常包括监视器1110、计算机1120、用户输出装置1130、用户输入装置1140、通信接口1150等。如图11所示,计算机1120可包括经由总线子系统1190与多个外围装置通信的处理器1160。这些外围装置可包括用户输出装置1130、用户输入装置1140、通信接口1150以及诸如随机存取存储器RAM1170和磁盘驱动器1180的存储子系统。用户输入装置1140可以包括用于将信息输入到计算机1120的所有可能类型的装置和机构。这些装置和机构可包括键盘,小键盘,结合到显示器中的触摸屏,诸如语音识别系统、麦克风的音频输入装置以及其它类型的输入装置。在各个实施例中,用户输入装置1140通常被实施为计算机鼠标、轨迹球、跟踪板、操纵杆、无线遥控器、绘图板、语音命令系统、眼睛跟踪系统等。用户输入装置1140通常允许用户经由诸如点击按钮等命令来选择出现在监视器1110上的对象、图标、文本等。用户输出装置1130包括用于输出来自计算机1120的信息的所有可能类型的装置和机构。这些装置和机构可包括显示器例如,监视器1110、诸如音频输出装置的非视觉显示器等。通信接口1150提供到其它通信网络和装置的接口。通信接口1150可用作从其它系统接收数据和向其它系统传输数据的接口。通信接口1150的实施例通常包括以太网卡、调制解调器电话、卫星、电缆、ISDN、异步数字用户线路DSL单元、火线接口、USB接口等。例如,通信接口1150可联接到计算机网络,联接到火线总线等。在其它实施例中,通信接口1150可被物理地集成在计算机1120的主板上,并且可以是诸如软DSL的软件程序等。在各个实施例中,计算机系统1100还可包括能够通过诸如HTTP、TCPIP、RTPRTSP协议等的网络通信的软件。在本公开的可选实施例中,也可使用其它通信软件和传输协议,例如IPX、UDP等。在一些实施例中,计算机1120包括购自英特尔的一个或多个Xeon微处理器作为处理器1160。并且,在一个实施例中,计算机1120包括基于UNIX的操作系统。RAM1170和磁盘驱动器1180是被配置成存储诸如本公开的实施例的包括可执行计算机代码、人类可读代码等的数据的有形存储介质的示例。其它类型的有形存储介质包括软盘,可移动硬盘,诸如CD-ROM、DVD和条形码的光学存储介质,诸如闪速存储器、只读存储器ROM的半导体存储器,电池支持的易失性存储器,网络存储装置等。RAM1170和磁盘驱动器1180可被配置成存储提供本公开的功能的基本编程和数据结构。提供本公开的功能的软件代码模块和指令可被存储在RAM1170和磁盘驱动器1180中。这些软件模块可由处理器1160执行。RAM1170和磁盘驱动器1180还可提供用于存储根据本公开使用的数据的存储库。RAM1170和磁盘驱动器1180可包括多个存储器,包括用于在程序执行期间存储指令和数据的主随机存取存储器RAM和存储固定的非暂时性指令的只读存储器ROM。RAM1170和磁盘驱动器1180可包括为程序和数据文件提供持久非易失性存储的文件存储子系统。RAM1170和磁盘驱动器1180还可包括诸如可移除闪速存储器的可移除存储系统。总线子系统1190提供用于使计算机1120的各个部件和子系统按预期彼此通信的机构。虽然总线子系统1190被示意性地示为单个总线,但总线子系统的可选实施例可使用多个总线。图11是能够实现本公开的计算机系统的代表。对于本领域普通技术人员将显而易见的是,许多其它硬件和软件配置适用于本公开。例如,计算机可以是台式、便携式、机架安装或平板配置。另外,计算机可以是一系列联网的计算机。并且,可考虑使用其它微处理器,诸如PentiumTM或ItaniumTM微处理器、AMD公司的OpteronTM或AthlonXPTM微处理器等。并且,可考虑其它类型的操作系统,诸如微软公司的等,太阳微系统公司的Solaris,LINUX、UNIX等。在其它实施例中,上述技术可在芯片或辅助处理板上实施。本公开的各个实施例可以软件或硬件中的逻辑或者两者的组合的形式来实施。逻辑可作为一组指令被存储在计算机可读或机器可读的非暂时性存储介质中,该组指令适于指示计算机系统的处理器执行在本公开的实施例中公开的一组步骤。逻辑可形成计算机程序产品的一部分,该计算机程序产品的一部分适于引导信息处理装置执行在本公开的实施例中公开的一组步骤。本领域普通技术人员将基于本文提供的公开内容和教导来理解实施本公开的其它方式和或方法。本文所述的数据结构和代码可部分地或完全地被存储在计算机可读存储介质和或硬件模块和或硬件设备上。计算机可读存储介质包括但不限于易失性存储器,非易失性存储器,诸如磁盘驱动器、磁带、CD光盘、DVD数字通用光盘或数字视频光盘的磁性和光学存储装置,或现在已知或以后开发的能够存储代码和或数据的其它介质。本文所述的硬件模块或设备包括但不限于专用集成电路ASIC、现场可编程门阵列FPGA、专用或共用处理器和或现在已知或以后开发的其它硬件模块或设备。本文所述的方法和进程可部分地或完全地被实施为存储在计算机可读存储介质或装置中的代码和或数据,使得当计算机系统读取并且执行代码和或数据时,计算机系统执行相关的方法和进程。方法和进程也可部分地或完全地被实施在硬件模块或设备中,使得当激活硬件模块或设备时,它们执行相关的方法和进程。本文公开的方法和进程可使用代码、数据和硬件模块或设备的组合来实施。虽然为了清楚理解的目的已经详细描述了前述的实施例,但是本公开不限于所提供的细节。存在许多可选方法来实施本公开。所公开的实施例是说明性的而非限制性的。

权利要求:1.一种非易失性数据存储装置,包括:存储器单元,布置在块中;以及存储器控制器,联接到所述存储器单元以控制所述存储器单元的编程操作和读取操作,其中每个存储器单元被编程到与从PV0至PVN的多个单元编程电压PV中的一个对应的数据状态,其中PV0<PV1<……<PVN,N为整数,其中所述存储器控制器如下执行读取回收操作:选择存储器单元的块;读取所述块中的多个存储器单元以确定每个存储器单元的编程数据状态;对所述多个存储器单元执行错误校正解码以确定每个存储器单元的校正数据状态;针对每个存储器单元,确定与由所述读取操作确定的编程数据状态对应的读取编程电压PV-r,并且确定与由所述错误校正解码确定的数据状态对应的校正编程电压PV-c;识别具有错误的多个错误单元并且确定错误单元的总数量;确定第一错误计数e+,所述第一错误计数e+表示读取编程电压PV-r高于校正编程电压PV-c的错误单元的总数量;确定第二错误计数e-,所述第二错误计数e-表示读取编程电压PV-r低于校正编程电压PV-c的错误单元的总数量;确定所述第一错误计数是否大于所述第二错误计数;确定所述错误单元的总数量是否大于阈值错误计数;并且在确定所述第一错误计数大于所述第二错误计数并且所述错误单元的总数量大于所述阈值错误计数时,对所述存储器单元的块执行所述读取回收操作。2.根据权利要求1所述的非易失性数据存储装置,其中所述读取回收操作包括将有效值从所述多个存储器单元复制到另一多个存储器单元。3.根据权利要求1所述的非易失性数据存储装置,其中每个存储器单元存储两个二进制位数据并且具有与四个单元编程电压PV0至PV3对应的四个数据状态11、01、00和10,其中PV0<PV1<PV2<PV3。4.根据权利要求1所述的非易失性数据存储装置,其中每个存储器单元存储三个二进制位数据并且具有与八个单元编程电压PV0至PV7对应的八个数据状态111、011、001、000、010、110、100和101,其中PV0<PV1<PV2<PV3<PV4<PV5<PV6<PV7。5.根据权利要求1所述的非易失性数据存储装置,其中所述存储器控制器读取所述块中联接到字线的多个存储器单元以确定所述多个存储器单元中的每一个的数据状态。6.根据权利要求1所述的非易失性数据存储装置,其中所述存储器控制器通过针对每个存储器单元,将所述读取编程电压PV-r与所述校正编程电压PV-c比较来识别多个错误单元。7.一种系统,包括:存储器单元,布置在块中;以及存储器控制器,联接到所述存储器单元以控制所述存储器单元的编程操作和读取操作,其中所述存储器控制器:识别具有错误的多个错误单元并且确定错误单元的总数量;确定第一错误计数e+和第二错误计数e-,所述第一错误计数e+表示在单元水平增大的方向上的单元错误的数量,所述第二错误计数e-表示在单元水平减小的方向上的单元错误的数量;并且基于所述第一错误计数和所述第二错误计数来执行存储器操作。8.根据权利要求7所述的系统,其中每个存储器单元被编程到与从PV0至PVN的多个单元编程电压PV中的一个对应的数据状态,其中PV0<PV1<……<PVN,N为整数;其中所述存储器控制器:选择存储器单元的块;读取所述块中的多个存储器单元以确定每个存储器单元的编程数据状态;对所述多个存储器单元执行错误校正解码以确定每个存储器单元的校正数据状态;针对每个存储器单元,确定与由所述读取操作确定的编程数据状态对应的读取编程电压PV-r,并且确定与由所述错误校正解码确定的数据状态对应的校正编程电压PV-c;识别具有错误的多个错误单元并且确定错误单元的总数量;确定所述第一错误计数e+,所述第一错误计数e+表示读取编程电压PV-r高于校正编程电压PV-c的错误单元的总数量;并且确定所述第二错误计数e-,所述第二错误计数e-表示读取编程电压PV-r低于校正编程电压PV-c的错误单元的总数量。9.根据权利要求8所述的系统,其中所述存储器单元被配置成使得所述单元编程电压PV因读取干扰而增大。10.根据权利要求8所述的系统,其中所述存储器控制器通过针对每个存储器单元,将所述读取编程电压PV-r与所述校正编程电压PV-c比较来识别多个错误单元。11.根据权利要求8所述的系统,其中所述存储器控制器进一步:确定所述第一错误计数是否大于所述第二错误计数;确定所述错误单元的总数量是否大于阈值错误计数;并且在确定所述第一错误计数大于所述第二错误计数并且所述错误单元的总数量大于所述阈值错误计数时,对选择的块执行读取回收操作。12.根据权利要求11所述的系统,其中所述读取回收操作包括将有效值从所述多个存储器单元复制到另一多个存储器单元。13.根据权利要求8所述的系统,其中每个存储器单元存储两个二进制位数据并且具有与四个单元编程电压PV0至PV3对应的四个数据状态11、01、00和10,其中PV0<PV1<PV2<PV3。14.根据权利要求8所述的系统,其中每个存储器单元存储三个二进制位数据并且具有与八个单元编程电压PV0至PV7对应的八个数据状态111、011、001、000、010、110、100和101,其中PV0<PV1<PV2<PV3<PV4<PV5<PV6<PV7。15.一种控制存储系统的方法,所述存储系统包括:多个存储器单元,布置在块中;以及存储器控制器,联接到所述多个存储器单元以控制所述多个存储器单元中的数据写入和读取,所述方法包括:选择存储器单元的块,其中每个存储器单元被编程到与从PV0至PVN的多个单元编程电压PV中的一个对应的数据状态,其中PV0<PV1<……<PVN,N为整数;读取所述块中的多个存储器单元以确定每个存储器单元的编程数据状态;对所述多个存储器单元执行错误校正解码以确定每个存储器单元的校正数据状态;针对每个存储器单元,确定与通过读取所述存储器单元确定的编程数据状态对应的读取编程电压PV-r,以及确定与通过所述错误校正解码确定的校正数据状态对应的校正编程电压PV-c;识别具有错误的多个错误单元以及错误单元的总数量;确定第一错误计数,所述第一错误计数表示读取编程电压PV-r高于校正编程电压PV-c的错误单元的总数量;确定第二错误计数,所述第二错误计数表示读取编程电压PV-r低于校正编程电压PV-c的错误单元的总数量;并且基于所述第一错误计数和所述第二错误计数来执行存储器操作。16.根据权利要求15所述的方法,其中所述存储器单元被配置成使得所述第一错误计数因读取干扰而增大,并且所述第二错误计数因读取干扰而减小。17.根据权利要求15所述的方法,进一步包括:确定所述第一错误计数是否大于所述第二错误计数;确定所述错误单元的总数量是否高于阈值错误计数;并且在确定所述第一错误计数大于所述第二错误计数并且所述错误单元的总数量大于所述阈值错误计数时,对选择的块执行读取回收操作。18.根据权利要求15所述的方法,其中所述读取回收操作包括将有效值从所述多个存储器单元复制到另一多个存储器单元。19.根据权利要求15所述的方法,其中每个存储器单元存储两个二进制位数据并且具有与四个单元编程电压PV0至PV3对应的四个数据状态11、01、00和10,其中PV0<PV1<PV2<PV3。20.根据权利要求15所述的方法,其中每个存储器单元存储三个二进制位数据并且具有与八个单元编程电压PV0至PV7对应的八个数据状态111、011、001、000、010、110、100和101,其中PV0<PV1<PV2<PV3<PV4<PV5<PV6<PV7。

百度查询: 爱思开海力士有限公司 在读取操作后选择用于刷新的闪速存储块的方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。