CN118051375B - 用于计算设备间直连链路的故障诊断的方法和*** - Google Patents

用于计算设备间直连链路的故障诊断的方法和*** Download PDF

Info

Publication number
CN118051375B
CN118051375B CN202410451366.4A CN202410451366A CN118051375B CN 118051375 B CN118051375 B CN 118051375B CN 202410451366 A CN202410451366 A CN 202410451366A CN 118051375 B CN118051375 B CN 118051375B
Authority
CN
China
Prior art keywords
link
direct
data
direct link
state machine
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.)
Active
Application number
CN202410451366.4A
Other languages
English (en)
Other versions
CN118051375A (zh
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Bi Ren Technology Co ltd
Beijing Bilin Technology Development Co ltd
Original Assignee
Shanghai Bi Ren Technology Co ltd
Beijing Bilin Technology Development Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Bi Ren Technology Co ltd, Beijing Bilin Technology Development Co ltd filed Critical Shanghai Bi Ren Technology Co ltd
Priority to CN202410451366.4A priority Critical patent/CN118051375B/zh
Publication of CN118051375A publication Critical patent/CN118051375A/zh
Application granted granted Critical
Publication of CN118051375B publication Critical patent/CN118051375B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Maintenance And Management Of Digital Transmission (AREA)

Abstract

本发明的实施例涉及一种用于计算设备间直连链路的故障诊断的方法和***,该方法包括:确定数据是否经由直连链路完全传输;响应于数据经由直连链路完全传输,确定分别与直连链路两端的两个直连端口对应的链路训练状态机是否均处于正常状态;响应于链路训练状态机均处于正常状态,确定数据经由直连链路进行传输后是否正确;响应于数据经由直连链路进行传输后是正确的,确定直连链路的数据吞吐量是否满足阈值条件;以及响应于直连链路的数据吞吐量满足阈值条件,针对直连链路进行链路重训练,以确定直连链路是否发生故障。本发明能够在直连链路处于非正常工作状态时,确定直连链路本身是否出现故障,以便于对出现故障的直连链路进行诊断和调试。

Description

用于计算设备间直连链路的故障诊断的方法和***
技术领域
本发明的实施例总体涉及芯片技术领域,并且更具体地涉及用于计算设备间直连链路的故障诊断的方法和***。
背景技术
PCIe(***组件快速互连)总线是一种高带宽扩展总线,常用于连接主机(诸如,中央处理单元(CPU))与各种计算设备(诸如,图形处理单元(GPU)、通用图形处理器(GPGPU))等),以实现主机与计算设备之间的交互,例如数据传输。换言之,经由PCIe总线实现的主机与计算设备之间的数据传输符合PCIe总线标准(又称PCIe协议)。
在此基础上,若将与CPU连接的多个计算设备中的一个视为主设备,该主设备与其他计算设备可以基于PCIe协议实现计算设备与计算设备之间的直连,而无需经由CPU就能够进行计算设备间的数据传输。
然而,在现有技术中,若计算设备间基于PCIe协议的直连链路处于非正常工作状态,无法确定是该直连链路本身出现故障,还是计算设备中的其他模块发生故障。也就是说,现有技术的缺点在于:无法确定直连链路的非正常工作状态是否是由直连链路处的故障导致的。
发明内容
针对上述问题,本发明提供了一种用于计算设备间直连链路的故障诊断的方法和***,使得当直连链路处于非正常工作状态时,能够确定直连链路本身是否出现故障,以便于对出现故障的直连链路进行诊断和调试。
根据本发明的第一方面,提供了一种用于计算设备间直连链路的故障诊断的方法,包括:确定数据是否经由直连链路完全传输;响应于数据经由直连链路完全传输,确定分别与直连链路两端的两个直连端口对应的链路训练状态机是否均处于正常状态;响应于链路训练状态机均处于正常状态,确定数据经由直连链路进行传输后是否正确;响应于数据经由直连链路进行传输后是正确的,确定直连链路的数据吞吐量是否满足阈值条件;以及响应于直连链路的数据吞吐量满足阈值条件,针对直连链路进行链路重训练,以确定直连链路是否发生故障。
在一些实施例中,确定数据是否经由直连链路完全传输包括:将传输通过直连链路两端的两个直连端口处的数据的数量进行比较,以确定数据是否完全传输。
在一些实施例中,直连链路两端的两个直连端口为第一直连端口和第二直连端口。在这些实施例中,将传输通过直连链路两端的两个直连端口处的数据的数量进行比较包括:计算由第一直连端口发送的数据的第一数量;计算由第二直连端口接收的数据的第二数量;以及响应于第一数量等于第二数量,确定数据经由直连链路完全传输。
在一些实施例中,确定分别与直连链路两端的两个直连端口对应的链路训练状态机是否均处于正常状态包括:确定链路训练状态机是否发生过关键事件;确定链路训练状态机是否发生过跳转异常;以及响应于链路训练状态机未发生过关键事件,并且链路训练状态机未发生过跳转异常,确定链路训练状态机处于正常状态
在一些实施例中,确定链路训练状态机是否发生过关键事件包括:读取与链路训练状态机有关的用于统计关键事件的计数器的数值;以及响应于所读取的数值为零,确定链路训练状态机未发生过关键事件,其中关键事件包括以下项中的任一个:链路禁用、链路断开和热复位。
在一些实施例中,确定链路训练状态机是否发生过跳转异常包括:读取与链路训练状态机有关的日志信息,以确定链路训练状态机是否发生过跳转异常。
在一些实施例中,确定数据经由直连链路进行传输后是否正确包括:在直连链路的任一直连端口处生成原始第一序列;将原始第一序列经由直连链路传输至直连链路的另一直连端口处,以在直连链路的另一直连端口处接收经传输的原始第一序列,以得到接收到的序列;至少基于接收到的序列,确定数据经由直连链路进行传输后是否正确。
在一些实施例中,阈值条件包括:直连链路的数据吞吐量达到最大理论带宽。
在一些实施例中,针对直连链路进行链路重训练以确定直连链路是否发生故障包括:针对直连链路进行链路重连,以采集与重连后的直连链路有关的参数;响应于采集到的参数的值未满足目标值,确定直连链路发生故障。
在一些实施例中,参数包括:链路速度和链路宽度。
根据本发明的第二方面,提供了一种用于计算设备间直连链路的故障诊断的***,其特征在于,包括:故障诊断电路,配置为与直连链路任一端处的直连端口相连接,其中,故障诊断电路包括:数据完全传输确定模块,被配置为确定数据是否经由直连链路完全传输;链路训练状态机状态检测模块,被配置为确定与直连端口对应的链路训练状态机是否处于正常状态;数据正确性确定模块,被配置为确定数据经由直连链路进行传输后的正确性;数据吞吐量判断模块,被配置为确定直连链路的数据吞吐量是否满足阈值条件;以及链路重训练模块,被配置为针对直连链路进行链路重连,并采集与重连后的直连链路有关的参数,以确定直连链路是否发生故障。
在一些实施例中,数据完全传输确定模块包括:传输数据计数器,被配置为统计由直连端口发送或接收的数据的数量。
在一些实施例中,链路训练状态机状态检测模块包括:关键事件计数器,被配置为统计链路训练状态机发生过的关键事件的数量;以及链路训练状态机日志存储单元,被配置为存储与链路训练状态机有关的日志信息。
在一些实施例中,数据正确性确定模块包括:序列生成器,被配置为生成原始第一序列,原始第一序列经由直连链路进行传输;序列验证器,被配置为基于接收到的经传输的原始第一序列,验证接收到的序列是否正确。
在一些实施例中,数据吞吐量判断模块包括:吞吐量计算器,被配置为计算直连端口单位时间内发送或接收的数据量
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
结合附图并参考以下详细说明,本发明各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素。
图1示出了根据本发明的基于PCIe协议的***的拓扑结构示意图。
图2示出了根据本发明的实施例的故障诊断电路的示意图。
图3示出了根据本发明的实施例的一示例性故障诊断电路的架构示意图。
图4示出了根据本发明的实施例的用于计算设备间直连链路的故障诊断的方法的流程图。
图5示出了根据本发明的实施例的用于计算设备间直连链路的故障诊断的示例性方法的流程图。
具体实施方式
以下结合附图对本发明的示范性实施例作出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如上所述,主机(例如,CPU)与计算设备(例如,GPU、GPGPU等)可以经由PCIe总线实现主机与计算设备之间的交互,诸如数据传输。此外,计算设备与计算设备之间也可以通过基于PCIe协议的直连链路实现计算设备间的数据传输。图1示出了根据本发明的基于PCIe协议的***100的拓扑结构示意图。
如图1所示,***100包括主机(CPU)110、根复合体(Root Complex, RC)120、至少一个PCIe交换机(PCIe Switch)(即第一PCIe交换机130A和第二PCIe交换机130B,可统称为PCIe交换机130)、至少一个计算设备(GPGPU或GPU)(即第一计算设备140A、第二计算设备140B、第三计算设备140C、第四计算设备140D,可统称为计算设备140)。
如图1所示,RC 120上可以配置有至少一个根端口(Root Port, RP),即第一根端口RP1和第二根端口RP2。
如图1所示,每个PCIe交换机130上可以配置有上游端口(Up Stream Port, USP)和至少一个下游端口(Down Stream Port, DSP)。例如,第一PCIe交换机130A上配置有一个上游端口(即第一上游端口USP1)和两个下游端口(即第一下游端口DSP1和第二下游端口DSP2);类似地,第二PCIe交换机130B上配置有第二上游端口USP2、第三下游端口DSP3和第四下游端口DSP2。
通常,可以将RC 120的根端口与PCIe交换机130的上游端口相连,以形成用于RC120和PCIe交换机130之间的数据传输的链路。例如,如图1所示,RC 120的第一根端口RP1与第一PCIe交换机130A的第一上游端口USP1相连,RC 120的第二根端口RP2与第二PCIe交换机130B的第二上游端口USP2相连。
如图1所示,每个计算设备140上可以配置有用于与PCIe交换机130相连的上端口。以第一计算设备140A为例,其上配置有第一上端口P1,该第一上端口P1与第一PCIe交换机130A的第一下游端口DSP1相连,从而形成用于第一计算设备140A和第一PCIe交换机130A之间的数据传输的链路(即Link0)。由此,第一计算设备140A可以经由其第一上端口P1与第一PCIe交换机130A的第一下游端口DSP1之间的链路、第一PCIe交换机130A、第一PCIe交换机130A的第一上游端口USP1与RC 120的第一根端口RP1之间的链路、RC 120实现与主机CPU及***内存(未示出)的交互。同样地,第二计算设备140B、第三计算设备140C、第四计算设备140D可以以类似地方案实现与主机CPU及***内存(未示出)的交互。
进一步地,每个计算设备140上还可以配置有用于与其他计算设备140互联的直连端口。如图1所示,例如,第一计算设备140A上配置有多个直连端口,即第一直连端口PIP1、第二直连端口PIP2和第三直连端口PIP3,其中第一计算设备140A的第一直连端口PIP1与第二计算设备140B的直连端口PIP4相连,以形成用于第一计算设备140A和第二计算设备140B之间的数据传输的直连链路(即Link1)。类似地,第一计算设备140A的第二直连端口PIP2与第三计算设备140C的直连端口PIP5相连,以形成用于第一计算设备140A和第三计算设备140C之间的数据传输的直连链路(即Link2);第一计算设备140A的第三直连端口PIP3与第四计算设备140D的直连端口PIP6相连,以形成用于第一计算设备140A和第四计算设备140D之间的数据传输的直连链路(即Link3)。换言之,在如图1所示的***100中,第一计算设备140A可以基于PCIe协议分别经由Link1、Link2和Link3实现与第二计算设备140B、第三计算设备140C和第四计算设备140D之间的直连,并通过Link1、Link2和Link3进行计算设备间的交互,例如互相访问对方计算设备的存储器等。
通常,计算设备的每个直连端口均配置有高级错误报告寄存器(简称AER寄存器),以用于存储AER错误,诸如完成超时(completion timeout)、不支持的请求(unsupportedrequest)、完成者中止(completer abort)、接收端溢出(Receiver Overflow)、流量控制协议异常(Flow Control Protocol Error)等等。可以通过读取直连端口的AER寄存器中的信息,确定是否出现AER错误。然而,某一直连端口的AER寄存器中出现AER错误并不一定意味着以该直连端口为一端的直连链路发生故障。在一些情况下,计算设备的其他模块出现错误,也可能导致直连端口的AER寄存器中出现AER错误。例如,图1中的第一计算设备140A中的某个模块通过Link3向第四计算设备140D发起了一笔读,由于第四计算设备140D的存储器出现损坏,因而没有向第一计算设备140A返回与该笔读相关的响应。在这种情况下,由于第一计算设备140A的第三直连端口PIP3在预定时间内没有收到响应,使得Link3处于非正常工作状态,这时第三直连端口PIP3的AER寄存器中将出现完成超时的AER错误。显然,这一AER错误并非是由于Link3本身发生故障而导致的。然而,如上所述,相关技术无法确定直连链路的非正常工作状态是否是由于直连链路本身出现故障导致的。也就是说,当直连端口的AER寄存器中出现AER错误,无法确定该AER错误是否是由于直连链路本身出现故障而导致的。
为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个,本发明的示例实施例提出了一种用于计算设备间直连链路的故障诊断的方案。在该方案中,通过确定数据是否经由直连链路完全传输;响应于数据经由直连链路完全传输,确定分别与直连链路两端的两个直连端口对应的链路训练状态机是否均处于正常状态;响应于链路训练状态机均处于正常状态,确定数据经由直连链路进行传输后是否正确;响应于数据经由直连链路进行传输后是正确的,确定直连链路的数据吞吐量是否满足阈值条件;以及响应于直连链路的数据吞吐量满足阈值条件,针对直连链路进行链路重训练,以确定直连链路是否发生故障,使得当直连链路处于非正常工作状态时,能够确定直连链路本身是否出现故障,以便于对出现故障的直连链路进行诊断和调试。
下面将结合图2至图5详细描述根据本发明的实施例的用于计算设备间直连链路的故障诊断的方案。
图2示出了根据本发明的实施例的故障诊断电路200的示意图。应理解,故障诊断电路200还可以包括未示出的附加模块和/或可以省略所示出的模块,本发明的范围在此方面不受限制。
根据本发明的发明构思,故障诊断电路200被配置为与计算设备的直连端口相连接,以便能够实现对不同计算设备的直连端口间的直连链路的故障诊断。在一些实施例中,可以针对每个计算设备的每个直连端口配置一个故障诊断电路200。
关于计算设备,可以是诸如GPU、GPGPU。
关于直连端口,可以是计算设备上配置的用于与其他计算设备直接互联的端口。根据本发明的实施例,直连端口可以是计算设备的PCIe互联端口(PCIe InterconnectionPort, PIP)。
如图2所示,故障诊断电路200可以包括:数据完全传输确定模块210、链路训练状态机状态检测模块220、数据正确性确定模块230、数据吞吐量判断模块240和链路重训练模块250。
关于数据完全传输确定模块210,其可以被配置为确定数据是否经由直连链路完全传输。根据本发明的一些实施例,可以在数据完全传输确定模块210中配置传输数据计数器,以用于统计由直连端口发送或接收的数据的数量,从而通过将发送的数据的数量和接收的数据的数量进行比较,以确定数据是否完全传输。
关于链路训练状态机状态检测模块220,其可以被配置为确定与直连端口对应的链路训练状态机是否处于正常状态。根据本发明的一些实施例,可以在链路训练状态机状态检测模块220中配置链路训练状态机日志存储单元,以用于存储与链路训练状态机有关的日志信息。根据本发明的一些实施例,链路训练状态机状态检测模块220中还可以进一步配置有关键事件计数器,以用于统计链路训练状态机发生过的关键事件的数量。
关于链路训练状态机(LTSSM),其可以设置于计算设备中,以用于对直连链路进行初始化和链路训练等。根据本发明的一些实施例,计算设备的每个直连端口中均可设置有LTSSM,以用于对以该直连端口为一端的直连链路进行初始化和链路训练等。
关于关键事件,其可以包括链路禁用(link disable)、链路断开(link down)和热复位(hot reset)。
关于数据正确性确定模块230,其可以被配置为确定数据经由直连链路进行传输后的正确性。根据本发明的一些实施例,可以在数据正确性确定模块230中配置序列生成器和序列验证器,以通过生成并传输序列,并基于接收到的序列来确定数据经由直连链路进行传输后的正确性。
关于序列生成器,其可以被配置为生成原始第一序列,该原始第一序列可以经由直连链路进行传输。在一些实施例中,序列生成器可以是诸如随机二进制序列(PRBS)生成器。应理解,这里的序列生成器也可以是适用于生成二进制序列的任意生成器,本发明对此不作限制。
关于序列验证器,其可以被配置为接收经由直连链路传输的序列,并验证接收到的序列是否正确。例如,当序列生成器为PRBS生成器时,序列验证器相应地为PRBS验证器,以用于验证接收到的数据(即经传输的原始第一序列)是否正确。
关于数据吞吐量判断模块240,其可以被配置为确定直连链路的数据吞吐量是否满足阈值条件。根据本发明的一些实施例,可以在数据吞吐量判断模块240中配置吞吐量计算器,以用于计算直连端口单位时间内发送或接收的数据量。进一步地,可以基于计算得到的直连端口单位时间内发送或接收的数据量确定直连链路的数据吞吐量,从而至少根据该数据吞吐量与最大理论带宽来确定直连链路是否发生故障。
关于阈值条件,根据本发明的实施例,其可以包括:例如直连链路的数据吞吐量达到最大理论带宽。这里,以写数据举例,写数据经过事务层、数据链路层和物理成封包之后,在链路上传输至对端;而对端将数据包经过物理层、数据链路层和事务层解包,取得该写数据。在这一示例中,最大理论带宽可以是指写数据带宽,即有效数据带宽。通常,有效数据带宽的值可以与诸如最大负载大小(max_payload_size)、最大读出请求大小(max_read_request_size)、读完成边界(read_completion_boundary)等参数有关。在本发明的一些示例中,最大理论带宽的值可以是预先设定的。
关于链路重训练模块250,其可以被配置为针对直连链路进行链路重连,并采集与重连后的直连链路有关的参数,以确定直连链路是否发生故障。
关于参数,其是指用于反应直连链路性能的参数,诸如链路速度(link speed)和链路宽度(link width)。在一些实施例中,参数还可以包括与直连链路两端的两个直连端口对应的链路训练状态机的当前状态。
图3示出了根据本发明的实施例的一示例性故障诊断电路300的架构示意图。应理解,示例性故障诊断电路300还可以包括未示出的附加模块和/或可以省略所示出的模块,本发明的范围在此方面不受限制。
如图3所示,故障诊断电路300被配置为与一计算设备的直连端口PIP相连接。
关于直连端口PIP,其具有控制器(Controller)和物理层(Phy),并且控制器和物理层之间设置有PCIe物理层接口(PIPE),以用于数据和命令的传输。
如图3所示,故障诊断电路300包括:配置有传输数据计数器312的数据完全传输确定模块310、配置有PIPE分析仪322和链路训练状态机日志存储单元324的链路训练状态机状态检测模块320、配置有PRBS生成器332和PRBS验证器334的数据正确性确定模块330、配置有吞吐量计算器342的数据吞吐量判断模块340以及链路重训练模块350。其中,数据完全传输确定模块310和数据正确性确定模块330与直连端口PIP的控制器相连接,链路训练状态机状态检测模块320与直连端口PIP的PCIe物理层接口相连接,数据吞吐量判断模块340与数据完全传输确定模块310相连接。
应理解,图3中所示的故障诊断电路300的架构仅是示例性的,本发明提供的故障诊断电路还可以具有其它合适的架构,这里不作限制。
根据本发明的实施例,还提供了一种用于计算设备间直连链路的故障诊断的***,其可以包括一个或多个如上所述的故障诊断电路(例如,图2的故障诊断电路200、图3的故障诊断电路300)。每个故障诊断电路可以与计算设备的一个直连端口相连接,在这种情况下,针对某一直连链路,可以通过与该直连链路两端的两个直连端口分别相连接的故障诊断电路实现对该直连链路的故障诊断和调试。下面将结合图4,详细描述如何根据本发明提供的用于计算设备间直连链路的故障诊断的***实现对计算设备间直连链路的故障诊断的方案。
图4示出了根据本发明的实施例的用于计算设备间直连链路的故障诊断的方法400的流程图。应当理解,方法400还可以包括未示出的附加动作和/或可以省略所示出的动作,本发明的范围在此方面不受限制。
在步骤402,经由***确定数据是否经由直连链路完全传输。
关于数据完全传输,其是指由直连链路一端的直连端口发出的请求或响应经由直连链路全部传输至直连链路另一端的直连端口。
根据本发明的实施例,可以将传输通过所述直连链路两端的两个直连端口处的数据的数量进行比较,以确定数据是否完全传输。具体地,在一示例中,针对直连链路两端的两个直连端口(第一直连端口和第二直连端口),计算由第一直连端口发送的数据的第一数量,计算由第二直连端口接收的数据的第二数量,以及将第一数量和第二数量进行比较。若第一数量等于第二数量,则可以确定由第一直连端口发送的数据经由直连链路完全传输至第二直连端口,也就是说,数据经由直连链路完全传输。若第一数量大于第二数量,则说明由第一直连端口发送的数据未完全传输至第二直连端口,从而可以确定直连链路发生故障。
在一些实施例中,可以由如图3所示的数据完全传输确定模块310的传输数据计数器312来统计由直连端口发送或接收的数据的数量。
在步骤404,响应于数据经由直连链路完全传输,经由***确定分别与直连链路两端的两个直连端口对应的链路训练状态机是否均处于正常状态。
根据本发明的一些实施例,可以通过确定链路训练状态机是否发生过关键事件以及链路训练状态机是否发生过跳转异常来确定链路训练状态机是否处于正常状态。具体地,在一示例中,针对直连链路两端的两个直连端口分别所在的计算设备中的链路训练状态机,确定链路训练状态机是否发生过关键事件,以及确定链路训练状态机是否发生过跳转异常。
关于关键事件,其可以指示直连链路上发生过的重要事件。根据本发明的实施例,关键事件可以包括但不限于链路禁用、链路断开和热复位。
关于确定链路训练状态机是否发生过关键事件,根据本发明的实施例,可以通过读取与链路训练状态机有关的用于统计关键事件的计数器的数值来确定其是否发生过关键事件。响应于所读取的数值为零,可以确定链路训练状态机未发生过关键事件;以及响应于所读取的数值不为零,则可以确定链路训练状态机发生过关键事件,也就是说直连链路上发生过诸如链路禁用、链路断开和热复位等中的一个或多个关键实践,从而可以确定直连链路发生故障。
关于确定链路训练状态机是否发生过跳转异常,根据本发明的实施例,可以通过读取与链路训练状态机有关的日志信息来确定链路训练状态机是否发生过跳转异常。例如,在一些实施例中,可以通过读取由如图3所示的链路训练状态机日志存储单元中存储的与链路训练状态机有关的日志信息来确定链路训练状态机是否发生过跳转异常。响应于所读取的与链路训练状态机有关的日志信息中包括指示跳转异常的信息,可以确定链路训练状态机发生过跳转异常,从而可以确定直连链路发生异常;响应于所读取的与链路训练状态机有关的日志信息中未包括指示跳转异常的信息,则可以确定链路训练状态机未发生过跳转异常。
进一步地,根据本发明的实施例,响应于链路训练状态机未发生过关键事件,并且链路训练状态机未发生过跳转异常,则可以确定链路训练状态机处于正常状态。
根据本发明的一些实施例,针对直连链路两端的两个直连端口,需确定与这两个直连端口分别对应的两个链路训练状态机均处于正常状态,也就是说,要求两个链路训练状态机均未发生过关键事件并且均为未发生过跳转异常。若任一链路训练状态机处于非正常状态(诸如,发生过关键事件或/和跳转异常),则直连链路被确定为发生故障。
结合图3,在一示例中,例如,可以由诸如图3的链路训练状态机状态检测模块320中的PIPE分析仪322通过监测直连端口PIP的控制器和物理层之间设置的PCIe物理层接口(PIPE接口)的信号,以解析出与直连端口PIP对应的链路训练状态机(LTSSM)的状态。通常LTSSM的状态寄存器中存储的LTSSM状态信息为6比特,以及在PIPE接口中存在一个4比特的信号(current_data_rate),该信号可以用于表示当前数据传输的速率。进一步地,故障诊断电路300基于时钟能够产生一时间戳。然后,可以将前述6比特LTSSM状态信息、4比特的表示当前数据传输的速率的信号以及基于时钟产生的时间戳存储在故障诊断电路300的静态随机存取存储器(SRAM)中(诸如图3所示的链路训练状态机状态检测模块320中的链路训练状态机日志存储单元324)。由此,可以通过读取链路训练状态机日志存储单元324来获取与LTSSM有关的日志信息,以确定LTSSM是否发生过跳转异常,从而确定直连链路是否发生过故障。此外,针对基于LTSSM跳转过程所产生的诸如链路禁用、链路断开和热复位等关键事件,可以由故障诊断电路300的链路训练状态机状态检测模块320中的关键事件计数器来计算直连链路发生这些关键事件的次数,从而使得能够根据关键事件的次数确定直连链路是否发生过故障。
在步骤406,响应于链路训练状态机均处于正常状态,经由***确定数据经由直连链路进行传输后是否正确。
根据本发明的实施例,可以通过在直连链路一端的直连端口处生成诸如一串序列,并将该序列经由直连链路传输至其另一端的直连端口,以在该另一端的直连端口处接收经传输的序列,以便基于接收到的经传输的序列来确定数据经传输后是否正确。具体地,可以在直连链路的任一直连端口处生成原始第一序列;将原始第一序列经由直连链路传输至直连链路的另一直连端口处,以在直连链路的另一直连端口处接收经传输的原始第一序列,以得到接收到的序列;以及至少基于接收到的序列,确定数据经由直连链路进行传输后是否正确。
例如,在一示例中,可以由与直连链路的一直连端口相连的序列生成器(诸如图3的PRBS生成器332)基于线性反馈移位寄存器(LFSR),生成一定数量的原始第一序列,该原始第一序列可以经由直连链路传输至直连链路的另一直连端口;然后由与直连链路的另一直连端口相连的序列验证器(诸如图3的PRBS验证器334)接收经传输的原始第一序列。在这种情况下,PRBS验证器334在接收到一部分码型之后,能够基于LFSR生成下一比特序列,然后通过将生成的下一比特序列和之后接收到的经传输的原始第一序列进行比较。若生成的下一比特序列与之后接收到的经传输的原始第一序列相同,则可以确定接收的数据是正确的,也就是说,数据经由直连链路进行传输后是正确的。若生成的下一比特序列与之后接收到的经传输的原始第一序列不同,则说明接收的数据不正确,从而可以确定直连链路发生故障。
在步骤408,响应于数据经由直连链路进行传输后是正确的,经由***确定直连链路的数据吞吐量是否满足阈值条件。
关于阈值条件,其是指直连链路的数据吞吐量满足预期,例如,可以是直连链路的数据吞吐量达到最大理论带宽。在又一些实施例中,阈值条件也可以是直连链路的数据吞吐量达到预设值。
例如,根据本发明的实施例,可以通过计算直连链路的数据吞吐量,并将其与最大理论带宽进行比较,以确定直连链路的数据吞吐量是否达到最大理论带宽。例如,可以由如图3所示的数据吞吐量判断模块340中的吞吐量计算器来计算直连端口单位时间内发送或接收的数据量。
根据本发明的实施例,故障诊断电路能够以超过直连链路的最大理论带宽的强度,主动向与其相连的直连端口发送读(read)请求或者写(write)请求。以故障诊断电路向与其相连的直连端口发送预定数量的写请求为例,当故障诊断电路以超过直连链路的最大理论带宽发送写请求时,吞吐量计算器得到的直连链路的数据吞吐量就是最大带宽。若最大带宽低于最大理论带宽,则确定直连链路发生故障。
在步骤410,响应于直连链路的数据吞吐量满足阈值条件,经由***针对直连链路进行链路重训练,以确定直连链路是否发生故障。
关于链路重训练,其是指直连链路发起链路训练(link training),以使得直连链路重新链接。
根据本发明的实施例,可以通过分析经重新链接后的直连链路的参数,来确定直连链路是否发生故障。具体地,在本发明的一些实施例中,可以针对直连链路进行链路重连,以采集与重连后的直连链路有关的参数;以及响应于采集到的参数的值未满足目标值,确定直连链路发生故障。
关于参数,如上所述,其可以是用于反应直连链路性能的参数,诸如链路速度、链路宽度等。
根据本发明的实施例,可以通过采集与重连后的直连链路有关的参数并将所采集到的参数的值与目标值进行比较,例如,针对重连后的直连链路,可以采集当前链路速度,并将其与目标链路速度进行比较,若当前链路速度的值未能达到目标链路速度的值,则确定直连链路发生故障。类似地,还可以采集当前链路宽度,并将其与目标链路宽度进行比较,若当前链路宽度的值未能达到目标链路宽度的值,则确定直连链路发生故障。在又一示例中,若针对重连后的直连链路,采集到的当前链路速度的值达到目标链路速度的值,并且当前链路宽度的值达到目标链路宽度的值,则可以确定重连后的直连链路正常。
进一步地,如上所述,参数还可以包括与直连链路两端的两个直连端口对应的链路训练状态机的当前状态。具体地,可以通过采集并确定链路训练状态机的当前状态是否为L0状态,以确定直连链路的是否正常。例如,针对重连后的直连链路,可以采集与直连链路两端的两个直连端口对应的链路训练状态机的当前状态,并确定所采集的链路训练状态机的当前状态是否为L0状态。响应于链路训练状态机的当前状态为L0状态,表示直连链路处于活动状态,即直连链路可以传输数据,由此可以确定重连后的直连链路正常。若链路训练状态机的当前状态不为L0状态,也就是说,重连后的直连链路未处于可以传输数据的状态,故确定直连链路发生故障。
综上,根据本发明的发明构思,通过确定数据经由直连链路完全传输,确定分别与直连链路两端的两个直连端口对应的链路训练状态机均处于正常状态,确定数据经由直连链路进行传输后是正确的,确定直连链路的数据吞吐量满足阈值条件,以及针对直连链路进行链路重训练后,确定所采集的与重连后的直连链路有关的参数均满足目标值,从而可以确定直连链路和其两端的两个之间端口均是正常的。若前述任一条件不满足,则可以确定直连链路发生故障。
图5进一步地示出了根据本发明的实施例的用于计算设备间直连链路的故障诊断的示例性方法500的流程图。应当理解,方法500还可以包括未示出的附加动作和/或可以省略所示出的动作,本发明的范围在此方面不受限制。
在步骤502,经由***读取传输数据计数器。
例如,可以由主机经由***分别读取直连链路两端的两个直连端口连接的故障诊断电路中的传输数据计数器。
在步骤504,经由***确定数据是否经由直接链路完全传输。
例如,可以将从直连链路两端的两个直连端口连接的故障诊断电路中的传输数据计数器读取的数据进行比较。假设,直连链路两端的两个直连端口分别为第一直连端口和第二直连端口,其中第一直连端口与第一传输数据计数器相连接,第二直连端口与第二传输数据计数器相连接。比较由第一传输数据计数器得到的第一数量和由第二传输数据计数器得到的第二数量,若第一数量不等于第二数量,确定数据经由直接链路未完全传输,即直连链路一端的直连端口中的数据未全部传输至另一端的直连端口,故前进至步骤530,确定直连链路异常,也就是说,直连链路本身发生故障。若第一数量等于第二数量,则确定数据经由直接链路完全传输,前进至步骤506。
在步骤506,经由***读取关键事件计数器。
例如,可以由主机经由***分别读取直连链路两端的两个直连端口连接的故障诊断电路中的关键事件计数器。
在步骤508,经由***确定LTSSM是否发生过关键事件。
例如,可以将在步骤506处从关键事件计数器读取的数值与0进行比较,响应于从关键事件计数器读取的数值不为0,确定LTSSM发生过关键事件,故前进至步骤530,确定直连链路异常。响应于从关键事件计数器读取的数值为0,确定LTSSM未发生过关键事件,则前进至步骤510。
在步骤510,经由***读取LTSSM日志存储单元。
例如,可以由主机经由***分别读取直连链路两端的两个直连端口连接的故障诊断电路中的LTSSM日志存储单元。
在步骤512,经由***确定LTSSM是否发生过跳转异常。
例如,可以对在步骤510处从LTSSM日志存储单元中读取的与LTSSM有关的日志信息进行分析,若所读取的与LTSSM有关的日志信息中包括指示跳转异常的信息,诸如LTSSM曾跳转至非正常状态,则确定LTSSM发生过跳转异常,故前进至步骤530,确定直连链路异常。若所读取的与LTSSM有关的日志信息中不包括指示跳转异常的信息,确定LTSSM未发生过跳转异常,则前进至步骤514。
在步骤514,经由***确定数据经由直连链路进行传输后是否正确。
例如,可以由主机控制直连链路两端的两个直连端口连接的数据正确性确定模块,以使得数据正确性确定模块中的PRBS验证器对经由直连链路传输的PRBS序列进行验证,若与任一直连端口对应的PRBS验证器报错,则确定数据经由直连链路进行传输后不正确,故前进至步骤530,确定直连链路异常。若与直连链路两端的两个直连端口对应的PRBS验证器均没有报错,确定数据经由直连链路进行传输后是正确的,则前进至步骤516。
在步骤516,经由***确定直连链路的数据吞吐量是否正常。
根据本发明的实施例,在步骤514,为了确定数据经由直连链路进行传输后是否正确,可以由数据正确性确定模块中的PRBS生成器生成一定数量的PRBS序列,并使这些PRBS序列全部经由直连链路进行传输。在此基础上,待所有这些PRBS序列经由直连链路完成传输之后,可以由主机经由***读取吞吐量计算器的计算结果。若所读取的计算结果未满足阈值条件,诸如由吞吐量计算器计算得到的直连链路的数据吞吐量未达到最大理论带宽,则确定直连链路的数据吞吐量不正常,故前进至步骤530,确定直连链路异常。若所读取的计算结果满足阈值条件,诸如由吞吐量计算器计算得到的直连链路的数据吞吐量达到最大理论带宽,则确定直连链路的数据吞吐量正常,前进至步骤518。
在步骤518,经由***确定经过链路重连的直连链路的参数是否满足目标值。
例如,可以由主机控制***中的链路重训练模块向直连链路发起链路训练,以使得直连链路重新连接。然后,基于重新连接的直连链路,采集诸如链路速度、链路宽度等参数,并将采集到的参数的值与目标值进行比较。若采集到的参数的值未能达到目标值,诸如当前链路速度的值未能达到目标链路速度的值、当前链路宽度的值未能达到目标链路宽度的值、或者当前链路速度的值未能达到目标链路速度的值且当前链路宽度的值未能达到目标链路宽度的值,确定经过链路重连的直连链路的参数未满足目标值,故前进至步骤530,确定直连链路异常。若采集到的参数的值达到目标值,诸如当前链路速度的值达到目标链路速度的值并且当前链路宽度的值达到目标链路宽度的值,确定经过链路重连的直连链路的参数满足目标值,则前进至步骤520,确定直连链路正常。在一些实施例中,还可以在步骤518确定与直连链路两端的两个直连端口对应的链路训练状态机的当前状态是否为L0状态。若链路训练状态机的当前状态不为L0状态,则前进至步骤530,确定直连链路异常;若链路训练状态机的当前状态为L0状态,则前进至步骤520,确定直连链路正常。
进一步地,根据本发明的一些实施例,还可以通过由诸如主机向***发送控制信号,以控制故障诊断电路中各模块的启用,从而实现针对直连端口和直连链路的不同诊断功能。例如,在一示例中,控制信号可以包括:数据路径测试信号、LTSSM测试信号以及重训练发起信号。
关于数据路径测试信号(data_path_test_start),其可以指示启用故障诊断电路中的数据正确性确定模块和数据吞吐量判断模块,以分别确定数据经由、直连链路进行传输后的正确性以及直连链路的数据吞吐量是否满足阈值条件。
LTSSM测试信号(ltssm_log_en),其可以指示启用故障诊断电路中的链路训练状态机状态检测模块,以确定与直连端口对应的链路训练状态机是否处于正常状态。
重训练发起信号(init_retraining)其可以指示启用故障诊断电路中的链路重训练模块,以针对直连链路进行链路重连,并采集与重连后的直连链路有关的参数,从而确定直连链路是否发生故障。
由此,可以通过由主机向***发送控制信号来控制针对当前的直连端口、或以当前的直连端口为一端的直连链路、或前述两者一起进行有针对性的故障诊断,提高故障诊断的效率。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
以上仅为本发明的可选实施例,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本发明的保护范围之内。

Claims (15)

1.一种用于计算设备间直连链路的故障诊断的方法,包括:
确定数据是否经由所述直连链路完全传输;
响应于数据经由所述直连链路完全传输,确定分别与所述直连链路两端的两个直连端口对应的链路训练状态机是否均处于正常状态;
响应于所述链路训练状态机均处于正常状态,确定数据经由所述直连链路进行传输后是否正确;
响应于数据经由所述直连链路进行传输后是正确的,确定所述直连链路的数据吞吐量是否满足阈值条件;以及
响应于所述直连链路的数据吞吐量满足阈值条件,针对所述直连链路进行链路重训练,以确定所述直连链路是否发生故障。
2.根据权利要求1所述的方法,其特征在于,确定数据是否经由所述直连链路完全传输包括:
将传输通过所述直连链路两端的两个直连端口处的数据的数量进行比较,以确定数据是否完全传输。
3.根据权利要求2所述的方法,其特征在于,所述直连链路两端的两个直连端口为第一直连端口和第二直连端口;
将传输通过所述直连链路两端的两个直连端口处的数据的数量进行比较包括:
计算由所述第一直连端口发送的数据的第一数量;
计算由所述第二直连端口接收的数据的第二数量;以及
响应于所述第一数量等于所述第二数量,确定数据经由所述直连链路完全传输。
4.根据权利要求1所述的方法,其特征在于,确定分别与所述直连链路两端的两个直连端口对应的链路训练状态机是否均处于正常状态包括:
确定所述链路训练状态机是否发生过关键事件;
确定所述链路训练状态机是否发生过跳转异常;以及
响应于所述链路训练状态机未发生过关键事件,并且所述链路训练状态机未发生过跳转异常,确定所述链路训练状态机处于正常状态。
5. 根据权利要求4所述的方法,其特征在于,确定所述链路训练状态机是否发生过关键事件包括:
读取与所述链路训练状态机有关的用于统计关键事件的计数器的数值;以及
响应于所读取的数值为零,确定所述链路训练状态机未发生过关键事件,
其中所述关键事件包括以下项中的任一个:链路禁用、链路断开和热复位。
6.根据权利要求4所述的方法,其特征在于,确定所述链路训练状态机是否发生过跳转异常包括:
读取与链路训练状态机有关的日志信息,以确定所述链路训练状态机是否发生过跳转异常。
7.根据权利要求1所述的方法,其特征在于,确定数据经由所述直连链路进行传输后是否正确包括:
在所述直连链路的任一直连端口处生成原始第一序列;
将所述原始第一序列经由所述直连链路传输至所述直连链路的另一直连端口处,以在所述直连链路的另一直连端口处接收经传输的原始第一序列,以得到接收到的序列;
至少基于接收到的序列,确定数据经由所述直连链路进行传输后是否正确。
8.根据权利要求1所述的方法,其特征在于,所述阈值条件包括:
所述直连链路的数据吞吐量达到最大理论带宽。
9.根据权利要求1所述的方法,其特征在于,针对所述直连链路进行链路重训练以确定所述直连链路是否发生故障包括:
针对所述直连链路进行链路重连,以采集与重连后的直连链路有关的参数;
响应于采集到的参数的值未满足目标值,确定所述直连链路发生故障。
10.根据权利要求9所述的方法,其特征在于,所述参数包括:链路速度和链路宽度。
11.一种执行如权利要求1所述的用于计算设备间直连链路的故障诊断的方法的***,其特征在于,包括:
故障诊断电路,配置为与所述直连链路任一端处的直连端口相连接,其中,所述故障诊断电路包括:
数据完全传输确定模块,被配置为确定数据是否经由所述直连链路完全传输;
链路训练状态机状态检测模块,被配置为确定与直连端口对应的链路训练状态机是否处于正常状态;
数据正确性确定模块,被配置为确定数据经由所述直连链路进行传输后的正确性;
数据吞吐量判断模块,被配置为确定所述直连链路的数据吞吐量是否满足阈值条件;以及
链路重训练模块,被配置为针对所述直连链路进行链路重连,并采集与重连后的直连链路有关的参数,以确定所述直连链路是否发生故障。
12.根据权利要求11所述的***,其特征在于,所述数据完全传输确定模块包括:
传输数据计数器,被配置为统计由所述直连端口发送或接收的数据的数量。
13. 根据权利要求11所述的***,其特征在于,所述链路训练状态机状态检测模块包括:
关键事件计数器,被配置为统计所述链路训练状态机发生过的关键事件的数量;以及
链路训练状态机日志存储单元,被配置为存储与链路训练状态机有关的日志信息。
14.根据权利要求11所述的***,其特征在于,所述数据正确性确定模块包括:
序列生成器,被配置为生成原始第一序列,所述原始第一序列经由所述直连链路进行传输;
序列验证器,被配置为基于接收到的经传输的原始第一序列,验证接收到的序列是否正确。
15.根据权利要求11所述的***,其特征在于,所述数据吞吐量判断模块包括:
吞吐量计算器,被配置为计算所述直连端口单位时间内发送或接收的数据量。
CN202410451366.4A 2024-04-15 2024-04-15 用于计算设备间直连链路的故障诊断的方法和*** Active CN118051375B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410451366.4A CN118051375B (zh) 2024-04-15 2024-04-15 用于计算设备间直连链路的故障诊断的方法和***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410451366.4A CN118051375B (zh) 2024-04-15 2024-04-15 用于计算设备间直连链路的故障诊断的方法和***

Publications (2)

Publication Number Publication Date
CN118051375A CN118051375A (zh) 2024-05-17
CN118051375B true CN118051375B (zh) 2024-07-05

Family

ID=91053927

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410451366.4A Active CN118051375B (zh) 2024-04-15 2024-04-15 用于计算设备间直连链路的故障诊断的方法和***

Country Status (1)

Country Link
CN (1) CN118051375B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102457409A (zh) * 2010-11-02 2012-05-16 中兴通讯股份有限公司 链路故障检测方法及***
CN102984011A (zh) * 2012-12-04 2013-03-20 杭州华三通信技术有限公司 链路故障定位方法及设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11672042B2 (en) * 2020-11-03 2023-06-06 At&T Intellectual Property I, L.P. Endpoint device radio link failure information reporting
CN114363177A (zh) * 2022-01-10 2022-04-15 中宇联云计算服务(上海)有限公司 基于云网融合技术的网络***和多网段优化方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102457409A (zh) * 2010-11-02 2012-05-16 中兴通讯股份有限公司 链路故障检测方法及***
CN102984011A (zh) * 2012-12-04 2013-03-20 杭州华三通信技术有限公司 链路故障定位方法及设备

Also Published As

Publication number Publication date
CN118051375A (zh) 2024-05-17

Similar Documents

Publication Publication Date Title
US8151145B2 (en) Flow control timeout mechanism to detect PCI-express forward progress blockage
CN111414268B (zh) 故障处理方法、装置及服务器
JPH052654A (ja) マイクロコンピユータの故障検知方法および回路
KR100637780B1 (ko) 분산된 노드 환경에서의 현장 교체 가능형 유닛의 결함분리를 위한 1차 에러 소스의 식별 방법, 메카니즘 및그의 컴퓨터 시스템
CN112306766A (zh) 用于错误检测的方法、电子设备、存储***和计算机程序产品
US8914683B2 (en) Repairing high-speed serial links
US20020144181A1 (en) Method for managing an uncorrectable, unrecoverable data error (UE) as the UE passes through a plurality of devices in a central electronics complex
CN111078492A (zh) 一种SoC内部总线的状态监控***及方法
US11823759B2 (en) Testing of fault detection circuit
CN118051375B (zh) 用于计算设备间直连链路的故障诊断的方法和***
US20180113779A1 (en) Intelligent packet analyzer circuits, systems, and methods
US20100162269A1 (en) Controllable interaction between multiple event monitoring subsystems for computing environments
CN115766526B (zh) 交换机物理层芯片的测试方法、装置及电子设备
CN114721862B (zh) 一种具有信号校验功能的看门狗电路及其工作方法
CN101458624A (zh) 可编程逻辑器件的加载方法、处理器和装置
JP3883856B2 (ja) 信号処理系の故障診断方法および装置
JP2007293678A (ja) 共用バス接続診断装置
CN110907857B (zh) 一种基于fpga的连接器自动检测方法
JP2013200616A (ja) 情報処理装置及び情報処理装置の復旧回路
CN118245328A (zh) 用于监测计算设备间的直连链路的方法和监测***
TW202113385A (zh) 邊界掃描測試系統及其方法
CN111367838A (zh) 用于检测数据存储***的方法、设备和数据存储***
US11500717B2 (en) Method for detecting data storage system, device and data storage system
US11928022B2 (en) Introduction and detection of parity error in a UART
US20240143429A1 (en) Method and apparatus for selective input/output (io) terminal safe-stating for independent on-chip applications

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant