一种DMA数据包传输方法、装置及PCIE设备制造方法及图纸

技术编号:39421422 阅读:6 留言:0更新日期:2023-11-19 16:09
本发明专利技术实施例提供一种DMA数据包传输方法、装置及PCIE设备,包括:将获取的多个DMA读请求按照第一顺序存入第一缓冲区内;在第二缓冲区内记录多个DMA读请求的长度信息顺序;计算得到多个TLP读请求;将多个TLP读请求按照TAG号递增顺序存入第三缓冲区内;顺次获取多个TLP读请求,并将多个TLP读请求通过IP核顺次发送给主机;接收主机反馈的多个TLP完成包;将多个TLP完成包按照TAG号顺序存入第四缓冲区内;顺次读取多个TLP完成包,并根据长度信息顺序对多个TLP完成包进行组包。本发明专利技术实施例的技术方案能够得到按照DMA读请求发送顺序排布的DMA数据包,以实现多个完整数据文件对应的TLP完成包的区分。TLP完成包的区分。TLP完成包的区分。

【技术实现步骤摘要】
一种DMA数据包传输方法、装置及PCIE设备


[0001]本专利技术实施例涉及通信
,尤其涉及一种DMA数据包传输方法、装置及PCIE设备。

技术介绍

[0002]随着技术和经济的发展,计算机在人们日常生活和工作中变得随处可见,计算机系统越来越复杂,功能也越来越强大。与之相随的是,计算机主机与外设之间的数据交互量迅速增加。在此背景下,具备数据传输速度高、物理尺寸小、良好的错误检测机制等优点的PCIE (peripheral component interconnect express,高速串行计算机扩展总线标准)总线出现了。目前,PCIE 总线作为一种高性能I/O总线广泛应用于计算机系统中,几乎所有商业级和工业级的计算机生产商都在其生产的计算机系统中提供了PCIE总线接口。相应的,通过PCIE总线与计算机主机连接的外设我们称之为PCIE设备。
[0003]与此同时,在计算机主机和PCIE设备之间、或者PCIE设备与PCIE设备之间数据交互时,涉及大量的数据拷贝操作,这给CPU带来了巨大的负担,严重影响了CPU的处理能力。基于此需求,人们开发出了DMA(Direct Memory Access,直接内存访问)技术,DMA是一种PCIE支持的、可以以“突发”的形式高速传输大量数据的传输方式,该技术数据拷贝操作交给DMA控制器来执行,从而大大提升了CPU的处理能力。
[0004]进一步地,基于PCIE总线事务层协议,计算机主机与PCIE设备之间,或者PCIE设备与PCIE设备之间以TLP(Transaction Layer Packet,事务层数据包)包的形式进行数据传输。然而,受限于TLP包(分为TLP读请求和TLP完成包)传输时对数据长度的限制,通常多个TLP读请求才能覆盖一个完整数据文件的地址和长度。与此同时,PCIE设备与主机之间需要传输多个完整数据文件的情形经常发生,这共同造成了难以对多个完整数据文件对应的TLP完成包进行区分的问题。

技术实现思路

[0005]本专利技术实施例旨在至少在一定程度上解决相关技术中的技术问题之一。
[0006]为此,本专利技术实施例公开一种DMA数据包传输方法、装置及PCIE设备,以实现多个完整数据文件对应的TLP完成包的区分。
[0007]在第一方面中,本专利技术实施例提供一种DMA数据包传输方法,应用于PCIE设备,所述方法包括:获取多个DMA读请求,并将获取的多个DMA读请求按照第一顺序存入第一缓冲区内;其中,每个DMA读请求中包括与该DMA读请求对应的DMA数据包的地址信息和长度信息;在第二缓冲区内记录多个DMA读请求的长度信息顺序,以表征每个DMA读请求在第一缓冲区的排序与每个DMA读请求中的长度信息之间的一一对应关系;顺次获取第一缓冲区内的多个DMA读请求,根据预设切割长度,以及每个DMA读请求中的地址信息和长度信息计算与每个DMA读请求对应的TLP地址信息和TLP长度信息;其中,TLP地址信息和TLP长度信息一一对应;为每对一一对应的TLP地址信息和TLP长度信息按照第二顺序设置TAG号,得到多个
TLP读请求;其中,每个TLP读请求中包括TAG号、TLP地址信息和TLP长度信息;将多个TLP读请求按照TAG号递增顺序存入第三缓冲区内;顺次获取第三缓冲区内的多个TLP读请求,并将多个TLP读请求通过IP核顺次发送给主机;接收主机基于多个TLP读请求反馈的多个TLP完成包;其中,TLP完成包与TLP读请求对应,每个TLP完成包中包括TAG号;将多个TLP完成包按照TAG号递增顺序存入第四缓冲区内;顺次从第四缓冲区内读取多个TLP完成包,并根据第二缓冲区内记录的长度信息顺序对多个TLP完成包进行组包,以获得以第一顺序排布的DMA数据包。
[0008]在第一方面的一具体实施例中,在第二缓冲区内记录多个DMA读请求中的长度信息顺序,包括:按照多个DMA读请求的存入顺序顺次读取多个DMA读请求中的长度信息,并将读取到的多个长度信息顺次存入第二缓冲区内;或者,为每个DMA读请求设置DMA顺序标识符,分别将每个DMA读请求中的长度信息和相应的DMA顺序标识符拼接,得到多个第一拼接信息,并将多个第一拼接信息存入第二缓冲区内。
[0009]在第一方面的一具体实施例中,所述方法还包括:在第五缓冲区内记录多个TLP读请求中的TLP长度信息顺序。
[0010]在第一方面的一具体实施例中,在第五缓冲区内记录多个TLP读请求中的TLP长度信息顺序,包括:按照多个TLP读请求的存入顺序顺次读取多个TLP读请求中的TLP长度信息,并将读取到的多个TLP长度信息顺次存入第五缓冲区内;或者,分别将每个TLP读请求中的TLP长度信息和TAG号拼接,得到多个第二拼接信息,并将多个第二拼接信息存入第五缓冲区内。
[0011]在第一方面的一具体实施例中,所述方法还包括:将4KB边界、TLP完成包的最大载荷量、以及约定的每个TAG号对应的数据大小上限三者之中的最小值作为所述预设切割长度。
[0012]在第一方面的一具体实施例中,所述方法在PCIE总线的事务层实现,所述事务层被划分为DMA收发层、TLP收发层和传输控制层;其中,所述DMA收发层用于执行如下步骤:获取多个DMA读请求,并将获取的多个DMA读请求按照第一顺序存入第一缓冲区内;在第二缓冲区内记录多个DMA读请求中的长度信息顺序,以表征每个DMA读请求在第一缓冲区的排序与每个DMA读请求中的长度信息之间的一一对应关系;顺次从第四缓冲区内获取多个TLP完成包,并根据第二缓冲区内记录的长度信息顺序对多个TLP完成包进行组包,以获得以第一顺序排布的DMA数据包;所述TLP收发层用于执行如下步骤:顺次获取第一缓冲区内的多个DMA读请求,根据预设切割长度,以及每个DMA读请求中的地址信息和长度信息计算与每个DMA读请求对应的TLP地址信息和TLP长度信息;为每对一一对应的TLP地址信息和TLP长度信息按照第二顺序设置TAG号,得到多个TLP读请求;将多个TLP读请求按照TAG号递增顺序存入第三缓冲区内;将多个TLP完成包按照TAG号递增顺序存入第四缓冲区内;所述传输控制层用于执行如下步骤:顺次获取第三缓冲区内的多个TLP读请求,并将多个TLP读请求通过IP核顺次发送给主机;接收主机基于多个TLP读请求反馈的多个TLP完成包;其中,TLP完成包与TLP读请求对应,每个TLP完成包中包括TAG号。
[0013]在第一方面的一具体实施例中,所述传输控制层还用于执行如下步骤:以寄存器的形式对向主机发送的TLP读请求进行计数操作,得到第一计数值;以寄存器的形式对接收的TLP完成包进行计数操作,得到第二计数值;根据第一计数值与第二计数值的差值对IP核
进行流控。
[0014]在第一方面的一具体实施例中,所述TLP收发层还用于执行如下步骤:根据第四缓冲区的大小、IP核压包数量上限、以及存入与读取的TLP完成包个数对第四缓冲区进行流控;所述DMA收发层还用于执行如下步骤:根据接收缓冲区的大小、已组包的DMA本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种DMA数据包传输方法,其特征在于,应用于PCIE设备,所述方法包括:获取多个DMA读请求,并将获取的多个DMA读请求按照第一顺序存入第一缓冲区内;其中,每个DMA读请求中包括与该DMA读请求对应的DMA数据包的地址信息和长度信息;在第二缓冲区内记录多个DMA读请求的长度信息顺序,以表征每个DMA读请求在第一缓冲区的排序与每个DMA读请求中的长度信息之间的一一对应关系;顺次获取第一缓冲区内的多个DMA读请求,根据预设切割长度,以及每个DMA读请求中的地址信息和长度信息计算与每个DMA读请求对应的TLP地址信息和TLP长度信息;其中,TLP地址信息和TLP长度信息一一对应;为每对一一对应的TLP地址信息和TLP长度信息按照第二顺序设置TAG号,得到多个TLP读请求;其中,每个TLP读请求中包括TAG号、TLP地址信息和TLP长度信息;将多个TLP读请求按照TAG号递增顺序存入第三缓冲区内;顺次获取第三缓冲区内的多个TLP读请求,并将多个TLP读请求通过IP核顺次发送给主机;接收主机基于多个TLP读请求反馈的多个TLP完成包;其中,TLP完成包与TLP读请求对应,每个TLP完成包中包括TAG号;将多个TLP完成包按照TAG号递增顺序存入第四缓冲区内;顺次从第四缓冲区内读取多个TLP完成包,并根据第二缓冲区内记录的长度信息顺序对多个TLP完成包进行组包,以获得以第一顺序排布的DMA数据包。2.如权利要求1所述的方法,其特征在于,在第二缓冲区内记录多个DMA读请求中的长度信息顺序,包括:按照多个DMA读请求的存入顺序顺次读取多个DMA读请求中的长度信息,并将读取到的多个长度信息顺次存入第二缓冲区内;或者,为每个DMA读请求设置DMA顺序标识符,分别将每个DMA读请求中的长度信息和相应的DMA顺序标识符拼接,得到多个第一拼接信息,并将多个第一拼接信息存入第二缓冲区内。3.如权利要求1所述的方法,其特征在于,所述方法还包括:在第五缓冲区内记录多个TLP读请求中的TLP长度信息顺序。4.如权利要求3所述的方法,其特征在于,在第五缓冲区内记录多个TLP读请求中的TLP长度信息顺序,包括:按照多个TLP读请求的存入顺序顺次读取多个TLP读请求中的TLP长度信息,并将读取到的多个TLP长度信息顺次存入第五缓冲区内;或者,分别将每个TLP读请求中的TLP长度信息和TAG号拼接,得到多个第二拼接信息,并将多个第二拼接信息存入第五缓冲区内。5.如权利要求1至4任一项所述的方法,其特征在于,所述方法在PCIE总线的事务层实现,所述事务层被划分为DMA收发层、TLP收发层和传输控制层;其中,所述DMA收发层用于执行如下步骤:获取多个DMA读请求,并将获取的多个DMA读请求按照第一顺序存入第一缓冲区内;在第二缓冲区内记录多个DMA读请求中的长度信息顺序,以表征每个DMA读请求在第一
缓冲区的排序与每个DMA读请求中的长度信息之间的一一对应关系;顺次从第四缓冲区内获取多个TLP完成包,并根据第二缓冲区内记录的长度信息顺序对多个TLP完成包进行组包,以获得以第一顺序排布的DMA数据包;所述TLP收发层用于执行如下步骤:顺次获取第一缓冲区内的多个DMA读请求,根据预设切割长度,以及每个DMA读请求中的地址信息和长度信息计算与每个DMA读请求对应的TLP地址信息和TLP长度信息;为每...

【专利技术属性】
技术研发人员:苏庆会苏智睿王中原赵鹏翔
申请(专利权)人:郑州信大捷安信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1