用于校正从存储器装置访问的数据中的错误的设备及方法
【专利摘要】本发明提供了一种用于校正在从存储器装置访问的数据中的错误的设备及方法。执行读操作以从存储器装置输出多个读取符号。随后根据多个读取符号确定伴随式信息,之后纠错电路使用伴随式信息执行纠错过程以定位含有错误的读取符号并校正在这些定位读取符号中的错误。若含有错误的读取符号是随机分布的,则可以此方式定位且校正多达PMAX个读取符号。错误追踪电路被配置在检测到达到错误阈值条件时,将至少一个存储器区域设置为擦除存储器区域。纠错电路将擦除存储器区域的每个读取符号视为含有错误的定位读取符号,从而使得:当执行纠错过程时,并非所有的待定位读取符号都是随机分布的且因此可定位及校正多于PMAX个含有错误的读取符号。
【专利说明】用于校正从存储器装置访问的数据中的错误的设备及方法
【技术领域】
[0001]本发明涉及用于校正从存储器装置访问的数据中的错误的设备及方法。
【背景技术】
[0002]使用纠错码(error correction codes, ECC)来保护数据包免受各种形式的数据损坏是众所周知的。通常,这是通过将数据包视为一系列固定长度的数据符号并接着添加若干ECC符号以使数据符号及ECC符号共同形成码字来实现的。如果利用该技术在形成码字时添加了 m个ECC符号,则多达m/2个随机定位符号错误可在码字内被定位及校正。存在各种已知的用于生成码字的符号的ECC编码技术。举例而言,一种技术使用里德所罗门码(Reed Solomon code),里德所罗门码是基于伽罗瓦域(Galois field)数学的并且具有使其适合于硬件实现的性质。
[0003]该ECC编码技术的一种实际应用是在存储器装置方面,例如使用DRAM (动态随机存取存储器)的存储器装置。这种存储器装置的一个已知布置包括提供若干的双列存储器模块(Dual Inline Memory Module,DIMM),其中每个DIMM由电路板上的若干DRAM芯片组成,DIMM包括至少一个留作存储ECC信息的芯片。通常,此类存储器装置是经由突发访问操作被访问的,每个突发包含多个差拍(beat),并且DIMM的DRAM芯片在每一差拍期间被访问。在这种布置中,公知的是:将要经由突发写访问写入存储器装置的全部数据视为形成的数据包,将接着生成的多个ECC码添加至该数据包中从而形成码字。如先前所述,如果码字包括m个ECC符号,则当随后经由突发读访问从存储器中读取数据时,校正多达m/2个随机定位符号错误可被校正。
[0004]作为具体实例,考虑由九个8位(bit)DRAM芯片(表示在突发访问操作的每个差拍从每个DRAM芯片可存取八位数据)组成的DIMM,然后可提供72位DRAM接口以使得能够在每个差拍访问九个DRAM芯片中的每一个芯片。如果将一个芯片留作存储ECC符号,则每个差拍可存取八位的ECC数据。如果在此实例中再假定每个符号包含八位,则可以看出,在示例性八差拍读操作期间,64个数据符号及8个ECC符号将被存取。这意味着,利用上述提及的特性,多达四个随机定位符号能够是错误的但仍然被校正了。
[0005]然而,经常有此种情况:突发中的差拍的数量超出m/2。举例而言,在上述八差拍读操作的具体实例中,存在八个读取的ECC符号(B卩,m=8),但还存在八个差拍。此外,已经发现:错误倾向于累积在DIMM上的单个芯片中,如果DIMM内的特定芯片发生故障,则很可能在特定突发读操作期间从该芯片存取的全部符号都将是错误的。在此种情况下,将会超出ECC方案的纠错能力。
[0006]一种试图提供对整个芯片故障的恢复力的已知方法是在DIMM内提供更细粒度的芯片。举例而言,考虑前述包含九个8位DRAM芯片的DMM的实例,等效DMM还可由十八个4位DRAM芯片(其中,每个DRAM芯片因此在每差拍提供四位(也称为四位字(nibble))数据)来提供。如果现在每个符号包含4位,则可以看出,两个4位DRAM芯片可用来存储ECC符号,因此在由整个八差拍突发传输形成的码字内产生十六个4位ECC符号。这会使八个4位随机定位符号错误被检测出并被校正,因此允许单个4位芯片故障(其中,对该芯片的所有八次存取输出具有错误的符号)。该方式的问题是它需要更多的芯片及更小的符号大小。更小的符号大小的一个含义是它能限制伽罗瓦域的编码,并因此限制码字的形成。举例而言,在里德所罗门码中,最大的码字是size)。
[0007]另一个已知方式是实际上使突发传输的大小加倍,且并行访问两个DIMM。考虑先前每个DIMM由九个8位DRAM芯片组成的实例,该方式将产生每差拍包括两个ECC符号(其中符号大小为8位)的144位DRAM接口。利用此配置,再次假定八差拍的突发传输,ECC方案显然可用来使两个DIMM中的一个避免发生单个8位芯片故障。或者,如果每个DIMM包括4位芯片,则此方式可使两个4位芯片避免发生故障,因为使用4位芯片会产生每差拍四个ECC符号,或总计32个ECC符号(假定八差拍的突发传输),允许十六个随机符号故障,等效于允许每差拍两个符号故障。此方式的缺点是它要求数据在多个DIMM上分布,因此需要额外的存储器资源且也增加了最小存储器存取要求。此外,要假定两个DIMM之间的电路板故障平均时间(Mean Time to Board Failure,MTBF)是不同的,因为不这样的话,如果在两个DIMM中可能同时发生芯片故障,则此方式将不会提供任何益处。
[0008]因此,期望提供一种用于增强对存储器装置的区域内的故障的恢复力的改良机制。
【发明内容】
[0009]从第一方面来看,本发明提供了一种设备,该设备包含:存储器装置,包含多个存储器区域,该存储器装置被配置为存储数据符号及关联的纠错码(ECC)符号;读取电路,该读取电路被配置为执行读操作以从该存储器装置输出多个读取符号,该多个读取符号包含η个数据符号及关联的m个纠错码符号,以及包含来自每个存储器区域的多于一个读取符号,η及m两者都为大于I的整数值;伴随式(syndrome)译码器,该伴随式译码器被配置为根据该η个数据符号及关联的m个纠错码符号确定伴随式信息;纠错电路,该纠错电路被配置为:响应于对指示至少一个读取符号存在错误的该伴随式信息,执行纠错过程来试图定位含有错误的每个读取符号并校正这些定位读取符号中的每一个定位读取符号的错误,若含有错误的读取符号随机分布于该多个读取符号中,多个则该纠错电路被配置为:如果该多个读取符号中含有错误的读取符号不多于PMAX个,使用该纠错过程来定位且校正这些错误;以及错误追踪电路,该错误追踪电路被配置为追踪含有错误的定位读取符号来源于哪些存储器区域,且在检测到错误阈值条件达到时,将该多个存储器区域的至少一个存储器区域设置为擦除存储器区域;该纠错电路响应于由该错误追踪电路设置的擦除存储器区域,将该擦除存储器区域的每个读取符号视为含有错误的定位读取符号,以使得当执行该纠错过程时,并非所有的待定位的读取符号都是随机分布的,且多个该错误校正电路被配置为:若该多个读取符号的不多于X个读取符号含有错误,则定位并校正错误,其中X大于PMAX0
[0010]根据本发明,错误追踪电路追踪含有错误的读取符号定位在存储器装置内的何处,且具体是这些读取符号来源于多个存储器区域中的哪些存储器区域。若达到错误阈值条件,则将至少一个存储器区域设置为擦除存储器区域。一旦已设置了擦除存储器区域,则这影响纠错过程如何使用伴随式信息来试图定位含有错误的读取符号。具体而言,擦除存储器区域的全部读取符号都被视为含有错误,意指含有错误的读取符号的分布不再视为完全随机。这允许含有错误的读取符号的数量增大,同时仍使得纠错过程能够识别且校正这些错误。
[0011]一旦检测到错误阈值条件,通过将至少一个存储器区域视为擦除存储器区域,就会因此在考虑到读取符号内给定数量III个2(1:符号的情况下扩展纠错电路的校正能力。
[0012]在一个实施例中,若擦除存储器区域的读取符号的总数为+则纠错电路被配置为校正在该擦除存储器区域的所有(1个读取符号中的错误,且另外,校正在未设置为该擦除存储器区域的任意存储器区域的多达?个读取符号中的错误,其中:1)=(111 — 0/2,其中III大于或等于+且?及(1为大于或等于0的整数值。
[0013]因此,在没有设置擦除存储器区域的情况下,应了解到听0,且可被定位及校正的错误的最大数量即?嫩X,为!11/2。类似地,可在擦除存储器区域内被定位及校正的读取符号的最大数量,本文称为为%且在此情况下将理解的是?为0,即,将定位及校正擦除存储器区域内的全部III个读取符号,但无法校正未设置为擦除存储器区域的任何存储器区域的其他读取符号。实际上,一旦已设置擦除存储器区域,则可定位及校正擦除存储器区域内的多达III个读取符号,这些读取符号的数量是在假定含有错误的读取符号随机分布时的情况中的读取符号数量的两倍。若错误有可能累积在一或几个存储器区域内,则这会特别有利。举例而言,考虑前述包含多个0狀1芯片的0111的实例,每个芯片可形成存储器区域,且上述方式使得至少一个芯片能被标记为擦除存储器区域,这增大了纠错过程可校正由于该芯片故障而造成的错误的可能性。
[0014]举例而言,在一个实施例中,在读操作期间由读取电路输出的多个读取符号可包含每个存储器区域的多于?嫩X个读取符号。因此,在未设置擦除存储器区域的情况下,不可能定位及校正下列情况:特定故障存储器区域的每个读取符号都是错误的。然而,若将该故障存储器区域设置为擦 除存储器区域,则这会增加可校正错误的数量。具体而言,若故障存储器区域不含有多于III个的读取符号,则可校正该存储器区域的全部读取符号。
[0015]在一个实施例中,读操作为包含多个差拍的突发读操作,且每个存储器区域在每个差拍期间被访问。
[0016]在一个实施例中,在该多个读取符号中存在至少与存在于突发读操作中的差拍一样多的纠错码符号。在一特定实施例中,在突发读操作中存在III个差拍,即,存在与存在于突发读操作中的差拍相同数量的纠错码符号。因此,在该实施例中,若每个差拍从各个存储器区域读取的数据形成读取符号,则一旦存储器区域中的一个存储器区域已经设置为擦除存储器区域,就可校正该存储器区域的每个读取符号。类似地,若在两个连续差拍上从一个存储器区域读取的数据形成读取符号,则一旦两个存储器区域已经设置为擦除存储器区域,就可校正多达两个存储器区域的全部读取符号。
[0017]在一个实施例中,存储器装置包含多个存储器芯片,每个存储器芯片形成一个存储器区域。在一个特定实施例中,存储器装置包含双列存储器模块(0111):每个存储器芯片具有关联的数据信道;并且读操作为包含多个差拍的突发读操作,在每个差拍期间从每个存储器芯片经由与其关联的数据信道读取至少一个数据单元。
[0018]从每个存储器芯片读取的数据单元可采用各种形式。在一个实施例中,该数据单元为一个字节(即,8位)的数据,而在另一个实施例中,该数据单元为四位字(即,4位)的数据。
[0019]在一个特定实施例中,在每一拍期间,每个存储器芯片输出一个字节,且每个读取符号包含这些字节中的一个。在该实施例中,一旦一个故障存储器芯片被识别为擦除存储器区域,则可校正这个故障存储器芯片的每个读取符号。
[0020]在替代实施例中,在每个差拍期间,每个存储器芯片输出一个四位字,且每个读取符号由在连续差拍内的通过相同数据信道输出的两个四位字形成。在该实施例中,一旦两个故障存储器芯片被识别为擦除存储器区域,则可校正多达两个故障存储器芯片的每个读取符号。或者,一个故障芯片可被识别为擦除存储器区域,允许校正该故障存储器芯片的全部读取符号,另外也可校正若干随机分布的错误。
[0021]读取符号可采取各种形式,而在一个实施例中,读取符号形成里德所罗门码字。
[0022]错误追踪电路可以很多方式被配置来确定错误阈值条件是否已出现。在一个实施例中,错误追踪电路被配置为至少基于下列指示来确定是否检测到错误阈值条件,该指示为:对于当前读操作,含有错误的定位读取符号来源于哪些存储器区域。作为特定实例,若确定在当前读操作中已出现PMAX个随机分布错误,但这些错误中的一些(可为这些错误的全部或少于全部)与特定存储器区域相关联,则该模式的错误可使得错误阈值条件被检测至IJ,且因此使得特定存储器区域被标记为擦除存储器区域。
[0023]在一个实施例中,错误追踪电路还保存对于若干先前读操作含有错误的定位读取符号来源于哪些存储器区域的历史记录,且在确定是否检测到错误阈值条件时还参考该历史记录。因此,通过举例的方式,错误追踪电路可被布置为在第一次检测到上述模式的错误时不设置擦除存储器区域,而是仅在对于若干读操作已检测到该模式的错误之后设置擦除存储器区域。这里,在不希望过早设置擦除存储器区域但要在多于PMAX个随机分布错误出现的情况出现之前设置擦除存储器区域之间必须达到平衡,因为若存在多于PMAX个错误,且未设置擦除存储器区域,则纠错电路将通常不能定位且校正这些错误。
[0024]在一个实施例中,一旦擦除存储器区域已被设置,则错误追踪电路被配置为保存设置的擦除存储器区域直至执行重置操作。或者,错误追踪电路可被配置为保存擦除存储器区域中有多少读取符号确实随着时间产生错误的记录,且若该数量开始降低到导致将设置擦除存储器区域的数量(例如,因为在实践中错误出现并非表示芯片故障,而仅为现在已消失的瞬时错误),则错误追踪电路可被布置为清除擦除存储器区域,允许在适当时候再次重置擦除存储器区域。
[0025]纠错过程可采用各种形式。在一个实施例中,由纠错电路执行的纠错过程包含:a)试图使用伴随式信息作为输入来求解错误位置多项式;b)若在该步骤(a)求解出错误位置多项式,则通过确定求解的错误位置多项式的根来识别含有错误的每个读取符号;以及c)使用根及伴随式信息来确定在步骤(b)识别的读取符号的校正值。
[0026]在一个实施例中,错误位置多项式具有多个参数,该多个参数可在试图求解错误位置多项式的步骤(a)期间变化,并且如果设置了擦除存储器区域,则纠错电路被配置为固定多个参数的至少一个子集的值,这些被固定的值取决于被设置为擦除存储器区域的至少一个存储器区域。
[0027]若存储器擦除区域未被设置,且在该步骤(a)无法求解错误位置多项式,则在一个实施例中可认为,错误的数量超过PMAX,于是无法定位及校正这些错误。丨勺待定位的读取符号都是随机分布的,并且有错误,则该纠错过程定位且校正错误,其
「,该设备包含:存储器器件,用于存储数据包含多个存储器区域;读取器件,用于执行述多个读取符号包含II个数据符号及关联域的多于一个读取符号,II及III两者都为大?个数据符号及关联的III个纠错码符号确定汉符号存在错误的该伴随式信息,用于执行且校正这些定位读取符号中的每一个定位I分布在该多个读取符号中,并且如果该多:个,则该纠错器件使用该纠错过程来定位含有错误的定位读取符号来源于哪些存储捋所述多个存储器区域的至少一个存储器于由该错误追踪器件设置的擦除存储器区1为含有错误的定位读取符号,以使得当执[0034]图4八及图48根据一个实施例示出了可在图1的0111中使用的芯片以及在每个差拍期间存取的关联数据单元的两个示例布置;
[0035]图5八根据一个实施例示出了符号映射,而图58根据该实施例示出了可使图1的错误位置追踪器将一个芯片设置为擦除存储器区域的错误阈值条件的实例;以及
[0036]图6八根据替代实施例示出了符号映射,图68示出了可导致一个芯片被设置为擦除存储器区域的错误阈值条件的实例,并且图6(:根据该替代实施例示出了可导致第二个芯片也被标记为形成的擦除存储器区域的另一个错误阈值条件的实例。
【具体实施方式】
[0037]图1为根据一个实施例的设备的框图。在此实施例中,011140由多个0狀1芯片42、44、46、48、50组成,并且对01丽40的写访问和读访问二者以包含多个差拍的突发访问来执行。写/读访问单元35用于在突发访问的每个差拍期间访问01丽40。通常,对于突发写操作,数据将在每个差拍期间被写入每个芯片42、44、46、48、50中,且类似地,在突发读操作期间,数据将在每个差拍期间从每个芯片中读取。
[0038]编码器10用于生成与突发写操作的数据相关联的2(1:符号。对于每一差拍,通过路径5为该差拍提供的数据被存储在缓冲器15中,而其他的数据被提供至符号生成器
20。符号生成器20将基于第一差拍的接收到的数据产生预定数量的2(1:符号。此后,当每一后续差拍的数据被接收且被存储在缓冲器15中时,该数据也会被提供至符号生成器20,使得2(1:符号生成器20根据接收到的最新数据更新预定数量的符号。到突发写操作的所有差拍的数据都已经被接收且缓存时,由符号生成器20生成的预定数量的符号接着将成为与突发写操作的全部数据相关联的符号。
[0039]由2(1:符号生成器产生的符号的预定数量将取决于特定实现。然而,在一个实施例中,所生成的2(1:符号的数量与突发写访问中的差拍数量相同。因此,考虑其中突发写访问含有八个差拍的特定实例,则2冗符号生成器20将产生八个2(1:符号。
[0040]在一个特定实施例中,编码器10基于接收到的突发的写入数据生成里德所罗门码字,使用II个数据符号(含有写入数据)及关联的砠个2(1:符号编码该写入数据。本领域技术人员将很好理解符号生成器用于生成与写入数据相关联的2(1:符号的操作,于是该操作在本文中将不进行进一步的讨论。
[0041]一旦2(1:符号生成器20生成2(1:符号,则将这些2(1:符号与来自缓冲器15的数据一起提供至合并区块25,合并区块产生含有数据符号及符号两者的符号序列,该符号序列通过路径30被提供至写/读访问单元35。各种符号从写/读访问单元35被写入011140内的相应芯片中。具体而言,每一芯片将具有与其相关联的数据信道(匕加),数据通过该数据信道被写入芯片内并且从芯片中被读取。来自每一差拍的相应数据通常将通过相关联的数据信道写入至相同芯片。通常,至少一个芯片将留作存储2(1:符号。
[0042]如上所述,在利用突发写访问将数据写入01丽40后,数据还将经由突发读访问从0111中被读取。具体而言,当执行突发读操作时,每一差拍的数据将通过写/读访问单元35读取并且被转发至译码器60。通常,每一芯片将在每一差拍期间被访问,并且数据单元(例如,1个字节数据或四位字数据)将通过与每一芯片关联的数据信道被提供至写/读访问单元35,该数据将从写/读访问单元35经由路径55被传送至译码器60。[0043]读取数据最初被传送至伴随式译码器65,该伴随式译码器65被布置为根据数据符号及关联的ECC符号确定伴随式信息。伴随式译码器通过分析与突发读访问相关联的全部读取符号(数据符号及ECC符号两者)来生成伴随式信息。具体而言,伴随式译码器将这些读取符号除以生成多项式,该生成多项式用来在编码器10内产生ECC符号。若结果为零,则未检测到错误,且通过路径67输出的数据可在无任何修改的情况下从修复电路70经由路径75被传播出去。然而,若结果为非零,则将所得的伴随式信息与路径67上的数据通过路径69 —起发送,以供修复电路70用于试图定位及校正含有错误的任何读取符号。
[0044]以下将更详细地讨论修复电路70的操作,然而实质上,修复电路70试图使用伴随式信息作为输入来求解错误位置多项式。若求解了错误定位多项式,则通过确定所求解的错误位置多项式的根来识别含有错误的每个读取符号。所识别的根及伴随式信息随后可用来确定已经识别为有错误的读取符号的校正值。
[0045]首先,修复电路必须假定含有错误的读取符号是随机分布在突发读访问的多个读取符号中。假定在突发读操作期间从DIMM40读取了 m个ECC符号,则在假定存在至多m/2个符号有错误的情况下,修复电路将能求解错误位置多项式。
[0046]错误位置追踪器85通过路径80接收关于由修复电路识别为含有错误的符号的位置信息。具体而言,错误位置追踪器85监控芯片42、44、46、48、50中的哪个芯片已输出带有错误的符号。若错误模式指示已达到错误阈值条件,则错误位置追踪器85将至少一个芯片设置为擦除存储器区域,且该擦除存储器区域信息通过路径90被输出至修复电路以供在后续突发读操作期间使用。具体而言,一旦芯片被设置为擦除存储器区域,则修复区域随后将该芯片的每个读取符号视为含有错误的定位读取符号。因此,含有错误的读取符号的分布不再视为完全随机,这允许了含有错误的读取符号数量的增大,而仍使得通过修复电路70执行的纠错过程能够识别且校正这些错误。假定全部这些符号都在设置为擦除存储器区域的特定芯片(或多个芯片)内,则此方式最多允许修复电路定位且校正多达m个含有错误的符号(即,校正与在突发读操作中的ECC符号相同数量的符号)。
[0047]图2根据一个实施例更详细地示出了设置于伴随式译码器65及修复电路70内的组件。伴随式译码器65包括分离器区块100,该分离器区块100通过路径67将数据符号传送至修复电路70内的缓冲器110,且还将数据及关联的ECC符号两者路由至伴随式译码区块105,该伴随式译码区块105用来产生通过路径69输出的伴随式信息。若伴随式信息为非零,则将使修复电路70内的错误位置及量值计算区块115执行上述讨论的试图求解错误位置多项式的过程,一旦求解了,随后确定所求解的错误位置多项式的根以识别含有错误的每个读取符号。另外,错误位置及量值计算区块115将确定对于定位读取符号的校正值,且通过路径117输出作为修复模板(mask)的该信息。修复模板是具有与存储在缓冲器110内的读访问的数据相同大小的向量。此向量在对应于错误的位置中包含非零值,而其他所有位置包含零。合并区块120随后通过路径117接收修复模板及通过路径112接收来自缓冲器110的数据两者,且通过使用伽罗瓦域加法器(实施XOR函数)将接收到的数据添加至修复模板来校正所接收到的数据中的错误。这会生成通过路径75输出的校正数据。
[0048]图3为根据一个实施例示出了在图1的设备执行突发读操作时该设备执行的步骤的流程图。首先,在步骤200,突发读操作的每个差拍的数据符号及关联的ECC符号被读取且被提供至伴随式译码器65以使得伴随式译码器能够确定伴随式信息。此后,在步骤205,伴随式信息被输出至修复电路70。在步骤210,修复电路70确定是否已设置了擦除条件,即,错误位置追踪器是否已通过路径90提供了任意设置的擦除存储器区域信息。若否,贝0过程进行至步骤215,其中修复电路迭代地试图通过替换可调整参数来求解错误位置多项式。
[0049]存在很多可以求解错误位置多项式的方式。一种已知方式是使用伯利坎普一梅西算法,该算法由于其对硬件资源的有效利用(例如,与欧几里德(£11(3111 8)算法相比)而经常被使用。该算法迭代地试图通过求解一个接一个的方程式并更新错误位置多项式来求解错误位置多项式。若对于给定步骤该算法无法求解出方程式,则该算法计算错误且衡量该错误,增加错误多项式的大小并执行另一迭代。假定提供了 III个2(1:符号,则需要最多III次迭代。对于2个符号错误,算法给出具有2个系数的多项式。然而,在没有设置擦除条件的情况下,若2大于0/2,则将无法求解错误位置多项式,且数据将不可校正。
[0050]因此,在步骤225,确定是否求解了错误位置多项式,若否,则过程进行至步骤230,其中数据标记为不可校正的,随后,过程结束于步骤235。
[0051]然而,假定求解了错误位置多项式,则过程进行至步骤240,其中计算错误位置多项式的根以识别含有错误的符号的位置。用于求解根的最常用方法为陈氏寻根法((63116=8681-0^, 08).这是对可能符号的穷举搜索,这些符号一个接一个地代入至错误多项式内。若结果为零,则候选符号为根。
[0052]在步骤240后,过程进行至步骤245,计算错误量值,且据此产生校正的数据。在步骤240计算的根界定含有错误的符号位置但不界定错误的量值。根可与伴随式一起使用以获得实际错误值。这可使用例如?011167算法进行。
[0053]一旦已应用算法,就会产生错误向量,在本文也称为修复模板。错误向量在对应于错误的位置中含有非零值,而其他所有位置含有零。如先前参阅图2所描述的,合并区块120使用伽罗瓦域加法器(使用乂01?函数实施)将从缓冲器110接收的数据与错误向量合并,并从伽罗瓦域加法器输出为原始码字(即,被写入01丽40的原始数据)的译码器估计。在步骤245后,过程结束于步骤235。[0054]根据上述图1的实施例,错误位置追踪器85执行与由修复电路70执行的步骤245并行的步骤250。在步骤250,错误位置追踪器85记录每个存储器区域(即,图1实施例中的每个芯片,其中每个芯片形成单独的存储器区域)的错误符号的数量,且随后在步骤255确定是否已达到擦除阈值条件,该擦除阈值条件指示至少一个存储器区域应被设置为擦除存储器区域。可能的错误阈值条件的讨论将在下文中参阅图5八、图58、图6八、图68及图6(:来提供。若检测到错误阈值条件,则过程进行至步骤260,为所识别的存储器区域设置擦除条件,随后过程结束于步骤235。然而,若在步骤255确定未检测到错误阈值条件,则过程直接进行至步骤235。
[0055]一旦已设置擦除条件,则对于后续突发读操作,在步骤210将检测到对于该擦除条件的设置,且过程将分支到步骤220。在步骤220,用于错误位置多项式的至少一些可调整参数的值将基于为其设置了擦除条件的存储器区域(或多个存储器区域)来固定。具体而言,来自擦除存储器区域的全部读取符号被视为含有错误的定位读取符号,在本文称为擦除位置。这些擦除位置被获取为擦除位置多项式(其中擦除位置形成该多项式的根随后,该擦除位置多项式在修复过程开始时被装载至伯利坎普-梅西(Berlekamp-Massey)位置多项式存储内。之后,过程进行至步骤215。
[0056]在经由步骤220进行至步骤215后,增加了求解错误位置多项式的可能性,因为某些参数将具有固定值。另外,由于已在步骤220设置的固定值,因而在此时并行而非顺序地执行一些迭代是可能的。
[0057]应了解的是,一旦设置了擦除条件,全部符号错误被随机定位的情况就不再存在。若随机定位错误的数量由变量P表示,已知位置的符号错误(即,擦除存储器区域内的符号)的数量由变量q表示,之后提供m个ECC符号,则m、p与q之间的关系如下:
[0058]m = 2p+q。
[0059]因此,可以理解的是,当未设置擦除存储器区域时,q = O且可校正最大数量的错误,即P为m/2。然而,一旦设置了擦除存储器区域,则可校正的错误的总体数量会增加。当擦除存储器区域含有m个读取符号,S卩,q = m时,出现可校正的错误的最大数量。在此情况下,可校正全部m个这些符号,但无法校正随机定位错误,即,P = O。
[0060]DIMM40内的芯片42、44、46、48、50可采用各种形式。图4A示出了一个实例,其中每个芯片300为8位DRAM芯片,意指在突发访问操作的每个差拍期间通过关联的字节信道315访问的数据包括八位(即,I字节)的数据。存储阵列为了允许在突发写转移的每个差拍将八位数据写入存储阵列内,或允许在突发读操作的每个差拍期间从存储阵列305读取出八位数据,数据将被存储在存储阵列305内并经由多路布置310被访问。因此一系列字带320、322、324、326可在突发写操作的差拍期间经由字节信道315被存储至芯片300内,且随后相应的数据可在突发读操作的差拍期间读取。
[0061]图4B示出了类似的布置,但在此实例中,芯片350为具有存储阵列355及关联的多路选择器360的4位DRAM芯片。在突发访问的每个差拍期间,4位数据块(称为四位字)可通过关联的四位字信道365输入或输出,且因此通过四位字370、372、374、376所示的,四位字可在突发写操作的每个差拍期间被写入或在突发读操作的每个差拍期间读取。
[0062]图5A根据一个实施例示出了可使用的符号映射(symbol map) 400。在此实施例中,假定DI丽含有九个8位DRAM芯片300,芯片I至芯片8用来存储数据,芯片O用来存储ECC码。因此,这九个8位DRAM芯片为DMM提供了 72位DRAM接口。在此实例中,假定突发访问为8差拍突发访问,从而在每个差拍期间,每个芯片内的I字节数据将被访问。在此实例中,还假定每一符号是由在单个差拍内从每个芯片访问的数据的基本单位形成的,因此每个方块405表示一个符号。因此,在此实例中,在突发读操作期间,可以看出,64个字节数据将与8字节ECC码(形成为八个ECC符号)一起被存取。由上述讨论显而易见的是,若假定含有错误的符号在符号映射400内随机分布,则使用八个ECC符号能够校正符号的最大数量为四。
[0063]图5B示出了可使错误阈值条件达到的示例性情况。在此实例中,假定已定位四个错误(即,在假定符号错误随机分布的情况下可定位及校正的最大数量)。然而,在此实例中,所有这四个错误都在相同的芯片内,即在芯片6内(字母X用来表示含有错误的符号)。在一个实施例中,一旦检测到与芯片6相关联的字节信道存储器存在四个错误,错误位置追踪器85就将芯片6设置为擦除存储器区域。此后,在后续读操作期间,纠错电路将芯片6内的全部八个符号视为错误的,且因为这些位置将全部已知,故随后能够校正全部八个符号。在此实施例中,一旦将芯片中的一个设置为擦除存储器区域,则(1=8且15=0。因此,虽然可校正芯片6内的全部八个符号,但是不可容许其他的随机分布错误。
[0064]此方式是很有用的,因为已发现,在01丽中常有下列情况:一个芯片在其他芯片故障之前发生故障,从而很可能认为错误将累积在单个芯片内。上述方式使得系统能够继续校正故障芯片内的错误,从而有时间呼叫工程师以替换该芯片,并随后清除擦除存储器条件。
[0065]图6八示出了替代的符号映射450,其中十八个4位0狀1芯片被提供以存储数据及 码,此外访问是利用八个差拍的突发来执行的。在此实施例中,芯片0及芯片1两者用
来存储2(1:码,而剩余芯片用来存储数据。由于芯片为4位0狀1芯片,故0111仍提供了 72位0狀1接口,因此在每个差拍期间72位数据及2(1:码被访问。在此实例中,符号仍视为包含八位,具体而言,每个读取符号由在连续差拍内通过相同四位字信道输出的两个四位字形成。因此,每个矩形方块455表示一个符号。正如图5八的实例,在突发读操作的八个差拍的过程中接收八个符号。如现在将参阅图68及图6(:描述的,此方式使得能够容纳多达两个故障芯片。
[0066]具体而言,考虑图68,其示出了已发现四个符号含有错误的情况,此为可容许的随机分布错误符号的最大数量。然而,应注意的是,两个错误在一个芯片内,即在芯片3内。在一个实施例中,通过错误位置追踪器85对该错误模式的检测可用来确定擦除条件的存在,以使芯片3被设置为擦除存储器区域。此后,在后续读操作期间,与芯片3相关联的全部四个符号将假定为错误的。考虑前述方程式111=21)+(1可知,给定八个符号的情况,从而(1为4,?为2。因此,芯片3中可校正多达全部四个符号中的错误,同时仍能够校正两个随机定位符号错误。
[0067]现在考虑图60,这表明了可使第二芯片被添加至擦除存储器区域的错误的模式。问题标记符号与芯片3的符号关联使用,因为芯片3已设置为擦除存储器区域,所以在此时这些符号是否实际上产生错误并不重要,因为在任何情况下芯片3中的每个符号都视为是错误的。除芯片3的四个符号外,已定位了两个其他错误,并且确定两个这样的错误在芯片8内。此时,错误位置追踪器85可另外将芯片8设置为在擦除存储器区域内,以使得对于后续读取操作,芯片3内的全部四个符号及芯片8内的全部四个符号将假定为错误的。考虑之前的方程式111=21)+(1, ^现在等于8,且?为0。因此,可校正芯片3及芯片8内的全部八个符号,但无法容许其他的随机分布符号错误。
[0068]如上述图5八及图58讨论的方式,这样的方式在0111内是很有用的,因为常有个别芯片发生故障的情况,且该方式使得当这些芯片中多达两个芯片发生故障时仍能够校正这些故障芯片中的错误,使得工程师有时间替换这些芯片且清除擦除条件。
[0069]虽然在上述图5及图6的实例中,假定了一确定所描述的错误模式就设置擦除存储器区域,但是在替代实施例中,错误位置追踪器85可保持检测到的错误位置的历史记录,而不是一检测到符合的模式就立即设置擦除存储器区域。举例而言,考虑图68,错误位置追踪器85可以不在第一次检测到该模式就设置擦除存储器区域,而是如果在若干读访问中有规律地检测到四个错误且至少两个错误是经常发现于芯片3内,则可决定将芯片3设置为擦除存储器区域。
[0070]在一个实施例中,一旦已设置擦除存储器区域,则保持设置直至由工程师清除掉(例如替换故障芯片)。然而,另一个选择是错误位置追踪器85继续保存错误位置的日志,如果在若干读取操作之后发现在标记为擦除存储器区域的特定芯片内错误数量未增加或事实上减少,则这可用来确定清除该芯片为擦除存储器区域是合适的。再考虑图6B的实例,例如有可能的是,在芯片3内识别的两个符号错误结果是瞬时错误且不表示芯片3开始发生故障。若为该情况,则在将芯片3设置为擦除存储器区域后,将会看到,芯片3内的符号错误的总体数量不增加且实际上甚至可能下降。
[0071]上述实施例在其中错误趋于积累在特定存储器区域内的存储器装置内提供了显著改进的可操作性。具体而言,根据所述实施例,当已达到校正的界限(基于随机定位符号错误的假定)时,且其中检测到某些数量的错误符号在(与特定存储器区域相关联的)共同的数据信道内,则该存储器区域被视为已经发生故障,从而被设置为擦除存储器区域。这扩展了纠错电路的校正能力,从而在存储器区域向该存储器区域的总体故障恶化时允许系统继续操作。在包含多个DRAM芯片的DIMM的特定实施例中,这提高了在给定数量的ECC符号的情况下对总体芯片故障的容忍度。
[0072]尽管本文已描述特定实施例,但应了解的是,本发明未受限于这些特定实施例,且可在本发明的范围内对本发明进行很多修改及添加。举例而言,在不脱离本发明范围的情况下,可对从属权利要求的特征与独立权利要求的特征进行各种组合。
【权利要求】
1.一种设备,包括: 存储器装置,包含多个存储器区域并且被配置为存储数据符号及关联的纠错码ECC符号; 读取电路,被配置为执行读操作以从所述存储器装置中输出多个读取符号,所述读取符号包含η个数据符号及关联的m个纠错码符号,以及包含来自每个存储器区域的多于一个读取符号,η及m两者都为大于I的整数值; 伴随式译码器,被配置为根据所述η个数据符号及关联的m个纠错码符号确定伴随式信息; 纠错电路,被配置为响应于指示至少一个读取符号中存在错误的所述伴随式信息,执行纠错过程来试图定位每个含有错误的读取符号并校正这些定位读取符号中的每一个中的错误,如果含有错误的读取符号随机分布于所述多个读取符号中,则所述纠错电路被配置为:如果所述多个读取符号中含有错误的读取符号不多于PMAX,使用所述纠错过程来定位且校正这些错误;以及 错误追踪电路,被配置为追踪含有错误的所述定位读取符号来源于哪些存储器区域,并且在检测到达到错误阈值条件时,将来自所述多个存储器区域的至少一个存储器区域设置为擦除存储器区域; 所述纠错电路响应于由所述错误追踪电路设置的擦除存储器区域,将来自所述擦除存储器区域的每个读取符号视为含有错误的定位读取符号,从而使得当执行所述纠错过程时,并非所有的待定位的所述读取符号都是随机分布的,并且如果所述多个读取符号的不多于X个读取符号含有错误,则所述纠错电路被配置为定位及校正所述错误,其中X大于PMAX0
2.如权利要求1所述的设备,其中: 如果所述擦除存储器区域中的读取符号的总数为q,则所述纠错电路被配置为校正在来自所述擦除存储器区域的所有q个读取符号中的错误,另外,校正在未设置为所述擦除存储器区域的任意存储器区域中的多达P个读取符号中的错误,其中:
P= (m — q)/2, 其中m大于或等于q,P及q为大于或等于O的整数值。
3.如权利要求1所述的设备,其中PMAX等于m/2。
4.如权利要求1所述的设备,其中X的最大值QMAX为m。
5.如权利要求3所述的设备,其中: 在所述读操作期间,由所述读取电路输出的所述多个读取符号包含来自每个存储器区域的多于PMAX个读取符号。
6.如权利要求1所述的设备,其中所述读操作为包含多个差拍的突发读操作,且每个存储器区域在每个差拍期间被访问。
7.如权利要求6所述的设备,其中在所述多个读取符号中存在至少与存在于所述突发读操作中的差拍一样多的纠错码符号。
8.如权利要求7所述的设备,其中所述突发读操作中存在m个差拍。
9.如权利要求1所述的设备,其中所述存储器装置包含多个存储器芯片,每个存储器芯片形成所述多个存储器区域中的一个存储器区域。
10.如权利要求9所述的设备,其中: 所述存储器装置包含双列存储器模块01丽; 每个存储器芯片具有关联的数据信道;以及 所述读操作为包含多个差拍的突发读操作,在每个差拍期间从每个存储器芯片经由与其关联的数据信道读取至少一个数据单元。
11.如权利要求10所述的设备,其中所述数据单元为一个字节或者一个四位字。
12.如权利要求11所述的设备,其中在每个差拍期间,每个存储器芯片输出一个字节,并且每个读取符号包含所述字节中的一个。
13.如权利要求11所述的设备,其中在每个差拍期间,每个存储器芯片输出一个四位字,且每个读取符号由在连续差拍内的通过相同数据信道输出的两个四位字形成。
14.如权利要求1所述的设备,其中所述读取符号形成里德所罗门码。
15.如权利要求1所述的设备,其中所述错误追踪电路被配置为至少基于以下指示来确定是否检测到所述错误阈值条件,所述指示为:对于当前读操作,含有错误的定位读取符号来源于哪些存储器区域。
16.如权利要求15所述的设备,其中所述错误追踪电路被配置为保存对于若干先前读操作含有错误的定位读取符号来源于哪些存储器区域的历史记录,并还被配置为在确定是否检测到所述错误阈值条件时参考所述历史记录。
17.如权利要求1所述的设备,其中一旦已设置所述擦除存储器区域,所述错误追踪电路就被配置为保存设置的擦除存储器区域直至执行重置操作。
18.如权利要求1所述的设备,其中由所述纠错电路执行的所述纠错过程包含: 试图使用所述伴随式信息作为输入来求解错误位置多项式; 0若在所述步骤匕)求解出所述错误位置多项式,则通过确定求解的错误位置多项式的根来识别含有错误的每个读取符号;以及 0?使用所述根及所述伴随式信息来确定在所述步骤6)识别的所述读取符号的校正值。
19.如权利要求18所述的设备,其中所述错误位置多项式具有多个参数,所述多个参数在试图求解所述错误位置多项式的步骤匕)期间变化,并且如果设置了所述擦除存储器区域,则所述纠错电路被配置为固定对于所述多个参数的至少一个子集的值,所固定的值取决于设置为所述擦除存储器区域的至少一个存储器区域。
20.一种校正从存储器装置访问的数据中的错误的方法,所述存储器装置包含多个存储器区域,并且被配置为存储数据符号及关联的纠错码符号,所述方法包含以下步骤: 执行读操作以从所述存储器装置中输出多个读取符号,所述读取符号包含II个数据符号及关联的砠个纠错码符号,并包含来自每个存储器区域的多于一个读取符号,II及砠两者都为大于1的整数值; 根据所述II个数据符号及关联的砠个纠错码符号确定伴随式信息; 响应于指示至少一个读取符号存在错误的所述伴随式信息,执行纠错过程以试图定位含有错误的每个读取符号并校正这些定位读取符号中的每一个定位读取符号的错误,若含有错误的读取符号随机分布在所述多个读取符号中,并且如果所述多个读取符号中含有错误的读取符号不多于?心^,则所述纠错过程定位并校正这些错误;追踪含有错误的定位读取符号来源于哪些存储器区域,且在检测到达到错误阈值条件时,将所述多个存储器区域的至少一个存储器区域设置为擦除存储器区域;以及 响应于由所述错误追踪电路设置的擦除存储器区域,将来自所述擦除存储器区域中的每个读取符号视为含有错误的定位读取符号,从而使得当随后执行所述纠错过程时,并非所有的待定位的读取符号都是随机分布的,并且如果所述多个读取符号中的不多于X个读取符号含有错误,则所述纠错过程定位并校正错误,其中X大于PMAX。
21.—种设备,包含: 存储器器件,用于存储数据符号及关联的纠错码符号,该存储器器件包含多个存储器区域; 读取器件,用于执行读操作以从所述存储器器件中输出多个读取符号,所述多个读取符号包含η个数据符号及关联的m个纠错码符号,并包含来自每个存储器区域的多于一个读取符号,η及m两者都为大于I的整数值; 伴随式译码器器件,用于根据所述η个数据符号及关联的m个纠错码符号确定伴随式信息; 纠错器件,响应于指示至少一个读取符号存在错误的所述伴随式信息,用于执行纠错过程来试图定位含有错误的每个读取符号且校正这些定位读取符号中的每一个定位读取符号的错误,若含有错误的读取符号随机分布在所述多个读取符号中,并且如果所述多个读取符号中的不多于PMAX个读取符号含有错误,则所述纠错器件使用所述纠错过程来定位及更正这些错误;以及 错误追踪器件,用于追踪含有错误的定位读取符号来源于哪些存储器区域,且在检测到达到错误阈值条件时,用于将所述多个存储器区域中的至少一个存储器区域设置为擦除存储器区域; 纠错器件,响应于由所述错误追踪器件设置的擦除存储器区域,用于将来自所述擦除存储器区域的每个读取符号视为含有错误的定位读取符号,以使得当执行所述纠错过程时,并非所有的待定位的读取符号都是随机分布的,并且如果所述多个读取符号中的不多于X个读取符号含有错误,则所述纠错器件定位并校正错误,其中X大于PMAX。
【文档编号】G11C29/42GK103839595SQ201310581828
【公开日】2014年6月4日 申请日期:2013年11月19日 优先权日:2012年11月20日
【发明者】迈克尔·安德鲁·坎贝尔, 蒂莫西·尼古拉斯·海 申请人:Arm 有限公司