一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种直接存储器访问数据传输方法及系统与流程

2022-10-22 06:02:10 来源:中国专利 TAG:


1.本发明涉及网络通信技术领域,尤其涉及一种直接存储器访问数据传输方法及系统。


背景技术:

2.当今流行的计算机操作系统,例如windows操作系统或linux操作系统,在发送网络数据包时,会采用scatter list(分散表)结构/gather list(聚合表)结构把一个网络数据包分散到多个离散的内存地址存储,如包含两个及以上的mdl(memory descriptorlist,内存描述符表)存放数据,每个mdl(memory descriptor list,内存描述符表)是一个内存块。在采用dma(direct memory access,直接存储器访问)方式进行网络数据包的传输时,由于当前市面上的通信硬件设备,针对每一个内存块都会触发一次dma burst,所以发送每个网络数据包要进行若干次dma burst。倘若数据包比较小,例如游戏应用,实时音频应用,每个数据包也就100bytes左右,dma申请一次总线,传输的数据量很小,这时候dma性能会下降,从而导致网络发送性能急剧下降。同理,在数据接收时也存在类似问题。


技术实现要素:

3.针对现有技术中存在的问题,本发明提供一种直接存储器访问数据传输方法,预先配置一计算机系统,所述计算机系统上装载有通信硬件设备,并对应安装有所述通信硬件设备的驱动程序,所述计算机系统中还配置有一数据发送缓存区;
4.则所述直接存储器访问数据传输方法包括一数据发送过程,所述数据发送过程包括:
5.步骤s1,所述计算机系统的操作系统向外发送数据时,将每次发送的网络数据包分散成多个发送包分别存储在不同的内存地址,并对应生成一链表,所述链表中配置有各所述发送包的发送顺序和对应的所述内存地址;
6.步骤s2,所述驱动程序获取所述链表,随后根据所述链表中的所述发送顺序分别由各所述内存地址中依次将对应的所述发送包聚合至所述数据发送缓存区,并在聚合过程中,在相邻两所述发送包之间添加一第一分隔符,以及在每次所述数据发送缓存区达到一第一传输标准时执行一次直接存储器访问,以将所述数据发送缓存区内的当前聚合的所有所述发送包搬移至所述通信硬件设备;
7.步骤s3,所述通信硬件设备根据各所述第一分隔符识别出各所述发送包,以将各所述发送包相应发送至网络中。
8.优选的,所述步骤s2中,所述数据发送缓存区的占用空间达到一第一空间值或聚合耗时达到一第一时间值时,表示所述数据发送缓存区达到所述第一传输标准。
9.优选的,所述通信硬件设备中配置有一数据接收缓存区,则所述直接存储器访问数据传输方法还包括一数据接收过程,所述数据接收过程包括:
10.步骤a1,所述通信硬件设备在接收到所述网络发送的多个接收包时,将各所述接
收包按照接收顺序依次聚合至所述数据接收缓存区,并在相邻两所述接收包之间添加一第二分隔符,以及在每次所述数据接收缓存区达到一第二传输标准时执行一次直接存储器访问,以将所述数据接收缓存区内的当前聚合的所有所述接收包搬移至所述驱动程序;
11.步骤a2,所述驱动程序根据各所述第二分隔符识别出各所述接收包,以将各所述接收包相应发送至所述操作系统。
12.优选的,所述步骤a1中,所述数据接收缓存区的占用空间达到一第二空间值或聚合耗时达到一第二时间值时,表示所述数据接收缓存区达到所述第二传输标准。
13.本发明还提供一种直接存储器访问数据传输系统,应用上述的直接存储器访问数据传输方法,所述直接存储器访问数据传输系统包括:
14.计算机系统,所述计算机系统上装载有通信硬件设备,所述计算机系统包括:
15.操作系统,用于在向外发送数据时,将每次发送的网络数据包分散成多个发送包分别存储在不同的内存地址,并对应生成一链表,所述链表中配置有各所述发送包的发送顺序和对应的所述内存地址;
16.驱动程序,连接一数据发送缓存区,所述驱动程序包括一第一处理单元,用于获取所述链表,随后根据所述链表中的所述发送顺序分别由各所述内存地址中依次将对应的所述发送包聚合至所述数据发送缓存区,并在聚合过程中,在相邻两所述发送包之间添加一第一分隔符,以及在每次所述数据发送缓存区达到一第一传输标准时执行一次直接存储器访问,以将所述数据发送缓存区内的当前聚合的所有所述发送包搬移至所述通信硬件设备;
17.所述通信硬件设备包括一第一识别单元,用于根据各所述第一分隔符识别出各所述发送包,以将各所述发送包相应发送至网络中。
18.优选的,所述数据发送缓存区的占用空间达到一第一空间值或聚合耗时达到一第一时间值时,表示所述数据发送缓存区达到所述第一传输标准。
19.优选的,所述通信硬件设备还包括:
20.第二处理单元,连接一数据接收缓存区,所述第二处理单元用于在接收到所述网络发送的多个接收包时,将各所述接收包按照接收顺序依次聚合至所述数据接收缓存区,并在相邻两所述接收包之间添加一第二分隔符,以及在每次所述数据接收缓存区达到一第二传输标准时执行一次直接存储器访问,以将所述数据接收缓存区内的当前聚合的所有所述接收包搬移至所述驱动程序;
21.则所述驱动程序还包括一第二识别单元,用于根据各所述第二分隔符识别出各所述接收包,以将各所述接收包相应发送至所述操作系统。
22.优选的,所述数据接收缓存区的占用空间达到一第二空间值或聚合耗时达到一第二时间值时,表示所述数据接收缓存区达到所述第二传输标准。
23.上述技术方案具有如下优点或有益效果:
24.1)在计算机系统向网络中发送网络数据包时,通过将分散在不同的内存地址的发送包聚合到一起,同样在接收网络数据包时,通过将多个接收包聚合到一起,在聚合操作满足相应的传输标准时才会触发一次直接存储器访问操作,有效减少直接存储器访问次数,进而有效提升网络数据包,尤其是小包在网络上的收发性能;
25.2)在进行聚合时,各个发送包之间或各个接收包之间采用相应的分隔符分隔,实
现了数据搬运后各个发送包或各个接收包的有效识别。
附图说明
26.图1为本发明的较佳的实施例中,数据发送过程的流程示意图;
27.图2为本发明的较佳的实施例中,数据接收过程的流程示意图;
28.图3为本发明的较佳的实施例中,一种直接存储器访问数据传输系统的结构示意图。
具体实施方式
29.下面结合附图和具体实施例对本发明进行详细说明。本发明并不限定于该实施方式,只要符合本发明的主旨,则其他实施方式也可以属于本发明的范畴。
30.本发明的较佳的实施例中,基于现有技术中存在的上述问题,现提供一种直接存储器访问数据传输方法,预先配置一计算机系统,计算机系统上装载有通信硬件设备,并对应安装有通信硬件设备的驱动程序,计算机系统中还配置有一数据发送缓存区;
31.则直接存储器访问数据传输方法包括一数据发送过程,如图1所示,数据发送过程包括:
32.步骤s1,计算机系统的操作系统向外发送数据时,将每次发送的网络数据包分散成多个发送包分别存储在不同的内存地址,并对应生成一链表,链表中配置有各发送包的发送顺序和对应的内存地址;
33.步骤s2,驱动程序获取链表,随后根据链表中的发送顺序分别由各内存地址中依次将对应的发送包聚合至数据发送缓存区,并在聚合过程中,在相邻两发送包之间添加一第一分隔符,以及在每次数据发送缓存区达到一第一传输标准时执行一次直接存储器访问,以将数据发送缓存区内的当前聚合的所有发送包搬移至通信硬件设备;
34.步骤s3,通信硬件设备根据各第一分隔符识别出各发送包,以将各发送包相应发送至网络中。
35.具体地,本实施例中,上述通信硬件设备包括但不限于网卡、wifi设备以及蓝牙设备。操作系统向外发送数据时,其每次发送的网络数据包可以是一个或多个,针对每个数据包,可以对应生成一个链表,也可以将每次发送的多个网络数据包对应生成一个链表,多个网络数据包在链表里也具有相应的发送顺序。
36.以单个网络数据包为例,其可以包含多个发送包,驱动程序获取链表后,按照各个发送包的发送顺序将各个发送包依次拷贝到数据发送缓存区进行聚合,可以理解的是,数据发送缓存区的存储空间是有限的,因此,需要设定相应的第一传输标准,作为直接存储器访问的触发条件,本发明的较佳的实施例中,步骤s2中,数据发送缓存区的占用空间达到一第一空间值或聚合耗时达到一第一时间值时,表示数据发送缓存区达到第一传输标准。
37.具体地,本实施例中,在数据发送缓存区的存储空间有限的前提下,若该网络数据包包含的发送包过多,如10个,而对应的数据发送缓存区最多只能存放8个,则拷贝发送顺序靠前的8个发送包并添加相应的第一分隔符后,执行一次直接存储器访问,随后剩下的2个发送包同样进行拷贝聚合,以此类推。由于聚合后的数据发送缓存区是一块连续的内存,在达到第一传输标准需要发送数据时,可以只使用一次直接存储器访问就可以将数据发送
缓存区中的数据搬移至通信硬件设备。使用netperf测试发送小包性能,采用本技术方案可以将小包性能提升15%。
38.作为一个优选的实施方式,驱动程序在执行聚合操作时,可以根据链表的发送顺序,在聚合之前先基于自身的存储空间、各个发送包的占用内存以及第一空间值处理得到哪些发送包本次能够聚合到数据发送缓存区,随后根据对应的内存地址依次拷贝各个发送包,每拷贝一个发送包则在其之前或之后添加一个第一分隔符。
39.作为另一个优选的实施方式,驱动程序在执行聚合操作时,可以根据链表的发送顺序,在每次拷贝一个发送包之前,先查看数据发送缓存区的占用空间、剩余空间以及该发送包的占用内存,随后确定该发送包本次是否能够进行聚合,同样地,若能够聚合,则根据对应的内存地址依次拷贝各个发送包,每拷贝一个发送包则在其之前或之后添加一个第一分隔符,直至数据发送缓存区的占用空间达到第一空间值。
40.可以看出,上述实施方式中仅考虑了数据发送缓存区的占用空间是否达到第一空间值,若操作系统每次发送较多的网络数据包,或者每个网络数据包的数据量较大时,则数据发送缓存区的占用空间很快就能达到第一空间值,则仅考虑数据发送缓存区的占用空间是否达到第一空间值就能够满足减少直接存储器访问次数以及数据传输低延时的需求。但是若操作系统每次发送的网络数据包数量较少,如只发送一个网络数据包,且该网络数据包的数据量较小,即该网络数据包的全部发送包均聚合至数据发送缓存区后,数据发送缓存区的占用空间仍不能达到第一空间值。此时,若下一个网络数据包要很久后才会发出,长时间等待会造成高延时,基于此,可以同时配置一个定时器,在开始进行聚合操作时触发定时,聚合耗时达到一第一时间值时,即使数据发送缓存区的占用空间未达到第一空间值,也会触发执行一次直接存储器访问,实现减少直接存储器访问次数的同时,综合考虑延时情况。
41.可以理解的是,可以根据应用场景将第一传输标准配置为数据发送缓存区的占用空间达到一第一空间值、聚合耗时达到一第一时间值中的至少一种。另外,也可以将第一传输标准配置为本次聚合的发送包的数量达到预设的阈值。
42.本实施例中,上述第一空间值和第一时间值可以分别是唯一的值,也可以分别为多个值,可根据需求进行配置。以第一时间值为多个为例,可以根据实时性需求,如游戏模式下,实时性要求比较高,则相应配置一个较短的第一时间值,如实时性要求比较低,则相应配置一个较长的第一时间值,在实际应用场景下,驱动程序可以通过软件配置实现对实时性需求的识别,进而动态适配相应的第一时间值。第一空间值以此类推,此处不再赘述。
43.本发明的较佳的实施例中,通信硬件设备中配置有一数据接收缓存区,则直接存储器访问数据传输方法还包括一数据接收过程,如图2所示,数据接收过程包括:
44.步骤a1,通信硬件设备在接收到网络发送的多个接收包时,将各接收包按照接收顺序依次聚合至数据接收缓存区,并在相邻两接收包之间添加一第二分隔符,以及在每次数据接收缓存区达到一第二传输标准时执行一次直接存储器访问,以将数据接收缓存区内的当前聚合的所有接收包搬移至驱动程序;
45.步骤a2,驱动程序根据各第二分隔符识别出各接收包,以将各接收包相应发送至操作系统。
46.具体地,本实施例中,数据接收过程与上述数据发送过程的数据传输路径相反,但
数据聚合操作和识别操作与数据接收过程同理,具体过程此处不再赘述。
47.本发明的较佳的实施例中,步骤a1中,数据接收缓存区的占用空间达到一第二空间值或聚合耗时达到一第二时间值时,表示数据接收缓存区达到第二传输标准。
48.具体地,本实施例中,第二传输标准与第一传输标准的配置原理相同,此处不再赘述。可以理解的是,第一空间值和第二空间值的具体数值可以相同,也可以不同,第一时间值和第二时间值的具体数值可以相同,也可以不同。其中,第一空间值优选为最大传输单元。
49.本发明还提供一种直接存储器访问数据传输系统,应用上述的直接存储器访问数据传输方法,如图3所示,直接存储器访问数据传输系统包括:
50.计算机系统1,计算机系统1上装载有通信硬件设备2,计算机系统1包括:
51.操作系统11,用于在向外发送数据时,将每次发送的网络数据包分散成多个发送包分别存储在不同的内存地址,并对应生成一链表,链表中配置有各发送包的发送顺序和对应的内存地址;
52.驱动程序12,连接一数据发送缓存区13,驱动程序12包括一第一处理单元121,用于获取链表,随后根据链表中的发送顺序分别由各内存地址中依次将对应的发送包聚合至数据发送缓存区,并在聚合过程中,在相邻两发送包之间添加一第一分隔符,以及在每次数据发送缓存区达到一第一传输标准时执行一次直接存储器访问,以将数据发送缓存区内的当前聚合的所有发送包搬移至通信硬件设备;
53.通信硬件设备2包括一第一识别单元21,用于根据各第一分隔符识别出各发送包,以将各发送包相应发送至网络中。
54.本发明的较佳的实施例中,数据发送缓存区的占用空间达到一第一空间值或聚合耗时达到一第一时间值时,表示数据发送缓存区达到第一传输标准。
55.本发明的较佳的实施例中,通信硬件设备2还包括:
56.第二处理单元22,连接一数据接收缓存区23,第二处理单元22用于在接收到网络发送的多个接收包时,将各接收包按照接收顺序依次聚合至数据接收缓存区,并在相邻两接收包之间添加一第二分隔符,以及在每次数据接收缓存区达到一第二传输标准时执行一次直接存储器访问,以将数据接收缓存区内的当前聚合的所有接收包搬移至驱动程序;
57.则驱动程序12还包括一第二识别单元122,用于根据各第二分隔符识别出各接收包,以将各接收包相应发送至操作系统。
58.本发明的较佳的实施例中,数据接收缓存区的占用空间达到一第二空间值或聚合耗时达到一第二时间值时,表示数据接收缓存区达到第二传输标准。
59.以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献