CN104285218B - 一种扩展PCIe总线域的方法和装置 - Google Patents
一种扩展PCIe总线域的方法和装置 Download PDFInfo
- Publication number
- CN104285218B CN104285218B CN201380002531.8A CN201380002531A CN104285218B CN 104285218 B CN104285218 B CN 104285218B CN 201380002531 A CN201380002531 A CN 201380002531A CN 104285218 B CN104285218 B CN 104285218B
- Authority
- CN
- China
- Prior art keywords
- address
- extension field
- pcie device
- pcie
- described extension
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/4045—Coupling between buses using bus bridges where the bus bridge performs an extender function
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0024—Peripheral component interconnect [PCI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Systems (AREA)
- Bus Control (AREA)
Abstract
本发明实施例涉及一种扩展PCIe总线域的方法,能够从根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配配置空间地址,建立所述配置空间地址与总线号/设备号/功能号BDF的对应关系,并从扩展域的第二总线集合中,为所述扩展域中发现的PCIe设备分配总线号,所述总线号用于确定所述扩展域中发现的PCIe设备的BDF,以根据所述配置空间地址与BDF的对应关系,通过所述扩展域中发现的PCIe设备的BDF,访问所述扩展域中发现的PCIe设备的配置空间寄存器,实现了PCIe总线域的扩展,解决了现有技术中无法进行PCIe总线域扩展的问题,使得系统中PCIe设备的数量不受256条总线的限制。
Description
技术领域
本发明实施例涉及计算机技术,特别是涉及一种扩展PCIe总线域的方法和装置。
背景技术
高速外围组件互联(Peripheral Component Interconnect Express,PCIe)总线技术是用来互联处理器和外围设备的高性能总线技术。PCIe总线采用点对点串行连接,相对于PCI总线可以使用更少的数据线提供更高的连接速度,广泛应用与台式机、笔记本电脑、服务器、通信和工作站的内置设备等。
一个PCIe总线域通常由根复合体(Root Complex)、交换器(Switch)、端点(Endpoint)和桥(PCIe brige)组成。根复合体用于处理器与输入/输出I/O设备之间的连接,交换器支持在不同端点间进行对等通信,桥用于将PCIe与其它PCI总线标准(如PCI/PCI-X)相连,端点即PCIe端点设备,例如PCIe接口网卡设备、串口卡设备和存储卡设备等。然而,根据PCIe总线规范,一个PCIe总线域最多只有256条PCIe总线,每个PCIe总线最多包括32个PCIe设备号,每个设备号最多包括8个功能号,每个功能号最多对应一个PCIe设备。因此,在现有的PCIe总线域的系统中,PCIe设备的数量受到256条总线的制约。
发明内容
本发明实施例提出了一种扩展PCIe总线域的方法和装置,能够对PCIe总线域进行扩展。
第一方面,本发明实施例提出了一种扩展PCIe总线域的方法,用于包括主域和扩展域的系统,所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合;所述扩展域包括根复合体端点设备和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述根复合体端点设备是所述主域中的PCIe设备以及所述扩展域中的根复合体;所述方法包括:
从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配配置空间地址,建立所述配置空间地址与总线号/设备号/功能号BDF的对应关系;
从所述第二总线集合中,为所述扩展域中发现的PCIe设备分配总线号,所述总线号用于确定所述扩展域中发现的PCIe设备的BDF,以根据所述配置空间地址与BDF的对应关系,通过所述扩展域中发现的PCIe设备的BDF,实现对所述扩展域中发现的PCIe设备的配置空间访问。
结合第一方面,在第一种可能的实现方式中,该方法还包括:从所述根复合体端点设备的内存地址中,为所述扩展域中发现的PCIe设备分配第一内存映射输入/输出地址;根据所述第一内存映射输入/输出地址,为所述扩展域中发现的PCIe设备分配第二内存映射输入/输出地址,以用于根据所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系,实现对所述扩展域中发现的PCIe设备的内存映射输入/输出访问。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述根复合体端点设备的内存地址具体是指所述根复合体端点设备的内存映射输入/输出地址。
结合第一方面的第一种可能的实现方式或者第二种可能的实现方式,在第三种可能的实现方式中,所述从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配配置空间地址之后,所述方法还包括:利用所述扩展域的PCIe设备的配置空间地址以及所述配置空间地址与BDF的对应关系,发现所述扩展域中的PCIe设备。
结合第一方面的第一种可能的实现方式或者第二种可能的实现方式或者第三种可能的实现方式,在第四种可能的实现方式中,所述根据所述第一内存映射输入/输出地址,为所述扩展域中发现的PCIe设备分配第二内存映射输入/输出地址包括:建立所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系;根据所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系,为所述扩展域中发现的PCIe设备分配第二内存映射输入/输出地址。
结合第一方面或者第一方面的第一种至第四种任何一种可能的实现方式,在第五种可能的实现方式中,所述方法还包括:从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配第一消息信号中断地址;根据所述第一消息信号中断地址,为所述扩展域的PCIe设备分配第二消息信号中断地址,以用于根据所述第一消息信号中断地址与所述第二消息信号中断地址的映射关系,实现所述扩展域的PCIe设备的消息信号中断访问。
结合第一方面或者第一方面的第一种至第四种任何一种可能的实现方式,在第六种可能的实现方式中,所述方法还包括:从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配第一直接内存存取地址;根据所述第一直接内存存取地址,为所述扩展域的PCIe设备分配第二直接内存存取地址,以用于根据所述第一直接内存存取地址与所述第二直接内存存取地址的映射关系,实现所述扩展域的PCIe设备的直接内存存取访问。
结合第二方面,本发明实施例提出了一种访问PCIe总线域的方法,用于包括主域和扩展域的系统;所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合;所述扩展域包括根复合体端点设备和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述根复合体端点设备是所述主域中的PCIe设备以及所述扩展域中的根复合体;
所述方法包括:
所述根复合体端点设备接收访问报文,所述访问报文为所述主域与所述扩展域之间进行相互通信的报文,所述访问报文携带消息体和访问目标地址;
所述根复合体端点设备根据地址映射关系对所述访问目标地址进行地址转换,得到转换后的访问目标地址,所述地址映射关系预先保存在所述根复合体端点设备中;
所述根复合体端点设备发送所述访问报文对应的模拟访问报文,所述模拟访问报文携带所述消息体和所述转换后的访问目标地址。
结合第二方面,在第一种可能的实现方式中,所述访问目标地址为所述扩展域的PCIe设备的配置空间地址,所述地址映射关系为所述扩展域的PCIe设备的配置空间地址与总线号/设备号/功能号BDF的对应关系;则所述根复合体端点设备根据地址映射关系对所述访问目标地址进行地址转换,得到转换后的访问目标地址包括:所述根复合体端点设备根据所述扩展域的PCIe设备的配置空间地址与BDF的对应关系,对所述扩展域的PCIe设备的配置空间地址进行地址转换,得到所述扩展域的PCIe设备的BDF。
结合第二方面,在第二种可能的实现方式中,所述访问目标地址为所述扩展域的PCIe设备的第一内存映射输入/输出地址,所述地址映射关系为所述扩展域的PCIe设备的第一内存映射输入/输出地址与第二内存映射输入/输出地址的映射关系;则所述根复合体端点设备根据地址映射关系对所述访问目标地址进行地址转换,得到转换后的访问目标地址包括:所述根复合体端点设备根据所述扩展域的PCIe设备的第一内存映射输入/输出地址与第二内存映射输入/输出地址的映射关系,对所述扩展域的PCIe设备的第一内存映射输入/输出地址进行地址转换,得到所述扩展域的PCIe设备的第二内存映射输入/输出地址。
结合第二方面,在第三种可能的实现方式中,所述访问目标地址为所述扩展域的PCIe设备的第二消息信号中断地址,所述地址映射关系为所述扩展域的PCIe设备的第一消息信号中断地址与第二消息信号中断地址的映射关系;则所述根复合体端点设备根据地址映射关系对所述访问目标地址进行地址转换,得到转换后的访问目标地址包括:所述根复合体端点设备根据所述扩展域的PCIe设备的第一消息信号中断地址与第二消息信号中断地址的映射关系,对所述扩展域的PCIe设备的第二消息信号中断地址进行地址转换,得到所述扩展域的PCIe设备的第一消息信号中断地址。
结合第二方面,在第四种可能的实现方式中,所述访问目标地址为所述扩展域的PCIe设备的第二直接内存存取地址,所述地址映射关系为所述扩展域的PCIe设备的第一直接内存存取地址与第二直接内存存取地址的映射关系;则所述根复合体端点设备根据地址映射关系对所述访问目标地址进行地址转换,得到转换后的访问目标地址包括:所述根复合体端点设备根据所述扩展域的PCIe设备的第一直接内存存取地址与第二直接内存存取地址的映射关系,对所述扩展域的PCIe设备的第二直接内存存取地址进行地址转换,得到所述扩展域的PCIe设备的第一直接内存存取地址。
第三方面,本发明实施例提出了一种扩展高速外围组件互联PCIe总线域的装置,用于包括主域和扩展域的系统;所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合;所述扩展域包括所述装置和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述装置是所述主域中的PCIe设备以及所述扩展域中的根复合体;
所述装置包括:
第一类地址分配单元,用于从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配配置空间地址,建立所述配置空间地址与总线号/设备号/功能号BDF的对应关系;
总线分配单元,从所述第二总线集合中,为所述扩展域中发现的PCIe设备分配总线号,所述总线号用于确定所述扩展域中发现的PCIe设备的BDF,以根据所述配置空间地址与BDF的对应关系,通过所述扩展域中发现的PCIe设备的BDF,实现对所述扩展域中发现的PCIe设备的配置空间访问。
结合第三方面,在第一种可能的实现方式中,所述装置还包括第二类地址分配单元,用于从所述根复合体端点设备的内存地址中,为所述扩展域中发现的PCIe设备分配第一内存映射输入/输出地址,以及根据所述第一内存映射输入/输出地址,为所述扩展域中发现的PCIe设备分配第二内存映射输入/输出地址,以用于根据所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系,实现对所述扩展域中发现的PCIe设备的内存映射输入/输出访问。
结合三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述根复合体端点设备的内存地址具体是指所述根复合体端点设备的内存映射输入/输出地址。
结合第三方面的第一种可能的实现方式或者第二种可能的实现方式,在第三种可能的实现方式中,所述装置还包括确定单元,用于利用所述扩展域的PCIe设备的配置空间地址以及所述配置空间地址与BDF的对应关系,发现所述扩展域中的PCIe设备。
结合第三方面的第一种可能的实现方式或者第二种可能的实现方式或者第三种可能的实现方式,在第四种可能的实现方式中,所述所述第二类地址分配单元具体用于建立所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系,根据所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系,为所述扩展域中发现的PCIe设备分配第二内存映射输入/输出地址。
结合第三方面或者第三方面的第一种至第四种任何一种可能的实现方式,在第五种可能的实现方式中,所述装置还包括第三类地址分配单元,用于从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配第一消息信号中断地址,以及根据所述第一消息信号中断地址,为所述扩展域的PCIe设备分配第二消息信号中断地址,以用于根据所述第一消息信号中断地址与所述第二消息信号中断地址的映射关系,实现所述扩展域的PCIe设备的消息信号中断访问。
结合第三方面或者第三方面的第一种至第四种任何一种可能的实现方式,在第六种可能的实现方式中,所述装置还包括第四类地址分配单元,用于从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配第一直接内存存取地址,根据所述第一直接内存存取地址,为所述扩展域的PCIe设备分配第二直接内存存取地址,以用于根据所述第一直接内存存取地址与所述第二直接内存存取地址的映射关系,实现所述扩展域的PCIe设备的直接内存存取访问。
第四方面,本发明实施例提出了一种访问PCIe总线域的装置,其特征在于,用于包括主域和扩展域的系统;所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合;所述扩展域包括所述装置和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述装置是所述主域中的PCIe设备以及所述扩展域中的根复合体;所述装置包括:
接收单元,用于接收访问报文,所述访问报文为所述主域与所述扩展域之间进行相互通信的报文,所述访问报文携带消息体和访问目标地址;
转换单元,用于根据预先保存的地址映射关系,对所述访问目标地址进行地址转换,得到转换后的访问目标地址;
发送单元,用于发送所述访问报文对应的模拟访问报文,所述模拟访问报文携带所述消息体和所述转换后的访问目标地址。
结合第四方面,在第一种可能的实现方式中,所述访问目标地址为所述扩展域的PCIe设备的配置空间地址,所述地址映射关系为所述扩展域的PCIe设备的配置空间地址与总线号/设备号/功能号BDF的对应关系;则所述转换单元具体用于根据所述扩展域的PCIe设备的配置空间地址与BDF的对应关系,对所述扩展域的PCIe设备的配置空间地址进行地址转换,得到所述扩展域的PCIe设备的BDF。
结合第四方面,在第二种可能的实现方式中,所述访问目标地址为所述扩展域的PCIe设备的第一内存映射输入/输出地址,所述地址映射关系为所述扩展域的PCIe设备的第一内存映射输入/输出地址与第二内存映射输入/输出地址的映射关系;则所述转换单元具体用于根据所述扩展域的PCIe设备的第一内存映射输入/输出地址与第二内存映射输入/输出地址的映射关系,对所述扩展域的PCIe设备的第一内存映射输入/输出地址进行地址转换,得到所述扩展域的PCIe设备的第二内存映射输入/输出地址。
结合第四方面,在第三种可能的实现方式中,所述访问目标地址为所述扩展域的PCIe设备的第二消息信号中断地址,所述地址映射关系为所述扩展域的PCIe设备的第一消息信号中断地址与第二消息信号中断地址的映射关系;则所述转换单元具体用于根据所述扩展域的PCIe设备的第一消息信号中断地址与第二消息信号中断地址的映射关系,对所述扩展域的PCIe设备的第二消息信号中断地址进行地址转换,得到所述扩展域的PCIe设备的第一消息信号中断地址。
结合第四方面,在第四种可能的实现方式中,所述访问目标地址为所述扩展域的PCIe设备的第二直接内存存取地址,所述地址映射关系为所述扩展域的PCIe设备的第一直接内存存取地址与第二直接内存存取地址的映射关系;则所述转换单元具体用于根据所述扩展域的PCIe设备的第一直接内存存取地址与第二直接内存存取地址的映射关系,对所述扩展域的PCIe设备的第二直接内存存取地址进行地址转换,得到所述扩展域的PCIe设备的第一直接内存存取地址。
在本发明实施例中,能够从根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配配置空间地址,建立所述配置空间地址与总线号/设备号/功能号BDF的对应关系,并从扩展域的第二总线集合中,为所述扩展域中发现的PCIe设备分配总线号,所述总线号用于确定所述扩展域中发现的PCIe设备的BDF,以根据所述配置空间地址与BDF的对应关系,通过所述扩展域中发现的PCIe设备的BDF,访问所述扩展域中发现的PCIe设备的配置空间寄存器,实现对所述扩展域中发现的PCIe设备的配置空间访问,实现了PCIe总线域的扩展,解决了现有技术中无法进行PCIe总线域扩展的问题,使得系统中PCIe设备的数量不受256条总线的限制,实现了对扩展域的通信。
在本发明实施例中,所述根复合体端点设备能够接收访问报文,所述访问报文为所述主域与所述扩展域之间进行相互通信的报文,根据预先保存的地址映射关系,对所述访问报文的访问目标地址进行地址转换,例如将主域的内存地址转换为扩展域的内存地址,发送所述访问报文对应的模拟访问报文,所述模拟访问报文携带转换后的访问目标地址,使得所述主域能够访问扩展域的PCIe设备,或者所述扩展域的PCIe设备能够访问主域,实现了PCIe总线域的扩展,实现了扩展域与主域的通信。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对现有技术或实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的系统构架图;
图2是本发明实施例提供的一种方法流程图;
图3是本发明实施例提供的又一种方法流程图;
图4是本发明实施例提供的内存地址分配图;
图5是本发明实施例提供的扩展域的内存映射输入/输出资源树;
图6是本发明实施例提供的又一种方法流程图;
图7是本发明实施例提供的一种装置的组成图;
图8是根据本发明实施例提供的又一种装置的组成图;
图9是本发明实施例提供的又一种装置的结构组成示意图。
具体实施方式
本发明实施例提出了一种扩展PCIe总线域的方法和装置,能够对PCIe总线域进行扩展,实现主PCIe域与该扩展PCIe总线域的通信,解决了现有技术中无法进行PCIe总线域扩展的问题,使得系统中PCIe设备的数量不受256条总线的限制。
如图1所示为本发明实施例的系统的一个示例,所述系统包括主域PCIe总线域100(为描述方便,后续简称为主域100),所述主域100包含根复合体(Root Complex,RC)102、交换器(Switch)104和至少一个PCIe端点设备,图1中以两个PCIe端点设备示出,即端点设备106和端点设备108。所述根复合体102通过根端口103与交换器104的上游端口104A相连,所述交换器的104的下游端口104B和104C与PCIe端点设备107相连,所述根复合体102可以集成在系统的CPU101上,所述CPU101可以是多个CPU的集合。所述根复合体102用于处理和转发CPU101与端点设备106和108之间的访问报文,例如配置空间访问报文、消息信号中断(Message Signaled Interrupts,MSI)访问报文、内存映射输入/输出(Memory MappedInput/Output,MMIO)访问报文和直接内存存取(Direct Memory Access,DMA)访问报文,所述交换器104用于将访问报文向下游路由给与下游端口104B或104C相连接的PCIe端点设备,以及从每个独立的下游端口将访问报文向上游路由至单一的根复合体,端点设备106和108具有发起请求和完成PCIe事物处理的功能,端点设备106和108可以是存储设备、网卡、声卡等。图中所述主域100以一个交换器为例,在其它的实施例中,所述主域100还可以包括多个交换器,每个交换器可以与一个或多个PCIe端点设备相连。
所述主域中的PCIe设备可以分为两种,一种是桥设备,例如根端口103、上游端口104A、下游端口104B,104C,一种是端点设备,例如端点设备106和端点设备108。所述CPU101在执行系统的指令时可以加载所述根复合体102的设备驱动,根据所述设备驱动为主域中的桥设备和端点设备分配内存地址和总线,从而实现CPU101与主域中的PCIe设备的相互通信以及主域中的PCIe设备之间的相互通信。具体地,为主域中的PCIe设备分配的内存地址可以分为四种类型,分别为配置空间地址、MMIO地址、MSI地址以及DMA地址,则CPU101可以利用主域的PCIe设备的配置空间地址和MMIO地址对主域的PCIe设备进行配置空间访问和MMIO访问,主域的PCIe设备可以利用分配的DMA地址进行DMA访问,实现PCIe设备之间的相互访问,主域的PCIe设备还可以利用MSI地址向CPU请求消息信号中断。
此外,为描述方便,可以将为主域中的PCIe设备分配的总线的集合称为第一总线集合,根据PCIe规范,所述第一总线集合最多包含256条总线,主域中的PCIe设备受到256条总线的限制。
在本发明实施例中,为了进行PCIe总线域的扩展,使得系统中的PCIe设备的数量不受限制,在对系统中的端点设备106进行功能增强,使得所述端点设备106成为根复合体端点设备(Root Complex Endpoint,RCEP)106,通过所述RCEP106进行PCIe总线域的扩展,得到扩展PCIe总线域118(为描述方便,后续简称为扩展域118),其中,所述RCEP106即作为主域100中的端点设备,又作为扩展域118中的根复合体,即能够发起访问报文和完成PCIe事物处理,又能够管理和转发扩展域118与主域100之间的访问报文,实现主域与扩展域的通信连接。如图1所示,扩展域118可以包括:RCEP106、交换器112和端点设备114和116(扩展域中的端点设备可以为一个或多个,本发明实施例以两个第端点设备为例示出),端点设备114和116通过交换器112与RCEP106中的桥设备110相连,其中,所述扩展域118还可以有多个根端口110和多个交换器112,图1只是本发明实施例的示例之一。图中端点设备114和116,以及桥设备112A、112B和112C即为扩展域的PCIe设备,通过在该系统中利用RCEP扩展出扩展域118,可以增加系统中的PCIe设备,使得该系统中PCIe设备的数量不受256条总线的限制。
进一步,在图1所示的系统系统中,所述RCEP106硬件隔离了扩展域的PCIe设备,使得该系统的CPU101或者主域的PCIe设备无法对扩展域118进行通信。因此,在本发明实施例中,还可以对RCEP106的设备驱动进行配置,使得CPU101在执行所述系统的指令时,例如执行所述系统的操作系统或者基本输入输出系统的指令时,可以加载RCEP106的设备驱动,可以根据所述RCEP的设备驱动,执行以下操作:从RCEP106的内存地址中,为所述扩展域的PCIe设备分配配置空间地址,建立所述配置空间地址与总线号/设备号/功能号BDF的对应关系,为所述扩展域中发现的PCIe设备分配总线号,所述总线号用于确定所述扩展域中发现的PCIe设备的BDF,以通过所述扩展域中发现的PCIe设备的BDF,访问所述扩展域中发现的PCIe设备的配置空间寄存器,实现对所述扩展域中发现的PCIe设备的配置空间访问,完成了PCIe总线域的扩展,实现了CPU或者主域对扩展域的通信,解决了现有技术中无法进行PCIe总线域扩展的问题,使得系统中PCIe设备的数量不受256条总线的限制。
进一步,在本发明实施例中,还可以对所述RCEP106进行功能增强,使得所述RCEP106可以执行以下方法:接收访问报文,所述访问报文为所述主域与所述扩展域之间进行相互通信的报文,根据预先保存的地址映射关系,对所述访问报文的访问目标地址进行地址转换,例如将主域的内存地址转换为扩展域的内存地址,发送所述访问报文对应的模拟访问报文,所述模拟访问报文携带转换后的访问目标地址,使得所述主域或者CPU能够访问扩展域的PCIe设备,或者所述扩展域的PCIe设备能够访问主域或者CPU,实现了系统中CPU或者主域与扩展域的通信。
具体实现方式详见以下实施例。
一种扩展PCIe总线域的方法
结合图1所示的系统,本发明实施例提出了一种扩展PCIe总线域的方法,如图2所示,用于包括主域和扩展域的系统。所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合;所述扩展域包括根复合体端点设备和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述根复合体端点设备是所述主域中的PCIe设备以及所述扩展域中的根复合体。所述方法包括:
S201:从所述RCEP的内存地址中,为所述扩展域的PCIe设备分配配置空间地址。
由于所述系统通过RCEP进行PCIe总线域的扩展,所述RCEP硬件隔离了扩展域的PCIe设备,使得系统中的CPU或者主域中的PCIe设备无法识别扩展域中的PCIe设备,因此可以从所述RCEP的内存地址中分配内存地址作为扩展域的PCIe设备的配置空间地址,从而将扩展域的PCIe设备映射到主域中,在进行配置空间访问时,所述配置空间地址能够在主域中代表所述扩展域的PCIe设备,使得CPU或者主域中的PCIe设备可以识别所述扩展域的PCIe设备,以便后续对所述扩展域的PCIe设备进行配置空间访问。
S202:建立所述配置空间地址与总线号/设备号/功能号BDF的对应关系。
所述扩展域包括第二总线集合,所述第二总线集合中的每个总线号最多可以包括32个设备号,每个设备号最多可以包括8个功能号,根据总线号、设备号和功能号可以确定扩展域中的总线号/设备号/功能号(Bus Number/Device Number/Function Number,BDF)。
由于每个功能号最多对应一个PCIe设备,利用所述扩展域的PCIe设备的BDF就可以访问所述扩展域的PCIe设备的配置空间寄存器,即对所述扩展域的PCIe设备进行配置空间访问。因此建立所述配置空间地址与BDF的对应关系,即建立所述配置空间地址与扩展域中的PCIe设备的配置空间寄存器的对应关系,使得利用所述扩展域的PCIe设备的配置空间地址,根据所述配置空间地址与BDF的对应关系,可以对所述扩展域的PCIe设备进行配置空间访问,以发现所述扩展域中的PCIe设备。
S203:从所述第二总线集合中,为所述扩展域中发现的PCIe设备分配总线号,所述总线号用于确定所述扩展域中发现的PCIe设备的BDF,以根据所述配置空间地址与BDF的对应关系,通过所述扩展域中发现的PCIe设备的BDF,实现对所述扩展域中发现的PCIe设备的配置空间访问。
从所述第二总线集合中,为所述扩展域中发现的PCIe设备分配总线号,并所述扩展域中发现的PCIe设备的设备号(Device number)和功能号(Function number),每个PCIe设备的BDF不同,因此,根据所述总线号,可以确定所述扩展域中发现的PCIe设备的BDF,进而确定所述扩展域中发现的PCIe设备的配置空间地址,从而后续对所述扩展域中发现的PCIe设备进行配置空间访问时,可以利用所述扩展域中发现的PCIe设备的配置空间地址,根据所述配置空间地址与BDF的对应关系进行地址转换,得到所述扩展域中发现的PCIe设备的BDF,通过所述扩展域中发现的PCIe设备的BDF对所述扩展域中发现的PCIe设备的配置空间寄存器进行访问,实现对所述扩展域中发现的PCIe设备的配置空间访问。
在本发明实施例中,从所述RCEP的内存地址中,为所述扩展域的PCIe设备分配配置空间地址,建立所述配置空间地址与总线号/设备号/功能号BDF的对应关系,并从扩展域的第二总线集合中,为所述扩展域中发现的PCIe设备分配总线号,所述总线号用于确定所述扩展域中发现的PCIe设备的BDF,以根据所述配置空间地址与BDF的对应关系,通过所述扩展域中发现的PCIe设备的BDF,访问所述扩展域中发现的PCIe设备的配置空间寄存器,实现对所述扩展域中发现的PCIe设备的配置空间访问,完成了PCIe总线域的扩展,实现了CPU或者主域对扩展域的通信,解决了现有技术中无法进行PCIe总线域扩展的问题,使得系统中PCIe设备的数量不受256条总线的限制。
具体实施例
结合图1所示的系统,本发明实施例提出了一种扩展PCIe总线域的方法,如图3所示,用于包括主域和扩展域的系统。所述主域包括根复合体和PCIe设备,所述主域的PCIe设备具有第一总线集合;所述扩展域包括根复合体端点设备和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述根复合体端点设备是所述主域中的PCIe设备以及所述扩展域中的根复合体,所述方法可以由所述系统的CPU执行,所述方法包括:
S301:从所述RCEP的内存地址中,为所述扩展域的PCIe设备分配配置空间地址。
由于所述RCEP硬件隔离了扩展域的PCIe设备,使得系统中的CPU无法确定或识别扩展域的PCIe设备,因此可以从所述RCEP的内存地址中分配地址作为扩展域的PCIe设备的第一内存地址,当访问报文携带的目标地址位于所述第一内存地址的地址区间时,可以确定是对所述扩展域的PCIe设备进行访问,从而将扩展域的PCIe设备映射到主域中,使得所述CPU可以确定或者识别所述扩展域的PCIe设备。
所述RCEP的内存地址包括RCEP的配置空间地址和RCEP的MMIO地址,相应地,扩展域的PCIe设备的第一内存地址可以包括第一配置空间地址(以下简称扩展域的PCIe设备的配置空间地址)和第一MMIO地址,当目标地址位于所述扩展域的PCIe设备的配置空间地址的地址区间时,表示对所述扩展域的PCIe设备进行配置空间访问,当目标地址位于所述扩展域的PCIe设备的第一MMIO的地址区间,表示对所述扩展域的PCIe设备进行MMIO访问。
在进行地址分配的过程中,可以从RCEP的MMIO地址中为扩展域的PCIe设备分配置空间地址,使得后续CPU可以识别所述扩展域的PCIe设备,对所述扩展域的PCIe设备进行配置空间访问,从而发现所述扩展域的PCIe设备。
由于按照PCIe规范,每个PCIe总线域最多有256条总线,每条总线上最多有32个设备号,每个设备号最多包含8个功能号,每个功能号上最多关联一个PCIe设备,每个PCIe设备的配置空间的大小为4K,则扩展域的PCIe设备占用的配置空间地址的大小的最大值为256*32*8*4=256M。因此,在无法确定扩展域中有多少个PCIe设备的情况下,可以为扩展域的PCIe设备分配大小为256M的配置空间地址,例如,如图4所示,RCEP的MMIO地址为[8G,12G],为所述扩展域的PCIe设备的分配的配置空间地址可以为[8G+256M,8G+512M]。
上述方法为可选的实施方式,当然在其它实施例中,也可以从RCEP的其它内存地址中为扩展域的PCIe设备分配配置空间地址,所述扩展域的PCIe设备的配置空间地址的大小也不一定为256M,本发明实施例在此不作限定。
S302:建立所述配置空间地址与BDF的对应关系。
所述扩展域的PCIe设备都对应一个BDF,利用所述扩展域的PCIe设备的BDF就可以访问所述扩展域的PCIe设备的配置空间寄存器,即对所述扩展域的PCIe设备进行配置空间访问。因此,建立所述配置空间地址与BDF的对应关系,即建立所述配置空间地址与扩展域中的PCIe设备的配置空间寄存器的对应关系,从而后续可以利用所述配置空间地址,根据所述配置空间地址与BDF的对应关系,访问所述扩展域的PCIe设备的配置空间寄存器,以发现所述扩展域中的PCIe设备。
建立所述配空间地址与BDF的对应关系,可以是指建立所述配置空间地址中每个4k的内存地址与扩展域中每个BDF的对应关系,具体地,当所述扩展域的PCIe设备的配置空间地址为[起始地址,起始地址+256M]时,可以将[起始地址,起始地址+4K]与扩展域中BDF=00:00.0对应,将[起始地址+4K,起始地址+8K]与BDF=00:00.1对应,以此类推,用[起始地址+256M-4K,起始地址+256M]与BDF=FF:1F.7对应。例如,如图4所示,所述扩展域的PCIe设备的配置空间地址为[8G+256M,8G+512M],建立所述配置空间地址与BDF的对应关系,使得配置空间地址[8G+256M,8G+256M+4K]对应BDF=00:00.0,表示第0根第二总线上的第0个设备的第0个功能关联的PCIe设备的配置空间地址为[8G+256M,8G+256M+4K],[8G+256M+4K,8G+256M+8K]对应BDF=00:00.1,[8G+256M+8K,8G+256M+12K]对应BDF=00:00.2,[8G+256M+12K,8G+256M+16K]对应BDF=00:00.3,以此类推,[8G+512M-4K,8G+512M]对应BDF=FF:1F.7。
在本发明实施例中,上述配置空间地址与BDF的对应关系只是一个示例,当然还可以建立其他的配置空间地址与BDF的对应关系,本发明实施例在此不作限定。
S303:将所述配置空间地址与BDF的对应关系保存在所述RCEP中,以使得所述RCEP能够根据所述配置空间地址与BDF的对应关系进行地址转换,实现对所述扩展域的PCIe设备的配置空间访问。
由于CPU对扩展域的PCIe设备进行配置空间访问时,访问报文首先路由到主域,需要经过所述RCEP进行对所述访问报文的访问目标地址进行地址转换后,才能发送到扩展域的PCIe设备,因此,可以将所述配置空间地址与BDF的对应关系保存到RCEP中,例如保存到RCEP的寄存器中,使得后续所述RCEP可以根据该映射关系,进行地址转换,实现对扩展域的PCIe设备的配置空间访问。
具体地,所述系统的CPU根据主域的PCIe设备或者操作系统的指示对扩展域的PCIe设备进行配置空间访问时,发送访问报文,所述访问报文的访问目标地址为所述扩展域的PCIe设备的配置空间地址,由于所述扩展域的PCIe设备的配置空间地址属于所述RCEP的内存地址,因此所述访问报文将发送到所述RCEP,所述RCEP接收到所述访问报文后,利用保存的所述配置空间地址与BDF的对应关系进行地址转换,转换得到所述扩展域的PCIe设备的BDF,即转换后的访问目标地址,从而所述RCEP可以利用所述扩展域的PCIe设备的BDF,向所述扩展域的PCIe设备的配置空间寄存器发送访问报文,实现对扩展域的PCIe设备的配置空间访问。
S304:利用所述配置空间地址发现扩展域中的PCIe设备,为所述扩展域中发现的PCIe设备分配总线号。
由于RCEP硬件隔离了扩展域的PCIe设备,使得扩展域的PCIe设备对所述系统不可见,所述系统在开机启动时,只能发现主域的PCIe设备。因此,所述系统的CPU可以利用所述配置空间地址,根据所述配置空间地址域BDF的对应关系,对扩展域的PCIe设备的配置空间寄存器进行访问,发现所述扩展域中的PCIe设备,从而为所述扩展域中发现的PCIe设备分配总线号或者MMIO内存地址。
由于所述系统的CPU还没有给所述扩展域的PCIe设备分配总线号,无法确定扩展域中的每个PCIe设备的BDF,但是可以确定扩展域中的所有可能存在的BDF,因此可以利用所述配置空间地址,对所述扩展域中所有可能存在的BDF对应的PCIe设备的配置空间寄存器进行访问,从而确定扩展域中所有可能存在的BDF对应的PCIe设备是否硬件存在,即发现所述扩展域中的PCIe设备,确定某个BDF对应的PCIe设备硬件存在时,为该PCIe设备分配总线号,从而确定该PCIe设备的BDF,后续通过该PCIe设备的BDF,就可以访问该PCIe设备的配置空间寄存器。
具体地,所述系统的CPU可以利用所述配置空间地址,发送设备查询消息到所述配置空间地址对应的BDF所对应的PCIe设备的配置空间寄存器,从而发现扩展域中的PCIe设备,即确定扩展域中硬件存在的PCIe设备。在为扩展域的PCIe设备分配总线号时,可以先确定扩展域的PCIe设备的类型,例如是桥设备还是PCIe端点设备,如果为桥设备,可以从第二总线集合中未分配的总线号中为扩展域的桥设备分配总线号,如果为端点设备,为扩展域的端点设备分配的总线号可以和该端点设备相连的桥设备的总线号相同。上述发现扩展域的PCIe设备,以及为扩展域的PCIe设备分配总线可以通过总线枚举实现,从而在为所述扩展域中发现的PCIe设备分配总线号之后,可以确定所述扩展域中发现的PCIe设备的BDF,即确定了所述扩展域中发现的PCIe设备的配置空间地址,后续CPU可以利用所述扩展域中发现的PCIe设备的配置空间地址,对所述扩展域中发现的PCIe设备进行配置空间访问。
优选地,可以通过如下步骤,对扩展域的PCIe设备进行枚举,从而发现扩展域中的PCIe设备,并从所述第二总线集合中为扩展域中发现的PCIe设备分配总线号:
a)初始化枚举总线号、枚举设备号、枚举功能号和分配总线号,例如,初始化时,令枚举总线号=00,枚举设备号=00,枚举功能号=0,即BDF=00:00.0,表示从总线号为00,设备号为00,功能号为0开始发现扩展域中的PCIe设备,为首次发现的扩展域的PCIe设备分配的总线号为:分配总线号=00;
b)根据所述配置空间地址与BDF的对应关系,获取所述BDF对应的配置空间地址,利用所述BDF对应的配置空间地址发送设备查询消息,使得所述RCEP根据所述配置空间地址与BDF的对应关系将所述设备查询消息发送到所述BDF对应的PCIe设备的配置空间寄存器,根据返回的设备查询响应消息,确定所述BDF对应的PCIe设备是否存在,如果不存在,执行步骤c),继续进行枚举,如果存在,执行步骤d)分配总线号;例如,发送设备查询消息到BDF=00:00.0对应的PCIe设备的VendorId寄存器和DeviceId寄存器,如果返回的消息为全F(十六进行表示),则说明该设备不存在,执行步骤c)继续进行枚举;否则表示该设备存在,执行步骤d)为该发现的PCIe设备分配的总线号为00,并确定该发现的PCIe设备在总线00上的设备号为00,功能号为0;
c)如果不存在,则改变枚举总线号或者枚举设备号或者枚举功能号,从而更新BDF,返回执行步骤b),以确定其他总线号或设备号或功能号上是否有扩展域的PCIe设备,例如,令枚举总线号=00,枚举设备号=00,枚举功能号=1,即更新BDF=00:00.1,返回执行步骤b),以确定第00总线号上的第00设备号的第1功能号上对应的PCIe设备是否存在;
d)如果存在,则表明发现了扩展域的PCIe设备,进一步确定所述扩展域中发现的PCIe设备的设备类型为PCIe端点设备还是桥设备,如果所述扩展域中发现的PCIe设备属于端点设备,则将所述扩展域中发现的PCIe设备所挂的桥设备的总线号作为该端点设备的总线号,保持分配总线号不变,改变枚举总线号或者枚举设备号或者枚举功能号,从而更新BDF,返回执行步骤b),以继续进行枚举发现扩展域中的PCIe设备;如果所述扩展域中发现的PCIe设备属于桥设备,则从所述第二总线集合中未分配的总线号中为该扩展域的桥设备分配总线号,并更新分配总线号,保存枚举总线号不变,更新枚举功能号与枚举功能号,从而更新BDF,返回执行步骤b),以确定该桥下是否挂了PCIe设备,并为该桥所挂的设备分配第二总线。
进一步,如果扩展域的PCIe设备支持单根虚拟化功能,可以从所述第二总线集合中未分配的总线号中为该端点设备预留总线号,以便后续该扩展域的PCIe设备可以利用预留的总线号,进行相应的处理。
进一步,还可以查询所述扩展域的PCIe设备的配置空间寄存器,获取扩展域的PCIe设备的属性信息,包括所述扩展域的PCIe设备的基地址寄存器的大小,基地址寄存器的属性、该设备是否可预取(Prefetchable)等,以便后续可以根据所述扩展域的PCIe设备的属性信息,为所述扩展域的PCIe设备分配虚拟主域地址,例如,可以根据该扩展域的PCIe设备的BDF,确定该扩展域的PCIe设备的配置空间地址,利用所述配置空间地址发送写配置空间访问消息到所述端点设备的配置空间寄存器,以将FFFFFFFF写入所述端点设备的配置空间寄存器,根据读取的消息可以确定所述端点设备的属性信息。
S305:从所述RCEP的内存地址中,为所述扩展域中发现的PCIe设备分配第一MMIO地址。
在发现所述扩展域的PCIe设备之后,可以从已分配的RCEP的MMIO地址以外的MMIO地址中,为扩展域中发现的PCIe设备分配第一MMIO地址,从而将扩展域的PCIe设备映射到主域中,以便后续所述系统的CPU可以利用所述第一MMIO地址,对扩展域中发现的PCIe设备进行MMIO访问,其中,为所述每个PCIe设备分配的第一MMIO地址的大小可以为所述每个PCIe设备的基地址寄存器(Base Address Register)的大小。
具体地,可以对所述扩展域中发现的PCIe设备进行配置空间访问,从而获取所述每个PCIe设备的基地址寄存器的大小,然后根据所述每个PCIe设备的基地址寄存器的大小,从未分配的所述RCEP的MMIO地址中分配地址作为所述每个PCIe设备的第一MMIO地址。由于所述扩展域的PCIe设备可以为多个,则为所述扩展域中发现的PCIe设备分配第一MMIO地址,可以是在步骤S304发现一个扩展域的PCIe设备时,就为该扩展域的PCIe设备分配第一MMIO地址,例如,S304确定BDF=07:01.0对应的目标设备存在,即存在扩展域的PCIe设备时,就为该设备分配第一MMIO地址,当确定BDF=07:03.0对应的目标设备存在时,为该设备分配第一MMIO地址;或者,还可以在发现完所有扩展域的PCIe设备之后,再为扩展域的PCIe设备分配第一MMIO地址,本发明实施例在此不作限定。
进一步,还可以将所述扩展域中发现的PCIe设备的第一MMIO地址的起始地址保存在所述每个PCIe设备各自的基地址寄存器中,使得后续可以通过访问所述扩展域中发现的PCIe设备的基地址寄存器获取所述扩展域中发现的PCIe设备的第一MMIO地址。
S306:建立所述扩展域中发现的PCIe设备的第一MMIO地址与第二MMIO地址的映射关系,为所述所述扩展域中发现的PCIe设备分配第二MMIO地址。
在为所述扩展域中发现的PCIe设备分配第二MMIO地址之前,可以先建立所述扩展域中发现的PCIe设备的第一MMIO地址与第二MMIO地址的映射关系,以将所述扩展域中发现的PCIe设备的第二MMIO地址映射到主域,再根据所述第一MMIO地址与所述第二MMIO地址的映射关系,确定所述扩展域中发现的PCIe设备的第二MMIO地址,从而CPU可以利用所述第一MMIO地址,根据所述第一MMIO地址与所述第二MMIO地址的映射关系,实现对所述扩展域中发现的PCIe设备的MMIO访问,其中,所述第二MMIO地址区别于所述第一MMIO地址,属于扩展域的内存地址资源,与主域中PCIe设备的内存地址不重复。
例如,如图4所示,扩展域中发现的PCIe设备的第一MMIO地址可以为[9G,10G],其中[9G,9G+4M]为扩展域中的PCIe设备112A的第一MMIO地址,[9G+1000M,10G]为扩展域中的PCIe设备116的第一MMIO地址,将扩展域的PCIe设备的第一MMIO地址与第二MMIO地址的映射关系设置为4G的地址偏移,则为扩展域中发现的PCIe设备分配的第二配置空间地址可以为[5G,6G],其中[5G,5G+4M]为扩展域中的PCIe设备112A的第二MMIO地址,[5G+1000M,6G]为扩展域中的PCIe设备116的第二MMIO地址。
S307:将所述第一MMIO地址与所述第二MMIO地址的映射关系保存在所述RCEP中,使得所述RCEP能够根据该映射关系进行地址转换,实现对扩展域的PCIe设备的MMIO访问。
所述系统的CPU对扩展域中的PCIe设备进行MMIO访问时,访问报文首先路由到主域,需要经过所述RCEP进行对所述访问报文的访问目标地址进行地址转换后,才能发送到扩展域中的PCIe设备,因此,可以将建立的所述第一MMIO地址与所述第二MMIO地址的映射关系保存在所述RCEP中,例如保存到RCEP的寄存器中,使得后续所述RCEP可以根据该映射关系,进行地址转换,实现对扩展域中的PCIe设备进行MMIO访问。
具体地,所述系统的CPU根据主域的PCIe设备的指示或者操作系统的指示对扩展域的PCIe设备进行MMIO访问时,向所述RCEP发送访问报文,所述访问报文的访问目标地址为该扩展域的PCIe设备的第一MMIO地址,所述RCEP接收到所述访问报文之后,利用保存的所述第一MMIO地址与所述第二MMIO地址的映射关系,对该目标地址进行地址转换,转换得到所述扩展域的PCIe设备的第二MMIO地址,即转换后的访问目标地址,从而所述RCEP可以根据该即转换后的访问目标地址,向所述扩展域的PCIe设备发送访问报文,实现对扩展域的PCIe设备的MMIO访问。
S308:建立并保存所述扩展域的PCIe设备的标识与所述PCIe设备的第一MMIO地址的对应关系,以利用扩展域的PCIe设备的标识,获得所述扩展域的PCIe设备的第一MMIO地址进行MMIO访问。
所述系统的CPU在为所述扩展域的PCIe设备分配第一MMIO地址之后,还可以建立所述扩展域的PCIe设备的第一MMIO地址与所述扩展域的PCIe设备的标识的对应关系,以便后续所述系统的CPU可以根据所述扩展域的PCIe设备的标识,获得所述扩展域的PCIe设备的第一MMIO地址,对所述扩展域的PCIe设备进行MMIO访问。
其中,所述所述扩展域的PCIe设备的标识可以是所述扩展域的PCIe设备的BDF,还可以是所述扩展域的PCIe设备的设备ID或者厂商ID,本发明实施例在此不作限定。
S309:根据所述扩展域的PCIe设备的第一MMIO地址,建立并保存所述扩展域的MMIO资源树。
所述系统的CPU还可以根据扩展域的PCIe设备的第一MMIO地址,建立所述扩展域的MMIO资源树,保存所述扩展域的MMIO资源树,以使得后续可以利用所述扩展域的MMIO资源树,对所述扩展域的第一MMIO地址资源进行管理,例如,建立的扩展域的PCIe设备的MMIO资源树可以如图5所示,由图可以确定为桥设备112A分配的第一MMIO地址为[9G,9G+4M],端点设备114的第一MMIO地址为[9G+6M,9G+20M]。进一步,所述扩展域的MMIO资源树还可以包括所述扩展域的PCIe设备的属性信息,例如所述扩展域的PCIe设备的内存地址为32位还是64位,所述扩展域的PCIe设备是否可预取、所述扩展域的PCIe设备的基地址寄存器的大小。
S310:从所述RCEP的内存地址中,为所述扩展域的PCIe设备分配第一MSI地址,根据所述第一MSI地址,为所述扩展域的PCIe设备分配第二MSI地址,以用于根据所述第一MSI地址与所述第二MSI地址的映射关系,实现所述扩展域的PCIe设备的MSI访问。
进一步,所述系统的CPU还可以为扩展域的PCIe设备分配第一MSI地址和第二MSI地址,并将所述扩展域的PCIe设备的第一MSI地址和第二MSI地址的映射关系保存在所述RCEP中,使得所述扩展域的PCIe设备能够进行MSI访问,即产生中断。
具体地,可以从为分配的所述RCEP的MMIO地址中分配地址作为所述扩展域的PCIe设备的第一MSI地址,建立所述扩展域的PCIe设备的第一MSI地址和第二MSI地址的映射关系,然后根据所述建立的映射关系,获得所述扩展域的PCIe设备的第二MSI地址,例如,如图4所示,为所述扩展域的PCIe设备分配的第一MSI地址和第二MSI地址分别可以为[8G+513M,9G-1M]和[4G+513M,5G-1M],所述扩展域的PCIe设备的第一MSI地址和第二MSI地址的映射关系为4G的地址偏移。
当扩展域的PCIe设备需要向该系统请求消息信号中断时,先向所述RCEP申请第二MSI地址,根据所述第二MSI地址,向所述RCEP发送访问报文,所述访问报文的访问目标地址属于所述第二MSI地址的地址区间,所述RCEP根据所述扩展域的PCIe设备的第一MSI地址和第二MSI地址的映射关系,进行报文转换,得到转换后的访问目标地址属于所述第一MSI地址,所述RCEP确定所述扩展域的PCIe设备需要进行MSI访问,向所述系统的CPU请求消息信号中断,根据所述转换后的访问目标地址,所述消息信号中断将会路由到所述主域的根复合体进而发送给CPU,完成所述扩展域的PCIe设备的MSI访问。
本步骤可以在步骤S301之前,也可以在步骤S301之后,本发明实施例在此不作限定。
S311:从所述RCEP的内存地址中,为所述扩展域的PCIe设备分配第一DMA地址,根据所述第一DMA地址,为所述扩展域的PCIe设备分配第二DMA地址,以用于根据所述第一DMA地址与所述第二DMA地址的映射关系,实现所述扩展域的PCIe设备的DMA访问。
进一步,所述系统的CPU还可以为扩展域的PCIe设备分配第一DMA地址和第二DMA地址,并将所述扩展域的PCIe设备的第一DMA地址和第二DMA地址的映射关系保存在所述RCEP中,使得所述扩展域的PCIe设备能够进行DMA访问,所述DMA访问由PCIe设备主动发起,可以利用DMA访问实现PCIe设备之间的相互通信。
具体地,所述系统的CPU可以从未分配的所述RCEP的MMIO地址中分配地址作为所述扩展域的PCIe设备的第一DMA地址,建立所述扩展域的PCIe设备的第一DMA地址和第二DMA地址的映射关系,然后根据所述建立的映射关系,获得所述扩展域的PCIe设备的第二DMA地址,例如,如图4所示,为所述扩展域的PCIe设备分配的第一DMA地址和第二DMA地址分别可以为[10G,11G]和[6G,7G],所述扩展域的PCIe设备的第一DMA地址和第二DMA地址的映射关系可以为4G的地址偏移。
当扩展域的PCIe设备需要进行DMA访问时,向所述RCEP申请第二DMA地址,根据所述申请的第二DMA地址向所述RCEP发送访问报文,所述访问报文的访问目标地址属于所述第二DMA地址的地址区间,所述RCEP根据所述扩展域的PCIe设备的第一DMA地址和第二DMA地址的映射关系,进行报文转换,得到转换后的访问目标地址属于所述第一DMA地址,所述RCEP确定所述扩展域的PCIe设备需要进行DMA访问,从所述第一DMA地址中为所述扩展域的PCIe设备分配第一DMA地址,将访问报文发送到所述分配的第一DMA地址,实现扩展域的PCIe设备的DMA访问。
本步骤可以在步骤S301之前,也可以在步骤S301之后,本发明实施例在此不作限定。
S312:对所述扩展域中发现的PCIe设备进行初始化。
由于RCEP106硬件隔离了所述扩展域的PCIe设备,使得扩展域的PCIe设备对所述系统不可见,在系统开机启动时,所述系统的基本输入输出系统或者操作系统无法对所述扩展域的PCIe设备进行初始化。因此,所述系统的CPU可以根据所述基本输入输出系统的指令或者操作系统的指令,在发现所述扩展域的PCIe设备之后,对所述扩展域中发现的PCIe设备进行初始化,使得所述扩展域的PCIe设备准备就绪,可以正常使用。
具体地,可以在确定所述扩展域的PCIe设备之后,对所述扩展域的PCIe设备进行配置空间访问,以获取所述扩展域的PCIe设备的配置信息,然后根据所述配置信息,对所述扩展域的PCIe设备的配置空间寄存器进行相应配置,例如配置所述扩展域的PCIe设备的中断、电源管理、重要产品数据VPD以及虚拟化IO等功能对应的配置空间寄存器,使得所述扩展域的PCIe设备能够正常工作。
S313:加载所述扩展域中发现的PCIe设备的驱动。
所述系统的CPU还可以从预先配置的设备驱动中查找扩展域的PCIe设备的设备驱动,并加载所述设备驱动,具体地,可以获取预先配置的设备驱动对应的设备标识,例如设备ID或者厂商ID,将所述设备标识与扩展域的PCIe设备的配置空间寄存器中记录的设备标识进行匹配,如果匹配成功,则确定该设备驱动为扩展域的PCIe设备的设备驱动,加载所述设备驱动,例如,利用设备驱动A的厂商ID,逐个匹配扩展域的PCIe设备的配置空间寄存器(即利用扩展域的第一配置空间地址,对扩展域的PCIe设备进行配置空间访问)中记录的厂商ID,当所述厂商ID与扩展域的PCIe设备A中记录的厂商ID一致时,则调用设备驱动A的探测函数,如果该函数没有返回错误,则确定设备驱动A为扩展域的PCIe设备A的设备驱动,重复上述过程,直至确定所有扩展域的PCIe设备的设备驱动。
在本发明实施例中,从所述RCEP的内存地址中,为所述扩展域的PCIe设备分配配置空间地址,建立所述配置空间地址与总线号/设备号/功能号BDF的对应关系,并从扩展域的第二总线集合中,为所述扩展域中发现的PCIe设备分配总线号,所述总线号用于确定所述扩展域中发现的PCIe设备的BDF,以根据所述配置空间地址与BDF的对应关系,通过所述扩展域中发现的PCIe设备的BDF,访问所述扩展域中发现的PCIe设备的配置空间寄存器,实现对所述扩展域中发现的PCIe设备的配置空间访问,完成了PCIe总线域的扩展,实现了CPU或者主域对扩展域的通信,解决了现有技术中无法进行PCIe总线域扩展的问题,使得系统中PCIe设备的数量不受256条总线的限制。
进一步,还可以为所述扩展域中发现的PCIe设备分配第一MMIO地址和第二MMIO地址,以根据所述第一MMIO地址与第二MMIO地址的映射关系,实现对所述扩展域中发现的PCIe设备的MMIO访问。进一步,还可以为所述扩展域的PCIe设备分配第一MSI地址和第二MSI地址,以根据所述第一MSI地址与第二MSI地址的映射关系,实现所述扩展域的PCIe设备的MSI访问。此外,还可以为所述扩展域的PCIe设备分配第一DMA地址和第二DMA地址,以根据所述第一DMA地址与第二DMA地址的映射关系,实现所述扩展域的PCIe设备的DMA访问。
一种访问PCIe总线域的方法
结合图1所示的系统构架,本发明实施例提出了一种访问PCIe总线域的方法,如图6所示,用于包括主域和扩展域的系统。所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合;所述扩展域包括根复合体端点设备和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述根复合体端点设备是所述主域中的PCIe设备以及所述扩展域中的根复合体,所述方法包括:
S601:所述RCEP接收访问报文,所述访问报文为所述主域与所述扩展域之间进行相互通信的报文,所述访问报文携带消息体和访问目标地址。
由于RCEP硬件隔离了所述主域与所述扩展域,使得所述主域与所述扩展域的访问报文都需要经过所述RCEP的转发,所述RCEP可以接收访问报文,所述访问报文为所述主域与所述扩展域之间进行相互通信的访问报文。例如,当系统中的CPU对所述扩展域的PCIe设备进行访问时,访问报文将首先路由到所述主域的根复合体,所述主域的根复合体根据所述访问报文的访问目标地址将所述访问报文发送到所述RCEP,又例如,所述扩展域的PCIe设备对所述主域或者CPU进行访问时,将发送访问报文到所述RCEP,所述访问报文携带消息体和访问目标地址。
S602:所述RCEP根据预先保存的地址映射关系对所述访问目标地址进行地址转换,得到转换后的访问目标地址。
由于对于所述系统的CPU而言,只能看到主域的PCIe设备,即只能使用主域的PCIe设备的内存地址,例如RCEP的内存地址,而对于扩展域的PCIe设备而言,只能看到其他扩展域的PCIe设备以及RCEP,即只能使用扩展域的PCIe设备的内存地址,例如第二MMIO地址,第二MSI地址等,因此所述RCEP可以预先保存扩展域的PCIe设备的内存地址或者BDF与所述RCEP的内存地址的地址映射关系,根据所述地址映射关系,将所述访问目标地址转换为扩展域的PCIe设备的内存地址或者BDF,以实现对所述扩展域的PCIe设备进行访问,或者将所述访问目标地址转换为RCEP的内存地址,以利用所述RCEP实现对主域或者CPU的访问。
S603:所述RCEP发送所述访问报文对应的模拟访问报文,所述模拟访问报文携带所述消息体和所述转换后的访问目标地址。
所述消息体即为所述访问报文的读写访问数据或者其它操作指令,所述RCEP可以根据所述消息体和转换后的访问目标地址,生成所述访问报文对应的模拟访问报文,所述模拟访问报文携带转换后的访问目标地址以及所述消息体,所述RCEP可以发送所述模拟访问报文,实现CPU或者主域与扩展域之间的相互访问。
在本发明实施例中,RCEP可以接收访问报文,所述访问报文为所述主域与所述扩展域之间进行相互通信的报文,根据预先保存的地址映射关系,对所述访问报文的访问目标地址进行地址转换,例如将主域的内存地址转换为扩展域的内存地址,得到转换后的访问目标地址,发送所述访问报文对应的模拟访问报文,所述模拟访问报文携带所述转换后的访问目标地址,使得所述主域或者CPU能够访问扩展域的PCIe设备,或者所述扩展域的PCIe设备能够访问主域或者CPU,实现了系统中CPU或者主域与扩展域的通信,完成了对系统中PCIe总线域的扩展,实现了扩展PCIe总线域的通信,解决了现有技术中无法进行PCIe总线域扩展的问题,使得系统中PCIe设备的数量不受256条总线的限制。
进一步,所述访问报文可以是所述系统的CPU对所述扩展域的PCIe设备进行配置空间访问的报文,则所述系统的CPU获取所述扩展域的PCIe设备的配置空间地址作为所述访问报文的访问目标地址,所述配置空间地址属于所述RCEP的内存地址,则所述访问报文将发送到所述RCEP。所述RCEP根据所述扩展域的PCIe设备的配置空间地址与BDF的对应关系进行地址转换,得到所述扩展域的PCIe设备的BDF,即转换后的访问目标地址,所述RCEP可以根据所述转换后的访问目标地址以及所述访问报文的消息体,生成模拟访问报文,通过所述转换后的访问目标地址将所述模拟访问报文发送到所述扩展域的PCIe设备的配置空间寄存器,实现对所述扩展域的PCIe设备的配置空间访问。
进一步,所述访问报文可以是所述系统的CPU对所述扩展域的PCIe设备进行MMIO访问的访问报文,所述系统的CPU获取所述扩展域的PCIe设备的第一MMIO地址作为所述访问报文的访问目标地址,所述第一MMIO地址属于所述RCEP的内存地址,则所述访问报文将发送到所述RCEP。所述RCEP根据所述扩展域的PCIe设备的第一MMIO地址与第二MMIO地址的映射关系进行地址转换,得到所述扩展域的PCIe设备的第二MMIO地址,即转换后的访问目标地址,所述RCEP根据所述转换后的访问目标地址以及所述访问报文的消息体,生成模拟访问报文,通过所述转换后的访问目标地址将所述模拟访问报文发送到所述扩展域的PCIe设备,实现对所述扩展域的PCIe设备的MMIO访问。
进一步,所述访问报文可以为所述扩展域的PCIe设备向所述系统的CPU申请消息信号中断的报文,则所述扩展域的PCIe设备可以向所述RCEP申请第二MSI地址,将所述申请得到的第二MSI地址作为所述访问报文的访问目标地址,向所述RCEP发送所述访问报文。所述RCEP根据所述扩展域的PCIe设备的第一MSI地址与第二MSI地址的映射关系进行地址转换,得到所述扩展域的PCIe设备的第一MSI地址,即转换后的访问目标地址,所述第一MSI地址属于所述RCEP的内存地址,所述RCEP根据所述转换后的访问目标地址以及所述访问报文的消息体,生成模拟访问报文,通过所述转换后的访问目标地址,所述MSI类型的访问报文将路由到所述主域的根复合体,发送到所述系统的CPU,实现所述扩展域的PCIe设备的MSI访问。
进一步,所述访问报文可以为所述扩展域的PCIe设备对所述系统进行直接内存存取访问的报文,例如所述扩展域的PCIe设备与所述主域的PCIe设备进行通信时,可以利用该直接内存存取访问,则所述扩展域的PCIe设备可以向所述RCEP申请第二DMA地址,将所述申请得到的第二DMA地址作为所述访问报文的访问目标地址,向所述RCEP发送所述访问报文。所述RCEP根据所述扩展域的PCIe设备的第一DMA地址与第二DMA地址的映射关系进行地址转换,得到所述扩展域的PCIe设备的第一DMA地址,即转换后的访问目标地址,所述第一DMA地址属于所述RCEP的内存地址,所述RCEP根据所述转换后的访问目标地址以及所述访问报文的消息体,生成模拟访问报文,并根据所述转换后的访问目标地址,向主域的根复合体申请主域的DMA地址进行DMA访问,实现所述扩展域的PCIe设备的DMA访问。
本发明装置实施例
结合图1所示的系统构架,本发明实施例提出了一种访问PCIe总线域的装置,如图7所示,用于包括主域和扩展域的系统,所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合,所述扩展域包括所述装置和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述装置是所述主域中的PCIe设备以及所述扩展域中的根复合体;所述装置可以是图1所述系统中的根复合体端点设备106,所述装置可以包括:第一类地址分配单元701和总线分配单元702;
所述第一类地址分配单元701用于从所述RCEP的内存地址中,为所述扩展域的PCIe设备分配配置空间地址,以及建立所述配置空间地址与BDF的对应关系,例如可以从所述RCEP的MMIO地址中分配地址作为扩展域的PCIe设备的配置空间地址,从而将扩展域的PCIe设备映射到主域中,在进行配置空间访问时,所述配置空间地址能够在主域中代表所述扩展域的PCIe设备,使得所述系统的CPU或者主域中的PCIe设备可以识别所述扩展域的PCIe设备,以便后续对所述扩展域的PCIe设备进行配置空间访问。进一步,所述第一类地址分配单元701还可以将所述配置空间地址与BDF的对应关系保存在所述根复合体端点设备中,以使得所述根复合体端点设备能够根据所述配置空间地址与BDF的对应关系进行地址转换,实现对所述扩展域中发现的PCIe设备的配置空间访问。
所述总线分配单元702用于从所述第二总线集合中,为所述扩展域中发现的PCIe设备分配总线号,所述总线号用于确定所述扩展域中发现的PCIe设备的BDF,以根据所述配置空间地址与BDF的对应关系,通过所述扩展域中发现的PCIe设备的BDF,实现对所述扩展域中发现的PCIe设备的配置空间访问。
进一步,所述装置还可以包括:
确定单元703,用于利用所述扩展域的PCIe设备的配置空间地址以及所述配置空间地址与BDF的对应关系,发现所述扩展域中的PCIe设备。由于所述系统的CPU还没有给所述扩展域的PCIe设备分配总线号,无法确定扩展域中的每个PCIe设备的BDF,但是可以确定扩展域中的所有可能存在的BDF,因此所述确定单元703可以利用所述配置空间地址,对所述扩展域中所有可能存在的BDF对应的PCIe设备的配置空间寄存器进行访问,从而确定扩展域中所有可能存在的BDF对应的PCIe设备是否硬件存在,即发现所述扩展域中的PCIe设备。从而后续所述总线分配单元702可以根据所述确定单元703发现的扩展域中的PCIe设备,为所述扩展域中发现的PCIe设备分配总线号。
第二类地址分配单元704,用于从所述RCEP的内存地址中,为所述扩展域中发现的PCIe设备分配第一MMIO,例如从所述RCEP的MMIO地址中为所述扩展域中发现的PCIe设备分配第一MMIO地址,以及根据所述第一MMIO地址,为所述扩展域中发现的PCIe设备分配第二MMIO地址,以用于根据所述第一MMIO地址与所述第二MMIO地址的映射关系,实现对所述扩展域中发现的PCIe设备的MMIO访问。具体地,所述所述第二类地址分配单元704可以确定所述扩展域中发现的PCIe设备的基地址寄存器的大小,根据所述扩展域中发现的PCIe设备的基地址寄存器的大小,为所述扩展域中发现的PCIe设备分配第一MMIO地址,然后建立所述第一MMIO地址与所述第二MMIO地址的映射关系,根据所述第一MMIO地址与所述第二MMIO地址的映射关系,为所述扩展域中发现的PCIe设备分配第二MMIO地址。
进一步,所述所述第二类地址分配单元704还可以将所述第一MMIO地址与所述第二MMIO地址的映射关系保存在所述RCEP中,以使得所述RCEP能够根据所述第一MMIO地址与所述第二MMIO地址的映射关系进行地址转换,实现对所述扩展域中发现的PCIe设备的MMIO访问。
进一步,所述装置还可以包括:
保存单元705,用于建立并保存所述扩展域中发现的PCIe设备的标识与所述扩展域中发现的PCIe设备的第一MMIO地址的对应关系,以根据所述扩展域中发现的PCIe设备的标识,获得所述扩展域中发现的PCIe设备的第一MMIO地址进行MMIO访问。
所述保存单元705还可以在所述第二类地址分配单元704为所述扩展域的PCIe设备分配第一MMIO地址之后,根据所述扩展域中发现的PCIe设备的第一MMIO地址,建立并保存所述扩展域的MMIO资源树,以使得后续可以利用所述扩展域的MMIO资源树,对所述扩展域的第一MMIO地址资源进行管理,所述扩展域的MMIO资源树还可以包括所述扩展域的PCIe设备的属性信息,例如所述扩展域的PCIe设备的内存地址为32位还是64位,所述扩展域的PCIe设备是否可预取、所述扩展域的PCIe设备的基地址寄存器的大小。
进一步,所述装置还可以包括:
第三类地址分配单元706,用于从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配第一消息信号中断地址,以及根据所述第一消息信号中断地址,为所述扩展域的PCIe设备分配第二消息信号中断地址,以用于根据所述第一消息信号中断地址与所述第二消息信号中断地址的映射关系,实现所述扩展域的PCIe设备的消息信号中断访问。
进一步,所述装置还可以包括:
第四类地址分配单元707,用于从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配第一直接内存存取地址,根据所述第一直接内存存取地址,为所述扩展域的PCIe设备分配第二直接内存存取地址,以用于根据所述第一直接内存存取地址与所述第二直接内存存取地址的映射关系,实现所述扩展域的PCIe设备的直接内存存取访问。
进一步,所述装置还可以包括:
初始化单元708,用于对所述扩展域中发现的PCIe设备进行初始化,具体地,可以在所述确定单元703发现所述扩展域的PCIe设备之后,对所述扩展域的PCIe设备进行配置空间访问,获取所述扩展域的PCIe设备的配置信息,然后根据所述配置信息,对所述扩展域的PCIe设备的配置空间寄存器进行相应配置,例如配置所述扩展域的PCIe设备的中断、电源管理、重要产品数据VPD以及虚拟化IO等功能对应的配置空间寄存器,以完成对所述扩展域中发现的PCIe设备的初始化,使得所述扩展域中发现的PCIe设备能够准备就绪,正常工作。
在本发明实施例中,所述第一类地址分配单元701能够从所述RCEP的内存地址中,为所述扩展域的PCIe设备分配配置空间地址,建立所述配置空间地址与总线号/设备号/功能号BDF的对应关系,所述总线分配单元702可以从扩展域的第二总线集合中,为所述扩展域中发现的PCIe设备分配总线号,所述总线号用于确定所述扩展域中发现的PCIe设备的BDF,以根据所述配置空间地址与BDF的对应关系,通过所述扩展域中发现的PCIe设备的BDF,访问所述扩展域中发现的PCIe设备的配置空间寄存器,实现对所述扩展域中发现的PCIe设备的配置空间访问,完成了PCIe总线域的扩展,实现了CPU或者主域对扩展域的通信,解决了现有技术中无法进行PCIe总线域扩展的问题,使得系统中PCIe设备的数量不受256条总线的限制。
进一步,所述第二类地址分配单元704还可以为所述扩展域中发现的PCIe设备分配第一MMIO地址和第二MMIO地址,以根据所述第一MMIO地址与第二MMIO地址的映射关系,实现对所述扩展域中发现的PCIe设备的MMIO访问。进一步,所述第三轮地址分配单元还可以为所述扩展域的PCIe设备分配第一MSI地址和第二MSI地址,以根据所述第一MSI地址与第二MSI地址的映射关系,实现所述扩展域的PCIe设备的MSI访问。此外,所述第四类地址分配单元707还可以为所述扩展域的PCIe设备分配第一DMA地址和第二DMA地址,以根据所述第一DMA地址与第二DMA地址的映射关系,实现所述扩展域的PCIe设备的DMA访问。
结合图1所示的系统构架,本发明实施例提出了一种访问PCIe总线域的装置,如图8所示,用于包括主域和扩展域的系统,所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合,所述扩展域包括所述装置和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述装置是所述主域中的PCIe设备以及所述扩展域中的根复合体;所述装置可以是图1所述系统中的根复合体端点设备106,所述装置可以包括:接收单元801、转换单元802和发送单元803。
所述接收单元801用于接收访问报文,所述访问报文为所述主域与所述扩展域之间进行相互通信的报文,所述访问报文携带消息体和访问目标地址;
所述转换单元802用于根据预先保存的地址映射关系,对所述访问目标地址进行地址转换,得到转换后的访问目标地址。例如,所述转换单元802可以将所述访问目标地址转换为扩展域的PCIe设备的MMIO地址或者BDF,以实现对所述扩展域的PCIe设备进行访问,或者将所述访问目标地址转换为RCEP的内存地址(例如所述扩展域设备的第一MSI地址或者第以DMA地址),以实现对主域或者CPU的访问。
所述发送单元803用于发送所述访问报文对应的模拟访问报文,所述模拟访问报文携带所述消息体和所述转换后的访问目标地址。所述消息体即为所述访问报文的读写访问数据或者其它操作指令,所述发送单元803可以根据所述消息体和转换后的访问目标地址,生成或者获取所述访问报文对应的模拟访问报文,所述模拟访问报文携带转换后的访问目标地址以及所述消息体,所述发送单元803可以发送所述模拟访问报文,实现CPU或者主域与扩展域之间的相互访问。
具体地,所述访问目标地址可以为所述扩展域的PCIe设备的配置空间地址,则所述转换单元802可以根据所述扩展域的PCIe设备的配置空间地址与BDF的对应关系,对所述扩展域的PCIe设备的配置空间地址进行地址转换,得到所述扩展域的PCIe设备的BDF;所述发送单元803可以根据所述扩展域的PCIe设备的BDF以及所述消息体,发送所述访问报文对应的模拟访问报文,实现对所述扩展域的PCIe设备的配置空间访问。
所述访问目标地址可以为所述扩展域的PCIe设备的第一MMIO地址,则所述转换单元802可以根据所述扩展域的PCIe设备的第一MMIO地址与第二MMIO地址的映射关系,对所述扩展域的PCIe设备的第一MMIO地址进行地址转换,得到所述扩展域的PCIe设备的第二MMIO地址;所述发送单元803可以根据所述扩展域的PCIe设备的第二MMIO地址以及所述消息体,发送所述访问报文对应的模拟访问报文,实现对所述扩展域的PCIe设备的MMIO访问。
所述访问目标地址可以为所述扩展域的PCIe设备的第二MSI地址,则所述转换单元802可以根据所述扩展域的PCIe设备的第一MSI地址与第二MSI地址的映射关系,对所述扩展域的PCIe设备的第二MSI地址进行地址转换,得到所述扩展域的PCIe设备的第一MSI地址;所述发送单元803可以根据所述扩展域的PCIe设备的第一MSI地址以及所述消息体,发送所述访问报文对应的模拟访问报文,实现所述扩展域的PCIe设备的MSI访问。
所述访问目标地址可以为所述扩展域的PCIe设备的第二DMA地址,则所述转换单元802可以根据所述扩展域的PCIe设备的第一DMA地址与第二DMA地址的映射关系,对所述扩展域的PCIe设备的第二DMA地址进行地址转换,得到所述扩展域的PCIe设备的第一DMA地址;所述发送单元803可以根据所述扩展域的PCIe设备的第一DMA地址以及所述消息体,发送所述访问报文对应的模拟访问报文,实现所述扩展域的PCIe设备的DMA访问。
在本发明实施例中,所述接收单元801能够接收访问报文,所述访问报文为所述主域与所述扩展域之间进行相互通信的报文,所述转换单元802能够根据预先保存的地址映射关系,对所述访问报文的访问目标地址进行地址转换,得到转换后的访问目标地址,发送所述访问报文对应的模拟访问报文,所述模拟访问报文携带所述转换后的访问目标地址,使得所述主域的根复合体或者CPU能够访问扩展域的PCIe设备,或者所述扩展域的PCIe设备能够进行DMA访问或者MSI访问,实现了系统中CPU或者主域与扩展域的通信,完成了对所述系统中的PCIe总线域的扩展,实现了扩展PCIe总线域的通信,解决了现有技术中无法进行PCIe总线域扩展的问题,使得系统中PCIe设备的数量不受256条总线的限制。
如图9,为本发明实施例提供的扩展PCIe总线域的装置的结构组成示意图。所述扩展PCIe总线域的装置用于包括主域扩展域的系统,所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合;所述扩展域包括根复合体端点设备和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述根复合体端点设备是所述主域中的PCIe设备以及所述扩展域中的根复合体;
所述扩展PCIe总线域的装置可以包括处理器901、存储器902、系统总线904和通信接口905。处理器901、存储器902和通信接口905之间通过系统总线904连接并完成相互间的通信。
处理器901可能为单核或多核中央处理单元,或者为特定集成电路,或者为被配置成实施本发明实施例的一个或多个集成电路。
存储器902可以为高速RAM存储器,也可以为非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
存储器902用于计算机执行指令903。具体的,计算机执行指令903中可以包括程序代码。
当所述扩展PCIe总线域的装置运行时,处理器901运行计算机执行指令903,可以执行图2或图3任意之一所述的方法流程。
本发明实施例提供了一种访问PCIe总线域的装置,所述装置的结构组成示意图如图9所示。所述装置用于包括主域扩展域的系统,所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合;所述扩展域包括根复合体端点设备和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述根复合体端点设备是所述主域中的PCIe设备以及所述扩展域中的根复合体;
所述装置可以包括处理器901、存储器902、系统总线904和通信接口905。处理器901、存储器902和通信接口905之间通过系统总线904连接并完成相互间的通信。
处理器901可能为单核或多核中央处理单元,或者为特定集成电路,或者为被配置成实施本发明实施例的一个或多个集成电路。
存储器902可以为高速RAM存储器,也可以为非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
存储器902用于计算机执行指令903。具体的,计算机执行指令903中可以包括程序代码。
当所述装置运行时,处理器901运行计算机执行指令903,可以执行图4所示的方法流程或者如下所述的方法流程:
S901:接收访问报文,所述访问报文为所述主域与所述扩展域之间进行相互通信的报文,所述访问报文携带消息体和访问目标地址,所述访问目标地址为所述扩展域的PCIe设备的配置空间地址,或者所述扩展域的PCIe设备的第一MMIO地址,或者所述扩展域的PCIe设备的第二MSI地址,或者所述扩展域的PCIe设备的第二DMA地址,所述扩展域的PCIe设备的配置空间地址以及所述扩展域的PCIe设备的第一MMIO地址属于所述RCEP的内存地址。
S902:根据地址映射关系对所述访问目标地址进行地址转换,得到转换后的访问目标地址,所述地址映射关系预先保存在所述RCEP中,所述地址映射关系包括所述扩展域的PCIe设备的配置空间地址与BDF的对应关系,或者所述扩展域的PCIe设备的第一MMIO地址与第二MMIO地址的映射关系,或者所述扩展域的PCIe设备的第一MSI地址与第二MSI地址的映射关系,或者所述扩展域的PCIe设备的第一DMA地址与第二DMA地址的映射关系。
S903:发送所述访问报文对应的模拟访问报文,所述模拟访问报文携带所述消息体和所述转换后的访问目标地址。
本领域普通技术人员将会理解,本发明的各个方面、或各个方面的可能实现方式可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的各方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这里都统称为“电路”、“模块”或者“系统”。此外,本发明的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。
计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、光纤、便携式只读存储器(CD-ROM)。
计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作;生成实施在框图的每一块、或各块的组合中规定的功能动作的装置。
计算机可读程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为单独的软件包、部分在用户的计算机上并且部分在远程计算机上,或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施方案中,在流程图中各步骤、或框图中各块所注明的功能可能不按图中注明的顺序发生。例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际上可能被大致同时执行,或者这些块有时候可能被以相反顺序执行。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (37)
1.一种扩展高速外围组件互联PCIe总线域的方法,其特征在于,用于包括主域和扩展域的系统;
所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合;
所述扩展域包括根复合体端点设备和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述根复合体端点设备是所述主域中的PCIe设备以及所述扩展域中的根复合体;
所述方法包括:
从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配配置空间地址,建立所述配置空间地址与总线号/设备号/功能号BDF的对应关系;
从所述第二总线集合中,为所述扩展域中发现的PCIe设备分配总线号,所述总线号用于确定所述扩展域中发现的PCIe设备的BDF,以根据所述配置空间地址与BDF的对应关系,通过所述扩展域中发现的PCIe设备的BDF,实现对所述扩展域中发现的PCIe设备的配置空间访问。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
从所述根复合体端点设备的内存地址中,为所述扩展域中发现的PCIe设备分配第一内存映射输入/输出地址;
根据所述第一内存映射输入/输出地址,为所述扩展域中发现的PCIe设备分配第二内存映射输入/输出地址,以用于根据所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系,实现对所述扩展域中发现的PCIe设备的内存映射输入/输出访问。
3.根据权利要求2所述的方法,其特征在于,所述根复合体端点设备的内存地址具体是指所述根复合体端点设备的内存映射输入/输出地址。
4.根据权利要求2或3任一项所述的方法,其特征在于,所述从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配配置空间地址之后,所述方法还包括:
利用所述扩展域的PCIe设备的配置空间地址以及所述配置空间地址与BDF的对应关系,发现所述扩展域中的PCIe设备。
5.根据权利要求2-3任一项所述的方法,其特征在于,所述方法还包括:
将所述配置空间地址与BDF的对应关系保存在所述根复合体端点设备中,以使得所述根复合体端点设备能够根据所述配置空间地址与BDF的对应关系进行地址转换,实现对所述扩展域中发现的PCIe设备的配置空间访问。
6.根据权利要求2-3任一项所述的方法,其特征在于,所述根据所述第一内存映射输入/输出地址,为所述扩展域中发现的PCIe设备分配第二内存映射输入/输出地址包括:
建立所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系;
根据所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系,为所述扩展域中发现的PCIe设备分配第二内存映射输入/输出地址。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
确定所述扩展域中发现的PCIe设备的基地址寄存器的大小;
则所述为所述扩展域中发现的PCIe设备分配第一内存映射输入/输出地址包括:根据所述扩展域中发现的PCIe设备的基地址寄存器的大小,为所述扩展域中发现的PCIe设备分配第一内存映射输入/输出地址。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
将所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系保存在所述根复合体端点设备中,以使得所述根复合体端点设备能够根据所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系进行地址转换,实现对所述扩展域中发现的PCIe设备的内存映射输入/输出访问。
9.根据权利要求6所述的方法,其特征在于,所述方法还包括:
建立并保存所述扩展域中发现的PCIe设备的标识与所述扩展域中发现的PCIe设备的第一内存映射输入/输出地址的对应关系,以根据所述扩展域中发现的PCIe设备的标识,获得所述扩展域中发现的PCIe设备的第一内存映射输入/输出地址进行内存映射输入/输出访问。
10.根据权利要求6所述的方法,其特征在于,在为所述扩展域的PCIe设备分配第一内存映射输入/输出地址之后,所述方法还包括:
根据所述扩展域中发现的PCIe设备的第一内存映射输入/输出地址,建立并保存所述扩展域的内存映射输入/输出资源树。
11.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配第一消息信号中断地址;
根据所述第一消息信号中断地址,为所述扩展域的PCIe设备分配第二消息信号中断地址,以用于根据所述第一消息信号中断地址与所述第二消息信号中断地址的映射关系,实现所述扩展域的PCIe设备的消息信号中断访问。
12.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配第一直接内存存取地址;
根据所述第一直接内存存取地址,为所述扩展域的PCIe设备分配第二直接内存存取地址,以用于根据所述第一直接内存存取地址与所述第二直接内存存取地址的映射关系,实现所述扩展域的PCIe设备的直接内存存取访问。
13.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
通过对所述扩展域中发现的PCIe设备进行配置空间访问,获取所述扩展域中发现的PCIe设备的配置信息;
根据所述扩展域中发现的PCIe设备的配置信息,对所述扩展域中发现的PCIe设备的配置空间寄存器进行配置,以对所述扩展域中发现的PCIe设备进行初始化。
14.一种扩展高速外围组件互联PCIe总线域的装置,其特征在于,用于包括主域和扩展域的系统;
所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合;
所述扩展域包括根复合体端点设备和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述根复合体端点设备是所述主域中的PCIe设备以及所述扩展域中的根复合体;
所述装置包括处理器、存储器、总线和通信接口;
所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当初始化装置运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述初始化装置执行如权利要求1-13中任一所述的扩展PCIe总线域的方法。
15.一种访问高速外围组件互联PCIe总线域的方法,其特征在于,用于包括主域和扩展域的系统;
所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合;
所述扩展域包括根复合体端点设备和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述根复合体端点设备是所述主域中的PCIe设备以及所述扩展域中的根复合体;
所述方法包括:
所述根复合体端点设备接收访问报文,所述访问报文为所述主域与所述扩展域之间进行相互通信的报文,所述访问报文携带消息体和访问目标地址;
所述根复合体端点设备根据地址映射关系对所述访问目标地址进行地址转换,得到转换后的访问目标地址,所述地址映射关系预先保存在所述根复合体端点设备中;
所述根复合体端点设备发送所述访问报文对应的模拟访问报文,所述模拟访问报文携带所述消息体和所述转换后的访问目标地址。
16.根据权利要求15所述的方法,其特征在于,所述访问目标地址为所述扩展域的PCIe设备的配置空间地址,所述地址映射关系为所述扩展域的PCIe设备的配置空间地址与总线号/设备号/功能号BDF的对应关系;
则所述根复合体端点设备根据地址映射关系对所述访问目标地址进行地址转换,得到转换后的访问目标地址包括:
所述根复合体端点设备根据所述扩展域的PCIe设备的配置空间地址与BDF的对应关系,对所述扩展域的PCIe设备的配置空间地址进行地址转换,得到所述扩展域的PCIe设备的BDF。
17.根据权利要求15所述的方法,其特征在于,所述访问目标地址为所述扩展域的PCIe设备的第一内存映射输入/输出地址,所述地址映射关系为所述扩展域的PCIe设备的第一内存映射输入/输出地址与第二内存映射输入/输出地址的映射关系;
则所述根复合体端点设备根据地址映射关系对所述访问目标地址进行地址转换,得到转换后的访问目标地址包括:
所述根复合体端点设备根据所述扩展域的PCIe设备的第一内存映射输入/输出地址与第二内存映射输入/输出地址的映射关系,对所述扩展域的PCIe设备的第一内存映射输入/输出地址进行地址转换,得到所述扩展域的PCIe设备的第二内存映射输入/输出地址。
18.根据权利要求15所述的方法,其特征在于,所述访问目标地址为所述扩展域的PCIe设备的第二消息信号中断地址,所述地址映射关系为所述扩展域的PCIe设备的第一消息信号中断地址与第二消息信号中断地址的映射关系;
则所述根复合体端点设备根据地址映射关系对所述访问目标地址进行地址转换,得到转换后的访问目标地址包括:
所述根复合体端点设备根据所述扩展域的PCIe设备的第一消息信号中断地址与第二消息信号中断地址的映射关系,对所述扩展域的PCIe设备的第二消息信号中断地址进行地址转换,得到所述扩展域的PCIe设备的第一消息信号中断地址。
19.根据权利要求15所述的方法,其特征在于,所述访问目标地址为所述扩展域的PCIe设备的第二直接内存存取地址,所述地址映射关系为所述扩展域的PCIe设备的第一直接内存存取地址与第二直接内存存取地址的映射关系;
则所述根复合体端点设备根据地址映射关系对所述访问目标地址进行地址转换,得到转换后的访问目标地址包括:
所述根复合体端点设备根据所述扩展域的PCIe设备的第一直接内存存取地址与第二直接内存存取地址的映射关系,对所述扩展域的PCIe设备的第二直接内存存取地址进行地址转换,得到所述扩展域的PCIe设备的第一直接内存存取地址。
20.一种访问高速外围组件互联PCIe总线域的装置,其特征在于,用于包括主域和扩展域的系统;
所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合;
所述扩展域包括根复合体端点设备和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述根复合体端点设备是所述主域中的PCIe设备以及所述扩展域中的根复合体;
所述装置包括处理器、存储器、总线和通信接口;
所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当初始化装置运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述初始化装置执行如权利要求15-19中任一所述的访问PCIe总线域的方法。
21.一种扩展高速外围组件互联PCIe总线域的装置,用于包括主域和扩展域的系统;
所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合;
所述扩展域包括所述装置和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述装置是所述主域中的PCIe设备以及所述扩展域中的根复合体;
所述装置包括:
第一类地址分配单元,用于从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配配置空间地址,建立所述配置空间地址与总线号/设备号/功能号BDF的对应关系;
总线分配单元,从所述第二总线集合中,为所述扩展域中发现的PCIe设备分配总线号,所述总线号用于确定所述扩展域中发现的PCIe设备的BDF,以根据所述配置空间地址与BDF的对应关系,通过所述扩展域中发现的PCIe设备的BDF,实现对所述扩展域中发现的PCIe设备的配置空间访问。
22.根据权利要求21所述的装置,其特征在于,所述装置还包括:
第二类地址分配单元,用于从所述根复合体端点设备的内存地址中,为所述扩展域中发现的PCIe设备分配第一内存映射输入/输出地址,以及根据所述第一内存映射输入/输出地址,为所述扩展域中发现的PCIe设备分配第二内存映射输入/输出地址,以用于根据所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系,实现对所述扩展域中发现的PCIe设备的内存映射输入/输出访问。
23.根据权利要求22所述的装置,其特征在于,所述根复合体端点设备的内存地址具体是指所述根复合体端点设备的内存映射输入/输出地址。
24.根据权利要求21或22所述的装置,其特征在于,所述装置还包括:
确定单元,用于利用所述扩展域的PCIe设备的配置空间地址以及所述配置空间地址与BDF的对应关系,发现所述扩展域中的PCIe设备。
25.根据权利要求22-23任一项所述的装置,其特征在于,所述第一类地址分配单元还用于将所述配置空间地址与BDF的对应关系保存在所述根复合体端点设备中,以使得所述根复合体端点设备能够根据所述配置空间地址与BDF的对应关系进行地址转换,实现对所述扩展域中发现的PCIe设备的配置空间访问。
26.根据权利要求22所述的装置,其特征在于,所述第二类地址分配单元具体用于建立所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系,根据所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系,为所述扩展域中发现的PCIe设备分配第二内存映射输入/输出地址。
27.根据权利要求26所述的装置,其特征在于,所述第二类地址分配单元具体用于确定所述扩展域中发现的PCIe设备的基地址寄存器的大小,根据所述扩展域中发现的PCIe设备的基地址寄存器的大小,为所述扩展域中发现的PCIe设备分配第一内存映射输入/输出地址。
28.根据权利要求26或27所述的装置,其特征在于,所述第二类地址分配单元还用于将所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系保存在所述根复合体端点设备中,以使得所述根复合体端点设备能够根据所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系进行地址转换,实现对所述扩展域中发现的PCIe设备的内存映射输入/输出访问。
29.根据权利要求26-27任一项所述的装置,其特征在于,所述装置还包括:
保存单元,用于建立并保存所述扩展域中发现的PCIe设备的标识与所述扩展域中发现的PCIe设备的第一内存映射输入/输出地址的对应关系,以根据所述扩展域中发现的PCIe设备的标识,获得所述扩展域中发现的PCIe设备的第一内存映射输入/输出地址进行内存映射输入/输出访问。
30.根据权利要求29所述的装置,其特征在于,所述保存单元还用于在所述第二类地址分配单元为所述扩展域的PCIe设备分配第一内存映射输入/输出地址之后,根据所述扩展域中发现的PCIe设备的第一内存映射输入/输出地址,建立并保存所述扩展域的内存映射输入/输出资源树。
31.根据权利要求21-23、26-27和30任一项所述的装置,其特征在于,所述装置还包括:
第三类地址分配单元,用于从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配第一消息信号中断地址,以及根据所述第一消息信号中断地址,为所述扩展域的PCIe设备分配第二消息信号中断地址,以用于根据所述第一消息信号中断地址与所述第二消息信号中断地址的映射关系,实现所述扩展域的PCIe设备的消息信号中断访问。
32.根据权利要求21-23、26-27和30任一项所述的装置,其特征在于,所述装置还包括:
第四类地址分配单元,用于从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配第一直接内存存取地址,根据所述第一直接内存存取地址,为所述扩展域的PCIe设备分配第二直接内存存取地址,以用于根据所述第一直接内存存取地址与所述第二直接内存存取地址的映射关系,实现所述扩展域的PCIe设备的直接内存存取访问。
33.一种访问高速外围组件互联PCIe总线域的装置,其特征在于,用于包括主域和扩展域的系统;
所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合;
所述扩展域包括所述装置和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述装置是所述主域中的PCIe设备以及所述扩展域中的根复合体;
所述装置包括:
接收单元,用于接收访问报文,所述访问报文为所述主域与所述扩展域之间进行相互通信的报文,所述访问报文携带消息体和访问目标地址;
转换单元,用于根据预先保存的地址映射关系,对所述访问目标地址进行地址转换,得到转换后的访问目标地址;
发送单元,用于发送所述访问报文对应的模拟访问报文,所述模拟访问报文携带所述消息体和所述转换后的访问目标地址。
34.根据权利要求33所述的装置,其特征在于,所述访问目标地址为所述扩展域的PCIe设备的配置空间地址,所述地址映射关系为所述扩展域的PCIe设备的配置空间地址与总线号/设备号/功能号BDF的对应关系;
则所述转换单元具体用于根据所述扩展域的PCIe设备的配置空间地址与BDF的对应关系,对所述扩展域的PCIe设备的配置空间地址进行地址转换,得到所述扩展域的PCIe设备的BDF。
35.根据权利要求33所述的装置,其特征在于,所述访问目标地址为所述扩展域的PCIe设备的第一内存映射输入/输出地址,所述地址映射关系为所述扩展域的PCIe设备的第一内存映射输入/输出地址与第二内存映射输入/输出地址的映射关系;
则所述转换单元具体用于根据所述扩展域的PCIe设备的第一内存映射输入/输出地址与第二内存映射输入/输出地址的映射关系,对所述扩展域的PCIe设备的第一内存映射输入/输出地址进行地址转换,得到所述扩展域的PCIe设备的第二内存映射输入/输出地址。
36.根据权利要求33所述的装置,其特征在于,所述访问目标地址为所述扩展域的PCIe设备的第二消息信号中断地址,所述地址映射关系为所述扩展域的PCIe设备的第一消息信号中断地址与第二消息信号中断地址的映射关系;
则所述转换单元具体用于根据所述扩展域的PCIe设备的第一消息信号中断地址与第二消息信号中断地址的映射关系,对所述扩展域的PCIe设备的第二消息信号中断地址进行地址转换,得到所述扩展域的PCIe设备的第一消息信号中断地址。
37.根据权利要求33所述的装置,其特征在于,所述访问目标地址为所述扩展域的PCIe设备的第二直接内存存取地址,所述地址映射关系为所述扩展域的PCIe设备的第一直接内存存取地址与第二直接内存存取地址的映射关系;
则所述转换单元具体用于根据所述扩展域的PCIe设备的第一直接内存存取地址与第二直接内存存取地址的映射关系,对所述扩展域的PCIe设备的第二直接内存存取地址进行地址转换,得到所述扩展域的PCIe设备的第一直接内存存取地址。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2013/091227 WO2015100672A1 (zh) | 2013-12-31 | 2013-12-31 | 一种扩展PCIe总线域的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104285218A CN104285218A (zh) | 2015-01-14 |
CN104285218B true CN104285218B (zh) | 2017-02-15 |
Family
ID=52258899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380002531.8A Active CN104285218B (zh) | 2013-12-31 | 2013-12-31 | 一种扩展PCIe总线域的方法和装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9690739B2 (zh) |
EP (5) | EP2927812B1 (zh) |
CN (1) | CN104285218B (zh) |
ES (2) | ES2640452T3 (zh) |
NO (1) | NO2927812T3 (zh) |
WO (1) | WO2015100672A1 (zh) |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9830289B2 (en) | 2014-09-16 | 2017-11-28 | Apple Inc. | Methods and apparatus for aggregating packet transfer over a virtual bus interface |
US9971397B2 (en) | 2014-10-08 | 2018-05-15 | Apple Inc. | Methods and apparatus for managing power with an inter-processor communication link between independently operable processors |
KR102255216B1 (ko) * | 2014-11-20 | 2021-05-24 | 삼성전자주식회사 | Pci 장치와 이를 포함하는 pci 시스템 |
US10042794B2 (en) | 2015-06-12 | 2018-08-07 | Apple Inc. | Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link |
ES2726302T3 (es) * | 2015-09-21 | 2019-10-03 | Huawei Tech Co Ltd | Sistema informático y procedimiento para acceder a un dispositivo de punto extremo del mismo |
US10061707B2 (en) * | 2015-12-26 | 2018-08-28 | Intel Corporation | Speculative enumeration of bus-device-function address space |
US10085214B2 (en) | 2016-01-27 | 2018-09-25 | Apple Inc. | Apparatus and methods for wake-limiting with an inter-device communication link |
US10191852B2 (en) | 2016-02-29 | 2019-01-29 | Apple Inc. | Methods and apparatus for locking at least a portion of a shared memory resource |
US10877915B2 (en) * | 2016-03-04 | 2020-12-29 | Intel Corporation | Flattening portal bridge |
US10198364B2 (en) | 2016-03-31 | 2019-02-05 | Apple Inc. | Memory access protection apparatus and methods for memory mapped access between independently operable processors |
US10775871B2 (en) | 2016-11-10 | 2020-09-15 | Apple Inc. | Methods and apparatus for providing individualized power control for peripheral sub-systems |
US10551902B2 (en) * | 2016-11-10 | 2020-02-04 | Apple Inc. | Methods and apparatus for providing access to peripheral sub-system registers |
CN106776382B (zh) * | 2016-12-02 | 2020-03-17 | 北京东土军悦科技有限公司 | 一种pcie设备的配置方法及装置 |
CN111897751B (zh) * | 2017-01-26 | 2024-10-18 | 华为技术有限公司 | 一种数据传输的方法、装置、设备和系统 |
US10402355B2 (en) * | 2017-02-08 | 2019-09-03 | Texas Instruments Incorporated | Apparatus and mechanism to bypass PCIe address translation by using alternative routing |
JP6704127B2 (ja) * | 2017-04-07 | 2020-06-03 | パナソニックIpマネジメント株式会社 | 情報処理装置 |
CN107045486B (zh) * | 2017-04-12 | 2020-01-31 | 福州瑞芯微电子股份有限公司 | 一种PCIe安全域广播方法以及系统 |
US10956245B1 (en) * | 2017-07-28 | 2021-03-23 | EMC IP Holding Company LLC | Storage system with host-directed error scanning of solid-state storage devices |
US10346226B2 (en) | 2017-08-07 | 2019-07-09 | Time Warner Cable Enterprises Llc | Methods and apparatus for transmitting time sensitive data over a tunneled bus interface |
US10331612B1 (en) | 2018-01-09 | 2019-06-25 | Apple Inc. | Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors |
US11381514B2 (en) | 2018-05-07 | 2022-07-05 | Apple Inc. | Methods and apparatus for early delivery of data link layer packets |
US10430352B1 (en) | 2018-05-18 | 2019-10-01 | Apple Inc. | Methods and apparatus for reduced overhead data transfer with a shared ring buffer |
CN108777634B (zh) * | 2018-05-24 | 2021-05-07 | 许继电气股份有限公司 | 一种PCIe交换机及其端点地址空间分配方法 |
CN108959127B (zh) | 2018-05-31 | 2021-02-09 | 华为技术有限公司 | 地址转换方法、装置及系统 |
US10585699B2 (en) | 2018-07-30 | 2020-03-10 | Apple Inc. | Methods and apparatus for verifying completion of groups of data transactions between processors |
US11614986B2 (en) * | 2018-08-07 | 2023-03-28 | Marvell Asia Pte Ltd | Non-volatile memory switch with host isolation |
JP7115128B2 (ja) * | 2018-08-07 | 2022-08-09 | 富士通株式会社 | 情報処理装置、ブート方法及びブートプログラム |
US11544000B2 (en) | 2018-08-08 | 2023-01-03 | Marvell Asia Pte Ltd. | Managed switching between one or more hosts and solid state drives (SSDs) based on the NVMe protocol to provide host storage services |
US10719376B2 (en) | 2018-08-24 | 2020-07-21 | Apple Inc. | Methods and apparatus for multiplexing data flows via a single data structure |
CN109324899B (zh) * | 2018-09-10 | 2022-05-20 | 中国电子科技集团公司电子科学研究院 | 基于PCIe池化硬件资源的编址方法、装置及主控节点 |
US10789110B2 (en) | 2018-09-28 | 2020-09-29 | Apple Inc. | Methods and apparatus for correcting out-of-order data transactions between processors |
US10838450B2 (en) | 2018-09-28 | 2020-11-17 | Apple Inc. | Methods and apparatus for synchronization of time between independently operable processors |
CN109343905B (zh) * | 2018-10-08 | 2021-07-06 | 郑州云海信息技术有限公司 | 一种pcie资源配置系统和方法 |
CN109656630B (zh) * | 2018-12-27 | 2021-09-17 | 龙芯中科技术股份有限公司 | 配置空间的访问方法、装置、架构及储存介质 |
US10853284B1 (en) * | 2019-07-22 | 2020-12-01 | Vmware, Inc. | Supporting PCI-e message-signaled interrupts in computer system with shared peripheral interrupts |
CN112306913B (zh) * | 2019-07-30 | 2023-09-22 | 华为技术有限公司 | 一种端点设备的管理方法、装置及系统 |
CN112306624A (zh) * | 2019-07-31 | 2021-02-02 | 华为技术有限公司 | 一种信息处理方法、物理机和pcie设备 |
CN110795374B (zh) * | 2019-10-16 | 2021-06-11 | 苏州浪潮智能科技有限公司 | 一种设备访问的方法、装置及可读存储介质 |
US11899550B2 (en) * | 2020-03-31 | 2024-02-13 | Advantest Corporation | Enhanced auxiliary memory mapped interface test systems and methods |
CN111679997B (zh) * | 2020-05-29 | 2023-06-13 | 中国航空工业集团公司西安航空计算技术研究所 | 一种多个pci/pci-e接口系统的设备管理方法 |
CN113986800A (zh) * | 2020-07-10 | 2022-01-28 | 华为技术有限公司 | 多处理器系统及配置多处理器系统的方法 |
CN111858407B (zh) * | 2020-07-14 | 2021-12-07 | 中航航空电子有限公司 | 高速外围设备互连系统内的通信方法及高速外围设备互连系统 |
CN114153771A (zh) * | 2020-08-18 | 2022-03-08 | 许继集团有限公司 | 一种pcie总线系统及ep设备获取总线上其它设备信息的方法 |
CN118056191A (zh) * | 2021-06-09 | 2024-05-17 | 安法布里卡公司 | 具有可配置传输的多平面、多协议存储器交换机构造 |
US20230057698A1 (en) * | 2021-08-23 | 2023-02-23 | Nvidia Corporation | Physically distributed control plane firewalls with unified software view |
US11914543B2 (en) * | 2021-12-06 | 2024-02-27 | Arm Limited | PCIe communications |
CN115114219B (zh) * | 2022-07-22 | 2023-10-20 | 深圳星云智联科技有限公司 | 一种pci-e拓扑方法、装置、设备及存储介质 |
CN115543894B (zh) * | 2022-11-30 | 2023-05-26 | 苏州浪潮智能科技有限公司 | 存储系统、数据处理方法及装置、存储介质及电子设备 |
CN116303148B (zh) * | 2023-05-17 | 2023-08-22 | 北京中科网威信息技术有限公司 | 多插槽设备网卡探测方法、装置、电子设备及存储介质 |
CN116644010A (zh) * | 2023-06-09 | 2023-08-25 | 广东浪潮智慧计算技术有限公司 | 一种数据处理方法、装置、设备及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101206629A (zh) * | 2006-12-19 | 2008-06-25 | 国际商业机器公司 | 在运行的PCIe架构中热插/拔新组件的系统和方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6418494B1 (en) * | 1998-10-30 | 2002-07-09 | Cybex Computer Products Corporation | Split computer architecture to separate user and processor while retaining original user interface |
US7334071B2 (en) * | 2005-05-25 | 2008-02-19 | Integrated Device Technology, Inc. | Expansion of cross-domain addressing for PCI-express packets passing through non-transparent bridge |
US7562176B2 (en) | 2007-02-28 | 2009-07-14 | Lsi Corporation | Apparatus and methods for clustering multiple independent PCI express hierarchies |
CN101242371B (zh) * | 2008-03-14 | 2010-11-10 | 杭州华三通信技术有限公司 | 基于PCIe交换架构路由器堆叠的方法、系统和装置 |
JP2011517497A (ja) * | 2008-03-25 | 2011-06-09 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | Pcieのsr−iov機能をレガシー機能として現出するように変換するシステム及び方法 |
US20110167190A1 (en) * | 2008-09-02 | 2011-07-07 | Hung-Ming Lin | Apparatus and method for distant bus extended system |
US8429325B1 (en) * | 2010-08-06 | 2013-04-23 | Integrated Device Technology Inc. | PCI express switch and method for multi-port non-transparent switching |
US8930609B2 (en) * | 2010-08-18 | 2015-01-06 | Intel Corporation | Method, apparatus, and system for manageability and secure routing and endpoint access |
US20130346655A1 (en) * | 2012-06-22 | 2013-12-26 | Advanced Micro Devices, Inc. | Bus agent capable of supporting extended atomic operations and method therefor |
CN103092798B (zh) | 2012-12-28 | 2016-05-25 | 华为技术有限公司 | 片上系统及总线下的访问设备的方法 |
CN103117929B (zh) * | 2013-01-31 | 2015-12-23 | 中国科学院计算技术研究所 | 一种基于PCIe数据交换的通信方法及系统 |
US9135200B2 (en) | 2013-06-28 | 2015-09-15 | Futurewei Technologies, Inc. | System and method for extended peripheral component interconnect express fabrics |
WO2015035574A1 (zh) * | 2013-09-11 | 2015-03-19 | 华为技术有限公司 | 一种故障处理的方法、计算机系统和装置 |
-
2013
- 2013-12-31 ES ES13899977.6T patent/ES2640452T3/es active Active
- 2013-12-31 CN CN201380002531.8A patent/CN104285218B/zh active Active
- 2013-12-31 EP EP13899977.6A patent/EP2927812B1/en active Active
- 2013-12-31 EP EP17166632.4A patent/EP3264280B1/en active Active
- 2013-12-31 NO NO13899977A patent/NO2927812T3/no unknown
- 2013-12-31 EP EP19186711.8A patent/EP3629186B1/en active Active
- 2013-12-31 EP EP22155035.3A patent/EP4092540B1/en active Active
- 2013-12-31 WO PCT/CN2013/091227 patent/WO2015100672A1/zh active Application Filing
- 2013-12-31 ES ES17166632T patent/ES2761927T3/es active Active
- 2013-12-31 EP EP22155193.0A patent/EP4089544B1/en active Active
-
2015
- 2015-06-26 US US14/752,099 patent/US9690739B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101206629A (zh) * | 2006-12-19 | 2008-06-25 | 国际商业机器公司 | 在运行的PCIe架构中热插/拔新组件的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104285218A (zh) | 2015-01-14 |
EP4089544B1 (en) | 2024-01-31 |
NO2927812T3 (zh) | 2017-12-30 |
EP2927812A1 (en) | 2015-10-07 |
EP4089544A1 (en) | 2022-11-16 |
EP3264280A1 (en) | 2018-01-03 |
EP3264280B1 (en) | 2019-09-18 |
WO2015100672A1 (zh) | 2015-07-09 |
EP2927812A4 (en) | 2016-04-13 |
US9690739B2 (en) | 2017-06-27 |
EP3629186B1 (en) | 2022-02-23 |
EP4092540A1 (en) | 2022-11-23 |
EP2927812B1 (en) | 2017-08-02 |
EP4092540B1 (en) | 2024-01-31 |
ES2640452T3 (es) | 2017-11-03 |
US20150293873A1 (en) | 2015-10-15 |
EP3629186A1 (en) | 2020-04-01 |
ES2761927T3 (es) | 2020-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104285218B (zh) | 一种扩展PCIe总线域的方法和装置 | |
CN102707991B (zh) | 多根i/o虚拟化共享方法和系统 | |
CN101751285B (zh) | 用于不同种类处理单元的集中式设备虚拟化层 | |
CN104461958B (zh) | 支持sr-iov的存储资源访问方法、存储控制器及存储设备 | |
CN101606130B (zh) | 在处理器系统的指令级使能资源分配标识的方法和装置 | |
CN105993009A (zh) | 通过非透明桥向PCIe集群中的计算资源传送MSI-X中断的方法和装置 | |
CN109582611A (zh) | 加速器结构 | |
CN102650976B (zh) | 一种支持单根io虚拟化用户级接口控制装置及其方法 | |
CN104298535B (zh) | 延伸只读存储器管理系统、方法及其管理主机 | |
US20110219164A1 (en) | I/o system and i/o control method | |
US11880333B2 (en) | Peripheral component interconnect (PCI) backplane connectivity system on chip (SoC) | |
US8185602B2 (en) | Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters | |
CN109582605A (zh) | 通过PCIe的一致性存储器设备 | |
JPWO2010044409A1 (ja) | マルチルートpciエクスプレススイッチ、その起動方法、及び、マルチルートpciマネージャプログラム | |
CN105335309B (zh) | 一种数据传输方法及计算机 | |
US20140173167A1 (en) | Pci express switch and computer system using the same | |
CN105630727B (zh) | 多SoC节点之间的访问方法、装置和系统 | |
CN103914333B (zh) | 基于片上网络互连的多核存储系统仿真器 | |
CN108471384A (zh) | 用于端到端通信的报文转发的方法和装置 | |
TWI791134B (zh) | 通信裝置、資訊處理系統及通信方法 | |
US10936219B2 (en) | Controller-based inter-device notational data movement system | |
CN106326172A (zh) | 一种APB总线slave接口扩展电路及其使用方法 | |
CN106445573A (zh) | 固件升级方法、装置及高速外围设备互联集群系统 | |
CN103731375B (zh) | 一种fc端口虚拟化方法、装置 | |
JP4106964B2 (ja) | アドレス割当装置およびその方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |