错误判断电路和共享的存储器系统 【技术领域】
本发明涉及一种错误判断电路和共享的存储器系统。
背景技术
作为用于在多处理器系统或共享的存储器系统中保持高速缓冲一致性的方法,存在SMP(对称多处理)系统和ccNUMA(高速缓冲一致性非均匀存储器访问)系统。
在ccNUMA系统中,通常使用完全目录系统,其中把主存储器分割用于具有大小的每个块,和针对各个块把称之为目录的、用于保持高速缓冲一致性的信息存储在主存储器中。在许多情况下,块大小等于高速缓冲存储器的高速缓冲线大小。
存在用于保证用来存储目录的区域不同于主存储器的区域的方法。然而,当提供不同于主存储器的存储器以便存储目录时,尽管可以确保被用作主存储器的区域,不过却增加了系统的成本。
另一方面,通常被特别用作服务器的系统的主存储器是DIMM(双列直插存储器模块),其在例如比率8∶1的1的部分存储奇偶信息或错误校正码的校验位。还存在一种方法,其中比率为8∶1的1的部分被用作用于存储目录而不是奇偶信息的区域。然而,对于被用作服务器的系统的主存储器(即DIMM)来说,重要的是保证所存储数据的可靠性(即在数据中没有错误)。
在除ccNUMA系统之外的系统中,即在SMP系统等中,其中在主存储器中存储除数据之外的东西并不重要,通过在一个字节的部分中存储SEC-DED ECC(单错误校正,双重错误检测,错误检验和校正)或者通过以每多次读取为单位检查数据,来使用S8EC-D8ED ECC(单8位组错误校正,双8位组错误检测,错误检验和校正)系统。特别地是,在后一种情况下,即便在可买到的由例如18个芯片构成的DIMM中一个芯片故障,也可以借助数据校正来运用DIMM。
据此,当使用其中被用作服务器的系统是完全目录系统的ccNUMA系统时,希望确保用于目录的区域,同时提供数据完整性或数据保证,借此能够像SMP系统一样忍受DIMM的一个芯片故障。
另一方面,已经提出诸如主机之类的体系结构,其中主存储器被划分为单元,每个单元被称为页面,并且对于每个页面来说存储被称为存储键的信息。通过在主存储器的区域内存储例如4位的键信息,可以提供只有当包括相同的键信息时才允许访问的存储器保护功能。然而,在近来的多处理器系统中,已经增大了主存储器的容量。据此,已经与主存储器容量的增大成比例地增加了页面数目,并且还增大了键信息的总量。对于主存储器来说通常使用便宜且被标准化的DIMM。据此,很难以适度的价格单独构成用于存储键信息的区域。
从而,由DIMM所构成的主存储器的一部分区域被转用作键信息的存储区域。从而,通常被用作主存储器区域的区域被用于存储键信息,使得难以改进主存储器的利用效率。
[专利文献1]日本已公开第11-232129号专利公报
[专利文献2]日本已公开第9-120671号专利公报
[专利文献3]日本已公开第2006-252545号专利公报
[专利文献4]日本已公开第54-57848号专利公报
在常规的多处理器系统或共享的存储器系统中,主存储器的一部分区域被用于存储用于保持高速缓冲一致性的信息、用于数据保证的信息、用于保护存储器的信息等,从而存在一个问题:难于执行数据保证,同时改进主存储器区域的利用效率,而不会提高系统的成本。
【发明内容】
据此,本发明一方面的目地是提供一种错误判断电路。所述错误判断电路包括:第一EOR电路树,用于在使用里德-索罗蒙代码的SmEC-DmED中,通过在伽罗瓦扩展域GF(2m)中相加,针对m位块单元数据,由与作为受保护以免于错误的原代码的多项式表达相关的多项式余项计算来生成校正码的校验位;第二EOR电路树,用于当要被检测错误并且可能混有错误的代码的多项式表达为Y(x)时,相对于代码C(x),根据Sn=Y(αn)生成检验子,其中把校验位添加到原代码;和错误检测电路部件,用于根据是否满足检验子方程式S12=S0S2来检测是否存在一个块错误、两个块错误或没有错误。
借助于特别是在权利要求中所指出的元素和组合,将实现并获得实施例的目的和优点。
应当理解,以上概括描述以及以下详细描述均是示例性的和解释性的,而并非是限制所要求的实施例。
【附图说明】
图1是用于图示在本发明一个实施例中的共享的存储器系统的框图;
图2是用于图示DIMM的结构的图;
图3是用于图示通过使用两个DIMM来提供16字节数据宽度的错误检测和校正处理的情况的图;
图4是用于图示通过使用两个DIMM来执行错误检测和校正处理的情况的图,其中借助两次交织的两次读取被认为是一个单位;
图5是用于图示生成矩阵的例子的图;
图6是用于图示生成矩阵的例子的图;
图7是用于图示编码电路的框图;
图8是用于图示编码电路的EOR电路树的结构的电路图;
图9是用于图示解码电路的框图;
图10是用于图示用于获得检验子的矩阵的例子的图;
图11是用于图示用于获得检验子的矩阵的例子的图;
图12是用于图示错误检测电路部件的电路图;
图13是用于图示对数变换的例子的图;和
图14是用于图示错误校正电路部件的电路图。
【具体实施方式】
依照所公开的错误判断电路和存储器共享系统,使用第一EOR电路树、第二EOR电路树和错误检测电路部件。第一EOR电路树用于在使用(k,k-3)里德-索罗蒙代码(k是不超过2m的自然数)的SmEC-DmED中,当P(x)是伽罗瓦域GF(2)中的m阶(m是不小于8的自然数)本原多项式、伽罗瓦扩展域GF(2m)中的本原元素是α并且P(x)=0的根是αi(i=0,...,m-1)时,通过在伽罗瓦扩展域GF(2m)中相加,针对m位块单元数据,由与作为被保护以避免错误的对象的原代码的多项式表达I(x)有关的多项式余项计算C(x)=x2I(x)modP(x)来生成校正码的校验位。第二EOR电路树用于当作为被检测的对象并且可能混有错误的代码的多项式表达为Y(x)时,相对于代码C(x),根据Sn=Y(αn)(n=0,1,2)来生成检验子S0、S1、S2,其中把校验位添加到原代码。错误检测电路部件根据是否满足S12=S0S2来检测存在一个块错误、两个块错误或没有错误,并且根据在伽罗瓦扩展域GF(2m)中的S0αp=S1检测块错误的位置p。
通过如上所述的使用里德-索罗蒙码对在主存储器中存储并从其中读取的数据执行编码和解码处理,可以生成主存储器的空白区域。通过把所生成的区域转用于另一应用并且通过保持错误校正强度为与常规程度相同的程度,可以在改进主存储器区域的利用效率的同时执行数据保证。
以下,将参考附图描述本发明的错误判断电路和共享的存储器系统的各实施例。
图1是用于图示依照本发明一个实施例的共享的存储器系统的框图。图1中所示的共享的存储器系统是ccNUMA系统的多处理器系统。共享的存储器系统具有这样的结构,其中多个节点1通过公知的连接装置2连接。这里为便于描述,只图示了一个节点1。节点1包括诸如CPU(中央处理器)之类的处理器11、目录控制器(DC)12、主存储器13和高速缓冲存储器14。由于使用ccNUMA系统,所以除数据之外,用于保持在高速缓冲存储器14中存储的数据的一致性的目录信息也被存储在主存储器13中。
如下所述,编码电路包括第一EOR电路树,第一EOR电路树用于在使用(k,k-3)里德-索罗蒙代码(k是不超过2m的自然数)的SmEC-DmED中,当P(x)是在伽罗瓦域GF(2)中的m阶(m是不小于8的自然数)本原多项式、伽罗瓦扩展域GF(2m)中的本原元素是α并且P(x)=0的根是αi(i=0,...,m-1)时,通过在伽罗瓦扩展域GF(2m)中相加,针对m位块单元数据,由与作为受保护以免于错误的对象的原代码的多项式表达I(x)有关的多项式余项计算C(x)=x2I(x)modP(x)来生成校正码的校验位。另一方面,解码电路包括第二EOR电路树,第二EOR电路树用于当作为要检测的对象并且可能混有错误的代码的多项式表达为Y(x)时,相对于代码C(x),根据Sn=Y(αn)(n=0,1,2)来生成检验子S0、S1、S2,其中把校验位添加到原代码;并且解码电路还包括错误检测电路部件,错误检测电路部件用于根据是否满足S12=S0S2来检测存在一个块错误、两个块错误还是没有错误,并且用于根据在伽罗瓦扩展域GF(2m)中的S0αp=S1来检测块错误的位置p。如下所述,错误判断电路包括第一EOR电路树、第二EOR电路树和错误检测电路部件。
注意在实施例中,为了描述,k=36。在这种情况下,(k,k-3)里德-索罗蒙代码是(36,33)里德-索罗蒙代码。
此外,当m是小于8的自然数时,(k,k-3)里德-索罗蒙代码无解,从而重要的是m为不小于8的自然数。在实施例中,为了描述,m=8。然而显然可以例如m=16等。
主存储器13包括多个DIMM 130。如图2中所示,每个DIMM 130包括18个存储器芯片131-1到131-18。每个存储器芯片131-1到131-18具有4位的数据宽度。图2是用于图示DIMM 130的结构的图,并且省略了除数据线之外的地址线等。
使用了通过使用ECC而能够校正数据的DIMM 130的主存储器13具有例如8字节+1字节(72位)的数据宽度。在这种情况下,假定DIMM 130可以忍受一个芯片故障是用于保证数据可靠性的条件,执行S4EC-D4ED是充分的。例如,已经知道可以通过相对于16字节的数据提供16位的校验位来提供S4EC-D4ED。由于在这种情况下数据和校验位的比率是8∶1,如图3中所图示,因此在DIMM 130中不存在用于存储额外数据的位。图3是用于图示通过使用两个DIMM来提供16字节的数据宽度的检测和校正处理的情况的图。
在该实施例中,通过把借助2次交织的两次读取作为一个单位,在S8EC-D8ED代码的情况下,即便在一个芯片故障的情况下,它仍然被视为8位块的单个错误。由此,可以保证8位(1字节)的区域用于存储额外的数据,并且当在另一芯片中没有错误时可以校正数据。图4是用于图示通过使用两个DIMM 130来执行其中借助两次交织的两次读取被认为是一个单位的错误检测和校正处理的情况的图。
在该实施例中,构造能够进行高速处理的编码电路和解码电路,其使用伽罗瓦扩展域GF(28)中的(36,33)里德-索罗蒙代码作为S8EC-D8ED代码。例如,P(x)=x8+x4+x3+x2+1用于在伽罗瓦域GF(2)中的第8阶本原多项式P(x)。假定伽罗瓦扩展域GF(28)的本原元素(也是伽罗瓦域GF(2)的本原元素)为α,由于本原多项式P(x)是第8阶多项式,所以对于P(x)=0来说存在8个根,并且该些根变为αi(i=0,...,7)。
<编码电路>
S8EC-D8ED是能够校正1字节错误并且检测2字节错误的代码。当在代码之间的距离为3时,其中数据和错误校正码总共为36个字节的里德-索罗蒙代码变为(36,33)里德-索罗蒙代码,其数据部分为33字节并且错误校正码为3字节。(36,33)里德-索罗蒙代码的生成多项式G(x)可以由以下表达式来表示。
G(x)=(x+α0)(x+α1)(x+α2)
在这种情况下,假定作为被保护以免于错误的对象(即,错误保护对象)的原代码的多项式为I(x),错误校正码的多项式C(x)由多项式余项计算C(x)=x2I(x)modP(x)来表示,并且保护的代码F(x)由F(x)=x2I(x)+C(x)来表示。
当由高速硬件电路提供编码处理时的问题为上述多项式余项计算的一部分。如果多项式余项计算可以由与现有SEC-DED ECC类似的生成矩阵形式来表示,那么在硬件上设置编码处理变得容易。
原代码的33字节的数据位串D={d263,d262,...,d0}由以下多项式来表示。在下面的多项式中,i表明33字节的块的字节位置(字节0到32),并且j表明字节块中的位位置(位0到7),并且每个d为0或1。
方程式1
I(x)=Σi=032(Σj=07d(8i+j)αj)xj]]>
这里,当其中只有单个位为1的数据位串D被定义为Di={其中只有第(263-i)位为1并且其它位为0的位串}时,并且假定Ii(x)是对应于各数据位串Di的多项式,原代码的多项式I(x)按照线性由对应于其中di=1的数据位的多项式Ii(x)的线性和来表示。在Di、Ii(x)、di中,i是从0到263的自然数。从而,错误校正码的多项式C(x)由Ci(x)=X2Ii(x)modP(x)的线性和、即由C(x)=∑Ci(x)来表示。据此,预先获得与数据位串Di相关的错误校正码的多项式Ci(x),并且可以根据错误校正码的多项式Ci(x)来构成生成矩阵。
根据本原多项式P(x)的P(α)=0的属性,在该实施例中,通过重复地使用α8=α4+α3+α2+1,把α的阶设置为不超过7。由此,如下表示错误校正码的多项式Ci(x)。
方程式2
Ci(x)=Σk=02(Σj=07Ci[8k+j]aj)xk]]>
在错误校正码的多项式Ci(x)中,K=0、1、2,Ci[n](在上述多项式中n为8k+j)的“i”是“C”的指数,“[n]”表明“i”的指数,每个Ci[n]是0或1,并且i是0到263。{Ci[n]}(n=23...0)的线性组合变为校验位串{Cn}(n=23...0)。
方程式3
C(x)=Σi∈(di=1)Ci(x)]]>
=Σi∈(di=1)Σk=02(Σj=07Ci[8k+j]aj)xk]]>
由于上述方程式是在伽罗瓦扩展域GF(28)中相加,所以方程式实质上是EOR。
图5和图6是用于图示如上所述获得的生成矩阵的例子的图。在图5和图6中,对于为每个字节划分的块编号Block35到Block3,图示了生成矩阵c23到c0。对于块编号的使用方法本身来说,下面将随同解码电路的操作进行描述。注意,为24位的错误校正码分配块编号Block2到Block0。
注意,为了改进对其中数据位变为全0的数据破坏的检测的耐受属性,可以进行保护动作。例如,Cn的一些被反转并存储在DIMM 130中。注意,这种保护动作本身是公知的,因此将省略与之相关的描述。
图7是用于图示编码电路的框图,并且图8是用于图示编码电路的EOR电路树的结构的电路图。在节点1中的处理器11之内或处理器11之外提供编码电路。
如图7中所示,在EOR电路树21中输入33字节的数据,并且从中输出24位的校验位。EOR电路树21包括如图8中所示连接的EOR电路211,并且输出关于数据[262]到数据[5]的校验位CheckBit[23]。EOR电路树21对于在图6和7中图示的生成矩阵中的全部“1”位求EOR。
数据和错误校正码的校验位被存储在主存储器13(DIMM 130)中,如图4所示。
<解码电路>
图9是用于图示解码电路的框图。解码电路包括EOR电路树31、错误检测电路部件32和错误校正电路部件33,它们如图9中所示连接。在节点1中的处理器11之内或处理器11之外提供解码电路。
EOR电路树31具有与在图8中所示的EOR树21相同的结构,因此省略了图示和描述。EOR电路树31根据所编码的数据ReadData[263:0]和校验位ReadCheckBit[23:0]生成下述检验子syndrome0[7:0]、syndrome1[7:0]、syndrome2[7:0]。
在该实施例中,对于S8EC-D8ED生成三种类型的8位检验子。在形式上,这实际上与生成24位的检验子相同。然而,为了简单描述错误检测和校正处理,检验子由S0、S1、S2表示。假定从主存储器13(DIMM 130)读取的代码由用于数据和校验位两者的36字节的多项式表达Y(x)来表示,那么检验子S0、S1、S2由检验子生成矩阵的抽象表达式Sn=Y(αn)(n=0,1,2)来表示。即,Y(x)是作为检测错误的对象(即,错误检测对象)的代码的多项式表达。这里,所读取的数据串D’由D’=d’263,...,d’0,c’23,...,c’0来表示。由于数据在被存储到DIMM 130中期间可能会被破坏或者混有错误,所以当把符号“’”附加到读取后的数据以便与存储之前的数据相区分时,所读取的代码由以下多项式表达Y(x)来表示。
方程式4
Y(x)=Σi=032(Σj=07d′(8i+j)aj)xi+2+Σi=02(Σj=07c′(8i+j)aj)xi]]>
这里,与生成上述生成矩阵时的情况类似,检验子S0、S1、S2也由其中在由读取数据和校验位所形成的位串中只有一个位是1的线性组合来表示。在这种情况下,也与编码情况类似,通过使用α8=α4+α3+α2+1降低阶次来获得用于求得检验子S0、S1、S2的生成矩阵。尽管涉及校验位,不过获得用来求得检验子S0、S1、S2的矩阵的方法类似于编码时所使用的方法,因此将省略该描述。
在下面的矩阵表示中,S0=∑S0iαi,S1=∑S1iαi,S2=∑S2iαi,并且各S0i、S1i、S2i为值0或1。
图10和图11是用于图示用于求得检验子的矩阵的例子的图。图10和图11图示了对于块编号Block35到Block0来说,检验子S0的生成矩阵元素S07到S00、检验子S1的生成矩阵元素S17到S10和检验子S2的生成矩阵元素S27到S20。
图12是用于图示错误检测电路部件32的电路图。错误检测电路部件32包括解码/编码电路41、附带指数部分mod255的加法器电路42、错误判断电路43、反相电路44和重排电路45。
当如上所述获得的三个检验子S0、S1、S2的全部值都为零时,不存在任何错误。当至少一个检验子不为零时,存在某种类型的错误。当至少一个检验子不为零时,如果在伽罗瓦扩展域(28)中满足方程式S12=S0S2,那么存在可以恢复的一个块错误。作为里德-索罗蒙代码,当不满足方程式相等时,存在两个块错误。然而,绝不会出现满足方程式相等并且S0=0,即至少存在三个块错误。当不满足方程式相等时,至少存在两个块错误,并且由于这超出了S8ED的性能,所以无法校正(恢复)数据。然而,可以借助D8ED的性能来检测数据。依照这种方式,当无法校正数据时,重要的是由系统通知错误,或者执行适当的处理,诸如错误标记处理。此外,这里考虑α255=1也是很重要的。
如上所述,由于检验子S0、S1、S2由S0=∑S0iαi、S1=∑S1iαi、S2=∑S2iαi的7次以下的α项之和来表示,所以在这种情况下不容易评估方程式S12=S0S2。从而,图13中所示的对数变换由解码/编码电路41针对评估和下述的错误校正处理两者来执行。图13是用于图示对数变换的例子的图,并且图示了对数变换图表的内容。当按照对数变换图表同时把Sn7、Sn6、Sn5、Sn4、Sn3、Sn2、Sn1、Sn0(n=0,1,2)认为是一个十六进制数两位数字(二进制数八位数字)的数值时,交点表示αk的幂指数k。当存在位错误时使用对数变换图表,使得检验子S0和检验子S1都不为零。据此,对数变换图表的定义域不小于1。注意,对数变换图表的内容由十六进制数来图示。通过针对每个αn(n=0,...,254)按照α8=α4+α3+α2+1降低阶次来获得对数变换图表。
依照这种方式,根据从EOR电路树31所输出的syndrome0[7:0]、syndrome1[7:0]、Syndrome2[7:0],三个解码/编码电路41在对数变换之后输出检验子Alog_Syndrome0[7:0]、Alog_Syndrome1[7:0]、Alog_Syndrome2[7:0],并且输出用于表明一个块错误的SingleBlockErrorData[7:0]。
加法器电路42包括累加器421、AND电路422、OR电路423和递增电路424。在OR电路423中输入累加器421的进位。忽略递增电路424的进位。加法器电路42执行包括mod255操作的余项计算,以便计算块错误的判断和所述块错误的位置。
在图12中,在上侧的加法器电路42中经由反相电路44输入从在最上侧的解码/编码电路41输出的检验子Alog_Syndrome0[7:0],并且在上侧的加法器电路42中输入从顶部起的第二个解码/编码电路41输出的检验子Alog_Syndrome1[7:0]。上侧的加法器电路42输出用于表明一个块错误的位置(即,要校正的字节的位置)p的SingleBlockErrorPos[7:0]。
此外,在图12中,在下侧的加法器电路42中输入从在最上侧的解码/编码电路41输出的检验子Alog_Syndrome0[7:0],并且在下侧的加法器电路42中输入从在最下侧的解码/编码电路41输出的检验子Alog_Syndrome2[7:0]。通过幂指数部分的相加提供在对数变换之后的检验子S0和检验子S2的积,使得在下侧的加法器电路42输出Alog_Syn2_PL_Syn0_mod[7:0],其是幂指数部分的相加结果。依照这种方式,提供考虑α255=1(=α0)的幂指数部分的相加。
错误判断电路43包括累加器431、匹配检测电路432、反相电路433、AND电路434和NOR电路435。在累加器431中输入从EOR树31输出的Syndrome0[7:0]、Syndrome1[7:0]、Syndrome2[7:0]。从累加器431输出用于表明不存在错误的位No_Error。如图12中所示,在匹配检测电路432中输入从重排电路45输出的Alog_Syndrome1[6:7,0]和在下侧的加法器电路42的Alog_Syn2_PL_Syn0_mod[7:0],所述重排电路45执行从顶部起的第二个解码/编码电路41输出的检验子Alog_Syndrome1[7:0]的位的重新排列。从AND电路434输出用于表明一个块错误的位SingleBlockError。从NOR电路435输出用于表明两个块错误的位DoubleBlockError。依照这种方式,如果考虑α255=1(=α0),那么通过重排指数部分的位来实现S12,并且通过执行检验子S0、S2的匹配检测来获得分类。
图14是用于图示错误校正电路部件33的电路图。错误校正电路部件33包括解码电路51、36个AND电路52和36个EOR电路53,它们如图14中所示连接。在解码电路51中输入从在图12中上侧的加法器电路42输出的用于表明一个块错误的位置p的SingleBlockErrorPos[7:0]。在相应的AND电路52中输入解码电路51的36位的输出。此外,解码电路51输出用于表明不少于一个块错误的位置的值BlockPosError。在每个AND电路52中还输入从解码/编码电路41输出的用于表明一个块错误的SingleBlockErrorData[7:0]。在上侧的33个EOR电路53中输入相应AND电路52的输出和数据ReadData[253:255]到ReadData[7:0],并且在上侧的33个EOR电路53输出校正数据CorrectData[263:255]到CorrectData[7:0]。此外,在下侧的三个EOR电路53中输入相应AND电路52的输出和校验位ReadCheckBit[23:16]、ReadCheckBit[15:8]、ReadCheckBit[7:0],并且在下侧的三个EOR电路53输出校正校验位CorrectCB[23:16]、CorrectCB[15:8]、CorrectCB[7:0]。即,从错误校正电路部件33输出用于表明不少于一个块错误的位置的值BlockPosError、校正数据CorrectData[263:0]和校正校验位CorrectCB[23:0]。
由于从错误校正电路部件33输出的校正数据CorrectData[263:0]变为经过错误校正处理(即,校正之后)的校正数据,所以在不是两个块错误的情况下可以使用校正数据。此外,当在处理之后没有使用从错误校正电路部件33输出的校正校验位CorrectCB[23:0]时,可以省略在错误校正电路部件33当中用于生成校正校验位CorrectCB[23:0]的电路部分。此外,当用于表明一个块错误的位置p的SignalBlockErrorData[7:0]的值不在0到35的范围时,即不小于36,则判断为大量块错误,并且与两个块错误类似地处理。
如果满足方程式S12=S0S2,那么检验子S0表明校正数据,并且通过在伽罗瓦扩展域GF(28)中的S0αp=S1来获得要校正的字节位置p。据此,通过利用关于在读取数据的块位置p处存在的8位数据的检验子S0来运算EOR而校正错误,并且可以保证S8EC的性能。
注意,由于满足α255=1(=α0),当在幂指数相加时构成用于在伽罗瓦扩展域GF(28)中方程式S12=S0S2的等号形成检测或错误位置检测的电路时,显然重要的是考虑存在幂指数的相加结果可能不仅是0而且是255的情况。
接下来,将描述上述实施例的编码电路和解码电路的电路规模和等待时间。
根据生成矩阵的大小应当理解,编码电路的电路规模是大约140位的24个EOR电路。由于使用EOR电路树,所以编码电路的等待时间大约为2位的EOR电路的9个步骤。
在解码电路中,用于生成检验子(由于稀疏矩阵的缘故,检验子S0略小于其它检验子)的电路的规模是大约140位的24个EOR电路。由于类似于编码电路使用EOR电路树,所以用于生成检验子的电路的等待时间大约为2位的EOR电路的9个步骤。错误检测电路部件和错误校正电路部件要求至少三个用于从8位到8位的对数变换的电路,以便根据生成的检验子执行错误校正处理,还要求用于错误判断的一个8位累加器和匹配检测电路以及一个用于校正单个块的电路(对应于264位的AND-EOR电路)。通过AND-OR电路构成作为对数变换电路起作用的8位解码/编码电路。据此,重要的是错误检测电路部件和错误校正电路部件的等待时间略长于用于生成检验子的电路的等待时间。
即使当在DIMM 130当中的一个芯片被破坏时,如在上述实施例中简化的ECC的校验位也可以校正数据。在上述例子的情况下,在36个字节当中的33个字节变为数据区域(32个字节是原数据,一个字节是新规确保用于额外数据的空白区域),如图4中所示。通常,在上述情况中,如图3中所示,主存储器13把校验位存储在例如比率8∶1的1的部分(2个字节)。然而在该实施例中,即使如图4中所示当校验位被存储在比率11∶1的1的部分(3个字节)中时,也可以保证与过去相同的数据可靠性。
依照这种方式,在上述实施例的情况下,相对于32字节数据,在维持与过去相同的错误校正和检测性能的同时,通过减少所要求的校验位的数目,可以在主存储器13中确保能够存储一个字节的额外数据(或信息)的空白区域。通过使用一个字节的空白区域,可以存储ccNUMA的目录信息、主机的键信息等。即,主存储器13的一部分区域可以用于用来保持高速缓冲一致性的串信息、用来保证数据的信息、用来保护存储器的信息等,同时保持与过去相同的错误校正和检测性能。据此,可以在不提高系统成本的情况下改进主存储器13的区域的利用效率,以便保证数据。
本文所记载的所有例子和条件语言出于教导目的,以帮助读者理解发明人为改进现有技术所贡献的发明和原理,并且将被解释为不限于这些具体记载的例子和条件,在说明书中这些例子的结构也不涉及对本发明的优劣的描述。尽管已经详细描述了本发明的实施例,不过应当理解,在不脱离本发明的精神和范围的情况下,可以对其进行各种改变、替换和修改。