![一种针对Open Block的测试及处理方法与流程](/upload/img/202110/rsniquapsff.gif)
本发明涉及一种针对openblock的测试及处理方法,属于nandflash测试技术领域。
背景技术:
nandflash是目前被广泛应用的存储介质,nandflash以块(block)为擦除单位,页(page)为读写单位,在使用过程中极易出现某些块的页未写入数据的情况,这种没有写满数据的块我们称作开放块(openblock)。openblock中保存的数据稳定性较差,尤其是读取边缘页时,大概率出现大量数据位错误,应用到系统中可能表现为数据纠错失败。
具体的,openblock指未被完全写满的块。nandflash以块(block)为擦除单位,以页(page)或字线(wl)为读写单位,在使用过程中,如果一个block的所有page或wl没有被全部写入数据,我们将其称为openblock。openblock中最后写入数据的几个page或wl我们称为边缘page(wl)。与openblock对应的是完全写满数据的block,我们称为closeblock。
一般来说,影响nandflash保存数据的因素主要有擦写次数(pecounts)、数据保存时间(dataretention)、读取次数(readdisturb)、温度变化,但是它们对于closeblock和openblock的影响并不相同,所以如果对openblock使用与closeblock同样的处理策略是无法保证openblock中有效数据的读取正确性的,尤其是对边缘page(wl)而言,需要保护边缘page或字线的数据稳定。
技术实现要素:
本发明要解决的技术问题是提供一种针对openblock的测试及处理方法,测试得出openblock的边缘页或边缘字线,根据测试方法得出的结果有针对性的对openblock进行处理,避免因为openblock问题带来的数据读取错误。
为了解决所述技术问题,本发明采用的技术方案是:
一种针对openblock的测试方法,包括以下步骤:
s01)、选取一个block作为测试block,针对该block,从写入wl0开始,每写完一个wl的数据,就读取已经写过的所有wl,将所有读取的wl的数据错误位数记录下来,直至写满当前block,从而得到整个block写入过程中的所有fbc情况;
s02)、设block有n个wl,closeblock是n个wl全部写满数据,openblock是只有k个wl写入数据,k∈(0,n),对于测试的每个block,分析k以后的wl的数据错误位数,若从第s个wl之后,数据错误位数呈现相对稳定的振荡状态,说明openblock的数据已经相对稳定,要保证openblock的k个wl数据稳定性与closeblock一致,从wlk向后写入至少s个冗余wl,s∈(0,k-n]);与closeblock对比发现k个wl里面有m个边缘的wlfbc明显升高,这m个wl称作边缘wl。
进一步的,执行完步骤s02)之后执行步骤s03),s03)、将所有wl都写入数据,然后对m个边缘wl进行最优电压轴扫描,扫描完成后将m组最优电压轴分别用于m个边缘wl,找到一组让每个边缘wl的fbc都满足ecc纠错能力的电压轴,这就是m个边缘wl的最优电压轴。
进一步的,选取m个block重复步骤s01、s02,得到不同k值对应的s。
进一步的,将block的wl分为w组,编号1,2…,w,每组包含的wl数量分别为n/w,n/w*2…,n,选取测试的block,将第1组的wl都写入数据,然后对m个边缘wl进行最优电压轴扫描,扫描完成后将m组最优电压轴分别用于m个边缘wl,找到一组让每个边缘wl的fbc都满足ecc纠错能力的电压轴,这就是m个边缘wl的最优电压轴,然后擦除整个block,重复第1组wl的操作直至w组wl全部完成,最后就得到了所有w组openblock边缘wl的最优电压轴。
进一步的,通过在不同擦写次数、不同数据保存时间、不同读取次数和温度变化情况下测试,进而获取每组情况对应的s。
进一步的,通过在不同擦写次数、不同数据保存时间、不同读取次数和温度变化情况下测试而获取每种情况对应的边缘wl的最优电压轴。
本发明还公开一种针对openblock的处理方法,对于openblock的边缘wl采取使用最优电压轴读取边缘wl数据;对于有m个边缘wl的openblock,为了保证openblock的k个wl数据稳定性与closeblock一致,从wlk向后写入至少s个冗余wl。
进一步的,s个冗余wl写入随机数据。
本发明的有益效果:本发明所述测试方法能够快速获取openblock存储的数据特性,通过获取的具体数据可以快速得出对应的参数数值,同时测试中可以很容易的增加擦写次数(pecounts)、数据保存时间(dataretention)、读取次数(readdisturb)和温度变化等影响nandflash数据稳定性的方法,最终根据测试结果确定对应的处理方法。另外根据本专利描述的openblock边缘wl处理方法能够快速准确的读取多种情况下边缘wl的数据,降低openblock边缘wl的数据错误风险。
具体实施方式
图1为测试得到边缘wl的流程图;
图2为得到边缘wl最优电压轴的流程图;
图3为readwl12对应的fbc曲线示意图;
图4为readwl49对应的fbc曲线示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步的说明。
实施例1
本实施例公开一种针对openblock的测试方法,本方法包括前部分,一部分是测试得到边缘wl,另一部分是测试得到边缘wl的最优电压轴。
本实施例以one-pass3dtlc为例,说明一种openblock的测试方法,并通过与closeblock的对比,给出openblock的处理方法。假设3dtlc的每个block有n个wl,closeblock即n个wl全部写满数据,openblock则是写入的wl数量只有k个,k∈(0,n)。
测试得出边缘wl的过程为:
s01)、选取一个block作为测试block,针对该block,从写入wl0开始,每写完一个wl的数据,就读取已经写过的所有wl,将所有读取的wl的数据错误位数记录下来,直至写满当前block,从而得到整个block写入过程中的所有fbc情况;
s02)、设block有n个wl,closeblock是n个wl全部写满数据,openblock是只有k个wl写入数据,k∈(0,n),对于测试的每个block,分析k以后的wl的数据错误位数(fbc),若从第s个wl之后,数据错误位数呈现相对稳定的振荡状态,说明openblock的数据已经相对稳定,要保证openblock的k个wl数据稳定性与closeblock一致,从wlk向后写入至少s个wl,s∈(0,k-n]);与closeblock对比可以发现k个wl里面会有边缘的m个wlfbc明显升高,这m个wl称作边缘wl。
图3为readwl12对应的fbc曲线示意图,从图3可以看出wl12的数据错误位数(fbc)随着向后顺序写入wl会呈现下降趋势,当wl12后第4个,即当写入wl超过wl16后,wl12的fbc呈现一个相对稳定的震荡状态,说明wl12的数据已经相对稳定,因为16-12=4,故s等于4,要保护k=12个wl的数据,需要向后写入至少s=4个wl。
图4为readwl49对应的fbc曲线示意图,从图4可以看出,目前写到第53个wl,前49个wl数据比较稳定了,那么fbc比较高的边缘wl的就是50、51、52、53,即m个边缘wl,m=53-49=4。
为了使测试具有普遍性,选取m个block重复步骤s01、s02,对最终数据进行统计分析就可以得出边缘wl。也可以根据需求对block的wl分组,根据上面的测试找出每组对应的s。
步骤s01、s02通过在不同擦写次数(pecounts)、不同数据保存时间(dataretention)、不同读取次数(readdisturb)和温度变化情况下测试而获取每种情况对应的s。
通过步骤s01、s02得出写入k个wl数据后会有m个边缘wl的数据稳定性明显不同于closeblock对应的wl,m即为openblock的边缘脆弱wl,其数据稳定性要远差于closeblock。同时步骤s01、s02得出的另一个结论是:保证k个wl数据稳定性而写入的s个wl,我们称为冗余wl,写入的数据应为随机数。冗余wl的写入是需要时间的,并且准备这些数据也需要一定的buffer资源占用。为了减少这部分开销,我们提出第二部分,即获取边缘wl的最优电压轴。
获取边缘wl的最优电压轴的过程为:将所有wl都写入数据,然后对m个边缘wl进行最优电压轴扫描,扫描完成后将m组最优电压轴分别用于m个边缘wl,找到一组让每个边缘wl的fbc都满足ecc纠错能力的电压轴,这就是m个边缘wl的最优电压轴。
这是通过一个block得到一组边缘wl最优电压轴的过程,为了减少测试量级将block的wl分为w组,编号1,2…,w,每组包含的wl数量分别为n/w,n/w*2…,n,选取测试的block,将第1组的wl都写入数据,然后对m个边缘wl进行最优电压轴扫描,扫描完成后将m组最优电压轴分别用于m个边缘wl,找到一组让每个边缘wl的fbc都满足ecc纠错能力的电压轴,这就是m个边缘wl的最优电压轴,然后擦除整个block,重复第1组wl的操作直至w组wl全部完成,最后就得到了所有w组openblock边缘wl的最优电压轴。
最优电压轴可以使当前的openblock的边缘wl数据都能够有效的被读取。
可以通过在不同擦写次数(pecounts)、不同数据保存时间(dataretention)、不同读取次数(readdisturb)和温度变化情况下测试而获取每种情况对应的边缘wl的最优电压轴。
图1为测试得到边缘wl的流程图,具体实施步骤为:
1、选取需要测试的block,设置此时需要写入的wl为0,然后执行步骤2;
2、判断当前写wl是否已经超过最后一个wl,如果是则结束,如果不是则执行步骤3;
3、向当前需要写数据的wl写入随机数据,然后执行步骤4;
4、设置读取的wl编号为0,即从wl0开始,然后执行步骤5;
5、读取当前读wl的数据,记录其错误位数,然后执行步骤6;
6、判断是否已经读完所有写wl,如果是则写wl编号加一,执行步骤2;如果否则读wl编号加一,执行步骤5。
图2为得到边缘wl最优电压轴的流程图,具体实施步骤为:
1、选取block,选取第一个wl组,执行步骤2;
2、将当前wl组的wl都写入数据,从而得到相应的openblock,然后执行步骤3;
3、设置第一个需要扫描的边缘wl,然后执行步骤4;
4、扫描当前边缘wl的最优电压轴,即错误数最低时候使用的电压轴,并记录电压轴,然后执行步骤5;
5、判断当前边缘wl是否为最后一个边缘wl,如果否,则执行步骤6;如果是则执行步骤7;
6、选择下一个需要扫描的边缘wl,然后执行步骤4;
7、得到m个边缘wl对应的m组电压轴,然后执行步骤8;
8、从m组电压轴中选择第一组电压轴,然后执行步骤9;
9、使用当前电压轴依次读取m个边缘wl,然后执行步骤10;
10、判断m个边缘wl是否全部满足ecc要求,如果否执行步骤11,如果是执行步骤13;
11、判断是否为最后一组电压轴,如果否执行步骤9,如果是执行步骤12;
12、记录扫描失败,本次没有找到一组合适的最优电压轴,然后执行步骤13;
13、判断是否是最后一个wl组,如果否执行步骤14,如果是则结束测试过程;
14、切换到下一个wl组,然后执行步骤2。
实施例2
本实施例公开一种针对openblock的处理方法,基于实施例1的测试结果,本方法对于openblock的边缘wl采取使用最优电压轴读取边缘wl数据;对于有m个边缘wl的openblock,为了保证openblock的k个wl数据稳定性与closeblock一致,需要向后写入至少s个wl。其中s个冗余wl写入随机数据。
本发明描述的测试方法能够快速获取openblock存储的数据特性,通过获取的具体数据可以快速得出对应的参数数值,同时测试中可以很容易的增加擦写次数(pecounts)、数据保存时间(dataretention)、读取次数(readdisturb)和温度变化等影响nandflash数据稳定性的方法,最终根据测试结果确定对应的处理方法。另外根据本专利描述的openblock边缘wl处理方法能够快速准确的读取多种情况下边缘wl的数据,降低openblock边缘wl的数据错误风险。
以上描述的仅是本发明的基本原理和优选实施例,本领域技术人员根据本发明做出的改进和替换,属于本发明的保护范围。
本文用于企业家、创业者技术爱好者查询,结果仅供参考。