CN114741339B - 一种pcie带宽重训练的方法、装置、设备、存储介质 - Google Patents

一种pcie带宽重训练的方法、装置、设备、存储介质 Download PDF

Info

Publication number
CN114741339B
CN114741339B CN202210421715.9A CN202210421715A CN114741339B CN 114741339 B CN114741339 B CN 114741339B CN 202210421715 A CN202210421715 A CN 202210421715A CN 114741339 B CN114741339 B CN 114741339B
Authority
CN
China
Prior art keywords
link
bandwidth
register
retraining
pcie
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
CN202210421715.9A
Other languages
English (en)
Other versions
CN114741339A (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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology 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 Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202210421715.9A priority Critical patent/CN114741339B/zh
Publication of CN114741339A publication Critical patent/CN114741339A/zh
Application granted granted Critical
Publication of CN114741339B publication Critical patent/CN114741339B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0062Bandwidth consumption reduction during transfers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

本发明属于PCIE链路训练技术领域,具体提供一种PCIE带宽重训练的方法、装置、设备、存储介质,所述方法包括如下步骤:遍历PCIE总线获取总线上所有设备的设备标识符,并获取设备的端口类型;根据不同端口类型对应的设备标识符,分别读取并比较链路功能寄存器的带宽值和链路状态寄存器的带宽值;若不相同,将链路控制寄存器置位,阻断硬件对带宽的控制,并将链路重训练寄存器置位,进行链路重训练;重训练完成后,分别读取并比较链路功能寄存器的带宽值和链路状态寄存器的带宽值;若不相同,开启硬件对带宽的控制。提高整个系统的设备的稳定性,提高数据的安全性,使业务运行更加稳定。

Description

一种PCIE带宽重训练的方法、装置、设备、存储介质
技术领域
本发明涉及PCIE链路训练技术领域,具体涉及一种PCIE带宽重训练的方法、装置、设备、存储介质。
背景技术
随着PCIE设备需求越来越庞大,对服务器的配置要求也水涨船高,客户希望服务器在满足多样化需求的同时,也能做到稳定、高效。开发一种集成存储、高速运算等高性能的服务器成为了目前市场的主流思路。目前服务器对PCIE设备,网卡,显卡,RAID卡等设备的兼容性和稳定性不足,在服务器运行过程中会出现PCIE设备的Gen速率减低,或者带宽降低,导致设备丢失,严重影响整个服务器的性能,若不能将此隐患消除,产品的安全性也得不到保证。
在AMD平台,服务器开机UEFI(Unified Extensible Firmware Interface,统一可扩展固件接口)自检过程包括SEC(安全认证)阶段、PEI(前期初始化)阶段、DXE(驱动执行)阶段、BDS(启动设备选择)阶段、TSL(操作系统加载前期)阶段、Run time阶段和灾难恢复阶段,其中,在PEI阶段通过SMU(System Management Unit,系统管理单元)会对当前系统中的所有PCIE设备进行早期训练,训练完成后,把训练结果反馈给UEFI,UEFI会把训练结果通知给BMC或者OS,方便用户查看。
基于现在AMD平台,UEFI的训练机制是通过AMD的带外MPIO FW(多路径接口软件)来做的,UEFI收到训练结果,如果发生PCIE设备降带宽的现象,并没有相应的纠错,并且发生问题后,会严重影响PCIE设备的性能,甚至影响整个系统的稳定性。
发明内容
针对当前系统中的所有PCIE设备进行训练后如果发生PCIE设备降带宽的现象,并没有相应的纠错,并且发生问题后,会严重影响PCIE设备的性能,甚至影响整个系统的稳定性的问题,本发明提供一种PCIE带宽重训练的方法、装置、设备、存储介质。
本发明的技术方案是:
第一方面,本发明技术方案提供一种PCIE带宽重训练的方法,包括如下步骤:
遍历PCIE总线获取总线上所有设备的设备标识符,并获取设备的端口类型;
根据不同端口类型对应的设备标识符分别读取并比较链路功能寄存器的带宽值和链路状态寄存器的带宽值;
若链路功能寄存器的带宽值与链路状态寄存器的带宽值不相同,将链路控制寄存器置位,阻断硬件对带宽的控制,并将链路重训练寄存器置位,进行链路重训练;
重训练完成后,分别读取并比较链路功能寄存器的带宽值和链路状态寄存器的带宽值;若链路功能寄存器的带宽值与链路状态寄存器的带宽值不相同,开启硬件对带宽的控制,分别读取根端口与终端口的PCIE配置空间的最大链路宽度寄存器的值;
选择最大链路宽度寄存器的最小值作为期望链路带宽进行设置;
读取链路状态寄存器的协议链路宽度,并将读取的协议链路宽度作为实际链路宽度进行设置,重训练结束。
进一步的,遍历PCIE总线获取总线上所有设备的设备标识符,并获取设备的端口类型的步骤包括:
通过PCIE协议查找命令,获取所有安装了PCIE协议的设备;
遍历PCIE总线获取总线上所有设备的设备标识符;
通过链表跳转找到PCIE功能结构体链表的类型寄存器获取当前的端口类型。
进一步的,通过链表跳转找到PCIE功能结构体链表的类型寄存器获取当前的端口类型的步骤之后还包括:
根据获取的端口类型,若该设备标识符为根端口或下行端口的设备标识符,获取该设备标识符、二次总线号、辅助总线号;若该设备标识符为上行端口或终端口的设备标识符,获取该设备标识符。
进一步的,根据不同端口类型对应的设备标识符分别读取并比较链路功能寄存器和链路状态寄存器的带宽值的步骤包括:
根据获取的根端口与终端口的设备标识符,分别读取并比较PCIE配置空间的链路功能寄存器的带宽值和链路状态寄存器的带宽值。
进一步的,若链路功能寄存器的带宽值与链路状态寄存器的带宽值不相同,将链路控制寄存器置位,阻断硬件对带宽的控制的步骤包括:
若链路功能寄存器的带宽值与链路状态寄存器的带宽值不相同,查找根端口和终端口的链路控制寄存器,通过读写内存映射给硬件自动宽度禁用位写1,阻断硬件对带宽的控制。
进一步的,将链路重训练寄存器置位,进行链路重训练的步骤包括:
通过读写内存映射给链路重训练寄存器写1,进行链路重训练;
循环读取链路状态寄存器的链路训练位的值,来判定当前重训练是否结束。
进一步的,重训练完成后,分别读取并比较链路功能寄存器的带宽值和链路状态寄存器的带宽值的步骤之后还包括:
若链路功能寄存器的带宽值与链路状态寄存器的带宽值相同,通过读写内存映射给硬件自动宽度禁用位写0,开启硬件对带宽的控制,重训练结束;
若链路功能寄存器的带宽值与链路状态寄存器的带宽值不相同,通过读写内存映射给硬件自动宽度禁用位写0,开启硬件对带宽的控制,执行步骤:分别读取根端口与终端口的PCIE配置空间的最大链路宽度寄存器的值。
第二方面,本发明技术方案还提供一种PCIE带宽重训练的装置,包括类型获取模块、带宽值读取模块、带宽控制设置模块、重训练设置模块、带宽修复模块;
类型获取模块,用于遍历PCIE总线获取总线上所有设备的设备标识符,并获取设备的端口类型;
带宽值读取模块,用于根据不同端口类型对应的设备标识符分别读取并比较链路功能寄存器和链路状态寄存器的带宽值;还用于重训练完成后,分别读取并比较链路功能寄存器的带宽值和链路状态寄存器的带宽值;
带宽控制设置模块,用于若链路功能寄存器的带宽值与链路状态寄存器的带宽值不相同,将链路控制寄存器置位,阻断硬件对带宽的控制;还用于重训练完成后,若链路功能寄存器内的带宽值与链路状态寄存器内的带宽值相同,开启硬件对带宽的控制;
重训练设置模块,用于将链路重训练寄存器置位,进行链路重训练;
带宽修复模块,用于重训练完成后,若链路功能寄存器的带宽值与链路状态寄存器的带宽值不相同,带宽控制设置模块开启硬件对带宽的控制后,分别读取根端口与终端口的PCIE配置空间的最大链路宽度寄存器的值,选择最大链路宽度寄存器的最小值作为期望链路带宽进行设置;读取链路状态寄存器的协议链路宽度,并将读取的协议链路宽度作为实际链路宽度进行设置。
进一步的,类型获取模块包括查找单元、遍历单元、类型获取单元;
查找单元,用于通过PCIE协议查找命令,获取所有安装了PCIE协议的设备;
遍历单元,用于遍历PCIE总线获取总线上所有设备的设备标识符;
类型获取单元,用于通过链表跳转找到PCIE功能结构体链表的类型寄存器获取当前的端口类型。
进一步的,该装置还包括标识符获取模块,用于根据获取的端口类型,若该设备标识符为根端口或下行端口的设备标识符,获取该设备标识符、二次总线号、辅助总线号;若该设备标识符为上行端口或终端口的设备标识符,获取该设备标识符。
进一步的,带宽值读取模块,具体用于根据获取的根端口与终端口的设备标识符,分别读取并比较PCIE配置空间的链路功能寄存器的带宽值和链路状态寄存器的带宽值。
进一步的,带宽控制设置模块,具体用于若链路功能寄存器的带宽值与链路状态寄存器的带宽值不相同,查找根端口和终端口的链路控制寄存器,通过读写内存映射给硬件自动宽度禁用位写1,阻断硬件对带宽的控制;还用于重训练完成后,通过读写内存映射给硬件自动宽度禁用位写0,开启硬件对带宽的控制。
进一步的,重训练设置模块包括重训练设置单元和重训练状态判断单元;
重训练设置单元,用于通过读写内存映射给链路重训练寄存器写1,进行链路重训练;
重训练状态判断单元,用于循环读取链路状态寄存器的链路训练位的值,来判定当前重训练是否结束。
进一步的,该装置还包括带宽修复模块,所述带宽修复模块包括期望链路带宽设置单元和实际带宽设置单元;
期望链路带宽设置单元,用于重训练完成后,若链路功能寄存器内的带宽值与链路状态寄存器内的带宽值不相同,带宽控制设置模块通过读写内存映射给硬件自动宽度禁用位写0后,分别读取根端口与终端口的PCIE配置空间的最大链路宽度寄存器的值,并选择最大链路宽度寄存器的最小值作为期望链路带宽进行设置;
实际带宽设置单元,用于期望链路带宽设置模块设置完成后,读取链路状态寄存器的协议链路宽度,并将读取的协议链路宽度作为实际链路宽度进行设置。
第三方面,本发明技术方案还提供一种计算机设备,包括处理器和存储器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如第一方面所述的PCIE带宽重训练的方法。
第四方面,本发明技术方案还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如第一方面所述的PCIE带宽重训练的方法。
从以上技术方案可以看出,本发明具有以下优点:在UEFI POST阶段侦测到服务器在开机过程中发生PCIE设备降低带宽的问题,并且通过链路重训练的方式修复它,这将提高整个系统的设备的稳定性,提高数据的安全性,使业务运行更加稳定。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例的方法的示意性流程图。
图2是本发明一个实施例的装置的示意性框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
如图1所示,本发明实施例提供一种PCIE带宽重训练的方法,包括如下步骤:
步骤1:遍历PCIE总线获取总线上所有设备的设备标识符,并获取设备的端口类型;
步骤2:根据不同端口类型对应的设备标识符分别读取并比较链路功能寄存器的带宽值和链路状态寄存器的带宽值;
步骤3:两个寄存器的带宽值是否相同,若相同,该链路训练正常;若不相同,执行步骤4;
步骤4:将链路控制寄存器置位,阻断硬件对带宽的控制;
步骤5:将链路重训练寄存器置位,进行链路重训练;
步骤6:重训练完成后,分别读取并比较链路功能寄存器的带宽值和链路状态寄存器的带宽值;
步骤7:两个寄存器的带宽值是否相同,若相同,开启硬件对带宽的控制,重训练结束;若不相同,执行步骤8;
步骤8:开启硬件对带宽的控制,分别读取根端口与终端口的PCIE配置空间的最大链路宽度寄存器的值;
步骤9:选择最大链路宽度寄存器的最小值作为期望链路带宽进行设置;
步骤10:读取链路状态寄存器的协议链路宽度,并将读取的协议链路宽度作为实际链路宽度进行设置,重训练结束。
在有些实施例中,步骤1中,遍历PCIE总线获取总线上所有设备的设备标识符,并获取设备的端口类型的步骤包括:
步骤11:通过PCIE协议查找命令,获取所有安装了PCIE协议的设备;
步骤12:遍历PCIE总线获取总线上所有设备的设备标识符;
步骤13:通过链表跳转找到PCIE功能结构体链表的类型寄存器获取当前的端口类型。通过链表跳转找到链表ID为10h的PCI Express CapabilitStructure,读取offset 02h寄存器的BIT4-BIT7,来获取当前的端口类型。
需要说明的是,步骤13中通过链表跳转找到PCIE功能结构体链表的类型寄存器获取当前的端口类型的步骤之后还包括:
步骤1-2:根据获取的端口类型,若该设备标识符为根端口或下行端口的设备标识符,获取该设备标识符、二次总线号、辅助总线号;若该设备标识符为上行端口或终端口的设备标识符,获取该设备标识符。
根据步骤13获取到的Port Type,若该BDF为Rootport或DownstreamPort,获取其BDF、Secondary Bus(SecBus)以及SubordinateBus(SubBus);若该BDF为Upstream Port或Endpoint,获取其BDF,BDF为bus:device:function,也就是总线号:设备号:功能号。
在有些实施例中,步骤2中,根据不同端口类型对应的设备标识符分别读取并比较链路功能寄存器和链路状态寄存器的带宽值的步骤包括:
S2:根据获取的根端口与终端口的设备标识符,分别读取并比较PCIE配置空间的链路功能寄存器的带宽值和链路状态寄存器的带宽值。
根据步骤1-2获取到的Rootport与Endpoint的BDF,分别读取其配置空间PCIExpress Capabilit Structure链表的Link Capabilities Register(offset 0Ch)的BIT4—BIT9的带宽值和Link Status Register(offset 12h)的BIT4—BIT9的带宽值。
在有些实施例中,步骤4中将链路控制寄存器置位,阻断硬件对带宽的控制的步骤包括:
S4:查找根端口和终端口的链路控制寄存器,通过读写内存映射给硬件自动宽度禁用位写1,阻断硬件对带宽的控制。
查找Rootport和Endpoint的Link Control Register(offset 10h)寄存器,通过mmio R/W(读写内存映射表)给Hardware Autonomous Width Disable(BIT9)写1,阻断硬件对带宽的控制。
步骤5中,将链路重训练寄存器置位,进行链路重训练的步骤包括:
步骤51:通过读写内存映射给链路重训练寄存器写1,进行链路重训练;
通过读写MMIO给Retrain Link寄存器(BIT5)写1b,此时链路retrain开始;
步骤52:循环读取链路状态寄存器的链路训练位的值,来判定当前重训练是否结束。通过循环读取Link Status Register寄存器link training(BIT11)位的值,来判定当前重训练是否结束,若未结束,则继续等待1ms。
需要说明的是,重训练完成后,若链路功能寄存器的带宽值与链路状态寄存器的带宽值相同,通过读写内存映射给硬件自动宽度禁用位写0,开启硬件对带宽的控制,重训练结束;
步骤8中,若链路功能寄存器的带宽值与链路状态寄存器的带宽值不相同,重复步骤S4,通过读写内存映射给硬件自动宽度禁用位写0,开启硬件对带宽的控制。
本发明通过在BDS阶段重新检测PCIE设备的训练结果,及时发现带宽降低问题并即时修复,来提升系统容错率,防患于未然,杜绝降带宽导致的恶劣影响。
如图2所示,本发明实施例还提供一种PCIE带宽重训练的装置,包括类型获取模块、带宽值读取模块、带宽控制设置模块、重训练设置模块、带宽修复模块;
类型获取模块,用于遍历PCIE总线获取总线上所有设备的设备标识符,并获取设备的端口类型;
带宽值读取模块,用于根据不同端口类型对应的设备标识符分别读取并比较链路功能寄存器和链路状态寄存器的带宽值;还用于重训练完成后,分别读取并比较链路功能寄存器的带宽值和链路状态寄存器的带宽值;
带宽控制设置模块,用于若链路功能寄存器的带宽值与链路状态寄存器的带宽值不相同,将链路控制寄存器置位,阻断硬件对带宽的控制;还用于重训练完成后,若链路功能寄存器内的带宽值与链路状态寄存器内的带宽值相同,开启硬件对带宽的控制;
重训练设置模块,用于将链路重训练寄存器置位,进行链路重训练;
带宽修复模块,用于重训练完成后,若链路功能寄存器的带宽值与链路状态寄存器的带宽值不相同,带宽控制设置模块开启硬件对带宽的控制后,分别读取根端口与终端口的PCIE配置空间的最大链路宽度寄存器的值,选择最大链路宽度寄存器的最小值作为期望链路带宽进行设置;读取链路状态寄存器的协议链路宽度,并将读取的协议链路宽度作为实际链路宽度进行设置。
在有些实施例中,类型获取模块包括查找单元、遍历单元、类型获取单元;
查找单元,用于通过PCIE协议查找命令,获取所有安装了PCIE协议的设备;
遍历单元,用于遍历PCIE总线获取总线上所有设备的设备标识符;
类型获取单元,用于通过链表跳转找到PCIE功能结构体链表的类型寄存器获取当前的端口类型。
在有些实施例中,该装置还包括标识符获取模块,用于根据获取的端口类型,若该设备标识符为根端口或下行端口的设备标识符,获取该设备标识符、二次总线号、辅助总线号;若该设备标识符为上行端口或终端口的设备标识符,获取该设备标识符。
在有些实施例中,带宽值读取模块,具体用于根据获取的根端口与终端口的设备标识符,分别读取并比较PCIE配置空间的链路功能寄存器的带宽值和链路状态寄存器的带宽值。
在有些实施例中,带宽控制设置模块,具体用于若链路功能寄存器的带宽值与链路状态寄存器的带宽值不相同,查找根端口和终端口的链路控制寄存器,通过读写内存映射给硬件自动宽度禁用位写1,阻断硬件对带宽的控制;还用于重训练完成后,通过读写内存映射给硬件自动宽度禁用位写0,开启硬件对带宽的控制。
在有些实施例中,重训练设置模块包括重训练设置单元和重训练状态判断单元;
重训练设置单元,用于通过读写内存映射给链路重训练寄存器写1,进行链路重训练;
重训练状态判断单元,用于循环读取链路状态寄存器的链路训练位的值,来判定当前重训练是否结束。
在有些实施例中,该装置还包括带宽修复模块,所述带宽修复模块包括期望链路带宽设置单元和实际带宽设置单元;
期望链路带宽设置单元,用于重训练完成后,若链路功能寄存器内的带宽值与链路状态寄存器内的带宽值不相同,带宽控制设置模块通过读写内存映射给硬件自动宽度禁用位写0后,分别读取根端口与终端口的PCIE配置空间的最大链路宽度寄存器的值,并选择最大链路宽度寄存器的最小值作为期望链路带宽进行设置;
实际带宽设置单元,用于期望链路带宽设置模块设置完成后,读取链路状态寄存器的协议链路宽度,并将读取的协议链路宽度作为实际链路宽度进行设置。
本发明实施例提供的一种计算机设备,该设备可以包括:处理器、通信接口、存储器和总线,其中,处理器,通信接口,存储器通过总线完成相互间的通信。总线可以用于电子设备与传感器之间的信息传输。处理器可以调用存储器中的逻辑指令,以执行如下方法:步骤1:遍历PCIE总线获取总线上所有设备的设备标识符,并获取设备的端口类型;步骤2:根据不同端口类型对应的设备标识符分别读取并比较链路功能寄存器的带宽值和链路状态寄存器的带宽值;步骤3:两个寄存器的带宽值是否相同,若相同,该链路训练正常;若不相同,执行步骤4;步骤4:将链路控制寄存器置位,阻断硬件对带宽的控制;步骤5:将链路重训练寄存器置位,进行链路重训练;步骤6:重训练完成后,分别读取并比较链路功能寄存器的带宽值和链路状态寄存器的带宽值;步骤7:两个寄存器的带宽值是否相同,若相同,开启硬件对带宽的控制,重训练结束;若不相同,执行步骤8;步骤8:开启硬件对带宽的控制,分别读取根端口与终端口的PCIE配置空间的最大链路宽度寄存器的值;步骤9:选择最大链路宽度寄存器的最小值作为期望链路带宽进行设置;步骤10:读取链路状态寄存器的协议链路宽度,并将读取的协议链路宽度作为实际链路宽度进行设置,重训练结束。
此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行上述方法实施例所提供的方法,例如包括:步骤1:遍历PCIE总线获取总线上所有设备的设备标识符,并获取设备的端口类型;步骤2:根据不同端口类型对应的设备标识符分别读取并比较链路功能寄存器的带宽值和链路状态寄存器的带宽值;步骤3:两个寄存器的带宽值是否相同,若相同,该链路训练正常;若不相同,执行步骤4;步骤4:将链路控制寄存器置位,阻断硬件对带宽的控制;步骤5:将链路重训练寄存器置位,进行链路重训练;步骤6:重训练完成后,分别读取并比较链路功能寄存器的带宽值和链路状态寄存器的带宽值;步骤7:两个寄存器的带宽值是否相同,若相同,开启硬件对带宽的控制,重训练结束;若不相同,执行步骤8;步骤8:开启硬件对带宽的控制,分别读取根端口与终端口的PCIE配置空间的最大链路宽度寄存器的值;步骤9:选择最大链路宽度寄存器的最小值作为期望链路带宽进行设置;步骤10:读取链路状态寄存器的协议链路宽度,并将读取的协议链路宽度作为实际链路宽度进行设置,重训练结束。
在一些具体的实施例中,所述可读存储介质中被处理器执行的程序指令,具体可以实现以下步骤:步骤11:通过PCIE协议查找命令,获取所有安装了PCIE协议的设备;步骤12:遍历PCIE总线获取总线上所有设备的设备标识符;步骤13:通过链表跳转找到PCIE功能结构体链表的类型寄存器获取当前的端口类型。
在一些具体的实施例中,所述可读存储介质中被处理器执行的程序指令,具体可以实现以下步骤:根据获取的端口类型,若该设备标识符为根端口或下行端口的设备标识符,获取该设备标识符、二次总线号、辅助总线号;若该设备标识符为上行端口或终端口的设备标识符,获取该设备标识符。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种PCIE带宽重训练的方法,其特征在于,包括如下步骤:
遍历PCIE总线获取所有设备的设备标识符,并获取设备的端口类型;
根据不同端口类型对应的设备标识符,分别读取并比较链路功能寄存器的带宽值和链路状态寄存器的带宽值;
若链路功能寄存器的带宽值与链路状态寄存器的带宽值不相同,将链路控制寄存器置位,阻断硬件对带宽的控制,并将链路重训练寄存器置位,进行链路重训练;
重训练完成后,分别读取并比较链路功能寄存器的带宽值和链路状态寄存器的带宽值;若链路功能寄存器的带宽值与链路状态寄存器的带宽值不相同,开启硬件对带宽的控制,分别读取根端口与终端口的PCIE配置空间的最大链路宽度寄存器的值;
选择最大链路宽度寄存器的最小值作为期望链路带宽进行设置;
读取链路状态寄存器的协议链路宽度,并将读取的协议链路宽度作为实际链路宽度进行设置,重训练结束。
2.根据权利要求1所述的PCIE带宽重训练的方法,其特征在于,遍历PCIE总线获取总线上所有设备的设备标识符,并获取设备的端口类型的步骤包括:
通过PCIE协议查找命令,获取所有安装了PCIE协议的设备;
遍历PCIE总线获取总线上所有设备的设备标识符;
通过链表跳转找到PCIE功能结构体链表的类型寄存器获取当前的端口类型。
3.根据权利要求2所述的PCIE带宽重训练的方法,其特征在于,通过链表跳转找到PCIE功能结构体链表的类型寄存器获取当前的端口类型的步骤之后还包括:
根据获取的端口类型,若该设备标识符为根端口或下行端口的设备标识符,获取该设备标识符、二次总线号、辅助总线号;若该设备标识符为上行端口或终端口的设备标识符,获取该设备标识符。
4.根据权利要求3所述的PCIE带宽重训练的方法,其特征在于,根据不同端口类型对应的设备标识符分别读取并比较链路功能寄存器的带宽值和链路状态寄存器的带宽值的步骤包括:
根据获取的根端口与终端口的设备标识符,分别读取并比较PCIE配置空间的链路功能寄存器的带宽值和链路状态寄存器的带宽值。
5.根据权利要求4所述的PCIE带宽重训练的方法,其特征在于,若链路功能寄存器的带宽值与链路状态寄存器的带宽值不相同,将链路控制寄存器置位,阻断硬件对带宽的控制的步骤包括:
若链路功能寄存器的带宽值与链路状态寄存器的带宽值不相同,查找根端口和终端口的链路控制寄存器,通过读写内存映射给硬件自动宽度禁用位写1,阻断硬件对带宽的控制。
6.根据权利要求5所述的PCIE带宽重训练的方法,其特征在于,将链路重训练寄存器置位,进行链路重训练的步骤包括:
通过读写内存映射给链路重训练寄存器写1,进行链路重训练;
循环读取链路状态寄存器的链路训练位的值,来判定当前重训练是否结束。
7.根据权利要求6所述的PCIE带宽重训练的方法,其特征在于,重训练完成后,分别读取并比较链路功能寄存器的带宽值和链路状态寄存器的带宽值的步骤之后还包括:
若链路功能寄存器的带宽值与链路状态寄存器的带宽值相同,通过读写内存映射给硬件自动宽度禁用位写0,开启硬件对带宽的控制,重训练结束;
若链路功能寄存器的带宽值与链路状态寄存器的带宽值不相同,通过读写内存映射给硬件自动宽度禁用位写0,开启硬件对带宽的控制,执行步骤:分别读取根端口与终端口的PCIE配置空间的最大链路宽度寄存器的值。
8.一种PCIE带宽重训练的装置,其特征在于,包括类型获取模块、带宽值读取模块、带宽控制设置模块、重训练设置模块、带宽修复模块;
类型获取模块,用于遍历PCIE总线获取总线上所有设备的设备标识符,并获取设备的端口类型;
带宽值读取模块,用于根据不同端口类型对应的设备标识符分别读取并比较链路功能寄存器和链路状态寄存器的带宽值;还用于重训练完成后,分别读取并比较链路功能寄存器的带宽值和链路状态寄存器的带宽值;
带宽控制设置模块,用于若链路功能寄存器的带宽值与链路状态寄存器的带宽值不相同,将链路控制寄存器置位,阻断硬件对带宽的控制;还用于重训练完成后,若链路功能寄存器内的带宽值与链路状态寄存器内的带宽值相同,开启硬件对带宽的控制;
重训练设置模块,用于将链路重训练寄存器置位,进行链路重训练;
带宽修复模块,用于重训练完成后,若链路功能寄存器的带宽值与链路状态寄存器的带宽值不相同,带宽控制设置模块开启硬件对带宽的控制后,分别读取根端口与终端口的PCIE配置空间的最大链路宽度寄存器的值,选择最大链路宽度寄存器的最小值作为期望链路带宽进行设置;读取链路状态寄存器的协议链路宽度,并将读取的协议链路宽度作为实际链路宽度进行设置。
9.一种计算机设备,其特征在于,包括处理器和存储器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至7任一项权利要求所述的PCIE带宽重训练的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至7任一项权利要求所述的PCIE带宽重训练的方法。
CN202210421715.9A 2022-04-21 2022-04-21 一种pcie带宽重训练的方法、装置、设备、存储介质 Active CN114741339B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210421715.9A CN114741339B (zh) 2022-04-21 2022-04-21 一种pcie带宽重训练的方法、装置、设备、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210421715.9A CN114741339B (zh) 2022-04-21 2022-04-21 一种pcie带宽重训练的方法、装置、设备、存储介质

Publications (2)

Publication Number Publication Date
CN114741339A CN114741339A (zh) 2022-07-12
CN114741339B true CN114741339B (zh) 2023-07-14

Family

ID=82283392

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210421715.9A Active CN114741339B (zh) 2022-04-21 2022-04-21 一种pcie带宽重训练的方法、装置、设备、存储介质

Country Status (1)

Country Link
CN (1) CN114741339B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117319214B (zh) * 2023-11-30 2024-04-16 北京象帝先计算技术有限公司 一种pcie传输带宽处理方法、pcie终端设备及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109614259A (zh) * 2018-11-28 2019-04-12 郑州云海信息技术有限公司 一种服务器PCIe设备定位故障原因的系统及方法
CN111723907A (zh) * 2020-06-11 2020-09-29 浪潮电子信息产业股份有限公司 一种模型训练设备、方法、系统及计算机可读存储介质
CN113688087A (zh) * 2021-10-25 2021-11-23 苏州浪潮智能科技有限公司 一种pcie设备枚举方法、系统、存储介质及设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10114658B2 (en) * 2016-05-23 2018-10-30 Baida USA LLC Concurrent testing of PCI express devices on a server platform
US11397701B2 (en) * 2019-04-30 2022-07-26 Intel Corporation Retimer mechanisms for in-band link management
US11815976B2 (en) * 2019-05-22 2023-11-14 Qualcomm Incorporated Bandwidth based power management for peripheral component interconnect express devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109614259A (zh) * 2018-11-28 2019-04-12 郑州云海信息技术有限公司 一种服务器PCIe设备定位故障原因的系统及方法
CN111723907A (zh) * 2020-06-11 2020-09-29 浪潮电子信息产业股份有限公司 一种模型训练设备、方法、系统及计算机可读存储介质
CN113688087A (zh) * 2021-10-25 2021-11-23 苏州浪潮智能科技有限公司 一种pcie设备枚举方法、系统、存储介质及设备

Also Published As

Publication number Publication date
CN114741339A (zh) 2022-07-12

Similar Documents

Publication Publication Date Title
CN108646982B (zh) 一种基于ubifs的数据自动修复方法及装置
CN106020865B (zh) 一种系统升级方法和装置
CN111737173B (zh) I2c总线通信控制方法、装置、系统及可读存储介质
CN110941394B (zh) 列车自动控制系统数据读写方法及装置
CN101699402B (zh) 一种多模式启动的嵌入式系统
CN104391765A (zh) 一种自动诊断服务器启动故障的方法
CN103631721A (zh) 一种隔离内存中坏块的方法及系统
CN114741339B (zh) 一种pcie带宽重训练的方法、装置、设备、存储介质
CN110286853A (zh) 一种数据写入方法和装置、计算机可读存储介质
CN113064625B (zh) 一种带外升级bios的方法、装置、设备及介质
CN111966287A (zh) 数据存储方法、电子设备及存储介质
CN118051277A (zh) 服务器的启动方法、装置、存储介质和电子设备
CN114116337A (zh) 基于pcie链路配置的硬盘测试方法、系统、终端及存储介质
CN111258664B (zh) 一种内存序列号完整获取方法、系统、终端及存储介质
CN106250193B (zh) 一种基于nand存储器的系统启动方法及系统
CN116150111A (zh) 内核崩溃日志的保存方法、装置、介质以及电子设备
CN110471791A (zh) 一种对闪存的坏块信息的存储方法和装置以及设备
CN114816857B (zh) 强制bios恢复出场参数的方法、系统、终端及存储介质
CN111736858A (zh) 一种终端设备的升级方法、存储介质及终端设备
CN117311832B (zh) Pcie设备启动模式的展示方法、装置、设备及介质
CN110795297B (zh) 一种电子设备的测试方法及装置
CN113076273B (zh) 组件接入方法、装置、电子设备、存储介质及程序产品
CN113282566B (zh) 数据库生成方法、装置、设备及存储介质
US11468094B2 (en) Computer system and fault tolerance processing method thereof of image file
WO2021227926A1 (zh) 系统重启方法、终端及存储介质

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