一种PCIe器件链路训练管理方法、管理装置及服务器与流程

文档序号:33712224发布日期:2023-04-01 00:22阅读:59来源:国知局
一种PCIe器件链路训练管理方法、管理装置及服务器与流程
一种pcie器件链路训练管理方法、管理装置及服务器
技术领域
1.本发明涉及链路训练技术领域,尤其是指一种pcie器件链路训练管理方法、管理装置及服务器。


背景技术:

2.基于x86平台的服务器或存储服务器上,cpu使用pcie高速总线与其他外设(如bmc芯片、网卡芯片、ntb、pcie switch、可扩展的外插卡等)进行数据交互。其中,ntb、pcie switch等外设一般作为关键器件焊接在主板上,称为板载器件;网卡、fc卡、sas卡等外设通过扩展槽进行连接,称为外插器件。
3.板载器件由于焊接在主板上,pcie走线等都固化在pcb板上,因此要保证主板上pcie链路si信号的一致性。但是,当服务器生产数量很大时,难免出现一些一致性较差的主板;另外,板载器件的一致性也会有一定差异。这就导致个别主板的关键器件会因pcie链路si表现较差、而出现pcie链路训练失败的情况。
4.pcie链路训练中有pcie均衡技术,其可以根据pcie tx preset初值对eq的均衡调整;从pcie gen1到gen3、gen3到gen4、gen4到gen5阶段的链路训练,分别对应gen3 tx preset、gen4 tx preset、gen5 tx preset这几个pcie发送端链路均衡参数预设值;每个阶段会在tx preset初值基础上进行微调整;
5.目前,intel平台针对gen3阶段会进行3次均衡调整,针对gen4、gen5会进行10次以上的均衡调整;其中,一般在gen3阶段会出现因初值设置不合理、导致无法完成gen1到gen3阶段训练的情况,从而导致链路训练失败。


技术实现要素:

6.为了解决上述技术问题,本发明提供了一种pcie器件链路训练管理方法、管理装置及服务器,所述pcie器件链路训练管理方法用于解决目前服务器主板上关键pcie器件链路训练失败的问题。
7.为实现上述目的,本发明提供一种pcie器件链路训练管理方法,用于通过pcie均衡技术对服务器主板关键pcie器件进行链路训练管理,所述训练管理方法包括链路训练失败修复步骤,其包括:
8.从针对第k代pcie协议设置的发送端链路均衡参数预设值合集中获取默认预设初始值px、作为第k代初始值,用于对所述pcie器件进行链路训练;其中,所述第k代初始值为针对第k代pcie协议进行均衡调整时发送端链路均衡参数初始值,k不小于2;所述发送端链路均衡参数预设值合集的数据按照数值大小依次排列;
9.在通过所述第k代初始值对所述pcie器件进行链路训练之后,判断所述pcie器件的供应商id、设备id能否被正常读取;
10.若不能被正常读取,则判定pcie链路训练失败;
11.从所述发送端链路均衡参数预设值合集中按照预设取值规则获取预设初始值py、
作为新的第k代初始值,用于对所述pcie器件进行链路再训练;
12.在对所述pcie器件进行链路再训练后,按照第一等待时间再次判断所述pcie器件的所述供应商id、所述设备id能否被正常读取;
13.若进行链路再训练后所述供应商id、所述设备id能被正常读取,则判定pcie链路训练成功。
14.进一步的,在按照第一等待时间再次判断所述pcie器件的所述供应商id、所述设备id能否被正常读取之后,所述链路训练失败修复步骤还包括:
15.若进行链路再训练后所述pcie器件的供应商id、设备id不能被正常读取,则判定pcie链路训练失败;
16.按照所述预设取值规则中的预设值增大方向和/或预设值减小方向依次从所述发送端链路均衡参数预设值合集中取值、作为新的第k代初始值,用于分别对所述pcie器件进行链路再训练、直至pcie链路训练成功。
17.进一步的,所述训练管理方法还包括链路稳定性检查步骤;所述链路稳定性检查步骤包括链路活跃度管理步骤,其包括:
18.在判定pcie链路训练成功之后,判断链路活跃度标志位是否为1;
19.若所述链路活跃度标志位不为1,则按照预设再训练重试次数依次进行链路再训练;每次链路再训练时,将链路再训练标志位设为1、并按照第二预设时间间隔再次判断所述链路活跃度标志位是否为1。
20.进一步的,所述链路稳定性检查步骤还包括链路状态管理步骤,其包括:
21.当所述链路活跃度标志位为1时,判断链路状态信息中的链路速度是否小于速度预期值;若小于,则判定发生链路降速;其中,所述速度预期值与链路能力寄存器中最大链路速度的最小规格相匹配;
22.当所述链路活跃度标志位为1时,判断链路状态信息中的链路带宽是否小于带宽预期值;若小于,则判定发生链路降道;其中,所述带宽预期值与所述链路能力寄存器中最大链路带宽的最小规格相匹配。
23.进一步的,所述链路状态管理步骤还包括:
24.当发生链路降速和/或链路降道时,按照预设失能使能重复次数依次进行链路失能使能操作;每次链路失能使能操作时,设置链路控制寄存器中的失能位、并按照预设操作时间间隔设置失能与使能的时间间隔,按照第二等待时间重新读取所述链路状态信息,用于判断链路状态是否正常。
25.进一步的,所述链路活跃度管理步骤还包括:
26.若所述链路活跃度标志位为1,则将所述预设再训练重试次数、链路训练协商结果信息打印到日志、并写入cpld寄存器中;其中,所述链路训练协商结果信息包括链路再训练成功时对应的新的第k代初始值。
27.进一步的,所述链路状态管理步骤还包括:
28.当所述链路状态信息正常时,记录日志、并向cpld寄存器中写入链路训练成功标志。
29.进一步的,在判断所述pcie器件的供应商id、设备id能否被正常读取之后,所述训练管理方法还包括:
30.若所述pcie器件的所述供应商id、所述设备id能被正常读取,则判定pcie链路训练成功、并记录日志。
31.进一步的,在照预设再训练重试次数依次进行链路再训练之后,所述链路活跃度管理步骤还包括:
32.当按照所述预设再训练重试次数依次进行链路再训练后、所述链路活跃度标志位均不为1时,将所述预设再训练重试次数与链路训练失败标志打印到日志、并写入cpld寄存器中。
33.进一步的,在按照预设失能使能重复次数依次进行链路失能使能操作之后,所述链路状态管理步骤还包括:
34.当按照所述预设失能使能重复次数依次进行链路失能使能操作后、每次重试均发生链路降速和/或链路降道时,将所述预设失能使能重复次数与链路训练失败标志打印到日志、并写入cpld寄存器中。
35.进一步的,在按照所述预设取值规则中的预设值增大方向和/或预设值减小方向依次从所述发送端链路均衡参数预设值合集中取值、作为新的第k代初始值之后,所述训练管理方法还包括:
36.在按照所述预设取值规则中的所述预设值增大方向和/或所述预设值减小方向依次遍历所述发送端链路均衡参数预设值合集中数值、作为新的第k代初始值之后,当所有链路再训练均失败时,记录日志、并将链路训练失败标志写入cpld寄存器中。
37.进一步的,在从针对第k代pcie协议设置的发送端链路均衡参数预设值合集中获取默认预设初始值px、作为第k代初始值之前,所述训练管理方法还包括:
38.根据所述服务器主板pcie信号参数特性、以及所述服务器主板大规模样本测试要求获取所述发送端链路均衡参数预设值合集;其中,所述发送端链路均衡参数预设值合集包括所述默认预设初始值px。
39.进一步的,在从针对第k代pcie协议设置的发送端链路均衡参数预设值合集中获取默认预设初始值px、作为第k代初始值之后,所述训练管理方法还包括:
40.将所述默认预设初始值px作为第k代初始值,对所述服务器cpu的pcie根端口进行pcie链路训练。
41.进一步的,从针对第k代pcie协议设置的发送端链路均衡参数预设值合集中获取默认预设初始值px、作为第k代初始值,用于对所述pcie器件进行链路训练,具体包括:
42.从所述发送端链路均衡参数预设值合集中获取所述默认预设初始值px、作为第k代初始值,用于对所述pcie器件所在链路对应的cpu根端口进行链路训练。
43.进一步的,在通过所述第k代初始值对所述pcie器件进行链路训练之后,判断所述pcie器件的供应商id、设备id能否被正常读取,具体包括:
44.通过基本输入输出系统固件获取并判断所述pcie器件的所述供应商id以及所述设备id能否被正常读取,用于判断pcie总线与所述cpu根端口的pcie链路训练是否成功。
45.进一步的,在从针对第k代pcie协议设置的发送端链路均衡参数预设值合集中获取默认预设初始值px、作为第k代初始值,用于对所述pcie器件进行链路训练之前,所述训练管理方法还包括:
46.通过寄存器设置所述发送端链路均衡参数预设值合集,用于对所述pcie器件所在
链路对应的cpu根端口进行链路训练。
47.本发明还提供一种pcie器件链路训练管理装置,用于通过pcie均衡技术对服务器主板关键pcie器件进行链路训练管理,所述训练管理装置包括链路训练失败修复单元,其包括:
48.链路训练单元,用于从针对第k代pcie协议设置的发送端链路均衡参数预设值合集中获取默认预设初始值px、作为第k代初始值,用于对所述pcie器件进行链路训练;其中,所述第k代初始值为针对第k代pcie协议进行均衡调整时发送端链路均衡参数初始值,k不小于2;所述发送端链路均衡参数预设值合集的数据按照数值大小依次排列;
49.链路训练判断单元,用于在通过所述第k代初始值对所述pcie器件进行链路训练之后,判断所述pcie器件的供应商id、设备id能否被正常读取;
50.训练失败判定单元,用于所述供应商id、所述设备id不能被正常读取时,判定pcie链路训练失败;
51.链路再训练单元,用于从所述发送端链路均衡参数预设值合集中按照预设取值规则获取预设初始值py、作为新的第k代初始值,用于对所述pcie器件进行链路再训练;
52.链路再训练判断单元,用于在对所述pcie器件进行链路再训练后,按照第一等待时间判断所述pcie器件的供应商id、设备id能否被正常读取;
53.链路再训练成功判定单元,用于进行链路再训练后所述供应商id、所述设备id能被正常读取时,判定pcie链路训练成功。
54.本发明又提供一种计算机设备,包括存储器、处理器及计算机程序,所述计算机程序存储在所述存储器上并可在所述处理器上运行,所述处理器执行所述计算机程序时实现以下步骤:
55.从针对第k代pcie协议设置的发送端链路均衡参数预设值合集中获取默认预设初始值px、作为第k代初始值,用于对所述pcie器件进行链路训练;其中,所述第k代初始值为针对第k代pcie协议进行均衡调整时发送端链路均衡参数初始值,k不小于2;所述发送端链路均衡参数预设值合集的数据按照数值大小依次排列;
56.在通过所述第k代初始值对所述pcie器件进行链路训练之后,判断所述pcie器件的供应商id、设备id能否被正常读取;
57.若不能被正常读取,则判定pcie链路训练失败;
58.从所述发送端链路均衡参数预设值合集中按照预设取值规则获取预设初始值py、作为新的第k代初始值,用于对所述pcie器件进行链路再训练;
59.在对所述pcie器件进行链路再训练后,按照第一等待时间再次判断所述pcie器件的所述供应商id、所述设备id能否被正常读取;
60.若进行链路再训练后所述供应商id、所述设备id能被正常读取,则判定pcie链路训练成功。
61.本发明再提供一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
62.从针对第k代pcie协议设置的发送端链路均衡参数预设值合集中获取默认预设初始值px、作为第k代初始值,用于对所述pcie器件进行链路训练;其中,所述第k代初始值为针对第k代pcie协议进行均衡调整时发送端链路均衡参数初始值,k不小于2;所述发送端链
路均衡参数预设值合集的数据按照数值大小依次排列;
63.在通过所述第k代初始值对所述pcie器件进行链路训练之后,判断所述pcie器件的供应商id、设备id能否被正常读取;
64.若不能被正常读取,则判定pcie链路训练失败;
65.从所述发送端链路均衡参数预设值合集中按照预设取值规则获取预设初始值py、作为新的第k代初始值,用于对所述pcie器件进行链路再训练;
66.在对所述pcie器件进行链路再训练后,按照第一等待时间再次判断所述pcie器件的所述供应商id、所述设备id能否被正常读取;
67.若进行链路再训练后所述供应商id、所述设备id能被正常读取,则判定pcie链路训练成功。
68.本发明另提供一种服务器,包括设于主板上的关键pcie器件,所述pcie器件通过前述所述的pcie器件链路训练管理方法来实现链路训练管理。
69.本发明的上述技术方案,相比现有技术具有以下技术效果:
70.本发明的pcie器件链路训练管理方法,用于通过pcie均衡技术对服务器主板关键pcie器件进行链路训练管理;
71.训练管理方法包括链路训练失败修复步骤,其包括:
72.先获取默认预设初始值px、作为第k代初始值,用于对pcie器件进行链路训练;
73.再判断pcie器件的供应商id、设备id能否被正常读取;若不能被正常读取,则判定pcie链路训练失败;
74.接着,获取预设初始值py、作为新的第k代初始值,用于对pcie器件进行链路再训练;
75.然后再次判断pcie器件的供应商id、设备id能否被正常读取;若进行链路再训练后供应商id、设备id能被正常读取,则判定pcie链路训练成功;
76.其中,预先针对第k代pcie协议设置发送端链路均衡参数预设值合集,从发送端链路均衡参数预设值合集中可获取默认预设初始值px、以及按照预设取值规则获取预设初始值py;
77.由此,当供应商id、设备id能被正常读取时,可判定pcie链路训练成功,从而解决目前服务器主板上关键pcie器件链路训练失败的问题。
附图说明
78.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
79.图1是现有技术中链路训练10组tx预设值的示意图;
80.图2是本发明实施例一中pcie器件链路训练管理方法的流程示意图;
81.图3是本发明实际实施例中链路训练管理方法的整体流程示意图;
82.图4是本发明实施例二中pcie器件链路训练管理方法装置的结构框图;
83.图5为本发明实施例二中计算机设备的内部结构图。
实施方式
84.如图1所示,现有技术中,pcie链路训练的gen3、gen4、gen5阶段各有10组tx预设值tx preset(即发送端链路均衡参数预设值)。
85.bios(即基本输入输出系统固件)启动阶段会设置默认预设值(比如intel xx平台默认预设值初值是p7);但实际测试发现gen3阶段p7预设值不符合与当前主板pcb及关键pcie器件的si参数要求;
86.对当前主板进行多样本测试,发现gen3阶段tx preset=p4时更能满足si参数要求;但tx preset=p4时不能满足所有主板的si参数要求,当个别主板及关键pcie器件的si参数出现一致性差异时,仍然会出现gen3阶段链路训练失败的情况。
87.为此,本发明提供一种pcie器件链路训练管理方法、管理装置及服务器,来解决上述问题。
88.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
89.实施例一:
90.如图2所示,本发明实施例提供一种pcie器件链路训练管理方法,用于通过pcie均衡技术对服务器主板关键pcie器件进行链路训练管理,训练管理方法包括链路训练失败修复步骤,其包括:
91.s2从针对第k代pcie协议设置的发送端链路均衡参数预设值合集中获取默认预设初始值px、作为第k代初始值,用于对pcie器件进行链路训练;其中,第k代初始值为针对第k代pcie协议进行均衡调整时发送端链路均衡参数初始值,k不小于2;发送端链路均衡参数预设值合集的数据按照数值大小依次排列;
92.s3在通过第k代初始值对pcie器件进行链路训练之后,判断pcie器件的供应商id、设备id能否被正常读取;
93.s31若不能被正常读取,则判定pcie链路训练失败;
94.s4从发送端链路均衡参数预设值合集中按照预设取值规则获取预设初始值py、作为新的第k代初始值,用于对pcie器件进行链路再训练;
95.s5在对pcie器件进行链路再训练后,按照第一等待时间再次判断pcie器件的供应商id、设备id能否被正常读取;
96.s51若进行链路再训练后供应商id、设备id能被正常读取,则判定pcie链路训练成功。
97.在具体实施例中,训练管理方法包括链路训练失败修复步骤,其包括:
98.先获取默认预设初始值px、作为第k代初始值,用于对pcie器件进行链路训练;
99.再判断pcie器件的供应商id、设备id能否被正常读取;若不能被正常读取,则判定pcie链路训练失败;
100.接着,获取预设初始值py、作为新的第k代初始值,用于对pcie器件进行链路再训练;
101.然后再次判断pcie器件的供应商id、设备id能否被正常读取;若进行链路再训练
后供应商id、设备id能被正常读取,则判定pcie链路训练成功;
102.其中,预先针对第k代pcie协议设置发送端链路均衡参数预设值合集,从发送端链路均衡参数预设值合集中可获取默认预设初始值px、以及按照预设取值规则获取预设初始值py;
103.由此,当供应商id、设备id能被正常读取时,可判定pcie链路训练成功,从而解决目前服务器主板上关键pcie器件链路训练失败的问题。
104.在实际中,pcie代表pci-express(peripheral component interconnect express),其是一种高速串行计算机扩展总线标准。
105.pcie tx preset代表pcie发送端链路均衡参数预设值。pcie si代表pcie信号参数。
106.pcie gen3、gen4、gen5代表pcie协议代次,也可以用来表示pcie link协商后所能达到的速度,从gen1到gen5,其支持的速度分别为2.5gt/s、5.0gt/s、8.0gt/s、16.0gt/s、32.0gt/s。
107.如图3所示,在实际实施例中,链路训练管理方法主要包括如下阶段:
108.阶段1、bios启动阶段对pcie发起链路训练,链路训练之前设置板载关键pcie器件所在链路对应的cpu rootport(即根端口)的gen3 tx preset初始值到寄存器中;
109.其中,gen3 tx preset初始值为硬件根据服务器主板pcie si参数特性、并进行大量样本测试获取的预设初始值(如:gen3 tx preset=p4);
110.阶段2、对应cpu pcie根端口训练时,使用gen3 tx preset初始值进行pcie链路训练;
111.阶段3、bios通过检查板载关键pcie器件的vid(即供应商id)、did(即设备id)是否可以正常读取、来判断该pcie总线与cpu rootport的pcie链路训练是否成功。
112.当可以正常读取到板载关键pcie器件的vid、did时,判断链路训练成功,记录日志;bios继续运行;
113.当无法读取到板载关键pcie器件的vid、did时,调整板载关键pcie器件所在链路对应的cpu rootport的pcie gen3 tx preset初始值、进行链路重试,pcie gen3 tx preset初始值调整方法详见阶段5。
114.阶段4、pcie gen3 tx preset初始值修改后,对关键pcie器件连接的rootport端口发起链路再训练操作,然后等待15ms后检查关键pcie器件的vid、did是否可以正常读取;
115.当可以正常读取到板载关键pcie器件的vid、did时,判断链路训练成功,记录日志,bios继续运行;
116.否则重复阶段4、阶段5;
117.阶段5、pcie gen3 tx preset初始值调整按如下算法进行:
118.从默认预设初始值p4开始,先向预设值增大方向设置一次(如:pcie gen3 tx preset=p5),然后发起pcie 链路再训练;
119.如果链路训练判断失败,再向预设初始值减小方向进行设置一次(如:pcie gen3 tx preset=p3),然后发起pcie 链路再训练;
120.直到两个方向预设值分别达到p0和p9。
121.综上,在不改变cpu端对pcie链路训练算法的情况下,通过bios根据链路训练结果
对gen3阶段tx preset初值进行自适应调整;然后重新发起pcie链路训练,以解决si一致性较差的主板关键pcie器件的启动失败问题。
122.在一个优选的实施方式中,在s3之后,训练管理方法还包括:
123.s32若pcie器件的供应商id、设备id能被正常读取,则判定pcie链路训练成功、并记录日志。
124.在实际实施例中,当可以正常读取到板载关键pcie器件的vid、did时,判断链路训练成功,记录日志;bios继续运行。
125.在一个优选的实施方式中,在s5之后,链路训练失败修复步骤还包括:
126.s521若进行链路再训练后pcie器件的供应商id、设备id不能被正常读取,则判定pcie链路训练失败;
127.s522按照预设取值规则中的预设值增大方向和/或预设值减小方向依次从发送端链路均衡参数预设值合集中取值、作为新的第k代初始值,用于分别对pcie器件进行链路再训练、直至pcie链路训练成功。
128.在具体实施例中,发送端链路均衡参数预设值合集的数据按照数值大小依次排列;可按照预设取值规则从发送端链路均衡参数预设值合集中取值、作为第k代初始值,来对pcie器件进行链路训练或链路再训练。
129.在实际实施例中,链路训练管理方法中,还可循环进行自适应调整、循环进行链路训练:
130.阶段4、pcie gen3 tx preset初始值修改后,对关键pcie器件连接的rootport端口发起链路再训练操作,然后等待15ms后检查关键pcie器件的vid、did是否可以正常读取;
131.当可以正常读取到板载关键pcie器件的vid、did时,判断链路训练成功,记录日志,bios继续运行;
132.否则重复阶段4、阶段5;
133.阶段5、pcie gen3 tx preset初始值调整按如下算法进行:
134.从默认预设初始值p4开始,先向预设值增大方向设置一次(如:pcie gen3 tx preset=p5),然后发起pcie 链路再训练;
135.如果链路训练判断失败,再向预设初始值减小方向进行设置一次(如:pcie gen3 tx preset=p3),然后发起pcie 链路再训练;
136.直到两个方向预设值分别达到p0和p9。
137.由此,通过循环进行自适应调整、循环进行链路训练,来保证链路训练成功。
138.此外,如果链路训练都失败,不再进行重试,记录日志,向cpld记录链路训练失败标志,退出该关键pcie器件链路训练流程。
139.在一个优选的实施方式中,在s522之后,训练管理方法还包括:
140.s523在按照预设取值规则中的预设值增大方向和/或预设值减小方向依次遍历发送端链路均衡参数预设值合集中数值、作为新的第k代初始值之后,当所有链路再训练均失败时,记录日志、并将链路训练失败标志写入cpld寄存器中。
141.在实际实施例中,在链路训练管理方法的阶段5中,还包括:
142.如果链路训练都失败,不再进行重试,记录日志,向cpld记录链路训练失败标志,退出该关键pcie器件链路训练流程。
143.在一个优选的实施方式中,训练管理方法还包括链路稳定性检查步骤;链路稳定性检查步骤包括链路活跃度管理步骤,其包括:
144.s6在判定pcie链路训练成功之后,判断链路活跃度标志位是否为1;
145.s61若链路活跃度标志位不为1,则按照预设再训练重试次数依次进行链路再训练;每次链路再训练时,将链路再训练标志位设为1、并按照第二预设时间间隔再次判断链路活跃度标志位是否为1。
146.在具体实施例中,此外,为保证关键pcie器件链路训练后链路活跃度以及链路状态符合预期,在链路训练过程中分别对链路活跃度和链路状态进行检查;
147.当检查到链路活跃度异常、链路降速或链路降道时,分别发起多次的pcie链路再训练和pcie链路失能/使能操作,进一步提高关键pcie器件链路的稳定性。
148.在实际实施例中,链路训练管理方法中的链路稳定性检查步骤包括链路活跃度管理步骤,其包括:
149.阶段6、关键pcie器件链路训练成功后,进行链路活跃度检查,检查根端口上link_status寄存器(即链路状态寄存器)的链路活跃度标志位是否为1,用来判断根端口与下方设备的连接是否正常。
150.如果链路活跃度标志位为1,bios将重试次数及协商结果同时打印到日志、并写入cpld寄存器中;
151.如果链路活跃度标志位不为1,则向根端口的link_control寄存器(即链路控制寄存器)的链路再训练标志位上写1,然后等待15ms后检查链路活跃度标志位是否为1;
152.若链路活跃度不为1,发起三次链路再训练重试。
153.在一个优选的实施方式中,链路活跃度管理步骤还包括:
154.s62若链路活跃度标志位为1,则将预设再训练重试次数、链路训练协商结果信息打印到日志、并写入cpld寄存器中;其中,链路训练协商结果信息包括链路再训练成功时对应的新的第k代初始值。
155.在实际实施例中,在阶段6的链路活跃度管理步骤中,如果链路活跃度标志位为1,bios将重试次数及协商结果同时打印到日志、并写入cpld寄存器中。
156.在一个优选的实施方式中,在s61之后,链路活跃度管理步骤还包括:
157.s63当按照预设再训练重试次数依次进行链路再训练后、链路活跃度标志位均不为1时,将预设再训练重试次数与链路训练失败标志打印到日志、并写入cpld寄存器中。
158.在实际实施例中,阶段6的链路活跃度管理步骤还包括:
159.若三次重试后链路活跃度标志位均不为1,bios将重试次数及链路训练失败标志同时打印到日志、并写入cpld寄存器中,退出该关键pcie器件链路训练流程。
160.在一个优选的实施方式中,链路稳定性检查步骤还包括链路状态管理步骤,其包括:
161.s71当链路活跃度标志位为1时,判断链路状态信息中的链路速度是否小于速度预期值;若小于,则判定发生链路降速;其中,速度预期值与链路能力寄存器中最大链路速度的最小规格相匹配;
162.s72当链路活跃度标志位为1时,判断链路状态信息中的链路带宽是否小于带宽预期值;若小于,则判定发生链路降道;其中,带宽预期值与链路能力寄存器中最大链路带宽
的最小规格相匹配。
163.在实际实施例中,链路训练管理方法中的链路稳定性检查步骤包括链路状态管理步骤,其包括:
164.阶段7、关键pcie器件链路活跃度正常后,进行链路状态检查,主要进行链路速度、链路通道宽度的检查,检查方法为:
165.检查pcie设备链路状态中的协商后的带宽及速率是否等于预期值;其中,预期值为pcie设备所在链路上下游设备的链路能力寄存器中的最大链路速度和最大链路宽度的最小规格;
166.如果pcie设备协商后链路速度小于预期值,认为发生链路降速;
167.如果pcie设备协商后链路宽度小于预期值,认为发生链路降道。
168.在一个优选的实施方式中,链路状态管理步骤还包括:
169.s73当链路状态信息正常时,记录日志、并向cpld寄存器中写入链路训练成功标志。
170.在实际实施例中,在阶段7的链路状态管理步骤中,如果link状态检查为正常(例如:协商后的带宽及速率是否等于预期值),记录日志,向cpld寄存器中写入链路训练成功标志,退出该关键pcie器件链路训练流程。
171.在一个优选的实施方式中,链路状态管理步骤还包括:
172.s81当发生链路降速和/或链路降道时,按照预设失能使能重复次数依次进行链路失能使能操作;每次链路失能使能操作时,设置链路控制寄存器中的失能位、并按照预设操作时间间隔设置失能与使能的时间间隔,按照第二等待时间重新读取链路状态信息,用于判断链路状态是否正常。
173.在实际实施例中,链路状态管理步骤还包括:
174.阶段8、当检查出现链路降速或链路降道时,发起3次链路失能、链路使能:
175.通过设置rootport配置空间link_control寄存器(即链路控制寄存器)的disable bit(即失能位)实现一次失能使能的过程,设置失能和使能的时间间隔为200ms,等待100ms后重新读取其配置空间链路状态的值;
176.在一个优选的实施方式中,在s81之后,链路状态管理步骤还包括:
177.s82当按照预设失能使能重复次数依次进行链路失能使能操作后、每次重试均发生链路降速和/或链路降道时,将预设失能使能重复次数与链路训练失败标志打印到日志、并写入cpld寄存器中。
178.在实际实施例中,阶段8中的链路状态管理步骤还包括:
179.若3次链路失能、链路使能重试都出现链路降速或链路降道,bios将重试次数及链路训练失败标志同时打印到日志、并写入cpld寄存器中,退出该关键pcie器件链路训练流程。
180.在一个优选的实施方式中,在s2之前,训练管理方法还包括:
181.s1根据服务器主板pcie信号参数特性、以及服务器主板大规模样本测试要求获取发送端链路均衡参数预设值合集;其中,发送端链路均衡参数预设值合集包括默认预设初始值px。
182.在一个优选的实施方式中,在s2之后,训练管理方法还包括:
183.将默认预设初始值px作为第k代初始值,对服务器cpu的pcie根端口进行pcie链路训练。
184.在一个优选的实施方式中,在s2之前,训练管理方法还包括:
185.通过寄存器设置发送端链路均衡参数预设值合集,用于对pcie器件所在链路对应的cpu根端口进行链路训练。
186.在实际实施例中,链路训练管理方法包括如下阶段:
187.阶段1、bios启动阶段对pcie发起链路训练,链路训练之前设置板载关键pcie器件所在链路对应的cpu rootport(即根端口)的gen3 tx preset初始值到寄存器中;
188.其中,gen3 tx preset初始值为硬件根据服务器主板pcie si参数特性、并进行大量样本测试获取的预设初始值(如:gen3 tx preset=p4)。
189.阶段2、对应cpu pcie根端口训练时,使用gen3 tx preset初始值进行pcie链路训练。
190.在一个优选的实施方式中,s2具体包括:
191.从发送端链路均衡参数预设值合集中获取默认预设初始值px、作为第k代初始值,用于对pcie器件所在链路对应的cpu根端口进行链路训练。
192.在一个优选的实施方式中,s3具体包括:
193.通过基本输入输出系统固件获取并判断pcie器件的供应商id以及设备id能否被正常读取,用于判断pcie总线与cpu根端口的pcie链路训练是否成功。
194.此外,链路训练管理方法还包括如下阶段:
195.阶段3、bios通过检查板载关键pcie器件的vid(即供应商id)、did(即设备id)是否可以正常读取、来判断该pcie总线与cpu rootport的pcie链路训练是否成功。
196.当可以正常读取到板载关键pcie器件的vid、did时,判断链路训练成功,记录日志;bios继续运行。在实际实施例中,训练管理方法还包括:
197.阶段1、bios启动阶段对pcie发起链路训练,链路训练之前设置板载关键pcie器件所在链路对应的cpu rootport(即根端口)的gen3 tx preset初始值到寄存器中;
198.其中,gen3 tx preset初始值为硬件根据服务器主板pcie si参数特性、并进行大量样本测试获取的预设初始值(如:gen3 tx preset=p4);
199.阶段2、对应cpu pcie根端口训练时,使用gen3 tx preset初始值进行pcie链路训练。
200.综上,本发明提供的上述pcie器件链路训练管理方法,具有如下优点:
201.1)通过bios对启动阶段pcie链路训练前进行gen3 tx preset初值的自适应调整,解决了si一致性较差的主板关键pcie器件的启动失败问题。
202.2)同时,对链路活跃度以及链路状态进行检查;当检查到链路活跃度异常、链路降速或链路降道时,分别发起多次的pcie链路再训练和pcie链路失能/使能的操作,进一步提高关键pcie器件链路的稳定性。
203.需要注意的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完
成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
204.实施例二:
205.如图4所示,本发明实施例还提供一种pcie器件链路训练管理装置,用于通过pcie均衡技术对服务器主板关键pcie器件进行链路训练管理,训练管理装置包括链路训练失败修复单元,其包括:
206.链路训练单元,用于从针对第k代pcie协议设置的发送端链路均衡参数预设值合集中获取默认预设初始值px、作为第k代初始值,用于对pcie器件进行链路训练;其中,第k代初始值为针对第k代pcie协议进行均衡调整时发送端链路均衡参数初始值,k不小于2;发送端链路均衡参数预设值合集的数据按照数值大小依次排列;
207.链路训练判断单元,用于在通过第k代初始值对pcie器件进行链路训练之后,判断pcie器件的供应商id、设备id能否被正常读取;
208.训练失败判定单元,用于供应商id、设备id不能被正常读取时,判定pcie链路训练失败;
209.链路再训练单元,用于从发送端链路均衡参数预设值合集中按照预设取值规则获取预设初始值py、作为新的第k代初始值,用于对pcie器件进行链路再训练;
210.链路再训练判断单元,用于在对pcie器件进行链路再训练后,按照第一等待时间判断pcie器件的供应商id、设备id能否被正常读取;
211.链路再训练成功判定单元,用于进行链路再训练后供应商id、设备id能被正常读取时,判定pcie链路训练成功。
212.在一个优选的实施方式中,链路训练失败修复单元还包括:
213.链路再训练失败判定单元,用于若进行链路再训练后pcie器件的供应商id、设备id不能被正常读取,则判定pcie链路训练失败;
214.循环链路再训练单元,用于按照预设取值规则中的预设值增大方向和/或预设值减小方向依次从发送端链路均衡参数预设值合集中取值、作为新的第k代初始值,用于分别对pcie器件进行链路再训练、直至pcie链路训练成功。
215.在一个优选的实施方式中,训练管理装置还包括链路稳定性检查单元;链路稳定性检查单元包括链路活跃度管理单元,其包括:
216.链路活跃度标志位判断单元,用于在判定pcie链路训练成功之后,判断链路活跃度标志位是否为1;
217.链路活跃度恢复单元,用于若链路活跃度标志位不为1,则按照预设再训练重试次数依次进行链路再训练;每次链路再训练时,将链路再训练标志位设为1、并按照第二预设时间间隔再次判断链路活跃度标志位是否为1。
218.在一个优选的实施方式中,训练管理装置还包括链路状态管理单元,其包括:
219.链路失能使能操作单元,用于当发生链路降速和/或链路降道时,按照预设失能使能重复次数依次进行链路失能使能操作;每次链路失能使能操作时,设置链路控制寄存器中的失能位、并按照预设操作时间间隔设置失能与使能的时间间隔,按照第二等待时间重新读取链路状态信息,用于判断链路状态是否正常。
220.在一个优选的实施方式中,链路稳定性检查单元还包括链路状态管理单元,其包
括:
221.链路降速判定单元,用于当所述链路活跃度标志位为1时,判断链路状态信息中的链路速度是否小于速度预期值;若小于,则判定发生链路降速;其中,所述速度预期值与链路能力寄存器中最大链路速度的最小规格相匹配;
222.链路降道判定单元,用于当所述链路活跃度标志位为1时,判断链路状态信息中的链路带宽是否小于带宽预期值;若小于,则判定发生链路降道;其中,所述带宽预期值与所述链路能力寄存器中最大链路带宽的最小规格相匹配。
223.在一个优选的实施方式中,链路再训练成功判定单元还用于:
224.若所述链路活跃度标志位为1,则将所述预设再训练重试次数、链路训练协商结果信息打印到日志、并写入cpld寄存器中;其中,所述链路训练协商结果信息包括链路再训练成功时对应的新的第k代初始值。
225.在一个优选的实施方式中,链路再训练成功判定单元还用于:
226.当所述链路状态信息正常时,记录日志、并向cpld寄存器中写入链路训练成功标志。
227.在一个优选的实施方式中,链路再训练成功判定单元还用于:
228.若所述pcie器件的所述供应商id、所述设备id能被正常读取,则判定pcie链路训练成功、并记录日志。
229.在一个优选的实施方式中,链路再训练失败判定单元还用于:
230.当按照所述预设再训练重试次数依次进行链路再训练后、所述链路活跃度标志位均不为1时,将所述预设再训练重试次数与链路训练失败标志打印到日志、并写入cpld寄存器中。
231.在一个优选的实施方式中,链路再训练失败判定单元还用于:
232.当按照所述预设失能使能重复次数依次进行链路失能使能操作后、每次重试均发生链路降速和/或链路降道时,将所述预设失能使能重复次数与链路训练失败标志打印到日志、并写入cpld寄存器中。
233.在一个优选的实施方式中,链路再训练失败判定单元还用于:
234.在按照所述预设取值规则中的所述预设值增大方向和/或所述预设值减小方向依次遍历所述发送端链路均衡参数预设值合集中数值、作为新的第k代初始值之后,当所有链路再训练均失败时,记录日志、并将链路训练失败标志写入cpld寄存器中。
235.在一个优选的实施方式中,训练管理装置还包括:
236.预设值合集获取单元,用于根据所述服务器主板pcie信号参数特性、以及所述服务器主板大规模样本测试要求获取所述发送端链路均衡参数预设值合集;其中,所述发送端链路均衡参数预设值合集包括所述默认预设初始值px。
237.在一个优选的实施方式中,链路训练单元还用于:
238.将所述默认预设初始值px作为第k代初始值,对所述服务器cpu的pcie根端口进行pcie链路训练。
239.关于上述装置的具体限定,可以参见上文中对于方法的限定,在此不再赘述。
240.上述装置中的各个模块,可全部或部分通过软件、硬件及其组合来实现。上述各模块可以以硬件形式内嵌于、或独立于计算机设备中的处理器中,也可以以软件形式存储于
计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
241.其中,如图5所示,上述计算机设备可以是终端,其包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
242.可以理解的是,上述图中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
243.上述实施例方法中的全部或部分流程的实现,可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。
244.其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
245.需要注意的是,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其它等效实施例,而本发明的范围由所附的权利要求范围决定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1