[发明专利]一种实现DMA数据传输的方法及装置有效
申请号: | 200910041976.2 | 申请日: | 2009-08-20 |
公开(公告)号: | CN101634975A | 公开(公告)日: | 2010-01-27 |
发明(设计)人: | 赵群英;田启金 | 申请(专利权)人: | 广东威创视讯科技股份有限公司 |
主分类号: | G06F13/28 | 分类号: | G06F13/28;G06F9/48 |
代理公司: | 广州市华学知识产权代理有限公司 | 代理人: | 李卫东;黄 磊 |
地址: | 510663广东省广*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 dma 数据传输 方法 装置 | ||
技术领域
本发明涉及一种不影响设备普通I/O读写操作快速实现的海量数据DirectMemory Access(直接存储器访问,以下简称DMA)传输的方法及装置。
背景技术
在含有中央处理器(以下简称CPU)的系统中,为了提高系统数据传输效率,在进行外设与存储器之间大量数据传输操作时,通常通过PCIE接口,采用DMA方式实现对海量数据的快速传输操作。DMA操作主要通过DMA控制器来实现,DMA控制器在传输数据时,通过硬件逻辑电路用固定顺序发地址和读/写信号来实现高速数据传输;在此过程中,数据不经过CPU而是直接在外设与存储器之间传输。
在现有技术中,在DMA数据传输过程中,DMA控制器占有PCIE总线,CPU对设备进行I/O读写操作。由于在DMA传输数据过程中PCIE总线被DMA控制器占有,所以该情况下是不能对设备进行I/O读写操作的,否则会造成系统死机或者崩溃。在设备DMA传输过程中,如果需要进行I/O读写操作,目前的方法是等待DMA传输完成,释放总线控制权,CPU获取总线控制权后再完成I/O读写操作。目前的这种方法在DMA传输数据量大的情况下,I/O读写操作时间延迟将会非常严重。例如总线传输速度为100兆字节/秒,一次DMA传输为10兆字节数据,完成该次DMA操作时间约100毫秒,假设在DMA刚启动时应用程序需要对设备进行一次I/O读写操作,本次I/O读写操作必须等待本次DMA完成再进行,延迟时间至少100毫秒。在高速采集系统中,延时100毫秒是非常严重的,所以解决或改善这个问题有深远的现实意义。
发明内容
本发明的目的主要是解决上述现有技术所存在的问题,提供一种实现DMA数据传输的方法及装置,在海量数据DMA过程中仍然能对设备进行快速的I/O读写操作。
本发明采用如下技术方案实现上述目的:实现DMA数据传输的方法,其传输过程为:DMA传输模块把DMA请求传输的总数据分割成若干个DMA传输单元后再通过通用DMA控制器逐个传输;每一DMA传输单元的传输完成后通用DMA控制器发送一个中断给DMA传输模块,然后DMA传输模块获取中断并累计DMA传输数据量大小,同时中断处理模块查询是否存在I/O读写操作请求,若有则响应I/O读写请求,等I/O读写操作完成后清除中断标识,若无I/O读写操作请求则中断处理模块直接清除中断标识;中断标识清除后启动下一个DMA传输单元的传输,直至DMA请求传输的总数据传输完成。
具体地,上述实现DMA数据传输的方法包括如下步骤:
步骤1:DMA传输控制模块收到DMA传输请求并根据DMA传输请求把发起DMA操作的源地址、目标地址、DMA传输的总大小和每个DMA传输单元的大小发送到DMA传输模块,同时设置每个DMA传输单元的大小;
步骤2:DMA传输模块根据设定好的每个DMA传输单元传输数据的大小把DMA请求传输的总数据请求分成一个或多个DMA传输单元;
步骤3:DMA传输模块根据顺序依次把各个DMA传输单元发送给通用DMA控制器进行DMA传输操作;同时I/O操作控制模块在DMA数据传输过程中,收到I/O读写操作请求,则把该I/O读写操作请求放入I/O队列中;
步骤4:通用DMA控制器每完成一个DMA传输单元的传输就会发送一个中断给DMA传输模块;DMA传输模块收到此中断后,判断DMA请求传输的总数据是否传输结束,并修改DMA传输模块的DMA参数寄存器里所存储的已完成数据传输数量,产生一个中断给中断处理模块;
步骤5:中断处理模块接收到DMA传输模块发送的中断后,若DMA请求传输的总数据没有传输完成则查询I/O队列,如果存在I/O读写操作请求,则I/O读写操作控制模块把I/O队列的I/O读写操作请求发送给I/O读写操作模块,等待I/O读写操作完成后,中断处理模块清除DMA中断标识,执行步骤6;如果无I/O读写操作请求,则中断处理模块直接清除DMA中断标识,执行步骤6;若DMA请求传输的总数据已经传输完成,清除DMA中断标识,DMA数据传输结束;
步骤6:DMA传输模块等待DMA中断标识被清除,当中断标识被清除后,则启动下一个DMA传输单元的传输,执行步骤7;
步骤7:执行步骤3、步骤4、步骤5、步骤6,直到DMA请求传输的总数据传输完成,结束。
优选地,步骤1所述DMA传输单元的大小按下面的方法计算:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广东威创视讯科技股份有限公司,未经广东威创视讯科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910041976.2/2.html,转载请声明来源钻瓜专利网。