一种低时延数据传输方法、装置、设备及存储介质
本发明涉及pcie通信,尤其涉及一种低时延数据传输方法、装置、设备及存储介质。
背景技术:
1、在硬实时数据传输场景中,场景对端到端传输时延、时延抖动具备严苛的微秒级确定性指标要求,但现有linux系统受限于软件中断响应延迟、内核抢占点过多、任务调度抖动大,存在明显不足。
2、现有技术使用fpga或asic加速卡与linux系统交互,但通常采用松耦合方式,如通过pcie字符设备、ioctl、系统函数调用等,软硬件交互开销大,系统调用会触发用户态/内核态上下文切换,pcie中断、mmio寄存器读写、驱动协议栈均会引入微秒级且波动剧烈的额外延迟,同时现有方案缺少软硬件统一的实时任务划分与协同调度机制,即便fpga内部数据处理延迟可达纳秒级且时序确定,整机端到端传输时延仍完全受cpu侧调度抖动、软硬件交互损耗制约,无法满足硬实时业务对时延确定性的严苛需求。
3、整体而言,缺少一种能够解决linux系统在处理硬实时事件时延不确定的问题、降低fpga硬件加速单元与linux实时任务之间的数据通路及同步开销的方法。
技术实现思路
1、本发明实施例提供了一种低时延数据传输方法,能够消除数据传输过程中由中断通知和频繁系统调用引入的时延和抖动,降低端到端数据传输时延,满足硬实时场景需求。
2、第一方面,本发明实施例提供一种低时延数据传输方法,应用于fpga pcie光纤卡与linux系统协同交互场景,包括:
3、通过pcie光纤卡的光纤收发接口接收外部设备下发的待传输数据,解析所述待传输数据并进行重排序,将重排序后的数据写入缓存区;
4、使用内置的dma引擎提取所述缓存区中的待传输数据,并记录数据状态信息;
5、将所述待传输数据和所述数据状态信息同步写入共享内存,以使linux系统的用户实时任务以预设的轮询周期读取所述共享内存中的数据状态信息,根据所述数据状态信息判断数据是否成功到达;
6、若判定成功到达,则从所述共享内存中读取待传输数据;其中,所述共享内存为linux主机预先分配的、用户态可访问的物理连续内存。
7、进一步地,所述pcie光纤卡内置srio ip核,所述srio ip核划分物理层、传输层和逻辑层三层协议处理单元,则,所述解析所述待传输数据并进行重排序,包括:
8、基于所述srio ip核的物理层、传输层和逻辑层,分层完成待传输数据的协议解析;
9、依据解析后数据包携带的序列号与时间戳,对待传输数据进行重排序。
10、进一步地,所述共享内存通过内存映射机制映射至用户实时任务所属进程的虚拟地址空间,以使用户实时任务基于映射后的虚拟地址指针直接读写所述共享内存,以实现零拷贝的数据访问。
11、进一步地,所述数据状态信息至少包括数据到达标志、内存写指针、缓冲区回卷次数、数据包长度、数据包序列号和时间戳。
12、进一步地,所述用户实时任务的轮询判断逻辑为:
13、读取共享内存内存储的内存写指针,将所述内存写指针与本地维护的消费偏移量做对比;
14、若所述内存写指针相对消费偏移量发生前移,则判定共享内存中存在未读取的新到达待传输数据。
15、进一步地,所述方法还包括用户实时任务运行前的硬实时环境配置步骤,包括:
16、将所述用户实时任务设置为sched_fifo实时调度策略,并设置系统最高实时优先级;
17、将所述用户实时任务绑定至经内核隔离的独占cpu核心,并关闭该核心的cpu空闲休眠节能状态。
18、进一步地,所述fpga pcie光纤卡通过pcie金手指连接器与所述linux主机的pcie插槽电气连接,实现fpga pcie光纤卡与linux主机之间的pcie总线数据交互。
19、第二方面,本发明实施例提供一种低时延数据传输装置,包括:
20、光纤接收模块,用于通过pcie光纤卡的光纤收发接口接收外部设备下发的待传输数据,解析所述待传输数据并进行重排序,将重排序后的数据写入缓存区;
21、dma引擎模块,用于使用内置的dma引擎提取所述缓存区中的待传输数据,并记录数据状态信息;
22、状态轮询判断模块,用于将所述待传输数据和所述数据状态信息同步写入共享内存,以使linux系统的用户实时任务以预设的轮询周期读取所述共享内存中的数据状态信息,根据所述数据状态信息判断数据是否成功到达;
23、数据读取模块,用于若判定成功到达,则从所述共享内存中读取待传输数据;其中,所述共享内存为linux主机预先分配的、用户态可访问的物理连续内存。
24、第三方面,本发明实施例提供一种电子设备,包括:
25、存储器,用于存储计算机程序;
26、处理器,用于执行所述计算机程序;
27、其中,所述处理器执行所述计算机程序时实现上述第一方面任一项所述的低时延数据传输方法。
28、第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被执行时实现上述第一方面任一项所述的低时延数据传输方法。
29、与现有技术相比,本发明实施例提供的一种低时延数据传输方法,其有益效果在于:通过pcie光纤卡的光纤收发接口接收外部设备下发的待传输数据,解析所述待传输数据并进行重排序,将重排序后的数据写入缓存区;使用内置的dma引擎提取所述缓存区中的待传输数据,并记录数据状态信息;将所述待传输数据和所述数据状态信息同步写入共享内存,以使linux系统的用户实时任务以预设的轮询周期读取所述共享内存中的数据状态信息,根据所述数据状态信息判断数据是否成功到达;若判定成功到达,则从所述共享内存中读取待传输数据;其中,所述共享内存为linux主机预先分配的、用户态可访问的物理连续内存。本发明能够消除数据传输过程中由中断通知和频繁系统调用引入的时延和抖动,降低端到端数据传输时延,满足硬实时场景需求。
1.一种低时延数据传输方法,应用于fpga pcie光纤卡与linux系统协同交互场景,其特征在于,包括:
2.如权利要求1所述的低时延数据传输方法,其特征在于,所述pcie光纤卡内置srioip核,所述srio ip核划分物理层、传输层和逻辑层三层协议处理单元,则,所述解析所述待传输数据并进行重排序,包括:
3.如权利要求1所述的低时延数据传输方法,其特征在于,所述共享内存通过内存映射机制映射至用户实时任务所属进程的虚拟地址空间,以使用户实时任务基于映射后的虚拟地址指针直接读写所述共享内存,以实现零拷贝的数据访问。
4.如权利要求1所述的低时延数据传输方法,其特征在于,所述数据状态信息至少包括数据到达标志、内存写指针、缓冲区回卷次数、数据包长度、数据包序列号和时间戳。
5.如权利要求4所述的低时延数据传输方法,其特征在于,所述用户实时任务的轮询判断逻辑为:
6.如权利要求1所述的低时延数据传输方法,其特征在于,所述方法还包括用户实时任务运行前的硬实时环境配置步骤,包括:
7.如权利要求1所述的低时延数据传输方法,其特征在于,所述fpga pcie光纤卡通过pcie金手指连接器与所述linux主机的pcie插槽电气连接,实现fpga pcie光纤卡与linux主机之间的pcie总线数据交互。
8.一种低时延数据传输装置,其特征在于,包括:
9.一种电子设备,其特征在于,包括:
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被执行时实现如权利要求1至7任一项所述的低时延数据传输方法。