使用校验子分析的故障总线通道检测的制作方法

文档序号:7525230阅读:290来源:国知局
专利名称:使用校验子分析的故障总线通道检测的制作方法
使用校验子分析的故障总线通道检测
背景技术
本发明一般地涉及计算机存储器系统,更具体地说,涉及使用校验子分析检测故障总线通道。现代高性能计算主存储器系统通常包括一个或多个动态随机存取存储器(DRAM)设备,这些设备通过一个或多个存储器控制元件连接到一个或多个处理器。整体计算机系统性能受计算机结构的每个关键元素的影响,这些元素包括处理器(多个)、任何存储器高速缓存(多个)、输入/输出(I/o)子系统(多个)的性能/结构、存储器控制功能(多个)、主存储器设备(多个)的效率以及存储器互连接口(多个)的类型和结构。行业持续投入广泛的研究和开发工作以产生改进和/或创新的解决方案,以便通过改进存储器系统/子系统设计和/或结构来最大化整体系统性能和密度。高可用性系统 提出与整体系统可靠性相关的进一步挑战,因为客户期望新的计算机系统除了提供额外功能、提高性能、增加存储、降低操作成本等之外,在平均故障间隔时间(MTBF)方面将明显超过现有系统。其他常见的客户要求进一步加剧了存储器系统设计挑战,并且包括诸如易于升级和降低系统环境影响(例如空间、电力和冷却)之类的项目。一种用于在总线(例如存储器系统总线)中查找故障通道的方法是使用错误纠正代码(ECC)。ECC可以检测和纠正多个故障位,但比错误检测代码需要更多的冗余位。通常,错误检测代码可以检测错误但不能完全解析错误的物理性质;例如,它也许不能完全标识故障通道以便了解故障通道中的所有可能错误模式。因此,只有错误检测代码可能不会准确地将错误隔离到特定故障通道。另一种用于检测故障通道的方法是通道遮蔽(laneshadowing),其中在备用通道上发送数据副本。然而,通道遮蔽在任一时间点只能针对通道的子集执行,并且可能错过在给定故障通道的分析窗口外部发生的错误事件。

发明内容
一个实施例是一种用于检测总线故障的计算机实现的方法。所述方法包括接收错误检测代码的多个校验子,所述错误检测代码与已在总线上传输的多个帧关联,所述总线包括多个通道并由所述错误检测代码来保护。所述方法包括对于所述校验子中的每个校验子,针对所述通道中的每个通道执行以下步骤在假设该通道是故障通道的情况下对该校验子进行解码,所述解码输出解码结果;判定所述解码结果是否是有效解码;以及响应于判定所述解码结果是有效解码而为所述通道投票。然后响应于所述投票而标识故障通道,所述故障通道的特征在于,其具有的投票多于所述总线上的至少一个其他通道。另一实施例是一种用于检测总线故障的系统,所述系统包括总线接口设备,被配置为接收和捕获已在总线上传输的多个帧的校验子,每个帧包括按通道的多个位传输;以及校验子处理逻辑,其与所述总线接口设备通信。所述校验子处理逻辑被配置为执行以下操作接收错误检测代码的多个校验子,所述错误检测代码与已在总线上传输的多个帧关联,所述总线包括多个通道并由所述错误检测代码来保护。所述校验子处理逻辑还被配置为对于每个校验子,针对每个通道而执行以下操作在假设该通道是故障通道的情况下对该校验子进行解码,所述解码输出解码结果;判定所述解码结果是否是有效解码;以及响应于判定所述解码结果是有效解码而为所述通道投票。响应于所述投票而标识故障通道,所述故障通道的特征在于,其具有的投票多于所述总线上的至少一个其他通道。另一实施例是一种用于检测总线故障的计算机程序产品。所述计算机程序产品包括计算机可读存储介质,其可由处理电路读取并存储指令以便由所述处理电路执行以实现一种方法,所述方法包括接收错误检测代码的多个校验子,所述错误检测代码与已在总线上传输的多个帧关联,所述总线包括多个通道并由所述错误检测代码来保护。所述方法包括对于所述校验子中的每个校验子,针对所述通道中的每个通道而执行以下操作在假设该通道是故障通道的情况下对该校验子进行解码,所述解码输出解码结果;判定所述解码结果是否是有效解码;以及响应于判定所述解码结果是有效解码而为所述通道投票。然后响应于所述投票而标识故障通道,所述故障通道的特征在于,其具有的投票多于所述总线上的至少一个其他通道。
通过参阅以下附图和详细说明,根据各实施例的其他系统、方法和/或计算机程序产品对于本领域的技术人员来说显而易见或变得显而易见。旨在将所有此类其他系统、方法和/或计算机程序产品包括在此说明内、在本发明的范围内,并由所附权利要求保护。


现在仅通过实例的方式参考附图描述本发明的一个或多个实施例,这些附图是图I示出了可以由一个示例性实施例实现的级联互连存储器系统;图2示出了示例性下游八传输帧;图3示出了示例性下游十二传输帧;图4示出了示例性下游十六传输帧;图5示出了示例性上游八传输帧;以及图6示出了用于使用校验子分析检测故障总线通道的示例性过程。
具体实施例方式本发明的一个示例性实施例在使用错误检测代码保护的总线中查找故障通道。可以使用计数器和多个错误检测代码校验子的分析以统计方式标识故障通道。所述分析产生位向量,其具有等于所述总线中的通道数量的多个表项。每个通道具有一个计数器,其随分析的结果递增。如果特定通道的位向量等于零,则此通道的计数器保持不变;否则,递增该计数器。所述分析可能不会完全解析哪个故障通道是产生错误的通道,相反针对所述故障通道提供多个可能性。因此,当分析单个校验子时,可能递增多个计数器。当接收到新校验子时,多次重复此过程。尽管对于单个校验子分析而言,可能无法解析故障通道,但当分析多个校验子并获得计数器的累积内容时,故障通道具有较高计数的概率很高。分析的校验子越多,分析结果的质量就越好。监视其中在总线上传输的帧中发生一个且仅有一个位故障的错误条件,可以在隔离故障通道中获得高准确性。例如,对于其中在帧中检测到一个且仅有一个位故障的情况,可以在通道故障标识中获得100%的准确性。在此参考循环冗余校验(CRC)更详细地描述所述分析;然而,所述分析适用于任何线性错误检测代码,而不仅限于 CRC。线性错误检测代码的特征在于奇偶校验矩阵H。为简单起见,假设所述代码针对二进制符号执行,尽管此技术通常也适用于多位符号。奇偶校验矩阵H中的行数(r)等于所述代码中的检验位数。列数(η)等于n=r+k,其中k是错误检测代码中的有效负载位数。假设d是表示k个有效负载位的列向量,并假设c是表示与这些k个有效负载位关联的r个位的列向量。在总线上传输的总向量是V= [cd],其中c和d被串接以形成V。校验位c的位置不需要在向量的顶部,并且校验位也不需要连续放置;在此假设这种组织完全是为了改进此说明的可读性。在给定有效负载d的情况下计算校验位c以便H v=0。H ν表示使用矩阵/向量乘法模数2将矩阵H与向量 ν相乘。然后在信道上传输向量V,此信道可能在ν上传递错误。此错误由e表示,它是具有η个表项的向量,如果没有错误,则这些表项为0,如果具有错误,则这些表项为I。假设总线中具有L个通道,每个通道在总线上的整个帧传输中承载n/L个位。因此,还假设η可被L整除。向量ν可以分为L个部分,每个部分具有如下连续位ν= [ν Iν2…vL]。在信道上传输这些部分中的每一个(包括n/L个位)。同样,错误向量可以分为e=[ele2...eL]。当接收到数据模式(data pattern) v+e时,解码器使用不依赖于向量ν的方程s=H(v+e) =0+He=He计算对应的校验子。如果没有错误(e=0),则校验子s为O,并且认为中贞良好。如果S=He不等于0,则检测到错误,并且通常要求重试。进一步假设r>n/L,即所述代码中的校验位多于任意给定通道中的位。矩阵H可以分为H=[H1 H2…HL]。如果错误仅集中在通道i中,其中e=
并且ei为非0,则接收的校验子为s=Hi ei。Hi可以分为两个部分,第一部分Hi_A包含n/L个行,另一个部分Hi_B包含剩余行。所述划分显示为Hi=[Hi_AHi_B]同样,校验子s可被分为s=[s_As_B]因此,Hi_A是维数为(n/L) X (n/L)的方矩阵,Hi_B是维数为(r_n/L) X (n/L)的矩阵。同样,s_A具有n/L个表项,s_B具有r-n/L个表项。如果所述代码使得Hi_A是可逆矩阵,则Hi_A的逆乘以s_A等于ei,这可以表示为inv(Hi_A)S_A=ei。这有效地恢复影响该通道的错误模式ei。要指出的是,Hi_A对于每一个I可逆的属性例如可以通过使用循环码并确保通道中的连续位对应于该循环码中的连续位来获得;循环码的实例是类ο BCH代码。由于恢复了错误模式ei,因此以下方程(第二等式)也成立inv(Hi_A)s_A_s_B=0 (I)要指出的是,此方程另外使用第一等式定义了标记mi。方程(I)是检测故障总线通道的基础。如果通道i是出现问题的通道,则方程(I)左侧的标记mi (仅依赖于设计的代码H和校验子s)必须等于O。因为不知道哪个通道出现故障,所以针对所有L个通道计算方程(I)的左侧,当计算方程(I)的左侧时实际上又假设每个通道是故障通道,使指数i从I变到L。对于那些通过计算产生O的指数i,将关联的通道声明为故障通道候选者,并将分析位向量vote_lane的第i位设置为I,即,将vote_lane[i]设置为I (这在此称为“为通道i投票”)。对于那些通过计算具有非O结果的指数i,将Vote_lane[i]设置为O (这在此称为“没有为通道i投票”)。要指出的是,针对每个通道使用校验子子集s_A计算错误大小e_i,同时使用剩余校验子位s_B执行候选错误向量的交叉检验。如果交叉检验成功,·则生成有效解码信号,否则生成无效解码信号。上面对应用于一个帧的过程的说明并不对应于本领域中公知的总线错误纠正过程。在总线错误纠正过程中,对校验子进行解码将产生不可纠正的错误信号,或者备选地,必须应用于所认为的总线的纠正将消除数据损坏。相比之下,在上述过程中,在假设每个通道是故障通道的情况下执行每个校验子的解码,并且如果获得有效解码,则此通道获得投票,目标是仅在处理多个帧之后才发现故障通道。因此,当使用在此描述的过程的一个实施例处理一个帧时,不会始终标识唯一故障通道。如上所述,一个示例性实施例为每个位通道提供一个计数器,对属于故障通道的关联通道的投票进行计数。这些计数器跨多个错误检测(并且因此校验子分析)事件存在,因此它们也称为运行计数器。可以使用位向量votejane递增每个位通道的计数器,实际上通过将位向量votejane的值添加到计数器的当前值。存在其中仅针对一个通道获得标记mi的O计算的情况,但通常可能存在两个或更多针对其在方程(I)中获得O计算的通道,这意味着将递增对应计数器。如果通道具有永久性错误但实际错误模式随访问的不同而更改,则故障通道的计数器比其他通道的计数器递增的更多。跟踪计数器并判定计数器是否达到阈值的硬件、固件或软件可以利用这一点。如果如此,则对应通道是合适的备用通道候选者。如果错误模式是单个位错误(single bit error),则在适当设计错误检测代码的情况下,可以正确地标识故障通道而没有任何歧义。在示例性实施例中,采用的错误检测代码具有检测至少任何两个位错误的能力。因此,任何两个单个位错误的校验子都不能相同。当存在单个位错误时,不可能针对两个或更多通道计算如下ei :其具有单个位错误并且同时方程(I)中的计算的结果是O。在一个备选示例性实施例中,可以采用方程(2 )和(3 )执行两阶段计算,而不是计算方程(I):ei=inv (Hi_A)s_A (2)mi=Hi_B e_i_s_B (3)
其中ei被称作通道i的候选错误向量。对于每个通道i={l,. . .,M},确定ei中是否只有一个位错误并且同时mi=0。每当通过此属性找到一个且仅有一个Γ *时,可选地仅针对Γ *生成一个投票,即使存在mi=0但ei并非只有一个位错误的另一个不同于Γ *的i也是如此。这样,所具有的影响是略微牺牲通用通道错误模式的错误检测能力,而优点是保证定位所有单个位而没有任何歧义。换言之,每当存在指示单个位错误的候选错误向量时,在解码期间生成的通道的所有其他可能投票都被取消。现在转到图1,示出了存储器系统100的一个实例,其包括通过高速信道通信并使用在此描述的错误检测代码校验子分析的完全缓冲的双列直插式存储器模块(DIMM)。存储器系统100可以结合在主机处理系统中作为处理系统102的主存储器。存储器系统100包括多个DIMM 103a、103b、103c和103d,它们具有经由信道106或级联互连总线(包括差分单向上游总线118和差分单向下游总线116)通信的集线器设备104。DIMM103a-103d可以包括多个存储器件109,它们可以是双倍数据速率(DDR)动态随机存取存储器(DRAM)器件以及本领域中公知的其他组件,例如电阻器、电容器等。存储器件109也称为DRAM 109 或DDRx,因为DIMM103a-103d上可以包括任何版本的DDR,例如DDR2、DDR3、DDR4等。存储器控制器110与DIMM 103a通过接口连接,经由信道106发送可以以DIMM 103a_103d中的任意一个作为目标的命令、地址和数据值。所述命令、地址和数据值可以格式化为帧并序列化,以便以高数据速率传输。集线器设备104和存储器控制器110 —般可以称为总线接口设备。在一个示例性实施例中,当DIMM从上游DIMM或存储器控制器110接收到帧时,它将该帧重新驱动到菊花链中的下一个DIMM (例如,DIMM103a重新驱动到DIMM 103b, DIMM130b重新驱动到DIMM 103c等)。同时,DIMM对帧进行解码以确定内容。因此,DIMM处的重新驱动和命令解码可以并行或几乎并行发生。如果命令是读取请求,则所有DIMM103a-103d和存储器控制器110使用该命令的内容跟踪上游总线118上的读取数据业务。DIMM 103a_103d上的集线器设备104经由到信道106的总线接口(例如端口)接收命令。集线器设备104上的总线接口除了其他组件之外还包括接收器和发送器。在一个示例性实施例中,每个集线器设备104包括用于通过信道106与上游集线器设备104或存储器控制器110通信的上游总线接口,以及用于通过信道106与下游集线器设备104通信的下游总线接口。集线器设备104还包括计数器112、寄存器114和错误处理逻辑120。同样,存储器控制器110也可以包括计数器112、寄存器114和错误处理逻辑120。计数器112可以用作错误计数器,错误处理逻辑120使用它们计算错误率并在寄存器114中设置故障条件。计数器112可以以软件、固件、硬件或它们的某种组合实现。可以将用于标识特定故障通道的详细校验子处理卸载到处理系统102的校验子处理逻辑122。尽管图I中仅示出了将存储器控制器110连接到单个存储器设备集线器设备104的单个存储器信道106,但使用这些模块产生的系统可以包括来自存储器控制器110的多个分离存储器信道,每个存储器信道单独运行(当使用模块填充单个信道时)或并行运行(当使用模块填充两个或更多信道时)以实现所需的系统功能和/或性能。此外,信道106中可以包括任意数量的通道。例如,下游总线116可以包括13个位通道、2个备用通道和I个时钟通道,而上游总线118可以包括20个位通道、2个备用通道和I个时钟通道。选择/应用下游CRC的一个示例性实施例以便支持8、12和16个传输帧(在一个示例性实施例中,每个传输中包括13个位通道)。下游CRC检测任何通道故障、任何传输故障以及多达5个位随机错误。此外,如果检测到下游CRC错误,则忽略下游帧的内容并在寄存器114中设置故障信息寄存器(FIR)位。FIR是一种架构式装置,存储有关在集线器设备104中检测到的故障的信息。存储器控制器110和/或其他系统元件可以询问FIR以确定需要执行何种操作(如果有)。响应于设置FIR位,可以进入错误恢复状态,如果启用系统100以执行此操作的话。校验位的“常规”位置是在代码字的开头或结尾。设计了下游代码的一个示例性实施例以便校验位位置在“非常规”位置。由于与如何设计协议相关的问题,所以需要这种非常规位置。此外,将校验位放在常规位置然后到处移动它们可能会破坏代码的重要属性(例如,所有通道故障检测等)。此外,并非所有位置都可以提供CRC检测。在此描述的示例性下游帧格式利用校验位位置的非常规位置。选择/应用上游CRC使得多达8个传输包含多达20个位通道,以便它检测任何通道故障、任何传输故障(逃逸率为2 μ (-16))以及多达4个随机错误。此外,所有上游集线器设备104监视通过集线器设备104的上游CRC数据以检测上游CRC错误,并且任何检测到的错误都导致集线器设备104中断所有读取业务、转发有害CRC、设置FIR位以及进入错误恢复状态。 在一个示例性实施例中,针对13通道X 16拍(beat)(最大)帧格式使用下游CRC(错误检测)代码。此CRC代码可以检测任何通道故障、任何传输故障以及多达5个位随机错误。而且,其中随机无提示(silent)错误率大约是2的负十七次幂Γ2〃(-17))。CRC 多项式的一个不例性实施例为g(X) =1+χ+χ3+χ4+χ5+χ8+χ12+χ13+χ15+χ16+χ17+χ18。这是具有五个连续O (除了其他O之外)的博斯-乔赫里-霍克文黑姆(BCH)代码。此示例性代码的最小距离为6。基代码实际上仅需要17个位,因此人为添加了附加位以提供适当的长度。图2示出了使用在此描述的信道CRC的一个实施例的示例性下游八传输帧。图3示出了使用在此描述的信道CRC的一个实施例的示例性下游十二传输帧。同样,图4示出了使用在此描述的信道CRC的一个实施例的示例性下游十六传输帧。如图2-4中所示,CRC位位置为:156、157、158、159、169、170、171、172、182、183、184、185、186、195、196、197、198 和199。计算通用奇偶校验之后,使用矩阵高斯消元法获得适合于计算上面给定位置中的CRC位的矩阵。尽管可以使用标准移位寄存器实施方式对CRC进行编码和解码,但对于高速总线,具有异或的并行方法可以是优选的。为了重用错误处理逻辑120中的CRC逻辑,针对最长帧大小(对于16传输帧,为208个位)定义CRC。不使用所有208个位的任何帧只需将所有未使用的位设置为O。基本CRC算法的一个实施例对CRC校验位进行编码,并按照帧协议跨总线传输它们。总线另一端的校验器(例如,在图I的集线器设备104中)接收数据之后,计算新的或重新生成的一组CRC校验位。然后比较(进行“异或”运算)接收的CRC校验位和重新生成的CRC校验位以形成校验子向量。如果校验子是逐位O向量,则假设在数据传输中没有发生错误。任何非O校验子都指示发生错误。与标准CRC—样,这种实施方式不支持通过检查校验子实现直接错误隔离。当图I的集线器设备104检测到下游CRC错误时,它将忽略下游帧的所有内容,设置适当的FIR位,并转发故障CRC,然后进入错误恢复状态(如果被启用)。图I的计数器112包括用于每个接收器链路的可配置计数器以计算CRC错误率。图I的计数器112还可以包括用于每个信号通道的错误计数器,所述信号通道记录每个已分析的CRC校验子的结果。图I的错误处理逻辑120中的错误率逻辑针对每个运行时、存储器信道帧递增计时器,并且还对正在使用的计数器112中的任何检测到的无害CRC错误进行计数。以类似于下游实例说明的方式,校验子处理逻辑122分析每个故障CRC校验子以确定通过所述逻辑通信的可能故障通道,方法是对这些可能出现故障的通道进行投票。CRC足够强大以便针对帧中的所有单个位错误唯一标识故障通道,并且在随机通道故障期间针对统计上显著的故障正确标识故障通道。因为CRC错误纠正并不足够强大以保证完全随机通道错误的唯一错误检测,所以可能标识多个故障候选者。每次将通道标识为故障候选者(因为针对通道生成投票)时,计数器112中的通道错误计数器都会递增。当存储器信道106正常运行时,将定期清除计数器112中的所有通道错误计数器,因为没有超过CRC错误阈值。当存储器信道106出现无法通过重新初始化修复的间发错误时,计数器112中的CRC错误计数器将超过其可配置的阈值。此时,计数器112中的所有通道错误计数器都将冻结,并将在寄存器114中设置FIR位以请求关注。校验子处理逻辑122可以通过读取计数器112中的通道错误计数器并判定应修复哪个通道(如果有)而为关注请求服务。尽管可以针对每个CRC错误标识多个通道故障候选者,但是当错误计数器累积足够的CRC校验子分析结果以超过阈值时,将具有最常出现故·障的通道的清晰统计指示。如果备用通道可用于修复所标识的故障,则处理系统102可以发出停用故障通道的命令。这会将间发故障变成硬故障,此硬故障可以通过由存储器控制器110和/或集线器设备104自动启动的后续重新初始化和修复序列来检测和修复。在一个示例性实施例中,信道106中的每个接收器还在寄存器114中包括专用陷阱寄存器以记录一个故障CRC校验子的结果。所述陷阱寄存器可以被配置为记录检测到的第一 CRC错误或持续更新为所检测的最新CRC错误。当捕获新的错误时,在所述陷阱寄存器中设置有效位,当处理系统102读取所述陷阱寄存器时,将自动重置此位。在一个示例性实施例中,如果投票未将一个通道与其他通道显著隔离,则选择并修复通道之一。然后监视新错误率。如果在修复之后新错误率没有显著(例如,在阈值内)好于先前的错误率,则放弃(取消)第一修复而选择并修复另一个通道。这种修复和放弃的处理可以一直继续,直到新错误率显著好于先前的错误率。在一个示例性实施例中,如果允许多个通道修复,则从主要竞争者中选择多个通道以便修复。通过这种方式,可以执行多个修复。图5不出了使用在此描述的信道CRC的一个实施例的不例性上游8传输巾贞。针对8传输帧格式连同其CRC和错误校验位数,按如下方式描述上游CRC。此代码旨在用于20通道X8拍帧格式。它可以检测任何通道故障、任何传输故障(传输故障从代码中的逃逸概率为2'k'k (-16))以及多达4位随机错误。在一个示例性实施例中,上游CRC多项式为!gUkl+x+xS+xS+xT+xWw+xH+x15+x16。这是具有四个连续0(除了其他O之外)的BCH代码。因此,它的最小距离为5。下游格式的代码的多项式通过将上游格式的代码乘以1+x2获得。图5中所示的CRC位位置为144、145、146、147、148、149、150、151、152、153、154、155、156、157、158 和 159。示例性CRC算法包括对CRC校验位进行编码,并按照帧协议跨总线传输它们。总线另一端的校验器(例如,在图I的集线器设备104中)接收数据之后,计算新的或重新生成的一组CRC校验位。然后比较(进行“异或”运算)接收的CRC校验位和重新生成的CRC校验位以形成校验子向量。如果校验子是逐位O向量,则假设在数据传输中没有发生错误。任何非O校验子都指示发生错误。与大多数CRC —样,这种实施方式不支持通过检查校验子实现直接错误隔离。尽管此说明专注于具有特定数量的通道和传输的下游和上游帧,以及用于多达特定数量的单个位错误、通道错误和潜在传输错误的错误检测代码,但可以设计用于其他参数的错误检测代码。在此描述的技术可以应用于采用错误检测代码的各种通信总线,并且不限于存储器系统应用。 在一个示例性实施例中,集线器设备104可以通过多点或点到点总线结构(其可以进一步包括到一个或多个附加集线器设备104的级联连接)连接到图I的存储器控制器110。存储器控制器110通过总线结构(例如存储器总线)将存储器访问请求传输到选定的集线器设备(多个)104。响应于接收存储器访问请求,集线器设备104转换存储器访问请求以控制存储器设备109以便存储来自集线器设备104的写入数据或将读取数据提供给集线器设备104。读取数据被编码为一个或多个通信帧并通过存储器总线(多条)传输到存储器控制器110。 在备选示例性实施例中,存储器控制器(多个)110可以与一个或多个处理器芯片和支持逻辑集成在一起、封装在分离芯片(通常称为“北桥”芯片)中、包括在具有一个或多个处理器和/或支持逻辑的多芯片载体中,或以最匹配应用/环境的各种备选形式封装。这些解决方案中的任意一个可以采用也可以不采用一个或多个低/高速链路以连接到一个或多个集线器芯片和/或存储器设备。图6示出了使用校验子分析检测故障总线通道的示例性过程600。在方块602,图I的校验子处理逻辑122接收在总线(例如图I的上游总线118)上传输的多个帧的校验子,其中每个帧包括按通道的多个位传输,如图2-5中所示。所述校验子可以是来自总线接口设备(例如存储器控制器110或集线器设备104)的捕获值。可以在图I的寄存器114中捕获校验子,并且当错误检测逻辑120判定计数器112超过阈值时,设置故障指示以启动更详细的校验子分析以便隔离错误条件。在方块604,在假设每个通道是故障通道的情况下,校验子处理逻辑122将校验子解码为错误向量。所述错误向量在组合中选择造成错误条件的特定校验子位。因为相同的校验子位可以包含在多个错误向量计算中,所以不太可能针对所有可能的错误组合将错误隔离到单个通道。在方块606,响应于对来自各帧之一的错误向量中具有单个位故障的一个且仅有一个通道进行解码,校验子处理逻辑122标识故障通道。校验子处理逻辑122还可以判定校验子的验证位是否与从校验子解码的错误向量一致,其中所述验证位在错误检测代码中提供某种程度的冗余。所述验证位可以与所述错误向量组合使用以便为故障通道投票。响应于对具有单个位故障的一个且仅有一个通道进行解码,校验子处理逻辑122可以清除所有其他通道的投票以确保单个位故障的100%错误标识准确性。在方块608,响应于判定存在多个单个位故障,校验子处理逻辑122标识故障通道,其中所述错误向量使用在此描述的投票过程的一个实施例一致地指示跨多个帧的错误。在一个实施例中,校验子处理逻辑122比较所接收的投票数以判定是否一致指示错误。所述比较可以包括计算具有较高数量投票的通道与具有较低数量投票的通道的比率,然后相对于比率阈值比较所计算的比率。例如,如果某通道指示故障发生频率是其他通道的四倍或更多倍,则可以将此通道声明为故障通道。可以在分析预定数量的校验子之后执行所述比较以确保使用在统计上显著的样本集。在一个示例性实施例中,在标识故障通道并启动纠正操作(例如重置总线接口设备、使用备用通道或重新训练总线通道)之后重置运行计数器。在另一个示例性实施例中,在规定时间量之后重置运行计数器。在此使用的术语只是为了描述特定的实施例并且并非旨在作为本发明的限制。如在此所使用的,单数形式“一”、“一个”和“该”旨在同样包括复数形式,除非上下文明确地另有所指。还将理解,当在此说明书中使用时,术语“包括”和/或“包含”指定了声明的特性、整数、步骤、操作、元素和/或组件的存在,但是并不排除一个或多个其他特性、整数、步骤、操作、元素、组件和/或其组的存在或增加。此外,将理解,术语第一、第二等的使用并非表示任何顺序或重要性,而是使用术语第一、第二等来区分一个元素与另一个元素。下面权利要求中的对应结构、材料、操作以及所有装置或步骤和功能元件的等同替换,旨在包括任何用于与在权利要求中具体指出的其他元件相组合地执行该功能的结构、材料或操作。出于示例和说明目的给出了对本发明的描述,但所述描述并非旨在是穷举 的或是将本发明限于所公开的形式。在不偏离本发明的范围和精神的情况下,对于本领域的技术人员来说许多修改和变化都将是显而易见的。实施例的选择和描述是为了最佳地解释本发明的原理、实际应用,并且当适合于所构想的特定使用时,使得本领域的其他技术人员能够理解本发明的具有各种修改的各种实施例。本发明的功能可以以软件、固件、硬件或它们的某种组合实现。如本领域的技术人员将理解的,本发明的各方面可以体现为系统、方法或计算机程序产品。因此,本发明的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合了软件和硬件方面的实施例的形式,所有这些实施例在此通常可以称为“电路”、“模块”或“系统”。此外,本发明的各方面可以采取体现在一个或多个计算机可读介质(在介质中包含计算机可读程序代码)中的计算机程序产品的形式。可以使用一个或多个计算机可读介质的任意组合来存储指令以便执行图I的校验子处理逻辑122。所述计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质例如可以是(但不限于)电、磁、光、电磁、红外线或半导体系统、装置或设备或上述任意适合的组合。所述计算机可读存储介质的更具体的实例(非穷举列表)将包括以下项具有一条或多条线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器(EPR0M或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或上述任意适合的组合。在本文档的上下文中,计算机可读存储介质可以是任何能够包含或存储由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合的程序的有形介质。计算机可读信号介质可以包括其中包含计算机可读程序代码(例如,在基带中或作为载波的一部分)的传播数据信号。此类传播信号可以采取各种形式中的任一种,包括但不限于电磁、光或其中任意适合的组合。计算机可读信号介质可以是任何不属于计算机可读存储介质并且能够传送、传播或传输由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合的程序的计算机可读介质。
可以使用任何适当的介质(包括但不限于无线、线缆、光缆、RF等或上述任意适合的组合)来传输包含在计算机可读介质中的程序代码。用于执行本发明的各方面的操作的计算机程序代码可以使用包含一种或多种编程语言的任意组合来编写,所述编程语言包括诸如Java、Smalltalk、C++之类的面向对象的编程语言以及诸如“C”编程语言或类似的编程语言之类的常规过程编程语言。所述程序代码可以完全在用户计算机上执行、部分地在用户计算机上执行、作为独立的软件包、部分地在用户计算机上并部分地在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后者的情况中,远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型网络与用户的计算机相连,或者可以与外部计算机进行连接(例如,使用因特网服务提供商通过因特网连接)。将参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或方块图对本发明的各方面进行描述。将理解,所述流程图和/或方块图的每个方块以及所述流程图和/或方块图中的方块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机 器,以便通过所述计算机或其他可编程数据处理装置的处理器执行的指令产生用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的装置。这些计算机程序指令也可以被存储在能够引导计算机、其他可编程数据处理装置或其他设备以特定方式执行功能的计算机可读介质中,以便存储在所述计算机可读介质中的所述指令产生一件包括实现在一个或多个流程图和/或方块图方块中指定的功能/操作的指令的制品。所述计算机程序指令还可被加载到计算机、其他可编程数据处理装置或其他设备,以导致在所述计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,从而在所述计算机或其他可编程装置上执行的所述指令提供用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的过程。附图中的流程图和方块图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在此方面,所述流程图或方块图中的每个方块都可以表示代码的模块、段或部分,所述代码包括用于实现指定的逻辑功能(多个)的一个或多个可执行指令。还应指出,在某些备选实施方式中,在方块中说明的功能可以不按图中说明的顺序发生。例如,示为连续的两个方块可以实际上被基本同时地执行,或者某些时候,取决于所涉及的功能,可以以相反的顺序执行所述方块。还将指出,所述方块图和/或流程图的每个方块以及所述方块图和/或流程图中的方块的组合可以由执行指定功能或操作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。在此示出的附图只是实例。在此描述的这些图或步骤(或操作)可以存在许多变型而不偏离本发明的精神。例如,可以按不同的顺序执行所述步骤,或者可以添加、删除或修改步骤。所有这些变型都被视为要求保护的本发明的一部分。
权利要求
1.一种用于检测总线故障的计算机实现的方法,所述方法包括 接收错误检测代码的多个校验子,所述错误检测代码与已在总线上传输的多个帧关联,所述总线包括多个通道并由所述错误检测代码来保护; 针对所述校验子中的每个校验子,执行 针对所述通道中的每个通道,执行 在假设该通道是故障通道的情况下对该校验子进行解码,所述解码输出解码结果; 判定所述解码结果是否是有效解码;以及响应于判定所述解码结果是有效解码而为所述通道投票;以及响应于所述投票而标识故障通道,所述故障通道的特征在于,其具有的投票多于所述总线上的至少一个其他通道。
2.根据权利要求I的方法,其中所述解码包括针对所述通道生成候选错误向量,以及响应于所述候选错误向量指示单个位错误而消除通过解码所述校验子生成的其他通道的投票。
3.根据权利要求I的方法,其中所述故障通道的特征在于,其具有的投票与所述总线上的任何其他通道至少一样多。
4.根据权利要求I的方法,其中所述通道中的每个通道具有存储值的关联运行计数器,所述投票包括递增与该通道关联的运行计数器,并且所述标识包括比较所述运行计数器中的值以选择所述故障通道。
5.根据权利要求4的方法,其中所述比较计算较高运行计数器值与较低运行计数器值的比率,并且所述标识进一步包括相对于比率阈值而比较所计算的比率以选择所述故障通道。
6.根据权利要求I的方法,其中在接收到指定数量的所述校验子之后执行所述标识。
7.根据权利要求I的方法,其中针对所接收的校验子的子集执行所述解码并且所述解码包括生成候选错误向量,其中所述解码利用所接收的并且不在该子集中的校验子来交叉检验所述候选错误向量。
8.根据权利要求I的方法,其中响应于标识所述故障通道和启动纠正操作而重置所述投票。
9.根据权利要求I的方法,其中在指定时间量之后重置所述投票。
10.一种用于检测总线故障的系统,所述系统包括 总线接口设备,被配置为接收和捕获已在总线上传输的多个帧的校验子,每个帧包括按通道的多个位传输;以及 校验子处理逻辑,其与所述总线接口设备通信,所述校验子处理逻辑被配置为执行以下操作 接收错误检测代码的多个校验子,所述错误检测代码与已在总线上传输的多个帧关联,所述总线包括多个通道并由所述错误检测代码来保护; 针对所述校验子中的每个校验子,执行 针对所述通道中的每个通道,执行 在假设该通道是故障通道的情况下对该校验子进行解码,所述解码输出解码结果; 判定所述解码结果是否是有效解码;以及响应于判定所述解码结果是有效解码而为所述通道投票;以及响应于所述投票而标识故障通道,所述故障通道的特征在于,其具有的投票多于所述总线上的至少一个其他通道。
11.根据权利要求10的系统,其中所述解码包括针对所述通道生成候选错误向量,以及响应于所述候选错误向量指示单个位错误而消除通过解码所述校验子生成的其他通道的投票。
12.根据权利要求10的系统,其中所述故障通道的特征在于,其具有的投票与所述总线上的任何其他通道至少一样多。
13.根据权利要求10的系统,其中所述系统还包括与所述通道关联的多个运行计数器以便存储值,所述投票包括递增与该通道关联的运行计数器,并且所述标识包括比较所述运行计数器中的值以选择所述故障通道。
14.根据权利要求13的系统,其中所述比较计算较高运行计数器值与较低运行计数器值的比率,并且所述标识进一步包括相对于比率阈值而比较所计算的比率以选择所述故障通道。
15.根据权利要求10的系统,其中在接收到指定数量的所述校验子之后执行所述标识。
16.根据权利要求10的系统,其中针对所接收的校验子的子集执行所述解码并且所述解码包括生成候选错误向量,其中所述解码利用所接收的并且不在该子集中的校验子来交叉检验所述候选错误向量。
17.根据权利要求10的系统,其中响应于标识所述故障通道和启动纠正操作而重置所述投票。
18.根据权利要求10的系统,其中在指定时间量之后重置所述投票。
19.根据权利要求10的系统,其中所述总线接口设备是存储器系统中的集线器设备。
20.根据权利要求10的系统,其中所述总线接口设备是存储器系统中的存储器控制器。
21.一种用于检测总线故障的计算机程序产品,所述计算机程序产品包括 计算机可读存储介质,其可由处理电路读取并存储指令以便由所述处理电路执行以实现一种方法,所述方法包括 接收错误检测代码的多个校验子,所述错误检测代码与已在总线上传输的多个帧关联,所述总线包括多个通道并由所述错误检测代码来保护; 针对所述校验子中的每个校验子,执行 针对所述通道中的每个通道,执行 在假设该通道是故障通道的情况下对该校验子进行解码,所述解码输出解码结果;判定所述解码结果是否是有效解码;以及响应于判定所述解码结果是有效解码而为所述通道投票;以及响应于所述投票而标识故障通道,所述故障通道的特征在于,其具有的投票多于所述总线上的至少一个其他通道。
22.根据权利要求21的计算机程序产品,其中所述解码包括针对所述通道生成候选错误向量,以及响应于所述候选错误向量指示单个位错误而消除通过解码所述校验子生成的其他通道的投票 。
全文摘要
使用校验子分析的故障总线通道检测包括一种方法,包括接收错误检测代码的多个校验子,所述错误检测代码与已在总线上传输的多个帧关联,所述总线包括多个通道并由所述错误检测代码来保护。所述方法包括对于所述校验子中的每个校验子,针对所述通道中的每个通道而执行以下操作在假设该通道是故障通道的情况下对该校验子进行解码,所述解码输出解码结果;判定所述解码结果是否是有效解码;以及响应于判定所述解码结果是有效解码而为所述通道投票。然后响应于所述投票而标识故障通道,所述故障通道的特征在于,其具有的投票多于所述总线上的至少一个其他通道。
文档编号H03M13/09GK102893262SQ201180024673
公开日2013年1月23日 申请日期2011年6月8日 优先权日2010年6月24日
发明者L·拉斯特拉斯-莫塔诺, P·J·米尼, K·高尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1