一种可提高系统性能的数据传输方法及装置与流程

文档序号:16840159发布日期:2019-02-12 21:26阅读:207来源:国知局
本发明属于SOC片内数据通路交换传输领域,尤其是涉及一种可提高系统性能的数据传输方法及装置。
背景技术
::根据摩尔定律的表述,随着深亚微米制造技术的发展,集成电路已深入片上系统时代。在片上系统时代,一颗芯片所实现的功能越来越复杂,数据交换也越来越多。初时,片内数据交换需要CPU来完成,在此期间,CPU无法响应其他任务,这势必大量占用CPU资源并降低系统性能。随着技术的发展,DMA技术出现。此时,端口数据可以利用DMA模块直接搬移到内存中暂存,并利用DMA模块从内存搬移到其他端口。在此期间,CPU只需要负责内存地址维护和中断响应等工作,其余时间可以执行其他任务,使CPU资源得到释放。虽然DMA技术极大的释放了CPU资源,但是依然会占用大量资源,如何最大程度减少CPU负担成了DMA技术发展的方向。如,从BlockDMA到SGDMA(scatter-gatherDMA)的发展,使中断CPU的次数大大减少,释放大量CPU资源。而本申请提出一种可以提高系统性能的数据传输方法,可以承担内存地址维护工作,特别适合有数据包格式的大数据量交换场景,减少CPU负担,进而提高系统性能。技术实现要素:有鉴于此,本发明旨在提出一种可提高系统性能的数据传输方法,以减少CPU负担并提高系统性能。为达到上述目的,本发明的技术方案是这样实现的:一种可提高系统性能的数据传输方法,具体包括如下步骤:(1)起点DMA模块向内存空间管理模块申请一个内存空间地址;(2)内存空间管理模块收到申请后从指针堆栈中弹出一个指针索引,并转换成内存空间指针,将内存空间指针返回起点DMA;(3)起点DMA根据内存空间指针将数据包搬移到相应的内存空间中;(4)当起点DMA完成数据传输后,起点DMA将中断CPU并将此次数据传输的信息上传CPU;(5)CPU响应起点DMA的中断并收集数据传输信息,分析信息并决定终点DMA,将必要的信息发送给终点DMA;(6)终点DMA根据内存空间指针将数据包从相应的内存空间中搬移;(7)当终点DMA完成数据传输之后,将内存空间指针写回内存空间管理模块,内存空间管理模块将内存空间指针转换成指针索引,并把指针索引压回指针堆栈中。进一步的,所述内存空间指针是由指针索引通过位移之后加上基地址的方式形成,位移的多少表示单个指针的大小。进一步的,所述步骤(2)中还包括内存空间管理模块收到申请后从指针堆栈中弹出一个指针索引,如果指针索引的个数小于下限值时,内存空间管理模块返回0值,并中断CPU告知指针用光。进一步的,内存空间地址申请成功后,可以为其设置copy次数参数,当同样的指针数据内容被n个终点DMA需要时,可以设置copy参数为n,每个终点DMA搬移完指针数据后,返回内存空间地址,copy参数减一,直到所有终点DMA都完成数据搬移并返回内存空间地址之后,copy参数归零,copy操作结束。进一步的,内存空间地址申请成功后,可以为其设置链接索引参数,这个参数主要完成link操作,可以将两个指针索引通过link操作,链接成为一个大的指针索引,具体通过设置linksource和linkdestination寄存器完成,将源内存空间地址写入linksource寄存器,并将目的内存空间地址写入linkdestination寄存器完成link操作;如果要了解某个内存空间地址是否包含link操作,需要通过读link操作,具体通过设置readlinksource和readlinkdestination寄存器完成,将目标内存空间地址写入readlinksource寄存器,通过读取readlinkdestination寄存器得知目标内存空间地址是否有link的内存空间地址。相对于现有技术,本发明所述的一种可提高系统性能的数据传输方法具有以下优势:本发明所述的方法利用起点DMA将数据搬移到内存相应的空间后,将此次数据搬移的信息上传CPU,由CPU通知终点DMA将数据搬走,终点DMA从内存中将相应的数据搬走后,通过内存空间管理模块释放相应内存空间,完成一次完整数据搬移,在此期间,CPU只负责最关键的数据传输方向的处理,极大减轻了CPU负担,提高了系统运行效率。本发明的另一目的在于提出一种可提高系统性能的数据传输装置,以减少CPU负担并提高系统性能。为达到上述目的,本发明的技术方案是这样实现的:一种可提高系统性能的数据传输装置,包括起点DMA模块、终点DMA模块、内存空间管理模块、SDRAM以及CPU,起点DMA用于向内存空间管理模块申请内存空间地址、搬移数据;终点DMA用于搬移数据,返回内存空间指针给内存空间管理模块;内存空间管理模块用于响应起点DMA以及终点DMA的请求,维护和管理内存空间指针;SDRAM用于存储数据;CPU过程中主要用于数据传输方向的管理。所述的一种可提高系统性能的数据传输装置与上述一种可提高系统性能的数据传输方法相对于现有技术具有的优势相同,在此不再赘述。附图说明构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1为本发明实施例所述一种可提高系统性能的数据传输方法的传输结构示意图;图2为本发明实施例所述的一种可提高系统性能的数据传输结构的参考系统架构;图3为本发明实施例所述的一种可提高系统性能的数据传输结构的参考系统架构。具体实施方式需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明中的具体含义。下面将参考附图并结合实施例来详细说明本发明。如附图1-3所示,一种可提高系统性能的数据传输结构,包含DMA模块和一个内存空间管理模块,当起点DMA模块有数据要传输时,向内存空间管理模块交互完成内存空间的申请,起点DMA将数据搬移到内存相应的空间后,将此次数据搬移的信息上传CPU,由CPU通知终点DMA将数据搬走,终点DMA从内存中将相应的数据搬走后,通过内存空间管理模块释放相应内存空间,完成一次完整数据搬移,在此期间,CPU只负责最关键的数据传输方向的处理,极大减轻了CPU负担,提高了系统运行效率。如图中标号步骤描述如下:1、当起点DMA从Aport收到一个数据包需要搬移到内存中暂存时,起点DMA启动数据传输操作;2、起点DMA向内存空间管理模块申请一块内存空间指针;3、内存空间管理模块收到起点DMA的请求后,从指针堆栈(bufferindexstack)中弹出一个指针索引(bufferindex)并转换成内存空间指针,将内存空间指针返回起点DMA;4、起点DMA根据内存空间指针将数据包搬移到相应的内存空间中;5、当起点DMA完成数据传输后,起点DMA将中断CPU并将此次数据传输的信息,包括内存空间指针和包长等上传CPU;6、CPU响应起点DMA的中断并收集数据传输信息,分析信息并决定终点DMA,然后将必要的信息,如内存空间指针发送给终点DMA;7、终点DMA根据内存空间指针将数据包从相应的内存空间中搬移到portB;当终点DMA完成数据传输之后,将内存空间指针写回内存空间管理模块,内存空间管理模块将内存空间指针转换回指针索引(bufferindex),内存空间管理模块检查此指针索引(bufferindex)的link和copy等等参数,合乎要求之后,内存空间管理模块将指针索引(bufferindex)压回指针堆栈(bufferindexstack)中。其中,传输结构的具体部件描述为:(1)内存空间管理模块:此模块负责维护内存空间地址信息,并响应DMA模块的内存空间申请释放请求,内存空间分配单位以buffer(大小可配置)为单位,支持link和copy操作。内存空间管理模块包含两个主要子模块,为指针堆栈(bufferindexstack)和信息表(buffertable),指针堆栈保存指针索引(bufferindex),内存空间地址由指针索引(bufferindex)变形而成,每个指针索引(bufferindex)对应信息表(buffertable)中的一组信息,信息包括copy次数、linkindex、申请DMA等信息。内存空间地址(buffermemoryunitpointer)是由指针索引(bufferindex)通过位移之后加上基地址的方式来形成,位移的多少就表示单个buffer的大小。内存空间管理模块具体操作过程表述如下:首先,发起数据传输的起点DMA向内存空间管理模块申请一个内存空间地址,内存空间管理模块收到申请后从指针堆栈(bufferindexstack)中弹出一个指针索引(bufferindex),如果指针索引(bufferindex)的个数小于下限值时,内存空间管理模块返回0值,并中断CPU告知指针用光。内存空间地址申请成功后,为其设置copy次数参数(buffertable中保存)。这个功能描述为,当同样的buffer数据内容被n个终点DMA需要时,可以设置copy参数为n,每个终点DMA搬移完buffer数据后,返回内存空间地址,copy参数减一,直到所有终点DMA都完成数据搬移并返回内存空间地址之后,copy参数归零,copy操作结束。内存空间地址申请成功后,为其设置linkindex参数(buffertable中保存)。这个参数主要完成link操作,此操作描述为,可以将两个指针索引(bufferindex)通过link操作,链接成为一个大的指针索引(bufferindex),具体通过设置linksource和linkdestination寄存器完成,将源内存空间地址写入linksource寄存器,并将目的内存空间地址写入linkdestination寄存器完成link操作。上述为完成link操作,如果要了解某个内存空间地址是否包含link操作,需要通过读link操作,具体通过设置readlinksource和readlinkdestination寄存器完成,将目标内存空间地址写入readlinksource寄存器,通过读取readlinkdestination寄存器得知目标内存空间地址是否有link的内存空间地址。当终点DMA完成将数据从内存搬出的操作之后,需要将内存空间地址释放。操作上是终点DMA将内存空间地址写回内存空间管理模块,内存空间管理模块将内存空间地址转换成指针索引(bufferindex)并把指针索引(bufferindex)压回指针堆栈(bufferindexstack)。CPU拥有最高权限可以直接读写信息表(buffertable),便于产生错误,中断CPU时,CPU做及时处理。DMA组件:完成基本的DMA数据搬移功能;结合内存空间管理模块完成内存空间地址的申请、释放、copy、link等操作;在完成数据搬移之后,中断CPU并上传此次数据搬移的相关信息。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1