PCIe设备共享网络的生成方法、装置及系统转让专利

申请号 : CN201610341261.9

文献号 : CN106100953A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 丁瑞全陈国峰李志张家军

申请人 : 北京百度网讯科技有限公司

摘要 :

本申请公开了PCIe设备共享网络的生成方法、装置及系统。所述方法的一具体实施方式包括:获取至少一个PCIe设备的设备信息;根据设备信息为PCIe设备设置虚拟内存地址;设置PCIe交换机网络与PCIe设备的连接关系;通过连接关系建立PCIe交换机与PCIe设备的对应关系表,根据对应关系表生成PCIe设备共享网络,对应关系表包括设备信息和虚拟内存地址。该实施方式使得连接PCIe设备共享网络的PCIe主机都能通过虚拟内存地址访问PCIe设备共享网络上的PCIe设备;PCIe主机所能访问的PCIe设备数量可以突破PCIe主机本地PCIe插槽的限制,PCIe设备可以被不同的PCIe主机按需共享使用,因此提高了PCIe设备的利用率。

权利要求 :

1.一种PCIe设备共享网络的生成方法,其特征在于,所述方法包括:获取至少一个PCIe设备的设备信息,所述设备信息包括设备名称、设备类型信息和设备功能信息中的至少一项;

根据所述设备信息为所述PCIe设备设置虚拟内存地址,所述PCIe设备与虚拟内存地址之间为一一对应关系;

设置PCIe交换机网络与所述PCIe设备的连接关系,所述PCIe交换机网络用于PCIe设备和PCIe主机之间的数据传输,所述PCIe交换机网络包括至少一个PCIe交换机;

通过所述连接关系建立所述PCIe交换机与所述PCIe设备的对应关系表,根据所述对应关系表生成PCIe设备共享网络,所述对应关系表包括所述设备信息和虚拟内存地址。

2.根据权利要求1所述的方法,其特征在于,所述根据所述设备信息为所述PCIe设备设置虚拟内存地址包括:查看配置处理器的物理地址总线的位数,所述配置处理器用于为所述PCIe设备设置虚拟内存地址;

设置对应所述物理地址总线的位数的最大物理内存地址范围和最大虚拟内存地址范围;

在所述最大虚拟内存地址范围中确定对应所述设备信息的虚拟内存地址。

3.根据权利要求2所述的方法,其特征在于,所述在所述最大虚拟内存地址范围中确定对应所述设备信息的虚拟内存地址包括:查看所述设备信息对应的PCIe设备是否是本地PCIe设备,若是,则在最大物理内存地址范围内为所述本地PCIe设备设置物理内存地址,否则,在最大虚拟内存地址范围内为所述PCIe设备分配内存地址。

4.根据权利要求2所述的方法,其特征在于,所述根据所述设备信息为所述PCIe设备设置虚拟内存地址还包括:将所述虚拟内存地址写入所述PCIe设备的寄存器内。

5.根据权利要求1所述的方法,其特征在于,所述设置PCIe交换机网络与所述PCIe设备的连接关系包括:建立所述PCIe交换机与PCIe设备之间的第一连接关系;

根据所述第一连接关系确定所述PCIe交换机网络内PCIe交换机之间的第二连接关系。

6.根据权利要求5所述的方法,其特征在于,所述设置PCIe交换机网络与所述PCIe设备的连接关系还包括:通过所述第二连接关系构建PCIe交换机连接关系表。

7.根据权利要求5所述的方法,其特征在于,所述设置PCIe交换机网络与所述PCIe设备的连接关系还包括:为所述PCIe交换机设置基地址列表,所述基地址列表用于显示当前所述PCIe交换机所连接的PCIe设备。

8.根据权利要求7所述的方法,其特征在于,所述通过所述连接关系建立所述PCIe交换机与所述PCIe设备的对应关系表包括:通过所述第一连接关系和第二连接关系确定所述PCIe交换机到所述PCIe设备的访问路径,根据所述访问路径得到对应关系表。

9.根据权利要求1所述的方法,其特征在于,所述方法还包括:

根据PCIe主机的权限确定访问关系表,将所述访问关系表发送给所述PCIe主机,所述访问关系表用于确定PCIe主机访问的PCIe设备,包括PCIe设备的设备信息。

10.一种PCIe设备共享网络的数据传输方法,其特征在于,所述方法包括:接收PCIe设备访问申请报文,所述PCIe设备访问申请报文包括对应PCIe主机的访问关系表中的PCIe设备的设备信息,所述设备信息包括所述PCIe设备在所述PCIe主机上的本地内存地址;

从所述PCIe设备访问申请报文中解析出设备信息;

通过所述设备信息确定所述PCIe设备的虚拟内存地址,建立虚拟内存地址与本地内存地址的转换关系信息;

配置从所述PCIe主机到PCIe设备的数据转发信息,所述数据转发信息用于确定所述PCIe主机访问PCIe设备的访问路径;

将所述转换关系信息和数据转发信息发送给PCIe交换机。

11.根据权利要求10所述的方法,其特征在于,所述通过所述设备信息确定所述PCIe设备的虚拟内存地址包括:查询对应关系表,得到所述PCIe设备的对应所述本地内存地址的虚拟内存地址,所述对应关系表用于表征本地内存地址与虚拟内存地址之间的映射关系,所述对应关系表包括所述设备信息和虚拟内存地址。

12.根据权利要求11所述的方法,其特征在于,所述配置从所述PCIe主机到PCIe设备的数据转发信息包括:查询所述PCIe交换机的基地址列表;

根据所述基地址列表确定与所述虚拟内存地址对应的PCIe设备连接的PCIe交换机,得到所述PCIe主机访问所述PCIe设备的访问路径。

13.一种PCIe设备共享网络的数据传输方法,其特征在于,所述方法包括:接收PCIe主机发来的PCIe设备访问报文,所述PCIe设备访问报文包括所述PCIe主机访问的PCIe设备的设备信息和任务信息,所述设备信息包括所述PCIe设备在所述PCIe主机上的本地内存地址;

查询与所述PCIe主机连接的PCIe交换机上的转换关系信息,通过所述转换关系信息将所述设备信息中的本地内存地址替换为虚拟内存地址,所述转换关系信息用于表征本地内存地址和虚拟内存地址的对应关系;

根据所述虚拟内存地址和数据转发信息将所述任务信息发送至所述PCIe设备,所述数据转发信息用于确定所述PCIe主机访问PCIe设备的访问路径。

14.根据权利要求13所述的方法,其特征在于,所述方法还包括:接收转换关系信息和数据转发信息的步骤,包括:

接收PCIe主机发来的PCIe设备访问申请报文,并将所述PCIe设备访问申请报文转发给PCIe配置主机,所述PCIe设备访问申请报文包括对应PCIe主机的访问关系表中的PCIe设备的设备信息,所述访问关系表用于确定PCIe主机访问的PCIe设备,包括PCIe设备的设备信息;

接收PCIe配置主机发来的对应所述PCIe设备访问申请报文的转换关系信息和数据转发信息,并将所述转换关系信息和数据转发信息保存到与所述PCIe主机连接的PCIe交换机。

15.根据权利要求13所述的方法,其特征在于,所述根据所述虚拟内存地址和数据转发信息将所述任务信息发送至所述PCIe设备包括:通过虚拟内存地址查看与所述PCIe主机连接的PCIe交换机是否与所述PCIe设备连接,若是,则将所述任务信息发送至所述PCIe设备,否则,按照所述数据转发信息将所述任务信息发送至与所述PCIe主机连接的PCIe交换机的下一级PCIe交换机;

通过虚拟内存地址查看所述下一级PCIe交换机是否与所述PCIe设备连接,若是,则将所述任务信息发送至所述PCIe设备,否则,按照所述数据转发信息,将所述任务信息发送至所述下一级PCIe交换机的下一级PCIe交换机,直至将所述任务信息发送至所述PCIe设备。

16.根据权利要求13所述的方法,其特征在于,所述方法包括:

若所述任务信息需要所述PCIe设备反馈对应所述任务信息的结果信息,则接收所述PCIe设备发来的结果信息,将所述结果信息封装成PCIe设备访问反馈报文,并将所述PCIe设备访问反馈报文发送给PCIe主机。

17.一种PCIe设备共享网络的生成装置,其特征在于,所述装置包括:设备信息获取单元,用于获取至少一个PCIe设备的设备信息,所述设备信息包括设备名称、设备类型信息和设备功能信息中的至少一项;

虚拟内存地址设置单元,用于根据所述设备信息为所述PCIe设备设置虚拟内存地址,所述PCIe设备与虚拟内存地址之间为一一对应关系;

连接关系设置单元,用于设置PCIe交换机网络与所述PCIe设备的连接关系,所述PCIe交换机网络用于PCIe设备和PCIe主机之间的数据传输,所述PCIe交换机网络包括至少一个PCIe交换机;

PCIe共享网络生成单元,用于通过所述连接关系建立所述PCIe交换机与所述PCIe设备的对应关系表,根据所述对应关系表生成PCIe设备共享网络,所述对应关系表包括所述设备信息和虚拟内存地址。

18.根据权利要求17所述的装置,其特征在于,所述虚拟内存地址设置单元包括:物理地址总线查询子单元,用于查看配置处理器的物理地址总线的位数,所述配置处理器用于为所述PCIe设备设置虚拟内存地址;

内存地址范围设置子单元,用于设置对应所述物理地址总线的位数的最大物理内存地址范围和最大虚拟内存地址范围;

虚拟内存地址设置子单元,用于在所述最大物理内存地址范围和最大虚拟内存地址范围中确定对应所述设备信息的虚拟内存地址。

19.根据权利要求18所述的装置,其特征在于,所述虚拟内存地址设置子单元包括:内存地址分配模块,用于查看所述设备信息对应的PCIe设备是否是本地PCIe设备,若是,则在最大物理内存地址范围内为所述本地PCIe设备设置物理内存地址,否则,在最大虚拟内存地址范围内为所述PCIe设备分配内存地址。

20.根据权利要求18所述的装置,其特征在于,所述虚拟内存地址设置单元还包括:虚拟内存地址存储子单元,用于将所述虚拟内存地址写入所述PCIe设备的寄存器内。

21.根据权利要求17所述的装置,其特征在于,所述连接关系设置单元包括:第一连接关系建立子单元,用于建立所述PCIe交换机与PCIe设备之间的第一连接关系;

第二连接关系建立子单元,用于根据所述第一连接关系确定所述PCIe交换机网络内PCIe交换机之间的第二连接关系。

22.根据权利要求21所述的装置,其特征在于,所述连接关系设置单元还包括:连接关系表构建子单元,用于通过所述第二连接关系构建PCIe交换机连接关系表。

23.根据权利要求21所述的装置,其特征在于,所述连接关系设置单元包括:基地址列表设置子单元,用于为所述PCIe交换机设置基地址列表,所述基地址列表用于显示当前所述PCIe交换机所连接的PCIe设备。

24.根据权利要求23所述的装置,其特征在于,所述PCIe共享网络生成单元包括:对应关系表获取子单元,用于通过所述第一连接关系和第二连接关系确定所述PCIe交换机到所述PCIe设备的访问路径,根据所述访问路径得到对应关系表。

25.根据权利要求17所述的装置,其特征在于,所述装置还包括:访问关系表获取单元,用于根据PCIe主机的权限确定访问关系表,将所述访问关系表发送给所述PCIe主机,所述访问关系表用于确定PCIe主机访问的PCIe设备,包括PCIe设备的设备信息。

26.一种PCIe设备共享网络的数据传输装置,其特征在于,所述装置包括:PCIe设备访问申请报文接收单元,用于接收PCIe设备访问申请报文,所述PCIe设备访问申请报文包括对应所述PCIe主机的访问关系表中的PCIe设备的设备信息,所述设备信息包括所述PCIe设备在所述PCIe主机上的本地内存地址;

信息提取单元,用于从所述PCIe设备访问申请报文中解析出设备信息;

虚拟内存地址确定单元,用于通过所述设备信息确定所述PCIe设备的虚拟内存地址,建立虚拟内存地址与本地内存地址的转换关系信息;

数据转发信息配置单元,用于配置从所述PCIe主机到PCIe设备的数据转发信息,所述数据转发信息用于确定所述PCIe主机访问PCIe设备的访问路径;

发送单元,用于将所述转换关系信息和数据转发信息发送给PCIe交换机。

27.根据权利要求26所述的装置,其特征在于,所述虚拟内存地址确定单元包括:虚拟内存地址确定子单元,用于查询对应关系表,得到所述PCIe设备的对应所述本地内存地址的虚拟内存地址,所述对应关系表用于表征本地内存地址与虚拟内存地址之间的映射关系,所述对应关系表包括所述设备信息和虚拟内存地址。

28.根据权利要求26所述的装置,其特征在于,所述数据转发信息配置单元包括:连接信息查询子单元,用于查询所述PCIe交换机的基地址列表;

访问路径获取子单元,用于根据所述基地址列表确定与所述虚拟内存地址对应的PCIe设备连接的PCIe交换机,得到所述PCIe主机访问所述PCIe设备的访问路径。

29.一种PCIe设备共享网络的数据传输装置,其特征在于,所述方法包括:PCIe设备访问报文接收单元,用于接收PCIe主机发来的PCIe设备访问报文,所述PCIe设备访问申请报文包括所述PCIe主机访问的PCIe设备的设备信息和任务信息,所述设备信息包括所述PCIe设备在所述PCIe主机上的本地内存地址;

内存地址替换单元,用于查询与所述PCIe主机连接的PCIe交换机上的转换关系信息,通过所述转换关系信息将所述设备信息中的本地内存地址替换为虚拟内存地址,所述转换关系信息用于表征本地内存地址和虚拟内存地址的对应关系;

任务信息发送单元,用于根据所述虚拟内存地址和数据转发信息将所述任务信息发送至所述PCIe设备,所述数据转发信息用于确定所述PCIe主机访问PCIe设备的访问路径。

30.根据权利要求29所述的装置,其特征在于,所述装置还包括:信息接收单元,用于接收转换关系信息和数据转发信息,包括:

申请报文转发子单元,用于接收PCIe主机发来的PCIe设备访问申请报文,并将所述PCIe设备访问申请报文转发给PCIe配置主机,所述PCIe设备访问申请报文包括对应PCIe主机的访问关系表中的PCIe设备的设备信息,所述访问关系表用于确定PCIe主机访问的PCIe设备,包括PCIe设备的设备信息;

信息接收子单元,用于接收PCIe配置主机发来的对应所述PCIe设备访问申请报文的转换关系信息和数据转发信息,并将所述转换关系信息和数据转发信息保存到与所述PCIe主机连接的PCIe交换机。

31.根据权利要求29所述的装置,其特征在于,所述任务信息发送单元包括:第一任务信息发送子单元,用于通过虚拟内存地址查看与所述PCIe主机连接的PCIe交换机是否与所述PCIe设备连接,若是,则将所述任务信息发送至所述PCIe设备,否则,按照所述数据转发信息将所述任务信息发送至与所述PCIe主机连接的PCIe交换机的下一级PCIe交换机;

第二任务信息发送子单元,用于通过虚拟内存地址查看所述下一级PCIe交换机是否与所述PCIe设备连接,若是,则将所述任务信息发送至所述PCIe设备,否则,按照所述数据转发信息,将所述任务信息发送至所述下一级PCIe交换机的下一级PCIe交换机,直至将所述任务信息发送至所述PCIe设备。

32.根据权利要求29所述的装置,其特征在于,所述装置包括:

信息反馈单元,用于在所述任务信息需要所述PCIe设备反馈对应所述任务信息的结果信息时,接收所述PCIe设备发来的结果信息,将所述结果信息封装成PCIe设备访问反馈报文,并将所述PCIe设备访问反馈报文发送给PCIe主机。

33.一种PCIe设备共享网络的信息交互系统,其特征在于,所述系统包括权利要求17至

25任一项所述的PCIe设备共享网络的生成装置、权利要求26至28任一项所述的PCIe设备共享网络的数据传输装置和权利要求29至32任一项所述的PCIe设备共享网络的数据传输装置。

说明书 :

PCIe设备共享网络的生成方法、装置及系统

技术领域

[0001] 本申请涉及信息处理技术领域,具体涉及网络数据处理技术领域,尤其涉及PCIe设备共享网络的生成方法、装置及系统。

背景技术

[0002] PCIe(Peripheral Component Interconnect-Express,外围部件互联总线)设备是指通过PCIe接口与其他设备(如计算机主板)连接,进行数据处理的设备,常见的PCIe设备有显卡、网卡、固态硬盘。PCIe接口属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,其主要优势就是数据传输速率高,而且还有相当大的发展潜力。
[0003] 现有的PCIe设备往往设置在PCIe主机(和PCIe设备进行数据交互的电子设备)内,供PCIe主机单独访问,而PCIe主机的PCIe插槽有限,只能设置少量PCIe设备;并且,不同PCIe主机包含的PCIe设备可能不同,这就导致PCIe设备的利用率很低。

发明内容

[0004] 本申请提供了PCIe设备共享网络的生成方法、装置及系统,以解决背景技术中提到的问题。
[0005] 一方面,本申请提供了一种PCIe设备共享网络的生成方法,所述方法包括:获取至少一个PCIe设备的设备信息,所述设备信息包括设备名称、设备类型信息和设备功能信息中的至少一项;根据所述设备信息为所述PCIe设备设置虚拟内存地址,所述PCIe设备与虚拟内存地址之间为一一对应关系;设置PCIe交换机网络与所述PCIe设备的连接关系,所述PCIe交换机网络用于PCIe设备和PCIe主机之间的数据传输,所述PCIe交换机网络包括至少一个PCIe交换机;通过所述连接关系建立所述PCIe交换机与所述PCIe设备的对应关系表,根据所述对应关系表生成PCIe设备共享网络,所述对应关系表包括所述设备信息和虚拟内存地址。
[0006] 第二方面,本申请提供了一种PCIe设备共享网络的数据传输方法,所述方法包括:接收PCIe设备访问申请报文,所述PCIe设备访问申请报文包括对应PCIe主机的访问关系表中的PCIe设备的设备信息,所述设备信息包括所述PCIe设备在所述PCIe主机上的本地内存地址;从所述PCIe设备访问申请报文中解析出设备信息;通过所述设备信息确定所述PCIe设备的虚拟内存地址,建立虚拟内存地址与本地内存地址的转换关系信息;配置从所述PCIe主机到PCIe设备的数据转发信息,所述数据转发信息用于确定所述PCIe主机访问PCIe设备的访问路径;将所述转换关系信息和数据转发信息发送给PCIe交换机。
[0007] 第三方面,本申请提供了一种PCIe设备共享网络的数据传输方法,所述方法包括:接收PCIe主机发来的PCIe设备访问报文,所述PCIe设备访问报文包括所述PCIe主机访问的PCIe设备的设备信息和任务信息,所述设备信息包括所述PCIe设备在所述PCIe主机上的本地内存地址;查询与所述PCIe主机连接的PCIe交换机上的转换关系信息,通过所述转换关系信息将所述设备信息中的本地内存地址替换为虚拟内存地址,所述转换关系信息用于表征本地内存地址和虚拟内存地址的对应关系;根据所述虚拟内存地址和数据转发信息将所述任务信息发送至所述PCIe设备,所述数据转发信息用于确定所述PCIe主机访问PCIe设备的访问路径。
[0008] 第四方面,本申请提供了一种PCIe设备共享网络的生成装置,所述装置包括:设备信息获取单元,用于获取至少一个PCIe设备的设备信息,所述设备信息包括设备名称、设备类型信息和设备功能信息中的至少一项;虚拟内存地址设置单元,用于根据所述设备信息为所述PCIe设备设置虚拟内存地址,所述PCIe设备与虚拟内存地址之间为一一对应关系;连接关系设置单元,用于设置PCIe交换机网络与所述PCIe设备的连接关系,所述PCIe交换机网络用于PCIe设备和PCIe主机之间的数据传输,所述PCIe交换机网络包括至少一个PCIe交换机;PCIe共享网络生成单元,用于通过所述连接关系建立所述PCIe交换机与所述PCIe设备的对应关系表,根据所述对应关系表生成PCIe设备共享网络,所述对应关系表包括所述设备信息和虚拟内存地址。
[0009] 第五方面,本申请提供了一种PCIe设备共享网络的数据传输装置,所述装置包括:PCIe设备访问申请报文接收单元,用于接收PCIe设备访问申请报文,所述PCIe设备访问申请报文包括对应所述PCIe主机的访问关系表红的PCIe设备的设备信息,所述设备信息包括所述PCIe设备在所述PCIe主机上的本地内存地址;信息提取单元,用于从所述PCIe设备访问申请报文中解析出设备信息;虚拟内存地址确定单元,用于通过所述设备信息确定所述PCIe设备的虚拟内存地址,建立虚拟内存地址与本地内存地址的转换关系信息;数据转发信息配置单元,用于配置从所述PCIe主机到PCIe设备的数据转发信息,所述数据转发信息用于确定所述PCIe主机访问PCIe设备的访问路径;发送单元,用于将所述转换关系信息和数据转发信息发送给PCIe交换机。
[0010] 第六方面,本申请提供了一种PCIe设备共享网络的数据传输装置,所述装置包括:PCIe设备访问报文接收单元,用于接收PCIe主机发来的PCIe设备访问报文,所述PCIe设备访问申请报文包括所述PCIe主机访问的PCIe设备的设备信息和任务信息,所述设备信息包括所述PCIe设备在所述PCIe主机上的本地内存地址;内存地址替换单元,用于查询与所述PCIe主机连接的PCIe交换机上的转换关系信息,通过所述转换关系信息将所述设备信息中的本地内存地址替换为虚拟内存地址,所述转换关系信息用于表征本地内存地址和虚拟内存地址的对应关系;任务信息发送单元,用于根据所述虚拟内存地址和数据转发信息将所述任务信息发送至所述PCIe设备,所述数据转发信息用于确定所述PCIe主机访问PCIe设备的访问路径。
[0011] 第七方面,本申请提供了一种PCIe设备共享网络的信息交互系统,所述系统包括上述第四方面的PCIe设备共享网络的生成装置、第五方面的PCIe设备共享网络的数据传输装置和第六方面的PCIe设备共享网络的数据传输装置。
[0012] 本申请提供的PCIe设备共享网络的生成方法、装置及系统首先获取PCIe设备的设备信息,然后通过设备信息为PCIe设备设置虚拟内存地址;之后设置PCIe交换机网络,并建立PCIe交换机与所述PCIe设备的对应关系表,最后生成PCIe设备共享网络,使得连接PCIe设备共享网络的PCIe主机都能通过虚拟内存地址访问PCIe设备共享网络上的PCIe设备;PCIe主机所能访问的PCIe设备数量可以突破PCIe主机本地PCIe插槽的限制,PCIe设备可以被不同的PCIe主机按需共享使用,因此提高了PCIe设备的利用率。

附图说明

[0013] 通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
[0014] 图1是根据本申请的PCIe设备共享网络的生成方法的一个实施例的流程图;
[0015] 图2是根据本申请的PCIe设备共享网络的数据传输方法的一个实施例的流程图;
[0016] 图3是根据本申请的PCIe设备共享网络的数据传输方法的另一个实施例的流程图;
[0017] 图4是根据本申请的PCIe设备共享网络的数据传输方法的又一个实施例的流程图;
[0018] 图5是根据本申请的PCIe设备共享网络的生成方法的应用场景的一个示意图;
[0019] 图6是根据本申请的将某一PCIe设备分配给指定PCIe主机的一个流程图;
[0020] 图7是根据本申请的根据虚拟内存地址查找PCIe设备的一个流程图;
[0021] 图8是根据本申请的为PCIe设备设置虚拟内存的一个示意图;
[0022] 图9是根据本申请的为32位基地址寄存器地址的PCIe设备设置虚拟内存的一个流程图;
[0023] 图10是根据本申请的PCIe设备共享网络的生成装置的一个实施例结构示意图;
[0024] 图11是根据本申请的PCIe设备共享网络的数据传输装置的一个实施例结构示意图;
[0025] 图12是根据本申请的PCIe设备共享网络的数据传输装置的另一个实施例结构示意图;
[0026] 图13是根据本申请的PCIe设备共享网络的数据传输装置的又一个实施例结构示意图;
[0027] 图14是适于用来实现本申请实施例的服务器的计算机系统的结构示意图。

具体实施方式

[0028] 下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
[0029] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0030] 图1示出了PCIe设备共享网络的生成方法的一个实施例的流程图100。
[0031] 如图1所示,本实施例的PCIe设备共享网络的生成方法包括以下步骤:
[0032] 步骤101,获取至少一个PCIe设备的设备信息。
[0033] PCIe设备是指通过PCIe接口进行数据传输的设备,如声卡、网卡、测试卡、固态硬盘或其他的PCIe设备。本实施例首先获取PCIe设备的设备信息,其中,所述设备信息包括设备名称、设备类型信息和设备功能信息中的至少一项。
[0034] 步骤102,根据所述设备信息为所述PCIe设备设置虚拟内存地址。
[0035] 通常,PCIe设备共享网络会包括多个PCIe设备,并且,可能出现多个相同的PCIe设备。为了避免造成对PCIe设备访问的混乱,需要在PCIe设备共享网络内对每一个PCIe设备都设置唯一的内存地址。当PCIe设备的数量较多时,通常为每个PCIe设备分配虚拟内存地址,以保证给每个PCIe设备都分配到内存地址。所述PCIe设备与虚拟内存地址之间为一一对应关系。
[0036] 在本实施例的一些可选的实现方式中,所述根据所述设备信息为所述PCIe设备设置虚拟内存地址可以包括以下步骤:
[0037] 第一步,查看配置处理器的物理地址总线的位数。
[0038] 实际中,需要通过PCIe配置主机构建PCIe设备共享网络。当为PCIe设备分配虚拟内存地址时,需要考虑PCIe配置主机的配置处理器的属性,所述配置处理器用于为所述PCIe设备设置虚拟内存地址;配置处理器的物理地址总线的位数是多少(相当于物理内存的大小),决定了配置处理器能够配置多大的物理内存地址,进而能够确定对应的最大的虚拟内存地址。
[0039] 第二步,设置对应所述物理地址总线的位数的最大物理内存地址范围和最大虚拟内存地址范围。
[0040] 配置处理器典型的物理地址总线的位数可以是32位、36位、42位、46位或其他位数。不同的物理地址总线的位数对应的物理内存地址不同。假设物理地址总线的位数为X,则最大的物理内存地址为2X。则最大物理内存地址范围为:0到最大的物理内存地址。然后,在确定最大的物理内存地址后,再确定最大的虚拟内存地址。最大的虚拟内存地址通常大于最大的物理内存地址,则最大虚拟内存地址范围为:最大的物理内存地址到最大的虚拟内存地址。最大的虚拟内存地址的具体取值视实际情况而定。
[0041] 第三步,在所述最大虚拟内存地址范围中确定对应所述设备信息的虚拟内存地址。
[0042] 确定了最大物理内存地址范围和最大虚拟内存地址范围后,根据设备信息确定PCIe设备在最大物理地址范围或最大虚拟内存地址范围的虚拟内存地址。
[0043] 在本实施例的一些可选的实现方式中,PCIe配置主机用于通过PCIe设备和PCIe交换机网络构建PCIe设备共享网络。当PCIe配置主机自身也有PCIe设备时,需要为自身的PCIe设备配置物理内存地址,然后对PCIe设备进行访问;如果给自身的PCIe设备配置了虚拟内存地址,则在访问自身的PCIe设备设备时会出现错误。为此,所述在所述最大物理地址范围和最大虚拟内存地址范围中确定对应所述设备信息的虚拟内存地址还可以包括:查看所述PCIe设备是否是本地PCIe设备,若是,则在最大物理内存地址范围内为所述本地PCIe设备设置物理内存地址,否则,在最大虚拟内存地址范围内为所述PCIe设备分配内存地址。
[0044] 在本实施例的一些可选的实现方式中,为了便于对PCIe设备进行识别,还需要保持PCIe设备的虚拟内存地址。即,所述根据所述设备信息为所述PCIe设备设置虚拟内存地址还包括:将所述虚拟内存地址写入所述PCIe设备的寄存器内。以便在对PCIe设备进行访问时,对PCIe设备进行确认。
[0045] 步骤103,设置PCIe交换机网络与所述PCIe设备的连接关系。
[0046] 本实施例的所述PCIe交换机网络用于PCIe设备和PCIe主机之间的数据传输,所述PCIe交换机网络包括至少一个PCIe交换机。实际中,PCIe设备和PCIe主机经常处于不同的位置,这就给PCIe主机访问PCIe设备带来困难。PCIe交换机网络可以将处于不同位置的多个PCIe交换机连接起来,使得PCIe主机通过连接PCIe交换机网络来访问不同位置的PCIe设备。
[0047] 在本实施例的一些可选的实现方式中,所述设置PCIe交换机网络与所述PCIe设备的连接关系可以包括以下步骤:
[0048] 第一步,建立所述PCIe交换机与PCIe设备之间的第一连接关系。
[0049] 当PCIe设备通过有线或无线的方式连接到PCIe交换机后,PCIe交换机与PCIe设备就建立的连接关系。通常,一个PCIe交换机会连接多个PCIe设备,一个PCIe设备也可以连接多个PCIe交换机,进而建立了PCIe交换机与PCIe设备之间的第一连接关系。
[0050] 第二步,根据所述第一连接关系确定所述PCIe交换机网络内PCIe交换机之间的第二连接关系。
[0051] 第一连接关系确定了第一连接关系PCIe交换机与PCIe设备之间连接关系。当PCIe主机需要访问某一PCIe设备,而该PCIe设备又不与该PCIe主机连接PCIe交换机连接时,就需要在第一连接关系的基础上,确定与该PCIe主机连接PCIe交换机,和与PCIe设备连接的PCIe交换机之间的路径,即,建立PCIe交换机之间的第二连接关系。进一步地,还可以通过所述第二连接关系构建PCIe交换机连接关系表,通过PCIe交换机连接关系表能够直观地确定PCIe交换机之间的连接关系。
[0052] 在本实施例的一些可选的实现方式中,构建了PCIe交换机连接关系表后,还需要知道每个PCIe交换机都连接了哪些PCIe设备,因此,所述设置PCIe交换机网络与所述PCIe设备的连接关系还可以包括:为所述PCIe交换机设置基地址列表,所述基地址列表用于显示当前所述PCIe交换机所连接的PCIe设备。
[0053] 步骤104,通过所述连接关系建立所述PCIe交换机与所述PCIe设备的对应关系表,根据所述对应关系表生成PCIe设备共享网络。
[0054] 得到PCIe交换机连接关系表和基地址列表后,可以确定每一个PCIe交换机到达PCIe设备的访问路径,进而得到建立所述PCIe交换机与所述PCIe设备的对应关系表。其中,所述对应关系表可以包括所述设备信息和虚拟内存地址。
[0055] 在本实施例的一些可选的实现方式中,所述通过所述连接关系建立所述PCIe交换机与所述PCIe设备的对应关系表可以包括:通过所述第一连接关系和第二连接关系确定所述PCIe交换机到所述PCIe设备的访问路径,根据所述访问路径得到对应关系表。第一连接关系与基地址列表对应,第二连接关系与PCIe交换机连接关系表对应,由上述描述可知,建立了PCIe交换机连接关系表和基地址列表后,就能够确定PCIe交换机到PCIe设备的访问路径,进而可以根据访问路径得到PCIe交换机与PCIe设备的对应关系表。
[0056] 在本实施例的一些可选的实现方式中,不同的PCIe主机访问PCIe设备的权限可以不同,因此,本实施例方法还可以包括:根据PCIe主机的权限确定访问关系表,将所述访问关系表发送给所述PCIe主机,所述访问关系表用于确定PCIe主机访问的PCIe设备,包括PCIe设备的设备信息。
[0057] 图2示出了PCIe设备共享网络的数据传输方法的一个实施例的流程图200。
[0058] 如图2所示,本实施例的PCIe设备共享网络的数据传输方法包括以下步骤:
[0059] 步骤201,接收PCIe设备访问申请报文。
[0060] 本实施例从PCIe配置主机及PCIe交换机网络角度描述PCIe设备共享网络的数据传输方法。当PCIe主机要访问PCIe设备共享网络上的某个PCIe设备时,需要发送用于访问指定PCIe设备的PCIe设备访问申请报文,所述PCIe设备访问申请报文包括对应PCIe主机的访问关系表中的PCIe设备的设备信息,所述设备信息包括所述PCIe设备在所述PCIe主机上的本地内存地址。
[0061] 步骤202,从所述PCIe设备访问申请报文中解析出设备信息和任务信息。
[0062] PCIe设备访问申请报文中包含了PCIe主机要访问的PCIe设备的设备信息,因此,需要解析出该PCIe设备的设备信息和需要该PCIe设备执行的任务信息。
[0063] 步骤203,通过所述设备信息确定所述PCIe设备的虚拟内存地址建立虚拟内存地址与本地内存地址的转换关系信息。
[0064] 由上述PCIe设备共享网络的生成方法可知,所述虚拟内存地址与所述PCIe设备为一一对应关系,根据设备信息能够确定PCIe设备。根据同一PCIe设备分别在PCIe设备共享网络上的虚拟内存地址和在PCIe主机上的本地内存地址,能够确定虚拟内存地址和本地内存地址的转换关系,并得到虚拟内存地址与本地内存地址的转换关系信息。
[0065] 在本实施例的一些可选的实现方式中,所述通过所述设备信息确定所述PCIe设备的虚拟内存地址包括:查询对应关系表,得到所述PCIe设备的对应所述本地内存地址的虚拟内存地址,所述对应关系表用于表征本地内存地址与虚拟内存地址之间的映射关系,所述对应关系表包括所述设备信息和虚拟内存地址。
[0066] 步骤204,配置从所述PCIe主机到PCIe设备的数据转发信息,所述数据转发信息用于确定所述PCIe主机访问PCIe设备的访问路径。
[0067] PCIe配置主机通过虚拟内存地址可以知道PCIe设备所连接的PCIe交换机,也知道PCIe主机所连接的PCIe交换机,通过网络连接关系可以确定PCIe主机到PCIe设备的访问路径,给访问路径中的每一个PCIe交换机设置PCIe主机与PCIe设备之间相互访问的双向路由策略。后续PCIe主机访问PCIe设备时,报文将由PCIe交换机按照预先设置好的路由策略自动转发到PCIe设备,反之一样。
[0068] 由上述描述可知,PCIe设备共享网络包括PCIe交换机与所述PCIe设备的对应关系表,因此,通过与PCIe主机连接的PCIe交换机和PCIe主机所要访问的PCIe设备,能够确定PCIe主机访问PCIe设备的访问路径,进而可以将任务信息发送给PCIe设备,可以包括以下步骤:
[0069] 第一步,查询所述PCIe交换机的基地址列表。
[0070] 第二步,根据所述基地址列表确定与所述虚拟内存地址对应的PCIe设备连接的PCIe交换机,得到所述PCIe主机访问所述PCIe设备的访问路径。
[0071] 步骤205,将所述转换关系信息和数据转发信息发送给PCIe交换机。
[0072] 获取到转换关系信息和数据转发信息后,将转换关系信息和数据转发信息发送给PCIe交换机。
[0073] 图3示出了PCIe设备共享网络的数据传输方法的一个实施例的流程图300。
[0074] 如图3所示,本实施例的PCIe设备共享网络的数据传输方法包括以下步骤:
[0075] 步骤301,接收PCIe主机发来的PCIe设备访问报文。
[0076] 当PCIe主机访问某个PCIe设备共享网络上的PCIe设备时,会将PCIe设备访问报文发给与PCIe主机自身直接连接的PCIe交换机。其中,所述PCIe设备访问申请报文包括所述PCIe主机访问的PCIe设备的设备信息和任务信息,所述设备信息包括所述PCIe设备在所述PCIe主机上的本地内存地址,所述任务信息用于指示PCIe设备进行相应的操作。
[0077] 步骤302,查询与所述PCIe主机连接的PCIe交换机上的转换关系信息,通过所述转换关系信息将所述设备信息中的本地内存地址替换为虚拟内存地址。
[0078] 与所述PCIe主机连接的PCIe交换机上的转换关系信息可以将PCIe设备访问报文中的PCIe设备在PCIe主机上的本地内存地址转换为PCIe设备在PCIe设备共享网络上的虚拟内存地址,以便于对应PCIe设备的任务信息在PCIe设备共享网络上的转发。所述转换关系信息用于表征本地内存地址和虚拟内存地址的对应关系。
[0079] 在本实施例的一些可选的实现方式中,本实施例方法还包括接收转换关系信息和数据转发信息的步骤,包括:
[0080] 第一步,接收PCIe主机发来的PCIe设备访问申请报文,并将所述PCIe设备访问申请报文转发给PCIe配置主机。
[0081] 在PCIe主机访问PCIe设备共享网络上的PCIe设备之前,需要先向PCIe设备共享网络提出PCIe设备访问申请,即PCIe设备访问申请报文。PCIe配置主机根据PCIe设备访问申请报文为PCIe主机配置相应的信息,以使得PCIe主机实现对PCIe设备共享网络上的PCIe设备的访问。其中,所述PCIe设备访问申请报文包括对应PCIe主机的访问关系表中的PCIe设备的设备信息,所述访问关系表用于确定PCIe主机访问的PCIe设备,包括PCIe设备的设备信息。
[0082] 第二步,接收PCIe配置主机发来的对应所述PCIe设备访问申请报文的转换关系信息和数据转发信息,并将所述转换关系信息和数据转发信息保存到与所述PCIe主机连接的PCIe交换机。
[0083] PCIe配置主机根据接收到的PCIe设备访问申请报文确定PCIe设备在PCIe设备共享网络上的虚拟内存地址,并配置从PCIe主机到PCIe设备的数据转发信息,以使得从PCIe主机到PCIe设备所经过的PCIe交换机能够将任务信息逐级发送给PCIe设备。
[0084] 步骤303,根据所述虚拟内存地址和数据转发信息将所述任务信息发送至所述PCIe设备。
[0085] 通过虚拟内存地址能够确定PCIe设备在PCIe设备共享网络上的位置,然后根据数据转发信息将任务信息发送给PCIe设备。其中,所述数据转发信息用于确定所述PCIe主机访问PCIe设备的访问路径。
[0086] 在本实施例的一些可选的实现方式中,所述根据所述虚拟内存地址和数据转发信息将所述任务信息发送至所述PCIe设备包括:
[0087] 第一步,通过虚拟内存地址查看与所述PCIe主机连接的PCIe交换机是否与所述PCIe设备连接,若是,则将所述任务信息发送至所述PCIe设备,否则,按照所述数据转发信息将所述任务信息发送至与所述PCIe主机连接的PCIe交换机的下一级PCIe交换机。
[0088] PCIe设备访问报文会首先发送给与所述PCIe主机连接的PCIe交换机,该交换机通过查看虚拟内存地址来确定PCIe设备是否与自身连接,如是,则直接将对应的任务信息发送给所述PCIe设备,否则,说明PCIe设备不与自身连接,则根据数据转发信息将任务信息发送给与所述PCIe主机连接的PCIe交换机的下一级PCIe交换机。
[0089] 第二步,通过虚拟内存地址查看所述下一级PCIe交换机是否与所述PCIe设备连接,若是,则将所述任务信息发送至所述PCIe设备,否则,按照所述数据转发信息,将所述任务信息发送至所述下一级PCIe交换机的下一级PCIe交换机,直至将所述任务信息发送至所述PCIe设备。
[0090] 下一级PCIe交换机执行上述相同的过程,即,先查看PCIe设备是否与自身连接,如果是,则将任务信息发送给PCIe设备,否则,继续通过数据转发信息将任务信息往下一级PCIe交换机发送,直至将所述任务信息发送至所述PCIe设备。
[0091] 在本实施例的一些可选的实现方式中,任务信息通常可分为两种,第一种是读操作,要求将任务信息发送给PCIe设备后,PCIe设备返回对应的结果信息;第二种是写操作,将任务信息发送给PCIe设备后,不要求PCIe设备返回对应的结果信息。因此,本实施例方法还包括:若所述任务信息需要所述PCIe设备反馈对应所述任务信息的结果信息,则接收所述PCIe设备发来的结果信息,将所述结果信息封装成PCIe设备访问反馈报文,并将所述PCIe设备访问反馈报文发送给PCIe主机。
[0092] 图4示出了PCIe设备共享网络的数据传输方法的一个实施例的流程图400。
[0093] 如图4所示,本实施例的PCIe设备共享网络的数据传输方法包括以下步骤:
[0094] 步骤401,发送PCIe设备访问报文。
[0095] 本实施例从PCIe主机角度描述PCIe设备共享网络的数据传输方法。当PCIe主机访问PCIe设备共享网络的PCIe设备时,需要发送对应PCIe设备的PCIe设备访问报文。
[0096] 在本实施例的一些可选的实现方式中,所述发送PCIe设备访问报文包括:
[0097] 第一步,查看用于访问PCIe设备的访问关系表,所述访问关系表包括PCIe主机能够访问的PCIe设备的设备信息。
[0098] 第二步,通过所述访问关系表选择PCIe设备。
[0099] 访问关系表包括PCIe设备的设备信息,PCIe主机根据任务信息选择访问关系表中的PCIe设备,包括:从所述访问关系表中提取所述设备信息。
[0100] 在执行上述步骤之前,PCIe主机还需要对访问关系表中的PCIe设备进行初始化操作,为访问关系表中的PCIe设备分配本地内存地址,并向PCIe设备共享网络发送PCIe设备访问申请报文,以使得与PCIe主机直接连接的PCIe交换机获取对应的转换关系信息和数据转发信息。
[0101] 第三步,发送对应所述PCIe设备的PCIe设备访问报文。
[0102] PCIe设备访问报文中包含被访问的PCIe设备的设备信息和任务信息。PCIe设备访问报文会被发送给与PCIe主机直接连接的PCIe交换机。
[0103] 步骤402,接收对应所述PCIe设备访问报文的PCIe设备访问反馈报文。
[0104] 其中,反馈报文包含了PCIe设备根据任务信息得到的结果信息。需要说明的是,并不是每个PCIe设备访问报文都对应有结果信息,当PCIe设备访问报文中的任务信息(如对PCIe设备进行读操作)需要PCIe设备反馈对应的结果信息时,PCIe设备才会返回结果信息。当任务信息(如对PCIe设备进行写操作)不需要PCIe设备反馈对应的结果信息时,PCIe设备则不会返回结果信息,PCIe主机也接收不到PCIe设备访问反馈报文。
[0105] 继续参见图5,图5是根据本实施例的PCIe设备共享网络的生成方法的应用场景的一个示意图。由图5可知,PCIe设备-1到PCIe设备-n的n个PCIe设备与PCIe交换机网络中的PCIe交换机连接;PCIe配置主机为PCIe设备分配虚拟内存地址,并根据PCIe主机与PCIe交换机的连接关系,确定PCIe交换机之间的连接关系,使得连接PCIe设备共享网络的PCIe主机都能通过虚拟内存地址访问PCIe设备共享网络上的PCIe设备。具体的:
[0106] 1)PCIe交换机网络,其由一个或者多个PCIe交换机构成,用于连接PCIe设备及访问该PCIe设备的PCIe主机。在该网络内,各个PCIe交换机之间可以有连接,也可以没有连接。
[0107] 2)PCIe设备1-n,连接至PCIe交换机网络中的某一个PCIe交换机的下行端口。
[0108] 3)PCIe主机,访问PCIe设备的主机系统,并给PCIe设备分配PCIe主机的本地内存地址,该地址被称为主机基地址寄存器地址(Host Base Address Register Address,简称Host BAR Address)。PCIe交换机网络可以与1个或者多个PCIe主机连接,各个PCIe主机可以连接至相同或者不同的PCIe交换机。
[0109] 4)PCIe配置主机,给PCIe设备1-n分配全局基地址寄存器地址(Global Base Address Register Address,简称Global BAR Address,即上述的虚拟内存地址),PCIe配置主机负责建立PCIe设备与PCIe交换机之间的访问关系、建立Global BAR Address与Host BAR Address的映射关系;PCIe配置主机并不直接访问PCIe设备1-n的内存地址空间。
[0110] 5)本地PCIe设备,仅被PCIe配置主机访问的本地PCIe设备。
[0111] 6)配置通道,PCIe配置主机通过该通道连接至PCIe交换机网络内的所有PCIe交换机,并对该PCIe交换机及其下行端口的PCIe设备进行配置。
[0112] 7)数据通道,PCIe主机通过该通道访问PCIe设备1-n的内存地址空间。
[0113] 继续参见图6,图6是根据本实施例将某一PCIe设备分配给指定PCIe主机的一个流程图。由图6可知,PCIe配置主机首先要建立PCIe主机与PCIe设备之间的访问关系表,访问关系表与PCIe主机的访问权限有关,访问权限决定了PCIe主机能够访问哪些PCIe设备;PCIe主机查看每个PCIe设备,并通过枚举的方式确定PCIe设备;PCIe配置主机收到PCIe主机发来的枚举报文后,通过访问关系表确定PCIe设备,并将向PCIe主机发送响应报文,使得PCIe主机枚举到PCIe设备。通过上述操作,避免了多个PCIe主机访问同一个PCIe设备的冲突。
[0114] 继续参见图7,图7是根据本实施例根据虚拟内存地址查找PCIe设备的一个流程图。PCIe设备在PCIe设备共享网络上有一个Global BAR Address,当PCIe主机访问某一PCIe设备时,PCIe主机会为该PCIe设备分配本地的Host BAR Address,因此,需要建立Global BAR Address与Host BAR Address之间的映射表,便于数据在PCIe设备共享网络和PCIe主机上的处理。PCIe主机以Host BAR Address为目的地址发送报文给PCIe设备;PCIe交换机根据Global BAR Address与Host BAR Address之间的映射表,将Host BAR Address修改为Global BAR Address,以便在PCIe交换机查找对应的PCIe设备;找到对应的PCIe设备后,将PCIe主机的任务信息发送给对应的PCIe设备;如果无法找到对应的PCIe设备,则将任务信息丢弃或转发到默认的上行端口。
[0115] 继续参见图8,图8是根据本实施例为PCIe设备设置虚拟内存的一个示意图。首先,根据PCIe配置主机的处理器确定PCIe配置主机的最大物理内存地址(MaxPhyPCIeAddr,其中,PCIe用于将PCIe设备与其他设备区别表示),再确定最大虚拟内存地址(MaxVirtPCIeAddr),得到最大物理内存地址范围和最大虚拟内存地址范围。PCIe设备自身的也分32位基地址寄存器地址和64位基地址寄存器地址,对于PCIe配置主机的本地32位基地址寄存器地址的PCIe设备,为其分配4G(Gigabyte,吉字节)以下的物理内存地址,对于本地64位基地址寄存器地址的PCIe设备,为其分配4G到最大物理内存地址之间的物理内存地址。对于非本地的PCIe设备,则分配最大物理内存地址到最大虚拟内存地址之间的虚拟内存地址,264为PCIe配置主机的处理器为64位时,PCIe配置主机能够分配到的最大内存地址。
[0116] 继续参见图9,图9是根据本实施例为32位基地址寄存器地址的PCIe设备设置虚拟内存的一个流程图。首先PCIe配置主机在基本输入输出系统(Basic Input Output System,简称BIOS)下设置MaxVirtPCIeAddr;然后为PCIe配置主机的本地32位基地址寄存器地址的PCIe设备分配4G以下的合法地址(本实施例的所述合法是指为本地PCIe设备分配物理内存地址,或为非本地的PCIe设备分配虚拟内存地址);之后,在PCIe配置主机的操作系统上,设置非本地PCIe设备的MaxVirtPCIeAddr;最后,检查本地PCIe设备的合法性。
[0117] 本申请首先获取PCIe设备的设备信息,然后通过设备信息为PCIe设备设置虚拟内存地址;之后设置PCIe交换机网络,并建立PCIe交换机与所述PCIe设备的对应关系表,最后生成PCIe设备共享网络,使得连接PCIe设备共享网络的PCIe主机都能通过虚拟内存地址访问PCIe设备共享网络上的PCIe设备;PCIe主机所能访问的PCIe设备数量可以突破PCIe主机本地PCIe插槽的限制,PCIe设备可以被不同的PCIe主机按需共享使用,因此提高了PCIe设备的利用率。
[0118] 进一步参考图10,作为对上述各图所示方法的实现,本申请提供了一种PCIe设备共享网络的生成装置的一个实施例,该装置实施例与图1所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
[0119] 如图10所示,本实施例所述的PCIe设备共享网络的生成装置1000包括:设备信息获取单元1001、虚拟内存地址设置单元1002、连接关系设置单元1003、和PCIe共享网络生成单元1004。其中,设备信息获取单元1001用于获取至少一个PCIe设备的设备信息,所述设备信息包括设备名称、设备类型信息和设备功能信息中的至少一项;虚拟内存地址设置单元1002用于根据所述设备信息为所述PCIe设备设置虚拟内存地址,所述PCIe设备与虚拟内存地址之间为一一对应关系;连接关系设置单元1003用于设置PCIe交换机网络与所述PCIe设备的连接关系,所述PCIe交换机网络用于PCIe设备和PCIe主机之间的数据传输,所述PCIe交换机网络包括至少一个PCIe交换机;PCIe共享网络生成单元1004用于通过所述连接关系建立所述PCIe交换机与所述PCIe设备的对应关系表,根据所述对应关系表生成PCIe设备共享网络,所述对应关系表包括所述设备信息和虚拟内存地址。
[0120] 在本实施例的一些可选的实现方式中,所述虚拟内存地址设置单元1002包括:物理地址总线查询子单元(图中未示出)、内存地址范围设置子单元(图中未示出)和虚拟内存地址设置子单元(图中未示出)。其中,物理地址总线查询子单元用于查看配置处理器的物理地址总线的位数,所述配置处理器用于为所述PCIe设备设置虚拟内存地址;内存地址范围设置子单元用于设置对应所述物理地址总线的位数的最大物理内存地址范围和最大虚拟内存地址范围;虚拟内存地址设置子单元用于在所述最大物理内存地址范围和最大虚拟内存地址范围中确定对应所述设备信息的虚拟内存地址。
[0121] 在本实施例的一些可选的实现方式中,所述虚拟内存地址设置子单元包括:内存地址分配模块(图中未示出),用于查看所述设备信息对应的PCIe设备是否是本地PCIe设备,若是,则在最大物理内存地址范围内为所述本地PCIe设备设置物理内存地址,否则,在最大虚拟内存地址范围内为所述PCIe设备分配内存地址。
[0122] 在本实施例的一些可选的实现方式中,所述虚拟内存地址设置单元1002还可以包括:虚拟内存地址存储子单元(图中未示出),用于将所述虚拟内存地址写入所述PCIe设备的寄存器内。
[0123] 在本实施例的一些可选的实现方式中,所述连接关系设置单元1003可以包括:第一连接关系建立子单元(图中未示出)和第二连接关系建立子单元(图中未示出)。其中,第一连接关系建立子单元用于建立所述PCIe交换机与PCIe设备之间的第一连接关系;第二连接关系建立子单元用于根据所述第一连接关系确定所述PCIe交换机网络内PCIe交换机之间的第二连接关系。
[0124] 在本实施例的一些可选的实现方式中,所述连接关系设置单元1003还可以包括:连接关系表构建子单元(图中未示出),用于通过所述第二连接关系构建PCIe交换机连接关系表。
[0125] 在本实施例的一些可选的实现方式中,所述连接关系设置单元1003包括:基地址列表设置子单元(图中未示出),用于为所述PCIe交换机设置基地址列表,所述基地址列表用于显示当前所述PCIe交换机所连接的PCIe设备。
[0126] 在本实施例的一些可选的实现方式中,所述PCIe共享网络生成单元1004包括:对应关系表获取子单元(图中未示出),用于通过所述第一连接关系和第二连接关系确定所述PCIe交换机到所述PCIe设备的访问路径,根据所述访问路径得到对应关系表。
[0127] 在本实施例的一些可选的实现方式中,所述PCIe设备共享网络的生成装置1000还包括:访问关系表获取单元(图中未示出),用于根据PCIe主机的权限确定访问关系表,将所述访问关系表发送给所述PCIe主机,所述访问关系表用于确定PCIe主机访问的PCIe设备,包括PCIe设备的设备信息。
[0128] 进一步参考图11,作为对上述各图所示方法的实现,本申请提供了一种PCIe设备共享网络的数据传输装置的一个实施例,该装置实施例与图2所示的方法实施例相对应。
[0129] 如图11所示,本实施例所述的PCIe设备共享网络的数据传输装置1100包括:PCIe设备访问申请报文接收单元1101、信息提取单元1102、虚拟内存地址确定单元1103、数据转发信息配置单元1104和发送单元1105。其中,PCIe设备访问申请报文接收单元1101用于接收PCIe设备访问申请报文,所述PCIe设备访问申请报文包括对应所述PCIe主机的访问关系表中的PCIe设备的设备信息,所述设备信息包括所述PCIe设备在所述PCIe主机上的本地内存地址;信息提取单元1102用于从所述PCIe设备访问申请报文中解析出设备信息;虚拟内存地址确定单元1103用于通过所述设备信息确定所述PCIe设备的虚拟内存地址,建立虚拟内存地址与本地内存地址的转换关系信息;数据转发信息配置单元1104,用于配置从所述PCIe主机到PCIe设备的数据转发信息,所述数据转发信息用于确定所述PCIe主机访问PCIe设备的访问路径;发送单元1105,用于将所述转换关系信息和数据转发信息发送给PCIe交换机。
[0130] 在本实施例的一些可选的实现方式中,所述虚拟内存地址确定单元1103包括:虚拟内存地址确定子单元(图中未示出),用于查询对应关系表,得到所述PCIe设备的对应所述本地内存地址的虚拟内存地址,所述对应关系表用于表征本地内存地址与虚拟内存地址之间的映射关系,所述对应关系表包括所述设备信息和虚拟内存地址。
[0131] 在本实施例的一些可选的实现方式中,所述数据转发信息配置单元1104还可以包括:连接信息查询子单元(图中未示出)和访问路径获取子单元(图中未示出)。其中,连接信息查询子单元用于查询所述PCIe交换机的基地址列表;访问路径获取子单元用于根据所述基地址列表确定与所述虚拟内存地址对应的PCIe设备连接的PCIe交换机,得到所述PCIe主机访问所述PCIe设备的访问路径。
[0132] 进一步参考图12,作为对上述各图所示方法的实现,本申请提供了一种PCIe设备共享网络的数据传输装置的一个实施例,该装置实施例与图3所示的方法实施例相对应。
[0133] 如图12所示,本实施例所述的PCIe设备共享网络的数据传输装置1200包括:PCIe设备访问报文接收单元1201、内存地址替换单元1202和任务信息发送单元1203。其中,PCIe设备访问报文接收单元1201用于接收PCIe主机发来的PCIe设备访问报文,所述PCIe设备访问申请报文包括所述PCIe主机访问的PCIe设备的设备信息和任务信息,所述设备信息包括所述PCIe设备在所述PCIe主机上的本地内存地址;内存地址替换单元1202用于查询与所述PCIe主机连接的PCIe交换机上的转换关系信息,通过所述转换关系信息将所述设备信息中的本地内存地址替换为虚拟内存地址,所述转换关系信息用于表征本地内存地址和虚拟内存地址的对应关系;任务信息发送单元1203用于根据所述虚拟内存地址和数据转发信息将所述任务信息发送至所述PCIe设备,所述数据转发信息用于确定所述PCIe主机访问PCIe设备的访问路径。
[0134] 在本实施例的一些可选的实现方式中,所述装置还包括:信息接收单元(图中未示出),用于接收转换关系信息和数据转发信息,包括:申请报文转发子单元(图中未示出),用于接收PCIe主机发来的PCIe设备访问申请报文,并将所述PCIe设备访问申请报文转发给PCIe配置主机,所述PCIe设备访问申请报文包括对应PCIe主机的访问关系表中的PCIe设备的设备信息,所述访问关系表用于确定PCIe主机访问的PCIe设备,包括PCIe设备的设备信息;信息接收子单元(图中未示出),用于接收PCIe配置主机发来的对应所述PCIe设备访问申请报文的转换关系信息和数据转发信息,并将所述转换关系信息和数据转发信息保存到与所述PCIe主机连接的PCIe交换机。
[0135] 在本实施例的一些可选的实现方式中,任务信息发送单元1203包括:第一任务信息发送子单元(图中未示出)和第二任务信息发送子单元(图中未示出)。其中,第一任务信息发送子单元用于通过虚拟内存地址查看与所述PCIe主机连接的PCIe交换机是否与所述PCIe设备连接,若是,则将所述任务信息发送至所述PCIe设备,否则,按照所述数据转发信息将所述任务信息发送至与所述PCIe主机连接的PCIe交换机的下一级PCIe交换机;第二任务信息发送子单元用于通过虚拟内存地址查看所述下一级PCIe交换机是否与所述PCIe设备连接,若是,则将所述任务信息发送至所述PCIe设备,否则,按照所述数据转发信息,将所述任务信息发送至所述下一级PCIe交换机的下一级PCIe交换机,直至将所述任务信息发送至所述PCIe设备。
[0136] 在本实施例的一些可选的实现方式中,所述装置包括:信息反馈单元(图中未示出),用于在所述任务信息需要所述PCIe设备反馈对应所述任务信息的结果信息时,接收所述PCIe设备发来的结果信息,将所述结果信息封装成PCIe设备访问反馈报文,并将所述PCIe设备访问反馈报文发送给PCIe主机。
[0137] 进一步参考图13,作为对上述各图所示方法的实现,本申请提供了一种PCIe设备共享网络的数据传输装置的一个实施例,该装置实施例与图4所示的方法实施例相对应。
[0138] 如图13所示,本实施例所述的PCIe设备共享网络的数据传输装置1300包括:PCIe设备访问报文发送单元1301和PCIe设备访问反馈报文接收单元1302。其中,PCIe设备访问报文发送单元1301用于发送PCIe设备访问报文。PCIe设备访问反馈报文接收单元1302用于接收对应所述PCIe设备访问报文的PCIe设备访问反馈报文。
[0139] 在本实施例的一些可选的实现方式中,所述PCIe设备访问报文发送单元1301包括:访问关系表查看子单元(图中未示出)、PCIe设备选择子单元(图中未示出)和PCIe设备访问报文发送子单元(图中未示出)。其中,访问关系表查看子单元用于查看用于访问PCIe设备的访问关系表,所述访问关系表包括PCIe主机能够访问的PCIe设备的设备信息。PCIe设备选择子单元用于通过所述访问关系表选择PCIe设备。PCIe设备访问报文发送子单元用于发送对应所述PCIe设备的PCIe设备访问报文。
[0140] 在本实施例的一些可选的实现方式中,所述PCIe设备选择子单元还可以包括:设备信息提取模块(图中未示出)。其中,设备信息提取模块用于从所述访问关系表中提取所述设备信息。
[0141] 本实施例还提供了一种PCIe设备共享网络的信息交互系统,所述系统包括上述的对应图10的PCIe设备共享网络的生成装置、对应图11的PCIe设备共享网络的数据传输装置和对应图12的PCIe设备共享网络的数据传输装置。
[0142] 下面参考图14,其示出了适于用来实现本申请实施例的服务器的计算机系统1200的结构示意图。
[0143] 如图14所示,计算机系统1400包括中央处理单元(CPU)1401,其可以根据存储在只读存储器(ROM)1402中的程序或者从存储部分1408加载到随机访问存储器(RAM)1403中的程序而执行各种适当的动作和处理。在RAM 1403中,还存储有系统1400操作所需的各种程序和数据。CPU 1401、ROM 1402以及RAM 1403通过总线1404彼此相连。输入/输出(I/O)接口1405也连接至总线1404。
[0144] 以下部件连接至I/O接口1405:包括键盘、鼠标等的输入部分1406;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1407;包括硬盘等的存储部分1408;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1409。通信部分1409经由诸如因特网的网络执行通信处理。驱动器1410也根据需要连接至I/O接口1405。可拆卸介质1411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1410上,以便于从其上读出的计算机程序根据需要被安装入存储部分1408。
[0145] 特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1409从网络上被下载和安装,和/或从可拆卸介质1411被安装。
[0146] 附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0147] 描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括设备信息获取单元、虚拟内存地址设置单元、连接关系设置单元和PCIe共享网络生成单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,PCIe共享网络生成单元还可以被描述为“用于生成PCIe共享网络的单元”。
[0148] 作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:获取至少一个PCIe设备的设备信息,所述设备信息包括设备名称、设备类型信息和设备功能信息中的至少一项;根据所述设备信息为所述PCIe设备设置虚拟内存地址,所述PCIe设备与虚拟内存地址之间为一一对应关系;设置PCIe交换机网络与所述PCIe设备的连接关系,所述PCIe交换机网络用于PCIe设备和PCIe主机之间的数据传输,所述PCIe交换机网络包括至少一个PCIe交换机;通过所述连接关系建立所述PCIe交换机与所述PCIe设备的对应关系表,根据所述对应关系表生成PCIe设备共享网络,所述对应关系表包括所述设备信息和虚拟内存地址。
[0149] 以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。