字节写错误码的方法和装置的制作方法

文档序号:6405215阅读:187来源:国知局
专利名称:字节写错误码的方法和装置的制作方法
技术领域
本发明属于数字计算机中的错误检测和校正领域,更具体一点说,本发明是关于在内存的半写操作期间的错误检测和校正,也涉及在内存的半写操作期内出现不可纠正的错误时把相应的内存单元标记为有错的方法。
现有的检错技术能够发现从计算机内存中读出的数据是否有一个或多个错误,而且在某些情况下还能纠正从内存中读出的含有一个或多个错误的数据。
在F.J.Hill和G.R.Peterson合写的教科书“开关理论和逻辑设计引论”(IntroductiontoSwitchingTheoryandLogicalDesign)(1974年第2版)的199页到207页中叙述了某些检错和纠错方法。海明码就是现有的检错和纠错码的一个例子。
在使用海明码的现有系统中,每一个二进制数据字都有有关的一组二进制奇偶校验位,或简称为校验位。在有的现有系统中,每个校验位是这样来选择的,使得这一位和数据字中各位的某个子集构成偶校验。在这样的系统中,许可码中的1(或0)的总数永远是偶数。在奇校验系统中,许可码中的1(或0)的总数永远是奇数。现有的使用海明码的系统既有采用偶校验,也有采用奇校验的。
对于上述的使用海明码的现有系统,每个奇偶校验位是通过对数据字的某些选定的位进行异或逻辑运算得到的,也就是由该奇偶校验位与该数据字的各个位的某个子集共同构成偶校验所得到的结果。从而每个奇偶校验位成为与那个特定的数据字有关的奇偶校验位组的一部分。
之后,该数据字连同它的校验位可以经过通信线从一个系统传递到另一个系统,或者先被写入到一个动态随机访问存贮器(“DRAM”)然后在某个时间再从该DRAM中读出。对于传送数据字的收发期间或者在涉及DRAM的读写期间,均有可能在奇偶校验位和数据字中发生单位或多位错误。
在有的现有系统中,利用海明码来检测或纠正在接收到发送来的数据字时或者从内存中读出那个数据字时可能出现的错误。
但是,把现有的检错和纠错方法合并在一起作为半写操作的组成部分(或者作为使用半写操作的一个系统的组成部分)有着严重的局限性。在一个现有的采用半写操作的系统中,目的之一是用新数据来替换作为数据字存贮的老数据的一个子集-因而老数据由新数据所替换并建立一个新数据字-然后把这个新数据字写回到内存。大家所知道的半写方法涉及到从内存中读出一个数据字和与它有关的校验位。如果这些校验位指出刚才读出的数据字有一位错误-换句话说,发现有一个可纠的错误-那么这个单位错将用人们熟知的方法和装置来纠正。然后,已从内存中读出的构成数据字的一部分老数据将被新数据代替,并建立起一个新数据字。那个新数据字接着被写入主存。
关于人们所知的半写方法和装置所涉及的局限性是在读出的校验位指出从内存中读出的那个数据字中有一个不可纠正的错误时的情形。一种现有的方法是由此而中止半写操作并结束把半写操作作为其一部分的那个存贮周期。换句话说,根本不把数据(无论新的或老的)写回内用于不可纠错情形的另一种现有方法是写回那个老的带有错误的数据字和老的校验位,这些校验位指明有不可纠的错误。这样一来半写操作虽然中途矢折,但计算机周期并未中止。这种方法是建筑在这样一种希望的基础上的其老的被写回内存的带有错误的数据字和校验位在整个期间保持不可纠错状态。该方法和装置的缺点是当又一个错误或瞬态错误发生时,同一个内存单元可能不再对下一次内存读操作产生不可纠错误,而实际上在下次读操作期间,该数据字是错误的,但被误解为正确的或可纠错的。
鉴于已知的半写方法和设施的局限性,本发明的目标之一是提供一种改善了的方法和装置,用在一个带有存贮器的数字计算机系统中来处理在存贮操作期间(包括半写操作期间)出现的不可纠错误。
本发明的第二个目标是提供一个改进了的方法和装置,用在存贮操作期间(包括半写操作期间)出现不可纠错误时把那个与不可纠错误有关的内存单元做上标记。本发明所提供的方法和装置在合理的概率意义上确保在一次内存操作期间发现有不可纠错误的内存单元之后就总能检测到这个单元与一个不可纠错误有联系,就象这个不可纠错误是一个瞬态过程或一个软性错误一样。
本发明的又一个目标是(1)在多数情况下给出一种指示以表明在一个特定的内存单元或地址上产生过一次失败了的存贮操作(包括有错误的半写操作),(2)在合理的概率意义上提供一种指示以表明在一次有错误的内存操作(包括有错误的半写操作)之后在一个特定的内存单元中有一个不可纠错误,即使在那次有错误的内存操作之后在那个特定内存单元上又接着出现瞬态过程或错误时,原有的不可纠错误指示仍然不变。上述的第一种情形相当于对那个特定的单元做读操作时没有再发生错误。第二种情形则相当于在一次有错误的内存操作(包括有错误的半写操作)之后在特定的内存单元又出现附加的错误。
本发明的第四个目标是提供一个纠错码,它在一种合理的概率意义上保证在有错误的内存操作(包括有错的半写操作)发生后仍然能够检测出不可纠的错误。
总起来说,本发明的上述的或其它的目标均是为了提供一种检错方法,它包括从主存读出一个数据字和它的校验位,再根据读出的那个数据字形成一组新的校验位。对这一组新的校验位和从内存中读出的校验位实施一种逻辑运算,运算结果是一个错误判别式或叫伴随式。这个伴随式被用来检测是否存在不可纠的错误。如果发现有不可纠的错误,就对新的一组校验位与一个称为字节写错误码的八位代码之间实施一种逻辑运算。运算结果得到一组新的校验位,用它来替换原先的校验位并与数据字一起被写回内存。用这种方法,上述的字节写错误码为那个特定的内存单元提供了一种标记。
按照本发明的思想,用于检错的方法也包括从内存中读出一个数据字和它的校验位。新的一组校验位是由从内存中读出的那个数据字产生的。在这一组新的校验位和内存中读出的那一组校验位之间执行一种逻辑操作,其结果为一伴随式。如果这个伴随式对应于字节写错误码时,表明存贮操作过程有错。
为了实现上述的检错方法,本发明还给出其实施装置。
下面将结合图例详细地陈述本发明的优先推荐的实施例。由此可以看出本发明的进一步的目标和特性。
本发明用实例来说明但不局限于附图那种样子,其中相同的符号代表类似的成分。


图1是按照本发明实施检错的一个实例的方块图;
图2说明产生伴随式的方法;
图3展示了纠错码,包括字节写错误码;
图4说明一个可纠的错误;
图5说明一个不可纠的错误;
图6说明半写操作的结果;
图7说明按照本发明给出的纠错码电路的细节;
图8说明纠错码的结构。
下面就这一组图例进行说明。图1以方块图的形式说明了本发明的基本的检错装置。总线10为在计算机系统中的许多部件之间传递数据提供通路。存贮系统11通过驱动器12与总线10联接。通过驱动装置12,存贮部件11可以和总线10交换数据。控制部件14包括与总线10的接口电路,並执行总线协议,控制部件14同样含有控制动态随机存取存贮器(“DRAMS”)16之操作的电路。这包括由控制部件14提供的地址信号(“ADRS”),行地址选通信号(“RAS”),和列地址选通信号(“CAS”)。
在本发明的一个实施例中,存贮系统11可能是数据处理系统中使用的一块存贮板。在本发明的另一实施例中,用在数据处理系统中的存贮系统11至少得有一块存贮板。
来自总线10的要写入内存的数据通过驱动器12和数据通路18从总线10送到DRAMS16。。要从DRAMs中读出並送到总线的数据同样通过数据通路18和驱动器12从DRAMs16送到总线10。
数据通路18包含对数据的检错和纠错电路。寄存器20存贮从DRAMs16中读出的或者写到16中去的数据。寄存器22存贮来自驱动器12的或送往12的数据。寄存器28存贮从DRAM16中读出或写到其中去的奇偶校验位。
纠错码(“ECC”)电路24为数据字产生奇偶校验位并为数据字提供错误伴随式。关于ECC电路24的工作情况将会在下面详细讲到。
译码电路30对ECC电路24产生的错误伴随式进行译码。如果由译码器30译出的伴随式指出该数据中有一可纠错误及其所在位置,那么纠错电路26就纠正该数据字中出错的那一位。例如,如果有一位应当是1而不是0,那么纠错电路就把这一位从0变成1。自然,纠错电路也能使1变到0。
图2展示了检错和纠错的方法,它可以与图1所示的装置一起使用。在编码步42处,对64位长的数据字40进行编码以产生与数据字40相联系的8个校验位44。由数据字40生成校验位44是按照纠错码(“ECC”)原理实现的。图3展示了ECC70,它是一种修正后的海明码,被用作本发明的实施例中的ECC。校验位组合中的每一位均是通过ECC70所确定的数据字中某些位之间的异或(“XOR”)操作产生的。参看图3中的ECC70,人们可以看出数据字中哪些位确定哪些校验位。在ECC70中每个校验位均有它自己的纵列。相对于某个校验位的那一列中的每个“1”顺着数据字各位的位置排齐。因此,与所关心的那一列中的各个“1”有联系的数据字中的各位的位置就是相关位的位置。例如就校验位S2而言,其数据字中相关位的位置是4-7,12-13,20-23,28-29,36-39,44-46,52-55和60-62。校验位是用该数据字中相关位位置上的数据通过异或操作产生。在本例中,校验位S2是用一个数据字中的4-7,12-13,20-23,28-29,36-39,44-46,52-55,60-62位上的数据经过异或操作产生的。
图3所示的ECC70具有检测并纠正单位错的能力並能检测(但不能纠正)双位错。
本发明的其它的实施例可能有更长的或更短的数据字和校验位;也即数据字或校验位有较少或较多的位数。起码要的校验位数自然与数据字的长度有关。例如,32位的数据字需要7个校验位,16位的数据字需要6个校验位。
64位的数据字在“写入主存”步46时被写回到主存中的特定单元或地址。作为例子,主存可包括图1所示的DRAM16。8个校验位则在“写入主存”步48时被写入该主存中的一个特定地址或单元。
这8个奇偶校验位44可以被写入到64位的数据字所在的相同的存贮地址。这些校验位既可以分散地位于那个主存地址中的72位的字中的不同位置上、也可以把它们集合成一组放到72位字的某一段中。这个72位的字将由8个校验位(44)和64位的数据字40构成。8个校验位也可以位于72位数据字中最左边的8位。另一种办法是把这8个校验位存贮到与64位数据字所在的单元不同的主存地址中。但是无论如何要把它们与数据字40挂上钩。换句话说,校验位44应该被认作为数据字40的校验位。
接下去是在“从内存中读出”这一步50上从内存中读出64位数据字54。数据字54是从数据字40曾被写入过的那个相同内存地址中读出的。在“读内存”步52,8个奇偶校验位56也从内存中被读出。校验位56也是从校验位44曾经写入过的同一个内存地址中读出的。
如果那个数据字中没有错误,数据字40就应当与数据字54相同。此外,如果校验位也没有出错,那么校验位56应当等于校验位44。
但是在“写入内存”步46和48以及在“从内存中读出”步50和52的执行期间,有时的确会在数据字和校验位中产生错误。
在数据字和校验位被存入寄存器过程中也有可能导致数据字和校验位中的错误。在数据字和校验位传送过程中也会发生错误。引起二进制位错的因素是很多的,例如电压波动、DRAM中的α粒子效应、丢失电荷等等。单位错的可能性比双位错的可能性大得多。双位错的可能性又比三位错的可能性大好多,依次类推。错误位数越多可能性越小。图4表明在64位的数据字(80)中有一个单位错82,这一位当然可以是64位数据字80中的任意一位。图5说明在64位的数据字90中有两位错误92和94。
如果有一位或一位以上错误,这就意味着数据字54可能与数据字40不同,或者校验位56与校验位44不同。本发明的目标之一是检测数据字54中是否有单位错,若有则纠正它。按照图3所示的纠错码表70,单位错是可纠正的,本发明的另一个目标是判别数据字54中有否两位错,但是本实施例不能校正两位错。因此按照图3所示的ECC70的规则,两位错被认为是不可纠的错误。
假定数据字54中有一位或多位与数据字40中的对应位不同,那么校验位组56将不会是数据字54中的当前数据的正确校验位组(假定校验位组44经写入内存再读出后保持不变,即校验位组56等于44)。
不管数据字54是否有错,在编码号58处时该数据字进行编码以产生8个奇偶校验位60。
编码号58的操作方式与42号相同,亦即按照图3中ECC的规则生成校验位。
遇到下列三种情形之一时,校验位组60将会与校验位组56不同(1)校验位组44不同于校验位组56,(2)数据字54不同于数据字40,(3)在建立、传输或存贮校验位组44、56或60期间出现错误。因此只要数据字或校验位中有一位或多位出错,校验位组60就会与校验位组56不同。
在62步上,对校验位组60中的每一位和校验位组56中的对应位实施异或逻辑操作(或与此等价的逻辑运算)。因为校验位组60和56有8个二进位,所以执行8次异或操作,即对每一位执行一次异或操作。
异或操作步62产生一个错误判别式(伴随式)64。假定不存在三位或更多位错误(这种假定在概率意义上是合理的),那么伴随式64将指出(1)是否有错;
(2)是否有可纠错,若有,错误位置在哪?(3)是否有不可纠错;
(4)是否有失败了的半写过程,关于这一点将在下面讨论。
如上所述,假定数据字中不会有三位或更多位的错误是一种合理的假设,因为出现这类错误的概率是极小的。图3给出的ECC70对三位以上的错误无能为力。
图2中所示的错误判别式的第一个例子对应于数据字或校验位均没有错误的情况。因此例1对应的无错误的情形使这个伴随式的所有位全为0。
图2中所示的错误判别式的第二例是另一种情形,它表示数据字54或8位的校验位组56中有一个可纠的错误(即单位错)。例2所示的判别式也指出出错的那一位在数据字54中的位置。参考图3给出的ECC70这张表,可以看出数据字54中那一位是错误的。因为其值为00001011的那个判别式正好与图3的ECC70中的数据位16的图形匹配,所以第二例判别式指出了数据字54中的第16位有错误。一旦我们知道了数据字54的哪一位有错,单位错的纠正是相当简单的-如果错误位是0则把它改为1,如果是错成1则把它改为0。
对于可纠错情形,还有许多判别式的实例。对于图3的ECC70而言,可纠错总是对应这样一些判别式,它们的值等于ECC70所示的各个行之一的内容,这些行的标号是数据位0到63,校验位C0到C7。根据错误判别式与ECC70中的哪一行数据模式相匹配,並读出那一行的行号,就能知道数据字54中哪一位数据出错了。
图2所示的判别式的第3个例子是在数据字54或校验位中出现不可纠的错误(即双位错)时产生的。如果此判别式中1的个数为偶数,则表示有一个不可纠错误。对于例3的情形,有四位是1,所以是偶数。对于不可纠的错误情形还可举出具有偶数个1的别的判别式实例。带有奇数个1的判别式也可指示一个不可纠的错误,只要该判别式与ECC70中不用的一个码子相匹配。
在这里还是假设了任何数据字中均不出现三位或三位以上的错误。但是如果除了一位错以外还真的出现了奇数位错误,那么其判别式将是奇数个1,这就可能谎称出现了一个可纠的错误。
如果除了两位错以外,还真的发生了非0的偶数位错,那么随之产生的判别式将有偶数个1,这将正确地表明在数据字54中或校验位组56或60中出现了不可纠的错误。
图2所示的判别式的第4个例子是在错误的半写操作后形成的,这将在下面详细地讨论。第4例判别式对应于图3所示的ECC70的字节写错误码01111111。
就半写操作而言,目标之一是用新数据来替换老数据的一个子集,然后作为老数据来存贮,因此半写操作的目标是用新数据和老数据的合并来代替老数据。图6说明由8个数据字节(每个字节8位)组成的一个64位的数据字100。作为成功的半写操作的一个例子,数据字100中的102号字节的数据被新数据所代替。这个数据字的其余字节的数据在半写操作后保持不变。
参考图1所示的装置,半写过程涉及到从DRAM16中的某个内存地址或单元中读出一个64位的数据字並把这个数据字存入寄存器20。从DRAM16中的一个内存地址或单元中还读出与那个数据字有关的8个校验位,然后把这些校验位存入寄存器28。打算要写入该数据字的那个字节(或那些字节)来自总线10经过驱动装置12存入寄存器22。
如上所述,实现本发明的其它实例可能涉及较短或较长的数据字和校验位。而且校验位可以出现在其数据字所用的同一内存地址,也可以放在与其数据字所用的内存单元不同的地方,只要这些校验位与其数据字挂上钩就行。就前一种情况而言,校验位还有两种存贮办法,例如,有的实施方案把校验位穿插地放在数据字的不同位置上,有的则合成单独的一组並与其数据字合成一更长的数据字。
存放在寄存器20的数据字被送入图7所示的ECC电路24的编码电路112。该编码电路为这个数据字产生8位校验码。上面我在讲述图2的情形时也讲过用这种方法来生成校验位。也就是说,校验位组中的每个校验位是通过对ECC70确定的数据字中的某些位实施异或运算来产生的。异或操作结果得到的8个校验位被存放到寄存器114。
然后,把新产生的存贮在114寄存器中的校验位与存放在寄存器28中的8个校验位(也就是与要被修改的那个数据字有关的並从内存中读出的那8个校验位)一起输入到异或电路118。异或电路118对输入到其中的两个校验位组的对应位执行异或逻辑运算以产生一个伴随式。这个伴随式应当具有上面讨论图2时提到过的那几种类型之一。
异或电路118产生的伴随式接着被输入到图1中所示的译码电路30。该译码电路对此伴随式执行逻辑运算,以确定(1)存贮在寄存器20中的数据字或存放在寄存器28中的校验位有无错误;
(2)寄存器20和28中的数据有无可纠的错误,若有,则确定数据字中的哪位出错;
(3)存放在寄存器20和28中的数据是否有不可纠的错误;
(4)是否在早些时候曾出现过失败了的半写操作。
但是,上述功能的实现有一个假设前提,即依赖于图3给出的ECC70的功能,假定该数据字中不存在三位或三位以上的错误。
如果译码电路30译出的错误判别式指出没有错误,那么用寄存器22中的数据字来替换寄存器20中的一个或多个字节数据,在ECC电路24中为新数据字生成新的校验位组並把所得的新数据字和有关的新校验位组写入到DRAM之中,从而完成半写操作。
如果译码电路30译出的一组判别式指出有一个可纠错,该译码电路将把这个错误在其数据字中的位置送给纠错电路26。纠错电路26将纠正存放在寄存器20中的那个数据字中的单位错。纠错后,用寄存器22中的数据来代替寄存器20中的一个或多个字节数据、在ECC电路24中为该新数据字生成新的校验位,再把所得到的新数据字与此有关的新校验位写到DRAM之中,从而完成半写过程。
如果在半写操作期间译码电路30译出的错误判别式指出有一个不可纠错误,那么参看图7,图1中的译码电路30将向图7所示的ECC电路24中的门电路116发送一个开门信号。因为116门被打开,所以图3所示的ECC70的那个字节写错误码被输入到异或电路120。存放在寄存器114中的8个校验位组也被输入到异或电路120。
异或电路120对寄存器114中的8个校验位和字节写错误码的相应位执行异或逻辑运算。
异或电路120执行的逻辑运算结果产生一组修改后的校验位,共8位。这一组修改过的校验位接着从异或电路120送出並存放到寄存器28中,以此来替换先前存放在寄存器28中的校验位组。
参看图1,存放在寄存器20中的数据不与寄存器22中的数据作任何合并或替代操作就被写入到DRAM16。寄存器28中的被修改后的一组校验位也随同寄存器20中的数据被写入DRAM16。因此,关于该数据字的半写操作被中止並永远不再完成,因为寄存器22中存放的一个或多个字节的数据永远不会和寄存器20中的数据字合并。
在下一次读或半写操作时,该数据字和它的校验位再次从DRAM16中被读出,如图1所示,数据字存于寄存器20,校验位存于寄存器28。现在在寄存器28中的从DRAM16中读出的校验位组是与其数据字有关的修改过的校验位,它是早先的失败了的半写操作所产生的结果。
按照上述的图3所示的ECC电路24所用的方法,该数据字也和前面说过的一样输入到编码电路112,编码电路112又生成8个校验位组,这个校验位组被存入寄存器114,然后送到异或电路118,来自寄存器28的这一组修改过的校验位也被送到异或电路118並产生一个错误判别式,这个判别式接着被送往译码电路30。
如果送到图1的译码电路30的那个判别式等于图3所示的ECC70中的字节写错误码,那么译码电路30将给出一个信号,指出以前曾发生过与这个数据字有关的失败了的半写操作。如果从那次失败了的半写操作之后该数据字或修改过的那一组校验位没有再发生过错误,那么所产生的判别式应当等于图3中的ECC70的那个字节写错误码。
但是,如果在那次作废的半写操作期间,无论数据字或修改过的校验位中有任何一位因写入什么东西而改变了状态,那么由于下面将要讲述的原因,译码电路30将十分可能译出一个能指示出错误条件的判别式。于是该译码电路将指明有一个与该数据字有关的不可纠错误。
因此,字节写错误码用在半写操作期间出现不可纠错误时把一个内存单元标志为“已坏”。在本发明的可供选择的另一实施方案中,字节写错误码被用在存贮操作期间出现不可纠错误时把一个内存单元标为“已坏”。
假定不出现三位或更多位的错误,利用字节写错误码对一个内存单元在它发生过有错的半写操作之后对它打上一个“已坏”的标志有下面两点好处(1)如果在有错的半写操作之后不再有错,那么这个标志能够指出那个存贮单元曾经出现过有错的半写操作;
(2)如果在有错的半写操作之后又出现了单位错,那么该标志能以极高的概率指出那个内存单元有一个不可纠的错误。
在有错的半写操作之后再次在数据字中或修改过的校验位中出现单位错的情形将意味着那个不可纠的状态与那个内存地址有关,而不代表一个假的可纠错误或一个假的“无错”情形。
如图8所示,ECC70所用的那个字节写错误码附近有许多不用的8位的奇校验码。图中所示的数据码和校验码则是ECC70所用的一部分其它码子。
参看图8,在ECC70中选择了一个特殊的字节写错误码(如图3所示),它的周围有许多不用的8位奇校验码,这就增加了使图1所示的译码电路30译出一个不被误解的判别式的概率,以指出在一次失败了的半写操作之后又出现了不可纠错误状态,即出现了多于1位的错误。只要ECC码中有一位或几位不同于那个字节写错误码就意味着是不可纠的错误码这种方法增加了发现以前曾经出现过不可纠错误的概率。换句话说,如果在一次有错的半写操作之后又在该数据字或修改过的校验位组中出现了两位或两位以上的错误,那么选用图3所示的ECC70的那个特殊字节写错误码增加了出现上述情形时正确地指出这是一种不可纠错误条件的可能性。
按照上述说明,已用一些具体的实例对本发明作了详尽的描述。显而易见,正如附加的权利要求中指出的那样,可以对所举的例子作出各种修改和变动但不离开本发明的广泛的精神的范围。关于上述的有关规定和图样自然也是说明性的,並非限制只能如此。
权利要求
1.一种检错方法包括下列步骤(a)从内存中读出一个数据字;(b)从内存中读出与所读出的数据字有联系的第一组校验位;(c)用刚才读出的那个数据字生成第二组校验位;(d)对第一组校验位和第二组校验位执行第一种逻辑运算以生成一个判断式;(e)对此判别式进行译码以判断有无不可纠错误,若有,则修改校验位组以便指出这样的不可纠错误。
2.根据权利要求1所述的方法,其中作了下列修改(ⅰ)对第二组校验位和一个字节写错误码执行第二种逻辑运算以产生第三组校验位;(ⅱ)把此数据字写入内存;(ⅲ)把第三组校验位写入内存,使它与上述的数据字挂上钩。
3.一种检错方法包括下列步骤(a)从内存中读出一个数据字;(b)从内存中读出与刚才从内存中读出的数据字相关联的第一组校验位;(c)利用从内存中读出的数据字生成第二组校验位;(d)对第一、二两组校验位实施一种逻辑运算以生成一个错误差别式;(e)如果此判别式等于字节写错误码,则指明本次存贮操作有错。
4.根据权利要求3所述的方法,进一步包括以下步骤(f)如果判别式等于用来指示一个不可纠错误的错误码时,指出有一个不可纠错误。
5.根据权利要求2所述的方法,其中第一种逻辑运算是对第一、二两组校验位执行异或操作,第二种逻辑运算是对第二组校验位和字节写错误码执行异或操作。
6.根据权利要求2所述的方法,其中有几位或至少有一位不同于字节写错误码的那些码子将认为是不可纠的错误码,这种方法增加了发现早先曾出现过的不可纠错误的概率。
7.根据权利要求4所述的方法,其中字节写错误码被许多未被采用的错误码所包围,这样一来就增加了如果在一次失败了的存贮操作之后再出现多位错的情况下能够指出不可纠错误的概率。
8.根据权利要求2所述的方法,其中数据字为64位长,第一、二、三组校验位组每组都是8位长。
9.根据权利要求8所说的方法,其中字节写错误码是01111111,其中最左边一位是最低有效位,最右边一位是最高有效位。
10.一种检错方法包括下列步骤(a)从内存中读出一个数据字;(b)从内存中读出与刚才从内存中读出的数据字相联系的第一组校验位;(c)利用从内存中读得的数据字形成第二组校验位;(d)对第一、二两组校验位执行第一种逻辑运算以生成一个错误判别式;(e)分析这个判别式以确定有无不可纠错误,如果在半写操作期内发现有不可纠错误,则(ⅰ)对第二组校验位和字节写错误码之间执行第二种逻辑操作以产生第三组校验位;(ⅱ)把数据字写回内存;(ⅲ)把第三组校验位写入内存並使其和有关的数据字联起来。
11.一种检错方法包括下列步骤(a)从内存中读出一个数据字;(b)从内存中读出与刚才从内存中读出的数据字有联系的第一组校验位;(c)用刚才从内存中读得的数据字来生成第二组校验位;(d)对第一、二两组校验位之间实施逻辑运算以产生一个错误判别式;(e)如果此判别式等于字节写错误码,则指出这是一次失败的半写操作。
12.根据权利要求9所述的方法,进一步包括以下步骤(f)当错误判别式等于用来指示一个不可纠错误的错误码时,指明这是一个不可纠错误。
13.一个检错装置包括(a)从内存中读出一个数据字的机制;(b)从内存中读出与刚才从内存中读出的数据字相关联的第一组校验位的机制;(c)根据从内存中读出的那个数据字产生第二组校验位的机制。(d)对第一、二两组校验位之间执行第一种逻辑操作以生成一个错误判别式的机制;(e)对错误判别式进行分析以确定有无不可纠错误的机制;(f)在发现有不可纠错误之后对第二组校验位和字节写错误码之间执行第二种逻辑操作以生成第三组校验位的机制;(g)在发现有不可纠的错误之后把该数据字写回内存的机制;(h)在发现有不可纠的错误后把第三组校验字节写回内存並使它与有关的数据字挂上钩的机制。
14.一个检错装置包括(a)从内存中读一个数据字的机制;(b)从内存中读出与刚才从内存中读的数据字有联系的第一组校验位的机制;(c)利用从内存中读出的那个数据字生成第二组校验位的机制;(d)对第一、二两组校验位执行一种逻辑运算以产生一个错误判别式的机制;以及(e)若该错误判别式等于一个字节写错误码时能够指出这是一次失败的存贮操作的机制。
15.根据权利要求14所述的装置进一步包括(f)当错误判别式等于象征一个不可纠错误的错误码时能够指明这是一个不可纠错误的机制。
16.根据权利要求13所述的装置,其中第一种逻辑操作是对第一、二两组校验位之间实施异或操作;第二种逻辑操作是对第二组校验位和字节写错误码之间实施异或逻辑运算。
17.根据权利要求13所述的装置,其中,有几位或只有一位不同于字节写错误码的那些码子被认作为不可纠的错误码,用这种办法选定的错误码能够增加发现以前曾经出现过不可纠错误的概率。
18.根据权利要求15所述的装置,其中的不可纠错误码是这样确定的只要有几位或只有一位不同于字节写错误码的那些码即认为是不可纠错误码,这种决策增加了发现早先曾经出现过的不可纠错误的概率。
19.根据权利要求13所述的装置,其中数据字为64位长,第一、二、三组校验位组每组均为8位。
20.根据权利要求19所述的装置,其中字节写错误码定义为01111111,其最左位是最低有效位,最右位是最高有效位。
21.用于数据处理系统並具有检错能力的一块内存板,包括(a)从内存中读出一个数据字的机制;(b)从内存中读出与刚才从内存中读的数据字有关的第一组校验位的机制;(c)利用刚从内存中读出的数字来产生第二组校验位的机制;(d)对上述第一、二两组校验位之间施行第一种逻辑操作以生成一个错误判别式的机制;(e)对这个错误判别式进行译码以判断有无不可纠错误的机制;(f)在发现一个不可纠错误后对第二组校验位和一个字节写错误码之间实施第二种逻辑操作以生成第三组校验位的机制;(g)在发现一个不可纠错误后能把该数据字写回内存的机制;(h)在发现一个不可纠错误后能把上述第三组校验位写回内存並把它与有关的数据字挂上钩的机制。
22.用于数据处理系统並具有检错能力的一块内存板,包括(a)从内存中读出一个数据字的机制;(b)从内存中读出与刚才从内存中读的数据字相关联的第一组校验位的机制;(c)用刚才从内存中读出的数据字生成第二组校验位的机制;(d)对第一、二组校验位实施一种逻辑操作以产生一个错误判别式的机制;(e)若该错误判别式等于一个字节写错误码,则能指明这是一次失败的存贮操作的机制。
23.根据权利要求22所述的内存板,进一步包括(f)若该错误判别式等于象征有不可纠错误的某个错误码时能够指明这是一个不可纠错误的机制。
24.根据权利要求21所述的内存板,其中第一种逻辑操作是对所说的第一、二两组校验位之间施行异或操作,第二种逻辑操作是对第二组校验位和字节写错误码之间执行异或逻辑操作。
25.根据权利要求21所述的内存板,其中有几位或只有一位与字节写错误码不同的那些码子作为不可纠错误码,这种选择能增加发现早先曾经出现过的不可纠错误的概率。
26.根据权利要求23所述的内存板,其中有几位或只有一位与字节写错误码不同的那些码子作为不可纠错误码,这种方法增加了能发现早先曾经出现过的不可纠错误的概率。
27.根据权利要求21所述的内存板,其中数据字长为64位,第一、二、三组校验位每组均为8位。
28.根据权利要求27所述的内存板,其中字节写错误码选用01111111,其最左位是最低有效位,最右位是最高有效位。
29.用于数据处理系统而且至少有一块内存板带有错误检测能力的一个存贮系统,其内存板包括(a)从内存中读一个数据字的机制;(b)从内存中读出与刚才从内存中读的数据字有联系的第一组校验位的机制;(c)利用刚才从内存中读出的那个数据字生成第二组校验位的机制;(d)对第一、二两组校验位实施第一种逻辑操作以生成一个错误判别式的机制;(e)对此错误判别式进行译码以检测有无不可纠错误的机制;(f)在发现有不可纠错误后,对第二组校验位和字节写错误码施行第二种逻辑运算以生成第三组校验位的机制;(g)在发现不可纠错误后把该数据字写回内存的机制;(h)在发现有不可纠错误后把第三组校验位写入内存並把它与有关的数据字挂钩的机制。
30.用于数据处理系统的而且至少有一块内存板带有检错装置的一个存贮系统,其内存板包括(a)从内存中读出一个数据字的机制;(b)从内存中读出一个与刚才所读的那个数据字有联系的第一组校验位的机制;(c)用刚才从内存中读得的数据字生成第二组校验位的机制;(d)对第一、二两组校验位施行一种逻辑操作以生成一个错误判别式的机制;(e)若错误判别式等于一个字节写错误码的话能够指明这是一次失败的存贮操作的机制。
31.根据权利要求29所述的存贮系统,进一步包括(f)当错误判别式等于意味着有一个不可纠错误码时能指示出这是一个不可纠错误的机制。
32.根据权利要求29所述的存贮系统,其中第一种逻辑操作是对第一、二两组校验位之间执行异或操作,而第二种逻辑操作是对第二组校验位和一个字节写错误码之间进行异或运算。
33.根据权利要求29所述的存贮系统,其中只要有一位或几位不同于字节写错误码的码子就被看作是不可纠错误码,这种方法增加了能够发现以前曾出现过的不可纠错误的可能性。
34.根据权利要求31中所述的存贮系统,其中只要有一位或几位不同于字节写错误码的码子就被看作是不可纠的错误码,这种办法增加了能够发现以前曾经出现过的不可纠错误的概率。
35.根据权利要求29所述的存贮系统,其中数据为64位长,第一、二、三组校验位每组均是8位长。
36.根据权利要求35所述的存贮系统,其中字节写错误码是01111111,其最左边一位是最低有效位,而最右边那一位是最高有效位。
全文摘要
本发明给出一种检错的方法和装置。它的工作过程是从内存中读出数据字和它的校验位,用读出的那个数据字生成新的校验位,对新的校验位和从内存中读出的校验位之间执行逻辑操作以生成一个错误判别式,对此判别式进行译码以检测有无不可纠错误,若有,则对新校验位和字节写错误码之间执行逻辑操作以产生第三组校验位,接着把这第三组校验位连同有关的数据字一块写回内存。
文档编号G06F12/16GK1033889SQ8810285
公开日1989年7月12日 申请日期1988年5月14日 优先权日1987年5月15日
发明者多纳尔德·W·斯迈尔塞, 杰姆斯·C·斯特格曼, 劳伦斯·A·西斯温 申请人:计数设备公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1