从存储器设备读出错误向量的制作方法

文档序号:11864523阅读:158来源:国知局
从存储器设备读出错误向量的制作方法与工艺

本发明涉及存储器管理,并且更具体地,涉及从存储器设备读出错误向量。



背景技术:

诸如动态随机存取存储器(DRAM)的存储装置典型地包括纠错能力。纠错编码(ECC)位经由编码器编码到存储在DRAM中的数据。当从DRAM读出数据时,使用解码器以基于ECC位获得正确数据。解码器产生错误向量,所述错误向量与原始数据(在异或操作中)组合以获得纠正数据。



技术实现要素:

根据实施例,一种存储器管理系统包括:控制器,其配置成接收读取命令并且基于读取命令控制存储器设备;所述存储器设备,其配置成存储原始数据和纠错编码(ECC)位并且输出与在读取命令中指定的存储器地址对应的原始数据和ECC位;ECC解码器,其配置成基于由所述存储器设备输出的与存储器地址对应的原始数据和ECC位输出与存储器地址关联的错误向量,与存储器地址关联的错误向量指示与存储器地址对应的原始数据中的错误;以及多路复用器(MUX),其配置成基于在读取命令中指示的选择输出错误向量。

根据另一实施例,一种管理由存储原始数据和纠错编码(ECC)位的存储器设备产生的输出数据的方法包括:接收读取命令,读取命令包括所述存储器设备内的一个或多个存储器地址的指定;从所述存储器设备输出与一个或多个存储器地址对应的原始数据和与一个或多个存储器地址对应的ECC位;解码与一个或多个存储器地址对应的原始数据和ECC位以输出与一个或多个存储器地址关联的错误向量,与一个或多个存储器地址关联的错误向量指示与一个或多个存储器地址对应的原始数据;以及基于在读取命令中指示的选择作为输出数据输出与一个或多个存储器地址关联的错误向量。

通过本发明的技术实现附加特征和优点。本发明的其他实施例和方面在本文中详细地描述并且视为本发明的权利要求的一部分。为了更好地理解具有优点和特征的本发明,参考说明书和附图。

附图说明

在说明书结尾处的权利要求中特别地指出并且明确地要求视为本发明的主题。从结合附图进行的以下详细描述显而易见本发明的前述和其他特征和优点,其中:

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

图2示出根据实施例的由两个不同命令产生的输出数据;

图3示出根据另一实施例的由两个不同命令产生的输出数据;

图4示出根据又一实施例的由两个不同命令产生的输出数据;

图5显示根据实施例的用于示例性错误向量的示例性压缩算法;

图6示出根据实施例的在可纠正错误的情况下的示例性数据和错误向量位;

图7示出根据实施例的在不可纠正错误的情况下的示例性数据和错误向量位;

图8示出根据另一实施例的在不可纠正错误的情况下的示例性数据和错误向量位;

图9示出根据实施例的用于不同场景的错误向量;

图10示出根据另一实施例的用于不同场景的错误向量;

图11是根据实施例的存储器管理系统的命令解码器的示例性实现方式;

图12是使用根据实施例获得的错误向量的方法的处理流程;

图13是使用根据实施例获得的错误向量的另一方法的处理流程;以及

图14是使用根据实施例获得的错误向量的又一方法的处理流程。

具体实施方式

如上所述,当从存储器装置读出时,对存储在存储器装置(例如,DRAM)中的数据编码的ECC位用于获得正确数据。通过组合原始数据和也存储的解码ECC位纠正存储在存储器装置中的原始数据中的任何错误。具体地,ECC位的解码生成错误向量,所述错误向量与原始数据组合(例如,异或XOR) 以提供纠正数据。尽管提供用错误向量获得的纠正数据,但是错误向量自身不是当前可获得的。然而,错误向量可以用于获得便于改善存储器管理的信息。例如,包括地址信息的错误向量指示错误的地址位置,便于监视错误(例如,它们的频率,在某些存储器位置的集中度),和获得纠正数据所需的纠正的程度。这些例子不是可以从错误向量获得的信息的穷举。以前,标记针指示器或其他机构可以用于向存储器控制器指示错误。然而,存储器控制器必须停止读取操作并且读取存储器设备的内部寄存器以确定错误的存储器位置。尽管附加的标记针将防止需要确定存储器位置的处理,但是它们代表相当大的附加资源使用。本文中详细描述的系统和方法的实施例涉及获得错误向量而没有性能代偿或需要附加资源。也就是说,下面所述的实施例不是类似于以前的方法的停止并检查方法并且不需要附加的针或其他资源。

图1是根据本发明的实施例的存储器管理系统100的方块图。存储器管理系统100可以由访问多个存储器设备110的存储器控制器10访问。存储器控制器10包括存储指令的一个或多个存储器设备和执行指令的一个或多个处理器。下面参照图12-14论述由存储器控制器10执行的示例性处理。存储器设备110显示为具有存储在其中的数据113和ECC位115。在存储器设备110中数据113用ECC位115编码。输入命令解码器155的命令153导致解码命令155。命令153在下面进一步进行论述并且可以来自存储器控制器10。基于解码命令155,初始化从存储器设备110读出的数据。数据读出包括读出原始数据113以及ECC位115。相应原始数据113和ECC位115将从存储器设备110输出的存储器地址或地址范围在读取命令153中指定。ECC解码器120使用数据113和ECC位115生成错误向量125。部件130(例如,异或(XOR)数字逻辑门)操作原始数据113和错误向量125以输出纠正数据135。根据一个实施例,错误向量125指示在纠正数据135中纠正的原始数据113中的错误的位置。下面进一步论述其他实施例。解码命令155也提供给MUX 140并且根据实施例用于作为输出数据145输出纠正数据135或错误向量125。在替代实施例中,MUX 140输出数据145可以是原始数据113或者可以包括错误向量125的压缩版本,如下面进一步所述。命令153可以包括指定输出数据145是否将是错误向量125的一个或多个位(例如,当不将输出错误向量125时位EV=0并且当将输出错误向量125时EV=1)。在替代实施例中,相同的一个或多个位或不同的位组可以用于指定由MUX 140输出的 输出数据145是否将是原始数据113。下面论述指定其他输出数据145选项的其他实施例。输出数据145可以提供给存储器控制器10。下面论述示例性读出。

图2-4示出根据三个不同实施例的示例性读出。在每个实施例中,输入命令153导致来自MUX 140的特定输出数据145。尽管未明确地论述原始数据113而不是纠正数据135作为输出数据145输出的实施例,但是在图2-4所示的实施例中可以基于命令153输出原始数据113而不是纠正数据135。这可以通过在命令153中设置位(例如,RV)实现以指示原始数据113将由MUX 140作为输出数据145输出。

图2示出根据实施例的由两个不同命令153产生的输出数据145。第一命令153(读取1)包括设置为0的错误向量位(例如,EV),指示将不输出错误向量125。因此,输出纠正数据135(或替代地,原始数据113),如图2中的箭头指示。示例性纠正数据135在图2中为32位,但是该例子不旨在限制纠正数据135的长度或提供输出数据145的数据总线的布置。当发出EV设置为1的另一命令153(读取2)时,指示将输出错误向量125,作为输出数据145提供错误向量125。命令153(EV=1的读取2)可以在某个指定数量的正常读取命令153(EV=0的读取1)之后发出(例如,每100个读取命令)或者可以基于事件或根据另一触发器发出。

图3示出根据另一实施例的由两个不同命令153产生的输出数据145。第一命令153(读取1)包括设置为0的错误向量位(例如,EV),指示将不输出错误向量125。因此,并且类似于图2中所示的实施例,作为输出数据145输出纠正数据135。在替代实施例中,可以作为输出数据145输出原始数据113而不是纠正数据135。当发出EV设置为1的另一命令153(读取2)时,根据本实施例结果不同图2中所示的实施例。当EV设置为1时,作为输出数据145输出纠正数据135(或原始数据113)和错误向量125两者。因此,在数据为32位的示例性示出的情况下,当EV设置为1时作为输出数据145输出64位。当EV=0时和当EV=1时输出的纠正数据135的地址范围可以不同(但是可以相同)并且取决于在命令153中指定的地址范围。如图2和3的比较指示,图3中所示的实施例便于与数据(113或135)的读出一起读出错误向量125,但是由于输出数据145中的附加位需要更多的时间。实际上,相比于图2中所示的实施例在图3中所示的实施例中(对于读取2) 需要两倍之多的时间。

图4示出根据又一实施例的由两个不同命令153产生的输出数据145。图4显示表示图2和3中所示的实施例之间的中间方案的实施例。再次地,对于EV设置为0的第一命令153(读取1),输出数据145是纠正数据135(或数据113)。当发出EV设置为1的另一命令153(读取2)时,结果输出数据145包括压缩错误向量125’以及纠正数据135。也就是说,将错误向量125(对于图3中所示的例子中的每个总线长为8位)压缩(到2位)。可以根据图5中所示的示例性算法执行压缩。该实施例表示图2和3中所示的实施例之间的中间方案,原因是来自错误向量125的信息不代替数据(135或113)传送,图2中所示的实施例就是如此,但是相比于图3中所示的实施例,当EV设置为1时需要更少的数据和因此更少的时间以提供输出数据145。图5显示根据实施例的用于示例性错误向量的示例性压缩算法。表510指示如何将四位压缩到一位。表510中的符号||指示逻辑或操作。

图6示出根据实施例的在可纠正错误的情况下的示例性数据和错误向量位。原始数据113包括具有错误的一位(阴影)。该位在纠正数据135中纠正并且指示为错误向量125的相应位中的错误。当错误向量位(EV)设置为0时输出数据145是纠正数据135。根据上面参照图2-4所述的实施例,当EV设置为1时输出数据145可以是三个不同位组中的一个。输出数据145可以是单独的错误向量125(如图2中所示),纠正数据135和错误向量125(如图3中所示),或纠正数据135和错误向量125’的压缩版本(如图4中所示)。图6中所示的例子包括可纠正错误。下面论述包括指示不可纠正错误的模式的示例性实施例。

图7示出根据实施例的在不可纠正错误的情况下的示例性数据和错误向量位。原始数据113包括具有错误的两位(阴影)。具有错误的位可能是不可纠正的,例如原因是关于哪些位特别有错误的信息可能通过ECC位115不可获得。因此,错误可检测但是不可纠正。根据本实施例,在该情况下,纠正数据135与原始数据113相同,但是错误向量125是指示一个或多个不可纠正错误的预定模式(例如,该例子中的所有‘1’)。图8示出根据另一实施例的在不可纠正错误的情况下的示例性数据和错误向量位。在图8所示的实施例中,纠正数据135和错误向量125都是指示原始数据113中的不可纠正数据的存在的预定模式(并且可以是相同或不同模式)。

图9示出根据实施例的用于不同场景910-940的错误向量125。根据由图9示出的实施例,错误向量125指示ECC位115以及原始数据113中的错误位。在场景910中当原始数据113或ECC位115中没有错误时,错误向量125全部为0。对于在原始数据113中具有可纠正错误并且在ECC位115中没有错误的场景920,在错误向量125中相应位设置为1(所有其他位设置为0)。在场景930中,在原始数据113中没有错误但是在ECC位115之一中有错误。应当注意错误向量125的位的数量与原始数据113的位的数量相同使得没有指示ECC位115中的错误的备用位,模式(针对阴影位显示)用于指示ECC位115中的错误在位935处显示。与错误ECC位115对应的位935内的错误向量125中的位设置为1,而位935内的其他位设置为0。在场景940中,在原始数据113中检测到不可纠正错误。在该情况下,以类似于图7和8中所示的实施例的模式生成错误向量125。但是场景910-940不是穷举的(例如,场景910-940的组合)。

图10示出根据另一实施例的用于不同场景1010-1050的错误向量125。根据由图10示出的实施例,错误向量125不仅指示访问的原始数据113和ECC位115中的错误而且指示未访问的原始数据113中的错误。该实施例涉及针对访问的数据113和未访问的数据113’计算的ECC位115。存储器设备110使用ECC位115和附加位覆盖两倍之多的数据113(例如,64位而不是仅仅32位)。在本文中论述的例子中未访问的数据113’存储在存储器设备110中但是不作为原始数据113读出。当在访问的数据113、未访问的数据113’或ECC位115中没有错误时,如在场景1010中,错误向量125全部包括0。如在场景1020中,当在访问的数据113中有可纠正错误时,在错误向量125的相应位中指示错误位。当未访问的数据113’包括可纠正错误时,如在场景1030中,错误向量125是指示与ECC位115关联的两个数据集(113、113’)中的一个中有错误的模式。替代地,错误向量125可以全部为0以指示访问的数据113不包括任何错误。在场景1040中,在ECC位115中有可纠正错误。该场景1040导致类似于场景930的模式,并且也导致ECC位115中的错误位的错误向量125中的指示。当在访问的数据113中有不可纠正错误时,如在场景1050中,错误向量125是类似于场景940的模式。

图11是根据实施例的存储器管理系统100的命令解码器150的示例性实现方式。设置为输入解码器150的命令153的不同位包括EV位。如图11指 示,模式寄存器1110可以用于启用或禁用EV读出位。

图12-14示出由使用存储器管理系统100的存储器控制器110执行的示例性处理流程。图12是使用根据本文中所述的实施例获得的错误向量的方法的处理流程。例如,本实施例涉及正常读取。在方块1210,进行EV设置为0的读取操作(读取1),指示将不输出错误向量125。然后在方块1220确定纠正数据135是否是预定模式。例如,如图8中所示,是预定模式的纠正数据135可以指示不可纠正错误。当纠正数据135是预定模式时,然后在方块1230,进行EV设置为1的另一读取(读取2),指示将输出错误向量125。根据上述的各种实施例基于在命令153中设置的其他位,该第二读取可以附加地要求输出原始数据113或纠正数据135。在方块1240,基于错误向量125,确定在原始数据113中是否有不可纠正错误。当确定在原始数据113中有不可纠正错误时,在方块1250进行错误恢复。错误恢复可以是任何已知技术。当确定纠正数据135不是预定模式(在方块1220)或者确定在原始数据113中没有不可纠正错误(在方块1240)时,继续正常操作的处理在方块1260继续。例如该处理可以包括从存储器设备110读取附加数据。

图13是使用根据实施例获得的错误向量的另一方法的处理流程。例如,本实施例涉及存储器清理处理,其中根据需要读取并且纠正存储器设备110的存储器位置。在纠正数据已回写之后错误保持的存储器位置可以说是具有硬错误,而错误不保持的存储器位置可以说是具有软错误。在方块1310,进行EV设置为0的第一读取(读取1),指示将不输出错误向量125(即,将仅仅输出数据(113或135)),接着进行EV设置为1的第二读取(读取2),指示将输出错误向量125。在方块1320,确定在数据(113或135)或错误向量125(例如,错误向量125是预定模式)中是否有错误。当在数据113、135或错误向量125中有错误时,在方块1330将正确数据写入存储器位置。在该纠正之后接着在方块1340进行另一组读取(读取1和读取2)。在方块1350,确定在数据113、135或错误向量125中是否有错误。当在该阶段(在方块1330纠正之后)在数据113、135或错误向量125中(仍然)有错误时,在方块1360将错误记录在错误日志中。当在方块1330纠正之后在数据113、135或错误向量125中没有错误时,在方块1370记录软错误。在硬或软错误记录(方块1360或1370)之后或者当在第一组读取(在方块1310)之后(在方块1320)确定在数据113、135或错误向量125中没有错误时,处理继续。 直到已读取存储器设备110的每个存储器位置,继续包括进入存储器设备110的下一个地址或存储器位置。

图14是使用根据实施例获得的错误向量的又一方法的处理流程。类似于参照图13所述的例子,图14中所示的实施例涉及存储器清理处理。在方块1410,进行EV设置为1的读取,指示将输出错误向量125。例如,如参照图3所述,可以附加地输出数据(113和/或135)。在方块1420,确定在数据113、135或错误向量125中是否有错误。如果在方块1420发现错误,在方块1430执行EV设置为0的另一读取,指示将不输出错误向量125。在方块1440,将纠正数据回写到具有错误(在方块1420确定)的(一个或多个)存储器位置。然后,在方块1450,执行EV设置为1的另一读取。在方块1460,确定在数据113、135或错误向量125中是否有错误。如果再次有错误,则错误是永久的并且在方块1470记录为硬错误。如果在该读取(在方块1450)之后没有错误,则错误在方块1480记录为软错误。在硬或软错误记录(方块1470或1480)之后或者当在第一读取(在方块1410)之后(在方块1420)确定在数据113、135或错误向量125中没有错误时,处理继续。直到已读取存储器设备110的每个存储器位置,继续包括进入存储器设备110的下一个地址或存储器位置。

本文中使用的术语仅仅是为了描述特定实施例并且不旨在限制本发明。当在本文中使用时,单数形式“一”和“所述”旨在也包括复数形式,除非上下文另外清楚地说明。还将理解当在该说明书中使用时,术语“包括”和/或“包含”指定所述特征、整数、步骤、操作、要素和/或部件的存在,单数不排除一个或多个其他特征、整数、步骤、操作、要素部件和/或它们的组合的存在或加入。

以下权利要求中的相应结构、材料、行动和所有手段或步骤加功能要素的等效物旨在包括用于与其它权利要求的要素组合执行功能的任何结构、材料或行动,如权利要求具体所述。本发明的描述为了图示和描述而提出,但是不旨在穷举或以公开的形式限制到本发明。本领域的普通技术人员将显而易见许多修改和变化而不脱离本发明的范围和精神。为了最佳地解释本发明的原理和实际应用选择和描述实施例,并且使本领域的普通技术人员能够理解本发明以便获得具有适合于特定预期使用的各种修改的各种实施例。

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

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

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

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

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

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

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

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

本发明的各种实施例的描述为了举例说明而提出,但是不旨在穷举或限制到公开的实施例。本领域的普通技术人员将显而易见许多修改和变化而不脱离所述实施例的范围和精神。为了最佳地解释实施例的原理、实际应用或胜过在市场上发现的技术的技术进步选择本文中使用的术语,或者使本领域的普通技术人员能够理解本文中公开的实施例。

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