一种DMA控制器的控制装置及控制方法转让专利

申请号 : CN200910238032.4

文献号 : CN101702144A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 钱诚陈云霁王玲

申请人 : 北京天童芯源科技有限公司

摘要 :

本发明公开了一种DMA控制器的控制装置及控制方法,所述控制装置包括配置寄存器、状态寄存器、以及流控制寄存器,其中,所述配置寄存器用于接收外部实时输入的配置信息,所述DMA控制器根据该外部实时输入的配置信息产生对应的操作序列;所述状态寄存器用于指示当前DMA控制器的工作状态,并可依据外部实时输入的配置信息改变其指示;所述流控制寄存器用于根据外部实时输入的配置信息设置DMA控制器的各存取操作序列的时钟周期及其占用的带宽比例。本发明用极小的开销来改变DMA的执行状态而不需要重新启动一次DMA,并且对于DMA操作的产生时间和执行次序都是完全可控,可以灵活而全面的支持软件的各种优化。

权利要求 :

1.一种DMA控制器的控制装置,其特征在于,包括配置寄存器、状态寄存器、以及流控制寄存器,其中,所述配置寄存器用于接收外部实时输入的配置信息,所述DMA控制器根据该外部实时输入的配置信息产生对应的操作序列;

所述状态寄存器用于指示当前DMA控制器的工作状态,并可依据外部实时输入的配置信息改变其指示;

所述流控制寄存器用于根据外部实时输入的配置信息设置DMA控制器的各存取操作序列的时钟周期及其占用的带宽比例。

2.如权利要求1所述的DMA控制器的控制装置,其特征在于,所述配置信息包括源数据起始地址、源数据格式、源数据大小、源数据在中间介质中的存储类型、源数据经过中间介质的方式,源数据被存放到新存储区域的目的地址、源数据在目的存储介质中的存储类型、目的数据大小、目的存放地址是否为循环地址以及循环地址信息,状态寄存器的触发条件。

3.如权利要求2所述的DMA控制器的控制装置,其特征在于,所述目的地址为连续的地址,或者不连续的地址,或者循环重复的地址。

4.如权利要求1所述的DMA控制器的控制装置,其特征在于,所述状态寄存器根据DMA控制器产生的操作序列确定当前DMA控制器的工作状态。

5.如权利要求1所述的DMA控制器的控制装置,其特征在于,当DMA控制器的各通道同时接收到请求时,根据DMA控制器内的计数器统计各通道使用总线情况,并依据设置的各存取操作序列专用的带宽比例选择具有优先权限的对应通道。

6.一种DMA控制器的控制方法,其特征在于,设置有配置寄存器、状态寄存器、流控制寄存器,其中,所述配置寄存器用于接收外部实时输入的配置信息,所述DMA控制器根据该外部实时输入的配置信息产生对应的操作序列;

所述状态寄存器用于指示当前DMA控制器的工作状态,并可依据外部实时输入的配置信息改变其指示;

所述流控制寄存器用于根据外部实时输入的配置信息设置DMA控制器的各存取操作序列的时钟周期及其占用的带宽比例;

并执行如下步骤:

步骤一,配置寄存器接收到外部实时输入的配置信息,所述DMA控制器根据该配置信息产生对应的操作序列,所述流控制寄存器根据该配置信息设置DMA控制器的各对应操作序列的时钟周期及其占用的带宽比例;

步骤二,所述DMA控制器依上述产生的操作序列搬运数据,并由状态寄存器指示其当前的工作状态。

7.如权利要求6所述的DMA控制器的控制方法,其特征在于,所述配置信息包括源数据起始地址、源数据格式、源数据大小、源数据在中间介质中的存储类型、源数据经过中间介质的方式,源数据被存放到新存储区域的目的地址、源数据在目的存储介质中的存储类型、目的数据大小、目的存放地址是否为循环地址以及循环地址信息,状态寄存器的触发条件。

8.如权利要求7所述的DMA控制器的控制装置,其特征在于,所述目的地址为连续的地址,或者不连续的地址,或者循环重复的地址。

9.如权利要求6所述的DMA控制器的控制装置,其特征在于,所述状态寄存器根据DMA控制器产生的操作序列确定当前DMA控制器的工作状态。

10.如权利要求6所述的DMA控制器的控制装置,其特征在于,当DMA控制器的各通道同时接收到请求时,根据DMA控制器内的计数器统计各通道使用总线情况,并依据设置的各存取操作序列专用的带宽比例选择具有优先权限的对应通道。

说明书 :

一种DMA控制器的控制装置及控制方法

技术领域

[0001] 本发明涉及一种控制装置及控制方法,尤其涉及一种DMA(DirectMemory Access,存储器直接访问)控制器的控制装置及控制方法。

背景技术

[0002] 计算机中的软件在执行过程中不可避免要产生访存操作。软件的执行其实是由指令在处理器内的流水作业完成的,当处理器接受到访存操作指令后需要去位于处理器外部的存储设备中读写数据,其数据流的速度大大慢于指令在处理器中的流动速度,这就造成了流水级中的后续相关指令需要等待访存操作完成才能继续执行。
[0003] DMA访存方式不依靠处理器流水级中的访存指令来读取数据,它使用专门的DMA控制器,独立的收发访存请求,从而使得处理器可以仅仅配置一次DMA控制器就可以执行其他程序,等DMA控制器将访存请求都执行完毕,再通知处理器继续进行处理。这样可以大大提高处理器的工作效率。
[0004] 然而当处理器配置完DMA控制器后,如果后续的程序依赖于DMA控制器的执行结果,就不可避免的需要等待DMA控制器执行完毕。最理想的情况是将所有的这种依赖关系都消除,使得DMA控制器和处理器可以并行执行。但是做到这一点很难,很多情况下即使可以做到这一点,又会造成新的问题,即DMA控制器的每次配置和启动需要一定的开销。如果频繁的启动DMA控制器往往会由于大量的启动开销造成程序执行性能提升的困难。因此,实时的掌握DMA控制器的运行状态,实时的改变DMA控制器的运行状态对于避免大量的启动开销,灵活的优化软件程序是十分重要的一项工作。
[0005] 对于软件的优化来说,对访存请求的类型控制也是非常重要的。将各种类型的数据通过各种不同的方式,搬运(即根据读取到的源地址信息,将源地址对应的数据写到目的地址中去)到各种不同的地址中对于DMA控制器的设计是一种挑战,对访存请求支持得越全面越灵活,就越能对软件的优化设计提供强力的支持。

发明内容

[0006] 本发明针对现有技术的缺陷,提供一种对访存请求支持更灵活的DMA控制器的控制装置及控制方法。
[0007] 本发明所述的DMA控制器的控制装置,包括配置寄存器、状态寄存器、以及流控制寄存器,其中,
[0008] 所述配置寄存器用于接收外部实时输入的配置信息,所述DMA控制器根据该外部实时输入的配置信息产生对应的操作序列;
[0009] 所述状态寄存器用于指示当前DMA控制器的工作状态,并可依据外部实时输入的配置信息改变其指示;
[0010] 所述流控制寄存器用于根据外部实时输入的配置信息设置DMA控制器的各存取操作序列的时钟周期及其占用的带宽比例。
[0011] 本发明所述的DMA控制器的控制装置中,所述配置信息包括源数据起始地址、源数据格式、源数据大小、源数据在中间介质中的存储类型、源数据经过中间介质的方式,源数据被存放到新存储区域的目的地址、源数据在目的存储介质中的存储类型、目的数据大小、目的存放地址是否为循环地址以及循环地址信息,状态寄存器的触发条件。其中,所述目的地址为连续的地址,或者不连续的地址,或者循环重复的地址。
[0012] 本发明所述的DMA控制器的控制装置中,所述状态寄存器根据DMA控制器产生的操作序列确定当前DMA控制器的工作状态。
[0013] 本发明所述的DMA控制器的控制装置中,当DMA控制器的各通道同时接收到请求时,根据DMA控制器内的计数器统计各通道使用总线情况,并依据设置的各存取操作序列专用的带宽比例选择具有优先权限的对应通道。
[0014] 本发明还提供一种DMA控制器的控制方法,设置有配置寄存器、状态寄存器、流控制寄存器,其中,
[0015] 所述配置寄存器用于接收外部实时输入的配置信息,所述DMA控制器根据该外部实时输入的配置信息产生对应的操作序列;
[0016] 所述状态寄存器用于指示当前DMA控制器的工作状态,并可依据外部实时输入的配置信息改变其指示;
[0017] 所述流控制寄存器用于根据外部实时输入的配置信息设置DMA控制器的各存取操作序列的时钟周期及其占用的带宽比例;
[0018] 并执行如下步骤:
[0019] 步骤一,配置寄存器接收到外部实时输入的配置信息,所述DMA控制器根据该配置信息产生对应的操作序列,所述流控制寄存器根据该配置信息设置DMA控制器的各对应操作序列的时钟周期及其占用的带宽比例;
[0020] 步骤二,所述DMA控制器依上述产生的操作序列搬运数据,并由状态寄存器指示其当前的工作状态。
[0021] 本发明所述的DMA控制器的控制方法中,所述配置信息包括源数据起始地址、源数据格式、源数据大小、源数据在中间介质中的存储类型、源数据经过中间介质的方式,源数据被存放到新存储区域的目的地址、源数据在目的存储介质中的存储类型、目的数据大小、目的存放地址是否为循环地址以及循环地址信息,状态寄存器的触发条件。其中,所述目的地址为连续的地址,或者不连续的地址,或者循环重复的地址。
[0022] 本发明所述的DMA控制器的控制方法中,所述状态寄存器根据DMA控制器产生的操作序列确定当前DMA控制器的工作状态。
[0023] 本发明所述的DMA控制器的控制方法中,当DMA控制器的各通道同时接收到请求时,根据DMA控制器内的计数器统计各通道使用总线情况,并依据设置的各存取操作序列专用的带宽比例选择具有优先权限的对应通道。
[0024] 本发明中,DMA控制器可以根据配置寄存器的值产生特定的DMA操作序列,可以根据流控制寄存器的值来控制DMA操作的产生时间和相对次序,可以根据状态寄存器的值来触发DMA操作的状态改变,可以根据DMA操作当前的执行状态改变状态寄存器的值,也可以根据DMA操作当前的执行状态改变自身的状态。本发明使得DMA控制硬件的状态对于软件是完全实时可见的,并可以用极小的开销来改变DMA的执行状态而不需要重新启动一次DMA,并且对于DMA操作的产生时间和执行次序都是完全可控。这就使得DMA控制硬件可以灵活而全面的支持软件的各种优化,却不需要额外的开销。

附图说明

[0025] 图1为本发明所述DMA控制器的控制装置的结构示意图;
[0026] 图2为本发明所述控制装置中配置寄存器与DMA控制器之间的结构关系示意图;
[0027] 图3为本发明所述控制装置中状态寄存器与DMA控制器之间的结构关系示意图;
[0028] 图4为本发明所述控制装置中流控制寄存器与DMA控制器之间的结构关系示意图;
[0029] 图5为本发明所述控制装置中流控制寄存器的配置信息的示意图;
[0030] 图6为DMA控制器的结构示意图;
[0031] 图7为本发明所述DMA控制器的控制方法的流程示意图。

具体实施方式

[0032] 下面结合附图对本发明做进一步说明,以使本领域普通技术人员参照本说明书后能够据以实施。
[0033] 如图1所示,本发明所述DMA控制器的控制装置,包括了配置寄存器、状态寄存器、以及流控制寄存器。
[0034] 其中,所述配置寄存器用于接收外部实时输入的配置信息,所述DMA控制器根据该外部实时输入的配置信息产生对应的操作序列;
[0035] 所述状态寄存器用于指示当前DMA控制器的工作状态,并可依据外部实时输入的配置信息改变其指示;
[0036] 所述流控制寄存器用于根据外部实时输入的配置信息设置DMA控制器的各存取操作序列的时钟周期及其占用的带宽比例。
[0037] 图1中,所述配置总线用于向DMA控制器的控制装置内的配置寄存器、流控制寄存器、和状态寄存器输入配置信息,所述DMA输入总线用于将源数据输入到DMA控制器中,所述DMA输出总线用于将DMA控制器产生的输出数据流送到指定的存储介质中。
[0038] 如图2所示,所述配置寄存器与配置总线及其他模块连接,配置总线传送的配置信息及其他模块的配置信息经过配置地址译码后写入配置寄存器,或者,可由配置寄存器中读出当前的配置信息并经由配置总线传送至上一级装置。同时,所述配置寄存器还接收DMA控制器发送的操作执行结束的信息,并将该信息通过配置总线传送至外部系统。所述的配置信息可以包括源数据起始地址、源数据格式、源数据大小、源数据在中间介质中的存储类型、源数据经过中间介质的方式,源数据被存放到新存储区域的目的地址、源数据在目的存储介质中的存储类型、目的数据大小、目的存放地址是否为循环地址以及循环地址信息,状态寄存器的触发条件。其中,所述目的地址可为连续的地址,或者不连续的地址,或者循环重复的地址。
[0039] 如图3所示,为DMA控制器与状态寄存器、配置寄存器之间的控制关系示意图。所述配置寄存器接收到外部的配置信息后,将该配置信息发送至DMA控制器,所述DMA控制器的根据配置信息的不同而触发出不同的状态,即产生不同的操作序列,并将当前状态信息由其状态机输出至状态寄存器,由此,状态寄存器得以确定当前DMA控制器的工作状态,并可将当前的工作状态指示出来。所述状态寄存器的对应当前DMA控制器的工作状态的指示可被外部相应软件检测到,根据该指示对应的含义,软件即可得知当前DMA控制器处于何种状态。另外,本发明中,所述状态寄存器还可接收外部输入的要求状态改变的配置信息以改变当前状态寄存器的指示,并进而触发DMA控制器改变当前的状态。例如,配置寄存器中设置了一个DMA控制器状态改变的触发条件,那么,在需要DMA控制器改变状态时,不论当前处于何种状态,只需向状态寄存器输入对应该触发条件的状态配置信息,则状态寄存器的指示即为该新输入的状态,而所述配置寄存器根据状态寄存器当前变更的新的状态指示,即可触发DMA控制器改变状态,进入对应前述配置信息输入的工作状态。
[0040] 通过外部输入的配置信息以改变DMA控制器的状态,而不是对DMA控制器进行重新配置,可以使得DMA控制器启动开销减小为原来的几十分之一,并且由于能够保存DMA控制器的现场,可以进一步减小配置开销,使暂停的开销几乎可以忽略不计,这一点在很多情况下可以大大提高软件的效率。
[0041] 所述流控制寄存器用于设置DMA控制器的各存取操作序列的时钟周期及其占用的带宽比例。
[0042] 如图4所示,所述流控制寄存器是对DMA控制器的输入流及输出流进行控制,通过向流控制寄存器内输入配置信息可以控制DMA控制器产生操作序列的绝对时间和相对次序,即通过配置各种DMA操作序列产生的时钟周期以及各种DMA操作序列之间的比例关系来控制DMA操作序列的产生时间和相对次序。在DMA控制器中,存在对不同的DMA操作序列同时进行读取的情况,如果对输入和输出的流不进行控制,就可能发生同一时段频繁访问某一存储空间,而另一时段线路却又空转的情况。因此流控制寄存器通过配置总线接收到的配置信息进而设置不同的DMA操作序列读取和写出的时钟周期不同,当几个DMA操作序列竞争输入输出通道时优先权不同,来优化和缓解DMA存取的冲突序列。
[0043] 图5所示为流控制寄存器对各个通道的请求频率及相应的带宽比例进行设置的示意图。其中的通道1、通道2、通道3各应一个DMA操作产生的状态机,而通道中的请求频率决定至少每隔多少个时钟周期发送一个读或写请求,通道中的带宽比例则决定通道之间的比例竞争关系。
[0044] 当输入输出不存在竞争时,各通道可由使用总线。而当各通道同时有请求时,则根据DMA控制器内部的计数器统计的各通道使用总线情况,对比流控制寄存器设置的带宽比例来决定哪个通道有最优先的权限。
[0045] 图6所示为DMA控制器的结构示意图。所述DMA控制器由多组状态机组成,每组状态机对应一个DMA操作序列产生通道,即通道1状态机、通道2状态机......通道N状态机分别对应了N个DMA操作序列产生通道,这些通道可产生不同的操作序列,以将输入端口的DMA的输入数据由输出端口以DMA输出数据发送。所述配置寄存器的配置信息可作为各通道状态机的条件参数以产生DMA操作序列,而所述DMA操作序列产生的频率则由流控制寄存器的时间流信息控制(即请求频率项),所述DMA操作序列的优先次序则由流控制寄存器的带宽流信息控制以在输入端口和输出端口进行选择。各通道状态机的状态信息被传递给状态寄存器,当需要改变状态机的指示状态时,可由外部配置信息输入改变状态机指示的请求指令,各通道的状态机根据此请求指令并结合配置寄存器中的配置信息而触发变更为对应的新状态。
[0046] 下面以应用本发明所述的DMA控制器的控制装置对一段固定地址区间的数据进行循环搬运为例进行详细说明。
[0047] 通过外部设备将正确的配置信息写入DMA控制器的配置寄存器,流控制寄存器。所述配置信息的内容包括要搬运的数据在目的地址和源地址中的存储格式,目的地址空间大小,每搬运多少个字节的数据产生一个标记以便软件查询,循环的地址空间最大可以容纳多少个标记次数所搬运的数据,用哪个通道来搬运数据,以及通道之间的总线控制权竞争权。
[0048] 将目的地址写入配置寄存器后,即触发DMA通道开始工作。DMA通道在工作时将配置寄存器中的工作标志位设置为1,以方便软件查询。
[0049] DMA控制器每搬运到一定数量的数据时将状态寄存器的相应位置为1,这样状态寄存器的不同值可指示DMA控制器不同的工作状态。外部软件通过特定的指令可以直接访问状态寄存器,以查询DMA控制器目前工作情况,例如搬运了多少个数据。
[0050] 对于一段固定的目的地址,如果需要循环搬运,则事先通过设置配置寄存器定义状态寄存器的状态数量,所有状态所标记的数据数量之和要小于固定地址空间大小,这样当所有状态用完后,等待软件来改变状态寄存器的状态才可以继续搬运,也即触发DMA控制器转变为另一工作状态。
[0051] 状态寄存器的状态跳转是定义好的。但是状态的跳转条件需要软件和硬件共同决定。每一个状态表示2个含义,一是当前搬运了多少个数据,二是地址空间的使用情况。根据每次工作前对配置寄存器的配置,搬运的数据块对应的地址块是已知的,这样每计算一次搬运标记,也就知道了目前固定地址区间内的数据存储情况。当状态表示固定存储区间内需要循环覆盖的下一段区间还有数据时,DMA控制器不进行搬运,进入暂停状态,直到软件修改状态寄存器,将其改为下段区间数据被清空状态,才开始继续搬运数据。也就是说,通过软件修改状态寄存器的指示,使DMA控制器得以在此新修改指示的基础上方能根据配置寄存器的配置信息继续执行之前的搬运操作。该DMA控制器执行搬运操作一方面依赖于配置寄存器的配置信息,另一方面也依赖于状态寄存器的状态指示。当状态寄存器的状态指示达到设定条件时,DMA控制器的数据搬运操作中止,此时,只有将状态寄存器的状态指示修改为符合配置信息的设定条件,方可令DMA控制器继续循环搬运数据。
[0052] 通过软件查询状态寄存器,可以知道一段地址区间内的数据是否已经搬运满了,如果满了,那么可以使用这段数据,不必等待DMA控制器工作全部完成。DMA控制器搬运完这段数据后,如果其余空间为空,则继续搬运,直到再次搬运到这段地址时,发现里面数据是满的,进入暂停状态。当软件使用完这段数据后,改变状态寄存器的值,将这段区间的数据状态设置成空,DMA控制器才继续搬运。通过软件和硬件的合理配置,DMA控制器搬运和软件程序的运行同时工作,流水的作业,可以极大提高CPU的工作效率,也可以极大提高对一段有限空间的存储利用效率,提高程序的局部性特征。
[0053] 当DMA控制器全部工作完成后,配置寄存器的工作标志位被清0,软件通过查询可以得到DMA控制器工作完毕的信息。
[0054] 本发明中,通过实时改变配置寄存器的配置信息,从而使DMA控制器产生不同的DMA操作序列;通过状态寄存器指示DMA操作当前的工作状态。所述状态寄存器可以被软件修改其值,从而触发DMA控制器进入新的工作状态。通过配置状态寄存器和配置寄存器可以实现将大块数据搬运到一小块循环存储空间,软件可以实时控制DMA的搬运过程。通过流控制寄存器可以控制DMA操作序列产生的绝对时间和相对次序。DMA控制器可以根据配置寄存器的值产生特定的DMA操作序列,可以根据流控制寄存器的值来控制DMA操作的产生时间和相对次序,可以根据状态寄存器的值来决定DMA操作的状态改变,可以根据DMA操作当前的执行状态改变状态寄存器的值,也可以根据DMA操作当前的执行状态改变自身的状态。
[0055] 本发明使得DMA控制硬件的状态对于软件是完全实时可见的,并可以用极小的开销来改变DMA的执行状态而不需要重新启动一次DMA,并且对于DMA操作的产生时间和执行次序都是完全可控。这就使得DMA控制硬件可以灵活而全面的支持软件的各种优化,却不需要额外的开销。
[0056] 本发明还提供一种DMA控制器的控制方法,该控制方法依赖于前述DMA控制器的控制装置而执行。
[0057] 即所述的DMA控制器的控制装置由配置寄存器、状态寄存器、流控制寄存器组成,其中,
[0058] 所述配置寄存器用于接收外部实时输入的配置信息,所述DMA控制器根据该外部实时输入的配置信息产生对应的操作序列;
[0059] 所述状态寄存器用于指示当前DMA控制器的工作状态,并可依据外部实时输入的配置信息改变其指示;
[0060] 所述流控制寄存器用于根据外部实时输入的配置信息设置DMA控制器的各存取操作序列的时钟周期及其占用的带宽比例。
[0061] 如图7所示,本发明所述DMA控制器的控制方法,包括如下步骤:
[0062] 步骤101,配置寄存器接收到外部实时输入的配置信息,所述DMA控制器根据该配置信息产生对应的操作序列,所述流控制寄存器根据该配置信息设置DMA控制器的各对应操作序列的时钟周期及其占用的带宽比例。
[0063] 本步骤中,所述配置信息包括源数据起始地址、源数据格式、源数据大小、源数据在中间介质中的存储类型、源数据经过中间介质的方式,源数据被存放到新存储区域的目的地址、源数据在目的存储介质中的存储类型、目的数据大小、目的存放地址是否为循环地址以及循环地址信息,状态寄存器的触发条件。所述目的地址可为连续的地址,或者不连续的地址,或者循环重复的地址。
[0064] 当DMA控制器的各通道同时接收到请求时,根据DMA控制器内的计数器统计各通道使用总线情况,并依据设置的各存取操作序列专用的带宽比例选择具有优先权限的对应通道。
[0065] 步骤102,所述DMA控制器依上述产生的操作序列搬运数据,并由状态寄存器指示其当前的工作状态。本步骤中,所述状态寄存器根据DMA控制器产生的操作序列确定当前DMA控制器的工作状态。
[0066] 本发明中,经过步骤101,即在对配置寄存器及流控制寄存器输入配置信息后,DMA控制器即产生对应的操作序列,进入步骤102,由DMA控制器依据产生的操作序列对数据进行搬运,在该搬运过程中,DMA控制器的工作状态被状态寄存器实时指示。
[0067] 如此反复执行步骤101及步骤102,可实现将源数据自源地址搬运至目的地址。当搬运数据到达设定值,即状态寄存器指示达到设定值时,若仍需继续搬运数据,则需要外部重新输入配置信息,以触发DMA控制器继续执行搬运数据。因此时状态寄存器指示的是当前DMA控制器的工作状态(对应为达到设定值而暂停搬运的状态),那么,在重新输入的配置信息中,需要对状态寄存器的指示进行更改,在更改后,配置寄存器依据此时状态寄存器的指示和重新输入的配置信息,继续对源数据进行搬运。如此,反复执行步骤102及步骤102,直至源数据被搬运完毕。
[0068] 尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。