数据搬移方法、装置及系统制造方法及图纸

技术编号:20763846 阅读:29 留言:0更新日期:2019-04-03 14:18
本申请提供了数据搬移方法、装置及系统,其中,方法包括:按照预设拆分规则,对I/O设备发送的DMA请求中的数据量进行分割,得到多个子数据量;在对目标子数据量进行响应之前,确定DMA控制器当前已响应的子数据量的个数;通过检测所述多个子数据量对应的数据是否都被写入预设目标存储空间,检测预设目标存储空间中当前是否存在可用存储空间;在当前已响应的子数据量的个数不大于预设数量阈值,和/或,预设目标存储空间存在可用存储空间,将目标子数据量的数据读入DMA控制器的预设存储空间,并将目标子数据量的数据从预设存储空间写入上位机。通过本申请,解决总线在响应读请求被挂死,与I/O设备对应的目标存储空间的数据被覆盖中的至少一种。

【技术实现步骤摘要】
数据搬移方法、装置及系统
本申请涉及数据处理领域,特别是涉及一种数据搬移方法、一种数据搬移装置和一种数据搬移系统。
技术介绍
存储空间直接访问(DirectMemoryAccess,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设本文档来自技高网...

【技术保护点】
1.一种数据搬移方法,应用于DMA控制器,所述DMA控制器将I/O设备的待搬移数据搬移到上位机,其特征在于,包括:按照预设拆分规则,对I/O设备发送的DMA请求中的数据量进行分割,得到多个子数据量;在对目标子数据量进行响应之前,确定所述DMA控制器当前已响应的子数据量的个数;所述目标子数据量为任一个所述子数据量;通过检测所述多个子数据量对应的数据是否都被写入预设目标存储空间,检测预设目标存储空间中当前是否存在可用存储空间;所述预设目标存储空间为上位机中用于存储所述I/O设备的数据的存储空间;在所述当前已响应的子数据量的个数不大于预设数量阈值,和/或,所述预设目标存储空间存在可用存储空间,将所述目标子数据量的数据读入所述DMA控制器的预设存储空间,并将所述目标子数据量的数据从所述预设存储空间写入所述上位机;所述预设数量阈值表示所述预设存储空间能够存储的数据对应的子数据量的总个数。

【技术特征摘要】
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所述的数据搬移装置,其特征在于,所述搬移模块包括:读队列子模块、写缓存子模块、...

【专利技术属性】
技术研发人员:黄明军刘家家刘辉
申请(专利权)人:深圳开立生物医疗科技股份有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1