CN116204466A - Dma链表模式下的数据处理方法、装置及系统 - Google Patents

Dma链表模式下的数据处理方法、装置及系统 Download PDF

Info

Publication number
CN116204466A
CN116204466A CN202310137923.0A CN202310137923A CN116204466A CN 116204466 A CN116204466 A CN 116204466A CN 202310137923 A CN202310137923 A CN 202310137923A CN 116204466 A CN116204466 A CN 116204466A
Authority
CN
China
Prior art keywords
linked list
dma
transmission
configuration information
chain table
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
Application number
CN202310137923.0A
Other languages
English (en)
Inventor
张格毅
袁力
胡扬央
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mouxin Technology Shanghai Co ltd
Original Assignee
Mouxin Technology Shanghai Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mouxin Technology Shanghai Co ltd filed Critical Mouxin Technology Shanghai Co ltd
Priority to CN202310137923.0A priority Critical patent/CN116204466A/zh
Publication of CN116204466A publication Critical patent/CN116204466A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/32Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

本发明公开了DMA链表模式下的数据处理方法、装置及系统,涉及DMA数据处理技术领域。所述方法包括步骤:针对数据搬运任务,获取内存中设置的DMA链表信息和DMA传输配置信息;对前述数据搬运任务对应的多个链表配置链表编号,记录各链表的链表编号和传输配置信息的映射关系,并将所述映射关系存储于DMA内部;在进行DMA链表传输时,记录链表传输笔数,并根据当前待搬运数据所属的链表传输笔数N从DMA内部读取链表编号为N的链表对应的传输配置信息,根据前述传输配置信息发起链表传输。本发明有效降低了链表传输过程中访问DMA外部的存储器的次数,提升了DMA的访问效率,提高了数据传输处理效率。

Description

DMA链表模式下的数据处理方法、装置及系统
技术领域
本发明涉及DMA数据处理技术领域。
背景技术
DMA(Direct Memory Access,直接存储器存取,或称直接内存存取)传输是一种代替处理器完成存储器和外设设备的数据传输的技术,DMA允许例如来自外设设备的数据被转移到存储器而不需要处理器(比如CPU)干预,使得处理器能够并行地执行其它任务,利用DMA传输数据有效提高了处理器的效率。
DMA传输通常可以分为块式DMA传输和链式 DMA传输:块式DMA传输是将多个数据包一次传输从而减少中断处理;链式DMA传输是将不同数据包的传输地址记录在链表中,DMA通过读取链表(linked list)信息进行传输,当该链表表项全部处理完后上报中断。为实现链式DMA传输,需要在DMA链表生成后,在存储器内写入各个链表的信息,所述信息通常包括指向下一个链表信息所在地址的指针、链表是否结束的判断信息、DMA传输配置信息等,所述DMA传输配置信息可以包括本次DMA传输时的源地址、目标地址、要传输的数据量等配置信息。进行链式DMA传输的流程概括如下:首先通过上位机对DMA进行第一次配置并给DMA分配第一个链表的地址信息,配置后DMA进入链表模式;然后,DMA根据分配的第一个链表的地址信息读取存储器相应地址上的数据,获得所述第一个链表的表项信息后,开始进行传输;第一个链表传输完成后,DMA再从存储器读取下一个链表的信息,以此类推,直至读到某一链表信息中的结束信号,将该次传输判定为最后一次传输,该次传输完成后,结束链表模式。
在DMA 的链表模式(简称LLI)下,上位机仅需要对DMA配置一次就可连续的读取存储器中的链表信息并进行自动访问。该模式的优点在于,进入链表模式后不需要上位机对DMA进行配置便可以连续地对不连续的地址进行搬运,且其中每次搬运的数据长度、目的地址、源地址等信息也无需提前统一配置给DMA。如此,在不显著增加DMA所占用资源的前提下,使得DMA可以脱离上位机自动进行工作,减少了DMA对上位机资源的占用。
然而,现有的 DMA链表模式下,每个链表传输结束后DMA还是需要重新访问存储器以获得下一个链表的配置信息(需要传输的多个数据包被分为多个链表,每个链表对应的配置信息均存放在内存中),一方面,造成了时间和存储器资源的浪费;另一方面,如果数据包不连续,链表表项过多时会导致等待链表完成时间的增加,降低了数据传输处理效率。
基于上述缺陷,现有技术也提供了一些改进的DMA传输方案,比如,中国专利申请CN202010076391.0公开了一种环式链表DMA的传输方法,其利用带有传输状态标志位的环式链表,使得DMA控制器可自主从环式链表中循环取走配置信息,并通过传输状态标志位告知CPU传输完成的信息;CPU在处理完传输数据后接着读取下一个链表状态标志位,并根据标志位状态配置新的表项;从而避免了DMA控制器每完成一次传输就上报中断,使得CPU不会频繁被DMA中断所干扰,降低了CPU资源占用。然而,上述方案中需要CPU在内存中设置表项链接地址首尾相连的环式链表并为环式链表的每个表项配置传输状态标志位,在数据传输时DMA控制器需要循环读取每个表项的传输状态标志位的状态以确定是上报DMA中断至CPU还是进行DMA传输,并更改传输状态标志位的状态以和CPU进行信息交互,传输状态标志位的设置、读取和更改操作占用了时间和存储器资源,在一定程度上影响了数据传输效率。
发明内容
本发明的目的在于:克服现有技术的不足,提供了一种DMA链表模式下的数据处理方法、装置及系统。本发明提供的DMA链表模式下的数据处理方法、装置及系统,根据数据搬运任务的DMA链表信息和DMA传输配置信息,将链表的传输配置信息记录为链表数的映射,并将映射关系存储在DMA内部,在进行前述数据搬运任务的DMA链表传输时,直接从DMA内部获取传输链表的传输配置信息,无需反复从内存中读取链表的传输配置信息,有效降低了链表传输过程中访问DMA外部的存储器的次数,提升了DMA的访问效率,提高了数据传输处理效率。
为实现上述目标,本发明提供了如下技术方案:
一种DMA链表模式下的数据处理方法,包括如下步骤:
针对数据搬运任务,获取内存中设置的DMA链表信息和DMA传输配置信息,所述DMA链表被配置为连接多个连续或非连续的待搬运数据,所述DMA传输配置信息用于进行数据搬运控制,所述DMA传输配置信息包括搬运的数据长度信息、源地址信息、目标地址信息和下一链表描述符;
对前述数据搬运任务对应的多个链表配置链表编号,所述链表编号用于指示对应链表在数据搬运任务中为第几笔链表传输,记录各链表的链表编号和传输配置信息的映射关系,并将所述映射关系存储于DMA内部;在进行DMA链表传输时,记录链表传输笔数,并根据当前待搬运数据所属的链表传输笔数N从DMA内部读取链表编号为N的链表对应的传输配置信息,根据前述传输配置信息发起链表传输;所述N为大于等于1的整数。
进一步,获取前述数据搬运任务对应的链表总数M,当前述链表传输笔数N等于前述链表总数M时,停止链表传输,所述M为大于1的整数。
进一步,在对多个链表配置链表编号之前,还包括步骤:
获取前述数据搬运任务对应的链表总数;
判断前述链表总数是否超过预设阈值;
判定链表总数超过预设阈值时,触发压缩链表传输模式;在所述压缩链表传输模式下,DMA模块能够对前述数据搬运任务对应的多个链表配置链表编号,并记录各链表的链表编号和传输配置信息的映射关系后存储于DMA内部,然后进行前述DMA链表传输。
进一步,判定链表总数未超过预设阈值时,触发常规链表传输模式;
在所述常规链表传输模式下,当一笔链表的数据传输完成后,DMA模块根据该笔链表的传输配置信息,从内存中读取下一笔链表的传输配置信息。
进一步,所述预设阈值由系统或用户设置。
进一步,还包括步骤:分析前述数据搬运任务的多个链表的传输配置信息,判断是否包含相同信息或者符合预设规律;
对于包含相同信息或者符合预设规律的多个链表,判定该多个链表具有相关性;
将具有相关性的多个链表配置为一组以形成链表组,对该链表组采用压缩链表传输模式;在所述压缩链表传输模式下,对一个链表组中的各个链表配置链表编号,所述链表编号用于指示对应链表在前述链表组中为第几笔链表传输,记录各链表的链表编号和传输配置信息的映射关系,并将所述映射关系存储于DMA内部;以及,在进行前述链表组的DMA链表传输时,记录链表传输笔数,并根据当前待搬运数据所属的链表传输笔数N1从DMA内部读取链表编号为N1的链表对应的传输配置信息,根据前述传输配置信息发起链表传输;所述N1为大于等于1的整数。
进一步,对于不具有相关性的链表,采用常规链表传输模式;在所述常规链表传输模式下,当一笔链表的数据传输完成后,DMA模块根据该笔链表的传输配置信息,从内存中读取下一笔链表的传输配置信息。
进一步,当一个数据搬运任务包括多个连续的前述链表组时,链表组内采用所述压缩链表传输模式;各个链表组之间采用常规链表传输模式,此时,当一个链表组的最后一笔链表的数据传输完成后,DMA模块根据该笔链表的传输配置信息,从内存中读取下一个链表组的第一笔链表的传输配置信息。
本发明还提供了一种DMA链表模式下的数据处理装置,包括如下结构:
链表信息采集模块,用于针对数据搬运任务,获取内存中设置的DMA链表信息和DMA传输配置信息,所述DMA链表被配置为连接多个连续或非连续的待搬运数据,所述DMA传输配置信息用于进行数据搬运控制,所述DMA传输配置信息包括搬运的数据长度信息、源地址信息、目标地址信息和下一链表描述符;
链表信息压缩模块,用于对前述数据搬运任务对应的多个链表配置链表编号,所述链表编号用于指示对应链表在数据搬运任务中为第几笔链表传输,记录各链表的链表编号和传输配置信息的映射关系,并将所述映射关系存储于DMA内部;
链表传输控制模块,用于在进行DMA链表传输时记录链表传输笔数,并根据当前待搬运数据所属的链表传输笔数N从DMA内部读取链表编号为N的链表对应的传输配置信息,根据前述传输配置信息发起链表传输;所述N为大于等于1的整数。
本发明还提供了一种DMA传输系统,包括中央处理器CPU和DMA控制器;
所述CPU用于在内存中为数据搬运任务设置DMA链表和DMA传输配置信息;
所述DMA控制器用于根据前述的数据处理方法,控制DMA执行基于链表的数据搬运过程。
本发明由于采用以上技术方案,与现有技术相比,作为举例,具有以下的优点和积极效果:DMA链表模式下的数据处理方法、装置及系统,根据数据搬运任务的DMA链表信息和DMA传输配置信息,将链表的传输配置信息记录为链表数的映射,并将映射关系存储在DMA内部,在进行前述数据搬运任务的DMA链表传输时,直接从DMA内部获取传输链表的传输配置信息,无需反复从内存中读取链表的传输配置信息,有效降低了链表传输过程中访问DMA外部的存储器的次数,提升了DMA的访问效率,提高了数据传输处理效率。
附图说明
图1为现有技术中的DMA链表模式的链表连接示意图。
图2为本发明实施例提供的DMA链表模式下的数据处理方法的流程图。
图3为本发明实施例提供的DMA传输系统的结构示意图。
实施方式
以下结合附图和具体实施例对本发明公开的DMA链表模式下的数据处理方法、装置及系统作进一步详细说明。需要说明的是,对于相关领域普通技术人员已知的技术(包括方法和装置)可能不作详细讨论,但在适当情况下,上述已知的技术被视为说明书的一部分。同时,示例性实施例的其它示例可以具有不同的值。本说明书附图中所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定发明可实施的限定条件。
实施例
DMA传输的实质就是将数据从一个地址空间搬运到另一个地址空间,DMA传输配置信息用于进行数据搬运控制,传输配置信息通常包括搬运的数据长度信息(或称数据传输量)、源地址信息、目标地址信息。DMA 链表模式(简称LLI)下,一个链表的传输配置信息还包括下一链表描述符,每个链表对应的配置信息存放在内存中,当一个链表的数据传输完成时,会跳到下一个链表的起始地址,并继续传输数据,直到链表的下一个地址为 0,如此可以将多个链表的数据串联在一起执行,链表连接图参见图1所示。DMA链表支持地址连线和地址不连续的传输。如果 DMA 使能了完成中断,则当 DMA 发送或者接收完成时,进入完成中断。
上述DMA链表模式的链表传输方案下,每个链表传输结束后都需要重新访问内存以获得下一链表的传输配置信息,影响了DMA访问效率。据此,本发明提出了对DMA链表模式下的数据搬运方案的改进。具体的,参见图2所示,为本发明提供的一种DMA链表模式下的数据处理方法,所述方法包括如下步骤。
S100,针对数据搬运任务,获取内存中设置的DMA链表信息和DMA传输配置信息。
所述DMA链表被配置为连接多个连续或非连续的待搬运数据。
所述DMA传输配置信息用于进行数据搬运控制,通常可以包括地址字段、数据传输大小字段或者标志位。所述地址字段包括源地址信息和目标地址信息,源地址信息用于指示DMA搬运数据在物理内存中的源地址或者后续链表的首地址,目标地址信息用于指示数据搬运至物理内存中的目的地址。数据传输大小字段包括数据传输长度信息,用于定义该链表搬运的数据块长度。标志位可以包括中断标志位、结束标志位等,中断标志位用于指示DMA控制器在完成该链表定义的数据搬运后是否上报中断至CPU;结束标志位用于指示当前链表为最后一个链表,执行完毕后结束整个DMA的搬运任务。本实施例中,DMA传输配置信息至少包括搬运的数据长度信息、源地址信息、目标地址信息和下一链表描述符。
对于一个数据搬运任务,可以对应有多个传输链表,每个链表对应的传输配置信息均放在内存中,每笔链表传输完成后,根据该链表内配置好的下一链表地址从内存中读取下一链表的传输配置信息。
S200,对前述数据搬运任务对应的多个链表配置链表编号,记录各链表的链表编号和传输配置信息的映射关系,并将所述映射关系存储于DMA内部;在进行DMA链表传输时,记录链表传输笔数,并根据当前待搬运数据所属的链表传输笔数N从DMA内部读取链表编号为N的链表对应的传输配置信息,根据前述传输配置信息发起链表传输。
其中,所述链表编号用于指示对应链表在数据搬运任务中为第几笔链表传输。所述N为大于等于1的整数。
本实施例中,获取前述数据搬运任务对应的链表总数M,当前述链表传输笔数N等于前述链表总数M时,停止链表传输,所述M为大于1的整数。
作为典型方式的举例而非限制,比如某个数据搬运任务,需要用链表传输,每个传输链表的数据长度为 X Bytes(字节),一共需要进行M笔链表传输(即链表总数为M,M为大于1的整数)。链表传输的源地址(SRC地址)被配置为src_addr0,src_addr1,src_addr2,……,src_addrn,地址偏移量为offset_src,n为正整数,src_addrn表示第n个源地址;目标地址(DST地址)被配置为dst_addr0,dst_addr1,dst_addr2,……,dst_addrn,地址偏移量为offset_dst,n为正整数,dst_addrn表示第n个目的地址。源地址和目标地址满足如下关系:
src_addrn-src_addr(n-1)=offset_src;
dst_addrn-dst_addr(n-1)=offset_dst。
利用本发明提供的上述方案,将链表传输配置信息与链表编号进行映射后,将映射关系存储在DMA内部。具体的,对于其中的第N笔链表传输,N=1,2,……,M,记录的映射关系如下:
src_addrn=offset_src*N+src_addr0
dst_addrn=offset_dst*N+dst_addr0
if N=M
link_listen=0
其中,link_listen表示链表的下一个地址值,当link_listen等于0时,DMA停止链表传输。
更新配置文件:
cfgn=cfg(n-1)
其中,cfgn表示第n个配置文件,cfg(n-1)表示第n-1个配置文件。
上述映射信息存储在DMA内部后,在进行链表传输时,DMA通过当前的传输笔数N直接获取相应链表的传输配置信息,根据获取的传输配置信息发起链表传输,如此,不需要再访问DMA外部的存储器(前述内存)便可获得传输链表的配置信息,提高了DMA的访问效率。
本实施例的另一实施方式中,还设置有压缩链表传输模式和常规链表传输模式。
此时,在对多个链表配置链表编号之前,还可以包括步骤:获取前述数据搬运任务对应的链表总数;判断前述链表总数是否超过预设阈值;判定链表总数超过预设阈值时,触发压缩链表传输模式;在所述压缩链表传输模式下,DMA模块能够对前述数据搬运任务对应的多个链表配置链表编号,并记录各链表的链表编号和传输配置信息的映射关系后存储于DMA内部,然后进行前述DMA链表传输。而在判定链表总数未超过预设阈值时,触发常规链表传输模式。
在所述常规链表传输模式下,当一笔链表的数据传输完成后,DMA模块根据该笔链表的传输配置信息,从内存中读取下一笔链表的传输配置信息,属于现有技术,在此不再赘述。
具体的,所述预设阈值可以由系统或用户设置。也就是说,只有当数据搬运任务对应的链表数量超过一定数量时,才触发所述压缩链表传输模式下,执行步骤S200的链表处理步骤;否则采用常规链表传输模式进行链表传输。
本实施例的另一实施方式中,还可以根据数据搬运中各链表的传输配置信息的类似性或规律性来决定是否采用压缩链表传输模式。
具体的,可以包括如下步骤:分析前述数据搬运任务的多个链表的传输配置信息,判断是否包含相同信息或者符合预设规律;对于包含相同信息或者符合预设规律的多个链表,判定该多个链表具有相关性;将具有相关性的多个链表配置为一组以形成链表组,对该链表组采用压缩链表传输模式。所述包含相同信息,作为举例,比如搬运的数据长度相同;所述符合预设规律,作为举例,比如目的地址和源地址具有相同的规律。
在所述压缩链表传输模式下,对一个链表组中的各个链表配置链表编号,所述链表编号用于指示对应链表在前述链表组中为第几笔链表传输,记录各链表的链表编号和传输配置信息的映射关系,并将所述映射关系存储于DMA内部;以及,在进行前述链表组的DMA链表传输时,记录链表传输笔数,并根据当前待搬运数据所属的链表传输笔数N1从DMA内部读取链表编号为N1的链表对应的传输配置信息,根据前述传输配置信息发起链表传输;所述N1为大于等于1的整数。
对于不具有相关性的链表,则采用常规链表传输模式。在所述常规链表传输模式下,当一笔链表的数据传输完成后,DMA模块根据该笔链表的传输配置信息,从内存中读取下一笔链表的传输配置信息。
进一步优选的,当一个数据搬运任务包括多个连续的前述链表组时,链表组内采用所述压缩链表传输模式。而各个链表组之间采用常规链表传输模式,此时,当一个链表组的最后一笔链表的数据传输完成后,DMA模块根据该笔链表的传输配置信息,从内存中读取下一个链表组的第一笔链表的传输配置信息。
本实施例提供的上述技术方案,通过在DMA内部记录链表的传输配置信息与链表编号的映射关系,并通过该映射关系获得不同次链表传输时需要的传输配置信息,以对DMA进行配置,完成链表传输,有效降低了向外部存储器读取链表传输配置信息的次数,从而提高了访问效率。
本发明的另一实施例,还提供了一种DMA链表模式下的数据处理装置。
所述数据处理装置包括链表信息采集模块,链表信息压缩模块和链表传输控制模块。
所述链表信息采集模块,用于针对数据搬运任务,获取内存中设置的DMA链表信息和DMA传输配置信息。所述DMA链表被配置为连接多个连续或非连续的待搬运数据,所述DMA传输配置信息用于进行数据搬运控制,所述DMA传输配置信息包括搬运的数据长度信息、源地址信息、目标地址信息和下一链表描述符。
所述链表信息压缩模块,用于对前述数据搬运任务对应的多个链表配置链表编号,所述链表编号用于指示对应链表在数据搬运任务中为第几笔链表传输,记录各链表的链表编号和传输配置信息的映射关系,并将所述映射关系存储于DMA内部。
所述链表传输控制模块,用于在进行DMA链表传输时记录链表传输笔数,并根据当前待搬运数据所属的链表传输笔数N从DMA内部读取链表编号为N的链表对应的传输配置信息,根据前述传输配置信息发起链表传输;所述N为大于等于1的整数。
本实施例中,所述链表传输控制模块还被配置为:获取前述数据搬运任务对应的链表总数M,当前述链表传输笔数N等于前述链表总数M时,停止链表传输,所述M为大于1的整数。
优选的,还可以包括链表传输模式选择模块。
所述链表传输模式选择模块被配置为:获取前述数据搬运任务对应的链表数量;判断前述链表数量是否超过预设阈值;判定链表数量超过预设阈值时,触发该数据搬运任务的压缩链表传输指令,并将压缩链表传输指令和对应的数据搬运任务标识信息发送至链表信息压缩模块和链表传输控制模块;判定链表数量未超过预设阈值时,触发常规链表传输指令,并将常规链表传输指令直接发送至链表传输控制模块。
所述链表信息压缩模块,在接收到压缩链表传输指令和对应的数据搬运任务标识信息时,控制DMA模块对前述数据搬运任务对应的多个链表配置链表编号,并记录各链表的链表编号和传输配置信息的映射关系后存储于DMA内部。在DMA内部,还记录有该映射关系对应的数据搬运任务标识。
所述链表传输控制模块根据接收到的压缩链表传输指令和对应的数据搬运任务标识信息,在进行该数据搬运任务的DMA链表传输时,记录链表传输笔数,并根据当前待搬运数据所属的链表传输笔数N,从DMA内部读取该数据搬运任务的映射关系(通过对应的数据搬运任务标识读取),获取链表编号为N的链表对应的传输配置信息后,根据前述传输配置信息发起链表传输。
所述链表传输控制模块,在接收到常规链表传输指令时,选择常规链表传输模式。在所述常规链表传输模式下,当一笔链表的数据传输完成后,DMA模块根据该笔链表的传输配置信息,从内存中读取下一笔链表的传输配置信息。
优选的,所述链表传输模式选择模块被配置为:分析前述数据搬运任务的多个链表的传输配置信息,判断是否包含相同信息或者符合预设规律;对于包含相同信息或者符合预设规律的多个链表,判定该多个链表具有相关性;将具有相关性的多个链表配置为一组以形成链表组,对该链表组触发压缩链表传输指令,并将压缩链表传输指令、对应的数据搬运任务标识和链表组标识信息发送至链表信息压缩模块和链表传输控制模块;对于不具有相关性的链表,触发常规链表传输指令,并将常规链表传输指令直接发送至链表传输控制模块。
所述链表信息压缩模块,对前述链表组中的各个链表配置链表编号,所述链表编号用于指示对应链表在前述链表组中为第几笔链表传输,记录各链表的链表编号和传输配置信息的映射关系,并将所述映射关系存储于DMA内部。在DMA内部,还记录有该映射关系对应的数据搬运任务标识和链表组标识。
所述链表传输控制模块,在进行前述链表组的DMA链表传输时,记录链表传输笔数,并根据当前待搬运数据所属的链表传输笔数N1,从DMA内部读取该链表组的映射关系(通过对应的数据搬运任务标识和链表组标识读取),获取链表编号为N1的链表对应的传输配置信息后,根据前述传输配置信息发起链表传输。所述N1为大于等于1的整数。
进一步,当一个数据搬运任务包括多个连续的前述链表组时,链表组内采用所述压缩链表传输模式;各个链表组之间采用常规链表传输模式,此时,当一个链表组的最后一笔链表的数据传输完成后,DMA模块根据该笔链表的传输配置信息,从内存中读取下一个链表组的第一笔链表的传输配置信息。
其它技术特征参见在前实施例的描述,在此不再赘述。
参见图3所示,为本发明提供的一种DMA传输系统,包括中央处理器CPU和DMA控制器。
所述CPU用于在内存中为数据搬运任务设置DMA链表和DMA传输配置信息。
所述DMA控制器用于控制DMA执行基于链表的数据搬运过程。
具体的,所述DMA控制器可以包括一数据处理装置,所述数据处理装置包括链表信息采集模块,链表信息压缩模块和链表传输控制模块。
所述链表信息采集模块,用于针对数据搬运任务,获取内存中设置的DMA链表信息和DMA传输配置信息。所述DMA链表被配置为连接多个连续或非连续的待搬运数据,所述DMA传输配置信息用于进行数据搬运控制,所述DMA传输配置信息包括搬运的数据长度信息、源地址信息、目标地址信息和下一链表描述符。
所述链表信息压缩模块,用于对前述数据搬运任务对应的多个链表配置链表编号,所述链表编号用于指示对应链表在数据搬运任务中为第几笔链表传输,记录各链表的链表编号和传输配置信息的映射关系,并将所述映射关系存储于DMA内部。
所述链表传输控制模块,用于在进行DMA链表传输时记录链表传输笔数,并根据当前待搬运数据所属的链表传输笔数N从DMA内部读取链表编号为N的链表对应的传输配置信息,根据前述传输配置信息发起链表传输;所述N为大于等于1的整数。
其它技术特征参见在前实施例的描述,在此不再赘述。
在上面的描述中,本发明的公开内容并不旨在将其自身限于这些方面。而是,在本公开内容的目标保护范围内,各组件可以以任意数目选择性地且操作性地进行合并。另外,像“包括”、“囊括”以及“具有”的术语应当默认被解释为包括性的或开放性的,而不是排他性的或封闭性,除非其被明确限定为相反的含义。所有技术、科技或其他方面的术语都符合本领域技术人员所理解的含义,除非其被限定为相反的含义。在词典里找到的公共术语应当在相关技术文档的背景下不被太理想化或太不实际地解释,除非本公开内容明确将其限定成那样。本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。

Claims (10)

1.一种DMA链表模式下的数据处理方法,其特征在于包括步骤:
针对数据搬运任务,获取内存中设置的DMA链表信息和DMA传输配置信息,所述DMA链表被配置为连接多个连续或非连续的待搬运数据,所述DMA传输配置信息用于进行数据搬运控制,所述DMA传输配置信息包括搬运的数据长度信息、源地址信息、目标地址信息和下一链表描述符;
对前述数据搬运任务对应的多个链表配置链表编号,所述链表编号用于指示对应链表在数据搬运任务中为第几笔链表传输,记录各链表的链表编号和传输配置信息的映射关系,并将所述映射关系存储于DMA内部;在进行DMA链表传输时,记录链表传输笔数,并根据当前待搬运数据所属的链表传输笔数N从DMA内部读取链表编号为N的链表对应的传输配置信息,根据前述传输配置信息发起链表传输;所述N为大于等于1的整数。
2.根据权利要求1所述的方法,其特征在于:获取前述数据搬运任务对应的链表总数M,当前述链表传输笔数N等于前述链表总数M时,停止链表传输,所述M为大于1的整数。
3.根据权利要求1所述的方法,其特征在于,在对多个链表配置链表编号之前,还包括步骤:
获取前述数据搬运任务对应的链表总数;
判断前述链表总数是否超过预设阈值;
判定链表总数超过预设阈值时,触发压缩链表传输模式;在所述压缩链表传输模式下,DMA模块能够对前述数据搬运任务对应的多个链表配置链表编号,并记录各链表的链表编号和传输配置信息的映射关系后存储于DMA内部,然后进行前述DMA链表传输。
4.根据权利要求3所述的方法,其特征在于:判定链表总数未超过预设阈值时,触发常规链表传输模式;
在所述常规链表传输模式下,当一笔链表的数据传输完成后,DMA模块根据该笔链表的传输配置信息,从内存中读取下一笔链表的传输配置信息。
5.根据权利要求4所述的方法,其特征在于:所述预设阈值由系统或用户设置。
6.根据权利要求1所述的方法,其特征在于,还包括步骤:分析前述数据搬运任务的多个链表的传输配置信息,判断是否包含相同信息或者符合预设规律;
对于包含相同信息或者符合预设规律的多个链表,判定该多个链表具有相关性;
将具有相关性的多个链表配置为一组以形成链表组,对该链表组采用压缩链表传输模式;在所述压缩链表传输模式下,对一个链表组中的各个链表配置链表编号,所述链表编号用于指示对应链表在前述链表组中为第几笔链表传输,记录各链表的链表编号和传输配置信息的映射关系,并将所述映射关系存储于DMA内部;以及,在进行前述链表组的DMA链表传输时,记录链表传输笔数,并根据当前待搬运数据所属的链表传输笔数N1从DMA内部读取链表编号为N1的链表对应的传输配置信息,根据前述传输配置信息发起链表传输;所述N1为大于等于1的整数。
7.根据权利要求6所述的方法,其特征在于:对于不具有相关性的链表,采用常规链表传输模式;在所述常规链表传输模式下,当一笔链表的数据传输完成后,DMA模块根据该笔链表的传输配置信息,从内存中读取下一笔链表的传输配置信息。
8.根据权利要求6所述的方法,其特征在于:当一个数据搬运任务包括多个连续的前述链表组时,链表组内采用所述压缩链表传输模式;各个链表组之间采用常规链表传输模式,此时,当一个链表组的最后一笔链表的数据传输完成后,DMA模块根据该笔链表的传输配置信息,从内存中读取下一个链表组的第一笔链表的传输配置信息。
9.一种DMA链表模式下的数据处理装置,其特征在于包括如下结构:
链表信息采集模块,用于针对数据搬运任务,获取内存中设置的DMA链表信息和DMA传输配置信息,所述DMA链表被配置为连接多个连续或非连续的待搬运数据,所述DMA传输配置信息用于进行数据搬运控制,所述DMA传输配置信息包括搬运的数据长度信息、源地址信息、目标地址信息和下一链表描述符;
链表信息压缩模块,用于对前述数据搬运任务对应的多个链表配置链表编号,所述链表编号用于指示对应链表在数据搬运任务中为第几笔链表传输,记录各链表的链表编号和传输配置信息的映射关系,并将所述映射关系存储于DMA内部;
链表传输控制模块,用于在进行DMA链表传输时记录链表传输笔数,并根据当前待搬运数据所属的链表传输笔数N从DMA内部读取链表编号为N的链表对应的传输配置信息,根据前述传输配置信息发起链表传输;所述N为大于等于1的整数。
10.一种DMA传输系统,包括中央处理器CPU和DMA控制器,其特征在于:
所述CPU用于在内存中为数据搬运任务设置DMA链表和DMA传输配置信息;
所述DMA控制器用于根据权利要求1-8中任一项所述的方法,控制DMA执行基于链表的数据搬运过程。
CN202310137923.0A 2023-02-20 2023-02-20 Dma链表模式下的数据处理方法、装置及系统 Pending CN116204466A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310137923.0A CN116204466A (zh) 2023-02-20 2023-02-20 Dma链表模式下的数据处理方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310137923.0A CN116204466A (zh) 2023-02-20 2023-02-20 Dma链表模式下的数据处理方法、装置及系统

Publications (1)

Publication Number Publication Date
CN116204466A true CN116204466A (zh) 2023-06-02

Family

ID=86508999

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310137923.0A Pending CN116204466A (zh) 2023-02-20 2023-02-20 Dma链表模式下的数据处理方法、装置及系统

Country Status (1)

Country Link
CN (1) CN116204466A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116719764A (zh) * 2023-08-07 2023-09-08 苏州仰思坪半导体有限公司 数据同步方法、系统以及相关装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116719764A (zh) * 2023-08-07 2023-09-08 苏州仰思坪半导体有限公司 数据同步方法、系统以及相关装置
CN116719764B (zh) * 2023-08-07 2023-12-01 苏州仰思坪半导体有限公司 数据同步方法、系统以及相关装置

Similar Documents

Publication Publication Date Title
US5251303A (en) System for DMA block data transfer based on linked control blocks
CN100495374C (zh) 可支持多个内部通道软件请求的直接存储器存取控制器
US9395921B2 (en) Writing data using DMA by specifying a buffer address and a flash memory address
US20080162860A1 (en) Dynamic allocation of message buffers
KR20100138940A (ko) 가상 메모리 인터페이스
US5933654A (en) Dynamic buffer fracturing by a DMA controller
US20020041520A1 (en) Scratchpad memory
US7443885B2 (en) CAN device featuring advanced can filtering and message acceptance
TW200406680A (en) Method, system, and program for handling input/output commands
JP2012523619A (ja) データストレージデバイスのコマンド及び割り込みのグループ化
JP2007233522A (ja) Dmaデータ転送装置及びdmaデータ転送方法
WO2002079971A1 (en) Programmable cpu/interface buffer structure using dual port ram
US10049035B1 (en) Stream memory management unit (SMMU)
CN116204466A (zh) Dma链表模式下的数据处理方法、装置及系统
TWI715248B (zh) 主機輸出入命令的執行裝置及方法及電腦程式產品
JP2011243142A (ja) 通信制御装置、データ通信方法及びプログラム
CN113590512A (zh) 可直连外设设备的自启动dma装置及应用
US6604156B1 (en) Message buffer full handling in a CAN device that employs reconfigurable message buffers
KR100560277B1 (ko) 메모리로의 액세스의 수를 감소시키는 방법 및 시스템 및 기록 매체
CN104394099A (zh) 一种报文传输方法及装置
US11176064B2 (en) Methods and apparatus for reduced overhead data transfer with a shared ring buffer
CN109144742B (zh) 通过队列交换信息的方法和处理队列的系统
US20030200374A1 (en) Microcomputer system having upper bus and lower bus and controlling data access in network
US5963720A (en) Method and system for expediting transfer of data over a network using an additional field
CN101047721B (zh) 采用dma控制器进行数据过滤处理的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination