首页 / 专利库 / 单位和数量 / 阈值 / 读阈值跟踪方法与装置

阈值跟踪方法与装置

阅读:649发布:2020-05-16

专利汇可以提供阈值跟踪方法与装置专利检索,专利查询,专利分析的服务。并且提供了读 阈值 跟踪 方法与装置。公开的跟踪阈值的方法,包括:使用阈值的第一值读取第一数据;使用阈值的第二值读取第二数据;根据第二数据确定阈值的调整方向;根据第一数据确定阈值的调整幅度;以及根据所确定的阈值的调整方向与调整幅度更新阈值。,下面是阈值跟踪方法与装置专利的具体信息内容。

1.一种跟踪阈值的方法,包括:
使用阈值的第一值读取第一数据;
根据第一数据确定阈值的调整幅度;以及
根据所确定的阈值的调整方向与调整幅度更新阈值。
2.根据权利要求1所述的方法,还包括:
使用阈值的第二值读取第二数据;以及
根据第二数据确定阈值的调整方向。
3.根据权利要求1-2之一所述的方法,其中
若第一数据的错误比特数小于使用的错误校正码的纠错能,将阈值的调整幅度确定为第一值;以及
若第一数据的错误比特数不小于使用的错误校正码的纠错能力,将阈值的调整幅度确定为第二值,其中第一值小于第二值。
4.根据权利要求1-2之一所述的方法,其中
若第一数据的错误比特数小于随机电噪声导致的错误比特数,将阈值的调整幅度确定为第一值;以及
若第一数据的错误比特数不小于随机电噪声导致的错误比特数,将阈值的调整幅度确定为第二值,其中第一值小于第二值。
5.一种设置阈值的方法,包括:
读取第一字线上的多个页;
确定第一字线上多个存储单元的数据状态;
依据第一字线上多个存储单元的数据状态,获取与第一阈值相关的第一多个存储单元;
使用第一阈值的第一值从第一多个存储单元读取第一数据;
根据第一数据确定第一阈值的调整幅度;以及
根据所确定的第一阈值的调整方向与调整幅度更新第一阈值。
6.根据权利要求5所述的方法,还包括:
使用第一阈值的第二值从第一多个存储单元读取第二数据;
根据第二数据确定第一阈值的调整方向。
7.根据权利要求5或6所述的方法,其中所述第一多个存储单元是具有第一数据状态与第二数据状态之一的存储单元,第一数据状态与第二数据状态是由第一阈值所区分的读出电压分布相邻的状态。
8.根据权利要求5-7之一所述的方法,还包括:
依据第一阈值的调整方向与阈值的调整幅度得到第一阈值的调整值;
用第一阈值的多个调整值累计的结果更新第一阈值。
9.一种跟踪阈值的装置,包括:
第一数据获取模,用于使用阈值的第一值读取第一数据;
调整幅度确定模块,用于根据第一数据确定阈值的调整幅度;以及
阈值更新模块,用于根据所确定的阈值的调整方向与调整幅度更新阈值。
10.一种固态存储设备,包括,控制器与非易失存储器
所述控制器中的处理器通过运行程序来执行如权利要求1-8中任一项所述的方法。

说明书全文

阈值跟踪方法与装置

技术领域

[0001] 本申请涉及固态硬存储设备,具体地,涉及跟踪从NVM芯片中读取数据的最佳阈值电压的变化的方法与装置。

背景技术

[0002] 闪存通过在存储单元中保持电荷量来存储信息。存储单元中的电荷量决定了存储单元的读出电压。在读取闪存数据时,比较存储单元的读出电压与阈值电压来识别存储单元所存储的信息。但是由于存储单元的电荷量受存储单元的质量、寿命、时间等多种因素的影响,以及从多个存储单元到敏感放大器信号传输路径的非均一性,导致存储单元的读出电压发生变化,进而导致从存储单元读取的数据存在一些偏差,无法正确体现原始向存储单元写入的信息。阈值电压可包括用于读操作的读阈值与用于写操作的写阈值。
[0003] 现有技术中采用一些手段来预防或应对因存储单元的电荷量等因素的变化而导致读取的数据无法正确体现写入的数据的问题,例如,在美国专利US9070454B1中,根据存储单元的擦写次数、保持时间等因素计算阈值电压(从存储单元中读取数据或向存储单元中写入数据时使用的阈值电压或判决电压),并使用计算出的阈值电压向存储单元写入数据。
[0004] 在闪存芯片中,通过为读操作指示不同的参数,来选择读操作时所使用的阈值电压。通过具有不同阈值电压的读操作,从存储单元读出的数据会有不同的结果。有些结果具有较低的比特错误率(Bit Error Ratio,错误比特与传输的总比特数的百分比),而有些结果具有较高的比特错误率。结合使用ECC(Error Correction Code,错误校正码)技术,具有较低的比特错误率的读取结果被ECC技术纠正的几率较高。从而通过尝试不同参数,来应对读操作中遇到的错误。参数可以合并在读操作中提供给闪存芯片。或者,在闪存芯片中设置用于读操作的参数,而在闪存芯片处理读操作时,使用所设置的参数。
[0005] 存储介质上通常按页来存储和读取数据,而按来擦除数据。通常,块包含多个页,存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节,当然,物理页也可以具有其他的尺寸。在读出或写入数据时,一般为每个页的所有存储单元设置相同的阈值电压。
[0006] 图1展示了现有技术的闪存存储介质的结构。闪存块包括多条字线与位线。字线耦合了多个用于存储信息的晶体管,每个晶体管提供一个存储单元(Cn,Cn-1,…,C1,C0)。每个存储单元能存储1比特或多比特数据。每条字线中的多个存储单元提供一个或多个物理页。构成一个物理页的比特存储在耦合到同一条字线的晶体管中。
[0007] 存储器目标(Target)是闪存芯片内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(LUN,Logic UNit)。闪存芯片内可包括一个或多个管芯(Di e)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gold.ashx获得的“Open NAND Flash Interface Specification
[0008] (Revision 3.0)”中,提供了关于目标(target)、逻辑单元(LUN)、平面(Plane)的含义,其为现有技术的一部分。发明内容
[0009] 对于每个存储单元中存储了多比特信息的新型存储单元,以及3D结构的新型闪存,传统的阈值电压获取方法不能满足需求。随着存储单元的擦写次数、读出次数、时间、温度等因素,存储单元的状态发生变化,导致在不同因素下,使用相同的阈值电压将得到不同的读取结果。需要跟踪存储单元的阈值电压的变化,以获得并使用最佳阈值电压从存储单元中读取数据。
[0010] 根据本申请第一方面,提供了根据本申请第一方面的第一设置阈值的方法,包括:读取第一字线上的多个页;确定第一字线上多个存储单元的数据状态;依据第一字线上多个存储单元的数据状态,获取与第一阈值相关的第一多个存储单元;依据第一多个存储单元的比特错误率,获取第一阈值的最佳值;以及用第一阈值的最佳值更新第一阈值。
[0011] 根据本申请第一方面的第一设置阈值的方法,提供了根据本申请第一方面的第二设置阈值的方法,还包括:响应于数据读取命令,用更新后的第一阈值读取同第一字线属于相同逻辑单元或管芯的页。
[0012] 根据本申请第一方面的第一或第二设置阈值的方法,提供了根据本申请第一方面的第三设置阈值的方法,其中所述第一多个存储单元是具有第一数据状态与第二数据状态之一的存储单元,第一数据状态与第二数据状态是由第一阈值所区分的读出电压分布相邻的状态。
[0013] 根据本申请第一方面的第一至第三设置阈值的方法之一,提供了根据本申请第一方面的第四设置阈值的方法,还包括:依据第一字线上的多个存储单元的数据状态,获取与第二阈值相关的第二多个存储单元;依据第二多个存储单元的比特错误率,搜索第二阈值的最佳值;以及用第二阈值的最佳值更新第二阈值。
[0014] 根据本申请第一方面的第四设置阈值的方法,提供了根据本申请第一方面的第五设置阈值的方法,其中所述第二多个存储单元是具有第三数据状态与第四数据状态之一的存储单元,第三数据状态与第四数据状态是由第二阈值所区分的读出电压分布相邻的状态。
[0015] 根据本申请第一方面的第一至第五设置阈值的方法之一,提供了根据本申请第一方面的第六设置阈值的方法,其中获取第一阈值的最佳值包括:用第一阈值的多个可选值读取第一字线上的多个页;计算第一多个存储单元的多个比特错误率;以及将得到最低比特错误率的第一阈值的可选值,作为第一阈值的最佳值。
[0016] 根据本申请第一方面的第一至第六设置阈值的方法之一,提供了根据本申请第一方面的第七设置阈值的方法,其中获取第一阈值的最佳值包括:用第一阈值的多个可选值读取第一字线上的多个页;计算第一多个存储单元的属于所述多个页第一页的比特的多个比特错误率;其中,所述第一页是第一数据状态与第二数据状态中发生变化的比特所对应的页;以及将得到最低比特错误率的第一阈值的可选值,作为第一阈值的最佳值。
[0017] 根据本申请第一方面的第一至第七设置阈值的方法之一,提供了根据本申请第一方面的第八设置阈值的方法,其中所述第一字线上的多个页被写入指定的数据;以及通过比较写入的指定数据与读出的原始数据获取比特错误率。
[0018] 根据本申请第一方面的第一至第七设置阈值的方法之一,提供了根据本申请第一方面的第九设置阈值的方法,其中通过比较读出的原始数据与对原始数据进行错误校正得到的数据来获取比特错误率。
[0019] 根据本申请的第二方面,提供了一种设置阈值的装置,包括:读取模块,用于读取第一字线上的多个页;数据状态识别模块,用于确定第一字线上多个存储单元的数据状态;存储单元识别模块,用于依据第一字线上多个存储单元的数据状态,获取与第一阈值相关的第一多个存储单元;最佳阈值获取模块,用于依据第一多个存储单元的比特错误率,获取第一阈值的最佳值;以及阈值更新模块,用于用第一阈值的最佳值更新第一阈值。
[0020] 根据本申请第三方面,提供了根据本申请第三方面的第一设置阈值的方法,包括:读取第一字线上的多个页;确定第一字线上多个存储单元的数据状态;依据存储单元的被写入的第一数据状态与读出的第二数据状态识别第一阈值以及第一阈值的调整方向值;累计从所述多个存储单元识别的第一阈值的调整方向值,得到第一阈值的调整值;以及用第一阈值的调整值更新第一阈值。
[0021] 根据本申请第三方面的第一设置阈值的方法,提供了根据本申请第三方面的第二设置阈值的方法,还包括:依据存储单元的被写入的第三数据状态与读出的第四数据状态识别第二阈值以及第二阈值的调整方向值;累计从所述多个存储单元识别的第二阈值的调整方向值,得到第二阈值的调整值;以及用第二阈值的调整值更新第二阈值。
[0022] 根据本申请第三方面的第一或第二设置阈值的方法,提供了根据本申请第三方面的第三设置阈值的方法,其中当第一数据状态与第二数据状态是读出电压分布相邻的状态时,确定第一阈值是区分第一数据状态与第二数据状态的阈值,以及第一阈值的调整方向值指示从第一数据状态的电压分布区域到第二数据状态的电压分布区域的方向。
[0023] 根据本申请第三方面的第一或第二设置阈值的方法,提供了根据本申请第三方面的第四设置阈值的方法,其中当第一存储单元的第一数据状态与第二数据状态是阈值电压分布相同的状态时,所述第一存储单元不影响所述第一阈值的调整值。
[0024] 根据本申请第三方面的第一或第二设置阈值的方法,提供了根据本申请第三方面的第五设置阈值的方法,其中当第一存储单元的第一数据状态与第二数据状态是读出电压分布不相同且不相邻的状态时,所述第一存储单元不影响所述第一阈值的调整值。
[0025] 根据本申请第三方面的第二设置阈值的方法,提供了根据本申请第三方面的第六设置阈值的方法,其中当第三数据状态与第四数据状态是读出电压分布相邻的状态时,确定第二阈值是区分第三数据状态与第四数据状态的阈值,以及第二阈值的调整方向值指示从第三数据状态的电压分布区域到第四数据状态的电压分布区域的方向。
[0026] 根据本申请第三方面的第一至第六设置阈值的方法之一,提供了根据本申请第三方面的第七设置阈值的方法,其中若第一阈值的调整值大于第一参考值,使第一阈值递增来更新第一阈值;或者若第一阈值的调整值小于第二参考值,使第一阈值递减来更新第一阈值。
[0027] 根据本申请第三方面的第七设置阈值的方法之一,提供了根据本申请第三方面的第八设置阈值的方法,还包括:读取第一字线上的多个页;确定第一字线上多个存储单元的数据状态;依据存储单元的被写入的第一数据状态与读出的第二数据状态识别第一阈值以及第一阈值的调整方向值;累计从所述多个存储单元识别的第一阈值的调整方向值,得到第一阈值的调整值;以及用第一阈值的调整值更新第一阈值。
[0028] 根据本申请第三方面的第一至第八设置阈值的方法之一,提供了根据本申请第三方面的第九设置阈值的方法,其中若第一阈值的调整值介于第一参考值与第二参考值之间,记录第一阈值。
[0029] 根据本申请第三方面的第一至第九设置阈值的方法之一,提供了根据本申请第三方面的第十设置阈值的方法,其中所述第一字线上的多个页被写入指定的数据。
[0030] 根据本申请第三方面的第一至第九设置阈值的方法之一,提供了根据本申请第三方面的第十一设置阈值的方法其中对从所述第一字线上的多个页读出的数据进行错[0031] 误校正译码得到第二数据状态。
[0032] 根据本申请第三方面的第一至第十设置阈值的方法之一,提供了根据本申请第三方面的第十二设置阈值的方法,还包括:响应于数据读取命令,用更新后的第一阈值读取同第一字线属于相同逻辑单元或管芯的页。
[0033] 根据本申请的第四方面,提供了一种设置阈值的装置,包括:读取模块,用于读取第一字线上的多个页;数据状态识别模块,用于确定第一字线上多个存储单元的数据状态;调整方向值计算模块,用于依据存储单元的被写入的第一数据状态与读出的第二数据状态识别第一阈值以及第一阈值的调整方向值;调整值计算模块,用于累计从所述多个存储单元识别的第一阈值的调整方向值,得到第一阈值的调整值;以及阈值更新模块,用于用第一阈值的调整值更新第一阈值。
[0034] 根据本申请的第五方面,提供了一种固态存储设备,包括,控制器与非易失存储器;所述控制器中的处理器通过运行程序来执行如根据本申请第一方面与第二方面的设置阈值的方法的任何一种。
[0035] 根据本申请的第六方面,提供了根据本申请第六方面的第一跟踪阈值的方法,包括:使用阈值的第一值读取第一数据;使用阈值的第二值读取第二数据;根据第二数据确定阈值的调整方向;根据第一数据确定阈值的调整幅度;以及根据所确定的阈值的调整方向与调整幅度更新阈值。
[0036] 根据本申请的第六方面的第一跟踪阈值的方法,提供了根据本申请第六方面的第二跟踪阈值的方法,其中通过使阈值的第一值增加指定值来得到阈值的第二值。
[0037] 根据本申请的第六方面的第一或第二跟踪阈值的方法,提供了根据本申请第六方面的第三跟踪阈值的方法,其中从相同的物理页读取第一数据与第二数据。
[0038] 根据本申请的第六方面的第一或第二跟踪阈值的方法,提供了根据本申请第六方面的第四跟踪阈值的方法,其中第一数据是从第一物理页读取的,而第二数据是从第二物理页读取的,以及第一物理页与第二物理页都关联于所述阈值。
[0039] 根据本申请的第六方面的第一至第四跟踪阈值的方法之一,提供了根据本申请第六方面的第五跟踪阈值的方法,其中依据第二数据的错误比特数与第一数据的错误比特数,将数轴上第一值与第二值之间使错误比特数降低的方向,作为阈值的调整方向。
[0040] 根据本申请的第六方面的第一至第五跟踪阈值的方法之一,提供了根据本申请第六方面的第六跟踪阈值的方法,其中阈值的调整幅度同第一数据的错误比特数正相关。
[0041] 根据本申请的第六方面的第一至第六跟踪阈值的方法之一,提供了根据本申请第六方面的第七跟踪阈值的方法,其中若第一数据的错误比特数小于使用的错误校正码的纠错能,将阈值的调整幅度确定为第一值;以及若第一数据的错误比特数不小于使用的错误校正码的纠错能力,将阈值的调整幅度确定为第二值,其中第一值小于第二值。
[0042] 根据本申请的第六方面的第七跟踪阈值的方法,提供了根据本申请第六方面的第八跟踪阈值的方法,其中第一值同第一数据的错误比特数成正比;以及第二值为指定值。
[0043] 根据本申请的第六方面的第一至第六跟踪阈值的方法之一,提供了根据本申请第六方面的第九跟踪阈值的方法,其中若第一数据的错误比特数小于随机电噪声导致的错误比特数,将阈值的调整幅度确定为第一值;以及若第一数据的错误比特数不小于随机电噪声导致的错误比特数,将阈值的调整幅度确定为第二值,其中第一值小于第二值。
[0044] 根据本申请的第六方面的第一至第九跟踪阈值的方法之一,提供了根据本申请第六方面的第十跟踪阈值的方法,还包括:依据阈值的调整方向与阈值的调整幅度得到阈值的调整值;用阈值的多个调整值累计的结果更新阈值。
[0045] 根据本申请的第六方面的第十跟踪阈值的方法,提供了根据本申请第六方面的第十一跟踪阈值的方法,其中通过多次使用阈值的第一值读取第一数据,以及多次使用阈值的第二值读取第二数据,获得阈值的多个调整值。
[0046] 根据本申请的第六方面的第一至第十一跟踪阈值的方法之一,提供了根据本申请第六方面的第十二跟踪阈值的方法,还包括:使用阈值的第三值读取第三数据,其中第二值与第三值在数轴上位于第一值的两侧。
[0047] 根据本申请的第六方面的第十二跟踪阈值的方法,提供了根据本申请第六方面的第十三跟踪阈值的方法,其中依据第二数据的错误比特数与第三数据的错误比特数,将数轴上第二值与第三值之间使错误比特数降低的方向,作为阈值的调整方向。
[0048] 根据本申请的第六方面,提供了根据本申请第六方面的第十四跟踪阈值的方法,包括:使用阈值的第一值读取第一数据;根据第一数据确定阈值的调整幅度;以及根据所确定的阈值的调整方向与调整幅度更新阈值。
[0049] 根据本申请的第七方面,提供了根据本申请第七方面的第一设置阈值的方法,包括:读取第一字线上的多个页;确定第一字线上多个存储单元的数据状态;依据第一字线上多个存储单元的数据状态,获取与第一阈值相关的第一多个存储单元;使用第一阈值的第一值从第一多个存储单元读取第一数据;使用第一阈值的第二值从第一多个存储单元读取第二数据;根据第二数据确定第一阈值的调整方向;根据第一数据确定第一阈值的调整幅度;以及根据所确定的第一阈值的调整方向与调整幅度更新第一阈值。
[0050] 根据本申请的第七方面的第一设置阈值的方法,提供了根据本申请第七方面的第二设置阈值的方法,还包括:用更新后的第一阈值读取同第一字线属于相同逻辑单元或管芯的页。
[0051] 根据本申请的第七方面的第一或第二设置阈值的方法,提供了根据本申请第七方面的第三设置阈值的方法,其中所述第一多个存储单元是具有第一数据状态与第二数据状态之一的存储单元,第一数据状态与第二数据状态是由第一阈值所区分的读出电压分布相邻的状态。
[0052] 根据本申请的第七方面的第一至第三设置阈值的方法之一,提供了根据本申请第七方面的第四设置阈值的方法,还包括:使用第一阈值的第三值读取第三数据,其中第二值与第三值在数轴上位于第一值的两侧。
[0053] 根据本申请的第七方面的第四设置阈值的方法,提供了根据本申请第七方面的第五设置阈值的方法,还包括:依据第二数据的错误比特数与第三数据的错误比特数,将数轴上第二值与第三值之间使错误比特数降低的方向,作为第一阈值的调整方向。
[0054] 根据本申请的第七方面的第一至第五设置阈值的方法之一,提供了根据本申请第七方面的第六设置阈值的方法,其中第一阈值的调整幅度同第一数据的错误比特数正相关。
[0055] 根据本申请的第七方面的第一至第六设置阈值的方法之一,提供了根据本申请第七方面的第七设置阈值的方法,还包括:依据第一阈值的调整方向与阈值的调整幅度得到第一阈值的调整值;用第一阈值的多个调整值累计的结果更新第一阈值。
[0056] 根据本申请的第七方面的第七设置阈值的方法,提供了根据本申请第七方面的第八设置阈值的方法,其中通过多次使用第一阈值的第一值读取第一数据,以及多次使用第一阈值的第二值读取第二数据,获得第一阈值的多个调整值。
[0057] 根据本申请的第七方面的第八设置阈值的方法,提供了根据本申请第七方面的第九设置阈值的方法,其中用第一阈值的调整值与第一阈值的精确值的和取整数的结果作为更新后的第一阈值;其中第一阈值的精确值由第一阈值的调整值与第一阈值的前一精确值相加得到。
[0058] 根据本申请的第七方面,提供了根据本申请第七方面的第十设置阈值的方法,包括:读取第一字线上的多个页;确定第一字线上多个存储单元的数据状态;依据第一字线上多个存储单元的数据状态,获取与第一阈值相关的第一多个存储单元;使用第一阈值的第一值从第一多个存储单元读取第一数据;根据第一数据确定第一阈值的调整幅度;以及根据所确定的第一阈值的调整方向与调整幅度更新第一阈值。
[0059] 根据本申请的第八方面,提供了根据本申请第八方面的第一设置阈值的装置,包括:第一数据获取模块,用于使用阈值的第一值读取第一数据;第二数据获取模块,用于使用阈值的第二值读取第二数据;调整方向确定模块,用于根据第二数据确定阈值的调整方向;调整幅度确定模块,用于根据第一数据确定阈值的调整幅度;以及阈值更新模块,用于根据所确定的阈值的调整方向与调整幅度更新阈值。
[0060] 根据本申请的第九方面,提供了根据本申请第九方面的第一设置阈值的装置,包括:字线读取模块,用于读取第一字线上的多个页;存储单元状态确定模块,用于确定第一字线上多个存储单元的数据状态;存储单元获取模块,用于依据第一字线上多个存储单元的数据状态,获取与第一阈值相关的第一多个存储单元;第一数据获取模块,用于使用第一阈值的第一值从第一多个存储单元读取第一数据;第二数据获取模块,用于使用第一阈值的第二值从第一多个存储单元读取第二数据;调整方向确定模块,用于根据第二数据确定第一阈值的调整方向;调整幅度确定模块,用于根据第一数据确定第一阈值的调整幅度;以及阈值更新模块,用于根据所确定的第一阈值的调整方向与调整幅度更新第一阈值。
[0061] 根据本申请的第十方面,提供了根据本申请第十方面的第一设置阈值的固态存储设备,包括:包括,控制器与非易失存储器;所述控制器中的处理器通过运行程序来执行根据本申请第六或第七方面的设置阈值的方法之一。附图说明
[0062] 当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本申请以及优选的使用模式和其进一步的目的和优点,其中附图包括:
[0063] 图1展示了现有技术的闪存存储介质的结构;
[0064] 图2为存储单元的读出电压分布曲线图;
[0065] 图3A为又一例子的存储单元的读出电压分布曲线图;
[0066] 图3B展示了存储单元的状态与存储的比特的对应关系;
[0067] 图3C展示了存储单元存储的3个比特与物理页的对应关系;
[0068] 图4展示了根据本申请实施例的阈值与存储单元的状态的对应关系;
[0069] 图5展示了根据本申请实施例的设置阈值的流程图
[0070] 图6A展示了根据本申请又一实施例的设置阈值的流程图;
[0071] 图6B中展示了与存储单元的被写入状态与读出状态的组合相关的阈值;
[0072] 图7展示了阈值电压与错误比特数的关系;
[0073] 图8展示了根据本申请依然又一实施例的搜索阈值的流程图;
[0074] 图9是根据本申请依然另一实施例的搜索阈值的流程图;
[0075] 图10是根据本申请再一个实施例的流程图;以及
[0076] 图11是固态存储设备的框图

具体实施方式

[0077] 图2为存储单元的读出电压分布曲线图。存储单元被编程后,依据被编程的值,在存储单元中存储了电荷。读存储单元时,从存储了不同电荷的存储单元会得到不同的读出电压。参看图2,钟形线L0是具有“1”状态的存储单元的读出电压分布,钟形线L1是具有“0”状态的存储单元的读出电压分布。当使用阈值电压Vt2时,在阈值电压Vt2右侧的具有“1”状态的存储单元被误读并成为错误比特。类似地,当使用阈值电压Vt1时,在阈值电压Vt1左侧的具有“0”状态的存储单元被误读并成为错误比特。阈值电压Vt3是又一可选的用于从存储单元读出数据的阈值电压。
[0078] 通过比较多个阈值电压对应的错误比特的数量,选择错误比特的数量最小的阈值电压作为最佳阈值电压。或者,从读出电压分布中,确定最佳阈值电压(例如,选择Vt,使得钟形线L0在Vt右侧部分的面积与钟形线L1在Vt左侧部分的面积之和最小)。
[0079] 图3A为又一例子的存储单元的读出电压分布曲线图。在图3A的例子中,存储单元的类型是TLC(Triple Level Cell,三值存储单元)。TLC存储单元的读出电压被分组为代表8种不同的状态,每种状态对应3比特组合之一。由“L0”到“L7”来指示存储单元的8种不同的状态,“L0”为存储单元被擦除后的状态,而“L7”为存储单元被充分编程后的状态。参看图3,从“L0”到“L7”,存储单元的读出电压单调变化。
[0080] 用多个阈值来区分存储单元的状态。继续参看图3A,用阈值TH1区分状态“L3”与“L4”;用阈值TH2区分状态“L1”与“L2”;用阈值TH3区分状态“L5”与“L6”;用阈值TH4区分状态“L0”与“L1”;用阈值TH5区分状态“L2”与“L3”;用阈值TH6区分状态“L4”与“L5”;用阈值TH7区分状态“L6”与“L7”。作为举例,为每个阈值提供寄存器来存储阈值的值。以及通过比较器比较阈值的值与存储单元的读出电压,来识别存储单元所处的状态。
[0081] 为存储单元的每个状态提供编码,编码代表了TLC存储单元所存储的三比特。图3B展示了存储单元的状态与存储的比特的对应关系。作为举例,参看图3B,状态“L0”代表三比特“111”,状态“L1”代表三比特“011”。图3B中,使任意相邻的两个状态,所对应的两个三比特值,仅存在一比特变化,而另外两比特相同。
[0082] 图3C展示了存储单元存储的3个比特与物理页的对应关系。为提升物理页访问的并行性,每个存储单元中存储的3个比特分别属于不同的物理页。例如,图3C中,存储单元存储了3比特“101”,按从左到右的顺序分别称为MSB(最高有效位,Mos t Significant Bit)、CSB(中间有效位,Central Significant Bit)和LSB(最低有效位,Least Significant Bit)。将由多个存储单元的MSB构成的物理页称为MSB页,将由多个存储单元的CSB构成的物理页称为CSB页,以及将由多个存储单元的LSB构成的物理页称为LSB页。
[0083] TLC存储单元存储的3个比特具有不同的可靠度。返回参看图3A,要识别存储单元的LSB,仅需将存储单元的读出电压与阈值TH1比较,从而在存储的3个比特中,LSB具有较好的可靠度。要识别存储单元的CSB,需要将存储单元的读出电压与阈值TH2和/或TH3比较。而要识别存储单元的MSB,需要将存储单元的读出电压与阈值TH4、TH5、TH6和/或TH7进行比较。
[0084] 从而,改变存储单元的阈值,对从存储单元的读出结果的影响依赖于存储单元的状态。例如,若存储单元处于“L7”状态,通过改变阈值TH1的值,将几乎不会影响存储单元的读出结果。作为另一个例子,改变阈值TH6的值,读出数据时,非处于“L4”与“L5”状态的存储单元的读出结果几乎不会被影响。
[0085] 若存储单元的读出结果受某阈值的变化的影响很小,则无法通过改变该阈值的值来寻找适合该存储单元的该阈值的最佳值。一般地,向物理页写入的数据被加扰,使得写入物理页的数据是随机数序列。然而,对于MLC(Multi Level Cell)存储单元或TLC存储单元,由于其中存储了来自多个页的数据,传统加扰算法并非总能确保提供物理页的多个存储单元的状态是随机分布的。
[0086] 图4展示了根据本申请实施例的阈值与存储单元的状态的对应关系。闪存的字线包括存储单元,这些存储单元提供了构成多个物理页的数据。
[0087] 图4展示了,用阈值TH1区分状态“L3”与“L4”,用阈值TH2区分状态“L1”与“L2”,用阈值TH3区分状态“L5”与“L6”,用阈值TH4区分状态“L0”与“L1”,用阈值TH5区分状态“L2”与“L3”,用阈值TH6区分状态“L4”与“L5”,以及用阈值TH7区分状态“L6”与“L7”。
[0088] 对于一条字线上的存储单元,其中处于“L3”与“L4”状态的存储单元构成集合{C10,C11,C12,…,C1m},用集合元素的下标的第1个数字“1”指示该集合与具有相同序号“1”的阈值TH1有关,其中集合元素C10,C11,C12,…,C1m的每个指示处于“L3”与“L4”状态的存储单元之一。集合{C10,C11,C12,…,C1m}与阈值TH1有关,是因为改变阈值TH1的值,会以较大几率影响对处于“L3”与“L4”状态的存储单元的状态的判决,例如,将处于“L3”状态的存储单元识别为处于“L4”状态,或将处于“L4”状态的存储单元识别为处于“L3”状态。
[0089] 图4中还展示了同阈值相关的比特错误率。作为举例,对于阈值TH1的每个取值,存储单元集合{C10,C11,C12,…,C1m}的读出结果具有比特错误率e1的一个值(表示为e10,e11,e12,…),用比特错误率e下标的第1个数字“1”指示该比特错误率与具有相同序号“1”的阈值TH1有关。
[0090] 通过阈值TH1的多个取值,得到对应的多个比特错误率(表示为e10,e11,e12,…)。以及得到值最小的比特错误率的阈值TH1的取值,是阈值TH1的最佳值。
[0091] 类似地,参看图4,对于阈值TH2,其响应从处于“L1”与“L2”状态的存储单元中读出的结果的比特错误率e2。处于“L1”与“L2”状态的存储单元构成集合{C20,C21,C22,…,C1n}。对于阈值TH2的多个取值,从处于“L1”与“L2”状态的存储单元中读出的结果得到多个比特错误率(表示为e20,e21,e22,…)。以及得到值最小的比特错误率的阈值TH2的取值,是阈值TH2的最佳值。
[0092] 可以理解的,对应于每个阈值的存储单元集合,例如存储单元集合{C10,C11,C12,…,C1m}与{C20,C21,C22,…,C1n},其所包含的存储单元数量可以不同。
[0093] 因而,需要识别字线的存储单元的状态,并依据具有指定状态的存储单元的比特错误率,来识别同指定状态相关的阈值的最佳值。以及使用阈值的最佳值从存储单元读出数据,来降低读出数据的比特错误率。可选地,识别存储单元的多个阈值(例如,对于TLC存储单元,有7个阈值)的每个的最佳值。以及使用所有阈值的最佳值来从存储单元读出数据,来降低读出数据的比特错误率。或者在读出指定类型的物理页(例如,MSB页、CSB页或LBS页)时,使用与指定类型的物理页相关的阈值的最佳值来从存储单元读出数据,来降低读出数据的比特错误率。例如,要读出LSB页时,参看图3A,相关的阈值为TH1,使用阈值TH1的最佳值来从存储单元读出数据。当要读出CSB时,相关阈值为TH2与TH3,使用阈值TH2与阈值TH3的最佳值来从存储单元读出数据。当要读出MSB时,相关阈值为TH4、TH5、TH6与TH7,使用阈值T H4、TH5、TH6与TH7的最佳值来从存储单元读出数据。
[0094] 进一步地,若闪存介质的多个字线的均一性不好,还将多个字线分组,为每组字线设置在读出数据时所使用的一个或多个阈值的最佳值。
[0095] 图5展示了根据本申请实施例的设置阈值的流程图。为设置阈值,读取字线上的多个物理页(510),并依据读出结果获取字线上的存储单元的状态(520)。对于MLC类型的存储单元,每个存储单元存储的两个比特(MSB与LSB)分别对应两个物理页(MSB页与LSB页)。一条字线上的多个MLC存储单元提供了至少两个物理页。读出这两个物理页,并将两个物理页的对应比特组合,以得到字线上的存储单元的状态。例如,从(包括4个存储单元的)字线的MSB页读出的数据是“1010”,而从L SB页读出的数据是“1100”,组合两个物理页的对应比特,得到字线的4个存储单元(C1、C2、C3与C4)的状态分别是“11”、“01”、“10”与“00”。对于TL C类型的存储单元,每个存储单元存储的三个比特(MSB、CSB与LSB)分别对应三个物理页(MSB页、CSB页与LSB页)。一条字线上的多个TLC存储单元提供了至少三个物理页。读出这三个物理页,并将三个物理页的对应比特组合,以得到字线上的存储单元的状态。例如,从(包括4个存储单元的)字线的MSB页读出的数据是“1010”,从CSB页读出的数据是“0011”,而从LSB页读出的数据是“1100”,组合三个物理页的对应比特,得到字线的4个存储单元(C1、C2、C3与C4)的状态分别是“101”、“001”、“110”与“010”。
[0096] 可选地,为获得存储单元的状态,对从存储单元读出的物理页的数据进行错误校正译码,以得到物理页中正确的数据。一般地,物理页所包含的数据量为4KB、8KB或16KB,因而一条字线上的存储单元的数量是巨大的。对于TLC闪存,其可能的状态有8种。而一条字线上的大量的存储单元中,具有每种状态的存储单元的数量都可以较多。
[0097] 在另一个例子中,为了避免一些情况下,一条字线上的存储单元中,状态分布不均匀,具有某些状态的存储单元的数量过少;可向字线的多个物理页写入已知的数据,并使字线上具有每种状态的存储单元的数量都达到较高的平。
[0098] 为了获得一个阈值(例如,TH1)的最佳值,从字线上的存储单元中识别具有与阈值相关的状态的多个存储单元(530)。与阈值相关的状态,是由阈值所区分的存储单元的读出电压分布相邻的两个状态。在图4中示出了与各阈值(TH1、TH2、…、TH7)相关的状态(L3/L4、L1/L2、…、L6/L7)。由于步骤520获得了字线上各个存储单元的状态,在步骤530,对于阈值TH1,从字线上的多个存储单元中,识别出具有“L3”与“L4”状态的存储单元。例如,参看图4,存储单元集合{C10,C11,C12,…C1m}中的存储单元都是具有“L3”与“L4”状态的存储单元。在根据本发明的实施例中,为获得阈值的最佳值,仅依据具有阈值相关的状态的存储单元的比特错误率,从而避免了其他状态的存储单元的多种比特错误原因给统计结果带来的干扰。
[0099] 统计在阈值取不同值时,步骤530所识别的存储单元集合的多个比特错误率,得到最低比特错误率的阈值的取值,为该阈值当前的最佳值(540)。例如,在阈值(例如,TH1)的取值范围内,设置阈值(例如,TH1)的不同值。对于阈值(例如,T H1)的每个取值,从字线上读出与阈值相关的存储单元所在的物理页,并识别出与阈值相关的多个存储单元(例如,{C10,C11,C12,…C1m})的每个的状态。进而得到对于阈值(TH1)的每个取值,与阈值相关的多个存储单元(例如,{C10,C11,C12,…C1m})的比特错误率。以及得到值最小的比特错误率的阈值(例如,TH1)的取值,是阈值的最佳值。
[0100] 在一个例子中,存储单元是TLC存储单元,每个存储单元中存储3比特数据。为计算存储单元的比特错误率,仅统计与阈值相关的多个存储单元中与被搜索的阈值(例如,TH1)相关的比特(参看图3A,与阈值TH1相关的比特是LSB)的错误率。类似地,也参看图3A,与阈值TH2或TH3相关的比特是CSB,而与阈值TH4、TH5、TH6或TH7相关的比特是MSB。
[0101] 在另一个例子中,为计算存储单元的比特错误率,统计与阈值相关的存储单元的所有比特的总计的比特错误率。
[0102] 在依然另一个例子中,考虑到经过编程的存储单元中存储的电荷的自然流失属性,依据电荷流失对存储单元的读出电压造成的变化而单向搜索阈值的不同取值。例如,参看图3A,随着存储单元内的电荷流失,存储单元的读出电压向读出电压轴的左侧移动。因而为搜索阈值的最佳取值,在读出电压轴上从右向左搜索(存储单元内存储的电荷流失使存储单元的读出电压变化的方向),能够简化搜索过程,并提高搜索效率。
[0103] 记录所得到的阈值的最佳值,并使用阈值的最佳值读取NVM芯片其他物理页(550)。
[0104] 可以理解地,通过步骤510到步骤540获得了阈值的最佳值。而步骤550利用所获得的阈值的最佳值读取NVM芯片。步骤510到步骤540,与步骤550不必同时发生或一起发生,也不必在同一处理过程中实施。
[0105] 可选地,通过反复执行步骤530与步骤540,以获得多个阈值的每个的最佳值。例如,在步骤530,获得与阈值TH2相关的存储单元集合{C20,C21,C22,…,C2n}。在步骤540,将阈值TH2设置为第一值,从NVM芯片中读出包括存储单元集合{C20,C21,C22,…,C2n}的多个物理页,并识别出存储单元集合{C20,C21,C22,…,C2n}中每个存储单元的状态,以及在存储单元集合{C20,C21,C22,…,C2n}的比特错误率。以及在步骤540,还改变阈值TH2的取值,并统计出存储单元集合{C20,C21,C22,…,C2n}的比特错误率。在获得了阈值TH2的最佳值后,重复步骤530与步骤540,以识别例如阈值TH3的最佳值。
[0106] 图6A展示了根据本申请又一实施例的设置阈值的流程图。
[0107] 为设置阈值,读取字线上的多个物理页(610),并依据读出结果获取字线上的存储单元的状态(620)。对于MLC类型的存储单元,每个存储单元存储的两个比特(MSB与LSB)分别对应两个物理页(MSB页与LSB页)。一条字线上的多个ML C存储单元提供了至少两个物理页。读出这两个物理页,并将两个物理页的对应比特组合,以得到字线上的存储单元的状态。
[0108] 可选地,为获得存储单元的状态,对从存储单元读出的物理页的数据进行错误校正译码,以得到物理页中正确的数据。一般地,物理页所包含的数据量为4KB、8KB或16KB,因而一条字线上的存储单元的数量是巨大的。对于TLC闪存,其可能的状态有8种。而一条字线上的大量的存储单元中,具有每种状态的存储单元的数量都可以较多。
[0109] 在图6A的实施例中,要获得存储单元被写入的状态与从存储单元读出的状态。在一个例子中,向存储单元对应的多个物理页写入已知数据,从而依据已知数据可获得存储单元被写入的状态,以及依据从存储单元对应的多个物理页读出数据,可获得从存储单元读出的状态。在另一个例子中,对从存储单元对应的多个物理页读出的数据做错误校正译码,依据错误校正译码结果得到存储单元被写入的状态;而依据从存储单元对应的多个物理页读出的数据,得到从存储单元读出的状态。
[0110] 确定存储单元被写入状态与从存储单元读出的状态二者相关的阈值(630)。当存储单元错在错误,被写入状态与读出的状态不同时,依据被写入状态与读出状态能确定相关的阈值。
[0111] 参看图6B,图6B中展示了与存储单元的被写入状态与读出状态的组合相关的阈值。在存储单元的被写入状态与读出状态相邻时,意味着存储单元存在错误,且该错误与该相关的阈值有关。通过调整阈值,有助于降低或消除同该被写入状态与该读出状态相关的错误。
[0112] 例如,当被写入状态是“L0”而读出状态是“L1”时,与被写入状态和读出状态相关的阈值是TH4。也参看图3A,与阈值相关的状态,是由阈值所区分的存储单元的读出电压分布相邻的两个状态。同具有相邻电压分布的两个状态的组合相关的阈值,是用于区分这两个状态的电压分布的阈值。返回参看图6B,若存储单元被写入状态是“L3”,而从存储单元读出的状态是“L4”,那么相关阈值是“TH1”。
[0113] 继续参看图6B,若存储单元被写入的状态与从存储单元读出的状态不相邻(包括被写入的状态与从存储单元读出的状态相同,或图6B中由“其他”所指示的情况),则不考虑该存储单元对阈值的影响。
[0114] 对于被考虑的每个存储单元,确定与同该存储单元相关的阈值相关的调整方向值(640)。再次参看图6B,例如,当被写入状态是“L0”而读出状态是“L1”时,与被写入状态和读出状态相关的阈值是TH4,以及对应的“调整方向值”是“+1”,意味着阈值的调整方向是向右移动(增大阈值的取值,有助于降低或消除被写入状态与读出状态的差异)。图6B中给出了对于TLC类型的存储单元,存储单元被写入状态与读出状态相邻时,同被写入状态与读出状态的组合对应的阈值以及调整方向值。
[0115] 可选地,存储单元被写入的状态与读出状态不相邻时,不考虑该存储单元对阈值的影响。依然可选地,存储单元被写入的状态与读出状态不相邻时,将该存储单元对一个、多个或每个阈值的影响(对调整方向值的影响)设为0。
[0116] 对于每个存储单元,累计与阈值相关的调整方向值(650)。例如,第一存储单元的被写入状态是“L0”,读出状态是“L1”,与该存储单元相关的阈值是“TH4”,相关的调整方向值是“+1”。第二存储单元的被写入状态是“L1”,读出状态是“L0”,与该存储单元相关的阈值是“TH4”,相关的调整方向值是“-1”。第三存储单元的被写入状态是“L1”,读出状态是“L0”,与该存储单元相关的阈值是“TH4”,相关的调整方向值是“-1”。第四存储单元的被写入状态是“L4”,读出状态是“L5”,与该存储单元相关的阈值是“TH6”,相关的调整方向值是“+1”。那么,累计对阈值TH4相关的调整方向值为对从上面第一、第二、第三存储单元得出的调整方向值求和,得到“-1”。累计对阈值TH6相关的调整方向值为从上面第四存储单元得出的调整方向值,得到“+1”。
[0117] 对于字线上的多个存储单元,对每个存储单元,获得与其状态相关的阈值与调整方向值,并对每个阈值累计其调整方向值,得到每个阈值的调整方向值的和,用来确定阈值的调整方向,或阈值的调整值(660)。
[0118] 在一个例子中,阈值的调整值的取值为-1、0、+1。将累计的调整方向值映射到阈值的调整值的三种取值之一。例如,若阈值TH1的累计的调整方向值大于5,对应的阈值TH1的调整值为+1;若阈值TH1的累计的调整方向值小于-5,对应的阈值T H1的调整值为-1;若阈值TH1的累计的调整方向值在-5到+5之间,对应的阈值TH1的调整值为。显然所属领域技术人员可以理解,“+5”与“-5”仅是举例,可以采用其他的值来实现从累计的调整方向值到阈值的调整值的映射。以及有多种映射方式,来将累计的调整方向值映射为阈值的调整值的三种取值之一。
[0119] 阈值的调整值为+1时,意味着要将该阈值的值增加一个单位。类似的,阈值调整值为-1时,意味着要将该阈值的值减少一个单位。而阈值调整值为0时,保持该阈值的值不变。
[0120] 在图6A的实施例中,对阈值的调整是持续的过程,每次可以只调节例如一个单位。若阈值的调整值不为0(665),意味着对阈值的调整可能尚未完成,需要进一步的调整,因而返回步骤610,并重复执行阈值的调整过程。
[0121] 在一个例子中,要调整的阈值有多个(例如,7个,也参看图3A),则当要调整的多个阈值的任何一个的调整值不为0时,都返回步骤610,并重复执行阈值调整过程。
[0122] 可选地,针对指定的一个或多个阈值进行调整。在步骤665,指定的阈值的任何一个的调整值不为0时,返回步骤610。
[0123] 若要调整的阈值的调整值都为0,表明已经得到每个阈值的最佳值。记录当前每个阈值的值作为阈值的最佳值(670)。
[0124] 使用阈值的最佳值读取NVM芯片其他物理页(680)。
[0125] 可以理解地,通过步骤610到步骤670获得了阈值的最佳值。而步骤680利用所获得的阈值的最佳值读取NVM芯片。步骤610到步骤670,与步骤680不必同时发生或一起发生,也不必在同一处理过程中实施。
[0126] 图7展示了阈值电压(阈值的取值)与错误比特数(BEC,Bit Error Count)的关系。使用不同的阈值电压从包括多个存储单元的物理页读出数据时,曲线700展示了读出数据中的错误比特数随使用的阈值电压的变化而改变。参考图7,横轴指示读出数据所使用的阈值电压,而纵轴指示读出数据中的错误比特数。可以理解地,读出数据可以包括从一个或多个物理页读出数据,从多个存储块、LUN或NVM芯片的多个物理页读出数据,从物理页的多个存储单元的部分读出数据,或者从物理页的部分存储单元中读出属于指定物理页类型(MSB页、CSB页或LSB页)的数据。依然可以理解地,虽然图7中展示了单一阈值电压,然而为从存储单元读出数据,所使用的阈值电压可以有多个,以区分存储单元中可能存储的多个状态。
[0127] 继续参看图7,曲线700上包括点710、712与714。在三个点(710、712与714)中,点714具有最低的错误比特数,因而,点714所对应的阈值电压具有较佳的阈值取值。依据图7,错误比特数是阈值电压的函数,通过搜索具有最低或较低错误比特数的阈值电压,能够获得最佳或较佳的阈值电压取值。以及,对阈值电压的搜索可以在对NVM芯片的使用过程中不断进行,以追踪因NVM芯片的使用而引起的最佳或较佳阈值电压变化。对最佳或较佳阈值电压的追踪可利用求解单变量搜索问题的一种或多种方法实现。
[0128] 结合领域知识有助于优化阈值电压搜索过程。在根据本申请的实施例中,利用错误校正码(ECC,Error Correction Code)的纠错能力来优化搜索过程。当读出数据中的错误比特数远低于ECC的纠错能力时,对最佳或较佳阈值电压寻找变得不那么重要;而在读出数据中的错误比特数接近或超过ECC的纠错能力时,需要积极搜索最佳或较佳阈值电压。
[0129] 图8展示了根据本申请依然又一实施例的搜索阈值的流程图。在图8所示的实施例中,通过使用阈值的不同取值从存储单元中读出数据,识别阈值的不同取值对应的读出数据的错误比特数来搜索阈值的最佳或较佳值。在NVM芯片中,可被设置的阈值有一个或多个,根据要跟踪或调整的阈值之一,选择要从中读出数据的第一物理页(810)。例如,参看图3A,阈值TH4对应MSB页,而阈值TH3对应CSB页,因而要跟踪阈值TH4时,第一物理页是MSB页。
又例如,可以为3D NVM芯片不同层的物理页设置阈值,依据要跟踪或调整的阈值确定其影响的物理页地址范围来选择物理页。
[0130] 使用阈值的第一值(例如,默认值或当前值)从第一物理页读出数据(第一数据)(820)。可识别读出的数据的错误比特数。例如,对读出数据进行错误校正译码,将得到读出数据的校正结果,以及存在错误的比特数量。也参看图7,阈值的第一值是例如点710的横坐标所指示的阈值。
[0131] 依据阈值的第一值获得阈值的第二值,并利用第二值从第一物理页读出数据(第二数据)(830)。例如,将第一值加上或减去指定值,得到第二值。也参看图7,第二值是例如点712或点714的横坐标所指示的阈值。第一值与第二值的距离,可以是例如阈值的取值范围的1%。在依然另一个例子中,考虑经过编程的存储单元中存储的电荷的自然流失属性,依据电荷流失对存储单元的读出电压造成的变化选取阈值的第二值的不同取值。作为举例,以阈值的第一值(710)为原点,在阈值电压轴的负方向选择第二值(714)。
[0132] 依据利用阈值的第二值读出的第二数据确定阈值的调整方向(840)。作为举例,第二值是点712的横坐标所指示的值;由于点712的错误比特数高于点710的错误比特数,意味着第二值比第一值更远离阈值的最佳值,为获得阈值的最佳值,向从第一值开始远离第二值的方向(图7,横轴左侧)搜索最价值。而在另一个例子中,第二值是点714的横坐标所指示的值;由于点714的错误比特数低于点710的错误比特数,意味着第二值比第一值更接近阈值的最佳值,为获得阈值的最佳值,向从第一值开始朝向第二值的方向(图7,横轴左侧)搜索最价值。为了描述的目的,将图7中,横轴从左到右的方向称为正方向,从右到左的方向称为负方向。
[0133] 在可选的实施方式中,考虑到经过编程的存储单元中存储的电荷的自然流失属性,阈值的最佳值随时间向阈值电压轴的负方向移动的可能性较大,从而可默认地将阈值的调整方向设置为阈值电压轴的负方向(存储单元内存储的电荷流失使存储单元的读出电压变化的方向),在此实施方式中,也无须执行步骤830。以及,可选地,执行(不省略)步骤830,并利用阈值的第二值读出的第二数据来修订阈值的调整方向。例如,在利用相对于阈值的第一值位于阈值电压轴的负方向的阈值的第二值读出的第二数据的错误比特数相对于利用阈值的第一值读出的第一数据的错误特数显著增加时,将阈值的调整方向设置为阈值电压轴的正方向。
[0134] 根据利用阈值的第一值读出的第一数据确定阈值的调整幅度(850)。作为举例,也参看图7,第一数据中的错误比特数越高,意味着第一值距离阈值的最佳取值越远,而第一数据中的错误比特数越低,意味着第一值距离阈值的最佳值越近。因而,在一个例子中,根据第一数据的错误比特数的绝对值设置阈值的调整幅度,绝对值越大,阈值的调整幅度越大,绝对值越小,阈值的调整幅度越小。作为另一个例子,根据第一数据的错误比特数与使用的错误校正码的纠错能力的差距来设置阈值的调整幅度,第一数据的错误比特数接近错误校正码的纠错能力时(例如,二者的差小于错误校正码值的10%-50%),将调整幅度设置为较大的值(例如,阈值取值的单位步长、单位步长的数倍或指定值),而在第一数据的错误比特数远小于错误校正码的纠错能力时(例如,二者的差小于错误校正码值的50%),将幅度调整值设置为较小的值(例如单位步长、单位步长的1/n、指定值的1/n,n取正整数;或者指定值的m倍,m同第一数据的错误比特数正相关,例如,m为ECC纠错能力的倒数或NVM芯片的随机电噪声引入的错误比特数的平均值/数学期望的倒数)。作为依然另一个例子,依据第一数据的错误比特数与第二数据的错误比特数的差的绝对值设置阈值的调整幅度,当该绝对值越大时,调整幅度越大,而当该绝对值越小时,调整幅度越小。
[0135] 依据步骤840获得的阈值调整方向以及阈值850获得的阈值调整幅度,更新阈值的取值(860)。例如,在阈值的当前取值上沿所确定的调整方向,将阈值的第一值调整所确定的调整幅度。
[0136] 根据本申请图8所示的实施例的方法可以在固态存储设备使用中被不断执行,从而对阈值的取值保持跟踪,使得能及时获取阈值的最佳值或较佳值。执行图8所示的方法需要从NVM芯片读取数据。可选地,在固态存储设备的负载较轻时,执行如图8所示的方法,以降低对固态存储性能的影响。或者周期性地执行如图8所示的方法。依然可选地,对于NVM芯片的多个阈值的每个,执行如图8所示的方法,以跟踪每个阈值的最佳或较佳取值。依然可选地,在固态存储设备生命周期的后期或者从NVM芯片读数据发生不可纠正错误后,才执行如图8所示的实施例的方法,从而在固态存储设备的生命周期的前期,NVM芯片的读带宽得以全部保留给用户对固态存储设备的访问。
[0137] 依然可选地,同被跟踪的阈值对应的物理页有多个。例如,NVM芯片中的多个物理块中的多个物理页使用同一阈值。在重复执行图8所示的方式时,在步骤810,可从对应于被跟踪的阈值的多个物理页中选择任何一个物理页。进一步地,在步骤820与步骤830中被读出数据的物理页,可以是对应于被跟踪的阈值的多个物理页中的相同物理页或不同物理页。
[0138] 依然可选地,在固态存储设备中可运行图8所示的方法的多个实例。例如,在固态存储设备的每个NVM芯片或多个LUN(逻辑单元)的每个上运行图8所示的方法的实例,来对NVM芯片之一或LUN之一实施阈值跟踪。
[0139] 依然可选地,在固态存储设备中可运行图8所示的方法的一个实例,对固态存储设备的每个NVM芯片或多个LUN的每个运行图8所示的方法。例如,对NVM芯片之一或LUN之一轮流实施阈值跟踪。对各个NVM芯片或各个LUN的阈值跟踪过程可以彼此交叠,从而并发执行。
[0140] 依然可选地,由于阈值的第一值与第二值接近,使得第一数据的错误比特数与第二数据的错误比特数接近,因而步骤850中也可食用第二数据确定阈值的调整幅度。
[0141] 在根据本申请的又一实施方式中,依然可选地,根据本申请实施例的方法还依据阈值的第一值与第二值,获取阈值的第三值,使得第二值与第三值分布在第一值的两侧。换句话说,第二值与第三值的一个大于第一值,而第二值与第三值的另一个小于第一值。例如,参看图7,阈值的第一值为点710的横坐标,若第二值取点712的横坐标,则选取点714的横坐标作为阈值的第三值。依然可选地,第二值到第一值的距离,与第三值到第一值的距离相等。
[0142] 以及还使用阈值的第三值从第一物理页获取第三数据。依据第二数据的错误比特数与第三数据的错误比特数的差,将使错误比特数降低的方向确定为阈值的调整方向,以替代图8的步骤840。例如,参看图7,第二值取点712的横坐标,第三值取点714的横坐标,第二数据的错误比特数与第三数据的错误比特数的差大于0,即,负方向使错误比特数降低,因而将负方向确定为阈值调整方向。可选地,还依据第二数据的错误比特数与第三数据的错误比特数的差确定阈值的调整幅度,使得阈值调整幅度与第二数据的错误比特数与第三数据的错误比特数的差正相关。例如,阈值调整幅度正比于第二数据的错误比特数与第三数据的错误比特数的差的绝对值;或者,当第二数据的错误比特数与第三数据的错误比特数的差的绝对值大于指定值时,将阈值调整值设置为较大值,而当第二数据的错误比特数与第三数据的错误比特数的差的绝对值不大于指定值时,将阈值调整值设置为正比于第二数据的错误比特数与第三数据的错误比特数的差的绝对值的较小值。
[0143] 图9是根据本申请依然另一实施例的搜索阈值的流程图。在NVM芯片中,可被设置的阈值有一个或多个,根据要跟踪或调整的阈值之一,选择要从中读出数据的第一物理页(910)。使用阈值的第一值(例如,默认值或当前值)从第一物理页读出数据(第一数据)(920)。可识别读出的数据的错误比特数。也参看图7,阈值的第一值是例如点710的横坐标所指示的阈值。依据阈值的第一值获得阈值的第二值,并利用第二值从第一物理页读出数据(第二数据)(930)。依据利用阈值的第二值读出的第二数据确定阈值的调整方向(940)。根据利用阈值的第一值读出的第一数据确定阈值的调整幅度(950)。
[0144] 累计阈值的调整值(960)。例如通过步骤940得到了阈值的调整值的方向,而通过步骤950得到了阈值的调整值的幅度,从而得到向量形式(包括方向与幅度)的阈值的调整值。以及通过对向量求和来累计阈值的调整值。作为又一个例子,步骤940得到了阈值的调整值的方向,指示了调整值的符号(正方向对应“+”号,而负方向对应“-”号),从而通过对有符号数求和来累计阈值的调整值。
[0145] 接下来,判断累计的次数是否小于指定正整数N(970)。若累计的次数小于N,重复执行步骤920到步骤970。若累计的次数不小于N,则依据所累计的阈值的调整值,更新阈值的取值(980)。例如,用所累计的阈值的调整值与阈值当前值的和,作为阈值的取值。可选地,若累计的次数小于N,还执行步骤910,以改变第一页的选择,以从对应于阈值的其他页中读取数据。通过设置N的取值,来消除或降低NV M芯片的读出数据中的随机噪声的影响,例如,N可以是小于10的正整数。
[0146] 根据本申请图9所示的实施例的方法可以在固态存储设备使用中被不断执行,从而对阈值的取值保持跟踪,使得能及时获取阈值的最佳值或较佳值。
[0147] 依然参看图9,提供根据本申请的再一实施例。为跟踪阈值T的取值的最佳值,选择与阈值T对应的物理页之一(记为P)。阈值T的当前取值为TC(第一值),在TC的两侧对称地选取阈值的第二值(记为TL)与第三值(记为TR),TL=TC-D elta,而TR=TC+Delta,其中Delta为指定的增量,例如,为阈值T的取值的范围的1%,或者阈值T的可改变的最小步长的倍数。依据Tc、TL与TR分别从物理页P读出数据,分别记为Data(C)(第一数据)、Data(L)(第二数据)与Data(R)(第三数据)。Data(C)、Data(L)与Data(R)的错误比特数分别记为BEC(C)、B EC(L)与BEC(R)。计算Direction=sign(BEC(L)-BEC(R))作为阈值的调整值的方向,其中”sign(x)”表示x的符号函数,当x>0时,sign(x)=1,当x<0时,sign(x)=-1,而当x=0时,sign(x)=0。计算Altitute(BEC(C))(阈值的调整值的幅度),其中
[0148] 以及其中,为错误校正码的纠错能力,N为步骤970中的正整数N。可选地,为小于ECC纠错能力的指定值(例如,ECC纠错能力的一半)或NVM芯片的随机电噪声引入的错误比特数的平均值/数学期望。
[0149] 接下来,计算阈值的调整值ΔT=Direction*Altitute(BEC(C)),以及更新后的阈值为T=TC+ΔT。
[0150] 可选地,累计阈值的N个调整值。,更新后的高精度的阈值TC’=+TC。由于TC’可能为浮点数,为在NVM芯片中设置阈值,对高精度阈值TC’取整,得到TC=Round(+TC)作为更新后的阈值的取值(980),其中Round表示取整操作(例如,四舍五入)。
[0151] 依然可选地,保存得到的阈值的高精度版本TC’,以及在再次更新阈值时,更新高精度的阈值TC’=+TC’,以及更新后的阈值的取值为TC=Round(+TC)。
[0152] 图10是根据本申请再一个实施例的流程图。通过组合根据本申请图5所示的实施例与图8所示的实施例,所得到的实施例(如图10所示),通过更准确的获得错误比特数来优化对阈值的跟踪。
[0153] 参看图10,为设置阈值,读取字线上的多个物理页(510),并依据读出结果获取字线上的存储单元的状态(520)。如图10所示的实施例中,对字线的物理页中写入的数据基本上没有限制。例如,写入的数据可以是来自用户应用并经随机化的任意数据。
[0154] 为了获得一个阈值(例如,TH1,也参看图3A)的最佳值,从字线上的存储单元中识别具有与阈值相关的状态的多个存储单元(530)。与阈值相关的状态,是由阈值所区分的存储单元的读出电压分布相邻的两个状态。在根据本发明的实施例中,为获得阈值的最佳值,仅依据具有阈值相关的状态的存储单元的比特错误率,从而避免了其他状态的存储单元的多种比特错误原因给统计结果带来的干扰。
[0155] 接下来,根据字线上的具有与阈值(例如,TH1)相关的状态的多个存储单元的比特错误率,搜索阈值的最佳值(540)。例如,通过根据本申请图8所示的实施例的方法(步骤1020到步骤1060)来搜索阈值的最佳值。
[0156] 根据要跟踪或调整的阈值之一(例如,TH1),使用阈值的第一值(例如,默认值或当前值)从步骤530获取的多个存储单元读出数据(第一数据)(1020)。所读出的数据来自该多个存储单元存储的与要跟踪或调整的阈值相关的比特。以及依据阈值的第一值获得阈值的第二值,并利用第二值从该多个存储单元读出数据(第二数据)(1030)。例如,将第一值加上或减去指定值,得到第二值。所读出的数据来自该多个存储单元存储的与要跟踪或调整的阈值相关的比特。
[0157] 依据利用阈值的第二值读出的第二数据确定阈值的调整方向(1040)。根据利用阈值的第一值读出的第一数据确定阈值的调整幅度(1050)。依据步骤1040获得的阈值调整方向以及阈值1050获得的阈值调整幅度,更新阈值的取值(1060)。
[0158] 可以理解地,也可通过根据本申请的其他实施例(例如,结合图9所展示的实施例)来搜索阈值的最佳值。
[0159] 记录所得到的阈值的最佳值,并使用阈值的最佳值读取NVM芯片(550)。
[0160] 图11是固态存储设备的框图。根据本申请的实施例可由图11所展示的固态存储设备中实施。固态存储设备1102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备1102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如S ATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Un iversal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Exp ress,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备1102。主机可以是能够通过上述方式同固态存储设备相通信的信息处理设备,例如,个人计算机、平板电脑服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备1102包括接口1103、控制部件1104、一个或多个NVM芯片1105以及DRAM(Dyn amic Random Access Memory,动态随机访问存储器)1110。
[0161] NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,电存储器)、M RAM(Magnetic Random Access Memory,磁阻存储器)、RRAM(Resistive Rando m Access Memory,阻变存储器)等是常见的NVM。
[0162] 接口1103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
[0163] 控制部件1104用于控制在接口1103、NVM芯片1105以及DRAM 1110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。如本申请图5、图6A、图6B、图8、图9或图10所展示的实施例由控制部件104实施。控制部件104可通过软件硬件固件或其组合的多种方式实现。例如,控制部件1104可以是FPGA(Field-programmable gate array,现场可编程阵列)、ASIC(Application Specific Integrated Circuit,应用专用集成电路)或者其组合的形式;控制部件1104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件1104的硬件来处理IO(Input/Output)命令;控制部件1104还可以耦合到DRAM 1110,并可访问DRAM 1110的数据;
在DRAM可存储FTL表和/或缓存的IO命令的数据。
[0164] 控制部件1104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片1105,并以遵循NVM芯片1105的接口协议的方式向NVM芯片1105发出命令,以操作NVM芯片1105,并接收从NVM芯片1105输出的命令执行结果。NVM芯片
1105的接口协议包括“Toggle”、“ONFI”等公知的接口协议或标准。
[0165] 在控制部件1104中运行的软件和/或固件(下面统称为“固件”)可被存储在NVM芯片1105或另外的固件存储器中。在固态存储设备1102上电时,从固件存储器将固件加载到DRAM 1110和/或控制部件1104内部的存储器中。可选地,通过接口1103或调试接口接收并加载固件。
[0166] 根据本发明实施例的阈值设置方法可应用于基于NVM芯片的固态存储设备,包括但不限于固态硬盘、U盘、SD卡,还可以应用于手机、平板电脑等便携式电子设备,以及其他多种使用NVM芯片(诸如NAND闪存、相变存储器、FeRAM、MRAM等是常见的NVM。)的需要存储信息的电子设备。
[0167] 虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本发明的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本发明的范围。
[0168] 这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本发明的很多修改和其他实施方式。因此,应该理解,本发明不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈