CN101504632A - 一种dma数据传输方法、系统及一种dma控制器 - Google Patents
一种dma数据传输方法、系统及一种dma控制器 Download PDFInfo
- Publication number
- CN101504632A CN101504632A CNA2009100768157A CN200910076815A CN101504632A CN 101504632 A CN101504632 A CN 101504632A CN A2009100768157 A CNA2009100768157 A CN A2009100768157A CN 200910076815 A CN200910076815 A CN 200910076815A CN 101504632 A CN101504632 A CN 101504632A
- Authority
- CN
- China
- Prior art keywords
- data
- information
- valid data
- dma
- cpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Abstract
本发明提供了一种从外部存储器向CPU内部存储器进行DMA数据传输的方法,所述数据传输由DMA控制器控制,所述方法包括:从外部存储器读出预置长度的连续数据;依据有效数据配置信息,从所读出的连续数据中提取有效数据;将所述有效数据写入CPU内部存储器。以节省CPU内部存储器的存储空间,从而降低CPU器件的成本。
Description
技术领域
本发明涉及DMA数据传输控制领域,特别是涉及一种从外部存储器向CPU内部存储器进行DMA数据传输的方法及系统,以及一种DMA控制器。
背景技术
CPU应用非常广泛,例如,CPU作为重要器件应用在各种SOC(System On Chip,片上系统)中。参考图1所示的一种CPU器件的结构示意图,具体可以包括:
数据存储阵列101,包括多个阵列块,用于存储数据;
指令存储器102,用于存储指令;
数据存储管理器103,用于管理指向所述数据存储阵列的访问请求;
指令存储管理器104,用于管理指向所述指令存储器的访问请求;
控制器105,用于控制并协调各个功能部件运行;
运算器106,用于完成各种算术和逻辑运算;
图1所示的CPU采用的是哈佛体系结构,将数据和指令分开存储和调用,即CPU包括数据通道(数据存储阵列101和数据存储管理器103)和指令通道(指令存储器102和指令存储管理器104),所述数据通道与数据总线相连,所述指令通道与指令总线相连。在实际中,所述指向所述数据存储阵列的访问请求可以为外部存储器通过数据总线发送至数据存储管理器的外部访问请求;所述指向指令存储器的访问请求可以为外部存储器通过指令总线发送至指令存储管理器的外部访问请求;在这种情况下,数据传输一般通过DMA(Direct Memory Access,直接存储器访问)实现。公知的是,采用DMA方式可以在CPU内部存储器与外部存储器之间进行数据传输,不需要CPU的参与,由总线提供数据传输的通道。
以从外部DRAM存储器(动态随机存取存储器)向CPU内部的SRAM存储器(静态随机存取存储器)进行DMA数据传输为例,在从外部存储器读出数据写入CPU内部存储器的过程中,数据从源地址到目的地址的长度是一致的,如从外部存储器的源地址读取32位的数据,然后必须将这32位的数据写入CPU内部存储器的目的地址。通常为了更好地利用DRAM的特性,DMA数据传输采用Burst read(成组读出)技术,即一次性地读取成组的数据,使较慢的存储器能够适用于较快的CPU,在这种情况下,DMA传输的一段数据长度通常为8个周期的32位数据、16个周期的32位数据或32个周期的32位数据,即从外部存储器的源地址读出的最小数据为256位、512位或1024位。
现有技术中,在从外部存储器读出相应长度的数据后,均会如数写入CPU内部存储器目的地址中,即若当前从外部存储器读出256位数据,那么在写入CPU内部存储器时,也是写入该256位数据。而实际中的一种情况为,对于写入CPU内部存储器的数据,基于当前CPU的运算器、控制器或其它操作需求,仅需要所读出数据中的一部分数据,例如,当前仅需要所读出的256位数据中,第64—160位的数据,而采用现有技术的数据传输方式则会严重浪费CPU内部存储器的存储空间,由于CPU内部存储器的成本比较高昂贵,所以这种浪费是无法忍受的。
因而,目前需要本领域技术人员迫切解决的一个技术问题就是:如何能够节省CPU内部存储器的存储空间,从而降低CPU器件的成本。
发明内容
本发明所要解决的技术问题是提供一种从外部存储器向CPU内部存储器进行DMA数据传输的方法,以节省CPU内部存储器的存储空间,从而降低CPU器件的成本。
本发明还提供了一种DMA数据传输系统及一种DMA控制器,用以保证上述方法在实际中的实现及应用。
为了解决上述技术问题,本发明实施例公开了一种从外部存储器向CPU内部存储器进行DMA数据传输的方法,所述数据传输由DMA控制器控制,所述方法包括:
从外部存储器读出预置长度的连续数据;
依据有效数据配置信息,从所读出的连续数据中提取有效数据;
将所述有效数据写入CPU内部存储器。
优选的,所述有效数据配置信息为根据当前写入需求配置寄存器中存储的第一长度信息和第二长度信息。
优选的,所述的方法,还包括:
通知所述DMA控制器写入有效数据配置信息。
优选的,所述提取有效数据的步骤包括:
依据所述连续数据的起始位置信息和第一长度信息计算出第一位置信息;以及,依据所述连续数据的末尾位置信息和第二长度信息计算出第二位置信息;
由所述第一位置信息和第二位置信息确定有效数据的位置。
本发明实施例还公开了一种DMA控制器,所述DMA控制器用于控制从外部存储器向CPU内部存储器的DMA数据传输过程,包括以下模块:
读取模块,用于从外部存储器读出预置长度的连续数据;
有效数据提取模块,用于依据有效数据配置信息,从所读出的连续数据中提取有效数据;
写入模块,用于将所述有效数据写入CPU内部存储器。
优选的,所述有效数据配置信息为根据当前写入需求配置寄存器中存储的第一长度信息和第二长度信息。
优选的,所述的DMA控制器还包括:
配置信息写入模块,用于根据CPU的通知写入有效数据配置信息。
优选的,所述有效数据提取模块包括:
长度信息计算子模块,用于依据所述连续数据的起始位置信息和第一长度信息计算出第一位置信息;以及,依据所述连续数据的末尾位置信息和第二长度信息计算出第二位置信息;
有效数据定位子模块,用于根据所述第一位置信息和第二位置信息确定有效数据的位置。
本发明实施例还公开了一种DMA数据传输系统,包括:
CPU配置模块,用于配置DMA控制器的数据传输信息,所述数据传输信息包括外部存储器的源地址、CPU内部存储器的目标地址、数据长度信息和有效数据配置信息;
外部存储器,位于CPU外部,用于存储数据;
CPU内部存储器,位于CPU内部,用于存储数据
DMA控制器,用于将外部存储器的源地址中的指定数据以DMA的方式传输到CPU内部存储器的目标地址,具体包括以下模块:
读取模块,用于从外部存储器读出预置长度的连续数据;
有效数据提取模块,用于依据所述有效数据配置信息,从所读出的连续数据中提取有效数据;
写入模块,用于将所述有效数据写入CPU内部存储器。
优选的,所述有效数据配置信息为根据当前写入需求配置寄存器中存储的第一长度信息和第二长度信息。
优选的,所述有效数据提取模块包括:
长度信息计算子模块,用于依据所述连续数据的起始位置信息和第一长度信息计算出第一位置信息;以及,依据所述连续数据的末尾位置信息和第二长度信息计算出第二位置信息;
有效数据定位子模块,用于根据所述第一位置信息和第二位置信息确定有效数据的位置。
与现有技术相比,本发明具有以下优点:
本发明在从外部存储器读出数据后,可以依据当前写入需求从读出的数据中提取相应的有效数据,在向CPU内部存储器写入数据时,仅需写入当前所需的那部分数据(有效数据),因而有效节省了CPU内部存储器的存储空间;由于CPU内部存储器存储空间的充分利用,从而可以降低CPU器件的成本,并且CPU在执行内部存储器的数据处理时,由于其所存储的有效数据是根据当前写入确定的无冗余数据,无需CPU进一步筛选当前所需的数据,进而可以有效节省CPU的操作时间。
附图说明
图1是一种CPU器件的结构示意图;
图2是本发明的一种从外部存储器向CPU内部存储器进行DMA数据传输的方法实施例1的流程图;
图3是本发明的一种从外部存储器向CPU内部存储器进行DMA数据传输的方法实施例2的流程图;
图4是本发明的一种DMA控制器实施例1的结构图;
图5是本发明的一种DMA控制器实施例2的结构图;
图6是本发明的一种DMA数据传输系统实施例的结构图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
采用DMA方式能使外部存储器直接和CPU内部存储器进行成批数据的快速传送,一般而言,以DMA方式从外部存储器向CPU内部存储器传输数据的过程可以包括以下步骤:
步骤S1、外部存储器通过DMA控制器(DMAC),向CPU发送DMA请求信号,提出接管总线控制权的总线请求;
步骤S2、CPU收到该信号,在当前的总线周期结束后,会按DMA信号的优先级和提出DMA请求的先后顺序响应该DMA请求信号;
步骤S3、CPU响应当前DMA请求,系统转变为DMA工作方式,CPU配置DMA传输的源地址、目标地址和数据长度,并把总线控制权交给DMA控制器;
步骤S4、DMA控制器获得总线控制权后,执行DMA数据传输操作,即按配置信息从源地址向目标地址传输一段相应长度的数据;
步骤S5、DMA数据传送完毕后,DMA控制器向CPU发送DMA结束信号,如中断信号,把总线控制权交还CPU。
现有技术中,在执行步骤S4的DMA数据传输过程中,通常按配置信息向目的地址写入的数据长度与从源地址读取的数据长度是一致的,而在实际中的一种情况为,写入所需的数据只是所读取数据中的一部分,在这种情况下,若仍继续将读取的数据全部写入目的地址中,显然过于浪费目的地址的资源,特别是在目的地址为CPU内部存储器时,由于CPU内部存储器的成本通常比较高昂,所以这种浪费空间的情形是亟待改善的。
正是由于本专利的发明人注意到了这一点,因此,创新性的提出一种从外部存储器向CPU内部存储器进行DMA传输的方式,本发明的一种优选实施例的核心构思在于,从外部存储器读出数据后,依据当前写入需求从读出的数据中提取相应的有效数据,在向CPU内部存储器写入数据时则只写入这些有效数据,从而有效节省了CPU内部存储器的存储空间,降低了CPU器件的成本。
参考图2,示出了本发明的一种从外部存储器向CPU内部存储器进行DMA传输的方法实施例1的流程图,所述数据传输由DMA控制器控制,本实施例具体可以包括以下步骤:
步骤201、从外部存储器读出预置长度的连续数据;
步骤202、依据有效数据配置信息,从所读出的连续数据中提取有效数据;
步骤203、将所述有效数据写入CPU内部存储器。
DMA控制器是实现DMA传输的专门接口电路,在本发明实施例中,可以将其视为一种能够通过一组专用总线将CPU内部存储器和外部存储器连接起来的控制器。它是在CPU的控制下执行数据传输操作。在DMA控制器执行传输时,无须CPU本身的介入,并能产生中断,还能在控制器内部计算出地址。
公知的是,对于DMA传输,至少需要规定数据传输的源地址、目标地址和数据长度。在本实施例中,源地址可以为外部存储器的地址,目标地址可以为CPU内部存储器的地址,即所述DMA传输的过程涉及从外部存储器源地址读出数据,以及,向CPU内部存储器目标地址写入数据的过程;数据长度是指每次从源地址读出的数据长度,所述数据长度通常由当前所采用的外部存储器所确定,以采用DRAM外部存储器为例,由于DRAM相对于作为CPU内部存储器的SRAM而言,具有容量较大,但读写速度不如SRAM的特点,通常为了更好地利用DRAM的特性,DMA数据传输采用Burst read(成组读出)技术,即一次性地读取成组的数据,使较慢的DRAM能够适用于较快的SRAM,在这种情况下,DMA传输的一段数据长度为8个周期的32位数据、16个周期的32位数据或32个周期的32位数据,即每次读出的数据长度为256位、512位或1024位。
在本发明实施例中,还需要规定有效数据的配置信息,优选的,所述配置信息可以为根据当前写入需求配置寄存器中存储的第一长度信息和第二长度信息。在实际中,可以通过分析有效数据在所读出的数据中所存在的位置来生成有效数据配置信息,例如,CPU运算器运算所需的数据为,所读出8个周期的32位数据(256位数据)中的中间三个周期的32位数据(第64—160位数据);在这种情况下,可以配置A寄存器中存储的第一长度信息为64位数据,配置B寄存器中存储的第二长度信息为96位数据;或如,CPU控制器控制所需的数据为,所读出8个周期的32位数据(256位数据)中的前两个周期的32位数据(第0—64位数据);在这种情况下,可以配置寄存器中存储的第一长度信息为0位数据,第二长度信息为160位数据。
在本发明的一种优选实施例中,所述步骤202中提取有效数据可以通过以下子步骤实现:
子步骤T1、依据所述连续数据的起始位置信息和第一长度信息计算出第一位置信息;以及,依据所述连续数据的末尾位置信息和第二长度信息计算出第二位置信息;
子步骤T2、由所述第一位置信息和第二位置信息确定有效数据的位置。
假设当前读出的连续数据为0—255这256位数据,在如上例所示第一长度信息为64位数据,第二长度信息为96位数据的情况下,依据所述连续数据的起始位置信息和第一长度信息计算第一位置信息的方式可以为0+64=64,从而可以确定有效数据的起始位置为第64位数据;依据所述连续数据的末尾位置信息和第二长度信息计算第二位置信息的方式可以为256-96=160,从而可以确定有效数据的终止位置为第160位数据;然后提取所读出的连续数据中第64位—160位的数据即获得这段有效数据。或者,在如上例所示第一长度信息为0位数据,第二长度信息为160位数据的情况下,依据所述连续数据的起始位置信息和第一长度信息计算第一位置信息的方式可以为0+0=0,从而可以确定有效数据的起始位置为第0位数据;依据所述连续数据的末尾位置信息和第二长度信息计算第二位置信息的方式可以为256-160=96,从而可以确定有效数据的终止位置为第96位数据;然后提取所读出的连续数据中第0位—96位的数据即获得这段有效数据。
需要说明的是,所述第一长度信息和第二长度信息可以由本领域技术人员结合实际情况具体设置,例如,在当前写入所需的数据为前两个周期的数据,可以仅配置第一长度信息或第二长度信息;本发明对此并不需要加以限制。另外,所述第一长度信息和第二长度信息可以存储在一个寄存器中,也可以分别存储在两个寄存器中,本发明对此也无需加以限制。
在具体实现中,采用DMA方式可以传输多段连续数据,在这种情况下,还需要规定数据传输次数,源地址增量参数及目标地址增量参数,即为保证多段数据传输的连续性,DMA控制器将第一段数据从所述源地址传输至目标地址后,会更新所述传输次数,并依据所述第一段数据的源地址及源地址增量参数计算下一段数据传输的源地址,以及,依据所述第一段数据的目标地址及目标地址增量参数计算下一段数据传输的目标地址,然后进行下一段数据的传输。应用本发明实施例,在每一段数据传输时,都会从源地址读出预置长度的连续数据,然后均按照有效数据配置信息,从所读出的连续数据中提取出相应位置的有效数据,再将该有效数据写入当前的目标地址。
具体而言,应用本发明实施例从外部存储器向CPU内部存储器进行DMA多段传输的过程可以包括以下步骤:
步骤Q1、外部存储器通过DMA控制器(DMAC),向CPU发送DMA请求信号,提出接管总线控制权的总线请求;
步骤Q2、CPU收到该信号,在当前的总线周期结束后,会按DMA信号的优先级和提出DMA请求的先后顺序响应该DMA请求信号;
步骤Q3、CPU响应当前DMA请求,系统转变为DMA工作方式,CPU配置DMA传输的源地址、目标地址、源地址增量参数、目标地址增量参数、数据长度、传输次数和有效数据配置信息,并把总线控制权交给DMA控制器;
步骤Q4、DMA控制器获得总线控制权后,执行DMA多段数据传输操作,具体可以为:在传输第一段数据时,从源地址读出相应长度的连续数据,然后从这段连续数据中按有效数据配置信息提取出相应的有效数据,再将该有效数据写入目标地址中;接下来,根据源地址增量参数和目标地址增量参数计算出下一段数据传输的源地址和目标地址,然后继续从该计算出的源地址读出相应长度的下一段数据,并按所述有效数据配置信息提取出有效数据后,将所述有效数据写入该计算出的目标地址,直至当前配置的多段数据传输完毕为止。
步骤Q5、DMA数据传送完毕后,DMA控制器向CPU发送DMA结束信号,如中断信号,并把总线控制权交还CPU。
可见,应用本发明实施例,在向CPU内部存储器写入数据时,可以仅写入当前所需的那部分数据(有效数据),因而可以有效节省CPU内部存储器的存储空间;由于CPU内部存储器存储空间的充分利用,从而可以降低CPU器件的成本,并且CPU在执行内部存储器的数据处理时,由于其所存储的有效数据是根据当前写入确定的无冗余数据,无需CPU进一步筛选当前所需的数据,因而还可以有效节省CPU的操作时间。
参考图3,示出了本发明的一种从外部存储器向CPU内部存储器进行DMA传输的方法实施例2的流程图,所述数据传输由DMA控制器控制,本实施例具体可以包括以下步骤:
步骤301、从外部存储器读出预置长度的连续数据;
步骤302、通知所述DMA控制器写入有效数据配置信息,所述有效数据配置信息为根据当前写入需求配置寄存器中存储的第一长度信息和第二长度信息;
步骤303、依据所述有效数据配置信息,从所读出的连续数据中提取有效数据;
优选的,本步骤可以包括以下子步骤:
子步骤3031、依据所述连续数据的起始位置信息和第一长度信息计算出第一位置信息;
子步骤3032、依据所述连续数据的末尾位置信息和第二长度信息计算出第二位置信息;
子步骤3033、由所述第一位置信息和第二位置信息确定有效数据的位置。
步骤304、将所述有效数据写入CPU内部存储器。
本实施例与图2所示实施例的区别在于,本发明主要适用于从外部存储器向CPU内部存储器进行一段DMA数据传输或多段非连续DMA数据传输的情形,在这种情形下,每次传输过程中有效数据在读出数据中的位置可能是不一样的,因而在每次传输中所提取的有效数据,是根据当前的有效数据配置信息来确定的。
例如,应用本实施例从外部存储器向CPU内部存储器进行DMA一段数据传输的过程可以包括以下步骤:
步骤R1、外部存储器通过DMA控制器(DMAC),向CPU发送DMA请求信号,提出接管总线控制权的总线请求;
步骤R2、CPU收到该信号,在当前的总线周期结束后,会按DMA信号的优先级和提出DMA请求的先后顺序响应该DMA请求信号;
步骤R3、CPU响应当前DMA请求,系统转变为DMA工作方式,CPU配置DMA传输的源地址、目标地址、数据长度和有效数据配置信息,并把总线控制权交给DMA控制器;
步骤R4、DMA控制器获得总线控制权后,执行DMA数据传输操作,即从源地址读出相应长度的连续数据,然后从这段连续数据中按有效数据配置信息提取出相应的有效数据,再将该有效数据写入目标地址中;
步骤R5、DMA数据传送完毕后,DMA控制器向CPU发送DMA结束信号,如中断信号,并把总线控制权交还CPU。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
参考图4,示出了本发明的一种DMA控制器实施例1的结构图,所述DMA控制器用于控制从外部存储器向CPU内部存储器的DMA数据传输过程,具体可以包括以下模块:
读取模块401,用于从外部存储器读出预置长度的连续数据;
有效数据提取模块402,用于依据有效数据配置信息,从所读出的连续数据中提取有效数据;
写入模块403,用于将所述有效数据写入CPU内部存储器。
在本发明的一种优选实施例中,所述有效数据配置信息为根据当前写入需求配置寄存器中存储的第一长度信息和第二长度信息。
在这种情况下,所述有效数据提取模块402可以包括以下子模块:
长度信息计算子模块,用于依据所述连续数据的起始位置信息和第一长度信息计算出第一位置信息;以及,依据所述连续数据的末尾位置信息和第二长度信息计算出第二位置信息;
有效数据定位子模块,用于根据所述第一位置信息和第二位置信息确定有效数据的位置。
在实际中,本发明实施例适用于芯片中单独工作的DMA控制器,目前大部分芯片外部连接一块DRAM,并且支持Burst访问。本发明实施例还可以适用于位于CPU内部的DMA控制器(DMAC),优选的,这种拥有内部DMA控制器的CPU结构可以包括如下部件:
总控制器,用于接收DMA信息指令,以及向运算器发送控制指令;具体的,所述DMA信息包括:进行DMA数据传输的源地址信息、目标地址信息、数据长度信息和控制信息。
运算器,用于将所述DMA信息配置给所述DMAC;即把所述DMA信息相应的配置到DMAC的源地址寄存器、目标地址寄存器、数据长度寄存器和控制寄存器中。
DMAC,用于依据所述DMA信息,进行DMA数据传输。一种优选的方案是,当所述DMA数据传输结束后,所述DMAC向总控制器发送中断请求,然后总控制器重新接管总线控制权。当然,在所述DMA数据传输结束后,所述DMAC也可以不向总控制器发送中断请求,只是停止执行数据传输,此时总控制器可以通过查看的方式获得DMAC的状态。
外部总线接口,用于CPU内部与CPU外部的通信;即所述DMAC需要通过外部总线接口,与CPU外部进行通信。在另一种优选的实施例中,可以在CPU中增加一个DMA专用总线接口,所述接口专用于DMAC与CPU外部的通信,在进行DMA传输时,就不需要占用原有的外部总线接口,提高系统效率。
存储控制器,用于存储进行DMA数据传输的数据。
当有DMA传输需求时,用户发出进行DMA传输的CPU指令,所述指令为向内部DMAC的寄存器写入DMA信息;总控制器接收所述指令,并向运算器发送控制指令;然后所述运算器执行该指令,将所述DMA信息配置到DMAC的寄存器中;接着DMAC依据所述DMA信息,经过外部总线接口,通过存储控制器进行DMA数据传输。
由于图4所示的实施例与前述图2所示的实施例较为相近,相关部分参见前述实施例中的描述即可,在此就不赘述了。
参考图5,示出了本发明的一种DMA控制器实施例2的结构图,所述DMA控制器用于控制从外部存储器向CPU内部存储器的DMA数据传输过程,具体可以包括以下模块:
读取模块501,用于从外部存储器读出预置长度的连续数据;
配置信息写入模块502,用于根据CPU的通知写入有效数据配置信息;
优选的,所述有效数据配置信息可以为根据当前写入需求配置寄存器中存储的第一长度信息和第二长度信息。
有效数据提取模块503,用于依据所述有效数据配置信息,从所读出的连续数据中提取有效数据;
写入模块504,用于将所述有效数据写入CPU内部存储器。
在本实施例中,优选的是,所述有效数据提取模块503可以包括以下子模块:
长度信息计算子模块5031,用于依据所述连续数据的起始位置信息和第一长度信息计算出第一位置信息;以及,依据所述连续数据的末尾位置信息和第二长度信息计算出第二位置信息;
有效数据定位子模块5032,用于根据所述第一位置信息和第二位置信息确定有效数据的位置。
由于图5所示的实施例与前述图3所示的实施例较为相近,相关部分参见前述实施例中的描述即可,在此就不赘述了。
参考图6,示出了本发明的一种DMA数据传输系统实施例的结构图,具体可以包括:
CPU配置模块61,用于配置DMA控制器的数据传输信息,所述数据传输信息包括外部存储器的源地址、CPU内部存储器的目标地址、数据长度信息和有效数据配置信息;
外部存储器62,位于CPU外部,用于存储数据;
CPU内部存储器63,位于CPU内部,用于存储数据
DMA控制器64,用于将外部存储器的源地址中的指定数据以DMA的方式传输到CPU内部存储器的目标地址,具体包括以下模块:
读取模块641,用于从外部存储器读出预置长度的连续数据;
有效数据提取模块642,用于依据所述有效数据配置信息,从所读出的连续数据中提取有效数据;
写入模块643,用于将所述有效数据写入CPU内部存储器。
在实际中,进行DMA多段数据传输时,所述数据传输信息还可以包括:源地址增量参数及目标地址增量参数,以及,传输次数信息。
在本发明的一种优选实施例中,所述有效数据配置信息可以为根据当前写入需求配置寄存器中存储的第一长度信息和第二长度信息。在这种情况下,所述DMA控制器中的有效数据提取模块可以包括以下子模块:
长度信息计算子模块,用于依据所述连续数据的起始位置信息和第一长度信息计算出第一位置信息;以及,依据所述连续数据的末尾位置信息和第二长度信息计算出第二位置信息;
有效数据定位子模块,用于根据所述第一位置信息和第二位置信息确定有效数据的位置。
作为另一实施例,当进行一段DMA数据传输,或多段不连续DMA数据传输时,所述DMA控制器还可以包括:
配置信息写入模块,用于根据CPU的通知写入有效数据配置信息。
在具体实现中,所述外部存储器的源地址、CPU内部存储器的目标地址、数据长度信息、有效数据配置信息、源地址增量参数、目标地址增量参数以及传输次数信息均可以在寄存器中配置。并且,对于DMA控制器还可以设置一组FIFO,即外部存储器和CPU内部存储器都有一组FIFO存在。当资源紧张而不能完成数据传输时,FIFO可以提供数据的暂存,从而进一步提高性能。
对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、装置或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、装置或者系统所固有的要素。
以上对本发明所提供的一种从外部存储器向CPU内部存储器进行DMA传输的方法、一种DMA控制器及一种DMA数据传输系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (11)
1、一种从外部存储器向CPU内部存储器进行DMA数据传输的方法,其特征在于,所述数据传输由DMA控制器控制,所述方法包括:
从外部存储器读出预置长度的连续数据;
依据有效数据配置信息,从所读出的连续数据中提取有效数据;
将所述有效数据写入CPU内部存储器。
2、如权利要求1所述的方法,其特征在于,所述有效数据配置信息为根据当前写入需求配置寄存器中存储的第一长度信息和第二长度信息。
3、如权利要求2所述的方法,其特征在于,还包括:
通知所述DMA控制器写入有效数据配置信息。
4、如权利要求2或3所述的方法,其特征在于,所述提取有效数据的步骤包括:
依据所述连续数据的起始位置信息和第一长度信息计算出第一位置信息;以及,依据所述连续数据的末尾位置信息和第二长度信息计算出第二位置信息;
由所述第一位置信息和第二位置信息确定有效数据的位置。
5、一种DMA控制器,其特征在于,所述DMA控制器用于控制从外部存储器向CPU内部存储器的DMA数据传输过程,包括以下模块:
读取模块,用于从外部存储器读出预置长度的连续数据;
有效数据提取模块,用于依据有效数据配置信息,从所读出的连续数据中提取有效数据;
写入模块,用于将所述有效数据写入CPU内部存储器。
6、如权利要求5所述的DMA控制器,其特征在于,所述有效数据配置信息为根据当前写入需求配置寄存器中存储的第一长度信息和第二长度信息。
7、如权利要求6所述的DMA控制器,其特征在于,还包括:
配置信息写入模块,用于根据CPU的通知写入有效数据配置信息。
8、如权利要求6或7所述的DMA控制器,其特征在于,所述有效数据提取模块包括:
长度信息计算子模块,用于依据所述连续数据的起始位置信息和第一长度信息计算出第一位置信息;以及,依据所述连续数据的末尾位置信息和第二长度信息计算出第二位置信息;
有效数据定位子模块,用于根据所述第一位置信息和第二位置信息确定有效数据的位置。
9、一种DMA数据传输系统,其特征在于,包括:
CPU配置模块,用于配置DMA控制器的数据传输信息,所述数据传输信息包括外部存储器的源地址、CPU内部存储器的目标地址、数据长度信息和有效数据配置信息;
外部存储器,位于CPU外部,用于存储数据;
CPU内部存储器,位于CPU内部,用于存储数据
DMA控制器,用于将外部存储器的源地址中的指定数据以DMA的方式传输到CPU内部存储器的目标地址,具体包括以下模块:
读取模块,用于从外部存储器读出预置长度的连续数据;
有效数据提取模块,用于依据所述有效数据配置信息,从所读出的连续数据中提取有效数据;
写入模块,用于将所述有效数据写入CPU内部存储器。
10、如权利要求9所述的系统,其特征在于,所述有效数据配置信息为根据当前写入需求配置寄存器中存储的第一长度信息和第二长度信息。
11、如权利要求10所述的系统,其特征在于,所述有效数据提取模块包括:
长度信息计算子模块,用于依据所述连续数据的起始位置信息和第一长度信息计算出第一位置信息;以及,依据所述连续数据的末尾位置信息和第二长度信息计算出第二位置信息;
有效数据定位子模块,用于根据所述第一位置信息和第二位置信息确定有效数据的位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910076815 CN101504632B (zh) | 2009-01-21 | 2009-01-21 | 一种dma数据传输方法、系统及一种dma控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910076815 CN101504632B (zh) | 2009-01-21 | 2009-01-21 | 一种dma数据传输方法、系统及一种dma控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101504632A true CN101504632A (zh) | 2009-08-12 |
CN101504632B CN101504632B (zh) | 2012-12-05 |
Family
ID=40976883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910076815 Expired - Fee Related CN101504632B (zh) | 2009-01-21 | 2009-01-21 | 一种dma数据传输方法、系统及一种dma控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101504632B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102147786A (zh) * | 2010-12-29 | 2011-08-10 | 中国航空工业集团公司第六三一研究所 | 一种双端口虚拟fifo数据交换的方法 |
CN103201788A (zh) * | 2010-11-01 | 2013-07-10 | 三菱电机株式会社 | 描绘装置以及描绘方法 |
CN103329493A (zh) * | 2010-12-31 | 2013-09-25 | 瑞典爱立信有限公司 | 芯片上分组穿过 |
CN103559157A (zh) * | 2013-11-14 | 2014-02-05 | 绵阳市维博电子有限责任公司 | 采集数据的传输方法、装置及系统 |
CN104239223A (zh) * | 2013-06-20 | 2014-12-24 | 慧荣科技股份有限公司 | 存储器控制器及其存取系统 |
CN105786735A (zh) * | 2016-02-19 | 2016-07-20 | 大唐微电子技术有限公司 | 一种直接内存存取dma控制器及数据访问方法 |
CN108885596A (zh) * | 2017-12-29 | 2018-11-23 | 深圳市大疆创新科技有限公司 | 数据处理方法、设备、dma控制器及计算机可读存储介质 |
CN109074335A (zh) * | 2017-12-29 | 2018-12-21 | 深圳市大疆创新科技有限公司 | 数据处理方法、设备、dma控制器及计算机可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100552654C (zh) * | 2006-12-08 | 2009-10-21 | 深圳艾科创新微电子有限公司 | 一种专为存取图象块优化的二维dma传输方法 |
CN100559178C (zh) * | 2007-09-13 | 2009-11-11 | 华中科技大学 | 一种磁致伸缩导波无损检测方法 |
CN101276318B (zh) * | 2008-05-12 | 2010-06-09 | 北京航空航天大学 | 基于pci-e总线的直接存取数据传输控制装置 |
-
2009
- 2009-01-21 CN CN 200910076815 patent/CN101504632B/zh not_active Expired - Fee Related
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103201788B (zh) * | 2010-11-01 | 2015-10-21 | 三菱电机株式会社 | 描绘装置以及描绘方法 |
CN103201788A (zh) * | 2010-11-01 | 2013-07-10 | 三菱电机株式会社 | 描绘装置以及描绘方法 |
CN102147786B (zh) * | 2010-12-29 | 2012-10-03 | 中国航空工业集团公司第六三一研究所 | 一种双端口虚拟fifo数据交换的方法 |
CN102147786A (zh) * | 2010-12-29 | 2011-08-10 | 中国航空工业集团公司第六三一研究所 | 一种双端口虚拟fifo数据交换的方法 |
CN103329493A (zh) * | 2010-12-31 | 2013-09-25 | 瑞典爱立信有限公司 | 芯片上分组穿过 |
CN103329493B (zh) * | 2010-12-31 | 2016-10-26 | 瑞典爱立信有限公司 | 用于在分组处理期间避免存储器带宽利用的方法和设备 |
CN104239223A (zh) * | 2013-06-20 | 2014-12-24 | 慧荣科技股份有限公司 | 存储器控制器及其存取系统 |
CN103559157A (zh) * | 2013-11-14 | 2014-02-05 | 绵阳市维博电子有限责任公司 | 采集数据的传输方法、装置及系统 |
CN103559157B (zh) * | 2013-11-14 | 2016-08-17 | 绵阳市维博电子有限责任公司 | 采集数据的传输方法、装置及系统 |
CN105786735A (zh) * | 2016-02-19 | 2016-07-20 | 大唐微电子技术有限公司 | 一种直接内存存取dma控制器及数据访问方法 |
CN108885596A (zh) * | 2017-12-29 | 2018-11-23 | 深圳市大疆创新科技有限公司 | 数据处理方法、设备、dma控制器及计算机可读存储介质 |
CN109074335A (zh) * | 2017-12-29 | 2018-12-21 | 深圳市大疆创新科技有限公司 | 数据处理方法、设备、dma控制器及计算机可读存储介质 |
WO2019127517A1 (zh) * | 2017-12-29 | 2019-07-04 | 深圳市大疆创新科技有限公司 | 数据处理方法、设备、dma控制器及计算机可读存储介质 |
WO2019127507A1 (zh) * | 2017-12-29 | 2019-07-04 | 深圳市大疆创新科技有限公司 | 数据处理方法、设备、dma控制器及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101504632B (zh) | 2012-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101504632B (zh) | 一种dma数据传输方法、系统及一种dma控制器 | |
CN107301455B (zh) | 用于卷积神经网络的混合立方体存储系统及加速计算方法 | |
CN100507886C (zh) | 一种对非易失性存储器进行直接存储访问的方法及其装置 | |
US11163710B2 (en) | Information processor with tightly coupled smart memory unit | |
CN102982505A (zh) | 虚拟gpu | |
CN101387988B (zh) | 具有闪速存储器的计算机和运行闪速存储器的方法 | |
CN100369024C (zh) | 直接存储访问控制装置和图像处理系统以及传输方法 | |
US8631189B2 (en) | Storage apparatus and storage system | |
US9569381B2 (en) | Scheduler for memory | |
CN110737608B (zh) | 一种数据操作方法、装置及系统 | |
CN101673253A (zh) | 直接存储器访问的实现方法 | |
CN103218329A (zh) | 数字信号处理数据传输 | |
CN110333827B (zh) | 一种数据加载装置和数据加载方法 | |
CN101706760B (zh) | 矩阵转置自动控制电路系统及矩阵转置方法 | |
CN104317754B (zh) | 面向异构计算系统的跨步数据传输优化方法 | |
CN101504567B (zh) | 一种cpu、cpu指令系统及降低cpu功耗的方法 | |
CN101212680B (zh) | 图像数据的存储器存取方法及系统 | |
CN103778086A (zh) | 一种基于粗粒度动态可重构系统的多模式数据访问装置及办法 | |
CN101620581A (zh) | 双口ram实现闪存控制器缓存的结构及实现该缓存的方法 | |
US8386725B2 (en) | USB host controller and controlling method for USB host controller | |
CN105404591B (zh) | 处理器系统及其存储器控制方法 | |
CN105453066A (zh) | 处理器和存储器控制方法 | |
CN100432968C (zh) | 存储器直接存取装置及其数据传输方法 | |
CN101504566A (zh) | 一种降低cpu功耗的方法和一种cpu | |
CN103389893A (zh) | 一种配置寄存器读写方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121205 Termination date: 20200121 |