一种多通道直接内存存取dma控制器的制造方法

文档序号:6490646阅读:236来源:国知局
一种多通道直接内存存取dma控制器的制造方法
【专利摘要】本发明提供了一种多通道直接内存存取DMA控制器,包括配置模块、仲裁模块、读指令生成模块、写指令生成模块、总线高速搬运接口模块和外设请求接口模块。本发明提供的多通道DMA控制器,可以搬运复杂格式数据,提高数据传输速率,从而减轻CPU的负担,提高系统性能。
【专利说明】—种多通道直接内存存取DMA控制器
【技术领域】
[0001]本发明涉及直接内存存取(DMA,Direct Memory Access)【技术领域】,具体涉及一种多通道DMA控制器。
【背景技术】
[0002]DMA控制器是当今主流片上系统(SOC,System on Chip)系统以及嵌入式系统中必需的设备,其功能是代替CPU完成大量、复杂的数据搬运过程,而无需CPU的干预,以提高系统工作效率。
[0003]随着SOC系统的发展,现有技术中DMA控制器往往直接挂在系统总线上,其直接访问存储设备以及I/o设备是通过总线完成的,一般具备多通道工作,可以搬运一定格式的数据的功能。随着数据搬运需求的不断增长,现有技术的DMA控制器难以实现大量数据在内存之间的高效搬运,因此亟需一种DMA控制器,提高内存之间大量数据的搬运效率。

【发明内容】

[0004]有鉴于此,本发明的目的是提供一种多通道DMA控制器,提高内存之间大量数据的搬运效率。
[0005]为解决上述技术问题,本发明提供方案如下:
[0006]一种多通道DMA控制器,包括配置模块、仲裁模块、读指令生成模块、写指令生成模块、总线高速搬运接口模块和外设请求接口模块;其中,
[0007]配置模块,用于配置多种数量的逻辑通道以及配置各个逻辑通道的传输参数;
[0008]外设请求接口模块,用于接收来自外设的DMA请求,并作为待仲裁请求发送给仲裁丰吴块;
[0009]仲裁模块,用于根据预先配置的仲裁策略,通过各个待仲裁请求进行仲裁,以确定各个待仲裁请求对应的逻辑通道及其带宽,并根据仲裁结果更新通道参数;
[0010]读指令生成模块,用于从仲裁结果中获得对应逻辑通道的传输参数,产生对应的读指令并发送出去;
[0011]写指令生成模块,用于在需要对待写出数据进行写操作时,接收配置模块发送的对应逻辑通道的传输参数,根据待写出数据确定匹配的传输方式,并生成对应的写指令并发送出去;
[0012]总线高速搬运接口模块,具有相互独立的读写地址控制通道和读写数据通道,用于接收读指令生成模块发出的读指令,向对应的外设发送读指令,接收外设基于所述读指令返回的数据;以及,接收写指令生成模块发出的写指令,执行对应的写操作;其中,所述读写地址控制通道用于传输读/写指令及控制指令,所述读写数据通道用于传输读写数据。
[0013]本发明提供的多通道DMA控制器,具有以下特点:搬运方式由软件通过简单配置可以完成非常复杂的数据搬运;动态仲裁方式实现带宽的动态分配;其具备支持多核系统的,链表功能与硬件请求功能结合,以及三维搬运方式,是其主要功能的三个附加功能,扩展了其应用范围。上述几个最主要的特点,使该DMA控制器的应用场合非常全面,数据搬运高效,最大的传输效率可以达到片上总线带宽的97%以上。具体的,与现有技术相比,本发明的多通道DMA控制器,具有以下有益效果:
[0014]I)具有高效的数据搬运功能,它通过采用总线地址和数据独立传输的方式,可以不间断发出多个源地址读传输指令,每个指令可以代表任何一个通道的某次数据包传输请求,它们可并行工作,允许数据包间不按顺序返回,具备多个缓存存储数据作为数据缓存;数据返回后,按照先读回的数据先写出的方式,对应地写到目的地址;即两片存储之间的数据,分割成多个数据包搬运,每个数据包的源/目的地址都会被缓存下来,在搬运的过程中,根据数据包返回的速度,不一定完全按顺序搬运数据包,根据谁快就写谁的原则,以此达到非常高效的搬运效率;在最大的传输效率可以达到片上总线带宽的97%以上,如400Mhz下可以达到50Gbps的吞吐率。
[0015]2)具有多通道多种仲裁方式切换的功能,可以根据工作状态动态切换成轮循,2优先级,4优先级,8优先级等,优先级内的逻辑通道可以动态分配,可由软件根据实际需求随时动态完成各个通道优先级的分配,从而实现带宽调整。
[0016]3)逻辑通道可配置为2,4,8,16,32个等,每个通道可以复用为软件模式搬运和硬件请求搬运,搬运方式可以为8/16/32/64/128bit多种。
[0017]4)具有中断分发功能,可以将任意通道的中断分发到各个中断线,适合应用在单核或多核系统中,达到多CPU/DSP核共用的目的。
[0018]5)在存储间搬运中,不论用8/16/32/64/128bit何种方式搬运,都支持搬运总数量为任意字节长度,DMA会根据搬运的字节数量自行调整最优搬运方式。
[0019]6)链表功能与硬件请求功能结合,可以支持硬件事件一次触发大量数据流不间歇搬运,以及通过无限循环链表搬运支持数据流搬运。
[0020]7 )每个逻辑通道都可以以三维方式搬运数据,这种功能可以将源端数据从连续或不连续的地址很灵活的抽取出来,然后再组合或分布到需要写进的目的地址中,如图1所示,因此其可以搬运复杂存储方式的数据,而只需要简单的配置,极大的节省了软件编写的复杂性。
[0021]可见,本发明提供的多通道DMA控制器,能够提高内存之间的数据搬运效率,从而减轻CPU的负担,提高系统性能;本发明提供的多通道DMA控制器,可以搬运复杂格式数据,数据传输速率显著提高可达到理论最高速率的97% ;多通道多种仲裁策略可以动态变化;能应用于多核SOC系统中;在内存间可以用任意的搬运方式搬运任意字节长度数据;并且,可以通过链表功能支持硬件事件一次触发大量数据流不间歇搬运,以及通过无限循环链表搬运支持数据流搬运。
【专利附图】

【附图说明】
[0022]图1为本发明实施例提供的多通道DMA控制器的结构示意图;
[0023]图2为本发明实施例实现复杂三维搬运方式的一种示意图。
【具体实施方式】[0024]现有技术中的DMA控制器虽然也可以实现可以搬运一定格式的数据的功能,但是对于复杂格式数据,如三维搬运方式等未见描述;现有DMA控制器的多通道间的带宽分配方式大多为固定优先级,未见有多通道多种仲裁策略的动态变化,并且常见应用于单核系统,未见支持多核SOC系统的DMA控制器;常见用硬件请求触发硬件传输,未见有硬件请求触发软传输功能。
[0025]本发明实施例提供一种支持单核或多核SOC的多通道动态仲裁的高效三维数据搬运DMA控制器装置,尤其适用于大数据业务系统中的大规模数据搬运、复杂数据格式搬运的SOC片上系统中,此类芯片常见于基站单/多模通讯芯片以及多媒体芯片等领域。
[0026]本发明实施例提供的多通道DMA控制器,包括配置模块、仲裁模块、读指令生成模块、写指令生成模块、总线高速搬运接口模块和外设请求接口模块;其中:
[0027]配置模块,用于配置多种数量的逻辑通道以及配置各个逻辑通道的传输参数;
[0028]外设请求接口模块,用于接收来自外设的DMA请求,并作为待仲裁请求发送给仲裁丰吴块;
[0029]仲裁模块,用于根据预先配置的仲裁策略,通过各个待仲裁请求进行仲裁,以确定各个待仲裁请求对应的逻辑通道及其带宽,并根据仲裁结果更新通道参数;
[0030]读指令生成模块,用于从仲裁结果中获得对应逻辑通道的传输参数,产生对应的读指令并发送出去;
[0031]写指令生成模块,用于在需要对待写出数据进行写操作时,接收配置模块发送的对应逻辑通道的传输参数,根据待写出数据确定匹配的传输方式,并生成对应的写指令并发送出去;
[0032]总线高速搬运接口模块,具有相互独立的读写地址控制通道和读写数据通道,用于接收读指令生成模块发出的读指令,向对应的外设发送读指令,接收外设基于所述读指令返回的数据;以及,接收写指令生成模块发出的写指令,执行对应的写操作;其中,所述读写地址控制通道用于传输读/写指令及控制指令,所述读写数据通道用于传输读写数据;
[0033]中断产生模块,用于产生逻辑通道的中断信号并输出至对应的中断线,其中,所述中断信号包括传输完成中断信号和错误中断信号,任一通道的中断可由所述配置模块配置在任一 CPU/DSP核的中断线上,且所述中断线与需要中断信号的CPU/DSP核——对应。
[0034]从以上所述可见,本发明实施例提供的DMA控制器,其内部集成可配置多种数量逻辑通道,每个逻辑通道都可以独立完成各种存储设备之间、存储设备和各种接口设备之间或者存储设备与各种数据流处理设备之间的复杂数据搬运;具有数量可配置的中断线,可以将任意通道的中断配置到任意一根中断线上;具有多种可动态配置的仲裁策略,可以实现对各逻辑通道传输事务的不同带宽分配;具有灵活的数据搬运机制,具有三维方式数据搬运功能,可实现三维图像搬运、数据的交织解交织、图像翻转、大规模数据包搬运等功能;具备链表功能,可以支持硬件事件一次触发大量数据流不间歇搬运,以及通过无限循环链表搬运支持数据流搬运。
[0035]下面将结合附图及对本发明实施例做进一步的详细描述。
[0036]如图1所示,本实施例的多通道DMA控制器,包括软件配置和查询接口模块(configure,又可简称为配置模块)、仲裁模块(arbiter)、读指令生成模块(readcommand)、写指令生成模块(write command)、总线高速搬运接口模块(bus interfaceunit)、中断产生模块(interrupt)、以及外设请求接口模块(peripheral requestinterface)。本实施例中子模块的划分和连接并无特定规范,因此,该划分方式以及连接方式是基于本实施例的特性优化而改进的。
[0037]下面将结合图1,通过具体工作流程来介绍本实施例的多通道DMA控制器的各个模块的具体功能。
[0038]I) DMA控制器复位后,可以由软件从配置和查询接口(configure)配置相应的传输参数,包括每个逻辑通道用于软件搬运模式还是硬件搬运模式,前者可用于发起不间断的传输之至搬运结束;后者则用于与外设请求接口模块配合完成传输,通过与外设请求以及响应接口处理外设的传输请求,这样可以防止数据搬运速度超过外设的处理速度从而达到流控的目的。另外还可以配置数据搬运的数量、源及目的的地址、位宽、搬运效率、中断方式、仲裁方式以及是否使用链表等传输参数。并且,在工作的过程中,仲裁方式可以动态修改,逻辑通道也可以动态强制关闭。
[0039]2)传输参数配置好并使能传输,外设请求接口模块(peripheral requestinterface)就可以开始接受申请,这些申请会根据逻辑通道的配置分类成有效的软/硬件申请,从而最终成为待仲裁的有效请求送至仲裁模块(arbiter)。仲裁模块根据配置好的仲裁策略,例如2/4/8等优先级以及轮询选择仲裁方式进行仲裁,仲裁的结果即为某一个通道获得一次长度不超过总线位宽η倍的传输(长度取决于总线猝发传输的最大长度),之后更新逻辑通道参数,继续仲裁,直至所有逻辑通道的传输都完成。特别的,若逻辑通道使用链表,则传输结束后还会继续参加仲裁,获得仲裁之后会发起获取链表参数的传输。
[0040]3)仲裁模块仲裁后,读指令生成模块(read command)根据仲裁结果取出对应逻辑通道的传输参数,进而产生两种指令,一种是用于搬运的读后写指令,该指令包含了这个不超过总线位宽η倍的传输,从什么地址用什么位宽读,用什么位宽写到什么地址去,以及搬运的数量等信息;另一种是用于更新通道传输参数的只读指令(链表指令),包含从一个事先设置好的地址中读取传输参数,这些参数返回后将会用于更新逻辑通道传输参数。读指令根据配置不间断的发出,总线高速搬运接口模块中设有一个读指令队列(rcmd queue)接收这批指令,指令队列满之后,读指令生成模块才会暂停产生指令。
[0041]4)总线高速搬运接口模块(bus interface unit),为适应该DMA的高效传输性能,需要选择具备独立的读写地址/控制通道,以及独立的读写数据通道的总线协议;该模块具备多个缓冲区(data buffer,例如可配置1-16个),用于接收多个读后写指令发出后返回来的数据;若是只读指令,则直接将返回来的数据发送给配置模块用于更新通道参数。其间,读指令组的发出不受数据返回快慢的限制,可以连续发出,且允许这些数据不按顺序返回,以减少系统等待时间;读后写的数据返回后,在总线高速搬运接口模块中可以反查出对应的通道以及对应的写地址,连同基于读指令返回的数据一并返回至配置模块。
[0042]5)配置模块得到了写出的信息(包括总线高速搬运接口模块返回的数据以及对应的通道以及对应的写地址)后,就会将对应通道的剩余传输参数送至写指令产生模块(write command),写指令产生模块会根据应传输的数据,匹配传输的方式,其中还包括了字节使能控制,以实现任意字节长度数据的传输。写指令的发送方式遵循谁先读回来谁先写出原则,每个指令都在缓冲区准备好的前提下发出并列队(wcmd queue,深度取决于buffer的数量);写数据的时候,按照发送写指令的先后会暂存发出的指令,然后控制顺序发送写数据。按照这个特性,写指令的发送也可以不等待数据接收响应的返回而连续发送多个,达到不同地址数据间无切换开销的高效传输。
[0043]上述为本实施例DMA控制器的整体工作流程,整个数据传输过程中,可以通过查询软件配置和查询接口模块的若干状态寄存器,包括中断状态、传输参数、仲裁方式、中断方式和工作忙/闲状态等;在需要调整仲裁策略的时候,可以通过软件配置和查询接口模块的配置来实现动态调整,可以切换成轮循、2/4/8等优先级任意一种,任意一个逻辑通道都可以调至最高或最低优先级。
[0044]图2所示为本实施例的DMA控制器所实现的三维数据搬运附加功能,即通过配置每个逻辑通道三个维度的参数,包括每个维度的搬运数量,以及维度间的地址偏移,可以实现数据交织及解交织处理。图2中,X表示一维搬运的数量;Y表示二维搬运的数量,表示有η个X的搬运;Ζ表示三维搬运的数量,表示有η个Y的搬运;Ymodify表示在Y维度中X之间的地址的偏移;Zmodify表示在Z维度中Y之间的地址的偏移。如图2所示,将源端一维X个数据,二维3个X数据,以及三维4个Y数据,搬运到目的端一维X个数据,二维2个X数据,三维6个Y数据。由于存在两个维度的地址偏移,源/目的端帧长为X的数据间的偏移可以灵活定义,以次类推,可以高效实现数据的存储格式转换,缩短操作的开销。
[0045]另外,本实施例的链表功能的附加功能,除了能够常规的通过加载链表更新通道参数达到一次编程连续搬运以外,还具备与硬件请求功能结合的两个扩展应用:
[0046]1、支持硬件事件一次触发大量数据流不间歇搬运,即当前逻辑通道配置为硬件通道,但数据传输数量为0,属于伪传输,以用于等待外部硬件请求,真正的传输位于链表地址指向的内存区域。当外设发起请求后,就会跳转至链表区域,加载真正的传输,进而完成搬运。
[0047]2、无限循环链表搬运支持数据流搬运。具体可以利用循环链表的方式,处理高速I/o的数据流接收,若需要停止,可以通过强制关闭逻辑通道的操作,或者修改链表的编程值,关闭逻辑通道使能;由于每一级链表的中断都能单独使能或者屏蔽,因此上述操作可以基于中断处理。
[0048]需要说明的是,本实施例支持多核系统的附加功能,是由整个传输过程中所产生的各种中断是通过中断产生模块(interrupt)产生的;中断线的数量可根据系统中的集成需要自定义,用于单核与多核系统。每个通道的传输完成中断和错误中断都可以映射到已配置的任意一根中断线上,可使核使用不同通道,实现事务的良好分配。
[0049]综上,本发明实施例提供的多通道DMA控制器,其内部集成可配置数量为2/4/8/16/32等的逻辑通道(channel),每个逻辑通道都可以独立完成各种存储设备之间、存储设备和各种外部接口设备(外设I/O)之间、或者存储设备与各种数据流处理设备之间的复杂数据的高效搬运;每个逻辑通道搬运数据的方式可以由软件自行定义,可以用8/16/32/64/128bit等多种位长方式搬运任意长度的数据;有数量可配置的中断线,可以将任意通道的中断配置到任意一根中断线上,以达到多CPU/DSP核共用的目的;具有多种可动态配置的仲裁策略,可以实现对各逻辑通道传输事务的不同带宽分配;具有三维数据搬运功能,可实现三维图像搬运、数据的交织解交织、图像翻转、大规模数据包搬运等功能;具备链表功能,可以支持硬件事件一次触发大量数据流不间歇搬运,以及通过无限循环链表搬运支持数据流搬运。
[0050]此说明书中所描述的许多功能部件都被称为模块,以便更加特别地强调其实现方式的独立性。
[0051]本发明实施例中,模块可以用软件实现,以便由各种类型的处理器执行。举例来说,一个标识的可执行代码模块可以包括计算机指令的一个或多个物理或者逻辑块,举例来说,其可以被构建为对象、过程或函数。尽管如此,所标识模块的可执行代码无需物理地位于一起,而是可以包括存储在不同物理上的不同的指令,当这些指令逻辑上结合在一起时,其构成模块并且实现该模块的规定目的。
[0052]实际上,可执行代码模块可以是单条指令或者是许多条指令,并且甚至可以分布在多个不同的代码段上,分布在不同程序当中,以及跨越多个存储器设备分布。同样地,操作数据可以在模块内被识别,并且可以依照任何适当的形式实现并且被组织在任何适当类型的数据结构内。所述操作数据可以作为单个数据集被收集,或者可以分布在不同位置上(包括在不同存储设备上),并且至少部分地可以仅作为电子信号存在于系统或网络上。
[0053]在模块可以利用软件实现时,考虑到现有硬件工艺的水平,所以可以以软件实现的模块,在不考虑成本的情况下,本领域技术人员都可以搭建对应的硬件电路来实现对应的功能,所述硬件电路包括常规的超大规模集成(VLSI)电路或者门阵列以及诸如逻辑芯片、晶体管之类的现有半导体或者是其它分立的元件。模块还可以用可编程硬件设备,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等实现。
[0054]以上所述仅是本发明的实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【权利要求】
1.一种多通道直接内存存取DMA控制器,其特征在于,包括配置模块、仲裁模块、读指令生成模块、写指令生成模块、总线高速搬运接口模块和外设请求接口模块;其中, 配置模块,用于配置多种数量的逻辑通道以及配置各个逻辑通道的传输参数; 外设请求接口模块,用于接收来自外设的DMA请求,并作为待仲裁请求发送给仲裁模块; 仲裁模块,用于根据预先配置的仲裁策略,通过各个待仲裁请求进行仲裁,以确定各个待仲裁请求对应的逻辑通道及其带宽,并根据仲裁结果更新通道参数; 读指令生成模块,用于从仲裁结果中获得对应逻辑通道的传输参数,产生对应的读指令并发送出去; 写指令生成模块,用于在需要对待写出数据进行写操作时,接收配置模块发送的对应逻辑通道的传输参数,根据待写出数据确定匹配的传输方式,并生成对应的写指令并发送出去; 总线高速搬运接口模块,具有相互独立的读写地址控制通道和读写数据通道,用于接收读指令生成模块发出的读指令,向对应的外设发送读指令,接收外设基于所述读指令返回的数据;以及,接收写指令生成模块发出的写指令,执行对应的写操作;其中,所述读写地址控制通道用于传输读/写指令及控制指令,所述读写数据通道用于传输读写数据。
2.如权利要求1所述的DMA控制器,其特征在于,还包括: 中断产生模块,用于产生逻辑通道的中断信号并输出至对应的中断线,其中,所述中断信号包括传输完成中断信号和错误中断信号,任一通道的中断可由所述配置模块配置在任一 CPU/DSP核的中断线上,且所述中断线与需要中断信号的CPU/DSP核——对应。
3.如权利要求1所述的DMA控制器,其特征在于, 所述总线高速搬运接口模块,还用于缓存外设基于读指令所返回的待写出数据,确定待写出数据对应的逻辑通道及对应的写地址的信息并发送给所述配置模块; 所述配置模块,还用于接收总线高速搬运接口模块发送的待写出数据及其对应的逻辑通道及写地址的信息,得到待写出数据对应的逻辑通道的传输参数并发送给所述写指令生成模块。
4.如权利要求1所述的DMA控制器,其特征在于, 所述总线高速搬运接口模块,还用于暂存写指令生成模块连续发出的多个写指令,并按照写指令的接收顺序发送待写出数据执行写操作。
5.如权利要求1所述的DMA控制器,其特征在于, 所述读指令生成模块,进一步用于基于仲裁结果产生两种读指令,其中一种是用于搬运数据的读后写指令,另一种是用于更新逻辑通道参数的只读指令,并将产生的读指令连续发送出去,其中读指令的发送不受读数据返回快慢的限制。 所述总线高速搬运接口模块,还用于暂存读指令生成模块连续发出的多个读指令:若读指令为读后写指令,则缓存外设基于该读后写指令返回的待写出数据,并反查该待写出数据对应的逻辑通道及写地址并与待写出数据一同返回给配置模块;若读指令为只读指令,则直接将外设基于 该读后写指令返回的数据发送给配置模块以更新对应逻辑通道的传输参数。
6.如权利要求1所述的DMA控制器,其特征在于,所述配置模块,还用于为逻辑通道配置地址的三个维度的参数,该参数包括每个维度的数据搬运数量以及维度间的地址偏移信息; 所述读指令生成模块,还用于根据对应逻辑通道的三个维度的参数,产生对应地址的读指令以读取源端数据; 所述写指令生成模块,还用于根据对应逻辑通道的三个维度的参数,产生对应地址的写指令以将数据按照该三个维度写入。
7.如权利要求1所述的DMA控制器,其特征在于, 所述配置模块,还用于配置逻辑通道使用链表、同时配置该逻辑通道的数据传输数量为O且为硬件通道,以支持通过硬件事件一次触发数据流搬运;或者配置逻辑通道使用无限循环链表以支持数据流搬运。
8.如权利要求1所述的DMA控制器,其特征在于, 所述仲裁策略包括 轮循选择策略和优先级策略,其中优先级内的逻辑通道可动态分配。
【文档编号】G06F13/28GK103793342SQ201210433375
【公开日】2014年5月14日 申请日期:2012年11月2日 优先权日:2012年11月2日
【发明者】林晓牧, 朱志刚, 廖洲 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1