本发明专利技术提供了一种DMA调度方法、装置和计算机可读存储介质。其中,该DMA调度方法包括:根据DMA通道的数量初始化DMA调度环境,以分别为各DMA通道创建至少一个任务队列和至少一个工作线程;其中,所述任务队列和工作线程一一对应;响应于用户线程发起的多个DMA调度请求,将所述多个DMA调度请求逐个分配至多个任务队列中,并触发与所述多个任务队列分别对应的工作线程;基于被触发的工作线程调用DMA控制器,以处理所述多个DMA调度请求。本发明专利技术在软件层面对任务请求进行分配,通过将每个请求任务分配到所述全部通用DMA通道中任务数量最少的DMA通道的任务队列中,从而实现平衡DMA通道负载,有效提升了数据处理系统的数据吞吐量。
DMA scheduling method, device and computer readable storage medium
【技术实现步骤摘要】
一种DMA调度方法、装置和计算机可读存储介质
本专利技术属于计算机领域,具体涉及一种DMA调度方法、装置和计算机可读存储介质。
技术介绍
处理器或者数字信号处理器主要用于数据处理。处理器可以包括一个处理器核心,一个存储器,一个DMA(DirectMemoryAccess,直接存储器存取)控制器,一个外部总线接口,以及一个或者多个外部接口用于实现芯片与外部的数据交互。处理器核心用于完成数据的处理操作,而数据的处理必然涉及数据源的读取和数据操作结果的储存操作。在数据的读写中,存在批量数据读写操作,即将大块数据从一个存储区域传输到另一个存储区域。处理器中,DMA控制器实现了上述的大块数据传输操作,从而将处理器核心从繁重的数据传输操作中解放出来,处理器核心可以直接利用DMA传输的数据进行数据处理,也可以将处理完成的数据由DMA控制器传输到指定的地址空间。在现有的DMA控制器实现方法中,当多个外设同时需要利用DMA控制器进行数据传输时,DMA控制器的读写都采用固定的优先级或者优先级轮循的模式进行。上述两种方法导致数据的传输具有很大延时性,降低了系统的数据吞吐量。此外,现有技术中当用户线程发起DMA调度请求时,必须将每个DMA调度请求放入与该请求对应的驱动接口所对应的DMA通道中,没有软件层面对DMA调度请求进行分配的过程。这样通常会导致DMA通道负载不均衡,从而降低了数据处理系统的数据吞吐量。
技术实现思路
针对现有技术中存在的问题,即,当多个外设同时需要利用DMA控制器进行数据传输时,DMA控制器的读写都采用固定的优先级或者优先级轮循的模式进行,从而导致数据的传输具有很大延时性;此外,当用户线程发起任务请求时,必须将每个任务请求放入与该任务请求对应的驱动接口所对应的专用DMA通道中,没有软件层面对任务请求进行分配的过程,导致DMA通道负载不均衡,从而降低了数据处理系统的数据吞吐量,基于此,本专利技术实施例提供了一种DMA调度方法、装置和计算机可读存储介质,进而在软件层面对DMA调度请求进行分配,通过将每个DMA调度任务分配到所述全部DMA通道中任务数量最少的DMA通道的任务队列中,从而实现平衡DMA通道负载,有效提升了数据处理系统的数据吞吐量。依据本专利技术的第一方面,提供了一种DMA调度方法,其包括:根据DMA通道的数量初始化DMA调度环境,以分别为各DMA通道创建至少一个任务队列和至少一个工作线程;其中,所述任务队列和工作线程一一对应;响应于用户线程发起的多个DMA调度请求,将所述多个DMA调度请求逐个分配至多个任务队列中,并触发与所述多个任务队列分别对应的工作线程;基于被触发的工作线程调用DMA控制器,以处理所述多个DMA调度请求。在上述实施例的基础上,所述响应于用户线程发起的多个DMA调度请求,将所述多个DMA调度请求逐个分配至多个任务队列中,并触发与所述多个任务队列分别对应的工作线程;基于被触发的工作线程调用DMA控制器,以处理所述多个DMA调度请求,包括:响应于用户线程发起任意一个DMA调度请求,获取所述DMA调度请求;将所述DMA调度请求放入排队数量最少的任务队列中,并触发与所述排队数量最少的任务队列相对应的工作线程;基于与所述排队数量最少的任务队列相对应的工作线程调用DMA控制器,以处理所述DMA调度请求;返回执行响应于用户线程发起任意一个DMA调度请求,获取所述DMA调度请求的步骤,直至所述多个DMA调度请求被全部处理完毕。在上述实施例的基础上,基于与所述排队数量最少的任务队列相对应的工作线程调用DMA控制器,以处理DMA调度请求之后,包括:通过DMA控制器触发中断服务程序中的任务结束事件,以通知所述RISC-V处理器所述DMA调度请求任务结束。在上述实施例的基础上,在将DMA调度请求放入排队数量最少的任务队列中,并触发与排队数量最少的任务队列相对应的工作线程之前,所述方法还包括:获取各个任务队列中的排队数量;其中,所述排队数量用于表示任务队列中处于等待状态的任务数量;对各个任务队列的排队数量进行排序,得到排序结果;根据排序结果将排队数量最小的任务队列作为用于处理DMA调度请求的任务队列。在上述实施例的基础上,所述被触发的工作线程调用DMA控制器,用于传输数据和内存/外存之间的数据交互。在上述实施例的基础上,所述DMA调度请求以队列的形式排列。依据本专利技术的第二方面,提供了一种DMA调度装置,所述装置包括:环境初始化模块,用于根据DMA通道的数量初始化DMA调度环境,以分别为各DMA通道创建至少一个任务队列和至少一个工作线程;其中,所述任务队列和工作线程一一对应;调度请求处理模块,用于响应于用户线程发起的多个DMA调度请求,将所述多个DMA调度请求逐个分配至多个任务队列中,并触发与所述多个任务队列分别对应的工作线程;基于被触发的工作线程调用DMA控制器,以处理所述多个DMA调度请求。在上述实施例的基础上,所述调度请求处理模块包括:调度请求获取单元,用于响应于用户线程发起任意一个DMA调度请求,获取所述DMA调度请求;线程触发单元,用于将所述DMA调度请求放入排队数量最少的任务队列中,并触发与所述排队数量最少的任务队列相对应的工作线程;调度请求处理单元,用于基于与所述排队数量最少的任务队列相对应的工作线程调用DMA控制器,以处理所述DMA调度请求;循环执行单元,用于返回执行响应于用户线程发起任意一个DMA调度请求,获取所述DMA调度请求的步骤,直至所述多个DMA调度请求被全部处理完毕。在上述实施例的基础上,所述DMA调度装置还包括:中断服务程序触发模块,用于通过DMA控制器触发中断服务程序中的任务结束事件,以通知所述RISC-V处理器所述DMA调度请求任务结束。在上述实施例的基础上,所述调度请求处理模块还包括:数据获取单元,用于获取各个任务队列中的排队数量;其中,所述排队数量用于表示任务队列中处于等待状态的任务数量;排序单元,用于对各个任务队列的排队数量进行排序,得到排序结果;任务队列确定单元,用于根据排序结果将排队数量最小的任务队列作为用于处理DMA调度请求的任务队列。在上述实施例的基础上,所述DMA控制器,用于传输数据和内存/外存之间的数据交互。在上述实施例的基础上,所述DMA调度请求以队列的形式排列。依据本专利技术的第三方面,还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令被处理器执行时实现如上所述的DMA调度方法。本专利技术实施例提供的技术方案具有以下有益效果:本专利技术提供了一种DMA调度方法、装置和计算机可读存储介质,该DMA调度方法根据DMA通道的数量初始化DMA调度环境,以分别为各DMA通道创建至少一个任务队列和至少一个工作线程;其中,所述任务队列和工作线程一一对应;响应于用户线程发起的多个DMA调度请求,将所述多个DMA调度请求逐个分本文档来自技高网...
【技术保护点】
1.一种DMA调度方法,其特征在于,所述方法包括:/n根据DMA通道的数量初始化DMA调度环境,以分别为各DMA通道创建至少一个任务队列和至少一个工作线程;其中,所述任务队列和工作线程一一对应;/n响应于用户线程发起的多个DMA调度请求,将所述多个DMA调度请求逐个分配至多个任务队列中,并触发与所述多个任务队列分别对应的工作线程;基于被触发的工作线程调用DMA控制器,以处理所述多个DMA调度请求。/n
【技术特征摘要】
1.一种DMA调度方法,其特征在于,所述方法包括:
根据DMA通道的数量初始化DMA调度环境,以分别为各DMA通道创建至少一个任务队列和至少一个工作线程;其中,所述任务队列和工作线程一一对应;
响应于用户线程发起的多个DMA调度请求,将所述多个DMA调度请求逐个分配至多个任务队列中,并触发与所述多个任务队列分别对应的工作线程;基于被触发的工作线程调用DMA控制器,以处理所述多个DMA调度请求。
2.如权利要求1所述的方法,其特征在于,所述响应于用户线程发起的多个DMA调度请求,将所述多个DMA调度请求逐个分配至多个任务队列中,并触发与所述多个任务队列分别对应的工作线程;基于被触发的工作线程调用DMA控制器,以处理所述多个DMA调度请求,包括:
响应于用户线程发起任意一个DMA调度请求,获取所述DMA调度请求;
将所述DMA调度请求放入排队数量最少的任务队列中,并触发与所述排队数量最少的任务队列相对应的工作线程;
基于与所述排队数量最少的任务队列相对应的工作线程调用DMA控制器,以处理所述DMA调度请求;
返回执行响应于用户线程发起任意一个DMA调度请求,获取所述DMA调度请求的步骤,直至所述多个DMA调度请求被全部处理完毕。
3.如权利要求2所述的方法,其特征在于,基于与所述排队数量最少的任务队列相对应的工作线程调用DMA控制器,以处理DMA调度请求之后,包括:
通过DMA控制器触发中断服务程序中的任务结束事件,以通知所述RISC-V处理器所述DMA调度请求任务结束。
4.如权利要求2所述的方法,其特征在于,在将DMA调度请求放入排队数量最少的任务队列中,并触发与排队数量最少的任务队列相对应的工作线程之前,所述方法还包括:
获取各个任务队列中的排队数量;其中,所述排队数量用于表示任务队列中处于等待状态的任务数量;
对各个任务队列的排队数量进行排序,得到排序结果;
根据排序结果将排队数量最小的任务队列作为用于处理DMA调度请求的任务队列。
5.如权利要求1所述的方法,其特征在于:
所述DMA控制器,用于传输数据和内存/外存之间的数据交互。
6.如权利要求1-5所述的方法,其特征在于,所述DMA调度请求以队列的形式排列。
<...
【专利技术属性】
技术研发人员:郭晖,张楠赓,
申请(专利权)人:杭州嘉楠耘智信息科技有限公司,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。