CN102318276B - 检测计算机系统中的不可靠的链路 - Google Patents
检测计算机系统中的不可靠的链路 Download PDFInfo
- Publication number
- CN102318276B CN102318276B CN200880132801.6A CN200880132801A CN102318276B CN 102318276 B CN102318276 B CN 102318276B CN 200880132801 A CN200880132801 A CN 200880132801A CN 102318276 B CN102318276 B CN 102318276B
- Authority
- CN
- China
- Prior art keywords
- programmable threshold
- event
- threshold
- communication link
- exceeded
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0823—Errors, e.g. transmission errors
- H04L43/0847—Transmission error
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/16—Threshold monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Maintenance And Management Of Digital Transmission (AREA)
- Debugging And Monitoring (AREA)
Abstract
用于分析通信链路的可靠性的系统的一个实施例包括控制所述通信链路的链路控制部件,其中所述链路控制部件耦合至处理器和诊断部件。所述诊断部件被配置成确定在超过第二可编程阈值或与第二可编程阈值匹配的多个时间周期的范围期间、是否已经在通信链路上发生了超过第一可编程阈值或与第一可编程阈值匹配的传输错误。
Description
技术领域
本公开一般涉及计算机系统,并且更特别地涉及计算机系统中的通信链路的分析。
背景技术
许多利用串行链路的计算机系统采用每链路单个计数器来测量发生在链路上的错误。这些系统可以轮询计数器并且确定链路是否需要被修复。
其它系统通过创建时间窗(在该时间窗期间对错误进行计数)来对此方法进行扩充。一旦时间周期已经期满,计数器就被清零。此计数器可以具有阈值,其中如果该阈值被超过,则记录错误并且/或将错误消息发送至管理硬件/软件。
发明内容
本公开的实施例提供了用于分析通信链路的可靠性的系统和方法。该系统的一个实施例包括控制通信链路的链路控制部件,其中该链路控制部件耦合至处理器和诊断部件。诊断部件被配置成确定在超过第二可编程阈值或与第二可编程阈值匹配的多个时间周期的范围期间、是否已经在通信链路上发生了超过第一可编程阈值或与第一可编程阈值匹配的传输错误。
用于分析通信链路的可靠性的方法的一个实施例尤其能够被概括地总结为如下:接收错误已经在通过通信链路的传输中被检测到的指示,并且确定在超过第二可编程阈值或与第二可编程阈值匹配的多个时间周期的范围期间、是否已经在通信链路上发生了超过第一可编程阈值或与第一可编程阈值匹配的传输错误,根据寄存器值来确定所述第一可编程阈值和所述第二可编程阈值。
本公开的实施例还包括嵌入有用于分析通信链路的可靠性的指令的计算机可读存储媒体。在一个实施例中,指令在被计算机执行时使计算机执行:接收错误已经在通过通信链路的传输中被检测到的指示,并且确定在超过第二可编程阈值或与第二可编程阈值匹配的多个时间周期的范围期间、是否已经在通信链路上发生了超过第一可编程阈值或与第一可编程阈值匹配的传输错误,根据寄存器值来确定所述第一可编程阈值和所述第二可编程阈值。
对于本领域的技术人员而言,根据对以下附图和详细说明的研究,本公开的其它系统、方法、特征和优点将会或变得显而易见。意图是所有此类另外的系统、方法、特征和优点都被包括在本说明书中并且都在本公开的范围内。
附图说明
本公开的许多方面能够通过参考以下附图而被更好地理解。附图中的部件不一定按比例绘制,而是将重点放在清楚地图示本公开的原理。而且,在附图中,类似的附图标记遍及若干视图指示相应的部分。
图1是用于互连在根据本公开的计算平台中的外围设备的示例性体系结构的方框图。
图2-4是用来控制图1的诊断逻辑的各方面的状态寄存器的代表性示图。
图5-6是描述根据图1的系统的诊断操作过程的实施例的流程图。
具体实施方式
通常,计算机系统使用通信链路在节点或网络连接点之间通信。本公开的实施例采用诊断逻辑或部件,所述诊断逻辑或部件在链路完全故障(硬故障)之前检测计算机系统中的故障链路。诊断逻辑的一个实施例区分发生在链路上的单个错误序列与该链路本身的缓慢恶化,其中链路的恶化可以指示该链路很快变得不可靠并且应该进行修复。要注意的是,某部件的缓慢恶化通常不需要重新训练(retrain)链路从而停止使用故障线路。通常,该线路仍然工作但是偶尔发生错误并且随着时间的推移发生越来越多的错误,其将最终使得在链路上发生硬错误。诊断逻辑134试图在硬故障发生之前捕获这种类型的问题。
计算机或计算机的部分跨越其进行通信的通信链路可以是串行的,因为单个数据流跨越该链路加以传输。通常已知串行链路具有低的可更正错误率。串行通信体系结构的示例包括RS-232、RS-423、RS-485、通用串行总线、FireWire®、以太网、光纤信道(Fibre Channel)、InfiniBand®、PCI (外设部件互连) Express、SONET、SDH、T-1、E-1等等。
已经基于高带宽串行体系结构形成了若干通信标准。这些包括HyperTransport®、RapidIO®、StarFabric®和Intel QuickPath Interconnect®。
图1是用于互连计算平台中的外围设备的PCI
Express(PCIe)体系结构的方框图。PCIe常常被用作计算系统中的背板系统。在该图中PCIe的使用是为了图示目的而并不意图是限制性的。在其它实施例中也可以使用其它的串行通信体系结构。
在图1的计算平台中,诸如根联合体(RC)设备110之类的链路控制部件将中央处理器120和存储子系统130连接至PCI Express交换结构140,所述PCI Express交换结构140包括一个或多个交换设备150。根联合体设备110代表处理器120生成事务处理请求,其通过局部总线125而被互连。同样地,根联合体110生成存储和输入/输出(I/O)请求。
根联合体功能可以被实现为离散设备,或可以与处理器120集成。存储器130中的软件可以包括基本输入输出系统(BIOS)(为简单起见被省略)和合适的操作系统(O/S)132。BIOS是一组软件例程,其在启动时初始化并且测试硬件、开启操作系统(O/S)132、并且支持硬件设备间的数据的传送。BIOS被存储在ROM中,从而使得当计算平台被激活时BIOS能够被执行。如所示,诊断逻辑134和寄存器138都位于根联合体设备110中。在另一实施例中,诊断逻辑134可以位于端点或主存储器处。
根联合体110可以包含一个以上的PCI Express端口(RP)并且多个交换设备150能够被连接至该根联合体110上的端口或被级联。端点170(例如,具有PCI Express系统接口的千兆位以太网(Gigabit
Ethernet)控制器、图形处理单元、存储控制器、等等)完成或请求PCI Express事务处理。
PCIe实施双单工链路160,其中数据在链路160的发送线路和接收线路上同时被发送和接收。任何两个PCIe设备之间的连接被认为是链路160并且是由一条或多条线路的集合来构建的,其中线路的数量是可配置的。
根联合体(RC)110内的根端口(RP)检测与PCIe结构140内的分组传输有关的错误。某些错误在由根端口(RP)接收到的分组中被检测到。由于NAK(否定应答)的接收或由于重放超时而导致推断出某些错误。这些由根联合体110接收的错误导致状态寄存器138被更新并且错误被有条件地报告给适当的软件错误处理器136或处理器。软件错误处理器136将最初读取根联合体状态寄存器138以确定错误的性质,并且还可以读取报告该错误的设备的设备专用错误寄存器。
因此,PCIe定义了各种机制,其用于检查错误、就那些错误进行报告、并且识别用于处理这些错误的适当硬件和软件元件。PCIe错误检查集中于与PCIe接口相关联的错误和在请求端功能和完成端功能之间的事务的传送。根据PCIe协议,错误被分成三个类别,所述三个类别指定错误的严重性,并且定义应该基于其严重性处理该错误的实体。这些类别包括:可更正的错误,其由PCI
Express结构的硬件来处理;不可更正的非致命错误,其由设备专用软件来处理;以及不可更正的致命错误,其由系统软件来处理。
关于可更正的错误,这些错误会对性能(例如,延时和带宽)有影响但是没有信息由于该错误而被丢失。这些类型的错误可以被报告给适当的PCI Express设备的软件,所述软件能够采取各种行动,包括:记录错误;更新PCIe性能的计算;以及跟踪错误以预测结构140内的可能的弱点。跟踪错误能够隔离这样的区域,即在该区域中,对于将来的致命错误而言存在更大的可能性。采用本公开的实施例,通过诊断逻辑134分析可更正错误率以确定通信链路160是否处于恶化的过程中但是尚未达到使不可更正的错误被检测到的程度。
例如,在诊断逻辑134的一个实施例中,如果可更正错误率超过多级可编程阈值或与多级可编程阈值匹配,则链路160被视为已经在其操作方面恶化,其可能指示在不久的将来该链路160的硬故障。因此,停止使用那条链路160或在硬故障发生以前更换它可能是可取的,这会引起计算机系统的非计划停机时间。
为了图示,在一个实施例中,诊断部件或逻辑的一个方案包括以下的部件:可编程的时间窗、事件计数器、可编程的事件阈值、周期计数器以及可编程的周期阈值。在一个实施例中,使用硬件寄存器实现计数器。尽管已经在PCI
Express链路160的示例性背景下阐述了实施例,但是该方案的其它实施例可用于能够容许一定级别的可更正错误的任何链路或通信信道。
在前述方案中,每当可更正的错误发生在正被分析的链路160上时,事件计数器就被递增。在时间窗期满以后,该事件计数器就被清零。要注意的是,事件计数器能够被编程为(但不限于)对一个或多个(例如,1个至5个)不同的PCIe可更正错误进行计数。可能的可更正错误包括:a) DLLP(数据链路层分组)CRC(循环冗余校验)错误(入站);b) TLP(事务处理层分组)LCRC(链路CRC)错误(入站);c) 接收器错误(入站);d) 已接收的NAK(否定应答)(即,出站LCRC);e) 重放超时(replay timeout)(出站)。这些信号中的每一个都指示发生在链路160上的可更正错误。
如果事件计数器超过可编程事件阈值或与可编程事件阈值匹配,则周期计数器就被递增(在那个时间或周期窗中只此一次)。周期计数器对其中超过了事件阈值或与事件阈值匹配的连续周期进行计数。如果时间周期过去而没有超过事件阈值或与事件阈值匹配,则该周期计数器就被清零。如果周期计数器超过周期阈值或与周期阈值匹配,则这意味着链路160已经显著地恶化并且存在问题。
然后可以由诊断逻辑134采取若干行动:错误能够被记录在PCIe结构的硬件(或软件)中的错误日志中。此外,中断能够被发送至管理硬件。PCIe结构的该管理硬件可以选择将人类可读的消息发送至系统的操作者或发送至现场服务中心,指示特定的链路需要被修复。可替换地,管理硬件能够启动动态切换从而所有去往有问题的链路的业务被重新定向在不同的链路上。
需要注意的是,多个级别或阈值被用来在问题被诊断逻辑134认识到以前指示错误。例如,由单一事件所引起的错误的突发(也许是在传输中噪声事件使一个以上的位翻转)能够使得多个错误在通信链路160上 (通过在RP或端点处的设备) 被检测到。只要该错误被包含在诊断窗或周期内(或者也许是自错误的突发可能跨在边界上以来的两个周期)并且只要诊断窗阈值被设置为3或更大的值,诊断逻辑134就忽略由单一事件所引起的错误突发。在现有设计中,其中未使用多个级别或阈值,错误突发会看起来像许多错误,尽管它实际上仅仅是单一事件。
采用诊断逻辑134的实施例,检测到不是由单一事件引起的持续错误率。特别地,诊断逻辑134通过注意达到多个事件阈值长达一个持续的时间段来检测问题。作为响应,为了指示正被监控的链路的故障,诊断逻辑134可以通知用户、将中断发送至O/S 134、等等。
为了阐明上述过程在一个实施例中可以如何工作,提供了若干示例。在第一示例中,假定已经采用以下值对诊断计数器进行了设置:时间周期=1秒;错误阈值=1;周期阈值=4。为了使得采用这些被赋予的值来发信号通知问题,诊断逻辑134将需要在四个连续的1秒周期中的每一个中观察至少1个PCIe错误。
接下来,在以下的示例中,时间周期或窗已经被设置为1秒;事件阈值已经被设置为100个错误;以及周期阈值被设置为5个周期。这些值中的每一个都可由用户编程。
假定对于上述示例,存在使位在正通过链路160传输的分组中被翻转的伽玛射线穿透(gamma
ray strike)。这是单一错误事件。尽管事件计数器由于所翻转的位而将递增,但是如果所翻转的位是唯一的错误,则这不会超过事件阈值或与事件阈值匹配。
现在假定发生EMI(电磁干扰)事件,其使芯片组中的符号锁(symbol lock)丢失。这将在链路160上引起错误流,直到该链路被重新训练为止。在此示例中,事件计数器将在1秒内计数超过100。这将使周期计数器同样递增。然而,假定重新训练在不到1秒内完成,因此只有1个周期(或者也许是2个周期)将已经超过该事件阈值或与该事件阈值匹配。结果,由于EMI事件而没有超过周期阈值或与周期阈值匹配。
接下来,假定对于上述示例,在芯片组上存在缓慢恶化的连接器引脚。假设其以每秒约10个的速率产生可更正的错误。慢慢地,可更正的错误的速率增加到每秒100个。周期计数器将开始递增。由于这是持续的错误速率,所以连续5个周期将超过周期阈值或与周期阈值匹配,并且现在错误事件足够严重以至于它可能需要被诊断逻辑134报告并且可能要被修复。
因此,诊断逻辑134可能能够在通信链路160完全故障以前检测到缓慢恶化的通信链路160。通过在许多连续的时间窗或周期期间查看可更正错误率,诊断逻辑134能够忽略在更大的时间窗或周期期间持续的瞬时错误和标记错误率。
用来控制诊断逻辑134的各方面的该组状态寄存器138可以包括定义时间窗或周期的长度的寄存器(对于整个根联合体来说是普通的)。此状态寄存器被称为链路诊断计时器控制(Link Diagnostic Timer Control ) (见图2),其设计定义诊断窗(对于所有根端口的两个方向的所有事件来说是普通的)的计时器。
链路诊断计时器控制寄存器210中的值控制计时器/计数器,其定义由根联合体110中的诊断逻辑134所使用的诊断时间窗或周期的长度。两个单独的计数器被用于此目的。第一计数器(诊断窗周期计时器220)将输入根联合体管理主滴答信号(tick signal)转换成中间诊断滴答信号。第二计数器(诊断窗长度计时器230)确定诊断窗或周期的实际长度。所述窗定义这样的时间间隔,在该时间间隔期间诊断逻辑134对某些链路事件的发生进行计数,如由各根端口的链路诊断状态与控制寄存器(见图3-4)所指定的那样。注意,在一个实施例中,对链路诊断计时器控制寄存器210的任何写入都重置两个诊断窗计时器。
链路诊断计时器控制寄存器210的diag_window_period(诊断_窗_周期)值控制诊断窗周期计时器220并且将计时器生成的诊断滴答信号的周期定义为其输出。此信号又被用作诊断窗长度计时器230的输入。诊断滴答信号的周期等于公共根联合体管理主滴答信号的周期(例如1微秒)乘以diag_window_period值。在一个实施例中,当使用诊断逻辑134时,
diag_window_period可以被设置为16'd10000,由此使诊断滴答信号的周期等于10 ms。将diag_window_period值设置为0重置并且停止诊断窗周期计时器220并且阻止生成关于诊断滴答信号的任何脉冲。
链路诊断控制寄存器210的diag_window_length(诊断_窗_长度)值控制诊断窗长度计时器230并且将诊断窗的长度定义为诊断滴答信号的diag_window_length周期(例如,diag_window_length
* 10 ms)。在一个实施例中,diag_window_length字段的24位宽度允许超过46小时的诊断窗最大长度。在每个诊断窗或周期的末尾,诊断窗长度计时器生成关于特殊信号(诊断窗边界)的脉冲。对于在各根端口的链路诊断状态与控制寄存器(见图3-4)中的链路事件计数器来说,此脉冲充当它们的“当前”事件计数器值应当被传送至“先前的”计数器并且当前的计数器应该再次从0开始对已选择的事件进行计数的指示。将diag_window_length值设置为0重置并且停止诊断窗长度计时器并且阻止生成关于诊断窗边界信号的任何脉冲。
用来控制诊断逻辑134的各方面的该组状态寄存器138可以进一步包括每链路/RP寄存器(RPx链路诊断状态与控制),其将为链路160的两个方向中的每一个方向定义/保持以下内容:事件计数阈值;当前的和先前的事件计数;以及针对该方向的每个错误类型的使能位(Enable
bit)。进一步地,此寄存器还可以实现针对链路/RP的特定方向的事件计数的重置。当正被跟踪的错误类型的使能位变化时,这可能是有用的。如果设置了用于一方向/链路的多个使能位,则当发生已使能的错误类型中的任何一个时,诊断逻辑134将对所有循环进行计数。
诊断状态与控制寄存器310(见图3)被用来控制每个RP的链路的诊断逻辑并且读取事件计数器的值。该寄存器310设计用于当前事件计数的阈值和事件选择掩码。它们还包含当前的和先前的事件计数值和reset_counts(重置_计数)位。
诊断逻辑134能够在当前的诊断窗 (由链路诊断计时器控制寄存器210的编程所定义) 期间对在每条链路160上的某些事件的发生进行计数。能够被计数的事件的类型包括Bad
TLP(坏的TLP)、Bad
DLLP(坏的DLLP)、Receiver
Error(接收器错误)(这三种事件通过入站链路逻辑来加以检测/触发),以及NAK Received(接收到的NAK)和Replay Timer
Timeout(重放计时器超时)(这两种通过出站链路逻辑来加以检测)。待计数的实际事件类型经由它们的选择掩码而被选择;如果选择超过单个事件类型,则将对在其期间发生已选择的事件中的任何一个事件的所有循环进行计数。到目前为止,在当前诊断窗期间,一个或多个已选择事件的发生的数量被指示在event_cnt(事件_计数)字段320中;在每两个诊断窗之间的边界处,event_cnt字段的当前值被自动地传送至prev_event_cnt字段330,并且event_cnt字段320开始再次对发生在新的诊断窗中的已选择的事件进行计数。
如果在此窗期间所达到的event_cnt 320的值小于event_threshold(事件_阈值)字段340的值,则在每个诊断窗的末尾处将period_cnt(周期_计数)字段330重置为0;另一方面,如果在窗的末尾处event_cnt 320的值等于或大于event_threshold
340,则period_cnt字段330就被递增。因此,period_cnt 330在其中event_cnt
320达到或超过event_threshold值340的当前窗之前立即指示连续的诊断窗的数量。如果period_cnt
330的值达到period_threshold字段350中的值,则所有进一步的事件和周期计数就被阻止,在period_cnt
360、event_cnt 320和prev_event_cnt 330字段中的值就被冻结(即,从event_cnt至prev_event_cnt没有传送发生),并且HCE(硬件校验错误)事件就被产生并且被发送至状态寄存器。然后软件可以将1写入reset_cnts位385以将所有计数重置为0,并且开启随后的事件和周期计数。如果event_threshold(事件_阈值)340的值或period_threshold(周期_阈值)350的值为0,则对于此根端口(RP)来说,没有事件/周期计数被执行并且没有HCE事件被产生。例如,诊断逻辑134可以通过对这些来自所有的RP的事件一起进行或操作(OR-ing)来为状态寄存器138构造单个HCE事件。
诊断状态与控制寄存器310的select_bad_tlp值372充当用于入站链路上的“Bad TLP”事件类型的选择掩码。值“1”选择用于计数的事件,并且值“0”使诊断逻辑134忽略它。
诊断状态与控制寄存器310的select_bad_dllp值374充当用于入站链路上的“Bad DLLP”事件类型的选择掩码。值“1”选择用于计数的事件,并且值“0”使诊断逻辑134忽略它。
诊断状态与控制寄存器310的select_rcvr_err值376充当用于入站链路上的“Receiver Error”事件类型的选择掩码。值“1”选择用于计数的事件,并且值“0”使诊断逻辑134忽略它。
诊断状态与控制寄存器310的select_nak_received值378充当用于出站链路上的“NAK Received”事件类型 (例如,从入站链路接收到的针对先前在出站链路上发送的TLP的NAK) 的选择掩码。值“1”选择用于计数的事件,并且值“0”使诊断逻辑134忽略它。
诊断状态与控制寄存器310的select_replay_timeout
380充当用于在出站链路上的“Replay Timer Timeout”事件类型的选择掩码。值“1”选择用于计数的事件,并且值“0”使诊断逻辑134忽略它。
将1写入到诊断状态与控制寄存器310的reset_cnts值385将所有计数器(period_cnt 360、event_cnt
320和prev_event_cnt 330)的值重置为0,并且开启随后的事件和周期计数。
诊断状态与控制寄存器的period_threshold值350为period_cnt字段360的值,其如果被达到,则进一步阻止事件和周期计数并且触发将HCE(硬件校验错误)事件发送到状态寄存器138中。如果此值为0,则对于RP来说没有事件或周期计数被执行并且没有HCE事件能够被产生。
诊断状态与控制寄存器310的event_threshold值340为event_cnt字段320的值,其如果在诊断窗期间被达到或超过,则在该窗的末尾处使period_cnt字段360被递增。如果在该窗的末尾处event_cnt 320的值小于event_threshold 340,则period_cnt字段360被重置为0而不被递增。如果此值为0,则对于RP来说没有事件或周期计数被执行并且没有HCE事件能够被产生。
诊断状态与控制寄存器310的period_cnt值360为在其中event_cnt 320达到或超过event_threshold值350的当前窗之前紧接着的连续的诊断窗的数量。如果其达到period_threshold 360的值,则此字段被冻结(并且所有进一步的事件和周期计数被阻止)。
诊断状态与控制寄存器310的event_cnt值320为到目前为止在当前诊断窗期间所达到的一个或多个已选择事件的事件计数。如果period_cnt字段360达到period_threshold
350的值,则此字段被冻结(并且所有进一步的事件和周期计数被阻止)。
诊断状态与控制寄存器310的prev_event_cnt值330为在先前的诊断窗期间在event_cnt字段320中所达到的、并且在先前的和当前的诊断窗之间的边界处被传送给此字段(除非period_cnt 360在此边界处达到period_threshold
350的值,在该情况下不执行从event_cnt 320至prev_event_cnt 330的传送)的一个或多个已选择事件的最终事件计数。
用来控制诊断逻辑134的各方面的该组状态寄存器138可以进一步包括链路诊断状态寄存器。该链路诊断状态寄存器410(见图4)提供关于所有的链路160的诊断状态的集合信息。当设置时,此寄存器410中的每个特定位都指示在用于对应的RP的链路诊断状态与控制寄存器310中的period_cnt字段360的当前值已经达到period_threshold值350(例如,event_cnt字段320在period_threshold 350连续诊断窗中的每一个中已经达到或超过指定的event_threshold
340)。一旦设置,该位通过将1写入链路诊断状态与控制寄存器310的reset_cnts 385位的软件而被再次清零。这会重置所有用于RP的周期和事件计数并且实现进一步的计数。
当设置时,链路诊断状态寄存器410的rpX_period_threshold_hit值(420, 421, 422, 423)指示RPX的链路诊断状态与控制寄存器310中的period_cnt计数器已经达到其指定的阈值(例如,period_threshold
350)。
在上述示例中,周期计数器对其中事件阈值已经被超过或被达到的连续周期进行计数。在其它实施例中,连续周期可以不是必要条件。相反,可以实施规定周期的分数(fraction)的规则(例如,X出自Y个周期,其中X < Y,即X/Y),所述周期被跟踪以确定对于满足或超过所定义要求的周期而言,是否已经超过了事件阈值或与事件阈值匹配。分数值应该足够大以避免噪声事件发生,其将引起错误的肯定结果。
如前所述,在一个或多个实施例中实现可编程阈值。这允许通过(例如,设计不同的阈值)用于不同体系结构和通信链路技术的诊断逻辑134来处理各种错误率。
现参考图5,描绘了描述诊断逻辑134的一个实施例的诊断操作的过程的流程图。在方框510中,事件计数器被初始化为零并且周期计数器被初始化为零。该事件计数器对在当前诊断周期或窗期间正被监控的通信链路上的某些事件的发生进行计数。能够被计数的事件的类型包括可更正错误,诸如Bad
TLP(坏的TLP)、Bad
DLLP(坏的DLLP)、Receiver
Error(接收器错误)(这三种事件由入站链路逻辑来检测/触发),以及NAK Received(接收到的NAK)和Replay Timer Timeout(重放计时器超时)(这两种由出站链路逻辑来检测)。在一个实施例中,周期计数器对在其中事件计数器已经与所定义的事件阈值匹配或超过所定义的事件阈值的当前窗之前紧接着的连续的诊断窗的数量进行计数。
在方框515中,检查诊断窗或周期的状态以确定该周期是否已经期满。如果该周期未期满,那么该过程检查可更正的错误在该周期期间是否已经被检测到(方框520)。否则,如果该周期已经期满,则检查事件计数器(方框550)以确定对于最近期满的周期而言,事件计数器的当前值是否与事件阈值匹配或超过事件阈值。
相应地,在方框520中,当可更正的错误已经在通信链路上被检测到时,事件计数器就被递增(方框530)。如果未检测到可更正的错误,那么该过程再次对当前诊断周期是否已经期满进行检查(方框515)。
在该周期已经期满以后,检查事件计数器(方框550)以确定对于最近期满的周期而言,事件计数器的当前值是否与事件阈值匹配或超过事件阈值。在方框560中,当对于最近期满的周期而言该事件计数器的当前值与事件阈值匹配/超过事件阈值时,周期计数器就被递增并且重置事件计数器(例如,设置为0)以供待测量的下一个周期中使用。否则,如果对于最近期满的周期而言事件计数器的当前值不与事件阈值匹配/超过事件阈值,则开始新的诊断周期,重置事件计数器(例如,设置为0),并且重置周期计数器(例如,设置为0),如方框555中所示。在重置这些值以后,该过程再次对当前诊断周期是否已经期满进行检查(方框515)。
在方框570中,在递增周期计数器以后,进行检查(方框570)以确定周期计数器的当前值是否与所定义的周期阈值匹配或超过所定义的周期阈值。如果尚未与周期阈值匹配/尚未超过周期阈值,则开如新的诊断周期(方框575)。在重置这些值以后,该过程再次对当前诊断周期是否已经期满进行检查(方框515)。否则,当周期计数器的当前值与所定义的周期阈值匹配或超过所定义的周期阈值时,则在正被监控的通信链路上已经认识到了问题并且该问题的指示被记录或被报告给用户或更高级别的软件/硬件,如方框580中所描绘的那样。在发现问题以后,停止在通信链路上检测进一步的错误,直到接收到命令以重新开始或重置过程为止,如方框590中所指示的那样。当接收到该命令时,则该过程重新开始(如方框510中所示)。
接下来参考图6,描述了描述诊断逻辑134的一个实施例的诊断操作的过程的流程图。在方框610中,诊断逻辑134或其它逻辑部件接收错误(例如,可更正的错误)已经在通过通信链路160的传输中被检测到的指示。然后,诊断逻辑134或其它逻辑部件将确定传输错误是否已经发生在正被监控的通信链路上,并且确定传输错误的数量是否超过第一可编程阈值(例如,事件阈值)(或与第一可编程阈值匹配),其中在超过第二可编程阈值(例如,周期阈值)(或与第二可编程阈值匹配)的连续数量的周期期间,该第一可编程阈值已被超过(或被匹配)。
相应地,作为示例,在方框620中,诊断逻辑134通过错误的发生来确定在当前时间周期期间第一可编程阈值是否已经被超过(或被匹配)。在方框630中,作为对确定对于当前时间周期而言第一可编程阈值已经被超过(或被匹配)的响应,诊断逻辑134(作为示例)确定对于超过第二可编程阈值(或与第二可编程阈值匹配)的多个且连续的时间周期而言,该第一可编程阈值是否已经被超过(或被匹配)。接下来,作为对确定第二可编程阈值已经被超过(或被匹配)的响应,诊断逻辑134(作为示例)采用通信链路将问题报告给其中存在该通信链路的计算机系统的用户/应用程序/处理器,如方框640中所描绘的那样。
本公开的实施例的诊断部件或逻辑134能够以硬件、软件、固件或其组合来加以实现。如在一个实施例中,如果以硬件实现,则能够用均为本领域中熟知的以下技术中的任何技术或组合来实现诊断部件134,以下技术是:具有用于对数据信号实现逻辑功能的逻辑门的一个或多个离散逻辑电路、具有适当的组合逻辑门的专用集成电路(ASIC)、一个或多个可编程门阵列(PGA)、现场可编程门阵列(FPGA)、等等。
如果以软件或固件实现,则诊断逻辑134可以被存储在存储器中并且其被适当的指令执行系统来加以执行。在一个实施例中,诊断部件或逻辑134还可以包括用于实现逻辑功能的可执行指令的有序列表,其能够被体现在任何计算机可读媒体中,所述任何计算机可读媒体供指令执行系统、装置或设备(诸如基于计算机的系统、包含处理器的系统或其它能够从指令执行系统、装置或设备提取指令并执行指令的系统)使用或与它们相关联。
在本文的背景下,“计算机可读媒体”包括能够包含、存储、传递或传送供指令执行系统、装置或设备使用或与指令执行系统、装置或设备相关联的程序的装置。计算机可读媒体可以是(例如,但不限于)电子的、磁性的、光学的、电磁的、红外线的或半导体系统、装置或设备。计算机可读媒体的更多具体示例(非穷尽列表)将包括以下:具有一条或多条线的电气连接(电子的)、便携式计算机磁盘(磁性的)、随机存取存储器(RAM)(电子的)、只读存储器(ROM)(电子的)、可擦除可编程只读存储器(EPROM或快闪存储器)(电子的)、光纤(光学的)和便携式光盘只读存储器(CDROM)(光学的)。此外,本公开的某些实施例的范围包括将诊断部件的实施例的功能体现在逻辑中,所述逻辑体现在硬件或软件配置的媒体中。
流程图中的任何过程描述或块应该被理解为表示代码部分、或片段、模块,其包括一个或多个用于实现过程中的特定逻辑功能或步骤的可执行指令,并且替代性实施方式被包括在本公开的范围内,其中根据所涉及的功能,可以不按来自所示或所讨论的那些的顺序来执行功能,包括基本同时地或按相反顺序,如将被本领域普通技术人员理解的那样。
应该强调的是,本公开的上述实施例仅是实施方式的可能示例,仅为了清楚地理解本公开的原理而被陈述。在基本不偏离本公开的原理的情况下,可以对上述一个或多个实施例做出许多变化和修改。所有此类修改和变化在本文中均旨在被包括在本公开的范围之内并且受以下权利要求的保护。
Claims (10)
1.一种用于分析通信链路的可靠性的诊断系统,包括:
控制所述通信链路(160)的链路控制部件(110),所述链路控制部件耦合至处理器(120)和诊断部件(134),
所述诊断部件(120)被配置为确定在超过第二可编程阈值或与第二可编程阈值匹配的多个并且连续的时间周期的范围期间、是否已经在所述通信链路(160)上发生了超过第一可编程阈值或与第一可编程阈值匹配的传输错误。
2.根据权利要求1所述的系统,其中,由所述诊断部件确定传输错误包括:响应于在所述通信链路(160)上检测到可更正错误来确定所述第一可编程阈值在当前时间周期期间是否已经被超过或被匹配,当在当前时间周期中已经发生的错误数量的当前计数超过所述第一可编程阈值或与所述第一可编程阈值匹配时,所述第一可编程阈值被超过或被匹配。
3.根据权利要求2所述的系统,其中,由所述诊断部件确定传输错误包括:作为对确定对于所述当前时间周期而言所述第一可编程阈值已经被超过或被匹配的响应,确定对于超过第二可编程阈值或与所述第二可编程阈值匹配的多个并且连续的时间周期而言、所述第一可编程阈值是否已经被超过或被匹配,所述第二可编程阈值是连续的时间周期已经发生的次数。
4.根据权利要求3所述的系统,其中,所述诊断部件进一步被配置为记录指示所述通信链路上的持续问题的错误,其中所述通信链路未被检测到已经经历了指示所述通信链路(160)的硬故障的错误。
5.根据权利要求2所述的系统,其中,由所述诊断部件(134)确定传输错误包括:作为对确定对于所述当前时间周期而言所述第一可编程阈值已经被超过或被匹配的响应,确定在超过第二可编程阈值或与第二可编程阈值匹配的多个时间周期的范围期间、所述第一可编程阈值是否已经被超过或被匹配,所述第二可编程阈值被定义为分数,其中所定义的分数的分子小于所定义的分数的分母。
6.根据权利要求1所述的系统,其中,所述通信链路(160)包括在PCI Express平台中的串行链路,并且所述诊断部件(134)包括根联合体设备的硬件部件。
7.一种分析通信链路的可靠性的方法,包括:
接收在通过所述通信链路(160)的传输中已经检测到错误的指示;和
确定在超过第二可编程阈值或与第二可编程阈值匹配的多个并且连续的时间周期的范围期间、是否已经在所述通信链路(160)上发生了超过第一可编程阈值或与第一可编程阈值匹配的传输错误,根据寄存器值(138)来确定所述第一可编程阈值和所述第二可编程阈值。
8.根据权利要求7所述的方法,所述确定操作包括:
确定所述第一可编程阈值在当前时间周期期间是否已经被超过或被匹配,当在所述当前时间周期内已经发生的错误数量的当前计数超过所述第一可编程阈值或与所述第一可编程阈值匹配时,所述第一可编程阈值被超过或被匹配。
9.根据权利要求8所述的方法,所述确定操作进一步包括:
作为对确定对于所述当前时间周期而言所述第一可编程阈值已经被超过或被匹配的响应,确定对于超过第二可编程阈值或与所述第二可编程阈值匹配的多个并且连续的时间周期而言、所述第一可编程阈值是否已经被超过或被匹配。
10.根据权利要求8所述的方法,所述确定操作进一步包括:
作为对确定对于所述当前时间周期而言所述第一可编程阈值已经被超过或被匹配的响应,确定在超过第二可编程阈值或与第二可编程阈值匹配的多个时间周期的范围期间、所述第一可编程阈值是否已经被超过或被匹配,所述第二可编程阈值被定义为具有小于1的值的分数。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2008/086790 WO2010071628A1 (en) | 2008-12-15 | 2008-12-15 | Detecting an unreliable link in a computer system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102318276A CN102318276A (zh) | 2012-01-11 |
CN102318276B true CN102318276B (zh) | 2014-07-02 |
Family
ID=42269071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880132801.6A Expired - Fee Related CN102318276B (zh) | 2008-12-15 | 2008-12-15 | 检测计算机系统中的不可靠的链路 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20110246833A1 (zh) |
EP (1) | EP2359534B1 (zh) |
CN (1) | CN102318276B (zh) |
WO (1) | WO2010071628A1 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8527815B2 (en) * | 2010-09-16 | 2013-09-03 | Lsi Corporation | Method for detecting a failure in a SAS/SATA topology |
US8782461B2 (en) * | 2010-09-24 | 2014-07-15 | Intel Corporation | Method and system of live error recovery |
EP2466505B1 (en) * | 2010-12-01 | 2013-06-26 | Nagravision S.A. | Method for authenticating a terminal |
CN102891762B (zh) * | 2011-07-20 | 2016-05-04 | 赛恩倍吉科技顾问(深圳)有限公司 | 连续处理网络数据的系统及方法 |
WO2012149724A1 (zh) | 2011-09-05 | 2012-11-08 | 华为技术有限公司 | 一种快速通道互连链路监控方法和设备及系统 |
GB2495313B (en) * | 2011-10-05 | 2013-12-04 | Micron Technology Inc | Connection method |
US10025686B2 (en) * | 2012-10-30 | 2018-07-17 | Intel Corporation | Generating and communicating platform event digests from a processor of a system |
US9213588B2 (en) | 2014-01-10 | 2015-12-15 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Fault detection and identification in a multi-initiator system |
WO2015136624A1 (ja) * | 2014-03-11 | 2015-09-17 | 株式会社日立製作所 | アプリケーション性能監視方法および装置 |
US10599510B2 (en) * | 2015-07-08 | 2020-03-24 | Hitachi, Ltd. | Computer system and error isolation method |
CN105205021B (zh) * | 2015-09-11 | 2018-02-13 | 华为技术有限公司 | 断开PCIe设备与主机之间的链接的方法和装置 |
US9792167B1 (en) | 2016-09-27 | 2017-10-17 | International Business Machines Corporation | Transparent north port recovery |
US10528437B2 (en) | 2017-06-02 | 2020-01-07 | International Business Machines Corporation | Monitoring correctable errors on a bus interface to determine whether to redirect input/output request (I/O) traffic to another bus interface |
US10430264B2 (en) | 2017-06-02 | 2019-10-01 | International Business Machines Corporation | Monitoring correctable errors on a bus interface to determine whether to redirect input/output (I/O) traffic from a first processing unit to a second processing unit |
CN111418188B (zh) | 2017-11-29 | 2022-01-04 | 英国电讯有限公司 | 操作网络节点的方法、网络节点和计算机可读数据载体 |
CN109376028B (zh) * | 2018-09-27 | 2021-11-09 | 郑州云海信息技术有限公司 | 一种pcie设备纠错方法与装置 |
CN109614288A (zh) * | 2018-12-10 | 2019-04-12 | 浪潮(北京)电子信息产业有限公司 | 高速链路误码告警方法、装置、设备及可读存储介质 |
TWI722447B (zh) * | 2019-06-03 | 2021-03-21 | 瑞昱半導體股份有限公司 | 傳輸介面的錯誤處理方法以及相關的錯誤處理架構 |
CN112083977A (zh) * | 2019-06-12 | 2020-12-15 | 瑞昱半导体股份有限公司 | 传输界面的错误处理方法以及相关的错误处理架构 |
US12081345B2 (en) | 2021-10-14 | 2024-09-03 | Samsung Electronics Co., Ltd. | Autonomous detection of status of link between initiator device and target device in UFS system |
US20240064547A1 (en) * | 2022-08-16 | 2024-02-22 | Cisco Technology Inc. | Systems and Methods for Reverse Affinity Link Exclusion for Ultra-Reliable Low Latency Communication |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5757810A (en) * | 1995-11-24 | 1998-05-26 | Telefonaktiebolaget Lm Ericsson | Transmission link supervision in radiocommunication systems |
EP0952700A2 (en) * | 1998-02-27 | 1999-10-27 | Advanced Micro Devices, Inc. | Network equipment such as a network repeater and testing method therefor |
CN1700701A (zh) * | 2004-05-21 | 2005-11-23 | 英特尔公司 | 对基于链路的系统互连进行物理层初始化的方法和装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2904283B2 (ja) * | 1989-05-22 | 1999-06-14 | マツダ株式会社 | 車両用多重伝送装置 |
US5223827A (en) * | 1991-05-23 | 1993-06-29 | International Business Machines Corporation | Process and apparatus for managing network event counters |
JPH10512109A (ja) * | 1994-12-23 | 1998-11-17 | ブリティッシュ・テレコミュニケーションズ・パブリック・リミテッド・カンパニー | 故障監視 |
US6018803A (en) * | 1996-12-17 | 2000-01-25 | Intel Corporation | Method and apparatus for detecting bus utilization in a computer system based on a number of bus events per sample period |
US6591383B1 (en) * | 1999-11-19 | 2003-07-08 | Eci Telecom Ltd. | Bit error rate detection |
US6775237B2 (en) * | 2001-03-29 | 2004-08-10 | Transwitch Corp. | Methods and apparatus for burst tolerant excessive bit error rate alarm detection and clearing |
US6754854B2 (en) * | 2001-06-04 | 2004-06-22 | Motorola, Inc. | System and method for event monitoring and error detection |
CA2358038A1 (en) * | 2001-09-27 | 2003-03-27 | Alcatel Canada Inc. | System and method for selection of redundant control path links in a multi-shelf network element |
US7434109B1 (en) * | 2002-09-26 | 2008-10-07 | Computer Associates Think, Inc. | Network fault manager for maintaining alarm conditions |
US7131032B2 (en) * | 2003-03-13 | 2006-10-31 | Sun Microsystems, Inc. | Method, system, and article of manufacture for fault determination |
US7523359B2 (en) * | 2005-03-31 | 2009-04-21 | International Business Machines Corporation | Apparatus, system, and method for facilitating monitoring and responding to error events |
US7617424B2 (en) * | 2005-12-30 | 2009-11-10 | Intel Corporation | Error monitoring for serial links |
US7836352B2 (en) * | 2006-06-30 | 2010-11-16 | Intel Corporation | Method and apparatus for improving high availability in a PCI express link through predictive failure analysis |
US7805657B2 (en) * | 2006-07-10 | 2010-09-28 | Intel Corporation | Techniques to determine transmission quality of a signal propagation medium |
US8156382B1 (en) * | 2008-04-29 | 2012-04-10 | Netapp, Inc. | System and method for counting storage device-related errors utilizing a sliding window |
-
2008
- 2008-12-15 WO PCT/US2008/086790 patent/WO2010071628A1/en active Application Filing
- 2008-12-15 EP EP08879013.4A patent/EP2359534B1/en not_active Not-in-force
- 2008-12-15 CN CN200880132801.6A patent/CN102318276B/zh not_active Expired - Fee Related
- 2008-12-15 US US13/133,314 patent/US20110246833A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5757810A (en) * | 1995-11-24 | 1998-05-26 | Telefonaktiebolaget Lm Ericsson | Transmission link supervision in radiocommunication systems |
EP0952700A2 (en) * | 1998-02-27 | 1999-10-27 | Advanced Micro Devices, Inc. | Network equipment such as a network repeater and testing method therefor |
CN1700701A (zh) * | 2004-05-21 | 2005-11-23 | 英特尔公司 | 对基于链路的系统互连进行物理层初始化的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102318276A (zh) | 2012-01-11 |
EP2359534A1 (en) | 2011-08-24 |
WO2010071628A1 (en) | 2010-06-24 |
EP2359534B1 (en) | 2014-05-07 |
EP2359534A4 (en) | 2012-05-09 |
US20110246833A1 (en) | 2011-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102318276B (zh) | 检测计算机系统中的不可靠的链路 | |
US7003698B2 (en) | Method and apparatus for transport of debug events between computer system components | |
ES2550161T3 (es) | Procedimiento, sistema y acoplador de bus para el intercambio de datos entre una red superpuesta y una subyacente | |
US7747414B2 (en) | Run-Time performance verification system | |
US7240130B2 (en) | Method of transmitting data through an 12C router | |
US7835288B2 (en) | Network switch with onboard diagnostics and statistics collection | |
US20080005706A1 (en) | Method and apparatus for improving high availability in a PCI express link through predictive failure analysis | |
US8156382B1 (en) | System and method for counting storage device-related errors utilizing a sliding window | |
US20040268138A1 (en) | Inter integrated circuit bus router | |
US7082488B2 (en) | System and method for presence detect and reset of a device coupled to an inter-integrated circuit router | |
US20200274731A1 (en) | Monitoring controller area network (can) nodes | |
US20090024883A1 (en) | Inter-asic data transport using link control block manager | |
US6954882B2 (en) | Method and apparatus for fault location in a loop network | |
CN105468484A (zh) | 用于在存储系统中确定故障位置的方法和装置 | |
US7801204B2 (en) | Estimation of BER performance | |
GB2404045A (en) | An inter-integrated circuit router for supporting independent transmission rates | |
CN101667953B (zh) | 一种快速环网物理链路状态的上报方法及装置 | |
CN101406002B (zh) | 用于检测通信系统中的差错的设备 | |
US20100162269A1 (en) | Controllable interaction between multiple event monitoring subsystems for computing environments | |
CN101145863B (zh) | 检测系统帧头偏移的装置和方法 | |
US7366952B2 (en) | Interconnect condition detection using test pattern in idle packets | |
US20040255193A1 (en) | Inter integrated circuit router error management system and method | |
JP5779522B2 (ja) | 通信装置、故障判定方法、及びプログラム | |
JP5722167B2 (ja) | 障害監視判定装置、障害監視判定方法、及びプログラム | |
US7788546B2 (en) | Method and system for identifying communication errors resulting from reset skew |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20170207 Address after: American Texas Patentee after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Address before: American Texas Patentee before: HP Development Co., Ltd. |
|
TR01 | Transfer of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140702 Termination date: 20161215 |
|
CF01 | Termination of patent right due to non-payment of annual fee |