CN109558348A - 数据搬移方法、装置及系统 - Google Patents
数据搬移方法、装置及系统 Download PDFInfo
- Publication number
- CN109558348A CN109558348A CN201811557736.3A CN201811557736A CN109558348A CN 109558348 A CN109558348 A CN 109558348A CN 201811557736 A CN201811557736 A CN 201811557736A CN 109558348 A CN109558348 A CN 109558348A
- Authority
- CN
- China
- Prior art keywords
- data
- default
- memory space
- subdata amount
- amount
- 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
- 238000000034 method Methods 0.000 title claims abstract description 23
- 230000015654 memory Effects 0.000 claims abstract description 117
- 230000004044 response Effects 0.000 claims abstract description 26
- 238000005194 fractionation Methods 0.000 claims abstract description 10
- 238000001514 detection method Methods 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims description 5
- 238000013461 design Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 5
- 238000002360 preparation method Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000000151 deposition Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000000465 moulding Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000000523 sample Substances 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
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
本申请提供了数据搬移方法、装置及系统,其中,方法包括:按照预设拆分规则,对I/O设备发送的DMA请求中的数据量进行分割,得到多个子数据量;在对目标子数据量进行响应之前,确定DMA控制器当前已响应的子数据量的个数;通过检测所述多个子数据量对应的数据是否都被写入预设目标存储空间,检测预设目标存储空间中当前是否存在可用存储空间;在当前已响应的子数据量的个数不大于预设数量阈值,和/或,预设目标存储空间存在可用存储空间,将目标子数据量的数据读入DMA控制器的预设存储空间,并将目标子数据量的数据从预设存储空间写入上位机。通过本申请,解决总线在响应读请求被挂死,与I/O设备对应的目标存储空间的数据被覆盖中的至少一种。
Description
技术领域
本申请涉及数据处理领域,特别是涉及一种数据搬移方法、一种数据搬移装置和一种数据搬移系统。
背景技术
存储空间直接访问(Direct Memory Access,DMA)表示一种快速搬移数据的机制,例如,将外部I/O设备的数据搬移到上位机的机制。DMA控制器为用于完成数据搬移的控制器。
目前,DMA控制器搬移数据的过程包括:DMA控制器在接收到I/O设备的DMA请求后,在DMA控制器处于准备搬移数据的状态下,给I/O设备回复应答信号;并将DMA请求中用于表示待搬移数据大小的数据量分割为多个子数据量,针对每个子数据量,DMA控制器向读总线发送读请求与向写总线发送写请求。
但是,会出现读总线被挂死和/或写总线效率低的问题。
发明内容
基于此,本申请提出了一种数据搬移方法,用以实现总线在响应读请求时被挂死和/或防止写入上位机的数据被覆盖。
本申请还提供了一种基于FPGA的数据搬移装置与一种数据搬移系统,用以保证上述方法在实际中的实现及应用。
本申请提供的技术方案为:
本申请提供了一种数据搬移方法,应用于DMA控制器,所述DMA控制器将I/O设备的待搬移数据搬移到上位机,包括:
按照预设拆分规则,对I/O设备发送的DMA请求中的数据量进行分割,得到多个子数据量;
在对目标子数据量进行响应之前,确定所述DMA控制器当前已响应的子数据量的个数;所述目标子数据量为任一个所述子数据量;
通过检测所述多个子数据量对应的数据是否都被写入预设目标存储空间,检测预设目标存储空间中当前是否存在可用存储空间;所述预设目标存储空间为上位机中用于存储所述I/O设备的数据的存储空间;
在所述当前已响应的子数据量的个数不大于预设数量阈值,和/或,所述预设目标存储空间存在可用存储空间,将所述目标子数据量的数据读入所述DMA控制器的预设存储空间,并将所述目标子数据量的数据从所述预设存储空间写入所述上位机;所述预设数量阈值表示所述预设存储空间能够存储的数据对应的子数据量的总个数。
优选的,所述将所述目标子数据量的数据读入所述DMA控制器的预设存储空间,并将所述目标子数据量的数据从所述预设存储空间写入所述上位机,包括:
将用于搬移所述目标子数据量的数据的读请求挂在内部总线;
在所述内部总线将所述目标子数据量的数据读入所述预设存储空间后,将用于搬移所述目标子数据量的数据的写请求挂在所述内部总线,使得所述内部总线将所述目标子数据量的数据从所述预设存储空间写入所述上位机。
优选的,在所述将所述目标子数据量的数据读入所述DMA控制器的预设存储空间之后,还包括:
将所述当前已响应的子数据量的个数加1。
优选的,在所述将所述目标子数据量的数据从所述预设存储空间写入所述上位机之后,还包括:
将所述当前已响应的子数据量的个数减1。
优选的,在所述将所述目标子数据量的数据从所述预设存储空间写入所述上位机之后,还包括:
在所述多个子数据量对应的数据都被写入所述预设目标存储空间后,向上位机发送中断指令;所述中断指令用于指示所述上位机将所述预设目标存储空间中的数据进行移除。
本申请还公开了一种数据搬移装置,所述数据搬移装置与内部总线连接,包括:分包模块、流控模块和搬移模块;
所述分包模块,用于按照预设拆分规则,对I/O设备发送的DMA请求中的数据量进行分割,得到多个子数据量;
所述流控模块,用于确定当前已响应的子数据量的个数,并依据所述当前已响应的子数据量的个数是否大于预设数量阈值,确定预设指示信号的电平值;所述预设数量阈值表示所述搬移装置的预设存储空间能够存储的数据对应的子数据量的总个数;
所述流控模块,还用于通过检测预设目标存储空间中是否存在可用存储空间,确定所述I/O设备对应的使能信号的电平值;所述预设目标存储空间为上位机中用于存储所述I/O设备的数据的预设存储空间;
所述分包模块,还用于在满足预设条件时,向所述搬移模块发送预设信息;所述预设条件包括:预设指示信号的电平值表示所述当前已响应的子数据量的个数不大于所述预设数量阈值,和/或,所述使能信号的电平值表示所述预设目标存储空间中存在可用存储空间;
所述搬移模块,用于在接收到所述预设信息时,将所述目标子数据量的数据读入所述数据搬移装置的预设存储空间,并将所述目标子数据量的数据从所述预设存储空间写入所述预设目标存储空间。
优选的,所述搬移模块包括:读队列子模块、写缓存子模块、写数据子模块、缓存子模块和引擎子模块;
所述分包模块,还用于在满足预设条件时向所述搬移模块发送预设信息,包括:
所述分包模块,还用于在满足所述预设条件时,向所述读队列子模块发送预设第一信息,向所述写缓存子模块发送预设第二信息;
所述搬移模块,用于在接收到所述预设信息时,将所述目标子数据量的数据读入所述数据搬移装置的预设存储空间,并将所述目标子数据量的数据从所述预设存储空间写入所述预设目标存储空间,包括:
所述读队列子模块,用于在接收到所述预设第一信息后,向所述引擎子模块发送读请求;
所述引擎子模块,用于依据所述读请求,将所述目标子数据量对应的数据读入所述缓存子模块;
所述读队列子模块,还用于在所述缓存子模块保存所述目标子数据量的数据后,将所述写缓存模块中的所述预设第二信息发送给所述写队列子模块;
所述写队列子模块,用于在检测到所述预设第二信息之后,向所述引擎子模块发送写请求;
所述引擎子模块,还用于依据所述写请求,将所述目标子数据量的数据从所述缓存子模块写入所述预设目标存储空间。
优选的,所述引擎子模块,还用于在将所述目标子数据量的数据从所述缓存子模块写入所述上位机之后,向所述流控模块发送写响应信号。
优选的,所述分包模块,还用于在向所述读队列子模块发送预设第一信息,向所述写缓存子模块发送预设第二信息时,向所述流控模块发送预设第三信息;所述预设第三信息包括标志位;所述标志位表示所述目标子数据量是否为所述DMA请求中数据量的最后一个待响应子数据量;
所述流控模块,还用于通过检测预设目标存储空间中是否存在可用存储空间,确定所述I/O设备对应的使能信号的电平值,包括:
所述流控模块,还用于在接收到的所述写响应信号后,在所述写响应信号对应的预设第三信息中的标志位表示最后一个目标子数据量,设置所述I/O设备的使能信号的电平值为第一电平值;否则,设置所述I/O设备的使能信号的电平值为第二电平值;所述第一电平值表示所述预设目标存储空间中不存在可用存储空间;所述第二电平值表示所述预设目标存储空间中存在可用存储空间。
优选的,所述流控模块,还用于在接收到所述写响应信号后,在所述预设第三信息中的标志位表示最后一个待响应目标子数据量的情况下,向所述上位机发送中断指令;所述中断指令用于指示所述上位机对所述目标存储空间中的数据进行移除。
优选的,所述流控模块,还用于在接收到所述上位机发送的目标指令的情况下,将所述/O设备对应的使能信号的电平值从所述第一电平值设置为所述第二电平值。
优选的,所述流控模块,还用于在接收到所述写响应信号的情况下,通过将当前已响应的子数据量的个数减1,更新所述当前已响应的子数据量的个数。
本申请还公开了一种数据搬移系统,包括I/O设备、基于FPGA的数据搬移装置和上位机;所述I/O设备与所述基于FPGA的数据搬移装置相连;所述上位机与所述基于FPGA的数据搬移装置通过总线连接;
所述I/O设备向所述基于FPGA的数据搬移装置发送DMA请求;所述DMA请求包括所述I/O设备的待搬移数据的数据量;
所述基于FPGA的数据搬移装置,用于从所述I/O设备的待搬移的数据搬移至所述上位机;所述基于FPGA的数据搬移装置为上述任意一项所述的基于FPGA的数据搬移装置。
本申请的有益效果为:
在本申请所公开的数据搬移方法、装置及系统,按照预设规则对DMA请求中的待搬移数据量进行拆分,得到多个子数据量;按照预设拆分规则,对I/O设备发送的DMA请求中的数据量进行分割,得到多个子数据量;在对目标子数据量进行响应之前,确定所述DMA控制器当前已响应的子数据量的个数;通过检测所述多个子数据量对应的数据是否都被写入预设目标存储空间,检测预设目标存储空间中当前是否存在可用存储空间;在当前已响应的子数据量的个数不大于预设数量阈值,和/或,预设目标存储空间存在可用存储空间,由于预设数量阈值为DMA控制器的缓冲区所能存储的数据对应的子数据量的总个数,因此,当前已响应的子数据量的个数不大于预设数量阈值,表示响应当前目标子数据量后,DMA控制器的缓冲区存在存储该目标子数据量对应的数据的存储空间;预设目标存储空间存在可用存储空间表示将当前目标子数据量对应的数据搬移到预设目标存储空间后,防止预设目标存储空间已存储的数据被覆盖。因此,本申请可以解决总线在响应读请求被挂死,与I/O设备对应的目标存储空间的数据被覆盖中的至少一种。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请中一种数据搬移方法实施例的流程示意图;
图2为本申请中一种基于FPGA的数据搬移系统的结构示意图;
图3为本申请中一种数据搬移系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请一种数据搬移方法实施例的流程图,应用于DMA控制器,包括以下步骤:
步骤101:在接收到I/O设备发送的DMA请求后,若DMA控制器处于准备状态,则向I/O设备发送应答信号。
在本实施例中,DMA请求中包括数据量,数据量表示I/O设备需搬移数据的大小。在本步骤中,准备状态表示DMA控制器可对DMA请求中的数据量进行响应,并且上一个DMA请求中的数据量都已响应。例如,当接收到DMA请求后,DMA控制器当前对上一个DMA请求中的数据量都已响应。此时,向I/O设备发送应答信号。
需要说明的是,在本步骤中只是给出了一种向I/O设备发送应答信号的条件;在实际应用中,还可以根据具体场景设置当接收到一个DMA请求时,具体发送应答信号的条件,本实施例并不对条件的具体内容作限定。
步骤102:按照预设拆分规则,将I/O设备发送的DMA请求中的数据量进行分割,得到多个子数据量。
一般情况下,DMA控制器搬移数据的通信协议中规定了每次搬移数据的数据量,在本步骤中,预设拆分规则为按照协议规定的数据量,将DMA请求中的数据量拆分为多个数据量,为了描述方便,将分割得到的每个数据量称为子数据量。例如,DMA请求中的数据量为2.5KB,协议规定每次搬移的数据量为1KB;预设的拆分规则为按照1KB为拆分标准,将数据量进行分割,得到3个子数据量,分别为1KB、1KB和0.5KB。
在数据搬移过程中,需要依次将每个数子数据量的数据从源地址搬移到目标地址。为了使得针对每个子数据量的数据,向读总线发送读请求后,DMA控制器的缓冲区都存在用于存储子数据量对应的数据的空间,在本实施例中,将DMA控制器的缓冲区的大小同样按照预设拆分规则进行分割,得到缓冲区的存储空间最多可以分割为子数据量的总个数。例如,DMA的缓冲区为5KB,此时,将缓冲区的存储空间分割成子数据量的总个数为5。
在本实施例中,依次对每个子数据量进行响应,其中,响应子数据量表示可以对子数据量进行处理,即将子数据量作为向内部总线发起读写请求的子事件。对每个子数据量的响应过程是相同的,以任意一个子数据量为例介绍具体的响应过程,为了描述方便,将任意一个子数据量称为目标子数据量。具体的,针对目标子数据量的响应过程可以包括步骤103~步骤109:
步骤103:在对目标子数据量进行响应之前,计算预设变量的当前值。
在本步骤中,预设变量的当前值表示DMA控制器当前已响应的子数据量的个数,例如,DMA控制器当前正在搬移5KB的数据,并且5KB为3个子数据量,则预设变量的当前值为3。预设变量的初始值可以为0,在初始过程中,预设变量的当前值就是初始值;当然,预设变量的初始值还可以为其他值,本实施例不对预设变量的初始值作限定。
步骤104:依据内部总线是否完成对DMA请求中的数据量对应的数据的搬移,确定I/O设备对应的使能信号的电平值。
在本实施例中,一个I/O设备对应一个使能信号,I/O设备对应的使能信号的电平值包括预设第一电平值与预设第二电平值,其中,预设第一电平值表示内部总线完成对DMA请求中的数据量对应的数据的搬移,此时,上位机的缓存中用于缓存该I/O设备的数据的预设目标存储空间中不存在可用存储空间;预设第二电平值表示内部总线未完成对DMA请求中的数据量对应的数据的搬移,此时,预设目标存储空间中存在可用存储空间。I/O设备对应的使能信号的电平值的初始值为预设第二电平值。
具体的,在本实施例中,内部总线完成对一个子数据量对应的数据的搬移后,DMA控制器生成一个写响应信号。在本步骤中,可以依据写响应信号的总个数是否达到分割得到的子数据量的总个数,如果未达到,则将该I/O设备对应的使能信号的电平值设置为预设第二电平值,如果达到,则将该I/O设备对应的使能信号的电平值设置为预设第一电平值。
还可以依据当前已完成搬移的目标子数据量是否为DMA请求中对应的多个子数据量中的最后一个子数据量,判断多个子数据量对应的数据是否都被搬移完成,在都被完成的情况下,将该I/O设备对应的使能信号的电平值设置为预设第一电平值;否则,将该I/O设备对应的使能信号的电平值设置为预设第二电平值。
步骤105:判断是否满足预设条件,在满足预设条件的情况下,执行步骤106,否则,执行步骤105。
在本步骤中,预设条件包括第一预设条件和/或第二预设条件。其中,第一预设条件为预设变量的当前值小于预设变量阈值;第二预设条件为该I/O设备的使能信号的电平值为预设的第二电平值。其中,预设数量阈值表示将DMA控制器的存储空间能够响应的子数据量的总个数。
其中,满足第一预设条件可以保证所DMA控制器还能够响应该目标子数据量,即响应该目标子数据量后,缓冲区中存在用于保存该目标子数据量对应的数据;使得内部总线不会在响应读请求时被挂死。
其中,满足第二预设条件可以保证上位机中与该I/O设备对应的存储空间中存在剩余存储空间,剩余存储空间用于存储该目标子数据量对应的数据,以免上位机中该I/O设备对应的存储空间中已存储的数据被覆盖。
需要说明的是,如果在实际应用中,需要既可以保证内部总线在响应读请求时不被挂死,又要保证该I/O设备已搬移的数据不被覆盖,预设条件包括第一预设条件和第二预设条件。具体的,预设条件包括第一预设条件和/或第二预设条件,可以根据实际情况进行设定,本实施例不作限定。
步骤105的目的是:在当前已响应子数据量的个数不大于预设数量阈值,和/或,预设目标存储空间存在可用存储空间的情况下,执行步骤106。
步骤106:对目标子数据量进行响应。
具体的响应过程可以包括:
步骤A1:向内部总线发起用于搬移目标子数据量的数据的读请求。
在本步骤中,向总线发送读请求,在读请求中包括:源地址和目标子数据量。在本实施例中,DMA控制器通过AXI4协议与内部总线通信。
步骤A2:目标子数据量的数据保存在缓冲区的预设存储空间。
该步骤的具体实现为现有技术,这里不再赘述。
步骤A3:在目标子数据量的数据保存在缓冲区后,向内部总线发起写请求。
在本步骤中,缓冲区为DMA控制器中预设存储空间。写请求中包括:目标地址与子数据量。
在本步骤中,是在将目标子数据量的数据保存在缓冲区后,再向内部总线发起写请求,使得内部总线在响应写请求时,缓冲区中已存在了目标子数据量的数据,进而,内部总线无需等待,直接进行搬移,从而提高内部总线响应写请求的效率。
在本实施例中,在响应目标子数据量的情况下,将预设变量的当前值加1来更新预设变量的当前值,使得本实施例再次判断预设变量的当前值是否小于预设数量阈值时,所采用的预设变量的当前值是最新的当前值。
在本实施例中,在目标子数据量的数据被写入上位机的预设目标存储空间后,通过将预设变量的当前值减1,更新预设变量的当前值,使得本实施在判断预设变量的当前值是否小于预设数量阈值时,所采用的预设变量的当前值是最新的当前值。
在本实施例中,在DMA请求对应的全部子数据量对应的数据写入上位机后,向上位机发送中断指令,该中断指令用于指示上位机将目标存储空间中的数据移除;同时,本实施例将I/O设备对应的使能信号设置为预设第一电平值;预设第一电平值表示在接收到该I/O设备发送的DMA请求后,暂时不响应该DMA请求,以免目标存储空间中的数据被覆盖。
在本实施例中,当上位机将目标存储空间中的数据移除后,向DMA控制器发送目标指令,该目标指令指示DMA控制器可以响应该I/O设备发送的DMA请求中的数据量,此时,本实施例将该I/O设备对应的使能信号设置为预设第二电平值;预设第二电平值表示在接收到该I/O设备发送的DMA请求后,可响应该DMA请求。
在本实施例中,为了使得I/O设备的DMA请求中的数据量对应的数据都已搬移完成,为了防止已搬移的数据被覆盖,步骤104可以优选为判断预设变量的当前值是否小于预设变量阈值,并且,判断I/O设备对应的使能信号的电平值是否为预设第二电平值。
图2为本申请中一种基于FPGA的数据搬移系统的结构示意图,可以包括:I/O设备、基于FPGA的数据搬移装置和上位机,其中,I/O设备与基于FPGA的数据搬移装置相连,上位机与基于FPGA的数据搬移装置通过外部总线连接。
基于FPGA的数据搬移装置包括I/O控制模块、DMA控制器和内部总线,其中,I/O控制模块与DMA控制器都通过AXI4协议与内部总线通信。
DMA控制器包括:分包模块201、流控模块202、搬移模块203;其中,搬移模块203包括读队列子模块2031、写缓存子模块2032、写队列子模块2033、引擎子模块3034和缓存子模块2035。
基于FPGA的数据搬移装置的工作过程,包括以下步骤:
S301、I/O控制模块向分包模块201发送DMA请求和向量;DMA请求中包括数据量;向量包括:I/O设备标识;
在本实施例中,当I/O设备中的数据需要DMA控制器搬移到内存中时,I/O控制模块向DMA控制器发送DMA请求,在DMA请求中包含了I/O设备需搬移数据的数据量。例如,I/O设备需搬移数据的数据量为2.5KB,DAM请求中的数据量为2.5KB。在本实施例中,I/O设备可以为超声仪器的探头。
S302、分包模块201在自身处于准备状态时,向I/O控制模块发送应答信号。
S303、分包模块201依据I/O控制模块中上位机已配置的包长度,将数据量拆分为多个子数据量。
例如,DMA请求中的数据量为2.5KB,上位机配置的包长度为0.5KB,则分包模块301将数据量分为5个子数据量,每个子数据量的大小为0.5KB。
S304、分包模块201获取上位机配置的源地址与目标地址。
在本实施例中,上位机事先在I/O控制模块中配置了I/O设备中待搬移数据的地址,为了描述方便,本实施例将I/O设备中待搬移数据的地址称为源地址。并且,在本实施例中,上位机还事先在I/O控制模块中配置了I/O设备的待搬移数据需要搬移到内存中的地址,为了描述方便,将上位机配置的I/O设备的待搬移数据所需搬移到的地址称为目标地址。
S305、分包模块201向读队列子模块2031发送预设第一信息、向写缓存子模块2032发送预设第二信息、向流控模块202发送预设第三信息。
本步骤中,当满足第一预设条件与第二预设条件时,分包模块201执行本步骤的动作。
需要说明的是,当同时满足第一预设条件与第二预设条件时,分包模块201执行本步骤的动作,是一种最优的实施例,在实际应用中,根据实际情况,确定满足哪个条件时,执行本步骤的动作。
第一预设条件:流控模块202的预设指示信号的电平值表示预设变量的当前值小于预设数量阈值;其中,预设变量的当前值表示当前正在响应的子数据量的个数。
第二预设条件:流控模块202中表示该I/O设备标识的使能信号为预设第二电平值。
对于第一预设条件:预设变量的当前值可以通过队列深度实现,当前的队列深度值表示预设变量的当前值。队列深度的初始值可以设置为0,当然,也可以设置为其他数值,本实施例不对具体的取值作限定。只要队列深度的初始值与预设数量阈值间的差值是缓存子模块的存储空间换算为子数据量的总个数。
例如,上位机配置的包长度为0.5KB,缓存子模块的存储空间为10KB,则缓存子模块的存储空间所能换算为子数据量的总个数为20个;此时,队列深度的初始值与预设数量阈值的差值为20即可,比如,初始值为0,预设数量阈值为20;初始值为3,预设数量阈值为23等等。
对于第二预设条件:该I/O设备对应的使能信号为预设第二电平值表示:上位机中用于存储该I/O设备的预设目标存储空间中存在可用存储空间。该I/O设备对应的使能信号的初始值为预设第二电平值。
在本步骤中,预设第一信息包括:源地址与子数据量;预设第二信息包括:目标地址与子数据量;预设第三信息包括:I/O设备标识和用于表示事件是否结束的标志位。
S306、流控模块202每接收到一个预设第三信息,流控模块202的队列深度值加1。
S307、读队列子模块2031检测到预设第一信息时,通过读地址总线向引擎子模块2034发送读数据请求;读数据请求包括:预设第一信息。
S308、引擎子模块2034将读数据请求接口转化成标准AXI4接口。
S309、引擎子模块2034将具有标准AXI4接口的读数据请求挂在内部总线。
内部总线在接收到读数据请求后,依据读数据请求中的源地址与子数据量,从I/O控制模块的源地址中读取子数据量的数据;并通过读数据总线将所读取的子数据量的数据传输至缓存子模块2035。具体的,内部总线从源地址中读取子数据量的数据,并将所读取的数据传输至缓存子模块为现有技术,这里不再赘述。
S310、读队列子模块2031检测到内部总线将子数据量的数据传输至缓存子模块2035的情况下,将写缓存子模块2032中的预设第二信息发送给写队列子模块2033。
S311、写队列子模块2033在接收到预设第二信息时,通过写地址总线向引擎子模块2034发送写请求;写请求中包括目标地址和子数据量。
S312、引擎子模块2034将写请求的接口转化为标准AXI4接口,并将具有AXI4接口的写请求挂在内部总线。
内部总线通过写数据总线将缓存子模块2035中的子数据量的数据写到上位机的内存的目标地址对应的目标存储空间中。具体的,内部总线将子数据量的数据写到上位机的内存的目标地址中为现有技术,这里不再赘述。
S313、在内部总线将子数据量的数据从缓存子模块2035搬移到目标地址对应的目标存储空间后,引擎子模块2034向流控模块202发送写响应信号。
S314、流控模块202在接收到写响应信号后,将队列深度值减1。
流控模块202接收到写响应信号,表明DMA控制器完成了一个子数据量的数据的搬移,因此,DMA控制器的预设变量的当前值减少1,进而,流控模块202将队列深度值减1。
S315、流控模块202依据当前队列深度值是否小于预设数量阈值,确定预设指示信号的电平值。
S316、流控模块202判断当前标志位是否表示DMA请求中的最后一个子数据量。
在本步骤中,当流控模块202接收到写响应信号时,判断当前子数据量对应的预设第三信息中标志位是否为表示事件结束的标志位,若是,则执行S317。
需要说明的是,本实施例对S315与S316的执行顺序不作限定。
S317、流控模块202发送用于上位机搬移目标地址中的数据的中断指令;并将该I/O设备对应的使能信号设置为预设第一电平值;所述预设第一电平值表示该I/O设备在上位机中对应的目标存储空间中不存在可用存储空间。
当流控模块202判断出当前已搬移数据对应的预设第三信息中标志表示时间结束的标志位时,表明该DMA请求所需搬移的数据都已搬移到上位机的内存中,为了防止上位机内存中所存储的该DMA请求需搬移数据被覆盖,在本步骤中,流控模块202将I/O设备标识对应的使能信号设置为预设第一电平值,使得分包模块301暂时不响应该I/O设备对应的DMA请求中的数据量,即暂时不向搬移模块203发送预设第一信息和预设第二信息,以及暂时不向流控模块202发送预设第三信息。
S318、当流控模块202接收到表示上位机已从目标地址中取出数据的指令时,将I/O设备标识对应的使能信号设置为预设第二电平值。
图3为本申请中一种数据搬移系统的结构示意图,可以包括:I/O设备301,基于FPGA的数据搬移装置302和上位机303;
其中,I/O设备301向基于FPGA的数据搬移装置302发送DMA请求;DMA请求包括I/O设备301的待搬移数据的数据量;
基于FPGA的数据搬移装置302,用于从源地址搬移数据至上位机303的目标地址对应的预设目标存储空间;基于FPGA的数据搬移装置302为图2对应的实施例所述的基于FPGA的数据搬移装置。基于FPGA的数据搬移装置的具体工作原理这里不再赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同相似部分互相参见即可。在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。在文中的“包括”、“包含”等词语解释为包含的含义而不是排他或穷举的含义;也就是说,是“包含但不限于”的含义。在不脱离本发明构思的前提下,还可以做出变形、同等替换、改进等,这些都属于本发明的保护范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (13)
1.一种数据搬移方法,应用于DMA控制器,所述DMA控制器将I/O设备的待搬移数据搬移到上位机,其特征在于,包括:
按照预设拆分规则,对I/O设备发送的DMA请求中的数据量进行分割,得到多个子数据量;
在对目标子数据量进行响应之前,确定所述DMA控制器当前已响应的子数据量的个数;所述目标子数据量为任一个所述子数据量;
通过检测所述多个子数据量对应的数据是否都被写入预设目标存储空间,检测预设目标存储空间中当前是否存在可用存储空间;所述预设目标存储空间为上位机中用于存储所述I/O设备的数据的存储空间;
在所述当前已响应的子数据量的个数不大于预设数量阈值,和/或,所述预设目标存储空间存在可用存储空间,将所述目标子数据量的数据读入所述DMA控制器的预设存储空间,并将所述目标子数据量的数据从所述预设存储空间写入所述上位机;所述预设数量阈值表示所述预设存储空间能够存储的数据对应的子数据量的总个数。
2.根据权利要求1所述的方法,其特征在于,所述将所述目标子数据量的数据读入所述DMA控制器的预设存储空间,并将所述目标子数据量的数据从所述预设存储空间写入所述上位机,包括:
将用于搬移所述目标子数据量的数据的读请求挂在内部总线;
在所述内部总线将所述目标子数据量的数据读入所述预设存储空间后,将用于搬移所述目标子数据量的数据的写请求挂在所述内部总线,使得所述内部总线将所述目标子数据量的数据从所述预设存储空间写入所述上位机。
3.根据权利要求1所述的方法,其特征在于,在所述将所述目标子数据量的数据读入所述DMA控制器的预设存储空间之后,还包括:
将所述当前已响应的子数据量的个数加1。
4.根据权利要求1所述的方法,其特征在于,在所述将所述目标子数据量的数据从所述预设存储空间写入所述上位机之后,还包括:
将所述当前已响应的子数据量的个数减1。
5.根据权利要求1所述的方法,其特征在于,在所述将所述目标子数据量的数据从所述预设存储空间写入所述上位机之后,还包括:
在所述多个子数据量对应的数据都被写入所述预设目标存储空间后,向上位机发送中断指令;所述中断指令用于指示所述上位机将所述预设目标存储空间中的数据进行移除。
6.一种数据搬移装置,所述数据搬移装置与内部总线连接,其特征在于,包括:分包模块、流控模块和搬移模块;
所述分包模块,用于按照预设拆分规则,对I/O设备发送的DMA请求中的数据量进行分割,得到多个子数据量;
所述流控模块,用于确定当前已响应的子数据量的个数,并依据所述当前已响应的子数据量的个数是否大于预设数量阈值,确定预设指示信号的电平值;所述预设数量阈值表示所述搬移装置的预设存储空间能够存储的数据对应的子数据量的总个数;
所述流控模块,还用于通过检测预设目标存储空间中是否存在可用存储空间,确定所述I/O设备对应的使能信号的电平值;所述预设目标存储空间为上位机中用于存储所述I/O设备的数据的预设存储空间;
所述分包模块,还用于在满足预设条件时,向所述搬移模块发送预设信息;所述预设条件包括:预设指示信号的电平值表示所述当前已响应的子数据量的个数不大于所述预设数量阈值,和/或,所述使能信号的电平值表示所述预设目标存储空间中存在可用存储空间;
所述搬移模块,用于在接收到所述预设信息时,将所述目标子数据量的数据读入所述数据搬移装置的预设存储空间,并将所述目标子数据量的数据从所述预设存储空间写入所述预设目标存储空间。
7.根据权利要求6所述的数据搬移装置,其特征在于,所述搬移模块包括:读队列子模块、写缓存子模块、写数据子模块、缓存子模块和引擎子模块;
所述分包模块,还用于在满足预设条件时向所述搬移模块发送预设信息,包括:
所述分包模块,还用于在满足所述预设条件时,向所述读队列子模块发送预设第一信息,向所述写缓存子模块发送预设第二信息;
所述搬移模块,用于在接收到所述预设信息时,将所述目标子数据量的数据读入所述数据搬移装置的预设存储空间,并将所述目标子数据量的数据从所述预设存储空间写入所述预设目标存储空间,包括:
所述读队列子模块,用于在接收到所述预设第一信息后,向所述引擎子模块发送读请求;
所述引擎子模块,用于依据所述读请求,将所述目标子数据量对应的数据读入所述缓存子模块;
所述读队列子模块,还用于在所述缓存子模块保存所述目标子数据量的数据后,将所述写缓存模块中的所述预设第二信息发送给所述写队列子模块;
所述写队列子模块,用于在检测到所述预设第二信息之后,向所述引擎子模块发送写请求;
所述引擎子模块,还用于依据所述写请求,将所述目标子数据量的数据从所述缓存子模块写入所述预设目标存储空间。
8.根据权利要求7所述的数据搬移装置,其特征在于,
所述引擎子模块,还用于在将所述目标子数据量的数据从所述缓存子模块写入所述上位机之后,向所述流控模块发送写响应信号。
9.根据权利要求8所述的数据搬移装置,其特征在于,
所述分包模块,还用于在向所述读队列子模块发送预设第一信息,向所述写缓存子模块发送预设第二信息时,向所述流控模块发送预设第三信息;所述预设第三信息包括标志位;所述标志位表示所述目标子数据量是否为所述DMA请求中数据量的最后一个待响应子数据量;
所述流控模块,还用于通过检测预设目标存储空间中是否存在可用存储空间,确定所述I/O设备对应的使能信号的电平值,包括:
所述流控模块,还用于在接收到的所述写响应信号后,在所述写响应信号对应的预设第三信息中的标志位表示最后一个目标子数据量,设置所述I/O设备的使能信号的电平值为第一电平值;否则,设置所述I/O设备的使能信号的电平值为第二电平值;所述第一电平值表示所述预设目标存储空间中不存在可用存储空间;所述第二电平值表示所述预设目标存储空间中存在可用存储空间。
10.根据权利要求9所述的数据搬移装置,其特征在于,
所述流控模块,还用于在接收到所述写响应信号后,在所述预设第三信息中的标志位表示最后一个待响应目标子数据量的情况下,向所述上位机发送中断指令;所述中断指令用于指示所述上位机对所述目标存储空间中的数据进行移除。
11.根据权利要求10所述的数据搬移装置,其特征在于,
所述流控模块,还用于在接收到所述上位机发送的目标指令的情况下,将所述/O设备对应的使能信号的电平值从所述第一电平值设置为所述第二电平值。
12.根据权利要求8所述的数据搬移装置,其特征在于,所述流控模块,还用于在接收到所述写响应信号的情况下,通过将当前已响应的子数据量的个数减1,更新所述当前已响应的子数据量的个数。
13.一种数据搬移系统,其特征在于,包括I/O设备、基于FPGA的数据搬移装置和上位机;所述I/O设备与所述基于FPGA的数据搬移装置相连;所述上位机与所述基于FPGA的数据搬移装置通过总线连接;
所述I/O设备向所述基于FPGA的数据搬移装置发送DMA请求;所述DMA请求包括所述I/O设备的待搬移数据的数据量;
所述基于FPGA的数据搬移装置,用于从所述I/O设备的待搬移的数据搬移至所述上位机;所述基于FPGA的数据搬移装置为权利要求8~12任意一项所述的基于FPGA的数据搬移装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811557736.3A CN109558348A (zh) | 2018-12-19 | 2018-12-19 | 数据搬移方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811557736.3A CN109558348A (zh) | 2018-12-19 | 2018-12-19 | 数据搬移方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109558348A true CN109558348A (zh) | 2019-04-02 |
Family
ID=65870482
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811557736.3A Pending CN109558348A (zh) | 2018-12-19 | 2018-12-19 | 数据搬移方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109558348A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111615692A (zh) * | 2019-05-23 | 2020-09-01 | 深圳市大疆创新科技有限公司 | 数据搬运方法、计算处理装置、设备及存储介质 |
CN111782154A (zh) * | 2020-07-13 | 2020-10-16 | 北京四季豆信息技术有限公司 | 数据搬移方法、装置及系统 |
CN112947857A (zh) * | 2021-02-25 | 2021-06-11 | 山东英信计算机技术有限公司 | 一种数据搬移方法、装置、设备及计算机可读存储介质 |
CN116185310A (zh) * | 2023-04-27 | 2023-05-30 | 中茵微电子(南京)有限公司 | 一种存储器数据读写调度方法及装置 |
US11789709B2 (en) | 2019-09-18 | 2023-10-17 | Huawei Technologies Co., Ltd. | Intermediate representation construction method, compiler, and server |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060179185A1 (en) * | 2005-02-09 | 2006-08-10 | International Business Machines Corporation | Method to preserve ordering of read and write operations in a DMA system by delaying read access |
CN101645057A (zh) * | 2008-08-06 | 2010-02-10 | 中兴通讯股份有限公司 | 一种防止cpu局域总线挂死的方法及装置 |
CN106844245A (zh) * | 2017-02-17 | 2017-06-13 | 北京腾凌科技有限公司 | 数据传输方法及装置 |
CN107203484A (zh) * | 2017-06-27 | 2017-09-26 | 北京计算机技术及应用研究所 | 一种基于FPGA的PCIe与SRIO总线桥接系统 |
-
2018
- 2018-12-19 CN CN201811557736.3A patent/CN109558348A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060179185A1 (en) * | 2005-02-09 | 2006-08-10 | International Business Machines Corporation | Method to preserve ordering of read and write operations in a DMA system by delaying read access |
CN101645057A (zh) * | 2008-08-06 | 2010-02-10 | 中兴通讯股份有限公司 | 一种防止cpu局域总线挂死的方法及装置 |
CN106844245A (zh) * | 2017-02-17 | 2017-06-13 | 北京腾凌科技有限公司 | 数据传输方法及装置 |
CN107203484A (zh) * | 2017-06-27 | 2017-09-26 | 北京计算机技术及应用研究所 | 一种基于FPGA的PCIe与SRIO总线桥接系统 |
Non-Patent Citations (1)
Title |
---|
闫改 等: "基于DSP的PCI总线高速DMA数据传输", 无线电工程, vol. 43, no. 8, pages 19 - 21 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111615692A (zh) * | 2019-05-23 | 2020-09-01 | 深圳市大疆创新科技有限公司 | 数据搬运方法、计算处理装置、设备及存储介质 |
US11789709B2 (en) | 2019-09-18 | 2023-10-17 | Huawei Technologies Co., Ltd. | Intermediate representation construction method, compiler, and server |
CN111782154A (zh) * | 2020-07-13 | 2020-10-16 | 北京四季豆信息技术有限公司 | 数据搬移方法、装置及系统 |
CN111782154B (zh) * | 2020-07-13 | 2023-07-04 | 芯象半导体科技(北京)有限公司 | 数据搬移方法、装置及系统 |
CN112947857A (zh) * | 2021-02-25 | 2021-06-11 | 山东英信计算机技术有限公司 | 一种数据搬移方法、装置、设备及计算机可读存储介质 |
CN116185310A (zh) * | 2023-04-27 | 2023-05-30 | 中茵微电子(南京)有限公司 | 一种存储器数据读写调度方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109558348A (zh) | 数据搬移方法、装置及系统 | |
CN103853620B (zh) | 一种众核处理器进程间相互通信的方法、装置及系统 | |
CN102244579B (zh) | 网卡及网络数据接收方法 | |
CN100349150C (zh) | 通过直接存储器访问控制器传输数据的系统及方法 | |
WO2014176981A1 (zh) | 一种跨页预取方法、装置及系统 | |
CN104111870B (zh) | 一种中断处理装置及中断处理方法 | |
CN101877666A (zh) | 基于零拷贝方式的多应用程序报文接收方法和装置 | |
CN106933512B (zh) | 一种数据读写的方法及其设备 | |
CN108898012A (zh) | 检测非法程序的方法和装置 | |
JP5732806B2 (ja) | データ転送装置及びデータ転送方法 | |
CN112579515A (zh) | 线程消息处理方法及相关产品 | |
CN110209605A (zh) | Pcie总线网卡的寄存器读写方法和计算设备 | |
CN116257472B (zh) | 接口控制方法、装置、电子设备及存储介质 | |
CN110399219B (zh) | 内存访问方法、dmc及存储介质 | |
CN106844025A (zh) | 一种异步中断处理方法及中断控制器 | |
CN106776393B (zh) | 一种无中断的串口数据接收方法和装置 | |
CN100365606C (zh) | 安全数字存储卡数据的存储器直接存取方法及其接口电路 | |
CN110532258B (zh) | 故障波传输方法和装置 | |
CN114579319A (zh) | 显存管理方法、显存管理模块、soc及电子设备 | |
CN108255417B (zh) | 数据访问方法、电子装置及可读存储介质 | |
US10977201B1 (en) | Per IO direct memory access redirection | |
JP2003099324A5 (zh) | ||
CN107665092B (zh) | 一种存储方法及装置 | |
CN117539797B (zh) | 一种脏页记录方法及相关设备 | |
CN116431561B (zh) | 基于异构众核加速卡的数据同步方法、装置、设备及介质 |
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 |