CN101996685A - 存储器管理数据的差错控制方法及差错控制器 - Google Patents
存储器管理数据的差错控制方法及差错控制器 Download PDFInfo
- Publication number
- CN101996685A CN101996685A CN2009100562826A CN200910056282A CN101996685A CN 101996685 A CN101996685 A CN 101996685A CN 2009100562826 A CN2009100562826 A CN 2009100562826A CN 200910056282 A CN200910056282 A CN 200910056282A CN 101996685 A CN101996685 A CN 101996685A
- Authority
- CN
- China
- Prior art keywords
- data
- error
- length
- packet length
- data packet
- 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.)
- Granted
Links
Images
Landscapes
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
本发明揭示了一种存储器管理数据的差错控制方法及差错控制器,其中该差错控制方法将管理数据和与其对应的主数据串接,构成联合数据,并对所述联合数据进行纠错编码或解码。可见,其在实现主数据差错控制的同时,完成对管理数据的差错控制。如此,在硬件实现上仅需实现一种ECC算法,这样不仅节省了差错控制的硬件开销,而且简化了软件设计。
Description
技术领域
本发明涉及存储器领域,特别是涉及一种存储器管理数据的差错控制方法及对应的差错控制器。
背景技术
存储器可分成易失性存储器和非易失性存储器,前者在断电后将丢失数据,而后者在断电后仍可保持数据。快闪存储器(Flash)就是一种重要的非易失性存储器,其读取速度快,成本较低;且与硬盘相比,可经受更强烈的撞击,而更适合在运动条件下使用。为此,Flash广泛应用于移动存储器、数码相机、便携式多媒体播放器、手机、掌上电脑等电子产品中。
NAND Flash和NOR Flash是现在市场上两种主要的快闪存储器。两者相比,NOR Flash随机读取较NAND Flash快,但其容量小、写入速度慢,不适合大容量数据的存储,主要用于程序代码的储存;而NAND Flash则以其大容量、快速的读写、相对较低的价格,适合大容量数据存储的优点在存储卡领域获得了广泛的应用。为此,对NAND技术的研究就显得尤为重要。
NAND Flash的存储空间是按照块(Block)和页(Page)的概念来组织的,具体请参考图1,其为现有NAND Flash的存储空间示意图。如图所示,NANDFlash的存储空间10分为多个块12;每个块12由多个页120组成。在每个页120内,存储空间可分为两个区:主区(Main Area)122和冗余区(Spare Area)124。主区122用来存放程序代码、用户数据等信息,这些信息被称为主数据(MainData)。主数据的差错控制一般选用线性分组纠错码(如,Hamming码、BCH码和RS码)来完成,所生成的纠错(ECC)码被存放于冗余区124。除纠错码之外,冗余区还用来存放一些在Flash应用和管理过程中使用的参数,例如坏块信息、物理页所对应的逻辑扇区的号码等,这些参数被称为管理数据。管理数据对于Flash器件的正常应用至关重要,任何管理数据的错误都可能导致Flash器件工作异常。因此,对管理信息进行差错控制是必要的。
现有的NAND Flash应用中,对于管理数据,一般采用不同于主数据的ECC码来进行差错控制;ECC码的编码与解码由硬件或软件方式实现。这种对管理数据进行差错控制的方法给NAND Flash控制硬件或软件带来了较大的开销,且使用上也比较繁琐。另一方面,随着NAND Flash器件应用的日益广泛,其管理软件日益复杂;相应的,Flash管理软件中的管理数据也有增加的趋势。而现有的NAND Flash控制器中,针对管理数据的硬件ECC模块所能处理的管理数据的长度是固定的。当管理数据长度变化时,需要对ECC模块做出相应的修改才能有效的对管理数据进行差错控制。而硬件设计的修改意味着产品上市时间的延后甚至市场机会的丧失;同时,这种不可扩展性也制约着产品的发展。因此,现有的管理数据差错控制方法已经不能满足新的市场需求。
发明内容
本发明所要解决的技术问题是实现存储器管理数据的差错控制方的同时,减少差错控制所带来的硬件或软件开销。
为解决以上技术问题,本发明提供一种存储器管理数据的差错控制方法,其将管理数据和与其对应的主数据串接,构成联合数据,并对所述联合数据进行纠错编码或解码。
进一步的,在对所述联合数据进行纠错编码或解码之前,还包括:设定差错控制所支持的数据分组长度;使所述联合数据的长度与差错控制所支持的数据分组长度匹配。
进一步的,设定差错控制所支持的数据分组长度为一固定值,其大于或等于主数据长度与最大的管理数据长度之和,则使所述联合数据的长度与差错控制所支持的数据分组长度匹配的过程包括:当所述联合数据的长度等于差错控制所支持的数据分组长度时,它们之间直接匹配;当所述联合数据的长度小于差错控制所支持的数据分组长度时,在所述联合数据序列之后添加一数据序列,使得添加后的数据总长等于差错控制所支持的数据分组长度。
进一步的,所添加的数据序列为全“0”序列或全“1”序列。
进一步的,所述最大的管理数据长度是根据存储器管理软件预期的需求或存储器冗余区存放管理数据的空间大小来选定。
进一步的,设定差错控制所支持的数据分组长度为多种数据分组长度,同时为每种数据分组长度设置对应的初始参数,则使所述联合数据的长度与差错控制所支持的数据分组长度匹配的过程包括:计算所述联合数据的长度,作为差错控制的数据分组长度;检查该差错控制的数据分组长度是否在差错控制所支持的数据分组长度中;如果在,则选取对应的初始参数进行差错控制编码或解码。
本发明还提供一种差错控制器,实现对存储器管理数据的差错控制,其包括:控制模块;第一接口电路,连接于所述控制模块,用以连接存储器的存储空间;第二接口电路,连接于所述控制模块,用以接收一外界设备的读或写指令;纠错模块,连接于所述控制模块,包括编码单元与解码单元,且所述第二接口电路接收到读指令时,所述控制模块通过所述第一接口电路从存储器的存储空间内获得欲读取的主数据和与该主数据对应的管理数据,并将所获得的主数据和管理数据串接形成联合数据,进而控制解码单元对所述联合数据进行纠错解码;所述第二接口电路接收到写指令时,所述控制模块将欲写入的主数据和与该主数据对应的管理数据串接形成联合数据,并控制编码单元对所述联合数据进行纠错编码。
进一步的,所述纠错模块为可配置模块,即可对不同长度的管理数据进行纠错编码与解码。
进一步的,所述编码单元包括:数据分组长度寄存器,存储该差错控制器的数据分组长度,且该数据分组长度为一固定值,其大于或等于主数据长度与最大的管理数据长度之和;数据缓存器,存储所述联合数据;数据添加控制电路,连接于所述数据分组长度寄存器;编码计算电路,连接于所述数据添加控制电路和所述数据缓存器,以在所述数据添加控制电路的控制下,计算所述联合数据的纠错码;纠错码寄存器,连接于所述编码计算电路,以存储所述纠错码,其中当所述联合数据的长度等于数据分组长度寄存器内所存储的数据分组长度时,数据添加控制电路控制所述编码计算电路直接计算所述联合数据的纠错码;当所述联合数据的长度小于数据分组长度寄存器内所存储的数据分组长度时,所述数据添加控制电路控制所述编码计算电路在所述联合数据序列之后添加一数据序列,使得添加后的联合数据总长等于数据分组长度寄存器内所存储的数据分组长度,再计算所述联合数据的纠错码。
进一步的,所添加的数据序列为全“0”序列或全“1”序列。
进一步的,所述最大的管理数据长度是根据存储器管理软件预期的需求或存储器冗余区存放管理数据的空间大小来选定。
进一步的,所述解码单元包括:数据分组长度寄存器,存储该差错控制器的数据分组长度,且该数据分组长度为一固定值,其大于或等于主数据长度与最大的管理数据长度之和;数据缓存器,存储所述联合数据;数据添加控制电路,连接于所述数据分组长度寄存器;解码计算电路,连接于所述数据添加控制电路和所述数据缓存器,以在所述数据添加控制电路的控制下,计算所述联合数据的错误信息;错误信息寄存器,连接于所述解码计算电路,以存储所述错误信息,其中当所述联合数据的长度等于数据分组长度寄存器内所存储的数据分组长度时,数据添加控制电路控制所述解码计算电路直接计算所述联合数据的错误信息;当所述联合数据的长度小于数据分组长度寄存器内所存储的数据分组长度时,所述数据添加控制电路控制所述解码计算电路在所述联合数据序列之后添加一数据序列,使得添加后的联合数据总长等于数据分组长度寄存器内所存储的数据分组长度,再计算所述联合数据的错误信息。
进一步的,所添加的数据序列为全“0”序列或全“1”序列。
进一步的,所述最大的管理数据长度是根据存储器管理软件预期的需求或存储器冗余区存放管理数据的空间大小来选定。
进一步的,所述解码计算电路包括:判别式计算电路,连接于所述数据添加控制电路和所述数据缓存器,以在所述数据添加控制电路的控制下,计算所述联合数据的纠错判别式;判别式寄存器,连接于所述判别式计算电路,以存储所述纠错判别式;错误信息计算电路,连接于所述判别式寄存器,以根据所述纠错判别式,计算所述联合数据的错误信息。
进一步的,所述编码单元包括:数据分组长度寄存器,存储该差错控制器的数据分组长度,且该数据分组长度等于所述联合数据的长度;初始参数存储器,存储多种预设数据分组长度以及与每种数据分组长度对应的初始参数;数据缓存器,存储所述联合数据;选取控制电路,连接于所述数据分组长度寄存器和所述初始参数存储器,其选取与所述数据分组长度寄存器内所存储的数据分组长度相同的预设数据分组长度所对应的初始参数;编码计算电路,连接于所述选取控制电路和所述数据缓存器,以接收所述选取控制电路的所选取的初始参数,计算所述联合数据的纠错码;纠错码寄存器,连接于所述编码计算电路,以存储所述纠错码。
进一步的,所述解码单元包括:数据分组长度寄存器,存储该差错控制器的数据分组长度,且该数据分组长度等于所述联合数据的长度;初始参数存储器,存储多种预设数据分组长度以及与每种数据分组长度对应的初始参数;数据缓存器,存储所述联合数据;选取控制电路,连接于所述数据分组长度寄存器和所述初始参数存储器,其选取与所述数据分组长度寄存器内所存储的数据分组长度相同的预设数据分组长度所对应的初始参数;解码计算电路,连接于所述选取控制电路和所述数据缓存器,以接收所述选取控制电路的所选取的初始参数,计算所述联合数据的错误信息;错误信息寄存器,连接于所述解码计算电路,以存储所述错误信息。
进一步的,所述解码计算电路包括:判别式计算电路,连接于所述选取控制电路和所述数据缓存器,以在所述选取控制电路的控制下,计算所述联合数据的纠错判别式;判别式寄存器,连接于所述判别式计算电路,以存储所述纠错判别式;错误信息计算电路,连接于所述判别式寄存器,以根据所述纠错判别式和所述选取控制电路所选取的初始参数,计算所述联合数据的错误信息。
综上所述,以上差错控制方法与控制器,将管理数据和与其对应的主数据串接,构成联合数据,通过对联合数据进行纠错编码或解码,从而在实现主数据差错控制的同时,完成对管理数据的差错控制。如此,在硬件实现上仅需实现一种ECC算法,这样不仅节省了差错控制的硬件开销,而且简化了软件设计。
进一步的,其将纠错模块设置为可配置的形式,即在一定范围内可处理不同分组长度的数据,从而能够在一定范围内对不同长度管理数据进行差错控制保护,以满足存储器的可靠性,并提高其可扩展性。
附图说明
图1为现有NAND Flash的存储空间示意图;
图2为本发明一实施例所提供的存储器管理数据的差错控制方法的原理框图;
图3为本发明实施例一中添加后的联合数据的组成示意图;
图4为本发明实施例二所提供的存储器管理数据的差错控制方法的原理框图;
图5为本发明一实施例所提供的差错控制器的结构框图;
图6为本发明实施例三所提供的编码单元的结构示意图;
图7为本发明实施例三所提供的解码单元的结构示意图;
图8为本发明实施例四所提供的编码单元的结构示意图;
图9为本发明实施例四所提供的解码单元的结构示意图。
具体实施方式
为让本发明的上述特征和优点能更明显易懂,下文特举示例性实施例,并配合附图,作详细说明如下。
请参考图2,其为本发明一实施例所提供的存储器管理数据的差错控制方法的原理图,其中,(a)为编码过程原理框图,(b)为解码过程原理框图。如图所示,该方法将管理数据和与其对应的主数据串接,构成联合数据,通过对联合数据进行纠错编码或解码,从而在实现主数据差错控制的同时,完成对管理数据的差错控制。如图,对联合数据进行纠错编码与解码往往是通过差错控制器10来完成的。如此,在实际应用中,在差错控制器10的设计上仅需实现一种纠错码(ECC)算法,即无需分别对主数据与管理数据设定不同的ECC算法,只需对他们构成的联合数据采用统一的ECC算法即可,如此节省了差错控制器10的硬件开销,而且简化了其软件设计。
通常,主数据的长度是不变的,而管理数据的长度可在一定范围内变化。为了适应管理数据长度的变化,在本实施例中,将差错控制器10设计为可配置的差错控制器,即该差错控制器10可根据管理数据的长度,采取相应的处理方法,实现正确的纠错编码和解码,从而产生ECC码和错误信息。
为了实现差错控制器的可配置性,需预先设置差错控制所支持的数据分组长度,并在纠错编码与解码前,使联合数据的长度与差错控制所支持的数据分组长度匹配,以对联合数据进行纠错编码或解码。
下面以两个较佳实施例为例,详述如何实现实现差错控制器的可配置性。
实施例一:
在本实施例中,设定差错控制所支持的数据分组长度为一固定值,其大于或等于主数据长度与可能的最大的管理数据长度之和。其中,最大的管理数据长度可以根据闪存(Flash)管理软件预期的需求以及Flash冗余区存放管理数据的空间大小来选定。例如,最大的管理数据长度可设定为存储器其用于存储管理数据的存储空间的长度。以一种与非快闪存储器(NAND Flash)为例,其每页由512个字节的主区和16个字节的冗余区构成,假如其冗余区内用于存储管理数据的空间长度为8个字节,则最大的管理数据的长度为8个字节。当然,此处仅为举例,并非用以限定本发明,对于不同类型的存储器,其最大的管理数据的长度选取有所不同,只要是选取可能出现的管理数据的长度中的最大值即可。
此时,使需进行差错控制的联合数据长度与差错控制所支持的数据分组长度匹配的方法为:当联合数据的长度等于差错控制所支持的数据分组长度时,它们之间已直接匹配,故差错控制器可直接对联合数据进行纠错编码或解码;而当联合数据的长度小于差错控制所支持的数据分组长度时,在联合数据序列之后添加一数据序列,使得添加后的数据总长等于差错控制所支持的数据分组长度,这样,差错控制器便可以进行正常工作,完成对添加后的联合数据的纠错编码或解码。当然,添加的数据序列可以预先设定好,且编、解码时添加的数据序列一致,以便还原出正确的主数据与管理数据。
下面结合图3,详细说明以上方法,设需进行差错控制的主数据长度为K(数据单元),对应的管理数据长度最大值为Tmax(数据单元)。取差错控制所支持的数据分组长度为N=K+Tmax(数据单元),对差错控制器进行设计。在实际应用中,设管理数据的长度为T(数据单元),显然,T≤Tmax。请继续参考图2,当差错控制器10工作时,主数据与对应的管理数据组成的联合数据以及管理数据的长度被传送至差错控制器10。差错控制器10将在联合数据序列之后自动添加(N-K-T)个数据单元的数据序列,使得添加后的联合数据序列的总长度等于N,从而正确的完成纠错编码与解码工作。这里所述的数据单元可以是单比特(bit)数或多比特数,它的选取依赖于纠错码的类型。举例说明,设K=512(数据单元),Tmax=8(数据单元),那么取差错控制所支持的数据分组长度N=520(数据单元),当管理数据长度为T=3(数据单元)时,差错控制器10在每次编码或解码时,需要在主数据与管理数据组成的联合数据序列之后添加520-512-3=5个数据单元的数据序列。
另外,本发明并不限定所添加的数据序列的数值,但较佳的可以设定所添加的数据序列为全“0”序列或全“1”序列,这相对于添加其他数值的序列可以节省差错控制器的硬件开销。
实施例二:
在本实施例中,设定差错控制所支持的数据分组长度为多种数据分组长度,每种数据分组长度分别等于主数据长度与一种可能的管理数据长度之和,同时为每种数据分组长度设置对应的初始参数。具体而言,就是在管理数据可能的长度变化范围内,为每一种可能的长度设置一个初始参数,用于纠错编码或解码。
请参考图4,此时,使所述联合数据的长度与差错控制所支持的数据分组长度匹配的过程包括:计算联合数据的长度,作为差错控制的数据分组长度;检查该差错控制的数据分组长度是否在差错控制所支持的数据分组长度中;如果在,则选取对应的初始参数进行纠错编码或解码。
可见,在本实施例中,差错控制器被设计为支持多种数据分组长度,每种数据分组长度分别等于主数据长度与一种可能的管理数据长度之和。对于每种不同的数据分组长度,有一些不同的初始参数存放于差错控制器内部,供编码或解码使用。通常,这些差错控制器所支持的多种数据分组长度与对应的初始参数以列表(table)的形式存放于差错控制器内。这样,差错控制器工作时,首先根据实际的管理数据长度和主数据长度计算联合数据的长度,作为差错控制的数据分组长度,再根据数据分组长度搜寻以上列表,选用相应的初始参数,进行编码或解码。如此,在管理数据长度发生变化时,便可以无需更改硬件或软件设计,而完成正确的纠错编码和解码。
比较以上两种实施例,实施例一相对于实施例二的优点是:硬件实现简单,开销小;缺点是:添加数据会使得纠错编码或解码过程中产生一定的时延。相应的,实施例二相对于实施例一的优点是:纠错编码或解码的时延小;缺点是:当差错控制器需要支持较多的数据分组长度时,差错控制器将会增加较大的硬件开销。
对应于以上方法,本发明一实施例还提供一种差错控制器,通过对主数据与对应的管理数据所组成的联合数据进行纠错编码或解码,在实现主数据差错控制的同时,完成对管理数据的差错控制。
请参考图5,其为本发明一实施例所提供的差错控制器的结构框图。如图所示,该差错控制器10包括控制模块12、第一接口电路14、第二接口电路16和纠错(ECC)模块18。其中,第一接口电路14、第二接口电路16和纠错(ECC)模块18均与控制模块12连接,如图,其连接方式可以为总线连接的方式,但本发明不以此为限,本领域技术人员也可以选择其他连接方式。且第一接口电路14用以连接存储器的存储空间20;第二接口电路16用以接收一外界设备30的读或写指令;纠错码模块18包括编码单元181与解码单元182。且当第二接口电路16接收到读指令时,控制模块12通过第一接口电路14从存储器的存储空间内获得欲读取的主数据和与该主数据对应的管理数据,并将所获得的主数据和管理数据串接形成联合数据,进而控制解码单元181对所述联合数据进行纠错解码;当第二接口电路16接收到写指令时,控制模块12将欲写入的主数据和与该主数据对应的管理数据串接形成联合数据,并控制编码单元182对所述联合数据进行纠错编码。
以上差错控制器10在设计上仅需实现一种纠错码(ECC)算法,即无需分别对主数据与管理数据设定不同的ECC算法,只需对他们构成的联合数据采用统一的ECC算法即可,如此该差错控制器10相对于现有的差错控制器,其硬件开销大为减少,且软件设计也得到了简化。
另外,为了适应市场需求,即管理数据长度发生变化时,无需再重新设计差错控制器。本实施例将差错控制器10设计为可配置的差错控制器,即该差错控制器10可根据管理数据的长度,采取相应的处理方法,实现正确的纠错编码和解码,从而产生ECC码和错误信息。
为了实现差错控制器的可配置性,需将纠错模块18设计为可配置模块,即可对不同长度的管理数据进行纠错编码与解码。
对应于实施例一与实施例二,下面分别以实施例三和四详细描述可配置纠错模块18的编码单元181与解码单元182的构成。
实施例三:
请参考图6,其为本实施例所提供的编码单元的结构示意图。如图所示,该编码单元181包括数据分组长度寄存器1811、数据缓存器1812、数据添加控制电路1813、编码计算电路1814和纠错码(ECC)寄存器1815。其中数据分组长度寄存器1811存储差错控制器10的数据分组长度,且该数据分组长度为一固定值,其大于或等于主数据长度与最大的管理数据长度之和;数据缓存器1812存储联合数据;数据添加控制电路1813连接于数据分组长度寄存器1811;编码计算电路1814连接于数据添加控制电路1813和数据缓存器1812,以在数据添加控制电路1813的控制下,计算联合数据的纠错码;纠错码寄存器1815连接于编码计算电路1814,以存储纠错码。
如此,当联合数据的长度等于数据分组长度寄存器1811内所存储的数据分组长度时,由于长度匹配,数据添加控制电路1813可控制编码计算电路1814直接计算联合数据的纠错码。而当联合数据的长度小于数据分组长度寄存器1811内所存储的数据分组长度时,数据添加控制电路1813控制编码计算电路1814在联合数据序列之后添加一数据序列,使得添加后的联合数据总长等于数据分组长度寄存器1811内所存储的数据分组长度;这样便实现了长度匹配,编码计算电路1814便可以计算联合数据的纠错码。
对应的,请参考图7,其为本实施例所提供的解码单元的结构示意图。如图所示,该解码单元182包括数据分组长度寄存器1821、数据缓存器1822、数据添加控制电路1823、解码计算电路1824和错误信息寄存器1825。其中,数据分组长度寄存器1821存储差错控制器10的数据分组长度,且该数据分组长度为一固定值,其大于或等于主数据长度与最大的管理数据长度之和;数据缓存器1822存储联合数据;数据添加控制电路1823连接于数据分组长度寄存器1821;解码计算电路1824连接于数据添加控制电路1823和数据缓存器1822,以在数据添加控制电路1823的控制下,计算联合数据的错误信息;错误信息寄存器1825连接于解码计算电路1824以存储错误信息。
如此,当联合数据的长度等于数据分组长度寄存器1821内所存储的数据分组长度时,由于长度匹配,数据添加控制电路1823控制解码计算电路1824直接计算所述联合数据的错误信息。而当联合数据的长度小于数据分组长度寄存器1821内所存储的数据分组长度时,数据添加控制电路1823控制解码计算电路1824在联合数据序列之后添加一数据序列,使得添加后的联合数据总长等于数据分组长度寄存器1821内所存储的数据分组长度;这样便实现了长度匹配,解码计算电路1824可计算联合数据的错误信息。
通常,解码计算电路1824包括判别式计算电路18241,判别式寄存器18242和错误信息计算电路18243。其中,判别式计算电路18241连接于数据添加控制电路1823和数据缓存器1822,以在数据添加控制电路1823的控制下,计算联合数据的纠错判别式;判别式寄存器18242连接于判别式计算电路18241,以存储所述纠错判别式;错误信息计算电路18243连接于判别式寄存器18242,以根据所述纠错判别式,计算联合数据的错误信息。
同实施例一,以上所添加的数据序列可以为全“0”序列或全“1”序列,这相对于添加其他数值的序列可以节省差错控制器10的硬件开销。
另外,编码单元181的数据分组长度寄存器1811、数据缓存器1812、数据添加控制电路1813与解码单元182的数据分组长度寄存器1821、数据缓存器1822、数据添加控制电路1823可为共用,也就是说可以为编码单元181和解码单元182设置相同的数据分组长度寄存器、数据缓存器和数据添加控制电路,这相对于为编码单元181和解码单元182各自设置数据分组长度寄存器、数据缓存器和数据添加控制电路,可节省硬件开销。
实施例四:
请参考图8,其为本实施例所提供的编码单元的结构示意图。如图所示,该编码单元181’包括数据分组长度寄存器1811、初始参数存储器1816、数据缓存器1812、选取控制电路1813’、编码计算电路1814’和纠错码(ECC)寄存器1815。其中数据分组长度寄存器1811存储差错控制器10的数据分组长度,且该数据分组长度等于所述联合数据的长度;初始参数存储器1816存储多种预设数据分组长度以及与每种数据分组长度对应的初始参数;数据缓存器1812存储联合数据;选取控制电路1813’连接于数据分组长度寄存器1811和初始参数存储器1816,其选取与数据分组长度寄存器1811内所存储的数据分组长度相同的预设数据分组长度所对应的初始参数;编码计算电路1814’连接于选取控制电路1813’和数据缓存器1812,以接收选取控制电路1813’的所选取的初始参数,这样,编码计算电路1814’便可以利用所选取的初始参数计算联合数据的纠错码;纠错码寄存器1815连接于编码计算电路1814’,以存储纠错码。
对应的,请参考图9,其为本实施例所提供的解码单元的结构示意图。如图所示,该解码单元182’包括数据分组长度寄存器1821、初始参数存储器1826、数据缓存器1822、选取控制电路1823’、解码计算电路1824’和错误信息寄存器1825。其中,数据分组长度寄存器1821存储差错控制器10的数据分组长度,且该数据分组长度等于联合数据的长度;初始参数存储器1826存储多种预设数据分组长度以及与每种数据分组长度对应的初始参数;数据缓存器1822存储联合数据;选取控制电路1823’连接于数据分组长度寄存器1821和初始参数存储器1826,其选取与数据分组长度寄存器1821内所存储的数据分组长度相同的预设数据分组长度所对应的初始参数;解码计算电路1824’连接于选取控制电路1823’和数据缓存器1822,以接收选取控制电路1823’的所选取的初始参数,这样,编码计算电路1824’便可以利用所选取的初始参数计算联合数据的错误信息;错误信息寄存器1825连接于解码计算电路1824’,以存储所述错误信息。
通常,解码计算电路1824’包括判别式计算电路18241’、判别式寄存器18242’和错误信息计算电路18243’。其中判别式计算电路18241’连接于选取控制电路1823’和数据缓存器1822,以在选取控制电路1823’的控制下,计算联合数据的纠错判别式;判别式寄存器18242’连接于判别式计算电路18241’,以存储所述纠错判别式;错误信息计算电路18243’连接于判别式寄存器18242’,以根据所述纠错判别式和选取控制电路1823’所选取的初始参数,计算联合数据的错误信息。
另外,编码单元181’的数据分组长度寄存器1811、数据缓存器1812、选取控制电路1813’与解码单元182’的数据分组长度寄存器1821、数据缓存器1822、选取控制电路1823’可为共用,也就是说可以为编码单元181’和解码单元182’设置相同的数据分组长度寄存器、数据缓存器和选取控制电路,这相对于为编码单元181’和解码单元182’各自设置数据分组长度寄存器、数据缓存器和选取控制电路,可节省硬件开销。
比较以上两种实施例,实施例三相对于实施例四其编码单元181与解码单元182的硬件构成相对于实施例四的编码单元181’与解码单元182’更为简单,但是其数据添加控制电路1823在添加数据序列时将产生一定的时延。故实施例三相对于实施例四的优点是:硬件实现简单,开销小;缺点是:添加数据会使得纠错编码或解码过程中产生一定的时延。
相应的,实施例四相对于实施例三的优点是:纠错编码或解码的时延小;缺点是:当差错控制器需要支持较多的数据分组长度时,差错控制器将会增加较大的硬件开销。
综上所述,以上实施例所提供的差错控制方法与控制器,将管理数据和与其对应的主数据串接,构成联合数据,通过对联合数据进行纠错编码或解码,从而在实现主数据差错控制的同时,完成对管理数据的差错控制。如此,在硬件实现上仅需实现一种ECC算法,这样不仅节省了差错控制的硬件开销,而且简化了软件设计。
进一步的,其将纠错模块设置为可配置的形式,即在一定范围内可处理不同分组长度的数据,从而能够在一定范围内对不同长度管理数据进行差错控制保护,以满足存储器的可靠性,并提高其可扩展性。
以上仅为举例,并非用以限定本发明,本发明的保护范围应当以权利要求书所涵盖的范围为准。
Claims (18)
1.一种存储器管理数据的差错控制方法,其特征是,包括:将管理数据和与其对应的主数据串接,构成联合数据,并对所述联合数据进行纠错编码或解码。
2.根据权利要求1所述的存储器管理数据的差错控制方法,其特征是,在对所述联合数据进行纠错编码或解码之前,还包括:
设定差错控制所支持的数据分组长度;
使所述联合数据的长度与差错控制所支持的数据分组长度匹配。
3.根据权利要求2所述的存储器管理数据的差错控制方法,其特征是,设定差错控制所支持的数据分组长度为一固定值,其大于或等于主数据长度与最大的管理数据长度之和,则使所述联合数据的长度与差错控制所支持的数据分组长度匹配的过程包括:
当所述联合数据的长度等于差错控制所支持的数据分组长度时,它们之间直接匹配;
当所述联合数据的长度小于差错控制所支持的数据分组长度时,在所述联合数据序列之后添加一数据序列,使得添加后的数据总长等于差错控制所支持的数据分组长度。
4.根据权利要求3所述的存储器管理数据的差错控制方法,其特征是,所添加的数据序列为全“0”序列或全“1”序列。
5.根据权利要求3所述的存储器管理数据的差错控制方法,其特征是,所述最大的管理数据长度是根据存储器管理软件预期的需求或存储器冗余区存放管理数据的空间大小来选定。
6.根据权利要求2所述的存储器管理数据的差错控制方法,其特征是,设定差错控制所支持的数据分组长度为多种数据分组长度,同时为每种数据分组长度设置对应的初始参数,则使所述联合数据的长度与差错控制所支持的数据分组长度匹配的过程包括:
计算所述联合数据的长度,作为差错控制的数据分组长度;
检查该差错控制的数据分组长度是否在差错控制所支持的数据分组长度中;
如果在,则选取对应的初始参数进行差错控制编码或解码。
7.一种差错控制器,实现对存储器管理数据的差错控制,其特征是,包括:
控制模块;
第一接口电路,连接于所述控制模块,用以连接存储器的存储空间;
第二接口电路,连接于所述控制模块,用以接收一外界设备的读或写指令;
纠错模块,连接于所述控制模块,包括编码单元与解码单元,且
所述第二接口电路接收到读指令时,所述控制模块通过所述第一接口电路从存储器的存储空间内获得欲读取的主数据和与该主数据对应的管理数据,并将所获得的主数据和管理数据串接形成联合数据,进而控制解码单元对所述联合数据进行纠错解码;
所述第二接口电路接收到写指令时,所述控制模块将欲写入的主数据和与该主数据对应的管理数据串接形成联合数据,并控制编码单元对所述联合数据进行纠错编码。
8.根据权利要求7所述的差错控制器,其特征是,所述纠错模块为可配置模块,即可对不同长度的管理数据进行纠错编码与解码。
9.根据权利要求8所述的差错控制器,其特征是,所述编码单元包括:
数据分组长度寄存器,存储该差错控制器的数据分组长度,且该数据分组长度为一固定值,其大于或等于主数据长度与最大的管理数据长度之和;
数据缓存器,存储所述联合数据;
数据添加控制电路,连接于所述数据分组长度寄存器;
编码计算电路,连接于所述数据添加控制电路和所述数据缓存器,以在所述数据添加控制电路的控制下,计算所述联合数据的纠错码;
纠错码寄存器,连接于所述编码计算电路,以存储所述纠错码,其中
当所述联合数据的长度等于数据分组长度寄存器内所存储的数据分组长度时,数据添加控制电路控制所述编码计算电路直接计算所述联合数据的纠错码;
当所述联合数据的长度小于数据分组长度寄存器内所存储的数据分组长度时,所述数据添加控制电路控制所述编码计算电路在所述联合数据序列之后添加一数据序列,使得添加后的联合数据总长等于数据分组长度寄存器内所存储的数据分组长度,再计算所述联合数据的纠错码。
10.根据权利要求9所述的差错控制器,其特征是,所添加的数据序列为全“0”序列或全“1”序列。
11.根据权利要求9所述的差错控制器,其特征是,所述最大的管理数据长度是根据存储器管理软件预期的需求或存储器冗余区存放管理数据的空间大小来选定。
12.根据权利要求8所述的差错控制器,其特征是,所述解码单元包括:
数据分组长度寄存器,存储该差错控制器的数据分组长度,且该数据分组长度为一固定值,其大于或等于主数据长度与最大的管理数据长度之和;
数据缓存器,存储所述联合数据;
数据添加控制电路,连接于所述数据分组长度寄存器;
解码计算电路,连接于所述数据添加控制电路和所述数据缓存器,以在所述数据添加控制电路的控制下,计算所述联合数据的错误信息;
错误信息寄存器,连接于所述解码计算电路,以存储所述错误信息,其中
当所述联合数据的长度等于数据分组长度寄存器内所存储的数据分组长度时,数据添加控制电路控制所述解码计算电路直接计算所述联合数据的错误信息;
当所述联合数据的长度小于数据分组长度寄存器内所存储的数据分组长度时,所述数据添加控制电路控制所述解码计算电路在所述联合数据序列之后添加一数据序列,使得添加后的联合数据总长等于数据分组长度寄存器内所存储的数据分组长度,再计算所述联合数据的错误信息。
13.根据权利要求12所述的差错控制器,其特征是,所添加的数据序列为全“0”序列或全“1”序列。
14.根据权利要求12所述的差错控制器,其特征是,所述最大的管理数据长度是根据存储器管理软件预期的需求或存储器冗余区存放管理数据的空间大小来选定。
15.根据权利要求12所述的差错控制器,其特征是,所述解码计算电路包括:
判别式计算电路,连接于所述数据添加控制电路和所述数据缓存器,以在所述数据添加控制电路的控制下,计算所述联合数据的纠错判别式;
判别式寄存器,连接于所述判别式计算电路,以存储所述纠错判别式;
错误信息计算电路,连接于所述判别式寄存器,以根据所述纠错判别式,计算所述联合数据的错误信息。
16.根据权利要求8所述的差错控制器,其特征是,所述编码单元包括:
数据分组长度寄存器,存储该差错控制器的数据分组长度,且该数据分组长度等于所述联合数据的长度;
初始参数存储器,存储多种预设数据分组长度以及与每种数据分组长度对应的初始参数;
数据缓存器,存储所述联合数据;
选取控制电路,连接于所述数据分组长度寄存器和所述初始参数存储器,其选取与所述数据分组长度寄存器内所存储的数据分组长度相同的预设数据分组长度所对应的初始参数;
编码计算电路,连接于所述选取控制电路和所述数据缓存器,以接收所述选取控制电路的所选取的初始参数,计算所述联合数据的纠错码;
纠错码寄存器,连接于所述编码计算电路,以存储所述纠错码。
17.根据权利要求8所述的差错控制器,其特征是,所述解码单元包括:
数据分组长度寄存器,存储该差错控制器的数据分组长度,且该数据分组长度等于所述联合数据的长度;
初始参数存储器,存储多种预设数据分组长度以及与每种数据分组长度对应的初始参数;
数据缓存器,存储所述联合数据;
选取控制电路,连接于所述数据分组长度寄存器和所述初始参数存储器,其选取与所述数据分组长度寄存器内所存储的数据分组长度相同的预设数据分组长度所对应的初始参数;
解码计算电路,连接于所述选取控制电路和所述数据缓存器,以接收所述选取控制电路的所选取的初始参数,计算所述联合数据的错误信息;
错误信息寄存器,连接于所述解码计算电路,以存储所述错误信息。
18.根据权利要求17所述的差错控制器,其特征是,所述解码计算电路包括:
判别式计算电路,连接于所述选取控制电路和所述数据缓存器,以在所述选取控制电路的控制下,计算所述联合数据的纠错判别式;
判别式寄存器,连接于所述判别式计算电路,以存储所述纠错判别式;
错误信息计算电路,连接于所述判别式寄存器,以根据所述纠错判别式和所述选取控制电路所选取的初始参数,计算所述联合数据的错误信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100562826A CN101996685B (zh) | 2009-08-11 | 2009-08-11 | 存储器管理数据的差错控制方法及差错控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100562826A CN101996685B (zh) | 2009-08-11 | 2009-08-11 | 存储器管理数据的差错控制方法及差错控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101996685A true CN101996685A (zh) | 2011-03-30 |
CN101996685B CN101996685B (zh) | 2013-12-04 |
Family
ID=43786699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100562826A Expired - Fee Related CN101996685B (zh) | 2009-08-11 | 2009-08-11 | 存储器管理数据的差错控制方法及差错控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101996685B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104051024B (zh) * | 2013-03-11 | 2017-07-07 | 旺宏电子股份有限公司 | 用于内建错误更正的储存装置及其操作方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008070796A2 (en) * | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for managing data using a data pipeline |
WO2008091590A1 (en) * | 2007-01-26 | 2008-07-31 | Micron Technology, Inc. | Programming management data for nand memories |
CN101676882A (zh) * | 2008-09-16 | 2010-03-24 | 美光科技公司 | 存储器装置的内嵌映射信息 |
-
2009
- 2009-08-11 CN CN2009100562826A patent/CN101996685B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008070796A2 (en) * | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for managing data using a data pipeline |
WO2008091590A1 (en) * | 2007-01-26 | 2008-07-31 | Micron Technology, Inc. | Programming management data for nand memories |
CN101676882A (zh) * | 2008-09-16 | 2010-03-24 | 美光科技公司 | 存储器装置的内嵌映射信息 |
Non-Patent Citations (1)
Title |
---|
张海燕,刘伯安: "《可配置参数的BCH编解码器的设计》", 《可配置参数的BCH编解码器的设计》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104051024B (zh) * | 2013-03-11 | 2017-07-07 | 旺宏电子股份有限公司 | 用于内建错误更正的储存装置及其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101996685B (zh) | 2013-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI514139B (zh) | 實體頁、邏輯頁及碼字對應 | |
JP5776107B2 (ja) | メモリコントローラ及び方法におけるデータ完全性 | |
CN101256842B (zh) | 纠错码控制器和包括该纠错码控制器的存储器系统 | |
US9088303B2 (en) | Codewords that span pages of memory | |
TWI521528B (zh) | 記憶體儲存裝置、其記憶體控制器與資料處理方法 | |
US9465552B2 (en) | Selection of redundant storage configuration based on available memory space | |
US8074148B2 (en) | Memory management method and controller for non-volatile memory storage device | |
EP3015986B1 (en) | Access method and device for message-type memory module | |
US9058288B2 (en) | Redundant storage in non-volatile memory by storing redundancy information in volatile memory | |
CN101576853B (zh) | 数据存取方法、使用此方法的控制器与存储系统 | |
CN101901169B (zh) | 扫描装置及方法 | |
CN104871249A (zh) | 数据存储系统的自适应错误纠正码 | |
TW201229757A (en) | Stripe-based non-volatile multilevel memory operation | |
CN114730598A (zh) | 利用分区命名空间简缩ssd中的逻辑到物理表指针 | |
WO2014046750A1 (en) | Method, apparatus and system for providing error correction information | |
CN101488369B (zh) | Bch码控制器接口电路 | |
US11101822B1 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
US11237901B2 (en) | Error correction using hierarchical decoders | |
CN102063342A (zh) | 一种闪存存储设备数据的管理方法及系统 | |
CN101566969B (zh) | 提升非易失性存储器存储装置的管理效能的方法及控制器 | |
CN101996685B (zh) | 存储器管理数据的差错控制方法及差错控制器 | |
EP3499376A1 (en) | Memory system varying operation of memory controller according to internal status of memory device | |
CN111796774B (zh) | 存储器控制方法、存储器存储装置及存储器控制器 | |
US10922025B2 (en) | Nonvolatile memory bad row management | |
CN108170554B (zh) | 一种nand的数据编码方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20131204 Termination date: 20200811 |
|
CF01 | Termination of patent right due to non-payment of annual fee |