CN104285218A - 一种扩展PCIe总线域的方法和装置 - Google Patents

一种扩展PCIe总线域的方法和装置 Download PDF

Info

Publication number
CN104285218A
CN104285218A CN201380002531.8A CN201380002531A CN104285218A CN 104285218 A CN104285218 A CN 104285218A CN 201380002531 A CN201380002531 A CN 201380002531A CN 104285218 A CN104285218 A CN 104285218A
Authority
CN
China
Prior art keywords
address
extension field
pcie equipment
memory
pcie
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.)
Granted
Application number
CN201380002531.8A
Other languages
English (en)
Other versions
CN104285218B (zh
Inventor
邵维伟
林沐晖
李利江
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN104285218A publication Critical patent/CN104285218A/zh
Application granted granted Critical
Publication of CN104285218B publication Critical patent/CN104285218B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/4045Coupling between buses using bus bridges where the bus bridge performs an extender function
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0024Peripheral component interconnect [PCI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI 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总线域的方法和装置
技术领域
本发明实施例涉及计算机技术,特别是涉及一种扩展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包含根复合体(RootComplex,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 Mapped Input/Output,MMIO)访问报文和直接内存存取(DirectMemory 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/DeviceNumber/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)和功能号(Functionnumber),每个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 (39)

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-4任一项所述的方法,其特征在于,所述方法还包括:
将所述配置空间地址与BDF的对应关系保存在所述根复合体端点设备中,以使得所述根复合体端点设备能够根据所述配置空间地址与BDF的对应关系进行地址转换,实现对所述扩展域中发现的PCIe设备的配置空间访问。
6.根据权利要求2-5任一项所述的方法,其特征在于,所述根据所述第一内存映射输入/输出地址,为所述扩展域中发现的PCIe设备分配第二内存映射输入/输出地址包括:
建立所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系;
根据所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系,为所述扩展域中发现的PCIe设备分配第二内存映射输入/输出地址。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
确定所述扩展域中发现的PCIe设备的基地址寄存器的大小;
则所述为所述扩展域中发现的PCIe设备分配第一内存映射输入/输出地址包括:根据所述扩展域中发现的PCIe设备的基地址寄存器的大小,为所述扩展域中发现的PCIe设备分配第一内存映射输入/输出地址。
8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
将所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系保存在所述根复合体端点设备中,以使得所述根复合体端点设备能够根据所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系进行地址转换,实现对所述扩展域中发现的PCIe设备的内存映射输入/输出访问。
9.根据权利要求6-8任一项所述的方法,其特征在于,所述方法还包括:
建立并保存所述扩展域中发现的PCIe设备的标识与所述扩展域中发现的PCIe设备的第一内存映射输入/输出地址的对应关系,以根据所述扩展域中发现的PCIe设备的标识,获得所述扩展域中发现的PCIe设备的第一内存映射输入/输出地址进行内存映射输入/输出访问。
10.根据权利要求6-9所述的方法,其特征在于,在为所述扩展域的PCIe设备分配第一内存映射输入/输出地址之后,所述方法还包括:
根据所述扩展域中发现的PCIe设备的第一内存映射输入/输出地址,建立并保存所述扩展域的内存映射输入/输出资源树。
11.根据权利要求1-10任一项所述的方法,其特征在于,所述方法还包括:
从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配第一消息信号中断地址;
根据所述第一消息信号中断地址,为所述扩展域的PCIe设备分配第二消息信号中断地址,以用于根据所述第一消息信号中断地址与所述第二消息信号中断地址的映射关系,实现所述扩展域的PCIe设备的消息信号中断访问。
12.根据权利要求1-10任一项所述的方法,其特征在于,所述方法还包括:
从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配第一直接内存存取地址;
根据所述第一直接内存存取地址,为所述扩展域的PCIe设备分配第二直接内存存取地址,以用于根据所述第一直接内存存取地址与所述第二直接内存存取地址的映射关系,实现所述扩展域的PCIe设备的直接内存存取访问。
13.根据权利要求1-12任一项所述的方法,其特征在于,所述方法还包括:
通过对所述扩展域中发现的PCIe设备进行配置空间访问,获取所述扩展域中发现的PCIe设备的配置信息;
根据所述扩展域中发现的PCIe设备的配置信息,对所述扩展域中发现的PCIe设备的配置空间寄存器进行配置,以对所述扩展域中发现的PCIe设备进行初始化。
14.一种访问高速外围组件互联PCIe总线域的方法,其特征在于,用于包括主域和扩展域的系统;
所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合;
所述扩展域包括根复合体端点设备和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述根复合体端点设备是所述主域中的PCIe设备以及所述扩展域中的根复合体;
所述方法包括:
所述根复合体端点设备接收访问报文,所述访问报文为所述主域与所述扩展域之间进行相互通信的报文,所述访问报文携带消息体和访问目标地址;
所述根复合体端点设备根据地址映射关系对所述访问目标地址进行地址转换,得到转换后的访问目标地址,所述地址映射关系预先保存在所述根复合体端点设备中;
所述根复合体端点设备发送所述访问报文对应的模拟访问报文,所述模拟访问报文携带所述消息体和所述转换后的访问目标地址。
15.根据权利要求14所述的方法,其特征在于,所述访问目标地址为所述扩展域的PCIe设备的配置空间地址,所述地址映射关系为所述扩展域的PCIe设备的配置空间地址与总线号/设备号/功能号BDF的对应关系;
则所述根复合体端点设备根据地址映射关系对所述访问目标地址进行地址转换,得到转换后的访问目标地址包括:
所述根复合体端点设备根据所述扩展域的PCIe设备的配置空间地址与BDF的对应关系,对所述扩展域的PCIe设备的配置空间地址进行地址转换,得到所述扩展域的PCIe设备的BDF。
16.根据权利要求14所述的方法,其特征在于,所述访问目标地址为所述扩展域的PCIe设备的第一内存映射输入/输出地址,所述地址映射关系为所述扩展域的PCIe设备的第一内存映射输入/输出地址与第二内存映射输入/输出地址的映射关系;
则所述根复合体端点设备根据地址映射关系对所述访问目标地址进行地址转换,得到转换后的访问目标地址包括:
所述根复合体端点设备根据所述扩展域的PCIe设备的第一内存映射输入/输出地址与第二内存映射输入/输出地址的映射关系,对所述扩展域的PCIe设备的第一内存映射输入/输出地址进行地址转换,得到所述扩展域的PCIe设备的第二内存映射输入/输出地址。
17.根据权利要求14所述的方法,其特征在于,所述访问目标地址为所述扩展域的PCIe设备的第二消息信号中断地址,所述地址映射关系为所述扩展域的PCIe设备的第一消息信号中断地址与第二消息信号中断地址的映射关系;
则所述根复合体端点设备根据地址映射关系对所述访问目标地址进行地址转换,得到转换后的访问目标地址包括:
所述根复合体端点设备根据所述扩展域的PCIe设备的第一消息信号中断地址与第二消息信号中断地址的映射关系,对所述扩展域的PCIe设备的第二消息信号中断地址进行地址转换,得到所述扩展域的PCIe设备的第一消息信号中断地址。
18.根据权利要求14所述的方法,其特征在于,所述访问目标地址为所述扩展域的PCIe设备的第二直接内存存取地址,所述地址映射关系为所述扩展域的PCIe设备的第一直接内存存取地址与第二直接内存存取地址的映射关系;
则所述根复合体端点设备根据地址映射关系对所述访问目标地址进行地址转换,得到转换后的访问目标地址包括:
所述根复合体端点设备根据所述扩展域的PCIe设备的第一直接内存存取地址与第二直接内存存取地址的映射关系,对所述扩展域的PCIe设备的第二直接内存存取地址进行地址转换,得到所述扩展域的PCIe设备的第一直接内存存取地址。
19.一种扩展高速外围组件互联PCIe总线域的装置,用于包括主域和扩展域的系统;
所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合;
所述扩展域包括所述装置和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述装置是所述主域中的PCIe设备以及所述扩展域中的根复合体;
所述装置包括:
第一类地址分配单元,用于从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配配置空间地址,建立所述配置空间地址与总线号/设备号/功能号BDF的对应关系;
总线分配单元,从所述第二总线集合中,为所述扩展域中发现的PCIe设备分配总线号,所述总线号用于确定所述扩展域中发现的PCIe设备的BDF,以根据所述配置空间地址与BDF的对应关系,通过所述扩展域中发现的PCIe设备的BDF,实现对所述扩展域中发现的PCIe设备的配置空间访问。
20.根据权利要求19所述的装置,其特征在于,所述装置还包括:
第二类地址分配单元,用于从所述根复合体端点设备的内存地址中,为所述扩展域中发现的PCIe设备分配第一内存映射输入/输出地址,以及根据所述第一内存映射输入/输出地址,为所述扩展域中发现的PCIe设备分配第二内存映射输入/输出地址,以用于根据所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系,实现对所述扩展域中发现的PCIe设备的内存映射输入/输出访问。
21.根据权利要求20所述的装置,其特征在于,所述根复合体端点设备的内存地址具体是指所述根复合体端点设备的内存映射输入/输出地址。
22.根据权利要求19或20所述的装置,其特征在于,所述装置还包括:
确定单元,用于利用所述扩展域的PCIe设备的配置空间地址以及所述配置空间地址与BDF的对应关系,发现所述扩展域中的PCIe设备。
23.根据权利要求20-22任一项所述的装置,其特征在于,所述第一类地址分配单元还用于将所述配置空间地址与BDF的对应关系保存在所述根复合体端点设备中,以使得所述根复合体端点设备能够根据所述配置空间地址与BDF的对应关系进行地址转换,实现对所述扩展域中发现的PCIe设备的配置空间访问。
24.根据权利要求20-23任一项所述的装置,其特征在于,所述所述第二类地址分配单元具体用于建立所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系,根据所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系,为所述扩展域中发现的PCIe设备分配第二内存映射输入/输出地址。
25.根据权利要求24所述的装置,其特征在于,所述第二类地址分配单元具体用于确定所述扩展域中发现的PCIe设备的基地址寄存器的大小,根据所述扩展域中发现的PCIe设备的基地址寄存器的大小,为所述扩展域中发现的PCIe设备分配第一内存映射输入/输出地址。
26.根据权利要求24或25所述的装置,其特征在于,所述所述第二类地址分配单元还用于将所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系保存在所述根复合体端点设备中,以使得所述根复合体端点设备能够根据所述第一内存映射输入/输出地址与所述第二内存映射输入/输出地址的映射关系进行地址转换,实现对所述扩展域中发现的PCIe设备的内存映射输入/输出访问。
27.根据权利要求24-26任一项所述的装置,其特征在于,所述装置还包括:
保存单元,用于建立并保存所述扩展域中发现的PCIe设备的标识与所述扩展域中发现的PCIe设备的第一内存映射输入/输出地址的对应关系,以根据所述扩展域中发现的PCIe设备的标识,获得所述扩展域中发现的PCIe设备的第一内存映射输入/输出地址进行内存映射输入/输出访问。
28.根据权利要求24-27任一项所述的装置,其特征在于,所述保存单元还用于在所述第二类地址分配单元为所述扩展域的PCIe设备分配第一内存映射输入/输出地址之后,根据所述扩展域中发现的PCIe设备的第一内存映射输入/输出地址,建立并保存所述扩展域的内存映射输入/输出资源树。
29.根据权利要求19-28任一项所述的装置,其特征在于,所述装置还包括:
第三类地址分配单元,用于从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配第一消息信号中断地址,以及根据所述第一消息信号中断地址,为所述扩展域的PCIe设备分配第二消息信号中断地址,以用于根据所述第一消息信号中断地址与所述第二消息信号中断地址的映射关系,实现所述扩展域的PCIe设备的消息信号中断访问。
30.根据权利要求19-28任一项所述的装置,其特征在于,所述装置还包括:
第四类地址分配单元,用于从所述根复合体端点设备的内存地址中,为所述扩展域的PCIe设备分配第一直接内存存取地址,根据所述第一直接内存存取地址,为所述扩展域的PCIe设备分配第二直接内存存取地址,以用于根据所述第一直接内存存取地址与所述第二直接内存存取地址的映射关系,实现所述扩展域的PCIe设备的直接内存存取访问。
31.一种访问高速外围组件互联PCIe总线域的装置,其特征在于,用于包括主域和扩展域的系统;
所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合;
所述扩展域包括所述装置和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述装置是所述主域中的PCIe设备以及所述扩展域中的根复合体;
所述装置包括:
接收单元,用于接收访问报文,所述访问报文为所述主域与所述扩展域之间进行相互通信的报文,所述访问报文携带消息体和访问目标地址;
转换单元,用于根据预先保存的地址映射关系,对所述访问目标地址进行地址转换,得到转换后的访问目标地址;
发送单元,用于发送所述访问报文对应的模拟访问报文,所述模拟访问报文携带所述消息体和所述转换后的访问目标地址。
32.根据权利要求31所述的装置,其特征在于,所述访问目标地址为所述扩展域的PCIe设备的配置空间地址,所述地址映射关系为所述扩展域的PCIe设备的配置空间地址与总线号/设备号/功能号BDF的对应关系;
则所述转换单元具体用于根据所述扩展域的PCIe设备的配置空间地址与BDF的对应关系,对所述扩展域的PCIe设备的配置空间地址进行地址转换,得到所述扩展域的PCIe设备的BDF。
33.根据权利要求31所述的装置,其特征在于,所述访问目标地址为所述扩展域的PCIe设备的第一内存映射输入/输出地址,所述地址映射关系为所述扩展域的PCIe设备的第一内存映射输入/输出地址与第二内存映射输入/输出地址的映射关系;
则所述转换单元具体用于根据所述扩展域的PCIe设备的第一内存映射输入/输出地址与第二内存映射输入/输出地址的映射关系,对所述扩展域的PCIe设备的第一内存映射输入/输出地址进行地址转换,得到所述扩展域的PCIe设备的第二内存映射输入/输出地址。
34.根据权利要求31所述的装置,其特征在于,所述访问目标地址为所述扩展域的PCIe设备的第二消息信号中断地址,所述地址映射关系为所述扩展域的PCIe设备的第一消息信号中断地址与第二消息信号中断地址的映射关系;
则所述转换单元具体用于根据所述扩展域的PCIe设备的第一消息信号中断地址与第二消息信号中断地址的映射关系,对所述扩展域的PCIe设备的第二消息信号中断地址进行地址转换,得到所述扩展域的PCIe设备的第一消息信号中断地址。
35.根据权利要求31所述的装置,其特征在于,所述访问目标地址为所述扩展域的PCIe设备的第二直接内存存取地址,所述地址映射关系为所述扩展域的PCIe设备的第一直接内存存取地址与第二直接内存存取地址的映射关系;
则所述转换单元具体用于根据所述扩展域的PCIe设备的第一直接内存存取地址与第二直接内存存取地址的映射关系,对所述扩展域的PCIe设备的第二直接内存存取地址进行地址转换,得到所述扩展域的PCIe设备的第一直接内存存取地址。
36.一种扩展高速外围组件互联PCIe总线域的装置,其特征在于,用于包括主域和扩展域的系统;
所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合;
所述扩展域包括根复合体端点设备和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述根复合体端点设备是所述主域中的PCIe设备以及所述扩展域中的根复合体;
所述装置包括处理器、存储器、总线和通信接口;
所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述初始化装置运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述初始化装置执行如权利要求1-13中任一所述的扩展PCIe总线域的方法。
37.一种访问高速外围组件互联PCIe总线域的装置,其特征在于,用于包括主域和扩展域的系统;
所述主域包括根复合体和PCIe设备,所述主域中的PCIe设备具有第一总线集合;
所述扩展域包括根复合体端点设备和PCIe设备,所述扩展域中的PCIe设备具有第二总线集合,所述第一总线集合与所述第二总线集合不同,所述根复合体端点设备是所述主域中的PCIe设备以及所述扩展域中的根复合体;
所述装置包括处理器、存储器、总线和通信接口;
所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述初始化装置运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述初始化装置执行如权利要求14-18中任一所述的访问PCIe总线域的方法。
38.一种计算机可读介质,其特征在于,包括计算机执行指令,以供计算机的处理器执行所述计算机执行指令时,所述计算机执行如权利要求1-13中任一所述的扩展高速外围组件互联PCIe总线域的方法。
39.一种计算机可读介质,其特征在于,包括计算机执行指令,以供计算机的处理器执行所述计算机执行指令时,所述计算机执行如权利要求14-18中任一所述的访问高速外围组件互联PCIe总线域的方法。
CN201380002531.8A 2013-12-31 2013-12-31 一种扩展PCIe总线域的方法和装置 Active CN104285218B (zh)

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 true CN104285218A (zh) 2015-01-14
CN104285218B 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) EP3629186B1 (zh)
CN (1) CN104285218B (zh)
ES (2) ES2640452T3 (zh)
NO (1) NO2927812T3 (zh)
WO (1) WO2015100672A1 (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776382A (zh) * 2016-12-02 2017-05-31 北京东土军悦科技有限公司 一种pcie设备的配置方法及装置
CN107045486A (zh) * 2017-04-12 2017-08-15 福州瑞芯微电子股份有限公司 一种PCIe安全域广播方法以及系统
CN108292267A (zh) * 2015-12-26 2018-07-17 英特尔公司 总线-装置-功能地址空间的推测性枚举
CN108777634A (zh) * 2018-05-24 2018-11-09 许继电气股份有限公司 一种PCIe交换机及其端点地址空间分配方法
CN108959127A (zh) * 2018-05-31 2018-12-07 华为技术有限公司 地址转换方法、装置及系统
CN109324899A (zh) * 2018-09-10 2019-02-12 中国电子科技集团公司电子科学研究院 基于PCIe池化硬件资源的编址方法、装置及主控节点
CN109343905A (zh) * 2018-10-08 2019-02-15 郑州云海信息技术有限公司 一种pcie资源配置系统和方法
CN109656630A (zh) * 2018-12-27 2019-04-19 龙芯中科技术有限公司 配置空间的访问方法、装置、架构及储存介质
CN110462598A (zh) * 2017-04-07 2019-11-15 松下知识产权经营株式会社 信息处理装置
CN110795374A (zh) * 2019-10-16 2020-02-14 苏州浪潮智能科技有限公司 一种设备访问的方法、装置及可读存储介质
CN110998551A (zh) * 2017-02-08 2020-04-10 德克萨斯仪器股份有限公司 绕过pcie地址转换的设备和机制
CN111679997A (zh) * 2020-05-29 2020-09-18 中国航空工业集团公司西安航空计算技术研究所 一种多个pci/pci-e接口系统的设备管理方法
CN111858407A (zh) * 2020-07-14 2020-10-30 中航航空电子有限公司 高速外围设备互连系统内的通信方法及高速外围设备互连系统
WO2021017503A1 (zh) * 2019-07-30 2021-02-04 华为技术有限公司 一种端点设备的管理方法、装置及系统
CN113986800A (zh) * 2020-07-10 2022-01-28 华为技术有限公司 多处理器系统及配置多处理器系统的方法
CN114153771A (zh) * 2020-08-18 2022-03-08 许继集团有限公司 一种pcie总线系统及ep设备获取总线上其它设备信息的方法
CN115114219A (zh) * 2022-07-22 2022-09-27 深圳星云智联科技有限公司 一种pci-e拓扑方法、装置、设备及存储介质
CN116303148A (zh) * 2023-05-17 2023-06-23 北京中科网威信息技术有限公司 多插槽设备网卡探测方法、装置、电子设备及存储介质

Families Citing this family (29)

* Cited by examiner, † Cited by third party
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
US10078361B2 (en) 2014-10-08 2018-09-18 Apple Inc. Methods and apparatus for running and booting 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
US10085214B2 (en) 2016-01-27 2018-09-25 Apple Inc. Apparatus and methods for wake-limiting with an inter-device communication link
US10572390B2 (en) 2016-02-29 2020-02-25 Apple Inc. Methods and apparatus for loading firmware on demand
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
US10591976B2 (en) 2016-11-10 2020-03-17 Apple Inc. Methods and apparatus for providing peripheral sub-system stability
US10775871B2 (en) 2016-11-10 2020-09-15 Apple Inc. Methods and apparatus for providing individualized power control for peripheral sub-systems
CN108363670B (zh) * 2017-01-26 2020-07-14 华为技术有限公司 一种数据传输的方法、装置、设备和系统
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
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
US10838450B2 (en) 2018-09-28 2020-11-17 Apple Inc. Methods and apparatus for synchronization of time between independently operable processors
US10789110B2 (en) 2018-09-28 2020-09-29 Apple Inc. Methods and apparatus for correcting out-of-order data transactions between processors
US10853284B1 (en) * 2019-07-22 2020-12-01 Vmware, Inc. Supporting PCI-e message-signaled interrupts in computer system with shared peripheral interrupts
US11899550B2 (en) * 2020-03-31 2024-02-13 Advantest Corporation Enhanced auxiliary memory mapped interface test systems and methods
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

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CN101206629A (zh) * 2006-12-19 2008-06-25 国际商业机器公司 在运行的PCIe架构中热插/拔新组件的系统和方法
CN101242371A (zh) * 2008-03-14 2008-08-13 杭州华三通信技术有限公司 基于PCIe交换架构路由器堆叠的方法、系统和装置
CN101669082A (zh) * 2007-02-28 2010-03-10 Lsi公司 集群化多个独立的高速pci层次结构的装置和方法
US20110016235A1 (en) * 2008-03-25 2011-01-20 Brinkmann Hubert E System and method for transforming pcie sr-iov functions to appear as legacy functions
US8429325B1 (en) * 2010-08-06 2013-04-23 Integrated Device Technology Inc. PCI express switch and method for multi-port non-transparent switching
CN103069771A (zh) * 2010-08-18 2013-04-24 英特尔公司 用于可管理性、安全路由和端点访问的方法、装置和系统
CN103092798A (zh) * 2012-12-28 2013-05-08 华为技术有限公司 片上系统及总线下的访问设备的方法
CN103117929A (zh) * 2013-01-31 2013-05-22 中国科学院计算技术研究所 一种基于PCIe数据交换的通信方法及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
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
US20110167190A1 (en) * 2008-09-02 2011-07-07 Hung-Ming Lin Apparatus and method for distant bus extended system
US20130346655A1 (en) * 2012-06-22 2013-12-26 Advanced Micro Devices, Inc. Bus agent capable of supporting extended atomic operations and method therefor
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 华为技术有限公司 一种故障处理的方法、计算机系统和装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CN101206629A (zh) * 2006-12-19 2008-06-25 国际商业机器公司 在运行的PCIe架构中热插/拔新组件的系统和方法
CN101669082A (zh) * 2007-02-28 2010-03-10 Lsi公司 集群化多个独立的高速pci层次结构的装置和方法
CN101242371A (zh) * 2008-03-14 2008-08-13 杭州华三通信技术有限公司 基于PCIe交换架构路由器堆叠的方法、系统和装置
US20110016235A1 (en) * 2008-03-25 2011-01-20 Brinkmann Hubert E System and method for transforming pcie sr-iov functions to appear as legacy functions
US8429325B1 (en) * 2010-08-06 2013-04-23 Integrated Device Technology Inc. PCI express switch and method for multi-port non-transparent switching
CN103069771A (zh) * 2010-08-18 2013-04-24 英特尔公司 用于可管理性、安全路由和端点访问的方法、装置和系统
CN103092798A (zh) * 2012-12-28 2013-05-08 华为技术有限公司 片上系统及总线下的访问设备的方法
CN103117929A (zh) * 2013-01-31 2013-05-22 中国科学院计算技术研究所 一种基于PCIe数据交换的通信方法及系统

Cited By (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108292267B (zh) * 2015-12-26 2023-11-03 英特尔公司 用于配置装置的方法、系统和设备
CN108292267A (zh) * 2015-12-26 2018-07-17 英特尔公司 总线-装置-功能地址空间的推测性枚举
CN106776382A (zh) * 2016-12-02 2017-05-31 北京东土军悦科技有限公司 一种pcie设备的配置方法及装置
CN106776382B (zh) * 2016-12-02 2020-03-17 北京东土军悦科技有限公司 一种pcie设备的配置方法及装置
CN110998551A (zh) * 2017-02-08 2020-04-10 德克萨斯仪器股份有限公司 绕过pcie地址转换的设备和机制
CN110998551B (zh) * 2017-02-08 2023-11-10 德克萨斯仪器股份有限公司 绕过pcie地址转换的设备和机制
CN110462598A (zh) * 2017-04-07 2019-11-15 松下知识产权经营株式会社 信息处理装置
CN110462598B (zh) * 2017-04-07 2023-08-18 松下知识产权经营株式会社 信息处理装置
CN107045486A (zh) * 2017-04-12 2017-08-15 福州瑞芯微电子股份有限公司 一种PCIe安全域广播方法以及系统
CN108777634A (zh) * 2018-05-24 2018-11-09 许继电气股份有限公司 一种PCIe交换机及其端点地址空间分配方法
CN108777634B (zh) * 2018-05-24 2021-05-07 许继电气股份有限公司 一种PCIe交换机及其端点地址空间分配方法
CN108959127A (zh) * 2018-05-31 2018-12-07 华为技术有限公司 地址转换方法、装置及系统
US11341061B2 (en) 2018-05-31 2022-05-24 Huawei Technologies Co., Ltd. Address translation method, apparatus, and system
CN109324899B (zh) * 2018-09-10 2022-05-20 中国电子科技集团公司电子科学研究院 基于PCIe池化硬件资源的编址方法、装置及主控节点
CN109324899A (zh) * 2018-09-10 2019-02-12 中国电子科技集团公司电子科学研究院 基于PCIe池化硬件资源的编址方法、装置及主控节点
CN109343905A (zh) * 2018-10-08 2019-02-15 郑州云海信息技术有限公司 一种pcie资源配置系统和方法
CN109343905B (zh) * 2018-10-08 2021-07-06 郑州云海信息技术有限公司 一种pcie资源配置系统和方法
CN109656630A (zh) * 2018-12-27 2019-04-19 龙芯中科技术有限公司 配置空间的访问方法、装置、架构及储存介质
CN109656630B (zh) * 2018-12-27 2021-09-17 龙芯中科技术股份有限公司 配置空间的访问方法、装置、架构及储存介质
WO2021017503A1 (zh) * 2019-07-30 2021-02-04 华为技术有限公司 一种端点设备的管理方法、装置及系统
CN110795374A (zh) * 2019-10-16 2020-02-14 苏州浪潮智能科技有限公司 一种设备访问的方法、装置及可读存储介质
CN111679997B (zh) * 2020-05-29 2023-06-13 中国航空工业集团公司西安航空计算技术研究所 一种多个pci/pci-e接口系统的设备管理方法
CN111679997A (zh) * 2020-05-29 2020-09-18 中国航空工业集团公司西安航空计算技术研究所 一种多个pci/pci-e接口系统的设备管理方法
CN113986800A (zh) * 2020-07-10 2022-01-28 华为技术有限公司 多处理器系统及配置多处理器系统的方法
CN111858407B (zh) * 2020-07-14 2021-12-07 中航航空电子有限公司 高速外围设备互连系统内的通信方法及高速外围设备互连系统
CN111858407A (zh) * 2020-07-14 2020-10-30 中航航空电子有限公司 高速外围设备互连系统内的通信方法及高速外围设备互连系统
CN114153771A (zh) * 2020-08-18 2022-03-08 许继集团有限公司 一种pcie总线系统及ep设备获取总线上其它设备信息的方法
CN115114219A (zh) * 2022-07-22 2022-09-27 深圳星云智联科技有限公司 一种pci-e拓扑方法、装置、设备及存储介质
CN115114219B (zh) * 2022-07-22 2023-10-20 深圳星云智联科技有限公司 一种pci-e拓扑方法、装置、设备及存储介质
CN116303148A (zh) * 2023-05-17 2023-06-23 北京中科网威信息技术有限公司 多插槽设备网卡探测方法、装置、电子设备及存储介质
CN116303148B (zh) * 2023-05-17 2023-08-22 北京中科网威信息技术有限公司 多插槽设备网卡探测方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
WO2015100672A1 (zh) 2015-07-09
EP3629186A1 (en) 2020-04-01
US9690739B2 (en) 2017-06-27
EP4089544A1 (en) 2022-11-16
EP3264280B1 (en) 2019-09-18
CN104285218B (zh) 2017-02-15
EP4092540B1 (en) 2024-01-31
EP3629186B1 (en) 2022-02-23
EP2927812A1 (en) 2015-10-07
EP4089544B1 (en) 2024-01-31
EP3264280A1 (en) 2018-01-03
EP2927812B1 (en) 2017-08-02
NO2927812T3 (zh) 2017-12-30
EP2927812A4 (en) 2016-04-13
US20150293873A1 (en) 2015-10-15
EP4092540A1 (en) 2022-11-23
ES2640452T3 (es) 2017-11-03
ES2761927T3 (es) 2020-05-21

Similar Documents

Publication Publication Date Title
CN104285218A (zh) 一种扩展PCIe总线域的方法和装置
CN102722414B (zh) 用于多根i/o 虚拟化共享系统的i/o 资源管理方法
CN102707991B (zh) 多根i/o虚拟化共享方法和系统
CN105993009B (zh) 通过非透明桥向PCIe集群中的计算资源传送MSI-X中断的方法和装置
CN104461958B (zh) 支持sr-iov的存储资源访问方法、存储控制器及存储设备
JP5376496B2 (ja) 仮想マシンデバイスの動的割り当て
TWI556174B (zh) 虛擬功能分配系統、方法及其管理主機
US9423958B2 (en) System and method for managing expansion read-only memory and management host thereof
US10467179B2 (en) Method and device for sharing PCIe I/O device, and interconnection system
CN105264506A (zh) 向内存映射配置分配处理器
CN102388357A (zh) 访问存储设备的方法及系统
CN104636186A (zh) 虚拟机内存管理方法、物理主机、pcie设备及其配置方法以及迁移管理设备
CN103176913B (zh) 硬盘动态映射方法与应用其的服务器
CN110704350A (zh) 一种资源管理方法、装置及电子设备和存储介质
US9639489B2 (en) I/O device sharing system and I/O device sharing method
TWI616759B (zh) 設備分配控制器以及設備分配方法
CN109656675A (zh) 总线设备、计算机设备及实现物理主机云存储的方法
US20200327091A1 (en) Device communication control module and device communication control method
TWI615720B (zh) 資源分配系統、設備分配控制器以及設備識別方法
CN106293502A (zh) 一种配置方法、数据交换方法及服务器系统
CN113297116A (zh) 信息配置方法、端口访问方法、设备及存储介质
US10025736B1 (en) Exchange message protocol message transmission between two devices
CN107102952A (zh) 存储器资源的配置方法

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