一种基于FPGA的通信方法、设备、主机及异构加速系统技术方案

技术编号:20763659 阅读:24 留言:0更新日期:2019-04-03 14:14
本申请实施例提供一种基于FPGA的通信方法、设备、主机及异构加速系统。本申请实施例中,在异构加速系统中主机和基于FPGA的加速设备之间采用工作队列和完成队列的机制进行协同工作,简化了交互流程;且来自主机的请求命令和来自加速设备的已完成状态信息存储在不同工作队列,即不同存储区域中,避免了主机和基于FPGA的加速设备通信过程中对同一存储区域的同时读或同时写造成的读写竞争,可有效提高通信效率。

【技术实现步骤摘要】
一种基于FPGA的通信方法、设备、主机及异构加速系统
本申请涉及数据传输
,尤其涉及一种基于FPGA的通信方法、设备、主机及异构加速系统。
技术介绍
随着大数据、人工智能的发展,计算需求迅猛上涨,软件工作负荷急速增长,这要求处理器在面对高强度数据处理任务时能够提供更好的性能。但是,通用处理器需要兼顾计算和控制,这导致通用处理器的计算通用性强,但计算性能一般。为解决这一困境,可使用现场可编程门阵列(Field-ProgrammableGateArray,FPGA)作为通用处理器的协处理器进行异构加速。异构加速的主要原理为:多处理器间进行数据共享和搬移,以及请求控制信息的交换。然而,由于不同处理器的时延、吞吐等性能差别很大,因此,如何实现多处理器间高效协同工作成为异构加速的关键。
技术实现思路
本申请的多个方面提供一种基于FPGA的通信方法、设备、主机及异构加速系统,以实现多处理器高效协同工作,提高异构加速效率。本申请实施例提供一种基于FPGA的通信方法,适用于异构加速系统中的主机,所述异构加速系统还包括基于FPGA的加速设备,所述方法包括:根据应用程序的处理需求生成请求命令;将所述请求命令写入工作队列中,并将所述请求命令在所述工作队列中的位置信息提供给所述基于FPGA的加速设备,以供所述基于FPGA的加速设备对所述工作队列中的所述请求命令进行处理,并将所述请求命令的已完成状态信息写入完成队列;从所述完成队列中读取所述请求命令的已完成状态信息;基于所述请求命令的已完成状态信息获取所述请求命令对应的数据处理结果,并在所述工作队列中删除所述请求命令。本实施例还提供一种基于FPGA的通信方法,适用于异构加速系统中基于FPGA的加速设备,所述异构加速系统还包括主机,所述方法包括:接收所述主机提供的待处理的请求命令在工作队列中的位置信息,所述请求命令是所述主机根据应用程序的处理需求生成并写入所述工作队列中的;根据所述请求命令在工作队列中的位置信息从所述工作队列中读取所述请求命令;根据所述请求命令进行数据处理,并在数据处理完成后,将所述请求命令的已完成状态信息写入完成队列中,以供所述主机基于所述完成队列中所述请求命令的已完成状态信息获取所述请求命令对应的数据处理结果并在所述工作队列中删除所述请求命令。本申请实施例还提供一种基于FPGA的加速设备,适用于异构加速系统,所述加速设备包括:接口单元、队列管理单元和数据处理单元;所述接口单元,用于接收所述主机提供的待处理的请求命令在工作队列中的位置信息,所述请求命令是所述主机根据应用程序的处理需求生成并写入所述工作队列中的;所述队列管理单元,用于根据所述请求命令在工作队列中的位置信息从所述工作队列中读取所述请求命令;所述数据处理单元,用于根据所述请求命令进行数据处理,并在数据处理完成后,将所述请求命令的已完成状态信息写入完成队列中,以供所述主机基于所述完成队列中所述请求命令的已完成状态信息获取所述请求命令对应的数据处理结果并在所述工作队列中删除所述请求命令。本申请实施例还提供一种主机,适用于异构加速系统,所述主机包括:接口单元和CPU单元;所述接口单元,用于与异构加速系统中的基于FPGA的加速设备连接;所述CPU单元,用于根据应用程序的处理需求生成请求命令;将所述请求命令写入工作队列中,并将所述请求命令在所述工作队列中的位置信息提供给所述基于FPGA的加速设备,以供所述基于FPGA的加速设备对所述工作队列中的所述请求命令进行处理;从完成队列中读取所述基于FPGA的加速设备写入的所述请求命令的已完成状态信息;基于所述请求命令的已完成状态信息,获取所述请求命令对应的数据处理结果,并在所述工作队列中删除所述请求命令。本申请实施例还提供一种异构加速系统,包括:主机和基于FPGA的加速设备;所述主机,用于根据应用程序的处理需求生成请求命令;将所述请求命令写入工作队列中,并将所述请求命令在所述工作队列中的位置信息提供给所述基于FPGA的加速设备;从完成队列中读取所述请求命令的已完成状态信息;基于所述请求命令的已完成状态信息获取所述请求命令对应的数据处理结果,并在所述工作队列中删除所述请求命令;所述基于FPGA的加速设备,用于接收所述主机提供的所述请求命令在工作队列中的位置信息;根据所述请求命令在工作队列中的位置信息从所述工作队列中读取所述请求命令;根据所述请求命令进行数据处理,并在数据处理完成后,将所述请求命令的已完成状态信息写入所述完成队列中。在本申请实施例中,在异构加速系统中主机和基于FPGA的加速设备之间采用工作队列和完成队列的机制进行协同工作,简化了交互流程;且来自主机的请求命令和来自加速设备的已完成状态信息存储在不同工作队列,即不同存储区域中,避免了主机和基于FPGA的加速设备通信过程中对同一存储区域的同时读或同时写造成的读写竞争,可有效提高通信效率。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1为本申请一实施例提供的一种异构加速系统的结构示意图;图2为本申请一实施例提供的一种工作队列的结构示意图;图3为本申请一实施例提供的一种请求命令的结构示意图;图4为本申请一实施例提供的一种已完成状态信息的结构示意图;图5为本申请另一实施例提供的一种基于FPGA的加速设备的结构示意图;图6为本申请又一实施例提供的主机的结构示意图;图7为本申请又一实施例提供的一种基于FPGA的通信方法的流程示意图;图8为本申请又一实施例提供的另一种基于FPGA的通信方法的流程示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在现有技术中,由于不同处理器的时延、吞吐等性能差别很大,多处理器之间的异构加速效率并不高。针对该技术问题,本申请实施例提供一种解决方案,主要原理是:在异构加速系统中主机和基于FPGA的加速设备之间采用工作队列和完成队列的机制进行协同工作,简化了交互流程;且来自主机的请求命令和来自加速设备的已完成状态信息存储在不同工作队列,即不同存储区域中,避免了主机和基于FPGA的加速设备通信过程中对同一存储区域的同时读或同时写造成的读写竞争,可有效提高通信效率。以下结合附图,详细说明本申请各实施例提供的技术方案。图1为本申请一实施例提供的一种异构加速系统的结构示意图。如图1所示,该异构加速系统包括:主机10和基于FPGA的加速设备11。主机10,用于根据应用程序的处理需求,生成请求命令;将请求命令写入一工作队列12中,并向基于FPGA的加速设备11提供请求命令在工作队列12中的位置信息,以供基于FPGA的加速设备11对工作队列12中的请求命令进行处理,并将请求命令的已完成状态信息写入完成队列;以及从完成队列13中读取请求命令的已完成状态信息;基于请求命令的已完成状态信息,获取请求命令对应的数据处理结果,并在工作队本文档来自技高网...

【技术保护点】
1.一种基于FPGA的通信方法,适用于异构加速系统中的主机,所述异构加速系统还包括基于FPGA的加速设备,其特征在于,所述方法包括:根据应用程序的处理需求生成请求命令;将所述请求命令写入工作队列中,并将所述请求命令在所述工作队列中的位置信息提供给所述基于FPGA的加速设备,以供所述基于FPGA的加速设备对所述工作队列中的所述请求命令进行处理,并将所述请求命令的已完成状态信息写入完成队列;从所述完成队列中读取所述请求命令的已完成状态信息;基于所述请求命令的已完成状态信息获取所述请求命令对应的数据处理结果,并在所述工作队列中删除所述请求命令。

【技术特征摘要】
1.一种基于FPGA的通信方法,适用于异构加速系统中的主机,所述异构加速系统还包括基于FPGA的加速设备,其特征在于,所述方法包括:根据应用程序的处理需求生成请求命令;将所述请求命令写入工作队列中,并将所述请求命令在所述工作队列中的位置信息提供给所述基于FPGA的加速设备,以供所述基于FPGA的加速设备对所述工作队列中的所述请求命令进行处理,并将所述请求命令的已完成状态信息写入完成队列;从所述完成队列中读取所述请求命令的已完成状态信息;基于所述请求命令的已完成状态信息获取所述请求命令对应的数据处理结果,并在所述工作队列中删除所述请求命令。2.根据权利要求1所述的方法,其特征在于,所述根据应用程序的处理需求生成请求命令,包括:从所述应用程序的处理需求中,获取所述应用程序请求处理的至少一个待处理数据块在所述应用程序对应的虚拟内存空间中的存储地址、对所述至少一个待处理数据块进行数据处理所需的请求控制信息以及所述至少一个待处理数据块对应的数据处理结果所需存储空间的大小信息;根据所述数据处理结果所需存储空间的大小信息,从所述应用程序对应的虚拟内存空间中为所述数据处理结果分配存储地址;根据所述至少一个待处理数据块在所述虚拟内存空间中的存储地址、所述数据处理结果在所述虚拟内存空间中的存储地址以及所述请求控制信息,生成所述请求命令。3.根据权利要求2所述的方法,其特征在于,在从所述应用程序的处理需求中,获取所述应用程序请求处理的至少一个待处理数据块在所述应用程序对应的虚拟内存空间中的存储地址、对所述至少一个待处理数据块进行数据处理所需的请求控制信息以及所述至少一个待处理数据块对应的数据处理结果所需存储空间的大小信息之前,还包括:根据所述应用程序发送的内存注册请求,为所述应用程序分配包括多个虚拟内存块的虚拟内存空间,并为所述虚拟内存空间中的每个虚拟内存块分配唯一的索引标识;建立每个虚拟内存块对应的虚拟地址与物理地址的映射关系,并将每个虚拟内存块对应的虚拟地址与物理地址的映射关系分别存储至对应的虚拟内存块对应的地址转换表中;将每个虚拟内存块的索引标识、起始地址、页大小及对应的地址转换表的寻址信息作为对应的虚拟内存块的属性信息,分别配置到所述基于FPGA的加速设备中。4.根据权利要求1-3任一所述的方法,其特征在于,所述将所述请求命令写入工作队列中,包括:将所述请求命令写入所述工作队列的尾指针指向的当前写入位置,并将所述工作队列的尾指针移动至下一写入位置;所述将所述请求命令在所述工作队列中的位置信息提供给所述基于FPGA的加速设备,以供所述基于FPGA的加速设备对所述工作队列中的所述请求命令进行处理,包括:将所述工作队列中移动后的尾指针的位置写入所述基于FPGA的加速设备中与所述工作队列对应的用户可访问区域UAR寄存器中,以触发所述基于FPGA的加速设备对所述工作队列中的所述请求命令进行处理。5.根据权利要求4所述的方法,其特征在于,在将所述工作队列中移动后的尾指针的位置写入所述基于FPGA的加速设备中与所述工作队列对应的用户可访问区域UAR寄存器中之前,还包括:在所述基于FPGA的加速设备中为所述应用程序分配UAR空间,所述UAR空间中包含与所述工作队列对应的UAR寄存器;将所述应用程序与所述UAR寄存器的对应关系配置到所述基于FPGA的加速设备中。6.一种基于FPGA的通信方法,适用于异构加速系统中基于FPGA的加速设备,所述异构加速系统还包括主机,其特征在于,所述方法包括:接收所述主机提供的待处理的请求命令在工作队列中的位置信息,所述请求命令是所述主机根据应用程序的处理需求生成并写入所述工作队列中的;根据所述请求命令在工作队列中的位置信息从所述工作队列中读取所述请求命令;根据所述请求命令进行数据处理,并在数据处理完成后,将所述请求命令的已完成状态信息写入完成队列中,以供所述主机基于所述完成队列中所述请求命令的已完成状态信息获取所述请求命令对应的数据处理结果并在所述工作队列中删除所述请求命令。7.根据权利要求6所述的方法,其特征在于,所述请求命令包括:所述应用程序请求处理的至少一个待处理数据块在所述应用程序对应的虚拟内存空间中的存储地址、对所述至少一个待处理数据块进行数据处理所需的请求控制信息以及所述至少一个待处理数据块对应的数据处理结果在所述虚拟内存空间中的存储地址,则所述根据所述请求命令进行数据处理,包括:根据所述请求命令中携带的至少一个待处理数据块在所述应用程序对应的虚拟内存空间中的存储地址,获取所述至少一个待处理数据块;根据所述请求命令中携带的请求控制信息对所述至少一个待处理数据块进行数据处理以得到数据处理结果,并根据所述请求命令中携带的数据处理结果在所述虚拟内存空间中的存储地址将所述数据处理结果写入所述应用程序对应的虚拟内存空间中。8.根据权利要求7所述的方法,其特征在于,所述根据所述请求命令中携带的至少一个待处理数据块在所述应用程序对应的虚拟内存空间中的存储地址,获取所述至少一个待处理数据块,包括:从所述请求命令中携带的至少一个待处理数据块在所述应用程序对应的虚拟内存空间中的存储地址中,获取每个待处理数据块所处的虚拟内存块的索引标识及每个待处理数据...

【专利技术属性】
技术研发人员:陈荣惠
申请(专利权)人:锐捷网络股份有限公司
类型:发明
国别省市:福建,35

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

1