PCIe接口的传输报文数据方法、桥接模块、读取模块和系统的制作方法

文档序号:6379432阅读:287来源:国知局
专利名称:PCIe接口的传输报文数据方法、桥接模块、读取模块和系统的制作方法
技术领域
本发明涉及计算机领域,更具体地说,涉及PCIe接口的传输报文数据方法、桥接模块、读取模块和系统。
背景技术
PCIe接口是X86CPU和其他器件进行互联的重要接口,通过桥接模块可以完成如XAUI接口等高速接口与PCIe接口的转换。如图I所示,在通过桥接模块进行XAUI接口和PCIe接口的转换过程中,桥接模块接收XAUI接口的报文数据后,需要执行以下3个操作·S11、分配给该报文数据一个CPU内存缓存块,通过PCIe接口将该报文数据写入该CPU内存缓存块;S12、构造包含该CPU内存缓存块的首地址的包描述符,并通过PCIe接口将该包描述符写入CPU中的接收队列中;S13、将所述接收队列的写指针通过PCIe接口写入CPU内存中指定的指针空间。此外,在CPU获取报文数据时,在所述指定位置得到写指针,然后根据写指针读取(PU接收队列中的包描述符即可得到报文数据在CPU内存缓存块中的首地址,从而可以读取所需的报文数据。PCIe接口桥接模块一般会采用FPGA器件来实现,假定所用FPGA器件的PCIe接口所能提供的最大有效带宽为Genl*4模式,即,2. 5G*4*0. 8=8Gbps,当需要桥接模块提供更大的带宽以连接高带宽设备时,比如,与ΧΑΠ接口连接时,由于一个所能提供的有效带宽小于一个所需要的带宽,为了提高PCIe接口的带宽,现有技术一般是通过选用高端的FPGA器件来实现的,如选择可以支持PCIe Genl*8或PCIe Gen2*4的FPGA器件,但是选用高端的FPGA器件来实现提高PCIe接口的带宽的方式缺点是成本较高。

发明内容
有鉴于此,本申请提供了 PCIe接口的传输报文数据方法、桥接模块、读取模块和系统。本申请是这样实现的在本申请的一方面,提供了一种多路PCIe接口传输报文数据方法,其特征在于,包括为每个PCIe接口在CPU内存中设置对应的指针空间;将接收队列的写指针通过PCIe接口写入指针空间,具体为分别通过每个PCIe接口,将所述写指针写入与每个PCIe接口对应的指针空间。在本申请的另一方面,还提供了一种多路PCIe接口传输报文数据方法,其特征在于,包括判断每个PCIe接口在CPU内存中对应的指针空间中的写指针是否相同;
若相同则读取所述写指针,根据所述写指针读取相应接收队列里的包描述符,根据所述包描述符得到报文数据在CPU内存缓存块中的首地址,并根据所述首地址获取所需的报文数据;否则暂停读取所述写指针。在本申请的另一方面,还提供了一种PCIe接口桥接模块,其特征在于,包括多路PCWn ;指针空间设置单元,用于为每个PCIe接口在CPU内存中设置对应的指针空间;指针空间写入单元,用于将接收队列的写指针通过PCIe接口写入指针空间,包括分别通过每个PCIe接口,将所述写指针写入与每个PCIe接口对应的指针空间。优选的,在本申请中,所述多路包括两路PCIe接口。在本申请的另一方面,还提供了一种多路PCIe接口传输报文数据读取模块,其特征在于,包括指针判断单元,用于判断每个PCIe接口在CPU内存中对应的指针空间中的写指针是否相同;指针读取控制单元,用于当每个指针空间中的写指针相同时,读取所述写指针,根据所述写指针包描述符 得到报文数据在CPU内存缓存块中的首地址,并根据所述首地址获取所需的报文数据;当每个指针空间中的写指针不相同时,暂停读取所述写指针。优选的,在本申请中,所述多个指针空间包括两个指针空间。优选的,在本申请中,所述传输报文数据读取模块设于CPU中。在本申请的另一方面,还提供了一种PCIe接口传输报文数据传输系统,其特征在于,包括桥接模块和传输报文数据读取模块;所述桥接模块包括多路PCIe 接口;指针空间设置单元,用于为每个PCIe接口在CPU内存中设置对应的指针空间;指针空间写入单元,用于将接收队列的写指针通过PCIe接口写入指针空间,包括分别通过每个PCIe接口,将所述写指针写入与每个PCIe接口对应的指针空间;所述传输报文数据读取模块包括指针判断单元,用于在获取报文数据时,判断每个指针空间中的写指针是否相同;指针读取控制单元,用于当每个指针空间中的写指针相同时,读取所述写指针,根据所述写指针读取相应接收队列里的包描述符,根据所述包描述符得到报文数据在CPU内存缓存块中的首地址,并根据所述首地址获取所需的报文数据;当每个指针空间中的写指针不相同时,暂停读取所述写指针。
优选的,在本申请中,所述传输报文数据读取模块设于CPU中。从上述的技术方案可以看出,在本申请中,设有多个指针空间,通过不同的PCIe接口的传输来存储同一报文数据所对应的指针,由于只有在分配给该报文数据一个CPU内存缓存块,通过PCIe接口将 该报文数据写入该CPU内存缓存块;以及,构造包含该CPU内存缓存块的首地址的包描述符,并通过PCIe接口将该包描述符写入CPU中的接收队列中这两个步骤完成后,每个指针空间的指针才会相同,所以通过当每个指针空间的指针相同时再读取指针以获取报文数据的方式,可以有效的避免在桥接模块支持多路PCIe接口数据传输时,由于不同PCIe接口的延时不同所造成的指针的写入早于上述两个步骤而造成的报文数据读取错误。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为现有技术中桥接模块接收报文数据后的处理流程示意图;图2为本申请中桥接模块接收报文数据后的处理流程示意图;图3为本申请中在CPU端读取报文数据的流程示意图;图4为本申请中PCIe接口桥接模块的结构示意图;图5为本申请中多路PCIe接口传输报文数据读取模块的结构示意图;图6为本申请中PCIe接口传输报文数据传输系统的结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。如图2所示,为了避免报文数据读取错误,在本申请的一个实施例中,提供了一种多路PCIe接口传输报文数据方法,包括在桥接模块端S21、为每个PCIe接口在CPU内存中设置对应的指针空间;S22、将接收队列的写指针通过PCIe接口写入指针空间,具体为,分别通过每个PCIe接口,将写指针写入与每个PCIe接口对应的指针空间。在现有技术中,之所以无法实现将多个PCIe接口捆绑,是因为在将报文数据写入CPU的过程中,由于报文数据写入的各个步骤可以通过不同的PCIe接口并行执行以写入CPU中,所以有可能会出现以下情况报文数据写入缓存的步骤或将该报文数据的包描述符写入接收队列步骤的完成滞后于将写指针写入指针空间步骤的完成,由于此时报文数据写入缓存的步骤或将该报文数据的包描述符写入接收队列步骤还没有完成,所以如果此时按照指针空间中的写指针读取数据,就会出现数据读取错误。为了解决由以上原因所造成的报文数据读取错误,本实施例中,为每个PCIe接口在CPU内存中设置对应的指针空间,具体的,以捆绑两个PCIe接口为例,就需要设有两个指针空间,用于存储写指针,为每个PCIe接口设有单独的指针空间后,还需要在将写指针通过PCIe接口写入指针空间时,分别通过每个PCIe接口,将写指针写入与每个PCIe接口对应的指针空间。也就是说,在执行报文数据写入缓存的步骤或将该报文数据的包描述符写入接收队列步骤时,通过两个PCIe接口并行处理,在执行将写指针写入指针空间步骤时,则需要两个PCIe接口分别将写指针写入PCIe接口各自对应的指针空间。为了避免由于两个PCIe接口 的延时不同所造成的,报文数据写入缓存的步骤,或将该报文数据的包描述符写入接收队列步骤的完成,滞后于将写指针写入指针空间步骤的完成,所以将写指针写入指针空间步骤通过每个PCIe接口重复执行,当每个指针空间的写指针均相同时,则表示该写指针的写入晚于报文数据写入缓存和将该报文数据的包描述符写入接收队列,从而保证该写指针,与写入缓存的报文数据和接收队列中该报文数据的包描述符是对应的。进而也就避免了报文数据的读取错误。由于在本实施例中,避免了捆绑多个PCIe接口时的报文数据的读取错误。由于本申请实施例以捆绑多个PCIe接口的方式实现了高带宽的PCIe接口的报文数据传输,进而有效地节约了设备成本。此外,根据本实施例中的技术方案,可以捆绑超过两个的PCIe接口,从而可以极大地提高PCIe接口的带宽,从而还可以实现通过高端器件也无法达到的报文数据传输带宽。如图3所示,在本申请的另一方面,还提供了另一种多路PCIe接口传输报文数据方法,包括S31、在CPU端判断每个PCIe接口在CPU内存中对应的指针空间中的写指针是否相同;S32、若相同则读取所述写指针,根据所述指针包描述符得到报文数据在CPU内存缓存块中的首地址,并根据所述首地址获取所需的报文数据;否则暂停读取所述写指针。在本实施例中,在以图2所对应的实施例的基础上,CPU端相应的多路PCIe接口传输报文数据方法,由于CPU中为每个PCIe接口均设有指针空间,而只有每个指针空间中的写指针相同,才表示该写指针的写入晚于报文数据写入缓存和将该报文数据的包描述符写入接收队列,从而保证该写指针,与写入缓存的报文数据和接收队列中该报文数据的包描述符是对应的。为此,在本实施例中,获取报文数据时,首先要判断每个指针空间中的指针是否相同,只有每个指针空间中的写指针相同时才执行后续的读取动作,即,根据指针包描述符得到报文数据在CPU内存缓存块中的首地址,并根据首地址获取所需的报文数据。如果每个指针空间中的写指针不同,则表示有可能有的PCIe接口中尚未完成报文数据写入缓存或将该报文数据的包描述符写入接收队列的步骤,所以此时读取指针空间中的写指针就会有可能造成报文数据的读取错误,因而这种情况下,需要暂停报文数据的读取。直至当每个指针空间中的写指针相同时,再执行报文数据的读取。如图4所示,在本申请的另一方面,还提供了一种PCIe接口桥接模块1,包括多路PCIe接口 ;指针空间设置单元3,用于为每个PCIe接口在CPU2内存中设置对应的指针空间
4;指针空间写入单元5,用于将接收队列的写指针通过PCIe接口写入指针空间,具体包括分别通过每个PCIe接口,将所述写指针写入与每个PCIe接口对应的指针空间4。本实施例是与图2所示出的多路PCIe接口传输报文数据方法实施例相对应的装置实施例,在本实施例中,PCIe接口桥接模块可以捆绑有多路的PCIe接口,为了解决多路PCIe接口并行传输报文数据时,有可能会因为报文数据写入缓存,或将该报文数据的包描述符写入接收队列的完成滞后于将写指针写入指针空间的完成,由于此时报文数据写入缓存的或将该报文数据的包描述符写入接收队列还没有完成,所以如果此时按照指针空间中的写指针读取数据,会出现数据读取错误的问题,通过指针空间设置单元3,为每个PCIe接口在CPU2的内存中设置对应的指针空间;这样,当将写指针写入CPU2内存中指定的指针空间4的时候,通过指针空间写入单元5,分别通过每个PCIe接口,将所述写指针写入与每个PCIe接口对应的指针空间4。 指针空间写入单元5通过每个PCIe接口将写指针写入指针空间4,当每个指针空间4的写指针均相同时,则表示该写指针的写入晚于报文数据写入缓存和将该报文数据的包描述符写入接收队列,从而保证该写指针,与写入缓存的报文数据和接收队列中该报文数据的包描述符是对应的。进而也就避免了报文数据的读取错误。由于在本实施例中,避免了捆绑多个PCIe接口时的报文数据的读取错误。由于本申请实施例以捆绑多个PCIe接口的方式实现了高带宽的PCIe接口的报文数据传输,进而有效地节约了设备成本。此外,根据本实施例中的技术方案,可以捆绑超过两个的PCIe接口,从而可以极大地提高PCIe接口的带宽,从而还可以实现通过高端器件也无法达到的报文数据传输带宽。如图5所示,在本申请的另一方面,还提供了一种多路PCIe接口传输报文数据读取模块21,包括指针判断单元22,用于判断每个PCIe接口在CPU内存中对应的指针空间4中的写指针是否相同;指针读取控制单元23,用于当每个指针空间4中的写指针时,读取所述写指针,根据所述写指针包描述符得到报文数据在CPU内存缓存块中的首地址,并根据所述首地址获取所需的报文数据;当每个指针空间4中的写指针不相同时,暂停读取所述写指针。在图4所示出的实施例中的PCIe接口桥接模块完成报文数据的在CPU中的存储、构造该CPU内存缓存块的首地址的包描述符并通过PCIe接口将该包描述符写入CPU中的接收队列中以及将所述接收队列的写指针通过PCIe接口写入CPU内存中指定的指针空间后,还需要对报文数据进行相应的读取,以便CPU的后续应用。在本实施例,多路PCIe接口传输报文数据读取模块21 —般可以设置于CPU中;由于CPU中为每个PCIe接口均设有指针空间4,而只有每个指针空间中的写指针相同,才表示该写指针的写入晚于报文数据写入缓存和将该报文数据的包描述符写入接收队列,从而保证该写指针与写入缓存的报文数据和接收队列中该报文数据的包描述符是对应的。为此,在本实施例中,设有指针判断单元22来在获取报文数据时,判断每个指针空间4中的写指针是否相同;然后,通过指针读取控制单元23,在每个指针空间4中的写指针相同时执行后续的读取动作,即,根据写指针对应的包描述符得到报文数据在CPU内存缓存块中的首地址,并根据首地址获取所需的报文数据。当每个指针空间4中的指针不相同时,则暂停读取所述指针,以避免报文数据的读取错误。如果每个指针空间中4的写指针不同,则表示有可能有的PCIe接口中尚未完成报文数据写入缓存或将该报文数据的包描述符写入接收队列的步骤,所以此时读取指针空间4中的写指针就会有可能造成报文数据的读取错误,因而这种情况下,需要暂停报文数据的读取。直至当每个指针空间中的写指针相同时,再执行报文数据的读取。如图6所示,在本申请的另一方面,还提供了一种PCIe接口传输报文数据传输系统,桥接模块和传输报文数据读取模块;桥接模块包括多路PCIe接口 ;指针空间设置单元,用于为每个PCIe接口在CPU内存中设置对应的指针空间;指针空间写入单元,用于将接收队列的写指针通过PCIe接口写入指针空间,具体包括分别通过每个PCIe接口,将所述写指针写入与每个PCIe接口对应的指针空间;传输报文数据读取模块包括指针判断单元,用于在获取报文数据时,判断每个指针空间中的指针是否相同;指针读取控制单元,用于当每个指针空间中的指针时,读取所述指针,根据所述指针包描述符得到报文数据在CPU内存缓存块中的首地址,并根据所述首地址获取所需的报 文数据;当每个指针空间中的指针不相同时,暂停读取所述指针。在本实施例中,包括了图4所示出的PCIe接口桥接模块,以及,图5所示出的多路PCIe接口传输报文数据读取模块;由于本实施例的工作原理和所能达到的效果,也与图4所示出的PCIe接口桥接模块配合图5所示出的多路PCIe接口传输报文数据读取模块后相类似,为此,在此就不再赘述。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
权利要求
1.一种多路PCIe接口传输报文数据方法,其特征在于,包括为每个PCIe接口在CPU内存中设置对应的指针空间; 将接收队列的写指针通过PCIe接口写入指针空间,具体为 分别通过每个PCIe接口,将所述写指针写入与每个PCIe接口对应的指针空间。
2.一种多路PCIe接口传输报文数据方法,其特征在于,包括判断每个PCIe接口在CPU内存中对应的指针空间中的写指针是否相同; 若相同 则读取所述写指针,根据所述写指针读取相应接收队列里的包描述符,根据所述包描述符得到报文数据在CPU内存缓存块中的首地址,并根据所述首地址获取所需的报文数据; 否则 暂停读取所述写指针。
3.—种PCIe接口桥接模块,其特征在于,包括多路PCIe接口 ; 指针空间设置单元,用于为每个PCIe接口在CPU内存中设置对应的指针空间; 指针空间写入单元,用于将接收队列的写指针通过PCIe接口写入指针空间,包括分别通过每个PCIe接口,将所述写指针写入与每个PCIe接口对应的指针空间。
4.根据权利要求3所述桥接模块,其特征在于,所述多路包括两路PCIe接口。
5.—种多路PCIe接口传输报文数据读取模块,其特征在于,包括 指针判断单元,用于判断每个PCIe接口在CPU内存中对应的指针空间中的写指针是否相同; 指针读取控制单元,用于 当每个指针空间中的写指针相同时,读取所述写指针,根据所述写指针包描述符得到报文数据在CPU内存缓存块中的首地址,并根据所述首地址获取所需的报文数据; 当每个指针空间中的写指针不相同时,暂停读取所述写指针。
6.根据权利要求5所述传输报文数据读取模块,其特征在于,所述多个指针空间包括两个指针空间。
7.根据权利要求6所述传输报文数据读取模块,其特征在于,所述传输报文数据读取模块设于CPU中。
8.—种PCIe接口传输报文数据传输系统,其特征在于,包括桥接模块和传输报文数据读取模块; 所述桥接模块包括 多路PCIe接口 ; 指针空间设置单元,用于为每个PCIe接口在CPU内存中设置对应的指针空间; 指针空间写入单元,用于将接收队列的写指针通过PCIe接口写入指针空间,包括 分别通过每个PCIe接口,将所述写指针写入与每个PCIe接口对应的指针空间; 所述传输报文数据读取模块包括 指针判断单元,用于在获取报文数据时,判断每个指针空间中的写指针是否相同; 指针读取控制单元,用于 当每个指针空间中的写指针相同时,读取所述写指针,根据所述写指针读取相应接收队列里的包描述符,根据所述包描述符得到报文数据在CPU内存缓存块中的首地址,并根据所述首地址获取所需的报文数据; 当每个指针空间中的写指针不相同时,暂停读取所述写指针。
9.根据权利要求8所述传输报文数据传输系统,其特征在于,所述传输报文数据读取模块设于CPU中。
全文摘要
本申请公开了PCIe接口的传输报文数据方法、桥接模块、读取模块和系统,其中方法包括在桥接模块端为每个PCIe接口在CPU内存中设置对应的指针空间;分别通过每个PCIe接口,将写指针写入与每个PCIe接口对应的指针空间。在本申请中,由于只有在通过PCIe接口将该报文数据写入该CPU内存缓存块;以及,通过PCIe接口将该包描述符写入CPU中的接收队列中这两个步骤完成后,每个指针空间的指针才会相同,所以通过当每个指针空间的指针相同时再读取指针以获取报文数据的方式,可以有效的避免在桥接模块支持多路PCIe接口数据传输时,由于不同PCIe接口的延时不同所造成的指针的写入早于上述两个步骤而造成的报文数据读取错误。
文档编号G06F13/20GK102929818SQ20121040742
公开日2013年2月13日 申请日期2012年10月23日 优先权日2012年10月23日
发明者涂君, 杨伟国, 刘全喜 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1