CN117807001B - 一种基于dma/直接内存访问的任务处理方法及装置 - Google Patents
一种基于dma/直接内存访问的任务处理方法及装置 Download PDFInfo
- Publication number
- CN117807001B CN117807001B CN202410223668.6A CN202410223668A CN117807001B CN 117807001 B CN117807001 B CN 117807001B CN 202410223668 A CN202410223668 A CN 202410223668A CN 117807001 B CN117807001 B CN 117807001B
- Authority
- CN
- China
- Prior art keywords
- task
- length value
- data
- alignment
- target data
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 24
- 230000005540 biological transmission Effects 0.000 claims abstract description 232
- 238000012545 processing Methods 0.000 claims abstract description 54
- 238000000034 method Methods 0.000 claims abstract description 36
- 238000004590 computer program Methods 0.000 claims description 16
- 238000012546 transfer Methods 0.000 claims description 13
- 238000003860 storage Methods 0.000 claims description 6
- 230000006870 function Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 238000004364 calculation method Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000005111 flow chemistry technique Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
- G06F13/282—Cycle stealing DMA
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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/直接内存访问的任务处理方法及装置,涉及数据传输技术领域,通过确定任务的任务类型;并在任务的任务类型为对齐任务时根据最大单次数据传输长度值对对齐任务进行拆分来得到多个子任务;而在任务的任务类型为非对齐任务时则根据最大单次数据传输长度值与高级可扩展接口数据位宽中的剩余空间数据长度值对非对齐任务进行拆分来得到多个子任务;进而通过多个子任务,对待通过任务进行数据传输的目标数据进行传输处理的方式,实现了根据系统场景以及任务类型动态的进行拆分,降低单个任务所占用的系统总线时间,提升系统的工作效率。
Description
技术领域
本发明涉及数据传输技术领域,特别是涉及一种基于DMA/直接内存访问的任务处理方法及装置。
背景技术
随着信息技术的高速发展,人们对数据处理技术的需求不断增强,同时也产生了一系列加速数据处理的方法,其中DMA(Direct Memory Access,直接内存访问)技术就是其中一种,为了能让CPU(Central Processing Unit,中央处理器)能快速高效的工作,对于一些数据的搬移传输工作往往交由DMA来完成,不再需要CPU自身去把数据从外部磁盘或设备读入内部然后再写出到外部设备,从而把CPU从效率低下的耗时操作中解放出来,去执行真正有意义的工作,能够大幅提高CPU处理请求和任务的能力。
一般的DMA搬移流程是根据主机的配置信息去搬移数据;DMA内部则完全根据主机配置的信息(如源地址、目的地址、搬移长度等)执行数据搬移任务,然而在需要搬移的任务数据过大时,该任务会长时间占用系统总线,使得在SOC(System on a Chip,系统级芯片)芯片系统中,将会长时间阻碍重要模块的任务访问需求,从而极大的降低整个系统的运行效率。
发明内容
鉴于上述问题,提出了以便提供克服上述问题或者至少部分地解决上述问题的一种基于DMA/直接内存访问的任务处理方法及装置,包括:
一种基于DMA/直接内存访问的任务处理方法,所述方法包括:
确定所述任务的任务类型,其中,所述任务用于对目标数据进行传输处理,所述任务的任务类型至少包括对齐任务与非对齐任务;
在所述任务的任务类型为对齐任务时,确定所述对齐任务的最大单次数据传输长度值,并根据所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个子任务;
在所述任务的任务类型为非对齐任务时,确定所述非对齐任务的最大单次数据传输长度值与高级可扩展接口数据位宽中的剩余空间数据长度值,并根据所述最大单次数据传输长度值与所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个子任务;
通过所述多个子任务,对所述目标数据进行传输处理。
可选的,所述确定所述任务的任务类型,包括:
确定所述目标数据的目标数据长度值与所述任务的传输数据地址;
根据所述高级可扩展接口数据位宽、所述任务的传输数据地址以及所述目标数据长度值,确定所述任务的任务类型。
可选的,所述根据所述高级可扩展接口数据位宽、所述任务的传输数据地址以及所述目标数据长度值,确定所述任务的任务类型,包括:
根据所述高级可扩展接口数据位宽,确定数据对齐长度值;
在所述任务的传输数据地址与所述数据对齐长度值相对齐且所述目标数据长度值为所述数据对齐长度值的整数倍时,将所述任务确定为对齐任务;
在所述任务的传输数据地址不与所述数据对齐长度值相对齐且所述目标数据长度值不为所述数据对齐长度值的整数倍时,将所述任务确定为非对齐任务。
可选的,在所述根据所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个子任务之前,还包括:
判断所述目标数据长度值是否小于或等于所述最大单次数据传输长度值;
在所述目标数据长度值小于或等于所述最大单次数据传输长度值时,直接通过所述任务对所述目标数据进行传输处理;
在所述目标数据长度值大于所述最大单次数据传输长度值时,执行根据所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个子任务。
可选的,所述根据所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个子任务,包括:
在所述目标数据长度值大于所述最大单次数据传输长度值时,按照所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个所述子任务。
可选的,所述在所述目标数据长度值大于所述最大单次数据传输长度值时,按照所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个所述子任务,包括:
在所述目标数据长度值大于所述最大单次数据传输长度值时,按照所述最大单次数据传输长度值在所述对齐任务中拆分出第一子任务。
可选的,还包括:
获取所述目标数据的剩余目标数据长度值;
在所述剩余目标数据长度值小于或等于所述最大单次数据传输长度值时,按照所述剩余目标数据长度值确定第二子任务;
将所述第一子任务与所述第二子任务确定为所述多个所述子任务;
在所述剩余目标数据长度值大于所述最大单次数据传输长度值时,则按照所述最大单次数据传输长度值确定所述多个所述子任务。
可选的,所述根据所述最大单次数据传输长度值与所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个子任务之前,还包括:
判断所述目标数据长度值是否小于或等于所述高级可扩展接口数据位宽中的剩余空间数据长度值;
在所述目标数据长度值小于或等于所述高级可扩展接口数据位宽中的剩余空间数据长度值时,直接通过所述任务对所述目标数据进行传输处理;
在所述目标数据长度值大于所述高级可扩展接口数据位宽中的剩余空间数据长度值时,执行根据所述最大单次数据传输长度值与所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个子任务。
可选的,所述根据所述最大单次数据传输长度值与所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个子任务,包括:
在所述目标数据长度值大于所述高级可扩展接口数据位宽中的剩余空间数据长度值时,按照所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个所述子任务。
可选的,所述在所述目标数据长度值大于所述高级可扩展接口数据位宽中的剩余空间数据长度值时,按照所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个所述子任务,包括:
在所述目标数据长度值大于所述高级可扩展接口数据位宽中的剩余空间数据长度值时,按照所述最大单次数据传输长度值在所述非对齐任务中拆分出第一子任务。
可选的,还包括:
获取所述目标数据的剩余目标数据长度值;
在所述剩余目标数据长度值小于所述数据对齐长度值时,直接按照所述剩余目标数据长度值确定第二子任务;并将所述第一子任务与所述第二子任务确定为所述多个所述子任务;
在所述剩余目标数据长度值大于所述最大单次数据传输长度值时,按照所述最大单次数据传输长度值确定所述多个所述子任务。
可选的,所述方法还包括:
在所述剩余目标数据长度值大于所述数据对齐长度值且小于或等于所述最大单次数据传输长度值时,根据所述剩余目标数据长度值与所述数据对齐长度值的差值确定所述第二子任务。
一种基于DMA/直接内存访问的任务处理装置,其特征在于,所述装置包括:
任务类型确定模块,用于确定所述任务的任务类型,其中,所述任务用于对目标数据进行传输处理,所述任务的任务类型至少包括对齐任务与非对齐任务;
对齐任务拆分模块,用于在所述任务的任务类型为对齐任务时,确定所述对齐任务的最大单次数据传输长度值,并根据所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个子任务;
非对齐任务拆分模块,用于在所述任务的任务类型为非对齐任务时,确定所述非对齐任务的最大单次数据传输长度值与高级可扩展接口数据位宽中的剩余空间数据长度值,并根据所述最大单次数据传输长度值与所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个子任务;
目标数据传输模块,用于通过所述多个子任务,对所述目标数据进行传输处理。
一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的基于DMA/直接内存访问的任务处理方法。
一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的基于DMA/直接内存访问的任务处理方法。
本发明实施例具有以下优点:
在本发明实施例中,通过确定任务的任务类型且任务的任务类型至少包括对齐任务与非对齐任务;并在任务的任务类型为对齐任务时,确定对齐任务的最大单次数据传输长度值,并根据最大单次数据传输长度值对对齐任务进行拆分来得到多个子任务;而在任务的任务类型为非对齐任务时,则确定非对齐任务的最大单次数据传输长度值与高级可扩展接口数据位宽中的剩余空间数据长度值,并根据最大单次数据传输长度值与高级可扩展接口数据位宽中的剩余空间数据长度值对非对齐任务进行拆分来得到多个子任务;进而通过多个子任务,对目标数据进行传输处理的方式,实现了根据系统场景以及任务的任务类型动态的对任务进行拆分,进而动态调节任务数据的长度值,降低了单个任务所占用的系统总线时间,从而在系统总线带宽比较紧张的情况下,可以提供给重要模块更多的总线访问机会,能更好的提升整个SOC的整体性能与工作效率;还能够高效的对对齐任务和非对齐任务进行针对处理,不但能够处理任意数据包,丰富产品的应用场景,还兼具高兼容性特点,可以处理各种乱序数据。
附图说明
为了更清楚地说明本发明的技术方案,下面将对本发明的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的相关技术中DMA流处理流程示意图;
图2是本发明一实施例提供的一种基于DMA/直接内存访问的任务处理方法的步骤流程图;
图3是本发明一实施例提供的数据对齐任务拆分转换工作数据流图;
图4是本发明一实施例提供的非数据对齐任务拆分转换工作数据流图;
图5是本发明一实施例提供的DMA流处理流程示意图;
图6是本发明一实施例提供的DMA切片任务处理装置硬件框图;
图7是本发明一实施例提供的一种基于DMA/直接内存访问的任务处理装置的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
相关技术中的DMA搬移流程是根据主机的配置信息去搬移数据;DMA内部则完全根据主机配置的信息(如源地址、目的地址、搬移长度等)执行数据搬移任务,然而在需要搬移的任务数据过大时,该任务会长时间占用系统总线,使得在SOC芯片系统中,将会长时间阻碍重要模块的任务访问需求,从而极大的降低整个系统的运行效率;例如,如图1所示为本发明提供的相关技术中DMA流处理流程示意图;图中横坐标为时间,纵坐标为硬件资源,纵轴自上而下分别表示主机任务输入、直接内存访问任务处理、每笔任务占用总线时间以及任务响应输出流程;
由图中内容可知,主机将搬源地址、目的地址以及搬移长度配置信息发送给DMA之后,DMA内部将完全根据主机端的任务信息进行处理,而不做任何拆分处理,假设任务1(搬移数据量为3kb的任务)的处理占用总线时间为1T,任务2(搬移数据量为4kb的任务)的处理占用总线时间为1.5T;可以看到当任务数据越大时,其占用系统总线的时间就越长,使得在SOC芯片系统中长时间阻碍更重要模块的任务访问,进而导致极大的降低整个系统的运行效率。
而本发明实施例中,基于直接内存访问任务的任务类型来对直接内存访问任务进行拆分的核心技术构思对相关技术中基于DMA/直接内存访问的任务处理方法进行了改进,以下将结合附图对本发明进行详细地说明:
参照图2,示出了本发明一实施例提供的一种基于DMA/直接内存访问的任务处理方法的步骤流程图,具体可以包括如下步骤:
步骤201,确定所述任务的任务类型,其中,所述任务用于对目标数据进行传输处理,所述任务的任务类型至少包括对齐任务与非对齐任务;
在具体实现中,可以将需要通过DMA进行搬移传输的相关数据称为所述目标数据,进一步的,为了便于理解和说明,也可以将所述任务直接称为直接内存访问任务,具体的,可以先确认所述直接内存访问任务为写入类型任务还是读取类型任务,以便将所述直接内存访问任务交由系统中的写入模块或者读取模块来进行相应处理,进一步的,可以确定所述直接内存访问任务为对齐任务还是非对齐任务,具体而言,可以确定待通过所述直接内存访问任务进行数据传输的目标数据的目标数据长度值与所述直接内存访问任务的传输数据地址,并获取高级可扩展接口(AXI,Advanced eXtensible Interface)数据位宽,进而获取数据对齐长度值(也可称为AXI数据块的宽度,例如AXI数据位宽为512bit(比特)时,AXI数据块的宽度则为64byte(字节)),可以将传输数据地址与所述数据对齐长度值相对齐且所述目标数据长度值为所述数据对齐长度值的整数倍的所述直接内存访问任务判定为对齐任务;并将传输数据地址不与所述数据对齐长度值相对齐且/或所述目标数据长度值不为所述数据对齐长度值的整数倍的所述直接内存访问任务判定为非对齐任务。
在本发明一实施例中,所述确定所述任务的任务类型,包括:
确定所述目标数据的目标数据长度值与所述任务的传输数据地址;
根据所述高级可扩展接口数据位宽、所述任务的传输数据地址以及所述目标数据长度值,确定所述任务的任务类型。
在实际应用中,可以先确定出待通过所述直接内存访问任务进行数据传输的目标数据的目标数据长度值(即所述直接内存访问任务所传输的数据大小)以及直接内存访问任务的传输数据地址,进而根据所述高级可扩展接口数据位宽、所述直接内存访问任务的传输数据地址以及所述目标数据长度值确定直接内存访问任务的任务类型;具体而言,可以获取与高级可扩展接口数据位宽相对应的数据对齐长度值,将传输数据地址与所述数据对齐长度值相对齐且所述目标数据长度值为所述数据对齐长度值的整数倍的所述直接内存访问任务判定为对齐任务;并将传输数据地址不与所述数据对齐长度值相对齐且/或所述目标数据长度值不为所述数据对齐长度值的整数倍的所述直接内存访问任务判定为非对齐任务,从而提高直接内存访问任务处理的灵活性和效率,并能够通过区分对齐与非对齐任务来优化数据传输和处理的后续策略。
在本发明一实施例中,所述根据所述高级可扩展接口数据位宽、所述任务的传输数据地址以及所述目标数据长度值,确定所述任务的任务类型,包括:
根据所述高级可扩展接口数据位宽,确定数据对齐长度值;
在所述任务的传输数据地址与所述数据对齐长度值相对齐且所述目标数据长度值为所述数据对齐长度值的整数倍时,将所述任务确定为对齐任务;
在所述任务的传输数据地址不与所述数据对齐长度值相对齐且所述目标数据长度值不为所述数据对齐长度值的整数倍时,将所述任务确定为非对齐任务。
在具体实现中,可以获取高级可扩展接口数据位宽,进而获取数据对齐长度值,可以将传输数据地址与所述数据对齐长度值相对齐且所述目标数据长度值为所述数据对齐长度值的整数倍的所述直接内存访问任务判定为对齐任务;并将传输数据地址不与所述数据对齐长度值相对齐且/或所述目标数据长度值不为所述数据对齐长度值的整数倍的所述直接内存访问任务判定为非对齐任务;例如AXI数据位宽为512bit时,数据对齐长度值则为64byte,便可以将传输数据地址是64byte对齐且传输数据长度为64byte的整数倍的任务确定为对齐任务,并可以将传输数据地址不是64byte对齐且/或传输数据长度不是64byte整数倍的任务确定为非对齐任务,从而确保了高效且精确地分类对齐与非对齐任务,并通过基于地址对齐和数据长度对齐的整数倍进行判定的方式,降低了数据处理的复杂度并提升了传输效率。
步骤202,在所述任务的任务类型为对齐任务时,确定所述对齐任务的最大单次数据传输长度值,并根据所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个子任务;
在实际应用中,如图3所示为本发明一实施例提供的数据对齐任务拆分转换工作数据流图,图中从左到右的内容依次为:主机端任务(以4千字节对齐数据搬移任务为例)、DMA切片处理AXI命令任务(以拆分为1千字节颗粒度任务为例)和AXI数据位有效指示标志示意;以数据量为4KB、最大任务颗粒度(即最大单次数据传输长度值)1KB、AXI数据位宽为512bit的直接内存访问任务进行举例说明,在DMA切片中会将4KB数据任务拆分成四个任务,每个任务均由16个AXI数据块组成(其中每个数据块宽度为64byte),并生成AXI只执行的源地址、目的地址、AXI操作长度和AXI有效标志;因其为对齐任务,可知其中每个AXI数据块内的byte有效标志为全有效,即可表示为:64’HFFFFFFFF_FFFFFFFF。
由图3可知,对于对齐任务,如图3中右侧有效标志所示,图中数据块内白色背景即代表有效区域,可以看出四个拆分任务中的每个AXI数据块的有效标志均为一致且为全有效;而DMA任务要实现具体的AXI操作的关键在于处理主机地址和AXI地址的转换、length(长度,以byte为单位)和AXI length(AXI长度,以AXI数据块宽度64byte为单位)的确认以及AXI数据块有效指示位信息的生成;具体的,可以先确定所述对齐任务的最大单次数据传输长度值,并根据所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个子直接内存访问任务(即所述子任务)。
在本发明一实施例中,在所述根据所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个子任务之前,还包括:
判断所述目标数据长度值是否小于或等于所述最大单次数据传输长度值;
在所述目标数据长度值小于或等于所述最大单次数据传输长度值时,直接通过所述任务对所述目标数据进行传输处理;
在所述目标数据长度值大于所述最大单次数据传输长度值时,执行根据所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个子任务。
在具体实现中,可以将最大单次数据传输长度值定义为dma_split_len_ctrl_size_s,将目标数据长度值(即以byte为单位主机命令的dma length大小,也可认为是dma任务拆分前的总长度)定义为dma_wr_task_length_s,同时将拆分任务单次实际传输的长度大小定义为Single_len_r;进一步的,在拆分对齐任务中的第一个子直接内存访问任务时;可以先进行地址计算:即src addr(source address,源地址)和dst addr(destinationaddress,目标地址)直接透传dma任务命令的源地址和目标地址到axi地址命令中,最后再发送到数据搬移引擎中。
进一步的,可以判定当dma_wr_task_length_s<= dma_split_len_ctrl_size_s时,Single_len_r = dma_wr_task_length_s;可以理解为当dma任务(拆分前)的总长度小于等于dma传输时单个传输片段的最大长度(即最大单次数据传输长度值)时,拆分任务中单次传输的长度便等于dma任务(拆分前)的总长度,即直接按照拆分前的dma任务长度进行数据传输,从而减少了不必要的拆分操作,通过先判断目标数据长度与最大单次数据传输长度的关系,可以直接传输小数据量的任务,减少了系统开销。
在本发明一实施例中,所述根据所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个子任务,包括:
在所述目标数据长度值大于所述最大单次数据传输长度值时,按照所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个所述子任务。
在实际应用中,在拆分对齐任务中的第一个子直接内存访问任务时,可以判定在:
dma_wr_task_length_s>dma_split_len_ctrl_size_s时;
Single_len_r = dma_split_len_ctrl_size_s;可以理解为当dma任务(拆分前)的总长度大于dma传输时单个传输片段的最大长度(即最大单次数据传输长度值)时,拆分任务中单次传输的长度便等于单个传输片段的最大长度,即直接按照单个传输片段的最大长度进行传输。
在本发明一实施例中,所述在所述目标数据长度值大于所述最大单次数据传输长度值时,按照所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个所述子任务,包括:
在所述目标数据长度值大于所述最大单次数据传输长度值时,按照所述最大单次数据传输长度值在所述对齐任务中拆分出第一子任务。
在具体实现中,在拆分对齐任务中的第一个子直接内存访问任务时,可以判定在:
dma_wr_task_length_s>dma_split_len_ctrl_size_s时;
Single_len_r = dma_split_len_ctrl_size_s;可以理解为当dma任务(拆分前)的总长度大于dma传输时单个传输片段的最大长度(即最大单次数据传输长度值)时,拆分任务中单次传输的长度便等于单个传输片段的最大长度,即直接按照单个传输片段的最大长度进行传输,从而可以确保大数据量的对齐任务可以有效地被初始拆分,提升了数据处理的开始阶段的效率。
进一步的,可以将AXI操作的length(以64byte为单位)定义为split_length_s;将axi的strb(Strobe Signal,信号选通)控制信号(表示数据的字节有效标志)定义为axi_strb_r;将拆分任务后剩余的数据大小(单位byte)定义为remain_dma_task_len_r。
在此基础上,为了计算符合AXI协议的拆分任务长度,每次传输AXI命令的:
split_length_s= single_len_r[28:6] + |Single_len_r[5:0]= single_len_r[28:6]+0= single_len_r[28:6](64byte对齐的len(len为length的缩写));由于AXI拆分任务长度是64byte对齐的,而右边的信号(即Single_len_r[5:0])是byte对齐的,所以在计算axi的len信号时,需要将byte对齐的单次传输的长度除以64,转变为64byte对齐的长度;而对于64byte内单次传输的长度len,由于此条件下,其单次传输肯定为64byte对齐,可得出Single_len_r[5:0]的值为0。
进一步的,可以进行Axi strb计算:
Axi strb = 64’HFFFFFFFF_FFFFFFFF,代表axi全数据字节均为有效。
在本发明一实施例中,还包括:
获取所述目标数据的剩余目标数据长度值;
在所述剩余目标数据长度值小于或等于所述最大单次数据传输长度值时,按照所述剩余目标数据长度值确定第二子任务;
将所述第一子任务与所述第二子任务确定为所述多个所述子任务;
在所述剩余目标数据长度值大于所述最大单次数据传输长度值时,则按照所述最大单次数据传输长度值确定所述多个所述子任务。
在具体实现中,在拆分对齐任务中的后续子直接内存访问任务时,可以先进行地址计算,具体为:
src addr = src addr + single_len_r;
dst addr = dst addr + single_len_r;上述内容可以理解为:本次传输源地址=上次传输源地址+上次传输长度;以及本次传输目的地址=上次传输目的地址+上次传输长度。
而对于每次传输的length计算,具体可以为:
当remain_dma_task_len_r<= dma_split_len_ctrl_size_s时,
Single_len_r = {remain_dma_task_len_r[28:6],6’d0}剩余的len取64byte对齐。
每次传输axi 命令的split_length_s= task_single_len_r[28:6] + |Single_len_r[5:0]= task_single_len_r[28:6]+0= task_single_len_r[28:6](64byte对齐的len);此处可以理解为当剩余的长度小于等于单次最大长度时,就传输剩余长度,需要强调的是,此时如果剩余的任务长度的64byte内有数据,则在本次传输中将该数据剔除掉,并放到下一次任务执行。
当remain_dma_task_len_r>dma_split_len_ctrl_size_s(拆分任务的颗粒度值(即最大单次数据传输长度值),可以为512B或1024B);
Single_len_r = dma_split_len_ctrl_size_s(拆分任务的颗粒度值,可以为512B或1024B);
每次传输axi 命令的split_length_s= task_single_len_r[28:6] + |Single_len_r[5:0]= 64;
进一步的,此处同样可以进行Axi strb的计算,具体为:
axi_strb_r = 64‘hffff_ffff_ffff_ffff。
步骤203,在所述任务的任务类型为非对齐任务时,确定所述非对齐任务的最大单次数据传输长度值与高级可扩展接口数据位宽中的剩余空间数据长度值,并根据所述最大单次数据传输长度值与所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个子任务;
在实际应用中,如图4所示为本发明一实施例提供的非数据对齐任务拆分转换工作数据流图,图中从左到右的内容依次为:主机端任务(以4千字节对齐数据搬移任务为例)、DMA切片处理AXI命令任务(以拆分为1千字节颗粒度任务为例)和AXI数据位有效指示标志示意;以数据量小于4KB、最大任务颗粒度(即最大单次数据传输长度值)1KB、AXI数据位宽为512bit的直接内存访问任务进行举例说明;小于4KB数据任务在DMA切片中会将其拆分成四个任务,第一个任务为非对齐任务,图4中最右侧高级可扩展接口数据块内白色区域内字节为有效字节,灰色区域内字节为无效字节;中间两个对齐任务的 AXI数据块内的所有字节都判定为有效。第四个任务为非对齐任务,AXI数据块内白色区域内字节为有效字节,灰色区域内字节为无效字节。生成AXI只执行的源地址、目的地址、AXI操作长度和AXI有效标志。由上图可知, DMA任务要实现具体的AXI操作的关键在于处理主机地址和AXI地址的转换、length(byte为单位)和AXI length(axi数据位宽64byte为单位)、AXI数据块有效指示位信息的生成;具体的,可以确定所述非对齐任务的最大单次数据传输长度值与高级可扩展接口数据位宽中的剩余空间数据长度值,并根据所述最大单次数据传输长度值与所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个子直接内存访问任务。
在本发明一实施例中,所述根据所述最大单次数据传输长度值与所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个子任务之前,还包括:
判断所述目标数据长度值是否小于或等于所述高级可扩展接口数据位宽中的剩余空间数据长度值;
在所述目标数据长度值小于或等于所述高级可扩展接口数据位宽中的剩余空间数据长度值时,直接通过所述任务对所述目标数据进行传输处理;
在所述目标数据长度值大于所述高级可扩展接口数据位宽中的剩余空间数据长度值时,执行根据所述最大单次数据传输长度值与所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个子任务。
在实际应用中,以数据量小于4KB、最大任务颗粒度(即最大单次数据传输长度值)1KB、AXI数据位宽为512bit的直接内存访问任务进行举例说明,可以将高级可扩展接口数据位宽中的剩余空间数据长度值定义为dma_wr_not_aligned_refer_value_s(即非对齐传输中,512bit的AXI数据宽度,还可以存放多少数据)=10’d64-(dma_wr_dst_addr_s[5:0] +1)(此处地址加1的原因是地址从0开始计算)。
将以byte为单位的主机命令的dma length大小(即目标数据长度值)定义为dma_wr_task_length_s;将拆分任务单次实际传输的len大小(以byte为单位)定义为Single_len_r;将axi的strb控制信号(表示数据的字节有效标志)定义为axi_strb_r;将拆分任务后剩余的数据大小(单位byte)定义为remain_dma_task_len_r。
进一步的,在拆分非对齐任务中的第一个子直接内存访问任务时,可以先进行地址计算:即src addr和dst addr直接透传dma任务命令的源地址和目的地址到axi地址命令中,最后再发送到数据搬移引擎中。
进一步的,可以判定当:
dma_wr_task_length_s<= dma_wr_not_aligned_refer_value_s时;
Single_len_r = dma_wr_task_length_s;可以理解为当dma任务长度(即目标数据长度值)小于或等于非对齐剩余空间(即高级可扩展接口数据位宽中的剩余空间数据长度值)时,拆分任务中单次传输的长度便等于dma任务(拆分前)的总长度,即直接按照拆分前的长度进行传输,从而通过考量高级可扩展接口数据位宽和剩余空间,优化非对齐任务的传输效率。
在本发明一实施例中,所述根据所述最大单次数据传输长度值与所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个子任务,包括:
在所述目标数据长度值大于所述高级可扩展接口数据位宽中的剩余空间数据长度值时,按照所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个所述子任务。
在实际应用中,可以判定:
dma_wr_task_length_s>dma_wr_not_aligned_refer_value_s时;
Single_len_r = dma_wr_not_aligned_refer_value_s;可以理解为dma任务长度大于非对齐剩余空间时,拆分任务中单次实际传输的长度便等于非对齐剩余空间,即直接按照非对齐剩余空间进行传输。
在本发明一实施例中,所述在所述目标数据长度值大于所述高级可扩展接口数据位宽中的剩余空间数据长度值时,按照所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个所述子任务,包括:
在所述目标数据长度值大于所述高级可扩展接口数据位宽中的剩余空间数据长度值时,按照所述最大单次数据传输长度值在所述非对齐任务中拆分出第一子任务。
在具体实现中,可以判定:
dma_wr_task_length_s>dma_wr_not_aligned_refer_value_s时;
Single_len_r = dma_wr_not_aligned_refer_value_s;可以理解为dma任务长度大于非对齐剩余空间时,拆分任务中单次实际传输的长度便等于非对齐剩余空间,即直接按照非对齐剩余空间进行传输;从而提高对非对齐任务处理的灵活性和效率,能够根据实际情况灵活拆分任务,以适应不同的传输需求。
进一步的,每次传输axi 命令的:
split_length_s= single_len_r[28:6] + |Single_len_r[5:0]=0+1=1;此处AXI的传输长度为1,因为本发明原则上会将不对齐的64byte单独拆分成一笔进行传输;
进一步的,可以进行Axi strb计算:
当dma_wr_task_length_s<= dma_wr_not_aligned_refer_value_s时;
axi_strb_r =(2(dma_wr_task_length_s次方)- 1);此处内容表示将传输的数据(byte为单位)和bit位对应起来,即多长的数据就对应多少个bit位;
<<pcie方向地址[5:0]表示地址从哪个块开始有效;
Axi_strb_r=有效的bit位左移开始比特位;
当dma_wr_task_length_s>dma_wr_not_aligned_refer_value_s时;
axi_strb_r =(2(dma_wr_not_aligned_refer_value_s次方)- 1);此处内容表示将传输的数据(byte为单位)和bit位对应起来,多长个数据就对应多少个bit位;
<<pcie方向地址[5:0]表示地址从哪块开始有效。
在本发明一实施例中,还包括:
获取所述目标数据的剩余目标数据长度值;
在所述剩余目标数据长度值小于所述数据对齐长度值时,直接按照所述剩余目标数据长度值确定第二子任务;并将所述第一子任务与所述第二子任务确定为所述多个所述子任务;
在所述剩余目标数据长度值大于所述最大单次数据传输长度值时,按照所述最大单次数据传输长度值确定所述多个所述子任务。
在具体实现中,在拆分对齐任务中的后续子直接内存访问任务时,可以先进行地址计算,具体为:
src addr = src addr + single_len_r;
dst addr = dst addr + single_len_r;上述内容可以理解为:本次传输源地址=上次传输源地址+上次传输长度;本次传输目的地址=上次传输目的地址+上次传输长度。
而对于每次传输的length计算,具体可以为:
当remain_dma_task_len_r<64时;
Single_len_r = remain_dma_task_len_r;上述内容可以理解为:如果剩余任务长度小于64byte,则实际拆分传输任务的长度=剩余任务长度。
当64<<remain_dma_task_len_r<= dma_split_len_ctrl_size_s(拆分任务的颗粒度值(即最大单次数据传输长度值),可以为512B或1024B)时;
Single_len_r = {remain_dma_task_len_r[28:6],6’d0};剩余的len取64byte对齐;此处可以理解为,如果剩余传输任务的长度在64byte和最大拆分任务长度(即最大单次数据传输长度值)之间,则拆分任务长度=剩余任务长度-64byte内的长度(因为对于非对齐任务,需要将非64byte对齐的部分单独拆成一个拆分任务,所以此处会给低6bit补0);从而确保了大数据量的非对齐任务可以有效地被初始拆分,提升了数据处理的开始阶段的效率。
每次传输axi 命令的split_length_s= single_len_r[28:6] + |Single_len_r[5:0]= task_single_len_r[28:6]+0= task_single_len_r[28:6](64byte对齐的len);
当remain_dma_task_len_r>dma_split_len_ctrl_size_s(拆分任务的颗粒度值,可以为512B或1024B);
Single_len_r = dma_split_len_ctrl_size_s(拆分任务的颗粒度值,可以为512B或1024B);此处可以理解为,如果剩余任务长度大于最大拆分颗粒度,则实际拆分传输任务长度=最大拆分颗粒度长度。
每次传输axi 命令的split_length_s= single_len_r[28:6] + |Single_len_r[5:0]= 64。
进一步的,此处同样可以进行Axi strb的计算,具体为:
当remain_dma_task_len_r<64时;
axi_strb_r = 2(remain_dma_task_len_r次方)-1;此处同样是为了将传输的数据量和bit位一一对应;
当64<<remain_dma_task_len_r<= dma_split_len_ctrl_size_s(拆分任务的颗粒度值,可以为512B或1024B);
axi_strb_r = 64‘hffff_ffff_ffff_ffff;
当remain_dma_task_len_r>dma_split_len_ctrl_size_s(拆分任务的颗粒度值,可以为512B或1024B);
axi_strb_r = 64‘hffff_ffff_ffff_ffff。
在本发明一实施例中,所述方法还包括:
在所述剩余目标数据长度值大于所述数据对齐长度值且小于或等于所述最大单次数据传输长度值时,根据所述剩余目标数据长度值与所述数据对齐长度值的差值确定所述第二子任务。
在实际应用中,当:64<<remain_dma_task_len_r<= dma_split_len_ctrl_size_s时(拆分任务的颗粒度值(即最大单次数据传输长度值),可以为512B或1024B);
Single_len_r = {remain_dma_task_len_r[28:6],6’d0};剩余的len取64byte对齐;此处可以理解为,如果剩余传输任务的长度在64byte和最大拆分任务长度(即最大单次数据传输长度值)之间,则拆分任务长度=剩余任务长度-64byte内的长度。
步骤204,通过所述多个子任务,对所述目标数据进行传输处理。
在实际应用中,在拆分得到多个子直接内存访问任务之后,便可通过所述多个子直接内存访问任务,对待通过所述直接内存访问任务进行数据传输的目标数据进行传输处理。
进一步的,如图5所示为本发明一实施例提供的DMA流处理流程示意图;图中横坐标为时间,纵坐标为硬件资源,纵轴自上而下分别表示主机任务输入、直接内存访问任务处理、每笔任务占用总线时间、任务响应输出流程;由图5中内容可知,本发明所提供的基于DMA/直接内存访问的任务处理方法,任务1可以将3KB(千字节)的任务拆分为3个1KB任务,每个任务占用总线的时间为0.3T;任务2可以将4KB任务拆分为4个1KB任务,每个任务占用的时间为0.3T;从而在系统总线带宽比较紧张的情况下依旧可以提供给重要模块更多的总线访问机会,从而能更好的提升整个SOC的整体性能。
在上述内容的基础上,本发明还提供了一种可以用于实现上述方法的处理装置,参照图6,示出了本发明一实施例提供的DMA切片任务处理装置硬件框图;
由图6内容可以看出,DMA切片任务处理装置由解码器模块(demux)、DMA读任务buffer(缓存区域)、DMA读任务处理模块、DMA读切片任务buffer、DMA写任务buffer、DMA写任务处理模块、DMA写切片任务buffer和数据搬移引擎组成,具体各个模块的功能介绍如下:
解码器模块(demux):主要功能根据主机下发的任务识别任务类型,如果是DMA读任务(读取任务),则将读任务写入DMA读任务buffer中,供DMA读任务处理模块使用;如果是DMA写任务(写入任务),则将写任务写入DMA写任务buffer中,供 DMA写任务处理模块使用。
DMA读任务buffer:主要功能为缓存读任务命令。
DMA读任务处理模块:
主要功能1:处理数据对齐任务(以AXI数据位宽512bit举例,传输数据地址是64byte对齐且传输数据为64byte整数倍的任务为对齐任务);
主要功能2:处理数据非对齐任务(以AXI数据位宽512bit举例,传输数据地址不是以64byte对齐且传输数据不是64byte整数倍任务为非对齐任务);
主要功能3:将主机下发的任务转换成具体的AXI操作命令,供数据搬移引擎使用。
DMA读切片任务buffer:主要功能为缓存DMA读任务处理模块生成的AXI格式的切片命令。
DMA写任务buffer:主要功能为缓存写任务命令。
DMA写任务处理模块:
主要功能1:处理数据对齐任务(以AXI数据位宽512bit举例,传输数据地址是64byte对齐且传输数据为64byte整数倍的任务为对齐任务);
主要功能2:处理数据非对齐任务(以AXI数据位宽512bit举例,传输数据地址不是以64byte对齐且传输数据不是64byte整数倍任务为非对齐任务);
主要功能3:将主机下发的任务转换成具体的AXI操作命令,供数据搬移引擎使用。
DMA写切片任务buffer:主要功能为缓存DMA写任务处理模块生成的AXI格式的切片命令。
数据搬移引擎:主要功能为利用AXI操作命令进行AXI总线操作,从而完成数据搬移。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图7,示出了本发明一实施例提供的一种基于DMA/直接内存访问的任务处理装置的结构示意图,具体可以包括如下模块:
任务类型确定模块701,用于确定所述任务的任务类型,其中,所述任务用于对目标数据进行传输处理,所述任务的任务类型至少包括对齐任务与非对齐任务;
对齐任务拆分模块702,用于在所述任务的任务类型为对齐任务时,确定所述对齐任务的最大单次数据传输长度值,并根据所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个子任务;
非对齐任务拆分模块703,用于在所述任务的任务类型为非对齐任务时,确定所述非对齐任务的最大单次数据传输长度值与高级可扩展接口数据位宽中的剩余空间数据长度值,并根据所述最大单次数据传输长度值与所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个子任务;
目标数据传输模块704,用于通过所述多个子任务,对所述目标数据进行传输处理。
在本发明另一实施例中,所述任务类型确定模块701包括:
目标数据长度值确定子模块,用于确定所述待通过所述任务进行数据传输的目标数据的目标数据长度值与所述任务的传输数据地址;
任务类型确定子模块,用于根据所述高级可扩展接口数据位宽、所述任务的传输数据地址以及所述目标数据长度值,确定所述任务的任务类型。
在本发明另一实施例中,所述任务类型确定子模块包括:
数据对齐长度值确定单元,用于根据所述高级可扩展接口数据位宽,确定数据对齐长度值;
对齐任务确定子单元,用于在所述任务的传输数据地址与所述数据对齐长度值相对齐且所述目标数据长度值为所述数据对齐长度值的整数倍时,将所述任务确定为对齐任务;
非对齐任务确定子单元,用于在所述任务的传输数据地址不与所述数据对齐长度值相对齐且所述目标数据长度值不为所述数据对齐长度值的整数倍时,将所述任务确定为非对齐任务。
在本发明另一实施例中,所述装置还包括:
对齐任务目标数据长度值判断模块,用于判断所述目标数据长度值是否小于或等于所述最大单次数据传输长度值;
对齐任务目标数据传输模块,用于在所述目标数据长度值小于或等于所述最大单次数据传输长度值时,直接通过所述任务对所述目标数据进行传输处理;
对齐任务拆分执行模块,用于在所述目标数据长度值大于所述最大单次数据传输长度值时,执行根据所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个子任务。
在本发明另一实施例中,所述对齐任务拆分模块702包括:
对齐任务拆分子模块,用于在所述目标数据长度值大于所述最大单次数据传输长度值时,按照所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个所述子任务。
在本发明另一实施例中,所述对齐任务拆分子模块,包括:
第一子任务拆分单元,用于在所述目标数据长度值大于所述最大单次数据传输长度值时,按照所述最大单次数据传输长度值在所述对齐任务中拆分出第一子任务。
在本发明另一实施例中,所对齐任务拆分模块702,还包括:
剩余目标数据长度值获取子模块,用于获取所述目标数据的剩余目标数据长度值;
第二子任务确定子模块,用于在所述剩余目标数据长度值小于或等于所述最大单次数据传输长度值时,按照所述剩余目标数据长度值确定第二子任务;
子任务确定子模块,用于将所述第一子任务与所述第二子任务确定为所述多个所述子任务;
多个子任务确定子模块,用于在所述剩余目标数据长度值大于所述最大单次数据传输长度值时,则按照所述最大单次数据传输长度值确定所述多个所述子任务。
在本发明另一实施例中,所述装置还包括:
非对齐任务目标数据长度值判断模块,用于判断所述目标数据长度值是否小于或等于所述高级可扩展接口数据位宽中的剩余空间数据长度值;
非对齐任务目标数据传输模块,用于在所述目标数据长度值小于或等于所述高级可扩展接口数据位宽中的剩余空间数据长度值时,直接通过所述任务对所述目标数据进行传输处理;
非对齐任务拆分执行模块,用于在所述目标数据长度值大于所述高级可扩展接口数据位宽中的剩余空间数据长度值时,执行根据所述最大单次数据传输长度值与所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个子任务。
在本发明另一实施例中,所示非对齐任务拆分模块703,包括:
非对齐任务拆分子模块,用于在所述目标数据长度值大于所述高级可扩展接口数据位宽中的剩余空间数据长度值时,按照所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个所述子任务。
在本发明另一实施例中,所述非对齐任务拆分子模块,包括:
第一子任务拆分单元,用于在所述目标数据长度值大于所述高级可扩展接口数据位宽中的剩余空间数据长度值时,按照所述最大单次数据传输长度值在所述非对齐任务中拆分出第一子任务。
在本发明另一实施例中,所述非对齐任务拆分子模块,还包括:
剩余目标数据长度值获取单元,用于获取所述目标数据的剩余目标数据长度值;
子任务确定单元,用于在所述剩余目标数据长度值小于所述数据对齐长度值时,直接按照所述剩余目标数据长度值确定第二子任务;并将所述第一子任务与所述第二子任务确定为所述多个所述子任务;
多个子任务确定单元,用于在所述剩余目标数据长度值大于所述最大单次数据传输长度值时,按照所述最大单次数据传输长度值确定所述多个所述子任务。
在本发明另一实施例中,所述非对齐任务拆分子模块,还包括:
第二子任务确定单元,用于在所述剩余目标数据长度值大于所述数据对齐长度值且小于或等于所述最大单次数据传输长度值时,根据所述剩余目标数据长度值与所述数据对齐长度值的差值确定所述第二子任务。
本发明一实施例还提供了一种电子设备,可以包括处理器、存储器及存储在存储器上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上基于DMA/直接内存访问的任务处理方法。
本发明一实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如上基于DMA/直接内存访问的任务处理方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对所提供的一种基于DMA/直接内存访问的任务处理方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种基于DMA/直接内存访问的任务处理方法,其特征在于,所述方法包括:
确定目标数据的目标数据长度值并根据高级可扩展接口数据位宽确定数据对齐长度值;根据所述目标数据长度值与所述数据对齐长度值,确定所述任务的任务类型,其中,所述任务用于对所述目标数据进行传输处理,所述任务的任务类型至少包括对齐任务与非对齐任务;
在所述任务的任务类型为对齐任务时,确定所述对齐任务的最大单次数据传输长度值,并根据所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个子任务;
在所述任务的任务类型为非对齐任务时,确定所述非对齐任务的最大单次数据传输长度值与高级可扩展接口数据位宽中的剩余空间数据长度值,并根据所述最大单次数据传输长度值与所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个子任务;
通过所述多个子任务,对所述目标数据进行传输处理;
其中,所述根据所述最大单次数据传输长度值与所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个子任务,包括:
在所述目标数据长度值大于所述高级可扩展接口数据位宽中的剩余空间数据长度值时,按照所述最大单次数据传输长度值在所述非对齐任务中拆分出第一子任务;
获取所述目标数据的剩余目标数据长度值;
在所述剩余目标数据长度值小于所述数据对齐长度值时,直接按照所述剩余目标数据长度值确定第二子任务;并将所述第一子任务与所述第二子任务确定为所述多个所述子任务;
在所述剩余目标数据长度值大于所述最大单次数据传输长度值时,按照所述最大单次数据传输长度值确定所述多个所述子任务;
在所述剩余目标数据长度值大于所述数据对齐长度值且小于或等于所述最大单次数据传输长度值时,根据所述剩余目标数据长度值与所述数据对齐长度值的差值确定所述第二子任务。
2.根据权利要求1所述的基于DMA/直接内存访问的任务处理方法,其特征在于,所述根据所述目标数据长度值与所述数据对齐长度值,确定所述任务的任务类型,包括:
确定所述任务的传输数据地址;
根据所述任务的传输数据地址、所述数据对齐长度值以及所述目标数据长度值,确定所述任务的任务类型。
3.根据权利要求2所述的基于DMA/直接内存访问的任务处理方法,其特征在于,所述根据所述任务的传输数据地址、所述数据对齐长度值以及所述目标数据长度值,确定所述任务的任务类型,包括:
在所述任务的传输数据地址与所述数据对齐长度值相对齐且所述目标数据长度值为所述数据对齐长度值的整数倍时,将所述任务确定为对齐任务;
在所述任务的传输数据地址不与所述数据对齐长度值相对齐且所述目标数据长度值不为所述数据对齐长度值的整数倍时,将所述任务确定为非对齐任务。
4.根据权利要求2所述的基于DMA/直接内存访问的任务处理方法,其特征在于,在所述根据所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个子任务之前,还包括:
判断所述目标数据长度值是否小于或等于所述最大单次数据传输长度值;
在所述目标数据长度值小于或等于所述最大单次数据传输长度值时,直接通过所述任务对所述目标数据进行传输处理;
在所述目标数据长度值大于所述最大单次数据传输长度值时,执行根据所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个子任务。
5.根据权利要求4所述的基于DMA/直接内存访问的任务处理方法,其特征在于,所述根据所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个子任务,包括:
在所述目标数据长度值大于所述最大单次数据传输长度值时,按照所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个所述子任务。
6.根据权利要求5所述的基于DMA/直接内存访问的任务处理方法,其特征在于,所述在所述目标数据长度值大于所述最大单次数据传输长度值时,按照所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个所述子任务,包括:
在所述目标数据长度值大于所述最大单次数据传输长度值时,按照所述最大单次数据传输长度值在所述对齐任务中拆分出第一子任务。
7.根据权利要求6所述的基于DMA/直接内存访问的任务处理方法,其特征在于,还包括:
获取所述目标数据的剩余目标数据长度值;
在所述剩余目标数据长度值小于或等于所述最大单次数据传输长度值时,按照所述剩余目标数据长度值确定第二子任务;
将所述第一子任务与所述第二子任务确定为所述多个所述子任务;
在所述剩余目标数据长度值大于所述最大单次数据传输长度值时,则按照所述最大单次数据传输长度值确定所述多个所述子任务。
8.根据权利要求3所述的基于DMA/直接内存访问的任务处理方法,其特征在于,所述根据所述最大单次数据传输长度值与所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个子任务之前,还包括:
判断所述目标数据长度值是否小于或等于所述高级可扩展接口数据位宽中的剩余空间数据长度值;
在所述目标数据长度值小于或等于所述高级可扩展接口数据位宽中的剩余空间数据长度值时,直接通过所述任务对所述目标数据进行传输处理;
在所述目标数据长度值大于所述高级可扩展接口数据位宽中的剩余空间数据长度值时,执行根据所述最大单次数据传输长度值与所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个子任务。
9.一种基于DMA/直接内存访问的任务处理装置,其特征在于,所述装置包括:
任务类型确定模块,用于确定目标数据的目标数据长度值并根据高级可扩展接口数据位宽确定数据对齐长度值;根据所述目标数据长度值与所述数据对齐长度值,确定所述任务的任务类型,其中,所述任务用于对所述目标数据进行传输处理,所述任务的任务类型至少包括对齐任务与非对齐任务;
对齐任务拆分模块,用于在所述任务的任务类型为对齐任务时,确定所述对齐任务的最大单次数据传输长度值,并根据所述最大单次数据传输长度值对所述对齐任务进行拆分,得到多个子任务;
非对齐任务拆分模块,用于在所述任务的任务类型为非对齐任务时,确定所述非对齐任务的最大单次数据传输长度值与高级可扩展接口数据位宽中的剩余空间数据长度值,并根据所述最大单次数据传输长度值与所述高级可扩展接口数据位宽中的剩余空间数据长度值对所述非对齐任务进行拆分,得到多个子任务;
目标数据传输模块,用于通过所述多个子任务,对所述目标数据进行传输处理;
其中,所述非对齐任务拆分模块,包括:
第一子任务拆分单元,用于在所述目标数据长度值大于所述高级可扩展接口数据位宽中的剩余空间数据长度值时,按照所述最大单次数据传输长度值在所述非对齐任务中拆分出第一子任务;
剩余目标数据长度值获取单元,用于获取所述目标数据的剩余目标数据长度值;
子任务确定单元,用于在所述剩余目标数据长度值小于所述数据对齐长度值时,直接按照所述剩余目标数据长度值确定第二子任务;并将所述第一子任务与所述第二子任务确定为所述多个所述子任务;
多个子任务确定单元,用于在所述剩余目标数据长度值大于所述最大单次数据传输长度值时,按照所述最大单次数据传输长度值确定所述多个所述子任务;
第二子任务确定单元,用于在所述剩余目标数据长度值大于所述数据对齐长度值且小于或等于所述最大单次数据传输长度值时,根据所述剩余目标数据长度值与所述数据对齐长度值的差值确定所述第二子任务。
10.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至8中任一项所述的基于DMA/直接内存访问的任务处理方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的基于DMA/直接内存访问的任务处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410223668.6A CN117807001B (zh) | 2024-02-29 | 2024-02-29 | 一种基于dma/直接内存访问的任务处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410223668.6A CN117807001B (zh) | 2024-02-29 | 2024-02-29 | 一种基于dma/直接内存访问的任务处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117807001A CN117807001A (zh) | 2024-04-02 |
CN117807001B true CN117807001B (zh) | 2024-05-24 |
Family
ID=90430256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410223668.6A Active CN117807001B (zh) | 2024-02-29 | 2024-02-29 | 一种基于dma/直接内存访问的任务处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117807001B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR19980037643A (ko) * | 1996-11-22 | 1998-08-05 | 구자홍 | 디엠에이 컨트롤러의 전송방법 |
EP0997822A2 (en) * | 1998-10-28 | 2000-05-03 | Nec Corporation | DMA control method and apparatus |
WO2004006105A2 (en) * | 2002-07-08 | 2004-01-15 | Globespanvirata Incorporated | Dma scheduling mechanism |
CN1804823A (zh) * | 2005-12-22 | 2006-07-19 | 北京中星微电子有限公司 | 直接存储访问控制器 |
US7996632B1 (en) * | 2006-12-22 | 2011-08-09 | Oracle America, Inc. | Device for misaligned atomics for a highly-threaded x86 processor |
CN102567258A (zh) * | 2011-12-29 | 2012-07-11 | 中国科学院自动化研究所 | 多维dma传输装置与方法 |
CN112306928A (zh) * | 2020-11-19 | 2021-02-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种面向流传输的直接内存访问方法以及dma控制器 |
WO2021208835A1 (zh) * | 2020-04-17 | 2021-10-21 | 大唐移动通信设备有限公司 | 空闲信道检测方法、装置、电子设备和存储介质 |
CN113821475A (zh) * | 2021-11-22 | 2021-12-21 | 湖北芯擎科技有限公司 | 数据传输方法、装置、电子设备及存储介质 |
CN115883022A (zh) * | 2023-01-06 | 2023-03-31 | 北京象帝先计算技术有限公司 | Dma传输控制方法、装置、电子设备及可读存储介质 |
CN117539807A (zh) * | 2023-10-23 | 2024-02-09 | 飞腾信息技术有限公司 | 一种数据传输方法、相关设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6816921B2 (en) * | 2000-09-08 | 2004-11-09 | Texas Instruments Incorporated | Micro-controller direct memory access (DMA) operation with adjustable word size transfers and address alignment/incrementing |
KR100375233B1 (ko) * | 2001-03-16 | 2003-03-08 | 삼성전자주식회사 | 전송될 데이터 길이 값에 따라 전송 모드가 유동적으로변환되는 직접 메모리 억세스 컨트롤러 |
-
2024
- 2024-02-29 CN CN202410223668.6A patent/CN117807001B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR19980037643A (ko) * | 1996-11-22 | 1998-08-05 | 구자홍 | 디엠에이 컨트롤러의 전송방법 |
EP0997822A2 (en) * | 1998-10-28 | 2000-05-03 | Nec Corporation | DMA control method and apparatus |
WO2004006105A2 (en) * | 2002-07-08 | 2004-01-15 | Globespanvirata Incorporated | Dma scheduling mechanism |
CN1804823A (zh) * | 2005-12-22 | 2006-07-19 | 北京中星微电子有限公司 | 直接存储访问控制器 |
US7996632B1 (en) * | 2006-12-22 | 2011-08-09 | Oracle America, Inc. | Device for misaligned atomics for a highly-threaded x86 processor |
CN102567258A (zh) * | 2011-12-29 | 2012-07-11 | 中国科学院自动化研究所 | 多维dma传输装置与方法 |
WO2021208835A1 (zh) * | 2020-04-17 | 2021-10-21 | 大唐移动通信设备有限公司 | 空闲信道检测方法、装置、电子设备和存储介质 |
CN112306928A (zh) * | 2020-11-19 | 2021-02-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种面向流传输的直接内存访问方法以及dma控制器 |
CN113821475A (zh) * | 2021-11-22 | 2021-12-21 | 湖北芯擎科技有限公司 | 数据传输方法、装置、电子设备及存储介质 |
CN115883022A (zh) * | 2023-01-06 | 2023-03-31 | 北京象帝先计算技术有限公司 | Dma传输控制方法、装置、电子设备及可读存储介质 |
CN117539807A (zh) * | 2023-10-23 | 2024-02-09 | 飞腾信息技术有限公司 | 一种数据传输方法、相关设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
一种面向非规则引用的Cell多核处理器自适应Cache行策略;曹倩;胡长军;张云星;朱于畋;;计算机学报;20110515(第05期);全文 * |
基于PCIe的高速数据采集卡的FPGA设计与实现;林坤;中国优秀硕士学位论文全文数据库;20131231(第01期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117807001A (zh) | 2024-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101253012B1 (ko) | 이종 플랫폼에서 포인터를 공유시키는 방법 및 장치 | |
US7844752B2 (en) | Method, apparatus and program storage device for enabling multiple asynchronous direct memory access task executions | |
KR100947137B1 (ko) | 양 엔디안 가능 컴파일러를 구현하기 위한 방법 및 장치 | |
JP2022526660A (ja) | コヒーレントアクセラレーションのためのドメイン支援プロセッサピア | |
CN111625558A (zh) | 一种服务器架构及其数据库查询方法和存储介质 | |
US11657011B2 (en) | Avalon-to-Axi4 bus conversion method | |
WO2015176689A1 (zh) | 一种数据处理的方法及装置 | |
CN115098412B (zh) | 外设访问控制器、数据访问装置及对应方法、介质和芯片 | |
CN113868160A (zh) | 一种数据查询方法、装置及相关设备 | |
CN117807001B (zh) | 一种基于dma/直接内存访问的任务处理方法及装置 | |
US11275683B2 (en) | Method, apparatus, device and computer-readable storage medium for storage management | |
Chu et al. | High-performance adaptive MPI derived datatype communication for modern Multi-GPU systems | |
CN114911525A (zh) | 二进制指令翻译执行方法及装置 | |
CN116745754A (zh) | 一种访问远端资源的系统及方法 | |
JP2008210280A (ja) | 半導体装置及びdmaコントローラ | |
CN218996035U (zh) | 一种配合xmda使用的rdma高速数据传输系统 | |
CN118138558B (zh) | 基于直接内存访问的报文发包方法、计算机设备及介质 | |
CN114866534B (zh) | 一种图像处理方法、装置、设备及介质 | |
US12111779B2 (en) | Node identification allocation in a multi-tile system with multiple derivatives | |
CN117393046B (zh) | 一种空间转录组测序方法、系统、介质及设备 | |
CN115297169B (zh) | 数据处理方法、装置、电子设备及介质 | |
US7111301B1 (en) | Request and completion queue load balancing | |
US10853287B2 (en) | Information processing system, semiconductor integrated circuit, and information processing method | |
WO2019188174A1 (ja) | 情報処理装置 | |
JP2024021989A (ja) | 情報処理プログラム、情報処理方法、および情報処理装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |