CN107590021B - 一种降低闪存误码率的编、解码器和编、解码方法 - Google Patents
一种降低闪存误码率的编、解码器和编、解码方法 Download PDFInfo
- Publication number
- CN107590021B CN107590021B CN201710725340.4A CN201710725340A CN107590021B CN 107590021 B CN107590021 B CN 107590021B CN 201710725340 A CN201710725340 A CN 201710725340A CN 107590021 B CN107590021 B CN 107590021B
- Authority
- CN
- China
- Prior art keywords
- data
- written
- flash memory
- module
- turning
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开了一种降低闪存误码率的编、解码器和编、解码方法,属于闪存芯片编译技术领域。本发明编码器在写数据时,判断写入热数据中“1”的个数是否超过半数,是则翻转热数据后写入闪存;判断写入冷数据中高页数据中“1”或低页数据中“0”的个数是否超过半数,是则翻转冷数据后写入闪存;本发明解码器在读数据时,分析读数据的翻转状态,若翻转状态中“1”的个数超过半数,则将读数据进过翻转后输出;否则直接输出读数据。本发明还是实现了一种降低闪存误码率的编、解码方法。本发明技术方案降低了闪存中数据的出错概率,降低原始误码率,为现有纠错码方案提供更准确的输入,提高译码成功率,从而进一步提高闪存可靠性。
Description
技术领域
本发明属于闪存芯片编译技术领域,更具体地,涉及一种降低闪存误码率的编、解码器和编、解码方法。
背景技术
NAND闪存是一种非易失性存储介质,具有体积小,存储密度高,耗电量低,读写较快等优点,适合大容量存储,在存储领域具有广泛应用。随着技术的发展,NAND闪存的尺寸越来越小,每个单元存储的数据位也越来越多,这虽然提高了数据的存储密度,但是也使得闪存的可靠性和耐久性越来越低,误码率越来越高。
闪存中的错误类型主要由四种:擦除错误(Erase Error)、编程干扰 (ProgramInterference Error)、读错误(Read Error)和保留错误(Retention Error)。其中擦除错误、编程干扰和读错误分别来自擦除、写和读三种闪存基本操作,保留错误由闪存浮栅层中电子泄漏引起。闪存中数据主要受到编程干扰和保留错误影响。数据刚写入闪存中时,主要受编程干扰影响,随着数据在闪存中保留时间的增加,受到保留错误的干扰越来越严重。在一段时间后,保留错误的影响超过编程干扰,成为闪存中数据错误的主要来源。所以对于更新热度高的热数据,主要受到编程干扰影响,对于更新热度低的冷数据,主要受到保留错误影响。
如图1所示,在多层闪存(MLC NAND Flash)中,一个存储单元存储 2bit数据,存储单元浮栅层中电子数目变化会引起阈值电压变化,根据存储单元阈值电压的大小,可以把存储单元分为ER、P1、P2和P3四个状态,分别代表11、10、00和01四种数据。11状态为原始状态,此时存储单元浮栅层中没有电子,随着电子数目增加,阈值电压往后变化。每个状态的两个位属于不同的两个页,前面的位称为低位,属于低页数据,后面的位称为高位,属于高页数据。对于MLC的保留错误,主要由存储单元中的电子泄露引起,存储单元中的电子数越多越容易引起电子泄露,所以P2和P3 状态更容易发生保留错误。对于MLC中的编程干扰,主要由于存储单元中注入了过多的电子引起,存储单元中的电子数越少受到编程干扰的影响越严重,所以ER和P1状态更容易发生编程干扰。
在MLC NAND Flash实测中,保留错误中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”的个数超过半数,则标记该数据经过翻转;否则标记该数据未经过翻转;
S2、将标记经过翻转的数据再次翻转;
S3、对数据进行纠错码译码;若译码成功,则输出数据;若译码失败,则对数据进行翻转后再进行纠错码译码并输出。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下技术特征及有益效果:
(1)本发明技术方案根据闪存错误特特性,结合数据的冷热特征和读写地址,经过简单的数据翻转,有效降低闪存的原始误码率;
(2)本发明技术方案可与已有纠错码方案结合,为已有纠错方案提供更加准确的输入,提高译码成功率,进一步提高闪存可靠性。
附图说明
图1是MLC NAND Flash存储单元阈值电压分布模型示意图;
图2是闪存中错误数据相关性;
图3是本发明编、解码器的一种实施例结构示意图;
图4是本发明中编码结果和翻转状态组成的数据结构示意图;
图5是本发明中数据统计模块的工作原理示意图;
图6是本发明中数据统计用到的8位查找表。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图3所示为本发明的编、解码器的一种实施例;
其中编码器主要包括以下部分:
编码写入模块,用于接受写命令后解析写命令,判断写入数据的物理地址属于高页还是低页,写入数据是冷数据还是热数据;对以下状态的写入数据的编码结果进行翻转:A)写入数据为热数据,且数据中“1”的个数超过半数;B)写入数据为冷数据,写入物理地址属于高页,且数据中“1”的个数超过半数;C)写入数据为冷数据,写入物理地址属于低页,且数据中“1”的个数不超过半数;之后在编码结果后设置一个字节保存翻转状态,若编码结果经过翻转,则该字节设为全1,否则设为全0;最后将编码结果和翻转状态一起写入闪存芯片中;
纠错码编码模块,用于接受写入数据并进行纠错码编码,将编码结果输入至FIFO模块,同时将写入数据输入到数据统计模块;
数据统计模块,用于统计写入数据中“1”的个数,并将统计结果发送至编码写入模块;
写FIFO模块,用于缓存编码结果,并将编码结果发送至编码写入模块。
其中解码器主要包括以下部分:
数据读出模块,用于接受读命令后将数据从闪存芯片中读出来,输出至读FIFO模块,同时解析数据中翻转状态中“1”的个数,若“1”的个数超过半数,则该数据的翻转标记设置为真;否则设置为假;之后将数据的翻转标记发送至翻转还原模块;
读FIFO模块,用于缓存数据,并将数据发送至翻转还原模块;
翻转还原模块,用于解析数据的翻转标记,若翻转标记为真,则将数据再次翻转;否则不翻转;之后将数据发送至纠错码译码模块;
纠错码译码模块,用于对数据进行纠错码译码;若译码成功,则输出数据;若译码失败,则对数据进行翻转后再进行纠错码译码并输出。
如图4所示为编码结果和翻转状态组成的数据结构;为了标记数据是否翻转,在编码结果后面加入翻转状态。为了降低翻转状态受到的干扰影响,翻转状态一共有8位,如果数据经过翻转,翻转状态8位全部置1,没有翻转则8位全部为0。从闪存芯片中读出来后,由于翻转状态可能受到干扰导致数据变化,所以统计翻转状态中1的个数,若翻转状态中1的个数超过阈值,说明数据有很大可能经过翻转,判断原始数据经过翻转。ECC译码模块可对翻转状态进行校验,如果翻转状态受到干扰较大,影响判断结果,使翻转复原模块进行了错误翻转,会导致ECC译码模块的纠错码译码失败。此时可以对翻转复原模块输出的数据进行再一次翻转,恢复被错误翻转的数据,再进行纠错码译码。通过增加翻转状态位数和ECC译码模块校验,可使数据可靠性增加,降低干扰风险。
如图5所示为数据统计模块的工作流程,用来统计数据中1的个数是否超过半数。数据每个周期按32位位宽输入,每个周期数据到来时,分割成4个8位的子数据串,每个8位的子数据串通过8位查找表得到子数据串中1的个数,然后把得到的4个结果进行相加,就得到每个周期的32位数据中1的个数。每个周期的结果累加得到写入数据中1的个数,与总数据长度的半数进行比较,超过半数结果为1,否则结果为0。
如图6所示为数据统计模块用到的8位查找表;8位查找表为一个长度为256的数组,每个8位数据串作为索引,每个索引值1的个数作为数组值。用查表法可快速得到8位数据中1的个数,降低计算延迟。
以上内容本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种降低闪存误码率的编码器,其特征在于,所述编码器用于在写数据时,判断写入热数据中“1”的个数是否超过半数,是则翻转热数据后写入闪存;判断写入冷数据中高页数据中“1”或低页数据中“0”的个数是否超过半数,是则翻转冷数据后写入闪存;
所述编码器包括以下部分:
编码写入模块,用于接受写命令后解析写命令,判断写入数据的物理地址属于高页还是低页,写入数据是冷数据还是热数据;对以下状态的写入数据的编码结果进行翻转:A)写入数据为热数据,且数据中“1”的个数超过半数;B)写入数据为冷数据,写入物理地址属于高页,且数据中“1”的个数超过半数;C)写入数据为冷数据,写入物理地址属于低页,且数据中“1”的个数不超过半数;之后在编码结果后设置一个字节保存翻转状态,若编码结果经过翻转,则该字节设为全1,否则设为全0;最后将编码结果和翻转状态一起写入闪存芯片中;
纠错码编码模块,用于接受写入数据并进行纠错码编码,将编码结果输入至FIFO模块,同时将写入数据输入到数据统计模块;
数据统计模块,用于统计写入数据中“1”的个数,并将统计结果发送至编码写入模块;
写FIFO模块,用于缓存编码结果,并将编码结果发送至编码写入模块。
2.一种降低闪存误码率的解码器,其特征在于,所述解码器用于在读数据时,分析读数据的翻转状态,若翻转状态中“1”的个数超过半数,则将读数据进过翻转后输出;否则直接输出读数据;
所述解码器包括以下部分:
数据读出模块,用于接受读命令后将数据从闪存芯片中读出来,输出至读FIFO模块,同时解析数据中翻转状态中“1”的个数,若“1”的个数超过半数,则该数据的翻转标记设置为真;否则设置为假;之后将数据的翻转标记发送至翻转还原模块;
读FIFO模块,用于缓存数据,并将数据发送至翻转还原模块;
翻转还原模块,用于解析数据的翻转标记,若翻转标记为真,则将数据再次翻转;否则不翻转;之后将数据发送至纠错码译码模块;
纠错码译码模块,用于对数据进行纠错码译码;若译码成功,则输出数据;若译码失败,则对数据进行翻转后再进行纠错码译码并输出。
3.一种降低闪存误码率的编码方法,其特征在于,所述方法在写数据时,判断写入热数据中“1”的个数是否超过半数,是则翻转热数据后写入闪存;判断写入冷数据中高页数据中“1”或低页数据中“0”的个数是否超过半数,是则翻转冷数据后写入闪存;
所述方法具体包括以下步骤:
(1)接受写命令后解析写命令,判断写入数据的物理地址属于高页还是低页,写入数据是冷数据还是热数据;
(2)对写入数据进行纠错码编码,得到编码结果;
(3)统计写入数据中“1”的个数,对以下状态的写入数据的编码结果进行翻转:A)写入数据为热数据,且数据中“1”的个数超过半数;B)写入数据为冷数据,写入物理地址属于高页,且数据中“1”的个数超过半数;C)写入数据为冷数据,写入物理地址属于低页,且数据中“1”的个数不超过半数;
(4)在编码结果后设置一个字节保存翻转状态,若编码结果经过翻转,则该字节设为全1,否则设为全0;
(5)将编码结果和翻转状态一起写入闪存芯片中。
4.一种降低闪存误码率的解码方法,其特征在于,所述方法于在读数据时,分析读数据的翻转状态,若翻转状态中“1”的个数超过半数,则将读数据进过翻转后输出;否则直接输出读数据;
所述方法具体包括以下步骤:
S1、接受读命令后将数据从闪存芯片中读出来,之后解析数据中翻转状态中“1”的个数;若“1”的个数超过半数,则标记该数据经过翻转;否则标记该数据未经过翻转;
S2、将标记经过翻转的数据再次翻转;
S3、对数据进行纠错码译码;若译码成功,则输出数据;若译码失败,则对数据进行翻转后再进行纠错码译码并输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710725340.4A CN107590021B (zh) | 2017-08-22 | 2017-08-22 | 一种降低闪存误码率的编、解码器和编、解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710725340.4A CN107590021B (zh) | 2017-08-22 | 2017-08-22 | 一种降低闪存误码率的编、解码器和编、解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107590021A CN107590021A (zh) | 2018-01-16 |
CN107590021B true CN107590021B (zh) | 2020-01-03 |
Family
ID=61042469
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710725340.4A Active CN107590021B (zh) | 2017-08-22 | 2017-08-22 | 一种降低闪存误码率的编、解码器和编、解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107590021B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10916324B2 (en) * | 2018-09-11 | 2021-02-09 | Micron Technology, Inc. | Data state synchronization involving memory cells having an inverted data state written thereto |
WO2020082348A1 (en) * | 2018-10-26 | 2020-04-30 | Yangtze Memory Technologies Co., Ltd. | Data processing method for memory and related data processor |
CN109660263B (zh) * | 2018-11-22 | 2022-07-05 | 华中科技大学 | 一种适用于mlc nand闪存的ldpc码译码方法 |
CN109656748B (zh) * | 2018-12-10 | 2020-05-19 | 华中科技大学 | 一种通过数据模式重布局降低mlc nand闪存误码率的方法 |
CN109669641B (zh) * | 2018-12-24 | 2022-03-29 | 深圳忆联信息系统有限公司 | 降低ssd误码率的数据存放方法及装置 |
CN111813591B (zh) * | 2020-07-03 | 2023-12-29 | 深圳市国微电子有限公司 | Nand Flash的数据纠错方法、装置、电子设备及存储介质 |
CN112181710B (zh) * | 2020-09-11 | 2022-03-29 | 厦门大学 | 一种基于比特翻转的固态盘数据存储方法和装置 |
CN113241112B (zh) * | 2021-03-25 | 2023-11-21 | 成都佰维存储科技有限公司 | 坏块筛选方法、装置、计算机可读存储介质及电子设备 |
CN113342569B (zh) * | 2021-06-17 | 2022-02-11 | 哈尔滨工业大学 | 一种用于闪存胞元不可靠状态消除的等长编解码方法 |
CN114995767B (zh) * | 2022-06-22 | 2022-12-06 | 北京得瑞领新科技有限公司 | 固态硬盘的数据管理方法、存储设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902628B (zh) * | 2012-09-18 | 2016-06-01 | 记忆科技(深圳)有限公司 | 一种基于闪存实现的冷热数据自动分离方法、系统及闪存 |
CN103942115B (zh) * | 2014-04-22 | 2016-09-14 | 湖南大学 | 一种nand闪存系统的数据存储容错编码方法 |
CN104467871B (zh) * | 2014-11-17 | 2018-03-27 | 哈尔滨工业大学 | 提高NAND Flash存储可靠性的数据存储方法 |
CN105677242B (zh) * | 2015-12-31 | 2018-11-30 | 杭州华为数字技术有限公司 | 冷热数据的分离方法和装置 |
-
2017
- 2017-08-22 CN CN201710725340.4A patent/CN107590021B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107590021A (zh) | 2018-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107590021B (zh) | 一种降低闪存误码率的编、解码器和编、解码方法 | |
US8510637B2 (en) | Data reading method, memory storage apparatus and memory controller thereof | |
US10089174B2 (en) | Flash memory controller and memory device for accessing flash memory module, and associated method | |
US10521292B2 (en) | Error correction code unit, self-test method and associated controller applied to flash memory device for generating soft information | |
US8782329B2 (en) | Method for performing data shaping, and associated memory device and controller thereof | |
CN101079322B (zh) | 多位存储装置和存储系统 | |
US7979737B2 (en) | Method for accessing a Flash memory, and associated memory device and controller thereof | |
US8578245B2 (en) | Data reading method, memory storage apparatus, and controller thereof | |
TWI582779B (zh) | 讀取電壓準位估測方法、記憶體儲存裝置及記憶體控制電路單元 | |
KR102252379B1 (ko) | 메모리 시스템 및 이의 독출 방법 | |
US8972653B2 (en) | Memory management method, and memory controller and memory storage apparatus using the same | |
CN103365739B (zh) | 一种nand闪存存储设备及其数据恢复方法 | |
CN102543196B (zh) | 数据读取方法、存储器储存装置及其控制器 | |
TW201642266A (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
US8830750B1 (en) | Data reading method, and control circuit, memory module and memory storage apparatus using the same | |
CN112181710B (zh) | 一种基于比特翻转的固态盘数据存储方法和装置 | |
CN114765047A (zh) | 非易失性存储器装置中的软读取阈值估计的高斯建模 | |
US11461158B2 (en) | Granular error reporting on multi-pass programming of non-volatile memory | |
CN108154900A (zh) | 一种缓解mlc闪存写干扰问题的方法 | |
CN104681095B (zh) | 储存装置及其操作方法 | |
TWI751620B (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN107391299A (zh) | 一种提升闪存存储系统读性能的方法 | |
CN111863080A (zh) | 一种基于层间差异的3d闪存读性能优化方法 | |
US10360973B2 (en) | Data mapping enabling fast read multi-level 3D NAND to improve lifetime capacity | |
CN113342569B (zh) | 一种用于闪存胞元不可靠状态消除的等长编解码方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |