专利名称:通过直接存储器访问控制器传输数据的系统及方法
技术领域:
本发明涉及计算机系统、嵌入式系统以及数字信号处理器(DSP)系统中传输数据的方法,特别涉及一种通过直接存储器访问(DMA)控制器传输数据的系统及方法。
背景技术:
目前,计算机系统和外部设备之间、或者计算机系统不同内存之间的数据传输通常通过中央处理器(CPU)进行。CPU可以采用程控法或者中断法控制与外部设备之间的数据传输,但是这两种数据传输的方式都比较慢。当高速外部设备和计算机系统内存之间、或者计算机系统中不同的内存之间进行大量数据快速传输时,这两种数据传输的方式就在一定程度上限制了数据传输的速率。
为了提高计算机系统和外部设备之间、或者计算机系统不同内存之间数据传输的速度,出现了DMA技术。DMA技术是一种高速的数据传输操作,其允许计算机系统和外部设备之间、或者计算机系统不同内存之间直接读写数据,即不通过CPU、也不需要CPU干预。整个数据传输的操作在DMA控制器的控制下进行,CPU除了在数据传输开始和结束时,给出数据传输开始和结束的指令,在数据传输的过程中对数据传输不再进行其他的处理。这样,在大部分时间内,CPU处理其他过程和数据传输过程可以并行操作,使整个计算机系统的效率大大提高。
同样地,在嵌入式操作系统或者DSP系统中,为了提高数据传输的速度和系统的工作效率,也可以通过DMA技术传输数据。
图1为现有技术用DMA技术进行数据传输的系统示意图,该DMA技术应用在嵌入式操作系统或者DSP系统中,该系统包括CPU100、DSP101、随机存储器(RAM)102、DMA控制器103和外部设备104。CPU100挂在嵌入式操作系统或者DSP系统的控制总线上,DSP101、RAM102、DMA控制器103和外部设备104都挂在嵌入式操作系统或者DSP操作系统的控制总线和DMA总线上,在CPU100的控制下各个单元进行数据传输。这也就是说,CPU100通过控制总线控制嵌入式操作系统或者DSP系统中的各个单元通过DMA总线进行数据传输。
当采用DMA进行数据传输时,即DSP101向CPU100发送数据传输请求时,DMA控制器103从CPU100得到嵌入式操作系统或者DSP系统的控制总线的控制权,从而由DMA控制器103控制RAM102和外部设备104之间的数据通过DMA总线传输。更进一步地,当嵌入式操作系统或者DSP系统的RAM102的数量不仅仅是一个时,还可以由DMA控制器103控制不同RAM102之间的数据通过DMA总线传输;DSP101可以为多个,它们分别可以向CPI100发送数据传输请求。
图2为现有技术用DMA技术进行数据传输的方法流程图,其具体步骤为步骤200、CPU接收到数据传输请求,该请求目的是为了将嵌入式操作系统或者DSP系统中的外部设备或RAM中的数据传输到目的嵌入式操作系统或者DSP系统中的RAM或外部设备中。
步骤201、CPU将该数据传输请求存储到预先设置的物理存储序列中。
预先设置的物理存储序列用于按顺序存储嵌入式操作系统或者DSP系统中的各个外部设备或RAM发送来的进行数据传输请求,在预先设置的物理存储序列中存储的嵌入式操作系统或者DSP系统中的各个外部设备或RAM发送来的进行数据传输请求是按照优先级别和发出请求的先后顺序,按顺序排列的。
步骤202、DMA总线空闲,DSP向CPU发送DMA请求,请求用DMA技术传输数据。
步骤203、CPU按照物理存储序列存储的最前面的数据传输请求,配置DMA控制器后,删除物理存储序列存储的已经配置的该数据传输请求。
配置DMA控制器的过程为CPU根据物理存储序列存储的最前面的数据传输请求,确定该请求是从哪个嵌入式操作系统或者DSP系统中的外部设备或RAM传输数据到哪个嵌入式操作系统或者DSP系统中的RAM或外部设备,从而指示DMA控制器配置本次数据传输的源外部设备或源RAM、以及目的RAM或目的外部设备。
步骤204、DMA控制器按照CPU设置的配置,控制嵌入式操作系统或者DSP系统中的DMA总线和控制总线,根据该请求将嵌入式操作系统或者DSP系统中的源外部设备或源RAM的数据传送到目的RAM或目的外部设备中。
步骤205、DMA控制器判断是否执行完本次数据传输,如果是,执行步骤206;如果否,继续执行步骤204。
步骤206、DMA控制器向CPU发送执行完本次数据传输的消息。
步骤207、收到该消息的CPU判断自身物理存储序列存储的数据传输请求是否都被执行完,如果是,结束;否则,转入步骤202。
从上述用DMA技术进行数据传输的方法可以看出,该方法存在着以下缺点1、每次DMA控制器执行完一次数据传输操作并且CPU的物理存储序列存储的数据传输请求没有被执行完时,就必须返回到步骤202,需要CPU对下一次数据传输给予DMA控制器的配置,这需要CPU频繁响应;2、当CPU对下一次数据传输给予DMA控制器的配置时,DMA控制器处于空闲状态,也就是说,DMA控制器在执行下一次数据传输操作和本次数据传输操作的时间间隔比较长,使DMA控制器传输数据的使用效率降低。更进一步地,由于CPU在对下一次数据传输给予DMA控制器的配置的同时或之前,还可能进行其他处理过程,从而更增加了DMA控制器处于空闲状态的时间,从而使DMA控制器传输数据的使用效率更低。
发明内容
有鉴于此,本发明的主要目的在于一方面提供一种DMA控制器传输数据的系统,该系统在实现DMA控制器传输数据时,不仅不需要CPU频繁响应,而且使DMA单元传输数据的使用效率提高。
本发明另一方面提供一种DMA控制器传输数据的方法,该方法在实现DMA控制器传输数据时,不仅不需要CPU频繁响应,而且使DMA控制器传输数据的使用效率提高。
根据上述目的,本发明的技术方案是这样实现的一种通过直接存储器访问DMA控制器传输数据的系统,该系统包括挂在控制总线上的中央处理器CPU、挂在控制总线和DMA总线上的一个或一个以上的数字信号处理器DSP、DMA控制器和一个以上的数据存储单元,该系统还包括挂在控制总线上的DMA命令队列控制器,该DMA命令队列控制器存储从CPU发送来的数据传输请求序列;DSP向DMA命令队列控制器发送DMA请求,DMA命令队列控制器根据数据传输请求序列依次配置DMA控制器,DMA控制器根据配置对控制总线进行控制,依次执行数据传输请求序列中的数据传输请求,在数据存储单元之间通过DMA总线进行数据传输。
数据存储单元为嵌入式操作系统或者DSP系统中的外部设备或随机存储器RAM。
所述该DMA命令队列控制器存储的从CPU发送来的数据传输请求序列是CPU在空闲状态时发送的。
DMA命令队列控制器根据数据传输请求序列依次配置DMA控制器的过程为DMA命令队列控制器按照数据传输请求序列中的数据传输请求排位顺序依次选取传输请求,根据所选取的数据传输请求依次确定每一次数据传输的源数据存储单元和目的数据存储单元,根据每一次数据传输的源数据存储单元和目的数据存储单元配置DMA控制器。
所述的数据传输请求序列存储在DMA命令队列控制器预先设置的DMA命令队列表中。
一种通过直接存储器访问DMA控制器传输数据的方法,设置用于存储从CPU发送来的数据传输请求序列的DMA命令队列控制器,该方法还包括A、DSP向DMA命令队列控制器发送DMA请求;B、DMA命令队列控制器根据所存储的数据传输请求序列中排位最前面的数据传输请求配置DMA控制器后,删除所述的数据传输请求;C、DMA控制器根据配置将数据从源数据存储单元传输到目的数据存储单元;D、DMA控制器判断是否执行完本次数据传输,如果是,转入步骤E;否则,继续执行步骤C;E、DMA控制器向DMA命令队列控制器发送完成本次数据传输消息,DMA命令队列控制器判断是否将DMA命令队列控制器中存储的数据传输请求都执行完,如果是,结束;否则,执行步骤B。
步骤C所述的源数据存储单元为嵌入式操作系统或者DSP系统的外部设备或随机存储器RAM;步骤C所述的目的数据存储单元为嵌入式操作系统或者DSP系统的外部设备或随机存储器RAM。
步骤B所述DMA命令队列控制器配置DMA控制器的过程为DMA命令队列控制器根据所存储的数据传输请求序列中排位最前面的数据传输请求确定本次数据传输的源数据存储单元和目的数据存储单元,根据本次数据传输的源数据存储单元和目的数据存储单元配置DMA控制器。
在步骤E所述的结束之前,该方法进一步包括F、CPU再次将数据传输请求序列按照先后顺序批量传送到DMA命令队列控制器中,转入步骤A。
所述的数据传输请求序列存储在DMA命令队列控制器预先设置的DMA命令队列表中。
从上述方案可以看出,本发明增加了DMA命令队列控制器。第一步,CPU将物理存储序列中存储的数据传输请求批量写入到DMA命令队列控制器;第二步,DSP向DMA命令队列控制器发送DMA请求;第三步,由DMA命令队列控制器根据写入的数据传输请求的先后顺序确定当前要进行的数据传输,并配置DMA控制器;第四步,DMA控制器根据DMA命令队列控制器的控制完成本次数据传输;第五步,重复执行第二步到第四步,直到完成DMA命令队列控制器中存储的数据传输请求。由于写入DMA命令队列控制器中的数据传输请求的数量有多个,并且DMA控制器每一次传输数据的配置是DMA命令队列控制器根据自身存储的数据传输请求配置的,所以本发明在实现DMA控制器传输数据时,不需要CPU频繁响应。更进一步地,由于DMA命令队列控制器专门用于处理数据传输请求,所以DMA命令队列控制器可以实时响应DSP的DMA请求,提高DMA单元传输数据的使用效率。
图1为现有技术用DMA技术进行数据传输的系统示意图;图2为现有技术用DMA技术进行数据传输的方法流程图;图3为本发明用DMA技术进行数据传输的系统示意图;图4为本发明用DMA技术进行数据传输的方法流程图。
具体实施例方式
为了使本发明的目的、技术方案和优点更加清楚明白,以下举具体实施例并参照本发明,对本发明进行进一步详细的说明。
为了解决CPU频繁响应以及DMA控制器传输数据的使用效率比较低的缺点,本发明在嵌入式操作系统或者DSP系统中增加了DMA命令队列控制器。第一步,CPU将物理存储序列中存储的数据传输请求批量写入到DMA命令队列控制器;第二步,DSP向DMA命令队列控制器发送DMA请求;第三步,由DMA命令队列控制器根据写入的数据传输请求的先后顺序确定当前要进行的数据传输,并配置DMA控制器;第四步,DMA控制器根据DMA命令队列控制器的控制完成本次数据传输;第五步,重复执行第二步到第四步,直到完成DMA命令队列控制器中存储的数据传输请求。
DMA命令队列控制器配置DMA控制器执行本次数据传输的方法与CPU配置DMA控制器执行本次数据传输的方法相同。即DMA命令队列控制器根据自身存储的排位最前面的数据传输请求,确定该请求是从哪个嵌入式操作系统或者DSP系统中的外部设备或RAM传输数据到哪个嵌入式操作系统或者DSP系统中的RAM或外部设备,从而指示DMA控制器配置本次数据传输的源设备和目的设备。
本发明在DMA命令队列控制器存储数据传输请求的方式为可以将数据传输请求存储在预先设置的DMA命令队列表中,在该表中,数据传输请求以执行先后进行顺序排列。每一个数据传输请求的内容包括执行该数据传输请求的源设备地址、执行该数据传输请求的目的设备地址以及该数据传输请求所传输数据的传输长度。
由于CPU可以在空闲状态时将数据传输请求发送给DMA命令队列控制器进行存储,从而使本发明消除了CPU在繁忙状态时要处理DMA中断的需求矛盾。由于写入DMA命令队列控制器中的数据传输请求的数量有多个,这主要根据DMA命令队列控制器的大小确定,并且DMA控制器每一次传输数据的配置是DMA命令队列控制器根据自身存储的数据传输请求配置的,所以本发明在实现DMA控制器传输数据时,不需要CPU频繁响应。更进一步地,由于DMA命令队列控制器专门用于处理数据传输请求,而不像CPU还进行其他操作的处理,所以DMA命令队列控制器可以实时响应DSP的DMA请求,而不用使DMA控制器处于空闲状态,提高DMA单元传输数据的使用效率。
图3为本发明用DMA技术进行数据传输的系统示意图,该系统包括CPU100、DSP101、RAM102、DMA控制器103、DMA命令队列控制器301和外部设备104。CPU100和DMA命令队列控制器301挂在嵌入式操作系统或者DSP系统的控制总线上,DSP101、RAM102、DMA控制器103和外部设备104都挂在嵌入式操作系统或者DSP系统的控制总线和DMA总线上,在CPU的控制下各个单元相互配合执行操作和进行数据传输。
当采用DMA技术进行数据传输时,DMA控制器103从CPU100得到嵌入式操作系统或者DSP系统的控制总线的控制权,从而由DMA控制器103控制RAM102和外部设备104之间的数据通过DMA总线传输。更进一步地,当嵌入式操作系统或者DSP系统的RAM102的数量不仅仅是一个时,还可以由DMA控制器103控制不同RAM102之间的数据传输。
DMA控制器103从CPU100得到嵌入式操作系统或者DSP系统的控制总线的控制权,从而由DMA控制器103控制RAM102和外部设备104之间的数据通过DMA总线传输的过程为首先,CPU100将自身物理存储队列存储的数据传输请求序列通过控制总线批量发送给DMA命令队列控制器301,DMA命令队列控制器301存储接收到的数据传输请求序列;其次,DSP101通过与DMA命令队列控制器301之间的接口或者控制总线向DMA命令队列控制器301发送DMA请求,DMA命令队列控制器301收到该请求后按照自身存储的数据传输请求序列中的排位最前的数据传输请求通过控制总线配置DMA控制器103;最后,DMA控制器103根据配置控制嵌入式操作系统或者DSP系统的控制总线,由源RAM102或者源外部设备104通过DMA总线传输数据到目的外部设备104或者目的RAM102,完成本次数据的传输。
相应地,DSP101的数目可以有多个,不同的DSP101都可以向DSP命令队列控制器301发送DMA请求。
图4为本发明用DMA技术进行数据传输的方法流程图,其具体步骤为步骤400、CPU接收到外部设备或者RAM的数据传输请求。
步骤401、CPU将该数据传输请求存储到预先设置的物理存储序列中。
步骤402、CPU将物理存储序列中的数据传输请求按照先后顺序批量写入到DMA命令队列控制器中后,将已经写入到DMA命令队列控制器中的数据传输请求从物理存储序列中删除。
批量写入到DMA命令队列控制器的数据传输请求的数量是根据DMA命令队列控制器的大小确定的。
CPU可以将物理存储序列中的数据传输请求按照先后顺序批量写入到DMA命令队列控制器设置地DMA命令队列表中。
步骤403、嵌入式操作系统或者DSP系统的DMA总线空闲,DSP向DMA命令队列控制器发送DMA请求,请求进行数据传输。
DSP实时对DMA总线进行检测,当检测到DMA总线空闲时,向DMA命令队列控制器发送DMA请求。
步骤404、DMA命令队列控制器根据所存储的数据传输请求中最前面的数据传输请求配置DMA控制器后,删除已经配置地该数据传输请求。
步骤405、DMA控制器按照DMA命令队列控制器的配置控制嵌入式操作系统或者DSP系统的控制总线,根据该请求将嵌入式操作系统或者DSP系统中的源外部设备或源RAM的数据通过DMA总线传送到目的RAM或目的外部设备中。
步骤406、DMA控制器判断是否执行完本次数据传输,如果是,转入步骤407;否则,继续执行步骤405。
步骤407、DMA控制器向DMA命令队列控制器发送执行完本次数据传输的消息。
步骤408、DMA命令队列控制器判断是否将DMA命令队列控制器中存储的数据传输请求都执行完,如果是,执行步骤409;否则,执行步骤403。
步骤409、CPU再次将物理存储序列中的数据传输请求按照先后顺序批量写入到DMA命令队列控制器中后,将已经写入到DMA命令队列控制器中的数据传输请求从物理存储序列中删除,转入步骤403。
从上述方案可以看出,本发明中的CPU仅仅需要响应DMA命令队列控制器的请求,响应频率可大为降低;本发明中的DMA命令队列控制器实时响应DSP的DMA请求,有效DMA数据传输效率可大大提高,可以作到实时满带宽传输数据。
同样地,本发明提供的系统及方法也可以应用在计算机系统中。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种通过直接存储器访问DMA控制器传输数据的系统,该系统包括挂在控制总线上的中央处理器CPU、挂在控制总线和DMA总线上的一个或一个以上的数字信号处理器DSP、DMA控制器和一个以上的数据存储单元,其特征在于,该系统还包括挂在控制总线上的DMA命令队列控制器,该DMA命令队列控制器存储从CPU发送来的数据传输请求序列;DSP向DMA命令队列控制器发送DMA请求,DMA命令队列控制器根据数据传输请求序列依次配置DMA控制器,DMA控制器根据配置对控制总线进行控制,依次执行数据传输请求序列中的数据传输请求,在数据存储单元之间通过DMA总线进行数据传输。
2.如权利要求1所述的系统,其特征在于,数据存储单元为嵌入式操作系统或者DSP系统中的外部设备或随机存储器RAM。
3.如权利要求1所述的系统,其特征在于,所述DMA命令队列控制器存储的从CPU发送来的数据传输请求序列是CPU在空闲状态时发送的。
4.如权利要求1所述的系统,其特征在于,DMA命令队列控制器根据数据传输请求序列依次配置DMA控制器的过程为DMA命令队列控制器按照数据传输请求序列中的数据传输请求排位顺序依次选取传输请求,根据所选取的数据传输请求依次确定每一次数据传输的源数据存储单元和目的数据存储单元,根据每一次数据传输的源数据存储单元和目的数据存储单元配置DMA控制器。
5.如权利要求1所述的系统,其特征在于,所述的数据传输请求序列存储在DMA命令队列控制器预先设置的DMA命令队列表中。
6.一种通过直接存储器访问DMA控制器传输数据的方法,其特征在于,设置用于存储从CPU发送来的数据传输请求序列的DMA命令队列控制器,该方法还包括A、DSP向DMA命令队列控制器发送DMA请求;B、DMA命令队列控制器根据所存储的数据传输请求序列中排位最前面的数据传输请求配置DMA控制器后,删除所述的数据传输请求;C、DMA控制器根据配置将数据从源数据存储单元传输到目的数据存储单元;D、DMA控制器判断是否执行完本次数据传输,如果是,转入步骤E;否则,继续执行步骤C;E、DMA控制器向DMA命令队列控制器发送完成本次数据传输消息,DMA命令队列控制器判断是否将DMA命令队列控制器中存储的数据传输请求都执行完,如果是,结束;否则,执行步骤B。
7.如权利要求6所述的方法,其特征在于,步骤C所述的源数据存储单元为嵌入式操作系统或者DSP系统的外部设备或随机存储器RAM;步骤C所述的目的数据存储单元为嵌入式操作系统或者DSP系统的外部设备或随机存储器RAM。
8.如权利要求6所述的方法,其特征在于,步骤B所述DMA命令队列控制器配置DMA控制器的过程为DMA命令队列控制器根据所存储的数据传输请求序列中排位最前面的数据传输请求确定本次数据传输的源数据存储单元和目的数据存储单元,根据本次数据传输的源数据存储单元和目的数据存储单元配置DMA控制器。
9.如权利要求6所述的方法,其特征在于,在步骤E所述的结束之前,该方法进一步包括F、CPU再次将数据传输请求序列按照先后顺序批量传送到DMA命令队列控制器中,转入步骤A。
10.如权利要求6所述的方法,其特征在于,所述的数据传输请求序列存储在DMA命令队列控制器预先设置的DMA命令队列表中。
全文摘要
通过DMA控制器传输数据的系统及方法,该系统包括挂在控制总线上的中央处理器CPU和DMA命令队列控制器、以及挂在控制总线和DMA总线上的数字信号处理器DSP、DMA控制器和一个以上的数据存储单元,该DMA命令队列控制器存储从CPU发送来的数据传输请求序列;DSP向DMA命令队列控制器发送DMA请求,DMA命令队列控制器根据数据传输请求序列依次配置DMA控制器,DMA控制器根据配置对控制总线进行控制,依次执行数据传输请求序列中的数据传输请求,在数据存储单元之间通过DMA总线进行数据传输。本发明提供的系统及方法该系统在实现DMA控制器传输数据时,不仅不需要CPU频繁响应,而且使DMA单元传输数据的速率提高。
文档编号G06F13/28GK1700196SQ200510074950
公开日2005年11月23日 申请日期2005年6月6日 优先权日2005年6月6日
发明者金传恩, 王军 申请人:北京中星微电子有限公司