CN115658571B - 一种数据传输方法、装置、电子设备及介质 - Google Patents
一种数据传输方法、装置、电子设备及介质 Download PDFInfo
- Publication number
- CN115658571B CN115658571B CN202211459291.1A CN202211459291A CN115658571B CN 115658571 B CN115658571 B CN 115658571B CN 202211459291 A CN202211459291 A CN 202211459291A CN 115658571 B CN115658571 B CN 115658571B
- Authority
- CN
- China
- Prior art keywords
- transmission
- data block
- request
- target
- transmission request
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 285
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000012545 processing Methods 0.000 claims abstract description 22
- 238000012546 transfer Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 12
- 238000003860 storage Methods 0.000 claims description 8
- 238000009826 distribution Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
Images
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
-
- 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/30—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal with priority control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Bus Control (AREA)
Abstract
本申请公开了一种数据传输方法、装置、电子设备及介质,涉及数据传输领域。该方案中,接收传输请求,传输请求中包括目标数据块的源地址、目标地址及目标数据块长度;从源地址中获取目标数据块,并根据目标数据块长度将目标数据块划分为多个子数据块;将多个子数据块分发至多个DMA引擎,以使各个DMA引擎将与自身对应的子数据块传输至目标地址,以完成对目标数据块的传输。通过本申请中的方式,对目标数据块进行划分,并同时利用多个DMA引擎对同一目标数据块进行处理,提高了对目标数据块处理的速度,提高了服务器数据传输的能力。
Description
技术领域
本申请涉及数据传输领域,特别涉及一种数据传输方法、装置、电子设备及介质。
背景技术
计算机系统的通信领域包括一种基于PCIE(peripheral componentinterconnect express,高速串行计算机扩展总线标准)链路的高速通信方式,其已经从PCIE3.0发展到了PCIE5.0,传输链路的通信能力得到的极大的提高。随着通道性能的提升,单个DMA(Direct Memory Access,直接存储器访问)引擎的数据传输性能逐渐达到瓶颈。此时,若想要达到较好的链路通信能力, 需要对DMA引擎进行加速。目前对DMA引擎进行加速的方式为:厂商在生产时提升硬件的DMA引擎搬运能力,以实现对DMA引擎的加速,但是硬件的DMA引擎的搬运能力的提升空间很小且提升难度很大。此外,对于已经生产的硬件中的DMA引擎的搬运能力已经无法改变。
因此,提供一种数据传输方法,以在计算机系统传输的数据量较大且单个DMA引擎的传输性能达到瓶颈时,提高系统的数据传输能力是十分必要的。
发明内容
本申请的目的是提供一种数据传输方法、装置、电子设备及介质,对目标数据块进行划分,并同时利用多个DMA引擎对同一目标数据块进行处理,提高了对目标数据块处理的速度,提高了服务器数据传输的能力。
为解决上述技术问题,本申请提供了一种数据传输方法,所述方法包括:
接收传输请求,所述传输请求中包括目标数据块的源地址、目标地址及目标数据块长度;
从所述源地址中获取目标数据块,并根据所述目标数据块长度将所述目标数据块划分为多个子数据块;
将多个所述子数据块分发至多个DMA引擎,以使各个所述DMA引擎将与自身对应的子数据块传输至所述目标地址,以完成对所述目标数据块的传输。
优选地,所述传输请求包括多个时,接收传输请求之后,还包括:
将多个所述传输请求按照时间顺序进行排列;
按照排列顺序依次对各所述传输请求进行处理。
优选地,将多个所述传输请求按照时间顺序进行排列,包括:
按照时间顺序将多个所述传输请求依次写入请求队列,所述请求队列遵循先入先出原则;
按照排列顺序依次对各个所述传输请求进行处理,包括:
按照所述请求队列写入的顺序依次对各所述传输请求进行处理。
优选地,将多个所述子数据块分发至多个所述DMA引擎,以使各个所述DMA引擎将与自身对应的子数据块传输至所述目标地址,以完成对所述目标数据块的传输之后,还包括:
判断多个所述DMA引擎是否完成对所述目标数据块的传输;
若完成,则进入从所述请求队列中获取下一个所述传输请求的步骤。
优选地,按照时间顺序将多个所述传输请求依次写入请求队列,包括:
在将当前传输请求写入所述请求队列时,判断所述请求队列是否为加锁状态;
若为加锁状态,则判定所述请求队列处于访问状态,等待预设时间直至所述请求队列处于空闲状态时将所述当前传输请求写入所述请求队列;
否则,判定所述请求队列处于所述空闲状态,直接将所述当前传输请求写入所述请求队列。
优选地,接收传输请求之后,还包括:
判断所述传输请求是否设有优先级;
若设有优先级,则确定设有优先级的传输请求对应的第一目标地址;
从所述请求队列的尾端至首端依次查询各所述传输请求,并判断各所述传输请求对应的第二目标地址与所述第一目标地址是否存在重叠;
若存在重叠,则停止查询,并在将所述第一目标地址对应的传输请求写入所述请求队列时,将所述第一目标地址对应的传输请求写至存在重叠的所述第二目标地址对应的传输请求之后,以作为所述第二目标地址对应的传输请求的下一个传输请求。
优选地,在判定不存在重叠之后,还包括:
将所述第一目标地址对应的传输请求写至所述请求队列的首端。
优选地,从所述请求队列中获取传输请求时,还包括:
判断获取到的所述传输请求是否设有优先级;
若设有优先级,则使用预设DMA引擎对设有优先级的所述传输请求对应的目标数据块进行传输。
优选地,根据所述目标数据块长度将所述目标数据块划分为与多个子数据块,包括:
根据所述目标数据块长度及DMA引擎最优传输数据长度将所述目标数据块划分为与多个子数据块;
每个所述子数据块的数据长度不大于所述DMA引擎最优传输数据长度。
优选地,根据所述目标数据块长度及DMA引擎最优传输数据长度将所述目标数据块划分为与多个子数据块,包括:
根据所述目标数据块长度及DMA引擎最优传输数据长度将所述目标数据块平均划分为数据块长度均相同的多个子数据块。
优选地,将多个所述子数据块分发至多个所述DMA引擎,包括:
将多个所述子数据块平均分发至多个所述DMA引擎。
优选地,每个所述DMA引擎对应不止一个所述子数据块时,还包括:
控制所述DMA引擎按照顺序依次对和自身对应的子数据块进行传输。
为解决上述技术问题,本申请还提供了一种数据传输装置,所述装置包括:
请求接收单元,用于接收传输请求,所述传输请求中包括目标数据块的源地址、目标地址及目标数据块长度;
划分单元,用于从所述源地址中获取目标数据块,并根据所述目标数据块长度将所述目标数据块划分为多个子数据块;
分发单元,用于将多个所述子数据块分发至多个DMA引擎,以使各个所述DMA引擎将与自身对应的子数据块传输至所述目标地址,以完成对所述目标数据块的传输。
为解决上述技术问题,本申请还提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于在存储计算机程序时,实现如上述所述的数据传输方法的步骤。
为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的数据传输方法的步骤。
本申请提供了一种数据传输方法,涉及数据传输领域。该方案中,接收传输请求,传输请求中包括目标数据块的源地址、目标地址及目标数据块长度;从源地址中获取目标数据块,并根据目标数据块长度将目标数据块划分为多个子数据块;将多个子数据块分发至多个DMA引擎,以使各个DMA引擎将与自身对应的子数据块传输至目标地址,以完成对目标数据块的传输。通过本申请中的方式,对目标数据块进行划分,并同时利用多个DMA引擎对同一目标数据块进行处理,提高了对目标数据块处理的速度,提高了服务器数据传输的能力。
本申请还提供了一种数据传输装置、装置及介质,与上述描述的数据传输方法具有相同的有益效果。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种数据传输方法的流程示意图;
图2为本申请提供的一种DMA引擎的工作原理图;
图3为本申请提供的另一种数据传输方法的流程示意图;
图4为本申请提供的一种数据传输装置的结构框图;
图5为本申请提供的一种电子设备的结构框图。
具体实施方式
本申请的核心是提供一种数据传输方法、装置、电子设备及介质,对目标数据块进行划分,并同时利用多个DMA引擎对同一目标数据块进行处理,提高了对目标数据块处理的速度,提高了服务器数据传输的能力。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参照图1,图1为本申请提供的一种数据传输方法的流程示意图,该方法应用于包括多个DMA引擎的服务器,方法包括:
S11:接收传输请求,传输请求中包括目标数据块的源地址、目标地址及目标数据块长度;
首先对DMA引擎的工作原理做一个简单的介绍,具体可参照图2,图2为本申请提供的一种DMA引擎的工作原理图。应用程序下发的传输请求中包括数据块1、2、3和4的源地址、目标地址和数据块大小,将其提交至DMA引擎,启动DMA引擎,以使DMA引擎依次将四个数据块由源地址搬移到对应的目标地址。
S12:从源地址中获取目标数据块,并根据目标数据块长度将目标数据块划分为多个子数据块;
具体地,请参照图3,图3为本申请提供的另一种数据传输方法的流程示意图,若服务器中某一个时刻需要传输的数据量较大时,单个DMA引擎的搬运能力可能会达到瓶颈,此时,无法完成数据的传输。
为解决此问题,本申请中在接收到传输请求时,将传输请求对应的目标数据块划分为多个长度较小的子数据块,以便将其分发给多个DMA引擎,使其共同完成目标数据块的传输,提高了数据传输的效率。
S13:将多个子数据块分发至多个DMA引擎,以使各个DMA引擎将与自身对应的子数据块传输至目标地址,以完成对目标数据块的传输。
将多个子数据块分发至多个DMA引擎之后,每个DMA引擎将与自身对应的子数据块从源地址搬移至目标地址,从而实现对目标数据块的传输。
作为一种优选的实施例,根据目标数据块长度将目标数据块划分为与多个子数据块,包括:
根据目标数据块长度及DMA引擎最优传输数据长度将目标数据块划分为与多个子数据块;
每个子数据块的数据长度不大于DMA引擎最优传输数据长度。
本实施例旨在限定对目标数据块进行划分的具体实施方式,具体地,通常情况下,每个DMA引擎对应一个自身传输的最优传输数据长度,对应的,DMA引擎传输不大于此最优传输数据长度的数据块时的传输效率较高。因此,本申请中在对目标数据块进行划分时,根据目标数据块长度以及DMA引擎最优传输数据长度对目标数据块进行划分,以将其划分为多个子数据块,并保证每个子数据块的长度不大于DMA引擎的最优传输数据长度,以保证DMA引擎的传输效率。
需要说明的是,同一服务器中的多个DMA引擎对应的最优传输数据长度通常相同,但是也可以设置为不相同,本申请在此不做特别的限定。
作为一种优选的实施例,根据目标数据块长度及DMA引擎最优传输数据长度将目标数据块划分为与多个子数据块,包括:
根据目标数据块长度及DMA引擎最优传输数据长度将目标数据块平均划分为数据块长度均相同的多个子数据块。
更具体的,本实施例考虑到负载均衡原则,在将目标数据块划分为子数据块时,将多个子数据块的长度设置为相同长度,此时将其分发至各个DMA引擎时,可以一定程度上使得DMA引擎收到的数据块的长度及大小相同,从而尽可能的实现负载均衡,以尽可能的使得多个DMA引擎同步工作。
作为一种优选的实施例,将多个子数据块分发至多个DMA引擎,包括:
将多个子数据块平均分发至多个DMA引擎。
更加具体的,本实施例中限定了在对DMA引擎分发子数据块时,将子数据块平均分发至各个DMA引擎,以保证各个DMA引擎之间的负载均衡,使得多个DMA引擎尽可能的同步工作。
作为一种优选的实施例,每个DMA引擎对应不止一个子数据块时,还包括:
控制DMA引擎按照顺序依次对和自身对应的子数据块进行传输。
具体地,将目标数据块进行划分之后,若每个DMA引擎对应不止一个子数据块时,对应的,为保证各目标地址中数据的正确性,本申请中各DMA引擎对和自身对应的子数据块进行处理时,需保证每个DMA按照顺序依次处理各个子数据块。
例如,某目标数据块长度(也即大小)为16K,DMA引擎个数为2,每个DMA引擎对应的最优传输数据长度为4k,此时,对目标数据块进行划分时,划分为数据长度为4k的4个子数据块,然后为每个DMA引擎分配2个子数据块,每个DMA引擎按照顺序依次对和自身对应的2个子数据块进行传输,具体为:在传输完第一个子数据块之后,再传输第二个子数据块。
作为一种优选的实施例,传输请求包括多个时,接收传输请求之后,还包括:
将多个传输请求按照时间顺序进行排列;
按照排列顺序依次对各传输请求进行处理。
进一步的,传输请求有多个时,可能会存在多个DMA引擎对同一个目标地址进行写入的情况,此时可能会导致该目标地址的数据被破坏。
因此,在传输请求有多个时,本申请需要将传输请求按照时间顺序进行排列,并且按照对应的排列顺序依次处理各个传输请求,以保证在同一个时刻DMA引擎只处理一个传输请求,也即在同一个时刻对同一个目标地址只有一个写入操作,可以避免目标地址中的数据被损坏。
作为一种优选的实施例,将多个传输请求按照时间顺序进行排列,包括:
按照时间顺序将多个传输请求依次写入请求队列,请求队列遵循先入先出原则;
按照排列顺序依次对各个传输请求进行处理,包括:
按照请求队列写入的顺序依次对各传输请求进行处理。
本实施例旨在限定对各个传输请求的进行排列的具体实现方式,具体地,本申请中使用请求队列对各个传输请求进行排列,将多个传输请求按照时间顺序依次写入请求队列中,由于本申请中的请求队列遵循先入先出原则,因此,对请求队列中的各个传输请求进行获取时,只能按照时间顺序(也即是写入队列的顺序)从请求队列中依次对各个传输请求进行处理。
可见,通过本申请中的方式可以避免目标地址中的数据被损坏。
作为一种优选的实施例,将多个子数据块分发至多个DMA引擎,以使各个DMA引擎将与自身对应的子数据块传输至目标地址,以完成对目标数据块的传输之后,还包括:
判断多个DMA引擎是否完成对目标数据块的传输;
若完成,则进入从请求队列中获取下一个传输请求的步骤。
进一步的,为进一步保证DMA引擎每次只针对一个传输请求对应的目标数据块进行处理,避免出现对多个传输请求进行处理时存在的DMA引擎同时对同一目标地址进行写入,进而导致数据损坏的问题。
本申请中,在DMA引擎对当前的传输请求对应的目标数据块进行传输时,还会判断当前的目标数据块的传输是否完成,在其未完成时,表示DMA引擎当前处于对当前的传输请求对应的目标数据块进行传输的状态;若直接从请求队列中获取下一个传输请求,则下一个传输请求对应的目标地址可能会与当前的传输请求对应的目标地址有重叠(也即是存在有重复的地址),此时,可能会存在DMA引擎同时对同一个地址的数据进行写入,此时可能会导致重叠部分的地址对应的数据损坏。因此,本申请中在判断目标数据块的传输完成时,表示DMA引擎当前已经完成对当前的目标数据块进行传输的过程,也即,表示DMA引擎处于空闲状态,此时再对下一个传输请求进行处理时,可以避免存在目标地址重叠的情况,进而避免数据损坏。
进一步的,应用程序下发传输请求的过程为单线程访问DMA引擎的过程,若同一时刻存在多个线程同时访问DMA引擎,则会出现同时调用DMA引擎使其搬移数据带来的竞争问题。
因此,本申请中在应用程序(也即线程)和DMA引擎之间设置了请求队列,此请求队列还可以实现应用程序和DMA引擎之间的隔离,使得应用程序无法直接访问DMA引擎,必须通过请求队列才可以实现对DMA引擎的访问,此请求队列可以实现对各个传输请求的排序,从而可以避免多个线程同时调用DMA引擎带来的竞争问题。
作为一种优选的实施例,按照时间顺序将多个传输请求依次写入请求队列,包括:
在将当前传输请求写入请求队列时,判断请求队列是否为加锁状态;
若为加锁状态,则判定请求队列处于访问状态,等待预设时间直至请求队列处于空闲状态时将当前传输请求写入请求队列;
否则,判定请求队列处于空闲状态,直接将当前传输请求写入请求队列。
进一步的,若存在多线程同时向请求队列写入多个传输请求,且多个传输请求对应的目标地址之间若存在重叠,则可能会导致重叠部分的数据错误。
为避免上述问题,本申请中在将传输请求写入请求队列时,需判断请求队列是否为加锁状态。具体地,请求队列在被访问时为加锁状态,请求队列未被访问时为未加锁状态。因此,在将当前传输请求写入请求队列时,若判定请求队列为加锁状态,则判定请求队列当前正在被访问,也即是,正在有一个传输请求处于写入请求队列的过程中,此时不允许再写入一个传输请求至请求队列中,需等待直至上一个传输请求写入至请求队列的过程完成,也即是,需要等待直至请求队列处于空闲状态时,才能将当前的传输请求写入请求队列。若在当前传输请求写入请求队列时,判定请求队列为未加锁的状态,则判定请求队列当前没有被访问,也即是,请求队列处于空闲状态,此时可以将传输请求直接写入请求队列,且不会存在目标地址重叠的情况。
综上,通过本申请中的方式,可以保证各个传输请求之间的先后顺序,保证重叠的目标地址先后被读写访问,也即,使得请求队列在同一个时刻只有一个线程在访问,也即是,同一时刻请求队列只允许一个传输请求写入,可以避免目标地址的重叠部分对应的数据错误。
作为一种优选的实施例,接收传输请求之后,还包括:
判断传输请求是否设有优先级;
若设有优先级,则确定设有优先级的传输请求对应的第一目标地址;
从请求队列的尾端至首端依次查询各传输请求,并判断各传输请求对应的第二目标地址与第一目标地址是否存在重叠;
若存在重叠,则停止查询,并在将第一目标地址对应的传输请求写入请求队列时,将第一目标地址对应的传输请求写至存在重叠的第二目标地址对应的传输请求之后,以作为第二目标地址对应的传输请求的下一个传输请求。
进一步的,在对目标数据块进行传输时,可能还会存在一些优先级较高的目标数据块(如对目标数据块预先设置了优先级),此时,在上述已经使用请求队列的基础上,如何使用请求队列以保障对高优先级的目标数据块进行传输是本申请要解决的问题。
具体的,首先,在上述接收到传输请求之后,需判断该传输请求是否设有优先级,若设有优先级,则确定该传输请求对应的目标数据块为高优先级的目标数据块。在确定传输请求设有优先级之后,获取该传输请求对应的第一目标地址,然后将此第一目标地址与请求队列中的各个传输请求对应的第二目标地址进行对比(自尾端至首端逐个比较),以确定是否存在传输请求对应的第二目标地址与第一目标地址重叠的情况,若存在重叠,则表示重叠部分的地址需要至少被写入两次,且具有先后顺序,分别为第二目标地址对应的传输请求需写入一次、以及第一目标地址对应的传输请求处需要写入一次。因此,即便第一目标地址对应的传输请求的优先级较高,也不能高于与第一目标地址有重叠的第二目标地址对应的传输请求,否则会导致目标地址重叠部分的数据错误。因此,将第一目标地址对应的传输请求写入请求队列时,也只能写在第二目标地址对应的传输请求之后,以保证数据的安全性,避免数据损坏。
需要说明的是,本申请中第二目标地址对应的传输请求为从请求队列的尾端至首端查询到的第一个与第一目标地址有重叠的传输请求。一旦查询到此第一目标地址对应的传输请求,则停止查询,因为无论此传输请求之前的传输请求对应的目标地址是否与第一目标地址有重叠,第二目标地址对应的传输请求处均需要对重叠的地址写入一次。此外,停止查询也可以在一定程度上减少处理器的功耗。
作为一种优选的实施例,在判定不存在重叠之后,还包括:
将第一目标地址对应的传输请求写至请求队列的首端。
具体的,在上述从请求队列的尾端至首端未查询到与第一目标地址有重叠的传输请求,表示请求队列中不存在与第一目标地址对应的传输请求有冲突的传输请求(也即传输请求中对应的目标地址中不存在与第一目标地址重叠的传输请求)。此时,可以将第一目标地址对应的传输请求写入至请求队列的首端,以便更早的对此传输请求进行处理,且不会导致各个地址中的数据损坏。
作为一种优选的实施例,从请求队列中获取传输请求时,还包括:
判断获取到的传输请求是否设有优先级;
若设有优先级,则使用预设DMA引擎对设有优先级的传输请求对应的目标数据块进行传输。
进一步的,在服务器中DMA引擎的个数较为充足时,可以为设有优先级的传输请求设置单独的预设DMA引擎,该预设DMA引擎只负责传输设有优先级的传输请求。
具体地,在上述传输请求设有优先级时,将其写入至请求队列之后,在从请求队列中获取某个传输请求,以对此传输请求进行处理时,需判断此传输请求是否为设有优先级的传输请求,若是,则使用预设DMA引擎对设有优先级的传输请求进行处理,也即是,使用预设DMA引擎对设有优先级的传输请求对应的目标数据块进行传输。
若服务器中的DMA引擎的个数相对不充足,也即DMA引擎的个数较少时,此时,从请求队列中获取到设有优先级的传输请求时,按照以上常规步骤对该传输请求进行处理即可。
综上,通过本申请中的方式,对目标数据块进行划分,并同时利用多个DMA引擎对同一目标数据块进行处理,可以提高了对目标数据块处理的速度,进而提高了服务器数据传输的能力。
为解决上述技术问题,本申请还提供了一种数据传输装置,请参照图4,图4为本申请提供的一种数据传输装置的结构框图,该系统装置包括:
请求接收单元41,用于接收传输请求,传输请求中包括目标数据块的源地址、目标地址及目标数据块长度;
划分单元42,用于从源地址中获取目标数据块,并根据目标数据块长度将目标数据块划分为多个子数据块;
分发单元43,用于将多个子数据块分发至多个DMA引擎,以使各个DMA引擎将与自身对应的子数据块传输至目标地址,以完成对目标数据块的传输。
作为一种优选的实施例,还包括:
排列单元,用于将多个传输请求按照时间顺序进行排列;
顺序处理单元,用于按照排列顺序依次对各传输请求进行处理。
作为一种优选的实施例,排列单元,具体用于按照时间顺序将多个传输请求依次写入请求队列,请求队列遵循先入先出原则;
顺序处理单元,具体用于按照请求队列写入的顺序依次对各传输请求进行处理。
作为一种优选的实施例,还包括:
第一判断单元,用于判断多个DMA引擎是否完成对目标数据块的传输;若完成,则进入从请求队列中获取下一个传输请求的步骤。
作为一种优选的实施例,顺序处理单元包括:
第二判断单元,用于在将当前传输请求写入请求队列时,判断请求队列是否为加锁状态;
第一执行单元,用于在加锁状态时,判定请求队列处于访问状态,等待预设时间直至请求队列处于空闲状态时将当前传输请求写入请求队列;
第二执行单元,用于在未加锁状态时,判定请求队列处于空闲状态,直接将当前传输请求写入请求队列。
作为一种优选的实施例,还包括:
第三判断单元,用于判断传输请求是否设有优先级;
第三执行单元,用于在传输请求设有优先级时,确定设有优先级的传输请求对应的第一目标地址;
第四判断单元,用于从请求队列的尾端至首端依次查询各传输请求,并判断各传输请求对应的第二目标地址与第一目标地址是否存在重叠;
第四执行单元,用于在判定存在重叠时,停止查询,并在将第一目标地址对应的传输请求写入请求队列时,将第一目标地址对应的传输请求写至存在重叠的第二目标地址对应的传输请求之后,以作为第二目标地址对应的传输请求的下一个传输请求。
作为一种优选的实施例,还包括:
第五执行单元,用于在判定不存在重叠时,将第一目标地址对应的传输请求写至请求队列的首端。
作为一种优选的实施例,从请求队列中获取传输请求时,还包括:
第五判断单元,用于判断获取到的传输请求是否设有优先级;
第六执行单元,用于在获取到的传输请求设有优先级时,则使用预设DMA引擎对设有优先级的传输请求对应的目标数据块进行传输。
作为一种优选的实施例,划分单元,具体用于根据目标数据块长度及DMA引擎最优传输数据长度将目标数据块划分为与多个子数据块;
每个子数据块的数据长度不大于DMA引擎最优传输数据长度。
作为一种优选的实施例,划分单元具体用于根据目标数据块长度及DMA引擎最优传输数据长度将目标数据块平均划分为数据块长度均相同的多个子数据块。
作为一种优选的实施例,分发单元具体用于将多个子数据块平均分发至多个DMA引擎。
作为一种优选的实施例,还包括:
控制单元,用于在每个DMA引擎对应不止一个子数据块时,控制DMA引擎按照顺序依次对和自身对应的子数据块进行传输。
对于数据传输装置的介绍请参照上述实施例,本申请在此不再赘述。
为解决上述技术问题,本申请还提供了一种电子设备,请参照图5,图5为本申请提供的一种电子设备的结构框图,该装置包括:
存储器51,用于存储计算机程序;
处理器52,用于在存储计算机程序时,实现如上述的数据传输方法的步骤。
对于电子设备的介绍请参照上述实施例,本申请在此不再赘述。
为解决上述技术问题,本申请还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述的数据传输方法的步骤。其中,计算机可读存储介质可为暂态存储介质或非暂态存储介质,本申请不再限定。对于计算机可读存储介质的介绍请参照上述实施例,本申请在此不再赘述。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其他实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (15)
1.一种数据传输方法,其特征在于,所述方法包括:
接收传输请求,所述传输请求中包括目标数据块的源地址、目标地址及目标数据块长度;
从所述源地址中获取目标数据块,并根据所述目标数据块长度将所述目标数据块划分为多个子数据块;
将多个所述子数据块分发至多个DMA引擎,以使各个所述DMA引擎将与自身对应的子数据块传输至所述目标地址,以完成对所述目标数据块的传输。
2.如权利要求1所述的数据传输方法,其特征在于,所述传输请求包括多个时,接收传输请求之后,还包括:
将多个所述传输请求按照时间顺序进行排列;
按照排列顺序依次对各所述传输请求进行处理。
3.如权利要求2所述的数据传输方法,其特征在于,将多个所述传输请求按照时间顺序进行排列,包括:
按照时间顺序将多个所述传输请求依次写入请求队列,所述请求队列遵循先入先出原则;
按照排列顺序依次对各个所述传输请求进行处理,包括:
按照所述请求队列写入的顺序依次对各所述传输请求进行处理。
4.如权利要求3所述的数据传输方法,其特征在于,将多个所述子数据块分发至多个所述DMA引擎,以使各个所述DMA引擎将与自身对应的子数据块传输至所述目标地址,以完成对所述目标数据块的传输之后,还包括:
判断多个所述DMA引擎是否完成对所述目标数据块的传输;
若完成,则进入从所述请求队列中获取下一个所述传输请求的步骤。
5.如权利要求3所述的数据传输方法,其特征在于,按照时间顺序将多个所述传输请求依次写入请求队列,包括:
在将当前传输请求写入所述请求队列时,判断所述请求队列是否为加锁状态;
若为加锁状态,则判定所述请求队列处于访问状态,等待预设时间直至所述请求队列处于空闲状态时将所述当前传输请求写入所述请求队列;
否则,判定所述请求队列处于所述空闲状态,直接将所述当前传输请求写入所述请求队列。
6.如权利要求3所述的数据传输方法,其特征在于,接收传输请求之后,还包括:
判断所述传输请求是否设有优先级;
若设有优先级,则确定设有优先级的传输请求对应的第一目标地址;
从所述请求队列的尾端至首端依次查询各所述传输请求,并判断各所述传输请求对应的第二目标地址与所述第一目标地址是否存在重叠;
若存在重叠,则停止查询,并在将所述第一目标地址对应的传输请求写入所述请求队列时,将所述第一目标地址对应的传输请求写至存在重叠的所述第二目标地址对应的传输请求之后,以作为所述第二目标地址对应的传输请求的下一个传输请求。
7.如权利要求6所述的数据传输方法,其特征在于,在判定不存在重叠之后,还包括:
将所述第一目标地址对应的传输请求写至所述请求队列的首端。
8.如权利要求5所述的数据传输方法,其特征在于,从所述请求队列中获取传输请求时,还包括:
判断获取到的所述传输请求是否设有优先级;
若设有优先级,则使用预设DMA引擎对设有优先级的所述传输请求对应的目标数据块进行传输。
9.如权利要求1-8任一项所述的数据传输方法,其特征在于,根据所述目标数据块长度将所述目标数据块划分为与多个子数据块,包括:
根据所述目标数据块长度及DMA引擎最优传输数据长度将所述目标数据块划分为与多个子数据块;
每个所述子数据块的数据长度不大于所述DMA引擎最优传输数据长度。
10.如权利要求9所述的数据传输方法,其特征在于,根据所述目标数据块长度及DMA引擎最优传输数据长度将所述目标数据块划分为与多个子数据块,包括:
根据所述目标数据块长度及DMA引擎最优传输数据长度将所述目标数据块平均划分为数据块长度均相同的多个子数据块。
11.如权利要求10所述的数据传输方法,其特征在于,将多个所述子数据块分发至多个所述DMA引擎,包括:
将多个所述子数据块平均分发至多个所述DMA引擎。
12.如权利要求11所述的数据传输方法,其特征在于,每个所述DMA引擎对应不止一个所述子数据块时,还包括:
控制所述DMA引擎按照顺序依次对和自身对应的子数据块进行传输。
13.一种数据传输装置,其特征在于,所述装置包括:
请求接收单元,用于接收传输请求,所述传输请求中包括目标数据块的源地址、目标地址及目标数据块长度;
划分单元,用于从所述源地址中获取目标数据块,并根据所述目标数据块长度将所述目标数据块划分为多个子数据块;
分发单元,用于将多个所述子数据块分发至多个DMA引擎,以使各个所述DMA引擎将与自身对应的子数据块传输至所述目标地址,以完成对所述目标数据块的传输。
14.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于在存储计算机程序时,实现如权利要求1-12任一项所述的数据传输方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-12任一项所述的数据传输方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211459291.1A CN115658571B (zh) | 2022-11-16 | 2022-11-16 | 一种数据传输方法、装置、电子设备及介质 |
PCT/CN2023/101164 WO2024103720A1 (zh) | 2022-11-16 | 2023-06-19 | 一种数据传输方法、装置、电子设备及非易失性可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211459291.1A CN115658571B (zh) | 2022-11-16 | 2022-11-16 | 一种数据传输方法、装置、电子设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115658571A CN115658571A (zh) | 2023-01-31 |
CN115658571B true CN115658571B (zh) | 2023-02-28 |
Family
ID=85019906
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211459291.1A Active CN115658571B (zh) | 2022-11-16 | 2022-11-16 | 一种数据传输方法、装置、电子设备及介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115658571B (zh) |
WO (1) | WO2024103720A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115658571B (zh) * | 2022-11-16 | 2023-02-28 | 浪潮电子信息产业股份有限公司 | 一种数据传输方法、装置、电子设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101634975A (zh) * | 2009-08-20 | 2010-01-27 | 广东威创视讯科技股份有限公司 | 一种实现dma数据传输的方法及装置 |
CN102193886A (zh) * | 2010-03-05 | 2011-09-21 | Lsi公司 | 能够进行并发数据操纵的dma引擎 |
CN103714027A (zh) * | 2014-01-10 | 2014-04-09 | 浪潮(北京)电子信息产业有限公司 | 一种直接内存存取控制器的数据传输方法及装置 |
CN109471816A (zh) * | 2018-11-06 | 2019-03-15 | 西安微电子技术研究所 | 一种基于描述符的pcie总线dma控制器及数据传输控制方法 |
CN112765059A (zh) * | 2021-01-20 | 2021-05-07 | 苏州浪潮智能科技有限公司 | 一种基于fpga的dma设备及dma数据搬移方法 |
CN113434441A (zh) * | 2021-06-24 | 2021-09-24 | 深圳市航顺芯片技术研发有限公司 | 一种dma传输方法、装置、控制器及可读存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6832279B1 (en) * | 2001-05-17 | 2004-12-14 | Cisco Systems, Inc. | Apparatus and technique for maintaining order among requests directed to a same address on an external bus of an intermediate network node |
JP4908017B2 (ja) * | 2006-02-28 | 2012-04-04 | 富士通株式会社 | Dmaデータ転送装置及びdmaデータ転送方法 |
TW200734880A (en) * | 2006-03-07 | 2007-09-16 | Via Tech Inc | Direct memory access method for microcomputer system |
US8325633B2 (en) * | 2007-04-26 | 2012-12-04 | International Business Machines Corporation | Remote direct memory access |
KR20150120027A (ko) * | 2014-04-16 | 2015-10-27 | 주식회사 에이디칩스 | 컴퓨터 시스템에서의 메모리 접근 방법 |
CN115658571B (zh) * | 2022-11-16 | 2023-02-28 | 浪潮电子信息产业股份有限公司 | 一种数据传输方法、装置、电子设备及介质 |
-
2022
- 2022-11-16 CN CN202211459291.1A patent/CN115658571B/zh active Active
-
2023
- 2023-06-19 WO PCT/CN2023/101164 patent/WO2024103720A1/zh unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101634975A (zh) * | 2009-08-20 | 2010-01-27 | 广东威创视讯科技股份有限公司 | 一种实现dma数据传输的方法及装置 |
CN102193886A (zh) * | 2010-03-05 | 2011-09-21 | Lsi公司 | 能够进行并发数据操纵的dma引擎 |
CN103714027A (zh) * | 2014-01-10 | 2014-04-09 | 浪潮(北京)电子信息产业有限公司 | 一种直接内存存取控制器的数据传输方法及装置 |
CN109471816A (zh) * | 2018-11-06 | 2019-03-15 | 西安微电子技术研究所 | 一种基于描述符的pcie总线dma控制器及数据传输控制方法 |
CN112765059A (zh) * | 2021-01-20 | 2021-05-07 | 苏州浪潮智能科技有限公司 | 一种基于fpga的dma设备及dma数据搬移方法 |
CN113434441A (zh) * | 2021-06-24 | 2021-09-24 | 深圳市航顺芯片技术研发有限公司 | 一种dma传输方法、装置、控制器及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115658571A (zh) | 2023-01-31 |
WO2024103720A1 (zh) | 2024-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8683126B2 (en) | Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory | |
EP1133733B1 (en) | Host controller interface descriptor fetching unit | |
US5644784A (en) | Linear list based DMA control structure | |
US8825923B2 (en) | Memory system having high data transfer efficiency and host controller | |
US6868087B1 (en) | Request queue manager in transfer controller with hub and ports | |
US20160062930A1 (en) | Bus master, bus system, and bus control method | |
EP1188119A1 (en) | A method and apparatus for automatically transferring i/o blocks between a host system and a host adapter | |
US6128674A (en) | Method of minimizing host CPU utilization in driving an adapter by residing in system memory a command/status block a soft interrupt block and a status block queue | |
US20070180161A1 (en) | DMA transfer apparatus | |
CN103064807A (zh) | 多通道直接存储器存取控制器 | |
CN115658571B (zh) | 一种数据传输方法、装置、电子设备及介质 | |
CN113590512B (zh) | 可直连外设设备的自启动dma装置及应用 | |
US20080225858A1 (en) | Data transferring apparatus and information processing system | |
CN111290983A (zh) | Usb传输设备及传输方法 | |
CN111338999B (zh) | 直接存储器存取dma系统及数据传输方法 | |
US7529857B2 (en) | Data processing apparatus and data transfer control method | |
US20230269205A1 (en) | Switch for transmitting packet, network on chip having the same, and operating method thereof | |
CN114579319B (zh) | 显存管理方法、显存管理模块、soc及电子设备 | |
CN115878333A (zh) | 进程组间的一致性判断方法、装置及设备 | |
US6327636B1 (en) | Ordering for pipelined read transfers | |
US20080244132A1 (en) | Data transmission methods | |
CN114157619A (zh) | 报文缓存管理方法、装置及网络处理器 | |
CN111694777B (zh) | 基于PCIe接口的DMA传输方法 | |
JPH08212178A (ja) | 並列計算機 | |
US6240474B1 (en) | Pipelined read transfers |
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 |