CN111367839B - 一种主机端与fpga加速器之间的数据同步方法 - Google Patents
一种主机端与fpga加速器之间的数据同步方法 Download PDFInfo
- Publication number
- CN111367839B CN111367839B CN202010108433.4A CN202010108433A CN111367839B CN 111367839 B CN111367839 B CN 111367839B CN 202010108433 A CN202010108433 A CN 202010108433A CN 111367839 B CN111367839 B CN 111367839B
- Authority
- CN
- China
- Prior art keywords
- state information
- memory
- address space
- frame number
- data frame
- 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
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000004891 communication Methods 0.000 claims description 32
- 230000001360 synchronised effect Effects 0.000 claims description 25
- 238000012546 transfer Methods 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 108050008339 Heat Shock Transcription Factor Proteins 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012795 verification 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
-
- 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
-
- 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
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7885—Runtime interface, e.g. data exchange, runtime control
- G06F15/7889—Reconfigurable logic implemented as a co-processor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Abstract
本申请公开了一种主机端与FPGA加速器之间的数据同步方法,包括:在检测到主机端向预设内存空间搬移数据之后,根据第一地址空间的第一状态信息生成第二状态信息,并写入第二地址空间;在检测到第二地址空间上的第二状态信息之后,调用DMA将预设内存空间的数据搬移至FPGA加速器的内存空间,并将第二状态信息拷贝至第一地址空间,以实现同步。可见,该方法实现了基于两个地址空间上的状态信息执行数据同步操作,由FPGA加速器一侧的控制器来主动执行双端内存数据同步,降低了数据同步延时,提升了系统吞吐率。此外,本申请还提供了一种双端内存同步器、FPGA加速器和数据同步系统,其技术效果与上述方法的技术效果相对应。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种主机端与FPGA加速器之间的数据同步方法、双端内存同步器、FPGA加速器及数据同步系统。
背景技术
目前,通用计算系统均采用基于PCIe的局部总线结构,如图1所示,其作用与PCI总线类似,主要是为了连接处理系统中的外部设备,挂载于总线上的设备通过PCIe控制器实现点对点数据通信。与ISA、EISA以及MAC总线相比,PCIe总线具有总线与处理器空间隔离、可扩展性佳、支持动态配置以及端到端的高总线数据带宽等优点。
FPGA作为时下新兴的加速器设备,主要通过PCIe总线与处理器进行通信,FPGA加速器件作为一个PCIe-Agent设备,具有独立的板载内存空间用于数据存储。在x86架构中,处理器与FPGA进行数据交互需要通过RC完成地址空间的转换以及物理信号转换。在某些新兴应用场景中,FPGA作为加速设备需用使用位于处理器端的数据,借助OpenCL异构编程模型,使用FPGA端的DMA控制器将主机端的数据拷贝至加速器端板载内存的指定区域中。
当前使用的基于软件指令的被动内存拷贝方式,增加了数据同步的步骤。PCIe中Host与FPGA通信使用DMA或者Bar空间映射来搬移数据,他们的工作需要控制器接入,使用指令控制读写的发起与取消。在数据搬移的过程中,需要编写特定的代码来维护两端的数据同步,代码运行在Host端就会存在数据搬移响应延迟不稳定等问题。在AI推理等关键应用场景中,该技术模式增加了应用系统内存操作延时,降低了系统吞吐效率。
发明内容
本申请的目的是提供一种主机端与FPGA加速器之间的数据同步方法、双端内存同步器、FPGA加速器及数据同步系统,用以解决传统的主机端与FPGA加速器之间的同步方案的同步延时较高的问题。
具体方案如下:
第一方面,本申请提供了一种主机端与FPGA加速器之间的数据同步方法,包括:
在检测到主机端向预设内存空间搬移数据之后,根据第一地址空间的第一状态信息生成第二状态信息,并将所述第二状态信息写入第二地址空间;其中,所述第一地址空间和所述第二地址空间为Bar空间映射在所述主机端的不同的地址空间,所述第一状态信息包括上一数据帧号和当前数据帧号,所述第二状态信息包括当前数据帧号和下一数据帧号;
在检测到所述第二地址空间上的所述第二状态信息之后,调用DMA将所述预设内存空间的数据搬移至FPGA加速器的内存空间,并将所述第二状态信息拷贝至所述第一地址空间,以实现同步。
优选的,在所述在检测到主机端向预设内存空间搬移数据之后,根据第一地址空间的第一状态信息生成第二状态信息之前,还包括:
通过读写Bar空间映射在所述主机端的第一地址空间,建立所述主机端与所述FPGA加速器之间的内存同步通信链路。
优选的,在所述在检测到主机端向预设内存空间搬移数据之后,根据第一地址空间的第一状态信息生成第二状态信息之前,还包括:
所述主机端从第一地址空间读取第一状态信息,根据第一状态信息确定上一数据帧号和当前数据帧号;通过判断所述上一数据帧号与所述当前数据帧号之间的差值是否为预设阈值,对所述内存同步通信链路进行可靠性校验。
优选的,在所述通过判断所述上一数据帧号与所述当前数据帧号之间的差值是否为预设阈值,对所述内存同步通信链路进行可靠性校验之后,还包括:
若所述内存同步通信链路在预设时间内未通过可靠性校验,则所述主机端继续搬移数据至预设内存空间直至一帧结束。
优选的,在所述调用DMA将所述预设内存空间的数据搬移至FPGA加速器的内存空间之前,还包括:
获取所述第二地址空间上的第二状态信息,根据所述第二状态信息确定当前数据帧号和下一数据帧号;通过判断所述当前数据帧号和所述下一数据帧号之间的差值是否为预设阈值,对所述内存同步通信链路进行可靠性校验。
优选的,在所述通过判断所述当前数据帧号和所述下一数据帧号之间的差值是否为预设阈值,对所述内存同步通信链路进行可靠性校验之后,还包括:
若所述内存同步通信链路未通过可靠性校验,则向所述第二地址空间写入第三状态信息,以停止调用DMA进行数据搬移的操作。
优选的,还包括:
所述主机端向所述第二地址空间写入第三状态信息,以结束同步。
第二方面,本申请提供了一种双端内存同步器,包括:
状态信息写入模块:用于在检测到主机端向预设内存空间搬移数据之后,根据第一地址空间的第一状态信息生成第二状态信息,并将所述第二状态信息写入第二地址空间;其中,所述第一地址空间和所述第二地址空间为Bar空间映射在所述主机端的不同的地址空间,所述第一状态信息包括上一数据帧号和当前数据帧号,所述第二状态信息包括当前数据帧号和下一数据帧号;
数据搬移模块:用于在检测到所述第二地址空间上的所述第二状态信息之后,调用DMA将所述预设内存空间的数据搬移至FPGA加速器的内存空间,并将所述第二状态信息拷贝至所述第一地址空间,以实现同步。
第三方面,本申请提供了一种FPGA加速器,包括如上所述的双端内存同步器。
第四方面,本申请提供了一种数据同步系统,包括主机端和FPGA加速器,所述FPGA加速器包括如上所述的双端内存同步器。
本申请所提供的一种主机端与FPGA加速器之间的数据同步方法,包括:在检测到主机端向预设内存空间搬移数据之后,根据第一地址空间的第一状态信息生成第二状态信息,并将第二状态信息写入第二地址空间;在检测到第二地址空间上的第二状态信息之后,调用DMA将预设内存空间的数据搬移至FPGA加速器的内存空间,并将第二状态信息拷贝至第一地址空间,以实现同步。可见,该方法实现了基于两个地址空间上的状态信息执行数据同步操作,由FPGA加速器一侧的控制器来主动执行双端内存数据同步,减轻了主机端的处理压力,降低了数据同步延时,提升了系统吞吐率。
此外,本申请还提供了一种双端内存同步器、FPGA加速器和数据同步系统,其技术效果与上述方法的技术效果相对应,这里不再赘述。
附图说明
为了更清楚的说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的基于PCIe总线的通用处理系统示意图;
图2为本申请所提供的一种主机端与FPGA加速器之间的数据同步方法实施例一的实现流程图;
图3为本申请所提供的一种主机端与FPGA加速器之间的数据同步方法实施例二的实现流程图;
图4为本申请所提供的一种主机端与FPGA加速器之间的数据同步方法实施例二中双端内存同步器在系统中的框图;
图5为本申请所提供的一种主机端与FPGA加速器之间的数据同步方法实施例二中双端内存同步器的工作控制过程示意图。
具体实施方式
本申请的核心是提供一种主机端与FPGA加速器之间的数据同步方法、双端内存同步器、FPGA加速器及数据同步系统,降低了数据同步延时,提升了系统吞吐率。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面对本申请提供的一种主机端与FPGA加速器之间的数据同步方法实施例一进行介绍,参见图2,实施例一包括:
S201、在检测到主机端向预设内存空间搬移数据之后,根据第一地址空间的第一状态信息生成第二状态信息,并将所述第二状态信息写入第二地址空间;
其中,所述第一地址空间和所述第二地址空间为Bar空间映射在所述主机端的不同的地址空间,所述第一状态信息包括上一数据帧号和当前数据帧号,所述第二状态信息包括当前数据帧号和下一数据帧号。
S202、在检测到所述第二地址空间上的所述第二状态信息之后,调用DMA将所述预设内存空间的数据搬移至FPGA加速器的内存空间,并将所述第二状态信息拷贝至所述第一地址空间,以实现同步。
本实施例的目的在于将主机端的数据同步至FPGA加速器一端。主机端从磁盘或者内存其它区域向预设内存空间搬移数据,双端内存同步器调用DMA将预设内存空间上的数据搬移到FPGA加速器的内存空间,以实现数据同步。
在实际应用中,双端内存同步器可以通过读写Bar空间映射在主机端的第一地址空间,建立主机端与FPGA加速器之间的内存同步通信链路,并在初始化过程中向第一地址空间写入第一状态信息。主机端在搬移数据之前可以对第一状态信息进行校验,根据第一状态信息所包含的上一数据帧号和当前数据帧号的差值是否为1,判断内存同步通信链路是否可靠。若可靠,则主机在搬移数据至预设内存空间之后,根据第一状态信息生成第二状态信息,并将第二状态信息写入第二地址空间。
之后,双端内存同步器先从第二地址空间读取第二状态信息,并判断第二状态信息中包含的当前数据帧号和下一数据帧号的差值是否为1。若为1,则认为内存同步通信链路可靠,并调用DMA将预设内存空间的数据搬移至FPGA加速器的内存空间,最终将第二状态信息拷贝至第一地址空间,实现状态切换。
按照上述过程,即可实现主机端与FPGA加速器之间的数据同步。对于数据同步过程的结束方式,可以是双端内存同步器在检测到内存同步通信链路不可靠时主动结束同步操作,并向第二地址空间写入第三状态信息;也可以是主机端主动发起结束同步,通过向第二地址空间写入第三状态信息,使得双端内存同步器被动地结束同步操作。具体采用何种方式可以根据实际场景需求来确定,本实施例不做限定。
值得一提的,本实施例的第一状态信息、第二状态信息、第三状态信息用于描述同步状态,其中第一状态信息和第二状态信息可能随着数据同步过程进行更新,但是,第三状态信息作为结束同步的信息,始终不等于第一状态信息或第二状态信息。
本实施例所提供一种主机端与FPGA加速器之间的数据同步方法,包括:在检测到主机端向预设内存空间搬移数据之后,根据第一地址空间的第一状态信息生成第二状态信息,并将第二状态信息写入第二地址空间;在检测到第二地址空间上的第二状态信息之后,调用DMA将预设内存空间的数据搬移至FPGA加速器的内存空间,并将第二状态信息拷贝至第一地址空间,以实现同步。可见,该方法实现了基于两个地址空间上的状态信息执行数据同步操作,由FPGA加速器一侧的控制器来主动执行双端内存数据同步,减轻了主机端的处理压力,降低了数据同步延时,提升了系统吞吐率。
下面开始详细介绍本申请提供的一种主机端与FPGA加速器之间的数据同步方法实施例二,实施例二基于实施例一实现,并在实施例一的基础上进行了一定程度上的拓展。
参见图3,实施例二具体包括:
S301、双端内存同步器通过读写Bar空间映射在主机端的第一地址空间,建立主机端与FPGA加速器之间的内存同步通信链路;
S302、主机端从第一地址空间读取第一状态信息,根据第一状态信息确定上一数据帧号和当前数据帧号;通过判断上一数据帧号与当前数据帧号之间的差值是否为预设阈值,对内存同步通信链路进行可靠性校验;
S303、若内存同步通信链路在预设时间内未通过可靠性校验,则主机端继续搬移数据至预设内存空间直至一帧结束;
S304、若所述内存同步通信链路在预设时间内通过可靠性校验,主机端向预设内存空间搬移数据,根据第一地址空间的第一状态信息生成第二状态信息,并将第二状态信息写入第二地址空间;
其中,所述第一地址空间和所述第二地址空间为Bar空间映射在所述主机端的不同的地址空间,所述第一状态信息包括上一数据帧号和当前数据帧号,所述第二状态信息包括当前数据帧号和下一数据帧号。
S305、双端内存同步器获取所述第二地址空间上的第二状态信息,根据所述第二状态信息确定当前数据帧号和下一数据帧号;通过判断所述当前数据帧号和所述下一数据帧号之间的差值是否为预设阈值,对所述内存同步通信链路进行可靠性校验;
S306、若所述内存同步通信链路未通过可靠性校验,则向所述第二地址空间写入第三状态信息,以停止调用DMA进行数据搬移的操作;
S307、若所述内存同步通信链路通过可靠性校验,调用DMA将所述预设内存空间的数据搬移至FPGA加速器的内存空间,并将所述第二状态信息拷贝至所述第一地址空间,以实现同步。
S308、若主机端向所述第二地址空间写入第三状态信息,双端内存同步器获取所述第二地址空间上的第三状态信息之后,结束同步。
双端内存同步器(DMSE,Bidirectional Memory Synchronize Engine)在加速系统Runtime中的框图如图4所示,DMSE使用FPGA的逻辑资源构建而成,以Inspur F37X平台为例,DMSE通过内部AXI总线,经PCIe接口与处理器平台建立连接并完成数据通信。图4中,左下角的方框代表用FPGA的板载DDR,比如做神经网络推理的逻辑单元;BSP指板级支持包;Runtime指系统运行需要的库lib;FAU,FPGA accelerator unit,即FPGA加速单元;FSTH,FPGA Memory Synchronize to Host Memory,FPGA内存同步至Host内存;HSTF,HostMemory Synchronize to FPGA Memory,Host内存同步至FPGA内存;RMS,Random memorySynchronization,随机内存同步;AXI,Advancede Xtensible Interface,高级扩展接口。
从Host端的I/O获取数据放进FPGA中进行处理。在处理图像目标识别时,位于CPU端的数据帧,会先缓存至Host端指定的内存区域中,再通过指令,调用FPGA端的DMA控制器完成数据向FPGA端指定内存搬移。为提高数吞吐率,典型的技术手段是设计Pipline,压缩流程间隙,提高期间工作密度。
为保证处理器与FPGA两端内存区域的一致性与数据完整性,需要保证数据传输链路可靠。双端内存同步器的工作流程分为三个阶段,第一个阶段建立通信链路,第二阶段是执行数据同步;第三阶段是销毁通信链路。
双端内存同步器工作控制流程关系图如图5所示,包括:双端内存同步器通过读写Bar空间映射在主机端的标志地址空间A(即第一地址空间),相当于执行了一次握手,建立CPU与FPGA两端的内存同步通信链路。DMSE会向地址空间A写入一个长度为8Byte的非0的状态信号校验信息,Host端向预设内存空间搬移数据。在Host端完成向内存搬移数据后,会向Bar空间映射在主机端的标志地址空间B(即第二地址空间)写入两个长度为4Bytes的数据帧号,首4Bytes为当前数据帧号,尾4Bytes为下一数据帧号。DMSE读取到标志地址空间B中的数据后,启动DMA数据搬移,并将将标志地址空间B中数据拷贝到标志地址空间A中。
值得一提的是,主机端可以对地址空间A上的数值进行校验,双端内存同步器可以对地址空间B上的数值进行校验。例如,Host会读取地址空间A值进行差值校验,首4Bytes为上一个数据帧号,尾4Bytes为当前数据帧号,若首4Bytes数据与尾4Bytes数据差值为1,则表示数据链路可靠。作为一种具体的实施方式,Host向指定内存空间搬移数据与链路状态校验为异步操作,若在预设时间内未完成链路状态校验,则数据继续搬移至一帧结束。其中,预设时间具体可以为2/3个最小总数据传输时间,数据搬移量是可计算的,故该状态可检测,2/3是经验值,实际应用中可以做调整。
当需要结束两端内存数据同步时,需要执行通信链路销毁流程。操作方法是在Host在地址空间B写入两个长度为4Bytes的数据帧号,首4Bytes数据帧号为0x0000,尾4Bytes数据帧号为0x0000,双端内存同步器停止数据搬移。根据设计需要,双端内存同步器可以主动停止,比如链路异常的时候就是双端内存同步器主动停止同步的。
可见,本实施例提供的一种主机端与FPGA加速器之间的数据同步方法,利用FPGA的硬件可编程特性,在FPGA端实现了一个双端内存同步器,Host软件只需要从磁盘向指定内存区域缓存数据即可,简化了Host端软件工作流程,两端的数据同步控制均由FPGA端的双端内存同步器硬件实现。
具体的,本实施例建立可靠的数据传输链路,将内存同步策略简化,同时设计了一种静态内存容量状态检测方法,在内存状态迁移后,自动触发DMA队列,进行双端内存同步,降低了应用系统内存数据同步延时,可有效提供推理系统的吞吐效率。本实施例可有效解决FPGA与Host端的数据高速低延时互同步问题,在视频图像处理、AI人脸检测、图像目标识别等领域,结合Pipline技术可有效提高FPGA推理的吞吐效率。
下面对本申请实施例提供的一种双端内存同步器进行介绍,下文描述的一种双端内存同步器与上文描述的主机端与FPGA加速器之间的数据同步方法可相互对应参照。
本实施例的双端内存同步器,包括:
状态信息写入模块:用于在检测到主机端向预设内存空间搬移数据之后,根据第一地址空间的第一状态信息生成第二状态信息,并将所述第二状态信息写入第二地址空间;其中,所述第一地址空间和所述第二地址空间为Bar空间映射在所述主机端的不同的地址空间,所述第一状态信息包括上一数据帧号和当前数据帧号,所述第二状态信息包括当前数据帧号和下一数据帧号;
数据搬移模块:用于在检测到所述第二地址空间上的所述第二状态信息之后,调用DMA将所述预设内存空间的数据搬移至FPGA加速器的内存空间,并将所述第二状态信息拷贝至所述第一地址空间,以实现同步。
本实施例的双端内存同步器用于实现前述的主机端与FPGA加速器之间的数据同步方法,因此该双端内存同步器中的具体实施方式可见前文中的主机端与FPGA加速器之间的数据同步方法的实施例部分。所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再展开介绍。
另外,由于本实施例的双端内存同步器用于实现前述的主机端与FPGA加速器之间的数据同步方法,因此其作用与上述方法的作用相对应,这里不再赘述。
此外,本申请还提供了一种FPGA加速器,包括上文所述的双端内存同步器。
最后,本申请还提供了一种数据同步系统,包括主机端和FPGA加速器,所述FPGA加速器包括如上文所述的双端内存同步器。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种主机端与FPGA加速器之间的数据同步方法,其特征在于,包括:
在检测到主机端向预设内存空间搬移数据之后,根据第一地址空间的第一状态信息生成第二状态信息,并将所述第二状态信息写入第二地址空间;其中,所述第一地址空间和所述第二地址空间为Bar空间映射在所述主机端的不同的地址空间,所述第一状态信息包括上一数据帧号和当前数据帧号,所述第二状态信息包括当前数据帧号和下一数据帧号;
在检测到所述第二地址空间上的所述第二状态信息之后,调用DMA将所述预设内存空间的数据搬移至FPGA加速器的内存空间,并将所述第二状态信息拷贝至所述第一地址空间,以实现同步。
2.如权利要求1所述的方法,其特征在于,在所述在检测到主机端向预设内存空间搬移数据之后,根据第一地址空间的第一状态信息生成第二状态信息之前,还包括:
通过读写Bar空间映射在所述主机端的第一地址空间,建立所述主机端与所述FPGA加速器之间的内存同步通信链路。
3.如权利要求2所述的方法,其特征在于,在所述在检测到主机端向预设内存空间搬移数据之后,根据第一地址空间的第一状态信息生成第二状态信息之前,还包括:
所述主机端从第一地址空间读取第一状态信息,根据第一状态信息确定上一数据帧号和当前数据帧号;通过判断所述上一数据帧号与所述当前数据帧号之间的差值是否为预设阈值,对所述内存同步通信链路进行可靠性校验。
4.如权利要求3所述的方法,其特征在于,在所述通过判断所述上一数据帧号与所述当前数据帧号之间的差值是否为预设阈值,对所述内存同步通信链路进行可靠性校验之后,还包括:
若所述内存同步通信链路在预设时间内未通过可靠性校验,则所述主机端继续搬移数据至预设内存空间直至一帧结束。
5.如权利要求3所述的方法,其特征在于,在所述调用DMA将所述预设内存空间的数据搬移至FPGA加速器的内存空间之前,还包括:
获取所述第二地址空间上的第二状态信息,根据所述第二状态信息确定当前数据帧号和下一数据帧号;通过判断所述当前数据帧号和所述下一数据帧号之间的差值是否为预设阈值,对所述内存同步通信链路进行可靠性校验。
6.如权利要求5所述的方法,其特征在于,在所述通过判断所述当前数据帧号和所述下一数据帧号之间的差值是否为预设阈值,对所述内存同步通信链路进行可靠性校验之后,还包括:
若所述内存同步通信链路未通过可靠性校验,则向所述第二地址空间写入第三状态信息,以停止调用DMA进行数据搬移的操作。
7.如权利要求1-6任意一项所述的方法,其特征在于,还包括:
所述主机端向所述第二地址空间写入第三状态信息,以结束同步。
8.一种双端内存同步器,其特征在于,包括:
状态信息写入模块:用于在检测到主机端向预设内存空间搬移数据之后,根据第一地址空间的第一状态信息生成第二状态信息,并将所述第二状态信息写入第二地址空间;其中,所述第一地址空间和所述第二地址空间为Bar空间映射在所述主机端的不同的地址空间,所述第一状态信息包括上一数据帧号和当前数据帧号,所述第二状态信息包括当前数据帧号和下一数据帧号;
数据搬移模块:用于在检测到所述第二地址空间上的所述第二状态信息之后,调用DMA将所述预设内存空间的数据搬移至FPGA加速器的内存空间,并将所述第二状态信息拷贝至所述第一地址空间,以实现同步。
9.一种FPGA加速器,其特征在于,包括如权利要求8所述的双端内存同步器。
10.一种数据同步系统,其特征在于,包括主机端和FPGA加速器,所述FPGA加速器包括如权利要求8所述的双端内存同步器。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010108433.4A CN111367839B (zh) | 2020-02-21 | 2020-02-21 | 一种主机端与fpga加速器之间的数据同步方法 |
PCT/CN2021/070630 WO2021164452A1 (zh) | 2020-02-21 | 2021-01-07 | 一种主机端与fpga加速器之间的数据同步方法 |
EP21756740.3A EP4068105A4 (en) | 2020-02-21 | 2021-01-07 | DATA SYNCHRONIZATION METHOD BETWEEN HOST END AND FPGA ACCELERATOR |
US17/801,284 US11762790B2 (en) | 2020-02-21 | 2021-01-07 | Method for data synchronization between host side and FPGA accelerator |
JP2022539756A JP7270113B2 (ja) | 2020-02-21 | 2021-01-07 | ホスト側とfpgaアクセラレータと間のデータ同期方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010108433.4A CN111367839B (zh) | 2020-02-21 | 2020-02-21 | 一种主机端与fpga加速器之间的数据同步方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111367839A CN111367839A (zh) | 2020-07-03 |
CN111367839B true CN111367839B (zh) | 2021-06-29 |
Family
ID=71210106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010108433.4A Active CN111367839B (zh) | 2020-02-21 | 2020-02-21 | 一种主机端与fpga加速器之间的数据同步方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11762790B2 (zh) |
EP (1) | EP4068105A4 (zh) |
JP (1) | JP7270113B2 (zh) |
CN (1) | CN111367839B (zh) |
WO (1) | WO2021164452A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111367839B (zh) | 2020-02-21 | 2021-06-29 | 苏州浪潮智能科技有限公司 | 一种主机端与fpga加速器之间的数据同步方法 |
CN111813713B (zh) * | 2020-09-08 | 2021-02-12 | 苏州浪潮智能科技有限公司 | 数据加速运算处理方法、装置及计算机可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0346917A2 (en) * | 1988-06-17 | 1989-12-20 | Modular Computer Systems Inc. | Bus stealing method for concurrent CPU and I/O processing |
CN104035781A (zh) * | 2014-06-27 | 2014-09-10 | 北京航空航天大学 | 一种快速开发异构并行程序的方法 |
CN106844245A (zh) * | 2017-02-17 | 2017-06-13 | 北京腾凌科技有限公司 | 数据传输方法及装置 |
CN107197182A (zh) * | 2017-06-06 | 2017-09-22 | 青岛海信电器股份有限公司 | 一种在电视上显示屏幕菜单的方法、装置及电视 |
CN107870879A (zh) * | 2016-09-23 | 2018-04-03 | 中国移动通信有限公司研究院 | 一种数据搬移方法、加速器板卡、主机及数据搬移系统 |
CN109240870A (zh) * | 2018-09-25 | 2019-01-18 | 浪潮电子信息产业股份有限公司 | 一种固态硬盘故障定位方法及相关装置 |
CN109739786A (zh) * | 2019-01-08 | 2019-05-10 | 郑州云海信息技术有限公司 | 一种dma控制器和异构加速系统 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004213565A (ja) | 2003-01-08 | 2004-07-29 | Renesas Technology Corp | 通信制御装置 |
US7664889B2 (en) * | 2005-09-29 | 2010-02-16 | Intel Corporation | DMA descriptor management mechanism |
CN101419616A (zh) * | 2008-12-10 | 2009-04-29 | 阿里巴巴集团控股有限公司 | 一种数据同步方法及装置 |
US8463865B2 (en) * | 2010-03-09 | 2013-06-11 | Texas Instruments Incorporated | Video synchronization with distributed modules |
JP2012208755A (ja) | 2011-03-30 | 2012-10-25 | Renesas Electronics Corp | オーディオ再生装置及びオーディオ再生方法 |
WO2012147124A1 (en) * | 2011-04-26 | 2012-11-01 | Hitachi, Ltd. | Server apparatus and method of controlling information system |
JP2013003692A (ja) | 2011-06-14 | 2013-01-07 | Renesas Electronics Corp | オーディオ再生装置及びオーディオ再生方法 |
CN102937939B (zh) * | 2012-10-10 | 2015-12-16 | 无锡众志和达数据计算股份有限公司 | 基于sata控制器的dma地址对预读取方法 |
MY186464A (en) | 2012-12-14 | 2021-07-22 | Mimos Berhad | System and method for optimal memory management between cpu and fpga unit |
CN105677491B (zh) * | 2015-12-31 | 2019-07-23 | 杭州华为数字技术有限公司 | 一种数据传输方法及装置 |
CN105607874B (zh) * | 2015-12-31 | 2017-03-22 | 湖南国科微电子股份有限公司 | Sata协议加速模块、主机与硬盘通信方法及固态硬盘控制器 |
US10509666B2 (en) * | 2017-06-29 | 2019-12-17 | Ati Technologies Ulc | Register partition and protection for virtualized processing device |
CN109308280B (zh) * | 2017-07-26 | 2021-05-18 | 华为技术有限公司 | 数据处理方法和相关设备 |
CN108958800B (zh) | 2018-06-15 | 2020-09-15 | 中国电子科技集团公司第五十二研究所 | 一种基于fpga硬件加速的ddr管理控制系统 |
CN109558344B (zh) * | 2018-12-03 | 2021-10-29 | 郑州云海信息技术有限公司 | 一种适用于网络传输的dma传输方法及dma控制器 |
CN111367839B (zh) * | 2020-02-21 | 2021-06-29 | 苏州浪潮智能科技有限公司 | 一种主机端与fpga加速器之间的数据同步方法 |
-
2020
- 2020-02-21 CN CN202010108433.4A patent/CN111367839B/zh active Active
-
2021
- 2021-01-07 EP EP21756740.3A patent/EP4068105A4/en active Pending
- 2021-01-07 JP JP2022539756A patent/JP7270113B2/ja active Active
- 2021-01-07 US US17/801,284 patent/US11762790B2/en active Active
- 2021-01-07 WO PCT/CN2021/070630 patent/WO2021164452A1/zh unknown
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0346917A2 (en) * | 1988-06-17 | 1989-12-20 | Modular Computer Systems Inc. | Bus stealing method for concurrent CPU and I/O processing |
CN104035781A (zh) * | 2014-06-27 | 2014-09-10 | 北京航空航天大学 | 一种快速开发异构并行程序的方法 |
CN107870879A (zh) * | 2016-09-23 | 2018-04-03 | 中国移动通信有限公司研究院 | 一种数据搬移方法、加速器板卡、主机及数据搬移系统 |
CN106844245A (zh) * | 2017-02-17 | 2017-06-13 | 北京腾凌科技有限公司 | 数据传输方法及装置 |
CN107197182A (zh) * | 2017-06-06 | 2017-09-22 | 青岛海信电器股份有限公司 | 一种在电视上显示屏幕菜单的方法、装置及电视 |
CN109240870A (zh) * | 2018-09-25 | 2019-01-18 | 浪潮电子信息产业股份有限公司 | 一种固态硬盘故障定位方法及相关装置 |
CN109739786A (zh) * | 2019-01-08 | 2019-05-10 | 郑州云海信息技术有限公司 | 一种dma控制器和异构加速系统 |
Non-Patent Citations (1)
Title |
---|
面向大数据应用的异构可重构平台关键技术研究;陈鹏;《中国博士学位论文全文数据库信息科技辑》;20150915;第2015年卷(第9期);I138-17 * |
Also Published As
Publication number | Publication date |
---|---|
US20230098879A1 (en) | 2023-03-30 |
US11762790B2 (en) | 2023-09-19 |
WO2021164452A1 (zh) | 2021-08-26 |
JP2022554039A (ja) | 2022-12-27 |
CN111367839A (zh) | 2020-07-03 |
EP4068105A1 (en) | 2022-10-05 |
JP7270113B2 (ja) | 2023-05-09 |
EP4068105A4 (en) | 2023-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
CN111367839B (zh) | 一种主机端与fpga加速器之间的数据同步方法 | |
CN112559407B (zh) | Stp链路层状态机优化方法 | |
US8843663B2 (en) | Data transmission device and method for merging multiple commands | |
US9305618B2 (en) | Implementing simultaneous read and write operations utilizing dual port DRAM | |
CN114003392A (zh) | 一种数据加速计算方法及相关装置 | |
CN114490439A (zh) | 基于无锁环形共享内存的数据写入、读取、通信方法 | |
US6687763B2 (en) | ATAPI command receiving method | |
JP2024024607A (ja) | メモリーアクセスのための集積回路、処理方法、電子機器及び媒体 | |
CN111338567B (zh) | 一种基于Protocol Buffer的镜像缓存方法 | |
CN111506518B (zh) | 一种数据存储控制方法及装置 | |
WO2022142173A1 (zh) | 一种数据校验方法及其相关设备 | |
CN111158783A (zh) | 一种环境变量修改方法、装置、设备及可读存储介质 | |
CN111401541A (zh) | 一种数据传输控制方法及装置 | |
US20110191638A1 (en) | Parallel computer system and method for controlling parallel computer system | |
CN117093530B (zh) | 一种用于数据传输的fpga、模型训练系统及数据访问方法 | |
JP2522412B2 (ja) | プログラマブルコントロ―ラと入出力装置の間の通信方法 | |
CN115562577A (zh) | 一种将日志写入闪存的方法及装置、电子设备 | |
CN107193661B (zh) | 面向多核处理器确定性重演的优化分段式内存竞争记录系统及其方法 | |
TW202420085A (zh) | 人工智慧加速器及其運作方法 | |
CN114461408A (zh) | 多核系统的核间交互方法、装置、设备及存储介质 | |
JPS6055752A (ja) | パケツト処理方式 | |
CN115129506A (zh) | 一种数据传输的系统、方法以及网络设备 | |
CN118245410A (zh) | 数据操作方法、装置、设备、可读存储介质及程序产品 | |
CN117938659A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |