利用纠错码和同步信息的数据行存储及传输

申请号 CN201010591456.1 申请日 2010-12-09 公开(公告)号 CN102096610A 公开(公告)日 2011-06-15
申请人 英特尔公司; 发明人 R·阿加瓦尔; C·S·胡德莱斯顿;
摘要 将要用于并行处理的同步数据包含在具有纠错码符号的数据 块 中的方法和设备。数据块使用纠错码来编码。所得编码每32个数据符号包括三个校验符号。生成与数据符号对应的至少一个同步符号。组合数据符号、校验符号和至少一个同步符号。传送已组合的数据符号、校验符号和至少一个同步符号。
权利要求

1.一种方法,包括:
使用纠错码对数据进行编码,其中所得编码每32个数据符号包括三个校验符号;
生成与所述数据符号对应的至少一个同步符号;
组合所述数据符号、所述校验符号和所述至少一个同步符号;
传送已组合的所述数据符号、所述校验符号和所述至少一个同步符号。
2.如权利要求1所述的方法,其中,所述纠错码包括经修改的里德-索罗蒙码。
3.如权利要求1所述的方法,其中,每个符号包括一个或多个字节。
4.如权利要求1所述的方法,其中,所述数据块包括高速缓存行,其中包含32个数据符号、三个校验符号和一个同步符号。
5.如权利要求1所述的方法,其中,已组合的所述数据符号、所述校验符号和所述至少一个同步符号被传送至一个或多个双列直插存储器模块(DIMM)并且存储在其中。
6.一种设备,包括:
第一处理器;
第二处理器,所述第二处理器与所述第一处理器耦合,以便与所述第一处理器并行操作,所述第二处理器使用纠错码对数据块进行编码,其中所得编码每32个数据符号包括三个校验符号;生成与所述数据符号对应的至少一个同步符号,用于所述第二处理器与所述第一处理器之间的同步;组合所述数据符号、所述校验符号和所述至少一个同步符号;以及将已组合的所述数据符号、所述校验符号和所述至少一个同步符号传送给所述第一处理器。
7.如权利要求6所述的设备,其中,所述纠错码包括经修改的里德-索罗蒙码。
8.如权利要求6所述的设备,其中,每个符号包括一个或多个字节。
9.如权利要求6所述的设备,其中,所述数据块包括高速缓存行,其中包含32个数据符号、三个校验符号和一个同步符号。
10.如权利要求6所述的设备,其中,已组合的所述数据符号、所述校验符号和所述至少一个同步符号被传送至一个或多个双列直插存储器模块(DIMM)并且存储在其中。
11.一种包括计算机可读介质的产品,在所述计算机可读介质上存储了指令,所述指令在被执行时使一个或多个处理器:
使用纠错码对数据块进行编码,其中所得编码每32个数据符号包括三个校验符号;
生成与所述数据符号对应的至少一个同步符号;
组合所述数据符号、所述校验符号和所述至少一个同步符号;
传送已组合的所述数据符号、所述校验符号和所述至少一个同步符号。
12.如权利要求11所述的产品,其中,所述纠错码包括经修改的里德-索罗蒙码。
13.如权利要求11所述的产品,其中,每个符号包括一个或多个字节。
14.如权利要求11所述的产品,其中,所述数据块包括高速缓存行,其中包含32个数据符号、三个校验符号和一个同步符号。
15.如权利要求11所述的产品,其中,已组合的所述数据符号、所述校验符号和所述至少一个同步符号被传送至一个或多个双列直插存储器模块(DIMM)并且存储在其中。

说明书全文

利用纠错码和同步信息的数据行存储及传输

技术领域

[0001] 本发明实施例涉及高度地并行的系统中的同步。更具体来说,本发明的实施例涉及在高度地并行的系统内的高速缓存或数据行中的纠错码(ECC)符号和同步符号的使用。

背景技术

[0002] 并行计算系统利用多个处理组件来并行地执行任务。已经开发了许多策略和技术来标识和协调这种并行处理功能性。因此,需要同步机制。但是,当前的同步机制可能要求专的结构和操作,这可增加系统的复杂性和/或妨碍整体系统性能。

发明内容

[0003] 根据本发明的一个方面,提供一种方法,包括:
[0004] 使用纠错码对数据进行编码,其中所得编码每32个数据符号包括三个校验符号;
[0005] 生成与所述数据符号对应的至少一个同步符号;
[0006] 组合所述数据符号、所述校验符号和所述至少一个同步符号;
[0007] 传送已组合的所述数据符号、所述校验符号和所述至少一个同步符号。
[0008] 根据本发明的另一方面,提供一种设备,包括:
[0009] 第一处理器;
[0010] 第二处理器,所述第二处理器与所述第一处理器耦合,以便与所述第一处理器并行操作,所述第二处理器使用纠错码对数据块进行编码,其中所得编码每32个数据符号包括三个校验符号;生成与所述数据符号对应的至少一个同步符号,用于所述第二处理器与所述第一处理器之间的同步;组合所述数据符号、所述校验符号和所述至少一个同步符号;以及将已组合的所述数据符号、所述校验符号和所述至少一个同步符号传送给所述第一处理器。
[0011] 根据本发明的又一方面,提供一种包括计算机可读介质的产品,在所述计算机可读介质上存储了指令,所述指令在被执行时使一个或多个处理器:
[0012] 使用纠错码对数据块进行编码,其中所得编码每32个数据符号包括三个校验符号;
[0013] 生成与所述数据符号对应的至少一个同步符号;
[0014] 组合所述数据符号、所述校验符号和所述至少一个同步符号;
[0015] 传送已组合的所述数据符号、所述校验符号和所述至少一个同步符号。附图说明
[0016] 在附图的各个图中,通过示例而不是通过限制来说明本发明的实施例,附图中相似的参考标号表示相似的元件。
[0017] 图1是并行计算系统的一个实施例的框图
[0018] 图2是具有ECC符号和同步符号的高速缓存行的一个实施例的逻辑布局。
[0019] 图3是用于对具有同步符号的数据行进行编码和传送的技术的一个实施例的流程图
[0020] 图4是用于对具有同步符号的数据行进行接收和解码的技术的一个实施例的流程图。

具体实施方式

[0021] 在以下描述中,提出许多具体细节。但是,即使没有这些具体细节也可实施本发明的实施例。在其它情况下,没有详细示出众所周知的电路、结构和技术,以免影响对本描述的理解。
[0022] 本文描述将要用于并行处理的同步数据包含在具有纠错码符号的数据块中的技术、过程和结构。数据块使用纠错码来编码。在一个实施例中,利用经修改的里德-索罗蒙码。所得编码每32个数据符号包括三个校验符号,这少于传统里德-索罗蒙编码的每32个数据符号四个校验符号。
[0023] 与数据符号对应的至少一个同步符号被生成并且存储在数据块中原本是传统里德-索罗蒙编码的第四符号之处。例如,数据符号、校验符号和至少一个同步符号被组合到高速缓存行中。传送已组合的数据符号、校验符号和至少一个同步符号。例如,所述传送可在并行处理环境中的处理器之间进行。
[0024] 图1是并行计算系统的一个实施例的框图。图1所示的并行计算系统是用来表示一系列的并行计算系统(例如,多核系统、对称系统、不对称系统)。备选的并行计算系统可包括更多、更少和/或不同的组件。
[0025] 由于计算机系统100是并行计算系统,所以处理器110可对数据并行操作。这种并行操作要求某种机制来使这些并行操作的结果同步。计算机系统100还包括:总线105或者传递信息的其它通信装置;以及耦合到总线105以处理信息的处理器110。
[0026] 计算机系统100还包括随机存取存储器(RAM)或者其它动态存储装置120(称作存储器),它们耦合到总线105,以便存储将由处理器110执行的信息和指令。存储器120还可用于在处理器110执行指令期间存储临时变量或其它中间信息。存储器120中的部分或全部可实现为双列直插存储器模块(DIMM)。
[0027] 对于对数据的小(例如4字节)块进行操作的一些细粒度的并行算法,每块一个同步位可能就够了。这个附加同步位或标签位可与数据一起存储在存储器中。但是,许多DIMM没有可用来与数据一起存储这种信息的额外位(除了ECC位之外)。
[0028] 本文所述的是一种基于纠错码(ECC)的技术,它允许每个高速缓存行存储多达16个同步位。在一个实施例中,这些技术可使用经修改的里德-索罗蒙算法,并且“借用”高速缓存行中的ECC校验位的位置以用于同步。尽管可用于ECC的位的数量减少,但是在很大程度上保持了ECC的校正能。这使同步位能够与数据块一起被操作,并且消除对于分配附加存储器并且进行附加存储器访问的需要。
[0029] 计算机系统100还包括只读存储器(ROM)和/或其它静态存储装置130,它们耦合到总线105,以便存储用于处理器110的静态信息和指令。数据存储装置140耦合到总线105,以便存储信息和指令。数据存储装置140、如磁盘或光盘以及对应的驱动器可耦合到计算机系统100。
[0030] 计算机系统100还可经由总线105耦合到显示装置150,诸如阴极射线管(CRT)或液晶显示器(LCD),以便向用户显示信息。包括字母数字键及其它键的字母数字输入装置160通常耦合到总线105,以便向处理器110传递信息和命令选择。另一种类型的用户输入装置是光标控件170,诸如鼠标轨迹球或光标方向键,用以向处理器110传递方向信息和命令选择,以及控制显示器150上的光标移动。计算机系统100还包括网络接口180,用以提供对网络、如局域网的接入。
[0031] 指令经由有线(187)或无线(185)等的远程连接(例如经由网络接口180通过网络),从诸如磁盘、只读存储器(ROM)集成电路、CD-ROM、DVD之类的存储装置提供给存储器。在备选实施例中,硬连线电路可用来代替软件指令或者与其结合。因此,指令序列的执行并不局限于硬件电路和软件指令的任何特定组合。
[0032] 计算机可读介质包括以电子装置(例如计算机、个人数字助理、蜂窝电话)可读形式提供内容(例如计算机可执行指令)的任何机构。例如,计算机可读介质可包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存装置等等。
[0033] 图2是具有ECC符号和同步符号的高速缓存行的一个实施例的逻辑布局。在图2的图示中,数据符号由“DSn”表示,其中“n”指明数据符号编号,ECC校验符号由“CSm”表示,其中“m”指明校验符号编码,以及同步符号由“Synch”表示。在图2的示例中,存在32个数据符号、三个ECC校验符号和一个同步符号。
[0034] 典型的ECC DIMM每字节具有一位ECC存储。这对于每64字节高速缓存行提供64个ECC校验位(8字节)。下面更详细描述的是一种利用经修改的里德-索罗蒙码的技术,通过如下方式:在一个实施例中,使用对64字节高速缓存行起作用的基于32字节高速缓存行的里德-索罗蒙码,并且改变基本有限域。
[0035] 64 字节高速缓存行上的传统里德-索罗蒙错误解码逻辑使用GF[216]上的4×36 H矩阵对编号为0至3的四个二字节符号进行操作。这能够在任何二字节(16位)校验符号中纠正同时错误。使用传统里德-索罗蒙操作,在全高速缓存行上,每个校验符号为16位。在一个实施例中,本文所述的技术利用高速缓存行中本来由最高校验符号(编号3)中的16位使用的存储位置来用作同步位,并且仅使用其余三个校验符号(0直到2)来执行经修改的里德-索罗蒙编码。
[0036] 在一个实施例中,经修改的里德-索罗蒙码省略H矩阵的最后行和列,并且使用简化的3×35 H矩阵来计算校验符号0至2。在一个实施例中,用于经修改的里德-索罗蒙码的校验符号0至2与用于传统里德-索罗蒙码的校验符号0至2相同。
[0037] 这些校验位的使用是以纠错能力的适度损失为代价而得来的-不是校正100%的“chipkill”(出故障装置)错误,而是可校正99.997%至99.9985%的chipkill错误。其它chipkill错误成为“可检测但不可校正”错误(DUE率为0.0015%-0.003%)。来自误校正或者转成未检测到的随机大错误的“静寂数据破坏”(SDC)率大约为1/16700000。这些SDC和DUE率非常低,并且对于大多数系统是可接受的。
[0038] 当前技术没有将同步位与数据一起存储。相反,当前技术将信息存储在DIMM中的附加的分开存储器中或者在管芯上(on-die)缓冲器/高速缓存中。这要求附加的存储器容量和带宽来实现同步,或者要求处理器管芯面积和功率来用于处理器管芯上的更大缓冲器。因此,与被操作的数据块一起存储的同步位的使用消除对于分配附加存储器并且进行附加存储器访问的需要。
[0039] 对于影响两个数据符号D0和D1的chipkill错误,设x0和x1为D0和D1的H矩阵16
列生成元(generators)。那么,x0和x1是GF[2 ]的不同非零元素,并且H矩阵列为[1=
0 1 2 2
x0,x0=x0,x0]和[1,x1,x1]。在数据符号D0上具有错误e0以及在D1上具有错误e1的chipkill错误将产生校验符号:
[0040] S0=e0+e1
[0041] S1=e0*x0+e1*x1
[0042] S2=e0*x02+e1*x12
[0043] 当校验符号S0至S2可能是D0/D1上的chipkill错误的结果时完全成立的D0/D1上的chipkill错误的“定位符函数”为:
[0044] S0*(x0*x1)+S1*(x0+x1)+S2=0
[0045] 这个定位符函数计算用x1=x0+1简化为:
[0046] S0*x0*(x0+1)+S1+S2=0
[0047] D0/D1 chipkill错误的错误掩码通过下式来计算:
[0048] e1=S0*x0+S1
[0049] e0=S0+e1
[0050] 对于ECC校验符号上的chipkill错误,S1和S2被映射成位于一个装置中,因此那个装置上的chipkill错误可能产生S1和S2的任何值。那么,S1/S2 chipkill错误的定位符函数为:
[0051] S0=0
[0052] S1/S2 chipkill错误的错误掩码e0/e1通过下式来计算:
[0053] e0=S1
[0054] e1=S2
[0055] 可在具有或没有对同步位的纠错/检错的情况下应用本文所述的技术。描述两种变型,但是仅分析没有对同步位的错误覆盖的变型。
[0056] 最终校验符号chipkill错误只是S0和同步位上的任何错误。没有对同步位的错误覆盖,这给出定位符函数:
[0057] S1=S2=0
[0058] 和错误掩码函数:
[0059] e0=S0
[0060] 对符号位的错误覆盖可通过将它们看作由对于GF[216]中的非零z的H矩阵列[1,2
z,z]所覆盖的数据符号来获得。具有对同步位的错误覆盖,S0/synch chipkill错误具有定位符函数:
[0061] S2=S1*z
[0062] 并且错误掩码通过下式来计算:
[0063] e0=S0
[0064] e1=S1*(1/z)
[0065] 在一个实施例中,经修改的里德-索罗蒙方案为所有可能的chipkill错误计算定位符函数。如果只有一个定位符函数成立,则计算那个定位符的错误掩码,并且校正那个错误。如果不存在错误,则S0=S1=S2=0,并且每一个定位符函数均成立。在所有其它情况下(没有成立的定位符函数或者有两个或更多成立的定位符函数),出现了某种错误,但是作为chipkill错误不存在可能的校正或者不存在对于chipkill错误的非唯一校正可能性。
[0066] 下列分析针对当两个或更多定位符函数可同时成立时,它确定DUE率。注意,数据/数据chipkill定位符具有下列形式:
[0067] S0*x*(x+1)+S1+S2=0
[0068] 或者相当于
[0069] S0=(S1+S2)/(x*(x+1))
[0070] 因此,所有数据/数据定位符函数在S0为非零时互斥。
[0071] 注意,数据/数据定位符中的单符号数据错误使错误掩码e0和e1中仅一个非零,并且因此单符号数据错误使S0、S1和S2中每一个非零。由于S0至S2是e0和e1的线性无关函数,所以chipkill数据/数据错误使S0至S2中至少两个非零。没有同步错误覆盖的S0/synch chipkill定位符函数具有S1=S2=0,因此它和数据/数据定位符函数不能同时成立。
[0072] S1/S2定位符函数正好在S0=0时成立。在这种情况下,当0=S0=e0+e1时(即,正好当e0=e1时),数据/数据定位符函数也成立。当e0=e1时的数据/数据定位符具有e1=S1=S2。因此,仅当S1=S2时,S1/S2定位符和某个数据/数据定位符两者都成立,并且仅当e0=e1时,数据/数据定位符和S1/S2定位符两者都成立。这些是没有同步位错误覆盖的S1/S2和数据/数据定位符的DUE情况,它们为0.0015%的可能的chipkill错误。准确地校正其余99.9985%的chipkill错误。这与100%的chipkill错误在标准(四校验符号)里德-索罗蒙方案中可校正的情况形成对照。这种DUE率非常低,并且对于大多数系统是可接受的。
[0073] 图3是用于对具有同步符号的数据行进行编码和传送的技术的一个实施例的流程图。图3的技术可用于例如高速缓存行,所述高速缓存行在并行计算环境中从已对于高速缓存行中存储的数据进行操作的处理器传送到另一个处理器。同步符号可用于使处理器之间的处理同步。
[0074] 检索要传送的数据,310。数据可从存储器、从寄存器等中读取。在一个实施例中,数据是高速缓存行;但是,可支持其它数据大小。数据可响应来自另一个处理器的请求而传送,或者可响应本地处理器传送给另一个处理器。
[0075] 要传送的数据使用经修改的里德-索罗蒙码来编码,320,如上所述。在一个实施例中,所得数据符号和校验符号可按照针对图2所述的方式存储在高速缓存行中。在备选实施例中,可利用其它配置和组织。
[0076] 将同步符号级联到数据符号和校验符号,330。在一个实施例中,同步符号是数据行的最后一个符号。在备选实施例中,同步符号可处于高速缓存行中的不同位置。然后传送数据行,340。
[0077] 图4是用于对具有同步符号的数据行进行接收和解码的技术的一个实施例的流程图。图4的技术可用于例如高速缓存行,所述高速缓存行在并行计算环境中由另一个处理器从已对于高速缓存行中存储的数据进行操作的处理器接收。
[0078] 接收具有同步符号的数据行,410。对所接收数据行使用经修改的里德-索罗蒙码来解码,420。提取同步符号,430,并且处理数据,440。
[0079] 说明书中提到“一个实施例”或“实施例”表示结合该实施例所述的具体特征、结构或特性包含在本发明的至少一个实施例中。短语“在一个实施例中”在本说明书中各个位置的出现不一定都指的是同一个实施例。
[0080] 虽然按照若干实施例描述了本发明,但是本领域的技术人员会知道,本发明并不局限于所述实施例,而是可在所附权利要求的精神和范围之内经过修改和变更来实施。因此,本描述要视为说明性的,而不是限制性的。
QQ群二维码
意见反馈