本发明涉及计算机,具体涉及一种dma数据传输方法及系统。
背景技术:
1、直接存储器存取(direct memory access,dma)是指在dma控制器的控制下,高速地将数据从一个地址空间直接复制到另外一个地址空间,期间不需要通过cpu控制,从而可以让cpu的资源来做其它操作。
2、在dma传输数据的过程中,由于网络包长、访存粒度要求、缓冲限制等原因,dma传输要分成多次完成,即拆包。而采用基于描述符的dma,需要通过把若干个带有源地址、目标地址、传输数据大小等信息的描述符,写入缓冲区组成描述符队列,把多个dma操作序列串联在一起,在当前的操作序列完成后,硬件自动设置并启动下一次dma传输,来提高数据传输的效率。基于描述符的dma使得dma和cpu直接能够较好的实现通信和计算的并行。
3、传统基于描述符的dma,在实际使用中,通常会进行两种类型的dma传输:一种是带有系统信息的系统包,其大小比较小,通常被称为系统级消息,长度不超过128b;一种是由实际需要传输数据组成的dma传输,其大小比较大,通常被称为传输消息传输,长度最长可达1gb以上。dma在执行时,是按照描述符队列里相应描述符的顺序来执行的,当遇到长消息对应的描述符,就执行发送长消息操作,当遇到短消息对应的描述符,就执行发送短消息操作。
4、此时,会出现一般长消息大小会达到gb级,而短消息一般在1kb以下,因为描述符是顺序拆分的,当拆长消息时,必须等待长消息拆分完毕,才会执行后面的短消息拆分,这样,当拆分的长消息很大时,会长时间阻塞后续系统级的短消息拆分,严重影响整个系统的运行,存在当长消息和短消息共存时,传输效率低及灵活性差的缺陷。
技术实现思路
1、因此,本发明提供的一种dma数据传输方法及系统,克服了现有技术中当长消息和短消息共存时,传输效率低及灵活性差的缺陷。
2、为达到上述目的,本发明提供如下技术方案:
3、第一方面,本发明实施例提供一种dma数据传输方法,所述传输方法包括:
4、获取数据包描述符;
5、于存储空间内存储数据包描述符;
6、根据数据包描述符区分数据包的类型,所述数据包的类型包括长包和短包,如果该数据包为长包则生成长消息请求,如果该数据包为短包则生成短消息请求;
7、根据长消息请求、短消息请求,读取存储空间内的描述符信息,利用短包优先级逻辑,生成dma数据的读队列信息及写队列信息,其中,短包优先级逻辑采用交替拆取的方式对长消息描述符预取、短消息描述符预取分别进行拆包,包括:按照预设比例拆出m个长消息的子包,暂停处理长消息描述符,保留其当前信息,跳转到拆取n个短消息的子包,然后再暂停处理短消息描述符,保留其当前信息,再跳回,根据处理长消息描述符保留的信息,继续拆取长消息的子包,循环上述拆包操作,其中,m和n均为正整数;
8、根据写队列信息、读队列信息及队列对应的数据信息进行打包,完成dma数据的传输。
9、可选地,所述根据长消息请求、短消息请求,读取存储空间内的描述符信息的内容包括:
10、当长消息描述符地址模块和短消息描述符地址模块分别接收到长消息请求、短消息请求后,将长消息描述符地址、短消息描述符地址发送至存储模块;
11、存储模块把对应地址存储的描述符发送至长消息描述符预取模块、短消息描述符预取模块。
12、可选地,读队列信息包括:子包中读地址和读长度,写队列信息包括:待写地址和待写长度。
13、第二方面,本发明实施例提供一种dma数据传输系统,包括:
14、获取模块,用于获取数据包描述符;
15、存储模块,用于于存储空间内存储数据包描述符;
16、描述符控制管理模块,用于根据数据包描述符区分数据包的类型,所述数据包的类型包括长包和短包,如果该数据包为长包则生成长消息请求,如果该数据包为短包则生成短消息请求;
17、拆分模块,用于根据长消息请求、短消息请求,读取存储空间内的描述符信息,利用短包优先级逻辑,生成dma数据的读队列信息及写队列信息,其中,短包优先级逻辑采用交替拆取的方式对长消息描述符预取、短消息描述符预取分别进行拆包,包括:按照预设比例拆出m个长消息的子包,暂停处理长消息描述符,保留其当前信息,跳转到拆取n个短消息的子包,然后再暂停处理短消息描述符,保留其当前信息,再跳回,根据处理长消息描述符保留的信息,继续拆取长消息的子包,循环上述拆包操作,其中,m和n均为正整数;
18、数据传输模块,用于根据写队列信息、读队列信息及队列对应的数据信息进行打包,完成dma数据的传输。
19、可选地,所述获取模块还包括:存储模块,用于存储存储空间内所述数据包。
20、第三方面,本发明实施例提供一种终端,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行本发明实施例第一方面所述的dma数据传输方法。
21、第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行本发明实施例第一方面所述的dma数据传输方法。
22、本发明技术方案,具有如下优点:
23、本发明提供的dma数据传输方法及系统,通过对长包和短包描述符的按比例拆分,从而减少了下一个数据包的等待时间,提高了短包优先级及传输效率。同时交替拆取的方式,使原先的描述符发送队列由顺序执行改为基于短包优先级执行,提高了系统性能和灵活性,从而提高了通信效率。
1.一种dma数据传输方法,其特征在于,所述传输方法包括:
2.根据权利要求1所述的dma数据传输方法,其特征在于,所述根据长消息请求、短消息请求,读取存储空间内的描述符信息的内容包括:
3.根据权利要求2所述的dma数据传输方法,其特征在于,读队列信息包括:子包中读地址和读长度,写队列信息包括:待写地址和待写长度。
4.一种dma数据传输系统,其特征在于,包括:
5.一种终端,其特征在于,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行权利要求1-3任一所述的dma数据传输方法。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行权利要求1-3任一所述的dma数据传输方法。