抑制比特错误校验码方案的制作方法

xiaoxiao2020-7-22  5

专利名称:抑制比特错误校验码方案的制作方法
技术领域
本发明的实施例涉及抑制比特错误校验码方案。
背景技术
当数据进出存储器时,会发生各种类型的错误。更普遍的,它们是单个比特错误, 但是2比特以及其它类型的错误也可能发生。错误校验一般用于在将数据写入存储器或从存储器读出时校验数据的完整性。错误校验可以包括错误检测和/或错误校正。错误检测是检测存在由传输期间的噪声或其它故障引起的错误的能力。错误校正是重建初始的、无错数据的附加能力。有很多可用的方案。错误校正码(ECC)是错误校验方案(特别是错误校正)的一个例子。在ECC中, 例如,当通过存储器总线发送数据时,ECC产生逻辑(例如,异或算法)对该数据进行计算以产生ECC。然后将该数据和ECC —起存储在存储器中。当随后从存储器访问数据时(与 ECC 一起),将ECC错误解码逻辑应用到该数据以产生错误检测和校正信息。然后能够使用该信息来校正该数据。


通过示例的方式,而不是通过限制的方式在附图的图形中说明了本发明的实施例,其中相似的标记数字指代类似的元素,并且其中附图1说明了依照本发明的实施例的系统。附图2说明了根据本发明的实施例的方法。附图3说明了依照本发明的实施例的方法。附图4说明了依照本发明的实施例的状态图。
具体实施例方式下文描述的示例仅为说明的目的,并且决不意图限制本发明的实施例。因此,对于详细描述了示例的地方,或者提供了一个或多个示例的地方,需要理解的是该示例不被解释为穷举的,并且不应将本发明的实施例限制为所描述和/或说明的示例。附图1是说明了根据实施例的计算系统100的框图。在一些实施例中,计算系统 100可包括多个处理器102A、102B、102C,直到N个处理器。如本文使用的,处理器102A、 102B、102C中任意给定的一个可以被称作102N。本文讨论的“处理器”涉及用于完成计算任务的硬件和软件资源的任意组合。例如,处理器可包括中央处理单元(CPU)或微控制器来执行用于根据预定义的指令集处理数据的机器可读指令。处理器可以包括具有多个处理核的多核处理器,并且处理器可替代地指代可以包括在多核处理器中的处理核,其中操作系统可将该处理核感知为具有全套执行资源的分立的处理器。存在其它可能。系统100可另外包括存储器106。存储器106可存储能够被执行的机器可执行指令132,和/或能够被访问、在其上运算、和/或操作的数据。本文提到的“机器可执行”指
5令涉及可被一个或多个机器理解的用于执行一个或多个逻辑操作的表达。例如,机器可执行指令132可包括可由处理器编译器解释的用于在一个或多个数据对象上执行一个或多个操作的指令。然而,这只是机器可执行指令的示例,并且本发明的实施例并不限于此方面。存储器106可包括,例如,只读、海量存储、随机存取存储器、非易失性存储器、和/或一个或多个其它类型的机器可访问存储器。在多处理器系统中,其中存储器是共享的并且使用本地高速缓存104A、104B、104C(处理器本地的高速缓存)进行同步,存储器中存储的数据可被称为高速缓存行(cache line)。逻辑130可包括在系统100的任意部分上或其中。逻辑130可包括硬件、软件、或硬件和软件的组合(例如固件)。例如,逻辑130可包括电路(即,一个或多个电路)来执行本文描述的操作。例如,逻辑130可包括一个或多个数字电路、一个或多个模拟电路、一个或多个状态机、可编程逻辑、和/或一个或多个ASIC(专用集成电路)。逻辑130可以是硬布线的以执行一个或多个操作。可选地或附加地,逻辑130可体现在存储在存储器(例如存储器106)中的机器可执行指令132中,以执行这些操作。可选地或附加地,逻辑130 可体现在固件中。逻辑可包括在系统100的各种部件中,例如在存储器控制器114中。尽管逻辑130被示出为存储器控制器114中的分离的框,但本领域的普通技术人员可以理解, 存储器控制器114和逻辑130可另外包括在同一框中。一般而言,逻辑130可用于通过本文描述的各种部件来执行各种功能。集线器控制器108可包括主机桥/集线器系统,其可将处理核102A、102B、102C中的每一个与存储器106相互耦合。集线器控制器108可包括一个或多个集成电路芯片,例如从可从Intel 公司商业获得的集成电路芯片组(例如,图形、存储器和I/O控制器集线器芯片组)中选择的那些,然而其他一个或多个集成电路芯片也可以被使用,或可以替代地被使用。例如,集线器控制器108可包括输入/输出控制集线器(ICH)、存储器控制集线器 (MCH)、或图形/存储器控制集线器(GMCH)。系统100可包括两个集线器控制器,例如ICH 和MCH,或仅单个集线器控制器,然而本发明的实施例不被系统100中的集线器控制器的数目所限制。集线器控制器108可通过存储器总线112与存储器106进行通信,以及通过系统总线Iio与处理器102A、102B、102C进行通信。集线器控制器108可包括存储器控制器114 来管理处理器102A、102B、102C和存储器106以及系统100中的其它设备(未示出)之间的数据移动。可选择地,存储器控制器114可与处理器102A、102B、102C中的一个或多个集成在管芯(die)上。系统100还可包括目录高速缓存116。目录高速缓存116可保持关于每一块存储器或高速缓存行的信息。例如,目录高速缓存116可指示每一块存储器的状态,例如,共享的、非高速缓存的、或独占的;本地高速缓存(对应于处理器102A、102B、102C中的一个)具有给定高速缓存行的拷贝;并且不管该高速缓存行是否为脏。例如,在一个实施例中,每一个对数据的请求被发送到目录高速缓存116。目录高速缓存116然后可将该对数据的请求转发到任意数目的处理器102A、102B和102C,目录高速缓存116指示这些处理器已经将数据存储在其本地高速缓存中。作为示例,目录高速缓存116可为N个节点维护N比特向量图,其中每一个比特指示相应的节点是否维护给定高速缓存行的高速缓存的拷贝。
处理器102A、102B、102C、存储器106以及总线110、112可包括在单电路板中,诸如,例如系统主板118,但是本发明的实施例不限于此方面。附图2说明了根据本发明的实施例的方法。附图2的方法可开始于框200,并继续到框202,在框202,该方法可包括确定事件的发生和未发生中之一,该发生和未发生中之
一导致事件确定。事件可包括,例如,数据被高速缓存。例如,在一个实施例中,处理器102N可修改数据,将它高速缓存到其本地高速缓存中,并且然后将该数据写回到存储器,例如存储器 106。在这个示例中,当数据被存储在本地高速缓存中时可确定事件发生。作为另一个示例, 事件可包括存储消息。例如,在某些系统(诸如超级计算机)中,运行在系统中各微处理器上的进程可相互传递消息。在这个示例中,当一个进程为另一个进程产生并存储了消息,可确定事件发生。在框204,该方法可包括处理具有事件比特的码,该处理根据所述事件确定和所述码。“事件比特”是指码中的比特,其可被设置以指示事件的发生或未发生。事件比特可包括静态比特位置,例如,比特位置0,或者它可包括动态比特位置,例如,比特位置3,以指示特定处理器已经产生了事件。因此,如果确定已经发生了事件,事件比特被设置为一个值; 否则,如果确定没有发生事件,事件比特被设置为一个不同的值。“设置”可指代设置比特为 “1”以指示事件的发生,或设置比特为“0”以指示事件的未发生。可替代地,“设置”可指代设置比特为“0”以指示事件的发生,或设置比特为“1”以指示事件的未发生。在上下文中,“根据所述事件确定和所述码来处理所述码”是指在框206中,确定所述码的事件比特是否对应于所述事件确定;如果不对应,该码被编码,反之不进行处理。 如果事件比特与事件确定矛盾,则事件比特不对应于事件确定。例如,如果事件比特具有值 “0”,其中该值被配置为表示该事件被禁止或没有发生;并且如果确定事件已经发生,则事件比特不对应于事件确定。相反,如果事件比特指示了与事件确定不矛盾的事件的发生,则事件比特对应于事件确定。例如,如果事件比特具有值“1”,其中该值被配置为表示事件已经发生;并且如果确定事件已经发生,则事件比特对应于事件确定。在框208,如果事件比特不对应于事件确定,则所述码被编码以产生对应于所述事件确定的抑制比特(poison bit)。如本文使用的,“编码”是指对码的一个或多个比特进行抑制。如本文使用的,“抑制”是指应用抑制掩码(例如,固定模式码)以在事件比特位置处存储比特1或比特0来指示事件的发生或未发生,而不用改变下层码的常规效力。另外,当错误校验逻辑应用于所述码以产生第一处理后的码,并且应用到解码后的码以产生第二处理后的码时,仅第一处理后的码和第二处理后的码中的一个是不可校正的。换句话说,当从存储器读回时,具有另外编码的数据应能够相对容易地与不具有另外编码的数据相区别。 这甚至也可以是存在普通存储器错误时的情形。这将在附图3中更详细地解释。在本发明的实施例中,例如,如果下层错误校验码的错误校验和/或校正能力实际上与未编码的错误校验码一样准确,则抑制掩码不改变下层错误校验码的常规效力。此外,优选地绝不会混淆各种类型的错误。例如,常规有效的错误校验码是一种这样的码,其中,对于在同一存储设备中的1比特或1线错误,或者2比特错误不会发生混淆;其中无记载数据损坏(SDC)错误和检测到的不可恢复错误(DUE)在统计上很少发生(例如,分别是其它两比特错误的MOO万分之一,chipkill的2亿5千万分之一)。在一个实施例中,编码可包括应用抑制掩码以抑制单个比特。如本领域的普通技术人员将理解的,用于对错误校验码进行编码的逻辑依赖于错误校验码本身。如本领域的普通技术人员将理解的,错误校验码(诸如ECC码)的产生通常是劳动密集性工作并且是秘密的,或者甚至交换秘密数据。给定编码所基于的码的复杂度,本领域的普通技术人员可以理解用于执行另外编码的逻辑需要数学分析,以及试验和错误。然而,要满足的需求的描述仍然会使本领域的技术人员根据本发明的实施例产生所述逻辑。例如,在一个实施例中,如果数据已经被高速缓存(其中比特1指示数据已经被高速缓存),则错误校验码01010100101101000 (其中,比特位置0包括事件比特以指示数据是否已经被高速缓存)将需要通过抑制比特位置0以存储比特1而不是比特0,来根据事件被编码。在这个示例中,编码后的错误校验码将产生01010100101101001。另一方面, 如果数据已经被高速缓存(其中,比特1指示数据已经被高速缓存),则产生的错误校验码 01010100101101001 (其中,比特位置0用于指示数据是否已经被高速缓存)将不需要被编码。在一个实施例中,事件比特对应于动态比特位置以指示特定的处理器102N已经高速缓存了数据。例如,在具有8个处理器(处理器0-7)的系统中,其中高速缓存处理器 102N是处理器6,事件比特对应于比特#7。因此,如果错误校验码包括01010100100101000, 设置比特以指示处理器6已经在其高速缓存中高速缓存了数据会产生错误校验码 01010100101101000。同样地,如果处理器#2是高速缓存处理器,则错误校验码会产生错误校验码01010100100101100。在另一个实施例中,事件比特对应于静态比特以指示数据已经被任一个处理器102N高速缓存。例如,如果错误校验码包括01010100100101000, 并且事件比特包括比特0以指示处理器已经高速缓存了数据,则错误校验码包括 01010100100101001,不管是处理器2还是处理器7是高速缓存处理器。在一个实施例中,所述码可包括错误校验码。错误校验码可包括,例如,错误校正码(ECC)或CRC(循环冗余码)。然而,本发明的实施例不被这些实施例所限制。在一个实施例中,处理后的码可包括与对应的数据一起存储在存储器中的ECC 码。例如,如附图4所示,一旦数据402的高速缓存行可用于写入存储器106,ECC产生逻辑 404可以被应用到数据402以产生与数据402 —起存储在存储器106中的ECC (具有事件比特)406,以校正在数据402的存储期间可能发生的某些错误(例如,1或2比特的错误)。 如上所述,并且如在428的判定框所示,如果ECC 406的事件比特不对应于事件确定,使用抑制掩码408来编码ECC 406。如果ECC 406的事件比特对应于事件确定,则处理后的码 410与数据402 —起存储(不在框408应用抑制掩码)在存储器106中。附图2的方法可以在框206结束。在一个实施例中,高速缓存行可被划分为多个部分,并且对于高速缓存行的每个部分可产生错误校验码。例如,高速缓存行可被分为两等分,可为每一半产生错误校验码。 此外,对错误校验码进行编码可包括将单个掩码应用到至少一个高速缓存行部分以推断单个事件。可选地,可应用对应于高速缓存行的每个部分的掩码以推断多个事件。尽管这会导致更小的错误校正能力,但也会降低将无记载数据损坏(SDC)和/或检测到的不可恢复错误(DUE)混淆的可能。在根据附图2的方法保存错误校验码后,该方法可进一步继续到附图3的方法。 附图3的方法开始于框300,并继续到框302,在框302,该方法可包括从存储器读取所述码 (“读取码”)。在一个实施例中,参照附图4,该方法可包括与对应的数据402 —起从存储器106读取处理后的ECC码410。在框304,该方法可包括处理所述读取码以产生多个处理后的码。在一个实施例中,“处理所述读取码以产生多个处理后的码”是指解码所述读取码以产生解码后的读取码,在读取码上执行码校验以产生第一处理后的码,并在所述解码后的读取码上执行码校验以产生第二处理后的码。所述读取码是指从存储器读取的编码后的码。所述解码后的读取码是指应用编码所述码应用的码的反码而获得的码。参考附图4,在一个实施例中,从存储器106读取数据402和处理后的ECC 410。在这个方面,从存储器106读取的ECC 410被称为“读取码”。然后读取码被解码414以产生解码后的读取码418。读取码412通过码校验逻辑416以产生第一处理后的码420,并且解码后的读取码418通过码校验逻辑416以产生第二处理后的码422。可根据处理后的码产生码校验逻辑416。例如,如果处理后的ECC已经被抑制(即, 应用了抑制掩码到ECC),则产生码校验逻辑416,使得当从存储器106读取处理后的ECC 410 (读取码41 时,在解码后的读取码418上计算的码校验逻辑416导致没有错误或可校正的错误;并且在读取码412上计算的码校验逻辑416导致不可校正的错误。类似地,如果处理后的ECC没有被抑制,则产生码校验逻辑216,使得当从存储器 106读取处理后的ECC 210(读取码21 时,在解码后的读取码218上计算的码校验逻辑 216导致不可校正的错误,并且在读取码212上计算的码校验逻辑216导致没有错误或可校正的错误。同样,本领域的普通技术人员可以理解用于执行另外编码的逻辑可能需要数学分析以及试验和错误,以使得错误校正逻辑216以这种方式工作。在框306,该方法可包括从多个处理后的码中的一个识别可校正的码。如本文使用的,“可校正的码”是指多个处理后的码中的一个,其中作为ECC校验的结果,在处理后的码中仅有一个是不可校正的码,并且其它处理后的码或者没有错误,或者有可校正的错误。如果两个/所有处理后的码导致不可校正的错误,或者两个/所有处理后的码导致没有错误 /可校正错误,则发生混淆并且可校正的码不能被识别。下面的表1说明了可用于确定可校正的码是否能被识别的判定表的示例。在这个示例中,矩阵A是指在读取(编码后的)码上执行的ECC校验逻辑;矩阵B是指在解码后的码上执行的ECC校验逻辑。表顶部的栏表示通过在读取(编码后的)码上执行码校验而产生的第一处理后的码的结果的值;左边的栏表示通过在解码后的码上执行码校验而产生的第二处理后的码的结果。如表所示,在以下情况下码是不可校正的如果第一处理后的码和第二处理后的码均具有不可校正的错误;以及如果第一处理后的码不具有错误或具有可校正的错误。在另一方面,如果第一处理后的码和第二处理后的码中的一个具有不可校正的错误,并且第一处理后的码和第二处理后的码中的另一个不具有错误或具有可校正的错误,则存在可校正的码。在后一种情况,可校正的码是没有错误或具有可校正错误的处理后的码。
权利要求
1.一种用于抑制至少一个比特的装置,所述装置包括逻辑,所述逻辑用于产生与要存储在共享存储器中的高速缓存行对应的ECC (错误校正码),所述ECC具有事件比特;确定事件的发生和未发生中之一,以产生事件确定; 根据所述事件比特和所述事件确定来处理所述ECC码; 将处理后的ECC码和对应的高速缓存行存储于存储器中。
2.如权利要求1所述的装置,其中,所述共享存储器由多个处理器共享,并且要求所述对应的高速缓存行由所述多个处理器中的一个处理器存储,用于确定事件的发生和未发生中之一的所述逻辑包括用于确定所述一个处理器是否另外将数据高速缓存到其本地高速缓存中的逻辑。
3.如权利要求1所述的装置,其中,用于根据所述事件比特和所述事件确定来处理所述ECC码的所述逻辑包括用于如下操作的逻辑确定所述事件比特是否对应于所述事件确定,并且如果所述事件比特不对应于所述事件确定,则编码所述ECC以产生对应于所述事件确定的抑制比特。
4.如权利要求3所述的装置,还包括用于如下操作的逻辑 从所述存储器读取所述ECC ( “读取码”);处理所述读取码以产生第一处理后的码和第二处理后的码;至少部分地基于所述第一处理后的码和所述第二处理后的码来推断所述事件的发生。
5.如权利要求4所述的装置,其中,用于处理所述读取码以产生第一处理后的码和第二处理后的码的所述逻辑包括用于如下操作的逻辑解码所述读取码以产生解码后的读取码,对所述解码后的读取码执行码校验,以及对所述读取码执行码校验。
6.如权利要求5所述的装置,其中,用于至少部分地基于所述第一处理后的码和所述第二处理后的码来推断所述事件的发生的所述逻辑包括用于如下操作的逻辑识别可校正的码;以及读取所述可校正的码的所述事件比特以确定所述事件的发生和未发生中之一。
7.一种系统包括 多个处理器;共享存储器,其耦合到所述多个处理器;以及集成电路,其耦合到所述多个处理器,并且具有存储器控制器逻辑,所述存储器控制器逻辑用于产生与要存储在共享存储器中的高速缓存行对应的ECC (错误校正码); 确定事件的发生和未发生中之一,以产生事件确定; 根据所述事件确定来处理所述ECC ;以及将处理后的ECC和对应的高速缓存行存储于所述存储器中。
8.如权利要求7所述的系统,其中,要求所述对应的高速缓存行由所述多个处理器中的一个处理器存储,用于确定事件的发生和未发生中之一的所述存储器控制器逻辑包括用于确定所述一个处理器是否另外将数据高速缓存到其本地高速缓存中的逻辑。
9.如权利要求7所述的系统,其中,用于根据所述事件比特和所述事件确定来处理所述ECC码的所述逻辑包括用于如下操作的逻辑确定所述事件比特是否对应于所述事件确定,并且如果所述事件比特不对应于所述事件确定,则编码所述ECC以产生对应于所述事件确定的抑制比特。
10.如权利要求7所述的系统,其中,所述存储器控制器逻辑还用于 从所述存储器读取所述码(“读取码”);处理所述读取码以产生多个处理后的码;从所述多个处理后的码中的一个识别可校正的码;以及如果识别了可校正的码,则读取所述可校正的码的事件比特以确定所述事件的发生和未发生中之一。
11.如权利要求10所述的系统,其中,用于处理所述读取码以产生多个处理后的码的所述存储器控制器逻辑包括用于如下操作的逻辑解码所述读取码以产生解码后的读取码,对所述解码后的读取码执行码校验,以及对所述读取码执行码校验。
12.如权利要求11所述的系统,其中,用于解码所述读取码以产生解码后的读取码的所述逻辑包括将抑制掩码的反码应用到所述读取码。
13.一种方法,包括确定事件的发生和未发生中之一,所述发生和未发生中之一导致事件确定;以及处理具有事件比特的码,所述处理根据所述确定和所述码通过如下方式进行 确定所述事件比特是否对应于所述事件确定;以及如果所述事件比特不对应于所述事件确定,则编码所述码以产生对应于所述事件确定的抑制比特。
14.如权利要求13所述的方法,还包括将所述码存储在存储器中。
15.如权利要求14所述的方法,还包括 从所述存储器读取所述码(“读取码”); 处理所述读取码以产生多个处理后的码;从所述多个处理后的码中的一个识别可校正的码;以及如果识别了可校正的码,则读取所述可校正的码的所述事件比特以确定所述事件的发生和未发生中之一。
16.如权利要求15所述的方法,其中,所述处理所述读取码包括 解码所述读取码;对读取码执行码校验以产生第一处理后的码;以及对所述读取码执行码校验以产生第二处理后的码。
17.一种具有存储在其上的指令的制造产品,当所述指令由机器执行时使得 确定事件的发生和未发生中之一,所述发生和未发生中之一导致事件确定;以及处理具有事件比特的码,所述处理根据所述确定和所述码通过如下方式进行 确定所述事件比特是否对应于所述事件确定;以及如果所述事件比特不对应于所述事件确定,则编码所述码以产生对应于所述事件确定的抑制比特。
18.如权利要求17所述的产品,还包括当由机器执行时使得将所述码存储在存储器中的指令。
19.如权利要求18所述的产品,还包括当由机器执行时使得执行如下操作的指令 从所述存储器读取所述码(“读取码”);处理所述读取码以产生多个处理后的码;从所述多个处理后的码中的一个识别可校正的码;以及如果识别了可校正的码,则读取所述可校正的码的所述事件比特以确定所述事件的发生和未发生中之一。
20.如权利要求19所述的产品,其中,使得处理所述读取码的所述指令包括当由机器执行时使得执行如下操作的指令解码所述读取码;对读取码执行码校验以产生第一处理后的码;以及对所述读取码执行码校验以产生第二处理后的码。
全文摘要
在一个实施例中,一种方法提供了确定事件的发生和未发生中之一,所述发生和未发生中之一导致事件确定,以及处理具有事件比特的码,所述处理根据所述确定和所述码通过如下方式进行确定所述事件比特是否对应于所述事件确定,以及如果所述事件比特不对应于所述事件确定,则编码所述码以产生对应于所述事件确定的抑制比特。
文档编号G06F11/08GK102171658SQ200980139251
公开日2011年8月31日 申请日期2009年12月10日 优先权日2008年12月29日
发明者D·布热津斯基, R·阿加瓦尔, S·赫德尔斯顿 申请人:英特尔公司

最新回复(0)