[发明专利]一种Scatter-Gather DMA的数据传输缓冲区设计方法在审
申请号: | 201810957576.5 | 申请日: | 2018-08-22 |
公开(公告)号: | CN109189702A | 公开(公告)日: | 2019-01-11 |
发明(设计)人: | 赵瑞东;王朝晖;陈亮甫;吴登勇 | 申请(专利权)人: | 山东超越数控电子股份有限公司 |
主分类号: | G06F13/28 | 分类号: | G06F13/28;G06F13/12 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 孙晶伟 |
地址: | 250100 山东省*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 缓冲区 内核空间 用户空间 链表 数据传输缓冲区 数据拷贝 数据传输技术 中断处理程序 数据传输 数量对应 写入设备 节点数 两组 指向 传输 创建 | ||
本发明公开一种Scatter‑Gather DMA的数据传输缓冲区设计方法,涉及数据传输技术领域;使用scatter‑gather DMA进行数据传输时,创建两个scatter‑gather DMA链表,并将两个scatter‑gather DMA链表分别指向两组内核空间缓冲区,每组内核空间缓冲区的数量对应相应的scatter‑gather DMA链表节点数,用户空间数据拷贝到一组内核空间缓冲区并进行DMA传输的同时,利用CPU将下次需传输的用户空间数据拷贝入另一组内核空间缓冲区,当上一次DMA传输完成,利用中断处理程序启动下一次DMA传输,直至将用户空间数据完全写入设备。
技术领域
本发明公开一种数据传输缓冲区设计方法,涉及数据传输技术领域,具体地说是一种Scatter-Gather DMA的数据传输缓冲区设计方法。
背景技术
DMA(Direct Memory Access),即直接存储器存取,是一种快速传送数据的机制。数据传递可以从IO设备到内存,从内存到IO设备或从一段内存到另一段内存。利用它进行数据传送时不需要CPU的参与。每台电脑主机板上都有DMA控制器,通常计算机对其编程,并用一个适配器上的ROM(如软盘驱动控制器上的ROM)来储存程序,这些程序控制DMA传送数据。一旦控制器初始化完成,数据开始传送,DMA就可以脱离CPU,独立完成数据传送。
Scatter-gather DMA方式是与block DMA方式相对应的一种DMA方式。在DMA传输数据的过程中,要求源物理地址和目标物理地址必须是连续的。但是在某些计算机体系中连续的存储器地址在物理上不一定是连续的,所以DMA传输要分成多次完成。如果在传输完一块物理上连续的数据后引起一次中断,然后再由主机进行下一块物理上连续的数据传输,那么这种方式就为block DMA方式。Scatter-gather DMA方式则不同,它使用一个链表描述物理上不连续的存储空间,然后把链表首地址告诉DMA master。DMA master在传输完一块物理连续的数据后,不用发起中断,而是根据链表来传输下一块物理上连续的数据,直到传输完毕后再发起一次中断。scatter-gather DMA方式比block DMA方式效率高。
通常使用scatter-gather DMA数据发送流程,首先创建sgDMA数据传输链表,然后驱动程序在内核空间创建一组物理地址不连续的缓冲区,并将缓冲区的物理地址填入数据传输链表的节点中,CPU需要将用户空间的数据通过memcpy拷贝如内核空间缓冲区,将链表地址写入设备DMA寄存器,启动DMA传输,DMA开始数据传输,并在传输完成后发送中断,中断处理程序进行下一次的数据传输。这种传输方式数据从用户空间到内存空间的数据拷贝同内存空间数据通过DMA到设备是串行传输,CPU同DMA无法同时参与数据传输工作,造成数据无法充分利用DMA的数据传输带宽。基于上述情况,本发明提供一种Scatter-Gather DMA的数据传输缓冲区设计方法,在使用scatter-gather DMA进行计算机主存到IO设备间的数据传输时,实现用户空间到内核空间、内核空间到IO设备空间的并行数据传输,提高数据在DMA传输时的效率。
发明内容
本发明针对现有技术存在的不足和问题,提供一种Scatter-Gather DMA的数据传输缓冲区设计方法,
本发明提出的具体方案是:
一种Scatter-Gather DMA的数据传输缓冲区设计方法,使用scatter-gather DMA进行数据传输时,创建两个scatter-gather DMA链表,并将两个scatter-gather DMA链表分别指向两组内核空间缓冲区,每组内核空间缓冲区的数量对应相应的scatter-gather DMA链表节点数,
用户空间数据拷贝到一组内核空间缓冲区并进行DMA传输的同时,利用CPU将下次需传输的用户空间数据拷贝入另一组内核空间缓冲区,当上一次DMA传输完成,利用中断处理程序启动下一次DMA传输,直至将用户空间数据完全写入设备。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东超越数控电子股份有限公司,未经山东超越数控电子股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810957576.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种针对嵌入式存储接口数据传输的方法及其系统
- 下一篇:一种数据格式转换方法