DMA控制器及直接内存存取控制方法技术

技术编号:8934474 阅读:270 留言:0更新日期:2013-07-18 03:03
本发明专利技术提供了一种DMA控制器及直接内存存取控制方法,该DMA控制器包括:换行间隔设定模块,确定换行间隔;行内操作单元数量设定模块,确定行内操作单元数量;行内起始位置设定模块,确定行内起始位置;操作单元总数设定模块,确定操作单元总数;操作单元突发长度设定模块,确定操作单元突发长度;操作单元间隔步长设定模块,确定操作单元间隔步长;数据读写模块,以换行间隔、行内操作单元数量、行内起始位置、操作单元总数、操作单元突发长度和操作单元间隔步长为读写参数,读取该源存储器内的数据块包含的多个操作单元并将其写入至DMA写通道。本发明专利技术能够扩展DMA控制器的灵活性和应用范围,降低在搬运负载数据结构时CPU的负担。

【技术实现步骤摘要】

本专利技术涉及DMA技术,尤其涉及一种DMA控制器及直接内存存取控制方法
技术介绍
直接内存存取(Direct Memory Access,DMA)是现代计算机的重要技术特色,其允许不同速度的硬件装置相互通信,而并不会造成CPU的大量负载。DMA操作将数据从一个地址空间复制到另外一个地址空间,当CPU初始化该传输动作后,传输动作本身是由DMA控制器来实行和完成的,典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区。这样的操作并没有让处理器工作拖延,CPU反而可以被重新安排去处理其他的工作。DMA传输对于高效能嵌入式系统、算法和网络系统都是很重要的。现有技术中常规的DMA控制器只是能完成简单的从一个地址到另一个地址指定长度的数据搬运工作。但是,在一些特殊应用场合,常规的DMA控制器很难实现例如数据块拆分、数据块重组、数据结构重排等功能,由CPU来完成这些工作的话会大量浪费CPU资源。
技术实现思路
本专利技术要解决的技术问题是提供一种DMA控制器及直接内存存取控制方法,能够扩展DMA控制器的灵活性和应用范围,降低在搬运负载数据结构时CPU的负担。为解决上述技术问题,本专利技术提供了一种DMA控制器,包括:换行间隔设定模块,用于确定存储在源存储器内的数据块的每一行包含的字节数,作为换行间隔;行内操作单元数量设定模块,用于确定该数据块的每一行包含的操作单元个数,作为行内操作单元数量,所述操作单元包括一个或多个连续的字节;行内起始位置设定模块,用于确定该数据块的每一行中首个操作单元的起始位置,作为行内起始位置;操作单元总数设定模块,用于确定该数据块内包含的操作单元的总数,作为操作单元总数;操作单元突发长度设定模块,用于确定所述操作单元包含的字节数,作为操作单元突发长度;操作单元间隔步长设定模块,用于确定同一行内相邻操作单元的起始位置之间的间隔,作为操作单元间隔步长;数据读写模块,以所述换行间隔、行内操作单元数量、行内起始位置、操作单元总数、操作单元突发长度和操作单元间隔步长为读写参数,读取该源存储器内的数据块包含的多个操作单元并将其写入至DMA写通道。根据本专利技术的一个实施例,该DMA控制器还包括:操作单元重用次数设定模块,用于确定该数据块内每一操作单元在读写时的重用次数,作为操作单元重用次数,所述数据读写模块采用的读写参数包括该操作单元重用次数,所述数据读写模块根据该操作单元重用次数的指示,将读取的每一操作单元重复写入至所述DMA写通道。根据本专利技术的一个实施例,该DMA控制器还包括:操作单元有效性设定模块,用于维持操作单元有效性分布图,该操作单元有效性分布图指示该数据块中每一操作单元是否有效,所述数据读写模块仅对有效的操作单元进行读取和写入。根据本专利技术的一个实施例,该DMA控制器还包括:连续数据抽样模块,控制所述操作单元突发长度设定模块和操作单元间隔步长设定模块将所述操作单元突发长度和操作单元间隔步长设置为相等,以实现连续数据抽样。根据本专利技术的一个实施例,该DMA控制器还包括:不连续数据抽样模块,控制所述操作单元突发长度设定模块和操作单元间隔步长设定模块将所述操作单元间隔步长设置为大于所述操作单元突发长度,以实现不连续数据抽样。根据本专利技术的一个实施例,该DMA控制器还包括:交叠数据抽样模块,控制所述操作单元突发长度设定模块和操作单元间隔步长设定模块将所述操作单元间隔步长设置为小于所述操作单元突发长度,以实现交叠数据抽样。本专利技术还提供了一种直接内存存取控制方法,包括:确定存储在源存储器内的数据块的每一行包含的字节数,作为换行间隔;确定该数据块的每一行包含的操作单元个数,作为行内操作单元数量,所述操作单元包括一个或多个连续的字节;确定该数据块的每一行中首个操作单元的起始位置,作为行内起始位置;确定该数据块内包含的操作单元的总数,作为操作单元总数;确定所述操作单元包含的字节数,作为操作单元突发长度;确定同一行内相邻操作单元的起始位置之间的间隔,作为操作单元间隔步长;以所述换行间隔、行内操作单元数量、行内起始位置、操作单元总数、操作单元突发长度和操作单元间隔步长为读写参数,读取该源存储器内的数据块包含的多个操作单元并将其写入至DMA写通道。根据本专利技术的一个实施例,该控制方法还包括:确定该数据块内每一操作单元在读写时的重用次数,作为操作单元重用次数,所述读写参数还包括该操作单元重用次数,在对所述数据块包括的操作单元进行读写时,根据该操作单元重用次数的指示,将读取的每一操作单元重复写入至所述DMA写通道。根据本专利技术的一个实施例,该控制方法还包括:维持操作单元有效性分布图,该操作单元有效性分布图指示该数据块中每一操作单元是否有效,在对所述数据块包括的操作单元进行读写时,仅对有效的操作单元进行读取和写入。根据本专利技术的一个实施例,该控制方法还包括:将所述操作单元突发长度和操作单元间隔步长设置为相等,以实现连续数据抽样。根据本专利技术的一个实施例,该控制方法还包括:将所述操作单元间隔步长设置为大于所述操作单元突发长度,以实现不连续数据抽样。根据本专利技术的一个实施例,该控制方法还包括:将所述操作单元间隔步长设置为小于所述操作单元突发长度,以实现交叠数据抽样。与现有技术相比,本专利技术具有以下优点:本专利技术实施例的DMA控制器根据换行间隔、行内操作单元数量、行内起始位置、操作单元总数、操作单元突发长度、操作单元间隔步长等多个读写参数进行数据的搬运,大大扩展了 DMA控制器的灵活性和应用范围,能够针对多种复杂数据结构进行传输,可以实现例如数据抽样、数据重用、有效数据搬运等功能,有利于降低CPU在搬运负载数据结构时的负担,从而大幅度提升整体系统的效率。附图说明图1是本专利技术实施例的直接内存存取控制方法的流程示意图;图2是本专利技术第一实施例的数据块及其中的操作单元的结构示意图;图3是本专利技术第二实施例的数据块及其中的操作单元的结构示意图;图4是本专利技术第三实施例的数据块及其中的操作单元的结构示意图;图5是本专利技术第四实施例的数据块及其中的操作单元的结构示意图;图6是本专利技术第五实施例的数据块及其中的操作单元的结构示意图;图7是本专利技术第五实施例的操作单元有效性分布图的结构示意图;图8是本专利技术实施例的DMA控制器的结构示意图。具体实施例方式下面结合具体实施例和附图对本专利技术作进一步说明,但不应以此限制本专利技术的保护范围。参考图1,本实施例的直接内存存取控制方法包括以下步骤:步骤S11,确定存储在源存储器内的数据块的每一行包含的字节数,作为换行间隔;步骤S12,确定该数据块的每一行包含的操作单元个数,作为行内操作单元数量,所述操作单元包括一个或多个连续的字节;步骤S13,确定该数据块的每一行中首个操作单元的起始位置,作为行内起始位置;步骤S14,确定该数据块内包含的操作单元的总数,作为操作单元总数;步骤S15,确定所述操作单元包含的字节数,作为操作单元突发长度;步骤S16,确定同一行内相邻操作单元的起始位置之间的间隔,作为操作单元间隔步长;步骤S17,以所述换行间隔、行内操作单元数量、行内起始位置、操作单元总数、操作单元突发长度和操作单元间隔步长为读写参数,读取该源存储器内的数据块包含的多个操作单元并将其写入至DMA写通道。对于某些应用领域,例如视频应用领域而言本文档来自技高网...

【技术保护点】
一种DMA控制器,其特征在于,包括:换行间隔设定模块,用于确定存储在源存储器内的数据块的每一行包含的字节数,作为换行间隔;行内操作单元数量设定模块,用于确定该数据块的每一行包含的操作单元个数,作为行内操作单元数量,所述操作单元包括一个或多个连续的字节;行内起始位置设定模块,用于确定该数据块的每一行中首个操作单元的起始位置,作为行内起始位置;操作单元总数设定模块,用于确定该数据块内包含的操作单元的总数,作为操作单元总数;操作单元突发长度设定模块,用于确定所述操作单元包含的字节数,作为操作单元突发长度;操作单元间隔步长设定模块,用于确定同一行内相邻操作单元的起始位置之间的间隔,作为操作单元间隔步长;数据读写模块,以所述换行间隔、行内操作单元数量、行内起始位置、操作单元总数、操作单元突发长度和操作单元间隔步长为读写参数,读取该源存储器内的数据块包含的多个操作单元并将其写入至DMA写通道。

【技术特征摘要】

【专利技术属性】
技术研发人员:赵光焕胡红旗刘君敏胡志卷
申请(专利权)人:杭州士兰微电子股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1