一种降低闪存误码率的编、解码器和编、解码方法技术

技术编号:17047530 阅读:25 留言:0更新日期:2018-01-17 17:39
本发明专利技术公开了一种降低闪存误码率的编、解码器和编、解码方法,属于闪存芯片编译技术领域。本发明专利技术编码器在写数据时,判断写入热数据中“1”的个数是否超过半数,是则翻转热数据后写入闪存;判断写入冷数据中高页数据中“1”或低页数据中“0”的个数是否超过半数,是则翻转冷数据后写入闪存;本发明专利技术解码器在读数据时,分析读数据的翻转状态,若翻转状态中“1”的个数超过半数,则将读数据进过翻转后输出;否则直接输出读数据。本发明专利技术还是实现了一种降低闪存误码率的编、解码方法。本发明专利技术技术方案降低了闪存中数据的出错概率,降低原始误码率,为现有纠错码方案提供更准确的输入,提高译码成功率,从而进一步提高闪存可靠性。

A coding, decoder, coding and decoding method for reducing the error rate of flash memory

The invention discloses a coding, decoder, coding and decoding method for reducing the bit error rate of flash memory, which belongs to the technology field of flash memory chip compilation. The present invention encoder in writing data, write data in \hot judgment number 1\ is more than half of the turnover of the hot data is written into the flash memory; write data in high cold judgment page data \1\ or \page of data in a low number 0\ is more than half, is turning cold number it is written into the flash memory; the decoder of the invention in the read data, read data analysis of the rollover state, if the state of \flip number 1\ more than half, will read the data in turn output; otherwise directly read data output. The invention also realizes a coding and decoding method for reducing the bit error rate of flash memory. The technical scheme of the invention reduces the probability of data error in flash memory, reduces the original bit error rate, provides more accurate input for the existing error correcting code scheme, improves the success rate of decoding, and further improves the reliability of flash memory.

【技术实现步骤摘要】
一种降低闪存误码率的编、解码器和编、解码方法
本专利技术属于闪存芯片编译
,更具体地,涉及一种降低闪存误码率的编、解码器和编、解码方法。
技术介绍
NAND闪存是一种非易失性存储介质,具有体积小,存储密度高,耗电量低,读写较快等优点,适合大容量存储,在存储领域具有广泛应用。随着技术的发展,NAND闪存的尺寸越来越小,每个单元存储的数据位也越来越多,这虽然提高了数据的存储密度,但是也使得闪存的可靠性和耐久性越来越低,误码率越来越高。闪存中的错误类型主要由四种:擦除错误(EraseError)、编程干扰(ProgramInterferenceError)、读错误(ReadError)和保留错误(RetentionError)。其中擦除错误、编程干扰和读错误分别来自擦除、写和读三种闪存基本操作,保留错误由闪存浮栅层中电子泄漏引起。闪存中数据主要受到编程干扰和保留错误影响。数据刚写入闪存中时,主要受编程干扰影响,随着数据在闪存中保留时间的增加,受到保留错误的干扰越来越严重。在一段时间后,保留错误的影响超过编程干扰,成为闪存中数据错误的主要来源。所以对于更新热度高的热数据,主要受到编程干扰影响,对于更新热度低的冷数据,主要受到保留错误影响。如图1所示,在多层闪存(MLCNANDFlash)中,一个存储单元存储2bit数据,存储单元浮栅层中电子数目变化会引起阈值电压变化,根据存储单元阈值电压的大小,可以把存储单元分为ER、P1、P2和P3四个状态,分别代表11、10、00和01四种数据。11状态为原始状态,此时存储单元浮栅层中没有电子,随着电子数目增加,阈值电压往后变化。每个状态的两个位属于不同的两个页,前面的位称为低位,属于低页数据,后面的位称为高位,属于高页数据。对于MLC的保留错误,主要由存储单元中的电子泄露引起,存储单元中的电子数越多越容易引起电子泄露,所以P2和P3状态更容易发生保留错误。对于MLC中的编程干扰,主要由于存储单元中注入了过多的电子引起,存储单元中的电子数越少受到编程干扰的影响越严重,所以ER和P1状态更容易发生编程干扰。在MLCNANDFlash实测中,保留错误中P3→P2和P2→P1占主要比例,分别是46%和44%;编程干扰中ER→P1和P1→P2占主要比例,分别是70%和24%。对于保留错误,01→00和00→10占主要部分,其中01→00发生高位错误,错误状态高位为1;00→10发生低位错误,错误状态低位为0。所以闪存单元中高位为1或低位为0的状态更容易受到保留错误影响。对于编程干扰,11→10和10→00占主要部分,其中11→10发生高位错误,错误状态高位为1;10→00发生低位错误,错误状态低位为1。所以闪存单元中高位为1或低位为1的状态更容易受到编程干扰影响。归纳可知,对于更新热度较高的热数据,主要受到编程干扰影响,高页数据或低页数据为1出错概率较高;对于更新热度较低的冷数据,主要受到保留错误影响,高页数据为1或低页数据为0的出错概率较高,如图2所示。现有技术提高闪存可靠性的方案主要是用纠错码,比如采用LDPC码或BCH码对闪存中的出错数据进行纠错,但是不能降低闪存中数据的出错概率,不能降低原始误码率。
技术实现思路
针对现有技术的以上缺陷或改进需求,本专利技术提供了一种降低闪存误码率的编码方法,其目的在于当数据写入闪存之前,根据写入数据的特性和物理地址,对数据进行翻转,对于更新热度较高的热数据,翻转后数据中1的个数较少;对于更新热度低的冷数据,翻转后高页数据中1的个数较少,或低页数据中的0个数较少,由此降低闪存中数据的出错概率,降低原始误码率,为现有纠错码方案提供更准确的输入,提高译码成功率,从而进一步提高闪存可靠性。为实现上述目的,按照本专利技术的一个方面,提供了一种降低闪存误码率的编码器,其特征在于:所述编码器用于在写数据时,判断写入热数据中“1”的个数是否超过半数,是则翻转热数据后写入闪存;判断写入冷数据中高页数据中“1”或低页数据中“0”的个数是否超过半数,是则翻转冷数据后写入闪存。进一步地,所述编码器包括以下部分:编码写入模块,用于接受写命令后解析写命令,判断写入数据的物理地址属于高页还是低页,写入数据是冷数据还是热数据;对以下状态的写入数据的编码结果进行翻转:A)写入数据为热数据,且数据中“1”的个数超过半数;B)写入数据为冷数据,写入物理地址属于高页,且数据中“1”的个数超过半数;C)写入数据为冷数据,写入物理地址属于低页,且数据中“1”的个数不超过半数;之后在编码结果后设置一个字节保存翻转状态,若编码结果经过翻转,则该字节设为全1,否则设为全0;最后将编码结果和翻转状态一起写入闪存芯片中;纠错码编码模块,用于接受写入数据并进行纠错码编码,将编码结果输入至FIFO模块,同时将写入数据输入到数据统计模块;数据统计模块,用于统计写入数据中“1”的个数,并将统计结果发送至编码写入模块;本专利技术还提供了一种降低闪存误码率的解码器,其特征在于:所述解码器用于在读数据时,分析读数据的翻转状态,若翻转状态中“1”的个数超过半数,则将读数据进过翻转后输出;否则直接输出读数据。进一步地,所述解码器包括以下部分:数据读出模块,用于接受读命令后将数据从闪存芯片中读出来,输出至读FIFO模块,同时解析数据中翻转状态中“1”的个数,若“1”的个数超过半数,则该数据的翻转标记设置为真;否则设置为假;之后将数据的翻转标记发送至翻转还原模块;读FIFO模块,用于缓存数据,并将数据发送至翻转还原模块;翻转还原模块,用于解析数据的翻转标记,若翻转标记为真,则将数据再次翻转;否则不翻转;之后将数据发送至纠错码译码模块;纠错码译码模块,用于对数据进行纠错码译码;若译码成功,则输出数据;若译码失败,则对数据进行翻转后再进行纠错码译码并输出。按照本专利技术的另一方面,提供了一种降低闪存误码率的编码方法,其特征在于:所述方法在写数据时,判断写入热数据中“1”的个数是否超过半数,是则翻转热数据后写入闪存;判断写入冷数据中高页数据中“1”或低页数据中“0”的个数是否超过半数,是则翻转冷数据后写入闪存。进一步地,所述方法具体包括以下步骤:(1)接受写命令后解析写命令,判断写入数据的物理地址属于高页还是低页,写入数据是冷数据还是热数据;(2)对写入数据进行纠错码编码,得到编码结果;(3)统计写入数据中“1”的个数,对以下状态的写入数据的编码结果进行翻转:A)写入数据为热数据,且数据中“1”的个数超过半数;B)写入数据为冷数据,写入物理地址属于高页,且数据中“1”的个数超过半数;C)写入数据为冷数据,写入物理地址属于低页,且数据中“1”的个数不超过半数;(4)在编码结果后设置一个字节保存翻转状态,若编码结果经过翻转,则该字节设为全1,否则设为全0;(5)将编码结果和翻转状态一起写入闪存芯片中。按照本专利技术的另一方面,还提供了一种降低闪存误码率的解码方法,其特征在于:所述方法于在读数据时,分析读数据的翻转状态,若翻转状态中“1”的个数超过半数,则将读数据进过翻转后输出;否则直接输出读数据。进一步地,所述方法具体包括以下步骤:S1、接受读命令后将数据从闪存芯片中读出来,之后解析数据中翻转状态中“1”的个数;若“1”的个数超本文档来自技高网
...
一种降低闪存误码率的编、解码器和编、解码方法

【技术保护点】
一种降低闪存误码率的编码器,其特征在于,所述编码器用于在写数据时,判断写入热数据中“1”的个数是否超过半数,是则翻转热数据后写入闪存;判断写入冷数据中高页数据中“1”或低页数据中“0”的个数是否超过半数,是则翻转冷数据后写入闪存。

【技术特征摘要】
1.一种降低闪存误码率的编码器,其特征在于,所述编码器用于在写数据时,判断写入热数据中“1”的个数是否超过半数,是则翻转热数据后写入闪存;判断写入冷数据中高页数据中“1”或低页数据中“0”的个数是否超过半数,是则翻转冷数据后写入闪存。2.根据权利要求1所述的编码器,其特征在于,所述编码器包括以下部分:编码写入模块,用于接受写命令后解析写命令,判断写入数据的物理地址属于高页还是低页,写入数据是冷数据还是热数据;对以下状态的写入数据的编码结果进行翻转:A)写入数据为热数据,且数据中“1”的个数超过半数;B)写入数据为冷数据,写入物理地址属于高页,且数据中“1”的个数超过半数;C)写入数据为冷数据,写入物理地址属于低页,且数据中“1”的个数不超过半数;之后在编码结果后设置一个字节保存翻转状态,若编码结果经过翻转,则该字节设为全1,否则设为全0;最后将编码结果和翻转状态一起写入闪存芯片中;纠错码编码模块,用于接受写入数据并进行纠错码编码,将编码结果输入至FIFO模块,同时将写入数据输入到数据统计模块;数据统计模块,用于统计写入数据中“1”的个数,并将统计结果发送至编码写入模块;写FIFO模块,用于缓存编码结果,并将编码结果发送至编码写入模块。3.一种降低闪存误码率的解码器,其特征在于,所述解码器用于在读数据时,分析读数据的翻转状态,若翻转状态中“1”的个数超过半数,则将读数据进过翻转后输出;否则直接输出读数据。4.根据权利要求3所述的解码器,其特征在于,所述编码器包括以下部分:数据读出模块,用于接受读命令后将数据从闪存芯片中读出来,输出至读FIFO模块,同时解析数据中翻转状态中“1”的个数,若“1”的个数超过半数,则该数据的翻转标记设置为真;否则设置为假;之后将数据的翻转标记发送至翻转还原模块;读FIFO模块,用于缓存数据,并将数据发送至翻转还原模块;翻转还原模块,用于解析数据的翻转标记...

【专利技术属性】
技术研发人员:冯丹童薇刘景宁纪少彬刘传奇张扬
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1