WO2021164452A1 - 一种主机端与fpga加速器之间的数据同步方法 - Google Patents

一种主机端与fpga加速器之间的数据同步方法 Download PDF

Info

Publication number
WO2021164452A1
WO2021164452A1 PCT/CN2021/070630 CN2021070630W WO2021164452A1 WO 2021164452 A1 WO2021164452 A1 WO 2021164452A1 CN 2021070630 W CN2021070630 W CN 2021070630W WO 2021164452 A1 WO2021164452 A1 WO 2021164452A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
state information
address space
frame number
space
Prior art date
Application number
PCT/CN2021/070630
Other languages
English (en)
French (fr)
Inventor
欧明阳
樊嘉恒
阚宏伟
Original Assignee
苏州浪潮智能科技有限公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 苏州浪潮智能科技有限公司 filed Critical 苏州浪潮智能科技有限公司
Priority to EP21756740.3A priority Critical patent/EP4068105A4/en
Priority to JP2022539756A priority patent/JP7270113B2/ja
Priority to US17/801,284 priority patent/US11762790B2/en
Publication of WO2021164452A1 publication Critical patent/WO2021164452A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • G06F13/282Cycle stealing DMA
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • G06F13/30Handling 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7885Runtime interface, e.g. data exchange, runtime control
    • G06F15/7889Reconfigurable logic implemented as a co-processor

Abstract

一种主机端与FPGA加速器之间的数据同步方法、双端内存同步器、FPGA加速器和数据同步系统,该方法包括:在检测到主机端向预设内存空间搬移数据之后,根据第一地址空间的第一状态信息生成第二状态信息,并将第二状态信息写入第二地址空间(S201);在检测到第二地址空间上的第二状态信息之后,调用DMA将预设内存空间的数据搬移至FPGA加速器的内存空间,并将第二状态信息拷贝至第一地址空间,以实现同步(S202)。可见,该方法实现了基于两个地址空间上的状态信息执行数据同步操作,由FPGA加速器一侧的控制器来主动执行双端内存数据同步,降低了数据同步延时,提升了系统吞吐率。

Description

一种主机端与FPGA加速器之间的数据同步方法
本申请要求于2020年2月21日提交中国国家知识产权局,申请号为202010108433.4,发明名称为“一种主机端与FPGA加速器之间的数据同步方法”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及计算机技术领域,特别涉及一种主机端与FPGA(Field Programmable Gate Array,现场可编程门阵列)加速器之间的数据同步方法、双端内存同步器、FPGA加速器及数据同步系统。
背景技术
目前,通用计算系统均采用基于PCIe(peripheral component interconnect express,外围组件互连表达)的局部总线结构,如图1所示,其作用与PCI(Peripheral Component Interconnect,外设部件互连标准)总线类似,主要是为了连接处理系统中的外部设备,挂载于总线上的设备通过PCIe控制器实现点对点数据通信。与ISA(Industry Standard Architecture,工业标准体系结构)、EISA(Enhanced Industry Standard Architecture,扩展工业标准体系结构)以及MAC(Medium Access Control,媒体存取控制)总线相比,PCIe总线具有总线与处理 器空间隔离、可扩展性佳、支持动态配置以及端到端的高总线数据带宽等优点。
FPGA作为时下新兴的加速器设备,主要通过PCIe总线与处理器进行通信,FPGA加速器件作为一个PCIe-Agent设备(PCIe从设备),具有独立的板载内存空间用于数据存储。在x86架构中,处理器与FPGA进行数据交互需要通过RC(Root Complex,根复合体)完成地址空间的转换以及物理信号转换。在某些新兴应用场景中,FPGA作为加速设备需使用位于处理器端的数据,借助OpenCL(Open Computing Language,开放运算语言)异构编程模型,使用FPGA端的直接存储器访问控制器将主机端的数据拷贝至加速器端板载内存的指定区域中。
当前使用的基于软件指令的被动内存拷贝方式,增加了数据同步的步骤。PCIe中Host(主机)与FPGA通信使用DMA(Direct Memory Access,直接存储器访问)或者Bar(Base Address Register,基址寄存器)空间映射来搬移数据,他们的工作需要控制器接入,使用指令控制读写的发起与取消。在数据搬移的过程中,需要编写特定的代码来维护两端的数据同步,代码运行在Host端就会存在数据搬移响应延迟不稳定等问题。在AI(Artificial Intelligence,人工智能)推理等关 键应用场景中,该技术模式增加了应用系统内存操作延时,降低了系统吞吐效率。
发明内容
本申请的目的是提供一种主机端与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(Advanced Xtensible Interface,高级扩展接口)总线,经PCIe接口与处理器平台建立连接并完成数据通信。图4中,左下角的方框代表用FPGA的板载DDR(Double Data Rate,双倍速率同步动态随机存储器),比如做神经网络推理的逻辑单元;BSP(Board Support Package)指板级支持包;Runtime指系统运行需要的库(lib);FAU(FPGA accelerator unit),即FPGA加速单元;FSTH,(FPGA Memory Synchronize to Host Memory),FPGA内存同步至Host内存;HSTF(Host Memory Synchronize to FPGA Memory),Host内存同步至FPGA内存;RMS(Random memory Synchronization),随机内存同步;ByPass,旁路。
从Host端的I/O(Input/Output,即输入/输出)获取数据放进FPGA中进行处理。在处理图像目标识别时,位于CPU(central processing unit,即中央处理器)端的数据帧,会先缓存至Host端指定的内存区域中,再通过指令,调用FPGA端的DMA控制器完成数据向FPGA端指定内存搬移。为提高数吞吐率,典型的技术手段是设计Pipeline(表示在外接程序与主机之间减缓数据的管线段的线性通信模型),压缩流程间隙,提高期间工作密度。
为保证处理器与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人脸检测、图像目标识别等领域,结合Pipeline技术可有效提高FPGA推理的吞吐效率。
下面对本申请实施例提供的一种双端内存同步器进行介绍,下文描述的一种双端内存同步器与上文描述的主机端与FPGA加速器之间的数据同步方法可相互对应参照。
本实施例的双端内存同步器,包括:
状态信息写入模块:用于在检测到主机端向预设内存空间搬移数据之后,根据第一地址空间的第一状态信息生成第二状态信息,并将所述第二状态信息写入第二地址空间;其中,所述第一地址空间和所述第二地址空间为Bar空间映射在所述主机端的不同的地址空间,所述第一状态信息包括上一数据帧号和当前数据帧号,所述第二状态信息包括当前数据帧号和下一数据帧号;
数据搬移模块:用于在检测到所述第二地址空间上的所述第二状态信息之后,调用DMA将所述预设内存空间的数据搬移至FPGA加速器的内存空间,并将所述第二状态信息拷贝至所述第一地址空间,以实现同步。
本实施例的双端内存同步器用于实现前述的主机端与FPGA加速 器之间的数据同步方法,因此该双端内存同步器中的具体实施方式可见前文中的主机端与FPGA加速器之间的数据同步方法的实施例部分。所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再展开介绍。
另外,由于本实施例的双端内存同步器用于实现前述的主机端与FPGA加速器之间的数据同步方法,因此其作用与上述方法的作用相对应,这里不再赘述。
此外,本申请还提供了一种FPGA加速器,包括上文所述的双端内存同步器。
最后,本申请还提供了一种数据同步系统,包括主机端和FPGA加速器,所述FPGA加速器包括如上文所述的双端内存同步器。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编 程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM(Compact Disc Read-Only Memory,只读光盘)、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

  1. 一种主机端与FPGA加速器之间的数据同步方法,其特征在于,包括:
    在检测到主机端向预设内存空间搬移数据之后,根据第一地址空间的第一状态信息生成第二状态信息,并将所述第二状态信息写入第二地址空间;其中,所述第一地址空间和所述第二地址空间为基址寄存器空间映射在所述主机端的不同的地址空间,所述第一状态信息包括上一数据帧号和当前数据帧号,所述第二状态信息包括当前数据帧号和下一数据帧号;
    在检测到所述第二地址空间上的所述第二状态信息之后,调用直接存储器访问将所述预设内存空间的数据搬移至现场可编程门阵列加速器的内存空间,并将所述第二状态信息拷贝至所述第一地址空间,以实现同步。
  2. 如权利要求1所述的方法,其特征在于,在所述在检测到主机端向预设内存空间搬移数据之后,根据第一地址空间的第一状态信息生成第二状态信息之前,还包括:
    通过读写基址寄存器空间映射在所述主机端的第一地址空间,建立所述主机端与所述现场可编程门阵列加速器之间的内存同步通信链 路。
  3. 如权利要求2所述的方法,其特征在于,在所述在检测到主机端向预设内存空间搬移数据之后,根据第一地址空间的第一状态信息生成第二状态信息之前,还包括:
    所述主机端从第一地址空间读取第一状态信息,根据第一状态信息确定上一数据帧号和当前数据帧号;通过判断所述上一数据帧号与所述当前数据帧号之间的差值是否为预设阈值,对所述内存同步通信链路进行可靠性校验。
  4. 如权利要求3所述的方法,其特征在于,在所述通过判断所述上一数据帧号与所述当前数据帧号之间的差值是否为预设阈值,对所述内存同步通信链路进行可靠性校验之后,还包括:
    若所述内存同步通信链路在预设时间内未通过可靠性校验,则所述主机端继续搬移数据至预设内存空间直至一帧结束。
  5. 如权利要求3所述的方法,其特征在于,在所述调用直接存储器访问将所述预设内存空间的数据搬移至现场可编程门阵列加速器的内存空间之前,还包括:
    获取所述第二地址空间上的第二状态信息,根据所述第二状态信息确定当前数据帧号和下一数据帧号;通过判断所述当前数据帧号和所述下一数据帧号之间的差值是否为预设阈值,对所述内存同步通信链路进行可靠性校验。
  6. 如权利要求5所述的方法,其特征在于,在所述通过判断所述当前数据帧号和所述下一数据帧号之间的差值是否为预设阈值,对所述内存同步通信链路进行可靠性校验之后,还包括:
    若所述内存同步通信链路未通过可靠性校验,则向所述第二地址空间写入第三状态信息,以停止调用直接存储器访问进行数据搬移的操作。
  7. 如权利要求1-6任意一项所述的方法,其特征在于,还包括:
    所述主机端向所述第二地址空间写入第三状态信息,以结束同步。
  8. 一种双端内存同步器,其特征在于,包括:
    状态信息写入模块:用于在检测到主机端向预设内存空间搬移数据之后,根据第一地址空间的第一状态信息生成第二状态信息,并将 所述第二状态信息写入第二地址空间;其中,所述第一地址空间和所述第二地址空间为基址寄存器空间映射在所述主机端的不同的地址空间,所述第一状态信息包括上一数据帧号和当前数据帧号,所述第二状态信息包括当前数据帧号和下一数据帧号;
    数据搬移模块:用于在检测到所述第二地址空间上的所述第二状态信息之后,调用直接存储器访问将所述预设内存空间的数据搬移至现场可编程门阵列加速器的内存空间,并将所述第二状态信息拷贝至所述第一地址空间,以实现同步。
  9. 一种FPGA加速器,其特征在于,包括如权利要求8所述的双端内存同步器。
  10. 一种数据同步系统,其特征在于,包括主机端和现场可编程门阵列加速器,所述现场可编程门阵列加速器包括如权利要求8所述的双端内存同步器。
PCT/CN2021/070630 2020-02-21 2021-01-07 一种主机端与fpga加速器之间的数据同步方法 WO2021164452A1 (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP21756740.3A EP4068105A4 (en) 2020-02-21 2021-01-07 DATA SYNCHRONIZATION METHOD BETWEEN HOST END AND FPGA ACCELERATOR
JP2022539756A JP7270113B2 (ja) 2020-02-21 2021-01-07 ホスト側とfpgaアクセラレータと間のデータ同期方法
US17/801,284 US11762790B2 (en) 2020-02-21 2021-01-07 Method for data synchronization between host side and FPGA accelerator

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010108433.4 2020-02-21
CN202010108433.4A CN111367839B (zh) 2020-02-21 2020-02-21 一种主机端与fpga加速器之间的数据同步方法

Publications (1)

Publication Number Publication Date
WO2021164452A1 true WO2021164452A1 (zh) 2021-08-26

Family

ID=71210106

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2021/070630 WO2021164452A1 (zh) 2020-02-21 2021-01-07 一种主机端与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)

* Cited by examiner, † Cited by third party
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 (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110225256A1 (en) * 2010-03-09 2011-09-15 Franck Seigneret Video Synchronization with Distributed Modules
CN105607874A (zh) * 2015-12-31 2016-05-25 湖南国科微电子股份有限公司 Sata协议加速模块、主机与硬盘通信方法及固态硬盘控制器
CN105677491A (zh) * 2015-12-31 2016-06-15 杭州华为数字技术有限公司 一种数据传输方法及装置
CN107870879A (zh) * 2016-09-23 2018-04-03 中国移动通信有限公司研究院 一种数据搬移方法、加速器板卡、主机及数据搬移系统
CN108958800A (zh) * 2018-06-15 2018-12-07 中国电子科技集团公司第五十二研究所 一种基于fpga硬件加速的ddr管理控制系统
CN109558344A (zh) * 2018-12-03 2019-04-02 郑州云海信息技术有限公司 一种适用于网络传输的dma传输方法及dma控制器
CN109739786A (zh) * 2019-01-08 2019-05-10 郑州云海信息技术有限公司 一种dma控制器和异构加速系统
CN111367839A (zh) * 2020-02-21 2020-07-03 苏州浪潮智能科技有限公司 一种主机端与fpga加速器之间的数据同步方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0346917A3 (en) * 1988-06-17 1990-11-07 Modular Computer Systems Inc. Bus stealing method for concurrent cpu and i/o processing
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 阿里巴巴集团控股有限公司 一种数据同步方法及装置
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
CN104035781B (zh) * 2014-06-27 2017-06-23 北京航空航天大学 一种快速开发异构并行程序的方法
CN106844245B (zh) * 2017-02-17 2019-11-12 北京腾凌科技有限公司 数据传输方法及装置
CN107197182B (zh) * 2017-06-06 2020-05-05 青岛海信电器股份有限公司 一种在电视上显示屏幕菜单的方法、装置及电视
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 华为技术有限公司 数据处理方法和相关设备
CN109240870A (zh) * 2018-09-25 2019-01-18 浪潮电子信息产业股份有限公司 一种固态硬盘故障定位方法及相关装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110225256A1 (en) * 2010-03-09 2011-09-15 Franck Seigneret Video Synchronization with Distributed Modules
CN105607874A (zh) * 2015-12-31 2016-05-25 湖南国科微电子股份有限公司 Sata协议加速模块、主机与硬盘通信方法及固态硬盘控制器
CN105677491A (zh) * 2015-12-31 2016-06-15 杭州华为数字技术有限公司 一种数据传输方法及装置
CN107870879A (zh) * 2016-09-23 2018-04-03 中国移动通信有限公司研究院 一种数据搬移方法、加速器板卡、主机及数据搬移系统
CN108958800A (zh) * 2018-06-15 2018-12-07 中国电子科技集团公司第五十二研究所 一种基于fpga硬件加速的ddr管理控制系统
CN109558344A (zh) * 2018-12-03 2019-04-02 郑州云海信息技术有限公司 一种适用于网络传输的dma传输方法及dma控制器
CN109739786A (zh) * 2019-01-08 2019-05-10 郑州云海信息技术有限公司 一种dma控制器和异构加速系统
CN111367839A (zh) * 2020-02-21 2020-07-03 苏州浪潮智能科技有限公司 一种主机端与fpga加速器之间的数据同步方法

Also Published As

Publication number Publication date
CN111367839A (zh) 2020-07-03
US20230098879A1 (en) 2023-03-30
JP7270113B2 (ja) 2023-05-09
EP4068105A4 (en) 2023-05-03
US11762790B2 (en) 2023-09-19
EP4068105A1 (en) 2022-10-05
CN111367839B (zh) 2021-06-29
JP2022554039A (ja) 2022-12-27

Similar Documents

Publication Publication Date Title
WO2021164452A1 (zh) 一种主机端与fpga加速器之间的数据同步方法
KR100947755B1 (ko) 허브-기반 메모리 시스템에서 기록 명령들을 종료시키기위한 방법 및 시스템
CN112559407B (zh) Stp链路层状态机优化方法
US9600618B2 (en) Implementing system irritator accelerator FPGA unit (AFU) residing behind a coherent attached processors interface (CAPI) unit
CN109960671B (zh) 一种数据传输系统、方法及计算机设备
JP2017537404A (ja) メモリアクセス方法、スイッチ、およびマルチプロセッサシステム
US20060236001A1 (en) Direct memory access controller
CN112559406B (zh) Sata传输层状态机优化方法
CN110781107A (zh) 基于dram接口的低延迟融合io控制方法和装置
WO2023186143A1 (zh) 一种数据处理方法、主机及相关设备
US20230114242A1 (en) Data processing method and apparatus and heterogeneous system
WO2021159608A1 (zh) 一种基于Protocol Buffer的镜像缓存方法
WO2021082877A1 (zh) 访问固态硬盘的方法及装置
US20110191638A1 (en) Parallel computer system and method for controlling parallel computer system
WO2022193108A1 (zh) 一种集成芯片及数据搬运方法
JP2002123420A (ja) メモリアクセス装置
CN218996035U (zh) 一种配合xmda使用的rdma高速数据传输系统
CN117093530B (zh) 一种用于数据传输的fpga、模型训练系统及数据访问方法
WO2020182135A1 (zh) 一种通信方法及通信系统
KR100398731B1 (ko) 교환기에서 프로세서간 메모리 동일성 검증 방법 및 그 장치
JPH11110342A (ja) バス接続方法及び装置
CN117742606A (zh) 一种dpu芯片及其报文存储模块和报文复制方法
KR20220090853A (ko) 메모리 중심 컴퓨팅 구조의 어댑터 및 컴퓨팅 장치
CN111506518A (zh) 一种数据存储控制方法及装置
JPH02301851A (ja) システムバスアクセス方式

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21756740

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2022539756

Country of ref document: JP

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 2021756740

Country of ref document: EP

Effective date: 20220628

NENP Non-entry into the national phase

Ref country code: DE