首页> 中国专利> 利用错误定位码校正一个多级单元存储器的方法和装置

利用错误定位码校正一个多级单元存储器的方法和装置

摘要

一种校正从一个多级单元存储器(204)读取的数据的方法和装置。该多级单元能够存储三个或更多的电荷状态。从该多级单元中读取的第一电荷状态被确定为是错误的。如果该多级单元保持第二电荷状态,就提供一个与保持第二电荷状态的所述多级单元相对应的输出,其中第二电荷状态的电荷比第一电荷状态的电荷多。

著录项

  • 公开/公告号CN1242088A

    专利类型发明专利

  • 公开/公告日2000-01-19

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN97180925.9

  • 发明设计人 D·H·勒曼;

    申请日1997-08-06

  • 分类号G06F11/10;

  • 代理机构中国专利代理(香港)有限公司;

  • 代理人王勇

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 13:33:50

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-10-01

    未缴年费专利权终止 IPC(主分类):G06F11/10 授权公告日:20030702 终止日期:20130806 申请日:19970806

    专利权的终止

  • 2003-07-02

    授权

    授权

  • 2000-02-02

    实质审查请求的生效

    实质审查请求的生效

  • 2000-01-26

    实质审查请求的生效

    实质审查请求的生效

  • 2000-01-19

    公开

    公开

说明书

发明领域

本发明涉及存储器装置这一领域。更具体地,本发明涉及校正从一个多级单元存储器中读取的数据中的错误的方法。

发明背景

多级单元存储器是由多级单元组成的,每一个单元能储存多个电荷状态或电荷级。每一个电荷状态与一个存储单元位模式有关。

图1是储存四种电荷状态(级0-3)的现有技术多级单元的示意图。级3的电荷比级2的电荷多;级2的电荷比级1的电荷多;级1的电荷比级0的电荷多。一个参考电压将所述各种电荷状态分离开。Vref2分离级3和级2。Vref1分离级2和级1。Vref0分离级1和级0。

每一个电荷状态具有相关的存储单元位模式。对于一种实现方式,所述存储单元位模式“00”与级3有关,存储单元位模式“10”与级2有关,存储单元位模式“01”与级1有关,存储单元位模式“11”与级0有关。

一个多级单元存储器根据它能存储的电荷状态的数目可以存储多于一位的数据。例如,可存储四个电荷状态的多级单元存储器能够存储两位数据;可存储八个电荷状态的多级单元存储器能够存储三位数据;可存储十六个电荷状态的多级单元存储器能够存储四位数据。对于每一个n位多级单元存储器,能够实现与每一不同的电荷状态相联系的各种存储单元位模式。

然而,可储存在一个多级单元中的电荷状态的数目不被限制于2的乘方。例如,一带有三个电荷状态的多级单元存储1.5位数据。当这个多级单元与另外的译码逻辑结合起来并耦合成第二个类似的多级单元时,三位数据被提供为所述两个单元组合的输出。各种其它的多级单元组合也是可能的。

在Christopherson等人申请的已转给本申请的共同受让人的题目为“多级单元存储系统的葛莱码”的美国专利U.S.No.5450363中描述了一个多级单元存储器的例子。该专利描述了一个多级单元存储器的一种实现方式。多级单元存储器可被用于动态随机存取存储器(DRAM)和各种类型的只读存储器(ROM)中,例如可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、和闪速可擦可编程只读存储器(flash EPROM)。

图2是现有技术处理器100和多级单元存储器104的示意图。处理器100被连接到总线102和存储器104中。存储器104包括一个接口控制器105和一个多级单元存储器阵列150。处理器100通过所述总线102被连接到所述接口控制器105上。处理器100通过总线102也被连接到所述多级单元存储器阵列150上。所述接口控制器105提供必要的操作来控制所述多级单元存储器阵列150。在一个实施例中,所述接口控制器105和多级单元存储器阵列150被设置在一个单独的集成电路模块中。

错误码

数据通常被提供给一个特定的存储器阵列并从包括一个预定位数(这里称作“数据字”)的装置的存储器阵列中检索出来。当将该数据存储在所述存储器阵列时,编码器有时用于产生错误码。所述错误码可被这样存储起来,即它们同其相关的数据字一起被检索出来。当所述数据字从所述存储器阵列中被检索出来时,如现有技术中公知的那样,错误译码电路使用先前存储的与数据字有关的错误码来检测、定位和/或校正在所述数据字中发现的错误(当从所述存储器阵列中读取时)。

存在一些不同类型的错误码,包括错误检测码、错误定位码和错误校正码。错误检测码检测是否出现错误,但是不能校正错误。错误定位码检测错误,并能够将该错误定位在有关位块中,但是不能确定在所述位块中该错误位的精确位置。错误校正码检测一个数据字中的单独一位错误并能够校正该错误。一种称作汉明码的错误校验码,除能够校正单独一位错误外,还能检测(但不校正)数据字中的两位错误。

在IEEE的信息理论学报(IEEE Transactions on InformationTheory)1994年11月第40卷第6期中作者为E.Fujiwara和M.Kitakami(“Fujiwara”)的题目为“一组字节构成的存储器系统的错误定位码(A Class of Error-Locating Code for Byte-OrganizedMemory Systems)”一文中描述了一组错误定位码。Fujiwara描述了在容错存储系统中使用的错误定位码。当在一个存储器块中检测到一个错误时,该错误存储器卡被定位,然后切换到一个备用存储器卡。

在IEEE的信息理论学报1963年4月的作者为J.K.Wolf andB.Elspas的题目为“错误定位码和错误控制新概念(Error-LocatingCodes&A New Concept in Error Control)”一文中也描述了错误定位码。

一种校正从一个存储器多级单元中读取的数据的方法和装置。该多级单元能存储三个或更多的电荷状态。从该多级单元中读取的第一电荷状态被确定为错误的。如果该多级单元保持第二电荷状态,就提供一个与保持第二电荷状态的所述多级单元相对应的输出,其中第二电荷状态的电荷比第一电荷状态的电荷多。

通过下面的详细描述和附图,本发明的其它特点和优点将会变得清楚明白。

图1是存储四种电荷状态的现有技术多级单元的示意图;

图2是现有技术一个处理器和一个多级单元存储器的示意图;

图3本发明的处理器和一个多级单元存储器的示意图;

图4是将数据编程(即写)到存储器阵列所用的错误校正电路的一个实施例;

图5表示从存储器阵列250读取数据所用的错误校正电路的一个实施例;

图6表示包括可被用来写入存储器阵列和从该存储器阵列中读取数据的数据缓冲器和错误编码器和译码器(EED)的错误校正电路的实施例;

图7表示用于将数据写入存储器阵列的错误校正电路的另一个实施例;

图8表示从该存储器阵列中读取数据的错误校正电路的另一个实施例;

图9表示当将一个数据字写入多级单元存储器时产生错误校正码过程的流程图;

图10表示一个数据字和与其相关的错误定位码的示意图;

图11表示一个64位数据字连同与其相关的8位错误定位码的一个实施例;

图12表示当从一个多级单元存储器读取数据字时校正由错误定位码检测到的错误的这一过程的流程图。

详细说明

下面描述校正多级单元存储器中错误的方法和装置。该方法采用错误定位码来校正从一个或多个多级单元中读取的数据字中的错误。所述错误定位码指出在包含一个错误的上述数据字之内的位块但是不能识别哪一位是错误的。由于该位块对应于一个或多个多级单元,所以该错误定位码识别一个错误多级单元。本发明利用该错误多级单元的标识并且结合了多级单元的一个主要故障机理是电荷损失这一认识。一旦一个特定的多级单元已被识别为被错误读取,该多级单元的校正状态就能被预测为具有比从所述多级单元读取的电荷状态的电荷多的一种电荷状态。

鉴于Fujiwara(背景技术中引用的)的错误定位码被用来检测错误的存储器块,因此存储该存储器块的存储器卡可能是不能运行的,本发明利用该多级单元中的所述故障机理以便纠正这一故障。代替如Fujiwara描述的的随机性,由于多级单元正常的故障状态根据电荷损失是单向的,所以本发明已发现预测错误多级单元的校正状态是可能的。

一个错误多级单元的校正是通过修改从所述错误多级单元中读取的数据来反映该单元可能的值(如果该错误多级单元是在下一个较高电荷状态)。利用该错误定位码来检测上述修改是否校正了所述错误。如果错误多级单元中的修改数据仍是不正确的,那么可重复进行这种修改过程。如果许多多级单元是错误的,则一个多级单元的数据可被保持恒定不变,而另一个单元的数据被修改,反之亦然,直至该错误已被纠正。

通过本发明的描述,如Fujiwara描述的错误定位码作为一种实现的一个实施例。然而其它的算法和实施类型也可用来识别一个错误多级单元。

图3-9表示本发明所实施的一个例子。图3是一个处理器200和一个多级单元存储器204的示意图。该处理器200与一总线202连接。多级单元存储器204包括一个接口控制器205、一个多级单元存储器阵列250和错误校正电路260。接口控制器205用于提供必要的操作来控制多级单元存储器阵列250和错误校正电路260。接口控制器205和错误校正电路260都连接到总线202上。多级单元存储器阵列250连接到错误校正电路260上。处理器200将数据写入存储器204并从该存储器204读取数据。

在一个实施例中,接口控制器205、多级单元存储器阵列250和错误校正电路260位于同一个集成电路芯片上。在另一个实施例中,错误校正电路260与存储器阵列250和接口控制器205分开。例如,错误校正码电路可置于单独的芯片中。

图4表示用于将数据编程(即写)到存储器阵列250的错误校正电路260的一个实施例。该错误校正电路260包括一个数据缓冲器302、一个错误缓冲器304和一个错误编码器300。

总线202通过数据缓冲线308连接到数据缓冲器302中。数据缓冲器302通过存储器总线312连接到存储器阵列250中。数据缓冲器通过总线314连接到错误编码器300中。错误编码器300通过总线316连接到错误缓冲器304中,并且错误缓冲器304通过错误总线318连接到存储器阵列250中。

数据通过数据缓冲器总线308写入数据缓冲器302中。通过数据缓冲器总线308每次传送的数据一般是数据缓冲器302宽度的一部分。例如,数据缓冲器总线308可能是8位或16位,而数据缓冲器302可能是64位。

当数据缓冲器302的整个宽度上已写入来自总线202的数据时,在数据缓冲器302中的64位数据字通过存储器总线312被传送到存储器阵列250。错误编码器300使用从数据缓冲器302通过总线314的数据输入产生一个被提供到错误缓冲器304的错误校正码。错误缓冲器304通过总线318将错误校正码提供给存储器阵列250。

在本发明的一个实施例中,错误编码器300产生错误定位码,该码是一组如在IEEE的信息理论学报1994年11月第40卷第6期中作者为E.Fujiwara and M.Kitakami(“Fujiwara”)的题目为“一组字节构成的存储器系统的错误定位码(A Class of Error-Locating Code forByte-Organized Memory Systems)”一文中描述的那些码一样的错误校正码。错误定位码检测一个或多个位于数据字内的错误数据块,但不能指出有错误的块的确切位。此外,该错误定位码可检测一位错误。

在本发明的一种实施中,由数据缓冲器302提供的数据字和由错误缓冲器304提供的错误码被邻接地储存在存储器阵列250中。在另一种实施中,该数据字与错误码分开地储存在存储器阵列250中。在又一个实施中,错误码被储存在与其相关数据字不相连的储存区域内。

图5是用于从存储器阵列250中读取数据的错误校正电路260的一个实施例。该错误校正电路260包括一个数据缓冲器320、一个错误缓冲器322和一个错误编码器和译码器(EED)324。

在读操作过程中,将数据字通过总线330从存储器阵列250提供到数据缓冲器320。类似地,该数据字的相关错误校正码被提供给错误缓冲器322。在一个实施例中,错误校正码通过总线332从存储器阵列250中提供。

数据缓冲器320用来通过总线334将其数据提供给EED 324。错误缓冲器322用来通过总线336将其错误校正码提供给EED 324。EED 324根据从数据缓冲器320和错误缓冲器322中接收到的输入数据确定在从所述存储器阵列读取的数据字中是否存在任何错误位。如果在该数据字中有错误位,则该EED 324认定合适的信号340去纠正该错误位,这将根据图11和12进行描述。信号340能够逐一地改变数据缓冲器320中的任何数据位。在确定不再具有错误位的最终数据值之前,该EED324可能需要反复地测试数据缓冲器320中的各种数据值。数据缓冲器320通过总线338连接到总线202上。

图6表示错误校正电路260的一个实施例,该错误校正电路260包括能被用于向存储器阵列250写入数据和从该存储器阵列250中读取数据的一个数据缓冲器350和一个错误编码器和译码器(EED)354。EED 354包括当从所述存储器阵列读取数据时一个从所述数据字产生错误定位码的编码器,和一个用于校正该数据字的译码器。

图7表示将数据写入存储器阵列250的错误校正电路260的另一个实施例。然而图7中的错误校正电路260不包括图4中的数据缓冲器或错误缓冲器。数据字通过总线380从总线202被提供给存储器阵列250。该数据字作为一个输入数据也被通过总线382提供给编码器384。该编码器384产生错误定位码并将它们通过总线386提供给存储器阵列250。当输入编码器384的数据改变之前编码器384具有足够的时间产生所述错误校正码时,可以采用这一实施例。

图8表示从存储器阵列250读取数据的错误校正电路260的另一个实施例。图8所示的错误校正电路260不包括图5所示的数据缓冲器或错误缓冲器。

数据字从存储器阵列250通过信号线388a-z提供至错误校正电路260。该数据字通过信号线389a-z被提供到编码器390中。该编码器重新编码所述数据字并在信号线393a-m上提供错误校正码。重新编码的错误校正码与已被事先存储的并提供在信号线392a-m上的所述错误校正码作比较。这种比较可由例如,XOR电路执行。将比较的输出数据提供给一个译码器394。所述译码器提供信号396a-z,该信号396a-z能够修改初始信号388a-z以校正在数据字中检测到的错误。校正的数据字通过信号线398被提供到总线202。

在一个替换的实施例中,图7所示的编程电路和图8所示的读电路可合并起来共享一个编码器。

图9是当将一个数据字写入所述多级单元存储器时,表示用于产生错误校正码的步骤的流程图。下面的描述是参考图4所示的编程电路进行的。该流程从框400开始,从该操作继续进行到框402。在框402中,数据缓冲器充满了组成一个数据字的数据。写入数据缓冲器302可能需要几个总线周期,因为数据总线缓冲器308通常没有数据缓冲器302宽。

操作一直继续进行到框404,在此数据字位被编码器300处理以产生一个错误定位码。在框406中,所述数据字和错误定位码被储存在多级单元存储器204中。操作在框410处终止。

图10是一个数据字420和其相关错误定位码430的示意图。该错误定位码430被译码并指向数据字420中的错误位组(也称作一个“字节”)。

在一个实施例中,每一个字节确切对应着唯一的多级单元,即,每一个字节是由存储在一个特定多级单元中的这些位组成的,并且每一字节与所述多级单元边界对准。在这种情况下,当一个错误定位码识别一个错误字节时,它同样也识别一个错误多级单元。因为该多级单元的故障机理根据电荷损失是可预测的,所以,错误多级单元的正确状态被预测成具有比从损失错误多级单元读取的电荷状态更多电荷的电荷状态。

在另一个实施例中,所述错误字节与两个多级单元重叠,即,该字节的一部分被储存在一个多级单元中,一部分被储存在另一个多级单元中。当该字节中的位数与储存在一个多级单元中的位数不同时,或者当该字节与所述多级单元边界不对准时,会发生这种情况。如果发生两个多级单元的重叠,与所述错误字节相关的一个或两个单元会通过预测一个或两个多级单元的更高电荷状态而被校正。类似地,两个多级单元以上的重叠可通过预测一个或更多的错误多级单元的更高电荷状态而被校正。

图11表示一个64位数据字450连同其相关的8位错误定位码460的一个实施例。该错误定位码460是一种如Fujiwara描述的错误定位码。它可检测一个错误的n位字节。它也可检测单独一位错误。图11表示n=4的一个实施例。所述数据字也可被分成两个32位块。所述8位错误定位码460能够检测在每一32位块中的一个4位字节错误。

这样,如果所述数据字被储存在一个4位多级单元存储器中(其中每一单元将会具有16个电荷状态),则每一4位字节对应一个特定的多级单元。如果在一个4位字节中检测到一个错误,那么从与该4位字节相关的所述多级单元中读取的数据是错误的。使用这种错误定位码,能够在每一个块中确定一个错误多级单元。

如图11中所示,通过指向数据字450的两个分开的错误4位字节的错误定位码460,在同一个数据字中可确定多个错误多级单元。错误校正的准确性根据错误位数和n位字节而变化,如在前面引用的作者为E.Fujiwara and M.Kitakami的IEEE一文中所述的那样。n位字节的各种配置和m位块可被实施用来达到所需的错误定位级和校正性能。

错误定位码比错误校正码具有优点,因为需要较少的位来完成。这就降低了存储器阵列的成本并减小了它的体积。比较一下,如果一个8位汉明码(一种错误校正码)用来代替所述错误定位码460,则在数据字450中仅有单独一位错误能被检测。如果在数据字450中出现一个两位错误,则该两位错误会被检测出来,但是不会被该汉明码校正。这样,所述错误定位码460提供了一种比错误校正汉明码校正数据字中错误的更好的方法。

因为对于一个多级单元的主要故障机理是多级单元损失电荷,一旦一个错误多级单元被确定,就能预测该错误多级单元应该具有比其当前状态的电荷更高的电荷级。

图12表示当从一个多级单元存储器中读取一个数据字时,校正由所述错误定位码检测到的错误的过程的流程图。下面的描述参考图5所示的读取电路进行。该流程从框500开始,由此继续进行到框502。在框502,在所述多级单元存储器内读取一个数据字和其相关的错误定位码。该数据字被保留在数据缓冲器320内,且所述错误定位码被保持在所述错误缓冲器322内。

在框504,数据位和错误定位码通过EED 324进行处理,以确定在所述数据字内是否有错误。由所述EED 324进行的数据位和错误定位码的处理过程可由公知的电路来完成。

在框506,如果没有检测到错误,则操作过程继续进行到框560,在此操作终止。可是如果检测到错误,则操作继续到框510。

在框510,如果EED 324检测到单独一位错误,则操作继续进行到框512,在此EED 324通过认定信号线340中的一条来更换该数据缓冲器320的适当位值而在数据缓冲器320内纠正该单独一位错误。操作从框512继续到框560而终止。

然而,如果在框510所述译码器检测到一个多位字节错误,如参照图11描述的一个4位字节错误,然后操作继续进行到框520。在框520,存储数据字部分的一个或多个错误多级单元被确定。EED 324指向这些错误多级单元。在框522,该一个或多个错误多级单元的当前电荷状态由多级单元现有技术中的已知电路进行检测。在框524,对应于所述错误单元的存储器单元位模式被修改成下一个较高电荷状态的状态。在一个实现中,当前电荷状态的直接下一个较高电荷状态被预测为是最可能的正确测量(measure)。在另一个实现中,与下一个较高电荷状态不同的电荷状态可能会更有可能校正错误。例如,用实验方法可以发现主要的错误方式是一个多级单元的特定电荷状态下跳两个状态。在这种情况下,通过预测所述读取的电荷状态的第二个下一个较高电荷状态是最可能的正确测量(measure)就能校正该错误。类似地,如果发现一种特定的故障模式仅是一个多级单元的故障模式,那么所述正确的算法可能被适当地执行以便仅取所需的正确测量。

在框526,所述修改数据字和错误定位码通过EED 324被处理以观测所述错误是否已通过框524中运行的数据字的修改而被校正。

如果仍有一个错误和与该一个或多个错误多级单元有关的一些位能够再被修改到一个较高电荷状态,则操作从框530回到框524。可是,如果仍有一个错误和与一个错误多级单元有关的存储器单元位模式不能被修改到一个更高电荷状态的条件被满足,则操作继续进行到框540。

在框540,如果在所述数据字中仍有一个错误,则操作继续进行到框550,在此标记这个错误。处理器200或其它请求该数据字的装置被告知出现一个错误。

可是如果在框540,错误不再被检测到,则操作进行到框560。

在框560流程终止。数据缓冲器320保持已被校正错误的一个数据字。在一个多级单元存储器的一个实施例中,将所述保持在数据缓冲器320中的被校正的数据字再写入该错误多级单元。然而,在另一个实施例中,不进行所述存储器阵列的校正。这是由于添加另外电路写回到所述存储器阵列的复杂性导致的。另外,对于一个闪速存储器实施例,通常,为了再写入一个先前已被写入该闪速存储器的数据字,整个框将必须被清除。

在前述说明书中,本发明已参考其具体典型实施例作了描述。然而很显然,在不偏离如附加的权利要求所陈述的本发明放宽的保护范围的前提下,可以对其进行各种改进和变化。因此,说明书和附图仅是用于解释说明而不是为了限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号