扩展纠错编码数据存储的制作方法

文档序号:11807731阅读:239来源:国知局
扩展纠错编码数据存储的制作方法与工艺

本发明涉及存储器管理,并且更具体地说,本发明涉及扩展纠错编码数据存储。



背景技术:

在存储器设备(例如,动态随机存取存储器(DRAM))的管理中,为了校正从存储器设备读出的或者输出的数据,利用存储数据对纠错编码(ECC)位编码。在示例性存储器阵列中,64位数据可以与8个ECC位关联。通常,读出并且解码存储器地址和关联ECC位,以生成用于校正读出的数据的误差矢量。



技术实现要素:

根据实施例,一种存储器管理系统包含:存储器设备,该存储器设备包括存储器阵列,配置该存储器阵列,以存储数据和关联纠错编码(ECC)位以及扩展校正表,该扩展校正表存储对存储器阵列中的一个或者多个数据的ECC位附加的错误信息;以及控制器,配置该控制器,以控制存储器设备,从而写入和读出数据。

根据另一个实施例,一种管理存储器设备的方法包含:利用存储器控制器将数据和关联纠错编码(ECC)位存储于存储器设备的存储器阵列中;将附加到与存储器阵列中的一个或者多个数据对应的ECC位的信息存储于存储器设备中的扩展校正表中;以及利用扩展校正表中的信息从存储器阵列输出请求数据。

根据又另一个实施例,一种管理存储器设备的计算机程序产品包含嵌入有程序代码的计算机可读存储介质,处理器可执行所述程序代码,从而执行包括如下的方法:将数据和关联纠错编码(ECC)位存储于存储器设备的存储器阵列中;将附加到与所述存储器阵列中的一个或者多个数据对应的ECC位的信息存储于存储器设备中的扩展校正表中;以及利用扩展校正表中的信 息从存储器阵列输出请求数据。

利用本发明的技术实现附加特征和优点。在此详细描述了本发明的其他实施例和方案,并且将本发明的其他实施例和方案看作要求保护的本发明的一部分。为了更好地理解本发明的优点和特征,请参考说明书和附图。

附图说明

本说明书结尾处的权利要求中指出并且明确要求保护作为本发明的主题。根据下面结合附图所做的详细描述,本发明的上述以及其他特征和优点显而易见,其中:

图1是根据本发明实施例的存储器管理系统的概览;

图2是根据实施例包含扩展ECC表的存储器设备;

图3示出根据参考图2讨论的实施例管理存储器设备的指令;

图4示出根据实施例用于对扩展ECC表进行创建或者附加的指令;

图5是根据另一个实施例包括扩展ECC表的存储器设备;

图6示出根据参考图5讨论的实施例管理存储器设备的指令;

图7是根据又另一个实施例包含扩展ECC表的存储器设备;

图8示出根据参考图7讨论的实施例管理存储器设备的指令;

图9是根据又另一个实施例包含扩展ECC表的存储器设备;

图10示出根据参考图9讨论的实施例管理存储器设备的指令;

图11是根据又另一个实施例包含扩展ECC表的存储器设备;

图12是根据又另一个实施例包含扩展ECC表的存储器设备;

图13示出根据参考图12讨论的实施例管理存储器设备的指令;以及

图14示出扩展ECC表的替换实施例。

具体实施方式

如上所述,在存储器设备中,存储数据通常包含ECC位,以在读出时校正位于一个或者多个存储器地址的数据的值的错误。每个存储器地址的错误概率不等,因为一些存储器单元可能比其他存储器单元弱。因此,对所有存储器地址采用相同数量的ECC位无效或者最无效。尽管在理论上,每个存储器地址可以具有不同数量的与其关联的ECC位,但是这种选择性分配难以有效实现和有效更新。对于一些存储器地址,现有系统已经在从存储器设备读 出数据时涉及的软件中而非在存储器设备中实现了附加纠错。在此详细描述的系统和方法的实施例涉及扩展ECC表。

图1是根据本发明实施例的存储器管理系统100的概览。示出了包含处理电路系统的处理系统120。处理系统120包含与处理系统120外部通信的接口122、一个或者多个处理器125、以及一个或者多个存储器设备110。处理系统120可以用作存储器控制器,用于确定存储于存储器设备110-1中的和从存储器设备110-1读出的数据和ECC位。处理系统120还可以与或者作为一种选择可以与一个或者多个外部存储器设备110-1通信。例如,(内部或者外部)存储器设备110可以是动态随机存取存储器(DRAM)。如参考图2所做的进一步详细描述,存储器设备110可以包含存储器阵列、缓冲器和非易失性存储器。

图2是根据实施例包含扩展ECC表230的存储器设备110。感觉图2的实施例,存储器设备110包含:存储器阵列210,该存储器指令210用于存储数据111和关联第一ECC位112;缓冲器220;以及扩展ECC表230。例如,扩展ECC表230可以是非易失性存储器。第一ECC校验器215和第二ECC校验器225也是存储器设备110的一部分。首先,利用关联第一ECC位112,从存储器阵列210读出请求数据111。将数据111和ECC位输入到第一ECC校验器215。当在读出数据111中发现可校正错误时,利用第一ECC位112校正数据111。然而,当不可校正错误是从存储器阵列210读出的数据111的一部分时,将存储器阵列210中的数据111和相应地址114置于缓冲器220中。缓冲器220中的数据111(具有不可校正错误)与存储于扩展ECC表230中的第二ECC位113关联。可以基于对应于缓冲器220中的数据111的地址114和对应于扩展ECC表230中的第二ECC位113的地址114实现该关联。将缓冲器220中的数据111和扩展ECC表230中的关联第二ECC位113送到第二ECC校验器225,以校正数据111,该数据111具有基于第一ECC位112不可校正的错误。下面将更详细描述该流程的示例性实施例。

在替换实施例中,扩展ECC表230可以具有只读地址114。即,存储器设备110的制造商在封装之后的最终测试中可以检测错误,并且例如在非易失性存储器中,可以将地址114硬编制到扩展ECC表230中。在这种情况下,扩展ECC表230中的第二ECC位113可读/可写,但是地址114是只读的。当在与扩展ECC表230中的地址114中的一个关联的数据111中发生软错误 时,并且如果第一ECC位112只能校正一个错误位时,第二ECC位113可以校正全部2个错误位。即,第一ECC位112可以是单位可校正且双位可检测的,并且第二ECC位113可以是双位校正且三位可检测的。作为一种选择,第一ECC位112可以是仅单位可校正的(双位不可检测),并且第二ECC位113可以是单位可校正且三位可检测的或者双位可校正且三位可检测的。保持第一ECC位112较简单地将面积开销降低到最小,而利用第二ECC位113对坏存储器单元提供较高ECC覆盖。

图3示出根据参考图2讨论的实施例管理存储器设备110的指令310。如上所述,从存储器阵列210提取数据111和关联第一ECC位112。当数据111中存在不可校正错误时,发送校正数据111(第一ECC校验器215输出的),并且报告可校正错误。当错误不是可校正错误(即,错误是不可校正错误(UE))时,参考扩展ECC表230。当在扩展ECC表230中发现对应于具有不可校正错误的数据111的地址114时,与第二ECC校验器225一起使用对应于相同地址114的第二ECC位113,并且发送校正数据111。当利用第二ECC位113不能校正不可校正错误时,报告不可校正错误。当在扩展ECC表230中不能发现具有对应于不可校正错误的数据111的地址114(即,没有对应于具有不可校正错误的数据111的第二ECC位113)时,报告不可校正错误。

图4示出根据实施例用于对扩展ECC表230创建或者附加的指令410。图4所示的示例性指令将DRAM作为存储器设备110。作为存储器控制器的处理系统120可以处理示例性指令。该示例性指令基于每地址,但是在替换实施例中,可以保持历史缓冲器,使得可以将要求第二ECC位113的所有地址114一次性附加到扩展ECC表230。如指令指出的,当发生读出错误(即,从存储器阵列210读出的数据111中存在错误)时,再试读出,以确定其是硬(永久)错误还是不要求附加ECC位的软错误。如果读出再试后存在不可校正错误,则使存储器设备110(DRAM)的错误计数器递增,并且如果超过可校正错误的阈值数,则计算第二ECC位113,并且将该第二ECC位113附加到扩展ECC表230。如果读出数据中存在不可校正错误,则校正该错误,并且对于具有不可校正错误的数据111的地址114,计算第二ECC位113并且将该第二ECC位113附加到扩展ECC表230。图4所示的指令指出扩展ECC表230用于阈值数量的可校正错误和不可校正错误。在替换实施例中, 扩展ECC表230可以只用于不可校正错误或者用于所有错误。最后,选择什么和选择多少包括在扩展ECC表230中是增强纠错能力和附加资源使用量的扩展ECC表230形式的折衷。

图5是根据另一个实施例包括扩展ECC表230的存储器设备110。图5中未再次具体示出第一ECC校验器215、第二ECC校验器215和缓冲器250,但是图5的实施例不会这些部件。本实施例涉及在存储器阵列210中包含指示符位(IB)510。IB 510指出存储器阵列210中的数据111是否具有扩展ECC表230中的相应第二ECC位113。因为IB 510,避免了参考图3讨论的在扩展ECC表230中查找第二ECC位113并且可能未找到条目的步骤。此外,当IB 510指出第二ECC位113对数据111可用时,可以完全避免利用第一ECC位112(和第一ECC校验器215)的校正。

图6示出根据参考图5讨论的实施例管理存储器设备110的指令610。如示例性指令指出的,校验与从存储器阵列210获取的数据111对应的IB510。如果IB 510是0并且存在可校正错误,则利用与数据111对应的第一ECC位112(利用第一ECC校验器215)校正数据111。发送校正数据111和可校正错误的报告。如果IB 510不是0(即,IB是1),则使用第二ECC位113,并且指令指出存储器设备110应当校正可校正错误并且发送校正数据111或者报告不可校正错误。

图7是根据又另一个实施例包含扩展ECC表230的存储器设备110。在图7所示的实施例中,存储器阵列210不仅仅包含与数据111结合的第一ECC位112。当指示符位(IB)510是1时,第二ECC位710的第一部分包含于存储器阵列210中。第二ECC位720的第二部分位于扩展ECC表230中。越强的纠错要求越多位(越多存储)的ECC位。因此,根据本实施例的一些数据111没有与其关联的第一ECC位112,但是具有作为第二ECC位710的第一部分和第二ECC位720的第二部分的组合的较强第二ECC位。此外,第一ECC校验器215、第二ECC校验器225和缓冲器220未示出,但是用于数据111校正。

图8示出根据参考图7讨论的实施例管理存储器设备110的指令810。与参考图6所示的指令610讨论的实施例类似,校验与从存储器阵列210提取的数据111对应的IB 510。如果IB 510是0并且存在可校正错误,则利用与数据111对应的第一ECC位112(利用第一ECC校验器215)校正数据111。 发送校正数据111和可校正错误的报告。如果IB 510不是0(即,IB是1),则从存储器阵列210提取第二ECC位710的第一部分,并且从扩展ECC表230提取第二ECC位720的第二部分,以构成完整第二ECC字。该字用于校正数据111,并且发送校正数据111或者用于确定并且报告不可校正错误。

图9是根据又另一个实施例包含扩展ECC表230的存储器设备110。在图9所示的实施例中,与图7所示的实施例类似,存储器阵列210不仅仅包含与数据111结合的第一ECC位112。当指示符位(IB)510是1时,第二ECC位910位于存储器阵列210中,并且第三ECC位920位于扩展ECC表230中。第二ECC位910仅用于错误识别,并且比第一ECC位112具有更强的错误检测能力。当IB 510是1时,第二ECC位910用于错误检测,但是扩展ECC表230中的第三ECC位920必须用于校正数据111。此外,第一ECC校验器215、第二ECC校验器225和缓冲器220未示出,但是用于数据111校正。

图10示出根据参考图9讨论的实施例管理存储器设备110的指令1010。与前面讨论的实施例相同,当IB 510是0时,与提取数据111对应的第一ECC位112用于校正可校正错误,发送校正数据111以及报告可校正错误。当IB510是1时,存储器阵列210中的第二ECC位910用于错误检测。当数据111中不存在错误时,发送数据111。如果第二ECC位910指出数据111中的错误,则从扩展ECC表230中提取第三ECC位920。当存在可校正错误时,利用第三ECC位920(和第二ECC校验器225)校正数据111并且发送校正数据111。当存在不可校正错误时,报告其。

图11是根据又另一个实施例包含扩展ECC表230的存储器设备110。与前面讨论的都包含缓冲器220、第一ECC校验器215和第二ECC校验器225的实施例不同,除了第一ECC校验器215,本实施例可以不要求第二ECC校验器225,如下所做的进一步讨论。当指示符位IB 510是1时,其指出第二ECC位1110与数据111结合存储于存储器阵列210中,并且数据1120的准确拷贝存储于扩展ECC把230中。数据1120的准确拷贝可以用作校正数据111。在这种情况下,不需要第二ECC校验器225。作为一种选择,可以利用一个版本的第二ECC校验器225将数据1120的准确拷贝与存储器阵列210中的数据111进行比较。

图12是根据又另一个实施例包含扩展ECC表230的存储器设备110。 根据本实施例,存储器阵列210包含与数据111关联的ECC位1210。因此,存储器阵列210与前面的存储器设备的标准存储器阵列类似。该实施例中的扩展ECC表230包含与地址114关联的并发位1220。通过指出地址114和关联错误类型(并发位1220),并发位1220有助于健康监视存储器设备110。在下面对图13的讨论中进一步清楚地说明该健康监视。在本实施例中不需要第二ECC校验器225,但是仍需要第一ECC校验器215和缓冲器220(未示出)。

图13示出根据参考图12讨论的实施例管理存储器设备110的指令1310。如指令指出,提取数据111和ECC位1210。如果检测到错误,则假定其是可校正的。利用ECC位1210校正数据111,并且发送校正数据111。然后,在扩展ECC表230中搜索数据111的地址114。如果未找到地址114,或者如果与扩展ECC表230中的地址114关联的并发位1220与当前错误不同,则将地址114和数据111附加到缓冲器220。利用提醒引脚(alert pin)或者通过破坏读出的下一个数据111,发送警示标志。当存储器控制器(处理系统120)收到警示标志时,其将该信息存储于缓冲器220中,并且确定是否将该地址114和并发位1220附加到扩展ECC表230。在扩展ECC表1220中找到的并发位1220指出数据111中的错误是已知错误。在这种情况下,对于例如将生成重复错误的固定型存储器单元(stuck memory cell),不中断读出过程。

图14示出扩展ECC表230的替换实施例。不将准确地址114存储于扩展ECC表230中,而代之以基于散列函数1420存储散列密钥1410。这样节省扩展ECC表230的存储器使用量。

在此使用的技术术语仅出于描述特定实施例的目的,并且不旨在限制本发明。如在此使用的单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文另外清楚地指出。还应当明白,当在本说明书中使用时,术语“包括”和/或者“含括”指明存在所述的特征、整数、步骤、操作、元件、和/或者组件,但不排除存在或者附加一个或者多个其他特征、整数、步骤、操作、元件、组件、和/或者这些的组合。

下面的权利要求中的所有装置加功能要素或者步骤加功能要素的相应结构、材料、动作和等同旨在包含与其他要求保护的要素组合执行功能的任何结构、材料或者动作,如具体要求保护的。出于说明和描述的目的提供了本发明的描述,但是本发明的描述不旨在是穷举的,也不旨在使本发明局限于 所公开的型式。对于本技术领域内的普通技术人员,许多修改和变型显而易见,而不脱离本发明的范围和精神。为了最佳地解释本发明的原理和实际应用并且为了本技术领域内的其他普通技术人员理解本发明,选择并且描述了实施例,为了适应设想的特定用途,各种实施例具有各种修改。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全 地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,生成了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以生成计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中 所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

提供对本发明的各种实施例的描述是出于说明的目的,而且不旨在穷举的或者局限于所公开的实施例。对于本技术领域内的普通技术人员,许多修改和变型显而易见,而不脱离所描述的实施例的范围和精神。为了最佳解释实施例的原理、实际应用或者市场中存在的技术的技术进步或者为了使本技术领域内的普通技术人员能够理解在此公开的实施例,选择在此使用的技术术语。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1