首页> 中国专利> DMA数据传输方法、DMA数据传输装置及数据传输系统

DMA数据传输方法、DMA数据传输装置及数据传输系统

摘要

本申请提供一种DMA数据传输方法、DMA数据传输装置及数据传输系统。DMA数据传输方法包括:在DMA网络传输数据时,周期性地统计和检测接收数据包的大小和溢出丢包情况;基于接收数据包的大小和溢出丢包情况,自适应地调整DMA通道对应接收缓存的大小。本申请提供的技术方案通过周期性的检测溢出丢包情况,并据此及时调整DMA通道的接收缓存大小,既保证了数据传输的可靠性、提高了网络吞吐量,又有效避免内存空间的浪费,提高了DMA通道接收缓存的利用率。

著录项

  • 公开/公告号CN114884909A

    专利类型发明专利

  • 公开/公告日2022-08-09

    原文格式PDF

  • 申请/专利权人 苏州联讯仪器有限公司;

    申请/专利号CN202210808047.5

  • 发明设计人 闫亚超;廉哲;胡海洋;

    申请日2022-07-11

  • 分类号H04L49/9005(2022.01);H04L49/90(2022.01);

  • 代理机构北京超凡宏宇专利代理事务所(特殊普通合伙) 11463;

  • 代理人周春霞

  • 地址 215000 江苏省苏州市高新区湘江路1508号5幢

  • 入库时间 2023-06-19 16:20:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-04-07

    专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L49/9005 专利号:ZL2022108080475 变更事项:专利权人 变更前:苏州联讯仪器有限公司 变更后:苏州联讯仪器股份有限公司 变更事项:地址 变更前:215000 江苏省苏州市高新区湘江路1508号5幢 变更后:215129 江苏省苏州市苏州高新区湘江路1508号5幢

    专利权人的姓名或者名称、地址的变更

  • 2022-09-09

    授权

    发明专利权授予

  • 2022-08-26

    实质审查的生效 IPC(主分类):H04L49/9005 专利申请号:2022108080475 申请日:20220711

    实质审查的生效

  • 2022-08-09

    公开

    发明专利申请公布

说明书

技术领域

本申请属于数据传输技术领域,具体涉及一种DMA数据传输方法、DMA数据传输装置及数据传输系统。

背景技术

在数据传输过程中,网络吞吐率是一个系统中单位时间内处理传输数据的吞吐量。网络吞吐率的短板就是底层的DMA接收和处理功能。现有方案中,为了避免丢包事件的一般做法是增加DMA的个数,比如把默认的4个DMA修改为100个DMA,这样表面上看可以有效提高吞吐率。但是DMA个数越多,占用的内存也越多,而且对DMA的使用效率不高造成内存空间的浪费。因为每个DMA的大小是1536字节,但是即使一个数据包只有100字节,也会占用这一个DMA,新来的数据包只能重新分配一个DMA来保存。因此增加DMA个数的做法并不能避免丢包事件的发生和内存空间的浪费,也不能实质上提高网络吞吐率。

发明内容

本申请的目的是为了克服现有技术存在的内存空间的浪费和丢包的缺陷,提供一种DMA数据传输方法、DMA数据传输装置及数据传输系统,该DMA数据传输方法可以有效的避免内存空间的浪费和丢包情况的发生,使得系统传输的数据量大大增加,网络吞吐率也随之提高。

为了实现上述目的,本申请提供了一种DMA数据传输方法,包括:

开启多个DMA通道,初始化设置每个DMA通道对应的接收缓存;

周期性地统计和检测所述多个DMA通道接收数据包的大小和溢出丢包的情况;

基于所述统计或检测到的接收数据包的大小和溢出丢包情况,自适应地调整所述多个DMA通道的接收缓存;

其中,所述基于所述统计或检测到的接收数据包的大小和溢出丢包情况,自适应地调整所述多个DMA通道的接收缓存,包括:

周期性检测所述多个DMA通道是否发生溢出丢包,并统计成功接收的数据包的最大长度L

若检测到有DMA通道发生溢出丢包,则按照预设的步长增大所述多个DMA通道接收缓存中的一个或多个;

若没有DMA通道发生溢出丢包,则判断所述多个DMA通道的当前接收缓存中是否存在超过所述最大长度L

在一个实施例中,所述初始化设置每个DMA通道对应的接收缓存,具体为:初始化设置每个DMA通道对应的缓存大小为一固定长度L

在一个实施例中,若检测到有DMA通道发生溢出丢包,则按照预设的步长增大所述多个DMA通道接收缓存中的一个或多个,包括:将发生溢出丢包的DMA通道作为目标通道,按照预设步长增大所述目标通道的接收缓存,并将所述目标通道之外的部分其他DMA通道的接收缓存大小调整为已成功接收的数据包的平均长度L

在一个实施例中,所述方法还包括:在任一DMA通道成功接收一个数据包后,通过异步消息机制发起一个从缓存到缓存的二级DMA数据传输,所述二级DMA数据传输将所述成功接收的数据包从相应的DMA通道的接收缓存搬移至预设的先进先出队列以释放相应的DMA通道的接收缓存。

在一个实施例中,所述方法还包括:

初始化设置每个DMA通道对应的接收缓存时,为每一个DMA通道配置两个接收缓存并通过循环列表进行组织所述两个接收缓存,所述两个接收缓存中正在被DMA通道使用的接收缓存由当前占用标识进行标识未当前收缓存,未使用的接收缓存则被标识为备用缓存。

一种数据传输装置,包括:

初始化设置单元,配置为开启多个DMA通道,并初始化设置每个DMA通道对应的接收缓存;

检测判断单元,配置为周期性地统计和检测所述多个DMA通道接收数据包的大小和溢出丢包的情况;

自适应调整单元,配置为基于所述统计或检测到的接收数据包的大小和溢出丢包情况,自适应地调整所述多个DMA通道的接收缓存;

所述自适应调整单元,还配置为周期性检测所述多个DMA通道是否发生溢出丢包,并统计成功接收的数据包的最大长度L

所述自适应调整单元,还配置为若检测到有DMA通道发生溢出丢包,则按照预设的步长增大所述多个DMA通道接收缓存中的一个或多个;

以及,

所述自适应调整单元,还配置为若没有DMA通道发生溢出丢包,则判断所述多个DMA通道的当前接收缓存中是否存在超过所述最大长度L

所述自适应调整单元,还配置为若所述多个DMA通道的当前接收缓存中存在超过所述最大长度L

在一个实施例中,所述自适应调整单元,在执行若检测到有DMA通道发生溢出丢包,则按照预设的步长增大所述多个DMA通道接收缓存中的一个或多个的步骤时,包括:

所述自适应调整单元,配置为将发生溢出丢包的DMA通道作为目标通道,按照预设步长增大所述目标通道的接收缓存;

所述自适应调整单元,配置为将所述目标通道之外的部分其他DMA通道的接收缓存调整为已成功接收数据包的平均长度L

一种数据传输系统,包括:单片机和协处理器;所述单片机包括中央处理器、主存储器和先进先出存储器;

所述协处理器用于执行上述任一项所述的DMA数据传输方法实现外部数据到单片机的数据传输。

本申请提供一种DMA数据传输方法。该方法包括:在DMA网络传输数据时,周期性地统计和检测接收数据包的大小和溢出丢包情况;基于接收数据包的大小和溢出丢包情况,自适应地调整DMA通道对应接收缓存的大小。本申请提供的技术方案通过周期性的检测溢出丢包情况,并据此及时调整DMA通道的接收缓存大小,既保证了数据传输的可靠性、提高了网络吞吐量,又有效避免内存空间的浪费,提高了DMA通道接收缓存的利用率。

附图说明

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

图1为本申请一个实施例提供的DMA数据传输方法的步骤流程图;

图2为本申请一个实施例提供的数据传输系统的结构示意图。

具体实施方式

下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

请参阅图1,本申请实施例提供一种DMA数据传输方法。

所述DMA数据传输方法可以应用于如图2所示的数据传输系统中,以实现网络数据的传输。该数据传输系统包括:以太网、系统总线、协处理器DMA(数量可以为一个也可以为多个)、单片机。所述单片机与所述以太网通过系统总线连接。所述单片机包括中央处理器(CPU)、主存储器。在一些实施例中,所述单片机还包括次存储器(如先进先出存储器,FIFO)。

所述DMA数据传输方法,包括:

所述DMA数据传输方法包括:

S100,开启多个DMA通道,初始化设置每个DMA通道对应的接收缓存;

本步骤中,可以根据历史数据、项目经验、项目需求或其他标准,统计单片机需要接收的命令的平均数据长度L

S200,周期性地统计和检测所述多个DMA通道接收数据包的大小和溢出丢包的情况;

本步骤中,统计周期或者检测周期均根据实际需求进行选择性设置。周期性的统计所述多个DMA通道接收数据包的大小用于指导后续每个DMA通道缓存区大小的动态调整。周期性地检测所述多个DMA通道溢出丢包的情况,可以帮助更合理的调整每个DMA通道的缓存区大小,避免丢包事件的发生。

S300,基于所述统计或检测到的接收数据包的大小和溢出丢包情况,自适应地调整所述多个DMA通道的接收缓存。

本步骤中,自适应的调整所述多个DMA通道对应的缓存的大小可以充分节约、高效利用单片机的内存空间,同时提高网络吞吐率。

所述步骤S300具体可以包括:S310,周期性检测每个DMA通道是否发生溢出丢包,并统计已成功接收的数据包的最大长度L

本步骤中,在单片机中,数据包是通过DMA进行接收的,DMA将以太网数据转移至单片机的内存中,然后通知单片机处理数据。单片机每收到一个数据包,不管该数据多小,单片机底层都要找到一个空闲的描述符,然后设置该描述符为被占用,将数据包放入该描述符的缓存区中,当数据被单片机处理后,再将该描述符设置为空闲,以便后续使用;当所有描述符都被占用时,新来的数据包由于无处存放,只能丢掉,这就造成了丢包,丢包会影响通信的效率。溢出丢包事件可以通过查询相关的硬件寄存器(比如查询输入溢出标志位,来确定是否发生溢出丢包,查询完后重置该输入溢出标志位。

S320,若检测到有DMA通道发生溢出丢包,则按照预设的步长增大所述多个DMA通道对应缓存中的一个或多个。

本步骤中,所述预设的步长可以设置为10个字节、20个字节、45个字节、100个字节、128个字节、200个字节、256个字节、512个字节,或者其他长度。在具体调整过程中,可按照预设步长反复调整多次,直至调整后能够容纳所述数据包的最大长度值。

本步骤中,如果检测到目标DMA通道发生溢出丢包,可以仅调整目标DMA通道对应的缓存大小。或者,如果检测到目标DMA通道发生溢出丢包,可以调整与目标DMA通道相邻的DMA通道的预设缓存区,也可以调整与目标DMA通道不相邻的DMA通道的预设缓存区。从另外的角度说,所述目标DMA通道之外的DMA通道的预设缓存区,可以包括目标DMA通道之外的所有DMA通道的预设缓存区,也可以包括目标DMA通道之外的部分DMA通道的预设缓存区。

S330,若没有DMA通道发生溢出丢包,则判断所述多个DMA通道对应的当前缓存是否存在超过所述数据包的最大长度L

本步骤中,通过判断所述多个DMA通道对应的当前缓存是否存在超过所述数据包的最大长度L

S331,若存在,则将所述目标缓存的大小调整为所述数据包的最大长度L

本步骤中,将所述目标缓存的大小调整为所述数据包的最大长度L

本实施例中,在初始化时开启多个DMA通道,并设置每个DMA通道对应的缓存大小。基于接收数据包的大小自适应地调整所述多个DMA通道对应的缓存的大小。具体若检测到有DMA通道发生溢出丢包,则按照预设的步长增大所述多个DMA通道对应缓存中的一个或多个。若存在超过所述数据包的最大长度L

本实施例中,在单片机内存受限的情况下,通过将缓冲区按照项目实际情况改小,并且动态调整缓存区大小的方法,可以增加同一时刻容纳的数据包个数。具体说来:将每个DMA接收缓冲区的空间由1536字节改小,改为适合自己项目的大小。DMA将数据从网卡转移到内存后,尽快把数据从内存中转移,以释放DMA,这样DMA可以继续接收数据,有效的避免内存空间的浪费和丢包情况的发生,使得系统传输的数据量大大增加,网络吞吐率也随之提高。

在一个实施例中,初始化设置每个DMA通道对应的缓存大小为一固定长度L

本实施例中,给出初始化设置每个DMA通道对应的缓存大小为固定长度L

基于接收数据包的大小自适应地调整所述多个DMA通道对应的缓存的大小的步骤中,自适应地调整过程可以为按照特定步长进行调整,不论是将预设缓存区调大,还是将预设缓存区调小,可能需要多次调整才能完成。具体的步长值可以根据实际项目需要进行调整。

在一个实施例中,若检测到有DMA通道发生溢出丢包,则按照预设的步长增大所述多个DMA通道对应缓存中的一个或多个,包括:

将发生溢出丢包的DMA通道作为目标通道,按照预设步长增大所述目标通道的缓存大小,以使所述目标通道能够完全接收该数据包而不再发生溢出丢包。

将所述目标通道之外的其他DMA通道的缓存大小调整为容纳已接收数据包的平均长度L

本实施例中,对于所述目标通道和所述目标通道之外的其他DMA通道实施不同的调整策略,目的是最大限度的利用有限的内存空间,增大数据量的传输,提高网络吞吐率。

在一个实施例中,若检测到有DMA通道发生溢出丢包,则将其作为目标通道,检测溢出数据长度是否超过第一阈值(例如可以设置为10个字节),如果超过第一阈值则将目标通道的缓存区大小按照第一步长调整为可容纳已经成功接收的数据包的最大长度L

若检测到有DMA通道发生溢出丢包,则将其作为目标通道,检测溢出数据长度是否超过第二阈值(例如可以设置为100个字节,第二阈值大于第一阈值),如果超过第二阈值则将目标通道的缓存区大小按照第二步长(第二步长大于第一步长)调整为可容纳已经成功接收的数据包的最大长度L

本实施例中,设置第一阈值和第二阈值可以更加精确的检测溢出数据长度,通过溢出数据的长度值,进一步地设置更合理的调整步长,快速高效的将目标通道的缓存大小调整为已经成功接收的数据包的最大长度L

在一个实施例中,所述DMA数据传输方法还包括:将已存储至主存储器中的数据包转移至先进先出存储器,以将所述主存储器中的缓存区释放,等待下一次网卡到主存储器的数据包传输。

本实施例中,在单片机内部启动了从主存储器到先进先出存储器的数据包传输过程。当DMA将数据从网卡搬用到内存中,如果单片机直接解析处理内存中的数据时,可能处理需要较长时间,处理期间,DMA就无法再使用当前的内存了,必须等单片机处理完以后,DMA才能使用这片内存。为解决这个问题,可以在DMA将数据从网卡搬用到主存储器中后,再次启动1次“内存到内存”的DMA数据传输过程,它的源起始地址为主存储器的起始地址,它的目标地址为用户处理数据的先进先出存储器的地址,传输数据长度为此次接收到的数据包长度,当此次DMA数据传输完成时,单片机可以在FIFO中取出数据,进行耗时的数据处理操作,同时DMA也可以继续使用主存储器用于接收新的网络数据包。

在一个实施例中,所述DMA数据传输方法,还包括:初始化设置每个DMA通道对应的接收缓存时,为每一个DMA通道配置两个接收缓存并通过循环列表进行组织所述两个接收缓存,所述两个接收缓存中正在被DMA通道使用的接收缓存由当前占用标识进行标识未当前收缓存,未使用的接收缓存则被标识为备用缓存。

本实施例中,比如可以在主存储器中为每一个DMA均配置主缓存区和备用缓存区。

通过循环列表组织所述主缓存区和所述备用缓存区的内存空间,并通过当前标识位确定所述主缓存区和所述备用缓存区是否被占用的状态。

当识别到所有所述主缓存区均被占用时,下一个数据包将存储至所述备用缓存区。当识别到至少一个所述主缓存被释放之后,下一个数据包将存储至所述主缓存区。

本实施例中,通过合理的评估主存储器的大小,确定是否为每一个DMA配置主缓存区和备用缓存区。为每一个DMA设置主缓存区和备用缓存区、或者一个主缓存区和多个备用缓存区,可以减少数据覆盖的可能性。

在一个实施例中,所述DMA数据传输方法包括:在任一DMA通道成功接收一个数据包后,通过异步消息机制发起一个从缓存到缓存的二级DMA数据传输,所述二级DMA数据传输将所述成功接收的数据包从相应的DMA通道的接收缓存搬移至预设的先进先出队列以释放相应的DMA通道的接收缓存。

所述DMA数据传输方法可以包括二次DMA数据传输过程。

将外部数据包转移至单片机的主存储器的第一次DMA传输过程和将所述主存储器中的数据包转移至先进先出存储器的第二次DMA传输过程;

第一次DMA传输过程的源地址为单片机外的地址,目标地址为主存储器中主缓存区和备用缓存区的地址;

第二次DMA传输过程的源地址为主存储器中主缓存区和备用缓存区的地址,目标地址为先进先出存储器的地址。

本实施例中,所述DMA数据传输方法包括了二次DMA数据传输过程,在基于接收数据包的大小自适应地调整所述多个DMA通道对应的缓存的大小的基础上,更进一步的通过提前将需要单片机CPU运算的数据转移至FIFO中,避免单片机直接解析处理主存储器中的数据时,DMA无法再使用当前的内存进行第一次DMA数据传输,从而提高了网络吞吐率。

在一个实施例中,所述数据传输方法应用于数据传输系统实现网络数据的传输,所述数据传输系统包括:多个DMA,初始化时对每一个DMA均按照上述任一项所述的方法设置并初始化多个DMA通道的缓存大小以及基于接收数据包的大小自适应地调整所述多个DMA通道对应的缓存的大小。

所述数据传输系统包括:多个DMA。每一个DMA在初始化时均开启多个DMA通道,并初始化设置每个DMA通道对应的缓存大小。对于不同的DMA初始化开启的DMA通道数量可以不同。每一个DMA在基于接收数据包的大小自适应地调整所述多个DMA通道对应的缓存的大小时,采用的调整策略与上述实施例中的调整策略一致。

本申请还提供一种数据传输装置,包括:初始化设置单元、检测判断单元和自适应调整单元。

所述初始化设置单元配置为开启多个DMA通道,并初始化设置每个DMA通道对应的缓存大小。

所述检测判断单元配置为周期性地统计和检测所述多个DMA通道接收数据包的大小和溢出丢包的情况。

所述自适应调整单元配置为基于所述统计或检测到的接收数据包的大小和溢出丢包情况,自适应地调整所述多个DMA通道的接收缓存。

本实施例中,所述数据传输装置是基于上述DMA数据传输方法而设置的,可以集成在DMA中,也可以集成在单片机中,只要能够在DMA数据传输时实现自适应地调整所述多个DMA通道对应的缓存的大小,即可在保证数据传输的可靠性的同时,避免内存空间的浪费,使得系统传输的数据量大大增加,网络吞吐率也随之提高。

在一个实施例中,所述自适应调整单元,还配置为周期性检测所述多个DMA通道是否发生溢出丢包,并统计成功接收的数据包的最大长度L

所述自适应调整单元,还配置为若检测到有DMA通道发生溢出丢包,则按照预设的步长增大所述多个DMA通道接收缓存中的一个或多个;

以及,

所述自适应调整单元,还配置为若没有DMA通道发生溢出丢包,则判断所述多个DMA通道的当前接收缓存中是否存在超过所述最大长度L

所述自适应调整单元,还配置为若所述多个DMA通道的当前接收缓存中存在超过所述最大长度L

本实施例中,基于接收数据包的大小自适应地调整所述多个DMA通道对应的缓存的大小。具体若检测到有DMA通道发生溢出丢包,则按照预设的步长增大所述多个DMA通道对应缓存中的一个或多个。若存在超过所述数据包的最大长度L

在一个实施例中,所述自适应调整单元,在执行若检测到有DMA通道发生溢出丢包,则按照预设的步长增大所述多个DMA通道接收缓存中的一个或多个的步骤时,包括:

所述自适应调整单元,配置为将发生溢出丢包的DMA通道作为目标通道,按照预设步长增大所述目标通道的接收缓存;

所述自适应调整单元,配置为将所述目标通道之外的部分其他DMA通道的接收缓存调整为已成功接收数据包的平均长度L

本实施例中,对于所述目标通道和所述目标通道之外的其他DMA通道实施不同的调整策略,目的是最大限度的利用有限的内存空间,增大数据量的传输,提高网络吞吐率。

本申请还提供一种数据传输系统,包括:单片机和协处理器;所述单片机包括中央处理器、主存储器和先进先出存储器。所述协处理器用于执行上述任一项所述的DMA数据传输方法实现外部数据到单片机的数据传输。

所述数据传输系统的所述协处理器(DMA)在初始化时开启多个DMA通道,并设置每个DMA通道对应的缓存大小。所述协处理器(DMA)基于接收数据包的大小自适应地调整所述多个DMA通道对应的缓存的大小。具体地,若检测到有DMA通道发生溢出丢包,则按照预设的步长增大所述多个DMA通道对应缓存中的一个或多个。若存在超过所述数据包的最大长度L

本实施例中,通过初始化时,为每一个DMA设置固定大小的缓存区,以及在真正数据传输过程中,基于接收数据包的大小自适应地调整所述多个DMA通道对应的缓存的大小,以及,周期性的检测是否有溢出丢包情况的发生,一方面避免了数据丢失,保证了数据传输的可靠性;另一方面,若发生溢出丢包则动态调整DMA缓存区的大小,可以有效避免内存空间的浪费,使得系统传输的数据量大大增加,网络吞吐率也随之提高。

本申请实施例还提供了一种计算机存储介质,用于储存上述DMA数据传输方法的功能所涉及的程序。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号