[发明专利]基于应用层的运算卡驱动实现方法在审
| 申请号: | 201911100057.8 | 申请日: | 2019-11-12 |
| 公开(公告)号: | CN111124506A | 公开(公告)日: | 2020-05-08 |
| 发明(设计)人: | 单金良;阳春;朱红宏;胡炜;李国涛;李文;张涛 | 申请(专利权)人: | 中国电子科技集团公司第三十研究所 |
| 主分类号: | G06F9/4401 | 分类号: | G06F9/4401;G06F13/28 |
| 代理公司: | 成都九鼎天元知识产权代理有限公司 51214 | 代理人: | 邓世燕 |
| 地址: | 610000 *** | 国省代码: | 四川;51 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 应用 运算 驱动 实现 方法 | ||
本发明公开了一种基于应用层的运算卡驱动实现方法,包括如下步骤:步骤一、在内核空间完成初始化操作;步骤二、在应用层空间完成全部的业务流程。与现有技术相比,本发明的积极效果是:本发明将硬件可DMA的内存和运算卡的控制寄存器映射到用户空间,提供接口允许应用程序直接将数据放入DMA区域,并允许控制运算卡硬件。在运算完成之后异步调用应用程序事先提供的完成函数,避免了大量数据的拷贝操作。并使用异步完成的方式,允许在一个线程里面实现多个复杂运算,避免过多的CPU任务切换导致的CPU消耗。本发明方法充分利用了CPU的运算能力,提高了复杂运算的整体性能。
技术领域
本发明涉及一种基于应用层的运算卡驱动实现方法。
背景技术
随着传输层设备、应用层设备的研发,越来越多的设备需要在应用层来高速调用硬件设备以实现复杂的运算服务。传统的应用调用内核服务的工作模式逐渐无法满足性能需求。
现有的应用层使用运算卡的典型流程如图1所示,包括如下步骤:
(1)应用程序准备好原始数据。发起系统调用,调用驱动程序提供的接口,将原始数据的地址传递给驱动。
(2)驱动程序将应用程序的原始数据拷贝到运算卡可以访问的DMA区域,操作运算卡硬件,发起运算操作。
(3)运算卡硬件从DMA区域获取原始数据,完成复杂运算。并将运算结果回写到DMA区域。并通过CPU中断通知驱动程序。
(4)驱动程序得到运算完成通知。将对应的DMA区域的数据拷贝到对应的应用程序的空间,并唤醒等待的应用程序。
(5)应用程序被驱动程序唤醒,从中断调用返回。一次复杂运算过程完成。
典型的使用流程中,应用程序在完成一次复杂运算操作时,CPU需要将用户的数据拷贝到DMA区域,并需要在运算完成之后将DMA区域的数据回写到用户空间。并且在多任务处理的时候,应用程序频繁调用系统调用,操作系统需要频繁进行任务切换。这些操作大量地消耗CPU的计算,无法充分利用硬件运算卡的运算能力。
发明内容
为了克服现有技术的上述缺点,本发明提供了一种基于应用层的运算卡驱动实现方法,在应用层实现对DMA内存的管理,运算卡硬件的驱动,能避免应用层与内核驱动的数据拷贝和大量的CPU任务切换,充分利用硬件的特性,提高了复杂运算的整体处理性能。
本发明解决其技术问题所采用的技术方案是:一种基于应用层的运算卡驱动实现方法,包括如下步骤:
步骤一、在内核空间完成初始化操作;
步骤二、在应用层空间完成全部的业务流程。
与现有技术相比,本发明的积极效果是:
本发明将硬件可DMA的内存和运算卡的控制寄存器映射到用户空间,提供接口允许应用程序直接将数据放入DMA区域,并允许控制运算卡硬件。在运算完成之后异步调用应用程序事先提供的完成函数,避免了大量数据的拷贝操作。并使用异步完成的方式,允许在一个线程里面实现多个复杂运算,避免过多的CPU任务切换导致的CPU消耗。本发明方法充分利用了CPU的运算能力,提高了复杂运算的整体性能。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1为典型运算卡使用流程;
图2为本发明的运算卡使用流程。
具体实施方式
本发明采用了在内核空间完成必要的初始化操作。在用户空间完成运算的业务逻辑。如图2所示,其功能流程如下:
(1)申请大块可用于DMA传输的内存区域。并提供应用层接口直接访问。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国电子科技集团公司第三十研究所,未经中国电子科技集团公司第三十研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911100057.8/2.html,转载请声明来源钻瓜专利网。





