CN117950919A - 一种PCIe拓扑的切换方法及服务器 - Google Patents

一种PCIe拓扑的切换方法及服务器 Download PDF

Info

Publication number
CN117950919A
CN117950919A CN202410065049.9A CN202410065049A CN117950919A CN 117950919 A CN117950919 A CN 117950919A CN 202410065049 A CN202410065049 A CN 202410065049A CN 117950919 A CN117950919 A CN 117950919A
Authority
CN
China
Prior art keywords
server
level value
bios
pcie
topology
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.)
Pending
Application number
CN202410065049.9A
Other languages
English (en)
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.)
XFusion Digital Technologies Co Ltd
Original Assignee
XFusion Digital Technologies 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 XFusion Digital Technologies Co Ltd filed Critical XFusion Digital Technologies Co Ltd
Priority to CN202410065049.9A priority Critical patent/CN117950919A/zh
Publication of CN117950919A publication Critical patent/CN117950919A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • 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)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Hardware Redundancy (AREA)

Abstract

本申请提供了一种PCIe拓扑的切换方法及服务器,涉及计算机技术领域。该方法应用于服务器,服务器包括至少两个处理器,包括:通过BIOS检测处理器的运行情况;当确定仅存在一个处理器正常运行时,将预设GPIO的输出电平值设置为第一电平值;当确定存在一个以上处理器正常运行时,将预设GPIO的输出电平值设置为第二电平值。当确定仅存在一个处理器正常运行时,主动切换PCIe拓扑模式为级联模式,或当确定存在一个以上处理器正常运行时,主动切换PCIe拓扑模式为均衡模式,即通过预设GPIO的设置实现了PCIe拓扑的主动切换,并且不再依赖于BMC实现PCIe拓扑的切换,应用范围更加广泛,容错机制更高。

Description

一种PCIe拓扑的切换方法及服务器
技术领域
本申请涉及计算机技术领域,尤其涉及一种PCIe拓扑的切换方法及服务器。
背景技术
服务器的可扩展性是服务器的一个重要性能,服务器的可扩展性是指服务器的硬件配置可以根据需要灵活配置。服务器的可扩展性可以通过增加单板上的快速外围部件互连标准(Peripheral Component Interconnect express,简称PCIe)插槽实现,每个PCIe插槽上可以插一张PCIe卡,PCIe卡上可以连接多个不同的PCIe设备来满足不同用户和不同应用场景的要求,例如,在PCIe插槽插上图形处理器(Graphic Processing Unit,简称GPU),可以扩展服务器的视频处理能力,在PCIe插槽插SSD,可以扩展服务器的存储能力。随着客户需求的多样化,为适应不同的客户对PCIe拓扑的需求,需要使得服务器兼容多个PCIe拓扑模式,并能够对PCIe拓扑进行切换。
当前技术中常见的PCIe拓扑切换的方式,一般是通过基板管理控制器(baseboardmanagement controller,BMC)等带外控制器接收来自远程服务器发送的链路切换指令,BMC根据链路切换指令控制PCIe交换设备切换导通的上行路径。当前技术中的PCIe拓扑的切换完全依赖于带外控制器(例如BMC)来实现,但是在带外控制器出现故障的情况下,当前技术中的PCIe拓扑切换方法将无法成功实现。
综上所述,当前技术中PCIe拓扑的切换完全依赖于带外控制器实现,应用范围较小,容错机制较差。
发明内容
本申请提供一种PCIe拓扑的切换方法及服务器,能够不完全依赖于带外控制器实现PCIe拓扑的切换,应用范围更加广泛,容错机制更高,使得在带外控制器出现故障的情况下仍能够实现PCIe拓扑的切换。
为达到上述目的,本申请采用如下技术方案:
第一方面,本申请提供了一种PCIe拓扑的切换方法,包括:通过基本输入输出系统BIOS检测服务器的处理器的运行情况;当确定服务器的处理器中仅存在一个处理器正常运行时,将预设GPIO的输出电平值设置为第一电平值;当确定服务器的处理器中存在一个以上处理器正常运行时,将预设GPIO的输出电平值设置为第二电平值。当BIOS确定服务器中仅存在一个处理器正常运行时,主动将GPIO的输出电平值设置为第一电平值,即主动切换PCIe拓扑模式为级联模式,或当BIOS确定服务器中存在一个以上处理器正常运行时,主动将GPIO的输出电平值设置为第二电平值,即主动切换PCIe拓扑模式为均衡模式,通过预设GPIO的设置实现了PCIe拓扑的主动切换,并且不再依赖于BMC实现PCIe拓扑的切换,应用范围更加广泛,容错机制更高。
在一种可能的实现方式中,通过信号连接器读取所述预设GPIO的输出电平值,确定所述服务器的PCIe拓扑模式,以指示至少两个交换设备加载与所述PCIe拓扑模式对应的固件,以实现所述服务器的PCIe拓扑模式的切换。由于信号连接器本质是一个可编程逻辑器件,故可以读取GPIO的输出电平值,并基于预设GPIO的输出电平值确定PCIe拓扑模式,从而指示交换设备架子啊对应的固件,从而实现服务器的PCIe拓扑的切换。
在一种可能的实现方式中,当确定所述服务器的处理器中仅存在一个处理器正常运行时,所述BIOS读取预设GPIO的输出电平值;当所述BIOS读取的所述预设GPIO的输出电平值为第二电平值时,将所述预设GPIO的输出电平值设置为第一电平值,或,当确定所述服务器的处理器中存在一个以上处理器正常运行时,所述BIOS读取预设GPIO的输出电平值;当所述BIOS读取的所述预设GPIO的输出电平值为第一电平值时,将所述预设GPIO的输出电平值设置为第二电平值。确定当前服务器的PCIe拓扑模式,从而判断当前服务器的PCIe拓扑模式是否与切换后的PCIe拓扑模式相同,当不相同时将预设GPIO的输出电平值进行设置,以便于后续基于预设GPIO的输出电平值实现PCIe拓扑的切换。
在一种可能的实现方式中,响应于服务器的上电启动,通过基本输入输出系统BIOS进行上电自检,以实现在上电启动过程中,检测服务器的处理器的运行情况。通过BIOS的上电自检功能,实现在上电启动过程中,检测服务器的处理器的运行情况。
在一种可能的实现方式中,BIOS生成读取指令;读取指令用于指示信号连接器重新读取预设GPIO的输出电平值;响应于读取指令,通过信号连接器重新读取预设GPIO的输出电平值,确定服务器的PCIe拓扑模式。当在上电启动过程中,通过信号连接器读取预设GPIO的输出电平值之前,BIOS生成读取指令,指示信号连接器重新读取预设GPIO的输出电平值,从而实现PCIe拓扑的切换。由于服务器还未完成上电启动,信号连接器重新读取预设GPIO的输出电平值即可实现PCIe拓扑的切换。
在一种可能的实现方式中,在服务器的运行过程中,通过基本输入输出系统BIOS检测服务器的处理器的运行情况。在服务器的运行过程中,通过BIOS实时检测功能,实现服务器的处理器的运行情况的检测。
在一种可能的实现方式中,通过BIOS重新启动服务器;响应于服务器的重新启动,通过信号连接器重新读取预设GPIO的输出电平值,确定服务器的PCIe拓扑模式。在服务器运行过程中,通过信号连接器读取预设GPIO的输出电平值之前,通过BIOS重新启动服务器,以便于信号连接器重新读取预设GPIO的输出电平值,从而实现PCIe拓扑的切换。由于服务器处于运行中(即完成上电启动后),需要重新启动服务器,信号连接器才能够读取预设GPIO的输出电平值。
在一种可能的实现方式中,BIOS通过带外控制器BMC,控制服务器的可编程逻辑器件CPLD将预设GPIO的输出电平值设置为第一电平值;BIOS通过带外控制器BMC,控制服务器的可编程逻辑器件CPLD将预设GPIO的输出电平值设置为第二电平值。BIOS通过带外控制器BMC,控制服务器的可编程逻辑器件CPLD,对预设GPIO的输出电平值进行设置,在实现预设GPIO的输出电平值的设置的同时,还可以将设置的预设GPIO的输出电平值更新到BMC中,以实现BMC中存储的配置信息与服务器的当前配置信息同步。
在一种可能的实现方式中,BIOS直接控制服务器的可编程逻辑器件CPLD,将预设GPIO的输出电平值设置为第一电平值;BIOS直接控制服务器的可编程逻辑器件CPLD,将预设GPIO的输出电平值设置为第二电平值。BIOS可以直接控制服务器的可编程逻辑器件CPLD,对预设GPIO的输出电平值进行设置,当BMC出现故障时/无法正常运行时,仍可以实现PCIe拓扑的切换,即不依赖于BMC可以实现PCIe拓扑切换。
在一种可能的实现方式中,当BIOS读取的预设GPIO的输出电平值为第一电平值时,保持预设GPIO的输出电平值为第一电平值;当BIOS读取的预设GPIO的输出电平值为第二电平值时,保持预设GPIO的输出电平值为第二电平值。当BIOS读取的预设GPIO的输出电平值与设置后的预设GPIO的输出电平值相同,则说明当前服务器的PCIe拓扑模式不需要切换,则保持预设GPIO的输出电平值不变。在一种可能的实现方式中,当确定服务器中仅存在一个处理器正常运行时,BIOS将服务器的故障信息上报给带外控制器BMC,以便于BMC显示故障信息。当确定服务器中仅存在一个处理器正常运行时,BIOS将服务器的故障信息上报给带外控制器BMC,BMC可以向用户显示故障信息,以提示用户当前服务器的处理器存在故障。
在一种可能的实现方式中,在服务器正常运行过程中,BIOS接收到用户基于BIOS配置界面输入的PCIe拓扑模式的配置操作;响应于PCIe拓扑模式的配置操作,确定目标拓扑模式;将预设GPIO的电平值设置为目标拓扑模式对应的电平值。在服务器的正常运行中,向用户显示BIOS配置界面。当BIOS接收到用户基于BIOS配置界面输入的PCIe拓扑模式的配置的操作,基于该PCIe拓扑模式的配置操作,确定目标拓扑模式后,将预设GPIO的电平值设置为目标拓扑模式对应的电平值,以便于后续实现PCIe拓扑的切换,并且不需要依赖BMC也可以实现PCIe拓扑模式的被动切换。
在一种可能的实现方式中,通过BIOS重新启动服务器;响应于服务器的重新启动,通过信号连接器读取预设GPIO的输出电平值,确定PCIe拓扑模式为目标拓扑模式,以指示至少两个交换设备加载目标拓扑模式对应的固件,以实现服务器的PCIe拓扑模式的切换。
第二方面,本申请提供了一种服务器,包括:至少两个处理器,以及与至少两个处理器通信连接的存储器;存储器用于存储计算机执行指令;所述至少两个处理器用于指示所述存储器存储的计算机执行指令,以实现第一方面的方法。
第三方面,本申请提供了一种PCIe拓扑切换的装置,包括:运行检测模块,用于通过基本输入输出系统BIOS检测服务器的处理器的运行情况;运行判断模块,用于判断服务器的处理器中是否存在一个以上处理器正常运行;电平设置模块,包括第一电平设置模块和第二电平设置模块;第一电平设置模块,用于当确定服务器仅存在一个处理器正常运行时,将预设GPIO的输出电平值设置为第一电平值;第二电平设置模块,用于当确定服务器存在一个以上处理器正常运行时,将预设GPIO的输出电平值设置为第二电平值。当BIOS确定服务器中仅存在一个处理器正常运行时,主动将GPIO的输出电平值设置为第一电平值,即主动切换PCIe拓扑模式为级联模式,或当BIOS确定服务器中存在一个以上处理器正常运行时,主动将GPIO的输出电平值设置为第二电平值,即主动切换PCIe拓扑模式为均衡模式,实现了PCIe拓扑的主动切换,并且不再依赖于BMC实现PCIe拓扑的切换。进一步,当检测到服务器的处理器出现故障后,能够主动切换PCIe拓扑,从而使得PCIe设备仍能够正常运行,进一步提高了容错机制。
第四方面,本申请提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序或指令,当计算机程序或指令被运行时,实现上述第一方面的方法。
第五方面,本申请提供了一种计算机程序产品,包括计算机程序或指令,该计算机程序或指令被处理器执行时,实现上述第一方面的方法。
附图说明
图1为当前技术中的一种PCIe拓扑切换系统的结构示意图;
图2为当前技术中的又一种PCIe拓扑切换系统的结构示意图;
图3为本申请实施例提供的一种PCIe拓扑的切换系统的结构示意图;
图4为本申请实施例提供的一种PCIe拓扑加载过程的流程示意图;
图5A为本申请实施例提供的一种级联模式对应的PCIe设备树的代码配置示意图;
图5B为本申请实施例提供的一种级联模式对应的PCIe设备树的结构示意图;
图6A为本申请实施例提供的一种均衡模式对应的PCIe设备树的代码配置示意图;
图6B为本申请实施例提供的一种均衡模式对应的PCIe设备树的结构示意图;
图7为本申请实施例提供的一种PCIe拓扑的切换方法的流程示意图;
图8为本申请实施例提供的又一种PCIe拓扑的切换方法的流程示意图;
图9为本申请实施例提供的又一种PCIe拓扑的切换方法的流程示意图;
图10A为本申请实施例提供的一种BIOS配置界面的界面示意图;
图10B为本申请实施例提供的又一种BIOS配置界面的界面示意图;
图10C为本申请实施例提供的又一种BIOS配置界面的界面示意图;
图11为本申请实施例提供的一种通过BMC设置目标拓扑模式的流程示意图;
图12为本申请实施例提供的又一种PCIe拓扑的切换方法的流程示意图;
图13为本申请实施例提供的又一种PCIe拓扑的切换方法的流程示意图;
图14为本申请实施例提供的一种PCIe拓扑的切换装置的结构示意图。
具体实施方式
本申请说明书和权利要求书及附图说明中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于限定特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
为了下述各实施例的描述清楚简洁,首先给出相关技术术语的简要介绍:
PCIe是一种高速串行计算机扩展总线标准,主要用于扩充计算机系统总线数据吞吐量以及提高设备通信速度。属于高速串行点对点(P2P)双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽。
PCIe一般采用的树形拓扑结构,并不允许循环或其他复杂的拓扑结构,这样是为了保持与PCI软件的向后兼容性。
PCIe拓扑结构一般由根桥设备(Root Complex)、交换设备(Switch)以及PCIe设备组成(例如:GPU设备)。
其中,根桥设备(Root Complex),简称RC,是中央处理器(Central ProcessingUnit,CPU)和PCIe总线之间的接口。从广义上讲,RC可以理解为系统CPU和PCIe拓扑之间的接口,PCIe端口在配置空间中被标记为“根端口”。
其中,交换设备(Switch)是PCIe中最常见的设备类型之一,提供扩展或聚合能力,并允许更多的设备连接到一个PCIe端口。它们充当包路由器,根据地址或其他路由信息识别给定包需要走哪条路径。是一种PCIe转PCIe的桥,Switch通常用于连接多个设备,以便它们可以共享PCIe总线的带宽。
针对服务器中的CPU和PCIe设备互联形式,一般常用两种PCIe拓扑:均衡模式(Balance Mode)和级联模式(Cascade Mode)。
均衡模式,也可以称为双根模式(Dual-root configuration,双root模式),在均衡模式下每个CPU连接的Switch下的PCIe设备数(PCIe设备接口数)相同,PCIe设备从所属的CPU的中央处理器栈(CPU Stack)申请资源。其中,CPU栈用于管理内存资源、处理器资源等。
级联模式,也可以称为单根模式(Single-Root Mode,单root模式),在级联模式下所有PCIe设备均通过Switch连接在一个CPU下,所有PCIe设备均从该一个CPU的中央处理器栈申请资源。
除此之外,还包括一种PCIe拓扑为通用模式(Common Mode),在通用模式中,所有的PCIe设备都直接连接到根桥设备(Root Complex)上,即所有PCIe设备直接连接到一个CPU上,而级联模式中,所有PCIe设备都通过Switch连接到一个CPU上。即通用模式下,每个PCIe设备都会对应占用一个PCIe接口(PCIe Port);级联模式下,所有PCIe设备通过Switch占用一个PCIe接口。由此可知,通用模式PCIe拓扑与级联模式PCIe拓扑处理能力相近,但是通用模式PCIe拓扑会多占用PCIe接口资源,所以实际应用中一般很少使用通用模式PCIe拓扑。
多路选择器(Multiplexer,MUX)是一种组合逻辑电路,它可以将多个信号输入组合成一个信号输出,也可以将一个信号输入分解成多个信号输出。MUX的功能是在一个信号线上传输多路信号,可以根据控制信号的不同,把多个信号源中的一个信号源的信号选择出来,并输出到一个信号线上。
平台配置数据库(Platform Configuration Database,PCD)是一个存放了UEFI下可访问数据的数据库。PCD是EDK2用来全局配置的机制,在代码复用、模块化方面发挥了巨大的作用。PCD是把代码里面的可配置选项抽取出来,Platform需要修改的时候,可以不用去修改源代码。其参数的配置,可以在编译过程中、运行过程中都可以进行,甚至在二进制文件中也可以配置。
统一的可扩展固件接口(Unified Extensible Firmware Interface,UEFI)是操作系统和平台固件之间的接口的一种模型。UEFI它更容易实现,容错和纠错特性也更强,能够缩短了系统研发的时间。
下面结合相关的PCIe拓扑切换方法,对比说明本申请提供的一种PCIe拓扑的设置方法的优势。
在一种相关的PCIe拓扑切换技术中,通过直接开箱进行线缆切换改变配置的方式达到PCIe拓扑切换的目的,例如:手动进行拔插线缆实现PCIe拓扑的切换。这种实现方式无法实现PCIe拓扑的自动切换,对与时间的消耗和人力的消耗是极大的,并且在面临紧急切换需求的情况下,无法及时实现PCIe拓扑的切换。
为了实现PCIe拓扑的自动切换,当前技术中一般通过基板管理控制器(BaseboardManager Controller,简称BMC)等带外控制器发布命令/指令等信息,来实现PCIe拓扑的切换。
下面结合图1和图2,简单介绍一下当前技术中常见的两种的PCIe拓扑切换方式。
在一种现有技术中,如图1所示现有技术中的一种拓扑装置,CPU板上安装有第一CPU、第二CPU和BMC,GPU板上安装有第一组GPU和第二组GPU(需要说明的是,第一组GPU和第二组GPU都以4个GPU为例)。第一组GPU的上行链路通过第一PCIe Switch连接到第一CPU;第二组GPU的上行链路通过第二PCIe Switch,利用MUX经不同上行路径连接至第一CPU或第二CPU。具体的,BMC接收来自远程计算机发送的链路切换指令,BMC将该链路切换指令通过I2C总线透传给MUX,MUX根据链路切换指令切换第二PCIe Switch通过MUX连接CPU的上行路径。该方法完全依赖于BMC,仅能通过BMC进行带外PCIe拓扑切换,必须响应于BMC接收到链路切换指令才实现PCIe拓扑切换。综上所述,在现有技术中,包括如图1所示的拓扑装置的服务器(电子设备),只能响应于BMC接收到链路切换指令后被动实现PCIe拓扑切换,无法主动实现PCIe拓扑切换。并且在该现有技术下,当BMC出现故障无法使用的情况下,该现有技术无法实现PCIe拓扑切换。进一步该现有技术中必须依赖人工干预进行PCIe拓扑切换,例如:需要人工通过远程计算机向BMC发送链路切换指令后,现有技术才能够基于该链路切换指令实现PCIe拓扑切换。
进一步,在该现有技术中,会预先滞留出一个x16的PCIe总线接口(x16 port),因为PCIe Port资源有限,会造成PCIe Port资源的浪费。
在另一种现有技术中,如图2所示现有技术中的一种动态切换CPU与GPU拓扑的装置,包括:设置模块、局域交换模块、BMC、CPU模块、GPU模块,BMC应用于CPU模块,设置模块通过TCP或者IP协议与局域交换模块连接;局域交换模块与CPU模块连接;BMC与PCIE交换机单元的主交换机通过I2C连接。其中CPU模块包括第一CPU、第二CPU、第一CPU对应的第一CPU端子A、第一CPU端子B,第二CPU对应的第二CPU端子。GPU模块包括第一GPU端子、第二GPU端子、第三GPU端子、PCIE交换机单元及PCIE总线单元。PCIE交换机单元包括主交换机、第一交换机及第二交换机。具体的,BMC控制主交换机进行判断,主交换机识别上行信号的发出端确定对应的PCIe拓扑模式,并执行将当前的PCIe拓扑模式切换为对应的PCIe拓扑模式,即必须基于BMC的控制,主交换机进行PCIe拓扑模式的识别,从而实现PCIe拓扑的切换,只能被动执行PCIe拓扑的切换,无法主动实现PCIe拓扑的切换。并且在该现有技术中,当BMC出现故障无法使用的情况下,该现有技术则无法实现PCIe拓扑切换。
进一步地,在该现有技术中,分别在CPU侧和GPU侧都设置了信号端子,消耗了较多的硬件资源,硬件成本增加。在CPU侧至少需要设置三个信号端子,导致该方法在通用服务器上的可实施性较弱;并且该方法预先设计对应的类别标识码,该定义的类别标识码不一定适用于其他服务器,所以即该方法的适用范围较小。
综上所述,当前技术中的PCIe拓扑切换的方法,必须依赖于BMC等带外控制器来实现PCIe拓扑的切换,只能通过带外的方式进行PCIe拓扑切换,具体的,通过BMC透传被动进行PCIe拓扑切换,并不支持PCIe拓扑的主动切换。并且当前技术中当BMC出现故障的情况下,无法实现服务器的PCIe拓扑切换。当前技术中的PCIe拓扑切换方法的实施性较弱、应用适用范围较小,并且容错机制较差。本申请提供了一种PCIe拓扑切换系统,利用基本输入输出系统BIOS自身的检测功能,当CPU出现故障时,能够主动切换PCIe拓扑,并且不完全依赖于BMC即可实现PCIe拓扑的切换。除此之外在能够通过BMC实现带外机制的PCIe拓扑切换的同时,可通过BIOS配置界面实现带内机制的PCIe拓扑切换,不完全依赖于BMC来实现服务器的PCIe切换,避免了由于BMC出现故障而无法实现PCIe拓扑切换的情况,容错机制较为完善。
进一步,基于本申请提供的一种PCIe拓扑切换系统,通过预设GPIO的输出电平值来传输PCIe拓扑模式的标识,不需要新增信号端子,减少了硬件的成本;并且不需要预先滞留出一个x16的PCIe总线接口,避免造成PCIe Port资源的浪费。进一步,在软件方面,通过通用协议(IPMI协议、Local Bus等)即可实现通信,通信成本更低、信息传输更便捷。
进一步,通过预设GPIO的输出电平值来传输PCIe拓扑模式的标识,就可以实现PCIe拓扑的加载和切换,不需要预先设计对应的类别标识码,能够应用于其他通用服务器装置,应用范围更广泛。
为了便于理解本申请的技术方案,下面首先结合图3,对本申请实施例提供的一种PCIe拓扑切换系统进行介绍。
请参阅图3,本发明实施例提供的一种PCIe拓扑切换系统,包括主板10和交换板20(Switch板)。
其中,主板10上包括:第一CPU、第二CPU、BIOS芯片、带外控制器以及可编程逻辑器件(CPLD)。
具体的,第一CPU和第二CPU通过总线连接,并且第一CPU为主CPU。带外控制器通过IPMI总线与BIOS芯片连接,带外控制器通过基础总线(Local Bus)与可编程逻辑器件连接。
其中,CPU(中央处理器,central processing unit)是服务器系统的运算和控制核心,是信息处理、程序运行的最终执行单元。
需要说明的是,在本申请实施例中,主板10上设置有第一CPU和第二CPU,并且第一CPU和第二CPU之间通过一个或多个总线彼此耦合,共同构成处理器组。除此之外主板10上还可以存在一个CPU或者两个以上的更多数量CPU,本申请对主板10上的CPU数量设置不做具体限定。
其中,带外控制器是独立于CPU之外的管理部件,可以通过专用的数据通道对服务器进行远程维护和管理,并且能够通过服务器的带外管理接口与CPU进行通信。示例性的,带外控制器可以是服务器外部的监控管理单元、处理器外的处理器外的管理芯片中的管理系统、基板管理控制器(baseboard management controller,BMC)、系统管理模块(systemmanagement mode,SMM)等。需要说明的,本申请实施例对带外控制器的具体形式并不限定,以上仅为示例性说明。在下述实施例中,仅以带外控制器为BMC为例进行说明。
以BMC作为带外控制器的一个示例,在本申请实施例中BMC可以通过专用的数据通道对主板10进行远程维护和管理,并且能够通过带外管理接口与第一CPU、第二CPU进行通信。
其中,BIOS芯片是用于存储BIOS程序的一块特定的ROM芯片。BIOS(Basic InputOutput System,基本输入输出系统)是一组固化到服务器内主板上ROM芯片上的程序,BIOS保存着服务器最重要的基本输入输出的程序,还包括开机后自检程序和系统自启动程序。BIOS其主要功能是为服务器提供最底层的、最直接的硬件设置和控制。进一步,BIOS是服务器上电后,先于操作系统(operating system,OS)运行的。即BIOS提供了初始化芯片、PCIe设备资源分配以及引导启动服务器的功能。
其中,ROM芯片是一个实体物品,本质就是一个储存器,是主板上一颗小小的快闪EEPROM内存模块板中的长方形或正方形芯片,这一类芯片可以存储BIOS程序。除此之外,ROM芯片也可以存储其它程序、代码。
需要说明的是,BIOS和OS隶属服务器的软件层面,并未在图3中示出。
可编程逻辑器件(Complex Programming logic device,CPLD)是一种高密度、高速度、低功耗的可编程逻辑器件。是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。
在主板10还可以设置有至少一个预设GPIO(图3中未示出)来指示当前服务器的PCIe拓扑模式。GPIO(General Purpose Input Output,通用输入输出),也可以简称为IO口。该预设GPIO通过其本身的输出电平值来表示级联模式和均衡模式。GPIO是由引脚、硬件寄存器组成,不同的框架中的GPIO封装不同,所使用的引脚和硬件寄存器数不同。
需要说明的是,预设GPIO的数量可以根据实际情况来设定。例如:通过一个预设GPIO的输出电平值来指示级联模式和均衡模式,可以是预设GPIO的输出电平值为1指示均衡模式,预设GPIO的输出电平值为0指示级联模式。当然也可以通过两个预设GPIO的输出电平值来指示级联模式和均衡模式。例如,可以是通过两个预设GPIO的输出电平值均为1来指示均衡模式,两个预设GPIO的输出电平值均为0来指示级联模式,本申请对于所选用的用于指示PCIe拓扑模式的预设GPIO的数量以及输出电平值的指示方式均不做具体限定。为便于理解,在下述实施例中,以设置一个GPIO,并且预设GPIO的输出电平值为1指示均衡模式,预设GPIO的输出电平值为0指示级联模式为例进行说明。
如图3中所示,交换板20上包括:信号连接器、第一交换设备、第二交换设备。
具体的,第一交换设备和第二交换设备分别连接到信号连接器。
信号连接器实际上是一块小电路板,并且该电路板上固化有CPLD,使得信号连接器上的CPLD与主板10上的CPLD能够进行信号传递,使得信号连接器能够读到主板10上设置的预设GPIO的输出电平值。
具体的,为了信号连接器能够读取到主板10上设置的预设GPIO的输出电平值,对应设置了至少一个GPIO(图3中未示出),用于与主板10上至少一个的预设GPIO分别连接,从而可以获取主板10上的预设GPIO的输出电平值。
在一种可能的实现方式中,信号连接器上的CPLD可以通过设置至少一个SGPIO接口读写主板10上的预设GPIO的输出电平值。其中,SGPIO接口是例化GPIO得到的,是一种基于SGPIO协议的通信接口。SGPIO(Serial General Purpose Input/Output)协议是一种用于串行通信的协议,主要用于连接服务器主板和外部设备之间的输入输出控制。
示例性的,信号连接器读取主板10上的预设GPIO的输出电平值后,能够确定对应的PCIe拓扑模式,信号连接器能够起到一个通断器的作用。当确定PCIe拓扑模式为级联模式时,则信号连接器接通,使得第二交换设备接到第一交换设备上,以便于后续实现级联模式;当确定PCIe拓扑模式为均衡模式时,则信号连接器断开,以便于后续实现第一交换设备和第二交换设备分别于第一CPU和第二CPU连接,进一步实现均衡模式。
进一步,信号连接器还能够检测第一交换设备和第二交换设备的在位情况,判断第一交换设备和第二交换设备是否能够正常使用。
其中,第一交换设备和第二交换设备结构相同。在第一交换设备和第二交换设备出厂时,第一交换设备的芯片和第二交换设备的芯片分别烧录有支持级联模式的第一固件和支持均衡模式的第二固件。其中,固件(Firmware,FW)是一种嵌入在硬件设备中的软件,通常它是位于专用集成电路(ASIC)或可编程逻辑器件(PLD)之中的闪存或EEPROM或PROM里。以第一交换设备为例,当第一交换设备加载第一固件,则会使得通过第一交换设备能够实现级联模式的PCIe拓扑;当第一交换设备加载第二固件,则会使得通过第一交换设备能够实现均衡模式的PCIe拓扑。
要指出的是,图3中示出的结构并不构成PCIe拓扑切换系统的限定,除图3所示部件之外,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如,PCIe拓扑切换系统还包括显示屏用于显示图像,视频等。显示屏包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organiclight-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode,AMOLED),柔性发光二极管(flexlight-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot light emitting diodes,QLED)等。在一些实施例中,服务器可以包括1个或N个显示屏,N为大于1的正整数。在本申请实施例中,显示屏主要用于显示BIOS配置界面、带外控制器的管理界面、配置项的BIOS设置界面等界面,进一步显示屏还用于显示当前服务器的故障信息、以及PCIe拓扑信息等。
需要说明的,本申请实施例描述的系统架构以及应用场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
实施例一:
下面结合图4-图6,详细介绍一下基于图3所示的PCIe拓扑切换系统,实现服务器上电过程。实施例一适用的场景是:假设主板10上的第一CPU和第二CPU不存在故障,即在服务器的上电自检过程中,未检测出故障。并且不存在被动切换PCIe拓扑的操作(例如:通过带外控制器来实现服务器的PCIe拓扑切换、通过BIOS来实现服务器的PCIe拓扑切换等)。其中,通过BIOS来实现服务器的PCIe拓扑切换,属于带内机制实现PCIe拓扑切换;通过带外控制器来实现服务器的PCIe拓扑切换,属于带外机制实现PCIe拓扑切换。
需要说明的是,服务器在上电启动之前(初始化之前),都存在预先配置的默认的PCIe拓扑模式。进一步,一般情况下,默认的PCIe拓扑模式为均衡模式,本申请并不对服务器预先设置的默认的PCIe拓扑模式进行限定。
其中,上电自检(Power On Self Test,POST)过程:是服务器接通电源后,并且启动服务器的上电过程后,服务器系统会进行一个自我检查的例行程序的过程。
在进行服务器上电过程之前,服务器的BIOS预先根据服务器配置两套PCIe设备树的定义,分别是级联模式的PCIe设备树和均衡模式的PCIe设备树,以便于后续服务器根据PCIe拓扑模式对应的PCIe设备树进行PCIe拓扑枚举。
其中,设备树是一种描述硬件设备的数据结构,使用一种结构化的文本格式来描述服务器系统中的硬件组件和它们之间的连接关系。PCIe设备是在服务器中电影与PCIe总线相关的硬件资源和配置信息。
具体的,预先设置的两套PCIe设备数,其实就是根据服务器预先设置的分别对应级联模式和级联模式的预设路径。
为了方便理解,下面举例进行介绍,以图3所示的PCIe拓扑切换系统为例,如图5A和图5B所示,其中图5A所示的为级联模式的PCIe拓扑树的一种代码实现方式,其中,“cpu1”表征第一CPU、“sw1 bridge”表征第一交换设备、“sw2 bridge”表征第二交换设备、“00.0”、“01.0”等表征交换设备的PCIe插口号。其中图5B所示的为级联模式的PCIe拓扑树的树形结构的示意图。如图5A所示的一种PCIe设备树的配置,级联模式对应的PCIe设备树可以表征第一CPU与第一交换设备连接、第一交换设备与第二交换设备连接;如图6A和图6B所示,其中图6A所示的为均衡模式的PCIe拓扑树的一种代码实现方式,其中“cpu1”表征第一CPU、“cpu2”表征第二CPU、“sw1 bridge”表征第一交换设备、“sw2bridge”表征第二交换设备、“00.0”、“01.0”等表征交换设备的PCIe插口号。其中图6A所示的为均衡模式的PCIe拓扑树的树形结构示意图。如图6A所示的又一种PCIe设备树的配置,均衡模式对应的PCIe设备树可以表征第一CPU与第一交换设备连接、第二CPU与第二交换设备连接。
在进行服务器上电过程之前,服务器的BIOS分别为级联模式和均衡模式配置对应的PCD数据,用于调整CPU的MMIO资源。
其中,MMIO(Memory mapping I/O,内存映射I/O),它是PCI规范的一部分,I/O设备被放置在内存空间而不是I/O空间。从处理器的角度看,内存映射I/O后系统设备访问起来和内存一样。即CPU访问外围PCIe设备就可以使用读写内存一样的汇编指令完成,简化了程序设计的难度和接口的复杂性。简单来说,MMIO就是通过将外围PCIe设备映射到内存空间,便于CPU的访问。
MMIO资源则是CPU为MMIO提供的存储地址空间的大小,即CPU中用于存储外围PCIe设备映射后的虚拟地址的内存空间的大小,可以将MMIO资源类比为内存池。分别为级联模式和均衡模式配置对应的PCD,用于调整CPU的MMIO资源,具体的,当BIOS获取并应用级联模式对应的PCD时,CPU为MMIO提供的存储地址空间较大;当BIOS获取并应用均衡模式对应的PCD时,CPU为MMIO提供的存储地址空间较小。由于PCIe拓扑为级联模式时,即所有外围PCIe设备都通过交换设备连接到一个CPU上,所以需要适配的MMIO内存空间,即需要适配较大的MMIO资源;而级联模式的PCIe拓扑相比均衡模式的PCIe拓扑,外围PCIe设备均衡配置到两个CPU上(在本申请中以两个CPU为例,并不对CPU的数量做具体限定),相比级联模式每个CPU需要适配的MMIO内存空间较小,即需要适配较小的MMIO资源。所以本申请中为级联模式和均衡模式配置对应的PCD,用于调整CPU的MMIO资源,避免后续两种PCIe拓扑模式都适配一种MMIO资源,即两种PCIe拓扑模式都适配相同的用于存储MMIO的内存空间,导致级联模式时,用于存储MMIO的内存空间不足,导致部分外围PCIe设备无法正常访问和运行。
S401、服务器上电启动。
具体的,服务器上电启动后,BIOS是服务器上电后先进行运行,待BIOS运行完成后,引导操作系统(operating system,OS)启动。
示例性的,服务器接通电源后,可以是响应于用户操作,服务器启动,开始执行初始化过程;也可以是服务器预先配置上电自启,即服务器接通电源后,服务器自动启动,开始执行初始化过程。
需要说明的是,在服务器出厂时或首次上电启动之前,会预先配置一个默认的PCIe拓扑。一般情况下,会将默认的PCIe拓扑模式设定为均衡模式。
S402、BIOS获取当前配置的拓扑标识。
其中,拓扑标识是通过预设GPIO的输出电平值来表示,在本申请实施例中,预设GPIO的输出电平值为1为均衡模式的拓扑标识、预设GPIO的输出电平值为0为级联模式的拓扑标识。预设GPIO采用常备电源供电即正常关机状态下该预设GPIO可以保持当前状态。
需要说明的是,当前配置的拓扑标识为预先设置的默认的PCIe拓扑模式对应的拓扑标识。
具体的,BIOS获取当前主板10上的预设GPIO的输出电平值,则获取当前配置的拓扑标识。
在一种可能的实现方式中,BIOS通过IPMI命令发送向BMC,BMC通过本地总线透传给CPLD获取当前配置的拓扑标识。
其中,IPMI(Intelligent Platform Management Interface,智能平台管理接口)是一种开放式的硬件管理协议,它提供了对服务器、存储和网络设备的远程管理和监控功能。BMC与BIOS芯片(即BIOS)之间的通信是基于IPMI实现的。
其中,本地总线(Local Bus),也可以称为系统总线,它允许数据在系统内部快速传输,以支持高效的系统操作。本地总线通常在一块主板上实现,应用于系统内部,使得系统中的各个硬件组件可以快速高效的通信。BMC与可编程逻辑器件之间的通信是基于本地总线实现的。
在另一种可能的实现方式中,BIOS直接通过向CPLD发送命令,获取当前配置的拓扑标识。
上述两种具体获取当前配置的拓扑标识的路径,BIOS向BMC通过IPMI命令发送向BMC,BMC通过本地总线透传给CPLD获取当前配置的拓扑标识的方式的优先级高于,BIOS直接通过向CPLD发送命令,获取当前配置的拓扑标识的方式的优先级。所以当BMC未出现故障(正常运行时),优先选择BIOS向BMC通过IPMI命令发送向BMC,BMC通过本地总线透传给CPLD的方式,获取当前配置的拓扑标识。因为BMC当前未配置主动获取CPLD和BIOS更新的配置的功能,通过该方式获取当前配置的拓扑标识,在服务器启动过程中,能够将当前配置的拓扑标识更新到BMC中,实现BMC中存储的配置信息与当前配置同步。
进一步,当BMC无法正常运行时(例如:BMC出现故障、BMC电源出现问题等),BIOS能够直接通过向CPLD发送命令获取当前配置的拓扑标识,避免当BMC无法正常运行时,无法正常加载拓扑模式。
S403、BIOS为第一CPU和第二CPU分配PCIe带宽。
该步骤是服务器上电启动过程中的必备步骤。为第一CPU和第二CPU分配的PCIe带宽主要是主板制造商在主板出厂之前预先设计完成的。在BIOS运行过程中,根据主板制造商预先设计的第一CPU和第二COU的PCIe带宽,自动完成PCIe带宽的分配。
S404、BIOS根据获取的拓扑标识,获取拓扑标识对应的PCD数据。
具体的,当拓扑标识指示当前配置的拓扑模式为级联模式,则获取级联模式对应的PCD数据;当拓扑标识指示当前配置的拓扑模式为均衡模式,则获取均衡模式对应的PCD数据。
S405、BIOS根据获取的拓扑标识对应的PCD数据,进行MMIO资源分配。
根据获取的拓扑标识,适配并应用对应的PCD数据,从而实现对第一CPU和第二CPU的MMIO资源的分配。即BIOS为CPU适配拓扑标识对应的MMIO资源,以便于后续为与该CPU连接的交换设备连接的外围PCIe设备提供适配的映射地址的存储内存空间。
在服务器上电启动之后,在BIOS实现S402-S405的同时,交换板20上的信号连接器上的可编程逻辑器件(CPLD)与主板10上的可编程逻辑器件(CPLD)进行信号传输。在服务器上电启动后,交换板20上可以进行处理步骤具体如S406-S407。
S406、通过信号连接器的CPLD与主板10的CPLD的通信,信号连接器获取当前配置的拓扑标识。
具体的,信号连接器的CPLD通过SGPIO接口读写主板10上的预设GPIO的输出电平值,获取当前配置的拓扑标识。
S407、交换设备根据当前配置的拓扑标识,加载拓扑模式对应的固件。
具体的,信号连接器通过SGPIO接口读主板10上的预设GPIO的输出电平值后,同时也会根据获取的预设GPIO的输出电平值,写信号连接器上的GPIO,交换设备主动读信号连接器上的GPIO的输出电平值,即可确定当前配置的拓扑模式,交换设备根据当前配置的拓扑模式加载对应的固件,从而完成拓扑模式配置操作。
进一步,在交换设备根据当前配置的拓扑标识,加载拓扑模式对应的固件之后,服务器物理层根据PCIe链路带宽分配情况进行PCIe链路训练,并正确与连接到交换设备的PCIe设备进行协商建立链路,此时,CPU已能够正常与PCIe设备通过PCIe Bus进行通讯。判断链路信息是否满足预设链路要求,即判断当前情况下的PCIe拓扑模式是否符合当前配置的拓扑模式,直到判断链路信息满足预设链路要求。以保证在PCIe枚举阶段能够正确按PCIe设备申请的资源进行地址映射。
S408、BIOS根据当前配置的拓扑标识对应的PCIe设备树,完成PCIe设备的枚举过程。
其中,PCIe设备的枚举过程是在服务器启动阶段后期的BDS(Boot DeviceSelection,启动设备选择)阶段进行。
具体的,根据当前配置的拓扑标识确定当前配置的拓扑模式,根据预先设定的拓扑模式对应的PCIe设备树,完成PCIe设备的枚举过程。
示例性的,当前配置的拓扑标识表征当前配置的拓扑模式为均衡模式,根据预先设定的均衡模式的PCIe设备树中的预设路径(DevPath)进行枚举扫描操作,为均衡模式的PCIe设备树中的预设路径匹配PCIe设备的设备信息。其中,设备信息可以是PCIe设备的PCIe芯片的生产厂商设计的丝印。
S409、BIOS按照SMBIOS规范填报PCIe设备的设备信息,并上报给BMC。
其中,SMBIOS(System Management BIOS)是主板或系统制造者以标准格式显示产品管理信息所需遵循的统一规范。
其中,PCIe设备是BIOS对PCIe设备的枚举过程中,匹配到的PCIe设备。
示例性的,按照SMBIOS标准将PCIe设备的详细信息写入BIOS中,将PCIe设备的设备信息写入内存中。并将填报完的设备信息上报给BMC,以便于BMC通过显示屏向用户显示PCIe设备的完整设备信息、拓扑模式等,使得用户可以直观感知当前在位的PCIe详细信息。
S410、BIOS引导操作系统启动。
本申请实施例中,通过预设GPIO的输出电平值来传输PCIe拓扑模式的标识,并且通过通用协议(IPMI协议、Local Bus等)进行通信即可,所以本申请实施例提供的方法和系统的通用性大大提升,使得应用范围更广泛。
进一步,通过预设GPIO的输出电平值来传输PCIe拓扑模式的标识,不需要新增设计特殊的传递指令,使得信号传递简洁,实用性和可实施性得到的大幅提升。即无需过多的软件设计和硬件设计即可实现PCIe拓扑标识的传输。
实施例二:
下面结合图7,详细介绍一种PCIe拓扑的切换方法,该方法基于图3所示的PCIe拓扑切换系统,实现服务器主动切换PCIe拓扑的过程。实施例二适用的场景是,假设不存在被动切换PCIe拓扑的操作(例如:通过带外方式修改服务器的PCIe拓扑模式、通过带内方式修改服务器的PCIe拓扑模式等)。
在进行服务器上电过程之前,服务器的BIOS预先根据服务器配置两套PCIe设备树的定义,分别是级联模式的PCIe设备树和均衡模式的PCIe设备树,以便于后续服务器根据PCIe拓扑模式对应的PCIe设备树进行PCIe拓扑枚举。以及分别为级联模式和均衡模式配置对应的PCD数据,用于调整CPU的MMIO资源。
S701、服务器上电启动。
具体的,服务器上电启动,即表征BIOS开始运行。
示例性的,响应于服务器上电启动,BIOS开始运行,开始执行BIOS芯片(芯片组)初始化过程。
S702、BIOS获取当前配置的拓扑标识。
具体的,BIOS读取预设GPIO的输出电平值,从而获取当前配置的拓扑标识。
S703、BIOS检测服务器中的CPU在位情况。
其中,BIOS具有自检功能,即上电自检(POST),能够对服务器系统进行自我检查。
其中,检测服务器中的CPU在位情况,可以理解为检测服务器中的服务器运行情况。示例性的,当检测到第一CPU正常在位,第二CPU未在位时,则说明当前服务器中仅有一个CPU能够正常运行;当检测到第一CPU正常在位,第二CPU出现故障,则说明服务器也仅有一个CPU能够正常运行;当检测到第一CPU正常在位,第二CPU正常在位时,则说明服务器中第一CPU和第二CPU都能够正常运行。
当服务器中的第一CPU和第二CPU都能够正常运行时,则直接进行S705。
当服务器仅存在一个CPU能够正常运行时,则进行S704。
S704、BIOS将PCIe拓扑模式切换为级联模式。
具体的,BIOS判断获取的拓扑标识是否表征当前配置的拓扑模式为级联模式,若当前配置的拓扑模式为级联模式时,则不需要进行切换,服务器上电过程与实施例一提供的上电过程相同;若当前配置的拓扑模式为均衡模式时,则BIOS需要将当前配置的拓扑模式切换为级联模式。
若当前配置的拓扑模式为均衡模式时,BIOS需要通过CPLD将预设GPIO的输出电平值设置为表征级联模式的输出电平值。
在一种可能的实现方式中,BMC未出现故障时(非正常运行时),BIOS通过IPMI命令向BMC发送切换命令,BMC通过本地总线透传给CPLD,去设置预设GPIO的输出电平值为表征级联模式的电平值,示例性的,将预设GPIO的输出电平值由1切换为0。在将PCIe拓扑模式切换为级联模式的同时,将更新后的级联模式对应的拓扑标识更新到BMC中,实现BMC中存储的配置信息与当前配置信息同步。
在另一种可能的实现方式中,BMC出现故障时(无法正常运行时),BIOS能够直接通过CPLD设置预设GPIO的输出电平值为表征级联模式的电平值,示例性的,将预设GPIO的输出电平值由1切换为0。避免当BMC无法正常运行时,无法正常切换拓扑模式。
需要说明的是,BMC是否出现故障(是否能够正常运行)在BIOS的上电自检过程中能够直接检测出现。
在一种可能的实现方式中,当BIOS检测到服务器仅存在一个CPU能够正常运行时,会将故障信息(例如:第二CPU未在位、第二CPU存在故障)上报给BMC,以便于BMC收集故障信息,并将故障信息向用户显示,以提示用户当前服务器具体的故障情况。示例性的,可以直接通过服务器本身的显示屏显示故障信息,也可以通过远端服务器或者网络页面向用户显示故障信息。
进一步,在BMC收集故障信息后,BMC还会根据收集到的故障信息进行故障告警,以快速提示用户服务器存在故障。
S705、BIOS为第一CPU和第二CPU分配PCIe带宽。
S706、BIOS根据级联模式对应的拓扑标识,获取级联模式对应的PCD数据。
S707、BIOS根据获取的级联模式对应的PCD数据,进行MMIO资源分配。
上述步骤S705-S707的具体实现方式与实施例一中的S403-S405相同,详情请参考实施例一中的S403-S405,在此不再赘述。
在服务器上电启动之后,在BIOS实现S701-S707的同时,交换板20上的信号连接器上的可编程逻辑器件(CPLD)与主板10上的可编程逻辑器件(CPLD)进行信号传输。在服务器上电启动后,交换板20上可以进行处理步骤具体如下。
在一种可能的实现方式中,当BIOS检测到服务器仅存在一个CPU能够正常运行时,并且默认的拓扑模式为级联模式时,不需要进行PCIe拓扑的切换,则与实施例一中的S406和S407的步骤相同。
在一种可能的实现方式中,当BIOS检测到服务器仅存在一个CPU能够正常运行时,并且默认的拓扑模式为均衡模式时,需要进行PCIe拓扑的切换,此时交换板20上同时进行的处理步骤具体如S708-S711。
S708、通过信号连接器的CPLD与主板10的CPLD的通信,信号连接器获取当前配置的拓扑标识。
需要说明的是,该步骤的时序位于进行拓扑模式切换之前,所以此时信号连接器获取的拓扑标识是切换前的拓扑模式的拓扑标识,即均衡模式对应的拓扑标识。
具体的,信号连接器的CPLD通过SGPIO接口读写主板10上的预设GPIO的电平值,获取当前配置的拓扑标识。
S709、交换设备根据当前配置的拓扑标识,加载均衡模式对应的固件。
当BIOS将PCIe拓扑模式切换为级联模式之后,进行S710。
S710、通过信号连接器的CPLD与主板10的CPLD的通信,信号连接器重新获取当前配置的拓扑标识。
具体的,当BIOS将PCIe拓扑模式切换为级联模式之后(即将预设GPIO的输出电平值设置为级联模式对应的输出电平值之后),BIOS生成读取指令,该读取指令用于指示信号连接器重新读取预设GPIO的输出电平值;响应于该读取指令,通过信号连接器重新获取当前配置的拓扑标识(即通过信号连接器重新读取预设GPIO的输出电平值)。
需要说明的是,该步骤的时序位于PCIe拓扑切换之后,所以此时信号连接器获取的拓扑标识是更新后的拓扑模式的拓扑标识,即级联模式对应的拓扑标识。
S711、交换设备根据当前配置的拓扑标识,重新加载级联模式对应的固件。
交换设备重新加载级联模式对应的固件后,实现了PCIe拓扑的主动切换。
S712、BIOS根据当前配置的拓扑标识对应的PCIe设备树,完成PCIe设备的枚举过程。
此时当前配置的拓扑标识为更新后的拓扑标识,即为级联模式的拓扑标识。
S713、BIOS按照SMBIOS规范填报PCIe设备的设备信息,并上报给BMC。
S714、BIOS引导操作系统启动。
上述步骤S712-S714的具体实现方式与实施例一中的S408-S410相同,详情请参考实施例一中的S408-S410,在此不再赘述。
本申请实施例中,当BIOS自检过程中出现服务器中仅有一个CPU能够正常运行的情况下,实现PCIe拓扑的自动切换。即当服务器中仅有一个CPU能够正常运行时,为了使得所有PCIe设备都能够正常运行,会将PCIe拓扑切换为级联模式,从而保证所有PCIe设备正常运行。即依赖于BIOS的上电自检功能,BIOS响应于服务器中仅存在一个CPU能够正常运行的检测结果,将PCIe拓扑切换为级联模式,实现了BIOS响应于服务器的故障情况,主动切换PCIe拓扑模式。既实现了PCIe拓扑的主动切换,也不再完全依赖于BMC实现PCIe拓扑切换。
进一步,需要说明的,如图7所示的流程涉及的是BIOS在上电自检过程中确定出CPU存在故障情况,此时进行PCIe拓扑切换的过程。即主要涉及的是在服务器的上电过程中,还未完成上电时,进行主动进行PCIe拓扑切换的情况。还存在另一种主动切换的情况,即在服务器上电完成后,BIOS根据自身的检测功能实时监控服务器内部硬件的情况,发现当前服务器中的第二CPU无法正常运行时,主动进行切换PCIe拓扑。此时具体步骤如图8所示。
S801、BIOS实时检测发现,服务器中仅存在一个CPU能够正常运行。
示例性的,BIOS实时检测服务器内部的硬件情况,出现了服务器从两个CPU都能够正常运行的情况变为仅存在一个CPU能够正常运行。
S802、BIOS将PCIe拓扑模式切换为级联模式。
具体的,BIOS将主板10上预设GPIO的输出电平值设置为级联模式对应的电平值,即将预设GPIO的输出电平值设置为0。
此时待预设GPIO的输出电平值设置完成时,由于服务器的上电已经完成了,此时无法实现主动PCIe拓扑的切换。
S803、BIOS控制服务器进行重新上电启动。
此时,若想要更新后的拓扑模式生效,需要对服务器进行重新启动,才能够实现以更新后的拓扑模式实现CPU与PCIe设备进行通信。
S804、BIOS获取当前配置的拓扑标识。
此时,当前配置的拓扑标识对应的拓扑模式为更新后的拓扑模式(即级联模式)。
S805、BIOS为第一CPU和第二CPU分配PCIe带宽。
S806、BIOS根据获取的拓扑标识,获取拓扑标识对应的PCD数据。
S807、BIOS根据获取的拓扑标识对应的PCD数据,进行MMIO资源分配。
在服务器上电启动之后,在BIOS实现S401-S405的同时,交换板20上的信号连接器上的可编程逻辑器件(CPLD)与主板10上的可编程逻辑器件(CPLD)进行信号传输。此时交换板20上同时进行的处理步骤具体如S808-S809。
S808、通过信号连接器的CPLD与主板10的CPLD的通信,信号连接器获取当前配置的拓扑标识。
具体的,响应于服务器的重新上电启动,通过信号连接器重新读取预设GPIO的输出电平值,确定当前配置的拓扑模式。
S809、交换设备根据当前配置的拓扑标识,加载拓扑模式对应的固件。
S810、BIOS根据当前配置的拓扑标识对应的PCIe设备树,完成PCIe设备的枚举过程。
S811、BIOS按照SMBIOS规范填报PCIe设备的设备信息,并上报给BMC。
S812、BIOS引导操作系统启动。
上述步骤S804-S812的具体实现方式与实施例一中的S402-S410相同,详情请参考实施例一中的S402-S410,在此不再赘述。
本申请实施例中,在服务器上启动完成后(也可以说是正常运行过程中),当BIOS自检过程中出现服务器中仅有一个CPU能够正常运行的情况下,结合服务器重新上电启动,实现PCIe拓扑的主动切换。既实现了PCIe拓扑的主动切换,也不再完全依赖于BMC实现PCIe拓扑切换,提高了PCIe拓扑方法的应用范围。并且容错机制得到极大的提高,能够主动检测出CPU的故障,从而主动实现PCIe拓扑的切换。
实施例三:
下面结合图9、图10A、图10B和图10C,详细介绍一种PCIe拓扑的切换方法,该方法基于图3所示的PCIe拓扑切换系统,实现通过带内机制切换PCIe拓扑的过程。实施例三适用的场景是通过带内机制进行PCIe拓扑切换,此时假设服务器内的第一CPU和第二CPU都能够正常运行。
S901、服务器启动并进入BIOS配置界面。
其中,服务器的BIOS提供了一种基于人机接口(human interfaceinfrastructure,HI I)的配置界面,也称为BIOS配置界面(BIOS Setup配置界面)。在本申请实施例中,预先在BIOS配置界面中新增有一键切换PCIe拓扑的切换选项,即提供了有关PCIe拓扑模式的两个选项,分别对应级联模式和均衡模式。
为了方便理解BIOS配置界面,下面结合图10A举例进行说明。
BIOS配置界面提供了多种配置选项,包括:主要信息、高级设置、安全选项、电源管理设置、离开选项等。
其中,主要信息中记录着服务器的主要信息,例如:时间和日期等。
其中,高级设置中包括多种配置项,如视频配置、南桥配置、系统事件日志、CPU相关设置等配置项。本申请实施例提供的一键切换PCIe拓扑的配置项位于CPU相关设置配置项下的IIO配置项。
其中,安全选项是与服务器的密码相关的配置。
其中,电源管理设置用于配置计算机的电源选项,以便在不同的工作环境下节省能源、提高性能和保护硬件。
其中,离开选项用于退出当前BIOS配置界面。
示例性的,用户在服务器的启动过程中或运行过程中,按下特定的按键/按键组合,可以进入BIOS配置界面。例如:用户按下Del键进入BIOS配置界面可以对各项设置进行配置。
S902、响应于用户在BIOS配置界面的拓扑模式配置操作,确定目标拓扑模式。
示例性的,用户可以基于BIOS配置界面的一键切换PCIe拓扑的配置项,设定目标拓扑模式。例如:用户通过按键进入BISO配置界面,在BIOS配置界面中选择所需要设定的PCIe拓扑模式,目标拓扑模式为用户选择的PCIe拓扑模式。
下面结合图10A-图10C,举例进行说明。
用户启动服务器并进入BIOS配置界面后,服务器的显示屏向用户显示如图10A所示的BIOS配置界面;用户可以通过鼠标选择高级设置项,服务器的显示屏向用户显示如图10B所示的BIOS配置界面;如图10B显示的BIOS配置界面所示,向用户展示了高级设置下的多种配置项,如图10B所示的视频配置、南桥配置、系统事件日志、CPU相关设置配置项,用户可以通过鼠标选择CPU相关设置的配置项,服务器的显示屏向用户显示如图10C所示的BIOS配置界面;此时基于如图10C所示的BIOS配置界面,用户根据需求从均衡模式与级联模式中,选择其中之一作为目标拓扑模式,当选择完成后用户可以通过鼠标点击保存,则选择的目标拓扑模式生效,完成目标拓扑模式的设定。
S903、BIOS响应于目标拓扑模式的设定,将PCIe拓扑模式设置为目标拓扑模式。
具体的,BIOS响应于目标拓扑模式的设定,设置拓扑标识为目标拓扑模式对应的标识。
示例性的,用户选择了目标拓扑模式后通过鼠标点击保存后,BIOS响应于保存操作,设置预设GPIO的输出电平值为目标拓扑模式对应的GPIO电平值。
进一步,BIOS将目标拓扑模式更新到BMC中,以便于保持BIOS与BMC的配置信息同步。
S904、BIOS完成目标拓扑模式的设置后,BIOS控制服务器进行重新上电启动。
通过带内机制进行PCIe拓扑切换,待目标拓扑模式设置完成后重新启动服务器,才能够实现以PCIe拓扑的切换,以实现目标拓扑模式实现CPU与PCIe设备进行通信。
S905、BIOS获取当前配置的拓扑标识。
S906、BIOS为第一CPU和第二CPU分配PCIe带宽。
S907、BIOS根据获取的拓扑标识,获取拓扑标识对应的PCD数据。
S908、BIOS根据获取的拓扑标识对应的PCD数据,进行MMIO资源分配。
在服务器上电启动之后,在BIOS实现S905-S908的同时,交换板20上的信号连接器上的可编程逻辑器件(CPLD)与主板10上的可编程逻辑器件(CPLD)进行信号传输。此时交换板20上同时进行的处理步骤具体如S909-S910。
S909、通过信号连接器的CPLD与主板10的CPLD的通信,信号连接器获取当前配置的拓扑标识。
S910、交换设备根据当前配置的拓扑标识,加载拓扑模式对应的固件。
S911、BIOS根据当前配置的拓扑标识对应的PCIe设备树,完成PCIe设备的枚举过程。
S912、BIOS按照SMBIOS规范填报PCIe设备的设备信息,并上报给BMC。
S913、BIOS引导操作系统启动。
上述步骤S904-S912的具体实现方式与实施例一中的S402-S410相同,详情请参考实施例一中的S402-S410,在此不再赘述。
在本申请实施例中,预先在BIOS配置界面新增有一键切换PCIe拓扑的配置项,通过BIOS配置界面实现带内机制的PCIe拓扑切换。由于本申请实施例中是依据交换板20上的信号连接器的CPLD和主板10的CPLD之间的通信,实现GPIO电平值的读写,从而实现PCIe拓扑模式的加载和切换,而交换板20上的信号连接器的CPLD和主板10的CPLD之间的通信是通用的通信链路,不需要带外模块/器件对信号连接器进行控制,即可实现PCIe拓扑的切换。所以通过带内机制实现预设GPIO的输出电平值的设置,即可实现带内机制的PCIe拓扑切换,不再完全依赖于BMC实现PCIe拓扑切换,避免了由于BMC出现故障无法实现PCIe拓扑切换的现象。
实施例四:
下面结合图11,详细介绍一下本申请实施例提供的一种PCIe拓扑的切换方法,该方法基于图3所示的PCIe拓扑切换系统,实现通过带外机制切换PCIe拓扑的过程。实施例四适用的场景是通过带外机制进行PCIe拓扑切换,此时假设服务器内的第一CPU和第二CPU都能够正常运行。
S1101、用户通过远程服务器设置目标拓扑模式。
示例性的,用户通过远程服务器设置目标拓扑模式,并生成有关目标拓扑模式的信号发送给BMC。
S1102、BMC接收到来自远程服务器发送的目标拓扑模式。
S1103、BMC根据目标拓扑模式,将PCIe拓扑模式设置为目标拓扑模式。
具体的,BMC根据目标拓扑模式,设置拓扑标识为目标拓扑模式对应的拓扑标识。
示例性的,BMC根据目标拓扑模式,通过CPLD将主板10上的预设GPIO的输出电平值设置为目标拓扑模式对应的GPIO电平值。以便于后续根据BMC设置的目标拓扑模式,进行PCIe拓扑的切换。
进一步,带外机制实现PCIe拓扑切换,S1101-S1103可以是在服务器上电启动之前,BMC具有单独的电源,只要BMC是处于电源接通状态即可完成将PCIe拓扑模式设置为目标拓扑模式,待目标拓扑模式设置完成后,进行服务器上电启动,从而实现PCIe拓扑的切换;还可以是在服务器启动过程中,此时当BMC将PCIe拓扑模式设置为目标拓扑模式后,BIOS会重新获取当前配置的拓扑标识、交换板20的信号连接器也会重新读主板10上的预设GPIO的输出电平值,从而实现PCIe拓扑的切换;还可以是在服务器正常运行过程中,此时当BMC将PCIe拓扑模式设置为目标拓扑模式后,BIOS会控制服务器重新上电启动(重启),从而实现PCIe拓扑的切换。
本申请实施例与其他实施例相结合,说明本申请提供的PCIe拓扑的切换方法,在实现带内机制的PCIe拓扑切换、主动PCIe拓扑切换的同时,仍然可以实现带外机制的PCIe拓扑切换。
实施例五:
下面结合图12,详细介绍一下本申请实施例提供的一种PCIe拓扑的切换方法。描述BIOS为主体执行的PCIe拓扑的切换方法。
S1201、服务器上电启动,指示BIOS执行服务器的芯片组初始化过程。
S1202、BIOS获取当前配置的拓扑标识。
BIOS获取的当前配置的拓扑标识存在多种情况,下面举例说明多种情况中的四种情况。
示例性的,当前配置的拓扑标识可以是默认的PCIe拓扑模式对应的拓扑标识。即用户并没有通过带内机制和带外机制进行PCIe拓扑的被动切换,故当前配置的拓扑标识并未切换,仍为默认的PCIe拓扑模式对应的拓扑标识。
示例性的,当前配置的拓扑标识可以是BMC接收用户通过远程服务器设定的目标拓扑模式对应的拓扑标识。即用户通过带外机制,利用远程服务器设定目标拓扑模式,BMC接收到远程服务器发送的目标拓扑模式,BMC根据目标拓扑模式将当前配置的拓扑标识设置为目标拓扑模式对应的拓扑标识。当BMC是在服务器上电启动之前,将当前配置的拓扑标识设置为目标拓扑模式对应的拓扑标识时,则直接执行服务器上电启动,BIOS获取当前配置的拓扑标识直接就是用户通过带外机制设置的目标拓扑模式对应的拓扑标识;当BMC是在服务器的启动过程中,将当前配置的拓扑标识设置为目标拓扑模式对应的拓扑标识时,则BIOS先获取默认拓扑模式对应的拓扑标识,待BMC设置完成后,BIOS再次获取目标拓扑模式对应的拓扑标识;当BMC在服务器运行中(完成启动之后),将当前配置的拓扑标识设置为目标拓扑模式对应的拓扑标识时,则BIOS控制服务器重新上电启动,BIOS获取的当前配置的拓扑标识直接为目标拓扑模式对应的拓扑标识。
示例性的,当前配置的拓扑标识可以是用户通过BIOS配置界面设定的目标拓扑模式。即用户通过带内机制,通过BIOS配置界面设定目标拓扑模式并保存,BIOS响应于保存操作,根据用户通过BIOS配置界面设定的目标拓扑模式,将当前配置的拓扑标识设置为目标拓扑模式对应的拓扑标识。当目标拓扑模式对应的拓扑标识设置完成后,BIOS控制服务器重新上电启动,BIOS获取的当前配置的拓扑标识直接为目标拓扑模式对应的拓扑标识。
S1203、BIOS检测服务器中的CPU在位情况。
当服务器仅存在一个CPU能够正常运行时,则进行S1204和S1205。
当服务器中两个CPU都能够正常运行时,则直接进行S1206。
S1204、BIOS将PCIe拓扑模式切换为级联模式。
示例性的,BIOS将当前配置的拓扑标识设置为级联模式对应的拓扑标识,与此同时,BIOS获取的当前配置的拓扑标识直接更新为级联模式对应的拓扑标识。
S1205、BIOS将故障信息上报给BMC。
BMC收集BIOS发送的故障信息,并向用户显示服务器的故障信息。
BMC收集BIOS发送的故障信息后,还会生成告警,以快速提示用户服务器存在故障。
需要说明的是,S1205和S1206可以是同步执行,也可以是异步执行,本申请不做具体限定。
S1206、BIOS为第一CPU和第二CPU分配PCIe带宽。
S1207、根据获取的当前配置的拓扑标识,确定PCIe拓扑模式。
当确定PCIe拓扑模式为级联模式,则进行S1208;当确定PCIe拓扑模式为均衡模式,则进行S1209。
S1208、获取级联模式对应的PCD数据,并基于级联模式对应的PCD数据,进行MMIO资源分配。
S1209、获取均衡模式对应的PCD数据,并基于均衡模式对应的PCD数据,进行MMIO资源分配。
在进行S1201后,在BIOS实现S1201-S1209的同时,主板10的CPLD同时与交换板20的信号连接器进行通信,以便于第一交换设备和第二交换设备根据PCIe拓扑模式实现固件的加载或切换。
具体的,通过信号连接器的CPLD与主板10的CPLD的通信,信号连接器获取当前配置的拓扑标识,交换设备根据当前配置的拓扑标识,加载/切换拓扑模式对应的固件。
待第一交换设备和第二交换设备根据PCIe拓扑模式完成固件的加载或切换之后,BIOS进行S1210。
S1210、BIOS完成PCIe设备的枚举过程
S1211、BIOS按照SMBIOS规范填报PCIe设备的设备信息,并上报给BMC。
BMC接收到按照SMBIOS规范填报的PCIe设备的设备信息后,向用户显示接收到PCIe设备的设备信息。以提示用户明确服务器当前的PCIe信息(例如:PCIe拓扑模式、PCIe设备连接情况、PCIe设备信息)。
S1212、BIOS引导操作系统启动。
进一步,当在S1201-S1212的过程中,响应于用户操作进入BIOS配置界面后,用户通过BIOS配置界面设定目标拓扑模式并保存后,BIOS响应于保存操作,会将当前配置的拓扑标识设置为目标拓扑模式对应的拓扑标识后,BIOS直接控制服务器重新上电启动。
进一步,示例性的,在S1201-S1212的过程中,主板的CPLD同时检测交换板20的第一交换设备和第二交换设备的在位情况;当第一交换设备和第二交换设备未均在位时,上报故障信息给BMC(例如:第一交换设备未在位等),BMC收集CPLD发送的故障信息,并向用户显示交换设备的故障信息。
本申请实施例提供的一种PCIe拓扑的切换方法,既能实现响应于用户设置,被动切换PCIe拓扑,也能够实现BIOS检测服务器中的CPU情况,从而实现主动切换PCIe拓扑。对于被动切换PCIe拓扑来说,不完全依赖于BMC的带外机制来实现PCIe拓扑切换,还可以通过BIOS配置界面的带内机制来实现PCIe拓扑切换。应用范围更广泛,并且当BMC出现故障无法使用的情况下,仍能够通过BIOS配置界面来实现PCIe拓扑的被动切换,避免了完全依赖BMC实现PCIe拓扑切换时,BMC故障导致无法实现PCIe拓扑切换的情况,容错机制高。
进一步,相比于现有技术来说,本申请实施例不需要多占用一个x16的PCIe Port资源,节省了资源浪费;并且本申请实施例不需要设置多个信号端子,导致硬件资源操作的浪费。故本申请实施例避免了资源浪费。
进一步,本申请实施例中的信号传递都使用行业内的IPMI、基本总线、SGPIO接口即可实现,成本更低,信息传递更便捷,并且通用性高,进一步提高了本申请实施例的应用范围。
实施例六:
下面结合图13,详细介绍一下本申请实施例提供的一种PCIe拓扑的切换方法。该方法应用于服务器,该服务器包括至少两个处理器,该方法包括如下步骤:
S1301、通过基本输入输出系统BIOS检测服务器的处理器的运行情况。
具体的,运行情况包括:服务器的处理器是否存在故障、处理器是否正常在位等。
在一种可能的实现方式中,响应于服务器的上电启动,通过基本输入输出系统BIOS进行上电自检,以实现在上电启动过程中,检测服务器的处理器的运行情况。
在另一种可能的实现方式中,在服务器的运行过程中,即服务器已经上电启动完成后,通过基本输入输出系统BIOS检测服务器的处理器的运行情况。
S1302、判断服务器的处理器中是否存在一个以上处理器正常运行。
当确定服务器的处理器中不存在一个以上的处理器正常运行,即确定服务器仅存在一个处理器正常运行时,则进行S1303。
当确定服务器的处理器中存在一个以上的处理器正常运行时,则进行S1304。
S1303、将预设GPIO的输出电平值设置为第一电平值。
其中,第一电平值表征服务器的PCIe拓扑模式为级联模式。
在一种可能的实现方式中,当确定服务器的处理器中仅存在一个处理器正常运行时,BIOS读取预设GPIO的输出电平值;当BIOS读取的预设GPIO的输出电平值,将预设GPIO的输出电平值设置为第一电平值。当BIOS读取的预设GPIO的输出电平值为第二电平值时,则表征当前服务器的PCIe拓扑模式为均衡模式,则需要将服务器的PCIe拓扑模式设置为级联模式,保证当处理器存在故障时,PCIe设备仍可以正常工作。
进一步,当BIOS读取的预设GPIO的输出电平值为第一电平值时,则保持预设GPIO的输出电平值为第一电平值。
在一种可能的实现方式中,BIOS通过带外控制器BMC,控制服务器的可编程逻辑器件CPLD将预设GPIO的输出电平值设置为第一电平值;或BIOS直接控制服务器的可编程逻辑器件CPLD将预设GPIO的输出电平值设置为第一电平值。避免当BMC存在故障无法使用时,无法实现PCIe拓扑的切换。
进一步,当确定服务器中仅存在一个处理器正常运行时,则表征服务器存在故障处理器,则BIOS将服务器的故障信息上报给带外控制器BMC,以便于BMC显示故障信息,从而提示用户当前服务器的处理器的故障情况。
S1304、将预设GPIO的输出电平值设置为第二电平值。
其中,第二电平值表征服务器的PCIe拓扑模式为均衡模式。
在一种可能的实现方式中,当确定服务器的处理器中存在一个以上处理器正常运行时,BIOS读取预设GPIO的输出电平值;当BIOS读取的预设GPIO的输出电平值为第一电平值时,将预设GPIO的输出电平值设置为第二电平值。预设GPIO的输出电平值为第一电平值表征当前服务器的PCIe拓扑模式为级联模式,当服务器中的处理器中存在一个以上的处理器能够正常运行时,则可以将PCIe拓扑模式切换为均衡模式,故将服务器的PCIe拓扑模式设置为均衡模式,能够保持更好的处理性能。
进一步,当BIOS读取的预设GPIO的输出电平值为第二电平值时,则保持预设GPIO的输出电平值为第二电平值。
在一种可能的实现方式中,BIOS通过带外控制器BMC,控制服务器的可编程逻辑器件CPLD将预设GPIO的输出电平值设置为第二电平值;或BIOS直接控制服务器的可编程逻辑器件CPLD将预设GPIO的输出电平值设置为第二电平值。避免当BMC存在故障无法使用时,无法实现PCIe拓扑的切换。
S1305、通过信号连接器读取预设GPIO的输出电平值,确定服务器的PCIe拓扑模式,以指示至少两个交换设备加载与PCIe拓扑模式对应的固件,以实现服务器的PCIe拓扑模式的切换。
在一种可能的实现方式中,当在服务器的上电启动过程中,基于上电自检得到的服务器的处理器的运行情况,设置预设GPIO的输出电平值时,在S1305之前,还包括:BIOS生成读取指令;读取指令用于指示信号连接器重新读取预设GPIO的输出电平值;响应于读取指令,通过信号连接器重新读取预设GPIO的输出电平值,确定服务器的PCIe拓扑模式。
在另一种可能的实现方式中,当在服务器的运行过程中,检测得到的服务器的处理器的运行情况,设置预设GPIO的输出电平值时,在S1305之前,包括:通过BIOS重新启动所述服务器;响应于服务器的重新启动,通过信号连接器重新读取预设GPIO的输出电平值,确定PCIe拓扑模式为级联模式。
进一步,还可以通过BIOS配置界面实现服务器的PCIe拓扑的切换,具体的:在服务器正常运行过程中,BIOS接收到用户基于BIOS配置界面输入的PCIe拓扑模式的配置操作;响应于PCIe拓扑模式的配置操作,确定目标拓扑模式;将预设GPIO的电平值设置为目标拓扑模式对应的电平值;通过BIOS重新启动所述服务器;响应于服务器的重新启动,通过信号连接器读取预设GPIO的输出电平值,确定PCIe拓扑模式为目标拓扑模式,以指示至少两个交换设备加载目标拓扑模式对应的固件,以实现所述服务器的PCIe拓扑模式的切换。
本申请提供了一种PCIe拓扑的切换方法,通过服务器的基本输入输出系统BIOS检测服务器的处理器的运行情况;当服务器的处理器中仅存在一个处理器正常运行时,则将预设GPIO的输出电平值设置为第一电平值,第一电平值表征服务器的PCIe拓扑模式为级联模式;当服务器的处理器中存在一个以上的处理器正常运行时,则将预设GPIO的输出电平值设置为第二电平值,第二电平值表征服务器的PCIe拓扑模式为均衡模式,以便于基于GPIO的输出电平值实现PCIe拓扑的切换。当BIOS确定服务器中仅存在一个处理器正常运行时,主动将GPIO的输出电平值设置为第一电平值,即主动切换PCIe拓扑模式为级联模式,或当BIOS确定服务器中存在一个以上处理器正常运行时,主动将GPIO的输出电平值设置为第二电平值,即主动切换PCIe拓扑模式为均衡模式,本申请实施例实现了PCIe拓扑的主动切换,并且不再依赖于BMC实现PCIe拓扑的切换。
进一步,本申请提供的一种PCIe拓扑的切换方法,在服务器的运行过程中,BIOS接收到用户基于BIOS配置界面输入的PCIe拓扑模式的配置操作,并确定目标拓扑模式,将预设GPIO的电平值设置为目标拓扑模式对应的电平值,以便于基于预设GPIO的输出电平值实现PCIe拓扑的切换。本申请可以通过BIOS配置界面实现带内机制的PCIe拓扑被动切换,即响应于用户操作实现PCIe拓扑的切换,不完全依赖于BMC来实现服务器的PCIe切换,避免了由于BMC出现故障而无法实现PCIe拓扑切换的情况。
实施例七:
下面结合图14,详细介绍一下本申请实施例提供的一种PCIe拓扑的切换装置,该装置应用于服务器,该装置包括:
运行检测模块1410,用于通过基本输入输出系统BIOS检测服务器的处理器的运行情况;
运行判断模块1420,用于判断服务器的处理器中是否存在一个以上处理器正常运行;
电平设置模块1430,包括第一电平设置模块1431和第二电平设置模块1432。
其中,第一电平设置模块1431,用于当确定服务器仅存在一个处理器正常运行时,将预设GPIO的输出电平值设置为第一电平值;第二电平设置模块1432,用于当确定服务器存在一个以上处理器正常运行时,将预设GPIO的输出电平值设置为第二电平值;
固件加载模块1440,用于通过信号连接器读取预设GPIO的输出电平值,确定服务器的PCIe拓扑模式,以指示至少两个交换设备加载与PCIe拓扑模式对应的固件,以实现服务器的PCIe拓扑模式的切换。
进一步,第一电平设置模块1431,具体用于当确定服务器的处理器中仅存在一个处理器正常运行时,BIOS读取预设GPIO的输出电平值;当BIOS读取的预设GPIO的输出电平值为第二电平值时,将预设GPIO的输出电平值设置为第一电平值。第二电平设置模块1432,具体用于当确定服务器的处理器中存在一个以上处理器正常运行时,BIOS读取预设GPIO的输出电平值;当BIOS读取的预设GPIO的输出电平值为第一电平值时,将预设GPIO的输出电平值设置为第二电平值。
进一步,运行检测模块1410,具体用于响应于服务器的上电启动,通过基本输入输出系统BIOS进行上电自检,以实现在上电启动过程中,检测服务器的处理器的运行情况。
当运行检测模块1410在服务器上电启动过程中,检测服务器的处理器的运行情况,该装置还包括:读取指令生成模块,用于BIOS生成读取指令;读取指令用于指示信号连接器重新读取预设GPIO的输出电平值;固件加载模块1440,具体用于响应于读取指令,通过信号连接器重新读取预设GPIO的输出电平值,确定服务器的PCIe拓扑模式。
进一步,运行检测模块1410,具体用于在服务器的运行过程中,通过基本输入输出系统BIOS检测服务器的处理器的运行情况。
当运行检测模块1410在服务器运行过程中,检测服务器的处理器的运行情况,该装置还包括:服务器重启模块,用于通过BIOS重新启动服务器;固件加载模块1440,具体用于响应于服务器的重新启动,通过信号连接器重新读取预设GPIO的输出电平值,确定服务器的PCIe拓扑模式。
进一步,第一电平设置模块1431,具体用于当确定服务器仅存在一个处理器正常运行时,BIOS通过带外控制器BMC,控制服务器的可编程逻辑器件CPLD将预设GPIO的输出电平值设置为第一电平值;第二电平设置模块1432,具体用于当确定服务器存在一个以上处理器正常运行时,BIOS通过带外控制器BMC,控制服务器的可编程逻辑器件CPLD将预设GPIO的输出电平值设置为第二电平值。
进一步,第一电平设置模块1431,具体用于当确定服务器仅存在一个处理器正常运行时,BIOS直接控制服务器的可编程逻辑器件CPLD,将预设GPIO的输出电平值设置为第一电平值;第二电平设置模块1432,具体用于当确定服务器存在一个以上处理器正常运行时,BIOS直接控制服务器的可编程逻辑器件CPLD,将预设GPIO的输出电平值设置为第二电平值。
进一步,该装置还包括:电平保持模块;电平保持模块包括:第一电平保持模块和第二电平保持模块。第一电平保持模块,用于当BIOS读取的预设GPIO的输出电平值为第一电平值时,保持预设GPIO的输出电平值为第一电平值;第二电平保持模块,用于当BIOS读取的预设GPIO的输出电平值为第二电平值时,保持预设GPIO的输出电平值为第二电平值。
进一步,该装置还包括:故障上报模块,用于当确定服务器中仅存在一个处理器正常运行时,BIOS将服务器的故障信息上报给带外控制器BMC,以便于BMC显示故障信息。
进一步,该装置还包括:界面配置模块,用于在服务器正常运行过程中,BIOS接收到用户基于BIOS配置界面输入的PCIe拓扑模式的配置操作;响应于PCIe拓扑模式的配置操作,确定目标拓扑模式;将预设GPIO的电平值设置为目标拓扑模式对应的电平值。
进一步,服务器重启模块,用于通过BIOS重新启动服务器;固件加载模块1440,还用于响应于服务器的重新启动,通过信号连接器读取预设GPIO的输出电平值,确定PCIe拓扑模式为目标拓扑模式,以指示至少两个交换设备加载目标拓扑模式对应的固件,以实现服务器的PCIe拓扑模式的切换。
本申请实施例提供了一种PCIe拓扑的切换装置,包括:运行检测模块1410,用于通过基本输入输出系统BIOS检测服务器的处理器的运行情况;运行判断模块1420,用于判断服务器的处理器中是否存在一个以上处理器正常运行;电平设置模块1430,包括第一电平设置模块1431和第二电平设置模块1432;第一电平设置模块1431,用于当确定服务器仅存在一个处理器正常运行时,将预设GPIO的输出电平值设置为第一电平值;第二电平设置模块1432,用于当确定服务器存在一个以上处理器正常运行时,将预设GPIO的输出电平值设置为第二电平值;固件加载模块1440,用于通过信号连接器读取预设GPIO的输出电平值,确定服务器的PCIe拓扑模式,以指示至少两个交换设备加载与PCIe拓扑模式对应的固件,以实现服务器的PCIe拓扑模式的切换。当BIOS确定服务器中仅存在一个处理器正常运行时,主动将GPIO的输出电平值设置为第一电平值,即主动切换PCIe拓扑模式为级联模式,或当BIOS确定服务器中存在一个以上处理器正常运行时,主动将GPIO的输出电平值设置为第二电平值,即主动切换PCIe拓扑模式为均衡模式,本申请实施例实现了PCIe拓扑的主动切换,并且不再依赖于BMC实现PCIe拓扑的切换。
进一步,可以通过BIOS配置界面实现带内机制的PCIe拓扑被动切换,即响应于用户操作实现PCIe拓扑的切换,不完全依赖于BMC来实现服务器的PCIe切换,避免了由于BMC出现故障而无法实现PCIe拓扑被动切换的情况。
本申请实施例还提供了一种服务器,该服务器包括处理器和存储器,处理器与存储器连接,存储器存储有计算机执行指令,处理器执行该计算机执行指令时实现上述实施例中的PCIe拓扑的切换方法。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当该计算机程序在计算机上运行时,使得该计算机执行上述实施例中的PCIe拓扑的切换方法。
关于上述提供的任一种计算机可读存储介质中相关内容的解释及有益效果的描述,均可以参考上述对应的实施例,此处不再赘述。
本申请实施例还提供了一种芯片。该芯片中集成了用于实现上述服务器的功能的控制电路和一个或者多个端口。可选的,该芯片支持的功能可以参考上文,此处不再赘述。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可通过程序来指令相关的硬件完成。所述的程序可以存储于一种计算机可读存储介质中。上述提到的存储介质可以是只读存储器,随机接入存储器等。上述处理单元或处理器可以是中央处理器,通用处理器、特定集成电路(application specific integrated circuit,ASIC)、微处理器(digital signal processor,DSP),现场可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。
本申请实施例还提供了一种包含指令的计算机程序产品,当该指令在计算机上运行时,使得计算机执行上述实施例中的任意一种方法。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如SSD)等。
应注意,本申请实施例提供的上述用于存储计算机指令或者计算机程序的器件,例如但不限于,上述存储器、计算机可读存储介质和通信芯片等,均具有非易失性(non-transitory)。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (14)

1.一种PCIe拓扑的切换方法,其特征在于,应用于服务器,所述服务器包括至少两个处理器,所述方法包括:
通过基本输入输出系统BIOS检测所述服务器的处理器的运行情况;
当确定所述服务器的处理器中仅存在一个处理器正常运行时,将预设GPIO的输出电平值设置为第一电平值;所述第一电平值表征所述服务器的PCIe拓扑模式为级联模式;
当确定所述服务器的处理器中存在一个以上处理器正常运行时,将预设GPIO的输出电平值设置为第二电平值;所述第二电平值表征所述服务器的PCIe拓扑模式为均衡模式。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过信号连接器读取所述预设GPIO的输出电平值,确定所述服务器的PCIe拓扑模式,以指示至少两个交换设备加载与所述PCIe拓扑模式对应的固件,以实现所述服务器的PCIe拓扑模式的切换。
3.根据权利要求2所述的方法,其特征在于,所述当确定所述服务器的处理器中仅存在一个处理器正常运行时,将预设GPIO的输出电平值设置为第一电平值,包括:
当确定所述服务器的处理器中仅存在一个处理器正常运行时,所述BIOS读取预设GPIO的输出电平值;
当所述BIOS读取的所述预设GPIO的输出电平值为第二电平值时,将所述预设GPIO的输出电平值设置为第一电平值;
所述当确定所述服务器的处理器中存在一个以上处理器正常运行时,将预设GPIO的输出电平值设置为第二电平值,包括:
当确定所述服务器的处理器中存在一个以上处理器正常运行时,所述BIOS读取预设GPIO的输出电平值;
当所述BIOS读取的所述预设GPIO的输出电平值为第一电平值时,将所述预设GPIO的输出电平值设置为第二电平值。
4.根据权利要求3所述的方法,其特征在于,所述通过基本输入输出系统BIOS检测所述服务器的处理器的运行情况,包括:
响应于所述服务器的上电启动,通过基本输入输出系统BIOS进行上电自检,以实现在上电启动过程中,检测所述服务器的处理器的运行情况。
5.根据权利要求4所述的方法,其特征在于,在所述通过信号连接器读取所述预设GPIO的输出电平值之前,所述方法还包括:
所述BIOS生成读取指令;所述读取指令用于指示所述信号连接器重新读取所述预设GPIO的输出电平值;
所述通过信号连接器读取所述预设GPIO的输出电平值,确定所述服务器的PCIe拓扑模式包括:
响应于所述读取指令,通过所述信号连接器重新读取所述预设GPIO的输出电平值,确定所述服务器的PCIe拓扑模式。
6.根据权利要求3所述的方法,其特征在于,所述通过基本输入输出系统BIOS检测所述服务器的处理器的运行情况,包括:
在所述服务器的运行过程中,通过基本输入输出系统BIOS检测所述服务器的处理器的运行情况。
7.根据权利要求6所述的方法,其特征在于,在所述通过信号连接器读取所述预设GPIO的输出电平值之前,所述方法还包括:
通过所述BIOS重新启动所述服务器;
所述通过所述信号连接器读取所述预设GPIO的输出电平值,确定所述服务器的PCIe拓扑模式,包括:
响应于所述服务器的重新启动,通过所述信号连接器重新读取所述预设GPIO的输出电平值,确定所述服务器的PCIe拓扑模式。
8.根据权利要求3所述的方法,其特征在于,所述将所述预设GPIO的输出电平值设置为所述第一电平值,包括:
所述BIOS通过带外控制器BMC,控制所述服务器的可编程逻辑器件CPLD将所述预设GPIO的输出电平值设置为所述第一电平值;
所述将预设GPIO的输出电平值设置为第二电平值,包括:
所述BIOS通过带外控制器BMC,控制所述服务器的可编程逻辑器件CPLD将所述预设GPIO的输出电平值设置为所述第二电平值。
9.根据权利要求3所述的方法,其特征在于,所述将所述预设GPIO的输出电平值设置为所述第一电平值,包括:
所述BIOS直接控制所述服务器的可编程逻辑器件CPLD,将所述预设GPIO的输出电平值设置为所述第一电平值;
所述将预设GPIO的输出电平值设置为第二电平值,包括:
所述BIOS直接控制所述服务器的可编程逻辑器件CPLD,将所述预设GPIO的输出电平值设置为所述第二电平值。
10.根据权利要求3所述的方法,其特征在于,当确定所述服务器的处理器中仅存在一个处理器正常运行时,所述方法还包括:
当所述BIOS读取的所述预设GPIO的输出电平值为第一电平值时,保持所述预设GPIO的输出电平值为所述第一电平值;
当确定所述服务器的处理器中存在一个以上处理器正常运行时,所述方法还包括:
当所述BIOS读取的所述预设GPIO的输出电平值为第二电平值时,保持所述预设GPIO的输出电平值为所述第二电平值。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当确定所述服务器中仅存在一个处理器正常运行时,所述BIOS将所述服务器的故障信息上报给带外控制器BMC,以便于所述BMC显示所述故障信息。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述服务器正常运行过程中,所述BIOS接收到用户基于BIOS配置界面输入的PCIe拓扑模式的配置操作;
响应于所述PCIe拓扑模式的配置操作,确定目标拓扑模式;
将所述预设GPIO的电平值设置为所述目标拓扑模式对应的电平值。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
通过所述BIOS重新启动所述服务器;
响应于所述服务器的重新启动,通过所述信号连接器读取所述预设GPIO的输出电平值,确定PCIe拓扑模式为所述目标拓扑模式,以指示所述至少两个交换设备加载所述目标拓扑模式对应的固件,以实现所述服务器的PCIe拓扑模式的切换。
14.一种服务器,其特征在于,包括:至少两个处理器,以及与所述至少两个处理器通信连接的存储器;
所述存储器用于存储计算机执行指令;
所述至少两个处理器用于指示所述存储器存储的计算机执行指令,以实现权利要求1-13中任一项所述的PCIe拓扑的设置方法。
CN202410065049.9A 2024-01-16 2024-01-16 一种PCIe拓扑的切换方法及服务器 Pending CN117950919A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410065049.9A CN117950919A (zh) 2024-01-16 2024-01-16 一种PCIe拓扑的切换方法及服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410065049.9A CN117950919A (zh) 2024-01-16 2024-01-16 一种PCIe拓扑的切换方法及服务器

Publications (1)

Publication Number Publication Date
CN117950919A true CN117950919A (zh) 2024-04-30

Family

ID=90793879

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410065049.9A Pending CN117950919A (zh) 2024-01-16 2024-01-16 一种PCIe拓扑的切换方法及服务器

Country Status (1)

Country Link
CN (1) CN117950919A (zh)

Similar Documents

Publication Publication Date Title
US9619243B2 (en) Synchronous BMC configuration and operation within cluster of BMC
US9600370B2 (en) Server system
US9680712B2 (en) Hardware management and control of computer components through physical layout diagrams
US9710284B1 (en) System for programmably configuring a motherboard
US20210004242A1 (en) Method and system for remote selection of boot device
CN105653306B (zh) 显示启动设置界面的方法和装置
WO2022148072A1 (zh) PCIe switch工作模式更新方法及相关组件
CN115562738B (zh) 一种端口配置方法、组件及硬盘扩展装置
CN110874261A (zh) 可用性系统、方法和存储有程序的存储介质
CN111669284A (zh) OpenStack自动化部署方法、电子设备、存储介质及系统
CN110704365A (zh) 一种基于fpga的重构装置
CN114356725B (zh) 机箱管理系统
US7962735B2 (en) Servo device auto-booted upon power supply recovery and method thereof
CN116820293B (zh) 一种显示控制方法和电子设备
US20170364368A1 (en) Setting method of accessing system parameters and server using the same
US11029973B1 (en) Logic for configuring processors in a server computer
CN116701285A (zh) 远程访问控制装置、方法、设备及计算机可读介质
CN115878533A (zh) Ai服务器的自适应配置方法、装置、设备和存储介质
CN117950919A (zh) 一种PCIe拓扑的切换方法及服务器
CN115543246A (zh) 一种bmc和服务器
CN113835762B (zh) 硬盘背板默认配置更新方法及系统
CN109144583A (zh) 基于国产平台的主板信息获取方法、装置、系统及设备
US11169740B1 (en) Simultaneous initiation of multiple commands for configuring multi-mode DIMMS using a BMC
US11755334B2 (en) Systems and methods for augmented notifications in remote management of an IHS (information handling system)
CN214151686U (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