CN114006875A - 扩展PCIe系统的方法、PCIe交换设备及PCIe系统 - Google Patents
扩展PCIe系统的方法、PCIe交换设备及PCIe系统 Download PDFInfo
- Publication number
- CN114006875A CN114006875A CN202011620807.7A CN202011620807A CN114006875A CN 114006875 A CN114006875 A CN 114006875A CN 202011620807 A CN202011620807 A CN 202011620807A CN 114006875 A CN114006875 A CN 114006875A
- Authority
- CN
- China
- Prior art keywords
- port
- pcie
- downstream
- proxy
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/109—Integrated on microchip, e.g. switch-on-chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4009—Coupling between buses with data restructuring
- G06F13/4018—Coupling between buses with data restructuring with data-width conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0024—Peripheral component interconnect [PCI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Information Transfer Systems (AREA)
Abstract
本申请公开了一种扩展PCIe系统的方法、PCIe交换设备及PCIe系统,其中,所述PCIe交换设备包括上游端口、端口代理装置和多个第一下游端口,其中,所述上游端口与所述端口代理装置相连,所述端口代理装置与所述多个第一下游端口相连,所述第一下游端口用于连接PCIe端点设备;所述多个第一下游端口与其下的PCIe端点设备的连接共享相同的总线号。通过将多个第一下游端口与其下的PCIe端点设备的连接共享相同的总线号,减少了PCIe端点设备占用总线号的数量,提高了PCIe系统的容量。
Description
本申请要求于2020年7月13日提交的申请号为202010677632.7、发明名称为“一种提高系统PCIe设备扩展能力方法”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及计算机技术领域,特别涉及一种扩展PCIe系统的方法、PCIe交换设备及PCIe系统。
背景技术
外围器件互联总线(peripheral component interconnect express,PCIe)是一种高速串行计算机扩展总线标准,用于实现处理器和外部设备的连接,这些外部设备被称为PCIe设备。
PCIe协议使用32位PCIe ID来标识系统中的PCIe设备,32位包括:domain(16bits):bus(8bits):device(5bits).function(3bits))。8位总线标识bus ID、5位设备标识device ID和3位功能标识function ID,简称为BDF。Bus ID为每个PCIe域提供了256个总线号。通常情况下,计算机系统只支持一个PCIe域,即整个计算机系统只提供256个总线号。由于PCIe协议为点对点连接,因此,一个PCIe域可以支持的PCIe设备的规模受到256个总线号数量的制约,无法在一个PCIe域支持更多的PCIe设备。
发明内容
本申请提供了一种扩展PCIe系统的方法、PCIe交换设备及PCIe系统,以解决现有技术中PCIe设备的规模受到256个总线号数量的制约的问题。
第一方面,本申请提供了一种PCIe交换设备,所述PCIe交换设备包括上游端口、端口代理装置和多个第一下游端口,其中,所述上游端口与所述端口代理装置相连,所述端口代理装置与所述多个第一下游端口相连,所述第一下游端口用于连接PCIe端点设备;所述多个第一下游端口与其下的PCIe端点设备的连接共享相同的总线号。
第一方面的交换设备中包含端口代理装置,且与多个第一下游端口相连,为所述多个第一下游端口提供代理,通过将多个第一下游端口与其下的PCIe端点设备的连接共享相同的总线号,减少了PCIe端点设备占用总线号的数量,提高了PCIe系统的容量。
在一种可能的实施方式中,所述端口代理装置的下游总线号等于归属总线号,其中,所述归属总线号用于表示所述端口代理装置下的PCIe子树中最大的总线号。
在另一种可能的实施方式中,PCIe交换设备还包括一个或多个第二下游端口,其中,所述一个或多个第二下游端口与所述上游端口相连。第二下游端口连接到上游端口,不需要由端口代理装置提供代理服务。
枚举过程中,系统枚举软件(例如,基本输入输出系统/操作系统,Basic InputOutput System/Operating System,BIOS/OS)为PCIe系统的PCIe设备(包括桥设备和端点设备)分配BDF。桥设备的管理拓扑的总线号包括上游总线号(Primary Bus Number)、下游总线(Secondary Bus Number)和从属总线号(Subordinate Bus Number)。枚举完成后,所述端口代理装置的下游总线号等于归属总线号。
在另一种可能的实施方式中,所述端口代理装置的下游总线号可以小于归属总线号,同时,归属总线号减去下游总线号的值小于前述第一下游端口的数量。此时,多个第一下游端口中的部分端口共享相同的下游总线号。
在另一种可能的实施方式中,所述端口代理装置与所述多个第一下游端口具备相同的归属总线号。具体的,所述端口代理装置将其下的所述多个第一下游端口的管理拓扑总线号设置为与自身管理拓扑总线号相同。
在另一种可能的实施方式中,所述第一下游端口的编号用于表示与所述第一下游端口连接的PCIe端点设备的设备标识。处理器可以使用PCIe端点设备连接的第一下游端口的标识来区分所述端口代理装置下的各个端点设备。处理器基于所述第一下游端口的编号、结合总线号D和功能号F识别PCIe端点设备。
在另一种可能的实施方式中,所述端口代理装置用于从所述第一下游端口接收PCIe端点设备发送的数据包,将所述数据包中的设备标识替换为所述第一下游端口的编号。
当所述PCIe端点设备发送的数据包为请求TLP包时,所述端口代理装置具体用于将所述请求TLP包携带的请求者BDF中的设备标识替换为与所述PCIe端点设备相连的第一下游端口的编号,或者,
当PCIe端点设备发送的数据包为完成TLP包时,所述端口代理装置具体用于将所述完成TLP包携带的完成者BDF中的设备标识替换为与所述PCIe端点设备相连的第一下游端口的编号。
在另一种可能的实施方式中,所述端口代理装置用于接收所述处理器发送的数据包,将所述数据包中设备标识的值作为接收所述数据包的目的端口的编号,并将所述数据包中的设备标识更改为0,将所述数据包发送到所述目的端口。
当所述处理器发送的数据包为配置请求TLP包时,将所述配置请求TLP包携带的目的BDF中的设备标识替换为0,或者,
当所述处理器发送的数据包为完成TLP包时,将所述完成TLP包携带的请求者BDF中的设备标识替换为0。
所述配置请求TLP包包括配置写请求TLP包和配置读请求TLP包。
在本实施方式中,处理器在枚举过程中,所述第一下游端口下连接的PCIe端点设备的设备标识被替换为所述第一下游端口的编号。现有技术中,PCIe系统为PCIe端点设备分配的设备标识一般为0。本申请实施例为了避免对PCIe端点设备造成影响,因此由端口代理装置将发给PCIe端点设备的数据包中的设备标识改为0,从而使得PCIe端点设备不需要为本申请的方案更改软件配置。
在另一种可能的实施方式中,所述端口代理装置的配置空间寄存器中映射有归属于所述端口代理装置的所有第一下游端口的配置空间寄存器。通过上述配置空间寄存器在第一下游端口到端口代理装置的映射,实现了端口代理装置对第一下游端口的配置空间寄存器的访问。
在另一种可能的实施方式中,所述端口代理装置的使能寄存器的值用于表示所述端口代理装置的代理功能是否使能。通过使能寄存器,使得PCIe交换设备可以开关代理功能,在代理功能开启时实施本申请方案,在代理功能关闭时,作为传统的PCIe交换设备采用现有技术的方式提供服务。
具体的,所述PCIe交换设备在上电或者复位初始化时,通过固件或者读取非易失性存储器(例如,带电可擦可编程只读存储器EEPROM)的方式,设置所述端口代理装置的寄存器。
在另一种可能的实施方式中,所述端口代理装置,用于接收所述上游端口转发的第一配置请求,所述第一配置请求携带所述端口代理装置的管理拓扑对应的各总线号;
所述端口代理装置,还用于根据所述第一配置请求,设置自身的管理拓扑对应的各总线号,并将其下连接的所有第一下游端口的管理拓扑设置为相同的总线号。
通过将端口代理装置下的所有第一下游端口设置为与端口代理装置具备相同的管理拓扑总线号,使得端口代理装置代理其下的所有第一下游端口,并对上层系统将其下的所有第一下游端口模拟为一个代理端口。
在另一种可能的实施方式中,所述端口代理装置,用于接收处理器发送的第二配置请求,所述第二配置请求携带的总线号为所述端口代理装置的下级总线号、携带的设备标识为m,m为大于等于0的整数;所述端口代理装置,还用于根据所述第二配置请求携带的设备标识的值m,将所述第二配置请求路由到对应的目的端口,所述目的端口的编号等于m。
在本实施方式中,处理器通过调整m的值,即可把端口代理装置下的所有第一下游端口枚举到系统。
在另一种可能的实施方式中,PCIe交换设备还包括:一个或多个第二下游端口,所述端口代理装置用于根据端口使能记录确定所述多个第一下游端口使能了代理功能,以及确定所述一个或多个第二下游端口未使能代理功能。其中,所述端口使能记录可以记录在位图寄存器,通过位图寄存器中记录的所述PCIe交换设备的各下游端口对应的位图值来表示各下游端口连接的端点设备是否已经使能代理功能。所述端口使能记录还可以为映射表。
在另一种可能的实施方式中,所述端口代理装置的地址窗口为其下连接的所有第一下游端口的地址窗口的合集。当端口代理装置接收到采用地址路由方式的数据包时,可以通过地址窗口确定数据包是否属于其下的第一下游端口的地址范围。当处理器寻址的地址属于端口代理装置的地址窗口范围内时,则端口代理装置执行对应地址的寻址操作。
在另一种可能的实施方式中,所述端口代理装置还用于接收其下的第一下游端口上报的消息报文,将所述消息报文中携带的所述第一下游端口的BDF替换为自身的BDF,将所述消息报文路由到上游端口。
进一步的,所述消息报文包括错误报文。所述错误报文中携带有所述第一下游端口的错误信息。
当消息报文为错误报文时,所述端口代理装置还用于进一步将记录发送所述错误报文的第一下游端口的状态信息。
所述消息报文还包括中断报文。
在本实施方式中,端口代理装置通过修改第一下游端口发送的消息报文中的BDF,使得第一下游端口对上层系统不可见。
在另一种可能的实施方式中,所述PCIe端点设备的设备标识的位数与功能标识的位数之和为8。
在另一种可能的实施方式中,所述PCIe交换设备为专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)芯片。
在另一种可能的实施方式中,所述PCIe交换设备中包含多个并列的端口代理装置,每个端口代理装置与一组所述第一下游端口相连。其中,各端口代理装置分别为其下的一组第一下游端口提供代理服务,各组中的第一下游端口的下游总线号其他组中的第一下游端口的下游总线号不同。
第二方面,本申请提供了另一种PCIe交换设备,包括:处理器、存储器、上游端口和多个第一下游端口,所述存储器中存储有指令,当处理器执行所述指令时实现前述第一方面所述的端口代理装置的功能。
第三方面,本申请提供了一种PCIe系统,包括处理器和如权利要求1-19任一所述的PCIe交换设备。
在一种可能的实施方式中,所述PCIe交换设备包括第一PCIe交换设备和第二PCIe交换设备,其中,所述第二PCIe设备的上游端口连接到所述第一交换设备的第二下游端口,所述第二下游端口未使能代理功能。
第四方面,本申请提供了另一种PCIe系统,所述PCIe系统包括第一PCIe交换设备和第二PCIe交换设备,其中,所述第一PCIe交换设备为所述第一方面的PCIe交换设备,所述第二PCIe交换设备为传统的PCIe交换设备,即第二PCIe设备不包括端口代理装置。所述第二PCIe交换设备为所述第一PCIe交换设备的上游或者下游设备。
第五方面,本申请提供了一种处理器芯片,所述处理器芯片包括根复合体RC和如前述各方面所述的PCIe交换设备,所述PCIe交换设备的上游端口连接到所述根复合体RC的根端口,所述PCIe交换设备用于实现前述各方面中的PCIe交换设备的功能。
第六方面,本申请提供了一种扩展PCIe系统的方法,所述PCIe系统包括处理器和PCIe交换设备,所述PCIe交换设备包括:上游端口、端口代理装置和多个第一下游端口,其中,
所述端口代理装置通过所述上游端口连接到所述处理器,所述端口代理装置与所述多个第一下游端口相连,所述第一下游端口用于连接PCIe端点设备,
所述方法包括:
所述处理器通过端口代理装置将所述多个第一下游端口与其下的PCIe端点设备的连接设置为相同的总线号。
具体的,系统枚举软件枚举所述PCIe系统中的PCIe端点设备,在枚举过程中设置所述多个第一下游端口与其下的PCIe端点设备的连接的总线号。
第七方面,本申请提供了一种计算机程序产品,所述计算机程序产品包括在计算机可读存储介质中存储的计算机程序,并且所述计算程序通过处理器进行加载来实现上述第一方面或第一方面任意可能的实现方式的功能的指令。
第八方面,本申请提供了一种计算机可读存储介质,用于存储计算机程序,所述计算程序通过处理器进行加载,来实现上述方面或各方面任意可能的实现方式的功能。
附图说明
图1是一种PCIe系统中总线号分配示意图;
图2是与图1对应的PCIe设备管理拓扑示意图;
图3是本申请实施例提供的一种PCIe系统中总线号分配示意图;
图4是与图3对应的PCIe设备管理拓扑示意图;
图5是本申请实施例提供的一种DPA配置空间示意图;
图6是本申请实施例提供的另一种PCIe系统中总线号分配示意图;
图7是与图6对应的PCIe设备管理拓扑示意图;
图8是本申请实施例提供的另一种PCIe系统中总线号分配示意图;
图9A和图9B是本申请实施例提供的一种枚举PCIe设备的流程示意图;
图10是本申请实施例提供的地址窗口分配示意图;
图11是本申请实施例提供的一种ID路由的方法流程示意图;
图12是本申请实施例提供的一种PCIe交换设备1200的装置结构示意图。
具体实施方式
下面将结合附图对本申请实施方式作进一步地详细描述。
PCIe总线作为处理器系统的局部总线,其作用与PCI总线类似,主要目的是为了连接处理器系统中的外部设备。PCIe总线使用端到端的连接方式,在一条PCIe链路的两端只能各连接一个设备,这两个设备互为数据发送端和数据接收端。
典型的PCIe系统包括根复合体(Root Complex,RC)、PCIe交换设备(即PCIeswitch)和PCIe端点设备。其中,RC可以位于处理器上,RC本身占用一个bus号。PCIe switch包含上游端口和下游端口,上游端口用于连接RC的根端口(root port,RP)或者其他PCIeswitch的下游端口。RC的根端口、PCIe switch的上游端口和下游端口又可以成为桥设备,桥设备用于连接其他桥设备或者端点设备。
需要说明的是,PCIe switch可以是单独的物理设备,例如物理交换机或交换芯片;也可以是在芯片中实现的硬件功能模块,例如,可以为集成在处理器芯片中硬件功能模块,实现PCIe switch的功能。
如图1所示,示例性的,为一种PCIe系统中总线号分配示意图,其中,处理器CPU上存在多个根端口(Root Port,RP),图中以2个RP为例,多个RP可以位于一个或多个RC(图中未示出)上。示例性的,RP0可以连接到端点设备或者桥设备(图中未示出),RP1连接到PCIeswitch(交换机)的上游端口(Uplink Port,UP),PCIe switch包括m+1个下游端口(Downlink Port,DP),标记为DP_0、DP_1、…、DP_m,每个下游端口下连接有一个端点设备,图1所示的端点设备标记为EP_0、EP_1、…、EP_m。示例性的,连接上游端口UP的根端口RP1占用bus X,RP1与UP之间的连接(link)占用bus N。此时,PCIe switch内部上游端口到m+1个下游端口的连接占用bus N+1,各下游端口与对应的端点设备之间的连接分别占用bus N+2、bus N+3、…、bus N+2+m。其中,X为大于等于0的整数,N为大于X的整数。示例性的,当图示的2个RP位于不同的RC,且RP0所在的左侧RC首先枚举到时,X的取值取决于左侧RC下的PCIe结构占用的总线号的情况,例如,当左侧RC下的PCIe结构占用了5个bus号(即bus 0-4被左侧RC及其下的PCIe结构占用)时,X的取值为5,N的取值为6;当图示的2个RP位于同一RC且该RC为处理器首先枚举到的RC时,X取值为0,假如左侧RC下的PCIe结构占用了5个bus号(即bus 0-4被RC及RP0下的PCIe结构占用)时,此时N的取值为5。
PCIe设备可以分为两种,一种是桥设备,例如根端口RP、上游端口、下游端口,一种是端点设备(Endpoint,EP)。在PCI桥的两端,分别连接了两条总线,分别是上游总线(Primary Bus)和下游总线(Secondary Bus)。PCIe桥可以管理其下的PCIe子树。桥设备具有Subordinate Bus Number、Secondary Bus Number和Primary Bus Number寄存器,Primary Bus Number寄存器存放该桥设备上游的PCIe总线号,Secondary Bus Number寄存器存放该桥设备下游的PCIe总线号,Subordinate Bus Number寄存器存放该桥设备下游的PCIe子树中编号最大的PCIe总线号,Subordinate Bus Number称为从属总线号。
如图2所示,为与图1对应的PCIe设备管理拓扑示意图。RP1的Primary Bus Number为X,BDF为X:0.0,Secondary Bus Number为N,Subordinate Bus Number为N+2+m。与所述RP1相连的PCIe switch上游端口UP的Primary Bus Number为N,BDF为N:0.0,SecondaryBus Number为N+1,Subordinate Bus Number为N+2+m。PCIe switch下游端口DP_0的Primary Bus Number为N+1,BDF为N+1:0.0,Secondary Bus Number和Subordinate BusNumber为N+2。PCIe switch下游端口DP_1的Primary Bus Number为N+1,BDF为N+1:1.0,Secondary Bus Number和Subordinate Bus Number为N+3。PCIe switch下游端口DP_m的Primary Bus Number为N+1,BDF为N+1:m.0,Secondary Bus Number和Subordinate BusNumber为N+2+m。与下游端口DP_0相连的EP_0的BDF为N+2:0.0,与下游端口DP_1相连的EP_1的BDF为N+3:0.0,与下游端口DP_m相连的EP_m的BDF为N+2+m:0.0。前述的Primary BusNumber、Secondary Bus Number以及Subordinate Bus Number可以遵从PCIe协议的定义,其中,Primary Bus Number用于表示上游总线号,Secondary Bus Number用于表示下游总线号,Secondary Bus Number用于表示挂在本级bus下的PCIe子树中最大的bus号。Secondary Bus Number和Secondary Bus Number指示了本级bus下的PCIe子树的bus号范围。
图1和图2仅是给出一种PCIe系统下可能的总线分配和管理拓扑举例,用于表示总线号分配和管理拓扑的情况。由此可见,由于PCIe为端对端的连接方式,一个PCIe端点设备需要占用一个总线号,从而使得PCIe端点设备的数量收到了总线号数量的限制。
如图3所示,本申请实施例提供了一种PCIe系统中总线号分配示意图。图3所示的PCIe系统中包括PCIe switch(即PCIe交换设备)。本申请实施例在PCIe switch中增加下游端口代理(Downlink Port Agent,DPA),由DPA为其下游的端口提供代理服务,连接到DPA下游端口的各个端点设备共享同一总线,从而节约了bus的数量,提供了系统可以支持的端点设备的数量。在本申请实施例中,DPA又称为端口代理装置,在具体实现场景中,DPA可以为ASIC芯片或者为软件模块,当DPA为软件模块时,则由处理器加载指令实现DPA功能。
在一种可能的实施方式中,PCIe switch可以是单独的硬件设备,例如交换机或者交换芯片;也可以是集成在其他芯片中的硬件功能模块,该硬件功能模块包括上游端口、端口代理装置和多个下游端口,示例性的,PCIe switch可以集成在主机的处理器芯片中。
图3所示的PCIe系统中总线号分配示意图实现了与前述图1和图2不同的总线号分配逻辑。该PCIe系统包括处理器CPU、PCIe交换设备(如图示的PCIe switch)和PCIe端点设备。本申请后续实施例以PCIe switch为例对方案进行说明。
处理器上存在多个根端口(图中以2个RP为例),多个RP可以位于一个或多个RC(图中未示出)上。示例性的,RP0可以连接到端点设备或者桥设备(图中未示出),RP1连接到PCIe switch的上游端口UP,PCIe switch包括m+1个下游端口,标记为DP_0、DP_1、…、DP_m-1、DP_m,图3所示的端点设备标记为EP_0、EP_1、…、EP_m-1、EP_m。与图1不同的是,图3所示的PCIe switch中新增了DPA,上游端口UP与DPA相连、DPA与PCIe switch的部分或全部下游端口相连,与DPA相连的下游端口可以被称为DPA的下游端口、从属于DPA的下游端口、或者使能了代理功能的下游端口,示例性的,图中以DP_0、DP_1、…、DP_m-1作为使能了代理功能的下游端口。
示例性的,连接上游端口UP的根端口RP1占用bus X,RP1与UP之间的连接占用busN。此时,PCIe switch内部上游端口UP到DPA的连接占用bus N+1,下游端口DP_0、DP_1、…、DP_m-1与EP_0、EP_1、…、EP_m-1之间的m-1个连接共享bus N+2,UP到DP_m的连接占用bus N+3。其中,X为大于等于0的整数,N为大于X的整数。X和N的取值举例与图1相同。示例性的,当图示的2个RP位于不同的RC,且RP0所在的左侧RC首先枚举到时,X的取值取决于左侧RC下的PCIe结构占用的总线号的情况,例如,当左侧RRC下的PCIe结构占用了5个bus号(即bus 0-4被左侧RC及其下的PCIe结构占用)时,X的取值为5,N的取值为6;当图示的2个RP位于同一RC且该RC位处理器首先枚举到的RC时,X取值为0,假如左侧RC下的PCIe结构占用了5个bus号(即bus 0-4被占用),此时N的取值为5。
如图4所示,本申请实施例还提供了一种与图3相对应的PCIe设备管理拓扑示意图。RP1的Primary Bus Number为X,BDF为X:0.0,Secondary Bus Number为N,SubordinateBus Number为N+3。与所述RP1相连的PCIe switch上游端口UP的Primary Bus Number为N,BDF为N:0.0,Secondary Bus Number为N+1,Subordinate Bus Number为N+3。PCIe switch中的DPA的Primary Bus Number为N+1,BDF为N+1:0.0,Secondary Bus Number为N+2,Subordinate Bus Number为N+2。由于DP_0、DP_1、…、DP_m-1使能了代理功能,由DPA为这m个DP提供代理,因此,DP_0、DP_1、…、DP_m-1这m个DP的Primary Bus Number、SecondaryBus Number,以及Subordinate Bus Number与DPA相同。EP_0的BDF为N+2:0.0,EP_1的BDF为N+2:1.0,…,EP_m-1的BDF为N+2:m-1.0。DP_m未使能代理功能,DP_m的BDF为N+1:1.0,DP_m的Primary Bus Number为N+1,Secondary Bus Number为N+3,Subordinate Bus Number为N+3。
前述图3和图4给出了本申请实施例提供的PCIe switch中使能了DPA功能后的bus分配和管理拓扑。具体的,DPA可以代理所述PCIe switch的多个下游端口功能,将代理的多个下游端口对系统呈现为一个下游端口,示例性的,一个DPA可以代理32个PCIe switch的下游端口。
DPA在对事务层协议(Transaction Layer Protocol,TLP)包进行路由时,将TLP包携带的BDF中的设备标识(5bits device ID)替换为对应的端点设备连接的下游端口编号后,再路由TLP包到处理器。具体的,当所述PCIe端点设备发送的数据包为请求TLP包时,所述端口代理装置具体用于将所述请求TLP包携带的请求者(Requester)BDF中的设备标识替换为与所述PCIe端点设备相连的第一下游端口的编号,或者,当PCIe端点设备发送的数据包为完成TLP包时,所述端口代理装置具体用于将所述完成TLP包携带的完成者(Completer)BDF中的设备标识替换为与所述PCIe端点设备相连的第一下游端口的编号。通过上述替换操作,DPA将其下的下游端口连接的PCIe端点设备映射到所述DPA的下级总线上。此时,DPA下的各个下游端口连接的多个PCIe端点设备共同使用同一个bus号,从而解决了现有技术中需要为每个PCIe switch下游端口连接的端点设备必须分配一个下级bus的问题,避免了PCIe系统的端点设备数量必须小于256的限制(在实际产品实现时,由于RC和其他桥设备还会占用bus号,总的PCIe端点数量可能会少于248)。更进一步的,本申请实施例还避免了现有技术中,PCIe switch下游端口连接的PCIe设备未使用完所有device(5bits).function(3bits)表示的256个PCIe ID造成的浪费问题。
示例性的,现有技术中,PCIe switch连接m个PCIe端点设备需要占用m+2个bus号,而本申请实施例中,当PCIe switch的m个下游端口均使能代理功能时,PCIe switch连接m个PCIe端点设备仅占用3个bus,从而提高了PCIe系统支持的端口设备的数量,提高bus利用率。
本申请实施例通过在PCIe switch内增加DPA,无需改动现BIOS、OS、PCIe子系统和PCIe设备驱动。
通过本申请实施例公开的上述方案可以大大增加一个PCIe可以连接的端点设备的数量,本申请实施例举例如下:实现一个计算机系统支持7648个只有function 0的PCIe端点设备(如固态硬盘)扩展的方式如下:
8个root port占用1个bus,每个root port级联一个PCIe switch,每个pcieswitch有32个DPA,每个PCIe switch连接32*32个只有function 0的PCIe端点,n/32+34*n=256,计算式中n为pcie switch数量,每个pcie switch有32个DPA,每个DPA可以代理32个下游端口需要使用34个bus。计算得出n=7.52,取整n=7。那么通过PCIe switch级联的设备最多为7*32*32=7168,一共使用了1+7*34=239个bus,剩余17个bus还可以继续扩展连接设备(17-2)*32=480,最大设备数量为7168+480)。
如图5所示,示例性的,本申请实施例提供了一种PCIe switch中DPA配置空间示意图,与PCIe协议定义的DP的配置空间的不同之处在于:
DPA配置空间寄存器BAR1中映射了归属于所述DPA的所有DP的的配置空间寄存器的配置空间。DPA驱动可以通过BAR1寄存器间接访问所述DPA下的所有DP的配置空间,处理PCIe switch DP链路、错误和热插拔等。
DPA配置空间新增DPA功能结构,所述DPA功能结构包括Enable使能寄存器和位图寄存器。其中,DPA Enable寄存器bit0用于使能/禁止DPA功能,示例性的,当取值为1时,表示DPA功能被使能。位图寄存器DPA Port Bit Map LSB/MSB实现32位位图(PCIe switch DP数量超过32时可以继续扩充),用于配置DPA需要代理的各个DP,其中,位图的每一位表示对应编号的DP是否使能了代理功能。LSB全称为Least Significant Bit,在二进制数中是指最低有效位,MSB全称为Most Significant Bit,在二进制数中是指最高有效位。MSB位于二进制数的du最左侧,位于二进制数的最右侧。
示例性的,结合图3,下游端口DP_0、DP_1、…、DP_m中,DP_0、DP_1、…、DP_m-1使能了代理功能,DP_m未使能代理功能,此时,DPA位图寄存器大于等于m+1位,其中,位图中用于表示DP_0、DP_1、…、DP_m-1的位取值可以为1,位图中表示DP_m的位取值为0,取值为1的位表示该位对应的下游端口已经使能了代理功能,取值为0的位表示该位对应的下游端口未使能代理功能。
本申请实施例提供的包含DPA的PCIe switch可以适用于各种PCIe架构。例如,多个包含DPA的PCIe switch可以组成多层架构;包含DPA的PCIe switch也可以与传统的PCIeswitch在PCIe系统中混合使用;一个PCIe switch中也可以实现多个DPA;从而在单个DPA下可以挂载的下游端口数量有限的情况下,通过在PCIe switch中用多个DPA来提高PCIe系统可以支持的端点设备的数量。
示例性的,如图6所示,为本申请实施例提供的另一种PCIe系统结构示意图,图示的PCIe系统中,包含DPA的两个PCIe switch串行连接,PCIe switch1的UP连接到PCIeswitch0的DP_m口。此时,bus号的分配请参阅图6。
需要说明的是,前述图3和图6中,DPA下的所有下游端口共享相同的下游总线号。在另一种可能的实施方式中,DPA下的部分(非全部)下游端口共享相同的下游总线号。此时,所述端口代理装置的下游总线号小于归属总线号。归属总线号减去下游总线号的值小于前述第一下游端口的数量。
如图7所示,为本申请实施例提供的与图6对应的PCIe设备管理拓扑示意图。RP1的Primary Bus Number为X,BDF为X:0.0,Secondary Bus Number为N,Subordinate BusNumber为N+6。与所述RP1相连的PCIe switch 0的上游端口UP的Primary Bus Number为N,BDF为N:0.0,Secondary Bus Number为N+1,Subordinate Bus Number为N+6。PCIe switch0中的DPA的Primary Bus Number为N+1,BDF为N+1:0.0,Secondary Bus Number为N+2,Subordinate Bus Number为N+2。由于DP_0、DP_1、…、DP_m-1使能了代理功能,由DPA为这m个DP提供代理,因此,DP_0、DP_1、…、DP_m-1这m个DP的Primary Bus Number、SecondaryBus Number,以及Subordinate Bus Number与DPA相同。连接到PCIe switch 0的DP_0、DP_1、…、DP_m-1的各端点设备的BDF分别为N+2:0.0、N+2:1.0、…、N+2:m-1.0。PCIe switch0的DP_m未使能代理功能,DP_m的BDF为N+1:1.0,DP_m的Primary Bus Number为N+1,SecondaryBus Number为N+3,Subordinate Bus Number为N+6。PCIe switch 1的UP连接到PCIeswitch 0的DP_m。PCIe switch 1的UP的Primary Bus Number为N+3,BDF为N+3:0.0,Secondary Bus Number为N+4,Subordinate Bus Number为N+6。PCIe switch 1中的DPA的Primary Bus Number为N+4,BDF为N+4:0.0,Secondary Bus Number为N+5,SubordinateBus Number为N+5。由于PCIe switch 1中的DP_0、DP_1、…、DP_m-1使能了代理功能,由DPA为这m个DP提供代理,因此,PCIe switch 1中的DP_0、DP_1、…、DP_m-1,这m个DP的PrimaryBus Number、Secondary Bus Number,以及Subordinate Bus Number与PCIe switch1的DPA相同。连接到PCIe switch 1的DP_0、DP_1、…、DP_m-1的各端点设备的BDF分别为N+5:0.0、N+5:1.0、…、N+5:m-1.0。PCIe switch 1的DP_m未使能代理功能,DP_m的BDF为N+4:1.0,DP_m的Primary Bus Number为N+4,Secondary Bus Number为N+6,Subordinate Bus Number为N+6。连接到PCIe switch 1的DP_m的端点设备的BDF为N+6:0.0。
示例性的,如图8所示,为本申请实施例提供的另一种PCIe系统结构示意图,图示的PCIe系统中,PCIe switch包含并列的n个DPA,每个DPA下有m个下游端口使能了代理功能,PCIe switch的DP_i未使能代理功能。此时,bus号的分配请参阅图8中的内容。各个DPA下的下游端口数量可以不同,下游端口是否使能代理功能可以灵活配置。
需要说明的是,前述各实施例中使能了代理功能的下游端口可以称为第一下游端口,未使能代理功能的下游端口可以称为第二下游端口。
前述PCIe系统的结构示意图仅是可能的实现方式,可以理解的是,本申请实施例提供的PCIe switch可以灵活的出现在各种PCIe系统结构中,使用新增的DAP为PCIeswitch的下游端口提供代理功能。
结合前述的实施例,本申请实施例还提供了DPA在PCIe系统中的工作流程。所述工作流程包括以下的至少一种:PCIe switch上电或者复位初始化;PCIe设备枚举;PCIe内存地址资源分配;TLP包ID路由;TLP包地址路由;TLP包隐式路由;端点设备热插拔;错误检测和处理等等。
PCIe switch上电或者复位初始化:
PCIe switch上电/复位初始化时,PCIe switch通过固件FirmWare或者带电可擦可编程只读存储器(Electrically Erasable Programmable read only memory,EEPROM)等方式,完成DPA功能结构中DPA Enable寄存器bit0和DPA位图寄存器Port Bit Map LSB/MSB的设置。示例性的,DPA Enable寄存器bit0置1,DPA Port Bit Map LSB/MSB两个寄存器对应的位图bit0~bitm-1(示例性的,m小于31)中需要使能DPA代理的端口对应的位置为1,以此使能DPA功能和配置需要DPA代理的下游端口DP。
如图9A和9B所示,结合图3所示的PCIe系统结构,本申请实施例提供的一种枚举PCIe设备的流程示意图,包括:
901:处理器按顺序枚举bus 0、bus 1、…、bus N-1连接的PCIe设备。
示例性的,本申请实施例假设bus 0、bus 1、…、bus N-1下连接的均为传统的PCIe设备,此时枚举过程遵从于PCIe协议的定义。具体的,可以由处理器运行系统枚举软件(BIOS和/或OS)执行枚举过程。本申请实施例中并不限定枚举的触发,在一种可能的实施方式中,可以遵从PCIe协议的定义。
902:处理器对bus N上连接的设备进行枚举,将PCIe switch上游端口的PrimaryBus Number寄存器写为N,Secondary Bus Number为N+1,Subordinate Bus Number为N+1。
示例性的,步骤902包括下述过程:
处理器向PCIe switch的上行端口UP发送配置读请求,所述配置读请求用于枚举bus为N,device为0,function为0的设备,获取该设备的Device ID和Vendor ID。PCIe设备配置空间中记录的Device ID和Vendor ID用于记录PCIe设备的设备标识和厂商标识,其中,配置空间中的设备标识为厂商写入的,与BDF中的设备标识不同。
PCIe switch的上行端口UP检测到本端口的Primary Bus Number为0,SecondaryBus Number为0,Subordinate Bus Number为0,向处理器返回上游端口配置空间中记录的Device ID和Vendor ID寄存器值。需要说明的是,在枚举操作之前,各端口的Primary BusNumber、Secondary Bus Number、Subordinate Bus Number的初始值均为0。
在处理器确定接收到PCIe switch上游端口返回的Device ID和Vendor ID的值为非0xFFFF时,判定总线N上存在PCIe设备。处理器发送对bus为N,device为0,function为0的设备PCI Header Type寄存器配置读请求。需要说明的是,Device ID和Vendor ID的值是指的Device ID和Vendor ID组合起来的值。
PCIe switch的上行端口UP接收处理器发出的对PCI Header Type寄存器的配置读请求,检测到本端口的Primary Bus Number为0,Secondary Bus Number为0,Subordinate Bus Number为0,向处理器返回PCIe switch上游端口配置空间PCI HeaderType寄存器的值。
根据PCIe协议定义,PCI-PCI桥的PCI Header Type寄存器值为10000001b。处理器根据PCIe协议识别到bus为N,device为0,function为0的设备为PCI-PCI桥。
处理器发送对bus为N,device为0,function为0的设备配置空间PCI ExpressCapability寄存器的配置读请求。
PCIe switch的上行端口接收对PCI Express Capability寄存器的配置读请求,检测到本端口的Primary Bus Number为0,Secondary Bus Number为0,Subordinate BusNumber为0,向处理器返回PCIe switch上游端口配置空间PCI Express Capability寄存器的值。
处理器读取到PCIe switch上游端口返回的PCI Express Capability寄存器值为非0xFFFF,且Device/Port Type字段为0101b时,处理器根据PCIe协议识别到bus为N,device为0,function为0的设备为PCIe switch上游端口。
处理器向bus为N,device为0,function为0的设备发送配置写请求,用于将PCIeswitch上游端口的Primary Bus Number寄存器写为N,Secondary Bus Number寄存器写为N+1,Subordinate Bus Number寄存器写为N+1。
在完成对bus N连接的设备的枚举后,处理器继续枚举bus N+1连接的设备,在本申请实施例中,即,处理器枚举PCIe switch中的DPA。
步骤903:处理器向PCIe switch的上行端口UP发送配置读请求,所述配置读请求用于枚举bus为N+1,device为0,function为0的设备,用于获取该设备的Device ID和Vendor ID。
步骤904:由于步骤903中配置读请求携带的bus为N+1,PCIe switch上游端口在确定本端口的Secondary Bus Number为N+1,Subordinate Bus Number为N+1后,将该配置读请求转入内部路由,发送给DPA。
步骤905:DPA检测到本端口的Primary Bus Number为0,Secondary Bus Number为0,Subordinate Bus Number为0,DPA进一步根据配置空间enable寄存器bit0确定PCIeswitch DPA已使能,根据端口使能记录确定存在已使能了代理功能的下游端口。DPA向处理器返回本端口配置空间中记录的Device ID和Vendor ID寄存器值。
需要说明的是,PCIe设备配置空间记录的vendor ID为厂商的ID,deviceID厂商提供的该PCIe设备的ID,Device ID和Vendor ID用于表示PCIe设备的合法性。与之不同的是,BDF中的Device ID是处理器枚举PCIe设备时分配的,用于在管理PCIe设备,因此BDF中的device ID跟PCIe设备配置空间记录的device ID不同。
其中,所述端口使能记录可以记录在位图寄存器,通过位图寄存器中记录的所述PCIe交换设备的各下游端口对应的位图值来表示各下游端口连接的端点设备是否已经使能代理功能。所述端口使能记录还可以为映射表。所述位图寄存器可以为DPA Port BitMap LSB/MSB寄存器。
步骤906:处理器接收DPA返回的Device ID和Vendor ID,确定Device ID和VendorID的值为非0xFFFF时,判定总线N+1上存在PCIe设备。处理器发送对bus为N+1,device为0,function为0的设备PCI Header Type寄存器配置读请求。
步骤907:DPA接收处理器发出的对PCI Header Type寄存器的配置读请求,检测到本端口的Primary Bus Number为0,Secondary Bus Number为0,Subordinate Bus Number为0,向处理器返回DPA端口配置空间PCI Header Type寄存器的值。
根据PCIe协议定义,PCI-PCI桥的PCI Header Type寄存器值为10000001b。处理器根据PCIe协议识别到bus为N+1,device为0,function为0的设备为PCI-PCI桥。
步骤908:处理器发送对bus为N+1,device为0,function为0的设备配置空间PCIExpress Capability寄存器的配置读请求。
步骤909:DPA接收对PCI Express Capability寄存器的配置读请求,检测到本端口的Primary Bus Number为0,Secondary Bus Number为0,Subordinate Bus Number为0,向处理器返回DPA端口配置空间PCI Express Capability寄存器的值。
处理器读取到DPA返回的PCI Express Capability寄存器值为非0xFFFF,且Device/Port Type字段为0110b时,处理器根据PCIe协议识别到bus为N+1,device为0,function为0的设备为PCIe switch下游端口,即处理器将所述DPA识别为PCIe switch下游端口。
步骤910:处理器向bus为N,device为0,function为0的设备发送配置写请求,用于将PCIe上游端口的Primary Bus Number写为N,Secondary Bus Number为N+1,SubordinateBus Number为N+2。
步骤911:处理器向bus为N+1,device为0,function为0的设备发送配置写请求,用于将DPA的Primary Bus Number寄存器写为N+1,Secondary Bus Number为N+2,Subordinate Bus Number为N+2。
步骤912:DPA接收处理器向bus为N+1,device为0,function为0的设备发送配置写请求,将Primary Bus Number写为N+1,Secondary Bus Number为N+2,Subordinate BusNumber为N+2。进一步的,DPA根据位图寄存器的取值,将使能了DPA代理功能的下游端口的Primary Bus Number写为N+1,Secondary Bus Number为N+2,Subordinate Bus Number为N+2。示例性的,与图3对应,将下游端口DP_0、DP_1、…、DP_m-1的Primary Bus Number写为N+1,Secondary Bus Number为N+2,Subordinate Bus Number为N+2。
处理器继续枚举bus N+2连接的设备,即处理器枚举DPA下的下游端口0、1、…、m-1连接的各端点设备。
步骤913:处理器发送配置读请求,所述配置读请求用于枚举bus为N+2,device为0,function为0的设备,用于获取该设备的Device ID和Vendor ID。
步骤914:由于步骤913中配置读请求携带的bus为N+1,PCIe switch上游端口在确定本端口的Secondary Bus Number为N+1,Subordinate Bus Number为N+2后,将该配置读请求转入内部路由,发送给DPA。
步骤915:DPA检测到本端口的Primary Bus Number为N+1,Secondary Bus Number为N+2,Subordinate Bus Number为N+2,DPA进一步根据配置空间enable寄存器bit0确定PCIe switch DPA已使能,根据位图寄存器DPA Port Bit Map LSB/MSB两个寄存器的值确定存在已使能了代理功能的下游端口。DPA将配置读请求路由到下游端口DP_0。
下游端口DP_0检测到本端口的Primary Bus Number为N+1,Secondary BusNumber为N+2,Subordinate Bus Number为N+2,将配置读请求路由到与其连接的端点设备EP_0.
步骤916:端点设备EP_0返回完成TLP(Completion TLP)包到下游端口DP_0,所述完成TLP包携带端点设备EP_0的Device ID和Vendor ID寄存器值。下游端口DP_0将所述完成TLP包路由至DPA。
步骤917:DPA接收所述完成TLP包,DPA根据enable寄存器bit0确定DPA功能已使能,根据位图寄存器确定下游端口DP_0已使能代理功能,将所述完成TLP包中设备标识转换为0,然后将完成TLP包通过PCIe switch上游端口路由至处理器。其中,所述完成TLP报文的设备标识携带在完成者BDF中,完成者BDF又称为完成者ID。
步骤918:处理器接收到所述完成TLP包,确定所述完成TLP包中的Device ID和Vendor ID的值为非0xFFFF时,判定总线N+2上存在PCIe设备。处理器发送对bus为N+2,device为0,function为0的设备PCI Header Type寄存器配置读请求。
步骤919:与前述方案类似,PCIe端点设备EP_0返回本设备的PCI Header Type寄存器值。处理器读取到PCIe端点设备EP_0返回的PCI Header Type寄存器值为00000000b。系统枚举软件根据PCIe协议识别到bus为N+2,device为0,function为0的设备为端点设备,且只含有1个function。
步骤920:类似地,处理器继续读取bus为N+2,device为0,function为0的设备配置空间PCI Express Capability寄存器。
步骤921:PCIe端点设备EP_0返回PCI Express Capability寄存器值。系统枚举软件读取到PCIe端点设备EP_0返回的PCI Express Capability寄存器值为非0xFFFF,且Device/Port Type字段为0000b。系统枚举软件根据PCIe协议识别到bus为N+2,device为0,function为0的设备为端点设备。
若端点设备含有多个function,系统枚举软件读取到PCIe端点设备EP_0返回的PCI Header Type寄存器值为10000000b。系统枚举软件根据PCIe协议识别到bus为N+2,device为0,function为0的设备为端点设备,且只含有多个function。则系统枚举软件重复上述步骤将bus为N+2,device为0,function为1~7的端点设备枚举进系统。
在处理器(系统枚举软件)完成对下游端口DP_0的枚举后,需要扫描bus N+2下所有的设备功能。在一种具体的实施方式中,计算机操作系统内核中增加强制扫描的启动参数,示例性的,对于Linux系统而言,可以在Linux内核中增加启动参数pci=pcie_scan_all,使得处理器可以强制枚举bus N+2下的所有设备功能,即共执行256次扫描。在处理器在接收到EP_0返回的PCI Header Type寄存器值为00000000b时,避免处理器因为发现EP_0为只有1个function的设备,误以为已完成bus N+2的总线扫描,从而遗漏了对bus N+2总线上其他设备功能的扫描。示例性的,还可以参与其他参数设置的方式使得处理器可以对DPA的下级总线连接的设备执行完整扫描,本申请实施例不再赘述。
通过上述设置,处理器在完成对bus为N+2,device为0的设备的枚举后,在步骤922中,处理器继续对bus为N+2,device为1至m-1,function为1至7的设备功能执行枚举,m为大于等于1的整数。具体的枚举过程与处理器对bus为N+2,device为0,function为0的设备的枚举过程相同。本申请实施例不再赘述。
需要说明的是,当使能了代理功能的下游端口未连接PCIe端点设备时,处理器在枚举过程中跳过该端口,同时跳过该端口对应的device ID,继续枚举其他的下游端口。
在处理器完成对bus N+2下所有的端点设备的枚举后,处理器继续枚举,遍历busN+1。
步骤923:处理器发送针对bus为N+1,device为m,function为0的设备的配置读请求,所述配置读请求用于获取该设备的Device ID和Vendor ID。
示例性的,图3所示的PCIe架构图中,在完成DPA下的下游端口DP_0至DP_m-1连接的端点设备的枚举后,处理器继续枚举下游端口DP_m连接的设备,此时,配置读请求中带的device ID为1(即对应用图3的架构,对DP_m枚举过程中,下述步骤中的m取值为1)。需要说明的是,当存在多个下游端口未使能代理功能时,此处的配置读请求的device ID逐次加1。
步骤924:由于步骤923中配置读请求携带的bus为N+1,PCIe switch上游端口在确定本端口的Secondary Bus Number为N+1,Subordinate Bus Number为N+2后,将该配置读请求转入内部路由,发送给DP_m。
步骤925:PCIe switch下游端口DP_m检测到本端口的Primary Bus Number为0,Secondary Bus Number为0,Subordinate Bus Number为0,向处理器返回下游端口DP_m的Device ID和Vendor ID寄存器值。
处理器确定PCIe switch下游端口DP_m返回的Device ID和Vendor ID的值为非0xFFFF,判定总线bus为N+1,device为m,function为0的设备存在。
步骤926:类似地,处理器继续读取bus为N+1,device为m,function为0的设备配置空间PCI Header Type寄存器。处理器获取下游端口DP_m返回的PCI Header Type寄存器值为10000001b。系统枚举软件根据PCIe协议识别到bus为N+1,device为m,function为0的设备为PCI-PCI桥。
步骤927:类似地,处理器继续读取bus为N+1,device为m,function为0的设备配置空间PCI Express Capability寄存器。处理器读取到PCIe switch下游端口DP_m返回的PCIExpress Capability寄存器值为非0xFFFF,且Device/Port Type字段为0110b。系统枚举软件根据PCIe协议识别到bus为N+1,device为m,function为0的设备为PCIe switch下游端口。
步骤928:处理器向bus为N,device为0,function为0的设备配置写Primary BusNumber寄存器为N,Secondary Bus Number为N+1,Subordinate Bus Number为N+3。即PCIeswitch上游端口的Primary Bus Number寄存器为N,Secondary Bus Number为N+1,Subordinate Bus Number为N+3。
步骤929:处理器向bus为N+1,device为m,function为0的设备配置写Primary BusNumber寄存器为N+1,Secondary Bus Number为N+3,Subordinate Bus Number为N+3。即PCIe switch下游端口DP_m的Primary Bus Number寄存器为N+1,Secondary Bus Number为N+3,Subordinate Bus Number为N+3。
通过步骤924-929,处理器完成DP_m的枚举,进一步的,处理器继续枚举bus N+3,进行EP_m的枚举。
当存在其他未使能代理功能的下游端口时,处理器采用相同方式,继续枚举其他下游端口以及其他下游端口下连接的PCIe设备。
通过上述方式,处理器完成了图3所示的PCIe系统的枚举。在其他可能的实施方式中,当PCIe系统存在更多的下级PCIe switch以及PCIe switch存在更多的端口时,重复执行前述的步骤,即可完成各种PCIe系统中的设备枚举。
PCIe内存地址资源分配:
处理器(运行系统枚举软件)为PCIe系统中各PCIe设备分配内存地址,在一种可能的实施方式中,处理器可以根据传统PCIe设备内存(memory)地址资源分配算法进行内存地址分配。
处理器首先遍历各PCIe端点设备声明需要的内存地址资源,然后从系统内存地址资源中申请相应的地址空间,再将起始地址写到PCIe端点设备BAR寄存器,并调整该端点设备至RP的路径上各桥设备的地址窗口。例如,PCI-PCI桥的Memory Limit寄存器和MemoryBase寄存器表示的32位地址窗口,以及Prefetchable Memory Limit寄存器、PrefetchableMemory Base寄存器、Prefetchable Memory Upper Base Address寄存器和PrefetchableMemory Upper Limit Address寄存器表示的64位地址窗口。
具体的,PCIe switch DPA在将系统枚举软件针对PCIe端点设备的Memory Base寄存器的配置写TLP包路由至PCIe switch下游端口时,进行记录。PCIe switch可以感知下游端口连接的所有端点设备的32位/64位起始地址。桥设备的地址窗口(基于PCI-PCI桥的32位和64位地址窗口)必须包含其下游全部PCIe设备使用的地址范围,则PCIe switch固件FW可根据各下游端口连接的PCIe端点设备起始地址计算出结束地址,并将其设置到下游端口Memory Limit寄存器和Memory Base寄存器Prefetchable Memory Limit寄存器、Prefetchable Memory Base寄存器、Prefetchable Memory Upper Base Address寄存器和Prefetchable Memory Upper Limit Address寄存器。示例性的,如图10所示,为本申请实施例提供的一种内存地址资源分配图。PCIe系统架构中,位于上游的设备的地址窗口包含其各层下游设备的地址窗口。图10的示例中,各地址窗口连续。具体的,PCIe switch上游端口的地址窗口为[A,Z],PCIe switch中的DPA的地址窗口为[A,Y],PCIe switch中的下游端口DP_0、DP_1、…、DP_m-1使能了代理功能,此时,PCIe switch DPA代理的DP_0的地址窗口为[A,B],DP_1的地址窗口为[B,C],…,DP_m-1的地址窗口为[X,Y],未使能代理功能的DP_m的地址窗口为[Y,Z]。在一种可能的实施方式中,当存在足够容量的寄存器记录离散的地址窗口时,各设备的地址窗口也可以采用不连续的地址空间。
PCIe协议定义了ID路由(ID Based Routing)、地址路由(Address BasedRouting)以及隐式路由(implicit routing)等工作流程,本申请实施例提供的包含DPA的PCIe switch应用在PCIe架构中时,前述的工作流程也需要做相应的调整。
如图11所示,为本申请实施例提供的一种ID路由的方法流程示意图。ID路由一般应用在配置请求(配置读请求/写请求)的传输流程中。所述方法包括:
步骤1101:PCIe switch上游端口接收来自处理器的配置请求,确定配置请求携带的BDF中的bus号是否落入所述上游端口的下级bus和从属bus的范围,如果是,则将配置请求转入PCIe switch内部路由,发送给DPA。
所述配置请求可以为处理器发出的配置读/写请求TLP包。需要说明的是,本申请实施例是以配置请求发送到DPA为例进行说明,当上游端口根据配置请求携带的BDF需要将配置请求路由到未使能代理功能的下游端口时,可以按照PCIe协议规定的流程执行。
步骤1102:DPA接收所述配置请求,确定所述配置请求携带的目标BDF中的bus号是否落入DPA的下级bus和从属bus的范围,如果是,DPA根据所述配置请求携带的目标BDF中的D(即设备标识,可以用device(5bits)表示)将配置请求路由到对应的下游端口,其中所述配置请求携带设备标识的值作为下游端口的编号,DPA将配置请求携带的目标BDF中的设备标识改成0。
步骤1103:下游端口将配置请求路由到与该下游端口连接的端点设备。
步骤1101-1103中对配置请求处理的具体举例可以参见步骤913至步骤916。
步骤1104:DPA配置请求携带的BDF中的bus号不属于DPA的下级bus和从属bus定义的范围,则说明发生了路由错误。此时DPA可以参考协议定义的桥设备进行错误处理的流程来操作,本申请实施例并不进行限定。
步骤1105:PCIe switch上游端口接收处理器发出的完成TLP包,确定所述完成TLP包携带请求者BDF中的bus号是否落入所述上游端口的下级bus和从属bus的范围,如果是,则将所述完成TLP包转入PCIe switch内部路由,发送给DPA。
步骤1106:DPA接收所述完成TLP包,确定所述完成TLP包携带的请求者BDF中的bus号是否落入DPA的下级bus和从属bus的范围,如果是,DPA将所述所述完成TLP包携带的请求者BDF中的D(即设备标识,可以用device(5bits)表示)更改为0,然后将所述完成TLP包路由到对应的下游端口,其中所述完成TLP包携带的请求者BDF中的原始设备标识的值作为下游端口的编号。
步骤1107:下游端口将所述完成TLP包路由到与该下游端口连接的端点设备。
步骤1108:DPA确定所述完成TLP包携带的请求者BDF中的bus号未落入DPA的下级bus和从属bus的范围时,表示发生了路由错误,执行错误处理操作。
步骤1109:PCIe switch下游端口接收来自端点设备的完成TLP包,将所述完成TLP包发送给DPA。
步骤1110:DPA接收所述完成TLP包,确定发送所述完成TLP包的下游端口的编号,根据enable寄存器bit0确定DPA功能已使能,且根据位图寄存器的值确定发送所述完成TLP包的下游端口已使能代理功能后,DPA将所述完成TLP包中携带的完成者BDF中的设备标识更改为所述下游端口的编号,DPA将所述完成TLP包通过上游端口路由到处理器。
步骤1111:在接收到所述完成TLP包后,如果DPA根据enable寄存器bit0确定DPA功能未使能,或者,根据位图寄存器的值确定发送所述完成TLP包的下游端口未使能代理功能,则DPA不修改所述完成TLP包的设备标识,而是直接将所述完成TLP包通过上游端口发送到处理器。
包含DPA的PCIe switch执行地址路由的方法逻辑包括:
PCIe switch上游端口收到来自处理器的存储器操作请求(例如,memory读/写请求TLP包)时,判断目标地址是否落入PCIe switch上游端口的地址窗口内。如果目标地址落入PCIe switch上游端口的地址窗口内则进入PCIe switch内部路由。PCIe switch内部路由判断目标地址是否落入PCIe switch DPA的地址窗口内。如果目标地址落入PCIe switchDPA的地址窗口范围,则PCIe switch上游端口将收到的存储器操作请求路由至PCIeswitch DPA。DPA判断目标地址是否落入DPA代理的下游端口地址窗口。如果目标地址属于PCIe switch DPA代理的下游端口的地址窗口范围,则将存储器操作请求路由至PCIeswitch DPA代理的下游端口。PCIe switch下游端口将存储器操作请求路由至与其相连的PCIe端点设备。如果DPA确定目标地址落入PCIe switch未被DPA代理下游端口的地址窗口内,则表示发生了路由错误。
PCIe下游端口收到来自端点设备的内存操作请求(例如,memory读/写请求TLP包)时,将内存操作请求发送给DPA。DPA检测发送所述内存操作请求的下游端口是否使能了代理功能,如果未使能,DPA将内存操作请求通过上游端口路由到处理器,如果已使能,则DPA将内存操作请求中的设备标识更改为发送所述内存操作请求的下游端口的编号,然后将所述内存操作请求通过上游端口路由到处理器。具体的,内存操作请求的设备标识携带在请求中的BDF中。
包含DPA的PCIe switc执行隐式路由的方法逻辑包括:
PCIe switch上游端口收到来自处理器的隐式TLP包(即消息报文)时,根据隐式TLP包中消息路由子字段进行路由。
DPA接收到上游端口发送的隐式TLP包时,确定发送所述隐式TLP包的下游端口是否使能了代理功能,如果是,则将隐式TLP包中的请求者BDF中的设备标识更改为0,然后,如果否,则直接根据TLP包中消息路由子字段进行路由。
被PCIe switch DPA代理的下游端口主动发出的隐式TLP包经PCIe switch DPA时,DPA需要将TLP包中请求者ID/BDF改为PCIe switch DPA的BDF。
未被PCIe switch DPA代理的下游端口主动发出的隐式TLP包则直接根据TLP包中消息路由子字段进行路由。
在DPA代理的下游端口发生端点设备热插拔时,下游端口上报的中断消息报文经过DPA时,由DPA按照前述隐式路由的规则更改BDF,将中断上报至处理器,触发DPA热插拔中断。DPA执行端口扫描,与前述实施例描述的强制设备功能扫描类似,此时,DPA需要强制扫描device(5bits).function(3bits)表示的256个设备功能。
在DPA代理的下游端口上报错误消息报文时,DPA将错误消息报文的BDF更改为DPA的BDF,并在DPA和下游端口的配置空间寄存器中记录端口的状态信息,处理器在接收到所述错误消息报文时,遍历DPA下的各下游端口的配置空间寄存器,根据前述记录的端口的状态确定检测到错误的下游端口的编号,从而针对该下游端口执行错误处理。具体的记录端口的状态的配置空间寄存器可以为AER(advanced error reporting)功能寄存器。
需要说的是,在本申请各实施例中,处理器与PCIe switch之间可能存在一层或多层的桥设备,处理器通过与PCIe switch之间的桥设备进行通信。为简便描述,本申请上述各实施例以PCIe switch直连到处理器RP为例进行说明。可以理解的是,当处理器与PCIeswitch之间存在传统PCIe桥设备时,中间的PCIe桥设备可以根据PCIe协议的定义处理处理器和本申请实施例提供的PCIe switch之间的通信。
本申请实施例为保证与当前PCIe协议的场景兼容,仅允许DPA将其代理的下游端口连接的PCIe端点设备映射到BDF中的设备标识上,而设备标识为5bits,因此,一个DPA最多只能映射32个下游端口连接的PCIe端点设备。若PCIe端点设备的Fuction小于8个,则仍存在PCIe ID浪费问题。为解决该问题,可设置将DPA映射下游端口连接的PCIe端点设备的设备标识由5bits拓展为6bits或者7bits,相应地,function占用的bit则由3bits缩减为2bits或1bit。此时,DPA映射下游端口连接的PCIe端点设备数量和PCIe端点设备function数量表格如下表所示:
本申请实施例提供了一种包含DPA的PCIe switch,通过DPA为多个下游端口提供代理,在不改动现有BIOS、OS PCIe子系统和PCIe设备驱动情况下,将多个下游端口对上层系统呈现为一个端口,从而减少了bus的占用,提高了PCIe系统支持的端点设备的数量。具体的,本申请实施例可以增加DPA驱动,而不需要更改PCIe系统其它部分的软件,对现有系统影响小。同时,本申请实施例无需增加NTB等隔离两个PCIe域的电路单元,因此成本低。进一步的,当DPA采用ASIC芯片实现时,执行上游端口与下游端口之间的通信转发的性能高。
如图12所示,为本申请实施例提供的一种PCIe交换设备1200的装置结构示意图,PCIe交换设备1200包括处理器1201、内部连接1202、上游端口1204、多个下游端口1205以及存储器1203。其中,所述处理器1201可以为多个处理器核,所述处理器可以包括多个寄存器,用来存储PCIe交换设备的配置信息。图12所示的PCIe交换设备,端点代理装置(前述实施例中的DPA)可以采用软件模块,即由处理器1201执行存储器1203中的指令,实现前述DPA的功能。所述上游端口1202可以为一个或多个。
可选的,上述处理器1201可以是一个通用中央处理器(central processingunit,CPU),网络处理器(network processor,NP),微处理器,或一个或多个用于控制本申请方案程序执行的集成电路。
上述内部连接1202可包括一通路,在上述组件之间传送信息。可选的,内部连接1202为总线。
上述存储器1203可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器1203用于存储执行本申请方案的应用程序代码,并由处理器1201来控制执行。处理器1201用于执行存储器1203中存储的应用程序代码,以及配合上游端口1204和下游端口1205,从而使得该装置1200实现本申请前述实施例中描述的功能。
在具体实现中,作为一种实施例,处理器1201可以包括一个或多个CPU,例如图12中的CPU0和CPU1。
在具体实现中,作为一种实施例,该PCIe交换设备1200可以包括多个处理器。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (34)
1.一种PCIe交换设备,其特征在于,包括:上游端口、端口代理装置和多个第一下游端口,其中,
所述上游端口与所述端口代理装置相连,所述端口代理装置与所述多个第一下游端口相连,所述第一下游端口用于连接PCIe端点设备;
所述多个第一下游端口与其下的PCIe端点设备的连接共享相同的总线号。
2.如权利要求1所述的设备,其特征在于,还包括:一个或多个第二下游端口,
其中,所述一个或多个第二下游端口与所述上游端口相连。
3.如权利要求1或2所述的设备,其特征在于,
所述端口代理装置与所述多个第一下游端口具备相同的归属总线号。
4.如权利要求1-3任一所述的设备,其特征在于,
所述第一下游端口的编号用于表示与所述第一下游端口连接的PCIe端点设备的设备标识。
5.如权利要求4所述的设备,其特征在于,
所述端口代理装置用于从所述第一下游端口接收PCIe端点设备发送的数据包,将所述数据包中的设备标识替换为所述第一下游端口的编号。
6.如权利要求5所述的设备,其特征在于,
当所述PCIe端点设备发送的数据包为请求TLP包时,所述端口代理装置具体用于将所述请求TLP包携带的请求者BDF中的设备标识替换为与所述PCIe端点设备相连的第一下游端口的编号,或者,
当所述PCIe端点设备发送的数据包为完成TLP包时,所述端口代理装置具体用于将所述完成TLP包携带的完成者BDF中的设备标识替换为与所述PCIe端点设备相连的第一下游端口的编号。
7.如权利要求4-6任一所述的设备,其特征在于,
所述端口代理装置用于接收所述处理器发送的数据包,将所述数据包中设备标识的值作为接收所述数据包的目的端口的编号,并将所述数据包中的设备标识更改为0,将所述数据包发送到所述目的端口。
8.如权利要求7所述的设备,其特征在于,
当所述处理器发送的数据包为配置请求TLP包时,将所述配置请求TLP包携带的目的BDF中的设备标识替换为0,或者,
当所述处理器发送的数据包为完成TLP包时,将所述完成TLP包携带的请求者BDF中的设备标识替换为0。
9.如权利要求1-8任一所述的设备,其特征在于,
所述端口代理装置的配置空间寄存器中映射有归属于所述端口代理装置的所有第一下游端口的配置空间寄存器。
10.如权利要求1-9任一所述的设备,其特征在于,
所述端口代理装置的使能寄存器的值用于表示所述端口代理装置的代理功能是否使能。
11.如权利要求1-10任一所述的设备,其特征在于,
所述PCIe交换设备在上电或者复位初始化时,通过固件或者读取非易失性存储器的方式,设置所述端口代理装置的寄存器。
12.如权利要求1-11任一所述的设备,其特征在于,
所述端口代理装置,用于接收所述上游端口转发的第一配置请求,所述第一配置请求携带所述端口代理装置的管理拓扑对应的各总线号;
所述端口代理装置,还用于根据所述第一配置请求,设置自身的管理拓扑对应的各总线号,并将其下连接的所有第一下游端口的管理拓扑设置为相同的总线号。
13.如权利要求1-12任一所述的设备,其特征在于,
所述端口代理装置,用于接收处理器发送的第二配置请求,所述第二配置请求携带的总线号为所述端口代理装置的下级总线号、携带的设备标识为m,m为大于等于0的整数;
所述端口代理装置,还用于根据所述第二配置请求携带的设备标识的值m,将所述第二配置请求路由到对应的目的端口,所述目的端口的编号等于m。
14.如权利要求2所述的设备,其特征在于,
所述端口代理装置用于根据端口使能记录确定所述多个第一下游端口使能了代理功能,以及确定所述一个或多个第二下游端口未使能代理功能。
15.如权利要求1-14所述的设备,其特征在于,
所述端口代理装置的地址窗口为其下连接的所有第一下游端口的地址窗口的合集。
16.如权利要求1所述的设备,其特征在于,
所述端口代理装置还用于接收其下的第一下游端口上报的消息报文,将所述消息报文中携带的所述第一下游端口的BDF替换为自身的BDF,将所述消息报文路由到上游端口。
17.如权利要求1所述的设备,其特征在于,所述PCIe交换设备不经过其他桥设备连接到处理器的根端口或者通过其他的桥设备连接到处理器的根端口。
18.如权利要求4所述的设备,其特征在于,所述PCIe端点设备的设备标识的位数与功能标识的位数之和为8。
19.如权利要求18所述的设备,其特征在于,所述PCIe交换设备为专用集成电路ASIC芯片。
20.如权利要求1-19所述的设备,其特征在于,所述PCIe交换设备中包含多个并列的端口代理装置,每个端口代理装置与一组所述第一下游端口相连。
21.一种PCIe交换设备,其特征在于,包括:处理器、存储器、上游端口和多个第一下游端口,所述存储器中存储有指令,当处理器执行所述指令时实现如权利要求1-20所述的端口代理装置的功能。
22.一种扩展PCIe系统的方法,其特征在于,所述PCIe系统包括处理器和PCIe交换设备,所述PCIe交换设备包括:上游端口、端口代理装置和多个第一下游端口,其中,
所述端口代理装置通过所述上游端口连接到所述处理器,所述端口代理装置与所述多个第一下游端口相连,所述第一下游端口用于连接PCIe端点设备,
所述方法包括:
所述处理器通过端口代理装置将所述多个第一下游端口与其下的PCIe端点设备的连接设置为相同的总线号。
23.如权利要求21或22所述的方法,其特征在于,
所述端口代理装置与所述多个第一下游端口具备相同的归属总线号。
24.如权利要求21-23任一所述的方法,其特征在于,
所述第一下游端口的编号用于表示与所述第一下游端口连接的PCIe端点设备的设备标识。
25.如权利要求24所述的方法,其特征在于,所述方法还包括:
所述端口代理装置从所述第一下游端口接收PCIe端点设备发送的数据包,将所述数据包中的设备标识替换为所述第一下游端口的编号。
26.如权利要求24或25所述的方法,其特征在于,所述方法还包括:
所述端口代理装置接收所述处理器发送的数据包,将所述数据包中设备标识的值作为接收所述数据包的目的端口的编号,并将所述数据包中的设备标识更改为0,将所述数据包发送到所述目的端口。
27.如权利要求21-26任一所述的方法,其特征在于,
所述端口代理装置的配置空间寄存器中映射有归属于所述端口代理装置的所有第一下游端口的配置空间寄存器。
28.如权利要求21-27任一所述的方法,其特征在于,
所述端口代理装置的使能寄存器的值用于表示所述端口代理装置的代理功能是否使能。
29.如权利要求21-28任一所述的方法,其特征在于,所述方法还包括:
所述PCIe交换设备在上电或者复位初始化时,通过固件或者读取非易失性存储器的方式,设置所述端口代理装置的寄存器。
30.如权利要求21-29任一所述的方法,其特征在于,所述方法还包括:
所述端口代理装置接收所述上游端口转发的第一配置请求,所述第一配置请求携带所述端口代理装置的管理拓扑对应的各总线号;
所述端口代理装置根据所述第一配置请求,设置自身的管理拓扑对应的各总线号,并将其下连接的所有第一下游端口的管理拓扑设置为相同的总线号。
31.如权利要求21-30任一所述的方法,其特征在于,所述方法还包括:
所述端口代理装置接收处理器发送的第二配置请求,所述第二配置请求携带的总线号为所述端口代理装置的下级总线号、携带的设备标识为m,m为大于等于0的整数;
所述端口代理装置根据所述第二配置请求携带的设备标识的值m,将所述第二配置请求路由到对应的目的端口,所述目的端口的编号等于m。
32.如权利要求21-31任一所述的方法,其特征在于,所述PCIe设备还包括一个或多个第二下游端口,所述方法还包括:
所述端口代理装置根据端口使能记录确定所述多个第一下游端口使能了代理功能,以及确定所述一个或多个第二下游端口未使能代理功能。
33.一种PCIe系统,其特征在于,包括处理器和如权利要求1-20任一所述的PCIe交换设备。
34.如权利要求33所述的系统,其特征在于,所述PCIe交换设备包括第一PCIe交换设备和第二PCIe交换设备,其中,所述第二PCIe设备的上游端口连接到所述第一交换设备的第二下游端口,所述第二下游端口未使能代理功能。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP21842488.5A EP4167100A4 (en) | 2020-07-13 | 2021-06-28 | PCIE SYSTEM EXTENSION METHOD, PCIE SWITCH DEVICE AND PCIE SYSTEM |
PCT/CN2021/102622 WO2022012309A1 (zh) | 2020-07-13 | 2021-06-28 | 扩展PCIe系统的方法、PCIe交换设备及PCIe系统 |
US18/150,991 US20230161728A1 (en) | 2020-07-13 | 2023-01-06 | Method for expanding pcie system, pcie switching device, and pcie system |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010677632 | 2020-07-13 | ||
CN2020106776327 | 2020-07-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114006875A true CN114006875A (zh) | 2022-02-01 |
Family
ID=79920810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011620807.7A Pending CN114006875A (zh) | 2020-07-13 | 2020-12-30 | 扩展PCIe系统的方法、PCIe交换设备及PCIe系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114006875A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115114219A (zh) * | 2022-07-22 | 2022-09-27 | 深圳星云智联科技有限公司 | 一种pci-e拓扑方法、装置、设备及存储介质 |
CN116028430A (zh) * | 2023-03-28 | 2023-04-28 | 飞腾信息技术有限公司 | 一种pcie设备扫描方法及片上系统 |
WO2024113985A1 (zh) * | 2022-11-30 | 2024-06-06 | 苏州元脑智能科技有限公司 | 存储系统、数据处理方法及装置、非易失性存储介质及电子设备 |
-
2020
- 2020-12-30 CN CN202011620807.7A patent/CN114006875A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115114219A (zh) * | 2022-07-22 | 2022-09-27 | 深圳星云智联科技有限公司 | 一种pci-e拓扑方法、装置、设备及存储介质 |
CN115114219B (zh) * | 2022-07-22 | 2023-10-20 | 深圳星云智联科技有限公司 | 一种pci-e拓扑方法、装置、设备及存储介质 |
WO2024113985A1 (zh) * | 2022-11-30 | 2024-06-06 | 苏州元脑智能科技有限公司 | 存储系统、数据处理方法及装置、非易失性存储介质及电子设备 |
CN116028430A (zh) * | 2023-03-28 | 2023-04-28 | 飞腾信息技术有限公司 | 一种pcie设备扫描方法及片上系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022012309A1 (zh) | 扩展PCIe系统的方法、PCIe交换设备及PCIe系统 | |
CN114006875A (zh) | 扩展PCIe系统的方法、PCIe交换设备及PCIe系统 | |
JP7118922B2 (ja) | スイッチングデバイス、ペリフェラル・コンポーネント・インターコネクト・エクスプレスシステムおよびその初期化方法 | |
RU2640648C2 (ru) | Управление ресурсами для доменов высокопроизводительного межсоединения периферийных компонентов | |
JP4810349B2 (ja) | I/o装置及び方法 | |
CN108268412B (zh) | 用于扩展外围组件互连高速结构的系统和方法 | |
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 | |
US10698849B2 (en) | Methods and apparatus for augmented bus numbering | |
US20070136458A1 (en) | Creation and management of ATPT in switches of multi-host PCI topologies | |
JP5541021B2 (ja) | スイッチ装置 | |
JP2008165776A (ja) | データ処理システムの複数のルート複合体間の通信のために共用メモリを初期設定するための方法、プログラム、およびシステム(複数のルート複合体全域でエンドポイントを共用するために共用メモリを初期設定するためのシステムおよび方法) | |
US20180189191A1 (en) | Multi-level paging and address translation in a network environment | |
US20080137676A1 (en) | Bus/device/function translation within and routing of communications packets in a pci switched-fabric in a multi-host environment environment utilizing a root switch | |
JPH1049475A (ja) | 階層バス構造内のシステム資源の割振り方法 | |
CN112540941A (zh) | 一种数据转发芯片及服务器 | |
US20170185525A1 (en) | Speculative enumeration of bus-device-function address space | |
JP5058615B2 (ja) | ノード制御装置および情報処理装置 | |
CN114389995B (zh) | 资源共享的方法、装置以及电子设备 | |
CN116414759B (zh) | 计算机交换系统及地址分配、枚举、数据分发方法 | |
US7167941B2 (en) | Multi-port device configuration | |
JP4660362B2 (ja) | 計算機システム | |
JP2010039729A (ja) | I/o管理システム、サーバシステム及びそのi/oスイッチの管理方法 | |
CN116932451A (zh) | 一种数据处理方法、主机及相关设备 | |
CN100382056C (zh) | 在基于链路的计算系统内的输入/输出配置消息发送 | |
JP4854050B2 (ja) | ノード制御装置、ノード制御装置の制御方法、情報処理システム、及びコンピュータプログラム |
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 |