掌桥专利:专业的专利平台
掌桥专利
首页

识别PCI设备的方法、装置、电子设备及可读存储介质

文献发布时间:2024-04-18 20:01:55


识别PCI设备的方法、装置、电子设备及可读存储介质

技术领域

本发明涉及计算机技术领域,尤其涉及一种识别PCI设备的方法、装置、电子设备及可读存储介质。

背景技术

AI(Artificial Intelligence,人工智能)服务器往往需要大量的GPU(graphicsprocessing unit,图形处理器)/网卡设备进行运算,由于插槽数量的限制往往需要很多交换板进行槽位扩展,每张交换板上会有很多GPU和网卡。为了GPU性能的最大化,每个端口与CPU连接的顺序是设计好的,这导致识别PCI(Peripheral Component Interconnect,局部总线标准)设备的顺序是固定的。

以网卡为例,若想指定一个其他接口的网卡作为操作系统下第一张被识别的网卡,仅能通过改变上述网卡的插的位置进行。

在遇到需要大批量更改识别PCI设备的顺序的情况下,上述方法需要耗费大量的人力,且可能对服务器的性能造成一定影响。

发明内容

鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种识别PCI设备的方法、装置、电子设备及可读存储介质。

第一方面,本申请实施例公开了一种识别PCI设备方法,所述方法包括:

获取中央处理器的配置文件;

根据所述配置文件确定各个接口的识别顺序,并生成识别顺序列表;

响应于识别顺序修改请求,在基本输入输出系统修改所述识别顺序列表中目标接口的识别顺序,并调整识别顺序发生变动的接口对应的端口资源标识的顺序,生成新的识别顺序列表;

根据所述新的识别顺序列表扫描所述中央处理器连接的PCI设备。

可选地,所述在基本输入输出系统修改所述识别顺序列表中目标接口的识别顺序,并调整识别顺序发生变动的接口对应的端口资源标识的顺序,包括:

在基本输入输出系统修改所述识别顺序列表中目标接口的识别顺序后,将调整后的接口识别顺序与默认的所述识别顺序列表比较,确定是否存在接口的识别顺序发生改变;

在确定存在接口的识别顺序发生改变的情况下,调整识别顺序发生变动的接口对应的端口资源标识的顺序。

可选地,所述在确定存在接口的识别顺序发生改变的情况下,调整识别顺序发生变动的接口对应的端口资源标识的顺序,包括:

确定识别顺序变动的目标接口;

修改所述端口资源标识的顺序,使得所述端口资源标识的顺序与修改后的目标接口的识别顺序对应。

可选地,所述响应于识别顺序修改请求,在基本输入输出系统修改所述识别顺序列表中目标接口的识别顺序,包括:

在基本输入输出系统的设置界面,显示调整识别顺序的菜单选项;

响应于对所述菜单选项的第一输入,显示默认的识别顺序列表;

响应于针对所述识别顺序列表的识别顺序修改请求,修改所述识别顺序列表中目标接口的识别顺序。

可选地,所述响应于针对所述识别顺序列表的识别顺序修改请求,修改所述识别顺序列表中目标接口的识别顺序。包括:

响应于针对所述识别顺序列表的识别顺序修改请求,交换所述识别顺序列表中任意两个接口的识别顺序。

可选地,所述根据所述配置文件确定各个接口的识别顺序,并生成识别顺序列表,包括:

根据所述配置文件,确定所述中央处理器的型号;

根据所述中央处理器的型号,生成识别顺序列表。

可选地,所述根据所述配置文件,确定所述中央处理器的型号,包括:

从所述配置文件中读取中央处理器的型号标识;

根据所述型号标识确定所述中央处理器的型号。

可选地,所述根据所述中央处理器的型号,生成识别顺序列表,包括:

根据所述中央处理器的型号,确定所述中央处理器的接口拓扑顺序;

将所述接口拓扑顺序转换为顺序排列,生成识别顺序列表。

可选地,所述根据所述新的识别顺序列表扫描所述中央处理器连接的PCI设备,包括:

根据所述新的识别顺序列表,扫描PCI设备,并获取所述PCI设备的地址标识;

根据所述地址标识,获取所述PCI设备的相关信息并输出;

根据所述识别顺序列表,继续进行下一个接口的自检过程。

可选地,所述根据所述地址标识,获取所述PCI设备的相关信息并输出,包括:

根据所述地址标识,获取所述PCI设备的设备类型和厂商信息并输出;

在所述PCI设备的等级符合预设等级条件的情况下,访问所述PCI设备的配置空间,输出所述PCI设备的配置信息。

可选地,所述端口资源标识包括:带宽端口标识和资产信息端口标识。

可选地,所述地址标识为BDF号,所述BDF号包括总线号、设备号和功能号。

第二方面,本申请实施例公开了一种识别PCI设备装置,所述装置包括:

获取模块,用于获取中央处理器的配置文件;

生成模块,用于根据所述配置文件确定各个接口的识别顺序,并生成识别顺序列表;

修改模块,用于响应于识别顺序修改请求,在基本输入输出系统修改所述识别顺序列表中目标接口的识别顺序,并调整识别顺序发生变动的接口对应的端口资源标识的顺序,生成新的识别顺序列表;

识别模块,用于根据所述新的识别顺序列表扫描所述中央处理器连接的PCI设备。

第三方面,本申请实施例还公开了一种电子设备,包括处理器和存储器、所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。

第四方面,本申请实施例还公开了一种可读存储介质,所述可读存储介质上存储有程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。

本申请实施例中,获取中央处理器的配置文件;根据所述配置文件确定各个接口的识别顺序,并生成识别顺序列表;响应于识别顺序修改请求,在基本输入输出系统修改所述识别顺序列表中目标接口的识别顺序,并调整识别顺序发生变动的接口对应的端口资源标识的顺序,生成新的识别顺序列表;根据所述新的识别顺序列表扫描所述中央处理器连接的PCI设备。本发明提供一种可以通过BIOS修改PCI扫描顺序的方案,无需线下修改设备的插法,无需断电源。通过软件层面修改PCI 设备的扫描顺序,同步修改识别顺序发生变动的接口对应的端口资源标识的顺序,保证了与PCI设备对应的资产信息的正确性,由于无需担心硬件上的性能受到识别顺序的影响,实现既可以改变PCI设备的识别顺序,又不会影响性能。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。

图1是本发明实施例提供的一种PCI设备的连接方式;

图2是本发明实施例提供的一种识别PCI设备方法;

图3是本发明实施例提供的又一种识别PCI设备方法;

图4是本发明实施例提供的一种识别PCI设备信息的流程图;

图5是本发明实施例提供的一种改变PCI设备识别顺序的流程图;

图6是本发明实施例提供的一种识别PCI设备装置的框图;

图7是本发明实施例提供的一种电子设备;

图8是本发明实施例提供的又一种电子设备。

具体实施方式

本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。

下面对本申请相关的概念和背景做一下解释。

PCI (Peripheral Component Interconnect,局部总线标准)总线主要被分成三部分:

PCI 设备,符合 PCI 总线标准的设备就被称为 PCI 设备,PCI 总线架构中可以包含多个 PCI 设备。PCI 设备同时也分为主设备和目标设备两种,主设备是一次访问操作的发起者,而目标设备则是被访问者。

PCI 总线,PCI 总线在系统中可以有多条,类似于树状结构进行扩展,每条 PCI总线都可以连接多个 PCI 设备/桥。

PCI 桥,当一条 PCI 总线的承载量不够时,可以用新的 PCI 总线进行扩展,而PCI 桥则是连接 PCI 总线之间的纽带。

PCI空间与处理器空间隔离。PCI设备具有独立的地址空间,即PCI总线地址空间,该空间与存储器地址空间通过Host bridge(主桥)隔离。处理器需要通过Host bridge才能访问PCI设备,而PCI设备需要通过Host bridge才能主存储器。在Host bridge中含有许多缓冲,这些缓冲使得处理器总线与PCI总线工作在各自的时钟频率中,彼此互不干扰。Hostbridge的存在也使得PCI设备和处理器可以方便地共享主存储器资源。处理器访问PCI设备时,必须通过Host bridge进行地址转换;而PCI设备访问主存储器时,也需要通过Hostbridge进行地址转换。

PCI是一种由英特尔(Intel)公司1991年推出的用于定义局部总线的标准。此标准允许在计算机内安装多达10个遵从PCI标准的扩展卡。最早提出的PCI总线工作在33MHz频率之下,传输带宽达到132MB/s(33MHz * 32bit/8),基本上满足了当时处理器的发展需要。

PCI总线具有很强的扩展性。在PCI总线中,Root Bridge可以直接连出一条PCI总线,这条总线也是该Root bridge(根桥)所管理的第一条PCI总线,该总线还可以通过PCI桥扩展出一系列PCI总线,并以Root bridge为根节点,形成1颗PCI总线树。在同一条PCI总线上的设备间可以直接通信,并不会影响其他PCI总线上设备间的数据通信。隶属于同一颗PCI总线树上的PCI设备,也可以直接通信,但是需要通过PCI桥进行数据转发。

BIOS( Basic Input Output System,基本输入输出系统)是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。此外,BIOS还向作业系统提供一些系统参数。系统硬件的变化是由BIOS隐藏,程序使用BIOS功能而不是直接控制硬件。

参考图1,图1示出了一种PCI设备的连接方式,在读取PCI设备时,按照先读取端口0,读取端口0下设置的网卡,再通过端口1读取目标网卡的方式,若要先读取目标网卡,需要改变目标网卡的位置,将目标网卡插于端口0下的交换板才能实现,上述方式,在需要变更识别顺序的PCI设备较多时,效率较低。因此,本申请提出了一种识别PCI设备的方法,用于更改PCI设备的识别顺序,实现在不改变目标网卡的插槽位置的情况下,先读取目标网卡的功能。

参考图2,其示出了本申请实施例提供的一种识别PCI设备方法的步骤流程图,所述方法包括:

步骤101,获取中央处理器的配置文件。

在本发明实施例中,中央处理器的配置文件可以是保存有中央处理器的启动顺序的文件。

本发明以Intel XCC型号 CPU 为例,其他类型CPU方法雷同。首先介绍XCC。XCCCPU的拓扑并不是按照PE0/1/2/3/4顺序排列,而是PE0/4/2/1/3乱序。在获取到配置文件,可以通过读取配置文件中的表征中央处理器型号的标识,确定中央处理器的型号,不同型号的中央处理器具有不同的PE个数和PE识别顺序,在确定了中央处理器的型号后,可以基于中央处理器的型号确定PE识别顺序。

步骤102,根据所述配置文件确定各个接口的识别顺序,并生成识别顺序列表。

在本发明实施例中,BIOS post阶段(加电自检)在初始化CPU时会先获取CPU的PEmapping,即中央处理器的配置文件,若存在PE mapping,并判断为XCC 型号,则会设置一个转换表格,将XCC的拓扑转换为顺序排列,接下来的CPU初始化将按照该步骤转换后的PEmapping进行。Post中期进入到PCI初始化阶段,BIOS会根据当前转换的PE顺序进行扫描配置。BIOS可以抓住这个规律,将该逻辑优化为可任意调控的方案。

参考表1,表1示出了上述转换表格的内容,根据中央处理器的型号,可将PE的识别顺序转换为如下顺序。在识别时,按照PE0、PE4、PE2、PE1、PE3的顺序进行识别,而非PE0、PE1、PE2、PE3、PE4,不同型号的中央处理器对应的转换表格不同。

表1

步骤103,响应于识别顺序修改请求,在基本输入输出系统修改所述识别顺序列表中目标接口的识别顺序,并调整识别顺序发生变动的接口对应的端口资源标识的顺序,生成新的识别顺序列表。

在本发明实施例中,可以在BIOS的setup选项列表中添加一个选项单“修改扫描顺序”,支持任意调整PE0 、PE1、PE2、PE3、PE4等的顺序。在调整顺序前需要注意的是,PE的顺序改变会导致PE各个port原有带宽分配与资产信息赋值的错乱,因为PE上的index(可以理解为每个port上所接的设备的端口号,即本申请中的端口资源标识)是按照初始顺序依次设置的,比如修改PE1优先于PE0扫描,那么就要同步更改PE0和PE1的index顺序,否则就会出现带宽和资产信息颠倒的现象。在这些需要反转的位置,添加上setup选项中对应的接口,当调整PE接口顺序后,对应的PE port首先要对比当前顺序与用户修改的顺序是否发生改变,若用户将PE4 与PE1交换,则BIOS底层逻辑中要将原有的PE1的带宽端口与资产信息端口与PE4的相互交换。实现线上修改PE扫描顺序进而改变PCI的扫描顺序。

步骤104,根据所述新的识别顺序列表扫描所述中央处理器连接的PCI设备。

在本发明实施例中,调整识别顺序后,可以基于新的识别顺序列表扫描中央处理器连接的PCI设备。以附图1为例,可以通过软件的方式,使得在扫描时,先扫描端口1的目标网卡,再扫描端口1下的网卡,实现扫描顺序由用户自定义实现。

进一步地,BIOS可远程独立修改PCI的识别顺序,使得在实际使用过程中,修改操作系统下主网卡、配合操作系统测试等方面变得十分容易。本发明明显增强了BIOS的实用性,在不需要线下到现场的情况下实现了远程修改PCI的扫描顺序,实现既可以改变PCI设备的识别顺序,又不会影响性能,大大提高了BIOS的实用性,满足客户多种测试场景需求。

本申请实施例中,获取中央处理器的配置文件;根据所述配置文件确定各个接口的识别顺序,并生成识别顺序列表;响应于识别顺序修改请求,在基本输入输出系统修改所述识别顺序列表中目标接口的识别顺序,并调整识别顺序发生变动的接口对应的端口资源标识的顺序,生成新的识别顺序列表;根据所述新的识别顺序列表扫描所述中央处理器连接的PCI设备。本发明提供一种可以通过BIOS修改PCI扫描顺序的方案,无需线下修改设备的插法,无需断电源。通过软件层面修改PCI 设备的扫描顺序,同步修改识别顺序发生变动的接口对应的端口资源标识的顺序,保证了与PCI设备对应的资产信息的正确性,由于无需担心硬件上的性能受到识别顺序的影响,实现既可以改变PCI设备的识别顺序,又不会影响性能。

参考图3,其示出了本申请实施例提供的又一种识别PCI设备方法的步骤流程图,所述方法包括:

步骤201,获取中央处理器的配置文件。

此步骤可参考步骤101,此处不再赘述。

步骤202,根据所述配置文件确定各个接口的识别顺序,并生成识别顺序列表。

此步骤可参考步骤102,此处不再赘述。

可选地,步骤202包括:

子步骤2021,根据所述配置文件,确定所述中央处理器的型号;

在本发明实施例中,针对子步骤2021,配置文件中可以包括中央处理器的SKU信息。在CPU型号中,SKU是指各种不同型号的CPU,通常由一些数字组成。这些数字代表了CPU的不同参数,包括核心数量、线程数量、基础频率、最大睿频等等。例如,Intel Core i7-8700K中的“8700”就代表了这个型号的性能级别。

可选地,子步骤2021包括:

子步骤20211,从所述配置文件中读取中央处理器的型号标识;

子步骤20212,根据所述型号标识确定所述中央处理器的型号。

在本发明实施例中,针对子步骤20211和子步骤20212,型号标识即CPU的SKU信息,具体参考子步骤2021的描述,此处不再赘述。

子步骤2022,根据所述中央处理器的型号,生成识别顺序列表。

可选地,子步骤2022包括:

子步骤20221,根据所述中央处理器的型号,确定所述中央处理器的接口拓扑顺序;

子步骤20222,将所述接口拓扑顺序转换为顺序排列,生成识别顺序列表。

在本发明实施例中,针对子步骤20221和子步骤20222,不同型号的中央处理器的接口拓扑顺序不同,以Intel XCC型号 CPU 为例,BIOS post阶段(加电自检)在初始化CPU时会先获取CPU的PE mapping,即中央处理器的配置文件,若存在PE mapping,并判断为XCC型号,则会设置一个转换表格,将XCC的拓扑转换为顺序排列,接下来的CPU初始化将按照该步骤转换后的PE mapping进行,XCC转换后的识别顺序列表为PE0、PE4、PE2、PE1、PE3的顺序。

步骤203,在基本输入输出系统修改所述识别顺序列表中目标接口的识别顺序后,将调整后的接口识别顺序与默认的所述识别顺序列表比较,确定是否存在接口的识别顺序发生改变。

在本发明实施例中,可以在BIOS的setup选项列表中添加一个选项单“修改扫描顺序”,以调整PE0 、PE1、PE2、PE3、PE4等的顺序。在基于基本输出输出系统调整了PE的识别顺序以后,对应的PE port首先要对比当前顺序相对用户修改的顺序是否发生改变,例如,若用户将PE4 与PE1交换,则BIOS底层逻辑中要将原有的PE1的带宽端口与资产信息端口与PE4的相互交换。实现线上修改PE扫描顺序进而改变PCI的扫描顺序。

可选地,步骤203包括:

子步骤2031,在基本输入输出系统的设置界面,显示调整识别顺序的菜单选项;

子步骤2032,响应于对所述菜单选项的第一输入,显示默认的识别顺序列表;

子步骤2033,响应于针对所述识别顺序列表的识别顺序修改请求,修改所述识别顺序列表中目标接口的识别顺序。

在本发明实施例中,针对子步骤2031至子步骤2033,在基本输入输出系统的设置界面,可以显示调整识别顺序的菜单选项,即用户进入基本输入输出系统后,可以基于菜单选项快捷的实现对PE识别顺序的调整。

进一步地,若用户对菜单选项执行第一输入,第一输入可以是进入调整识别顺序的菜单的输入,可以在基本输入输出系统的设置界面显示默认的识别顺序列表,以IntelXCC型号 CPU 为例,默认的识别顺序列表可以是PE0、PE4、PE2、PE1、PE3,用户可以通过调整识别顺序的菜单选项,调整识别顺序,例如,可以调整为PE4、PE0、PE2、PE1、PE3。

子步骤2032,响应于对所述菜单选项的第一输入,显示默认的识别顺序列表;

子步骤2033,响应于针对所述识别顺序列表的识别顺序修改请求,修改所述识别顺序列表中目标接口的识别顺序。

在本发明实施例中,针对子步骤2032和子步骤2033,若用户对菜单选项执行第一输入,第一输入可以是进入调整识别顺序的菜单的输入,可以在基本输入输出系统的设置界面显示默认的识别顺序列表,以Intel XCC型号 CPU 为例,默认的识别顺序列表可以是PE0、PE4、PE2、PE1、PE3,用户可以通过调整识别顺序的菜单选项,调整识别顺序,例如,可以交互PE0和PE4的位置,将默认的识别顺序调整为PE4、PE0、PE2、PE1、PE3。

另外,对PE的识别顺序可以基于实际需求进行任意方式的修改,本申请实施例在此不做限定。

可选地,子步骤2033包括:

子步骤20331,响应于针对所述识别顺序列表的识别顺序修改请求,交换所述识别顺序列表中任意两个接口的识别顺序。

此步骤可参考子步骤2032和子步骤2033,此处不再赘述。

步骤204,在确定存在接口的识别顺序发生改变的情况下,调整识别顺序发生变动的接口对应的端口资源标识的顺序,生成新的识别顺序列表;

在本发明实施例中,PE的顺序改变会导致PE各个port原有带宽分配与资产信息赋值的错乱,因为PE上的index(可以理解为每个port上所接的设备的端口号,即本申请中的端口资源标识)是按照初始顺序依次设置的,比如修改PE1优先于PE0扫描,那么就要同步更改PE0和PE1的index顺序,否则就会出现带宽和资产信息颠倒的现象。在这些需要反转的位置,添加上setup选项中对应的接口,当调整PE接口顺序后,对应的PE port首先要对比当前顺序与用户修改的顺序是否发生改变,若用户将PE4 与PE1交换,则BIOS底层逻辑中要将原有的PE1的带宽端口与资产信息端口与PE4的相互交换。实现线上修改PE扫描顺序进而改变PCI的扫描顺序。

可选地,步骤204包括:

子步骤2041,确定识别顺序变动的目标接口;

子步骤2042,修改所述端口资源标识的顺序,使得所述端口资源标识的顺序与修改后的目标接口的识别顺序对应。

在本发明实施例中,针对子步骤2041和子步骤2042,由于接口的顺序和接口对应资源的访问顺序是一致的,因此若修改了接口的识别顺序,应当对应修改资源的访问顺序,例如,若用户将PE4 与PE1交换,则BIOS底层逻辑中要将原有的PE1的带宽端口与资产信息端口与PE4的相互交换。实现线上修改PE扫描顺序进而改变PCI的扫描顺序。本发明提供一种可以通过BIOS修改PCI扫描顺序的方案,无需线下修改设备的插法,无需断电源。通过软件层面修改PCI 设备的扫描顺序,同步修改识别顺序发生变动的接口对应的端口资源标识的顺序,保证了与PCI设备对应的资产信息的正确性,由于无需担心硬件上的性能受到识别顺序的影响,实现既可以改变PCI设备的识别顺序,又不会影响性能。

步骤205,根据所述新的识别顺序列表扫描所述中央处理器连接的PCI设备。

此步骤可参考步骤101,此处不再赘述。

子步骤2051,根据所述新的识别顺序列表,扫描PCI设备,并获取所述PCI设备的地址标识;

子步骤2052,根据所述地址标识,获取所述PCI设备的相关信息并输出。

在本发明实施例中,针对子步骤2051和子步骤2052,在修改了接口的识别顺序后,可以根据新的识别顺序列表,扫描PCI设备,并获取PCI设备的地址标识。

进一步地,PCI设备的地址标识可以是PCI设备对应的BDF号,基于BDF号可以在系统中唯一确定一个 PCI 设备,进而访问PCI设备的配置空间,读取到PCI设备的相关信息,相关信息可以是PCI设备的厂商、型号等信息。

可选地,子步骤2052包括:

子步骤20521,根据所述地址标识,获取所述PCI设备的设备类型和厂商信息并输出;

子步骤20522,在所述PCI设备的等级符合预设等级条件的情况下,访问所述PCI设备的配置空间,输出所述PCI设备的配置信息。

在本发明实施例中,针对子步骤20521和子步骤20522,根据地址标识,可以获取PCI设备的设备类型和厂商信息并输出;另外,在PCI设备的等级符合预设等级条件的情况下,可以访问PCI设备的配置空间,输出PCI设备的配置信息,若PCI设备的等级不符合预设等级条件,则可以继续进行自检程序。

子步骤2053,根据所述识别顺序列表,继续进行下一个接口的自检过程。

在本发明实施例中,在识别完一个PCI设备后,基于新的识别顺序列表,继续进行下一个接口的自检过程。

参考图4,图4示出了本申请实施例提供的一种识别PCI设备信息的流程图,其中,包括:PCI初始化、判断当前所属CPU和port序号并记录输出,获取设备BDF号并记录输出,获取设备类型和厂商信息并记录输出,判断输出等级,若等级为level1,则访问配置空间抓取CE/UE/HOT PLUG等寄存器,尽可能所的呈现出设备的配置信息并输出。若等级为level0,则释放资源并继续进行自检过程。

本申请实施例中,获取中央处理器的配置文件;根据所述配置文件确定各个接口的识别顺序,并生成识别顺序列表;响应于识别顺序修改请求,在基本输入输出系统修改所述识别顺序列表中目标接口的识别顺序,并调整识别顺序发生变动的接口对应的端口资源标识的顺序,生成新的识别顺序列表;根据所述新的识别顺序列表扫描所述中央处理器连接的PCI设备。本发明提供一种可以通过BIOS修改PCI扫描顺序的方案,无需线下修改设备的插法,无需断电源。通过软件层面修改PCI 设备的扫描顺序,同步修改识别顺序发生变动的接口对应的端口资源标识的顺序,保证了与PCI设备对应的资产信息的正确性,由于无需担心硬件上的性能受到识别顺序的影响,实现既可以改变PCI设备的识别顺序,又不会影响性能。

可选地,所述端口资源标识包括:带宽端口标识和资产信息端口标识。

在本发明实施例中,计算机的接口卡一般会用到 I/O 端口、存储器空间、中断及DMA 等计算机资源。PCI 接口卡,由软件统筹分配资源。为实现此功能,PCI 协议除了可以对 I/O 空间、存储器空间读写外,还定义了对配置空间的读写(C/BE0~C/BE3=1010、1011)。所谓配置空间,是指映射到每块接口卡上的 256 字节的特殊功能寄存器。主板上电后,由 PnP-Bios 读取各卡的配置空间,对它们所需的资源进行统筹分配,再将分配结果写回对应的配置空间地址,完成自动配置。

可选地,所述地址标识为BDF号,所述BDF号包括总线号、设备号和功能号。

在本发明实施例中,如果要访问 PCI 设备的配置空间,就必须知道这个设备在系统中的物理连接情况。描述这个连接情况的数据BDF号(Bus,Device,Function)是“总线号”、“设备号”和“功能号”。一个系统可以有 256 个 PCI总线,每个总线上可以有 32 个设备,每个设备可以具有 8 个功能(每个功能作为一个 PCI设备)。当这三个数据确定的时候,就可以在系统中唯一确定一个 PCI 设备。将 PCI 设备的总线号(8 位)、设备号(5位)、功能号(3 位)和配置空间的偏移地址写入 0xCF8,就可以通过 0xCFC 端口访问相应位置的配置值。在 DOS 下访问 PCI 设备一般采用 PCI BIOS 服务功能,通过执行 INT1AH 指令可以调用 PCI BIOS。

具体地,BUS:总线号,最多可以通过配置软件分配256个总线号。初始总线号,总线0,通常由硬件分配给Root Complex。总线0由一个集成了端点的虚拟PCI总线和一个硬编码的设备号和功能号的虚拟PCI-to-PCI桥(P2P)组成。每个P2P网桥创建一个新的总线,附加的PCle设备可以连接到该总线。每个总线必须被分配一个唯一的总线号。配置软件通过搜索从总线0、设备0、功能0开始的桥,开始分配总线号,当发现网桥时,软件会给新总线分配一个唯一且大于网桥所在总线号的总线号。一旦新总线被分配了一个总线号,软件就开始在继续扫描当前总线上的更多的桥之前寻找新总线上的桥。

Device:设备号,PCle允许在单个PCI总线上最多32个设备号,然而,PCle的点对点特性意味着只有单个设备可以直接连接到PCle链路,并且该设备总是以device 0结束。RC和Switch有虚拟PCI总线,它允许多个设备“连接”到总线上。每个设备必须实现Function0,并且可能包含多达8个Function 的集合。当包含两个或多个Function时,设备称为多功能设备。

Function:功能号,如前所述,功能被包含到每个Device中。这些功能可能包括硬盘接口、显示控制器、以太网控制器、USB控制器等。具有多个功能的设备不需要按顺序实现。例如,设备可能实现Function0、2和7。因此,当软件检测多功能设备时,必须检查每一个可能的功能,以了解哪些功能是存在的。每个Function也有自己的配置地址空间,用于设置关联的资源。

参考图5,图5示出 本申请实施例提供的又一种改变PCI设备识别顺序的流程图,其中,包括:开机、判断PCI扫描顺序选项是否更改,若发生了更改,则交换变更对应的带宽分配、资产信息分配内容,然后继续执行自检程序,若没有发生更改,则正常执行自检程序,若在setup修改了PCI扫描顺序,则重启设备,重新进行开机、确认扫描顺序是否发生更改的步骤。本发明明显增强了BIOS的实用性,在不需要线下到现场的情况下实现了远程修改PCI的扫描顺序,实现既可以改变PCI设备的识别顺序,又不会影响性能,大大提高了BIOS的实用性,满足客户多种测试场景需求。

本申请的方法还可以应用于用户业务发生变更或需要反复切换PCI设备在操作系统中的顺序来进行操作系统等软件层面的特殊测试,短时间内难以批量线下修改插法,如大批量修改需要大量人力、断电等,如果是switch机型,插法可能会有一定的要求,改变交换板的位置对性能和底层cpld固件可能会有较大影响。这时候就通过本申请的PCI设备识别方法可以快速饿得实现切换PCI设备在操作系统中的顺序,且不会影响硬件性能。

本申请实施例中,获取中央处理器的配置文件;根据所述配置文件确定各个接口的识别顺序,并生成识别顺序列表;响应于识别顺序修改请求,在基本输入输出系统修改所述识别顺序列表中目标接口的识别顺序,并调整识别顺序发生变动的接口对应的端口资源标识的顺序,生成新的识别顺序列表;根据所述新的识别顺序列表扫描所述中央处理器连接的PCI设备。本发明提供一种可以通过BIOS修改PCI扫描顺序的方案,无需线下修改设备的插法,无需断电源。通过软件层面修改PCI 设备的扫描顺序,同步修改识别顺序发生变动的接口对应的端口资源标识的顺序,保证了与PCI设备对应的资产信息的正确性,由于无需担心硬件上的性能受到识别顺序的影响,实现既可以改变PCI设备的识别顺序,又不会影响性能。

参考图6,其示出了本申请实施例提供的一种识别PCI设备的装置的框图,所述装置30包括:

获取模块301,用于获取中央处理器的配置文件;

生成模块302,用于根据所述配置文件确定各个接口的识别顺序,并生成识别顺序列表;

修改模块303,用于响应于识别顺序修改请求,在基本输入输出系统修改所述识别顺序列表中目标接口的识别顺序,并调整识别顺序发生变动的接口对应的端口资源标识的顺序,生成新的识别顺序列表;

识别模块304,用于根据所述新的识别顺序列表扫描所述中央处理器连接的PCI设备。

可选地,所述修改模块,包括:

比较子模块,用于在基本输入输出系统修改所述识别顺序列表中目标接口的识别顺序后,将调整后的接口识别顺序与默认的所述识别顺序列表比较,确定是否存在接口的识别顺序发生改变;

调整子模块,用于在确定存在接口的识别顺序发生改变的情况下,调整识别顺序发生变动的接口对应的端口资源标识的顺序。

可选地,所述调整子模块,包括:

确定单元,用于确定识别顺序变动的目标接口;

修改单元,用于修改所述端口资源标识的顺序,使得所述端口资源标识的顺序与修改后的目标接口的识别顺序对应。

可选地,所述修改模块,包括:

第一显示子模块,用于在基本输入输出系统的设置界面,显示调整识别顺序的菜单选项;

第二显示子模块,用于响应于对所述菜单选项的第一输入,显示默认的识别顺序列表;

修改子模块,用于响应于针对所述识别顺序列表的识别顺序修改请求,修改所述识别顺序列表中目标接口的识别顺序。

可选地,所述修改子模块,包括:

交换单元,用于响应于针对所述识别顺序列表的识别顺序修改请求,交换所述识别顺序列表中任意两个接口的识别顺序。

可选地,所述生成模块,包括:

型号确定模块,用于根据所述配置文件,确定所述中央处理器的型号;

识别顺序确定模块,用于根据所述中央处理器的型号,生成识别顺序列表。

可选地,所述型号确定模块,包括:

读取单元,用于从所述配置文件中读取中央处理器的型号标识;

型号确定单元,用于根据所述型号标识确定所述中央处理器的型号。

可选地,所述识别顺序确定模块,包括:

拓扑顺序确定模块,用于根据所述中央处理器的型号,确定所述中央处理器的接口拓扑顺序;

排序模块,用于将所述接口拓扑顺序转换为顺序排列,生成识别顺序列表。

可选地,所述识别模块,包括:

地址获取子模块,用于根据所述新的识别顺序列表,扫描PCI设备,并获取所述PCI设备的地址标识;

设备信息获取子模块,用于根据所述地址标识,获取所述PCI设备的相关信息并输出;

自检子模块,用于根据所述识别顺序列表,继续进行下一个接口的自检过程。

可选地,所述设备信息获取子模块,包括:

第一输出单元,用于根据所述地址标识,获取所述PCI设备的设备类型和厂商信息并输出;

第二输出单元,用于在所述PCI设备的等级符合预设等级条件的情况下,访问所述PCI设备的配置空间,输出所述PCI设备的配置信息。

可选地,所述端口资源标识包括:带宽端口标识和资产信息端口标识。

可选地,所述地址标识为BDF号,所述BDF号包括总线号、设备号和功能号。

本申请实施例中,获取中央处理器的配置文件;根据所述配置文件确定各个接口的识别顺序,并生成识别顺序列表;响应于识别顺序修改请求,在基本输入输出系统修改所述识别顺序列表中目标接口的识别顺序,并调整识别顺序发生变动的接口对应的端口资源标识的顺序,生成新的识别顺序列表;根据所述新的识别顺序列表扫描所述中央处理器连接的PCI设备。本发明提供一种可以通过BIOS修改PCI扫描顺序的方案,无需线下修改设备的插法,无需断电源。通过软件层面修改PCI 设备的扫描顺序,同步修改识别顺序发生变动的接口对应的端口资源标识的顺序,保证了与PCI设备对应的资产信息的正确性,由于无需担心硬件上的性能受到识别顺序的影响,实现既可以改变PCI设备的识别顺序,又不会影响性能。

图7是根据一示例性实施例示出的一种电子设备600的框图。例如,电子设备600可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。

参照图7,电子设备600可以包括以下一个或多个组件:处理组件602,存储器604,电源组件606,多媒体组件608,音频组件610,输入/输出(I/ O)的接口612,传感器组件614,以及通信组件616。

处理组件602通常控制电子设备600的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件602可以包括一个或多个处理器620来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件602可以包括一个或多个模块,便于处理组件602和其他组件之间的交互。例如,处理组件602可以包括多媒体模块,以方便多媒体组件608和处理组件602之间的交互。

存储器604用于存储各种类型的数据以支持在电子设备600的操作。这些数据的示例包括用于在电子设备600上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,多媒体等。存储器604可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。

电源组件606为电子设备600的各种组件提供电力。电源组件606可以包括电源管理系统,一个或多个电源,及其他与为电子设备600生成、管理和分配电力相关联的组件。

多媒体组件608包括在所述电子设备600和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的分界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件608包括一个前置摄像头和/或后置摄像头。当电子设备600处于操作模式,如拍摄模式或多媒体模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。

音频组件610用于输出和/或输入音频信号。例如,音频组件610包括一个麦克风(MIC),当电子设备600处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器604或经由通信组件616发送。在一些实施例中,音频组件610还包括一个扬声器,用于输出音频信号。

I/ O接口612为处理组件602和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。

传感器组件614包括一个或多个传感器,用于为电子设备600提供各个方面的状态评估。例如,传感器组件614可以检测到电子设备600的打开/关闭状态,组件的相对定位,例如所述组件为电子设备600的显示器和小键盘,传感器组件614还可以检测电子设备600或电子设备600一个组件的位置改变,用户与电子设备600接触的存在或不存在,电子设备600方位或加速/减速和电子设备600的温度变化。传感器组件614可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件614还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件614还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。

通信组件616用于便于电子设备600和其他设备之间有线或无线方式的通信。电子设备600可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件616经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件616还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。

在示例性实施例中,电子设备600可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于实现本申请实施例提供的一种识别PCI设备的方法。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器604,上述指令可由电子设备600的处理器620执行以完成上述方法。例如,所述非临时性存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。

图8是根据一示例性实施例示出的一种电子设备700的框图。例如,电子设备700可以被提供为一服务器。参照图8,电子设备700包括处理组件722,其进一步包括一个或多个处理器,以及由存储器732所代表的存储器资源,用于存储可由处理组件722的执行的指令,例如应用程序。存储器732中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件722被配置为执行指令,以执行本申请实施例提供的一种识别PCI设备方法。

电子设备700还可以包括一个电源组件726被配置为执行电子设备700的电源管理,一个有线或无线网络接口750被配置为将电子设备700连接到网络,和一个输入输出(I/O)接口758。电子设备700可以操作基于存储在存储器732的操作系统,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。

本申请实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现所述识别PCI设备方法。

本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

技术分类

06120116571937