掌桥专利:专业的专利平台
掌桥专利
首页

一种PCIe交换器端口管理结构、访问控制方法及系统

文献发布时间:2024-04-18 19:59:31


一种PCIe交换器端口管理结构、访问控制方法及系统

技术领域

本发明属于高速串行计算机扩展总线领域,涉及一种PCIe交换器端口管理结构、访问控制方法及系统。

背景技术

PCIe是一种全双工、点对点的高速串行总线,具有高带宽、低延迟、高可靠性等优点,可以应用于电脑、服务器、分布式计算平台等。正是有了PCIe协议这种高传输速率的串行总线技术,Intel、AMD、IBM等各厂商之间迅速实现了大一统,CPU、GPU等计算芯片和存储芯片之间可以实现高速互连,无需再经过其它硬件。PCIe设备主要包括根复合体(RootComplex)、交换器(Switch)、终端设备(Endpoint),其中PCIe交换器用于扩展PCIe端口,从而实现多设备的互连,提高整个系统的计算能力。

PCIe Switch内部结构可以看成是两个或更多的虚拟PCI到PCI桥,具体功能类似现在的网络交换机,现有技术大部分与PCIe交换芯片应用相关,对PCIe交换芯片的端口管理存在盲区,导致芯片在出现故障时不能针对某个端口进行精细化管理。

发明内容

本发明的目的在于解决现有技术中对PCIe交换芯片的端口管理存在盲区,导致芯片在出现故障时不能针对某个端口进行精细化管理的问题,提供一种PCIe交换器端口管理结构、访问控制方法及系统。

为达到上述目的,本发明采用以下技术方案予以实现:

本发明提出的一种PCIe交换器端口管理结构,包括请求事务分解模块、路由查找表模块、仲裁模块、端口访问控制模块;

请求事务分解模块的输入端连接有上游设备,请求事务分解模块的第一输出端连接有缓存模块;请求事务分解模块的输出端连接路由查找表模块用于获取访问的目的端口;路由查找表模块的输出端连接仲裁模块,仲裁模块的输出端连接端口访问控制模块,端口访问控制模块的输出端口连接有完成包组装模块,完成包组装模块将组装信息传输至上游设备;端口访问控制模块上还连接有下游设备。

优选地,在仲裁模块的第二输入端口连接有用于对交换器进行初始化配置的EEPROM/I2C接口。

优选地,所述下游设备有若干个。

本发明提出的一种PCIe交换器端口管理结构的访问控制方法,包括如下步骤:

上游设备将信息传输至请求事务分解模块,请求事务分解模块对接收的信息进行分解后存入缓存模块;

请求事务分解模块将分解的信息传入路由查找表模块获取访问的目的端口,将访问的目的端口信息传输至仲裁模块进行访问请求控制;

端口访问控制模块分别对仲裁模块和下游设备的端口进行访问获取访问结果,将访问结果传输至完成包组装模块进行组装后传输至上游设备,完成PCIe交换器端口管理。

优选地,请求事务分解模块将上游设备传输的信息分解为TLP头标中的TAG、地址、请求者ID和完成者ID。

优选地,路由查找表模块对请求事务分解模块进行访问请求,分为地址路由和ID路由;

地址路由:MRD、MWR事务使用地址路由方式,使用TLP头标中的32/64位地址来进行路由寻址;

ID路由:使用TLP头标中的总线号、设备号和功能号确定目的设备,每个设备都设置有总线号和设备号寄存器,由Type0配置写事务进行配置。

优选地,路由查找表模块查询成功时,将请求事务转换到目的端口控制器的DBI接口,等待访问完成,将访问结果和缓存中TAG关联的数据组装成完成包,返回上游设备端口;

路由查找表模块查询失败时,将失败信息和缓存中TAG关联的数据组装成完成包,返回上游设备端口。

优选地,仲裁模块按照接收请求顺序,任意端口请求处于pending状态时,halt信号置“1”,阻止交换器各端口处理接收到的其它事务,直到当前访问完成,再处理下一个请求。

优选地,端口访问控制模块通过DBI接口对PCIe端口寄存器进行读写,当DBI接口应答信号lbc_dbi_ack有效时访问完成,接收端口控制器返回的访问结果。

本发明提出的一种PCIe交换器端口管理结构的访问控制系统,包括:

信息分解模块,所述信息分解模块用于上游设备将信息传输至请求事务分解模块,请求事务分解模块对接收的信息进行分解后存入缓存模块;

信息访问模块,所述信息访问模块用于请求事务分解模块将分解的信息传入路由查找表模块获取访问的目的端口,将访问的目的端口信息传输至仲裁模块进行访问请求控制;

访问结果获取模块,所述访问结果获取模块用于端口访问控制模块分别对仲裁模块和下游设备的端口进行访问获取访问结果,将访问结果传输至完成包组装模块进行组装后传输至上游设备,完成PCIe交换器端口管理。

与现有技术相比,本发明具有以下有益效果:

本发明提出的一种PCIe交换器端口管理结构,通过对各端口接收的事务进行解析、处理及完成包的组装、发送,可以实现对PCIe交换器灵活可变的多端口进行配置、对读写事务进行访问控制,满足多种模式的交换结构下对交换器的各端口进行管理,实现PCIe交换电路高效有序地完成端口寄存器配置,并且可以防止访问过程中发生死锁,提高了交换电路各端口的访问效率。具体的,采用请求事务分解模块对接收的信息进行解析,按照事务的接收顺序在路由查找表模块中对事务的目的地址进行路由。如果出现两个以上端口同时对某一个端口进行访问,可能发生死锁现象,导致端口无法继续接收和发送事务,端口访问控制模块对各端口收到事务的控制信号进行监测并通过仲裁模块对访问请求进行处理,能够有效避免死锁,提高了访问效率。因此,端口访问控制模块可以根据实际配置的端口数调整端口控制信号,对全部端口访问进行管理,实现各端口之间的事务交换。再结合完成包组装模块实现对接口返回寄存器读出值及请求事务头标信息实现完成包组装,完成端口寄存器配置,从而解决现有技术存在的问题。

本发明提出的一种PCIe交换器端口管理结构的访问控制系统,通过将系统划分为信息分解模块、信息访问模块和访问结果获取模块,实现PCIe交换器的端口管理。采用模块化思想使各个模块之间相互独立,方便对各模块进行统一管理。

附图说明

为了更清楚的说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明的PCIe交换器端口管理结构的框图。

图2为本发明的PCIe交换器端口管理结构的访问控制方法流程图。

图3为本发明的PCIe交换器端口管理结构的访问控制系统图。

其中:101-请求事务分解模块,102-路由查找表模块,103-仲裁模块,104-缓存模块,105-完成包组装模块,106-端口访问控制模块。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

在本发明实施例的描述中,需要说明的是,若出现术语“上”、“下”、“水平”、“内”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

下面结合附图对本发明做进一步详细描述:

本发明提出的一种PCIe交换器端口管理结构,如图1所示,包括请求事务分解模块101、路由查找表模块102、仲裁模块103、端口访问控制模块106;

请求事务分解模块101的输入端连接有上游设备,请求事务分解模块101的第一输出端连接有缓存模块104;请求事务分解模块101的输出端连接路由查找表模块102用于获取访问的目的端口;路由查找表模块102的输出端连接仲裁模块103,仲裁模块103的输出端连接端口访问控制模块106,端口访问控制模块106的输出端口连接有完成包组装模块105,完成包组装模块105将组装信息传输至上游设备;端口访问控制模块106上还连接有下游设备。

其中,在仲裁模块103的第二输入端口连接有用于对交换器进行初始化配置的EEPROM/I2C接口。下游设备有若干个。

本发明提出的PCIe交换器端口管理结构,用于PCIe交换器中,可以满足不同交换结构下进行端口配置,其工作原理如下:

上游设备发送配置读写事务、存储器读写事务等,事务层包由头标(Header)、数据载荷(Data Payload)和TLP摘要(TLP Digest)三个部分组成。PCIe交换器的上游端口接收后,在请求事务分解模块101中对请求事务进行分解,通过对头字段的分析判断TLP的功能和负责的事务,用于TLP的管理和控制。将TLP头标中的TAG、地址、请求者ID、完成者ID信息存入缓存模块104。

交换器需要决定数据被传递给哪个端口,做出决定的依据则是TLP的路由方式,按照事务的接收顺序在路由查找表模块102中对事务的目的地址进行路由,如果接收到存储器读写事务则基于地址路由,访问目的地址为TLP头标中的32/64位地址。如果接收到配置读写事务则基于ID的路由,使用TLP头标中的总线号、设备号和功能号寻址目标设备。

对交换器端口寄存器配置管理,可通过配置写事务和存储器写事务两种事务对端口寄存器进行读写访问,由于存储器写事务不需要回复完成包,存储器写事务未完成时再收到其它事务会导致访问出现死锁。也可能存在多个端口同时对同一个端口发起访问,导致访问出现冲突。因此需要在仲裁模块103中进行仲裁,按照接收请求顺序,任意端口请求处于pending状态时,halt信号置“1”,阻止交换器各端口处理接收到的其它事务,直到当前访问完成,再处理下一个请求,可以有效避免访问过程中发生冲突和死锁现象。

通过DBI接口对端口寄存器进行读写,端口访问控制模块106对所有端口控制器的DBI接口进行统一管理,配置读事务和存储器读事务访问完成时,DBI接口返回寄存器读出值,传递到完成包组装模块105中,在缓存模块104中选择相应的请求事务头标信息,一起组装成完成包,再通过交换器上游端口发送到上游设备。配置写事务回复一个不带数据的完成包,存储器写事务不需要回复完成包。

因此,本发明涉及的PCIe交换器包括多个PCIe端口、EEPROM/I2C接口等。PCIe端口包括一个上游端口和多个下游端口,为了适应不同应用对数据交换的需求,PCIe交换器可以通过硬件管脚或软件配置为多种端口结构,仲裁模块103用于处理EEPROM/I2C接口的寄存器配置、处理上游端口对交换器配置空间的请求事务,再结合端口访问控制模块106和完成包组装模块105实现PCIe协议规定事务的拆解及完成包的组装、发送,完成对所有PCIe端口控制器的配置管理。

本发明提出的一种PCIe交换器端口管理结构的访问控制方法,如图2所示,包括如下步骤:

步骤1、上游设备将信息传输至请求事务分解模块101,请求事务分解模块101对接收的信息进行分解后存入缓存模块104;

请求事务分解模块101将上游设备传输的信息分解为TLP头标中的TAG、地址、请求者ID和完成者ID。

步骤2、请求事务分解模块101将分解的信息传入路由查找表模块102获取访问的目的端口,将访问的目的端口信息传输至仲裁模块103进行访问请求控制;

路由查找表模块102对请求事务分解模块101进行访问请求,分为地址路由和ID路由;

地址路由:MRD、MWR事务使用地址路由方式,使用TLP头标中的32/64位地址来进行路由寻址;

ID路由:使用TLP头标中的总线号、设备号和功能号确定目的设备,每个设备都设置有总线号和设备号寄存器,由Type0配置写事务进行配置。

路由查找表模块102查询成功时,将请求事务转换到目的端口控制器的DBI接口,等待访问完成,将访问结果和缓存中TAG关联的数据组装成完成包,返回上游设备端口;

路由查找表模块102查询失败时,将失败信息和缓存中TAG关联的数据组装成完成包,返回上游设备端口。

步骤3、端口访问控制模块106分别对仲裁模块103和下游设备的端口进行访问获取访问结果,将访问结果传输至完成包组装模块105进行组装后传输至上游设备,实现PCIe交换器端口管理。

仲裁模块103按照接收请求顺序,任意端口请求处于pending状态时,halt信号置“1”,阻止交换器各端口处理接收到的其它事务,直到当前访问完成,再处理下一个请求。

端口访问控制模块106通过DBI接口对PCIe端口寄存器进行读写,当DBI接口应答信号lbc_dbi_ack有效时访问完成,接收端口控制器返回的访问结果。

上游设备接收到对PCIe交换器配置空间的请求事务时,请求事务分解模块101将TLP的头标信息进行解析,并将包头信息暂存到内部的缓存模块104,端口访问控制模块106通过DBI接口实现各端口寄存器访问。完成包组装模块105将端口返回数据和请求事务的包头信息重新组装,返回到发起请求的上游设备,该访问控制方法的具体实现步骤如下:

步骤1:请求事务分解

请求事务分解模块101对接收的TLP头标的解析,将TLP头标中的地址、FMT、TYPE、TAG等关键字提取出来,按照请求事务类型分为配置1读请求(CFGRD1)、配置1写请求(CFGWR1)、存储器读请求(MEMRD)、存储器写请求(MEMWR)。

步骤2:头标信息缓存

将TLP头标中的TAG、地址、请求者ID、完成者ID信息存入缓存模块104。缓存内容按照TAG编号顺序保存,当一个请求访问完成时,按照TAG编号得到对应的TLP头标信息组装成完成包,同时清除缓存中对应的内容。

步骤3:路由查找表

对端口寄存器的访问请求,根据事务类型分为地址路由和ID路由两种:

地址路由:MRD、MWR事务使用地址路由方式,使用TLP头标中的32/64位地址来进行路由寻址;

ID路由:使用TLP头标中的总线号、设备号和功能号确定目的设备。每个PCIe设备都设置有设备总线号和设备号寄存器,由Type0配置写事务进行配置,完成配置之前设备不会响应其外的任何事务。

路由查找表模块102根据拆解出的TLP头标信息以及配置的设备号信息,获得访问的目的端口,包含了空间基地址以及空间范围等配置信息,用于查询TLP路由目标端口。一旦查询成功就会将请求事务转换到目的端口控制器的DBI接口,等待访问完成,将访问结果和缓存中TAG关联的数据组装成完成包,返回源请求端口;当查询失败时,也会将失败信息和缓存中TAG关联的数据组装成完成包返回源请求端口。

步骤4:访问仲裁

由于PCIe端口控制器不支持DBI接口和PCIe事务同时访问端口寄存器,当本地处理器通过DBI接口访问上游端口寄存器时,此时上游端口有可能同时接收到CFG0事务通过控制器内部访问上游端口寄存器,导致上游端口控制器发生死锁,仲裁模块103通过对接收到的访问请求进行控制,当DBI访问未完成时阻止交换器各端口处理接收到的其它事务,避免控制器发生死锁。

步骤5:端口访问控制

端口访问控制模块106根据访问顺序分别对各PCIe端口访问。通过DBI接口对PCIe端口寄存器进行读写,当DBI接口应答信号lbc_dbi_ack有效时访问完成,接收端口控制器返回的访问结果。

步骤6:完成包组装

返回结果在完成包组装模块105与对应包头缓存信息一起进行处理组装成完成包,发送到原请求端口。访问端口地址范围内的寄存器请求返回带数据的完成包,写请求返回不带数据的完成包,不支持的请求返回带UR状态的完成包,目标设备无法完成本次请求返回带CA状态的完成包。

通过以上步骤,即可完成交换电路各端口寄存器的访问,满足不同交换结构下进行端口配置,通过对各种场景的分析保证了交换电路高效有序地完成端口寄存器配置管理。

本发明提出的一种PCIe交换器端口管理结构的访问控制系统,如图3所示,包括信息分解模块、信息访问模块和访问结果获取模块;

所述信息分解模块用于上游设备将信息传输至请求事务分解模块101,请求事务分解模块101对接收的信息进行分解后存入缓存模块104;

所述信息访问模块用于请求事务分解模块101将分解的信息传入路由查找表模块102获取访问的目的端口,将访问的目的端口信息传输至仲裁模块103进行访问请求控制;

所述访问结果获取模块用于端口访问控制模块106分别对仲裁模块103和下游设备的端口进行访问获取访问结果,将访问结果传输至完成包组装模块105进行组装后传输至上游设备,实现PCIe交换器端口管理。

本发明提出的一种PCIe交换器端口管理结构,通过对各端口接收的事务进行解析、处理及完成包的组装、发送,可以实现对PCIe交换器灵活可变的多端口进行配置、对读写事务进行访问控制,可以满足多种模式的交换结构下对交换器的各端口进行管理,实现PCIe交换电路高效有序地完成端口寄存器配置,并且可以防止访问过程中发生死锁,提高了交换电路各端口的访问效率。支持EEPROM和I2C对端口进行配置。通过模块化的设计优化了系统结构,具有较好的泛用性。具有如下优点:

1)本发明通过管脚或寄存器可以配置交换器端口数量,端口访问控制模块106可以根据实际配置的端口数调整端口控制信号,对全部端口访问进行管理,实现各端口之间的事务交换。

2)任意端口之间可以进行事务交换,如果出现两个以上端口同时对某一个端口进行访问,可能发生死锁现象,导致端口无法继续接收和发送事务。端口访问控制模块106对各端口收到事务的控制信号进行监测并通过仲裁模块103对访问请求进行处理,能够有效避免死锁,提高了访问效率。

3)通过验证连续不间断对PCIe交换器各端口发送配置读写事务、存储器读写事务,交换器都能正确完成读写访问。EEPROM/I2C接口对交换器进行初始化配置期间,交换器接收到请求事务也能正常完成访问。

4)该结构支持不同端口模式和端口数的交换端口配置管理,可应用于高速率、多端口的PCIe交换器端口管理和配置,预计可产生良好的经济效应。

以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种终端设备的充电方法、终端设备及计算机存储介质
  • 一种车辆安全充电的方法、系统、终端设备及车载设备
  • 共享充电线的充电方法及共享充电线
  • 协调自动驾驶的机动车的充电过程的方法,存储介质,移动终端设备和服务器设备
  • 一种车桩充电管理方法、系统及终端设备
  • 共享充电设备运维方法、共享充电设备、终端设备和系统
  • 基于共享租赁设备的共享充电宝租借方法及其终端设备
技术分类

06120116520384