具体实施方式
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
PCIe(Peripheral Component Interconnect Express,高速串行计算机扩展总线标准)设备是服务器上不可或缺的部件。为了兼容不同的应用场景,同一款服务器需要支持多种PCIe的扩展方式。因此,需要设计多种规格的扩展板卡用于扩展,或是安装不同规格、不同数量的PCIe设备。对于同一个型号的服务器,在配置不同的扩展板时,PCIe的拓扑与带宽拥有不同的分配管理方案。其中,扩展板卡通常为Riser卡或硬盘背板,例如PCI Riser卡、PCIe Riser卡、AGP Riser卡,或是SATA背板、SAS背板、NVMe背板、以及光纤通道背板等。PCIe设备通常为显卡、网络适配器、声卡、存储控制器卡、USB扩展卡、并行端口卡、视频捕获卡、TV调谐卡以及加密卡等。
BMC(Baseboard Management Controller,基板管理控制器)作为服务器中的管理系统,为服务器提供远程管理和远程监控的功能,以减少运维人员对服务器的干预。在本申请中,BMC可以实现对上述多种规格的扩展板卡以及不同规格、不同数量的PCIe设备进行带外管理。
目前的PCIe设备拓扑识别方案中,服务器支持一种或多种配置类型,每种配置类型都对应一个配置文件,BMC开发人员将上述配置文件,按照固定格式,预先写入到BMC可访问的存储介质中,并为每个配置文件定义一个唯一标识。在BMC运行时,根据唯一标识,从预设的配置文件中查找对应的配置类型并进行解析识别,从而获得当前服务器的PCIe拓扑信息,再基于该拓扑信息进行管理。当服务器新增或者更改PCIe扩展板卡或PCIe设备时,就需要对存储介质中的配置文件进行新增或者刷新的操作。若客户要求的配置类型不在预设的配置范围内,或者,在产品发货之后,在服务器上挂载新增扩展板卡时,就需要BMC开发维护人员对存储介质中的配置文件进行变更,重新往BMC或者BIOS固件中写入配置文件对应的唯一标识,对存储介质中的PCIe拓扑信息进行配置,进一步增加了BMC的开发维护人员的任务难度和工作复杂度。
为了实现服务器的配置如PCIe配置等发生变更或新增时,自动识别服务器的拓扑信息,降低服务器管理难度。本发明实施例提供了一种拓扑生成方法、扩展板卡、服务器及存储介质。通过获取主板拓扑信息和至少一个扩展板卡的拓扑信息;确定主板端口、所述扩展板卡端口或所述PCIe设备之间的连接关系;基于所述主板拓扑信息、所述扩展板卡的拓扑信息以及所述端口连接关系,自动生成服务器的拓扑信息。从而降低了服务器PCIe配置类型发生变更时,BMC重配置的工作复杂度和任务难度。
为了便于理解本申请的技术方案,下面首先对本申请实施例的一个应用场景进行介绍。
示例性的,图1示出的是本发明实施例提供的可以自动生成拓扑的一种服务器。如图1所示,服务器包括主板以及扩展板卡1、扩展板卡2、扩展板卡3。
主板上设置了BMC 10、主板存储器11、第一可编程器件20、处理器71、72、内存81、82和主板端口21。其中,所述主板存储器11用于存储主板拓扑信息,上述主板拓扑信息用于表示主板本身的拓扑信息,例如主板包括处理器和与处理器连接的主板端口,主板拓扑信息为处理器与主板端口相连接的拓扑信息。BMC内部还设置有存储器120(第一存储器),所述第一存储器120用于存储BMC从扩展板卡1的存储器41、扩展板卡2的存储器42、扩展板卡3的存储器43中获得的拓扑信息,以及BMC的固件程序110。第一可编程器件20内部还设置有存储器220(第二存储器),所述第二存储器220用于存储第一可编程器件的固件程序210,所述固件程序210被执行时,用于将主板端口21接收到的扩展板卡1、扩展板卡2、扩展板卡3的端口识别码、其它扩展板卡的端口识别码或PCIe设备的识别码指定的寄存器地址,并将上述数据存储于第二存储器220中,供BMC读取。在本申请的实施例中,主板端口21包括至少一个下行端口。每个下行端口具有独立的端口识别码。
请参阅图1,扩展板卡1上设置了第二可编程器件31、存储器41、上行端口51以及下行端口52,存储器41用于存储扩展板卡1的拓扑信息以及固件程序310,所述固件程序310被第二可编程器件执行时,用于获取扩展板卡1自身的端口识别码以及下行端口52所连接的其他扩展板卡的端口识别码或PCIe设备的识别码指定的寄存器地址,并通过上行端口51发送至主板端口21。
采用与扩展板卡1相同的结构,扩展板卡2上设置了第二可编程器件32、存储器42、上行端口53以及下行端口54,存储器42用于存储扩展板卡2的拓扑信息以及固件程序320,所述固件程序320被第二可编程器件32执行时,用于获取扩展板卡2自身的端口识别码以及下行端口54所连接的其他扩展板卡的端口识别码或PCIe设备的识别码指定的寄存器地址,并通过上行端口53发送至主板端口21。
基于上述结构,扩展板卡3上设置了第二可编程器件33、存储器43、上行端口55以及下行端口56,存储器43用于存储扩展板卡3的拓扑信息以及固件程序330,所述固件程序330被第二可编程器件33执行时,用于获取扩展板卡3自身的端口识别码以及下行端口56所连接的其他扩展板卡的端口识别码或PCIe设备的识别码指定的寄存器地址,并通过上行端口55发送至主板端口21。
请继续参阅图1,BMC 10与扩展板卡1的存储器41、扩展板卡2的存储器42、扩展板卡3的存储器43之间,通过第一数据通道进行连接,所述第一数据通道通常采用但不限于如I2C(集成电路总线)或SPI(串行外设接口)等方式进行传输。
主板端口21与扩展板卡1的第二可编程器件31、扩展板卡2的第二可编程器件32、扩展板卡3的第二可编程器件33之间,通过第二数据通道进行连接,所述第二数据通道通常采用但不限如Local Bus(本地总线)或SGPIO(串行通用输入输出)的方式进行连接。
处理器71、72与主板端口21通过第二数据通道相连,第一可编程部件20与主板端口21通过第二数据通道相连。
扩展板卡1与其下挂载的PCIe设备61通过下行端口52相连。
扩展板卡2与其下挂载的PCIe设备62、63通过下行端口54相连。
扩展板卡3与其下挂载的PCIe设备64通过下行端口56相连。
可以理解的是,处理器71、72作为所述服务器的计算核心及控制核心。在一些实施例中,处理器71、72可以执行本实施例中提供的方法的部分或全部步骤。内存81、82形成所述服务器的记忆设备,用于存放程序和数据。
举例说明而非限定,本发明实施例中,内存71、72可以是动态随机存取内存(dynamic random access memory,DRAM),主板存储器11以及存储器40可以是EEPROM或SPIFLASH。
举例说明而非限定,本申请实施例公开的服务器的类型此处不做限定,具体可以是机柜式服务器、塔式服务器、机架式服务器以及刀片式服务器。换言之,本申请实施例对于服务器的具体类别不进行具体限定。进一步地,可以理解的是,图1示出的服务器的结构并不构成对服务器的结构的限定,服务器可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本申请实施例中,扩展板卡1、扩展板卡2、扩展板卡3(第一扩展板卡),其下行端口可以挂载其它扩展板卡和/或一个或多个PCIe设备。图2示出的是本申请实施例提供的一种扩展板卡的挂载示意图,如图2所示,扩展板卡1其下行端口52挂载了PCIe设备61、PCIe设备62。
扩展板卡2其下行端口54挂载了扩展板卡4(第二扩展板卡),上述扩展板卡4通过自身的上行端口92插接于扩展板卡2,扩展板卡4的下行端口93挂载了PCIe设备63。
扩展板卡3的下行端口挂载了扩展板卡5(第二扩展板卡),上述扩展板卡5通过自身的上行端口93插接于扩展板卡2,扩展板卡5下行端口94挂载了PCIe设备65以及PCIe设备66。
上述扩展板卡4上设置了可编程部件91以及存储器94。扩展板卡4的端口信息以及固件程序910存储于存储器95。扩展板卡5上设置了可编程部件95以及存储器98。扩展板卡5的端口信息以及固件程序950存储于存储器98。
其中,扩展板卡4上的固件程序910被第二可编程器件91执行时,用于获取扩展板卡4自身的端口识别码以及下行端口93所连接的PCIe设备63的识别码指定的寄存器地址,并通过上行端口92发送至扩展板卡2的下行端口54。
扩展板卡5上的固件程序950被第二可编程器件95执行时,用于获取扩展板卡5自身的端口识别码以及下行端口97所连接的PCIe设备65、66的识别码指定的寄存器地址,并通过上行端口96发送至扩展板卡3的下行端口56。
具体地,图3示出的是申请实施例中BMC、第一可编程部件以及第二可编程部件的固件程序的模块示意图。如图3所示,部署的固件程序110包括设备在位检测单元111、存储介质读取解析单元112、端口连接关系匹配单元113以及拓扑信息生成单元114,通过执行BMC固件程序中单元模块111~114实现服务器拓扑信息的自动生成。
设备在位检测单元111用于对扩展板卡1、扩展板卡2、扩展板卡3的在位状态进行检测。
存储介质读取解析单元112用于通过第一数据通道,从主板存储器11中读出主板的拓扑信息从存储器41中读出扩展板卡1的拓扑信息,从存储器42中读出扩展板卡2的拓扑信息,从第三存储器43中读出扩展板卡3的拓扑信息。基于主板的拓扑信息确定CPU与所述主板端口的连接关系,基于所述扩展板卡1的拓扑信息,确定所述扩展板卡1上多个扩展板卡端口之间的连接关系,基于所述扩展板卡2的拓扑信息,确定所述扩展板卡2上多个扩展板卡端口之间的连接关系,基于所述扩展板卡3的拓扑信息,确定所述扩展板卡3上多个扩展板卡端口之间的连接关系。
具体地,主板端口的拓扑信息包括主板端口21的一个或多个主板下行端口的拓扑信息。
扩展板卡1、扩展板卡2、扩展板卡3的拓扑信息中,包括扩展板卡1、2、3的上行端口51、53、55,以及扩展板卡1、2、3的下行端口52、54、56的拓扑信息。
存储介质读取解析单元112还用于通过第二数据通道,获取所述主板端口21的主板端口信息,获取扩展板卡端口的板卡端口信息。
其中,主板端口的主板端口信息包括主板端口21的一个或多个主板下行端口识别码;以及,主板下行端口接收到扩展板卡端口识别码以及PCIe设备的识别码。上述到扩展板卡端口识别码以及PCIe设备的识别码均记录在主板存储器11中指定的存储地址。
所述板卡端口信息包括扩展板卡1上行端口51的端口识别码(第二端口识别码),以及下行端口52接收到PCIe设备的识别码(第三端口识别码),扩展板卡2上行端口53的端口识别码(第二端口识别码),以及下行端口54接收到扩展板卡4的上行端口92的端口识别码(第三端口识别码)以及下行端口93所挂载的PCIe设备63的识别码(第四端口识别码),扩展板卡3上行端口55的端口识别码(第二端口识别码),以及下行端口56接收到PCIe设备64的识别码(第三端口识别码)、扩展板卡5的上行端口96的端口识别码以及下行端口97所挂载的PCIe设备65、PCIe设备66的识别码(第四端口识别码)。上述PCIe设备61、62、63、64、65、66的识别码以及扩展板卡上行端口92、93的端口识别码均记录在第二存储器220中指定的寄存器地址。
端口连接关系匹配单元113基于上述主板端口的主板端口信息以及扩展板卡1、扩展板卡2、扩展板卡3的板卡端口信息,确定主板端口、所述扩展板卡端口和/或所述PCIe设备之间的连接关系。
其中,所述连接关系包括:
主板端口21与扩展板卡1、扩展板卡2、扩展板卡3上行端口51、52、53之间的连接关系(第一连接关系);
扩展板卡1的上行端口51与下行端口52之间的连接关系(第二连接关系),扩展板卡2的上行端口53与下行端口54之间的连接关系,以及扩展板卡3的上行端口55与下行端口56之间的连接关系;扩展板卡4的上行端口92与下行端口93之间的连接关系;扩展板卡5的上行端口96与下行端口97之间的连接关系;
扩展板卡1的下行端口52与其下挂载的PCIe设备61、PCIe设备62之间的连接关系(第四连接关系),扩展板卡3的下行端口56与其下挂载的PCIe设备64之间的连接关系,扩展板卡4的下行端口52与其下挂载的PCIe设备63之间的连接关系,扩展板卡5的下行端口97与其下挂载的PCIe设备65、PCIe设备66之间的连接关系;
若主板端口21中的任一主板下行端口其下直接挂载了PCIe设备,则上述连接关系还包括该主板下行端口与其下所挂载的PCIe设备之间的连接关系(第三连接关系)。
端口连接关系匹配单元113基于前述连接关系,对具有相同端口号的主板端口21以及扩展板卡1、扩展板卡2、扩展板卡3的上行端口51、52、53进行连接;对扩展板卡1的上行端口51与下行端口52进行连接,基于相同的方式对扩展板卡2、3、4、5各自的上行端口、下行端口进行连接;对扩展板卡1的下行端口52与其下挂载的PCIe设备61、PCIe设备62进行连接,基于相同的方式对扩展板卡2、3、4、5的下行端口与上述下行端口其下挂载的PCIe设备进行连接,和/或对主板下行端口与其下所挂载的PCIe设备进行连接。
拓扑信息生成单元114根据上述第一连接关系、第二连接关系、第三连接关系和/或第四连接关系。确定所述服务器的拓扑信息。
请继续参阅图3,第一可编程器件210的固件程序210包括端口识别码输出单元211以及端口识别码接收单元212。
其中,端口识别码接收单元212于主板端口处21获得扩展板卡1、扩展板卡2、扩展板卡3的板卡端口信息,并存储于第二存储器220中以供BMC读取。
端口识别码输出单元211将第二存储器220中的扩展板卡1、扩展板卡2、扩展板卡3的板卡端口信息,输出到BMC的端口连接关系匹配单元113。
请继续参阅图3,如图3中所示。
扩展板卡1第二可编程部件31的固件程序310包括端口识别码接收单元312以及端口识别码发送单元311。
在服务器上电时,扩展板卡1的端口识别码发送单元311会将自身的的端口识别码以及下行端口52所挂载的PCIe设备61、的PCIe设备62的识别码,经过上行端口51发送至主板下行端口主板端口21处。其中,上述PCIe设备的端口识别码,由第二可编程器件31根据上行端口51的识别码通过计算得到。
扩展板卡2第二可编程部件32的固件程序320包括端口识别码接收单元322以及端口识别码发送单元321。该扩展板卡所挂载的扩展板卡4的第二可编程部件91的固件程序910包括端口识别码发送单元911以及端口识别码接收单元912。
同样在服务器上电时,扩展板卡2的端口识别码接收单元322于下行端口54处,接收扩展板卡4的上行端口92的端口识别码以及PCIe设备63的识别码,上述识别码由固件程序91的端口识别码发送单元911发送。其中,PCIe设备63的识别码由第二可编程器件91根据上行端口92的识别码通过计算得到。
扩展板卡3第二可编程部件33的固件程序330包括端口识别码接收单元332以及端口识别码发送单元331。该扩展板卡所挂载的扩展板卡5第二可编程部件95的固件程序950包括端口识别码接收单元952以及端口识别码发送单元951。
如前所述,在服务器上电时,扩展板卡3的端口识别码接收单元332于下行端口56处,接收扩展板卡5的上行端口96的端口识别码以及PCIe设备64、65、66的识别码,上述识别码由的固件程序95的端口识别码发送单元951发送。其中,PCIe设备64的识别码由第二可编程器件33根据上行端口55的识别码通过计算得到。PCIe设备65、66的识别码由第二可编程器件95根据上行端口96的识别码通过计算得到。
图3所示的实施例仅仅是示意性的。例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。在本申请各个实施例中的各个功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
接下来,基于上文所描述的内容,对本申请实施例提供的一种拓扑生成方法进行介绍。可以理解的是,该方法是基于上文所描述的内容提出,该方法中的部分或全部内容可以参见上文中的描述。
请参阅图4,图4是本申请实施例提供的一种拓扑生成方法的流程示意图。可以理解,该方法可以通过图1、图2以及图3中所示的服务器中的BMC、第一可编程部件、第二可编程部件来执行,也可以通过其他具有计算、处理能力的装置、设备来执行。如图4所示,该拓扑生成方法可以包括S410至S430:
S410:BMC获取主板拓扑信息和至少一个扩展板卡的拓扑信息。
本实施例中,自动生成服务器的拓扑信息,首先要获取服务器的主板拓扑信息和扩展板卡的拓扑信息。主板拓扑信息用于表示主板本身的拓扑信息,例如主板包括处理器和与处理器连接的主板端口,主板拓扑信息为处理器与主板端口的连接关系。扩展板卡的拓扑信息用于表示扩展板卡本身的拓扑信息,例如,扩展板卡包括相互连接的多个扩展板卡端口,扩展板卡的拓扑信息为多个扩展板卡端口的连接关系。服务器的拓扑信息用于表示服务器中主板、至少一个扩展板卡或至少一个PCIe卡的连接关系。
在该实施方式中,在获取至少一个扩展板卡的拓扑信息之前,还需要对至少一个扩展板卡的在位情况进行检测,在所述扩展板卡在位的情况下,从所述扩展板卡存储器中获取所述扩展板卡的拓扑信息。
举例说明而非限定,本申请实施例不对服务器挂载的扩展板卡的数量做限制,此处扩展板卡至少为一个。其中,所述主板设置有第一存储器,主板端口信息出厂前预先存储在第一存储器中。所述至少一个扩展板卡上设置有第二存储器,所述至少一个扩展板卡的端口信息出厂前预先存储在第二存储器中。
具体而言,如前所述的主板拓扑信息以及至少一个扩展板卡的拓扑信息,可以通过JSON、XML、LOG以及TXT任一种存储格式的数据文件进行描述。
在一些实施例中,为了节约主板的主板存储器11以及扩展板卡1的存储器41、扩展板卡2的存储器42、扩展板卡3的存储器43的存储空间,以及提升数据传输的速率。可以采用gzip、bzip2算法对上述存储格式中的任一种数据文件进行压缩,然后再写入所述主板存储器11以及所述存储器41、42、43中。
举例说明而非限定,本申请实施例不对服务器主板与扩展板卡之间的数据接口做限定,所述数据接口可以是PCIe规范的数据接口,也可以是采用NVMe、SCSI或是其他规范中的任一种协议接口。此处以PCIe规范的数据接口举例,因此,采用PCIe协议的主板端口以及至少一个扩展板卡的拓扑信息中各个字段的格式定义具体如表1所示。
表1
其中,表1中各个字段的具体定义如下。
PCIe拓扑信息校验码,数据长度为32,该字段用于主板拓扑信息以及扩展板卡的拓扑信息的完整性校验,判定主板拓扑信息以及扩展板卡的拓扑信息中的数据是否改变,在一些可能的实施例中,上述完整性校验可以采用sha256算法实现。
PCIe拓扑信息数据版本号,数据长度为2,在一些可能的实施例中,PCIe拓扑信息数据版本号采用A.B格式,其中,A为高字节,B为低字节。
PCIe拓扑信息数据格式,数据长度为1,该字段用于表示采用何种数据格式进行存储。
PCIe拓扑信息数据压缩算法,数据长度为1,该字段用于表示采用何种压缩算法进行压缩。
PCIe拓扑信息数据长度N,数据长度为2,该字段用于表示PCIe拓扑信息数据长度。
PCIe拓扑信息数据,该字段包括主板的拓扑信息以及扩展板卡的拓扑信息。
BMC的存储介质读取解析单元112通过第一数据通道,从主板的主板存储器11中获得主板的拓扑信息,从扩展板卡1的存储器41、扩展板卡2的存储器42、扩展板卡3的存储器43中,获得所述扩展板卡的拓扑信息后,根据PCIe拓扑信息校验码对主板拓扑信息以及扩展板卡1、扩展板卡2、扩展板卡3的拓扑信息进行校验,并核对主板拓扑信息以及扩展板卡1、扩展板卡2、扩展板卡3的拓扑信息的数据版本号和数据格式,并根据PCIe拓扑信息数据压缩算法字段,判断需要采用何种压缩算法进行解压。如此,对扩展板卡1、扩展板卡2、扩展板卡3的拓扑信息进行解压的操作,从而获得扩展板卡1、扩展板卡2、扩展板卡3的拓扑信息以及扩展板卡1、扩展板卡2、扩展板卡3中上行端口和下行端口的拓扑关系。
其中,主板拓扑信息以及至少一个扩展板卡的拓扑信息中的字段还包括,用于描述扩展板卡1、扩展板卡2、扩展板卡3的板卡端口信息,以及扩展板卡1、扩展板卡2、扩展板卡3所挂载的多个PCIe设备的端口信息。上述端口信息的具体定义如表2所示。
表2
其中,表2中各个字段的具体定义如下。
Name,该字段用于表示扩展板卡1、扩展板卡2、扩展板卡3的端口名称,每个扩展板卡的端口都具有唯一的端口名称。
Index,该字段用于索引,包括扩展板卡1、扩展板卡2、扩展板卡3的上行端口以及下行端口的所有编号。
Type,该字段用于表示扩展板卡1、扩展板卡2、扩展板卡3的上行端口以及下行端口的端口类型。
SilkScreen,该字段用于表示扩展板卡1、扩展板卡2、扩展板卡3的丝印信息。该信息与扩展板卡1、扩展板卡2、扩展板卡3的硬件丝印一一对应。
Presence,该字段用于表示扩展板卡1、扩展板卡2、扩展板卡3的端口是否有连接PCIe设备,在一些可能的实施例中,用‘0’表示该端口没有连接PCIe设备,用‘1’表示该口连接了PCIe设备,当服务器上电时若该端口存在PCIe设备,则将该字段写为‘1’。
Direction,该字段用于表示扩展板卡1、扩展板卡2、扩展板卡3的上行端口以及下行端口的端口方向。
IdentifyCode,当Direction为上行端口时,该字段用于表示此端口发送到主板端口的识别码,所述识别码与主板端口的识别码一一对应;当Direction为下行端口时,该字段用于表示此端口接收的PCIe设备指定的寄存器地址,该字段根据端口的类型进行分配,分配后的端口识别码可以对Name字段进行标识。
LinkWidth,该字段用于表示此端口的带宽,所述带宽通常为x1、x4、x8、x16中的任一类型。
LinkRate,该字段用于表示此端口的速率,所述速率根据PCIe版本的不同,具有不同的速率。
StartLane,该字段用于表示此端口的起始序列遍号,所述序列通常为0~15中的任一数字。
示例性的,扩展板卡1、扩展板卡2、扩展板卡3中的任一个扩展板卡的板卡端口信息具体通过以下源码进行描述。
具体地,源码中描述了该扩展板卡具有1个端口,端口名称为“gold_finger”,端口类型为PCIe,索引号为0,该端口为上行端口,发送到主板端口的识别码为85。该扩展板卡的丝印为GoldFinger,速率为PCIe 5.0版本速率,带宽为16位,起始序列遍号为0。
更为具体地,该扩展板卡挂载了一块PCIe设备,该设备的端口名称为connect_4,端口类型为PCIe,索引号为4,此端口为下行端口,PCIe设备的识别码所指定的寄存器地址为connect_4_pre,该PCIe设备的丝印为J004,速率为PCIe 5.0版本速率,带宽为8位,起始序列遍号为0。
在本申请实施例中,上述主板拓扑信息以及扩展板卡1、扩展板卡2、扩展板卡3中的任一个扩展板卡的拓扑信息中的字段还包括,用于描述该扩展板卡,以及该扩展板卡所挂载的一个或多个PCIe设备之间连接关系的拓扑信息,上述表示连接关系的拓扑信息的具体定义如表3所示。
表3
字段 |
类型 |
描述 |
Name |
字符串 |
端口名称,唯一表示该端口 |
Children |
数组 |
下级端口的名称,支持多个 |
其中,表3中各个字段的具体定义如下。
Name,该字段用于表示扩展板卡1、扩展板卡2、扩展板卡3中的任一个扩展板卡的上行端口以及下行端口的名称,每个扩展板卡的端口都具有唯一的端口名称。
Children,该字段用于表示连接前述上行端口的下行端口名称,该字段可以支持多个,表示该上行端口连接了多个下行端口。
示例性的,扩展板卡1、扩展板卡2、扩展板卡3中的任一个扩展板卡,以及该扩展板卡所挂载的一个或多个PCIe设备连接关系,具体通过以下源码进行描述。
PCLe的拓扑信息具体通过以下源码进行描述。
其中,源码中描述了该扩展板卡具有两个上行端口,端口名称分别为“gold_finger”以及“ubc1_2”。
“gold_finger”上行端口与两个下行端口连接,上述下行端口挂载的PCIe设备指定的寄存器地址分别为connect_2以及connect_3,且两个下行端口都没有挂载其它的下行端口。
“ubc1_2”上行端口与两个下行端口连接,上述下行端口挂载的PCIe设备指定的寄存器地址分别为connect_1以及connect_4,且两个下行端口都没有挂载其它的下行端口。
在本实施例中,BMC的存储介质读取解析单元根据上述端口信息以及各个端口的连接关系,进行解析获得扩展板卡1、扩展板卡2、扩展板卡3各自上行端口与下行端口之间的连接关系。
具体地,服务器拓扑信息从PCIe的视角来看,是一棵树形结构。每个扩展板卡或者主板都是这棵树的子树,端口则为该树的叶子节点。BMC可以通过每个扩展板卡、主板上存储介质中的数据得到一个个子树节点,再根据端口之间的连接关系,将各个子树连接起来,从而得到整个服务器的拓扑信息。
在本实施例中,当BMC通过前述S410,获取主板拓扑信息和至少一个扩展板卡的拓扑信息后,可以执行:
S420:确定主板端口、所述扩展板卡端口和/或所述PCIe设备之间的连接关系。
如前所述,本发明实施例中,扩展板卡除了上行端口之外,还可以在其上设置下行端口,用于连接其他扩展板卡和\或PCIe设备继续进行功能扩展,因此每个板卡至少包括一个上行端口。
具体地,BMC 10的存储介质读取解析单元112,获取主板拓扑信息以及扩展板卡1、扩展板卡2、扩展板卡3的拓扑信息后,根据上述主板拓扑信息,从第一可编程器件20的第二存储器220中,获取主板端口21的一个或多个主板下行端口识别码,以及,从前述的第一端口识别码的存储地址中,获取主板下行端口接收到扩展板卡端口识别码以及PCIe设备的识别码(第一端口识别码)。并基于上述识别码确定主板端口、扩展板卡端口和/或PCIe设备的连接关系。
BMC10的存储介质读取解析单元112,根据上述扩展板卡1、扩展板卡2、扩展板卡3的拓扑信息中记录的端口方向,分别确定扩展板卡1、扩展板卡2、扩展板卡3的上行端口51、53、55。扩展板卡1、扩展板卡2、扩展板卡3的下行端口52、54、56。
多个扩展板卡中的任一扩展板卡的下行端口挂载了其它扩展板卡时,如本申请实施例中,扩展板卡2(第一扩展板卡)的下行接口54其下挂载了扩展板卡4(第二扩展板卡),扩展板卡3(第一扩展板卡)的下行接口56其下挂载了扩展板卡5(第二扩展板卡)。
此种情况下,扩展板卡2、扩展板卡3的拓扑信息中还包括扩展板卡4、扩展板卡5的端口方向,BMC10的存储介质读取解析单元112基于上述拓扑信息,分别确定扩展板卡4的上行端口92、扩展板卡5的上行端口96,扩展板卡4的下行端口93以及扩展板卡5的下行端口97。
接下来,BMC根据上行端口51、53、55、92、96在拓扑信息中记录的端口标识,从第一可编程器件210的第二存储器220中,分别获取:
第二可编程部件31发送的扩展板卡1的上行端口51的端口识别码、下行端口52的端口识别码,以及,上述下行端口52其下挂载的PCLe设备61、62的识别码。
具体地,PCLe设备61、62的识别码,由扩展板卡1的端口识别码接收单元312于下行端口52处得到,端口识别码发送单元311将上行端口51、下行端口52的端口识别码,以及,上述下行端口52其下挂载的PCLe设备61、62的识别码,发送到主板下行端口。
第二可编程部件32发送的扩展板卡2的上行端口53、下行端口54的端口识别码,以及扩展板卡4上行端口92、下行端口93的端口识别码,以及,上述下行端口93其下挂载的PCLe设备63的识别码。
具体地,PCLe设备63的识别码,由扩展板卡4的端口识别码接收单元912于下行端口93处得到。然后,端口识别码发送单元911将接收到的PCLe设备63的识别码,及扩展板卡4上行端口92、下行端口93的端口识别码发送到扩展板卡2的下行端口54。
更为具体地,扩展板卡2的端口识别码接收单元322于下行端口54处接收到PCLe设备63的识别码,及扩展板卡4上行端口92、下行端口93的端口识别码。然后,经端口识别码发送单元321,将扩展板卡2的上行端口53、下行端口54的端口识别码,以及扩展板卡4上行端口92、下行端口93的端口识别码,以及,上述下行端口93其下挂载的PCLe设备63的识别码发送到主板下行端口。
第二可编程部件33的端口识别码发送单元331发送的扩展板卡3的上行端口55、下行端口56的端口识别码,上述下行端口56其下挂载的PCLe设备64的识别码,扩展板卡5上行端口96、下行端口97的端口识别码,以及,上述下行端口97其下挂载的PCLe设备65、66的识别码。
具体地,PCLe设备65、66的识别码,由扩展板卡5的端口识别码接收单元992于下行端口97处得到。然后,端口识别码发送单元951将接收到的PCLe设备65、66的识别码,及扩展板卡5上行端口96下行端口97的端口识别码发送到扩展板卡3的下行端口56。
更为具体地,扩展板卡3的端口识别码接收单元332于下行端口56处接收到PCLe设备65、66的识别码,及扩展板卡5上行端口96、下行端口97的端口识别码。然后,经端口识别码发送单元331,将扩展板卡2的上行端口55、下行端口56的端口识别码,上述下行端口56其下挂载的PCLe设备64的识别码,以及扩展板卡5上行端口96、下行端口97的端口识别码,以及,上述下行端口97其下挂载的PCLe设备65、66的识别码发送到主板下行端口。
在本实施例中,主板端口的挂载还包括与PCIe设备直接连接的情况,此种情况下,主板的拓扑信息还包括PCLe设备的识别码的存储地址,该PCLe设备的识别码由第一可编程部件的端口识别码接收单元212于主板下行端口处获得,并由端口识别码输出单元存储在第一可编程部件的存储器220中。
在本实施例中,当BMC的存储介质读取解析单元112获取主板端口、扩展板卡端口和/或PCIe设备的识别码后,由BMC端口连接关系匹配单元113确定主板端口、扩展板卡端口和/或PCIe设备的连接关系。
根据上述识别码确定得到的连接关系包括:
BMC端口连接关系匹配单元113对具有相同端口识别码的主板下行端口,以及扩展板卡1、扩展板卡2、扩展板卡3的上行端口51、53、55进行匹配,确定所述主板下行端口与所述扩展板卡1、2、3上行端口的连接关系(第一连接关系)。
BMC端口连接关系匹配单元113对具有相同端口识别码的扩展板卡2的下行端口54,扩展板卡4的上行端口92,以及,具有相同端口识别码的扩展板卡3的下行端口56,扩展板卡5的上行端口96进行匹配,确定扩展板卡4上行端口92以及扩展板卡2下行端口54的连接关系(第二连接关系),确定扩展板卡5上行端口96以及扩展板卡2下行端口56的连接关系。
BMC端口连接关系匹配单元113对具有相同端口识别码的主板下行接口以及PCIe设备进行匹配,确定主板下行接口与PCIe设备的连接关系(第三连接关系)。
BMC端口连接关系匹配单元113对具有相同端口识别码的扩展板卡1的下行端口52、PCIe设备61、62,扩展板卡3的下行端口56、PCIe设备64,扩展板卡4的下行端口93、PCIe设备63以及扩展板卡5的下行端口97、PCIe设备65、66进行匹配,确定扩展板卡1的下行端口52与PCIe设备61、62的连接关系(第四连接关系),确定扩展板卡3的下行端口56与PCIe设备64的连接关系,确定扩展板卡4的下行端口93与PCIe设备63的连接关系,确定扩展板卡5的下行端口97与PCIe设备65、66的连接关系。
S430:基于所述主板拓扑信息、所述扩展板卡的拓扑信息以及所述端口连接关系,生成服务器的拓扑信息。
基于S410获得的所述主板拓扑信息、所述扩展板卡的拓扑信息以及步骤S420中确定的端口连接关系。端口连接关系匹配单元113将所述主板端口信息与所述扩展板卡的端口信息按照所述第一连接关系连接,和/或,将多个所述扩展板卡的端口信息按照所述第二连接关系连接,和/或,将所述主板端口信息与所述PCIe设备按照所述第三连接关系连接,和/或,将所述扩展板卡的端口信息与所述PCIe设备按照所述第四连接关系连接。
拓扑信息生成单元114根据上述第一连接关系、第二连接关系、第三连接关系以及第四连接关系生成所述服务器的拓扑信息。
举例说明而非限定,本申请实施例所提供拓扑生成方法,采用的BMC可以是一种ARM架构的CPU(中央处理器)也可以采用DPU(Data Processing Unit,数据处理器)、FPGA(Field-Programmable Gate Array,可编程门阵列)中任一种方式实现的处理器。需要说明的是,在其他实施例中,BMC在不同计算设备中有不同的称呼,例如华为服务器、超聚变服务器的BMC为iBMC,HPE服务器的BMC称为iLO,DELL服务器的BMC称为iDRAC。
本实施例中对该处理器的设置位置不做任何限制。该处理器可是设置在主板之上,也可以设置在硬盘背板之上。
处理器设置于硬盘背板之上时,首先,只需要建立数据通道,从主板存储器中获取拓扑信息,从各个扩展板卡的存储器中获得拓扑信息。然后,通过第一可编程器件、第二可编程器件获取主板下行端口、扩展板卡端口以及PCIe设备的识别码,确定主板端口、所述扩展板卡端口和/或所述PCIe设备之间的连接关系。最后基于上述连接关系生成服务器的拓扑信息。
举例说明而非限定,本申请实施例所提供拓扑生成方法,提供的第一可编程部件、第二可编程部件可以是CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)还可以为采用FPGA、MCU(Micro Control Unit,微控制单元)中任一方式实现的可编程部件。
示例性的,图5示出的是本申请实施例获取主板拓扑信息以及扩展板卡拓扑信息的示意图,如图5所示,本申请实施例提出了服务器另一种扩展板卡的挂载方式,该挂载方式中,设置于主板的BMC10通过第一数据通道与扩展板卡6以及扩展板卡7的存储器601、701相连。
具体地,主板上设置有端口识别码为AA、55、66的下行端口,上述端口分别与处理器70相连。上述端口识别码以及处理器与端口识别码为AA、55、66的端口的端口信息在服务器出厂时,预先存储于主板存储器11中,以供BMC读取。
扩展板卡6上包括了端口识别码为AA、66的上行端口,其中,识别码为AA的上行端口与一个下行端口相连。在服务器出厂时,存储于存储器601预设的扩展板卡6的拓扑信息中,没有该下行端口的识别码,而是指定了该下行端口的识别码固定的寄存器地址Connector1;端口识别码为66的上行端口与两个下行端口相连,在设置于扩展板卡6的存储器中,指定了固定的寄存器地址Connector1以及Connector3。
扩展板卡7包括端口识别码为55的上行端口,该端口与一个下行端口相连,在设置于扩展板卡7的存储器中,扩展板卡7的下行端口指定了固定的寄存器地址Connector1。
上述扩展板卡6以及扩展板卡7的上行端口的识别码,以及下行端口识别码指定的寄存器地址分别记录在第一端口信息中的IdentifyCode字段,并分别存储于存储器601与存储器701中。
端口识别码为AA、66的上行端口与各自连接的下行端口的端口信息也存储于存储器601与存储器701中。
如前所述,BMC通过第一数据通道从主板存储器11中读出主板的拓扑信息;从扩展板卡6的存储器601以及扩展板卡7的存储器701中读出各自的扩展板卡的拓扑信息,然后对各自的拓扑信息进行解压、解析,确定得到主板处理器70与主板下行端口的连接关系、扩展板卡6的上行端口与下行端口的连接关系以及扩展板卡7的上行端口与下行端口的连接关系。
图6示出的是本申请实施例确定端口连接关系的示意图,如图6所示,在读出上述拓扑信息后,利用BMC进行解析分别获得了处理器与端口识别码为AA、55、66的主板端口的连接关系;扩展板卡6上识别码为66的上行端口与其所连接的两个下行端口的连接关系,识别码为AA的上行端口与其所连接的一个下行端口的连接关系;扩展板卡7上识别码为55的上行端口与其所连接的两个下行端口的连接关系。
如此,通过图6示出的上述连接关系,BMC还需要获得主板下行端口的端口识别码、各个扩展板卡上行端口、下行端口的端口识别码,以及该下行端口所挂载的PCIe设备的识别码。
图7示出的是本申请实施例获得端口信息的示意图,如图7所示,BMC、第一可编程部件以及端口识别码为AA、55、66的主板端口通过第二数据通道进行连接。端口识别码为AA、55、66的主板端口与相同端口识别码的,扩展板卡6、扩展板卡7的上行端口通过第二数据通道进行连接。
服务器上电时,第二可编程部件601根据上行端口AA通过计算得到下行端口所挂载的PCIe设备602的识别码,根据上行端口66通过计算得到下行端口所挂载的PCIe设备603、PCIe设备604识别码,并分别存储于指定的寄存器地址Connector1和Connector3。并将上述寄存器地址记录在扩展板卡端口信息的IdentifyCode字段中,且将挂载该PCIe设备的端口在Direction字段记录为下行端口。
第二可编程部件601将端口识别码AA、66记录在扩展板卡拓扑信息的IdentifyCode字段中,并在Direction字段记录为上行端口。
第二可编程器件601通过第二数据通道,将端口识别码AA、66以及所挂载的PCIe设备602、603、604识别码所指定的寄存器地址发送到位于主板上的第一可编程器件。如前所述,位于扩展板卡2的第二可编程器件701也采用同样的方式,将端口识别码55以及所挂载的PCIe设备701识别码所指定的寄存器地址发送到位于主板上的第一可编程器件20。
其中,向上级端口发送的上述扩展板卡的端口识别码AA、66、55,可以是固定的,或者是通过一个固定规则(例如根据槽位号计算)计算出来的,这种识别码存在固定的规则,同样记录各端口信息的IdentifyCode字段中。
第一可编程器件20接收扩展板卡6以及扩展板卡7的端口识别码以及PCIe设备识别码所指定的寄存器地址,并存储于第一可编程器件20中的第二存储器210中,以供BMC10读取。
BMC从第二存储器210中获得扩展板卡6以及扩展板卡7的端口识别码,通过PCIe设备识别码所指定的寄存器地址获得PCIe设备的识别码,基于上述识别码,BMC确定主板下行端口1与扩展板卡6上行端口1的连接关系,主板下行端口3与扩展板卡6上行端口2的连接关系,主板下行端口2与扩展板卡7上行端口1的连接关系。
扩展板卡6上行端口1与下行端口1的连接关系,扩展板卡6上行端口2与下行端口1、下行端口3的连接关系,扩展板卡7上行端口1与下行端口1的连接关系。扩展板卡6下行端口1与PCLe设备602的连接关系,扩展板卡6下行端口1与PCLe设备603、下行端口3与PCLe设备604的连接关系,以及扩展板卡7下行端口1与PCLe设备701的连接关系。
示例性的,图8示出的是本申请实施例生成服务器的拓扑信息的示意图,如图8所示,BMC 10的端口连接关系匹配单元113按照端口识别码,对主板、扩展板卡1以及扩展板卡2上述连接关系进行匹配。
具体地,主板端口21中端口识别码为AA的端口与扩展板卡1上端口识别码为AA的上行端口匹配;主板端口21中端口识别码为55的端口与扩展板卡2上端口识别码为55的上行端口匹配;主板端口21中端口识别码为66的端口与扩展板卡1上端口识别码为66的上行端口匹配。
匹配成功后BMC 10将识别码相同的端口进行连接,再根据上述连接关系生成完整的服务器拓扑信息。
以上即是对本申请实施例所提供的拓扑生成方法的相关介绍。接下来,结合前述的拓扑生成方法对本申请实施例提供的一种服务器进行介绍。
示例性的,图9示出的是本申请实施例提供的采用硬盘背板以及RISER扩展板卡配置的服务器的结构示意图,如图9所示,在主板上设置了CPU70、主板存储器11、主板端口21以及用于对扩展板卡、PCIe设备进行管理的BMC 10和第一可编程器件20。
其中,第一可编程器件20中还设置有用于供BMC读取的存储器210。在扩展板卡RISER卡以及硬盘背板上分别设置了存储器4a、存储器4b以及第二可编程器件3a、第二可编程器件3b。
上述RISER卡通过上行端口5a1与主板下行端口2a1相连,通过上行端口与5a2与主板下行端口2a2相连。RISER卡还包括下行端口5b1、5b2、5b3,其中下行端口5b2其下挂载了PCIe设备6a。
上述硬盘背板通过上行端口5c1、5c2与主板下行端口2a3相连,通过5a2上行端口与主板下行端口2a2相连。硬盘背板通过下行端口5d1、5d2、5d3、5d4与硬盘组6b1、6b2、6b3、6b4相连。
首先,在出厂前将RISER卡和硬盘背板上的拓扑信息分别存储于RISER卡的存储器4a以及硬盘背板的存储器4b中。
其次,在BMC 10启动时,通过BMC 10从RISER卡的存储器4a中获取RISER卡的拓扑信息,从硬盘背板的存储器4b中获取上述硬盘背板的拓扑信息,并进行解析,确定RISER卡以及硬盘背板上行端口以及下行端口的连接关系。
再次,通过BMC从第一可编程器件20中的存储器210中获取通过RISER卡上行端口5a1发送至主板下行端口2a1的端口识别码,通过RISER卡上行端口5a2发送至主板下行端口2a2的端口识别码,以及通过硬盘背板上行端口5c1、5c2发送到主板下行端口2a3的端口识别码。
然后,BMC基于所述主板拓扑信息、所述扩展板卡的拓扑信息获取主板与扩展板卡的连接关系,RISER卡与PCIe设备6a的连接关系,以及硬盘背板与硬盘组6b1、6b2、6b3、6b4的连接关系
最后,基于上述连接关系,对主板端口与RISER卡的上行端口5a1、5a2以及硬盘背板的上行端口5c1、5c2进行连接,确定硬盘背板以及RISER扩展板卡服务器配置的拓扑信息。
以上即是对本申请实施例所提供的一种使用硬盘背板以及RISER扩展板卡配置的服务器相关介绍。接下来,结合前述的服务器对本申请实施例提供的一种拓扑生成方法进行介绍。可以理解的是,该方法是基于上文所描述的内容提出,该方法中的部分或全部内容可以参见上文中的描述。该方法应用于前述服务器,所述服务器包括BMC 10、主板以及扩展板卡,所述BMC 10、所述主板以及所述扩展板卡之间相互连接,
示例性的,图10示出的是本申请实施例提供的拓扑生成方法的流程示意图。如图10所示,该方法通过S10~S40实现自动生成服务器的拓扑信息。
如结合图1以及步骤S10处所示,本实施例中,除首次上电外,在一些实施例中,BMC10上电启动时需要对扩展板卡进行在位检测,获取所述扩展板卡的在位变化。
本发明实施例中,用户插入或拔出扩展板卡1、扩展板卡2、扩展板卡3时,位于扩展板卡1的第二可编程部件31、扩展板卡2的第二可编程部件32、扩展板卡3的第二可编程部件33,会将所在扩展板卡的拓扑信息中的Presence字段进行变更,BMC10的设备在位检测单元111可以自动识别上述变化对扩展板卡进行检测,同时支持扩展板卡在服务器运行时进行热插拔。在其它可能的实施例中,扩展板卡的在位变化也可以通过硬件自动识别。
当BMC 10检测到扩展板卡并无在位变化,此时BMC 10不做任何操作,无需对PCIe拓扑进行管理。
当BMC 10检测到扩展板卡出现了在位变化,则需要对扩展板卡的在位状态做进一步的检测。
若是,BMC 10检测到一个或多个扩展板卡中的任一扩展板卡为不在位状态,此时需要在记录拓扑信息的数据文件中删除该扩展板卡的拓扑信息。
若是,BMC检测到一个或多个扩展板卡中的任一扩展板卡拓扑信息中的Presence字段为在位状态,此时说明出现了新增的扩展板卡和/或PCIe设备,需要BMC 10更改配置文件并对新增的扩展板卡以及其所挂载的一个或多个PCIe设备进行识别。
在一些实施例中,若服务器为首次上电,则不需要BMC 10进行在位检测,直接执行步骤S20。
结合图1以及图10步骤S20处所示,当扩展板卡出现在位变化,且所述扩展板卡为在位状态时,首先,利用BMC 10从主板存储器11中读出主板拓扑信息,从扩展板卡1的存储器41、扩展板卡2的存储器42、扩展板卡3的存储器43中读出该存储器所在的扩展板卡的拓扑信息。
结合图1以及图10步骤S30处所示,由于每个扩展板卡上的存储器中保存的拓扑信息,都只描述本部件内部的端口信息和上行端口与下行端口的连接关系,BMC10为了识别出完整的服务器的拓扑信息,需要获得主板端口21与一个或多个扩展板卡上行端口的连接关系,还需要获得一个或多个扩展板卡中任一扩展板卡所挂载的其它扩展板卡上行端口的端口识别码和/或PCIe设备的识别码。
其中,任一扩展板卡(第一扩展板卡)中下行端口所挂载的,其它扩展板卡(第二扩展板卡)上行端口的端口识别码和/或PCIe设备的识别码,在服务器上电时,通过任一扩展板卡的第二可编程部件,根据该第二可编程器件所在的任一扩展板卡中上行端口识别码计算获得,并存储于任一扩展板卡中下行端口的端口识别码指定的寄存器地址。由第二可编程器的端口识别码发送单元,将所述寄存器地址通过第二连接通道发送到主板端口21处。
BMC可以根据该地址获取到该PCIe设备的端口识别码。然后根据上述识别码确定主板端口、所述扩展板卡端口和/或所述PCIe设备之间的连接关系。
结合图1以及图10步骤S40处所示,BMC为了识别出完整的PCIe拓扑,还需要基于步骤S30中确定的连接关系,利用端口连接关系匹配单元,对主板端口以及一个或多个扩展板卡的上行端口进行连接,再由拓扑信息生成单元确定服务器的拓扑信息。
可以理解的是,利用BMC从第二可编程部件31或第二可编程部件32或第二可编程部件33的存储器中获得拓扑信息后,可以将扩展板卡1、扩展板卡2、扩展板卡3的拓扑信息存储在主板存储器11中,作为校验数据。
当扩展板卡1、扩展板卡2、扩展板卡3中任一扩展板卡出现在位变化,且所述扩展板卡为在位状态时,利用BMC 10通过第一数据通道获得出现在位变化的该扩展板卡的拓扑信息,将主板存储器11中的校验数据读出与出现在位变化的该扩展板卡的拓扑信息进行对比校验,确定是否继续识别PCIe的拓扑。
通过采用上述对比校验的方法,对于一些需要常插拔的扩展板卡,例如需要对多台服务器进行周期检测的测试板卡,每一次插拔时,只需要将测试板卡的存储器中的拓扑信息,与主板存储器11中的校验数据进行比对,比对一致后,无需更新测试板卡的配置文件,直接读取主板存储器11中的校验数据进行管理,如此能够提升BMC运维管理效率,给服务器测试工作带来便利。
以上即是对本申请实施例所提供的拓扑生成方法的相关介绍。接下来,结合前述的拓扑生成方法对本申请实施例提供的一种扩展板卡进行介绍。
示例性的,图11示出的是本申请实施例提供的扩展板卡的结构示意图。如图11所示,所述扩展板卡上设置有可编程部件34、存储器44、扩展板卡端口。
其中,所述扩展板卡端口包括上行端口57以及下行端口58,所述上行端口57用于连接主板,所述下行端口58用于连接其他扩展板卡或PCIe设备。
所述可编程部件34用于通过上行端口57发送端口识别码,通过下行端口58接收端口识别码,所述端口识别码用于确定端口连接关系。
所述端口连接关系包括,用于表示所述主板端口21与所述扩展板卡端口57之间的第一连接关系;用于表示下行端口58与其它多个扩展板卡上行端口之间的第二连接关系;用于表示扩展板卡端口58与PCIe设备之间的第四连接关系。
所述存储器44用于存储扩展板卡的端口信息以及固件程序340。所固件程序340运行时,使得可编程部件34执行上述指令。
以上即是对本申请实施例所提供的扩展板卡的相关介绍。接下来,结合前述的内容对扩展板卡端口扩展的一个应用场景进行介绍。
示例性的,图12示出的是本申请实施例扩展板卡端口扩展的示意图。如图12所示,至少一个扩展板卡包括1个带宽为16位的上行端口,该端口在拓扑信息中的Name字段记录为PCIe Port2,Presence字段记录为‘1’,并在Direction字段中标注此端口为上行端口。其中,上述端口信息中还记录了该上行端口所连接的两个8位的下行端口的寄存器地址。
上述16位端口以及两个8位端口的连接关系具体描述为,上行端口的Name字段为PCIe Port2,Children字段的Name字段分别为“PCIe Port1a”以及“"PCIe Port1c”,如此就将一个带宽为16位的端口宽分配扩展成两个8位的端口。
16位带宽的端口扩展为两个8位端口的端口信息具体通过以下源码进行描述。
其中,源码中描述了该16位带宽的端口名称为“PCIe Port2”的上行端口。该上行端口与两个下行端口连接,上述下行端口挂载的PCIe设备指定的寄存器地址分别为PCIePort1a以及PCIe Port1c,且两个下行端口都没有挂载其它的下行端口。
在本实施例中,上述16位带宽端口扩展为两个8位端口的拓扑的过程具体如下所示。
首先,在BMC启动时,从一个或多个扩展板卡中任一扩展板卡中,获取上行端口名称为PCIe Port2、16位带宽的扩展板卡的拓扑信息,并进行解析确定该扩展板卡上行端口与下行端口的连接关系。
其次,通过BMC10端口连接关系匹配单元从主板端口处获得端口名称为PCIePort2上行端口识别码,以及下行端口名称为PCIe Port1a、PCIe Port1c的两个8位带宽PCIe设备的下行端口识别码。
然后,BMC的端口连接关系匹配单元基于上述端口信息确定端口名称为PCIePort2上行端口,端口名称为PCIe Port1a、PCIe Port1c的两个8位带宽PCIe设备的下行端口之间的连接关系。
最后,由拓扑信息生成单元基于上述连接关系确定端口名称为PCIe Port2的拓扑信息。
相较于现有技术,本申请实施例提供的一种拓扑生成方法、扩展板卡及服务器,能够自动生成服务器的拓扑信息,降低了服务器的管理难度。同时,该方法支持自动识别发生在位变化的卡槽,以实现扩展板卡在服务器运行时的热插拔,提升了服务器运维效率。并且利用保存的校验数据与获得的扩展板卡拓扑信息进行对比校验,对比一致后无需更新测试板卡的配置文件,直接读取存储介质中的校验数据进行管理,提升了需要常插拔的扩展板卡的运维管理效率,给服务器测试工作带来便利。
可以理解的是,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。此外,在一些可能的实现方式中,上述实施例中的各步骤可以根据实际情况选择性执行,可以部分执行,也可以全部执行,此处不做限定。
本申请的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、只读存储器(read-only memory,ROM)、可编程只读存储器(programmable rom,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。