计算机系统中的纠错方法和装置的制作方法

文档序号:6397302阅读:268来源:国知局
专利名称:计算机系统中的纠错方法和装置的制作方法
技术领域
一般地说,本发明涉及数据处理系统,更具体地说,涉及在计算机系统中,如在高速缓存存储器、总线或通信链路、芯片接口或可以使用纠错代码(ECC)的其他位置中纠正出错数据位的方法和系统。
背景技术
图1中显示一个传统计算机系统10的基本结构。计算机系统10可以有一个或多个处理单元,其中有两个12a和12b示于图中,它们与各种外围设备相连,包括输入/输出(I/O)设备14(如显示监视器、键盘和永久存储设备)、由处理单元用于执行程序指令的存储设备16(如随机存取存储器或称RAM)以及固件18,固件18的主要目的是每当第一次接通计算机时寻找和从外围设备之一(通常是永久存储设备)加载操作系统。处理单元12a和12b借助各种手段与外围设备通信,包括通用化互连器或总线20。计算机系统10可以有许多附加部件(图中未画出),如用于连接到例如调制解调器或打印机的串行、并行和通用总线端口。本领域技术人员还将进一步理解,还可以有其他部件可与图1框图中所示部件结合使用;例如,可使用显示适配器控制视频显示监视器,存储器控制器能用于访问存储器16等。再有,代替把I/O设备14直接连于总线20,它们可以连接到次级(I/O)总线,次级总线再与总线20的I/O桥连接。该计算机能有两个以上的处理单元。
在对称多处理器(SMP)计算机中,所有处理单元通常是完全相同的,就是说,它们全都使用共同的指令和协议集或子集进行操作,并且通常有相同的体系结构。一种典型的体系结构示于图1中。一个处理单元包括一个处理器核心22,它有多个寄存器和执行单元,它们执行程序指令以操作计算机。示例处理单元包括由国际商用机器公司投放市场的Power PCTM处理器。该处理单元还能有一个或多个高速缓存,如指令高速缓存24和数据高速缓存26,它们是用高速存储器设备实现的。高速缓存通常用于暂时存储可能由处理器重复访问的那些值,以通过避免从存储器16加载这些值所用的更长时间的步骤,从而加速处理过程。当这些高速缓存与处理器核心集成组装到单个集成芯片28上时,它们被称作“板上的”高速缓存。每个高速缓存与一个高速缓存控制器(未示出)相关联,它管理处理器核心和高速缓存存储器之间的数据传送。
处理单元12能包括附加的高速缓存,如高速缓存30,它被称作二级(L2)高速缓存,因为它支持板上(一级)高速缓存24和26。换言之,高速缓存30起到存储器16和板上高速缓存之间的中间件的作用,并能存储比板上高速缓存能存储的信息量大得多的信息量(指令和数据),但会以更长时间的访问为代价。例如,高速缓存30可以是一个具有存储容量256或512KB的芯片,而处理器可以是IBM Power PCTM604系列处理器,带有总存储量为64KB的板上高速缓存。高速缓存30与总线20相连,而且从存储器16进入处理器核心22的全部信息加载通常都是通过高速缓存30进入的。尽管图1只描绘了二级高速缓存层次结构,但也能提供多级高速缓存层次结构,那里有许多级互连的高速缓存。
一个高速缓存有许多“块”,它们单独存储各种指令和数据值,在任意高速缓存中的这些块被分成块组,被称作“集(set)”或“同余类(Congruence Class)”。一个集是一个给定存储器块能驻留其中的高速缓存块集合。对于任意给定存储器块,在高速缓存中有根据预置的映射函数该块能被映射其中的一个唯一的集。在一个集中的块数被称作该高速缓存的相联性(associativity),例如,双向集相联(2-way set associative)意味着对任何给定的存储器块在高速缓存中有两块,这两块存储器块可映射到其中;然而,在主存储器中有多个不同的块可以映射到任何给定的集。一个1向集相联高速缓存被直接映射,就是说,只有一个高速缓存块能包含一个特定的存储器块,即有一个同余类,而且地址标记是该存储器块的全地址。
一个示例的高速缓存线(line)(块)包括一个地址标记字段、一个状态位字段,一个包容性(inclusivity)位字段以及一个用于存储实际指令或数据的值字段。状态位字段和包容性位字段用于维持多处理器计算机系统中的高速缓存相干性(指示高速缓存中所存值的有效性)。地址标记是相应存储器块的所有地址的子集。一个输入地址与地址标记字段内的标记之一的比较区配表明一次高速缓存“选中(hit)”。在一个高速缓存中全部地址标记的集合(有时包括状态位和包容位字段)被称作目录,而全部值字段的集合是高速缓存条目阵列(cache entry array)。
对一个给定的高速缓存,当在一个同余类中的全部块都是充满的而那个高速缓存收到一个请求,不论是向映射到该充满的同余类的一个存储器位置的“读”或“写”请求,该高速缓存都必须“驱逐”当前在该类中的一个块。高速缓存利用本领域技术人员公知的多种手段之一去选择要被驱逐的一个块(最近最少使用的(LRU)、随机选取的或伪LRU等)。如果在选定块中的数据正被修改,则该数据被写入存储器层次结构中的次最低级,它可以是另一个高速缓存(在L1或板上高速缓存的情况中)。或主存储器(在L2高速缓存的情况中,如图1的二级体系结构中描绘的那样)。根据包含性原则,层次结构的较低级将已经具有一个可用块去容纳被写入的被修改过的数据。然而,如果在选定块中的数据未曾被修改,则该块被简单地抛弃,并不写入该层次结构中的次最低级。从层次结构的一级中去掉一块的这一过程被称作“驱逐(eviction)”。在这一过程结束时,该高速缓存不再持有被驱逐块的副本。
图2显示前述高速缓存的结构和驱逐过程。高速缓存40(L1或较低级)包括高速缓存目录42、高速缓存条目阵列44、LRU阵列46、以及控制逻辑48,控制逻辑48用于从特定同余类中选择要驱逐的一个块。所描述的高速缓存40是一个八向集相联,于是,如在50指出的那样,目录42、高速缓存条目阵列44和LRU阵列46每个有由八块组成的特定集用于一个特定的同余类。换言之,如在同余类50中所示“X”指出的那样,在高速缓存目录42中的该同余类的一个特定成员与高速缓存条目阵列44中的该同余类的一个特定成员相关联,并与LRU阵列46中该同余类的一个特定成员相关联。
在目录42中的每一块经由纠错码(ECC)电路52与控制逻辑相连。在一给定高速缓存块中的一位可能含有不正确的值,这或者是由于软差错(如杂散辐射或静电放电)或者由于硬差错(有故障的单元)。ECC能用于重建适当的数据流。一些ECC只能用于检测和纠正单个位的差错,即如果在一个特定块中有两个或更多个位是无效的,则ECC或许不能确定实际上适当的数据流应是什么,但至少是能检测出故障。其他ECC更复杂,甚至允许检测和纠正双重差错。要纠正这后一种差错的成本高,其设计权衡是当发生双位差错的使机器暂停。尽管只有目录42显示出带有ECC电路,但这些电路能类似地用于其他阵列,如高速缓存条目阵列44。
ECC电路52的输出(其值对应于(纠正后的)存储器块地址)与各自的比较器54相连,每个比较器还接收被请求的存储器块的地址。如果一个被请求存储器块的有效副本是在同余类50中,则有一个且只有一个比较器54将输出一个有效信号。比较器54的输出与多路复用器56相连,还与或(OR)门58相连,它的输出控制多路复用器56。如果发生一个高速缓存选中(一个被请求的地址与高速缓存42中的一个地址匹配),则或门58启动多路复用器58传送一个信号,指出该同余类的哪个成员匹配该地址。这一信号控制另一个多路复用器60,它从高速缓存条目阵列44的每一个中接收输入。以这种方式,当发生该目录中的高速缓存选中时,相应的值便穿过多路复用器60传送到总线62。
如果发生一个高速缓存访问失败(Cache miss),而且如果在特定同余类50中的所有块都已具有存储器块的有效副本,则必须选择该同余类50中的高速缓存块之一供牺牲。这一选择是使用LRU阵列46中用于该同余类的LRU位来执行。对于该类中的每个高速缓存块,存在多个LRU位,例如,对于八向集相联高速缓存,每块有3个LRU位。来自该类中每块的LRU位作为输入提供给具有8位输出的解码器64,以指出这些块中哪一个要被牺牲。这一输出与多路复用器56耦合。以这种方式,如果或门58不是有效的(active),则多路复用器56根据解码器64的输出传送要使用的高速缓存块指示。
上面讨论的ECC电路是处理存储器单元中产生的软差错的一种方式。用于处理硬差错的另一种方式是在各阵列(目录、LRU、高速缓存中提供冗余。当制造一个高速缓存芯片时,它能被测试以确定在每个阵列中是否存在任何有缺陷的行或列线(对整个高速缓存、目录和LRU测试各行或列线)。如果一个阵列是有缺陷的,则一个熔丝会被永久性熔断,以表明其有缺陷特性。然后在该阵列内部对每个被访问的地址进行比较,看其是否与一个有缺陷的地址匹配。如果是,则适当的逻辑把该地址重新引路到该芯片上形成的许多额外行或列线(line)之一,即从冗余位线(列)和字线(行)中选出。额外位线和字线的数量可以不同,取决于有缺陷比率和所希望的芯片产量。对于低有缺陷率(有较大物理尺寸)的芯片,可对每256个规则线提供2个额外线,而在高有缺陷率(有较小物理尺寸)的芯片中,可能对每8个规则线提供2个额外线。
随着芯片制造和计算机配置的进步,L2和L3级高速缓存的大小在增大,需要更大的芯片上目录和芯片上(或芯片下)的数据高速缓存条目阵列。这些更大的密集阵列降低了芯片/系统总体可靠性,这是由于在制造过程中或在现场发生故障的机会增大了。为了提高这些较大目录/数据高速缓存的可靠性,传统上已经采用了许多不同的手段来解决这些问题,例如线内奇偶校验或ECC检测/纠正,但前述方法有多个缺点和限制。尽管使用ECC电路修复和重写目录中的数据,使得软差错(即间歇性故障)成为可校正的,但这一技术不能解决硬故障,其中高速缓存目录位或高或低地被阻塞(stuck)。线内ECC校正能用于纠正阻塞故障,但这一途径以对阵列的访问时间为代价,因为对每次访问都需要进行校正,而且重复地消耗部分纠错能力。冗余高速缓存线的使用能部分地克服硬故障,但这些冗余结构是很浪费的,因为它们占用芯片或系统板上的宝贵空间。冗余也受限于它纠正大量故障的能力。再有,在测试之后发生的硬差错可能是使用冗余线改正不了的。当发生这些类硬故障时,那些试图修复和重写数据的传统ECC电路将导致一种情况,其中系统反复地试图纠正差错但不会成功。在这种情况下,机器不能恢复而且必须被关机修理,浪费客户的时间和金钱,如果要保持完全的纠错和检测资源的话。
考虑到上述情况,人们希望设计出改进的方法以检测/纠正如高速缓存等存储器设备中的硬差错。如果在无需浪费的冗余电路或会使目录访问时间恶化从而降低系统性能的线内校正的情况下便能实现该方法,那将更有好处,发明内容所以,本发明的一个目的是提供一种改进的存储器结构以用于计算机系统,特别是用于高速缓存存储器。
本发明的另一个目的是提供这样一种改进的高速缓存存储器,它利用纠错码(ECC)。
本发明的又一目的是提供一种改进的方法和系统用于检测和纠正计算机系统中的差错,不论是在高速缓存存储器中的差错还是在系统总线上的差错,它能解决硬差错(阻塞位)问题,无需求助于缓慢的线内纠错。
上述目的是利用一种对计算机系统的数据位中的差错进行纠正的方法中实现的,其是把带有N位的数据应用于一个纠错码(ECC)矩阵以产生一个检错症状,其中ECC矩阵有多个行和列,一个给定列对应于数据位中相应的一个位,并且在ECC矩阵中沿每列和每行设置多个选定位,从而使ECC矩阵的编码允许进行N位纠错和(N-1)位检错。当从数据处理系统中的一个位置读出数据时,所造成的检错症状被解析以检测该数据中的差错。在所示实施例中,ECC矩阵在其每行中设置奇数个位。这些性质有助于使用一个反转位来纠正所存储的数据中的硬故障。当检测到一个差错并纠正之后,纠正后的数据被反转,然后重写到存储器或传输介质。这一条目的相应反转位被相应地置位,以表明当前存储的数据是被反转的。在此之后,该数据被重新从介质中读出,而且,如果该差错是由于一个硬故障(阻塞位)造成的,它将表现为是正确的(在应用了由反转位指出的极性之后),因为反转将已经把有故障位的值改变为被阻塞值。该反转位可以是数据本身的一部分。在这种情况中,ECC矩阵中的一列对应于该反转位,而在该矩阵的该列中的每一位都被置位。这一矩阵可应用于使用ECC的计算机系统的任何位置,包括总线或通信链路或芯片接口,而且对诸如高速缓存存储器等存储器设备特别有用。通过在系统总线上与数据一起包括反转位,系统总线能反转数据的极性,以补偿该总线上已知的阻塞位。ECC矩阵的特定配置允许检测和纠正甚至是在反转位上的差错(否则将造成不可检测到的差错),其中由于错误的反转位的影响所有数据位都是错误的。在本发明中定义的ECC矩阵将允许对任何数据位和ECC位进行纠错/检测,包括反转位本身上的差错。这一技术允许甚至当存在阻塞位时保持完全的ECC保护。
在下文的详细书面描述中,本发明的上述以及其他目的、特点和优点将变得清楚可见。


通过参考附图,对于本领域技术人员,本发明可被更好地理解,它的多个目的、特点和优点将变得显而易见。
图1是传统的计算机系统的方框图,描绘一个存储器层次结构,它包括主存储器和多个存储器高速缓存;图2是具有线内纠错码(ECC)电路的集相联高速缓存存储器的高级示意图;图3A描绘根据现有技术设计的一个检验48位值的ECC矩阵;图3B描绘根据本发明构成的一个应用于48位值的新的ECC矩阵,它包括一个反转位;以及图4是在一个三级(L3)高速缓存中的ECC电路的一个实施例的高级示意图,它适于应用一个反转位来解决高速缓存地址目录中的硬差错。
在不同的图中使用相同的参考符号表示相似或相同的项目。
具体实施例方式
如在背景部分中解释的那样,传统的纠错码(ECC)电路不适于解决诸如存储器阵列(例如高速缓存)或通信链路(例如系统总线)等计算机设备中的硬差错(阻塞位)。本发明通过使用新的硬件机制解决阻塞位问题,该硬件机制使用特殊的ECC矩阵使得从阻塞故障目录阵列状态中恢复过来。该ECC矩阵适用于把所包括的一个新位应用于高速缓存目录地址/标志或系统总线传输,这是一个额外的“反转”位(inversion bit),指出所存储信息的相对极性。下面的描述在第三级(L3)高速缓存目录阵列中实现本发明,但本领域技术人员将会理解,它对存储值(程序指令或操作数数据)的其他存储器设备同样有用。
图3A显示一个ECC矩阵70,它是根据现有技术设计的,用于48位值,这48位值包括41个数据位和7个ECC位。这一矩阵可用于以传统方式检验地址标志中的任何差错。如果所存储的48位全都正确,则应用图3A的ECC矩阵将造成全为零的症状,表明没必要进行纠错。这48位值分别以XOR(异或)方式应用于该矩阵7行中的每一行,以分别产生7个症状位。如果只有一位是错误的,则造成的症状能用于检测哪一位发生差错。在这原始的ECC矩阵70以及所有覆盖单位纠错/双位检错(SBC/DBC)的传统ECC矩阵中,在对一个可纠正位定义签名的每列中有奇数个位被置位。尽管一些行有奇数个位被置位,但其他行有偶数个,如在矩阵70中的行1和行7每个有20位被置位。
图3B显示已根据本发明修改过的用于48位值的电子ECC矩阵72的展示图。在这一特定实现中,修改有两个方面。首先,矩阵72的一列对应于一个反转位,该反转位表明所存储数据的相对极性(polarity)(有效——低或有效——高)(active-low or active-high),而且与现有技术的矩阵70相比,这一列有不同的位被置位。对于这一示例,反转位(IB)是位号30(出自数据位0:40),而且从图3B可见,在矩阵72的相应列中的所有位全已被置位(set)。其次,一些位已被加到矩阵72的其他列中,其结果是该矩阵中每个水平行有奇数个位被置位。与现有技术的矩阵70相比,为产生这一特性,对矩阵72所做具体改变是为数据位1:2所对应的列给予附加设置(除了设置IB列30的所有位之外)。特别是,在与数据位1对应的列中已有两个附加位被置位,在与数据位2对应的列中已有两个附加位被置位。被修改的列(相对于现有技术的矩阵70而言)已在图3B中用星号标记。本领域技术人员将会理解,可以在类似的48、41矩阵中使用其他设置以实现相同的结果,即所有行有奇数个位被置位。反转位不一定非得要归因于该ECC矩阵。
利用这一新型矩阵结构和相关联的症状(syndrome)编码,ECC矩阵72对于由该ECC覆盖的“N”位数据字段获得下列特性——单个位检错;——多个位纠错;——N位纠错;以及——(N-1)位检错。
这最后两条特性是有用的,因为指示数据极性的反转位也被存储和被ECC编码覆盖。如果在极性位上存在单个位差错,则呈现给ECC检测逻辑的数据将有全部“N”位不正确,但该矩阵被构造成能对这种情况进行检测和纠错。如果发生双位差错,而且出错的两位之一是极性位,则该矩阵也将检测出这一特性并指出这是不可纠正的双位错。
在所示实施例中,该矩阵应用于包括41位数据(0:40)和7个ECC位(0:6)的48位。41位数据位包括一个对应于dat(0:29)的30位L3地址标志addr_tag(14:43),对应于dat(30)的反转位以及对应于dat(31:40)的用于高速缓存状态信息(相干性和包含性位)dir-state(0:9)的10位这样,为高速缓存目录中的每个条目提供一个极性位。对这一特定实例使用了“块代码”型ECC编码。
在具有地址标志和状态信息(而且也由ECC位覆盖)的L3目录中存储的极性位指出该信息是以有效——高还是以有效——低极性存入L3目录的。当检测到一个ECC差错时,所存储的信息能以相反的(反转)极性写回L3目录。以这种方式,一个阻塞位故障将在其后与这反转极性数据匹配并在其后的读过程中不造成差错。这样使用反转位容易地克服由硬故障造成的任何单个位差错,无需冗余存储单元或线内ECC检测/纠错,而且只在必要时飞行式(on-the-fly)进行反转纠错过程。
当进行目录读时(即在机器调度时间),原始的/未检查过的L3目录数据被平行地发送穿过“标志比较”管道并到达ECC检查管道。如果发现差错,则由于ECC差错使目录机器调度序列被放弃,而极性纠错(PEC)序列取得对目录的控制,于是它能以纠正后的数据修复/重写该目录。与此同时,一旦PEC序列已经修复了一个单个位“软”的可纠正差错(CE),如果要重试先前被放弃的调度,则将最终取得成功。
为了掩蔽(mask)L3目录中的单个阻塞位故障(那里阵列单元被阻塞在0或1),现在PEC序列有附加能力控制写入目录阵列的数据的极性。PEC序列能在PEC序列期间通过认定dw_invert_bit位使写入阵列的数据反转,以掩蔽一个阻塞位(把被阻塞的值写入该位)。dw_invert_bit位存储在该目录中以记录该数据是否在目录中被反转因而在读出时应被反转。因为该反转位被存储在该目录中,所以该矩阵被增强以检测双位差错并对所有位(包括反转位)提供单个位校正,如上文解释的那样。利用所描述的修改,ECC矩阵72将纠正条目上的单个位故障,包括dw_invert_bit位(由于软差错或阻塞位),并将提供涉及一个条目中任何两位的双位检错,包括涉及dw_invert_bit位的双位差错。
图4显示当把图3B的ECC矩阵应用于八向集相联L3高速缓存的目录时的数据流。在高速缓存目录的写电路80中,来自机器的反转位dw_invert_bit首先由多路复用器82使其与数据组合。组合后的数据由ECC发生器84用于产生ECC位。ECC位的产生使用ECC矩阵72所依据的相同的症状编码。数据还通过一个由反转位(现在是dat(30))控制的反转器86。机器的正常直接写(即从较低级高速缓存或主存储器)把dw_invert_bit位写为0。于是,包括反转位的全部数据和ECC位与另一个多路复用器88组合并被发送到锁存器90供最终写入L3目录阵列92。
尽管反转位控制反转器86所写数据dat(0:29)和dat(31:40)的极性,但dat(30)和ecc(0:6)的极性不受反转器的影响。ecc(0:6)的极性事实上是经由ECC矩阵72通过设置与反转位对应的列(列30)中的全部位来反转的。当dw_invert_bit等于零时,dat(0:29)的dat(31:40)将以有效为高被写入L3目录。当dw_invert_bit等于1时,dat(0:29)和dat(31:40)将以有效为低被写入L3目录。
当从L3目录阵列92读数据时,它首先被写入另一锁存器94,然后穿过由dat(30)控制的另一反转器(inverter)96。通过设置一个使用与(AND)门98与dat(30)组合的方式位,反转可被禁止(disabled)。其极性已被适当设置的数据被转发给ECC检验器100,它产生症状synd(0:6)。ECC检验器100使用ECC矩阵72,它能被硬连线到XOR(异或)电路中。数据和症状被写入锁存器102和多路复用器104。该症状被解码器106解析(resolve)。症状“0000000”表明数据是正确的(或者至少是没有检测到差错)。症状“1111111”表明数据在反转位上有一个CE。解码器106有一输出系列fix_dat(n),当症状表明对特定数据位n(dat(0:29,31:40)有一单个位差错时,该输出系列是各个有效的。当症状是“1111111”时,另一输出fix_invert是有效的。fix_dat(n)各位首先与fix_invert位在OR(或)门108组合,然后使用XOR(异或)门110作用于数据位。fix_invert位还在XOR门112应用于反转位dat(30)。然后,所有数据位dat(0:40)被传送到输出锁存器114。
所有双位差错将造成不匹配合法CE症状的synd(0:6)。因为对于CE情况的synd(0:6)值的签名具有奇数个位被设置在它们的签名中(包括dw_invert_bit位上的CE,它有全部7位被设置),一个双位差错将造成具有偶数个位被设置的synd(0:6)(包括涉及dw_invert_bit本身的情况)。ECC矩阵72有这样的特性,即当把两个CE症状组合时,所造成的症状将有偶数个synd(0:6)位被置位,表明一个双位差错。
尽管已参考特定实施例描述了本发明,但这一描述不意味着以限定性意义理解。对所公开实施例的各种修改,以及本发明的其他实施例,对于参考了本发明的描述的本领域技术人员而言将是显而易见的。例如,上文的描述把ECC矩阵和反转位应用于高速缓存条目的地址标志(即应用于高速缓存目录),但它也能被应用于保持由地址标志所指向的值(程序指令或操作数数据),的高速缓存条目阵列。上文描述的矩阵也能被应用于实施ECC保护的系统中的任何部件,包括系统总线。通过向系统总线添加一个反转位并使用上文描述的反转技术,系统总线其至当存储阻塞位时也能通过对数据反转以总是匹配阻塞位的逻辑电平,从而保持完全的ECC保护。所以,认为可进行这种修改而不脱离所附权利要求中定义的本发明的精神或范围。
权利要求
1.一种在数据处理系统的ECC保护机制中检验差错的方法,包含如下步骤把带有N位的数据应用于一个纠错码(ECC)矩阵以产生一个检错症状,该ECC矩阵有多个行和列,其中一个给定列对应于数据位中的一个位,并且在ECC矩阵中沿每列和每行设置多个选定位,从而使ECC矩阵的编码允许进行N位纠错和(N-1)位检错;以及当从数据处理系统中的一个位置读出数据时,解析检错症状以检测数据中的至少一个差错。
2.权利要求1的方法,进一步包含有选择地设置ECC矩阵中多个位,从而使其每行中有奇数个位被置位的步骤。
3.权利要求1的方法,其中对ECC矩阵的编码进一步允许单个位检错,而且所述解析步骤检测数据中的一个且仅仅一个差错。
4.权利要求1的方法,其中所述解析步骤检测多个不可校正的差错。
5.权利要求1的方法,进一步包含如下步骤使用检错症状以产生校正后的数据;当校正后的数据被写回数据处理系统中的位置时,使校正后的数据反转;以及设置反转位以表明当前存储的数据被反转。
6.权利要求5的方法,其中的反转位是数据的一部分,而且ECC矩阵中的一列与该反转位对应,并且进一步包含设置ECC矩阵中与该反转位对应的一列中每一位的步骤。
7.权利要求6的方法,其中所述解析步骤检测反转位上的可校正差错。
8.一种纠错码检验器,包含一个电子纠错码(ECC)矩阵,适用于检测具有N位的数据并产生该数据的检错症状,所述ECC矩阵有多个行和列,其中一个给定列对应于数据位中的相应一个位,在所述ECC矩阵中沿每列和每行设置多个选定的位,从而使所述ECC矩阵的编码允许进行N位纠错和(N-1)位检错。
9.权利要求8的纠错码检验器,进一步包含一个症状解码器,它解析检错症状以确定该数据是否含有任何差错。
10.权利要求9的纠错码检验器,其中症状解码器进一步校正数据中发现的任何单个差错。
11.权利要求8的纠错码检验器,其中在所述ECC矩阵中的所述位被置位,从而使其每行中有奇数个位被置位。
12.权利要求8的纠错码检验器,其中为所述ECC矩阵的编码进一步允许单个位差错检测。
13.权利要求8的纠错码检验器,其中所述ECC矩阵的所述列之一对应于一个反转位,所述反转位指示数据的极性。
14.权利要求13的纠错码检测器,其中在所述对应于反转位的列中的每一位都被置位。
15.一种计算机系统,包含用于处理程序指令的装置;以及与所述处理装置连接的存储器设备,所述存储器设备包括一个纠错码检验器,该检验器有一个纠错码(ECC)矩阵,适用于检验具有N位的数据以产生该数据的检错症状,所述ECC矩阵有多个行和列,其中一个给定列对应于数据位中相应的一个位,在所述ECC矩阵中沿每列和每行设置多个选定的位,从而使所述ECC矩阵的编码允许进行N位纠错和(N-1)位检错。
16.权利要求15的计算机系统,其中所述存储器设备进一步包括一个症状解码器,所述症状解码器解析检错症状以确定该数据是否含有任何差错。
17.权利要求16的计算机系统,其中症状解码器进一步校正数据中发现的任何单个差错。
18.权利要求15的计算机系统,其中在所述ECC矩阵中的所述位被置位,从而使其每行中有奇数个位被置位。
19.权利要求15的计算机系统,其中所述ECC矩阵的编码进一步允许单个位差错检测。
20.权利要求15的计算机系统,其中所述ECC矩阵的所述列之一对应于一个反转位,所述反转位指出数据的极性。
21.权利要求20的计算机系统,其中在所述对应于反转位的列中的每一位都被置位。
全文摘要
在诸如高速缓存或系统总线等计算机系统的ECC保护机制中纠正差错的方法,该方法通过把带有N位的数据应用于一个纠错码(ECC)矩阵以产生检错症状,其中该ECC矩阵有多个行和列,以一个给定列对应于数据位的一个位,并且在ECC矩阵中沿每列和每行设置多个选定位,从而使ECC矩阵的编码允许进行N位纠错和(N-1)位检错。在诸如系统总线等ECC保护机制中,一旦检测到阻塞位条件,发送设备能选择发送数据,使得该数据那位的极性总是被翻转到与线上阻塞值的逻辑电平匹配。这一过程允许完全的单个位纠错和双位检测,即使存在阻塞位。
文档编号G06F11/10GK1538298SQ20041003291
公开日2004年10月20日 申请日期2004年4月13日 优先权日2003年4月17日
发明者罗伯特·艾伦·卡格诺尼, 盖伊·林恩·格思里, 柯克·塞缪尔·利文斯顿, 威廉·约翰·斯塔克, 塞缪尔 利文斯顿, 林恩 格思里, 约翰 斯塔克, 罗伯特 艾伦 卡格诺尼 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1