CN103500149A - 直接内存访问控制器和直接内存访问控制方法 - Google Patents
直接内存访问控制器和直接内存访问控制方法 Download PDFInfo
- Publication number
- CN103500149A CN103500149A CN201310454912.1A CN201310454912A CN103500149A CN 103500149 A CN103500149 A CN 103500149A CN 201310454912 A CN201310454912 A CN 201310454912A CN 103500149 A CN103500149 A CN 103500149A
- Authority
- CN
- China
- Prior art keywords
- task
- read
- memory access
- descriptor
- module
- 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.)
- Pending
Links
Images
Landscapes
- Bus Control (AREA)
Abstract
本发明实施例提供一种直接内存访问控制器和直接内存访问控制方法。该控制器,包括:读取模块,用于通过总线读取直接内存访问控制任务的描述符,所述描述符携带有任务标识和任务参数;控制模块,用于解析所述读取模块读取到的所述描述符中的任务标识,获取所述直接内存访问控制任务的类型,若所述直接内存访问控制任务的类型为初始化内存任务,则启动写模块;所述写模块,用于在所述控制模块的控制下,根据所述描述符中的任务参数,通过所述总线将所述描述符中的初始化数据写入内存。本发明实施例释放了对读总线带宽的占用,也释放了对处理器的占用。
Description
技术领域
本发明涉及电子技术,尤其涉及一种直接内存访问控制器和直接内存访问控制方法。
背景技术
随着系统级芯片(System On Chip,SOC)芯片的发展,片内存储器(Memory)所占比例越来越高,其面积通常占整个芯片面积的50%以上。而系统上电以后,Memory空间存储的值处于未知状态,而处理器如果读取到未知的值可能引起错误操作,因此需要将Memory的空间初始化为已知数据。同时,在某些业务场景下,需要将Memory的存储空间初始化为业务相关的初始值,这样可以方便业务模块或者处理器直接读取Memory的初始值开始计算,提高系统的处理效率。
初始化存储器的一种方法是处理器直接写Memory完成初始化,例如,处理器通过STORE命令直接对Memory进行写初始化的值,完成Memory所有空间的初始化。然而,这种方式的缺陷是由处理器执行初始化任务,导致处理器不能并行处理其他任务,并行处理其他任务的能力下降。为克服以上缺陷,提出了处理器通过启动直接内存访问控制器(Direct MemoryAccess Controller,DMAC)搬移完成对Memory的初始化,控制流程如下:DMAC被启动以后通过Read Process读取任务;任务解析逻辑(Task Parse)将获取到的任务数据(Task data)进行解析,得到任务参数,例如搬移的源地址、目的地址、搬移的数据量等等;Task Parse启动读写主控制(ReadWrite Ctrl)逻辑启动搬移;Read Write Ctrl启动读处理(Read Process)逻辑从数据缓存单元(Data Buffer)读取数据;读取的数据进入数据缓存单元过程中,写处理(Write Process)逻辑监控Data Buffer的状态,如果数据已经被读回,则启动写操作;Read Write Ctrl监控读写状态确定数据是否搬移完成。
然而,传统DMAC只能执行数据搬移,即需要从源地址读取数据以后才能向目的地址写数据,这样会占用读总线的带宽,造成总线拥塞导致系统效率降低。
发明内容
本发明实施例提供一种直接内存访问控制器和直接内存访问控制方法,解决了初始化内存过程中占用读总线带宽的技术问题。
第一方面,本发明实施例提供一种直接内存访问控制器,包括:
读取模块,用于通过总线读取直接内存访问控制任务的描述符,所述描述符携带有任务标识和任务参数;
控制模块,用于解析所述读取模块读取到的所述描述符中的任务标识,获取所述直接内存访问控制任务的类型,若所述直接内存访问控制任务的类型为初始化内存任务,则启动写模块;
所述写模块,用于在所述控制模块的控制下,根据所述描述符中的任务参数,通过所述总线将所述描述符中的初始化数据写入内存。
结合第一方面,在第一种可能的实现方式中,所述控制模块,还用于若所述直接内存访问控制任务的类型为数据搬移任务,则启动所述读模块和所述写模块;
所述读取模块,还用于在所述控制模块的控制下,根据所述描述符中的任务参数,通过所述总线读取所述源数据;
所述写模块,还用于在所述控制模块的控制下,根据所述描述符中的任务参数,将所述读取模块读取的源数据写入目标存储空间。
结合第一方面,或第一种可能的实现方式,在第二种可能的实现方式中,所述控制模块包括:解析单元、初始化缓存单元、搬移缓存单元、选通单元和读写控制单元;
所述解析单元,用于解析所述读取模块读取到的所述描述符中的任务标识,获取所述直接内存访问控制任务的类型,若识别出所述直接内存访问控制任务控制为初始化内存任务,将所述描述符中的初始化数据缓存到所述初始化缓存单元,控制所述选通单元导通所述初始化缓存单元与所述写模块的连接并切断所述搬移缓存单元与所述写模块的连接。并启动所述读写控制单元;
所述读写控制单元,用于若所述解析单元识别出所述直接内存访问控制任务控制为初始化内存任务,启动所述写模块;
所述写模块,还用于在所述读写控制单元的控制下,根据所述描述符中的任务参数将所述初始化缓存单元中的所述初始化数据写入所述内存;
所述解析单元,还用于若识别出所述直接内存访问控制任务控制为数据搬移任务,控制所述选通单元切断所述初始化缓存单元与所述写模块的连接并导通所述搬移缓存单元与所述写模块的连接,并启动读写控制单元;
所述读写控制单元,用于若所述解析单元识别出所述直接内存访问控制任务为数据搬移任务,启动所述读取模块和所述写模块;
所述读取模块,还用于在所述读写控制单元的控制下,根据所述描述符中的任务参数,通过所述总线读取所述源数据,并将所述源数据缓存到所述搬移缓存单元;
所述写模块,还用于在所述读写控制单元的控制下,根据所述描述符中的任务参数,将所述搬移缓存单元中的所述源数据写入所述目标存储空间;
所述选通单元,用于在所述解析单元的控制下,导通或切断所述初始化缓存单元与所述写模块的连接,并切断或导通所述搬移缓存单元与所述写模块的连接。
结合第一方面,或第一种和第二种可能的实现方式,在第三种可能的实现方式中,所述内存包括多个地址间隔相同的存储阵列,每个存储阵列包括多个地址间隔相同的存储空间,所述初始化内存任务的任务参数中包括所述内存中第一个存储阵列的起始地址、第一个存储空间的起始地址、存储阵列之间的地址间隔和所述存储空间之间的地址间隔。
结合第一方面,或第一种和第二种可能的实现方式,在第四种可能的实现方式中,所述内存包括多个通过链表结构存储的存储节点,所述初始化内存任务的任务参数中包括所述内存中第一存储节点的起始地址,所述目标存储器中每个存储节点中存储中下一个存储节点的地址偏移。
第二方面,本发明实施例提供一种直接内存访问控制方法,包括:
读取直接内存访问控制任务的描述符,所述描述符携带有任务标识和任务参数;
解析所述读取模块读取到的所述描述符中的任务标识,获取所述直接内存访问控制任务的类型;
若所述直接内存访问控制任务的类型为初始化内存任务,根据所述描述符中的任务参数,将所述描述符中的初始化数据写入内存。
结合第二方面,在第一种可能的实现方式中,所述方法还包括:
若所述直接内存访问控制任务的类型为数据搬移任务,根据所述描述符中的任务参数,通过所述总线读取所述源数据,然后,将读取的所述源数据写入目标存储空间.
结合第二方面,或第一种可能的实现方式,在第二种可能的实现方式中,所述内存包括多个地址间隔相同的存储阵列,每个存储阵列包括多个地址间隔相同的存储空间,所述初始化内存任务的任务参数中包括所述内存中第一个存储阵列的起始地址、第一个存储空间的起始地址、存储阵列之间的地址间隔和所述存储空间之间的地址间隔。
结合第二方面,或第一种可能的实现方式,在第三种可能的实现方式中,所述内存包括多个通过链表结构存储的存储节点,所述初始化内存任务的任务参数中包括所述内存中第一存储节点的起始地址,所述目标存储器中每个存储节点中存储中下一个存储节点的地址偏移。
本发明实施例提供的上述技术方案中,根据直接内存访问控制任务的描述符中任务标识,识别出直接内存访问控制任务是初始化内存任务时,根据描述符中任务参数,将描述符中初始化数据写入内存,不需要通过总线读取初始化数据,释放了对读总线带宽的占用,也释放了对处理器的占用,提高了总线的传输能力。
附图说明
图1为本发明实施例提供的一种直接内存访问控制器结构示意图;
图2为本发明实施例提供的一种规则内存结构示意图;
图3为本发明实施例提供的一种不规则内存结构示意图;
图4为本发明实施例提供的另一种直接内存访问控制器结构示意图;
图5为本发明实施例提供的一种直接内存访问控制方法流程图;
图6为本发明实施例提供的另一种直接内存访问控制方法流程图;
图7为图6的一种应用场景示意图。
具体实施方式
图1为本发明实施例提供的一种直接内存访问控制器结构示意图。如图1所示,本实施例提供的控制器包括:读取模块11、控制模块12和写模块13。其中,读模块和写模块均与控制模块连接,同时读模块和写模块还与总线连接。
读取模块11,用于通过总线读取直接内存访问控制任务的描述符,所述描述符携带有任务标识和任务参数。
处理器在存储器中写入直接内存访问控制任务的描述符。处理器启动直接内存访问控制器后,直接内存访问控制器获得总线主控权,其中的读取模块通过总线从存储器中读取直接内存访问控制任务的描述符。可选地,读取模块11,接收到处理器发送的启动信号后,通过总线从存储器中读取直接内存访问控制任务的描述符。
本发明中直接内存访问控制任务分为初始化内存任务和数据搬移任务。其中,数据搬移任务用于在两个存储空间之间搬移数据,而初始化内存任务直接将其描述符中携带的初始化数据写入内存。
控制模块12,用于解析所述读取模块读取到的所述描述符中的任务标识,获取所述直接内存访问控制任务的类型,若所述直接内存访问控制任务的类型为初始化内存任务,则启动写模块。
直接内存访问控制任务的描述符中包括直接内存访问控制任务的任务标识和任务参数。通过任务标识可以识别出直接内存访问控制任务是数据搬移任务还是初始化内存任务。其中,直接内存访问控制任务的任务参数可以包括直接内存访问控制任务的复制方式,例如字节(Byte)复制、字(Word)复制还是半字(Half Word)复制。字节(Byte)复制可配置范围为0x00~0xFF,半字(Half Word)复制可配置范围为0x0000~0xFFFF,字(Word)复制可配置范围为0x00000000~0xFFFFFFFF。直接内存访问控制任务的任务参数还包括目标存储空间的地址,如果直接内存访问控制任务是数据搬移任务,任务参数还包括源存储空间的地址,以从源存储空间读取源数据。
控制模块12从直接内存访问控制任务的描述符中提取出任务标识,解析直接内存访问控制任务的类型,识别直接内存访问控制任务的类型是初始化内存任务还是数据搬移任务。如果是初始化内存任务,可以确定描述任中还包括用于初始化内存的初始化数据。如果控制模块确定直接内存访问控制任务的类型是初始化内存任务,则启动写模块13,可以向写模块发送初始化信号启动写模块,同时将初始化数据和任务参数发送给写模块,另外,控制模块也可以采用其它方式启动写模块。
写模块13,用于在所述控制模块的控制下,根据所述描述符中的任务参数,将所述描述符中的初始化数据写入内存。
写模块在控制模块的控制下,根据直接内存访问控制器任务的任务描述符中任务参数,将描述符中的初始化数据写入内存,例如,写模块根据任务参数中指定的复制方式,将初始化数据通过写入任务参数中指定的内存的目的地址。
可选地,控制模块,还用于在写模块执行结束或中断时,通过总线向所述处理器发送通知消息,在读模块执行结束或中断时,通过总线向所述处理器发送通知消息。
可选地,本发明被初始化的内存可以是由多个连续的且地址间隔相同的存储空间组成的规则化存储器。如图2所示,内存可以包括多个地址间隔相同的存储阵列:Frmae0、Frame1和Frame2,每个存储阵列包括多个地址间隔相同的存储空间:Array0、Array1、Array2和Array3。每个存储空间之间的地址间隔均为BIDX,每个存储阵列之间的地址间隔均是CIDX。初始化数据分布在由多个连续的且地址间隔相同的存储空间中。
为在内存中确定写入初始化数据的位置,所述初始化内存任务的任参数中包括所述内存中第一个存储阵列的起始地址、第一个存储空间的起始地址、存储阵列之间的地址间隔和所述存储空间之间的地址间隔。根据内存中第一个存储空间起始地址,查找第一个存储阵列的第一个存储空间;然后,根据第一个存储空间的起始地址和存储空间之间的地址间隔查找第二个存储空间;之后,根据第二个存储空间的起始地址和存储空间之间的地址间隔查找第三个存储空间,以此类推,直至查找到第一个存储阵列的最后一个存储空间后,根据第一个存储阵列的起始地址和存储阵列之间的地址间隔,查找第二个存储阵列的第一个存储空间,然后,根据第二个存储空间的第一个存储空间的地址和存储空间之间的地址间隔,查找第二个存储阵列的第二个存储空间,以此类推,直至查找到需要写入初始化数据的所有存储空间。
可选地,本发明被初始化的内存也可以是不规则存储器。如图3所示,所述内存可以包括多个通过链表结构存储的存储节点,其中,存储节点node0中保存存储节点node0与存储节点node1的地址偏移IDX0,存储节点node1中保存存储节点node1与存储节点node2的地址偏移IDX1。可选地,所述初始化存储器任务的参数中包括所述目标存储器中第一存储节点的起始地址,所述目标存储器中每个存储节点中存储中下一个存储节点的地址偏移。
根据初始化存储器任务的任务参数中第一个存储节点的起始地址,查找到第一个存储节点,根据第一个存储节点保存的第一个存储节点与第二个存储节点之间的地址偏移查找到第二个存储节点,直至查找到需要写入初始化数据的所有存储节点。
上述实施例提供的直接内存访问控制器中,控制模块根据直接内存访问控制任务的描述符中任务标识,识别出直接内存访问控制任务是初始化内存任务时,启动写模块根据描述符中任务参数,将描述符中初始化数据写入内存,不需要通过总线读取初始化数据,释放了对读总线带宽的占用,也释放了对处理器的占用,提高了总线的传输能力。
可选地,所述控制模块12,还用于若所述直接内存访问控制任务的类型为数据搬移任务,则启动所述读模块和所述写模块。所述读取模块11,还用于在所述控制模块的控制下,根据所述描述符中的任务参数,通过所述总线读取所述源数据。所述写模块13,还用于在所述控制模块的控制下,根据所述描述符中的任务参数,将所述读取模块读取的源数据写入目标存储空间。
如果直接内存访问控制器任务是数据搬移任务,则任务参数中还包括源存储空间的地址,需要先从源存储空间读取源数据然后再将读取的源数据写入目标存储空间。数据搬移任务可以在RAM和U/O设备之间搬移数据。如果控制模块识别出直接内存访问控制器任务是数据搬移任务,控制模块启动读模块和写模块工作。读模块启动后,在控制模块的控制下,通过总线从源存储空间读取源数据,然后,写模块在控制模块的控制下,通过总线将读模块读取的数据写入目标存储空间。
图4为本发明实施例提供的另一种直接内存访问控制器结构示意图。如图4所示,图1所示的控制模块12包括初始化缓存单元121、搬移缓存单元122、选通单元123、读写控制单元124和解析单元125。写模块13与选通单元123连接,选通单元123与解析单元连接,选通单元123还分别与搬移缓存单元122和初始化缓存单元121连接,读写控制单元124分别与解析单元125、写模块13和读取模块11连接。所述选通单元123,用于在所述解析单元的控制下,导通或切断所述初始化缓存单元与所述写模块的连接,并切断或导通所述搬移缓存单元与所述写模块的连接。
识别出所述直接内存访问控制任务控制为初始化内存任务时,各单元和和功能模块的动作如下:
所述解析单元125,用于解析所述读取模块读取到的所述描述符中的任务标识,获取所述直接内存访问控制任务的类型,若识别出所述直接内存访问控制任务控制为初始化内存任务,将所述描述符中的初始化数据缓存到所述初始化缓存单元,控制所述选通单元导通所述初始化缓存单元与所述写模块的连接并切断所述搬移缓存单元与所述写模块的连接。并启动所述读写控制单元。
解析单元可以向选通单元发送信号,控制选通单元导通初始化缓存单元与写模块的连接,切断搬移缓存单元与写模块的连接。
所述读写控制单元124,用于若所述解析单元识别出所述直接内存访问控制任务控制为初始化内存任务,启动所述写模块。读写控制单元124可以发送信号启动写模块。
所述写模块13,还用于在所述读写控制单元134的控制下,根据所述描述符中的任务参数将所述初始化缓存单元中的所述初始化数据写入所述内存。
识别出所述直接内存访问控制任务控制为数据搬移任务时,各单元和和功能模块的动作如下:
所述解析单元125,还用于若识别出所述直接内存访问控制任务控制为数据搬移任务,控制所述选通单元切断所述初始化缓存单元与所述写模块的连接并导通所述搬移缓存单元与所述写模块的连接,并启动读写控制单元。
所述读写控制单元124,用于若所述解析单元识别出所述直接内存访问控制任务为数据搬移任务,启动所述读取模块和所述写模块。
所述读取模块11,还用于在所述读写控制单元的控制下,根据所述描述符中的任务参数,通过所述总线读取所述源数据,并将所述源数据缓存到所述搬移缓存单元.
所述写模块12,还用于在所述读写控制单元的控制下,根据所述描述符中的任务参数,将所述搬移缓存单元中的所述源数据写入所述目标存储空间。
本实施例提供的直接内存访问控制器可以用于在两个存储空间之间搬移数据,也可以用于初始化内存。解析单元识别直接内存访问任务为初始化内存任务时,选通单元123导通所述初始化缓存单元121与所述写模块的连接,切断所述搬移缓存单元122与所述写模块的连接,读写控制单元124控制写模块将初始化数据写入内存。解析单元识别直接内存访问任务为在两个存储空间之间搬移数据的数据搬移任务时,选通单元123切断所述初始化缓存单元121与所述写模块的连接,导通所述数据搬移单元122与所述写模块的连接,读写控制单元124控制读模块从源存储空间读取源数据,并控制写模块将源数据写入目标存储空间。
图5为本发明实施例提供的一种直接内存访问控制方法流程图。本实施例的执行主体可以是DMAC。如图5所示,本实施例提供的方法包括:
步骤51:读取直接内存访问控制任务的描述符,所述描述符携带有任务标识和任务参数。
步骤52:解析读取到的所述描述符中的任务标识,获取所述直接内存访问控制任务的类型。
步骤53:若直接内存访问控制任务的类型为初始化内存任务,根据所述描述符中的任务参数,将所述描述符中的初始化数据写入内存。
处理器在存储器中写入直接内存访问控制任务的描述符。处理器启动直接内存访问控制器后,直接内存访问控制器获得总线主控权,其中的读取模块通过总线从存储器中读取直接内存访问控制任务的描述符。直接内存访问控制任务分为初始化内存任务和数据搬移任务。其中,数据搬移任务用于在两个存储空间之间搬移数据,而初始化内存任务直接将其描述符中携带的初始化数据写入内存。
直接内存访问控制任务的描述符中包括直接内存访问控制任务的任务标识和任务参数。通过任务标识可以识别出直接内存访问控制任务是数据搬移任务还是初始化内存任务。其中,直接内存访问控制任务的任务参数可以包括直接内存访问控制任务的复制方式,例如字节(Byte)复制、字(Word)复制还是半字(Half Word)复制。字节(Byte)复制可配置范围为0x00~0xFF,半字(Half Word)复制可配置范围为0x0000~0xFFFF,字(Word)复制可配置范围为0x00000000~0xFFFFFFFF。直接内存访问控制任务的任务参数还包括目标存储空间的地址,如果直接内存访问控制任务是数据搬移任务,任务参数还包括源存储空间的地址,以从源存储空间读取源数据。
从直接内存访问控制任务的描述符中提取出任务标识,解析直接内存访问控制任务的类型,识别直接内存访问控制任务的类型是初始化内存任务还是数据搬移任务。如果是初始化内存任务,可以确定描述任中还包括用于初始化内存的初始化数据。
如果确定直接内存访问控制任务的类型是初始化内存任务,根据直接内存访问控制器任务的任务描述符中任务参数,将描述符中的初始化数据写入内存,例如,根据任务参数中指定的复制方式,将初始化数据通过写入任务参数中指定的内存的目的地址。如果确定直接内存访问控制任务的类型为数据搬移任务,根据所述描述符中的任务参数,通过所述总线读取所述源数据,然后,将读取的所述源数据写入目标存储空间.
可选地,本发明被初始化的内存可以是由多个连续的且地址间隔相同的存储空间组成的规则化存储器。如图2所示,内存可以包括多个地址间隔相同的存储阵列:Frmae0、Frame1和Frame2,每个存储阵列包括多个地址间隔相同的存储空间:Array0、Array1、Array2和Array3。每个存储空间之间的地址间隔均为BIDX,每个存储阵列之间的地址间隔均是CIDX。初始化数据分布在由多个连续的且地址间隔相同的存储空间中。
为在内存中确定写入初始化数据的位置,所述初始化内存任务的任参数中包括所述内存中第一个存储阵列的起始地址、第一个存储空间的起始地址、存储阵列之间的地址间隔和所述存储空间之间的地址间隔。根据内存中第一个存储空间起始地址,查找第一个存储阵列的第一个存储空间;然后,根据第一个存储空间的起始地址和存储空间之间的地址间隔查找第二个存储空间;之后,根据第二个存储空间的起始地址和存储空间之间的地址间隔查找第三个存储空间,以此类推,直至查找到第一个存储阵列的最后一个存储空间后,根据第一个存储阵列的起始地址和存储阵列之间的地址间隔,查找第二个存储阵列的第一个存储空间,然后,根据第二个存储空间的第一个存储空间的地址和存储空间之间的地址间隔,查找第二个存储阵列的第二个存储空间,以此类推,直至查找到需要写入初始化数据的所有存储空间。
本实施例提供的方法,根据直接内存访问控制任务的描述符中任务标识,识别出直接内存访问控制任务是初始化内存任务时,启动写模块根据描述符中任务参数,将描述符中初始化数据写入内存,不需要通过总线读取初始化数据,释放了对读总线带宽的占用,也释放了对处理器的占用,提高了总线的传输能力。
图6为本发明实施例提供的另一种直接内存访问控制方法流程图,图7为图6的一种应用场景示意图。如图6和图7所示,本实施例提供的方法包括:
步骤61:处理器在存储器中配置直接内存访问控制任务。
步骤62:处理器启动直接内存访问控制器。
步骤63:直接内存访问控制器从存储器中读取内存访问控制器任务的描述符。
步骤64:直接内存访问控制器解析所述描述符中的任务标识,获取所述直接内存访问控制任务的类型,若所述直接内存访问控制任务的类型为初始化内存任务,根据所述描述符中的任务参数,将所述描述符中的初始化数据写入内存。
将所述描述符中的初始化数据写入内存后,内存访问控制器通知处理器初始化结束。
本实施例数据搬移装置在处理器的启动下完成存储器的初始化,释放了处理器,提高了初始化效率。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (9)
1.一种直接内存访问控制器,其特征在于,包括:
读取模块,用于通过总线读取直接内存访问控制任务的描述符,所述描述符携带有任务标识和任务参数;
控制模块,用于解析所述读取模块读取到的所述描述符中的任务标识,获取所述直接内存访问控制任务的类型,若所述直接内存访问控制任务的类型为初始化内存任务,则启动写模块;
所述写模块,用于在所述控制模块的控制下,根据所述描述符中的任务参数,通过所述总线将所述描述符中的初始化数据写入内存。
2.根据权利要求1所述的控制器,其特征在于:
所述控制模块,还用于若所述直接内存访问控制任务的类型为数据搬移任务,则启动所述读模块和所述写模块;
所述读取模块,还用于在所述控制模块的控制下,根据所述描述符中的任务参数,通过所述总线读取所述源数据;
所述写模块,还用于在所述控制模块的控制下,根据所述描述符中的任务参数,将所述读取模块读取的所述源数据写入目标存储空间。
3.根据权利要求2所述的控制器,其特征在于,所述控制模块包括:解析单元、初始化缓存单元、搬移缓存单元、选通单元和读写控制单元;
所述解析单元,用于解析所述读取模块读取到的所述描述符中的任务标识,获取所述直接内存访问控制任务的类型,若识别出所述直接内存访问控制任务控制为初始化内存任务,将所述描述符中的初始化数据缓存到所述初始化缓存单元,控制所述选通单元导通所述初始化缓存单元与所述写模块的连接并切断所述搬移缓存单元与所述写模块的连接。并启动所述读写控制单元;
所述读写控制单元,用于若所述解析单元识别出所述直接内存访问控制任务控制为初始化内存任务,启动所述写模块;
所述写模块,还用于在所述读写控制单元的控制下,根据所述描述符中的任务参数将所述初始化缓存单元中的所述初始化数据写入所述内存;
所述解析单元,还用于若识别出所述直接内存访问控制任务控制为数据搬移任务,控制所述选通单元切断所述初始化缓存单元与所述写模块的连接 并导通所述搬移缓存单元与所述写模块的连接,并启动读写控制单元;
所述读写控制单元,用于若所述解析单元识别出所述直接内存访问控制任务为数据搬移任务,启动所述读取模块和所述写模块;
所述读取模块,还用于在所述读写控制单元的控制下,根据所述描述符中的任务参数,通过所述总线读取所述源数据,并将所述源数据缓存到所述搬移缓存单元;
所述写模块,还用于在所述读写控制单元的控制下,根据所述描述符中的任务参数,将所述搬移缓存单元中的所述源数据写入所述目标存储空间;
所述选通单元,用于在所述解析单元的控制下,导通或切断所述初始化缓存单元与所述写模块的连接,并切断或导通所述搬移缓存单元与所述写模块的连接。
4.根据权利要求1、2或3所述的控制器,其特征在于,所述内存包括多个地址间隔相同的存储阵列,每个存储阵列包括多个地址间隔相同的存储空间,所述初始化内存任务的任务参数中包括所述内存中第一个存储阵列的起始地址、第一个存储空间的起始地址、存储阵列之间的地址间隔和所述存储空间之间的地址间隔。
5.根据权利要求1、2或3所述的控制器,其特征在于,所述内存包括多个通过链表结构存储的存储节点,所述初始化内存任务的任务参数中包括所述内存中第一存储节点的起始地址,所述目标存储器中每个存储节点中存储中下一个存储节点的地址偏移。
6.一种直接内存访问控制方法,其特征在于,包括:
读取直接内存访问控制任务的描述符,所述描述符携带有任务标识和任务参数;
解析所述读取模块读取到的所述描述符中的任务标识,获取所述直接内存访问控制任务的类型;
若所述直接内存访问控制任务的类型为初始化内存任务,根据所述描述符中的任务参数,将所述描述符中的初始化数据写入内存。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若所述直接内存访问控制任务的类型为数据搬移任务,根据所述描述符中的任务参数,通过所述总线读取所述源数据,然后,将读取的所述源数据 写入目标存储空间。
8.根据权利要求6或7所述的方法,其特征在于,所述内存包括多个地址间隔相同的存储阵列,每个存储阵列包括多个地址间隔相同的存储空间,所述初始化内存任务的任务参数中包括所述内存中第一个存储阵列的起始地址、第一个存储空间的起始地址、存储阵列之间的地址间隔和所述存储空间之间的地址间隔。
9.根据权利要求6或7所述的方法,其特征在于,所述内存包括多个通过链表结构存储的存储节点,所述初始化内存任务的任务参数中包括所述内存中第一存储节点的起始地址,所述目标存储器中每个存储节点中存储中下一个存储节点的地址偏移。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310454912.1A CN103500149A (zh) | 2013-09-29 | 2013-09-29 | 直接内存访问控制器和直接内存访问控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310454912.1A CN103500149A (zh) | 2013-09-29 | 2013-09-29 | 直接内存访问控制器和直接内存访问控制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103500149A true CN103500149A (zh) | 2014-01-08 |
Family
ID=49865363
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310454912.1A Pending CN103500149A (zh) | 2013-09-29 | 2013-09-29 | 直接内存访问控制器和直接内存访问控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103500149A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761060A (zh) * | 2014-01-27 | 2014-04-30 | 华为技术有限公司 | 一种数据处理方法及服务器 |
WO2018041074A1 (zh) * | 2016-08-31 | 2018-03-08 | 华为技术有限公司 | 一种内存设备的访问方法、装置和系统 |
CN110515872A (zh) * | 2018-05-21 | 2019-11-29 | 阿里巴巴集团控股有限公司 | 直接内存存取方法、装置、专用计算芯片及异构计算系统 |
CN112348733A (zh) * | 2019-08-08 | 2021-02-09 | 华夏芯(北京)通用处理器技术有限公司 | Gpu片外存储器中存储对象的初始化填充及读写方法和装置 |
CN112835842A (zh) * | 2021-03-05 | 2021-05-25 | 深圳市汇顶科技股份有限公司 | 端序处理方法、电路、芯片以及电子终端 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6185633B1 (en) * | 1997-03-20 | 2001-02-06 | National Semiconductor Corp. | DMA configurable receive channel with memory width N and with steering logic compressing N multiplexors |
CN101236504A (zh) * | 2007-02-01 | 2008-08-06 | 国际商业机器公司 | 用于使用dma来初始化pld的方法、系统和集成电路 |
CN101317166A (zh) * | 2005-09-29 | 2008-12-03 | P.A.Semi公司 | 统一dma |
CN103034599A (zh) * | 2012-12-12 | 2013-04-10 | 深圳国微技术有限公司 | 安全dma控制器、soc系统及其数据搬运方法 |
-
2013
- 2013-09-29 CN CN201310454912.1A patent/CN103500149A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6185633B1 (en) * | 1997-03-20 | 2001-02-06 | National Semiconductor Corp. | DMA configurable receive channel with memory width N and with steering logic compressing N multiplexors |
CN101317166A (zh) * | 2005-09-29 | 2008-12-03 | P.A.Semi公司 | 统一dma |
CN101236504A (zh) * | 2007-02-01 | 2008-08-06 | 国际商业机器公司 | 用于使用dma来初始化pld的方法、系统和集成电路 |
CN103034599A (zh) * | 2012-12-12 | 2013-04-10 | 深圳国微技术有限公司 | 安全dma控制器、soc系统及其数据搬运方法 |
Non-Patent Citations (3)
Title |
---|
俞建新等: "《重点大学计算机教材 嵌入式系统基础教程》", 31 March 2008 * |
冯小平: "《TigerSHARC处理器技术及其应用》", 30 September 2010 * |
易建勋等: "《计算机硬件技术——结构与性能》", 31 January 2011 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761060A (zh) * | 2014-01-27 | 2014-04-30 | 华为技术有限公司 | 一种数据处理方法及服务器 |
CN103761060B (zh) * | 2014-01-27 | 2017-02-15 | 华为技术有限公司 | 一种数据处理方法及服务器 |
WO2018041074A1 (zh) * | 2016-08-31 | 2018-03-08 | 华为技术有限公司 | 一种内存设备的访问方法、装置和系统 |
CN110515872A (zh) * | 2018-05-21 | 2019-11-29 | 阿里巴巴集团控股有限公司 | 直接内存存取方法、装置、专用计算芯片及异构计算系统 |
CN110515872B (zh) * | 2018-05-21 | 2020-07-31 | 阿里巴巴集团控股有限公司 | 直接内存存取方法、装置、专用计算芯片及异构计算系统 |
CN112348733A (zh) * | 2019-08-08 | 2021-02-09 | 华夏芯(北京)通用处理器技术有限公司 | Gpu片外存储器中存储对象的初始化填充及读写方法和装置 |
CN112348733B (zh) * | 2019-08-08 | 2024-08-09 | 华夏芯(北京)通用处理器技术有限公司 | Gpu片外存储器中存储对象的初始化填充及读写方法和装置 |
CN112835842A (zh) * | 2021-03-05 | 2021-05-25 | 深圳市汇顶科技股份有限公司 | 端序处理方法、电路、芯片以及电子终端 |
CN112835842B (zh) * | 2021-03-05 | 2024-04-30 | 深圳市汇顶科技股份有限公司 | 端序处理方法、电路、芯片以及电子终端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102063943B (zh) | Nand闪存参数自动检测系统 | |
US9323664B2 (en) | Techniques for identifying read/write access collisions for a storage medium | |
CN103500149A (zh) | 直接内存访问控制器和直接内存访问控制方法 | |
WO2016003559A1 (en) | Techniques to communicate with a controller for a non-volatile dual in-line memory module | |
US9846626B2 (en) | Method and apparatus for computer memory management by monitoring frequency of process access | |
CN110941395A (zh) | 动态随机存取存储器、内存管理方法、系统及存储介质 | |
JP6231135B2 (ja) | データ保護方法、装置及び設備 | |
RU2643499C2 (ru) | Управление памятью | |
US20190057049A1 (en) | Memory system and operating method thereof | |
US8868793B2 (en) | SAS expander system and method for dynamically allocating SAS addresses to SAS expander devices | |
CN102750109A (zh) | 资料同步系统及方法 | |
CN104360953A (zh) | 数据拷贝方法及装置 | |
US10008288B2 (en) | Power loss test device and method for nonvolatile memory device | |
CN104035728A (zh) | 一种硬盘热插拔处理方法、装置及节点 | |
KR102366512B1 (ko) | 논리 블록 어드레싱 범위 충돌 크롤러 | |
CN106030544B (zh) | 计算机设备内存的检测方法和计算机设备 | |
US11556279B2 (en) | System device, and method for memory interface including reconfigurable channel | |
US20190042443A1 (en) | Data acquisition with zero copy persistent buffering | |
US11392470B2 (en) | Information handling system to allow system boot when an amount of installed memory exceeds processor limit | |
CN106708445A (zh) | 链路选择方法及装置 | |
CN103092725A (zh) | 一种实现存储器中数据备份的方法及装置 | |
CN108182169B (zh) | 一种mtd滤波器中高效fft实现方法 | |
JP7420472B2 (ja) | ページサイズ認識スケジューリング方法及び非一時的なコンピュータ読取可能記録媒体 | |
CN103064803B (zh) | 一种NAND Flash存储设备的数据读写方法和装置 | |
US20170017410A1 (en) | Memory controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140108 |
|
RJ01 | Rejection of invention patent application after publication |