一种直接内存访问的传输控制方法及装置与流程

文档序号:12363603阅读:229来源:国知局
一种直接内存访问的传输控制方法及装置与流程

本发明涉及计算机技术领域,尤其涉及一种直接内存访问的传输控制方法及装置。



背景技术:

直接内存访问(Direct Memory Access,DMA)是一种快速数据交换模式,它在不通过中央处理器(CPU,Central Processing Unit)且不需要CPU干预的情况下,即可完成外部设备和存储器之间的直接数据传输。在DMA模式下,CPU只须向DMA传输控制装置下达指令,让DMA传输控制装置处理数据的传输,数据传输完毕再把传输结束信息反馈给CPU,这样就很大程度上减轻了CPU资源占有率,可以大大节省系统资源。其中,DMA传输控制装置是通过DMA通道进行数据传输的,DMA通道中设置有输入队列和输出队列,输入队列和输出队列均是由一系列参数寄存器组成,用于记录目标DMA任务的传输参数(例如,数据传输大小、目的地址、源地址、传输进度等)、传输数据等,例如:若将外部设备的数据块传输至存储器中时,DMA传输控制装置将所需传输的数据块从DMA通道的输入队列输入,再将数据块从DMA通道的输出队列输出至外部设备,已完成数据传输。由于在DMA传输控制装置进行数据传输的过程衡中,CPU可以执行其他任务,因此,也提高了计算机系统处理效率。

但是,现有的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传输请求,所述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任务的优先级,从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通道中选择与所述目标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任务中不存在与所述目标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任务的DMA传输请求时,根 据目标DMA任务对应的优先级为其选择一目标通道,在DMA通道中存在其他DMA任务的情况下,通过查询已占用通道的其他DMA任务的任务类型、优先级以及目标DMA任务的任务类型,并对已占用通道的其他DMA任务的任务类型、优先级以及目标DMA任务的任务类型、优先级进行对比,根据对比结果对DMA通道的传输数据进行控制,可以实现根据DMA任务的优先级、任务类型合理规划数据传输,即使遇到紧急DMA任务也可以优先处理,提高了计算机系统处理效率和服务质量。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种直接内存访问的传输控制装置的结构图;

图2是本发明实施例提供的一种直接内存访问的传输控制方法的流程示意图;

图3是本发明实施例提供的另一种直接内存访问的传输控制方法的流程示意图;

图4是本发明实施例提供的又一种直接内存访问的传输控制方法的流程示意图;

图5是本发明实施例提供的又一种直接内存访问的传输控制方法的流程示意图;

图6是本发明实施例提供的一种直接内存访问的传输控制装置的结构示意图;

图7是本发明实施例提供的另一种直接内存访问的传输控制装置的结构示意图;

图8是本发明实施例提供的又一种直接内存访问的传输控制装置的结构示意图;

图9是本发明实施例提供的又一种直接内存访问的传输控制装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参见图1,为本发明实施例提供了一种直接内存访问的传输控制装置的结构图。如图1所述,本实施例的直接内存访问的传输控制装置1的包括DMA通道11,所述DMA通道11中包括至少一个用于数据传输的DMA通道,每一个DMA通道均包括输入队列111和输出队列112。输入队列111和输出队列112均是由一系列参数寄存器组成,用于记录目标DMA任务的传输参数(例如,数据传输大小、目的地址、源地址、传输进度等)、传输数据等,在可行的方案中,数据传输的具体过程是:直接内存访问的传输控制装置1接收DMA传输请求,所述DMA传输请求携带目标DMA任务,所述直接内存访问的传输控制装置1查询所述目标DMA任务的优先级,并根据所述目标DMA任务的优先级,从DMA通道11中选择与所述目标DMA的优先级相对应的DMA通道作为目标通道,获取所述目标DMA任务的目标数据,将所述目标数据从目标通道的输入队列进行输入,再将所述目标数据从目标通道的输出队列进行输出,即完成了对所述DMA传输请求对应的数据传输。

下面将结合附图2-附图5,对本发明实施例提供的直接内存访问的传输控制方法进行详细介绍。

请参见图1,为本发明实施例提供了一种直接内存访问的传输控制方法的流程示意图。如图1所示,本发明实施例的所述方法可以包括以下步骤S201-步骤S208。

S201,接收DMA传输请求,所述DMA传输请求携带目标DMA任务。

具体的,直接内存访问的传输控制装置接收DMA传输请求,所述DMA传输请求携带目标DMA任务,从所述DMA传输请求中获取目标DMA任务。可以理解的是,外部设备如果想要通过总线直接向存储器传输数据时,外部设备先通过所述直接内存访问的传输控制装置向CPU发送DMA传输请求信号,即所述直接内存访问的传输控制装置向CPU提出接管总线控制权的请求,CPU收 到请求并响应DMA传输请求时,会让出总线控制权,此时,所述直接内存访问的传输控制装置可对DMA传输请求进行处理,获取所述DMA传输请求中携带的目标DMA任务,用以进行数据传输。

S202,查询所述目标DMA任务的优先级,并根据所述目标DMA任务的优先级,从DMA通道中选择与所述目标DMA的优先级相对应的DMA通道作为目标通道。

具体的,所述直接内存访问的传输控制装置查询所述目标DMA任务的优先级,并根据所述目标DMA任务的优先级,从DMA通道中选择与所述目标DMA的优先级相对应的DMA通道作为目标通道。所述直接内存访问的传输控制装置可以预先对不同应用的不同DMA任务设定不同优先级,可选的方案中,传输数据量大的DMA任务设置的优先级较低,传输数据量小的DMA任务设置的优先级较高,这样可以及时完成传输数据量小的DMA任务,提高计算机系统的处理效率。所述直接内存访问的传输控制装置并根据所述目标DMA任务的优先级,从DMA通道中选择与所述目标DMA的优先级相对应的DMA通道作为目标通道,用以通过所述目标通道对所述目标DMA任务进行数据传输。

S203,判断所述DMA通道中是否存在已经被其他DMA任务占用的通道。

具体的,所述直接内存访问的传输控制装置判断所述DMA通道中是否存在已经被其他DMA任务占用的通道。所述DMA通道包括至少一个用于数据传输的DMA通道,所述直接内存访问的传输控制装置判断除了目标通道之外的通道中是否有其他DMA任务占用的通道。

S204,当所述DMA通道中存在已经被其他DMA任务占用的通道时,查询已占用通道的DMA任务的任务类型以及所述目标DMA任务的任务类型。

具体的,当所述DMA通道中存在已经被其他DMA任务占用的通道时,所述直接内存访问的传输控制装置查询已占用通道的DMA任务的任务类型以及所述目标DMA任务的任务类型。其中,所述任务类型可以划分为带宽型任务和延时型任务,带宽型任务注重单位时间处理的数据量,延时型任务注重单位任务的处理时间。可行的方案中,也可以将任务类型划分为联机事务处理(Online Transaction Processing,OLTP)和联机分析处理(Online Analytical Processing,OLAP),其中,OLTP是以小的任务以及小的查询为主,衡量OLTP系统的性能参数是单任务的响应时间,例如在线系统的网上订票等,OLAP是以大任务为主, 主要是对历史数据进行多维度的统计分析,任务的处理时间很长,衡量OLAP系统的性能参数是单位时间处理数据的总量。所述直接内存访问的传输控制装置对不同应用的不同DMA任务的任务类型都已进行了记录,可通过记录查询DMA任务对应的任务类型。

S205,判断在所述已占用通道的DMA任务中是否存在与所述目标DMA任务的任务类型不相同的DMA任务。

具体的,所述直接内存访问的传输控制装置根据所查询到的所述已占用通道的DMA任务的任务类型和目标DMA任务的任务类型,判断在所述已占用通道的DMA任务中是否存在与所述目标DMA任务的任务类型不相同的DMA任务。

S206,当在所述已占用通道的DMA任务中存在与所述目标DMA任务的任务类型不相同的DMA任务时,查询所述与所述目标DMA任务的任务类型不相同的DMA任务的优先级。

具体的,当在所述已占用通道的DMA任务中存在与所述目标DMA任务的任务类型不相同的DMA任务时,所述直接内存访问的传输控制装置查询所述与所述目标DMA任务的任务类型不相同的DMA任务的优先级。所述直接内存访问的传输控制装置根据任务类型和优先级确定DMA任务的优先处理顺序。

S207,判断在所述与所述目标DMA任务的任务类型不相同的DMA任务中是否存在低于所述目标DMA任务的优先级的DMA任务。

具体的,所述直接内存访问的传输控制装置判断在所述与所述目标DMA任务的任务类型不相同的DMA任务中是否存在低于所述目标DMA任务的优先级的DMA任务。

S208,当在所述与所述目标DMA任务的任务类型不相同的DMA任务中,存在低于所述目标DMA任务的优先级的DMA任务时,暂停所述低于所述目标DMA任务的优先级的DMA任务的数据传输,并获取目标DMA任务的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述低于所述目标DMA任务的优先级的DMA任务对应的已占用通道的输出队列进行输出。

具体的,当在所述与所述目标DMA任务的任务类型不相同的DMA任务中,存在低于所述目标DMA任务的优先级的DMA任务时,所述直接内存访问的传 输控制装置暂停所述低于所述目标DMA任务的优先级的DMA任务的数据传输。可行的方案中,当所述低于所述目标DMA任务的优先级的DMA任务被划分为多个小任务时,当前时刻即使所述低于所述目标DMA任务的优先级的DMA任务中有一些小任务已从输出队列输出,但仍有其他小任务仍未被传输时或者已从所述已占用通道的输入队列输入时,暂停所述其他小任务的处理,优先对所述目标DMA任务进行数据传输。所述直接内存访问的传输控制装置获取目标DMA任务的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述低于所述目标DMA任务的优先级的DMA任务对应的已占用通道的输出队列进行输出。可以理解的是,在完成对所述目标DMA任务的输出后,向CPU发送输出目标DMA任务对应的数据传输完毕的信号,以使将总线控制权还给CPU。

需要说明的是,本发明实施例中所介绍的直接内存访问的传输控制方法可以应用于外部设备与所述直接内存访问的传输控制装置的其中的一个DMA通道进行连接的情况,即,若所述外部设备接收数据,只能从该DMA传输通道的输出队列接收数据,若所述外部设备发送数据,只能从该DMA通道的输入队列发送数据。例如:外部设备A连接于DMA通道1以及外部设备B连接于DMA通道1的情况,外部设备A发出DMA任务1的传输请求,DMA任务1是将存储器的数据传输至外部设备,根据DMA任务1的优先级分配目标通道(所述目标通道并不限定于DMA通道1,是因为所述数据是从存储器传输至DMA通道,因此不限定数据输入的通道),而外部设备B对应的DMA任务2正在DMA通道1中正在处理,并且DMA任务1的任务类型和DMA任务2的任务类型不同,DMA任务1的优先级高于DMA任务2的优先级,由于需要优先处理DMA任务1和两个任务的输出队列相同,因此暂停DMA任务2的数据传输,并获取DMA任务1的数据,将DMA任务1的数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过DMA通道1的输出队列进行输出。

在本发明实施例中,当接收到传输目标DMA任务的DMA传输请求时,根据目标DMA任务对应的优先级为其选择一目标通道,在DMA通道中存在其他DMA任务的情况下,通过查询已占用通道的其他DMA任务的任务类型、优先级以及目标DMA任务的任务类型,并对已占用通道的其他DMA任务的任务类型、优先级以及目标DMA任务的任务类型、优先级进行对比,根据对比结果对 DMA通道的传输数据进行控制,可以实现根据DMA任务的优先级、任务类型合理规划数据传输,即使遇到紧急DMA任务也可以优先处理,提高了计算机系统处理效率和服务质量。

请参见图3,为本发明实施例提供了一种直接内存访问的传输控制方法的流程示意图。如图3所示,本发明实施例的所述方法可以包括以下步骤S301-步骤S310。

S301,预先保存DMA任务的优先级列表,以及DMA任务优先级与DMA通道映射关系表。

具体的,直接内存访问的传输控制装置预先保存DMA任务的优先级列表,以及DMA任务优先级与DMA通道映射关系表。所述直接内存访问的传输控制装置对不同DMA任务设定不同优先级,对不同的DMA通道设定不同优先级,并可以接收对DMA任务优先级和DMA通道优先级进行更改。所述DMA通道包括至少一个用于数据传输的通道。可选的方案中,所述直接内存访问的传输控制装置对各个通道设定优先级,DMA任务的优先级可根据传输的数据量大小确定优先级,数据量较小的优先级高,数据量大的优先级高,按照数据量大小分为各个不同的优先级,将数据量对应的优先级与DMA通道设定的优先级进行对应,并将DMA任务的优先级列表、DMA任务优先级与DMA通道映射关系表进行保存。

S302,接收DMA传输请求,所述DMA传输请求携带目标DMA任务。

具体的,所述直接内存访问的传输控制装置接收DMA传输请求,所述DMA传输请求携带目标DMA任务,从所述DMA传输请求中获取目标DMA任务。可以理解的是,外部设备如果想要通过总线直接向存储器传输数据时,外部设备先通过所述直接内存访问的传输控制装置向CPU发送DMA传输请求信号,即所述直接内存访问的传输控制装置向CPU提出接管总线控制权的请求,CPU收到请求并响应DMA传输请求时,会让出总线控制权,此时,所述直接内存访问的传输控制装置可对DMA传输请求进行处理,获取所述DMA传输请求中携带的目标DMA任务,用以进行数据传输。

S303,查询所述目标DMA任务的优先级,并根据所述目标DMA任务的优先级,从DMA通道中选择与所述目标DMA的优先级相对应的DMA通道作为 目标通道。

具体的,所述直接内存访问的传输控制装置在所述DMA任务的优先级列表中查询所述目标DMA任务的优先级,从所述DMA任务优先级与DMA通道映射关系表中查询与所述目标DMA任务的优先级相对应的DMA通道,将与所述目标DMA任务的优先级相对应的DMA通道作为目标通道。

S304,判断所述DMA通道中是否存在已经被其他DMA任务占用的通道。

具体的,所述直接内存访问的传输控制装置判断所述DMA通道中是否存在已经被其他DMA任务占用的通道。所述DMA通道包括至少一个用于数据传输的DMA通道,所述直接内存访问的传输控制装置判断除了目标通道之外的通道中是否有其他DMA任务占用的通道。若所述DMA通道中存在已经被其他DMA任务占用的通道,则执行步骤S305,若所述DMA通道中不存在已经被其他DMA任务占用的通道,则执行步骤S310。

S305,查询已占用通道的DMA任务的任务类型以及所述目标DMA任务的任务类型。

具体的,当所述DMA通道中存在已经被其他DMA任务占用的通道时,所述直接内存访问的传输控制装置查询已占用通道的DMA任务的任务类型以及所述目标DMA任务的任务类型。其中,所述任务类型可以划分为带宽型任务和延时型任务,带宽型任务注重单位时间处理的数据量,延时型任务注重单位任务的处理时间。可行的方案中,也可以将任务类型划分为OLTP和OLAP,其中,OLTP是以小的任务以及小的查询为主,衡量OLTP系统的性能参数是单任务的响应时间,例如在线系统的网上订票等,OLAP是以大任务为主,主要是对历史数据进行多维度的统计分析,任务的处理时间很长,衡量OLAP系统的性能参数是单位时间处理数据的总量。所述直接内存访问的传输控制装置对不同应用的不同DMA任务的任务类型都已进行了记录,可通过记录查询DMA任务对应的任务类型。

S306,判断在所述已占用通道的DMA任务中是否存在与所述目标DMA任务的任务类型不相同的DMA任务。

具体的,所述直接内存访问的传输控制装置根据所查询到的所述已占用通道的DMA任务的任务类型和目标DMA任务的任务类型,判断在所述已占用通道的DMA任务中是否存在与所述目标DMA任务的任务类型不相同的DMA任 务。若在所述已占用通道的DMA任务中存在与所述目标DMA任务的任务类型不相同的DMA任务,则执行步骤S307,若在所述已占用通道的DMA任务中是不存在与所述目标DMA任务的任务类型不相同的DMA任务,则执行步骤S310。

S307,查询所述与所述目标DMA任务的任务类型不相同的DMA任务的优先级。

具体的,当在所述已占用通道的DMA任务中存在与所述目标DMA任务的任务类型不相同的DMA任务时,所述直接内存访问的传输控制装置查询所述与所述目标DMA任务的任务类型不相同的DMA任务的优先级。所述直接内存访问的传输控制装置根据任务类型和优先级确定DMA任务的优先处理顺序。

S308,判断在所述与所述目标DMA任务的任务类型不相同的DMA任务中是否存在低于所述目标DMA任务的优先级的DMA任务。

具体的,所述直接内存访问的传输控制装置判断在所述与所述目标DMA任务的任务类型不相同的DMA任务中是否存在低于所述目标DMA任务的优先级的DMA任务。若在所述与所述目标DMA任务的任务类型不相同的DMA任务中存在低于所述目标DMA任务的优先级的DMA任务,则执行步骤S309,若不存在,则执行步骤S310。

S309,暂停所述低于所述目标DMA任务的优先级的DMA任务的数据传输,并获取目标DMA任务的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述低于所述目标DMA任务的优先级的DMA任务对应的已占用通道的输出队列进行输出。

具体的,当在所述与所述目标DMA任务的任务类型不相同的DMA任务中,存在低于所述目标DMA任务的优先级的DMA任务时,所述直接内存访问的传输控制装置暂停所述低于所述目标DMA任务的优先级的DMA任务的数据传输。可行的方案中,当所述低于所述目标DMA任务的优先级的DMA任务被划分为多个小任务时,当前时刻即使所述低于所述目标DMA任务的优先级的DMA任务中有一些小任务已从输出队列输出,但仍有其他小任务仍未被传输时或者已从所述已占用通道的输入队列输入时,暂停所述其他小任务的处理,优先对所述目标DMA任务进行数据传输。所述直接内存访问的传输控制装置获取目标DMA任务的目标数据,将所述目标数据通过所述目标通道的输入队列进行 输入,以及将所述目标数据通过所述低于所述目标DMA任务的优先级的DMA任务对应的已占用通道的输出队列进行输出。可以理解的是,在完成对所述目标DMA任务的输出后,向CPU发送输出目标DMA任务对应的数据传输完毕的信号,以使将总线控制权还给CPU。

需要说明的是,本发明实施例中所介绍的直接内存访问的传输控制方法可以应用于外部设备与所述直接内存访问的传输控制装置的其中的一个DMA通道进行连接的情况,即,若所述外部设备接收数据,只能从该DMA传输通道的输出队列接收数据,若所述外部设备发送数据,只能从该DMA通道的输入队列发送数据。例如:外部设备A连接于DMA通道1以及外部设备B连接于DMA通道1的情况,外部设备A发出DMA任务1的传输请求,DMA任务1是将存储器的数据传输至外部设备,根据DMA任务1的优先级分配目标通道(所述目标通道并不限定于DMA通道1,是因为所述数据是从存储器传输至DMA通道,因此不限定数据输入的通道),而外部设备B对应的DMA任务2正在DMA通道1中正在处理,并且DMA任务1的任务类型和DMA任务2的任务类型不同,DMA任务1的优先级高于DMA任务2的优先级,由于需要优先处理DMA任务1和两个任务的输出队列相同,因此暂停DMA任务2的数据传输,并获取DMA任务1的数据,将DMA任务1的数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过DMA通道1的输出队列进行输出。

S310,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述目标通道的输出队列进行输出。

具体的,所述直接内存访问的传输控制装置将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述目标通道的输出队列进行输出。一种可行的方案中,当所述DMA通道中不存在已经被其他DMA任务占用的通道时,所述直接内存访问的传输控制装置获取目标DMA任务对应的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述目标通道的输出队列进行输出。另一种可行的方案中,当在所述已占用通道的DMA任务中不存在与所述目标DMA任务的任务类型不相同的DMA任务时,所述直接内存访问的传输控制装置获取目标DMA任务对应的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述目标通道的输出队列进行输出。又一种可行的方案中, 当在所述与所述目标DMA任务的任务类型不相同的DMA任务中不存在低于所述目标DMA任务的优先级的DMA任务时,所述直接内存访问的传输控制装置获取目标DMA任务对应的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述目标通道的输出队列进行输出。

在本发明实施例中,当接收到传输目标DMA任务的DMA传输请求时,根据目标DMA任务对应的优先级为其选择一目标通道,在DMA通道中存在其他DMA任务的情况下,通过查询已占用通道的其他DMA任务的任务类型、优先级以及目标DMA任务的任务类型,并对已占用通道的其他DMA任务的任务类型、优先级以及目标DMA任务的任务类型、优先级进行对比,根据对比结果对DMA通道的传输数据进行控制,可以实现根据DMA任务的优先级、任务类型合理规划数据传输,即使遇到紧急DMA任务也可以优先处理,提高了计算机系统处理效率和服务质量。

请参见图4,为本发明实施例提供了一种直接内存访问的传输控制方法的流程示意图。如图4所示,本发明实施例的所述方法可以包括以下步骤S401-步骤S406。

S401,接收DMA传输请求,所述DMA传输请求携带目标DMA任务。

具体的,直接内存访问的传输控制装置接收DMA传输请求,所述DMA传输请求携带目标DMA任务,从所述DMA传输请求中获取目标DMA任务。可以理解的是,外部设备如果想要通过总线直接向存储器传输数据时,外部设备先通过所述直接内存访问的传输控制装置向CPU发送DMA传输请求信号,即所述直接内存访问的传输控制装置向CPU提出接管总线控制权的请求,CPU收到请求并响应DMA传输请求时,会让出总线控制权,此时,所述直接内存访问的传输控制装置可对DMA传输请求进行处理,获取所述DMA传输请求中携带的目标DMA任务,用以进行数据传输。

S402,查询所述目标DMA任务的优先级,并根据所述目标DMA任务的优先级,从DMA通道中选择与所述目标DMA的优先级相对应的DMA通道作为目标通道。

具体的,所述直接内存访问的传输控制装置查询所述目标DMA任务的优先级,并根据所述目标DMA任务的优先级,从DMA通道中选择与所述目标DMA 的优先级相对应的DMA通道作为目标通道。所述直接内存访问的传输控制装置可以预先对不同应用的不同DMA任务设定不同优先级,可选的方案中,传输数据量大的DMA任务设置的优先级较低,传输数据量小的DMA任务设置的优先级较高,这样可以及时完成传输数据量小的DMA任务,提高计算机系统的处理效率。所述直接内存访问的传输控制装置并根据所述目标DMA任务的优先级,从DMA通道中选择与所述目标DMA的优先级相对应的DMA通道作为目标通道,用以通过所述目标通道对所述目标DMA任务进行数据传输。

S403,判断所述DMA通道中是否存在已经被其他DMA任务占用的通道。

具体的,所述直接内存访问的传输控制装置判断所述DMA通道中是否存在已经被其他DMA任务占用的通道。所述DMA通道包括至少一个用于数据传输的DMA通道,所述直接内存访问的传输控制装置判断除了目标通道之外的通道中是否有其他DMA任务占用的通道。

S404,当DMA通道中存在已经被其他DMA任务占用的通道时,查询已占用通道的DMA任务的优先级。

具体的,当所述DMA通道中存在已经被其他DMA任务占用的通道时,所述直接内存访问的传输控制装置查询已占用通道的DMA任务的优先级。所述直接内存访问的传输控制装置根据优先级确定DMA任务的处理顺序。

S405,判断在所述已占用通道的DMA任务中是否存在低于所述目标DMA任务的优先级的DMA任务。

具体的,所述直接内存访问的传输控制装置判断在所述已占用通道的DMA任务中是否存在低于所述目标DMA任务的优先级的DMA任务。

S406,当在所述已占用通道的DMA任务中存在低于所述目标DMA任务的优先级的DMA任务时,暂停所述低于所述目标DMA任务的优先级的DMA任务的数据传输,并获取目标DMA任务的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述低于所述目标DMA任务的优先级的DMA任务对应的已占用通道的输出队列进行输出。

具体的,当在所述已占用通道的DMA任务中存在低于所述目标DMA任务的优先级的DMA任务时,所述直接内存访问的传输控制装置暂停所述低于所述目标DMA任务的优先级的DMA任务的数据传输。可行的方案中,当所述低于所述目标DMA任务的优先级的DMA任务被划分为多个小任务时,当前时刻即 使所述低于所述目标DMA任务的优先级的DMA任务中有一些小任务已从输出队列输出,但仍有其他小任务仍未被传输时或者已从所述已占用通道的输入队列输入时,暂停所述其他小任务的处理,优先对所述目标DMA任务进行数据传输。所述直接内存访问的传输控制装置获取目标DMA任务的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述低于所述目标DMA任务的优先级的DMA任务对应的已占用通道的输出队列进行输出。可以理解的是,在完成对所述目标DMA任务的输出后,向CPU发送输出目标DMA任务对应的数据传输完毕的信号,以使将总线控制权还给CPU。

需要说明的是,本发明实施例中所介绍的直接内存访问的传输控制方法可以应用于外部设备与所述直接内存访问的传输控制装置的其中的一个DMA通道进行连接的情况,即,若所述外部设备接收数据,只能从该DMA传输通道的输出队列接收数据,若所述外部设备发送数据,只能从该DMA通道的输入队列发送数据。例如:外部设备A连接于DMA通道1以及外部设备B连接于DMA通道1的情况,外部设备A发出DMA任务1的传输请求,DMA任务1是将存储器的数据传输至外部设备,根据DMA任务1的优先级分配目标通道(所述目标通道并不限定于DMA通道1,是因为所述数据是从存储器传输至DMA通道,因此不限定数据输入的通道),而外部设备B对应的DMA任务2正在DMA通道1中正在处理,并且DMA任务1的优先级高于DMA任务2的优先级,由于需要优先处理DMA任务1和两个任务的输出队列相同,因此暂停DMA任务2的数据传输,并获取DMA任务1的数据,将DMA任务1的数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过DMA通道1的输出队列进行输出。

在本发明实施例中,当接收到传输目标DMA任务的DMA传输请求时,根据目标DMA任务对应的优先级为其选择一目标通道,在DMA通道中存在其他DMA任务的情况下,通过查询已占用通道的其他DMA任务的优先级,并对已占用通道的其他DMA任务的优先级以及目标DMA任务的优先级进行对比,根据对比结果对DMA通道的传输数据进行控制,可以实现根据DMA任务的优先级合理规划数据传输,即使遇到紧急DMA任务也可以优先处理,提高了计算机系统处理效率和服务质量。

请参见图5,为本发明实施例提供了一种直接内存访问的传输控制方法的流程示意图。如图5所示,本发明实施例的所述方法可以包括以下步骤S501-步骤S507。

S501,预先保存DMA任务的优先级列表,以及DMA任务优先级与DMA通道映射关系表。

具体的,直接内存访问的传输控制装置预先保存DMA任务的优先级列表,以及DMA任务优先级与DMA通道映射关系表。所述直接内存访问的传输控制装置对不同DMA任务设定不同优先级,对不同的DMA通道设定不同优先级,并可以接收对DMA任务优先级和DMA通道优先级进行更改。所述DMA通道包括至少一个用于数据传输的通道。可选的方案中,所述直接内存访问的传输控制装置对各个通道设定优先级,DMA任务的优先级可根据传输的数据量大小确定优先级,数据量较小的优先级高,数据量大的优先级高,按照数据量大小分为各个不同的优先级,将数据量对应的优先级与DMA通道设定的优先级进行对应,并将DMA任务的优先级列表、DMA任务优先级与DMA通道映射关系表进行保存。

S502,接收DMA传输请求,所述DMA传输请求携带目标DMA任务。

具体的,所述直接内存访问的传输控制装置接收DMA传输请求,所述DMA传输请求携带目标DMA任务,从所述DMA传输请求中获取目标DMA任务。可以理解的是,外部设备如果想要通过总线直接向存储器传输数据时,外部设备先通过所述直接内存访问的传输控制装置向CPU发送DMA传输请求信号,即所述直接内存访问的传输控制装置向CPU提出接管总线控制权的请求,CPU收到请求并响应DMA传输请求时,会让出总线控制权,此时,所述直接内存访问的传输控制装置可对DMA传输请求进行处理,获取所述DMA传输请求中携带的目标DMA任务,用以进行数据传输。

S503,查询所述目标DMA任务的优先级,并根据所述目标DMA任务的优先级,从DMA通道中选择与所述目标DMA的优先级相对应的DMA通道作为目标通道。

具体的,所述直接内存访问的传输控制装置在所述DMA任务的优先级列表中查询所述目标DMA任务的优先级,从所述DMA任务优先级与DMA通道映 射关系表中查询与所述目标DMA任务的优先级相对应的DMA通道,将与所述目标DMA任务的优先级相对应的DMA通道作为目标通道。

S504,判断所述DMA通道中是否存在已经被其他DMA任务占用的通道。

具体的,所述直接内存访问的传输控制装置判断所述DMA通道中是否存在已经被其他DMA任务占用的通道。所述DMA通道包括至少一个用于数据传输的DMA通道,所述直接内存访问的传输控制装置判断除了目标通道之外的通道中是否有其他DMA任务占用的通道。

S505,当DMA通道中存在已经被其他DMA任务占用的通道时,查询已占用通道的DMA任务的优先级。

具体的,当所述DMA通道中存在已经被其他DMA任务占用的通道时,所述直接内存访问的传输控制装置查询已占用通道的DMA任务的优先级。所述直接内存访问的传输控制装置根据优先级确定DMA任务的处理顺序。

S506,判断在所述已占用通道的DMA任务中是否存在低于所述目标DMA任务的优先级的DMA任务。

具体的,所述直接内存访问的传输控制装置判断在所述已占用通道的DMA任务中是否存在低于所述目标DMA任务的优先级的DMA任务。

S507,当在所述已占用通道的DMA任务中存在低于所述目标DMA任务的优先级的DMA任务时,暂停所述低于所述目标DMA任务的优先级的DMA任务的数据传输,并获取目标DMA任务的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述低于所述目标DMA任务的优先级的DMA任务对应的已占用通道的输出队列进行输出。

具体的,当在所述已占用通道的DMA任务中存在低于所述目标DMA任务的优先级的DMA任务时,所述直接内存访问的传输控制装置暂停所述低于所述目标DMA任务的优先级的DMA任务的数据传输。可行的方案中,当所述低于所述目标DMA任务的优先级的DMA任务被划分为多个小任务时,当前时刻即使所述低于所述目标DMA任务的优先级的DMA任务中有一些小任务已从输出队列输出,但仍有其他小任务仍未被传输时或者已从所述已占用通道的输入队列输入时,暂停所述其他小任务的处理,优先对所述目标DMA任务进行数据传输。所述直接内存访问的传输控制装置获取目标DMA任务的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所 述低于所述目标DMA任务的优先级的DMA任务对应的已占用通道的输出队列进行输出。可以理解的是,在完成对所述目标DMA任务的输出后,向CPU发送输出目标DMA任务对应的数据传输完毕的信号,以使将总线控制权还给CPU。

进一步,一种可行的方案中,当DMA通道中不存在已经被其他DMA任务占用的通道时,获取目标DMA任务对应的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述目标通道的输出队列进行输出。另一种可行的方案中,当在所述已占用通道的DMA任务中不存在低于所述目标DMA任务的优先级的DMA任务时,获取目标DMA任务对应的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述目标通道的输出队列进行输出。

需要说明的是,本发明实施例中所介绍的直接内存访问的传输控制方法可以应用于外部设备与所述直接内存访问的传输控制装置的其中的一个DMA通道进行连接的情况,即,若所述外部设备接收数据,只能从该DMA传输通道的输出队列接收数据,若所述外部设备发送数据,只能从该DMA通道的输入队列发送数据。例如:外部设备A连接于DMA通道1以及外部设备B连接于DMA通道1的情况,外部设备A发出DMA任务1的传输请求,DMA任务1是将存储器的数据传输至外部设备,根据DMA任务1的优先级分配目标通道(所述目标通道并不限定于DMA通道1,是因为所述数据是从存储器传输至DMA通道,因此不限定数据输入的通道),而外部设备B对应的DMA任务2正在DMA通道1中正在处理,并且DMA任务1的优先级高于DMA任务2的优先级,由于需要优先处理DMA任务1和两个任务的输出队列相同,因此暂停DMA任务2的数据传输,并获取DMA任务1的数据,将DMA任务1的数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过DMA通道1的输出队列进行输出。

在本发明实施例中,当接收到传输目标DMA任务的DMA传输请求时,根据目标DMA任务对应的优先级为其选择一目标通道,在DMA通道中存在其他DMA任务的情况下,通过查询已占用通道的其他DMA任务的优先级,并对已占用通道的其他DMA任务的优先级以及目标DMA任务的优先级进行对比,根据对比结果对DMA通道的传输数据进行控制,可以实现根据DMA任务的优先 级合理规划数据传输,即使遇到紧急DMA任务也可以优先处理,提高了计算机系统处理效率和服务质量。

下面将结合附图6-附图9,对本发明实施例提供的直接内存访问的传输控制装置进行详细介绍。需要说明的是,附图4-附图5所示的直接内存访问的传输控制装置,用于执行本发明图2-图5所示实施例的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明图2-图5所示的实施例。

请参见图6,为本发明实施例提供了一种直接内存访问的传输控制装置的结构示意图。如图6所示,本发明实施例的所述直接内存访问的传输控制装置6可以包括:接收单元601、第一查询单元602、第一判断单元603、第二查询单元604、第二判断单元605、第三查询单元606、第三判断单元607、暂停单元608和第一传输单元609。

接收单元601,用于接收DMA传输请求,所述DMA传输请求携带目标DMA任务。

具体实现中,所述接收单元601接收DMA传输请求,所述DMA传输请求携带目标DMA任务,从所述DMA传输请求中获取目标DMA任务。可以理解的是,外部设备如果想要通过总线直接向存储器传输数据时,外部设备先通过所述直接内存访问的传输控制装置向CPU发送DMA传输请求信号,即向CPU提出接管总线控制权的请求,CPU收到请求并响应DMA传输请求时,会让出总线控制权,此时,所述直接内存访问的传输控制装置可对DMA传输请求进行处理,获取所述DMA传输请求中携带的目标DMA任务,用以进行数据传输。

第一查询单元602,用于查询所述目标DMA任务的优先级,并根据所述目标DMA任务的优先级,从DMA通道中选择与所述目标DMA的优先级相对应的DMA通道作为目标通道。

具体实现中,所述第一查询单元602查询所述目标DMA任务的优先级,并根据所述目标DMA任务的优先级,从DMA通道中选择与所述目标DMA的优先级相对应的DMA通道作为目标通道。所述第一查询单元602可以预先对不同应用的不同DMA任务设定不同优先级,可选的方案中,传输数据量大的DMA任务设置的优先级较低,传输数据量小的DMA任务设置的优先级较高,这样可 以及时完成传输数据量小的DMA任务,提高计算机系统的处理效率。所述第一查询单元602并根据所述目标DMA任务的优先级,从DMA通道中选择与所述目标DMA的优先级相对应的DMA通道作为目标通道,用以通过所述目标通道对所述目标DMA任务进行数据传输。

第一判断单元603,用于判断所述DMA通道中是否存在已经被其他DMA任务占用的通道。

具体实现中,所述第一判断单元603判断所述DMA通道中是否存在已经被其他DMA任务占用的通道。所述DMA通道包括至少一个用于数据传输的DMA通道,所述直接内存访问的传输控制装置判断除了目标通道之外的通道中是否有其他DMA任务占用的通道。

第二查询单元604,用于当所述DMA通道中存在已经被其他DMA任务占用的通道时,查询已占用通道的DMA任务的任务类型以及所述目标DMA任务的任务类型。

具体实现中,当所述第一判断单元603判断所述DMA通道中存在已经被其他DMA任务占用的通道时,所述第二查询单元604查询已占用通道的DMA任务的任务类型以及所述目标DMA任务的任务类型。其中,所述任务类型可以划分为带宽型任务和延时型任务,带宽型任务注重单位时间处理的数据量,延时型任务注重单位任务的处理时间。可行的方案中,也可以将任务类型划分为OLTP和OLAP,其中,OLTP是以小的任务以及小的查询为主,衡量OLTP系统的性能参数是单任务的响应时间,例如在线系统的网上订票等,OLAP是以大任务为主,主要是对历史数据进行多维度的统计分析,任务的处理时间很长,衡量OLAP系统的性能参数是单位时间处理数据的总量。通过对不同应用的不同DMA任务的任务类型都已进行了记录,所述第二查询单元604可通过记录查询DMA任务对应的任务类型。

第二判断单元605,用于判断在所述已占用通道的DMA任务中是否存在与所述目标DMA任务的任务类型不相同的DMA任务。

具体实现中,根据所查询到的所述已占用通道的DMA任务的任务类型和目标DMA任务的任务类型,所述第二判断单元605判断在所述已占用通道的DMA任务中是否存在与所述目标DMA任务的任务类型不相同的DMA任务。

第三查询单元606,用于当在所述已占用通道的DMA任务中存在与所述目 标DMA任务的任务类型不相同的DMA任务时,查询所述与所述目标DMA任务的任务类型不相同的DMA任务的优先级。

具体实现中,当所述第二判断单元605判断在所述已占用通道的DMA任务中存在与所述目标DMA任务的任务类型不相同的DMA任务时,所述第三查询单元606查询所述与所述目标DMA任务的任务类型不相同的DMA任务的优先级,用以根据任务类型和优先级确定DMA任务的优先处理顺序。

第三判断单元607,用于判断在所述与所述目标DMA任务的任务类型不相同的DMA任务中是否存在低于所述目标DMA任务的优先级的DMA任务。

具体实现中,所述第三判断单元607判断在所述与所述目标DMA任务的任务类型不相同的DMA任务中是否存在低于所述目标DMA任务的优先级的DMA任务。

暂停单元608,用于当在所述与所述目标DMA任务的任务类型不相同的DMA任务中,存在低于所述目标DMA任务的优先级的DMA任务时,暂停所述低于所述目标DMA任务的优先级的DMA任务的数据传输。

具体实现中,当所述第三判断单元607判断在所述与所述目标DMA任务的任务类型不相同的DMA任务中,存在低于所述目标DMA任务的优先级的DMA任务时,所述暂停单元608暂停所述低于所述目标DMA任务的优先级的DMA任务的数据传输。可行的方案中,当所述低于所述目标DMA任务的优先级的DMA任务被划分为多个小任务时,当前时刻即使所述低于所述目标DMA任务的优先级的DMA任务中有一些小任务已从输出队列输出,但仍有其他小任务仍未被传输时或者已从所述已占用通道的输入队列输入时,所述暂停单元608暂停所述其他小任务的处理,优先对所述目标DMA任务进行数据传输。

第一传输单元609,用于获取目标DMA任务的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述低于所述目标DMA任务的优先级的DMA任务对应的已占用通道的输出队列进行输出。

具体实现中,在暂停所述低于所述目标DMA任务的优先级的DMA任务的数据传输之后,所述第一传输单元609获取目标DMA任务的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述低于所述目标DMA任务的优先级的DMA任务对应的已占用通道的输出队列 进行输出。可以理解的是,在完成对所述目标DMA任务的输出后,向CPU发送输出目标DMA任务对应的数据传输完毕的信号,以使将总线控制权还给CPU。

需要说明的是,本发明实施例中所介绍的直接内存访问的传输控制方法可以应用于外部设备与所述直接内存访问的传输控制装置的其中的一个DMA通道进行连接的情况,即,若所述外部设备接收数据,只能从该DMA传输通道的输出队列接收数据,若所述外部设备发送数据,只能从该DMA通道的输入队列发送数据。例如:外部设备A连接于DMA通道1以及外部设备B连接于DMA通道1的情况,外部设备A发出DMA任务1的传输请求,DMA任务1是将存储器的数据传输至外部设备,根据DMA任务1的优先级分配目标通道(所述目标通道并不限定于DMA通道1,是因为所述数据是从存储器传输至DMA通道,因此不限定数据输入的通道),而外部设备B对应的DMA任务2正在DMA通道1中正在处理,并且DMA任务1的任务类型和DMA任务2的任务类型不同,DMA任务1的优先级高于DMA任务2的优先级,由于需要优先处理DMA任务1和两个任务的输出队列相同,因此暂停DMA任务2的数据传输,并获取DMA任务1的数据,将DMA任务1的数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过DMA通道1的输出队列进行输出。

在本发明实施例中,当接收到传输目标DMA任务的DMA传输请求时,根据目标DMA任务对应的优先级为其选择一目标通道,在DMA通道中存在其他DMA任务的情况下,通过查询已占用通道的其他DMA任务的任务类型、优先级以及目标DMA任务的任务类型,并对已占用通道的其他DMA任务的任务类型、优先级以及目标DMA任务的任务类型、优先级进行对比,根据对比结果对DMA通道的传输数据进行控制,可以实现根据DMA任务的优先级、任务类型合理规划数据传输,即使遇到紧急DMA任务也可以优先处理,提高了计算机系统处理效率和服务质量。

请参见图7,为本发明实施例提供了一种直接内存访问的传输控制装置的结构示意图。如图7所示,本发明实施例的所述直接内存访问的传输控制装置7可以包括:预存单元701、接收单元702、第一查询单元703、第一判断单元704、第二传输单元705、第二查询单元706、第二判断单元707、第三传输单元708、 第三查询单元709、第三判断单元710、第四传输单元711、暂停单元712和第一传输单元713。

预存单元701,用于预先保存DMA任务的优先级列表,以及DMA任务优先级与DMA通道映射关系表;

具体实现中,所述预存单元701预先保存DMA任务的优先级列表,以及DMA任务优先级与DMA通道映射关系表。所述直接内存访问的传输控制装置对不同DMA任务设定不同优先级,对不同的DMA通道设定不同优先级,并可以接收对DMA任务优先级和DMA通道优先级进行更改。所述DMA通道包括至少一个用于数据传输的通道。可选的方案中,所述直接内存访问的传输控制装置对各个通道设定优先级,DMA任务的优先级可根据传输的数据量大小确定优先级,数据量较小的优先级高,数据量大的优先级高,按照数据量大小分为各个不同的优先级,将数据量对应的优先级与DMA通道设定的优先级进行对应,并将DMA任务的优先级列表、DMA任务优先级与DMA通道映射关系表进行保存。

接收单元702,用于接收DMA传输请求,所述DMA传输请求携带目标DMA任务;

具体实现中,所述接收单元702接收DMA传输请求,所述DMA传输请求携带目标DMA任务,从所述DMA传输请求中获取目标DMA任务。可以理解的是,外部设备如果想要通过总线直接向存储器传输数据时,外部设备先通过所述直接内存访问的传输控制装置向CPU发送DMA传输请求信号,即所述直接内存访问的传输控制装置向CPU提出接管总线控制权的请求,CPU收到请求并响应DMA传输请求时,会让出总线控制权,此时,所述直接内存访问的传输控制装置可对DMA传输请求进行处理,获取所述DMA传输请求中携带的目标DMA任务,用以进行数据传输。

第一查询单元703,用于查询所述目标DMA任务的优先级,并根据所述目标DMA任务的优先级,从DMA通道中选择与所述目标DMA的优先级相对应的DMA通道作为目标通道;

具体实现中,所述第一查询单元703在所述DMA任务的优先级列表中查询所述目标DMA任务的优先级,从所述DMA任务优先级与DMA通道映射关系表中查询与所述目标DMA任务的优先级相对应的DMA通道,将与所述目标 DMA任务的优先级相对应的DMA通道作为目标通道。

第一判断单元704,用于判断所述DMA通道中是否存在已经被其他DMA任务占用的通道;

具体实现中,所述第一判断单元704判断所述DMA通道中是否存在已经被其他DMA任务占用的通道。所述DMA通道包括至少一个用于数据传输的DMA通道,所述第一判断单元704判断除了目标通道之外的通道中是否有其他DMA任务占用的通道。若所述DMA通道中存在已经被其他DMA任务占用的通道,则执行第二传输单元705,若所述DMA通道中不存在已经被其他DMA任务占用的通道,则执行第二查询单元706。

第二传输单元705,用于当所述DMA通道中不存在已经被其他DMA任务占用的通道时,获取目标DMA任务对应的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述目标通道的输出队列进行输出。

具体实现中,当所述第一判断单元704判断所述DMA通道中不存在已经被其他DMA任务占用的通道时,所述第二传输单元705获取目标DMA任务对应的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述目标通道的输出队列进行输出。

第二查询单元706,用于当所述DMA通道中存在已经被其他DMA任务占用的通道时,查询已占用通道的DMA任务的任务类型以及所述目标DMA任务的任务类型;

具体实现中,当所述第一判断单元704判断所述DMA通道中存在已经被其他DMA任务占用的通道时,所述第二查询单元706查询已占用通道的DMA任务的任务类型以及所述目标DMA任务的任务类型。其中,所述任务类型可以划分为带宽型任务和延时型任务,带宽型任务注重单位时间处理的数据量,延时型任务注重单位任务的处理时间。可行的方案中,也可以将任务类型划分为OLTP和OLAP,其中,OLTP是以小的任务以及小的查询为主,衡量OLTP系统的性能参数是单任务的响应时间,例如在线系统的网上订票等,OLAP是以大任务为主,主要是对历史数据进行多维度的统计分析,任务的处理时间很长,衡量OLAP系统的性能参数是单位时间处理数据的总量。通过对不同应用的不同DMA任务的任务类型都已进行了记录,所述第二查询单元706可通过记录查 询DMA任务对应的任务类型。

第二判断单元707,用于判断在所述已占用通道的DMA任务中是否存在与所述目标DMA任务的任务类型不相同的DMA任务;

具体实现中,所述第二判断单元707根据所查询到的所述已占用通道的DMA任务的任务类型和目标DMA任务的任务类型,判断在所述已占用通道的DMA任务中是否存在与所述目标DMA任务的任务类型不相同的DMA任务。若在所述已占用通道的DMA任务中存在与所述目标DMA任务的任务类型不相同的DMA任务,则执行第三传输单元708,若在所述已占用通道的DMA任务中是不存在与所述目标DMA任务的任务类型不相同的DMA任务,则执行第三查询单元709。

第三传输单元708,用于当在所述已占用通道的DMA任务中不存在与所述目标DMA任务的任务类型不相同的DMA任务时,获取目标DMA任务对应的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述目标通道的输出队列进行输出。

具体实现中,当所述第二判断单元707判断在所述已占用通道的DMA任务中不存在与所述目标DMA任务的任务类型不相同的DMA任务时,第三传输单元708获取目标DMA任务对应的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述目标通道的输出队列进行输出。

第三查询单元709,用于当在所述已占用通道的DMA任务中存在与所述目标DMA任务的任务类型不相同的DMA任务时,查询所述与所述目标DMA任务的任务类型不相同的DMA任务的优先级;

具体实现中,当所述第二判断单元707判断在所述已占用通道的DMA任务中存在与所述目标DMA任务的任务类型不相同的DMA任务时,所述第三查询单元709查询所述与所述目标DMA任务的任务类型不相同的DMA任务的优先级,用以根据任务类型和优先级确定DMA任务的优先处理顺序。

第三判断单元710,用于判断在所述与所述目标DMA任务的任务类型不相同的DMA任务中是否存在低于所述目标DMA任务的优先级的DMA任务;

具体实现中,所述第三判断单元710判断在所述与所述目标DMA任务的任务类型不相同的DMA任务中是否存在低于所述目标DMA任务的优先级的 DMA任务。若在所述与所述目标DMA任务的任务类型不相同的DMA任务中存在低于所述目标DMA任务的优先级的DMA任务,则执行第四传输单元711,若不存在,则执行暂停单元712。

第四传输单元711,用于当在所述与所述目标DMA任务的任务类型不相同的DMA任务中不存在低于所述目标DMA任务的优先级的DMA任务时,获取目标DMA任务对应的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述目标通道的输出队列进行输出。

具体实现中,当所述第三判断单元710判断在所述与所述目标DMA任务的任务类型不相同的DMA任务中不存在低于所述目标DMA任务的优先级的DMA任务时,所述第四传输单元711获取目标DMA任务对应的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述目标通道的输出队列进行输出。

暂停单元712,用于当在所述与所述目标DMA任务的任务类型不相同的DMA任务中,存在低于所述目标DMA任务的优先级的DMA任务时,暂停所述低于所述目标DMA任务的优先级的DMA任务的数据传输;

具体实现中,当在所述与所述目标DMA任务的任务类型不相同的DMA任务中,存在低于所述目标DMA任务的优先级的DMA任务时,所述暂停单元712暂停所述低于所述目标DMA任务的优先级的DMA任务的数据传输。可行的方案中,当所述低于所述目标DMA任务的优先级的DMA任务被划分为多个小任务时,当前时刻即使所述低于所述目标DMA任务的优先级的DMA任务中有一些小任务已从输出队列输出,但仍有其他小任务仍未被传输时或者已从所述已占用通道的输入队列输入时,暂停所述其他小任务的处理,优先对所述目标DMA任务进行数据传输。

第一传输单元713,用于获取目标DMA任务的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述低于所述目标DMA任务的优先级的DMA任务对应的已占用通道的输出队列进行输出。

具体实现中,在暂停所述低于所述目标DMA任务的优先级的DMA任务的数据传输之后,所述第一传输单元713获取目标DMA任务的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所 述低于所述目标DMA任务的优先级的DMA任务对应的已占用通道的输出队列进行输出。可以理解的是,在完成对所述目标DMA任务的输出后,向CPU发送输出目标DMA任务对应的数据传输完毕的信号,以使将总线控制权还给CPU。

需要说明的是,本发明实施例中所介绍的直接内存访问的传输控制方法可以应用于外部设备与所述直接内存访问的传输控制装置的其中的一个DMA通道进行连接的情况,即,若所述外部设备接收数据,只能从该DMA传输通道的输出队列接收数据,若所述外部设备发送数据,只能从该DMA通道的输入队列发送数据。例如:外部设备A连接于DMA通道1以及外部设备B连接于DMA通道1的情况,外部设备A发出DMA任务1的传输请求,DMA任务1是将存储器的数据传输至外部设备,根据DMA任务1的优先级分配目标通道(所述目标通道并不限定于DMA通道1,是因为所述数据是从存储器传输至DMA通道,因此不限定数据输入的通道),而外部设备B对应的DMA任务2正在DMA通道1中正在处理,并且DMA任务1的任务类型和DMA任务2的任务类型不同,DMA任务1的优先级高于DMA任务2的优先级,由于需要优先处理DMA任务1和两个任务的输出队列相同,因此暂停DMA任务2的数据传输,并获取DMA任务1的数据,将DMA任务1的数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过DMA通道1的输出队列进行输出。

在本发明实施例中,当接收到传输目标DMA任务的DMA传输请求时,根据目标DMA任务对应的优先级为其选择一目标通道,在DMA通道中存在其他DMA任务的情况下,通过查询已占用通道的其他DMA任务的任务类型、优先级以及目标DMA任务的任务类型,并对已占用通道的其他DMA任务的任务类型、优先级以及目标DMA任务的任务类型、优先级进行对比,根据对比结果对DMA通道的传输数据进行控制,可以实现根据DMA任务的优先级、任务类型合理规划数据传输,即使遇到紧急DMA任务也可以优先处理,提高了计算机系统处理效率和服务质量。

请参见图8,为本发明实施例提供了一种直接内存访问的传输控制装置的结构示意图。如图8所示,本发明实施例的所述直接内存访问的传输控制装置8可以包括:接收单元801、第一查询单元802、第一判断单元803、第二查询单 元804、第二判断单元805、暂停单元806和传输单元807。

接收单元801,用于接收DMA传输请求,所述DMA传输请求携带目标DMA任务。

具体实现中,所述接收单元801接收DMA传输请求,所述DMA传输请求携带目标DMA任务,从所述DMA传输请求中获取目标DMA任务。可以理解的是,外部设备如果想要通过总线直接向存储器传输数据时,外部设备先通过所述直接内存访问的传输控制装置向CPU发送DMA传输请求信号,即向CPU提出接管总线控制权的请求,CPU收到请求并响应DMA传输请求时,会让出总线控制权,此时,所述直接内存访问的传输控制装置可对DMA传输请求进行处理,获取所述DMA传输请求中携带的目标DMA任务,用以进行数据传输。

第一查询单元802,用于查询所述目标DMA任务的优先级,并根据所述目标DMA任务的优先级,从DMA通道中选择与所述目标DMA的优先级相对应的DMA通道作为目标通道。

具体实现中,所述第一查询单元802查询所述目标DMA任务的优先级,并根据所述目标DMA任务的优先级,从DMA通道中选择与所述目标DMA的优先级相对应的DMA通道作为目标通道。可以预先对不同应用的不同DMA任务设定不同优先级,可选的方案中,传输数据量大的DMA任务设置的优先级较低,传输数据量小的DMA任务设置的优先级较高,这样可以及时完成传输数据量小的DMA任务,提高计算机系统的处理效率。所述直接内存访问的传输控制装置并根据所述目标DMA任务的优先级,从DMA通道中选择与所述目标DMA的优先级相对应的DMA通道作为目标通道,用以通过所述目标通道对所述目标DMA任务进行数据传输。

第一判断单元803,用于判断所述DMA通道中是否存在已经被其他DMA任务占用的通道。

具体实现中,所述第一判断单元803判断所述DMA通道中是否存在已经被其他DMA任务占用的通道。所述DMA通道包括至少一个用于数据传输的DMA通道,所述直接内存访问的传输控制装置判断除了目标通道之外的通道中是否有其他DMA任务占用的通道。

第二查询单元804,用于当DMA通道中存在已经被其他DMA任务占用的通道时,查询已占用通道的DMA任务的优先级。

具体实现中,当所述第一判断单元803判断所述DMA通道中存在已经被其他DMA任务占用的通道时,所述第二查询单元804查询已占用通道的DMA任务的优先级,用以根据优先级确定DMA任务的处理顺序。

第二判断单元805,用于判断在所述已占用通道的DMA任务中是否存在低于所述目标DMA任务的优先级的DMA任务。

具体实现中,所述第二判断单元805判断在所述已占用通道的DMA任务中是否存在低于所述目标DMA任务的优先级的DMA任务。

暂停单元806,用于当在所述已占用通道的DMA任务中存在低于所述目标DMA任务的优先级的DMA任务时,暂停所述低于所述目标DMA任务的优先级的DMA任务的数据传输。

具体实现中,当所述第二判断单元805判断在所述已占用通道的DMA任务中存在低于所述目标DMA任务的优先级的DMA任务时,所述暂停单元806暂停所述低于所述目标DMA任务的优先级的DMA任务的数据传输。可行的方案中,当所述低于所述目标DMA任务的优先级的DMA任务被划分为多个小任务时,当前时刻即使所述低于所述目标DMA任务的优先级的DMA任务中有一些小任务已从输出队列输出,但仍有其他小任务仍未被传输时或者已从所述已占用通道的输入队列输入时,所述暂停单元806暂停所述其他小任务的处理,优先对所述目标DMA任务进行数据传输。

传输单元807,用于获取目标DMA任务的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述低于所述目标DMA任务的优先级的DMA任务对应的已占用通道的输出队列进行输出。

具体实现中,所述传输单元807获取目标DMA任务的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述低于所述目标DMA任务的优先级的DMA任务对应的已占用通道的输出队列进行输出。可以理解的是,在完成对所述目标DMA任务的输出后,向CPU发送输出目标DMA任务对应的数据传输完毕的信号,以使将总线控制权还给CPU。

需要说明的是,本发明实施例中所介绍的直接内存访问的传输控制方法可以应用于外部设备与所述直接内存访问的传输控制装置的其中的一个DMA通道进行连接的情况,即,若所述外部设备接收数据,只能从该DMA传输通道的输出队列接收数据,若所述外部设备发送数据,只能从该DMA通道的输入队列 发送数据。例如:外部设备A连接于DMA通道1以及外部设备B连接于DMA通道1的情况,外部设备A发出DMA任务1的传输请求,DMA任务1是将存储器的数据传输至外部设备,根据DMA任务1的优先级分配目标通道(所述目标通道并不限定于DMA通道1,是因为所述数据是从存储器传输至DMA通道,因此不限定数据输入的通道),而外部设备B对应的DMA任务2正在DMA通道1中正在处理,并且DMA任务1的优先级高于DMA任务2的优先级,由于需要优先处理DMA任务1和两个任务的输出队列相同,因此暂停DMA任务2的数据传输,并获取DMA任务1的数据,将DMA任务1的数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过DMA通道1的输出队列进行输出。

在本发明实施例中,当接收到传输目标DMA任务的DMA传输请求时,根据目标DMA任务对应的优先级为其选择一目标通道,在DMA通道中存在其他DMA任务的情况下,通过查询已占用通道的其他DMA任务的优先级,并对已占用通道的其他DMA任务的优先级以及目标DMA任务的优先级进行对比,根据对比结果对DMA通道的传输数据进行控制,可以实现根据DMA任务的优先级合理规划数据传输,即使遇到紧急DMA任务也可以优先处理,提高了计算机系统处理效率和服务质量。

请参见图9,为本发明实施例提供了一种直接内存访问的传输控制装置的结构示意图。如图9所示,本发明实施例的所述直接内存访问的传输控制装置9可以包括:预存单元901、接收单元902、第一查询单元903、第一判断单元904、第二查询单元905、第二判断单元906、暂停单元907和第一传输单元908。

预存单元901,用于预先保存DMA任务的优先级列表,以及DMA任务优先级与DMA通道映射关系表。

具体实现中,所述预存单元901预先保存DMA任务的优先级列表,以及DMA任务优先级与DMA通道映射关系表。所述直接内存访问的传输控制装置对不同DMA任务设定不同优先级,对不同的DMA通道设定不同优先级,并可以接收对DMA任务优先级和DMA通道优先级进行更改。所述DMA通道包括至少一个用于数据传输的通道。可选的方案中,所述直接内存访问的传输控制装置对各个通道设定优先级,DMA任务的优先级可根据传输的数据量大小确定 优先级,数据量较小的优先级高,数据量大的优先级高,按照数据量大小分为各个不同的优先级,将数据量对应的优先级与DMA通道设定的优先级进行对应,并将DMA任务的优先级列表、DMA任务优先级与DMA通道映射关系表进行保存。

接收单元902,用于接收DMA传输请求,所述DMA传输请求携带目标DMA任务。

具体实现中,所述接收单元902接收DMA传输请求,所述DMA传输请求携带目标DMA任务,从所述DMA传输请求中获取目标DMA任务。可以理解的是,外部设备如果想要通过总线直接向存储器传输数据时,外部设备先通过所述直接内存访问的传输控制装置向CPU发送DMA传输请求信号,即所述直接内存访问的传输控制装置向CPU提出接管总线控制权的请求,CPU收到请求并响应DMA传输请求时,会让出总线控制权,此时,所述直接内存访问的传输控制装置可对DMA传输请求进行处理,获取所述DMA传输请求中携带的目标DMA任务,用以进行数据传输。

第一查询单元903,用于查询所述目标DMA任务的优先级,并根据所述目标DMA任务的优先级,从DMA通道中选择与所述目标DMA的优先级相对应的DMA通道作为目标通道。

具体实现中,所述第一查询单元903在所述DMA任务的优先级列表中查询所述目标DMA任务的优先级,从所述DMA任务优先级与DMA通道映射关系表中查询与所述目标DMA任务的优先级相对应的DMA通道,将与所述目标DMA任务的优先级相对应的DMA通道作为目标通道。

第一判断单元904,用于判断所述DMA通道中是否存在已经被其他DMA任务占用的通道。

具体实现中,所述第一判断单元904判断所述DMA通道中是否存在已经被其他DMA任务占用的通道。所述DMA通道包括至少一个用于数据传输的DMA通道,所述第一判断单元904判断除了目标通道之外的通道中是否有其他DMA任务占用的通道。

第二查询单元905,用于当DMA通道中存在已经被其他DMA任务占用的通道时,查询已占用通道的DMA任务的优先级。

具体实现中,当所述第一判断单元904判断所述DMA通道中存在已经被其 他DMA任务占用的通道时,所述第二查询单元905查询已占用通道的DMA任务的优先级,用以根据优先级确定DMA任务的处理顺序。

第二判断单元906,用于判断在所述已占用通道的DMA任务中是否存在低于所述目标DMA任务的优先级的DMA任务。

具体实现中,所述第二判断单元906判断在所述已占用通道的DMA任务中是否存在低于所述目标DMA任务的优先级的DMA任务。

暂停单元907,用于当在所述已占用通道的DMA任务中存在低于所述目标DMA任务的优先级的DMA任务时,暂停所述低于所述目标DMA任务的优先级的DMA任务的数据传输。

具体实现中,当所述第二判断单元906判断在所述已占用通道的DMA任务中存在低于所述目标DMA任务的优先级的DMA任务时,所述暂停单元907暂停所述低于所述目标DMA任务的优先级的DMA任务的数据传输。可行的方案中,当所述低于所述目标DMA任务的优先级的DMA任务被划分为多个小任务时,当前时刻即使所述低于所述目标DMA任务的优先级的DMA任务中有一些小任务已从输出队列输出,但仍有其他小任务仍未被传输时或者已从所述已占用通道的输入队列输入时,所述暂停单元907暂停所述其他小任务的处理,优先对所述目标DMA任务进行数据传输。

传输单元908,用于获取目标DMA任务的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述低于所述目标DMA任务的优先级的DMA任务对应的已占用通道的输出队列进行输出。

具体实现中,所述传输单元908获取目标DMA任务的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述低于所述目标DMA任务的优先级的DMA任务对应的已占用通道的输出队列进行输出。可以理解的是,在完成对所述目标DMA任务的输出后,向CPU发送输出目标DMA任务对应的数据传输完毕的信号,以使将总线控制权还给CPU。

进一步,一种可行的方案中,当所述第一判断单元904判断DMA通道中不存在已经被其他DMA任务占用的通道时,获取目标DMA任务对应的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述目标通道的输出队列进行输出。另一种可行的方案中,当所述第二判断单元906判断在所述已占用通道的DMA任务中不存在低于所述目标DMA任 务的优先级的DMA任务时,获取目标DMA任务对应的目标数据,将所述目标数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过所述目标通道的输出队列进行输出。

需要说明的是,本发明实施例中所介绍的直接内存访问的传输控制方法可以应用于外部设备与所述直接内存访问的传输控制装置的其中的一个DMA通道进行连接的情况,即,若所述外部设备接收数据,只能从该DMA传输通道的输出队列接收数据,若所述外部设备发送数据,只能从该DMA通道的输入队列发送数据。例如:外部设备A连接于DMA通道1以及外部设备B连接于DMA通道1的情况,外部设备A发出DMA任务1的传输请求,DMA任务1是将存储器的数据传输至外部设备,根据DMA任务1的优先级分配目标通道(所述目标通道并不限定于DMA通道1,是因为所述数据是从存储器传输至DMA通道,因此不限定数据输入的通道),而外部设备B对应的DMA任务2正在DMA通道1中正在处理,并且DMA任务1的优先级高于DMA任务2的优先级,由于需要优先处理DMA任务1和两个任务的输出队列相同,因此暂停DMA任务2的数据传输,并获取DMA任务1的数据,将DMA任务1的数据通过所述目标通道的输入队列进行输入,以及将所述目标数据通过DMA通道1的输出队列进行输出。

在本发明实施例中,当接收到传输目标DMA任务的DMA传输请求时,根据目标DMA任务对应的优先级为其选择一目标通道,在DMA通道中存在其他DMA任务的情况下,通过查询已占用通道的其他DMA任务的优先级,并对已占用通道的其他DMA任务的优先级以及目标DMA任务的优先级进行对比,根据对比结果对DMA通道的传输数据进行控制,可以实现根据DMA任务的优先级合理规划数据传输,即使遇到紧急DMA任务也可以优先处理,提高了计算机系统处理效率和服务质量。

本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的任意一种直接内存访问的传输控制方法的部分或全部步骤。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述 为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可能可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。

上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本发明各个实施例上述方法的全部或部分步骤。其中,而前述的存储介质可包括:U盘、移动硬盘、磁碟、光盘、只读存储器(英文:Read-Only Memory,缩写:ROM)或者随机存取存储器(英文:Random Access Memory,缩写:RAM)等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1