一种通过数据模式重布局降低MLCNAND闪存误码率的方法与流程

文档序号:17475166发布日期:2019-04-20 06:04阅读:334来源:国知局
一种通过数据模式重布局降低MLC NAND闪存误码率的方法与流程

本发明属于固态存储技术领域,更具体地,涉及一种通过数据模式重布局降低mlcnand闪存误码率的方法。



背景技术:

随着技术的发展,nand闪存的工艺尺寸不断缩小,存储密度增加,闪存的可靠性和耐久性越来越低,误码率越来越高。闪存中的错误类型主要分为编程干扰错误(programinterferenceerror)、保留错误(retentionerror)、读错误(readerror)和擦除错误(eraseerror)四种。研究表明:对闪存可靠性影响最严重的是数据保留错误,编程干扰其次。闪存中频繁读写的热数据主要受编程干扰影响,而更新频率低的冷数据,主要受到编程干扰和保留错误的影响。随着数据在闪存中保留时间的增加,保留错误产生的干扰会越来越严重,成为闪存中数据错误的主要来源。编程干扰错误主要是由于编程过程中存储单元注入了过多的电子引起,会导致阈值电压分布右移。由于较高的编程电压更容易使浮栅极吸引额外的电子,对阈值电压较高的单元进行编程会对相邻单元造成更大的编程干扰。保留错误主要是由存储单元中的电子泄露引起,会导致阈值电压分布左移,存储单元中的电子数越多越容易引起电子泄露,所以阈值电压较高的状态更容易发生保留错误。此外,由于这两种错误会使阈值电压向相反的方向移动,它们产生的影响会部分抵消。

如图1所示,在mlc(multi-level-cell)nand闪存中,一个存储单元可以存储2位数据,根据存储单元阈值电压的大小,可以把存储单元分为“11”、“10”、“00”和“01”四个状态。每个状态的两个位属于不同的两个页,左边的称为lsb(leastsignificantbit,最低有效位),属于低页(lsb页);右边的称为msb(mostsignificantbit,最高有效位),属于高页(msb页)。根据对nandflash中编程干扰和保留错误来源的分析,如果减少处于较高阈值电压状态的存储单元数量,将能够有效抑制存储单元中的电子注入和泄露现象,从而减小编程干扰和保留错误。特别地,对于mlcnandflash而言,擦除状态“11”在四个状态中的阈值电压最低,因此,增加处于“11”状态的存储单元数量可以更有效地减少这两种错误。

为了保证nand闪存的可靠性,从不依赖纠错码的角度,可以依靠nand闪存自身错误特征进行错误率抑制,从而降低闪存中数据的原始误码率。现有技术中,guoj等人提出dpa(datapatternaware)方案,对预处理数据使用去相关和加扰技术最终提高了原始数据中“1”的比例。然而待处理数据的前后相关性较弱时,dpa会带来额外的功耗与数据吞吐延时。doim等人采用的非对称编码(asymmetriccoding,ac)方案从待编程数据流中截取一段进行“0”、“1”比例的判断,如果“0”的比例高于“1”的比例则将数据进行比特翻转,并将翻转标志位“1”附加于数据段之后进行存储,反之不进行翻转并存储标志位“0”。ac方案可以有效降低原始误码率,然而,翻转标志位的引入会带来较大的空间开销,还会造成数据宽度与页宽度不对齐,可能加剧闪存的写放大。weid等人提出一种半字节重映射(nibbleremappingcoding,nrc)的方法来增加原始数据流中“1”的比例,首先对半字节进行频率统计,然后按频率高低依次映射,从而使更多的存储单元处于最低阈值电压的“11”状态来减少编程干扰错误和保留错误。然而,对数据流进行半字节频率统计会带来较大的开销,对存储映射表的访问也会带来额外的延迟。

上述方法通过编码写入更多的“1”来增加“11”状态的比例,从而减少编程干扰和保留错误。但这些方法均是直接增加原始数据中“1”的比例,从而增加不会导致编程干扰且保留错误最小的“11”状态的比例,然而,闪存中另外三个状态(“10”、“00”、“01”)对误码率的影响也是不可忽略的。此外,他们并未考虑到编程干扰与保留错误之间的抵消作用。



技术实现要素:

针对现有技术的缺陷,本发明的目的在于解决现有技术错误抑制方法误码率高导致的nand闪存可靠性低的技术问题。

为实现上述目的,第一方面,本发明实施例提供了一种通过数据模式重布局降低mlcnand闪存误码率的方法,该方法包括以下步骤:

s1.获得原始数据的“1”比例和冷热程度;

s2.根据原始数据的“1”比例和冷热程度,对将写入mlcnand闪存lsb页或msb页的原始数据进行翻转,实现对数据模式的重新布局。

具体地,所述原始数据是将写入mlcnandflash的数据。

具体地,所述步骤s2包括以下步骤:

s201.根据原始数据的“1”比例和冷热程度,对原始数据进行分类,若原始数据的“1”比例<50%且为热数据,进入步骤s202;若原始数据的“1”比例>50%且为热数据,进入步骤s203;若原始数据的“1”比例<50%且为冷数据,进入步骤s204;若原始数据的“1”比例>50%且为冷数据,进入步骤s205;若原始数据的“1”比例=50%,进入步骤s206;

s202.对原始数据进行两次翻转:第一次翻转时,翻转将写入lsb页的数据,第二次翻转时,当lsb为“1”时,翻转将写入msb页的数据;

s203.对原始数据进行一次翻转:当lsb为“0”时,翻转将写入msb页的数据;

s204.对原始数据进行一次翻转:翻转将写入lsb页的数据;

s205.对原始数据进行一次翻转:翻转将写入msb页的数据;

s206.对原始数据不做任何处理。

具体地,原始数据中“1”的比例是在整个原始数据写入之前进行统计获得。

具体地,原始数据的冷热程度是根据擦写周期和保留时间来决定的。

第二方面,本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述第一方面所述的降低mlcnand闪存误码率的方法。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:

本发明充分考虑mlc的每种状态对误码率的影响,根据原始数据中“1”的不同比例以及冷热程度,提出五种不同的数据模式重布局方式,在特定情况下对将写入多层闪存低页或高页的数据进行翻转。由于mlcnandflash中,闪存错误和闪存的状态密切相关,基于各个状态的错误倾向,对数据模式进行重新布局,可以更有效地减少编程干扰和保留错误这两种错误,从而降低闪存中数据的出错概率。

附图说明

图1为现有技术中mlcnandflash存储单元阈值电压分布模型示意图;

图2为本发明实施例提供的一种通过数据模式重布局降低mlcnand闪存误码率的方法流程图;

图3为本发明实施例提供的数据模式重布局方法的系统结构图;

图4为本发明实施例提供的对“1”的比例小于50%的热数据的处理方式h0示意图;

图5为本发明实施例提供的对“1”的比例大于50%的热数据的处理方式h1示意图;

图6为本发明实施例提供的对“1”的比例小于50%的冷数据的处理方式c0示意图;

图7为本发明实施例提供的对“1”的比例大于50%的冷数据的处理方式c1示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

首先,对本发明中用到的一些术语进行解释。

热数据:在闪存生命周期早期擦写比较频繁的数据。

冷数据:在闪存生命周期末期保留时间比较长的数据。

数据模式:四种数据状态(“11”、“10”、“00”和“01”)的比例关系。

一个典型的存储系统中通常包含有操作系统文件、多媒体文件和办公文件等。dll文件是目前常见的windows操作系统(windowsxp~windows10)中占据最大数据量的操作系统文件类型,jpg和mp3文件是最常见的多媒体文件类型,doc、ppt和pdf文件是典型的办公文件,eml文件则是一种邮件文件类型,在日常办公中会经常用到。通过对这7种常见的文件类型进行数据中“1”比例的统计,发现大多数文件中“1”的比例小于50%,特别是,系统文件中“1”的比例很低,占20%~35%左右。基于这一数据特征,本发明提出了一种基于冷热数据错误差异对数据模式进行重布局的策略,通过依靠闪存自身特征进行误码率抑制,从而提高闪存的可靠性。

本发明的发明构思为:利用多层闪存(mlcnandflash)单元的编程干扰错误和数据保留错误的特征以及存储系统中文件数据的特征,根据数据中“1”的不同比例以及数据的不同冷热程度,分别提出五种不同的数据模式重布局方法。具体地,本发明在特定情况下对将写入多层闪存低页或高页的数据进行翻转,实现对数据模式的重新布局,从而通过减少保留错误或编程干扰来降低闪存中数据的出错概率。本发明技术方案属于不依赖纠错编码进行错误抑制类别,可以通过简单硬件逻辑抑制闪存错误,降低原始误码率,提高闪存可靠性。

如图2所示,根据原始数据的冷热程度和原始数据中“1”的比例差异,数据模式重布局分为五种,分别为:对“1”的比例小于50%的热数据的处理方式h0、对“1”的比例大于50%的热数据的处理方式h1、对“1”的比例小于50%的冷数据的处理方式c0、对“1”的比例大于50%的冷数据的处理方式c1、对“1”的比例等于50%的冷数据/热数据的处理方式hc。其中,原始数据是将写入mlcnandflash的数据。原始数据的冷热程度是根据擦写周期和保留时间来决定的,由闪存转换层(flashtranslationlayer,ftl)识别。此外,ftl还决定原始数据被写入lsb页还是msb页。原始数据中“1”的比例是在整个原始数据写入之前进行统计获得。

对“1”的比例小于50%的热数据,处理方式h0为:第一次翻转时,翻转将写入lsb页的数据,即“11”状态与“01”状态互换、“10”状态与“00”状态互换;第二次翻转时,当lsb为“1”时,翻转将写入msb页的数据,即“11”状态与“10”状态互换。

对“1”的比例大于50%的热数据,处理方式h1为:当lsb为“0”时,翻转将写入msb页的数据,即“00”状态与“01”状态互换。

对“1”的比例小于50%的冷数据,处理方式c0为:翻转将写入lsb页的数据,即“11”状态与“01”状态互换、“10”状态与“00”状态互换。

对“1”的比例大于50%的冷数据,处理方式c1为:翻转将写入msb页的数据,即“11”状态与“10”状态互换、“00”状态与“01”状态互换。

对“1”的比例等于50%的冷数据或“1”的比例等于50%的热数据,处理方式hc为:原始数据中“1”的比例等于50%,翻转之后,原始数据的“1”的比例仍然等于50%,为了使得整个方法更快速,对于该情形的原始数据,不做任何处理。

经过上述处理后,对于热数据,各个状态的比例大小为“11>10=00>01”。对于冷数据,各个状态的比例大小为“10>11=00>01”。该大小关系只与数据的冷热程度相关,与原始数据中“1”的比例无关。此外,由于存储系统中绝大多数文件“1”的比例小于50%(其中dll文件中“1”的比例很低),对这部分文件的处理是提高可靠性的关键。

本发明提供一种通过数据模式重布局降低mlcnand闪存误码率的方法,该方法包括以下步骤:

s1.获得原始数据的“1”比例和冷热程度;

s2.根据原始数据的“1”比例和冷热程度,对将写入mlcnand闪存lsb页或msb页的原始数据进行翻转,实现对数据模式的重新布局。

步骤s2.根据原始数据的“1”比例和冷热程度,对将写入mlcnand闪存lsb页或msb页的原始数据进行翻转,实现对数据模式的重新布局,具体包括以下子步骤:

s201.根据原始数据的“1”比例和冷热程度,对原始数据进行分类,若原始数据的“1”比例<50%且为热数据,进入步骤s202;若原始数据的“1”比例>50%且为热数据,进入步骤s203;若原始数据的“1”比例<50%且为冷数据,进入步骤s204;若原始数据的“1”比例>50%且为冷数据,进入步骤s205;若原始数据的“1”比例=50%,进入步骤s206;

s202.对原始数据进行两次翻转:第一次翻转时,翻转将写入lsb页的数据,第二次翻转时,当lsb为“1”时,翻转将写入msb页的数据;

s203.对原始数据进行一次翻转:当lsb为“0”时,翻转将写入msb页的数据;

s204.对原始数据进行一次翻转:翻转将写入lsb页的数据;

s205.对原始数据进行一次翻转:翻转将写入msb页的数据;

s206.对原始数据不做任何处理。

如图3所示,闪存转换层(ftl)负责完成冷热数据感知和高低页分配过程。通过冷热数据感知来判断原始数据属于热数据还是冷数据,高低页分配决定数据写入lsb页还是msb页。数据模式重布局在硬件适配层(hal)中完成,具体地,在数据写入nand闪存阵列前,对将写入lsb页或msb页的数据进行特定的翻转,通过改变数据模式来降低数据出错的概率,从而降低原始误码率。

对于热数据,编程干扰错误占据主导地位,且对阈值电压较高的单元进行编程会对相邻单元造成更大的编程干扰。

如图4所示,原始数据中“1”的比例为40%。原始数据中“11”、“10”、“00”、“01”四种状态分别占16%、24%、36%、24%,比例为4:6:9:6。第一次翻转时,翻转将写入lsb页的数据,即“11”状态与“01”状态互换、“10”状态与“00”状态互换。翻转后“11”、“10”、“00”、“01”四种状态分别占24%、36%、24%、16%,比例为6:9:6:4。经过第一次翻转,阈值电压较高的“01”和“00”状态的比例减小,阈值电压较低的“11”和“10”状态的比例增加,编程干扰和保留错误减小。第二次翻转时,当lsb为“1”时翻转将写入msb页的数据,即“11”状态与“10”状态互换。翻转后“11”、“10”、“00”、“01”四种状态分别占36%、24%、24%、16%,比例为9:6:6:4。经过第二次翻转,阈值电压最低的“11”状态的比例进一步增加,从而进一步减小了编程干扰和保留错误。经过两次翻转,实现了对数据模式的重新布局,在减小容易发生错误的状态的同时,增加不易造成干扰的状态来降低数据出错的概率,从而降低误码率、提高闪存寿命。

如图5所示,原始数据中“1”的比例为60%。原始数据中“11”、“10”、“00”、“01”四种状态分别占36%、24%、16%、24%,比例为9:6:4:6。当lsb为“0”时翻转将写入msb页的数据,即“00”状态与“01”状态互换。翻转后“11”、“10”、“00”、“01”四种状态分别占36%、24%、24%、16%,比例为9:6:6:4。经过翻转,高阈值电压的“01”状态的比例减小,从而减小了保留错误和编程干扰。

对于冷数据,保留错误占主导地位,且阈值电压越高的状态可靠性越低。四种状态中,阈值电压最高的“01”状态最容易发生保留错误。

如图6所示,原始数据中“1”的比例为40%。原始数据中“11”、“10”、“00”、“01”四种状态分别占16%、24%、36%、24%,比例为4:6:9:6。翻转将写入lsb页的数据,即“11”状态与“01”状态互换、“10”状态与“00”状态互换。翻转后“11”、“10”、“00”、“01”四种状态分别占24%、36%、24%、16%,比例为6:9:6:4。经过翻转后,阈值电压较高的“01”和“00”状态的比例减小,占主导地位的保留错误减小。与热数据不同的是,不进行第二次对将写入msb页的数据的翻转(即“11”状态与“10”状态互换),因为编程干扰和保留错误会导致阈值电压朝相反的方向移动,“11”状态的比例较小时编程干扰较大,从而可以利用编程干扰抵消电子泄露造成的保留错误。

如图7所示,原始数据中“1”的比例为60%。原始数据中“11”、“10”、“00”、“01”四种状态分别占36%、24%、16%、24%,比例为9:6:4:6。翻转将写入msb页的数据,即“11”状态与“10”状态互换、“00”状态与“01”状态互换。翻转后“11”、“10”、“00”、“01”四种状态分别占24%、36%、24%、16%,比例为6:9:6:4。经过翻转,高阈值电压的“01”状态比例减小,从而减小了保留错误;而“10”状态的比例增加,编程干扰增大,抵消了更多的保留错误,从而降低了原始误码率。

以上,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。

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