CN113986800A - 多处理器系统及配置多处理器系统的方法 - Google Patents

多处理器系统及配置多处理器系统的方法 Download PDF

Info

Publication number
CN113986800A
CN113986800A CN202010899009.6A CN202010899009A CN113986800A CN 113986800 A CN113986800 A CN 113986800A CN 202010899009 A CN202010899009 A CN 202010899009A CN 113986800 A CN113986800 A CN 113986800A
Authority
CN
China
Prior art keywords
pcie
port
domain
interconnect
processor
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.)
Pending
Application number
CN202010899009.6A
Other languages
English (en)
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
Priority to PCT/CN2021/102235 priority Critical patent/WO2022007644A1/zh
Priority to EP21838049.1A priority patent/EP4167101A4/en
Publication of CN113986800A publication Critical patent/CN113986800A/zh
Priority to US18/151,705 priority patent/US20230161726A1/en
Pending legal-status Critical Current

Links

Images

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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Bus Control (AREA)

Abstract

本申请提供了一种多处理器系统及配置多处理器系统的方法,属于计算机领域。本申请通过对现有基于PCIe的系统架构进行改进,实现两个域之间的连接。由于本域的处理器进行枚举时,外域的PCIe设备不会被本域的处理器发现,从而避免外域的PCIe设备被本域处理器发现而触发的访问冲突问题。因此,在两个域的PCIe交换机互连的情况下,本域的处理器或者PCIe设备等设备仍然能够正常访问外域的PCIe设备,提高了跨域访问的通信可靠性。并且,由于跨域访问的通信路径通过总线以及两个域的PCIe交换机建立,而不依赖于处理器的转发,有助于缩短跨域访问的通信路径,从而在避免访问冲突的情况下减少跨域访问的时延。

Description

多处理器系统及配置多处理器系统的方法
本申请要求于2020年7月10日提交的申请号为202010660272.X、发明名称为“一种配置对称负载的方法及装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及计算机领域,特别涉及一种多处理器系统及配置多处理器系统的方法。
背景技术
串行计算机扩展总线标准(peripheral component interconnect express,PCIe)是一个高速串行计算机扩展总线标准。PCIe具备更高的最大系统总线吞吐量、更小的物理占用空间、更好的总线设备性能伸缩性、更详细的错误检测和报告机制等种种优势。因此,PCIe已成为现代计算机中热门采用的系统架构。
然而时下基于PCIe的系统架构中,例如采用H2D的系统架构,各个PCIe域的PCIe交换机相互断开,各个域的PCIe交换机不会通信,各个域之间的通信关系通过不同域的处理器之间的通信建立。然而这种方式存在当本域的处理器或者PCIe设备需要访问其他域的PCIe设备时,通信路径过长,导致跨域访问的时延过大的问题。但如果直接通过将两个PCIe域的PCIe交换机连接建立起两个域之间的通信关系,又会造成访问冲突问题。
发明内容
本申请实施例提供了一种多处理器系统及配置多处理器系统的方法,有助于减少跨域访问的时延。所述技术方案如下:
第一方面,提供了一种多处理器系统,该系统包括至少两个PCIe域。以该系统包括第一PCIe域和第二PCIe域的情况为例,所述第一PCIe域包括第一处理器、与所述第一处理器连接的第一PCIe交换机以及与所述第一PCIe交换机连接的第一PCIe设备;所述第二PCIe域包括第二处理器、与所述第二处理器连接的第二PCIe交换机以及与所述第二PCIe交换机连接的第二PCIe设备,所述第一PCIe交换机与所述第二PCIe交换机之间通过总线通信;当所述第一处理器进行枚举时,所述第二PCIe域中的与所述第二PCIe交换机连接的所述第二PCIe设备不会被所述第一处理器发现;所述第一处理器或者所述第一PCIe设备通过所述总线访问所述第二PCIe设备。
在第一方面提供的多处理器系统中,该系统对现有基于PCIe的系统架构进行改进,在避免访问冲突的情况下实现两个PCIe域之间的连接。由于本域的处理器进行枚举时,外域的PCIe设备不会被本域的处理器发现,从而避免外域的PCIe设备被本域处理器发现而触发的访问冲突问题。因此,在两个域的PCIe交换机互连的情况下,本域的处理器或者PCIe设备等设备仍然能够正常访问外域的PCIe设备,提高了跨域访问的通信可靠性。并且,由于跨域访问的通信路径通过总线以及两个域的PCIe交换机建立,而不依赖于处理器的转发,有助于缩短跨域访问的通信路径,从而在避免访问冲突的情况下减少跨域访问的时延。
可选地,当所述第二处理器进行枚举时,所述第一PCIe域中的与所述第一PCIe交换机连接的所述第一PCIe设备不会被所述第二处理器发现;所述第二处理器或者所述第二PCIe设备通过所述总线访问所述第一PCIe设备。
可选地,所述第一PCIe交换机包含第一互联端口,所述第一互联端口用于与所述第二PCIe交换机通信,所述第一互联端口被配置为在所述第一处理器枚举时拒绝所述第一处理器的扫描指令。
由于互联端口在PCIe枚举过程中拒绝了中央处理器的扫描指令,使得互联端口以及互联端口连接的设备对中央处理器是隐藏的,从而为“外域的PCIe设备不会被本域的处理器发现”这一特点提供了一种实现复杂度小、实用性高的实现方式。
可选地,所述第二PCIe交换机包含第二互联端口,所述第二互联端口用于与所述第一PCIe交换机通信,所述第二互联端口被配置为在所述第二处理器枚举时拒绝所述第二处理器的扫描指令。
可选地,所述第二PCIe交换机包含第二互联端口,所述第二互联端口用于与所述第一PCIe交换机通信,所述第二互联端口被配置为在所述第一处理器枚举时拒绝所述第一处理器的扫描指令。
与将第一互联端口配置为拒绝第一处理器的扫描指令的方案类似,将第二互联端口配置为拒绝第一处理器的扫描指令,也可以实现第二PCIe域中的设备不会被第一处理器发现的效果。
可选地,所述第一PCIe交换机包含第一互联端口,所述第一互联端口用于与所述第二PCIe交换机通信,所述第一互联端口被配置为在所述第二处理器枚举时拒绝所述第二处理器的扫描指令。
可选地,所述第一PCIe交换机还包括第一主机端口,所述第一PCIe交换机通过所述第一主机端口与所述第一处理器连接,其中,所述第一主机端口与所述第一互联端口不直接连接。
由于主机端口与互联端口没有直接连接,避免本域的处理器通过硬件连接关系发现对方域的PCIe设备,因此这种实现方式有助于“对方域的PCIe设备不会被本域的处理器发现”更加可靠,进一步降低了访问冲突的概率。
可选地,所述第二PCIe交换机还包括第二主机端口,所述第二PCIe交换机通过所述第二主机端口与所述第二处理器连接,其中,所述第二主机端口与所述第二互联端口不直接连接。
可选地,所述第一PCIe交换机包括第一固件,所述第一固件用于将所述第一互联端口配置为在所述第一处理器枚举时拒绝所述第一处理器的所述扫描指令。
通过将拒绝扫描指令的方式固化在PCIe交换机中,降低了实现复杂度,实用性高。
可选地,所述第二PCIe交换机包括第二固件,所述第二固件用于将所述第二互联端口配置为在所述第二处理器枚举时拒绝所述第二处理器的所述扫描指令。
可选地,所述系统还包括基本输入输出系统(base input output system,BIOS),所述BIOS用于将所述第一互联端口配置为在所述第一处理器枚举时拒绝所述第一处理器的所述扫描指令。
可选地,所述系统还包括BIOS,所述BIOS用于将所述第二互联端口配置为在所述第二处理器枚举时拒绝所述第二处理器的所述扫描指令。
可选地,所述系统还包括基板管理控制器(baseboard management controller,BMC);所述BMC,用于将所述第一互联端口配置为在所述第一处理器枚举时拒绝所述第一处理器的所述扫描指令。
可选地,所述系统还包括BMC;所述BMC,用于将所述第二互联端口配置为在所述第二处理器枚举时拒绝所述第二处理器的所述扫描指令。
可选地,所述第二PCIe交换机包括第二固件,所述第二固件用于将所述第二互联端口配置为在所述第一处理器枚举时拒绝所述第一处理器的扫描指令。
可选地,所述系统还包括BIOS,所述BIOS用于将所述第二互联端口配置为在所述第一处理器枚举时拒绝所述第一处理器的扫描指令。
可选地,所述系统还包括BMC,所述BMC将所述第二互联端口配置为在所述第一处理器枚举时拒绝所述第一处理器的扫描指令。
可选地,所述第二PCIe交换机包含第二互联端口,所述第二互联端口用于与所述第一PCIe交换机通信;所述第一互联端口配置有第一跨域路由信息,所述第一处理器或者所述第一PCIe设备通过所述第一跨域路由信息访问所述第二PCIe设备,所述第一跨域路由信息指示所述第二PCIe设备的地址信息与所述第二互联端口的端口标识的对应关系。
通过上述方式,由于本域的PCIe交换机配置有外域对应的跨域路由信息,访问请求能通过跨域路由信息进行跨域路由转发,有助于打通跨域P2P通路。
可选地,所述第一PCIe交换机包含第一互联端口,所述第一互联端口用于与所述第二PCIe交换机通信;所述第二互联端口配置有第二跨域路由信息,所述第二处理器或者所述第二PCIe设备通过所述第二跨域路由信息访问所述第一PCIe设备,所述第二跨域路由信息指示所述第一PCIe设备的地址信息与所述第一互联端口的端口标识的对应关系。
可选地,所述第一跨域路由信息包括:所述第二PCIe域的域标识与所述第二互联端口的端口标识之间的对应关系,以及所述第二PCIe设备的地址信息与所述第二PCIe域的域标识之间的对应关系。
可选地,所述第二跨域路由信息包括:所述第一PCIe域的域标识与所述第一互联端口的端口标识之间的对应关系,以及所述第一PCIe设备的地址信息与所述第一PCIe域的域标识之间的对应关系。
可选地,所述第一PCIe交换机包括第一下游端口,所述第一下游端口与所述第一PCIe设备连接;所述第一互联端口中配置第一本域路由信息,所述第一本域路由信息包括所述第一PCIe设备的地址信息与所述第一下游端口的端口标识之间的对应关系。
通过上述方式,由于本域的PCIe交换机配置有本域路由信息,外域发来的访问请求能通过本域路由信息到达正确的下游端口,进而通过下游端口传给本域的PCIe设备,因此有助于打通跨域P2P通路。
可选地,所述第二PCIe交换机包括第二下游端口,所述第二下游端口与所述第二PCIe设备连接;所述第二互联端口中配置第二本域路由信息,所述第二本域路由信息包括所述第二PCIe设备的地址信息与所述第二下游端口的端口标识之间的对应关系。
可选地,所述第一PCIe交换机包括第一下游端口,所述第一下游端口中配置第一下游端口路由信息,所述第一下游端口路由信息指示所述第二PCIe设备的地址信息与所述第一互联端口的端口标识之间的对应关系。
通过上述方式,由于本域的PCIe交换机配置有下游端口路由信息,本域的PCIe设备需要访问外域时,本域的访问请求能够通过下游端口路由信息到达正确的互联端口,进而通过互联端口传输到外域,因此有助于打通跨域P2P通路。
可选地,所述第二PCIe交换机包括第二下游端口,所述第二下游端口中配置第二下游端口路由信息,所述第二下游端口路由信息指示所述第一PCIe设备的地址信息与所述第二互联端口的端口标识之间的对应关系。
可选地,所述第一下游端口路由信息包括所述第二PCIe域的域标识与所述第一互联端口的端口标识之间的关系,以及所述第二PCIe设备的地址信息与所述第二PCIe域的域标识之间的对应关系。
可选地,所述第二下游端口路由信息包括所述第一PCIe域的域标识与所述第二互联端口的端口标识之间的关系,以及所述第一PCIe设备的地址信息与所述第一PCIe域的域标识之间的对应关系。
可选地,所述第一PCIe设备的地址信息包括所述第一PCIe设备的地址窗口或总线标识。
可选地,所述第二PCIe设备的地址信息包括所述第二PCIe设备的地址窗口或总线标识。
可选地,所述第一PCIe交换机包括第一处理单元,所述第一跨域路由信息存储在所述第一处理单元中。
可选地,所述第二PCIe交换机包括第二处理单元,所述第二跨域路由信息存储在所述第二处理单元中。
可选地,所述第一PCIe交换机包括第一处理单元,所述第一本域路由信息存储在所述第一处理单元中。
可选地,所述第二PCIe交换机包括第二处理单元,所述第二本域路由信息存储在所述第二处理单元中。
可选地,所述第一PCIe交换机包括第一处理单元,所述第一下游端口路由信息存储在所述第一处理单元中。
可选地,所述第二PCIe交换机包括第二处理单元,所述第二下游端口路由信息存储在所述第二处理单元中。
可选地,所述第一处理器为第一中央处理器(central processing unit,CPU),所述第二处理器为第二CPU。
可选地,所述第一PCIe设备为第一嵌入式神经网络处理器(neural-networkprocessing units,NPU)、第一张量处理单元(tensor processing unit,TPU)或者第一图形处理器(graphics processing unit,GPU),所述第二PCIe设备为第二NPU、第二TPU或者第二GPU。
可选地,所述第一PCIe交换机包括第一下游端口,所述第一下游端口与所述第一PCIe域中的第一PCIe设备连接;
所述第一PCIe交换机,用于通过所述第一下游端口接收第一访问请求,所述第一访问请求的源PCIe设备为所述第一PCIe设备,所述第一访问请求的目的PCIe设备为所述第二PCIe域中第二PCIe设备;
所述第一PCIe交换机,用于在所述第一访问请求中添加所述第二PCIe域的域标识;
所述第一PCIe交换机,用于通过所述第一互联端口向所述第二互联端口发送包括域标识的所述第一访问请求。
可选地,所述第一下游端口配置有第九条目,所述第九条目包括所述第二PCIe域的域标识与所述第一互联端口的端口标识之间的对应关系;
所述第一PCIe交换机,用于根据所述第一访问请求以及所述第九条目,确定所述第一互联端口。
可选地,所述第一下游端口配置有第十一条目,所述第十一条目包括所述第二PCIe设备的地址窗口与所述第二PCIe域的域标识之间的对应关系;
所述第一PCIe交换机,用于根据所述第一访问请求以及所述第十一条目,确定所述第二PCIe域的域标识,所述第一访问请求中的目的地址属于所述第二PCIe设备的地址窗口。
可选地,所述第一下游端口配置有第十三条目,所述第十三条目包括所述第二PCIe设备对应的总线标识与所述第一互联端口的端口标识之间的对应关系;
所述第一PCIe交换机,用于根据所述第一访问请求以及所述第十三条目,确定所述第一互联端口,所述第一访问请求包括所述第二PCIe设备对应的总线标识。
可选地,所述第一互联端口配置有第一条目,所述第一条目包括所述第二PCIe域的域标识与所述第二互联端口的端口标识之间的对应关系;
所述第一PCIe交换机,用于根据所述第一访问请求以及所述第一条目,确定所述第二互联端口。
可选地,所述第一PCIe交换机包括第一下游端口,所述第一下游端口与所述第一PCIe域中的第一PCIe设备连接;
所述第一PCIe交换机,用于通过所述第一互联端口接收第二访问请求,所述第二访问请求的源PCIe设备为所述第二PCIe域中第二PCIe设备,所述第二访问请求的目的PCIe设备为所述第一PCIe设备;
所述第一PCIe交换机,用于通过所述第一下游端口向所述第一PCIe设备发送所述第二访问请求。
可选地,所述第一PCIe交换机包括第一下游端口,所述第一下游端口与所述第一PCIe域中的第一PCIe设备连接;
所述第一互联端口配置有第五条目,所述第五条目包括所述第一PCIe设备的地址窗口与所述第一下游端口的端口标识之间的对应关系;
所述第二PCIe交换机包括第二下游端口,所述第二下游端口与所述第二PCIe域中的第二PCIe设备连接;
所述第一PCIe交换机,用于根据所述第二访问请求以及所述第五条目,确定所述第一下游端口,所述第二访问请求中的目的地址属于所述第一PCIe设备的地址窗口。
可选地,所述第一互联端口配置有第七条目,所述第七条目包括所述第一PCIe设备对应的总线标识与所述第一下游端口的端口标识之间的对应关系;
所述第一PCIe交换机,用于根据所述第二访问请求以及所述第七条目,确定所述第一下游端口,所述第二访问请求包括所述第一PCIe设备对应的总线标识。
可选地,所述第一下游端口配置有第十五条目,所述第十五条目包括所述第一PCIe设备的地址窗口与第一PCIe设备的标识之间的对应关系;
所述第一PCIe交换机,用于根据所述第二访问请求以及所述第十五条目,确定所述第一PCIe设备,所述第二访问请求中的目的地址属于所述第一PCIe设备的地址窗口。
可选地,所述第一下游端口配置有第十七条目,所述第十七条目包括所述第一PCIe设备对应的总线标识与第一PCIe设备的标识之间的对应关系;
所述第一PCIe交换机,用于根据所述第二访问请求以及所述第十七条目,确定所述第一PCIe设备,所述第二访问请求包括所述第一PCIe设备对应的总线标识。
第二方面,提供了一种应用于多处理器系统的方法。所述方法包括:提供第一PCIe域和第二PCIe域,其中,所述第一PCIe域包括第一处理器、与所述第一处理器连接的第一PCIe交换机以及与所述第一PCIe交换机以及与所述第一PCIe交换机连接的第一PCIe设备,所述第二PCIe域包括第二处理器、与所述第二处理器连接的第二PCIe交换机以及与所述第二PCIe交换机连接的第二PCIe设备,所述第一PCIe交换机与所述第二PCIe交换机之间通过总线通信;配置所述第一PCIe域和所述第二PCIe域,使得当所述第一处理器进行枚举时,所述第二PCIe域中的与所述第二PCIe交换机连接的所述第二PCIe设备不会被所述第一处理器发现,其中,所述第一处理器或者所述第一PCIe设备通过所述总线访问所述第二PCIe设备。
第二方面提供的方法的具体细节可参见上述第一方面或第一方面任一种可选方式,此处不再赘述。
第三方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,当所述至少一条指令在所述计算机设备上执行时,使得所述计算机设备执行第二方面提供的方法。
第四方面,提供了一种配置多处理器系统的装置,该装置用于配置上述第一方面或第一方面任一种可选方式中的多处理器系统。配置多处理器系统的装置包括至少一个单元。在一些实施例中,第四方面提供的装置中的单元通过软件实现,第四方面提供的装置中的单元是程序模块。在另一些实施例中,第四方面提供的装置中的单元通过硬件或固件实现。第四方面提供的装置的具体细节可参见上述第一方面或第一方面任一种可选方式,此处不再赘述。
第五方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,当所述至少一条指令在计算机设备上执行时,使得所述计算机设备执行上述第二方面所提供的方法。
第六方面,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。当计算机程序产品在计算机设备上执行时,使得所述计算机设备执行上述第二方面所提供的方法。
第七方面,提供了一种计算机设备,该计算机设备包括上述第一方面或第一方面任一种可选方式所提供的多处理器系统。该计算机设备例如为服务器、主机或个人计算机。
附图说明
图1是一种采用P2P均衡型连接法的系统架构示意图;
图2是一种采用H2D均衡型连接法的系统架构示意图;
图3是一种采用专用总线的系统架构示意图;
图4是本申请实施例提供的一种多处理器系统的架构示意图;
图5是本申请实施例提供的一种多处理器系统的架构示意图;
图6是本申请实施例提供的一种多处理器系统的架构示意图;
图7是本申请实施例提供的一种PCIe交换机的结构示意图;
图8是本申请实施例提供的一种配置多处理器系统的软件的示意图;
图9是本申请实施例提供的一种配置多处理器系统的方法的流程图;
图10是本申请实施例提供的一种阻断主机端口与互联端口通信访问的示意图。
附图标记:
100-一种多处理器系统
101-第一PCIe域
102-第二PCIe域
110-第一中央处理器
111-第二中央处理器
120-第一PCIe交换机
1201-第一主机端口
1202-第一互联端口
1203-第一下游端口
121-第二PCIe交换机
1211-第二主机端口
1212-第二互联端口
1213-第二下游端口
130-第一PCIe设备
131-第二PCIe设备
200-一种多处理器系统
300-一种多处理器系统
400-一种配置多处理器系统的软件
410-互联配置器
420-拓扑生成器
430-地址分配器
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请实施例提供的系统及方法能够作为一种实现系统对称负载的方案,应用在需要构建H2D通道以及P2P通道的任意场景。其中,负载对称包括不同CPU之间负载均衡、不同串行计算机扩展总线标准(peripheral component interconnect express,PCIe)设备之间负载均衡这两方面的含义。可选地,本申请实施例提供的系统及方法应用在单机多卡进行人工智能(artificial intelligence,AI)训练的场景。下面对单机多卡进行AI训练的场景以及该场景在应用中面临的一些情况进行介绍。
当前人工智能技术方兴未艾,大学院校、企业、研究机构大量应用异构计算服务器进行AI训练。由于AI训练过程中,需要各个训练设备之间进行大流量的参数同步,因此,需要在各个训练设备之间建立高速互联的P2P通道;同时,训练过程中,需要服务器的CPU与AI加速计算卡之间进行数据拷贝、消息同步,因此,要求服务器CPU与训练设备之间也有高速、稳定的H2D通道。
训练设备一般为AI训练卡,比如是图形处理器(graphics processing unit,GPU)、嵌入式神经网络处理器(neural-network processing units,NPU)等适于AI计算的AI加速卡。AI训练卡一般为PCIe设备,AI训练卡通过PCIe总线与服务器CPU相连。因此,AI训练的H2D通道一般基于PCIe总线实现。而至于P2P通信,在单机训练的场景下,P2P通道一般也基于PCIe总线实现。在使用PCIe总线进行P2P高速访问时,要求所有训练设备之间的PCIe总线路径最短,以保证性能。
在一些应用场景下,通过P2P均衡型连接法或者H2D均衡型连接法构建H2D通道以及P2P通道。
请参见附图1,附图1是对P2P均衡型连接法下使用PCIe总线进行H2D通信以及P2P通信的举例说明。其中,CPU2与PCIe交换机2是不连接的。P2P均衡型连接法尽可能的保证各训练设备(GPU或NPU)之间的访问路径最短、带宽可靠,但无法保证从CPU(附图1中CPU2)与各训练设备之间的PCIe访问性能。
请参见附图2,附图2是对H2D均衡型连接法下使用PCIe总线进行H2D通信以及P2P通信的举例说明。其中,PCIe交换机1与PCIe交换机2是不连接的。H2D均衡型连接法能够与CPU绑核策略配合使用,从而尽可能让各CPU上的训练业务访问训练设备(附图2中的GPU/NPU)之间的访问性能平衡,但各AI训练设备存在需要跨CPU进行参数同步,多数情况(如CPU负载较重)下将使P2P通信性能不稳定。
由此可见,P2P均衡型连接法和H2D均衡型连接法均无法调和H2D通信与P2P通信对性能要求的矛盾,要么导致H2D性能下降(P2P均衡型连接法),要么导致P2P性能受影响(H2D均衡型连接法)。
在另一些应用场景下,采用P2P通信的专用总线,负责各训练设备之间P2P通信。例如,参见附图3,在每个训练设备上额外开发专用总线对应的专用总线接口,将每个训练设备的专用总线接口接入专用总线,使得不同训练设备通过专用总线进行P2P通信。
然而,使用专用总线的方案虽然调和了H2D与P2P对性能要求的矛盾,但需要为专用总线开发专门的硬件服务器以及训练设备,成本较高。此外,使用专用总线的方案的应用场景有限,不适用于无专用总线接口的训练设备。
有鉴于此,本申请一些实施例能够在单机多卡训练场景下,实现服务器中多个CPU对训练设备的的H2D通信性能相等,多个训练设备之间P2P通信能力基本一致,满足上述应用场景存在的需求。此外,在单机多卡训练场景下,不依赖新增硬件总线、不增加硬件成本,实现训练设备之间高速的P2P通信能力。下面从硬件系统架构、软件系统架构、配置方法流程等多个角度对本申请实施例进行描述。
下面介绍本申请实施例提供的硬件系统架构。
本申请实施例提供了一种多处理器系统。多处理器系统包括多个CPU、多个PCIe交换机(PCIe switch)以及多个PCIe设备。例如,参见附图4或附图5,附图4示出的系统100是对具有2个CPU、2个PCIe交换机以及8个PCIe设备的系统架构的举例说明。附图5示出的系统200是对附图4示出的系统100的举例说明。
可选地,本实施例提供的系统,如附图4示出的系统100、附图5示出的系统200等系统架构为单机系统,多处理器系统中的每个CPU、每个PCIe交换机、每个PCIe设备集成在同一台硬件设备中。例如,多处理器系统集成在同一台服务器、同一台主机或同一台个人计算机中。或者,多处理器系统中的不同设备分布在不同硬件设备中。
以下通过(1)至(16),对多处理器系统进行具体介绍。
(1)PCIe域(PCIe domain)
本申请实施例中,术语“PCIe域”、“PCIe网络”、“PCIe系统”可互换使用。多处理器系统包括多个PCIe域。一个PCIe域包括处理器、与处理器连接的PCIe交换机、与PCIe交换机连接的多个PCIe设备。在下面的一些实施例中,以处理器为CPU为例进行举例介绍。需要说明的一点是,本实施例并不限定处理器必须是CPU。在另一些实施例中,处理器是CPU之外的其他硬件。换句话说,以下实施例中进行枚举、访问PCIe设备等动作的执行主体也可能是CPU之外的其他硬件。
例如,参见附图4,附图4中的第一PCIe域101和第二PCIe域102是对多个PCIe域的举例说明。第一PCIe域101包括第一中央处理器110、与第一中央处理器110连接的第一PCIe交换机120、与第一PCIe交换机120连接的多个PCIe设备。其中,与第一PCIe交换机120连接的多个PCIe设备包括第一PCIe设备130。第二PCIe域102包括第二中央处理器111、与第二中央处理器111连接的第二PCIe交换机121、与第二PCIe交换机121连接的多个PCIe设备131。其中,与第二PCIe交换机121连接的多个PCIe设备131包括第二PCIe设备131。
例如,参见附图5,CPU1是对第一中央处理器110的举例说明,PCIe交换机1是对第一PCIe交换机120的举例说明,NPU0、NPU1、NPU2和NPU3是对PCIe设备130的举例说明。第一PCIe设备130例如是NPU0、NPU1、NPU2或者NPU3中的任一个NPU。CPU2是对第二中央处理器111的举例说明,PCIe交换机2是对第二PCIe交换机121的举例说明,NPU4、NPU5、NPU6和NPU7是对PCIe设备131的举例说明。第二PCIe设备131例如是NPU4、NPU5、NPU6和NPU7中的任一个NPU。
(2)多处理器系统的拓扑结构
多处理器系统中的每个PCIe域具有树形的拓扑结构。具有树形拓扑结构的PCIe域也称PCIe树或PCIe拓扑树。PCIe拓扑树中的根节点为CPU,PCIe拓扑树中的叶子节点为PCIe设备。
在一些实施例中,CPU与根联合体(root complex,RC)集成在一起;在另一些实施例中,CPU与RC分离设置。其中,RC用于将处理器以及内存子系统连接到一个或多个PCIe交换机。RC用于代表CPU生成访问请求。
在每个PCIe域内,每个PCIe端口以及每个PCIe设备被分配到唯一的总线号、PCIe设备号以及功能号。例如,参见附图4,附图4所示的系统100包括两个PCIe拓扑树(即2个PCIe域)。一个PCIe拓扑树以第一中央处理器110为根节点,以PCIe设备130为叶子节点。另一个PCIe拓扑树以第二中央处理器111为根节点,以PCIe设备131为叶子节点。又如,参见附图5,附图5所示的系统200包括两个PCIe拓扑树(即2个PCIe域)。一个PCIe拓扑树以CPU1为根节点,以NPU0、NPU1、NPU2和NPU3为叶子节点。另一个PCIe拓扑树以CPU2为根节点,以NPU4、NPU5、NPU6和NPU7为叶子节点。
(3)域ID(domain ID)
在一些实施例中,多处理器系统中PCIe域采用域ID标识。同一个PCIe域中的PCIe设备具有相同的域ID。不同PCIe域中的PCIe设备具有不同的域ID。例如,参见附图5,附图5中的域1是对第一PCIe域101的举例说明,域1的域标识例如是1或domain1。附图5中的域2是对第二PCIe域102的举例说明,域2的域标识例如是2或domain2。
(4)PCIe交换机
PCIe交换机用于转发不同或相同PCIe域中设备的访问请求。PCIe交换机包括多个PCIe端口(port),不同PCIe端口的功能以及连接对象有所区别。具体地,PCIe交换机包括互联(fabric)端口、下游端口(downstream port,DP)、主机(host)端口。
(5)互联端口
互联端口用于与其他PCIe交换机通信。不同PCIe交换机的互联端口相连。一个PCIe交换机包括一个或多个互联端口。在PCIe交换机包括多个互联端口的情况下,不同互联端口与不同PCIe交换机相连。例如,参见附图4,第一PCIe交换机120包括第一互联端口1202,第二PCIe交换机121包括第二互联端口1212,第二互联端口1212与第一互联端口1202通过PCIe总线相连。第一互联端口1202用于与第二PCIe交换机121通信。第二互联端口1212用于与第一PCIe交换机120通信。例如,参见附图5,PCIe交换机1包括互联端口a,PCIe交换机2包括互联端口b,互联端口a与互联端口b通过PCIe总线相连。其中,互联端口a是对第一互联端口1202的举例,互联端口b是对第二互联端口1212的举例。
(6)下游端口
下游端口用于与PCIe设备通信。PCIe交换机的下游端口与PCIe设备相连。一个PCIe交换机包括至少一个下游端口,每个下游端口与至少一个PCIe设备相连。
例如,参见附图4,第一PCIe交换机120包括第一下游端口1203,第一下游端口1203与第一PCIe域101中的第一PCIe设备130连接。第二PCIe交换机121包括第二下游端口1213,第二下游端口1213与第二PCIe域102中的第二PCIe设备131连接。
例如,参见附图5,下游端口在附图5中简称为DP,四个下游端口简称为DP0~3。其中,PCIe交换机1的DP0与NPU0连接;PCIe交换机1的DP1与NPU1连接;PCIe交换机1的DP2与NPU2连接。PCIe交换机1的DP3与NPU3连接。PCIe交换机2的DP0与NPU4连接;PCIe交换机2的DP1与NPU5连接;PCIe交换机2的DP2与NPU6连接。PCIe交换机2的DP3与NPU7连接。其中,NPU0、NPU1、NPU2或者NPU3是对第一PCIe设备130的举例说明。NPU4、NPU5、NPU6或者NPU7是对第二PCIe设备131的举例说明。
(7)主机端口
主机端口用于与中央处理器通信。PCIe交换机的主机端口与中央处理器相连。例如,参见附图4,第一PCIe交换机120包括第一主机端口1201,第一主机端口1201与第一中央处理器110连接。第二PCIe交换机121包括第二主机端口1211,第二主机端口1211与第二中央处理器111连接。例如,参见附图5,PCIe交换机1的主机端口与CPU1相连。PCIe交换机2的主机端口与CPU2相连。
(8)管理端口
在一些实施例中,参见附图7,PCIe交换机还包括管理端口。管理端口与中央处理器相连。管理端口用于从中央处理器接收配置指令。
(9)固件
在一些实施例中,参见附图7,PCIe交换机还包括固件(firmware)。固件包括实现PCIe交换机相关功能的程序代码。PCIe交换机通过执行固件中的程序代码,来执行本实施例中现PCIe交换机对应的方法。
(10)PCIe设备
在一些实施例中,PCIe设备为处理器。例如,PCIe设备为专用集成电路(application-specific integrated circuit,ASIC)、可编程逻辑器件(programmablelogic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。PCIe设备例如是单核处理器,或者是多核处理器。
另一些实施例中,PCIe设备为外设设备。例如,PCIe设备为输出设备或者输入设备。输出设备和中央处理器通信,能够显示信息。例如,输出设备是液晶显示器(liquidcrystal display,LCD)、发光二级管(light emitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备和中央处理器通信,能够接收用户的输入。例如,输入设备可以是鼠标、键盘、触摸屏设备或传感设备等。
在一些实施例中,PCIe设备为训练设备。训练设备是指用于执行AI训练任务的设备。例如,PCIe设备是AI处理器(也称AI训练卡)。比如,PCIe设备是GPU、NPU、张量处理单元(tensor processing unit,TPU)或者其他为机器学习而定制的芯片等。其中,AI训练的任务包括而不限于计算梯度值、计算模型参数中的至少一项。
在另一些实施例中,PCIe设备为训练设备之外的其他类型的计算设备。例如,PCIe设备为任意类型的加速卡或专用处理器。
在另一些实施例中,PCIe设备为存储设备。例如,PCIe设备为固态硬盘(solidstate drive,SSD)、硬盘驱动器(hard disk drive,HDD)或者双列直插式存储模块(Dual-Inline-Memory-Modules,DIMM)等。
在另一些实施例中,PCIe设备为网络设备。例如,PCIe设备为网络接口卡(networkinterface card,NIC)
(11)中央处理器与PCIe交换机之间的连接关系
在一些实施例中,同一个PCIe域中的中央处理器与PCIe交换机通过PCIe总线相连。例如,在附图4所示的场景中,第一中央处理器110与第一PCIe交换机120通过PCIe总线相连。第二中央处理器111与第二PCIe交换机121通过PCIe总线相连。
(12)PCIe交换机与PCIe设备之间的连接关系
在一些实施例中,同一个PCIe域中的PCIe交换机与每个PCIe设备分别通过PCIe总线相连。例如,在附图4所示的场景中,第一PCIe交换机120与第一PCIe设备130通过PCIe总线相连。第二PCIe交换机121与第二PCIe设备131通过PCIe总线相连。例如,参见附图5,PCIe交换机1与四个NPU通过四个PCIe总线相连。具体地,PCIe交换机1与NPU0通过总线10相连,PCIe交换机1与NPU1通过总线11相连,PCIe交换机1与NPU2通过总线12相连,PCIe交换机1与NPU3通过总线13相连。PCIe交换机2与四个NPU通过四个PCIe总线相连。具体地,PCIe交换机2与NPU4通过总线80相连,PCIe交换机2与NPU5通过总线81相连,PCIe交换机2与NPU6通过总线82相连,PCIe交换机2与NPU7通过总线83相连。
(13)不同PCIe交换机之间的连接关系
在一些实施例中,不同PCIe域的PCIe交换机通过总线(如PCIe总线)相连,不同PCIe域的PCIe交换机之间通过总线通信。因此,不同PCIe域之间通过PCIe交换机以及总线建立了连接关系,以便基于该连接关系通信。
例如,在附图4所示的场景中,第一PCIe交换机120与第二PCIe交换机121通过PCIe总线相连,第一PCIe交换机120与第二PCIe交换机121通过PCIe总线以及PCIe相关的通信协议通信。由于第一PCIe交换机120与第二PCIe交换机121通过PCIe总线通信,第一处理器或者第一PCIe设备130通过PCIe总线访问第二PCIe设备131,第二处理器或者第二PCIe设备131通过PCIe总线访问第一PCIe设备130。例如,参见附图5,PCIe交换机1与PCIe交换机2通过PCIe总线相连。
需要说明的一点是,本实施例并不限定将不同PCIe交换机互连的总线必须是PCIe总线这一种类型的总线。在另一些实施例中,不同PCIe交换机互连的总线不仅包括PCIe总线,还包括其他类型的总线。例如,第一PCIe交换机120与第二PCIe交换机之间的连接关系也可能是:第一PCIe交换机120-PCIe总线-其他类型的总线-PCIe总线-第二PCIe交换机121。
需要说明的另一点是,本实施例并不限定不同PCIe交换机互连的总线仅是一根。在另一些实施例中,不同PCIe交换机互连的总线包括多根总线。
需要说明的另一点是,PCIe总线是对用于连接不同PCIe交换机的总线的举例说明。在另一些实施例中,不同PCIe交换机不是通过PCIe总线,而是通过PCIe总线之外的其他总线相连,本实施例对连接不同PCIe交换机的总线类型不做限定。
(14)不同PCIe域的中央处理器之间的连接关系
在一些实施例中,多处理器系统中不同PCIe域的中央处理器通过CPU总线相连。例如,在附图4所示的场景中,第一中央处理器110与第二中央处理器111通过CPU总线相连。例如,参见附图5,CPU1与CPU2之间通过CPU总线相连。
(15)基板管理控制器(baseboard management controller,BMC)
在一些实施例中,参见附图7,多处理器系统还包括BMC。BMC与系统中的每个PCIe交换机相连。例如,PCIe交换机与BMC之间建立了带外通道;参见附图7,在一些实施例中,带外通道通过两线式串行(Inter-Integrated Circuit,I2C)总线建立,PCIe交换机基于I2C控制器(I2C controller)管理与BMC相连的PCIe端口。在另一些实施例中,带外通道通过系统管理总线(system management bus,SMbus)建立,PCIe交换机基于SMbus控制器(SMbuscontroller)管理与BMC相连的PCIe端口。
(16)主机端口与互联端口之间的关系。
在一些实施例中,主机端口与互联端口不直接连接。例如,参见附图4,第一PCIe交换机120中第一主机端口1201与第一PCIe交换机120中第一互联端口1202不直接连接。第二PCIe交换机121中第二主机端口1211与第二PCIe交换机121中第二互联端口1212不直接连接。
其中,不直接连接是指主机端口与互联端口这两种端口之间没有通过一条线相连。需要说明的是,术语“不直接连接”不排除间接连接的情况。换句话说,主机端口与互联端口这两种端口也可能是间接连接的。例如,第一主机端口1201与第一互联端口1202虽然没有直接通过一条线相连,而第一主机端口1201与其他设备相连,该其他设备与第一互联端口1202相连,这种情况也属于“第一主机端口与第一互联端口不直接连接”的范围之内。
由于主机端口与互联端口没有直接连接,避免本域的处理器通过硬件连接关系发现对方域的PCIe设备,因此这种实现方式有助于“对方域的PCIe设备不会被本域的处理器发现”更加可靠,进一步降低了访问冲突的概率。例如,由于第一主机端口1201与第一互联端口1202不直接连接,避免第一中央处理器110通过硬件连接关系(如第一主机端口1201→第一互联端口1202→第二互联端口1212→第二PCIe设备131)发现第二PCIe设备131,从而有助于“第二PCIe设备131不会被第一中央处理器110发现”的特点更加可靠。
值得说明的一点是,本实施例对多处理器系统中CPU的数量不做限定。附图4、附图5所示的2个CPU的场景仅是举例说明。在另一些实施例中,多处理器系统具有2个以上的更多数量的CPU。
值得说明的另一点是,本实施例对多处理器系统中PCIe设备的数量不做限定。附图4、附图5所示的8个PCIe设备的场景仅是举例说明。在另一些实施例中,多处理器系统中PCIe设备的数量比8个少,比如多处理器系统具有4个PCIe设备。在另一些实施例中,多处理器系统中PCIe设备的数量比8个多,比如多处理器系统中PCIe设备的数量为几十个或几百个,或者更多数量。
以上介绍了多处理器系统的硬件架构,以下结合附图8,介绍多处理器系统的软件架构。
参见附图8,附图8示出的软件400是对上文介绍的系统100或系统200的软件架构的举例说明。软件400包括互联配置器410、拓扑生成器420以及地址分配器430。互联配置器410、拓扑生成器420以及地址分配器430是软件模块。例如,互联配置器410、拓扑生成器420以及地址分配器430均是处理器读取存储器中存储的程序代码后生成的模块。软件400例如是PCIe初始化配置软件。
互联配置器410用于向PCIe交换机下发模式配置指令,模式配置指令用于将PCIe交换机的模式配置为Fabric模式。在一些实施例中,互联配置器410运行在BMC中,随着BMC的启动而下发模式配置指令。在另一些实施例中,如果互联关系固定,无需切换,则互联配置器410固化在PCIe交换机的固件配置中,每次系统启动时,互联配置器410自动配置为指定的互联关系。
拓扑生成器420用于生成PCIe设备与CPU之间的拓扑关系。例如,拓扑生成器420根据PCIe扫描算法生成PCIe设备与CPU之间的拓扑关系。在一些实施例中,拓扑生成器420用于分配域标识。例如,由拓扑生成器420为系统中的所有PCIe域分配不同的域ID。在一些实施例中,拓扑生成器420运行在BIOS中。
地址映射器用于配置PCIe端口的路由信息,以便PCIe端口基于路由信息对访问请求路由转发。例如,地址映射器根据拓扑生成器420划分的各个PCIe域内各PCIe设备的地址以及ID,生成路由信息;地址映射器将生成的路由信息携带在配置指令中,下发给互联端口和下游端口,从而将路由信息配置到互联端口和下游端口上。在一些实施例中,地址映射器是CPU上运行的软件。例如,地址映射器运行在BIOS中。
本实施例并不限定软件400全部运行在同一个硬件上。在一些实施例中,软件400中的模块分别运行在不同硬件上。例如,一部分模块运行在CPU上,另一部分模块运行在BMC,另一部分模块运行在PCIe交换机上。例如,拓扑生成器420以及地址分配器430均运行在CPU上,互联配置器410是PCIe交换机的固件或者互联配置器410是BMC上运行的软件。在另一些实施例中,软件400中的软件模块全部运行在CPU上,或者全部运行在BMC上,或者全部运行在PCIe交换机上。
以上介绍了多处理器系统的硬件架构以及软件架构。以上描述的多处理器系统对现有基于PCIe的系统架构进行改进,实现两个域之间的连接。当本域的处理器进行枚举时,外域的PCIe设备不会被本域的处理器发现。因此,外域的PCIe设备对本域的处理器是隐藏的,避免外域的PCIe设备被本域处理器发现而触发的访问冲突问题。因此,在两个域的PCIe交换机互连的情况下,本域的处理器或者PCIe设备等设备仍然能够正常访问外域的PCIe设备,提高了跨域访问的通信可靠性。并且,由于跨域访问的通信路径通过总线以及两个域的PCIe交换机建立,而不依赖于处理器的转发,有助于缩短跨域访问的通信路径,从而在避免访问冲突的情况下减少跨域访问的时延。
例如,在附图4所示的系统中,当第一处理器进行枚举时,第二PCIe域中的与第二PCIe交换机连接的第二PCIe设备131不会被第一处理器发现;当第二处理器进行枚举时,第一PCIe域中的与第一PCIe交换机连接的第一PCIe设备130不会被第二处理器发现。那么,由于两个域的处理器不会发现对方域中的PCIe设备,使得两个域在PCIe交换机互联的情况下枚举时不会出错。
“外域的PCIe设备不会被本域的处理器发现”这一特点的具体实现方式包括很多种,在下面的一些实施例中,以通过“拒绝处理器的扫描指令”来实现这一特点为例举例说明。
值得说明的一点是,本实施例并不限定通过配置哪个域的设备拒绝处理器的扫描指令来实现“外域的PCIe设备不会被本域的处理器发现”。在一些实施例中,将本域的PCIe交换机中互联端口配置为在枚举过程中拒绝本域的处理器的扫描指令,从而避免本域的处理器通过本域的PCIe交换机而发现外域的PCIe设备。在另一些实施例中,将外域的PCIe交换机中互联端口配置在枚举过程中拒绝本域的中央处理器的扫描指令,从而避免本域的处理器通过外域的PCIe交换机而发现外域的PCIe设备。
在另一些实施例中,可能采用“拒绝处理器的扫描指令”之外的其他方式实现“外域的PCIe设备不会被本域的处理器发现”,本实施例对现“外域的PCIe设备不会被本域的处理器发现”的具体实现方式不做限定。
以下介绍对上文介绍的系统架构进行配置的方法。
参见附图9,多处理器系统的配置方法500例如包括以下步骤S501至步骤S504。
步骤S501、将PCIe交换机的PCIe端口配置为主机端口、下游端口或者互联端口。
从硬件的角度来说,步骤S501例如由中央处理器、BMC或者PCIe交换机本身执行。例如,在附图4所示的系统中,由第一中央处理器110为第一PCIe交换机120执行S501,由第二中央处理器111为第二PCIe交换机121执行S501。又如,由BMC为第一PCIe交换机120和第二PCIe交换机121分别执行S501。又如,由第一PCIe交换机120通过第一固件执行S501,由第二PCIe交换机121通过第二固件执行S501。
从软件的角度来说,步骤S501例如由互联配置器执行。比如,先将互联配置器烧录到PCIe交换机的固件中,再运行互联配置器以执行步骤S501。
以互联配置器执行S501为例,S501具体包括以下S5011至S5013。
S5011、互联配置器在PCIe交换机的多个PCIe端口中,确定与CPU相连的PCIe端口,将与CPU相连的PCIe端口配置为主机端口。
S5012、互联配置器在PCIe交换机的多个PCIe端口中确定与PCIe设备相连的PCIe端口,将与PCIe设备相连的PCIe端口配置为下游端口。
例如,在附图5所示的双CPU以及8个NPU的场景下,CPU1或PCIe交换机1上运行的互联配置器确定PCIe交换机1上与NPU0至NPU3这四个NPU相连的四个PCIe端口,互联配置器将四个NPU分别相连的四个PCIe端口配置为四个下游端口。同理地,CPU2或PCIe交换机2上运行的互联配置器确定PCIe交换机2上与NPU4至NPU7这四个NPU相连的四个PCIe端口,互联配置器将四个NPU分别相连的四个PCIe端口配置为四个下游端口。
S5013、互联配置器在PCIe交换机的多个PCIe端口中确定与其他PCIe交换机相连的PCIe端口,将与其他PCIe交换机相连的PCIe端口配置为互联端口。
例如,在附图5所示的双CPU以及8个NPU的场景下,CPU1或PCIe交换机1上运行的互联配置器确定PCIe交换机1上与PCIe交换机2相连的PCIe端口,互联配置器将与PCIe交换机2相连的PCIe端口配置为互联端口a。同理地,CPU2或PCIe交换机2上运行的互联配置器确定PCIe交换机2上与PCIe交换机1相连的PCIe端口,互联配置器将与PCIe交换机1相连的PCIe端口配置为互联端口b。
步骤S502、在上电启动过程中,CPU上运行的基本输入输出系统(base inputoutput system,BIOS)进行枚举。
枚举是指处理器(如CPU)启动后发现PCIe设备的过程。处理器通过进行枚举,从而知道系统中具有哪些PCIe设备,以便为每个PCIe设备分配地址空间(如总线号、地址窗口等)。枚举例如在系统初始化时执行。
扫描指令是处理器在进行枚举时发送的指令。具体地,在枚举过程中,处理器会发送扫描指令;PCIe设备接收到扫描指令后,PCIe设备会响应扫描指令,生成并向处理器发送回复消息;处理器接收回复消息后,为PCIe设备分配地址空间。
在枚举过程中,PCIe交换机的互联端口会拒绝BIOS的扫描指令,实现对CPU隐藏。主机端口和下游端口正常响应BIOS的扫描指令以及配置命令,实现对CPU可见。通过进行枚举,会扫描出PCIe的树形拓扑结构。枚举完成后,每个CPU下都是一棵独立的PCIe树。
步骤S503、拓扑生成器将每个PCIe树作为一个PCIe域,为每个PCIe域分配对应的域ID。其中,为不同的PCIe域分配的域ID不同。
步骤S504、地址映射器收集各个PCIe域内PCIe设备的基地址寄存器(baseaddress register,BAR)空间地址与总线地址信息,并根据收集的地址,为每个PCIe端口配置路由信息。
以上介绍了配置方法的整体流程,下面对如何配置互联端口的方式以及如何配置路由信息的方式进行举例说明。
PCIe交换机中的互联端口被配置为在枚举过程中拒绝中央处理器的扫描指令。PCIe交换机中的下游端口和主机端口被配置为在枚举过程中响应中央处理器的扫描指令。
例如,在通过配置本域的PCIe交换机中互联端口在枚举过程中拒绝本域的处理器的扫描指令的情况下,参见附图4,第一PCIe交换机120包括第一互联端口1202、第一下游端口1203和第一主机端口1201,第一互联端口1202被配置为在第一中央处理器110枚举时拒绝第一中央处理器110的扫描指令,第一下游端口1203被配置为在第一中央处理器110枚举时响应第一中央处理器110的扫描指令,第一主机端口1201被配置为在第一中央处理器110枚举时响应第一中央处理器110的扫描指令。
同理地,第二PCIe交换机121包括第二互联端口1212、第二下游端口1213和第二主机端口1211,第二互联端口1212被配置为在第二中央处理器111枚举时拒绝第二中央处理器111的扫描指令,第二下游端口1213被配置为在第二中央处理器111枚举时响应第二中央处理器111的扫描指令,第二主机端口1211被配置为在第二中央处理器111枚举时响应第二中央处理器111的扫描指令。
又如,在通过配置外域的PCIe交换机中互联端口在枚举过程中拒绝本域的处理器的扫描指令的情况下,第二互联端口1212被配置为在第一中央处理器110枚举时拒绝第一中央处理器110的扫描指令。第一互联端口1202被配置为在第二中央处理器111枚举时拒绝第二中央处理器111的扫描指令。
如何将互联端口配置为拒绝扫描指令包括多种实现方式,以下通过实现方式一、实现方式二以及实现方式三这三种方式举例说明。
实现方式一、由BIOS配置。
在采用实现方式一时,由BIOS负责将PCIe交换机中的互联端口配置为在枚举过程中拒绝第一中央处理器110和/或第二中央处理器111的扫描指令。
在一些实施例中,BIOS配置互联端口的动作是通过与PCIe交换机的管理端口交互实现的。例如,参见附图7,CPU上运行的BIOS生成配置指令,并向管理端口下发配置指令,配置指令用于指示在枚举过程中拒绝第一中央处理器110和/或第二中央处理器111的扫描指令。PCIe交换机通过管理端口接收配置指令,响应于配置指令,将互联端口配置为拒绝第一中央处理器110和/或第二中央处理器111的扫描指令。在一些实施例中,配置互联端口的动作具体是通过访问互联端口的寄存器实现的。例如,管理端口将配置指令发送至PCIe交换机中的固件,PCIe交换机中的固件将配置指令写入至互联端口的寄存器,互联端口的寄存器保存配置指令。在枚举过程中,互联端口从寄存器中读取配置指令,执行配置指令,因此拒绝BIOS的扫描指令。例如,在附图4所示的系统架构中,BIOS用于将第一互联端口1202以及第二互联端口1212均配置为在枚举过程中拒绝第一中央处理器110和/或第二中央处理器111的扫描指令。
值得说明的一点是,本实施例并不限定用于将互联端口配置为拒绝扫描指令的BIOS运行在哪个CPU上。以附图4所示的系统架构为例,将互联端口配置为拒绝扫描指令的CPU包括而不限于以下情况一至情况四。
情况一、BIOS包括多个线程,BIOS的不同线程运行在不同中央处理器上。可选地,在这种情况下,由不同中央处理器通过BIOS的不同线程,分别将第一互联端口1202以及第二互联端口1212均配置为在枚举过程中拒绝扫描指令。例如,BIOS包括第一线程和第二线程,第一线程运行在第一中央处理器110上,第二线程运行在第二中央处理器111上,可选地,在这种情况下,由第一中央处理器110通过第一线程将第一互联端口1202配置为在枚举过程中拒绝扫描指令,由第二中央处理器111通过第二线程将第二互联端口1212配置为在枚举过程中拒绝扫描指令。
情况二、BIOS运行在第一中央处理器110上。可选地,在这种情况下,由第一中央处理器110通过BIOS将第一互联端口1202以及第二互联端口1212均配置为在枚举过程中拒绝扫描指令。
情况三、BIOS运行在第二中央处理器111上。可选地,在这种情况下,由第二中央处理器111通过BIOS将第一互联端口1202以及第二互联端口1212均配置为在枚举过程中拒绝扫描指令。
情况四、BIOS运行在第一中央处理器110、第二中央处理器111之外的其他中央处理器上。可选地,在这种情况下,由其他中央处理器通过BIOS将第一互联端口1202以及第二互联端口1212均配置为在枚举过程中拒绝扫描指令。
实现方式二、由BMC配置。
例如,参见附图7,BMC生成配置指令,并通过带外通道向PCIe交换机下发配置指令;PCIe交换机通过带外通道接收配置指令,响应于BMC的配置指令,将互联端口配置为拒绝扫描指令。BMC,用于将第一互联端口1202以及第二互联端口1212均配置为在枚举过程中拒绝扫描指令。具体地,BMC生成并向第一PCIe交换机120下发配置指令,第一PCIe交换机120响应于BMC的配置指令,将第一互联端口1202配置为拒绝第一中央处理器110和/或第二中央处理器111的扫描指令。BMC生成并向第二PCIe交换机121下发配置指令,第二PCIe交换机121响应于BMC的配置指令,将第二互联端口1212配置为拒绝第一中央处理器110和/或第二中央处理器111的扫描指令。
实现方式三、通过固件的方式配置。
例如,将枚举过程中互联端口拒绝扫描指令的程序代码烧录在PCIe交换机的固件中,从而固化在PCIe交换机内。每当系统启动时,互联端口都会基于固件配置拒绝扫描指令。例如,,第一PCIe交换机120包括第一固件,第一固件用于将第一互联端口1202配置为在枚举过程中拒绝第一中央处理器110和/或第二中央处理器111的扫描指令;第二PCIe交换机121包括第二固件,第二固件用于将第二互联端口1212配置为在枚举过程中拒绝第一中央处理器110和/或第二中央处理器111的扫描指令。
通过上述配置方法,由于互联端口拒绝了扫描指令,互联端口以及互联端口连接的设备对中央处理器是隐藏的;由于下游端口和主机端口响应了扫描指令,下游端口、下游端口连接的设备、主机端口、主机端口连接的设备对中央处理器是可见的。例如,在附图4所示的场景中,第一互联端口1202以及第一互联端口1202连接的第二PCIe交换机121是对第一中央处理器110隐藏的,第一下游端口1203以及第一下游端口1203连接的第一PCIe设备130是对第一中央处理器110可见的,第一主机端口1201是对第一中央处理器110可见的。第二互联端口1212以及第二互联端口1212连接的第一PCIe交换机120是对第二中央处理器111隐藏的,第二下游端口1213以及第二下游端口1213连接的第二PCIe设备131是对第二中央处理器111可见的,第二主机端口1211是对第二中央处理器111可见的。其中,互联端口对中央处理器隐藏这一特征例如通过操作系统查询PCIe信息时得到的查询结果表现出来。例如,当指令操作系统查询PCIe总线的所有PCIe端口的信息以及连接到PCIe总线上的所有设备的信息时,查询结果包括下游端口的PCIe信息、主机端口的PCIe信息以及下游端口连接的PCIe设备的信息,而不包括互联端口的PCIe信息。其中,PCIe信息例如包括对应端口的总线号、设备号以及功能号等。
由于互联端口在枚举时拒绝了扫描指令,互联端口对中央处理器是隐藏的,能够达到阻断互联端口与主机端口之间的通信的效果。其中,阻断的通信包含从主机端口至互联端口这一方向的通信,也包括从互联端口至主机端口这一方向的通信。例如,参见附图10,对于CPU1下挂的PCIe拓扑树而言,由于互联端口阻断了来自CPU1中的CPU核a的扫描指令,达到互联端口与主机端口之间的通信被阻断的效果。对于CPU2下挂的PCIe拓扑树而言,由于互联端口b阻断了来自CPU核b的扫描指令,达到互联端口b与主机端口b之间的通信被阻断的效果。需要说明的是,阻断通信是指在逻辑上阻断通信,并不限定主机端口与互联端口在物理上是连通还是非联通。
通过对每个PCIe交换机的互联端口采用上述配置方法,能够解决多个CPU下的PCIe交换机互联情况下访问冲突的问题,下面对这一技术效果的原理进行介绍。
在PCIe枚举过程中,由于互联端口拒绝了CPU的扫描指令,CPU不会从互联端口开始继续扫描到互联端口连接的其他PCIe域的PCIe交换机,CPU也就不会为互联端口以及其他PCIe域的PCIe交换机分配总线标识,因此保证每个PCIe域中的每个PCIe设备的总线标识唯一。从PCIe拓扑的角度而言,每个PCIe域的每个PCIe设备对应的根节点是唯一的。因此,在不同PCIe拓扑树中的PCIe交换机互联的情况下,也能保证多个CPU下的多个PCIe拓扑树是相互独立的,不会产生不同PCIe拓扑树访问冲突的问题。其中,PCIe拓扑树的独立性是指一个端点到RC之间的路径唯一,即,从一个PCIe设备开始,一级一级的向上溯源,会找到唯一的一个CPU。
例如,参见附图4,由于第一互联端口1202对第一中央处理器110是隐藏的,第一中央处理器110在PCIe枚举时不会通过第一互联端口1202扫描到第二PCIe交换机121以及第二PCIe域102中的第二PCIe设备131,从而避免第一PCIe域101的RC(第一中央处理器110)将第二PCIe交换机121以及第二PCIe域102中的第二PCIe设备131扫描为叶子节点并分配总线标识的情况。由于第二互联端口1212对第二中央处理器111是隐藏的,第二中央处理器111在PCIe枚举时不会通过第二互联端口1212扫描到第一PCIe交换机120以及第一PCIe域101中的第一PCIe设备130,从而避免第二PCIe域102的RC(第二中央处理器111)将第一PCIe域101中的第一PCIe设备130,扫描为叶子节点的情况。因此,第一PCIe域101和第二PCIe域102这两个PCIe域的RC不会冲突,第一PCIe域101中的每个PCIe设备具有唯一的根节点(第一中央处理器110),第二PCIe域102中的每个PCIe设备具有唯一的根节点(第二中央处理器111)。也即是,第一PCIe交换机120与第二PCIe交换机121互联的情况下,第一中央处理器110下的PCIe拓扑树与第二中央处理器111下的PCIe拓扑树也是相互独立的,这两个PCIe拓扑树之间不会产生访问冲突。
以上介绍了互联端口相关的配置,下面对路由信息以及路由信息相关的配置进行介绍。
路由信息用于指示PCIe交换机转发访问请求时进行寻址。路由信息也称路由规则(route rule)。
例如,路由信息包括PCIe设备的地址信息。地址信息用于寻址至对应的PCIe设备。其中,PCIe设备的地址信息的形式包括多种情况。例如,第一PCIe设备130的地址信息包括第一PCIe设备130的地址窗口(address window)或总线标识(bus identity,bus ID,也称总线ID)。例如,参见附图5和附图6,附图6所示的系统300和附图5所示的系统200具备类似的结构,相区别的是,系统200采用地址窗口表示每个PCIe设备的地址,系统300示出了采用总线标识表示地址的情况下每个PCIe设备的地址。
地址窗口包括至少一个地址。地址窗口中的地址例如是逻辑地址。不同PCIe设备对应的地址窗口不同。地址窗口用于转发不同PCIe设备之间的访问请求(即P2P访问请求)。具体地,地址窗口中的地址会携带在访问请求中,作为访问请求的源地址或目的地址。PCIe交换机根据访问请求中的源地址,能够确定访问请求来自于哪个PCIe设备;PCIe交换机根据访问请求中的目的地址,能够确定访问请求要发给哪个PCIe设备,从而转发访问请求。例如,在附图5所示的场景中,NPU0的地址窗口为地址窗口0(address window W0),NPU1的地址窗口为地址窗口1(address window W1),NPU2的地址窗口为地址窗口2(address windowW2),NPU3的地址窗口为地址窗口3(address window W3)。NPU4的地址窗口为地址窗口4(address window W4),NPU5的地址窗口为地址窗口5(address window W5),NPU6的地址窗口为地址窗口6(address window W6),NPU7的地址窗口为地址窗口7(address windowW7)。
总线标识用于标识PCIe设备连接的PCIe总线。在一些实施例中,总线标识是全局唯一的。全局唯一是指PCIe设备与总线标识是一一对应的关系,不同PCIe设备对应的总线标识不同。例如,在附图6所示的场景中,NPU0对应的总线标识为总线10(bus 10),表示NPU0连接的PCIe总线是总线10。同理地,NPU1对应的总线标识为总线11(bus 11),NPU2对应的总线标识为总线12(bus 12),NPU3对应的总线标识为总线13(bus 13)。NPU4对应的总线标识为总线80(bus 80),NPU5对应的总线标识为总线81(bus 81),NPU6对应的总线标识为总线82(bus 82),NPU7对应的总线标识为总线83(bus 83)。
当然,地址窗口或总线标识是对地址信息的举例说明,而不限定地址信息必须是这两种信息。例如,地址信息还可能是PCIe设备的媒体访问控制(media access control,MAC)地址、互联网协议(internet protocol version,IP)地址,或者其他能够标识PCIe设备身份的数据等。
本实施例对各种路由信息保存在系统中的哪个硬件不做限定。例如,保存路由信息的方式包括下面的情况A和情况B。
情况A、路由信息全部或部分保存在PCIe交换机的处理单元中。
PCIe交换机的处理单元例如是switch芯片。该处理单元例如内置在PCIe交换机中。该处理单元用于对PCIe交换机中各个组件(如下游端口、互联端口和主机端口)进行控制和管理。例如,在附图4所示的场景中,第一PCIe交换机包括第一处理单元。第一处理单元是指第一PCIe交换机的处理单元。例如,第一处理单元为第一PCIe交换机的switch芯片。第二PCIe交换机包括第二处理单元。第二处理单元是指第二PCIe交换机的处理单元。例如,第二处理单元为第二PCIe交换机的switch芯片。
情况B、各种路由信息保存在PCIe交换机的对应端口中。
例如,PCIe交换机的端口具有芯片,各种路由信息存储在端口的芯片中,使得路由信息直接配置在端口上。
在采用不同的形式表示PCIe设备的地址时,路由信息的内容有所区别。例如,在采用地址窗口的形式表示PCIe设备的地址时,路由信息称为地址路由信息(address routerule),路由信息包括PCIe设备的地址窗口。在采用总线标识的形式表示PCIe设备的地址时,路由信息称为ID路由信息(ID route rule),路由信息包括PCIe设备对应的总线标识。
下面通过(a)至(c)对PCIe交换机中各种PCIe端口配置的路由信息进行举例介绍。
(a)互联端口配置的跨域路由信息
跨域路由信息用于将本域的访问请求路由转发至外域。具体地,跨域路由信息指示外域的PCIe设备的地址信息与外域的PCIe交换机的互联端口的端口标识的对应关系。因此,跨域路由信息能够指明这样的路径:本域的处理器或者PCIe设备→本域的PCIe交换机的互联端口→外域的PCIe交换机的互联端口→外域的PCIe设备。那么,当处理器或者PCIe设备向外域发起访问时,由于本域的访问请求能沿着这样的路径转发至外域,实现跨域访问的功能。
跨域路由信息的实现方式包括多种情况。在一些实施例中,跨域路由信息包括外域的域标识与外域互联端口的端口标识之间的对应关系,以及外域PCIe设备的地址信息与外域的域标识之间的对应关系。在另一些实施例中,跨域路由信息包括外域的PCIe设备的地址信息与外域的PCIe交换机的互联端口的端口标识的对应关系。
例如,在地址信息为地址窗口的情况下,跨域路由信息包括域标识与互联端口的端口标识之间的对应关系以及PCIe设备的地址窗口与下游端口的标识之间的对应关系。
又如,在地址信息为总线标识的情况下,跨域路由信息包括PCIe设备对应的总线标识与互联端口的端口标识之间的对应关系以及PCIe设备对应的总线标识与下游端口的标识之间的对应关系。
下面,以附图4所示的两个域的场景为例,对跨域路由信息进行举例说明。为了区分描述不同域的跨域路由信息,将第一PCIe域中的跨域路由信息称为第一跨域路由信息,将第二PCIe域中的跨域路由信息称为第二跨域路由信息。其中,第一跨域路由信息例如配置在第一PCIe交换机上。第二跨域路由信息例如配置在第二PCIe交换机上。例如,第一PCIe交换机的第一互联端口中配置有第一跨域路由信息。第二PCIe交换机的第二互联端口中配置有第二跨域路由信息。
在一些实施例中,跨域路由信息存储在PCIe交换机的处理单元中。在另一些实施例中,跨域路由信息存储在PCIe交换机的互联端口(如互联端口的芯片)中。
(a-1)第一跨域路由信息
第一跨域路由信息指示第二PCIe设备131的地址信息与第二互联端口的端口标识的对应关系。例如,第一跨域路由信息包括:第二PCIe域的域标识与第二互联端口的端口标识之间的对应关系,以及第二PCIe设备131的地址信息与第二PCIe域的域标识之间的对应关系。又如,第一跨域路由信息包括第二PCIe设备131的地址信息与第二互联端口的端口标识的对应关系。
在一些实施例中,第一跨域路由信息存储在第一处理单元中。在另一些实施例中,第一跨域路由信息存储在第一PCIe交换机的第一互联端口(如第一互联端口的芯片)中。
在一些实施例中,第一跨域路由信息包括第一条目和第三条目。
第一条目包括第二PCIe域102的域标识与第二互联端口1212的端口标识之间的对应关系。例如,在附图5所示的场景中,PCIe交换机1的互联端口a(fabric port a)中配置有egress domain 2→fabric port b。egress domain 2→fabric port b是第一条目的举例说明。domain 2是对域标识的举例说明。fabric port b是对互联端口的端口标识的举例说明。egress domain 2→fabric port b是互联端口a(fabric port a)上一条出口(egress)方向的配置,这条配置的含义是将PCIe域2的访问请求转发给互联端口b(fabric port b)。
通过在第一互联端口1202上配置第一条目,第一互联端口1202向域外(第二PCIe域102)转发访问请求时,能够根据第一条目正确寻址到第二互联端口1212;比如说,在附图5所示的场景中,互联端口a收到域ID为“domain 2”的访问请求时,能正确寻址到互联端口b,从而将访问请求发给互联端口b。由此可见,该配置有助于访问请求在第一PCIe域101与第二PCIe域102之间跨域传输。
第三条目包括第二PCIe设备131对应的总线标识与第二互联端口1212的端口标识之间的对应关系。例如,在附图6所示的场景中,PCIe交换机1的互联端口a(fabric port a)中配置有egress 80~83→fabric port b。其中,egress 80~83→fabric port b是第三条目的举例说明。80~83是对四个PCIe设备对应的总线标识的举例说明。fabric port b是对互联端口的端口标识的举例说明。egress 80~83→fabric port b是互联端口a(fabricport a)上一条出口方向的配置,这条配置的含义是将目的总线的总线标识属于(80,83)的访问请求转发给互联端口b(fabric port b)。
通过在第一互联端口1202上配置第三条目,第一互联端口1202向域外(第二PCIe域102)转发访问请求时,能够根据域外的目的PCIe设备(第二PCIe设备131)对应的总线标识以及第三条目,正确寻址到第二互联端口1212;比如说,在附图5所示的场景中,互联端口a收到总线ID为“80”的访问请求时,能正确寻址到互联端口b,从而将访问请求发给互联端口b。
(a-2)第二跨域路由信息
第二跨域路由信息指示第一PCIe设备130的地址信息与第一互联端口的端口标识的对应关系。例如,第二跨域路由信息包括:第一PCIe域的域标识与第一互联端口的端口标识之间的对应关系,以及第一PCIe设备130的地址信息与第一PCIe域的域标识之间的对应关系。又如,第二跨域路由信息包括第一PCIe设备130的地址信息与第一互联端口的端口标识的对应关系。
在一些实施例中,第二跨域路由信息存储在第二处理单元中。在另一些实施例中,第二跨域路由信息存储在第二PCIe交换机的第二互联端口(如第二互联端口的芯片)中。
第二跨域路由信息的具体内容包括多种实现方式。例如,第二跨域路由信息包括第二条目和第四条目。
其中,第二条目包括第一PCIe域101的域标识与第一互联端口1202的端口标识之间的对应关系。例如,在附图5所示的场景中,PCIe交换机2的互联端口b(fabric port b)中配置有egress domain 1→fabric port a。egress domain 1→fabric port a是对第二条目的举例说明。domain 1是对域标识的举例说明。fabric port a是对互联端口的端口标识的举例说明。egress domain 1→fabric port a是互联端口b(fabric port b)上一条出口方向的配置,这条配置的含义是将发往PCIe域1的访问请求转发给互联端口a(fabric porta)。
通过在第二互联端口1212上配置第二条目,第二互联端口1212向域外(第一PCIe域101)转发访问请求时,能够根据第二条目寻址到第一互联端口1202。比如说,在附图5所示的场景中,互联端口b收到域ID为“domain 1”的访问请求时,能正确寻址到互联端口a,从而将访问请求发给互联端口a。由此可见,该配置有助于访问请求在第一PCIe域101与第二PCIe域102之间跨域传输。
第四条目包括第一PCIe设备130对应的总线标识与第一互联端口1202的端口标识之间的对应关系。例如,在附图6所示的场景中,PCIe交换机2的互联端口b(fabric port b)中配置有egress 10~13→fabric port a。egress 10~13→fabric port a是对第四条目的举例说明。10~13是对四个PCIe设备对应的总线标识的举例说明。fabric port a是对互联端口的端口标识的举例说明。egress 10~13→fabric port a是互联端口b(fabricport b)上一条出口方向的配置,这条配置的含义是将目的总线的总线标识属于(10,13)的访问请求要转发给互联端口a(fabric port a)。
通过在第二互联端口1212上配置第四条目,第二互联端口1212向域外(第一PCIe域101)转发访问请求时,能够根据域外的目的PCIe设备(第一PCIe设备130)对应的总线标识以及第四条目寻址到第一互联端口1202。比如说,在附图5所示的场景中,互联端口b收到域ID为“10”的访问请求时,能正确寻址到互联端口a,从而将访问请求发给互联端口a。由此可见,该配置有助于访问请求在第一PCIe域101与第二PCIe域102之间跨域传输。
(b)互联端口配置的本域路由信息。
本域路由信息用于将外域发来的访问请求路由转发至本域。具体地,本域路由信息包括本域内PCIe设备的地址信息与本域的PCIe交换机的下游端口的端口标识之间的对应关系。因此,本域路由信息能够指明这样的路径:外域的处理器或者PCIe设备→本域的PCIe交换机的互联端口→本域的PCIe交换机的下游端口→本域的PCIe设备。那么,当外域处理器或者PCIe设备向本域发起访问时,由于外域的访问请求能沿着这样的路径转发至本域,实现跨域访问的功能。
在一些实施例中,本域路由信息存储在PCIe交换机的处理单元中。在另一些实施例中,本域路由信息存储在PCIe交换机的互联端口(如互联端口的芯片)中。
下面,以附图4所示的两个域的场景为例,对本域路由信息进行举例说明。为了区分描述不同域的本域路由信息,将第一PCIe域中的本域路由信息称为第一本域路由信息,将第二PCIe域中的本域路由信息称为第二本域路由信息。其中,第一本域路由信息例如配置在第一PCIe交换机上。第二本域路由信息例如配置在第二PCIe交换机上。例如,第一PCIe交换机的第一互联端口中配置有第一本域路由信息。第二PCIe交换机的第二互联端口中配置有第二本域路由信息。
(b-1)第一本域路由信息
第一本域路由信息包括第一PCIe设备130的地址信息与第一下游端口1203的端口标识之间的对应关系。例如,第一本域路由信息包括第五条目和第七条目。
在一些实施例中,第一本域路由信息存储在第一处理单元中。在另一些实施例中,第一本域路由信息存储在第一PCIe交换机的第一互联端口1202(如第一互联端口的芯片)中。
第五条目包括第一PCIe设备130的地址窗口与第一下游端口1203的端口标识之间的对应关系。
ingress window w0~w3→DP0~3是对第五条目的举例说明。window w0是对地址窗口的举例说明。DP0~3是对四个下游端口的标识的举例说明。ingress window w0~w3→DP0~3是互联端口a(fabric port a)上一条入口(ingress)方向的配置,这条配置的含义是将目的地址属于window w0~w3的访问请求转发给DP0~3中对应的下游端口。
通过在第一互联端口1202上配置第五条目,当第一互联端口1202收到域外(第二PCIe域102)向本域的目的PCIe设备(第一PCIe设备130)发来的访问请求时,第一互联端口1202能够根据第五条目正确寻址到目的PCIe设备相连的下游端口(第一下游端口1203);比如说,在附图5所示的场景中,互联端口a收到目的地址属于“window w0”的访问请求时,能正确寻址到DP0,从而将访问请求发给PCIe交换机1的DP0,而不会错误地发给PCIe交换机1的DP1。由此可见,该配置有助于访问请求在第一PCIe域101与第二PCIe域102之间跨域传输。
第七条目包括第一PCIe设备130对应的总线标识与第一下游端口1203的端口标识之间的对应关系。
例如,在附图6所示的场景中,PCIe交换机1的互联端口a(fabric port a)中配置有ingress10~13→DP0~3。ingress 10~13→DP0~3是对第七条目的举例说明。10~13是对四个PCIe设备对应的总线标识的举例说明。DP0~3是对四个下游端口的标识的举例说明。ingress10~13→DP0~3是互联端口a(fabric port a)上一条入口方向的配置,这条配置的含义是将目的总线的总线标识属于(10,13)的访问请求转发给DP0~3中对应的下游端口。
通过在第一互联端口1202上配置第七条目,当第一互联端口1202收到域外(第二PCIe域102)向本域的目的PCIe设备(第一PCIe设备130)发来的访问请求时,第一互联端口1202能够根据第七条目正确寻址到目的PCIe设备相连的下游端口(第一下游端口1203);比如说,在附图5所示的场景中,互联端口a收到目的地址属于“10”的访问请求时,能正确寻址到DP0,从而将访问请求发给PCIe交换机1的DP0,而不会错误地发给PCIe交换机1的DP1。由此可见,该配置有助于访问请求在第一PCIe域101与第二PCIe域102之间跨域传输。
(b-2)第二本域路由信息
第二本域路由信息包括第二PCIe设备131的地址信息与第二下游端口1213的端口标识之间的对应关系。在一些实施例中,第二本域路由信息存储在第二处理单元中。在另一些实施例中,第二本域路由信息存储在第二PCIe交换机的第二互联端口(如第二互联端口的芯片)中。
例如,第二本域路由信息包括第六条目和第八条目。
第六条目包括第二PCIe设备131的地址窗口与第二下游端口1213的端口标识之间的对应关系。
ingress window w4~w7→DP0~3是对第六条目的举例说明。window w4~w7是对四个地址窗口的举例说明。DP0~3是对四个下游端口的标识的举例说明。ingress windoww4~w7→DP0~3是互联端口b(fabric port b)上一条入口方向的配置,这条配置的含义是将目的地址属于window w4~w7的访问请求转发给DP0~3中对应的下游端口。
通过在第二互联端口1212上配置第六条目,当第二互联端口1212收到域外(第一PCIe域101)向本域的目的PCIe设备(第二PCIe设备131)发来的访问请求时,第二互联端口1212能够根据第六条目正确寻址到目的PCIe设备相连的下游端口(第二下游端口1213)。
第八条目包括第二PCIe设备131对应的总线标识与第二下游端口1213的端口标识之间的对应关系。
ingress 80~83→DP0~3是对第八条目的举例说明。80~83是对四个PCIe设备对应的总线标识的举例说明。DP0~3是对四个下游端口的标识的举例说明。ingress 80~83→DP0~3是互联端口b(fabric port b)上一条入口方向的配置,这条配置的含义是将目的总线的总线标识属于(80,83)的访问请求转发给DP0~3中对应的下游端口。
通过在第二互联端口1212上配置第八条目,当第二互联端口1212收到域外(第一PCIe域101)向本域的目的PCIe设备(第二PCIe设备131)发来的访问请求时,第二互联端口1212能够根据第八条目正确寻址到目的PCIe设备相连的下游端口(第二下游端口1213)
结合以上跨域路由信息以及本域路由信息,例如,在附图5所示的场景中,PCIe交换机1的互联端口a(fabric port a)中配置egress domain 2→fabric port b、ingresswindoww0~w3→DP0~3。PCIe交换机2的互联端口b(fabric port b)中配置egress domain1→fabric port a、ingress window w4~w7→DP0~3。又如,在附图6所示的场景中,PCIe交换机1的互联端口a(fabric port a)中配置egress 80~83→fabric port b、ingress10~13→DP0~3。PCIe交换机2的互联端口b(fabric port b)中配置egress 10~13→fabric port a、ingress 80~83→DP0~3。
(c)下游端口配置的下游端口路由信息。
下游端口路由信息用于将目的域为外域的访问请求路由转发至对应的互联端口。例如,下游端口路由信息指示外域的PCIe设备的地址信息与本域的互联端口的端口标识之间的对应关系。因此,下游端口路由信息能够指明这样的路径:本域的PCIe交换机的下游端口→本域的PCIe交换机的互联端口→外域的PCIe交换机→外域的PCIe设备。那么,当处理器或者PCIe设备向外域发起访问时,由于本域的访问请求能沿着这样的路径从本域合适的互联端口转发出去,帮助访问请求到达正确的外域,实现跨域访问的功能。
在一些实施例中,下游端口路由信息存储在PCIe交换机的处理单元中。在另一些实施例中,下游端口路由信息存储在PCIe交换机的下游端口(如下游端口的芯片)中。
下游端口路由信息的实现方式包括多种情况。在一些实施例中,下游端口路由信息包括外域的域标识与本域互联端口的端口标识之间的对应关系,以及外域PCIe设备的地址信息与外域的域标识之间的对应关系。在另一些实施例中,下游端口路由信息包括外域的PCIe设备的地址信息与本域的互联端口的端口标识之间的对应关系。
下游端口路由信息例如是地址映射表的形式,也称DP端口地址映射表。
下面,以附图4所示的两个域的场景为例,对下游端口路由信息进行举例说明。为了区分描述不同域的下游端口路由信息,将第一PCIe域101中的下游端口路由信息称为第一下游端口路由信息,将第二PCIe域中的下游端口路由信息称为第二下游端口路由信息。其中,第一下游端口路由信息例如配置在第一PCIe交换机120上。第二下游端口路由信息例如配置在第二PCIe交换机121上。例如,第一PCIe交换机120的第一下游端口1203中配置有第一下游端口路由信息。第二PCIe交换机121的第二下游端口1213中配置有第二下游端口路由信息。
(c-1)第一下游端口路由信息
第一下游端口路由信息指示第二PCIe设备131的地址信息与第一互联端口1202的端口标识之间的对应关系。在一些实施例中,第一下游端口路由信息存储在第一处理单元中。在另一些实施例中,第一下游端口路由信息存储在第一PCIe交换机的第一下游端口(如第一下游端口的芯片)中。
第一下游端口路由信息包括第二PCIe域102的域标识与第一互联端口1202的端口标识之间的关系(例如以下第九条目),以及第二PCIe设备131的地址信息与第二PCIe域102的域标识之间的对应关系(例如以下第十一条目或第十三条目)。
第九条目包括第二PCIe域102的域标识与第一互联端口1202的端口标识之间的对应关系。egress domain 2→fabric port a是对第九条目的举例说明。domain 2是对域标识的举例说明。fabric port a是对互联端口的端口标识的举例说明。egress domain 2→fabric port a是下游端口上一条出口方向的配置,这条配置的含义是将PCIe域2的访问请求转发给互联端口a(fabric port a)。
通过在第一下游端口1203上配置第九条目,当第一下游端口1203收到目的域是域外(第二PCIe域102)的访问请求时,第一下游端口1203能够根据第九条目正确寻址到第一互联端口1202;比如说,在附图5所示的场景中,下游端口DP0从NPU0收到域ID为“domain 2”的访问请求时,下游端口DP0正确寻址到互联端口a,下游端口DP0将访问请求发送给互联端口a,互联端口a将访问请求发给互联端口b,从而将本域的访问请求跨域转发给外域。由此可见,该配置使得下游端口正确寻址到对应的互联端口,有助于访问请求在第一PCIe域101与第二PCIe域102之间跨域传输。
第十一条目包括第二PCIe设备131的地址窗口与第二PCIe域102的域标识之间的对应关系。第十一条目例如在附图5所示的PCIe交换机1的下游端口(DP0至DP3)上配置,第十一条目例如包括address window w4与egress domain 2之间的对应关系、addresswindow w5与egress domain 2之间的对应关系、address window w6与egress domain 2之间的对应关系、address window w7与egress domain 2之间的对应关系。通过在第一下游端口上配置第十一条目,PCIe交换机1能够根据域外的PCIe设备的地址窗口,找到访问请求要发往的PCIe域为PCIe域2。
第十三条目包括第二PCIe设备131对应的总线标识与第一互联端口1202的端口标识之间的对应关系。egress 80~83→fabric port a是对第十三条目的举例说明。80~83是对PCIe域2中设备的总线标识所属的区间的举例说明。fabric port a是对互联端口的端口标识的举例说明。egress 80~83→fabric port a是下游端口上一条入口方向的配置,这条配置的含义是将目的总线的总线标识属于(80,83)的访问请求转发给互联端口a(fabric port a)。
(c-2)第二下游端口路由信息
第二下游端口路由信息指示第一PCIe设备130的地址信息与第二互联端口的端口标识之间的对应关系。在一些实施例中,第二下游端口路由信息存储在第二处理单元中。在另一些实施例中,第二下游端口路由信息存储在第二PCIe交换机121的第二下游端口(如第二下游端口的芯片)中。
第二下游端口路由信息包括第一PCIe域的域标识与第二互联端口的端口标识之间的关系(例如以下第十条目),以及第一PCIe设备130的地址信息与第二PCIe域的域标识之间的对应关系(例如以下第十二条目或第十四条目)。
第十条目包括第一PCIe域101的域标识与第二互联端口1212的端口标识之间的对应关系。egress domain 1→fabric port b是对第十条目的举例说明。domain 2是对域标识的举例说明。fabric port b是对互联端口的端口标识的举例说明。egress domain 1→fabric port b是下游端口上一条出口方向的配置,这条配置的含义是将发往PCIe域2的访问请求转发给互联端口b(fabric port b)。通过在第二下游端口1213上配置第十条目,当第二下游端口1213收到目的域是域外(第一PCIe域101)的访问请求时,第二下游端口1213能够根据第十条目正确寻址到第二互联端口1212。
第十二条目包括第一PCIe设备130的地址窗口与第一PCIe域101的域标识之间的对应关系。第十二条目例如在附图5所示的PCIe交换机2的下游端口(DP0至DP3)上配置,第十二条目例如包括address window w1与egress domain 1之间的对应关系、addresswindow w2与egress domain 1之间的对应关系、address window w3与egress domain 1之间的对应关系、address window w4与egress domain 1之间的对应关系。通过在第二下游端口上第十二条目,PCIe交换机2能够根据域外的PCIe设备的地址窗口,找到访问请求要发往的PCIe域为PCIe域1。
egress 10~13→fabric port b是对第十四条目的举例说明。10~13是对PCIe域1中设备的总线标识所属的区间的举例说明。fabric port b是对互联端口的端口标识的举例说明。egress10~13→fabric port b是下游端口上一条入口方向的配置,这条配置的含义是将目的总线的总线标识属于(10,13)的访问请求转发给互联端口b(fabric port b)。
以上描述了跨域访问相关的一些路由信息以及路由信息中的具体条目。本实施例并不限定下游端口或者互联端口仅配置上述列举的路由信息,可选地,下游端口或者互联端口中还配置其他路由信息,进一步提高通信可靠性。下面结合附图4所示的场景和附图5所示的场景,对下游端口或者互联端口还可能配置的一些路由信息举例说明。
例如,参见附图4,在附图4示出的系统100中,第一下游端口1203配置有第十三条目、第十五条目和第十七条目,第二下游端口1213配置有第十四条目、第十六条目和第十八条目。例如,参见附图5,在附图5示出的双CPU和8个NPU的系统中,PCIe交换机1的下游端口的地址条目包括egress domain 2→fabric port a、ingress window w0→NPU0、ingresswindow w1→NPU1、ingress window w2→NPU2、ingress window w3→NPU3。PCIe交换机2的下游端口的地址条目包括egress domain 1→fabric port b、ingress window w4→NPU4、ingress window w5→NPU5、ingress window w6→NPU6、ingress window w7→NPU7。又如,参见附图6,在附图6所示的场景中,PCIe交换机1的下游端口的ID路由信息包括egress 80~83→fabric port a、ingress 10→NPU0、ingress 11→NPU1、ingress 12→NPU2、ingress 13→NPU3。PCIe交换机2的下游端口的ID路由信息包括egress 10~13→fabricport b、ingress 80→NPU4、ingress81→NPU5、ingress 82→NPU6、ingress 83→NPU7。
第十四条目包括第一PCIe设备130对应的总线标识与第二互联端口1212的端口标识之间的对应关系。
第十五条目包括第一PCIe设备130的地址窗口与第一PCIe设备130的标识之间的对应关系。
ingress window w1→NPU1是对第十五条目的举例说明。window w1是对地址窗口的举例说明。NPU1是对PCIe设备的标识的举例说明。ingress window w1→NPU1是下游端口上一条入口方向的配置,这条配置的含义是将目的地址属于地址窗口w1(address windoww1)的访问请求转发给NPU1。
ingress window w2→NPU2是对第十五条目的举例说明。window w2是对地址窗口的举例说明。NPU2是对PCIe设备的标识的举例说明。ingress window w2→NPU2是下游端口上一条入口方向的配置,这条配置的含义是将目的地址属于地址窗口w2(address windoww2)的访问请求转发给NPU2。
ingress window w3→NPU3是对第十五条目的举例说明。window w3是对地址窗口的举例说明。NPU3是对PCIe设备的标识的举例说明。ingress window w3→NPU3是下游端口上一条入口方向的配置,这条配置的含义是将目的地址属于地址窗口w3(address windoww3)的访问请求转发给NPU3。
第十六条目包括第二PCIe设备131的地址窗口与第二PCIe设备131的标识之间的对应关系。
ingress window w4→NPU4是对第十六条目的举例说明。window w4是对地址窗口的举例说明。NPU4是对PCIe设备的标识的举例说明。ingress window w4→NPU4是下游端口上一条入口方向的配置,这条配置的含义是将目的地址属于地址窗口w4(address windoww4)的访问请求转发给NPU4。
ingress window w5→NPU5是对第十六条目的举例说明。window w5是对地址窗口的举例说明。NPU5是对PCIe设备的标识的举例说明。ingress window w5→NPU5是下游端口上一条入口方向的配置,这条配置的含义是将目的地址属于地址窗口w5(address windoww5)的访问请求转发给NPU5。
ingress window w6→NPU6是对第十六条目的举例说明。window w6是对地址窗口的举例说明。NPU6是对PCIe设备的标识的举例说明。ingress window w6→NPU6是下游端口上一条入口方向的配置,这条配置的含义是将目的地址属于地址窗口w6(address windoww6)的访问请求转发给NPU6。
ingress window w7→NPU7是对第十六条目的举例说明。window w7是对地址窗口的举例说明。NPU7是对PCIe设备的标识的举例说明。ingress window w7→NPU7是下游端口上一条入口方向的配置,这条配置的含义是将目的地址属于地址窗口w7(address windoww7)的访问请求转发给NPU7。
第十七条目包括第一PCIe设备130对应的总线标识与第一PCIe设备130的标识之间的对应关系。
ingress 10→NPU0是对第十七条目的举例说明。10是对总线标识的举例说明。NPU0是对PCIe设备的标识的举例说明。ingress 10→NPU0是一条入口方向的配置,这条配置的含义是将目的总线为总线10的访问请求转发给NPU0。
ingress 11→NPU1是对第十七条目的举例说明。11是对总线标识的举例说明。NPU1是对PCIe设备的标识的举例说明。ingress 11→NPU1是一条入口方向的配置,这条配置的含义是将目的总线为总线11的访问请求转发给NPU1。
ingress 12→NPU2是对第十七条目的举例说明。12是对总线标识的举例说明。NPU2是对PCIe设备的标识的举例说明。ingress 12→NPU2是一条入口方向的配置,这条配置的含义是将目的总线为总线12的访问请求转发给NPU2。
ingress 13→NPU3是对第十七条目的举例说明。13是对总线标识的举例说明。NPU3是对PCIe设备的标识的举例说明。ingress 13→NPU3是一条入口方向的配置,这条配置的含义是将目的总线为总线13的访问请求转发给NPU3。
第十八条目包括第二PCIe设备131对应的总线标识与第二PCIe设备131的标识之间的对应关系。
ingress 80→NPU4是对第十八条目的举例说明。80是对总线标识的举例说明。NPU4是对PCIe设备的标识的举例说明。ingress 80→NPU4是一条入口方向的配置,这条配置的含义是将目的总线为总线80的访问请求转发给NPU4。
ingress 81→NPU5是对第十八条目的举例说明。81是对总线标识的举例说明。NPU5是对PCIe设备的标识的举例说明。ingress 81→NPU5是一条入口方向的配置,这条配置的含义是将目的总线为总线81的访问请求转发给NPU5。
ingress 82→NPU6是对第十八条目的举例说明。82是对总线标识的举例说明。NPU6是对PCIe设备的标识的举例说明。ingress 82→NPU6是一条入口方向的配置,这条配置的含义是将目的总线为总线82的访问请求转发给NPU6。
ingress 83→NPU7是对第十八条目的举例说明。83是对总线标识的举例说明。NPU7是对PCIe设备的标识的举例说明。ingress 83→NPU7是一条入口方向的配置,这条配置的含义是将目的总线为总线83的访问请求转发给NPU7。
以上对PCIe端口可能配置的各种路由信息进行了描述,以下对如何在PCIe交换机的PCIe端口上配置以上介绍的路由信息的方法流程进行介绍。
本实施例对向PCIe端口配置路由信息的时机不做限定。在一些实施例中,向PCIe端口配置路由信息的步骤在系统上电之后、任务启动之前执行。例如,配置路由信息的步骤在系统初始化阶段执行。例如,应用在AI训练的场景下,在启动AI训练任务之前,执行配置路由信息的步骤,以便在执行AI训练的过程中,应用预先配置的路由信息转发不同AI训练卡跨域P2P的访问请求。
本实施例对向PCIe端口配置路由信息的执行主体不做限定。在一些实施例中,由BIOS负责向PCIe交换机的PCIe端口上配置路由信息。例如,在附图4所示的场景,由BIOS向第一互联端口1202配置第一跨域路由信息或者第一本域路由信息中的至少一项;由BIOS向第一下游端口1203配置第一下游端口路由信息;由BIOS向第二下游端口1213配置第二下游端口路由信息。
在一些实施例中,BIOS向互联端口配置路由信息(如跨域路由信息或者本域路由信息中的至少一项)的动作是通过与PCIe交换机的管理端口交互实现的。例如,参见附图7,CPU上运行的BIOS生成配置指令,并向管理端口下发配置指令,配置指令包含路由信息。PCIe交换机通过管理端口接收配置指令。PCIe交换机从配置指令中获得路由信息,向互联端口配置路由信息。在一些实施例中,向互联端口配置路由信息的动作具体是通过访问互联端口的寄存器实现的。例如,管理端口将配置指令发送至PCIe交换机中的固件,PCIe交换机中的固件从配置指令中获得路由信息,将路由信息写入至互联端口的寄存器,互联端口的寄存器保存路由信息。当接收到访问请求时,互联端口从寄存器中读取路由信息,根据路由信息转发访问请求。
值得说明的一点是,在由BIOS配置路由信息的情况下,本实施例对哪个CPU通过运行BIOS配置路由信息不做限定。以附图4所示的系统架构为例,向PCIe端口配置路由信息的CPU包括而不限于以下情况A至情况D。
情况A、BIOS包括多个线程,BIOS的不同线程运行在不同中央处理器上。可选地,在这种情况下,由不同中央处理器通过BIOS的不同线程,分别配置不同PCIe端口上的路由信息。例如,BIOS包括第一线程和第二线程,第一线程运行在第一中央处理器110上,第二线程运行在第二中央处理器111上,可选地,在这种情况下,由第一中央处理器110通过第一线程向第一互联端口1202和第一下游端口1203分别配置对应的路由信息,由第二中央处理器111通过第二线程向第二互联端口1212和第二下游端口1213分别配置对应的路由信息。
情况B、BIOS运行在第一中央处理器110上。可选地,在这种情况下,由第一中央处理器110通过BIOS向第一互联端口1202、第一下游端口1203、第二互联端口1212和第二下游端口1213分别配置对应的路由信息。
情况C、BIOS运行在第二中央处理器111上。可选地,在这种情况下,由第二中央处理器111器通过BIOS向第一互联端口1202、第一下游端口1203、第二互联端口1212和第二下游端口1213分别配置对应的路由信息。
情况D、BIOS运行在第一中央处理器110、第二中央处理器111之外的其他中央处理器上。可选地,在这种情况下,由其他中央处理器通过BIOS器通过BIOS向第一互联端口1202、第一下游端口1203、第二互联端口1212和第二下游端口1213分别配置对应的路由信息。
值得说明的一点是,第一中央处理器110配置第一互联端口1202的情况是举例说明,在第一PCIe交换机120具有多个互联端口的情况下,第一中央处理器110例如向第一PCIe交换机120的每个互联端口分别配置对应的路由信息。如此,每个互联端口在出口方向上,都能够分别向正确的其他PCIe域的互联端口转发。每个互联端口在入口方向上,都能够分别向正确的下游端口转发。第一中央处理器110配置其他互联端口的步骤与配置第一互联端口1202的步骤同理。
值得说明的一点是,第一中央处理器110配置第一下游端口1203的情况是举例说明,在第一PCIe交换机120具有多个下游端口的情况下,第一中央处理器110例如向第一PCIe交换机120的每个下游端口分别配置对应的路由信息。如此,每个下游端口在出口方向上,都能够分别向正确的互联端口转发。每个下游端口在入口方向上,都能够分别向正确的PCIe设备转发。第一中央处理器110配置其他下游端口的步骤与配置第一下游端口1203的步骤同理。
在一些实施例中,路由信息由中央处理器运行的地址映射器执行。例如,配置的步骤包括:地址映射器获取多处理器系统中每个PCIe域的域标识以及每个PCIe域内PCIe设备的BAR空间地址,将PCIe设备的BAR空间地址与域标识之间的对应关系保存至地址窗口映射表。然后,地址映射器识别PCIe设备之间的P2P访问关系,将每一对需要互相访问的PCIe设备的地址窗口之间的映射关系,配置到下游端口和互联端口中。
BAR空间地址例如是BIOS在完成PCIe设备扫描后按照PCIe协议分配的设备空间访问地址。BAR空间地址例如是内存映射I/O(memory-mapped I/O,MMIO)地址。地址窗口映射表例如缓存在CPU内存中。
P2P访问关系例如根据业务需求确定。例如,在AI训练的场景下,比如系统具有20张AI训练卡,训练任务A需要使用8张AI训练卡,训练任务B需要使用12张AI训练卡,那为8张AI训练卡建立P2P访问关系,为12张AI训练卡建立P2P访问关系。此外,训练任务A对应的8张AI训练卡与训练任务B对应的12张AI训练卡可选地不建立P2P访问关系。
配置端口的动作例如通过写寄存器的方式实现。例如,每个PCIe端口具有对应的配置寄存器,向配置寄存器写入地址窗口之间的映射关系,使得配置寄存器存储地址窗口之间的映射关系,从而实现配置端口。
以上介绍了PCIe交换机中各个PCIe端口配置的路由信息,下面结合附图4,对跨域P2P访问流程中PCIe交换机利用配置的路由信息打通P2P访问通道的流程进行介绍。
请参考附图4,以第一PCIe设备130与第二PCIe设备131进行P2P访问的场景为例,对第一PCIe交换机120如何实现跨域P2P访问的流程进行举例说明。跨域P2P访问涉及出口方向的处理流程以及入口方向的处理流程。下面通过场景一,对第一PCIe交换机120如何执行出口方向的处理流程举例说明;通过场景二,对第一PCIe交换机120如何执行入口方向的处理流程举例说明。其中,第一PCIe设备130和第二PCIe设备131所属的PCIe域不同,第一PCIe设备130属于第一PCIe域101。第一PCIe设备130与第一PCIe交换机120的第一下游端口1203连接。第二PCIe设备131属于第二PCIe域102。第二PCIe设备131与第二PCIe交换机121的第二下游端口1213连接。
场景一、第一PCIe设备130访问第二PCIe设备131。
具体地,第一PCIe设备130生成第一访问请求,向第一PCIe交换机120发送第一访问请求,第一访问请求的源PCIe设备为第一PCIe设备130,第一访问请求的目的PCIe设备为第二PCIe域102中第二PCIe设备131。第一PCIe交换机120接收到第一访问请求后,第一PCIe交换机120的任务是将第一访问请求从第一PCIe域101发送到第二PCIe域102,即出口方向的路由转发。
在一些实施例中,PCIe交换机会执行在访问请求中添加其他PCIe域的域标识的动作。例如,第一PCIe交换机120通过第一下游端口1203接收第一访问请求之后,第一PCIe交换机120根据第一访问请求以及第一下游端口1203配置的路由信息,确定第二PCIe域102的域标识。第一PCIe交换机120在第一访问请求中添加第二PCIe域102的域标识;第一PCIe交换机120通过第一互联端口1202向第二互联端口1212发送包括域标识的第一访问请求。
具体地,第一下游端口1203配置的路由信息包括地址窗口与域标识之间的对应关系。第一PCIe交换机120确定第一访问请求的目的地址,对目的地址与第一下游端口1203配置的路由信息中的每个地址窗口进行比较,确定目的地址所属的地址窗口对应的域标识。如果确定的域标识为第二PCIe域102的域标识,表明访问请求的目的地址映射到了其他域,则第一PCIe交换机120将第二PCIe域102的域标识添加到目的地址的头部,使得第一访问请求包括域标识。之后,第一下游端口1203向第一互联端口1202发送包括域标识的第一访问请求。
通过上述方法,由于PCIe交换机在接收到对其他PCIe域中PCIe设备的访问请求时,会在访问请求中添加其他PCIe域的域标识,使得互联端口能够根据添加的域标识快速匹配该访问请求是否要访问本域内PCIe设备,简化查表动作。
在一些实施例中,在跨域P2P访问的过程中,下游端口会根据配置的路由信息寻址至对应的互联端口。以下通过实现方式A,对根据地址窗口寻址时下游端口如何寻址互联端口举例说明,通过实现方式B,对根据总线标识寻址时下游端口如何寻址互联端口举例说明。
实现方式A、第一PCIe交换机120通过第一下游端口1203接收第一访问请求之后,第一PCIe交换机120根据第一访问请求以及述第一下游端口1203配置的第九条目,确定第一互联端口1202。之后,第一下游端口1203向确定的第一互联端口1202发送第一访问请求。
其中,第九条目对应于下游端口路由信息。第九条目包括第二PCIe域102的域标识与第一互联端口1202的端口标识之间的对应关系。第一PCIe交换机120根据域标识查询第九条目,得到第一互联端口1202的端口标识,根据第一互联端口1202的端口标识确定第一互联端口1202。
例如,在附图5所示的场景下,下游端口配置了egress domain 2→fabric porta。第一PCIe交换机120根据域标识domain 2查询这条配置,得到端口标识为fabric porta,则确定fabric port a标识的互联端口a是与domain 2相连的互联端口。之后,下游端口向互联端口a发送第一访问请求。在这个例子中,egress domain 2→fabric port a是第一下游端口1203配置的第九条目。
由于第一下游端口1203配置了第九条目,第一下游端口1203能够利用第九条目,将发往第二PCIe域102的访问请求发送至第一互联端口1202,有助于访问请求从第一互联端口1202发送到第二PCIe域102,实现了PCIe跨域地址映射。
在一些实施例中,其他PCIe域的域标识是根据下游端口配置的条目查找到的。例如,第一下游端口1203配置有第十一条目,第一PCIe交换机120,根据第一访问请求以及第十一条目,确定第二PCIe域102的域标识。
其中,第十一条目对应于下游端口路由信息。第十一条目包括第二PCIe设备131的地址窗口与第二PCIe域102的域标识之间的对应关系。第十一条目是对域外地址窗口与域标识的对应关系的举例说明。第一PCIe交换机120根据第一访问请求中的目的地址,查询第十一条目。在查询第十一条目的过程中,第一PCIe交换机120根据目的地址与每个PCIe设备的地址窗口进行匹配。当匹配到第二PCIe设备131的地址窗口时,由于第二PCIe设备131的地址窗口对应于第二PCIe域102的域标识,则确定待添加的域标识是第二PCIe域102的域标识。
实现方式B、第一PCIe交换机120通过第一下游端口1203接收第一访问请求之后,第一PCIe交换机120根据第一访问请求以及述第一下游端口1203配置的第十三条目,确定第一互联端口1202。之后,第一下游端口1203向确定的第一互联端口1202发送第一访问请求。
其中,第十三条目对应于下游端口路由信息。第十三条目包括第二PCIe设备131对应的总线标识与第一互联端口1202的端口标识之间的对应关系。第一PCIe交换机120根据第二PCIe设备131对应的总线标识查询第十三条目,得到第一互联端口1202的端口标识,根据第一互联端口1202的端口标识确定第一互联端口1202。第一访问请求包括第二PCIe设备131对应的总线标识。
例如,参见附图6,下游端口配置了egress 80~83→fabric port a。第二PCIe设备131是NPU4,第二PCIe设备131对应的总线标识是80。第一PCIe交换机120根据80查询这条配置,得到端口标识为fabric port a,则确定fabric port a标识的互联端口a。之后,下游端口向互联端口a发送第一访问请求。在这个例子中egress 80~83→fabric port a是第一下游端口1203配置的第十三条目。
在一些实施例中,当互联端口接收到访问请求时,互联端口会根据配置的条目,将访问请求转发给其他PCIe域的PCIe交换机的互联端口。例如,第一PCIe交换机120的互联端口接收第一访问请求之后,第一PCIe交换机120根据第一访问请求以及第一互联端口1202配置的第一条目,确定第二互联端口1212。
在一些实施例中,第一条目对应于跨域路由信息。第一条目包括第二PCIe域102的域标识与第二互联端口1212的端口标识之间的对应关系。第一PCIe交换机120根据第二PCIe域102的域标识查询第一条目,得到第二互联端口1212的端口标识,根据第二互联端口1212的端口标识确定第二互联端口1212。
例如,参见附图5,互联端口a配置了egress domain 2→fabric port b。第一PCIe交换机120根据域标识domain 2查询这条配置,得到端口标识为fabric port b。之后,互联端口a向fabric port b标识的互联端口b发送第一访问请求。
通过在互联端口的配置中写入域标识与互联端口的端口标识之间的对应关系,以便互联端口在转发跨域P2P访问请求时,能够依据配置将访问请求透传到对方域的互联端口。
场景二、第二PCIe设备131访问第一PCIe设备130。
具体地,第二PCIe设备131生成第二访问请求,向第二PCIe交换机121发送第二访问请求,第二访问请求的源PCIe设备为第二PCIe域102中第二PCIe设备131,第二访问请求的目的PCIe设备为第一PCIe设备130。第二PCIe交换机121执行出口方向的路由转发流程,将第二访问请求转发给第一PCIe交换机120。第一PCIe交换机120接收到第二访问请求后,第一PCIe交换机120的任务是将第二访问请求发送到下挂的PCIe设备,即入口方向的路由转发。其中,第二PCIe交换机121执行的出口方向的路由转发流程与场景一下第一PCIe交换机120执行的出口方向的路由转发流程同理。
在一些实施例中,入口方向的路由转发是基于PCIe交换机内互联端口与下游端口的交互实现的。具体地,第二访问请求从第二PCIe交换机121的第二互联端口1212发送出去后,会到达第一PCIe交换机120的第一互联端口1202。第二PCIe交换机121通过第一互联端口1202接收到第二访问请求后,第二PCIe交换机121会确定第一下游端口1203。第一互联端口1202将第二访问请求发送至第一下游端口1203。第一下游端口1203接收到第二访问请求后,第一下游端口1203向第一PCIe设备130发送第二访问请求。
在一些实施例中,在跨域P2P访问的过程中,互联端口会根据配置的路由信息寻址至对应的下游端口。以下通过实现方式A,对根据地址窗口寻址时互联端口如何寻址下游端口举例说明,通过实现方式B,对根据总线标识寻址时下游端口如何寻址互联端口举例说明。
实现方式A、第一PCIe交换机120通过第一互联端口1202接收第二访问请求之后,第一PCIe交换机120根据第二访问请求以及第五条目,确定第一下游端口1203。之后,第一互联端口1202向确定的第一下游端口1203发送第一访问请求。
其中,第五条目对应于本域路由信息。第五条目包括第一PCIe设备130的地址窗口与第一下游端口1203的端口标识之间的对应关系。第二访问请求中的目的地址属于第一PCIe设备130的地址窗口。第一PCIe交换机120根据第二访问请求中的目的地址对预先配置的地址窗口进行匹配,确定第二访问请求中的目的地址属于第一PCIe设备130的地址窗口,根据第一PCIe设备130的地址窗口查询第五条目,得到第一下游端口1203的端口标识,根据第一下游端口1203的端口标识确定第一下游端口1203。
通过上述流程可见,由于互联端口预先配置了地址窗口与下游端口的端口标识之间的对应关系,当互联端口接收到入口方向的访问请求(即对方域的互联端口发送的对域内PCIe设备的访问请求)时,互联端口能够根据访问请求中携带的地址,将访问请求转发到对应的下游端口,进而路由到对应的PCIe设备上。
实现方式B、第一PCIe交换机120通过第一互联端口1202接收第二访问请求之后,第一PCIe交换机120根据第二访问请求以及第一互联端口1202配置的第七条目,确定第一下游端口1203。之后,第一互联端口1202向确定的第一下游端口1203发送第一访问请求。
其中,第七条目对应于本域路由信息。第七条目包括第一PCIe设备130对应的总线标识与第一下游端口1203的端口标识之间的对应关系。第一PCIe交换机120根据第二访问请求以及第七条目,确定第一下游端口1203。第二访问请求包括第一PCIe设备130对应的总线标识。
在一些实施例中,将入口方向的访问请求转发给域内的哪个PCIe设备是根据下游端口的配置确定的。
在根据地址窗口寻址时,下游端口例如配置有PCIe设备的地址窗口与PCIe设备的标识之间的对应关系。例如,第一下游端口1203配置有第十五条目,第一PCIe交换机120接收到第二访问请求时,根据第二访问请求以及第一下游端口1203配置的第十五条目,确定第一PCIe设备130。其中,第十五条目为地址路由信息。第十五条目包括第一PCIe设备130的地址窗口与第一PCIe设备130的标识之间的对应关系。具体地,第一PCIe交换机120从第二访问请求获得目的地址,根据目的地址查询第一下游端口1203的配置,确定目的地址命中第十五条目中的地址窗口,从第十五条目获得第一PCIe设备130的标识,从而确定第一PCIe设备130。例如,参见附图5,下游端口的配置包括地址窗口与AI训练卡之间的对应关系。比如,下游端口的配置包括ingress window w0→NPU0。如果接收的访问请求的目的地址属于window w0,PCIe交换机1查询下游端口的配置后,会通过下游端口DP0将访问请求转发给NPU0。通过这种方式,下游端口在处理入口方向的访问请求时,能够根据预先配置的地址条目以及访问请求的目的地址,自动寻址到指定的PCIe设备,从而将收到的访问请求转发至PCIe设备。
在根据总线标识寻址时,下游端口例如配置有PCIe设备对应的总线标识与PCIe设备的标识之间的对应关系。例如,第一下游端口1203配置有第十七条目,第一PCIe交换机120接收到第二访问请求时,根据第二访问请求以及第一下游端口1203配置的第十七条目,确定第一PCIe设备130。其中,第十七条目为ID路由信息。第十七条目包括第一PCIe设备130对应的总线标识与第一PCIe设备130的标识之间的对应关系。具体地,第一PCIe交换机120从第二访问请求获得目的总线的总线标识,根据目的总线的总线标识查询第一下游端口1203的配置,确定目的总线的总线标识命中第十七条目中的总线标识,从第十七条目获得第一PCIe设备130的标识,从而确定第一PCIe设备130。例如,参见附图6,下游端口的配置包括总线标识与AI训练卡之间的对应关系。比如,下游端口的配置包括ingress 10→NPU0。如果接收的访问请求的目的总线的总线标识为10,PCIe交换机1查询下游端口的配置后,会通过下游端口DP0将访问请求转发给与总线10相连的NPU0。通过这种方式,下游端口在处理入口方向的访问请求时,能够根据预先配置的ID条目以及访问请求的目的总线的总线标识,自动寻址到指定的PCIe设备,从而将收到的访问请求转发至PCIe设备。
通过向PCIe端口配置路由信息,由PCIe交换机利用配置的路由信息转发访问请求,从而在多处理器系统中构建了P2P通道以及H2D通道。以下通过(I)至(II),对本实施例系统架构中的P2P通道以及H2D通道进行举例介绍。
(I)P2P通道
多处理器系统包括多条P2P通道。P2P通道是指不同PCIe设备之间的通道。P2P通道用于传输不同PCIe设备之间的访问请求。P2P通道的起点是一个PCIe设备(如一个AI训练卡),P2P通道的终点是另一个PCIe设备(如另一个AI训练卡)。P2P通道基于PCIe交换机建立。P2P通道包括域内P2P通道或者跨域P2P通道中的至少一项。
(I-1)域内P2P通道
域内P2P通道是指位于同一个PCIe域内的P2P通道。域内P2P通道用于传输同一个PCIe域内不同PCIe设备之间的访问请求。域内P2P通道的起点和终点分别是同一个PCIe域内的两个PCIe设备。域内P2P通道基于域内的PCIe交换机建立。在附图4示出的双CPU系统中,域内P2P通道包括第一域内P2P通道和第二域内P2P通道。
第一域内P2P通道是指第一PCIe域101内的不同PCIe设备之间的域内P2P通道。第一域内P2P通道可表示为第一PCIe域中的一个PCIe设备→第一PCIe交换机120→第一PCIe域中的另一PCIe设备。第一域内P2P通道的起点和终点分别是第一PCIe域101内的两个PCIe设备。第一域内P2P通道通过第一PCIe交换机120建立。第一PCIe域中的一个PCIe设备发送访问请求时,第一PCIe交换机120会将访问请求转发至另一PCIe设备130,使得访问请求经过第一域内P2P通道传输至第一PCIe域中的另一个PCIe设备。例如,参见附图5,NPU0→PCIe交换机1→NPU1这条通道是对第一H2D通道的举例说明。
第二域内P2P通道是指第二PCIe域102内的不同PCIe设备之间的域内P2P通道。第二域内P2P通道可表示为第二PCIe域中的一个PCIe设备→第二PCIe交换机121→第二PCIe域中的另一PCIe设备130。第二域内P2P通道的起点和终点分别是第二PCIe域102内的两个PCIe设备。第二域内P2P通道通过第二PCIe交换机121建立。第二PCIe域中的一个PCIe设备发送访问请求时,第二PCIe交换机121会将访问请求转发至第二PCIe域中的另一PCIe设备,使得访问请求经过第二域内P2P通道传输至第二PCIe域中的另一PCIe设备。例如,参见附图5,NPU0→PCIe交换机1→NPU1这条通道是对第二H2D通道的举例说明。
(I-2)跨域P2P通道
跨域P2P通道是指不同PCIe域PCIe设备之间的P2P通道。跨域P2P通道用于传输一个PCIe域内的PCIe设备到另一个PCIe域内的PCIe设备的访问请求。跨域P2P通道的起点是一个PCIe域内的PCIe设备,跨域P2P通道的起点是另一个PCIe域内的PCIe设备。例如,参见附图5,NPU0→PCIe交换机1→PCIe交换机2→NPU4这条通道是对跨域P2P通道的举例说明。跨域P2P通道基于多个PCIe域内的PCIe交换机建立。PCIe交换机通过将域内PCIe设备的访问请求转发至其他PCIe域内的PCIe交换机,使得访问请求能够跨域传输。
参见附图4,以第一PCIe域101向第二PCIe域102跨域传输为例,跨域P2P通道包括第一PCIe设备130→第一PCIe交换机120→第二PCIe交换机121→第二PCIe设备131。当第一PCIe设备130向PCIe设备131发起访问请求时,第一PCIe交换机120会将访问请求转发至第二PCIe交换机121,使得访问请求从第一PCIe域101传输至第二PCIe域102。第二PCIe交换机121会将访问请求转发至第二PCIe设备131,第二PCIe设备131从第二PCIe交换机121接收访问请求。
参见附图4,以第二PCIe域102向第一PCIe域101跨域传输为例,跨域P2P通道包括第二PCIe设备131→第二PCIe交换机121→第一PCIe交换机120→第一PCIe设备130。当第二PCIe设备131向第一PCIe设备130发起访问请求时,第二PCIe交换机121会将访问请求转发至第一PCIe交换机120,使得访问请求从第二PCIe域102传输至第一PCIe域101。第一PCIe交换机120会将访问请求转发至第一PCIe设备130,第一PCIe设备130从第一PCIe交换机120接收访问请求。
通过上述系统架构提供的多条P2P通道,能够显著提高不同PCIe设备之间的P2P通信性能,下面对实现这一技术效果的技术原理进行介绍。
一方面,系统100或系统200中,由于跨域P2P通道是基于不同PCIe域的PCIe交换机建立的,跨域P2P的访问请求由多个PCIe交换机负责转发,因此跨域P2P的访问请求在转发时能够充分利用PCIe交换机的高速传输能力,减少跨域P2P的访问请求的传输时延。并且,由于跨域P2P的访问请求的传输不依赖于CPU的转发,避免CPU负载较重影响跨域P2P通信性能的情况,提高跨域P2P通信的可靠性和稳定性。例如,对比附图2和附图5,在附图2所示的方式中,由于PCIe交换机1下的NPU访问PCIe交换机2下的NPU时,依赖于CPU1和CPU2进行转发,那么一旦CPU1或CPU2负载较重,就会影响NPU之间的P2P通信性能。而在附图5所示的方式中,由于PCIe交换机1下的NPU访问PCIe交换机2下的NPU,由PCIe交换机1和PCIe交换机2负责转发,而不依赖于CPU1和CPU2,因此不同PCIe交换机下的NPU互相访问时不会由于CPU1或CPU2负载高而受到影响,保证了PCIe交换机1与PCIe交换机2下的NPU互相访问时通信性能的可靠性。
另一方面,系统100或系统200中,由于转发跨域P2P的访问请求的任务从CPU卸载至多个PCIe交换机,从而减少了CPU的负载。
尤其是,将该方法应用在单机多卡的AI训练场景时,由于该方法保证服务器中不同AI训练卡的P2P通信性能是一致的,实现了AI训练卡的P2P通信性能均衡,有助于不同AI训练卡通过P2P通道快速进行参数同步。
(II)H2D通道
多处理器系统包括多条H2D通道。H2D通道是指中央处理器与PCIe设备之间的通道。H2D通道用于传输中央处理器对PCIe设备的访问请求。H2D通道的起点例如是中央处理器。H2D通道的终点例如是PCIe设备。H2D通道基于PCIe交换机建立。在附图4示出的双CPU系统中,H2D通道包括第一H2D通道和第二H2D通道。
第一H2D通道是指第一中央处理器110与第一PCIe设备130之间的H2D通道。第一H2D通道可表示为第一中央处理器110→第一PCIe交换机120→第一PCIe设备130。第一H2D通道的起点是第一中央处理器110。第一H2D通道的终点是第一PCIe设备130。第一H2D通道基于第一PCIe交换机120建立。当第一中央处理器110发送访问请求时,第一PCIe交换机120会将访问请求转发至第一PCIe设备130,使得访问请求经过第一H2D通道传输至第一PCIe设备130。例如,参见附图5,附图5中CPU1→PCIe交换机1→NPU0这条通道是对第一H2D通道的举例说明。
第二H2D通道是指第二中央处理器111与第二PCIe设备131之间的H2D通道。第二H2D通道可表示为第二中央处理器111→第二PCIe交换机121→第二PCIe设备131。第二H2D通道的起点是第二中央处理器111。第二H2D通道的终点是第二PCIe设备131。第二H2D通道基于第二PCIe交换机121建立。当第二中央处理器111发送访问请求时,第二PCIe交换机121会将访问请求转发至第二PCIe设备131,使得访问请求经过第二H2D通道传输至第二PCIe设备131。例如,参见附图5,CPU2→PCIe交换机2→NPU4这条通道是对第二H2D通道的举例说明。
通过上述系统架构提供的多条H2D通道,能够显著提高多个CPU的H2D通信性能,下面对实现这一技术效果的技术原理进行介绍。
一方面,系统100或系统200中,由于不同CPU的H2D通道是通过不同PCIe交换机建立的,不同CPU的访问请求会通过不同的PCIe交换机转发,因此不同CPU进行H2D访问时能够利用不同PCIe交换机提供的带宽资源和处理资源,从而避免不同CPU进行H2D访问所需的带宽资源和处理资源互相占用的情况,保证每个CPU进行H2D访问所需的带宽资源和处理资源的均衡,使得多个CPU的H2D通信性能保持均衡。例如,对比附图1和附图5,在附图5所示的方式中,由于CPU1向NPU的访问请求会经过PCIe交换机1,CPU2向NPU的访问请求也会经过PCIe交换机1,CPU2和CPU1在进行H2D访问时,都要占用PCIe交换机1的带宽资源和处理资源,导致单个CPU进行H2D访问所需的资源不足。而在附图1所示所示的方式中,由于CPU1向NPU的访问请求经过PCIe交换机1,CPU2向NPU的访问请求会经过PCIe交换机2,CPU2和CPU1在进行H2D访问时使用不同PCIe交换机提供的带宽资源和处理资源,不会互相影响,因此CPU2访问PCIe设备的H2D通信性能与CPU1访问PCIe设备的H2D通信性能会保持一致。
另一方面,系统100或系统200中,由于不同H2D通道是相互独立的,每个CPU的访问请求无需依赖于其他PCIe域的CPU的转发,因此避免一个CPU单点故障导致其他CPU无法进行H2D访问的情况,从而提高H2D通信的可靠性;并且由于将转发H2D访问请求的任务基本卸载至PCIe交换机上,免去CPU为其他PCIe域的CPU转发H2D访问请求的负载。
例如,对比附图1和附图5,在附图1所示的方式中,由于CPU1负责为CPU2转发H2D的访问请求,会导致CPU1负载更重,另外一旦CPU1故障或者CPU1与CPU2之间的链路故障,可能导致CPU2无法进行H2D访问,可靠性不足。而在附图5所示的方式中,由于CPU2进行H2D的访问请求由PCIe交换机2负责转发,无需经过CPU1,因此保证了CPU1与CPU2之间的负载均衡,并且避免由于CPU1单点故障导致CPU2无法进行H2D访问的情况,提高CPU2的H2D通信的可靠性。
综上,本实施例提供的系统以及方法中,由于对PCIe交换机的各种端口分别配置了每个PCIe域对应的路由信息,从而实现了PCIe跨域地址映射,能够利用PCIe交换机的互联以及配置的路由信息,打通多个独立的PCIe拓扑树之间的跨域P2P通道,保证PCIe跨域P2P访问与域内P2P访问性能相当。
值得说明的一点是,以上列举的各种路由信息是针对一个PCIe交换机通过一个互联端口与另一个PCIe交换机互联的情况的举例说明,当一个PCIe交换机通过多个互联端口分别和多个PCIe域中的PCIe交换机互联时,可选地,系统采用与以上列举的各种路由信息同理的方式,为每个互联端口以及每个下游端口配置类似的路由信息。比如,在附图5所示的场景中,可选地,PCIe交换机1不仅包含互联端口a,还包括互联端口c,互联端口c和附图5未示出的PCIe域3的PCIe交换机3的互联端口d相连。在这种情况下,与跨域路由信息(如第一条目)同理,互联端口c例如配置有egress domain 3→fabric port d;与下游端口路由信息(第九条目)同理,下游端口DP0至DP3例如还配置有egress domain 3→fabric port ac。
依次类推,本领域技术人员能够理解,以上描述的路由信息的配置方案能够作为多CPU、多PCIe设备架构下的实现跨域P2P访问的通用解决方案。例如,在CPU2下挂的PCIe交换机2、CPU3下挂的PCIe交换机3……CPUi下挂的PCIe交换机i……CPUn下挂的PCIe交换机n互联,组成n个PCIe域来协同处理任务时,通过向PCIe交换机2、PCIe交换机3、PCIe交换机i、PCIe交换机n中每个PCIe交换机的互联端口以及下游端口分别配置对应的路由信息,能够打通PCIe域1、PCIe域2……PCIe域i……PCIe域n中任意两个或两个以上的PCIe域之间的跨域P2P通道。这样,当需要协同大量CPU以及大量PCIe设备的算力执行AI训练或者其他计算任务时,该方法有助于访问请求在大量PCIe域之间灵活地跨域传输,从而有助于大量CPU以及大量PCIe设备之间高速进行数据同步,并满足不同CPU以及不同PCIe设备负载对称的需求。
以下对如何将多处理器系统应用到AI训练的场景举例说明。
在一些实施例中,多处理器系统应用在单机多卡进行AI训练的场景。多卡是指多处理器系统具有多个AI训练卡。在一个示例性场景中,按照业务规划,将第一数量的CPU以及第二数量的AI训练卡通过PCIe交换机连接,通过本实施例提供的配置方式,组成对称负载的训练系统,通过对称负载的训练系统进行训练。例如,参见附图5,将2个CPU以及8个NPU通过2个PCIe交换机连接,组成双CPU、8个节点的场景。
可选地,多处理器系统与线程绑定CPU核的技术搭配应用。具体地,为每个PCIe设备分配对应的线程,并建立线程与CPU核之间的绑定关系,满足非统一内存访问架构(NonUniform Memory Access Architecture,NUMA)亲和性要求。在多处理器系统执行任务时,线程会在绑定的CPU核上运行,不会被调度到其他的CPU核上。各线程负载完全对称,从而基本保持同步开启、同步完成,避免长时间相互等待,达到多处理器系统效率最大化。其中,当应用在AI训练的场景时,线程例如为训练线程。
通过将本实施例提供的方法应用在AI训练场景,能够使得AI训练卡具备高速的P2P通信能力,并且,不同PCIe交换机下挂的AI训练卡能够通过跨域P2P通道快速进行参数同步,从而加速AI训练任务的执行。此外,由于不同PCIe设备的跨域P2P访问是通过PCIe交换机实现的,而不依赖于P2P通信的专用总线,一方面,免去了新增P2P通信的专用总线带来的成本,因此实现成本低。另一方面,解决了PCIe设备必须具备接入P2P通信的专用总线的接口才能跨域P2P访问的局限性问题,能够应用在各种PCIe设备上,因此应用场景广泛,实用性强。此外,由于该方法保证服务器中不同CPU对AI训练卡的H2D通信性能是相等的,实现了多个CPU的H2D通信性能均衡,有助于每个CPU与AI训练卡更快速地进行数据拷贝与消息同步等训练任务。
在一些实施例中,还提供了一种计算机设备,该计算机设备包括附图4所示的系统100、附图5所示的系统200或者附图6所示的系统300。该计算机设备例如为服务器、主机或个人计算机。
在一些实施例中,提供了一种配置多处理器系统的装置,该装置用于配置附图4所示的系统100、附图5所示的系统200或者附图6所示的系统300。配置多处理器系统的装置包括至少一个单元。在一些实施例中,配置多处理器系统的装置中的单元通过软件实现,第四方面提供的装置中的单元是程序模块。在另一些实施例中,配置多处理器系统的装置中的单元通过硬件或固件实现。配置多处理器系统的装置的具体细节可参见上述附图4所示的系统100、附图5所示的系统200、附图6所示的系统300、附图8所示的软件400、附图5所示的方法500等对应的介绍,此处不再赘述。
在一些实施例中,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令由处理器读取以配置附图4所示的系统100、附图5所示的系统200或者附图6所示的系统300。
在一些实施例中,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。多处理器系统的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令以配置附图4所示的系统100、附图5所示的系统200或者附图6所示的系统300。
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参见前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例中方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。例如,在不脱离各种示例的范围的情况下,第一PCIe交换机可以被称为第二PCIe交换机,并且类似地,第二PCIe交换机可以被称为第一PCIe交换机。第一PCIe交换机和第二PCIe交换机都可以是PCIe交换机,并且在某些情况下,可以是单独且不同的PCIe交换机。
本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上,例如,多个PCIe设备是指两个或两个以上的PCIe设备。本文中术语“系统”和“网络”经常可互换使用。
还应理解,术语“如果”可被解释为意指“当...时”(“when”或“upon”)或“响应于确定”或“响应于检测到”。类似地,根据上下文,短语“如果确定...”或“如果检测到[所陈述的条件或事件]”可被解释为意指“在确定...时”或“响应于确定...”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”。
以上描述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机程序指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例中的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。
该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机程序指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,DVD)、或者半导体介质(例如固态硬盘)等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (27)

1.一种多处理器系统,其特征在于,所述系统包括第一高速外围组件互联PCIe域和第二PCIe域;
所述第一PCIe域包括第一处理器、与所述第一处理器连接的第一PCIe交换机以及与所述第一PCIe交换机连接的第一PCIe设备;
所述第二PCIe域包括第二处理器、与所述第二处理器连接的第二PCIe交换机以及与所述第二PCIe交换机连接的第二PCIe设备,所述第一PCIe交换机与所述第二PCIe交换机之间通过总线通信;
当所述第一处理器进行枚举时,所述第二PCIe设备不会被所述第一处理器发现;
所述第一处理器或者所述第一PCIe设备通过所述总线访问所述第二PCIe设备。
2.根据权利要求1所述的系统,其特征在于,所述第一PCIe交换机包含第一互联端口,所述第一互联端口用于与所述第二PCIe交换机通信,所述第一互联端口被配置为在所述第一处理器枚举时拒绝所述第一处理器的扫描指令。
3.根据权利要求2所述的系统,其特征在于,所述第一PCIe交换机包括固件,所述固件用于将所述第一互联端口配置为在所述第一处理器枚举时拒绝所述第一处理器的所述扫描指令。
4.根据权利要求2所述的系统,其特征在于,所述系统还包括基本输入输出系统BIOS,所述BIOS用于将所述第一互联端口配置为在所述第一处理器枚举时拒绝所述第一处理器的所述扫描指令。
5.根据权利要求2所述的系统,其特征在于,所述系统还包括基板管理控制器BMC;
所述BMC,用于将所述第一互联端口配置为在所述第一处理器枚举时拒绝所述第一处理器的所述扫描指令。
6.根据权利要求2-5任一项所述的系统,其特征在于,所述第二PCIe交换机包含第二互联端口,所述第二互联端口用于与所述第一PCIe交换机通信;
所述第一互联端口配置有跨域路由信息,所述第一处理器或者所述第一PCIe设备通过所述跨域路由信息访问所述第二PCIe设备,所述跨域路由信息指示所述第二PCIe设备的地址信息与所述第二互联端口的端口标识的对应关系。
7.根据权利要求6所述的系统,其特征在于,所述跨域路由信息包括:
所述第二PCIe域的域标识与所述第二互联端口的端口标识之间的对应关系,以及所述第二PCIe设备的地址信息与所述第二PCIe域的域标识之间的对应关系。
8.根据权利要求6或7所述的系统,其特征在于,所述第一PCIe交换机包括处理单元,所述跨域路由信息存储在所述处理单元中。
9.根据权利要求2-8任一项所述的系统,其特征在于,
所述第一PCIe交换机包括第一下游端口,所述第一下游端口与所述第一PCIe设备连接;
所述第一互联端口中配置本域路由信息,所述本域路由信息包括所述第一PCIe设备的地址信息与所述第一下游端口的端口标识之间的对应关系。
10.根据权利要求2-9任一项所述的系统,其特征在于,所述第一PCIe交换机包括第一下游端口,所述第一下游端口中配置下游端口路由信息,所述下游端口路由信息指示所述第二PCIe设备的地址信息与所述第一互联端口的端口标识之间的对应关系。
11.根据权利要求10所述的系统,其特征在于,所述下游端口路由信息包括所述第二PCIe域的域标识与所述第一互联端口的端口标识之间的关系,以及所述第二PCIe设备的地址信息与所述第二PCIe域的域标识之间的对应关系。
12.根据权利要求6-11任一项所述的系统,其特征在于,
所述第一PCIe设备的地址信息包括所述第一PCIe设备的地址窗口或总线标识。
13.根据权利要求2-12任一项所述的系统,其特征在于,所述第一PCIe交换机还包括第一主机端口,所述第一PCIe交换机通过所述第一主机端口与所述第一处理器连接,其中,
所述第一主机端口与所述第一互联端口不直接连接。
14.一种配置多处理器系统的方法,其特征在于,所述方法包括:
提供第一高速外围组件互联PCIe域和第二PCIe域,其中,所述第一PCIe域包括第一处理器、与所述第一处理器连接的第一PCIe交换机以及与所述第一PCIe交换机以及与所述第一PCIe交换机连接的第一PCIe设备,所述第二PCIe域包括第二处理器、与所述第二处理器连接的第二PCIe交换机以及与所述第二PCIe交换机连接的第二PCIe设备,所述第一PCIe交换机与所述第二PCIe交换机之间通过总线通信;
配置所述第一PCIe域和所述第二PCIe域,使得当所述第一处理器进行枚举时,所述第二PCIe设备不会被所述第一处理器发现,其中,所述第一处理器或者所述第一PCIe设备通过所述总线访问所述第二PCIe设备。
15.根据权利要求14所述的方法,其特征在于,所述第一PCIe交换机包含第一互联端口,所述第一互联端口用于与所述第二PCIe交换机通信,
配置所述第一PCIe域和所述第二PCIe域,包括:
配置所述第一互联端口,使得所述第一互联端口在所述第一处理器枚举时拒绝所述第一处理器的扫描指令。
16.根据权利要求15所述的方法,其特征在于,所述第一PCIe交换机包括固件,所述配置所述第一互联端口的操作由所述固件执行。
17.根据权利要求15所述的方法,其特征在于,所述配置所述第一互联端口的操作由基本输入输出系统BIOS执行。
18.根据权利要求15所述的方法,其特征在于,所述配置所述第一互联端口的操作由基板管理控制器BMC执行。
19.根据权利要求15-18任一项所述的方法,其特征在于,所述第二PCIe交换机包含第二互联端口,所述第二互联端口用于与所述第一PCIe交换机通信;
所述配置所述第一PCIe域和所述第二PCIe域,包括:
为所述第一互联端口配置跨域路由信息,所述第一处理器或者所述第一PCIe设备通过所述跨域路由信息访问所述第二PCIe设备,所述跨域路由信息用于指示所述第二PCIe设备的地址信息与所述第二互联端口的端口标识的对应关系。
20.根据权利要求19所述的方法,其特征在于,所述跨域路由信息包括:
所述第二PCIe域的域标识与所述第二互联端口的端口标识之间的对应关系,以及所述第二PCIe设备的地址信息与所述第二PCIe域的域标识之间的对应关系。
21.根据权利要求19或20所述的方法,其特征在于,所述第一PCIe交换机包括处理单元,所述跨域路由信息存储在所述处理单元中。
22.根据权利要求15-21任一项所述的方法,其特征在于,
所述第一PCIe交换机包括第一下游端口,所述第一下游端口与所述第一PCIe设备连接;
所述配置所述第一PCIe域和所述第二PCIe域,包括:
为所述第一互联端口配置本域路由信息,所述本域路由信息包括所述第一PCIe设备的地址信息与所述第一下游端口的端口标识之间的对应关系。
23.根据权利要求15-22任一项所述的方法,其特征在于,所述第一PCIe交换机包括第一下游端口,
所述配置所述第一PCIe域和所述第二PCIe域,包括:
为所述第一下游端口配置下游端口路由信息,所述下游端口路由信息指示所述第二PCIe设备的地址信息与所述第一互联端口的端口标识之间的对应关系。
24.根据权利要求23所述的方法,其特征在于,所述下游端口路由信息包括所述第二PCIe域的域标识与所述第一互联端口的端口标识之间的关系,以及所述第二PCIe设备的地址信息与所述第二PCIe域的域标识之间的对应关系。
25.根据权利要求19-24任一项所述的方法,其特征在于,
所述第一PCIe设备的地址信息包括所述第一PCIe设备的地址窗口或总线标识。
26.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,当所述至少一条指令在所述计算机设备上执行时,使得所述计算机设备执行如权利要求14至权利要求25中任一项所述的方法。
27.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,当所述至少一条指令在计算机设备上执行时,使得所述计算机设备执行如权利要求14至权利要求25中任一项所述的方法。
CN202010899009.6A 2020-07-10 2020-08-31 多处理器系统及配置多处理器系统的方法 Pending CN113986800A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/CN2021/102235 WO2022007644A1 (zh) 2020-07-10 2021-06-25 多处理器系统及配置多处理器系统的方法
EP21838049.1A EP4167101A4 (en) 2020-07-10 2021-06-25 MULTIPROCESSOR SYSTEM AND METHOD FOR CONFIGURATION OF A MULTIPROCESSOR SYSTEM
US18/151,705 US20230161726A1 (en) 2020-07-10 2023-01-09 Multiprocessor System and Method for Configuring Multiprocessor System

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010660272X 2020-07-10
CN202010660272 2020-07-10

Publications (1)

Publication Number Publication Date
CN113986800A true CN113986800A (zh) 2022-01-28

Family

ID=79731613

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010899009.6A Pending CN113986800A (zh) 2020-07-10 2020-08-31 多处理器系统及配置多处理器系统的方法

Country Status (1)

Country Link
CN (1) CN113986800A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116028430A (zh) * 2023-03-28 2023-04-28 飞腾信息技术有限公司 一种pcie设备扫描方法及片上系统
EP4167101A4 (en) * 2020-07-10 2023-11-08 Huawei Technologies Co., Ltd. MULTIPROCESSOR SYSTEM AND METHOD FOR CONFIGURATION OF A MULTIPROCESSOR SYSTEM

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100088761A1 (en) * 2008-10-02 2010-04-08 International Business Machines Corporation Cross-domain access prevention
CN104285218A (zh) * 2013-12-31 2015-01-14 华为技术有限公司 一种扩展PCIe总线域的方法和装置
CN105068953A (zh) * 2014-05-07 2015-11-18 Hgst荷兰公司 用于对等高速外围组件互联存储传输的系统和方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100088761A1 (en) * 2008-10-02 2010-04-08 International Business Machines Corporation Cross-domain access prevention
CN104285218A (zh) * 2013-12-31 2015-01-14 华为技术有限公司 一种扩展PCIe总线域的方法和装置
CN105068953A (zh) * 2014-05-07 2015-11-18 Hgst荷兰公司 用于对等高速外围组件互联存储传输的系统和方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4167101A4 (en) * 2020-07-10 2023-11-08 Huawei Technologies Co., Ltd. MULTIPROCESSOR SYSTEM AND METHOD FOR CONFIGURATION OF A MULTIPROCESSOR SYSTEM
CN116028430A (zh) * 2023-03-28 2023-04-28 飞腾信息技术有限公司 一种pcie设备扫描方法及片上系统

Similar Documents

Publication Publication Date Title
US10419550B2 (en) Automatic service function validation in a virtual network environment
US11716292B2 (en) System and method for supporting scalable representation of switch port status in a high performance computing environment
US8103810B2 (en) Native and non-native I/O virtualization in a single adapter
US9742671B2 (en) Switching method
US7707465B2 (en) Routing of shared I/O fabric error messages in a multi-host environment to a master control root node
US8346997B2 (en) Use of peripheral component interconnect input/output virtualization devices to create redundant configurations
US8095701B2 (en) Computer system and I/O bridge
US7493425B2 (en) Method, system and program product for differentiating between virtual hosts on bus transactions and associating allowable memory access for an input/output adapter that supports virtualization
US7571273B2 (en) Bus/device/function translation within and routing of communications packets in a PCI switched-fabric in a multi-host environment utilizing multiple root switches
US8225005B2 (en) Use of peripheral component interconnect input/output virtualization devices to create high-speed, low-latency interconnect
US20070136458A1 (en) Creation and management of ATPT in switches of multi-host PCI topologies
US20080235431A1 (en) Method Using a Master Node to Control I/O Fabric Configuration in a Multi-Host Environment
CN111404753B (zh) 一种扁平网络配置方法、计算机设备及存储介质
CN110809760B (zh) 资源池的管理方法、装置、资源池控制单元和通信设备
US10841195B2 (en) System and method for controlled re-cabling and link testing for switches and switch ports in a high performance computing network
US11086703B2 (en) Distributed input/output virtualization
CN113986800A (zh) 多处理器系统及配置多处理器系统的方法
US11262824B2 (en) System and method for coordinated link up handling following switch reset in a high performance computing network
US20230161726A1 (en) Multiprocessor System and Method for Configuring Multiprocessor System
US9760513B2 (en) Low latency efficient sharing of resources in multi-server ecosystems
CN108351802B (zh) 计算机数据处理系统和用于虚拟机通信的基于通信流量的优化的方法
US10037257B1 (en) Examining local hardware using a location-aware peripheral device

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination