一种NAND的数据编码方法和装置
技术领域
本发明实施例涉及存储设备编码应用技术,尤其涉及一种NAND的数据编码方法和装置。
背景技术
NAND闪存是一种比硬盘驱动器更好的存储设备,NAND闪存通常包括多个存储块,每个存储块又包括多个存储页(Nand Page),由NAND管理系统进行读写等操作的管理。
在NAND管理系统中常常会在存储页上存放管理系统所需要的内部配置信息,而剩余部分用来存放用户数据。配置信息的数据量很小,一般在32Byte及以下。配置信息经常会被NAND管理系统读取,需要其相对于用户数据更快速的被读写,但是现有技术中,对配置信息的编码方式无法满足这一要求。
发明内容
本发明实施例提供一种NAND的数据编码方法和装置,以提高存储页中配置信息的读写效率。
第一方面,本发明实施例提供了一种NAND的数据编码方法,该方法包括:
采用第一编码方式对存储页中的配置信息进行编码,产生所述配置信息的编码组和对应的错误检查和纠正码,所述第一编码方式为汉明码方式;
采用第二编码方式对所述存储页中的用户数据进行编码,产生所述用户数据的编码组和对应的错误检查和纠正码,所述第二编码方式为BCH方式或低密度奇偶校验码(LowDensity Parity Check Code,LDPC)方式;
将所述配置信息的编码组和对应的错误检查和纠正码,以及所述用户数据的编码组和对应的错误检查和纠正码,组合形成所述存储页的编码。
进一步地,对存储页中的配置信息进行分组之前,还包括:
对所述配置信息进行比特交织处理。
第二方面,本发明实施例还提供了一种NAND的数据编码装置,该装置包括:
第一编码模块,用于采用第一编码方式对存储页中的配置信息进行编码,产生所述配置信息的编码组和对应的错误检查和纠正码,所述第一编码方式为汉明码方式;
第二编码模块,用于采用第二编码方式对所述存储页中的用户数据进行编码,产生所述用户数据的编码组和对应的错误检查和纠正码,所述第二编码方式为BCH方式或LDPC方式;
编码组合模块,用于将所述配置信息的编码组和对应的错误检查和纠正码,以及所述用户数据的编码组和对应的错误检查和纠正码,组合形成所述存储页的编码。
进一步地,还包括:信息预处理模块,用于对采用第一编码方式对存储页中的配置信息进行编码之前,对所述配置信息进行比特交织处理。
本发明实施例提供了一种NAND的数据编码方法和装置。该方法首先对配置信息采用汉明编码方式进行编码,产生配置信息的编码组和对应的错误检查和纠正码;之后对存储页中的用户数据采用BCH方式或LDPC方式编码,获得各用户数据的编码组和对应的错误检查和纠正码;最终将配置信息以及用户数据分别对应的编码组及错误检查和纠正码进行组合形成存储页的编码。利用该方法,能够对NAND闪存中存储页的配置信息简单高效地采用汉明码方式进行编码,由此不仅提高了存储页中配置信息的读写效率,还降低了数据信息在存储页中的空间占用,同时也大大提高了NAND管理系统的管理性能。
附图说明
图1a是本发明实施例一提供的一种NAND的数据编码方法的流程示意图;
图1b是基于本发明实施例一提供的数据编码方法进行编码的效果图;
图2是本发明实施例二提供的一种NAND的数据编码装置的结构框图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1a是本发明实施例一提供的一种NAND的数据编码方法的流程示意图。该方法适用于对NAND闪存中的数据信息进行编码的情况,该方法可以由NAND的数据编码装置执行,其中该装置可由软件和/或硬件实现,并一般集成在NAND闪存中。
在本实施例中,存储页具体可理解为构成NAND闪存中存储单元阵列的存储单元页,可以由多个存储单元组成。需要说明的是,存储页中可以存放各种数据信息,且可以通过对数据信息进行编码来实现数据信息到存储页的存放,然而在对数据信息编码的过程中,还需要占用存储页中额外的空间来存放一些用于验证数据信息编码正确性的数据,因此,数据信息存储实际占用的空间往往大于数据信息自身的大小。
一般地,现有技术中通常采用汉明码方式、BCH方式或LDPC方式中的一种对存储页中的数据信息进行编码。在实际应用中,汉明码方式基于软和/或硬件的算法实现及逻辑运算相对简单,而BCH方式以及LDPC方式的算法实现及逻辑运算较为复杂,由此可确定汉明码方式的编码速度快于BCH方式以及LDPC方式,所以通常使用更为简单有效的汉明码作为存储页数据信息的编码方式。
然而,对于具有同等纠错能力的汉明码方式、BCH方式以及LDPC方式而言,还具有下述特点,即,当数据信息的数据量为小数据量(一般将小于32Byte的数据量看作小数据量)时,基于汉明码方式进行编码所占用的存储空间相比于基于BCH方式或LDPC方式时较小;而当数据信息的数据量较大(大于32Byte的数据量)时,基于汉明码方式进行编码占用的存储空间大于基于BCH方式或LDPC方式占用的空间。其中,所述纠错能力具体可理解为基于编码方式对一定数据量的数据信息进行纠错时,可进行纠错的最大数据量,一般可用比特来表示其纠错能力。示例性地,如8比特(bit)纠错能力相当于对一定数据量的数据信息进行纠错时,最大可纠错的数据量为8比特。下表给出了基于同等纠错能力的汉明码方式以及BCH方式对数据进行编码时所占用存储空间的比对。
一般地,在对存储页中的数据进行读取时,更方便对存储空间占用少的数据信息进行读取。在本实施例中,存放于存储页中的数据信息可以包括NAND闪存使用者待存储的用户数据,以及NAND管理系统对待存储的用户数据进行管理时所需要的配置信息,其中,NAND管理系统具体可用于管理NAND闪存中各存储页的读写操作。在实际应用中,NAND管理系统进行管理操作时需要多次对存储页中的配置信息进行读取,为了提高存储页中数据信息的读取效率,可采用本发明实施例提供的编码方法对数据信息进行编码。
如图1a所示,本发明实施例一提供的一种NAND的数据编码方法,具体包括如下操作:
S101、采用第一编码方式对存储页中的配置信息进行编码,产生配置信息的编码组和对应的错误检查和纠正码,第一编码方式为汉明码方式。
需要说明的是,配置信息的数据量小(一般小于32Byte),但是由于NAND管理系统进行管理操作时每次都需要先读取配置信息,因此对配置信息正确率的要求很高。本实施例采用运行逻辑简单的汉明码方式进行编码,可以减少配置信息存储时的空间占用,同时可以保证配置信息被准确读取,进而保证对用户数据的读写操作可正常进行。
具体地,汉明码的编码方式,若要保证较高的纠错率,基于其编码特点,在对配置信息进行编码之前,可以先对配置信息进行分组。具体地,对存储页中的配置信息进行分组的过程可表述为:确定配置信息实际编码的数据量,并通过汉明码对应的多项式算法确定配置信息的具体分组个数,需要说明的是,在汉明码算法运行之前无法预先确定是否对配置信息分组以及具体地分组个数,本实施例对配置信息的具体分组由汉明码算法自身决定。此外,还可以确定对配置信息的分组与当前汉明码方式所具有的纠错能力有关,示例性地,假设当前汉明码方式所具有的纠错能力为8比特,则可将所述配置信息根据实际编码数据量的多少分为8组。基于上述操作,可以保证每个分组的配置信息具有较少的数据量,由此基于少量的汉明码就可以保证较高的纠错率。
S102、采用第二编码方式对所述存储页中的用户数据进行编码,产生用户数据的编码组和对应的错误检查和纠正码,第二编码方式为BCH方式或LDPC方式。
用户数据的数据量通常很大,但是其对纠错率的要求偏低,即如果部分用户数据出错,则只有该部分无法正常获取,并不影响其他用户数据和配置信息的操作。所以,对用户数据采用与汉明码编码特点不同的BCH方式或LDPC方式,其纠错码的占用较少,相应纠错率也略低,更为适合用户数据的特点。
需要说明的是,在基于BCH方式或LDPC方式对用户数据进行编码时,也会根据BCH方式或LDPC方式的编码特点将用户数据划分成多组进行编码操作,同时,还会根据BCH方式自身的算法或LDPC方式自身的算法决定是否对用户数据进行分组。由此可认为,编码过程中对用户数据的分组划分是非必需的,只要保证正常对用户数据进行编解码即可。
S103、将配置信息的编码组和对应的错误检查和纠正码,以及用户数据的编码组和对应的错误检查和纠正码,组合形成所述存储页的编码。
在本实施例中,在基于不同的编码方式分别对配置信息及用户数据进行编码后,可以将分别产生的编码组以及对应的错误检查和纠正码进行组合,形成存储页对应的编码。
图1b给出了基于本发明实施例一提供的编码方法进行编码后的效果图,可以看出,在对存储页中的配置信息及用户数据进行编码后,存储页中对配置信息以及用户数据进行存储的情况可以是:包含多组采用汉明码方式编码的配置信息的编码组11及相应的错误检查和纠正码(ECC)12,还包含了多个采用BCH或LDPC方式编码的用户数据的编码组13及相应的错误检查和纠正码(ECC)14。对存储页中的数据信息基于上述方法进行编码,不仅可以有效节省存储空间的占用,还可以有效提高对数据的编码速率,同时也提升数据的读取效率。
本发明实施例提供了一种NAND的数据编码方法和装置。该方法首先对配置信息采用汉明编码方式进行编码,产生配置信息的编码组和对应的错误检查和纠正码;之后对存储页中的用户数据采用BCH方式或LDPC方式编码,获得各用户数据的编码组和对应的错误检查和纠正码;最终将配置信息以及用户数据分别对应的编码组及错误检查和纠正码进行组合形成存储页的编码。利用该方法,能够对NAND闪存中存储页的配置信息简单高效地采用汉明码方式进行编码,由此不仅提高了存储页中配置信息的读写效率,还降低了数据信息在存储页中的空间占用,同时也大大提高了NAND管理系统的管理性能。
在上述实施例的基础上,本实施例所提的方法在采用第一编码方式对存储页中的配置信息进行编码之前,还优化增加了:对所述配置信息进行比特交织处理。
在本实施例中,需要注意的是,由于汉明码采用的是分组编码,如果汉明码对应的纠错能力为N(N为大于0的整数)比特纠错能力,那么基于汉明码的编码特点,对于各分组配置信息而言,只能对各分组配置信息中1/N比特的数据进行错误纠正,当各分组的配置信息中的错误数据大于1/N比特时,将无法正常进行错误纠正。
针对上述问题,本实施例采用比特交织处理的方式对配置信息中各比特位重新排列,以使配置信息中出现差错的比特数据随机化,降低不能正常进行错误纠正的出现概率。
实施例二
图2是本发明实施例二提供的一种NAND的数据编码装置的结构框图。该装置适用于对NAND闪存中的信息数据进行编码的情况,其中该装置可由软件和/或硬件实现,并一般集成在NAND闪存中。如图2所示,该装置包括:第一编码模块21、第二编码模块22以及编码组合模块23。
其中,第一编码模块21,用于采用第一编码方式对存储页中的配置信息进行编码,产生所述配置信息的编码组和对应的错误检查和纠正码,所述第一编码方式为汉明码方式;
第二编码模块22,用于采用第二编码方式对所述存储页中的用户数据进行编码,产生所述用户数据的编码组和对应的错误检查和纠正码,所述第二编码方式为BCH方式或低密度奇偶校验码LDPC方式;
编码组合模块23,用于将所述配置信息的编码组和对应的错误检查和纠正码,以及所述用户数据的编码组和对应的错误检查和纠正码,组合形成所述存储页的编码。
在本实施例中,该装置首先通过第一编码模块21采用汉明码方式对存储页中的配置信息进行编码,产生配置信息的编码组和对应的错误检查和纠正码;然后通过第二编码模块22采用BCH方式或LDPC方式对所述存储页中的用户数据进行编码,由此产生用户数据的编码组和对应的错误检查和纠正码;最终通过编码组合模块24将配置信息的编码组和对应的错误检查和纠正码,以及用户数据的编码组和对应的错误检查和纠正码,组合形成所述存储页的编码。
本发明实施例二提供了一种NAND的数据编码装置,利用该装置,能够对NAND闪存中存储页的配置信息简单高效地采用汉明码方式进行编码,由此不仅提高了存储页中配置信息的读写效率,还降低了信息数据在存储页中的空间占用,同时也大大提高了NAND管理系统的管理性能。
进一步地,该装置还包括了:
信息预处理模块25,用于对采用第一编码方式对存储页中的配置信息进行编码之前,对所述配置信息进行比特交织处理。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。