CN116414759B - 计算机交换***及地址分配、枚举、数据分发方法 - Google Patents

计算机交换***及地址分配、枚举、数据分发方法 Download PDF

Info

Publication number
CN116414759B
CN116414759B CN202310681563.0A CN202310681563A CN116414759B CN 116414759 B CN116414759 B CN 116414759B CN 202310681563 A CN202310681563 A CN 202310681563A CN 116414759 B CN116414759 B CN 116414759B
Authority
CN
China
Prior art keywords
port
pcie
address
module
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310681563.0A
Other languages
English (en)
Other versions
CN116414759A (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.)
Shenzhen Zhongan Chenhong Technology Co ltd
Original Assignee
Shenzhen Zhongan Chenhong Technology 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 Shenzhen Zhongan Chenhong Technology Co ltd filed Critical Shenzhen Zhongan Chenhong Technology Co ltd
Priority to CN202310681563.0A priority Critical patent/CN116414759B/zh
Publication of CN116414759A publication Critical patent/CN116414759A/zh
Application granted granted Critical
Publication of CN116414759B publication Critical patent/CN116414759B/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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • 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
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Bus Control (AREA)

Abstract

本申请涉及计算机体系结构领域,公开了一种计算机交换***及地址分配、枚举、数据分发方法,该计算机交换***,一方面,通过设置地址转换模块将处理器的地址转换为外设地址,并设置数据分发模块将外设地址转换为交换器或端点设备的地址,以及通过地址转换模块将交换器或端点设备的地址转换为外设地址,本申请能够实现处理器与交换器或端点设备的交换功能;另一方面,通过交换模块与PCIe上行端口和多个PCIe下行端口连接,从而实现端点设备的扩展,提高***的灵活性,并且,交换模块连接多个外设设备,从而实现外设设备的PCIe化。

Description

计算机交换***及地址分配、枚举、数据分发方法
技术领域
本申请实施方式涉及计算机体系结构领域,特别是涉及一种计算机交换***及地址分配、枚举、数据分发方法。
背景技术
***器件互联总线(Peripheral Component Interconnect Express,PCIe)是一种高速串行计算机扩展总线标准,用于实现处理器和外部设备的连接,这些外部设备被称为PCIe设备。
一个PCIe总线域通常由根复合体(Root Complex)、交换器(PCIe Switch)、端点设备(Endpoint)和桥(PCIe bridge)组成。根复合体用于处理器与输入/输出I/O设备之间的连接,交换器支持在不同端点间进行对等通信,桥用于将PCIe与其它PCI总线标准(如PCI/PCI-X)相连,端点设备即PCIe端点设备,例如PCIe接口网卡设备、串口卡设备和存储卡设备等。
目前,在现有的计算机***架构下,交换器(PCIe Switch)对主机的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是本申请实施例提供的一种交换模块的结构示意图;
图2是本申请实施例提供的一种计算机交换***的结构示意图;
图3是本申请实施例提供的一种地址分配方法的流程示意图;
图4是本申请实施例提供的一种地址分配的示意图;
图5是本申请实施例提供的一种PCIe下行端口的地址转换的示意图;
图6是本申请实施例提供的一种外设设备的地址分配的示意图;
图7是本申请实施例提供的一种枚举方法的流程示意图;
图8是本申请实施例提供的另一种计算机交换***的结构示意图;
图9是本申请实施例提供的一种数据分发方法的流程示意图;
图10是本申请实施例提供的一种计算机交换***的结构示意图。
附图标号说明:
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
此外,下面所描述的本申请各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
除非另有定义,本说明书所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本说明书中在本申请的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是用于限制本申请。本说明书所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
目前,计算机***架构通常通过交换器(PCIe Switch)来扩展标准的PCIe设备,但是,由于受限于PCIe总线,导致***的灵活性不足,基于此,本申请实施例提供一种计算机交换***及地址分配、枚举、数据分发方法,以实现端点设备的扩展,提高***的灵活性。
对本发明进行详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释:
(1)高级可扩展接口(Advanced extensible Interface,AXI)是ARM公司提出的AMBA(Advance Microcontroller Bus Architecture)协议中最重要的部分,用于描述主设备和从设备之间的数据传输方式。AXI总线是一种面向高性能、高带宽、低延迟的片内总线,广泛用作基于ARM高性能处理器的片上***(System On Chip,SOC)芯片的总线***,其支持主设备和从设备之间的点对点连接。
(2)交换器,即Switch,是一种用于连接不同的服务器或网络设备,将它们集成到单一的***中的协议。在虚拟化和云计算环境中,使用Switch可以将多个物理主机和虚拟机组成一个逻辑主机,从而实现资源的共享和管理。例如,当两台具有高速互联能力的显卡、内存和处理器组合在一起时,需要使用Switch来协调它们之间的通信,使得一台显卡或处理器出现故障,另一台也能够继续正常工作。
(3)根复合体(Root Complex,RC),PCIe体系结构中的一个重要的组成部件,是处理器(CPU)和PCIe总线直接的接口。根复合体用于完成存储器域到PCIe总线域的地址转换。例如,根复合体将来自处理器的请求(request)转化成PCIe的4种不同的请求,分别为configuration, Memory,I/O,Message,并发送给与该根复合体连接的设备。
下面结合说明书附图具体阐述本申请的技术方案:
实施例一
请参阅图1,图1是本申请实施例提供的一种交换模块的结构示意图;
如图1所示,该交换模块的结构,包括:
多个主机设备;
多个主机设备端口,每一个主机设备端口一一对应一个主机设备;
多个从机设备;
多个从机设备端口,每一个从机设备端口一一对应一个从机设备;
交换模块;
其中,多个主机设备端口以及多个从机设备端口通过交换模块实现交叉连接。
在本申请实施例中,交换模块包括AXI交换模块(Advanced extensibleInterface,AXI)、AHB交换模块(Advanced High-performance Bus,AHB)、ASB交换模块(Advanced System Bus,ASB)、APB交换模块(Advance Peripheral Bus,APB)、Wishbone交换模块,例如:该AXI交换模块包括交叉路由连接模块,交叉连接路由模块包括交叉开关矩阵或纵横式交换矩阵(crossbar),可以理解的是,crossbar实现相对简单。共享交换架构中的线路卡到交换结构的物理连接简化为点到点连接,实现起来更加方便,从而更加容易保证大容量交换机的稳定性;并且,crossbar内部无阻塞。一个crossbar,只要同时闭合多个交叉节点(crosspoint),多个不同的端口就可以同时传输数据。例如:crossbar由连接N个输入端口(Input)和N个输出端口(Output)的2N条总线纵横交叉连接构成。
在本申请实施例中,交叉连接路由模块包括AXI crossbar,该AXI crossbar由N个主机设备端口和N个从机设备端口的2N条总线纵横交叉连接构成,其中,每一个主机设备或从机设备均可以通过与AXI crossbar上对应的端口连接,来实现与对端的设备的交叉互联,即,任意一个主机设备通过连接AXI crossbar都可以实现访问连接同一AXI crossbar的任意一个从机设备,同理,任意一个从机设备通过连接AXI crossbar都可以实现访问连接同一AXI crossbar的任意一个主机设备。
请再参阅图2,图2是本申请实施例提供的一种计算机交换***的结构示意图;
如图2所示,该计算机交换***100,包括:处理器10,PCIe上行端口20,数据分发模块30,交换模块40,地址变换模块50,第一PCIe下行端口601,第二PCIe下行端口602,交换器70,第一端点设备801,第二端点设备802,第三端点设备803,桥接器90,第一外设设备101以及第二外设设备102。
在本申请实施例中,该计算机交换***100中的上述部件或接口通过AXI总线、AHB总线、ASB总线、APB总线或Wishbone总线连接。
其中,该处理器10包括根复合体11,该根复合体11包括根端口,该根端口用于连接PCIe上行端口,该根端口可以包括多个,例如:第一根端口111以及第二根端口112,其中,第一根端口111用于连接PCIe上行端口20。可以理解的是,该根复合体11可以包括多个根端口,每一个根端口均可以连接一个PCIe上行端口。
在本申请实施例中,根复合体11包括地址转换模块(图未示),该地址转换模块用于将处理器的地址转换为交换器或端点设备的外设地址。
其中,第一根端口111用于连接PCIe上行端口20,以向该PCIe上行端口转发根复合体11的请求,其中,根复合体11的请求包括数据包。
其中,第二根端口112与第一根端口111的功能相同,在此不再赘述。
其中,PCIe上行端口20,连接第一根端口111以及数据分发模块30,用于接收第一根端口111发送的请求,并将该请求转发到数据分发模块30。在本申请实施例中,PCIe上行端口20作为上游端口(Upstream Port,UP)与根复合体11进行交互。
其中,数据分发模块30,连接该PCIe上行端口20以及交换模块40,该数据分发模块30用于将外设地址转换为交换器70或端点设备的地址。在本申请实施例中,该数据分发模块30包括地址转换器。
在本申请实施例中,数据分发模块30包括:端口地址映射表,端口地址映射表包括每一个PCIe下行端口的配置空间偏移、内存空间偏移,数据分发模块用于根据处理器的地址,查询端口地址映射表,确定PCIe下行端口对应的配置空间或内存空间;
其中,端口地址映射表由数据分发模块获取数据包,并解析数据包得到,或者,端口地址映射表由数据分发模块从PCIe下行端口的配置空间的寄存器中获取。
在本申请实施例中,数据分发模块30包括:端口总线表,端口总线表包括每一个PCIe下行端口的最小总线号、最大总线号,数据分发模块用于根据数据包对应的总线号,确定数据包对应的总线号所属的PCIe下行端口,以将数据包分发到对应的PCIe下行端口;
其中,端口总线表由数据分发模块30获取数据包,并解析数据包得到,或者,端口总线表由数据分发模块从PCIe下行端口的配置空间的寄存器中获取。
其中,交换模块40,连接数据分发模块30、地址变换模块50、桥接器90,该交换模块40用于实现PCIe上行端口和PCIe下行端口的对接,即,实现PCIe上行端口对任意一个PCIe下行端口的访问。
可以理解的是,该交换模块40可以连接多个PCIe下行端口,该交换模块40也可以直接连接多个外设设备,例如:直接连接第一外设设备901以及第二外设设备902。
在本申请实施例中,该交换模块40用于实现PCIe上行端口和PCIe下行端口之间的交叉互联,以实现根复合体与多个端点设备或多个外设设备的通信。
在本申请实施例中,该交换模块40包括AXI交换模块、AHB交换模块、ASB交换模块、APB交换模块、Wishbone交换模块。可以理解的是,不同的交换模块对应不同的总线协议,例如:AXI交换模块、AHB交换模块、ASB交换模块、APB交换模块、Wishbone交换模块分别对应AXI总线、AHB总线、ASB总线、APB总线、Wishbone总线。
其中,地址变换模块50,连接第一PCIe下行端口601、第二PCIe下行端口602。
在本申请实施例中,该地址变换模块50连接交换模块40以及每一PCIe下行端口,地址变换模块50用于将交换器或端点设备的地址转换为外设地址。
其中,桥接器90,用于连接外设设备,其中,该桥接器90连接交换模块40以及第一外设设备101、第二外设设备102。
在本申请实施例中,该桥接器90包括适配器,例如:AXI2APB模块,该AXI2APB模块用于将高带宽的AXI总线转换为低带宽的APB总线,以便在资源有限的***中使用APB总线。可以理解的是,AXI总线主要用于高速传输数据,而APB总线则主要用于低速的寄存器读或写操作。例如,AXI2APB模块用于在AMBA协议的AXI总线和APB总线之间进行桥接,AXI2APB模块接收来自AXI总线的读写请求,并将其转换为APB总线的读写操作,或者,AXI2APB模块可以将APB总线的读写操作转换为AXI总线的读写请求。
在本申请实施例中,AXI2APB模块包括:
AXI接口,用于连接AXI总线。
APB接口,用于连接APB总线。
地址转换器,用于将AXI地址转换为APB地址。
数据转换器,用于将AXI数据转换为APB数据,或者,将APB数据转换为AXI数据。
控制器,用于管理地址转换器和/或数据转换器。
可以理解的是,本申请实施例的***可以包括多个桥接器90,每一个桥接器90可以连接多个外设设备。
第一PCIe下行端口601,连接该交换模块40以及交换器70,用于接收交换模块40发送的请求,并将该请求转发到交换器70。
第二PCIe下行端口602,与第一PCIe下行端口601的功能相同,在此不再赘述。
在本申请实施例中,PCIe下行端口作为下游端口(Downstream Port,DP)与交换器或端点设备进行交互,每一个PCIe下行端口对应一个配置空间,该配置空间由若干个寄存器(BAR)组成,PCIe下行端口可以有多个,每一个PCIe下行端口均可以连接交换器或端点设备,其中,不同PCIe下行端口之间的地址不重叠。
交换器70,用于连接PCIe下行端口与端点设备,每一个交换器70可以连接多个端点设备,以实现多个端点设备的扩展,例如:交换器70连接第一PCIe下行端口601以及第二端点设备802、第三端点设备803,以实现PCIe下行端口与端点设备的连接。
在本申请实施例中,交换器还可以连接下一级的交换器,通过下一级的交换器连接端点设备,以进一步实现端点设备的扩展。
在本申请实施例中,下行数据指的是从根复合体向交换器、端点设备或外设设备的方向发送的数据包,上行数据指的是从交换器、端点设备或外设设备的方向发送的数据包。其中,该数据包可以包括事务层数据包(Transaction Layer Packet,TLP)。
具体的,若数据包为下行数据,地址变换模块用于根据PCIe下行端口的端口号,增加PCIe下行端口对应的配置空间偏移或内存空间偏移,以映射到该PCIe下行端口对应的配置空间或内存空间。
具体的,若数据包为上行数据,地址变换模块还用于去除PCIe下行端口对应的配置空间偏移或内存空间偏移,以映射到处理器空间。
可以理解的是,通过交换器70可以实现多个端点设备的扩展,例如:交换器70用于扩展链路,提供更多的端口用以连接端点设备。进一步地,每一个交换器还可以连接下一级的交换器,以进一步实现端点设备的扩展,使得***可以连接多个端点设备。其中,每一个交换器为挂接在该交换器上的下一级交换器或端点设备提供路由和转发服务。在本申请实施例中,该交换器70包括Switch,例如:PCIe Switch。
第一端点设备801,连接第二PCIe下行端口602,该第一端点设备801对应一个配置空间。
第二端点设备802,连接交换器70,该第二端点设备802对应一个配置空间。
第三端点设备803,与第二端点设备802的连接方式相同,该第三端点设备803对应一个配置空间。
在本申请实施例中,该计算机交换***包括多个端点设备(Endpoint,EP),每一个端点设备对应一个配置空间。
第一外设设备101,连接桥接器90,该第一外设设备101对应一个配置空间。
第二外设设备102,与第一外设设备101的连接方式相同,在此不再赘述。
在本申请实施例中,该计算机交换***包括多个外设设备,每一个外设设备均连接交换模块。
在本申请实施例中,外设设备可以包括串行外设接口(Serial PeripheralInterface,SPI)、通用输入输出端口(General-purpose input/output,GPIO)、高清晰度多媒体接口(High Definition Multimedia Interface,HDMI)、USB控制器(USBController)、集成电路总线(Inter-Integrated Circuit,I2C)、通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART)等设备。
在本申请实施例中,该计算机交换***还包括:
数据广播处理模块,连接数据分发模块和交换模块,数据广播处理模块包括端口对应表,数据广播处理模块用于接收数据分发模块发送的数据包,根据端口对应表,确定数据包需要广播的若干个端口,对数据分发模块发送的数据包进行数据复制,以向若干个端口广播数据包。
在本申请实施例中,通过提供一种计算机交换***,该计算机交换***包括处理器,处理器包括根复合体;根复合体包括地址转换模块,地址转换模块用于将处理器的地址转换为外设地址;PCIe上行端口,连接根复合体;多个PCIe下行端口,每一PCIe下行端口连接交换器或端点设备,交换器用于连接下一级的端点设备,其中,不同的PCIe下行端口之间的地址不重叠;交换模块,连接PCIe上行端口和每一PCIe下行端口,交换模块用于实现PCIe上行端口对任意一个PCIe下行端口的访问;数据分发模块,数据分发模块连接PCIe上行端口和交换模块,数据分发模块用于将外设地址转换为交换器或端点设备的地址;地址变换模块,连接交换模块以及每一PCIe下行端口,地址变换模块用于将交换器或端点设备的地址转换为外设地址;多个外设设备,每一外设设备连接交换模块。
一方面,通过设置地址转换模块将处理器的地址转换为外设地址,并设置数据分发模块将外设地址转换为交换器或端点设备的地址,以及通过地址变换模块将交换器或端点设备的地址转换为外设地址,本申请能够实现处理器与交换器或端点设备的交换功能;
另一方面,通过交换模块与PCIe上行端口和多个PCIe下行端口连接,从而实现端点设备的扩展,提高***的灵活性,并且,交换模块连接多个外设设备,从而实现外设设备的PCIe化。
实施例二
基于上述实施例一提供的计算机交换***,本申请实施例进一步提供一种地址分配方法,以实现该计算机交换***的地址分配。
需要说明的是,本申请实施例中的计算机交换***的相关内容,可以参考上述实施例一的相关内容,在此不再赘述。
可以理解的是,该计算机交换***中的每一个设备都对应一个内存空间和配置空间,主机的配置软件可以通过该配置空间来确定该设备的信息,或者,通过该配置空间来配置该设备。该配置空间为一系列寄存器的集合,该配置空间由两部分组成,分别为头结构(Header)以及Capability数据结构。
其中,该计算机交换***包括上行端口部分、外设部分以及下行端口部分。
请再参阅图2,如图2所示,上行端口部分为PCIe上行端口,外设部分为桥接器以及第一外设设备和第二外设设备组成的部分,下行端口部分为第一PCIe下行端口及其挂接的下级的设备,或者,第二PCIe下行端口及其挂接的下级的设备。
可以理解的是,一个设备的物理空间,可以通过内存映射(Memory Map)的方式映射到主机的内存。
由于PCIe下行端口挂接的端点设备的数量不确定,而且,不同PCIe下行端口之间的地址不能重叠,因此,需要为每一个PCIe下行端口分配一个最大配置空间地址。
具体的,请参阅图3,图3是本申请实施例提供的一种地址分配方法的流程示意图;
如图3所示,该地址分配方法,包括:
步骤S301:为每一个PCIe下行端口分配一个最大配置空间地址;
具体的,最大配置空间地址根据总线号、设备号以及功能号的数量来确定。例如:***包括256条总线,即,***的总线号有256个,每条总线上有32个设备号(Devicenumber),每个设备号有8个功能号(Function number),每个功能号上关联一个设备,假设每个设备的配置空间的大小为4KB,则一个PCIe下行端口占用的配置空间地址的大小的最大值为256*32*8*4KB=256MB。
因此,在无法确定每一个PCIe下行端口有多少个PCIe设备的情况下,本申请实施例为每一个PCIe下行端口分配大小为256MB的配置空间地址,以满足每一个设备均对应一个总线号、设备号、功能号。
可以理解的是,本申请实施例中的总线号、设备号、功能号的数量可以根据具体需要进行设置,而最大配置空间地址的大小根据总线号、设备号、功能号的数量来确定。
步骤S302:建立最大配置空间地址与总线号、设备号、功能号的对应关系。
具体的,最大配置空间地址包括多个配置空间地址,每一个设备的总线号、设备号、功能号不完全相同,因此,需要建立最大配置空间地址与多个设备的对应关系,即,建立最大配置空间地址中的每一个配置空间地址与一个总线号、设备号、功能号的一一对应关系。
假设每个设备的配置空间的大小为4KB,每一个PCIe下行端口的配置空间地址为256M,则每一个PCIe下行端口的配置空间地址为[起始地址,起始地址+256M],则,此时可以将[起始地址,起始地址+4KB]与AXI下行端口的一个总线号、设备号、功能号的组合相对应,下一个配置空间地址[起始地址+4KB,起始地址+8KB]与下一个总线号、设备号、功能号的组合相对应,以此类推,从而建立每一个设备的总线号、设备号、功能号与最大配置空间地址中的一个配置空间地址的对应关系。
在本申请实施例中,***包括多个外设设备,在为每一个PCIe下行端口分配一个最大配置空间地址之前,方法还包括:
根据每一外设设备的空间需求,为每一外设设备分配对应的配置空间地址。
具体的,由于外设设备直接连接交叉路由连接模块,或者,通过桥接器连接交叉路由连接模块,因此,每一外设设备需要多少空间,则分配多少空间,比如:***包括两个外设设备,分别为第一外设设备和第二外设设备,并且,第一外设设备需要8KB大小的配置空间,第二外设设备需要8KB大小的配置空间,则分别为第一外设设备分配8K大小的配置空间,以及,为第二外设设备分配8K大小的配置空间。
可以理解的是,处理器只能访问主机内存(Memory)空间(或者IO空间),而不能直接对外设进行直接操作,因此,处理器如果需要访问某一个设备的空间,需要通过根复合体通过事务层数据包(Transaction Layer Packet,TLP)将数据从外设读到主机内存,然后处理器从主机内存中读取该数据,同理,处理器如果需要向外设写数据,则需要将数据准备在主机内存中,通过根复合体通过TLP写入到设备。因此,除了配置空间之外,处理器还需要对***的设备的内存空间进行映射。具体的,在上电的时候,***把设备开放的空间(***软件可见)映射到内存地址空间,使得处理器在访问该设备的设备空间时,只需要访问对应的内存地址空间。
假设处理器有256TB的内存空间,每一个PCIe下行端口预分配4TB的内存空间,则该计算机交换***能够分配给64个PCIe下行端口。可以理解的是,由于PCIe上行端口为上行端口,因此,不需要分配空间。并且,由于处理器的型号不限定,例如:处理器可以为Intel架构处理器,也可以是ARM架构处理器,因此,交换内部地址规划不能对处理器有要求,对处理器上的驱动不感知。
请再参阅图4,图4是本申请实施例提供的一种地址分配的示意图;
如图4所示,对于PCIe下行端口,每一个PCIe下行端口分配4TB的内存空间以及256MB的配置空间;对于外设设备,所有的外设设备一共分配1TB的内存空间,并且,每一个外设设备根据具体需要分配对应的配置空间,例如:第一外设设备分配4KB的配置空间,第二外设设备分配4KB的配置空间。
请再参阅图5,图5是本申请实施例提供的一种PCIe下行端口的地址转换的示意图;
如图5所示,处理器的根复合体的地址转换模块可以将处理器空间转换成外设空间,具体的,通过将处理器的地址附加一个基址,得到外设的外设地址,例如:处理器空间的地址为0x500000,经过处理器的根复合体的地址转换模块之后,将处理器空间的地址转换为外设地址,例如:将地址0x500000转换为0xb00000500000。
之后,通过数据分发模块对该外设地址进行变换,得到指定的PCIe下行端口对应的交换器或端点设备的地址,例如:将地址0xb00000500000转换为地址0xb00001500000。
在本申请实施例中,地址变换模块还包括地址逆转换模块,在数据分发模块对外设地址进行转换,得到交换器或端点设备的地址之后,该地址逆转换模块用于将交换器或端点设备的地址转换为外设地址,例如:将地址0xb00001500000转换为0x500000。
对于PCIe下行端口来说,数据分发模块存储每一个PCIe下行端口的端口地址映射表,其中,该端口地址映射表存储配置空间偏移以及内存空间偏移,该端口地址映射表还存储第一类型的头部结构(Type O Header)和第二类型的头部结构(Type 1 Header)的地址范围。其中,Type O Header是端点设备(Endpoint,EP)的Configuration Header, Type 1Header是交换器(Switch)的Configuration Header。
下表1为本申请实施例提供的一种PCIe下行端口的端口地址映射表:
表1
如表1所示,每一个PCIe下行端口对应一个端口号,其中,0x1000000表示256MB,0x4000000000表示4TB,假设起始地址为0xb0000000000,则对于某一个PCIe下行端口来说,在起始地址的基础上加上表1中的配置空间偏移或内存空间偏移,则映射到该PCIe下行端口对应的配置空间或内存空间。
对于外设设备来说,直接通过根复合体的地址转换模块进行一次转换,即可映射到外设设备的空间。例如:假设在处理器空间中外设设备对应的内存空间为device mem0空间,则device mem0空间经过地址转换模块进行地址转换后可以映射到该外设设备的内存空间,由于各个外设设备对应的端口地址固定,因此,经过地址转换后可以直接路由到对应的端口,即路由到对应的外设设备。
请再参阅图6,图6是本申请实施例提供的一种外设设备的地址分配的示意图;
如图6所示,对于直接挂接在交换模块的外设设备或者通过下一级的模块挂接到该交换模块,例如:高清晰度多媒体接口(High Definition Multimedia Interface,HDMI)、USB控制器(USB Controller)直接挂接到交换模块,而通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART)、集成电路总线(Inter-Integrated Circuit,I2C)通过AHB Crossbar挂接到交换模块。
由于外设设备没有通过PCIe下行端口,因此,该外设设备类似于直接挂接在PCIe总线上的端点设备(Endpoint,EP),对于直接挂接在PCIe总线上的端点设备,为该端点设备配置第一类型的空间寄存器,即Type 0的空间寄存器。
在本申请实施例中,直接挂接到PCIe总线上的端点设备的配置相同的总线号(Bus号),并且,每一个端点设备对应唯一的一个设备号(Device号)和功能号(function号),通过设备号和功能号来区分挂接在AXI总线上的不同设备,如图7所示,将HDMI配置为Device0、function0,USB Controller配置为Device、function0,AHB Crossbar配置为Device2、function0。
可以理解的是,由于外设设备的内存空间是固定的,因此在PCIe总线上的地址也可以固定,不需要像PCIe下行端口一样配置较大的空间。
如图6所示,HDMI对应的内存空间为128KB,USB Controller对应的内存空间为256KB,AHB Crossbar挂接UART和I2C,UART对应的内存空间为16KB,I2C对应的内存空间为32KB,则AHB Crossbar对应的内存空间为16+32=48KB,则此时分别为HDMI、USBController、AHB Crossbar分配的处理器空间为128KB、256KB、48KB。
在本申请实施例中,外设设备的配置空间由数据分发模块进行管理,例如:为每一个外设设备配置4KB大小的配置空间,所有外设设备的配置空间集中在一段处理器空间中,由数据分发模块根据数据分发模块所处的总线号(Bus号)来决定是否访问所有的这些外设设备的配置空间,从而不需要经过交换模块进行配置空间的访问,能够提高外设设备的配置空间的访问效率。
在本申请实施例中,在PCIe枚举时最开始分配处理器空间的为外设设备,例如:device0设备,从而将处理器空间和外设设备的PCIe空间一一对应起来,从而完成外设设备的PCIe化,使得处理器的枚举软件通过枚举即可动态发现外设设备,从而为该外设设备加载驱动。
在本申请实施例中,提供一种地址分配方法,应用于上述实施例一的计算机交换***,方法包括:为每一个PCIe下行端口分配一个最大配置空间地址;建立最大配置空间地址与总线号、设备号、功能号的对应关系。通过为每一个PCIe下行端口分配一个最大配置空间地址,并建立最大配置空间地址与总线号、设备号、功能号的对应关系,本申请实施例能够实现处理器路由到对应的端点设备。
实施例三
基于上述实施例一提供的计算机交换***,本申请实施例进一步提供一种枚举方法,以确定每一个端点设备对应的总线号、设备号以及功能号。
需要说明的是,本申请实施例中的计算机交换***的相关内容,可以参考上述实施例一的相关内容,在此不再赘述。
可以理解的是,配置空间的访问,由主机发起,具体的,由处理器的根复合体发起,通常在上电枚举和配置阶段会发起配置空间的访问。
具体的,请参阅图7,图7是本申请实施例提供的一种枚举方法的流程示意图;
如图7所示,该枚举方法,包括:
步骤S701:对每一个端点设备进行枚举,以确定每一个端点设备对应的总线号、设备号、功能号;
具体的,在枚举过程中,***枚举软件,例如:基本输入输出***/操作***(BasicInput Output System/Operating System,BIOS/OS)为计算机交换***的每一个设备分配总线号、设备号以及功能号,该设备包括交换器、端点设备。
其中,交换器的管理拓扑的总线号包括上游总线号(Primary Bus Number)、下游总线号(Secondary Bus Number)和从属总线号(Subordinate Bus Number)。
在本申请实施例中,枚举的处理由数据分发模块完成,其中,PCIe上行端口和PCIe下行端口的头部配置均定义为Type1,端点设备的头部配置定义为Type0,所有的外设设备均属于PCIe上行端口自身的空间,通过PCIe上行端口的Type1的寄存器进行表示,例如:通过BAR0进行表示。
可以理解的是,端点设备(Endpoint)和交换器的配置(Configuration)格式不同,分别由Type0和Type1来表示。配置可以认为是一个端点设备(Endpoint)或交换器的标准空间,这段空间在初始化时需要映射到主机的内存空间。与设备的其他空间不同,该空间是标准化的,即不管是哪个厂家生产的设备,都需要有这段空间,而且哪个地方放什么东西,都是协议规定好的,主机按协议访问这部分空间。主机软件访问PCIe设备的配置空间,根复合体会生成Configuration TLP 与端点设备(Endpoint)或交换器进行交互。
需要说明的是,每一个设备在计算机交换***中都有唯一的ID,该ID由总线(Bus)、设备(Device)、功能(Function)三者唯一确定。
请再参阅图8,图8是本申请实施例提供的另一种计算机交换***的结构示意图;
如图8所示,第一PCIe下行端口、第二PCIe下行端口,……,第N个PCIe下行端口按照预定的顺序进行排列,并且,所有的PCIe下行端口分布在同一根总线下,其总线号均为Bus2,设备号按照预定的顺序进行排列,例如:第一PCIe下行端口的设备号为Device_0,第二PCIe下行端口的设备号为Device_1,……,第N个PCIe下行端口的设备号为Device_n。
可以理解的是,枚举的过程为使用深度优先的算法不断递归发现新设备的过程。其中,枚举时按照总线号从0到n,设备号从0到n,功能号从0到n的顺序进行,即BDF按照如下的顺序进行:000/001/002/…/00n,010/011/012/…/01n,…。
如图8所示,从处理器的根复合体开始,经过PCIe上行端口、数据分发模块、数据广播处理模块、交换模块、地址变换模块,寻找PCIe下行端口和交换器,发现交换器以后设置下一级的总线号(Bus号),继续递归发现下一级设备子树。
例如:假设计算机交换***的总线号有256个,每条总线上有32个设备号(Devicenumber),每个设备号有8个功能号(Function number),则如图8所示,从总线号为Bus2的第一PCIe下行端口开始,向下一级设备搜索,搜索到总线号为Bus3的第一交换器,再对第一交换器的下一级设备进行搜索,确定第二交换器,再对第二交换器的下一级设备进行搜索,此时到达端点设备,该端点设备的总线号为Bus5。
此时搜索到最后一级的端点设备,则递归到第二交换器,发现第二交换器没有其他的下级设备,则递归到第一交换器,发现第一交换器还有另一个下一级的设备,即第三交换器,此时确定第三交换器的总线号为Bus6。进一步递归到第一PCIe下行端口,此时发现第一PCIe下行端口除了第一交换器之外,不存在其他的下级设备,则第一PCIe下行端口搜索完成,确定第一PCIe下行端口对应的最小总线号为Bus3,最大总线号为Bus6。
进一步搜索到第二PCIe下行端口,该第二PCIe下行端口的总线号为Bus2,该第二PCIe下行端口的下一级设备为端点设备,该端点设备的总线号为Bus7,此时第二PCIe下行端口搜索完成,确定第二PCIe下行端口对于的最小总线号为Bus7,最大总线号也为Bus7。
在本申请实施例中,在枚举过程中,也会进行设备号(Device number)和功能号(Function number)的分配,并设置对应的寄存器(Base Address Register,BAR)以及必要的Capabilities。对于Endpoint Configuration(Type 0)包括6个BAR,分别为BAR0-BAR5,而对于Switch(Type 1)包括2个BAR,分别为BAR0、BAR1。
步骤S702:在枚举完成后,建立每一个PCIe下行端口的端口号与最小总线号、最大总线号的端口总线表。
具体的,地址转换模块检查处理器的枚举软件下发的枚举报文,将枚举报文进行地址转换,以发送到对应的PCIe下行端口,并接收PCIe下行端口返回的枚举响应,以确定该PCIe下行端口的下游总线号(Secondary Bus Number)和从属总线号(Subordinate BusNumber),在最后一级的交换器或者端点设备响应该枚举报文之后,确定最大总线号,以完成对该PCIe下行端口的枚举。
在枚举软件对所有的PCIe下行端口进行枚举之后,建立每一个PCIe下行端口的端口号与最小总线号、最大总线号的端口总线表,其中,每一个PCIe下行端口的端口号一一对应一个最小总线号和一个最大总线号。
可以理解的是,若某一个PCIe下行端口只有一条总线,则最小总线号等于最大总线号。
例如:第一PCIe下行端口的端口号为0,第二PCIe下行端口的端口号为1,下表2为本申请实施例提供的一种PCIe下行端口的端口号与最小总线号、最大总线号的端口总线表。
表2
如表2所示,端口号为0的PCIe下行端口对应的最小总线号为3,最大总线号为6;端口号为1的PCIe下行端口对应的最小总线号为7,最大总线号也为7;端口号为2的PCIe下行端口不存在最小总线号,即,该PCIe下行端口未挂接交换器或端点设备。
在本申请实施例中,通过提供一种枚举方法,应用于上述实施例一中的计算机交换***,该方法包括:对每一个端点设备进行枚举,以确定每一个端点设备对应的总线号、设备号、功能号;在枚举完成后,建立每一个PCIe下行端口的端口号与最小总线号、最大总线号的对应表。通过对基于PCIe总线的***中的设备进行枚举,得到每一个PCIe下行端口的端口号对应的最小总线号、最大总线号,本申请实施例能够更好地实现处理器与端点设备的交互。
实施例四
基于上述实施例一提供的计算机交换***,本申请实施例进一步提供一种数据分发方法,以实现处理器与外设设备或端点设备的数据传输。
需要说明的是,本申请实施例中的计算机交换***的相关内容,可以参考上述实施例一的相关内容,在此不再赘述。
具体的,请参阅图9,图9是本申请实施例提供的一种数据分发方法的流程示意图;
如图9所示,该数据分发方法,包括:
步骤S901:根复合体获取主机发送的数据包;
具体的,计算机交换***以数据包(Packet)的形式进行数据传输,该基于计算机交换***中的交换器或者端点设备均需要实现分层结构,分别为事务层(TransactionLayer)、数据链路层(Data Link Layer)以及物理层(Physical Layer)。数据包的传输从上到下,每层数据包都有固定的格式。
事务层用于创建/发送或者解析/接收事务层数据包(Transaction LayerPacket,TLP)、流量控制、QoS、事务排序等。
数据链路层用于创建(发送)或者解析(接收)数据链路层数据包(Data LinkLayer Packet,DLLP)、Ack/Nak协议(链路层检错和纠错)、流控、电源管理等。
物理层用于处理所有的Packet数据的物理传输,发送端数据分发到各个Lane传输(Stripe),接收端把各个Lane上的数据汇总起来(De-stripe),每个Lane上加扰(Scramble,目的是让0和1分布均匀,去除信道的电磁干扰EMI)和去扰(De-scramble),以及8/10或者128/130 编码解码等。
具体的,事务层根据上层(软件层或者应用层)的请求(Request)的类型、目的地址和其他相关属性,把这些请求进行打包,产生事务层数据包(Transaction Layer Packet,TLP)。
步骤S902:根复合体将数据包发送到数据分发模块,数据分发模块确定数据包对应的总线号;
具体的,数据包包括事务层数据包(Transaction Layer Packet,TLP),数据分发模块解析该事务层数据包,确定数据包对应的总线号。在本申请实施例中,每一个事务层数据包对应固定大小的有效数据,例如:每一个事务层数据包对应的有效数据的大小为4KB。
下表3为本申请实施例提供的一种事务层数据包的示意:
表3
步骤S903:数据分发模块查询每一个PCIe下行端口的对应表,确定每一个PCIe下行端口对应的最小总线号、最大总线号;
具体的,在数据包经过数据分发模块时,该数据分发模块查询每一个PCIe下行端口的对应表,以确定每一个PCIe下行端口对应的最小总线号、最大总线号。
步骤S904:数据分发模块根据数据包对应的总线号,确定数据包对应的总线号所属的PCIe下行端口;
具体的,若该数据包对应的总线号位于某一PCIe下行端口对应的最小总线号与最大总线号之间,即,数据包对应的总线号从属于[最小总线号,最大总线号],则确定该数据包对应的总线号所属的PCIe下行端口,即,该数据包需要发往该PCIe下行端口。
步骤S905:数据分发模块通过交叉路由连接模块将数据包发送到数据包对应的总线号所属的PCIe下行端口。
在本申请实施例中,该方法还包括:
根据数据包对应的总线号、设备号、功能号,将数据包发送到对应的交换器或端点设备。
具体的,在确定数据包对应的PCIe下行端口之后,由于PCIe下行端口可能挂接有至少两个设备,例如:交换器或端点设备,还需要确定该数据包需要发送到的交换器或端点设备,因此,需要进一步确定该数据包对应的设备号以及功能号,并根据该数据包对应的总线号、设备号、功能号,确定数据包需要发送到的交换器或端点设备,以将该数据包发送到对应的交换器或端点设备。
请再参阅图8,如图8所示,计算机交换***还包括数据广播处理模块,数据广播处理模块连接数据分发模块以及交换模块,数据广播处理模块包括端口对应表,该端口对应表用于确定数据包需要广播的若干个PCIe下行端口,方法还包括:
数据广播处理模块接收数据分发模块发送的数据包;
数据广播处理模块根据端口对应表,确定数据包需要广播的若干个PCIe下行端口;
数据广播处理模块对数据分发模块发送的数据包进行数据复制,以向若干个PCIe下行端口广播数据包。
在本申请实施例中,该方法还包括:
若某一端点设备向主机发起读内存请求,则该端点设备生成一个事务层数据包,将该事务层数据包通过PCIe下行端口、交换模块、PCIe上行端口发送到处理器的根复合体,由根复合体从主机的内存空间中获取该读内存请求对应的数据,并将该读内存请求对应的数据以事务层数据包的形式返回给该端点设备,以使该端点设备获取到读内存请求对应的数据。
在本申请实施例中,通过提供一种数据分发方法,应用于上述实施例一的计算机交换***,该数据分发方法包括:根复合体获取主机发送的数据包;根复合体将数据包发送到数据分发模块,数据分发模块确定数据包对应的总线号;数据分发模块查询每一个PCIe下行端口的对应表,确定每一个PCIe下行端口对应的最小总线号、最大总线号;数据分发模块根据数据包对应的总线号,确定数据包对应的总线号所属的PCIe下行端口;数据分发模块通过交叉路由连接模块将数据包发送到数据包对应的总线号所属的PCIe下行端口。通过数据分发模块确定数据包对应的总线号所属的PCIe下行端口,并确定数据包对应的总线号所属的PCIe下行端口,通过交换模块将数据包发送到数据包对应的总线号所属的PCIe下行端口,本申请实施例能够更好地实现数据包的路由。
请再参阅图10,图10是本申请实施例提供的一种计算机交换***的结构示意图;
如图10所示,本申请实施例中的计算机交换***的产品形态为通过最高一级的交换器对接处理器,并通过下一级的交换器对接端点设备或下一级的交换器,而外设设备从属于最高一级的交换器,例如:外设设备包括外设设备1、外设设备2,……,外设设备n,每一个外设设备均连接最高一级的交换器,通过基于交换器来构建计算机交换***,使得用户界面不感知,依然能沿用标准的PCIe驱动,节省了驱动定制、适配的工作量,并且,在该***的基础上,可以构建特定的***需求,提高***的灵活性。
本申请实施例还提供了一种非易失性计算机可读存储介质,例如包括程序代码的存储器,上述程序代码可由处理器执行以完成上述实施例中的地址分配方法、枚举方法或数据分发方法。例如,该非易失性计算机可读存储介质可以是只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact DiscRead-Only Memory,CDROM)、磁带、软盘和光数据存储设备等。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括一条或多条程序代码,该程序代码存储在非易失性计算机可读存储介质中。电子设备的处理器从非易失性计算机可读存储介质读取该程序代码,处理器执行该程序代码,以完成上述实施例中提供的地址分配方法、枚举方法、数据分发方法的方法步骤。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来程序代码相关的硬件完成,该程序可以存储于一种非易失性计算机可读存储介质中,上述提到的非易失性计算机存储介质可以是只读存储器,磁盘或光盘等。
通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,程序可存储于非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,非易失性计算机可读取存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上述的本申请的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (12)

1.一种计算机交换***,其特征在于,所述计算机交换***包括:
处理器,所述处理器包括根复合体,所述根复合体包括根端口;
所述根复合体包括地址转换模块,所述地址转换模块用于将处理器的地址转换为外设地址;
PCIe上行端口,连接所述根复合体的根端口;
多个PCIe下行端口,每一所述PCIe下行端口连接交换器或端点设备,所述交换器用于连接下一级的端点设备,其中,不同的PCIe下行端口之间的地址不重叠;
交换模块,连接所述PCIe上行端口和每一所述PCIe下行端口,所述交换模块用于实现所述PCIe上行端口对任意一个所述PCIe下行端口的访问;
数据分发模块,所述数据分发模块连接所述PCIe上行端口和所述交换模块,所述数据分发模块用于将所述外设地址转换为交换器或端点设备的地址;
地址变换模块,连接所述交换模块以及每一所述PCIe下行端口,所述地址变换模块用于将所述交换器或端点设备的地址转换为所述外设地址;
多个外设设备,每一所述外设设备连接所述交换模块,每一外设设备对应的端口地址固定,所述地址转换模块通过一次地址转换映射到所述外设设备的端口;
所述数据分发模块包括:端口地址映射表,所述端口地址映射表包括每一个PCIe下行端口的配置空间偏移、内存空间偏移,所述数据分发模块用于根据处理器的地址,查询所述端口地址映射表,确定PCIe下行端口对应的配置空间或内存空间;
所述计算机交换***还包括:
数据广播处理模块,连接所述数据分发模块和所述交换模块,所述数据广播处理模块包括端口对应表,所述数据广播处理模块用于接收所述数据分发模块发送的数据包,根据所述端口对应表,确定所述数据包需要广播的若干个端口,对所述数据分发模块发送的数据包进行数据复制,以向若干个所述端口广播所述数据包。
2.根据权利要求1所述的计算机交换***,其特征在于,所述计算机交换***包括:
桥接器,所述桥接器连接所述交换模块,所述桥接器用于连接所述外设设备。
3.根据权利要求1所述的计算机交换***,其特征在于,
所述端口地址映射表由所述数据分发模块获取数据包,并解析所述数据包得到,或者,所述端口地址映射表由所述数据分发模块从PCIe下行端口的配置空间的寄存器中获取。
4.根据权利要求1所述的计算机交换***,其特征在于,所述数据分发模块包括:端口总线表,所述端口总线表包括每一个PCIe下行端口的最小总线号、最大总线号,所述数据分发模块用于根据数据包对应的总线号,确定所述数据包对应的总线号所属的PCIe下行端口,以将所述数据包分发到对应的PCIe下行端口;
其中,所述端口总线表由所述数据分发模块获取数据包,并解析所述数据包得到,或者,所述端口总线表由所述数据分发模块从PCIe下行端口的配置空间的寄存器中获取。
5.根据权利要求3所述的计算机交换***,其特征在于,所述交换器连接下一级的交换器,所述下一级的交换器连接端点设备;
若所述数据包为下行数据,所述地址变换模块用于根据所述PCIe下行端口的端口号,增加所述PCIe下行端口对应的配置空间偏移或内存空间偏移;
若所述数据包为上行数据,所述地址变换模块还用于去除所述PCIe下行端口对应的配置空间偏移或内存空间偏移。
6.一种地址分配方法,其特征在于,应用于如权利要求1-5任一项所述的计算机交换***,所述方法包括:
为每一个PCIe下行端口分配一个最大配置空间地址;
建立所述最大配置空间地址与总线号、设备号、功能号的对应关系。
7.根据权利要求6所述的方法,其特征在于,在为每一个PCIe下行端口分配一个最大配置空间地址之前,所述方法还包括:
根据每一外设设备的空间需求,为每一外设设备分配对应的配置空间地址。
8.一种枚举方法,应用于如权利要求1-5任一项所述的计算机交换***,所述方法包括:
对每一个端点设备进行枚举,以确定每一个端点设备对应的总线号、设备号、功能号;
在枚举完成后,建立每一个PCIe下行端口的端口号与最小总线号、最大总线号的端口总线表。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
建立每一个外设设备与设备号的对应关系。
10.一种数据分发方法,其特征在于,应用于如权利要求1-5任一项所述的计算机交换***,所述方法包括:
根复合体获取主机发送的数据包;
根复合体将所述数据包发送到数据分发模块,数据分发模块确定所述数据包对应的总线号;
数据分发模块查询端口总线表,确定每一个PCIe下行端口对应的最小总线号、最大总线号;
数据分发模块根据所述数据包对应的总线号,确定所述数据包对应的总线号所属的PCIe下行端口;
数据分发模块通过交换模块将所述数据包发送到所述数据包对应的总线号所属的PCIe下行端口。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
根据所述数据包对应的总线号、设备号、功能号,将所述数据包发送到对应的交换器或端点设备。
12.根据权利要求10或11所述的方法,其特征在于,所述计算机交换***还包括数据广播处理模块,所述数据广播处理模块连接所述数据分发模块以及所述交换模块,所述数据广播处理模块包括端口对应表,所述方法还包括:
所述数据广播处理模块接收所述数据分发模块发送的数据包;
所述数据广播处理模块根据所述端口对应表,确定所述数据包需要广播的若干个PCIe下行端口;
所述数据广播处理模块对所述数据分发模块发送的数据包进行数据复制,以向若干个所述PCIe下行端口广播所述数据包。
CN202310681563.0A 2023-06-09 2023-06-09 计算机交换***及地址分配、枚举、数据分发方法 Active CN116414759B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310681563.0A CN116414759B (zh) 2023-06-09 2023-06-09 计算机交换***及地址分配、枚举、数据分发方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310681563.0A CN116414759B (zh) 2023-06-09 2023-06-09 计算机交换***及地址分配、枚举、数据分发方法

Publications (2)

Publication Number Publication Date
CN116414759A CN116414759A (zh) 2023-07-11
CN116414759B true CN116414759B (zh) 2023-09-29

Family

ID=87054650

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310681563.0A Active CN116414759B (zh) 2023-06-09 2023-06-09 计算机交换***及地址分配、枚举、数据分发方法

Country Status (1)

Country Link
CN (1) CN116414759B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116578521B (zh) * 2023-07-14 2024-06-18 深圳中安辰鸿技术有限公司 一种单总线通信方法、装置、***及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9336173B1 (en) * 2013-12-20 2016-05-10 Microsemi Storage Solutions (U.S.), Inc. Method and switch for transferring transactions between switch domains
CN111092773A (zh) * 2019-12-25 2020-05-01 成都九芯微科技有限公司 一种支持虚拟交换的pcie交换芯片端口配置***和方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9135200B2 (en) * 2013-06-28 2015-09-15 Futurewei Technologies, Inc. System and method for extended peripheral component interconnect express fabrics
US10061707B2 (en) * 2015-12-26 2018-08-28 Intel Corporation Speculative enumeration of bus-device-function address space
WO2022012309A1 (zh) * 2020-07-13 2022-01-20 华为技术有限公司 扩展PCIe***的方法、PCIe交换设备及PCIe***

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9336173B1 (en) * 2013-12-20 2016-05-10 Microsemi Storage Solutions (U.S.), Inc. Method and switch for transferring transactions between switch domains
CN111092773A (zh) * 2019-12-25 2020-05-01 成都九芯微科技有限公司 一种支持虚拟交换的pcie交换芯片端口配置***和方法

Also Published As

Publication number Publication date
CN116414759A (zh) 2023-07-11

Similar Documents

Publication Publication Date Title
US11954058B2 (en) System and method for extended peripheral component interconnect express fabrics
CN103117929B (zh) 一种基于PCIe数据交换的通信方法及***
US7613864B2 (en) Device sharing
US7565463B2 (en) Scalable routing and addressing
US20130151750A1 (en) Multi-root input output virtualization aware switch
CN108984465B (zh) 一种消息传输方法及设备
US11829309B2 (en) Data forwarding chip and server
US20060239287A1 (en) Adding packet routing information without ECRC recalculation
US20060242354A1 (en) Flexible routing and addressing
US20060242330A1 (en) Proxy-based device sharing
US20060242332A1 (en) Distributed I/O bridging functionality
US20110060859A1 (en) Host-to-host software-based virtual system
WO2006115752A2 (en) Virtualization for device sharing
US7752376B1 (en) Flexible configuration space
US10698849B2 (en) Methods and apparatus for augmented bus numbering
CN116414759B (zh) 计算机交换***及地址分配、枚举、数据分发方法
CN107851078B (zh) 一种PCIe设备的聚合友好型地址分配的方法和***
WO2022012309A1 (zh) 扩展PCIe***的方法、PCIe交换设备及PCIe***
US20220300442A1 (en) Peripheral component interconnect express device and method of operating the same
CN114006875A (zh) 扩展PCIe***的方法、PCIe交换设备及PCIe***
KR20170102717A (ko) 패브릭 연결망 기반의 마이크로 서버
CN102855208B (zh) 一种实现文件交互的***及方法
CN117978775A (zh) Pci-e非透明桥的地址转换方法、装置、设备及介质
CN116955250A (zh) 快速***组件互连设备及其操作方法
CN118427139A (zh) 具有透明的根复合体的数据处理单元

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
GR01 Patent grant
GR01 Patent grant